commandmate 0.42.1 → 0.43.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.next/BUILD_ID +1 -1
- package/.next/app-build-manifest.json +144 -144
- package/.next/app-path-routes-manifest.json +23 -23
- package/.next/build-manifest.json +2 -2
- package/.next/prerender-manifest.json +9 -9
- package/.next/required-server-files.json +1 -1
- package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/server/app/api/agents/update/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/agents/versions/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/app/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.js +1 -1
- package/.next/server/app/api/app/update-check/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/auth/login/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/auth/logout/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/auth/status/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/capabilities/route.js +1 -1
- package/.next/server/app/api/capabilities/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/daily-summary/route.js +1 -1
- package/.next/server/app/api/daily-summary/route.js.nft.json +1 -1
- package/.next/server/app/api/daily-summary/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/daily-summary/status/route.js +1 -1
- package/.next/server/app/api/daily-summary/status/route.js.nft.json +1 -1
- package/.next/server/app/api/daily-summary/status/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/external-apps/[id]/health/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/external-apps/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/external-apps/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/fs/browse/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/fs/recent-paths/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/hooks/agent-event/route.js +103 -1
- package/.next/server/app/api/hooks/agent-event/route.js.nft.json +1 -1
- package/.next/server/app/api/hooks/agent-event/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/hooks/claude-done/route.js +2 -2
- package/.next/server/app/api/hooks/claude-done/route.js.nft.json +1 -1
- package/.next/server/app/api/hooks/claude-done/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/hooks/permission-request/route.js +1 -1
- package/.next/server/app/api/hooks/permission-request/route.js.nft.json +1 -1
- package/.next/server/app/api/hooks/permission-request/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/metrics/vibe/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/ollama/models/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/push/escalation/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/push/subscriptions/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/push/vapid/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/relays/[relayId]/cancel/route.js +1 -1
- package/.next/server/app/api/relays/[relayId]/cancel/route.js.nft.json +1 -1
- package/.next/server/app/api/relays/[relayId]/cancel/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/relays/route.js +1 -1
- package/.next/server/app/api/relays/route.js.nft.json +1 -1
- package/.next/server/app/api/relays/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/remote/pair/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/clone/[jobId]/route.js +1 -1
- package/.next/server/app/api/repositories/clone/[jobId]/route.js.nft.json +1 -1
- package/.next/server/app/api/repositories/clone/[jobId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/clone/route.js +1 -1
- package/.next/server/app/api/repositories/clone/route.js.nft.json +1 -1
- package/.next/server/app/api/repositories/clone/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/excluded/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/restore/route.js +1 -1
- package/.next/server/app/api/repositories/restore/route.js.nft.json +1 -1
- package/.next/server/app/api/repositories/restore/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/route.js +1 -1
- package/.next/server/app/api/repositories/route.js.nft.json +1 -1
- package/.next/server/app/api/repositories/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/scan/route.js +1 -1
- package/.next/server/app/api/repositories/scan/route.js.nft.json +1 -1
- package/.next/server/app/api/repositories/scan/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/sync/route.js +1 -1
- package/.next/server/app/api/repositories/sync/route.js.nft.json +1 -1
- package/.next/server/app/api/repositories/sync/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/validate-path/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/settings/default-agents/route.js +1 -1
- package/.next/server/app/api/settings/default-agents/route.js.nft.json +1 -1
- package/.next/server/app/api/settings/default-agents/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/settings/default-surface-mode/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/sidebar/group-order/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/skills/[id]/route.js +1 -1
- package/.next/server/app/api/skills/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/skills/installations/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/skills/operations/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/skills/reindex/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/skills/route.js +1 -1
- package/.next/server/app/api/skills/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/slash-commands/route.js +1 -1
- package/.next/server/app/api/slash-commands/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/tasks/[taskId]/cancel/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/tasks/[taskId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/templates/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/templates/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/verification/runs/[runId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/verification/runs/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/auto-yes/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/auto-yes/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/auto-yes/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/capture/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/capture/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/capture/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/clear-composer/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/clear-composer/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/clear-composer/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/cli-reference/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/cli-tool/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/cmate/schedules/route.js +3 -1
- package/.next/server/app/api/worktrees/[id]/cmate/schedules/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/cmate/schedules/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/current-output/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/current-output/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/current-output/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/direct-input/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/direct-input/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/direct-input/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/env/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/execution-logs/[logId]/route.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 +3 -1
- package/.next/server/app/api/worktrees/[id]/execution-logs/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/execution-logs/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/files/[...path]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/branch/create/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/branch/delete/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/branches/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/checkout/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/commit/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/diff/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/fetch/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/log/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/pull/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/push/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/reset/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/revert/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/show/[commitHash]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stage/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/staged/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/[index]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/apply/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/pop/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/push/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/stash/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/status/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/unstage/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/git/working-diff/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/instances/notes/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/instances/opencode/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/instances/opencode/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/instances/opencode/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/interrupt/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/interrupt/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/interrupt/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/kill-session/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/kill-session/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/kill-session/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/logs/[filename]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/logs/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/marp-render/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/memos/[memoId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/memos/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/messages/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/opencode/diff/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/opencode/session/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/opencode/session/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/opencode/session/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/opencode/share/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/opencode/share/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/opencode/share/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/prompt-response/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/prompt-response/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/prompt-response/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/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 -103
- 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 +3 -1
- package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/schedules/active/route.js +3 -1
- package/.next/server/app/api/worktrees/[id]/schedules/active/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/schedules/active/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/schedules/route.js +3 -1
- package/.next/server/app/api/worktrees/[id]/schedules/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/schedules/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/search/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/send/route.js +1 -103
- 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 +104 -2
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/install/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/plan/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update-plan/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/slash-commands/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/slash-commands/route.js.nft.json +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 +1 -1
- package/.next/server/app/api/worktrees/[id]/terminal/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/terminal/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/timers/history/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/timers/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/timers/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/timers/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/todos/[todoId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/todos/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/tree/[...path]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/tree/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/upload/[...path]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/config/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/config/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/runs/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/viewed/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/apply-default-agents/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/route.js +1 -1
- package/.next/server/app/api/worktrees/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/route_client-reference-manifest.js +1 -1
- package/.next/server/app/login/page_client-reference-manifest.js +1 -1
- package/.next/server/app/manifest.webmanifest/route_client-reference-manifest.js +1 -1
- package/.next/server/app/more/page_client-reference-manifest.js +1 -1
- package/.next/server/app/offline/page_client-reference-manifest.js +1 -1
- package/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/server/app/proxy/[...path]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/repositories/page_client-reference-manifest.js +1 -1
- package/.next/server/app/review/page_client-reference-manifest.js +1 -1
- package/.next/server/app/sessions/page_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 +9 -9
- 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 +23 -23
- package/.next/server/chunks/1068.js +1 -1
- package/.next/server/chunks/1210.js +1 -1
- package/.next/server/chunks/1501.js +4 -4
- package/.next/server/chunks/1990.js +1 -1
- package/.next/server/chunks/2119.js +1 -1
- package/.next/server/chunks/22.js +1 -1
- package/.next/server/chunks/2328.js +1 -1
- package/.next/server/chunks/2404.js +4 -3
- package/.next/server/chunks/2445.js +1 -1
- package/.next/server/chunks/252.js +1 -1
- package/.next/server/chunks/2816.js +1 -1
- package/.next/server/chunks/3543.js +1 -1
- package/.next/server/chunks/3730.js +1 -1
- package/.next/server/chunks/3945.js +1 -1
- package/.next/server/chunks/4207.js +3 -3
- package/.next/server/chunks/434.js +1 -1
- package/.next/server/chunks/5064.js +1 -1
- package/.next/server/chunks/5571.js +1 -1
- package/.next/server/chunks/5742.js +1 -1
- package/.next/server/chunks/5775.js +1 -1
- package/.next/server/chunks/611.js +1 -1
- package/.next/server/chunks/6130.js +1 -1
- package/.next/server/chunks/6285.js +1 -1
- package/.next/server/chunks/6491.js +103 -0
- package/.next/server/chunks/6661.js +1 -1
- package/.next/server/chunks/6781.js +1 -1
- package/.next/server/chunks/6793.js +1 -1
- package/.next/server/chunks/7491.js +3 -0
- package/.next/server/chunks/7685.js +1 -1
- package/.next/server/chunks/7905.js +1 -1
- package/.next/server/chunks/8581.js +2 -2
- package/.next/server/chunks/8583.js +1 -1
- package/.next/server/chunks/8673.js +6 -6
- package/.next/server/chunks/8728.js +2 -2
- package/.next/server/chunks/8791.js +1 -1
- package/.next/server/chunks/8800.js +4 -3
- package/.next/server/chunks/8918.js +5 -5
- package/.next/server/chunks/9130.js +3 -3
- package/.next/server/chunks/{8052.js → 9353.js} +4 -2
- package/.next/server/chunks/9390.js +3 -0
- package/.next/server/chunks/9627.js +4 -4
- package/.next/server/chunks/964.js +1 -1
- package/.next/server/chunks/967.js +1 -0
- package/.next/server/chunks/9731.js +3 -3
- package/.next/server/chunks/9882.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/{1642-fb2e176aaadbd137.js → 1642-767aed8e7c61ef7f.js} +1 -1
- package/.next/static/chunks/{2407-21fbf12d753b8d4d.js → 2407-940df9b11fadafc6.js} +1 -1
- package/.next/static/chunks/{2619-04bc32f026a0d946.js → 2619-a305ad4810f1393a.js} +1 -1
- package/.next/static/chunks/5449-6cb80bab2bd06b79.js +1 -0
- package/.next/static/chunks/7705-1f58d4c03d991fcf.js +1 -0
- package/.next/static/chunks/8165-3525fb42f1b4976e.js +1 -0
- package/.next/static/chunks/app/{layout-8ff4c7c08ef1f621.js → layout-057c850cd0df978e.js} +1 -1
- package/.next/static/chunks/app/review/page-ff9efae3f86eb840.js +1 -0
- package/.next/static/chunks/app/skills/[skillId]/page-74aac15286504ef4.js +1 -0
- package/.next/static/chunks/app/skills/page-182e16168b2fc098.js +1 -0
- package/.next/static/chunks/app/worktrees/[id]/page-eab0bf7564d3f9e2.js +1 -0
- package/.next/static/chunks/app/worktrees/[id]/terminal/{page-373ea37b16d930c7.js → page-c601f3b3ece6557e.js} +1 -1
- package/.next/trace +13 -13
- package/README.md +3 -3
- package/dist/cli/commands/ask.d.ts.map +1 -1
- package/dist/cli/commands/ask.js +23 -149
- package/dist/cli/commands/reply.d.ts +40 -0
- package/dist/cli/commands/reply.d.ts.map +1 -0
- package/dist/cli/commands/reply.js +133 -0
- package/dist/cli/commands/verify.d.ts.map +1 -1
- package/dist/cli/commands/verify.js +9 -0
- package/dist/cli/commands/wait.d.ts +5 -0
- package/dist/cli/commands/wait.d.ts.map +1 -1
- package/dist/cli/commands/wait.js +10 -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 +13 -0
- package/dist/cli/program.d.ts.map +1 -1
- package/dist/cli/program.js +4 -0
- package/dist/cli/types/index.d.ts +2 -0
- package/dist/cli/types/index.d.ts.map +1 -1
- package/dist/cli/utils/reply-ledger.d.ts +95 -0
- package/dist/cli/utils/reply-ledger.d.ts.map +1 -0
- package/dist/cli/utils/reply-ledger.js +187 -0
- package/dist/lib/cli-tools/copilot-executable.d.ts +9 -0
- package/dist/lib/cli-tools/copilot-executable.d.ts.map +1 -1
- package/dist/lib/cli-tools/copilot-executable.js +21 -5
- package/dist/lib/cli-tools/opencode-executable.d.ts +103 -0
- package/dist/lib/cli-tools/opencode-executable.d.ts.map +1 -0
- package/dist/lib/cli-tools/opencode-executable.js +179 -0
- package/dist/lib/cli-tools/types.d.ts +1 -1
- package/dist/lib/cli-tools/types.d.ts.map +1 -1
- package/dist/lib/cli-tools/types.js +5 -1
- package/dist/lib/detection/tools/verified-against.d.ts +15 -0
- package/dist/lib/detection/tools/verified-against.d.ts.map +1 -1
- package/dist/lib/detection/tools/verified-against.js +17 -1
- package/dist/lib/detection/version-probes.d.ts.map +1 -1
- package/dist/lib/detection/version-probes.js +14 -1
- package/dist/lib/session/tmux-session-surface.d.ts.map +1 -1
- package/dist/lib/session/tmux-session-surface.js +1 -1
- package/dist/server/locales/en/worktree.json +44 -14
- package/dist/server/locales/ja/worktree.json +44 -14
- package/dist/server/server.js +23 -0
- package/dist/server/src/config/cli-tool-timing-config.js +19 -1
- package/dist/server/src/config/detection-evidence-config.js +3 -0
- package/dist/server/src/config/schedule-config.js +55 -1
- package/dist/server/src/lib/auto-yes-poller.js +47 -4
- package/dist/server/src/lib/cli-tools/agent-mode-spec.js +54 -2
- package/dist/server/src/lib/cli-tools/base.js +6 -2
- package/dist/server/src/lib/cli-tools/command-code.js +55 -1
- package/dist/server/src/lib/cli-tools/composer-spec.js +10 -0
- package/dist/server/src/lib/cli-tools/copilot-executable.js +21 -5
- package/dist/server/src/lib/cli-tools/graceful-exit.js +15 -1
- package/dist/server/src/lib/cli-tools/index.js +3 -1
- package/dist/server/src/lib/cli-tools/install-hints.js +9 -3
- package/dist/server/src/lib/cli-tools/liveness-spec.js +19 -0
- package/dist/server/src/lib/cli-tools/manager.js +2 -0
- package/dist/server/src/lib/cli-tools/opencode-executable.js +179 -0
- package/dist/server/src/lib/cli-tools/opencode-v2.js +369 -0
- package/dist/server/src/lib/cli-tools/opencode.js +29 -5
- package/dist/server/src/lib/cli-tools/types.js +5 -1
- package/dist/server/src/lib/cmate-cli-tool-parser.js +65 -7
- package/dist/server/src/lib/cmate-parser.js +12 -0
- package/dist/server/src/lib/cmate-validator.js +13 -1
- package/dist/server/src/lib/db/worktree-db.js +1 -1
- package/dist/server/src/lib/detection/cli-patterns.js +78 -2
- package/dist/server/src/lib/detection/model-info-extractor.js +79 -7
- package/dist/server/src/lib/detection/status-detector.js +10 -1
- package/dist/server/src/lib/detection/tools/codex/cli-patterns.js +2 -1
- package/dist/server/src/lib/detection/tools/opencode-v2/detect.js +253 -0
- package/dist/server/src/lib/detection/tools/opencode-v2/dialog-title.js +48 -0
- package/dist/server/src/lib/detection/tools/registry.js +2 -0
- package/dist/server/src/lib/detection/tools/run-detection.js +9 -0
- package/dist/server/src/lib/detection/tools/verified-against.js +17 -1
- package/dist/server/src/lib/detection/upstream-faults.js +8 -0
- package/dist/server/src/lib/detection/version-probes.js +14 -1
- package/dist/server/src/lib/hooks/agent-session-telemetry.js +36 -1
- package/dist/server/src/lib/hooks/sources/opencode/log-diagnosis.js +105 -0
- package/dist/server/src/lib/hooks/sources/opencode/source.js +7 -1
- package/dist/server/src/lib/hooks/sources/opencode-v2/client.js +422 -0
- package/dist/server/src/lib/hooks/sources/opencode-v2/decision-labels.js +24 -0
- package/dist/server/src/lib/hooks/sources/opencode-v2/history.js +421 -0
- package/dist/server/src/lib/hooks/sources/opencode-v2/ingest.js +271 -0
- package/dist/server/src/lib/hooks/sources/opencode-v2/mappers.js +165 -0
- package/dist/server/src/lib/hooks/sources/opencode-v2/payloads.js +351 -0
- package/dist/server/src/lib/hooks/sources/opencode-v2/ports.js +230 -0
- package/dist/server/src/lib/hooks/sources/opencode-v2/reattach.js +149 -0
- package/dist/server/src/lib/hooks/sources/opencode-v2/runtime.js +180 -0
- package/dist/server/src/lib/hooks/sources/opencode-v2/secrets.js +182 -0
- package/dist/server/src/lib/hooks/sources/opencode-v2/source.js +295 -0
- package/dist/server/src/lib/hooks/sources/opencode-v2/subscription.js +455 -0
- package/dist/server/src/lib/hooks/sources/opencode-v2/tool-id.js +18 -0
- package/dist/server/src/lib/hooks/sources/opencode-v2/usage.js +214 -0
- package/dist/server/src/lib/hooks/sources/registry.js +2 -0
- package/dist/server/src/lib/hooks/structured-decision-response.js +14 -5
- package/dist/server/src/lib/job-executor.js +2 -1
- package/dist/server/src/lib/polling/auto-yes-dialog-gate.js +15 -1
- package/dist/server/src/lib/polling/structured-history-gate.js +19 -5
- package/dist/server/src/lib/relay/relay-delivery.js +4 -1
- package/dist/server/src/lib/session/agent-event-state.js +24 -0
- package/dist/server/src/lib/session/claude-executor.js +184 -10
- package/dist/server/src/lib/session/current-output-builder.js +27 -3
- package/dist/server/src/lib/session/send-user-message.js +4 -0
- package/dist/server/src/lib/session/structured-prompt.js +54 -0
- package/dist/server/src/lib/session/tmux-session-surface.js +1 -1
- package/dist/server/src/lib/skills/compatibility-matrix.js +65 -0
- package/dist/server/src/lib/tmux/tmux.js +48 -2
- package/dist/server/src/lib/verification/env-clean-gate.js +228 -9
- package/dist/server/src/lib/verification/env-snapshot.js +65 -1
- package/dist/server/src/types/cli-tool-contracts.js +10 -2
- package/dist/types/cli-tool-contracts.d.ts +16 -5
- package/dist/types/cli-tool-contracts.d.ts.map +1 -1
- package/dist/types/cli-tool-contracts.js +10 -2
- package/package.json +2 -1
- package/release-notes/0.42.2.json +20 -0
- package/release-notes/0.43.0.json +130 -0
- package/scripts/hooks/cmate-agent-event.sh +14 -0
- package/scripts/opencode-v2/launch.sh +226 -0
- package/.next/server/chunks/4443.js +0 -3
- package/.next/server/chunks/5164.js +0 -1
- package/.next/server/chunks/650.js +0 -1
- package/.next/static/chunks/5449-550bd273dccc3ae4.js +0 -1
- package/.next/static/chunks/7705-2a2936551b0cf9a3.js +0 -1
- package/.next/static/chunks/8165-934ee7ff3b4ddfd4.js +0 -1
- package/.next/static/chunks/app/review/page-30616daa1dc595c2.js +0 -1
- package/.next/static/chunks/app/skills/[skillId]/page-ab7e432b69fccb3b.js +0 -1
- package/.next/static/chunks/app/skills/page-56b4fa11223e0cbd.js +0 -1
- package/.next/static/chunks/app/worktrees/[id]/page-3c946bd2875391fd.js +0 -1
- /package/.next/static/{3M_S0B7dhEDdVE2XSJz1Y → BVkBYdceLRvMROqQIqeBx}/_buildManifest.js +0 -0
- /package/.next/static/{3M_S0B7dhEDdVE2XSJz1Y → BVkBYdceLRvMROqQIqeBx}/_ssgManifest.js +0 -0
|
@@ -117,7 +117,10 @@
|
|
|
117
117
|
"command-code": "Log out of Command Code or a provider",
|
|
118
118
|
"antigravity": "Log out"
|
|
119
119
|
},
|
|
120
|
-
"quit":
|
|
120
|
+
"quit": {
|
|
121
|
+
"codex": "Exit Codex CLI",
|
|
122
|
+
"opencode-v2": "Exit OpenCode V2"
|
|
123
|
+
},
|
|
121
124
|
"diff": "Show Git diff (including untracked files)",
|
|
122
125
|
"mention": "Attach file/folder for next interaction",
|
|
123
126
|
"mcp": "Manage MCP servers and available tools",
|
|
@@ -126,7 +129,8 @@
|
|
|
126
129
|
"claude": "Generate a CLAUDE.md guide for the repository",
|
|
127
130
|
"copilot": "Initialize Copilot instructions for this repository",
|
|
128
131
|
"opencode": "Run guided AGENTS.md setup",
|
|
129
|
-
"command-code": "Initialize AGENTS.md for this project"
|
|
132
|
+
"command-code": "Initialize AGENTS.md for this project",
|
|
133
|
+
"opencode-v2": "Run guided AGENTS.md setup"
|
|
130
134
|
},
|
|
131
135
|
"feedback": {
|
|
132
136
|
"codex": "Send feedback to Codex team",
|
|
@@ -149,7 +153,8 @@
|
|
|
149
153
|
"copilot": "Manage skills for enhanced capabilities",
|
|
150
154
|
"opencode": "Browse and run available skills",
|
|
151
155
|
"command-code": "Browse and open agent skills",
|
|
152
|
-
"antigravity": "List available skills"
|
|
156
|
+
"antigravity": "List available skills",
|
|
157
|
+
"opencode-v2": "Browse available skills"
|
|
153
158
|
},
|
|
154
159
|
"hooks": "View or manage hook configurations",
|
|
155
160
|
"sessions": "Browse conversation history",
|
|
@@ -160,7 +165,8 @@
|
|
|
160
165
|
"codex": "Exit the CLI",
|
|
161
166
|
"copilot": "Exit the CLI",
|
|
162
167
|
"command-code": "Exit Command Code",
|
|
163
|
-
"antigravity": "Exit the CLI"
|
|
168
|
+
"antigravity": "Exit the CLI",
|
|
169
|
+
"opencode-v2": "Exit OpenCode V2"
|
|
164
170
|
},
|
|
165
171
|
"models": "Switch AI model",
|
|
166
172
|
"agents": {
|
|
@@ -168,7 +174,8 @@
|
|
|
168
174
|
"claude": "Show a reminder to ask Claude to create or manage subagents, or to edit .claude/agents/ directly",
|
|
169
175
|
"codex": "view and switch between all active agent sessions",
|
|
170
176
|
"command-code": "Manage agent configurations",
|
|
171
|
-
"antigravity": "List available custom agents"
|
|
177
|
+
"antigravity": "List available custom agents",
|
|
178
|
+
"opencode-v2": "Switch agent"
|
|
172
179
|
},
|
|
173
180
|
"themes": "Change TUI theme",
|
|
174
181
|
"editor": "Open editor for long messages",
|
|
@@ -182,7 +189,8 @@
|
|
|
182
189
|
"bug": "Report a bug or share your conversation",
|
|
183
190
|
"cd": {
|
|
184
191
|
"claude": "Move this session to a new working directory",
|
|
185
|
-
"codex": "change the current working directory"
|
|
192
|
+
"codex": "change the current working directory",
|
|
193
|
+
"opencode-v2": "Change the working directory"
|
|
186
194
|
},
|
|
187
195
|
"chrome": "Configure Claude in Chrome settings",
|
|
188
196
|
"claude-api": "Load Claude API reference material for your project's language (Python, TypeScript, Java, Go, Ruby, C#, PHP, or cURL) and Managed Agents reference",
|
|
@@ -192,7 +200,8 @@
|
|
|
192
200
|
"dataviz": "Design guidance for charts, graphs, and dashboards",
|
|
193
201
|
"debug": {
|
|
194
202
|
"claude": "Enable debug logging for the current session and troubleshoot issues by reading the session debug log",
|
|
195
|
-
"opencode": "View debug information"
|
|
203
|
+
"opencode": "View debug information",
|
|
204
|
+
"opencode-v2": "View debug information"
|
|
196
205
|
},
|
|
197
206
|
"deep-research": "Fan out web searches on a question, fetch and cross-check sources, and synthesize a cited report",
|
|
198
207
|
"design-login": "Authorize design-system access for /design-sync with your claude.ai account",
|
|
@@ -320,7 +329,10 @@
|
|
|
320
329
|
"rubber-duck": "Get an independent critique of the current work",
|
|
321
330
|
"search": "Search the conversation timeline",
|
|
322
331
|
"session": "View and manage sessions",
|
|
323
|
-
"settings":
|
|
332
|
+
"settings": {
|
|
333
|
+
"copilot": "Open the settings UI, or show and set a single value",
|
|
334
|
+
"opencode-v2": "Open settings"
|
|
335
|
+
},
|
|
324
336
|
"share": "Share the session to a markdown file or a GitHub gist",
|
|
325
337
|
"undo": "Rewind the last turn and revert file changes",
|
|
326
338
|
"update": "Update the CLI to the latest version",
|
|
@@ -351,7 +363,10 @@
|
|
|
351
363
|
"plan-review": "Open this session's latest plan in review",
|
|
352
364
|
"plans": "Browse, review, and annotate saved plans",
|
|
353
365
|
"pr-comments": "Fetch all PR comments for the current branch",
|
|
354
|
-
"reload":
|
|
366
|
+
"reload": {
|
|
367
|
+
"command-code": "Restart the CLI and resume this session, applying a staged update",
|
|
368
|
+
"opencode-v2": "Reload configuration"
|
|
369
|
+
},
|
|
355
370
|
"session-file": "Show the current session id and session file path",
|
|
356
371
|
"taste": "Manage taste learning and usage",
|
|
357
372
|
"todos": "Manage the session todo list",
|
|
@@ -368,7 +383,10 @@
|
|
|
368
383
|
"daemon": "Manage the local background server",
|
|
369
384
|
"warnings": "View retained warnings and diagnostic details",
|
|
370
385
|
"credits": "Show remaining G1 credits and purchase link",
|
|
371
|
-
"open":
|
|
386
|
+
"open": {
|
|
387
|
+
"antigravity": "Open a file or view opened/edited files",
|
|
388
|
+
"opencode-v2": "Open a session or project"
|
|
389
|
+
},
|
|
372
390
|
"schedule": "Run an instruction on a recurring schedule or as a one-time timer",
|
|
373
391
|
"browser": "Invoke a browser agent for web tasks",
|
|
374
392
|
"grill-me": "Have the agent interview you to align on a plan",
|
|
@@ -379,7 +397,16 @@
|
|
|
379
397
|
"automation": "Interactively design and create a scheduled background automation",
|
|
380
398
|
"migrate-workflows": "Migrate legacy workflows to skills",
|
|
381
399
|
"artifact": "View and review artifacts",
|
|
382
|
-
"codesearch": "Search code in the workspace"
|
|
400
|
+
"codesearch": "Search code in the workspace",
|
|
401
|
+
"continue": "Switch to another session",
|
|
402
|
+
"pair": "Pair another device with this OpenCode",
|
|
403
|
+
"project": "Open a session or project",
|
|
404
|
+
"projects": "Open a session or project",
|
|
405
|
+
"q": "Exit OpenCode V2",
|
|
406
|
+
"stats": "Show usage statistics",
|
|
407
|
+
"thinking": "Switch the model variant",
|
|
408
|
+
"web": "Pair another device with this OpenCode",
|
|
409
|
+
"worktrees": "Manage workspaces"
|
|
383
410
|
}
|
|
384
411
|
},
|
|
385
412
|
"session": {
|
|
@@ -1203,10 +1230,12 @@
|
|
|
1203
1230
|
"cycleAria": "Cycle the agent permission mode (shift+tab)",
|
|
1204
1231
|
"cycleFromAria": "Cycle the agent permission mode. Currently {mode}. (shift+tab)",
|
|
1205
1232
|
"note": {
|
|
1206
|
-
"codexModelCoupled": "Codex changes its model and reasoning effort along with the mode."
|
|
1233
|
+
"codexModelCoupled": "Codex changes its model and reasoning effort along with the mode.",
|
|
1234
|
+
"opencodeAgentSwitch": "OpenCode V2 switches between the Build (edits files) and Plan (read-only) agents."
|
|
1207
1235
|
},
|
|
1208
1236
|
"noteShort": {
|
|
1209
|
-
"codexModelCoupled": "Also switches model"
|
|
1237
|
+
"codexModelCoupled": "Also switches model",
|
|
1238
|
+
"opencodeAgentSwitch": "Switches agent"
|
|
1210
1239
|
},
|
|
1211
1240
|
"mode": {
|
|
1212
1241
|
"default": "default",
|
|
@@ -1216,7 +1245,8 @@
|
|
|
1216
1245
|
"auto": "auto",
|
|
1217
1246
|
"autopilot": "autopilot",
|
|
1218
1247
|
"bypass": "permission bypass",
|
|
1219
|
-
"dont-ask": "don't-ask"
|
|
1248
|
+
"dont-ask": "don't-ask",
|
|
1249
|
+
"build": "build"
|
|
1220
1250
|
}
|
|
1221
1251
|
},
|
|
1222
1252
|
"sessionNote": {
|
|
@@ -117,7 +117,10 @@
|
|
|
117
117
|
"command-code": "Command Code またはプロバイダーからログアウト",
|
|
118
118
|
"antigravity": "ログアウト"
|
|
119
119
|
},
|
|
120
|
-
"quit":
|
|
120
|
+
"quit": {
|
|
121
|
+
"codex": "Codex CLI を終了",
|
|
122
|
+
"opencode-v2": "OpenCode V2 を終了"
|
|
123
|
+
},
|
|
121
124
|
"diff": "Git の差分を表示(未追跡ファイルを含む)",
|
|
122
125
|
"mention": "次のやり取りにファイル/フォルダを添付",
|
|
123
126
|
"mcp": "MCP サーバーと利用可能なツールを管理",
|
|
@@ -126,7 +129,8 @@
|
|
|
126
129
|
"claude": "リポジトリ向けの CLAUDE.md ガイドを生成",
|
|
127
130
|
"copilot": "このリポジトリ向けの Copilot 指示ファイルを初期化",
|
|
128
131
|
"opencode": "AGENTS.md のガイド付きセットアップを実行",
|
|
129
|
-
"command-code": "このプロジェクト向けの AGENTS.md を生成"
|
|
132
|
+
"command-code": "このプロジェクト向けの AGENTS.md を生成",
|
|
133
|
+
"opencode-v2": "AGENTS.md のガイド付きセットアップを実行"
|
|
130
134
|
},
|
|
131
135
|
"feedback": {
|
|
132
136
|
"codex": "Codex チームにフィードバックを送信",
|
|
@@ -149,7 +153,8 @@
|
|
|
149
153
|
"copilot": "機能を拡張するスキルを管理",
|
|
150
154
|
"opencode": "利用可能なスキルを一覧・実行",
|
|
151
155
|
"command-code": "エージェントスキルを一覧・表示",
|
|
152
|
-
"antigravity": "利用できるスキルを一覧表示"
|
|
156
|
+
"antigravity": "利用できるスキルを一覧表示",
|
|
157
|
+
"opencode-v2": "利用可能なスキルを一覧"
|
|
153
158
|
},
|
|
154
159
|
"hooks": "フック設定を確認・管理",
|
|
155
160
|
"sessions": "会話履歴を閲覧",
|
|
@@ -160,7 +165,8 @@
|
|
|
160
165
|
"codex": "CLI を終了",
|
|
161
166
|
"copilot": "CLI を終了",
|
|
162
167
|
"command-code": "Command Code を終了",
|
|
163
|
-
"antigravity": "CLI を終了"
|
|
168
|
+
"antigravity": "CLI を終了",
|
|
169
|
+
"opencode-v2": "OpenCode V2 を終了"
|
|
164
170
|
},
|
|
165
171
|
"models": "AI モデルを切り替え",
|
|
166
172
|
"agents": {
|
|
@@ -168,7 +174,8 @@
|
|
|
168
174
|
"claude": "サブエージェントの作成・管理を Claude に依頼するか .claude/agents/ を直接編集するよう促す案内を表示",
|
|
169
175
|
"codex": "稼働中のすべてのエージェントセッションを一覧・切り替え",
|
|
170
176
|
"command-code": "エージェント構成を管理",
|
|
171
|
-
"antigravity": "利用できるカスタムエージェントを一覧表示"
|
|
177
|
+
"antigravity": "利用できるカスタムエージェントを一覧表示",
|
|
178
|
+
"opencode-v2": "エージェントを切り替え"
|
|
172
179
|
},
|
|
173
180
|
"themes": "TUI のテーマを変更",
|
|
174
181
|
"editor": "長文メッセージ用のエディタを開く",
|
|
@@ -182,7 +189,8 @@
|
|
|
182
189
|
"bug": "バグを報告、または会話を共有",
|
|
183
190
|
"cd": {
|
|
184
191
|
"claude": "このセッションの作業ディレクトリを変更",
|
|
185
|
-
"codex": "現在の作業ディレクトリを変更"
|
|
192
|
+
"codex": "現在の作業ディレクトリを変更",
|
|
193
|
+
"opencode-v2": "作業ディレクトリを変更"
|
|
186
194
|
},
|
|
187
195
|
"chrome": "Claude in Chrome の設定",
|
|
188
196
|
"claude-api": "プロジェクトの言語向けの Claude API リファレンスと Managed Agents リファレンスを読み込み",
|
|
@@ -192,7 +200,8 @@
|
|
|
192
200
|
"dataviz": "チャート・グラフ・ダッシュボードの設計ガイダンス",
|
|
193
201
|
"debug": {
|
|
194
202
|
"claude": "デバッグログを有効化し、セッションのデバッグログを読んで問題を切り分け",
|
|
195
|
-
"opencode": "デバッグ情報を表示"
|
|
203
|
+
"opencode": "デバッグ情報を表示",
|
|
204
|
+
"opencode-v2": "デバッグ情報を表示"
|
|
196
205
|
},
|
|
197
206
|
"deep-research": "質問に対して web 検索を展開し、出典を突き合わせて引用付きレポートを作成",
|
|
198
207
|
"design-login": "claude.ai アカウントで /design-sync のデザインシステムアクセスを認可",
|
|
@@ -320,7 +329,10 @@
|
|
|
320
329
|
"rubber-duck": "現在の作業への独立した批評を取得",
|
|
321
330
|
"search": "会話タイムラインを検索",
|
|
322
331
|
"session": "セッションを表示・管理",
|
|
323
|
-
"settings":
|
|
332
|
+
"settings": {
|
|
333
|
+
"copilot": "設定 UI を開く、または個別の値を表示・設定",
|
|
334
|
+
"opencode-v2": "設定を開く"
|
|
335
|
+
},
|
|
324
336
|
"share": "セッションを Markdown ファイルや GitHub gist として共有",
|
|
325
337
|
"undo": "直前のターンを巻き戻してファイル変更を取り消し",
|
|
326
338
|
"update": "CLI を最新バージョンに更新",
|
|
@@ -351,7 +363,10 @@
|
|
|
351
363
|
"plan-review": "このセッションの最新プランをレビュー表示で開く",
|
|
352
364
|
"plans": "保存済みプランの閲覧・レビュー・注釈",
|
|
353
365
|
"pr-comments": "現在のブランチの PR コメントをすべて取得",
|
|
354
|
-
"reload":
|
|
366
|
+
"reload": {
|
|
367
|
+
"command-code": "CLI を再起動してこのセッションを再開し、保留中の更新を適用",
|
|
368
|
+
"opencode-v2": "設定を再読み込み"
|
|
369
|
+
},
|
|
355
370
|
"session-file": "現在のセッション ID とセッションファイルのパスを表示",
|
|
356
371
|
"taste": "taste 学習と利用状況を管理",
|
|
357
372
|
"todos": "セッションの TODO リストを管理",
|
|
@@ -368,7 +383,10 @@
|
|
|
368
383
|
"daemon": "ローカルのバックグラウンドサーバを管理",
|
|
369
384
|
"warnings": "保持されている警告と診断情報を表示",
|
|
370
385
|
"credits": "残りの G1 クレジットと購入リンクを表示",
|
|
371
|
-
"open":
|
|
386
|
+
"open": {
|
|
387
|
+
"antigravity": "ファイルを開く、または開いた・編集したファイルを表示",
|
|
388
|
+
"opencode-v2": "セッションまたはプロジェクトを開く"
|
|
389
|
+
},
|
|
372
390
|
"schedule": "指示を定期実行、または一度きりのタイマーで実行",
|
|
373
391
|
"browser": "ブラウザエージェントで Web 上の作業を実行",
|
|
374
392
|
"grill-me": "計画をすり合わせるために質問してもらう",
|
|
@@ -379,7 +397,16 @@
|
|
|
379
397
|
"automation": "定期実行するバックグラウンド自動処理を対話形式で作成",
|
|
380
398
|
"migrate-workflows": "旧形式のワークフローをスキルへ移行",
|
|
381
399
|
"artifact": "アーティファクトを表示・レビュー",
|
|
382
|
-
"codesearch": "ワークスペース内のコードを検索"
|
|
400
|
+
"codesearch": "ワークスペース内のコードを検索",
|
|
401
|
+
"continue": "別のセッションに切り替え",
|
|
402
|
+
"pair": "この OpenCode に別のデバイスをペアリング",
|
|
403
|
+
"project": "セッションまたはプロジェクトを開く",
|
|
404
|
+
"projects": "セッションまたはプロジェクトを開く",
|
|
405
|
+
"q": "OpenCode V2 を終了",
|
|
406
|
+
"stats": "使用量の統計を表示",
|
|
407
|
+
"thinking": "モデルのバリアントを切り替え",
|
|
408
|
+
"web": "この OpenCode に別のデバイスをペアリング",
|
|
409
|
+
"worktrees": "ワークスペースを管理"
|
|
383
410
|
}
|
|
384
411
|
},
|
|
385
412
|
"session": {
|
|
@@ -1203,10 +1230,12 @@
|
|
|
1203
1230
|
"cycleAria": "エージェントの権限モードを切り替える (shift+tab)",
|
|
1204
1231
|
"cycleFromAria": "エージェントの権限モードを切り替える。現在は {mode}。(shift+tab)",
|
|
1205
1232
|
"note": {
|
|
1206
|
-
"codexModelCoupled": "Codex はモードと連動してモデルと推論の強さも変わります。"
|
|
1233
|
+
"codexModelCoupled": "Codex はモードと連動してモデルと推論の強さも変わります。",
|
|
1234
|
+
"opencodeAgentSwitch": "OpenCode V2 では Build(編集あり)と Plan(読み取りのみ)のエージェントが切り替わります。"
|
|
1207
1235
|
},
|
|
1208
1236
|
"noteShort": {
|
|
1209
|
-
"codexModelCoupled": "モデルも変わる"
|
|
1237
|
+
"codexModelCoupled": "モデルも変わる",
|
|
1238
|
+
"opencodeAgentSwitch": "エージェント切替"
|
|
1210
1239
|
},
|
|
1211
1240
|
"mode": {
|
|
1212
1241
|
"default": "default",
|
|
@@ -1216,7 +1245,8 @@
|
|
|
1216
1245
|
"auto": "auto",
|
|
1217
1246
|
"autopilot": "autopilot",
|
|
1218
1247
|
"bypass": "permission bypass",
|
|
1219
|
-
"dont-ask": "don't-ask"
|
|
1248
|
+
"dont-ask": "don't-ask",
|
|
1249
|
+
"build": "build"
|
|
1220
1250
|
}
|
|
1221
1251
|
},
|
|
1222
1252
|
"sessionNote": {
|
package/dist/server/server.js
CHANGED
|
@@ -717,6 +717,29 @@ app.prepare().then(() => {
|
|
|
717
717
|
})();
|
|
718
718
|
// Initialize worktrees after server starts
|
|
719
719
|
await initializeWorktrees();
|
|
720
|
+
// Issue #2934: re-open the event streams of OpenCode V2 (`opencode-v2`)
|
|
721
|
+
// panes that outlived the last process — the counterpart of the Issue #2108
|
|
722
|
+
// block below for v1, whose TUI is its own server; OpenCode V2's is a
|
|
723
|
+
// separate `opencode2 serve` in the same pane. The sweep re-subscribes every
|
|
724
|
+
// instance whose tmux session is alive (port from
|
|
725
|
+
// `~/.commandmate/opencode-v2/ports.json`, password from the instance's
|
|
726
|
+
// `.pw` file) and deletes the password file and port entry of every instance
|
|
727
|
+
// whose session is gone. Same shape and reasons as the #2108 block: not
|
|
728
|
+
// awaited, fail-open, dynamic import, after `initializeWorktrees()`. The log
|
|
729
|
+
// line carries counts only — never a password or a file's content.
|
|
730
|
+
void (async () => {
|
|
731
|
+
try {
|
|
732
|
+
const { reattachOpencodeV2EventStreams } = await Promise.resolve().then(() => __importStar(require('./src/lib/hooks/sources/opencode-v2/reattach')));
|
|
733
|
+
const report = await reattachOpencodeV2EventStreams();
|
|
734
|
+
if (report.known > 0) {
|
|
735
|
+
console.log(`opencode-v2 streams reattached: ${report.reattached}/${report.candidates} ` +
|
|
736
|
+
`live pane(s) (known=${report.known} swept=${report.swept})`);
|
|
737
|
+
}
|
|
738
|
+
}
|
|
739
|
+
catch (error) {
|
|
740
|
+
console.error('Error reattaching opencode-v2 event streams:', error);
|
|
741
|
+
}
|
|
742
|
+
})();
|
|
720
743
|
// Issue #2108: re-open the event streams of opencode panes that outlived
|
|
721
744
|
// the last process. The port each one's server listens on is in
|
|
722
745
|
// `~/.commandmate/opencode-ports.json`, and until this call nothing read it
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
* All values are preserved from the original literals (no behavior change).
|
|
21
21
|
*/
|
|
22
22
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
23
|
-
exports.LIVENESS_CONFIRM_DELAY_MS = exports.CLAUDE_RESTART_DELAY_MS = exports.CLAUDE_ENV_SANITIZE_WAIT_MS = exports.COMMAND_CODE_INIT_WAIT_MS = exports.VIBE_LOCAL_DOUBLE_ENTER_WAIT_MS = exports.COPILOT_EXIT_WAIT_MS = exports.OPENCODE_INTERRUPT_SECOND_ESCAPE_DELAY_MS = exports.OPENCODE_EXIT_WAIT_MS = exports.CODEX_DIALOG_SETTLE_MS = exports.TUI_EXIT_WAIT_MS = exports.TUI_INTERRUPT_SETTLE_MS = exports.TUI_MESSAGE_PROCESSED_WAIT_MS = exports.TUI_TEXT_INPUT_WAIT_MS = exports.TUI_SESSION_CREATE_WAIT_MS = void 0;
|
|
23
|
+
exports.LIVENESS_CONFIRM_DELAY_MS = exports.CLAUDE_RESTART_DELAY_MS = exports.CLAUDE_ENV_SANITIZE_WAIT_MS = exports.OPENCODE_V2_COMPOSER_WAIT_MS = exports.OPENCODE_V2_EXIT_WAIT_MS = exports.COMMAND_CODE_INIT_WAIT_MS = exports.VIBE_LOCAL_DOUBLE_ENTER_WAIT_MS = exports.COPILOT_EXIT_WAIT_MS = exports.OPENCODE_INTERRUPT_SECOND_ESCAPE_DELAY_MS = exports.OPENCODE_EXIT_WAIT_MS = exports.CODEX_DIALOG_SETTLE_MS = exports.TUI_EXIT_WAIT_MS = exports.TUI_INTERRUPT_SETTLE_MS = exports.TUI_MESSAGE_PROCESSED_WAIT_MS = exports.TUI_TEXT_INPUT_WAIT_MS = exports.TUI_SESSION_CREATE_WAIT_MS = void 0;
|
|
24
24
|
/**
|
|
25
25
|
* Wait (ms) after `createSession()` before sending the first keys, giving tmux
|
|
26
26
|
* time to spin up the session.
|
|
@@ -138,6 +138,24 @@ exports.VIBE_LOCAL_DOUBLE_ENTER_WAIT_MS = 200;
|
|
|
138
138
|
* rows, then the rules).
|
|
139
139
|
*/
|
|
140
140
|
exports.COMMAND_CODE_INIT_WAIT_MS = 3000;
|
|
141
|
+
/**
|
|
142
|
+
* Wait (ms) after OpenCode V2's `/exit` before its postcondition is checked
|
|
143
|
+
* (Issue #2934).
|
|
144
|
+
*
|
|
145
|
+
* Longer than {@link OPENCODE_EXIT_WAIT_MS} because two processes go away, not
|
|
146
|
+
* one: the TUI quits, then `scripts/opencode-v2/launch.sh`'s trap stops the
|
|
147
|
+
* `opencode2 serve` it started (SIGTERM, then SIGKILL after 3 s). The
|
|
148
|
+
* postcondition that follows (`verifyGracefulExit`) still polls, so this only
|
|
149
|
+
* keeps the first probe from firing while the server is shutting down.
|
|
150
|
+
* Site: opencode-v2 killSession().
|
|
151
|
+
*/
|
|
152
|
+
exports.OPENCODE_V2_EXIT_WAIT_MS = 3000;
|
|
153
|
+
/**
|
|
154
|
+
* Upper bound (ms) on waiting for OpenCode V2's composer before a send
|
|
155
|
+
* (Issue #2934, D6).
|
|
156
|
+
* Site: opencode-v2 sendMessage().
|
|
157
|
+
*/
|
|
158
|
+
exports.OPENCODE_V2_COMPOSER_WAIT_MS = 15000;
|
|
141
159
|
/**
|
|
142
160
|
* Wait (ms) for the `unset CLAUDECODE` command to reach the shell while
|
|
143
161
|
* sanitizing the session environment (empirically determined).
|
|
@@ -79,6 +79,9 @@ exports.IDLE_EVIDENCE_DEFAULT_MODE = {
|
|
|
79
79
|
// whatever this row says, and claiming `enforce` would state a rollout that
|
|
80
80
|
// does not exist. Epic #2249 決定 3 pins the same value from the other side.
|
|
81
81
|
'command-code': 'legacy',
|
|
82
|
+
// Issue #2934: OpenCode V2 Phase 1 declares no `readIdleEvidence` either, so
|
|
83
|
+
// `legacy` is the honest row; its state comes from the SSE stream.
|
|
84
|
+
'opencode-v2': 'legacy',
|
|
82
85
|
};
|
|
83
86
|
/**
|
|
84
87
|
* The kill switch.
|
|
@@ -10,7 +10,8 @@
|
|
|
10
10
|
* [S4-014] UUID v4 format validation
|
|
11
11
|
*/
|
|
12
12
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
-
exports.UUID_V4_PATTERN = exports.DEFAULT_PERMISSIONS = exports.NO_PERMISSION_FLAGS = exports.OPENCODE_PERMISSIONS = exports.VIBE_LOCAL_PERMISSIONS = exports.GEMINI_PERMISSIONS = exports.COMMAND_CODE_SCHEDULE_PERMISSIONS = exports.COMMAND_CODE_YOLO_PERMISSION = exports.COMMAND_CODE_PERMISSIONS = exports.ANTIGRAVITY_PERMISSIONS = exports.COPILOT_PERMISSIONS = exports.CODEX_SANDBOXES = exports.CLAUDE_PERMISSIONS = exports.MAX_SCHEDULE_CRON_LENGTH = exports.MAX_SCHEDULE_MESSAGE_LENGTH = exports.MAX_SCHEDULE_NAME_LENGTH = void 0;
|
|
13
|
+
exports.UUID_V4_PATTERN = exports.SCHEDULE_UNSUPPORTED_CLI_TOOLS = exports.DEFAULT_PERMISSIONS = exports.NO_PERMISSION_FLAGS = exports.OPENCODE_V2_PERMISSIONS = exports.OPENCODE_V2_AUTO_PERMISSION = exports.OPENCODE_V2_DEFAULT_PERMISSION = exports.OPENCODE_PERMISSIONS = exports.VIBE_LOCAL_PERMISSIONS = exports.GEMINI_PERMISSIONS = exports.COMMAND_CODE_SCHEDULE_PERMISSIONS = exports.COMMAND_CODE_YOLO_PERMISSION = exports.COMMAND_CODE_PERMISSIONS = exports.ANTIGRAVITY_PERMISSIONS = exports.COPILOT_PERMISSIONS = exports.CODEX_SANDBOXES = exports.CLAUDE_PERMISSIONS = exports.MAX_SCHEDULE_CRON_LENGTH = exports.MAX_SCHEDULE_MESSAGE_LENGTH = exports.MAX_SCHEDULE_NAME_LENGTH = void 0;
|
|
14
|
+
exports.isScheduleSupportedCliTool = isScheduleSupportedCliTool;
|
|
14
15
|
exports.getPermissionOptionsForTool = getPermissionOptionsForTool;
|
|
15
16
|
exports.isValidUuidV4 = isValidUuidV4;
|
|
16
17
|
// =============================================================================
|
|
@@ -117,6 +118,38 @@ exports.VIBE_LOCAL_PERMISSIONS = [];
|
|
|
117
118
|
* CommandMate does not pass it. Wiring it up is a separate decision.
|
|
118
119
|
*/
|
|
119
120
|
exports.OPENCODE_PERMISSIONS = [];
|
|
121
|
+
/** OpenCode V2 Permission value that passes no flag (Issue #2974). */
|
|
122
|
+
exports.OPENCODE_V2_DEFAULT_PERMISSION = 'default';
|
|
123
|
+
/** OpenCode V2 Permission value that passes `--auto` (Issue #2974). */
|
|
124
|
+
exports.OPENCODE_V2_AUTO_PERMISSION = 'auto';
|
|
125
|
+
/**
|
|
126
|
+
* Allowed permission values for OpenCode V2 (Issue #2934, #2974).
|
|
127
|
+
*
|
|
128
|
+
* `opencode2 run` has one permission switch, `--auto` ("auto-approve
|
|
129
|
+
* permissions that are not explicitly denied"). The column names both sides of
|
|
130
|
+
* it — `default` passes nothing, `auto` passes `--auto` — so the dropdown can
|
|
131
|
+
* offer the flag-less run as a choice rather than as a blank cell.
|
|
132
|
+
*
|
|
133
|
+
* Measured on 2.0.18 (isolated `HOME` / `XDG_*`,
|
|
134
|
+
* `tests/fixtures/opencode-v2-schedule-2974/`):
|
|
135
|
+
*
|
|
136
|
+
* - with no `permission` config a write goes through without `--auto`;
|
|
137
|
+
* - an `ask` rule is auto-rejected ("permission requested: edit (…);
|
|
138
|
+
* auto-rejecting" on stderr), the stream ends in an `error` frame and the
|
|
139
|
+
* process exits 1 — so the run fails loudly, it never "succeeds" having done
|
|
140
|
+
* nothing (the #2454 failure mode);
|
|
141
|
+
* - `--auto` approves the same `ask` rule and the run exits 0;
|
|
142
|
+
* - `deny` is not a sandbox: with `edit: deny` / `write: deny` and `--auto`
|
|
143
|
+
* the model wrote the file through the `shell` tool.
|
|
144
|
+
*
|
|
145
|
+
* So the default is `default`: an operator who wrote `ask` asked for a human,
|
|
146
|
+
* and without one the schedule is recorded as failed. `auto` is for an operator
|
|
147
|
+
* who wants those rules approved unattended.
|
|
148
|
+
*/
|
|
149
|
+
exports.OPENCODE_V2_PERMISSIONS = [
|
|
150
|
+
exports.OPENCODE_V2_DEFAULT_PERMISSION,
|
|
151
|
+
exports.OPENCODE_V2_AUTO_PERMISSION,
|
|
152
|
+
];
|
|
120
153
|
/**
|
|
121
154
|
* What a CLI tool with no permission flag at all resolves to (Issue #1914).
|
|
122
155
|
*
|
|
@@ -148,7 +181,25 @@ exports.DEFAULT_PERMISSIONS = {
|
|
|
148
181
|
// run still reports success, so an unattended schedule that omits the column
|
|
149
182
|
// would look like it worked and change nothing.
|
|
150
183
|
'command-code': exports.COMMAND_CODE_YOLO_PERMISSION,
|
|
184
|
+
// Issue #2974: no `--auto` -- an `ask` rule then fails the run (exit 1)
|
|
185
|
+
// instead of being approved; see OPENCODE_V2_PERMISSIONS.
|
|
186
|
+
'opencode-v2': exports.OPENCODE_V2_DEFAULT_PERMISSION,
|
|
151
187
|
};
|
|
188
|
+
/**
|
|
189
|
+
* CLI tools that are registered but cannot be the CLI Tool of a CMATE.md
|
|
190
|
+
* schedule (Issue #2934).
|
|
191
|
+
*
|
|
192
|
+
* A tool listed here is a validation error in `cmate-validator`, a skipped row
|
|
193
|
+
* in `cmate-parser`, a rejected input in `cmate-writer` and absent from the
|
|
194
|
+
* schedule dialog. Empty since Issue #2974, which measured and wired OpenCode
|
|
195
|
+
* V2's headless path (`opencode2 run --standalone --format json`); kept as the
|
|
196
|
+
* one place a future tool without a measured headless path is listed.
|
|
197
|
+
*/
|
|
198
|
+
exports.SCHEDULE_UNSUPPORTED_CLI_TOOLS = [];
|
|
199
|
+
/** Whether a CLI tool can be scheduled (see {@link SCHEDULE_UNSUPPORTED_CLI_TOOLS}). */
|
|
200
|
+
function isScheduleSupportedCliTool(cliToolId) {
|
|
201
|
+
return !exports.SCHEDULE_UNSUPPORTED_CLI_TOOLS.includes(cliToolId);
|
|
202
|
+
}
|
|
152
203
|
/**
|
|
153
204
|
* Resolve the allowed Permission dropdown options for a CLI tool (Issue #824).
|
|
154
205
|
*
|
|
@@ -193,6 +244,9 @@ function getPermissionOptionsForTool(cliToolId) {
|
|
|
193
244
|
return exports.VIBE_LOCAL_PERMISSIONS;
|
|
194
245
|
case 'opencode':
|
|
195
246
|
return exports.OPENCODE_PERMISSIONS;
|
|
247
|
+
case 'opencode-v2':
|
|
248
|
+
// Issue #2974: `default` (no flag) or `auto` (`--auto`).
|
|
249
|
+
return exports.OPENCODE_V2_PERMISSIONS;
|
|
196
250
|
default:
|
|
197
251
|
return exports.NO_PERMISSION_FLAGS;
|
|
198
252
|
}
|
|
@@ -206,6 +206,45 @@ function isDuplicatePrompt(pollerState, promptKey) {
|
|
|
206
206
|
return false;
|
|
207
207
|
return (Date.now() - pollerState.lastAnsweredAt) < auto_yes_state_1.DUPLICATE_RETRY_EXPIRY_MS;
|
|
208
208
|
}
|
|
209
|
+
/**
|
|
210
|
+
* Issue #2995: print a "did not answer" line as WARN once per frame.
|
|
211
|
+
*
|
|
212
|
+
* The poller re-reads a static pane every 2s, so a frame Auto-Yes leaves alone
|
|
213
|
+
* (a reply quoting `1. Yes / 2. No`, a launch dialog, a policy-withheld prompt,
|
|
214
|
+
* a foreign session) would otherwise print the same WARN on every tick. The
|
|
215
|
+
* first one stays WARN -- it is what tells a silently stalled worker apart --
|
|
216
|
+
* and repeats for the same frame drop to `debug`. The frame is identified by
|
|
217
|
+
* the event, `promptFrameKey()` and the event's own detail; a different
|
|
218
|
+
* prompt, a different reason, or a tick with no prompt / an answer sent (both
|
|
219
|
+
* clear the key) makes the next line WARN again.
|
|
220
|
+
* `recordPolicySuppression()` is not throttled: `capture --json` and `wait`
|
|
221
|
+
* read the latest record, not the log.
|
|
222
|
+
*/
|
|
223
|
+
/**
|
|
224
|
+
* Issue #2995: what makes two ticks "the same prompt" for `warnOncePerFrame`.
|
|
225
|
+
*
|
|
226
|
+
* `generatePromptKey` alone is type + question, and the question the detector
|
|
227
|
+
* extracts from an agent's reply is often a fixed line above the list, so two
|
|
228
|
+
* different lists would share it. The option rows (and where the cursor sits)
|
|
229
|
+
* plus `approvalTarget` -- the current prompt's own panel, which leaves out
|
|
230
|
+
* scrollback and footers that change while the prompt does not -- separate them.
|
|
231
|
+
* Not the whole pane: a status bar that ticks every second would defeat it.
|
|
232
|
+
*/
|
|
233
|
+
function promptFrameKey(promptData) {
|
|
234
|
+
const options = promptData.type === 'multiple_choice'
|
|
235
|
+
? promptData.options.map((o) => `${o.isDefault ? '>' : ''}${o.number}.${o.label}`).join('\n')
|
|
236
|
+
: '';
|
|
237
|
+
return [(0, prompt_key_1.generatePromptKey)(promptData), options, promptData.approvalTarget ?? ''].join('\u0000');
|
|
238
|
+
}
|
|
239
|
+
function warnOncePerFrame(pollerState, frameKey, event, fields) {
|
|
240
|
+
const key = `${event}\u0000${frameKey}`;
|
|
241
|
+
if (pollerState.lastSkipWarnKey === key) {
|
|
242
|
+
logger.debug(event, { ...fields, repeated: true });
|
|
243
|
+
return;
|
|
244
|
+
}
|
|
245
|
+
pollerState.lastSkipWarnKey = key;
|
|
246
|
+
logger.warn(event, fields);
|
|
247
|
+
}
|
|
209
248
|
// =============================================================================
|
|
210
249
|
// Extracted Functions for pollAutoYes (Issue #323: SRP decomposition)
|
|
211
250
|
// =============================================================================
|
|
@@ -403,6 +442,7 @@ async function detectAndRespondToPrompt(worktreeId, pollerState, cliToolId, clea
|
|
|
403
442
|
if (!promptDetection.isPrompt || !promptDetection.promptData) {
|
|
404
443
|
pollerState.lastAnsweredPromptKey = null;
|
|
405
444
|
pollerState.lastAnsweredAt = null;
|
|
445
|
+
pollerState.lastSkipWarnKey = null;
|
|
406
446
|
if (cliToolId === 'antigravity' && !promptDetection.isPrompt) {
|
|
407
447
|
logIfWithheldForWantOfReceipt(worktreeId, instanceId, compositeKey, () => (0, response_checker_1.detectPromptOnCleanFrame)(cleanOutput, cliToolId, precomputedLines, rawOutput));
|
|
408
448
|
}
|
|
@@ -410,6 +450,7 @@ async function detectAndRespondToPrompt(worktreeId, pollerState, cliToolId, clea
|
|
|
410
450
|
}
|
|
411
451
|
// 2. Check for duplicate prompt (Issue #306)
|
|
412
452
|
const promptKey = (0, prompt_key_1.generatePromptKey)(promptDetection.promptData);
|
|
453
|
+
const frameKey = promptFrameKey(promptDetection.promptData);
|
|
413
454
|
if (isDuplicatePrompt(pollerState, promptKey)) {
|
|
414
455
|
return 'duplicate';
|
|
415
456
|
}
|
|
@@ -440,7 +481,7 @@ async function detectAndRespondToPrompt(worktreeId, pollerState, cliToolId, clea
|
|
|
440
481
|
mode: null,
|
|
441
482
|
promptType: promptDetection.promptData.type,
|
|
442
483
|
});
|
|
443
|
-
|
|
484
|
+
warnOncePerFrame(pollerState, `${frameKey}\u0000${launchDialog}`, 'poller:auto-yes-skipped-launch-dialog', {
|
|
444
485
|
worktreeId,
|
|
445
486
|
cliToolId,
|
|
446
487
|
instanceId,
|
|
@@ -473,7 +514,7 @@ async function detectAndRespondToPrompt(worktreeId, pollerState, cliToolId, clea
|
|
|
473
514
|
mode: null,
|
|
474
515
|
promptType: promptDetection.promptData.type,
|
|
475
516
|
});
|
|
476
|
-
|
|
517
|
+
warnOncePerFrame(pollerState, `${frameKey}\u0000${dialogGate.dialog?.kind ?? ''}\u0000${dialogGate.mode}`, 'poller:auto-yes-skipped-unclassified-frame', {
|
|
477
518
|
worktreeId,
|
|
478
519
|
cliToolId,
|
|
479
520
|
instanceId,
|
|
@@ -502,7 +543,7 @@ async function detectAndRespondToPrompt(worktreeId, pollerState, cliToolId, clea
|
|
|
502
543
|
promptType: promptDetection.promptData.type,
|
|
503
544
|
pattern: resolution.pattern,
|
|
504
545
|
});
|
|
505
|
-
|
|
546
|
+
warnOncePerFrame(pollerState, `${frameKey}\u0000${resolution.suppressedBy}\u0000${policy?.mode ?? ''}\u0000${resolution.pattern ?? ''}`, 'poller:auto-yes-suppressed-by-policy', {
|
|
506
547
|
worktreeId,
|
|
507
548
|
cliToolId,
|
|
508
549
|
instanceId,
|
|
@@ -524,7 +565,7 @@ async function detectAndRespondToPrompt(worktreeId, pollerState, cliToolId, clea
|
|
|
524
565
|
// server created. The poller keeps running; it just does not type.
|
|
525
566
|
const ownership = await (0, worktree_session_ownership_1.checkWorktreeSessionOwnership)(worktreeId, sessionName);
|
|
526
567
|
if (ownership === null || ownership.verdict === 'foreign') {
|
|
527
|
-
|
|
568
|
+
warnOncePerFrame(pollerState, `${frameKey}\u0000${sessionName}\u0000${ownership ? 'foreign' : 'worktree_not_found'}`, 'poller:auto-yes-skipped-foreign-session', {
|
|
528
569
|
worktreeId,
|
|
529
570
|
cliToolId,
|
|
530
571
|
instanceId,
|
|
@@ -551,6 +592,7 @@ async function detectAndRespondToPrompt(worktreeId, pollerState, cliToolId, clea
|
|
|
551
592
|
// 7. Record answered prompt key and timestamp
|
|
552
593
|
pollerState.lastAnsweredPromptKey = promptKey;
|
|
553
594
|
pollerState.lastAnsweredAt = Date.now();
|
|
595
|
+
pollerState.lastSkipWarnKey = null;
|
|
554
596
|
logger.info('poller:response-sent', { worktreeId, cliToolId, instanceId });
|
|
555
597
|
// Issue #1548: the prompt was answered without a human. Raised only after
|
|
556
598
|
// the keys actually reached tmux, so a send that threw is not logged as an
|
|
@@ -736,6 +778,7 @@ function startAutoYesPolling(worktreeId, cliToolId, instanceId) {
|
|
|
736
778
|
lastAnsweredPromptKey: null,
|
|
737
779
|
lastAnsweredAt: null,
|
|
738
780
|
stopCheckBaselineLength: -1,
|
|
781
|
+
lastSkipWarnKey: null,
|
|
739
782
|
};
|
|
740
783
|
autoYesPollerStates.set(compositeKey, pollerState);
|
|
741
784
|
// A task may have been recorded moments ago; start from a fresh policy read.
|