{
  "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.3.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.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.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.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.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.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"
  }
}
