@surething/cockpit 1.0.266 → 1.0.267
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 +4 -3
- package/.next-prod/build-manifest.json +2 -2
- package/.next-prod/cockpit-build.json +1 -1
- package/.next-prod/prerender-manifest.json +3 -3
- package/.next-prod/routes-manifest.json +6 -0
- package/.next-prod/server/app/_global-error/page.js +2 -2
- 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/_tree.segment.rsc +1 -1
- package/.next-prod/server/app/_not-found/page.js +1 -1
- 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/_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/_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 +1 -1
- 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/glm/route.js +1 -1
- package/.next-prod/server/app/api/chat/glm/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/chat/kimi/route.js +1 -1
- 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/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 +2 -2
- 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 -1
- package/.next-prod/server/app/api/deepseek/balance/route.js.nft.json +1 -1
- 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 -1
- package/.next-prod/server/app/api/deepseek/models/route.js.nft.json +1 -1
- 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/blob/route.js +1 -1
- package/.next-prod/server/app/api/git/blob/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/glm/credentials/route.js +1 -1
- package/.next-prod/server/app/api/glm/credentials/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/glm/models/route.js +1 -1
- package/.next-prod/server/app/api/glm/models/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/glm/usage/route.js +1 -1
- package/.next-prod/server/app/api/glm/usage/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/kimi/credentials/route.js +1 -1
- package/.next-prod/server/app/api/kimi/credentials/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/kimi/models/route.js +1 -1
- package/.next-prod/server/app/api/kimi/models/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/kimi/usage/route.js +1 -1
- package/.next-prod/server/app/api/kimi/usage/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 +2 -2
- 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 -1
- package/.next-prod/server/app/api/prompts/config/route.js.nft.json +1 -1
- 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/restart/route.js +1 -1
- package/.next-prod/server/app/api/restart/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 +2 -2
- 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/shutdown/route.js +1 -1
- package/.next-prod/server/app/api/shutdown/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/blob/route.js +1 -0
- package/.next-prod/server/app/api/snapshots/blob/route.js.nft.json +1 -0
- package/.next-prod/server/app/api/snapshots/blob/route_client-reference-manifest.js +1 -0
- 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/update/route.js +1 -1
- package/.next-prod/server/app/api/update/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/update-state/route.js +1 -1
- package/.next-prod/server/app/api/update-state/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 +1 -1
- 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 +1 -1
- 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 +1 -1
- 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 +1 -1
- 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 +4 -3
- package/.next-prod/server/chunks/2493.js +3 -3
- package/.next-prod/server/chunks/3286.js +2 -2
- package/.next-prod/server/chunks/4949.js +1 -0
- package/.next-prod/server/chunks/516.js +1 -1
- package/.next-prod/server/chunks/5750.js +13 -14
- package/.next-prod/server/chunks/6548.js +1 -1
- package/.next-prod/server/chunks/7184.js +4 -4
- package/.next-prod/server/chunks/816.js +1 -1
- package/.next-prod/server/chunks/9312.js +1 -1
- package/.next-prod/server/chunks/9352.js +1 -1
- 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/U8R610UNAk7MWsuSmrm28/_buildManifest.js +1 -0
- package/.next-prod/static/chunks/33372-5305e3772ba46050.js +34 -0
- package/.next-prod/static/chunks/46784-ff535f686b295919.js +716 -0
- package/.next-prod/static/chunks/96911-08609dc685108dcc.js +15 -0
- package/.next-prod/static/chunks/app/_global-error/{page-c1a2c7e62ce669f7.js → page-db8b43ac5e6e9ac5.js} +1 -1
- package/.next-prod/static/chunks/app/api/agent/test/{route-c1a2c7e62ce669f7.js → route-db8b43ac5e6e9ac5.js} +1 -1
- package/.next-prod/static/chunks/app/api/bash/{route-c1a2c7e62ce669f7.js → route-db8b43ac5e6e9ac5.js} +1 -1
- package/.next-prod/static/chunks/app/api/chat/codex/{route-c1a2c7e62ce669f7.js → route-db8b43ac5e6e9ac5.js} +1 -1
- package/.next-prod/static/chunks/app/api/chat/deepseek/route-db8b43ac5e6e9ac5.js +1 -0
- package/.next-prod/static/chunks/app/api/chat/glm/route-db8b43ac5e6e9ac5.js +1 -0
- package/.next-prod/static/chunks/app/api/chat/kimi/route-db8b43ac5e6e9ac5.js +1 -0
- package/.next-prod/static/chunks/app/api/chat/ollama/route-db8b43ac5e6e9ac5.js +1 -0
- package/.next-prod/static/chunks/app/api/chat/route-db8b43ac5e6e9ac5.js +1 -0
- package/.next-prod/static/chunks/app/api/chat/stop/route-db8b43ac5e6e9ac5.js +1 -0
- package/.next-prod/static/chunks/app/api/claude-stats/route-db8b43ac5e6e9ac5.js +1 -0
- package/.next-prod/static/chunks/app/api/commands/route-db8b43ac5e6e9ac5.js +1 -0
- package/.next-prod/static/chunks/app/api/comments/route-db8b43ac5e6e9ac5.js +1 -0
- package/.next-prod/static/chunks/app/api/db/columns/route-db8b43ac5e6e9ac5.js +1 -0
- package/.next-prod/static/chunks/app/api/db/connect/route-db8b43ac5e6e9ac5.js +1 -0
- package/.next-prod/static/chunks/app/api/db/disconnect/route-db8b43ac5e6e9ac5.js +1 -0
- package/.next-prod/static/chunks/app/api/db/export/route-db8b43ac5e6e9ac5.js +1 -0
- package/.next-prod/static/chunks/app/api/db/query/route-db8b43ac5e6e9ac5.js +1 -0
- package/.next-prod/static/chunks/app/api/db/schemas/route-db8b43ac5e6e9ac5.js +1 -0
- package/.next-prod/static/chunks/app/api/deepseek/balance/route-db8b43ac5e6e9ac5.js +1 -0
- package/.next-prod/static/chunks/app/api/deepseek/credentials/route-db8b43ac5e6e9ac5.js +1 -0
- package/.next-prod/static/chunks/app/api/deepseek/models/route-db8b43ac5e6e9ac5.js +1 -0
- package/.next-prod/static/chunks/app/api/dev/spans/route-db8b43ac5e6e9ac5.js +1 -0
- package/.next-prod/static/chunks/app/api/extension/version/route-db8b43ac5e6e9ac5.js +1 -0
- package/.next-prod/static/chunks/app/api/file/route-db8b43ac5e6e9ac5.js +1 -0
- package/.next-prod/static/chunks/app/api/files/blame/route-db8b43ac5e6e9ac5.js +1 -0
- package/.next-prod/static/chunks/app/api/files/clipboard/route-db8b43ac5e6e9ac5.js +1 -0
- package/.next-prod/static/chunks/app/api/files/copy/route-db8b43ac5e6e9ac5.js +1 -0
- package/.next-prod/static/chunks/app/api/files/delete/route-db8b43ac5e6e9ac5.js +1 -0
- package/.next-prod/static/chunks/app/api/files/expanded/route-db8b43ac5e6e9ac5.js +1 -0
- package/.next-prod/static/chunks/app/api/files/index/route-db8b43ac5e6e9ac5.js +1 -0
- package/.next-prod/static/chunks/app/api/files/init/route-db8b43ac5e6e9ac5.js +1 -0
- package/.next-prod/static/chunks/app/api/files/paste/route-db8b43ac5e6e9ac5.js +1 -0
- package/.next-prod/static/chunks/app/api/files/read/route-db8b43ac5e6e9ac5.js +1 -0
- package/.next-prod/static/chunks/app/api/files/readdir/route-db8b43ac5e6e9ac5.js +1 -0
- package/.next-prod/static/chunks/app/api/files/recent/route-db8b43ac5e6e9ac5.js +1 -0
- package/.next-prod/static/chunks/app/api/files/save/route-db8b43ac5e6e9ac5.js +1 -0
- package/.next-prod/static/chunks/app/api/files/search/route-db8b43ac5e6e9ac5.js +1 -0
- package/.next-prod/static/chunks/app/api/files/stat/route-db8b43ac5e6e9ac5.js +1 -0
- package/.next-prod/static/chunks/app/api/files/text/route-db8b43ac5e6e9ac5.js +1 -0
- package/.next-prod/static/chunks/app/api/git/blob/route-db8b43ac5e6e9ac5.js +1 -0
- package/.next-prod/static/chunks/app/api/git/branch-diff/route-db8b43ac5e6e9ac5.js +1 -0
- package/.next-prod/static/chunks/app/api/git/branches/route-db8b43ac5e6e9ac5.js +1 -0
- package/.next-prod/static/chunks/app/api/git/commit-diff/route-db8b43ac5e6e9ac5.js +1 -0
- package/.next-prod/static/chunks/app/api/git/commits/route-db8b43ac5e6e9ac5.js +1 -0
- package/.next-prod/static/chunks/app/api/git/current-branch/route-db8b43ac5e6e9ac5.js +1 -0
- package/.next-prod/static/chunks/app/api/git/diff/route-db8b43ac5e6e9ac5.js +1 -0
- package/.next-prod/static/chunks/app/api/git/discard/route-db8b43ac5e6e9ac5.js +1 -0
- package/.next-prod/static/chunks/app/api/git/stage/route-db8b43ac5e6e9ac5.js +1 -0
- package/.next-prod/static/chunks/app/api/git/status/route-db8b43ac5e6e9ac5.js +1 -0
- package/.next-prod/static/chunks/app/api/git/unstage/route-db8b43ac5e6e9ac5.js +1 -0
- package/.next-prod/static/chunks/app/api/git/worktree/route-db8b43ac5e6e9ac5.js +1 -0
- package/.next-prod/static/chunks/app/api/glm/credentials/route-db8b43ac5e6e9ac5.js +1 -0
- package/.next-prod/static/chunks/app/api/glm/models/route-db8b43ac5e6e9ac5.js +1 -0
- package/.next-prod/static/chunks/app/api/glm/usage/route-db8b43ac5e6e9ac5.js +1 -0
- package/.next-prod/static/chunks/app/api/global-state/route-db8b43ac5e6e9ac5.js +1 -0
- package/.next-prod/static/chunks/app/api/health/route-db8b43ac5e6e9ac5.js +1 -0
- package/.next-prod/static/chunks/app/api/html-apps/[id]/route-db8b43ac5e6e9ac5.js +1 -0
- package/.next-prod/static/chunks/app/api/html-apps/route-db8b43ac5e6e9ac5.js +1 -0
- package/.next-prod/static/chunks/app/api/jupyter/load/route-db8b43ac5e6e9ac5.js +1 -0
- package/.next-prod/static/chunks/app/api/jupyter/save/route-db8b43ac5e6e9ac5.js +1 -0
- package/.next-prod/static/chunks/app/api/jupyter/shutdown/route-db8b43ac5e6e9ac5.js +1 -0
- package/.next-prod/static/chunks/app/api/kimi/credentials/route-db8b43ac5e6e9ac5.js +1 -0
- package/.next-prod/static/chunks/app/api/kimi/models/route-db8b43ac5e6e9ac5.js +1 -0
- package/.next-prod/static/chunks/app/api/kimi/usage/route-db8b43ac5e6e9ac5.js +1 -0
- package/.next-prod/static/chunks/app/api/lsp/definition/route-db8b43ac5e6e9ac5.js +1 -0
- package/.next-prod/static/chunks/app/api/lsp/hover/route-db8b43ac5e6e9ac5.js +1 -0
- package/.next-prod/static/chunks/app/api/lsp/references/route-db8b43ac5e6e9ac5.js +1 -0
- package/.next-prod/static/chunks/app/api/lsp/status/route-db8b43ac5e6e9ac5.js +1 -0
- package/.next-prod/static/chunks/app/api/lsp/warmup/route-db8b43ac5e6e9ac5.js +1 -0
- package/.next-prod/static/chunks/app/api/mysql/columns/route-db8b43ac5e6e9ac5.js +1 -0
- package/.next-prod/static/chunks/app/api/mysql/connect/route-db8b43ac5e6e9ac5.js +1 -0
- package/.next-prod/static/chunks/app/api/mysql/disconnect/route-db8b43ac5e6e9ac5.js +1 -0
- package/.next-prod/static/chunks/app/api/mysql/export/route-db8b43ac5e6e9ac5.js +1 -0
- package/.next-prod/static/chunks/app/api/mysql/query/route-db8b43ac5e6e9ac5.js +1 -0
- package/.next-prod/static/chunks/app/api/mysql/schemas/route-db8b43ac5e6e9ac5.js +1 -0
- package/.next-prod/static/chunks/app/api/neo4j/connect/route-db8b43ac5e6e9ac5.js +1 -0
- package/.next-prod/static/chunks/app/api/neo4j/disconnect/route-db8b43ac5e6e9ac5.js +1 -0
- package/.next-prod/static/chunks/app/api/neo4j/query/route-db8b43ac5e6e9ac5.js +1 -0
- package/.next-prod/static/chunks/app/api/neo4j/schema/route-db8b43ac5e6e9ac5.js +1 -0
- package/.next-prod/static/chunks/app/api/note/route-db8b43ac5e6e9ac5.js +1 -0
- package/.next-prod/static/chunks/app/api/ollama/config/route-db8b43ac5e6e9ac5.js +1 -0
- package/.next-prod/static/chunks/app/api/ollama/models/route-db8b43ac5e6e9ac5.js +1 -0
- package/.next-prod/static/chunks/app/api/ollama/start/route-db8b43ac5e6e9ac5.js +1 -0
- package/.next-prod/static/chunks/app/api/open-cursor/route-db8b43ac5e6e9ac5.js +1 -0
- package/.next-prod/static/chunks/app/api/open-vscode/route-db8b43ac5e6e9ac5.js +1 -0
- package/.next-prod/static/chunks/app/api/pick-folder/route-db8b43ac5e6e9ac5.js +1 -0
- package/.next-prod/static/chunks/app/api/pinned-sessions/route-db8b43ac5e6e9ac5.js +1 -0
- package/.next-prod/static/chunks/app/api/project-settings/route-db8b43ac5e6e9ac5.js +1 -0
- package/.next-prod/static/chunks/app/api/project-state/route-db8b43ac5e6e9ac5.js +1 -0
- package/.next-prod/static/chunks/app/api/projectGraph/affected/route-db8b43ac5e6e9ac5.js +1 -0
- package/.next-prod/static/chunks/app/api/projectGraph/callees/route-db8b43ac5e6e9ac5.js +1 -0
- package/.next-prod/static/chunks/app/api/projectGraph/callers/route-db8b43ac5e6e9ac5.js +1 -0
- package/.next-prod/static/chunks/app/api/projectGraph/coedit/route-db8b43ac5e6e9ac5.js +1 -0
- package/.next-prod/static/chunks/app/api/projectGraph/context/route-db8b43ac5e6e9ac5.js +1 -0
- package/.next-prod/static/chunks/app/api/projectGraph/file/route-db8b43ac5e6e9ac5.js +1 -0
- package/.next-prod/static/chunks/app/api/projectGraph/file-functions/route-db8b43ac5e6e9ac5.js +1 -0
- package/.next-prod/static/chunks/app/api/projectGraph/impact/route-db8b43ac5e6e9ac5.js +1 -0
- package/.next-prod/static/chunks/app/api/projectGraph/related/route-db8b43ac5e6e9ac5.js +1 -0
- package/.next-prod/static/chunks/app/api/projectGraph/risk/route-db8b43ac5e6e9ac5.js +1 -0
- package/.next-prod/static/chunks/app/api/projectGraph/search/route-db8b43ac5e6e9ac5.js +1 -0
- package/.next-prod/static/chunks/app/api/projects/route-db8b43ac5e6e9ac5.js +1 -0
- package/.next-prod/static/chunks/app/api/prompts/config/route-db8b43ac5e6e9ac5.js +1 -0
- package/.next-prod/static/chunks/app/api/push/public-key/route-db8b43ac5e6e9ac5.js +1 -0
- package/.next-prod/static/chunks/app/api/push/subscribe/route-db8b43ac5e6e9ac5.js +1 -0
- package/.next-prod/static/chunks/app/api/push/unsubscribe/route-db8b43ac5e6e9ac5.js +1 -0
- package/.next-prod/static/chunks/app/api/redis/command/route-db8b43ac5e6e9ac5.js +1 -0
- package/.next-prod/static/chunks/app/api/redis/connect/route-db8b43ac5e6e9ac5.js +1 -0
- package/.next-prod/static/chunks/app/api/redis/delete/route-db8b43ac5e6e9ac5.js +1 -0
- package/.next-prod/static/chunks/app/api/redis/disconnect/route-db8b43ac5e6e9ac5.js +1 -0
- package/.next-prod/static/chunks/app/api/redis/get/route-db8b43ac5e6e9ac5.js +1 -0
- package/.next-prod/static/chunks/app/api/redis/keys/route-db8b43ac5e6e9ac5.js +1 -0
- package/.next-prod/static/chunks/app/api/redis/set/route-db8b43ac5e6e9ac5.js +1 -0
- package/.next-prod/static/chunks/app/api/restart/route-db8b43ac5e6e9ac5.js +1 -0
- package/.next-prod/static/chunks/app/api/review/[id]/comments/route-db8b43ac5e6e9ac5.js +1 -0
- package/.next-prod/static/chunks/app/api/review/[id]/replies/route-db8b43ac5e6e9ac5.js +1 -0
- package/.next-prod/static/chunks/app/api/review/[id]/route-db8b43ac5e6e9ac5.js +1 -0
- package/.next-prod/static/chunks/app/api/review/identify/route-db8b43ac5e6e9ac5.js +1 -0
- package/.next-prod/static/chunks/app/api/review/order/route-db8b43ac5e6e9ac5.js +1 -0
- package/.next-prod/static/chunks/app/api/review/route-db8b43ac5e6e9ac5.js +1 -0
- package/.next-prod/static/chunks/app/api/review/share-info/route-db8b43ac5e6e9ac5.js +1 -0
- package/.next-prod/static/chunks/app/api/review/users/route-db8b43ac5e6e9ac5.js +1 -0
- package/.next-prod/static/chunks/app/api/scheduled-tasks/route-db8b43ac5e6e9ac5.js +1 -0
- package/.next-prod/static/chunks/app/api/services/config/route-db8b43ac5e6e9ac5.js +1 -0
- package/.next-prod/static/chunks/app/api/services/scripts/route-db8b43ac5e6e9ac5.js +1 -0
- package/.next-prod/static/chunks/app/api/session/[sessionId]/fork/route-db8b43ac5e6e9ac5.js +1 -0
- package/.next-prod/static/chunks/app/api/session/[sessionId]/history/route-db8b43ac5e6e9ac5.js +1 -0
- package/.next-prod/static/chunks/app/api/session-by-path/route-db8b43ac5e6e9ac5.js +1 -0
- package/.next-prod/static/chunks/app/api/sessions/projects/[encodedPath]/route-db8b43ac5e6e9ac5.js +1 -0
- package/.next-prod/static/chunks/app/api/sessions/projects/route-db8b43ac5e6e9ac5.js +1 -0
- package/.next-prod/static/chunks/app/api/sessions/route-db8b43ac5e6e9ac5.js +1 -0
- package/.next-prod/static/chunks/app/api/settings/route-db8b43ac5e6e9ac5.js +1 -0
- package/.next-prod/static/chunks/app/api/shutdown/route-db8b43ac5e6e9ac5.js +1 -0
- package/.next-prod/static/chunks/app/api/skills/[id]/route-db8b43ac5e6e9ac5.js +1 -0
- package/.next-prod/static/chunks/app/api/skills/content/route-db8b43ac5e6e9ac5.js +1 -0
- package/.next-prod/static/chunks/app/api/skills/route-db8b43ac5e6e9ac5.js +1 -0
- package/.next-prod/static/chunks/app/api/snapshots/blob/route-db8b43ac5e6e9ac5.js +1 -0
- package/.next-prod/static/chunks/app/api/snapshots/diff/route-db8b43ac5e6e9ac5.js +1 -0
- package/.next-prod/static/chunks/app/api/snapshots/route-db8b43ac5e6e9ac5.js +1 -0
- package/.next-prod/static/chunks/app/api/terminal/aliases/route-db8b43ac5e6e9ac5.js +1 -0
- package/.next-prod/static/chunks/app/api/terminal/autocomplete/route-db8b43ac5e6e9ac5.js +1 -0
- package/.next-prod/static/chunks/app/api/terminal/bubble-order/route-db8b43ac5e6e9ac5.js +1 -0
- package/.next-prod/static/chunks/app/api/terminal/env/route-db8b43ac5e6e9ac5.js +1 -0
- package/.next-prod/static/chunks/app/api/terminal/history/route-db8b43ac5e6e9ac5.js +1 -0
- package/.next-prod/static/chunks/app/api/update/route-db8b43ac5e6e9ac5.js +1 -0
- package/.next-prod/static/chunks/app/api/update-state/route-db8b43ac5e6e9ac5.js +1 -0
- package/.next-prod/static/chunks/app/api/version/route-db8b43ac5e6e9ac5.js +1 -0
- package/.next-prod/static/chunks/app/apps/[...path]/route-db8b43ac5e6e9ac5.js +1 -0
- package/.next-prod/static/chunks/app/{layout-60f41d682cd860e9.js → layout-65e8647a35bd5ef0.js} +1 -1
- package/.next-prod/static/chunks/app/m/{page-7eabf179a8b13f49.js → page-69cf611ceae66f33.js} +1 -1
- package/.next-prod/static/chunks/app/manifest.webmanifest/route-db8b43ac5e6e9ac5.js +1 -0
- package/.next-prod/static/chunks/app/page-6931b763a22d95be.js +1 -0
- package/.next-prod/static/chunks/app/project/page-6931b763a22d95be.js +1 -0
- package/.next-prod/static/chunks/next/dist/client/components/builtin/app-error-db8b43ac5e6e9ac5.js +1 -0
- package/.next-prod/static/chunks/next/dist/client/components/builtin/forbidden-db8b43ac5e6e9ac5.js +1 -0
- package/.next-prod/static/chunks/next/dist/client/components/builtin/not-found-db8b43ac5e6e9ac5.js +1 -0
- package/.next-prod/static/chunks/next/dist/client/components/builtin/unauthorized-db8b43ac5e6e9ac5.js +1 -0
- package/.next-prod/static/css/303e8ac791ff3d31.css +1 -0
- package/.next-prod/trace +15 -14
- package/.next-prod/trace-build +1 -1
- package/.next-prod/types/app/api/snapshots/blob/route.ts +353 -0
- package/.next-prod/types/routes.d.ts +2 -1
- package/.next-prod/types/validator.ts +9 -0
- package/bin/cock-service.mjs +10 -8
- package/bin/cock.mjs +8 -6
- package/bin/postinstall.mjs +9 -8
- package/bin/updater.mjs +64 -26
- package/dist/{chunk-ZE2JXL6E.mjs → chunk-ETYX2YQF.mjs} +141 -59
- package/dist/{chunk-FBAFMLUC.mjs → chunk-SAKRITIQ.mjs} +3 -2
- package/dist/{chunk-H6AI4XJC.mjs → chunk-SGUW2QJI.mjs} +1 -1
- package/dist/httpApi.mjs +2 -2
- package/dist/scheduledTasks.mjs +174 -31
- package/dist/{server-HRP33LCV.mjs → server-C6LPAKPM.mjs} +2 -2
- package/dist/wsServer.mjs +8 -4
- package/package.json +6 -5
- package/public/html-lib/json-viewer.js +12 -12
- package/scripts/agentBinaries.mjs +86 -0
- package/.next-prod/server/chunks/9281.js +0 -1
- package/.next-prod/static/YOIsQRqVhYPuRyXlhwhoY/_buildManifest.js +0 -1
- package/.next-prod/static/chunks/33940-9631b513c48757f4.js +0 -35
- package/.next-prod/static/chunks/46784-031e2d50dc5f9fba.js +0 -716
- package/.next-prod/static/chunks/72353-f1aaa693ddc49568.js +0 -15
- package/.next-prod/static/chunks/app/api/chat/deepseek/route-c1a2c7e62ce669f7.js +0 -1
- package/.next-prod/static/chunks/app/api/chat/glm/route-c1a2c7e62ce669f7.js +0 -1
- package/.next-prod/static/chunks/app/api/chat/kimi/route-c1a2c7e62ce669f7.js +0 -1
- package/.next-prod/static/chunks/app/api/chat/ollama/route-c1a2c7e62ce669f7.js +0 -1
- package/.next-prod/static/chunks/app/api/chat/route-c1a2c7e62ce669f7.js +0 -1
- package/.next-prod/static/chunks/app/api/chat/stop/route-c1a2c7e62ce669f7.js +0 -1
- package/.next-prod/static/chunks/app/api/claude-stats/route-c1a2c7e62ce669f7.js +0 -1
- package/.next-prod/static/chunks/app/api/commands/route-c1a2c7e62ce669f7.js +0 -1
- package/.next-prod/static/chunks/app/api/comments/route-c1a2c7e62ce669f7.js +0 -1
- package/.next-prod/static/chunks/app/api/db/columns/route-c1a2c7e62ce669f7.js +0 -1
- package/.next-prod/static/chunks/app/api/db/connect/route-c1a2c7e62ce669f7.js +0 -1
- package/.next-prod/static/chunks/app/api/db/disconnect/route-c1a2c7e62ce669f7.js +0 -1
- package/.next-prod/static/chunks/app/api/db/export/route-c1a2c7e62ce669f7.js +0 -1
- package/.next-prod/static/chunks/app/api/db/query/route-c1a2c7e62ce669f7.js +0 -1
- package/.next-prod/static/chunks/app/api/db/schemas/route-c1a2c7e62ce669f7.js +0 -1
- package/.next-prod/static/chunks/app/api/deepseek/balance/route-c1a2c7e62ce669f7.js +0 -1
- package/.next-prod/static/chunks/app/api/deepseek/credentials/route-c1a2c7e62ce669f7.js +0 -1
- package/.next-prod/static/chunks/app/api/deepseek/models/route-c1a2c7e62ce669f7.js +0 -1
- package/.next-prod/static/chunks/app/api/dev/spans/route-c1a2c7e62ce669f7.js +0 -1
- package/.next-prod/static/chunks/app/api/extension/version/route-c1a2c7e62ce669f7.js +0 -1
- package/.next-prod/static/chunks/app/api/file/route-c1a2c7e62ce669f7.js +0 -1
- package/.next-prod/static/chunks/app/api/files/blame/route-c1a2c7e62ce669f7.js +0 -1
- package/.next-prod/static/chunks/app/api/files/clipboard/route-c1a2c7e62ce669f7.js +0 -1
- package/.next-prod/static/chunks/app/api/files/copy/route-c1a2c7e62ce669f7.js +0 -1
- package/.next-prod/static/chunks/app/api/files/delete/route-c1a2c7e62ce669f7.js +0 -1
- package/.next-prod/static/chunks/app/api/files/expanded/route-c1a2c7e62ce669f7.js +0 -1
- package/.next-prod/static/chunks/app/api/files/index/route-c1a2c7e62ce669f7.js +0 -1
- package/.next-prod/static/chunks/app/api/files/init/route-c1a2c7e62ce669f7.js +0 -1
- package/.next-prod/static/chunks/app/api/files/paste/route-c1a2c7e62ce669f7.js +0 -1
- package/.next-prod/static/chunks/app/api/files/read/route-c1a2c7e62ce669f7.js +0 -1
- package/.next-prod/static/chunks/app/api/files/readdir/route-c1a2c7e62ce669f7.js +0 -1
- package/.next-prod/static/chunks/app/api/files/recent/route-c1a2c7e62ce669f7.js +0 -1
- package/.next-prod/static/chunks/app/api/files/save/route-c1a2c7e62ce669f7.js +0 -1
- package/.next-prod/static/chunks/app/api/files/search/route-c1a2c7e62ce669f7.js +0 -1
- package/.next-prod/static/chunks/app/api/files/stat/route-c1a2c7e62ce669f7.js +0 -1
- package/.next-prod/static/chunks/app/api/files/text/route-c1a2c7e62ce669f7.js +0 -1
- package/.next-prod/static/chunks/app/api/git/blob/route-c1a2c7e62ce669f7.js +0 -1
- package/.next-prod/static/chunks/app/api/git/branch-diff/route-c1a2c7e62ce669f7.js +0 -1
- package/.next-prod/static/chunks/app/api/git/branches/route-c1a2c7e62ce669f7.js +0 -1
- package/.next-prod/static/chunks/app/api/git/commit-diff/route-c1a2c7e62ce669f7.js +0 -1
- package/.next-prod/static/chunks/app/api/git/commits/route-c1a2c7e62ce669f7.js +0 -1
- package/.next-prod/static/chunks/app/api/git/current-branch/route-c1a2c7e62ce669f7.js +0 -1
- package/.next-prod/static/chunks/app/api/git/diff/route-c1a2c7e62ce669f7.js +0 -1
- package/.next-prod/static/chunks/app/api/git/discard/route-c1a2c7e62ce669f7.js +0 -1
- package/.next-prod/static/chunks/app/api/git/stage/route-c1a2c7e62ce669f7.js +0 -1
- package/.next-prod/static/chunks/app/api/git/status/route-c1a2c7e62ce669f7.js +0 -1
- package/.next-prod/static/chunks/app/api/git/unstage/route-c1a2c7e62ce669f7.js +0 -1
- package/.next-prod/static/chunks/app/api/git/worktree/route-c1a2c7e62ce669f7.js +0 -1
- package/.next-prod/static/chunks/app/api/glm/credentials/route-c1a2c7e62ce669f7.js +0 -1
- package/.next-prod/static/chunks/app/api/glm/models/route-c1a2c7e62ce669f7.js +0 -1
- package/.next-prod/static/chunks/app/api/glm/usage/route-c1a2c7e62ce669f7.js +0 -1
- package/.next-prod/static/chunks/app/api/global-state/route-c1a2c7e62ce669f7.js +0 -1
- package/.next-prod/static/chunks/app/api/health/route-c1a2c7e62ce669f7.js +0 -1
- package/.next-prod/static/chunks/app/api/html-apps/[id]/route-c1a2c7e62ce669f7.js +0 -1
- package/.next-prod/static/chunks/app/api/html-apps/route-c1a2c7e62ce669f7.js +0 -1
- package/.next-prod/static/chunks/app/api/jupyter/load/route-c1a2c7e62ce669f7.js +0 -1
- package/.next-prod/static/chunks/app/api/jupyter/save/route-c1a2c7e62ce669f7.js +0 -1
- package/.next-prod/static/chunks/app/api/jupyter/shutdown/route-c1a2c7e62ce669f7.js +0 -1
- package/.next-prod/static/chunks/app/api/kimi/credentials/route-c1a2c7e62ce669f7.js +0 -1
- package/.next-prod/static/chunks/app/api/kimi/models/route-c1a2c7e62ce669f7.js +0 -1
- package/.next-prod/static/chunks/app/api/kimi/usage/route-c1a2c7e62ce669f7.js +0 -1
- package/.next-prod/static/chunks/app/api/lsp/definition/route-c1a2c7e62ce669f7.js +0 -1
- package/.next-prod/static/chunks/app/api/lsp/hover/route-c1a2c7e62ce669f7.js +0 -1
- package/.next-prod/static/chunks/app/api/lsp/references/route-c1a2c7e62ce669f7.js +0 -1
- package/.next-prod/static/chunks/app/api/lsp/status/route-c1a2c7e62ce669f7.js +0 -1
- package/.next-prod/static/chunks/app/api/lsp/warmup/route-c1a2c7e62ce669f7.js +0 -1
- package/.next-prod/static/chunks/app/api/mysql/columns/route-c1a2c7e62ce669f7.js +0 -1
- package/.next-prod/static/chunks/app/api/mysql/connect/route-c1a2c7e62ce669f7.js +0 -1
- package/.next-prod/static/chunks/app/api/mysql/disconnect/route-c1a2c7e62ce669f7.js +0 -1
- package/.next-prod/static/chunks/app/api/mysql/export/route-c1a2c7e62ce669f7.js +0 -1
- package/.next-prod/static/chunks/app/api/mysql/query/route-c1a2c7e62ce669f7.js +0 -1
- package/.next-prod/static/chunks/app/api/mysql/schemas/route-c1a2c7e62ce669f7.js +0 -1
- package/.next-prod/static/chunks/app/api/neo4j/connect/route-c1a2c7e62ce669f7.js +0 -1
- package/.next-prod/static/chunks/app/api/neo4j/disconnect/route-c1a2c7e62ce669f7.js +0 -1
- package/.next-prod/static/chunks/app/api/neo4j/query/route-c1a2c7e62ce669f7.js +0 -1
- package/.next-prod/static/chunks/app/api/neo4j/schema/route-c1a2c7e62ce669f7.js +0 -1
- package/.next-prod/static/chunks/app/api/note/route-c1a2c7e62ce669f7.js +0 -1
- package/.next-prod/static/chunks/app/api/ollama/config/route-c1a2c7e62ce669f7.js +0 -1
- package/.next-prod/static/chunks/app/api/ollama/models/route-c1a2c7e62ce669f7.js +0 -1
- package/.next-prod/static/chunks/app/api/ollama/start/route-c1a2c7e62ce669f7.js +0 -1
- package/.next-prod/static/chunks/app/api/open-cursor/route-c1a2c7e62ce669f7.js +0 -1
- package/.next-prod/static/chunks/app/api/open-vscode/route-c1a2c7e62ce669f7.js +0 -1
- package/.next-prod/static/chunks/app/api/pick-folder/route-c1a2c7e62ce669f7.js +0 -1
- package/.next-prod/static/chunks/app/api/pinned-sessions/route-c1a2c7e62ce669f7.js +0 -1
- package/.next-prod/static/chunks/app/api/project-settings/route-c1a2c7e62ce669f7.js +0 -1
- package/.next-prod/static/chunks/app/api/project-state/route-c1a2c7e62ce669f7.js +0 -1
- package/.next-prod/static/chunks/app/api/projectGraph/affected/route-c1a2c7e62ce669f7.js +0 -1
- package/.next-prod/static/chunks/app/api/projectGraph/callees/route-c1a2c7e62ce669f7.js +0 -1
- package/.next-prod/static/chunks/app/api/projectGraph/callers/route-c1a2c7e62ce669f7.js +0 -1
- package/.next-prod/static/chunks/app/api/projectGraph/coedit/route-c1a2c7e62ce669f7.js +0 -1
- package/.next-prod/static/chunks/app/api/projectGraph/context/route-c1a2c7e62ce669f7.js +0 -1
- package/.next-prod/static/chunks/app/api/projectGraph/file/route-c1a2c7e62ce669f7.js +0 -1
- package/.next-prod/static/chunks/app/api/projectGraph/file-functions/route-c1a2c7e62ce669f7.js +0 -1
- package/.next-prod/static/chunks/app/api/projectGraph/impact/route-c1a2c7e62ce669f7.js +0 -1
- package/.next-prod/static/chunks/app/api/projectGraph/related/route-c1a2c7e62ce669f7.js +0 -1
- package/.next-prod/static/chunks/app/api/projectGraph/risk/route-c1a2c7e62ce669f7.js +0 -1
- package/.next-prod/static/chunks/app/api/projectGraph/search/route-c1a2c7e62ce669f7.js +0 -1
- package/.next-prod/static/chunks/app/api/projects/route-c1a2c7e62ce669f7.js +0 -1
- package/.next-prod/static/chunks/app/api/prompts/config/route-c1a2c7e62ce669f7.js +0 -1
- package/.next-prod/static/chunks/app/api/push/public-key/route-c1a2c7e62ce669f7.js +0 -1
- package/.next-prod/static/chunks/app/api/push/subscribe/route-c1a2c7e62ce669f7.js +0 -1
- package/.next-prod/static/chunks/app/api/push/unsubscribe/route-c1a2c7e62ce669f7.js +0 -1
- package/.next-prod/static/chunks/app/api/redis/command/route-c1a2c7e62ce669f7.js +0 -1
- package/.next-prod/static/chunks/app/api/redis/connect/route-c1a2c7e62ce669f7.js +0 -1
- package/.next-prod/static/chunks/app/api/redis/delete/route-c1a2c7e62ce669f7.js +0 -1
- package/.next-prod/static/chunks/app/api/redis/disconnect/route-c1a2c7e62ce669f7.js +0 -1
- package/.next-prod/static/chunks/app/api/redis/get/route-c1a2c7e62ce669f7.js +0 -1
- package/.next-prod/static/chunks/app/api/redis/keys/route-c1a2c7e62ce669f7.js +0 -1
- package/.next-prod/static/chunks/app/api/redis/set/route-c1a2c7e62ce669f7.js +0 -1
- package/.next-prod/static/chunks/app/api/restart/route-c1a2c7e62ce669f7.js +0 -1
- package/.next-prod/static/chunks/app/api/review/[id]/comments/route-c1a2c7e62ce669f7.js +0 -1
- package/.next-prod/static/chunks/app/api/review/[id]/replies/route-c1a2c7e62ce669f7.js +0 -1
- package/.next-prod/static/chunks/app/api/review/[id]/route-c1a2c7e62ce669f7.js +0 -1
- package/.next-prod/static/chunks/app/api/review/identify/route-c1a2c7e62ce669f7.js +0 -1
- package/.next-prod/static/chunks/app/api/review/order/route-c1a2c7e62ce669f7.js +0 -1
- package/.next-prod/static/chunks/app/api/review/route-c1a2c7e62ce669f7.js +0 -1
- package/.next-prod/static/chunks/app/api/review/share-info/route-c1a2c7e62ce669f7.js +0 -1
- package/.next-prod/static/chunks/app/api/review/users/route-c1a2c7e62ce669f7.js +0 -1
- package/.next-prod/static/chunks/app/api/scheduled-tasks/route-c1a2c7e62ce669f7.js +0 -1
- package/.next-prod/static/chunks/app/api/services/config/route-c1a2c7e62ce669f7.js +0 -1
- package/.next-prod/static/chunks/app/api/services/scripts/route-c1a2c7e62ce669f7.js +0 -1
- package/.next-prod/static/chunks/app/api/session/[sessionId]/fork/route-c1a2c7e62ce669f7.js +0 -1
- package/.next-prod/static/chunks/app/api/session/[sessionId]/history/route-c1a2c7e62ce669f7.js +0 -1
- package/.next-prod/static/chunks/app/api/session-by-path/route-c1a2c7e62ce669f7.js +0 -1
- package/.next-prod/static/chunks/app/api/sessions/projects/[encodedPath]/route-c1a2c7e62ce669f7.js +0 -1
- package/.next-prod/static/chunks/app/api/sessions/projects/route-c1a2c7e62ce669f7.js +0 -1
- package/.next-prod/static/chunks/app/api/sessions/route-c1a2c7e62ce669f7.js +0 -1
- package/.next-prod/static/chunks/app/api/settings/route-c1a2c7e62ce669f7.js +0 -1
- package/.next-prod/static/chunks/app/api/shutdown/route-c1a2c7e62ce669f7.js +0 -1
- package/.next-prod/static/chunks/app/api/skills/[id]/route-c1a2c7e62ce669f7.js +0 -1
- package/.next-prod/static/chunks/app/api/skills/content/route-c1a2c7e62ce669f7.js +0 -1
- package/.next-prod/static/chunks/app/api/skills/route-c1a2c7e62ce669f7.js +0 -1
- package/.next-prod/static/chunks/app/api/snapshots/diff/route-c1a2c7e62ce669f7.js +0 -1
- package/.next-prod/static/chunks/app/api/snapshots/route-c1a2c7e62ce669f7.js +0 -1
- package/.next-prod/static/chunks/app/api/terminal/aliases/route-c1a2c7e62ce669f7.js +0 -1
- package/.next-prod/static/chunks/app/api/terminal/autocomplete/route-c1a2c7e62ce669f7.js +0 -1
- package/.next-prod/static/chunks/app/api/terminal/bubble-order/route-c1a2c7e62ce669f7.js +0 -1
- package/.next-prod/static/chunks/app/api/terminal/env/route-c1a2c7e62ce669f7.js +0 -1
- package/.next-prod/static/chunks/app/api/terminal/history/route-c1a2c7e62ce669f7.js +0 -1
- package/.next-prod/static/chunks/app/api/update/route-c1a2c7e62ce669f7.js +0 -1
- package/.next-prod/static/chunks/app/api/update-state/route-c1a2c7e62ce669f7.js +0 -1
- package/.next-prod/static/chunks/app/api/version/route-c1a2c7e62ce669f7.js +0 -1
- package/.next-prod/static/chunks/app/apps/[...path]/route-c1a2c7e62ce669f7.js +0 -1
- package/.next-prod/static/chunks/app/manifest.webmanifest/route-c1a2c7e62ce669f7.js +0 -1
- package/.next-prod/static/chunks/app/page-e83cd7365efbf878.js +0 -1
- package/.next-prod/static/chunks/app/project/page-e83cd7365efbf878.js +0 -1
- package/.next-prod/static/chunks/next/dist/client/components/builtin/app-error-c1a2c7e62ce669f7.js +0 -1
- package/.next-prod/static/chunks/next/dist/client/components/builtin/forbidden-c1a2c7e62ce669f7.js +0 -1
- package/.next-prod/static/chunks/next/dist/client/components/builtin/not-found-c1a2c7e62ce669f7.js +0 -1
- package/.next-prod/static/chunks/next/dist/client/components/builtin/unauthorized-c1a2c7e62ce669f7.js +0 -1
- package/.next-prod/static/css/45835d91c2519c62.css +0 -1
- package/scripts/claudeBinary.mjs +0 -38
- /package/.next-prod/static/{YOIsQRqVhYPuRyXlhwhoY → U8R610UNAk7MWsuSmrm28}/_ssgManifest.js +0 -0
package/bin/updater.mjs
CHANGED
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
// losing the token would silently turn a tunnel-exposed instance into an open
|
|
19
19
|
// one, so it must never be re-derived from defaults.
|
|
20
20
|
import { spawn, spawnSync } from 'child_process';
|
|
21
|
-
import { appendFileSync, existsSync, mkdirSync, openSync, readFileSync, writeFileSync } from 'fs';
|
|
21
|
+
import { appendFileSync, existsSync, mkdirSync, openSync, readdirSync, readFileSync, writeFileSync } from 'fs';
|
|
22
22
|
import { createServer } from 'http';
|
|
23
23
|
import { createRequire } from 'module';
|
|
24
24
|
import { dirname, join } from 'path';
|
|
@@ -152,9 +152,9 @@ function pidAlive(pid) {
|
|
|
152
152
|
}
|
|
153
153
|
|
|
154
154
|
/**
|
|
155
|
-
*
|
|
155
|
+
* Which bundled agent CLIs are missing their platform-specific native binary.
|
|
156
156
|
*
|
|
157
|
-
* DUPLICATED from scripts/
|
|
157
|
+
* DUPLICATED from scripts/agentBinaries.mjs — change both together. This file
|
|
158
158
|
* cannot import it: it runs from <cockpitHome>/updater/ precisely because
|
|
159
159
|
* `npm i -g` deletes the install directory mid-run (see the header).
|
|
160
160
|
*
|
|
@@ -164,21 +164,50 @@ function pidAlive(pid) {
|
|
|
164
164
|
* single time — which, given what the caller does about it, would mean
|
|
165
165
|
* uninstalling and reinstalling cockpit on every update.
|
|
166
166
|
*/
|
|
167
|
-
function
|
|
167
|
+
function missingAgentBinaries() {
|
|
168
|
+
const missing = [];
|
|
169
|
+
let req;
|
|
168
170
|
try {
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
//
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
171
|
+
req = createRequire(join(installRoot, 'package.json'));
|
|
172
|
+
} catch {
|
|
173
|
+
// Install tree unreadable — same answer as everything missing.
|
|
174
|
+
return ['Claude', 'Codex'];
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
const dirOf = (name) => {
|
|
178
|
+
try {
|
|
179
|
+
return dirname(req.resolve(`${name}/package.json`));
|
|
180
|
+
} catch {
|
|
181
|
+
return null;
|
|
179
182
|
}
|
|
180
|
-
}
|
|
181
|
-
|
|
183
|
+
};
|
|
184
|
+
|
|
185
|
+
const base = `${process.platform}-${process.arch}`;
|
|
186
|
+
// linux ships glibc and musl variants of the Claude binary under distinct package names.
|
|
187
|
+
const claudeVariants = process.platform === 'linux' ? [base, `${base}-musl`] : [base];
|
|
188
|
+
const hasClaude = claudeVariants.some((variant) => {
|
|
189
|
+
const dir = dirOf(`@anthropic-ai/claude-agent-sdk-${variant}`);
|
|
190
|
+
if (!dir) return false;
|
|
191
|
+
const bin = join(dir, 'claude');
|
|
192
|
+
return existsSync(bin) || existsSync(`${bin}.exe`);
|
|
193
|
+
});
|
|
194
|
+
if (!hasClaude) missing.push('Claude');
|
|
195
|
+
|
|
196
|
+
// Codex nests its binary under a Rust target triple; scan vendor/ rather than
|
|
197
|
+
// reproducing codex-sdk's private platform->triple table. No musl split here.
|
|
198
|
+
let hasCodex = false;
|
|
199
|
+
const codexDir = dirOf(`@openai/codex-${base}`);
|
|
200
|
+
if (codexDir) {
|
|
201
|
+
try {
|
|
202
|
+
hasCodex = readdirSync(join(codexDir, 'vendor')).some((target) => {
|
|
203
|
+
const bin = join(codexDir, 'vendor', target, 'bin', 'codex');
|
|
204
|
+
return existsSync(bin) || existsSync(`${bin}.exe`);
|
|
205
|
+
});
|
|
206
|
+
} catch { /* no vendor dir — same answer as missing */ }
|
|
207
|
+
}
|
|
208
|
+
if (!hasCodex) missing.push('Codex');
|
|
209
|
+
|
|
210
|
+
return missing;
|
|
182
211
|
}
|
|
183
212
|
|
|
184
213
|
function readInstalledVersion() {
|
|
@@ -282,15 +311,19 @@ function startServer() {
|
|
|
282
311
|
const MANUAL_FIX = `npm uninstall -g ${PKG} && npm install -g ${PKG}`;
|
|
283
312
|
|
|
284
313
|
/**
|
|
285
|
-
* Make sure the
|
|
314
|
+
* Make sure the agents' platform-specific native binaries survived the install.
|
|
286
315
|
*
|
|
287
|
-
*
|
|
316
|
+
* They ship as OPTIONAL dependencies, and npm skips them often enough during an
|
|
288
317
|
* in-place `npm i -g` that cock-service.mjs guards the offline path the same
|
|
289
318
|
* way. Nothing else notices: the install exits 0, the server comes back, and
|
|
290
319
|
* chat dies at the first message with "Native CLI binary not found". This path
|
|
291
320
|
* — the UI button — had no guard at all, so it reported "update complete" and
|
|
292
321
|
* handed back a Cockpit that could not chat.
|
|
293
322
|
*
|
|
323
|
+
* Codex fails more quietly than Claude: rather than throwing, its engine falls
|
|
324
|
+
* back to whatever `codex` is on PATH — an unpinned build the SDK was never
|
|
325
|
+
* paired with. That is why both are checked here, not just Claude.
|
|
326
|
+
*
|
|
294
327
|
* Escalates deliberately. The clean uninstall is the only thing that reliably
|
|
295
328
|
* makes npm refetch a skipped optional dep, but it DELETES a working install,
|
|
296
329
|
* so it runs only after --force has failed. If the reinstall then fails we are
|
|
@@ -298,15 +331,16 @@ const MANUAL_FIX = `npm uninstall -g ${PKG} && npm install -g ${PKG}`;
|
|
|
298
331
|
* resort — and why the status port matters here: with no server, that card is
|
|
299
332
|
* the only channel left to tell the user what to run.
|
|
300
333
|
*/
|
|
301
|
-
async function
|
|
302
|
-
|
|
334
|
+
async function repairAgentBinaries() {
|
|
335
|
+
let missing = missingAgentBinaries();
|
|
336
|
+
if (!missing.length) return { ok: true };
|
|
303
337
|
|
|
304
|
-
log(
|
|
338
|
+
log(`native ${missing.join(' and ')} binary missing after install — repairing`);
|
|
305
339
|
writeState({ ...currentState, phase: 'repairing' });
|
|
306
340
|
|
|
307
341
|
// Non-destructive first: --force re-reifies the tree without removing it.
|
|
308
342
|
await runNpm(['install', '-g', `${PKG}@${target}`, '--include=optional', '--force']);
|
|
309
|
-
if (
|
|
343
|
+
if (!missingAgentBinaries().length) {
|
|
310
344
|
log('repaired with --force');
|
|
311
345
|
return { ok: true };
|
|
312
346
|
}
|
|
@@ -321,11 +355,15 @@ async function repairClaudeBinary() {
|
|
|
321
355
|
}
|
|
322
356
|
return { ok: false, reason: `reinstall failed: ${reinstall.reason}` };
|
|
323
357
|
}
|
|
324
|
-
|
|
358
|
+
missing = missingAgentBinaries();
|
|
359
|
+
if (!missing.length) {
|
|
325
360
|
log('repaired with uninstall + reinstall');
|
|
326
361
|
return { ok: true };
|
|
327
362
|
}
|
|
328
|
-
return {
|
|
363
|
+
return {
|
|
364
|
+
ok: false,
|
|
365
|
+
reason: `the native ${missing.join(' and ')} binary is still missing; ${missing.length > 1 ? 'those engines' : 'that engine'} will not work`,
|
|
366
|
+
};
|
|
329
367
|
}
|
|
330
368
|
|
|
331
369
|
async function main() {
|
|
@@ -403,8 +441,8 @@ async function main() {
|
|
|
403
441
|
return;
|
|
404
442
|
}
|
|
405
443
|
|
|
406
|
-
// 3b. Installed — but not necessarily complete. See
|
|
407
|
-
const repair = await
|
|
444
|
+
// 3b. Installed — but not necessarily complete. See repairAgentBinaries.
|
|
445
|
+
const repair = await repairAgentBinaries();
|
|
408
446
|
|
|
409
447
|
const installed = readInstalledVersion();
|
|
410
448
|
log(`installed version now: ${installed} (install took ${installMs}ms)`);
|
|
@@ -6812,67 +6812,67 @@ var Or = (self, that) => {
|
|
|
6812
6812
|
});
|
|
6813
6813
|
return error;
|
|
6814
6814
|
};
|
|
6815
|
-
var InvalidData = (
|
|
6815
|
+
var InvalidData = (path2, message, options = {
|
|
6816
6816
|
pathDelim: "."
|
|
6817
6817
|
}) => {
|
|
6818
6818
|
const error = Object.create(proto2);
|
|
6819
6819
|
error._op = OP_INVALID_DATA;
|
|
6820
|
-
error.path =
|
|
6820
|
+
error.path = path2;
|
|
6821
6821
|
error.message = message;
|
|
6822
6822
|
Object.defineProperty(error, "toString", {
|
|
6823
6823
|
enumerable: false,
|
|
6824
6824
|
value() {
|
|
6825
|
-
const
|
|
6826
|
-
return `(Invalid data at ${
|
|
6825
|
+
const path3 = pipe(this.path, join(options.pathDelim));
|
|
6826
|
+
return `(Invalid data at ${path3}: "${this.message}")`;
|
|
6827
6827
|
}
|
|
6828
6828
|
});
|
|
6829
6829
|
return error;
|
|
6830
6830
|
};
|
|
6831
|
-
var MissingData = (
|
|
6831
|
+
var MissingData = (path2, message, options = {
|
|
6832
6832
|
pathDelim: "."
|
|
6833
6833
|
}) => {
|
|
6834
6834
|
const error = Object.create(proto2);
|
|
6835
6835
|
error._op = OP_MISSING_DATA;
|
|
6836
|
-
error.path =
|
|
6836
|
+
error.path = path2;
|
|
6837
6837
|
error.message = message;
|
|
6838
6838
|
Object.defineProperty(error, "toString", {
|
|
6839
6839
|
enumerable: false,
|
|
6840
6840
|
value() {
|
|
6841
|
-
const
|
|
6842
|
-
return `(Missing data at ${
|
|
6841
|
+
const path3 = pipe(this.path, join(options.pathDelim));
|
|
6842
|
+
return `(Missing data at ${path3}: "${this.message}")`;
|
|
6843
6843
|
}
|
|
6844
6844
|
});
|
|
6845
6845
|
return error;
|
|
6846
6846
|
};
|
|
6847
|
-
var SourceUnavailable = (
|
|
6847
|
+
var SourceUnavailable = (path2, message, cause3, options = {
|
|
6848
6848
|
pathDelim: "."
|
|
6849
6849
|
}) => {
|
|
6850
6850
|
const error = Object.create(proto2);
|
|
6851
6851
|
error._op = OP_SOURCE_UNAVAILABLE;
|
|
6852
|
-
error.path =
|
|
6852
|
+
error.path = path2;
|
|
6853
6853
|
error.message = message;
|
|
6854
6854
|
error.cause = cause3;
|
|
6855
6855
|
Object.defineProperty(error, "toString", {
|
|
6856
6856
|
enumerable: false,
|
|
6857
6857
|
value() {
|
|
6858
|
-
const
|
|
6859
|
-
return `(Source unavailable at ${
|
|
6858
|
+
const path3 = pipe(this.path, join(options.pathDelim));
|
|
6859
|
+
return `(Source unavailable at ${path3}: "${this.message}")`;
|
|
6860
6860
|
}
|
|
6861
6861
|
});
|
|
6862
6862
|
return error;
|
|
6863
6863
|
};
|
|
6864
|
-
var Unsupported = (
|
|
6864
|
+
var Unsupported = (path2, message, options = {
|
|
6865
6865
|
pathDelim: "."
|
|
6866
6866
|
}) => {
|
|
6867
6867
|
const error = Object.create(proto2);
|
|
6868
6868
|
error._op = OP_UNSUPPORTED;
|
|
6869
|
-
error.path =
|
|
6869
|
+
error.path = path2;
|
|
6870
6870
|
error.message = message;
|
|
6871
6871
|
Object.defineProperty(error, "toString", {
|
|
6872
6872
|
enumerable: false,
|
|
6873
6873
|
value() {
|
|
6874
|
-
const
|
|
6875
|
-
return `(Unsupported operation at ${
|
|
6874
|
+
const path3 = pipe(this.path, join(options.pathDelim));
|
|
6875
|
+
return `(Unsupported operation at ${path3}: "${this.message}")`;
|
|
6876
6876
|
}
|
|
6877
6877
|
});
|
|
6878
6878
|
return error;
|
|
@@ -6987,9 +6987,9 @@ var isMissingDataOnly = (self) => reduceWithContext2(self, void 0, IsMissingData
|
|
|
6987
6987
|
var empty17 = {
|
|
6988
6988
|
_tag: "Empty"
|
|
6989
6989
|
};
|
|
6990
|
-
var patch5 = /* @__PURE__ */ dual(2, (
|
|
6990
|
+
var patch5 = /* @__PURE__ */ dual(2, (path2, patch9) => {
|
|
6991
6991
|
let input = of3(patch9);
|
|
6992
|
-
let output =
|
|
6992
|
+
let output = path2;
|
|
6993
6993
|
while (isCons(input)) {
|
|
6994
6994
|
const patch10 = input.head;
|
|
6995
6995
|
switch (patch10._tag) {
|
|
@@ -7056,7 +7056,7 @@ var make20 = (options) => ({
|
|
|
7056
7056
|
var makeFlat = (options) => ({
|
|
7057
7057
|
[FlatConfigProviderTypeId]: FlatConfigProviderTypeId,
|
|
7058
7058
|
patch: options.patch,
|
|
7059
|
-
load: (
|
|
7059
|
+
load: (path2, config2, split3 = true) => options.load(path2, config2, split3),
|
|
7060
7060
|
enumerateChildren: options.enumerateChildren
|
|
7061
7061
|
});
|
|
7062
7062
|
var fromFlat = (flat) => make20({
|
|
@@ -7074,29 +7074,29 @@ var fromEnv = (options) => {
|
|
|
7074
7074
|
pathDelim: "_",
|
|
7075
7075
|
seqDelim: ","
|
|
7076
7076
|
}, options);
|
|
7077
|
-
const makePathString = (
|
|
7077
|
+
const makePathString = (path2) => pipe(path2, join(pathDelim));
|
|
7078
7078
|
const unmakePathString = (pathString) => pathString.split(pathDelim);
|
|
7079
7079
|
const getEnv = () => typeof process !== "undefined" && "env" in process && typeof process.env === "object" ? process.env : {};
|
|
7080
|
-
const load = (
|
|
7081
|
-
const pathString = makePathString(
|
|
7080
|
+
const load = (path2, primitive3, split3 = true) => {
|
|
7081
|
+
const pathString = makePathString(path2);
|
|
7082
7082
|
const current2 = getEnv();
|
|
7083
7083
|
const valueOpt = pathString in current2 ? some2(current2[pathString]) : none2();
|
|
7084
|
-
return pipe(valueOpt, mapError(() => MissingData(
|
|
7084
|
+
return pipe(valueOpt, mapError(() => MissingData(path2, `Expected ${pathString} to exist in the process context`)), flatMap8((value) => parsePrimitive(value, path2, primitive3, seqDelim, split3)));
|
|
7085
7085
|
};
|
|
7086
|
-
const enumerateChildren = (
|
|
7086
|
+
const enumerateChildren = (path2) => sync(() => {
|
|
7087
7087
|
const current2 = getEnv();
|
|
7088
7088
|
const keys5 = Object.keys(current2);
|
|
7089
7089
|
const keyPaths = keys5.map((value) => unmakePathString(value.toUpperCase()));
|
|
7090
7090
|
const filteredKeyPaths = keyPaths.filter((keyPath) => {
|
|
7091
|
-
for (let i = 0; i <
|
|
7092
|
-
const pathComponent = pipe(
|
|
7091
|
+
for (let i = 0; i < path2.length; i++) {
|
|
7092
|
+
const pathComponent = pipe(path2, unsafeGet(i));
|
|
7093
7093
|
const currentElement = keyPath[i];
|
|
7094
7094
|
if (currentElement === void 0 || pathComponent !== currentElement) {
|
|
7095
7095
|
return false;
|
|
7096
7096
|
}
|
|
7097
7097
|
}
|
|
7098
7098
|
return true;
|
|
7099
|
-
}).flatMap((keyPath) => keyPath.slice(
|
|
7099
|
+
}).flatMap((keyPath) => keyPath.slice(path2.length, path2.length + 1));
|
|
7100
7100
|
return fromIterable6(filteredKeyPaths);
|
|
7101
7101
|
});
|
|
7102
7102
|
return fromFlat(makeFlat({
|
|
@@ -7112,17 +7112,17 @@ var extend = (leftDef, rightDef, left3, right3) => {
|
|
|
7112
7112
|
const rightExtension = concat(right3, rightPad);
|
|
7113
7113
|
return [leftExtension, rightExtension];
|
|
7114
7114
|
};
|
|
7115
|
-
var appendConfigPath = (
|
|
7115
|
+
var appendConfigPath = (path2, config2) => {
|
|
7116
7116
|
let op = config2;
|
|
7117
7117
|
if (op._tag === "Nested") {
|
|
7118
|
-
const out =
|
|
7118
|
+
const out = path2.slice();
|
|
7119
7119
|
while (op._tag === "Nested") {
|
|
7120
7120
|
out.push(op.name);
|
|
7121
7121
|
op = op.config;
|
|
7122
7122
|
}
|
|
7123
7123
|
return out;
|
|
7124
7124
|
}
|
|
7125
|
-
return
|
|
7125
|
+
return path2;
|
|
7126
7126
|
};
|
|
7127
7127
|
var fromFlatLoop = (flat, prefix, config2, split3) => {
|
|
7128
7128
|
const op = config2;
|
|
@@ -7198,8 +7198,8 @@ var fromFlatLoop = (flat, prefix, config2, split3) => {
|
|
|
7198
7198
|
return fail2(right3.left);
|
|
7199
7199
|
}
|
|
7200
7200
|
if (isRight2(left3) && isRight2(right3)) {
|
|
7201
|
-
const
|
|
7202
|
-
const fail20 = fromFlatLoopFail(prefix,
|
|
7201
|
+
const path2 = pipe(prefix, join("."));
|
|
7202
|
+
const fail20 = fromFlatLoopFail(prefix, path2);
|
|
7203
7203
|
const [lefts, rights] = extend(fail20, fail20, pipe(left3.right, map3(right2)), pipe(right3.right, map3(right2)));
|
|
7204
7204
|
return pipe(lefts, zip(rights), forEachSequential(([left4, right4]) => pipe(zip2(left4, right4), map10(([left5, right5]) => op.zip(left5, right5)))));
|
|
7205
7205
|
}
|
|
@@ -7208,19 +7208,19 @@ var fromFlatLoop = (flat, prefix, config2, split3) => {
|
|
|
7208
7208
|
}
|
|
7209
7209
|
}
|
|
7210
7210
|
};
|
|
7211
|
-
var fromFlatLoopFail = (prefix,
|
|
7211
|
+
var fromFlatLoopFail = (prefix, path2) => (index) => left2(MissingData(prefix, `The element at index ${index} in a sequence at path "${path2}" was missing`));
|
|
7212
7212
|
var splitPathString = (text, delim) => {
|
|
7213
7213
|
const split3 = text.split(new RegExp(`\\s*${escape(delim)}\\s*`));
|
|
7214
7214
|
return split3;
|
|
7215
7215
|
};
|
|
7216
|
-
var parsePrimitive = (text,
|
|
7216
|
+
var parsePrimitive = (text, path2, primitive3, delimiter, split3) => {
|
|
7217
7217
|
if (!split3) {
|
|
7218
7218
|
return pipe(primitive3.parse(text), mapBoth({
|
|
7219
|
-
onFailure: prefixed(
|
|
7219
|
+
onFailure: prefixed(path2),
|
|
7220
7220
|
onSuccess: of
|
|
7221
7221
|
}));
|
|
7222
7222
|
}
|
|
7223
|
-
return pipe(splitPathString(text, delimiter), forEachSequential((char) => primitive3.parse(char.trim())), mapError(prefixed(
|
|
7223
|
+
return pipe(splitPathString(text, delimiter), forEachSequential((char) => primitive3.parse(char.trim())), mapError(prefixed(path2)));
|
|
7224
7224
|
};
|
|
7225
7225
|
var transpose = (array6) => {
|
|
7226
7226
|
return Object.keys(array6[0]).map((column) => array6.map((row) => row[column]));
|
|
@@ -28601,10 +28601,10 @@ function serializeValue(val) {
|
|
|
28601
28601
|
};
|
|
28602
28602
|
}
|
|
28603
28603
|
if (val && typeof val === "object" && "segments" in val) {
|
|
28604
|
-
const
|
|
28604
|
+
const path2 = val;
|
|
28605
28605
|
return {
|
|
28606
28606
|
_type: "path",
|
|
28607
|
-
segments:
|
|
28607
|
+
segments: path2.segments.map((s) => ({
|
|
28608
28608
|
start: serializeValue(s.start),
|
|
28609
28609
|
relationship: serializeValue(s.relationship),
|
|
28610
28610
|
end: serializeValue(s.end)
|
|
@@ -28629,14 +28629,14 @@ import { execSync } from "child_process";
|
|
|
28629
28629
|
|
|
28630
28630
|
// packages/shared/utils/src/encodePath.ts
|
|
28631
28631
|
var CLAUDE_ENCODED_MAX_LEN = 200;
|
|
28632
|
-
function claudePathHash(
|
|
28632
|
+
function claudePathHash(path2) {
|
|
28633
28633
|
let h = 0;
|
|
28634
|
-
for (let i = 0; i <
|
|
28634
|
+
for (let i = 0; i < path2.length; i++) h = (h << 5) - h + path2.charCodeAt(i) | 0;
|
|
28635
28635
|
return Math.abs(h).toString(36);
|
|
28636
28636
|
}
|
|
28637
|
-
function encodePath(
|
|
28638
|
-
const encoded =
|
|
28639
|
-
return encoded.length <= CLAUDE_ENCODED_MAX_LEN ? encoded : `${encoded.slice(0, CLAUDE_ENCODED_MAX_LEN)}-${claudePathHash(
|
|
28637
|
+
function encodePath(path2) {
|
|
28638
|
+
const encoded = path2.replace(/[^a-zA-Z0-9]/g, "-");
|
|
28639
|
+
return encoded.length <= CLAUDE_ENCODED_MAX_LEN ? encoded : `${encoded.slice(0, CLAUDE_ENCODED_MAX_LEN)}-${claudePathHash(path2)}`;
|
|
28640
28640
|
}
|
|
28641
28641
|
|
|
28642
28642
|
// packages/shared/utils/src/paths.ts
|
|
@@ -29976,6 +29976,28 @@ import { execFile } from "child_process";
|
|
|
29976
29976
|
import { createHash } from "crypto";
|
|
29977
29977
|
import { mkdir as mkdir2, readFile as readFile2, writeFile as writeFile2, readdir, rm, stat, rename } from "fs/promises";
|
|
29978
29978
|
import { basename, join as join5, isAbsolute, relative, sep } from "path";
|
|
29979
|
+
|
|
29980
|
+
// packages/feature/explorer/src/server/files/shared.ts
|
|
29981
|
+
import path from "path";
|
|
29982
|
+
var MAX_TEXT_SIZE = 10 * 1024 * 1024;
|
|
29983
|
+
var MAX_IMAGE_SIZE = 50 * 1024 * 1024;
|
|
29984
|
+
var MAX_PDF_SIZE = 100 * 1024 * 1024;
|
|
29985
|
+
var IMAGE_EXTENSIONS = /* @__PURE__ */ new Set([
|
|
29986
|
+
".png",
|
|
29987
|
+
".jpg",
|
|
29988
|
+
".jpeg",
|
|
29989
|
+
".gif",
|
|
29990
|
+
".webp",
|
|
29991
|
+
".svg",
|
|
29992
|
+
".ico",
|
|
29993
|
+
".bmp",
|
|
29994
|
+
".avif"
|
|
29995
|
+
]);
|
|
29996
|
+
function isImagePath(filePath) {
|
|
29997
|
+
return IMAGE_EXTENSIONS.has(path.extname(filePath).toLowerCase());
|
|
29998
|
+
}
|
|
29999
|
+
|
|
30000
|
+
// packages/feature/agent/src/effect/snapshotLive.ts
|
|
29979
30001
|
var BUILTIN_EXCLUDES = [
|
|
29980
30002
|
".git/",
|
|
29981
30003
|
"node_modules/",
|
|
@@ -30052,6 +30074,7 @@ var commitFromLogRecord = (record) => {
|
|
|
30052
30074
|
timestamp: Number(ts) || 0,
|
|
30053
30075
|
subject: body.split("\n")[0] ?? "",
|
|
30054
30076
|
sessionKey: trailers["Session"] ?? null,
|
|
30077
|
+
runId: trailers["Run-Id"] ?? null,
|
|
30055
30078
|
toolId: trailers["Tool-Id"] ?? null,
|
|
30056
30079
|
toolName: trailers["Tool"] ?? null,
|
|
30057
30080
|
toolFiles,
|
|
@@ -30227,12 +30250,17 @@ Cockpit-Kind: baseline`
|
|
|
30227
30250
|
yield* runGitOk(repoDir, cwd, ["symbolic-ref", "HEAD", branch]);
|
|
30228
30251
|
});
|
|
30229
30252
|
var sanitizeSubject = (s) => s.replace(/[\u0000-\u001f\u007f]+/g, " ").replace(/\s+/g, " ").trim().slice(0, 80);
|
|
30253
|
+
var sanitizeTrailerValue = (s) => s.replace(/[\u0000-\u001f\u007f]+/g, " ").trim().slice(0, 128);
|
|
30230
30254
|
var buildCommitMessage = (trigger, relFiles, kind) => {
|
|
30231
30255
|
const detail = relFiles.length > 0 ? relFiles.length === 1 ? relFiles[0] : `${relFiles[0]} +${relFiles.length - 1}` : trigger.toolDetail ?? "";
|
|
30232
30256
|
const subject = kind === "baseline" ? "baseline" : sanitizeSubject(`[${trigger.toolName ?? "tool"}] ${detail}`);
|
|
30233
30257
|
const trailers = [
|
|
30234
30258
|
`Cockpit-Kind: ${kind}`,
|
|
30235
30259
|
`Cockpit-Session: ${trigger.sessionKey}`,
|
|
30260
|
+
// Scopes the tool id to ONE dispatch. Required because codex restarts its
|
|
30261
|
+
// live `item_N` counter every turn, so the tool id alone (and even
|
|
30262
|
+
// tool id + session) matches earlier turns of the same session.
|
|
30263
|
+
...trigger.runId ? [`Cockpit-Run-Id: ${sanitizeTrailerValue(trigger.runId)}`] : [],
|
|
30236
30264
|
`Cockpit-Provider: ${trigger.provider}`,
|
|
30237
30265
|
...trigger.toolId ? [`Cockpit-Tool-Id: ${trigger.toolId}`] : [],
|
|
30238
30266
|
...trigger.toolName ? [`Cockpit-Tool: ${trigger.toolName}`] : [],
|
|
@@ -30279,10 +30307,10 @@ var snapshotOnce = (snapshotsRoot, maxFileBytes, trigger, kind) => Effect_export
|
|
|
30279
30307
|
const addPaths = [];
|
|
30280
30308
|
const rmPaths = [];
|
|
30281
30309
|
for (const e of entries2) {
|
|
30282
|
-
const
|
|
30283
|
-
if (!
|
|
30284
|
-
if (e[0] === "D" || e[1] === "D") rmPaths.push(
|
|
30285
|
-
else addPaths.push(
|
|
30310
|
+
const path2 = e.slice(3);
|
|
30311
|
+
if (!path2) continue;
|
|
30312
|
+
if (e[0] === "D" || e[1] === "D") rmPaths.push(path2);
|
|
30313
|
+
else addPaths.push(path2);
|
|
30286
30314
|
}
|
|
30287
30315
|
const sizes = yield* Effect_exports.all(
|
|
30288
30316
|
addPaths.map(
|
|
@@ -30363,7 +30391,7 @@ var snapshotOnce = (snapshotsRoot, maxFileBytes, trigger, kind) => Effect_export
|
|
|
30363
30391
|
attributes: { cwd: trigger.cwd, tool: trigger.toolName ?? kind }
|
|
30364
30392
|
})
|
|
30365
30393
|
);
|
|
30366
|
-
var listByToolIdsImpl = (snapshotsRoot, cwd, toolIds, sessionKey) => Effect_exports.gen(function* () {
|
|
30394
|
+
var listByToolIdsImpl = (snapshotsRoot, cwd, toolIds, sessionKey, runId) => Effect_exports.gen(function* () {
|
|
30367
30395
|
if (toolIds.length === 0) return [];
|
|
30368
30396
|
const repoDir = yield* resolveRepoDir(snapshotsRoot, cwd);
|
|
30369
30397
|
const headExists = yield* fsTry(
|
|
@@ -30381,13 +30409,57 @@ var listByToolIdsImpl = (snapshotsRoot, cwd, toolIds, sessionKey) => Effect_expo
|
|
|
30381
30409
|
if (log3.code !== 0) return [];
|
|
30382
30410
|
const wanted = new Set(toolIds);
|
|
30383
30411
|
return log3.stdout.split("").filter(Boolean).map(commitFromLogRecord).filter(
|
|
30384
|
-
(c) => !!c && !!c.toolId && wanted.has(c.toolId) && (!sessionKey || c.sessionKey === sessionKey)
|
|
30412
|
+
(c) => !!c && !!c.toolId && wanted.has(c.toolId) && (!sessionKey || c.sessionKey === sessionKey) && // Run-scoping EXCLUDES, it does not require: a commit with no
|
|
30413
|
+
// Cockpit-Run-Id predates run-scoping, and dropping it would make
|
|
30414
|
+
// existing history disappear from the diff viewer. Only a commit
|
|
30415
|
+
// that names a DIFFERENT run is a proven foreign match.
|
|
30416
|
+
(!runId || !c.runId || c.runId === runId)
|
|
30385
30417
|
);
|
|
30386
30418
|
}).pipe(Effect_exports.withSpan("snapshot.listByToolIds", { attributes: { cwd } }));
|
|
30387
|
-
var showFile = (repoDir, cwd, rev,
|
|
30419
|
+
var showFile = (repoDir, cwd, rev, path2) => runGit(repoDir, cwd, ["show", `${rev}:${path2}`]).pipe(
|
|
30388
30420
|
Effect_exports.map((r) => r.code === 0 ? r.stdout : null),
|
|
30389
30421
|
Effect_exports.orElseSucceed(() => null)
|
|
30390
30422
|
);
|
|
30423
|
+
var gitShowBytes = (repoDir, cwd, rev, path2) => Effect_exports.tryPromise({
|
|
30424
|
+
try: () => new Promise((resolve2, reject) => {
|
|
30425
|
+
execFile(
|
|
30426
|
+
"git",
|
|
30427
|
+
["show", `${rev}:${path2}`],
|
|
30428
|
+
{
|
|
30429
|
+
env: {
|
|
30430
|
+
...process.env,
|
|
30431
|
+
GIT_DIR: repoDir,
|
|
30432
|
+
GIT_WORK_TREE: cwd,
|
|
30433
|
+
GIT_TERMINAL_PROMPT: "0",
|
|
30434
|
+
LC_ALL: "C",
|
|
30435
|
+
GIT_INDEX_FILE: join5(repoDir, "index")
|
|
30436
|
+
},
|
|
30437
|
+
cwd,
|
|
30438
|
+
// Over-cap images fail the exec (maxBuffer) → 404 → the client's
|
|
30439
|
+
// per-side "image failed to load" state.
|
|
30440
|
+
maxBuffer: MAX_IMAGE_SIZE,
|
|
30441
|
+
encoding: "buffer"
|
|
30442
|
+
},
|
|
30443
|
+
(err, stdout) => err ? reject(err) : resolve2(stdout)
|
|
30444
|
+
);
|
|
30445
|
+
}),
|
|
30446
|
+
// A miss is ordinary: the path simply doesn't exist at that revision.
|
|
30447
|
+
catch: () => new NotFoundError({ resource: "snapshot-blob", id: `${rev}:${path2}` })
|
|
30448
|
+
});
|
|
30449
|
+
var blobImpl = (snapshotsRoot, cwd, rev, file) => Effect_exports.gen(function* () {
|
|
30450
|
+
if (!/^[0-9a-f]{6,40}$/i.test(rev)) {
|
|
30451
|
+
return yield* Effect_exports.fail(new ValidationError({ field: "rev", reason: "invalid commit hash" }));
|
|
30452
|
+
}
|
|
30453
|
+
if (!file || isAbsolute(file) || file.split("/").includes("..")) {
|
|
30454
|
+
return yield* Effect_exports.fail(new ValidationError({ field: "file", reason: "invalid path" }));
|
|
30455
|
+
}
|
|
30456
|
+
if (!isImagePath(file)) {
|
|
30457
|
+
return yield* Effect_exports.fail(new ValidationError({ field: "file", reason: "not an image" }));
|
|
30458
|
+
}
|
|
30459
|
+
const repoDir = yield* resolveRepoDir(snapshotsRoot, cwd);
|
|
30460
|
+
const bytes = yield* gitShowBytes(repoDir, cwd, rev, file);
|
|
30461
|
+
return new Uint8Array(bytes);
|
|
30462
|
+
}).pipe(Effect_exports.withSpan("snapshot.blob", { attributes: { cwd, rev } }));
|
|
30391
30463
|
var diffImpl = (snapshotsRoot, cwd, commitHash) => Effect_exports.gen(function* () {
|
|
30392
30464
|
if (!/^[0-9a-f]{6,40}$/i.test(commitHash)) {
|
|
30393
30465
|
return yield* Effect_exports.fail(new ValidationError({ field: "commit", reason: "invalid commit hash" }));
|
|
@@ -30444,28 +30516,37 @@ var diffImpl = (snapshotsRoot, cwd, commitHash) => Effect_exports.gen(function*
|
|
|
30444
30516
|
const files = [];
|
|
30445
30517
|
for (let i = 0; i + 1 < tokens.length && files.length < MAX_DIFF_FILES; i += 2) {
|
|
30446
30518
|
const st = tokens[i];
|
|
30447
|
-
const
|
|
30519
|
+
const path2 = tokens[i + 1];
|
|
30448
30520
|
const status3 = st === "A" ? "added" : st === "D" ? "deleted" : "modified";
|
|
30449
|
-
const binary = binarySet.has(
|
|
30521
|
+
const binary = binarySet.has(path2);
|
|
30450
30522
|
let oldContent = null;
|
|
30451
30523
|
let newContent = null;
|
|
30452
30524
|
if (!binary) {
|
|
30453
|
-
if (status3 !== "added") oldContent = yield* showFile(repoDir, cwd, base,
|
|
30454
|
-
if (status3 !== "deleted") newContent = yield* showFile(repoDir, cwd, commit3.hash,
|
|
30525
|
+
if (status3 !== "added") oldContent = yield* showFile(repoDir, cwd, base, path2);
|
|
30526
|
+
if (status3 !== "deleted") newContent = yield* showFile(repoDir, cwd, commit3.hash, path2);
|
|
30455
30527
|
if ((oldContent?.length ?? 0) > MAX_DIFF_CONTENT_BYTES || (newContent?.length ?? 0) > MAX_DIFF_CONTENT_BYTES) {
|
|
30456
30528
|
oldContent = null;
|
|
30457
30529
|
newContent = null;
|
|
30458
30530
|
}
|
|
30459
30531
|
}
|
|
30460
|
-
const stats = lineStats.get(
|
|
30532
|
+
const stats = lineStats.get(path2);
|
|
30533
|
+
const isImage = binary && isImagePath(path2);
|
|
30461
30534
|
files.push({
|
|
30462
|
-
path,
|
|
30535
|
+
path: path2,
|
|
30463
30536
|
status: status3,
|
|
30464
30537
|
binary,
|
|
30465
30538
|
additions: stats?.additions ?? 0,
|
|
30466
30539
|
deletions: stats?.deletions ?? 0,
|
|
30467
30540
|
oldContent,
|
|
30468
|
-
newContent
|
|
30541
|
+
newContent,
|
|
30542
|
+
...isImage ? {
|
|
30543
|
+
isImage: true,
|
|
30544
|
+
// A parentless day-root commit diffs against the empty tree, so
|
|
30545
|
+
// every path comes back "added" — `base` is never handed out as
|
|
30546
|
+
// a revision the client could ask for.
|
|
30547
|
+
oldRev: status3 === "added" ? null : base,
|
|
30548
|
+
newRev: status3 === "deleted" ? null : commit3.hash
|
|
30549
|
+
} : {}
|
|
30469
30550
|
});
|
|
30470
30551
|
}
|
|
30471
30552
|
const truncated = tokens.length / 2 > files.length;
|
|
@@ -30591,9 +30672,10 @@ var SnapshotServiceLive = Layer_exports.scoped(
|
|
|
30591
30672
|
);
|
|
30592
30673
|
return SnapshotService.of({
|
|
30593
30674
|
record: (trigger) => snapshotOnce(snapshotsRoot, maxFileBytes, trigger, "tool"),
|
|
30594
|
-
baseline: (cwd, sessionKey, provider) => snapshotOnce(snapshotsRoot, maxFileBytes, { cwd, sessionKey, provider }, "baseline"),
|
|
30595
|
-
listByToolIds: (cwd, toolIds, sessionKey) => listByToolIdsImpl(snapshotsRoot, cwd, toolIds, sessionKey),
|
|
30675
|
+
baseline: (cwd, sessionKey, provider, runId) => snapshotOnce(snapshotsRoot, maxFileBytes, { cwd, sessionKey, provider, runId }, "baseline"),
|
|
30676
|
+
listByToolIds: (cwd, toolIds, sessionKey, runId) => listByToolIdsImpl(snapshotsRoot, cwd, toolIds, sessionKey, runId),
|
|
30596
30677
|
diff: (cwd, commitHash) => diffImpl(snapshotsRoot, cwd, commitHash),
|
|
30678
|
+
blob: (cwd, rev, file) => blobImpl(snapshotsRoot, cwd, rev, file),
|
|
30597
30679
|
cleanup
|
|
30598
30680
|
});
|
|
30599
30681
|
})
|
|
@@ -14,7 +14,7 @@ import {
|
|
|
14
14
|
readJsonFile,
|
|
15
15
|
withFileLock,
|
|
16
16
|
writeJsonFile
|
|
17
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-ETYX2YQF.mjs";
|
|
18
18
|
|
|
19
19
|
// packages/feature/agent/src/server/state/globalState.ts
|
|
20
20
|
import { createReadStream, existsSync, statSync } from "fs";
|
|
@@ -603,6 +603,7 @@ function startRun(key, cwd, promptText, runId) {
|
|
|
603
603
|
seq: prevSeq,
|
|
604
604
|
events: [],
|
|
605
605
|
startedAt,
|
|
606
|
+
...runId ? { runId } : {},
|
|
606
607
|
updatedAt: startedAt
|
|
607
608
|
});
|
|
608
609
|
if (promptText) {
|
|
@@ -662,7 +663,7 @@ function markRunIdle(key, status = "idle") {
|
|
|
662
663
|
function getRunSnapshot(key) {
|
|
663
664
|
const r = registry.get(key);
|
|
664
665
|
if (!r) return null;
|
|
665
|
-
return { status: r.status, seq: r.seq, events: r.events.slice(), startedAt: r.startedAt, outputTokens: r.outputTokens };
|
|
666
|
+
return { status: r.status, seq: r.seq, events: r.events.slice(), startedAt: r.startedAt, runId: r.runId, outputTokens: r.outputTokens };
|
|
666
667
|
}
|
|
667
668
|
function isRunActive(key) {
|
|
668
669
|
return registry.get(key)?.status === "running";
|
package/dist/httpApi.mjs
CHANGED
|
@@ -22,10 +22,10 @@ import {
|
|
|
22
22
|
unregisterBrowser,
|
|
23
23
|
unregisterTerminal,
|
|
24
24
|
writeStdinToCommand
|
|
25
|
-
} from "./chunk-
|
|
25
|
+
} from "./chunk-SGUW2QJI.mjs";
|
|
26
26
|
import {
|
|
27
27
|
getTerminalHistoryPath
|
|
28
|
-
} from "./chunk-
|
|
28
|
+
} from "./chunk-ETYX2YQF.mjs";
|
|
29
29
|
import "./chunk-7P6ASYW6.mjs";
|
|
30
30
|
|
|
31
31
|
// src/lib/httpApi.ts
|