commandmate 0.30.2 → 0.31.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.next/BUILD_ID +1 -1
- package/.next/app-build-manifest.json +160 -160
- package/.next/app-path-routes-manifest.json +27 -27
- package/.next/build-manifest.json +2 -2
- package/.next/prerender-manifest.json +9 -9
- package/.next/required-server-files.json +1 -1
- package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/server/app/api/agents/update/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/agents/versions/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/app/update/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/app/update-check/route.js +1 -1
- package/.next/server/app/api/app/update-check/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/assistant/conversation/route.js +1 -1
- package/.next/server/app/api/assistant/conversation/route.js.nft.json +1 -1
- package/.next/server/app/api/assistant/conversation/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/assistant/current-output/route.js +1 -1
- package/.next/server/app/api/assistant/current-output/route.js.nft.json +1 -1
- package/.next/server/app/api/assistant/current-output/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/assistant/messages/route.js +1 -1
- package/.next/server/app/api/assistant/messages/route.js.nft.json +1 -1
- package/.next/server/app/api/assistant/messages/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/assistant/session/route.js +1 -1
- package/.next/server/app/api/assistant/session/route.js.nft.json +1 -1
- package/.next/server/app/api/assistant/session/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/assistant/start/route.js +3 -3
- package/.next/server/app/api/assistant/start/route.js.nft.json +1 -1
- package/.next/server/app/api/assistant/start/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/assistant/terminal/route.js +4 -4
- package/.next/server/app/api/assistant/terminal/route.js.nft.json +1 -1
- package/.next/server/app/api/assistant/terminal/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/assistant/tools/route.js +1 -1
- package/.next/server/app/api/assistant/tools/route.js.nft.json +1 -1
- package/.next/server/app/api/assistant/tools/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/auth/login/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/auth/logout/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/auth/status/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/capabilities/route.js +1 -1
- package/.next/server/app/api/capabilities/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/daily-summary/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/daily-summary/status/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/external-apps/[id]/health/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/external-apps/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/external-apps/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/fs/browse/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/fs/recent-paths/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/hooks/agent-event/route.js +1 -1
- package/.next/server/app/api/hooks/agent-event/route.js.nft.json +1 -1
- package/.next/server/app/api/hooks/agent-event/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/hooks/claude-done/route.js +1 -1
- package/.next/server/app/api/hooks/claude-done/route.js.nft.json +1 -1
- package/.next/server/app/api/hooks/claude-done/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/hooks/permission-request/route.js +1 -1
- package/.next/server/app/api/hooks/permission-request/route.js.nft.json +1 -1
- package/.next/server/app/api/hooks/permission-request/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/metrics/vibe/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/ollama/models/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/push/escalation/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/push/subscriptions/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/push/vapid/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/remote/pair/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/[id]/todos/[todoId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/[id]/todos/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/clone/[jobId]/route.js +1 -1
- package/.next/server/app/api/repositories/clone/[jobId]/route.js.nft.json +1 -1
- package/.next/server/app/api/repositories/clone/[jobId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/clone/route.js +1 -1
- package/.next/server/app/api/repositories/clone/route.js.nft.json +1 -1
- package/.next/server/app/api/repositories/clone/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/excluded/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/restore/route.js +1 -1
- package/.next/server/app/api/repositories/restore/route.js.nft.json +1 -1
- package/.next/server/app/api/repositories/restore/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/route.js +1 -1
- package/.next/server/app/api/repositories/route.js.nft.json +1 -1
- package/.next/server/app/api/repositories/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/scan/route.js +1 -1
- package/.next/server/app/api/repositories/scan/route.js.nft.json +1 -1
- package/.next/server/app/api/repositories/scan/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/sync/route.js +1 -1
- package/.next/server/app/api/repositories/sync/route.js.nft.json +1 -1
- package/.next/server/app/api/repositories/sync/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/validate-path/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/settings/default-agents/route.js +1 -1
- package/.next/server/app/api/settings/default-agents/route.js.nft.json +1 -1
- package/.next/server/app/api/settings/default-agents/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/settings/default-surface-mode/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/sidebar/group-order/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/skills/[id]/route.js +1 -1
- package/.next/server/app/api/skills/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/skills/installations/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/skills/operations/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/skills/reindex/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/skills/route.js +1 -1
- package/.next/server/app/api/skills/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/slash-commands/route.js +1 -1
- package/.next/server/app/api/slash-commands/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/tasks/[taskId]/cancel/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/tasks/[taskId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/templates/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/templates/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/todos/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/verification/runs/[runId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/verification/runs/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/auto-yes/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/auto-yes/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/auto-yes/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/capture/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/capture/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/capture/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/clear-composer/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/clear-composer/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/clear-composer/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/cli-reference/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/cli-tool/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/cmate/schedules/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/current-output/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/current-output/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/current-output/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/env/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/execution-logs/[logId]/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/execution-logs/[logId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/execution-logs/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/files/[...path]/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/files/[...path]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/branch/create/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/branch/delete/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/branches/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/checkout/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/commit/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/diff/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/fetch/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/log/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/pull/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/push/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/reset/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/revert/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/show/[commitHash]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stage/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/staged/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/[index]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/apply/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/pop/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/push/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/status/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/unstage/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/working-diff/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/instances/opencode/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/instances/opencode/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/interrupt/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/interrupt/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/interrupt/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/kill-session/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/kill-session/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/kill-session/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/logs/[filename]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/logs/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/marp-render/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/memos/[memoId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/memos/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/messages/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/opencode/diff/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/opencode/session/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/opencode/share/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/prompt-response/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/prompt-response/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/prompt-response/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/resolve-target/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/respond/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/respond/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/respond/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route.js +4 -3
- package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/schedules/active/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/schedules/route.js +4 -3
- package/.next/server/app/api/worktrees/[id]/schedules/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/search/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/send/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/send/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/send/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route.js +2 -2
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/install/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/plan/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update-plan/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/slash-commands/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/slash-commands/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/special-keys/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/special-keys/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/special-keys/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/tasks/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/terminal/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/terminal/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/terminal/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/timers/history/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/timers/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/timers/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/timers/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/todos/[todoId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/todos/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/tree/[...path]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/tree/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/upload/[...path]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/config/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/runs/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/viewed/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/apply-default-agents/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/route.js +1 -1
- package/.next/server/app/api/worktrees/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/route_client-reference-manifest.js +1 -1
- package/.next/server/app/chat/page.js +2 -2
- package/.next/server/app/chat/page.js.nft.json +1 -1
- package/.next/server/app/chat/page_client-reference-manifest.js +1 -1
- package/.next/server/app/login/page_client-reference-manifest.js +1 -1
- package/.next/server/app/manifest.webmanifest/route_client-reference-manifest.js +1 -1
- package/.next/server/app/more/page.js +2 -2
- package/.next/server/app/more/page.js.nft.json +1 -1
- package/.next/server/app/more/page_client-reference-manifest.js +1 -1
- package/.next/server/app/offline/page_client-reference-manifest.js +1 -1
- package/.next/server/app/page.js +1 -1
- package/.next/server/app/page.js.nft.json +1 -1
- package/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/server/app/proxy/[...path]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/repositories/page.js +2 -2
- package/.next/server/app/repositories/page.js.nft.json +1 -1
- package/.next/server/app/repositories/page_client-reference-manifest.js +1 -1
- package/.next/server/app/review/page.js +1 -1
- package/.next/server/app/review/page.js.nft.json +1 -1
- package/.next/server/app/review/page_client-reference-manifest.js +1 -1
- package/.next/server/app/sessions/page.js +1 -1
- package/.next/server/app/sessions/page.js.nft.json +1 -1
- package/.next/server/app/sessions/page_client-reference-manifest.js +1 -1
- package/.next/server/app/skills/[skillId]/page.js +2 -2
- package/.next/server/app/skills/[skillId]/page.js.nft.json +1 -1
- package/.next/server/app/skills/[skillId]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/skills/installed/page.js +2 -2
- package/.next/server/app/skills/installed/page.js.nft.json +1 -1
- package/.next/server/app/skills/installed/page_client-reference-manifest.js +1 -1
- package/.next/server/app/skills/page.js +1 -1
- package/.next/server/app/skills/page.js.nft.json +1 -1
- package/.next/server/app/skills/page_client-reference-manifest.js +1 -1
- package/.next/server/app/worktrees/[id]/files/[...path]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/worktrees/[id]/page.js +10 -10
- package/.next/server/app/worktrees/[id]/page.js.nft.json +1 -1
- package/.next/server/app/worktrees/[id]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/worktrees/[id]/terminal/page_client-reference-manifest.js +1 -1
- package/.next/server/app-paths-manifest.json +27 -27
- package/.next/server/chunks/1058.js +1 -1
- package/.next/server/chunks/1068.js +1 -1
- package/.next/server/chunks/1262.js +1 -1
- package/.next/server/chunks/1886.js +3 -3
- package/.next/server/chunks/1990.js +103 -0
- package/.next/server/chunks/2119.js +1 -1
- package/.next/server/chunks/2328.js +1 -1
- package/.next/server/chunks/2404.js +1 -1
- package/.next/server/chunks/2445.js +1 -1
- package/.next/server/chunks/261.js +1 -1
- package/.next/server/chunks/3123.js +1 -1
- package/.next/server/chunks/3241.js +1 -1
- package/.next/server/chunks/3480.js +5 -4
- package/.next/server/chunks/4299.js +1 -1
- package/.next/server/chunks/4393.js +1 -1
- package/.next/server/chunks/4443.js +1 -5
- package/.next/server/chunks/5017.js +1 -1
- package/.next/server/chunks/5043.js +1 -1
- package/.next/server/chunks/5164.js +1 -1
- package/.next/server/chunks/552.js +2 -2
- package/.next/server/chunks/6072.js +1 -1
- package/.next/server/chunks/6130.js +1 -1
- package/.next/server/chunks/663.js +4 -3
- package/.next/server/chunks/6894.js +2 -2
- package/.next/server/chunks/7187.js +1 -0
- package/.next/server/chunks/7472.js +1 -1
- package/.next/server/chunks/{880.js → 7859.js} +6 -6
- package/.next/server/chunks/7905.js +1 -1
- package/.next/server/chunks/8800.js +2 -2
- package/.next/server/chunks/8918.js +7 -0
- package/.next/server/chunks/9123.js +2 -2
- package/.next/server/chunks/9130.js +4 -4
- package/.next/server/chunks/9627.js +1 -1
- package/.next/server/chunks/9696.js +1 -1
- package/.next/server/chunks/9798.js +1 -1
- package/.next/server/middleware-manifest.json +5 -5
- package/.next/server/pages/500.html +1 -1
- package/.next/server/pages-manifest.json +1 -1
- package/.next/server/server-reference-manifest.json +1 -1
- package/.next/static/chunks/1783-11c9b4d8a52ebd91.js +1 -0
- package/.next/static/chunks/4718-de1224c9e8a6e7fc.js +1 -0
- package/.next/static/chunks/6022-2fa0b5a82d4ce7b6.js +1 -0
- package/.next/static/chunks/{5229-6c89475b61bd2c8b.js → 6170-951b9f5fe6b4b3b5.js} +1 -1
- package/.next/static/chunks/app/chat/{page-9aa2011410895b0d.js → page-37d7615d17d7e2a0.js} +1 -1
- package/.next/static/chunks/app/layout-4c2f21e3f653ee4c.js +1 -0
- package/.next/static/chunks/app/more/{page-333bba1c8bbc9c11.js → page-353a3924e6d7968e.js} +1 -1
- package/.next/static/chunks/app/{page-214f7ffa13a0cf10.js → page-c2bf871d953a1d6f.js} +1 -1
- package/.next/static/chunks/app/repositories/{page-4951cac905e50224.js → page-7d0f26df0537254c.js} +1 -1
- package/.next/static/chunks/app/review/{page-a0899b2d285318c3.js → page-e3f141b2829973e9.js} +1 -1
- package/.next/static/chunks/app/sessions/{page-fb36145ec732092a.js → page-53f188ed9ca49e5f.js} +1 -1
- package/.next/static/chunks/app/skills/[skillId]/{page-9099e26b60442873.js → page-80569b720aea59cc.js} +1 -1
- package/.next/static/chunks/app/skills/installed/{page-182e32368696d824.js → page-dbd2690ad72da95b.js} +1 -1
- package/.next/static/chunks/app/skills/{page-d3fdc88239ebe0ab.js → page-dacd36f9c11aa7da.js} +1 -1
- package/.next/static/chunks/app/worktrees/[id]/page-97205088520255a5.js +1 -0
- package/.next/static/css/5c13ea243dfdcb66.css +1 -0
- package/.next/trace +13 -13
- package/README.md +37 -11
- package/dist/cli/commands/attach.d.ts +50 -0
- package/dist/cli/commands/attach.d.ts.map +1 -0
- package/dist/cli/commands/attach.js +204 -0
- package/dist/cli/commands/capture.d.ts.map +1 -1
- package/dist/cli/commands/capture.js +114 -0
- package/dist/cli/commands/instances.d.ts.map +1 -1
- package/dist/cli/commands/instances.js +23 -2
- package/dist/cli/commands/ls.d.ts.map +1 -1
- package/dist/cli/commands/ls.js +41 -1
- package/dist/cli/config/cli-dependencies.d.ts.map +1 -1
- package/dist/cli/config/cli-dependencies.js +34 -0
- package/dist/cli/program.d.ts.map +1 -1
- package/dist/cli/program.js +5 -0
- package/dist/cli/types/index.d.ts +36 -0
- package/dist/cli/types/index.d.ts.map +1 -1
- package/dist/config/tmux-pane-config.d.ts +153 -0
- package/dist/config/tmux-pane-config.d.ts.map +1 -0
- package/dist/config/tmux-pane-config.js +172 -0
- package/dist/lib/cli-tools/session-name.d.ts +44 -0
- package/dist/lib/cli-tools/session-name.d.ts.map +1 -0
- package/dist/lib/cli-tools/session-name.js +57 -0
- package/dist/lib/cli-tools/types.d.ts +1 -1
- package/dist/lib/cli-tools/types.d.ts.map +1 -1
- package/dist/lib/cli-tools/types.js +6 -1
- package/dist/lib/cli-tools/validation.d.ts +34 -0
- package/dist/lib/cli-tools/validation.d.ts.map +1 -0
- package/dist/lib/cli-tools/validation.js +41 -0
- package/dist/lib/detection/status-reason.d.ts +18 -0
- package/dist/lib/detection/status-reason.d.ts.map +1 -1
- package/dist/lib/detection/status-reason.js +18 -0
- package/dist/lib/detection/tools/verified-against.d.ts +57 -7
- package/dist/lib/detection/tools/verified-against.d.ts.map +1 -1
- package/dist/lib/detection/tools/verified-against.js +59 -8
- package/dist/lib/detection/version-probes.d.ts +26 -5
- package/dist/lib/detection/version-probes.d.ts.map +1 -1
- package/dist/lib/detection/version-probes.js +28 -6
- package/dist/lib/session/tmux-session-surface.d.ts +369 -0
- package/dist/lib/session/tmux-session-surface.d.ts.map +1 -0
- package/dist/lib/session/tmux-session-surface.js +525 -0
- package/dist/server/src/config/cli-tool-timing-config.js +12 -1
- package/dist/server/src/config/detection-evidence-config.js +5 -0
- package/dist/server/src/config/schedule-config.js +28 -1
- package/dist/server/src/lib/cli-tools/antigravity.js +2 -2
- package/dist/server/src/lib/cli-tools/base.js +13 -8
- package/dist/server/src/lib/cli-tools/claude.js +20 -0
- package/dist/server/src/lib/cli-tools/codex.js +205 -61
- package/dist/server/src/lib/cli-tools/command-code.js +349 -0
- package/dist/server/src/lib/cli-tools/composer-spec.js +6 -0
- package/dist/server/src/lib/cli-tools/copilot.js +2 -2
- package/dist/server/src/lib/cli-tools/gemini.js +2 -2
- package/dist/server/src/lib/cli-tools/graceful-exit.js +16 -1
- package/dist/server/src/lib/cli-tools/index.js +4 -1
- package/dist/server/src/lib/cli-tools/install-hints.js +131 -0
- package/dist/server/src/lib/cli-tools/liveness-spec.js +18 -0
- package/dist/server/src/lib/cli-tools/manager.js +2 -0
- package/dist/server/src/lib/cli-tools/opencode.js +2 -2
- package/dist/server/src/lib/cli-tools/start-availability.js +18 -11
- package/dist/server/src/lib/cli-tools/types.js +6 -1
- package/dist/server/src/lib/cli-tools/vibe-local.js +2 -2
- package/dist/server/src/lib/cmate-parser.js +6 -0
- package/dist/server/src/lib/detection/cli-patterns.js +441 -8
- package/dist/server/src/lib/detection/opencode-modal-overlay.js +66 -100
- package/dist/server/src/lib/detection/selection-shape.js +341 -0
- package/dist/server/src/lib/detection/sgr-background.js +210 -0
- package/dist/server/src/lib/detection/status-detector.js +6 -0
- package/dist/server/src/lib/detection/status-reason.js +18 -0
- package/dist/server/src/lib/detection/tools/antigravity/detect.js +38 -15
- package/dist/server/src/lib/detection/tools/codex/cli-patterns.js +392 -0
- package/dist/server/src/lib/detection/tools/codex/detect.js +83 -2
- package/dist/server/src/lib/detection/tools/command-code/detect.js +159 -0
- package/dist/server/src/lib/detection/tools/registry.js +6 -4
- package/dist/server/src/lib/detection/tools/verified-against.js +59 -8
- package/dist/server/src/lib/detection/version-probes.js +28 -6
- package/dist/server/src/lib/hooks/sources/antigravity/history.js +77 -16
- package/dist/server/src/lib/hooks/sources/claude/history.js +94 -18
- package/dist/server/src/lib/hooks/sources/codex/history.js +84 -15
- package/dist/server/src/lib/hooks/sources/codex/hooks-config.js +130 -17
- package/dist/server/src/lib/hooks/sources/codex/relay-install.js +145 -0
- package/dist/server/src/lib/hooks/sources/command-code/history.js +865 -0
- package/dist/server/src/lib/hooks/sources/command-code/hooks-config.js +390 -0
- package/dist/server/src/lib/hooks/sources/command-code/source.js +290 -0
- package/dist/server/src/lib/hooks/sources/command-code/tool-id.js +18 -0
- package/dist/server/src/lib/hooks/sources/command-code/transcript.js +604 -0
- package/dist/server/src/lib/hooks/sources/index.js +3 -1
- package/dist/server/src/lib/hooks/sources/opencode/history.js +57 -3
- package/dist/server/src/lib/hooks/sources/opencode/transcript.js +24 -28
- package/dist/server/src/lib/hooks/sources/registry.js +4 -0
- package/dist/server/src/lib/hooks/sources/turn-body.js +77 -19
- package/dist/server/src/lib/job-executor.js +12 -0
- package/dist/server/src/lib/polling/auto-yes-dialog-gate.js +6 -0
- package/dist/server/src/lib/polling/response-checker.js +112 -7
- package/dist/server/src/lib/polling/structured-history-gate.js +15 -8
- package/dist/server/src/lib/realtime/types.js +15 -5
- package/dist/server/src/lib/response-cleaner.js +24 -1
- package/dist/server/src/lib/response-extractor.js +11 -0
- package/dist/server/src/lib/session/claude-executor.js +223 -4
- package/dist/server/src/lib/session/cli-session.js +52 -0
- package/dist/server/src/lib/session/tmux-session-surface.js +525 -0
- package/dist/server/src/lib/skills/compatibility-matrix.js +117 -1
- package/dist/server/src/lib/tmux/geometry-delegation.js +143 -0
- package/dist/server/src/lib/tmux/read-mode-pager.js +76 -10
- package/dist/server/src/lib/tmux/read-mode.js +44 -2
- package/dist/server/src/lib/tmux/session-hook-scripts.js +249 -0
- package/dist/server/src/lib/tmux/session-hooks.js +122 -0
- package/dist/server/src/lib/tmux/session-status-options.js +213 -0
- package/dist/server/src/lib/tmux/tmux.js +79 -2
- package/dist/server/src/lib/version-checker.js +110 -0
- package/dist/server/src/lib/ws-server.js +16 -10
- package/dist/server/src/types/agent-transcript.js +73 -1
- package/dist/server/src/types/terminal-keys.js +131 -3
- package/dist/types/terminal-keys.d.ts +100 -3
- package/dist/types/terminal-keys.d.ts.map +1 -1
- package/dist/types/terminal-keys.js +131 -3
- package/package.json +1 -1
- package/.next/server/chunks/3099.js +0 -5
- package/.next/server/chunks/7824.js +0 -1
- package/.next/static/chunks/3916-0e929d089282dc5d.js +0 -1
- package/.next/static/chunks/6022-7a7d1760fc9814c7.js +0 -1
- package/.next/static/chunks/6381-147dde2a967e9458.js +0 -1
- package/.next/static/chunks/app/layout-6a26ea22d5cf03dc.js +0 -1
- package/.next/static/chunks/app/worktrees/[id]/page-2f73d69187936627.js +0 -1
- package/.next/static/css/23f9c40ecc458c77.css +0 -1
- /package/.next/static/{QXxQbXWoo7ldUyOcv7PCZ → nXW4dPkpE_9xUf_9ySRff}/_buildManifest.js +0 -0
- /package/.next/static/{QXxQbXWoo7ldUyOcv7PCZ → nXW4dPkpE_9xUf_9ySRff}/_ssgManifest.js +0 -0
|
@@ -0,0 +1,290 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Command Code's {@link AgentEventSource} (Issue #2251, Epic #2249 Phase B).
|
|
4
|
+
*
|
|
5
|
+
* The seventh source, and the one that looks most like Claude while being
|
|
6
|
+
* unable to do the one thing Claude's shape is usually reached for. Everything
|
|
7
|
+
* below was measured against **v1.40.1**: the hook payloads in
|
|
8
|
+
* `tests/fixtures/hooks/command-code/` are verbatim captures, and the claims
|
|
9
|
+
* about what the tool *accepts* come from its bundled `dist/cli.mjs`, which is
|
|
10
|
+
* the only complete statement of its own validators (`--help` lists three
|
|
11
|
+
* permission modes where the bundle lists five — Phase A found the same thing).
|
|
12
|
+
*
|
|
13
|
+
* ## Four events, and the absences are refusals rather than silences
|
|
14
|
+
*
|
|
15
|
+
* `supportedEvents` is `session_start` / `pre_tool_use` / `post_tool_use` /
|
|
16
|
+
* `stop`. `user_prompt_submit`, `notification` and `session_end` are not
|
|
17
|
+
* "undocumented" or "unobserved" — Command Code's `isHookEvent` tests a literal
|
|
18
|
+
* `["PreToolUse","PostToolUse","Stop","SessionStart"]`, and its loader prints
|
|
19
|
+
* `unknown hook event "SessionEnd" — skipped` for anything else. That is a
|
|
20
|
+
* stronger statement than antigravity's, where the three missing words were
|
|
21
|
+
* merely never seen to fire, and it is why {@link COMMAND_CODE_HOOK_EVENT_NAMES}
|
|
22
|
+
* is a four-row table of its own rather than the shared
|
|
23
|
+
* `CAMEL_CASE_HOOK_EVENT_NAMES`: a hand-configured hook from #1549 *cannot* send
|
|
24
|
+
* a fifth word here, so mapping one would be mapping a spelling the tool
|
|
25
|
+
* refuses to load.
|
|
26
|
+
*
|
|
27
|
+
* ## `parsePermissionRequest` is `() => null`, and that is the measurement
|
|
28
|
+
*
|
|
29
|
+
* Command Code fires `PreToolUse` **after** the approval dialog has been
|
|
30
|
+
* answered. Measured on the same tool call: dialog drawn at 00:11:37, answered
|
|
31
|
+
* at 00:11:46, `PreToolUse` delivered at 00:11:46. So the reply cannot forecast
|
|
32
|
+
* a dialog (there is nothing left to forecast), cannot dismiss one (it is
|
|
33
|
+
* already gone), and `deriveBlockFromOutput` in the bundle reads only
|
|
34
|
+
* `permissionDecision: "deny"` from it — `"allow"` is not a word this event
|
|
35
|
+
* understands. Auto-Yes therefore stays on Phase A's TUI number responder
|
|
36
|
+
* (`detection-evidence-config` has this tool on `legacy`), and `pre_tool_use` is
|
|
37
|
+
* registered as an ordinary observation instead of being pointed at
|
|
38
|
+
* `/api/hooks/permission-request` the way copilot's and antigravity's are.
|
|
39
|
+
* Epic #2249 決定 3.
|
|
40
|
+
*
|
|
41
|
+
* That is also why this source's `pre_tool_use` **is** in `supportedEvents`
|
|
42
|
+
* where copilot's and antigravity's are not: the field means *delivered*, and on
|
|
43
|
+
* those two tools the event is answered by the adjudicating receiver and never
|
|
44
|
+
* recorded. Here it reaches the event store like any other frame.
|
|
45
|
+
*
|
|
46
|
+
* ## `{}` continues, on all four
|
|
47
|
+
*
|
|
48
|
+
* Measured live with a hook that printed exactly `{}` for every event: both tool
|
|
49
|
+
* calls ran and both turns ended. The bundle agrees — an empty object carries
|
|
50
|
+
* none of the fields `deriveBlockFromOutput` looks for, and `resolveHookExit`
|
|
51
|
+
* only blocks on `decision: "block"`, `block: true`, `permissionDecision:
|
|
52
|
+
* "deny"`, or **exit code 2 on `PreToolUse`/`Stop`**. The relay writes nothing
|
|
53
|
+
* to stdout and exits 0 on every delivery failure, so none of those is reachable
|
|
54
|
+
* from a server that is down.
|
|
55
|
+
*
|
|
56
|
+
* ## Where Phase C picks this up
|
|
57
|
+
*
|
|
58
|
+
* Every payload carries `transcript_path` as an absolute path to
|
|
59
|
+
* `~/.commandcode/projects/<slug>/<session_id>.jsonl`, and the slug is the cwd
|
|
60
|
+
* kebab-cased — so it is *not* computable from the worktree path, which is what
|
|
61
|
+
* makes the hint load-bearing rather than a convenience.
|
|
62
|
+
* {@link readCommandCodeTranscriptPath} is the reader Phase C (#2252) consumes;
|
|
63
|
+
* see its own comment for what this Issue could and could not wire.
|
|
64
|
+
*
|
|
65
|
+
* @module lib/hooks/sources/command-code/source
|
|
66
|
+
*/
|
|
67
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
68
|
+
exports.commandCodeAgentEventSource = exports.MAX_COMMAND_CODE_TRANSCRIPT_PATH_LENGTH = exports.COMMAND_CODE_TRANSCRIPT_PATH_FIELDS = exports.COMMAND_CODE_SESSION_ID_FIELDS = exports.COMMAND_CODE_HOOK_EVENT_NAMES = void 0;
|
|
69
|
+
exports.readCommandCodeTranscriptPath = readCommandCodeTranscriptPath;
|
|
70
|
+
exports.encodeCommandCodeVerdict = encodeCommandCodeVerdict;
|
|
71
|
+
const define_source_1 = require("../define-source");
|
|
72
|
+
const event_mapper_1 = require("../event-mapper");
|
|
73
|
+
const hook_event_vocabulary_1 = require("../hook-event-vocabulary");
|
|
74
|
+
const hooks_config_1 = require("./hooks-config");
|
|
75
|
+
const tool_id_1 = require("./tool-id");
|
|
76
|
+
/**
|
|
77
|
+
* `hook_event_name` values Command Code sends, mapped onto CommandMate's words.
|
|
78
|
+
*
|
|
79
|
+
* A private four-row table rather than `CAMEL_CASE_HOOK_EVENT_NAMES`, and the
|
|
80
|
+
* reason is a refusal rather than a preference. The shared table has seven rows
|
|
81
|
+
* because claude, codex and copilot each emit some superset of four; Command
|
|
82
|
+
* Code's loader validates the event key against a closed list of exactly these
|
|
83
|
+
* four and skips the rest with a warning, so `SessionEnd` / `Notification` /
|
|
84
|
+
* `UserPromptSubmit` / `SubagentStop` are words no Command Code configuration
|
|
85
|
+
* can produce. Mapping them would put four rows in this source that nothing can
|
|
86
|
+
* ever exercise, and would hide the one case that matters: a payload arriving
|
|
87
|
+
* with a fifth spelling means the tool grew an event, and `recordUnknownEvent`
|
|
88
|
+
* is how that gets noticed.
|
|
89
|
+
*
|
|
90
|
+
* Issue #2251 also asked for the converse explicitly: **do not add these
|
|
91
|
+
* spellings to `hook-event-vocabulary.ts`.** Three of the four are already
|
|
92
|
+
* there for the tools that share the dialect; the point is that this source
|
|
93
|
+
* must not widen a table other sources read.
|
|
94
|
+
*/
|
|
95
|
+
exports.COMMAND_CODE_HOOK_EVENT_NAMES = {
|
|
96
|
+
SessionStart: 'session_start',
|
|
97
|
+
PreToolUse: 'pre_tool_use',
|
|
98
|
+
PostToolUse: 'post_tool_use',
|
|
99
|
+
Stop: 'stop',
|
|
100
|
+
};
|
|
101
|
+
/**
|
|
102
|
+
* Where Command Code's session id lives.
|
|
103
|
+
*
|
|
104
|
+
* `session_id`, the snake_case spelling claude / codex / copilot / gemini share.
|
|
105
|
+
* Declared as a one-element list rather than reusing `SESSION_ID_FIELDS` because
|
|
106
|
+
* the second entry there is antigravity's `conversationId`, which no Command
|
|
107
|
+
* Code payload has: reading a field the tool never sends is not harmful, but it
|
|
108
|
+
* is a claim about a shape nobody measured.
|
|
109
|
+
*/
|
|
110
|
+
exports.COMMAND_CODE_SESSION_ID_FIELDS = ['session_id'];
|
|
111
|
+
/**
|
|
112
|
+
* Where the transcript pointer lives — the `transcriptPathFields` Issue #2251
|
|
113
|
+
* asks for, in the only form the interface has today.
|
|
114
|
+
*
|
|
115
|
+
* `AgentEventSource` has no `transcriptPathFields` and no place to put one that
|
|
116
|
+
* reaches Phase C: `NormalizedAgentEvent` would carry the value fine, but the
|
|
117
|
+
* receiver that turns a normalised event into an `AgentEventRecord`
|
|
118
|
+
* (`src/app/api/hooks/agent-event/route.ts`) is outside this Issue's scope, so a
|
|
119
|
+
* field added to the spec would be extracted and then dropped on the floor —
|
|
120
|
+
* the exact "wiring left hanging" shape a phased Epic invites. So the *reading*
|
|
121
|
+
* half ships here, tested against the real payloads, and #2252 wires it.
|
|
122
|
+
*
|
|
123
|
+
* @see readCommandCodeTranscriptPath
|
|
124
|
+
*/
|
|
125
|
+
exports.COMMAND_CODE_TRANSCRIPT_PATH_FIELDS = ['transcript_path'];
|
|
126
|
+
/**
|
|
127
|
+
* Longest transcript path this source will vouch for.
|
|
128
|
+
*
|
|
129
|
+
* The value is a filesystem path the agent chose, and Command Code's own slug is
|
|
130
|
+
* the whole cwd kebab-cased — the captured one is 129 characters for a worktree
|
|
131
|
+
* six levels deep — so the bound has to be generous. It exists to stop an
|
|
132
|
+
* unbounded string being latched, not to judge plausibility.
|
|
133
|
+
*/
|
|
134
|
+
exports.MAX_COMMAND_CODE_TRANSCRIPT_PATH_LENGTH = 4096;
|
|
135
|
+
/**
|
|
136
|
+
* Read the transcript pointer out of a Command Code hook payload (Phase C seam).
|
|
137
|
+
*
|
|
138
|
+
* Every one of the seven captured payloads carries it — `SessionStart`, both
|
|
139
|
+
* `PreToolUse`, both `PostToolUse` and both `Stop` — with the same value for the
|
|
140
|
+
* life of the session, so a reader may latch it from whichever event it sees
|
|
141
|
+
* first rather than requiring a particular one.
|
|
142
|
+
*
|
|
143
|
+
* **The path cannot be computed, which is why this exists.** Command Code writes
|
|
144
|
+
* `~/.commandcode/projects/<slug>/<session_id>.jsonl`, where `<slug>` is the cwd
|
|
145
|
+
* with every non-alphanumeric run replaced and camel-case split — the captured
|
|
146
|
+
* pair is `…/MyCodeBranchDesk/…` → `…-my-code-branch-desk-…`. Deriving that from
|
|
147
|
+
* a worktree path would be reimplementing an unpublished function; the hook
|
|
148
|
+
* hands over the answer instead.
|
|
149
|
+
*
|
|
150
|
+
* Strict, in the way this codebase's other payload readers are: anything that is
|
|
151
|
+
* not an absolute path to a `.jsonl` file is null, and null means "no pointer",
|
|
152
|
+
* which is the fail-open that leaves the scraper as the record.
|
|
153
|
+
*
|
|
154
|
+
* @param payload - A Command Code hook payload
|
|
155
|
+
* @returns The absolute transcript path, or null when the payload has none
|
|
156
|
+
*/
|
|
157
|
+
function readCommandCodeTranscriptPath(payload) {
|
|
158
|
+
if (!(0, event_mapper_1.isPlainObject)(payload))
|
|
159
|
+
return null;
|
|
160
|
+
const value = (0, event_mapper_1.readFirstStringField)(payload, exports.COMMAND_CODE_TRANSCRIPT_PATH_FIELDS);
|
|
161
|
+
if (value === null)
|
|
162
|
+
return null;
|
|
163
|
+
if (value.length > exports.MAX_COMMAND_CODE_TRANSCRIPT_PATH_LENGTH)
|
|
164
|
+
return null;
|
|
165
|
+
// Absolute and `.jsonl`. A relative path would be resolved against whatever
|
|
166
|
+
// cwd the reader happens to have, and a value that is not the transcript is
|
|
167
|
+
// not something to hand a file reader.
|
|
168
|
+
if (!value.startsWith('/') || !value.endsWith('.jsonl'))
|
|
169
|
+
return null;
|
|
170
|
+
return value;
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Encode a verdict for Command Code (S6).
|
|
174
|
+
*
|
|
175
|
+
* Always the empty object, and that is a measurement rather than a stub. There
|
|
176
|
+
* is no event on this tool whose reply is a permission decision CommandMate
|
|
177
|
+
* could make:
|
|
178
|
+
*
|
|
179
|
+
* - `PreToolUse` arrives after the human has already answered, so `allowOnce`
|
|
180
|
+
* would be an approval of something that is already approved. The bundle
|
|
181
|
+
* reads only `hookSpecificOutput.permissionDecision: "deny"` from it, so the
|
|
182
|
+
* one thing this source *could* say there is the one thing
|
|
183
|
+
* `permission-decision-service` never emits (a denial takes the choice away
|
|
184
|
+
* from the human in the direction waiting cannot undo).
|
|
185
|
+
* - `PostToolUse` and `Stop` accept a top-level `decision: "block"`, which is
|
|
186
|
+
* "redo this" rather than a permission verdict, and answering it would make
|
|
187
|
+
* the turn not end.
|
|
188
|
+
*
|
|
189
|
+
* `{}` is the measured no-op on all four events — the live probe's hook printed
|
|
190
|
+
* exactly that and both tool calls ran and both turns ended — so abstention is
|
|
191
|
+
* free here, the same way it is on claude, codex and copilot, and unlike
|
|
192
|
+
* antigravity where `{}` is a denial.
|
|
193
|
+
*/
|
|
194
|
+
function encodeCommandCodeVerdict(_verdict) {
|
|
195
|
+
return {};
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* Command Code as an event source.
|
|
199
|
+
*
|
|
200
|
+
* Registered in `../registry`. Nothing outside this directory imports it by
|
|
201
|
+
* name; callers ask the registry for the tool they are holding.
|
|
202
|
+
*/
|
|
203
|
+
exports.commandCodeAgentEventSource = (0, define_source_1.definePushHookSource)({
|
|
204
|
+
cliToolId: tool_id_1.COMMAND_CODE_CLI_TOOL_ID,
|
|
205
|
+
// Measured: a hook printing `{}` left both tool calls running and both turns
|
|
206
|
+
// ending, indistinguishable from a session with no hooks configured.
|
|
207
|
+
noDecision: { kind: 'proceeds' },
|
|
208
|
+
capabilities: {
|
|
209
|
+
// The four the tool's own `isHookEvent` accepts, and nothing else. See the
|
|
210
|
+
// module comment for why the three absences are refusals rather than gaps,
|
|
211
|
+
// and why `pre_tool_use` is present here when copilot's and antigravity's
|
|
212
|
+
// are not.
|
|
213
|
+
supportedEvents: ['session_start', 'pre_tool_use', 'post_tool_use', 'stop'],
|
|
214
|
+
// `<worktree>/.commandcode/settings.local.json`. The second tool after
|
|
215
|
+
// gemini whose hook configuration scopes naturally to a worktree — and the
|
|
216
|
+
// first whose tool *also* reads two other layers and unions all three, so
|
|
217
|
+
// occupying one layer cannot displace the operator's own.
|
|
218
|
+
configScope: 'per-worktree',
|
|
219
|
+
// No event on this tool waits for a verdict CommandMate could give: the one
|
|
220
|
+
// approval-shaped event fires after the human has answered. `null` is the
|
|
221
|
+
// honest value — not "waits forever" but "there is nothing to wait for".
|
|
222
|
+
// gemini declares the same for the same reason.
|
|
223
|
+
decisionTimeoutSeconds: null,
|
|
224
|
+
// Issue #1924, §4 D3. No permission hook is registered, so there is nothing
|
|
225
|
+
// to forecast from — gemini's row, not claude's.
|
|
226
|
+
permissionHookPredictsDialog: false,
|
|
227
|
+
// Measured: `SessionStart` is delivered at startup, before anything has been
|
|
228
|
+
// typed (`source: "startup"`, 00:09:55 against a first prompt at 00:10:0x).
|
|
229
|
+
// copilot is still the only tool where it trails the turn it belongs to.
|
|
230
|
+
sessionStartMayArriveLate: false,
|
|
231
|
+
// A hook response body releases nothing observable, as on every push source.
|
|
232
|
+
permissionReplyReleasesPrompt: false,
|
|
233
|
+
// `tool_use_id` is present on both tool events (`call_00_…`) and absent from
|
|
234
|
+
// `SessionStart` and `Stop`, so there is no id covering the frames dedup has
|
|
235
|
+
// to cover. The time window stays. Extraction is declared below regardless,
|
|
236
|
+
// because `toolCallId` on a normalised event is worth having even when it
|
|
237
|
+
// cannot be the dedup key.
|
|
238
|
+
eventIdentity: null,
|
|
239
|
+
// push. There is no connection to lose and nothing to re-read.
|
|
240
|
+
resync: 'none',
|
|
241
|
+
// pull, since Phase C (#2252). `./history` reads
|
|
242
|
+
// `~/.commandcode/projects/<slug>/<session_id>.jsonl` and writes the agent's
|
|
243
|
+
// own Markdown; `structured-history-gate` drops the scrape when it answers
|
|
244
|
+
// true and keeps it when it answers false, which is every failure there is.
|
|
245
|
+
// The `<slug>` is `slugify(cwd)` and is deliberately not computed — the
|
|
246
|
+
// reader finds the file by session id instead (Epic #2249 決定 4).
|
|
247
|
+
transcriptHistory: 'pull',
|
|
248
|
+
},
|
|
249
|
+
// The four-row private table. See COMMAND_CODE_HOOK_EVENT_NAMES.
|
|
250
|
+
mappers: (0, event_mapper_1.fromNameTable)(exports.COMMAND_CODE_HOOK_EVENT_NAMES),
|
|
251
|
+
nativeEventNameFields: ['hook_event_name'],
|
|
252
|
+
conversationIdFields: exports.COMMAND_CODE_SESSION_ID_FIELDS,
|
|
253
|
+
toolCallIdFields: hook_event_vocabulary_1.TOOL_CALL_ID_FIELDS,
|
|
254
|
+
// Issue #1783: no `model` key on any captured payload. The field is omitted
|
|
255
|
+
// rather than declared empty, so a normalised event carries `model: null` —
|
|
256
|
+
// a fact, not a gap. What the pane shows (`# models: … · taste-1`) is Phase
|
|
257
|
+
// A's banner extraction, which is a different channel.
|
|
258
|
+
// `tool_name` on the two tool events (`shell_command` / `write_file` /
|
|
259
|
+
// `read_file` / `edit_file`), `source` on `SessionStart` (`startup`). Both are
|
|
260
|
+
// the snake_case spellings the shared extractor already reads; `Stop` has no
|
|
261
|
+
// subtype and answers null. `tool_display_name` (`SHELL` / `WRITE`) is
|
|
262
|
+
// deliberately not used — it is a label for the tool's own UI, and the detail
|
|
263
|
+
// is what a matcher and an operator's grep are tested against.
|
|
264
|
+
extractDetail: hook_event_vocabulary_1.extractSnakeCaseEventDetail,
|
|
265
|
+
// Epic #2249 決定 3. `PreToolUse` fires after the dialog is answered, so there
|
|
266
|
+
// is no permission request here to parse — see the module comment. Returning
|
|
267
|
+
// null makes `decidePermissionRequest` answer `unknown-payload`, which is the
|
|
268
|
+
// correct outcome for an event that is not an approval gate.
|
|
269
|
+
parsePermissionRequest: () => null,
|
|
270
|
+
// No `AskUserQuestion` tool and nothing shaped like one: the captured
|
|
271
|
+
// `tool_name` values are the four file/shell primitives.
|
|
272
|
+
parseQuestion: () => null,
|
|
273
|
+
encodeVerdict: encodeCommandCodeVerdict,
|
|
274
|
+
// S3 / S4 / S5. The config is per-worktree, so the whole of it is reachable
|
|
275
|
+
// from here — `worktreePath` is on the context since #1846, which is what
|
|
276
|
+
// removed gemini's second entry point.
|
|
277
|
+
prepareLaunch: ({ target, executablePath, worktreePath }) => {
|
|
278
|
+
const settingsTarget = {
|
|
279
|
+
worktreeId: target.worktreeId,
|
|
280
|
+
instanceId: target.instanceId,
|
|
281
|
+
cliToolId: tool_id_1.COMMAND_CODE_CLI_TOOL_ID,
|
|
282
|
+
};
|
|
283
|
+
const settingsPath = (0, hooks_config_1.writeCommandCodeHookSettings)(worktreePath, settingsTarget);
|
|
284
|
+
// #1846: the correlation URL is the plan's `env`, never a `NAME=value `
|
|
285
|
+
// prefix on `command`. The file is per-worktree and cannot tell
|
|
286
|
+
// `command-code` from `command-code-2`, so the instance has to ride here.
|
|
287
|
+
const { command, env } = (0, hooks_config_1.buildCommandCodeLaunchEnvironment)(executablePath, settingsTarget);
|
|
288
|
+
return { command, settingsPath, env };
|
|
289
|
+
},
|
|
290
|
+
});
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Command Code's {@link CLIToolType} id, as a constant (Issue #2251).
|
|
4
|
+
*
|
|
5
|
+
* The same one-line module claude and gemini have, for the same reason: the
|
|
6
|
+
* literal `'command-code'` appears once under `src/lib/hooks/`, and the module
|
|
7
|
+
* that writes Command Code's config imports the constant rather than restating
|
|
8
|
+
* it.
|
|
9
|
+
*
|
|
10
|
+
* Separate from `./source` because the hooks generator needs the id and the
|
|
11
|
+
* source imports the generator; importing it back out of `./source` would close
|
|
12
|
+
* a cycle.
|
|
13
|
+
*
|
|
14
|
+
* @module lib/hooks/sources/command-code/tool-id
|
|
15
|
+
*/
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.COMMAND_CODE_CLI_TOOL_ID = void 0;
|
|
18
|
+
exports.COMMAND_CODE_CLI_TOOL_ID = 'command-code';
|