commandmate 0.49.1 → 0.49.2
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 +128 -132
- package/.next/app-path-routes-manifest.json +22 -22
- package/.next/build-manifest.json +2 -2
- package/.next/prerender-manifest.json +12 -12
- package/.next/required-server-files.json +1 -1
- package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/server/app/api/agents/update/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/agents/versions/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/app/release-notes/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/app/update/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/app/update-check/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/auth/login/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/auth/logout/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/auth/status/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/capabilities/route.js +1 -1
- package/.next/server/app/api/capabilities/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/daily-summary/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/daily-summary/status/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/external-apps/[id]/health/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/external-apps/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/external-apps/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/fs/browse/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/fs/recent-paths/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/hooks/agent-event/route.js +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 +2 -2
- package/.next/server/app/api/hooks/claude-done/route.js.nft.json +1 -1
- package/.next/server/app/api/hooks/claude-done/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/hooks/permission-request/route.js +1 -1
- package/.next/server/app/api/hooks/permission-request/route.js.nft.json +1 -1
- package/.next/server/app/api/hooks/permission-request/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/metrics/vibe/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/ollama/models/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/push/escalation/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/push/subscriptions/route.js +1 -1
- package/.next/server/app/api/push/subscriptions/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/push/vapid/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/relays/[relayId]/cancel/route.js +1 -1
- package/.next/server/app/api/relays/[relayId]/cancel/route.js.nft.json +1 -1
- package/.next/server/app/api/relays/[relayId]/cancel/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/relays/[relayId]/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.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.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.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.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.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_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.js +1 -1
- package/.next/server/app/api/worktrees/[id]/env/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/execution-logs/[logId]/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/execution-logs/[logId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/execution-logs/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/execution-logs/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/files/[...path]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/branch/create/route.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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 +2 -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.js +1 -1
- package/.next/server/app/api/worktrees/[id]/logs/[filename]/route.js.nft.json +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 +2 -2
- package/.next/server/app/api/worktrees/[id]/logs/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/logs/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/marp-render/route.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.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.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.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.js +1 -1
- package/.next/server/app/api/worktrees/[id]/opencode/diff/route.js.nft.json +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 -1
- package/.next/server/app/api/worktrees/[id]/prompt-response/strict/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/prompt-response/strict/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/resolve-target/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/resolve-target/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/respond/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/respond/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/respond/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/schedules/active/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/schedules/active/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/schedules/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/schedules/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/search/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/send/route.js +2 -2
- 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 +3 -3
- 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.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/slash-commands/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/slash-commands/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/special-keys/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/special-keys/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/special-keys/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/tasks/route.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.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.js +1 -1
- package/.next/server/app/api/worktrees/[id]/todos/[todoId]/route.js.nft.json +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.js +1 -1
- package/.next/server/app/api/worktrees/[id]/todos/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/todos/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/tree/[...path]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/tree/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/upload/[...path]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/config/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/config/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/route.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.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.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.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.js +1 -1
- package/.next/server/app/review/page_client-reference-manifest.js +1 -1
- package/.next/server/app/sessions/page_client-reference-manifest.js +1 -1
- package/.next/server/app/skills/[skillId]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/skills/installed/page_client-reference-manifest.js +1 -1
- package/.next/server/app/skills/page_client-reference-manifest.js +1 -1
- package/.next/server/app/worktrees/[id]/files/[...path]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/worktrees/[id]/page.js +2 -2
- 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 -22
- package/.next/server/chunks/1062.js +1 -0
- package/.next/server/chunks/110.js +1 -0
- package/.next/server/chunks/1501.js +5 -4
- package/.next/server/chunks/1656.js +2 -2
- package/.next/server/chunks/1957.js +2 -0
- package/.next/server/chunks/2119.js +1 -1
- package/.next/server/chunks/2445.js +1 -1
- package/.next/server/chunks/2897.js +1 -0
- package/.next/server/chunks/3417.js +1 -0
- package/.next/server/chunks/3505.js +1 -1
- package/.next/server/chunks/3756.js +1 -0
- package/.next/server/chunks/3801.js +3 -3
- package/.next/server/chunks/4911.js +1 -0
- package/.next/server/chunks/4936.js +1 -0
- package/.next/server/chunks/5209.js +2 -1
- package/.next/server/chunks/5354.js +1 -1
- package/.next/server/chunks/6130.js +1 -1
- package/.next/server/chunks/6401.js +1 -1
- package/.next/server/chunks/7023.js +2 -2
- package/.next/server/chunks/7905.js +1 -1
- package/.next/server/chunks/8581.js +15 -15
- package/.next/server/chunks/8728.js +2 -2
- package/.next/server/chunks/8782.js +1 -1
- package/.next/server/chunks/9390.js +1 -1
- package/.next/server/chunks/9584.js +1 -1
- package/.next/server/chunks/9731.js +2 -2
- package/.next/server/middleware-manifest.json +5 -5
- package/.next/server/pages/500.html +1 -1
- package/.next/server/server-reference-manifest.json +1 -1
- package/.next/static/chunks/{2407-675ba6b21844dc3b.js → 2407-07a237575e1ceb9e.js} +1 -1
- package/.next/static/chunks/3931-61ad1a4fc0208d0e.js +1 -0
- package/.next/static/chunks/5794-7975b8e51e731b19.js +1 -0
- package/.next/static/chunks/6966-d8dc6032410ffaba.js +1 -0
- package/.next/static/chunks/7197-ed3b3d99ac3bd450.js +1 -0
- package/.next/static/chunks/7636-a48cf0f7110250c5.js +1 -0
- package/.next/static/chunks/app/layout-4f64316957b0a8e5.js +1 -0
- package/.next/static/chunks/app/more/page-ff5af5ca48774c89.js +1 -0
- package/.next/static/chunks/app/page-b4863bfe0452e09d.js +1 -0
- package/.next/static/chunks/app/review/page-ff3efb96fdf9bb4b.js +1 -0
- package/.next/static/chunks/app/sessions/{page-890fd50ec9739973.js → page-c6eb7c02db2f4c80.js} +1 -1
- package/.next/static/chunks/app/worktrees/[id]/{page-f6d3ab8185d93aae.js → page-33afc6aa96289fb0.js} +1 -1
- package/.next/trace +13 -13
- package/dist/cli/commands/ask.d.ts.map +1 -1
- package/dist/cli/commands/ask.js +56 -5
- package/dist/cli/commands/attach.d.ts +4 -1
- package/dist/cli/commands/attach.d.ts.map +1 -1
- package/dist/cli/commands/attach.js +19 -7
- package/dist/cli/commands/command-target.d.ts +7 -0
- package/dist/cli/commands/command-target.d.ts.map +1 -1
- package/dist/cli/commands/command-target.js +10 -0
- package/dist/cli/commands/instances.d.ts.map +1 -1
- package/dist/cli/commands/instances.js +38 -2
- package/dist/cli/commands/message-dispatch.d.ts +17 -3
- package/dist/cli/commands/message-dispatch.d.ts.map +1 -1
- package/dist/cli/commands/message-dispatch.js +14 -8
- package/dist/cli/commands/relays.d.ts +2 -1
- package/dist/cli/commands/relays.d.ts.map +1 -1
- package/dist/cli/commands/relays.js +4 -3
- package/dist/cli/commands/respond-strict.d.ts.map +1 -1
- package/dist/cli/commands/respond-strict.js +22 -5
- package/dist/cli/commands/respond.d.ts +2 -2
- package/dist/cli/commands/respond.d.ts.map +1 -1
- package/dist/cli/commands/respond.js +40 -37
- package/dist/cli/commands/send.d.ts.map +1 -1
- package/dist/cli/commands/send.js +8 -4
- package/dist/cli/commands/wait-instance.d.ts +9 -1
- package/dist/cli/commands/wait-instance.d.ts.map +1 -1
- package/dist/cli/commands/wait-instance.js +15 -0
- package/dist/cli/commands/wait-poll-state.d.ts +18 -0
- package/dist/cli/commands/wait-poll-state.d.ts.map +1 -1
- package/dist/cli/commands/wait-verify.d.ts +2 -1
- package/dist/cli/commands/wait-verify.d.ts.map +1 -1
- package/dist/cli/commands/wait-verify.js +5 -1
- package/dist/cli/commands/wait.d.ts.map +1 -1
- package/dist/cli/commands/wait.js +37 -13
- package/dist/cli/commands/whoami.d.ts.map +1 -1
- package/dist/cli/commands/whoami.js +3 -1
- 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 +1 -0
- package/dist/cli/types/api-responses.d.ts +3 -1
- package/dist/cli/types/api-responses.d.ts.map +1 -1
- package/dist/cli/utils/api-client.d.ts +55 -1
- package/dist/cli/utils/api-client.d.ts.map +1 -1
- package/dist/cli/utils/api-client.js +220 -18
- package/dist/cli/utils/follow-up-command.d.ts +38 -0
- package/dist/cli/utils/follow-up-command.d.ts.map +1 -0
- package/dist/cli/utils/follow-up-command.js +57 -0
- package/dist/cli/utils/reply-ledger.d.ts +1 -1
- package/dist/cli/utils/reply-ledger.d.ts.map +1 -1
- package/dist/cli/utils/reply-ledger.js +7 -2
- package/dist/cli/utils/server-capabilities.d.ts +18 -0
- package/dist/cli/utils/server-capabilities.d.ts.map +1 -1
- package/dist/cli/utils/server-capabilities.js +36 -3
- package/dist/cli/utils/session-target.d.ts +1 -1
- package/dist/cli/utils/session-target.d.ts.map +1 -1
- package/dist/cli/utils/session-target.js +3 -0
- package/dist/cli/utils/verify-runner.d.ts +7 -0
- package/dist/cli/utils/verify-runner.d.ts.map +1 -1
- package/dist/cli/utils/verify-runner.js +51 -15
- package/dist/lib/cli-tools/session-name.d.ts.map +1 -1
- package/dist/lib/cli-tools/session-name.js +11 -3
- package/dist/lib/session/send-attempt-types.d.ts +25 -0
- package/dist/lib/session/send-attempt-types.d.ts.map +1 -1
- package/dist/lib/session/send-attempt-types.js +10 -1
- package/dist/lib/verification/session-kill-ledger.d.ts +110 -0
- package/dist/lib/verification/session-kill-ledger.d.ts.map +1 -0
- package/dist/lib/verification/session-kill-ledger.js +174 -0
- package/dist/server/locales/en/worktree.json +2 -0
- package/dist/server/locales/ja/worktree.json +2 -0
- package/dist/server/src/config/cli-tool-timing-config.js +1 -7
- package/dist/server/src/lib/auto-yes-poller.js +5 -1
- package/dist/server/src/lib/cli-tools/antigravity.js +5 -2
- package/dist/server/src/lib/cli-tools/base.js +39 -0
- package/dist/server/src/lib/cli-tools/codex.js +7 -4
- package/dist/server/src/lib/cli-tools/command-code.js +7 -3
- package/dist/server/src/lib/cli-tools/copilot.js +5 -3
- package/dist/server/src/lib/cli-tools/gemini.js +10 -2
- package/dist/server/src/lib/cli-tools/launch-keys.js +39 -0
- package/dist/server/src/lib/cli-tools/opencode-v2.js +6 -2
- package/dist/server/src/lib/cli-tools/opencode.js +5 -2
- package/dist/server/src/lib/cli-tools/session-name.js +11 -3
- package/dist/server/src/lib/cli-tools/submit-composer-read.js +16 -6
- package/dist/server/src/lib/cli-tools/submit-verified-sender.js +164 -7
- package/dist/server/src/lib/cli-tools/vibe-local.js +4 -2
- package/dist/server/src/lib/db/db-migration-path.js +63 -2
- package/dist/server/src/lib/detection/prompt-detect-multiple-choice.js +5 -4
- package/dist/server/src/lib/hooks/sources/copilot/hook-settings.js +2 -3
- package/dist/server/src/lib/prompt-answer-errors.js +76 -2
- package/dist/server/src/lib/session/agent-event-state.js +4 -0
- package/dist/server/src/lib/session/agent-session-lifecycle.js +6 -1
- package/dist/server/src/lib/session/claude-session.js +22 -6
- package/dist/server/src/lib/session/current-output-builder.js +5 -3
- package/dist/server/src/lib/session/current-output-history-writers.js +1 -1
- package/dist/server/src/lib/session/prompt-submit-receipt.js +155 -0
- package/dist/server/src/lib/session/prompt-waiting-guard.js +10 -3
- package/dist/server/src/lib/session/send-attempt-state.js +48 -0
- package/dist/server/src/lib/session/send-attempt-types.js +10 -1
- package/dist/server/src/lib/session/send-user-message.js +5 -4
- package/dist/server/src/lib/session/session-launch-flight.js +243 -0
- package/dist/server/src/lib/session/session-starting-state.js +40 -4
- package/dist/server/src/lib/session/structured-prompt.js +12 -9
- package/dist/server/src/lib/session/waiting-episode-binding.js +4 -2
- package/dist/server/src/lib/session-cleanup.js +32 -0
- package/dist/server/src/lib/session-key-sender.js +0 -27
- package/dist/server/src/lib/verification/env-clean-gate.js +129 -0
- package/dist/server/src/lib/verification/env-snapshot.js +11 -2
- package/dist/server/src/lib/verification/session-kill-ledger.js +174 -0
- package/package.json +5 -1
- package/release-notes/0.49.2.json +49 -0
- package/.next/server/chunks/3773.js +0 -1
- package/.next/server/chunks/5775.js +0 -1
- package/.next/server/chunks/7604.js +0 -2
- package/.next/static/chunks/3931-1a1abab16248f14d.js +0 -1
- package/.next/static/chunks/4768-ad6f82f034f21eae.js +0 -1
- package/.next/static/chunks/5794-80ac3f06f098ea29.js +0 -1
- package/.next/static/chunks/6654-f3534f35f16644bc.js +0 -1
- package/.next/static/chunks/7665-e9ef6e0a85b9fa49.js +0 -1
- package/.next/static/chunks/8606-ce17ffa77f39608e.js +0 -1
- package/.next/static/chunks/app/layout-8bfac4724277b47f.js +0 -1
- package/.next/static/chunks/app/more/page-87c84987b2765213.js +0 -1
- package/.next/static/chunks/app/page-1b820c421db48c2c.js +0 -1
- package/.next/static/chunks/app/review/page-e2fd4a590646a2d8.js +0 -1
- /package/.next/static/{fqfSDqQMweROeHUzOt_m1 → yGatWDsS532awSs51kXyd}/_buildManifest.js +0 -0
- /package/.next/static/{fqfSDqQMweROeHUzOt_m1 → yGatWDsS532awSs51kXyd}/_ssgManifest.js +0 -0
|
@@ -13,8 +13,8 @@ import { Command } from 'commander';
|
|
|
13
13
|
export declare const ANSWER_NOT_DELIVERED = "answer_not_delivered";
|
|
14
14
|
/**
|
|
15
15
|
* Issue #3975: the answer was stopped part-way — some of its keys may be on
|
|
16
|
-
* the pane.
|
|
17
|
-
*
|
|
16
|
+
* the pane. Both routes answer it as a 500 with this `reason` (Issue #3982).
|
|
17
|
+
* Restated from `src/lib/prompt-answer-errors.ts` (`ANSWER_INPUT_LOST_REASON`).
|
|
18
18
|
*/
|
|
19
19
|
export declare const ANSWER_INPUT_LOST = "answer_input_lost";
|
|
20
20
|
export declare function createRespondCommand(): Command;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"respond.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/respond.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"respond.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/respond.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAkKpC;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,yBAAyB,CAAC;AAE3D;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,sBAAsB,CAAC;AA0TrD,wBAAgB,oBAAoB,IAAI,OAAO,CA6I9C"}
|
|
@@ -16,6 +16,8 @@ const cli_tool_ids_1 = require("../config/cli-tool-ids");
|
|
|
16
16
|
const agent_target_options_1 = require("../config/agent-target-options");
|
|
17
17
|
const instances_1 = require("./instances");
|
|
18
18
|
const command_target_1 = require("./command-target");
|
|
19
|
+
const follow_up_command_1 = require("../utils/follow-up-command");
|
|
20
|
+
const server_capabilities_1 = require("../utils/server-capabilities");
|
|
19
21
|
const respond_strict_1 = require("./respond-strict");
|
|
20
22
|
const kinds_1 = require("../../lib/prompt-observation/kinds");
|
|
21
23
|
/**
|
|
@@ -134,37 +136,41 @@ const PROMPT_NO_LONGER_ACTIVE = 'prompt_no_longer_active';
|
|
|
134
136
|
exports.ANSWER_NOT_DELIVERED = 'answer_not_delivered';
|
|
135
137
|
/**
|
|
136
138
|
* Issue #3975: the answer was stopped part-way — some of its keys may be on
|
|
137
|
-
* the pane.
|
|
138
|
-
*
|
|
139
|
+
* the pane. Both routes answer it as a 500 with this `reason` (Issue #3982).
|
|
140
|
+
* Restated from `src/lib/prompt-answer-errors.ts` (`ANSWER_INPUT_LOST_REASON`).
|
|
139
141
|
*/
|
|
140
142
|
exports.ANSWER_INPUT_LOST = 'answer_input_lost';
|
|
141
|
-
/**
|
|
142
|
-
|
|
143
|
+
/**
|
|
144
|
+
* Whether a failed `/prompt-response` request is the answer stopped part-way
|
|
145
|
+
* (Issue #3975).
|
|
146
|
+
*
|
|
147
|
+
* Issue #3982: by `reason` alone on a server that declares
|
|
148
|
+
* `prompt-answer-reason`. The 500's `error` text can quote the answer (a tmux
|
|
149
|
+
* failure does), so a reason code found there is not evidence of anything. Only
|
|
150
|
+
* a server without the token — which put this reason nowhere but that text —
|
|
151
|
+
* is still read the old way. The probe is the memo `resolveCommandTarget`
|
|
152
|
+
* filled for this client; nothing is asked unless the request already failed.
|
|
153
|
+
*/
|
|
154
|
+
async function isAnswerInputLost(error, client) {
|
|
143
155
|
if (!(error instanceof api_client_1.ApiError) || (error.statusCode ?? 0) < 500)
|
|
144
156
|
return false;
|
|
145
157
|
const payload = error.payload;
|
|
146
158
|
if (payload?.reason === exports.ANSWER_INPUT_LOST)
|
|
147
159
|
return true;
|
|
148
|
-
|
|
160
|
+
if (typeof payload?.error !== 'string' || !payload.error.includes(exports.ANSWER_INPUT_LOST))
|
|
161
|
+
return false;
|
|
162
|
+
return !(await (0, server_capabilities_1.serverReportsPromptAnswerReason)(client));
|
|
149
163
|
}
|
|
150
164
|
/**
|
|
151
|
-
*
|
|
152
|
-
*
|
|
153
|
-
*
|
|
165
|
+
* Reports an answer stopped part-way (Issue #3975) and sets the exit code. The
|
|
166
|
+
* `capture` reads the pane the answer was typed at (review P2-2): the target
|
|
167
|
+
* the answer resolved to, never the worktree default, and `--pane`, since the
|
|
168
|
+
* stored reply is not what was partly typed.
|
|
154
169
|
*/
|
|
155
|
-
function answeredPaneCaptureCommand(worktreeId, target) {
|
|
156
|
-
const selector = target.instanceId
|
|
157
|
-
? ` --instance ${target.instanceId}`
|
|
158
|
-
: target.agent
|
|
159
|
-
? ` --agent ${target.agent}`
|
|
160
|
-
: '';
|
|
161
|
-
return `commandmate capture ${worktreeId}${selector} --pane --tail 40`;
|
|
162
|
-
}
|
|
163
|
-
/** Reports an answer stopped part-way (Issue #3975) and sets the exit code. */
|
|
164
170
|
function reportAnswerInputLost(worktreeId, target) {
|
|
165
171
|
console.error(`Warning: The answer may have been only partly typed (reason: ${exports.ANSWER_INPUT_LOST}): the session was ` +
|
|
166
172
|
'replaced part-way, so some of its keys may have reached the agent and the rest did not. ' +
|
|
167
|
-
`Check the screen with \`${
|
|
173
|
+
`Check the screen with \`${(0, follow_up_command_1.dialogCaptureCommand)(worktreeId, target)}\` before answering again.`);
|
|
168
174
|
// The exit code `decision_not_delivered` uses (Issue #3975: no new code).
|
|
169
175
|
process.exit(types_1.ExitCode.UNEXPECTED_ERROR);
|
|
170
176
|
}
|
|
@@ -177,10 +183,6 @@ const PLAN_REVIEW_ACTIONS = ['comment', 'submit', 'approve', 'cancel'];
|
|
|
177
183
|
function isPlanReviewRefusal(reason) {
|
|
178
184
|
return reason.startsWith('plan_review_');
|
|
179
185
|
}
|
|
180
|
-
/** ` --instance <id>` as the caller spelled it, or nothing. */
|
|
181
|
-
function instanceFlag(instance) {
|
|
182
|
-
return instance ? ` --instance ${instance}` : '';
|
|
183
|
-
}
|
|
184
186
|
/**
|
|
185
187
|
* `textFollowUp` from a `/prompt-response` success (Issue #3093), read
|
|
186
188
|
* defensively: an older server omits it, and the route's mirror type is not
|
|
@@ -264,7 +266,7 @@ function buildPromptResponseBody(useDefault, answer, agent, instanceId, planRevi
|
|
|
264
266
|
return body;
|
|
265
267
|
}
|
|
266
268
|
/** Reports a `success: false` result and sets the exit code. */
|
|
267
|
-
function reportFailedResponse(result, worktreeId, answer, useDefault,
|
|
269
|
+
function reportFailedResponse(result, worktreeId, answer, useDefault, target) {
|
|
268
270
|
// [DR2-06] Check reason for failure
|
|
269
271
|
const reason = result.reason || 'unknown';
|
|
270
272
|
// Issue #1681 / #1726: these mean the server refused BEFORE sending,
|
|
@@ -308,9 +310,9 @@ function reportFailedResponse(result, worktreeId, answer, useDefault, options) {
|
|
|
308
310
|
// be mapped onto a choice", and only when the answer was not already
|
|
309
311
|
// a number (where the number itself is what was wrong).
|
|
310
312
|
if (reason === 'unresolvable_answer' && answer !== undefined && !/^\d+$/.test(answer.trim())) {
|
|
311
|
-
|
|
312
|
-
console.error(`Hint: answer with the option number —
|
|
313
|
-
`(
|
|
313
|
+
// Issue #3982: the resolved target, and the pane — where the numbers are.
|
|
314
|
+
console.error(`Hint: answer with the option number — \`${(0, follow_up_command_1.followUpCommand)('respond', worktreeId, target, '<number>')}\` ` +
|
|
315
|
+
`(\`${(0, follow_up_command_1.dialogCaptureCommand)(worktreeId, target)}\` prints the dialog and its numbers).`);
|
|
314
316
|
}
|
|
315
317
|
}
|
|
316
318
|
else {
|
|
@@ -322,7 +324,7 @@ function reportFailedResponse(result, worktreeId, answer, useDefault, options) {
|
|
|
322
324
|
if (reason === PROMPT_NO_LONGER_ACTIVE && !useDefault && answer !== undefined && !/^\d+$/.test(answer.trim())) {
|
|
323
325
|
console.error('Hint: no dialog is open, so this text was not delivered. If you just chose an option that asks ' +
|
|
324
326
|
'for text (e.g. "No, tell … what to do differently"), the agent is waiting for it in its input box — ' +
|
|
325
|
-
`send it with
|
|
327
|
+
`send it with \`${(0, follow_up_command_1.followUpCommand)('send', worktreeId, target, '"<text>"')}\`.`);
|
|
326
328
|
}
|
|
327
329
|
}
|
|
328
330
|
// Issue #1726: an option number the agent's own payload does not offer
|
|
@@ -334,15 +336,14 @@ function reportFailedResponse(result, worktreeId, answer, useDefault, options) {
|
|
|
334
336
|
* What was done on Command Code's plan review (Issue #3125), and the next step:
|
|
335
337
|
* a pinned comment is not delivered to the agent until the review is submitted.
|
|
336
338
|
*/
|
|
337
|
-
function printPlanReviewOutcome(result, worktreeId,
|
|
339
|
+
function printPlanReviewOutcome(result, worktreeId, target) {
|
|
338
340
|
const planReview = result.planReview;
|
|
339
341
|
if (!planReview)
|
|
340
342
|
return;
|
|
341
|
-
const target = instanceFlag(options.instance);
|
|
342
343
|
switch (planReview.action) {
|
|
343
344
|
case 'comment':
|
|
344
345
|
console.log(`Plan review: pinned comment "${planReview.comment ?? ''}".`);
|
|
345
|
-
console.error(`Next: send the review with
|
|
346
|
+
console.error(`Next: send the review with \`${(0, follow_up_command_1.followUpCommand)('respond', worktreeId, target, '--plan-review submit')}\` ` +
|
|
346
347
|
`(ctrl+r), or approve with \`--plan-review approve\` (comments go along as notes).`);
|
|
347
348
|
break;
|
|
348
349
|
case 'submit':
|
|
@@ -358,7 +359,7 @@ function printPlanReviewOutcome(result, worktreeId, options) {
|
|
|
358
359
|
console.log('Plan review: approved the plan (ctrl+a).');
|
|
359
360
|
if (planReview.pendingCommentsBefore > 0) {
|
|
360
361
|
console.error('Note: with pending comments Command Code may ask how to approve — confirm with ' +
|
|
361
|
-
|
|
362
|
+
`\`${(0, follow_up_command_1.followUpCommand)('respond', worktreeId, target, '--plan-review approve')}\` again, or go back with \`--plan-review cancel\`.`);
|
|
362
363
|
}
|
|
363
364
|
}
|
|
364
365
|
break;
|
|
@@ -465,8 +466,10 @@ Strict respond (--expect-screen <kind> --observation <token> <label>):
|
|
|
465
466
|
// and falls back to the worktree default, so `--instance codex` alone
|
|
466
467
|
// answered into a session that was never started. Resolve the tool the
|
|
467
468
|
// instance is registered under first.
|
|
468
|
-
const
|
|
469
|
+
const commandTarget = await (0, command_target_1.resolveCommandTarget)(client, worktreeId, options.instance, options.agent);
|
|
470
|
+
const { agent, instanceId } = commandTarget;
|
|
469
471
|
// Issue #2376: the resolved id. /prompt-response reads instance ids.
|
|
472
|
+
// Issue #3982: every hint below names `commandTarget`, never `options.instance`.
|
|
470
473
|
const body = buildPromptResponseBody(useDefault, answer, agent, instanceId, options.planReview);
|
|
471
474
|
// Issue #2040: for an agent that publishes per-decision ids (opencode
|
|
472
475
|
// today, and only opencode), a bare `respond <worktree> 3` names the ONE
|
|
@@ -503,18 +506,18 @@ Strict respond (--expect-screen <kind> --observation <token> <label>):
|
|
|
503
506
|
catch (error) {
|
|
504
507
|
// Issue #3975: stopped part-way is not "the server failed" — some
|
|
505
508
|
// keys may be on the pane, and the operator has to look first.
|
|
506
|
-
if (!isAnswerInputLost(error))
|
|
509
|
+
if (!(await isAnswerInputLost(error, client)))
|
|
507
510
|
throw error;
|
|
508
|
-
reportAnswerInputLost(worktreeId,
|
|
511
|
+
reportAnswerInputLost(worktreeId, commandTarget);
|
|
509
512
|
return;
|
|
510
513
|
}
|
|
511
514
|
}
|
|
512
515
|
if (result && !result.success) {
|
|
513
|
-
reportFailedResponse(result, worktreeId, answer, useDefault,
|
|
516
|
+
reportFailedResponse(result, worktreeId, answer, useDefault, commandTarget);
|
|
514
517
|
}
|
|
515
518
|
printResolvedAudit(result, answer);
|
|
516
519
|
if (result && 'planReview' in result)
|
|
517
|
-
printPlanReviewOutcome(result, worktreeId,
|
|
520
|
+
printPlanReviewOutcome(result, worktreeId, commandTarget);
|
|
518
521
|
console.error('Response sent.');
|
|
519
522
|
// Issue #3093: the option just chosen continues as typed text, which the
|
|
520
523
|
// dialog no longer takes — name the command that does deliver it.
|
|
@@ -522,7 +525,7 @@ Strict respond (--expect-screen <kind> --observation <token> <label>):
|
|
|
522
525
|
if (followUp) {
|
|
523
526
|
console.error(`Next: option ${followUp.optionNumber} ("${followUp.optionLabel}") asks for your text, and the dialog ` +
|
|
524
527
|
'is closed now, so `respond` cannot deliver it — send it with ' +
|
|
525
|
-
|
|
528
|
+
`\`${(0, follow_up_command_1.followUpCommand)('send', worktreeId, commandTarget, '"<text>"')}\`.`);
|
|
526
529
|
}
|
|
527
530
|
}
|
|
528
531
|
catch (error) {
|
|
@@ -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;AA4XpC,wBAAgB,iBAAiB,IAAI,OAAO,CAmK3C"}
|
|
@@ -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 follow_up_command_1 = require("../utils/follow-up-command");
|
|
19
20
|
const auto_yes_1 = require("./auto-yes");
|
|
20
21
|
const relays_1 = require("./relays");
|
|
21
22
|
const message_dispatch_1 = require("./message-dispatch");
|
|
@@ -34,9 +35,10 @@ const SEND_VERIFIED_MAX_LINES = 240;
|
|
|
34
35
|
* older daemon, or a truncated body. The code is the contract; the sentence is
|
|
35
36
|
* a courtesy, and the CLI must still say what to do without it.
|
|
36
37
|
*/
|
|
37
|
-
function promptWaitingFallback(worktreeId) {
|
|
38
|
+
function promptWaitingFallback(worktreeId, target) {
|
|
38
39
|
return (`${worktreeId} is waiting on a prompt; the message was not sent. ` +
|
|
39
|
-
|
|
40
|
+
// Issue #3982: the prompt is the resolved target's, not the worktree default's.
|
|
41
|
+
`Answer it first: \`${(0, follow_up_command_1.followUpCommand)('respond', worktreeId, target, '<answer>')}\`.`);
|
|
40
42
|
}
|
|
41
43
|
/**
|
|
42
44
|
* Resolve --duration to milliseconds, exiting on an invalid value.
|
|
@@ -349,7 +351,8 @@ worktree and send a short message that tells the agent to read that file.
|
|
|
349
351
|
// the roster is the only place that pairs the two. Resolve it once, up
|
|
350
352
|
// front, so the task row, the send and auto-yes all name the same tool
|
|
351
353
|
// as the session that actually starts.
|
|
352
|
-
const
|
|
354
|
+
const commandTarget = await (0, command_target_1.resolveCommandTarget)(client, worktreeId, options.instance, options.agent);
|
|
355
|
+
const { agent, instanceId } = commandTarget;
|
|
353
356
|
// Issue #2376: the RESOLVED id, never the string the user typed.
|
|
354
357
|
// `--instance "Codex 2"` has to reach /send as `codex-2`; no route but
|
|
355
358
|
// /resolve-target knows how to read an alias.
|
|
@@ -426,7 +429,8 @@ worktree and send a short message that tells the agent to read that file.
|
|
|
426
429
|
await (0, message_dispatch_1.postMessage)(client, worktreeId, sendBody, {
|
|
427
430
|
relay,
|
|
428
431
|
onFailure: failTask,
|
|
429
|
-
promptWaitingFallback: promptWaitingFallback(worktreeId),
|
|
432
|
+
promptWaitingFallback: promptWaitingFallback(worktreeId, commandTarget),
|
|
433
|
+
target: commandTarget,
|
|
430
434
|
});
|
|
431
435
|
console.error('Message sent.');
|
|
432
436
|
if (taskId) {
|
|
@@ -3,7 +3,8 @@
|
|
|
3
3
|
* Issue #3964: split out of wait.ts.
|
|
4
4
|
*/
|
|
5
5
|
import type { WaitOptions } from '../types';
|
|
6
|
-
import type
|
|
6
|
+
import { type ApiClient } from '../utils/api-client';
|
|
7
|
+
import { type CommandTarget } from './command-target';
|
|
7
8
|
/**
|
|
8
9
|
* `options` with `--instance` resolved from a selector to an instance ID
|
|
9
10
|
* (Issue #2376).
|
|
@@ -18,4 +19,11 @@ import type { ApiClient } from '../utils/api-client';
|
|
|
18
19
|
* @param options - The options as given
|
|
19
20
|
*/
|
|
20
21
|
export declare function resolveWaitInstance<T extends WaitOptions>(client: ApiClient, worktreeId: string, options: T): Promise<T>;
|
|
22
|
+
/**
|
|
23
|
+
* The target `wait`'s hints name (Issue #3982): the `--instance` that
|
|
24
|
+
* {@link resolveWaitInstance} resolved, or none. `wait` has no `--agent`.
|
|
25
|
+
*
|
|
26
|
+
* @param options - Options already passed through {@link resolveWaitInstance}
|
|
27
|
+
*/
|
|
28
|
+
export declare function waitCommandTarget(options: Pick<WaitOptions, 'instance'>): CommandTarget;
|
|
21
29
|
//# sourceMappingURL=wait-instance.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wait-instance.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/wait-instance.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"wait-instance.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/wait-instance.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EAA6B,KAAK,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAEhF,OAAO,EAAmB,KAAK,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEvE;;;;;;;;;;;;GAYG;AACH,wBAAsB,mBAAmB,CAAC,CAAC,SAAS,WAAW,EAC7D,MAAM,EAAE,SAAS,EACjB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,CAAC,GACT,OAAO,CAAC,CAAC,CAAC,CAqBZ;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,GAAG,aAAa,CAKvF"}
|
|
@@ -5,8 +5,11 @@
|
|
|
5
5
|
*/
|
|
6
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
7
|
exports.resolveWaitInstance = resolveWaitInstance;
|
|
8
|
+
exports.waitCommandTarget = waitCommandTarget;
|
|
8
9
|
const types_1 = require("../types");
|
|
10
|
+
const api_client_1 = require("../utils/api-client");
|
|
9
11
|
const instances_1 = require("./instances");
|
|
12
|
+
const command_target_1 = require("./command-target");
|
|
10
13
|
/**
|
|
11
14
|
* `options` with `--instance` resolved from a selector to an instance ID
|
|
12
15
|
* (Issue #2376).
|
|
@@ -28,6 +31,9 @@ async function resolveWaitInstance(client, worktreeId, options) {
|
|
|
28
31
|
return { ...options, instance: target.instanceId ?? options.instance };
|
|
29
32
|
}
|
|
30
33
|
catch (error) {
|
|
34
|
+
// Issue #3983: `--timeout` ran out while resolving. Exit 124 rather than
|
|
35
|
+
// degrade: carrying on with the selector would wait past the deadline.
|
|
36
|
+
(0, api_client_1.rethrowIfDeadlineExceeded)(error);
|
|
31
37
|
// Degrade to the pre-#2376 behaviour rather than failing the wait. An
|
|
32
38
|
// instance ID needs no resolution to reach `/current-output?instance=` —
|
|
33
39
|
// resolution exists here so that an ALIAS can — so a resolver that cannot
|
|
@@ -39,3 +45,12 @@ async function resolveWaitInstance(client, worktreeId, options) {
|
|
|
39
45
|
return options;
|
|
40
46
|
}
|
|
41
47
|
}
|
|
48
|
+
/**
|
|
49
|
+
* The target `wait`'s hints name (Issue #3982): the `--instance` that
|
|
50
|
+
* {@link resolveWaitInstance} resolved, or none. `wait` has no `--agent`.
|
|
51
|
+
*
|
|
52
|
+
* @param options - Options already passed through {@link resolveWaitInstance}
|
|
53
|
+
*/
|
|
54
|
+
function waitCommandTarget(options) {
|
|
55
|
+
return (0, command_target_1.commandTargetOf)(options.instance ? { cliToolId: undefined, instanceId: options.instance } : null, undefined);
|
|
56
|
+
}
|
|
@@ -39,6 +39,14 @@ export interface PollWorktreeOptions extends WaitOptions {
|
|
|
39
39
|
* record, read only: nothing `wait` decides depends on it.
|
|
40
40
|
*/
|
|
41
41
|
onTurnRecord?: (openedAt: number | null, closedAt: number | null) => void;
|
|
42
|
+
/**
|
|
43
|
+
* Epoch ms the command started, from which `--timeout` counts (Issue #3983).
|
|
44
|
+
*
|
|
45
|
+
* `--timeout` is the deadline of the whole command, so the reads before the
|
|
46
|
+
* poll (`--instance` resolution, the task ledger, `ask`'s send) are inside it
|
|
47
|
+
* rather than in front of it. Absent means the poll's own start, as before.
|
|
48
|
+
*/
|
|
49
|
+
timeoutStartedAt?: number;
|
|
42
50
|
}
|
|
43
51
|
/**
|
|
44
52
|
* What {@link pollWorktree} carries from one poll to the next: every variable its
|
|
@@ -111,7 +119,17 @@ export interface PollContext {
|
|
|
111
119
|
client: ApiClient;
|
|
112
120
|
worktreeId: string;
|
|
113
121
|
options: PollWorktreeOptions;
|
|
122
|
+
/**
|
|
123
|
+
* Where `--timeout` counts from: {@link PollWorktreeOptions.timeoutStartedAt}
|
|
124
|
+
* when given, else {@link pollStartedAt} (Issue #3983).
|
|
125
|
+
*/
|
|
114
126
|
startTime: number;
|
|
127
|
+
/**
|
|
128
|
+
* When this poll began. The turn window (turn adoption, #1975's pending-prompt
|
|
129
|
+
* hold) is about the poll, not about the command, and stays here so that a
|
|
130
|
+
* slow send before an `ask`'s poll does not shift it (Issue #3983).
|
|
131
|
+
*/
|
|
132
|
+
pollStartedAt: number;
|
|
115
133
|
autoYesGraceSeconds: number;
|
|
116
134
|
autoYesGraceMs: number;
|
|
117
135
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wait-poll-state.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/wait-poll-state.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAErD;;;GAGG;AACH,MAAM,WAAW,mBAAoB,SAAQ,WAAW;IACtD;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;;;;;;;;;OAWG;IACH,WAAW,CAAC,EAAE,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IAC9E;;;;;;;;;OASG;IACH,YAAY,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"wait-poll-state.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/wait-poll-state.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAErD;;;GAGG;AACH,MAAM,WAAW,mBAAoB,SAAQ,WAAW;IACtD;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;;;;;;;;;OAWG;IACH,WAAW,CAAC,EAAE,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IAC9E;;;;;;;;;OASG;IACH,YAAY,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IAC1E;;;;;;OAMG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED;;;GAGG;AACH,MAAM,WAAW,SAAS;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB;;;;;;OAMG;IACH,WAAW,EAAE,OAAO,CAAC;IACrB;;;;OAIG;IACH,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC;;;;OAIG;IACH,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B;;;;;OAKG;IACH,oBAAoB,EAAE,OAAO,CAAC;IAC9B;;;;;OAKG;IACH,qBAAqB,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC;;;OAGG;IACH,cAAc,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IACzD,qFAAqF;IACrF,gBAAgB,EAAE,MAAM,CAAC;IACzB,8EAA8E;IAC9E,cAAc,EAAE,OAAO,CAAC;IACxB;;;;OAIG;IACH,cAAc,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;CAC5D;AAED;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,SAAS,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,mBAAmB,CAAC;IAC7B;;;OAGG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB;;;;OAIG;IACH,aAAa,EAAE,MAAM,CAAC;IACtB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,cAAc,EAAE,MAAM,CAAC;CACxB"}
|
|
@@ -28,7 +28,8 @@ export declare function shouldVerify(exitCode: number, options: WaitOptions): bo
|
|
|
28
28
|
* run that follows is judged against the contract it was supposed to judge.
|
|
29
29
|
*
|
|
30
30
|
* Never throws: an unreadable ledger costs the attribution, and refusing to
|
|
31
|
-
* verify over it would cost every gate.
|
|
31
|
+
* verify over it would cost every gate. The one exception is a client deadline
|
|
32
|
+
* (`--timeout`, Issue #3983), which is rethrown as the exit 124 it is.
|
|
32
33
|
*
|
|
33
34
|
* @returns the task id, or undefined to leave resolution to the server
|
|
34
35
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wait-verify.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/wait-verify.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAE5C,OAAO,EAAE,SAAS,
|
|
1
|
+
{"version":3,"file":"wait-verify.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/wait-verify.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAE5C,OAAO,EAAE,SAAS,EAAuC,MAAM,qBAAqB,CAAC;AAGrF,gFAAgF;AAChF,wBAAgB,eAAe,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAE7D;AAED;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAG5E;AAgBD;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,SAAS,EACjB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAmB7B;AAED;;;;;GAKG;AACH,wBAAsB,eAAe,CACnC,MAAM,EAAE,SAAS,EACjB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,WAAW,EACpB,MAAM,EAAE,MAAM,GAAG,SAAS,GACzB,OAAO,CAAC,MAAM,CAAC,CAyBjB;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CASxE"}
|
|
@@ -55,7 +55,8 @@ const IN_FLIGHT_TASK_STATUSES = new Set([
|
|
|
55
55
|
* run that follows is judged against the contract it was supposed to judge.
|
|
56
56
|
*
|
|
57
57
|
* Never throws: an unreadable ledger costs the attribution, and refusing to
|
|
58
|
-
* verify over it would cost every gate.
|
|
58
|
+
* verify over it would cost every gate. The one exception is a client deadline
|
|
59
|
+
* (`--timeout`, Issue #3983), which is rethrown as the exit 124 it is.
|
|
59
60
|
*
|
|
60
61
|
* @returns the task id, or undefined to leave resolution to the server
|
|
61
62
|
*/
|
|
@@ -68,6 +69,9 @@ async function resolveWaitedTaskId(client, worktreeId) {
|
|
|
68
69
|
return task.id;
|
|
69
70
|
}
|
|
70
71
|
catch (error) {
|
|
72
|
+
// Issue #3983: `--timeout` ran out before the poll began — exit 124, and
|
|
73
|
+
// nothing after it (no poll, no verification) runs.
|
|
74
|
+
(0, api_client_1.rethrowIfDeadlineExceeded)(error);
|
|
71
75
|
console.error(`Note: could not read the task ledger for ${worktreeId} ` +
|
|
72
76
|
`(${error instanceof Error ? error.message : String(error)}); ` +
|
|
73
77
|
'verification will resolve its own task.');
|
|
@@ -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;AAGpC,OAAO,KAAK,EAIV,gBAAgB,EACjB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,SAAS,EAA+B,MAAM,qBAAqB,CAAC;AA2C7E,OAAO,KAAK,EAA0B,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;
|
|
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;AAGpC,OAAO,KAAK,EAIV,gBAAgB,EACjB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,SAAS,EAA+B,MAAM,qBAAqB,CAAC;AA2C7E,OAAO,KAAK,EAA0B,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAkBrF,OAAO,EAAE,0BAA0B,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EACL,sBAAsB,EACtB,mBAAmB,EACnB,0BAA0B,EAC1B,wBAAwB,GACzB,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,EACL,4BAA4B,EAC5B,uBAAuB,EACvB,uBAAuB,GACxB,MAAM,yBAAyB,CAAC;AAo8BjC;;;;;;;;;;;;;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,CAkKD;AAED,wBAAgB,iBAAiB,IAAI,OAAO,CA8N3C"}
|
|
@@ -39,6 +39,7 @@ const wait_turn_boundary_1 = require("./wait-turn-boundary");
|
|
|
39
39
|
const wait_hook_stop_settle_1 = require("./wait-hook-stop-settle");
|
|
40
40
|
const wait_verify_1 = require("./wait-verify");
|
|
41
41
|
const wait_instance_1 = require("./wait-instance");
|
|
42
|
+
const follow_up_command_1 = require("../utils/follow-up-command");
|
|
42
43
|
const wait_poll_bookkeeping_1 = require("./wait-poll-bookkeeping");
|
|
43
44
|
// Issue #3964: the split-out modules' exports, re-exported so every import of
|
|
44
45
|
// `./wait` keeps working.
|
|
@@ -220,12 +221,13 @@ function buildSelectionListOutput(worktreeId, data) {
|
|
|
220
221
|
* What `wait` says about a frame that stayed unclassified for the whole dwell
|
|
221
222
|
* (Issue #1708): the stderr line, and the `question` of its exit-10 payload.
|
|
222
223
|
*/
|
|
223
|
-
function describeUnclassifiedFrame(worktreeId, data, dwellMs) {
|
|
224
|
+
function describeUnclassifiedFrame(worktreeId, data, dwellMs, options) {
|
|
224
225
|
const dwellSeconds = Math.round(dwellMs / 1000);
|
|
225
226
|
return (`Unclassified interactive frame on ${worktreeId} for ${dwellSeconds}s ` +
|
|
226
227
|
`(status=${data.sessionStatus ?? 'unknown'}/${data.sessionStatusReason ?? 'unknown'}). ` +
|
|
227
228
|
`The detection layer could not parse it; inspect the raw pane with ` +
|
|
228
|
-
|
|
229
|
+
// Issue #3982: the instance waited on, and enough of its pane for a dialog.
|
|
230
|
+
`\`${(0, follow_up_command_1.dialogCaptureCommand)(worktreeId, (0, wait_instance_1.waitCommandTarget)(options))}\`.` +
|
|
229
231
|
// Issue #2095: the sidebar is exactly this frame's reason, and the
|
|
230
232
|
// one recovery is a keystroke in the pane. Riding the message keeps
|
|
231
233
|
// the exit-code table (10, `type: unclassified`) unchanged for every
|
|
@@ -467,7 +469,7 @@ function unclassifiedStage(poll, state, data) {
|
|
|
467
469
|
state.unclassifiedSince = Date.now();
|
|
468
470
|
const dwellMs = Date.now() - state.unclassifiedSince;
|
|
469
471
|
if (dwellMs >= UNCLASSIFIED_DWELL_MS) {
|
|
470
|
-
const question = describeUnclassifiedFrame(worktreeId, data, dwellMs);
|
|
472
|
+
const question = describeUnclassifiedFrame(worktreeId, data, dwellMs, poll.options);
|
|
471
473
|
// Issue #3730: why Auto-Yes is not there to answer it, if a restart is why.
|
|
472
474
|
const restartNotice = (0, wait_notices_1.formatRestartReleaseNotice)(worktreeId, data, poll.options.instance);
|
|
473
475
|
if (options.onPrompt === 'human') {
|
|
@@ -668,7 +670,7 @@ async function unsettledTurnStage(poll, state, data, judgingSettledFrame) {
|
|
|
668
670
|
`the end of this turn (turnStartedAt=${state.turnStartedAt}, ` +
|
|
669
671
|
`lastStopEventAt=${data.lastStopEventAt ?? 'none'}, ${(0, wait_turn_boundary_1.describeTurnClose)(data)}). ` +
|
|
670
672
|
'Not reporting completion; inspect with ' +
|
|
671
|
-
|
|
673
|
+
`\`${(0, follow_up_command_1.followUpCommand)('capture', worktreeId, (0, wait_instance_1.waitCommandTarget)(poll.options), undefined, '--json')}\`.`);
|
|
672
674
|
return { kind: 'wait' };
|
|
673
675
|
}
|
|
674
676
|
return { kind: 'next' };
|
|
@@ -721,7 +723,7 @@ function selfResumeHoldStage(poll, state, data, selfResumeStopAt) {
|
|
|
721
723
|
* {@link completionStage} needs for its basis.
|
|
722
724
|
*/
|
|
723
725
|
async function promptLedgerStage(poll, state, data, judgingSettledFrame) {
|
|
724
|
-
const { worktreeId,
|
|
726
|
+
const { worktreeId, pollStartedAt } = poll;
|
|
725
727
|
// Issue #1975: the same frame, one question further back. #1839's gate
|
|
726
728
|
// above can only fire once a turn has been ADOPTED, and `send` leaves a
|
|
727
729
|
// window ~1s wide in which nothing has been: the newest structured event
|
|
@@ -747,7 +749,7 @@ async function promptLedgerStage(poll, state, data, judgingSettledFrame) {
|
|
|
747
749
|
state.promptLedgerReadable = ledger.readable;
|
|
748
750
|
if (ledger.readable && ledger.submittedAt !== null) {
|
|
749
751
|
if ((0, wait_turn_boundary_1.outstandingPrompt)(data, ledger.submittedAt)) {
|
|
750
|
-
const heldMs = Date.now() -
|
|
752
|
+
const heldMs = Date.now() - pollStartedAt;
|
|
751
753
|
if (heldMs < wait_turn_boundary_1.PENDING_PROMPT_HOLD_MS) {
|
|
752
754
|
console.error(`Waiting: ${worktreeId} is at its composer, but the newest prompt sent to it ` +
|
|
753
755
|
`has no reported end (sentAt=${new Date(ledger.submittedAt).toISOString()}, ` +
|
|
@@ -855,7 +857,10 @@ async function readyStage(poll, state, data, selfResumeStopAt, selfResumeSuffix,
|
|
|
855
857
|
* {@link resolveWaitInstance}.
|
|
856
858
|
*/
|
|
857
859
|
async function pollWorktree(client, worktreeId, options) {
|
|
858
|
-
const
|
|
860
|
+
const pollStartedAt = Date.now();
|
|
861
|
+
// Issue #3983: `--timeout` counts from the command's start when the caller
|
|
862
|
+
// passed it, so the reads before this poll are inside the deadline.
|
|
863
|
+
const startTime = options.timeoutStartedAt ?? pollStartedAt;
|
|
859
864
|
const state = {
|
|
860
865
|
lastActivityTime: Date.now(),
|
|
861
866
|
lastContent: '',
|
|
@@ -871,7 +876,15 @@ async function pollWorktree(client, worktreeId, options) {
|
|
|
871
876
|
};
|
|
872
877
|
const autoYesGraceSeconds = options.autoYesGrace ?? AUTO_YES_GRACE_DEFAULT_SECONDS;
|
|
873
878
|
const autoYesGraceMs = autoYesGraceSeconds * 1000;
|
|
874
|
-
const poll = {
|
|
879
|
+
const poll = {
|
|
880
|
+
client,
|
|
881
|
+
worktreeId,
|
|
882
|
+
options,
|
|
883
|
+
startTime,
|
|
884
|
+
pollStartedAt,
|
|
885
|
+
autoYesGraceSeconds,
|
|
886
|
+
autoYesGraceMs,
|
|
887
|
+
};
|
|
875
888
|
/**
|
|
876
889
|
* What the completion line adds when this wait held for a self-resume, or ''
|
|
877
890
|
* (Issue #2614). `basis=` keeps its word: the verdict is still the agent's own
|
|
@@ -922,7 +935,7 @@ async function pollWorktree(client, worktreeId, options) {
|
|
|
922
935
|
await (0, wait_timing_1.sleep)(wait_timing_1.POLL_INTERVAL_MS);
|
|
923
936
|
continue;
|
|
924
937
|
}
|
|
925
|
-
(0, wait_poll_bookkeeping_1.adoptAndPublishTurn)(state, data,
|
|
938
|
+
(0, wait_poll_bookkeeping_1.adoptAndPublishTurn)(state, data, pollStartedAt, options);
|
|
926
939
|
// Issue #2614: a self-resume hold is about one `stop`, and ends the first
|
|
927
940
|
// time that `stop` is no longer the newest word — the agent woke (a
|
|
928
941
|
// turn-opening event) or stopped again. Checked on every poll, ahead of
|
|
@@ -1086,6 +1099,9 @@ The observation on exit 10 (Issue #3755):
|
|
|
1086
1099
|
a missing record does not mean Auto-Yes can answer.
|
|
1087
1100
|
`)
|
|
1088
1101
|
.action(async (worktreeIds, options) => {
|
|
1102
|
+
// Issue #3983: `--timeout` is the deadline of the whole command, counted
|
|
1103
|
+
// from here — the reads before the poll included.
|
|
1104
|
+
const commandStartedAt = Date.now();
|
|
1089
1105
|
try {
|
|
1090
1106
|
// [SEC4-04] Validate all worktree IDs
|
|
1091
1107
|
for (const id of worktreeIds) {
|
|
@@ -1108,20 +1124,28 @@ The observation on exit 10 (Issue #3755):
|
|
|
1108
1124
|
return;
|
|
1109
1125
|
}
|
|
1110
1126
|
const client = new api_client_1.ApiClient({ token: options.token });
|
|
1127
|
+
// Issue #3983: the reads before the poll go through a client bounded by
|
|
1128
|
+
// `--timeout`; one that runs out ends the command with 124 before any
|
|
1129
|
+
// poll or verification. The poll bounds its own reads by the same
|
|
1130
|
+
// clock (`timeoutStartedAt`), and verification — after the wait, and
|
|
1131
|
+
// not part of it — keeps the unbounded `client`.
|
|
1132
|
+
const timeoutStartedAt = options.timeout ? commandStartedAt : undefined;
|
|
1133
|
+
const preflightClient = client.withDeadline(options.timeout ? commandStartedAt + options.timeout * 1000 : undefined);
|
|
1134
|
+
const pollOptions = (resolved) => timeoutStartedAt === undefined ? resolved : { ...resolved, timeoutStartedAt };
|
|
1111
1135
|
// Issue #2376: resolve the selector PER worktree. `wait a b --instance
|
|
1112
1136
|
// "Codex 2"` is one alias against two rosters, and the id behind it can
|
|
1113
1137
|
// legitimately differ — resolving once and reusing the answer would poll
|
|
1114
1138
|
// the wrong session on the second worktree.
|
|
1115
|
-
const perWorktreeOptions = await Promise.all(worktreeIds.map(id => (0, wait_instance_1.resolveWaitInstance)(
|
|
1139
|
+
const perWorktreeOptions = await Promise.all(worktreeIds.map(id => (0, wait_instance_1.resolveWaitInstance)(preflightClient, id, options)));
|
|
1116
1140
|
// Issue #1620: resolved before any polling starts. Once the agent stops
|
|
1117
1141
|
// there is no reliable way left to tell which contract this wait was
|
|
1118
1142
|
// about — the agent's own verification may have closed it by then.
|
|
1119
1143
|
const boundTaskIds = (0, wait_verify_1.verifyRequested)(options)
|
|
1120
|
-
? await Promise.all(worktreeIds.map(id => (0, wait_verify_1.resolveWaitedTaskId)(
|
|
1144
|
+
? await Promise.all(worktreeIds.map(id => (0, wait_verify_1.resolveWaitedTaskId)(preflightClient, id)))
|
|
1121
1145
|
: worktreeIds.map(() => undefined);
|
|
1122
1146
|
if (worktreeIds.length === 1) {
|
|
1123
1147
|
// Single worktree
|
|
1124
|
-
const result = await pollWorktree(client, worktreeIds[0], perWorktreeOptions[0]);
|
|
1148
|
+
const result = await pollWorktree(client, worktreeIds[0], pollOptions(perWorktreeOptions[0]));
|
|
1125
1149
|
if (result.output) {
|
|
1126
1150
|
// stdout for result (JSON output)
|
|
1127
1151
|
console.log(JSON.stringify(result.output));
|
|
@@ -1135,7 +1159,7 @@ The observation on exit 10 (Issue #3755):
|
|
|
1135
1159
|
return;
|
|
1136
1160
|
}
|
|
1137
1161
|
// [DR1-07] Multiple worktrees: Promise.allSettled for error isolation
|
|
1138
|
-
const results = await Promise.allSettled(worktreeIds.map((id, index) => pollWorktree(client, id, perWorktreeOptions[index])));
|
|
1162
|
+
const results = await Promise.allSettled(worktreeIds.map((id, index) => pollWorktree(client, id, pollOptions(perWorktreeOptions[index]))));
|
|
1139
1163
|
// Collect results
|
|
1140
1164
|
const outputs = [];
|
|
1141
1165
|
let finalExitCode = types_1.WaitExitCode.SUCCESS;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"whoami.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/whoami.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AAGH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,EAAE,aAAa,EAAsC,MAAM,wBAAwB,CAAC;AAChG,OAAO,EAAE,SAAS,
|
|
1
|
+
{"version":3,"file":"whoami.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/whoami.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AAGH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,EAAE,aAAa,EAAsC,MAAM,wBAAwB,CAAC;AAChG,OAAO,EAAE,SAAS,EAA6B,MAAM,qBAAqB,CAAC;AAM3E;;;;;;;;;GASG;AACH,eAAO,MAAM,cAAc,IAAI,CAAC;AAOhC,kFAAkF;AAClF,MAAM,MAAM,cAAc,GAAG,KAAK,GAAG,cAAc,CAAC;AAEpD,qDAAqD;AACrD,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,8EAA8E;IAC9E,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,cAAc,CAAC;IACvB,uFAAuF;IACvF,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B;;;;;;;;;OASG;IACH,gBAAgB,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;CACvC;AAED;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,uFAAuF;IACvF,UAAU,EAAE,MAAM,CAAC;IACnB,kFAAkF;IAClF,SAAS,EAAE,MAAM,CAAC;IAClB,+EAA+E;IAC/E,MAAM,EAAE,cAAc,CAAC;CACxB;AAcD;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CACjC,GAAG,GAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAe,GAC9D,MAAM,GAAG,IAAI,CASf;AAoDD;;;;;;GAMG;AACH,wBAAsB,sBAAsB,CAC1C,MAAM,EAAE,SAAS,EACjB,GAAG,GAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAe,GAC9D,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CAqCjC;AAMD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,eAAe,EACzB,gBAAgB,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,IAAI,GAAG,SAAS,EAChD,SAAS,EAAE,MAAM,GAChB,cAAc,GAAG,IAAI,CAIvB;AASD;;;;;;GAMG;AACH,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,cAAc,GAAG,MAAM,CAS5E;AAED,mFAAmF;AACnF,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,cAAc,GAAG,MAAM,CAMzE;AAED;;;;;;;;;GASG;AACH,wBAAsB,sBAAsB,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAY9F;AAED;;;;;GAKG;AACH,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,SAAS,EACjB,QAAQ,EAAE,eAAe,GACxB,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAO/B;AAED,iEAAiE;AACjE,eAAO,MAAM,sBAAsB,QAMmC,CAAC;AAEvE,wBAAgB,mBAAmB,IAAI,OAAO,CA6D7C"}
|
|
@@ -111,7 +111,9 @@ async function readWorktreeIds(client) {
|
|
|
111
111
|
const response = await client.get('/api/worktrees');
|
|
112
112
|
return new Set((response.worktrees ?? []).map((wt) => wt.id));
|
|
113
113
|
}
|
|
114
|
-
catch {
|
|
114
|
+
catch (error) {
|
|
115
|
+
// Issue #3983: a command deadline is not "no list" — it stays exit 124.
|
|
116
|
+
(0, api_client_1.rethrowIfDeadlineExceeded)(error);
|
|
115
117
|
return null;
|
|
116
118
|
}
|
|
117
119
|
}
|