cuelo 0.9.0 → 0.9.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.next/BUILD_ID +1 -1
- package/.next/app-path-routes-manifest.json +11 -8
- package/.next/build-manifest.json +2 -2
- package/.next/prerender-manifest.json +3 -3
- package/.next/required-server-files.js +4 -2
- package/.next/required-server-files.json +4 -2
- package/.next/routes-manifest.json +20 -0
- package/.next/server/app/_global-error/page.js +3 -3
- package/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/.next/server/app/_global-error.html +1 -1
- package/.next/server/app/_global-error.rsc +1 -1
- package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/_not-found/page.js +2 -2
- package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/server/app/_not-found.html +1 -1
- package/.next/server/app/_not-found.rsc +3 -3
- package/.next/server/app/_not-found.segments/_full.segment.rsc +3 -3
- package/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_index.segment.rsc +3 -3
- package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/api/agent/[id]/account/route.js +1 -1
- package/.next/server/app/api/agent/[id]/account/route.js.nft.json +1 -1
- package/.next/server/app/api/agent/[id]/bash-output/route.js +1 -1
- package/.next/server/app/api/agent/[id]/bash-output/route.js.nft.json +1 -1
- package/.next/server/app/api/agent/[id]/events/route.js +2 -2
- package/.next/server/app/api/agent/[id]/events/route.js.nft.json +1 -1
- package/.next/server/app/api/agent/[id]/route.js +1 -1
- package/.next/server/app/api/agent/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/agent/new/route.js +1 -1
- package/.next/server/app/api/agent/new/route.js.nft.json +1 -1
- package/.next/server/app/api/agent/running/route.js +1 -1
- package/.next/server/app/api/agent/running/route.js.nft.json +1 -1
- package/.next/server/app/api/attachment-settings/route.js +1 -0
- package/.next/server/app/api/attachment-settings/route.js.nft.json +1 -0
- package/.next/server/app/api/attachment-settings/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/attachments/[id]/transcription/route.js +2 -0
- package/.next/server/app/api/attachments/[id]/transcription/route.js.nft.json +1 -0
- package/.next/server/app/api/attachments/[id]/transcription/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/attachments/draft/route.js +1 -0
- package/.next/server/app/api/attachments/draft/route.js.nft.json +1 -0
- package/.next/server/app/api/attachments/draft/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/attachments/route.js +28 -5
- package/.next/server/app/api/attachments/route.js.nft.json +1 -1
- package/.next/server/app/api/auth/all-providers/route.js +1 -1
- package/.next/server/app/api/auth/api-key/[provider]/route.js +1 -1
- package/.next/server/app/api/auth/login/[provider]/route.js +2 -2
- package/.next/server/app/api/auth/logout/[provider]/route.js +1 -1
- package/.next/server/app/api/auth/providers/route.js +1 -1
- package/.next/server/app/api/cwd/browse/route.js +1 -1
- package/.next/server/app/api/cwd/validate/route.js +1 -1
- package/.next/server/app/api/cwd/validate/route.js.nft.json +1 -1
- package/.next/server/app/api/default-cwd/route.js +1 -1
- package/.next/server/app/api/default-cwd/route.js.nft.json +1 -1
- package/.next/server/app/api/display-settings/route.js +1 -1
- package/.next/server/app/api/display-settings/route.js.nft.json +1 -1
- package/.next/server/app/api/document-text/route.js +4 -4
- package/.next/server/app/api/experiments/route.js +1 -1
- package/.next/server/app/api/file-index/route.js +1 -1
- package/.next/server/app/api/file-index/route.js.nft.json +1 -1
- package/.next/server/app/api/files/[...path]/route.js +2 -2
- package/.next/server/app/api/files/[...path]/route.js.nft.json +1 -1
- package/.next/server/app/api/git/diff/route.js +2 -2
- package/.next/server/app/api/git/diff/route.js.nft.json +1 -1
- package/.next/server/app/api/git/status/route.js +2 -2
- package/.next/server/app/api/git/status/route.js.nft.json +1 -1
- package/.next/server/app/api/gpt6/handles/route.js +1 -1
- package/.next/server/app/api/gpt6/handles/route.js.nft.json +1 -1
- package/.next/server/app/api/gpt6/reply/route.js +1 -1
- package/.next/server/app/api/gpt6/reply/route.js.nft.json +1 -1
- package/.next/server/app/api/gpt6/token/route.js +1 -1
- package/.next/server/app/api/gpt6/token/route.js.nft.json +1 -1
- package/.next/server/app/api/gpt6/web6-session/route.js +1 -1
- package/.next/server/app/api/gpt6/web6-session/route.js.nft.json +1 -1
- package/.next/server/app/api/home/route.js +1 -1
- package/.next/server/app/api/live/call/[callId]/route.js +1 -1
- package/.next/server/app/api/live/call/[callId]/route.js.nft.json +1 -1
- package/.next/server/app/api/live/character-voice/route.js +1 -1
- package/.next/server/app/api/live/character-voice/route.js.nft.json +1 -1
- package/.next/server/app/api/live/events/route.js +2 -2
- package/.next/server/app/api/live/events/route.js.nft.json +1 -1
- package/.next/server/app/api/live/offer/route.js +1 -1
- package/.next/server/app/api/live/offer/route.js.nft.json +1 -1
- package/.next/server/app/api/live/voices/route.js +1 -1
- package/.next/server/app/api/live/voices/route.js.nft.json +1 -1
- package/.next/server/app/api/lounge/events/route.js +2 -2
- package/.next/server/app/api/lounge/events/route.js.nft.json +1 -1
- package/.next/server/app/api/lounge/route.js +1 -1
- package/.next/server/app/api/lounge/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/route.js +2 -2
- package/.next/server/app/api/mcp/route.js.nft.json +1 -1
- package/.next/server/app/api/model-roles/route.js +1 -1
- package/.next/server/app/api/model-roles/route.js.nft.json +1 -1
- package/.next/server/app/api/models/route.js +1 -1
- package/.next/server/app/api/models/route.js.nft.json +1 -1
- package/.next/server/app/api/models-config/catalog/route.js +1 -1
- package/.next/server/app/api/models-config/discover/route.js +1 -1
- package/.next/server/app/api/models-config/route.js +4 -4
- package/.next/server/app/api/models-config/test/route.js +1 -1
- package/.next/server/app/api/office-avatars/[id]/route.js +1 -1
- package/.next/server/app/api/office-avatars/route.js +1 -1
- package/.next/server/app/api/plugins/route.js +1 -1
- package/.next/server/app/api/plugins/route.js.nft.json +1 -1
- package/.next/server/app/api/project-trust/route.js +1 -1
- package/.next/server/app/api/project-trust/route.js.nft.json +1 -1
- package/.next/server/app/api/projects/route.js +1 -1
- package/.next/server/app/api/projects/route.js.nft.json +1 -1
- package/.next/server/app/api/runs/[runId]/route.js +1 -1
- package/.next/server/app/api/runs/route.js +1 -1
- package/.next/server/app/api/sessions/[id]/auto-name/route.js +1 -1
- package/.next/server/app/api/sessions/[id]/auto-name/route.js.nft.json +1 -1
- package/.next/server/app/api/sessions/[id]/context/route.js +1 -1
- package/.next/server/app/api/sessions/[id]/context/route.js.nft.json +1 -1
- package/.next/server/app/api/sessions/[id]/entries/[entryId]/thinking/route.js +1 -1
- package/.next/server/app/api/sessions/[id]/entries/[entryId]/thinking/route.js.nft.json +1 -1
- package/.next/server/app/api/sessions/[id]/export/route.js +1 -1
- package/.next/server/app/api/sessions/[id]/export/route.js.nft.json +1 -1
- package/.next/server/app/api/sessions/[id]/route.js +1 -1
- package/.next/server/app/api/sessions/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/sessions/[id]/state/route.js +1 -1
- package/.next/server/app/api/sessions/[id]/state/route.js.nft.json +1 -1
- package/.next/server/app/api/sessions/route.js +1 -1
- package/.next/server/app/api/sessions/route.js.nft.json +1 -1
- package/.next/server/app/api/sessions/search/route.js +1 -1
- package/.next/server/app/api/sessions/search/route.js.nft.json +1 -1
- package/.next/server/app/api/settings/route.js +1 -1
- package/.next/server/app/api/settings/route.js.nft.json +1 -1
- package/.next/server/app/api/sidecars/[service]/[...path]/route.js +1 -1
- package/.next/server/app/api/skills/check/route.js +1 -1
- package/.next/server/app/api/skills/check/route.js.nft.json +1 -1
- package/.next/server/app/api/skills/install/route.js +2 -2
- package/.next/server/app/api/skills/install/route.js.nft.json +1 -1
- package/.next/server/app/api/skills/route.js +2 -2
- package/.next/server/app/api/skills/route.js.nft.json +1 -1
- package/.next/server/app/api/skills/search/route.js +1 -1
- package/.next/server/app/api/skills/update/route.js +1 -1
- package/.next/server/app/api/skills/update/route.js.nft.json +1 -1
- package/.next/server/app/api/theme/route.js +1 -1
- package/.next/server/app/api/theme/route.js.nft.json +1 -1
- package/.next/server/app/api/tool-image/route.js +1 -1
- package/.next/server/app/api/tool-image/route.js.nft.json +1 -1
- package/.next/server/app/api/update-maintenance/route.js +3 -3
- package/.next/server/app/api/update-maintenance/route.js.nft.json +1 -1
- package/.next/server/app/api/updates/route.js +1 -1
- package/.next/server/app/api/web-access/recovery/route.js +1 -1
- package/.next/server/app/api/web-access/route.js +1 -1
- package/.next/server/app/api/web6/consults/route.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/favicon.ico/route.js +1 -1
- package/.next/server/app/index.html +1 -1
- package/.next/server/app/index.rsc +5 -5
- package/.next/server/app/index.segments/__PAGE__.segment.rsc +3 -3
- package/.next/server/app/index.segments/_full.segment.rsc +5 -5
- package/.next/server/app/index.segments/_head.segment.rsc +1 -1
- package/.next/server/app/index.segments/_index.segment.rsc +3 -3
- package/.next/server/app/index.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/manifest.webmanifest/route.js +2 -2
- package/.next/server/app/office/page.js +2 -2
- package/.next/server/app/office/page_client-reference-manifest.js +1 -1
- package/.next/server/app/office-preview/page.js +2 -2
- package/.next/server/app/office-preview/page_client-reference-manifest.js +1 -1
- package/.next/server/app/office-preview.html +1 -1
- package/.next/server/app/office-preview.rsc +3 -3
- package/.next/server/app/office-preview.segments/_full.segment.rsc +3 -3
- package/.next/server/app/office-preview.segments/_head.segment.rsc +1 -1
- package/.next/server/app/office-preview.segments/_index.segment.rsc +3 -3
- package/.next/server/app/office-preview.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/office-preview.segments/office-preview/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/office-preview.segments/office-preview.segment.rsc +1 -1
- package/.next/server/app/office.html +1 -1
- package/.next/server/app/office.rsc +5 -5
- package/.next/server/app/office.segments/_full.segment.rsc +5 -5
- package/.next/server/app/office.segments/_head.segment.rsc +1 -1
- package/.next/server/app/office.segments/_index.segment.rsc +3 -3
- package/.next/server/app/office.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/office.segments/office/__PAGE__.segment.rsc +3 -3
- package/.next/server/app/office.segments/office.segment.rsc +1 -1
- package/.next/server/app/page.js +2 -2
- package/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/server/app/recover/page.js +2 -2
- package/.next/server/app/recover/page_client-reference-manifest.js +1 -1
- package/.next/server/app/recover.html +1 -1
- package/.next/server/app/recover.rsc +3 -3
- package/.next/server/app/recover.segments/_full.segment.rsc +3 -3
- package/.next/server/app/recover.segments/_head.segment.rsc +1 -1
- package/.next/server/app/recover.segments/_index.segment.rsc +3 -3
- package/.next/server/app/recover.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/recover.segments/recover/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/recover.segments/recover.segment.rsc +1 -1
- package/.next/server/app-paths-manifest.json +11 -8
- package/.next/server/chunks/1517.js +1 -1
- package/.next/server/chunks/2651.js +1 -1
- package/.next/server/chunks/4649.js +1 -1
- package/.next/server/chunks/5270.js +8 -0
- package/.next/server/chunks/5489.js +14 -14
- package/.next/server/chunks/5582.js +6 -6
- package/.next/server/chunks/6429.js +3 -3
- package/.next/server/chunks/7121.js +4 -0
- package/.next/server/chunks/7362.js +1 -1
- package/.next/server/chunks/8741.js +1 -0
- package/.next/server/chunks/877.js +1 -1
- package/.next/server/functions-config-manifest.json +9 -2
- package/.next/server/instrumentation.js +1 -0
- package/.next/server/instrumentation.js.nft.json +1 -0
- package/.next/server/middleware-build-manifest.js +1 -1
- package/.next/server/middleware.js +4 -4
- package/.next/server/pages/404.html +1 -1
- package/.next/server/pages/500.html +1 -1
- package/.next/server/server-reference-manifest.json +1 -1
- package/.next/static/ZY07mKbniJf7UEsQUdUMV/_buildManifest.js +1 -0
- package/.next/static/chunks/6110-691c0f77641fc07e.js +1 -0
- package/.next/static/chunks/9575-2bfc351b31f30a41.js +22 -0
- package/.next/static/chunks/app/_global-error/page-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/api/agent/[id]/account/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/api/agent/[id]/bash-output/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/api/agent/[id]/events/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/api/agent/[id]/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/api/agent/new/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/api/agent/running/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/api/attachment-settings/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/api/attachments/[id]/transcription/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/api/attachments/draft/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/api/attachments/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/api/auth/all-providers/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/api/auth/api-key/[provider]/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/api/auth/login/[provider]/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/api/auth/logout/[provider]/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/api/auth/providers/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/api/cwd/browse/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/api/cwd/validate/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/api/default-cwd/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/api/display-settings/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/api/document-text/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/api/experiments/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/api/file-index/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/api/files/[...path]/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/api/git/diff/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/api/git/status/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/api/gpt6/handles/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/api/gpt6/reply/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/api/gpt6/token/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/api/gpt6/web6-session/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/api/home/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/api/live/call/[callId]/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/api/live/character-voice/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/api/live/events/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/api/live/offer/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/api/live/voices/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/api/lounge/events/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/api/lounge/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/api/mcp/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/api/model-roles/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/api/models/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/api/models-config/catalog/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/api/models-config/discover/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/api/models-config/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/api/models-config/test/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/api/office-avatars/[id]/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/api/office-avatars/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/api/plugins/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/api/project-trust/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/api/projects/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/api/runs/[runId]/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/api/runs/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/auto-name/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/context/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/entries/[entryId]/thinking/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/export/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/state/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/api/sessions/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/api/sessions/search/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/api/settings/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/api/sidecars/[service]/[...path]/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/api/skills/check/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/api/skills/install/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/api/skills/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/api/skills/search/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/api/skills/update/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/api/theme/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/api/tool-image/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/api/update-maintenance/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/api/updates/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/api/web-access/recovery/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/api/web-access/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/api/web6/consults/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/api/worktrees/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/app/{layout-3adbfd44301cba82.js → layout-8ee6fa0157a0b288.js} +1 -1
- package/.next/static/chunks/app/manifest.webmanifest/route-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/{main-2603b128da53b28c.js → main-26b32c580fb6231f.js} +3 -3
- package/.next/static/chunks/next/dist/client/components/builtin/app-error-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/forbidden-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/not-found-6b1496af498bb4fd.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-6b1496af498bb4fd.js +1 -0
- package/.next/static/css/81a05eb6255ef12e.css +1 -0
- package/.next/trace +108 -107
- package/.next/trace-build +1 -1
- package/.next/types/app/api/attachment-settings/route.ts +351 -0
- package/.next/types/app/api/attachments/[id]/transcription/route.ts +351 -0
- package/.next/types/app/api/attachments/draft/route.ts +351 -0
- package/.next/types/routes.d.ts +4 -1
- package/.next/types/validator.ts +27 -0
- package/README.md +2 -1
- package/Tools/CUELO_Setup/files/native-runtime-patch.js +1 -1
- package/Tools/OMP_Global_Config/patches/apply-core-patch.mjs +180 -0
- package/next.config.ts +1 -0
- package/package.json +4 -1
- package/.next/static/chunks/6110-dffa6a7b1ada31e6.js +0 -1
- package/.next/static/chunks/9575-09e3873e0ee5ecfc.js +0 -22
- package/.next/static/chunks/app/_global-error/page-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/app/api/agent/[id]/account/route-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/app/api/agent/[id]/bash-output/route-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/app/api/agent/[id]/events/route-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/app/api/agent/[id]/route-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/app/api/agent/new/route-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/app/api/agent/running/route-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/app/api/attachments/route-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/app/api/auth/all-providers/route-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/app/api/auth/api-key/[provider]/route-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/app/api/auth/login/[provider]/route-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/app/api/auth/logout/[provider]/route-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/app/api/auth/providers/route-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/app/api/cwd/browse/route-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/app/api/cwd/validate/route-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/app/api/default-cwd/route-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/app/api/display-settings/route-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/app/api/document-text/route-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/app/api/experiments/route-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/app/api/file-index/route-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/app/api/files/[...path]/route-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/app/api/git/diff/route-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/app/api/git/status/route-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/app/api/gpt6/handles/route-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/app/api/gpt6/reply/route-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/app/api/gpt6/token/route-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/app/api/gpt6/web6-session/route-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/app/api/home/route-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/app/api/live/call/[callId]/route-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/app/api/live/character-voice/route-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/app/api/live/events/route-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/app/api/live/offer/route-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/app/api/live/voices/route-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/app/api/lounge/events/route-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/app/api/lounge/route-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/app/api/mcp/route-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/app/api/model-roles/route-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/app/api/models/route-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/app/api/models-config/catalog/route-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/app/api/models-config/discover/route-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/app/api/models-config/route-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/app/api/models-config/test/route-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/app/api/office-avatars/[id]/route-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/app/api/office-avatars/route-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/app/api/plugins/route-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/app/api/project-trust/route-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/app/api/projects/route-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/app/api/runs/[runId]/route-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/app/api/runs/route-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/app/api/sessions/[id]/auto-name/route-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/app/api/sessions/[id]/context/route-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/app/api/sessions/[id]/entries/[entryId]/thinking/route-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/app/api/sessions/[id]/export/route-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/app/api/sessions/[id]/route-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/app/api/sessions/[id]/state/route-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/app/api/sessions/route-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/app/api/sessions/search/route-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/app/api/settings/route-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/app/api/sidecars/[service]/[...path]/route-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/app/api/skills/check/route-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/app/api/skills/install/route-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/app/api/skills/route-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/app/api/skills/search/route-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/app/api/skills/update/route-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/app/api/theme/route-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/app/api/tool-image/route-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/app/api/update-maintenance/route-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/app/api/updates/route-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/app/api/web-access/recovery/route-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/app/api/web-access/route-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/app/api/web6/consults/route-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/app/api/worktrees/route-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/app/manifest.webmanifest/route-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/next/dist/client/components/builtin/app-error-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/next/dist/client/components/builtin/forbidden-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/next/dist/client/components/builtin/not-found-b73c548944bb1320.js +0 -1
- package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-b73c548944bb1320.js +0 -1
- package/.next/static/css/1a4cea7126dfb757.css +0 -1
- package/.next/static/do0UuZKXEeG2rQnEL-f1I/_buildManifest.js +0 -1
- /package/.next/static/{do0UuZKXEeG2rQnEL-f1I → ZY07mKbniJf7UEsQUdUMV}/_ssgManifest.js +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[6110],{2730:(e,t,i)=>{"use strict";function n(e,t,i,a={}){let o=i[e]?.[t]??i.en?.[t];return void 0===o?t:function(e,t={}){return e.replace(/\{([\w.-]+)\}/g,(e,i)=>{let n=t[i];return void 0===n?e:String(n)})}(o,a)}function a(e,t,i=new Date){let n=(e instanceof Date?e:new Date(e)).getTime()-i.getTime(),o=Math.abs(n),[s,r]=o<6e4?["second",1e3]:o<36e5?["minute",6e4]:o<864e5?["hour",36e5]:["day",864e5],c=Math.round(n/r);return new Intl.RelativeTimeFormat(t,{numeric:"always"}).format(c,s)}i.d(t,{fw:()=>a,u0:()=>n})},3270:(e,t,i)=>{"use strict";function n(e){switch(e){case"working":return{spot:"desk",pose:"work"};case"waiting":return{spot:"desk",pose:"idle"};case"attention":return{spot:"lounge",pose:"wave"};default:return{spot:"lounge",pose:"idle"}}}function a(e,t){switch(e){case"running":return t?{spot:"desk",pose:"idle"}:{spot:"desk",pose:"work"};case"pending":return{spot:"desk",pose:"idle"};case"failed":return{spot:"desk",pose:"slump"};default:return{spot:"lounge",pose:"idle"}}}function o(e,t,i){let n=t.x-e.x,a=t.z-e.z,o=Math.hypot(n,a);if(o<=i)return{point:{x:t.x,z:t.z},arrived:!0};let s=i/o;return{point:{x:e.x+n*s,z:e.z+a*s},arrived:!1}}function s(e){return`rest:${e}`}i.d(t,{H:()=>h,H_:()=>n,Ow:()=>a,_E:()=>d,kn:()=>r,wC:()=>s,yA:()=>o});let r={x:-3.6,z:-.75},c=[{x:-2.85,z:-1.55},{x:-.95,z:-1.55},{x:.95,z:-1.55},{x:2.85,z:-1.55},{x:-1.9,z:.15},{x:0,z:.15},{x:1.9,z:.15}],l={x:2.85,z:1.75},d={couch:{x:-3.2,z:.92},couchWidth:1.42,armchair:{x:-2.05,z:.92},table:{x:-2.2,z:2.55},stool:.5,counter:{z:2.45}},u=[{pose:"sofa",point:{x:d.couch.x-.33,z:d.couch.z+.16},facing:0,to:null},{pose:"sofa",point:{x:d.couch.x+.33,z:d.couch.z+.16},facing:0,to:null},{pose:"sofa",point:{x:d.armchair.x,z:d.armchair.z+.16},facing:-.3,to:null},{pose:"sofa",point:{x:d.table.x-d.stool,z:d.table.z},facing:Math.PI/2,to:null},{pose:"sofa",point:{x:d.table.x+d.stool,z:d.table.z},facing:-Math.PI/2,to:null},{pose:"pace",point:{x:-3.15,z:2.05},facing:-Math.PI/2,to:{x:-3.15,z:2.95}},{pose:"pace",point:{x:-1.2,z:1.7},facing:.4,to:{x:-1.2,z:2.4}}];function h(e,t=c.length){let i=new Map;for(let n of e){let e=null!==n.seat&&n.seat>=0&&n.seat<t?n.seat:null,a=i.get(e)??[];a.push(n.key),i.set(e,a)}let n=[],a=new Map,o=(e,t,i)=>{let o=n.length,s=Math.max(1,Math.ceil(i.length/3));for(let a=0;a<s;a+=1){let o=Math.min(3,i.length-3*a);n.push({seat:e,center:{x:t.x,z:t.z-.62*a},width:Math.max(1,.54*o+.2),occupants:Math.max(0,o)})}i.forEach((n,s)=>{var r;let c,l,d=(r=i.length,l=Math.min(3,r-3*(c=Math.floor(s/3))),{x:(s%3-(l-1)/2)*.54,row:c});a.set(n,{seat:e,place:{point:{x:t.x+d.x,z:t.z-.62*d.row-.4},facing:0},deskIndex:o+d.row,lift:s%2})})};for(let e=0;e<t;e+=1)o(e,c[e%c.length],i.get(e)??[]);let s=i.get(null)??[];s.length>0&&o(null,l,s);let r=e.map((e,t)=>{let i=a.get(e.key);return{key:e.key,seat:i.seat,desk:i.place,deskIndex:i.deskIndex,bubbleLift:i.lift,lounge:{point:{x:-.55+t%4*.55,z:1.55+.55*Math.floor(t/4)},facing:.35}}}),d=[];for(let e=0;e<t;e+=1)(i.get(e)??[]).length>0||d.push({seat:e,...u[e%u.length]});return{desks:n,stations:r,rest:d}}},13994:(e,t,i)=>{"use strict";i.d(t,{v:()=>r});var n=i(12115),a=i(92176),o=i(2730);let s={ko:{"office.toOffice":"오피스","office.toOfficeTitle":"3D 사무실 화면을 새 탭에서 엽니다. 이 대화 화면은 그대로 남습니다","office.newTab":"새 탭에서 열림","office.toChat":"대화 화면","office.toChatTitle":"이 세션의 대화 화면으로 돌아갑니다","office.floor":"오피스 자리","office.floorSummary":"이 세션 참여 {count} \xb7 실행 중 {running}","office.seatEmpty":"이 세션 참여 없음","office.main":"Main","office.maker":"Maker","office.unnamed":"이름 없는 참여자","office.unnamedHint":"계정\xb7모델 기록으로 캐릭터를 특정할 근거가 없는 참여자입니다.","office.faceUnknown":"캐릭터 미확인","office.status.pending":"대기","office.status.running":"실행 중","office.status.completed":"실행 완료","office.status.failed":"실패","office.status.aborted":"중단","office.status.unknown":"상태 미확인","office.status.retrying":"재시도 중","office.notAccepted":"실행 완료는 Main 수용이 아닙니다. 수용 여부는 대화에서 확인하세요.","office.participants":"참여자","office.recipient":"받는 사람","office.recipientMain":"Main \xb7 {name}","office.showFloor":"사무실","office.tabTranscript":"대화 기록","office.tabFiles":"쓴 파일 {count}","office.loading":"기록 불러오는 중…","office.transcriptEmpty":"대화 내용이 없습니다.","office.archiveNote":"디스크 기록이라 본문만 보입니다.","office.filesEmpty":"성공한 write\xb7edit 기록이 아직 없습니다.","office.filesArchive":"디스크 기록에는 도구 결과가 없어 쓴 파일을 확인할 수 없습니다.","office.composerNote":"입력은 {name}에게 갑니다. 이 Maker에게 직접 보내지 않습니다.","office.backToMain":"Main 대화 보기","office.modelUnknown":"모델 미확인","office.currentStep":"현재 단계","office.makerRecord":"{name} 작업 기록","office.stage":"3D 사무실","office.stageHint":"참여자 캐릭터나 말풍선을 누르면 그 대상의 대화를 엽니다.","office.stageHintZoomed":"장면을 끌거나 화살표 버튼으로 둘러봅니다.","office.zoomFit":"전체 보기","office.viewControls":"사무실 보기 조작","office.zoomIn":"확대","office.zoomOut":"축소","office.zoomLevel":"{percent}%","office.zoomFitTitle":"사무실 전체가 보이게 되돌립니다","office.panUp":"위쪽 보기","office.panLeft":"왼쪽 보기","office.panRight":"오른쪽 보기","office.panDown":"아래쪽 보기","office.stageLoading":"사무실 불러오는 중…","office.stageNoWebgl":"이 브라우저에서 WebGL을 쓸 수 없어 3D 사무실 대신 자리 카드로 보여 줍니다.","office.stageAssetFailed":"3D 사무실 자산을 불러오지 못해 자리 카드로 보여 줍니다.","office.openChat":"{name} 대화 열기","office.motion.toDesk":"책상으로 가는 중","office.motion.toLounge":"쉬는 자리로 가는 중","office.motion.work":"책상에서 작업 중","office.motion.atDesk":"책상 곁에서 기다리는 중","office.motion.idle":"쉬는 자리에서 대기","office.motion.wave":"입력을 기다리며 부르는 중","office.motion.slump":"실패 뒤 책상 곁에 멈춤","office.retry":"다시 시도","office.absent":"참여 안 함","office.absentHint":"이 세션에 참여하지 않아 열 기록이 없습니다.","office.viewOnly":"기록 조회 전용","office.selectionGone":"고른 Maker가 이 세션 목록에서 사라져 Main 대화를 보여 줍니다."},en:{"office.toOffice":"Office","office.toOfficeTitle":"Open the 3D office in a new tab. This chat stays as it is","office.newTab":"opens in a new tab","office.toChat":"Chat view","office.toChatTitle":"Return to this session's chat view","office.floor":"Office seats","office.floorSummary":"In this session {count} \xb7 running {running}","office.seatEmpty":"Not in this session","office.main":"Main","office.maker":"Maker","office.unnamed":"Unnamed participants","office.unnamedHint":"No account or model record identifies a character for these participants.","office.faceUnknown":"Character unknown","office.status.pending":"Pending","office.status.running":"Running","office.status.completed":"Run finished","office.status.failed":"Failed","office.status.aborted":"Aborted","office.status.unknown":"Status unknown","office.status.retrying":"Retrying","office.notAccepted":"A finished run is not Main's acceptance. Check the chat for the verdict.","office.participants":"Participants","office.recipient":"Sending to","office.recipientMain":"Main \xb7 {name}","office.showFloor":"Office","office.tabTranscript":"Transcript","office.tabFiles":"Files written {count}","office.loading":"Loading the record…","office.transcriptEmpty":"No messages.","office.archiveNote":"Disk record: message text only.","office.filesEmpty":"No successful write or edit yet.","office.filesArchive":"The disk record has no tool results, so written files cannot be confirmed.","office.composerNote":"Your input goes to {name}, not directly to this Maker.","office.backToMain":"Show Main chat","office.modelUnknown":"Model unknown","office.currentStep":"Current step","office.makerRecord":"{name} work record","office.stage":"3D office","office.stageHint":"Click a participant or its bubble to open that chat.","office.stageHintZoomed":"Drag the scene or use the arrow buttons to look around.","office.zoomFit":"Fit to view","office.viewControls":"Office view controls","office.zoomIn":"Zoom in","office.zoomOut":"Zoom out","office.zoomLevel":"{percent}%","office.zoomFitTitle":"Fit the whole office in view","office.panUp":"Look up","office.panLeft":"Look left","office.panRight":"Look right","office.panDown":"Look down","office.stageLoading":"Loading the office…","office.stageNoWebgl":"WebGL is unavailable in this browser, so the office is shown as seat cards.","office.stageAssetFailed":"The 3D office assets failed to load, so the office is shown as seat cards.","office.openChat":"Open {name} chat","office.motion.toDesk":"Walking to the desk","office.motion.toLounge":"Walking to the lounge","office.motion.work":"Working at the desk","office.motion.atDesk":"Waiting by the desk","office.motion.idle":"Idle in the lounge","office.motion.wave":"Calling for your input","office.motion.slump":"Stopped by the desk after failing","office.retry":"Try again","office.absent":"Not in session","office.absentHint":"Not part of this session, so there is no record to open.","office.viewOnly":"View only","office.selectionGone":"The selected Maker left this session's list, so Main's chat is shown."},"zh-CN":{"office.toOffice":"办公室","office.toOfficeTitle":"在新标签页中打开 3D 办公室。此对话页面保持不变","office.newTab":"在新标签页中打开","office.toChat":"对话页面","office.toChatTitle":"返回此会话的对话页面","office.floor":"办公室座位","office.floorSummary":"本会话参与 {count} \xb7 运行中 {running}","office.seatEmpty":"未参与本会话","office.main":"Main","office.maker":"Maker","office.unnamed":"未命名参与者","office.unnamedHint":"没有账号或模型记录可以确定这些参与者对应的角色。","office.faceUnknown":"角色未确认","office.status.pending":"等待","office.status.running":"运行中","office.status.completed":"运行结束","office.status.failed":"失败","office.status.aborted":"已中止","office.status.unknown":"状态未确认","office.status.retrying":"重试中","office.notAccepted":"运行结束不等于 Main 已接受。请在对话中确认结论。","office.participants":"参与者","office.recipient":"发送给","office.recipientMain":"Main \xb7 {name}","office.showFloor":"办公室","office.tabTranscript":"对话记录","office.tabFiles":"写入的文件 {count}","office.loading":"正在加载记录…","office.transcriptEmpty":"没有消息。","office.archiveNote":"磁盘记录,仅显示正文。","office.filesEmpty":"还没有成功的 write\xb7edit 记录。","office.filesArchive":"磁盘记录没有工具结果,无法确认写入的文件。","office.composerNote":"输入发送给 {name},不会直接发给这个 Maker。","office.backToMain":"查看 Main 对话","office.modelUnknown":"模型未确认","office.currentStep":"当前步骤","office.makerRecord":"{name} 工作记录","office.stage":"3D 办公室","office.stageHint":"点击参与者角色或其气泡,即可打开该对象的对话。","office.stageHintZoomed":"拖动场景或使用方向按钮四处查看。","office.zoomFit":"全景","office.viewControls":"办公室视图控制","office.zoomIn":"放大","office.zoomOut":"缩小","office.zoomLevel":"{percent}%","office.zoomFitTitle":"恢复为显示整个办公室","office.panUp":"向上查看","office.panLeft":"向左查看","office.panRight":"向右查看","office.panDown":"向下查看","office.stageLoading":"正在加载办公室…","office.stageNoWebgl":"此浏览器无法使用 WebGL,改用座位卡片显示办公室。","office.stageAssetFailed":"3D 办公室资源加载失败,改用座位卡片显示办公室。","office.openChat":"打开 {name} 对话","office.motion.toDesk":"正在走向办公桌","office.motion.toLounge":"正在走向休息区","office.motion.work":"正在办公桌前工作","office.motion.atDesk":"在办公桌旁等待","office.motion.idle":"在休息区空闲","office.motion.wave":"正在等待你的输入","office.motion.slump":"失败后停在桌旁","office.retry":"重试","office.absent":"未参与","office.absentHint":"未参与本会话,没有可打开的记录。","office.viewOnly":"仅查看记录","office.selectionGone":"所选 Maker 已从本会话列表中消失,改为显示 Main 对话。"}};function r(){let{locale:e}=(0,a.s)();return{ot:(0,n.useCallback)((t,i)=>(0,o.u0)(e,t,s,i),[e]),locale:e}}},14199:(e,t,i)=>{"use strict";i.d(t,{Jq:()=>a,NZ:()=>n,OQ:()=>o,dc:()=>h,qt:()=>u,r9:()=>d,vA:()=>l});let n={minX:-3.95,maxX:3.4,minZ:-2,maxZ:3,height:1.15},a={zoom:1,x:0,z:0},o=3,s=(n.maxX-n.minX)/2,r=(n.maxZ-n.minZ)/2;function c(e){let t=Math.min(o,Math.max(1,e.zoom)),i=s*(1-1/t),n=r*(1-1/t);return{zoom:t,x:Math.min(i,Math.max(-i,e.x)),z:Math.min(n,Math.max(-n,e.z))}}function l(e,t){let i=t>0?1.25*e.zoom:e.zoom/1.25;return c({...e,zoom:.01>Math.abs(i-1)?1:i})}function d(e,t,i){return c({zoom:e.zoom,x:e.x+t,z:e.z+i})}function u(e,t,i){let n=.9/e.zoom;return d(e,t*n,i*n)}function h(e,t,i){let n=1-1/e.zoom;return(!(t<0)||!(e.x<=-s*n+.001))&&(!(t>0)||!(e.x>=s*n-.001))&&(!(i<0)||!(e.z<=-r*n+.001))&&(!(i>0)||!(e.z>=r*n-.001))&&(0!==t||0!==i)}},17028:(e,t,i)=>{"use strict";i.d(t,{H:()=>r,a:()=>c});var n=i(12115),a=i(92176),o=i(2730);let s={ko:{"lounge.tab":"단톡방","lounge.title":"단톡방","lounge.roomSwitch":"단톡방 켜기","lounge.roomOn":"켜짐","lounge.roomOff":"꺼짐","lounge.roomOffHint":"방이 꺼져 있어요. 켜기 전에는 아무도 호출되지 않아요.","lounge.members":"멤버","lounge.membersCount":"{active}/{total}명 참여","lounge.participate":"{name} 참여","lounge.state.off":"쉬는 중","lounge.state.idle":"대기","lounge.state.reading":"보는 중","lounge.state.speaking":"말하는 중","lounge.state.working":"일하는 중","lounge.state.offline":"오프라인","lounge.usage.weekly":"주간","lounge.usage.weeklyTier":"주간 \xb7 {tier}","lounge.usage.none":"사용량 보고 없음","lounge.usage.loading":"사용량 확인 중","lounge.usage.blocked":"차단","lounge.usage.spent":"소진","lounge.usage.resets":"{when} 리셋","lounge.account.change":"계정 설정","lounge.account.for":"{name}의 단톡방 계정","lounge.account.choose":"단톡방 계정을 고르세요","lounge.account.missing":"연결 끊김 \xb7 ID {id}","lounge.account.hint":"단톡방 계정은 이 방에서만 써요. 작업 세션의 계정은 바뀌지 않아요.","lounge.account.required":"계정을 고르면 사용량이 보여요","lounge.settings":"방 설정","lounge.pace":"대화 속도","lounge.pace.slow":"느리게","lounge.pace.normal":"보통","lounge.pace.active":"활발","lounge.sleep":"자동 잠들기","lounge.sleepMinutes":"{minutes}분","lounge.autoTalk":"먼저 말 걸기","lounge.autoTalkHint":"조용할 때 멤버가 먼저 한마디 해요. 속도 간격마다 한 번, 잠들면 멈춰요.","lounge.asleep":"잠든 상태예요. 메시지를 보내면 깨어나요.","lounge.sleepAt":"{time}에 잠들어요","lounge.calls":"최근 {window} 호출 {used}/{limit}","lounge.perTurn":"메시지당 최대 {limit}번 응답","lounge.open":"대화 보기","lounge.back":"작업으로","lounge.connecting":"연결하는 중…","lounge.reconnecting":"연결이 끊겨 다시 연결하는 중이에요.","lounge.loadFailed":"단톡방을 불러오지 못했어요: {error}","lounge.actionFailed":"요청을 처리하지 못했어요: {error}","lounge.roomOffBanner":"방이 꺼져 있어 메시지를 보낼 수 없어요.","lounge.turnOn":"방 켜기","lounge.empty":"아직 대화가 없어요. 첫 메시지를 보내 보세요.","lounge.you":"나","lounge.placeholder":"메시지 보내기 \xb7 @로 멘션","lounge.placeholderOff":"방을 켜면 대화할 수 있어요","lounge.composer":"단톡방 메시지","lounge.send":"보내기","lounge.stop":"중단","lounge.speaking":"{name} 입력 중…","lounge.queued":"다음: {names}","lounge.reply":"답장","lounge.replyTo":"{name}에게 답장","lounge.cancelReply":"답장 취소","lounge.react":"반응 추가","lounge.reaction":"{emoji} {count}명","lounge.missingMessage":"이전 메시지","lounge.mentionList":"멘션할 멤버","lounge.messages":"단톡방 대화","lounge.textLimit":"{count}/{max}자"},en:{"lounge.tab":"Lounge","lounge.title":"Lounge","lounge.roomSwitch":"Turn on lounge","lounge.roomOn":"On","lounge.roomOff":"Off","lounge.roomOffHint":"The room is off. Nobody is called until you turn it on.","lounge.members":"Members","lounge.membersCount":"{active}/{total} joined","lounge.participate":"{name} joins","lounge.state.off":"Resting","lounge.state.idle":"Idle","lounge.state.reading":"Reading","lounge.state.speaking":"Speaking","lounge.state.working":"Working","lounge.state.offline":"Offline","lounge.usage.weekly":"Weekly","lounge.usage.weeklyTier":"Weekly \xb7 {tier}","lounge.usage.none":"No usage reported","lounge.usage.loading":"Checking usage","lounge.usage.blocked":"Blocked","lounge.usage.spent":"Used up","lounge.usage.resets":"Resets {when}","lounge.account.change":"Account","lounge.account.for":"Lounge account for {name}","lounge.account.choose":"Choose a lounge account","lounge.account.missing":"Disconnected \xb7 ID {id}","lounge.account.hint":"Lounge accounts are used only in this room. Work session accounts stay unchanged.","lounge.account.required":"Choose an account to see usage","lounge.settings":"Room settings","lounge.pace":"Pace","lounge.pace.slow":"Slow","lounge.pace.normal":"Normal","lounge.pace.active":"Lively","lounge.sleep":"Fall asleep after","lounge.sleepMinutes":"{minutes} min","lounge.autoTalk":"Start conversations","lounge.autoTalkHint":"When it is quiet, a member speaks first — once per pace interval, never while asleep.","lounge.asleep":"Asleep. Send a message to wake the room.","lounge.sleepAt":"Falls asleep at {time}","lounge.calls":"Calls in last {window}: {used}/{limit}","lounge.perTurn":"Up to {limit} replies per message","lounge.open":"Open chat","lounge.back":"Back to work","lounge.connecting":"Connecting…","lounge.reconnecting":"Connection lost. Reconnecting.","lounge.loadFailed":"Could not load the lounge: {error}","lounge.actionFailed":"Request failed: {error}","lounge.roomOffBanner":"The room is off, so messages cannot be sent.","lounge.turnOn":"Turn on","lounge.empty":"No messages yet. Send the first one.","lounge.you":"You","lounge.placeholder":"Message \xb7 @ to mention","lounge.placeholderOff":"Turn the room on to chat","lounge.composer":"Lounge message","lounge.send":"Send","lounge.stop":"Stop","lounge.speaking":"{name} is typing…","lounge.queued":"Next: {names}","lounge.reply":"Reply","lounge.replyTo":"Replying to {name}","lounge.cancelReply":"Cancel reply","lounge.react":"Add reaction","lounge.reaction":"{emoji} {count}","lounge.missingMessage":"Earlier message","lounge.mentionList":"Members to mention","lounge.messages":"Lounge conversation","lounge.textLimit":"{count}/{max}"},"zh-CN":{"lounge.tab":"群聊","lounge.title":"群聊","lounge.roomSwitch":"开启群聊","lounge.roomOn":"已开启","lounge.roomOff":"已关闭","lounge.roomOffHint":"群聊已关闭。开启前不会调用任何成员。","lounge.members":"成员","lounge.membersCount":"{active}/{total} 人参与","lounge.participate":"{name} 参与","lounge.state.off":"休息中","lounge.state.idle":"待命","lounge.state.reading":"正在看","lounge.state.speaking":"正在发言","lounge.state.working":"工作中","lounge.state.offline":"离线","lounge.usage.weekly":"每周","lounge.usage.weeklyTier":"每周 \xb7 {tier}","lounge.usage.none":"无用量报告","lounge.usage.loading":"正在确认用量","lounge.usage.blocked":"已阻止","lounge.usage.spent":"已用尽","lounge.usage.resets":"{when} 重置","lounge.account.change":"账号设置","lounge.account.for":"{name} 的群聊账号","lounge.account.choose":"请选择群聊账号","lounge.account.missing":"已断开 \xb7 ID {id}","lounge.account.hint":"群聊账号仅用于本群聊,工作会话的账号不会改变。","lounge.account.required":"选择账号后显示用量","lounge.settings":"群聊设置","lounge.pace":"对话节奏","lounge.pace.slow":"慢","lounge.pace.normal":"普通","lounge.pace.active":"活跃","lounge.sleep":"自动休眠","lounge.sleepMinutes":"{minutes} 分钟","lounge.autoTalk":"主动开口","lounge.autoTalkHint":"安静时由成员先说一句。每个节奏间隔一次,休眠后停止。","lounge.asleep":"已休眠。发送消息即可唤醒。","lounge.sleepAt":"{time} 休眠","lounge.calls":"最近 {window} 调用 {used}/{limit}","lounge.perTurn":"每条消息最多 {limit} 次回复","lounge.open":"查看对话","lounge.back":"返回工作","lounge.connecting":"正在连接…","lounge.reconnecting":"连接已断开,正在重新连接。","lounge.loadFailed":"无法加载群聊:{error}","lounge.actionFailed":"请求失败:{error}","lounge.roomOffBanner":"群聊已关闭,无法发送消息。","lounge.turnOn":"开启","lounge.empty":"还没有消息。发送第一条吧。","lounge.you":"我","lounge.placeholder":"发送消息 \xb7 用 @ 提及","lounge.placeholderOff":"开启群聊后即可对话","lounge.composer":"群聊消息","lounge.send":"发送","lounge.stop":"停止","lounge.speaking":"{name} 正在输入…","lounge.queued":"接下来:{names}","lounge.reply":"回复","lounge.replyTo":"回复 {name}","lounge.cancelReply":"取消回复","lounge.react":"添加表情","lounge.reaction":"{emoji} {count} 人","lounge.missingMessage":"之前的消息","lounge.mentionList":"可提及的成员","lounge.messages":"群聊对话","lounge.textLimit":"{count}/{max}"}};function r(){let{locale:e}=(0,a.s)();return{lt:(0,n.useCallback)((t,i)=>(0,o.u0)(e,t,s,i),[e]),locale:e}}function c(e,t){let i=/^([^(]+)\(([^)]+)\)$/.exec(e.trim());return i?"ko"===t?i[2]:i[1]:e}},43796:e=>{e.exports={page:"office_page__XF0TS",stage:"office_stage__Fbj14",stageCanvas:"office_stageCanvas__U2sWd",stageHeader:"office_stageHeader__lWFCp",stageTools:"office_stageTools__RRCsB",toolRow:"office_toolRow__trJ_O",toolPad:"office_toolPad__q055n",toolButton:"office_toolButton__RX7Sp",stageLoading:"office_stageLoading__hOcDM",bubbles:"office_bubbles__w_8Kc",bubble:"office_bubble__Bzt69",restTag:"office_restTag__2x__g",bubbleName:"office_bubbleName__v_obe",status:"office_status__pNIE6",bubbleMotion:"office_bubbleMotion__49eJV",bubbleTask:"office_bubbleTask__WbhXE",bubbleTaskName:"office_bubbleTaskName__PJC9A",restStatus:"office_restStatus__cdirf",stageHint:"office_stageHint__7Nwiw",stageRetry:"office_stageRetry__LRJNt",stageFallback:"office_stageFallback__PuxHT",stageFallbackBar:"office_stageFallbackBar__6vslG",stageNotice:"office_stageNotice__1dibx",floor:"office_floor__uOwMQ",desks:"office_desks__AtgxW",floorHeader:"office_floorHeader__xQGoJ",floorTitle:"office_floorTitle__Eh7eZ",floorSummary:"office_floorSummary__jhq3w",desk:"office_desk__pIx_K",deskPlate:"office_deskPlate__QWXeV",deskName:"office_deskName__18EHW",deskEmpty:"office_deskEmpty__2gxCP",face:"office_face__nnQ5u",seatRow:"office_seatRow__IIL0F",seatRowHead:"office_seatRowHead__7PWyf",role:"office_role__Ay_68",seatRowName:"office_seatRowName__akHmg",dot:"office_dot__2JmOA",step:"office_step__OAwRQ",unnamed:"office_unnamed__DRjyp",unnamedTitle:"office_unnamedTitle__WzZ6C",unnamedHint:"office_unnamedHint__qw0XQ",unnamedList:"office_unnamedList__56Oy5",unnamedItem:"office_unnamedItem__KeKBj",rail:"office_rail__ldKim",recipient:"office_recipient__vInH_",recipientLabel:"office_recipientLabel__WJSZx",recipientName:"office_recipientName__itEe_",railNote:"office_railNote__GH_Gj",chips:"office_chips__Pe0lb",chip:"office_chip__yjGJA",chipName:"office_chipName___e2pw",chipStatus:"office_chipStatus__qplr_",maker:"office_maker__UkiPB",makerHeader:"office_makerHeader__QXGEY",makerIdentity:"office_makerIdentity__9wAMs",makerName:"office_makerName__VtyRU",makerMeta:"office_makerMeta__WN1K4",viewOnly:"office_viewOnly__zjw87",mono:"office_mono___AJ1D",makerNote:"office_makerNote__Uod4a",tabs:"office_tabs__bcsno",tab:"office_tab__nbLoM",makerBody:"office_makerBody__5L77H",bodyNote:"office_bodyNote__NcNPv",archiveEntry:"office_archiveEntry__ndOjx",archiveRole:"office_archiveRole__9Ry9c",files:"office_files__4JCYU",file:"office_file__Vq7N8",fileName:"office_fileName__8Q7dw",filePath:"office_filePath__TQuWn",makerFooter:"office_makerFooter__NQ5Xg",composerNote:"office_composerNote__C8Q90",backButton:"office_backButton__Y5LTo"}},45926:(e,t,i)=>{"use strict";i.d(t,{AT:()=>m,FC:()=>b,Fw:()=>g,Jg:()=>h});var n=i(95155),a=i(12115),o=i(92176),s=i(64178),r=i(75514),c=i(17028),l=i(13994),d=i(43796),u=i.n(d);function h(){let{t:e}=(0,o.s)(),{ot:t,locale:i}=(0,l.v)();return n=>{if("main"===n.kind){let a=null===n.seat?t("office.faceUnknown"):(0,c.a)(f[n.seat],i),o=n.state;return{name:t("office.recipientMain",{name:a}),status:e("attention"===o?"workspace.mainAttention":"waiting"===o?"workspace.mainWaiting":"working"===o?"workspace.mainWorking":"workspace.mainIdle"),tone:"attention"===o?"warn":"working"===o?"active":"idle"}}if(n.retrying)return{name:n.name,status:t("office.status.retrying"),tone:"warn"};let a="failed"===n.status?"failed":"aborted"===n.status?"warn":(0,r.Ch)(n.status)?"active":"completed"===n.status?"done":"unknown";return{name:n.name,status:t(`office.status.${n.status}`),tone:a}}}let f=s.j7.map(e=>e.alias);function m({seat:e,size:t,dim:i=!1}){let[o,r]=(0,a.useState)(!1);return null===e||o?(0,n.jsx)("span",{className:u().face,"data-unknown":null===e?"true":void 0,style:{width:t,height:t,fontSize:Math.round(.44*t)},"aria-hidden":"true",children:null===e?"?":f[e].slice(0,1)}):(0,n.jsx)("img",{className:u().face,"data-dim":i?"true":void 0,src:(0,s.uk)(e),width:t,height:t,alt:"","aria-hidden":"true",draggable:!1,onError:()=>r(!0)})}function p({participant:e,selected:t,onSelect:i,presentation:a,ot:o}){let s="maker"===e.kind&&(0,r.Ch)(e.status)&&e.snapshot.progress?.lastIntent?.trim()||null,c=o("main"===e.kind?"office.main":"office.maker");return(0,n.jsxs)("button",{type:"button",className:u().seatRow,"aria-pressed":t,onClick:()=>i(e.key),title:s?`${o("office.currentStep")}: ${s}`:void 0,children:[(0,n.jsxs)("span",{className:u().seatRowHead,children:[(0,n.jsx)("span",{className:u().role,"data-kind":e.kind,children:c}),"maker"===e.kind&&(0,n.jsx)("span",{className:u().seatRowName,children:e.name})]}),(0,n.jsxs)("span",{className:u().status,"data-tone":a.tone,children:[(0,n.jsx)("span",{className:u().dot,"aria-hidden":"true"}),a.status]}),s&&(0,n.jsx)("span",{className:u().step,children:s})]})}function g({roster:e,selected:t,onSelect:i}){let{ot:a,locale:o}=(0,l.v)(),s=h(),d=e.participants.filter(e=>"main"===e.kind?"working"===e.state:(0,r.Ch)(e.status)).length;return(0,n.jsxs)("section",{className:u().floor,"aria-label":a("office.floor"),children:[(0,n.jsxs)("header",{className:u().floorHeader,children:[(0,n.jsx)("h2",{className:u().floorTitle,children:a("office.floor")}),(0,n.jsx)("p",{className:u().floorSummary,children:a("office.floorSummary",{count:e.participants.length,running:d})})]}),(0,n.jsx)("ul",{className:u().desks,children:e.seats.map(e=>{let r=e.participants.length>0,l=e.participants.some(e=>e.key===t);return(0,n.jsxs)("li",{className:u().desk,"data-occupied":r?"true":void 0,"data-selected":l?"true":void 0,children:[(0,n.jsxs)("div",{className:u().deskPlate,children:[(0,n.jsx)(m,{seat:e.seat,size:36,dim:!r}),(0,n.jsx)("span",{className:u().deskName,children:(0,c.a)(e.alias,o)})]}),r?e.participants.map(e=>(0,n.jsx)(p,{participant:e,selected:e.key===t,onSelect:i,presentation:s(e),ot:a},e.key)):(0,n.jsx)("span",{className:u().deskEmpty,children:a("office.seatEmpty")})]},e.seat)})}),e.unnamed.length>0&&(0,n.jsxs)("section",{className:u().unnamed,"aria-label":a("office.unnamed"),children:[(0,n.jsx)("h3",{className:u().unnamedTitle,children:a("office.unnamed")}),(0,n.jsx)("p",{className:u().unnamedHint,children:a("office.unnamedHint")}),(0,n.jsx)("div",{className:u().unnamedList,children:e.unnamed.map(e=>(0,n.jsxs)("div",{className:u().unnamedItem,children:[(0,n.jsx)(m,{seat:null,size:28}),(0,n.jsx)(p,{participant:e,selected:e.key===t,onSelect:i,presentation:s(e),ot:a})]},e.key))})]})]})}function b({roster:e,selected:t,onSelect:i,pane:a,onShowFloor:o,selectionGone:s=!1}){let{ot:r}=(0,l.v)(),c=h(),d=e.participants[0];return(0,n.jsxs)("nav",{className:u().rail,"aria-label":r("office.participants"),children:[(0,n.jsxs)("div",{className:u().recipient,children:[(0,n.jsx)("span",{className:u().recipientLabel,children:r("office.recipient")}),(0,n.jsx)(m,{seat:d.seat,size:22}),(0,n.jsx)("strong",{className:u().recipientName,children:c(d).name})]}),s&&"target"===a&&(0,n.jsx)("p",{className:u().railNote,role:"status",children:r("office.selectionGone")}),(0,n.jsxs)("div",{className:u().chips,role:"group","aria-label":r("office.participants"),children:[(0,n.jsx)("button",{type:"button",className:u().chip,"aria-pressed":"floor"===a,onClick:o,children:(0,n.jsx)("span",{className:u().chipName,children:r("office.showFloor")})}),e.participants.map(e=>{let o=c(e);return(0,n.jsxs)("button",{type:"button",className:u().chip,"aria-pressed":e.key===t&&"target"===a,onClick:()=>i(e.key),children:[(0,n.jsx)(m,{seat:e.seat,size:22}),(0,n.jsx)("span",{className:u().chipName,children:o.name}),(0,n.jsxs)("span",{className:u().status,"data-tone":o.tone,children:[(0,n.jsx)("span",{className:u().dot,"aria-hidden":"true"}),(0,n.jsx)("span",{className:u().chipStatus,children:o.status})]})]},e.key)})]})]})}},59959:(e,t,i)=>{"use strict";function n(e){let t=e.live,i=(t?.agent||t?.progress?.agent||"").trim(),n=i.toLowerCase().split(/[-_.:/\s]+/).filter(Boolean).join(" ");return n?{kind:"known",agent:i,source:t?.agentSource??"bundled",label:n}:{kind:"unknown"}}i.d(t,{$V:()=>s,A7:()=>r,Et:()=>p,IA:()=>l,l8:()=>c,wX:()=>n});let a=/^[\t ]*(?:WORK_CLASS|PURPOSE|BLOCKS_PRIMARY|PRIMARY_DELIVERABLE|OWNED_PATHS|FINDING_ID)[\t ]*:[^\r\n]*$/i;function o(e){if(!e)return null;let t=/^\s*TASK_GUARD\s*:\s*$/im.exec(e),i=e;if(t){let n=t.index+t[0].length;"\r"===e[n]&&(n+=1),"\n"===e[n]&&(n+=1);let o=n;for(;n<e.length;){let t=e.indexOf("\n",n),i=-1===t?e.length:t,s=i>n&&"\r"===e[i-1]?i-1:i;if(!a.test(e.slice(n,s)))break;o=s,n=-1===t?e.length:t+1}let s=t[0].length-t[0].trimStart().length;i=`${e.slice(0,t.index+s)}${e.slice(o)}`}let n=[...i.matchAll(/^\s*TASK_TITLE\s*:\s*(.*?)\s*$/gim)].map(e=>e[1]??"");return 1===n.length&&n[0]&&n[0]===n[0].trim()&&/[가-힣]/u.test(n[0])?n[0]:null}function s(e){let t=e.live,i=e.archive&&("archive"===e.identity||"session-file"===e.archiveMatch)?e.archive:void 0,n=[t?.assignment,t?.progress?.assignment,t?.task].map(o).find(e=>null!==e)??(i?.taskTitle?.trim()||null),a=t?.progress?.lastIntent?.trim()||"",s=t?.progress?.currentTool?.trim()||"";return{title:n??"담당 업무 미확인",stage:a&&s?`${a} \xb7 ${s}`:a||(s?`${s} 실행 중`:null),explicitTitle:null!==n}}function r(e){let t=e.live?.progress,i="string"==typeof t?.resolvedModel?t.resolvedModel.trim():"",n=e.archive&&("archive"===e.identity||"session-file"===e.archiveMatch)?e.archive:void 0,a="string"==typeof n?.thinkingLevel?n.thinkingLevel.trim():"";if(i)return{model:i,modelShort:i.split("/").pop()||i,modelIsFallback:t?.resolvedModelIsFallback===!0,effort:a||null};let o="string"==typeof n?.model?n.model.trim():"";return{model:o||null,modelShort:o?o.split("/").pop()||o:null,modelIsFallback:!!o&&n?.modelIsFallback===!0,effort:a||null}}class c extends Error{constructor(e,t,i){super(t),this.kind=e,this.status=i,this.name="SubagentClientError"}}function l(e,t){let i=new Map(t.map(e=>[e.name,e])),n=new Set,a=e.map(e=>{let t=(function(e){let t=[];if(e.sessionFile){let i=e.sessionFile.split(/[\\/]/).pop()?.replace(/\.jsonl$/i,"");i&&t.push({name:i,match:"session-file"})}return t.some(t=>t.name===e.id)||t.push({name:e.id,match:"name"}),t})(e).find(e=>i.has(e.name)&&!n.has(e.name)),a=t?i.get(t.name):void 0;return a&&n.add(a.name),{key:`live:${e.id}`,identity:a?"live-archive":"live",live:e,...a&&t?{archive:a,archiveMatch:t.match}:{}}});for(let e of t)n.has(e.name)||a.push({key:`archive:${e.name}`,identity:"archive",archive:e});return a}async function d(e){try{return await e.json()}catch{throw new c("invalid-response","응답 JSON을 해석할 수 없습니다.",e.status)}}function u(e){return!!e&&"object"==typeof e&&"string"==typeof e.name&&"number"==typeof e.bytes&&"number"==typeof e.modified&&(null===e.messages||"number"==typeof e.messages)&&(void 0===e.taskTitle||"string"==typeof e.taskTitle)&&"string"==typeof e.firstTask}function h(e){return!!e&&"object"==typeof e&&"string"==typeof e.role&&("message"===e.kind||"custom"===e.kind)&&"string"==typeof e.text&&(null===e.at||"number"==typeof e.at)}function f(e){return!!e&&"object"==typeof e&&!!("id"in e&&"string"==typeof e.id)&&!!("index"in e&&"number"==typeof e.index)&&!!("agent"in e&&"string"==typeof e.agent)&&!!("agentSource"in e&&("bundled"===e.agentSource||"user"===e.agentSource||"project"===e.agentSource))&&!!("status"in e&&("pending"===e.status||"running"===e.status||"completed"===e.status||"failed"===e.status||"aborted"===e.status||"unknown"===e.status))&&!!("lastUpdate"in e&&"number"==typeof e.lastUpdate)&&!0}function m(e){return!!e&&"object"==typeof e&&(!("id"in e)||void 0===e.id||"string"==typeof e.id)&&(!("type"in e)||void 0===e.type||"string"==typeof e.type)&&(!("message"in e)||void 0===e.message||null!==e.message&&"object"==typeof e.message)}function p(e=(e,t)=>fetch(e,t),t="/api/sidecars/subagent"){let i=async(t,i,n)=>{let a;try{a=await e(t,i)}catch(e){if(i.signal?.aborted)throw e;throw new c(n,"sidecar-unreachable"===n?"Subagent 기록 사이드카(30144)에 연결할 수 없습니다.":"실시간 Subagent 상태에 연결할 수 없습니다.")}let o=await d(a);if(!a.ok)throw new c("http",function(e,t){if(e&&"object"==typeof e&&"error"in e){let t=e.error;if("string"==typeof t&&t)return t}return t}(o,`HTTP ${a.status}`),a.status);return{response:a,body:o}};return{async getLiveSnapshots(e,t){let{body:n}=await i(`/api/agent/${encodeURIComponent(e)}`,{method:"GET",signal:t},"live-unreachable");if(!n||"object"!=typeof n)throw new c("invalid-response","실시간 Subagent 응답이 올바르지 않습니다.");if("string"==typeof n.error&&n.error)throw new c("http",n.error);if(!0!==n.running)return{runtime:"detached",subagents:[]};let a=n.state?.subagents;if(void 0!==a&&(!Array.isArray(a)||!a.every(f)))throw new c("invalid-response","실시간 Subagent 목록이 올바르지 않습니다.");return{runtime:"running",subagents:a??[]}},async getLiveTranscript(e,t,n,a){let{body:o}=await i(`/api/agent/${encodeURIComponent(e)}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({type:"get_subagent_messages",subagentId:t,fromByte:n}),signal:a},"live-unreachable");if(!o||"object"!=typeof o)throw new c("invalid-response","실시간 Subagent 기록 응답이 올바르지 않습니다.");if("string"==typeof o.error&&o.error)throw new c("http",o.error);if(!0!==o.success||!o.data||"object"!=typeof o.data)throw new c("invalid-response","실시간 Subagent 기록 응답이 올바르지 않습니다.");let s=o.data;if(!Array.isArray(s.entries)||!s.entries.every(m)||"number"!=typeof s.fromByte||"number"!=typeof s.nextByte||"boolean"!=typeof s.reset)throw new c("invalid-response","실시간 Subagent 기록 응답이 올바르지 않습니다.");return{fromByte:s.fromByte,nextByte:s.nextByte,reset:s.reset,entries:s.entries}},async getArchive(e,n){let a=`${t}/archive?session=${encodeURIComponent(e)}`,{body:o}=await i(a,{method:"GET",signal:n},"sidecar-unreachable");if(!o||"object"!=typeof o||"string"!=typeof o.sessionId||"string"!=typeof o.dir||"boolean"!=typeof o.found||!Array.isArray(o.subagents)||!o.subagents.every(u))throw new c("invalid-response","Subagent 기록 목록 응답이 올바르지 않습니다.");return{sessionId:o.sessionId,dir:o.dir,found:o.found,subagents:o.subagents,...!0===o.listTruncated?{listTruncated:!0}:{}}},async getArchiveTranscript(e,n,a=400,o){let s=`${t}/transcript?session=${encodeURIComponent(e)}&name=${encodeURIComponent(n)}&limit=${encodeURIComponent(String(a))}`,{body:r}=await i(s,{method:"GET",signal:o},"sidecar-unreachable");if(!r||"object"!=typeof r||"string"!=typeof r.sessionId||"string"!=typeof r.name||"number"!=typeof r.bytes||"boolean"!=typeof r.truncated||!Array.isArray(r.entries)||!r.entries.every(h))throw new c("invalid-response","Subagent 디스크 기록 응답이 올바르지 않습니다.");return{sessionId:r.sessionId,name:r.name,bytes:r.bytes,truncated:r.truncated,entries:r.entries}}}}},62503:(e,t,i)=>{"use strict";function n(e){if("assistant"!==e.role)return e;let t=e.content;if(!Array.isArray(t))return e;let i=t.map(e=>("object"!=typeof e||null===e||Array.isArray(e)||"toolCall"!==e.type?null:{type:"toolCall",toolCallId:"string"==typeof e.toolCallId?e.toolCallId:"string"==typeof e.id?e.id:"",toolName:"string"==typeof e.toolName?e.toolName:"string"==typeof e.name?e.name:"",input:"object"!=typeof e.input||null===e.input||Array.isArray(e.input)?"object"!=typeof e.arguments||null===e.arguments||Array.isArray(e.arguments)?{}:e.arguments:e.input})??e);return{...e,content:i}}i.d(t,{B:()=>n})},64178:(e,t,i)=>{"use strict";i.d(t,{OO:()=>y,ST:()=>M,U3:()=>F,_Q:()=>E,bN:()=>g,bo:()=>r,e$:()=>h,j7:()=>o,k:()=>b,o:()=>s,oI:()=>L,t6:()=>R,tR:()=>A,uk:()=>m,vy:()=>N,xL:()=>a,xl:()=>f,zq:()=>c});let n="/api/sidecars/resource";function a(e){if("string"==typeof e.status&&"unknown"!==e.status)return"exhausted"===e.status;let t=e.amount??{},i=e=>{let i=t[e];return"number"==typeof i&&Number.isFinite(i)?i:null},n=i("usedFraction");if(null!==n&&n>=1)return!0;let a=i("remainingFraction");if(null!==a&&a<=0)return!0;let o=i("used"),s=i("limit");if(null!==o&&null!==s&&o>=s)return!0;let r=i("remaining");return null!==r&&r<=0||"percent"===t.unit&&null!==o&&o>=100}let o=[{alias:"RIN(린)",file:"rin.webp"},{alias:"MIO(미오)",file:"mio.webp"},{alias:"NOVA(노바)",file:"nova.webp",provider:"opencode-go"},{alias:"YUKI(유키)",file:"yuki.webp",provider:"openai-codex"},{alias:"ISANA(이사나)",file:"isana.webp",provider:"b-ai"},{alias:"SHION(시온)",file:"shion.webp",provider:"web6"},{alias:"HIKARI(히카리)",file:"hikari.webp",provider:"google-antigravity"}],s=[{seed:3,alias:o[3].alias,provider:"openai-codex",model:"gpt-6-astra",voice:"빠른 판단\xb7선명한 결론\xb7영리한 장난기",summonExample:"유키 불러와",switchExample:"유키로 교체해"},{seed:4,alias:o[4].alias,provider:"b-ai",model:"deepseek-v4.1-flash",voice:"호기심과 실행력\xb7생기 있는 관찰\xb7솔직함",summonExample:"이사나 불러와",switchExample:"이사나로 교체해"},{seed:0,alias:o[0].alias,provider:"anthropic",model:"claude-opus-5-5",oauthPosition:0,voice:"조용한 집중\xb7날카로운 분석\xb7건조한 유머",summonExample:"린 불러와",switchExample:"린으로 교체해"},{seed:1,alias:o[1].alias,provider:"anthropic",model:"claude-opus-5-5",oauthPosition:1,voice:"따뜻하고 세심함\xb7부드럽고 안정적인 설명",summonExample:"미오 불러와",switchExample:"미오로 교체해"},{seed:2,alias:o[2].alias,provider:"opencode-go",model:"muse-spark-1.3-contributor",voice:"번뜩이는 발상\xb7즉흥적 시제품\xb7낙천적 재도전",summonExample:"노바 불러와",switchExample:"노바로 교체해"},{seed:6,alias:o[6].alias,provider:"google-antigravity",model:"gemini-3.8-flash",voice:"빠른 관찰\xb7톡 쏘는 한마디\xb7장난스러운 여유",summonExample:"히카리 불러와",switchExample:"히카리로 교체해"},{seed:5,alias:o[5].alias,provider:"web6",model:"gpt-6-pro",voice:"우아한 전략\xb7넓은 시야\xb7은근한 장난기",summonExample:"시온 불러와",switchExample:null,summonNote:"WEB6 상담으로 호출합니다.",switchNote:"SHION은 WEB6 상담 전용이라 Main으로 교체할 수 없습니다."}],r=s.filter(e=>null!==e.switchExample);function c(e){return{alias:e.alias,provider:e.provider,modelId:e.model,...void 0!==e.oauthPosition?{oauthPosition:e.oauthPosition}:{}}}let l=o.filter(e=>!("provider"in e)).length,d=new Map(o.flatMap((e,t)=>"provider"in e?[[e.provider,t]]:[])),u=new Map([...d].map(([e,t])=>[e,{seed:t,alias:o[t].alias}]));function h(e){return u.get(e)??null}function f(e){return o[e%o.length].alias}function m(e){return`/avatars/${o[e%o.length].file}`}function p(e){return 0===e.length?"":1===e.length?"•••":2===e.length?`${e[0]}•••`:`${e[0]}•••${e[e.length-1]}`}function g(e){return({"openai-codex":"OpenAI Codex",anthropic:"Anthropic","google-gemini":"Google Gemini","github-copilot":"GitHub Copilot","opencode-go":"OpenCode Go",devin:"Devin","b-ai":"B.AI",web6:"WEB6"})[e]??e.replace(/(^|-)(\w)/g,(e,t,i)=>`${t?" ":""}${i.toUpperCase()}`)}function b(e){let t=new Map;for(let i of e){if(!Number.isSafeInteger(i.oauthPosition)||i.oauthPosition<0)continue;let e=t.get(i.provider)??new Set;e.add(i.oauthPosition),t.set(i.provider,e)}return e.map(e=>{var i;let n=e.metadata?.email,a=e.metadata?.accountId,s="string"==typeof n&&n.length>0?n:"string"==typeof a?a:"",r=s.length>0?function(e){let t=e.lastIndexOf("@");if(t<=0)return p(e);let i=e.slice(t+1),n=i.lastIndexOf("."),a=n<0?i:i.slice(0,n),o=n<0?"":i.slice(n);return`${p(e.slice(0,t))}@${0===a.length?"":`${a[0]}•••`}${o}`}(s):"",c=(i=e.provider,d.get(i)??-1);if(c>=0)return{seed:c,alias:o[c].alias,masked:r,raw:s};let u=e.oauthPosition;if(!Number.isSafeInteger(u)||u<0){let i=t.get(e.provider)??new Set;for(u=0;i.has(u);)u++;i.add(u),t.set(e.provider,i)}let h=u%l,f=u<l?o[h].alias:`${o[h].alias}${u+1}`;return{seed:h,alias:f,masked:r,raw:s}})}class y extends Error{constructor(e,t,i,n){super(e,n),this.kind=t,this.status=i,this.name="ResourceClientError",this.code=n?.code,this.outcomeUnknown=n?.outcomeUnknown}}function v(e,t){return`${n}${e}${t?"?refresh=1":""}`}function k(e,t,i=!1){return e instanceof y?e:t?new y("요청 시간이 초과되었습니다.","timeout",void 0,{cause:e}):i||e instanceof DOMException&&"AbortError"===e.name?new y("요청이 취소되었습니다.","aborted",void 0,{cause:e}):new y(e instanceof Error?e.message:String(e),"network",void 0,{cause:e})}function w(e,t){return null==e?{status:"error",data:null,error:t}:{status:"stale",data:e,error:t}}async function S(e,t){let i,n=t.fetchImpl??fetch,a=new AbortController,o=!1,s=()=>a.abort(t.signal?.reason);t.signal?.aborted?s():t.signal?.addEventListener("abort",s,{once:!0}),null!=t.timeoutMs&&(i=setTimeout(()=>{o=!0,a.abort(new DOMException("Timeout","TimeoutError"))},t.timeoutMs));try{let t,i=await n(e,{signal:a.signal});try{t=await i.json()}catch(e){throw new y("리소스 서버 응답이 JSON이 아닙니다.","invalid-response",i.status,{cause:e})}let o=t&&"object"==typeof t?t:null,s="string"==typeof o?.error?o.error:null;if(!i.ok||s)throw new y(s??`HTTP ${i.status}`,"http",i.status,{code:"string"==typeof o?.code?o.code:void 0,outcomeUnknown:o?.outcomeUnknown===!0});return t}catch(e){throw k(e,o,a.signal.aborted)}finally{clearTimeout(i),t.signal?.removeEventListener("abort",s)}}let C="google-antigravity",T=`${C}:google:`;function P(e){if(e.provider!==C||!Array.isArray(e.limits))return e;let t=e.limits.filter(e=>"string"==typeof e.id&&e.id.startsWith(T));return t.length===e.limits.length?e:{...e,limits:t}}async function x(e={}){try{let t=await S(v("/usage",!0===e.refresh),e);if(!t||!Array.isArray(t.reports))throw new y("사용량 응답 형식이 올바르지 않습니다.","invalid-response");let i=t.reports.map(P);return{status:"fresh",data:i.every((e,i)=>e===t.reports[i])?t:{...t,reports:i},error:null}}catch(t){return w(e.previous,k(t,!1))}}async function M(e,t={}){if(!e)return w(void 0,new y("세션 id가 올바르지 않습니다.","invalid-response"));try{let i=await S(`/api/agent/${encodeURIComponent(e)}/account`,t),n=i?.state==="resolved"||i?.state==="unresolved"||i?.state==="not-running"||i?.state==="unsupported";if(!i||i.sessionId!==e||"number"!=typeof i.observedAt||!n||!Array.isArray(i.resetRecommendations))throw new y("현재 계정 응답 형식이 올바르지 않습니다.","invalid-response");return{status:"fresh",data:i,error:null}}catch(e){return w(void 0,k(e,!1))}}async function R(e={}){try{let t=await S(v("/models",!0===e.refresh),{...e,timeoutMs:e.timeoutMs??12e4});if(!t||!Array.isArray(t.models)||!Array.isArray(t.agents)||!Array.isArray(t.daily))throw new y("모델 집계 응답 형식이 올바르지 않습니다.","invalid-response");return{status:"fresh",data:t,error:null}}catch(t){return w(e.previous,k(t,!1))}}async function N(e,t,i={}){if(!Number.isSafeInteger(e)||e<=0)throw new y("credential id가 올바르지 않습니다.","invalid-response");let a=await S(`${n}/credential/${e}/${t?"enable":"disable"}`,{...i,timeoutMs:i.timeoutMs??2e4,fetchImpl:async(e,t)=>(i.fetchImpl??fetch)(e,{...t,method:"POST"})});if(!a||!0!==a.ok||a.credentialId!==e||!t!==a.disabled)throw new y("계정 전환 응답 형식이 올바르지 않습니다.","invalid-response");return a}async function A(e,t,i={}){if(!Number.isSafeInteger(e)||e<=0)throw new y("credential id가 올바르지 않습니다.","invalid-response");if(!t)throw new y("credit id가 올바르지 않습니다.","invalid-response");let a=await S(`${n}/credential/${e}/reset`,{...i,timeoutMs:i.timeoutMs??2e4,fetchImpl:async(e,n)=>{let a=new Headers(n?.headers);return a.set("Content-Type","application/json"),(i.fetchImpl??fetch)(e,{...n,method:"POST",headers:a,body:JSON.stringify({confirm:!0,creditId:t})})}});if(!a||"boolean"!=typeof a.ok||a.credentialId!==e||a.creditId!==t||"string"!=typeof a.code||a.ok!==("reset"===a.code))throw new y("리셋 사용 응답 형식이 올바르지 않습니다.","invalid-response");return a}function F(e,t){if(e.has(t))return null;e.add(t);let i=!1;return()=>{i||(i=!0,e.delete(t))}}function E(e){let t,i=e.intervalMs??2500,n=e.setIntervalImpl??setInterval,a=e.clearIntervalImpl??clearInterval,o=null,s=null,r=0,c=!1,l=()=>{a(t),t=void 0},d=async t=>{s?.abort();let i=s=new AbortController,n=++r,a=await M(t,{signal:i.signal,fetchImpl:e.fetchImpl});c||n!==r||o!==t||i.signal.aborted||e.onResult(a)};return{setSessionId(a){c||a===o||(r+=1,s?.abort(),s=null,l(),o=a,e.onClear(a),a&&(d(a),t=n(()=>{o&&d(o)},i)))},stop(){c||(c=!0,r+=1,s?.abort(),s=null,l(),o=null)}}}function L(e){let t,i=e.intervalMs??6e4,n=e.setIntervalImpl??setInterval,a=e.clearIntervalImpl??clearInterval,o=e.initialData??null,s=null,r=0,c=!1,l=!1,d=async t=>{s?.abort(),s=new AbortController;let i=++r,n=await x({refresh:t,previous:o,signal:s.signal,fetchImpl:e.fetchImpl});return c&&i===r&&(n.data&&(o=n.data),e.onResult(n)),n};return{start(){c||(c=!0,d(!1),t=n(()=>{l||d(!1)},i))},refresh:()=>c?d(!0):Promise.resolve(w(o,new y("사용량 폴링이 중지되었습니다.","aborted"))),setPaused(e){l=e},stop(){c=!1,r+=1,s?.abort(),s=null,a(t),t=void 0}}}},67219:(e,t,i)=>{"use strict";i.d(t,{Dh:()=>h,GM:()=>c,O2:()=>s,h7:()=>a,nk:()=>l});var n=i(64178);let a="main";function o(e){let t="string"==typeof e.progress?.resolvedModel?e.progress.resolvedModel.trim():"",i=t.indexOf("/");return i>0?t.slice(0,i):null}function s(e,t){for(let e=t.length-1;e>=0;e-=1){let n=t[e];if("assistant"!==n.role)continue;let a="string"==typeof n.provider&&n.provider.trim()?n.provider.trim():null;if(a){var i;return{provider:a,credentialId:Number.isSafeInteger(i=n.credentialId)&&i>0?n.credentialId:null}}}return{provider:o(e),credentialId:null}}function r(e){return e&&Number.isInteger(e.seed)&&e.seed>=0&&e.seed<n.j7.length?e.seed:null}function c({main:e,subagents:t,accounts:i,resolveFace:s}){let l=[{key:a,kind:"main",seat:r(e.face),provider:e.provider,model:e.provider&&e.modelId?`${e.provider}/${e.modelId}`:null,state:e.state},...[...t].sort((e,t)=>e.index-t.index).map(e=>{var t;let n=i.get(e.id)??{provider:o(e),credentialId:null},a=n.provider?s(n.provider,n.credentialId??void 0):null,c="string"==typeof e.progress?.resolvedModel&&e.progress.resolvedModel.trim()?e.progress.resolvedModel.trim():null;return{key:(t=e.id,`maker:${t}`),kind:"maker",seat:r(a),name:e.id,agent:e.agent.trim()||null,provider:n.provider,model:c,status:e.status,retrying:!!e.progress?.retryState,snapshot:e}})],d=n.j7.map((e,t)=>({seat:t,alias:e.alias,participants:[]})),u=[];for(let e of l)null===e.seat?u.push(e):d[e.seat].participants.push(e);return{seats:d,unnamed:u,participants:l}}function l(e,t){return e.participants.some(e=>e.key===t)?t:a}let d={working:0,waiting:1,attention:2,idle:3};function u(e){return"main"===e.kind?d[e.state]:"running"===e.status?+!!e.retrying:"pending"===e.status?1:"failed"===e.status?2:3}function h(e){let t=[],i=new Map;for(let n of e.participants){let{seat:e}=n,a=null===e?void 0:i.get(e);if(a){a.members.push(n),u(n)<u(a.lead)&&(a.lead=n);continue}let o={key:null===e?n.key:`body:${e}`,seat:e,lead:n,members:[n]};null!==e&&i.set(e,o),t.push(o)}return t}},75514:(e,t,i)=>{"use strict";i.d(t,{Ch:()=>r,HK:()=>u,P0:()=>s,RO:()=>d,_Z:()=>h});var n=i(12115),a=i(62503),o=i(59959);let s=3e3;function r(e){return"pending"===e||"running"===e}let c=new Map;function l(e){return`${e.liveId??""}|${e.status??""}|${e.archiveName??""}`}function d(e){return e.flatMap((e,t)=>{let i=`archive:${t}`;return e.message&&"assistant"===e.message.role?[{id:i,message:e.message}]:e.irc?[{id:i,irc:{from:e.irc.from||void 0,message:e.irc.message||void 0,truncated:!0===e.irc.truncated}}]:[]})}function u(e){return e instanceof o.l8&&("live-unreachable"===e.kind||"sidecar-unreachable"===e.kind)?{kind:"unreachable",message:e.message}:{kind:"error",message:e instanceof Error?e.message:String(e)}}function h(e,{sessionId:t,client:i,enabled:o}){let[f,m]=(0,n.useState)(c),p=(0,n.useRef)(new Map),g=(0,n.useRef)(e);g.current=e;let b=(0,n.useCallback)(()=>{let e=p.current;m(t=>{let i=!1,n=new Map;for(let[a,o]of e){let e=t.get(a),s=e&&e.entries===o.collected&&e.state===o.state?e:{state:o.state,entries:o.collected};s!==e&&(i=!0),n.set(a,s)}return n.size!==t.size&&(i=!0),i?n:t})},[]),y=e.map(e=>`${e.key}|${l(e)}`).join("\n");return(0,n.useEffect)(()=>{if(!o)return;let e=!1,n=!1,c=null,h=p.current,f=new Set(g.current.map(e=>e.key));for(let e of[...h.keys()])f.has(e)||h.delete(e);for(let e of g.current){let t=l(e);h.get(e.key)?.signature!==t&&h.set(e.key,{signature:t,nextByte:0,collected:[],state:{kind:"loading"}})}b();let m=async(n,a,o,s)=>{if(!n.archiveName){a.state={kind:"empty",source:"live",note:s};return}try{let r=await i.getArchiveTranscript(t,n.archiveName,400,o);if(e)return;0===a.collected.length&&(a.collected=d(r.entries)),a.state=0===r.entries.length?{kind:"empty",source:"archive",note:s}:{kind:"ready-archive",entries:r.entries,truncated:r.truncated,note:s}}catch(i){if(e||o.aborted)return;let t=u(i);a.state="unreachable"===t.kind?{kind:"unreachable",message:t.message}:{kind:"error",message:t.message}}},y=async(n,o)=>{let s=h.get(n.key);if(s){if(!n.liveId)return void await m(n,s,o);try{var r,c;let l=await i.getLiveTranscript(t,n.liveId,s.nextByte,o);if(e)return;let d=(r=l.entries,c=l.fromByte,r.flatMap((e,t)=>{let i=e.id??`${c}:${t}`;if("message"===e.type&&e.message)return[{id:i,message:(0,a.B)(e.message)}];if("custom_message"===e.type&&"irc:incoming"===e.customType){let t=e.details;return!t||"object"!=typeof t||Array.isArray(t)?[]:[{id:i,irc:{from:"string"==typeof t.from?t.from:void 0,message:"string"==typeof t.message?t.message:void 0}}]}return[]}));l.reset||0===l.fromByte?s.collected=d:d.length>0&&(s.collected=[...s.collected,...d]),s.nextByte=l.nextByte,s.collected.length>0?("ready-live"!==s.state.kind||s.state.entries!==s.collected)&&(s.state={kind:"ready-live",entries:s.collected}):await m(n,s,o)}catch(t){if(e||o.aborted)return;if(n.archiveName){let e=u(t);await m(n,s,o,`실시간 기록을 읽지 못해 디스크 기록을 표시합니다: ${e.message}`)}else{let e=u(t);s.state="unreachable"===e.kind?{kind:"unreachable",message:e.message}:{kind:"error",message:e.message}}}}},v=async()=>{if(e||n||"u">typeof document&&"visible"!==document.visibilityState)return;n=!0;let t=new AbortController;c=t;try{for(let e of g.current)await y(e,t.signal)}finally{n=!1}e||b()};v();let k=g.current.some(e=>r(e.status))?setInterval(()=>void v(),s):void 0,w=()=>{"visible"===document.visibilityState&&v()};return document.addEventListener("visibilitychange",w),()=>{e=!0,c?.abort(),clearInterval(k),document.removeEventListener("visibilitychange",w)}},[i,o,b,t,y]),f}},86110:(e,t,i)=>{"use strict";i.d(t,{t:()=>k});var n=i(95155),a=i(12115),o=i(75514),s=i(67219),r=i(3270),c=i(14199),l=i(17028),d=i(45926),u=i(13994),h=i(43796),f=i.n(h);function m(){return(0,a.lazy)(()=>Promise.all([i.e(9367),i.e(1831),i.e(3838),i.e(6603),i.e(9703),i.e(726)]).then(i.bind(i,726)))}function p(){if("u"<typeof document)return!1;try{let e=document.createElement("canvas"),t=e.getContext("webgl2")??e.getContext("webgl");return t?.getExtension("WEBGL_lose_context")?.loseContext(),null!==t}catch{return!1}}class g extends a.Component{static getDerivedStateFromError(){return{failed:!0}}componentDidCatch(e){console.warn("[office] 3D scene failed; falling back to seat cards",e),this.props.onFailure()}render(){return this.state.failed?null:this.props.children}constructor(...e){super(...e),this.state={failed:!1}}}function b(e){return"main"===e.kind?"working"===e.state:(0,o.Ch)(e.status)}let y=[{dx:0,dz:-1,label:"office.panUp",turn:0},{dx:-1,dz:0,label:"office.panLeft",turn:-90},{dx:1,dz:0,label:"office.panRight",turn:90},{dx:0,dz:1,label:"office.panDown",turn:180}];function v({path:e,turn:t=0}){return(0,n.jsx)("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",style:t?{transform:`rotate(${t}deg)`}:void 0,children:(0,n.jsx)("path",{d:e})})}function k({roster:e,selected:t,onSelect:i,view:o,onViewChange:h}){let{ot:w,locale:S}=(0,u.v)(),C=(0,d.Jg)(),[T,P]=(0,a.useState)(()=>p()?"ok":"noWebgl"),[x,M]=(0,a.useState)(m),[R,N]=(0,a.useState)(0),[A,F]=(0,a.useState)(!1),[E,L]=(0,a.useState)(()=>new Map),[j,_]=(0,a.useState)(null),U=(0,a.useRef)(new Map),I=(0,a.useRef)(new Map),D=(0,a.useMemo)(()=>(0,s.Dh)(e),[e]),O=D.map(e=>e.key).join("|"),H=(0,a.useMemo)(()=>(0,r.H)(D.map(e=>({key:e.key,seat:e.seat}))),[O]),B=(0,a.useMemo)(()=>D.map(({key:e,seat:t,lead:i})=>({key:e,seat:t,plan:"main"===i.kind?(0,r.H_)(i.state):(0,r.Ow)(i.status,i.retrying)})),[D]),V=(0,a.useCallback)(()=>F(!0),[]),z=(0,a.useCallback)(()=>P("assetFailed"),[]),W=(0,a.useCallback)(()=>{M(m),F(!1),N(e=>e+1),P(p()?"ok":"noWebgl")},[]),q=(0,a.useCallback)((e,t)=>{L(i=>i.get(e)===t?i:new Map(i).set(e,t))},[]),$=(0,a.useCallback)(e=>t=>{t?U.current.set(e,t):U.current.delete(e)},[]),G=(0,a.useCallback)(e=>t=>{t?I.current.set(e,t):I.current.delete(e)},[]),K=(0,a.useCallback)((e,t)=>{h(i=>(0,c.r9)(i,e,t))},[h]),Q=(0,a.useCallback)(e=>{let t=D.find(t=>t.key===e);t&&(1===t.members.length?i(t.members[0].key):U.current.get(e)?.querySelector("button")?.focus())},[D,i]);if("ok"!==T)return(0,n.jsx)("section",{className:f().stage,"data-stage":T,"aria-label":w("office.stage"),children:(0,n.jsxs)("div",{className:f().stageFallback,children:[(0,n.jsxs)("div",{className:f().stageFallbackBar,children:[(0,n.jsx)("p",{className:f().stageNotice,role:"status",children:w("noWebgl"===T?"office.stageNoWebgl":"office.stageAssetFailed")}),"assetFailed"===T&&(0,n.jsx)("button",{type:"button",className:f().stageRetry,onClick:W,children:w("office.retry")})]}),(0,n.jsx)(d.Fw,{roster:e,selected:t,onSelect:i})]})});let X=e.participants.filter(b).length,J=E.get(D.find(e=>e.members.some(e=>"main"===e.kind))?.key??""),Z=o.zoom>1;return(0,n.jsxs)("section",{className:f().stage,"data-stage":A?"ready":"loading","data-main-motion":J,"aria-label":w("office.stage"),children:[(0,n.jsx)("div",{className:f().stageCanvas,"aria-hidden":"true",children:(0,n.jsx)(g,{onFailure:z,children:(0,n.jsx)(a.Suspense,{fallback:null,children:(0,n.jsx)(x,{layout:H,participants:B,bubbles:U.current,reserved:I.current,view:o,onPan:K,onSelect:Q,onHover:_,onReady:V,onMotionChange:q,onContextLost:z})})},R)}),(0,n.jsxs)("header",{ref:G("header"),className:f().stageHeader,children:[(0,n.jsx)("h2",{className:f().floorTitle,children:w("office.stage")}),(0,n.jsx)("p",{className:f().floorSummary,children:w("office.floorSummary",{count:e.participants.length,running:X})}),(0,n.jsx)("p",{className:f().stageHint,children:w(Z?"office.stageHintZoomed":"office.stageHint")})]}),(0,n.jsxs)("div",{ref:G("tools"),className:f().stageTools,role:"group","aria-label":w("office.viewControls"),children:[(0,n.jsxs)("div",{className:f().toolRow,children:[(0,n.jsx)("button",{type:"button",className:f().toolButton,onClick:()=>h(e=>(0,c.vA)(e,-1)),disabled:!Z,"aria-label":w("office.zoomOut"),title:w("office.zoomOut"),children:(0,n.jsx)(v,{path:"M5 12h14"})}),(0,n.jsx)("button",{type:"button",className:f().toolButton,"data-control":"zoom-fit",onClick:()=>h(()=>c.Jq),disabled:!Z,title:w("office.zoomFitTitle"),"aria-label":`${w("office.zoomFit")} (${w("office.zoomLevel",{percent:Math.round(100*o.zoom)})})`,children:w("office.zoomLevel",{percent:Math.round(100*o.zoom)})}),(0,n.jsx)("button",{type:"button",className:f().toolButton,onClick:()=>h(e=>(0,c.vA)(e,1)),disabled:o.zoom>=c.OQ,"aria-label":w("office.zoomIn"),title:w("office.zoomIn"),children:(0,n.jsx)(v,{path:"M12 5v14M5 12h14"})})]}),Z&&(0,n.jsx)("div",{className:f().toolPad,children:y.map(e=>(0,n.jsx)("button",{type:"button",className:f().toolButton,"data-pan":`${e.dx},${e.dz}`,onClick:()=>h(t=>(0,c.qt)(t,e.dx,e.dz)),disabled:!(0,c.dc)(o,e.dx,e.dz),"aria-label":w(e.label),title:w(e.label),children:(0,n.jsx)(v,{path:"M12 19V5M5 12l7-7 7 7",turn:e.turn})},e.label))})]}),!A&&(0,n.jsx)("p",{className:f().stageLoading,role:"status",children:w("office.stageLoading")}),(0,n.jsxs)("div",{className:f().bubbles,"data-ready":A?"true":void 0,children:[D.map(t=>{let a=E.get(t.key),o=a&&(0,n.jsx)("span",{className:f().bubbleMotion,children:w(`office.motion.${a}`)});if(1===t.members.length){let[e]=t.members,s=C(e);return(0,n.jsxs)("button",{ref:$(t.key),type:"button",className:f().bubble,"data-key":t.key,"data-participant":e.key,"data-kind":e.kind,"data-tone":s.tone,"data-motion":a,"data-hover":j===t.key?"true":void 0,title:w("office.openChat",{name:s.name}),onClick:()=>i(e.key),children:[(0,n.jsx)("span",{className:f().bubbleName,children:s.name}),(0,n.jsxs)("span",{className:f().status,"data-tone":s.tone,children:[(0,n.jsx)("span",{className:f().dot,"aria-hidden":"true"}),s.status]}),o]},t.key)}let s=(0,l.a)(e.seats[t.seat??-1]?.alias??"",S);return(0,n.jsxs)("div",{ref:$(t.key),role:"group","aria-label":s,className:f().bubble,"data-key":t.key,"data-group":"true","data-motion":a,"data-hover":j===t.key?"true":void 0,children:[(0,n.jsx)("span",{className:f().bubbleName,children:s}),t.members.map(e=>{let t=C(e);return(0,n.jsxs)("button",{type:"button",className:f().bubbleTask,"data-participant":e.key,title:w("office.openChat",{name:t.name}),onClick:()=>i(e.key),children:[(0,n.jsx)("span",{className:f().bubbleTaskName,children:t.name}),(0,n.jsxs)("span",{className:f().status,"data-tone":t.tone,children:[(0,n.jsx)("span",{className:f().dot,"aria-hidden":"true"}),t.status]})]},e.key)}),o]},t.key)}),H.rest.map(t=>{let i=(0,r.wC)(t.seat);return(0,n.jsxs)("span",{ref:$(i),className:f().restTag,"data-key":i,"data-hover":j===i?"true":void 0,title:w("office.absentHint"),children:[(0,n.jsx)("span",{className:f().bubbleName,children:(0,l.a)(e.seats[t.seat]?.alias??"",S)}),(0,n.jsx)("span",{className:f().restStatus,children:w("office.absent")}),(0,n.jsx)("span",{className:f().bubbleMotion,children:w("office.absentHint")})]},i)})]})]})}},92176:(e,t,i)=>{"use strict";i.d(t,{I18nProvider:()=>f,s:()=>m});var n=i(95155),a=i(12115);let o=JSON.parse('{"common.ok":"확인","common.language":"언어","common.models":"모델","common.skills":"스킬","common.plugins":"플러그인","common.settings":"설정","updates.available":"CUELO 업데이트 있음","updates.availableTitle":"CUELO {version} 릴리스가 나왔습니다","updates.dialogEyebrow":"CUELO 릴리스","updates.dialogTitle":"새 CUELO 버전","updates.current":"현재 CUELO {version}","updates.changelog":"변경 사항","updates.viewRelease":"릴리스 보기","updates.manual":"소스에서 실행 중이면 아래 명령으로 갱신한 뒤 다시 시작하세요.","updates.copyCommand":"명령어 복사","updates.commandCopied":"명령어 복사됨","updates.copyFailed":"명령어를 복사할 수 없습니다","sidebar.hide":"사이드바 숨기기","sidebar.show":"사이드바 표시","theme.light":"라이트 모드 (클릭하면 다크)","theme.dark":"다크 모드 (클릭하면 시스템)","theme.auto":"시스템 테마 (클릭하면 라이트)","history.full":"전체 기록","history.unsaved":"전체 기록은 세션 저장 후 사용할 수 있습니다","history.label":"전체 기록","title.generating":"생성 중...","title.updated":"제목 업데이트됨","title.failed":"생성 실패","title.generate":"제목 생성","title.unsaved":"제목 생성은 세션 저장 후 사용할 수 있습니다","title.noMessages":"세션 이름을 지정하기 전에 메시지를 보내세요","title.generateSession":"세션 제목 생성","system.prompt":"시스템 프롬프트","system.empty":"시스템 프롬프트가 비어 있습니다 (도구 비활성화됨)","system.load":"시스템 프롬프트를 불러오려면 메시지를 보내세요","system.label":"시스템","session.info":"세션 정보","session.name":"이름","session.file":"파일","session.inMemory":"메모리 내","session.id":"ID","session.user":"사용자","session.assistant":"어시스턴트","session.toolCalls":"도구 호출","session.toolResults":"도구 결과","session.total":"합계","session.input":"입력","session.output":"출력","session.cacheRead":"캐시 읽기","session.cacheWrite":"캐시 쓰기","session.cost":"비용","session.context":"컨텍스트","session.copy":"{value} 복사","session.copied":"복사됨","session.title":"세션 정보","session.load":"세션 정보를 불러오려면 메시지를 보내거나 /session을 실행하세요","session.infoSection":"세션 정보","session.messages":"메시지","session.tokens":"Token","session.copyFile":"파일 경로 복사","session.copyId":"세션 ID 복사","session.cacheHitRate":"평균 캐시 적중률","session.totalActive":"활동 시간","workspace.opening":"워크스페이스를 여는 중...","workspace.unable":"워크스페이스를 열 수 없습니다","workspace.selectSession":"사이드바에서 세션을 선택하세요","workspace.getStarted":"시작하기","workspace.selectProject":"사이드바에서 프로젝트 디렉터리를 선택하세요","workspace.addModels":"하단의 모델 버튼으로 모델을 추가하세요","workspace.stepProject":"사이드바에서 프로젝트 디렉터리를 선택하세요","workspace.stepModels":"하단의 모델 버튼으로 모델을 추가하세요","workspace.mainWorking":"작업중","workspace.mainWaiting":"대기중","workspace.mainIdle":"대기","workspace.mainAttention":"입력필요","files.hidePanel":"파일 패널 숨기기","files.showPanel":"파일 패널 표시","files.noneOpen":"열린 파일 없음","layout.resizeSidebar":"사이드바 크기 조절","layout.resizeFilePanel":"파일 패널 크기 조절","layout.resizeHint":"드래그하여 크기를 조절합니다. 더블 클릭 또는 Enter 키로 초기화합니다.","sidebar.new":"새로 만들기","sidebar.newSessionTitle":"{path}에서 새 세션","sidebar.refresh":"새로고침","sidebar.projects":"프로젝트","subagents.title":"서브 Agent","subagents.running":"실행 중","subagents.finished":"완료됨","subagents.history":"기록","subagents.runningCount":"{count}개 실행 중","subagents.finishedCount":"{count}개 완료됨","subagents.failed":"실패","subagents.aborted":"중단됨","subagents.back":"서브 Agent 목록으로 돌아가기","subagents.retrying":"재시도 중 {attempt}/{max}","subagents.usingTool":"{tool} 사용 중","subagents.details":"서브 Agent 실행 상세","subagents.closeDetails":"서브 Agent 상세 닫기","subagents.noTask":"작업 설명 없음","subagents.tools":"도구 {count}개","subagents.tokens":"{count} Token","subagents.loadingTranscript":"실시간 기록을 불러오는 중…","subagents.noTranscript":"서브 Agent가 아직 기록 메시지를 작성하지 않았습니다.","subagents.transcriptUnavailable":"실시간 기록을 아직 사용할 수 없습니다. 서브 Agent가 실행되는 동안 재시도합니다.","sidebar.searchProjectsAndSessions":"프로젝트 및 세션 제목 검색…","sidebar.addProject":"사용자 지정 프로젝트 경로 추가","sidebar.projectActions":"프로젝트 작업","sidebar.projectAlias":"별칭","sidebar.projectAliasEdit":"별칭 편집","sidebar.projectHide":"숨기기","sidebar.projectUnhide":"숨김 해제","sidebar.projectShowHidden":"숨긴 프로젝트 표시","sidebar.temporaryProjects":"임시\xb7시스템 경로","sidebar.projectMoveUp":"위로 이동","sidebar.projectMoveDown":"아래로 이동","sidebar.projectMoveDisabledWhileFiltering":"프로젝트 순서를 변경하려면 검색 필터를 지우세요","sidebar.projectUpdateFailed":"프로젝트 변경 사항을 저장할 수 없습니다. 다시 시도하세요.","sidebar.expandProject":"프로젝트 펼치기","sidebar.collapseProject":"프로젝트 접기","sidebar.showMore":"더 보기","sidebar.showLess":"간략히 보기","sidebar.selectProject":"프로젝트 선택…","sidebar.filterProjects":"프로젝트 필터…","sidebar.noMatchingProjects":"일치하는 프로젝트 없음","sidebar.useDefaultDirectory":"기본 디렉터리 사용","sidebar.customPath":"사용자 지정 경로…","directoryPicker.selectDirectory":"디렉터리 선택","directoryPicker.goToParent":"상위 디렉터리로 이동","directoryPicker.directoryPath":"디렉터리 경로","directoryPicker.goToDirectory":"디렉터리로 이동","directoryPicker.go":"이동","directoryPicker.loadingDirectories":"디렉터리를 불러오는 중…","directoryPicker.noSubdirectories":"하위 디렉터리 없음","directoryPicker.openBeforeSelecting":"선택하기 전에 이 경로를 엽니다","directoryPicker.selectCurrentDirectory":"현재 디렉터리 선택","directoryPicker.selectThisFolder":"이 폴더 선택","directoryPicker.noDrives":"드라이브를 찾을 수 없음","sidebar.checking":"확인 중…","sidebar.open":"열기","sidebar.cancel":"취소","sidebar.openRepoRoot":"저장소 루트 열기","sidebar.openRepoRootTitle":"worktree를 관리하려면 저장소 루트를 여세요.","sidebar.gitRepoRootOnly":"Git 저장소 루트 전용","sidebar.gitRepoRootOnlyTitle":"worktree는 Git 저장소 루트에서만 사용할 수 있습니다.","sidebar.worktrees":"Worktree...","sidebar.checkingWorktrees":"이 디렉터리의 worktree를 확인합니다.","sidebar.filterWorktrees":"worktree 필터…","sidebar.noMatchingWorktrees":"일치하는 worktree 없음","sidebar.switchWorktree":"worktree 전환","sidebar.switchWorktreeTitle":"worktree 전환: {path}","sidebar.main":"main","sidebar.forceRemoveCheckout":"커밋되지 않은 변경 사항이 있습니다. 체크아웃을 강제로 제거할까요?","sidebar.force":"강제","sidebar.createWorktreeTitle":"Branch에 대한 worktree 체크아웃을 생성합니다","sidebar.newWorktree":"새 worktree…","sidebar.branchName":"Branch 이름","sidebar.creating":"생성 중…","sidebar.create":"생성","sidebar.loading":"불러오는 중...","sidebar.noSessions":"세션 없음","sidebar.agentRunning":"Agent 실행 중…","sidebar.newActivity":"새 활동","sidebar.newSessionActivity":"새 세션 활동","sidebar.deleteSession":"{title}을(를) 삭제할까요?","sidebar.rename":"이름 변경","sidebar.pin":"맨 위에 고정","sidebar.unpin":"고정 해제","sidebar.pinned":"고정됨","sidebar.delete":"삭제","sidebar.deleteWithShiftClick":"삭제 (Shift+클릭으로 확인 없이 삭제)","sidebar.clearProjectSessions":"세션 비우기","sidebar.clearPriorityList":"목록 비우기","sidebar.newScratchSession":"새 세션","sidebar.newScratchSessionTitle":"프로젝트 없이 세션 시작 (홈 폴더의 날짜별 임시 폴더)","sidebar.newScratchSessionFailed":"임시 폴더를 만들지 못했습니다: {error}","sidebar.clearSessionsTitle":"세션 삭제 확인","sidebar.clearSessionsProjectBody":"{project} 프로젝트의 세션 {count}개를 영구 삭제합니다. 되돌릴 수 없습니다.","sidebar.clearSessionsPriorityBody":"우선순위 목록의 세션 {count}개를 영구 삭제합니다. 되돌릴 수 없습니다.","sidebar.clearSessionsRunningExcluded":"실행 중인 세션 {count}개는 삭제하지 않습니다.","sidebar.clearSessionsNone":"지금 삭제할 수 있는 세션이 없습니다.","sidebar.clearSessionsConfirm":"삭제","sidebar.clearSessionsCancel":"취소","sidebar.clearSessionsBusy":"삭제 중…","sidebar.clearSessionsFailed":"{count}개 세션을 삭제하지 못했습니다: {names}","sidebar.archive":"보관 (목록에서 숨김, 복원 가능)","sidebar.archived":"보관됨","sidebar.restore":"복원","sidebar.noArchivedSessions":"보관된 세션 없음","sidebar.expandForks":"Fork 펼치기","sidebar.collapseForks":"Fork 접기","sidebar.messagesCount":"메시지 {count}개","sidebar.worktreePath":"Worktree: {path}","sidebar.removeWorktreeTitle":"worktree 체크아웃 {path}을(를) 제거합니다. Branch는 유지됩니다","files.deleted":"삭제됨","files.insertPath":"채팅에 경로 삽입","files.mention":"멘션","chat.loadingSession":"세션 불러오는 중...","chat.runningTool":"도구 실행 중...","chat.runningNamedTool":"{name} 실행 중...","chat.runningTools":"{names} 실행 중...","chat.runningToolsMore":"{names} (+{count}) 실행 중...","chat.waitingModel":"모델 응답 대기 중...","todo.progress":"{percent}% \xb7 {total}개 중 {completed}개 완료 \xb7 {remaining}개 남음","todo.progressDone":"{percent}% \xb7 {total}개 중 {completed}개 완료","todo.allDone":"{count}개 모두 완료","todo.showCompleted":"완료 {count}개 보기","todo.hideCompleted":"완료 {count}개 접기","chat.runningCommand":"명령 실행 중...","chat.thinking":"생각 중...","chat.contextUsageTitle":"컨텍스트 윈도우: {limit} Token 중 {used} 사용 ({percent})","chat.contextUsageWarning":"컨텍스트 윈도우가 거의 차고 있습니다","chat.contextUsageCritical":"컨텍스트 윈도우가 거의 가득 찼습니다","chat.processDetails":"프로세스 상세","chat.message":"메시지","chat.messages":"메시지","chat.toolCall":"도구 호출","chat.toolCalls":"도구 호출","chat.collapseProcess":"프로세스 상세 접기","chat.expandProcess":"프로세스 상세 펼치기","process.empty":"이 세션에는 아직 작업 과정 기록이 없습니다","process.turn":"턴","process.turns":"턴","chat.loadEarlier":"위로 스크롤하면 이전 메시지를 불러옵니다 ({count}개 숨김)","chat.extensionRequest":"확장 요청","chat.responseSending":"응답을 보내는 중...","chat.responseFailed":"응답이 Agent에 전달되지 않았습니다. 아직 기다리는 중이니 다시 시도하세요.","chat.cancel":"취소","chat.confirm":"확인","chat.submit":"제출","chat.agentQuestion":"Agent가 입력을 기다립니다","chat.agentQuestionHint":"옵션을 선택하거나 직접 응답을 입력하세요.","chat.askAutoSelectHint":"{seconds}초 동안 응답이 없으면 추천안으로 자동 선택합니다. 선택하거나 입력하면 대기 시간이 다시 시작됩니다.","chat.recommended":"추천","chat.customAnswer":"기타 응답 (선택)","chat.chatAboutThis":"이것에 대해 대화","chat.submitAnswer":"답변 제출","chat.planApproval":"계획 승인","chat.planFeedback":"추가 계획 수립을 위한 피드백 (선택)","chat.refinePlan":"계획 계속하기","chat.approvePlan":"승인 후 구현","chat.extensionInput":"확장 터미널 입력","chat.extensionPanel":"확장 패널","chat.close":"닫기","chat.queued":"대기 중 \xb7 {count}","chat.recall":"입력창으로 되돌리기","chat.recallTitle":"대기 중인 메시지를 모두 제거하고 편집할 수 있도록 입력창에 다시 넣습니다","chat.queueRemove":"이 대기 메시지만 취소","chat.retrying":"재시도 중 ({attempt}/{max})…","chat.loadingCommands":"명령 불러오는 중...","chat.slashCommands":"슬래시 명령 \xb7 {label}","chat.tabEnter":"Tab / Enter","chat.noCommands":"명령이 없습니다","chat.match":"일치 1개","chat.matches":"일치 {count}개","chat.command":"명령 1개","chat.commands":"명령 {count}개","chat.loadingFiles":"파일 불러오는 중...","chat.files":"파일 \xb7 {label}{hint}","chat.searching":"검색 중…","chat.noMatchingFiles":"일치하는 파일 없음","chat.searchingAll":" \xb7 전체 파일 검색 중…","chat.indexTruncated":" \xb7 인덱스 일부 생략됨","chat.steerPlaceholder":"지금 지시하거나 후속 메시지를 대기열에 추가하세요...","chat.agentPlaceholder":"Agent 실행 중…","chat.messagePlaceholder":"메시지 입력… 명령어는 /, 파일은 @ 입력","chat.steer":"지시","chat.followUp":"후속 메시지","chat.send":"보내기","chat.attachImageLimit":"메시지 하나에 이미지를 최대 {count}개까지 첨부할 수 있습니다.","chat.attachImageTooLarge":"{name} 파일이 이미지당 {limit} 제한을 초과합니다.","chat.attachFile":"파일 첨부","chat.attachments":"첨부 파일","chat.removeImage":"이미지 {index} 제거","chat.removeAttachment":"{name} 제거","chat.attachExtracting":"텍스트 추출 중","chat.attachExtractingWait":"첨부 파일 처리가 끝날 때까지 기다려 주세요","chat.attachLimit":"메시지 하나에 이미지를 제외한 첨부 파일을 최대 {count}개까지 넣을 수 있습니다.","chat.attachTooLarge":"{name} 파일이 문서당 {limit} 제한을 초과합니다.","chat.attachTotalTooLarge":"첨부 문서의 합계가 {limit} 제한을 초과합니다.","chat.attachTextTooLarge":"{name}에서 추출한 텍스트가 {limit}자 제한을 초과합니다.","chat.attachTooManyPages":"{name} 파일이 PDF {limit}페이지 제한을 초과합니다.","chat.attachNoPdfText":"{name}에서 추출할 수 있는 텍스트가 없습니다. 스캔 또는 이미지 전용 PDF에 필요한 OCR은 지원하지 않습니다.","chat.attachPasswordProtected":"{name}은(는) 암호로 보호되어 텍스트를 추출할 수 없습니다.","chat.attachExtractFailed":"{name}에서 텍스트를 추출하지 못했습니다.","chat.attachKindAudio":"음성","chat.attachKindFile":"파일","chat.attachUploading":"저장 중","chat.attachTranscribing":"받아쓰기 중","chat.attachTranscribeFailed":"받아쓰기 실패","chat.attachStoredTooLarge":"{name} 파일이 파일당 {limit} 제한을 초과합니다.","chat.attachUploadFailed":"{name} 파일을 저장하지 못했습니다: {error}","chat.attachTranscribePending":"선택 필요","chat.transcribeGroup":"음성 받아쓰기","chat.transcribeChecking":"길이 확인 중","chat.transcribeConfirmTitle":"{name} 받아쓰기를 시작할까요?","chat.transcribePlanSummary":"{duration} \xb7 받아쓰기 호출 약 {calls}회","chat.transcribeDurationUnknown":"길이 알 수 없음","chat.transcribeUsageNotice":"받아쓰기는 연결된 계정의 사용량에 포함됩니다. 시작을 누르기 전에는 아무것도 보내지 않습니다.","chat.transcribeStart":"받아쓰기 시작","chat.transcribeSkip":"받아쓰지 않기","chat.transcribeCancel":"받아쓰기 취소","chat.transcribeRunning":"{name} 받아쓰는 중","chat.transcribeRetry":"다시 시도","chat.transcribeAction":"받아쓰기","chat.transcribeSkipped":"{name}은(는) 받아쓰지 않고 저장된 파일 경로만 보냅니다.","chat.transcribeFailedRow":"{name} 받아쓰기 실패: {error}","chat.transcribeToolMissing":"음성 도구(ffmpeg)를 쓸 수 없어 이 음성을 받아쓰기용으로 준비하지 못했습니다.","chat.transcribePartialFailed":"{total}조각 중 {done}조각까지 처리하고 멈췄습니다. 일부 결과는 붙이지 않았습니다.","chat.transcribeTooLong":"받아쓴 내용이 다른 첨부와 합친 글자 수 제한을 넘습니다.","chat.attachmentSettingsNav":"첨부 파일","chat.attachmentSettingsTitle":"첨부 파일","chat.attachmentSettingsDescription":"대화에 첨부한 파일은 에이전트가 열 수 있도록 이 컴퓨터에 저장됩니다.","chat.attachmentSettingsLoadFailed":"첨부 설정을 불러오지 못했습니다","chat.attachmentUploadLimit":"파일당 업로드 한도(MB)","chat.attachmentUploadLimitHelp":"이보다 큰 파일은 보내기 전에 거절합니다. 메시지에 바로 읽어 넣는 텍스트는 따로 문서당 8MB, 합계 240,000자 한도를 지킵니다.","chat.attachmentUploadLimitInvalid":"1 이상의 정수(MB)를 입력하세요.","chat.attachmentAutoCleanup":"쓰이지 않는 첨부 자동 삭제","chat.attachmentAutoCleanupHelp":"대화\xb7분기\xb7보내지 않은 초안에서 쓰이는 첨부는 지우지 않습니다. 어디에서도 쓰이지 않는다고 확인된 때부터 {days}일이 지나면 삭제하고, 쓰임을 확인할 수 없는 파일은 남겨 둡니다.","chat.attachmentSettingsSaved":"저장했습니다","chat.steerTitle":"현재 실행을 중단하고 이 메시지를 바로 전달합니다","chat.followUpTitle":"Agent가 끝난 후 이 메시지를 전달하도록 대기열에 추가합니다","chat.filterModels":"모델 필터…","chat.noMatchingModels":"일치하는 모델 없음","chat.modelRoles":"역할","chat.allModels":"전체 모델","chat.mainPreset":"Main 프리셋","roles.title":"모델 역할","roles.description":"omp는 하나의 현재 모델이 아니라 역할별로 작업을 라우팅합니다. 각 역할에 모델을 지정하면 CUELO과 omp CLI 모두에서 사용됩니다.","roles.scope":"저장 위치","roles.scopeGlobal":"전역","roles.scopeProject":"이 프로젝트","roles.unset":"— 미설정 —","roles.needsProject":"모델 역할을 편집하려면 프로젝트를 여세요.","roles.source.global":"전역 설정에서","roles.source.project":"프로젝트 설정에서","roles.source.default":"omp 기본값","roles.thinking":"Thinking","roles.thinkingInherit":"설정된 기본 thinking 수준 사용","roles.harnessNote":"CUELO Maker 자리는 지정하기 전에도 목록에 표시됩니다. 쓸 자리만 직접 모델을 고르세요. 저장해도 로그인하거나 모델을 시험 호출하지 않습니다.","roles.harnessUnset":"미설정","roles.harness.implSonnet":"Maker \xb7 NORMAL 비-UI 우선","roles.harness.implOpus":"Maker \xb7 NORMAL UI/UX","roles.harness.implDeepSeek":"Maker \xb7 NORMAL 대안","roles.harness.makerHardUiOpus":"Maker \xb7 HARD UI/UX","roles.harness.makerHardCodeOpus":"Maker \xb7 HARD 코드","roles.harness.makerHardCodeSonnet":"Maker \xb7 HARD 코드 대안","chat.moreControls":"실행 옵션","chat.collapseControls":"실행 옵션 닫기","chat.shell":"Shell","chat.outputLocal":"출력은 로컬에만 유지","chat.outputModel":"출력을 모델로 전송","chat.noTools":"도구 없음, 읽기 전용","chat.builtInTools":"코어: {tools} \xb7 그 외 등록된 도구는 계속 활성화됨","chat.allBuiltInTools":"코어: {tools} \xb7 그 외 등록된 도구는 계속 활성화됨","chat.changeReasoning":"추론 수준 변경: {level}","chat.changeReasoningLabel":"추론 수준 변경","chat.currentReasoning":"현재 추론 강도: {level}","chat.fastModeActive":"Fast 켜짐 \xb7 이 모델에 적용 중. 우선 처리라 요금\xb7사용량이 더 들 수 있습니다. 누르면 끕니다","chat.fastModeInactive":"Fast 요청됨 \xb7 이 모델\xb7계정에는 적용되지 않음. 누르면 끕니다","chat.fastModeOff":"Fast 꺼짐 \xb7 누르면 우선 처리를 요청합니다(provider에 따라 요금\xb7사용량이 더 듭니다)","chat.fastModeUnknown":"Fast 상태 확인 전 \xb7 누르면 이 세션의 실제 상태를 읽고 바꿉니다","chat.fastModeBusy":"Fast 바꾸는 중","chat.changeToolPreset":"도구 프리셋 변경","chat.stopCompaction":"압축 중지","chat.compactContext":"컨텍스트 압축","chat.compacting":"압축 중…","chat.compact":"Compact","chat.stopAgent":"Agent 중지","chat.stop":"중지","chat.liveVoice":"라이브 음성","chat.liveStart":"라이브 음성 시작","chat.liveStop":"라이브 음성 종료","chat.liveConnecting":"연결 중","chat.liveOn":"통화 중","chat.liveWorking":"작업 수행 중","chat.liveUnsupported":"이 브라우저에서는 라이브 통화를 할 수 없습니다","chat.liveMicDenied":"마이크 권한이 거부됐습니다","chat.liveMicUnavailable":"사용할 수 있는 마이크가 없습니다","chat.liveAuthRequired":"라이브 음성을 쓰려면 Codex 로그인이 필요합니다","chat.liveUpstreamFailed":"Codex가 라이브 통화를 거부했습니다","chat.liveFailed":"라이브 통화를 시작하지 못했습니다","chat.liveNeedsSession":"먼저 폴더를 선택하세요 — 라이브 통화는 이 대화의 에이전트로 말합니다","chat.liveVoiceFailed":"캐릭터 통화 음성을 만들지 못해 통화를 끝냈습니다","chat.liveVoiceCharacter":"{name} 목소리","chat.liveVoiceProvisional":"임시 음색","chat.liveVoiceNativeNotReady":"{name} 음성 미준비 \xb7 기본 음성","chat.liveVoiceNativeUnknown":"캐릭터 확인 불가 \xb7 기본 음성","chat.liveVoiceSettingsNav":"통화 음성","chat.liveVoiceSettingsTitle":"캐릭터 통화 음성 (Cartesia)","chat.liveVoiceSettingsDescription":"이 CUELO 서버에 저장되는 Cartesia API 키와 캐릭터 음성 준비를 관리합니다. 변경은 각 버튼으로 적용합니다.","chat.liveVoiceCharacters":"캐릭터","chat.liveVoiceKeyLabel":"Cartesia API 키","chat.liveVoiceKeySaved":"저장된 키: {hint}","chat.liveVoiceKeySave":"키 저장","chat.liveVoiceKeyRemove":"키 삭제","chat.liveVoiceKeyHelp":"키는 이 CUELO 서버에만 저장되고 화면에는 가려서 보입니다. 키가 없으면 기본 Codex 음성으로 통화합니다.","chat.liveVoiceConsent":"번들 참조 음성 7개를 내 Cartesia 계정에 비공개로 올려 복제하고, 복제와 통화 음성 생성에 Cartesia 크레딧이 쓰이며, 참조 음성의 이용 조건을 지킬 권리와 책임이 나에게 있음을 확인합니다.","chat.liveVoicePlanNote":"음성 복제는 복제가 되는 Cartesia 유료 플랜(Pro 이상)에서만 됩니다. 이미 만든 캐릭터는 다시 준비해도 새로 복제하지 않습니다.","chat.liveVoiceLicense":"참조 음성 라이선스(ACML 1.0)","chat.liveVoicePrepare":"캐릭터 음성 준비","chat.liveVoicePreparing":"준비 중…","chat.liveVoiceStateReady":"준비됨","chat.liveVoiceStateNotPrepared":"준비 전","chat.liveVoiceStatePreparing":"준비 중","chat.liveVoiceStateNeedsCheck":"확인 필요","chat.liveVoiceStateFailed":"실패","chat.liveVoiceStateMissingAsset":"자산 없음","chat.liveVoiceLoadFailed":"음성 설정을 불러오지 못했습니다","chat.disableSound":"완료 알림음 끄기","chat.enableSound":"완료 알림음 켜기","chat.thinkingAuto":"추론 강도 자동 선택","chat.thinkingAutoCapped":"자동 선택, 최대 {level}","chat.thinkingOff":"추론 끔","chat.thinkingMinimal":"최소 추론","chat.thinkingLow":"낮은 추론","chat.thinkingMedium":"중간 추론","chat.thinkingHigh":"높은 추론","chat.thinkingXhigh":"매우 높은 추론","chat.thinkingMax":"최대 추론","chat.builtIn":"기본 제공","chat.extensions":"확장","chat.customCommands":"사용자 지정 명령어","chat.mcpPrompts":"MCP 프롬프트","chat.prompts":"프롬프트","chat.fileCommands":"명령어 파일","chat.skills":"Skill","chat.dormant":"휴면","chat.commandCompact":"컨텍스트를 압축합니다. 선택적으로 지침을 지정할 수 있습니다","chat.commandReload":"확장, Skill, 프롬프트, 도구를 다시 불러옵니다","chat.commandName":"세션 표시 이름을 설정합니다","chat.commandSession":"세션의 메시지, Token, 비용 통계를 표시합니다","chat.commandCopy":"마지막 어시스턴트 메시지를 복사합니다","chat.goalLabel":"목표","chat.goalPaused":"일시정지됨","chat.goalBudgetLeft":"{left} 남음","chat.goalTokensUsed":"{used} 사용","chat.jumpToBottom":"맨 아래로 이동","chat.loadLater":"아래로 스크롤하면 이후 메시지를 불러옵니다 ({count}개 남음)","chat.jumpMissing":"이 메시지는 지금 대화 화면에 없습니다(다른 분기이거나 압축된 기록).","chat.questionRail":"내 질문","chat.searchPlaceholder":"대화에서 찾기","chat.searchNoResults":"결과 없음","chat.searchCount":"{index}/{total}","chat.searchPrevious":"이전 결과","chat.searchNext":"다음 결과","chat.searchClose":"찾기 닫기","chat.compactionLabel":"압축","chat.compactionProgress":"컨텍스트 압축 중 \xb7 {seconds}초","chat.compactionReason.manual":"수동","chat.compactionReason.threshold":"임계치","chat.compactionReason.overflow":"초과","chat.compactionReason.idle":"유휴","chat.compactionReason.incomplete":"미완료","chat.compactedFrom":"{tokens} 토큰에서 압축됨","chat.interruptedTitle":"지난 실행이 중단됐어요","chat.interruptedDetail":"서버나 PC가 꺼지는 등으로 실행 도중 멈췄습니다. 아무것도 다시 보내지 않았어요.","chat.interruptedDismiss":"닫기","chat.frequentModels":"자주 쓰는 모델","chat.modelPickCount":"{count}회","palette.searchPlaceholder":"대화 내용 검색","palette.searchResults":"대화 검색 결과","palette.searching":"검색 중…","palette.searchFailed":"검색하지 못했습니다","palette.searchEmpty":"일치하는 메시지가 없습니다","palette.searchHits":"메시지 {count}개","palette.searchTruncated.time":"시간 한도로 세션 {total}개 중 {scanned}개까지만 검색","palette.searchTruncated.bytes":"크기 한도로 세션 {total}개 중 {scanned}개까지만 검색","palette.searchTruncated.results":"앞쪽 결과만 표시 중 \xb7 검색어를 좁혀 보세요","palette.searchCompacted":"압축된 기록의 {count}개는 제외","palette.searchRoleUser":"내 질문","palette.searchRoleAssistant":"답변","palette.wideChatOn":"넓은 대화 폭 사용","palette.wideChatOff":"기본 대화 폭 사용","chat.compacted":"압축됨","chat.tokensSaved":"{saved} 절약","chat.filesWritten":"변경된 파일","chat.openWrittenFile":"{name} 열기","chat.lessonsSaved":"[교훈 저장] 이번 턴에 에이전트가 직접 저장했습니다.","chat.savedLesson":"교훈: {memory}","chat.savedSkill":"스킬 {action}: {name}","i18n.close":"닫기","i18n.copy":"복사","i18n.copied":"복사됨","i18n.cancel":"취소","i18n.save":"저장","i18n.saving":"저장 중…","i18n.saved":"저장됨","i18n.remove":"제거","i18n.removing":"제거 중…","i18n.delete":"삭제","i18n.loading":"불러오는 중...","i18n.search":"검색","i18n.refresh":"새로고침","i18n.update":"업데이트","i18n.updating":"업데이트 중...","restart.title":"CUELO 재시작 중","restart.body":"서버가 돌아오면 이 페이지가 자동으로 새로고침됩니다.","restart.slow":"재시작이 2분 넘게 끝나지 않았습니다. 서버 PC의 %USERPROFILE%\\\\.omp\\\\restart-ompweb.log에서 READY/FAILED를 확인하세요. 서버가 돌아오면 이 페이지는 그대로 새로고침됩니다.","restart.returnedTitle":"CUELO 재시작 완료","restart.returnedBody":"서버가 돌아와 이 탭을 같은 대화로 다시 연결했습니다.","restart.returnedDismiss":"재시작 알림 닫기","i18n.check":"확인","i18n.checking":"확인 중...","i18n.install":"설치","i18n.installing":"설치 중...","i18n.noResults":"결과 없음","i18n.searchProviders":"Provider 검색…","i18n.noProviders":"일치하는 Provider 없음","i18n.newModel":"새 모델","i18n.addProvider":"Provider 추가","i18n.selectProviderModel":"Provider 또는 모델을 선택하세요","i18n.visibleInPrompt":"모델 프롬프트에 표시됨 — 클릭하여 비활성화","i18n.hiddenFromPrompt":"모델 프롬프트에서 숨겨짐 — 클릭하여 활성화","i18n.dormant":"휴면","i18n.hiddenButInvocable":"모델에서 숨겨졌지만 수동 호출은 가능합니다","i18n.skillSearchPlaceholder":"예: react, testing, deploy","i18n.searching":"검색 중…","i18n.noSkills":"Skill을 찾을 수 없음","i18n.checkUpdates":"업데이트 확인","i18n.updates":"업데이트","i18n.noResolvedResources":"확인된 리소스 없음","i18n.enablePackage":"패키지 활성화","i18n.disablePackage":"패키지 비활성화","i18n.filtered":"필터링됨","i18n.openSessionToReload":"다시 불러오려면 세션을 여세요","i18n.notFound":"찾을 수 없음","i18n.noPlugins":"구성된 Plugin 없음","trust.resourcesNotLoaded":"제한 모드","trust.trustProject":"프로젝트 신뢰","trust.trusting":"신뢰 처리 중...","trust.cancel":"취소","trust.dialogTitle":"이 프로젝트를 신뢰하시겠습니까?","trust.dialogBody":"프로젝트 리소스는 로컬 코드를 실행할 수 있습니다. 내용을 알고 있는 프로젝트만 신뢰하세요.","trust.skillsNotLoaded":"이 프로젝트가 신뢰되지 않아 프로젝트 Skill이 로드되지 않았습니다.","trust.pluginsNotLoaded":"이 프로젝트가 신뢰되지 않아 프로젝트 Plugin이 로드되지 않았습니다.","trust.projectScopeUnavailable":"프로젝트 리소스가 로드되지 않은 동안에는 프로젝트 설치를 사용할 수 없습니다.","trust.pendingBadge":"제한 모드 \xb7 신뢰 예약됨","trust.scheduledTitle":"신뢰가 예약됐습니다","trust.scheduledBody":"이 프로젝트는 아직 제한 모드입니다. 이 프로젝트의 모든 세션이 지금 하는 작업을 마치면 신뢰가 적용되며, 실행 중인 작업은 중단되지 않습니다.","trust.cancelSchedule":"예약 취소","trust.close":"닫기","trust.applyFailed":"예약한 신뢰를 적용하지 못해 프로젝트는 계속 제한 모드입니다: {error}. 다시 시도하려면 다시 신뢰하세요.","trust.settingsNav":"프로젝트 신뢰","trust.settingsDescription":"자체 확장\xb7hook\xb7도구\xb7MCP 서버가 있는 프로젝트는 신뢰한 뒤에만 그 코드를 불러옵니다. 세션이 작업 중일 때 바꾼 설정은 그 프로젝트의 모든 세션이 idle이 되면 적용되며, 실행 중인 작업은 중단되지 않습니다.","trust.settingsEmpty":"아직 신뢰 결정이 필요한 프로젝트가 없습니다.","trust.loadFailed":"프로젝트 신뢰 상태를 불러오지 못했습니다: {error}","trust.stateTrusted":"신뢰됨","trust.stateRestricted":"제한 모드","trust.stateNotRequired":"신뢰가 필요한 프로젝트 코드 없음","trust.pendingGrant":"신뢰를 승인했지만 아직 적용 전입니다. 세션들이 작업을 마칠 때까지 제한 모드가 유지됩니다.","trust.pendingRevoke":"신뢰 해제는 이미 저장됐습니다. 실행 중인 세션 {count}개가 아직 프로젝트 코드를 쓰고 있으며, 지금 작업이 끝나면 제한 모드로 다시 시작합니다.","trust.runtime":"실행 세션 {sessions} \xb7 작업 중 {running} \xb7 프로젝트 코드 로드 {loaded}","trust.revoke":"신뢰 해제","trust.trustAgain":"다시 신뢰","trust.confirm":"확인","trust.working":"저장 중…","trust.confirmGrant":"이 프로젝트를 신뢰할까요? 프로젝트의 확장\xb7hook\xb7도구\xb7MCP 서버가 이 컴퓨터에서 실행될 수 있습니다.","trust.confirmTrustAgain":"해제를 되돌리는 것은 새 신뢰 승인입니다. 프로젝트의 확장\xb7hook\xb7도구\xb7MCP 서버가 이 컴퓨터에서 실행될 수 있습니다.","trust.confirmRevoke":"신뢰를 해제할까요? 새 세션은 바로 제한 모드로 시작하고, 실행 중인 세션은 지금 작업을 마친 뒤 적용됩니다.","trust.doneApplied":"적용했습니다. 이 프로젝트의 세션은 이제 이 설정으로 시작합니다.","trust.doneCancelled":"예약을 취소했습니다. 프로젝트는 계속 제한 모드입니다.","trust.refresh":"새로고침","i18n.creatingSession":"새 세션 생성 중…","i18n.creating":"생성 중…","i18n.subscription":"구독","i18n.subscriptions":"구독 목록","i18n.customEndpoint":"사용자 지정 엔드포인트 형식","i18n.noChanges":"변경 사항 없음","i18n.branches":"Branch 목록","i18n.noActiveSession":"활성 세션 없음","i18n.noBranches":"이 세션에는 Branch가 없습니다","i18n.source":"소스","i18n.preview":"미리보기","i18n.diff":"Diff","i18n.downloadFile":"파일 다운로드","i18n.liveSync":"실시간 동기화 활성","i18n.notWatching":"감시 안 함","i18n.fileViewMode":"파일 보기 모드","i18n.compareHead":"작업 트리를 HEAD와 비교","i18n.mentionSelectedLines":"선택한 줄 멘션","i18n.disableWrap":"자동 줄바꿈 끄기","i18n.enableWrap":"자동 줄바꿈 켜기","i18n.htmlPreview":"HTML 미리보기","i18n.previewFile":"{file} 미리보기","i18n.invalidMermaid":"잘못된 Mermaid 다이어그램","i18n.renderingMermaid":"Mermaid 다이어그램 렌더링 중","i18n.previewAfterStreaming":"스트리밍 완료 후 미리보기 가능","i18n.showMermaidSource":"Mermaid 소스 보기","i18n.previewMermaid":"Mermaid 다이어그램 미리보기","i18n.openMermaidViewer":"다이어그램 뷰어 열기","i18n.mermaidViewer":"Mermaid 다이어그램 뷰어","i18n.mermaidDiagram":"Mermaid 다이어그램","i18n.zoomOut":"축소","i18n.zoomIn":"확대","i18n.fitToWidth":"너비에 맞춤","models.discoveryFetching":"모델 가져오는 중…","models.discoveryFetch":"모델 가져오기…","models.discoveryFilterPlaceholder":"{count}개 모델 필터…","models.discoveryFilter":"업스트림 모델 필터","models.discoverySelectShown":"표시된 항목 선택","models.discoveryNoMatches":"일치하는 모델이 없습니다.","models.discoveryAdded":"추가됨","models.discoveryShowing":"전체 {total}개 중 처음 {shown}개 표시","models.discoveryFetched":"{count}개 모델을 가져왔습니다","models.discoveryAddSelected":"선택 항목 추가","models.discoveryAddSelectedCount":"선택 항목 추가 ({count})","models.catalogSource":"출처: models.dev ↗","models.catalogFilling":"세부 정보 채우는 중…","models.catalogFill":"모델 세부 정보 채우기","models.catalogFilled":"{count}개 필드가 채워졌습니다","models.catalogNoEmptyFields":"채울 빈 필드가 없습니다","models.catalogNoExactMatch":"models.dev에서 정확히 일치하는 항목 없음","models.catalogPriceProvider":"Provider {provider}와 가격 일치","models.catalogPriceBaseUrl":"Base URL이 {provider}와 가격 일치","models.catalogPriceConsensus":"{total}개 중 {support}개 레코드에서 가격 일치","models.catalogPriceUnreliable":"신뢰할 수 있는 가격을 찾지 못했습니다","models.catalogUndo":"실행 취소","i18n.testingModel":"모델 연결 테스트 중...","i18n.connected":"연결됨","i18n.failed":"실패","i18n.test":"테스트","i18n.testConnection":"모델 연결 테스트","i18n.provider":"제공자","i18n.model":"모델","i18n.providerName":"Provider 이름","i18n.rename":"이름 변경","i18n.default":"기본값","i18n.disabled":"비활성화됨","i18n.noResources":"리소스 없음","i18n.unknown":"알 수 없음","i18n.installedVersion":"설치됨 {version}","i18n.configuredVersion":"설정됨 {version}","i18n.extensions":"확장","i18n.prompts":"프롬프트","i18n.themes":"테마","i18n.resourceCount":"{count} {label}","i18n.extensionShort":"확장","i18n.skillShort":"Skill","i18n.promptShort":"프롬프트","i18n.themeShort":"테마","i18n.custom":"사용자 지정","i18n.clearAll":"모두 지우기","i18n.connectedSuccessfully":"연결에 성공했습니다.","i18n.notConnected":"연결 안 됨","i18n.configured":"설정됨","i18n.notConfigured":"설정 안 됨","i18n.openingBrowser":"브라우저를 여는 중…","i18n.submit":"제출","i18n.login":"로그인","i18n.relogin":"다시 로그인","i18n.disconnect":"연결 해제","i18n.networkError":"네트워크 오류","i18n.continuing":"계속 진행 중…","i18n.skills":"Skill","i18n.plugins":"Plugin","i18n.addSkill":"Skill 추가","i18n.addPlugin":"Plugin 추가","i18n.selectSkill":"Skill 선택","i18n.selectPackage":"패키지 선택","i18n.updateAvailable":"업데이트 있음","i18n.upToDate":"최신 상태","i18n.automaticChecksUnavailable":"자동 확인 불가","i18n.checkFailed":"확인 실패","i18n.installed":"설치됨","i18n.status":"상태","i18n.version":"버전","i18n.package":"패키지","i18n.resources":"리소스","i18n.installedPath":"설치 경로","i18n.cwd":"CWD","i18n.resolvedResources":"확인된 리소스","i18n.reloadSession":"세션 다시 불러오기","i18n.reloadSessionHint":"열린 세션의 설정과 스킬을 다시 불러옵니다. Plugin은 해제되지 않으니, 해제하려면 CUELO를 재시작하세요.","i18n.reloading":"다시 불러오는 중...","i18n.packageRemoved":"패키지가 제거되었습니다.","i18n.packageInstalled":"패키지가 설치되었습니다.","i18n.packageUpdated":"패키지가 업데이트되었습니다.","i18n.packageDisabled":"패키지가 비활성화되었습니다.","i18n.packageDisabledRestartRequired":"비활성화 설정을 저장했습니다. 이미 불러온 Plugin은 CUELO를 재시작해야 멈춥니다. 세션 다시 불러오기로는 해제되지 않습니다.","i18n.packageEnabled":"패키지가 활성화되었습니다.","i18n.sessionReloaded":"세션을 다시 불러왔습니다.","i18n.thinking":"사고 과정","i18n.loadingThinking":"사고 과정 불러오는 중...","i18n.copyMessage":"메시지 복사","i18n.editFromHere":"여기서부터 편집","i18n.editFromHereTitle":"여기서부터 편집 — 이 세션 내에서 분기합니다","i18n.newSession":"새 세션","i18n.newSessionTitle":"새 세션 — 여기서부터 독립된 복사본을 만듭니다","i18n.estimatedTokens":"스트리밍 중 예상 Token 수","i18n.messageUsage":"사용량","i18n.messageUsageTitle":"이 메시지의 Token\xb7비용 보기","i18n.noOutput":"(출력 없음)","i18n.noSummary":"(요약 없음)","i18n.conversationCompacted":"대화가 압축됨","i18n.compactionDescription":"이 지점 이전의 대화 기록이 다음 요약으로 압축되었습니다:","i18n.fileContext":"파일 컨텍스트: {details}","i18n.readFiles":"읽은 파일","i18n.modifiedFiles":"수정된 파일","i18n.hiddenExtensionMessage":"숨겨진 확장 메시지","i18n.noMessage":"(메시지 없음)","i18n.showExtensionMessage":"확장 메시지 표시","i18n.collapse":"접기","i18n.expand":"펼치기","i18n.hideDetails":"세부 정보 숨기기","i18n.showDetails":"세부 정보 표시","i18n.thinkingUnavailable":"사고 내용을 사용할 수 없음","i18n.before":"이전","i18n.after":"이후","i18n.largeMessageReveal":"메시지 내용이 매우 큽니다 ({size}). 클릭하면 일반 텍스트로 표시합니다 — 페이지 반응성을 유지하기 위해 마크다운 렌더링은 비활성화됩니다.","i18n.sessionComplete":"세션 완료","i18n.taskFinished":"작업이 완료되었습니다.","i18n.attentionNeeded":"확인이 필요합니다","i18n.extensionInputNeeded":"확장이 입력을 기다립니다.","navigator.toolbar":"탐색 보기","navigator.priority":"우선순위","navigator.view":"{label} 보기","gpt6.boundBadge":"6PRO {handle}","gpt6.boundBadgeHint":"이 세션은 6 Pro 연결번호 {handle}에 묶여 있습니다.","usage.none":"사용량 —","usage.open":"사용량 자세히 보기: {rows}","usage.openMore":", 그 외 {count}개","usage.showMore":"나머지 {count}개 보기","usage.showLess":"접기","usage.accountBlocked":"자동 차단","usage.accountSpent":"계정 한도 소진","usage.limitSpent":"한도 소진","usage.bai":"B.AI 누적토큰","usage.baiEmpty":"기록 없음","usage.baiRange":"집계 {from}~{to}","usage.baiUnmeasured":"미측정","usage.title":"사용량","usage.reorder":"순서 편집","usage.reorderDone":"완료","usage.reorderGroup":"계정 표시 순서","usage.moveUp":"{account} 위로","usage.moveDown":"{account} 아래로","usage.moved":"{account}: {position}번째로 이동","usage.authExpired":"인증 만료","usage.authUnavailable":"사용 불가","usage.relogin":"재로그인","usage.reloginFor":"{account} 계정 재로그인","usage.authIssues":"계정 오류 {count}","relogin.title":"재로그인 대상","relogin.guide":"「{action}」을 누른 뒤 브라우저에서 이 계정으로 로그인하세요. 다른 계정으로 로그인하면 이 계정의 오류는 그대로 남습니다.","relogin.done":"로그인을 마쳤습니다.","relogin.checking":"{account} 상태를 확인하려고 사용량을 다시 읽는 중…","relogin.recovered":"{account} 계정 인증이 복구됐습니다.","relogin.stillFailing":"로그인은 끝났지만 {account} 계정은 아직 인증 오류입니다. 다른 계정으로 로그인했을 수 있습니다.","relogin.unknown":"사용량에서 {account} 계정을 찾지 못해 복구 여부를 확인하지 못했습니다.","efficiency.title":"효율","efficiency.governor":"실행 통제","efficiency.lab":"구성 비교","efficiency.refresh":"새로고침","efficiency.refreshing":"불러오는 중…","efficiency.noSession":"세션을 선택하면 실행 기록을 볼 수 있습니다.","efficiency.loadingRuns":"실행 목록을 불러오는 중…","efficiency.runsEmpty":"이 세션에 기록된 실행이 없습니다.","efficiency.runsError":"실행 목록을 불러오지 못했습니다.","efficiency.selectRun":"실행을 고르면 역할\xb7병목\xb7미측정 공백을 볼 수 있습니다.","efficiency.loadingDetail":"실행 상세를 불러오는 중…","efficiency.detailError":"실행 상세를 불러오지 못했습니다.","efficiency.noTitle":"제목 없는 요청","efficiency.elapsed":"경과","efficiency.busyTotal":"생성시간 합","efficiency.noSumNote":"경과와 생성시간 합은 나란히만 두고 더하지 않습니다.","efficiency.summarySection":"요약","efficiency.rolesSection":"역할","efficiency.rolesEmpty":"이 실행에서 요청을 처리한 역할이 없습니다.","efficiency.bottlenecksSection":"병목","efficiency.bottlenecksEmpty":"측정된 병목이 없습니다.","efficiency.toolsSection":"도구 호출","efficiency.unmeasuredGap":"원인 미측정 공백","efficiency.elapsedValue":"경과 {value}","efficiency.estimatedCostValue":"추정 {value}","efficiency.estimatedCost":"추정 비용","efficiency.untimedLowerBound":"소요시간이 기록되지 않은 요청 {value}건 — 생성시간은 하한입니다.","efficiency.bottleneckOrderNote":"관측된 크기가 큰 순서입니다. 막대는 1위 대비 길이이며 경과시간 대비가 아닙니다.","efficiency.untimedRuns":"소요시간 미기록 run","efficiency.untimedMedianLowerBound":"소요시간이 기록되지 않은 요청이 있는 run {value}건 — 생성시간 중앙값은 하한입니다.","efficiency.unpricedLowerBound":"가격 미기록 포함 — 하한","efficiency.unmeasuredShort":"미측정","efficiency.effortLabel":"effort {value}","efficiency.requestsValue":"요청 {value}회","efficiency.toolCallsValue":"도구 호출 {value}회","efficiency.busyTime":"생성시간","efficiency.tokens":"토큰","efficiency.unpricedRequests":"가격 미기록 요청","efficiency.firstTokenAvg":"첫 응답 대기(평균)","efficiency.firstTokenPartial":"첫 응답 대기는 기록된 요청 {recorded}/{total}건의 평균입니다.","efficiency.outputTokens":"대화 출력 토큰","efficiency.helpersTitle":"보조 모델 호출","efficiency.helperCallsValue":"{count}회 \xb7 출력 {output} \xb7 합계 {tokens} \xb7 {cost}","efficiency.helpersIncludedNote":"보조 호출의 토큰\xb7비용은 위 토큰\xb7추정 비용 합계에 들어 있고, 요청 수\xb7첫 응답 대기\xb7대화 출력 토큰에서는 빠집니다.","efficiency.toolErrorsValue":"오류 {value}회","efficiency.unmeasuredGapValue":"원인 미측정 공백 {value}","efficiency.roleMain":"Main","efficiency.roleMaker":"Maker","efficiency.roleChecker":"Checker","efficiency.roleAdvisor":"Advisor","efficiency.roleUnattributed":"미배정","efficiency.purposePrimary":"Primary","efficiency.purposeRework":"Rework","efficiency.purposeReview":"Review","efficiency.outcomeCompleted":"완료","efficiency.outcomeError":"오류","efficiency.outcomeAborted":"중단됨","efficiency.outcomeInterrupted":"요청으로 끊김","efficiency.outcomeRunning":"실행 중","efficiency.folder":"폴더","efficiency.folderAll":"전체 폴더","efficiency.folderPlaceholder":"폴더로 걸러보기, Enter로 적용","efficiency.loadingExperiments":"구성 비교를 불러오는 중…","efficiency.experimentsEmpty":"비교할 구성이 기록되지 않았습니다.","efficiency.experimentsError":"구성 비교를 불러오지 못했습니다.","efficiency.difficultyNote":"작업 난이도는 보정되지 않음","efficiency.runsValue":"실행 {value}회","efficiency.medianElapsed":"경과 중앙값","efficiency.medianBusy":"생성시간 중앙값","efficiency.medianTokens":"토큰 중앙값","efficiency.medianEstimatedCost":"추정 비용 중앙값","efficiency.totalEstimatedCost":"추정 비용 합","efficiency.reworkRate":"재작업률","efficiency.errorRate":"오류율","efficiency.unpricedRuns":"가격 미기록 run","efficiency.scopeAttributed":"현재 역할 체계만","efficiency.scopeAll":"전체 기록","efficiency.scopeSessions":"집계 세션","efficiency.scopeRuns":"집계 run","efficiency.scopeExcludedRuns":"제외된 run"}'),s=["en","zh-CN","ko"],r=new Map;function c(e){if(!e.id.trim())throw Error("Locale id must not be empty");if(r.has(e.id))throw Error(`Locale already registered: ${e.id}`);r.set(e.id,e)}function l(){return[...r.keys()]}c({id:"en",label:"English",messages:{"common.ok":"OK","common.language":"Language","common.models":"Models","common.skills":"Skills","common.plugins":"Plugins","common.settings":"Settings","updates.available":"CUELO update available","updates.availableTitle":"CUELO {version} is available","updates.dialogEyebrow":"CUELO release","updates.dialogTitle":"New CUELO version","updates.current":"Running CUELO {version}","updates.changelog":"Changelog","updates.viewRelease":"View release","updates.manual":"Running from source? Update with this command, then restart.","updates.copyCommand":"Copy command","updates.commandCopied":"Command copied","updates.copyFailed":"Unable to copy the command","sidebar.hide":"Hide sidebar","sidebar.show":"Show sidebar","theme.light":"Light mode (click for dark)","theme.dark":"Dark mode (click for system)","theme.auto":"System theme (click for light)","history.full":"Full history","history.unsaved":"Full history is available after the session is saved","history.label":"Full history","title.generating":"Generating...","title.updated":"Title updated","title.failed":"Generation failed","title.generate":"Generate title","title.unsaved":"Title generation is available after the session is saved","title.noMessages":"Send a message before naming this session","title.generateSession":"Generate a session title","system.prompt":"System prompt","system.empty":"System prompt is empty (tools are disabled)","system.load":"Send a message to load the system prompt","system.label":"System","session.info":"Session info","session.name":"Name","session.file":"File","session.inMemory":"In-memory","session.id":"ID","session.user":"User","session.assistant":"Assistant","session.toolCalls":"Tool Calls","session.toolResults":"Tool Results","session.total":"Total","session.input":"Input","session.output":"Output","session.cacheRead":"Cache Read","session.cacheWrite":"Cache Write","session.cost":"Cost","session.context":"Context","session.cacheHitRate":"Avg cache hit rate","session.copy":"Copy {value}","session.copied":"Copied","session.title":"Session info","session.load":"Send a message or run /session to load session info","session.infoSection":"Session Info","session.messages":"Messages","session.tokens":"Tokens","session.totalActive":"Active Time","session.copyFile":"Copy file path","session.copyId":"Copy session ID","workspace.opening":"Opening workspace...","workspace.unable":"Unable to open workspace","workspace.selectSession":"Select a session from the sidebar","workspace.getStarted":"Get Started","workspace.selectProject":"Select a project directory from the sidebar","workspace.addModels":"Add models via the Models button at the bottom","workspace.stepProject":"Select a project directory from the sidebar","workspace.stepModels":"Add models via the Models button at the bottom","workspace.mainWorking":"Working","workspace.mainWaiting":"Waiting","workspace.mainIdle":"Idle","workspace.mainAttention":"Input needed","files.hidePanel":"Hide file panel","files.showPanel":"Show file panel","files.noneOpen":"No file open","layout.resizeSidebar":"Resize sidebar","layout.resizeFilePanel":"Resize file panel","layout.resizeHint":"Drag to resize. Double-click or press Enter to reset.","sidebar.new":"New","sidebar.newSessionTitle":"New session in {path}","sidebar.refresh":"Refresh","sidebar.projects":"Projects","subagents.title":"Subagents","subagents.running":"Running","subagents.finished":"Finished","subagents.history":"History","subagents.runningCount":"{count} running","subagents.finishedCount":"{count} finished","subagents.failed":"Failed","subagents.aborted":"Aborted","subagents.back":"Back to subagents","subagents.retrying":"Retrying {attempt}/{max}","subagents.usingTool":"Using {tool}","subagents.details":"Subagent execution details","subagents.closeDetails":"Close subagent details","subagents.noTask":"No task description","subagents.tools":"{count} tools","subagents.tokens":"{count} tokens","subagents.loadingTranscript":"Loading live transcript…","subagents.noTranscript":"The subagent has not written any transcript messages yet.","subagents.transcriptUnavailable":"Live transcript is not available yet. Retrying while the subagent runs.","sidebar.searchProjectsAndSessions":"Search projects and session titles…","sidebar.addProject":"Add custom project path","sidebar.projectActions":"Project actions","sidebar.projectAlias":"Alias","sidebar.projectAliasEdit":"Edit alias","sidebar.projectHide":"Hide","sidebar.projectUnhide":"Unhide","sidebar.projectShowHidden":"Show hidden projects","sidebar.temporaryProjects":"Temporary / system paths","sidebar.projectMoveUp":"Move up","sidebar.projectMoveDown":"Move down","sidebar.projectMoveDisabledWhileFiltering":"Clear the search filter to reorder projects","sidebar.projectUpdateFailed":"Unable to save project changes. Try again.","sidebar.expandProject":"Expand project","sidebar.collapseProject":"Collapse project","sidebar.showMore":"Show more","sidebar.showLess":"Show less","sidebar.selectProject":"Select project…","sidebar.filterProjects":"Filter projects…","sidebar.noMatchingProjects":"No matching projects","sidebar.useDefaultDirectory":"Use default directory","sidebar.customPath":"Custom path…","directoryPicker.selectDirectory":"Select directory","directoryPicker.goToParent":"Go to parent directory","directoryPicker.directoryPath":"Directory path","directoryPicker.goToDirectory":"Go to directory","directoryPicker.go":"Go","directoryPicker.loadingDirectories":"Loading directories…","directoryPicker.noSubdirectories":"No subdirectories","directoryPicker.openBeforeSelecting":"Open this path before selecting it","directoryPicker.selectCurrentDirectory":"Select current directory","directoryPicker.selectThisFolder":"Select this folder","directoryPicker.noDrives":"No drives found","sidebar.checking":"Checking…","sidebar.open":"Open","sidebar.cancel":"Cancel","sidebar.openRepoRoot":"Open repo root","sidebar.openRepoRootTitle":"Open the repository root to manage worktrees.","sidebar.gitRepoRootOnly":"Git repo root only","sidebar.gitRepoRootOnlyTitle":"Worktrees are available in Git repository roots.","sidebar.worktrees":"Worktrees...","sidebar.checkingWorktrees":"Checking worktrees for this directory.","sidebar.filterWorktrees":"Filter worktrees…","sidebar.noMatchingWorktrees":"No matching worktrees","sidebar.switchWorktree":"Switch worktree","sidebar.switchWorktreeTitle":"Switch worktree: {path}","sidebar.main":"main","sidebar.forceRemoveCheckout":"Uncommitted changes. Force remove checkout?","sidebar.force":"Force","sidebar.createWorktreeTitle":"Create a worktree checkout for a branch","sidebar.newWorktree":"New worktree…","sidebar.branchName":"branch name","sidebar.creating":"Creating…","sidebar.create":"Create","sidebar.loading":"Loading...","sidebar.noSessions":"No sessions found","sidebar.agentRunning":"Agent running…","sidebar.newActivity":"New activity","sidebar.newSessionActivity":"New session activity","sidebar.deleteSession":"Delete {title}?","sidebar.rename":"Rename","sidebar.pin":"Pin to top","sidebar.unpin":"Unpin","sidebar.pinned":"Pinned","sidebar.delete":"Delete","sidebar.deleteWithShiftClick":"Delete (Shift+click to delete without confirmation)","sidebar.clearProjectSessions":"Clear sessions","sidebar.clearPriorityList":"Clear list","sidebar.newScratchSession":"New session","sidebar.newScratchSessionTitle":"Start a session without a project (in a dated scratch folder under your home)","sidebar.newScratchSessionFailed":"Could not create the scratch folder: {error}","sidebar.clearSessionsTitle":"Confirm session deletion","sidebar.clearSessionsProjectBody":"Permanently delete {count} session(s) in {project}. This cannot be undone.","sidebar.clearSessionsPriorityBody":"Permanently delete {count} session(s) in the priority list. This cannot be undone.","sidebar.clearSessionsRunningExcluded":"{count} running session(s) will be kept.","sidebar.clearSessionsNone":"No session can be deleted right now.","sidebar.clearSessionsConfirm":"Delete","sidebar.clearSessionsCancel":"Cancel","sidebar.clearSessionsBusy":"Deleting…","sidebar.clearSessionsFailed":"Could not delete {count} session(s): {names}","sidebar.archive":"Archive (hide from list, restorable)","sidebar.archived":"Archived","sidebar.restore":"Restore","sidebar.noArchivedSessions":"No archived sessions","sidebar.expandForks":"Expand forks","sidebar.collapseForks":"Collapse forks","sidebar.messagesCount":"{count} msgs","sidebar.worktreePath":"Worktree: {path}","sidebar.removeWorktreeTitle":"Remove worktree checkout {path}; the branch is kept","files.deleted":"Deleted","files.insertPath":"Insert path into chat","files.mention":"mention","chat.loadingSession":"Loading session...","chat.runningTool":"Running tool...","chat.runningNamedTool":"Running {name}...","chat.runningTools":"Running {names}...","chat.runningToolsMore":"Running {names} (+{count})...","chat.waitingModel":"Waiting for model...","todo.progress":"{percent}% \xb7 {completed} of {total} done \xb7 {remaining} remaining","todo.progressDone":"{percent}% \xb7 {completed} of {total} done","todo.allDone":"All {count} done","todo.showCompleted":"Show {count} completed","todo.hideCompleted":"Hide {count} completed","chat.runningCommand":"Running command...","chat.thinking":"Thinking...","chat.contextUsageTitle":"Context window: {used} of {limit} tokens ({percent})","chat.contextUsageWarning":"Context window is getting full","chat.contextUsageCritical":"Context window is nearly full","chat.processDetails":"Process details","chat.message":"message","chat.messages":"messages","chat.toolCall":"tool call","chat.toolCalls":"tool calls","chat.collapseProcess":"Collapse process details","chat.expandProcess":"Expand process details","process.empty":"No process activity in this session yet","process.turn":"turn","process.turns":"turns","chat.filesWritten":"Files changed","chat.openWrittenFile":"Open {name}","chat.lessonsSaved":"[Lessons saved] The agent stored these itself during this turn.","chat.savedLesson":"Lesson: {memory}","chat.savedSkill":"Skill {action}: {name}","chat.loadEarlier":"Scroll up to load earlier messages ({count} hidden)","chat.extensionRequest":"extension request","chat.responseSending":"Sending your answer...","chat.responseFailed":"Your answer did not reach the agent. It is still waiting - try again.","chat.cancel":"Cancel","chat.confirm":"Confirm","chat.submit":"Submit","chat.agentQuestion":"Agent needs your input","chat.agentQuestionHint":"Choose an option or provide a custom response.","chat.askAutoSelectHint":"If there is no response for {seconds}s, the recommended option is selected automatically. Choosing or typing restarts the wait.","chat.recommended":"Recommended","chat.customAnswer":"Other response (optional)","chat.chatAboutThis":"Chat about this","chat.submitAnswer":"Submit answer","chat.planApproval":"Plan approval","chat.planFeedback":"Feedback for another planning pass (optional)","chat.refinePlan":"Continue planning","chat.approvePlan":"Approve and implement","chat.extensionInput":"Extension terminal input","chat.extensionPanel":"Extension panel","chat.close":"Close","chat.queued":"Queued \xb7 {count}","chat.recall":"Recall to input","chat.recallTitle":"Remove all queued messages and put them back into the input box for editing","chat.queueRemove":"Cancel this queued message only","chat.retrying":"Retrying ({attempt}/{max})…","chat.loadingCommands":"Loading commands...","chat.slashCommands":"Slash commands \xb7 {label}","chat.tabEnter":"Tab / Enter","chat.noCommands":"No commands found","chat.match":"1 match","chat.matches":"{count} matches","chat.command":"1 command","chat.commands":"{count} commands","chat.loadingFiles":"Loading files...","chat.files":"Files \xb7 {label}{hint}","chat.searching":"Searching…","chat.noMatchingFiles":"No matching files","chat.searchingAll":" \xb7 searching all files…","chat.indexTruncated":" \xb7 index truncated","chat.steerPlaceholder":"Steer now / queue follow-up...","chat.agentPlaceholder":"Agent is running…","chat.messagePlaceholder":"Message… Type / for commands, @ for files","chat.steer":"Steer","chat.followUp":"Follow-up","chat.send":"Send","chat.attachImageLimit":"A message can include at most {count} images.","chat.attachImageTooLarge":"{name} exceeds the {limit} per-image limit.","chat.attachFile":"Attach files","chat.attachments":"Attachments","chat.removeImage":"Remove image {index}","chat.removeAttachment":"Remove {name}","chat.attachExtracting":"Extracting text","chat.attachExtractingWait":"Wait for the attachments to finish processing","chat.attachLimit":"A message can include at most {count} non-image attachments.","chat.attachTooLarge":"{name} exceeds the {limit} per-document limit.","chat.attachTotalTooLarge":"Attached documents exceed the {limit} combined size limit.","chat.attachTextTooLarge":"{name} exceeds the {limit}-character extracted text limit.","chat.attachTooManyPages":"{name} exceeds the {limit}-page PDF limit.","chat.attachNoPdfText":"{name} has no extractable text. Scanned or image-only PDFs require OCR, which is not supported.","chat.attachPasswordProtected":"{name} is password-protected and cannot be extracted.","chat.attachExtractFailed":"Could not extract text from {name}.","chat.attachKindAudio":"Audio","chat.attachKindFile":"File","chat.attachUploading":"Saving","chat.attachTranscribing":"Transcribing","chat.attachTranscribeFailed":"Transcription failed","chat.attachStoredTooLarge":"{name} exceeds the {limit} per-file limit.","chat.attachUploadFailed":"Could not save {name}: {error}","chat.attachTranscribePending":"Needs your choice","chat.transcribeGroup":"Audio transcription","chat.transcribeChecking":"Checking length","chat.transcribeConfirmTitle":"Transcribe {name}?","chat.transcribePlanSummary":"{duration} \xb7 transcription calls: about {calls}","chat.transcribeDurationUnknown":"Length unknown","chat.transcribeUsageNotice":"Transcription counts toward the connected account's usage. Nothing is sent until you start.","chat.transcribeStart":"Start transcription","chat.transcribeSkip":"Don't transcribe","chat.transcribeCancel":"Cancel transcription","chat.transcribeRunning":"Transcribing {name}","chat.transcribeRetry":"Try again","chat.transcribeAction":"Transcribe","chat.transcribeSkipped":"{name} has no transcript; only the saved file path is sent.","chat.transcribeFailedRow":"{name}: transcription failed. {error}","chat.transcribeToolMissing":"The audio tool (ffmpeg) is not available, so this audio cannot be prepared for transcription.","chat.transcribePartialFailed":"Stopped after {done} of {total} parts; no partial transcript is attached.","chat.transcribeTooLong":"The transcript does not fit beside the other attachments.","chat.attachmentSettingsNav":"Attachments","chat.attachmentSettingsTitle":"Attachments","chat.attachmentSettingsDescription":"Files you attach in chat are saved on this computer so the agent can open them.","chat.attachmentSettingsLoadFailed":"Could not load attachment settings","chat.attachmentUploadLimit":"Upload limit per file (MB)","chat.attachmentUploadLimitHelp":"Larger files are refused before they are sent. Text read straight into the message keeps its own limits: 8 MB per document and 240,000 characters in total.","chat.attachmentUploadLimitInvalid":"Enter a whole number of MB, 1 or more.","chat.attachmentAutoCleanup":"Delete unused attachments automatically","chat.attachmentAutoCleanupHelp":"Attachments used by a conversation, a branch, or an unsent draft are kept. A file is deleted {days} days after it is confirmed unused everywhere; a file whose use cannot be confirmed is kept.","chat.attachmentSettingsSaved":"Saved","chat.steerTitle":"Interrupt the current run and inject this message now","chat.followUpTitle":"Queue this message after the agent finishes","chat.filterModels":"Filter models…","chat.noMatchingModels":"No matching models","chat.modelRoles":"Roles","chat.allModels":"All models","chat.mainPreset":"Main preset","roles.title":"Model roles","roles.description":"omp routes work by role, not by one current model. Assign a model to each role and both CUELO and the omp CLI use it.","roles.scope":"Save to","roles.scopeGlobal":"Global","roles.scopeProject":"This project","roles.unset":"— not set —","roles.needsProject":"Open a project to edit its model roles.","roles.source.global":"from global config","roles.source.project":"from project config","roles.source.default":"omp default","roles.thinking":"Thinking","roles.thinkingInherit":"Use the configured default thinking level","roles.harnessNote":"CUELO Maker slots are listed even before you assign them. Pick your own model only for the slots you use; saving does not sign in or test the model.","roles.harnessUnset":"not set","roles.harness.implSonnet":"Maker \xb7 NORMAL non-UI (first choice)","roles.harness.implOpus":"Maker \xb7 NORMAL UI/UX","roles.harness.implDeepSeek":"Maker \xb7 NORMAL fallback","roles.harness.makerHardUiOpus":"Maker \xb7 HARD UI/UX","roles.harness.makerHardCodeOpus":"Maker \xb7 HARD code","roles.harness.makerHardCodeSonnet":"Maker \xb7 HARD code fallback","chat.moreControls":"Run options","chat.collapseControls":"Close run options","chat.shell":"Shell","chat.outputLocal":"output stays local","chat.outputModel":"output sent to model","chat.noTools":"No tools, read-only","chat.builtInTools":"Core: {tools} \xb7 other registered tools stay enabled","chat.allBuiltInTools":"Core: {tools} \xb7 other registered tools stay enabled","chat.changeReasoning":"Change reasoning level: {level}","chat.changeReasoningLabel":"Change reasoning level","chat.currentReasoning":"Current reasoning level: {level}","chat.fastModeActive":"Fast on \xb7 applied to this model. Priority service may cost more or use more quota. Click to turn off","chat.fastModeInactive":"Fast requested \xb7 not applied for this model or account. Click to turn off","chat.fastModeOff":"Fast off \xb7 click to request priority service (may cost more or use more quota, depending on the provider)","chat.fastModeUnknown":"Fast state not checked yet \xb7 click to read this session's actual state and change it","chat.fastModeBusy":"Changing Fast","chat.changeToolPreset":"Change tool preset","chat.stopCompaction":"Stop compaction","chat.compactContext":"Compact context","chat.compacting":"Compacting…","chat.compact":"Compact","chat.stopAgent":"Stop agent","chat.stop":"Stop","chat.liveVoice":"Live voice","chat.liveStart":"Start live voice","chat.liveStop":"End live voice","chat.liveConnecting":"Connecting","chat.liveOn":"Live","chat.liveWorking":"Working","chat.liveUnsupported":"This browser cannot make live calls","chat.liveMicDenied":"Microphone access was denied","chat.liveMicUnavailable":"No microphone is available","chat.liveAuthRequired":"Sign in to Codex to use live voice","chat.liveUpstreamFailed":"Codex refused the live call","chat.liveFailed":"The live call could not start","chat.liveNeedsSession":"Choose a folder first — a live call speaks as this conversation's agent","chat.liveVoiceFailed":"The character voice could not be produced, so the call ended","chat.liveVoiceCharacter":"{name}'s voice","chat.liveVoiceProvisional":"provisional tuning","chat.liveVoiceNativeNotReady":"{name} voice not ready \xb7 default voice","chat.liveVoiceNativeUnknown":"Character unknown \xb7 default voice","chat.liveVoiceSettingsNav":"Call voice","chat.liveVoiceSettingsTitle":"Character call voice (Cartesia)","chat.liveVoiceSettingsDescription":"Manages the Cartesia API key and the character voice preparation stored on this CUELO server. Each change is applied by its own button.","chat.liveVoiceCharacters":"Characters","chat.liveVoiceKeyLabel":"Cartesia API key","chat.liveVoiceKeySaved":"Saved key: {hint}","chat.liveVoiceKeySave":"Save key","chat.liveVoiceKeyRemove":"Remove key","chat.liveVoiceKeyHelp":"The key stays on this CUELO server and is shown masked. Without a key, calls use the default Codex voice.","chat.liveVoiceConsent":"I confirm that the 7 bundled reference voices will be uploaded privately to my Cartesia account and cloned, that cloning and call speech use Cartesia credits, and that I am responsible for following the reference voices' license terms.","chat.liveVoicePlanNote":"Voice cloning requires a paid Cartesia plan that allows cloning (Pro or higher). Characters that are already prepared are never cloned again.","chat.liveVoiceLicense":"Reference voice license (ACML 1.0)","chat.liveVoicePrepare":"Prepare character voices","chat.liveVoicePreparing":"Preparing…","chat.liveVoiceStateReady":"Ready","chat.liveVoiceStateNotPrepared":"Not prepared","chat.liveVoiceStatePreparing":"Preparing","chat.liveVoiceStateNeedsCheck":"Needs check","chat.liveVoiceStateFailed":"Failed","chat.liveVoiceStateMissingAsset":"Asset missing","chat.liveVoiceLoadFailed":"Could not load voice settings","chat.disableSound":"Disable completion sound","chat.enableSound":"Enable completion sound","chat.thinkingAuto":"Automatically select reasoning effort","chat.thinkingAutoCapped":"Automatic, at most {level}","chat.thinkingOff":"Reasoning off","chat.thinkingMinimal":"Minimal reasoning","chat.thinkingLow":"Low reasoning","chat.thinkingMedium":"Medium reasoning","chat.thinkingHigh":"High reasoning","chat.thinkingXhigh":"Extra-high reasoning","chat.thinkingMax":"Max reasoning","chat.builtIn":"Built-in","chat.extensions":"Extensions","chat.customCommands":"Custom commands","chat.mcpPrompts":"MCP prompts","chat.prompts":"Prompts","chat.fileCommands":"Command files","chat.skills":"Skills","chat.dormant":"dormant","chat.commandCompact":"Compress context, optionally with instructions","chat.commandReload":"Reload extensions, skills, prompts, and tools","chat.commandName":"Set the session display name","chat.commandSession":"Show session message, token, and cost stats","chat.commandCopy":"Copy the last assistant message","chat.goalLabel":"Goal","chat.goalPaused":"paused","chat.goalBudgetLeft":"{left} left","chat.goalTokensUsed":"{used} used","chat.jumpToBottom":"Jump to bottom","chat.loadLater":"Scroll down to load later messages ({count} below)","chat.jumpMissing":"That message is not in this conversation view (another branch or compacted history).","chat.questionRail":"Your questions","chat.searchPlaceholder":"Find in conversation","chat.searchNoResults":"No results","chat.searchCount":"{index}/{total}","chat.searchPrevious":"Previous match","chat.searchNext":"Next match","chat.searchClose":"Close find","chat.compactionLabel":"Compacting","chat.compactionProgress":"Compacting context \xb7 {seconds}s","chat.compactionReason.manual":"manual","chat.compactionReason.threshold":"threshold","chat.compactionReason.overflow":"overflow","chat.compactionReason.idle":"idle","chat.compactionReason.incomplete":"incomplete","chat.compactedFrom":"Compacted from {tokens} tokens","chat.interruptedTitle":"The last run was interrupted","chat.interruptedDetail":"It stopped mid-run, for example when the server or PC went down. Nothing was re-sent.","chat.interruptedDismiss":"Dismiss","chat.frequentModels":"Frequently used","chat.modelPickCount":"{count}\xd7","palette.searchPlaceholder":"Search conversations","palette.searchResults":"Conversation search results","palette.searching":"Searching…","palette.searchFailed":"Search failed","palette.searchEmpty":"No matching messages","palette.searchHits":"{count} messages","palette.searchTruncated.time":"stopped at the time limit after {scanned} of {total} sessions","palette.searchTruncated.bytes":"stopped at the size limit after {scanned} of {total} sessions","palette.searchTruncated.results":"showing the first results; refine the query for more","palette.searchCompacted":"{count} in compacted history not shown","palette.searchRoleUser":"You","palette.searchRoleAssistant":"Answer","palette.wideChatOn":"Use wide chat","palette.wideChatOff":"Use standard chat width","chat.compacted":"Compacted","chat.tokensSaved":"{saved} saved","i18n.close":"Close","i18n.copy":"Copy","i18n.copied":"Copied","i18n.cancel":"Cancel","i18n.save":"Save","i18n.saving":"Saving…","i18n.saved":"Saved","i18n.remove":"Remove","i18n.removing":"Removing…","i18n.delete":"Delete","i18n.loading":"Loading...","i18n.search":"Search","i18n.refresh":"Refresh","i18n.update":"Update","i18n.updating":"Updating...","restart.title":"CUELO is restarting","restart.body":"This page reloads automatically when the server is back.","restart.slow":"The restart is taking longer than two minutes. Check READY or FAILED in %USERPROFILE%\\.omp\\restart-ompweb.log on the server PC. This page still reloads when the server is back.","restart.returnedTitle":"CUELO restarted","restart.returnedBody":"The server is back and this tab reconnected to the same conversation.","restart.returnedDismiss":"Dismiss restart notice","i18n.check":"Check","i18n.checking":"Checking...","i18n.install":"Install","i18n.installing":"Installing...","i18n.noResults":"No results","i18n.searchProviders":"Search providers…","i18n.noProviders":"No providers match","i18n.newModel":"new model","i18n.addProvider":"Add provider","i18n.selectProviderModel":"Select a provider or model","i18n.visibleInPrompt":"Visible in model prompt — click to disable","i18n.hiddenFromPrompt":"Hidden from model prompt — click to enable","i18n.dormant":"Dormant","i18n.hiddenButInvocable":"Hidden from model, still manually invocable","i18n.skillSearchPlaceholder":"e.g. react, testing, deploy","i18n.searching":"Searching…","i18n.noSkills":"No skills found","i18n.checkUpdates":"Check updates","i18n.updates":"updates","i18n.noResolvedResources":"No resolved resources","i18n.enablePackage":"Enable package","i18n.disablePackage":"Disable package","i18n.filtered":"filtered","i18n.openSessionToReload":"Open a session to reload","i18n.notFound":"Not found","i18n.noPlugins":"No plugins configured","trust.resourcesNotLoaded":"Restricted mode","trust.trustProject":"Trust project","trust.trusting":"Trusting...","trust.cancel":"Cancel","trust.dialogTitle":"Trust this project?","trust.dialogBody":"Project resources can run local code. Trust only projects whose contents you know.","trust.skillsNotLoaded":"Project skills are not loaded because this project is not trusted.","trust.pluginsNotLoaded":"Project plugins are not loaded because this project is not trusted.","trust.projectScopeUnavailable":"Project installs are unavailable while project resources are not loaded.","trust.pendingBadge":"Restricted mode \xb7 trust scheduled","trust.scheduledTitle":"Trust scheduled","trust.scheduledBody":"This project is still in restricted mode. Trust applies once every session in this project has finished its current work; nothing that is running gets interrupted.","trust.cancelSchedule":"Cancel scheduled trust","trust.close":"Close","trust.applyFailed":"The scheduled trust was not applied, so the project is still restricted: {error}. Trust it again to retry.","trust.settingsNav":"Project trust","trust.settingsDescription":"A project that ships its own extensions, hooks, tools, or MCP servers loads that code only after you trust it. A change made while a session is working applies when every session in that project is idle — running work is never interrupted.","trust.settingsEmpty":"No project needs a trust decision yet.","trust.loadFailed":"Could not load project trust: {error}","trust.stateTrusted":"Trusted","trust.stateRestricted":"Restricted","trust.stateNotRequired":"No project code needs trust","trust.pendingGrant":"Trust approved but not applied yet. The project stays restricted until its sessions finish their work.","trust.pendingRevoke":"Trust is already revoked. {count} running session(s) still use the project code and restart restricted when their current work ends.","trust.runtime":"Live sessions {sessions} \xb7 running {running} \xb7 project code loaded {loaded}","trust.revoke":"Revoke trust","trust.trustAgain":"Trust again","trust.confirm":"Confirm","trust.working":"Saving…","trust.confirmGrant":"Trust this project? Its extensions, hooks, tools, and MCP servers can run on this machine.","trust.confirmTrustAgain":"Undoing a revoke is a new trust approval. Its extensions, hooks, tools, and MCP servers can run on this machine.","trust.confirmRevoke":"Revoke trust? New sessions start restricted right away; running sessions finish their current work first.","trust.doneApplied":"Applied. Sessions in this project now start with this setting.","trust.doneCancelled":"Scheduled trust cancelled. The project stays restricted.","trust.refresh":"Refresh","i18n.creatingSession":"Creating new session…","i18n.creating":"Creating…","i18n.subscription":"Subscription","i18n.subscriptions":"Subscriptions","i18n.customEndpoint":"Custom endpoint format","i18n.noChanges":"No changes","i18n.branches":"Branches","i18n.noActiveSession":"No active session","i18n.noBranches":"This session has no branches","i18n.source":"Source","i18n.preview":"Preview","i18n.diff":"Diff","i18n.downloadFile":"Download file","i18n.liveSync":"Live sync active","i18n.notWatching":"Not watching","i18n.fileViewMode":"File view mode","i18n.compareHead":"Compare working tree with HEAD","i18n.mentionSelectedLines":"Mention selected lines","i18n.disableWrap":"Disable word wrap","i18n.enableWrap":"Enable word wrap","i18n.htmlPreview":"HTML preview","i18n.previewFile":"Preview {file}","i18n.invalidMermaid":"Invalid Mermaid diagram","i18n.renderingMermaid":"Rendering Mermaid diagram","i18n.previewAfterStreaming":"Preview available after streaming","i18n.showMermaidSource":"Show Mermaid source","i18n.previewMermaid":"Preview Mermaid diagram","i18n.openMermaidViewer":"Open diagram viewer","i18n.mermaidViewer":"Mermaid diagram viewer","i18n.mermaidDiagram":"Mermaid diagram","i18n.zoomOut":"Zoom out","i18n.zoomIn":"Zoom in","i18n.fitToWidth":"Fit to width","models.discoveryFetching":"Importing models…","models.discoveryFetch":"Import models…","models.discoveryFilterPlaceholder":"Filter {count} models…","models.discoveryFilter":"Filter upstream models","models.discoverySelectShown":"Select shown","models.discoveryNoMatches":"No matching models.","models.discoveryAdded":"added","models.discoveryShowing":"Showing first {shown} of {total}","models.discoveryFetched":"{count} models fetched","models.discoveryAddSelected":"Add selected","models.discoveryAddSelectedCount":"Add selected ({count})","models.catalogSource":"source: models.dev ↗","models.catalogFilling":"Filling details…","models.catalogFill":"Fill model details","models.catalogFilled":"{count} fields filled","models.catalogNoEmptyFields":"No empty fields to fill","models.catalogNoExactMatch":"No exact models.dev match","models.catalogPriceProvider":"Price matched Provider {provider}","models.catalogPriceBaseUrl":"Price matched Base URL to {provider}","models.catalogPriceConsensus":"Price agreed by {support}/{total} records","models.catalogPriceUnreliable":"No reliable price found","models.catalogUndo":"Undo","i18n.testingModel":"Testing model connection...","i18n.connected":"Connected","i18n.failed":"Failed","i18n.test":"Test","i18n.testConnection":"Test model connection","i18n.provider":"Provider","i18n.model":"Model","i18n.providerName":"Provider name","i18n.rename":"Rename","i18n.default":"Default","i18n.disabled":"Disabled","i18n.noResources":"No resources","i18n.unknown":"Unknown","i18n.installedVersion":"installed {version}","i18n.configuredVersion":"configured {version}","i18n.extensions":"Extensions","i18n.prompts":"Prompts","i18n.themes":"Themes","i18n.resourceCount":"{count} {label}","i18n.extensionShort":"ext","i18n.skillShort":"skills","i18n.promptShort":"prompts","i18n.themeShort":"themes","i18n.custom":"Custom","i18n.clearAll":"clear all","i18n.connectedSuccessfully":"Connected successfully.","i18n.notConnected":"not connected","i18n.configured":"configured","i18n.notConfigured":"not configured","i18n.openingBrowser":"Opening browser…","i18n.submit":"Submit","i18n.login":"Login","i18n.relogin":"Re-login","i18n.disconnect":"Disconnect","i18n.networkError":"Network error","i18n.continuing":"Continuing…","i18n.skills":"Skills","i18n.plugins":"Plugins","i18n.addSkill":"Add skill","i18n.addPlugin":"Add plugin","i18n.selectSkill":"Select a skill","i18n.selectPackage":"Select a package","i18n.updateAvailable":"Update available","i18n.upToDate":"Up to date","i18n.automaticChecksUnavailable":"Automatic checks unavailable","i18n.checkFailed":"Check failed","i18n.installed":"Installed","i18n.status":"Status","i18n.version":"Version","i18n.package":"Package","i18n.resources":"Resources","i18n.installedPath":"Installed path","i18n.cwd":"CWD","i18n.resolvedResources":"Resolved Resources","i18n.reloadSession":"Reload session","i18n.reloadSessionHint":"Reloads settings and skills for the open session. It does not unload plugins; restart CUELO for that.","i18n.reloading":"Reloading...","i18n.packageRemoved":"Package removed.","i18n.packageInstalled":"Package installed.","i18n.packageUpdated":"Package updated.","i18n.packageDisabled":"Package disabled.","i18n.packageDisabledRestartRequired":"Disabled setting saved. The plugin already loaded keeps running until CUELO restarts; reloading the session does not unload it.","i18n.packageEnabled":"Package enabled.","i18n.sessionReloaded":"Session reloaded.","i18n.thinking":"Thinking","i18n.largeMessageReveal":"Message content is very large ({size}). Click to view as plain text — markdown rendering is disabled to keep the page responsive.","i18n.loadingThinking":"Loading thinking...","i18n.copyMessage":"Copy message","i18n.editFromHere":"Edit from here","i18n.editFromHereTitle":"Edit from here — branches within this session","i18n.newSession":"New session","i18n.newSessionTitle":"New session — creates an independent copy from here","i18n.estimatedTokens":"Estimated token count while streaming","i18n.messageUsage":"Usage","i18n.messageUsageTitle":"Show this message's tokens and cost","i18n.noOutput":"(no output)","i18n.noSummary":"(no summary)","i18n.conversationCompacted":"Conversation compacted","i18n.compactionDescription":"The conversation history before this point was compacted into the following summary:","i18n.fileContext":"File context: {details}","i18n.readFiles":"Read files","i18n.modifiedFiles":"Modified files","i18n.hiddenExtensionMessage":"hidden extension message","i18n.noMessage":"(no message)","i18n.showExtensionMessage":"Show extension message","i18n.collapse":"Collapse","i18n.expand":"Expand","i18n.hideDetails":"Hide details","i18n.showDetails":"Show details","i18n.thinkingUnavailable":"Thinking content unavailable","i18n.before":"Before","i18n.after":"After","i18n.sessionComplete":"Session complete","i18n.taskFinished":"Task finished.","i18n.attentionNeeded":"Pi needs your attention","i18n.extensionInputNeeded":"An extension is waiting for your input.","navigator.toolbar":"Navigator views","navigator.priority":"Priority","navigator.view":"{label} navigator","gpt6.boundBadge":"6PRO {handle}","gpt6.boundBadgeHint":"This session is bound to 6 Pro connection number {handle}.","usage.none":"Usage —","usage.open":"Open usage details: {rows}","usage.openMore":", and {count} more","usage.showMore":"Show {count} more","usage.showLess":"Show less","usage.accountBlocked":"auto-blocked","usage.accountSpent":"account limit used up","usage.limitSpent":"limit used up","usage.bai":"B.AI tokens","usage.baiEmpty":"none recorded","usage.baiRange":"aggregated {from}–{to}","usage.baiUnmeasured":"not measured","usage.title":"Usage","usage.reorder":"Reorder","usage.reorderDone":"Done","usage.reorderGroup":"Account display order","usage.moveUp":"Move {account} up","usage.moveDown":"Move {account} down","usage.moved":"{account} moved to position {position}","usage.authExpired":"sign-in expired","usage.authUnavailable":"unavailable","usage.relogin":"Sign in again","usage.reloginFor":"Sign in again as {account}","usage.authIssues":"Account issues: {count}","relogin.title":"Account to sign in again","relogin.guide":"Press {action} and finish in the browser with this account. Signing in with a different account leaves this one failing.","relogin.done":"Sign-in finished.","relogin.checking":"Re-reading usage to check {account}…","relogin.recovered":"{account} is signed in again.","relogin.stillFailing":"Sign-in finished, but {account} still reports an auth error. You may have signed in with a different account.","relogin.unknown":"Could not find {account} in usage, so recovery is not confirmed.","efficiency.title":"Efficiency","efficiency.governor":"Run control","efficiency.lab":"Experiment Lab","efficiency.refresh":"Refresh","efficiency.refreshing":"Loading…","efficiency.noSession":"Select a session to see its runs.","efficiency.loadingRuns":"Loading runs…","efficiency.runsEmpty":"No runs recorded in this session.","efficiency.runsError":"Could not load runs.","efficiency.selectRun":"Select a run to see roles, bottlenecks, and unmeasured gaps.","efficiency.loadingDetail":"Loading run detail…","efficiency.detailError":"Could not load the run detail.","efficiency.noTitle":"Untitled request","efficiency.elapsed":"Elapsed","efficiency.busyTotal":"Generation time total","efficiency.noSumNote":"Elapsed and generation total are shown side by side, never added.","efficiency.summarySection":"Summary","efficiency.rolesSection":"Roles","efficiency.rolesEmpty":"No role recorded a request in this run.","efficiency.bottlenecksSection":"Bottlenecks","efficiency.bottlenecksEmpty":"No bottleneck measured.","efficiency.toolsSection":"Tool calls","efficiency.unmeasuredGap":"Unmeasured gap","efficiency.elapsedValue":"Elapsed {value}","efficiency.estimatedCostValue":"Est. {value}","efficiency.estimatedCost":"Est. cost","efficiency.untimedLowerBound":"{value} request(s) have no recorded duration — generation time is a lower bound.","efficiency.bottleneckOrderNote":"Largest observed items, longest first. Bar length is relative to the top item, not to elapsed time.","efficiency.untimedRuns":"Runs missing duration","efficiency.untimedMedianLowerBound":"{value} run(s) contain requests with no recorded duration — the median generation time is a lower bound.","efficiency.unpricedLowerBound":"Includes unpriced records — lower bound","efficiency.unmeasuredShort":"Unmeasured","efficiency.effortLabel":"Effort {value}","efficiency.requestsValue":"{value} requests","efficiency.toolCallsValue":"{value} tool calls","efficiency.busyTime":"Generation time","efficiency.tokens":"Tokens","efficiency.unpricedRequests":"Unpriced requests","efficiency.firstTokenAvg":"Wait for first token (avg)","efficiency.firstTokenPartial":"First-token wait is averaged over {recorded}/{total} requests that recorded it.","efficiency.outputTokens":"Conversation output tokens","efficiency.helpersTitle":"Auxiliary model calls","efficiency.helperCallsValue":"{count} calls \xb7 output {output} \xb7 total {tokens} \xb7 {cost}","efficiency.helpersIncludedNote":"Auxiliary call tokens and cost are included in the token and estimated cost totals above, and excluded from request count, first-token wait, and conversation output tokens.","efficiency.toolErrorsValue":"{value} errors","efficiency.unmeasuredGapValue":"Unmeasured gap {value}","efficiency.roleMain":"Main","efficiency.roleMaker":"Maker","efficiency.roleChecker":"Checker","efficiency.roleAdvisor":"Advisor","efficiency.roleUnattributed":"Unattributed","efficiency.purposePrimary":"Primary","efficiency.purposeRework":"Rework","efficiency.purposeReview":"Review","efficiency.outcomeCompleted":"Completed","efficiency.outcomeError":"Error","efficiency.outcomeAborted":"Aborted","efficiency.outcomeInterrupted":"Interrupted","efficiency.outcomeRunning":"Running","efficiency.folder":"Folder","efficiency.folderAll":"All folders","efficiency.folderPlaceholder":"Filter by folder, Enter to apply","efficiency.loadingExperiments":"Loading config comparison…","efficiency.experimentsEmpty":"No config recorded for comparison.","efficiency.experimentsError":"Could not load the config comparison.","efficiency.difficultyNote":"Task difficulty is not normalized.","efficiency.runsValue":"{value} runs","efficiency.medianElapsed":"Median elapsed","efficiency.medianBusy":"Median generation","efficiency.medianTokens":"Median tokens","efficiency.medianEstimatedCost":"Median est. cost","efficiency.totalEstimatedCost":"Total est. cost","efficiency.reworkRate":"Rework rate","efficiency.errorRate":"Error rate","efficiency.unpricedRuns":"Unpriced runs","efficiency.scopeAttributed":"Current roles only","efficiency.scopeAll":"All runs","efficiency.scopeSessions":"Sessions counted","efficiency.scopeRuns":"Runs counted","efficiency.scopeExcludedRuns":"Runs excluded"}}),c({id:"zh-CN",label:"简体中文",messages:{"common.ok":"确定","common.language":"语言","common.models":"模型","common.skills":"技能","common.plugins":"插件","common.settings":"设置","updates.available":"有可用的 CUELO 更新","updates.availableTitle":"CUELO {version} 可用","updates.dialogEyebrow":"CUELO 发布","updates.dialogTitle":"新的 CUELO 版本","updates.current":"当前 CUELO {version}","updates.changelog":"更新日志","updates.viewRelease":"查看发布","updates.manual":"从源码运行时,用以下命令更新后重启。","updates.copyCommand":"复制命令","updates.commandCopied":"命令已复制","updates.copyFailed":"无法复制命令","sidebar.hide":"隐藏侧边栏","sidebar.show":"显示侧边栏","theme.light":"浅色模式(点击切换到深色)","theme.dark":"深色模式(点击切换到跟随系统)","theme.auto":"跟随系统(点击切换到浅色)","history.full":"完整历史","history.unsaved":"会话保存后才能查看完整历史","history.label":"完整历史","title.generating":"正在生成...","title.updated":"标题已更新","title.failed":"生成失败","title.generate":"生成标题","title.unsaved":"会话保存后才能生成标题","title.noMessages":"请先发送消息,再为会话命名","title.generateSession":"生成会话标题","system.prompt":"系统提示词","system.empty":"系统提示词为空(工具已禁用)","system.load":"发送消息以加载系统提示词","system.label":"系统","session.info":"会话信息","session.name":"名称","session.file":"文件","session.inMemory":"内存中","session.id":"ID","session.user":"用户","session.assistant":"助手","session.toolCalls":"工具调用","session.toolResults":"工具结果","session.total":"总计","session.input":"输入","session.output":"输出","session.cacheRead":"缓存读取","session.cacheWrite":"缓存写入","session.cost":"费用","session.context":"上下文","session.cacheHitRate":"平均缓存命中率","session.copy":"复制{value}","session.copied":"已复制","session.title":"会话信息","session.load":"发送消息或运行 /session 以加载会话信息","session.infoSection":"会话信息","session.messages":"消息","session.tokens":"Token","session.totalActive":"活跃时长","session.copyFile":"复制文件路径","session.copyId":"复制会话 ID","workspace.opening":"正在打开工作区...","workspace.unable":"无法打开工作区","workspace.selectSession":"从侧边栏选择一个会话","workspace.getStarted":"开始使用","workspace.selectProject":"从侧边栏选择项目目录","workspace.addModels":"点击底部的“模型”按钮添加模型","workspace.stepProject":"从侧边栏选择项目目录","workspace.stepModels":"点击底部的“模型”按钮添加模型","workspace.mainWorking":"工作中","workspace.mainWaiting":"等待中","workspace.mainIdle":"空闲","workspace.mainAttention":"需要输入","files.hidePanel":"隐藏文件面板","files.showPanel":"显示文件面板","files.noneOpen":"没有打开的文件","layout.resizeSidebar":"调整侧边栏宽度","layout.resizeFilePanel":"调整文件面板宽度","layout.resizeHint":"拖动调整宽度。双击或按 Enter 恢复默认值。","sidebar.new":"新建","sidebar.newSessionTitle":"在 {path} 中新建会话","sidebar.refresh":"刷新","sidebar.projects":"项目","subagents.title":"子代理","subagents.running":"运行中","subagents.finished":"已完成","subagents.history":"历史","subagents.runningCount":"运行中 {count}","subagents.finishedCount":"已完成 {count}","subagents.failed":"失败","subagents.aborted":"已中止","subagents.back":"返回子代理列表","subagents.retrying":"正在重试 {attempt}/{max}","subagents.usingTool":"正在使用 {tool}","subagents.details":"子代理执行详情","subagents.closeDetails":"关闭子代理详情","subagents.noTask":"无任务描述","subagents.tools":"{count} 个工具","subagents.tokens":"{count} 个 Token","subagents.loadingTranscript":"正在加载实时记录…","subagents.noTranscript":"子代理尚未写入任何会话记录。","subagents.transcriptUnavailable":"实时记录暂不可用。子代理运行期间将继续重试。","sidebar.searchProjectsAndSessions":"搜索项目和会话标题…","sidebar.addProject":"添加自定义项目路径","sidebar.projectActions":"项目操作","sidebar.projectAlias":"别名","sidebar.projectAliasEdit":"编辑别名","sidebar.projectHide":"隐藏","sidebar.projectUnhide":"取消隐藏","sidebar.projectShowHidden":"显示隐藏的项目","sidebar.temporaryProjects":"临时/系统路径","sidebar.projectMoveUp":"上移","sidebar.projectMoveDown":"下移","sidebar.projectMoveDisabledWhileFiltering":"清除搜索筛选后才能重新排序项目","sidebar.projectUpdateFailed":"无法保存项目更改,请重试。","sidebar.expandProject":"展开项目","sidebar.collapseProject":"收起项目","sidebar.showMore":"显示更多","sidebar.showLess":"收起","sidebar.selectProject":"选择项目…","sidebar.filterProjects":"筛选项目…","sidebar.noMatchingProjects":"没有匹配的项目","sidebar.useDefaultDirectory":"使用默认目录","sidebar.customPath":"自定义路径…","directoryPicker.selectDirectory":"选择目录","directoryPicker.goToParent":"转到上级目录","directoryPicker.directoryPath":"目录路径","directoryPicker.goToDirectory":"转到目录","directoryPicker.go":"转到","directoryPicker.loadingDirectories":"正在加载目录…","directoryPicker.noSubdirectories":"没有子目录","directoryPicker.openBeforeSelecting":"选择前请先打开此路径","directoryPicker.selectCurrentDirectory":"选择当前目录","directoryPicker.selectThisFolder":"选择此文件夹","directoryPicker.noDrives":"未找到盘符","sidebar.checking":"检查中…","sidebar.open":"打开","sidebar.cancel":"取消","sidebar.openRepoRoot":"打开仓库根目录","sidebar.openRepoRootTitle":"打开仓库根目录以管理 worktree。","sidebar.gitRepoRootOnly":"仅 Git 仓库根目录","sidebar.gitRepoRootOnlyTitle":"只能在 Git 仓库根目录使用 worktree。","sidebar.worktrees":"Worktrees...","sidebar.checkingWorktrees":"正在检查此目录的 worktree。","sidebar.filterWorktrees":"筛选 worktree…","sidebar.noMatchingWorktrees":"没有匹配的 worktree","sidebar.switchWorktree":"切换 worktree","sidebar.switchWorktreeTitle":"切换 worktree:{path}","sidebar.main":"主分支","sidebar.forceRemoveCheckout":"存在未提交的更改。强制移除 checkout?","sidebar.force":"强制移除","sidebar.createWorktreeTitle":"为分支创建 worktree checkout","sidebar.newWorktree":"新建 worktree…","sidebar.branchName":"分支名称","sidebar.creating":"创建中…","sidebar.create":"创建","sidebar.loading":"加载中...","sidebar.noSessions":"未找到会话","sidebar.agentRunning":"Agent 运行中…","sidebar.newActivity":"有新活动","sidebar.newSessionActivity":"会话有新活动","sidebar.deleteSession":"删除 {title}?","sidebar.rename":"重命名","sidebar.pin":"固定到顶部","sidebar.unpin":"取消固定","sidebar.pinned":"已固定","sidebar.delete":"删除","sidebar.deleteWithShiftClick":"删除(按住 Shift 点击可跳过确认)","sidebar.clearProjectSessions":"清空会话","sidebar.clearPriorityList":"清空列表","sidebar.newScratchSession":"新建会话","sidebar.newScratchSessionTitle":"不选择项目直接开始会话(使用主目录下按日期命名的临时文件夹)","sidebar.newScratchSessionFailed":"无法创建临时文件夹:{error}","sidebar.clearSessionsTitle":"确认删除会话","sidebar.clearSessionsProjectBody":"将永久删除 {project} 中的 {count} 个会话,且无法恢复。","sidebar.clearSessionsPriorityBody":"将永久删除优先级列表中的 {count} 个会话,且无法恢复。","sidebar.clearSessionsRunningExcluded":"保留 {count} 个正在运行的会话。","sidebar.clearSessionsNone":"当前没有可删除的会话。","sidebar.clearSessionsConfirm":"删除","sidebar.clearSessionsCancel":"取消","sidebar.clearSessionsBusy":"删除中…","sidebar.clearSessionsFailed":"有 {count} 个会话删除失败:{names}","sidebar.archive":"归档(从列表隐藏,可恢复)","sidebar.archived":"已归档","sidebar.restore":"恢复","sidebar.noArchivedSessions":"没有已归档的会话","sidebar.expandForks":"展开分叉","sidebar.collapseForks":"折叠分叉","sidebar.messagesCount":"{count} 条消息","sidebar.worktreePath":"Worktree:{path}","sidebar.removeWorktreeTitle":"移除 worktree checkout {path};保留分支","files.deleted":"已删除","files.insertPath":"将路径插入聊天","files.mention":"提及","chat.loadingSession":"正在加载会话...","chat.runningTool":"正在运行工具...","chat.runningNamedTool":"正在运行 {name}...","chat.runningTools":"正在运行 {names}...","chat.runningToolsMore":"正在运行 {names}(另有 {count} 个)...","chat.waitingModel":"正在等待模型...","todo.progress":"{percent}% \xb7 {total} 项中完成 {completed} 项 \xb7 剩余 {remaining} 项","todo.progressDone":"{percent}% \xb7 {total} 项中完成 {completed} 项","todo.allDone":"{count} 项全部完成","todo.showCompleted":"查看已完成 {count} 项","todo.hideCompleted":"收起已完成 {count} 项","chat.runningCommand":"正在运行命令...","chat.thinking":"正在思考...","chat.contextUsageTitle":"上下文窗口:已用 {used} / {limit} Token({percent})","chat.contextUsageWarning":"上下文窗口正在接近上限","chat.contextUsageCritical":"上下文窗口几乎已满","chat.processDetails":"处理详情","chat.message":"条消息","chat.messages":"条消息","chat.toolCall":"次工具调用","chat.toolCalls":"次工具调用","chat.collapseProcess":"收起处理详情","chat.expandProcess":"展开处理详情","process.empty":"此会话还没有处理记录","process.turn":"轮","process.turns":"轮","chat.filesWritten":"改动的文件","chat.openWrittenFile":"打开 {name}","chat.lessonsSaved":"[已保存经验] 代理在本轮中自行保存了以下内容。","chat.savedLesson":"经验:{memory}","chat.savedSkill":"技能 {action}:{name}","chat.loadEarlier":"向上滚动以加载更早的消息(隐藏 {count} 条)","chat.extensionRequest":"扩展请求","chat.responseSending":"正在发送你的回复...","chat.responseFailed":"回复未送达代理。它仍在等待 - 请重试。","chat.cancel":"取消","chat.confirm":"确认","chat.submit":"提交","chat.agentQuestion":"代理需要你的输入","chat.agentQuestionHint":"选择一个选项,或提供自定义回复。","chat.askAutoSelectHint":"{seconds} 秒内无响应将自动选择推荐选项。选择或输入会重新开始计时。","chat.recommended":"推荐","chat.customAnswer":"其他回复(可选)","chat.chatAboutThis":"对此进行讨论","chat.submitAnswer":"提交回答","chat.planApproval":"计划审批","chat.planFeedback":"下一轮计划的反馈(可选)","chat.refinePlan":"继续规划","chat.approvePlan":"批准并实施","chat.extensionInput":"扩展终端输入","chat.extensionPanel":"扩展面板","chat.close":"关闭","chat.queued":"已排队 \xb7 {count}","chat.recall":"移回输入框","chat.recallTitle":"移除所有排队消息并将其放回输入框编辑","chat.queueRemove":"仅取消这条排队消息","chat.retrying":"正在重试({attempt}/{max})…","chat.loadingCommands":"正在加载命令...","chat.slashCommands":"斜杠命令 \xb7 {label}","chat.tabEnter":"Tab / Enter","chat.noCommands":"未找到命令","chat.match":"1 个匹配项","chat.matches":"{count} 个匹配项","chat.command":"1 个命令","chat.commands":"{count} 个命令","chat.loadingFiles":"正在加载文件...","chat.files":"文件 \xb7 {label}{hint}","chat.searching":"搜索中…","chat.noMatchingFiles":"未找到匹配的文件","chat.searchingAll":" \xb7 正在搜索所有文件…","chat.indexTruncated":" \xb7 索引不完整","chat.steerPlaceholder":"立即引导 / 排队后续消息...","chat.agentPlaceholder":"Agent 运行中…","chat.messagePlaceholder":"消息…输入 / 使用命令,输入 @ 查找文件","chat.steer":"引导","chat.followUp":"后续消息","chat.send":"发送","chat.attachImageLimit":"每条消息最多可附加 {count} 张图片。","chat.attachImageTooLarge":"{name} 超出每张图片 {limit} 的限制。","chat.attachFile":"附加文件","chat.attachments":"附件","chat.removeImage":"移除图片 {index}","chat.removeAttachment":"移除 {name}","chat.attachExtracting":"正在提取文本","chat.attachExtractingWait":"请等待附件处理完成","chat.attachLimit":"每条消息最多可附加 {count} 个非图片附件。","chat.attachTooLarge":"{name} 超出每个文档 {limit} 的限制。","chat.attachTotalTooLarge":"附加文档总大小超出 {limit} 的限制。","chat.attachTextTooLarge":"从 {name} 提取的文本超出 {limit} 个字符的限制。","chat.attachTooManyPages":"{name} 超出 PDF {limit} 页的限制。","chat.attachNoPdfText":"无法从 {name} 提取文本。扫描版或纯图片 PDF 需要 OCR,目前不支持。","chat.attachPasswordProtected":"{name} 受密码保护,无法提取文本。","chat.attachExtractFailed":"无法从 {name} 提取文本。","chat.attachKindAudio":"音频","chat.attachKindFile":"文件","chat.attachUploading":"正在保存","chat.attachTranscribing":"正在转写","chat.attachTranscribeFailed":"转写失败","chat.attachStoredTooLarge":"{name} 超出每个文件 {limit} 的限制。","chat.attachUploadFailed":"无法保存 {name}:{error}","chat.attachTranscribePending":"需要选择","chat.transcribeGroup":"音频转写","chat.transcribeChecking":"正在检查时长","chat.transcribeConfirmTitle":"要转写 {name} 吗?","chat.transcribePlanSummary":"{duration} \xb7 约 {calls} 次转写调用","chat.transcribeDurationUnknown":"时长未知","chat.transcribeUsageNotice":"转写会计入已连接账户的用量。点击开始之前不会发送任何内容。","chat.transcribeStart":"开始转写","chat.transcribeSkip":"不转写","chat.transcribeCancel":"取消转写","chat.transcribeRunning":"正在转写 {name}","chat.transcribeRetry":"重试","chat.transcribeAction":"转写","chat.transcribeSkipped":"{name} 没有转写,只发送已保存的文件路径。","chat.transcribeFailedRow":"{name} 转写失败:{error}","chat.transcribeToolMissing":"音频工具(ffmpeg)不可用,无法为转写准备此音频。","chat.transcribePartialFailed":"在 {total} 段中的第 {done} 段后停止;未附加部分转写。","chat.transcribeTooLong":"转写内容与其他附件合计超出字数限制。","chat.attachmentSettingsNav":"附件","chat.attachmentSettingsTitle":"附件","chat.attachmentSettingsDescription":"在聊天中附加的文件会保存在这台电脑上,供代理打开。","chat.attachmentSettingsLoadFailed":"无法加载附件设置","chat.attachmentUploadLimit":"每个文件的上传上限(MB)","chat.attachmentUploadLimitHelp":"超过上限的文件会在发送前被拒绝。直接读入消息的文本仍有单独限制:每个文档 8 MB,总计 240,000 个字符。","chat.attachmentUploadLimitInvalid":"请输入不小于 1 的整数(MB)。","chat.attachmentAutoCleanup":"自动删除未使用的附件","chat.attachmentAutoCleanupHelp":"对话、分支或未发送草稿中使用的附件会保留。确认在任何地方都不再使用后,{days} 天后删除;无法确认是否使用的文件会保留。","chat.attachmentSettingsSaved":"已保存","chat.steerTitle":"中断当前运行并立即注入此消息","chat.followUpTitle":"在 Agent 完成后将此消息加入队列","chat.filterModels":"筛选模型…","chat.noMatchingModels":"没有匹配的模型","chat.modelRoles":"角色","chat.allModels":"全部模型","chat.mainPreset":"Main 预设","roles.title":"模型角色","roles.description":"omp 按角色分派任务,而非只用一个当前模型。为每个角色分配模型后,CUELO 与 omp 命令行都会使用该配置。","roles.scope":"保存到","roles.scopeGlobal":"全局","roles.scopeProject":"当前项目","roles.unset":"— 未设置 —","roles.needsProject":"打开一个项目后即可编辑其模型角色。","roles.source.global":"来自全局配置","roles.source.project":"来自项目配置","roles.source.default":"omp 默认值","roles.thinking":"推理","roles.thinkingInherit":"使用配置的默认推理级别","roles.harnessNote":"CUELO Maker 角色在分配之前也会列出。只为要用的角色自行选择模型;保存不会登录或试调用模型。","roles.harnessUnset":"未设置","roles.harness.implSonnet":"Maker \xb7 NORMAL 非 UI(优先)","roles.harness.implOpus":"Maker \xb7 NORMAL UI/UX","roles.harness.implDeepSeek":"Maker \xb7 NORMAL 备选","roles.harness.makerHardUiOpus":"Maker \xb7 HARD UI/UX","roles.harness.makerHardCodeOpus":"Maker \xb7 HARD 代码","roles.harness.makerHardCodeSonnet":"Maker \xb7 HARD 代码备选","chat.moreControls":"运行选项","chat.collapseControls":"关闭运行选项","chat.shell":"Shell","chat.outputLocal":"输出保留在本地","chat.outputModel":"输出发送给模型","chat.noTools":"不使用工具,仅只读","chat.builtInTools":"核心:{tools} \xb7 其他已注册工具仍保持启用","chat.allBuiltInTools":"核心:{tools} \xb7 其他已注册工具仍保持启用","chat.changeReasoning":"更改推理级别:{level}","chat.changeReasoningLabel":"更改推理级别","chat.currentReasoning":"当前推理级别:{level}","chat.fastModeActive":"Fast 已开启 \xb7 正在应用于此模型。优先处理可能产生更多费用或用量。点击关闭","chat.fastModeInactive":"已请求 Fast \xb7 此模型或账户未应用。点击关闭","chat.fastModeOff":"Fast 已关闭 \xb7 点击请求优先处理(视提供商可能产生更多费用或用量)","chat.fastModeUnknown":"尚未确认 Fast 状态 \xb7 点击读取此会话的实际状态并切换","chat.fastModeBusy":"正在切换 Fast","chat.changeToolPreset":"更改工具预设","chat.stopCompaction":"停止压缩","chat.compactContext":"压缩上下文","chat.compacting":"正在压缩…","chat.compact":"压缩","chat.stopAgent":"停止 Agent","chat.stop":"停止","chat.liveVoice":"实时语音","chat.liveStart":"开始实时语音","chat.liveStop":"结束实时语音","chat.liveConnecting":"正在连接","chat.liveOn":"通话中","chat.liveWorking":"正在执行","chat.liveUnsupported":"当前浏览器无法进行实时通话","chat.liveMicDenied":"麦克风权限被拒绝","chat.liveMicUnavailable":"没有可用的麦克风","chat.liveAuthRequired":"使用实时语音需要登录 Codex","chat.liveUpstreamFailed":"Codex 拒绝了本次实时通话","chat.liveFailed":"无法启动实时通话","chat.liveNeedsSession":"请先选择文件夹 — 实时通话以本对话的智能体身份说话","chat.liveVoiceFailed":"无法生成角色通话语音,通话已结束","chat.liveVoiceCharacter":"{name} 的声音","chat.liveVoiceProvisional":"临时音色","chat.liveVoiceNativeNotReady":"{name} 语音未就绪 \xb7 默认语音","chat.liveVoiceNativeUnknown":"无法确认角色 \xb7 默认语音","chat.liveVoiceSettingsNav":"通话语音","chat.liveVoiceSettingsTitle":"角色通话语音(Cartesia)","chat.liveVoiceSettingsDescription":"管理保存在此 CUELO 服务器上的 Cartesia API 密钥和角色语音准备。每项更改通过各自的按钮应用。","chat.liveVoiceCharacters":"角色","chat.liveVoiceKeyLabel":"Cartesia API 密钥","chat.liveVoiceKeySaved":"已保存的密钥:{hint}","chat.liveVoiceKeySave":"保存密钥","chat.liveVoiceKeyRemove":"删除密钥","chat.liveVoiceKeyHelp":"密钥只保存在这台 CUELO 服务器上,界面中会遮盖显示。没有密钥时使用默认 Codex 语音通话。","chat.liveVoiceConsent":"我确认:7 段内置参考语音将以私有方式上传到我的 Cartesia 账户并克隆,克隆和通话语音生成会消耗 Cartesia 额度,遵守参考语音许可条款的权利与责任在我。","chat.liveVoicePlanNote":"语音克隆仅适用于支持克隆的 Cartesia 付费方案(Pro 及以上)。已准备好的角色再次准备时不会重新克隆。","chat.liveVoiceLicense":"参考语音许可(ACML 1.0)","chat.liveVoicePrepare":"准备角色语音","chat.liveVoicePreparing":"准备中…","chat.liveVoiceStateReady":"已就绪","chat.liveVoiceStateNotPrepared":"未准备","chat.liveVoiceStatePreparing":"准备中","chat.liveVoiceStateNeedsCheck":"需要确认","chat.liveVoiceStateFailed":"失败","chat.liveVoiceStateMissingAsset":"缺少素材","chat.liveVoiceLoadFailed":"无法加载语音设置","chat.disableSound":"关闭完成提示音","chat.enableSound":"开启完成提示音","chat.thinkingAuto":"自动选择推理强度","chat.thinkingAutoCapped":"自动选择,最高 {level}","chat.thinkingOff":"关闭推理","chat.thinkingMinimal":"最低限度推理","chat.thinkingLow":"低强度推理","chat.thinkingMedium":"中等强度推理","chat.thinkingHigh":"高强度推理","chat.thinkingXhigh":"超高强度推理","chat.thinkingMax":"最高强度推理","chat.builtIn":"内置","chat.extensions":"扩展","chat.customCommands":"自定义命令","chat.mcpPrompts":"MCP 提示词","chat.prompts":"提示词","chat.fileCommands":"命令文件","chat.skills":"技能","chat.dormant":"休眠","chat.commandCompact":"压缩上下文,可选附加说明","chat.commandReload":"重新加载扩展、技能、提示词和工具","chat.commandName":"设置会话显示名称","chat.commandSession":"显示会话消息、Token 和费用统计","chat.commandCopy":"复制最后一条助手消息","chat.goalLabel":"目标","chat.goalPaused":"已暂停","chat.goalBudgetLeft":"剩余 {left}","chat.goalTokensUsed":"已用 {used}","chat.jumpToBottom":"回到底部","chat.loadLater":"向下滚动以加载之后的消息(下方 {count} 条)","chat.jumpMissing":"该消息不在当前会话视图中(其他分支或已压缩的记录)。","chat.questionRail":"我的提问","chat.searchPlaceholder":"在会话中查找","chat.searchNoResults":"无结果","chat.searchCount":"{index}/{total}","chat.searchPrevious":"上一个结果","chat.searchNext":"下一个结果","chat.searchClose":"关闭查找","chat.compactionLabel":"压缩","chat.compactionProgress":"正在压缩上下文 \xb7 {seconds} 秒","chat.compactionReason.manual":"手动","chat.compactionReason.threshold":"阈值","chat.compactionReason.overflow":"溢出","chat.compactionReason.idle":"空闲","chat.compactionReason.incomplete":"未完成","chat.compactedFrom":"从 {tokens} 个 token 压缩","chat.interruptedTitle":"上次运行已中断","chat.interruptedDetail":"运行在中途停止,例如服务器或电脑关机。没有重新发送任何内容。","chat.interruptedDismiss":"关闭","chat.frequentModels":"常用模型","chat.modelPickCount":"{count} 次","palette.searchPlaceholder":"搜索会话内容","palette.searchResults":"会话搜索结果","palette.searching":"搜索中…","palette.searchFailed":"搜索失败","palette.searchEmpty":"没有匹配的消息","palette.searchHits":"{count} 条消息","palette.searchTruncated.time":"因时间限制,仅搜索了 {total} 个会话中的 {scanned} 个","palette.searchTruncated.bytes":"因大小限制,仅搜索了 {total} 个会话中的 {scanned} 个","palette.searchTruncated.results":"仅显示前面的结果,请缩小搜索词","palette.searchCompacted":"已压缩记录中的 {count} 条未显示","palette.searchRoleUser":"我的提问","palette.searchRoleAssistant":"回答","palette.wideChatOn":"使用宽会话","palette.wideChatOff":"使用标准会话宽度","chat.compacted":"已压缩","chat.tokensSaved":"节省 {saved}","i18n.close":"关闭","i18n.copy":"复制","i18n.copied":"已复制","i18n.cancel":"取消","i18n.save":"保存","i18n.saving":"保存中…","i18n.saved":"已保存","i18n.remove":"移除","i18n.removing":"移除中…","i18n.delete":"删除","i18n.loading":"加载中...","i18n.search":"搜索","i18n.refresh":"刷新","i18n.update":"更新","i18n.updating":"更新中...","restart.title":"CUELO 正在重启","restart.body":"服务器恢复后页面会自动刷新。","restart.slow":"重启已超过两分钟。请在服务器电脑的 %USERPROFILE%\\.omp\\restart-ompweb.log 中查看 READY 或 FAILED。服务器恢复后本页仍会自动刷新。","restart.returnedTitle":"CUELO 已重启","restart.returnedBody":"服务器已恢复,此标签页已重新连接到同一对话。","restart.returnedDismiss":"关闭重启通知","i18n.check":"检查","i18n.checking":"检查中...","i18n.install":"安装","i18n.installing":"安装中...","i18n.noResults":"没有结果","i18n.searchProviders":"搜索 Provider…","i18n.noProviders":"没有匹配的 Provider","i18n.newModel":"新模型","i18n.addProvider":"添加 Provider","i18n.selectProviderModel":"选择 Provider 或模型","i18n.visibleInPrompt":"在模型提示词中可见,点击以禁用","i18n.hiddenFromPrompt":"在模型提示词中隐藏,点击以启用","i18n.dormant":"休眠","i18n.hiddenButInvocable":"对模型隐藏,仍可手动调用","i18n.skillSearchPlaceholder":"例如 react、testing、deploy","i18n.searching":"搜索中…","i18n.noSkills":"未找到技能","i18n.checkUpdates":"检查更新","i18n.updates":"项更新","i18n.noResolvedResources":"没有已解析资源","i18n.enablePackage":"启用包","i18n.disablePackage":"禁用包","i18n.filtered":"已筛选","i18n.openSessionToReload":"打开会话后才能重新加载","i18n.notFound":"未找到","i18n.noPlugins":"未配置插件","trust.resourcesNotLoaded":"受限模式","trust.trustProject":"信任项目","trust.trusting":"正在信任...","trust.cancel":"取消","trust.dialogTitle":"信任此项目?","trust.dialogBody":"项目资源可以运行本地代码。请仅信任你了解其内容的项目。","trust.skillsNotLoaded":"此项目尚未受信任,项目技能未加载。","trust.pluginsNotLoaded":"此项目尚未受信任,项目插件未加载。","trust.projectScopeUnavailable":"项目资源未加载时,无法安装到项目范围。","trust.pendingBadge":"受限模式 \xb7 已计划信任","trust.scheduledTitle":"已计划信任","trust.scheduledBody":"此项目仍处于受限模式。项目中的所有会话完成当前工作后才会应用信任,正在运行的工作不会被中断。","trust.cancelSchedule":"取消计划的信任","trust.close":"关闭","trust.applyFailed":"计划的信任未能应用,项目仍处于受限模式:{error}。请重新信任以重试。","trust.settingsNav":"项目信任","trust.settingsDescription":"自带扩展、钩子、工具或 MCP 服务器的项目,只有在你信任后才会加载这些代码。会话工作期间所做的更改会在该项目的所有会话空闲时应用,正在运行的工作不会被中断。","trust.settingsEmpty":"目前没有需要做出信任决定的项目。","trust.loadFailed":"无法加载项目信任状态:{error}","trust.stateTrusted":"已信任","trust.stateRestricted":"受限","trust.stateNotRequired":"没有需要信任的项目代码","trust.pendingGrant":"已批准信任但尚未应用。在会话完成工作之前,项目保持受限。","trust.pendingRevoke":"信任已撤销。仍有 {count} 个运行中的会话在使用项目代码,当前工作结束后将以受限模式重新启动。","trust.runtime":"活动会话 {sessions} \xb7 运行中 {running} \xb7 已加载项目代码 {loaded}","trust.revoke":"撤销信任","trust.trustAgain":"重新信任","trust.confirm":"确认","trust.working":"正在保存…","trust.confirmGrant":"信任此项目?其扩展、钩子、工具和 MCP 服务器可以在本机运行。","trust.confirmTrustAgain":"取消撤销就是一次新的信任批准。其扩展、钩子、工具和 MCP 服务器可以在本机运行。","trust.confirmRevoke":"撤销信任?新会话会立即以受限模式启动;运行中的会话会先完成当前工作。","trust.doneApplied":"已应用。此项目的会话现在将以此设置启动。","trust.doneCancelled":"已取消计划的信任。项目仍处于受限模式。","trust.refresh":"刷新","i18n.creatingSession":"正在创建新会话…","i18n.creating":"创建中…","i18n.subscription":"订阅","i18n.subscriptions":"订阅服务","i18n.customEndpoint":"自定义端点格式","i18n.noChanges":"没有更改","i18n.branches":"分支","i18n.noActiveSession":"没有活动会话","i18n.noBranches":"此会话没有分支","i18n.source":"源代码","i18n.preview":"预览","i18n.diff":"Diff","i18n.downloadFile":"下载文件","i18n.liveSync":"实时同步已启用","i18n.notWatching":"未监视","i18n.fileViewMode":"文件视图模式","i18n.compareHead":"比较工作区与 HEAD","i18n.mentionSelectedLines":"提及所选行","i18n.disableWrap":"禁用自动换行","i18n.enableWrap":"启用自动换行","i18n.htmlPreview":"HTML 预览","i18n.previewFile":"预览 {file}","i18n.invalidMermaid":"Mermaid 图表无效","i18n.renderingMermaid":"正在渲染 Mermaid 图表","i18n.previewAfterStreaming":"流式输出完成后可预览","i18n.showMermaidSource":"显示 Mermaid 源码","i18n.previewMermaid":"预览 Mermaid 图表","i18n.openMermaidViewer":"打开图表查看器","i18n.mermaidViewer":"Mermaid 图表查看器","i18n.mermaidDiagram":"Mermaid 图表","i18n.zoomOut":"缩小","i18n.zoomIn":"放大","i18n.fitToWidth":"适应宽度","models.discoveryFetching":"正在导入模型…","models.discoveryFetch":"导入模型…","models.discoveryFilterPlaceholder":"筛选 {count} 个模型…","models.discoveryFilter":"筛选上游模型","models.discoverySelectShown":"选择当前结果","models.discoveryNoMatches":"没有匹配的模型。","models.discoveryAdded":"已添加","models.discoveryShowing":"显示前 {shown} 个,共 {total} 个","models.discoveryFetched":"已获取 {count} 个模型","models.discoveryAddSelected":"添加所选模型","models.discoveryAddSelectedCount":"添加所选模型({count})","models.catalogSource":"来源:models.dev ↗","models.catalogFilling":"正在填入模型信息…","models.catalogFill":"填入模型信息","models.catalogFilled":"已填入 {count} 个字段","models.catalogNoEmptyFields":"没有需要填入的空字段","models.catalogNoExactMatch":"models.dev 中没有精确匹配","models.catalogPriceProvider":"价格已匹配 Provider {provider}","models.catalogPriceBaseUrl":"价格已按 Base URL 匹配 {provider}","models.catalogPriceConsensus":"价格得到 {support}/{total} 条记录支持","models.catalogPriceUnreliable":"未找到可靠价格","models.catalogUndo":"撤销","i18n.testingModel":"正在测试模型连接...","i18n.connected":"已连接","i18n.failed":"失败","i18n.test":"测试","i18n.testConnection":"测试模型连接","i18n.provider":"Provider","i18n.model":"模型","i18n.providerName":"Provider 名称","i18n.rename":"重命名","i18n.default":"默认","i18n.disabled":"已禁用","i18n.noResources":"没有资源","i18n.unknown":"未知","i18n.installedVersion":"已安装 {version}","i18n.configuredVersion":"已配置 {version}","i18n.extensions":"扩展","i18n.prompts":"提示词","i18n.themes":"主题","i18n.resourceCount":"{count}{label}","i18n.extensionShort":"扩展","i18n.skillShort":"技能","i18n.promptShort":"提示词","i18n.themeShort":"主题","i18n.custom":"自定义","i18n.clearAll":"清除全部","i18n.connectedSuccessfully":"连接成功。","i18n.notConnected":"未连接","i18n.configured":"已配置","i18n.notConfigured":"未配置","i18n.openingBrowser":"正在打开浏览器…","i18n.submit":"提交","i18n.login":"登录","i18n.relogin":"重新登录","i18n.disconnect":"断开连接","i18n.networkError":"网络错误","i18n.continuing":"继续中…","i18n.skills":"技能","i18n.plugins":"插件","i18n.addSkill":"添加技能","i18n.addPlugin":"添加插件","i18n.selectSkill":"选择技能","i18n.selectPackage":"选择包","i18n.updateAvailable":"有可用更新","i18n.upToDate":"已是最新","i18n.automaticChecksUnavailable":"自动检查不可用","i18n.checkFailed":"检查失败","i18n.installed":"已安装","i18n.status":"状态","i18n.version":"版本","i18n.package":"包","i18n.resources":"资源","i18n.installedPath":"安装路径","i18n.cwd":"CWD","i18n.resolvedResources":"已解析资源","i18n.reloadSession":"重新加载会话","i18n.reloadSessionHint":"重新加载当前会话的设置和技能。不会卸载插件;如需卸载,请重启 CUELO。","i18n.reloading":"重新加载中...","i18n.packageRemoved":"包已移除。","i18n.packageInstalled":"包已安装。","i18n.packageUpdated":"包已更新。","i18n.packageDisabled":"包已禁用。","i18n.packageDisabledRestartRequired":"已保存禁用设置。已加载的插件会继续运行,直到 CUELO 重启;重新加载会话无法卸载它。","i18n.packageEnabled":"包已启用。","i18n.sessionReloaded":"会话已重新加载。","i18n.thinking":"思考","i18n.largeMessageReveal":"消息内容过大({size})。点击以纯文本查看 — 已禁用 markdown 渲染以避免页面卡顿。","i18n.loadingThinking":"正在加载思考内容...","i18n.copyMessage":"复制消息","i18n.editFromHere":"从此处编辑","i18n.editFromHereTitle":"从此处编辑,此会话内创建分支","i18n.newSession":"新会话","i18n.newSessionTitle":"新会话,从此处创建独立副本","i18n.estimatedTokens":"流式输出期间的估算 Token 数","i18n.messageUsage":"用量","i18n.messageUsageTitle":"查看该消息的 Token 与费用","i18n.noOutput":"(无输出)","i18n.noSummary":"(无摘要)","i18n.conversationCompacted":"会话已压缩","i18n.compactionDescription":"此处之前的会话历史已压缩为以下摘要:","i18n.fileContext":"文件上下文:{details}","i18n.readFiles":"读取的文件","i18n.modifiedFiles":"修改的文件","i18n.hiddenExtensionMessage":"隐藏的扩展消息","i18n.noMessage":"(无消息)","i18n.showExtensionMessage":"显示扩展消息","i18n.collapse":"收起","i18n.expand":"展开","i18n.hideDetails":"隐藏详情","i18n.showDetails":"显示详情","i18n.thinkingUnavailable":"思考内容不可用","i18n.before":"之前","i18n.after":"之后","i18n.sessionComplete":"任务完成","i18n.taskFinished":"任务已完成。","i18n.attentionNeeded":"Pi 需要你的操作","i18n.extensionInputNeeded":"扩展正在等待你的输入。","navigator.toolbar":"导航视图","navigator.priority":"优先级","navigator.view":"{label}导航","gpt6.boundBadge":"6PRO {handle}","gpt6.boundBadgeHint":"该会话已绑定到 6 Pro 连接编号 {handle}。","usage.none":"用量 —","usage.open":"查看用量详情:{rows}","usage.openMore":",另有 {count} 项","usage.showMore":"查看其余 {count} 项","usage.showLess":"收起","usage.accountBlocked":"自动拦截","usage.accountSpent":"账户额度用尽","usage.limitSpent":"额度用尽","usage.bai":"B.AI 累计 Token","usage.baiEmpty":"无记录","usage.baiRange":"统计 {from}~{to}","usage.baiUnmeasured":"未测量","usage.title":"用量","usage.reorder":"调整顺序","usage.reorderDone":"完成","usage.reorderGroup":"账户显示顺序","usage.moveUp":"上移 {account}","usage.moveDown":"下移 {account}","usage.moved":"{account} 已移到第 {position} 位","usage.authExpired":"登录已过期","usage.authUnavailable":"不可用","usage.relogin":"重新登录","usage.reloginFor":"重新登录 {account}","usage.authIssues":"账户异常 {count}","relogin.title":"需要重新登录的账户","relogin.guide":"点击「{action}」后,请在浏览器中用此账户完成登录。用其他账户登录时,此账户仍保持错误。","relogin.done":"登录已完成。","relogin.checking":"正在重新读取用量以确认 {account}…","relogin.recovered":"{account} 已重新登录。","relogin.stillFailing":"登录已完成,但 {account} 仍报告认证错误。可能登录了其他账户。","relogin.unknown":"用量中找不到 {account},无法确认是否恢复。","efficiency.title":"效率","efficiency.governor":"运行管控","efficiency.lab":"配置比较","efficiency.refresh":"刷新","efficiency.refreshing":"正在加载…","efficiency.noSession":"选择会话后查看其运行记录。","efficiency.loadingRuns":"正在加载运行记录…","efficiency.runsEmpty":"该会话暂无运行记录。","efficiency.runsError":"无法加载运行记录。","efficiency.selectRun":"选择一条运行,查看角色、瓶颈与未测量空白。","efficiency.loadingDetail":"正在加载运行详情…","efficiency.detailError":"无法加载运行详情。","efficiency.noTitle":"无标题请求","efficiency.elapsed":"耗时","efficiency.busyTotal":"生成时间合计","efficiency.noSumNote":"耗时与生成时间合计并列显示,绝不相加。","efficiency.summarySection":"摘要","efficiency.rolesSection":"角色","efficiency.rolesEmpty":"本次运行中没有角色处理请求。","efficiency.bottlenecksSection":"瓶颈","efficiency.bottlenecksEmpty":"没有测量到瓶颈。","efficiency.toolsSection":"工具调用","efficiency.unmeasuredGap":"原因未测量空白","efficiency.elapsedValue":"耗时 {value}","efficiency.estimatedCostValue":"预估 {value}","efficiency.estimatedCost":"预估费用","efficiency.untimedLowerBound":"有 {value} 个请求没有记录耗时 — 生成时间为下限。","efficiency.bottleneckOrderNote":"按观测到的时长从大到小排列。条形长度相对于第一项,而非经过时间。","efficiency.untimedRuns":"缺少耗时的 run","efficiency.untimedMedianLowerBound":"有 {value} 个 run 含未记录耗时的请求 — 生成时间中位数为下限。","efficiency.unpricedLowerBound":"包含未计价记录 — 下限","efficiency.unmeasuredShort":"未测量","efficiency.effortLabel":"effort {value}","efficiency.requestsValue":"{value} 次请求","efficiency.toolCallsValue":"{value} 次工具调用","efficiency.busyTime":"生成时间","efficiency.tokens":"Token","efficiency.unpricedRequests":"未计价请求","efficiency.firstTokenAvg":"首个 Token 等待(平均)","efficiency.firstTokenPartial":"首个 Token 等待为已记录的 {recorded}/{total} 个请求的平均值。","efficiency.outputTokens":"对话输出 Token","efficiency.helpersTitle":"辅助模型调用","efficiency.helperCallsValue":"{count} 次 \xb7 输出 {output} \xb7 合计 {tokens} \xb7 {cost}","efficiency.helpersIncludedNote":"辅助调用的 Token 与费用已计入上方 Token 与预估费用合计,但不计入请求数、首个 Token 等待和对话输出 Token。","efficiency.toolErrorsValue":"{value} 次错误","efficiency.unmeasuredGapValue":"原因未测量空白 {value}","efficiency.roleMain":"Main","efficiency.roleMaker":"Maker","efficiency.roleChecker":"Checker","efficiency.roleAdvisor":"Advisor","efficiency.roleUnattributed":"未归属","efficiency.purposePrimary":"Primary","efficiency.purposeRework":"Rework","efficiency.purposeReview":"Review","efficiency.outcomeCompleted":"已完成","efficiency.outcomeError":"错误","efficiency.outcomeAborted":"已中止","efficiency.outcomeInterrupted":"被下一请求打断","efficiency.outcomeRunning":"运行中","efficiency.folder":"文件夹","efficiency.folderAll":"全部文件夹","efficiency.folderPlaceholder":"按文件夹过滤,回车应用","efficiency.loadingExperiments":"正在加载配置比较…","efficiency.experimentsEmpty":"没有可比较的配置记录。","efficiency.experimentsError":"无法加载配置比较。","efficiency.difficultyNote":"任务难度未归一化。","efficiency.runsValue":"{value} 次运行","efficiency.medianElapsed":"耗时中位数","efficiency.medianBusy":"生成时间中位数","efficiency.medianTokens":"Token 中位数","efficiency.medianEstimatedCost":"预估费用中位数","efficiency.totalEstimatedCost":"预估费用合计","efficiency.reworkRate":"返工率","efficiency.errorRate":"错误率","efficiency.unpricedRuns":"未计价运行","efficiency.scopeAttributed":"仅当前角色体系","efficiency.scopeAll":"全部记录","efficiency.scopeSessions":"纳入会话","efficiency.scopeRuns":"纳入 run","efficiency.scopeExcludedRuns":"已排除 run"}}),c({id:"ko",label:"한국어",messages:o});var d=i(2730);let u="pi-locale",h=(0,a.createContext)(null);function f({children:e}){let[t,i]=(0,a.useState)("en"),[o,c]=(0,a.useState)(!1),m=(0,a.useMemo)(()=>l().map(e=>r.get(e)).filter(e=>!!e),[]),p=(0,a.useMemo)(()=>Object.fromEntries(l().flatMap(e=>{let t=r.get(e);return t?[[e,t.messages]]:[]})),[]);(0,a.useEffect)(()=>{let e=function(){var e;let t=null;try{t=window.localStorage.getItem(u)}catch{}let i=window.navigator.languages.length?window.navigator.languages:[window.navigator.language];return"string"==typeof(e=t)&&s.includes(e)?e:function(e){for(let t of e){let e=t.toLowerCase();if("en"===e||e.startsWith("en-"))return"en";if("ko"===e||e.startsWith("ko-"))break;if("zh"===e||e.startsWith("zh-"))return"zh-CN"}return"ko"}(i)}();i(e),document.documentElement.lang=e,c(!0)},[]);let g=(0,a.useCallback)(e=>{if(r.get(e)){i(e),document.documentElement.lang=e;try{window.localStorage.setItem(u,e)}catch{}}},[]),b=(0,a.useCallback)((e,i)=>(0,d.u0)(t,e,p,i),[t,p]),y=(0,a.useMemo)(()=>({locale:o?t:"en",setLocale:g,t:b,supportedLocales:m}),[o,t,g,b,m]);return(0,n.jsx)(h.Provider,{value:y,children:e})}function m(){let e=(0,a.useContext)(h);if(!e)throw Error("useI18n must be used inside I18nProvider");return e}}}]);
|