commandmate 0.49.0 → 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 +251 -248
- package/.next/app-path-routes-manifest.json +22 -21
- package/.next/build-manifest.json +2 -2
- package/.next/prerender-manifest.json +9 -9
- 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_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.js +1 -0
- package/.next/server/app/api/relays/[relayId]/route.js.nft.json +1 -0
- package/.next/server/app/api/relays/[relayId]/route_client-reference-manifest.js +1 -0
- 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 +144 -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.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 +103 -1
- package/.next/server/app/api/worktrees/[id]/terminal/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/terminal/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/timers/history/route.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.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/1062.js +1 -0
- package/.next/server/chunks/{936.js → 110.js} +1 -1
- 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/2404.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/{4280.js → 3756.js} +1 -1
- package/.next/server/chunks/3801.js +31 -0
- 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/{9130.js → 5630.js} +1 -1
- package/.next/server/chunks/610.js +1 -0
- package/.next/server/chunks/6119.js +1 -1
- package/.next/server/chunks/6130.js +1 -1
- package/.next/server/chunks/6401.js +1 -1
- package/.next/server/chunks/6486.js +1 -1
- package/.next/server/chunks/6781.js +1 -1
- package/.next/server/chunks/6808.js +4 -0
- package/.next/server/chunks/7023.js +14 -0
- package/.next/server/chunks/7905.js +1 -1
- package/.next/server/chunks/8581.js +8 -8
- package/.next/server/chunks/8728.js +2 -2
- package/.next/server/chunks/8782.js +1 -1
- package/.next/server/chunks/8807.js +63 -53
- package/.next/server/chunks/8918.js +103 -1
- package/.next/server/chunks/9198.js +144 -0
- package/.next/server/chunks/9390.js +1 -1
- package/.next/server/chunks/9584.js +1 -1
- package/.next/server/chunks/9627.js +1 -1
- package/.next/server/chunks/9731.js +3 -3
- 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-ab92ae9837c39dce.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/api/agents/update/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/agents/versions/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/app/release-notes/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/app/update/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/app/update-check/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/auth/login/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/auth/logout/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/auth/status/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/capabilities/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/daily-summary/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/daily-summary/status/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/external-apps/[id]/health/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/external-apps/[id]/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/external-apps/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/fs/browse/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/fs/recent-paths/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/hooks/agent-event/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/hooks/claude-done/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/hooks/permission-request/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/metrics/vibe/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/ollama/models/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/push/escalation/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/push/subscriptions/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/push/vapid/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/relays/[relayId]/cancel/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/relays/[relayId]/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/relays/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/remote/pair/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/repositories/[id]/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/repositories/clone/[jobId]/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/repositories/clone/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/repositories/excluded/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/repositories/restore/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/repositories/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/repositories/scan/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/repositories/sync/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/repositories/validate-path/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/settings/default-agents/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/settings/default-surface-mode/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/sidebar/group-order/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/skills/[id]/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/skills/installations/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/skills/operations/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/skills/reindex/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/skills/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/slash-commands/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/tasks/[taskId]/cancel/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/tasks/[taskId]/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/templates/[id]/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/templates/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/verification/runs/[runId]/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/verification/runs/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/auto-yes/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/capture/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/clear-composer/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/cli-reference/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/cli-tool/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/cmate/schedules/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/current-output/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/direct-input/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/env/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/[logId]/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/files/[...path]/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/branch/create/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/branch/delete/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/branches/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/checkout/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/commit/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/diff/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/fetch/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/log/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/pull/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/push/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/reset/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/revert/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/show/[commitHash]/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/stage/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/staged/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/[index]/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/apply/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/pop/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/push/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/status/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/unstage/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/git/working-diff/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/instances/notes/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/instances/opencode/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/interrupt/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/kill-session/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/logs/[filename]/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/logs/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/marp-render/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/memos/[memoId]/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/memos/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/messages/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/opencode/diff/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/opencode/session/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/opencode/share/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/prompt-response/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/prompt-response/strict/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/resolve-target/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/respond/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/schedules/[scheduleId]/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/schedules/active/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/schedules/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/search/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/send/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/install/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/plan/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update-plan/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/skills/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/slash-commands/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/special-keys/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/tasks/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/terminal/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/timers/history/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/timers/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/todos/[todoId]/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/todos/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/tree/[...path]/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/tree/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/upload/[...path]/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/verify/config/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/verify/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/[runId]/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/[id]/viewed/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/apply-default-agents/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/api/worktrees/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/layout-4f64316957b0a8e5.js +1 -0
- package/.next/static/chunks/app/manifest.webmanifest/route-a4f129c451de7859.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/proxy/[...path]/route-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/review/page-ff3efb96fdf9bb4b.js +1 -0
- package/.next/static/chunks/app/sessions/page-c6eb7c02db2f4c80.js +1 -0
- package/.next/static/chunks/app/worktrees/[id]/layout-a4f129c451de7859.js +1 -0
- package/.next/static/chunks/app/worktrees/[id]/page-33afc6aa96289fb0.js +1 -0
- package/.next/static/css/c1e307d05daf93b6.css +1 -0
- package/.next/trace +13 -13
- package/.next/types/app/api/relays/[relayId]/route.ts +347 -0
- package/.next/types/routes.d.ts +2 -1
- package/.next/types/validator.ts +9 -0
- package/dist/cli/commands/ask.d.ts.map +1 -1
- package/dist/cli/commands/ask.js +233 -17
- 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 +39 -5
- package/dist/cli/commands/message-dispatch.d.ts.map +1 -1
- package/dist/cli/commands/message-dispatch.js +100 -8
- package/dist/cli/commands/relays.d.ts +26 -2
- package/dist/cli/commands/relays.d.ts.map +1 -1
- package/dist/cli/commands/relays.js +70 -5
- 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 +12 -0
- package/dist/cli/commands/respond.d.ts.map +1 -1
- package/dist/cli/commands/respond.js +83 -18
- package/dist/cli/commands/send.d.ts.map +1 -1
- package/dist/cli/commands/send.js +14 -8
- package/dist/cli/commands/wait-hook-stop-settle.d.ts +66 -0
- package/dist/cli/commands/wait-hook-stop-settle.d.ts.map +1 -0
- package/dist/cli/commands/wait-hook-stop-settle.js +150 -0
- package/dist/cli/commands/wait-instance.d.ts +29 -0
- package/dist/cli/commands/wait-instance.d.ts.map +1 -0
- package/dist/cli/commands/wait-instance.js +56 -0
- package/dist/cli/commands/wait-notices.d.ts +87 -0
- package/dist/cli/commands/wait-notices.d.ts.map +1 -0
- package/dist/cli/commands/wait-notices.js +301 -0
- package/dist/cli/commands/wait-poll-bookkeeping.d.ts +15 -0
- package/dist/cli/commands/wait-poll-bookkeeping.d.ts.map +1 -0
- package/dist/cli/commands/wait-poll-bookkeeping.js +57 -0
- package/dist/cli/commands/wait-poll-state.d.ts +136 -0
- package/dist/cli/commands/wait-poll-state.d.ts.map +1 -0
- package/dist/cli/commands/wait-poll-state.js +6 -0
- package/dist/cli/commands/wait-timing.d.ts +46 -0
- package/dist/cli/commands/wait-timing.d.ts.map +1 -0
- package/dist/cli/commands/wait-timing.js +99 -0
- package/dist/cli/commands/wait-turn-boundary.d.ts +284 -0
- package/dist/cli/commands/wait-turn-boundary.d.ts.map +1 -0
- package/dist/cli/commands/wait-turn-boundary.js +427 -0
- package/dist/cli/commands/wait-verify.d.ts +51 -0
- package/dist/cli/commands/wait-verify.d.ts.map +1 -0
- package/dist/cli/commands/wait-verify.js +128 -0
- package/dist/cli/commands/wait.d.ts +6 -105
- package/dist/cli/commands/wait.d.ts.map +1 -1
- package/dist/cli/commands/wait.js +240 -968
- 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 +2 -2
- package/dist/cli/docs/agent-operations.d.ts.map +1 -1
- package/dist/cli/docs/agent-operations.js +24 -1
- package/dist/cli/types/api-responses.d.ts +49 -3
- package/dist/cli/types/api-responses.d.ts.map +1 -1
- package/dist/cli/utils/api-client.d.ts +69 -1
- package/dist/cli/utils/api-client.d.ts.map +1 -1
- package/dist/cli/utils/api-client.js +226 -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 +80 -1
- package/dist/cli/utils/reply-ledger.d.ts.map +1 -1
- package/dist/cli/utils/reply-ledger.js +147 -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 +48 -1
- package/dist/lib/session/send-attempt-types.d.ts.map +1 -1
- package/dist/lib/session/send-attempt-types.js +18 -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 +20 -3
- package/dist/server/locales/ja/worktree.json +20 -3
- package/dist/server/src/config/cli-tool-timing-config.js +1 -7
- package/dist/server/src/lib/auto-yes-poller.js +54 -11
- package/dist/server/src/lib/cli-tools/antigravity.js +45 -9
- package/dist/server/src/lib/cli-tools/base.js +39 -0
- package/dist/server/src/lib/cli-tools/codex.js +67 -15
- package/dist/server/src/lib/cli-tools/command-code-plan-review.js +24 -2
- package/dist/server/src/lib/cli-tools/command-code.js +7 -3
- package/dist/server/src/lib/cli-tools/copilot.js +125 -33
- package/dist/server/src/lib/cli-tools/gemini.js +37 -10
- 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 +60 -15
- package/dist/server/src/lib/cli-tools/session-name.js +11 -3
- package/dist/server/src/lib/cli-tools/submit-composer-read.js +590 -0
- package/dist/server/src/lib/cli-tools/submit-verified-sender.js +512 -620
- 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/db/migrations/index.js +2 -0
- package/dist/server/src/lib/db/migrations/pre-migration-backup.js +266 -0
- package/dist/server/src/lib/db/migrations/runner.js +37 -4
- package/dist/server/src/lib/db/migrations/v62-session-relays-bind.js +102 -0
- package/dist/server/src/lib/db/relay-bind-db.js +437 -0
- package/dist/server/src/lib/db/relay-db.js +59 -96
- package/dist/server/src/lib/detection/prompt-detect-multiple-choice.js +5 -4
- package/dist/server/src/lib/detection/upstream-faults.js +40 -6
- package/dist/server/src/lib/hooks/sources/copilot/hook-settings.js +2 -3
- package/dist/server/src/lib/hooks/sources/opencode/client.js +12 -6
- package/dist/server/src/lib/polling/response-checker.js +7 -5
- package/dist/server/src/lib/prompt-answer-errors.js +362 -0
- package/dist/server/src/lib/prompt-answer-sender.js +264 -288
- package/dist/server/src/lib/push/failure-episode-state.js +4 -1
- package/dist/server/src/lib/realtime/terminal-broadcast.js +1 -4
- package/dist/server/src/lib/realtime-snippet.js +54 -0
- package/dist/server/src/lib/relay/relay-bind.js +294 -0
- package/dist/server/src/lib/relay/relay-boot.js +51 -0
- package/dist/server/src/lib/relay/relay-bound-reply.js +519 -0
- package/dist/server/src/lib/relay/relay-delivery.js +134 -220
- package/dist/server/src/lib/relay/relay-messages.js +39 -4
- package/dist/server/src/lib/relay/relay-overlap.js +92 -0
- package/dist/server/src/lib/relay/relay-system-line.js +3 -2
- package/dist/server/src/lib/relay/types.js +12 -1
- package/dist/server/src/lib/session/agent-event-state.js +4 -0
- package/dist/server/src/lib/session/agent-session-lifecycle.js +23 -0
- package/dist/server/src/lib/session/claude-session.js +59 -8
- package/dist/server/src/lib/session/composer-clear.js +54 -1
- package/dist/server/src/lib/session/current-output-builder.js +26 -8
- package/dist/server/src/lib/session/current-output-history-writers.js +1 -1
- package/dist/server/src/lib/session/instance-input-lock.js +664 -0
- 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 +65 -0
- package/dist/server/src/lib/session/send-attempt-types.js +18 -1
- package/dist/server/src/lib/session/send-user-message.js +84 -14
- 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.1.json +66 -0
- package/release-notes/0.49.2.json +49 -0
- package/.next/server/chunks/1210.js +0 -1
- package/.next/server/chunks/1945.js +0 -14
- package/.next/server/chunks/1990.js +0 -103
- package/.next/server/chunks/4194.js +0 -67
- package/.next/server/chunks/5845.js +0 -1
- package/.next/server/chunks/720.js +0 -103
- package/.next/server/chunks/7604.js +0 -2
- package/.next/server/chunks/9540.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-cf6bdbff44a764cf.js +0 -1
- package/.next/static/chunks/9079-987939d231704218.js +0 -1
- package/.next/static/chunks/app/api/agents/update/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/agents/versions/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/app/release-notes/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/app/update/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/app/update-check/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/auth/login/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/auth/logout/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/auth/status/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/capabilities/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/daily-summary/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/daily-summary/status/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/external-apps/[id]/health/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/external-apps/[id]/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/external-apps/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/fs/browse/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/fs/recent-paths/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/hooks/agent-event/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/hooks/claude-done/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/hooks/permission-request/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/metrics/vibe/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/ollama/models/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/push/escalation/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/push/subscriptions/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/push/vapid/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/relays/[relayId]/cancel/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/relays/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/remote/pair/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/repositories/[id]/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/repositories/clone/[jobId]/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/repositories/clone/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/repositories/excluded/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/repositories/restore/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/repositories/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/repositories/scan/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/repositories/sync/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/repositories/validate-path/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/settings/default-agents/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/settings/default-surface-mode/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/sidebar/group-order/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/skills/[id]/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/skills/installations/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/skills/operations/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/skills/reindex/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/skills/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/slash-commands/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/tasks/[taskId]/cancel/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/tasks/[taskId]/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/templates/[id]/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/templates/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/verification/runs/[runId]/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/verification/runs/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/auto-yes/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/capture/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/clear-composer/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/cli-reference/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/cli-tool/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/cmate/schedules/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/current-output/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/direct-input/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/env/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/[logId]/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/execution-logs/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/files/[...path]/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/branch/create/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/branch/delete/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/branches/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/checkout/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/commit/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/diff/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/fetch/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/log/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/pull/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/push/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/reset/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/revert/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/show/[commitHash]/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/stage/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/staged/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/[index]/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/apply/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/pop/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/push/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/stash/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/status/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/unstage/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/git/working-diff/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/instances/notes/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/instances/opencode/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/interrupt/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/kill-session/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/logs/[filename]/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/logs/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/marp-render/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/memos/[memoId]/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/memos/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/messages/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/opencode/diff/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/opencode/session/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/opencode/share/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/prompt-response/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/prompt-response/strict/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/resolve-target/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/respond/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/schedules/[scheduleId]/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/schedules/active/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/schedules/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/search/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/send/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/install/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/plan/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/skills/[skillId]/update-plan/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/skills/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/slash-commands/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/special-keys/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/tasks/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/terminal/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/timers/history/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/timers/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/todos/[todoId]/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/todos/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/tree/[...path]/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/tree/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/upload/[...path]/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/verify/config/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/verify/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/[runId]/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/verify/runs/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/[id]/viewed/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/apply-default-agents/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/api/worktrees/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/layout-aa8e66164a4367af.js +0 -1
- package/.next/static/chunks/app/manifest.webmanifest/route-c81284a9d8b35304.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/proxy/[...path]/route-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/review/page-e2fd4a590646a2d8.js +0 -1
- package/.next/static/chunks/app/sessions/page-cfd645305e25fd33.js +0 -1
- package/.next/static/chunks/app/worktrees/[id]/layout-c81284a9d8b35304.js +0 -1
- package/.next/static/chunks/app/worktrees/[id]/page-a8d7886703ffc7b4.js +0 -1
- package/.next/static/css/db8959555c3d9c96.css +0 -1
- /package/.next/static/{3_JtAZaKMJEDFIIfkHv4n → yGatWDsS532awSs51kXyd}/_buildManifest.js +0 -0
- /package/.next/static/{3_JtAZaKMJEDFIIfkHv4n → yGatWDsS532awSs51kXyd}/_ssgManifest.js +0 -0
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
* Uses prompt-response API (not respond API) [DR2-06]
|
|
7
7
|
*/
|
|
8
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.ANSWER_INPUT_LOST = exports.ANSWER_NOT_DELIVERED = void 0;
|
|
9
10
|
exports.createRespondCommand = createRespondCommand;
|
|
10
11
|
const commander_1 = require("commander");
|
|
11
12
|
const types_1 = require("../types");
|
|
@@ -15,6 +16,8 @@ const cli_tool_ids_1 = require("../config/cli-tool-ids");
|
|
|
15
16
|
const agent_target_options_1 = require("../config/agent-target-options");
|
|
16
17
|
const instances_1 = require("./instances");
|
|
17
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");
|
|
18
21
|
const respond_strict_1 = require("./respond-strict");
|
|
19
22
|
const kinds_1 = require("../../lib/prompt-observation/kinds");
|
|
20
23
|
/**
|
|
@@ -125,6 +128,52 @@ async function answerSolePendingDecision(client, worktreeId, body) {
|
|
|
125
128
|
}
|
|
126
129
|
/** Reason `/prompt-response` gives when no dialog is on screen any more. */
|
|
127
130
|
const PROMPT_NO_LONGER_ACTIVE = 'prompt_no_longer_active';
|
|
131
|
+
/**
|
|
132
|
+
* Issue #3975: the answer waited for another input and was then not typed —
|
|
133
|
+
* nothing reached the pane. Restated from `src/lib/prompt-answer-errors.ts`
|
|
134
|
+
* (`ANSWER_NOT_DELIVERED_REASON`); a unit test keeps the two equal.
|
|
135
|
+
*/
|
|
136
|
+
exports.ANSWER_NOT_DELIVERED = 'answer_not_delivered';
|
|
137
|
+
/**
|
|
138
|
+
* Issue #3975: the answer was stopped part-way — some of its keys may be on
|
|
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`).
|
|
141
|
+
*/
|
|
142
|
+
exports.ANSWER_INPUT_LOST = 'answer_input_lost';
|
|
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) {
|
|
155
|
+
if (!(error instanceof api_client_1.ApiError) || (error.statusCode ?? 0) < 500)
|
|
156
|
+
return false;
|
|
157
|
+
const payload = error.payload;
|
|
158
|
+
if (payload?.reason === exports.ANSWER_INPUT_LOST)
|
|
159
|
+
return true;
|
|
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));
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
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.
|
|
169
|
+
*/
|
|
170
|
+
function reportAnswerInputLost(worktreeId, target) {
|
|
171
|
+
console.error(`Warning: The answer may have been only partly typed (reason: ${exports.ANSWER_INPUT_LOST}): the session was ` +
|
|
172
|
+
'replaced part-way, so some of its keys may have reached the agent and the rest did not. ' +
|
|
173
|
+
`Check the screen with \`${(0, follow_up_command_1.dialogCaptureCommand)(worktreeId, target)}\` before answering again.`);
|
|
174
|
+
// The exit code `decision_not_delivered` uses (Issue #3975: no new code).
|
|
175
|
+
process.exit(types_1.ExitCode.UNEXPECTED_ERROR);
|
|
176
|
+
}
|
|
128
177
|
/**
|
|
129
178
|
* Issue #3125: what `--plan-review` takes. Restated rather than imported from
|
|
130
179
|
* `src/lib` (the CLI build does not reach it); the server validates the same set.
|
|
@@ -134,10 +183,6 @@ const PLAN_REVIEW_ACTIONS = ['comment', 'submit', 'approve', 'cancel'];
|
|
|
134
183
|
function isPlanReviewRefusal(reason) {
|
|
135
184
|
return reason.startsWith('plan_review_');
|
|
136
185
|
}
|
|
137
|
-
/** ` --instance <id>` as the caller spelled it, or nothing. */
|
|
138
|
-
function instanceFlag(instance) {
|
|
139
|
-
return instance ? ` --instance ${instance}` : '';
|
|
140
|
-
}
|
|
141
186
|
/**
|
|
142
187
|
* `textFollowUp` from a `/prompt-response` success (Issue #3093), read
|
|
143
188
|
* defensively: an older server omits it, and the route's mirror type is not
|
|
@@ -221,7 +266,7 @@ function buildPromptResponseBody(useDefault, answer, agent, instanceId, planRevi
|
|
|
221
266
|
return body;
|
|
222
267
|
}
|
|
223
268
|
/** Reports a `success: false` result and sets the exit code. */
|
|
224
|
-
function reportFailedResponse(result, worktreeId, answer, useDefault,
|
|
269
|
+
function reportFailedResponse(result, worktreeId, answer, useDefault, target) {
|
|
225
270
|
// [DR2-06] Check reason for failure
|
|
226
271
|
const reason = result.reason || 'unknown';
|
|
227
272
|
// Issue #1681 / #1726: these mean the server refused BEFORE sending,
|
|
@@ -244,6 +289,15 @@ function reportFailedResponse(result, worktreeId, answer, useDefault, options) {
|
|
|
244
289
|
'The dialog is still open; answer it in the terminal.');
|
|
245
290
|
process.exit(types_1.ExitCode.UNEXPECTED_ERROR);
|
|
246
291
|
}
|
|
292
|
+
// Issue #3975: the answer waited for another input on the session and was
|
|
293
|
+
// then not typed. Nothing reached the pane, so — unlike the "may not have
|
|
294
|
+
// been applied" reasons below — trying again is safe.
|
|
295
|
+
if (reason === exports.ANSWER_NOT_DELIVERED) {
|
|
296
|
+
console.error(`Error: Answer was not sent. Reason: ${reason}${result.message ? ` (${result.message})` : ''}. ` +
|
|
297
|
+
'Nothing was typed, so it is safe to run respond again.');
|
|
298
|
+
process.exit(types_1.ExitCode.UNEXPECTED_ERROR);
|
|
299
|
+
return;
|
|
300
|
+
}
|
|
247
301
|
if (refusedBeforeSending) {
|
|
248
302
|
console.error(`Error: Answer was not sent. Reason: ${reason}${result.message ? ` (${result.message})` : ''}`);
|
|
249
303
|
// Issue #2583: the operator who lands here typed WORDS at a dialog
|
|
@@ -256,9 +310,9 @@ function reportFailedResponse(result, worktreeId, answer, useDefault, options) {
|
|
|
256
310
|
// be mapped onto a choice", and only when the answer was not already
|
|
257
311
|
// a number (where the number itself is what was wrong).
|
|
258
312
|
if (reason === 'unresolvable_answer' && answer !== undefined && !/^\d+$/.test(answer.trim())) {
|
|
259
|
-
|
|
260
|
-
console.error(`Hint: answer with the option number —
|
|
261
|
-
`(
|
|
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).`);
|
|
262
316
|
}
|
|
263
317
|
}
|
|
264
318
|
else {
|
|
@@ -270,7 +324,7 @@ function reportFailedResponse(result, worktreeId, answer, useDefault, options) {
|
|
|
270
324
|
if (reason === PROMPT_NO_LONGER_ACTIVE && !useDefault && answer !== undefined && !/^\d+$/.test(answer.trim())) {
|
|
271
325
|
console.error('Hint: no dialog is open, so this text was not delivered. If you just chose an option that asks ' +
|
|
272
326
|
'for text (e.g. "No, tell … what to do differently"), the agent is waiting for it in its input box — ' +
|
|
273
|
-
`send it with
|
|
327
|
+
`send it with \`${(0, follow_up_command_1.followUpCommand)('send', worktreeId, target, '"<text>"')}\`.`);
|
|
274
328
|
}
|
|
275
329
|
}
|
|
276
330
|
// Issue #1726: an option number the agent's own payload does not offer
|
|
@@ -282,15 +336,14 @@ function reportFailedResponse(result, worktreeId, answer, useDefault, options) {
|
|
|
282
336
|
* What was done on Command Code's plan review (Issue #3125), and the next step:
|
|
283
337
|
* a pinned comment is not delivered to the agent until the review is submitted.
|
|
284
338
|
*/
|
|
285
|
-
function printPlanReviewOutcome(result, worktreeId,
|
|
339
|
+
function printPlanReviewOutcome(result, worktreeId, target) {
|
|
286
340
|
const planReview = result.planReview;
|
|
287
341
|
if (!planReview)
|
|
288
342
|
return;
|
|
289
|
-
const target = instanceFlag(options.instance);
|
|
290
343
|
switch (planReview.action) {
|
|
291
344
|
case 'comment':
|
|
292
345
|
console.log(`Plan review: pinned comment "${planReview.comment ?? ''}".`);
|
|
293
|
-
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')}\` ` +
|
|
294
347
|
`(ctrl+r), or approve with \`--plan-review approve\` (comments go along as notes).`);
|
|
295
348
|
break;
|
|
296
349
|
case 'submit':
|
|
@@ -306,7 +359,7 @@ function printPlanReviewOutcome(result, worktreeId, options) {
|
|
|
306
359
|
console.log('Plan review: approved the plan (ctrl+a).');
|
|
307
360
|
if (planReview.pendingCommentsBefore > 0) {
|
|
308
361
|
console.error('Note: with pending comments Command Code may ask how to approve — confirm with ' +
|
|
309
|
-
|
|
362
|
+
`\`${(0, follow_up_command_1.followUpCommand)('respond', worktreeId, target, '--plan-review approve')}\` again, or go back with \`--plan-review cancel\`.`);
|
|
310
363
|
}
|
|
311
364
|
}
|
|
312
365
|
break;
|
|
@@ -413,8 +466,10 @@ Strict respond (--expect-screen <kind> --observation <token> <label>):
|
|
|
413
466
|
// and falls back to the worktree default, so `--instance codex` alone
|
|
414
467
|
// answered into a session that was never started. Resolve the tool the
|
|
415
468
|
// instance is registered under first.
|
|
416
|
-
const
|
|
469
|
+
const commandTarget = await (0, command_target_1.resolveCommandTarget)(client, worktreeId, options.instance, options.agent);
|
|
470
|
+
const { agent, instanceId } = commandTarget;
|
|
417
471
|
// Issue #2376: the resolved id. /prompt-response reads instance ids.
|
|
472
|
+
// Issue #3982: every hint below names `commandTarget`, never `options.instance`.
|
|
418
473
|
const body = buildPromptResponseBody(useDefault, answer, agent, instanceId, options.planReview);
|
|
419
474
|
// Issue #2040: for an agent that publishes per-decision ids (opencode
|
|
420
475
|
// today, and only opencode), a bare `respond <worktree> 3` names the ONE
|
|
@@ -445,14 +500,24 @@ Strict respond (--expect-screen <kind> --observation <token> <label>):
|
|
|
445
500
|
result = outcome;
|
|
446
501
|
}
|
|
447
502
|
if (result === null) {
|
|
448
|
-
|
|
503
|
+
try {
|
|
504
|
+
result = await client.post(`/api/worktrees/${worktreeId}/prompt-response`, body);
|
|
505
|
+
}
|
|
506
|
+
catch (error) {
|
|
507
|
+
// Issue #3975: stopped part-way is not "the server failed" — some
|
|
508
|
+
// keys may be on the pane, and the operator has to look first.
|
|
509
|
+
if (!(await isAnswerInputLost(error, client)))
|
|
510
|
+
throw error;
|
|
511
|
+
reportAnswerInputLost(worktreeId, commandTarget);
|
|
512
|
+
return;
|
|
513
|
+
}
|
|
449
514
|
}
|
|
450
515
|
if (result && !result.success) {
|
|
451
|
-
reportFailedResponse(result, worktreeId, answer, useDefault,
|
|
516
|
+
reportFailedResponse(result, worktreeId, answer, useDefault, commandTarget);
|
|
452
517
|
}
|
|
453
518
|
printResolvedAudit(result, answer);
|
|
454
519
|
if (result && 'planReview' in result)
|
|
455
|
-
printPlanReviewOutcome(result, worktreeId,
|
|
520
|
+
printPlanReviewOutcome(result, worktreeId, commandTarget);
|
|
456
521
|
console.error('Response sent.');
|
|
457
522
|
// Issue #3093: the option just chosen continues as typed text, which the
|
|
458
523
|
// dialog no longer takes — name the command that does deliver it.
|
|
@@ -460,7 +525,7 @@ Strict respond (--expect-screen <kind> --observation <token> <label>):
|
|
|
460
525
|
if (followUp) {
|
|
461
526
|
console.error(`Next: option ${followUp.optionNumber} ("${followUp.optionLabel}") asks for your text, and the dialog ` +
|
|
462
527
|
'is closed now, so `respond` cannot deliver it — send it with ' +
|
|
463
|
-
|
|
528
|
+
`\`${(0, follow_up_command_1.followUpCommand)('send', worktreeId, commandTarget, '"<text>"')}\`.`);
|
|
464
529
|
}
|
|
465
530
|
}
|
|
466
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.
|
|
@@ -405,9 +408,9 @@ worktree and send a short message that tells the agent to read that file.
|
|
|
405
408
|
// between the send and the ledger row — the completion trigger reads the
|
|
406
409
|
// ledger, and a row that does not exist yet is a reply nobody collects.
|
|
407
410
|
// A refusal exits 2 here, having sent nothing.
|
|
408
|
-
let
|
|
411
|
+
let relay;
|
|
409
412
|
if (options.replyTo) {
|
|
410
|
-
|
|
413
|
+
relay = await (0, message_dispatch_1.registerRelayForMessage)(client, {
|
|
411
414
|
worktreeId,
|
|
412
415
|
replyTo: options.replyTo,
|
|
413
416
|
instance: options.instance,
|
|
@@ -418,13 +421,16 @@ worktree and send a short message that tells the agent to read that file.
|
|
|
418
421
|
// (it prints the task id there), and two commands writing two ids to
|
|
419
422
|
// one stream is how a `$(…)` capture ends up with both. `ask --async`
|
|
420
423
|
// is the form that hands the relay id back on stdout.
|
|
421
|
-
console.error(`Relay registered: ${
|
|
424
|
+
console.error(`Relay registered: ${relay.id}`);
|
|
422
425
|
}
|
|
423
426
|
const sendBody = buildSendBody(content, agent, instanceId, options);
|
|
427
|
+
// Issue #3957: a bound relay's id rides on the send, which reserves it
|
|
428
|
+
// and records where the body went in.
|
|
424
429
|
await (0, message_dispatch_1.postMessage)(client, worktreeId, sendBody, {
|
|
425
|
-
|
|
430
|
+
relay,
|
|
426
431
|
onFailure: failTask,
|
|
427
|
-
promptWaitingFallback: promptWaitingFallback(worktreeId),
|
|
432
|
+
promptWaitingFallback: promptWaitingFallback(worktreeId, commandTarget),
|
|
433
|
+
target: commandTarget,
|
|
428
434
|
});
|
|
429
435
|
console.error('Message sent.');
|
|
430
436
|
if (taskId) {
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* wait Command - re-reading the pane after a hook_stop (Issue #3956)
|
|
3
|
+
* Issue #3964: split out of wait.ts; wait.ts re-exports what it exported.
|
|
4
|
+
*/
|
|
5
|
+
import type { CurrentOutputResponse } from '../types/api-responses';
|
|
6
|
+
import type { PollContext, PollState } from './wait-poll-state';
|
|
7
|
+
/**
|
|
8
|
+
* Interval between the re-reads of the pane after a `hook_stop`, under
|
|
9
|
+
* `--fail-on-upstream-fault` (Issue #3956). See {@link settleAfterHookStop}.
|
|
10
|
+
*/
|
|
11
|
+
export declare const HOOK_STOP_SETTLE_INTERVAL_MS = 500;
|
|
12
|
+
/**
|
|
13
|
+
* Longest `wait` re-reads the pane after a `hook_stop` before judging the last
|
|
14
|
+
* frame it read (Issue #3956). See {@link settleAfterHookStop}.
|
|
15
|
+
*/
|
|
16
|
+
export declare const HOOK_STOP_SETTLE_MAX_MS = 5000;
|
|
17
|
+
/**
|
|
18
|
+
* The path {@link settleAfterHookStop} re-reads the pane on (Issue #3956):
|
|
19
|
+
* `?fresh=1` past the server's capture cache, whose 5 s TTL would otherwise
|
|
20
|
+
* answer two reads 500 ms apart with the same capture and read a pane still
|
|
21
|
+
* drawing as settled. A server older than the parameter ignores it and answers
|
|
22
|
+
* as before, from the cache.
|
|
23
|
+
*/
|
|
24
|
+
export declare function settleCurrentOutputPath(worktreeId: string, instanceId?: string): string;
|
|
25
|
+
/**
|
|
26
|
+
* The frame a `hook_stop` completion is judged on, once the pane has settled
|
|
27
|
+
* (Issue #3956).
|
|
28
|
+
*
|
|
29
|
+
* The agent's `Stop` can land before its reply is drawn. Measured 2026-10-27 on
|
|
30
|
+
* codex-cli 0.164.0: `ask` returned on `basis=hook_stop` with the pane ending at
|
|
31
|
+
* row 441–445 of 480, and the last rows were drawn ~3 s later. An upstream fault
|
|
32
|
+
* printed at the end of the turn is in those rows, so the frame of the `Stop`
|
|
33
|
+
* poll can carry no `upstreamFault` while the turn did fail.
|
|
34
|
+
*
|
|
35
|
+
* So the pane is read again every {@link HOOK_STOP_SETTLE_INTERVAL_MS} until two
|
|
36
|
+
* reads in a row carry the same frame, and that frame is the one judged — by
|
|
37
|
+
* every stage of a poll, not by the fault alone: {@link pollWorktree} judges it
|
|
38
|
+
* as the next poll, so a prompt or a new turn drawn meanwhile is read as one.
|
|
39
|
+
* The bound is {@link HOOK_STOP_SETTLE_MAX_MS}: no re-read starts after it, and
|
|
40
|
+
* a pane still drawing then is judged on the last frame read rather than held.
|
|
41
|
+
* The re-reads ask for a fresh capture ({@link settleCurrentOutputPath}); the
|
|
42
|
+
* poll that saw the `Stop` does not.
|
|
43
|
+
*
|
|
44
|
+
* `--timeout` / `--stall-timeout` bound it too: no interval is slept that the
|
|
45
|
+
* next re-read could not finish within, and each re-read is aborted at the
|
|
46
|
+
* earliest of one interval, the bound and those deadlines — so the verdict
|
|
47
|
+
* comes at most {@link HOOK_STOP_SETTLE_MAX_MS} after the `Stop` poll. The bound
|
|
48
|
+
* is `settleDeadline`, set by {@link readyStage} when it reads the `Stop` poll and
|
|
49
|
+
* shared with the ledger read of {@link faultFrameHasStop}, so time spent there
|
|
50
|
+
* is not given again here. A re-read that is aborted or
|
|
51
|
+
* fails ends the settle on the frame before it (an `ApiError` that is not an
|
|
52
|
+
* abort still ends the wait, as on any poll). Frames that change count as
|
|
53
|
+
* activity for `--stall-timeout`, as on any poll.
|
|
54
|
+
*/
|
|
55
|
+
export declare function settleAfterHookStop<T extends CurrentOutputResponse>(poll: PollContext, state: PollState, data: T, settleDeadline: number): Promise<T>;
|
|
56
|
+
/**
|
|
57
|
+
* Whether the agent has reported the end of the turn on a frame that carries an
|
|
58
|
+
* upstream fault, so that frame is judged once settled (Issue #3956).
|
|
59
|
+
*
|
|
60
|
+
* The same two records {@link readyCompletionBasis} reads as `hook_stop`: a
|
|
61
|
+
* `Stop` at or after the adopted turn, or — with no turn adopted — a `Stop`
|
|
62
|
+
* after the newest prompt in the chat ledger. Neither is #1839's case (back at
|
|
63
|
+
* the composer with no `Stop`), whose fault is reported on the spot as before.
|
|
64
|
+
*/
|
|
65
|
+
export declare function faultFrameHasStop(poll: PollContext, state: PollState, data: CurrentOutputResponse, settleDeadline: number): Promise<boolean>;
|
|
66
|
+
//# sourceMappingURL=wait-hook-stop-settle.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wait-hook-stop-settle.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/wait-hook-stop-settle.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAGpE,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAUhE;;;GAGG;AACH,eAAO,MAAM,4BAA4B,MAAM,CAAC;AAEhD;;;GAGG;AACH,eAAO,MAAM,uBAAuB,OAAO,CAAC;AAE5C;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAEvF;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAsB,mBAAmB,CAAC,CAAC,SAAS,qBAAqB,EACvE,IAAI,EAAE,WAAW,EACjB,KAAK,EAAE,SAAS,EAChB,IAAI,EAAE,CAAC,EACP,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC,CAAC,CAAC,CAyDZ;AAED;;;;;;;;GAQG;AACH,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,WAAW,EACjB,KAAK,EAAE,SAAS,EAChB,IAAI,EAAE,qBAAqB,EAC3B,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC,OAAO,CAAC,CAuBlB"}
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* wait Command - re-reading the pane after a hook_stop (Issue #3956)
|
|
4
|
+
* Issue #3964: split out of wait.ts; wait.ts re-exports what it exported.
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.HOOK_STOP_SETTLE_MAX_MS = exports.HOOK_STOP_SETTLE_INTERVAL_MS = void 0;
|
|
8
|
+
exports.settleCurrentOutputPath = settleCurrentOutputPath;
|
|
9
|
+
exports.settleAfterHookStop = settleAfterHookStop;
|
|
10
|
+
exports.faultFrameHasStop = faultFrameHasStop;
|
|
11
|
+
const api_client_1 = require("../utils/api-client");
|
|
12
|
+
const prompt_1 = require("./prompt");
|
|
13
|
+
const wait_timing_1 = require("./wait-timing");
|
|
14
|
+
const wait_turn_boundary_1 = require("./wait-turn-boundary");
|
|
15
|
+
/**
|
|
16
|
+
* Interval between the re-reads of the pane after a `hook_stop`, under
|
|
17
|
+
* `--fail-on-upstream-fault` (Issue #3956). See {@link settleAfterHookStop}.
|
|
18
|
+
*/
|
|
19
|
+
exports.HOOK_STOP_SETTLE_INTERVAL_MS = 500;
|
|
20
|
+
/**
|
|
21
|
+
* Longest `wait` re-reads the pane after a `hook_stop` before judging the last
|
|
22
|
+
* frame it read (Issue #3956). See {@link settleAfterHookStop}.
|
|
23
|
+
*/
|
|
24
|
+
exports.HOOK_STOP_SETTLE_MAX_MS = 5000;
|
|
25
|
+
/**
|
|
26
|
+
* The path {@link settleAfterHookStop} re-reads the pane on (Issue #3956):
|
|
27
|
+
* `?fresh=1` past the server's capture cache, whose 5 s TTL would otherwise
|
|
28
|
+
* answer two reads 500 ms apart with the same capture and read a pane still
|
|
29
|
+
* drawing as settled. A server older than the parameter ignores it and answers
|
|
30
|
+
* as before, from the cache.
|
|
31
|
+
*/
|
|
32
|
+
function settleCurrentOutputPath(worktreeId, instanceId) {
|
|
33
|
+
return `${(0, prompt_1.observedCurrentOutputPath)(worktreeId, instanceId)}&fresh=1`;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* The frame a `hook_stop` completion is judged on, once the pane has settled
|
|
37
|
+
* (Issue #3956).
|
|
38
|
+
*
|
|
39
|
+
* The agent's `Stop` can land before its reply is drawn. Measured 2026-10-27 on
|
|
40
|
+
* codex-cli 0.164.0: `ask` returned on `basis=hook_stop` with the pane ending at
|
|
41
|
+
* row 441–445 of 480, and the last rows were drawn ~3 s later. An upstream fault
|
|
42
|
+
* printed at the end of the turn is in those rows, so the frame of the `Stop`
|
|
43
|
+
* poll can carry no `upstreamFault` while the turn did fail.
|
|
44
|
+
*
|
|
45
|
+
* So the pane is read again every {@link HOOK_STOP_SETTLE_INTERVAL_MS} until two
|
|
46
|
+
* reads in a row carry the same frame, and that frame is the one judged — by
|
|
47
|
+
* every stage of a poll, not by the fault alone: {@link pollWorktree} judges it
|
|
48
|
+
* as the next poll, so a prompt or a new turn drawn meanwhile is read as one.
|
|
49
|
+
* The bound is {@link HOOK_STOP_SETTLE_MAX_MS}: no re-read starts after it, and
|
|
50
|
+
* a pane still drawing then is judged on the last frame read rather than held.
|
|
51
|
+
* The re-reads ask for a fresh capture ({@link settleCurrentOutputPath}); the
|
|
52
|
+
* poll that saw the `Stop` does not.
|
|
53
|
+
*
|
|
54
|
+
* `--timeout` / `--stall-timeout` bound it too: no interval is slept that the
|
|
55
|
+
* next re-read could not finish within, and each re-read is aborted at the
|
|
56
|
+
* earliest of one interval, the bound and those deadlines — so the verdict
|
|
57
|
+
* comes at most {@link HOOK_STOP_SETTLE_MAX_MS} after the `Stop` poll. The bound
|
|
58
|
+
* is `settleDeadline`, set by {@link readyStage} when it reads the `Stop` poll and
|
|
59
|
+
* shared with the ledger read of {@link faultFrameHasStop}, so time spent there
|
|
60
|
+
* is not given again here. A re-read that is aborted or
|
|
61
|
+
* fails ends the settle on the frame before it (an `ApiError` that is not an
|
|
62
|
+
* abort still ends the wait, as on any poll). Frames that change count as
|
|
63
|
+
* activity for `--stall-timeout`, as on any poll.
|
|
64
|
+
*/
|
|
65
|
+
async function settleAfterHookStop(poll, state, data, settleDeadline) {
|
|
66
|
+
const { client, worktreeId, options, startTime } = poll;
|
|
67
|
+
const frameOf = (d) => d.fullOutput ?? d.content;
|
|
68
|
+
let latest = data;
|
|
69
|
+
while (Date.now() + exports.HOOK_STOP_SETTLE_INTERVAL_MS <= settleDeadline) {
|
|
70
|
+
if ((0, wait_timing_1.msBeforeDeadlines)(options, startTime, state.lastActivityTime, Date.now()) <= exports.HOOK_STOP_SETTLE_INTERVAL_MS) {
|
|
71
|
+
console.error(`Note: re-reading ${worktreeId} after its stop would pass --timeout/--stall-timeout; ` +
|
|
72
|
+
'judging the last frame read.');
|
|
73
|
+
return latest;
|
|
74
|
+
}
|
|
75
|
+
await (0, wait_timing_1.sleep)(exports.HOOK_STOP_SETTLE_INTERVAL_MS);
|
|
76
|
+
const readBudgetMs = Math.min(exports.HOOK_STOP_SETTLE_INTERVAL_MS, settleDeadline - Date.now(), (0, wait_timing_1.msBeforeDeadlines)(options, startTime, state.lastActivityTime, Date.now()));
|
|
77
|
+
// Past the bound already (a late timer): no read is started.
|
|
78
|
+
if (readBudgetMs < 0)
|
|
79
|
+
break;
|
|
80
|
+
const controller = new AbortController();
|
|
81
|
+
const abortTimer = setTimeout(() => controller.abort(), readBudgetMs);
|
|
82
|
+
let next;
|
|
83
|
+
try {
|
|
84
|
+
next = await client.get(settleCurrentOutputPath(worktreeId, options.instance), {
|
|
85
|
+
signal: controller.signal,
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
catch (error) {
|
|
89
|
+
if (controller.signal.aborted) {
|
|
90
|
+
console.error(`Note: ${worktreeId} did not answer a re-read after its stop within ${readBudgetMs}ms; ` +
|
|
91
|
+
'judging the last frame read.');
|
|
92
|
+
return latest;
|
|
93
|
+
}
|
|
94
|
+
if (error instanceof api_client_1.ApiError)
|
|
95
|
+
throw error;
|
|
96
|
+
console.error(`Note: could not re-read ${worktreeId} after its stop ` +
|
|
97
|
+
`(${error instanceof Error ? error.message : String(error)}); judging the last frame read.`);
|
|
98
|
+
return latest;
|
|
99
|
+
}
|
|
100
|
+
finally {
|
|
101
|
+
clearTimeout(abortTimer);
|
|
102
|
+
}
|
|
103
|
+
if (next.content !== state.lastContent) {
|
|
104
|
+
state.lastContent = next.content;
|
|
105
|
+
state.lastActivityTime = Date.now();
|
|
106
|
+
}
|
|
107
|
+
const settled = frameOf(next) === frameOf(latest);
|
|
108
|
+
latest = next;
|
|
109
|
+
if (settled)
|
|
110
|
+
return latest;
|
|
111
|
+
}
|
|
112
|
+
console.error(`Note: ${worktreeId} was still drawing ${exports.HOOK_STOP_SETTLE_MAX_MS / 1000}s after its stop; ` +
|
|
113
|
+
'judging the last frame read.');
|
|
114
|
+
return latest;
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Whether the agent has reported the end of the turn on a frame that carries an
|
|
118
|
+
* upstream fault, so that frame is judged once settled (Issue #3956).
|
|
119
|
+
*
|
|
120
|
+
* The same two records {@link readyCompletionBasis} reads as `hook_stop`: a
|
|
121
|
+
* `Stop` at or after the adopted turn, or — with no turn adopted — a `Stop`
|
|
122
|
+
* after the newest prompt in the chat ledger. Neither is #1839's case (back at
|
|
123
|
+
* the composer with no `Stop`), whose fault is reported on the spot as before.
|
|
124
|
+
*/
|
|
125
|
+
async function faultFrameHasStop(poll, state, data, settleDeadline) {
|
|
126
|
+
if (state.turnStartedAt !== null)
|
|
127
|
+
return (0, wait_turn_boundary_1.turnSettled)(data, state.turnStartedAt);
|
|
128
|
+
// No `Stop` on record at all: nothing the ledger says could make one, so it
|
|
129
|
+
// is not asked and the fault is reported on the spot.
|
|
130
|
+
if (data.lastStopEventAt == null)
|
|
131
|
+
return false;
|
|
132
|
+
if (!state.promptLedgerReadable || !(0, wait_turn_boundary_1.reportsTurnBoundaries)(data))
|
|
133
|
+
return false;
|
|
134
|
+
// Bounded like the settle it decides on: a ledger that does not answer must
|
|
135
|
+
// not hold an exit 11 past --timeout, nor without one past the settle's bound.
|
|
136
|
+
const budgetMs = Math.min(settleDeadline - Date.now(), (0, wait_timing_1.msBeforeDeadlines)(poll.options, poll.startTime, state.lastActivityTime, Date.now()));
|
|
137
|
+
if (budgetMs <= 0)
|
|
138
|
+
return false;
|
|
139
|
+
const controller = new AbortController();
|
|
140
|
+
const abortTimer = setTimeout(() => controller.abort(), budgetMs);
|
|
141
|
+
let ledger;
|
|
142
|
+
try {
|
|
143
|
+
ledger = await (0, wait_turn_boundary_1.readNewestPromptAt)(poll.client, poll.worktreeId, poll.options, data, controller.signal);
|
|
144
|
+
}
|
|
145
|
+
finally {
|
|
146
|
+
clearTimeout(abortTimer);
|
|
147
|
+
}
|
|
148
|
+
state.promptLedgerReadable = ledger.readable;
|
|
149
|
+
return ledger.readable && ledger.submittedAt !== null && !(0, wait_turn_boundary_1.outstandingPrompt)(data, ledger.submittedAt);
|
|
150
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* wait Command - resolving --instance per worktree (Issue #2376)
|
|
3
|
+
* Issue #3964: split out of wait.ts.
|
|
4
|
+
*/
|
|
5
|
+
import type { WaitOptions } from '../types';
|
|
6
|
+
import { type ApiClient } from '../utils/api-client';
|
|
7
|
+
import { type CommandTarget } from './command-target';
|
|
8
|
+
/**
|
|
9
|
+
* `options` with `--instance` resolved from a selector to an instance ID
|
|
10
|
+
* (Issue #2376).
|
|
11
|
+
*
|
|
12
|
+
* `wait` polls `/current-output?instance=`, which matches instance IDs and
|
|
13
|
+
* nothing else, so an alias that reached it would filter to no session and the
|
|
14
|
+
* wait would report on the worktree default instead — the exact silent
|
|
15
|
+
* wrong-session failure Issue #1638 catalogued for `--agent`.
|
|
16
|
+
*
|
|
17
|
+
* @param client - API client
|
|
18
|
+
* @param worktreeId - Worktree the selector is resolved against
|
|
19
|
+
* @param options - The options as given
|
|
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;
|
|
29
|
+
//# sourceMappingURL=wait-instance.d.ts.map
|
|
@@ -0,0 +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,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"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* wait Command - resolving --instance per worktree (Issue #2376)
|
|
4
|
+
* Issue #3964: split out of wait.ts.
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.resolveWaitInstance = resolveWaitInstance;
|
|
8
|
+
exports.waitCommandTarget = waitCommandTarget;
|
|
9
|
+
const types_1 = require("../types");
|
|
10
|
+
const api_client_1 = require("../utils/api-client");
|
|
11
|
+
const instances_1 = require("./instances");
|
|
12
|
+
const command_target_1 = require("./command-target");
|
|
13
|
+
/**
|
|
14
|
+
* `options` with `--instance` resolved from a selector to an instance ID
|
|
15
|
+
* (Issue #2376).
|
|
16
|
+
*
|
|
17
|
+
* `wait` polls `/current-output?instance=`, which matches instance IDs and
|
|
18
|
+
* nothing else, so an alias that reached it would filter to no session and the
|
|
19
|
+
* wait would report on the worktree default instead — the exact silent
|
|
20
|
+
* wrong-session failure Issue #1638 catalogued for `--agent`.
|
|
21
|
+
*
|
|
22
|
+
* @param client - API client
|
|
23
|
+
* @param worktreeId - Worktree the selector is resolved against
|
|
24
|
+
* @param options - The options as given
|
|
25
|
+
*/
|
|
26
|
+
async function resolveWaitInstance(client, worktreeId, options) {
|
|
27
|
+
if (!options.instance)
|
|
28
|
+
return options;
|
|
29
|
+
try {
|
|
30
|
+
const target = await (0, instances_1.resolveInstanceTarget)(client, worktreeId, options.instance, undefined);
|
|
31
|
+
return { ...options, instance: target.instanceId ?? options.instance };
|
|
32
|
+
}
|
|
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);
|
|
37
|
+
// Degrade to the pre-#2376 behaviour rather than failing the wait. An
|
|
38
|
+
// instance ID needs no resolution to reach `/current-output?instance=` —
|
|
39
|
+
// resolution exists here so that an ALIAS can — so a resolver that cannot
|
|
40
|
+
// be reached costs alias support for this call and nothing else. Failing
|
|
41
|
+
// instead would turn a reachable session into a non-zero exit for an
|
|
42
|
+
// orchestrator that has been waiting on it correctly for two years.
|
|
43
|
+
console.error(`Warning: could not resolve --instance '${options.instance}' `
|
|
44
|
+
+ `(${(0, types_1.getErrorMessage)(error)}); using it as an instance id.`);
|
|
45
|
+
return options;
|
|
46
|
+
}
|
|
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
|
+
}
|