@surething/cockpit 1.0.253 → 1.0.255
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-prod/BUILD_ID +1 -1
- package/.next-prod/app-path-routes-manifest.json +6 -3
- package/.next-prod/build-manifest.json +2 -2
- package/.next-prod/prerender-manifest.json +3 -3
- package/.next-prod/routes-manifest.json +18 -0
- package/.next-prod/server/app/_global-error/page.js +3 -3
- package/.next-prod/server/app/_global-error/page.js.nft.json +1 -1
- package/.next-prod/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/.next-prod/server/app/_global-error.html +1 -1
- package/.next-prod/server/app/_global-error.rsc +1 -1
- package/.next-prod/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/.next-prod/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
- package/.next-prod/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
- package/.next-prod/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/.next-prod/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/.next-prod/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next-prod/server/app/_not-found/page.js +2 -2
- package/.next-prod/server/app/_not-found/page.js.nft.json +1 -1
- package/.next-prod/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next-prod/server/app/_not-found.html +2 -2
- package/.next-prod/server/app/_not-found.rsc +3 -3
- package/.next-prod/server/app/_not-found.segments/_full.segment.rsc +3 -3
- package/.next-prod/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/.next-prod/server/app/_not-found.segments/_index.segment.rsc +3 -3
- package/.next-prod/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/.next-prod/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/.next-prod/server/app/_not-found.segments/_tree.segment.rsc +2 -2
- package/.next-prod/server/app/api/agent/test/route.js +1 -1
- package/.next-prod/server/app/api/agent/test/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/bash/route.js +1 -1
- package/.next-prod/server/app/api/bash/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/chat/codex/route.js +2 -2
- package/.next-prod/server/app/api/chat/codex/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/chat/deepseek/route.js +1 -1
- package/.next-prod/server/app/api/chat/deepseek/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/chat/kimi/route.js +2 -2
- package/.next-prod/server/app/api/chat/kimi/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/chat/ollama/route.js +1 -1
- package/.next-prod/server/app/api/chat/ollama/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/chat/pty-input/route.js +1 -1
- package/.next-prod/server/app/api/chat/pty-input/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/chat/route.js +1 -1
- package/.next-prod/server/app/api/chat/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/chat/stop/route.js +1 -1
- package/.next-prod/server/app/api/chat/stop/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/claude-stats/route.js +1 -1
- package/.next-prod/server/app/api/claude-stats/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/commands/route.js +1 -1
- package/.next-prod/server/app/api/commands/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/comments/route.js +1 -1
- package/.next-prod/server/app/api/comments/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/db/columns/route.js +1 -1
- package/.next-prod/server/app/api/db/columns/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/db/connect/route.js +2 -2
- package/.next-prod/server/app/api/db/connect/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/db/disconnect/route.js +1 -1
- package/.next-prod/server/app/api/db/disconnect/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/db/export/route.js +1 -1
- package/.next-prod/server/app/api/db/export/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/db/query/route.js +1 -1
- package/.next-prod/server/app/api/db/query/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/db/schemas/route.js +1 -1
- package/.next-prod/server/app/api/db/schemas/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/deepseek/balance/route.js +1 -0
- package/.next-prod/server/app/api/deepseek/balance/route.js.nft.json +1 -0
- package/.next-prod/server/app/api/deepseek/balance/route_client-reference-manifest.js +1 -0
- package/.next-prod/server/app/api/deepseek/credentials/route.js +1 -1
- package/.next-prod/server/app/api/deepseek/credentials/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/deepseek/models/route.js +1 -0
- package/.next-prod/server/app/api/deepseek/models/route.js.nft.json +1 -0
- package/.next-prod/server/app/api/deepseek/models/route_client-reference-manifest.js +1 -0
- package/.next-prod/server/app/api/dev/spans/route.js +1 -1
- package/.next-prod/server/app/api/dev/spans/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/extension/version/route.js +1 -1
- package/.next-prod/server/app/api/extension/version/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/file/route.js +1 -1
- package/.next-prod/server/app/api/file/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/files/blame/route.js +1 -1
- package/.next-prod/server/app/api/files/blame/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/files/clipboard/route.js +1 -1
- package/.next-prod/server/app/api/files/clipboard/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/files/copy/route.js +1 -1
- package/.next-prod/server/app/api/files/copy/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/files/delete/route.js +1 -1
- package/.next-prod/server/app/api/files/delete/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/files/expanded/route.js +1 -1
- package/.next-prod/server/app/api/files/expanded/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/files/index/route.js +1 -1
- package/.next-prod/server/app/api/files/index/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/files/init/route.js +1 -1
- package/.next-prod/server/app/api/files/init/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/files/paste/route.js +1 -1
- package/.next-prod/server/app/api/files/paste/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/files/read/route.js +1 -1
- package/.next-prod/server/app/api/files/read/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/files/readdir/route.js +1 -1
- package/.next-prod/server/app/api/files/readdir/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/files/recent/route.js +1 -1
- package/.next-prod/server/app/api/files/recent/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/files/save/route.js +1 -1
- package/.next-prod/server/app/api/files/save/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/files/search/route.js +1 -1
- package/.next-prod/server/app/api/files/search/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/files/stat/route.js +1 -1
- package/.next-prod/server/app/api/files/stat/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/files/text/route.js +1 -1
- package/.next-prod/server/app/api/files/text/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/git/branch-diff/route.js +1 -1
- package/.next-prod/server/app/api/git/branch-diff/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/git/branches/route.js +1 -1
- package/.next-prod/server/app/api/git/branches/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/git/commit-diff/route.js +1 -1
- package/.next-prod/server/app/api/git/commit-diff/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/git/commits/route.js +1 -1
- package/.next-prod/server/app/api/git/commits/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/git/current-branch/route.js +1 -1
- package/.next-prod/server/app/api/git/current-branch/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/git/diff/route.js +1 -1
- package/.next-prod/server/app/api/git/diff/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/git/discard/route.js +1 -1
- package/.next-prod/server/app/api/git/discard/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/git/stage/route.js +1 -1
- package/.next-prod/server/app/api/git/stage/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/git/status/route.js +1 -1
- package/.next-prod/server/app/api/git/status/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/git/unstage/route.js +1 -1
- package/.next-prod/server/app/api/git/unstage/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/git/worktree/route.js +1 -1
- package/.next-prod/server/app/api/git/worktree/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/global-state/route.js +1 -1
- package/.next-prod/server/app/api/global-state/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/health/route.js +1 -1
- package/.next-prod/server/app/api/health/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/html-apps/[id]/route.js +1 -1
- package/.next-prod/server/app/api/html-apps/[id]/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/html-apps/route.js +1 -1
- package/.next-prod/server/app/api/html-apps/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/jupyter/load/route.js +1 -1
- package/.next-prod/server/app/api/jupyter/load/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/jupyter/save/route.js +1 -1
- package/.next-prod/server/app/api/jupyter/save/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/jupyter/shutdown/route.js +1 -1
- package/.next-prod/server/app/api/jupyter/shutdown/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/lsp/definition/route.js +1 -1
- package/.next-prod/server/app/api/lsp/definition/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/lsp/hover/route.js +1 -1
- package/.next-prod/server/app/api/lsp/hover/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/lsp/references/route.js +1 -1
- package/.next-prod/server/app/api/lsp/references/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/lsp/status/route.js +1 -1
- package/.next-prod/server/app/api/lsp/status/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/lsp/warmup/route.js +1 -1
- package/.next-prod/server/app/api/lsp/warmup/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/mysql/columns/route.js +1 -1
- package/.next-prod/server/app/api/mysql/columns/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/mysql/connect/route.js +1 -1
- package/.next-prod/server/app/api/mysql/connect/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/mysql/disconnect/route.js +1 -1
- package/.next-prod/server/app/api/mysql/disconnect/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/mysql/export/route.js +1 -1
- package/.next-prod/server/app/api/mysql/export/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/mysql/query/route.js +1 -1
- package/.next-prod/server/app/api/mysql/query/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/mysql/schemas/route.js +2 -2
- package/.next-prod/server/app/api/mysql/schemas/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/neo4j/connect/route.js +1 -1
- package/.next-prod/server/app/api/neo4j/connect/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/neo4j/disconnect/route.js +1 -1
- package/.next-prod/server/app/api/neo4j/disconnect/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/neo4j/query/route.js +1 -1
- package/.next-prod/server/app/api/neo4j/query/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/neo4j/schema/route.js +1 -1
- package/.next-prod/server/app/api/neo4j/schema/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/note/route.js +1 -1
- package/.next-prod/server/app/api/note/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/ollama/config/route.js +1 -1
- package/.next-prod/server/app/api/ollama/config/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/ollama/models/route.js +1 -1
- package/.next-prod/server/app/api/ollama/models/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/ollama/start/route.js +1 -1
- package/.next-prod/server/app/api/ollama/start/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/open-cursor/route.js +1 -1
- package/.next-prod/server/app/api/open-cursor/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/open-vscode/route.js +1 -1
- package/.next-prod/server/app/api/open-vscode/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/pick-folder/route.js +1 -1
- package/.next-prod/server/app/api/pick-folder/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/pinned-sessions/route.js +1 -1
- package/.next-prod/server/app/api/pinned-sessions/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/project-settings/route.js +1 -1
- package/.next-prod/server/app/api/project-settings/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/project-state/route.js +1 -1
- package/.next-prod/server/app/api/project-state/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/projectGraph/affected/route.js +1 -1
- package/.next-prod/server/app/api/projectGraph/affected/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/projectGraph/callees/route.js +1 -1
- package/.next-prod/server/app/api/projectGraph/callees/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/projectGraph/callers/route.js +1 -1
- package/.next-prod/server/app/api/projectGraph/callers/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/projectGraph/coedit/route.js +1 -1
- package/.next-prod/server/app/api/projectGraph/coedit/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/projectGraph/context/route.js +1 -1
- package/.next-prod/server/app/api/projectGraph/context/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/projectGraph/file/route.js +1 -1
- package/.next-prod/server/app/api/projectGraph/file/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/projectGraph/file-functions/route.js +1 -1
- package/.next-prod/server/app/api/projectGraph/file-functions/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/projectGraph/impact/route.js +1 -1
- package/.next-prod/server/app/api/projectGraph/impact/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/projectGraph/related/route.js +1 -1
- package/.next-prod/server/app/api/projectGraph/related/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/projectGraph/risk/route.js +1 -1
- package/.next-prod/server/app/api/projectGraph/risk/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/projectGraph/search/route.js +1 -1
- package/.next-prod/server/app/api/projectGraph/search/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/projects/route.js +1 -1
- package/.next-prod/server/app/api/projects/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/prompts/config/route.js +1 -0
- package/.next-prod/server/app/api/prompts/config/route.js.nft.json +1 -0
- package/.next-prod/server/app/api/prompts/config/route_client-reference-manifest.js +1 -0
- package/.next-prod/server/app/api/push/public-key/route.js +1 -1
- package/.next-prod/server/app/api/push/public-key/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/push/subscribe/route.js +1 -1
- package/.next-prod/server/app/api/push/subscribe/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/push/unsubscribe/route.js +1 -1
- package/.next-prod/server/app/api/push/unsubscribe/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/redis/command/route.js +1 -1
- package/.next-prod/server/app/api/redis/command/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/redis/connect/route.js +1 -1
- package/.next-prod/server/app/api/redis/connect/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/redis/delete/route.js +1 -1
- package/.next-prod/server/app/api/redis/delete/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/redis/disconnect/route.js +1 -1
- package/.next-prod/server/app/api/redis/disconnect/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/redis/get/route.js +1 -1
- package/.next-prod/server/app/api/redis/get/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/redis/keys/route.js +1 -1
- package/.next-prod/server/app/api/redis/keys/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/redis/set/route.js +1 -1
- package/.next-prod/server/app/api/redis/set/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/review/[id]/comments/route.js +1 -1
- package/.next-prod/server/app/api/review/[id]/comments/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/review/[id]/replies/route.js +1 -1
- package/.next-prod/server/app/api/review/[id]/replies/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/review/[id]/route.js +1 -1
- package/.next-prod/server/app/api/review/[id]/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/review/identify/route.js +1 -1
- package/.next-prod/server/app/api/review/identify/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/review/order/route.js +1 -1
- package/.next-prod/server/app/api/review/order/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/review/route.js +1 -1
- package/.next-prod/server/app/api/review/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/review/share-info/route.js +1 -1
- package/.next-prod/server/app/api/review/share-info/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/review/users/route.js +1 -1
- package/.next-prod/server/app/api/review/users/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/scheduled-tasks/route.js +4 -3
- package/.next-prod/server/app/api/scheduled-tasks/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/services/config/route.js +1 -1
- package/.next-prod/server/app/api/services/config/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/services/scripts/route.js +1 -1
- package/.next-prod/server/app/api/services/scripts/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/session/[sessionId]/fork/route.js +1 -1
- package/.next-prod/server/app/api/session/[sessionId]/fork/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/session/[sessionId]/history/route.js +1 -1
- package/.next-prod/server/app/api/session/[sessionId]/history/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/session-by-path/route.js +1 -1
- package/.next-prod/server/app/api/session-by-path/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/sessions/projects/[encodedPath]/route.js +1 -1
- package/.next-prod/server/app/api/sessions/projects/[encodedPath]/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/sessions/projects/route.js +1 -1
- package/.next-prod/server/app/api/sessions/projects/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/sessions/route.js +1 -1
- package/.next-prod/server/app/api/sessions/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/settings/route.js +1 -1
- package/.next-prod/server/app/api/settings/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/skills/[id]/route.js +1 -1
- package/.next-prod/server/app/api/skills/[id]/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/skills/content/route.js +1 -1
- package/.next-prod/server/app/api/skills/content/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/skills/route.js +1 -1
- package/.next-prod/server/app/api/skills/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/snapshots/diff/route.js +1 -1
- package/.next-prod/server/app/api/snapshots/diff/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/snapshots/route.js +1 -1
- package/.next-prod/server/app/api/snapshots/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/terminal/aliases/route.js +1 -1
- package/.next-prod/server/app/api/terminal/aliases/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/terminal/autocomplete/route.js +1 -1
- package/.next-prod/server/app/api/terminal/autocomplete/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/terminal/bubble-order/route.js +1 -1
- package/.next-prod/server/app/api/terminal/bubble-order/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/terminal/env/route.js +1 -1
- package/.next-prod/server/app/api/terminal/env/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/terminal/history/route.js +1 -1
- package/.next-prod/server/app/api/terminal/history/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/version/route.js +1 -1
- package/.next-prod/server/app/api/version/route.js.nft.json +1 -1
- package/.next-prod/server/app/apps/[...path]/route.js +1 -1
- package/.next-prod/server/app/apps/[...path]/route.js.nft.json +1 -1
- package/.next-prod/server/app/favicon.ico/route.js +1 -1
- package/.next-prod/server/app/favicon.ico/route.js.nft.json +1 -1
- package/.next-prod/server/app/m/page.js +2 -2
- package/.next-prod/server/app/m/page.js.nft.json +1 -1
- package/.next-prod/server/app/m/page_client-reference-manifest.js +1 -1
- package/.next-prod/server/app/manifest.webmanifest/route.js +2 -2
- package/.next-prod/server/app/manifest.webmanifest/route.js.nft.json +1 -1
- package/.next-prod/server/app/page.js +2 -2
- package/.next-prod/server/app/page.js.nft.json +1 -1
- package/.next-prod/server/app/page_client-reference-manifest.js +1 -1
- package/.next-prod/server/app/project/page.js +2 -2
- package/.next-prod/server/app/project/page.js.nft.json +1 -1
- package/.next-prod/server/app/project/page_client-reference-manifest.js +1 -1
- package/.next-prod/server/app/review/[id]/page.js +2 -2
- package/.next-prod/server/app/review/[id]/page.js.nft.json +1 -1
- package/.next-prod/server/app/review/[id]/page_client-reference-manifest.js +1 -1
- package/.next-prod/server/app-paths-manifest.json +6 -3
- package/.next-prod/server/chunks/304.js +1 -1
- package/.next-prod/server/chunks/3863.js +2 -2
- package/.next-prod/server/chunks/{4848.js → 4338.js} +2 -2
- package/.next-prod/server/chunks/6548.js +1 -0
- package/.next-prod/server/chunks/{293.js → 7139.js} +4 -4
- package/.next-prod/server/chunks/9419.js +91 -0
- package/.next-prod/server/chunks/9658.js +12 -12
- package/.next-prod/server/chunks/9830.js +1 -1
- package/.next-prod/server/functions-config-manifest.json +1 -0
- package/.next-prod/server/middleware-build-manifest.js +1 -1
- package/.next-prod/server/pages/404.html +2 -2
- package/.next-prod/server/pages/500.html +1 -1
- package/.next-prod/server/server-reference-manifest.json +1 -1
- package/.next-prod/static/JD1OQjo1JkC0HtJ7Nawnu/_buildManifest.js +1 -0
- package/.next-prod/static/chunks/{4304-408f5bddd7583676.js → 2308-c6b5ed3c19252dce.js} +3 -3
- package/.next-prod/static/chunks/6260-d083071702689ed3.js +25 -0
- package/.next-prod/static/chunks/6784-11dddca80af27810.js +0 -0
- package/.next-prod/static/chunks/9530-71cba64daec9add7.js +15 -0
- package/.next-prod/static/chunks/app/_global-error/{page-51252a3b116b8135.js → page-0ad1f48c09ff2c02.js} +1 -1
- package/.next-prod/static/chunks/app/api/agent/test/{route-51252a3b116b8135.js → route-0ad1f48c09ff2c02.js} +1 -1
- package/.next-prod/static/chunks/app/api/bash/{route-51252a3b116b8135.js → route-0ad1f48c09ff2c02.js} +1 -1
- package/.next-prod/static/chunks/app/api/chat/codex/{route-51252a3b116b8135.js → route-0ad1f48c09ff2c02.js} +1 -1
- package/.next-prod/static/chunks/app/api/chat/deepseek/route-0ad1f48c09ff2c02.js +1 -0
- package/.next-prod/static/chunks/app/api/chat/kimi/route-0ad1f48c09ff2c02.js +1 -0
- package/.next-prod/static/chunks/app/api/chat/ollama/route-0ad1f48c09ff2c02.js +1 -0
- package/.next-prod/static/chunks/app/api/chat/pty-input/route-0ad1f48c09ff2c02.js +1 -0
- package/.next-prod/static/chunks/app/api/chat/route-0ad1f48c09ff2c02.js +1 -0
- package/.next-prod/static/chunks/app/api/chat/stop/route-0ad1f48c09ff2c02.js +1 -0
- package/.next-prod/static/chunks/app/api/claude-stats/route-0ad1f48c09ff2c02.js +1 -0
- package/.next-prod/static/chunks/app/api/commands/route-0ad1f48c09ff2c02.js +1 -0
- package/.next-prod/static/chunks/app/api/comments/route-0ad1f48c09ff2c02.js +1 -0
- package/.next-prod/static/chunks/app/api/db/columns/route-0ad1f48c09ff2c02.js +1 -0
- package/.next-prod/static/chunks/app/api/db/connect/route-0ad1f48c09ff2c02.js +1 -0
- package/.next-prod/static/chunks/app/api/db/disconnect/route-0ad1f48c09ff2c02.js +1 -0
- package/.next-prod/static/chunks/app/api/db/export/route-0ad1f48c09ff2c02.js +1 -0
- package/.next-prod/static/chunks/app/api/db/query/route-0ad1f48c09ff2c02.js +1 -0
- package/.next-prod/static/chunks/app/api/db/schemas/route-0ad1f48c09ff2c02.js +1 -0
- package/.next-prod/static/chunks/app/api/deepseek/balance/route-0ad1f48c09ff2c02.js +1 -0
- package/.next-prod/static/chunks/app/api/deepseek/credentials/route-0ad1f48c09ff2c02.js +1 -0
- package/.next-prod/static/chunks/app/api/deepseek/models/route-0ad1f48c09ff2c02.js +1 -0
- package/.next-prod/static/chunks/app/api/dev/spans/route-0ad1f48c09ff2c02.js +1 -0
- package/.next-prod/static/chunks/app/api/extension/version/route-0ad1f48c09ff2c02.js +1 -0
- package/.next-prod/static/chunks/app/api/file/route-0ad1f48c09ff2c02.js +1 -0
- package/.next-prod/static/chunks/app/api/files/blame/route-0ad1f48c09ff2c02.js +1 -0
- package/.next-prod/static/chunks/app/api/files/clipboard/route-0ad1f48c09ff2c02.js +1 -0
- package/.next-prod/static/chunks/app/api/files/copy/route-0ad1f48c09ff2c02.js +1 -0
- package/.next-prod/static/chunks/app/api/files/delete/route-0ad1f48c09ff2c02.js +1 -0
- package/.next-prod/static/chunks/app/api/files/expanded/route-0ad1f48c09ff2c02.js +1 -0
- package/.next-prod/static/chunks/app/api/files/index/route-0ad1f48c09ff2c02.js +1 -0
- package/.next-prod/static/chunks/app/api/files/init/route-0ad1f48c09ff2c02.js +1 -0
- package/.next-prod/static/chunks/app/api/files/paste/route-0ad1f48c09ff2c02.js +1 -0
- package/.next-prod/static/chunks/app/api/files/read/route-0ad1f48c09ff2c02.js +1 -0
- package/.next-prod/static/chunks/app/api/files/readdir/route-0ad1f48c09ff2c02.js +1 -0
- package/.next-prod/static/chunks/app/api/files/recent/route-0ad1f48c09ff2c02.js +1 -0
- package/.next-prod/static/chunks/app/api/files/save/route-0ad1f48c09ff2c02.js +1 -0
- package/.next-prod/static/chunks/app/api/files/search/route-0ad1f48c09ff2c02.js +1 -0
- package/.next-prod/static/chunks/app/api/files/stat/route-0ad1f48c09ff2c02.js +1 -0
- package/.next-prod/static/chunks/app/api/files/text/route-0ad1f48c09ff2c02.js +1 -0
- package/.next-prod/static/chunks/app/api/git/branch-diff/route-0ad1f48c09ff2c02.js +1 -0
- package/.next-prod/static/chunks/app/api/git/branches/route-0ad1f48c09ff2c02.js +1 -0
- package/.next-prod/static/chunks/app/api/git/commit-diff/route-0ad1f48c09ff2c02.js +1 -0
- package/.next-prod/static/chunks/app/api/git/commits/route-0ad1f48c09ff2c02.js +1 -0
- package/.next-prod/static/chunks/app/api/git/current-branch/route-0ad1f48c09ff2c02.js +1 -0
- package/.next-prod/static/chunks/app/api/git/diff/route-0ad1f48c09ff2c02.js +1 -0
- package/.next-prod/static/chunks/app/api/git/discard/route-0ad1f48c09ff2c02.js +1 -0
- package/.next-prod/static/chunks/app/api/git/stage/route-0ad1f48c09ff2c02.js +1 -0
- package/.next-prod/static/chunks/app/api/git/status/route-0ad1f48c09ff2c02.js +1 -0
- package/.next-prod/static/chunks/app/api/git/unstage/route-0ad1f48c09ff2c02.js +1 -0
- package/.next-prod/static/chunks/app/api/git/worktree/route-0ad1f48c09ff2c02.js +1 -0
- package/.next-prod/static/chunks/app/api/global-state/route-0ad1f48c09ff2c02.js +1 -0
- package/.next-prod/static/chunks/app/api/health/route-0ad1f48c09ff2c02.js +1 -0
- package/.next-prod/static/chunks/app/api/html-apps/[id]/route-0ad1f48c09ff2c02.js +1 -0
- package/.next-prod/static/chunks/app/api/html-apps/route-0ad1f48c09ff2c02.js +1 -0
- package/.next-prod/static/chunks/app/api/jupyter/load/route-0ad1f48c09ff2c02.js +1 -0
- package/.next-prod/static/chunks/app/api/jupyter/save/route-0ad1f48c09ff2c02.js +1 -0
- package/.next-prod/static/chunks/app/api/jupyter/shutdown/route-0ad1f48c09ff2c02.js +1 -0
- package/.next-prod/static/chunks/app/api/lsp/definition/route-0ad1f48c09ff2c02.js +1 -0
- package/.next-prod/static/chunks/app/api/lsp/hover/route-0ad1f48c09ff2c02.js +1 -0
- package/.next-prod/static/chunks/app/api/lsp/references/route-0ad1f48c09ff2c02.js +1 -0
- package/.next-prod/static/chunks/app/api/lsp/status/route-0ad1f48c09ff2c02.js +1 -0
- package/.next-prod/static/chunks/app/api/lsp/warmup/route-0ad1f48c09ff2c02.js +1 -0
- package/.next-prod/static/chunks/app/api/mysql/columns/route-0ad1f48c09ff2c02.js +1 -0
- package/.next-prod/static/chunks/app/api/mysql/connect/route-0ad1f48c09ff2c02.js +1 -0
- package/.next-prod/static/chunks/app/api/mysql/disconnect/route-0ad1f48c09ff2c02.js +1 -0
- package/.next-prod/static/chunks/app/api/mysql/export/route-0ad1f48c09ff2c02.js +1 -0
- package/.next-prod/static/chunks/app/api/mysql/query/route-0ad1f48c09ff2c02.js +1 -0
- package/.next-prod/static/chunks/app/api/mysql/schemas/route-0ad1f48c09ff2c02.js +1 -0
- package/.next-prod/static/chunks/app/api/neo4j/connect/route-0ad1f48c09ff2c02.js +1 -0
- package/.next-prod/static/chunks/app/api/neo4j/disconnect/route-0ad1f48c09ff2c02.js +1 -0
- package/.next-prod/static/chunks/app/api/neo4j/query/route-0ad1f48c09ff2c02.js +1 -0
- package/.next-prod/static/chunks/app/api/neo4j/schema/route-0ad1f48c09ff2c02.js +1 -0
- package/.next-prod/static/chunks/app/api/note/route-0ad1f48c09ff2c02.js +1 -0
- package/.next-prod/static/chunks/app/api/ollama/config/route-0ad1f48c09ff2c02.js +1 -0
- package/.next-prod/static/chunks/app/api/ollama/models/route-0ad1f48c09ff2c02.js +1 -0
- package/.next-prod/static/chunks/app/api/ollama/start/route-0ad1f48c09ff2c02.js +1 -0
- package/.next-prod/static/chunks/app/api/open-cursor/route-0ad1f48c09ff2c02.js +1 -0
- package/.next-prod/static/chunks/app/api/open-vscode/route-0ad1f48c09ff2c02.js +1 -0
- package/.next-prod/static/chunks/app/api/pick-folder/route-0ad1f48c09ff2c02.js +1 -0
- package/.next-prod/static/chunks/app/api/pinned-sessions/route-0ad1f48c09ff2c02.js +1 -0
- package/.next-prod/static/chunks/app/api/project-settings/route-0ad1f48c09ff2c02.js +1 -0
- package/.next-prod/static/chunks/app/api/project-state/route-0ad1f48c09ff2c02.js +1 -0
- package/.next-prod/static/chunks/app/api/projectGraph/affected/route-0ad1f48c09ff2c02.js +1 -0
- package/.next-prod/static/chunks/app/api/projectGraph/callees/route-0ad1f48c09ff2c02.js +1 -0
- package/.next-prod/static/chunks/app/api/projectGraph/callers/route-0ad1f48c09ff2c02.js +1 -0
- package/.next-prod/static/chunks/app/api/projectGraph/coedit/route-0ad1f48c09ff2c02.js +1 -0
- package/.next-prod/static/chunks/app/api/projectGraph/context/route-0ad1f48c09ff2c02.js +1 -0
- package/.next-prod/static/chunks/app/api/projectGraph/file/route-0ad1f48c09ff2c02.js +1 -0
- package/.next-prod/static/chunks/app/api/projectGraph/file-functions/route-0ad1f48c09ff2c02.js +1 -0
- package/.next-prod/static/chunks/app/api/projectGraph/impact/route-0ad1f48c09ff2c02.js +1 -0
- package/.next-prod/static/chunks/app/api/projectGraph/related/route-0ad1f48c09ff2c02.js +1 -0
- package/.next-prod/static/chunks/app/api/projectGraph/risk/route-0ad1f48c09ff2c02.js +1 -0
- package/.next-prod/static/chunks/app/api/projectGraph/search/route-0ad1f48c09ff2c02.js +1 -0
- package/.next-prod/static/chunks/app/api/projects/route-0ad1f48c09ff2c02.js +1 -0
- package/.next-prod/static/chunks/app/api/prompts/config/route-0ad1f48c09ff2c02.js +1 -0
- package/.next-prod/static/chunks/app/api/push/public-key/route-0ad1f48c09ff2c02.js +1 -0
- package/.next-prod/static/chunks/app/api/push/subscribe/route-0ad1f48c09ff2c02.js +1 -0
- package/.next-prod/static/chunks/app/api/push/unsubscribe/route-0ad1f48c09ff2c02.js +1 -0
- package/.next-prod/static/chunks/app/api/redis/command/route-0ad1f48c09ff2c02.js +1 -0
- package/.next-prod/static/chunks/app/api/redis/connect/route-0ad1f48c09ff2c02.js +1 -0
- package/.next-prod/static/chunks/app/api/redis/delete/route-0ad1f48c09ff2c02.js +1 -0
- package/.next-prod/static/chunks/app/api/redis/disconnect/route-0ad1f48c09ff2c02.js +1 -0
- package/.next-prod/static/chunks/app/api/redis/get/route-0ad1f48c09ff2c02.js +1 -0
- package/.next-prod/static/chunks/app/api/redis/keys/route-0ad1f48c09ff2c02.js +1 -0
- package/.next-prod/static/chunks/app/api/redis/set/route-0ad1f48c09ff2c02.js +1 -0
- package/.next-prod/static/chunks/app/api/review/[id]/comments/route-0ad1f48c09ff2c02.js +1 -0
- package/.next-prod/static/chunks/app/api/review/[id]/replies/route-0ad1f48c09ff2c02.js +1 -0
- package/.next-prod/static/chunks/app/api/review/[id]/route-0ad1f48c09ff2c02.js +1 -0
- package/.next-prod/static/chunks/app/api/review/identify/route-0ad1f48c09ff2c02.js +1 -0
- package/.next-prod/static/chunks/app/api/review/order/route-0ad1f48c09ff2c02.js +1 -0
- package/.next-prod/static/chunks/app/api/review/route-0ad1f48c09ff2c02.js +1 -0
- package/.next-prod/static/chunks/app/api/review/share-info/route-0ad1f48c09ff2c02.js +1 -0
- package/.next-prod/static/chunks/app/api/review/users/route-0ad1f48c09ff2c02.js +1 -0
- package/.next-prod/static/chunks/app/api/scheduled-tasks/route-0ad1f48c09ff2c02.js +1 -0
- package/.next-prod/static/chunks/app/api/services/config/route-0ad1f48c09ff2c02.js +1 -0
- package/.next-prod/static/chunks/app/api/services/scripts/route-0ad1f48c09ff2c02.js +1 -0
- package/.next-prod/static/chunks/app/api/session/[sessionId]/fork/route-0ad1f48c09ff2c02.js +1 -0
- package/.next-prod/static/chunks/app/api/session/[sessionId]/history/route-0ad1f48c09ff2c02.js +1 -0
- package/.next-prod/static/chunks/app/api/session-by-path/route-0ad1f48c09ff2c02.js +1 -0
- package/.next-prod/static/chunks/app/api/sessions/projects/[encodedPath]/route-0ad1f48c09ff2c02.js +1 -0
- package/.next-prod/static/chunks/app/api/sessions/projects/route-0ad1f48c09ff2c02.js +1 -0
- package/.next-prod/static/chunks/app/api/sessions/route-0ad1f48c09ff2c02.js +1 -0
- package/.next-prod/static/chunks/app/api/settings/route-0ad1f48c09ff2c02.js +1 -0
- package/.next-prod/static/chunks/app/api/skills/[id]/route-0ad1f48c09ff2c02.js +1 -0
- package/.next-prod/static/chunks/app/api/skills/content/route-0ad1f48c09ff2c02.js +1 -0
- package/.next-prod/static/chunks/app/api/skills/route-0ad1f48c09ff2c02.js +1 -0
- package/.next-prod/static/chunks/app/api/snapshots/diff/route-0ad1f48c09ff2c02.js +1 -0
- package/.next-prod/static/chunks/app/api/snapshots/route-0ad1f48c09ff2c02.js +1 -0
- package/.next-prod/static/chunks/app/api/terminal/aliases/route-0ad1f48c09ff2c02.js +1 -0
- package/.next-prod/static/chunks/app/api/terminal/autocomplete/route-0ad1f48c09ff2c02.js +1 -0
- package/.next-prod/static/chunks/app/api/terminal/bubble-order/route-0ad1f48c09ff2c02.js +1 -0
- package/.next-prod/static/chunks/app/api/terminal/env/route-0ad1f48c09ff2c02.js +1 -0
- package/.next-prod/static/chunks/app/api/terminal/history/route-0ad1f48c09ff2c02.js +1 -0
- package/.next-prod/static/chunks/app/api/version/route-0ad1f48c09ff2c02.js +1 -0
- package/.next-prod/static/chunks/app/apps/[...path]/route-0ad1f48c09ff2c02.js +1 -0
- package/.next-prod/static/chunks/app/{layout-145570f39a827c0f.js → layout-d43dd702b3ee9d15.js} +1 -1
- package/.next-prod/static/chunks/app/m/{page-6c37d1fb9db9b9d6.js → page-56faaf1f36f2588e.js} +1 -1
- package/.next-prod/static/chunks/app/manifest.webmanifest/route-0ad1f48c09ff2c02.js +1 -0
- package/.next-prod/static/chunks/app/{page-487095ac01a4c1ef.js → page-8e7a3d723260097a.js} +1 -1
- package/.next-prod/static/chunks/app/project/{page-487095ac01a4c1ef.js → page-8e7a3d723260097a.js} +1 -1
- package/.next-prod/static/chunks/app/review/[id]/page-c0136423507b7547.js +1 -0
- package/.next-prod/static/chunks/next/dist/client/components/builtin/app-error-0ad1f48c09ff2c02.js +1 -0
- package/.next-prod/static/chunks/next/dist/client/components/builtin/forbidden-0ad1f48c09ff2c02.js +1 -0
- package/.next-prod/static/chunks/next/dist/client/components/builtin/not-found-0ad1f48c09ff2c02.js +1 -0
- package/.next-prod/static/chunks/next/dist/client/components/builtin/unauthorized-0ad1f48c09ff2c02.js +1 -0
- package/.next-prod/static/css/7a396fd0cfd8a652.css +1 -0
- package/.next-prod/trace +14 -14
- package/.next-prod/trace-build +1 -1
- package/.next-prod/types/app/api/deepseek/balance/route.ts +351 -0
- package/.next-prod/types/app/api/deepseek/models/route.ts +351 -0
- package/.next-prod/types/app/api/prompts/config/route.ts +351 -0
- package/.next-prod/types/routes.d.ts +4 -1
- package/.next-prod/types/validator.ts +27 -0
- package/dist/{chunk-RUNUGDPP.mjs → chunk-ALNGHUH4.mjs} +44 -30
- package/dist/{chunk-7WPYQYA6.mjs → chunk-LEWYJIIE.mjs} +4 -4
- package/dist/{chunk-BRW4ZEIC.mjs → chunk-UBB3LJGR.mjs} +56 -7
- package/dist/httpApi.mjs +2 -2
- package/dist/scheduledTasks.mjs +2750 -287
- package/dist/{server-MCN5AIEU.mjs → server-D7CF4MB3.mjs} +2 -2
- package/dist/wsServer.mjs +7 -6
- package/package.json +1 -1
- package/.next-prod/server/chunks/6038.js +0 -1
- package/.next-prod/server/chunks/7338.js +0 -89
- package/.next-prod/static/8aWX4sRFsO4Rx4DD9L9w-/_buildManifest.js +0 -1
- package/.next-prod/static/chunks/2876-4336c42044f38302.js +0 -25
- package/.next-prod/static/chunks/6784-c9969c13c13b25af.js +0 -0
- package/.next-prod/static/chunks/9530-27352e6f8bafeb3c.js +0 -15
- package/.next-prod/static/chunks/app/api/chat/deepseek/route-51252a3b116b8135.js +0 -1
- package/.next-prod/static/chunks/app/api/chat/kimi/route-51252a3b116b8135.js +0 -1
- package/.next-prod/static/chunks/app/api/chat/ollama/route-51252a3b116b8135.js +0 -1
- package/.next-prod/static/chunks/app/api/chat/pty-input/route-51252a3b116b8135.js +0 -1
- package/.next-prod/static/chunks/app/api/chat/route-51252a3b116b8135.js +0 -1
- package/.next-prod/static/chunks/app/api/chat/stop/route-51252a3b116b8135.js +0 -1
- package/.next-prod/static/chunks/app/api/claude-stats/route-51252a3b116b8135.js +0 -1
- package/.next-prod/static/chunks/app/api/commands/route-51252a3b116b8135.js +0 -1
- package/.next-prod/static/chunks/app/api/comments/route-51252a3b116b8135.js +0 -1
- package/.next-prod/static/chunks/app/api/db/columns/route-51252a3b116b8135.js +0 -1
- package/.next-prod/static/chunks/app/api/db/connect/route-51252a3b116b8135.js +0 -1
- package/.next-prod/static/chunks/app/api/db/disconnect/route-51252a3b116b8135.js +0 -1
- package/.next-prod/static/chunks/app/api/db/export/route-51252a3b116b8135.js +0 -1
- package/.next-prod/static/chunks/app/api/db/query/route-51252a3b116b8135.js +0 -1
- package/.next-prod/static/chunks/app/api/db/schemas/route-51252a3b116b8135.js +0 -1
- package/.next-prod/static/chunks/app/api/deepseek/credentials/route-51252a3b116b8135.js +0 -1
- package/.next-prod/static/chunks/app/api/dev/spans/route-51252a3b116b8135.js +0 -1
- package/.next-prod/static/chunks/app/api/extension/version/route-51252a3b116b8135.js +0 -1
- package/.next-prod/static/chunks/app/api/file/route-51252a3b116b8135.js +0 -1
- package/.next-prod/static/chunks/app/api/files/blame/route-51252a3b116b8135.js +0 -1
- package/.next-prod/static/chunks/app/api/files/clipboard/route-51252a3b116b8135.js +0 -1
- package/.next-prod/static/chunks/app/api/files/copy/route-51252a3b116b8135.js +0 -1
- package/.next-prod/static/chunks/app/api/files/delete/route-51252a3b116b8135.js +0 -1
- package/.next-prod/static/chunks/app/api/files/expanded/route-51252a3b116b8135.js +0 -1
- package/.next-prod/static/chunks/app/api/files/index/route-51252a3b116b8135.js +0 -1
- package/.next-prod/static/chunks/app/api/files/init/route-51252a3b116b8135.js +0 -1
- package/.next-prod/static/chunks/app/api/files/paste/route-51252a3b116b8135.js +0 -1
- package/.next-prod/static/chunks/app/api/files/read/route-51252a3b116b8135.js +0 -1
- package/.next-prod/static/chunks/app/api/files/readdir/route-51252a3b116b8135.js +0 -1
- package/.next-prod/static/chunks/app/api/files/recent/route-51252a3b116b8135.js +0 -1
- package/.next-prod/static/chunks/app/api/files/save/route-51252a3b116b8135.js +0 -1
- package/.next-prod/static/chunks/app/api/files/search/route-51252a3b116b8135.js +0 -1
- package/.next-prod/static/chunks/app/api/files/stat/route-51252a3b116b8135.js +0 -1
- package/.next-prod/static/chunks/app/api/files/text/route-51252a3b116b8135.js +0 -1
- package/.next-prod/static/chunks/app/api/git/branch-diff/route-51252a3b116b8135.js +0 -1
- package/.next-prod/static/chunks/app/api/git/branches/route-51252a3b116b8135.js +0 -1
- package/.next-prod/static/chunks/app/api/git/commit-diff/route-51252a3b116b8135.js +0 -1
- package/.next-prod/static/chunks/app/api/git/commits/route-51252a3b116b8135.js +0 -1
- package/.next-prod/static/chunks/app/api/git/current-branch/route-51252a3b116b8135.js +0 -1
- package/.next-prod/static/chunks/app/api/git/diff/route-51252a3b116b8135.js +0 -1
- package/.next-prod/static/chunks/app/api/git/discard/route-51252a3b116b8135.js +0 -1
- package/.next-prod/static/chunks/app/api/git/stage/route-51252a3b116b8135.js +0 -1
- package/.next-prod/static/chunks/app/api/git/status/route-51252a3b116b8135.js +0 -1
- package/.next-prod/static/chunks/app/api/git/unstage/route-51252a3b116b8135.js +0 -1
- package/.next-prod/static/chunks/app/api/git/worktree/route-51252a3b116b8135.js +0 -1
- package/.next-prod/static/chunks/app/api/global-state/route-51252a3b116b8135.js +0 -1
- package/.next-prod/static/chunks/app/api/health/route-51252a3b116b8135.js +0 -1
- package/.next-prod/static/chunks/app/api/html-apps/[id]/route-51252a3b116b8135.js +0 -1
- package/.next-prod/static/chunks/app/api/html-apps/route-51252a3b116b8135.js +0 -1
- package/.next-prod/static/chunks/app/api/jupyter/load/route-51252a3b116b8135.js +0 -1
- package/.next-prod/static/chunks/app/api/jupyter/save/route-51252a3b116b8135.js +0 -1
- package/.next-prod/static/chunks/app/api/jupyter/shutdown/route-51252a3b116b8135.js +0 -1
- package/.next-prod/static/chunks/app/api/lsp/definition/route-51252a3b116b8135.js +0 -1
- package/.next-prod/static/chunks/app/api/lsp/hover/route-51252a3b116b8135.js +0 -1
- package/.next-prod/static/chunks/app/api/lsp/references/route-51252a3b116b8135.js +0 -1
- package/.next-prod/static/chunks/app/api/lsp/status/route-51252a3b116b8135.js +0 -1
- package/.next-prod/static/chunks/app/api/lsp/warmup/route-51252a3b116b8135.js +0 -1
- package/.next-prod/static/chunks/app/api/mysql/columns/route-51252a3b116b8135.js +0 -1
- package/.next-prod/static/chunks/app/api/mysql/connect/route-51252a3b116b8135.js +0 -1
- package/.next-prod/static/chunks/app/api/mysql/disconnect/route-51252a3b116b8135.js +0 -1
- package/.next-prod/static/chunks/app/api/mysql/export/route-51252a3b116b8135.js +0 -1
- package/.next-prod/static/chunks/app/api/mysql/query/route-51252a3b116b8135.js +0 -1
- package/.next-prod/static/chunks/app/api/mysql/schemas/route-51252a3b116b8135.js +0 -1
- package/.next-prod/static/chunks/app/api/neo4j/connect/route-51252a3b116b8135.js +0 -1
- package/.next-prod/static/chunks/app/api/neo4j/disconnect/route-51252a3b116b8135.js +0 -1
- package/.next-prod/static/chunks/app/api/neo4j/query/route-51252a3b116b8135.js +0 -1
- package/.next-prod/static/chunks/app/api/neo4j/schema/route-51252a3b116b8135.js +0 -1
- package/.next-prod/static/chunks/app/api/note/route-51252a3b116b8135.js +0 -1
- package/.next-prod/static/chunks/app/api/ollama/config/route-51252a3b116b8135.js +0 -1
- package/.next-prod/static/chunks/app/api/ollama/models/route-51252a3b116b8135.js +0 -1
- package/.next-prod/static/chunks/app/api/ollama/start/route-51252a3b116b8135.js +0 -1
- package/.next-prod/static/chunks/app/api/open-cursor/route-51252a3b116b8135.js +0 -1
- package/.next-prod/static/chunks/app/api/open-vscode/route-51252a3b116b8135.js +0 -1
- package/.next-prod/static/chunks/app/api/pick-folder/route-51252a3b116b8135.js +0 -1
- package/.next-prod/static/chunks/app/api/pinned-sessions/route-51252a3b116b8135.js +0 -1
- package/.next-prod/static/chunks/app/api/project-settings/route-51252a3b116b8135.js +0 -1
- package/.next-prod/static/chunks/app/api/project-state/route-51252a3b116b8135.js +0 -1
- package/.next-prod/static/chunks/app/api/projectGraph/affected/route-51252a3b116b8135.js +0 -1
- package/.next-prod/static/chunks/app/api/projectGraph/callees/route-51252a3b116b8135.js +0 -1
- package/.next-prod/static/chunks/app/api/projectGraph/callers/route-51252a3b116b8135.js +0 -1
- package/.next-prod/static/chunks/app/api/projectGraph/coedit/route-51252a3b116b8135.js +0 -1
- package/.next-prod/static/chunks/app/api/projectGraph/context/route-51252a3b116b8135.js +0 -1
- package/.next-prod/static/chunks/app/api/projectGraph/file/route-51252a3b116b8135.js +0 -1
- package/.next-prod/static/chunks/app/api/projectGraph/file-functions/route-51252a3b116b8135.js +0 -1
- package/.next-prod/static/chunks/app/api/projectGraph/impact/route-51252a3b116b8135.js +0 -1
- package/.next-prod/static/chunks/app/api/projectGraph/related/route-51252a3b116b8135.js +0 -1
- package/.next-prod/static/chunks/app/api/projectGraph/risk/route-51252a3b116b8135.js +0 -1
- package/.next-prod/static/chunks/app/api/projectGraph/search/route-51252a3b116b8135.js +0 -1
- package/.next-prod/static/chunks/app/api/projects/route-51252a3b116b8135.js +0 -1
- package/.next-prod/static/chunks/app/api/push/public-key/route-51252a3b116b8135.js +0 -1
- package/.next-prod/static/chunks/app/api/push/subscribe/route-51252a3b116b8135.js +0 -1
- package/.next-prod/static/chunks/app/api/push/unsubscribe/route-51252a3b116b8135.js +0 -1
- package/.next-prod/static/chunks/app/api/redis/command/route-51252a3b116b8135.js +0 -1
- package/.next-prod/static/chunks/app/api/redis/connect/route-51252a3b116b8135.js +0 -1
- package/.next-prod/static/chunks/app/api/redis/delete/route-51252a3b116b8135.js +0 -1
- package/.next-prod/static/chunks/app/api/redis/disconnect/route-51252a3b116b8135.js +0 -1
- package/.next-prod/static/chunks/app/api/redis/get/route-51252a3b116b8135.js +0 -1
- package/.next-prod/static/chunks/app/api/redis/keys/route-51252a3b116b8135.js +0 -1
- package/.next-prod/static/chunks/app/api/redis/set/route-51252a3b116b8135.js +0 -1
- package/.next-prod/static/chunks/app/api/review/[id]/comments/route-51252a3b116b8135.js +0 -1
- package/.next-prod/static/chunks/app/api/review/[id]/replies/route-51252a3b116b8135.js +0 -1
- package/.next-prod/static/chunks/app/api/review/[id]/route-51252a3b116b8135.js +0 -1
- package/.next-prod/static/chunks/app/api/review/identify/route-51252a3b116b8135.js +0 -1
- package/.next-prod/static/chunks/app/api/review/order/route-51252a3b116b8135.js +0 -1
- package/.next-prod/static/chunks/app/api/review/route-51252a3b116b8135.js +0 -1
- package/.next-prod/static/chunks/app/api/review/share-info/route-51252a3b116b8135.js +0 -1
- package/.next-prod/static/chunks/app/api/review/users/route-51252a3b116b8135.js +0 -1
- package/.next-prod/static/chunks/app/api/scheduled-tasks/route-51252a3b116b8135.js +0 -1
- package/.next-prod/static/chunks/app/api/services/config/route-51252a3b116b8135.js +0 -1
- package/.next-prod/static/chunks/app/api/services/scripts/route-51252a3b116b8135.js +0 -1
- package/.next-prod/static/chunks/app/api/session/[sessionId]/fork/route-51252a3b116b8135.js +0 -1
- package/.next-prod/static/chunks/app/api/session/[sessionId]/history/route-51252a3b116b8135.js +0 -1
- package/.next-prod/static/chunks/app/api/session-by-path/route-51252a3b116b8135.js +0 -1
- package/.next-prod/static/chunks/app/api/sessions/projects/[encodedPath]/route-51252a3b116b8135.js +0 -1
- package/.next-prod/static/chunks/app/api/sessions/projects/route-51252a3b116b8135.js +0 -1
- package/.next-prod/static/chunks/app/api/sessions/route-51252a3b116b8135.js +0 -1
- package/.next-prod/static/chunks/app/api/settings/route-51252a3b116b8135.js +0 -1
- package/.next-prod/static/chunks/app/api/skills/[id]/route-51252a3b116b8135.js +0 -1
- package/.next-prod/static/chunks/app/api/skills/content/route-51252a3b116b8135.js +0 -1
- package/.next-prod/static/chunks/app/api/skills/route-51252a3b116b8135.js +0 -1
- package/.next-prod/static/chunks/app/api/snapshots/diff/route-51252a3b116b8135.js +0 -1
- package/.next-prod/static/chunks/app/api/snapshots/route-51252a3b116b8135.js +0 -1
- package/.next-prod/static/chunks/app/api/terminal/aliases/route-51252a3b116b8135.js +0 -1
- package/.next-prod/static/chunks/app/api/terminal/autocomplete/route-51252a3b116b8135.js +0 -1
- package/.next-prod/static/chunks/app/api/terminal/bubble-order/route-51252a3b116b8135.js +0 -1
- package/.next-prod/static/chunks/app/api/terminal/env/route-51252a3b116b8135.js +0 -1
- package/.next-prod/static/chunks/app/api/terminal/history/route-51252a3b116b8135.js +0 -1
- package/.next-prod/static/chunks/app/api/version/route-51252a3b116b8135.js +0 -1
- package/.next-prod/static/chunks/app/apps/[...path]/route-51252a3b116b8135.js +0 -1
- package/.next-prod/static/chunks/app/manifest.webmanifest/route-51252a3b116b8135.js +0 -1
- package/.next-prod/static/chunks/app/review/[id]/page-c9716ea0049cc328.js +0 -1
- package/.next-prod/static/chunks/next/dist/client/components/builtin/app-error-51252a3b116b8135.js +0 -1
- package/.next-prod/static/chunks/next/dist/client/components/builtin/forbidden-51252a3b116b8135.js +0 -1
- package/.next-prod/static/chunks/next/dist/client/components/builtin/not-found-51252a3b116b8135.js +0 -1
- package/.next-prod/static/chunks/next/dist/client/components/builtin/unauthorized-51252a3b116b8135.js +0 -1
- package/.next-prod/static/css/5aa1c710591e36bb.css +0 -1
- /package/.next-prod/static/{8aWX4sRFsO4Rx4DD9L9w- → JD1OQjo1JkC0HtJ7Nawnu}/_ssgManifest.js +0 -0
package/dist/scheduledTasks.mjs
CHANGED
|
@@ -10,7 +10,7 @@ import {
|
|
|
10
10
|
setRunAbort,
|
|
11
11
|
startRun,
|
|
12
12
|
updateGlobalState
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-ALNGHUH4.mjs";
|
|
14
14
|
import {
|
|
15
15
|
AgentError,
|
|
16
16
|
AppRuntime,
|
|
@@ -24,20 +24,25 @@ import {
|
|
|
24
24
|
SKILLS_FILE,
|
|
25
25
|
SnapshotService,
|
|
26
26
|
createOllamaModel,
|
|
27
|
+
createOpenAiCompatModel,
|
|
27
28
|
encodePath,
|
|
28
29
|
findCodexSessionPath,
|
|
29
30
|
findKimiSessionPath,
|
|
31
|
+
getBuiltinSessionsRoot,
|
|
30
32
|
getClaude2SessionPath,
|
|
31
33
|
getClaudeSessionPath,
|
|
34
|
+
getDeepseekBuiltinSessionPath,
|
|
32
35
|
getDeepseekSessionPath,
|
|
33
36
|
getOllamaSessionPath,
|
|
37
|
+
getSessionFilePath,
|
|
34
38
|
mutateJsonFile,
|
|
35
39
|
notePendingRecord,
|
|
36
40
|
readJsonFile,
|
|
41
|
+
sanitizedSpawnEnv,
|
|
37
42
|
settlePendingRecord,
|
|
38
43
|
withFileLock,
|
|
39
44
|
writeJsonFile
|
|
40
|
-
} from "./chunk-
|
|
45
|
+
} from "./chunk-UBB3LJGR.mjs";
|
|
41
46
|
import {
|
|
42
47
|
__export
|
|
43
48
|
} from "./chunk-7P6ASYW6.mjs";
|
|
@@ -2577,7 +2582,7 @@ ${tempImageFiles.map((f) => f.path).join("\n")}` : prompt;
|
|
|
2577
2582
|
cols,
|
|
2578
2583
|
rows,
|
|
2579
2584
|
cwd,
|
|
2580
|
-
env:
|
|
2585
|
+
env: sanitizedSpawnEnv()
|
|
2581
2586
|
});
|
|
2582
2587
|
} catch (e) {
|
|
2583
2588
|
cleanupImages();
|
|
@@ -3037,8 +3042,10 @@ function buildClaudeOptions(ctx) {
|
|
|
3037
3042
|
},
|
|
3038
3043
|
includePartialMessages: true,
|
|
3039
3044
|
abortController: abort,
|
|
3040
|
-
// claude2
|
|
3041
|
-
|
|
3045
|
+
// env is ALWAYS passed (not just for claude2): without it the SDK inherits
|
|
3046
|
+
// process.env verbatim, handing the agent this server's NODE_ENV=production.
|
|
3047
|
+
// See sanitizedSpawnEnv. claude2 additionally points at ~/.claude2.
|
|
3048
|
+
env: sanitizedSpawnEnv(engine === "claude2" ? { CLAUDE_CONFIG_DIR: CLAUDE2_DIR } : {})
|
|
3042
3049
|
});
|
|
3043
3050
|
}
|
|
3044
3051
|
var claudeSpec = {
|
|
@@ -3062,93 +3069,82 @@ async function readDeepseekApiKey() {
|
|
|
3062
3069
|
return creds.apiKey?.trim() ?? "";
|
|
3063
3070
|
}
|
|
3064
3071
|
|
|
3065
|
-
// packages/feature/agent/src/server/engines/
|
|
3066
|
-
var DEEPSEEK_BASE_URL = "https://api.deepseek.com/anthropic";
|
|
3067
|
-
var DEFAULT_MODEL = "deepseek-v4-pro";
|
|
3068
|
-
var SMALL_FAST_MODEL = "deepseek-v4-flash";
|
|
3069
|
-
var ALLOWED_MODELS = /* @__PURE__ */ new Set(["deepseek-v4-flash", "deepseek-v4-pro"]);
|
|
3070
|
-
async function readSettings() {
|
|
3071
|
-
return readJsonFile(SETTINGS_FILE, {});
|
|
3072
|
-
}
|
|
3073
|
-
function resolveModel(requested, saved) {
|
|
3074
|
-
if (typeof requested === "string" && ALLOWED_MODELS.has(requested)) return requested;
|
|
3075
|
-
if (saved && ALLOWED_MODELS.has(saved)) return saved;
|
|
3076
|
-
return DEFAULT_MODEL;
|
|
3077
|
-
}
|
|
3078
|
-
function buildDeepseekEnv(apiKey, model) {
|
|
3079
|
-
const { ANTHROPIC_AUTH_TOKEN: _t, ANTHROPIC_API_KEY: _k, ...inherited } = process.env;
|
|
3080
|
-
void _t;
|
|
3081
|
-
void _k;
|
|
3082
|
-
return {
|
|
3083
|
-
...inherited,
|
|
3084
|
-
ANTHROPIC_BASE_URL: DEEPSEEK_BASE_URL,
|
|
3085
|
-
ANTHROPIC_API_KEY: apiKey,
|
|
3086
|
-
// DeepSeek sends this as x-api-key (fully supported)
|
|
3087
|
-
ANTHROPIC_MODEL: model,
|
|
3088
|
-
ANTHROPIC_SMALL_FAST_MODEL: SMALL_FAST_MODEL,
|
|
3089
|
-
CLAUDE_CONFIG_DIR: DEEPSEEK_DIR,
|
|
3090
|
-
DISABLE_PROMPT_CACHING: "1",
|
|
3091
|
-
// DeepSeek runs its own server-side prefix KV cache
|
|
3092
|
-
CLAUDE_CODE_USE_BEDROCK: "0",
|
|
3093
|
-
CLAUDE_CODE_USE_VERTEX: "0",
|
|
3094
|
-
CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC: "1"
|
|
3095
|
-
};
|
|
3096
|
-
}
|
|
3097
|
-
function buildDeepseekOptions(ctx, env) {
|
|
3098
|
-
return (abort, resume) => ({
|
|
3099
|
-
...resume && { resume },
|
|
3100
|
-
...ctx.cwd && { cwd: ctx.cwd },
|
|
3101
|
-
settingSources: ["user", "project", "local"],
|
|
3102
|
-
permissionMode: "bypassPermissions",
|
|
3103
|
-
allowDangerouslySkipPermissions: true,
|
|
3104
|
-
includePartialMessages: true,
|
|
3105
|
-
abortController: abort,
|
|
3106
|
-
env
|
|
3107
|
-
});
|
|
3108
|
-
}
|
|
3109
|
-
var deepseekSpec = {
|
|
3110
|
-
name: "deepseek",
|
|
3111
|
-
// Pre-check BEFORE startRun: API key must exist; resolve model into params (no registry pollution).
|
|
3112
|
-
async preflight(params) {
|
|
3113
|
-
const settings = await readSettings();
|
|
3114
|
-
const apiKey = await readDeepseekApiKey();
|
|
3115
|
-
if (!apiKey) {
|
|
3116
|
-
return {
|
|
3117
|
-
ok: false,
|
|
3118
|
-
status: 400,
|
|
3119
|
-
error: "DeepSeek API key is not configured. Open the DeepSeek picker in the chat header to set one."
|
|
3120
|
-
};
|
|
3121
|
-
}
|
|
3122
|
-
params.model = resolveModel(typeof params.model === "string" ? params.model : void 0, settings.engines?.deepseek?.model);
|
|
3123
|
-
return { ok: true };
|
|
3124
|
-
},
|
|
3125
|
-
runner: {
|
|
3126
|
-
async run(ctx) {
|
|
3127
|
-
const apiKey = await readDeepseekApiKey();
|
|
3128
|
-
const model = typeof ctx.params.model === "string" ? ctx.params.model : DEFAULT_MODEL;
|
|
3129
|
-
const env = buildDeepseekEnv(apiKey, model);
|
|
3130
|
-
await runSdkLoop(ctx, buildDeepseekOptions(ctx, env));
|
|
3131
|
-
},
|
|
3132
|
-
resolveTitle: (cwd, sessionId) => getSessionTitle(cwd, sessionId)
|
|
3133
|
-
}
|
|
3134
|
-
};
|
|
3135
|
-
|
|
3136
|
-
// packages/feature/agent/src/server/engines/ollama/index.ts
|
|
3072
|
+
// packages/feature/agent/src/server/engines/builtinAgent/index.ts
|
|
3137
3073
|
import { streamText, stepCountIs } from "ai";
|
|
3138
3074
|
import { randomUUID as randomUUID3 } from "crypto";
|
|
3139
3075
|
|
|
3140
|
-
// packages/feature/agent/src/server/engines/
|
|
3076
|
+
// packages/feature/agent/src/server/engines/builtinAgent/prompt.ts
|
|
3077
|
+
function buildSystemPrompt(cwd) {
|
|
3078
|
+
return `You are a coding agent. You help the user build and modify software using the provided tools.
|
|
3079
|
+
|
|
3080
|
+
CWD: ${cwd}
|
|
3081
|
+
|
|
3082
|
+
## Language
|
|
3083
|
+
|
|
3084
|
+
ALWAYS reply in the SAME language as the user's most recent message \u2014 whatever language they used (Chinese, English, Japanese, French, Spanish, \u2026), mirror it. Do NOT default to English just because this system prompt is written in English. If the user switches language mid-conversation, switch with them on the next reply.
|
|
3085
|
+
|
|
3086
|
+
Exceptions that stay as-is regardless of reply language:
|
|
3087
|
+
- Tool "thought" parameters: keep the "PREVIOUS / THIS / EXPECT" template in English.
|
|
3088
|
+
- Code, identifiers, file paths, shell commands, and error messages quoted from tool output: keep original.
|
|
3089
|
+
- Only your natural-language prose to the user follows the user's language.
|
|
3090
|
+
|
|
3091
|
+
## Workflow
|
|
3092
|
+
|
|
3093
|
+
1. Plan: call TodoWrite FIRST to break down the task into steps (all pending, first one in_progress).
|
|
3094
|
+
2. Act: execute steps one by one. After completing each step, call TodoWrite to update progress (mark completed, set next in_progress).
|
|
3095
|
+
3. Check: after each tool call, assess \u2014 did it succeed? Is the overall task done? If not, continue to the next step.
|
|
3096
|
+
4. Respond: you MUST always end with a text response to the user. Summarize what was done, what was found, or what remains.
|
|
3097
|
+
|
|
3098
|
+
IMPORTANT: never stop in the middle of a task silently. If you cannot continue (error, missing info, blocked), respond to the user explaining why and what is needed.
|
|
3099
|
+
|
|
3100
|
+
NEVER repeat a tool call with the same or similar arguments. When a search finds nothing, follow this escalation:
|
|
3101
|
+
1. Simplify the pattern (shorter keyword, remove qualifiers, use a single core term)
|
|
3102
|
+
2. Broaden the path (search parent directory, or omit path to search entire CWD)
|
|
3103
|
+
3. Switch tool (Grep \u2192 Glob for filenames, Grep \u2192 Bash with find, or Read a likely file directly)
|
|
3104
|
+
4. Give up after 3 failed attempts on the same topic \u2014 tell the user what you tried and ask for guidance.
|
|
3105
|
+
|
|
3106
|
+
## Tools
|
|
3107
|
+
|
|
3108
|
+
- Read: read a file by line range.
|
|
3109
|
+
- Edit: exact string replacement in an existing file (prefer over Write).
|
|
3110
|
+
- Write: create new files or full rewrites only.
|
|
3111
|
+
- Bash: run shell commands.
|
|
3112
|
+
- Grep: ripgrep search. ALWAYS use Grep (never rg/grep via Bash).
|
|
3113
|
+
- Glob: fast file listing by glob pattern.
|
|
3114
|
+
- TodoWrite: plan tasks and track progress. ALWAYS call this first.
|
|
3115
|
+
|
|
3116
|
+
Every tool has a "thought" parameter \u2014 ALWAYS fill it using this format:
|
|
3117
|
+
"PREVIOUS: [what the last tool returned and whether it achieved the goal] \u2192 THIS: [what I am doing now and why] \u2192 EXPECT: [what result I expect]"
|
|
3118
|
+
Example: "PREVIOUS: Grep found 3 matches in cache.go \u2192 THIS: Read cache.go to see full implementation \u2192 EXPECT: understand the caching logic"
|
|
3119
|
+
If this is the first tool call, write "PREVIOUS: n/a" for the first part.
|
|
3120
|
+
|
|
3121
|
+
## Rules
|
|
3122
|
+
|
|
3123
|
+
Tool usage:
|
|
3124
|
+
- Read before modify: do NOT edit a file you haven't Read.
|
|
3125
|
+
- Absolute paths only: resolve relative paths against CWD.
|
|
3126
|
+
|
|
3127
|
+
Accuracy:
|
|
3128
|
+
- Verify before retracting: when the user questions you, use tools to verify first, then respond based on evidence. Do NOT blindly agree you were wrong.
|
|
3129
|
+
- Honesty over confidence: only state what is backed by tool output. If unsure, say so and state what info is needed or propose a verification plan. Never fabricate data.
|
|
3130
|
+
|
|
3131
|
+
## Output
|
|
3132
|
+
|
|
3133
|
+
- Be concise. Lead with the action or answer.
|
|
3134
|
+
- Only elaborate on decisions, blockers, or milestones.`;
|
|
3135
|
+
}
|
|
3136
|
+
|
|
3137
|
+
// packages/feature/agent/src/server/engines/builtinAgent/session.ts
|
|
3141
3138
|
import { readFileSync as readFileSync3, existsSync, mkdirSync as mkdirSync2, appendFileSync } from "fs";
|
|
3142
3139
|
import { join as join3 } from "path";
|
|
3143
|
-
|
|
3144
|
-
|
|
3145
|
-
return join3(SESSIONS_ROOT, encodePath(cwd));
|
|
3140
|
+
function getSessionDir(root, cwd) {
|
|
3141
|
+
return join3(root, encodePath(cwd));
|
|
3146
3142
|
}
|
|
3147
|
-
function getSessionPath(cwd, sessionId) {
|
|
3148
|
-
return join3(getSessionDir(cwd), `${sessionId}.jsonl`);
|
|
3143
|
+
function getSessionPath(root, cwd, sessionId) {
|
|
3144
|
+
return join3(getSessionDir(root, cwd), `${sessionId}.jsonl`);
|
|
3149
3145
|
}
|
|
3150
|
-
function readSessionMessages(cwd, sessionId) {
|
|
3151
|
-
const path2 = getSessionPath(cwd, sessionId);
|
|
3146
|
+
function readSessionMessages(root, cwd, sessionId) {
|
|
3147
|
+
const path2 = getSessionPath(root, cwd, sessionId);
|
|
3152
3148
|
if (!existsSync(path2)) return [];
|
|
3153
3149
|
const lines = readFileSync3(path2, "utf-8").split("\n").filter(Boolean);
|
|
3154
3150
|
const transcriptEntries = [];
|
|
@@ -3182,23 +3178,35 @@ function readSessionMessages(cwd, sessionId) {
|
|
|
3182
3178
|
}
|
|
3183
3179
|
}
|
|
3184
3180
|
const messages = [];
|
|
3181
|
+
let assistantParts = [];
|
|
3182
|
+
const flushAssistant = () => {
|
|
3183
|
+
const parts = assistantParts.filter((p) => p.type !== "text" || String(p.text || "").length > 0);
|
|
3184
|
+
assistantParts = [];
|
|
3185
|
+
if (parts.length === 0) return;
|
|
3186
|
+
if (parts.length === 1 && parts[0].type === "text") {
|
|
3187
|
+
messages.push({ role: "assistant", content: String(parts[0].text || "") });
|
|
3188
|
+
} else {
|
|
3189
|
+
messages.push({ role: "assistant", content: parts });
|
|
3190
|
+
}
|
|
3191
|
+
};
|
|
3185
3192
|
for (const entry of transcriptEntries) {
|
|
3186
3193
|
if (entry.type === "user" && entry.message?.role === "user" && Array.isArray(entry.message.content)) {
|
|
3187
3194
|
const text = entry.message.content.filter((b) => b.type === "text").map((b) => b.text || "").join("\n");
|
|
3195
|
+
flushAssistant();
|
|
3196
|
+
if (!text) continue;
|
|
3188
3197
|
messages.push({ role: "user", content: text });
|
|
3189
3198
|
continue;
|
|
3190
3199
|
}
|
|
3191
3200
|
if (entry.type === "assistant" && Array.isArray(entry.message?.content)) {
|
|
3192
|
-
const parts = [];
|
|
3193
3201
|
for (const block of entry.message.content) {
|
|
3194
3202
|
if (block.type === "text") {
|
|
3195
|
-
|
|
3203
|
+
assistantParts.push({ type: "text", text: block.text || "" });
|
|
3196
3204
|
} else if (block.type === "tool_use") {
|
|
3197
3205
|
const toolCallId = block.id || "";
|
|
3198
3206
|
if (!toolCallId) continue;
|
|
3199
3207
|
if (!toolResultIds.has(toolCallId)) continue;
|
|
3200
3208
|
const toolName = block.name || toolNameById.get(toolCallId) || "tool";
|
|
3201
|
-
|
|
3209
|
+
assistantParts.push({
|
|
3202
3210
|
type: "tool-call",
|
|
3203
3211
|
toolCallId,
|
|
3204
3212
|
toolName,
|
|
@@ -3206,13 +3214,6 @@ function readSessionMessages(cwd, sessionId) {
|
|
|
3206
3214
|
});
|
|
3207
3215
|
}
|
|
3208
3216
|
}
|
|
3209
|
-
if (parts.length === 1 && parts[0].type === "text") {
|
|
3210
|
-
messages.push({ role: "assistant", content: String(parts[0].text || "") });
|
|
3211
|
-
} else if (parts.length > 0) {
|
|
3212
|
-
messages.push({ role: "assistant", content: parts });
|
|
3213
|
-
} else {
|
|
3214
|
-
messages.push({ role: "assistant", content: "" });
|
|
3215
|
-
}
|
|
3216
3217
|
continue;
|
|
3217
3218
|
}
|
|
3218
3219
|
if (entry.type === "user" && Array.isArray(entry.message?.content)) {
|
|
@@ -3223,6 +3224,7 @@ function readSessionMessages(cwd, sessionId) {
|
|
|
3223
3224
|
const toolCallId = tr.tool_use_id || "";
|
|
3224
3225
|
if (!toolCallId) continue;
|
|
3225
3226
|
if (!toolCallIds.has(toolCallId)) continue;
|
|
3227
|
+
flushAssistant();
|
|
3226
3228
|
const toolName = toolNameById.get(toolCallId) || "tool";
|
|
3227
3229
|
messages.push({
|
|
3228
3230
|
role: "tool",
|
|
@@ -3238,16 +3240,17 @@ function readSessionMessages(cwd, sessionId) {
|
|
|
3238
3240
|
}
|
|
3239
3241
|
}
|
|
3240
3242
|
}
|
|
3243
|
+
flushAssistant();
|
|
3241
3244
|
return messages;
|
|
3242
3245
|
}
|
|
3243
|
-
function appendSessionLine(cwd, sessionId, line) {
|
|
3244
|
-
const dir = getSessionDir(cwd);
|
|
3246
|
+
function appendSessionLine(root, cwd, sessionId, line) {
|
|
3247
|
+
const dir = getSessionDir(root, cwd);
|
|
3245
3248
|
mkdirSync2(dir, { recursive: true });
|
|
3246
|
-
const path2 = getSessionPath(cwd, sessionId);
|
|
3249
|
+
const path2 = getSessionPath(root, cwd, sessionId);
|
|
3247
3250
|
appendFileSync(path2, JSON.stringify(line) + "\n", "utf-8");
|
|
3248
3251
|
}
|
|
3249
|
-
function appendUserText(cwd, sessionId, text, opts) {
|
|
3250
|
-
appendSessionLine(cwd, sessionId, {
|
|
3252
|
+
function appendUserText(root, cwd, sessionId, text, opts) {
|
|
3253
|
+
appendSessionLine(root, cwd, sessionId, {
|
|
3251
3254
|
type: "user",
|
|
3252
3255
|
uuid: opts?.uuid,
|
|
3253
3256
|
sessionId,
|
|
@@ -3255,8 +3258,8 @@ function appendUserText(cwd, sessionId, text, opts) {
|
|
|
3255
3258
|
message: { role: "user", content: [{ type: "text", text }] }
|
|
3256
3259
|
});
|
|
3257
3260
|
}
|
|
3258
|
-
function appendAssistantMessage(cwd, sessionId, content, opts) {
|
|
3259
|
-
appendSessionLine(cwd, sessionId, {
|
|
3261
|
+
function appendAssistantMessage(root, cwd, sessionId, content, opts) {
|
|
3262
|
+
appendSessionLine(root, cwd, sessionId, {
|
|
3260
3263
|
type: "assistant",
|
|
3261
3264
|
uuid: opts?.uuid,
|
|
3262
3265
|
sessionId,
|
|
@@ -3264,8 +3267,8 @@ function appendAssistantMessage(cwd, sessionId, content, opts) {
|
|
|
3264
3267
|
message: { role: "assistant", content, ...opts?.usage ? { usage: opts.usage } : {} }
|
|
3265
3268
|
});
|
|
3266
3269
|
}
|
|
3267
|
-
function appendToolResult(cwd, sessionId, toolUseId, content, opts) {
|
|
3268
|
-
appendSessionLine(cwd, sessionId, {
|
|
3270
|
+
function appendToolResult(root, cwd, sessionId, toolUseId, content, opts) {
|
|
3271
|
+
appendSessionLine(root, cwd, sessionId, {
|
|
3269
3272
|
type: "user",
|
|
3270
3273
|
uuid: opts?.uuid,
|
|
3271
3274
|
sessionId,
|
|
@@ -3283,7 +3286,7 @@ function appendToolResult(cwd, sessionId, toolUseId, content, opts) {
|
|
|
3283
3286
|
});
|
|
3284
3287
|
}
|
|
3285
3288
|
|
|
3286
|
-
// packages/feature/agent/src/server/engines/
|
|
3289
|
+
// packages/feature/agent/src/server/engines/builtinAgent/tools.ts
|
|
3287
3290
|
import { tool, zodSchema } from "ai";
|
|
3288
3291
|
|
|
3289
3292
|
// node_modules/zod/v4/classic/external.js
|
|
@@ -17054,7 +17057,7 @@ function date4(params) {
|
|
|
17054
17057
|
// node_modules/zod/v4/classic/external.js
|
|
17055
17058
|
config(en_default());
|
|
17056
17059
|
|
|
17057
|
-
// packages/feature/agent/src/server/engines/
|
|
17060
|
+
// packages/feature/agent/src/server/engines/builtinAgent/tools.ts
|
|
17058
17061
|
import { readFileSync as readFileSync4, writeFileSync as writeFileSync3 } from "fs";
|
|
17059
17062
|
import { writeFile, mkdir, readdir, stat, unlink } from "fs/promises";
|
|
17060
17063
|
import { isAbsolute, join as join4 } from "path";
|
|
@@ -17233,7 +17236,7 @@ function createTools(context) {
|
|
|
17233
17236
|
encoding: "utf-8",
|
|
17234
17237
|
timeout: timeout ?? 6e4,
|
|
17235
17238
|
maxBuffer: 10 * 1024 * 1024,
|
|
17236
|
-
env: {
|
|
17239
|
+
env: sanitizedSpawnEnv({ FORCE_COLOR: "0", CI: "1" })
|
|
17237
17240
|
});
|
|
17238
17241
|
if (stdout.length === 0) {
|
|
17239
17242
|
if (stderr.length === 0) {
|
|
@@ -17332,7 +17335,7 @@ ${stderrCapped}`;
|
|
|
17332
17335
|
encoding: "utf-8",
|
|
17333
17336
|
timeout: 15e3,
|
|
17334
17337
|
maxBuffer: 10 * 1024 * 1024,
|
|
17335
|
-
env: {
|
|
17338
|
+
env: sanitizedSpawnEnv({ FORCE_COLOR: "0" })
|
|
17336
17339
|
});
|
|
17337
17340
|
const GREP_CAP = 32e3;
|
|
17338
17341
|
const spillPath = stdout.length > GREP_CAP ? await spillToFile(stdout, "grep") : void 0;
|
|
@@ -17372,7 +17375,16 @@ ${summary}`;
|
|
|
17372
17375
|
};
|
|
17373
17376
|
}
|
|
17374
17377
|
|
|
17375
|
-
// packages/feature/agent/src/server/engines/
|
|
17378
|
+
// packages/feature/agent/src/server/engines/builtinAgent/stream.ts
|
|
17379
|
+
function formatToolError(error48) {
|
|
17380
|
+
if (error48 instanceof Error) return error48.message || String(error48);
|
|
17381
|
+
if (typeof error48 === "string") return error48;
|
|
17382
|
+
try {
|
|
17383
|
+
return JSON.stringify(error48);
|
|
17384
|
+
} catch {
|
|
17385
|
+
return String(error48);
|
|
17386
|
+
}
|
|
17387
|
+
}
|
|
17376
17388
|
async function consumeStream(fullStream, safeEnqueue, _sessionId, opts) {
|
|
17377
17389
|
let text = "";
|
|
17378
17390
|
const toolCalls = [];
|
|
@@ -17420,7 +17432,7 @@ async function consumeStream(fullStream, safeEnqueue, _sessionId, opts) {
|
|
|
17420
17432
|
}
|
|
17421
17433
|
case "tool-result": {
|
|
17422
17434
|
const content = String(part.output);
|
|
17423
|
-
opts?.onToolResult?.(part.toolCallId, content);
|
|
17435
|
+
opts?.onToolResult?.(part.toolCallId, content, false);
|
|
17424
17436
|
safeEnqueue(
|
|
17425
17437
|
`data: ${JSON.stringify({
|
|
17426
17438
|
type: "user",
|
|
@@ -17429,6 +17441,27 @@ async function consumeStream(fullStream, safeEnqueue, _sessionId, opts) {
|
|
|
17429
17441
|
}
|
|
17430
17442
|
})}
|
|
17431
17443
|
|
|
17444
|
+
`
|
|
17445
|
+
);
|
|
17446
|
+
break;
|
|
17447
|
+
}
|
|
17448
|
+
// A tool that threw (or whose input failed schema validation) emits `tool-error`,
|
|
17449
|
+
// never `tool-result`. Skipping it left the tool_use dangling in the transcript;
|
|
17450
|
+
// on the NEXT turn that call was dropped on replay, the assistant message it lived
|
|
17451
|
+
// in became empty, and the provider rejected the whole request with
|
|
17452
|
+
// "Invalid assistant message: content or tool_calls must be set" — a permanently
|
|
17453
|
+
// unusable session. Every tool call must close with a result line, success or not.
|
|
17454
|
+
case "tool-error": {
|
|
17455
|
+
const content = formatToolError(part.error);
|
|
17456
|
+
opts?.onToolResult?.(part.toolCallId, content, true);
|
|
17457
|
+
safeEnqueue(
|
|
17458
|
+
`data: ${JSON.stringify({
|
|
17459
|
+
type: "user",
|
|
17460
|
+
message: {
|
|
17461
|
+
content: [{ type: "tool_result", tool_use_id: part.toolCallId, content, is_error: true }]
|
|
17462
|
+
}
|
|
17463
|
+
})}
|
|
17464
|
+
|
|
17432
17465
|
`
|
|
17433
17466
|
);
|
|
17434
17467
|
break;
|
|
@@ -17466,194 +17499,242 @@ function emitResultMessage(promptTokens, completionTokens, safeEnqueue) {
|
|
|
17466
17499
|
);
|
|
17467
17500
|
}
|
|
17468
17501
|
|
|
17469
|
-
// packages/feature/agent/src/server/engines/
|
|
17470
|
-
|
|
17471
|
-
|
|
17472
|
-
return `You are a coding agent. You help the user build and modify software using the provided tools.
|
|
17473
|
-
|
|
17474
|
-
CWD: ${cwd}
|
|
17475
|
-
|
|
17476
|
-
## Language
|
|
17477
|
-
|
|
17478
|
-
ALWAYS reply in the SAME language as the user's most recent message \u2014 whatever language they used (Chinese, English, Japanese, French, Spanish, \u2026), mirror it. Do NOT default to English just because this system prompt is written in English. If the user switches language mid-conversation, switch with them on the next reply.
|
|
17479
|
-
|
|
17480
|
-
Exceptions that stay as-is regardless of reply language:
|
|
17481
|
-
- Tool "thought" parameters: keep the "PREVIOUS / THIS / EXPECT" template in English.
|
|
17482
|
-
- Code, identifiers, file paths, shell commands, and error messages quoted from tool output: keep original.
|
|
17483
|
-
- Only your natural-language prose to the user follows the user's language.
|
|
17484
|
-
|
|
17485
|
-
## Workflow
|
|
17486
|
-
|
|
17487
|
-
1. Plan: call TodoWrite FIRST to break down the task into steps (all pending, first one in_progress).
|
|
17488
|
-
2. Act: execute steps one by one. After completing each step, call TodoWrite to update progress (mark completed, set next in_progress).
|
|
17489
|
-
3. Check: after each tool call, assess \u2014 did it succeed? Is the overall task done? If not, continue to the next step.
|
|
17490
|
-
4. Respond: you MUST always end with a text response to the user. Summarize what was done, what was found, or what remains.
|
|
17491
|
-
|
|
17492
|
-
IMPORTANT: never stop in the middle of a task silently. If you cannot continue (error, missing info, blocked), respond to the user explaining why and what is needed.
|
|
17493
|
-
|
|
17494
|
-
NEVER repeat a tool call with the same or similar arguments. When a search finds nothing, follow this escalation:
|
|
17495
|
-
1. Simplify the pattern (shorter keyword, remove qualifiers, use a single core term)
|
|
17496
|
-
2. Broaden the path (search parent directory, or omit path to search entire CWD)
|
|
17497
|
-
3. Switch tool (Grep \u2192 Glob for filenames, Grep \u2192 Bash with find, or Read a likely file directly)
|
|
17498
|
-
4. Give up after 3 failed attempts on the same topic \u2014 tell the user what you tried and ask for guidance.
|
|
17499
|
-
|
|
17500
|
-
## Tools
|
|
17501
|
-
|
|
17502
|
-
- Read: read a file by line range.
|
|
17503
|
-
- Edit: exact string replacement in an existing file (prefer over Write).
|
|
17504
|
-
- Write: create new files or full rewrites only.
|
|
17505
|
-
- Bash: run shell commands.
|
|
17506
|
-
- Grep: ripgrep search. ALWAYS use Grep (never rg/grep via Bash).
|
|
17507
|
-
- Glob: fast file listing by glob pattern.
|
|
17508
|
-
- TodoWrite: plan tasks and track progress. ALWAYS call this first.
|
|
17509
|
-
|
|
17510
|
-
Every tool has a "thought" parameter \u2014 ALWAYS fill it using this format:
|
|
17511
|
-
"PREVIOUS: [what the last tool returned and whether it achieved the goal] \u2192 THIS: [what I am doing now and why] \u2192 EXPECT: [what result I expect]"
|
|
17512
|
-
Example: "PREVIOUS: Grep found 3 matches in cache.go \u2192 THIS: Read cache.go to see full implementation \u2192 EXPECT: understand the caching logic"
|
|
17513
|
-
If this is the first tool call, write "PREVIOUS: n/a" for the first part.
|
|
17514
|
-
|
|
17515
|
-
## Rules
|
|
17516
|
-
|
|
17517
|
-
Tool usage:
|
|
17518
|
-
- Read before modify: do NOT edit a file you haven't Read.
|
|
17519
|
-
- Absolute paths only: resolve relative paths against CWD.
|
|
17520
|
-
|
|
17521
|
-
Accuracy:
|
|
17522
|
-
- Verify before retracting: when the user questions you, use tools to verify first, then respond based on evidence. Do NOT blindly agree you were wrong.
|
|
17523
|
-
- Honesty over confidence: only state what is backed by tool output. If unsure, say so and state what info is needed or propose a verification plan. Never fabricate data.
|
|
17524
|
-
|
|
17525
|
-
## Output
|
|
17526
|
-
|
|
17527
|
-
- Be concise. Lead with the action or answer.
|
|
17528
|
-
- Only elaborate on decisions, blockers, or milestones.`;
|
|
17502
|
+
// packages/feature/agent/src/server/engines/builtinAgent/index.ts
|
|
17503
|
+
function requireTextPrompt(params) {
|
|
17504
|
+
return typeof params.prompt === "string" && params.prompt.trim() ? { ok: true } : { ok: false, status: 400, error: "The built-in agent requires a text prompt" };
|
|
17529
17505
|
}
|
|
17530
|
-
|
|
17531
|
-
|
|
17532
|
-
|
|
17533
|
-
|
|
17534
|
-
|
|
17535
|
-
|
|
17536
|
-
|
|
17537
|
-
|
|
17538
|
-
|
|
17539
|
-
|
|
17540
|
-
|
|
17541
|
-
|
|
17542
|
-
|
|
17543
|
-
|
|
17544
|
-
|
|
17545
|
-
|
|
17546
|
-
|
|
17547
|
-
|
|
17548
|
-
|
|
17549
|
-
} catch {
|
|
17550
|
-
}
|
|
17551
|
-
};
|
|
17552
|
-
const existing = readSessionMessages(cwd, sid);
|
|
17553
|
-
const messages = [...existing, { role: "user", content: prompt }];
|
|
17554
|
-
appendUserText(cwd, sid, prompt, { uuid: randomUUID3(), timestamp: (/* @__PURE__ */ new Date()).toISOString() });
|
|
17555
|
-
emit(`data: ${JSON.stringify({ type: "system", subtype: "init", session_id: sid })}
|
|
17506
|
+
async function runBuiltinAgent(ctx, config2) {
|
|
17507
|
+
const { sessionsRoot } = config2;
|
|
17508
|
+
const cwd = ctx.cwd || process.cwd();
|
|
17509
|
+
const sid = ctx.currentKey();
|
|
17510
|
+
ctx.rekey(sid);
|
|
17511
|
+
const model = typeof ctx.params.model === "string" && ctx.params.model || config2.defaultModel;
|
|
17512
|
+
const prompt = ctx.prompt;
|
|
17513
|
+
const emit = (data) => {
|
|
17514
|
+
if (data.startsWith("data: [DONE]")) return;
|
|
17515
|
+
try {
|
|
17516
|
+
ctx.emit(JSON.parse(data.slice(6)));
|
|
17517
|
+
} catch {
|
|
17518
|
+
}
|
|
17519
|
+
};
|
|
17520
|
+
const noHistory = ctx.params.noHistory === true;
|
|
17521
|
+
const existing = noHistory ? [] : readSessionMessages(sessionsRoot, cwd, sid);
|
|
17522
|
+
const messages = [...existing, { role: "user", content: prompt }];
|
|
17523
|
+
appendUserText(sessionsRoot, cwd, sid, prompt, { uuid: randomUUID3(), timestamp: (/* @__PURE__ */ new Date()).toISOString() });
|
|
17524
|
+
emit(`data: ${JSON.stringify({ type: "system", subtype: "init", session_id: sid })}
|
|
17556
17525
|
|
|
17557
17526
|
`);
|
|
17558
|
-
|
|
17559
|
-
|
|
17560
|
-
|
|
17561
|
-
|
|
17562
|
-
|
|
17563
|
-
|
|
17564
|
-
|
|
17565
|
-
|
|
17566
|
-
|
|
17567
|
-
|
|
17568
|
-
|
|
17569
|
-
|
|
17570
|
-
|
|
17571
|
-
|
|
17572
|
-
|
|
17527
|
+
const context = { cwd, todos: [] };
|
|
17528
|
+
const languageModel = await config2.createModel(model);
|
|
17529
|
+
const result = streamText({
|
|
17530
|
+
model: languageModel,
|
|
17531
|
+
system: buildSystemPrompt(cwd),
|
|
17532
|
+
messages,
|
|
17533
|
+
tools: createTools(context),
|
|
17534
|
+
stopWhen: stepCountIs(256),
|
|
17535
|
+
temperature: 0,
|
|
17536
|
+
abortSignal: ctx.signal
|
|
17537
|
+
});
|
|
17538
|
+
const pendingToolCalls = /* @__PURE__ */ new Map();
|
|
17539
|
+
const flushPendingToolCallsAsErrors = (reason) => {
|
|
17540
|
+
if (pendingToolCalls.size === 0) return;
|
|
17541
|
+
for (const [toolUseId] of pendingToolCalls) {
|
|
17542
|
+
try {
|
|
17543
|
+
appendToolResult(sessionsRoot, cwd, sid, toolUseId, reason, {
|
|
17544
|
+
uuid: randomUUID3(),
|
|
17545
|
+
timestamp: (/* @__PURE__ */ new Date()).toISOString(),
|
|
17546
|
+
is_error: true
|
|
17547
|
+
});
|
|
17548
|
+
} catch {
|
|
17549
|
+
}
|
|
17550
|
+
try {
|
|
17551
|
+
emit(
|
|
17552
|
+
`data: ${JSON.stringify({
|
|
17553
|
+
type: "user",
|
|
17554
|
+
message: { content: [{ type: "tool_result", tool_use_id: toolUseId, content: reason, is_error: true }] }
|
|
17555
|
+
})}
|
|
17556
|
+
|
|
17557
|
+
`
|
|
17558
|
+
);
|
|
17559
|
+
} catch {
|
|
17560
|
+
}
|
|
17561
|
+
}
|
|
17562
|
+
pendingToolCalls.clear();
|
|
17563
|
+
};
|
|
17564
|
+
try {
|
|
17565
|
+
const { text } = await consumeStream(
|
|
17566
|
+
result.fullStream,
|
|
17567
|
+
emit,
|
|
17568
|
+
sid,
|
|
17569
|
+
{
|
|
17570
|
+
onToolCall: (toolUseId, toolName, input) => {
|
|
17573
17571
|
try {
|
|
17574
|
-
|
|
17572
|
+
pendingToolCalls.set(toolUseId, { name: toolName, input });
|
|
17573
|
+
appendAssistantMessage(
|
|
17574
|
+
sessionsRoot,
|
|
17575
|
+
cwd,
|
|
17576
|
+
sid,
|
|
17577
|
+
[{ type: "tool_use", id: toolUseId, name: toolName, input }],
|
|
17578
|
+
{ uuid: randomUUID3(), timestamp: (/* @__PURE__ */ new Date()).toISOString() }
|
|
17579
|
+
);
|
|
17580
|
+
} catch {
|
|
17581
|
+
}
|
|
17582
|
+
},
|
|
17583
|
+
onToolResult: (toolUseId, content, isError) => {
|
|
17584
|
+
try {
|
|
17585
|
+
pendingToolCalls.delete(toolUseId);
|
|
17586
|
+
appendToolResult(sessionsRoot, cwd, sid, toolUseId, content, {
|
|
17575
17587
|
uuid: randomUUID3(),
|
|
17576
17588
|
timestamp: (/* @__PURE__ */ new Date()).toISOString(),
|
|
17577
|
-
is_error:
|
|
17589
|
+
is_error: Boolean(isError)
|
|
17578
17590
|
});
|
|
17579
17591
|
} catch {
|
|
17580
17592
|
}
|
|
17593
|
+
},
|
|
17594
|
+
onTextFlush: (flushedText) => {
|
|
17581
17595
|
try {
|
|
17582
|
-
|
|
17583
|
-
|
|
17584
|
-
|
|
17585
|
-
|
|
17586
|
-
})}
|
|
17587
|
-
|
|
17588
|
-
`
|
|
17589
|
-
);
|
|
17596
|
+
appendAssistantMessage(sessionsRoot, cwd, sid, [{ type: "text", text: flushedText }], {
|
|
17597
|
+
uuid: randomUUID3(),
|
|
17598
|
+
timestamp: (/* @__PURE__ */ new Date()).toISOString()
|
|
17599
|
+
});
|
|
17590
17600
|
} catch {
|
|
17591
17601
|
}
|
|
17592
17602
|
}
|
|
17593
|
-
pendingToolCalls.clear();
|
|
17594
|
-
};
|
|
17595
|
-
try {
|
|
17596
|
-
const { text } = await consumeStream(
|
|
17597
|
-
result.fullStream,
|
|
17598
|
-
emit,
|
|
17599
|
-
sid,
|
|
17600
|
-
{
|
|
17601
|
-
onToolCall: (toolUseId, toolName, input) => {
|
|
17602
|
-
try {
|
|
17603
|
-
pendingToolCalls.set(toolUseId, { name: toolName, input });
|
|
17604
|
-
appendAssistantMessage(cwd, sid, [{ type: "tool_use", id: toolUseId, name: toolName, input }], {
|
|
17605
|
-
uuid: randomUUID3(),
|
|
17606
|
-
timestamp: (/* @__PURE__ */ new Date()).toISOString()
|
|
17607
|
-
});
|
|
17608
|
-
} catch {
|
|
17609
|
-
}
|
|
17610
|
-
},
|
|
17611
|
-
onToolResult: (toolUseId, content) => {
|
|
17612
|
-
try {
|
|
17613
|
-
pendingToolCalls.delete(toolUseId);
|
|
17614
|
-
appendToolResult(cwd, sid, toolUseId, content, {
|
|
17615
|
-
uuid: randomUUID3(),
|
|
17616
|
-
timestamp: (/* @__PURE__ */ new Date()).toISOString(),
|
|
17617
|
-
is_error: false
|
|
17618
|
-
});
|
|
17619
|
-
} catch {
|
|
17620
|
-
}
|
|
17621
|
-
},
|
|
17622
|
-
onTextFlush: (flushedText) => {
|
|
17623
|
-
try {
|
|
17624
|
-
appendAssistantMessage(cwd, sid, [{ type: "text", text: flushedText }], {
|
|
17625
|
-
uuid: randomUUID3(),
|
|
17626
|
-
timestamp: (/* @__PURE__ */ new Date()).toISOString()
|
|
17627
|
-
});
|
|
17628
|
-
} catch {
|
|
17629
|
-
}
|
|
17630
|
-
}
|
|
17631
|
-
}
|
|
17632
|
-
);
|
|
17633
|
-
const usage = await result.usage;
|
|
17634
|
-
emitResultMessage(usage.inputTokens || 0, usage.outputTokens || 0, emit);
|
|
17635
|
-
if (!ctx.signal.aborted) {
|
|
17636
|
-
appendAssistantMessage(cwd, sid, text ? [{ type: "text", text }] : [], {
|
|
17637
|
-
uuid: randomUUID3(),
|
|
17638
|
-
timestamp: (/* @__PURE__ */ new Date()).toISOString(),
|
|
17639
|
-
usage: {
|
|
17640
|
-
input_tokens: usage.inputTokens || 0,
|
|
17641
|
-
output_tokens: usage.outputTokens || 0,
|
|
17642
|
-
cache_creation_input_tokens: 0,
|
|
17643
|
-
cache_read_input_tokens: 0
|
|
17644
|
-
}
|
|
17645
|
-
});
|
|
17646
|
-
}
|
|
17647
|
-
} catch (error48) {
|
|
17648
|
-
if (ctx.signal.aborted) {
|
|
17649
|
-
flushPendingToolCallsAsErrors("Tool call cancelled (request aborted).");
|
|
17650
|
-
return;
|
|
17651
|
-
}
|
|
17652
|
-
flushPendingToolCallsAsErrors("Tool call failed (stream error).");
|
|
17653
|
-
throw error48;
|
|
17654
17603
|
}
|
|
17604
|
+
);
|
|
17605
|
+
const usage = await result.usage;
|
|
17606
|
+
emitResultMessage(usage.inputTokens || 0, usage.outputTokens || 0, emit);
|
|
17607
|
+
if (!ctx.signal.aborted) {
|
|
17608
|
+
appendAssistantMessage(sessionsRoot, cwd, sid, text ? [{ type: "text", text }] : [], {
|
|
17609
|
+
uuid: randomUUID3(),
|
|
17610
|
+
timestamp: (/* @__PURE__ */ new Date()).toISOString(),
|
|
17611
|
+
usage: {
|
|
17612
|
+
input_tokens: usage.inputTokens || 0,
|
|
17613
|
+
output_tokens: usage.outputTokens || 0,
|
|
17614
|
+
cache_creation_input_tokens: 0,
|
|
17615
|
+
cache_read_input_tokens: 0
|
|
17616
|
+
}
|
|
17617
|
+
});
|
|
17618
|
+
}
|
|
17619
|
+
} catch (error48) {
|
|
17620
|
+
if (ctx.signal.aborted) {
|
|
17621
|
+
flushPendingToolCallsAsErrors("Tool call cancelled (request aborted).");
|
|
17622
|
+
return;
|
|
17655
17623
|
}
|
|
17656
|
-
|
|
17624
|
+
flushPendingToolCallsAsErrors("Tool call failed (stream error).");
|
|
17625
|
+
throw error48;
|
|
17626
|
+
}
|
|
17627
|
+
}
|
|
17628
|
+
|
|
17629
|
+
// packages/feature/agent/src/server/engines/deepseek.ts
|
|
17630
|
+
var DEEPSEEK_BASE_URL = "https://api.deepseek.com/anthropic";
|
|
17631
|
+
var DEFAULT_MODEL = "deepseek-v4-pro";
|
|
17632
|
+
var SMALL_FAST_MODEL = "deepseek-v4-flash";
|
|
17633
|
+
var ALLOWED_MODELS = /* @__PURE__ */ new Set(["deepseek-v4-flash", "deepseek-v4-pro"]);
|
|
17634
|
+
var DEEPSEEK_OPENAI_BASE_URL = "https://api.deepseek.com/v1";
|
|
17635
|
+
var BUILTIN_DEFAULT_MODEL = DEFAULT_MODEL;
|
|
17636
|
+
async function readSettings() {
|
|
17637
|
+
return readJsonFile(SETTINGS_FILE, {});
|
|
17638
|
+
}
|
|
17639
|
+
function resolveModel(requested, saved) {
|
|
17640
|
+
if (typeof requested === "string" && ALLOWED_MODELS.has(requested)) return requested;
|
|
17641
|
+
if (saved && ALLOWED_MODELS.has(saved)) return saved;
|
|
17642
|
+
return DEFAULT_MODEL;
|
|
17643
|
+
}
|
|
17644
|
+
function resolveBuiltinModel(requested, saved) {
|
|
17645
|
+
if (typeof requested === "string" && requested.trim()) return requested.trim();
|
|
17646
|
+
if (saved && saved.trim()) return saved.trim();
|
|
17647
|
+
return BUILTIN_DEFAULT_MODEL;
|
|
17648
|
+
}
|
|
17649
|
+
function buildBuiltinConfig(apiKey) {
|
|
17650
|
+
return {
|
|
17651
|
+
sessionsRoot: getBuiltinSessionsRoot("deepseek"),
|
|
17652
|
+
defaultModel: BUILTIN_DEFAULT_MODEL,
|
|
17653
|
+
createModel: async (modelName) => createOpenAiCompatModel({ baseURL: DEEPSEEK_OPENAI_BASE_URL, apiKey, modelName })
|
|
17654
|
+
};
|
|
17655
|
+
}
|
|
17656
|
+
function buildDeepseekEnv(apiKey, model) {
|
|
17657
|
+
return sanitizedSpawnEnv({
|
|
17658
|
+
ANTHROPIC_AUTH_TOKEN: void 0,
|
|
17659
|
+
ANTHROPIC_BASE_URL: DEEPSEEK_BASE_URL,
|
|
17660
|
+
ANTHROPIC_API_KEY: apiKey,
|
|
17661
|
+
// DeepSeek sends this as x-api-key (fully supported)
|
|
17662
|
+
ANTHROPIC_MODEL: model,
|
|
17663
|
+
ANTHROPIC_SMALL_FAST_MODEL: SMALL_FAST_MODEL,
|
|
17664
|
+
CLAUDE_CONFIG_DIR: DEEPSEEK_DIR,
|
|
17665
|
+
DISABLE_PROMPT_CACHING: "1",
|
|
17666
|
+
// DeepSeek runs its own server-side prefix KV cache
|
|
17667
|
+
CLAUDE_CODE_USE_BEDROCK: "0",
|
|
17668
|
+
CLAUDE_CODE_USE_VERTEX: "0",
|
|
17669
|
+
CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC: "1"
|
|
17670
|
+
});
|
|
17671
|
+
}
|
|
17672
|
+
function buildDeepseekOptions(ctx, env) {
|
|
17673
|
+
return (abort, resume) => ({
|
|
17674
|
+
...resume && { resume },
|
|
17675
|
+
...ctx.cwd && { cwd: ctx.cwd },
|
|
17676
|
+
settingSources: ["user", "project", "local"],
|
|
17677
|
+
permissionMode: "bypassPermissions",
|
|
17678
|
+
allowDangerouslySkipPermissions: true,
|
|
17679
|
+
includePartialMessages: true,
|
|
17680
|
+
abortController: abort,
|
|
17681
|
+
env
|
|
17682
|
+
});
|
|
17683
|
+
}
|
|
17684
|
+
var isBuiltinMode = (params) => params.mode === "builtin";
|
|
17685
|
+
var deepseekSpec = {
|
|
17686
|
+
name: "deepseek",
|
|
17687
|
+
// Pre-check BEFORE startRun: API key must exist; resolve model into params (no registry pollution).
|
|
17688
|
+
async preflight(params) {
|
|
17689
|
+
const settings = await readSettings();
|
|
17690
|
+
const apiKey = await readDeepseekApiKey();
|
|
17691
|
+
if (!apiKey) {
|
|
17692
|
+
return {
|
|
17693
|
+
ok: false,
|
|
17694
|
+
status: 400,
|
|
17695
|
+
error: "DeepSeek API key is not configured. Open the DeepSeek picker in the chat header to set one."
|
|
17696
|
+
};
|
|
17697
|
+
}
|
|
17698
|
+
const requested = typeof params.model === "string" ? params.model : void 0;
|
|
17699
|
+
if (isBuiltinMode(params)) {
|
|
17700
|
+
const textCheck = requireTextPrompt(params);
|
|
17701
|
+
if (!textCheck.ok) return textCheck;
|
|
17702
|
+
params.model = resolveBuiltinModel(requested, settings.engines?.deepseek?.builtinModel);
|
|
17703
|
+
return { ok: true };
|
|
17704
|
+
}
|
|
17705
|
+
params.model = resolveModel(requested, settings.engines?.deepseek?.model);
|
|
17706
|
+
return { ok: true };
|
|
17707
|
+
},
|
|
17708
|
+
runner: {
|
|
17709
|
+
async run(ctx) {
|
|
17710
|
+
const apiKey = await readDeepseekApiKey();
|
|
17711
|
+
if (isBuiltinMode(ctx.params)) {
|
|
17712
|
+
await runBuiltinAgent(ctx, buildBuiltinConfig(apiKey));
|
|
17713
|
+
return;
|
|
17714
|
+
}
|
|
17715
|
+
const model = typeof ctx.params.model === "string" ? ctx.params.model : DEFAULT_MODEL;
|
|
17716
|
+
const env = buildDeepseekEnv(apiKey, model);
|
|
17717
|
+
await runSdkLoop(ctx, buildDeepseekOptions(ctx, env));
|
|
17718
|
+
},
|
|
17719
|
+
resolveTitle: (cwd, sessionId) => getSessionTitle(cwd, sessionId)
|
|
17720
|
+
}
|
|
17721
|
+
};
|
|
17722
|
+
|
|
17723
|
+
// packages/feature/agent/src/server/engines/ollama.ts
|
|
17724
|
+
var DEFAULT_MODEL2 = "qwen3.5:35b-a3b-coding-nvfp4";
|
|
17725
|
+
var OLLAMA_CONFIG = {
|
|
17726
|
+
sessionsRoot: getBuiltinSessionsRoot("ollama"),
|
|
17727
|
+
defaultModel: DEFAULT_MODEL2,
|
|
17728
|
+
createModel: (model) => createOllamaModel(model)
|
|
17729
|
+
};
|
|
17730
|
+
var ollamaSpec = {
|
|
17731
|
+
name: "ollama",
|
|
17732
|
+
async preflight(params) {
|
|
17733
|
+
return requireTextPrompt(params);
|
|
17734
|
+
},
|
|
17735
|
+
runner: {
|
|
17736
|
+
run: (ctx) => runBuiltinAgent(ctx, OLLAMA_CONFIG)
|
|
17737
|
+
// No resolveTitle → teardown uses 'unread' with undefined title.
|
|
17657
17738
|
}
|
|
17658
17739
|
};
|
|
17659
17740
|
|
|
@@ -17711,7 +17792,7 @@ var kimiSpec = {
|
|
|
17711
17792
|
const child = spawn2("kimi", args, {
|
|
17712
17793
|
stdio: ["ignore", "pipe", "pipe"],
|
|
17713
17794
|
cwd: cwd || void 0,
|
|
17714
|
-
env:
|
|
17795
|
+
env: sanitizedSpawnEnv()
|
|
17715
17796
|
});
|
|
17716
17797
|
ctx.signal.addEventListener("abort", () => child.kill("SIGTERM"), { once: true });
|
|
17717
17798
|
if (sessionId) {
|
|
@@ -17848,7 +17929,7 @@ var codexSpec = {
|
|
|
17848
17929
|
const child = spawn3("codex", args, {
|
|
17849
17930
|
stdio: ["ignore", "pipe", "pipe"],
|
|
17850
17931
|
cwd: cwd || void 0,
|
|
17851
|
-
env:
|
|
17932
|
+
env: sanitizedSpawnEnv()
|
|
17852
17933
|
});
|
|
17853
17934
|
ctx.signal.addEventListener("abort", () => child.kill("SIGTERM"), { once: true });
|
|
17854
17935
|
const pendingToolCalls = /* @__PURE__ */ new Map();
|
|
@@ -17975,8 +18056,2366 @@ function getEngineSpec(engine) {
|
|
|
17975
18056
|
return SPECS[engine ?? "claude"];
|
|
17976
18057
|
}
|
|
17977
18058
|
|
|
18059
|
+
// packages/shared/i18n/src/index.ts
|
|
18060
|
+
import i18n from "i18next";
|
|
18061
|
+
|
|
18062
|
+
// packages/shared/i18n/locales/en.json
|
|
18063
|
+
var en_default2 = {
|
|
18064
|
+
common: {
|
|
18065
|
+
save: "Save",
|
|
18066
|
+
cancel: "Cancel",
|
|
18067
|
+
delete: "Delete",
|
|
18068
|
+
close: "Close",
|
|
18069
|
+
copy: "Copy",
|
|
18070
|
+
edit: "Edit",
|
|
18071
|
+
file: "File",
|
|
18072
|
+
codeMap: "Code Map",
|
|
18073
|
+
diff: "Diff",
|
|
18074
|
+
confirm: "Confirm",
|
|
18075
|
+
loading: "Loading...",
|
|
18076
|
+
search: "Search",
|
|
18077
|
+
refresh: "Refresh",
|
|
18078
|
+
retry: "Retry",
|
|
18079
|
+
submit: "Submit",
|
|
18080
|
+
copied: "Copied",
|
|
18081
|
+
saved: "Saved",
|
|
18082
|
+
failed: "Failed",
|
|
18083
|
+
noMatch: "No matches",
|
|
18084
|
+
noData: "No data",
|
|
18085
|
+
done: "Done",
|
|
18086
|
+
justNow: "just now",
|
|
18087
|
+
minutesAgo: "{{count}}m ago",
|
|
18088
|
+
hoursAgo: "{{count}}h ago",
|
|
18089
|
+
daysAgo: "{{count}}d ago",
|
|
18090
|
+
monthsAgo: "{{count}}mo ago",
|
|
18091
|
+
yearsAgo: "{{count}}y ago",
|
|
18092
|
+
saveFailed: "Save failed",
|
|
18093
|
+
copyFailed: "Copy failed",
|
|
18094
|
+
deleteFailed: "Delete failed",
|
|
18095
|
+
operationFailed: "Operation failed",
|
|
18096
|
+
copiedPath: "Path copied",
|
|
18097
|
+
copyPath: "Copy path",
|
|
18098
|
+
openInConsole: "Open in Console bubble",
|
|
18099
|
+
copyAbsPath: "Copy absolute path",
|
|
18100
|
+
loadMore: "Load more",
|
|
18101
|
+
noResult: "No results",
|
|
18102
|
+
selected: "Selected",
|
|
18103
|
+
selectAll: "Select all",
|
|
18104
|
+
hint: "Notice",
|
|
18105
|
+
confirmBtn: "OK",
|
|
18106
|
+
cancelBtn: "Cancel",
|
|
18107
|
+
preview: "Preview",
|
|
18108
|
+
readable: "Readable",
|
|
18109
|
+
previous: "Previous",
|
|
18110
|
+
next: "Next",
|
|
18111
|
+
all: "All",
|
|
18112
|
+
input: "Input",
|
|
18113
|
+
result: "Result",
|
|
18114
|
+
line: "Line",
|
|
18115
|
+
lines: "lines",
|
|
18116
|
+
running: "Running",
|
|
18117
|
+
connecting: "Connecting",
|
|
18118
|
+
connected: "Connected",
|
|
18119
|
+
connectionFailed: "Connection failed",
|
|
18120
|
+
builtin: "Built-in",
|
|
18121
|
+
global: "Global",
|
|
18122
|
+
project: "Project",
|
|
18123
|
+
current: "Current"
|
|
18124
|
+
},
|
|
18125
|
+
htmlApps: {
|
|
18126
|
+
addTooltip: "Add to HTML panel",
|
|
18127
|
+
added: "Added to HTML panel",
|
|
18128
|
+
alreadyAdded: "Already added",
|
|
18129
|
+
addFailed: "Failed to add"
|
|
18130
|
+
},
|
|
18131
|
+
skills: {
|
|
18132
|
+
addTooltip: "Add to Skills panel",
|
|
18133
|
+
added: "Added to Skills panel",
|
|
18134
|
+
alreadyAdded: "Already added",
|
|
18135
|
+
addFailed: "Failed to add",
|
|
18136
|
+
title: "Skills",
|
|
18137
|
+
searchPlaceholder: "Search skills...",
|
|
18138
|
+
clearSearch: "Clear",
|
|
18139
|
+
addSkill: "Add Skill",
|
|
18140
|
+
emptyNoSkills: 'No skills yet. Click "Add Skill" to add one.',
|
|
18141
|
+
emptyNoMatch: "No skills match your search.",
|
|
18142
|
+
pathLabel: "Absolute path to SKILL.md",
|
|
18143
|
+
pathPlaceholder: "/Users/you/.../skills/foo/SKILL.md",
|
|
18144
|
+
add: "Add",
|
|
18145
|
+
adding: "Adding...",
|
|
18146
|
+
invalid: "Invalid",
|
|
18147
|
+
copyPath: "Copy path",
|
|
18148
|
+
noDescription: "No description",
|
|
18149
|
+
previewTitle: "Skill Preview",
|
|
18150
|
+
source: "Source",
|
|
18151
|
+
cannotRead: "File cannot be read."
|
|
18152
|
+
},
|
|
18153
|
+
toast: {
|
|
18154
|
+
savedSuccess: "Saved",
|
|
18155
|
+
saveFailed: "Save failed",
|
|
18156
|
+
copiedName: "Copied: {{name}}",
|
|
18157
|
+
copyFailed: "Copy failed",
|
|
18158
|
+
deleteFailed: "Delete failed",
|
|
18159
|
+
operationFailed: "Operation failed",
|
|
18160
|
+
staged: "Staged",
|
|
18161
|
+
stageFailed: "Stage failed",
|
|
18162
|
+
unstaged: "Unstaged",
|
|
18163
|
+
unstageFailed: "Unstage failed",
|
|
18164
|
+
stagedNFiles: "Staged {{count}} files",
|
|
18165
|
+
unstagedNFiles: "Unstaged {{count}} files",
|
|
18166
|
+
discardFailed: "Discard failed",
|
|
18167
|
+
discardedNFiles: "Discarded changes in {{count}} files",
|
|
18168
|
+
stagedAllFiles: "All files staged",
|
|
18169
|
+
deletedFile: "File deleted",
|
|
18170
|
+
discardedChanges: "Changes discarded",
|
|
18171
|
+
pastedFile: "Pasted: {{name}}",
|
|
18172
|
+
pasteFailed: "Paste failed",
|
|
18173
|
+
noFileToPaste: "No file to paste",
|
|
18174
|
+
createdFile: "Created: {{name}}",
|
|
18175
|
+
createFailed: "Create failed",
|
|
18176
|
+
movedToTrash: "Moved to trash: {{name}}",
|
|
18177
|
+
copiedPageUrl: "Page URL copied",
|
|
18178
|
+
copiedDirPath: "Directory path copied",
|
|
18179
|
+
switchedToBranch: "Switched to {{branch}}",
|
|
18180
|
+
switchBranchFailed: "Branch switch failed",
|
|
18181
|
+
loadBranchFailed: "Failed to load branches",
|
|
18182
|
+
copiedCommand: "Copied: {{command}}",
|
|
18183
|
+
copiedMessage: "Message copied",
|
|
18184
|
+
copiedUrl: "URL copied",
|
|
18185
|
+
copiedOutput: "Output copied",
|
|
18186
|
+
copiedCmd: "Command copied",
|
|
18187
|
+
copiedComment: "Comment copied",
|
|
18188
|
+
copiedAllComments: "All comments copied",
|
|
18189
|
+
copiedFileContent: "File content copied",
|
|
18190
|
+
copiedQA: "Copied {{count}} Q&A",
|
|
18191
|
+
copiedAllQA: "All Q&A copied",
|
|
18192
|
+
sentQA: "Sent to AI",
|
|
18193
|
+
readFileFailed: "Failed to read file",
|
|
18194
|
+
reviewCreated: "Review created, link copied",
|
|
18195
|
+
reviewUpdated: "Review updated, link copied",
|
|
18196
|
+
reviewCreateFailed: "Failed to create review",
|
|
18197
|
+
sharingClosed: "Sharing disabled",
|
|
18198
|
+
sharingCloseFailed: "Failed to disable sharing",
|
|
18199
|
+
linkCopied: "Link copied",
|
|
18200
|
+
addCommentFailed: "Failed to add comment",
|
|
18201
|
+
deleteCommentFailed: "Failed to delete comment",
|
|
18202
|
+
editCommentFailed: "Failed to edit comment",
|
|
18203
|
+
addReplyFailed: "Failed to add reply",
|
|
18204
|
+
deleteReplyFailed: "Failed to delete reply",
|
|
18205
|
+
editReplyFailed: "Failed to edit reply",
|
|
18206
|
+
disconnected: "Disconnected: {{id}}",
|
|
18207
|
+
pluginReloading: "Reloading extension...",
|
|
18208
|
+
worktreeCreateSuccess: "Worktree created: {{name}}",
|
|
18209
|
+
worktreeCreateFailed: "Failed to create worktree",
|
|
18210
|
+
worktreeLoadFailed: "Failed to load worktree list",
|
|
18211
|
+
worktreeDeleted: "Worktree deleted",
|
|
18212
|
+
worktreeDeleteFailed: "Failed to delete worktree",
|
|
18213
|
+
worktreeLocked: "Locked",
|
|
18214
|
+
worktreeUnlocked: "Unlocked"
|
|
18215
|
+
},
|
|
18216
|
+
workspace: {
|
|
18217
|
+
selectProject: "Select a project to start",
|
|
18218
|
+
searchProjectPath: "Search project path...",
|
|
18219
|
+
loadingProjects: "Loading projects...",
|
|
18220
|
+
projectNotFound: "No projects found",
|
|
18221
|
+
sessions: "{{count}} sessions",
|
|
18222
|
+
loadingSessions: "Loading sessions...",
|
|
18223
|
+
noSessions: "No sessions",
|
|
18224
|
+
loadingText: "Loading...",
|
|
18225
|
+
openProject: "Open Project",
|
|
18226
|
+
expandSidebar: "Expand sidebar",
|
|
18227
|
+
collapseSidebar: "Collapse sidebar",
|
|
18228
|
+
notes: "Notes",
|
|
18229
|
+
skills: "Skills",
|
|
18230
|
+
settings: "Settings",
|
|
18231
|
+
help: "Help",
|
|
18232
|
+
updateAvailable: "v{{version}} available",
|
|
18233
|
+
copyUpgradeCommand: "Copy cockpit update",
|
|
18234
|
+
viewChangelog: "View changelog",
|
|
18235
|
+
upgradeCommandCopied: "Copied `cockpit update`",
|
|
18236
|
+
projectNotes: "Project Notes",
|
|
18237
|
+
closeProject: "Close project"
|
|
18238
|
+
},
|
|
18239
|
+
mobile: {
|
|
18240
|
+
useDesktop: "Desktop",
|
|
18241
|
+
messagePlaceholder: "Message\u2026",
|
|
18242
|
+
send: "Send",
|
|
18243
|
+
stop: "Stop",
|
|
18244
|
+
enableNotifications: "Enable notifications",
|
|
18245
|
+
disableNotifications: "Disable notifications",
|
|
18246
|
+
notifyError: "Could not enable notifications"
|
|
18247
|
+
},
|
|
18248
|
+
sessions: {
|
|
18249
|
+
recentSessions: "Recent Sessions",
|
|
18250
|
+
runningCount: "{{count}} running",
|
|
18251
|
+
unreadCount: "{{count}} unread",
|
|
18252
|
+
noSessions: "No sessions yet",
|
|
18253
|
+
running: "Running",
|
|
18254
|
+
done: "Done",
|
|
18255
|
+
pinnedSessions: "Pinned Sessions",
|
|
18256
|
+
noPinnedSessions: "No pinned sessions. Click the pin icon in the tab bar to add.",
|
|
18257
|
+
editTitle: "Edit title",
|
|
18258
|
+
remove: "Remove",
|
|
18259
|
+
projectSessions: "Project Sessions",
|
|
18260
|
+
browseAllSessions: "Browse all sessions",
|
|
18261
|
+
sessionList: "Session List",
|
|
18262
|
+
searchSessions: "Search sessions...",
|
|
18263
|
+
searchRecentSessions: "Search recent sessions",
|
|
18264
|
+
loadSessionsFailed: "Failed to load sessions",
|
|
18265
|
+
loadingSessions: "Loading sessions...",
|
|
18266
|
+
noMatchingSessions: "No matching sessions",
|
|
18267
|
+
noSessionsYet: "No sessions yet",
|
|
18268
|
+
projectList: "Project List",
|
|
18269
|
+
openFolder: "Open Folder",
|
|
18270
|
+
selectingFolder: "Selecting...",
|
|
18271
|
+
loadingHistory: "Loading history..."
|
|
18272
|
+
},
|
|
18273
|
+
scheduledTasks: {
|
|
18274
|
+
title: "Scheduled Tasks",
|
|
18275
|
+
aboutToTrigger: "About to trigger",
|
|
18276
|
+
secondsLater: "in {{count}}s",
|
|
18277
|
+
minutesLater: "in {{count}}m",
|
|
18278
|
+
hoursMinutesLater: "in {{h}}h {{m}}m",
|
|
18279
|
+
hoursLater: "in {{h}}h",
|
|
18280
|
+
onceType: "Once ({{minutes}}min)",
|
|
18281
|
+
everyNMinutes: "Every {{minutes}}min",
|
|
18282
|
+
completed: "Completed",
|
|
18283
|
+
paused: "Paused",
|
|
18284
|
+
activeCount: "{{running}} active",
|
|
18285
|
+
pausedCount: "{{paused}} paused",
|
|
18286
|
+
noScheduledTasks: "No scheduled tasks. Click the clock button in the chat input to create one.",
|
|
18287
|
+
lastResult: "Last",
|
|
18288
|
+
runNow: "Run now",
|
|
18289
|
+
resume: "Resume",
|
|
18290
|
+
pause: "Pause",
|
|
18291
|
+
completedCount: "Completed ({{count}})",
|
|
18292
|
+
success: "Success",
|
|
18293
|
+
failure: "Failed",
|
|
18294
|
+
createTask: "Create Scheduled Task",
|
|
18295
|
+
editTask: "Edit Scheduled Task",
|
|
18296
|
+
sendMessage: "Message",
|
|
18297
|
+
messagePlaceholder: "Enter message to send...",
|
|
18298
|
+
taskFile: "Task File",
|
|
18299
|
+
taskFilePlaceholder: "/Users/you/project/tasks/daily-report.md",
|
|
18300
|
+
taskFileHint: "Absolute path. On each fire the agent reads this file first and acts on what it describes \u2014 edits take effect on the next run.",
|
|
18301
|
+
taskFilePromptHeader: "Read this task file first, then act accordingly:",
|
|
18302
|
+
type: "Type",
|
|
18303
|
+
once: "Once",
|
|
18304
|
+
interval: "Interval",
|
|
18305
|
+
quickSelect: "Quick Select",
|
|
18306
|
+
customCron: "Custom Cron Expression",
|
|
18307
|
+
customMinutes: "Custom minutes",
|
|
18308
|
+
cronPlaceholder: "e.g. 0 9 * * 1-5 (weekdays at 9am)",
|
|
18309
|
+
cronFormat: "Format: min hour day month weekday (e.g. 0 9 * * 1-5)",
|
|
18310
|
+
minutesPlaceholder: "Minutes",
|
|
18311
|
+
limitTimeRange: "Limit execution time range",
|
|
18312
|
+
to: "to",
|
|
18313
|
+
saveBtn: "Save ({{modKey}}\u21A9)",
|
|
18314
|
+
createBtn: "Create ({{modKey}}\u21A9)",
|
|
18315
|
+
"5minLater": "In 5 minutes",
|
|
18316
|
+
"15minLater": "In 15 minutes",
|
|
18317
|
+
"30minLater": "In 30 minutes",
|
|
18318
|
+
"1hourLater": "In 1 hour",
|
|
18319
|
+
every15min: "Every 15 min",
|
|
18320
|
+
every30min: "Every 30 min",
|
|
18321
|
+
every1hour: "Every 1 hour",
|
|
18322
|
+
every2hours: "Every 2 hours",
|
|
18323
|
+
daily9am: "Daily 09:00",
|
|
18324
|
+
daily6pm: "Daily 18:00",
|
|
18325
|
+
weeklyMon9am: "Mon 09:00",
|
|
18326
|
+
monthly1st9am: "1st of month 09:00"
|
|
18327
|
+
},
|
|
18328
|
+
cron: {
|
|
18329
|
+
everyNMinutes: "Every {{n}} minutes",
|
|
18330
|
+
everyNHours: "Every {{n}} hours",
|
|
18331
|
+
everyMinute: "Every minute",
|
|
18332
|
+
everyHourAtMin: "Every hour at minute {{m}}",
|
|
18333
|
+
hourlyEveryMin: "{{h}}:xx every minute",
|
|
18334
|
+
daily: "Daily at {{time}}",
|
|
18335
|
+
weekdays: "Weekdays",
|
|
18336
|
+
weekends: "Weekends",
|
|
18337
|
+
dowSun: "Sun",
|
|
18338
|
+
dowMon: "Mon",
|
|
18339
|
+
dowTue: "Tue",
|
|
18340
|
+
dowWed: "Wed",
|
|
18341
|
+
dowThu: "Thu",
|
|
18342
|
+
dowFri: "Fri",
|
|
18343
|
+
dowSat: "Sat",
|
|
18344
|
+
monthPrefix: "",
|
|
18345
|
+
dayOfMonth: "",
|
|
18346
|
+
dayRange: "{{a}}th to {{b}}th",
|
|
18347
|
+
weekdayPrefix: "",
|
|
18348
|
+
weekdayRange: "{{a}} to {{b}}"
|
|
18349
|
+
},
|
|
18350
|
+
blockViewer: {
|
|
18351
|
+
empty: {
|
|
18352
|
+
body: "Select a file in the left tree to see its code map.",
|
|
18353
|
+
hint: "or press \u2318K to search."
|
|
18354
|
+
},
|
|
18355
|
+
fileMode: {
|
|
18356
|
+
loading: "Loading\u2026",
|
|
18357
|
+
notFound: "This file is not indexed (unsupported language or beyond the file cap)."
|
|
18358
|
+
},
|
|
18359
|
+
search: {
|
|
18360
|
+
tooltip: "Search (\u2318K)",
|
|
18361
|
+
hint: "Start typing to search",
|
|
18362
|
+
noResults: "No matches",
|
|
18363
|
+
files: "Files",
|
|
18364
|
+
symbols: "Symbols"
|
|
18365
|
+
},
|
|
18366
|
+
viewerToggle: {
|
|
18367
|
+
toBlock: "Show code map",
|
|
18368
|
+
toCode: "Back to code view"
|
|
18369
|
+
},
|
|
18370
|
+
toc: {
|
|
18371
|
+
title: "this file",
|
|
18372
|
+
empty: "No functions detected.",
|
|
18373
|
+
notIndexed: "File not in project graph (unsupported language / not in git tracked set / file cap reached)."
|
|
18374
|
+
},
|
|
18375
|
+
history: {
|
|
18376
|
+
title: "history",
|
|
18377
|
+
empty: "Click an input or output pin to begin tracing.",
|
|
18378
|
+
clear: "Clear history"
|
|
18379
|
+
},
|
|
18380
|
+
refresh: "Rebuild project graph",
|
|
18381
|
+
retry: "Retry"
|
|
18382
|
+
},
|
|
18383
|
+
blockDiffViewer: {
|
|
18384
|
+
loading: "Building code map\u2026",
|
|
18385
|
+
unsupported: "Code map diff is not available for this file type.",
|
|
18386
|
+
unsupportedHint: "Switch back to the regular diff view to read it.",
|
|
18387
|
+
error: "Code map diff failed: {{message}}",
|
|
18388
|
+
noBlockChanges: "No code-map changes (formatting / whitespace only).",
|
|
18389
|
+
noBefore: "(new)",
|
|
18390
|
+
noAfter: "(removed)",
|
|
18391
|
+
kind: {
|
|
18392
|
+
added: "added",
|
|
18393
|
+
deleted: "deleted",
|
|
18394
|
+
modified: "modified"
|
|
18395
|
+
}
|
|
18396
|
+
},
|
|
18397
|
+
fileBrowser: {
|
|
18398
|
+
directoryTree: "Tree",
|
|
18399
|
+
searchTab: "Search",
|
|
18400
|
+
recentTab: "Recent",
|
|
18401
|
+
changesTab: "Status",
|
|
18402
|
+
historyTab: "History",
|
|
18403
|
+
searchFiles: "Search files...",
|
|
18404
|
+
clear: "Clear",
|
|
18405
|
+
exactMatchOn: "Exact match (on)",
|
|
18406
|
+
exactMatchOff: "Exact match (off)",
|
|
18407
|
+
refreshTree: "Refresh directory tree",
|
|
18408
|
+
collapseAll: "Collapse all directories",
|
|
18409
|
+
searchFileContent: "Search file contents...",
|
|
18410
|
+
caseSensitive: "Case sensitive",
|
|
18411
|
+
wholeWord: "Whole word",
|
|
18412
|
+
regex: "Regex",
|
|
18413
|
+
fileTypes: "File types (ts,tsx)",
|
|
18414
|
+
compareMode: "Compare",
|
|
18415
|
+
compareModeOff: "Close branch comparison",
|
|
18416
|
+
compareModeOn: "Compare with selected branch",
|
|
18417
|
+
createFile: "New File",
|
|
18418
|
+
createFileIn: "New File (in {{path}}/)",
|
|
18419
|
+
fileName: "File name...",
|
|
18420
|
+
noRecentFiles: "No recent files",
|
|
18421
|
+
stagingArea: "Staged ({{count}})",
|
|
18422
|
+
changesSummary_one: "{{count}} change",
|
|
18423
|
+
changesSummary_other: "{{count}} changes",
|
|
18424
|
+
noChanges: "No changes in working tree",
|
|
18425
|
+
refreshChanges: "Refresh changes",
|
|
18426
|
+
unstageAll: "Unstage all",
|
|
18427
|
+
noStagedFiles: "No staged files",
|
|
18428
|
+
unstageNFiles: "Unstage {{count}} files",
|
|
18429
|
+
unstageFile: "Unstage",
|
|
18430
|
+
workspace: "Workspace ({{count}})",
|
|
18431
|
+
discardAll: "Discard all",
|
|
18432
|
+
stageAll: "Stage all",
|
|
18433
|
+
noUnstagedChanges: "No unstaged changes",
|
|
18434
|
+
discardNFiles: "Discard changes in {{count}} files",
|
|
18435
|
+
stageNFiles: "Stage {{count}} files",
|
|
18436
|
+
discardChanges: "Discard changes",
|
|
18437
|
+
stageFile: "Stage file",
|
|
18438
|
+
loadingDiff: "Loading diff...",
|
|
18439
|
+
noDiffFiles: "No diff files",
|
|
18440
|
+
nFilesChanged: "{{count}} files changed (vs {{branch}})",
|
|
18441
|
+
loadingCommits: "Loading commits...",
|
|
18442
|
+
noCommits: "No commits",
|
|
18443
|
+
allLoaded: "All {{count}} records loaded",
|
|
18444
|
+
locateInTree: "Locate in directory tree",
|
|
18445
|
+
unsaved: "Unsaved",
|
|
18446
|
+
saveBeforeSwitch: "Current file has unsaved changes. Save before switching?",
|
|
18447
|
+
saveAndSwitch: "Save and switch",
|
|
18448
|
+
closeEdit: "Close edit (ESC)",
|
|
18449
|
+
closeBtn: "Close",
|
|
18450
|
+
copyFileContent: "Copy file content",
|
|
18451
|
+
toggleJsonReadable: "Toggle JSON readable mode",
|
|
18452
|
+
previewMarkdown: "Preview Markdown",
|
|
18453
|
+
exitPreview: "Exit Preview",
|
|
18454
|
+
viewBlame: "View line-by-line change history",
|
|
18455
|
+
viewDiff: "View changes against HEAD",
|
|
18456
|
+
exitDiff: "Exit Diff",
|
|
18457
|
+
diffLoadFailed: "Failed to load diff",
|
|
18458
|
+
editFile: "Edit file",
|
|
18459
|
+
backToPreview: "Back to preview",
|
|
18460
|
+
cannotPreview: "Cannot preview this file",
|
|
18461
|
+
selectFileToPreview: "Select a file to preview",
|
|
18462
|
+
staged: "Staged",
|
|
18463
|
+
unstaged: "Unstaged",
|
|
18464
|
+
selectFileToViewDiff: "Select a file to view diff",
|
|
18465
|
+
loadingDiffContent: "Loading diff...",
|
|
18466
|
+
clickCompareToLoad: 'Click "Compare" to load branch diff',
|
|
18467
|
+
selectCommitToView: "Select a commit to view details",
|
|
18468
|
+
confirmDelete: "Confirm Delete",
|
|
18469
|
+
confirmDeleteMessage: "Move <file>{{name}}</file> to trash?",
|
|
18470
|
+
nFilesNMatches: "{{files}} files, {{matches}} matches",
|
|
18471
|
+
resultsTruncated: "Results truncated",
|
|
18472
|
+
noContentSearchResults: "No results",
|
|
18473
|
+
enterKeywordToSearch: "Enter keyword to search file contents",
|
|
18474
|
+
searchMinChars: "Search requires at least 2 characters"
|
|
18475
|
+
},
|
|
18476
|
+
codeViewer: {
|
|
18477
|
+
fileModifiedExternally: "File was modified externally. Saving will overwrite external changes.",
|
|
18478
|
+
useDiskVersion: "Use disk version",
|
|
18479
|
+
forceOverwrite: "Force overwrite",
|
|
18480
|
+
searchPlaceholder: "Search...",
|
|
18481
|
+
caseSensitive: "Case sensitive",
|
|
18482
|
+
wholeWordMatch: "Whole word match",
|
|
18483
|
+
unsavedConfirm: "You have unsaved changes. Close anyway?",
|
|
18484
|
+
discardChanges: "Discard changes",
|
|
18485
|
+
continueEditing: "Continue editing",
|
|
18486
|
+
unsavedExitConfirm: "You have unsaved changes. Exit edit mode?",
|
|
18487
|
+
clickToViewDetails: "Click to view details",
|
|
18488
|
+
clickToViewCommit: "Click to view commit details",
|
|
18489
|
+
nComments: "{{count}} comments",
|
|
18490
|
+
searchChat: "Search chat...",
|
|
18491
|
+
prevShiftEnter: "Previous (Shift+Enter)",
|
|
18492
|
+
nextEnter: "Next (Enter)",
|
|
18493
|
+
closeEsc: "Close (Esc)"
|
|
18494
|
+
},
|
|
18495
|
+
chat: {
|
|
18496
|
+
startConversation: "Start a conversation",
|
|
18497
|
+
loadMoreHistory: "Load more...",
|
|
18498
|
+
scrollUpForMore: "\u2191 Scroll up to load more history",
|
|
18499
|
+
claudeThinking: "Claude is thinking...",
|
|
18500
|
+
jumpToStart: "Jump to start",
|
|
18501
|
+
jumpToLatest: "Jump to latest",
|
|
18502
|
+
copyMessage: "Copy message",
|
|
18503
|
+
forkSession: "Fork session from here",
|
|
18504
|
+
imageN: "Image {{index}}",
|
|
18505
|
+
imagePreview: "Image preview",
|
|
18506
|
+
toolCalls: "{{count}} tool calls",
|
|
18507
|
+
collapse: "\u25B2 Collapse",
|
|
18508
|
+
expand: "\u25BC Expand",
|
|
18509
|
+
subagent: "Subagent",
|
|
18510
|
+
subagentEmpty: "No subagent transcript found",
|
|
18511
|
+
subagentViewTitle: "View subagent transcript",
|
|
18512
|
+
workflowRun: "Run details",
|
|
18513
|
+
workflowViewTitle: "View workflow run details",
|
|
18514
|
+
workflowEmpty: "No workflow run journal found",
|
|
18515
|
+
workflowAgents: "agents",
|
|
18516
|
+
workflowViewAgent: "View",
|
|
18517
|
+
workflowUngrouped: "Ungrouped",
|
|
18518
|
+
viewQuestions: "View questions",
|
|
18519
|
+
viewAllFileChanges: "View all file changes",
|
|
18520
|
+
requestFailed: "Request failed",
|
|
18521
|
+
cannotReadStream: "Cannot read response stream",
|
|
18522
|
+
errorRetry: "An error occurred, please retry",
|
|
18523
|
+
placeholder: "Type a message, Enter to send (Shift+Enter for new line, paste images; start a line with / (main session) or @ (subagent) for commands, multiple allowed)",
|
|
18524
|
+
placeholderDisabled: "Generating... you can keep typing (ESC to cancel; if stuck, cancel and resend 'continue')",
|
|
18525
|
+
imageSizeLimit: "Image size exceeds limit (max 5MB), current: {{size}}MB",
|
|
18526
|
+
stageAll: "Stage all files (git add -A)",
|
|
18527
|
+
viewGitChanges: "View Git changes",
|
|
18528
|
+
viewAllComments: "View all comments",
|
|
18529
|
+
userMessages: "User messages",
|
|
18530
|
+
projectNotes: "Project Notes",
|
|
18531
|
+
scheduledTasks: "Scheduled Tasks",
|
|
18532
|
+
quickPrompts: "Quick Prompts",
|
|
18533
|
+
globalPrompts: "Global Prompts",
|
|
18534
|
+
projectPrompts: "Project Prompts",
|
|
18535
|
+
noQuickPrompts: "No quick prompts yet",
|
|
18536
|
+
addQuickPrompt: "Add quick prompt",
|
|
18537
|
+
quickPromptPlaceholder: "One-line prompt \u2014 Enter to save, Esc to cancel",
|
|
18538
|
+
context: "Context",
|
|
18539
|
+
output: "Output",
|
|
18540
|
+
copiedCommandTooltip: "Copied!",
|
|
18541
|
+
copyCommandTooltip: "Copy command: claude -r {{sessionId}}",
|
|
18542
|
+
executedCommand: "Executed `{{command}}`{{exitInfo}}, output:\n```\n{{output}}\n```",
|
|
18543
|
+
executedCommandFailed: "Failed to execute `{{command}}`: {{error}}",
|
|
18544
|
+
executionMode: "Execution Mode",
|
|
18545
|
+
checkBalance: "Check balance",
|
|
18546
|
+
balanceFailed: "Query failed \u2014 check the API key",
|
|
18547
|
+
balanceNeedsKey: "Set a DeepSeek API key first",
|
|
18548
|
+
balanceUnavailable: "Account is not available for requests",
|
|
18549
|
+
balanceEmpty: "No balance returned",
|
|
18550
|
+
openUsagePage: "Open DeepSeek usage console",
|
|
18551
|
+
ptyModeHint: "Subscription billing mode: uses interactive claude CLI",
|
|
18552
|
+
planMode: "Plan mode",
|
|
18553
|
+
planModeDesc: "read-only \xB7 plan first, no edits",
|
|
18554
|
+
planModeOn: "Plan mode on \u2014 read-only; send a task to get a plan",
|
|
18555
|
+
planModeOff: "Plan mode off",
|
|
18556
|
+
planModeHint: "Plan mode: read-only exploration that produces a plan without editing. Uncheck and resend to implement.",
|
|
18557
|
+
noHistory: "Independent task",
|
|
18558
|
+
noHistoryDesc: "no history sent",
|
|
18559
|
+
noHistoryHint: "Independent task: each message is sent to the model on its own, with no prior conversation. The transcript above still records everything.",
|
|
18560
|
+
planTitle: "Plan (awaiting your review)",
|
|
18561
|
+
approvePlan: "Approve & run",
|
|
18562
|
+
planApproveHint: "No approval dialog here \u2014 click to exit plan mode and execute",
|
|
18563
|
+
approvePlanPrompt: "Approved \u2014 proceed with the plan above.",
|
|
18564
|
+
ptyTerminal: "PTY Terminal",
|
|
18565
|
+
ptyRunning: "running",
|
|
18566
|
+
ptyCollapse: "Collapse",
|
|
18567
|
+
ptyExpand: "Expand",
|
|
18568
|
+
ptyStuck: "PTY seems stuck (waiting for a dialog?). Please handle it in the terminal below.",
|
|
18569
|
+
ptyTimedOut: "PTY timed out without manual handling; the turn was terminated.",
|
|
18570
|
+
ptyCrash: "Claude CLI render crash (upstream bug): {{error}}. This session's history may contain edits that fail to render.",
|
|
18571
|
+
ptyQuestionEsc: "AI asked an interactive question, which cannot be answered in this mode; it was auto-cancelled and the turn was ended. See the question in the chat and answer it in your next message."
|
|
18572
|
+
},
|
|
18573
|
+
console: {
|
|
18574
|
+
enterCommandOrUrl: "Enter a command or URL to start",
|
|
18575
|
+
emptyIntro: "Type any of the following in the input bar to create a bubble:",
|
|
18576
|
+
bubbleCommand: "Command",
|
|
18577
|
+
bubbleInteractive: "Interactive",
|
|
18578
|
+
bubbleBrowser: "Browser",
|
|
18579
|
+
bubbleBrowserNoteIframe: "Some sites block iframe embedding \u2014 install Cockpit Bridge under Settings \u2192 Browser Extension before opening.",
|
|
18580
|
+
bubbleBrowserNoteCookie: "If a logged-in site first shows as signed out, refresh a few times to restore it.",
|
|
18581
|
+
bubbleDatabase: "Database",
|
|
18582
|
+
bubbleNotebook: "Notebook",
|
|
18583
|
+
loadingMore: "Loading...",
|
|
18584
|
+
loadMoreHistory: "Load more history",
|
|
18585
|
+
quickCommands: "Quick Commands",
|
|
18586
|
+
singleColumn: "Single column",
|
|
18587
|
+
dualColumn: "Dual column",
|
|
18588
|
+
envVars: "Environment Variables",
|
|
18589
|
+
launchZsh: "Launch zsh terminal",
|
|
18590
|
+
htmlApps: "HTML apps",
|
|
18591
|
+
inputPlaceholder: "Enter command or URL and press Enter... (\u2191\u2193 history, Tab complete)",
|
|
18592
|
+
scopeProject: "Project",
|
|
18593
|
+
scopeGlobal: "Global",
|
|
18594
|
+
tabSwitchEscClose: "Tab to switch \xB7 Esc to close",
|
|
18595
|
+
copyOutput: "Copy output",
|
|
18596
|
+
copyCommand: "Copy command",
|
|
18597
|
+
rerun: "Re-run",
|
|
18598
|
+
deleteRecord: "Delete record",
|
|
18599
|
+
searchPlaceholder: "Search...",
|
|
18600
|
+
searchMode: "Search",
|
|
18601
|
+
filterMode: "Filter",
|
|
18602
|
+
prevShiftEnter: "Previous (Shift+Enter)",
|
|
18603
|
+
nextEnter: "Next (Enter)",
|
|
18604
|
+
loadingTerminal: "Loading terminal...",
|
|
18605
|
+
clickToInput: "Click terminal area to type",
|
|
18606
|
+
stdinPlaceholder: "stdin input...",
|
|
18607
|
+
runningText: "Running...",
|
|
18608
|
+
exitCode: "Exit code: {{code}}",
|
|
18609
|
+
totalLines: "{{count}} lines total",
|
|
18610
|
+
globalCommands: "Global Commands",
|
|
18611
|
+
projectCommands: "Project Commands",
|
|
18612
|
+
noCustomCommands: "No custom commands yet",
|
|
18613
|
+
namePlaceholder: "Name",
|
|
18614
|
+
commandPlaceholder: "Command",
|
|
18615
|
+
restoreTooltip: "Restore ({{modKey}}M / ESC)",
|
|
18616
|
+
screenshotting: "Screenshotting...",
|
|
18617
|
+
outputFileDeleted: "[Output file deleted]"
|
|
18618
|
+
},
|
|
18619
|
+
browser: {
|
|
18620
|
+
blankPage: "Blank page",
|
|
18621
|
+
copyUrl: "Copy URL",
|
|
18622
|
+
openInNewWindow: "Open in new window",
|
|
18623
|
+
exitMaximize: "Exit maximize ({{modKey}}M)",
|
|
18624
|
+
maximize: "Maximize ({{modKey}}M)",
|
|
18625
|
+
pageLoadFailed: "Page load failed",
|
|
18626
|
+
clickToWake: "Click to wake",
|
|
18627
|
+
sleeping: "Sleeping",
|
|
18628
|
+
loadingPage: "Loading...",
|
|
18629
|
+
loadFailed: "Load failed"
|
|
18630
|
+
},
|
|
18631
|
+
database: {
|
|
18632
|
+
connectionFailed: "Connection failed",
|
|
18633
|
+
connected: "Connected",
|
|
18634
|
+
connecting: "Connecting...",
|
|
18635
|
+
refreshTableList: "Refresh table list",
|
|
18636
|
+
filterTable: "T Tables",
|
|
18637
|
+
filterView: "V Views",
|
|
18638
|
+
noTables: "No tables",
|
|
18639
|
+
tabStructure: "Structure",
|
|
18640
|
+
tabData: "Data",
|
|
18641
|
+
tabSql: "SQL",
|
|
18642
|
+
filterActive: "Filter: {{count}} cols",
|
|
18643
|
+
clearAllFilters: "Clear all filters",
|
|
18644
|
+
deleteNRows: "Delete {{count}} rows",
|
|
18645
|
+
confirmDeleteRows: "Confirm delete?",
|
|
18646
|
+
copyCsvSelected: "Copy selected rows as CSV",
|
|
18647
|
+
copyCsvAll: "Export all as CSV",
|
|
18648
|
+
copyJsonSelected: "Copy selected rows as JSON",
|
|
18649
|
+
copyJsonAll: "Export all as JSON",
|
|
18650
|
+
copyCSV: "Copy CSV",
|
|
18651
|
+
CSV: "CSV",
|
|
18652
|
+
copyJSON: "Copy JSON",
|
|
18653
|
+
JSON: "JSON",
|
|
18654
|
+
selectTable: "Select a table",
|
|
18655
|
+
selectTableToView: "Select a table to view structure",
|
|
18656
|
+
selectTableForData: "Select a table to view data",
|
|
18657
|
+
columns: "Columns",
|
|
18658
|
+
colName: "Name",
|
|
18659
|
+
colType: "Type",
|
|
18660
|
+
colNullable: "Nullable",
|
|
18661
|
+
colDefault: "Default",
|
|
18662
|
+
primaryKey: "Primary Key",
|
|
18663
|
+
foreignKeys: "Foreign Keys",
|
|
18664
|
+
indexes: "Indexes",
|
|
18665
|
+
enable: "Enable",
|
|
18666
|
+
commaValues: "Comma-separated values",
|
|
18667
|
+
likePattern: "%pattern%",
|
|
18668
|
+
valuePlaceholder: "Value",
|
|
18669
|
+
apply: "Apply",
|
|
18670
|
+
clearFilter: "Clear",
|
|
18671
|
+
addRow: "+ Add Row",
|
|
18672
|
+
totalRows: "{{count}} rows",
|
|
18673
|
+
rowsAffected: "{{command}} \u2014 {{count}} rows affected ({{duration}}ms)",
|
|
18674
|
+
queryRows: "{{count}} rows ({{duration}}ms)",
|
|
18675
|
+
resultTruncated: "[Results truncated to 1000 rows]",
|
|
18676
|
+
sqlPlaceholder: "Enter SQL... ({{modKey}}Enter to execute)",
|
|
18677
|
+
executing: "Executing...",
|
|
18678
|
+
execute: "\u25B6 Execute",
|
|
18679
|
+
deleteRowsFailed: "{{count}} rows failed to delete",
|
|
18680
|
+
inputParams: "Input Parameters",
|
|
18681
|
+
resultLabel: "Result"
|
|
18682
|
+
},
|
|
18683
|
+
mysql: {
|
|
18684
|
+
connectionFailed: "Connection failed",
|
|
18685
|
+
connected: "Connected",
|
|
18686
|
+
connecting: "Connecting...",
|
|
18687
|
+
refreshTableList: "Refresh table list",
|
|
18688
|
+
filterTable: "T Tables",
|
|
18689
|
+
filterView: "V Views",
|
|
18690
|
+
noTables: "No tables",
|
|
18691
|
+
tabStructure: "Structure",
|
|
18692
|
+
tabData: "Data",
|
|
18693
|
+
tabSql: "SQL",
|
|
18694
|
+
filterActive: "Filter: {{count}} cols",
|
|
18695
|
+
clearAllFilters: "Clear all filters",
|
|
18696
|
+
deleteNRows: "Delete {{count}} rows",
|
|
18697
|
+
confirmDeleteRows: "Confirm delete?",
|
|
18698
|
+
copyCsvSelected: "Copy selected rows as CSV",
|
|
18699
|
+
copyCsvAll: "Export all as CSV",
|
|
18700
|
+
copyJsonSelected: "Copy selected rows as JSON",
|
|
18701
|
+
copyJsonAll: "Export all as JSON",
|
|
18702
|
+
copyCSV: "Copy CSV",
|
|
18703
|
+
CSV: "CSV",
|
|
18704
|
+
copyJSON: "Copy JSON",
|
|
18705
|
+
JSON: "JSON",
|
|
18706
|
+
selectTable: "Select a table",
|
|
18707
|
+
selectTableToView: "Select a table to view structure",
|
|
18708
|
+
selectTableForData: "Select a table to view data",
|
|
18709
|
+
columns: "Columns",
|
|
18710
|
+
colName: "Name",
|
|
18711
|
+
colType: "Type",
|
|
18712
|
+
colNullable: "Nullable",
|
|
18713
|
+
colDefault: "Default",
|
|
18714
|
+
primaryKey: "Primary Key",
|
|
18715
|
+
foreignKeys: "Foreign Keys",
|
|
18716
|
+
indexes: "Indexes",
|
|
18717
|
+
enable: "Enable",
|
|
18718
|
+
commaValues: "Comma-separated values",
|
|
18719
|
+
likePattern: "%pattern%",
|
|
18720
|
+
valuePlaceholder: "Value",
|
|
18721
|
+
apply: "Apply",
|
|
18722
|
+
clearFilter: "Clear",
|
|
18723
|
+
addRow: "+ Add Row",
|
|
18724
|
+
totalRows: "{{count}} rows",
|
|
18725
|
+
rowsAffected: "{{command}} \u2014 {{count}} rows affected ({{duration}}ms)",
|
|
18726
|
+
queryRows: "{{count}} rows ({{duration}}ms)",
|
|
18727
|
+
resultTruncated: "[Results truncated to 1000 rows]",
|
|
18728
|
+
sqlPlaceholder: "Enter SQL... ({{modKey}}Enter to execute)",
|
|
18729
|
+
executing: "Executing...",
|
|
18730
|
+
execute: "\u25B6 Execute",
|
|
18731
|
+
deleteRowsFailed: "{{count}} rows failed to delete"
|
|
18732
|
+
},
|
|
18733
|
+
redis: {
|
|
18734
|
+
neverExpires: "Never expires",
|
|
18735
|
+
expired: "Expired",
|
|
18736
|
+
loadFailed: "Load failed",
|
|
18737
|
+
deleteFailed: "Delete failed",
|
|
18738
|
+
saveFailed: "Save failed",
|
|
18739
|
+
scanPlaceholder: "SCAN pattern...",
|
|
18740
|
+
scanSearch: "Search (SCAN)",
|
|
18741
|
+
noKeys: "No keys",
|
|
18742
|
+
loadMore: "Load more...",
|
|
18743
|
+
tabData: "Data",
|
|
18744
|
+
tabInfo: "Info",
|
|
18745
|
+
tabCli: "CLI",
|
|
18746
|
+
selectKey: "Select a key",
|
|
18747
|
+
keyNotExist: "Key does not exist",
|
|
18748
|
+
unsupportedType: "Unsupported type: {{type}}",
|
|
18749
|
+
nItems: "{{total}} items",
|
|
18750
|
+
showingN: "showing {{count}}",
|
|
18751
|
+
nMembers: "{{total}} members",
|
|
18752
|
+
nEntries: "{{total}} entries",
|
|
18753
|
+
cliHint: "Enter Redis commands, e.g. PING, GET key, KEYS *",
|
|
18754
|
+
cliPlaceholder: "Enter command..."
|
|
18755
|
+
},
|
|
18756
|
+
git: {
|
|
18757
|
+
switchBranch: "Switch branch",
|
|
18758
|
+
searchBranch: "Search branches...",
|
|
18759
|
+
noBranches: "No branches available",
|
|
18760
|
+
noMatchingBranches: "No matching branches",
|
|
18761
|
+
localBranches: "Local Branches",
|
|
18762
|
+
remoteBranches: "Remote Branches",
|
|
18763
|
+
branchNotFound: "Branch not found",
|
|
18764
|
+
selectBranch: "Select branch...",
|
|
18765
|
+
currentBranch: "Current",
|
|
18766
|
+
notGitRepo: "Current directory is not a Git repository",
|
|
18767
|
+
cannotGetBranches: "Cannot get branch info",
|
|
18768
|
+
getBranchesFailed: "Failed to get branch info",
|
|
18769
|
+
discardAllConfirm: "Discard changes in {{count}} workspace files? This cannot be undone.",
|
|
18770
|
+
worktree: {
|
|
18771
|
+
title: "Git Worktree",
|
|
18772
|
+
count: "{{count}} worktrees",
|
|
18773
|
+
selectBranch: "Select branch",
|
|
18774
|
+
addWorktree: "+ Add Worktree",
|
|
18775
|
+
confirmDelete: "Confirm Delete",
|
|
18776
|
+
confirmDeleteMsg: "Delete this worktree?",
|
|
18777
|
+
path: "Path:",
|
|
18778
|
+
branch: "Branch:",
|
|
18779
|
+
locked: "Locked",
|
|
18780
|
+
unlock: "Unlock",
|
|
18781
|
+
lock: "Lock",
|
|
18782
|
+
searchBranch: "Search branches...",
|
|
18783
|
+
noBranches: "No available branches"
|
|
18784
|
+
}
|
|
18785
|
+
},
|
|
18786
|
+
comments: {
|
|
18787
|
+
addComment: "Add Comment",
|
|
18788
|
+
lineRange: "Line {{start}}-{{end}}",
|
|
18789
|
+
inputPlaceholder: "Enter comment...",
|
|
18790
|
+
newComment: "New comment {{range}}",
|
|
18791
|
+
commentPlaceholder: "Enter comment... ({{modKey}}Enter to submit, Esc to cancel)",
|
|
18792
|
+
nComments: "{{count}} comments",
|
|
18793
|
+
allComments: "All Comments",
|
|
18794
|
+
copyAllComments: "Copy all comments",
|
|
18795
|
+
noComments: "No comments yet",
|
|
18796
|
+
clearAll: "Clear all",
|
|
18797
|
+
totalComments: "{{count}} comments total",
|
|
18798
|
+
aiReply: "AI Reply",
|
|
18799
|
+
noContent: "(no content)",
|
|
18800
|
+
linesCount: "({{count}} lines)",
|
|
18801
|
+
codeRef: "Here are my annotated comments and references:",
|
|
18802
|
+
note: "Note: {{content}}",
|
|
18803
|
+
submitting: "Submitting...",
|
|
18804
|
+
enterSubmit: "Enter to submit \xB7 Shift+Enter for new line",
|
|
18805
|
+
submitComment: "Submit Comment",
|
|
18806
|
+
askAI: "Ask AI",
|
|
18807
|
+
inputQuestion: "Enter your question...",
|
|
18808
|
+
aiGenerating: "Generating, please wait...",
|
|
18809
|
+
enterSend: "Enter to send \xB7 Shift+Enter for new line",
|
|
18810
|
+
sendToAI: "Send to AI",
|
|
18811
|
+
aiResponding: "AI is responding..."
|
|
18812
|
+
},
|
|
18813
|
+
fileContextMenu: {
|
|
18814
|
+
createFile: "New File",
|
|
18815
|
+
copyFile: "Copy File",
|
|
18816
|
+
copyFolder: "Copy Folder",
|
|
18817
|
+
pasteHere: "Paste Here",
|
|
18818
|
+
deleteFile: "Delete File",
|
|
18819
|
+
deleteFolder: "Delete Folder",
|
|
18820
|
+
copyRelativePath: "Copy Relative Path",
|
|
18821
|
+
copyAbsolutePath: "Copy Absolute Path",
|
|
18822
|
+
copyRelativeDirPath: "Copy Relative Dir Path",
|
|
18823
|
+
copyAbsoluteDirPath: "Copy Absolute Dir Path",
|
|
18824
|
+
copyFileName: "Copy File Name",
|
|
18825
|
+
copyFolderName: "Copy Folder Name"
|
|
18826
|
+
},
|
|
18827
|
+
settings: {
|
|
18828
|
+
title: "Settings",
|
|
18829
|
+
theme: "Theme",
|
|
18830
|
+
themeLight: "Light",
|
|
18831
|
+
themeDark: "Dark",
|
|
18832
|
+
themeSystem: "System",
|
|
18833
|
+
browserExtension: "Browser Extension",
|
|
18834
|
+
extensionInstalled: "Cockpit Bridge installed",
|
|
18835
|
+
extensionNotInstalled: "Cockpit Bridge not installed",
|
|
18836
|
+
extensionDescription: "After installing the Chrome extension, link navigation in iframes will be intercepted: new tab links create new bubbles, page navigation updates the current bubble.",
|
|
18837
|
+
installSteps: "Installation steps:",
|
|
18838
|
+
step1: "1. Open Chrome and navigate to",
|
|
18839
|
+
step2: '2. Enable "Developer mode" in the top-right corner',
|
|
18840
|
+
step3: '3. Click "Load unpacked"',
|
|
18841
|
+
step4mac: "4. Press <kbd>Cmd+Shift+G</kbd> \u2192 paste the path below \u2192 Enter",
|
|
18842
|
+
copyExtensionPath: "Copy extension directory path",
|
|
18843
|
+
reloadExtension: "Reload extension",
|
|
18844
|
+
about: "About",
|
|
18845
|
+
language: "Language",
|
|
18846
|
+
languageAuto: "System",
|
|
18847
|
+
switchDark: "Switch to dark",
|
|
18848
|
+
switchLight: "Switch to light"
|
|
18849
|
+
},
|
|
18850
|
+
editor: {
|
|
18851
|
+
placeholder: "Write something... Type / for commands",
|
|
18852
|
+
noteTitle: "{{name}} - Notes",
|
|
18853
|
+
noteUntitled: "Notes",
|
|
18854
|
+
saving: "Saving...",
|
|
18855
|
+
conflictReloaded: "This note was changed elsewhere. Loaded the latest version; your recent unsaved edits were discarded.",
|
|
18856
|
+
linkPlaceholder: "Enter URL...",
|
|
18857
|
+
confirmLink: "Confirm",
|
|
18858
|
+
removeLink: "Remove link",
|
|
18859
|
+
heading1: "Heading 1",
|
|
18860
|
+
heading2: "Heading 2",
|
|
18861
|
+
heading3: "Heading 3",
|
|
18862
|
+
bold: "Bold",
|
|
18863
|
+
italic: "Italic",
|
|
18864
|
+
strikethrough: "Strikethrough",
|
|
18865
|
+
inlineCode: "Inline code",
|
|
18866
|
+
link: "Link",
|
|
18867
|
+
bulletList: "Bullet list",
|
|
18868
|
+
orderedList: "Ordered list",
|
|
18869
|
+
taskList: "Task list",
|
|
18870
|
+
blockquote: "Blockquote",
|
|
18871
|
+
codeBlock: "Code block",
|
|
18872
|
+
table: "Table",
|
|
18873
|
+
horizontalRule: "Horizontal rule",
|
|
18874
|
+
insertRowAbove: "Insert row above",
|
|
18875
|
+
insertRowBelow: "Insert row below",
|
|
18876
|
+
insertColumnLeft: "Insert column left",
|
|
18877
|
+
insertColumnRight: "Insert column right",
|
|
18878
|
+
deleteRow: "Delete row",
|
|
18879
|
+
deleteColumn: "Delete column",
|
|
18880
|
+
deleteTable: "Delete table",
|
|
18881
|
+
deleteCodeBlock: "Delete code block",
|
|
18882
|
+
toc: "TOC",
|
|
18883
|
+
expandToc: "Expand TOC",
|
|
18884
|
+
collapseToc: "Collapse TOC"
|
|
18885
|
+
},
|
|
18886
|
+
slashCommands: {
|
|
18887
|
+
heading1: "Heading 1",
|
|
18888
|
+
heading1Desc: "Large heading",
|
|
18889
|
+
heading2: "Heading 2",
|
|
18890
|
+
heading2Desc: "Medium heading",
|
|
18891
|
+
heading3: "Heading 3",
|
|
18892
|
+
heading3Desc: "Small heading",
|
|
18893
|
+
bulletList: "Bullet List",
|
|
18894
|
+
bulletListDesc: "Bulleted list",
|
|
18895
|
+
orderedList: "Ordered List",
|
|
18896
|
+
orderedListDesc: "Numbered list",
|
|
18897
|
+
taskList: "Task List",
|
|
18898
|
+
taskListDesc: "Checkable task list",
|
|
18899
|
+
blockquote: "Blockquote",
|
|
18900
|
+
blockquoteDesc: "Quote block",
|
|
18901
|
+
codeBlock: "Code Block",
|
|
18902
|
+
codeBlockDesc: "Code snippet",
|
|
18903
|
+
table: "Table",
|
|
18904
|
+
tableDesc: "Insert 3\xD73 table",
|
|
18905
|
+
horizontalRule: "Divider",
|
|
18906
|
+
horizontalRuleDesc: "Horizontal divider",
|
|
18907
|
+
link: "Link",
|
|
18908
|
+
linkDesc: "Insert hyperlink"
|
|
18909
|
+
},
|
|
18910
|
+
commands: {
|
|
18911
|
+
qa: "Enter requirements clarification mode",
|
|
18912
|
+
fx: "Enter bug evidence-chain analysis mode",
|
|
18913
|
+
ex: "Enter structured analysis & discussion mode",
|
|
18914
|
+
go: "Enter landing mode: MVP staged implementation",
|
|
18915
|
+
cg: "Enter CodeGraph exploration mode",
|
|
18916
|
+
plan: "Enable plan mode \xB7 /plan <task> to plan it \xB7 /plan off to disable"
|
|
18917
|
+
},
|
|
18918
|
+
review: {
|
|
18919
|
+
reviewManagement: "Review Management",
|
|
18920
|
+
allReviews: "All Reviews",
|
|
18921
|
+
noOpenReviews: "No open reviews",
|
|
18922
|
+
viewComments: "View comments",
|
|
18923
|
+
nComments: "{{count}} comments",
|
|
18924
|
+
nDocs: "{{count}} docs",
|
|
18925
|
+
nReviews: "{{count}} reviews",
|
|
18926
|
+
docList: "Document List",
|
|
18927
|
+
allReviewsList: "All Reviews",
|
|
18928
|
+
expandList: "Expand list",
|
|
18929
|
+
collapseList: "Collapse list",
|
|
18930
|
+
closeReview: "Close review",
|
|
18931
|
+
reopenReview: "Reopen",
|
|
18932
|
+
deleteReview: "Delete review",
|
|
18933
|
+
noOpenDocs: "No open documents",
|
|
18934
|
+
noReviews: "No reviews",
|
|
18935
|
+
sharing: "Sharing",
|
|
18936
|
+
notShared: "Not shared",
|
|
18937
|
+
closeSharing: "Disable sharing",
|
|
18938
|
+
enableSharing: "Enable sharing",
|
|
18939
|
+
view: "View",
|
|
18940
|
+
setNickname: "Set your nickname",
|
|
18941
|
+
nicknameHint: "Other reviewers will see this name",
|
|
18942
|
+
nicknamePlaceholder: "Enter nickname",
|
|
18943
|
+
skipForNow: "Skip for now",
|
|
18944
|
+
identitySettings: "Identity Settings",
|
|
18945
|
+
reviewNickname: "Review Nickname",
|
|
18946
|
+
random: "Random",
|
|
18947
|
+
selectTextToComment: "Select text to add comment",
|
|
18948
|
+
selectTextHint: "Select text on the left to add a comment",
|
|
18949
|
+
prevComment: "Previous",
|
|
18950
|
+
nextComment: "Next",
|
|
18951
|
+
commentsCount: "{{count}} comments",
|
|
18952
|
+
commentsNavCount: "{{current}}/{{total}} comments",
|
|
18953
|
+
allCommentsTitle: "All Comments",
|
|
18954
|
+
commentsCountBrief: "{{count}}",
|
|
18955
|
+
closedCount: "{{count}} closed",
|
|
18956
|
+
copyAllComments: "Copy all comments",
|
|
18957
|
+
noComments: "No comments yet",
|
|
18958
|
+
closedComments: "Closed ({{count}})",
|
|
18959
|
+
closedLabel: "Closed",
|
|
18960
|
+
moreReplies: "+{{count}} replies",
|
|
18961
|
+
copyComment: "Copy comment",
|
|
18962
|
+
reopen: "Reopen",
|
|
18963
|
+
closeComment: "Close comment",
|
|
18964
|
+
editComment: "Edit comment",
|
|
18965
|
+
deleteComment: "Delete comment",
|
|
18966
|
+
edited: "(edited)",
|
|
18967
|
+
editReply: "Edit reply",
|
|
18968
|
+
deleteReply: "Delete reply",
|
|
18969
|
+
reply: "Reply",
|
|
18970
|
+
replyPlaceholder: "Add a reply...",
|
|
18971
|
+
selectedText: "Selected text",
|
|
18972
|
+
addCommentPlaceholder: "Add a comment...",
|
|
18973
|
+
enterSubmitHint: "Enter to submit, Shift+Enter for new line",
|
|
18974
|
+
commentBtn: "Comment",
|
|
18975
|
+
reviewNotExist: "Review does not exist or has been deleted",
|
|
18976
|
+
loadFailed: "Load failed",
|
|
18977
|
+
networkError: "Network error",
|
|
18978
|
+
reviewNotFound: "Review not found",
|
|
18979
|
+
checkLink: "Please check the link",
|
|
18980
|
+
updatedAt: "Updated {{date}}",
|
|
18981
|
+
active: "Active",
|
|
18982
|
+
closed: "Closed",
|
|
18983
|
+
viewAllComments: "View all comments",
|
|
18984
|
+
viewCommentBtn: "View Comments",
|
|
18985
|
+
copyLink: "Copy Link",
|
|
18986
|
+
reviewSummary: "Review Comments Summary \u2014 {{title}}",
|
|
18987
|
+
totalNComments: "{{count}} comments total",
|
|
18988
|
+
quoteRef: 'Quote: "{{text}}"',
|
|
18989
|
+
commentAuthor: "Comment ({{author}}): {{content}}",
|
|
18990
|
+
replyAuthor: " \u21B3 {{author}}: {{content}}"
|
|
18991
|
+
},
|
|
18992
|
+
markdown: {
|
|
18993
|
+
copied: "\u2713 Copied",
|
|
18994
|
+
copy: "Copy"
|
|
18995
|
+
},
|
|
18996
|
+
imagePreview: {
|
|
18997
|
+
previewImage: "Preview image",
|
|
18998
|
+
deleteImage: "Delete image"
|
|
18999
|
+
},
|
|
19000
|
+
tokenStats: {
|
|
19001
|
+
title: "Claude Code Token Stats",
|
|
19002
|
+
activeHours: "Active Hours Distribution",
|
|
19003
|
+
hourSessions: "{{h}}:00 \u2014 {{count}} sessions",
|
|
19004
|
+
messages: "Messages",
|
|
19005
|
+
toolCalls: "Tool Calls",
|
|
19006
|
+
activityTrend: "Activity Trend",
|
|
19007
|
+
byModel: "By Model",
|
|
19008
|
+
tokenUsage: "Token Usage",
|
|
19009
|
+
equivalentCost: "Equivalent Cost",
|
|
19010
|
+
modelCostDetail: "Model Cost Details",
|
|
19011
|
+
model: "Model",
|
|
19012
|
+
share: "Share",
|
|
19013
|
+
total: "Total",
|
|
19014
|
+
totalSessions: "Total Sessions",
|
|
19015
|
+
totalMessages: "Total Messages",
|
|
19016
|
+
equivalentApiCost: "Equivalent API Cost",
|
|
19017
|
+
longestSession: "Longest Session",
|
|
19018
|
+
firstUse: "First Use",
|
|
19019
|
+
notFound: "~/.claude/stats-cache.json not found",
|
|
19020
|
+
day: "Day",
|
|
19021
|
+
week: "Week",
|
|
19022
|
+
month: "Month"
|
|
19023
|
+
},
|
|
19024
|
+
toolCall: {
|
|
19025
|
+
inputParams: "Input Parameters",
|
|
19026
|
+
resultLabel: "Result",
|
|
19027
|
+
inputParamsTitle: "View input parameters",
|
|
19028
|
+
resultTitle: "View result",
|
|
19029
|
+
input: "Input",
|
|
19030
|
+
result: "Result",
|
|
19031
|
+
foldedLines: "... ({{count}} lines)"
|
|
19032
|
+
},
|
|
19033
|
+
fileEditor: {
|
|
19034
|
+
unsavedConfirm: "You have unsaved changes. Close anyway?",
|
|
19035
|
+
discardChanges: "Discard changes",
|
|
19036
|
+
continueEditing: "Continue editing",
|
|
19037
|
+
externallyModified: "File was modified externally. Saving will overwrite external changes.",
|
|
19038
|
+
useDiskVersion: "Use disk version",
|
|
19039
|
+
forceOverwrite: "Force overwrite"
|
|
19040
|
+
},
|
|
19041
|
+
quickFileOpen: {
|
|
19042
|
+
placeholder: "Type file name to open...",
|
|
19043
|
+
noMatch: "No matching files",
|
|
19044
|
+
recent: "Recent",
|
|
19045
|
+
selectHint: "Select",
|
|
19046
|
+
openHint: "Open",
|
|
19047
|
+
closeHint: "Close"
|
|
19048
|
+
},
|
|
19049
|
+
envManager: {
|
|
19050
|
+
title: "Environment Variables",
|
|
19051
|
+
tabScope: "Current Tab Only",
|
|
19052
|
+
globalScope: "Global Environment Variables",
|
|
19053
|
+
varNamePlaceholder: "Variable name (e.g. NODE_ENV)",
|
|
19054
|
+
varValuePlaceholder: "Value (e.g. production)",
|
|
19055
|
+
valuePlaceholder: "Value",
|
|
19056
|
+
noVars: "No environment variables yet. Add one to get started."
|
|
19057
|
+
},
|
|
19058
|
+
aliasManager: {
|
|
19059
|
+
title: "Command Aliases",
|
|
19060
|
+
description: "Set shortcut aliases for common commands (global)",
|
|
19061
|
+
aliasPlaceholder: "Alias (e.g. ll)",
|
|
19062
|
+
commandPlaceholder: "Full command (e.g. ls -la)",
|
|
19063
|
+
fullCommandPlaceholder: "Full command",
|
|
19064
|
+
usage: "Usage tip:",
|
|
19065
|
+
usageDesc: "Type an alias to execute the corresponding full command",
|
|
19066
|
+
noAliases: "No command aliases yet. Add one to get started."
|
|
19067
|
+
},
|
|
19068
|
+
diffViewer: {
|
|
19069
|
+
fileChanges: "File Changes ({{count}})",
|
|
19070
|
+
toggleFileTree: "Toggle file tree",
|
|
19071
|
+
selectFileToView: "Select a file to view changes",
|
|
19072
|
+
sideBySide: "Side by side",
|
|
19073
|
+
unified: "Unified",
|
|
19074
|
+
viewSplit: "Split",
|
|
19075
|
+
viewUnified: "Unified",
|
|
19076
|
+
previewFile: "Preview file",
|
|
19077
|
+
copiedAll: "Full text copied",
|
|
19078
|
+
compact: "Compact",
|
|
19079
|
+
full: "Full",
|
|
19080
|
+
gap: {
|
|
19081
|
+
hidden: "{{count}} lines hidden",
|
|
19082
|
+
more: "\xB7\xB7\xB7 more +{{count}} \xB7\xB7\xB7",
|
|
19083
|
+
expandUp: "Expand {{count}} lines up",
|
|
19084
|
+
expandDown: "Expand {{count}} lines down"
|
|
19085
|
+
},
|
|
19086
|
+
loadingSnapshots: "Loading snapshots\u2026",
|
|
19087
|
+
noChanges: "No file changes detected in this turn",
|
|
19088
|
+
notViewable: "Binary or oversized file \u2014 diff not viewable",
|
|
19089
|
+
externalChange: "Concurrent change from another session/process",
|
|
19090
|
+
reconstructed: "reconstructed",
|
|
19091
|
+
reconstructedHint: "Rebuilt from tool-call parameters \u2014 not a disk snapshot",
|
|
19092
|
+
truncated: "Too many files \u2014 list truncated"
|
|
19093
|
+
},
|
|
19094
|
+
commitDetail: {
|
|
19095
|
+
title: "Commit Details",
|
|
19096
|
+
hash: "Hash:",
|
|
19097
|
+
author: "Author:",
|
|
19098
|
+
date: "Date:",
|
|
19099
|
+
files: "Files:",
|
|
19100
|
+
nChanges: "{{count}} changes",
|
|
19101
|
+
loadingFiles: "Loading files...",
|
|
19102
|
+
noFileChanges: "No file changes",
|
|
19103
|
+
loadingDiff: "Loading diff...",
|
|
19104
|
+
selectFileToView: "Select a file to view diff"
|
|
19105
|
+
},
|
|
19106
|
+
askQuestion: {
|
|
19107
|
+
title: "Questions",
|
|
19108
|
+
nQuestions: "{{count}} questions",
|
|
19109
|
+
checkedN: "{{count}} checked",
|
|
19110
|
+
copyChecked: "Copy {{count}} checked Q&A",
|
|
19111
|
+
copyAll: "Copy all Q&A",
|
|
19112
|
+
sendChecked: "Send {{count}} checked Q&A to AI",
|
|
19113
|
+
sendAll: "Send all Q&A to AI",
|
|
19114
|
+
sendNoChat: "No active chat session",
|
|
19115
|
+
checkToCopy: "Check to copy",
|
|
19116
|
+
custom: "Custom",
|
|
19117
|
+
customPlaceholder: "Enter custom answer...",
|
|
19118
|
+
notSelected: "(not selected)"
|
|
19119
|
+
},
|
|
19120
|
+
tabBar: {
|
|
19121
|
+
unpin: "Unpin",
|
|
19122
|
+
pin: "Pin to favorites",
|
|
19123
|
+
closeTab: "Close tab",
|
|
19124
|
+
closeAll: "Close all tabs",
|
|
19125
|
+
newTab: "New tab"
|
|
19126
|
+
},
|
|
19127
|
+
tabManagerTopBar: {
|
|
19128
|
+
copyPageUrl: "Copy page URL",
|
|
19129
|
+
copyDirPath: "Copy directory path",
|
|
19130
|
+
refreshProject: "Refresh project",
|
|
19131
|
+
openInVSCode: "Open in VS Code",
|
|
19132
|
+
openInCursor: "Open in Cursor",
|
|
19133
|
+
aliasesGlobal: "Command Aliases (Global)",
|
|
19134
|
+
tokenStats: "Token Stats",
|
|
19135
|
+
openSurething: "Open Surething"
|
|
19136
|
+
},
|
|
19137
|
+
hoverTooltip: {
|
|
19138
|
+
findReferences: "Find References",
|
|
19139
|
+
search: "Search"
|
|
19140
|
+
},
|
|
19141
|
+
todoViewer: {
|
|
19142
|
+
title: "Task List",
|
|
19143
|
+
progress: "{{completed}} / {{total}} done"
|
|
19144
|
+
},
|
|
19145
|
+
userMessages: {
|
|
19146
|
+
title: "User Messages",
|
|
19147
|
+
noMessages: "No user messages"
|
|
19148
|
+
},
|
|
19149
|
+
shortIdBadge: {
|
|
19150
|
+
clickToDisconnect: "Click to disconnect",
|
|
19151
|
+
clickToRegister: "Click to register and copy CLI command",
|
|
19152
|
+
setTitle: "Name this bubble (so /cc can find it later)",
|
|
19153
|
+
setTitlePlaceholder: "set title",
|
|
19154
|
+
editTitle: "Edit title",
|
|
19155
|
+
titleSet: "Title: {{title}}",
|
|
19156
|
+
dialogTitle: "Name this bubble",
|
|
19157
|
+
dialogPlaceholder: "e.g. alloydb proxy, staging admin"
|
|
19158
|
+
},
|
|
19159
|
+
api: {
|
|
19160
|
+
pathForbidden: "Operation not allowed on this path",
|
|
19161
|
+
deleteForbidden: "Delete not allowed on this path",
|
|
19162
|
+
notAFolder: "Target is not a folder",
|
|
19163
|
+
imageTooLarge: "Image too large to preview",
|
|
19164
|
+
cannotPreviewBinary: "Cannot preview binary file",
|
|
19165
|
+
fileTooLarge: "File too large to preview (over 10MB)",
|
|
19166
|
+
fileModifiedExternally: "File was modified externally",
|
|
19167
|
+
pickFolderPrompt: "Select project folder"
|
|
19168
|
+
},
|
|
19169
|
+
confirm: {
|
|
19170
|
+
title: "Notice",
|
|
19171
|
+
ok: "OK",
|
|
19172
|
+
cancel: "Cancel"
|
|
19173
|
+
},
|
|
19174
|
+
floatingToolbar: {
|
|
19175
|
+
addComment: "Add Comment",
|
|
19176
|
+
sendToAI: "Send to AI",
|
|
19177
|
+
search: "Search"
|
|
19178
|
+
},
|
|
19179
|
+
quickReply: {
|
|
19180
|
+
optionA: "A",
|
|
19181
|
+
optionB: "B",
|
|
19182
|
+
optionC: "C",
|
|
19183
|
+
optionD: "D",
|
|
19184
|
+
allRecommended: "All recommended",
|
|
19185
|
+
thisOne: "This one",
|
|
19186
|
+
notThis: "Not this",
|
|
19187
|
+
why: "Why?",
|
|
19188
|
+
elaborate: "Say more",
|
|
19189
|
+
example: "Give an example",
|
|
19190
|
+
start: "Do it",
|
|
19191
|
+
continue: "Continue",
|
|
19192
|
+
ok: "OK",
|
|
19193
|
+
done: "Done"
|
|
19194
|
+
},
|
|
19195
|
+
searchResults: {
|
|
19196
|
+
title: "Search Results",
|
|
19197
|
+
nMatches: "({{count}} matches)",
|
|
19198
|
+
searching: "Searching...",
|
|
19199
|
+
noResults: "No matches",
|
|
19200
|
+
scopeSelected: "Selected",
|
|
19201
|
+
scopeAll: "All"
|
|
19202
|
+
},
|
|
19203
|
+
references: {
|
|
19204
|
+
title: "References",
|
|
19205
|
+
searching: "Searching...",
|
|
19206
|
+
notFound: "No references found"
|
|
19207
|
+
},
|
|
19208
|
+
gitFileTree: {
|
|
19209
|
+
noFiles: "No files"
|
|
19210
|
+
},
|
|
19211
|
+
explain: {
|
|
19212
|
+
action: "Explain",
|
|
19213
|
+
fileMessage: "Explain {{path}}",
|
|
19214
|
+
symbolMessage: "Explain {{name}} ({{path}}:{{lines}})",
|
|
19215
|
+
selectionMessage: "Explain",
|
|
19216
|
+
commitFileMessage: "Explain what git commit {{hash}} changed in {{path}}",
|
|
19217
|
+
compareFileMessage: "Explain the git changes to {{path}} in {{base}}..HEAD",
|
|
19218
|
+
stagedFileMessage: "Explain the git staged changes to {{path}}",
|
|
19219
|
+
unstagedFileMessage: "Explain the git working tree changes to {{path}}"
|
|
19220
|
+
},
|
|
19221
|
+
reviewUtils: {
|
|
19222
|
+
adjectives: ["Happy", "Brave", "Quiet", "Bright", "Gentle", "Agile", "Free", "Clear", "Flying", "Relaxed", "Lively", "Wise", "Calm", "Alert", "Composed", "Steady", "Cheerful", "Warm", "Bold", "Poised"],
|
|
19223
|
+
nouns: ["Panda", "Dolphin", "Crane", "Snow Leopard", "Skylark", "Squirrel", "Flying Fish", "Deer", "Bluebird", "Silver Fox", "Owl", "Dragonfly", "Firefly", "Sea Turtle", "Butterfly", "Monkey", "Red-crowned Crane", "Antelope", "Swallow", "Penguin"]
|
|
19224
|
+
}
|
|
19225
|
+
};
|
|
19226
|
+
|
|
19227
|
+
// packages/shared/i18n/locales/zh.json
|
|
19228
|
+
var zh_default = {
|
|
19229
|
+
common: {
|
|
19230
|
+
save: "\u4FDD\u5B58",
|
|
19231
|
+
cancel: "\u53D6\u6D88",
|
|
19232
|
+
delete: "\u5220\u9664",
|
|
19233
|
+
close: "\u5173\u95ED",
|
|
19234
|
+
copy: "\u590D\u5236",
|
|
19235
|
+
edit: "\u7F16\u8F91",
|
|
19236
|
+
file: "\u6587\u4EF6",
|
|
19237
|
+
codeMap: "\u4EE3\u7801\u5730\u56FE",
|
|
19238
|
+
diff: "Diff",
|
|
19239
|
+
confirm: "\u786E\u8BA4",
|
|
19240
|
+
loading: "\u52A0\u8F7D\u4E2D...",
|
|
19241
|
+
search: "\u641C\u7D22",
|
|
19242
|
+
refresh: "\u5237\u65B0",
|
|
19243
|
+
retry: "\u91CD\u8BD5",
|
|
19244
|
+
submit: "\u63D0\u4EA4",
|
|
19245
|
+
copied: "\u5DF2\u590D\u5236",
|
|
19246
|
+
saved: "\u5DF2\u4FDD\u5B58",
|
|
19247
|
+
failed: "\u5931\u8D25",
|
|
19248
|
+
noMatch: "\u65E0\u5339\u914D",
|
|
19249
|
+
noData: "\u65E0\u6570\u636E",
|
|
19250
|
+
done: "\u5B8C\u6210",
|
|
19251
|
+
justNow: "\u521A\u521A",
|
|
19252
|
+
minutesAgo: "{{count}}\u5206\u949F\u524D",
|
|
19253
|
+
hoursAgo: "{{count}}\u5C0F\u65F6\u524D",
|
|
19254
|
+
daysAgo: "{{count}}\u5929\u524D",
|
|
19255
|
+
monthsAgo: "{{count}}\u4E2A\u6708\u524D",
|
|
19256
|
+
yearsAgo: "{{count}}\u5E74\u524D",
|
|
19257
|
+
saveFailed: "\u4FDD\u5B58\u5931\u8D25",
|
|
19258
|
+
copyFailed: "\u590D\u5236\u5931\u8D25",
|
|
19259
|
+
deleteFailed: "\u5220\u9664\u5931\u8D25",
|
|
19260
|
+
operationFailed: "\u64CD\u4F5C\u5931\u8D25",
|
|
19261
|
+
copiedPath: "\u5DF2\u590D\u5236\u8DEF\u5F84",
|
|
19262
|
+
copyPath: "\u590D\u5236\u8DEF\u5F84",
|
|
19263
|
+
openInConsole: "\u5728 Console \u6C14\u6CE1\u6253\u5F00",
|
|
19264
|
+
copyAbsPath: "\u590D\u5236\u7EDD\u5BF9\u8DEF\u5F84",
|
|
19265
|
+
loadMore: "\u52A0\u8F7D\u66F4\u591A",
|
|
19266
|
+
noResult: "\u65E0\u5339\u914D\u7ED3\u679C",
|
|
19267
|
+
selected: "\u5DF2\u9009\u62E9",
|
|
19268
|
+
selectAll: "\u5168\u9009",
|
|
19269
|
+
hint: "\u63D0\u793A",
|
|
19270
|
+
confirmBtn: "\u786E\u5B9A",
|
|
19271
|
+
cancelBtn: "\u53D6\u6D88",
|
|
19272
|
+
preview: "\u9884\u89C8",
|
|
19273
|
+
readable: "\u53EF\u8BFB",
|
|
19274
|
+
previous: "\u4E0A\u4E00\u4E2A",
|
|
19275
|
+
next: "\u4E0B\u4E00\u4E2A",
|
|
19276
|
+
all: "\u5168\u90E8",
|
|
19277
|
+
input: "\u8F93\u5165",
|
|
19278
|
+
result: "\u7ED3\u679C",
|
|
19279
|
+
line: "\u884C",
|
|
19280
|
+
lines: "\u884C",
|
|
19281
|
+
running: "\u8FD0\u884C\u4E2D",
|
|
19282
|
+
connecting: "\u8FDE\u63A5\u4E2D",
|
|
19283
|
+
connected: "\u5DF2\u8FDE\u63A5",
|
|
19284
|
+
connectionFailed: "\u8FDE\u63A5\u5931\u8D25",
|
|
19285
|
+
builtin: "\u5185\u7F6E",
|
|
19286
|
+
global: "\u5168\u5C40",
|
|
19287
|
+
project: "\u9879\u76EE",
|
|
19288
|
+
current: "\u5F53\u524D"
|
|
19289
|
+
},
|
|
19290
|
+
htmlApps: {
|
|
19291
|
+
addTooltip: "\u6DFB\u52A0\u5230 HTML \u9762\u677F",
|
|
19292
|
+
added: "\u5DF2\u6DFB\u52A0\u5230 HTML \u9762\u677F",
|
|
19293
|
+
alreadyAdded: "\u5DF2\u6DFB\u52A0\u8FC7",
|
|
19294
|
+
addFailed: "\u6DFB\u52A0\u5931\u8D25"
|
|
19295
|
+
},
|
|
19296
|
+
skills: {
|
|
19297
|
+
addTooltip: "\u6DFB\u52A0\u5230 Skills \u9762\u677F",
|
|
19298
|
+
added: "\u5DF2\u6DFB\u52A0\u5230 Skills \u9762\u677F",
|
|
19299
|
+
alreadyAdded: "\u5DF2\u6DFB\u52A0\u8FC7",
|
|
19300
|
+
addFailed: "\u6DFB\u52A0\u5931\u8D25",
|
|
19301
|
+
title: "Skills",
|
|
19302
|
+
searchPlaceholder: "\u641C\u7D22 skills...",
|
|
19303
|
+
clearSearch: "\u6E05\u9664",
|
|
19304
|
+
addSkill: "\u6DFB\u52A0 Skill",
|
|
19305
|
+
emptyNoSkills: "\u8FD8\u6CA1\u6709 skill\uFF0C\u70B9\u51FB\u300C\u6DFB\u52A0 Skill\u300D\u6DFB\u52A0\u4E00\u4E2A\u3002",
|
|
19306
|
+
emptyNoMatch: "\u6CA1\u6709\u5339\u914D\u7684 skill\u3002",
|
|
19307
|
+
pathLabel: "SKILL.md \u7684\u7EDD\u5BF9\u8DEF\u5F84",
|
|
19308
|
+
pathPlaceholder: "/Users/you/.../skills/foo/SKILL.md",
|
|
19309
|
+
add: "\u6DFB\u52A0",
|
|
19310
|
+
adding: "\u6DFB\u52A0\u4E2D...",
|
|
19311
|
+
invalid: "\u65E0\u6548",
|
|
19312
|
+
copyPath: "\u590D\u5236\u8DEF\u5F84",
|
|
19313
|
+
noDescription: "\u65E0\u63CF\u8FF0",
|
|
19314
|
+
previewTitle: "Skill \u9884\u89C8",
|
|
19315
|
+
source: "\u6E90\u7801",
|
|
19316
|
+
cannotRead: "\u65E0\u6CD5\u8BFB\u53D6\u6587\u4EF6\u3002"
|
|
19317
|
+
},
|
|
19318
|
+
toast: {
|
|
19319
|
+
savedSuccess: "\u5DF2\u4FDD\u5B58",
|
|
19320
|
+
saveFailed: "\u4FDD\u5B58\u5931\u8D25",
|
|
19321
|
+
copiedName: "\u5DF2\u590D\u5236: {{name}}",
|
|
19322
|
+
copyFailed: "\u590D\u5236\u5931\u8D25",
|
|
19323
|
+
deleteFailed: "\u5220\u9664\u5931\u8D25",
|
|
19324
|
+
operationFailed: "\u64CD\u4F5C\u5931\u8D25",
|
|
19325
|
+
staged: "\u5DF2\u6682\u5B58",
|
|
19326
|
+
stageFailed: "\u6682\u5B58\u5931\u8D25",
|
|
19327
|
+
unstaged: "\u5DF2\u53D6\u6D88\u6682\u5B58",
|
|
19328
|
+
unstageFailed: "\u53D6\u6D88\u6682\u5B58\u5931\u8D25",
|
|
19329
|
+
stagedNFiles: "\u5DF2\u6682\u5B58 {{count}} \u4E2A\u6587\u4EF6",
|
|
19330
|
+
unstagedNFiles: "\u5DF2\u53D6\u6D88\u6682\u5B58 {{count}} \u4E2A\u6587\u4EF6",
|
|
19331
|
+
discardFailed: "\u653E\u5F03\u53D8\u66F4\u5931\u8D25",
|
|
19332
|
+
discardedNFiles: "\u5DF2\u653E\u5F03 {{count}} \u4E2A\u6587\u4EF6\u7684\u53D8\u66F4",
|
|
19333
|
+
stagedAllFiles: "\u5DF2\u6682\u5B58\u6240\u6709\u6587\u4EF6",
|
|
19334
|
+
deletedFile: "\u5DF2\u5220\u9664\u6587\u4EF6",
|
|
19335
|
+
discardedChanges: "\u5DF2\u653E\u5F03\u53D8\u66F4",
|
|
19336
|
+
pastedFile: "\u5DF2\u7C98\u8D34: {{name}}",
|
|
19337
|
+
pasteFailed: "\u7C98\u8D34\u5931\u8D25",
|
|
19338
|
+
noFileToPaste: "\u6CA1\u6709\u53EF\u7C98\u8D34\u7684\u6587\u4EF6",
|
|
19339
|
+
createdFile: "\u5DF2\u521B\u5EFA\u6587\u4EF6: {{name}}",
|
|
19340
|
+
createFailed: "\u521B\u5EFA\u5931\u8D25",
|
|
19341
|
+
movedToTrash: "\u5DF2\u79FB\u52A8\u5230\u56DE\u6536\u7AD9: {{name}}",
|
|
19342
|
+
copiedPageUrl: "\u5DF2\u590D\u5236\u9875\u9762\u5730\u5740",
|
|
19343
|
+
copiedDirPath: "\u5DF2\u590D\u5236\u76EE\u5F55\u8DEF\u5F84",
|
|
19344
|
+
switchedToBranch: "\u5DF2\u5207\u6362\u5230 {{branch}}",
|
|
19345
|
+
switchBranchFailed: "\u5207\u6362\u5206\u652F\u5931\u8D25",
|
|
19346
|
+
loadBranchFailed: "\u52A0\u8F7D\u5206\u652F\u5217\u8868\u5931\u8D25",
|
|
19347
|
+
copiedCommand: "\u5DF2\u590D\u5236: {{command}}",
|
|
19348
|
+
copiedMessage: "\u5DF2\u590D\u5236\u6D88\u606F",
|
|
19349
|
+
copiedUrl: "\u5DF2\u590D\u5236\u7F51\u5740",
|
|
19350
|
+
copiedOutput: "\u5DF2\u590D\u5236\u8F93\u51FA",
|
|
19351
|
+
copiedCmd: "\u5DF2\u590D\u5236\u547D\u4EE4",
|
|
19352
|
+
copiedComment: "\u5DF2\u590D\u5236\u8BC4\u8BBA",
|
|
19353
|
+
copiedAllComments: "\u5DF2\u590D\u5236\u5168\u90E8\u8BC4\u8BBA",
|
|
19354
|
+
copiedFileContent: "\u5DF2\u590D\u5236\u6587\u4EF6\u5185\u5BB9",
|
|
19355
|
+
copiedQA: "\u5DF2\u590D\u5236 {{count}} \u4E2A\u95EE\u7B54",
|
|
19356
|
+
copiedAllQA: "\u5DF2\u590D\u5236\u6240\u6709\u95EE\u7B54",
|
|
19357
|
+
sentQA: "\u5DF2\u53D1\u9001\u7ED9 AI",
|
|
19358
|
+
readFileFailed: "\u8BFB\u53D6\u6587\u4EF6\u5931\u8D25",
|
|
19359
|
+
reviewCreated: "\u8BC4\u5BA1\u5DF2\u521B\u5EFA\uFF0C\u94FE\u63A5\u5DF2\u590D\u5236",
|
|
19360
|
+
reviewUpdated: "\u8BC4\u5BA1\u5DF2\u66F4\u65B0\uFF0C\u94FE\u63A5\u5DF2\u590D\u5236",
|
|
19361
|
+
reviewCreateFailed: "\u521B\u5EFA\u8BC4\u5BA1\u5931\u8D25",
|
|
19362
|
+
sharingClosed: "\u5DF2\u5173\u95ED\u5206\u4EAB",
|
|
19363
|
+
sharingCloseFailed: "\u5173\u95ED\u5206\u4EAB\u5931\u8D25",
|
|
19364
|
+
linkCopied: "\u94FE\u63A5\u5DF2\u590D\u5236",
|
|
19365
|
+
addCommentFailed: "\u6DFB\u52A0\u8BC4\u8BBA\u5931\u8D25",
|
|
19366
|
+
deleteCommentFailed: "\u5220\u9664\u8BC4\u8BBA\u5931\u8D25",
|
|
19367
|
+
editCommentFailed: "\u7F16\u8F91\u8BC4\u8BBA\u5931\u8D25",
|
|
19368
|
+
addReplyFailed: "\u6DFB\u52A0\u56DE\u590D\u5931\u8D25",
|
|
19369
|
+
deleteReplyFailed: "\u5220\u9664\u56DE\u590D\u5931\u8D25",
|
|
19370
|
+
editReplyFailed: "\u7F16\u8F91\u56DE\u590D\u5931\u8D25",
|
|
19371
|
+
disconnected: "\u5DF2\u65AD\u5F00: {{id}}",
|
|
19372
|
+
pluginReloading: "\u63D2\u4EF6\u91CD\u8F7D\u4E2D...",
|
|
19373
|
+
worktreeCreateSuccess: "Worktree \u521B\u5EFA\u6210\u529F: {{name}}",
|
|
19374
|
+
worktreeCreateFailed: "\u521B\u5EFA worktree \u5931\u8D25",
|
|
19375
|
+
worktreeLoadFailed: "\u52A0\u8F7D worktree \u5217\u8868\u5931\u8D25",
|
|
19376
|
+
worktreeDeleted: "Worktree \u5DF2\u5220\u9664",
|
|
19377
|
+
worktreeDeleteFailed: "\u5220\u9664 worktree \u5931\u8D25",
|
|
19378
|
+
worktreeLocked: "\u5DF2\u9501\u5B9A",
|
|
19379
|
+
worktreeUnlocked: "\u5DF2\u89E3\u9501"
|
|
19380
|
+
},
|
|
19381
|
+
workspace: {
|
|
19382
|
+
selectProject: "\u9009\u62E9\u4E00\u4E2A\u9879\u76EE\u5F00\u59CB",
|
|
19383
|
+
searchProjectPath: "\u641C\u7D22\u9879\u76EE\u8DEF\u5F84...",
|
|
19384
|
+
loadingProjects: "\u52A0\u8F7D\u9879\u76EE\u4E2D...",
|
|
19385
|
+
projectNotFound: "\u672A\u627E\u5230\u9879\u76EE",
|
|
19386
|
+
sessions: "{{count}} \u4F1A\u8BDD",
|
|
19387
|
+
loadingSessions: "\u52A0\u8F7D\u4F1A\u8BDD...",
|
|
19388
|
+
noSessions: "\u65E0\u4F1A\u8BDD\u8BB0\u5F55",
|
|
19389
|
+
loadingText: "\u52A0\u8F7D\u4E2D...",
|
|
19390
|
+
openProject: "\u6253\u5F00\u9879\u76EE",
|
|
19391
|
+
expandSidebar: "\u5C55\u5F00\u4FA7\u8FB9\u680F",
|
|
19392
|
+
collapseSidebar: "\u6298\u53E0\u4FA7\u8FB9\u680F",
|
|
19393
|
+
notes: "\u7B14\u8BB0",
|
|
19394
|
+
skills: "\u6280\u80FD",
|
|
19395
|
+
settings: "\u8BBE\u7F6E",
|
|
19396
|
+
help: "\u5E2E\u52A9",
|
|
19397
|
+
updateAvailable: "\u65B0\u7248\u672C v{{version}} \u53EF\u7528",
|
|
19398
|
+
copyUpgradeCommand: "\u590D\u5236 cockpit update",
|
|
19399
|
+
viewChangelog: "\u67E5\u770B\u53D8\u66F4\u65E5\u5FD7",
|
|
19400
|
+
upgradeCommandCopied: "\u5DF2\u590D\u5236 `cockpit update`",
|
|
19401
|
+
projectNotes: "\u9879\u76EE\u7B14\u8BB0",
|
|
19402
|
+
closeProject: "\u5173\u95ED\u9879\u76EE"
|
|
19403
|
+
},
|
|
19404
|
+
mobile: {
|
|
19405
|
+
useDesktop: "\u684C\u9762\u7248",
|
|
19406
|
+
messagePlaceholder: "\u53D1\u6D88\u606F\u2026",
|
|
19407
|
+
send: "\u53D1\u9001",
|
|
19408
|
+
stop: "\u505C\u6B62",
|
|
19409
|
+
enableNotifications: "\u5F00\u542F\u901A\u77E5",
|
|
19410
|
+
disableNotifications: "\u5173\u95ED\u901A\u77E5",
|
|
19411
|
+
notifyError: "\u65E0\u6CD5\u5F00\u542F\u901A\u77E5"
|
|
19412
|
+
},
|
|
19413
|
+
sessions: {
|
|
19414
|
+
recentSessions: "\u6700\u8FD1\u4F1A\u8BDD",
|
|
19415
|
+
runningCount: "{{count}} \u8FD0\u884C\u4E2D",
|
|
19416
|
+
unreadCount: "{{count}} \u672A\u8BFB",
|
|
19417
|
+
noSessions: "\u6682\u65E0\u4F1A\u8BDD\u8BB0\u5F55",
|
|
19418
|
+
running: "\u8FD0\u884C\u4E2D",
|
|
19419
|
+
done: "\u5B8C\u6210",
|
|
19420
|
+
pinnedSessions: "\u5E38\u7528\u4F1A\u8BDD",
|
|
19421
|
+
noPinnedSessions: "\u6682\u65E0\u5E38\u7528\u4F1A\u8BDD\uFF0C\u5728 Tab \u680F\u70B9\u51FB\u56FE\u9489\u53EF\u6DFB\u52A0",
|
|
19422
|
+
editTitle: "\u7F16\u8F91\u6807\u9898",
|
|
19423
|
+
remove: "\u79FB\u9664",
|
|
19424
|
+
projectSessions: "\u9879\u76EE\u4F1A\u8BDD",
|
|
19425
|
+
browseAllSessions: "\u6D4F\u89C8\u6240\u6709\u4F1A\u8BDD",
|
|
19426
|
+
sessionList: "\u4F1A\u8BDD\u5217\u8868",
|
|
19427
|
+
searchSessions: "\u641C\u7D22\u4F1A\u8BDD...",
|
|
19428
|
+
searchRecentSessions: "\u641C\u7D22\u6700\u8FD1\u4F1A\u8BDD",
|
|
19429
|
+
loadSessionsFailed: "\u52A0\u8F7D\u4F1A\u8BDD\u5931\u8D25",
|
|
19430
|
+
loadingSessions: "\u52A0\u8F7D\u4F1A\u8BDD\u4E2D...",
|
|
19431
|
+
noMatchingSessions: "\u672A\u627E\u5230\u5339\u914D\u7684\u4F1A\u8BDD",
|
|
19432
|
+
noSessionsYet: "\u6682\u65E0\u4F1A\u8BDD",
|
|
19433
|
+
projectList: "\u9879\u76EE\u5217\u8868",
|
|
19434
|
+
openFolder: "\u6253\u5F00\u6587\u4EF6\u5939",
|
|
19435
|
+
selectingFolder: "\u9009\u62E9\u4E2D...",
|
|
19436
|
+
loadingHistory: "\u52A0\u8F7D\u5386\u53F2\u6D88\u606F..."
|
|
19437
|
+
},
|
|
19438
|
+
scheduledTasks: {
|
|
19439
|
+
title: "\u5B9A\u65F6\u4EFB\u52A1",
|
|
19440
|
+
aboutToTrigger: "\u5373\u5C06\u89E6\u53D1",
|
|
19441
|
+
secondsLater: "{{count}}\u79D2\u540E",
|
|
19442
|
+
minutesLater: "{{count}}\u5206\u949F\u540E",
|
|
19443
|
+
hoursMinutesLater: "{{h}}\u5C0F\u65F6{{m}}\u5206\u540E",
|
|
19444
|
+
hoursLater: "{{h}}\u5C0F\u65F6\u540E",
|
|
19445
|
+
onceType: "\u4E00\u6B21\u6027 ({{minutes}}\u5206\u949F)",
|
|
19446
|
+
everyNMinutes: "\u6BCF{{minutes}}\u5206\u949F",
|
|
19447
|
+
completed: "\u5DF2\u5B8C\u6210",
|
|
19448
|
+
paused: "\u5DF2\u6682\u505C",
|
|
19449
|
+
activeCount: "{{running}} \u4E2A\u6D3B\u8DC3",
|
|
19450
|
+
pausedCount: "{{paused}} \u4E2A\u6682\u505C",
|
|
19451
|
+
noScheduledTasks: "\u6682\u65E0\u5B9A\u65F6\u4EFB\u52A1\uFF0C\u5728\u804A\u5929\u8F93\u5165\u680F\u70B9\u51FB\u65F6\u949F\u6309\u94AE\u521B\u5EFA",
|
|
19452
|
+
lastResult: "\u4E0A\u6B21",
|
|
19453
|
+
runNow: "\u7ACB\u5373\u8FD0\u884C",
|
|
19454
|
+
resume: "\u6062\u590D",
|
|
19455
|
+
pause: "\u6682\u505C",
|
|
19456
|
+
completedCount: "\u5DF2\u5B8C\u6210 ({{count}})",
|
|
19457
|
+
success: "\u6210\u529F",
|
|
19458
|
+
failure: "\u5931\u8D25",
|
|
19459
|
+
createTask: "\u521B\u5EFA\u5B9A\u65F6\u4EFB\u52A1",
|
|
19460
|
+
editTask: "\u7F16\u8F91\u5B9A\u65F6\u4EFB\u52A1",
|
|
19461
|
+
sendMessage: "\u53D1\u9001\u6D88\u606F",
|
|
19462
|
+
messagePlaceholder: "\u8F93\u5165\u8981\u53D1\u9001\u7684\u6D88\u606F...",
|
|
19463
|
+
taskFile: "\u4EFB\u52A1\u6587\u4EF6",
|
|
19464
|
+
taskFilePlaceholder: "/Users/you/project/tasks/daily-report.md",
|
|
19465
|
+
taskFileHint: "\u586B\u5199\u7EDD\u5BF9\u8DEF\u5F84\u3002\u89E6\u53D1\u65F6\u4F1A\u8BA9 agent \u5148\u8BFB\u53D6\u8BE5\u6587\u4EF6\uFF0C\u518D\u6309\u5176\u4E2D\u63CF\u8FF0\u6267\u884C\u2014\u2014\u6587\u4EF6\u5185\u5BB9\u6539\u52A8\u4E0B\u6B21\u89E6\u53D1\u5373\u751F\u6548\u3002",
|
|
19466
|
+
taskFilePromptHeader: "\u8BF7\u5148\u8BFB\u53D6\u4EE5\u4E0B\u4EFB\u52A1\u6587\u4EF6\uFF0C\u518D\u636E\u6B64\u6267\u884C\uFF1A",
|
|
19467
|
+
type: "\u7C7B\u578B",
|
|
19468
|
+
once: "\u4E00\u6B21\u6027",
|
|
19469
|
+
interval: "\u5468\u671F",
|
|
19470
|
+
quickSelect: "\u5FEB\u6377\u9009\u62E9",
|
|
19471
|
+
customCron: "\u81EA\u5B9A\u4E49 Cron \u8868\u8FBE\u5F0F",
|
|
19472
|
+
customMinutes: "\u81EA\u5B9A\u4E49\u5206\u949F\u6570",
|
|
19473
|
+
cronPlaceholder: "\u4F8B: 0 9 * * 1-5 (\u5DE5\u4F5C\u65E59\u70B9)",
|
|
19474
|
+
cronFormat: "\u683C\u5F0F\uFF1A\u5206 \u65F6 \u65E5 \u6708 \u661F\u671F\uFF08\u5982 0 9 * * 1-5\uFF09",
|
|
19475
|
+
minutesPlaceholder: "\u5206\u949F\u6570",
|
|
19476
|
+
limitTimeRange: "\u9650\u5236\u6267\u884C\u65F6\u6BB5",
|
|
19477
|
+
to: "\u81F3",
|
|
19478
|
+
saveBtn: "\u4FDD\u5B58 ({{modKey}}\u21A9)",
|
|
19479
|
+
createBtn: "\u521B\u5EFA ({{modKey}}\u21A9)",
|
|
19480
|
+
"5minLater": "5 \u5206\u949F\u540E",
|
|
19481
|
+
"15minLater": "15 \u5206\u949F\u540E",
|
|
19482
|
+
"30minLater": "30 \u5206\u949F\u540E",
|
|
19483
|
+
"1hourLater": "1 \u5C0F\u65F6\u540E",
|
|
19484
|
+
every15min: "\u6BCF 15 \u5206\u949F",
|
|
19485
|
+
every30min: "\u6BCF 30 \u5206\u949F",
|
|
19486
|
+
every1hour: "\u6BCF 1 \u5C0F\u65F6",
|
|
19487
|
+
every2hours: "\u6BCF 2 \u5C0F\u65F6",
|
|
19488
|
+
daily9am: "\u6BCF\u5929 09:00",
|
|
19489
|
+
daily6pm: "\u6BCF\u5929 18:00",
|
|
19490
|
+
weeklyMon9am: "\u6BCF\u5468\u4E00 09:00",
|
|
19491
|
+
monthly1st9am: "\u6BCF\u6708 1 \u53F7 09:00"
|
|
19492
|
+
},
|
|
19493
|
+
cron: {
|
|
19494
|
+
everyNMinutes: "\u6BCF {{n}} \u5206\u949F",
|
|
19495
|
+
everyNHours: "\u6BCF {{n}} \u5C0F\u65F6\u6574\u70B9",
|
|
19496
|
+
everyMinute: "\u6BCF\u5206\u949F",
|
|
19497
|
+
everyHourAtMin: "\u6BCF\u5C0F\u65F6\u7B2C {{m}} \u5206",
|
|
19498
|
+
hourlyEveryMin: "{{h}} \u70B9\u6BCF\u5206\u949F",
|
|
19499
|
+
daily: "\u6BCF\u5929 {{time}}",
|
|
19500
|
+
weekdays: "\u5DE5\u4F5C\u65E5",
|
|
19501
|
+
weekends: "\u5468\u672B",
|
|
19502
|
+
dowSun: "\u65E5",
|
|
19503
|
+
dowMon: "\u4E00",
|
|
19504
|
+
dowTue: "\u4E8C",
|
|
19505
|
+
dowWed: "\u4E09",
|
|
19506
|
+
dowThu: "\u56DB",
|
|
19507
|
+
dowFri: "\u4E94",
|
|
19508
|
+
dowSat: "\u516D",
|
|
19509
|
+
monthPrefix: "\u6708",
|
|
19510
|
+
dayOfMonth: "\u53F7",
|
|
19511
|
+
dayRange: "{{a}}\u53F7\u5230{{b}}\u53F7",
|
|
19512
|
+
weekdayPrefix: "\u5468",
|
|
19513
|
+
weekdayRange: "\u5468{{a}}\u5230\u5468{{b}}"
|
|
19514
|
+
},
|
|
19515
|
+
blockViewer: {
|
|
19516
|
+
empty: {
|
|
19517
|
+
body: "\u5728\u5DE6\u4FA7\u6587\u4EF6\u6811\u9009\u62E9\u4E00\u4E2A\u6587\u4EF6\uFF0C\u67E5\u770B\u5B83\u7684\u4EE3\u7801\u5730\u56FE\u3002",
|
|
19518
|
+
hint: "\u6216\u6309 \u2318K \u641C\u7D22\u3002"
|
|
19519
|
+
},
|
|
19520
|
+
fileMode: {
|
|
19521
|
+
loading: "\u52A0\u8F7D\u4E2D\u2026",
|
|
19522
|
+
notFound: "\u8BE5\u6587\u4EF6\u672A\u7D22\u5F15\uFF08\u4E0D\u652F\u6301\u7684\u8BED\u8A00\u6216\u8D85\u51FA\u6587\u4EF6\u4E0A\u9650\uFF09\u3002"
|
|
19523
|
+
},
|
|
19524
|
+
search: {
|
|
19525
|
+
tooltip: "\u641C\u7D22 (\u2318K)",
|
|
19526
|
+
hint: "\u5F00\u59CB\u8F93\u5165\u4EE5\u641C\u7D22",
|
|
19527
|
+
noResults: "\u672A\u627E\u5230\u5339\u914D",
|
|
19528
|
+
files: "\u6587\u4EF6",
|
|
19529
|
+
symbols: "\u7B26\u53F7"
|
|
19530
|
+
},
|
|
19531
|
+
viewerToggle: {
|
|
19532
|
+
toBlock: "\u663E\u793A\u4EE3\u7801\u5730\u56FE",
|
|
19533
|
+
toCode: "\u8FD4\u56DE\u4EE3\u7801\u89C6\u56FE"
|
|
19534
|
+
},
|
|
19535
|
+
toc: {
|
|
19536
|
+
title: "\u672C\u6587\u4EF6",
|
|
19537
|
+
empty: "\u672A\u68C0\u6D4B\u5230\u51FD\u6570\u3002",
|
|
19538
|
+
notIndexed: "\u8BE5\u6587\u4EF6\u672A\u88AB\u9879\u76EE\u56FE\u6536\u5F55\uFF08\u6269\u5C55\u672A\u652F\u6301 / \u4E0D\u5728 git \u8DDF\u8E2A\u96C6 / \u8D85\u51FA\u6587\u4EF6\u4E0A\u9650\uFF09\u3002"
|
|
19539
|
+
},
|
|
19540
|
+
history: {
|
|
19541
|
+
title: "\u5386\u53F2",
|
|
19542
|
+
empty: "\u70B9\u51FB\u5DE6\u53F3\u4E24\u4FA7\u7684 pin \u5F00\u59CB\u8FFD\u8E2A\u8C03\u7528\u94FE\u3002",
|
|
19543
|
+
clear: "\u6E05\u7A7A\u5386\u53F2"
|
|
19544
|
+
},
|
|
19545
|
+
refresh: "\u91CD\u65B0\u6784\u5EFA\u9879\u76EE\u56FE",
|
|
19546
|
+
retry: "\u91CD\u8BD5"
|
|
19547
|
+
},
|
|
19548
|
+
blockDiffViewer: {
|
|
19549
|
+
loading: "\u6B63\u5728\u751F\u6210\u4EE3\u7801\u5730\u56FE\u2026",
|
|
19550
|
+
unsupported: "\u8BE5\u6587\u4EF6\u7C7B\u578B\u6682\u4E0D\u652F\u6301\u4EE3\u7801\u5730\u56FE diff",
|
|
19551
|
+
unsupportedHint: "\u5207\u56DE\u5E38\u89C4 diff \u89C6\u56FE\u67E5\u770B\u3002",
|
|
19552
|
+
error: "\u4EE3\u7801\u5730\u56FE diff \u5931\u8D25\uFF1A{{message}}",
|
|
19553
|
+
noBlockChanges: "\u4EE3\u7801\u5730\u56FE\u65E0\u53D8\u5316\uFF08\u4EC5\u683C\u5F0F\u6216\u7A7A\u767D\uFF09\u3002",
|
|
19554
|
+
noBefore: "\uFF08\u65B0\u589E\uFF09",
|
|
19555
|
+
noAfter: "\uFF08\u5DF2\u5220\u9664\uFF09",
|
|
19556
|
+
kind: {
|
|
19557
|
+
added: "\u65B0\u589E",
|
|
19558
|
+
deleted: "\u5220\u9664",
|
|
19559
|
+
modified: "\u4FEE\u6539"
|
|
19560
|
+
}
|
|
19561
|
+
},
|
|
19562
|
+
fileBrowser: {
|
|
19563
|
+
directoryTree: "\u76EE\u5F55\u6811",
|
|
19564
|
+
searchTab: "\u641C\u7D22",
|
|
19565
|
+
recentTab: "\u6700\u8FD1",
|
|
19566
|
+
changesTab: "\u53D8\u66F4",
|
|
19567
|
+
historyTab: "\u5386\u53F2",
|
|
19568
|
+
searchFiles: "\u641C\u7D22\u6587\u4EF6...",
|
|
19569
|
+
clear: "\u6E05\u9664",
|
|
19570
|
+
exactMatchOn: "\u5168\u8BCD\u5339\u914D\uFF08\u5DF2\u5F00\u542F\uFF09",
|
|
19571
|
+
exactMatchOff: "\u5168\u8BCD\u5339\u914D\uFF08\u5DF2\u5173\u95ED\uFF09",
|
|
19572
|
+
refreshTree: "\u5237\u65B0\u76EE\u5F55\u6811",
|
|
19573
|
+
collapseAll: "\u6298\u53E0\u6240\u6709\u76EE\u5F55",
|
|
19574
|
+
searchFileContent: "\u641C\u7D22\u6587\u4EF6\u5185\u5BB9...",
|
|
19575
|
+
caseSensitive: "\u533A\u5206\u5927\u5C0F\u5199",
|
|
19576
|
+
wholeWord: "\u5B8C\u6574\u8BCD",
|
|
19577
|
+
regex: "\u6B63\u5219",
|
|
19578
|
+
fileTypes: "\u6587\u4EF6\u7C7B\u578B (ts,tsx)",
|
|
19579
|
+
compareMode: "\u5BF9\u6BD4",
|
|
19580
|
+
compareModeOff: "\u5173\u95ED\u5206\u652F\u5BF9\u6BD4",
|
|
19581
|
+
compareModeOn: "\u4E0E\u9009\u5B9A\u5206\u652F\u5BF9\u6BD4",
|
|
19582
|
+
createFile: "\u65B0\u5EFA\u6587\u4EF6",
|
|
19583
|
+
createFileIn: "\u65B0\u5EFA\u6587\u4EF6 (\u5728 {{path}}/)",
|
|
19584
|
+
fileName: "\u6587\u4EF6\u540D...",
|
|
19585
|
+
noRecentFiles: "\u6682\u65E0\u6700\u8FD1\u6D4F\u89C8\u7684\u6587\u4EF6",
|
|
19586
|
+
stagingArea: "\u6682\u5B58\u533A ({{count}})",
|
|
19587
|
+
changesSummary_one: "{{count}} \u4E2A\u53D8\u66F4",
|
|
19588
|
+
changesSummary_other: "{{count}} \u4E2A\u53D8\u66F4",
|
|
19589
|
+
noChanges: "\u5DE5\u4F5C\u533A\u65E0\u53D8\u66F4",
|
|
19590
|
+
refreshChanges: "\u5237\u65B0\u53D8\u66F4\u5217\u8868",
|
|
19591
|
+
unstageAll: "\u5168\u90E8\u53D6\u6D88",
|
|
19592
|
+
noStagedFiles: "\u65E0\u6682\u5B58\u7684\u6587\u4EF6",
|
|
19593
|
+
unstageNFiles: "\u53D6\u6D88\u6682\u5B58 {{count}} \u4E2A\u6587\u4EF6",
|
|
19594
|
+
unstageFile: "\u53D6\u6D88\u6682\u5B58",
|
|
19595
|
+
workspace: "\u5DE5\u4F5C\u533A ({{count}})",
|
|
19596
|
+
discardAll: "\u653E\u5F03\u6240\u6709",
|
|
19597
|
+
stageAll: "\u5168\u90E8\u6682\u5B58",
|
|
19598
|
+
noUnstagedChanges: "\u65E0\u672A\u6682\u5B58\u7684\u53D8\u66F4",
|
|
19599
|
+
discardNFiles: "\u653E\u5F03 {{count}} \u4E2A\u6587\u4EF6\u7684\u53D8\u66F4",
|
|
19600
|
+
stageNFiles: "\u6682\u5B58 {{count}} \u4E2A\u6587\u4EF6",
|
|
19601
|
+
discardChanges: "\u653E\u5F03\u53D8\u66F4",
|
|
19602
|
+
stageFile: "\u6682\u5B58\u6587\u4EF6",
|
|
19603
|
+
loadingDiff: "\u52A0\u8F7D\u5BF9\u6BD4\u6587\u4EF6\u4E2D...",
|
|
19604
|
+
noDiffFiles: "\u65E0\u5DEE\u5F02\u6587\u4EF6",
|
|
19605
|
+
nFilesChanged: "{{count}} \u4E2A\u6587\u4EF6\u53D8\u66F4\uFF08vs {{branch}}\uFF09",
|
|
19606
|
+
loadingCommits: "\u52A0\u8F7D\u63D0\u4EA4\u8BB0\u5F55\u4E2D...",
|
|
19607
|
+
noCommits: "\u65E0\u63D0\u4EA4\u8BB0\u5F55",
|
|
19608
|
+
allLoaded: "\u5DF2\u52A0\u8F7D\u5168\u90E8 {{count}} \u6761\u8BB0\u5F55",
|
|
19609
|
+
locateInTree: "\u5728\u76EE\u5F55\u6811\u4E2D\u5B9A\u4F4D",
|
|
19610
|
+
unsaved: "\u672A\u4FDD\u5B58",
|
|
19611
|
+
saveBeforeSwitch: "\u5F53\u524D\u6587\u4EF6\u6709\u672A\u4FDD\u5B58\u7684\u4FEE\u6539\uFF0C\u662F\u5426\u4FDD\u5B58\u540E\u5207\u6362\uFF1F",
|
|
19612
|
+
saveAndSwitch: "\u4FDD\u5B58\u5E76\u5207\u6362",
|
|
19613
|
+
closeEdit: "\u5173\u95ED\u7F16\u8F91 (ESC)",
|
|
19614
|
+
closeBtn: "\u5173\u95ED",
|
|
19615
|
+
copyFileContent: "\u590D\u5236\u6587\u4EF6\u5185\u5BB9",
|
|
19616
|
+
toggleJsonReadable: "\u5207\u6362 JSON \u53EF\u8BFB\u6A21\u5F0F",
|
|
19617
|
+
previewMarkdown: "\u9884\u89C8 Markdown \u6E32\u67D3\u6548\u679C",
|
|
19618
|
+
exitPreview: "\u9000\u51FA\u9884\u89C8",
|
|
19619
|
+
viewBlame: "\u67E5\u770B\u6BCF\u884C\u4EE3\u7801\u7684\u4FEE\u6539\u8BB0\u5F55",
|
|
19620
|
+
viewDiff: "\u67E5\u770B\u76F8\u5BF9 HEAD \u7684\u6539\u52A8",
|
|
19621
|
+
exitDiff: "\u9000\u51FA Diff",
|
|
19622
|
+
diffLoadFailed: "\u52A0\u8F7D\u5DEE\u5F02\u5931\u8D25",
|
|
19623
|
+
editFile: "\u7F16\u8F91\u6587\u4EF6",
|
|
19624
|
+
backToPreview: "\u8FD4\u56DE\u9884\u89C8",
|
|
19625
|
+
cannotPreview: "\u65E0\u6CD5\u9884\u89C8\u6B64\u6587\u4EF6",
|
|
19626
|
+
selectFileToPreview: "\u9009\u62E9\u6587\u4EF6\u4EE5\u9884\u89C8",
|
|
19627
|
+
staged: "\u5DF2\u6682\u5B58",
|
|
19628
|
+
unstaged: "\u672A\u6682\u5B58",
|
|
19629
|
+
selectFileToViewDiff: "\u9009\u62E9\u6587\u4EF6\u67E5\u770B\u5DEE\u5F02",
|
|
19630
|
+
loadingDiffContent: "\u52A0\u8F7D\u5DEE\u5F02\u4E2D...",
|
|
19631
|
+
clickCompareToLoad: "\u70B9\u51FB\u300C\u5BF9\u6BD4\u300D\u52A0\u8F7D\u5206\u652F\u5DEE\u5F02",
|
|
19632
|
+
selectCommitToView: "\u9009\u62E9\u63D0\u4EA4\u67E5\u770B\u8BE6\u60C5",
|
|
19633
|
+
confirmDelete: "\u786E\u8BA4\u5220\u9664",
|
|
19634
|
+
confirmDeleteMessage: "\u786E\u5B9A\u8981\u5C06 <file>{{name}}</file> \u79FB\u52A8\u5230\u56DE\u6536\u7AD9\u5417\uFF1F",
|
|
19635
|
+
nFilesNMatches: "{{files}} \u4E2A\u6587\u4EF6\uFF0C{{matches}} \u5904\u5339\u914D",
|
|
19636
|
+
resultsTruncated: "\u7ED3\u679C\u5DF2\u622A\u65AD",
|
|
19637
|
+
noContentSearchResults: "\u65E0\u5339\u914D\u7ED3\u679C",
|
|
19638
|
+
enterKeywordToSearch: "\u8F93\u5165\u5173\u952E\u8BCD\u641C\u7D22\u6587\u4EF6\u5185\u5BB9",
|
|
19639
|
+
searchMinChars: "\u641C\u7D22\u5185\u5BB9\u81F3\u5C11\u9700\u8981 2 \u4E2A\u5B57\u7B26"
|
|
19640
|
+
},
|
|
19641
|
+
codeViewer: {
|
|
19642
|
+
fileModifiedExternally: "\u6587\u4EF6\u5DF2\u88AB\u5916\u90E8\u4FEE\u6539\uFF0C\u4FDD\u5B58\u5C06\u8986\u76D6\u5916\u90E8\u66F4\u6539",
|
|
19643
|
+
useDiskVersion: "\u4F7F\u7528\u78C1\u76D8\u7248\u672C",
|
|
19644
|
+
forceOverwrite: "\u5F3A\u5236\u8986\u76D6",
|
|
19645
|
+
searchPlaceholder: "\u641C\u7D22...",
|
|
19646
|
+
caseSensitive: "\u533A\u5206\u5927\u5C0F\u5199",
|
|
19647
|
+
wholeWordMatch: "\u5168\u5B57\u5339\u914D",
|
|
19648
|
+
unsavedConfirm: "\u6709\u672A\u4FDD\u5B58\u7684\u4FEE\u6539\uFF0C\u786E\u5B9A\u5173\u95ED\uFF1F",
|
|
19649
|
+
discardChanges: "\u653E\u5F03\u4FEE\u6539",
|
|
19650
|
+
continueEditing: "\u7EE7\u7EED\u7F16\u8F91",
|
|
19651
|
+
unsavedExitConfirm: "\u6709\u672A\u4FDD\u5B58\u7684\u4FEE\u6539\uFF0C\u786E\u5B9A\u9000\u51FA\u7F16\u8F91\u6A21\u5F0F\uFF1F",
|
|
19652
|
+
clickToViewDetails: "\u70B9\u51FB\u67E5\u770B\u8BE6\u60C5",
|
|
19653
|
+
clickToViewCommit: "\u70B9\u51FB\u67E5\u770B commit \u8BE6\u60C5",
|
|
19654
|
+
nComments: "{{count}} \u6761\u8BC4\u8BBA",
|
|
19655
|
+
searchChat: "\u641C\u7D22\u804A\u5929\u5185\u5BB9...",
|
|
19656
|
+
prevShiftEnter: "\u4E0A\u4E00\u4E2A (Shift+Enter)",
|
|
19657
|
+
nextEnter: "\u4E0B\u4E00\u4E2A (Enter)",
|
|
19658
|
+
closeEsc: "\u5173\u95ED (Esc)"
|
|
19659
|
+
},
|
|
19660
|
+
chat: {
|
|
19661
|
+
startConversation: "\u5F00\u59CB\u5BF9\u8BDD\u5427",
|
|
19662
|
+
loadMoreHistory: "\u52A0\u8F7D\u66F4\u591A...",
|
|
19663
|
+
scrollUpForMore: "\u2191 \u5411\u4E0A\u6EDA\u52A8\u52A0\u8F7D\u66F4\u591A\u5386\u53F2",
|
|
19664
|
+
claudeThinking: "Claude \u6B63\u5728\u601D\u8003...",
|
|
19665
|
+
jumpToStart: "\u8DF3\u8F6C\u5230\u5F00\u59CB",
|
|
19666
|
+
jumpToLatest: "\u8DF3\u8F6C\u5230\u6700\u65B0",
|
|
19667
|
+
copyMessage: "\u590D\u5236\u6D88\u606F",
|
|
19668
|
+
forkSession: "\u4ECE\u6B64\u5904\u5206\u53C9\u4F1A\u8BDD",
|
|
19669
|
+
imageN: "\u56FE\u7247 {{index}}",
|
|
19670
|
+
imagePreview: "\u56FE\u7247\u9884\u89C8",
|
|
19671
|
+
toolCalls: "{{count}} \u4E2A\u5DE5\u5177\u8C03\u7528",
|
|
19672
|
+
collapse: "\u25B2 \u6536\u8D77",
|
|
19673
|
+
expand: "\u25BC \u5C55\u5F00",
|
|
19674
|
+
subagent: "\u5B50\u4EE3\u7406",
|
|
19675
|
+
subagentEmpty: "\u672A\u627E\u5230\u5B50\u4EE3\u7406\u6D88\u606F\u8BB0\u5F55",
|
|
19676
|
+
subagentViewTitle: "\u67E5\u770B\u5B50\u4EE3\u7406\u6267\u884C\u8FC7\u7A0B",
|
|
19677
|
+
workflowRun: "\u8FD0\u884C\u8BE6\u60C5",
|
|
19678
|
+
workflowViewTitle: "\u67E5\u770B\u5DE5\u4F5C\u6D41\u8FD0\u884C\u8BE6\u60C5",
|
|
19679
|
+
workflowEmpty: "\u672A\u627E\u5230\u5DE5\u4F5C\u6D41\u8FD0\u884C\u8BB0\u5F55",
|
|
19680
|
+
workflowAgents: "\u4E2A\u4EE3\u7406",
|
|
19681
|
+
workflowViewAgent: "\u67E5\u770B",
|
|
19682
|
+
workflowUngrouped: "\u672A\u5206\u7EC4",
|
|
19683
|
+
viewQuestions: "\u67E5\u770B\u63D0\u95EE",
|
|
19684
|
+
viewAllFileChanges: "\u67E5\u770B\u6240\u6709\u6587\u4EF6\u53D8\u66F4",
|
|
19685
|
+
requestFailed: "\u8BF7\u6C42\u5931\u8D25",
|
|
19686
|
+
cannotReadStream: "\u65E0\u6CD5\u8BFB\u53D6\u54CD\u5E94\u6D41",
|
|
19687
|
+
errorRetry: "\u53D1\u751F\u9519\u8BEF\uFF0C\u8BF7\u91CD\u8BD5",
|
|
19688
|
+
placeholder: "\u8F93\u5165\u6D88\u606F\uFF0CEnter \u53D1\u9001\uFF08Shift+Enter \u6362\u884C\uFF0C\u53EF\u7C98\u8D34\u56FE\u7247\uFF1B\u884C\u9996 /\uFF08\u4E3B\u4F1A\u8BDD\uFF09\u6216 @\uFF08\u5B50\u4EE3\u7406\uFF09\u5524\u8D77\u547D\u4EE4\uFF0C\u652F\u6301\u591A\u884C\u591A\u547D\u4EE4\uFF09",
|
|
19689
|
+
placeholderDisabled: "\u751F\u6210\u4E2D... \u53EF\u7EE7\u7EED\u8F93\u5165 (ESC \u53D6\u6D88;\u5361\u4F4F\u592A\u4E45\u53EF\u53D6\u6D88\u540E\u91CD\u53D1\u300C\u7EE7\u7EED\u300D)",
|
|
19690
|
+
imageSizeLimit: "\u56FE\u7247\u5927\u5C0F\u8D85\u8FC7\u9650\u5236\uFF08\u6700\u5927 5MB\uFF09\uFF0C\u5F53\u524D\u5927\u5C0F: {{size}}MB",
|
|
19691
|
+
stageAll: "\u6682\u5B58\u6240\u6709\u6587\u4EF6 (git add -A)",
|
|
19692
|
+
viewGitChanges: "\u67E5\u770B Git \u53D8\u66F4",
|
|
19693
|
+
viewAllComments: "\u67E5\u770B\u6240\u6709\u8BC4\u8BBA",
|
|
19694
|
+
userMessages: "\u7528\u6237\u6D88\u606F\u5217\u8868",
|
|
19695
|
+
projectNotes: "\u9879\u76EE\u7B14\u8BB0",
|
|
19696
|
+
scheduledTasks: "\u5B9A\u65F6\u4EFB\u52A1",
|
|
19697
|
+
quickPrompts: "\u5FEB\u6377 Prompt",
|
|
19698
|
+
globalPrompts: "\u5168\u5C40 Prompt",
|
|
19699
|
+
projectPrompts: "\u9879\u76EE Prompt",
|
|
19700
|
+
noQuickPrompts: "\u6682\u65E0\u5FEB\u6377 Prompt",
|
|
19701
|
+
addQuickPrompt: "\u65B0\u589E\u5FEB\u6377 Prompt",
|
|
19702
|
+
quickPromptPlaceholder: "\u8F93\u5165\u4E00\u53E5\u8BDD Prompt\uFF0CEnter \u4FDD\u5B58\uFF0CEsc \u53D6\u6D88",
|
|
19703
|
+
context: "\u4E0A\u4E0B\u6587",
|
|
19704
|
+
output: "\u8F93\u51FA",
|
|
19705
|
+
copiedCommandTooltip: "\u5DF2\u590D\u5236!",
|
|
19706
|
+
copyCommandTooltip: "\u590D\u5236\u547D\u4EE4: claude -r {{sessionId}}",
|
|
19707
|
+
executedCommand: "\u6267\u884C\u4E86 `{{command}}`{{exitInfo}}\uFF0C\u8F93\u51FA\uFF1A\n```\n{{output}}\n```",
|
|
19708
|
+
executedCommandFailed: "\u6267\u884C `{{command}}` \u5931\u8D25\uFF1A{{error}}",
|
|
19709
|
+
executionMode: "\u6267\u884C\u6A21\u5F0F",
|
|
19710
|
+
checkBalance: "\u67E5\u8BE2\u4F59\u989D",
|
|
19711
|
+
balanceFailed: "\u67E5\u8BE2\u5931\u8D25\uFF0C\u8BF7\u68C0\u67E5 API Key",
|
|
19712
|
+
balanceNeedsKey: "\u8BF7\u5148\u914D\u7F6E DeepSeek API Key",
|
|
19713
|
+
balanceUnavailable: "\u8D26\u6237\u5F53\u524D\u4E0D\u53EF\u7528",
|
|
19714
|
+
balanceEmpty: "\u63A5\u53E3\u672A\u8FD4\u56DE\u4F59\u989D",
|
|
19715
|
+
openUsagePage: "\u6253\u5F00 DeepSeek \u7528\u91CF\u63A7\u5236\u53F0",
|
|
19716
|
+
ptyModeHint: "\u8BA2\u9605\u8BA1\u8D39\u6A21\u5F0F\uFF1A\u7528\u4EA4\u4E92\u5F0F claude CLI \u9A71\u52A8",
|
|
19717
|
+
planMode: "\u8BA1\u5212\u6A21\u5F0F",
|
|
19718
|
+
planModeDesc: "\u53EA\u8BFB\xB7\u5148\u51FA\u8BA1\u5212\u4E0D\u6539\u4EE3\u7801",
|
|
19719
|
+
planModeOn: "\u5DF2\u5F00\u542F\u8BA1\u5212\u6A21\u5F0F\u2014\u2014\u53EA\u8BFB;\u53D1\u4E00\u4E2A\u4EFB\u52A1\u5373\u53EF\u62FF\u5230\u8BA1\u5212",
|
|
19720
|
+
planModeOff: "\u5DF2\u5173\u95ED\u8BA1\u5212\u6A21\u5F0F",
|
|
19721
|
+
planModeHint: "\u8BA1\u5212\u6A21\u5F0F\uFF1A\u53EA\u8BFB\u63A2\u7D22\u3001\u4EA7\u51FA\u8BA1\u5212\u4F46\u4E0D\u6539\u6587\u4EF6\u3002\u53D6\u6D88\u52FE\u9009\u540E\u91CD\u53D1\u624D\u4F1A\u5B9E\u73B0\u3002",
|
|
19722
|
+
noHistory: "\u72EC\u7ACB\u4EFB\u52A1",
|
|
19723
|
+
noHistoryDesc: "\u4E0D\u53D1\u9001\u5386\u53F2",
|
|
19724
|
+
noHistoryHint: "\u72EC\u7ACB\u4EFB\u52A1\uFF1A\u6BCF\u6761\u6D88\u606F\u5355\u72EC\u53D1\u7ED9\u6A21\u578B\uFF0C\u4E0D\u5E26\u4E4B\u524D\u7684\u5BF9\u8BDD\u3002\u4E0A\u65B9\u7684\u4F1A\u8BDD\u8BB0\u5F55\u7167\u5E38\u4FDD\u7559\u3002",
|
|
19725
|
+
planTitle: "\u8BA1\u5212\uFF08\u5F85\u4F60\u786E\u8BA4\uFF09",
|
|
19726
|
+
approvePlan: "\u6279\u51C6\u5E76\u6267\u884C",
|
|
19727
|
+
planApproveHint: "\u672C\u73AF\u5883\u65E0\u5BA1\u6279\u5F39\u7A97\uFF0C\u70B9\u6B64\u9000\u51FA\u8BA1\u5212\u6A21\u5F0F\u5E76\u6267\u884C",
|
|
19728
|
+
approvePlanPrompt: "\u5DF2\u6279\u51C6\uFF0C\u6309\u4E0A\u8FF0\u8BA1\u5212\u5F00\u59CB\u6267\u884C\u3002",
|
|
19729
|
+
ptyTerminal: "PTY \u7EC8\u7AEF",
|
|
19730
|
+
ptyRunning: "\u8FD0\u884C\u4E2D",
|
|
19731
|
+
ptyCollapse: "\u6536\u8D77",
|
|
19732
|
+
ptyExpand: "\u5C55\u5F00",
|
|
19733
|
+
ptyStuck: "PTY \u4F3C\u4E4E\u5361\u4F4F\uFF08\u53EF\u80FD\u5728\u7B49\u5F85\u5BF9\u8BDD\u6846\u8F93\u5165\uFF09\uFF0C\u8BF7\u5728 PTY \u7EC8\u7AEF\u624B\u52A8\u5904\u7406\u3002",
|
|
19734
|
+
ptyTimedOut: "PTY \u8D85\u65F6\u672A\u4EBA\u5DE5\u5904\u7406\uFF0C\u5DF2\u7ED3\u675F\u8BE5\u56DE\u5408\u3002",
|
|
19735
|
+
ptyCrash: "Claude CLI \u6E32\u67D3\u5D29\u6E83\uFF08\u4E0A\u6E38 bug\uFF09\uFF1A{{error}}\u3002\u8BE5\u4F1A\u8BDD\u5386\u53F2\u53EF\u80FD\u542B\u65E0\u6CD5\u6E32\u67D3\u7684\u7F16\u8F91\u8BB0\u5F55\u3002",
|
|
19736
|
+
ptyQuestionEsc: "AI \u7684\u4EA4\u4E92\u5F0F\u63D0\u95EE\u65E0\u6CD5\u5728\u672C\u6A21\u5F0F\u4E2D\u5E94\u7B54\uFF0C\u5DF2\u81EA\u52A8\u53D6\u6D88\u5E76\u7ED3\u675F\u672C\u8F6E\u3002\u95EE\u9898\u5185\u5BB9\u89C1\u804A\u5929\u533A\uFF0C\u4E0B\u4E00\u6761\u6D88\u606F\u76F4\u63A5\u56DE\u7B54\u5373\u53EF\u3002"
|
|
19737
|
+
},
|
|
19738
|
+
console: {
|
|
19739
|
+
enterCommandOrUrl: "\u8F93\u5165\u547D\u4EE4\u6216\u7F51\u5740\u5F00\u59CB\u4F7F\u7528",
|
|
19740
|
+
emptyIntro: "\u5728\u4E0B\u65B9\u8F93\u5165\u6846\u8F93\u5165\u4EE5\u4E0B\u5185\u5BB9\uFF0C\u5373\u53EF\u521B\u5EFA\u5BF9\u5E94\u6C14\u6CE1\uFF1A",
|
|
19741
|
+
bubbleCommand: "\u547D\u4EE4",
|
|
19742
|
+
bubbleInteractive: "\u4EA4\u4E92\u7EC8\u7AEF",
|
|
19743
|
+
bubbleBrowser: "\u6D4F\u89C8\u5668",
|
|
19744
|
+
bubbleBrowserNoteIframe: "\u90E8\u5206\u7F51\u7AD9\u4F1A\u62E6\u622A iframe \u5D4C\u5165\uFF0C\u8BF7\u5728\u300C\u8BBE\u7F6E \u2192 \u6D4F\u89C8\u5668\u63D2\u4EF6\u300D\u5B89\u88C5 Cockpit Bridge \u540E\u518D\u6253\u5F00\u3002",
|
|
19745
|
+
bubbleBrowserNoteCookie: "\u5DF2\u767B\u5F55\u7684\u7F51\u7AD9\u82E5\u9996\u6B21\u663E\u793A\u672A\u767B\u5F55\uFF0C\u591A\u5237\u65B0\u51E0\u6B21\u5373\u53EF\u6062\u590D\u3002",
|
|
19746
|
+
bubbleDatabase: "\u6570\u636E\u5E93",
|
|
19747
|
+
bubbleNotebook: "\u7B14\u8BB0\u672C",
|
|
19748
|
+
loadingMore: "\u52A0\u8F7D\u4E2D...",
|
|
19749
|
+
loadMoreHistory: "\u52A0\u8F7D\u66F4\u591A\u5386\u53F2",
|
|
19750
|
+
quickCommands: "\u5FEB\u6377\u547D\u4EE4",
|
|
19751
|
+
singleColumn: "\u5355\u5217\u5E03\u5C40",
|
|
19752
|
+
dualColumn: "\u53CC\u5217\u5E03\u5C40",
|
|
19753
|
+
envVars: "\u73AF\u5883\u53D8\u91CF",
|
|
19754
|
+
launchZsh: "\u542F\u52A8 zsh \u4EA4\u4E92\u7EC8\u7AEF",
|
|
19755
|
+
htmlApps: "HTML \u5E94\u7528",
|
|
19756
|
+
inputPlaceholder: "\u8F93\u5165\u547D\u4EE4\u6216\u7F51\u5740\u5E76\u6309 Enter... (\u2191\u2193 \u5386\u53F2, Tab \u8865\u5168)",
|
|
19757
|
+
scopeProject: "\u9879\u76EE",
|
|
19758
|
+
scopeGlobal: "\u5168\u5C40",
|
|
19759
|
+
tabSwitchEscClose: "Tab \u5207\u6362 \xB7 Esc \u5173\u95ED",
|
|
19760
|
+
copyOutput: "\u590D\u5236\u8F93\u51FA",
|
|
19761
|
+
copyCommand: "\u590D\u5236\u547D\u4EE4",
|
|
19762
|
+
rerun: "\u91CD\u65B0\u8FD0\u884C",
|
|
19763
|
+
deleteRecord: "\u5220\u9664\u8BB0\u5F55",
|
|
19764
|
+
searchPlaceholder: "\u641C\u7D22...",
|
|
19765
|
+
searchMode: "\u641C\u7D22",
|
|
19766
|
+
filterMode: "\u8FC7\u6EE4",
|
|
19767
|
+
prevShiftEnter: "\u4E0A\u4E00\u4E2A (Shift+Enter)",
|
|
19768
|
+
nextEnter: "\u4E0B\u4E00\u4E2A (Enter)",
|
|
19769
|
+
loadingTerminal: "\u52A0\u8F7D\u7EC8\u7AEF...",
|
|
19770
|
+
clickToInput: "\u70B9\u51FB\u7EC8\u7AEF\u533A\u57DF\u8F93\u5165",
|
|
19771
|
+
stdinPlaceholder: "stdin \u8F93\u5165...",
|
|
19772
|
+
runningText: "\u8FD0\u884C\u4E2D...",
|
|
19773
|
+
exitCode: "\u9000\u51FA\u4EE3\u7801: {{code}}",
|
|
19774
|
+
totalLines: "\u5171 {{count}} \u884C",
|
|
19775
|
+
globalCommands: "\u5168\u5C40\u547D\u4EE4",
|
|
19776
|
+
projectCommands: "\u9879\u76EE\u547D\u4EE4",
|
|
19777
|
+
noCustomCommands: "\u6682\u65E0\u81EA\u5B9A\u4E49\u547D\u4EE4",
|
|
19778
|
+
namePlaceholder: "\u540D\u79F0",
|
|
19779
|
+
commandPlaceholder: "\u547D\u4EE4",
|
|
19780
|
+
restoreTooltip: "\u8FD8\u539F ({{modKey}}M / ESC)",
|
|
19781
|
+
screenshotting: "\u622A\u56FE\u4E2D...",
|
|
19782
|
+
outputFileDeleted: "[\u8F93\u51FA\u6587\u4EF6\u5DF2\u5220\u9664]"
|
|
19783
|
+
},
|
|
19784
|
+
browser: {
|
|
19785
|
+
blankPage: "\u7A7A\u767D\u9875",
|
|
19786
|
+
copyUrl: "\u590D\u5236\u7F51\u5740",
|
|
19787
|
+
openInNewWindow: "\u5728\u65B0\u7A97\u53E3\u6253\u5F00",
|
|
19788
|
+
exitMaximize: "\u9000\u51FA\u6700\u5927\u5316 ({{modKey}}M)",
|
|
19789
|
+
maximize: "\u6700\u5927\u5316 ({{modKey}}M)",
|
|
19790
|
+
pageLoadFailed: "\u9875\u9762\u52A0\u8F7D\u5931\u8D25",
|
|
19791
|
+
clickToWake: "\u70B9\u51FB\u5524\u9192",
|
|
19792
|
+
sleeping: "\u5DF2\u4F11\u7720",
|
|
19793
|
+
loadingPage: "\u52A0\u8F7D\u4E2D...",
|
|
19794
|
+
loadFailed: "\u52A0\u8F7D\u5931\u8D25"
|
|
19795
|
+
},
|
|
19796
|
+
database: {
|
|
19797
|
+
connectionFailed: "\u8FDE\u63A5\u5931\u8D25",
|
|
19798
|
+
connected: "\u5DF2\u8FDE\u63A5",
|
|
19799
|
+
connecting: "\u8FDE\u63A5\u4E2D...",
|
|
19800
|
+
refreshTableList: "\u5237\u65B0\u8868\u5217\u8868",
|
|
19801
|
+
filterTable: "T \u8868",
|
|
19802
|
+
filterView: "V \u89C6\u56FE",
|
|
19803
|
+
noTables: "\u65E0\u8868",
|
|
19804
|
+
tabStructure: "\u7ED3\u6784",
|
|
19805
|
+
tabData: "\u6570\u636E",
|
|
19806
|
+
tabSql: "SQL",
|
|
19807
|
+
filterActive: "\u7B5B\u9009: {{count}}\u5217",
|
|
19808
|
+
clearAllFilters: "\u6E05\u9664\u6240\u6709\u7B5B\u9009",
|
|
19809
|
+
deleteNRows: "\u5220\u9664 {{count}} \u884C",
|
|
19810
|
+
confirmDeleteRows: "\u786E\u8BA4\u5220\u9664?",
|
|
19811
|
+
copyCsvSelected: "\u590D\u5236\u9009\u4E2D\u884C\u4E3A CSV",
|
|
19812
|
+
copyCsvAll: "\u5BFC\u51FA\u5168\u8868 CSV",
|
|
19813
|
+
copyJsonSelected: "\u590D\u5236\u9009\u4E2D\u884C\u4E3A JSON",
|
|
19814
|
+
copyJsonAll: "\u5BFC\u51FA\u5168\u8868 JSON",
|
|
19815
|
+
copyCSV: "\u590D\u5236 CSV",
|
|
19816
|
+
CSV: "CSV",
|
|
19817
|
+
copyJSON: "\u590D\u5236 JSON",
|
|
19818
|
+
JSON: "JSON",
|
|
19819
|
+
selectTable: "\u9009\u62E9\u5DE6\u4FA7\u8868\u683C",
|
|
19820
|
+
selectTableToView: "\u9009\u62E9\u8868\u4EE5\u67E5\u770B\u7ED3\u6784",
|
|
19821
|
+
selectTableForData: "\u9009\u62E9\u8868\u4EE5\u67E5\u770B\u6570\u636E",
|
|
19822
|
+
columns: "\u5217",
|
|
19823
|
+
colName: "\u540D\u79F0",
|
|
19824
|
+
colType: "\u7C7B\u578B",
|
|
19825
|
+
colNullable: "\u53EF\u7A7A",
|
|
19826
|
+
colDefault: "\u9ED8\u8BA4\u503C",
|
|
19827
|
+
primaryKey: "\u4E3B\u952E",
|
|
19828
|
+
foreignKeys: "\u5916\u952E",
|
|
19829
|
+
indexes: "\u7D22\u5F15",
|
|
19830
|
+
enable: "\u542F\u7528",
|
|
19831
|
+
commaValues: "\u9017\u53F7\u5206\u9694\u591A\u503C",
|
|
19832
|
+
likePattern: "%pattern%",
|
|
19833
|
+
valuePlaceholder: "\u503C",
|
|
19834
|
+
apply: "\u5E94\u7528",
|
|
19835
|
+
clearFilter: "\u6E05\u9664",
|
|
19836
|
+
addRow: "+ \u65B0\u589E\u884C",
|
|
19837
|
+
totalRows: "{{count}} \u884C",
|
|
19838
|
+
rowsAffected: "{{command}} \u2014 {{count}} \u884C\u53D7\u5F71\u54CD ({{duration}}ms)",
|
|
19839
|
+
queryRows: "{{count}} \u884C ({{duration}}ms)",
|
|
19840
|
+
resultTruncated: "[\u7ED3\u679C\u5DF2\u622A\u65AD\u81F31000\u884C]",
|
|
19841
|
+
sqlPlaceholder: "\u8F93\u5165 SQL... ({{modKey}}Enter \u6267\u884C)",
|
|
19842
|
+
executing: "\u6267\u884C\u4E2D...",
|
|
19843
|
+
execute: "\u25B6 \u6267\u884C",
|
|
19844
|
+
deleteRowsFailed: "{{count}} \u884C\u5220\u9664\u5931\u8D25",
|
|
19845
|
+
inputParams: "\u8F93\u5165\u53C2\u6570",
|
|
19846
|
+
resultLabel: "\u7ED3\u679C"
|
|
19847
|
+
},
|
|
19848
|
+
mysql: {
|
|
19849
|
+
connectionFailed: "\u8FDE\u63A5\u5931\u8D25",
|
|
19850
|
+
connected: "\u5DF2\u8FDE\u63A5",
|
|
19851
|
+
connecting: "\u8FDE\u63A5\u4E2D...",
|
|
19852
|
+
refreshTableList: "\u5237\u65B0\u8868\u5217\u8868",
|
|
19853
|
+
filterTable: "T \u8868",
|
|
19854
|
+
filterView: "V \u89C6\u56FE",
|
|
19855
|
+
noTables: "\u65E0\u8868",
|
|
19856
|
+
tabStructure: "\u7ED3\u6784",
|
|
19857
|
+
tabData: "\u6570\u636E",
|
|
19858
|
+
tabSql: "SQL",
|
|
19859
|
+
filterActive: "\u7B5B\u9009: {{count}}\u5217",
|
|
19860
|
+
clearAllFilters: "\u6E05\u9664\u6240\u6709\u7B5B\u9009",
|
|
19861
|
+
deleteNRows: "\u5220\u9664 {{count}} \u884C",
|
|
19862
|
+
confirmDeleteRows: "\u786E\u8BA4\u5220\u9664?",
|
|
19863
|
+
copyCsvSelected: "\u590D\u5236\u9009\u4E2D\u884C\u4E3A CSV",
|
|
19864
|
+
copyCsvAll: "\u5BFC\u51FA\u5168\u8868 CSV",
|
|
19865
|
+
copyJsonSelected: "\u590D\u5236\u9009\u4E2D\u884C\u4E3A JSON",
|
|
19866
|
+
copyJsonAll: "\u5BFC\u51FA\u5168\u8868 JSON",
|
|
19867
|
+
copyCSV: "\u590D\u5236 CSV",
|
|
19868
|
+
CSV: "CSV",
|
|
19869
|
+
copyJSON: "\u590D\u5236 JSON",
|
|
19870
|
+
JSON: "JSON",
|
|
19871
|
+
selectTable: "\u9009\u62E9\u5DE6\u4FA7\u8868\u683C",
|
|
19872
|
+
selectTableToView: "\u9009\u62E9\u8868\u4EE5\u67E5\u770B\u7ED3\u6784",
|
|
19873
|
+
selectTableForData: "\u9009\u62E9\u8868\u4EE5\u67E5\u770B\u6570\u636E",
|
|
19874
|
+
columns: "\u5217",
|
|
19875
|
+
colName: "\u540D\u79F0",
|
|
19876
|
+
colType: "\u7C7B\u578B",
|
|
19877
|
+
colNullable: "\u53EF\u7A7A",
|
|
19878
|
+
colDefault: "\u9ED8\u8BA4\u503C",
|
|
19879
|
+
primaryKey: "\u4E3B\u952E",
|
|
19880
|
+
foreignKeys: "\u5916\u952E",
|
|
19881
|
+
indexes: "\u7D22\u5F15",
|
|
19882
|
+
enable: "\u542F\u7528",
|
|
19883
|
+
commaValues: "\u9017\u53F7\u5206\u9694\u591A\u503C",
|
|
19884
|
+
likePattern: "%pattern%",
|
|
19885
|
+
valuePlaceholder: "\u503C",
|
|
19886
|
+
apply: "\u5E94\u7528",
|
|
19887
|
+
clearFilter: "\u6E05\u9664",
|
|
19888
|
+
addRow: "+ \u65B0\u589E\u884C",
|
|
19889
|
+
totalRows: "{{count}} \u884C",
|
|
19890
|
+
rowsAffected: "{{command}} \u2014 {{count}} \u884C\u53D7\u5F71\u54CD ({{duration}}ms)",
|
|
19891
|
+
queryRows: "{{count}} \u884C ({{duration}}ms)",
|
|
19892
|
+
resultTruncated: "[\u7ED3\u679C\u5DF2\u622A\u65AD\u81F31000\u884C]",
|
|
19893
|
+
sqlPlaceholder: "\u8F93\u5165 SQL... ({{modKey}}Enter \u6267\u884C)",
|
|
19894
|
+
executing: "\u6267\u884C\u4E2D...",
|
|
19895
|
+
execute: "\u25B6 \u6267\u884C",
|
|
19896
|
+
deleteRowsFailed: "{{count}} \u884C\u5220\u9664\u5931\u8D25"
|
|
19897
|
+
},
|
|
19898
|
+
redis: {
|
|
19899
|
+
neverExpires: "\u6C38\u4E0D\u8FC7\u671F",
|
|
19900
|
+
expired: "\u5DF2\u8FC7\u671F",
|
|
19901
|
+
loadFailed: "\u52A0\u8F7D\u5931\u8D25",
|
|
19902
|
+
deleteFailed: "\u5220\u9664\u5931\u8D25",
|
|
19903
|
+
saveFailed: "\u4FDD\u5B58\u5931\u8D25",
|
|
19904
|
+
scanPlaceholder: "SCAN \u6A21\u5F0F...",
|
|
19905
|
+
scanSearch: "\u641C\u7D22 (SCAN)",
|
|
19906
|
+
noKeys: "\u65E0 key",
|
|
19907
|
+
loadMore: "\u52A0\u8F7D\u66F4\u591A...",
|
|
19908
|
+
tabData: "\u6570\u636E",
|
|
19909
|
+
tabInfo: "\u4FE1\u606F",
|
|
19910
|
+
tabCli: "CLI",
|
|
19911
|
+
selectKey: "\u9009\u62E9\u5DE6\u4FA7 Key",
|
|
19912
|
+
keyNotExist: "Key \u4E0D\u5B58\u5728",
|
|
19913
|
+
unsupportedType: "\u4E0D\u652F\u6301\u7684\u7C7B\u578B: {{type}}",
|
|
19914
|
+
nItems: "{{total}} items",
|
|
19915
|
+
showingN: "\u663E\u793A {{count}}",
|
|
19916
|
+
nMembers: "{{total}} members",
|
|
19917
|
+
nEntries: "{{total}} entries",
|
|
19918
|
+
cliHint: "\u8F93\u5165 Redis \u547D\u4EE4\uFF0C\u5982 PING, GET key, KEYS *",
|
|
19919
|
+
cliPlaceholder: "\u8F93\u5165\u547D\u4EE4..."
|
|
19920
|
+
},
|
|
19921
|
+
git: {
|
|
19922
|
+
switchBranch: "\u5207\u6362\u5206\u652F",
|
|
19923
|
+
searchBranch: "\u641C\u7D22\u5206\u652F...",
|
|
19924
|
+
noBranches: "\u65E0\u53EF\u5207\u6362\u5206\u652F",
|
|
19925
|
+
noMatchingBranches: "\u65E0\u5339\u914D\u5206\u652F",
|
|
19926
|
+
localBranches: "\u672C\u5730\u5206\u652F",
|
|
19927
|
+
remoteBranches: "\u8FDC\u7A0B\u5206\u652F",
|
|
19928
|
+
branchNotFound: "\u672A\u627E\u5230\u5206\u652F",
|
|
19929
|
+
selectBranch: "\u9009\u62E9\u5206\u652F...",
|
|
19930
|
+
currentBranch: "\u5F53\u524D",
|
|
19931
|
+
notGitRepo: "\u5F53\u524D\u76EE\u5F55\u4E0D\u662F Git \u4ED3\u5E93",
|
|
19932
|
+
cannotGetBranches: "\u65E0\u6CD5\u83B7\u53D6\u5206\u652F\u4FE1\u606F",
|
|
19933
|
+
getBranchesFailed: "\u83B7\u53D6\u5206\u652F\u4FE1\u606F\u5931\u8D25",
|
|
19934
|
+
discardAllConfirm: "\u786E\u5B9A\u8981\u653E\u5F03\u5DE5\u4F5C\u533A\u7684 {{count}} \u4E2A\u6587\u4EF6\u7684\u53D8\u66F4\u5417\uFF1F\u6B64\u64CD\u4F5C\u4E0D\u53EF\u6062\u590D\u3002",
|
|
19935
|
+
worktree: {
|
|
19936
|
+
title: "Git Worktree",
|
|
19937
|
+
count: "{{count}} \u4E2A worktree",
|
|
19938
|
+
selectBranch: "\u9009\u62E9\u5206\u652F",
|
|
19939
|
+
addWorktree: "+ \u6DFB\u52A0 Worktree",
|
|
19940
|
+
confirmDelete: "\u786E\u8BA4\u5220\u9664",
|
|
19941
|
+
confirmDeleteMsg: "\u786E\u5B9A\u8981\u5220\u9664 worktree \u5417\uFF1F",
|
|
19942
|
+
path: "\u8DEF\u5F84\uFF1A",
|
|
19943
|
+
branch: "\u5206\u652F\uFF1A",
|
|
19944
|
+
locked: "\u5DF2\u9501\u5B9A",
|
|
19945
|
+
unlock: "\u89E3\u9501",
|
|
19946
|
+
lock: "\u9501\u5B9A",
|
|
19947
|
+
searchBranch: "\u641C\u7D22\u5206\u652F...",
|
|
19948
|
+
noBranches: "\u65E0\u53EF\u7528\u5206\u652F"
|
|
19949
|
+
}
|
|
19950
|
+
},
|
|
19951
|
+
comments: {
|
|
19952
|
+
addComment: "\u6DFB\u52A0\u8BC4\u8BBA",
|
|
19953
|
+
lineRange: "\u884C {{start}}-{{end}}",
|
|
19954
|
+
inputPlaceholder: "\u8F93\u5165\u8BC4\u8BBA...",
|
|
19955
|
+
newComment: "\u65B0\u8BC4\u8BBA {{range}}",
|
|
19956
|
+
commentPlaceholder: "\u8F93\u5165\u8BC4\u8BBA... ({{modKey}}Enter \u63D0\u4EA4, Esc \u53D6\u6D88)",
|
|
19957
|
+
nComments: "{{count}} \u6761\u8BC4\u8BBA",
|
|
19958
|
+
allComments: "\u6240\u6709\u8BC4\u8BBA",
|
|
19959
|
+
copyAllComments: "\u590D\u5236\u5168\u90E8\u8BC4\u8BBA",
|
|
19960
|
+
noComments: "\u6682\u65E0\u8BC4\u8BBA",
|
|
19961
|
+
clearAll: "\u6E05\u7A7A\u6240\u6709",
|
|
19962
|
+
totalComments: "\u5171 {{count}} \u6761\u8BC4\u8BBA",
|
|
19963
|
+
aiReply: "AI \u56DE\u590D",
|
|
19964
|
+
noContent: "\uFF08\u65E0\u5185\u5BB9\uFF09",
|
|
19965
|
+
linesCount: "({{count}} \u884C)",
|
|
19966
|
+
codeRef: "\u4EE5\u4E0B\u662F\u6211\u6807\u6CE8\u7684\u8BC4\u8BBA\u548C\u5F15\u7528:",
|
|
19967
|
+
note: "\u5907\u6CE8: {{content}}",
|
|
19968
|
+
submitting: "\u63D0\u4EA4\u4E2D...",
|
|
19969
|
+
enterSubmit: "Enter \u63D0\u4EA4 \xB7 Shift+Enter \u6362\u884C",
|
|
19970
|
+
submitComment: "\u63D0\u4EA4\u8BC4\u8BBA",
|
|
19971
|
+
askAI: "\u63D0\u95EE AI",
|
|
19972
|
+
inputQuestion: "\u8F93\u5165\u4F60\u7684\u95EE\u9898...",
|
|
19973
|
+
aiGenerating: "\u6B63\u5728\u751F\u6210\u4E2D\uFF0C\u8BF7\u7A0D\u5019...",
|
|
19974
|
+
enterSend: "Enter \u53D1\u9001 \xB7 Shift+Enter \u6362\u884C",
|
|
19975
|
+
sendToAI: "\u53D1\u9001 AI",
|
|
19976
|
+
aiResponding: "AI \u6B63\u5728\u54CD\u5E94\u4E2D..."
|
|
19977
|
+
},
|
|
19978
|
+
fileContextMenu: {
|
|
19979
|
+
createFile: "\u65B0\u5EFA\u6587\u4EF6",
|
|
19980
|
+
copyFile: "\u590D\u5236\u6587\u4EF6",
|
|
19981
|
+
copyFolder: "\u590D\u5236\u6587\u4EF6\u5939",
|
|
19982
|
+
pasteHere: "\u7C98\u8D34\u5230\u6B64\u5904",
|
|
19983
|
+
deleteFile: "\u5220\u9664\u6587\u4EF6",
|
|
19984
|
+
deleteFolder: "\u5220\u9664\u6587\u4EF6\u5939",
|
|
19985
|
+
copyRelativePath: "\u590D\u5236\u76F8\u5BF9\u8DEF\u5F84",
|
|
19986
|
+
copyAbsolutePath: "\u590D\u5236\u7EDD\u5BF9\u8DEF\u5F84",
|
|
19987
|
+
copyRelativeDirPath: "\u590D\u5236\u76F8\u5BF9\u6587\u4EF6\u5939\u8DEF\u5F84",
|
|
19988
|
+
copyAbsoluteDirPath: "\u590D\u5236\u7EDD\u5BF9\u6587\u4EF6\u5939\u8DEF\u5F84",
|
|
19989
|
+
copyFileName: "\u590D\u5236\u6587\u4EF6\u540D",
|
|
19990
|
+
copyFolderName: "\u590D\u5236\u6587\u4EF6\u5939\u540D"
|
|
19991
|
+
},
|
|
19992
|
+
settings: {
|
|
19993
|
+
title: "\u8BBE\u7F6E",
|
|
19994
|
+
theme: "\u4E3B\u9898",
|
|
19995
|
+
themeLight: "\u6D45\u8272",
|
|
19996
|
+
themeDark: "\u6DF1\u8272",
|
|
19997
|
+
themeSystem: "\u8DDF\u968F\u7CFB\u7EDF",
|
|
19998
|
+
browserExtension: "\u6D4F\u89C8\u5668\u63D2\u4EF6",
|
|
19999
|
+
extensionInstalled: "Cockpit Bridge \u5DF2\u5B89\u88C5",
|
|
20000
|
+
extensionNotInstalled: "Cockpit Bridge \u672A\u5B89\u88C5",
|
|
20001
|
+
extensionDescription: "\u5B89\u88C5 Chrome \u63D2\u4EF6\u540E\uFF0Ciframe \u5185\u7684\u94FE\u63A5\u8DF3\u8F6C\u5C06\u88AB\u62E6\u622A\uFF1A\u65B0\u6807\u7B7E\u94FE\u63A5\u521B\u5EFA\u65B0\u6C14\u6CE1\uFF0C\u9875\u9762\u5185\u5BFC\u822A\u66F4\u65B0\u5F53\u524D\u6C14\u6CE1\u3002",
|
|
20002
|
+
installSteps: "\u5B89\u88C5\u6B65\u9AA4\uFF1A",
|
|
20003
|
+
step1: "1. \u6253\u5F00 Chrome \u5730\u5740\u680F\u8F93\u5165",
|
|
20004
|
+
step2: "2. \u5F00\u542F\u53F3\u4E0A\u89D2\u300C\u5F00\u53D1\u8005\u6A21\u5F0F\u300D",
|
|
20005
|
+
step3: "3. \u70B9\u51FB\u300C\u52A0\u8F7D\u5DF2\u89E3\u538B\u7684\u6269\u5C55\u7A0B\u5E8F\u300D",
|
|
20006
|
+
step4mac: "4. \u6309 <kbd>Cmd+Shift+G</kbd> \u2192 \u7C98\u8D34\u4E0B\u65B9\u8DEF\u5F84 \u2192 \u56DE\u8F66",
|
|
20007
|
+
copyExtensionPath: "\u590D\u5236\u63D2\u4EF6\u76EE\u5F55\u8DEF\u5F84",
|
|
20008
|
+
reloadExtension: "\u91CD\u8F7D\u63D2\u4EF6",
|
|
20009
|
+
about: "\u5173\u4E8E",
|
|
20010
|
+
language: "\u8BED\u8A00",
|
|
20011
|
+
languageAuto: "\u8DDF\u968F\u7CFB\u7EDF",
|
|
20012
|
+
switchDark: "\u5207\u6362\u6697\u8272",
|
|
20013
|
+
switchLight: "\u5207\u6362\u4EAE\u8272"
|
|
20014
|
+
},
|
|
20015
|
+
editor: {
|
|
20016
|
+
placeholder: "\u5199\u70B9\u4EC0\u4E48... \u8F93\u5165 / \u6253\u5F00\u5FEB\u6377\u547D\u4EE4",
|
|
20017
|
+
noteTitle: "{{name}} - \u7B14\u8BB0",
|
|
20018
|
+
noteUntitled: "\u7B14\u8BB0",
|
|
20019
|
+
saving: "\u4FDD\u5B58\u4E2D...",
|
|
20020
|
+
conflictReloaded: "\u7B14\u8BB0\u5DF2\u88AB\u5176\u4ED6\u5730\u65B9\u4FEE\u6539\uFF0C\u5DF2\u52A0\u8F7D\u6700\u65B0\u7248\u672C\uFF0C\u521A\u624D\u672A\u4FDD\u5B58\u7684\u7F16\u8F91\u5DF2\u4E22\u5F03",
|
|
20021
|
+
linkPlaceholder: "\u8F93\u5165\u94FE\u63A5\u5730\u5740...",
|
|
20022
|
+
confirmLink: "\u786E\u8BA4",
|
|
20023
|
+
removeLink: "\u79FB\u9664\u94FE\u63A5",
|
|
20024
|
+
heading1: "\u6807\u9898 1",
|
|
20025
|
+
heading2: "\u6807\u9898 2",
|
|
20026
|
+
heading3: "\u6807\u9898 3",
|
|
20027
|
+
bold: "\u7C97\u4F53",
|
|
20028
|
+
italic: "\u659C\u4F53",
|
|
20029
|
+
strikethrough: "\u5220\u9664\u7EBF",
|
|
20030
|
+
inlineCode: "\u884C\u5185\u4EE3\u7801",
|
|
20031
|
+
link: "\u94FE\u63A5",
|
|
20032
|
+
bulletList: "\u65E0\u5E8F\u5217\u8868",
|
|
20033
|
+
orderedList: "\u6709\u5E8F\u5217\u8868",
|
|
20034
|
+
taskList: "\u5F85\u529E\u5217\u8868",
|
|
20035
|
+
blockquote: "\u5F15\u7528",
|
|
20036
|
+
codeBlock: "\u4EE3\u7801\u5757",
|
|
20037
|
+
table: "\u8868\u683C",
|
|
20038
|
+
horizontalRule: "\u5206\u5272\u7EBF",
|
|
20039
|
+
insertRowAbove: "\u5728\u4E0A\u65B9\u63D2\u5165\u884C",
|
|
20040
|
+
insertRowBelow: "\u5728\u4E0B\u65B9\u63D2\u5165\u884C",
|
|
20041
|
+
insertColumnLeft: "\u5728\u5DE6\u4FA7\u63D2\u5165\u5217",
|
|
20042
|
+
insertColumnRight: "\u5728\u53F3\u4FA7\u63D2\u5165\u5217",
|
|
20043
|
+
deleteRow: "\u5220\u9664\u5F53\u524D\u884C",
|
|
20044
|
+
deleteColumn: "\u5220\u9664\u5F53\u524D\u5217",
|
|
20045
|
+
deleteTable: "\u5220\u9664\u8868\u683C",
|
|
20046
|
+
deleteCodeBlock: "\u5220\u9664\u4EE3\u7801\u5757",
|
|
20047
|
+
toc: "\u76EE\u5F55",
|
|
20048
|
+
expandToc: "\u5C55\u5F00\u76EE\u5F55",
|
|
20049
|
+
collapseToc: "\u6536\u8D77\u76EE\u5F55"
|
|
20050
|
+
},
|
|
20051
|
+
slashCommands: {
|
|
20052
|
+
heading1: "\u6807\u9898 1",
|
|
20053
|
+
heading1Desc: "\u5927\u6807\u9898",
|
|
20054
|
+
heading2: "\u6807\u9898 2",
|
|
20055
|
+
heading2Desc: "\u4E2D\u6807\u9898",
|
|
20056
|
+
heading3: "\u6807\u9898 3",
|
|
20057
|
+
heading3Desc: "\u5C0F\u6807\u9898",
|
|
20058
|
+
bulletList: "\u65E0\u5E8F\u5217\u8868",
|
|
20059
|
+
bulletListDesc: "\u9879\u76EE\u7B26\u53F7\u5217\u8868",
|
|
20060
|
+
orderedList: "\u6709\u5E8F\u5217\u8868",
|
|
20061
|
+
orderedListDesc: "\u7F16\u53F7\u5217\u8868",
|
|
20062
|
+
taskList: "\u5F85\u529E\u5217\u8868",
|
|
20063
|
+
taskListDesc: "\u53EF\u52FE\u9009\u7684\u4EFB\u52A1\u5217\u8868",
|
|
20064
|
+
blockquote: "\u5F15\u7528",
|
|
20065
|
+
blockquoteDesc: "\u5F15\u7528\u5757",
|
|
20066
|
+
codeBlock: "\u4EE3\u7801\u5757",
|
|
20067
|
+
codeBlockDesc: "\u4EE3\u7801\u7247\u6BB5",
|
|
20068
|
+
table: "\u8868\u683C",
|
|
20069
|
+
tableDesc: "\u63D2\u5165 3\xD73 \u8868\u683C",
|
|
20070
|
+
horizontalRule: "\u5206\u5272\u7EBF",
|
|
20071
|
+
horizontalRuleDesc: "\u6C34\u5E73\u5206\u5272\u7EBF",
|
|
20072
|
+
link: "\u94FE\u63A5",
|
|
20073
|
+
linkDesc: "\u63D2\u5165\u8D85\u94FE\u63A5"
|
|
20074
|
+
},
|
|
20075
|
+
commands: {
|
|
20076
|
+
qa: "\u8FDB\u5165\u9700\u6C42\u6F84\u6E05\u8BA8\u8BBA\u6A21\u5F0F",
|
|
20077
|
+
fx: "\u8FDB\u5165 bug \u8BC1\u636E\u94FE\u5206\u6790\u6A21\u5F0F",
|
|
20078
|
+
ex: "\u8FDB\u5165\u7ED3\u6784\u5316\u5206\u6790\u8BA8\u8BBA\u6A21\u5F0F",
|
|
20079
|
+
go: "\u8FDB\u5165\u8FDE\u7EED\u843D\u5730\uFF08MVP\uFF09\u6A21\u5F0F",
|
|
20080
|
+
cg: "\u8FDB\u5165 CodeGraph \u63A2\u7D22\u6A21\u5F0F",
|
|
20081
|
+
plan: "\u5F00\u542F\u8BA1\u5212\u6A21\u5F0F \xB7 /plan <\u4EFB\u52A1> \u76F4\u63A5\u89C4\u5212\u8BE5\u4EFB\u52A1 \xB7 /plan off \u5173\u95ED"
|
|
20082
|
+
},
|
|
20083
|
+
review: {
|
|
20084
|
+
reviewManagement: "\u8BC4\u5BA1\u7BA1\u7406",
|
|
20085
|
+
allReviews: "\u6240\u6709\u8BC4\u5BA1",
|
|
20086
|
+
noOpenReviews: "\u6682\u65E0\u5F00\u653E\u8BC4\u5BA1",
|
|
20087
|
+
viewComments: "\u67E5\u770B\u8BC4\u8BBA",
|
|
20088
|
+
nComments: "{{count}} \u6761\u8BC4\u8BBA",
|
|
20089
|
+
nDocs: "{{count}} \u6587\u6863",
|
|
20090
|
+
nReviews: "{{count}} \u8BC4\u5BA1",
|
|
20091
|
+
docList: "\u6587\u6863\u5217\u8868",
|
|
20092
|
+
allReviewsList: "\u6240\u6709\u8BC4\u5BA1",
|
|
20093
|
+
expandList: "\u5C55\u5F00\u5217\u8868",
|
|
20094
|
+
collapseList: "\u6298\u53E0\u5217\u8868",
|
|
20095
|
+
closeReview: "\u5173\u95ED\u8BC4\u5BA1",
|
|
20096
|
+
reopenReview: "\u91CD\u65B0\u5F00\u653E",
|
|
20097
|
+
deleteReview: "\u5220\u9664\u8BC4\u5BA1",
|
|
20098
|
+
noOpenDocs: "\u6682\u65E0\u5F00\u653E\u6587\u6863",
|
|
20099
|
+
noReviews: "\u6682\u65E0\u8BC4\u5BA1",
|
|
20100
|
+
sharing: "\u5206\u4EAB\u4E2D",
|
|
20101
|
+
notShared: "\u672A\u5206\u4EAB",
|
|
20102
|
+
closeSharing: "\u5173\u95ED\u5206\u4EAB",
|
|
20103
|
+
enableSharing: "\u5F00\u542F\u5206\u4EAB\u8BC4\u5BA1",
|
|
20104
|
+
view: "\u67E5\u770B",
|
|
20105
|
+
setNickname: "\u8BBE\u7F6E\u4F60\u7684\u6635\u79F0",
|
|
20106
|
+
nicknameHint: "\u5176\u4ED6\u8BC4\u5BA1\u4EBA\u5C06\u770B\u5230\u8FD9\u4E2A\u540D\u5B57",
|
|
20107
|
+
nicknamePlaceholder: "\u8F93\u5165\u6635\u79F0",
|
|
20108
|
+
skipForNow: "\u4E0B\u6B21\u518D\u8BF4",
|
|
20109
|
+
identitySettings: "\u8EAB\u4EFD\u8BBE\u7F6E",
|
|
20110
|
+
reviewNickname: "\u8BC4\u5BA1\u6635\u79F0",
|
|
20111
|
+
random: "\u968F\u673A",
|
|
20112
|
+
selectTextToComment: "\u9009\u4E2D\u5DE6\u4FA7\u6587\u672C\u6DFB\u52A0\u8BC4\u8BBA",
|
|
20113
|
+
selectTextHint: "\u9009\u4E2D\u5DE6\u4FA7\u6587\u672C\u5373\u53EF\u6DFB\u52A0\u8BC4\u8BBA",
|
|
20114
|
+
prevComment: "\u4E0A\u4E00\u6761",
|
|
20115
|
+
nextComment: "\u4E0B\u4E00\u6761",
|
|
20116
|
+
commentsCount: "{{count}} \u6761\u8BC4\u8BBA",
|
|
20117
|
+
commentsNavCount: "{{current}}/{{total}} \u6761\u8BC4\u8BBA",
|
|
20118
|
+
allCommentsTitle: "\u5168\u90E8\u8BC4\u8BBA",
|
|
20119
|
+
commentsCountBrief: "{{count}} \u6761",
|
|
20120
|
+
closedCount: "{{count}} \u6761\u5DF2\u5173\u95ED",
|
|
20121
|
+
copyAllComments: "\u590D\u5236\u5168\u90E8\u8BC4\u8BBA",
|
|
20122
|
+
noComments: "\u6682\u65E0\u8BC4\u8BBA",
|
|
20123
|
+
closedComments: "\u5DF2\u5173\u95ED ({{count}})",
|
|
20124
|
+
closedLabel: "\u5DF2\u5173\u95ED",
|
|
20125
|
+
moreReplies: "+{{count}} \u6761\u56DE\u590D",
|
|
20126
|
+
copyComment: "\u590D\u5236\u8BC4\u8BBA",
|
|
20127
|
+
reopen: "\u91CD\u5F00",
|
|
20128
|
+
closeComment: "\u5173\u95ED\u8BC4\u8BBA",
|
|
20129
|
+
editComment: "\u7F16\u8F91\u8BC4\u8BBA",
|
|
20130
|
+
deleteComment: "\u5220\u9664\u8BC4\u8BBA",
|
|
20131
|
+
edited: "(\u5DF2\u7F16\u8F91)",
|
|
20132
|
+
editReply: "\u7F16\u8F91\u56DE\u590D",
|
|
20133
|
+
deleteReply: "\u5220\u9664\u56DE\u590D",
|
|
20134
|
+
reply: "\u56DE\u590D",
|
|
20135
|
+
replyPlaceholder: "\u6DFB\u52A0\u56DE\u590D...",
|
|
20136
|
+
selectedText: "\u9009\u4E2D\u6587\u672C",
|
|
20137
|
+
addCommentPlaceholder: "\u6DFB\u52A0\u8BC4\u8BBA...",
|
|
20138
|
+
enterSubmitHint: "Enter \u63D0\u4EA4\uFF0CShift+Enter \u6362\u884C",
|
|
20139
|
+
commentBtn: "\u8BC4\u8BBA",
|
|
20140
|
+
reviewNotExist: "\u8BC4\u5BA1\u4E0D\u5B58\u5728\u6216\u5DF2\u88AB\u5220\u9664",
|
|
20141
|
+
loadFailed: "\u52A0\u8F7D\u5931\u8D25",
|
|
20142
|
+
networkError: "\u7F51\u7EDC\u9519\u8BEF",
|
|
20143
|
+
reviewNotFound: "\u8BC4\u5BA1\u4E0D\u5B58\u5728",
|
|
20144
|
+
checkLink: "\u8BF7\u68C0\u67E5\u94FE\u63A5\u662F\u5426\u6B63\u786E",
|
|
20145
|
+
updatedAt: "\u66F4\u65B0\u4E8E {{date}}",
|
|
20146
|
+
active: "\u5F00\u653E\u4E2D",
|
|
20147
|
+
closed: "\u5DF2\u5173\u95ED",
|
|
20148
|
+
viewAllComments: "\u67E5\u770B\u5168\u90E8\u8BC4\u8BBA",
|
|
20149
|
+
viewCommentBtn: "\u67E5\u770B\u8BC4\u8BBA",
|
|
20150
|
+
copyLink: "\u590D\u5236\u94FE\u63A5",
|
|
20151
|
+
reviewSummary: "\u8BC4\u5BA1\u8BC4\u8BBA\u6C47\u603B \u2014 {{title}}",
|
|
20152
|
+
totalNComments: "\u5171 {{count}} \u6761\u8BC4\u8BBA",
|
|
20153
|
+
quoteRef: '\u5F15\u7528: "{{text}}"',
|
|
20154
|
+
commentAuthor: "\u8BC4\u8BBA ({{author}}): {{content}}",
|
|
20155
|
+
replyAuthor: " \u21B3 {{author}}: {{content}}"
|
|
20156
|
+
},
|
|
20157
|
+
markdown: {
|
|
20158
|
+
copied: "\u2713 \u5DF2\u590D\u5236",
|
|
20159
|
+
copy: "\u590D\u5236"
|
|
20160
|
+
},
|
|
20161
|
+
imagePreview: {
|
|
20162
|
+
previewImage: "\u9884\u89C8\u56FE\u7247",
|
|
20163
|
+
deleteImage: "\u5220\u9664\u56FE\u7247"
|
|
20164
|
+
},
|
|
20165
|
+
tokenStats: {
|
|
20166
|
+
title: "Claude Code Token \u7EDF\u8BA1",
|
|
20167
|
+
activeHours: "\u6D3B\u8DC3\u65F6\u6BB5\u5206\u5E03",
|
|
20168
|
+
hourSessions: "{{h}}:00 \u2014 {{count}} \u6B21\u4F1A\u8BDD",
|
|
20169
|
+
messages: "\u6D88\u606F",
|
|
20170
|
+
toolCalls: "\u5DE5\u5177\u8C03\u7528",
|
|
20171
|
+
activityTrend: "\u6D3B\u52A8\u8D8B\u52BF",
|
|
20172
|
+
byModel: "\u6309\u6A21\u578B",
|
|
20173
|
+
tokenUsage: "Token \u7528\u91CF",
|
|
20174
|
+
equivalentCost: "\u7B49\u6548\u8D39\u7528",
|
|
20175
|
+
modelCostDetail: "\u6A21\u578B\u8D39\u7528\u660E\u7EC6",
|
|
20176
|
+
model: "\u6A21\u578B",
|
|
20177
|
+
share: "\u5360\u6BD4",
|
|
20178
|
+
total: "\u5408\u8BA1",
|
|
20179
|
+
totalSessions: "\u603B\u4F1A\u8BDD",
|
|
20180
|
+
totalMessages: "\u603B\u6D88\u606F",
|
|
20181
|
+
equivalentApiCost: "\u7B49\u6548 API \u8D39\u7528",
|
|
20182
|
+
longestSession: "\u6700\u957F\u4F1A\u8BDD",
|
|
20183
|
+
firstUse: "\u9996\u6B21\u4F7F\u7528",
|
|
20184
|
+
notFound: "\u672A\u627E\u5230 ~/.claude/stats-cache.json",
|
|
20185
|
+
day: "\u65E5",
|
|
20186
|
+
week: "\u5468",
|
|
20187
|
+
month: "\u6708"
|
|
20188
|
+
},
|
|
20189
|
+
toolCall: {
|
|
20190
|
+
inputParams: "\u8F93\u5165\u53C2\u6570",
|
|
20191
|
+
resultLabel: "\u7ED3\u679C",
|
|
20192
|
+
inputParamsTitle: "\u67E5\u770B\u8F93\u5165\u53C2\u6570",
|
|
20193
|
+
resultTitle: "\u67E5\u770B\u7ED3\u679C",
|
|
20194
|
+
input: "\u8F93\u5165",
|
|
20195
|
+
result: "\u7ED3\u679C",
|
|
20196
|
+
foldedLines: "... ({{count}} \u884C)"
|
|
20197
|
+
},
|
|
20198
|
+
fileEditor: {
|
|
20199
|
+
unsavedConfirm: "\u6709\u672A\u4FDD\u5B58\u7684\u4FEE\u6539\uFF0C\u786E\u5B9A\u5173\u95ED\uFF1F",
|
|
20200
|
+
discardChanges: "\u653E\u5F03\u4FEE\u6539",
|
|
20201
|
+
continueEditing: "\u7EE7\u7EED\u7F16\u8F91",
|
|
20202
|
+
externallyModified: "\u6587\u4EF6\u5DF2\u88AB\u5916\u90E8\u4FEE\u6539\uFF0C\u4FDD\u5B58\u5C06\u8986\u76D6\u5916\u90E8\u66F4\u6539",
|
|
20203
|
+
useDiskVersion: "\u4F7F\u7528\u78C1\u76D8\u7248\u672C",
|
|
20204
|
+
forceOverwrite: "\u5F3A\u5236\u8986\u76D6"
|
|
20205
|
+
},
|
|
20206
|
+
quickFileOpen: {
|
|
20207
|
+
placeholder: "\u8F93\u5165\u6587\u4EF6\u540D\u5FEB\u901F\u6253\u5F00...",
|
|
20208
|
+
noMatch: "\u6CA1\u6709\u5339\u914D\u7684\u6587\u4EF6",
|
|
20209
|
+
recent: "\u6700\u8FD1",
|
|
20210
|
+
selectHint: "\u9009\u62E9",
|
|
20211
|
+
openHint: "\u6253\u5F00",
|
|
20212
|
+
closeHint: "\u5173\u95ED"
|
|
20213
|
+
},
|
|
20214
|
+
envManager: {
|
|
20215
|
+
title: "\u73AF\u5883\u53D8\u91CF\u7BA1\u7406",
|
|
20216
|
+
tabScope: "\u5F53\u524D Tab \u4E13\u7528",
|
|
20217
|
+
globalScope: "\u5168\u5C40\u73AF\u5883\u53D8\u91CF",
|
|
20218
|
+
varNamePlaceholder: "\u53D8\u91CF\u540D\uFF08\u5982 NODE_ENV\uFF09",
|
|
20219
|
+
varValuePlaceholder: "\u503C\uFF08\u5982 production\uFF09",
|
|
20220
|
+
valuePlaceholder: "\u503C",
|
|
20221
|
+
noVars: "\u8FD8\u6CA1\u6709\u73AF\u5883\u53D8\u91CF\uFF0C\u6DFB\u52A0\u4E00\u4E2A\u8BD5\u8BD5"
|
|
20222
|
+
},
|
|
20223
|
+
aliasManager: {
|
|
20224
|
+
title: "\u547D\u4EE4\u522B\u540D\u7BA1\u7406",
|
|
20225
|
+
description: "\u4E3A\u5E38\u7528\u547D\u4EE4\u8BBE\u7F6E\u5FEB\u6377\u522B\u540D\uFF08\u5168\u5C40\u751F\u6548\uFF09",
|
|
20226
|
+
aliasPlaceholder: "\u522B\u540D\uFF08\u5982 ll\uFF09",
|
|
20227
|
+
commandPlaceholder: "\u5B8C\u6574\u547D\u4EE4\uFF08\u5982 ls -la\uFF09",
|
|
20228
|
+
fullCommandPlaceholder: "\u5B8C\u6574\u547D\u4EE4",
|
|
20229
|
+
usage: "\u4F7F\u7528\u63D0\u793A\uFF1A",
|
|
20230
|
+
usageDesc: "\u8F93\u5165\u522B\u540D\u5373\u53EF\u6267\u884C\u5BF9\u5E94\u7684\u5B8C\u6574\u547D\u4EE4",
|
|
20231
|
+
noAliases: "\u8FD8\u6CA1\u6709\u547D\u4EE4\u522B\u540D\uFF0C\u6DFB\u52A0\u4E00\u4E2A\u8BD5\u8BD5"
|
|
20232
|
+
},
|
|
20233
|
+
diffViewer: {
|
|
20234
|
+
fileChanges: "\u6587\u4EF6\u53D8\u66F4 ({{count}})",
|
|
20235
|
+
toggleFileTree: "\u5207\u6362\u6587\u4EF6\u76EE\u5F55",
|
|
20236
|
+
selectFileToView: "\u9009\u62E9\u5DE6\u4FA7\u6587\u4EF6\u67E5\u770B\u53D8\u66F4",
|
|
20237
|
+
sideBySide: "\u5E76\u5217\u5BF9\u6BD4",
|
|
20238
|
+
unified: "\u7EDF\u4E00\u5BF9\u6BD4",
|
|
20239
|
+
viewSplit: "\u53CC\u680F",
|
|
20240
|
+
viewUnified: "\u5355\u680F",
|
|
20241
|
+
previewFile: "\u9884\u89C8\u6587\u4EF6",
|
|
20242
|
+
copiedAll: "\u5DF2\u590D\u5236\u5168\u6587",
|
|
20243
|
+
compact: "\u7CBE\u7B80",
|
|
20244
|
+
full: "\u5168\u6587",
|
|
20245
|
+
gap: {
|
|
20246
|
+
hidden: "\u5DF2\u9690\u85CF {{count}} \u884C",
|
|
20247
|
+
more: "\xB7\xB7\xB7 \u66F4\u591A +{{count}} \xB7\xB7\xB7",
|
|
20248
|
+
expandUp: "\u5411\u4E0A\u5C55\u5F00 {{count}} \u884C",
|
|
20249
|
+
expandDown: "\u5411\u4E0B\u5C55\u5F00 {{count}} \u884C"
|
|
20250
|
+
},
|
|
20251
|
+
loadingSnapshots: "\u6B63\u5728\u52A0\u8F7D\u5FEB\u7167\u2026",
|
|
20252
|
+
noChanges: "\u672C\u8F6E\u672A\u68C0\u6D4B\u5230\u6587\u4EF6\u53D8\u66F4",
|
|
20253
|
+
notViewable: "\u4E8C\u8FDB\u5236\u6216\u8D85\u5927\u6587\u4EF6\uFF0C\u65E0\u6CD5\u5C55\u793A diff",
|
|
20254
|
+
externalChange: "\u540C\u671F\u5176\u4ED6\u4F1A\u8BDD/\u5916\u90E8\u8FDB\u7A0B\u7684\u53D8\u66F4",
|
|
20255
|
+
reconstructed: "\u53C2\u6570\u91CD\u5EFA",
|
|
20256
|
+
reconstructedHint: "\u7531\u5DE5\u5177\u8C03\u7528\u53C2\u6570\u91CD\u5EFA\uFF0C\u975E\u78C1\u76D8\u5FEB\u7167",
|
|
20257
|
+
truncated: "\u6587\u4EF6\u8FC7\u591A\uFF0C\u4EC5\u663E\u793A\u90E8\u5206"
|
|
20258
|
+
},
|
|
20259
|
+
commitDetail: {
|
|
20260
|
+
title: "\u63D0\u4EA4\u8BE6\u60C5",
|
|
20261
|
+
hash: "\u54C8\u5E0C:",
|
|
20262
|
+
author: "\u4F5C\u8005:",
|
|
20263
|
+
date: "\u65E5\u671F:",
|
|
20264
|
+
files: "\u6587\u4EF6:",
|
|
20265
|
+
nChanges: "{{count}} \u4E2A\u53D8\u66F4",
|
|
20266
|
+
loadingFiles: "\u52A0\u8F7D\u6587\u4EF6\u4E2D...",
|
|
20267
|
+
noFileChanges: "\u65E0\u6587\u4EF6\u53D8\u66F4",
|
|
20268
|
+
loadingDiff: "\u52A0\u8F7D\u5DEE\u5F02\u4E2D...",
|
|
20269
|
+
selectFileToView: "\u9009\u62E9\u6587\u4EF6\u67E5\u770B\u5DEE\u5F02"
|
|
20270
|
+
},
|
|
20271
|
+
askQuestion: {
|
|
20272
|
+
title: "\u63D0\u95EE",
|
|
20273
|
+
nQuestions: "{{count}} \u4E2A\u95EE\u9898",
|
|
20274
|
+
checkedN: "\u5DF2\u52FE\u9009 {{count}}",
|
|
20275
|
+
copyChecked: "\u590D\u5236\u52FE\u9009\u7684 {{count}} \u4E2A\u95EE\u7B54",
|
|
20276
|
+
copyAll: "\u590D\u5236\u6240\u6709\u95EE\u7B54",
|
|
20277
|
+
sendChecked: "\u53D1\u9001\u52FE\u9009\u7684 {{count}} \u4E2A\u95EE\u7B54\u7ED9 AI",
|
|
20278
|
+
sendAll: "\u53D1\u9001\u6240\u6709\u95EE\u7B54\u7ED9 AI",
|
|
20279
|
+
sendNoChat: "\u6CA1\u6709\u53EF\u7528\u7684\u804A\u5929\u4F1A\u8BDD",
|
|
20280
|
+
checkToCopy: "\u52FE\u9009\u4EE5\u590D\u5236",
|
|
20281
|
+
custom: "\u81EA\u5B9A\u4E49",
|
|
20282
|
+
customPlaceholder: "\u8F93\u5165\u81EA\u5B9A\u4E49\u56DE\u7B54...",
|
|
20283
|
+
notSelected: "(\u672A\u9009\u62E9)"
|
|
20284
|
+
},
|
|
20285
|
+
tabBar: {
|
|
20286
|
+
unpin: "\u53D6\u6D88\u56FA\u5B9A",
|
|
20287
|
+
pin: "\u56FA\u5B9A\u5230\u5E38\u7528\u4F1A\u8BDD",
|
|
20288
|
+
closeTab: "\u5173\u95ED\u6807\u7B7E",
|
|
20289
|
+
closeAll: "\u5173\u95ED\u6240\u6709\u6807\u7B7E",
|
|
20290
|
+
newTab: "\u65B0\u5EFA\u6807\u7B7E"
|
|
20291
|
+
},
|
|
20292
|
+
tabManagerTopBar: {
|
|
20293
|
+
copyPageUrl: "\u590D\u5236\u9875\u9762\u5730\u5740",
|
|
20294
|
+
copyDirPath: "\u590D\u5236\u76EE\u5F55\u8DEF\u5F84",
|
|
20295
|
+
refreshProject: "\u5237\u65B0\u5F53\u524D\u9879\u76EE",
|
|
20296
|
+
openInVSCode: "\u5728 VS Code \u4E2D\u6253\u5F00",
|
|
20297
|
+
openInCursor: "\u5728 Cursor \u4E2D\u6253\u5F00",
|
|
20298
|
+
aliasesGlobal: "\u547D\u4EE4\u522B\u540D\uFF08\u5168\u5C40\uFF09",
|
|
20299
|
+
tokenStats: "Token \u7EDF\u8BA1",
|
|
20300
|
+
openSurething: "\u6253\u5F00 Surething"
|
|
20301
|
+
},
|
|
20302
|
+
hoverTooltip: {
|
|
20303
|
+
findReferences: "\u67E5\u627E\u5F15\u7528",
|
|
20304
|
+
search: "\u641C\u7D22"
|
|
20305
|
+
},
|
|
20306
|
+
todoViewer: {
|
|
20307
|
+
title: "\u4EFB\u52A1\u5217\u8868",
|
|
20308
|
+
progress: "{{completed}} / {{total}} \u5B8C\u6210"
|
|
20309
|
+
},
|
|
20310
|
+
userMessages: {
|
|
20311
|
+
title: "\u7528\u6237\u6D88\u606F\u5217\u8868",
|
|
20312
|
+
noMessages: "\u6682\u65E0\u7528\u6237\u6D88\u606F"
|
|
20313
|
+
},
|
|
20314
|
+
shortIdBadge: {
|
|
20315
|
+
clickToDisconnect: "\u70B9\u51FB\u65AD\u5F00\u8FDE\u63A5",
|
|
20316
|
+
clickToRegister: "\u70B9\u51FB\u6CE8\u518C\u5E76\u590D\u5236 CLI \u547D\u4EE4",
|
|
20317
|
+
setTitle: "\u7ED9\u8FD9\u4E2A\u6C14\u6CE1\u547D\u540D\uFF08\u4FBF\u4E8E /cc \u901A\u8FC7 connection list \u627E\u5230\u5B83\uFF09",
|
|
20318
|
+
setTitlePlaceholder: "\u8BBE\u7F6E\u6807\u9898",
|
|
20319
|
+
editTitle: "\u7F16\u8F91\u6807\u9898",
|
|
20320
|
+
titleSet: "\u6807\u9898\uFF1A{{title}}",
|
|
20321
|
+
dialogTitle: "\u7ED9\u6C14\u6CE1\u547D\u540D",
|
|
20322
|
+
dialogPlaceholder: "\u4F8B\u5982\uFF1Aalloydb \u4EE3\u7406\u3001\u9884\u53D1\u7BA1\u7406\u540E\u53F0"
|
|
20323
|
+
},
|
|
20324
|
+
api: {
|
|
20325
|
+
pathForbidden: "\u4E0D\u5141\u8BB8\u64CD\u4F5C\u6B64\u8DEF\u5F84",
|
|
20326
|
+
deleteForbidden: "\u4E0D\u5141\u8BB8\u5220\u9664\u6B64\u8DEF\u5F84",
|
|
20327
|
+
notAFolder: "\u76EE\u6807\u4E0D\u662F\u6587\u4EF6\u5939",
|
|
20328
|
+
imageTooLarge: "\u56FE\u7247\u6587\u4EF6\u8FC7\u5927\uFF0C\u65E0\u6CD5\u9884\u89C8",
|
|
20329
|
+
cannotPreviewBinary: "\u65E0\u6CD5\u9884\u89C8\u4E8C\u8FDB\u5236\u6587\u4EF6",
|
|
20330
|
+
fileTooLarge: "\u6587\u4EF6\u8FC7\u5927\uFF0C\u65E0\u6CD5\u9884\u89C8\uFF08\u8D85\u8FC7 10MB\uFF09",
|
|
20331
|
+
fileModifiedExternally: "\u6587\u4EF6\u5DF2\u88AB\u5916\u90E8\u4FEE\u6539",
|
|
20332
|
+
pickFolderPrompt: "\u9009\u62E9\u9879\u76EE\u6587\u4EF6\u5939"
|
|
20333
|
+
},
|
|
20334
|
+
confirm: {
|
|
20335
|
+
title: "\u63D0\u793A",
|
|
20336
|
+
ok: "\u786E\u5B9A",
|
|
20337
|
+
cancel: "\u53D6\u6D88"
|
|
20338
|
+
},
|
|
20339
|
+
floatingToolbar: {
|
|
20340
|
+
addComment: "\u6DFB\u52A0\u8BC4\u8BBA",
|
|
20341
|
+
sendToAI: "\u53D1\u9001 AI",
|
|
20342
|
+
search: "\u641C\u7D22"
|
|
20343
|
+
},
|
|
20344
|
+
quickReply: {
|
|
20345
|
+
optionA: "A",
|
|
20346
|
+
optionB: "B",
|
|
20347
|
+
optionC: "C",
|
|
20348
|
+
optionD: "D",
|
|
20349
|
+
allRecommended: "\u90FD\u6309\u63A8\u8350",
|
|
20350
|
+
thisOne: "\u5C31\u8FD9\u4E2A",
|
|
20351
|
+
notThis: "\u4E0D\u8981\u8FD9\u6837",
|
|
20352
|
+
why: "\u4E3A\u4EC0\u4E48",
|
|
20353
|
+
elaborate: "\u5C55\u5F00\u8BF4",
|
|
20354
|
+
example: "\u4E3E\u4E2A\u4F8B\u5B50",
|
|
20355
|
+
start: "\u5F00\u59CB\u505A",
|
|
20356
|
+
continue: "\u7EE7\u7EED",
|
|
20357
|
+
ok: "OK",
|
|
20358
|
+
done: "\u505A\u5B8C\u4E86"
|
|
20359
|
+
},
|
|
20360
|
+
searchResults: {
|
|
20361
|
+
title: "\u641C\u7D22\u7ED3\u679C",
|
|
20362
|
+
nMatches: "({{count}} \u5904\u5339\u914D)",
|
|
20363
|
+
searching: "\u641C\u7D22\u4E2D...",
|
|
20364
|
+
noResults: "\u65E0\u5339\u914D\u7ED3\u679C",
|
|
20365
|
+
scopeSelected: "\u9009\u4E2D",
|
|
20366
|
+
scopeAll: "\u5168\u90E8"
|
|
20367
|
+
},
|
|
20368
|
+
references: {
|
|
20369
|
+
title: "\u5F15\u7528",
|
|
20370
|
+
searching: "\u641C\u7D22\u4E2D...",
|
|
20371
|
+
notFound: "\u672A\u627E\u5230\u5F15\u7528"
|
|
20372
|
+
},
|
|
20373
|
+
gitFileTree: {
|
|
20374
|
+
noFiles: "\u65E0\u6587\u4EF6"
|
|
20375
|
+
},
|
|
20376
|
+
explain: {
|
|
20377
|
+
action: "\u89E3\u91CA\u4E00\u4E0B",
|
|
20378
|
+
fileMessage: "\u89E3\u91CA\u4E00\u4E0B {{path}}",
|
|
20379
|
+
symbolMessage: "\u89E3\u91CA\u4E00\u4E0B {{name}} ({{path}}:{{lines}})",
|
|
20380
|
+
selectionMessage: "\u89E3\u91CA\u4E00\u4E0B",
|
|
20381
|
+
commitFileMessage: "\u89E3\u91CA\u4E00\u4E0B git commit {{hash}} \u5BF9 {{path}} \u7684\u6539\u52A8",
|
|
20382
|
+
compareFileMessage: "\u89E3\u91CA\u4E00\u4E0B git {{base}}..HEAD \u4E2D {{path}} \u7684\u6539\u52A8",
|
|
20383
|
+
stagedFileMessage: "\u89E3\u91CA\u4E00\u4E0B git \u6682\u5B58\u533A\u4E2D {{path}} \u7684\u6539\u52A8",
|
|
20384
|
+
unstagedFileMessage: "\u89E3\u91CA\u4E00\u4E0B git \u5DE5\u4F5C\u533A\u4E2D {{path}} \u7684\u6539\u52A8"
|
|
20385
|
+
},
|
|
20386
|
+
reviewUtils: {
|
|
20387
|
+
adjectives: ["\u5FEB\u4E50", "\u52C7\u6562", "\u5B89\u9759", "\u660E\u4EAE", "\u6E29\u67D4", "\u7075\u5DE7", "\u81EA\u7531", "\u6E05\u6F88", "\u98DE\u7FD4", "\u60A0\u95F2", "\u6D3B\u6CFC", "\u806A\u6167", "\u6DE1\u5B9A", "\u673A\u654F", "\u4ECE\u5BB9", "\u575A\u5B9A", "\u723D\u6717", "\u548C\u7166", "\u5954\u653E", "\u6C89\u7A33"],
|
|
20388
|
+
nouns: ["\u718A\u732B", "\u6D77\u8C5A", "\u767D\u9E64", "\u96EA\u8C79", "\u4E91\u96C0", "\u677E\u9F20", "\u98DE\u9C7C", "\u6885\u82B1\u9E7F", "\u9752\u9E1F", "\u94F6\u72D0", "\u732B\u5934\u9E70", "\u873B\u8713", "\u8424\u706B\u866B", "\u6D77\u9F9F", "\u8774\u8776", "\u91D1\u4E1D\u7334", "\u4E39\u9876\u9E64", "\u7F9A\u7F8A", "\u71D5\u5B50", "\u4F01\u9E45"]
|
|
20389
|
+
}
|
|
20390
|
+
};
|
|
20391
|
+
|
|
20392
|
+
// packages/shared/i18n/src/index.ts
|
|
20393
|
+
if (!i18n.isInitialized) {
|
|
20394
|
+
i18n.init({
|
|
20395
|
+
resources: {
|
|
20396
|
+
en: { translation: en_default2 },
|
|
20397
|
+
zh: { translation: zh_default }
|
|
20398
|
+
},
|
|
20399
|
+
lng: "en",
|
|
20400
|
+
// Fixed initial language; client detects in app/I18nProvider
|
|
20401
|
+
fallbackLng: "en",
|
|
20402
|
+
interpolation: {
|
|
20403
|
+
escapeValue: false
|
|
20404
|
+
}
|
|
20405
|
+
});
|
|
20406
|
+
}
|
|
20407
|
+
var src_default = i18n;
|
|
20408
|
+
|
|
17978
20409
|
// packages/feature/agent/src/server/scheduledTasks.ts
|
|
17979
20410
|
var MAX_CONSECUTIVE_FAILURES = 3;
|
|
20411
|
+
function buildTaskPrompt(task) {
|
|
20412
|
+
if (!task.taskFile) return task.message;
|
|
20413
|
+
const header = src_default.t("scheduledTasks.taskFilePromptHeader", {
|
|
20414
|
+
lng: task.language || "en"
|
|
20415
|
+
});
|
|
20416
|
+
return `${header}
|
|
20417
|
+
- ${task.taskFile}`;
|
|
20418
|
+
}
|
|
17980
20419
|
function parseCronField(field, min, max) {
|
|
17981
20420
|
const values = [];
|
|
17982
20421
|
for (const part of field.split(",")) {
|
|
@@ -18027,15 +20466,19 @@ var dispatchEngineMessageEff = (task, engine, startFresh) => Effect_exports.tryP
|
|
|
18027
20466
|
if (!spec) {
|
|
18028
20467
|
throw new Error(`no engine spec for ${engine}`);
|
|
18029
20468
|
}
|
|
20469
|
+
const builtinLoop = isDeepseekBuiltinSession(engine, task);
|
|
20470
|
+
const noHistory = await readSessionNoHistory(task, engine, builtinLoop);
|
|
18030
20471
|
const outcome = await dispatchChat(spec, {
|
|
18031
|
-
prompt: task
|
|
20472
|
+
prompt: buildTaskPrompt(task),
|
|
18032
20473
|
// Omit sessionId to start a brand-new session when the resume target is gone;
|
|
18033
20474
|
// the engine generates a fresh id (captured below via getRunSessionId).
|
|
18034
20475
|
...startFresh ? {} : { sessionId: task.sessionId },
|
|
18035
20476
|
cwd: task.cwd,
|
|
18036
20477
|
engine,
|
|
18037
20478
|
// selects claude2's CLAUDE_CONFIG_DIR; no-op for the others
|
|
18038
|
-
...task.model && { model: task.model }
|
|
20479
|
+
...task.model && { model: task.model },
|
|
20480
|
+
...builtinLoop && { mode: "builtin" },
|
|
20481
|
+
...noHistory && { noHistory: true }
|
|
18039
20482
|
});
|
|
18040
20483
|
if (!outcome.ok) {
|
|
18041
20484
|
throw new Error(`${engine} dispatch rejected (${outcome.status}): ${outcome.error}`);
|
|
@@ -18069,9 +20512,18 @@ var dispatchEngineMessageEff = (task, engine, startFresh) => Effect_exports.tryP
|
|
|
18069
20512
|
cause
|
|
18070
20513
|
})
|
|
18071
20514
|
});
|
|
20515
|
+
function isDeepseekBuiltinSession(engine, task) {
|
|
20516
|
+
return engine === "deepseek" && existsSync3(getDeepseekBuiltinSessionPath(task.cwd, task.sessionId));
|
|
20517
|
+
}
|
|
20518
|
+
async function readSessionNoHistory(task, engine, builtinLoop) {
|
|
20519
|
+
if (engine !== "ollama" && !builtinLoop) return false;
|
|
20520
|
+
const state = await readJsonFile(getSessionFilePath(task.cwd), {});
|
|
20521
|
+
return state.noHistories?.[task.sessionId] === true;
|
|
20522
|
+
}
|
|
18072
20523
|
function sessionPathFor(engine, task) {
|
|
18073
20524
|
if (engine === "claude2") return getClaude2SessionPath(task.cwd, task.sessionId);
|
|
18074
20525
|
if (engine === "ollama") return getOllamaSessionPath(task.cwd, task.sessionId);
|
|
20526
|
+
if (isDeepseekBuiltinSession(engine, task)) return getDeepseekBuiltinSessionPath(task.cwd, task.sessionId);
|
|
18075
20527
|
if (engine === "deepseek") return getDeepseekSessionPath(task.cwd, task.sessionId);
|
|
18076
20528
|
if (engine === "codex") return findCodexSessionPath(task.sessionId);
|
|
18077
20529
|
if (engine === "kimi") return findKimiSessionPath(task.sessionId);
|
|
@@ -18088,6 +20540,15 @@ var sendChatMessageEff = (task) => Effect_exports.gen(function* () {
|
|
|
18088
20540
|
})
|
|
18089
20541
|
);
|
|
18090
20542
|
}
|
|
20543
|
+
if (task.taskFile && !existsSync3(task.taskFile)) {
|
|
20544
|
+
return yield* Effect_exports.fail(
|
|
20545
|
+
new AgentError({
|
|
20546
|
+
provider: engine === "claude2" ? "claude" : engine,
|
|
20547
|
+
kind: "unknown",
|
|
20548
|
+
cause: new Error(`task file not found: ${task.taskFile} (task ${task.id})`)
|
|
20549
|
+
})
|
|
20550
|
+
);
|
|
20551
|
+
}
|
|
18091
20552
|
const sessionPath = sessionPathFor(engine, task);
|
|
18092
20553
|
const startFresh = !sessionPath || !existsSync3(sessionPath);
|
|
18093
20554
|
if (startFresh) {
|
|
@@ -18465,7 +20926,9 @@ var ScheduledTaskManager = class {
|
|
|
18465
20926
|
var g2 = globalThis;
|
|
18466
20927
|
var scheduledTaskManager = g2.__scheduledTaskManager ?? (g2.__scheduledTaskManager = new ScheduledTaskManager());
|
|
18467
20928
|
export {
|
|
20929
|
+
buildTaskPrompt,
|
|
18468
20930
|
getNextCronTime,
|
|
20931
|
+
readSessionNoHistory,
|
|
18469
20932
|
scheduledTaskManager,
|
|
18470
20933
|
sendChatMessageEff
|
|
18471
20934
|
};
|