commandmate 0.46.0 → 0.47.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 +417 -410
- package/.next/app-path-routes-manifest.json +22 -21
- package/.next/build-manifest.json +5 -5
- package/.next/prerender-manifest.json +12 -12
- package/.next/react-loadable-manifest.json +2 -2
- package/.next/required-server-files.json +1 -1
- package/.next/routes-manifest.json +8 -0
- 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/release-notes/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/app/update/route.js +4 -2
- package/.next/server/app/api/app/update/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/app/update-check/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.js +1 -1
- package/.next/server/app/api/daily-summary/route.js.nft.json +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.js +1 -1
- package/.next/server/app/api/daily-summary/status/route.js.nft.json +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 +2 -2
- 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 +9 -9
- 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.js +1 -7
- package/.next/server/app/api/push/escalation/route.js.nft.json +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.js +1 -7
- package/.next/server/app/api/push/vapid/route.js.nft.json +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/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/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.js +1 -1
- package/.next/server/app/api/worktrees/[id]/cmate/schedules/route.js.nft.json +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]/direct-input/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/direct-input/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/direct-input/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_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/execution-logs/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/execution-logs/route.js.nft.json +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 +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.js +9 -9
- 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.js +1 -1
- package/.next/server/app/api/worktrees/[id]/opencode/session/route.js.nft.json +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.js +1 -1
- package/.next/server/app/api/worktrees/[id]/opencode/share/route.js.nft.json +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]/prompt-response/strict/route.js +1 -0
- package/.next/server/app/api/worktrees/[id]/prompt-response/strict/route.js.nft.json +1 -0
- package/.next/server/app/api/worktrees/[id]/prompt-response/strict/route_client-reference-manifest.js +1 -0
- 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.js.nft.json +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.js +1 -1
- package/.next/server/app/api/worktrees/[id]/schedules/active/route.js.nft.json +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.js.nft.json +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_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_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.js.nft.json +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.js.nft.json +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/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_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.js.nft.json +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 +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 +22 -21
- package/.next/server/chunks/1210.js +1 -1
- package/.next/server/chunks/1501.js +2 -2
- package/.next/server/chunks/1559.js +1 -1
- package/.next/server/chunks/1601.js +7 -0
- package/.next/server/chunks/1836.js +1 -0
- package/.next/server/chunks/1945.js +14 -0
- package/.next/server/chunks/2119.js +1 -1
- package/.next/server/chunks/2404.js +1 -1
- package/.next/server/chunks/2422.js +1 -0
- package/.next/server/chunks/2445.js +1 -1
- package/.next/server/chunks/2460.js +1 -1
- package/.next/server/chunks/2534.js +1 -1
- package/.next/server/chunks/3241.js +1 -1
- package/.next/server/chunks/{3077.js → 4194.js} +12 -12
- package/.next/server/chunks/4207.js +1 -1
- package/.next/server/chunks/4248.js +1 -1
- package/.next/server/chunks/5209.js +1 -1
- package/.next/server/chunks/5292.js +3 -3
- package/.next/server/chunks/5595.js +1 -1
- package/.next/server/chunks/5845.js +1 -1
- package/.next/server/chunks/6130.js +1 -1
- package/.next/server/chunks/6401.js +1 -1
- package/.next/server/chunks/{2283.js → 6486.js} +7 -7
- package/.next/server/chunks/6722.js +1 -1
- package/.next/server/chunks/6781.js +1 -1
- package/.next/server/chunks/6793.js +2 -2
- package/.next/server/chunks/7166.js +19 -0
- package/.next/server/chunks/7905.js +1 -1
- package/.next/server/chunks/8581.js +12 -12
- package/.next/server/chunks/8728.js +2 -2
- package/.next/server/chunks/8791.js +1 -1
- package/.next/server/chunks/8918.js +6 -6
- package/.next/server/chunks/9199.js +1 -0
- package/.next/server/chunks/936.js +1 -0
- package/.next/server/chunks/9390.js +1 -1
- package/.next/server/chunks/9540.js +1 -0
- package/.next/server/chunks/9627.js +3 -2
- package/.next/server/chunks/9731.js +3 -3
- package/.next/server/middleware-build-manifest.js +1 -1
- package/.next/server/middleware-manifest.json +5 -5
- package/.next/server/middleware-react-loadable-manifest.js +1 -1
- package/.next/server/pages/500.html +1 -1
- package/.next/server/server-reference-manifest.json +1 -1
- package/.next/static/chunks/{2407-acb644c5487e1720.js → 2407-b2f524f99f7fc353.js} +1 -1
- package/.next/static/chunks/{2717.21abf5b6bbd45520.js → 2717.1583400c272dc1d9.js} +1 -1
- package/.next/static/chunks/5371-a549a0d2c2044d41.js +1 -0
- package/.next/static/chunks/5794-80ac3f06f098ea29.js +1 -0
- package/.next/static/chunks/602-1c1488959215e140.js +1 -0
- package/.next/static/chunks/{8407-9a72e6f07c5d5458.js → 8407-155f84e5ba05f1d5.js} +1 -1
- package/.next/static/chunks/9079-24f9fa549ed298f1.js +1 -0
- package/.next/static/chunks/app/api/agents/update/{route-0468c3c4baa46028.js → route-c81284a9d8b35304.js} +1 -1
- package/.next/static/chunks/app/api/agents/versions/{route-0468c3c4baa46028.js → route-c81284a9d8b35304.js} +1 -1
- package/.next/static/chunks/app/api/app/release-notes/{route-0468c3c4baa46028.js → route-c81284a9d8b35304.js} +1 -1
- package/.next/static/chunks/app/api/app/update/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/app/update-check/{route-0468c3c4baa46028.js → route-c81284a9d8b35304.js} +1 -1
- package/.next/static/chunks/app/api/auth/login/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/auth/logout/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/auth/status/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/capabilities/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/daily-summary/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/daily-summary/status/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/external-apps/[id]/health/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/external-apps/[id]/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/external-apps/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/fs/browse/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/fs/recent-paths/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/hooks/agent-event/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/hooks/claude-done/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/hooks/permission-request/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/metrics/vibe/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/ollama/models/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/push/escalation/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/push/subscriptions/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/push/vapid/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/relays/[relayId]/cancel/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/relays/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/remote/pair/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/repositories/[id]/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/repositories/clone/[jobId]/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/repositories/clone/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/repositories/excluded/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/repositories/restore/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/repositories/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/repositories/scan/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/repositories/sync/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/repositories/validate-path/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/settings/default-agents/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/settings/default-surface-mode/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/sidebar/group-order/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/skills/[id]/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/skills/installations/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/skills/operations/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/skills/reindex/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/skills/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/slash-commands/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/tasks/[taskId]/cancel/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/tasks/[taskId]/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/templates/[id]/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/templates/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/verification/runs/[runId]/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/verification/runs/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/auto-yes/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/capture/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/clear-composer/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/cli-reference/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/cli-tool/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/cmate/schedules/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/current-output/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/direct-input/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/env/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/[logId]/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/files/[...path]/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/branch/create/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/branch/delete/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/branches/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/checkout/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/commit/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/diff/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/fetch/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/log/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/pull/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/push/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/reset/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/revert/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/show/[commitHash]/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/stage/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/staged/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/[index]/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/apply/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/pop/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/push/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/status/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/unstage/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/working-diff/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/instances/notes/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/instances/opencode/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/interrupt/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/kill-session/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/logs/[filename]/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/logs/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/marp-render/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/memos/[memoId]/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/memos/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/messages/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/opencode/diff/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/opencode/session/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/opencode/share/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/prompt-response/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/prompt-response/strict/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/resolve-target/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/respond/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/schedules/[scheduleId]/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/schedules/active/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/schedules/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/search/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/send/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/install/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/plan/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update-plan/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/skills/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/slash-commands/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/special-keys/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/tasks/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/terminal/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/timers/history/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/timers/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/todos/[todoId]/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/todos/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/tree/[...path]/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/tree/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/upload/[...path]/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/verify/config/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/verify/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/[runId]/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/viewed/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/apply-default-agents/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/api/worktrees/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/layout-419eaf7de340f4ab.js +1 -0
- package/.next/static/chunks/app/manifest.webmanifest/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/proxy/[...path]/route-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/sessions/page-e02f1adb1d1c1ccc.js +1 -0
- package/.next/static/chunks/app/worktrees/[id]/layout-c81284a9d8b35304.js +1 -0
- package/.next/static/chunks/app/worktrees/[id]/page-45294052ee3032f1.js +1 -0
- package/.next/static/chunks/{webpack-c0b821f340afdebf.js → webpack-468b7b33030234b3.js} +1 -1
- package/.next/trace +13 -13
- package/.next/types/app/api/worktrees/[id]/prompt-response/strict/route.ts +347 -0
- package/.next/types/routes.d.ts +2 -1
- package/.next/types/validator.ts +9 -0
- package/dist/cli/commands/auto-yes.d.ts +19 -0
- package/dist/cli/commands/auto-yes.d.ts.map +1 -1
- package/dist/cli/commands/auto-yes.js +45 -0
- package/dist/cli/commands/instances.d.ts.map +1 -1
- package/dist/cli/commands/instances.js +23 -18
- package/dist/cli/commands/ls.d.ts +15 -1
- package/dist/cli/commands/ls.d.ts.map +1 -1
- package/dist/cli/commands/ls.js +39 -3
- package/dist/cli/commands/prompt.d.ts +42 -0
- package/dist/cli/commands/prompt.d.ts.map +1 -0
- package/dist/cli/commands/prompt.js +211 -0
- package/dist/cli/commands/relays.d.ts.map +1 -1
- package/dist/cli/commands/relays.js +13 -1
- package/dist/cli/commands/respond-strict.d.ts +31 -0
- package/dist/cli/commands/respond-strict.d.ts.map +1 -0
- package/dist/cli/commands/respond-strict.js +214 -0
- package/dist/cli/commands/respond.d.ts.map +1 -1
- package/dist/cli/commands/respond.js +38 -0
- package/dist/cli/commands/send.d.ts.map +1 -1
- package/dist/cli/commands/send.js +41 -5
- package/dist/cli/commands/start.d.ts.map +1 -1
- package/dist/cli/commands/start.js +2 -1
- package/dist/cli/commands/status.d.ts.map +1 -1
- package/dist/cli/commands/status.js +18 -0
- package/dist/cli/commands/wait.d.ts +21 -1
- package/dist/cli/commands/wait.d.ts.map +1 -1
- package/dist/cli/commands/wait.js +113 -12
- package/dist/cli/docs/agent-operations.d.ts +1 -1
- package/dist/cli/docs/agent-operations.d.ts.map +1 -1
- package/dist/cli/docs/agent-operations.js +63 -1
- package/dist/cli/program.d.ts.map +1 -1
- package/dist/cli/program.js +6 -2
- package/dist/cli/types/api-responses.d.ts +62 -6
- package/dist/cli/types/api-responses.d.ts.map +1 -1
- package/dist/cli/types/index.d.ts +30 -0
- package/dist/cli/types/index.d.ts.map +1 -1
- package/dist/cli/types/index.js +12 -1
- package/dist/cli/utils/api-client.d.ts +13 -1
- package/dist/cli/utils/api-client.d.ts.map +1 -1
- package/dist/cli/utils/api-client.js +10 -2
- package/dist/cli/utils/daemon-factory.d.ts.map +1 -1
- package/dist/cli/utils/daemon-factory.js +3 -1
- package/dist/cli/utils/daemon.d.ts +38 -1
- package/dist/cli/utils/daemon.d.ts.map +1 -1
- package/dist/cli/utils/daemon.js +161 -8
- package/dist/cli/utils/paths.d.ts +12 -0
- package/dist/cli/utils/paths.d.ts.map +1 -1
- package/dist/cli/utils/paths.js +17 -0
- package/dist/lib/polling/auto-yes-suppression-reason.d.ts +55 -1
- package/dist/lib/polling/auto-yes-suppression-reason.d.ts.map +1 -1
- package/dist/lib/polling/auto-yes-suppression-reason.js +20 -0
- package/dist/lib/prompt-observation/kinds.d.ts +101 -0
- package/dist/lib/prompt-observation/kinds.d.ts.map +1 -0
- package/dist/lib/prompt-observation/kinds.js +123 -0
- package/dist/lib/prompt-observation/types.d.ts +271 -0
- package/dist/lib/prompt-observation/types.d.ts.map +1 -0
- package/dist/lib/prompt-observation/types.js +14 -0
- package/dist/lib/session/send-attempt-types.d.ts +66 -0
- package/dist/lib/session/send-attempt-types.d.ts.map +1 -0
- package/dist/lib/session/send-attempt-types.js +17 -0
- package/dist/server/locales/en/worktree.json +4 -0
- package/dist/server/locales/ja/worktree.json +4 -0
- package/dist/server/server.js +20 -1
- package/dist/server/src/config/auto-yes-config.js +11 -0
- package/dist/server/src/lib/assistant-response-saver.js +13 -0
- package/dist/server/src/lib/auto-yes-lifecycle.js +28 -2
- package/dist/server/src/lib/auto-yes-poller.js +593 -78
- package/dist/server/src/lib/auto-yes-shutdown-record.js +257 -0
- package/dist/server/src/lib/auto-yes-state.js +197 -4
- package/dist/server/src/lib/cli-tools/antigravity-startup-trust.js +135 -0
- package/dist/server/src/lib/cli-tools/antigravity.js +162 -29
- package/dist/server/src/lib/cli-tools/command-code.js +10 -2
- package/dist/server/src/lib/cli-tools/copilot.js +21 -10
- package/dist/server/src/lib/cli-tools/gemini.js +60 -13
- package/dist/server/src/lib/cli-tools/launch-dialog.js +203 -0
- package/dist/server/src/lib/cli-tools/launch-window.js +96 -0
- package/dist/server/src/lib/conversation-logger.js +14 -2
- package/dist/server/src/lib/db/chat-db.js +2 -1
- package/dist/server/src/lib/detection/selection-shape.js +35 -1
- package/dist/server/src/lib/detection/tools/antigravity/detect.js +38 -9
- package/dist/server/src/lib/detection/tools/antigravity/dialog.js +88 -1
- package/dist/server/src/lib/detection/tools/antigravity/patterns.js +41 -1
- package/dist/server/src/lib/detection/tools/claude/detect.js +60 -0
- package/dist/server/src/lib/detection/tools/command-code/selection-shape.js +63 -13
- package/dist/server/src/lib/detection/tools/copilot/patterns.js +7 -1
- package/dist/server/src/lib/history/user-turn-recorder.js +14 -0
- package/dist/server/src/lib/hooks/sources/antigravity/history.js +28 -0
- package/dist/server/src/lib/hooks/sources/claude/history.js +7 -0
- package/dist/server/src/lib/hooks/sources/codex/history.js +7 -0
- package/dist/server/src/lib/hooks/sources/command-code/history.js +7 -0
- package/dist/server/src/lib/hooks/sources/opencode-v2/history.js +11 -2
- package/dist/server/src/lib/hooks/sources/opencode-v2/subscription.js +5 -3
- package/dist/server/src/lib/hooks/sources/transcript-history.js +34 -0
- package/dist/server/src/lib/log-manager.js +7 -2
- package/dist/server/src/lib/polling/antigravity-permission-receipts.js +15 -0
- package/dist/server/src/lib/polling/antigravity-receipt-episodes.js +281 -0
- package/dist/server/src/lib/polling/auto-yes-confirm-page.js +56 -0
- package/dist/server/src/lib/polling/auto-yes-dialog-gate.js +8 -1
- package/dist/server/src/lib/polling/auto-yes-enter-fallback-state.js +22 -3
- package/dist/server/src/lib/polling/auto-yes-policy.js +61 -7
- package/dist/server/src/lib/polling/auto-yes-poller-state.js +234 -0
- package/dist/server/src/lib/polling/auto-yes-poller-stop-reason.js +50 -0
- package/dist/server/src/lib/polling/auto-yes-prompt-suppression.js +220 -5
- package/dist/server/src/lib/polling/auto-yes-suppression-reason.js +20 -0
- package/dist/server/src/lib/polling/auto-yes-suppression-state.js +10 -0
- package/dist/server/src/lib/polling/pending-scraped-response.js +119 -3
- package/dist/server/src/lib/polling/poller-owner.js +110 -0
- package/dist/server/src/lib/polling/response-checker-dialog-gate.js +2 -2
- package/dist/server/src/lib/polling/response-checker.js +211 -39
- package/dist/server/src/lib/polling/response-dedup.js +8 -0
- package/dist/server/src/lib/polling/response-poller-core.js +226 -75
- package/dist/server/src/lib/polling/structured-history-gate.js +20 -1
- package/dist/server/src/lib/prompt-answer-sender.js +59 -12
- package/dist/server/src/lib/prompt-observation/kinds.js +123 -0
- package/dist/server/src/lib/prompt-observation/types.js +14 -0
- package/dist/server/src/lib/push/prompt-push-gate.js +195 -3
- package/dist/server/src/lib/push/waiting-push-notifier.js +74 -7
- package/dist/server/src/lib/realtime/terminal-broadcast.js +14 -0
- package/dist/server/src/lib/relay/relay-delivery-claims.js +46 -0
- package/dist/server/src/lib/relay/relay-delivery.js +76 -30
- package/dist/server/src/lib/schedule-manager.js +28 -0
- package/dist/server/src/lib/session/chat-turn-progress.js +57 -6
- package/dist/server/src/lib/session/cli-session.js +38 -3
- package/dist/server/src/lib/session/current-output-builder.js +19 -0
- package/dist/server/src/lib/session/send-attempt-state.js +155 -0
- package/dist/server/src/lib/session/send-attempt-types.js +17 -0
- package/dist/server/src/lib/session/send-user-message.js +46 -0
- package/dist/server/src/lib/session/worktree-session-reconcile.js +85 -11
- package/dist/server/src/lib/timer-manager.js +7 -0
- package/dist/server/src/lib/tmux/session-created-signal.js +76 -0
- package/dist/server/src/lib/tmux/tmux-capture-cache.js +58 -6
- package/dist/server/src/lib/tmux/tmux.js +28 -2
- package/dist/server/src/lib/verification/env-clean-gate.js +30 -2
- package/dist/server/src/lib/verification/scope-gate-format.js +100 -0
- package/dist/server/src/lib/verification/scope-gate-glob.js +185 -0
- package/dist/server/src/lib/verification/scope-gate.js +19 -271
- package/dist/server/src/lib/ws-server.js +48 -6
- package/docs/en/user-guide/cli-setup-guide.md +12 -1
- package/docs/en/user-guide/webapp-guide.md +2 -0
- package/package.json +1 -1
- package/release-notes/0.46.1.json +40 -0
- package/release-notes/0.47.0.json +118 -0
- package/.next/server/chunks/1789.js +0 -1
- package/.next/server/chunks/2908.js +0 -1
- package/.next/server/chunks/3718.js +0 -1
- package/.next/server/chunks/4837.js +0 -14
- package/.next/server/chunks/5625.js +0 -25
- package/.next/server/chunks/611.js +0 -1
- package/.next/server/chunks/850.js +0 -1
- package/.next/static/chunks/3201-c01f1feed69020e6.js +0 -1
- package/.next/static/chunks/5371-a94ed618148287a0.js +0 -1
- package/.next/static/chunks/5794-947fb4934d8be193.js +0 -1
- package/.next/static/chunks/602-25e45a2422d2a3ea.js +0 -1
- package/.next/static/chunks/app/api/app/update/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/auth/login/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/auth/logout/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/auth/status/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/capabilities/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/daily-summary/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/daily-summary/status/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/external-apps/[id]/health/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/external-apps/[id]/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/external-apps/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/fs/browse/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/fs/recent-paths/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/hooks/agent-event/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/hooks/claude-done/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/hooks/permission-request/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/metrics/vibe/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/ollama/models/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/push/escalation/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/push/subscriptions/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/push/vapid/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/relays/[relayId]/cancel/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/relays/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/remote/pair/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/repositories/[id]/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/repositories/clone/[jobId]/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/repositories/clone/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/repositories/excluded/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/repositories/restore/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/repositories/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/repositories/scan/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/repositories/sync/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/repositories/validate-path/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/settings/default-agents/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/settings/default-surface-mode/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/sidebar/group-order/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/skills/[id]/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/skills/installations/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/skills/operations/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/skills/reindex/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/skills/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/slash-commands/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/tasks/[taskId]/cancel/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/tasks/[taskId]/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/templates/[id]/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/templates/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/verification/runs/[runId]/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/verification/runs/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/auto-yes/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/capture/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/clear-composer/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/cli-reference/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/cli-tool/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/cmate/schedules/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/current-output/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/direct-input/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/env/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/[logId]/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/files/[...path]/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/branch/create/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/branch/delete/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/branches/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/checkout/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/commit/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/diff/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/fetch/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/log/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/pull/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/push/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/reset/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/revert/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/show/[commitHash]/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/stage/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/staged/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/[index]/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/apply/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/pop/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/push/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/status/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/unstage/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/working-diff/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/instances/notes/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/instances/opencode/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/interrupt/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/kill-session/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/logs/[filename]/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/logs/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/marp-render/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/memos/[memoId]/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/memos/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/messages/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/opencode/diff/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/opencode/session/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/opencode/share/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/prompt-response/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/resolve-target/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/respond/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/schedules/[scheduleId]/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/schedules/active/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/schedules/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/search/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/send/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/install/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/plan/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update-plan/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/skills/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/slash-commands/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/special-keys/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/tasks/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/terminal/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/timers/history/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/timers/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/todos/[todoId]/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/todos/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/tree/[...path]/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/tree/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/upload/[...path]/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/verify/config/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/verify/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/[runId]/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/viewed/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/apply-default-agents/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/api/worktrees/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/layout-ae30ce63569c22be.js +0 -1
- package/.next/static/chunks/app/manifest.webmanifest/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/proxy/[...path]/route-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/sessions/page-9859ed61e93e6890.js +0 -1
- package/.next/static/chunks/app/worktrees/[id]/layout-0468c3c4baa46028.js +0 -1
- package/.next/static/chunks/app/worktrees/[id]/page-2eb1d0fd0a077b7e.js +0 -1
- /package/.next/static/{zI2nQ6WKboSbFbMF4EtrJ → b5BiQC9F6r_XFPdA9cuSj}/_buildManifest.js +0 -0
- /package/.next/static/{zI2nQ6WKboSbFbMF4EtrJ → b5BiQC9F6r_XFPdA9cuSj}/_ssgManifest.js +0 -0
|
@@ -15,6 +15,8 @@ const cli_tool_ids_1 = require("../config/cli-tool-ids");
|
|
|
15
15
|
const agent_target_options_1 = require("../config/agent-target-options");
|
|
16
16
|
const instances_1 = require("./instances");
|
|
17
17
|
const command_target_1 = require("./command-target");
|
|
18
|
+
const respond_strict_1 = require("./respond-strict");
|
|
19
|
+
const kinds_1 = require("../../lib/prompt-observation/kinds");
|
|
18
20
|
/**
|
|
19
21
|
* Whether this instance's agent can be answered by naming a decision
|
|
20
22
|
* (Issue #2040).
|
|
@@ -367,8 +369,44 @@ function createRespondCommand() {
|
|
|
367
369
|
.option('--instance <id>', `${agent_target_options_1.INSTANCE_OPTION_DESCRIPTION} ${instances_1.INSTANCE_ALIAS_HELP_SUFFIX}`)
|
|
368
370
|
.option('--agent <agent>', agent_target_options_1.AGENT_OPTION_DESCRIPTION)
|
|
369
371
|
.option('--token <token>', command_helpers_1.TOKEN_WARNING)
|
|
372
|
+
.option('--expect-screen <kind>', `Strict respond (Issue #3756): answer only if the screen is still this kind (${kinds_1.STRICT_RESPOND_KINDS.join(', ')}). ` +
|
|
373
|
+
'Needs --observation; never falls back to the unchecked route')
|
|
374
|
+
.option('--observation <token>', 'Strict respond: the observation token `commandmate prompt` printed for the screen (not the auth --token)')
|
|
375
|
+
.option('--expect-target <folder>', 'Strict respond: the folder a trust screen must name (omit it to be shown the folder; nothing is sent)')
|
|
376
|
+
.option('--operation-id <id>', 'Strict respond: reuse this id to retry without sending twice (default: a new random id)')
|
|
377
|
+
.option('--json', 'Strict respond: print the result object as JSON on stdout')
|
|
378
|
+
.addHelpText('after', `
|
|
379
|
+
Strict respond (--expect-screen <kind> --observation <token> <label>):
|
|
380
|
+
Run \`commandmate prompt <worktree-id> --instance <id>\` first, then answer with its
|
|
381
|
+
token. The server takes a fresh capture and sends nothing unless the kind, the
|
|
382
|
+
token (same pane, generation, appearance, options and highlight) and, on a
|
|
383
|
+
trust screen, --expect-target all match. Unnumbered screens (antigravity-trust)
|
|
384
|
+
are answered by label only — sent as Up/Down and Enter; a number and --default
|
|
385
|
+
are refused, and so are labels that match two options or no visible one.
|
|
386
|
+
Residual race: a key typed at the pane between the last check and a key is not
|
|
387
|
+
seen. While the instance's Auto-Yes is on, antigravity-permission is refused
|
|
388
|
+
(run auto-yes <worktree-id> --disable first). This is not a way to get auto
|
|
389
|
+
mode's permission for an approval.
|
|
390
|
+
|
|
391
|
+
Exit codes: 0 answered / 40 nothing sent (re-observe first) /
|
|
392
|
+
41 keys sent, result not confirmed (do NOT send again) / 2 bad arguments`)
|
|
370
393
|
.action(async (worktreeId, answer, options) => {
|
|
371
394
|
try {
|
|
395
|
+
// Issue #3756: its own endpoint, and never the unchecked one below.
|
|
396
|
+
if ((0, respond_strict_1.isStrictRespond)(options)) {
|
|
397
|
+
if (!(0, api_client_1.isValidWorktreeId)(worktreeId)) {
|
|
398
|
+
console.error('Error: Invalid worktree ID format.');
|
|
399
|
+
process.exit(types_1.ExitCode.CONFIG_ERROR);
|
|
400
|
+
return;
|
|
401
|
+
}
|
|
402
|
+
await (0, respond_strict_1.runStrictRespond)(worktreeId, answer, options);
|
|
403
|
+
return;
|
|
404
|
+
}
|
|
405
|
+
if (options.json) {
|
|
406
|
+
console.error('Error: --json applies to the strict respond (--expect-screen) only.');
|
|
407
|
+
process.exit(types_1.ExitCode.CONFIG_ERROR);
|
|
408
|
+
return;
|
|
409
|
+
}
|
|
372
410
|
const useDefault = validateRespondArgs(worktreeId, answer, options);
|
|
373
411
|
const client = new api_client_1.ApiClient({ token: options.token });
|
|
374
412
|
// Issue #1629: /prompt-response derives the session name from cliTool
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"send.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/send.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"send.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/send.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAyWpC,wBAAgB,iBAAiB,IAAI,OAAO,CA8J3C"}
|
|
@@ -16,6 +16,7 @@ const model_validation_1 = require("../config/model-validation");
|
|
|
16
16
|
const agent_instances_1 = require("../utils/agent-instances");
|
|
17
17
|
const instances_1 = require("./instances");
|
|
18
18
|
const command_target_1 = require("./command-target");
|
|
19
|
+
const auto_yes_1 = require("./auto-yes");
|
|
19
20
|
const relays_1 = require("./relays");
|
|
20
21
|
const message_dispatch_1 = require("./message-dispatch");
|
|
21
22
|
/** Auto-yes duration used when --duration is omitted. */
|
|
@@ -63,8 +64,9 @@ function resolveAutoYesDurationMs(duration) {
|
|
|
63
64
|
* @param options - Send command options containing auto-yes settings
|
|
64
65
|
* @param durationMs - Duration already validated by resolveAutoYesDurationMs()
|
|
65
66
|
* @param agent - CLI tool resolved for --instance (Issue #1629), else --agent
|
|
67
|
+
* @param contractPolicy - The policy of the contract this send created (Issue #3723), else null
|
|
66
68
|
*/
|
|
67
|
-
async function enableAutoYes(client, worktreeId, options, durationMs, agent, instanceId) {
|
|
69
|
+
async function enableAutoYes(client, worktreeId, options, durationMs, agent, instanceId, contractPolicy = null) {
|
|
68
70
|
const autoYesBody = {
|
|
69
71
|
enabled: true,
|
|
70
72
|
duration: durationMs,
|
|
@@ -81,8 +83,19 @@ async function enableAutoYes(client, worktreeId, options, durationMs, agent, ins
|
|
|
81
83
|
if (options.stopPattern) {
|
|
82
84
|
autoYesBody.stopPattern = options.stopPattern;
|
|
83
85
|
}
|
|
84
|
-
|
|
86
|
+
// Issue #3723: the response is read now. It names what the contract on the
|
|
87
|
+
// instance lets Auto-Yes answer; with `autoYes.mode: off` the poller this
|
|
88
|
+
// armed answers nothing, and "Auto-yes enabled." alone said otherwise.
|
|
89
|
+
const result = await client.post(`/api/worktrees/${worktreeId}/auto-yes`, autoYesBody);
|
|
85
90
|
console.error('Auto-yes enabled.');
|
|
91
|
+
// The server's reading wins when it has one. It has none for a `--contract`
|
|
92
|
+
// send armed before the message goes out: the task is still `pending`, which
|
|
93
|
+
// the server does not count as governing the instance (ACTIVE_TASK_STATUSES).
|
|
94
|
+
// The contract this send just created is what will govern it, so its policy
|
|
95
|
+
// is the one to describe then — a null from the server is not "no contract".
|
|
96
|
+
for (const line of (0, auto_yes_1.describeContractPolicy)(result?.contractPolicy ?? contractPolicy)) {
|
|
97
|
+
console.error(line);
|
|
98
|
+
}
|
|
86
99
|
}
|
|
87
100
|
/**
|
|
88
101
|
* Register an ad-hoc --instance session into the agent-instance roster
|
|
@@ -102,6 +115,22 @@ async function registerInstance(client, worktreeId, instanceId, cliTool) {
|
|
|
102
115
|
await (0, agent_instances_1.saveAgentInstances)(client, worktreeId, next);
|
|
103
116
|
console.error(`Instance registered in roster: ${instanceId}`);
|
|
104
117
|
}
|
|
118
|
+
/**
|
|
119
|
+
* The `autoYes` block of a just-created task in the shape `describeContractPolicy`
|
|
120
|
+
* reads (Issue #3723), or null when the response carries none. Read defensively:
|
|
121
|
+
* `contract_json` is replayed verbatim, never re-validated.
|
|
122
|
+
*/
|
|
123
|
+
function contractPolicyOf(task) {
|
|
124
|
+
const autoYes = task.contract?.autoYes;
|
|
125
|
+
if (!autoYes || typeof autoYes !== 'object')
|
|
126
|
+
return null;
|
|
127
|
+
return {
|
|
128
|
+
taskId: task.id,
|
|
129
|
+
mode: typeof autoYes.mode === 'string' ? autoYes.mode : null,
|
|
130
|
+
allowPromptTypes: Array.isArray(autoYes.allowPromptTypes) ? autoYes.allowPromptTypes : [],
|
|
131
|
+
denyPatternCount: Array.isArray(autoYes.denyPatterns) ? autoYes.denyPatterns.length : 0,
|
|
132
|
+
};
|
|
133
|
+
}
|
|
105
134
|
/**
|
|
106
135
|
* Create the task row for `--contract` and get the message to send back.
|
|
107
136
|
*
|
|
@@ -121,7 +150,11 @@ async function createContractTask(client, worktreeId, options, agent, instanceId
|
|
|
121
150
|
try {
|
|
122
151
|
const response = await client.post(`/api/worktrees/${worktreeId}/tasks`, body);
|
|
123
152
|
const created = (0, api_client_1.assertResponseShape)(response, ['task', 'message'], 'POST /api/worktrees/:id/tasks');
|
|
124
|
-
return {
|
|
153
|
+
return {
|
|
154
|
+
taskId: created.task.id,
|
|
155
|
+
message: created.message,
|
|
156
|
+
contractPolicy: contractPolicyOf(created.task),
|
|
157
|
+
};
|
|
125
158
|
}
|
|
126
159
|
catch (error) {
|
|
127
160
|
if (error instanceof api_client_1.ApiError && error.statusCode === 400 && error.payload?.issues?.length) {
|
|
@@ -312,11 +345,14 @@ worktree and send a short message that tells the agent to read that file.
|
|
|
312
345
|
// so an invalid contract cannot leave auto-yes enabled for a message
|
|
313
346
|
// that was never sent.
|
|
314
347
|
let taskId;
|
|
348
|
+
// Issue #3723: what the created contract lets Auto-Yes answer.
|
|
349
|
+
let contractPolicy = null;
|
|
315
350
|
let content = message;
|
|
316
351
|
if (options.contract) {
|
|
317
352
|
const task = await createContractTask(client, worktreeId, options, agent, instanceId);
|
|
318
353
|
taskId = task.taskId;
|
|
319
354
|
content = task.message;
|
|
355
|
+
contractPolicy = task.contractPolicy;
|
|
320
356
|
console.error(`Task created: ${taskId}`);
|
|
321
357
|
console.log(taskId);
|
|
322
358
|
}
|
|
@@ -344,7 +380,7 @@ worktree and send a short message that tells the agent to read that file.
|
|
|
344
380
|
// that never went out, which is the state #1608 removed for a bad
|
|
345
381
|
// --duration.
|
|
346
382
|
try {
|
|
347
|
-
await enableAutoYes(client, worktreeId, options, autoYesDurationMs, agent, instanceId);
|
|
383
|
+
await enableAutoYes(client, worktreeId, options, autoYesDurationMs, agent, instanceId, contractPolicy);
|
|
348
384
|
}
|
|
349
385
|
catch (error) {
|
|
350
386
|
await failTask();
|
|
@@ -391,7 +427,7 @@ worktree and send a short message that tells the agent to read that file.
|
|
|
391
427
|
// A failure here does not fail the task: the message was delivered and
|
|
392
428
|
// the task is running, which is what the row already says.
|
|
393
429
|
if (options.autoYes && deferAutoYes) {
|
|
394
|
-
await enableAutoYes(client, worktreeId, options, autoYesDurationMs, agent, instanceId);
|
|
430
|
+
await enableAutoYes(client, worktreeId, options, autoYesDurationMs, agent, instanceId, contractPolicy);
|
|
395
431
|
}
|
|
396
432
|
}
|
|
397
433
|
catch (error) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"start.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/start.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAmB,MAAM,UAAU,CAAC;AA4CnE;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,OAAO,CAAC;IACZ,QAAQ,EAAE,QAAQ,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,wFAAwF;IACxF,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED;;;;;;GAMG;AACH,wBAAsB,QAAQ,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,
|
|
1
|
+
{"version":3,"file":"start.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/start.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAmB,MAAM,UAAU,CAAC;AA4CnE;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,OAAO,CAAC;IACZ,QAAQ,EAAE,QAAQ,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,wFAAwF;IACxF,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED;;;;;;GAMG;AACH,wBAAsB,QAAQ,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,CAiU1E;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CASvE"}
|
|
@@ -95,7 +95,8 @@ async function runStart(options) {
|
|
|
95
95
|
logger.info('Run "commandmate init" to create a configuration file');
|
|
96
96
|
return { ok: false, exitCode: types_1.ExitCode.CONFIG_ERROR };
|
|
97
97
|
}
|
|
98
|
-
|
|
98
|
+
// Issue #3731: --daemon appends the server's stdout/stderr to <configDir>/logs/server[-N].log
|
|
99
|
+
const daemonManager = new daemon_1.DaemonManager(pidFilePath, undefined, () => (0, paths_1.getServerLogPath)(options.issue));
|
|
99
100
|
// Issue #136: Handle auto-port allocation for worktree servers
|
|
100
101
|
let port = options.port;
|
|
101
102
|
if (options.autoPort && options.issue !== undefined) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/status.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAA2C,aAAa,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/status.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAA2C,aAAa,EAAE,MAAM,UAAU,CAAC;AAyalF;;;;GAIG;AACH,wBAAsB,aAAa,CAAC,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAqG9E"}
|
|
@@ -12,6 +12,7 @@ const fs_1 = require("fs");
|
|
|
12
12
|
const types_1 = require("../types");
|
|
13
13
|
const logger_1 = require("../utils/logger");
|
|
14
14
|
const daemon_1 = require("../utils/daemon");
|
|
15
|
+
const paths_1 = require("../utils/paths");
|
|
15
16
|
const env_setup_1 = require("../utils/env-setup");
|
|
16
17
|
const server_url_1 = require("../utils/server-url");
|
|
17
18
|
const package_info_1 = require("../utils/package-info");
|
|
@@ -39,6 +40,19 @@ function printVersionInfo(status) {
|
|
|
39
40
|
'Restart the server ("commandmate stop && commandmate start") to run the current version.');
|
|
40
41
|
}
|
|
41
42
|
}
|
|
43
|
+
/**
|
|
44
|
+
* Issue #3731: print where `start --daemon` writes this server's stdout/stderr.
|
|
45
|
+
* Marks a path that does not exist (a server started in the foreground or by an older CLI).
|
|
46
|
+
*/
|
|
47
|
+
function printServerLogPath(issueNo) {
|
|
48
|
+
try {
|
|
49
|
+
const logPath = (0, paths_1.getServerLogPath)(issueNo);
|
|
50
|
+
console.log(`Log: ${logPath}${(0, fs_1.existsSync)(logPath) ? '' : ' (not created yet)'}`);
|
|
51
|
+
}
|
|
52
|
+
catch {
|
|
53
|
+
// The log path is a hint; failing to resolve it changes nothing about server status.
|
|
54
|
+
}
|
|
55
|
+
}
|
|
42
56
|
/**
|
|
43
57
|
* Surface the startup self-check's verdict (Issue #2113).
|
|
44
58
|
*
|
|
@@ -318,6 +332,7 @@ async function showSingleStatus(issueNo) {
|
|
|
318
332
|
}
|
|
319
333
|
if (!status.running) {
|
|
320
334
|
console.log('Status: Not running (stale PID file)');
|
|
335
|
+
printServerLogPath(issueNo);
|
|
321
336
|
console.log('');
|
|
322
337
|
const startCmd = issueNo !== undefined
|
|
323
338
|
? `commandmate start --issue ${issueNo}`
|
|
@@ -336,6 +351,7 @@ async function showSingleStatus(issueNo) {
|
|
|
336
351
|
if (status.url) {
|
|
337
352
|
console.log(`URL: ${status.url}`);
|
|
338
353
|
}
|
|
354
|
+
printServerLogPath(issueNo);
|
|
339
355
|
// Issue #2113: the advertised localhost URL may not reach this server at all
|
|
340
356
|
printLocalhostConflict(status);
|
|
341
357
|
// Issue #2123 / #2124: whether Web Push can work at all on this server
|
|
@@ -411,6 +427,7 @@ async function statusCommand(options = {}) {
|
|
|
411
427
|
}
|
|
412
428
|
if (!status.running) {
|
|
413
429
|
console.log('Status: Not running (stale PID file)');
|
|
430
|
+
printServerLogPath(options.issue);
|
|
414
431
|
console.log('');
|
|
415
432
|
const startCmd = options.issue !== undefined
|
|
416
433
|
? `commandmate start --issue ${options.issue}`
|
|
@@ -430,6 +447,7 @@ async function statusCommand(options = {}) {
|
|
|
430
447
|
if (status.url) {
|
|
431
448
|
console.log(`URL: ${status.url}`);
|
|
432
449
|
}
|
|
450
|
+
printServerLogPath(options.issue);
|
|
433
451
|
// Issue #2113: the advertised localhost URL may not reach this server at all
|
|
434
452
|
printLocalhostConflict(status);
|
|
435
453
|
// Issue #2123 / #2124: whether Web Push can work at all on this server
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
*/
|
|
23
23
|
import { Command } from 'commander';
|
|
24
24
|
import type { WaitOptions } from '../types';
|
|
25
|
-
import type { WaitPromptOutput } from '../types/api-responses';
|
|
25
|
+
import type { CurrentOutputResponse, WaitPromptOutput } from '../types/api-responses';
|
|
26
26
|
import { ApiClient } from '../utils/api-client';
|
|
27
27
|
/**
|
|
28
28
|
* Structured event types that mean "a turn is under way" (Issue #1839).
|
|
@@ -50,6 +50,26 @@ import { ApiClient } from '../utils/api-client';
|
|
|
50
50
|
* `"paths": {}`), so the test is the only thing holding the two together.
|
|
51
51
|
*/
|
|
52
52
|
export declare const TURN_OPENING_EVENT_TYPES: ReadonlySet<string>;
|
|
53
|
+
/**
|
|
54
|
+
* One stderr line saying Auto-Yes is off on this instance because the server
|
|
55
|
+
* restarted (Issue #3730), or null.
|
|
56
|
+
*
|
|
57
|
+
* Only words: the prompt was going to be reported either way — an instance
|
|
58
|
+
* whose grant the restart released is an instance with Auto-Yes off, and exit
|
|
59
|
+
* 10 for it is exactly the hand-back it always was. What this adds is the WHY,
|
|
60
|
+
* so a delegating agent re-enables Auto-Yes instead of guessing. A server
|
|
61
|
+
* older than the reason sends none, and nothing is printed.
|
|
62
|
+
*
|
|
63
|
+
* The command it suggests names the instance this wait is about: without
|
|
64
|
+
* `--instance`, `auto-yes --enable` arms the worktree's default primary, which
|
|
65
|
+
* for an alias (or a non-default tool) is another instance — the waited-on one
|
|
66
|
+
* would stay off while a grant went somewhere nobody asked for. The instance is
|
|
67
|
+
* the resolved `--instance` when one was given, else the CLI tool the server
|
|
68
|
+
* answered for (a primary's instance ID is its tool ID).
|
|
69
|
+
*
|
|
70
|
+
* @param instanceId - The resolved `--instance` of this wait, if any
|
|
71
|
+
*/
|
|
72
|
+
export declare function formatRestartReleaseNotice(worktreeId: string, data: CurrentOutputResponse, instanceId?: string): string | null;
|
|
53
73
|
/**
|
|
54
74
|
* The `stop` detail meaning "the agent ended its turn with its own background
|
|
55
75
|
* work still running, and resumes by itself when that work finishes"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wait.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/wait.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"wait.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/wait.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,KAAK,EAGV,qBAAqB,EAKrB,gBAAgB,EACjB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,SAAS,EAA+B,MAAM,qBAAqB,CAAC;AA8E7E;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,eAAO,MAAM,wBAAwB,EAAE,WAAW,CAAC,MAAM,CAIvD,CAAC;AAiOH;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,0BAA0B,CACxC,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,qBAAqB,EAC3B,UAAU,CAAC,EAAE,MAAM,GAClB,MAAM,GAAG,IAAI,CAMf;AAyMD;;;;;;;;;GASG;AACH,eAAO,MAAM,0BAA0B,wBAAwB,CAAC;AAEhE;;;;;;;;GAQG;AACH,eAAO,MAAM,sBAAsB,0BAA0B,CAAC;AAE9D;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,eAAO,MAAM,mBAAmB,QAAiB,CAAC;AA2JlD;;;GAGG;AACH,MAAM,WAAW,mBAAoB,SAAQ,WAAW;IACtD;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AA21BD;;;;;;;;;;;;;GAaG;AACH,wBAAsB,YAAY,CAChC,MAAM,EAAE,SAAS,EACjB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC;IACT,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B,6EAA6E;IAC7E,aAAa,CAAC,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC;CACrD,CAAC,CAyID;AAwKD,wBAAgB,iBAAiB,IAAI,OAAO,CA6M3C"}
|
|
@@ -23,6 +23,7 @@
|
|
|
23
23
|
*/
|
|
24
24
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
25
25
|
exports.SELF_RESUME_HOLD_MS = exports.SELF_RESUME_CAPABILITY = exports.SELF_RESUME_PENDING_DETAIL = exports.TURN_OPENING_EVENT_TYPES = void 0;
|
|
26
|
+
exports.formatRestartReleaseNotice = formatRestartReleaseNotice;
|
|
26
27
|
exports.pollWorktree = pollWorktree;
|
|
27
28
|
exports.createWaitCommand = createWaitCommand;
|
|
28
29
|
const commander_1 = require("commander");
|
|
@@ -31,6 +32,7 @@ const api_client_1 = require("../utils/api-client");
|
|
|
31
32
|
const command_helpers_1 = require("../utils/command-helpers");
|
|
32
33
|
const verify_runner_1 = require("../utils/verify-runner");
|
|
33
34
|
const agent_target_options_1 = require("../config/agent-target-options");
|
|
35
|
+
const prompt_1 = require("./prompt");
|
|
34
36
|
const prompt_view_1 = require("../../lib/session/prompt-view");
|
|
35
37
|
const instances_1 = require("./instances");
|
|
36
38
|
/** [IA3-02] Polling interval 5 seconds (matches tmux-capture-cache TTL=2s) */
|
|
@@ -239,26 +241,52 @@ const CONTRACT_POLICY_CAUSE = 'by contract policy';
|
|
|
239
241
|
* say about it is a compile error here, which is the point. Until #1843 the
|
|
240
242
|
* notice hard-coded "by contract policy" for every reason, so #1829's
|
|
241
243
|
* `agent-launch-dialog` — a product-side decision the poller makes with no
|
|
242
|
-
* contract in sight (`
|
|
243
|
-
*
|
|
244
|
-
*
|
|
244
|
+
* contract in sight (`suppressIfNotOursToAnswer` in
|
|
245
|
+
* `src/lib/polling/auto-yes-prompt-suppression.ts`: codex's lifecycle dialogs,
|
|
246
|
+
* gemini's folder trust since #3776 and copilot's since #3790) — sent operators
|
|
247
|
+
* of contract-less worktrees hunting for a `denyPatterns` entry that did not
|
|
248
|
+
* exist.
|
|
245
249
|
*
|
|
246
250
|
* The three sites that record a suppression are covered: the poller's launch-dialog
|
|
247
251
|
* branch (`agent-launch-dialog`), the poller's policy branch and
|
|
248
252
|
* `lib/hooks/permission-decision-service.ts` (both the four `evaluatePolicyAgainstTexts`
|
|
249
|
-
* verdicts, which is why those four keep the pre-#1843 wording exactly)
|
|
253
|
+
* verdicts, which is why those four keep the pre-#1843 wording exactly), and
|
|
254
|
+
* the poller's stopped-answer branch (`partial-answer`, Issue #3706 / #3713),
|
|
255
|
+
* and the poller's agy trust-screen branch (`startup-trust-unhandled`, Issue #3757),
|
|
256
|
+
* and the poller's question confirm-page branch (`question-confirm-page`, Issue #3748),
|
|
257
|
+
* and the poller's agy receipt-gate branch (`no-hook-receipt`, Issue #3767).
|
|
250
258
|
*/
|
|
251
259
|
const SUPPRESSION_CAUSE = {
|
|
252
260
|
'mode-off': CONTRACT_POLICY_CAUSE,
|
|
253
261
|
'deny-pattern': CONTRACT_POLICY_CAUSE,
|
|
254
262
|
'deny-pattern-unusable': CONTRACT_POLICY_CAUSE,
|
|
255
263
|
'type-not-allowed': CONTRACT_POLICY_CAUSE,
|
|
256
|
-
|
|
264
|
+
// Issue #3790: after the launch window the poller still leaves copilot's and
|
|
265
|
+
// gemini's trust dialogs alone when the cursor is not on the safe row, and
|
|
266
|
+
// nobody else answers them then.
|
|
267
|
+
'agent-launch-dialog': "while the agent's launch dialog was on screen; if it stays after the launch (copilot's cursor on 2. or 3., gemini's not on 1. Trust folder), answer it at the pane",
|
|
257
268
|
// Issue #1924. Deliberately not "by contract policy": no contract was
|
|
258
269
|
// consulted. The frame looked like a numbered list to the generic estimator
|
|
259
270
|
// and like prose to the tool's own detector, and an operator who reads this
|
|
260
271
|
// should go and look at the pane rather than at `denyPatterns`.
|
|
261
272
|
'unclassified-frame': 'because no tool-specific dialog detector recognised the frame',
|
|
273
|
+
// Issue #3713 (#3706's reason). Not "by contract policy" either: an earlier
|
|
274
|
+
// Auto-Yes answer was stopped with some of its keys already in the input, and
|
|
275
|
+
// typing it again would append to them, so the prompt waits for a human.
|
|
276
|
+
'partial-answer': 'because an earlier answer left partial input; Auto-Yes is waiting for a human',
|
|
277
|
+
// Issue #3757. agy's startup folder-trust screen: the launch's to confirm, not
|
|
278
|
+
// Auto-Yes's, and agy drew it after the launch window had ended.
|
|
279
|
+
'startup-trust-unhandled': "because agy's startup folder-trust confirmation is the launch's to answer, not Auto-Yes's; the next send confirms it once, or answer it at the pane",
|
|
280
|
+
// Issue #3748. The AskUserQuestion confirm page (`Submit` / `Cancel`): the
|
|
281
|
+
// tool's own reader recognised it, and `Submit` commits whatever stands as the
|
|
282
|
+
// answers, so it waits for a human. Was recorded as `unclassified-frame`,
|
|
283
|
+
// whose wording above says the opposite (nothing recognised the frame).
|
|
284
|
+
'question-confirm-page': "because the question's Submit/Cancel confirmation commits the answers as they stand, so Auto-Yes leaves it to a human",
|
|
285
|
+
// Issue #3767. agy's approval dialog has no matching hook question (none, too
|
|
286
|
+
// late, already on screen, or the hook stopped arriving). Not a contract verdict.
|
|
287
|
+
// Issue #3789: nor one left unused — the last was spent on keys Auto-Yes sent,
|
|
288
|
+
// and a dialog is still up past the grace — so "no unused question" covers both.
|
|
289
|
+
'no-hook-receipt': "because there is no unused agy hook permission question for this dialog (none arrived in time, or the last one was spent on keys that did not clear it); answer it yourself (auto-yes --disable, prompt --json, respond --expect-screen) or check hooks.json",
|
|
262
290
|
};
|
|
263
291
|
/**
|
|
264
292
|
* {@link SUPPRESSION_CAUSE} for a reason that arrived over the wire.
|
|
@@ -298,6 +326,33 @@ function formatSuppressionNotice(suppression, ageSeconds) {
|
|
|
298
326
|
const cause = suppressionCause(suppression.reason);
|
|
299
327
|
return ` auto-yes suppressed this prompt ${cause}: ${parts.join(' ')} (${ageSeconds}s ago)`;
|
|
300
328
|
}
|
|
329
|
+
/**
|
|
330
|
+
* One stderr line saying Auto-Yes is off on this instance because the server
|
|
331
|
+
* restarted (Issue #3730), or null.
|
|
332
|
+
*
|
|
333
|
+
* Only words: the prompt was going to be reported either way — an instance
|
|
334
|
+
* whose grant the restart released is an instance with Auto-Yes off, and exit
|
|
335
|
+
* 10 for it is exactly the hand-back it always was. What this adds is the WHY,
|
|
336
|
+
* so a delegating agent re-enables Auto-Yes instead of guessing. A server
|
|
337
|
+
* older than the reason sends none, and nothing is printed.
|
|
338
|
+
*
|
|
339
|
+
* The command it suggests names the instance this wait is about: without
|
|
340
|
+
* `--instance`, `auto-yes --enable` arms the worktree's default primary, which
|
|
341
|
+
* for an alias (or a non-default tool) is another instance — the waited-on one
|
|
342
|
+
* would stay off while a grant went somewhere nobody asked for. The instance is
|
|
343
|
+
* the resolved `--instance` when one was given, else the CLI tool the server
|
|
344
|
+
* answered for (a primary's instance ID is its tool ID).
|
|
345
|
+
*
|
|
346
|
+
* @param instanceId - The resolved `--instance` of this wait, if any
|
|
347
|
+
*/
|
|
348
|
+
function formatRestartReleaseNotice(worktreeId, data, instanceId) {
|
|
349
|
+
if (data.autoYes?.enabled !== false || data.autoYes.stopReason !== 'server-restart')
|
|
350
|
+
return null;
|
|
351
|
+
const target = instanceId ?? data.cliToolId;
|
|
352
|
+
const command = `commandmate auto-yes ${worktreeId} --enable${target ? ` --instance ${target}` : ''}`;
|
|
353
|
+
return ` auto-yes was released by a server restart on ${worktreeId} (it is not turned back on ` +
|
|
354
|
+
`automatically); re-enable it with \`${command}\` if this session should keep answering.`;
|
|
355
|
+
}
|
|
301
356
|
/**
|
|
302
357
|
* One stderr line saying Auto-Yes pressed Enter on THIS prompt (Issue #3397), or
|
|
303
358
|
* null when the record is absent or about another screen.
|
|
@@ -800,6 +855,23 @@ function buildUnclassifiedOutput(worktreeId, data, question) {
|
|
|
800
855
|
answerVia: 'terminal',
|
|
801
856
|
};
|
|
802
857
|
}
|
|
858
|
+
/**
|
|
859
|
+
* The exit-10 result with the poll's prompt observation added as `observation`
|
|
860
|
+
* (Issue #3755), or the result untouched.
|
|
861
|
+
*
|
|
862
|
+
* Only words added to a payload that is reported anyway: no exit code, hold or
|
|
863
|
+
* grace reads the observation, and a daemon older than the field (no
|
|
864
|
+
* `promptObservation`) gets the payload it always got. `autoYesSuppression`
|
|
865
|
+
* keeps its #1699 meaning beside it; the observation is where the poller's
|
|
866
|
+
* record and the contract's re-evaluation are told apart.
|
|
867
|
+
*/
|
|
868
|
+
function withObservation(result, data) {
|
|
869
|
+
if (result.exitCode !== types_1.WaitExitCode.PROMPT_DETECTED || !result.output)
|
|
870
|
+
return result;
|
|
871
|
+
if (!(0, prompt_1.isPromptObservation)(data.promptObservation))
|
|
872
|
+
return result;
|
|
873
|
+
return { ...result, output: { ...result.output, observation: data.promptObservation } };
|
|
874
|
+
}
|
|
803
875
|
/** The stderr line for a session this wait never saw running (Issue #1628). */
|
|
804
876
|
function describeNotStarted(worktreeId, data, options) {
|
|
805
877
|
return (`Not started: ${worktreeId} has no running ${data.cliToolId ?? 'agent'} session` +
|
|
@@ -863,6 +935,10 @@ function promptStage(poll, state, data) {
|
|
|
863
935
|
const enterNotice = formatEnterFallbackNotice(data, Date.now());
|
|
864
936
|
if (enterNotice)
|
|
865
937
|
console.error(enterNotice);
|
|
938
|
+
// Issue #3730: and whether a restart is why nothing is answering it.
|
|
939
|
+
const restartNotice = formatRestartReleaseNotice(worktreeId, data, poll.options.instance);
|
|
940
|
+
if (restartNotice)
|
|
941
|
+
console.error(restartNotice);
|
|
866
942
|
return { kind: 'wait' };
|
|
867
943
|
}
|
|
868
944
|
// Issue #2463: the one case `decidePromptPush()` stays quiet about —
|
|
@@ -903,6 +979,10 @@ function promptStage(poll, state, data) {
|
|
|
903
979
|
const enterNotice = formatEnterFallbackNotice(data, Date.now());
|
|
904
980
|
if (enterNotice)
|
|
905
981
|
console.error(enterNotice);
|
|
982
|
+
// Issue #3730: stderr only as well.
|
|
983
|
+
const restartNotice = formatRestartReleaseNotice(worktreeId, data, poll.options.instance);
|
|
984
|
+
if (restartNotice)
|
|
985
|
+
console.error(restartNotice);
|
|
906
986
|
return exitWith({ exitCode: types_1.WaitExitCode.PROMPT_DETECTED, output: promptOutput });
|
|
907
987
|
}
|
|
908
988
|
return { kind: 'next' };
|
|
@@ -924,8 +1004,16 @@ function selectionListStage(poll, data) {
|
|
|
924
1004
|
if (suppressed) {
|
|
925
1005
|
console.error(formatSuppressionNotice(suppressed.suppression, suppressed.ageSeconds));
|
|
926
1006
|
}
|
|
1007
|
+
// Issue #3730
|
|
1008
|
+
const restartNotice = formatRestartReleaseNotice(worktreeId, data, poll.options.instance);
|
|
1009
|
+
if (restartNotice)
|
|
1010
|
+
console.error(restartNotice);
|
|
927
1011
|
return { kind: 'wait' };
|
|
928
1012
|
}
|
|
1013
|
+
// Issue #3730: stderr only; the exit-10 payload is unchanged.
|
|
1014
|
+
const restartNotice = formatRestartReleaseNotice(worktreeId, data, poll.options.instance);
|
|
1015
|
+
if (restartNotice)
|
|
1016
|
+
console.error(restartNotice);
|
|
929
1017
|
return exitWith({
|
|
930
1018
|
exitCode: types_1.WaitExitCode.PROMPT_DETECTED,
|
|
931
1019
|
output: buildSelectionListOutput(worktreeId, data),
|
|
@@ -981,12 +1069,18 @@ function unclassifiedStage(poll, state, data) {
|
|
|
981
1069
|
const dwellMs = Date.now() - state.unclassifiedSince;
|
|
982
1070
|
if (dwellMs >= UNCLASSIFIED_DWELL_MS) {
|
|
983
1071
|
const question = describeUnclassifiedFrame(worktreeId, data, dwellMs);
|
|
1072
|
+
// Issue #3730: why Auto-Yes is not there to answer it, if a restart is why.
|
|
1073
|
+
const restartNotice = formatRestartReleaseNotice(worktreeId, data, poll.options.instance);
|
|
984
1074
|
if (options.onPrompt === 'human') {
|
|
985
1075
|
console.error(question);
|
|
1076
|
+
if (restartNotice)
|
|
1077
|
+
console.error(restartNotice);
|
|
986
1078
|
console.error('Waiting for human response...');
|
|
987
1079
|
return { kind: 'wait' };
|
|
988
1080
|
}
|
|
989
1081
|
console.error(question);
|
|
1082
|
+
if (restartNotice)
|
|
1083
|
+
console.error(restartNotice);
|
|
990
1084
|
return exitWith({
|
|
991
1085
|
exitCode: types_1.WaitExitCode.PROMPT_DETECTED,
|
|
992
1086
|
output: buildUnclassifiedOutput(worktreeId, data, question),
|
|
@@ -1325,10 +1419,9 @@ async function pollWorktree(client, worktreeId, options) {
|
|
|
1325
1419
|
return deadlineOutcome.result;
|
|
1326
1420
|
try {
|
|
1327
1421
|
// Issue #868: scope polling to a specific agent instance when provided.
|
|
1328
|
-
|
|
1329
|
-
|
|
1330
|
-
|
|
1331
|
-
const data = await client.get(path);
|
|
1422
|
+
// Issue #3755: `observe=1` so an exit 10 carries the observation of the
|
|
1423
|
+
// very capture it was decided on (see {@link withObservation}).
|
|
1424
|
+
const data = await client.get((0, prompt_1.observedCurrentOutputPath)(worktreeId, options.instance));
|
|
1332
1425
|
// Track content changes for stall detection
|
|
1333
1426
|
if (data.content !== state.lastContent) {
|
|
1334
1427
|
state.lastContent = data.content;
|
|
@@ -1367,7 +1460,7 @@ async function pollWorktree(client, worktreeId, options) {
|
|
|
1367
1460
|
}
|
|
1368
1461
|
const promptOutcome = promptStage(poll, state, data);
|
|
1369
1462
|
if (promptOutcome.kind === 'exit')
|
|
1370
|
-
return promptOutcome.result;
|
|
1463
|
+
return withObservation(promptOutcome.result, data);
|
|
1371
1464
|
if (promptOutcome.kind === 'wait') {
|
|
1372
1465
|
await sleep(POLL_INTERVAL_MS);
|
|
1373
1466
|
continue;
|
|
@@ -1382,14 +1475,14 @@ async function pollWorktree(client, worktreeId, options) {
|
|
|
1382
1475
|
}
|
|
1383
1476
|
const selectionListOutcome = selectionListStage(poll, data);
|
|
1384
1477
|
if (selectionListOutcome.kind === 'exit')
|
|
1385
|
-
return selectionListOutcome.result;
|
|
1478
|
+
return withObservation(selectionListOutcome.result, data);
|
|
1386
1479
|
if (selectionListOutcome.kind === 'wait') {
|
|
1387
1480
|
await sleep(POLL_INTERVAL_MS);
|
|
1388
1481
|
continue;
|
|
1389
1482
|
}
|
|
1390
1483
|
const unclassifiedOutcome = unclassifiedStage(poll, state, data);
|
|
1391
1484
|
if (unclassifiedOutcome.kind === 'exit')
|
|
1392
|
-
return unclassifiedOutcome.result;
|
|
1485
|
+
return withObservation(unclassifiedOutcome.result, data);
|
|
1393
1486
|
if (unclassifiedOutcome.kind === 'wait') {
|
|
1394
1487
|
await sleep(POLL_INTERVAL_MS);
|
|
1395
1488
|
continue;
|
|
@@ -1641,6 +1734,14 @@ A prompt the target's Auto-Yes is answering (Issue #2463):
|
|
|
1641
1734
|
would lapse during the grace ends it early with exit 10, not 124.
|
|
1642
1735
|
--auto-yes-grace 0 restores the immediate exit; --on-prompt human is
|
|
1643
1736
|
unchanged.
|
|
1737
|
+
|
|
1738
|
+
The observation on exit 10 (Issue #3755):
|
|
1739
|
+
The exit-10 payload also carries "observation": the same payload
|
|
1740
|
+
\`commandmate prompt <id> --json\` prints, read off the capture the exit was
|
|
1741
|
+
decided on — the screen's kind, an observation token, and Auto-Yes as two
|
|
1742
|
+
separate items (the poller's record, the contract re-evaluated now). It
|
|
1743
|
+
changes no exit code, hold or grace. autoYesSuppression keeps its meaning (a
|
|
1744
|
+
record under a minute old); a missing record does not mean Auto-Yes can answer.
|
|
1644
1745
|
`)
|
|
1645
1746
|
.action(async (worktreeIds, options) => {
|
|
1646
1747
|
try {
|