commandmate 0.33.3 → 0.34.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 +146 -146
- package/.next/app-path-routes-manifest.json +29 -29
- 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/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/assistant/conversation/route.js +1 -1
- package/.next/server/app/api/assistant/conversation/route.js.nft.json +1 -1
- package/.next/server/app/api/assistant/conversation/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/assistant/current-output/route.js +1 -1
- package/.next/server/app/api/assistant/current-output/route.js.nft.json +1 -1
- package/.next/server/app/api/assistant/current-output/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/assistant/messages/route.js +1 -1
- package/.next/server/app/api/assistant/messages/route.js.nft.json +1 -1
- package/.next/server/app/api/assistant/messages/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/assistant/session/route.js +1 -1
- package/.next/server/app/api/assistant/session/route.js.nft.json +1 -1
- package/.next/server/app/api/assistant/session/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/assistant/start/route.js +2 -2
- package/.next/server/app/api/assistant/start/route.js.nft.json +1 -1
- package/.next/server/app/api/assistant/start/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/assistant/terminal/route.js +3 -3
- package/.next/server/app/api/assistant/terminal/route.js.nft.json +1 -1
- package/.next/server/app/api/assistant/terminal/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/assistant/tools/route.js +1 -1
- package/.next/server/app/api/assistant/tools/route.js.nft.json +1 -1
- package/.next/server/app/api/assistant/tools/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/auth/login/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/auth/logout/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/auth/status/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/capabilities/route.js +1 -1
- package/.next/server/app/api/capabilities/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/daily-summary/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/daily-summary/status/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/external-apps/[id]/health/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/external-apps/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/external-apps/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/fs/browse/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/fs/recent-paths/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/hooks/agent-event/route.js +1 -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/[id]/todos/[todoId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/[id]/todos/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/clone/[jobId]/route.js +1 -1
- package/.next/server/app/api/repositories/clone/[jobId]/route.js.nft.json +1 -1
- package/.next/server/app/api/repositories/clone/[jobId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/clone/route.js +1 -1
- package/.next/server/app/api/repositories/clone/route.js.nft.json +1 -1
- package/.next/server/app/api/repositories/clone/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/excluded/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/restore/route.js +1 -1
- package/.next/server/app/api/repositories/restore/route.js.nft.json +1 -1
- package/.next/server/app/api/repositories/restore/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/route.js +1 -1
- package/.next/server/app/api/repositories/route.js.nft.json +1 -1
- package/.next/server/app/api/repositories/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/scan/route.js +1 -1
- package/.next/server/app/api/repositories/scan/route.js.nft.json +1 -1
- package/.next/server/app/api/repositories/scan/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/sync/route.js +1 -1
- package/.next/server/app/api/repositories/sync/route.js.nft.json +1 -1
- package/.next/server/app/api/repositories/sync/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/repositories/validate-path/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/settings/default-agents/route.js +1 -1
- package/.next/server/app/api/settings/default-agents/route.js.nft.json +1 -1
- package/.next/server/app/api/settings/default-agents/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/settings/default-surface-mode/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/sidebar/group-order/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/skills/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/skills/installations/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/skills/operations/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/skills/reindex/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/skills/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/slash-commands/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/tasks/[taskId]/cancel/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/tasks/[taskId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/templates/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/templates/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/todos/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_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]/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_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.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_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.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.js +1 -1
- package/.next/server/app/api/worktrees/[id]/resolve-target/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/respond/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/respond/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/respond/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/schedules/active/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/schedules/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/schedules/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/search/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/send/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/send/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/send/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route.js +2 -2
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/install/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/plan/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update-plan/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/skills/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/slash-commands/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/special-keys/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/special-keys/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/special-keys/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/tasks/route.js +2 -2
- package/.next/server/app/api/worktrees/[id]/tasks/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/terminal/route.js +2 -2
- package/.next/server/app/api/worktrees/[id]/terminal/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/terminal/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/timers/history/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/timers/route.js +1 -1
- package/.next/server/app/api/worktrees/[id]/timers/route.js.nft.json +1 -1
- package/.next/server/app/api/worktrees/[id]/timers/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/todos/[todoId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/todos/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/tree/[...path]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/tree/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/upload/[...path]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/[id]/verify/config/route.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/chat/page_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.js +1 -1
- package/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/server/app/proxy/[...path]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/repositories/page_client-reference-manifest.js +1 -1
- package/.next/server/app/review/page_client-reference-manifest.js +1 -1
- package/.next/server/app/sessions/page.js +1 -1
- package/.next/server/app/sessions/page_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 +8 -8
- 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 +29 -29
- package/.next/server/chunks/1049.js +1 -0
- package/.next/server/chunks/1501.js +4 -4
- package/.next/server/chunks/1886.js +2 -2
- package/.next/server/chunks/2119.js +1 -1
- package/.next/server/chunks/2404.js +1 -1
- package/.next/server/chunks/2445.js +1 -1
- package/.next/server/chunks/3241.js +1 -1
- package/.next/server/chunks/3323.js +1 -1
- package/.next/server/chunks/3480.js +2 -2
- package/.next/server/chunks/4443.js +1 -1
- package/.next/server/chunks/4802.js +1 -1
- package/.next/server/chunks/5164.js +1 -1
- package/.next/server/chunks/5571.js +1 -1
- package/.next/server/chunks/595.js +1 -1
- package/.next/server/chunks/6130.js +1 -1
- package/.next/server/chunks/6285.js +1 -1
- package/.next/server/chunks/6286.js +7 -7
- package/.next/server/chunks/6337.js +1 -1
- package/.next/server/chunks/650.js +1 -1
- package/.next/server/chunks/663.js +1 -1
- package/.next/server/chunks/6677.js +25 -0
- package/.next/server/chunks/7075.js +1 -0
- package/.next/server/chunks/7905.js +1 -1
- package/.next/server/chunks/8583.js +1 -0
- package/.next/server/chunks/8918.js +4 -2
- package/.next/server/chunks/9080.js +1 -0
- package/.next/server/chunks/964.js +1 -0
- 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/2053-9ac860ab4e92ac89.js +1 -0
- package/.next/static/chunks/2652-18b8fea64413467e.js +1 -0
- package/.next/static/chunks/{4718-814f4ecfd7fcc513.js → 4718-2d9f0397a8f931c4.js} +1 -1
- package/.next/static/chunks/{8361-9bb887203c456edb.js → 8361-0142beb59be2abf3.js} +1 -1
- package/.next/static/chunks/app/{page-022090bf6f932818.js → page-26a42881c8648cd3.js} +1 -1
- package/.next/static/chunks/app/sessions/page-a3ab6f122ec60d5a.js +1 -0
- package/.next/static/chunks/app/worktrees/[id]/page-a39ec2a0732d11a6.js +1 -0
- package/.next/static/css/b09bede85744e1cf.css +1 -0
- package/.next/trace +13 -13
- package/dist/cli/commands/ask.d.ts.map +1 -1
- package/dist/cli/commands/ask.js +11 -2
- package/dist/cli/commands/respond.d.ts.map +1 -1
- package/dist/cli/commands/respond.js +8 -4
- package/dist/cli/commands/send.d.ts.map +1 -1
- package/dist/cli/commands/send.js +18 -0
- package/dist/cli/commands/wait.d.ts +18 -3
- package/dist/cli/commands/wait.d.ts.map +1 -1
- package/dist/cli/commands/wait.js +137 -2
- 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 +41 -1
- package/dist/cli/utils/session-target.d.ts +23 -6
- package/dist/cli/utils/session-target.d.ts.map +1 -1
- package/dist/cli/utils/session-target.js +33 -5
- package/dist/server/locales/en/worktree.json +21 -2
- package/dist/server/locales/ja/worktree.json +21 -2
- package/dist/server/src/config/schedule-config.js +45 -3
- package/dist/server/src/lib/cli-tools/antigravity.js +95 -10
- package/dist/server/src/lib/cli-tools/submit-verified-sender.js +377 -16
- package/dist/server/src/lib/cmate-parser.js +8 -1
- package/dist/server/src/lib/detection/prompt-detect-multiple-choice.js +140 -19
- package/dist/server/src/lib/detection/tools/claude/detect.js +13 -2
- package/dist/server/src/lib/detection/tools/claude/picker-chrome.js +239 -0
- package/dist/server/src/lib/detection/tools/claude/prompt.js +74 -6
- package/dist/server/src/lib/hooks/sources/claude/history.js +391 -34
- package/dist/server/src/lib/hooks/sources/claude/transcript.js +91 -0
- package/dist/server/src/lib/polling/auto-yes-dialog-gate.js +114 -11
- package/dist/server/src/lib/polling/response-checker.js +82 -3
- package/dist/server/src/lib/schedule-manager.js +178 -19
- package/dist/server/src/lib/session/ask-user-question-prompt.js +4 -2
- package/dist/server/src/lib/session/claude-executor.js +33 -2
- package/dist/server/src/lib/session/resolve-session-target.js +37 -9
- package/dist/server/src/lib/verification/env-clean-gate.js +81 -4
- package/dist/server/src/types/agent-transcript.js +143 -1
- package/package.json +1 -1
- package/.next/server/chunks/1068.js +0 -1
- package/.next/server/chunks/6808.js +0 -1
- package/.next/server/chunks/7875.js +0 -25
- package/.next/server/chunks/9553.js +0 -1
- package/.next/static/chunks/2053-3f299a7a2c7d6767.js +0 -1
- package/.next/static/chunks/8772-9be53a530950d804.js +0 -1
- package/.next/static/chunks/app/sessions/page-584adf11ae51df10.js +0 -1
- package/.next/static/chunks/app/worktrees/[id]/page-3af707e74a75172b.js +0 -1
- package/.next/static/css/acd46e25427a2080.css +0 -1
- /package/.next/static/{9x6U1h52hH_r6pOsGwI_p → gniPBCKoXtbIOQey8kNcx}/_buildManifest.js +0 -0
- /package/.next/static/{9x6U1h52hH_r6pOsGwI_p → gniPBCKoXtbIOQey8kNcx}/_ssgManifest.js +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";exports.id=5571,exports.ids=[5571],exports.modules={95571:a=>{a.exports=JSON.parse('{"title":"Schedules","executionLogs":"Execution Logs","tabs":{"schedules":"Schedules","logs":"Logs"},"emptyState":{"title":"No schedules yet","description":"Run an agent automatically on a cron schedule.","createButton":"Create Schedule","manualToggle":"Or edit CMATE.md manually"},"noSchedules":"No schedules configured. Add a CMATE.md with a Schedules section.","noSchedulesTitle":"No schedules configured","noSchedulesStep1":"Switch to the Files tab","noSchedulesStep2":"Click the CMATE button in the toolbar to create CMATE.md","noSchedulesStep3":"Edit the Schedules table (Name, Cron, Message, CLI Tool, Enabled, Permission)","noSchedulesStep4":"Click CMATE again to validate","noLogs":"No execution logs yet.","status":{"running":"Running","completed":"Completed","failed":"Failed","timeout":"Timeout","cancelled":"Cancelled"},"enabled":"Enabled","disabled":"Disabled","activeSchedulesTitle":"Active Schedules","activeSchedulesDescription":"In-memory cron state currently registered by the scheduler.","noActiveSchedules":"No schedules are currently registered in memory.","nextRun":"Next run","agentLabel":"Agent","activeState":{"active":"Active","inactive":"Inactive","executing":"Executing"},"lastRun":"Last run","cron":"Cron","exitCode":"Exit","noOutput":"(no output)","message":"Message","response":"Response","unknownSchedule":"(deleted schedule)","retry":"Retry","loading":"Loading...","notes":"Notes","logs":"Schedules","notesAndLogs":"CMATE","agentTab":"Agent","agentSettings":"Agent Settings","selectAgents":"Select 2 agents to display in the terminal header tabs.","agentSaveSuccess":"Agent settings saved.","agentSaveError":"Failed to save agent settings.","agentInstances":"Agent Instances","agentInstancesDescription":"Manage the agents shown in the terminal header tabs. Add multiple instances of the same tool and give each an alias.","agentInstanceAliasLabel":"Alias","agentInstanceAliasPlaceholder":"Display name","agentInstanceBaseTool":"Base tool","agentInstanceAdd":"Add instance","agentInstanceDelete":"Delete instance","agentInstanceMoveUp":"Move up","agentInstanceMoveDown":"Move down","agentInstanceActions":"Instance actions","memoMoveUp":"Move up","memoMoveDown":"Move down","agentInstanceMax":"Up to {max} instances can be added.","agentInstanceMin":"At least {min} instance is required.","agentInstanceSaveError":"Failed to save agent instances.","agentDefaults":"Use this layout as the default","agentDefaultsDescription":"Save the tool order shown here as the default for new branches, or apply it to the branches of this repository that nobody has touched yet. Several instances of one tool count once.","agentDefaultsSetDefault":"Make this the default","agentDefaultsSaved":"Saved as the default. It now shows under \\"Default agents for new branches\\" in Settings.","agentDefaultsSaveError":"Could not save the default.","agentDefaultsApply":"Apply to unchanged branches","agentDefaultsApplyScope":"Only branches of this repository are affected. Other repositories, and branches whose agents you changed by hand, are left alone.","agentDefaultsEligible":"Would change {count} branch(es) in this repository","agentDefaultsEligibleUnknown":"Branches this would change: unknown","agentDefaultsRepositoryLabel":"Repository: {repository}","agentDefaultsRepoDeclared":"This repository declares its agents in .commandmate/agents.yaml. A bulk apply would override that declaration permanently, so it is disabled here — change the file instead.","agentDefaultsApplyConfirm":"Apply {agents} to {count} unchanged branch(es) in this repository. Other repositories, and branches whose agents you changed by hand, are left alone.","agentDefaultsApplied":"Applied to {count} branch(es).","agentDefaultsApplyError":"Could not apply to the branches.","agentDefaultsCountError":"Could not read how many branches this would change.","agentDefaultsRetry":"Retry the count","agentDefaultsInvalidRoster":"A default needs between {min} and {max} distinct tools. Add or remove a tool.","mobileVisibleInstances":"Show on this device","mobileVisibleInstancesDescription":"Choose which instances appear as tabs on this device. This selection is saved per device and does not change the shared instance list.","mobileVisibleInstanceMin":"At least one instance must stay visible on this device.","vibeLocalModel":"Ollama Model","vibeLocalModelDefault":"Default","vibeLocalContextWindow":"Context Window","vibeLocalContextWindowDefault":"Default (auto)","ollamaNotAvailable":"Ollama is not running. Start Ollama to select a model.","cmateCreated":"CMATE.md created with template. Edit it to configure schedules.","cmateValidation":{"noSchedulesSection":"CMATE.md has no Schedules section.","valid":"{count} schedule(s) validated successfully.","errors":"{errorCount} validation error(s) found: {details}","failed":"Failed to process CMATE.md."},"edit":{"newSchedule":"New Schedule","titleCreate":"New Schedule","titleEdit":"Edit Schedule","sectionBasic":"Basic","sectionAdvanced":"Advanced","sectionMessage":"Message","name":"Name","namePlaceholder":"daily-review","cron":"Cron Expression","cronPlaceholder":"0 9 * * *","cronPreset":"Preset","cronPresetHourly":"Every hour (0 */1 * * *)","cronPresetDaily9":"Daily at 9:00 (0 9 * * *)","cronPresetWeeklyMon9":"Mondays at 9:00 (0 9 * * 1)","cronPresetCustom":"Custom","askAiCron":"Ask AI","askAiMessage":"Ask AI to draft","askAiHint":"Drafts a prompt into the AI chat (no auto-send)","aiPrompts":{"cron":"I want to express the schedule timing as a cron expression. Convert a plain-language request (e.g. \\"every Monday at 9\\") into a cron expression and suggest a few candidates (e.g. \\"every Monday at 9\\" → `0 9 * * 1`).","cronRefine":"I want to express the schedule timing as a cron expression. The current input is {current}. Building on that, convert a plain-language request (e.g. \\"every Monday at 9\\") into a cron expression and suggest a few candidates (e.g. \\"every Monday at 9\\" → `0 9 * * 1`).","messageDraft":"For this schedule, I want to write the message (the instruction prompt) that the CLI tool will run on a schedule. First ask me what it is for, then propose the message content based on my answer.","messageDraftNamed":"For the schedule {name}, I want to write the message (the instruction prompt) that the CLI tool will run on a schedule. First ask me what it is for, then propose the message content based on my answer."},"cliTool":"CLI Tool","model":"Model","modelPlaceholder":"gpt-4.1","opencodeAgent":"Agent (opencode)","opencodeAgentPlaceholder":"plan","opencodeVariant":"Variant (opencode)","opencodeVariantPlaceholder":"high","opencodeTitle":"Session title (opencode)","opencodeTitlePlaceholder":"nightly-review","opencodeContinue":"Continue the last session (--continue)","permission":"Permission","message":"Message","messagePlaceholder":"Summarize README.md","charCount":"{count} / {max}","enabledLabel":"Enabled","save":"Save","cancel":"Cancel","edit":"Edit","delete":"Delete","enable":"Enable","disable":"Disable","confirmDelete":"Delete schedule \\"{name}\\"?","saveError":"Failed to save the schedule.","errorNameRequired":"Name is required.","errorNameTooLong":"Name must be {max} characters or less.","errorNameInvalid":"Name contains invalid characters.","errorCronInvalid":"Invalid cron expression.","errorMessageRequired":"Message is required.","errorMessageTooLong":"Message must be {max} characters or less.","errorModelInvalid":"Invalid model name.","errorAgentInvalid":"Invalid agent name.","errorVariantInvalid":"Invalid variant name.","errorTitleInvalid":"Invalid session title."},"timerTab":"Timer","todoTab":"ToDo","skillsTab":"Skills","verificationTab":"Verification","envTab":"Env","timer":{"title":"Delayed Messages","titleCreate":"New Timer","createButton":"Create Timer","newTimer":"New Timer","close":"Cancel","agent":"Agent","message":"Message","delay":"Send After","register":"Register Timer","cancel":"Cancel","noTimers":"No timers registered.","maxReached":"Maximum {max} timers per worktree.","registerSuccess":"Timer registered.","registerError":"Failed to register timer.","cancelSuccess":"Timer cancelled.","cancelError":"Failed to cancel timer.","status":{"pending":"Pending","sending":"Sending","sent":"Sent","failed":"Failed","cancelled":"Cancelled","no_session":"No Session"},"sessionWarning":"Session is not running. If the session is not running when the timer fires, the message will not be sent.","minutesShort":"{minutes}m","hoursMinutesShort":"{hours}h {minutes}m","loadMore":"Load more","clearHistory":"Clear history","clearConfirm":"Delete all sent, failed, and cancelled timer history?","cleared":"History cleared ({count} items)","detailTitle":"Timer Details","statusLabel":"Status","scheduledTime":"Scheduled Send","createdTime":"Created","sentTime":"Sent","failureReason":"Failure Reason"},"memoAdd":"Add Memo","memoRemaining":"{count} remaining","memoDefaultTitle":"Memo","memoTitlePlaceholder":"Memo title","memoInsertToMessage":"Insert to message","memoCopyContent":"Copy memo content","memoDelete":"Delete memo","memoContentPlaceholder":"Enter memo content...","memoLoading":"Loading memos...","memoSearchToggle":"Search memos","memoEmpty":"No memos yet.","memoEmptyHint":"Click the button below to add one.","memoNoMatch":"No memos match your search.","memoSearchLabel":"Memo search","memoSearchPlaceholder":"Search...","memoSearchInputLabel":"Search memos","memoSearchPrev":"Previous match (prev)","memoSearchNext":"Next match (next)","memoSearchClose":"Close search (close)","opencodeSettings":"opencode launch settings","opencodeSettingsDescription":"The agent, model and variant this instance starts opencode with and sends prompts as.","opencodeAgent":"Agent","opencodeModel":"Model","opencodeVariant":"Variant (reasoning effort)","opencodeDefault":"opencode default","opencodeAgentPlaceholder":"build","opencodeModelPlaceholder":"provider/model","opencodeVariantPlaceholder":"high","opencodeNoVariants":"This model has no variants.","opencodeSettingsOffline":"opencode is not running, so no candidates could be read. Values can be typed in directly (model as provider/model).","opencodeVariantLaunchNote":"Agent and model take effect the next time this instance starts. The variant cannot be passed as a launch flag — opencode 1.18.22\'s TUI has no --variant — so it is applied to the prompts CommandMate posts, from the next message on.","opencodeSettingsLoadError":"Failed to load the opencode launch settings.","opencodeSettingsSaveError":"Failed to save the opencode launch settings."}')}};
|
|
1
|
+
"use strict";exports.id=5571,exports.ids=[5571],exports.modules={95571:a=>{a.exports=JSON.parse('{"title":"Schedules","executionLogs":"Execution Logs","tabs":{"schedules":"Schedules","logs":"Logs"},"emptyState":{"title":"No schedules yet","description":"Run an agent automatically on a cron schedule.","createButton":"Create Schedule","manualToggle":"Or edit CMATE.md manually"},"noSchedules":"No schedules configured. Add a CMATE.md with a Schedules section.","noSchedulesTitle":"No schedules configured","noSchedulesStep1":"Switch to the Files tab","noSchedulesStep2":"Click the CMATE button in the toolbar to create CMATE.md","noSchedulesStep3":"Edit the Schedules table (Name, Cron, Message, CLI Tool, Enabled, Permission)","noSchedulesStep4":"Click CMATE again to validate","noLogs":"No execution logs yet.","status":{"running":"Running","completed":"Completed","failed":"Failed","timeout":"Timeout","cancelled":"Cancelled"},"enabled":"Enabled","disabled":"Disabled","activeSchedulesTitle":"Active Schedules","activeSchedulesDescription":"In-memory cron state currently registered by the scheduler.","noActiveSchedules":"No schedules are currently registered in memory.","nextRun":"Next run","agentLabel":"Agent","activeState":{"active":"Active","inactive":"Inactive","executing":"Executing"},"lastRun":"Last run","cron":"Cron","exitCode":"Exit","noOutput":"(no output)","message":"Message","response":"Response","unknownSchedule":"(deleted schedule)","retry":"Retry","loading":"Loading...","notes":"Notes","logs":"Schedules","notesAndLogs":"CMATE","agentTab":"Agent","agentSettings":"Agent Settings","selectAgents":"Select 2 agents to display in the terminal header tabs.","agentSaveSuccess":"Agent settings saved.","agentSaveError":"Failed to save agent settings.","agentInstances":"Agent Instances","agentInstancesDescription":"Manage the agents shown in the terminal header tabs. Add multiple instances of the same tool and give each an alias.","agentInstanceAliasLabel":"Alias","agentInstanceAliasPlaceholder":"Display name","agentInstanceBaseTool":"Base tool","agentInstanceAdd":"Add instance","agentInstanceDelete":"Delete instance","agentInstanceMoveUp":"Move up","agentInstanceMoveDown":"Move down","agentInstanceActions":"Instance actions","memoMoveUp":"Move up","memoMoveDown":"Move down","agentInstanceMax":"Up to {max} instances can be added.","agentInstanceMin":"At least {min} instance is required.","agentInstanceSaveError":"Failed to save agent instances.","agentDefaults":"Use this layout as the default","agentDefaultsDescription":"Save the tool order shown here as the default for new branches, or apply it to the branches of this repository that nobody has touched yet. Several instances of one tool count once.","agentDefaultsSetDefault":"Make this the default","agentDefaultsSaved":"Saved as the default. It now shows under \\"Default agents for new branches\\" in Settings.","agentDefaultsSaveError":"Could not save the default.","agentDefaultsApply":"Apply to unchanged branches","agentDefaultsApplyScope":"Only branches of this repository are affected. Other repositories, and branches whose agents you changed by hand, are left alone.","agentDefaultsEligible":"Would change {count} branch(es) in this repository","agentDefaultsEligibleUnknown":"Branches this would change: unknown","agentDefaultsRepositoryLabel":"Repository: {repository}","agentDefaultsRepoDeclared":"This repository declares its agents in .commandmate/agents.yaml. A bulk apply would override that declaration permanently, so it is disabled here — change the file instead.","agentDefaultsApplyConfirm":"Apply {agents} to {count} unchanged branch(es) in this repository. Other repositories, and branches whose agents you changed by hand, are left alone.","agentDefaultsApplied":"Applied to {count} branch(es).","agentDefaultsApplyError":"Could not apply to the branches.","agentDefaultsCountError":"Could not read how many branches this would change.","agentDefaultsRetry":"Retry the count","agentDefaultsInvalidRoster":"A default needs between {min} and {max} distinct tools. Add or remove a tool.","mobileVisibleInstances":"Show on this device","mobileVisibleInstancesDescription":"Choose which instances appear as tabs on this device. This selection is saved per device and does not change the shared instance list.","mobileVisibleInstanceMin":"At least one instance must stay visible on this device.","vibeLocalModel":"Ollama Model","vibeLocalModelDefault":"Default","vibeLocalContextWindow":"Context Window","vibeLocalContextWindowDefault":"Default (auto)","ollamaNotAvailable":"Ollama is not running. Start Ollama to select a model.","cmateCreated":"CMATE.md created with template. Edit it to configure schedules.","cmateValidation":{"noSchedulesSection":"CMATE.md has no Schedules section.","valid":"{count} schedule(s) validated successfully.","errors":"{errorCount} validation error(s) found: {details}","failed":"Failed to process CMATE.md."},"edit":{"newSchedule":"New Schedule","titleCreate":"New Schedule","titleEdit":"Edit Schedule","sectionBasic":"Basic","sectionAdvanced":"Advanced","sectionMessage":"Message","name":"Name","namePlaceholder":"daily-review","cron":"Cron Expression","cronPlaceholder":"0 9 * * *","cronPreset":"Preset","cronPresetHourly":"Every hour (0 */1 * * *)","cronPresetDaily9":"Daily at 9:00 (0 9 * * *)","cronPresetWeeklyMon9":"Mondays at 9:00 (0 9 * * 1)","cronPresetCustom":"Custom","askAiCron":"Ask AI","askAiMessage":"Ask AI to draft","askAiHint":"Drafts a prompt into the AI chat (no auto-send)","aiPrompts":{"cron":"I want to express the schedule timing as a cron expression. Convert a plain-language request (e.g. \\"every Monday at 9\\") into a cron expression and suggest a few candidates (e.g. \\"every Monday at 9\\" → `0 9 * * 1`).","cronRefine":"I want to express the schedule timing as a cron expression. The current input is {current}. Building on that, convert a plain-language request (e.g. \\"every Monday at 9\\") into a cron expression and suggest a few candidates (e.g. \\"every Monday at 9\\" → `0 9 * * 1`).","messageDraft":"For this schedule, I want to write the message (the instruction prompt) that the CLI tool will run on a schedule. First ask me what it is for, then propose the message content based on my answer.","messageDraftNamed":"For the schedule {name}, I want to write the message (the instruction prompt) that the CLI tool will run on a schedule. First ask me what it is for, then propose the message content based on my answer."},"cliTool":"CLI Tool","model":"Model","modelPlaceholder":"gpt-4.1","opencodeAgent":"Agent (opencode)","opencodeAgentPlaceholder":"plan","opencodeVariant":"Variant (opencode)","opencodeVariantPlaceholder":"high","opencodeTitle":"Session title (opencode)","opencodeTitlePlaceholder":"nightly-review","opencodeContinue":"Continue the last session (--continue)","permission":"Permission","commandCodeReadOnlyNote":"In command-code print mode, anything other than `yolo` blocks edit_file / write_file / shell_command / monitor_command / kill_shell, so the run is read-only (and is still recorded as a success).","message":"Message","messagePlaceholder":"Summarize README.md","charCount":"{count} / {max}","enabledLabel":"Enabled","save":"Save","cancel":"Cancel","edit":"Edit","delete":"Delete","enable":"Enable","disable":"Disable","confirmDelete":"Delete schedule \\"{name}\\"?","saveError":"Failed to save the schedule.","errorNameRequired":"Name is required.","errorNameTooLong":"Name must be {max} characters or less.","errorNameInvalid":"Name contains invalid characters.","errorCronInvalid":"Invalid cron expression.","errorMessageRequired":"Message is required.","errorMessageTooLong":"Message must be {max} characters or less.","errorModelInvalid":"Invalid model name.","errorAgentInvalid":"Invalid agent name.","errorVariantInvalid":"Invalid variant name.","errorTitleInvalid":"Invalid session title."},"timerTab":"Timer","todoTab":"ToDo","skillsTab":"Skills","verificationTab":"Verification","envTab":"Env","timer":{"title":"Delayed Messages","titleCreate":"New Timer","createButton":"Create Timer","newTimer":"New Timer","close":"Cancel","agent":"Agent","message":"Message","delay":"Send After","register":"Register Timer","cancel":"Cancel","noTimers":"No timers registered.","maxReached":"Maximum {max} timers per worktree.","registerSuccess":"Timer registered.","registerError":"Failed to register timer.","cancelSuccess":"Timer cancelled.","cancelError":"Failed to cancel timer.","status":{"pending":"Pending","sending":"Sending","sent":"Sent","failed":"Failed","cancelled":"Cancelled","no_session":"No Session"},"sessionWarning":"Session is not running. If the session is not running when the timer fires, the message will not be sent.","minutesShort":"{minutes}m","hoursMinutesShort":"{hours}h {minutes}m","loadMore":"Load more","clearHistory":"Clear history","clearConfirm":"Delete all sent, failed, and cancelled timer history?","cleared":"History cleared ({count} items)","detailTitle":"Timer Details","statusLabel":"Status","scheduledTime":"Scheduled Send","createdTime":"Created","sentTime":"Sent","failureReason":"Failure Reason"},"memoAdd":"Add Memo","memoRemaining":"{count} remaining","memoDefaultTitle":"Memo","memoTitlePlaceholder":"Memo title","memoInsertToMessage":"Insert to message","memoCopyContent":"Copy memo content","memoDelete":"Delete memo","memoContentPlaceholder":"Enter memo content...","memoLoading":"Loading memos...","memoSearchToggle":"Search memos","memoEmpty":"No memos yet.","memoEmptyHint":"Click the button below to add one.","memoNoMatch":"No memos match your search.","memoSearchLabel":"Memo search","memoSearchPlaceholder":"Search...","memoSearchInputLabel":"Search memos","memoSearchPrev":"Previous match (prev)","memoSearchNext":"Next match (next)","memoSearchClose":"Close search (close)","opencodeSettings":"opencode launch settings","opencodeSettingsDescription":"The agent, model and variant this instance starts opencode with and sends prompts as.","opencodeAgent":"Agent","opencodeModel":"Model","opencodeVariant":"Variant (reasoning effort)","opencodeDefault":"opencode default","opencodeAgentPlaceholder":"build","opencodeModelPlaceholder":"provider/model","opencodeVariantPlaceholder":"high","opencodeNoVariants":"This model has no variants.","opencodeSettingsOffline":"opencode is not running, so no candidates could be read. Values can be typed in directly (model as provider/model).","opencodeVariantLaunchNote":"Agent and model take effect the next time this instance starts. The variant cannot be passed as a launch flag — opencode 1.18.22\'s TUI has no --variant — so it is applied to the prompts CommandMate posts, from the next message on.","opencodeSettingsLoadError":"Failed to load the opencode launch settings.","opencodeSettingsSaveError":"Failed to save the opencode launch settings."}')}};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
exports.id=595,exports.ids=[595],exports.modules={3453:(a,b,c)=>{"use strict";c.d(b,{Rh:()=>r,T1:()=>o,Z2:()=>m,c$:()=>n,nu:()=>q});var d=c(72626),e=c(80438);let f=(0,d.h)("ip-restriction"),g="::ffff:",h=/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/,i=/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\/(\d{1,2})$/,j=process.env.CM_ALLOWED_IPS?.trim()||"",k=process.env.CM_TRUST_PROXY?.trim()||"";""!==k&&"true"!==k&&"false"!==k&&(0,e.h)(f,"trust-proxy-unexpected",{value:k});let l="true"===k;function m(a){return a?a.toLowerCase().startsWith(g)?a.substring(g.length):a:""}function n(a,b){if(0===b.length)return!1;let c=function(a){let b=a.match(h);if(!b)return null;let c=[parseInt(b[1],10),parseInt(b[2],10),parseInt(b[3],10),parseInt(b[4],10)];for(let a of c)if(a<0||a>255)return null;return(c[0]<<24|c[1]<<16|c[2]<<8|c[3])>>>0}(m(a));if(null===c)return!1;for(let a of b)if((c&a.mask)>>>0===a.network)return!0;return!1}function o(a){if(l){let b=a.get("x-forwarded-for");if(b){let a=b.split(",")[0].trim();if(a)return a}}return a.get("x-real-ip")||null}let p=j.length>0?function(a){let b=a.trim();if(0===b.length)return[];let c=b.split(",").map(a=>a.trim()).filter(a=>a.length>0);if(c.length>256)throw Error(`CM_ALLOWED_IPS: too many entries (${c.length}). Maximum is 256.`);let d=[];for(let a of c){if(a.length>18)throw Error(`CM_ALLOWED_IPS: entry "${a}" exceeds maximum length of 18 characters.`);let b=a.match(i);if(b){let c=[parseInt(b[1],10),parseInt(b[2],10),parseInt(b[3],10),parseInt(b[4],10)],e=parseInt(b[5],10);for(let b of c)if(b<0||b>255)throw Error(`CM_ALLOWED_IPS: invalid octet in "${a}". Octets must be 0-255.`);if(e<0||e>32)throw Error(`CM_ALLOWED_IPS: invalid prefix length in "${a}". Must be 0-32.`);let f=(c[0]<<24|c[1]<<16|c[2]<<8|c[3])>>>0,g=0===e?0:0xffffffff<<32-e>>>0;d.push({network:(f&g)>>>0,mask:g});continue}let c=a.match(h);if(c){let b=[parseInt(c[1],10),parseInt(c[2],10),parseInt(c[3],10),parseInt(c[4],10)];for(let c of b)if(c<0||c>255)throw Error(`CM_ALLOWED_IPS: invalid octet in "${a}". Octets must be 0-255.`);let e=(b[0]<<24|b[1]<<16|b[2]<<8|b[3])>>>0;d.push({network:e,mask:0xffffffff});continue}throw Error(`CM_ALLOWED_IPS: invalid entry "${a}". Expected IPv4 address or CIDR notation.`)}return d}(j):[];function q(){return p}function r(){return j.length>0}},7015:(a,b,c)=>{"use strict";c.d(b,{Ds:()=>g});var d=c(81719);class e{constructor(a,b=3e4){this.cache=new Map,this.allAppsCache=null,this.lastRefresh=0,this.db=a,this.ttl=b}getTTL(){return this.ttl}isStale(){return Date.now()-this.lastRefresh>this.ttl}async refresh(){let a=(0,d.$i)(this.db);for(let b of(this.cache.clear(),a))this.cache.set(b.pathPrefix,b);this.allAppsCache=a,this.lastRefresh=Date.now()}async getByPathPrefix(a){return this.isStale()&&await this.refresh(),this.cache.get(a)??null}async getAll(){return this.isStale()&&await this.refresh(),this.allAppsCache??[]}invalidate(){this.cache.clear(),this.allAppsCache=null,this.lastRefresh=0}invalidateByIssueNo(a){this.invalidate()}}let f=null;function g(a){if(!f){if(!a)throw Error("Database instance required to initialize cache");f=new e(a)}return f}},23854:(a,b,c)=>{"use strict";c.d(b,{$G:()=>f,AL:()=>h,DZ:()=>d,Qe:()=>g,ie:()=>e});let d=4e3,e=15e3;function f(a){var b,c;if(b=a.from,c=a.to,b.worktreeId===c.worktreeId&&b.instanceId===c.instanceId)return{code:"RELAY_SELF_TARGET",message:"A session cannot relay a reply to itself. --reply-to must name a different worktree or a different agent instance."};let d=null===a.parentHops?1:a.parentHops+1;return null===a.parentHops||a.allowRelayChain?d>3?{code:"RELAY_HOPS_EXCEEDED",message:`Relay chains stop at 3 hops; this one would be ${d}. Report the reply to whoever asked instead of forwarding it again.`}:a.openBetween>=1?{code:"RELAY_DUPLICATE_PENDING",message:"There is already an open relay between these two sessions. Wait for it, or withdraw it with `commandmate relays cancel <id>`."}:{ok:!0,hops:d}:{code:"RELAY_CHAIN_BLOCKED",message:"The last message this session was given arrived over a relay, so opening another one would chain two deliveries together. Pass --allow-relay-chain if that is what you mean."}}function g(a){return"code"in a}function h(a){return void 0!==a&&Number.isFinite(a)?Math.min(6048e5,Math.max(6e4,Math.trunc(a))):864e5}},26838:(a,b,c)=>{"use strict";c.d(b,{E2:()=>o,Mj:()=>m,Sw:()=>l,lX:()=>p});var d=c(29021),e=c(33873),f=c(54325),g=c(90164);let h=/^v?\d+\.\d+\.\d+$/,i=/^[a-zA-Z0-9.\-\s_v]+$/,j=[".next","required-server-files.json"],k=globalThis.__versionCheckCache??(globalThis.__versionCheckCache={result:null,fetchedAt:0,rateLimitResetAt:null});function l(){return function(){try{let a=(0,d.readFileSync)((0,e.join)(process.cwd(),"package.json"),"utf-8"),b=JSON.parse(a);if("commandmate"===b.name&&"string"==typeof b.version&&b.version.length>0)return b.version;return null}catch{return null}}()??"0.
|
|
1
|
+
exports.id=595,exports.ids=[595],exports.modules={3453:(a,b,c)=>{"use strict";c.d(b,{Rh:()=>r,T1:()=>o,Z2:()=>m,c$:()=>n,nu:()=>q});var d=c(72626),e=c(80438);let f=(0,d.h)("ip-restriction"),g="::ffff:",h=/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/,i=/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\/(\d{1,2})$/,j=process.env.CM_ALLOWED_IPS?.trim()||"",k=process.env.CM_TRUST_PROXY?.trim()||"";""!==k&&"true"!==k&&"false"!==k&&(0,e.h)(f,"trust-proxy-unexpected",{value:k});let l="true"===k;function m(a){return a?a.toLowerCase().startsWith(g)?a.substring(g.length):a:""}function n(a,b){if(0===b.length)return!1;let c=function(a){let b=a.match(h);if(!b)return null;let c=[parseInt(b[1],10),parseInt(b[2],10),parseInt(b[3],10),parseInt(b[4],10)];for(let a of c)if(a<0||a>255)return null;return(c[0]<<24|c[1]<<16|c[2]<<8|c[3])>>>0}(m(a));if(null===c)return!1;for(let a of b)if((c&a.mask)>>>0===a.network)return!0;return!1}function o(a){if(l){let b=a.get("x-forwarded-for");if(b){let a=b.split(",")[0].trim();if(a)return a}}return a.get("x-real-ip")||null}let p=j.length>0?function(a){let b=a.trim();if(0===b.length)return[];let c=b.split(",").map(a=>a.trim()).filter(a=>a.length>0);if(c.length>256)throw Error(`CM_ALLOWED_IPS: too many entries (${c.length}). Maximum is 256.`);let d=[];for(let a of c){if(a.length>18)throw Error(`CM_ALLOWED_IPS: entry "${a}" exceeds maximum length of 18 characters.`);let b=a.match(i);if(b){let c=[parseInt(b[1],10),parseInt(b[2],10),parseInt(b[3],10),parseInt(b[4],10)],e=parseInt(b[5],10);for(let b of c)if(b<0||b>255)throw Error(`CM_ALLOWED_IPS: invalid octet in "${a}". Octets must be 0-255.`);if(e<0||e>32)throw Error(`CM_ALLOWED_IPS: invalid prefix length in "${a}". Must be 0-32.`);let f=(c[0]<<24|c[1]<<16|c[2]<<8|c[3])>>>0,g=0===e?0:0xffffffff<<32-e>>>0;d.push({network:(f&g)>>>0,mask:g});continue}let c=a.match(h);if(c){let b=[parseInt(c[1],10),parseInt(c[2],10),parseInt(c[3],10),parseInt(c[4],10)];for(let c of b)if(c<0||c>255)throw Error(`CM_ALLOWED_IPS: invalid octet in "${a}". Octets must be 0-255.`);let e=(b[0]<<24|b[1]<<16|b[2]<<8|b[3])>>>0;d.push({network:e,mask:0xffffffff});continue}throw Error(`CM_ALLOWED_IPS: invalid entry "${a}". Expected IPv4 address or CIDR notation.`)}return d}(j):[];function q(){return p}function r(){return j.length>0}},7015:(a,b,c)=>{"use strict";c.d(b,{Ds:()=>g});var d=c(81719);class e{constructor(a,b=3e4){this.cache=new Map,this.allAppsCache=null,this.lastRefresh=0,this.db=a,this.ttl=b}getTTL(){return this.ttl}isStale(){return Date.now()-this.lastRefresh>this.ttl}async refresh(){let a=(0,d.$i)(this.db);for(let b of(this.cache.clear(),a))this.cache.set(b.pathPrefix,b);this.allAppsCache=a,this.lastRefresh=Date.now()}async getByPathPrefix(a){return this.isStale()&&await this.refresh(),this.cache.get(a)??null}async getAll(){return this.isStale()&&await this.refresh(),this.allAppsCache??[]}invalidate(){this.cache.clear(),this.allAppsCache=null,this.lastRefresh=0}invalidateByIssueNo(a){this.invalidate()}}let f=null;function g(a){if(!f){if(!a)throw Error("Database instance required to initialize cache");f=new e(a)}return f}},23854:(a,b,c)=>{"use strict";c.d(b,{$G:()=>f,AL:()=>h,DZ:()=>d,Qe:()=>g,ie:()=>e});let d=4e3,e=15e3;function f(a){var b,c;if(b=a.from,c=a.to,b.worktreeId===c.worktreeId&&b.instanceId===c.instanceId)return{code:"RELAY_SELF_TARGET",message:"A session cannot relay a reply to itself. --reply-to must name a different worktree or a different agent instance."};let d=null===a.parentHops?1:a.parentHops+1;return null===a.parentHops||a.allowRelayChain?d>3?{code:"RELAY_HOPS_EXCEEDED",message:`Relay chains stop at 3 hops; this one would be ${d}. Report the reply to whoever asked instead of forwarding it again.`}:a.openBetween>=1?{code:"RELAY_DUPLICATE_PENDING",message:"There is already an open relay between these two sessions. Wait for it, or withdraw it with `commandmate relays cancel <id>`."}:{ok:!0,hops:d}:{code:"RELAY_CHAIN_BLOCKED",message:"The last message this session was given arrived over a relay, so opening another one would chain two deliveries together. Pass --allow-relay-chain if that is what you mean."}}function g(a){return"code"in a}function h(a){return void 0!==a&&Number.isFinite(a)?Math.min(6048e5,Math.max(6e4,Math.trunc(a))):864e5}},26838:(a,b,c)=>{"use strict";c.d(b,{E2:()=>o,Mj:()=>m,Sw:()=>l,lX:()=>p});var d=c(29021),e=c(33873),f=c(54325),g=c(90164);let h=/^v?\d+\.\d+\.\d+$/,i=/^[a-zA-Z0-9.\-\s_v]+$/,j=[".next","required-server-files.json"],k=globalThis.__versionCheckCache??(globalThis.__versionCheckCache={result:null,fetchedAt:0,rateLimitResetAt:null});function l(){return function(){try{let a=(0,d.readFileSync)((0,e.join)(process.cwd(),"package.json"),"utf-8"),b=JSON.parse(a);if("commandmate"===b.name&&"string"==typeof b.version&&b.version.length>0)return b.version;return null}catch{return null}}()??"0.34.0"}function m(){return l()}let n=null;function o(a){let b=n??=function(){{let a=function(){try{let a=(0,d.readFileSync)((0,e.join)(process.cwd(),...j),"utf-8"),b=JSON.parse(a),c=b.config?.env?.NEXT_PUBLIC_APP_VERSION;if("string"==typeof c&&c.length>0)return c;return null}catch{return null}}();if(a)return a}return"0.34.0"}();return(0,f.LE)(b,a)?{serverVersion:b,clientVersion:a}:null}async function p(){try{var a,b,c;if(null!==k.result&&Date.now()-k.fetchedAt<36e5||k.rateLimitResetAt&&(!(Date.now()>=k.rateLimitResetAt)||(k.rateLimitResetAt=null,0)))return k.result;let d=await fetch("https://api.github.com/repos/Kewton/CommandMate/releases/latest",{headers:{Accept:"application/vnd.github+json","User-Agent":`CommandMate/${m()}`},cache:"no-store",signal:AbortSignal.timeout(5e3)});if(403===d.status)return function(a){let b=a.headers.get("X-RateLimit-Reset");b?k.rateLimitResetAt=1e3*parseInt(b,10):k.rateLimitResetAt=Date.now()+36e5}(d),k.result;if(!d.ok)return k.result;let e=await d.json(),f=m(),j=e.tag_name.replace(/^v/,""),l={hasUpdate:function(a,b){if(!h.test(a)||!h.test(b))return!1;let c=a=>a.replace(/^v/,"").split(".").map(Number),[d,e,f]=c(a),[g,i,j]=c(b);return g!==d?g>d:i!==e?i>e:j>f}(f,e.tag_name),currentVersion:f,latestVersion:j,releaseUrl:(a=e.html_url).startsWith(g.Dk)?a:null,releaseName:(b=e.name,c=e.tag_name,i.test(b)&&b.length<=128?b:c),publishedAt:e.published_at};return k.result=l,k.fetchedAt=Date.now(),l}catch{return k.result}}},39727:()=>{},43925:(a,b,c)=>{"use strict";c.d(b,{PJ:()=>i,dz:()=>j,vQ:()=>g});var d=c(57836),e=c(23854);let f=(0,c(72626).h)("relay-triggers");function g(a,b,d,e){let g={worktreeId:a,cliToolId:b,instanceId:d??b};(async()=>{try{let{notifyRelayTurnCompleted:a}=await Promise.all([c.e(1634),c.e(9130),c.e(4443),c.e(8800),c.e(7905),c.e(1886),c.e(6337),c.e(3323),c.e(8918),c.e(650),c.e(6677),c.e(3077),c.e(1210)]).then(c.bind(c,71210));await a(g,{settled:e})}catch(c){f.warn("relay-turn-trigger-failed",{worktreeId:a,cliToolId:b,instanceId:g.instanceId,error:c instanceof Error?c.message:String(c)})}})()}async function h(){try{let{runRelayMaintenanceTick:a}=await Promise.all([c.e(1634),c.e(9130),c.e(4443),c.e(8800),c.e(7905),c.e(1886),c.e(6337),c.e(3323),c.e(8918),c.e(650),c.e(6677),c.e(3077),c.e(1210)]).then(c.bind(c,71210));await a()}catch(a){f.warn("relay-maintenance-failed",{error:a instanceof Error?a.message:String(a)})}}function i(){j(),globalThis.__relayTriggersUnsubscribe=(0,d.wN)(a=>{a.waiting&&"prompt"===a.kind&&function(a,b,d){let e={worktreeId:a,cliToolId:b,instanceId:d??b};(async()=>{try{let{notifyRelayPromptWaiting:a}=await Promise.all([c.e(1634),c.e(9130),c.e(4443),c.e(8800),c.e(7905),c.e(1886),c.e(6337),c.e(3323),c.e(8918),c.e(650),c.e(6677),c.e(3077),c.e(1210)]).then(c.bind(c,71210));a(e)}catch(c){f.warn("relay-prompt-trigger-failed",{worktreeId:a,cliToolId:b,instanceId:e.instanceId,error:c instanceof Error?c.message:String(c)})}})()}(a.worktreeId,a.cliToolId,a.instanceId)});let a=setInterval(()=>void h(),e.ie);a.unref?.(),globalThis.__relayMaintenanceTimer=a}function j(){let a=globalThis.__relayTriggersUnsubscribe;a&&(a(),globalThis.__relayTriggersUnsubscribe=void 0),globalThis.__relayMaintenanceTimer&&(clearInterval(globalThis.__relayMaintenanceTimer),globalThis.__relayMaintenanceTimer=void 0)}},47990:()=>{},49640:(a,b,c)=>{"use strict";c.r(b),c.d(b,{WORKTREE_RENAMED_EVENT_TYPE:()=>aj,__internal:()=>ap,broadcast:()=>ag,broadcastMessage:()=>ai,cleanupRooms:()=>am,closeWebSocket:()=>ao,handleProxyUpgrade:()=>T,hasRoomSubscribers:()=>ah,migrateWorktreeRooms:()=>ak,setupWebSocket:()=>U});var d=c(81503),e=c(91645),f=c(88081),g=c(3453),h=c(15194),i=c(40964),j=c(88807),k=c(56791);let l={capturePaneCalls:0,activeControlSessions:0,subscriberCount:0,cleanupCount:0,firstOutputLatencyCount:0,firstOutputLatencyTotalMs:0,firstOutputLatencyLastMs:null,firstOutputLatencyMinMs:null,firstOutputLatencyMaxMs:null};var m=c(79892),n=c(72626),o=c(79646);class p{push(a){if(0===a.length)return[];let b=(this.remainder+a).split("\n");this.remainder=b.pop()??"";let c=[];for(let a of b){let b=a.endsWith("\r")?a.slice(0,-1):a,d=this.parseLine(b);d&&c.push(d)}return c}flush(){if(0===this.remainder.length)return[];let a=this.parseLine(this.remainder);return this.remainder="",a?[a]:[]}parseLine(a){return 0===a.length?{type:"output",data:"\n"}:a.startsWith("%output ")?{type:"output",data:`${a.slice(8)}
|
|
2
2
|
`}:"%exit"===a||a.startsWith("%exit ")?{type:"exit",exitCode:null}:a.startsWith("%error ")?{type:"error",error:Error(a.slice(7))}:a.startsWith("%")?null:{type:"output",data:`${a}
|
|
3
3
|
`}}constructor(){this.remainder=""}}let q=(0,n.h)("tmux-control-client");class r{constructor(a={}){this.parser=new p,this.handlers=new Set,this.child=null,this.sessionName=null,this.idleTimer=null,this.started=!1,this.spawnProcess=a.spawnProcess??((a,b,c)=>(0,o.spawn)(a,b,c)),this.tmuxBinary=a.tmuxBinary??"tmux",this.idleTimeoutMs=a.idleTimeoutMs??3e4}start(a){this.started||(this.sessionName=a,this.child=this.spawnProcess(this.tmuxBinary,["-C","attach-session","-t",(0,m.lA)(a)],{stdio:"pipe"}),this.started=!0,this.child.stdout.setEncoding("utf8"),this.child.stdout.on("data",a=>{this.touch();let b="string"==typeof a?a:a.toString("utf8");for(let a of this.parser.push(b))this.emit(a)}),this.child.stderr.setEncoding("utf8"),this.child.stderr.on("data",a=>{let b="string"==typeof a?a:a.toString("utf8");this.emit({type:"error",error:Error(b.trim()||"tmux control stderr")})}),this.child.on("close",a=>{for(let a of this.parser.flush())this.emit(a);this.emit({type:"exit",exitCode:a}),this.stop()}),this.child.on("error",a=>{this.emit({type:"error",error:a}),this.stop()}),this.resetIdleTimer(),q.debug("start",{sessionName:a}))}onEvent(a){return this.handlers.add(a),()=>{this.handlers.delete(a)}}sendInput(a){if(!this.child?.stdin.writable)throw Error("Tmux control client is not writable");this.touch(),this.child.stdin.write(a)}resize(a,b){if(!this.child?.stdin.writable)throw Error("Tmux control client is not writable");this.touch(),this.child.stdin.write(`refresh-client -C ${a}x${b}
|
|
4
4
|
`)}stop(){this.idleTimer&&(clearTimeout(this.idleTimer),this.idleTimer=null),this.child&&(this.child.removeAllListeners(),this.child.stdout.removeAllListeners(),this.child.stderr.removeAllListeners(),this.child.kill(),this.child=null),this.started=!1}isStarted(){return this.started}setSessionName(a){this.sessionName=a}emit(a){for(let b of this.handlers)b(a)}touch(){this.resetIdleTimer()}resetIdleTimer(){this.idleTimeoutMs<=0||(this.idleTimer&&clearTimeout(this.idleTimer),this.idleTimer=setTimeout(()=>{q.debug("idle-timeout",{sessionName:this.sessionName}),this.stop()},this.idleTimeoutMs))}}let s=(0,n.h)("tmux-control-registry");class t{constructor(a={}){this.entries=new Map,this.handlers=new Map,this.idleTimeoutMs=a.idleTimeoutMs??15e3,this.createClient=a.createClient??(()=>new r(a))}subscribe(a,b,c){let d=this.ensureEntry(a);d.subscribers.add(b),this.cancelIdleCleanup(d),this.updateMetrics();let e=this.handlers.get(a);return e||(e=new Set,this.handlers.set(a,e)),e.add(c),()=>{e?.delete(c),this.unsubscribe(a,b)}}sendInput(a,b){let c=this.entries.get(a);if(!c)throw Error(`No control client registered for ${a}`);c.client.sendInput(b)}resize(a,b,c){let d=this.entries.get(a);if(!d)throw Error(`No control client registered for ${a}`);d.client.resize(b,c)}hasSession(a){return this.entries.has(a)}getSubscriberCount(a){return this.entries.get(a)?.subscribers.size??0}getTotalSubscriberCount(){let a=0;for(let b of this.entries.values())a+=b.subscribers.size;return a}getSessionCount(){return this.entries.size}shutdown(){for(let[a,b]of this.entries)this.teardownEntry(a,b);this.entries.clear(),this.handlers.clear(),this.updateMetrics()}renameSession(a,b){if(a===b)return!1;let c=this.entries.get(a);if(!c)return!1;if(this.entries.has(b))return s.warn("rename:destination-occupied",{oldName:a,newName:b}),!1;this.entries.delete(a),c.sessionName=b,this.entries.set(b,c),c.client.setSessionName(b);let d=this.handlers.get(a);return d&&(this.handlers.delete(a),this.handlers.set(b,d)),s.debug("rename",{oldName:a,newName:b}),!0}ensureEntry(a){let b=this.entries.get(a);if(b)return b;let c=this.createClient(a);c.start(a);let d={client:c,subscribers:new Set,unsubscribeClientEvent:()=>{},idleTimer:null,sessionName:a};return d.unsubscribeClientEvent=c.onEvent(a=>{let b=this.handlers.get(d.sessionName);if(b)for(let c of b)c(a);("exit"===a.type||"error"===a.type)&&this.deleteEntry(d.sessionName)}),this.entries.set(a,d),this.updateMetrics(),d}unsubscribe(a,b){let c=this.entries.get(a);c&&(c.subscribers.delete(b),this.updateMetrics(),0===c.subscribers.size&&this.scheduleIdleCleanup(a,c))}scheduleIdleCleanup(a,b){if(this.idleTimeoutMs<=0)return void this.deleteEntry(a);this.cancelIdleCleanup(b),b.idleTimer=setTimeout(()=>{s.debug("idle-cleanup",{sessionName:b.sessionName}),this.deleteEntry(b.sessionName)},this.idleTimeoutMs)}cancelIdleCleanup(a){a.idleTimer&&(clearTimeout(a.idleTimer),a.idleTimer=null)}deleteEntry(a){let b=this.entries.get(a);b&&(this.teardownEntry(a,b),this.entries.delete(a),this.handlers.delete(a),this.updateMetrics())}teardownEntry(a,b){this.cancelIdleCleanup(b),b.unsubscribeClientEvent(),b.client.stop(),l.cleanupCount+=1}updateMetrics(){l.activeControlSessions=Math.max(0,this.getSessionCount()),l.subscriberCount=Math.max(0,this.getTotalSubscriberCount())}}let u=null,v={streamingOutput:!0,explicitResize:!0,snapshotFallback:!0};class w{constructor(a={}){this.registry=a.registry??(u||(u=new t),u)}async ensureSession(a,b){await (0,m.N)(a)||await (0,m.jw)(a,b)}async sessionExists(a){return(0,m.N)(a)}async sendInput(a,b){if(this.registry.hasSession(a))return void this.registry.sendInput(a,b);await (0,m.V1)(a,b)}async sendSpecialKey(a,b){if("Escape"!==b&&"C-c"!==b&&"C-d"!==b&&"C-m"!==b&&"Enter"!==b)throw Error(`Unsupported special key for ControlModeTmuxTransport: ${b}`);await (0,m.ds)(a,b)}async resize(a,b,c){this.registry.resize(a,b,c)}async captureSnapshot(a,b){return l.capturePaneCalls+=1,(0,m.Xg)(a,b)}async subscribe(a,b){let c=`sub-${Date.now()}-${Math.random().toString(36).slice(2,10)}`,d=this.registry.subscribe(a,c,a=>{"output"===a.type?b.onOutput(a.data):"exit"===a.type?b.onExit?.({exitCode:a.exitCode}):b.onError(a.error)});return{async unsubscribe(){d()}}}getCapabilities(){return v}getSubscriberCount(a){return this.registry.getSubscriberCount(a)}renameSession(a,b){return this.registry.renameSession(a,b)}async killSession(a){return(0,m.fY)(a)}}let x=null;function y(){return x||(x=new w),x}var z=c(7015),A=c(26838),B=c(54325),C=c(52660),D=c(55233),E=c(48083);let F=(0,n.h)("model-change-broadcast");function G(){let a=globalThis.__modelChangeBroadcastUnsubscribe;a&&(a(),globalThis.__modelChangeBroadcastUnsubscribe=void 0)}var H=c(43925),I=c(57836);function J(){let a=globalThis.__waitingStatusBroadcastUnsubscribe;a&&(a(),globalThis.__waitingStatusBroadcastUnsubscribe=void 0),G(),(0,H.dz)()}let K=(0,n.h)("publisher-registry");function L(){return globalThis.__realtimeRoomPublisher?.publisher??null}let M=(0,n.h)("ws-server"),N=null,O=new Map,P=new Map,Q=null,R=new Set(["localhost","127.0.0.1"]);function S(a,b){try{a.write(`HTTP/1.1 ${b}\r
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";exports.id=6130,exports.ids=[6130],exports.modules={26838:(a,b,c)=>{c.d(b,{E2:()=>o,Mj:()=>m,Sw:()=>l,lX:()=>p});var d=c(29021),e=c(33873),f=c(54325),g=c(90164);let h=/^v?\d+\.\d+\.\d+$/,i=/^[a-zA-Z0-9.\-\s_v]+$/,j=[".next","required-server-files.json"],k=globalThis.__versionCheckCache??(globalThis.__versionCheckCache={result:null,fetchedAt:0,rateLimitResetAt:null});function l(){return function(){try{let a=(0,d.readFileSync)((0,e.join)(process.cwd(),"package.json"),"utf-8"),b=JSON.parse(a);if("commandmate"===b.name&&"string"==typeof b.version&&b.version.length>0)return b.version;return null}catch{return null}}()??"0.
|
|
1
|
+
"use strict";exports.id=6130,exports.ids=[6130],exports.modules={26838:(a,b,c)=>{c.d(b,{E2:()=>o,Mj:()=>m,Sw:()=>l,lX:()=>p});var d=c(29021),e=c(33873),f=c(54325),g=c(90164);let h=/^v?\d+\.\d+\.\d+$/,i=/^[a-zA-Z0-9.\-\s_v]+$/,j=[".next","required-server-files.json"],k=globalThis.__versionCheckCache??(globalThis.__versionCheckCache={result:null,fetchedAt:0,rateLimitResetAt:null});function l(){return function(){try{let a=(0,d.readFileSync)((0,e.join)(process.cwd(),"package.json"),"utf-8"),b=JSON.parse(a);if("commandmate"===b.name&&"string"==typeof b.version&&b.version.length>0)return b.version;return null}catch{return null}}()??"0.34.0"}function m(){return l()}let n=null;function o(a){let b=n??=function(){{let a=function(){try{let a=(0,d.readFileSync)((0,e.join)(process.cwd(),...j),"utf-8"),b=JSON.parse(a),c=b.config?.env?.NEXT_PUBLIC_APP_VERSION;if("string"==typeof c&&c.length>0)return c;return null}catch{return null}}();if(a)return a}return"0.34.0"}();return(0,f.LE)(b,a)?{serverVersion:b,clientVersion:a}:null}async function p(){try{var a,b,c;if(null!==k.result&&Date.now()-k.fetchedAt<36e5||k.rateLimitResetAt&&(!(Date.now()>=k.rateLimitResetAt)||(k.rateLimitResetAt=null,0)))return k.result;let d=await fetch("https://api.github.com/repos/Kewton/CommandMate/releases/latest",{headers:{Accept:"application/vnd.github+json","User-Agent":`CommandMate/${m()}`},cache:"no-store",signal:AbortSignal.timeout(5e3)});if(403===d.status)return function(a){let b=a.headers.get("X-RateLimit-Reset");b?k.rateLimitResetAt=1e3*parseInt(b,10):k.rateLimitResetAt=Date.now()+36e5}(d),k.result;if(!d.ok)return k.result;let e=await d.json(),f=m(),j=e.tag_name.replace(/^v/,""),l={hasUpdate:function(a,b){if(!h.test(a)||!h.test(b))return!1;let c=a=>a.replace(/^v/,"").split(".").map(Number),[d,e,f]=c(a),[g,i,j]=c(b);return g!==d?g>d:i!==e?i>e:j>f}(f,e.tag_name),currentVersion:f,latestVersion:j,releaseUrl:(a=e.html_url).startsWith(g.Dk)?a:null,releaseName:(b=e.name,c=e.tag_name,i.test(b)&&b.length<=128?b:c),publishedAt:e.published_at};return k.result=l,k.fetchedAt=Date.now(),l}catch{return k.result}}},54325:(a,b,c)=>{c.d(b,{LE:()=>f,Oo:()=>e,ST:()=>d,T4:()=>k,dz:()=>j,r9:()=>h,rx:()=>i,rz:()=>g});let d="client_version",e="version_mismatch";function f(a,b){return!!a&&!!b&&"0.0.0"!==a&&"0.0.0"!==b&&a!==b}let g="chat_turn_progress",h=1e3;function i(a,b=65536){return b<=0?{body:"",truncated:a.length>0}:a.length<=b?{body:a,truncated:!1}:{body:a.slice(a.length-b),truncated:!0}}let j="messages_invalidated",k="model_changed"},88573:(a,b,c)=>{c.d(b,{Lw:()=>s});let d="https://raw.githubusercontent.com/Kewton/commandmate-skills/main/catalog/v1/catalog.json",e=[d],f=/^[A-Za-z0-9/+=_."-]{1,128}$/;var g=c(72626),h=c(13075);let i=(0,g.h)("lib/skills/catalog-client"),j={FETCH_FAILED:"SKILL_CATALOG_FETCH_FAILED",RATE_LIMITED:"SKILL_CATALOG_RATE_LIMITED",OVERSIZED:"SKILL_CATALOG_OVERSIZED",MALFORMED:"SKILL_CATALOG_MALFORMED",INVALID_SCHEMA:"SKILL_CATALOG_INVALID_SCHEMA"},k=globalThis.__skillCatalogCache??={catalog:null,validatedAt:0,confirmedAt:0,etag:null,revision:null,rateLimitResetAt:null,inflight:null};class l extends Error{}let m={[j.FETCH_FAILED]:"The Skill Catalog could not be retrieved.",[j.RATE_LIMITED]:"The Skill Catalog origin is rate limiting requests.",[j.OVERSIZED]:"The Skill Catalog response exceeded the allowed size.",[j.MALFORMED]:"The Skill Catalog response was not valid JSON.",[j.INVALID_SCHEMA]:"The Skill Catalog response did not match the supported Catalog schema."};function n(a){return new Date(a).toISOString()}function o(a,b,c){return{catalog:a,fetchedAt:n(k.validatedAt),revalidatedAt:n(k.confirmedAt),state:b,stale:"stale"===b,offline:"stale"===b,staleReason:c,source:{repository:"Kewton/commandmate-skills",ref:"main",revision:k.revision}}}function p(a,b=[]){return k.catalog?{ok:!0,snapshot:o(k.catalog,"stale",a)}:{ok:!1,failure:{code:a,message:m[a],errors:b}}}async function q(a,b){let c=a.headers.get("Content-Length");if(null!==c){let a=Number(c);if(!Number.isFinite(a)||a<0||a>b)throw new l("content-length out of bounds")}let d=a.body;if(!d||"function"!=typeof d.getReader){let c=await a.text();if(new TextEncoder().encode(c).length>b)throw new l("body exceeded size cap");return c}let e=d.getReader(),f=[],g=0;for(;;){let{done:a,value:c}=await e.read();if(a)break;if(c){if((g+=c.byteLength)>b)throw await e.cancel(),new l("body exceeded size cap");f.push(c)}}let h=new Uint8Array(g),i=0;for(let a of f)h.set(a,i),i+=a.byteLength;return new TextDecoder("utf-8").decode(h)}async function r(a){let b,c,g;if(!e.includes(d))return p(j.FETCH_FAILED);let m={Accept:"application/json","User-Agent":`CommandMate/${a}`};null!==k.catalog&&null!==k.etag&&(m["If-None-Match"]=k.etag);try{b=await fetch(d,{headers:m,cache:"no-store",signal:AbortSignal.timeout(5e3)})}catch{return i.warn("catalog-fetch-failed",{reason:j.FETCH_FAILED}),p(j.FETCH_FAILED)}if(304===b.status&&null!==k.catalog)return k.confirmedAt=Date.now(),{ok:!0,snapshot:o(k.catalog,"revalidated",null)};if(403===b.status||429===b.status)return!function(a){let b=Date.now(),c=b+864e5,d=a.headers.get("X-RateLimit-Reset");if(null!==d){let a=Number(d);if(Number.isFinite(a)&&a>0){k.rateLimitResetAt=Math.min(1e3*a,c);return}}let e=a.headers.get("Retry-After");if(null!==e){let a=Number(e);if(Number.isFinite(a)&&a>0){k.rateLimitResetAt=Math.min(b+1e3*a,c);return}}k.rateLimitResetAt=b+36e5}(b),i.warn("catalog-rate-limited",{status:b.status}),p(j.RATE_LIMITED);if(!b.ok)return i.warn("catalog-fetch-failed",{status:b.status}),p(j.FETCH_FAILED);try{c=await q(b,1048576)}catch(b){let a=b instanceof l?j.OVERSIZED:j.FETCH_FAILED;return i.warn("catalog-body-rejected",{reason:a}),p(a)}try{g=JSON.parse(c)}catch{return i.warn("catalog-malformed",{reason:j.MALFORMED}),p(j.MALFORMED)}let n=(0,h.JJ)(g);if(!n.ok)return i.warn("catalog-invalid-schema",{errorCount:n.errors.length}),p(j.INVALID_SCHEMA,n.errors);let r=Date.now();return k.catalog=n.value,k.validatedAt=r,k.confirmedAt=r,k.etag=b.headers.get("ETag"),k.revision=function(a){if(null===a)return null;let b=a.trim();return f.test(b)?b:null}(k.etag),{ok:!0,snapshot:o(n.value,"fresh",null)}}async function s(a={}){let{hostVersion:b="0.0.0",forceRevalidate:c=!1}=a;return!c&&null!==k.catalog&&Date.now()-k.confirmedAt<9e5&&null!==k.catalog?{ok:!0,snapshot:o(k.catalog,"cached",null)}:null!==k.rateLimitResetAt&&(!(Date.now()>=k.rateLimitResetAt)||(k.rateLimitResetAt=null,0))?p(j.RATE_LIMITED):(null===k.inflight&&(k.inflight=r(b).finally(()=>{k.inflight=null})),k.inflight)}},90164:(a,b,c)=>{c.d(b,{Dk:()=>e,kD:()=>f});let d="https://github.com/Kewton/CommandMate",e=`${d}/releases/`,f=`${d}/blob/main/docs/security-guide.md`}};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";exports.id=6285,exports.ids=[6285],exports.modules={26285:a=>{a.exports=JSON.parse('{"title":"スケジュール","executionLogs":"実行ログ","tabs":{"schedules":"スケジュール","logs":"ログ"},"emptyState":{"title":"スケジュールはまだありません","description":"cron スケジュールでエージェントを自動実行します。","createButton":"新規スケジュール作成","manualToggle":"または CMATE.md を直接編集"},"noSchedules":"スケジュールが設定されていません。CMATE.mdにSchedulesセクションを追加してください。","noSchedulesTitle":"スケジュールが設定されていません","noSchedulesStep1":"Files タブに切り替えてください","noSchedulesStep2":"ツールバーの CMATE ボタンをクリックして CMATE.md を作成","noSchedulesStep3":"Schedules テーブルを編集(Name, Cron, Message, CLI Tool, Enabled, Permission)","noSchedulesStep4":"再度 CMATE をクリックしてバリデーション","noLogs":"実行ログはまだありません。","status":{"running":"実行中","completed":"完了","failed":"失敗","timeout":"タイムアウト","cancelled":"キャンセル"},"enabled":"有効","disabled":"無効","activeSchedulesTitle":"Active Schedules","activeSchedulesDescription":"DB設定ではなく、現在メモリ上で登録されている cron state です。","noActiveSchedules":"現在メモリ上で登録されている schedule はありません。","nextRun":"次回実行","agentLabel":"Agent","activeState":{"active":"稼働中","inactive":"停止","executing":"実行中"},"lastRun":"最終実行","cron":"Cron式","exitCode":"終了コード","noOutput":"(出力なし)","message":"メッセージ","response":"レスポンス","unknownSchedule":"(削除済みスケジュール)","retry":"再試行","loading":"読み込み中...","notes":"メモ","logs":"Schedules","notesAndLogs":"CMATE","agentTab":"Agent","agentSettings":"エージェント設定","selectAgents":"ターミナルヘッダーのタブに表示するエージェントを2つ選択してください。","agentSaveSuccess":"エージェント設定を保存しました。","agentSaveError":"エージェント設定の保存に失敗しました。","agentInstances":"エージェントインスタンス","agentInstancesDescription":"ターミナルヘッダーのタブに表示するエージェントを管理します。同じツールのインスタンスを複数追加し、それぞれに別名を付けられます。","agentInstanceAliasLabel":"別名","agentInstanceAliasPlaceholder":"表示名","agentInstanceBaseTool":"ベースツール","agentInstanceAdd":"インスタンスを追加","agentInstanceDelete":"インスタンスを削除","agentInstanceMoveUp":"上へ移動","agentInstanceMoveDown":"下へ移動","agentInstanceActions":"インスタンス操作","memoMoveUp":"上へ移動","memoMoveDown":"下へ移動","agentInstanceMax":"インスタンスは最大{max}個まで追加できます。","agentInstanceMin":"インスタンスは最低{min}個必要です。","agentInstanceSaveError":"エージェントインスタンスの保存に失敗しました。","agentDefaults":"既定として使う","agentDefaultsDescription":"いま並んでいるツールの順番を、新しいブランチの既定にしたり、このリポジトリのまだ触っていないブランチにまとめて適用したりできます。同じツールのインスタンスは 1 つとして数えます。","agentDefaultsSetDefault":"この構成を既定にする","agentDefaultsSaved":"既定として保存しました。設定画面の「新規ブランチの既定エージェント」に反映されます。","agentDefaultsSaveError":"既定の保存に失敗しました。","agentDefaultsApply":"未変更のブランチにも適用する","agentDefaultsApplyScope":"適用先はこのリポジトリのブランチだけです。他のリポジトリと、手でエージェント構成を変更したブランチは変更されません。","agentDefaultsEligible":"適用対象: このリポジトリの {count} ブランチ","agentDefaultsEligibleUnknown":"適用対象: 不明","agentDefaultsRepositoryLabel":"対象リポジトリ: {repository}","agentDefaultsRepoDeclared":"このリポジトリは .commandmate/agents.yaml でエージェントを宣言しています。一括適用はその宣言を恒久的に上書きしてしまうため、ここでは無効です。変更はファイル側で行ってください。","agentDefaultsApplyConfirm":"このリポジトリの未変更の {count} ブランチに {agents} を適用します。他のリポジトリと、手でエージェント構成を変更したブランチは変更されません。","agentDefaultsApplied":"{count} ブランチに適用しました。","agentDefaultsApplyError":"ブランチへの適用に失敗しました。","agentDefaultsCountError":"適用対象の件数を読み込めませんでした。","agentDefaultsRetry":"件数を再読み込み","agentDefaultsInvalidRoster":"既定にできるのは {min} 〜 {max} 種類のツールです。ツールの種類を増やすか減らしてください。","mobileVisibleInstances":"この端末に表示","mobileVisibleInstancesDescription":"この端末でタブとして表示するインスタンスを選択します。この選択は端末ごとに保存され、共有のインスタンス一覧は変更されません。","mobileVisibleInstanceMin":"この端末には最低1つのインスタンスを表示しておく必要があります。","vibeLocalModel":"Ollamaモデル","vibeLocalModelDefault":"デフォルト","vibeLocalContextWindow":"コンテキストウィンドウ","vibeLocalContextWindowDefault":"デフォルト(自動)","ollamaNotAvailable":"Ollamaが起動していません。モデルを選択するにはOllamaを起動してください。","cmateCreated":"CMATE.mdをテンプレートで作成しました。スケジュールを設定してください。","cmateValidation":{"noSchedulesSection":"CMATE.mdにSchedulesセクションがありません。","valid":"{count}件のスケジュールが正常に検証されました。","errors":"{errorCount}件の検証エラー: {details}","failed":"CMATE.mdの処理に失敗しました。"},"edit":{"newSchedule":"新規スケジュール","titleCreate":"新規スケジュール","titleEdit":"スケジュールの編集","sectionBasic":"基本情報","sectionAdvanced":"詳細設定","sectionMessage":"メッセージ","name":"名前","namePlaceholder":"daily-review","cron":"Cron式","cronPlaceholder":"0 9 * * *","cronPreset":"プリセット","cronPresetHourly":"毎時 (0 */1 * * *)","cronPresetDaily9":"毎日9時 (0 9 * * *)","cronPresetWeeklyMon9":"毎週月曜9時 (0 9 * * 1)","cronPresetCustom":"カスタム","askAiCron":"AIに相談","askAiMessage":"AIに下書きを依頼","askAiHint":"AIチャットにプロンプトを下書きします(自動送信はされません)","aiPrompts":{"cron":"スケジュール実行のタイミングを cron 式で表現したいです。自然言語の要望(例: 「毎週月曜 9 時」)を cron 式に変換し、候補をいくつか提案してください(例: 「毎週月曜 9 時」→ `0 9 * * 1`)。","cronRefine":"スケジュール実行のタイミングを cron 式で表現したいです。現在の入力は {current} です。これを踏まえて、自然言語の要望(例: 「毎週月曜 9 時」)を cron 式に変換し、候補をいくつか提案してください(例: 「毎週月曜 9 時」→ `0 9 * * 1`)。","messageDraft":"このスケジュールで CLI ツールに定期実行させる message(指示プロンプト)を作成したいです。まず用途を私に聞き取り、それを踏まえた message の内容を提案してください。","messageDraftNamed":"スケジュール {name} で CLI ツールに定期実行させる message(指示プロンプト)を作成したいです。まず用途を私に聞き取り、それを踏まえた message の内容を提案してください。"},"cliTool":"CLIツール","model":"モデル","modelPlaceholder":"gpt-4.1","opencodeAgent":"Agent(opencode)","opencodeAgentPlaceholder":"plan","opencodeVariant":"Variant(opencode)","opencodeVariantPlaceholder":"high","opencodeTitle":"セッションタイトル(opencode)","opencodeTitlePlaceholder":"nightly-review","opencodeContinue":"直前のセッションを継続する(--continue)","permission":"権限","message":"メッセージ","messagePlaceholder":"README.mdを要約してください","charCount":"{count} / {max}","enabledLabel":"有効","save":"保存","cancel":"キャンセル","edit":"編集","delete":"削除","enable":"有効化","disable":"無効化","confirmDelete":"スケジュール「{name}」を削除しますか?","saveError":"スケジュールの保存に失敗しました。","errorNameRequired":"名前は必須です。","errorNameTooLong":"名前は{max}文字以内で入力してください。","errorNameInvalid":"名前に使用できない文字が含まれています。","errorCronInvalid":"Cron式が不正です。","errorMessageRequired":"メッセージは必須です。","errorMessageTooLong":"メッセージは{max}文字以内で入力してください。","errorModelInvalid":"モデル名が不正です。","errorAgentInvalid":"Agent 名が不正です。","errorVariantInvalid":"Variant 名が不正です。","errorTitleInvalid":"セッションタイトルが不正です。"},"timerTab":"Timer","todoTab":"ToDo","skillsTab":"Skills","verificationTab":"検証","envTab":"環境変数","timer":{"title":"遅延メッセージ","titleCreate":"タイマー作成","createButton":"タイマー作成","newTimer":"新規タイマー","close":"キャンセル","agent":"エージェント","message":"メッセージ","delay":"送信タイミング","register":"タイマー登録","cancel":"キャンセル","noTimers":"タイマーは登録されていません。","maxReached":"ワークツリーあたり最大{max}件です。","registerSuccess":"タイマーを登録しました。","registerError":"タイマーの登録に失敗しました。","cancelSuccess":"タイマーをキャンセルしました。","cancelError":"タイマーのキャンセルに失敗しました。","status":{"pending":"待機中","sending":"送信中","sent":"送信済み","failed":"失敗","cancelled":"キャンセル済み","no_session":"セッション未起動"},"sessionWarning":"セッションが起動していません。タイマー実行時にセッションが起動していない場合、メッセージは送信されません。","minutesShort":"{minutes}分","hoursMinutesShort":"{hours}時間{minutes}分","loadMore":"もっと見る","clearHistory":"履歴クリア","clearConfirm":"送信済み・失敗・キャンセル済みのタイマー履歴をすべて削除しますか?","cleared":"履歴を削除しました({count}件)","detailTitle":"タイマー詳細","statusLabel":"ステータス","scheduledTime":"予定送信時刻","createdTime":"作成時刻","sentTime":"送信時刻","failureReason":"失敗理由"},"memoAdd":"メモを追加","memoRemaining":"残り {count} 件","memoDefaultTitle":"メモ","memoTitlePlaceholder":"メモのタイトル","memoInsertToMessage":"メッセージに挿入","memoCopyContent":"メモの内容をコピー","memoDelete":"メモを削除","memoContentPlaceholder":"メモの内容を入力...","memoLoading":"メモを読み込み中...","memoSearchToggle":"メモを検索","memoEmpty":"メモはまだありません。","memoEmptyHint":"下のボタンから追加できます。","memoNoMatch":"検索条件に一致するメモがありません。","memoSearchLabel":"メモ検索","memoSearchPlaceholder":"検索...","memoSearchInputLabel":"メモを検索","memoSearchPrev":"前の一致(前へ)","memoSearchNext":"次の一致(次へ)","memoSearchClose":"検索を閉じる(閉じる)","opencodeSettings":"opencode 起動設定","opencodeSettingsDescription":"このインスタンスが opencode を起動・送信するときのエージェント/モデル/バリアントを指定します。","opencodeAgent":"エージェント","opencodeModel":"モデル","opencodeVariant":"バリアント(推論の深さ)","opencodeDefault":"opencode のデフォルト","opencodeAgentPlaceholder":"build","opencodeModelPlaceholder":"provider/model","opencodeVariantPlaceholder":"high","opencodeNoVariants":"このモデルにバリアントはありません。","opencodeSettingsOffline":"opencode が起動していないため候補を取得できません。値は直接入力できます(モデルは provider/model 形式)。","opencodeVariantLaunchNote":"エージェントとモデルは次回の起動から反映されます。バリアントは opencode 1.18.22 の TUI に --variant が無いため起動引数では渡せず、CommandMate が送信するプロンプトに適用されます(次のメッセージから反映)。","opencodeSettingsLoadError":"opencode 起動設定の読み込みに失敗しました。","opencodeSettingsSaveError":"opencode 起動設定の保存に失敗しました。"}')}};
|
|
1
|
+
"use strict";exports.id=6285,exports.ids=[6285],exports.modules={26285:a=>{a.exports=JSON.parse('{"title":"スケジュール","executionLogs":"実行ログ","tabs":{"schedules":"スケジュール","logs":"ログ"},"emptyState":{"title":"スケジュールはまだありません","description":"cron スケジュールでエージェントを自動実行します。","createButton":"新規スケジュール作成","manualToggle":"または CMATE.md を直接編集"},"noSchedules":"スケジュールが設定されていません。CMATE.mdにSchedulesセクションを追加してください。","noSchedulesTitle":"スケジュールが設定されていません","noSchedulesStep1":"Files タブに切り替えてください","noSchedulesStep2":"ツールバーの CMATE ボタンをクリックして CMATE.md を作成","noSchedulesStep3":"Schedules テーブルを編集(Name, Cron, Message, CLI Tool, Enabled, Permission)","noSchedulesStep4":"再度 CMATE をクリックしてバリデーション","noLogs":"実行ログはまだありません。","status":{"running":"実行中","completed":"完了","failed":"失敗","timeout":"タイムアウト","cancelled":"キャンセル"},"enabled":"有効","disabled":"無効","activeSchedulesTitle":"Active Schedules","activeSchedulesDescription":"DB設定ではなく、現在メモリ上で登録されている cron state です。","noActiveSchedules":"現在メモリ上で登録されている schedule はありません。","nextRun":"次回実行","agentLabel":"Agent","activeState":{"active":"稼働中","inactive":"停止","executing":"実行中"},"lastRun":"最終実行","cron":"Cron式","exitCode":"終了コード","noOutput":"(出力なし)","message":"メッセージ","response":"レスポンス","unknownSchedule":"(削除済みスケジュール)","retry":"再試行","loading":"読み込み中...","notes":"メモ","logs":"Schedules","notesAndLogs":"CMATE","agentTab":"Agent","agentSettings":"エージェント設定","selectAgents":"ターミナルヘッダーのタブに表示するエージェントを2つ選択してください。","agentSaveSuccess":"エージェント設定を保存しました。","agentSaveError":"エージェント設定の保存に失敗しました。","agentInstances":"エージェントインスタンス","agentInstancesDescription":"ターミナルヘッダーのタブに表示するエージェントを管理します。同じツールのインスタンスを複数追加し、それぞれに別名を付けられます。","agentInstanceAliasLabel":"別名","agentInstanceAliasPlaceholder":"表示名","agentInstanceBaseTool":"ベースツール","agentInstanceAdd":"インスタンスを追加","agentInstanceDelete":"インスタンスを削除","agentInstanceMoveUp":"上へ移動","agentInstanceMoveDown":"下へ移動","agentInstanceActions":"インスタンス操作","memoMoveUp":"上へ移動","memoMoveDown":"下へ移動","agentInstanceMax":"インスタンスは最大{max}個まで追加できます。","agentInstanceMin":"インスタンスは最低{min}個必要です。","agentInstanceSaveError":"エージェントインスタンスの保存に失敗しました。","agentDefaults":"既定として使う","agentDefaultsDescription":"いま並んでいるツールの順番を、新しいブランチの既定にしたり、このリポジトリのまだ触っていないブランチにまとめて適用したりできます。同じツールのインスタンスは 1 つとして数えます。","agentDefaultsSetDefault":"この構成を既定にする","agentDefaultsSaved":"既定として保存しました。設定画面の「新規ブランチの既定エージェント」に反映されます。","agentDefaultsSaveError":"既定の保存に失敗しました。","agentDefaultsApply":"未変更のブランチにも適用する","agentDefaultsApplyScope":"適用先はこのリポジトリのブランチだけです。他のリポジトリと、手でエージェント構成を変更したブランチは変更されません。","agentDefaultsEligible":"適用対象: このリポジトリの {count} ブランチ","agentDefaultsEligibleUnknown":"適用対象: 不明","agentDefaultsRepositoryLabel":"対象リポジトリ: {repository}","agentDefaultsRepoDeclared":"このリポジトリは .commandmate/agents.yaml でエージェントを宣言しています。一括適用はその宣言を恒久的に上書きしてしまうため、ここでは無効です。変更はファイル側で行ってください。","agentDefaultsApplyConfirm":"このリポジトリの未変更の {count} ブランチに {agents} を適用します。他のリポジトリと、手でエージェント構成を変更したブランチは変更されません。","agentDefaultsApplied":"{count} ブランチに適用しました。","agentDefaultsApplyError":"ブランチへの適用に失敗しました。","agentDefaultsCountError":"適用対象の件数を読み込めませんでした。","agentDefaultsRetry":"件数を再読み込み","agentDefaultsInvalidRoster":"既定にできるのは {min} 〜 {max} 種類のツールです。ツールの種類を増やすか減らしてください。","mobileVisibleInstances":"この端末に表示","mobileVisibleInstancesDescription":"この端末でタブとして表示するインスタンスを選択します。この選択は端末ごとに保存され、共有のインスタンス一覧は変更されません。","mobileVisibleInstanceMin":"この端末には最低1つのインスタンスを表示しておく必要があります。","vibeLocalModel":"Ollamaモデル","vibeLocalModelDefault":"デフォルト","vibeLocalContextWindow":"コンテキストウィンドウ","vibeLocalContextWindowDefault":"デフォルト(自動)","ollamaNotAvailable":"Ollamaが起動していません。モデルを選択するにはOllamaを起動してください。","cmateCreated":"CMATE.mdをテンプレートで作成しました。スケジュールを設定してください。","cmateValidation":{"noSchedulesSection":"CMATE.mdにSchedulesセクションがありません。","valid":"{count}件のスケジュールが正常に検証されました。","errors":"{errorCount}件の検証エラー: {details}","failed":"CMATE.mdの処理に失敗しました。"},"edit":{"newSchedule":"新規スケジュール","titleCreate":"新規スケジュール","titleEdit":"スケジュールの編集","sectionBasic":"基本情報","sectionAdvanced":"詳細設定","sectionMessage":"メッセージ","name":"名前","namePlaceholder":"daily-review","cron":"Cron式","cronPlaceholder":"0 9 * * *","cronPreset":"プリセット","cronPresetHourly":"毎時 (0 */1 * * *)","cronPresetDaily9":"毎日9時 (0 9 * * *)","cronPresetWeeklyMon9":"毎週月曜9時 (0 9 * * 1)","cronPresetCustom":"カスタム","askAiCron":"AIに相談","askAiMessage":"AIに下書きを依頼","askAiHint":"AIチャットにプロンプトを下書きします(自動送信はされません)","aiPrompts":{"cron":"スケジュール実行のタイミングを cron 式で表現したいです。自然言語の要望(例: 「毎週月曜 9 時」)を cron 式に変換し、候補をいくつか提案してください(例: 「毎週月曜 9 時」→ `0 9 * * 1`)。","cronRefine":"スケジュール実行のタイミングを cron 式で表現したいです。現在の入力は {current} です。これを踏まえて、自然言語の要望(例: 「毎週月曜 9 時」)を cron 式に変換し、候補をいくつか提案してください(例: 「毎週月曜 9 時」→ `0 9 * * 1`)。","messageDraft":"このスケジュールで CLI ツールに定期実行させる message(指示プロンプト)を作成したいです。まず用途を私に聞き取り、それを踏まえた message の内容を提案してください。","messageDraftNamed":"スケジュール {name} で CLI ツールに定期実行させる message(指示プロンプト)を作成したいです。まず用途を私に聞き取り、それを踏まえた message の内容を提案してください。"},"cliTool":"CLIツール","model":"モデル","modelPlaceholder":"gpt-4.1","opencodeAgent":"Agent(opencode)","opencodeAgentPlaceholder":"plan","opencodeVariant":"Variant(opencode)","opencodeVariantPlaceholder":"high","opencodeTitle":"セッションタイトル(opencode)","opencodeTitlePlaceholder":"nightly-review","opencodeContinue":"直前のセッションを継続する(--continue)","permission":"権限","commandCodeReadOnlyNote":"command-code の print モードでは、`yolo` 以外を選ぶと edit_file / write_file / shell_command / monitor_command / kill_shell がブロックされ、読み取り専用の実行になります(実行自体は成功として記録されます)。","message":"メッセージ","messagePlaceholder":"README.mdを要約してください","charCount":"{count} / {max}","enabledLabel":"有効","save":"保存","cancel":"キャンセル","edit":"編集","delete":"削除","enable":"有効化","disable":"無効化","confirmDelete":"スケジュール「{name}」を削除しますか?","saveError":"スケジュールの保存に失敗しました。","errorNameRequired":"名前は必須です。","errorNameTooLong":"名前は{max}文字以内で入力してください。","errorNameInvalid":"名前に使用できない文字が含まれています。","errorCronInvalid":"Cron式が不正です。","errorMessageRequired":"メッセージは必須です。","errorMessageTooLong":"メッセージは{max}文字以内で入力してください。","errorModelInvalid":"モデル名が不正です。","errorAgentInvalid":"Agent 名が不正です。","errorVariantInvalid":"Variant 名が不正です。","errorTitleInvalid":"セッションタイトルが不正です。"},"timerTab":"Timer","todoTab":"ToDo","skillsTab":"Skills","verificationTab":"検証","envTab":"環境変数","timer":{"title":"遅延メッセージ","titleCreate":"タイマー作成","createButton":"タイマー作成","newTimer":"新規タイマー","close":"キャンセル","agent":"エージェント","message":"メッセージ","delay":"送信タイミング","register":"タイマー登録","cancel":"キャンセル","noTimers":"タイマーは登録されていません。","maxReached":"ワークツリーあたり最大{max}件です。","registerSuccess":"タイマーを登録しました。","registerError":"タイマーの登録に失敗しました。","cancelSuccess":"タイマーをキャンセルしました。","cancelError":"タイマーのキャンセルに失敗しました。","status":{"pending":"待機中","sending":"送信中","sent":"送信済み","failed":"失敗","cancelled":"キャンセル済み","no_session":"セッション未起動"},"sessionWarning":"セッションが起動していません。タイマー実行時にセッションが起動していない場合、メッセージは送信されません。","minutesShort":"{minutes}分","hoursMinutesShort":"{hours}時間{minutes}分","loadMore":"もっと見る","clearHistory":"履歴クリア","clearConfirm":"送信済み・失敗・キャンセル済みのタイマー履歴をすべて削除しますか?","cleared":"履歴を削除しました({count}件)","detailTitle":"タイマー詳細","statusLabel":"ステータス","scheduledTime":"予定送信時刻","createdTime":"作成時刻","sentTime":"送信時刻","failureReason":"失敗理由"},"memoAdd":"メモを追加","memoRemaining":"残り {count} 件","memoDefaultTitle":"メモ","memoTitlePlaceholder":"メモのタイトル","memoInsertToMessage":"メッセージに挿入","memoCopyContent":"メモの内容をコピー","memoDelete":"メモを削除","memoContentPlaceholder":"メモの内容を入力...","memoLoading":"メモを読み込み中...","memoSearchToggle":"メモを検索","memoEmpty":"メモはまだありません。","memoEmptyHint":"下のボタンから追加できます。","memoNoMatch":"検索条件に一致するメモがありません。","memoSearchLabel":"メモ検索","memoSearchPlaceholder":"検索...","memoSearchInputLabel":"メモを検索","memoSearchPrev":"前の一致(前へ)","memoSearchNext":"次の一致(次へ)","memoSearchClose":"検索を閉じる(閉じる)","opencodeSettings":"opencode 起動設定","opencodeSettingsDescription":"このインスタンスが opencode を起動・送信するときのエージェント/モデル/バリアントを指定します。","opencodeAgent":"エージェント","opencodeModel":"モデル","opencodeVariant":"バリアント(推論の深さ)","opencodeDefault":"opencode のデフォルト","opencodeAgentPlaceholder":"build","opencodeModelPlaceholder":"provider/model","opencodeVariantPlaceholder":"high","opencodeNoVariants":"このモデルにバリアントはありません。","opencodeSettingsOffline":"opencode が起動していないため候補を取得できません。値は直接入力できます(モデルは provider/model 形式)。","opencodeVariantLaunchNote":"エージェントとモデルは次回の起動から反映されます。バリアントは opencode 1.18.22 の TUI に --variant が無いため起動引数では渡せず、CommandMate が送信するプロンプトに適用されます(次のメッセージから反映)。","opencodeSettingsLoadError":"opencode 起動設定の読み込みに失敗しました。","opencodeSettingsSaveError":"opencode 起動設定の保存に失敗しました。"}')}};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";exports.id=6286,exports.ids=[6286],exports.modules={1102:(a,b,c)=>{c.d(b,{m_:()=>i});var d=c(21124),e=c(38301),f=c(23312);function g(a,b,c){return Math.min(Math.max(a,4),Math.max(4,c-b-4))}let h={top:-9999,left:-9999};function i({content:a,placement:b="right",delay:c=100,children:i,className:j}){let[k,l]=(0,e.useState)(!1),[m,n]=(0,e.useState)(!1),[o,p]=(0,e.useState)(null),q=(0,e.useRef)(null),r=(0,e.useRef)(null),s=(0,e.useRef)(null),t=(0,e.useCallback)(()=>{null!==s.current&&(clearTimeout(s.current),s.current=null)},[]),u=(0,e.useCallback)(()=>{t(),s.current=setTimeout(()=>{l(!0),s.current=null},c)},[c,t]),v=(0,e.useCallback)(()=>{t(),l(!1)},[t]),w=(0,e.useCallback)(()=>{n(!0)},[]),x=(0,e.useCallback)(()=>{n(!1)},[]);return(0,e.useCallback)(()=>{t(),l(!1),n(!1)},[t]),(0,e.useCallback)(()=>{let a=q.current,c=r.current;if(!a||!c)return;let d=a.getBoundingClientRect(),e=c.getBoundingClientRect();p(function(a,b,c,d){let e,f,h=b.left+b.width/2-c.width/2,i=b.top+b.height/2-c.height/2;switch(a){case"top":e=b.top-c.height-8,f=h;break;case"bottom":e=b.top+b.height+8,f=h;break;case"left":e=i,f=b.left-c.width-8;break;default:e=i,f=b.left+b.width+8}return{top:g(e,c.height,d.height),left:g(f,c.width,d.width)}}(b,{top:d.top,left:d.left,width:d.width,height:d.height},{width:e.width,height:e.height},{width:window.innerWidth,height:window.innerHeight}))},[b]),(0,d.jsxs)("span",{ref:q,"data-testid":"tooltip-wrapper",className:j?`relative inline-flex ${j}`:"relative inline-flex",tabIndex:-1,onMouseEnter:u,onMouseLeave:v,onFocus:w,onBlur:x,children:[i,(k||m)&&"undefined"!=typeof document&&(0,f.createPortal)((0,d.jsx)("span",{ref:r,role:"tooltip","aria-hidden":"true","data-placement":b,className:"fixed z-40 whitespace-nowrap px-2 py-1 text-xs font-medium rounded bg-foreground text-background shadow-lg pointer-events-none",style:o??h,children:a}),document.body)]})}},8509:(a,b,c)=>{c.d(b,{g:()=>h});var d=c(21124);c(38301);var e=c(20481),f=c(5772),g=c(12480);function h(){let{size:a,setSize:b,isMobile:c}=(0,f.Ps)(),h=(0,e.c)("common");if(c)return null;let i=h("displaySize.ariaLabel");return(0,d.jsxs)("div",{className:"flex items-center",children:[(0,d.jsx)("label",{htmlFor:"pc-display-size",className:"sr-only",children:i}),(0,d.jsx)("select",{id:"pc-display-size","data-testid":"pc-display-size-select","aria-label":i,value:a,onChange:a=>{let c=a.target.value;(0,g.fM)(c)&&b(c)},className:"text-sm bg-transparent text-foreground border border-input rounded-md px-2 py-1 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",children:g.Uf.map(a=>(0,d.jsx)("option",{value:a,children:h(`displaySize.${a}`)},a))})]})}},16286:(a,b,c)=>{c.d(b,{GV:()=>aZ});var d=c(21124),e=c(38301),f=c.n(e),g=c(42378),h=c(3991),i=c.n(h),j=c(52761);let k=(0,e.forwardRef)(function({href:a,onClick:b,target:c,...e},f){let h=(0,g.usePathname)(),k=(0,j.Hq)();return(0,d.jsx)(i(),{ref:f,href:a,target:c,onClick:d=>{var e;b?.(d),d.defaultPrevented||0!==(e=d).button||e.metaKey||e.ctrlKey||e.shiftKey||e.altKey||void 0!==c&&"_self"!==c||/^([a-z][a-z0-9+.-]*:)?\/\//i.test(a)||/^(mailto:|tel:)/i.test(a)||(d.preventDefault(),a!==h&&k.push(a))},...e})});var l=c(20481),m=c(15917),n=c(88285),o=c(97950),p=c(8509),q=c(81092),r=c(32482);function s(){let a=(0,q.pT)(),b=(0,l.c)("common");if(!a)return null;let{repoTabBarMode:c,setRepoTabBarMode:e}=a;return(0,d.jsxs)("div",{className:"hidden md:flex items-center",children:[(0,d.jsx)("label",{htmlFor:"repo-tab-bar-mode",className:"sr-only",children:b("repoTabBar.settingLabel")}),(0,d.jsx)("select",{id:"repo-tab-bar-mode","data-testid":"repo-tab-bar-mode-select","aria-label":b("repoTabBar.settingLabel"),title:b("repoTabBar.settingLabel"),value:c,onChange:a=>{let b=a.target.value;(0,r.m3)(b)&&e(b)},className:"rounded-md border border-border bg-surface px-2 py-1 text-sm text-muted-foreground transition-colors hover:text-foreground focus:outline-none focus:ring-2 focus:ring-ring",children:r.EN.map(a=>(0,d.jsx)("option",{value:a,children:b(`repoTabBar.mode.${a}`)},a))})]})}var t=c(45523),u=c(70175),v=c(60988);function w(){let{theme:a,setTheme:b}=(0,t.D)(),[c,f]=(0,e.useState)(!1);if(!c)return(0,d.jsx)("div",{"data-testid":"theme-toggle-placeholder",className:"w-8 h-8","aria-hidden":"true"});let g="dark"===a;return(0,d.jsx)("button",{"data-testid":"theme-toggle",onClick:()=>b(g?"light":"dark"),className:"p-1.5 rounded-md text-muted-foreground hover:text-foreground hover:bg-muted transition-colors focus:outline-none focus:ring-2 focus:ring-ring","aria-label":g?"Switch to light mode":"Switch to dark mode",title:g?"Switch to light mode":"Switch to dark mode",children:g?(0,d.jsx)(u.A,{className:"w-5 h-5","data-testid":"theme-icon-sun"}):(0,d.jsx)(v.A,{className:"w-5 h-5","data-testid":"theme-icon-moon"})})}var x=c(67619);function y(){let{status:a}=(0,x.xM)(),b=(0,l.c)("common");if("connected"===a)return null;let c="connecting"===a,e=b(c?"connection.reconnecting":"connection.offline");return(0,d.jsxs)("span",{"data-testid":"connection-status-indicator",role:"status","aria-live":"polite",title:b(c?"connection.reconnectingTooltip":"connection.offlineTooltip"),className:"hidden sm:inline-flex items-center gap-1.5 rounded-full border border-border bg-surface px-2 py-0.5 text-xs text-muted-foreground",children:[(0,d.jsx)("span",{"aria-hidden":"true",className:["w-1.5 h-1.5 rounded-full",c?"bg-warning motion-safe:animate-pulse":"bg-muted-foreground"].join(" ")}),e]})}var z=c(85647),A=c(64632);let B=[{labelKey:"nav.home",href:"/",isActive:a=>"/"===a},{labelKey:"nav.chat",href:"/chat",isActive:a=>a.startsWith("/chat")},{labelKey:"nav.sessions",href:"/sessions",isActive:a=>a.startsWith("/sessions")},{labelKey:"nav.repositoriesShort",href:"/repositories",isActive:a=>a.startsWith("/repositories")},{labelKey:"nav.reviewReport",href:"/review",isActive:a=>a.startsWith("/review")},{labelKey:"nav.more",href:"/more",isActive:a=>a.startsWith("/more")}];function C({title:a="CommandMate"}){let b=(0,g.usePathname)(),c=(0,l.c)("commandPalette"),e=(0,l.c)("common"),{setOpen:h}=(0,A.C)(),[i,j]=f().useState(null);return(0,d.jsx)("header",{className:"sticky top-0 z-50 border-b border-border bg-background supports-[backdrop-filter]:bg-background/80 backdrop-blur-md",children:(0,d.jsx)("div",{className:"container-custom",children:(0,d.jsxs)("div",{className:"flex items-center justify-between h-16",children:[(0,d.jsx)("div",{className:"flex items-center space-x-4",children:(0,d.jsxs)(k,{href:"/",className:"flex items-center space-x-2 hover:opacity-80 transition-opacity",children:[(0,d.jsx)("div",{className:"w-8 h-8 bg-accent-600 rounded-lg flex items-center justify-center",children:(0,d.jsx)(m.A,{size:20,strokeWidth:2,className:"text-white","aria-hidden":"true"})}),(0,d.jsx)("h1",{className:"text-xl font-bold text-foreground",children:a})]})}),(0,d.jsxs)("nav",{className:"flex items-center space-x-6",role:"navigation",children:[B.map(a=>{let c=a.isActive(b);return(0,d.jsx)(k,{href:a.href,"aria-current":c?"page":void 0,className:`relative py-1 text-sm font-medium transition-colors after:absolute after:inset-x-0 after:bottom-0 after:h-0.5 after:rounded-full after:bg-accent-600 dark:after:bg-accent-400 after:origin-center motion-safe:after:transition-transform after:duration-200 after:ease-[var(--motion-ease-out)] ${c?"text-accent-600 dark:text-accent-400 after:scale-x-100":"text-muted-foreground hover:text-foreground after:scale-x-0"}`,children:e(a.labelKey)},a.href)}),(0,d.jsxs)("button",{type:"button","data-testid":"header-command-palette-trigger",onClick:()=>h(!0),"aria-label":c("mobileTrigger"),className:"hidden md:inline-flex items-center gap-2 rounded-md border border-border bg-surface px-2.5 py-1.5 text-sm text-muted-foreground hover:bg-surface-2 transition-colors",children:[(0,d.jsx)(n.A,{size:16,strokeWidth:2,"aria-hidden":"true",className:"shrink-0"}),(0,d.jsx)("span",{children:c("searchAction")}),i&&(0,d.jsxs)("span",{className:"flex items-center gap-0.5",children:[(0,d.jsx)(z.u,{children:i}),(0,d.jsx)(z.u,{children:"K"})]})]}),(0,d.jsx)(y,{}),(0,d.jsx)(p.g,{}),(0,d.jsx)(s,{}),(0,d.jsx)(w,{}),(0,d.jsxs)("a",{href:"https://github.com/kewton/MyCodeBranchDesk",target:"_blank",rel:"noopener noreferrer",className:"text-sm font-medium text-muted-foreground hover:text-foreground transition-colors flex items-center space-x-1",children:[(0,d.jsx)(o.A,{size:20,strokeWidth:2,"aria-hidden":"true"}),(0,d.jsx)("span",{children:"GitHub"})]})]})]})})})}var D=c(90076);let E={showSidebar:!0,showGlobalNav:!0,showLocalNav:!1,autoCollapseSidebar:!1},F=[{prefix:"/worktrees/",config:{showGlobalNav:!1,showLocalNav:!0}},{prefix:"/sessions",config:{autoCollapseSidebar:!0}}];var G=c(5772),H=c(65828),I=c(10366),J=c(99615),K=c(22023),L=c(47817),M=c(23312),N=c.n(M),O=c(89877),P=c(22317);let Q=(0,e.memo)(function({status:a,label:b,waitingKind:c}){return(0,d.jsx)(P.m,{"data-testid":"status-indicator",status:a,label:b,waitingKind:c,size:"lg"})});function R({id:a,branch:b,isVisible:c,anchorRef:f,nextActionLabel:g}){let[h,i]=(0,e.useState)({top:-9999,left:-9999}),j=(0,e.useRef)(null);if("undefined"==typeof document||!c)return null;let k=Math.min(384,Math.max(0,window.innerWidth-16));return N().createPortal((0,d.jsxs)("div",{ref:j,id:a,role:"tooltip",className:" fixed z-[9999] px-3 py-2 rounded-md shadow-lg bg-sidebar text-xs text-sidebar-foreground border border-sidebar-border pointer-events-none max-w-sm transition-opacity duration-150 ",style:{top:h.top,left:h.left,maxWidth:k},children:[(0,d.jsx)("p",{className:"font-medium text-sidebar-foreground whitespace-nowrap",children:b.name}),(0,d.jsx)("p",{className:"text-sidebar-muted whitespace-nowrap",children:b.repositoryName}),(0,d.jsxs)("p",{className:"text-sidebar-muted whitespace-nowrap",children:["Status: ",b.status]}),b.worktreePath&&(0,d.jsx)("p",{className:"text-sidebar-muted truncate",children:b.worktreePath}),g&&(0,d.jsxs)("p",{className:"text-sidebar-muted whitespace-nowrap",children:["Next: ",g]}),b.description&&(0,d.jsx)("p",{className:"text-sidebar-muted mt-1 border-t border-sidebar-border pt-1 whitespace-pre-wrap break-words",children:b.description})]}),document.body)}let S=0,T=(0,e.memo)(function({branch:a,isSelected:b,onClick:c,showRepositoryName:f=!0}){let g=(0,l.c)("common"),h=(0,l.c)("worktree"),i=`tooltip-${a.id}`,j=(0,e.useRef)(null),[k,m]=(0,e.useState)(!1),n=(0,e.useRef)(null),o=(0,e.useCallback)(()=>{null!==n.current&&(clearTimeout(n.current),n.current=null)},[]);(0,e.useEffect)(()=>()=>o(),[o]);let p=(0,O.A7)(a.cliStatus),q="waiting"===p,r=!0===a.awaitingInstruction,s=a.nextActionKey?h(a.nextActionKey):null,t=(0,e.useMemo)(()=>new Set(a.exitedInstanceIds??[]),[a.exitedInstanceIds]),u=(q||r)&&null!==s,v=k&&!b;return(0,e.useEffect)(()=>{b&&m(!1)},[b]),(0,e.useEffect)(()=>{if(!k)return;let a=()=>m(!1);return document.addEventListener("click",a),()=>document.removeEventListener("click",a)},[k]),(0,d.jsxs)("button",{ref:j,"data-testid":"branch-list-item",onClick:()=>{o(),S=Date.now()+400,m(!1),c()},onMouseEnter:()=>{o(),Date.now()>=S&&(n.current=setTimeout(()=>{m(!0)},150))},onMouseLeave:()=>{o(),m(!1)},onFocus:a=>{o(),a.target.matches(":focus-visible")&&(n.current=setTimeout(()=>{m(!0)},150))},onBlur:()=>{o(),m(!1)},"aria-current":b?"true":void 0,"aria-describedby":v?i:void 0,"aria-label":f?void 0:`${a.name} - ${a.repositoryName}`,className:`
|
|
1
|
+
"use strict";exports.id=6286,exports.ids=[6286],exports.modules={1102:(a,b,c)=>{c.d(b,{m_:()=>i});var d=c(21124),e=c(38301),f=c(23312);function g(a,b,c){return Math.min(Math.max(a,4),Math.max(4,c-b-4))}let h={top:-9999,left:-9999};function i({content:a,placement:b="right",delay:c=100,children:i,className:j}){let[k,l]=(0,e.useState)(!1),[m,n]=(0,e.useState)(!1),[o,p]=(0,e.useState)(null),q=(0,e.useRef)(null),r=(0,e.useRef)(null),s=(0,e.useRef)(null),t=(0,e.useCallback)(()=>{null!==s.current&&(clearTimeout(s.current),s.current=null)},[]),u=(0,e.useCallback)(()=>{t(),s.current=setTimeout(()=>{l(!0),s.current=null},c)},[c,t]),v=(0,e.useCallback)(()=>{t(),l(!1)},[t]),w=(0,e.useCallback)(()=>{n(!0)},[]),x=(0,e.useCallback)(()=>{n(!1)},[]);return(0,e.useCallback)(()=>{t(),l(!1),n(!1)},[t]),(0,e.useCallback)(()=>{let a=q.current,c=r.current;if(!a||!c)return;let d=a.getBoundingClientRect(),e=c.getBoundingClientRect();p(function(a,b,c,d){let e,f,h=b.left+b.width/2-c.width/2,i=b.top+b.height/2-c.height/2;switch(a){case"top":e=b.top-c.height-8,f=h;break;case"bottom":e=b.top+b.height+8,f=h;break;case"left":e=i,f=b.left-c.width-8;break;default:e=i,f=b.left+b.width+8}return{top:g(e,c.height,d.height),left:g(f,c.width,d.width)}}(b,{top:d.top,left:d.left,width:d.width,height:d.height},{width:e.width,height:e.height},{width:window.innerWidth,height:window.innerHeight}))},[b]),(0,d.jsxs)("span",{ref:q,"data-testid":"tooltip-wrapper",className:j?`relative inline-flex ${j}`:"relative inline-flex",tabIndex:-1,onMouseEnter:u,onMouseLeave:v,onFocus:w,onBlur:x,children:[i,(k||m)&&"undefined"!=typeof document&&(0,f.createPortal)((0,d.jsx)("span",{ref:r,role:"tooltip","aria-hidden":"true","data-placement":b,className:"fixed z-40 whitespace-nowrap px-2 py-1 text-xs font-medium rounded bg-foreground text-background shadow-lg pointer-events-none",style:o??h,children:a}),document.body)]})}},8509:(a,b,c)=>{c.d(b,{g:()=>h});var d=c(21124);c(38301);var e=c(20481),f=c(5772),g=c(12480);function h(){let{size:a,setSize:b,isMobile:c}=(0,f.Ps)(),h=(0,e.c)("common");if(c)return null;let i=h("displaySize.ariaLabel");return(0,d.jsxs)("div",{className:"flex items-center",children:[(0,d.jsx)("label",{htmlFor:"pc-display-size",className:"sr-only",children:i}),(0,d.jsx)("select",{id:"pc-display-size","data-testid":"pc-display-size-select","aria-label":i,value:a,onChange:a=>{let c=a.target.value;(0,g.fM)(c)&&b(c)},className:"text-sm bg-transparent text-foreground border border-input rounded-md px-2 py-1 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",children:g.Uf.map(a=>(0,d.jsx)("option",{value:a,children:h(`displaySize.${a}`)},a))})]})}},16286:(a,b,c)=>{c.d(b,{GV:()=>a$});var d=c(21124),e=c(38301),f=c.n(e),g=c(42378),h=c(3991),i=c.n(h),j=c(52761);let k=(0,e.forwardRef)(function({href:a,onClick:b,target:c,...e},f){let h=(0,g.usePathname)(),k=(0,j.Hq)();return(0,d.jsx)(i(),{ref:f,href:a,target:c,onClick:d=>{var e;b?.(d),d.defaultPrevented||0!==(e=d).button||e.metaKey||e.ctrlKey||e.shiftKey||e.altKey||void 0!==c&&"_self"!==c||/^([a-z][a-z0-9+.-]*:)?\/\//i.test(a)||/^(mailto:|tel:)/i.test(a)||(d.preventDefault(),a!==h&&k.push(a))},...e})});var l=c(20481),m=c(15917),n=c(88285),o=c(97950),p=c(8509),q=c(81092),r=c(32482);function s(){let a=(0,q.pT)(),b=(0,l.c)("common");if(!a)return null;let{repoTabBarMode:c,setRepoTabBarMode:e}=a;return(0,d.jsxs)("div",{className:"hidden md:flex items-center",children:[(0,d.jsx)("label",{htmlFor:"repo-tab-bar-mode",className:"sr-only",children:b("repoTabBar.settingLabel")}),(0,d.jsx)("select",{id:"repo-tab-bar-mode","data-testid":"repo-tab-bar-mode-select","aria-label":b("repoTabBar.settingLabel"),title:b("repoTabBar.settingLabel"),value:c,onChange:a=>{let b=a.target.value;(0,r.m3)(b)&&e(b)},className:"rounded-md border border-border bg-surface px-2 py-1 text-sm text-muted-foreground transition-colors hover:text-foreground focus:outline-none focus:ring-2 focus:ring-ring",children:r.EN.map(a=>(0,d.jsx)("option",{value:a,children:b(`repoTabBar.mode.${a}`)},a))})]})}var t=c(45523),u=c(70175),v=c(60988);function w(){let{theme:a,setTheme:b}=(0,t.D)(),[c,f]=(0,e.useState)(!1);if(!c)return(0,d.jsx)("div",{"data-testid":"theme-toggle-placeholder",className:"w-8 h-8","aria-hidden":"true"});let g="dark"===a;return(0,d.jsx)("button",{"data-testid":"theme-toggle",onClick:()=>b(g?"light":"dark"),className:"p-1.5 rounded-md text-muted-foreground hover:text-foreground hover:bg-muted transition-colors focus:outline-none focus:ring-2 focus:ring-ring","aria-label":g?"Switch to light mode":"Switch to dark mode",title:g?"Switch to light mode":"Switch to dark mode",children:g?(0,d.jsx)(u.A,{className:"w-5 h-5","data-testid":"theme-icon-sun"}):(0,d.jsx)(v.A,{className:"w-5 h-5","data-testid":"theme-icon-moon"})})}var x=c(67619);function y(){let{status:a}=(0,x.xM)(),b=(0,l.c)("common");if("connected"===a)return null;let c="connecting"===a,e=b(c?"connection.reconnecting":"connection.offline");return(0,d.jsxs)("span",{"data-testid":"connection-status-indicator",role:"status","aria-live":"polite",title:b(c?"connection.reconnectingTooltip":"connection.offlineTooltip"),className:"hidden sm:inline-flex items-center gap-1.5 rounded-full border border-border bg-surface px-2 py-0.5 text-xs text-muted-foreground",children:[(0,d.jsx)("span",{"aria-hidden":"true",className:["w-1.5 h-1.5 rounded-full",c?"bg-warning motion-safe:animate-pulse":"bg-muted-foreground"].join(" ")}),e]})}var z=c(85647),A=c(64632);let B=[{labelKey:"nav.home",href:"/",isActive:a=>"/"===a},{labelKey:"nav.chat",href:"/chat",isActive:a=>a.startsWith("/chat")},{labelKey:"nav.sessions",href:"/sessions",isActive:a=>a.startsWith("/sessions")},{labelKey:"nav.repositoriesShort",href:"/repositories",isActive:a=>a.startsWith("/repositories")},{labelKey:"nav.reviewReport",href:"/review",isActive:a=>a.startsWith("/review")},{labelKey:"nav.more",href:"/more",isActive:a=>a.startsWith("/more")}];function C({title:a="CommandMate"}){let b=(0,g.usePathname)(),c=(0,l.c)("commandPalette"),e=(0,l.c)("common"),{setOpen:h}=(0,A.C)(),[i,j]=f().useState(null);return(0,d.jsx)("header",{className:"sticky top-0 z-50 border-b border-border bg-background supports-[backdrop-filter]:bg-background/80 backdrop-blur-md",children:(0,d.jsx)("div",{className:"container-custom",children:(0,d.jsxs)("div",{className:"flex items-center justify-between h-16",children:[(0,d.jsx)("div",{className:"flex items-center space-x-4",children:(0,d.jsxs)(k,{href:"/",className:"flex items-center space-x-2 hover:opacity-80 transition-opacity",children:[(0,d.jsx)("div",{className:"w-8 h-8 bg-accent-600 rounded-lg flex items-center justify-center",children:(0,d.jsx)(m.A,{size:20,strokeWidth:2,className:"text-white","aria-hidden":"true"})}),(0,d.jsx)("h1",{className:"text-xl font-bold text-foreground",children:a})]})}),(0,d.jsxs)("nav",{className:"flex items-center space-x-6",role:"navigation",children:[B.map(a=>{let c=a.isActive(b);return(0,d.jsx)(k,{href:a.href,"aria-current":c?"page":void 0,className:`relative py-1 text-sm font-medium transition-colors after:absolute after:inset-x-0 after:bottom-0 after:h-0.5 after:rounded-full after:bg-accent-600 dark:after:bg-accent-400 after:origin-center motion-safe:after:transition-transform after:duration-200 after:ease-[var(--motion-ease-out)] ${c?"text-accent-600 dark:text-accent-400 after:scale-x-100":"text-muted-foreground hover:text-foreground after:scale-x-0"}`,children:e(a.labelKey)},a.href)}),(0,d.jsxs)("button",{type:"button","data-testid":"header-command-palette-trigger",onClick:()=>h(!0),"aria-label":c("mobileTrigger"),className:"hidden md:inline-flex items-center gap-2 rounded-md border border-border bg-surface px-2.5 py-1.5 text-sm text-muted-foreground hover:bg-surface-2 transition-colors",children:[(0,d.jsx)(n.A,{size:16,strokeWidth:2,"aria-hidden":"true",className:"shrink-0"}),(0,d.jsx)("span",{children:c("searchAction")}),i&&(0,d.jsxs)("span",{className:"flex items-center gap-0.5",children:[(0,d.jsx)(z.u,{children:i}),(0,d.jsx)(z.u,{children:"K"})]})]}),(0,d.jsx)(y,{}),(0,d.jsx)(p.g,{}),(0,d.jsx)(s,{}),(0,d.jsx)(w,{}),(0,d.jsxs)("a",{href:"https://github.com/kewton/MyCodeBranchDesk",target:"_blank",rel:"noopener noreferrer",className:"text-sm font-medium text-muted-foreground hover:text-foreground transition-colors flex items-center space-x-1",children:[(0,d.jsx)(o.A,{size:20,strokeWidth:2,"aria-hidden":"true"}),(0,d.jsx)("span",{children:"GitHub"})]})]})]})})})}var D=c(90076);let E={showSidebar:!0,showGlobalNav:!0,showLocalNav:!1,autoCollapseSidebar:!1},F=[{prefix:"/worktrees/",config:{showGlobalNav:!1,showLocalNav:!0}},{prefix:"/sessions",config:{autoCollapseSidebar:!0}}];var G=c(5772),H=c(65828),I=c(10366),J=c(99615),K=c(22023),L=c(47817),M=c(23312),N=c.n(M),O=c(89877),P=c(22317);let Q=(0,e.memo)(function({status:a,label:b,waitingKind:c}){return(0,d.jsx)(P.m,{"data-testid":"status-indicator",status:a,label:b,waitingKind:c,size:"lg"})});function R({id:a,branch:b,isVisible:c,anchorRef:f,nextActionLabel:g}){let[h,i]=(0,e.useState)({top:-9999,left:-9999}),j=(0,e.useRef)(null);if("undefined"==typeof document||!c)return null;let k=Math.min(384,Math.max(0,window.innerWidth-16));return N().createPortal((0,d.jsxs)("div",{ref:j,id:a,role:"tooltip",className:" fixed z-[9999] px-3 py-2 rounded-md shadow-lg bg-sidebar text-xs text-sidebar-foreground border border-sidebar-border pointer-events-none max-w-sm transition-opacity duration-150 ",style:{top:h.top,left:h.left,maxWidth:k},children:[(0,d.jsx)("p",{className:"font-medium text-sidebar-foreground whitespace-nowrap",children:b.name}),(0,d.jsx)("p",{className:"text-sidebar-muted whitespace-nowrap",children:b.repositoryName}),(0,d.jsxs)("p",{className:"text-sidebar-muted whitespace-nowrap",children:["Status: ",b.status]}),b.worktreePath&&(0,d.jsx)("p",{className:"text-sidebar-muted truncate",children:b.worktreePath}),g&&(0,d.jsxs)("p",{className:"text-sidebar-muted whitespace-nowrap",children:["Next: ",g]}),b.description&&(0,d.jsx)("p",{className:"text-sidebar-muted mt-1 border-t border-sidebar-border pt-1 whitespace-pre-wrap break-words",children:b.description})]}),document.body)}let S=0,T=(0,e.memo)(function({branch:a,isSelected:b,onClick:c,showRepositoryName:f=!0}){let g=(0,l.c)("common"),h=(0,l.c)("worktree"),i=`tooltip-${a.id}`,j=(0,e.useRef)(null),[k,m]=(0,e.useState)(!1),n=(0,e.useRef)(null),o=(0,e.useCallback)(()=>{null!==n.current&&(clearTimeout(n.current),n.current=null)},[]);(0,e.useEffect)(()=>()=>o(),[o]);let p=(0,O.A7)(a.cliStatus),q="waiting"===p,r=!0===a.awaitingInstruction,s=a.nextActionKey?h(a.nextActionKey):null,t=(0,e.useMemo)(()=>new Set(a.exitedInstanceIds??[]),[a.exitedInstanceIds]),u=(q||r)&&null!==s,v=k&&!b;return(0,e.useEffect)(()=>{b&&m(!1)},[b]),(0,e.useEffect)(()=>{if(!k)return;let a=()=>m(!1);return document.addEventListener("click",a),()=>document.removeEventListener("click",a)},[k]),(0,d.jsxs)("button",{ref:j,"data-testid":"branch-list-item",onClick:()=>{o(),S=Date.now()+400,m(!1),c()},onMouseEnter:()=>{o(),Date.now()>=S&&(n.current=setTimeout(()=>{m(!0)},150))},onMouseLeave:()=>{o(),m(!1)},onFocus:a=>{o(),a.target.matches(":focus-visible")&&(n.current=setTimeout(()=>{m(!0)},150))},onBlur:()=>{o(),m(!1)},"aria-current":b?"true":void 0,"aria-describedby":v?i:void 0,"aria-label":f?void 0:`${a.name} - ${a.repositoryName}`,className:`
|
|
2
2
|
group relative w-full px-4 py-3 flex flex-col gap-1
|
|
3
3
|
hover:bg-sidebar-hover transition-colors
|
|
4
4
|
focus:outline-none focus:ring-2 focus:ring-inset focus:ring-ring
|
|
@@ -8,22 +8,22 @@
|
|
|
8
8
|
flex items-center justify-between
|
|
9
9
|
hover:bg-sidebar-hover transition-colors
|
|
10
10
|
${a===c.key?"text-accent-700 dark:text-accent-400":"text-sidebar-muted"}
|
|
11
|
-
`,children:[(0,d.jsx)("span",{children:c.label}),a===c.key&&(0,d.jsx)("span",{className:"text-xs",children:"asc"===b?"ASC":"DESC"})]},c.key))})]})});function X({className:a}){return(0,d.jsx)("svg",{className:a,fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:(0,d.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M3 4h13M3 8h9m-9 4h6m4 0l4-4m0 0l4 4m-4-4v12"})})}function Y({className:a}){return(0,d.jsx)("svg",{className:a,fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:(0,d.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M5 15l7-7 7 7"})})}function Z({className:a}){return(0,d.jsx)("svg",{className:a,fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:(0,d.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M19 9l-7 7-7-7"})})}let $=[{key:"updatedAt",labelKey:"sort.updatedAt"},{key:"repositoryName",labelKey:"sort.repositoryName"},{key:"branchName",labelKey:"sort.branchName"},{key:"status",labelKey:"sort.status"}],_={updatedAt:"desc"},aa=(0,e.memo)(function(){let{sortKey:a,sortDirection:b,setSortKey:c,setSortDirection:f}=(0,q.VF)(),g=(0,l.c)("common"),h=(0,e.useMemo)(()=>$.map(({key:a,labelKey:b})=>({key:a,label:g(b)})),[g]);return(0,d.jsx)(W,{sortKey:a,sortDirection:b,onSortKeyChange:c,onSortDirectionChange:f,options:h,defaultDirections:_,compact:!0,tooltip:g("tooltips.sort"),iconClassName:"w-4 h-4"})});var ab=c(15737),ac=c(81497),ad=c(85744),ae=c(68232);function af(){let{currentLocale:a,switchLocale:b}=(0,ad.g)(),c=(0,l.c)("common");return(0,d.jsx)("select",{value:a,onChange:a=>b(a.target.value),"data-testid":"locale-switcher","aria-label":c("language"),className:" w-full px-3 py-2 rounded-md bg-sidebar text-sidebar-foreground border border-sidebar-border focus:outline-none focus:ring-2 focus:ring-ring focus:border-transparent text-sm ",children:ae.dI.map(a=>(0,d.jsx)("option",{value:a,children:ae.vK[a]},a))})}var ag=c(84342);function ah(){let a=(0,l.c)("auth"),b=(0,ag.H)(),[c,f]=(0,e.useState)(!1);if(!b)return null;async function g(){f(!0);try{await fetch("/api/auth/logout",{method:"POST"}),window.location.href="/login"}catch{window.location.href="/login"}}return(0,d.jsx)("button",{type:"button",onClick:g,disabled:c,"data-testid":"logout-button",className:" w-full px-3 py-2 text-sm text-left rounded-md text-muted-foreground hover:text-foreground hover:bg-muted focus:outline-none focus:ring-2 focus:ring-ring disabled:opacity-50 transition-colors ",children:c?"...":a("logout.button")})}var ai=c(63474),aj=c(77560),ak=c(19463);function al(){let a=(0,l.c)("common"),{count:b}=(0,ak.Lv)();return 0===b?null:(0,d.jsxs)(i(),{href:aj.ks,"data-testid":"attention-badge","aria-label":a("attention.badgeLabel",{count:b}),className:"mt-2 inline-flex w-full items-center justify-between gap-2 rounded-md border border-warning-border bg-warning-subtle px-2 py-1 text-xs font-medium text-warning-foreground transition-colors hover:brightness-105 focus:outline-none focus-visible:ring-2 focus-visible:ring-ring",children:[(0,d.jsx)("span",{className:"min-w-0 truncate",children:a("attention.label")}),(0,d.jsx)("span",{"data-testid":"attention-badge-count",className:"tabular-nums font-semibold",children:b})]})}function am({count:a}){let b=(0,l.c)("common");return 0===a?null:(0,d.jsx)("span",{"data-testid":"attention-badge-bubble",role:"status","aria-label":b("attention.badgeLabel",{count:a}),className:"absolute -top-1.5 -right-2.5 min-w-[1.05rem] rounded-full bg-warning-foreground px-1 text-[0.625rem] font-bold leading-[1.05rem] text-warning-subtle tabular-nums text-center",children:a>99?"99+":a})}var an=c(78352);function ao(a){let{items:b,sortKey:c,sortDirection:d,viewMode:f,filterText:g}=a,h=(0,e.useMemo)(()=>{if(!g)return b;let a=g.toLowerCase();return b.filter(b=>b.name.toLowerCase().includes(a)||b.repositoryName.toLowerCase().includes(a))},[b,g]);return{sortedItems:(0,e.useMemo)(()=>(0,r.Xn)(h,c,d),[h,c,d]),groupedItems:(0,e.useMemo)(()=>"grouped"===f?(0,r._s)(h,c,d):[],[h,c,d,f])}}let ap="w-4 h-4",aq=0,ar=(0,e.memo)(function(){let a=(0,j.Hq)(),{worktrees:b,repositories:c,selectedWorktreeId:f,selectWorktree:g,refreshWorktrees:h,isLoading:k,error:m}=(0,L.$f)(),{closeMobileDrawer:n,sortKey:o,sortDirection:p,viewMode:s,setViewMode:t,repositoryOrder:u,setRepositoryOrder:v}=(0,q.VF)(),x=(0,l.c)("common"),[y,z]=(0,e.useState)(""),A=(0,e.useRef)(null),[B,C]=(0,e.useState)(()=>({})),D=(0,e.useRef)(!1);(0,e.useEffect)(()=>{D.current||(D.current=!0,fetch("/api/sidebar/group-order").then(a=>a.json()).then(a=>{a.success&&Array.isArray(a.order)&&v(a.order)}).catch(()=>{}))},[v]);let E=(0,e.useMemo)(()=>(0,r.UZ)(c),[c]),F=(0,e.useMemo)(()=>(0,r.s6)(b,E),[b,E]),G=(0,e.useMemo)(()=>F.map(O.XK),[F]),K=(0,e.useDeferredValue)(G),M=(0,e.useRef)(null),N=(0,e.useRef)(null),[P,Q]=(0,e.useState)(0);(0,e.useEffect)(()=>()=>{null!==N.current&&clearTimeout(N.current)},[]);let R=(0,e.useCallback)(()=>{null!==N.current&&(clearTimeout(N.current),N.current=null),M.current=null},[]),S=(0,e.useMemo)(()=>{let a=M.current;return!a||0===a.items.length||Date.now()>=a.expiresAt?K:a.items},[K,P]),V=(0,e.useRef)(S);(0,e.useLayoutEffect)(()=>{V.current=S;let a=M.current;a&&0===a.items.length&&K.length>0&&R()});let W=(0,e.useCallback)(()=>{if(0===V.current.length)return;null!==N.current&&(clearTimeout(N.current),N.current=null);let a=M.current;if(a&&Date.now()<a.expiresAt){M.current={...a,expiresAt:1/0};return}M.current={items:V.current,expiresAt:1/0}},[]),X=(0,e.useCallback)(()=>{M.current&&(M.current={...M.current,expiresAt:Date.now()+1e3},null!==N.current&&clearTimeout(N.current),N.current=setTimeout(()=>{R(),Q(a=>a+1)},1e3))},[R]),{sortedItems:Y,groupedItems:Z}=ao({items:S,sortKey:o,sortDirection:p,viewMode:s,filterText:y}),$=(0,e.useMemo)(()=>"grouped"===s&&Z?y.trim()?Z:(0,r.BN)(Z,u):null,[s,Z,u,y]),_="grouped"===s?$:null;(0,e.useEffect)(()=>{},[B]);let ac=(0,e.useCallback)(a=>{C(b=>({...b,[a]:!b[a]}))},[]),ad=(0,e.useCallback)(()=>{var a;aq=Number.isFinite(a=A.current?.scrollTop??0)&&a>0?a:0},[]),ae=Y.length>0||(_?.length??0)>0;(0,e.useEffect)(()=>{let a=A.current;if(!a)return;let b=window.requestAnimationFrame(()=>{a.scrollTop=aq});return()=>{window.cancelAnimationFrame(b)}},[ae,s]);let ag=(0,e.useCallback)(b=>{ad(),g(b),a.push(`/worktrees/${b}`),n()},[ad,g,a,n]),ai=(0,I.FR)((0,I.MS)(I.AN,{activationConstraint:{distance:8}})),aj=(0,e.useCallback)(a=>{let{active:b,over:c}=a;if(!c||b.id===c.id||!_)return;let d=_.map(a=>a.repositoryName),e=d.indexOf(String(b.id)),f=d.indexOf(String(c.id));if(-1===e||-1===f)return;let g=(0,J.be)(d,e,f);v(g),fetch("/api/sidebar/group-order",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({order:g})}).catch(()=>{v(d)})},[_,v]),ak="flat"===s?0===Y.length:(_?.length??0)===0,am=k&&0===b.length,an=!am&&!!m&&0===b.length,ar=(0,e.useCallback)(()=>{h()},[h]);return(0,d.jsxs)("nav",{"data-testid":"sidebar","aria-label":x("sidebar.branchNavigation"),className:"h-full flex flex-col bg-sidebar text-sidebar-foreground",role:"navigation",children:[(0,d.jsxs)("div",{"data-testid":"sidebar-header",className:"flex-shrink-0 px-4 py-4 border-b border-sidebar-border",children:[(0,d.jsxs)("div",{className:"flex flex-wrap items-center justify-between gap-y-2",children:[(0,d.jsx)("h2",{className:"min-w-0 truncate text-lg font-semibold text-sidebar-foreground",children:x("sidebar.branches")}),(0,d.jsxs)("div",{className:"flex flex-wrap items-center gap-1",children:[(0,d.jsx)(av,{viewMode:s,onToggle:t}),(0,d.jsx)(aa,{}),(0,d.jsx)(aA,{refreshWorktrees:h}),(0,d.jsx)(U.m_,{content:x("tooltips.repositories"),placement:"bottom",children:(0,d.jsx)(i(),{href:"/repositories","aria-label":x("nav.repositories"),className:"p-1 rounded-md text-sidebar-muted hover:text-sidebar-foreground hover:bg-sidebar-hover focus:outline-none focus:ring-2 focus:ring-ring transition-colors inline-flex items-center",children:(0,d.jsx)(H.A,{className:ap,"aria-hidden":"true"})})})]})]}),(0,d.jsx)(al,{})]}),(0,d.jsx)("div",{className:"flex-shrink-0 px-4 py-3 border-b border-sidebar-border",children:(0,d.jsx)(ab.pd,{type:"text",placeholder:x("sidebar.searchBranches"),value:y,onChange:a=>z(a.target.value),className:"bg-background shadow-none"})}),(0,d.jsx)("div",{ref:A,"data-testid":"branch-list",onScroll:ad,onMouseEnter:W,onMouseLeave:X,className:"flex-1 overflow-y-auto overflow-x-hidden",children:am?(0,d.jsx)(as,{label:x("sidebar.loadingBranches")}):an?(0,d.jsxs)("div",{"data-testid":"branch-list-error",role:"alert",className:"px-4 py-8 text-center text-sidebar-muted",children:[(0,d.jsx)("p",{className:"text-sm",children:x("sidebar.branchesLoadFailed")}),(0,d.jsx)(ab.$n,{type:"button",variant:"secondary",size:"sm",className:"mt-3","data-testid":"branch-list-retry",onClick:ar,children:x("sidebar.retryLoadBranches")})]}):ak?(0,d.jsx)("div",{className:"px-4 py-8 text-center text-sidebar-muted",children:x(y?"sidebar.noBranchesFound":"sidebar.noBranchesAvailable")}):"grouped"===s&&_?(0,d.jsx)(I.Mp,{sensors:ai,collisionDetection:I.fp,onDragEnd:aj,children:(0,d.jsx)(J.gB,{items:_.map(a=>a.repositoryName),strategy:J._G,children:_.map(a=>{let b=!B[a.repositoryName]||!!y.trim();return(0,d.jsx)(at,{group:a,isExpanded:b,selectedWorktreeId:f,onToggle:()=>ac(a.repositoryName),onBranchClick:ag,isDragDisabled:!!y.trim()},a.repositoryName)})})}):Y.map(a=>(0,d.jsx)(T,{branch:a,isSelected:a.id===f,onClick:()=>ag(a.id)},a.id))}),(0,d.jsxs)("div",{className:"flex-shrink-0 px-4 py-3 border-t border-sidebar-border space-y-2",children:[(0,d.jsxs)("div",{className:"flex items-center gap-2",children:[(0,d.jsx)("div",{className:"flex-1",children:(0,d.jsx)(af,{})}),(0,d.jsx)(w,{})]}),(0,d.jsx)(ah,{})]})]})}),as=(0,e.memo)(function({label:a}){return(0,d.jsxs)("div",{"data-testid":"branch-list-skeleton",role:"status","aria-live":"polite",className:"px-4 py-3 space-y-3",children:[(0,d.jsx)("span",{className:"sr-only",children:a}),[0,1,2,3,4].map(a=>(0,d.jsxs)("div",{className:"flex items-center gap-2",children:[(0,d.jsx)(ab.EA,{className:"h-2 w-2 rounded-full"}),(0,d.jsx)(ab.EA,{className:"h-3 flex-1"})]},a))]})});function at({group:a,isExpanded:b,selectedWorktreeId:c,onToggle:e,onBranchClick:f,isDragDisabled:g}){let{attributes:h,listeners:i,setNodeRef:j,setActivatorNodeRef:k,transform:l,transition:m,isDragging:n}=(0,J.gl)({id:a.repositoryName,disabled:g}),o={transform:K.Ks.Transform.toString(l),transition:m,opacity:n?.5:1};return(0,d.jsxs)("div",{ref:j,style:o,className:"w-full min-w-0",children:[(0,d.jsx)(au,{repositoryName:a.repositoryName,branchCount:a.branches.length,isExpanded:b,onClick:e,dragHandleRef:k,dragHandleListeners:g?void 0:i,dragHandleAttributes:g?void 0:h}),b&&a.branches.map(a=>(0,d.jsx)(T,{branch:a,isSelected:a.id===c,onClick:()=>f(a.id),showRepositoryName:!1},a.id))]})}function au({repositoryName:a,branchCount:b,isExpanded:c,onClick:e,dragHandleRef:f,dragHandleListeners:g,dragHandleAttributes:h}){let i=(0,l.c)("common");return(0,d.jsxs)("div",{className:"flex items-center w-full",children:[g&&(0,d.jsx)("div",{ref:f,...g,...h,"aria-label":i("sidebar.dragToReorderGroup"),className:" flex-shrink-0 flex items-center justify-center w-6 h-full pl-2 cursor-grab active:cursor-grabbing text-sidebar-muted hover:text-sidebar-foreground transition-colors ",children:(0,d.jsx)(ay,{})}),(0,d.jsxs)("button",{"data-testid":"group-header",type:"button",onClick:e,"aria-expanded":c,className:" flex-1 min-w-0 flex items-center gap-2 px-2 py-2 text-xs font-semibold text-sidebar-muted uppercase tracking-wider focus:outline-none focus:ring-2 focus:ring-inset focus:ring-ring transition-colors ",children:[(0,d.jsx)(aw,{isExpanded:c}),(0,d.jsx)(ab.nF,{color:(0,r.LV)(a)}),(0,d.jsx)(ac.nR,{content:a,className:"flex-1 min-w-0 text-left truncate",children:a}),(0,d.jsx)("span",{className:"text-sidebar-muted font-normal tabular-nums pr-2",children:b})]})]})}function av({viewMode:a,onToggle:b}){let c=(0,l.c)("common");return(0,d.jsx)(U.m_,{content:c("tooltips.viewMode"),placement:"bottom",children:(0,d.jsx)("button",{"data-testid":"view-mode-toggle",type:"button",onClick:()=>{b("grouped"===a?"flat":"grouped")},"aria-label":c("grouped"===a?"sidebar.switchToFlatView":"sidebar.switchToGroupedView"),className:" p-1 rounded-md text-sidebar-muted hover:text-sidebar-foreground hover:bg-sidebar-hover focus:outline-none focus:ring-2 focus:ring-ring transition-colors ",children:"grouped"===a?(0,d.jsx)(ax,{className:ap}):(0,d.jsx)(ab.nF,{className:ap})})})}function aw({isExpanded:a}){return(0,d.jsx)("svg",{className:`w-3 h-3 flex-shrink-0 transition-transform ${a?"rotate-90":""}`,fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:(0,d.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M9 5l7 7-7 7"})})}function ax({className:a="w-3 h-3"}){return(0,d.jsx)("svg",{className:a,fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:(0,d.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M4 6h16M4 12h16M4 18h16"})})}function ay(){return(0,d.jsxs)("svg",{className:"w-3 h-3",fill:"currentColor",viewBox:"0 0 24 24","aria-hidden":"true",children:[(0,d.jsx)("circle",{cx:"9",cy:"5",r:"1.5"}),(0,d.jsx)("circle",{cx:"15",cy:"5",r:"1.5"}),(0,d.jsx)("circle",{cx:"9",cy:"12",r:"1.5"}),(0,d.jsx)("circle",{cx:"15",cy:"12",r:"1.5"}),(0,d.jsx)("circle",{cx:"9",cy:"19",r:"1.5"}),(0,d.jsx)("circle",{cx:"15",cy:"19",r:"1.5"})]})}function az({className:a=""}){return(0,d.jsx)("svg",{className:`${ap} ${a}`,fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:(0,d.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M4 4v5h5M20 20v-5h-5M20.49 9A9 9 0 005.64 5.64L4 4m16 16l-1.64-1.64A9 9 0 014.51 15"})})}let aA=(0,e.memo)(function({refreshWorktrees:a}){let[b,c]=(0,e.useState)(!1),f=(0,e.useRef)(!1),{showToast:g}=(0,ai.dj)(),h=(0,l.c)("common"),i=(0,e.useCallback)(async()=>{if(!f.current){f.current=!0,c(!0);try{let b=await an.Rx.sync();await a(),g(h("syncSuccess",{count:b.worktreeCount}),"success",3e3)}catch(a){a instanceof an.hD&&401===a.status?g(h("syncAuthError"),"error",5e3):g(h("syncError"),"error",5e3)}finally{f.current=!1,c(!1)}}},[a,g,h]);return(0,d.jsx)(d.Fragment,{children:(0,d.jsx)(U.m_,{content:h("tooltips.sync"),placement:"bottom",children:(0,d.jsx)("button",{type:"button",onClick:i,disabled:b,"aria-label":h("syncButtonLabel"),className:"p-1 rounded-md text-sidebar-muted hover:text-sidebar-foreground hover:bg-sidebar-hover focus:outline-none focus:ring-2 focus:ring-ring disabled:opacity-50 disabled:cursor-not-allowed transition-colors",children:(0,d.jsx)(az,{className:b?"animate-spin":""})})})})});var aB=c(38882),aC=c(72280),aD=c(52120),aE=c(11010);let aF=/^\/worktrees\/([^/]+)/;function aG(a,b,c){let d=c-8-b;return d<=8?8:Math.min(Math.max(a.left+b>c-8?a.right-b:a.left,8),d)}let aH=(0,e.memo)(function(){let a=(0,l.c)("common"),b=(0,g.usePathname)(),c=(0,j.Hq)(),{sortKey:f,sortDirection:h,repositoryOrder:i}=(0,q.VF)(),{worktrees:k,repositories:m,selectedWorktreeId:n,selectWorktree:o}=(0,L.$f)(),{factor:p}=(0,G.Ps)(),s=(0,e.useMemo)(()=>(0,r.UZ)(m??[]),[m]),t=(0,e.useMemo)(()=>(0,r.s6)(k??[],s),[k,s]),{groupedItems:u}=ao({items:(0,e.useMemo)(()=>t.map(O.XK),[t]),sortKey:f,sortDirection:h,viewMode:"grouped"}),v=(0,e.useMemo)(()=>(0,r.BN)(u,i),[u,i]),w=function(a,b){let c=aF.exec(a);if(!c)return b;try{return decodeURIComponent(c[1])}catch{return c[1]}}(b,n),x=(0,e.useMemo)(()=>v.find(a=>a.branches.some(a=>a.id===w))?.repositoryName??null,[v,w]),[y,z]=(0,e.useState)(null),[A,B]=(0,e.useState)(null),[C,D]=(0,e.useState)(!1),E=(0,e.useRef)(null),F=(0,e.useRef)(null),H=(0,e.useRef)(new Map),I=(0,e.useCallback)((a,b)=>{b?H.current.set(a,b):H.current.delete(a)},[]),J=(0,e.useCallback)(()=>{z(null),B(null),D(!1)},[]),K=(0,e.useCallback)(a=>{let b=H.current.get(a);if(!b)return;let c=b.getBoundingClientRect();B({left:c.left,right:c.right,bottom:c.bottom}),z(a),D(!1)},[]),M=(0,e.useCallback)(a=>{if(y===a)return void J();K(a)},[y,J,K]),[N,P]=(0,e.useState)(!1),Q=(0,e.useCallback)(()=>{let a=E.current;a&&P(a.scrollWidth>a.clientWidth+1)},[]);(0,e.useLayoutEffect)(()=>{Q()},[Q,v.length,p]),(0,e.useEffect)(()=>{},[Q]);let R=null!==y||C;(0,e.useEffect)(()=>{if(!R)return;let a=a=>{let b=a.target;!(!b||E.current?.contains(b)||F.current?.contains(b))&&(b.closest?.("[data-repository-tab-panel]")||J())},b=a=>{if("Escape"!==a.key)return;let b=y?H.current.get(y):F.current;J(),b?.focus()};return document.addEventListener("mousedown",a),document.addEventListener("keydown",b),()=>{document.removeEventListener("mousedown",a),document.removeEventListener("keydown",b)}},[R,y,J]),(0,e.useEffect)(()=>{J()},[b,J]);let S=(0,e.useCallback)(a=>{J(),o(a),c.push(`/worktrees/${a}`)},[J,o,c]),T=(0,e.useCallback)(a=>{let b=H.current.get(a);b?.scrollIntoView({block:"nearest",inline:"nearest"}),K(a),b?.focus()},[K]);if(0===v.length)return null;let U=Math.round(32*p),V=v.find(a=>a.repositoryName===y)??null;return(0,d.jsxs)("div",{"data-testid":"repository-tab-bar",className:"relative flex-shrink-0 flex items-stretch border-b border-border bg-surface",style:{height:`${U}px`},children:[(0,d.jsx)("nav",{ref:E,"data-testid":"repository-tab-strip","aria-label":a("nav.repositories"),className:"flex min-w-0 flex-1 flex-nowrap items-stretch overflow-x-auto overflow-y-hidden",children:v.map(a=>(0,d.jsx)(aI,{group:a,isActive:a.repositoryName===x,isOpen:a.repositoryName===y,registerTab:I,onToggle:M},a.repositoryName))}),N&&(0,d.jsx)("button",{ref:F,type:"button","data-testid":"repository-tab-overflow","aria-haspopup":"menu","aria-expanded":C,"aria-label":a("nav.more"),title:a("nav.more"),onClick:()=>{z(null),B(null),D(a=>!a)},className:"flex-shrink-0 flex items-center border-l border-border px-2 text-muted-foreground transition-colors hover:bg-surface-2 hover:text-foreground focus:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-ring",children:(0,d.jsx)(aB.A,{size:16,strokeWidth:2,"aria-hidden":"true"})}),V&&A&&(0,d.jsx)(aJ,{group:V,anchor:A,factor:p,activeWorktreeId:w,onBranchClick:S}),C&&(0,d.jsx)(aK,{groups:v,anchorRef:F,activeRepositoryName:x,onSelect:T})]})}),aI=(0,e.memo)(function({group:a,isActive:b,isOpen:c,registerTab:e,onToggle:f}){let g=(0,l.c)("common"),h=(0,r.zD)(a.branches),i=(0,r.j)(a.branches),j=g(aD.PL[h].labelKey);return(0,d.jsxs)("button",{ref:b=>e(a.repositoryName,b),type:"button","data-testid":"repository-tab","data-repository":a.repositoryName,"aria-haspopup":"menu","aria-expanded":c,"aria-current":b?"true":void 0,title:`${a.repositoryName} — ${j}`,onClick:()=>f(a.repositoryName),onKeyDown:b=>{"ArrowDown"===b.key&&(b.preventDefault(),c||f(a.repositoryName))},className:`
|
|
11
|
+
`,children:[(0,d.jsx)("span",{children:c.label}),a===c.key&&(0,d.jsx)("span",{className:"text-xs",children:"asc"===b?"ASC":"DESC"})]},c.key))})]})});function X({className:a}){return(0,d.jsx)("svg",{className:a,fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:(0,d.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M3 4h13M3 8h9m-9 4h6m4 0l4-4m0 0l4 4m-4-4v12"})})}function Y({className:a}){return(0,d.jsx)("svg",{className:a,fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:(0,d.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M5 15l7-7 7 7"})})}function Z({className:a}){return(0,d.jsx)("svg",{className:a,fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:(0,d.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M19 9l-7 7-7-7"})})}let $=[{key:"updatedAt",labelKey:"sort.updatedAt"},{key:"repositoryName",labelKey:"sort.repositoryName"},{key:"branchName",labelKey:"sort.branchName"},{key:"status",labelKey:"sort.status"}],_={updatedAt:"desc"},aa=(0,e.memo)(function(){let{sortKey:a,sortDirection:b,setSortKey:c,setSortDirection:f}=(0,q.VF)(),g=(0,l.c)("common"),h=(0,e.useMemo)(()=>$.map(({key:a,labelKey:b})=>({key:a,label:g(b)})),[g]);return(0,d.jsx)(W,{sortKey:a,sortDirection:b,onSortKeyChange:c,onSortDirectionChange:f,options:h,defaultDirections:_,compact:!0,tooltip:g("tooltips.sort"),iconClassName:"w-4 h-4"})});var ab=c(15737),ac=c(81497),ad=c(85744),ae=c(68232);function af(){let{currentLocale:a,switchLocale:b}=(0,ad.g)(),c=(0,l.c)("common");return(0,d.jsx)("select",{value:a,onChange:a=>b(a.target.value),"data-testid":"locale-switcher","aria-label":c("language"),className:" w-full px-3 py-2 rounded-md bg-sidebar text-sidebar-foreground border border-sidebar-border focus:outline-none focus:ring-2 focus:ring-ring focus:border-transparent text-sm ",children:ae.dI.map(a=>(0,d.jsx)("option",{value:a,children:ae.vK[a]},a))})}var ag=c(84342);function ah(){let a=(0,l.c)("auth"),b=(0,ag.H)(),[c,f]=(0,e.useState)(!1);if(!b)return null;async function g(){f(!0);try{await fetch("/api/auth/logout",{method:"POST"}),window.location.href="/login"}catch{window.location.href="/login"}}return(0,d.jsx)("button",{type:"button",onClick:g,disabled:c,"data-testid":"logout-button",className:" w-full px-3 py-2 text-sm text-left rounded-md text-muted-foreground hover:text-foreground hover:bg-muted focus:outline-none focus:ring-2 focus:ring-ring disabled:opacity-50 transition-colors ",children:c?"...":a("logout.button")})}var ai=c(63474),aj=c(77560),ak=c(19463);function al(){let a=(0,l.c)("common"),{count:b}=(0,ak.Lv)();return 0===b?null:(0,d.jsxs)(i(),{href:aj.ks,"data-testid":"attention-badge","aria-label":a("attention.badgeLabel",{count:b}),className:"mt-2 inline-flex w-full items-center justify-between gap-2 rounded-md border border-warning-border bg-warning-subtle px-2 py-1 text-xs font-medium text-warning-foreground transition-colors hover:brightness-105 focus:outline-none focus-visible:ring-2 focus-visible:ring-ring",children:[(0,d.jsx)("span",{className:"min-w-0 truncate",children:a("attention.label")}),(0,d.jsx)("span",{"data-testid":"attention-badge-count",className:"tabular-nums font-semibold",children:b})]})}function am({count:a}){let b=(0,l.c)("common");return 0===a?null:(0,d.jsx)("span",{"data-testid":"attention-badge-bubble",role:"status","aria-label":b("attention.badgeLabel",{count:a}),className:"absolute -top-1.5 -right-2.5 min-w-[1.05rem] rounded-full bg-warning-foreground px-1 text-[0.625rem] font-bold leading-[1.05rem] text-warning-subtle tabular-nums text-center",children:a>99?"99+":a})}var an=c(78352);function ao(a){let{items:b,sortKey:c,sortDirection:d,viewMode:f,filterText:g}=a,h=(0,e.useMemo)(()=>{if(!g)return b;let a=g.toLowerCase();return b.filter(b=>b.name.toLowerCase().includes(a)||b.repositoryName.toLowerCase().includes(a))},[b,g]);return{sortedItems:(0,e.useMemo)(()=>(0,r.Xn)(h,c,d),[h,c,d]),groupedItems:(0,e.useMemo)(()=>"grouped"===f?(0,r._s)(h,c,d):[],[h,c,d,f])}}let ap="w-4 h-4",aq=0,ar=(0,e.memo)(function(){let a=(0,j.Hq)(),{worktrees:b,repositories:c,selectedWorktreeId:f,selectWorktree:g,refreshWorktrees:h,isLoading:k,error:m}=(0,L.$f)(),{closeMobileDrawer:n,sortKey:o,sortDirection:p,viewMode:s,setViewMode:t,repositoryOrder:u,setRepositoryOrder:v}=(0,q.VF)(),x=(0,l.c)("common"),[y,z]=(0,e.useState)(""),A=(0,e.useRef)(null),[B,C]=(0,e.useState)(()=>({})),D=(0,e.useRef)(!1);(0,e.useEffect)(()=>{D.current||(D.current=!0,fetch("/api/sidebar/group-order").then(a=>a.json()).then(a=>{a.success&&Array.isArray(a.order)&&v(a.order)}).catch(()=>{}))},[v]);let E=(0,e.useMemo)(()=>(0,r.UZ)(c),[c]),F=(0,e.useMemo)(()=>(0,r.s6)(b,E),[b,E]),G=(0,e.useMemo)(()=>F.map(O.XK),[F]),K=(0,e.useDeferredValue)(G),M=(0,e.useRef)(null),N=(0,e.useRef)(null),[P,Q]=(0,e.useState)(0);(0,e.useEffect)(()=>()=>{null!==N.current&&clearTimeout(N.current)},[]);let R=(0,e.useCallback)(()=>{null!==N.current&&(clearTimeout(N.current),N.current=null),M.current=null},[]),S=(0,e.useMemo)(()=>{let a=M.current;return!a||0===a.items.length||Date.now()>=a.expiresAt?K:a.items},[K,P]),V=(0,e.useRef)(S);(0,e.useLayoutEffect)(()=>{V.current=S;let a=M.current;a&&0===a.items.length&&K.length>0&&R()});let W=(0,e.useCallback)(()=>{if(0===V.current.length)return;null!==N.current&&(clearTimeout(N.current),N.current=null);let a=M.current;if(a&&Date.now()<a.expiresAt){M.current={...a,expiresAt:1/0};return}M.current={items:V.current,expiresAt:1/0}},[]),X=(0,e.useCallback)(()=>{M.current&&(M.current={...M.current,expiresAt:Date.now()+1e3},null!==N.current&&clearTimeout(N.current),N.current=setTimeout(()=>{R(),Q(a=>a+1)},1e3))},[R]),{sortedItems:Y,groupedItems:Z}=ao({items:S,sortKey:o,sortDirection:p,viewMode:s,filterText:y}),$=(0,e.useMemo)(()=>"grouped"===s&&Z?y.trim()?Z:(0,r.BN)(Z,u):null,[s,Z,u,y]),_="grouped"===s?$:null;(0,e.useEffect)(()=>{},[B]);let ac=(0,e.useCallback)(a=>{C(b=>({...b,[a]:!b[a]}))},[]),ad=(0,e.useCallback)(()=>{var a;aq=Number.isFinite(a=A.current?.scrollTop??0)&&a>0?a:0},[]),ae=Y.length>0||(_?.length??0)>0;(0,e.useEffect)(()=>{let a=A.current;if(!a)return;let b=window.requestAnimationFrame(()=>{a.scrollTop=aq});return()=>{window.cancelAnimationFrame(b)}},[ae,s]);let ag=(0,e.useCallback)(b=>{ad(),g(b),a.push(`/worktrees/${b}`),n()},[ad,g,a,n]),ai=(0,I.FR)((0,I.MS)(I.AN,{activationConstraint:{distance:8}})),aj=(0,e.useCallback)(a=>{let{active:b,over:c}=a;if(!c||b.id===c.id||!_)return;let d=_.map(a=>a.repositoryName),e=d.indexOf(String(b.id)),f=d.indexOf(String(c.id));if(-1===e||-1===f)return;let g=(0,J.be)(d,e,f);v(g),fetch("/api/sidebar/group-order",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({order:g})}).catch(()=>{v(d)})},[_,v]),ak="flat"===s?0===Y.length:(_?.length??0)===0,am=k&&0===b.length,an=!am&&!!m&&0===b.length,ar=(0,e.useCallback)(()=>{h()},[h]);return(0,d.jsxs)("nav",{"data-testid":"sidebar","aria-label":x("sidebar.branchNavigation"),className:"h-full flex flex-col bg-sidebar text-sidebar-foreground",role:"navigation",children:[(0,d.jsxs)("div",{"data-testid":"sidebar-header",className:"flex-shrink-0 px-4 py-4 border-b border-sidebar-border",children:[(0,d.jsxs)("div",{className:"flex flex-wrap items-center justify-between gap-y-2",children:[(0,d.jsx)("h2",{className:"min-w-0 truncate text-lg font-semibold text-sidebar-foreground",children:x("sidebar.branches")}),(0,d.jsxs)("div",{className:"flex flex-wrap items-center gap-1",children:[(0,d.jsx)(av,{viewMode:s,onToggle:t}),(0,d.jsx)(aa,{}),(0,d.jsx)(aA,{refreshWorktrees:h}),(0,d.jsx)(U.m_,{content:x("tooltips.repositories"),placement:"bottom",children:(0,d.jsx)(i(),{href:"/repositories","aria-label":x("nav.repositories"),className:"p-1 rounded-md text-sidebar-muted hover:text-sidebar-foreground hover:bg-sidebar-hover focus:outline-none focus:ring-2 focus:ring-ring transition-colors inline-flex items-center",children:(0,d.jsx)(H.A,{className:ap,"aria-hidden":"true"})})})]})]}),(0,d.jsx)(al,{})]}),(0,d.jsx)("div",{className:"flex-shrink-0 px-4 py-3 border-b border-sidebar-border",children:(0,d.jsx)(ab.pd,{type:"text",placeholder:x("sidebar.searchBranches"),value:y,onChange:a=>z(a.target.value),className:"bg-background shadow-none"})}),(0,d.jsx)("div",{ref:A,"data-testid":"branch-list",onScroll:ad,onMouseEnter:W,onMouseLeave:X,className:"flex-1 overflow-y-auto overflow-x-hidden",children:am?(0,d.jsx)(as,{label:x("sidebar.loadingBranches")}):an?(0,d.jsxs)("div",{"data-testid":"branch-list-error",role:"alert",className:"px-4 py-8 text-center text-sidebar-muted",children:[(0,d.jsx)("p",{className:"text-sm",children:x("sidebar.branchesLoadFailed")}),(0,d.jsx)(ab.$n,{type:"button",variant:"secondary",size:"sm",className:"mt-3","data-testid":"branch-list-retry",onClick:ar,children:x("sidebar.retryLoadBranches")})]}):ak?(0,d.jsx)("div",{className:"px-4 py-8 text-center text-sidebar-muted",children:x(y?"sidebar.noBranchesFound":"sidebar.noBranchesAvailable")}):"grouped"===s&&_?(0,d.jsx)(I.Mp,{sensors:ai,collisionDetection:I.fp,onDragEnd:aj,children:(0,d.jsx)(J.gB,{items:_.map(a=>a.repositoryName),strategy:J._G,children:_.map(a=>{let b=!B[a.repositoryName]||!!y.trim();return(0,d.jsx)(at,{group:a,isExpanded:b,selectedWorktreeId:f,onToggle:()=>ac(a.repositoryName),onBranchClick:ag,isDragDisabled:!!y.trim()},a.repositoryName)})})}):Y.map(a=>(0,d.jsx)(T,{branch:a,isSelected:a.id===f,onClick:()=>ag(a.id)},a.id))}),(0,d.jsxs)("div",{className:"flex-shrink-0 px-4 py-3 border-t border-sidebar-border space-y-2",children:[(0,d.jsxs)("div",{className:"flex items-center gap-2",children:[(0,d.jsx)("div",{className:"flex-1",children:(0,d.jsx)(af,{})}),(0,d.jsx)(w,{})]}),(0,d.jsx)(ah,{})]})]})}),as=(0,e.memo)(function({label:a}){return(0,d.jsxs)("div",{"data-testid":"branch-list-skeleton",role:"status","aria-live":"polite",className:"px-4 py-3 space-y-3",children:[(0,d.jsx)("span",{className:"sr-only",children:a}),[0,1,2,3,4].map(a=>(0,d.jsxs)("div",{className:"flex items-center gap-2",children:[(0,d.jsx)(ab.EA,{className:"h-2 w-2 rounded-full"}),(0,d.jsx)(ab.EA,{className:"h-3 flex-1"})]},a))]})});function at({group:a,isExpanded:b,selectedWorktreeId:c,onToggle:e,onBranchClick:f,isDragDisabled:g}){let{attributes:h,listeners:i,setNodeRef:j,setActivatorNodeRef:k,transform:l,transition:m,isDragging:n}=(0,J.gl)({id:a.repositoryName,disabled:g}),o={transform:K.Ks.Transform.toString(l),transition:m,opacity:n?.5:1};return(0,d.jsxs)("div",{ref:j,style:o,className:"w-full min-w-0",children:[(0,d.jsx)(au,{repositoryName:a.repositoryName,branchCount:a.branches.length,isExpanded:b,onClick:e,dragHandleRef:k,dragHandleListeners:g?void 0:i,dragHandleAttributes:g?void 0:h}),b&&a.branches.map(a=>(0,d.jsx)(T,{branch:a,isSelected:a.id===c,onClick:()=>f(a.id),showRepositoryName:!1},a.id))]})}function au({repositoryName:a,branchCount:b,isExpanded:c,onClick:e,dragHandleRef:f,dragHandleListeners:g,dragHandleAttributes:h}){let i=(0,l.c)("common");return(0,d.jsxs)("div",{className:"flex items-center w-full",children:[g&&(0,d.jsx)("div",{ref:f,...g,...h,"aria-label":i("sidebar.dragToReorderGroup"),className:" flex-shrink-0 flex items-center justify-center w-6 h-full pl-2 cursor-grab active:cursor-grabbing text-sidebar-muted hover:text-sidebar-foreground transition-colors ",children:(0,d.jsx)(ay,{})}),(0,d.jsxs)("button",{"data-testid":"group-header",type:"button",onClick:e,"aria-expanded":c,className:" flex-1 min-w-0 flex items-center gap-2 px-2 py-2 text-xs font-semibold text-sidebar-muted uppercase tracking-wider focus:outline-none focus:ring-2 focus:ring-inset focus:ring-ring transition-colors ",children:[(0,d.jsx)(aw,{isExpanded:c}),(0,d.jsx)(ab.nF,{color:(0,r.LV)(a)}),(0,d.jsx)(ac.nR,{content:a,className:"flex-1 min-w-0 text-left truncate",children:a}),(0,d.jsx)("span",{className:"text-sidebar-muted font-normal tabular-nums pr-2",children:b})]})]})}function av({viewMode:a,onToggle:b}){let c=(0,l.c)("common");return(0,d.jsx)(U.m_,{content:c("tooltips.viewMode"),placement:"bottom",children:(0,d.jsx)("button",{"data-testid":"view-mode-toggle",type:"button",onClick:()=>{b("grouped"===a?"flat":"grouped")},"aria-label":c("grouped"===a?"sidebar.switchToFlatView":"sidebar.switchToGroupedView"),className:" p-1 rounded-md text-sidebar-muted hover:text-sidebar-foreground hover:bg-sidebar-hover focus:outline-none focus:ring-2 focus:ring-ring transition-colors ",children:"grouped"===a?(0,d.jsx)(ax,{className:ap}):(0,d.jsx)(ab.nF,{className:ap})})})}function aw({isExpanded:a}){return(0,d.jsx)("svg",{className:`w-3 h-3 flex-shrink-0 transition-transform ${a?"rotate-90":""}`,fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:(0,d.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M9 5l7 7-7 7"})})}function ax({className:a="w-3 h-3"}){return(0,d.jsx)("svg",{className:a,fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:(0,d.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M4 6h16M4 12h16M4 18h16"})})}function ay(){return(0,d.jsxs)("svg",{className:"w-3 h-3",fill:"currentColor",viewBox:"0 0 24 24","aria-hidden":"true",children:[(0,d.jsx)("circle",{cx:"9",cy:"5",r:"1.5"}),(0,d.jsx)("circle",{cx:"15",cy:"5",r:"1.5"}),(0,d.jsx)("circle",{cx:"9",cy:"12",r:"1.5"}),(0,d.jsx)("circle",{cx:"15",cy:"12",r:"1.5"}),(0,d.jsx)("circle",{cx:"9",cy:"19",r:"1.5"}),(0,d.jsx)("circle",{cx:"15",cy:"19",r:"1.5"})]})}function az({className:a=""}){return(0,d.jsx)("svg",{className:`${ap} ${a}`,fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:(0,d.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M4 4v5h5M20 20v-5h-5M20.49 9A9 9 0 005.64 5.64L4 4m16 16l-1.64-1.64A9 9 0 014.51 15"})})}let aA=(0,e.memo)(function({refreshWorktrees:a}){let[b,c]=(0,e.useState)(!1),f=(0,e.useRef)(!1),{showToast:g}=(0,ai.dj)(),h=(0,l.c)("common"),i=(0,e.useCallback)(async()=>{if(!f.current){f.current=!0,c(!0);try{let b=await an.Rx.sync();await a(),g(h("syncSuccess",{count:b.worktreeCount}),"success",3e3)}catch(a){a instanceof an.hD&&401===a.status?g(h("syncAuthError"),"error",5e3):g(h("syncError"),"error",5e3)}finally{f.current=!1,c(!1)}}},[a,g,h]);return(0,d.jsx)(d.Fragment,{children:(0,d.jsx)(U.m_,{content:h("tooltips.sync"),placement:"bottom",children:(0,d.jsx)("button",{type:"button",onClick:i,disabled:b,"aria-label":h("syncButtonLabel"),className:"p-1 rounded-md text-sidebar-muted hover:text-sidebar-foreground hover:bg-sidebar-hover focus:outline-none focus:ring-2 focus:ring-ring disabled:opacity-50 disabled:cursor-not-allowed transition-colors",children:(0,d.jsx)(az,{className:b?"animate-spin":""})})})})});var aB=c(38882),aC=c(72280),aD=c(52120),aE=c(11010);let aF=/^\/worktrees\/([^/]+)/;function aG(a,b,c){let d=c-8-b;return d<=8?8:Math.min(Math.max(a.left+b>c-8?a.right-b:a.left,8),d)}function aH(a){a?.scrollIntoView?.({block:"nearest",inline:"nearest"})}let aI=(0,e.memo)(function(){let a=(0,l.c)("common"),b=(0,g.usePathname)(),c=(0,j.Hq)(),{sortKey:f,sortDirection:h,repositoryOrder:i}=(0,q.VF)(),{worktrees:k,repositories:m,selectedWorktreeId:n,selectWorktree:o}=(0,L.$f)(),{factor:p}=(0,G.Ps)(),s=(0,e.useMemo)(()=>(0,r.UZ)(m??[]),[m]),t=(0,e.useMemo)(()=>(0,r.s6)(k??[],s),[k,s]),{groupedItems:u}=ao({items:(0,e.useMemo)(()=>t.map(O.XK),[t]),sortKey:f,sortDirection:h,viewMode:"grouped"}),v=(0,e.useMemo)(()=>(0,r.BN)(u,i),[u,i]),w=function(a,b){let c=aF.exec(a);if(!c)return b;try{return decodeURIComponent(c[1])}catch{return c[1]}}(b,n),x=(0,e.useMemo)(()=>v.find(a=>a.branches.some(a=>a.id===w))?.repositoryName??null,[v,w]),[y,z]=(0,e.useState)(null),[A,B]=(0,e.useState)(null),[C,D]=(0,e.useState)(!1),E=(0,e.useRef)(null),F=(0,e.useRef)(null),H=(0,e.useRef)(new Map),I=(0,e.useCallback)((a,b)=>{b?H.current.set(a,b):H.current.delete(a)},[]),J=(0,e.useCallback)(()=>{z(null),B(null),D(!1)},[]),K=(0,e.useCallback)(a=>{let b=H.current.get(a);if(!b)return;let c=b.getBoundingClientRect();B({left:c.left,right:c.right,bottom:c.bottom}),z(a),D(!1)},[]),M=(0,e.useCallback)(a=>{if(y===a)return void J();K(a)},[y,J,K]),[N,P]=(0,e.useState)(!1),Q=(0,e.useCallback)(()=>{let a=E.current;a&&P(a.scrollWidth>a.clientWidth+1)},[]);(0,e.useLayoutEffect)(()=>{Q()},[Q,v.length,p]),(0,e.useEffect)(()=>{},[Q]);let R=null!==y||C;(0,e.useEffect)(()=>{if(!R)return;let a=a=>{let b=a.target;!(!b||E.current?.contains(b)||F.current?.contains(b))&&(b.closest?.("[data-repository-tab-panel]")||J())},b=a=>{if("Escape"!==a.key)return;let b=y?H.current.get(y):F.current;J(),b?.focus()};return document.addEventListener("mousedown",a),document.addEventListener("keydown",b),()=>{document.removeEventListener("mousedown",a),document.removeEventListener("keydown",b)}},[R,y,J]),(0,e.useEffect)(()=>{J()},[b,J]),(0,e.useLayoutEffect)(()=>{x&&aH(H.current.get(x))},[x,b,N]);let S=(0,e.useCallback)(a=>{J(),o(a),c.push(`/worktrees/${a}`)},[J,o,c]),T=(0,e.useCallback)(a=>{let b=H.current.get(a);aH(b),K(a),b?.focus()},[K]),U=(0,e.useCallback)(a=>{var b;let c=a.currentTarget,d=(b=c.clientWidth,a.ctrlKey||a.shiftKey||Math.abs(a.deltaY)<=Math.abs(a.deltaX)?0:1===a.deltaMode?40*a.deltaY:2===a.deltaMode?a.deltaY*b:a.deltaY);0!==d&&(c.scrollLeft+=d)},[]);if(0===v.length)return null;let V=Math.round(32*p),W=v.find(a=>a.repositoryName===y)??null;return(0,d.jsxs)("div",{"data-testid":"repository-tab-bar",className:"relative flex-shrink-0 flex items-stretch border-b border-border bg-surface",style:{height:`${V}px`},children:[(0,d.jsx)("nav",{ref:E,"data-testid":"repository-tab-strip","aria-label":a("nav.repositories"),onWheel:U,className:"flex min-w-0 flex-1 flex-nowrap items-stretch overflow-x-auto overflow-y-hidden scrollbar-hide",children:v.map(a=>(0,d.jsx)(aJ,{group:a,isActive:a.repositoryName===x,isOpen:a.repositoryName===y,registerTab:I,onToggle:M},a.repositoryName))}),N&&(0,d.jsx)("button",{ref:F,type:"button","data-testid":"repository-tab-overflow","aria-haspopup":"menu","aria-expanded":C,"aria-label":a("nav.more"),title:a("nav.more"),onClick:()=>{z(null),B(null),D(a=>!a)},className:"flex-shrink-0 flex items-center border-l border-border px-2 text-muted-foreground transition-colors hover:bg-surface-2 hover:text-foreground focus:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-ring",children:(0,d.jsx)(aB.A,{size:16,strokeWidth:2,"aria-hidden":"true"})}),W&&A&&(0,d.jsx)(aK,{group:W,anchor:A,factor:p,activeWorktreeId:w,onBranchClick:S}),C&&(0,d.jsx)(aL,{groups:v,anchorRef:F,activeRepositoryName:x,onSelect:T})]})}),aJ=(0,e.memo)(function({group:a,isActive:b,isOpen:c,registerTab:e,onToggle:f}){let g=(0,l.c)("common"),h=(0,r.zD)(a.branches),i=(0,r.j)(a.branches),j=g(aD.PL[h].labelKey);return(0,d.jsxs)("button",{ref:b=>e(a.repositoryName,b),type:"button","data-testid":"repository-tab","data-repository":a.repositoryName,"aria-haspopup":"menu","aria-expanded":c,"aria-current":b?"true":void 0,title:`${a.repositoryName} — ${j}`,onClick:()=>f(a.repositoryName),onKeyDown:b=>{"ArrowDown"===b.key&&(b.preventDefault(),c||f(a.repositoryName))},className:`
|
|
12
12
|
group/tab flex-shrink-0 flex max-w-[14rem] items-center gap-1.5 px-2.5
|
|
13
13
|
border-b-2 text-xs font-medium transition-colors
|
|
14
14
|
focus:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-ring
|
|
15
15
|
${b?"border-accent-500 bg-surface-2 text-foreground":"border-transparent text-muted-foreground hover:bg-surface-2 hover:text-foreground"}
|
|
16
|
-
`,children:[(0,d.jsx)(aC.n,{className:"h-3.5 w-3.5",color:(0,r.LV)(a.repositoryName)}),(0,d.jsx)("span",{className:"min-w-0 truncate",children:a.repositoryName}),(0,d.jsx)(P.m,{status:h,size:"sm",label:j,"data-testid":"repository-tab-status"}),i>0&&(0,d.jsx)("span",{"data-testid":"repository-tab-attention-count","aria-label":g("attention.badgeLabel",{count:i}),className:"flex-shrink-0 rounded-full bg-warning-subtle px-1.5 text-[10px] font-semibold leading-4 tabular-nums text-warning-foreground",children:i})]})});function
|
|
16
|
+
`,children:[(0,d.jsx)(aC.n,{className:"h-3.5 w-3.5",color:(0,r.LV)(a.repositoryName)}),(0,d.jsx)("span",{className:"min-w-0 truncate",children:a.repositoryName}),(0,d.jsx)(P.m,{status:h,size:"sm",label:j,"data-testid":"repository-tab-status"}),i>0&&(0,d.jsx)("span",{"data-testid":"repository-tab-attention-count","aria-label":g("attention.badgeLabel",{count:i}),className:"flex-shrink-0 rounded-full bg-warning-subtle px-1.5 text-[10px] font-semibold leading-4 tabular-nums text-warning-foreground",children:i})]})});function aK({group:a,anchor:b,factor:c,activeWorktreeId:f,onBranchClick:g}){let h=(0,l.c)("common"),i=(0,e.useRef)(null);if("undefined"==typeof document)return null;let j=Math.round(300*c);return N().createPortal((0,d.jsx)("div",{ref:i,"data-repository-tab-panel":"","data-testid":"repository-tab-popover","data-repository":a.repositoryName,role:"menu","aria-label":h("sidebar.branchNavigation"),className:"fixed rounded-md border border-sidebar-border bg-sidebar text-sidebar-foreground shadow-lg",style:{top:b.bottom+4,left:aG(b,j,j),width:j,zIndex:aE.M.POPOVER},children:(0,d.jsx)("div",{"data-testid":"repository-tab-popover-list",className:"overflow-y-auto overflow-x-hidden py-1",style:{maxHeight:`${Math.round(520*c)}px`},children:0===a.branches.length?(0,d.jsx)("p",{className:"px-4 py-6 text-center text-sm text-sidebar-muted",children:h("sidebar.noBranchesAvailable")}):a.branches.map(a=>(0,d.jsx)(T,{branch:a,isSelected:a.id===f,onClick:()=>g(a.id),showRepositoryName:!1},a.id))})}),document.body)}function aL({groups:a,anchorRef:b,activeRepositoryName:c,onSelect:e}){let f=(0,l.c)("common"),g=b.current?.getBoundingClientRect();return"undefined"!=typeof document&&g?N().createPortal((0,d.jsx)("div",{"data-repository-tab-panel":"","data-testid":"repository-tab-overflow-menu",role:"menu","aria-label":f("nav.repositories"),className:"fixed rounded-md border border-sidebar-border bg-sidebar text-sidebar-foreground shadow-lg",style:{top:g.bottom+4,left:aG({left:g.left,right:g.right,bottom:g.bottom},300,300),width:300,maxHeight:"520px",zIndex:aE.M.POPOVER},children:(0,d.jsx)("div",{className:"overflow-y-auto py-1",style:{maxHeight:"inherit"},children:a.map(a=>{let b=(0,r.zD)(a.branches);return(0,d.jsxs)("button",{type:"button",role:"menuitem","data-testid":"repository-tab-overflow-item","data-repository":a.repositoryName,"aria-current":a.repositoryName===c?"true":void 0,onClick:()=>e(a.repositoryName),className:"flex w-full items-center gap-2 px-3 py-2 text-left text-sm transition-colors hover:bg-sidebar-hover focus:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-ring",children:[(0,d.jsx)(aC.n,{className:"h-3.5 w-3.5",color:(0,r.LV)(a.repositoryName)}),(0,d.jsx)("span",{className:"min-w-0 flex-1 truncate",children:a.repositoryName}),(0,d.jsx)(P.m,{status:b,size:"sm",label:f(aD.PL[b].labelKey)}),(0,d.jsx)("span",{className:"tabular-nums text-xs text-sidebar-muted",children:a.branches.length})]},a.repositoryName)})})}),document.body):null}var aM=c(78733),aN=c(44688),aO=c(75903),aP=c(59268);let aQ=[{labelKey:"nav.home",href:"/",isActive:a=>"/"===a,icon:(0,d.jsx)(aM.A,{size:20,"aria-hidden":"true"})},{labelKey:"nav.chat",href:"/chat",isActive:a=>a.startsWith("/chat"),icon:(0,d.jsx)(aN.A,{size:20,"aria-hidden":"true"})},{labelKey:"nav.sessions",href:"/sessions",isActive:a=>a.startsWith("/sessions"),icon:(0,d.jsx)(aO.A,{size:20,"aria-hidden":"true"})},{labelKey:"nav.review",href:"/review",isActive:a=>a.startsWith("/review"),icon:(0,d.jsx)(aP.A,{size:20,"aria-hidden":"true"}),showsAttentionBadge:!0},{labelKey:"nav.more",href:"/more",isActive:a=>a.startsWith("/more"),icon:(0,d.jsx)(aB.A,{size:20,"aria-hidden":"true"})}];function aR(){let a=(0,g.usePathname)(),{setOpen:b}=(0,A.C)(),c=(0,l.c)("commandPalette"),e=(0,l.c)("common"),{count:f}=(0,ak.Lv)();return(0,d.jsx)("nav",{"data-testid":"global-mobile-nav",className:"fixed bottom-0 left-0 right-0 z-50 border-t border-border bg-background supports-[backdrop-filter]:bg-background/80 backdrop-blur-md pb-safe",children:(0,d.jsxs)("div",{className:"flex items-center justify-around h-14",children:[aQ.map(b=>{let c=b.isActive(a),g=!0===b.showsAttentionBadge&&f>0;return(0,d.jsxs)(k,{href:g?aj.ks:b.href,className:`flex flex-col items-center justify-center flex-1 h-full text-xs transition-colors ${c?"text-accent-600 dark:text-accent-400":"text-muted-foreground hover:text-foreground"}`,children:[(0,d.jsxs)("span",{className:"relative inline-flex",children:[b.icon,!0===b.showsAttentionBadge&&(0,d.jsx)(am,{count:f})]}),(0,d.jsx)("span",{className:"mt-1 whitespace-nowrap",children:e(b.labelKey)})]},b.href)}),(0,d.jsxs)("button",{type:"button","data-testid":"mobile-command-palette-trigger",onClick:()=>b(!0),"aria-label":c("mobileTrigger"),className:"flex flex-col items-center justify-center flex-1 h-full text-xs text-muted-foreground hover:text-foreground transition-colors",children:[(0,d.jsx)(n.A,{size:20,"aria-hidden":"true"}),(0,d.jsx)("span",{className:"mt-1 whitespace-nowrap",children:c("mobileLabel")})]})]})})}var aS=c(76047),aT=c(98033),aU=c(89184);let aV=["global","terminal","composer","editor"],aW=[{id:"commandPalette",keys:["MOD","K"],scope:"global"},{id:"keyboardHelp",keys:["?"],scope:"global"},{id:"closeOverlay",keys:["Esc"],scope:"global"},{id:"navigateList",keys:["↑","↓"],scope:"global"},{id:"terminalSearch",keys:["MOD","F"],scope:"terminal"},{id:"toggleSurfaceMode",keys:["MOD","Shift","M"],scope:"terminal"},{id:"sendMessage",keys:["↵"],scope:"composer"},{id:"composerNewline",keys:["Shift","↵"],scope:"composer"},{id:"editorIndent",keys:["Tab"],scope:"editor"},{id:"editorOutdent",keys:["Shift","Tab"],scope:"editor"},{id:"editorTabFocus",keys:["Ctrl","M"],scope:"editor"},{id:"editorSave",keys:["MOD","S"],scope:"editor"},{id:"editorFullscreen",keys:["MOD","Shift","F"],scope:"editor"}];function aX(){let{open:a,setOpen:b}=(0,aU.K)(),{open:c}=(0,A.C)(),f=(0,l.c)("keyboardShortcuts"),[g,h]=(0,e.useState)(!1);(0,e.useRef)(a),(0,e.useRef)(c);let i=function(a=aW){return aV.map(b=>({scope:b,shortcuts:a.filter(a=>a.scope===b)})).filter(a=>a.shortcuts.length>0)}();return(0,d.jsx)(aT.a,{isOpen:a,onClose:()=>b(!1),title:f("title"),size:"md",children:(0,d.jsx)("div",{"data-testid":"keyboard-shortcuts-overlay",className:"space-y-6",children:i.map(({scope:a,shortcuts:b})=>(0,d.jsxs)("section",{"data-testid":`keyboard-shortcuts-scope-${a}`,children:[(0,d.jsx)("h4",{className:"mb-2 text-xs font-semibold uppercase tracking-wide text-muted-foreground",children:f(`scopes.${a}`)}),(0,d.jsx)("ul",{className:"divide-y divide-border",children:b.map(a=>(0,d.jsxs)("li",{"data-testid":`keyboard-shortcut-${a.id}`,className:"flex items-center justify-between gap-4 py-2",children:[(0,d.jsx)("span",{className:"text-sm text-foreground",children:f(`shortcuts.${a.id}`)}),(0,d.jsx)("span",{className:"flex flex-shrink-0 items-center gap-1",children:a.keys.map((a,b)=>(0,d.jsx)(z.u,{children:"MOD"===a?g?"⌘":"Ctrl":a},b))})]},a.id))})]},a))})})}var aY=c(18608);let aZ="transform transition-transform duration-300 ease-out",a$=(0,e.memo)(function({children:a}){let{isOpen:b,isMobileDrawerOpen:c,closeMobileDrawer:f,width:h,setWidth:i,repoTabBarMode:j}=(0,q.VF)(),k=(0,D.a)(),{showSidebar:l,showGlobalNav:m}=function(){var a=(0,g.usePathname)();for(let b of F)if(a.startsWith(b.prefix))return{...E,...b.config};return{...E}}(),{factor:n}=(0,G.Ps)(),o=Math.round(160*n),p=Math.round(480*n),s=Math.round(Math.min(p,Math.max(o,h*n))),t=(0,r.fs)(j??r.PB,b),u=Math.round(32*n)+64*!!m,v=t?{top:`${u}px`,height:`calc(100vh - ${u}px)`}:{},w=(0,e.useRef)(null),x=(0,e.useRef)(null),y=(0,e.useCallback)(a=>{i(Math.round(a/n))},[i,n]);return k?(0,d.jsxs)("div",{"data-testid":"app-shell",className:"h-screen flex flex-col",children:[c&&(0,d.jsx)("div",{"data-testid":"drawer-overlay",className:"fixed inset-0 bg-black/50 z-40",onClick:f,"aria-hidden":"true"}),l&&(0,d.jsx)("aside",{"data-testid":"sidebar-container",className:`
|
|
17
17
|
fixed left-0 top-0 h-full w-72 z-50
|
|
18
|
-
${
|
|
18
|
+
${aZ}
|
|
19
19
|
${c?"translate-x-0":"-translate-x-full"}
|
|
20
|
-
`,role:"complementary",children:(0,d.jsx)(ar,{})}),(0,d.jsx)("main",{className:`flex-1 min-h-0 overflow-hidden ${m?"pb-14":""}`,role:"main","data-view-transition":"content",children:a}),m&&(0,d.jsx)(
|
|
20
|
+
`,role:"complementary",children:(0,d.jsx)(ar,{})}),(0,d.jsx)("main",{className:`flex-1 min-h-0 overflow-hidden ${m?"pb-14":""}`,role:"main","data-view-transition":"content",children:a}),m&&(0,d.jsx)(aR,{}),(0,d.jsx)(aS.xq,{}),(0,d.jsx)(aX,{}),(0,d.jsx)(aY.n,{})]}):(0,d.jsxs)("div",{"data-testid":"app-shell",className:"h-screen flex flex-col",children:[t&&(0,d.jsx)(aI,{}),m&&(0,d.jsx)(C,{}),(0,d.jsxs)("div",{className:"flex flex-1 min-h-0",children:[l&&(0,d.jsxs)("aside",{ref:w,"data-testid":"sidebar-container",className:`
|
|
21
21
|
fixed left-0
|
|
22
22
|
${m?"top-16 h-[calc(100vh-4rem)]":"top-0 h-full"}
|
|
23
23
|
border-r border-border
|
|
24
|
-
${
|
|
24
|
+
${aZ}
|
|
25
25
|
${b?"translate-x-0":"-translate-x-full"}
|
|
26
|
-
`,style:{width:`${s}px`,zIndex:aE.M.SIDEBAR,...v},role:"complementary","aria-hidden":!b,children:[(0,d.jsx)(ar,{}),(0,d.jsx)(
|
|
26
|
+
`,style:{width:`${s}px`,zIndex:aE.M.SIDEBAR,...v},role:"complementary","aria-hidden":!b,children:[(0,d.jsx)(ar,{}),(0,d.jsx)(a_,{currentWidth:s,minWidth:o,maxWidth:p,sidebarRef:w,mainRef:x,onWidthChange:y})]}),(0,d.jsx)("main",{ref:x,className:"flex-1 min-w-0 h-full overflow-hidden transition-[padding] duration-300 ease-out",style:{paddingLeft:l&&b?`${s}px`:0},role:"main","data-view-transition":"content",children:a})]}),(0,d.jsx)(aS.xq,{}),(0,d.jsx)(aX,{}),(0,d.jsx)(aY.n,{})]})});function a_({currentWidth:a,minWidth:b,maxWidth:c,sidebarRef:e,mainRef:f,onWidthChange:g}){return(0,d.jsx)("div",{"data-testid":"sidebar-resize-handle","aria-hidden":"true",onMouseDown:d=>{d.preventDefault();let h=d.clientX,i=a;f.current&&(f.current.style.transition="none");let j=d=>{i=Math.max(b,Math.min(c,a+(d.clientX-h))),e.current&&(e.current.style.width=`${i}px`),f.current&&(f.current.style.paddingLeft=`${i}px`)},k=()=>{document.body.style.cursor="",document.body.style.userSelect="",f.current&&(f.current.style.transition=""),document.removeEventListener("mousemove",j),document.removeEventListener("mouseup",k),g(i)};document.body.style.cursor="col-resize",document.body.style.userSelect="none",document.addEventListener("mousemove",j),document.addEventListener("mouseup",k)},className:"absolute top-0 right-0 w-1 h-full cursor-col-resize hover:bg-accent-500/40 transition-colors"})}},52120:(a,b,c)=>{c.d(b,{PL:()=>e,sb:()=>f});let d={idle:"bg-muted-foreground",ready:"bg-success",spinner:"border-info",waiting:"bg-warning"},e={idle:{className:d.idle,labelKey:"status.idle",type:"dot"},ready:{className:d.ready,labelKey:"status.ready",type:"dot"},running:{className:d.spinner,labelKey:"status.running",type:"spinner"},waiting:{className:d.waiting,labelKey:"status.waiting",type:"dot"},generating:{className:d.spinner,labelKey:"status.generating",type:"spinner"}},f={idle:"detailStatus.idle",ready:"detailStatus.ready",running:"detailStatus.running",waiting:"detailStatus.waiting"}},68232:(a,b,c)=>{c.d(b,{dI:()=>d,gB:()=>e,vK:()=>f});let d=["en","ja"],e="locale",f={en:"English",ja:"日本語"}},76047:(a,b,c)=>{c.d(b,{P0:()=>Y,oQ:()=>X,tJ:()=>T,xk:()=>W,xq:()=>$,yW:()=>Z});var d=c(21124),e=c(38301),f=c(23312),g=c(42378),h=c(55992),i=c(20481),j=c(45523),k=c(67565),l=c(78733),m=c(44688),n=c(75903),o=c(50987),p=c(59268),q=c(75234),r=c(38882),s=c(70175),t=c(60988),u=c(34487),v=c(25345),w=c(96558),x=c(97950),y=c(75692),z=c(57898),A=c(88285),B=c(71563),C=c(35595),D=c(11010),E=c(64632),F=c(89184),G=c(5772),H=c(63157),I=c(12480),J=c(85744),K=c(78352),L=c(22317),M=c(85647),N=c(63474),O=c(85678),P=c(17252);let Q=[{key:"home",href:"/"},{key:"chat",href:"/chat"},{key:"sessions",href:"/sessions"},{key:"repositories",href:"/repositories"},{key:"review",href:"/review"},{key:"skills",href:"/skills"},{key:"more",href:"/more"}],R={home:l.A,chat:m.A,sessions:n.A,repositories:o.A,review:p.A,skills:q.A,more:r.A};function S(a){return a.isWaitingForResponse?"waiting":a.isProcessing?"running":a.isSessionRunning?"ready":"idle"}function T(a){if(!(a instanceof HTMLElement))return!1;let b=a.tagName;return!!("INPUT"===b||"TEXTAREA"===b||"SELECT"===b||a.isContentEditable||a.closest('[role="log"]'))}let U=(0,C.cn)("flex cursor-pointer items-center gap-2 rounded-md px-2 py-2 text-sm","text-foreground","data-[selected=true]:bg-accent-500/15 data-[selected=true]:text-accent-700","dark:data-[selected=true]:text-accent-300"),V="shrink-0 text-muted-foreground";function W(){if("undefined"==typeof document)return null;let a=document.querySelector("[data-instance-id]");return a?.getAttribute("data-instance-id")?.trim()||null}function X(a){if("undefined"==typeof document)return!1;let b=Array.from(document.querySelectorAll('[data-testid="message-input-textarea"]'));if(0===b.length)return!1;let c=document.activeElement,d=b.find(a=>a===c)??b[0],e=d.value,f=""===e.trim()?a:`${e}
|
|
27
27
|
|
|
28
28
|
${a}`,g=Object.getOwnPropertyDescriptor(HTMLTextAreaElement.prototype,"value")?.set;return g?g.call(d,f):d.value=f,d.dispatchEvent(new Event("input",{bubbles:!0})),d.focus(),d.setSelectionRange(f.length,f.length),!0}async function Y(a,b,c){try{let[d,e]=await Promise.all([fetch(`/api/worktrees/${a}/cli-reference`),fetch(`/api/worktrees/${a}/resolve-target?instance=${encodeURIComponent(b.id)}`)]);if(!d.ok||!e.ok)return null;let[f,g]=await Promise.all([d.json(),e.json()]);return(0,O.Bz)({binary:f.binary,worktreeId:f.worktreeId,instanceId:g.instanceId,instanceLabel:b.alias,toolLabel:(0,P.oo)(g.cliToolId),portPrefix:f.portPrefix,locale:c})}catch{return null}}let Z={ja:{heading:"委任 (/delegate)",menuItem:"委任方法をコンポーザーに挿入",inserted:"委任方法をコンポーザーに挿入しました",self:"自分自身には委任できません",noComposer:"コンポーザーが見つかりません。worktree 画面を開いてから実行してください",failed:"委任方法を作成できませんでした"},en:{heading:"Delegate (/delegate)",menuItem:"Insert delegation brief into the composer",inserted:"Delegation brief inserted into the composer",self:"That is this session — nothing to delegate to",noComposer:"No composer on screen. Open a worktree screen and try again",failed:"Could not build the delegation brief"}};function $(){let{open:a,setOpen:b}=(0,E.C)(),{setOpen:c}=(0,F.K)(),l=(0,g.useRouter)(),m=(0,g.usePathname)(),n=(0,h.Ym)(),o=(0,i.c)("commandPalette"),p=(0,i.c)("common"),{theme:q,setTheme:r}=(0,j.D)(),{setSize:O,isMobile:T}=(0,G.Ps)(),{currentLocale:$,switchLocale:_}=(0,J.g)(),aa=(0,H.rC)(),{showToast:ab}=(0,N.dj)(),[ac,ad]=(0,e.useState)(!1),[ae,af]=(0,e.useState)(""),[ag,ah]=(0,e.useState)([]),ai=(0,e.useRef)(null);(0,e.useRef)(null),(0,e.useRef)(a);let aj=(0,e.useCallback)((a,c)=>{c&&ah(a=>(function(a,b){let c=a.filter(a=>a.kind!==b.kind||a.id!==b.id),d=[b,...c].slice(0,8);try{localStorage.setItem("cm.palette.recents",JSON.stringify(d))}catch{}return d})(a,c)),b(!1),a()},[b]),ak=(0,e.useCallback)(async a=>{let b=Z["ja"===n?"ja":"en"];if(function(a){let b=/^\/worktrees\/([^/?#]+)/.exec(a??"");return b?decodeURIComponent(b[1]):null}(m)===a.worktree.id&&W()===a.instance.id)return void ab(b.self,"info");let c=await Y(a.worktree.id,a.instance,n);if(null===c)return void ab(b.failed,"error");let d=X(c);ab(d?b.inserted:b.noComposer,d?"success":"error")},[n,m,ab]),al=(0,e.useCallback)(async()=>{try{await K.Rx.sync(),await aa?.refresh?.(),ab(o("actions.syncSuccess"),"success")}catch{ab(o("actions.syncError"),"error")}},[aa,ab,o]),am="dark"===q,an=""===ae.trim(),ao=aa?.error??null,ap=aa?.isLoading??!1,aq=ao?[]:aa?.worktrees??[],ar=aq.length>0,as=!ao&&ap&&0===aq.length,at=!function(a){let b=a.trim().toLowerCase();return""!==b&&(b.startsWith("/")||b.includes("delegate"))}(ae)?[]:function(a){let b=[];for(let c of a)for(let a of c.agentInstances?.length?c.agentInstances:c.cliToolId?[{id:c.cliToolId,cliTool:c.cliToolId,alias:(0,P.oo)(c.cliToolId),order:0}]:[])b.push({worktree:c,instance:a});return b}(aq),au=Z["ja"===n?"ja":"en"],av=[...aq].sort((a,b)=>{let c=+!!a.isSessionRunning,d=+!!b.isSessionRunning;if(c!==d)return d-c;let e=a.updatedAt?new Date(a.updatedAt).getTime():0;return(b.updatedAt?new Date(b.updatedAt).getTime():0)-e}),aw=an?av.slice(0,8):av,ax=[{id:"theme",label:am?o("actions.toLight"):o("actions.toDark"),icon:am?s.A:t.A,run:()=>r(am?"light":"dark")},...T?[]:I.Uf.map(a=>({id:`displaysize:${a}`,label:`${o("actions.displaySizePrefix")}: ${p(`displaySize.${a}`)}`,icon:u.A,run:()=>O(a)})),{id:"sync",label:o("actions.syncRepositories"),icon:v.A,run:()=>{al()}},{id:"locale",label:o("actions.switchLanguage"),icon:w.A,run:()=>_("ja"===$?"en":"ja")},{id:"github",label:o("actions.openGitHub"),icon:x.A,run:()=>window.open("https://github.com/kewton/MyCodeBranchDesk","_blank","noopener,noreferrer")},{id:"keyboardShortcuts",label:o("actions.keyboardShortcuts"),icon:y.A,run:()=>c(!0)}],ay=an?ag.map(a=>{if("nav"===a.kind){let b=Q.find(b=>b.key===a.id);if(!b)return null;let c=R[b.key],e=p(`nav.${b.key}`);return{id:`nav-${b.key}`,value:`recent nav ${b.key}`,node:(0,d.jsxs)(d.Fragment,{children:[c&&(0,d.jsx)(c,{size:16,className:V,"aria-hidden":"true"}),(0,d.jsx)("span",{className:"truncate",children:e})]}),onSelect:()=>aj(()=>l.push(b.href),{kind:"nav",id:b.key})}}if("worktree"===a.kind){let b=aq.find(b=>b.id===a.id);if(!b)return null;let c=b.repositoryDisplayName||b.repositoryName||"",e=b.branch||b.name;return{id:`worktree-${b.id}`,value:`recent worktree ${b.id}`,node:(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(z.A,{size:16,className:V,"aria-hidden":"true"}),(0,d.jsx)("span",{className:"truncate",children:e}),c&&(0,d.jsx)("span",{className:"ml-auto truncate pl-2 text-xs text-muted-foreground",children:c}),(0,d.jsx)(L.m,{status:S(b),size:"sm",className:c?"ml-2":"ml-auto"})]}),onSelect:()=>aj(()=>l.push(`/worktrees/${b.id}`),{kind:"worktree",id:b.id})}}let b=ax.find(b=>b.id===a.id);if(!b)return null;let c=b.icon;return{id:`action-${b.id}`,value:`recent action ${b.id}`,node:(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(c,{size:16,className:V,"aria-hidden":"true"}),(0,d.jsx)("span",{className:"truncate",children:b.label})]}),onSelect:()=>aj(b.run,{kind:"action",id:b.id})}}).filter(a=>null!==a):[];return ac?(0,f.createPortal)((0,d.jsx)(d.Fragment,{children:a&&(0,d.jsxs)("div",{className:"fixed inset-0 overflow-y-auto",style:{zIndex:D.M.MODAL},"data-testid":"command-palette",children:[(0,d.jsx)("div",{"data-state":"open","aria-hidden":"true",className:"fixed inset-0 bg-black/40 backdrop-blur-sm transition-opacity data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:duration-200",onClick:()=>b(!1)}),(0,d.jsx)("div",{className:"relative flex min-h-full items-start justify-center p-4 pt-[15vh]",children:(0,d.jsx)("div",{"data-state":"open","data-testid":"command-palette-panel",className:(0,C.cn)("relative w-full max-w-lg overflow-hidden rounded-xl bg-surface/95 shadow-2xl ring-1 ring-border backdrop-blur-xl","data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 data-[state=open]:duration-200"),children:(0,d.jsxs)(k.uB,{label:o("title"),className:(0,C.cn)("flex flex-col","[&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:pb-1 [&_[cmdk-group-heading]]:pt-2","[&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground"),children:[(0,d.jsxs)("div",{className:"flex items-center gap-2 border-b border-border px-3",children:[(0,d.jsx)(A.A,{size:16,strokeWidth:2,"aria-hidden":"true",className:"shrink-0 text-muted-foreground"}),(0,d.jsx)(k.uB.Input,{ref:ai,value:ae,onValueChange:af,placeholder:o("placeholder"),"data-testid":"command-palette-input",className:"flex-1 bg-transparent py-3 text-sm text-foreground outline-none placeholder:text-muted-foreground"})]}),(0,d.jsxs)(k.uB.List,{className:"max-h-[min(60vh,360px)] overflow-y-auto p-2",children:[(0,d.jsx)(k.uB.Empty,{"data-testid":"command-palette-empty",className:"py-6 text-center text-sm text-muted-foreground",children:o("empty")}),as&&(0,d.jsx)(k.uB.Loading,{"data-testid":"command-palette-loading",className:"py-6 text-center text-sm text-muted-foreground",children:o("loading")}),ay.length>0&&(0,d.jsx)(k.uB.Group,{heading:o("groups.recent"),children:ay.map(a=>(0,d.jsx)(k.uB.Item,{value:a.value,onSelect:a.onSelect,className:U,children:a.node},a.id))}),(0,d.jsx)(k.uB.Group,{heading:o("groups.navigation"),children:Q.map(a=>{let b=p(`nav.${a.key}`),c=R[a.key];return(0,d.jsxs)(k.uB.Item,{value:`nav ${b} ${a.href}`,onSelect:()=>aj(()=>l.push(a.href),{kind:"nav",id:a.key}),className:U,children:[c&&(0,d.jsx)(c,{size:16,className:V,"aria-hidden":"true"}),(0,d.jsx)("span",{className:"truncate",children:b})]},a.key)})}),ar&&(function(a){let b=new Map;for(let c of a){let a=c.repositoryDisplayName||c.repositoryName||"",d=a||"\0unnamed",e=b.get(d);e?e.worktrees.push(c):b.set(d,{key:d,repository:a,worktrees:[c]})}return[...b.values()]})(aw).map(a=>(0,d.jsx)(k.uB.Group,{heading:a.repository||o("groups.worktrees"),children:a.worktrees.map(b=>{let c=b.branch||b.name;return(0,d.jsxs)(k.uB.Item,{value:`worktree ${a.repository} ${c} ${b.name} ${b.id}`,onSelect:()=>aj(()=>l.push(`/worktrees/${b.id}`),{kind:"worktree",id:b.id}),className:U,children:[(0,d.jsx)(z.A,{size:16,className:V,"aria-hidden":"true"}),(0,d.jsx)("span",{className:"truncate",children:c}),(0,d.jsx)(L.m,{status:S(b),size:"sm",className:"ml-auto"})]},b.id)})},a.key)),at.length>0&&(0,d.jsx)(k.uB.Group,{heading:au.heading,children:at.map(a=>{let b=a.worktree.branch||a.worktree.name;return(0,d.jsxs)(k.uB.Item,{"data-testid":`palette-delegate-${a.worktree.id}-${a.instance.id}`,value:`/delegate ${a.worktree.id} ${a.instance.id} ${a.instance.alias} ${b}`,onSelect:()=>aj(()=>{ak(a)}),className:U,children:[(0,d.jsx)(B.A,{size:16,className:V,"aria-hidden":"true"}),(0,d.jsx)("span",{className:"truncate",children:a.instance.alias}),(0,d.jsxs)("span",{className:"ml-auto truncate pl-2 text-xs text-muted-foreground",children:[b," / ",a.instance.id]})]},`${a.worktree.id}:${a.instance.id}`)})}),(0,d.jsx)(k.uB.Group,{heading:o("groups.actions"),children:ax.map(a=>{let b=a.icon;return(0,d.jsxs)(k.uB.Item,{value:`action ${a.id} ${a.label}`,onSelect:()=>aj(a.run,{kind:"action",id:a.id}),className:U,children:[(0,d.jsx)(b,{size:16,className:V,"aria-hidden":"true"}),(0,d.jsx)("span",{className:"truncate",children:a.label})]},a.id)})})]}),(0,d.jsxs)("div",{className:"flex items-center gap-3 border-t border-border bg-surface-2 px-3 py-2 text-[11px] text-muted-foreground",children:[(0,d.jsxs)("span",{className:"flex items-center gap-1",children:[(0,d.jsx)(M.u,{children:"↑"}),(0,d.jsx)(M.u,{children:"↓"}),o("footer.navigate")]}),(0,d.jsxs)("span",{className:"flex items-center gap-1",children:[(0,d.jsx)(M.u,{children:"↵"}),o("footer.select")]}),(0,d.jsxs)("span",{className:"flex items-center gap-1",children:[(0,d.jsx)(M.u,{children:"esc"}),o("footer.close")]})]})]})})})]})}),document.body):null}},77560:(a,b,c)=>{c.d(b,{$h:()=>l,DR:()=>e,IH:()=>j,Iu:()=>d,Nb:()=>m,SD:()=>f,_d:()=>i,bm:()=>n,ks:()=>h,t7:()=>k,z7:()=>g});let d=7e3,e=["in_review","approval","stalled"],f="in_review",g="filter",h=`/review?${g}=approval`;function i(a){return a&&e.includes(a)?a:null}let j=["claude","codex","copilot","antigravity","opencode"],k=1e3,l=5,m=100,n=1e3},81497:(a,b,c)=>{c.d(b,{nR:()=>g});var d=c(21124),e=c(38301),f=c(23312);function g({content:a,delay:b=200,className:c,children:g,metadata:h}){let i=(0,e.useRef)(null),j=(0,e.useRef)(null),k=(0,e.useRef)(null),l=(0,e.useRef)(null),[m,n]=(0,e.useState)(!1),[o,p]=(0,e.useState)({top:-9999,left:-9999}),q=(0,e.useCallback)(()=>{null!==k.current&&(clearTimeout(k.current),k.current=null)},[]),r=(0,e.useCallback)(()=>{let a=i.current;a&&(a.scrollWidth>a.clientWidth||h)&&(q(),k.current=setTimeout(()=>{let b=a.getBoundingClientRect(),c=b.left;l.current={top:b.top,bottom:b.bottom},p({top:b.bottom+4,left:Math.min(b.left,c)}),n(!0),k.current=null},b))},[q,b,h]),s=(0,e.useCallback)(()=>{q(),n(!1)},[q]);return(0,d.jsxs)("span",{ref:i,className:c,onMouseEnter:r,onMouseLeave:s,children:[g??a,m&&"undefined"!=typeof document&&(0,f.createPortal)((0,d.jsxs)("span",{ref:j,role:"tooltip","aria-hidden":"true",className:"fixed z-[9999] max-w-md px-2 py-1 text-xs font-medium rounded bg-foreground text-background shadow-lg pointer-events-none",style:{top:o.top,left:o.left},children:[(0,d.jsx)("span",{className:"block break-all",children:a}),h&&(0,d.jsx)("span",{className:"mt-0.5 block whitespace-pre-line font-normal text-background/70",children:h})]}),document.body)]})}},85678:(a,b,c)=>{c.d(b,{Bz:()=>f,kj:()=>e,wx:()=>d});let d=["send","wait","capture","respond"];function e(a){let{binary:b,worktreeId:c,instanceId:d,messagePlaceholder:e}=a,f=null!=a.portPrefix&&3e3!==a.portPrefix?`CM_PORT=${a.portPrefix} `:"",g=`--instance ${d}`,h=`${f}${b}`;return{send:`${h} send ${c} "${e}" ${g}`,wait:`${h} wait ${c} ${g} --on-prompt human`,capture:`${h} capture ${c} ${g}`,respond:`${h} respond ${c} "1" ${g}`}}function f(a){let{binary:b,worktreeId:c,instanceId:d,instanceLabel:e,toolLabel:f}=a,g=null!=a.portPrefix&&3e3!==a.portPrefix?`CM_PORT=${a.portPrefix} `:"",h=`${g}${b}`,i=`--instance ${d}`,j="ja"===a.locale?"ja":"en",k=`${h} capture ${c} ${i} --pane --tail 60`,l=`${h} ask ${c} ${i} "<request>" --async`;if("ja"===j){let a=`${h} ask ${c} ${i} "<依頼文>" --timeout 1800`;return`## 別セッション「${e}」への委任
|
|
29
29
|
- 宛先: worktree \`${c}\` / instance \`${d}\`(${f})
|