@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
package/bin/cock.mjs
CHANGED
|
@@ -21,6 +21,7 @@ Commands:
|
|
|
21
21
|
cockpit <path> Start server, open specified directory
|
|
22
22
|
browser <id> <action> Control browser bubbles
|
|
23
23
|
terminal <id> <action> Control terminal bubbles
|
|
24
|
+
codegraph <subcmd> [...] Query the project code graph (search/risk/affected/...)
|
|
24
25
|
update Update to latest version
|
|
25
26
|
|
|
26
27
|
Options:
|
|
@@ -93,6 +94,13 @@ if (process.argv[2] === 'terminal') {
|
|
|
93
94
|
await flushAndExit(0);
|
|
94
95
|
}
|
|
95
96
|
|
|
97
|
+
if (process.argv[2] === 'codegraph') {
|
|
98
|
+
process.argv.splice(2, 1);
|
|
99
|
+
const mod = await import('./cock-codegraph.mjs');
|
|
100
|
+
await mod.done;
|
|
101
|
+
await flushAndExit(0);
|
|
102
|
+
}
|
|
103
|
+
|
|
96
104
|
if (process.argv[2] === 'update') {
|
|
97
105
|
console.log('Updating @surething/cockpit...');
|
|
98
106
|
const result = spawnSync('npm', ['install', '-g', '@surething/cockpit@latest'], { stdio: 'inherit' });
|
|
@@ -110,7 +118,7 @@ if (process.argv[2] === 'update') {
|
|
|
110
118
|
const { existsSync, mkdirSync } = await import('fs');
|
|
111
119
|
const { homedir } = await import('os');
|
|
112
120
|
|
|
113
|
-
const knownCommands = new Set(['browser', 'terminal', 'update', 'help']);
|
|
121
|
+
const knownCommands = new Set(['browser', 'terminal', 'update', 'help', 'codegraph']);
|
|
114
122
|
const arg = process.argv[2];
|
|
115
123
|
let projectDir = null;
|
|
116
124
|
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
// cockpit-dev: dev-mode entry. Sets dev env + delegates to cock.mjs which
|
|
4
|
+
// holds the shared subcommand dispatcher. The prod entry binaries are
|
|
5
|
+
// `cockpit` (recommended) and its short alias `cock` — there is NO short
|
|
6
|
+
// `cock-dev` alias by design; dev mode uses the full name only.
|
|
7
|
+
process.env.COCKPIT_ENV = 'dev';
|
|
8
|
+
process.env.COCKPIT_PORT = process.env.COCKPIT_PORT || '3456';
|
|
9
|
+
await import('./cock.mjs');
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Selective symlink for `cockpit-dev` — installs ONLY the dev binary as
|
|
4
|
+
* a live symlink to local source, without touching the global `cockpit`
|
|
5
|
+
* / `cock` binaries which come from `npm install -g @surething/cockpit`.
|
|
6
|
+
*
|
|
7
|
+
* Why not `npm link`:
|
|
8
|
+
* `npm link` is all-or-nothing — it overrides ALL package.json `bin`
|
|
9
|
+
* entries (cockpit, cock, cockpit-dev) with symlinks to local source.
|
|
10
|
+
* That means your prod `cockpit` becomes the dev source too, and any
|
|
11
|
+
* broken commit in the repo immediately breaks production usage. The
|
|
12
|
+
* `unlink` / `install -g` dance to recover is friction.
|
|
13
|
+
*
|
|
14
|
+
* This script avoids that by symlinking JUST `cockpit-dev`. Result:
|
|
15
|
+
* - `cockpit` → unchanged (npm-installed, stable, follows releases)
|
|
16
|
+
* - `cock` → unchanged (npm-installed, prod alias)
|
|
17
|
+
* - `cockpit-dev` → symlink → /<repo>/bin/cockpit-dev.mjs (live)
|
|
18
|
+
*
|
|
19
|
+
* You never need to "unlink"; the symlink coexists with the npm install
|
|
20
|
+
* peacefully and `npm i -g @surething/cockpit@latest` to upgrade prod
|
|
21
|
+
* leaves the dev symlink untouched.
|
|
22
|
+
*
|
|
23
|
+
* Idempotent: replaces an existing symlink/file if present.
|
|
24
|
+
*
|
|
25
|
+
* Run from the cockpit repo root: `npm run setup-dev`
|
|
26
|
+
*/
|
|
27
|
+
import { existsSync, lstatSync, unlinkSync, symlinkSync, chmodSync } from 'node:fs';
|
|
28
|
+
import { resolve, dirname } from 'node:path';
|
|
29
|
+
import { fileURLToPath } from 'node:url';
|
|
30
|
+
import { execSync } from 'node:child_process';
|
|
31
|
+
|
|
32
|
+
const SCRIPT_DIR = dirname(fileURLToPath(import.meta.url));
|
|
33
|
+
const REPO_ROOT = resolve(SCRIPT_DIR, '..');
|
|
34
|
+
const SOURCE = resolve(REPO_ROOT, 'bin/cockpit-dev.mjs');
|
|
35
|
+
|
|
36
|
+
if (!existsSync(SOURCE)) {
|
|
37
|
+
console.error(`✗ Source not found: ${SOURCE}`);
|
|
38
|
+
console.error(` Are you running from the cockpit repo? cwd=${process.cwd()}`);
|
|
39
|
+
process.exit(1);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
// Resolve global npm bin dir.
|
|
43
|
+
let prefix;
|
|
44
|
+
try {
|
|
45
|
+
prefix = execSync('npm config get prefix', { encoding: 'utf8' }).trim();
|
|
46
|
+
} catch (err) {
|
|
47
|
+
console.error('✗ Failed to resolve npm prefix:', err?.message);
|
|
48
|
+
process.exit(1);
|
|
49
|
+
}
|
|
50
|
+
const TARGET = resolve(prefix, 'bin/cockpit-dev');
|
|
51
|
+
|
|
52
|
+
// Ensure source is executable.
|
|
53
|
+
try {
|
|
54
|
+
chmodSync(SOURCE, 0o755);
|
|
55
|
+
} catch {
|
|
56
|
+
/* non-fatal */
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
// Replace existing symlink/file if any.
|
|
60
|
+
if (existsSync(TARGET) || (() => { try { return lstatSync(TARGET).isSymbolicLink(); } catch { return false; } })()) {
|
|
61
|
+
try {
|
|
62
|
+
unlinkSync(TARGET);
|
|
63
|
+
} catch (err) {
|
|
64
|
+
console.error(`✗ Could not remove existing ${TARGET}:`, err?.message);
|
|
65
|
+
console.error(` You may need: sudo rm ${TARGET}`);
|
|
66
|
+
process.exit(1);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
try {
|
|
71
|
+
symlinkSync(SOURCE, TARGET, 'file');
|
|
72
|
+
} catch (err) {
|
|
73
|
+
if (err?.code === 'EACCES' || err?.code === 'EPERM') {
|
|
74
|
+
console.error(`✗ Permission denied creating ${TARGET}`);
|
|
75
|
+
console.error(` Either: sudo ln -sf ${SOURCE} ${TARGET}`);
|
|
76
|
+
console.error(` Or: configure npm prefix to a user-writable dir`);
|
|
77
|
+
console.error(` (e.g. npm config set prefix ~/.npm-global)`);
|
|
78
|
+
process.exit(1);
|
|
79
|
+
}
|
|
80
|
+
console.error(`✗ Failed:`, err?.message);
|
|
81
|
+
process.exit(1);
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
console.log(`✓ Linked ${TARGET}`);
|
|
85
|
+
console.log(` → ${SOURCE}`);
|
|
86
|
+
console.log('');
|
|
87
|
+
console.log('Now usable:');
|
|
88
|
+
console.log(' cockpit-dev --version # should report current local version');
|
|
89
|
+
console.log(' cockpit-dev codegraph search foo # talks to dev server on port 3456');
|
|
90
|
+
console.log('');
|
|
91
|
+
console.log('Edits to bin/*.mjs are live (no rerun needed).');
|
|
92
|
+
console.log('Prod `cockpit` / `cock` are untouched — they still come from your npm install.');
|
|
@@ -0,0 +1,502 @@
|
|
|
1
|
+
import "./chunk-7P6ASYW6.mjs";
|
|
2
|
+
|
|
3
|
+
// packages/feature/explorer/src/server/codeMap/analytics/types.ts
|
|
4
|
+
function makeNodeId(filePath, qualifiedName) {
|
|
5
|
+
return `${filePath}::${qualifiedName}`;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
// packages/feature/explorer/src/server/codeMap/analytics/graph.ts
|
|
9
|
+
var FILE_NODE_QNAME = "__file__";
|
|
10
|
+
function fileNodeId(filePath) {
|
|
11
|
+
return makeNodeId(filePath, FILE_NODE_QNAME);
|
|
12
|
+
}
|
|
13
|
+
function buildAnalyticsGraph(index, version) {
|
|
14
|
+
const nodes = /* @__PURE__ */ new Map();
|
|
15
|
+
const out = /* @__PURE__ */ new Map();
|
|
16
|
+
const inn = /* @__PURE__ */ new Map();
|
|
17
|
+
const pushEdge = (map, from, edge) => {
|
|
18
|
+
let list = map.get(from);
|
|
19
|
+
if (!list) {
|
|
20
|
+
list = [];
|
|
21
|
+
map.set(from, list);
|
|
22
|
+
}
|
|
23
|
+
list.push(edge);
|
|
24
|
+
};
|
|
25
|
+
for (const [filePath, file] of index.files) {
|
|
26
|
+
for (const sym of file.flatSymbols) {
|
|
27
|
+
const id = makeNodeId(filePath, sym.qualifiedName);
|
|
28
|
+
if (!nodes.has(id)) {
|
|
29
|
+
nodes.set(id, {
|
|
30
|
+
filePath,
|
|
31
|
+
qualifiedName: sym.qualifiedName,
|
|
32
|
+
name: sym.name,
|
|
33
|
+
kind: sym.kind,
|
|
34
|
+
startLine: sym.startLine,
|
|
35
|
+
endLine: sym.endLine
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
const fId = fileNodeId(filePath);
|
|
40
|
+
if (!nodes.has(fId)) {
|
|
41
|
+
nodes.set(fId, {
|
|
42
|
+
filePath,
|
|
43
|
+
qualifiedName: FILE_NODE_QNAME,
|
|
44
|
+
name: basename(filePath),
|
|
45
|
+
// We deliberately use 'unknown' kind — SymbolKind doesn't have
|
|
46
|
+
// 'file' and we don't want to expand the union for an internal
|
|
47
|
+
// virtual node.
|
|
48
|
+
kind: "unknown",
|
|
49
|
+
startLine: 0,
|
|
50
|
+
endLine: 0
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
for (const [filePath, file] of index.files) {
|
|
55
|
+
for (const call of file.intraCalls) {
|
|
56
|
+
const from = makeNodeId(filePath, call.from);
|
|
57
|
+
const to = makeNodeId(filePath, call.to);
|
|
58
|
+
if (!nodes.has(from) || !nodes.has(to)) continue;
|
|
59
|
+
const weight = Math.max(1, call.lines.length);
|
|
60
|
+
pushEdge(out, from, { target: to, edgeType: "intraCall", weight });
|
|
61
|
+
pushEdge(inn, to, { target: from, edgeType: "intraCall", weight });
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
for (const [filePath, file] of index.files) {
|
|
65
|
+
for (const call of file.outgoingCalls) {
|
|
66
|
+
const from = makeNodeId(filePath, call.from);
|
|
67
|
+
const to = makeNodeId(call.to.filePath, call.to.qualifiedName);
|
|
68
|
+
if (!nodes.has(from) || !nodes.has(to)) continue;
|
|
69
|
+
const weight = Math.max(1, call.lines.length);
|
|
70
|
+
pushEdge(out, from, { target: to, edgeType: "crossCall", weight });
|
|
71
|
+
pushEdge(inn, to, { target: from, edgeType: "crossCall", weight });
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
for (const [filePath, file] of index.files) {
|
|
75
|
+
const fromFNode = fileNodeId(filePath);
|
|
76
|
+
for (const importedFile of file.importedFiles) {
|
|
77
|
+
const toFNode = fileNodeId(importedFile);
|
|
78
|
+
if (!nodes.has(toFNode)) continue;
|
|
79
|
+
pushEdge(out, fromFNode, {
|
|
80
|
+
target: toFNode,
|
|
81
|
+
edgeType: "import",
|
|
82
|
+
weight: 1
|
|
83
|
+
});
|
|
84
|
+
pushEdge(inn, toFNode, {
|
|
85
|
+
target: fromFNode,
|
|
86
|
+
edgeType: "import",
|
|
87
|
+
weight: 1
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
for (const [filePath, file] of index.files) {
|
|
92
|
+
const fNode = fileNodeId(filePath);
|
|
93
|
+
const symbols = file.flatSymbols;
|
|
94
|
+
if (symbols.length === 0) continue;
|
|
95
|
+
const outflowWeight = 1 / symbols.length;
|
|
96
|
+
for (const sym of symbols) {
|
|
97
|
+
const symId = makeNodeId(filePath, sym.qualifiedName);
|
|
98
|
+
if (!nodes.has(symId)) continue;
|
|
99
|
+
pushEdge(out, symId, {
|
|
100
|
+
target: fNode,
|
|
101
|
+
edgeType: "import",
|
|
102
|
+
// reuse type tag (no need for a new one)
|
|
103
|
+
weight: 1
|
|
104
|
+
});
|
|
105
|
+
pushEdge(inn, fNode, {
|
|
106
|
+
target: symId,
|
|
107
|
+
edgeType: "import",
|
|
108
|
+
weight: 1
|
|
109
|
+
});
|
|
110
|
+
pushEdge(out, fNode, {
|
|
111
|
+
target: symId,
|
|
112
|
+
edgeType: "import",
|
|
113
|
+
weight: outflowWeight
|
|
114
|
+
});
|
|
115
|
+
pushEdge(inn, symId, {
|
|
116
|
+
target: fNode,
|
|
117
|
+
edgeType: "import",
|
|
118
|
+
weight: outflowWeight
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
return {
|
|
123
|
+
cwd: index.cwd,
|
|
124
|
+
version,
|
|
125
|
+
nodes,
|
|
126
|
+
out,
|
|
127
|
+
in: inn
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
function basename(p) {
|
|
131
|
+
const i = p.lastIndexOf("/");
|
|
132
|
+
return i < 0 ? p : p.slice(i + 1);
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
// packages/feature/explorer/src/server/codeMap/analytics/pagerank.ts
|
|
136
|
+
function buildOutSumCache(graph) {
|
|
137
|
+
const outSum = /* @__PURE__ */ new Map();
|
|
138
|
+
const dangling = [];
|
|
139
|
+
for (const id of graph.nodes.keys()) {
|
|
140
|
+
const edges = graph.out.get(id);
|
|
141
|
+
if (!edges || edges.length === 0) {
|
|
142
|
+
outSum.set(id, 0);
|
|
143
|
+
dangling.push(id);
|
|
144
|
+
continue;
|
|
145
|
+
}
|
|
146
|
+
let s = 0;
|
|
147
|
+
for (const e of edges) s += e.weight;
|
|
148
|
+
outSum.set(id, s);
|
|
149
|
+
}
|
|
150
|
+
return { outSum, dangling };
|
|
151
|
+
}
|
|
152
|
+
function iterate(graph, resetVec, damping, maxIter, tol, cache2) {
|
|
153
|
+
const n = graph.nodes.size;
|
|
154
|
+
if (n === 0) return /* @__PURE__ */ new Map();
|
|
155
|
+
let rank = /* @__PURE__ */ new Map();
|
|
156
|
+
for (const id of graph.nodes.keys()) {
|
|
157
|
+
rank.set(id, resetVec.get(id) ?? 0);
|
|
158
|
+
}
|
|
159
|
+
for (let iter = 0; iter < maxIter; iter++) {
|
|
160
|
+
const next = /* @__PURE__ */ new Map();
|
|
161
|
+
for (const id of graph.nodes.keys()) {
|
|
162
|
+
next.set(id, (1 - damping) * (resetVec.get(id) ?? 0));
|
|
163
|
+
}
|
|
164
|
+
let danglingMass = 0;
|
|
165
|
+
for (const d of cache2.dangling) danglingMass += rank.get(d) ?? 0;
|
|
166
|
+
if (danglingMass > 0) {
|
|
167
|
+
const distributed = damping * danglingMass;
|
|
168
|
+
for (const [id, w] of resetVec) {
|
|
169
|
+
next.set(id, (next.get(id) ?? 0) + distributed * w);
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
for (const [id, edges] of graph.out) {
|
|
173
|
+
const s = cache2.outSum.get(id) ?? 0;
|
|
174
|
+
if (s === 0) continue;
|
|
175
|
+
const share = damping * (rank.get(id) ?? 0) / s;
|
|
176
|
+
if (share === 0) continue;
|
|
177
|
+
for (const e of edges) {
|
|
178
|
+
next.set(e.target, (next.get(e.target) ?? 0) + share * e.weight);
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
let delta = 0;
|
|
182
|
+
for (const id of graph.nodes.keys()) {
|
|
183
|
+
delta += Math.abs((next.get(id) ?? 0) - (rank.get(id) ?? 0));
|
|
184
|
+
}
|
|
185
|
+
rank = next;
|
|
186
|
+
if (delta < tol) break;
|
|
187
|
+
}
|
|
188
|
+
return rank;
|
|
189
|
+
}
|
|
190
|
+
function normaliseResetVec(graph, seeds) {
|
|
191
|
+
const out = /* @__PURE__ */ new Map();
|
|
192
|
+
if (!seeds || seeds.size === 0) {
|
|
193
|
+
const w = 1 / Math.max(1, graph.nodes.size);
|
|
194
|
+
for (const id of graph.nodes.keys()) out.set(id, w);
|
|
195
|
+
return out;
|
|
196
|
+
}
|
|
197
|
+
let sum = 0;
|
|
198
|
+
for (const [id, w] of seeds) {
|
|
199
|
+
if (graph.nodes.has(id) && w > 0) {
|
|
200
|
+
out.set(id, w);
|
|
201
|
+
sum += w;
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
if (sum === 0) {
|
|
205
|
+
const w = 1 / Math.max(1, graph.nodes.size);
|
|
206
|
+
for (const id of graph.nodes.keys()) out.set(id, w);
|
|
207
|
+
return out;
|
|
208
|
+
}
|
|
209
|
+
for (const [id, w] of out) out.set(id, w / sum);
|
|
210
|
+
return out;
|
|
211
|
+
}
|
|
212
|
+
function pagerank(graph, opts = {}) {
|
|
213
|
+
const damping = opts.damping ?? 0.85;
|
|
214
|
+
const maxIter = opts.maxIter ?? 50;
|
|
215
|
+
const tol = opts.tol ?? 1e-6;
|
|
216
|
+
const cache2 = buildOutSumCache(graph);
|
|
217
|
+
return iterate(graph, normaliseResetVec(graph), damping, maxIter, tol, cache2);
|
|
218
|
+
}
|
|
219
|
+
function personalizedPageRank(graph, seeds, opts = {}) {
|
|
220
|
+
const damping = opts.damping ?? 0.85;
|
|
221
|
+
const maxIter = opts.maxIter ?? 30;
|
|
222
|
+
const tol = opts.tol ?? 1e-6;
|
|
223
|
+
const topK = opts.topK ?? 0;
|
|
224
|
+
const seedMap = Array.isArray(seeds) ? new Map(seeds.map((id) => [id, 1])) : new Map(seeds);
|
|
225
|
+
const resetVec = normaliseResetVec(graph, seedMap);
|
|
226
|
+
const cache2 = buildOutSumCache(graph);
|
|
227
|
+
const ranks = iterate(graph, resetVec, damping, maxIter, tol, cache2);
|
|
228
|
+
const seedSet = new Set(seedMap.keys());
|
|
229
|
+
const results = [];
|
|
230
|
+
for (const [node, score] of ranks) {
|
|
231
|
+
if (seedSet.has(node)) continue;
|
|
232
|
+
if (score <= 0) continue;
|
|
233
|
+
results.push({ node, score });
|
|
234
|
+
}
|
|
235
|
+
results.sort((a, b) => b.score - a.score);
|
|
236
|
+
return topK > 0 ? results.slice(0, topK) : results;
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
// packages/feature/explorer/src/server/codeMap/analytics/tfidf.ts
|
|
240
|
+
var TOKEN_SPLIT = /[\s_./>:\\-]+|(?<=[a-z0-9])(?=[A-Z])|(?<=[A-Z])(?=[A-Z][a-z])/g;
|
|
241
|
+
var MIN_TOKEN_LEN = 2;
|
|
242
|
+
var NGRAM_SIZES = [3, 4];
|
|
243
|
+
var NGRAM_WEIGHT = 0.5;
|
|
244
|
+
var MIN_LEN_FOR_NGRAM = 4;
|
|
245
|
+
function tokenize(text) {
|
|
246
|
+
if (!text) return [];
|
|
247
|
+
const raw = text.split(TOKEN_SPLIT);
|
|
248
|
+
const out = [];
|
|
249
|
+
for (const t of raw) {
|
|
250
|
+
if (!t) continue;
|
|
251
|
+
const low = t.toLowerCase();
|
|
252
|
+
if (low.length < MIN_TOKEN_LEN) continue;
|
|
253
|
+
out.push(low);
|
|
254
|
+
}
|
|
255
|
+
return out;
|
|
256
|
+
}
|
|
257
|
+
function* ngrams(s, n) {
|
|
258
|
+
if (s.length < n) return;
|
|
259
|
+
for (let i = 0; i <= s.length - n; i++) yield s.slice(i, i + n);
|
|
260
|
+
}
|
|
261
|
+
function weightedTokens(text) {
|
|
262
|
+
const out = [];
|
|
263
|
+
for (const word of tokenize(text)) {
|
|
264
|
+
out.push({ term: word, weight: 1 });
|
|
265
|
+
if (word.length >= MIN_LEN_FOR_NGRAM) {
|
|
266
|
+
for (const n of NGRAM_SIZES) {
|
|
267
|
+
for (const ng of ngrams(word, n)) {
|
|
268
|
+
out.push({ term: ng, weight: NGRAM_WEIGHT });
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
return out;
|
|
274
|
+
}
|
|
275
|
+
function nodeTokensWeighted(meta) {
|
|
276
|
+
if (!meta.tokens) {
|
|
277
|
+
meta.tokens = [
|
|
278
|
+
...tokenize(meta.name),
|
|
279
|
+
...tokenize(meta.qualifiedName),
|
|
280
|
+
...tokenize(meta.filePath.replace(/\.[^./]+$/, ""))
|
|
281
|
+
];
|
|
282
|
+
}
|
|
283
|
+
const out = [];
|
|
284
|
+
for (const word of meta.tokens) {
|
|
285
|
+
out.push({ term: word, weight: 1 });
|
|
286
|
+
if (word.length >= MIN_LEN_FOR_NGRAM) {
|
|
287
|
+
for (const n of NGRAM_SIZES) {
|
|
288
|
+
for (const ng of ngrams(word, n)) {
|
|
289
|
+
out.push({ term: ng, weight: NGRAM_WEIGHT });
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
return out;
|
|
295
|
+
}
|
|
296
|
+
var TfidfIndex = class {
|
|
297
|
+
constructor(graph) {
|
|
298
|
+
this.df = /* @__PURE__ */ new Map();
|
|
299
|
+
// term → doc-frequency
|
|
300
|
+
/** node → term → accumulated weight (multiple occurrences sum up). */
|
|
301
|
+
this.tfByNode = /* @__PURE__ */ new Map();
|
|
302
|
+
/** L2 norm of each doc's tfidf vector (pre-computed for cosine sim). */
|
|
303
|
+
this.normByNode = /* @__PURE__ */ new Map();
|
|
304
|
+
this.nDocs = graph.nodes.size;
|
|
305
|
+
for (const [id, meta] of graph.nodes) {
|
|
306
|
+
const weighted = nodeTokensWeighted(meta);
|
|
307
|
+
const tf = /* @__PURE__ */ new Map();
|
|
308
|
+
for (const { term, weight } of weighted) {
|
|
309
|
+
tf.set(term, (tf.get(term) ?? 0) + weight);
|
|
310
|
+
}
|
|
311
|
+
this.tfByNode.set(id, tf);
|
|
312
|
+
for (const term of tf.keys()) {
|
|
313
|
+
this.df.set(term, (this.df.get(term) ?? 0) + 1);
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
for (const [id, tf] of this.tfByNode) {
|
|
317
|
+
let s = 0;
|
|
318
|
+
for (const [term, c] of tf) {
|
|
319
|
+
const w = c * this.idf(term);
|
|
320
|
+
s += w * w;
|
|
321
|
+
}
|
|
322
|
+
this.normByNode.set(id, Math.sqrt(s) || 1);
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
idf(term) {
|
|
326
|
+
const df = this.df.get(term) ?? 0;
|
|
327
|
+
if (df === 0) return 0;
|
|
328
|
+
return Math.log((this.nDocs + 1) / (df + 1)) + 1;
|
|
329
|
+
}
|
|
330
|
+
/** Search by free-text query — cosine similarity against per-doc
|
|
331
|
+
* tfidf vectors. Returns top-K hits by score. */
|
|
332
|
+
search(query, topK = 10) {
|
|
333
|
+
const qWeighted = weightedTokens(query);
|
|
334
|
+
if (qWeighted.length === 0) return [];
|
|
335
|
+
const qtf = /* @__PURE__ */ new Map();
|
|
336
|
+
for (const { term, weight } of qWeighted) {
|
|
337
|
+
qtf.set(term, (qtf.get(term) ?? 0) + weight);
|
|
338
|
+
}
|
|
339
|
+
const qVec = /* @__PURE__ */ new Map();
|
|
340
|
+
let qNormSq = 0;
|
|
341
|
+
for (const [term, c] of qtf) {
|
|
342
|
+
const w = c * this.idf(term);
|
|
343
|
+
if (w === 0) continue;
|
|
344
|
+
qVec.set(term, w);
|
|
345
|
+
qNormSq += w * w;
|
|
346
|
+
}
|
|
347
|
+
const qNorm = Math.sqrt(qNormSq);
|
|
348
|
+
if (qNorm === 0) return [];
|
|
349
|
+
const scores = /* @__PURE__ */ new Map();
|
|
350
|
+
for (const [node, tf] of this.tfByNode) {
|
|
351
|
+
let dot = 0;
|
|
352
|
+
for (const [term, qw] of qVec) {
|
|
353
|
+
const c = tf.get(term);
|
|
354
|
+
if (!c) continue;
|
|
355
|
+
dot += qw * (c * this.idf(term));
|
|
356
|
+
}
|
|
357
|
+
if (dot > 0) {
|
|
358
|
+
scores.set(node, dot / (qNorm * (this.normByNode.get(node) ?? 1)));
|
|
359
|
+
}
|
|
360
|
+
}
|
|
361
|
+
const out = [];
|
|
362
|
+
for (const [node, score] of scores) out.push({ node, score });
|
|
363
|
+
out.sort((a, b) => b.score - a.score);
|
|
364
|
+
return topK > 0 ? out.slice(0, topK) : out;
|
|
365
|
+
}
|
|
366
|
+
};
|
|
367
|
+
|
|
368
|
+
// packages/feature/explorer/src/server/codeMap/analytics/louvain.ts
|
|
369
|
+
import GraphImport from "graphology";
|
|
370
|
+
import louvainImport from "graphology-communities-louvain";
|
|
371
|
+
var Graph = GraphImport.default ?? GraphImport;
|
|
372
|
+
var louvain = louvainImport.default ?? louvainImport;
|
|
373
|
+
var KEY_SEP = "\0|\0";
|
|
374
|
+
function detectCommunities(graph) {
|
|
375
|
+
if (graph.nodes.size === 0) return /* @__PURE__ */ new Map();
|
|
376
|
+
const g = new Graph({ type: "undirected", multi: false });
|
|
377
|
+
for (const id of graph.nodes.keys()) g.addNode(id);
|
|
378
|
+
const seen = /* @__PURE__ */ new Map();
|
|
379
|
+
for (const [from, edges] of graph.out) {
|
|
380
|
+
for (const e of edges) {
|
|
381
|
+
if (from === e.target) continue;
|
|
382
|
+
const [u, v] = from < e.target ? [from, e.target] : [e.target, from];
|
|
383
|
+
const key = u + KEY_SEP + v;
|
|
384
|
+
seen.set(key, (seen.get(key) ?? 0) + e.weight);
|
|
385
|
+
}
|
|
386
|
+
}
|
|
387
|
+
for (const [key, weight] of seen) {
|
|
388
|
+
const sepIdx = key.indexOf(KEY_SEP);
|
|
389
|
+
if (sepIdx < 0) continue;
|
|
390
|
+
const u = key.slice(0, sepIdx);
|
|
391
|
+
const v = key.slice(sepIdx + KEY_SEP.length);
|
|
392
|
+
g.addEdgeWithKey(key, u, v, { weight });
|
|
393
|
+
}
|
|
394
|
+
const partition = louvain(g);
|
|
395
|
+
const out = /* @__PURE__ */ new Map();
|
|
396
|
+
for (const [id, c] of Object.entries(partition)) out.set(id, c);
|
|
397
|
+
return out;
|
|
398
|
+
}
|
|
399
|
+
|
|
400
|
+
// packages/feature/explorer/src/server/codeMap/analytics/cache.ts
|
|
401
|
+
var PPRLruCache = class {
|
|
402
|
+
constructor(cap) {
|
|
403
|
+
this.map = /* @__PURE__ */ new Map();
|
|
404
|
+
this.cap = cap;
|
|
405
|
+
}
|
|
406
|
+
get(key) {
|
|
407
|
+
const v = this.map.get(key);
|
|
408
|
+
if (!v) return void 0;
|
|
409
|
+
this.map.delete(key);
|
|
410
|
+
this.map.set(key, v);
|
|
411
|
+
return v;
|
|
412
|
+
}
|
|
413
|
+
set(key, value) {
|
|
414
|
+
if (this.map.has(key)) this.map.delete(key);
|
|
415
|
+
this.map.set(key, value);
|
|
416
|
+
if (this.map.size > this.cap) {
|
|
417
|
+
const oldest = this.map.keys().next().value;
|
|
418
|
+
if (oldest !== void 0) this.map.delete(oldest);
|
|
419
|
+
}
|
|
420
|
+
}
|
|
421
|
+
clear() {
|
|
422
|
+
this.map.clear();
|
|
423
|
+
}
|
|
424
|
+
get size() {
|
|
425
|
+
return this.map.size;
|
|
426
|
+
}
|
|
427
|
+
};
|
|
428
|
+
var PPR_CACHE_CAP = 200;
|
|
429
|
+
function pprCacheKey(seeds, opts = {}) {
|
|
430
|
+
const entries = Array.isArray(seeds) ? seeds.map((id) => [id, 1]) : [...seeds.entries()];
|
|
431
|
+
entries.sort((a, b) => a[0].localeCompare(b[0]));
|
|
432
|
+
const damping = opts.damping ?? 0.85;
|
|
433
|
+
const topK = opts.topK ?? 0;
|
|
434
|
+
return `d${damping}|k${topK}|` + entries.map((e) => `${e[0]}=${e[1]}`).join(",");
|
|
435
|
+
}
|
|
436
|
+
function cachedPPR(entry, seeds, opts = {}) {
|
|
437
|
+
const key = pprCacheKey(seeds, opts);
|
|
438
|
+
const hit = entry.pprCache.get(key);
|
|
439
|
+
if (hit) return hit;
|
|
440
|
+
const result = personalizedPageRank(entry.graph, seeds, opts);
|
|
441
|
+
entry.pprCache.set(key, result);
|
|
442
|
+
return result;
|
|
443
|
+
}
|
|
444
|
+
var cache = /* @__PURE__ */ new Map();
|
|
445
|
+
var inflight = /* @__PURE__ */ new Map();
|
|
446
|
+
var versionCounter = 0;
|
|
447
|
+
function getAnalytics(cwd) {
|
|
448
|
+
return cache.get(cwd) ?? null;
|
|
449
|
+
}
|
|
450
|
+
function invalidateAnalytics(cwd) {
|
|
451
|
+
if (!cwd) {
|
|
452
|
+
cache.clear();
|
|
453
|
+
inflight.clear();
|
|
454
|
+
return;
|
|
455
|
+
}
|
|
456
|
+
cache.delete(cwd);
|
|
457
|
+
inflight.delete(cwd);
|
|
458
|
+
}
|
|
459
|
+
function precomputeAnalytics(cwd, index) {
|
|
460
|
+
const pending = inflight.get(cwd);
|
|
461
|
+
if (pending) return pending;
|
|
462
|
+
const p = (async () => {
|
|
463
|
+
const t0 = Date.now();
|
|
464
|
+
versionCounter += 1;
|
|
465
|
+
const version = versionCounter;
|
|
466
|
+
const graph = buildAnalyticsGraph(index, version);
|
|
467
|
+
const pr = pagerank(graph);
|
|
468
|
+
const tf = new TfidfIndex(graph);
|
|
469
|
+
const communities = detectCommunities(graph);
|
|
470
|
+
const entry = {
|
|
471
|
+
cwd,
|
|
472
|
+
version,
|
|
473
|
+
graph,
|
|
474
|
+
pagerank: pr,
|
|
475
|
+
tfidf: tf,
|
|
476
|
+
communities,
|
|
477
|
+
pprCache: new PPRLruCache(PPR_CACHE_CAP),
|
|
478
|
+
builtAt: Date.now(),
|
|
479
|
+
buildMs: Date.now() - t0
|
|
480
|
+
};
|
|
481
|
+
cache.set(cwd, entry);
|
|
482
|
+
inflight.delete(cwd);
|
|
483
|
+
return entry;
|
|
484
|
+
})();
|
|
485
|
+
inflight.set(cwd, p);
|
|
486
|
+
return p;
|
|
487
|
+
}
|
|
488
|
+
function getOrTriggerAnalytics(cwd, index) {
|
|
489
|
+
const hit = cache.get(cwd);
|
|
490
|
+
if (hit) return hit;
|
|
491
|
+
precomputeAnalytics(cwd, index).catch((err) => {
|
|
492
|
+
console.error("[analytics] precompute failed:", err);
|
|
493
|
+
});
|
|
494
|
+
return null;
|
|
495
|
+
}
|
|
496
|
+
export {
|
|
497
|
+
cachedPPR,
|
|
498
|
+
getAnalytics,
|
|
499
|
+
getOrTriggerAnalytics,
|
|
500
|
+
invalidateAnalytics,
|
|
501
|
+
precomputeAnalytics
|
|
502
|
+
};
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import {
|
|
2
2
|
GLOBAL_STATE_FILE,
|
|
3
|
-
__export,
|
|
4
3
|
findCodexSessionPath,
|
|
5
4
|
findKimiSessionPath,
|
|
6
5
|
getClaude2SessionPath,
|
|
@@ -9,7 +8,10 @@ import {
|
|
|
9
8
|
readJsonFile,
|
|
10
9
|
withFileLock,
|
|
11
10
|
writeJsonFile
|
|
12
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-ZJ6CC3MH.mjs";
|
|
12
|
+
import {
|
|
13
|
+
__export
|
|
14
|
+
} from "./chunk-7P6ASYW6.mjs";
|
|
13
15
|
|
|
14
16
|
// node_modules/effect/dist/esm/Effect.js
|
|
15
17
|
var Effect_exports = {};
|