@surething/cockpit 1.0.213 → 1.0.215
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 -2
- package/.next-prod/build-manifest.json +2 -2
- package/.next-prod/prerender-manifest.json +3 -3
- package/.next-prod/routes-manifest.json +24 -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 +1 -1
- 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 +2 -2
- 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 +4 -4
- package/.next-prod/server/app/api/chat/ollama/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/chat/route.js +2 -2
- package/.next-prod/server/app/api/chat/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 +2 -2
- package/.next-prod/server/app/api/db/columns/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/db/connect/route.js +1 -1
- 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/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/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/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 +1 -1
- 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/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 -0
- package/.next-prod/server/app/api/projectGraph/affected/route.js.nft.json +1 -0
- package/.next-prod/server/app/api/projectGraph/affected/route_client-reference-manifest.js +1 -0
- 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 -0
- package/.next-prod/server/app/api/projectGraph/context/route.js.nft.json +1 -0
- package/.next-prod/server/app/api/projectGraph/context/route_client-reference-manifest.js +1 -0
- 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 -0
- package/.next-prod/server/app/api/projectGraph/related/route.js.nft.json +1 -0
- package/.next-prod/server/app/api/projectGraph/related/route_client-reference-manifest.js +1 -0
- package/.next-prod/server/app/api/projectGraph/risk/route.js +1 -0
- package/.next-prod/server/app/api/projectGraph/risk/route.js.nft.json +1 -0
- package/.next-prod/server/app/api/projectGraph/risk/route_client-reference-manifest.js +1 -0
- 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/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 +1 -1
- 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/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/favicon.ico/route.js +1 -1
- package/.next-prod/server/app/favicon.ico/route.js.nft.json +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 -2
- package/.next-prod/server/chunks/2540.js +1 -0
- package/.next-prod/server/chunks/2939.js +1 -1
- package/.next-prod/server/chunks/4008.js +1 -0
- package/.next-prod/server/chunks/8916.js +1 -1
- package/.next-prod/server/chunks/9658.js +4 -4
- package/.next-prod/server/chunks/{7828.js → 9877.js} +80 -3
- package/.next-prod/server/middleware-build-manifest.js +1 -1
- package/.next-prod/server/pages/404.html +1 -1
- package/.next-prod/server/pages/500.html +1 -1
- package/.next-prod/server/server-reference-manifest.json +1 -1
- package/.next-prod/static/chunks/2171-1d5aa2a301006dfb.js +1 -0
- package/.next-prod/static/chunks/{5188-3337a5d88efc5fc1.js → 5188-415582403ef0e29c.js} +2 -2
- package/.next-prod/static/chunks/6345-e5ceeb2aeb698eb6.js +14 -0
- package/.next-prod/static/chunks/{aaea2bcf-be8b39a8f32280f3.js → aaea2bcf-56770c8875ee56c9.js} +1 -1
- package/.next-prod/static/chunks/app/_global-error/page-8ae56b9359db0996.js +1 -0
- package/.next-prod/static/chunks/app/api/agent/test/route-8ae56b9359db0996.js +1 -0
- package/.next-prod/static/chunks/app/api/bash/route-8ae56b9359db0996.js +1 -0
- package/.next-prod/static/chunks/app/api/chat/codex/route-8ae56b9359db0996.js +1 -0
- package/.next-prod/static/chunks/app/api/chat/deepseek/route-8ae56b9359db0996.js +1 -0
- package/.next-prod/static/chunks/app/api/chat/kimi/route-8ae56b9359db0996.js +1 -0
- package/.next-prod/static/chunks/app/api/chat/ollama/route-8ae56b9359db0996.js +1 -0
- package/.next-prod/static/chunks/app/api/chat/route-8ae56b9359db0996.js +1 -0
- package/.next-prod/static/chunks/app/api/claude-stats/route-8ae56b9359db0996.js +1 -0
- package/.next-prod/static/chunks/app/api/commands/route-8ae56b9359db0996.js +1 -0
- package/.next-prod/static/chunks/app/api/comments/route-8ae56b9359db0996.js +1 -0
- package/.next-prod/static/chunks/app/api/db/columns/route-8ae56b9359db0996.js +1 -0
- package/.next-prod/static/chunks/app/api/db/connect/route-8ae56b9359db0996.js +1 -0
- package/.next-prod/static/chunks/app/api/db/disconnect/route-8ae56b9359db0996.js +1 -0
- package/.next-prod/static/chunks/app/api/db/export/route-8ae56b9359db0996.js +1 -0
- package/.next-prod/static/chunks/app/api/db/query/route-8ae56b9359db0996.js +1 -0
- package/.next-prod/static/chunks/app/api/db/schemas/route-8ae56b9359db0996.js +1 -0
- package/.next-prod/static/chunks/app/api/dev/spans/route-8ae56b9359db0996.js +1 -0
- package/.next-prod/static/chunks/app/api/extension/version/route-8ae56b9359db0996.js +1 -0
- package/.next-prod/static/chunks/app/api/file/route-8ae56b9359db0996.js +1 -0
- package/.next-prod/static/chunks/app/api/files/blame/route-8ae56b9359db0996.js +1 -0
- package/.next-prod/static/chunks/app/api/files/clipboard/route-8ae56b9359db0996.js +1 -0
- package/.next-prod/static/chunks/app/api/files/copy/route-8ae56b9359db0996.js +1 -0
- package/.next-prod/static/chunks/app/api/files/delete/route-8ae56b9359db0996.js +1 -0
- package/.next-prod/static/chunks/app/api/files/expanded/route-8ae56b9359db0996.js +1 -0
- package/.next-prod/static/chunks/app/api/files/index/route-8ae56b9359db0996.js +1 -0
- package/.next-prod/static/chunks/app/api/files/init/route-8ae56b9359db0996.js +1 -0
- package/.next-prod/static/chunks/app/api/files/paste/route-8ae56b9359db0996.js +1 -0
- package/.next-prod/static/chunks/app/api/files/read/route-8ae56b9359db0996.js +1 -0
- package/.next-prod/static/chunks/app/api/files/readdir/route-8ae56b9359db0996.js +1 -0
- package/.next-prod/static/chunks/app/api/files/recent/route-8ae56b9359db0996.js +1 -0
- package/.next-prod/static/chunks/app/api/files/save/route-8ae56b9359db0996.js +1 -0
- package/.next-prod/static/chunks/app/api/files/search/route-8ae56b9359db0996.js +1 -0
- package/.next-prod/static/chunks/app/api/files/stat/route-8ae56b9359db0996.js +1 -0
- package/.next-prod/static/chunks/app/api/files/text/route-8ae56b9359db0996.js +1 -0
- package/.next-prod/static/chunks/app/api/git/branch-diff/route-8ae56b9359db0996.js +1 -0
- package/.next-prod/static/chunks/app/api/git/branches/route-8ae56b9359db0996.js +1 -0
- package/.next-prod/static/chunks/app/api/git/commit-diff/route-8ae56b9359db0996.js +1 -0
- package/.next-prod/static/chunks/app/api/git/commits/route-8ae56b9359db0996.js +1 -0
- package/.next-prod/static/chunks/app/api/git/diff/route-8ae56b9359db0996.js +1 -0
- package/.next-prod/static/chunks/app/api/git/discard/route-8ae56b9359db0996.js +1 -0
- package/.next-prod/static/chunks/app/api/git/stage/route-8ae56b9359db0996.js +1 -0
- package/.next-prod/static/chunks/app/api/git/status/route-8ae56b9359db0996.js +1 -0
- package/.next-prod/static/chunks/app/api/git/unstage/route-8ae56b9359db0996.js +1 -0
- package/.next-prod/static/chunks/app/api/git/worktree/route-8ae56b9359db0996.js +1 -0
- package/.next-prod/static/chunks/app/api/global-state/route-8ae56b9359db0996.js +1 -0
- package/.next-prod/static/chunks/app/api/jupyter/load/route-8ae56b9359db0996.js +1 -0
- package/.next-prod/static/chunks/app/api/jupyter/save/route-8ae56b9359db0996.js +1 -0
- package/.next-prod/static/chunks/app/api/jupyter/shutdown/route-8ae56b9359db0996.js +1 -0
- package/.next-prod/static/chunks/app/api/lsp/definition/route-8ae56b9359db0996.js +1 -0
- package/.next-prod/static/chunks/app/api/lsp/hover/route-8ae56b9359db0996.js +1 -0
- package/.next-prod/static/chunks/app/api/lsp/references/route-8ae56b9359db0996.js +1 -0
- package/.next-prod/static/chunks/app/api/lsp/status/route-8ae56b9359db0996.js +1 -0
- package/.next-prod/static/chunks/app/api/lsp/warmup/route-8ae56b9359db0996.js +1 -0
- package/.next-prod/static/chunks/app/api/mysql/columns/route-8ae56b9359db0996.js +1 -0
- package/.next-prod/static/chunks/app/api/mysql/connect/route-8ae56b9359db0996.js +1 -0
- package/.next-prod/static/chunks/app/api/mysql/disconnect/route-8ae56b9359db0996.js +1 -0
- package/.next-prod/static/chunks/app/api/mysql/export/route-8ae56b9359db0996.js +1 -0
- package/.next-prod/static/chunks/app/api/mysql/query/route-8ae56b9359db0996.js +1 -0
- package/.next-prod/static/chunks/app/api/mysql/schemas/route-8ae56b9359db0996.js +1 -0
- package/.next-prod/static/chunks/app/api/neo4j/connect/route-8ae56b9359db0996.js +1 -0
- package/.next-prod/static/chunks/app/api/neo4j/disconnect/route-8ae56b9359db0996.js +1 -0
- package/.next-prod/static/chunks/app/api/neo4j/query/route-8ae56b9359db0996.js +1 -0
- package/.next-prod/static/chunks/app/api/neo4j/schema/route-8ae56b9359db0996.js +1 -0
- package/.next-prod/static/chunks/app/api/note/route-8ae56b9359db0996.js +1 -0
- package/.next-prod/static/chunks/app/api/ollama/models/route-8ae56b9359db0996.js +1 -0
- package/.next-prod/static/chunks/app/api/ollama/start/route-8ae56b9359db0996.js +1 -0
- package/.next-prod/static/chunks/app/api/open-cursor/route-8ae56b9359db0996.js +1 -0
- package/.next-prod/static/chunks/app/api/open-vscode/route-8ae56b9359db0996.js +1 -0
- package/.next-prod/static/chunks/app/api/pick-folder/route-8ae56b9359db0996.js +1 -0
- package/.next-prod/static/chunks/app/api/pinned-sessions/route-8ae56b9359db0996.js +1 -0
- package/.next-prod/static/chunks/app/api/project-settings/route-8ae56b9359db0996.js +1 -0
- package/.next-prod/static/chunks/app/api/project-state/route-8ae56b9359db0996.js +1 -0
- package/.next-prod/static/chunks/app/api/projectGraph/affected/route-8ae56b9359db0996.js +1 -0
- package/.next-prod/static/chunks/app/api/projectGraph/callees/route-8ae56b9359db0996.js +1 -0
- package/.next-prod/static/chunks/app/api/projectGraph/callers/route-8ae56b9359db0996.js +1 -0
- package/.next-prod/static/chunks/app/api/projectGraph/coedit/route-8ae56b9359db0996.js +1 -0
- package/.next-prod/static/chunks/app/api/projectGraph/context/route-8ae56b9359db0996.js +1 -0
- package/.next-prod/static/chunks/app/api/projectGraph/file/route-8ae56b9359db0996.js +1 -0
- package/.next-prod/static/chunks/app/api/projectGraph/file-functions/route-8ae56b9359db0996.js +1 -0
- package/.next-prod/static/chunks/app/api/projectGraph/impact/route-8ae56b9359db0996.js +1 -0
- package/.next-prod/static/chunks/app/api/projectGraph/related/route-8ae56b9359db0996.js +1 -0
- package/.next-prod/static/chunks/app/api/projectGraph/risk/route-8ae56b9359db0996.js +1 -0
- package/.next-prod/static/chunks/app/api/projectGraph/search/route-8ae56b9359db0996.js +1 -0
- package/.next-prod/static/chunks/app/api/projects/route-8ae56b9359db0996.js +1 -0
- package/.next-prod/static/chunks/app/api/redis/command/route-8ae56b9359db0996.js +1 -0
- package/.next-prod/static/chunks/app/api/redis/connect/route-8ae56b9359db0996.js +1 -0
- package/.next-prod/static/chunks/app/api/redis/delete/route-8ae56b9359db0996.js +1 -0
- package/.next-prod/static/chunks/app/api/redis/disconnect/route-8ae56b9359db0996.js +1 -0
- package/.next-prod/static/chunks/app/api/redis/get/route-8ae56b9359db0996.js +1 -0
- package/.next-prod/static/chunks/app/api/redis/keys/route-8ae56b9359db0996.js +1 -0
- package/.next-prod/static/chunks/app/api/redis/set/route-8ae56b9359db0996.js +1 -0
- package/.next-prod/static/chunks/app/api/review/[id]/comments/route-8ae56b9359db0996.js +1 -0
- package/.next-prod/static/chunks/app/api/review/[id]/replies/route-8ae56b9359db0996.js +1 -0
- package/.next-prod/static/chunks/app/api/review/[id]/route-8ae56b9359db0996.js +1 -0
- package/.next-prod/static/chunks/app/api/review/identify/route-8ae56b9359db0996.js +1 -0
- package/.next-prod/static/chunks/app/api/review/order/route-8ae56b9359db0996.js +1 -0
- package/.next-prod/static/chunks/app/api/review/route-8ae56b9359db0996.js +1 -0
- package/.next-prod/static/chunks/app/api/review/share-info/route-8ae56b9359db0996.js +1 -0
- package/.next-prod/static/chunks/app/api/review/users/route-8ae56b9359db0996.js +1 -0
- package/.next-prod/static/chunks/app/api/scheduled-tasks/route-8ae56b9359db0996.js +1 -0
- package/.next-prod/static/chunks/app/api/services/config/route-8ae56b9359db0996.js +1 -0
- package/.next-prod/static/chunks/app/api/services/scripts/route-8ae56b9359db0996.js +1 -0
- package/.next-prod/static/chunks/app/api/session/[sessionId]/fork/route-8ae56b9359db0996.js +1 -0
- package/.next-prod/static/chunks/app/api/session/[sessionId]/history/route-8ae56b9359db0996.js +1 -0
- package/.next-prod/static/chunks/app/api/session-by-path/route-8ae56b9359db0996.js +1 -0
- package/.next-prod/static/chunks/app/api/sessions/projects/[encodedPath]/route-8ae56b9359db0996.js +1 -0
- package/.next-prod/static/chunks/app/api/sessions/projects/route-8ae56b9359db0996.js +1 -0
- package/.next-prod/static/chunks/app/api/sessions/route-8ae56b9359db0996.js +1 -0
- package/.next-prod/static/chunks/app/api/settings/route-8ae56b9359db0996.js +1 -0
- package/.next-prod/static/chunks/app/api/skills/[id]/route-8ae56b9359db0996.js +1 -0
- package/.next-prod/static/chunks/app/api/skills/content/route-8ae56b9359db0996.js +1 -0
- package/.next-prod/static/chunks/app/api/skills/route-8ae56b9359db0996.js +1 -0
- package/.next-prod/static/chunks/app/api/terminal/aliases/route-8ae56b9359db0996.js +1 -0
- package/.next-prod/static/chunks/app/api/terminal/autocomplete/route-8ae56b9359db0996.js +1 -0
- package/.next-prod/static/chunks/app/api/terminal/bubble-order/route-8ae56b9359db0996.js +1 -0
- package/.next-prod/static/chunks/app/api/terminal/env/route-8ae56b9359db0996.js +1 -0
- package/.next-prod/static/chunks/app/api/terminal/history/route-8ae56b9359db0996.js +1 -0
- package/.next-prod/static/chunks/app/api/version/route-8ae56b9359db0996.js +1 -0
- package/.next-prod/static/chunks/app/manifest.webmanifest/route-8ae56b9359db0996.js +1 -0
- package/.next-prod/static/chunks/next/dist/client/components/builtin/app-error-8ae56b9359db0996.js +1 -0
- package/.next-prod/static/chunks/next/dist/client/components/builtin/forbidden-8ae56b9359db0996.js +1 -0
- package/.next-prod/static/chunks/next/dist/client/components/builtin/not-found-8ae56b9359db0996.js +1 -0
- package/.next-prod/static/chunks/next/dist/client/components/builtin/unauthorized-8ae56b9359db0996.js +1 -0
- package/.next-prod/static/css/{f016b445331fc5a2.css → cc6d733cdf607b30.css} +1 -1
- package/.next-prod/static/dtH6UmANw3cgn-jbRuVu4/_buildManifest.js +1 -0
- package/.next-prod/trace +13 -12
- package/.next-prod/trace-build +1 -1
- package/.next-prod/types/app/api/projectGraph/affected/route.ts +351 -0
- package/.next-prod/types/app/api/projectGraph/context/route.ts +351 -0
- package/.next-prod/types/app/api/projectGraph/related/route.ts +351 -0
- package/.next-prod/types/app/api/projectGraph/risk/route.ts +351 -0
- package/.next-prod/types/routes.d.ts +5 -1
- package/.next-prod/types/validator.ts +36 -0
- package/README.md +8 -8
- package/README.zh.md +8 -8
- package/bin/cock-browser.mjs +93 -3
- package/bin/cock-codegraph.mjs +907 -0
- package/bin/cock-terminal.mjs +476 -159
- package/bin/cock.mjs +9 -1
- package/bin/cockpit-dev.mjs +9 -0
- package/bin/setup-dev.mjs +92 -0
- package/dist/cache-GIQJA4HL.mjs +502 -0
- package/dist/chunk-7P6ASYW6.mjs +9 -0
- package/dist/{chunk-OWUW2O3D.mjs → chunk-CZWJPTRO.mjs} +4 -2
- package/dist/{chunk-FBR4KJI5.mjs → chunk-KRTISG5I.mjs} +213 -2
- package/dist/{chunk-TXBVUZVH.mjs → chunk-ZJ6CC3MH.mjs} +0 -7
- package/dist/httpApi.mjs +203 -17
- package/dist/scheduledTasks.mjs +3 -2
- package/dist/{server-E7G55DY7.mjs → server-OSOMFNXR.mjs} +27 -4
- package/dist/wsServer.mjs +8 -34
- package/package.json +5 -2
- package/.next-prod/static/-BWPF5YtAsgnego1UPtt9/_buildManifest.js +0 -1
- package/.next-prod/static/chunks/2171-5163d946ec03ce80.js +0 -1
- package/.next-prod/static/chunks/6345-4299a3385983e28c.js +0 -14
- package/.next-prod/static/chunks/app/_global-error/page-994734ef0d317687.js +0 -1
- package/.next-prod/static/chunks/app/api/agent/test/route-994734ef0d317687.js +0 -1
- package/.next-prod/static/chunks/app/api/bash/route-994734ef0d317687.js +0 -1
- package/.next-prod/static/chunks/app/api/chat/codex/route-994734ef0d317687.js +0 -1
- package/.next-prod/static/chunks/app/api/chat/deepseek/route-994734ef0d317687.js +0 -1
- package/.next-prod/static/chunks/app/api/chat/kimi/route-994734ef0d317687.js +0 -1
- package/.next-prod/static/chunks/app/api/chat/ollama/route-994734ef0d317687.js +0 -1
- package/.next-prod/static/chunks/app/api/chat/route-994734ef0d317687.js +0 -1
- package/.next-prod/static/chunks/app/api/claude-stats/route-994734ef0d317687.js +0 -1
- package/.next-prod/static/chunks/app/api/commands/route-994734ef0d317687.js +0 -1
- package/.next-prod/static/chunks/app/api/comments/route-994734ef0d317687.js +0 -1
- package/.next-prod/static/chunks/app/api/db/columns/route-994734ef0d317687.js +0 -1
- package/.next-prod/static/chunks/app/api/db/connect/route-994734ef0d317687.js +0 -1
- package/.next-prod/static/chunks/app/api/db/disconnect/route-994734ef0d317687.js +0 -1
- package/.next-prod/static/chunks/app/api/db/export/route-994734ef0d317687.js +0 -1
- package/.next-prod/static/chunks/app/api/db/query/route-994734ef0d317687.js +0 -1
- package/.next-prod/static/chunks/app/api/db/schemas/route-994734ef0d317687.js +0 -1
- package/.next-prod/static/chunks/app/api/dev/spans/route-994734ef0d317687.js +0 -1
- package/.next-prod/static/chunks/app/api/extension/version/route-994734ef0d317687.js +0 -1
- package/.next-prod/static/chunks/app/api/file/route-994734ef0d317687.js +0 -1
- package/.next-prod/static/chunks/app/api/files/blame/route-994734ef0d317687.js +0 -1
- package/.next-prod/static/chunks/app/api/files/clipboard/route-994734ef0d317687.js +0 -1
- package/.next-prod/static/chunks/app/api/files/copy/route-994734ef0d317687.js +0 -1
- package/.next-prod/static/chunks/app/api/files/delete/route-994734ef0d317687.js +0 -1
- package/.next-prod/static/chunks/app/api/files/expanded/route-994734ef0d317687.js +0 -1
- package/.next-prod/static/chunks/app/api/files/index/route-994734ef0d317687.js +0 -1
- package/.next-prod/static/chunks/app/api/files/init/route-994734ef0d317687.js +0 -1
- package/.next-prod/static/chunks/app/api/files/paste/route-994734ef0d317687.js +0 -1
- package/.next-prod/static/chunks/app/api/files/read/route-994734ef0d317687.js +0 -1
- package/.next-prod/static/chunks/app/api/files/readdir/route-994734ef0d317687.js +0 -1
- package/.next-prod/static/chunks/app/api/files/recent/route-994734ef0d317687.js +0 -1
- package/.next-prod/static/chunks/app/api/files/save/route-994734ef0d317687.js +0 -1
- package/.next-prod/static/chunks/app/api/files/search/route-994734ef0d317687.js +0 -1
- package/.next-prod/static/chunks/app/api/files/stat/route-994734ef0d317687.js +0 -1
- package/.next-prod/static/chunks/app/api/files/text/route-994734ef0d317687.js +0 -1
- package/.next-prod/static/chunks/app/api/git/branch-diff/route-994734ef0d317687.js +0 -1
- package/.next-prod/static/chunks/app/api/git/branches/route-994734ef0d317687.js +0 -1
- package/.next-prod/static/chunks/app/api/git/commit-diff/route-994734ef0d317687.js +0 -1
- package/.next-prod/static/chunks/app/api/git/commits/route-994734ef0d317687.js +0 -1
- package/.next-prod/static/chunks/app/api/git/diff/route-994734ef0d317687.js +0 -1
- package/.next-prod/static/chunks/app/api/git/discard/route-994734ef0d317687.js +0 -1
- package/.next-prod/static/chunks/app/api/git/stage/route-994734ef0d317687.js +0 -1
- package/.next-prod/static/chunks/app/api/git/status/route-994734ef0d317687.js +0 -1
- package/.next-prod/static/chunks/app/api/git/unstage/route-994734ef0d317687.js +0 -1
- package/.next-prod/static/chunks/app/api/git/worktree/route-994734ef0d317687.js +0 -1
- package/.next-prod/static/chunks/app/api/global-state/route-994734ef0d317687.js +0 -1
- package/.next-prod/static/chunks/app/api/jupyter/load/route-994734ef0d317687.js +0 -1
- package/.next-prod/static/chunks/app/api/jupyter/save/route-994734ef0d317687.js +0 -1
- package/.next-prod/static/chunks/app/api/jupyter/shutdown/route-994734ef0d317687.js +0 -1
- package/.next-prod/static/chunks/app/api/lsp/definition/route-994734ef0d317687.js +0 -1
- package/.next-prod/static/chunks/app/api/lsp/hover/route-994734ef0d317687.js +0 -1
- package/.next-prod/static/chunks/app/api/lsp/references/route-994734ef0d317687.js +0 -1
- package/.next-prod/static/chunks/app/api/lsp/status/route-994734ef0d317687.js +0 -1
- package/.next-prod/static/chunks/app/api/lsp/warmup/route-994734ef0d317687.js +0 -1
- package/.next-prod/static/chunks/app/api/mysql/columns/route-994734ef0d317687.js +0 -1
- package/.next-prod/static/chunks/app/api/mysql/connect/route-994734ef0d317687.js +0 -1
- package/.next-prod/static/chunks/app/api/mysql/disconnect/route-994734ef0d317687.js +0 -1
- package/.next-prod/static/chunks/app/api/mysql/export/route-994734ef0d317687.js +0 -1
- package/.next-prod/static/chunks/app/api/mysql/query/route-994734ef0d317687.js +0 -1
- package/.next-prod/static/chunks/app/api/mysql/schemas/route-994734ef0d317687.js +0 -1
- package/.next-prod/static/chunks/app/api/neo4j/connect/route-994734ef0d317687.js +0 -1
- package/.next-prod/static/chunks/app/api/neo4j/disconnect/route-994734ef0d317687.js +0 -1
- package/.next-prod/static/chunks/app/api/neo4j/query/route-994734ef0d317687.js +0 -1
- package/.next-prod/static/chunks/app/api/neo4j/schema/route-994734ef0d317687.js +0 -1
- package/.next-prod/static/chunks/app/api/note/route-994734ef0d317687.js +0 -1
- package/.next-prod/static/chunks/app/api/ollama/models/route-994734ef0d317687.js +0 -1
- package/.next-prod/static/chunks/app/api/ollama/start/route-994734ef0d317687.js +0 -1
- package/.next-prod/static/chunks/app/api/open-cursor/route-994734ef0d317687.js +0 -1
- package/.next-prod/static/chunks/app/api/open-vscode/route-994734ef0d317687.js +0 -1
- package/.next-prod/static/chunks/app/api/pick-folder/route-994734ef0d317687.js +0 -1
- package/.next-prod/static/chunks/app/api/pinned-sessions/route-994734ef0d317687.js +0 -1
- package/.next-prod/static/chunks/app/api/project-settings/route-994734ef0d317687.js +0 -1
- package/.next-prod/static/chunks/app/api/project-state/route-994734ef0d317687.js +0 -1
- package/.next-prod/static/chunks/app/api/projectGraph/callees/route-994734ef0d317687.js +0 -1
- package/.next-prod/static/chunks/app/api/projectGraph/callers/route-994734ef0d317687.js +0 -1
- package/.next-prod/static/chunks/app/api/projectGraph/coedit/route-994734ef0d317687.js +0 -1
- package/.next-prod/static/chunks/app/api/projectGraph/file/route-994734ef0d317687.js +0 -1
- package/.next-prod/static/chunks/app/api/projectGraph/file-functions/route-994734ef0d317687.js +0 -1
- package/.next-prod/static/chunks/app/api/projectGraph/impact/route-994734ef0d317687.js +0 -1
- package/.next-prod/static/chunks/app/api/projectGraph/search/route-994734ef0d317687.js +0 -1
- package/.next-prod/static/chunks/app/api/projects/route-994734ef0d317687.js +0 -1
- package/.next-prod/static/chunks/app/api/redis/command/route-994734ef0d317687.js +0 -1
- package/.next-prod/static/chunks/app/api/redis/connect/route-994734ef0d317687.js +0 -1
- package/.next-prod/static/chunks/app/api/redis/delete/route-994734ef0d317687.js +0 -1
- package/.next-prod/static/chunks/app/api/redis/disconnect/route-994734ef0d317687.js +0 -1
- package/.next-prod/static/chunks/app/api/redis/get/route-994734ef0d317687.js +0 -1
- package/.next-prod/static/chunks/app/api/redis/keys/route-994734ef0d317687.js +0 -1
- package/.next-prod/static/chunks/app/api/redis/set/route-994734ef0d317687.js +0 -1
- package/.next-prod/static/chunks/app/api/review/[id]/comments/route-994734ef0d317687.js +0 -1
- package/.next-prod/static/chunks/app/api/review/[id]/replies/route-994734ef0d317687.js +0 -1
- package/.next-prod/static/chunks/app/api/review/[id]/route-994734ef0d317687.js +0 -1
- package/.next-prod/static/chunks/app/api/review/identify/route-994734ef0d317687.js +0 -1
- package/.next-prod/static/chunks/app/api/review/order/route-994734ef0d317687.js +0 -1
- package/.next-prod/static/chunks/app/api/review/route-994734ef0d317687.js +0 -1
- package/.next-prod/static/chunks/app/api/review/share-info/route-994734ef0d317687.js +0 -1
- package/.next-prod/static/chunks/app/api/review/users/route-994734ef0d317687.js +0 -1
- package/.next-prod/static/chunks/app/api/scheduled-tasks/route-994734ef0d317687.js +0 -1
- package/.next-prod/static/chunks/app/api/services/config/route-994734ef0d317687.js +0 -1
- package/.next-prod/static/chunks/app/api/services/scripts/route-994734ef0d317687.js +0 -1
- package/.next-prod/static/chunks/app/api/session/[sessionId]/fork/route-994734ef0d317687.js +0 -1
- package/.next-prod/static/chunks/app/api/session/[sessionId]/history/route-994734ef0d317687.js +0 -1
- package/.next-prod/static/chunks/app/api/session-by-path/route-994734ef0d317687.js +0 -1
- package/.next-prod/static/chunks/app/api/sessions/projects/[encodedPath]/route-994734ef0d317687.js +0 -1
- package/.next-prod/static/chunks/app/api/sessions/projects/route-994734ef0d317687.js +0 -1
- package/.next-prod/static/chunks/app/api/sessions/route-994734ef0d317687.js +0 -1
- package/.next-prod/static/chunks/app/api/settings/route-994734ef0d317687.js +0 -1
- package/.next-prod/static/chunks/app/api/skills/[id]/route-994734ef0d317687.js +0 -1
- package/.next-prod/static/chunks/app/api/skills/content/route-994734ef0d317687.js +0 -1
- package/.next-prod/static/chunks/app/api/skills/route-994734ef0d317687.js +0 -1
- package/.next-prod/static/chunks/app/api/terminal/aliases/route-994734ef0d317687.js +0 -1
- package/.next-prod/static/chunks/app/api/terminal/autocomplete/route-994734ef0d317687.js +0 -1
- package/.next-prod/static/chunks/app/api/terminal/bubble-order/route-994734ef0d317687.js +0 -1
- package/.next-prod/static/chunks/app/api/terminal/env/route-994734ef0d317687.js +0 -1
- package/.next-prod/static/chunks/app/api/terminal/history/route-994734ef0d317687.js +0 -1
- package/.next-prod/static/chunks/app/api/version/route-994734ef0d317687.js +0 -1
- package/.next-prod/static/chunks/app/manifest.webmanifest/route-994734ef0d317687.js +0 -1
- package/.next-prod/static/chunks/next/dist/client/components/builtin/app-error-994734ef0d317687.js +0 -1
- package/.next-prod/static/chunks/next/dist/client/components/builtin/forbidden-994734ef0d317687.js +0 -1
- package/.next-prod/static/chunks/next/dist/client/components/builtin/not-found-994734ef0d317687.js +0 -1
- package/.next-prod/static/chunks/next/dist/client/components/builtin/unauthorized-994734ef0d317687.js +0 -1
- package/bin/cock-dev.mjs +0 -6
- /package/.next-prod/static/{-BWPF5YtAsgnego1UPtt9 → dtH6UmANw3cgn-jbRuVu4}/_ssgManifest.js +0 -0
|
@@ -2,7 +2,7 @@ import {
|
|
|
2
2
|
ensureParentDir,
|
|
3
3
|
getTerminalHistoryPath,
|
|
4
4
|
getTerminalOutputPath
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-ZJ6CC3MH.mjs";
|
|
6
6
|
|
|
7
7
|
// packages/feature/console/src/server/plugins/browser/BrowserBridge.ts
|
|
8
8
|
import { WebSocket } from "ws";
|
|
@@ -481,23 +481,38 @@ import fs from "fs/promises";
|
|
|
481
481
|
var MAX_OUTPUT_LINES = 5e3;
|
|
482
482
|
var OUTPUT_FILE_THRESHOLD = 4096;
|
|
483
483
|
var PTY_RING_BUFFER_MAX = 2 * 1024 * 1024;
|
|
484
|
+
function countNewlines(s) {
|
|
485
|
+
let n = 0;
|
|
486
|
+
for (let i = 0; i < s.length; i++) {
|
|
487
|
+
if (s.charCodeAt(i) === 10) n++;
|
|
488
|
+
}
|
|
489
|
+
return n;
|
|
490
|
+
}
|
|
484
491
|
var PtyRingBuffer = class {
|
|
485
492
|
constructor(max = PTY_RING_BUFFER_MAX) {
|
|
486
493
|
this.chunks = [];
|
|
487
494
|
this.totalLen = 0;
|
|
495
|
+
/** Monotonic count of `\n` chars ever appended. Never decreases. */
|
|
496
|
+
this._totalLinesEverWritten = 0;
|
|
497
|
+
/** Global line number of the first complete line currently in the ring. */
|
|
498
|
+
this._firstAvailableLine = 0;
|
|
488
499
|
this.max = max;
|
|
489
500
|
}
|
|
490
501
|
append(data) {
|
|
491
502
|
if (!data) return;
|
|
492
503
|
this.chunks.push(data);
|
|
493
504
|
this.totalLen += data.length;
|
|
505
|
+
this._totalLinesEverWritten += countNewlines(data);
|
|
494
506
|
while (this.totalLen > this.max && this.chunks.length > 0) {
|
|
495
507
|
const overflow = this.totalLen - this.max;
|
|
496
508
|
const oldest = this.chunks[0];
|
|
497
509
|
if (oldest.length <= overflow) {
|
|
510
|
+
this._firstAvailableLine += countNewlines(oldest);
|
|
498
511
|
this.chunks.shift();
|
|
499
512
|
this.totalLen -= oldest.length;
|
|
500
513
|
} else {
|
|
514
|
+
const cut = oldest.slice(0, overflow);
|
|
515
|
+
this._firstAvailableLine += countNewlines(cut);
|
|
501
516
|
this.chunks[0] = oldest.slice(overflow);
|
|
502
517
|
this.totalLen -= overflow;
|
|
503
518
|
}
|
|
@@ -509,6 +524,14 @@ var PtyRingBuffer = class {
|
|
|
509
524
|
get length() {
|
|
510
525
|
return this.totalLen;
|
|
511
526
|
}
|
|
527
|
+
/** Total `\n` chars ever written — monotonic global "next line number". */
|
|
528
|
+
get totalLinesEverWritten() {
|
|
529
|
+
return this._totalLinesEverWritten;
|
|
530
|
+
}
|
|
531
|
+
/** Global line number of the first complete line still in the ring. */
|
|
532
|
+
get firstAvailableLine() {
|
|
533
|
+
return this._firstAvailableLine;
|
|
534
|
+
}
|
|
512
535
|
};
|
|
513
536
|
function findSafeStart(s) {
|
|
514
537
|
const lf = s.indexOf("\n");
|
|
@@ -541,6 +564,7 @@ function registerCommand(cmd) {
|
|
|
541
564
|
...cmd,
|
|
542
565
|
outputLines: [],
|
|
543
566
|
outputPartial: "",
|
|
567
|
+
totalLinesEverWritten: 0,
|
|
544
568
|
// Only PTY commands get a ring buffer — pipe mode replay still uses outputLines.
|
|
545
569
|
...cmd.ptyProcess ? { ptyRingBuffer: new PtyRingBuffer() } : {}
|
|
546
570
|
};
|
|
@@ -552,6 +576,10 @@ function registerCommand(cmd) {
|
|
|
552
576
|
const pty = cmd.ptyProcess;
|
|
553
577
|
pty.onData((data) => {
|
|
554
578
|
entry.ptyRingBuffer?.append(data);
|
|
579
|
+
if (entry.ptyRingBuffer) {
|
|
580
|
+
entry.totalLinesEverWritten = entry.ptyRingBuffer.totalLinesEverWritten;
|
|
581
|
+
}
|
|
582
|
+
entry.lastOutputAt = Date.now();
|
|
555
583
|
notifyOutputListeners(cmd.commandId, data);
|
|
556
584
|
});
|
|
557
585
|
const ptyPid = cmd.pid;
|
|
@@ -595,6 +623,7 @@ function appendCommandOutput(commandId, data) {
|
|
|
595
623
|
cmd.outputPartial = parts.pop() || "";
|
|
596
624
|
if (parts.length > 0) {
|
|
597
625
|
cmd.outputLines.push(...parts);
|
|
626
|
+
cmd.totalLinesEverWritten += parts.length;
|
|
598
627
|
if (cmd.outputLines.length > MAX_OUTPUT_LINES) {
|
|
599
628
|
cmd.outputLines.splice(0, cmd.outputLines.length - MAX_OUTPUT_LINES);
|
|
600
629
|
if (cmd.outputLines.length > 0) {
|
|
@@ -602,8 +631,13 @@ function appendCommandOutput(commandId, data) {
|
|
|
602
631
|
}
|
|
603
632
|
}
|
|
604
633
|
}
|
|
634
|
+
cmd.lastOutputAt = Date.now();
|
|
605
635
|
notifyOutputListeners(commandId, data);
|
|
606
636
|
}
|
|
637
|
+
function getFirstAvailableLine(cmd) {
|
|
638
|
+
if (cmd.ptyRingBuffer) return cmd.ptyRingBuffer.firstAvailableLine;
|
|
639
|
+
return cmd.totalLinesEverWritten - cmd.outputLines.length;
|
|
640
|
+
}
|
|
607
641
|
function getBufferedOutput(cmd) {
|
|
608
642
|
const lines = cmd.outputLines.join("\n");
|
|
609
643
|
if (cmd.outputPartial) {
|
|
@@ -726,6 +760,172 @@ async function finalizeCommand(commandId, exitCode, pid) {
|
|
|
726
760
|
await fs.writeFile(historyPath, existingLines.join("\n") + "\n", "utf-8");
|
|
727
761
|
}
|
|
728
762
|
|
|
763
|
+
// packages/feature/console/src/server/terminal/writeStdin.ts
|
|
764
|
+
function writeStdinToCommand(cmd, data) {
|
|
765
|
+
if (cmd.usePty && cmd.ptyProcess) {
|
|
766
|
+
try {
|
|
767
|
+
cmd.ptyProcess.write(data);
|
|
768
|
+
} catch {
|
|
769
|
+
}
|
|
770
|
+
return true;
|
|
771
|
+
}
|
|
772
|
+
if (data === "" && cmd.pid) {
|
|
773
|
+
try {
|
|
774
|
+
process.kill(-cmd.pid, "SIGINT");
|
|
775
|
+
} catch {
|
|
776
|
+
try {
|
|
777
|
+
process.kill(cmd.pid, "SIGINT");
|
|
778
|
+
} catch {
|
|
779
|
+
}
|
|
780
|
+
}
|
|
781
|
+
return true;
|
|
782
|
+
}
|
|
783
|
+
if (data === "" && cmd.pid) {
|
|
784
|
+
try {
|
|
785
|
+
process.kill(cmd.pid, "SIGTSTP");
|
|
786
|
+
} catch {
|
|
787
|
+
}
|
|
788
|
+
return true;
|
|
789
|
+
}
|
|
790
|
+
if (data === "") {
|
|
791
|
+
try {
|
|
792
|
+
cmd.process.stdin?.end();
|
|
793
|
+
} catch {
|
|
794
|
+
}
|
|
795
|
+
return true;
|
|
796
|
+
}
|
|
797
|
+
if (cmd.process.stdin?.writable) {
|
|
798
|
+
cmd.process.stdin.write(data);
|
|
799
|
+
return true;
|
|
800
|
+
}
|
|
801
|
+
return false;
|
|
802
|
+
}
|
|
803
|
+
|
|
804
|
+
// packages/feature/console/src/server/terminal/outputQuery.ts
|
|
805
|
+
var ANSI_RE = /[\x1b\x9B][[\]()#;?]*(?:(?:(?:[a-zA-Z0-9]*(?:;[a-zA-Z0-9]*)*)?\x07)|(?:(?:\d{1,4}(?:;\d{0,4})*)?[\dA-PRZcf-ntqry=><~]))/g;
|
|
806
|
+
function stripAnsi(s) {
|
|
807
|
+
return s.replace(ANSI_RE, "");
|
|
808
|
+
}
|
|
809
|
+
function collapseCarriageReturn(line) {
|
|
810
|
+
const s = line.replace(/\r+$/, "");
|
|
811
|
+
const idx = s.lastIndexOf("\r");
|
|
812
|
+
return idx === -1 ? s : s.slice(idx + 1);
|
|
813
|
+
}
|
|
814
|
+
function getLinesView(cmd, opts = {}) {
|
|
815
|
+
const stripAnsiFlag = opts.stripAnsi ?? true;
|
|
816
|
+
const collapseCrFlag = opts.collapseCr ?? true;
|
|
817
|
+
if (cmd.ptyRingBuffer) {
|
|
818
|
+
let snap = cmd.ptyRingBuffer.snapshot();
|
|
819
|
+
if (stripAnsiFlag) snap = stripAnsi(snap);
|
|
820
|
+
const parts = snap.split("\n");
|
|
821
|
+
parts.pop();
|
|
822
|
+
let lines2 = parts;
|
|
823
|
+
if (collapseCrFlag) {
|
|
824
|
+
lines2 = lines2.map(collapseCarriageReturn);
|
|
825
|
+
}
|
|
826
|
+
return {
|
|
827
|
+
lines: lines2,
|
|
828
|
+
firstLineGlobal: cmd.ptyRingBuffer.firstAvailableLine,
|
|
829
|
+
nextLineGlobal: cmd.ptyRingBuffer.firstAvailableLine + lines2.length
|
|
830
|
+
};
|
|
831
|
+
}
|
|
832
|
+
let lines = cmd.outputLines.slice();
|
|
833
|
+
if (stripAnsiFlag) lines = lines.map(stripAnsi);
|
|
834
|
+
if (collapseCrFlag) lines = lines.map(collapseCarriageReturn);
|
|
835
|
+
const firstLineGlobal = getFirstAvailableLine(cmd);
|
|
836
|
+
return {
|
|
837
|
+
lines,
|
|
838
|
+
firstLineGlobal,
|
|
839
|
+
nextLineGlobal: firstLineGlobal + lines.length
|
|
840
|
+
};
|
|
841
|
+
}
|
|
842
|
+
function emptyResult(view) {
|
|
843
|
+
return {
|
|
844
|
+
matches: [],
|
|
845
|
+
next: view.nextLineGlobal,
|
|
846
|
+
firstAvailable: view.firstLineGlobal,
|
|
847
|
+
totalLines: view.nextLineGlobal,
|
|
848
|
+
truncated: false
|
|
849
|
+
};
|
|
850
|
+
}
|
|
851
|
+
function sliceView(view, localStart, localEnd, truncated) {
|
|
852
|
+
const clampedStart = Math.max(0, Math.min(localStart, view.lines.length));
|
|
853
|
+
const clampedEnd = Math.max(clampedStart, Math.min(localEnd, view.lines.length));
|
|
854
|
+
const matches = [];
|
|
855
|
+
for (let i = clampedStart; i < clampedEnd; i++) {
|
|
856
|
+
matches.push({
|
|
857
|
+
lineno: view.firstLineGlobal + i,
|
|
858
|
+
text: view.lines[i]
|
|
859
|
+
});
|
|
860
|
+
}
|
|
861
|
+
return {
|
|
862
|
+
matches,
|
|
863
|
+
next: view.nextLineGlobal,
|
|
864
|
+
firstAvailable: view.firstLineGlobal,
|
|
865
|
+
totalLines: view.nextLineGlobal,
|
|
866
|
+
truncated
|
|
867
|
+
};
|
|
868
|
+
}
|
|
869
|
+
function readSince(cmd, since, opts = {}) {
|
|
870
|
+
const view = getLinesView(cmd, opts);
|
|
871
|
+
if (view.lines.length === 0) return emptyResult(view);
|
|
872
|
+
const localStart = since - view.firstLineGlobal;
|
|
873
|
+
const truncated = since < view.firstLineGlobal;
|
|
874
|
+
return sliceView(view, Math.max(0, localStart), view.lines.length, truncated);
|
|
875
|
+
}
|
|
876
|
+
function readTail(cmd, n, opts = {}) {
|
|
877
|
+
const view = getLinesView(cmd, opts);
|
|
878
|
+
if (view.lines.length === 0) return emptyResult(view);
|
|
879
|
+
const localStart = Math.max(0, view.lines.length - n);
|
|
880
|
+
const truncated = view.firstLineGlobal > 0 && n > view.lines.length;
|
|
881
|
+
return sliceView(view, localStart, view.lines.length, truncated);
|
|
882
|
+
}
|
|
883
|
+
function readHead(cmd, n, opts = {}) {
|
|
884
|
+
const view = getLinesView(cmd, opts);
|
|
885
|
+
if (view.lines.length === 0) return emptyResult(view);
|
|
886
|
+
const truncated = view.firstLineGlobal > 0;
|
|
887
|
+
return sliceView(view, 0, Math.min(n, view.lines.length), truncated);
|
|
888
|
+
}
|
|
889
|
+
function readAround(cmd, lineno, context, opts = {}) {
|
|
890
|
+
const view = getLinesView(cmd, opts);
|
|
891
|
+
if (view.lines.length === 0) return emptyResult(view);
|
|
892
|
+
const wantStart = Math.max(0, lineno - context);
|
|
893
|
+
const wantEnd = lineno + context + 1;
|
|
894
|
+
const localStart = wantStart - view.firstLineGlobal;
|
|
895
|
+
const localEnd = wantEnd - view.firstLineGlobal;
|
|
896
|
+
const truncated = wantStart < view.firstLineGlobal;
|
|
897
|
+
return sliceView(view, Math.max(0, localStart), Math.max(0, localEnd), truncated);
|
|
898
|
+
}
|
|
899
|
+
function grepOutput(cmd, pattern, opts = {}) {
|
|
900
|
+
const view = getLinesView(cmd, opts);
|
|
901
|
+
if (view.lines.length === 0) return emptyResult(view);
|
|
902
|
+
const flags = opts.ignoreCase ? "i" : "";
|
|
903
|
+
let re;
|
|
904
|
+
try {
|
|
905
|
+
re = new RegExp(pattern, flags);
|
|
906
|
+
} catch {
|
|
907
|
+
return emptyResult(view);
|
|
908
|
+
}
|
|
909
|
+
const since = opts.since ?? 0;
|
|
910
|
+
const maxMatches = opts.maxMatches ?? 1e3;
|
|
911
|
+
const matches = [];
|
|
912
|
+
for (let i = 0; i < view.lines.length; i++) {
|
|
913
|
+
const lineno = view.firstLineGlobal + i;
|
|
914
|
+
if (lineno < since) continue;
|
|
915
|
+
if (re.test(view.lines[i])) {
|
|
916
|
+
matches.push({ lineno, text: view.lines[i] });
|
|
917
|
+
if (matches.length >= maxMatches) break;
|
|
918
|
+
}
|
|
919
|
+
}
|
|
920
|
+
return {
|
|
921
|
+
matches,
|
|
922
|
+
next: view.nextLineGlobal,
|
|
923
|
+
firstAvailable: view.firstLineGlobal,
|
|
924
|
+
totalLines: view.nextLineGlobal,
|
|
925
|
+
truncated: since < view.firstLineGlobal
|
|
926
|
+
};
|
|
927
|
+
}
|
|
928
|
+
|
|
729
929
|
export {
|
|
730
930
|
registerBrowser,
|
|
731
931
|
unregisterBrowser,
|
|
@@ -746,13 +946,24 @@ export {
|
|
|
746
946
|
notifyOutputListeners,
|
|
747
947
|
addExitListener,
|
|
748
948
|
notifyExitListeners,
|
|
949
|
+
countNewlines,
|
|
749
950
|
PtyRingBuffer,
|
|
750
951
|
findSafeStart,
|
|
751
952
|
registerCommand,
|
|
752
953
|
appendCommandOutput,
|
|
954
|
+
getFirstAvailableLine,
|
|
753
955
|
getRunningCommands,
|
|
754
956
|
getRunningCommand,
|
|
755
957
|
getRegistrySize,
|
|
756
958
|
getAllProjectCwds,
|
|
757
|
-
finalizeCommand
|
|
959
|
+
finalizeCommand,
|
|
960
|
+
writeStdinToCommand,
|
|
961
|
+
stripAnsi,
|
|
962
|
+
collapseCarriageReturn,
|
|
963
|
+
getLinesView,
|
|
964
|
+
readSince,
|
|
965
|
+
readTail,
|
|
966
|
+
readHead,
|
|
967
|
+
readAround,
|
|
968
|
+
grepOutput
|
|
758
969
|
};
|
|
@@ -1,9 +1,3 @@
|
|
|
1
|
-
var __defProp = Object.defineProperty;
|
|
2
|
-
var __export = (target, all) => {
|
|
3
|
-
for (var name in all)
|
|
4
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
5
|
-
};
|
|
6
|
-
|
|
7
1
|
// packages/feature/console/src/server/plugins/neo4j/neo4jCore.ts
|
|
8
2
|
import neo4j from "neo4j-driver";
|
|
9
3
|
async function createNeo4jDriver(connectionString) {
|
|
@@ -207,7 +201,6 @@ function withFileLock(filePath, fn) {
|
|
|
207
201
|
}
|
|
208
202
|
|
|
209
203
|
export {
|
|
210
|
-
__export,
|
|
211
204
|
createNeo4jDriver,
|
|
212
205
|
runCypherWithDriver,
|
|
213
206
|
serializeValue,
|
package/dist/httpApi.mjs
CHANGED
|
@@ -1,18 +1,29 @@
|
|
|
1
1
|
import {
|
|
2
|
+
addExitListener,
|
|
3
|
+
addOutputListener,
|
|
2
4
|
createPendingRequest,
|
|
3
5
|
getBrowserByShortId,
|
|
6
|
+
getFirstAvailableLine,
|
|
4
7
|
getRunningCommand,
|
|
5
8
|
getTerminalByShortId,
|
|
9
|
+
grepOutput,
|
|
6
10
|
listBrowsers,
|
|
7
11
|
listTerminals,
|
|
12
|
+
readAround,
|
|
13
|
+
readHead,
|
|
14
|
+
readSince,
|
|
15
|
+
readTail,
|
|
8
16
|
registerTerminal,
|
|
9
17
|
sendCommandToBrowser,
|
|
18
|
+
stripAnsi,
|
|
10
19
|
unregisterBrowser,
|
|
11
|
-
unregisterTerminal
|
|
12
|
-
|
|
20
|
+
unregisterTerminal,
|
|
21
|
+
writeStdinToCommand
|
|
22
|
+
} from "./chunk-KRTISG5I.mjs";
|
|
13
23
|
import {
|
|
14
24
|
getTerminalHistoryPath
|
|
15
|
-
} from "./chunk-
|
|
25
|
+
} from "./chunk-ZJ6CC3MH.mjs";
|
|
26
|
+
import "./chunk-7P6ASYW6.mjs";
|
|
16
27
|
|
|
17
28
|
// src/lib/httpApi.ts
|
|
18
29
|
import { parse } from "url";
|
|
@@ -43,12 +54,21 @@ async function readFinishedOutput(projectCwd, tabId, commandId) {
|
|
|
43
54
|
}
|
|
44
55
|
return void 0;
|
|
45
56
|
}
|
|
57
|
+
var HANDLED_TERMINAL_ACTIONS = /* @__PURE__ */ new Set([
|
|
58
|
+
"list",
|
|
59
|
+
"register",
|
|
60
|
+
"unregister",
|
|
61
|
+
"output",
|
|
62
|
+
"stdin",
|
|
63
|
+
"meta",
|
|
64
|
+
"wait"
|
|
65
|
+
]);
|
|
46
66
|
async function handleTerminalApi(req, res) {
|
|
47
67
|
const { pathname } = parse(req.url || "", true);
|
|
48
68
|
const match = pathname?.match(/^\/api\/terminal\/([a-z]+)$/);
|
|
49
69
|
if (!match || req.method !== "POST") return false;
|
|
50
70
|
const action = match[1];
|
|
51
|
-
if (action
|
|
71
|
+
if (!HANDLED_TERMINAL_ACTIONS.has(action)) {
|
|
52
72
|
return false;
|
|
53
73
|
}
|
|
54
74
|
const chunks = [];
|
|
@@ -103,14 +123,56 @@ async function handleTerminalApi(req, res) {
|
|
|
103
123
|
const cmd = getRunningCommand(entry.commandId);
|
|
104
124
|
if (action === "output") {
|
|
105
125
|
if (cmd) {
|
|
106
|
-
const
|
|
126
|
+
const noAnsi = body.noAnsi ?? true;
|
|
127
|
+
const collapseCr = body.collapseCr ?? true;
|
|
128
|
+
const viewOpts = { stripAnsi: noAnsi, collapseCr };
|
|
129
|
+
let result;
|
|
130
|
+
if (typeof body.grep === "string" && body.grep.length > 0) {
|
|
131
|
+
result = grepOutput(cmd, body.grep, {
|
|
132
|
+
...viewOpts,
|
|
133
|
+
ignoreCase: !!body.ignoreCase,
|
|
134
|
+
since: typeof body.since === "number" ? body.since : 0
|
|
135
|
+
});
|
|
136
|
+
} else if (typeof body.around === "number") {
|
|
137
|
+
result = readAround(
|
|
138
|
+
cmd,
|
|
139
|
+
body.around,
|
|
140
|
+
typeof body.context === "number" ? body.context : 5,
|
|
141
|
+
viewOpts
|
|
142
|
+
);
|
|
143
|
+
} else if (typeof body.tail === "number") {
|
|
144
|
+
result = readTail(cmd, body.tail, viewOpts);
|
|
145
|
+
} else if (typeof body.head === "number") {
|
|
146
|
+
result = readHead(cmd, body.head, viewOpts);
|
|
147
|
+
} else {
|
|
148
|
+
result = readSince(
|
|
149
|
+
cmd,
|
|
150
|
+
typeof body.since === "number" ? body.since : 0,
|
|
151
|
+
viewOpts
|
|
152
|
+
);
|
|
153
|
+
}
|
|
154
|
+
const maxBytes = body.maxBytes ?? 65536;
|
|
155
|
+
let acc = 0;
|
|
156
|
+
const trimmed = [];
|
|
157
|
+
for (let i = result.matches.length - 1; i >= 0; i--) {
|
|
158
|
+
const t = result.matches[i].text;
|
|
159
|
+
const len = t.length + 1;
|
|
160
|
+
if (acc + len > maxBytes && trimmed.length > 0) break;
|
|
161
|
+
trimmed.unshift(result.matches[i]);
|
|
162
|
+
acc += len;
|
|
163
|
+
}
|
|
164
|
+
const byteTruncated = trimmed.length < result.matches.length;
|
|
107
165
|
sendJson(200, {
|
|
108
166
|
ok: true,
|
|
109
167
|
data: {
|
|
110
|
-
|
|
168
|
+
matches: trimmed,
|
|
169
|
+
next: result.next,
|
|
170
|
+
firstAvailable: result.firstAvailable,
|
|
171
|
+
totalLines: result.totalLines,
|
|
172
|
+
truncated: result.truncated || byteTruncated,
|
|
173
|
+
running: true,
|
|
111
174
|
command: entry.command,
|
|
112
|
-
pid: cmd.pid
|
|
113
|
-
running: true
|
|
175
|
+
pid: cmd.pid
|
|
114
176
|
}
|
|
115
177
|
});
|
|
116
178
|
} else {
|
|
@@ -124,10 +186,11 @@ async function handleTerminalApi(req, res) {
|
|
|
124
186
|
entry.commandId
|
|
125
187
|
);
|
|
126
188
|
if (historyOutput !== void 0) {
|
|
189
|
+
const out = body.noAnsi ? stripAnsi(historyOutput.output) : historyOutput.output;
|
|
127
190
|
sendJson(200, {
|
|
128
191
|
ok: true,
|
|
129
192
|
data: {
|
|
130
|
-
output:
|
|
193
|
+
output: out,
|
|
131
194
|
command: entry.command,
|
|
132
195
|
exitCode: historyOutput.exitCode,
|
|
133
196
|
running: false
|
|
@@ -149,23 +212,146 @@ async function handleTerminalApi(req, res) {
|
|
|
149
212
|
sendJson(400, { ok: false, error: "Missing data" });
|
|
150
213
|
return true;
|
|
151
214
|
}
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
cmd.ptyProcess.write(data);
|
|
155
|
-
} catch {
|
|
156
|
-
}
|
|
157
|
-
} else if (cmd.process.stdin?.writable) {
|
|
158
|
-
cmd.process.stdin.write(data);
|
|
159
|
-
} else {
|
|
215
|
+
const ok2 = writeStdinToCommand(cmd, data);
|
|
216
|
+
if (!ok2) {
|
|
160
217
|
sendJson(500, { ok: false, error: "stdin not writable" });
|
|
161
218
|
return true;
|
|
162
219
|
}
|
|
163
220
|
sendJson(200, { ok: true });
|
|
164
221
|
return true;
|
|
165
222
|
}
|
|
223
|
+
if (action === "meta") {
|
|
224
|
+
if (cmd) {
|
|
225
|
+
sendJson(200, {
|
|
226
|
+
ok: true,
|
|
227
|
+
data: {
|
|
228
|
+
shortId: id,
|
|
229
|
+
commandId: cmd.commandId,
|
|
230
|
+
command: cmd.command,
|
|
231
|
+
cwd: cmd.cwd,
|
|
232
|
+
tabId: cmd.tabId,
|
|
233
|
+
pid: cmd.pid,
|
|
234
|
+
usePty: !!cmd.usePty,
|
|
235
|
+
running: true,
|
|
236
|
+
startedAt: cmd.timestamp,
|
|
237
|
+
lastOutputAt: cmd.lastOutputAt ? new Date(cmd.lastOutputAt).toISOString() : null,
|
|
238
|
+
totalLines: cmd.totalLinesEverWritten,
|
|
239
|
+
firstAvailable: getFirstAvailableLine(cmd),
|
|
240
|
+
exitCode: null
|
|
241
|
+
}
|
|
242
|
+
});
|
|
243
|
+
} else {
|
|
244
|
+
sendJson(200, {
|
|
245
|
+
ok: true,
|
|
246
|
+
data: {
|
|
247
|
+
shortId: id,
|
|
248
|
+
commandId: entry.commandId,
|
|
249
|
+
command: entry.command,
|
|
250
|
+
tabId: entry.tabId,
|
|
251
|
+
running: false
|
|
252
|
+
// Exit info / history rebuild left for a future enhancement that
|
|
253
|
+
// reads the JSONL placeholder; meta on a stopped command is mostly
|
|
254
|
+
// useful for confirming "this id existed".
|
|
255
|
+
}
|
|
256
|
+
});
|
|
257
|
+
}
|
|
258
|
+
return true;
|
|
259
|
+
}
|
|
260
|
+
if (action === "wait") {
|
|
261
|
+
if (!cmd) {
|
|
262
|
+
sendJson(404, { ok: false, error: "Command no longer running" });
|
|
263
|
+
return true;
|
|
264
|
+
}
|
|
265
|
+
const timeoutSec = body.timeout ?? 30;
|
|
266
|
+
if (!body.pattern && typeof body.idle !== "number" && !body.waitExit) {
|
|
267
|
+
sendJson(400, {
|
|
268
|
+
ok: false,
|
|
269
|
+
error: "wait requires one of: pattern / idle / waitExit"
|
|
270
|
+
});
|
|
271
|
+
return true;
|
|
272
|
+
}
|
|
273
|
+
const outcome = await waitForCondition(cmd.commandId, {
|
|
274
|
+
pattern: body.pattern,
|
|
275
|
+
idle: body.idle,
|
|
276
|
+
waitExit: body.waitExit,
|
|
277
|
+
timeoutSec,
|
|
278
|
+
printOutput: !!body.printOutput
|
|
279
|
+
});
|
|
280
|
+
sendJson(200, { ok: true, data: outcome });
|
|
281
|
+
return true;
|
|
282
|
+
}
|
|
166
283
|
sendJson(400, { ok: false, error: `Unknown action: ${action}` });
|
|
167
284
|
return true;
|
|
168
285
|
}
|
|
286
|
+
async function waitForCondition(commandId, opts) {
|
|
287
|
+
return new Promise((resolve) => {
|
|
288
|
+
let resolved = false;
|
|
289
|
+
let unsubOutput;
|
|
290
|
+
let unsubExit;
|
|
291
|
+
let idleHandle;
|
|
292
|
+
const buf = [];
|
|
293
|
+
const cleanup = () => {
|
|
294
|
+
if (unsubOutput) unsubOutput();
|
|
295
|
+
if (unsubExit) unsubExit();
|
|
296
|
+
clearTimeout(timeoutHandle);
|
|
297
|
+
if (idleHandle) clearTimeout(idleHandle);
|
|
298
|
+
};
|
|
299
|
+
const finish = (result) => {
|
|
300
|
+
if (resolved) return;
|
|
301
|
+
resolved = true;
|
|
302
|
+
cleanup();
|
|
303
|
+
const output = opts.printOutput ? buf.join("") : void 0;
|
|
304
|
+
resolve({ ...result, output });
|
|
305
|
+
};
|
|
306
|
+
let patternRe;
|
|
307
|
+
if (opts.pattern) {
|
|
308
|
+
try {
|
|
309
|
+
patternRe = new RegExp(opts.pattern);
|
|
310
|
+
} catch (e) {
|
|
311
|
+
finish({ outcome: "timeout" });
|
|
312
|
+
resolve({
|
|
313
|
+
outcome: "timeout",
|
|
314
|
+
match: `invalid regex: ${e.message}`
|
|
315
|
+
});
|
|
316
|
+
return;
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
const scheduleIdle = () => {
|
|
320
|
+
if (typeof opts.idle !== "number") return;
|
|
321
|
+
if (idleHandle) clearTimeout(idleHandle);
|
|
322
|
+
idleHandle = setTimeout(
|
|
323
|
+
() => finish({ outcome: "idle" }),
|
|
324
|
+
opts.idle * 1e3
|
|
325
|
+
);
|
|
326
|
+
};
|
|
327
|
+
if (patternRe || typeof opts.idle === "number" || opts.printOutput) {
|
|
328
|
+
unsubOutput = addOutputListener(commandId, (data) => {
|
|
329
|
+
if (opts.printOutput) buf.push(data);
|
|
330
|
+
if (patternRe) {
|
|
331
|
+
const stripped = stripAnsi(data);
|
|
332
|
+
const lines = stripped.split("\n");
|
|
333
|
+
for (const line of lines) {
|
|
334
|
+
if (patternRe.test(line)) {
|
|
335
|
+
finish({ outcome: "pattern", match: line });
|
|
336
|
+
return;
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
}
|
|
340
|
+
scheduleIdle();
|
|
341
|
+
});
|
|
342
|
+
}
|
|
343
|
+
if (opts.waitExit) {
|
|
344
|
+
unsubExit = addExitListener(commandId, (code) => {
|
|
345
|
+
finish({ outcome: "exit", exitCode: code });
|
|
346
|
+
});
|
|
347
|
+
}
|
|
348
|
+
scheduleIdle();
|
|
349
|
+
const timeoutHandle = setTimeout(
|
|
350
|
+
() => finish({ outcome: "timeout" }),
|
|
351
|
+
opts.timeoutSec * 1e3
|
|
352
|
+
);
|
|
353
|
+
});
|
|
354
|
+
}
|
|
169
355
|
async function handleBrowserApi(req, res) {
|
|
170
356
|
const { pathname } = parse(req.url || "", true);
|
|
171
357
|
const match = pathname?.match(/^\/api\/browser\/([a-z][a-z_]*)$/);
|
package/dist/scheduledTasks.mjs
CHANGED
|
@@ -18,7 +18,7 @@ import {
|
|
|
18
18
|
Tracer_exports,
|
|
19
19
|
getSessionTitle,
|
|
20
20
|
updateGlobalState
|
|
21
|
-
} from "./chunk-
|
|
21
|
+
} from "./chunk-CZWJPTRO.mjs";
|
|
22
22
|
import {
|
|
23
23
|
CLAUDE2_DIR,
|
|
24
24
|
SCHEDULED_TASKS_FILE,
|
|
@@ -26,7 +26,8 @@ import {
|
|
|
26
26
|
readJsonFile,
|
|
27
27
|
runCypherWithDriver,
|
|
28
28
|
writeJsonFile
|
|
29
|
-
} from "./chunk-
|
|
29
|
+
} from "./chunk-ZJ6CC3MH.mjs";
|
|
30
|
+
import "./chunk-7P6ASYW6.mjs";
|
|
30
31
|
|
|
31
32
|
// packages/feature/agent/src/server/scheduledTasks.ts
|
|
32
33
|
import { query as query2 } from "@anthropic-ai/claude-agent-sdk";
|
|
@@ -3,41 +3,55 @@ import {
|
|
|
3
3
|
addExitListener,
|
|
4
4
|
addOutputListener,
|
|
5
5
|
appendCommandOutput,
|
|
6
|
+
collapseCarriageReturn,
|
|
7
|
+
countNewlines,
|
|
6
8
|
createPendingRequest,
|
|
7
9
|
finalizeCommand,
|
|
8
10
|
finalizeTerminal,
|
|
9
11
|
findSafeStart,
|
|
10
12
|
getAllProjectCwds,
|
|
11
13
|
getBrowserByShortId,
|
|
14
|
+
getFirstAvailableLine,
|
|
15
|
+
getLinesView,
|
|
12
16
|
getRegistrySize,
|
|
13
17
|
getRunningCommand,
|
|
14
18
|
getRunningCommands,
|
|
15
19
|
getTerminalByShortId,
|
|
16
20
|
getTerminalShortId,
|
|
21
|
+
grepOutput,
|
|
17
22
|
kernelManager,
|
|
18
23
|
listBrowsers,
|
|
19
24
|
listTerminals,
|
|
20
25
|
notifyExitListeners,
|
|
21
26
|
notifyOutputListeners,
|
|
27
|
+
readAround,
|
|
28
|
+
readHead,
|
|
29
|
+
readSince,
|
|
30
|
+
readTail,
|
|
22
31
|
registerBrowser,
|
|
23
32
|
registerCommand,
|
|
24
33
|
registerTerminal,
|
|
25
34
|
resolvePendingRequest,
|
|
26
35
|
sendCommandToBrowser,
|
|
36
|
+
stripAnsi,
|
|
27
37
|
unregisterBrowser,
|
|
28
38
|
unregisterTerminal,
|
|
29
|
-
updateBrowserWs
|
|
30
|
-
|
|
39
|
+
updateBrowserWs,
|
|
40
|
+
writeStdinToCommand
|
|
41
|
+
} from "./chunk-KRTISG5I.mjs";
|
|
31
42
|
import {
|
|
32
43
|
createNeo4jDriver,
|
|
33
44
|
runCypherWithDriver,
|
|
34
45
|
serializeValue
|
|
35
|
-
} from "./chunk-
|
|
46
|
+
} from "./chunk-ZJ6CC3MH.mjs";
|
|
47
|
+
import "./chunk-7P6ASYW6.mjs";
|
|
36
48
|
export {
|
|
37
49
|
PtyRingBuffer,
|
|
38
50
|
addExitListener,
|
|
39
51
|
addOutputListener,
|
|
40
52
|
appendCommandOutput,
|
|
53
|
+
collapseCarriageReturn,
|
|
54
|
+
countNewlines,
|
|
41
55
|
createNeo4jDriver,
|
|
42
56
|
createPendingRequest,
|
|
43
57
|
finalizeCommand,
|
|
@@ -45,16 +59,23 @@ export {
|
|
|
45
59
|
findSafeStart,
|
|
46
60
|
getAllProjectCwds,
|
|
47
61
|
getBrowserByShortId,
|
|
62
|
+
getFirstAvailableLine,
|
|
63
|
+
getLinesView,
|
|
48
64
|
getRegistrySize,
|
|
49
65
|
getRunningCommand,
|
|
50
66
|
getRunningCommands,
|
|
51
67
|
getTerminalByShortId,
|
|
52
68
|
getTerminalShortId,
|
|
69
|
+
grepOutput,
|
|
53
70
|
kernelManager,
|
|
54
71
|
listBrowsers,
|
|
55
72
|
listTerminals,
|
|
56
73
|
notifyExitListeners,
|
|
57
74
|
notifyOutputListeners,
|
|
75
|
+
readAround,
|
|
76
|
+
readHead,
|
|
77
|
+
readSince,
|
|
78
|
+
readTail,
|
|
58
79
|
registerBrowser,
|
|
59
80
|
registerCommand,
|
|
60
81
|
registerTerminal,
|
|
@@ -62,7 +83,9 @@ export {
|
|
|
62
83
|
runCypherWithDriver,
|
|
63
84
|
sendCommandToBrowser,
|
|
64
85
|
serializeValue,
|
|
86
|
+
stripAnsi,
|
|
65
87
|
unregisterBrowser,
|
|
66
88
|
unregisterTerminal,
|
|
67
|
-
updateBrowserWs
|
|
89
|
+
updateBrowserWs,
|
|
90
|
+
writeStdinToCommand
|
|
68
91
|
};
|