commandmate 0.33.3 → 0.34.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 +146 -146
- package/.next/app-path-routes-manifest.json +29 -29
- 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 +2 -2
- 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 +3 -3
- 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 +2 -2
- 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/relays/[relayId]/cancel/route.js +1 -1
- package/.next/server/app/api/relays/[relayId]/cancel/route.js.nft.json +1 -1
- package/.next/server/app/api/relays/[relayId]/cancel/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/relays/route.js +1 -1
- package/.next/server/app/api/relays/route.js.nft.json +1 -1
- package/.next/server/app/api/relays/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_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_client-reference-manifest.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_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/notes/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.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 +1 -1
- 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 +1 -1
- 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_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.js +2 -2
- 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 +2 -2
- 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.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.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.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_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_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_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_client-reference-manifest.js +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_client-reference-manifest.js +1 -1
- package/.next/server/app/skills/[skillId]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/skills/installed/page_client-reference-manifest.js +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 +8 -8
- 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 +29 -29
- package/.next/server/chunks/1049.js +1 -0
- package/.next/server/chunks/1501.js +4 -4
- package/.next/server/chunks/1886.js +2 -2
- package/.next/server/chunks/2119.js +1 -1
- package/.next/server/chunks/2404.js +1 -1
- package/.next/server/chunks/2445.js +1 -1
- package/.next/server/chunks/3241.js +1 -1
- package/.next/server/chunks/3323.js +1 -1
- package/.next/server/chunks/3480.js +2 -2
- package/.next/server/chunks/4443.js +1 -1
- package/.next/server/chunks/4802.js +1 -1
- package/.next/server/chunks/5164.js +1 -1
- package/.next/server/chunks/5571.js +1 -1
- package/.next/server/chunks/595.js +1 -1
- package/.next/server/chunks/6130.js +1 -1
- package/.next/server/chunks/6285.js +1 -1
- package/.next/server/chunks/6286.js +7 -7
- package/.next/server/chunks/6337.js +1 -1
- package/.next/server/chunks/650.js +1 -1
- package/.next/server/chunks/663.js +1 -1
- package/.next/server/chunks/6677.js +25 -0
- package/.next/server/chunks/7075.js +1 -0
- package/.next/server/chunks/7905.js +1 -1
- package/.next/server/chunks/8583.js +1 -0
- package/.next/server/chunks/8918.js +4 -2
- package/.next/server/chunks/9080.js +1 -0
- package/.next/server/chunks/964.js +1 -0
- package/.next/server/middleware-manifest.json +5 -5
- package/.next/server/pages/500.html +1 -1
- package/.next/server/server-reference-manifest.json +1 -1
- package/.next/static/chunks/2053-9ac860ab4e92ac89.js +1 -0
- package/.next/static/chunks/2652-18b8fea64413467e.js +1 -0
- package/.next/static/chunks/{4718-814f4ecfd7fcc513.js → 4718-2d9f0397a8f931c4.js} +1 -1
- package/.next/static/chunks/{8361-9bb887203c456edb.js → 8361-0142beb59be2abf3.js} +1 -1
- package/.next/static/chunks/app/{page-022090bf6f932818.js → page-26a42881c8648cd3.js} +1 -1
- package/.next/static/chunks/app/sessions/page-a3ab6f122ec60d5a.js +1 -0
- package/.next/static/chunks/app/worktrees/[id]/page-a39ec2a0732d11a6.js +1 -0
- package/.next/static/css/b09bede85744e1cf.css +1 -0
- package/.next/trace +13 -13
- package/dist/cli/commands/ask.d.ts.map +1 -1
- package/dist/cli/commands/ask.js +11 -2
- package/dist/cli/commands/respond.d.ts.map +1 -1
- package/dist/cli/commands/respond.js +8 -4
- package/dist/cli/commands/send.d.ts.map +1 -1
- package/dist/cli/commands/send.js +18 -0
- package/dist/cli/commands/wait.d.ts +18 -3
- package/dist/cli/commands/wait.d.ts.map +1 -1
- package/dist/cli/commands/wait.js +137 -2
- package/dist/cli/docs/agent-operations.d.ts +2 -2
- package/dist/cli/docs/agent-operations.d.ts.map +1 -1
- package/dist/cli/docs/agent-operations.js +41 -1
- package/dist/cli/utils/session-target.d.ts +23 -6
- package/dist/cli/utils/session-target.d.ts.map +1 -1
- package/dist/cli/utils/session-target.js +33 -5
- package/dist/server/locales/en/worktree.json +21 -2
- package/dist/server/locales/ja/worktree.json +21 -2
- package/dist/server/src/config/schedule-config.js +45 -3
- package/dist/server/src/lib/cli-tools/antigravity.js +95 -10
- package/dist/server/src/lib/cli-tools/submit-verified-sender.js +377 -16
- package/dist/server/src/lib/cmate-parser.js +8 -1
- package/dist/server/src/lib/detection/prompt-detect-multiple-choice.js +140 -19
- package/dist/server/src/lib/detection/tools/claude/detect.js +13 -2
- package/dist/server/src/lib/detection/tools/claude/picker-chrome.js +239 -0
- package/dist/server/src/lib/detection/tools/claude/prompt.js +74 -6
- package/dist/server/src/lib/hooks/sources/claude/history.js +391 -34
- package/dist/server/src/lib/hooks/sources/claude/transcript.js +91 -0
- package/dist/server/src/lib/polling/auto-yes-dialog-gate.js +114 -11
- package/dist/server/src/lib/polling/response-checker.js +82 -3
- package/dist/server/src/lib/schedule-manager.js +178 -19
- package/dist/server/src/lib/session/ask-user-question-prompt.js +4 -2
- package/dist/server/src/lib/session/claude-executor.js +33 -2
- package/dist/server/src/lib/session/resolve-session-target.js +37 -9
- package/dist/server/src/lib/verification/env-clean-gate.js +81 -4
- package/dist/server/src/types/agent-transcript.js +143 -1
- package/package.json +1 -1
- package/.next/server/chunks/1068.js +0 -1
- package/.next/server/chunks/6808.js +0 -1
- package/.next/server/chunks/7875.js +0 -25
- package/.next/server/chunks/9553.js +0 -1
- package/.next/static/chunks/2053-3f299a7a2c7d6767.js +0 -1
- package/.next/static/chunks/8772-9be53a530950d804.js +0 -1
- package/.next/static/chunks/app/sessions/page-584adf11ae51df10.js +0 -1
- package/.next/static/chunks/app/worktrees/[id]/page-3af707e74a75172b.js +0 -1
- package/.next/static/css/acd46e25427a2080.css +0 -1
- /package/.next/static/{9x6U1h52hH_r6pOsGwI_p → gniPBCKoXtbIOQey8kNcx}/_buildManifest.js +0 -0
- /package/.next/static/{9x6U1h52hH_r6pOsGwI_p → gniPBCKoXtbIOQey8kNcx}/_ssgManifest.js +0 -0
|
@@ -15,7 +15,10 @@
|
|
|
15
15
|
* compatibility path for a daemon older than the endpoint, reported as
|
|
16
16
|
* `resolvedBy: 'client-fallback'` with a warning on stderr. It is deliberately
|
|
17
17
|
* NOT kept in step with the server — adding the primary-anchor stage to it would
|
|
18
|
-
* be growing the second authority back (DR2-008).
|
|
18
|
+
* be growing the second authority back (DR2-008). The one exception is a
|
|
19
|
+
* refusal, not a choice: an `--agent` that contradicts an unregistered
|
|
20
|
+
* tool-named instance is reported exactly as the server reports it (Issue
|
|
21
|
+
* #2487), because a copy that obeys it sends where the server would refuse to.
|
|
19
22
|
*/
|
|
20
23
|
import type { ApiClient } from './api-client';
|
|
21
24
|
/**
|
|
@@ -24,11 +27,22 @@ import type { ApiClient } from './api-client';
|
|
|
24
27
|
* CLI keeps its own copy of API shapes (see api-responses.ts).
|
|
25
28
|
*/
|
|
26
29
|
export type SessionTargetResolvedBy = 'explicit' | 'roster' | 'primary' | 'worktree-default' | 'fallback' | 'client-fallback';
|
|
27
|
-
/**
|
|
30
|
+
/**
|
|
31
|
+
* An explicit `--agent` that the instance's declaration contradicts: its roster
|
|
32
|
+
* row, or — with no row — its own id when that id is a CLI tool id (the
|
|
33
|
+
* primary-instance anchor, #868; Issue #2487).
|
|
34
|
+
*/
|
|
28
35
|
export interface SessionTargetConflict {
|
|
29
36
|
instanceId: string;
|
|
37
|
+
/** The tool the instance is declared as; for a primary-anchor conflict, the id itself. */
|
|
30
38
|
rosterCliTool: string;
|
|
31
39
|
requestedCliTool: string;
|
|
40
|
+
/**
|
|
41
|
+
* Set when the declaration is the primary-instance anchor rather than a
|
|
42
|
+
* roster row. Mirrors the server's field of the same name, which
|
|
43
|
+
* `resolve-target` sends; absent for a roster contradiction.
|
|
44
|
+
*/
|
|
45
|
+
primaryAnchor?: true;
|
|
32
46
|
}
|
|
33
47
|
export interface CliSessionTarget {
|
|
34
48
|
/**
|
|
@@ -56,15 +70,18 @@ export interface ResolveSessionTargetOptions {
|
|
|
56
70
|
* @param client - API client aimed at the server
|
|
57
71
|
* @param worktreeId - Worktree ID
|
|
58
72
|
* @param options - `--instance` and `--agent` as the user gave them
|
|
59
|
-
* @returns The resolved target, with `conflict` set when `--agent` contradicts
|
|
73
|
+
* @returns The resolved target, with `conflict` set when `--agent` contradicts
|
|
74
|
+
* the roster or the primary-instance anchor
|
|
60
75
|
* @throws ApiError when the server's capabilities cannot be determined (auth
|
|
61
76
|
* failure, redirect, non-JSON body) — those are never treated as "old server"
|
|
62
77
|
*/
|
|
63
78
|
export declare function resolveSessionTarget(client: ApiClient, worktreeId: string, options?: ResolveSessionTargetOptions): Promise<CliSessionTarget>;
|
|
64
79
|
/**
|
|
65
|
-
* The sentence shown when the
|
|
66
|
-
* declarations and the three ways out, because only the operator
|
|
67
|
-
* the two is wrong.
|
|
80
|
+
* The sentence shown when the instance's declaration and `--agent` disagree.
|
|
81
|
+
* Names both declarations and the three ways out, because only the operator
|
|
82
|
+
* knows which of the two is wrong. A primary-anchor conflict has no roster row
|
|
83
|
+
* to re-register — `instances add --id <tool>` answers "already exists" — so its
|
|
84
|
+
* third way out is another instance.
|
|
68
85
|
*/
|
|
69
86
|
export declare function describeSessionTargetConflict(conflict: SessionTargetConflict): string;
|
|
70
87
|
//# sourceMappingURL=session-target.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-target.d.ts","sourceRoot":"","sources":["../../../src/cli/utils/session-target.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"session-target.d.ts","sourceRoot":"","sources":["../../../src/cli/utils/session-target.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAIH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAK9C;;;;GAIG;AACH,MAAM,MAAM,uBAAuB,GAC/B,UAAU,GACV,QAAQ,GACR,SAAS,GACT,kBAAkB,GAClB,UAAU,GACV,iBAAiB,CAAC;AAEtB;;;;GAIG;AACH,MAAM,WAAW,qBAAqB;IACpC,UAAU,EAAE,MAAM,CAAC;IACnB,0FAA0F;IAC1F,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;IACzB;;;;OAIG;IACH,aAAa,CAAC,EAAE,IAAI,CAAC;CACtB;AAED,MAAM,WAAW,gBAAgB;IAC/B;;;;;;OAMG;IACH,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,0EAA0E;IAC1E,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,UAAU,EAAE,uBAAuB,CAAC;IACpC,gFAAgF;IAChF,QAAQ,EAAE,qBAAqB,GAAG,IAAI,CAAC;CACxC;AAED,MAAM,WAAW,2BAA2B;IAC1C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gFAAgF;IAChF,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAuBD;;;;;;;;;;GAUG;AACH,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,SAAS,EACjB,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE,2BAAgC,GACxC,OAAO,CAAC,gBAAgB,CAAC,CAM3B;AA4FD;;;;;;GAMG;AACH,wBAAgB,6BAA6B,CAAC,QAAQ,EAAE,qBAAqB,GAAG,MAAM,CAcrF"}
|
|
@@ -16,12 +16,16 @@
|
|
|
16
16
|
* compatibility path for a daemon older than the endpoint, reported as
|
|
17
17
|
* `resolvedBy: 'client-fallback'` with a warning on stderr. It is deliberately
|
|
18
18
|
* NOT kept in step with the server — adding the primary-anchor stage to it would
|
|
19
|
-
* be growing the second authority back (DR2-008).
|
|
19
|
+
* be growing the second authority back (DR2-008). The one exception is a
|
|
20
|
+
* refusal, not a choice: an `--agent` that contradicts an unregistered
|
|
21
|
+
* tool-named instance is reported exactly as the server reports it (Issue
|
|
22
|
+
* #2487), because a copy that obeys it sends where the server would refuse to.
|
|
20
23
|
*/
|
|
21
24
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
22
25
|
exports.resolveSessionTarget = resolveSessionTarget;
|
|
23
26
|
exports.describeSessionTargetConflict = describeSessionTargetConflict;
|
|
24
27
|
const types_1 = require("../types");
|
|
28
|
+
const cli_tool_ids_1 = require("../config/cli-tool-ids");
|
|
25
29
|
const agent_instances_1 = require("./agent-instances");
|
|
26
30
|
const server_capabilities_1 = require("./server-capabilities");
|
|
27
31
|
/**
|
|
@@ -40,7 +44,8 @@ function warnClientFallback() {
|
|
|
40
44
|
* @param client - API client aimed at the server
|
|
41
45
|
* @param worktreeId - Worktree ID
|
|
42
46
|
* @param options - `--instance` and `--agent` as the user gave them
|
|
43
|
-
* @returns The resolved target, with `conflict` set when `--agent` contradicts
|
|
47
|
+
* @returns The resolved target, with `conflict` set when `--agent` contradicts
|
|
48
|
+
* the roster or the primary-instance anchor
|
|
44
49
|
* @throws ApiError when the server's capabilities cannot be determined (auth
|
|
45
50
|
* failure, redirect, non-JSON body) — those are never treated as "old server"
|
|
46
51
|
*/
|
|
@@ -73,6 +78,13 @@ async function resolveViaServer(client, worktreeId, options) {
|
|
|
73
78
|
* primary-anchor stage and no worktree-default read — an old server applies
|
|
74
79
|
* those itself when the CLI sends no `cliToolId`, and reimplementing them here
|
|
75
80
|
* is how the second authority grew in the first place (DR2-008).
|
|
81
|
+
*
|
|
82
|
+
* The one thing borrowed from the server's chain is its refusal (Issue #2487):
|
|
83
|
+
* with no roster row, an `--agent` that differs from a tool-named instance id
|
|
84
|
+
* is the contradiction the server reports, and it is reported here with the
|
|
85
|
+
* same `conflict`. It resolves nothing — without `--agent` that id still
|
|
86
|
+
* resolves to nothing here — but taking the `--agent` would start an ad-hoc
|
|
87
|
+
* session under another tool's primary id, which the server now refuses.
|
|
76
88
|
*/
|
|
77
89
|
async function resolveLocally(client, worktreeId, options) {
|
|
78
90
|
const { instanceId, requestedCliTool } = options;
|
|
@@ -95,6 +107,14 @@ async function resolveLocally(client, worktreeId, options) {
|
|
|
95
107
|
return degraded(requestedCliTool);
|
|
96
108
|
}
|
|
97
109
|
if (!registered) {
|
|
110
|
+
if (requestedCliTool && (0, cli_tool_ids_1.isCliToolId)(instanceId) && requestedCliTool !== instanceId) {
|
|
111
|
+
return degraded(instanceId, {
|
|
112
|
+
instanceId,
|
|
113
|
+
rosterCliTool: instanceId,
|
|
114
|
+
requestedCliTool,
|
|
115
|
+
primaryAnchor: true,
|
|
116
|
+
});
|
|
117
|
+
}
|
|
98
118
|
return degraded(requestedCliTool);
|
|
99
119
|
}
|
|
100
120
|
if (requestedCliTool && requestedCliTool !== registered.cliTool) {
|
|
@@ -107,11 +127,19 @@ async function resolveLocally(client, worktreeId, options) {
|
|
|
107
127
|
return degraded(registered.cliTool);
|
|
108
128
|
}
|
|
109
129
|
/**
|
|
110
|
-
* The sentence shown when the
|
|
111
|
-
* declarations and the three ways out, because only the operator
|
|
112
|
-
* the two is wrong.
|
|
130
|
+
* The sentence shown when the instance's declaration and `--agent` disagree.
|
|
131
|
+
* Names both declarations and the three ways out, because only the operator
|
|
132
|
+
* knows which of the two is wrong. A primary-anchor conflict has no roster row
|
|
133
|
+
* to re-register — `instances add --id <tool>` answers "already exists" — so its
|
|
134
|
+
* third way out is another instance.
|
|
113
135
|
*/
|
|
114
136
|
function describeSessionTargetConflict(conflict) {
|
|
137
|
+
if (conflict.primaryAnchor) {
|
|
138
|
+
return (`instance '${conflict.instanceId}' is the primary instance of ${conflict.rosterCliTool}, `
|
|
139
|
+
+ `but --agent ${conflict.requestedCliTool} was given. `
|
|
140
|
+
+ `Drop --agent, pass --agent ${conflict.rosterCliTool}, or target a ${conflict.requestedCliTool} instance instead `
|
|
141
|
+
+ `(e.g. --instance ${conflict.requestedCliTool}).`);
|
|
142
|
+
}
|
|
115
143
|
return (`instance '${conflict.instanceId}' is registered as ${conflict.rosterCliTool}, `
|
|
116
144
|
+ `but --agent ${conflict.requestedCliTool} was given. `
|
|
117
145
|
+ `Drop --agent, pass --agent ${conflict.rosterCliTool}, or re-register the instance.`);
|
|
@@ -334,7 +334,10 @@
|
|
|
334
334
|
"trace": "Copy the current trace id for support debugging",
|
|
335
335
|
"tree": "Browse the session tree and jump to any point in it",
|
|
336
336
|
"unshare": "Stop sharing the conversation",
|
|
337
|
-
"worktree":
|
|
337
|
+
"worktree": {
|
|
338
|
+
"codex": "Start or continue a conversation in a new worktree",
|
|
339
|
+
"command-code": "Create, list, or switch git worktrees"
|
|
340
|
+
},
|
|
338
341
|
"skill-doctor": "Show what each of your skills costs in context and how often it gets used, so you can find skills to turn off"
|
|
339
342
|
}
|
|
340
343
|
},
|
|
@@ -479,6 +482,7 @@
|
|
|
479
482
|
"empty": "No messages yet",
|
|
480
483
|
"emptyHint": "Sending a message starts the session",
|
|
481
484
|
"openSearch": "Search this conversation",
|
|
485
|
+
"turnBoundary": "Next turn",
|
|
482
486
|
"thinking": {
|
|
483
487
|
"summary": "Thinking · {count}",
|
|
484
488
|
"expand": "Show the reasoning",
|
|
@@ -504,7 +508,19 @@
|
|
|
504
508
|
"awaitingAnswer": "Awaiting an answer",
|
|
505
509
|
"unclassified": "Dialog not recognized",
|
|
506
510
|
"resolved": "Resolved",
|
|
507
|
-
"unlabeled": "Approval dialog"
|
|
511
|
+
"unlabeled": "Approval dialog",
|
|
512
|
+
"unlabeledQuestion": "Question",
|
|
513
|
+
"autoAnswered": "Auto-answered",
|
|
514
|
+
"submitConfirmation": "Answer submission",
|
|
515
|
+
"confirmation": "Submission: {outcome}",
|
|
516
|
+
"summaryQuestions": "Questions · {count}",
|
|
517
|
+
"summaryConfirmations": "Submissions · {count}",
|
|
518
|
+
"summaryConfirmationsOnly": "Answer submissions · {count}",
|
|
519
|
+
"summarySeparator": " / ",
|
|
520
|
+
"expandQuestions": "Show the questions",
|
|
521
|
+
"collapseQuestions": "Hide the questions",
|
|
522
|
+
"expandMixed": "Show the questions and approvals",
|
|
523
|
+
"collapseMixed": "Hide the questions and approvals"
|
|
508
524
|
},
|
|
509
525
|
"previousSession": {
|
|
510
526
|
"summary": "Previous session ({count})",
|
|
@@ -927,6 +943,9 @@
|
|
|
927
943
|
"toolbarLabel": "Dialog answer keys",
|
|
928
944
|
"caption": "Answer"
|
|
929
945
|
},
|
|
946
|
+
"promptResponse": {
|
|
947
|
+
"refused": "Your answer was not sent because the dialog has changed. Please check the screen."
|
|
948
|
+
},
|
|
930
949
|
"dismissPanelKeys": {
|
|
931
950
|
"toolbarLabel": "Close this screen",
|
|
932
951
|
"close": "Close (Esc)",
|
|
@@ -334,7 +334,10 @@
|
|
|
334
334
|
"trace": "サポート調査用に現在のトレース ID をコピー",
|
|
335
335
|
"tree": "セッションツリーを辿って任意の地点へジャンプ",
|
|
336
336
|
"unshare": "会話の共有を停止",
|
|
337
|
-
"worktree":
|
|
337
|
+
"worktree": {
|
|
338
|
+
"codex": "新しい worktree で会話を開始・再開する",
|
|
339
|
+
"command-code": "git worktree の作成・一覧・切り替え"
|
|
340
|
+
},
|
|
338
341
|
"skill-doctor": "各スキルのコンテキスト消費量と使用頻度を表示し、オフにするスキルを特定"
|
|
339
342
|
}
|
|
340
343
|
},
|
|
@@ -479,6 +482,7 @@
|
|
|
479
482
|
"empty": "まだメッセージはありません",
|
|
480
483
|
"emptyHint": "送信するとセッションが起動します",
|
|
481
484
|
"openSearch": "この会話を検索",
|
|
485
|
+
"turnBoundary": "ここから次のターン",
|
|
482
486
|
"thinking": {
|
|
483
487
|
"summary": "思考 {count} 件",
|
|
484
488
|
"expand": "思考を開く",
|
|
@@ -504,7 +508,19 @@
|
|
|
504
508
|
"awaitingAnswer": "応答待ち",
|
|
505
509
|
"unclassified": "判別できないダイアログ",
|
|
506
510
|
"resolved": "応答済み",
|
|
507
|
-
"unlabeled": "承認ダイアログ"
|
|
511
|
+
"unlabeled": "承認ダイアログ",
|
|
512
|
+
"unlabeledQuestion": "質問",
|
|
513
|
+
"autoAnswered": "自動回答",
|
|
514
|
+
"submitConfirmation": "質問の送信確認",
|
|
515
|
+
"confirmation": "送信確認: {outcome}",
|
|
516
|
+
"summaryQuestions": "質問 {count} 件",
|
|
517
|
+
"summaryConfirmations": "送信確認 {count} 件",
|
|
518
|
+
"summaryConfirmationsOnly": "質問の送信確認 {count} 件",
|
|
519
|
+
"summarySeparator": "・",
|
|
520
|
+
"expandQuestions": "質問を開く",
|
|
521
|
+
"collapseQuestions": "質問を閉じる",
|
|
522
|
+
"expandMixed": "質問と承認を開く",
|
|
523
|
+
"collapseMixed": "質問と承認を閉じる"
|
|
508
524
|
},
|
|
509
525
|
"previousSession": {
|
|
510
526
|
"summary": "前回のセッション({count} 件)",
|
|
@@ -927,6 +943,9 @@
|
|
|
927
943
|
"toolbarLabel": "ダイアログへの回答キー",
|
|
928
944
|
"caption": "回答"
|
|
929
945
|
},
|
|
946
|
+
"promptResponse": {
|
|
947
|
+
"refused": "ダイアログの状態が変わったため送信できませんでした。画面を確認してください。"
|
|
948
|
+
},
|
|
930
949
|
"dismissPanelKeys": {
|
|
931
950
|
"toolbarLabel": "この画面を閉じる",
|
|
932
951
|
"close": "閉じる (Esc)",
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
* [S4-014] UUID v4 format validation
|
|
11
11
|
*/
|
|
12
12
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
-
exports.UUID_V4_PATTERN = exports.DEFAULT_PERMISSIONS = exports.NO_PERMISSION_FLAGS = exports.OPENCODE_PERMISSIONS = exports.VIBE_LOCAL_PERMISSIONS = exports.GEMINI_PERMISSIONS = exports.COMMAND_CODE_PERMISSIONS = exports.ANTIGRAVITY_PERMISSIONS = exports.COPILOT_PERMISSIONS = exports.CODEX_SANDBOXES = exports.CLAUDE_PERMISSIONS = exports.MAX_SCHEDULE_CRON_LENGTH = exports.MAX_SCHEDULE_MESSAGE_LENGTH = exports.MAX_SCHEDULE_NAME_LENGTH = void 0;
|
|
13
|
+
exports.UUID_V4_PATTERN = exports.DEFAULT_PERMISSIONS = exports.NO_PERMISSION_FLAGS = exports.OPENCODE_PERMISSIONS = exports.VIBE_LOCAL_PERMISSIONS = exports.GEMINI_PERMISSIONS = exports.COMMAND_CODE_SCHEDULE_PERMISSIONS = exports.COMMAND_CODE_YOLO_PERMISSION = exports.COMMAND_CODE_PERMISSIONS = exports.ANTIGRAVITY_PERMISSIONS = exports.COPILOT_PERMISSIONS = exports.CODEX_SANDBOXES = exports.CLAUDE_PERMISSIONS = exports.MAX_SCHEDULE_CRON_LENGTH = exports.MAX_SCHEDULE_MESSAGE_LENGTH = exports.MAX_SCHEDULE_NAME_LENGTH = void 0;
|
|
14
14
|
exports.getPermissionOptionsForTool = getPermissionOptionsForTool;
|
|
15
15
|
exports.isValidUuidV4 = isValidUuidV4;
|
|
16
16
|
// =============================================================================
|
|
@@ -62,6 +62,41 @@ exports.COMMAND_CODE_PERMISSIONS = [
|
|
|
62
62
|
'auto-accept',
|
|
63
63
|
'dont-ask',
|
|
64
64
|
];
|
|
65
|
+
/**
|
|
66
|
+
* The value that means `--yolo` in the Permission column (Issue #2454).
|
|
67
|
+
*
|
|
68
|
+
* Not a `--permission-mode` value — it is the flag name, the same trick
|
|
69
|
+
* {@link COPILOT_PERMISSIONS} plays with `allow-all-tools` / `yolo`. Named so
|
|
70
|
+
* the branch in `buildCliArgs` reads as a comparison against a vocabulary
|
|
71
|
+
* entry rather than against a bare string.
|
|
72
|
+
*/
|
|
73
|
+
exports.COMMAND_CODE_YOLO_PERMISSION = 'yolo';
|
|
74
|
+
/**
|
|
75
|
+
* What the CMATE.md Permission column accepts for command-code (Issue #2454).
|
|
76
|
+
*
|
|
77
|
+
* {@link COMMAND_CODE_PERMISSIONS} is what `--permission-mode` accepts; this is
|
|
78
|
+
* what a *schedule* may say, and the two are different sets because `--yolo`
|
|
79
|
+
* lives on its own axis. The column is modelled on copilot's, where the cell
|
|
80
|
+
* holds a flag name (`allow-all-tools` / `yolo`) rather than a mode.
|
|
81
|
+
*
|
|
82
|
+
* ## Why `yolo` is first and is the default
|
|
83
|
+
*
|
|
84
|
+
* Measured on the 1.53.0 bundle: `commandcode -p …` injects a
|
|
85
|
+
* `print-permission-gate` mod unless `--yolo` was passed, and that mod answers
|
|
86
|
+
* `edit_file` / `write_file` / `shell_command` / `monitor_command` /
|
|
87
|
+
* `kill_shell` with `block: true`. `--permission-mode` does not reach the gate
|
|
88
|
+
* at all — every one of the five values leaves print mode read-only. The block
|
|
89
|
+
* does not fail the run: it ends exit 0 with `subtype: "success"`, so the
|
|
90
|
+
* execution log says the schedule succeeded and nothing was written.
|
|
91
|
+
*
|
|
92
|
+
* Before this Issue the column had no spelling for `--yolo`, so the parser
|
|
93
|
+
* filled an empty cell with `'default'` and `buildCliArgs`'s `--yolo` branch
|
|
94
|
+
* was unreachable from a schedule (#2454).
|
|
95
|
+
*/
|
|
96
|
+
exports.COMMAND_CODE_SCHEDULE_PERMISSIONS = [
|
|
97
|
+
exports.COMMAND_CODE_YOLO_PERMISSION,
|
|
98
|
+
...exports.COMMAND_CODE_PERMISSIONS,
|
|
99
|
+
];
|
|
65
100
|
/** Allowed permission values for gemini CLI (no permission flags) */
|
|
66
101
|
exports.GEMINI_PERMISSIONS = [];
|
|
67
102
|
/** Allowed permission values for vibe-local CLI (no permission flags) */
|
|
@@ -108,7 +143,11 @@ exports.DEFAULT_PERMISSIONS = {
|
|
|
108
143
|
opencode: '',
|
|
109
144
|
copilot: 'allow-all-tools',
|
|
110
145
|
antigravity: '--dangerously-skip-permissions',
|
|
111
|
-
|
|
146
|
+
// Issue #2454: `yolo`, not `default` -- see COMMAND_CODE_SCHEDULE_PERMISSIONS.
|
|
147
|
+
// Every `--permission-mode` value leaves `commandcode -p` read-only, and the
|
|
148
|
+
// run still reports success, so an unattended schedule that omits the column
|
|
149
|
+
// would look like it worked and change nothing.
|
|
150
|
+
'command-code': exports.COMMAND_CODE_YOLO_PERMISSION,
|
|
112
151
|
};
|
|
113
152
|
/**
|
|
114
153
|
* Resolve the allowed Permission dropdown options for a CLI tool (Issue #824).
|
|
@@ -144,7 +183,10 @@ function getPermissionOptionsForTool(cliToolId) {
|
|
|
144
183
|
case 'antigravity':
|
|
145
184
|
return exports.ANTIGRAVITY_PERMISSIONS;
|
|
146
185
|
case 'command-code':
|
|
147
|
-
|
|
186
|
+
// Issue #2454: the six-value column vocabulary, not the five
|
|
187
|
+
// `--permission-mode` choices -- the dropdown has to be able to offer
|
|
188
|
+
// `yolo`, which is the only value that lets print mode write.
|
|
189
|
+
return exports.COMMAND_CODE_SCHEDULE_PERMISSIONS;
|
|
148
190
|
case 'gemini':
|
|
149
191
|
return exports.GEMINI_PERMISSIONS;
|
|
150
192
|
case 'vibe-local':
|
|
@@ -8,14 +8,19 @@
|
|
|
8
8
|
* conversation area (grows downward) | bare "> " input box | status bar
|
|
9
9
|
* The status bar reads "? for shortcuts ... <model>" when idle and
|
|
10
10
|
* "esc to cancel ..." while generating. Patterns confirmed on a real machine.
|
|
11
|
+
* agy 1.2.1 leaves the idle half of that bar blank after a turn that used a
|
|
12
|
+
* tool (Issue #2478), so readiness is read off the input box — see
|
|
13
|
+
* {@link isAntigravityReady}.
|
|
11
14
|
*/
|
|
12
15
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
16
|
exports.AntigravityTool = void 0;
|
|
17
|
+
exports.isAntigravityReady = isAntigravityReady;
|
|
14
18
|
const base_1 = require("./base");
|
|
15
19
|
const tmux_1 = require("../tmux/tmux");
|
|
16
20
|
const submit_verified_sender_1 = require("./submit-verified-sender");
|
|
17
21
|
const tmux_capture_cache_1 = require("../tmux/tmux-capture-cache");
|
|
18
22
|
const cli_patterns_1 = require("../detection/cli-patterns");
|
|
23
|
+
const frame_1 = require("../detection/tools/frame");
|
|
19
24
|
const sources_1 = require("../../lib/hooks/sources");
|
|
20
25
|
const agent_session_lifecycle_1 = require("../../lib/session/agent-session-lifecycle");
|
|
21
26
|
const logger_1 = require("../../lib/logger");
|
|
@@ -51,10 +56,14 @@ const ANTIGRAVITY_INIT_MAX_ATTEMPTS = 30;
|
|
|
51
56
|
/** Timeout for waiting for the prompt before sending a message. */
|
|
52
57
|
const ANTIGRAVITY_PROMPT_WAIT_TIMEOUT_MS = 15000;
|
|
53
58
|
/**
|
|
54
|
-
*
|
|
55
|
-
*
|
|
56
|
-
*
|
|
57
|
-
*
|
|
59
|
+
* agy's own word for "idle", drawn on the status row under the input box
|
|
60
|
+
* ("? for shortcuts … <model>"). While generating the same row reads "esc to
|
|
61
|
+
* cancel"; the trust screen and the dialogs draw their own footers instead.
|
|
62
|
+
*
|
|
63
|
+
* Issue #2478: sufficient, no longer required. agy 1.2.1 does not redraw it
|
|
64
|
+
* after a turn that used a tool — the row keeps only the right-aligned model
|
|
65
|
+
* label (`tests/fixtures/antigravity-live-2478/after-tool-turn.txt`) — and a
|
|
66
|
+
* send that waited for it timed out on every later turn of that session.
|
|
58
67
|
*/
|
|
59
68
|
const ANTIGRAVITY_READY_FOOTER_PATTERN = /\?\s+for\s+shortcuts/;
|
|
60
69
|
/**
|
|
@@ -69,12 +78,88 @@ const ANTIGRAVITY_READY_FOOTER_PATTERN = /\?\s+for\s+shortcuts/;
|
|
|
69
78
|
*/
|
|
70
79
|
const ANTIGRAVITY_TRUST_DIALOG_PATTERN = /Do you trust the contents of this project\?/;
|
|
71
80
|
/**
|
|
72
|
-
*
|
|
73
|
-
*
|
|
81
|
+
* Read agy's input box off the bottom of a frame (Issue #2478).
|
|
82
|
+
*
|
|
83
|
+
* agy draws the box — a bare `>` between two rules, its status row under the
|
|
84
|
+
* lower one — as the last thing on the screen, and everything else it can show
|
|
85
|
+
* either replaces the box (the permission dialogs, the trust screen, the
|
|
86
|
+
* post-answer survey) or is drawn below it (the `/model` picker, the slash
|
|
87
|
+
* command popup, `/feedback`'s category menu). So a frame that ENDS in the box
|
|
88
|
+
* is one whose input box is live, and a `>` row with more than the status row
|
|
89
|
+
* under it is not a box anyone can type into.
|
|
90
|
+
*
|
|
91
|
+
* This is stricter than the status detector's `promptPattern.test(lastLines)`
|
|
92
|
+
* (`detection/tools/antigravity/detect.ts`), which accepts the `>` anywhere in
|
|
93
|
+
* the 15-row tail: the detector tells `/feedback`'s menu apart only in the
|
|
94
|
+
* shared generic prompt step that runs before it, and this check does not run
|
|
95
|
+
* that step. The rows between the `>` and the lower rule may be blank — agy
|
|
96
|
+
* 1.2.1 leaves the box three rows tall after a tool turn.
|
|
97
|
+
*
|
|
98
|
+
* @param contentLines - ANSI-stripped rows, trailing blank rows dropped
|
|
99
|
+
* @returns The status row under the box ('' when agy drew none), or null when
|
|
100
|
+
* the frame does not end in the box
|
|
101
|
+
*/
|
|
102
|
+
function readInputBoxStatusRow(contentLines) {
|
|
103
|
+
const rows = contentLines.map((row) => row.trim());
|
|
104
|
+
const isRule = (i) => i >= 0 && cli_patterns_1.ANTIGRAVITY_SEPARATOR_PATTERN.test(rows[i]);
|
|
105
|
+
const skipBlank = (from) => {
|
|
106
|
+
let i = from;
|
|
107
|
+
while (i >= 0 && rows[i] === '')
|
|
108
|
+
i--;
|
|
109
|
+
return i;
|
|
110
|
+
};
|
|
111
|
+
let i = rows.length - 1;
|
|
112
|
+
let statusRow = '';
|
|
113
|
+
if (i >= 0 && !isRule(i)) {
|
|
114
|
+
statusRow = rows[i];
|
|
115
|
+
i = skipBlank(i - 1);
|
|
116
|
+
}
|
|
117
|
+
if (!isRule(i))
|
|
118
|
+
return null;
|
|
119
|
+
i = skipBlank(i - 1);
|
|
120
|
+
if (i < 0 || !cli_patterns_1.ANTIGRAVITY_PROMPT_PATTERN.test(rows[i]))
|
|
121
|
+
return null;
|
|
122
|
+
return isRule(skipBlank(i - 1)) ? statusRow : null;
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Decide whether a typed message would land in agy's input box (Issue #2478).
|
|
126
|
+
*
|
|
127
|
+
* Read on the status detector's evidence (`detection/tools/antigravity/detect.ts`)
|
|
128
|
+
* over the status detector's frame (`normalizeFrame`: ANSI stripped, padding
|
|
129
|
+
* dropped, the same 15-row tail):
|
|
130
|
+
*
|
|
131
|
+
* 1. No agy screen is up: the `Switch Model` / `↑/↓ Navigate` test its
|
|
132
|
+
* `beforePrompt` makes (every branch after that test answers `waiting` or
|
|
133
|
+
* `running`, so it covers the numbered dialogs too), and the trust
|
|
134
|
+
* question. Both over the tail — with the pane 1000 rows tall the whole
|
|
135
|
+
* transcript is in the capture, and a quoted question anywhere in it used
|
|
136
|
+
* to block every send.
|
|
137
|
+
* 2. The frame ends in the input box ({@link readInputBoxStatusRow}).
|
|
138
|
+
* 3. agy is not generating. `? for shortcuts` on the status row settles it —
|
|
139
|
+
* kept as a sufficient signal so a thought summary such as "Generating the
|
|
140
|
+
* specified file" left in the tail cannot block a send the pre-#2478 rule
|
|
141
|
+
* allowed. Without it, `afterThinking`'s reading: no spinner, `Generating`
|
|
142
|
+
* or `esc to cancel` in the tail. The box stays on screen while agy
|
|
143
|
+
* generates, so 2 alone would not do.
|
|
144
|
+
*
|
|
145
|
+
* Before #2478 the footer was required and the detector never read it, so the
|
|
146
|
+
* two disagreed on every frame agy 1.2.1 draws after a tool turn.
|
|
147
|
+
*
|
|
148
|
+
* @param output - A captured pane, raw or ANSI-stripped
|
|
149
|
+
* @returns True when the input box is live and agy is idle
|
|
74
150
|
*/
|
|
75
151
|
function isAntigravityReady(output) {
|
|
76
|
-
|
|
77
|
-
|
|
152
|
+
const frame = (0, frame_1.normalizeFrame)(output);
|
|
153
|
+
if (cli_patterns_1.ANTIGRAVITY_SELECTION_LIST_PATTERN.test(frame.lastLines))
|
|
154
|
+
return false;
|
|
155
|
+
if (ANTIGRAVITY_TRUST_DIALOG_PATTERN.test(frame.lastLines))
|
|
156
|
+
return false;
|
|
157
|
+
const statusRow = readInputBoxStatusRow(frame.contentLines);
|
|
158
|
+
if (statusRow === null)
|
|
159
|
+
return false;
|
|
160
|
+
if (ANTIGRAVITY_READY_FOOTER_PATTERN.test(statusRow))
|
|
161
|
+
return true;
|
|
162
|
+
return !(0, cli_patterns_1.detectThinking)('antigravity', frame.lastLines);
|
|
78
163
|
}
|
|
79
164
|
/**
|
|
80
165
|
* Antigravity CLI tool implementation.
|
|
@@ -185,7 +270,7 @@ class AntigravityTool extends base_1.BaseCLITool {
|
|
|
185
270
|
* Wait for agy to become ready (input prompt live).
|
|
186
271
|
* Handles the first-run trust dialog ("Do you trust the contents of this
|
|
187
272
|
* project?") by sending Enter to confirm the default "Yes, I trust this folder"
|
|
188
|
-
* selection. Polls until
|
|
273
|
+
* selection. Polls until {@link isAntigravityReady} or max attempts reached.
|
|
189
274
|
*/
|
|
190
275
|
async waitForReady(sessionName) {
|
|
191
276
|
// One-shot guard: capturePane keeps the dismissed dialog in scrollback, so
|
|
@@ -195,7 +280,7 @@ class AntigravityTool extends base_1.BaseCLITool {
|
|
|
195
280
|
try {
|
|
196
281
|
const rawOutput = await (0, tmux_1.capturePane)(sessionName, 50);
|
|
197
282
|
const output = (0, cli_patterns_1.stripAnsi)(rawOutput);
|
|
198
|
-
// Ready:
|
|
283
|
+
// Ready: the input box is live and no agy screen covers it.
|
|
199
284
|
if (isAntigravityReady(output)) {
|
|
200
285
|
logger.info('antigravity-prompt-detected');
|
|
201
286
|
return;
|