{ "name": "git-arboretum", "displayName": "Arboretum", "description": "Pilot your git worktrees and Claude Code sessions from VS Code: native terminals, live tree, waiting alerts.", "version": "0.4.0", "private": true, "publisher": "johanleroy", "license": "MIT", "engines": { "vscode": "^1.85.0" }, "repository": { "type": "git", "url": "https://git.lidge.fr/johanleroy/arboretum" }, "categories": [ "SCM Providers", "Other" ], "keywords": [ "git", "worktree", "claude", "terminal", "arboretum" ], "main": "./dist/extension.js", "activationEvents": [ "onStartupFinished" ], "contributes": { "configuration": { "title": "Arboretum", "properties": { "arboretum.url": { "type": "string", "default": "http://127.0.0.1:7317", "markdownDescription": "Base URL of the Arboretum daemon (REST + WebSocket). Defaults to the loopback bind." }, "arboretum.showExternalSessions": { "type": "boolean", "default": false, "markdownDescription": "Show Claude sessions discovered outside Arboretum (started from the CLI) in the trees. Off by default to avoid clutter." }, "arboretum.showArchivedSessions": { "type": "boolean", "default": false, "markdownDescription": "Show finished sessions that Arboretum auto-archived after their retention window. Off by default to keep the trees focused on live work." }, "arboretum.notifyOnWaiting": { "type": "boolean", "default": true, "markdownDescription": "Show a native notification when a Claude session starts waiting for input." } } }, "viewsContainers": { "activitybar": [ { "id": "arboretum", "title": "Arboretum", "icon": "media/arboretum.svg" } ] }, "views": { "arboretum": [ { "id": "arboretum.repos", "name": "Repositories", "icon": "media/arboretum.svg" }, { "id": "arboretum.groups", "name": "Groups", "icon": "media/arboretum.svg" } ] }, "viewsWelcome": [ { "view": "arboretum.repos", "contents": "Not connected to an Arboretum daemon.\n[Sign in](command:arboretum.signIn)\n\nMake sure the daemon is running (`npx @johanleroy/git-arboretum`) and paste a token.", "when": "!arboretum.connected" } ], "commands": [ { "command": "arboretum.signIn", "title": "Sign In", "category": "Arboretum" }, { "command": "arboretum.signOut", "title": "Sign Out", "category": "Arboretum" }, { "command": "arboretum.refresh", "title": "Refresh", "category": "Arboretum", "icon": "$(refresh)" }, { "command": "arboretum.openDashboard", "title": "Open Dashboard in Browser", "category": "Arboretum", "icon": "$(globe)" }, { "command": "arboretum.attachSession", "title": "Attach Terminal", "category": "Arboretum", "icon": "$(terminal)" }, { "command": "arboretum.observeSession", "title": "Observe Terminal (read-only)", "category": "Arboretum", "icon": "$(eye)" }, { "command": "arboretum.answerSession", "title": "Answer Prompt…", "category": "Arboretum", "icon": "$(comment-discussion)" }, { "command": "arboretum.killSession", "title": "Kill Session", "category": "Arboretum", "icon": "$(trash)" }, { "command": "arboretum.hideSession", "title": "Hide Session", "category": "Arboretum", "icon": "$(eye-closed)" }, { "command": "arboretum.resumeSession", "title": "Resume Session", "category": "Arboretum", "icon": "$(debug-restart)" }, { "command": "arboretum.forkSession", "title": "Fork Session", "category": "Arboretum", "icon": "$(git-branch)" }, { "command": "arboretum.createWorktree", "title": "Create Worktree…", "category": "Arboretum", "icon": "$(add)" }, { "command": "arboretum.commitWorktree", "title": "Commit…", "category": "Arboretum", "icon": "$(git-commit)" }, { "command": "arboretum.pushWorktree", "title": "Push", "category": "Arboretum", "icon": "$(repo-push)" }, { "command": "arboretum.fetchWorktree", "title": "Fetch", "category": "Arboretum", "icon": "$(cloud-download)" }, { "command": "arboretum.pullWorktree", "title": "Pull…", "category": "Arboretum", "icon": "$(arrow-down)" }, { "command": "arboretum.promoteWorktree", "title": "Promote to Main", "category": "Arboretum", "icon": "$(arrow-up)" }, { "command": "arboretum.openWorktreeIde", "title": "Open Worktree IDE", "category": "Arboretum", "icon": "$(link-external)" }, { "command": "arboretum.startSession", "title": "Start Claude Session", "category": "Arboretum", "icon": "$(play)" }, { "command": "arboretum.startGroupSession", "title": "Start Group Session…", "category": "Arboretum", "icon": "$(play)" }, { "command": "arboretum.startProject", "title": "Start Project", "category": "Arboretum", "icon": "$(rocket)" }, { "command": "arboretum.stopLaunch", "title": "Stop Launch", "category": "Arboretum", "icon": "$(stop-circle)" }, { "command": "arboretum.startSessionHere", "title": "Start Session in Current Folder", "category": "Arboretum" }, { "command": "arboretum.createWorktreeHere", "title": "Create Worktree for Current Folder…", "category": "Arboretum" }, { "command": "arboretum.revealWorktree", "title": "Reveal Worktree for Current Folder", "category": "Arboretum" } ], "menus": { "view/title": [ { "command": "arboretum.refresh", "when": "view == arboretum.repos || view == arboretum.groups", "group": "navigation" }, { "command": "arboretum.openDashboard", "when": "view == arboretum.repos", "group": "navigation" }, { "command": "arboretum.signOut", "when": "view == arboretum.repos && arboretum.connected", "group": "1_auth" }, { "command": "arboretum.signIn", "when": "view == arboretum.repos && !arboretum.connected", "group": "1_auth" } ], "view/item/context": [ { "command": "arboretum.createWorktree", "when": "viewItem == arboretum:repo", "group": "inline" }, { "command": "arboretum.startSession", "when": "viewItem == arboretum:repo", "group": "1_session" }, { "command": "arboretum.startProject", "when": "viewItem == arboretum:repo", "group": "1_session" }, { "command": "arboretum.openWorktreeIde", "when": "viewItem == arboretum:worktree", "group": "inline" }, { "command": "arboretum.commitWorktree", "when": "viewItem == arboretum:worktree", "group": "1_git" }, { "command": "arboretum.pushWorktree", "when": "viewItem == arboretum:worktree", "group": "1_git" }, { "command": "arboretum.fetchWorktree", "when": "viewItem == arboretum:worktree", "group": "1_git" }, { "command": "arboretum.pullWorktree", "when": "viewItem == arboretum:worktree", "group": "1_git" }, { "command": "arboretum.promoteWorktree", "when": "viewItem == arboretum:worktree", "group": "2_git" }, { "command": "arboretum.openWorktreeIde", "when": "viewItem == arboretum:worktree", "group": "2_git" }, { "command": "arboretum.startSession", "when": "viewItem == arboretum:worktree", "group": "3_session" }, { "command": "arboretum.startProject", "when": "viewItem == arboretum:worktree", "group": "3_session" }, { "command": "arboretum.attachSession", "when": "viewItem =~ /arboretum:session:live/", "group": "inline" }, { "command": "arboretum.observeSession", "when": "viewItem =~ /arboretum:session:live/", "group": "1_term" }, { "command": "arboretum.answerSession", "when": "viewItem =~ /arboretum:session:live:.*waiting/", "group": "1_term" }, { "command": "arboretum.killSession", "when": "viewItem =~ /arboretum:session:live/", "group": "9_danger" }, { "command": "arboretum.stopLaunch", "when": "viewItem =~ /arboretum:session:live.*:launch/", "group": "9_danger" }, { "command": "arboretum.resumeSession", "when": "viewItem =~ /arboretum:session:dead/", "group": "inline" }, { "command": "arboretum.forkSession", "when": "viewItem =~ /arboretum:session/", "group": "2_term" }, { "command": "arboretum.hideSession", "when": "viewItem =~ /arboretum:session:.*discovered/", "group": "9_danger" }, { "command": "arboretum.startGroupSession", "when": "viewItem == arboretum:group", "group": "inline" } ], "commandPalette": [ { "command": "arboretum.refresh", "when": "arboretum.connected" }, { "command": "arboretum.signOut", "when": "arboretum.connected" }, { "command": "arboretum.attachSession", "when": "false" }, { "command": "arboretum.observeSession", "when": "false" }, { "command": "arboretum.answerSession", "when": "false" }, { "command": "arboretum.killSession", "when": "false" }, { "command": "arboretum.hideSession", "when": "false" }, { "command": "arboretum.resumeSession", "when": "false" }, { "command": "arboretum.forkSession", "when": "false" }, { "command": "arboretum.createWorktree", "when": "false" }, { "command": "arboretum.commitWorktree", "when": "false" }, { "command": "arboretum.pushWorktree", "when": "false" }, { "command": "arboretum.fetchWorktree", "when": "false" }, { "command": "arboretum.pullWorktree", "when": "false" }, { "command": "arboretum.promoteWorktree", "when": "false" }, { "command": "arboretum.openWorktreeIde", "when": "false" }, { "command": "arboretum.startSession", "when": "false" }, { "command": "arboretum.startGroupSession", "when": "false" }, { "command": "arboretum.startProject", "when": "false" }, { "command": "arboretum.stopLaunch", "when": "false" }, { "command": "arboretum.revealWorktree", "when": "false" } ] } }, "scripts": { "typecheck": "tsc -p . --noEmit", "build": "npm run typecheck && node esbuild.mjs", "dev": "node esbuild.mjs --watch", "vscode:prepublish": "node esbuild.mjs", "package": "vsce package --no-dependencies" }, "devDependencies": { "@arboretum/shared": "0.1.0", "@types/node": "^22.10.0", "@types/vscode": "^1.85.0", "@types/ws": "^8.5.0", "@vscode/vsce": "^3.2.0", "esbuild": "^0.21.0", "typescript": "^5.7.0", "ws": "^8.18.0" } }