commandmate 0.45.1 → 0.46.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 +302 -298
- package/.next/app-path-routes-manifest.json +15 -15
- package/.next/build-manifest.json +5 -5
- package/.next/prerender-manifest.json +9 -9
- package/.next/react-loadable-manifest.json +4 -4
- package/.next/required-server-files.json +1 -1
- package/.next/server/app/_not-found/page.js +1 -1
- package/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/server/app/api/agents/update/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/agents/versions/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/app/release-notes/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/app/update/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/app/update-check/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/auth/login/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/auth/logout/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/auth/status/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/capabilities/route.js +1 -1
- package/.next/server/app/api/capabilities/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/daily-summary/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/daily-summary/status/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/external-apps/[id]/health/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/external-apps/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/external-apps/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/fs/browse/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/fs/recent-paths/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/hooks/agent-event/route_client-reference-manifest.js +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_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_client-reference-manifest.js +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_client-reference-manifest.js +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_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/scan/route_client-reference-manifest.js +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_client-reference-manifest.js +1 -1
- package/.next/server/app/api/settings/default-surface-mode/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/sidebar/group-order/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/skills/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/skills/installations/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/skills/operations/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/skills/reindex/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/skills/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/slash-commands/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/tasks/[taskId]/cancel/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/tasks/[taskId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/templates/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/templates/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/verification/runs/[runId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/verification/runs/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/auto-yes/route_client-reference-manifest.js +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_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 -3
- 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_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/direct-input/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/env/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/execution-logs/[logId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/execution-logs/route.js +3 -3
- 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_client-reference-manifest.js +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_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/logs/[filename]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/logs/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/marp-render/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/memos/[memoId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/memos/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/messages/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/opencode/diff/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/opencode/session/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/opencode/share/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/prompt-response/route_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_client-reference-manifest.js +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 -3
- 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 -3
- 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 -3
- 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_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/install/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/plan/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update-plan/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/slash-commands/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/special-keys/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/tasks/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/terminal/route_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_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/todos/[todoId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/todos/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/tree/[...path]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/tree/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/upload/[...path]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/config/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/route_client-reference-manifest.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_client-reference-manifest.js +1 -1
- package/.next/server/app/login/page.js +1 -1
- package/.next/server/app/login/page.js.nft.json +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.js +1 -1
- package/.next/server/app/more/page.js.nft.json +1 -1
- package/.next/server/app/more/page_client-reference-manifest.js +1 -1
- package/.next/server/app/offline/page.js +1 -1
- package/.next/server/app/offline/page.js.nft.json +1 -1
- package/.next/server/app/offline/page_client-reference-manifest.js +1 -1
- package/.next/server/app/page.js +1 -1
- package/.next/server/app/page.js.nft.json +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.js +2 -2
- package/.next/server/app/repositories/page.js.nft.json +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.js.nft.json +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.js +1 -1
- package/.next/server/app/skills/[skillId]/page.js.nft.json +1 -1
- package/.next/server/app/skills/[skillId]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/skills/installed/page.js +1 -1
- package/.next/server/app/skills/installed/page.js.nft.json +1 -1
- package/.next/server/app/skills/installed/page_client-reference-manifest.js +1 -1
- package/.next/server/app/skills/page.js +1 -1
- package/.next/server/app/skills/page.js.nft.json +1 -1
- package/.next/server/app/skills/page_client-reference-manifest.js +1 -1
- package/.next/server/app/worktrees/[id]/files/[...path]/page.js +1 -1
- package/.next/server/app/worktrees/[id]/files/[...path]/page.js.nft.json +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 +12 -9
- 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.js +1 -1
- package/.next/server/app/worktrees/[id]/terminal/page.js.nft.json +1 -1
- package/.next/server/app/worktrees/[id]/terminal/page_client-reference-manifest.js +1 -1
- package/.next/server/app-paths-manifest.json +15 -15
- package/.next/server/chunks/1341.js +1 -1
- package/.next/server/chunks/1501.js +2 -2
- package/.next/server/chunks/2119.js +1 -1
- package/.next/server/chunks/2283.js +15 -13
- package/.next/server/chunks/2404.js +4 -4
- package/.next/server/chunks/2445.js +1 -1
- package/.next/server/chunks/2560.js +1 -1
- package/.next/server/chunks/3543.js +1 -1
- package/.next/server/chunks/3945.js +1 -1
- package/.next/server/chunks/4072.js +15 -0
- package/.next/server/chunks/4207.js +1 -1
- package/.next/server/chunks/4718.js +3 -3
- package/.next/server/chunks/4837.js +3 -3
- package/.next/server/chunks/5625.js +1 -1
- package/.next/server/chunks/6130.js +1 -1
- package/.next/server/chunks/6345.js +1 -0
- package/.next/server/chunks/6401.js +1 -1
- package/.next/server/chunks/6722.js +1 -0
- package/.next/server/chunks/8098.js +1 -1
- package/.next/server/chunks/8356.js +1 -1
- package/.next/server/chunks/8581.js +25 -29
- package/.next/server/chunks/8728.js +1 -1
- package/.next/server/chunks/8800.js +4 -4
- package/.next/server/chunks/9731.js +1 -1
- package/.next/server/middleware-build-manifest.js +1 -1
- package/.next/server/middleware-manifest.json +5 -5
- package/.next/server/middleware-react-loadable-manifest.js +1 -1
- package/.next/server/pages/500.html +1 -1
- package/.next/server/pages/_error.js +2 -2
- package/.next/server/server-reference-manifest.json +1 -1
- package/.next/static/chunks/{2407-86890b00eeecf391.js → 2407-acb644c5487e1720.js} +1 -1
- package/.next/static/chunks/{2619-a305ad4810f1393a.js → 2619-04bc32f026a0d946.js} +1 -1
- package/.next/static/chunks/2717.21abf5b6bbd45520.js +1 -0
- package/.next/static/chunks/2770-db80aedf6384d594.js +1 -0
- package/.next/static/chunks/2863-6a07ec82fb52f4dd.js +1 -0
- package/.next/static/chunks/3201-c01f1feed69020e6.js +1 -0
- package/.next/static/chunks/4768-ad6f82f034f21eae.js +1 -0
- package/.next/static/chunks/5371-a94ed618148287a0.js +1 -0
- package/.next/static/chunks/5794-947fb4934d8be193.js +1 -0
- package/.next/static/chunks/5927-54315d21f323e204.js +1 -0
- package/.next/static/chunks/602-25e45a2422d2a3ea.js +1 -0
- package/.next/static/chunks/6606-02ddc006686a6b7d.js +1 -0
- package/.next/static/chunks/6654-f3534f35f16644bc.js +1 -0
- package/.next/static/chunks/7730-011e137be64403ae.js +1 -0
- package/.next/static/chunks/8165-263172c17ae8e8c3.js +1 -0
- package/.next/static/chunks/8606-cf6bdbff44a764cf.js +1 -0
- package/.next/static/chunks/934-a37509667baa86ee.js +1 -0
- package/.next/static/chunks/9465-e5a351baa941f31b.js +1 -0
- package/.next/static/chunks/app/layout-ae30ce63569c22be.js +1 -0
- package/.next/static/chunks/app/repositories/page-71f5a5ac29b0370d.js +1 -0
- package/.next/static/chunks/app/review/page-e2fd4a590646a2d8.js +1 -0
- package/.next/static/chunks/app/sessions/page-9859ed61e93e6890.js +1 -0
- package/.next/static/chunks/app/skills/[skillId]/page-52ba58712faf3378.js +1 -0
- package/.next/static/chunks/app/worktrees/[id]/page-2eb1d0fd0a077b7e.js +1 -0
- package/.next/static/chunks/app/worktrees/[id]/terminal/{page-c601f3b3ece6557e.js → page-373ea37b16d930c7.js} +1 -1
- package/.next/static/chunks/{webpack-ee3ccbe378c4aa06.js → webpack-c0b821f340afdebf.js} +1 -1
- package/.next/static/css/743f79ff19ab91e9.css +1 -0
- package/.next/trace +13 -13
- package/dist/server/locales/en/worktree.json +46 -16
- package/dist/server/locales/ja/worktree.json +46 -16
- package/dist/server/src/config/activity-bar-config.js +56 -9
- package/dist/server/src/lib/polling/prompt-dedup-state.js +26 -7
- package/dist/server/src/lib/polling/prompt-dedup.js +50 -22
- package/dist/server/src/lib/polling/response-checker.js +14 -1
- package/dist/server/src/lib/polling/response-dedup.js +104 -20
- package/dist/server/src/lib/polling/response-poller-core.js +47 -26
- package/dist/server/src/lib/session/next-action-helper.js +2 -15
- package/dist/server/src/lib/verification/env-clean-gate.js +14 -1
- package/dist/server/src/lib/verification/gate-runner.js +17 -11
- package/dist/server/src/lib/verification/scope-gate.js +169 -3
- package/dist/server/src/types/sidebar.js +1 -0
- package/docs/en/architecture.md +26 -14
- package/docs/en/user-guide/webapp-guide.md +31 -18
- package/package.json +1 -1
- package/release-notes/0.46.0.json +110 -0
- package/.next/server/chunks/1674.js +0 -15
- package/.next/server/chunks/6927.js +0 -1
- package/.next/server/chunks/9355.js +0 -1
- package/.next/static/chunks/1642-0f1bf8fb8161e10a.js +0 -1
- package/.next/static/chunks/2770-827a64760bab8a3a.js +0 -1
- package/.next/static/chunks/3922.0bc2e4e168d2b522.js +0 -1
- package/.next/static/chunks/4727-4c69d1aa4118cc09.js +0 -1
- package/.next/static/chunks/4768-fc0aa1d0891cac08.js +0 -1
- package/.next/static/chunks/5371-af1c2b68e983da61.js +0 -1
- package/.next/static/chunks/5521-c358c31f60e5e689.js +0 -1
- package/.next/static/chunks/6192-a67df090838b9aad.js +0 -1
- package/.next/static/chunks/6322-f1b30ed0ee43518f.js +0 -1
- package/.next/static/chunks/6654-ac431270fac1a283.js +0 -1
- package/.next/static/chunks/8165-3525fb42f1b4976e.js +0 -1
- package/.next/static/chunks/8318-01e7d1e5ad0a15a3.js +0 -1
- package/.next/static/chunks/8606-79c36d4c204bbd38.js +0 -1
- package/.next/static/chunks/9619-6c17a271f7f98fbb.js +0 -1
- package/.next/static/chunks/998-2eb5883186abd0bd.js +0 -1
- package/.next/static/chunks/app/layout-eaa6365f8f942e88.js +0 -1
- package/.next/static/chunks/app/repositories/page-6f7511f4ac8449e2.js +0 -1
- package/.next/static/chunks/app/review/page-95f749caae382f46.js +0 -1
- package/.next/static/chunks/app/sessions/page-ebfed2c80e916fb8.js +0 -1
- package/.next/static/chunks/app/skills/[skillId]/page-e4b14031f946c007.js +0 -1
- package/.next/static/chunks/app/worktrees/[id]/page-3372b78fde232b1f.js +0 -1
- package/.next/static/css/6faeb04a0b6819d4.css +0 -1
- /package/.next/static/{vYIpFRCU_Mt0wtG8F_3-6 → zI2nQ6WKboSbFbMF4EtrJ}/_buildManifest.js +0 -0
- /package/.next/static/{vYIpFRCU_Mt0wtG8F_3-6 → zI2nQ6WKboSbFbMF4EtrJ}/_ssgManifest.js +0 -0
|
@@ -1,7 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"agentStatus": {
|
|
3
|
-
"
|
|
4
|
-
"
|
|
3
|
+
"overflowTrigger": "More agents",
|
|
4
|
+
"otherSessions": "{count} more",
|
|
5
|
+
"otherSessionsLabel": "{count} other sessions",
|
|
6
|
+
"otherSessionsWaitingLabel": "{count} other sessions, {waiting} waiting for your answer",
|
|
7
|
+
"otherSessionsList": "Other sessions",
|
|
8
|
+
"inSplit": "Split {index}",
|
|
9
|
+
"addSession": "Add session…"
|
|
5
10
|
},
|
|
6
11
|
"toc": {
|
|
7
12
|
"title": "Contents",
|
|
@@ -508,6 +513,7 @@
|
|
|
508
513
|
},
|
|
509
514
|
"terminal": {
|
|
510
515
|
"historyLabel": "History",
|
|
516
|
+
"actionBarMore": "Show hidden items",
|
|
511
517
|
"filesLabel": "Open Files",
|
|
512
518
|
"showHistory": "Show history",
|
|
513
519
|
"hideHistory": "Hide history",
|
|
@@ -515,8 +521,6 @@
|
|
|
515
521
|
"hideFiles": "Hide open files",
|
|
516
522
|
"equalizeWidths": "Equal widths",
|
|
517
523
|
"equalizeWidthsHint": "Equalize terminal widths and reset History width",
|
|
518
|
-
"addSplit": "Add split",
|
|
519
|
-
"removeSplit": "Remove split",
|
|
520
524
|
"selectInstance": "Select agent instance for {split}",
|
|
521
525
|
"moreActions": "More actions",
|
|
522
526
|
"searchTerminal": "Search terminal",
|
|
@@ -531,7 +535,13 @@
|
|
|
531
535
|
"maximizeShortcutHint": "⌘ / Ctrl + Shift + Enter",
|
|
532
536
|
"maximizedStatus": "Split {split} maximized",
|
|
533
537
|
"loading": "Loading…",
|
|
534
|
-
"sessionEnded": "The session has ended. Send a message to start a new session."
|
|
538
|
+
"sessionEnded": "The session has ended. Send a message to start a new session.",
|
|
539
|
+
"layoutGroupLabel": "Split layout",
|
|
540
|
+
"layoutSplits": "Split layout: {count}",
|
|
541
|
+
"composerTarget": "To: {agent} · {branch}",
|
|
542
|
+
"composerTargetNoBranch": "To: {agent}",
|
|
543
|
+
"composerTargetLabel": "This input sends to {agent} on {branch}",
|
|
544
|
+
"composerTargetLabelNoBranch": "This input sends to {agent}"
|
|
535
545
|
},
|
|
536
546
|
"surfaceMode": {
|
|
537
547
|
"groupLabel": "Output surface for {split}",
|
|
@@ -1063,7 +1073,6 @@
|
|
|
1063
1073
|
}
|
|
1064
1074
|
},
|
|
1065
1075
|
"activityBar": {
|
|
1066
|
-
"toggleSidebar": "Toggle sidebar",
|
|
1067
1076
|
"label": "Activity Bar",
|
|
1068
1077
|
"files": "File Tree",
|
|
1069
1078
|
"git": "Git",
|
|
@@ -1075,7 +1084,6 @@
|
|
|
1075
1084
|
"skills": "Skills",
|
|
1076
1085
|
"verification": "Verification",
|
|
1077
1086
|
"env": "Env",
|
|
1078
|
-
"settings": "Settings",
|
|
1079
1087
|
"settingsMenu": {
|
|
1080
1088
|
"settings": "Settings",
|
|
1081
1089
|
"skills": "Skills",
|
|
@@ -1089,6 +1097,11 @@
|
|
|
1089
1097
|
"version": "CommandMate {version}"
|
|
1090
1098
|
}
|
|
1091
1099
|
},
|
|
1100
|
+
"headerTools": {
|
|
1101
|
+
"label": "Worktree tools",
|
|
1102
|
+
"more": "More tools",
|
|
1103
|
+
"moreActive": "More tools ({label} is open)"
|
|
1104
|
+
},
|
|
1092
1105
|
"branchMismatch": {
|
|
1093
1106
|
"changedFrom": "Branch changed from",
|
|
1094
1107
|
"to": "to",
|
|
@@ -1169,7 +1182,10 @@
|
|
|
1169
1182
|
},
|
|
1170
1183
|
"desktopLayout": {
|
|
1171
1184
|
"activityPane": "Activity pane",
|
|
1172
|
-
"terminalPane": "Terminal pane"
|
|
1185
|
+
"terminalPane": "Terminal pane",
|
|
1186
|
+
"pinPane": "Pin beside the terminal",
|
|
1187
|
+
"unpinPane": "Unpin (show over the terminal)",
|
|
1188
|
+
"closePane": "Close panel"
|
|
1173
1189
|
},
|
|
1174
1190
|
"worktreeStatus": {
|
|
1175
1191
|
"notSet": "Not set",
|
|
@@ -1178,13 +1194,6 @@
|
|
|
1178
1194
|
"inReview": "In Review",
|
|
1179
1195
|
"done": "Done"
|
|
1180
1196
|
},
|
|
1181
|
-
"card": {
|
|
1182
|
-
"main": "Main",
|
|
1183
|
-
"description": "Description",
|
|
1184
|
-
"link": "Link",
|
|
1185
|
-
"openLink": "Open link in new tab",
|
|
1186
|
-
"updated": "Updated {time}"
|
|
1187
|
-
},
|
|
1188
1197
|
"detail": {
|
|
1189
1198
|
"worktree": "Worktree",
|
|
1190
1199
|
"repository": "Repository",
|
|
@@ -1218,7 +1227,8 @@
|
|
|
1218
1227
|
"subTabGit": "Git",
|
|
1219
1228
|
"statusPillWithModel": "{label}: {status} — model {model}",
|
|
1220
1229
|
"statusPillWithUsage": "{base} — {usage}",
|
|
1221
|
-
"statusPillWithSource": "{base} — {source}"
|
|
1230
|
+
"statusPillWithSource": "{base} — {source}",
|
|
1231
|
+
"openRepositories": "{repository} — open Repositories"
|
|
1222
1232
|
},
|
|
1223
1233
|
"detailStatus": {
|
|
1224
1234
|
"idle": "Idle - No active session",
|
|
@@ -1476,6 +1486,7 @@
|
|
|
1476
1486
|
"failingGates": "Gates that did not pass: {gates}",
|
|
1477
1487
|
"gatesPassed": "All {count} gates passed",
|
|
1478
1488
|
"openHint": "Open the Verification pane",
|
|
1489
|
+
"closeHint": "Close the Verification pane",
|
|
1479
1490
|
"dash": "—",
|
|
1480
1491
|
"unverified": "Not verified",
|
|
1481
1492
|
"noTask": "No execution contract has been sent to this branch",
|
|
@@ -1670,5 +1681,24 @@
|
|
|
1670
1681
|
"noteInstanceFlag": "--instance is how a command names its target. --agent is only for starting an ad-hoc session the roster does not know, and wait has no --agent at all.",
|
|
1671
1682
|
"noteWaitOnPrompt": "wait carries --on-prompt human so it keeps waiting when the agent asks something. Without it the default (agent) exits 10 the moment a prompt is detected.",
|
|
1672
1683
|
"noteRespondNumber": "respond does not interpret its answer. Send the NUMBER of the option: \"yes\" is typed, ignored, and followed by Enter, which picks whatever the default option happens to be."
|
|
1684
|
+
},
|
|
1685
|
+
"agentAdd": {
|
|
1686
|
+
"button": "Add agent",
|
|
1687
|
+
"title": "Add agent",
|
|
1688
|
+
"tool": "Agent",
|
|
1689
|
+
"notInstalled": "{name} (not installed)",
|
|
1690
|
+
"installedUnknown": "Could not check which agents are installed; every agent is listed.",
|
|
1691
|
+
"name": "Name (optional)",
|
|
1692
|
+
"namePlaceholder": "e.g. Review",
|
|
1693
|
+
"placement": "Open in",
|
|
1694
|
+
"placementNewSplit": "New split",
|
|
1695
|
+
"placementReplace": "Replace the current split",
|
|
1696
|
+
"placementRosterOnly": "Add only",
|
|
1697
|
+
"placementNewSplitFull": "All {max} splits are in use",
|
|
1698
|
+
"startHint": "The session starts when you send the first message.",
|
|
1699
|
+
"submit": "Add",
|
|
1700
|
+
"cancel": "Cancel",
|
|
1701
|
+
"saveError": "Could not add the agent.",
|
|
1702
|
+
"maxReached": "Up to {max} agents per branch"
|
|
1673
1703
|
}
|
|
1674
1704
|
}
|
|
@@ -1,7 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"agentStatus": {
|
|
3
|
-
"
|
|
4
|
-
"
|
|
3
|
+
"overflowTrigger": "他のエージェント",
|
|
4
|
+
"otherSessions": "ほか {count}",
|
|
5
|
+
"otherSessionsLabel": "ほかのセッション {count} 件",
|
|
6
|
+
"otherSessionsWaitingLabel": "ほかのセッション {count} 件(うち {waiting} 件が応答待ち)",
|
|
7
|
+
"otherSessionsList": "ほかのセッション",
|
|
8
|
+
"inSplit": "分割 {index}",
|
|
9
|
+
"addSession": "セッションを追加…"
|
|
5
10
|
},
|
|
6
11
|
"toc": {
|
|
7
12
|
"title": "目次",
|
|
@@ -508,6 +513,7 @@
|
|
|
508
513
|
},
|
|
509
514
|
"terminal": {
|
|
510
515
|
"historyLabel": "履歴",
|
|
516
|
+
"actionBarMore": "隠れている項目を表示",
|
|
511
517
|
"filesLabel": "開いているファイル",
|
|
512
518
|
"showHistory": "履歴を表示",
|
|
513
519
|
"hideHistory": "履歴を非表示",
|
|
@@ -515,8 +521,6 @@
|
|
|
515
521
|
"hideFiles": "開いているファイルを非表示",
|
|
516
522
|
"equalizeWidths": "均等幅",
|
|
517
523
|
"equalizeWidthsHint": "ターミナル幅を均等にし、履歴幅を初期値に戻す",
|
|
518
|
-
"addSplit": "分割を追加",
|
|
519
|
-
"removeSplit": "分割を削除",
|
|
520
524
|
"selectInstance": "{split} のエージェントインスタンスを選択",
|
|
521
525
|
"moreActions": "その他の操作",
|
|
522
526
|
"searchTerminal": "ターミナル内を検索",
|
|
@@ -531,7 +535,13 @@
|
|
|
531
535
|
"maximizeShortcutHint": "⌘ / Ctrl + Shift + Enter",
|
|
532
536
|
"maximizedStatus": "{split} を最大化中",
|
|
533
537
|
"loading": "読込中...",
|
|
534
|
-
"sessionEnded": "セッションは終了しています。送信すると新しいセッションが起動します。"
|
|
538
|
+
"sessionEnded": "セッションは終了しています。送信すると新しいセッションが起動します。",
|
|
539
|
+
"layoutGroupLabel": "分割の並べ方",
|
|
540
|
+
"layoutSplits": "{count} 分割",
|
|
541
|
+
"composerTarget": "To: {agent} · {branch}",
|
|
542
|
+
"composerTargetNoBranch": "To: {agent}",
|
|
543
|
+
"composerTargetLabel": "この入力欄は {branch} の {agent} に送信します",
|
|
544
|
+
"composerTargetLabelNoBranch": "この入力欄は {agent} に送信します"
|
|
535
545
|
},
|
|
536
546
|
"surfaceMode": {
|
|
537
547
|
"groupLabel": "{split} の出力面",
|
|
@@ -1063,7 +1073,6 @@
|
|
|
1063
1073
|
}
|
|
1064
1074
|
},
|
|
1065
1075
|
"activityBar": {
|
|
1066
|
-
"toggleSidebar": "サイドバーを切り替え",
|
|
1067
1076
|
"label": "アクティビティバー",
|
|
1068
1077
|
"files": "ファイルツリー",
|
|
1069
1078
|
"git": "Git",
|
|
@@ -1075,7 +1084,6 @@
|
|
|
1075
1084
|
"skills": "スキル",
|
|
1076
1085
|
"verification": "検証",
|
|
1077
1086
|
"env": "環境変数",
|
|
1078
|
-
"settings": "設定",
|
|
1079
1087
|
"settingsMenu": {
|
|
1080
1088
|
"settings": "設定",
|
|
1081
1089
|
"skills": "スキル",
|
|
@@ -1089,6 +1097,11 @@
|
|
|
1089
1097
|
"version": "CommandMate {version}"
|
|
1090
1098
|
}
|
|
1091
1099
|
},
|
|
1100
|
+
"headerTools": {
|
|
1101
|
+
"label": "ワークツリーの道具",
|
|
1102
|
+
"more": "ほかの道具",
|
|
1103
|
+
"moreActive": "ほかの道具({label} を表示中)"
|
|
1104
|
+
},
|
|
1092
1105
|
"branchMismatch": {
|
|
1093
1106
|
"changedFrom": "ブランチが",
|
|
1094
1107
|
"to": "から",
|
|
@@ -1169,7 +1182,10 @@
|
|
|
1169
1182
|
},
|
|
1170
1183
|
"desktopLayout": {
|
|
1171
1184
|
"activityPane": "アクティビティペイン",
|
|
1172
|
-
"terminalPane": "ターミナルペイン"
|
|
1185
|
+
"terminalPane": "ターミナルペイン",
|
|
1186
|
+
"pinPane": "ターミナルの横に固定",
|
|
1187
|
+
"unpinPane": "固定を解除(ターミナルの上に重ねる)",
|
|
1188
|
+
"closePane": "パネルを閉じる"
|
|
1173
1189
|
},
|
|
1174
1190
|
"worktreeStatus": {
|
|
1175
1191
|
"notSet": "未設定",
|
|
@@ -1178,13 +1194,6 @@
|
|
|
1178
1194
|
"inReview": "レビュー中",
|
|
1179
1195
|
"done": "完了"
|
|
1180
1196
|
},
|
|
1181
|
-
"card": {
|
|
1182
|
-
"main": "メイン",
|
|
1183
|
-
"description": "説明",
|
|
1184
|
-
"link": "リンク",
|
|
1185
|
-
"openLink": "リンクを新しいタブで開く",
|
|
1186
|
-
"updated": "更新 {time}"
|
|
1187
|
-
},
|
|
1188
1197
|
"detail": {
|
|
1189
1198
|
"worktree": "ワークツリー",
|
|
1190
1199
|
"repository": "リポジトリ",
|
|
@@ -1218,7 +1227,8 @@
|
|
|
1218
1227
|
"subTabGit": "Git",
|
|
1219
1228
|
"statusPillWithModel": "{label}: {status} — モデル {model}",
|
|
1220
1229
|
"statusPillWithUsage": "{base} — {usage}",
|
|
1221
|
-
"statusPillWithSource": "{base} — {source}"
|
|
1230
|
+
"statusPillWithSource": "{base} — {source}",
|
|
1231
|
+
"openRepositories": "{repository} — リポジトリの画面を開く"
|
|
1222
1232
|
},
|
|
1223
1233
|
"detailStatus": {
|
|
1224
1234
|
"idle": "アイドル - セッションなし",
|
|
@@ -1476,6 +1486,7 @@
|
|
|
1476
1486
|
"failingGates": "不合格ゲート: {gates}",
|
|
1477
1487
|
"gatesPassed": "全 {count} ゲート合格",
|
|
1478
1488
|
"openHint": "検証ペインを開く",
|
|
1489
|
+
"closeHint": "検証ペインを閉じる",
|
|
1479
1490
|
"dash": "—",
|
|
1480
1491
|
"unverified": "未検証",
|
|
1481
1492
|
"noTask": "このブランチには実行契約が送られていません",
|
|
@@ -1670,5 +1681,24 @@
|
|
|
1670
1681
|
"noteInstanceFlag": "送り先を指定するのは --instance です。--agent は roster に無いインスタンスをアドホックに起動するためのもので、wait には --agent 自体がありません。",
|
|
1671
1682
|
"noteWaitOnPrompt": "wait には --on-prompt human を付けてあります。付けないと既定の agent モードになり、プロンプトを検出した時点で exit 10 で即座に終了します。",
|
|
1672
1683
|
"noteRespondNumber": "respond は回答を意味解決しません。選択肢は番号で送ってください。「yes」は入力されたあと無視され、続く Enter がその時点の既定選択を選んでしまいます。"
|
|
1684
|
+
},
|
|
1685
|
+
"agentAdd": {
|
|
1686
|
+
"button": "エージェントを追加",
|
|
1687
|
+
"title": "エージェントを追加",
|
|
1688
|
+
"tool": "エージェント",
|
|
1689
|
+
"notInstalled": "{name}(未インストール)",
|
|
1690
|
+
"installedUnknown": "インストール済みかを確認できなかったため、すべてのエージェントを表示しています。",
|
|
1691
|
+
"name": "名前(任意)",
|
|
1692
|
+
"namePlaceholder": "例: レビュー",
|
|
1693
|
+
"placement": "開く場所",
|
|
1694
|
+
"placementNewSplit": "新しい分割",
|
|
1695
|
+
"placementReplace": "今の分割を置き換え",
|
|
1696
|
+
"placementRosterOnly": "追加だけ",
|
|
1697
|
+
"placementNewSplitFull": "分割は {max} つすべて使用中です",
|
|
1698
|
+
"startHint": "セッションは最初のメッセージを送ったときに起動します。",
|
|
1699
|
+
"submit": "追加",
|
|
1700
|
+
"cancel": "キャンセル",
|
|
1701
|
+
"saveError": "エージェントを追加できませんでした。",
|
|
1702
|
+
"maxReached": "1 つのブランチに追加できるのは {max} 件までです"
|
|
1673
1703
|
}
|
|
1674
1704
|
}
|
|
@@ -5,22 +5,26 @@
|
|
|
5
5
|
* Defines the VS Code-style Activity Bar identifiers and metadata.
|
|
6
6
|
* This module is consumed by:
|
|
7
7
|
* - `src/hooks/useActivityBarState.ts`
|
|
8
|
-
* - `src/components/worktree/
|
|
8
|
+
* - `src/components/worktree/HeaderToolBar.tsx` (PC, Issue #3591)
|
|
9
9
|
* - `src/components/worktree/ActivityPane.tsx`
|
|
10
10
|
* - `src/components/worktree/WorktreeDetailRefactored.tsx`
|
|
11
11
|
*
|
|
12
|
-
* The Activity Bar
|
|
12
|
+
* The Activity Bar was a 48px-wide vertical bar that hosted the activities
|
|
13
|
+
* below. Issue #3591: on PC they are icons at the right of the worktree header
|
|
14
|
+
* ({@link HEADER_TOOLS}) and the Verification chip; the names below keep the
|
|
15
|
+
* "activity bar" wording (storage keys, test helpers).
|
|
13
16
|
* Re-clicking the active icon toggles the ActivityPane closed (null).
|
|
14
17
|
*/
|
|
15
18
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
|
-
exports.ACTIVITY_CLOSED_SENTINEL = exports.ACTIVITY_BAR_STORAGE_KEY_PREFIX = exports.DEFAULT_ACTIVITY = exports.VALID_ACTIVITY_IDS = exports.ACTIVITIES = void 0;
|
|
19
|
+
exports.ACTIVITY_PANE_PINNED_STORAGE_KEY = exports.ACTIVITY_CLOSED_SENTINEL = exports.ACTIVITY_BAR_STORAGE_KEY_PREFIX = exports.INITIAL_ACTIVITY = exports.DEFAULT_ACTIVITY = exports.VALID_ACTIVITY_IDS = exports.HEADER_TOOLS = exports.CHIP_ACTIVITY_ID = exports.ACTIVITIES = void 0;
|
|
17
20
|
exports.getActivityBarStorageKey = getActivityBarStorageKey;
|
|
18
21
|
exports.isActivityId = isActivityId;
|
|
19
22
|
const lucide_react_1 = require("lucide-react");
|
|
20
23
|
/**
|
|
21
|
-
* Ordered list of activities
|
|
22
|
-
*
|
|
23
|
-
* navigation order (
|
|
24
|
+
* Ordered list of activities. The order here is the visual order of the
|
|
25
|
+
* header tools ({@link HEADER_TOOLS}, drawn by `HeaderToolBar.tsx`) and the
|
|
26
|
+
* keyboard navigation order (ArrowLeft/ArrowRight in the header). The mobile
|
|
27
|
+
* tab bar has its own list and does not follow it.
|
|
24
28
|
*/
|
|
25
29
|
exports.ACTIVITIES = [
|
|
26
30
|
// Issue #2616: the two-sheet `Files`, not the single-sheet `File` — at 20px
|
|
@@ -44,14 +48,43 @@ exports.ACTIVITIES = [
|
|
|
44
48
|
// both users and tests, so an insert would silently renumber every tab.
|
|
45
49
|
{ id: 'env', labelKey: 'activityBar.env', icon: lucide_react_1.KeyRound },
|
|
46
50
|
];
|
|
51
|
+
/**
|
|
52
|
+
* The activity whose entry point is not a header tool (Issue #3591): the
|
|
53
|
+
* Verification pane opens from the Verification chip on the second row
|
|
54
|
+
* (`VerificationStatusChip`, #3590), which already says where the branch
|
|
55
|
+
* stands. It stays in {@link ACTIVITIES} — the pane, its label and the stored
|
|
56
|
+
* state are unchanged — and is only left out of {@link HEADER_TOOLS}.
|
|
57
|
+
*/
|
|
58
|
+
exports.CHIP_ACTIVITY_ID = 'verification';
|
|
59
|
+
/**
|
|
60
|
+
* The tools drawn at the right of the PC worktree header (Issue #3591), in
|
|
61
|
+
* {@link ACTIVITIES} order — the order of the ←/→ keys. Every activity except
|
|
62
|
+
* {@link CHIP_ACTIVITY_ID}. On a narrow header the trailing ones fold behind a
|
|
63
|
+
* "…" button (`useDesktopHeaderFit`).
|
|
64
|
+
*/
|
|
65
|
+
exports.HEADER_TOOLS = exports.ACTIVITIES.filter((activity) => activity.id !== exports.CHIP_ACTIVITY_ID);
|
|
47
66
|
/**
|
|
48
67
|
* Set of valid ActivityId values for runtime validation.
|
|
49
68
|
*/
|
|
50
69
|
exports.VALID_ACTIVITY_IDS = new Set(exports.ACTIVITIES.map((a) => a.id));
|
|
51
70
|
/**
|
|
52
|
-
*
|
|
71
|
+
* The first activity — where keyboard focus lands when no activity is open
|
|
72
|
+
* (`HeaderToolBar`'s roving tabindex).
|
|
73
|
+
*
|
|
74
|
+
* Issue #3589: no longer what an unvisited worktree opens. That is
|
|
75
|
+
* {@link INITIAL_ACTIVITY} (closed), so the terminal starts at full width.
|
|
53
76
|
*/
|
|
54
77
|
exports.DEFAULT_ACTIVITY = 'files';
|
|
78
|
+
/**
|
|
79
|
+
* What the worktree screen shows when nothing is stored for the worktree (or
|
|
80
|
+
* the stored value is not a known activity) — Issue #3589: `null`, the pane
|
|
81
|
+
* starts closed. Before #3589 this was {@link DEFAULT_ACTIVITY} ('files'),
|
|
82
|
+
* which took ~18% of the body away from the terminal on every first visit.
|
|
83
|
+
*
|
|
84
|
+
* A stored value (an activity or {@link ACTIVITY_CLOSED_SENTINEL}) is still
|
|
85
|
+
* honoured as-is.
|
|
86
|
+
*/
|
|
87
|
+
exports.INITIAL_ACTIVITY = null;
|
|
55
88
|
/**
|
|
56
89
|
* localStorage key prefix used by `useActivityBarState` (Issue #858).
|
|
57
90
|
*
|
|
@@ -72,8 +105,8 @@ exports.ACTIVITY_BAR_STORAGE_KEY_PREFIX = 'commandmate.worktree.activeActivity-'
|
|
|
72
105
|
* Unlike the pre-#858 behavior — which intentionally did NOT persist the closed
|
|
73
106
|
* state — the closed state is now stored so that hiding the pane on one branch
|
|
74
107
|
* survives a round-trip to another branch and back. It is distinct from "no
|
|
75
|
-
* stored value" (an unvisited worktree), which
|
|
76
|
-
* {@link
|
|
108
|
+
* stored value" (an unvisited worktree), which defaults to
|
|
109
|
+
* {@link INITIAL_ACTIVITY} (closed since Issue #3589).
|
|
77
110
|
*/
|
|
78
111
|
exports.ACTIVITY_CLOSED_SENTINEL = '__closed__';
|
|
79
112
|
/**
|
|
@@ -88,3 +121,17 @@ function getActivityBarStorageKey(worktreeId) {
|
|
|
88
121
|
function isActivityId(value) {
|
|
89
122
|
return typeof value === 'string' && exports.VALID_ACTIVITY_IDS.has(value);
|
|
90
123
|
}
|
|
124
|
+
/**
|
|
125
|
+
* localStorage key for whether the activity pane is pinned (Issue #3589).
|
|
126
|
+
*
|
|
127
|
+
* - `'true'` → pinned: the pane sits beside the body and narrows it (the
|
|
128
|
+
* pre-#3589 layout).
|
|
129
|
+
* - anything else / absent → not pinned: the pane is laid OVER the body, which
|
|
130
|
+
* keeps its width, and closes on Esc / × / a re-click of its icon / an
|
|
131
|
+
* outside click / opening a file.
|
|
132
|
+
*
|
|
133
|
+
* One global key, not one per worktree: pinning is a choice about how the
|
|
134
|
+
* screen is laid out, so it carries across worktrees. Read and written by
|
|
135
|
+
* `usePanePinnedState` in `src/hooks/useActivityPaneOverlay.ts`.
|
|
136
|
+
*/
|
|
137
|
+
exports.ACTIVITY_PANE_PINNED_STORAGE_KEY = 'commandmate.worktree.activityPanePinned';
|
|
@@ -37,6 +37,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
37
37
|
exports.recordPromptDedupSkip = recordPromptDedupSkip;
|
|
38
38
|
exports.getPromptDedupSkips = getPromptDedupSkips;
|
|
39
39
|
exports.renamePromptDedupSkips = renamePromptDedupSkips;
|
|
40
|
+
exports.renamePromptDedupSkipsBatch = renamePromptDedupSkipsBatch;
|
|
40
41
|
exports.clearPromptDedupSkips = clearPromptDedupSkips;
|
|
41
42
|
const auto_yes_state_1 = require("../../lib/auto-yes-state");
|
|
42
43
|
const global_state_1 = require("../global-state");
|
|
@@ -80,13 +81,31 @@ function getPromptDedupSkips(worktreeId, cliToolId, instanceId) {
|
|
|
80
81
|
* No-op when the IDs match or nothing is recorded under the old one.
|
|
81
82
|
*/
|
|
82
83
|
function renamePromptDedupSkips(oldWorktreeId, newWorktreeId, cliToolId, instanceId) {
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
84
|
+
renamePromptDedupSkipsBatch([{ oldWorktreeId, newWorktreeId, cliToolId, instanceId }]);
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Carry the tallies of a whole batch of sessions across a worktree-ID rename
|
|
88
|
+
* (Issue #3553).
|
|
89
|
+
*
|
|
90
|
+
* Every source tally is lifted before any is written, so a swap (A→B, B→A) or
|
|
91
|
+
* a chain (A→B→C) cannot overwrite a tally that has not moved yet. Per entry
|
|
92
|
+
* this is exactly {@link renamePromptDedupSkips}.
|
|
93
|
+
*/
|
|
94
|
+
function renamePromptDedupSkipsBatch(renames) {
|
|
95
|
+
const lifted = [];
|
|
96
|
+
for (const { oldWorktreeId, newWorktreeId, cliToolId, instanceId } of renames) {
|
|
97
|
+
if (oldWorktreeId === newWorktreeId)
|
|
98
|
+
continue;
|
|
99
|
+
const oldKey = (0, auto_yes_state_1.buildCompositeKey)(oldWorktreeId, cliToolId, instanceId);
|
|
100
|
+
lifted.push({
|
|
101
|
+
newKey: (0, auto_yes_state_1.buildCompositeKey)(newWorktreeId, cliToolId, instanceId),
|
|
102
|
+
record: promptDedupSkips.get(oldKey),
|
|
103
|
+
});
|
|
104
|
+
promptDedupSkips.delete(oldKey);
|
|
105
|
+
}
|
|
106
|
+
for (const { newKey, record } of lifted) {
|
|
107
|
+
if (record !== undefined)
|
|
108
|
+
promptDedupSkips.set(newKey, record);
|
|
90
109
|
}
|
|
91
110
|
}
|
|
92
111
|
/** Drop every recorded tally. Test seam. */
|
|
@@ -34,6 +34,7 @@ exports.claimDuplicatePromptSkipLog = claimDuplicatePromptSkipLog;
|
|
|
34
34
|
exports.resetDuplicatePromptSkipStreak = resetDuplicatePromptSkipStreak;
|
|
35
35
|
exports.clearPromptHashCache = clearPromptHashCache;
|
|
36
36
|
exports.renamePromptHashCacheKey = renamePromptHashCacheKey;
|
|
37
|
+
exports.renamePromptHashCacheKeys = renamePromptHashCacheKeys;
|
|
37
38
|
exports.normalizePromptForDedup = normalizePromptForDedup;
|
|
38
39
|
const crypto_1 = require("crypto");
|
|
39
40
|
const global_state_1 = require("../global-state");
|
|
@@ -95,10 +96,14 @@ function claimDuplicatePromptSkipLog(pollerKey) {
|
|
|
95
96
|
* End the current run of duplicate prompt ticks for this pollerKey without
|
|
96
97
|
* touching the cached hash (Issue #3538).
|
|
97
98
|
*
|
|
98
|
-
* Called by `response-checker`
|
|
99
|
-
*
|
|
100
|
-
*
|
|
101
|
-
*
|
|
99
|
+
* Called by `response-checker` in two places: `extractCompletedTurn`, when the
|
|
100
|
+
* frame was read and is unfinished (a working screen), and `checkForResponse`,
|
|
101
|
+
* when a finished frame carries no live prompt (a reply). The prompt is no
|
|
102
|
+
* longer on screen, so if the same prompt comes back the next duplicate is the
|
|
103
|
+
* first of a new run and logs. Not called on a tick that skipped extraction on
|
|
104
|
+
* the line count (a null result) or returned on the cursor, nor on a tick that
|
|
105
|
+
* ended before extraction: none of them says the prompt has left the screen,
|
|
106
|
+
* so the run carries on through them. The hash stays: whether the
|
|
102
107
|
* returning prompt is saved again is the guard's question (#565), and this
|
|
103
108
|
* Issue only thins the log line.
|
|
104
109
|
*
|
|
@@ -126,30 +131,53 @@ function clearPromptHashCache(pollerKey) {
|
|
|
126
131
|
* re-save the prompt it is currently sitting on as a fresh message, which is
|
|
127
132
|
* the duplicate this module exists to prevent.
|
|
128
133
|
*
|
|
129
|
-
* No-op when nothing is cached under `oldKey`.
|
|
134
|
+
* No-op when nothing is cached under `oldKey`. A batch of renames whose keys
|
|
135
|
+
* overlap must go through {@link renamePromptHashCacheKeys} instead.
|
|
130
136
|
*
|
|
131
137
|
* @param oldKey - Poller key the cache entry lives under
|
|
132
138
|
* @param newKey - Poller key it should live under
|
|
133
139
|
*/
|
|
134
140
|
function renamePromptHashCacheKey(oldKey, newKey) {
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
141
|
+
renamePromptHashCacheKeys([{ oldKey, newKey }]);
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Move the prompt hash and its skip count for a whole batch of pollerKeys
|
|
145
|
+
* (Issue #3553).
|
|
146
|
+
*
|
|
147
|
+
* Every source key is lifted before any destination is written, so a swap
|
|
148
|
+
* (A→B, B→A) or a chain (A→B→C) cannot overwrite a source that has not moved
|
|
149
|
+
* yet. Per pair this is exactly {@link renamePromptHashCacheKey}: nothing
|
|
150
|
+
* happens at the destination when the source held no hash.
|
|
151
|
+
*
|
|
152
|
+
* @param renames - Poller key moves applied together; `oldKey === newKey` is ignored
|
|
153
|
+
*/
|
|
154
|
+
function renamePromptHashCacheKeys(renames) {
|
|
155
|
+
const lifted = [];
|
|
156
|
+
for (const { oldKey, newKey } of renames) {
|
|
157
|
+
if (oldKey === newKey)
|
|
158
|
+
continue;
|
|
159
|
+
lifted.push({
|
|
160
|
+
newKey,
|
|
161
|
+
hash: promptHashCache.get(oldKey),
|
|
162
|
+
streak: duplicatePromptSkipStreak.get(oldKey),
|
|
163
|
+
});
|
|
164
|
+
promptHashCache.delete(oldKey);
|
|
165
|
+
duplicatePromptSkipStreak.delete(oldKey);
|
|
150
166
|
}
|
|
151
|
-
|
|
152
|
-
|
|
167
|
+
for (const { newKey, hash, streak } of lifted) {
|
|
168
|
+
if (hash === undefined)
|
|
169
|
+
continue;
|
|
170
|
+
promptHashCache.set(newKey, hash);
|
|
171
|
+
// Issue #3538: the skip count moves with the hash, so a rename mid-run does
|
|
172
|
+
// not restart the thinning and log as if a new run had begun. Whenever the
|
|
173
|
+
// hash under `newKey` is replaced, so is its count — a count left over from
|
|
174
|
+
// the hash that was there before is about a different prompt.
|
|
175
|
+
if (streak !== undefined) {
|
|
176
|
+
duplicatePromptSkipStreak.set(newKey, streak);
|
|
177
|
+
}
|
|
178
|
+
else {
|
|
179
|
+
duplicatePromptSkipStreak.delete(newKey);
|
|
180
|
+
}
|
|
153
181
|
}
|
|
154
182
|
}
|
|
155
183
|
/**
|
|
@@ -498,8 +498,13 @@ function extractCompletedTurn(ctx, output, lastCapturedLine) {
|
|
|
498
498
|
// skipped on the line count ("no new output"), which says nothing about
|
|
499
499
|
// whether the prompt is still on screen, and neither do the cursor returns
|
|
500
500
|
// further down.
|
|
501
|
-
|
|
501
|
+
//
|
|
502
|
+
// Issue #3552: the same frame ends a run of duplicate response ticks for
|
|
503
|
+
// the same reason — an unfinished frame is not the saved reply.
|
|
504
|
+
if (result) {
|
|
502
505
|
(0, prompt_dedup_1.resetDuplicatePromptSkipStreak)(pollerKey);
|
|
506
|
+
(0, response_dedup_1.resetDuplicateResponseSkipStreak)(pollerKey);
|
|
507
|
+
}
|
|
503
508
|
// DR-004 windowing: Only check tail lines
|
|
504
509
|
const { thinkingPattern } = (0, cli_patterns_1.getCliToolPatterns)(cliToolId);
|
|
505
510
|
const cleanOutput = (0, cli_patterns_1.stripAnsi)(output);
|
|
@@ -1189,6 +1194,10 @@ async function checkForResponse(worktreeId, cliToolId, instanceId) {
|
|
|
1189
1194
|
// has lost the position `detectDialog` judges by.
|
|
1190
1195
|
const promptIsLive = promptDetection.isPrompt && (0, response_checker_dialog_gate_1.isNumberedDialogVouched)(cliToolId, promptDetection, output);
|
|
1191
1196
|
if (promptIsLive) {
|
|
1197
|
+
// Issue #3552: a live prompt is not the saved reply, so a run of
|
|
1198
|
+
// duplicate response ticks is over; the response hash is kept (a resume
|
|
1199
|
+
// after the answer must not re-save the reply underneath, #2230).
|
|
1200
|
+
(0, response_dedup_1.resetDuplicateResponseSkipStreak)(pollerKey);
|
|
1192
1201
|
return savePromptMessage(ctx, promptDetection, result, isFullScreenTui);
|
|
1193
1202
|
}
|
|
1194
1203
|
// Issue #3538: a finished frame without a live prompt ends the run of
|
|
@@ -1196,6 +1205,8 @@ async function checkForResponse(worktreeId, cliToolId, instanceId) {
|
|
|
1196
1205
|
(0, prompt_dedup_1.resetDuplicatePromptSkipStreak)(pollerKey);
|
|
1197
1206
|
// Validate response content is not empty
|
|
1198
1207
|
if (!result.response || result.response.trim() === '') {
|
|
1208
|
+
// Issue #3552: an empty response is not the saved reply either.
|
|
1209
|
+
(0, response_dedup_1.resetDuplicateResponseSkipStreak)(pollerKey);
|
|
1199
1210
|
(0, db_1.updateSessionState)(db, worktreeId, cliToolId, result.lineCount, resolvedInstanceId);
|
|
1200
1211
|
return false;
|
|
1201
1212
|
}
|
|
@@ -1206,6 +1217,8 @@ async function checkForResponse(worktreeId, cliToolId, instanceId) {
|
|
|
1206
1217
|
const cleanedResponse = cleanCompletedResponse(cliToolId, result, pollerKey);
|
|
1207
1218
|
// If cleaned response is empty or just "[No content]", skip saving
|
|
1208
1219
|
if (!cleanedResponse || cleanedResponse.trim() === '' || cleanedResponse === '[No content]') {
|
|
1220
|
+
// Issue #3552: nor is one that cleans down to nothing.
|
|
1221
|
+
(0, response_dedup_1.resetDuplicateResponseSkipStreak)(pollerKey);
|
|
1209
1222
|
(0, db_1.updateSessionState)(db, worktreeId, cliToolId, result.lineCount, resolvedInstanceId);
|
|
1210
1223
|
(0, db_1.clearInProgressMessageId)(db, worktreeId, cliToolId, resolvedInstanceId);
|
|
1211
1224
|
return false;
|