commandmate 0.30.2 → 0.31.1
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 +151 -151
- package/.next/app-path-routes-manifest.json +25 -25
- 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 +11 -11
- 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 +25 -25
- 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/4802.js +1 -0
- 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-46e1d2f07c8423ba.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-64d4ec3051971760.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/server/chunks/848.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 → 60mm4_QBuFtFTfo5UMyKU}/_buildManifest.js +0 -0
- /package/.next/static/{QXxQbXWoo7ldUyOcv7PCZ → 60mm4_QBuFtFTfo5UMyKU}/_ssgManifest.js +0 -0
|
@@ -24,7 +24,7 @@ exports.isImageCapableCLITool = isImageCapableCLITool;
|
|
|
24
24
|
* T2.1: Single source of truth for CLI tool IDs
|
|
25
25
|
* CLIToolType is derived from this constant (DRY principle)
|
|
26
26
|
*/
|
|
27
|
-
exports.CLI_TOOL_IDS = ['claude', 'codex', 'gemini', 'vibe-local', 'opencode', 'copilot', 'antigravity'];
|
|
27
|
+
exports.CLI_TOOL_IDS = ['claude', 'codex', 'gemini', 'vibe-local', 'opencode', 'copilot', 'antigravity', 'command-code'];
|
|
28
28
|
/**
|
|
29
29
|
* CLI tools that render inside the terminal's alternate screen (Issue #1268).
|
|
30
30
|
*
|
|
@@ -44,6 +44,10 @@ const ALTERNATE_SCREEN_CLI_TOOLS = new Set([
|
|
|
44
44
|
'claude',
|
|
45
45
|
'opencode',
|
|
46
46
|
'copilot',
|
|
47
|
+
// Issue #2250: `command-code` is deliberately absent. Command Code renders
|
|
48
|
+
// INLINE -- measured on 1.40.1, `#{alternate_on}` is 0 and the pane keeps its
|
|
49
|
+
// scrollback -- so its captured line count really is a monotonic cursor, the
|
|
50
|
+
// way codex's and agy's are.
|
|
47
51
|
]);
|
|
48
52
|
/**
|
|
49
53
|
* Whether a CLI tool renders in the terminal's alternate screen, making the
|
|
@@ -190,6 +194,7 @@ exports.CLI_TOOL_DISPLAY_NAMES = {
|
|
|
190
194
|
opencode: 'OpenCode',
|
|
191
195
|
copilot: 'Copilot',
|
|
192
196
|
antigravity: 'Antigravity',
|
|
197
|
+
'command-code': 'Command Code',
|
|
193
198
|
};
|
|
194
199
|
/**
|
|
195
200
|
* Check if a string is a valid CLIToolType
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Session name validation module
|
|
3
|
+
* Issue #4: T2.2 - Security validation for session names (MF4-001)
|
|
4
|
+
*
|
|
5
|
+
* This module provides validation functions to prevent command injection
|
|
6
|
+
* attacks through session names used in tmux commands.
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* Session name pattern
|
|
10
|
+
* Only allows alphanumeric characters, underscores, and hyphens
|
|
11
|
+
* This prevents command injection through shell special characters
|
|
12
|
+
*
|
|
13
|
+
* Pattern breakdown:
|
|
14
|
+
* - ^ : Start of string
|
|
15
|
+
* - [a-zA-Z0-9_-] : Allowed characters (alphanumeric, underscore, hyphen)
|
|
16
|
+
* - + : One or more characters (empty strings not allowed)
|
|
17
|
+
* - $ : End of string
|
|
18
|
+
*/
|
|
19
|
+
export declare const SESSION_NAME_PATTERN: RegExp;
|
|
20
|
+
/**
|
|
21
|
+
* Validate session name format
|
|
22
|
+
* Throws an error if the session name contains invalid characters
|
|
23
|
+
*
|
|
24
|
+
* @param sessionName - Session name to validate
|
|
25
|
+
* @throws Error if session name is invalid
|
|
26
|
+
*
|
|
27
|
+
* @example
|
|
28
|
+
* ```typescript
|
|
29
|
+
* validateSessionName('mcbd-claude-test'); // OK
|
|
30
|
+
* validateSessionName('test;rm -rf'); // Throws Error
|
|
31
|
+
* ```
|
|
32
|
+
*/
|
|
33
|
+
export declare function validateSessionName(sessionName: string): void;
|
|
34
|
+
//# sourceMappingURL=validation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../../src/lib/cli-tools/validation.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;;;;;;;GAUG;AACH,eAAO,MAAM,oBAAoB,QAAqB,CAAC;AAEvD;;;;;;;;;;;;GAYG;AACH,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAI7D"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Session name validation module
|
|
4
|
+
* Issue #4: T2.2 - Security validation for session names (MF4-001)
|
|
5
|
+
*
|
|
6
|
+
* This module provides validation functions to prevent command injection
|
|
7
|
+
* attacks through session names used in tmux commands.
|
|
8
|
+
*/
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.SESSION_NAME_PATTERN = void 0;
|
|
11
|
+
exports.validateSessionName = validateSessionName;
|
|
12
|
+
/**
|
|
13
|
+
* Session name pattern
|
|
14
|
+
* Only allows alphanumeric characters, underscores, and hyphens
|
|
15
|
+
* This prevents command injection through shell special characters
|
|
16
|
+
*
|
|
17
|
+
* Pattern breakdown:
|
|
18
|
+
* - ^ : Start of string
|
|
19
|
+
* - [a-zA-Z0-9_-] : Allowed characters (alphanumeric, underscore, hyphen)
|
|
20
|
+
* - + : One or more characters (empty strings not allowed)
|
|
21
|
+
* - $ : End of string
|
|
22
|
+
*/
|
|
23
|
+
exports.SESSION_NAME_PATTERN = /^[a-zA-Z0-9_-]+$/;
|
|
24
|
+
/**
|
|
25
|
+
* Validate session name format
|
|
26
|
+
* Throws an error if the session name contains invalid characters
|
|
27
|
+
*
|
|
28
|
+
* @param sessionName - Session name to validate
|
|
29
|
+
* @throws Error if session name is invalid
|
|
30
|
+
*
|
|
31
|
+
* @example
|
|
32
|
+
* ```typescript
|
|
33
|
+
* validateSessionName('mcbd-claude-test'); // OK
|
|
34
|
+
* validateSessionName('test;rm -rf'); // Throws Error
|
|
35
|
+
* ```
|
|
36
|
+
*/
|
|
37
|
+
function validateSessionName(sessionName) {
|
|
38
|
+
if (!exports.SESSION_NAME_PATTERN.test(sessionName)) {
|
|
39
|
+
throw new Error(`Invalid session name format: ${sessionName}`);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
@@ -43,6 +43,24 @@ export declare const STATUS_REASON: {
|
|
|
43
43
|
/** Issue #1893: opencode's permission dialog — an arrow-key button strip. */
|
|
44
44
|
readonly OPENCODE_PERMISSION_PROMPT: "opencode_permission_prompt";
|
|
45
45
|
readonly CLAUDE_SELECTION_LIST: "claude_selection_list";
|
|
46
|
+
/**
|
|
47
|
+
* Issue #2297: Command Code's own picker (`/model`, and every overlay that
|
|
48
|
+
* shares its footer).
|
|
49
|
+
*
|
|
50
|
+
* Distinct from {@link STATUS_REASON.CLAUDE_SELECTION_LIST} even though
|
|
51
|
+
* Command Code renders claude's inline TUI, because the two footers are not
|
|
52
|
+
* the same sentence and neither pattern matches the other's screen: claude
|
|
53
|
+
* prints `Enter to set as default` / `Enter to confirm · Esc`, Command Code
|
|
54
|
+
* prints a lower-case `enter to select · esc to cancel` hint bar. Reporting
|
|
55
|
+
* the claude token for a Command Code frame would tell an operator reading
|
|
56
|
+
* `capture --json` that a rule they can go and read had fired, when it had not.
|
|
57
|
+
*
|
|
58
|
+
* Before this reason existed the picker reached the `default` floor, which is
|
|
59
|
+
* `isUnclassifiedActive` — and the chat surface answers THAT with the `1`-`9`
|
|
60
|
+
* / `y` / `n` answer keys, every one of which types into the picker's
|
|
61
|
+
* `Type to search models...` box.
|
|
62
|
+
*/
|
|
63
|
+
readonly COMMAND_CODE_SELECTION_LIST: "command_code_selection_list";
|
|
46
64
|
readonly COPILOT_SELECTION_LIST: "copilot_selection_list";
|
|
47
65
|
readonly CODEX_SELECTION_LIST: "codex_selection_list";
|
|
48
66
|
/** Issue #1017: Codex pager / edit-previous (transcript) mode. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status-reason.d.ts","sourceRoot":"","sources":["../../../src/lib/detection/status-reason.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH;;;GAGG;AACH,eAAO,MAAM,aAAa;;;;;IAKxB;;;;;;;;;;;;;;;;;;OAkBG;;IAEH,6EAA6E
|
|
1
|
+
{"version":3,"file":"status-reason.d.ts","sourceRoot":"","sources":["../../../src/lib/detection/status-reason.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH;;;GAGG;AACH,eAAO,MAAM,aAAa;;;;;IAKxB;;;;;;;;;;;;;;;;;;OAkBG;;IAEH,6EAA6E;;;IAG7E;;;;;;;;;;;;;;;;OAgBG;;;;IAIH,kEAAkE;;IAElE,6EAA6E;;;;;;IAM7E;;;;;;;;;;;;;;;OAeG;;IAEH;;;;;;;;;;;;;;;OAeG;;;CAGK,CAAC"}
|
|
@@ -46,6 +46,24 @@ exports.STATUS_REASON = {
|
|
|
46
46
|
/** Issue #1893: opencode's permission dialog — an arrow-key button strip. */
|
|
47
47
|
OPENCODE_PERMISSION_PROMPT: 'opencode_permission_prompt',
|
|
48
48
|
CLAUDE_SELECTION_LIST: 'claude_selection_list',
|
|
49
|
+
/**
|
|
50
|
+
* Issue #2297: Command Code's own picker (`/model`, and every overlay that
|
|
51
|
+
* shares its footer).
|
|
52
|
+
*
|
|
53
|
+
* Distinct from {@link STATUS_REASON.CLAUDE_SELECTION_LIST} even though
|
|
54
|
+
* Command Code renders claude's inline TUI, because the two footers are not
|
|
55
|
+
* the same sentence and neither pattern matches the other's screen: claude
|
|
56
|
+
* prints `Enter to set as default` / `Enter to confirm · Esc`, Command Code
|
|
57
|
+
* prints a lower-case `enter to select · esc to cancel` hint bar. Reporting
|
|
58
|
+
* the claude token for a Command Code frame would tell an operator reading
|
|
59
|
+
* `capture --json` that a rule they can go and read had fired, when it had not.
|
|
60
|
+
*
|
|
61
|
+
* Before this reason existed the picker reached the `default` floor, which is
|
|
62
|
+
* `isUnclassifiedActive` — and the chat surface answers THAT with the `1`-`9`
|
|
63
|
+
* / `y` / `n` answer keys, every one of which types into the picker's
|
|
64
|
+
* `Type to search models...` box.
|
|
65
|
+
*/
|
|
66
|
+
COMMAND_CODE_SELECTION_LIST: 'command_code_selection_list',
|
|
49
67
|
COPILOT_SELECTION_LIST: 'copilot_selection_list',
|
|
50
68
|
CODEX_SELECTION_LIST: 'codex_selection_list',
|
|
51
69
|
/** Issue #1017: Codex pager / edit-previous (transcript) mode. */
|
|
@@ -36,10 +36,21 @@ export declare const CODEX_VERIFIED_AGAINST: {
|
|
|
36
36
|
readonly capturedAt: "2026-08-15";
|
|
37
37
|
readonly paneGeometry: "200x1000";
|
|
38
38
|
};
|
|
39
|
-
/**
|
|
39
|
+
/**
|
|
40
|
+
* copilot-cli these rules were read off (#1885 / #1895 / #2269 fixtures).
|
|
41
|
+
*
|
|
42
|
+
* Bumped from 1.0.80 because the frames were RE-CAPTURED and the rules CHANGED:
|
|
43
|
+
* 1.0.82 redrew the composer's fence (`─` rules became a `╻▄` / `╹▀` half-block
|
|
44
|
+
* frame), dropped the `❯` from the composer in favour of the frame's own `┃`
|
|
45
|
+
* edge, boxed the transcript's echoed prompt between two more half-block
|
|
46
|
+
* dividers, and put a file-type badge in front of most tool rows' verbs. The
|
|
47
|
+
* frames are `tests/unit/lib/detection/fixtures/copilot-live-2269/`, captured on
|
|
48
|
+
* a private tmux socket at the production geometry; the 1.0.80 frames stay where
|
|
49
|
+
* they are and the rules still answer for both builds.
|
|
50
|
+
*/
|
|
40
51
|
export declare const COPILOT_VERIFIED_AGAINST: {
|
|
41
|
-
readonly version: "1.0.
|
|
42
|
-
readonly capturedAt: "2026-
|
|
52
|
+
readonly version: "1.0.82";
|
|
53
|
+
readonly capturedAt: "2026-09-04";
|
|
43
54
|
readonly paneGeometry: "200x1000";
|
|
44
55
|
};
|
|
45
56
|
/**
|
|
@@ -59,11 +70,50 @@ export declare const OPENCODE_VERIFIED_AGAINST: {
|
|
|
59
70
|
readonly capturedAt: "2026-08-26";
|
|
60
71
|
readonly paneGeometry: "80x200";
|
|
61
72
|
};
|
|
62
|
-
/**
|
|
73
|
+
/**
|
|
74
|
+
* agy these rules were read off (#988 / #995 footer + selection rules, re-read
|
|
75
|
+
* against the #2270 live panes).
|
|
76
|
+
*
|
|
77
|
+
* Bumped from `0.4.x` / `2026-07-30` / `inline` because the frames were
|
|
78
|
+
* RE-CAPTURED, not because the binary moved: #2270 drove agy 1.1.25 on a private
|
|
79
|
+
* tmux socket at the production geometry and kept both panes inline in
|
|
80
|
+
* `tests/unit/status-detector-selection.test.ts`
|
|
81
|
+
* (`AGY_1125_PERMISSION_PANE`, `AGY_1125_SWITCH_MODEL_PANE`) under the banner
|
|
82
|
+
* `Antigravity CLI 1.1.25`, trailing pane padding included. The
|
|
83
|
+
* `Do you want to proceed?` + `N. label` rules were measured off those frames,
|
|
84
|
+
* and `ANTIGRAVITY_SELECTION_LIST_PATTERN` (#995 / #997) was re-checked against
|
|
85
|
+
* them and left unchanged.
|
|
86
|
+
*
|
|
87
|
+
* `paneGeometry` leaves `inline` because the 1.1.25 permission dialog draws no
|
|
88
|
+
* composer row at all — it reproduces only at the 200x1000 pane the server
|
|
89
|
+
* captures, and a fixture without the ~970 blank padding rows exercises a
|
|
90
|
+
* different `lastLines` slice than production does. That is a statement about
|
|
91
|
+
* the capture condition, not about agy: the scrollback-retained rendering the
|
|
92
|
+
* `afterThinking` footer rules rest on (#988) is unchanged, and the 1.1.25
|
|
93
|
+
* dialog still ends on `esc to cancel`.
|
|
94
|
+
*
|
|
95
|
+
* What this stamp does NOT claim: #2270 captured `waiting` frames only, so the
|
|
96
|
+
* idle (`? for shortcuts`) and generating (spinner) branches are carried over
|
|
97
|
+
* from the 0.4 captures rather than re-measured. A live IDLE 1.1.25 frame is
|
|
98
|
+
* still uncaptured — see the `readIdleEvidence` note in `antigravity/detect.ts`.
|
|
99
|
+
*/
|
|
63
100
|
export declare const ANTIGRAVITY_VERIFIED_AGAINST: {
|
|
64
|
-
readonly version: "
|
|
65
|
-
readonly capturedAt: "2026-
|
|
66
|
-
readonly paneGeometry: "
|
|
101
|
+
readonly version: "1.1.25";
|
|
102
|
+
readonly capturedAt: "2026-09-04";
|
|
103
|
+
readonly paneGeometry: "200x1000";
|
|
104
|
+
};
|
|
105
|
+
/**
|
|
106
|
+
* Command Code these rules were read off (#2250 fixtures).
|
|
107
|
+
*
|
|
108
|
+
* The frames are `tests/fixtures/command-code-live-2250/`, captured on a private
|
|
109
|
+
* tmux socket at the production geometry — the default pane size does not
|
|
110
|
+
* reproduce the 200-column rules that fence the composer, and the status row
|
|
111
|
+
* drops its `esc to interrupt` tail below 72 columns.
|
|
112
|
+
*/
|
|
113
|
+
export declare const COMMAND_CODE_VERIFIED_AGAINST: {
|
|
114
|
+
readonly version: "1.40.1";
|
|
115
|
+
readonly capturedAt: "2026-09-03";
|
|
116
|
+
readonly paneGeometry: "200x1000";
|
|
67
117
|
};
|
|
68
118
|
/**
|
|
69
119
|
* The stamp for a tool whose frames nobody has captured yet.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verified-against.d.ts","sourceRoot":"","sources":["../../../../src/lib/detection/tools/verified-against.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,iEAAiE;AACjE,eAAO,MAAM,uBAAuB;;;;CAI1B,CAAC;AAEX,4EAA4E;AAC5E,eAAO,MAAM,sBAAsB;;;;CAIzB,CAAC;AAEX
|
|
1
|
+
{"version":3,"file":"verified-against.d.ts","sourceRoot":"","sources":["../../../../src/lib/detection/tools/verified-against.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,iEAAiE;AACjE,eAAO,MAAM,uBAAuB;;;;CAI1B,CAAC;AAEX,4EAA4E;AAC5E,eAAO,MAAM,sBAAsB;;;;CAIzB,CAAC;AAEX;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,wBAAwB;;;;CAI3B,CAAC;AAEX;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,yBAAyB;;;;CAI5B,CAAC;AAEX;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,eAAO,MAAM,4BAA4B;;;;CAI/B,CAAC;AAEX;;;;;;;GAOG;AACH,eAAO,MAAM,6BAA6B;;;;CAIhC,CAAC;AAEX;;;;;;;GAOG;AACH,eAAO,MAAM,2BAA2B;;;;CAI9B,CAAC;AAEX,iFAAiF;AACjF,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B;AAED;;;;;;GAMG;AACH,eAAO,MAAM,yBAAyB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC,CASpF,CAAC"}
|
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
* instead of importing it.
|
|
27
27
|
*/
|
|
28
28
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
-
exports.DETECTOR_VERIFIED_AGAINST = exports.UNMEASURED_VERIFIED_AGAINST = exports.ANTIGRAVITY_VERIFIED_AGAINST = exports.OPENCODE_VERIFIED_AGAINST = exports.COPILOT_VERIFIED_AGAINST = exports.CODEX_VERIFIED_AGAINST = exports.CLAUDE_VERIFIED_AGAINST = void 0;
|
|
29
|
+
exports.DETECTOR_VERIFIED_AGAINST = exports.UNMEASURED_VERIFIED_AGAINST = exports.COMMAND_CODE_VERIFIED_AGAINST = exports.ANTIGRAVITY_VERIFIED_AGAINST = exports.OPENCODE_VERIFIED_AGAINST = exports.COPILOT_VERIFIED_AGAINST = exports.CODEX_VERIFIED_AGAINST = exports.CLAUDE_VERIFIED_AGAINST = void 0;
|
|
30
30
|
/** claude these rules were read off (#1708 / #1927 fixtures). */
|
|
31
31
|
exports.CLAUDE_VERIFIED_AGAINST = {
|
|
32
32
|
version: '2.1.240',
|
|
@@ -39,10 +39,21 @@ exports.CODEX_VERIFIED_AGAINST = {
|
|
|
39
39
|
capturedAt: '2026-08-15',
|
|
40
40
|
paneGeometry: '200x1000',
|
|
41
41
|
};
|
|
42
|
-
/**
|
|
42
|
+
/**
|
|
43
|
+
* copilot-cli these rules were read off (#1885 / #1895 / #2269 fixtures).
|
|
44
|
+
*
|
|
45
|
+
* Bumped from 1.0.80 because the frames were RE-CAPTURED and the rules CHANGED:
|
|
46
|
+
* 1.0.82 redrew the composer's fence (`─` rules became a `╻▄` / `╹▀` half-block
|
|
47
|
+
* frame), dropped the `❯` from the composer in favour of the frame's own `┃`
|
|
48
|
+
* edge, boxed the transcript's echoed prompt between two more half-block
|
|
49
|
+
* dividers, and put a file-type badge in front of most tool rows' verbs. The
|
|
50
|
+
* frames are `tests/unit/lib/detection/fixtures/copilot-live-2269/`, captured on
|
|
51
|
+
* a private tmux socket at the production geometry; the 1.0.80 frames stay where
|
|
52
|
+
* they are and the rules still answer for both builds.
|
|
53
|
+
*/
|
|
43
54
|
exports.COPILOT_VERIFIED_AGAINST = {
|
|
44
|
-
version: '1.0.
|
|
45
|
-
capturedAt: '2026-
|
|
55
|
+
version: '1.0.82',
|
|
56
|
+
capturedAt: '2026-09-04',
|
|
46
57
|
paneGeometry: '200x1000',
|
|
47
58
|
};
|
|
48
59
|
/**
|
|
@@ -62,11 +73,50 @@ exports.OPENCODE_VERIFIED_AGAINST = {
|
|
|
62
73
|
capturedAt: '2026-08-26',
|
|
63
74
|
paneGeometry: '80x200',
|
|
64
75
|
};
|
|
65
|
-
/**
|
|
76
|
+
/**
|
|
77
|
+
* agy these rules were read off (#988 / #995 footer + selection rules, re-read
|
|
78
|
+
* against the #2270 live panes).
|
|
79
|
+
*
|
|
80
|
+
* Bumped from `0.4.x` / `2026-07-30` / `inline` because the frames were
|
|
81
|
+
* RE-CAPTURED, not because the binary moved: #2270 drove agy 1.1.25 on a private
|
|
82
|
+
* tmux socket at the production geometry and kept both panes inline in
|
|
83
|
+
* `tests/unit/status-detector-selection.test.ts`
|
|
84
|
+
* (`AGY_1125_PERMISSION_PANE`, `AGY_1125_SWITCH_MODEL_PANE`) under the banner
|
|
85
|
+
* `Antigravity CLI 1.1.25`, trailing pane padding included. The
|
|
86
|
+
* `Do you want to proceed?` + `N. label` rules were measured off those frames,
|
|
87
|
+
* and `ANTIGRAVITY_SELECTION_LIST_PATTERN` (#995 / #997) was re-checked against
|
|
88
|
+
* them and left unchanged.
|
|
89
|
+
*
|
|
90
|
+
* `paneGeometry` leaves `inline` because the 1.1.25 permission dialog draws no
|
|
91
|
+
* composer row at all — it reproduces only at the 200x1000 pane the server
|
|
92
|
+
* captures, and a fixture without the ~970 blank padding rows exercises a
|
|
93
|
+
* different `lastLines` slice than production does. That is a statement about
|
|
94
|
+
* the capture condition, not about agy: the scrollback-retained rendering the
|
|
95
|
+
* `afterThinking` footer rules rest on (#988) is unchanged, and the 1.1.25
|
|
96
|
+
* dialog still ends on `esc to cancel`.
|
|
97
|
+
*
|
|
98
|
+
* What this stamp does NOT claim: #2270 captured `waiting` frames only, so the
|
|
99
|
+
* idle (`? for shortcuts`) and generating (spinner) branches are carried over
|
|
100
|
+
* from the 0.4 captures rather than re-measured. A live IDLE 1.1.25 frame is
|
|
101
|
+
* still uncaptured — see the `readIdleEvidence` note in `antigravity/detect.ts`.
|
|
102
|
+
*/
|
|
66
103
|
exports.ANTIGRAVITY_VERIFIED_AGAINST = {
|
|
67
|
-
version: '
|
|
68
|
-
capturedAt: '2026-
|
|
69
|
-
paneGeometry: '
|
|
104
|
+
version: '1.1.25',
|
|
105
|
+
capturedAt: '2026-09-04',
|
|
106
|
+
paneGeometry: '200x1000',
|
|
107
|
+
};
|
|
108
|
+
/**
|
|
109
|
+
* Command Code these rules were read off (#2250 fixtures).
|
|
110
|
+
*
|
|
111
|
+
* The frames are `tests/fixtures/command-code-live-2250/`, captured on a private
|
|
112
|
+
* tmux socket at the production geometry — the default pane size does not
|
|
113
|
+
* reproduce the 200-column rules that fence the composer, and the status row
|
|
114
|
+
* drops its `esc to interrupt` tail below 72 columns.
|
|
115
|
+
*/
|
|
116
|
+
exports.COMMAND_CODE_VERIFIED_AGAINST = {
|
|
117
|
+
version: '1.40.1',
|
|
118
|
+
capturedAt: '2026-09-03',
|
|
119
|
+
paneGeometry: '200x1000',
|
|
70
120
|
};
|
|
71
121
|
/**
|
|
72
122
|
* The stamp for a tool whose frames nobody has captured yet.
|
|
@@ -94,6 +144,7 @@ exports.DETECTOR_VERIFIED_AGAINST = {
|
|
|
94
144
|
copilot: exports.COPILOT_VERIFIED_AGAINST,
|
|
95
145
|
opencode: exports.OPENCODE_VERIFIED_AGAINST,
|
|
96
146
|
antigravity: exports.ANTIGRAVITY_VERIFIED_AGAINST,
|
|
147
|
+
'command-code': exports.COMMAND_CODE_VERIFIED_AGAINST,
|
|
97
148
|
gemini: exports.UNMEASURED_VERIFIED_AGAINST,
|
|
98
149
|
'vibe-local': exports.UNMEASURED_VERIFIED_AGAINST,
|
|
99
150
|
};
|
|
@@ -99,11 +99,32 @@ export declare function parseCliVersion(output: string): string | null;
|
|
|
99
99
|
* The comparable form of a `verifiedAgainst` stamp, or null when there is none.
|
|
100
100
|
*
|
|
101
101
|
* `'unmeasured'` is null — a tool nobody has captured frames for cannot be
|
|
102
|
-
* fresh or stale. `'0.
|
|
103
|
-
*
|
|
104
|
-
*
|
|
105
|
-
*
|
|
106
|
-
*
|
|
102
|
+
* fresh or stale. A minor-series stamp such as `'2.0.x'` becomes `2.0.0`;
|
|
103
|
+
* widening to `.0` is the safe direction, because it can only ever call a newer
|
|
104
|
+
* install stale, never call a stale one current.
|
|
105
|
+
*
|
|
106
|
+
* ## The wildcard branch has no caller in the table today, and stays anyway
|
|
107
|
+
*
|
|
108
|
+
* antigravity's `0.4.x` (Issue #995 measured a range rather than a build) was
|
|
109
|
+
* the only wildcard stamp ever written, and Issue #2292 replaced it with the
|
|
110
|
+
* build #2270 actually read the rules off (`1.1.25`). Re-run the grep that
|
|
111
|
+
* settled it and the branch has zero users:
|
|
112
|
+
*
|
|
113
|
+
* ```
|
|
114
|
+
* $ grep -rnE "version: '[0-9]+\.[0-9]+\.(x|\*)'" src/
|
|
115
|
+
* (no matches)
|
|
116
|
+
* ```
|
|
117
|
+
*
|
|
118
|
+
* It is kept, because deleting it would not delete the FORMAT.
|
|
119
|
+
* `verifiedAgainst` is a hand-written string, and the next person who measures a
|
|
120
|
+
* series rather than a build can still type `2.0.x`. With this branch that
|
|
121
|
+
* stamp compares. Without it {@link parseCliVersion} reads it as null and the
|
|
122
|
+
* tool is filed alongside `'unmeasured'` — never stale, no warning, nothing an
|
|
123
|
+
* operator can act on — which is the same failure #2292 was raised to fix, one
|
|
124
|
+
* level further down. A parser for an input the table still permits is not dead
|
|
125
|
+
* code; the unit exercises it on the format directly rather than through
|
|
126
|
+
* whichever stamp the table happens to hold, so it does not go vacuous now that
|
|
127
|
+
* no tool uses it.
|
|
107
128
|
*/
|
|
108
129
|
export declare function parseVerifiedAgainstVersion(stamp: string): string | null;
|
|
109
130
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version-probes.d.ts","sourceRoot":"","sources":["../../../src/lib/detection/version-probes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4FG;AAOH,0FAA0F;AAC1F,eAAO,MAAM,iCAAiC,OAAO,CAAC;AActD,gFAAgF;AAChF,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAG7D;AAWD
|
|
1
|
+
{"version":3,"file":"version-probes.d.ts","sourceRoot":"","sources":["../../../src/lib/detection/version-probes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4FG;AAOH,0FAA0F;AAC1F,eAAO,MAAM,iCAAiC,OAAO,CAAC;AActD,gFAAgF;AAChF,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAG7D;AAWD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAIxE;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAQ/D;AAED;;;;;;;GAOG;AACH,MAAM,MAAM,oBAAoB,GAC5B;IAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,GACzF;IAAE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAA;CAAE,CAAC;AAEjF;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,uBAAuB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAWlF,CAAC;AAEF,4CAA4C;AAC5C,MAAM,WAAW,oBAAoB;IACnC,kCAAkC;IAClC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,4EAA4E;IAC5E,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,2EAA2E;IAC3E,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC;;;;;;;OAOG;IACH,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;CACzB;AAED,4EAA4E;AAC5E,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;CAClC;AAED;;;;;;;GAOG;AACH,MAAM,MAAM,iBAAiB,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC,CAAC;AAKjF;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CA4B3F;AAoBD;;;;;;;;GAQG;AACH,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,SAAS,oBAAoB,EAAE,CAAC,CAWrF;AAED,2DAA2D;AAC3D,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,SAAS,oBAAoB,EAAE,GAAG,iBAAiB,CAO5F;AAED;;;;;;;;GAQG;AACH,wBAAgB,4BAA4B,IAAI,iBAAiB,GAAG,SAAS,CAS5E;AAED,wFAAwF;AACxF,wBAAgB,8BAA8B,IAAI,IAAI,CAGrD"}
|
|
@@ -124,7 +124,7 @@ function parseCliVersion(output) {
|
|
|
124
124
|
return match ? `${match[1]}.${match[2]}.${match[3]}` : null;
|
|
125
125
|
}
|
|
126
126
|
/**
|
|
127
|
-
* A `verifiedAgainst` stamp written as a minor-series wildcard: `0.
|
|
127
|
+
* A `verifiedAgainst` stamp written as a minor-series wildcard: `2.0.x`.
|
|
128
128
|
*
|
|
129
129
|
* Only ever applied to the stamp, never to a probe's own output — one side of
|
|
130
130
|
* this comparison is a string a human typed into a tool module, the other is
|
|
@@ -135,11 +135,32 @@ const VERIFIED_AGAINST_WILDCARD_REGEX = /^(\d+)\.(\d+)\.(?:x|\*)$/i;
|
|
|
135
135
|
* The comparable form of a `verifiedAgainst` stamp, or null when there is none.
|
|
136
136
|
*
|
|
137
137
|
* `'unmeasured'` is null — a tool nobody has captured frames for cannot be
|
|
138
|
-
* fresh or stale. `'0.
|
|
139
|
-
*
|
|
140
|
-
*
|
|
141
|
-
*
|
|
142
|
-
*
|
|
138
|
+
* fresh or stale. A minor-series stamp such as `'2.0.x'` becomes `2.0.0`;
|
|
139
|
+
* widening to `.0` is the safe direction, because it can only ever call a newer
|
|
140
|
+
* install stale, never call a stale one current.
|
|
141
|
+
*
|
|
142
|
+
* ## The wildcard branch has no caller in the table today, and stays anyway
|
|
143
|
+
*
|
|
144
|
+
* antigravity's `0.4.x` (Issue #995 measured a range rather than a build) was
|
|
145
|
+
* the only wildcard stamp ever written, and Issue #2292 replaced it with the
|
|
146
|
+
* build #2270 actually read the rules off (`1.1.25`). Re-run the grep that
|
|
147
|
+
* settled it and the branch has zero users:
|
|
148
|
+
*
|
|
149
|
+
* ```
|
|
150
|
+
* $ grep -rnE "version: '[0-9]+\.[0-9]+\.(x|\*)'" src/
|
|
151
|
+
* (no matches)
|
|
152
|
+
* ```
|
|
153
|
+
*
|
|
154
|
+
* It is kept, because deleting it would not delete the FORMAT.
|
|
155
|
+
* `verifiedAgainst` is a hand-written string, and the next person who measures a
|
|
156
|
+
* series rather than a build can still type `2.0.x`. With this branch that
|
|
157
|
+
* stamp compares. Without it {@link parseCliVersion} reads it as null and the
|
|
158
|
+
* tool is filed alongside `'unmeasured'` — never stale, no warning, nothing an
|
|
159
|
+
* operator can act on — which is the same failure #2292 was raised to fix, one
|
|
160
|
+
* level further down. A parser for an input the table still permits is not dead
|
|
161
|
+
* code; the unit exercises it on the format directly rather than through
|
|
162
|
+
* whichever stamp the table happens to hold, so it does not go vacuous now that
|
|
163
|
+
* no tool uses it.
|
|
143
164
|
*/
|
|
144
165
|
function parseVerifiedAgainstVersion(stamp) {
|
|
145
166
|
const wildcard = VERIFIED_AGAINST_WILDCARD_REGEX.exec(stamp);
|
|
@@ -180,6 +201,7 @@ exports.DETECTOR_VERSION_PROBES = {
|
|
|
180
201
|
claude: { kind: 'execFile', command: 'claude', args: ['--version'] },
|
|
181
202
|
codex: { kind: 'execFile', command: 'codex', args: ['--version'] },
|
|
182
203
|
antigravity: { kind: 'execFile', command: 'agy', args: ['--version'] },
|
|
204
|
+
'command-code': { kind: 'execFile', command: 'commandcode', args: ['--version'] },
|
|
183
205
|
opencode: { kind: 'execFile', command: 'opencode', args: ['--version'] },
|
|
184
206
|
gemini: { kind: 'execFile', command: 'gemini', args: ['--version'] },
|
|
185
207
|
copilot: {
|