@surething/cockpit 1.0.222 → 1.0.223
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 +10 -4
- package/.next-prod/build-manifest.json +2 -2
- package/.next-prod/prerender-manifest.json +3 -3
- package/.next-prod/required-server-files.js +2 -1
- package/.next-prod/required-server-files.json +2 -1
- package/.next-prod/routes-manifest.json +36 -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 +49 -1
- package/.next-prod/server/app/_not-found.rsc +65 -14
- package/.next-prod/server/app/_not-found.segments/_full.segment.rsc +65 -14
- package/.next-prod/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/.next-prod/server/app/_not-found.segments/_index.segment.rsc +53 -5
- 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 +16 -10
- package/.next-prod/server/app/api/chat/codex/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/chat/deepseek/route.js +3 -3
- package/.next-prod/server/app/api/chat/deepseek/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/chat/kimi/route.js +10 -10
- package/.next-prod/server/app/api/chat/kimi/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/chat/ollama/route.js +7 -7
- package/.next-prod/server/app/api/chat/ollama/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/chat/pty-input/route.js +1 -1
- package/.next-prod/server/app/api/chat/pty-input/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/chat/route.js +12 -12
- package/.next-prod/server/app/api/chat/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/chat/stop/route.js +1 -0
- package/.next-prod/server/app/api/chat/stop/route.js.nft.json +1 -0
- package/.next-prod/server/app/api/chat/stop/route_client-reference-manifest.js +1 -0
- package/.next-prod/server/app/api/claude-stats/route.js +1 -1
- package/.next-prod/server/app/api/claude-stats/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/commands/route.js +1 -1
- package/.next-prod/server/app/api/commands/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/comments/route.js +1 -1
- package/.next-prod/server/app/api/comments/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/db/columns/route.js +1 -1
- package/.next-prod/server/app/api/db/columns/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/db/connect/route.js +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/current-branch/route.js +1 -1
- package/.next-prod/server/app/api/git/current-branch/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/git/diff/route.js +1 -1
- package/.next-prod/server/app/api/git/diff/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/git/discard/route.js +1 -1
- package/.next-prod/server/app/api/git/discard/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/git/stage/route.js +1 -1
- package/.next-prod/server/app/api/git/stage/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/git/status/route.js +1 -1
- package/.next-prod/server/app/api/git/status/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/git/unstage/route.js +1 -1
- package/.next-prod/server/app/api/git/unstage/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/git/worktree/route.js +1 -1
- package/.next-prod/server/app/api/git/worktree/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/global-state/route.js +1 -1
- package/.next-prod/server/app/api/global-state/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/jupyter/load/route.js +1 -1
- package/.next-prod/server/app/api/jupyter/load/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/jupyter/save/route.js +1 -1
- package/.next-prod/server/app/api/jupyter/save/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/jupyter/shutdown/route.js +1 -1
- package/.next-prod/server/app/api/jupyter/shutdown/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/lsp/definition/route.js +1 -1
- package/.next-prod/server/app/api/lsp/definition/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/lsp/hover/route.js +1 -1
- package/.next-prod/server/app/api/lsp/hover/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/lsp/references/route.js +1 -1
- package/.next-prod/server/app/api/lsp/references/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/lsp/status/route.js +1 -1
- package/.next-prod/server/app/api/lsp/status/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/lsp/warmup/route.js +1 -1
- package/.next-prod/server/app/api/lsp/warmup/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/mysql/columns/route.js +1 -1
- package/.next-prod/server/app/api/mysql/columns/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/mysql/connect/route.js +1 -1
- package/.next-prod/server/app/api/mysql/connect/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/mysql/disconnect/route.js +1 -1
- package/.next-prod/server/app/api/mysql/disconnect/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/mysql/export/route.js +1 -1
- package/.next-prod/server/app/api/mysql/export/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/mysql/query/route.js +1 -1
- package/.next-prod/server/app/api/mysql/query/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/mysql/schemas/route.js +2 -2
- package/.next-prod/server/app/api/mysql/schemas/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/neo4j/connect/route.js +1 -1
- package/.next-prod/server/app/api/neo4j/connect/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/neo4j/disconnect/route.js +1 -1
- package/.next-prod/server/app/api/neo4j/disconnect/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/neo4j/query/route.js +1 -1
- package/.next-prod/server/app/api/neo4j/query/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/neo4j/schema/route.js +1 -1
- package/.next-prod/server/app/api/neo4j/schema/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/note/route.js +1 -1
- package/.next-prod/server/app/api/note/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/ollama/models/route.js +1 -1
- package/.next-prod/server/app/api/ollama/models/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/ollama/start/route.js +1 -1
- package/.next-prod/server/app/api/ollama/start/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/open-cursor/route.js +1 -1
- package/.next-prod/server/app/api/open-cursor/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/open-vscode/route.js +1 -1
- package/.next-prod/server/app/api/open-vscode/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/pick-folder/route.js +1 -1
- package/.next-prod/server/app/api/pick-folder/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/pinned-sessions/route.js +1 -1
- package/.next-prod/server/app/api/pinned-sessions/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/project-settings/route.js +1 -1
- package/.next-prod/server/app/api/project-settings/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/project-state/route.js +2 -1
- package/.next-prod/server/app/api/project-state/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/projectGraph/affected/route.js +1 -1
- package/.next-prod/server/app/api/projectGraph/affected/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/projectGraph/callees/route.js +1 -1
- package/.next-prod/server/app/api/projectGraph/callees/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/projectGraph/callers/route.js +1 -1
- package/.next-prod/server/app/api/projectGraph/callers/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/projectGraph/coedit/route.js +1 -1
- package/.next-prod/server/app/api/projectGraph/coedit/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/projectGraph/context/route.js +1 -1
- package/.next-prod/server/app/api/projectGraph/context/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/projectGraph/file/route.js +1 -1
- package/.next-prod/server/app/api/projectGraph/file/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/projectGraph/file-functions/route.js +1 -1
- package/.next-prod/server/app/api/projectGraph/file-functions/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/projectGraph/impact/route.js +1 -1
- package/.next-prod/server/app/api/projectGraph/impact/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/projectGraph/related/route.js +1 -1
- package/.next-prod/server/app/api/projectGraph/related/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/projectGraph/risk/route.js +1 -1
- package/.next-prod/server/app/api/projectGraph/risk/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/projectGraph/search/route.js +1 -1
- package/.next-prod/server/app/api/projectGraph/search/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/projects/route.js +1 -1
- package/.next-prod/server/app/api/projects/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/push/public-key/route.js +1 -0
- package/.next-prod/server/app/api/push/public-key/route.js.nft.json +1 -0
- package/.next-prod/server/app/api/push/public-key/route_client-reference-manifest.js +1 -0
- package/.next-prod/server/app/api/push/subscribe/route.js +1 -0
- package/.next-prod/server/app/api/push/subscribe/route.js.nft.json +1 -0
- package/.next-prod/server/app/api/push/subscribe/route_client-reference-manifest.js +1 -0
- package/.next-prod/server/app/api/push/test/route.js +1 -0
- package/.next-prod/server/app/api/push/test/route.js.nft.json +1 -0
- package/.next-prod/server/app/api/push/test/route_client-reference-manifest.js +1 -0
- package/.next-prod/server/app/api/push/unsubscribe/route.js +1 -0
- package/.next-prod/server/app/api/push/unsubscribe/route.js.nft.json +1 -0
- package/.next-prod/server/app/api/push/unsubscribe/route_client-reference-manifest.js +1 -0
- 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/m/page.js +2 -0
- package/.next-prod/server/app/m/page.js.nft.json +1 -0
- package/.next-prod/server/app/m/page_client-reference-manifest.js +1 -0
- 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/manifest.webmanifest.body +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 +10 -4
- package/.next-prod/server/chunks/{383.js → 2637.js} +2 -2
- package/.next-prod/server/chunks/2939.js +1 -1
- package/.next-prod/server/chunks/{3408.js → 5337.js} +3 -3
- package/.next-prod/server/chunks/6955.js +1 -1
- package/.next-prod/server/chunks/7003.js +1 -0
- package/.next-prod/server/chunks/8916.js +1 -1
- package/.next-prod/server/chunks/9658.js +10 -8
- package/.next-prod/server/middleware-build-manifest.js +1 -1
- package/.next-prod/server/pages/404.html +49 -1
- package/.next-prod/server/pages/500.html +1 -1
- package/.next-prod/server/server-reference-manifest.json +1 -1
- package/.next-prod/static/IQwBHyZ3W2LMUZtDfCp-B/_buildManifest.js +1 -0
- package/.next-prod/static/chunks/2032-6fcfaaa6aa730f6d.js +1 -0
- package/.next-prod/static/chunks/2576-02a6e185664e2e1a.js +25 -0
- package/.next-prod/static/chunks/471-7c4fab47613ffe5c.js +4 -0
- package/.next-prod/static/chunks/5156-2953531342c13696.js +3 -0
- package/.next-prod/static/chunks/9428-5c287b255a9831e6.js +20 -0
- package/.next-prod/static/chunks/9469-fb5c6f08ba6bab74.js +14 -0
- package/.next-prod/static/chunks/app/_global-error/page-422b501ed5769a87.js +1 -0
- package/.next-prod/static/chunks/app/api/agent/test/route-422b501ed5769a87.js +1 -0
- package/.next-prod/static/chunks/app/api/bash/route-422b501ed5769a87.js +1 -0
- package/.next-prod/static/chunks/app/api/chat/codex/route-422b501ed5769a87.js +1 -0
- package/.next-prod/static/chunks/app/api/chat/deepseek/route-422b501ed5769a87.js +1 -0
- package/.next-prod/static/chunks/app/api/chat/kimi/route-422b501ed5769a87.js +1 -0
- package/.next-prod/static/chunks/app/api/chat/ollama/route-422b501ed5769a87.js +1 -0
- package/.next-prod/static/chunks/app/api/chat/pty-input/route-422b501ed5769a87.js +1 -0
- package/.next-prod/static/chunks/app/api/chat/route-422b501ed5769a87.js +1 -0
- package/.next-prod/static/chunks/app/api/chat/stop/route-422b501ed5769a87.js +1 -0
- package/.next-prod/static/chunks/app/api/claude-stats/route-422b501ed5769a87.js +1 -0
- package/.next-prod/static/chunks/app/api/commands/route-422b501ed5769a87.js +1 -0
- package/.next-prod/static/chunks/app/api/comments/route-422b501ed5769a87.js +1 -0
- package/.next-prod/static/chunks/app/api/db/columns/route-422b501ed5769a87.js +1 -0
- package/.next-prod/static/chunks/app/api/db/connect/route-422b501ed5769a87.js +1 -0
- package/.next-prod/static/chunks/app/api/db/disconnect/route-422b501ed5769a87.js +1 -0
- package/.next-prod/static/chunks/app/api/db/export/route-422b501ed5769a87.js +1 -0
- package/.next-prod/static/chunks/app/api/db/query/route-422b501ed5769a87.js +1 -0
- package/.next-prod/static/chunks/app/api/db/schemas/route-422b501ed5769a87.js +1 -0
- package/.next-prod/static/chunks/app/api/dev/spans/route-422b501ed5769a87.js +1 -0
- package/.next-prod/static/chunks/app/api/extension/version/route-422b501ed5769a87.js +1 -0
- package/.next-prod/static/chunks/app/api/file/route-422b501ed5769a87.js +1 -0
- package/.next-prod/static/chunks/app/api/files/blame/route-422b501ed5769a87.js +1 -0
- package/.next-prod/static/chunks/app/api/files/clipboard/route-422b501ed5769a87.js +1 -0
- package/.next-prod/static/chunks/app/api/files/copy/route-422b501ed5769a87.js +1 -0
- package/.next-prod/static/chunks/app/api/files/delete/route-422b501ed5769a87.js +1 -0
- package/.next-prod/static/chunks/app/api/files/expanded/route-422b501ed5769a87.js +1 -0
- package/.next-prod/static/chunks/app/api/files/index/route-422b501ed5769a87.js +1 -0
- package/.next-prod/static/chunks/app/api/files/init/route-422b501ed5769a87.js +1 -0
- package/.next-prod/static/chunks/app/api/files/paste/route-422b501ed5769a87.js +1 -0
- package/.next-prod/static/chunks/app/api/files/read/route-422b501ed5769a87.js +1 -0
- package/.next-prod/static/chunks/app/api/files/readdir/route-422b501ed5769a87.js +1 -0
- package/.next-prod/static/chunks/app/api/files/recent/route-422b501ed5769a87.js +1 -0
- package/.next-prod/static/chunks/app/api/files/save/route-422b501ed5769a87.js +1 -0
- package/.next-prod/static/chunks/app/api/files/search/route-422b501ed5769a87.js +1 -0
- package/.next-prod/static/chunks/app/api/files/stat/route-422b501ed5769a87.js +1 -0
- package/.next-prod/static/chunks/app/api/files/text/route-422b501ed5769a87.js +1 -0
- package/.next-prod/static/chunks/app/api/git/branch-diff/route-422b501ed5769a87.js +1 -0
- package/.next-prod/static/chunks/app/api/git/branches/route-422b501ed5769a87.js +1 -0
- package/.next-prod/static/chunks/app/api/git/commit-diff/route-422b501ed5769a87.js +1 -0
- package/.next-prod/static/chunks/app/api/git/commits/route-422b501ed5769a87.js +1 -0
- package/.next-prod/static/chunks/app/api/git/current-branch/route-422b501ed5769a87.js +1 -0
- package/.next-prod/static/chunks/app/api/git/diff/route-422b501ed5769a87.js +1 -0
- package/.next-prod/static/chunks/app/api/git/discard/route-422b501ed5769a87.js +1 -0
- package/.next-prod/static/chunks/app/api/git/stage/route-422b501ed5769a87.js +1 -0
- package/.next-prod/static/chunks/app/api/git/status/route-422b501ed5769a87.js +1 -0
- package/.next-prod/static/chunks/app/api/git/unstage/route-422b501ed5769a87.js +1 -0
- package/.next-prod/static/chunks/app/api/git/worktree/route-422b501ed5769a87.js +1 -0
- package/.next-prod/static/chunks/app/api/global-state/route-422b501ed5769a87.js +1 -0
- package/.next-prod/static/chunks/app/api/jupyter/load/route-422b501ed5769a87.js +1 -0
- package/.next-prod/static/chunks/app/api/jupyter/save/route-422b501ed5769a87.js +1 -0
- package/.next-prod/static/chunks/app/api/jupyter/shutdown/route-422b501ed5769a87.js +1 -0
- package/.next-prod/static/chunks/app/api/lsp/definition/route-422b501ed5769a87.js +1 -0
- package/.next-prod/static/chunks/app/api/lsp/hover/route-422b501ed5769a87.js +1 -0
- package/.next-prod/static/chunks/app/api/lsp/references/route-422b501ed5769a87.js +1 -0
- package/.next-prod/static/chunks/app/api/lsp/status/route-422b501ed5769a87.js +1 -0
- package/.next-prod/static/chunks/app/api/lsp/warmup/route-422b501ed5769a87.js +1 -0
- package/.next-prod/static/chunks/app/api/mysql/columns/route-422b501ed5769a87.js +1 -0
- package/.next-prod/static/chunks/app/api/mysql/connect/route-422b501ed5769a87.js +1 -0
- package/.next-prod/static/chunks/app/api/mysql/disconnect/route-422b501ed5769a87.js +1 -0
- package/.next-prod/static/chunks/app/api/mysql/export/route-422b501ed5769a87.js +1 -0
- package/.next-prod/static/chunks/app/api/mysql/query/route-422b501ed5769a87.js +1 -0
- package/.next-prod/static/chunks/app/api/mysql/schemas/route-422b501ed5769a87.js +1 -0
- package/.next-prod/static/chunks/app/api/neo4j/connect/route-422b501ed5769a87.js +1 -0
- package/.next-prod/static/chunks/app/api/neo4j/disconnect/route-422b501ed5769a87.js +1 -0
- package/.next-prod/static/chunks/app/api/neo4j/query/route-422b501ed5769a87.js +1 -0
- package/.next-prod/static/chunks/app/api/neo4j/schema/route-422b501ed5769a87.js +1 -0
- package/.next-prod/static/chunks/app/api/note/route-422b501ed5769a87.js +1 -0
- package/.next-prod/static/chunks/app/api/ollama/models/route-422b501ed5769a87.js +1 -0
- package/.next-prod/static/chunks/app/api/ollama/start/route-422b501ed5769a87.js +1 -0
- package/.next-prod/static/chunks/app/api/open-cursor/route-422b501ed5769a87.js +1 -0
- package/.next-prod/static/chunks/app/api/open-vscode/route-422b501ed5769a87.js +1 -0
- package/.next-prod/static/chunks/app/api/pick-folder/route-422b501ed5769a87.js +1 -0
- package/.next-prod/static/chunks/app/api/pinned-sessions/route-422b501ed5769a87.js +1 -0
- package/.next-prod/static/chunks/app/api/project-settings/route-422b501ed5769a87.js +1 -0
- package/.next-prod/static/chunks/app/api/project-state/route-422b501ed5769a87.js +1 -0
- package/.next-prod/static/chunks/app/api/projectGraph/affected/route-422b501ed5769a87.js +1 -0
- package/.next-prod/static/chunks/app/api/projectGraph/callees/route-422b501ed5769a87.js +1 -0
- package/.next-prod/static/chunks/app/api/projectGraph/callers/route-422b501ed5769a87.js +1 -0
- package/.next-prod/static/chunks/app/api/projectGraph/coedit/route-422b501ed5769a87.js +1 -0
- package/.next-prod/static/chunks/app/api/projectGraph/context/route-422b501ed5769a87.js +1 -0
- package/.next-prod/static/chunks/app/api/projectGraph/file/route-422b501ed5769a87.js +1 -0
- package/.next-prod/static/chunks/app/api/projectGraph/file-functions/route-422b501ed5769a87.js +1 -0
- package/.next-prod/static/chunks/app/api/projectGraph/impact/route-422b501ed5769a87.js +1 -0
- package/.next-prod/static/chunks/app/api/projectGraph/related/route-422b501ed5769a87.js +1 -0
- package/.next-prod/static/chunks/app/api/projectGraph/risk/route-422b501ed5769a87.js +1 -0
- package/.next-prod/static/chunks/app/api/projectGraph/search/route-422b501ed5769a87.js +1 -0
- package/.next-prod/static/chunks/app/api/projects/route-422b501ed5769a87.js +1 -0
- package/.next-prod/static/chunks/app/api/push/public-key/route-422b501ed5769a87.js +1 -0
- package/.next-prod/static/chunks/app/api/push/subscribe/route-422b501ed5769a87.js +1 -0
- package/.next-prod/static/chunks/app/api/push/test/route-422b501ed5769a87.js +1 -0
- package/.next-prod/static/chunks/app/api/push/unsubscribe/route-422b501ed5769a87.js +1 -0
- package/.next-prod/static/chunks/app/api/redis/command/route-422b501ed5769a87.js +1 -0
- package/.next-prod/static/chunks/app/api/redis/connect/route-422b501ed5769a87.js +1 -0
- package/.next-prod/static/chunks/app/api/redis/delete/route-422b501ed5769a87.js +1 -0
- package/.next-prod/static/chunks/app/api/redis/disconnect/route-422b501ed5769a87.js +1 -0
- package/.next-prod/static/chunks/app/api/redis/get/route-422b501ed5769a87.js +1 -0
- package/.next-prod/static/chunks/app/api/redis/keys/route-422b501ed5769a87.js +1 -0
- package/.next-prod/static/chunks/app/api/redis/set/route-422b501ed5769a87.js +1 -0
- package/.next-prod/static/chunks/app/api/review/[id]/comments/route-422b501ed5769a87.js +1 -0
- package/.next-prod/static/chunks/app/api/review/[id]/replies/route-422b501ed5769a87.js +1 -0
- package/.next-prod/static/chunks/app/api/review/[id]/route-422b501ed5769a87.js +1 -0
- package/.next-prod/static/chunks/app/api/review/identify/route-422b501ed5769a87.js +1 -0
- package/.next-prod/static/chunks/app/api/review/order/route-422b501ed5769a87.js +1 -0
- package/.next-prod/static/chunks/app/api/review/route-422b501ed5769a87.js +1 -0
- package/.next-prod/static/chunks/app/api/review/share-info/route-422b501ed5769a87.js +1 -0
- package/.next-prod/static/chunks/app/api/review/users/route-422b501ed5769a87.js +1 -0
- package/.next-prod/static/chunks/app/api/scheduled-tasks/route-422b501ed5769a87.js +1 -0
- package/.next-prod/static/chunks/app/api/services/config/route-422b501ed5769a87.js +1 -0
- package/.next-prod/static/chunks/app/api/services/scripts/route-422b501ed5769a87.js +1 -0
- package/.next-prod/static/chunks/app/api/session/[sessionId]/fork/route-422b501ed5769a87.js +1 -0
- package/.next-prod/static/chunks/app/api/session/[sessionId]/history/route-422b501ed5769a87.js +1 -0
- package/.next-prod/static/chunks/app/api/session-by-path/route-422b501ed5769a87.js +1 -0
- package/.next-prod/static/chunks/app/api/sessions/projects/[encodedPath]/route-422b501ed5769a87.js +1 -0
- package/.next-prod/static/chunks/app/api/sessions/projects/route-422b501ed5769a87.js +1 -0
- package/.next-prod/static/chunks/app/api/sessions/route-422b501ed5769a87.js +1 -0
- package/.next-prod/static/chunks/app/api/settings/route-422b501ed5769a87.js +1 -0
- package/.next-prod/static/chunks/app/api/skills/[id]/route-422b501ed5769a87.js +1 -0
- package/.next-prod/static/chunks/app/api/skills/content/route-422b501ed5769a87.js +1 -0
- package/.next-prod/static/chunks/app/api/skills/route-422b501ed5769a87.js +1 -0
- package/.next-prod/static/chunks/app/api/terminal/aliases/route-422b501ed5769a87.js +1 -0
- package/.next-prod/static/chunks/app/api/terminal/autocomplete/route-422b501ed5769a87.js +1 -0
- package/.next-prod/static/chunks/app/api/terminal/bubble-order/route-422b501ed5769a87.js +1 -0
- package/.next-prod/static/chunks/app/api/terminal/env/route-422b501ed5769a87.js +1 -0
- package/.next-prod/static/chunks/app/api/terminal/history/route-422b501ed5769a87.js +1 -0
- package/.next-prod/static/chunks/app/api/version/route-422b501ed5769a87.js +1 -0
- package/.next-prod/static/chunks/app/{layout-de73b7c59e956b47.js → layout-312d106fe47907df.js} +1 -1
- package/.next-prod/static/chunks/app/m/page-0be3799c1b38c991.js +1 -0
- package/.next-prod/static/chunks/app/manifest.webmanifest/route-422b501ed5769a87.js +1 -0
- package/.next-prod/static/chunks/app/{page-d539c7c36a32fd49.js → page-db70085227aa56aa.js} +1 -1
- package/.next-prod/static/chunks/app/project/{page-d539c7c36a32fd49.js → page-db70085227aa56aa.js} +1 -1
- package/.next-prod/static/chunks/app/review/[id]/{page-7db3a48a13f1840c.js → page-31d70fd518d4c7e6.js} +1 -1
- package/.next-prod/static/chunks/next/dist/client/components/builtin/app-error-422b501ed5769a87.js +1 -0
- package/.next-prod/static/chunks/next/dist/client/components/builtin/forbidden-422b501ed5769a87.js +1 -0
- package/.next-prod/static/chunks/next/dist/client/components/builtin/not-found-422b501ed5769a87.js +1 -0
- package/.next-prod/static/chunks/next/dist/client/components/builtin/unauthorized-422b501ed5769a87.js +1 -0
- package/.next-prod/static/css/217cb3486f7b68d7.css +1 -0
- package/.next-prod/trace +13 -13
- package/.next-prod/trace-build +1 -1
- package/.next-prod/types/app/api/chat/stop/route.ts +351 -0
- package/.next-prod/types/app/api/push/public-key/route.ts +351 -0
- package/.next-prod/types/app/api/push/subscribe/route.ts +351 -0
- package/.next-prod/types/app/api/push/test/route.ts +351 -0
- package/.next-prod/types/app/api/push/unsubscribe/route.ts +351 -0
- package/.next-prod/types/app/m/page.ts +87 -0
- package/.next-prod/types/routes.d.ts +8 -2
- package/.next-prod/types/validator.ts +54 -0
- package/dist/{chunk-6BFKFQG5.mjs → chunk-5BOGGUGT.mjs} +3 -1
- package/dist/{chunk-RQEEQUTA.mjs → chunk-5CRGWEWX.mjs} +160 -117
- package/dist/{chunk-ICB7IS3A.mjs → chunk-BM3ZNL5S.mjs} +1 -1
- package/dist/httpApi.mjs +2 -2
- package/dist/scheduledTasks.mjs +34 -66
- package/dist/{server-Z6V4HKGV.mjs → server-DRMO2DUJ.mjs} +2 -2
- package/dist/wsServer.mjs +81 -10
- package/next.config.mjs +15 -0
- package/package.json +7 -2
- package/public/boot.js +32 -4
- package/public/push-sw.js +51 -0
- package/.next-prod/server/chunks/5616.js +0 -1
- package/.next-prod/static/-btylnafgKD-DMe4UTayG/_buildManifest.js +0 -1
- package/.next-prod/static/chunks/2759-50f11ab1460db5e0.js +0 -23
- package/.next-prod/static/chunks/6345-bf76736c9229b11d.js +0 -14
- package/.next-prod/static/chunks/9403-57da0d8d38886ffe.js +0 -25
- package/.next-prod/static/chunks/app/_global-error/page-0247c08c6f41b71e.js +0 -1
- package/.next-prod/static/chunks/app/api/agent/test/route-0247c08c6f41b71e.js +0 -1
- package/.next-prod/static/chunks/app/api/bash/route-0247c08c6f41b71e.js +0 -1
- package/.next-prod/static/chunks/app/api/chat/codex/route-0247c08c6f41b71e.js +0 -1
- package/.next-prod/static/chunks/app/api/chat/deepseek/route-0247c08c6f41b71e.js +0 -1
- package/.next-prod/static/chunks/app/api/chat/kimi/route-0247c08c6f41b71e.js +0 -1
- package/.next-prod/static/chunks/app/api/chat/ollama/route-0247c08c6f41b71e.js +0 -1
- package/.next-prod/static/chunks/app/api/chat/pty-input/route-0247c08c6f41b71e.js +0 -1
- package/.next-prod/static/chunks/app/api/chat/route-0247c08c6f41b71e.js +0 -1
- package/.next-prod/static/chunks/app/api/claude-stats/route-0247c08c6f41b71e.js +0 -1
- package/.next-prod/static/chunks/app/api/commands/route-0247c08c6f41b71e.js +0 -1
- package/.next-prod/static/chunks/app/api/comments/route-0247c08c6f41b71e.js +0 -1
- package/.next-prod/static/chunks/app/api/db/columns/route-0247c08c6f41b71e.js +0 -1
- package/.next-prod/static/chunks/app/api/db/connect/route-0247c08c6f41b71e.js +0 -1
- package/.next-prod/static/chunks/app/api/db/disconnect/route-0247c08c6f41b71e.js +0 -1
- package/.next-prod/static/chunks/app/api/db/export/route-0247c08c6f41b71e.js +0 -1
- package/.next-prod/static/chunks/app/api/db/query/route-0247c08c6f41b71e.js +0 -1
- package/.next-prod/static/chunks/app/api/db/schemas/route-0247c08c6f41b71e.js +0 -1
- package/.next-prod/static/chunks/app/api/dev/spans/route-0247c08c6f41b71e.js +0 -1
- package/.next-prod/static/chunks/app/api/extension/version/route-0247c08c6f41b71e.js +0 -1
- package/.next-prod/static/chunks/app/api/file/route-0247c08c6f41b71e.js +0 -1
- package/.next-prod/static/chunks/app/api/files/blame/route-0247c08c6f41b71e.js +0 -1
- package/.next-prod/static/chunks/app/api/files/clipboard/route-0247c08c6f41b71e.js +0 -1
- package/.next-prod/static/chunks/app/api/files/copy/route-0247c08c6f41b71e.js +0 -1
- package/.next-prod/static/chunks/app/api/files/delete/route-0247c08c6f41b71e.js +0 -1
- package/.next-prod/static/chunks/app/api/files/expanded/route-0247c08c6f41b71e.js +0 -1
- package/.next-prod/static/chunks/app/api/files/index/route-0247c08c6f41b71e.js +0 -1
- package/.next-prod/static/chunks/app/api/files/init/route-0247c08c6f41b71e.js +0 -1
- package/.next-prod/static/chunks/app/api/files/paste/route-0247c08c6f41b71e.js +0 -1
- package/.next-prod/static/chunks/app/api/files/read/route-0247c08c6f41b71e.js +0 -1
- package/.next-prod/static/chunks/app/api/files/readdir/route-0247c08c6f41b71e.js +0 -1
- package/.next-prod/static/chunks/app/api/files/recent/route-0247c08c6f41b71e.js +0 -1
- package/.next-prod/static/chunks/app/api/files/save/route-0247c08c6f41b71e.js +0 -1
- package/.next-prod/static/chunks/app/api/files/search/route-0247c08c6f41b71e.js +0 -1
- package/.next-prod/static/chunks/app/api/files/stat/route-0247c08c6f41b71e.js +0 -1
- package/.next-prod/static/chunks/app/api/files/text/route-0247c08c6f41b71e.js +0 -1
- package/.next-prod/static/chunks/app/api/git/branch-diff/route-0247c08c6f41b71e.js +0 -1
- package/.next-prod/static/chunks/app/api/git/branches/route-0247c08c6f41b71e.js +0 -1
- package/.next-prod/static/chunks/app/api/git/commit-diff/route-0247c08c6f41b71e.js +0 -1
- package/.next-prod/static/chunks/app/api/git/commits/route-0247c08c6f41b71e.js +0 -1
- package/.next-prod/static/chunks/app/api/git/current-branch/route-0247c08c6f41b71e.js +0 -1
- package/.next-prod/static/chunks/app/api/git/diff/route-0247c08c6f41b71e.js +0 -1
- package/.next-prod/static/chunks/app/api/git/discard/route-0247c08c6f41b71e.js +0 -1
- package/.next-prod/static/chunks/app/api/git/stage/route-0247c08c6f41b71e.js +0 -1
- package/.next-prod/static/chunks/app/api/git/status/route-0247c08c6f41b71e.js +0 -1
- package/.next-prod/static/chunks/app/api/git/unstage/route-0247c08c6f41b71e.js +0 -1
- package/.next-prod/static/chunks/app/api/git/worktree/route-0247c08c6f41b71e.js +0 -1
- package/.next-prod/static/chunks/app/api/global-state/route-0247c08c6f41b71e.js +0 -1
- package/.next-prod/static/chunks/app/api/jupyter/load/route-0247c08c6f41b71e.js +0 -1
- package/.next-prod/static/chunks/app/api/jupyter/save/route-0247c08c6f41b71e.js +0 -1
- package/.next-prod/static/chunks/app/api/jupyter/shutdown/route-0247c08c6f41b71e.js +0 -1
- package/.next-prod/static/chunks/app/api/lsp/definition/route-0247c08c6f41b71e.js +0 -1
- package/.next-prod/static/chunks/app/api/lsp/hover/route-0247c08c6f41b71e.js +0 -1
- package/.next-prod/static/chunks/app/api/lsp/references/route-0247c08c6f41b71e.js +0 -1
- package/.next-prod/static/chunks/app/api/lsp/status/route-0247c08c6f41b71e.js +0 -1
- package/.next-prod/static/chunks/app/api/lsp/warmup/route-0247c08c6f41b71e.js +0 -1
- package/.next-prod/static/chunks/app/api/mysql/columns/route-0247c08c6f41b71e.js +0 -1
- package/.next-prod/static/chunks/app/api/mysql/connect/route-0247c08c6f41b71e.js +0 -1
- package/.next-prod/static/chunks/app/api/mysql/disconnect/route-0247c08c6f41b71e.js +0 -1
- package/.next-prod/static/chunks/app/api/mysql/export/route-0247c08c6f41b71e.js +0 -1
- package/.next-prod/static/chunks/app/api/mysql/query/route-0247c08c6f41b71e.js +0 -1
- package/.next-prod/static/chunks/app/api/mysql/schemas/route-0247c08c6f41b71e.js +0 -1
- package/.next-prod/static/chunks/app/api/neo4j/connect/route-0247c08c6f41b71e.js +0 -1
- package/.next-prod/static/chunks/app/api/neo4j/disconnect/route-0247c08c6f41b71e.js +0 -1
- package/.next-prod/static/chunks/app/api/neo4j/query/route-0247c08c6f41b71e.js +0 -1
- package/.next-prod/static/chunks/app/api/neo4j/schema/route-0247c08c6f41b71e.js +0 -1
- package/.next-prod/static/chunks/app/api/note/route-0247c08c6f41b71e.js +0 -1
- package/.next-prod/static/chunks/app/api/ollama/models/route-0247c08c6f41b71e.js +0 -1
- package/.next-prod/static/chunks/app/api/ollama/start/route-0247c08c6f41b71e.js +0 -1
- package/.next-prod/static/chunks/app/api/open-cursor/route-0247c08c6f41b71e.js +0 -1
- package/.next-prod/static/chunks/app/api/open-vscode/route-0247c08c6f41b71e.js +0 -1
- package/.next-prod/static/chunks/app/api/pick-folder/route-0247c08c6f41b71e.js +0 -1
- package/.next-prod/static/chunks/app/api/pinned-sessions/route-0247c08c6f41b71e.js +0 -1
- package/.next-prod/static/chunks/app/api/project-settings/route-0247c08c6f41b71e.js +0 -1
- package/.next-prod/static/chunks/app/api/project-state/route-0247c08c6f41b71e.js +0 -1
- package/.next-prod/static/chunks/app/api/projectGraph/affected/route-0247c08c6f41b71e.js +0 -1
- package/.next-prod/static/chunks/app/api/projectGraph/callees/route-0247c08c6f41b71e.js +0 -1
- package/.next-prod/static/chunks/app/api/projectGraph/callers/route-0247c08c6f41b71e.js +0 -1
- package/.next-prod/static/chunks/app/api/projectGraph/coedit/route-0247c08c6f41b71e.js +0 -1
- package/.next-prod/static/chunks/app/api/projectGraph/context/route-0247c08c6f41b71e.js +0 -1
- package/.next-prod/static/chunks/app/api/projectGraph/file/route-0247c08c6f41b71e.js +0 -1
- package/.next-prod/static/chunks/app/api/projectGraph/file-functions/route-0247c08c6f41b71e.js +0 -1
- package/.next-prod/static/chunks/app/api/projectGraph/impact/route-0247c08c6f41b71e.js +0 -1
- package/.next-prod/static/chunks/app/api/projectGraph/related/route-0247c08c6f41b71e.js +0 -1
- package/.next-prod/static/chunks/app/api/projectGraph/risk/route-0247c08c6f41b71e.js +0 -1
- package/.next-prod/static/chunks/app/api/projectGraph/search/route-0247c08c6f41b71e.js +0 -1
- package/.next-prod/static/chunks/app/api/projects/route-0247c08c6f41b71e.js +0 -1
- package/.next-prod/static/chunks/app/api/redis/command/route-0247c08c6f41b71e.js +0 -1
- package/.next-prod/static/chunks/app/api/redis/connect/route-0247c08c6f41b71e.js +0 -1
- package/.next-prod/static/chunks/app/api/redis/delete/route-0247c08c6f41b71e.js +0 -1
- package/.next-prod/static/chunks/app/api/redis/disconnect/route-0247c08c6f41b71e.js +0 -1
- package/.next-prod/static/chunks/app/api/redis/get/route-0247c08c6f41b71e.js +0 -1
- package/.next-prod/static/chunks/app/api/redis/keys/route-0247c08c6f41b71e.js +0 -1
- package/.next-prod/static/chunks/app/api/redis/set/route-0247c08c6f41b71e.js +0 -1
- package/.next-prod/static/chunks/app/api/review/[id]/comments/route-0247c08c6f41b71e.js +0 -1
- package/.next-prod/static/chunks/app/api/review/[id]/replies/route-0247c08c6f41b71e.js +0 -1
- package/.next-prod/static/chunks/app/api/review/[id]/route-0247c08c6f41b71e.js +0 -1
- package/.next-prod/static/chunks/app/api/review/identify/route-0247c08c6f41b71e.js +0 -1
- package/.next-prod/static/chunks/app/api/review/order/route-0247c08c6f41b71e.js +0 -1
- package/.next-prod/static/chunks/app/api/review/route-0247c08c6f41b71e.js +0 -1
- package/.next-prod/static/chunks/app/api/review/share-info/route-0247c08c6f41b71e.js +0 -1
- package/.next-prod/static/chunks/app/api/review/users/route-0247c08c6f41b71e.js +0 -1
- package/.next-prod/static/chunks/app/api/scheduled-tasks/route-0247c08c6f41b71e.js +0 -1
- package/.next-prod/static/chunks/app/api/services/config/route-0247c08c6f41b71e.js +0 -1
- package/.next-prod/static/chunks/app/api/services/scripts/route-0247c08c6f41b71e.js +0 -1
- package/.next-prod/static/chunks/app/api/session/[sessionId]/fork/route-0247c08c6f41b71e.js +0 -1
- package/.next-prod/static/chunks/app/api/session/[sessionId]/history/route-0247c08c6f41b71e.js +0 -1
- package/.next-prod/static/chunks/app/api/session-by-path/route-0247c08c6f41b71e.js +0 -1
- package/.next-prod/static/chunks/app/api/sessions/projects/[encodedPath]/route-0247c08c6f41b71e.js +0 -1
- package/.next-prod/static/chunks/app/api/sessions/projects/route-0247c08c6f41b71e.js +0 -1
- package/.next-prod/static/chunks/app/api/sessions/route-0247c08c6f41b71e.js +0 -1
- package/.next-prod/static/chunks/app/api/settings/route-0247c08c6f41b71e.js +0 -1
- package/.next-prod/static/chunks/app/api/skills/[id]/route-0247c08c6f41b71e.js +0 -1
- package/.next-prod/static/chunks/app/api/skills/content/route-0247c08c6f41b71e.js +0 -1
- package/.next-prod/static/chunks/app/api/skills/route-0247c08c6f41b71e.js +0 -1
- package/.next-prod/static/chunks/app/api/terminal/aliases/route-0247c08c6f41b71e.js +0 -1
- package/.next-prod/static/chunks/app/api/terminal/autocomplete/route-0247c08c6f41b71e.js +0 -1
- package/.next-prod/static/chunks/app/api/terminal/bubble-order/route-0247c08c6f41b71e.js +0 -1
- package/.next-prod/static/chunks/app/api/terminal/env/route-0247c08c6f41b71e.js +0 -1
- package/.next-prod/static/chunks/app/api/terminal/history/route-0247c08c6f41b71e.js +0 -1
- package/.next-prod/static/chunks/app/api/version/route-0247c08c6f41b71e.js +0 -1
- package/.next-prod/static/chunks/app/manifest.webmanifest/route-0247c08c6f41b71e.js +0 -1
- package/.next-prod/static/chunks/next/dist/client/components/builtin/app-error-0247c08c6f41b71e.js +0 -1
- package/.next-prod/static/chunks/next/dist/client/components/builtin/forbidden-0247c08c6f41b71e.js +0 -1
- package/.next-prod/static/chunks/next/dist/client/components/builtin/not-found-0247c08c6f41b71e.js +0 -1
- package/.next-prod/static/chunks/next/dist/client/components/builtin/unauthorized-0247c08c6f41b71e.js +0 -1
- package/.next-prod/static/css/863166ef8887021b.css +0 -1
- /package/.next-prod/static/{-btylnafgKD-DMe4UTayG → IQwBHyZ3W2LMUZtDfCp-B}/_ssgManifest.js +0 -0
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
GLOBAL_STATE_FILE,
|
|
3
|
+
PUSH_SUBSCRIPTIONS_FILE,
|
|
4
|
+
SETTINGS_FILE,
|
|
3
5
|
findCodexSessionPath,
|
|
4
6
|
findKimiSessionPath,
|
|
5
7
|
getClaude2SessionPath,
|
|
@@ -8,11 +10,74 @@ import {
|
|
|
8
10
|
readJsonFile,
|
|
9
11
|
withFileLock,
|
|
10
12
|
writeJsonFile
|
|
11
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-5BOGGUGT.mjs";
|
|
12
14
|
|
|
13
15
|
// packages/feature/agent/src/server/state/globalState.ts
|
|
14
16
|
import { createReadStream, existsSync } from "fs";
|
|
15
17
|
import { createInterface } from "readline";
|
|
18
|
+
import { basename } from "path";
|
|
19
|
+
|
|
20
|
+
// packages/feature/agent/src/server/push/push.ts
|
|
21
|
+
import webpush from "web-push";
|
|
22
|
+
var configured = null;
|
|
23
|
+
async function getVapid() {
|
|
24
|
+
if (configured) return configured;
|
|
25
|
+
const vapid = await withFileLock(SETTINGS_FILE, async () => {
|
|
26
|
+
const settings = await readJsonFile(SETTINGS_FILE, {});
|
|
27
|
+
if (settings.push?.publicKey && settings.push?.privateKey) {
|
|
28
|
+
return {
|
|
29
|
+
publicKey: settings.push.publicKey,
|
|
30
|
+
privateKey: settings.push.privateKey,
|
|
31
|
+
subject: settings.push.subject || "mailto:cockpit@localhost"
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
const keys = webpush.generateVAPIDKeys();
|
|
35
|
+
const push = {
|
|
36
|
+
publicKey: keys.publicKey,
|
|
37
|
+
privateKey: keys.privateKey,
|
|
38
|
+
subject: "mailto:cockpit@localhost"
|
|
39
|
+
};
|
|
40
|
+
await writeJsonFile(SETTINGS_FILE, { ...settings, push });
|
|
41
|
+
return push;
|
|
42
|
+
});
|
|
43
|
+
webpush.setVapidDetails(vapid.subject, vapid.publicKey, vapid.privateKey);
|
|
44
|
+
configured = vapid;
|
|
45
|
+
return vapid;
|
|
46
|
+
}
|
|
47
|
+
async function sendPushNotification(payload) {
|
|
48
|
+
try {
|
|
49
|
+
await getVapid();
|
|
50
|
+
} catch {
|
|
51
|
+
return { sent: 0, pruned: 0 };
|
|
52
|
+
}
|
|
53
|
+
const store = await readJsonFile(PUSH_SUBSCRIPTIONS_FILE, { subscriptions: [] });
|
|
54
|
+
if (store.subscriptions.length === 0) return { sent: 0, pruned: 0 };
|
|
55
|
+
const body = JSON.stringify(payload);
|
|
56
|
+
const dead = [];
|
|
57
|
+
let sent = 0;
|
|
58
|
+
await Promise.all(
|
|
59
|
+
store.subscriptions.map(async (sub) => {
|
|
60
|
+
try {
|
|
61
|
+
await webpush.sendNotification(sub, body);
|
|
62
|
+
sent++;
|
|
63
|
+
} catch (e) {
|
|
64
|
+
const code = e?.statusCode;
|
|
65
|
+
if (code === 404 || code === 410) dead.push(sub.endpoint);
|
|
66
|
+
}
|
|
67
|
+
})
|
|
68
|
+
);
|
|
69
|
+
if (dead.length) {
|
|
70
|
+
await withFileLock(PUSH_SUBSCRIPTIONS_FILE, async () => {
|
|
71
|
+
const cur = await readJsonFile(PUSH_SUBSCRIPTIONS_FILE, { subscriptions: [] });
|
|
72
|
+
await writeJsonFile(PUSH_SUBSCRIPTIONS_FILE, {
|
|
73
|
+
subscriptions: cur.subscriptions.filter((s) => !dead.includes(s.endpoint))
|
|
74
|
+
});
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
return { sent, pruned: dead.length };
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
// packages/feature/agent/src/server/state/globalState.ts
|
|
16
81
|
var MAX_SESSIONS = 15;
|
|
17
82
|
var MAX_TEXT_LEN = 50;
|
|
18
83
|
function truncate(s) {
|
|
@@ -54,33 +119,20 @@ async function updateGlobalState(cwd, sessionId, status, title, lastUserMessage)
|
|
|
54
119
|
state.sessions.sort((a, b) => b.lastActive - a.lastActive);
|
|
55
120
|
state.sessions = state.sessions.slice(0, MAX_SESSIONS);
|
|
56
121
|
await writeJsonFile(GLOBAL_STATE_FILE, state);
|
|
122
|
+
if (status === "unread" && existing?.status !== "unread") {
|
|
123
|
+
void (async () => {
|
|
124
|
+
const fresh = await getLastUserMessage(cwd, sessionId).catch(() => void 0);
|
|
125
|
+
const last = fresh || newSession.lastUserMessage;
|
|
126
|
+
await sendPushNotification({
|
|
127
|
+
title: basename(cwd) || "Cockpit",
|
|
128
|
+
body: truncate(last) || newSession.title || "",
|
|
129
|
+
data: { cwd, sessionId }
|
|
130
|
+
});
|
|
131
|
+
})().catch(() => {
|
|
132
|
+
});
|
|
133
|
+
}
|
|
57
134
|
});
|
|
58
135
|
}
|
|
59
|
-
async function getSessionTitle(cwd, sessionId) {
|
|
60
|
-
const claudePath = getClaudeSessionPath(cwd, sessionId);
|
|
61
|
-
if (existsSync(claudePath)) {
|
|
62
|
-
return getClaudeStyleTitle(claudePath);
|
|
63
|
-
}
|
|
64
|
-
const claude2Path = getClaude2SessionPath(cwd, sessionId);
|
|
65
|
-
if (existsSync(claude2Path)) {
|
|
66
|
-
return getClaudeStyleTitle(claude2Path);
|
|
67
|
-
}
|
|
68
|
-
const ollamaPath = getOllamaSessionPath(cwd, sessionId);
|
|
69
|
-
if (existsSync(ollamaPath)) {
|
|
70
|
-
return getClaudeStyleTitle(ollamaPath);
|
|
71
|
-
}
|
|
72
|
-
const codexPath = findCodexSessionPath(sessionId);
|
|
73
|
-
if (codexPath && existsSync(codexPath)) {
|
|
74
|
-
const title = await getCodexTitle(codexPath);
|
|
75
|
-
return title || "Untitled Session";
|
|
76
|
-
}
|
|
77
|
-
const kimiPath = findKimiSessionPath(sessionId);
|
|
78
|
-
if (kimiPath && existsSync(kimiPath)) {
|
|
79
|
-
const title = await getKimiTitle(kimiPath);
|
|
80
|
-
return title || "Untitled Session";
|
|
81
|
-
}
|
|
82
|
-
return "Untitled Session";
|
|
83
|
-
}
|
|
84
136
|
async function collectUserMessages(cwd, sessionId) {
|
|
85
137
|
const claudePath = getClaudeSessionPath(cwd, sessionId);
|
|
86
138
|
if (existsSync(claudePath)) {
|
|
@@ -104,6 +156,10 @@ async function collectUserMessages(cwd, sessionId) {
|
|
|
104
156
|
}
|
|
105
157
|
return [];
|
|
106
158
|
}
|
|
159
|
+
async function getLastUserMessage(cwd, sessionId) {
|
|
160
|
+
const messages = await collectUserMessages(cwd, sessionId);
|
|
161
|
+
return messages[messages.length - 1];
|
|
162
|
+
}
|
|
107
163
|
var SUMMARY_THRESHOLD = 10;
|
|
108
164
|
var SUMMARY_HEAD = 5;
|
|
109
165
|
var SUMMARY_TAIL = 5;
|
|
@@ -131,38 +187,6 @@ function isValidUserMessage(text) {
|
|
|
131
187
|
if (!text.trim()) return false;
|
|
132
188
|
return true;
|
|
133
189
|
}
|
|
134
|
-
async function getClaudeStyleTitle(filePath) {
|
|
135
|
-
try {
|
|
136
|
-
const fileStream = createReadStream(filePath);
|
|
137
|
-
const rl = createInterface({ input: fileStream, crlfDelay: Infinity });
|
|
138
|
-
let summary = "";
|
|
139
|
-
const userMessages = [];
|
|
140
|
-
for await (const line of rl) {
|
|
141
|
-
if (!line.trim()) continue;
|
|
142
|
-
try {
|
|
143
|
-
const entry = JSON.parse(line);
|
|
144
|
-
if (entry.type === "summary" && entry.summary) {
|
|
145
|
-
summary = entry.summary;
|
|
146
|
-
}
|
|
147
|
-
if (entry.type === "user") {
|
|
148
|
-
const message = entry.message;
|
|
149
|
-
if (!message?.content) continue;
|
|
150
|
-
if (typeof message.content === "string") {
|
|
151
|
-
userMessages.push(message.content);
|
|
152
|
-
} else if (Array.isArray(message.content)) {
|
|
153
|
-
for (const block of message.content) {
|
|
154
|
-
if (block.type === "text" && block.text) userMessages.push(block.text);
|
|
155
|
-
}
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
|
-
} catch {
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
return generateTitle(summary, userMessages);
|
|
162
|
-
} catch {
|
|
163
|
-
return "Untitled Session";
|
|
164
|
-
}
|
|
165
|
-
}
|
|
166
190
|
async function getClaudeStyleUserMessages(filePath) {
|
|
167
191
|
const messages = [];
|
|
168
192
|
try {
|
|
@@ -225,30 +249,6 @@ async function getCodexUserMessages(filePath) {
|
|
|
225
249
|
}
|
|
226
250
|
return messages;
|
|
227
251
|
}
|
|
228
|
-
async function getCodexTitle(filePath) {
|
|
229
|
-
try {
|
|
230
|
-
const fileStream = createReadStream(filePath);
|
|
231
|
-
const rl = createInterface({ input: fileStream, crlfDelay: Infinity });
|
|
232
|
-
for await (const line of rl) {
|
|
233
|
-
if (!line.trim()) continue;
|
|
234
|
-
let entry;
|
|
235
|
-
try {
|
|
236
|
-
entry = JSON.parse(line);
|
|
237
|
-
} catch {
|
|
238
|
-
continue;
|
|
239
|
-
}
|
|
240
|
-
if (entry.type !== "response_item") continue;
|
|
241
|
-
const payload = entry.payload;
|
|
242
|
-
if (!payload || payload.type !== "message" || payload.role !== "user") continue;
|
|
243
|
-
const text = payload.content?.filter((c) => c.type === "input_text" && c.text).map((c) => c.text).join("") || "";
|
|
244
|
-
if (!text || text.startsWith("<") || text.startsWith("#")) continue;
|
|
245
|
-
return text.slice(0, 80);
|
|
246
|
-
}
|
|
247
|
-
return void 0;
|
|
248
|
-
} catch {
|
|
249
|
-
return void 0;
|
|
250
|
-
}
|
|
251
|
-
}
|
|
252
252
|
async function getKimiUserMessages(filePath) {
|
|
253
253
|
const messages = [];
|
|
254
254
|
try {
|
|
@@ -276,51 +276,94 @@ async function getKimiUserMessages(filePath) {
|
|
|
276
276
|
}
|
|
277
277
|
return messages;
|
|
278
278
|
}
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
279
|
+
|
|
280
|
+
// packages/feature/agent/src/server/sessionRunHub.ts
|
|
281
|
+
var GRACE_MS = 6e4;
|
|
282
|
+
var g = globalThis;
|
|
283
|
+
var registry = g.__cockpitRunRegistry ?? (g.__cockpitRunRegistry = /* @__PURE__ */ new Map());
|
|
284
|
+
var listeners = g.__cockpitRunListeners ?? (g.__cockpitRunListeners = /* @__PURE__ */ new Map());
|
|
285
|
+
var seqByKey = g.__cockpitRunSeqByKey ?? (g.__cockpitRunSeqByKey = /* @__PURE__ */ new Map());
|
|
286
|
+
function bumpSeq(state) {
|
|
287
|
+
state.seq += 1;
|
|
288
|
+
for (const k of state.keys) seqByKey.set(k, state.seq);
|
|
289
|
+
return state.seq;
|
|
290
|
+
}
|
|
291
|
+
function fanout(state, ev) {
|
|
292
|
+
for (const k of state.keys) {
|
|
293
|
+
const ls = listeners.get(k);
|
|
294
|
+
if (ls) for (const cb of ls) {
|
|
286
295
|
try {
|
|
287
|
-
|
|
296
|
+
cb(ev);
|
|
288
297
|
} catch {
|
|
289
|
-
continue;
|
|
290
|
-
}
|
|
291
|
-
if (entry.role !== "user") continue;
|
|
292
|
-
const text = typeof entry.content === "string" ? entry.content : Array.isArray(entry.content) ? entry.content.filter((c) => (c.type === "input_text" || c.type === "text") && c.text).map((c) => c.text).join("") : "";
|
|
293
|
-
if (!text || text.startsWith("<system") || text.startsWith("<environment") || text.startsWith("# AGENTS.md") || text.startsWith("<permissions")) {
|
|
294
|
-
continue;
|
|
295
298
|
}
|
|
296
|
-
return text.slice(0, 80);
|
|
297
299
|
}
|
|
298
|
-
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
function appendRun(key, message) {
|
|
303
|
+
const r = registry.get(key);
|
|
304
|
+
if (!r) return;
|
|
305
|
+
if (r.status !== "running") return;
|
|
306
|
+
bumpSeq(r);
|
|
307
|
+
r.events.push(message);
|
|
308
|
+
r.updatedAt = Date.now();
|
|
309
|
+
fanout(r, { seq: r.seq, message });
|
|
310
|
+
}
|
|
311
|
+
function markRunIdle(key, status = "idle") {
|
|
312
|
+
const r = registry.get(key);
|
|
313
|
+
if (!r) return;
|
|
314
|
+
const wasRunning = r.status === "running";
|
|
315
|
+
if (!wasRunning) {
|
|
316
|
+
if (r.status === "idle" && status === "error") r.status = "error";
|
|
317
|
+
return;
|
|
318
|
+
}
|
|
319
|
+
r.status = status;
|
|
320
|
+
r.updatedAt = Date.now();
|
|
321
|
+
{
|
|
322
|
+
bumpSeq(r);
|
|
323
|
+
fanout(r, { seq: r.seq, message: { type: "run-ended", status } });
|
|
324
|
+
}
|
|
325
|
+
if (r.evictTimer) clearTimeout(r.evictTimer);
|
|
326
|
+
r.evictTimer = setTimeout(() => {
|
|
327
|
+
for (const k of r.keys) registry.delete(k);
|
|
328
|
+
}, GRACE_MS);
|
|
329
|
+
}
|
|
330
|
+
function getRunSnapshot(key) {
|
|
331
|
+
const r = registry.get(key);
|
|
332
|
+
if (!r) return null;
|
|
333
|
+
return { status: r.status, seq: r.seq, events: r.events.slice() };
|
|
334
|
+
}
|
|
335
|
+
function isRunActive(key) {
|
|
336
|
+
return registry.get(key)?.status === "running";
|
|
337
|
+
}
|
|
338
|
+
function requestStop(key) {
|
|
339
|
+
const r = registry.get(key);
|
|
340
|
+
if (!r) return false;
|
|
341
|
+
try {
|
|
342
|
+
r.abort?.();
|
|
299
343
|
} catch {
|
|
300
|
-
return void 0;
|
|
301
344
|
}
|
|
345
|
+
appendRun(key, { type: "result", subtype: "stopped" });
|
|
346
|
+
markRunIdle(key, "idle");
|
|
347
|
+
return true;
|
|
302
348
|
}
|
|
303
|
-
function
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
if (!filtered) continue;
|
|
309
|
-
if (filtered.startsWith("/") && !commandName) {
|
|
310
|
-
commandName = filtered;
|
|
311
|
-
continue;
|
|
312
|
-
}
|
|
313
|
-
if (commandName) {
|
|
314
|
-
return `${commandName} ${filtered}`;
|
|
315
|
-
}
|
|
316
|
-
return filtered;
|
|
349
|
+
function addRunListener(key, cb) {
|
|
350
|
+
let s = listeners.get(key);
|
|
351
|
+
if (!s) {
|
|
352
|
+
s = /* @__PURE__ */ new Set();
|
|
353
|
+
listeners.set(key, s);
|
|
317
354
|
}
|
|
318
|
-
|
|
319
|
-
return
|
|
355
|
+
s.add(cb);
|
|
356
|
+
return () => {
|
|
357
|
+
const set = listeners.get(key);
|
|
358
|
+
if (set && set.delete(cb) && set.size === 0) listeners.delete(key);
|
|
359
|
+
};
|
|
320
360
|
}
|
|
321
361
|
|
|
322
362
|
export {
|
|
323
363
|
updateGlobalState,
|
|
324
|
-
|
|
325
|
-
|
|
364
|
+
getSessionPreview,
|
|
365
|
+
getRunSnapshot,
|
|
366
|
+
isRunActive,
|
|
367
|
+
requestStop,
|
|
368
|
+
addRunListener
|
|
326
369
|
};
|
package/dist/httpApi.mjs
CHANGED
|
@@ -21,10 +21,10 @@ import {
|
|
|
21
21
|
unregisterBrowser,
|
|
22
22
|
unregisterTerminal,
|
|
23
23
|
writeStdinToCommand
|
|
24
|
-
} from "./chunk-
|
|
24
|
+
} from "./chunk-BM3ZNL5S.mjs";
|
|
25
25
|
import {
|
|
26
26
|
getTerminalHistoryPath
|
|
27
|
-
} from "./chunk-
|
|
27
|
+
} from "./chunk-5BOGGUGT.mjs";
|
|
28
28
|
import "./chunk-7P6ASYW6.mjs";
|
|
29
29
|
|
|
30
30
|
// src/lib/httpApi.ts
|
package/dist/scheduledTasks.mjs
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import {
|
|
2
|
-
|
|
2
|
+
getRunSnapshot,
|
|
3
|
+
isRunActive,
|
|
4
|
+
requestStop,
|
|
3
5
|
updateGlobalState
|
|
4
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-5CRGWEWX.mjs";
|
|
5
7
|
import {
|
|
6
8
|
AgentError,
|
|
7
9
|
AppRuntime,
|
|
8
|
-
CLAUDE2_DIR,
|
|
9
10
|
CockpitConfig,
|
|
10
11
|
Effect_exports,
|
|
11
12
|
SCHEDULED_TASKS_FILE,
|
|
@@ -17,12 +18,11 @@ import {
|
|
|
17
18
|
getOllamaSessionPath,
|
|
18
19
|
readJsonFile,
|
|
19
20
|
writeJsonFile
|
|
20
|
-
} from "./chunk-
|
|
21
|
+
} from "./chunk-5BOGGUGT.mjs";
|
|
21
22
|
import "./chunk-7P6ASYW6.mjs";
|
|
22
23
|
|
|
23
24
|
// packages/feature/agent/src/server/scheduledTasks.ts
|
|
24
25
|
import { existsSync } from "fs";
|
|
25
|
-
import { query } from "@anthropic-ai/claude-agent-sdk";
|
|
26
26
|
function parseCronField(field, min, max) {
|
|
27
27
|
const values = [];
|
|
28
28
|
for (const part of field.split(",")) {
|
|
@@ -67,82 +67,50 @@ function getNextCronTime(cronExpr, after = /* @__PURE__ */ new Date()) {
|
|
|
67
67
|
}
|
|
68
68
|
return after.getTime() + 864e5;
|
|
69
69
|
}
|
|
70
|
-
var sendClaudeMessageEff = (task) => {
|
|
71
|
-
const options = {
|
|
72
|
-
resume: task.sessionId,
|
|
73
|
-
cwd: task.cwd,
|
|
74
|
-
settingSources: ["user", "project", "local"],
|
|
75
|
-
// No allowedTools whitelist: tool availability is decided by the `tools` option
|
|
76
|
-
// (unset → all built-in tools registered by default). allowedTools only pre-approves
|
|
77
|
-
// the permission prompt, which bypassPermissions skips. (Native bun-compiled builds
|
|
78
|
-
// would need Grep/Glob listed explicitly; we run via the node CLI, so it doesn't apply.)
|
|
79
|
-
permissionMode: "bypassPermissions",
|
|
80
|
-
allowDangerouslySkipPermissions: true,
|
|
81
|
-
// For claude2 engine, override config directory to ~/.claude2
|
|
82
|
-
...task.engine === "claude2" && {
|
|
83
|
-
env: { ...process.env, CLAUDE_CONFIG_DIR: CLAUDE2_DIR }
|
|
84
|
-
}
|
|
85
|
-
};
|
|
86
|
-
const MAX_COMPACTION_RETRIES = 1;
|
|
87
|
-
return Effect_exports.gen(function* () {
|
|
88
|
-
yield* Effect_exports.tryPromise(
|
|
89
|
-
() => updateGlobalState(task.cwd, task.sessionId, "loading", void 0, task.message)
|
|
90
|
-
).pipe(Effect_exports.orElse(() => Effect_exports.void));
|
|
91
|
-
yield* Effect_exports.tryPromise({
|
|
92
|
-
try: async () => {
|
|
93
|
-
for (let attempt = 0; attempt <= MAX_COMPACTION_RETRIES; attempt++) {
|
|
94
|
-
let receivedResult = false;
|
|
95
|
-
const response = query({
|
|
96
|
-
prompt: attempt === 0 ? task.message : "continue",
|
|
97
|
-
options
|
|
98
|
-
});
|
|
99
|
-
for await (const message of response) {
|
|
100
|
-
const msg = message;
|
|
101
|
-
if (msg.type === "result") receivedResult = true;
|
|
102
|
-
}
|
|
103
|
-
if (receivedResult) break;
|
|
104
|
-
console.log(`[ScheduledTask] Stream ended without result, resuming (attempt ${attempt + 1}/${MAX_COMPACTION_RETRIES})`);
|
|
105
|
-
}
|
|
106
|
-
},
|
|
107
|
-
catch: (cause) => (
|
|
108
|
-
// claude2 is a separate Anthropic credential set; the SDK is still claude. Classify under the 'claude' provider.
|
|
109
|
-
new AgentError({
|
|
110
|
-
provider: "claude",
|
|
111
|
-
kind: "unknown",
|
|
112
|
-
cause
|
|
113
|
-
})
|
|
114
|
-
)
|
|
115
|
-
});
|
|
116
|
-
const title = yield* Effect_exports.tryPromise(() => getSessionTitle(task.cwd, task.sessionId)).pipe(
|
|
117
|
-
Effect_exports.orElseSucceed(() => void 0)
|
|
118
|
-
);
|
|
119
|
-
yield* Effect_exports.tryPromise(
|
|
120
|
-
() => updateGlobalState(task.cwd, task.sessionId, "unread", title)
|
|
121
|
-
).pipe(Effect_exports.orElse(() => Effect_exports.void));
|
|
122
|
-
return true;
|
|
123
|
-
});
|
|
124
|
-
};
|
|
125
70
|
var sendHttpEngineMessageEff = (task, engine) => Effect_exports.tryPromise({
|
|
126
71
|
try: async () => {
|
|
127
|
-
const
|
|
72
|
+
const isClaude = engine === "claude" || engine === "claude2";
|
|
73
|
+
const url = isClaude ? `http://127.0.0.1:${task.port}/api/chat` : `http://127.0.0.1:${task.port}/api/chat/${engine}`;
|
|
74
|
+
const res = await fetch(url, {
|
|
128
75
|
method: "POST",
|
|
129
76
|
headers: { "Content-Type": "application/json" },
|
|
130
77
|
body: JSON.stringify({
|
|
131
78
|
prompt: task.message,
|
|
132
79
|
sessionId: task.sessionId,
|
|
133
80
|
cwd: task.cwd,
|
|
81
|
+
engine,
|
|
82
|
+
// route uses it for claude2's CLAUDE_CONFIG_DIR; no-op for the others
|
|
134
83
|
...task.model && { model: task.model }
|
|
135
84
|
})
|
|
136
85
|
});
|
|
137
|
-
if (!res.ok
|
|
86
|
+
if (!res.ok) {
|
|
138
87
|
throw new Error(`${engine} chat route responded ${res.status}`);
|
|
139
88
|
}
|
|
140
|
-
const
|
|
141
|
-
|
|
89
|
+
const body = await res.json().catch(() => ({}));
|
|
90
|
+
if (!body.runKey) {
|
|
91
|
+
throw new Error(`${engine} chat route returned no runKey (session ${task.sessionId})`);
|
|
92
|
+
}
|
|
93
|
+
const key = body.runKey;
|
|
94
|
+
const deadline = Date.now() + 30 * 60 * 1e3;
|
|
95
|
+
while (isRunActive(key) && Date.now() < deadline) {
|
|
96
|
+
await new Promise((r) => setTimeout(r, 500));
|
|
97
|
+
}
|
|
98
|
+
if (isRunActive(key)) {
|
|
99
|
+
requestStop(key);
|
|
100
|
+
throw new Error(`${engine} run timed out after 30m (session ${task.sessionId})`);
|
|
101
|
+
}
|
|
102
|
+
const snap = getRunSnapshot(key);
|
|
103
|
+
if (!snap || snap.status === "error") {
|
|
104
|
+
throw new Error(`${engine} run failed (session ${task.sessionId})`);
|
|
142
105
|
}
|
|
143
106
|
return true;
|
|
144
107
|
},
|
|
145
|
-
|
|
108
|
+
// claude2 shares the 'claude' provider for error classification (same SDK).
|
|
109
|
+
catch: (cause) => new AgentError({
|
|
110
|
+
provider: engine === "claude2" ? "claude" : engine,
|
|
111
|
+
kind: "unknown",
|
|
112
|
+
cause
|
|
113
|
+
})
|
|
146
114
|
});
|
|
147
115
|
function sessionPathFor(engine, task) {
|
|
148
116
|
if (engine === "claude2") return getClaude2SessionPath(task.cwd, task.sessionId);
|
|
@@ -173,7 +141,7 @@ var sendChatMessageEff = (task) => Effect_exports.gen(function* () {
|
|
|
173
141
|
})
|
|
174
142
|
);
|
|
175
143
|
}
|
|
176
|
-
return
|
|
144
|
+
return yield* sendHttpEngineMessageEff(task, engine);
|
|
177
145
|
}).pipe(
|
|
178
146
|
Effect_exports.catchAll(
|
|
179
147
|
(err) => Effect_exports.gen(function* () {
|
|
@@ -41,12 +41,12 @@ import {
|
|
|
41
41
|
unregisterTerminal,
|
|
42
42
|
updateBrowserWs,
|
|
43
43
|
writeStdinToCommand
|
|
44
|
-
} from "./chunk-
|
|
44
|
+
} from "./chunk-BM3ZNL5S.mjs";
|
|
45
45
|
import {
|
|
46
46
|
createNeo4jDriver,
|
|
47
47
|
runCypherWithDriver,
|
|
48
48
|
serializeValue
|
|
49
|
-
} from "./chunk-
|
|
49
|
+
} from "./chunk-5BOGGUGT.mjs";
|
|
50
50
|
import "./chunk-7P6ASYW6.mjs";
|
|
51
51
|
export {
|
|
52
52
|
PtyRingBuffer,
|
package/dist/wsServer.mjs
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import {
|
|
2
|
+
addRunListener,
|
|
3
|
+
getRunSnapshot,
|
|
2
4
|
getSessionPreview
|
|
3
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-5CRGWEWX.mjs";
|
|
4
6
|
import {
|
|
5
7
|
addExitListener,
|
|
6
8
|
addOutputListener,
|
|
@@ -16,7 +18,7 @@ import {
|
|
|
16
18
|
resolvePendingRequest,
|
|
17
19
|
unregisterBrowser,
|
|
18
20
|
writeStdinToCommand
|
|
19
|
-
} from "./chunk-
|
|
21
|
+
} from "./chunk-BM3ZNL5S.mjs";
|
|
20
22
|
import {
|
|
21
23
|
AppError,
|
|
22
24
|
Effect_exports,
|
|
@@ -32,11 +34,11 @@ import {
|
|
|
32
34
|
ValidationError,
|
|
33
35
|
WSError,
|
|
34
36
|
readJsonFile
|
|
35
|
-
} from "./chunk-
|
|
37
|
+
} from "./chunk-5BOGGUGT.mjs";
|
|
36
38
|
import "./chunk-7P6ASYW6.mjs";
|
|
37
39
|
|
|
38
40
|
// src/lib/wsServer.ts
|
|
39
|
-
import { WebSocketServer
|
|
41
|
+
import { WebSocketServer } from "ws";
|
|
40
42
|
import { parse } from "url";
|
|
41
43
|
|
|
42
44
|
// src/lib/effect/globalStateHandler.ts
|
|
@@ -688,7 +690,7 @@ var handleJupyter = (conn, bubbleId, cwd) => Effect_exports.gen(function* () {
|
|
|
688
690
|
Effect_exports.annotateLogs("cwd", cwd)
|
|
689
691
|
);
|
|
690
692
|
const { kernelManager } = yield* Effect_exports.tryPromise({
|
|
691
|
-
try: () => import("./server-
|
|
693
|
+
try: () => import("./server-DRMO2DUJ.mjs"),
|
|
692
694
|
catch: (cause) => new AppError({
|
|
693
695
|
message: "failed to import kernel manager",
|
|
694
696
|
cause
|
|
@@ -1177,6 +1179,69 @@ var runTerminalHandler = (ws, projectCwd) => {
|
|
|
1177
1179
|
});
|
|
1178
1180
|
};
|
|
1179
1181
|
|
|
1182
|
+
// src/lib/effect/sessionStreamHandler.ts
|
|
1183
|
+
var HEARTBEAT6 = Schedule_exports.spaced("30 seconds");
|
|
1184
|
+
var handleSessionStream = (conn, sessionId) => Effect_exports.gen(function* () {
|
|
1185
|
+
if (!sessionId) {
|
|
1186
|
+
return yield* Effect_exports.fail(
|
|
1187
|
+
new ValidationError({ field: "sessionId", reason: "missing" })
|
|
1188
|
+
);
|
|
1189
|
+
}
|
|
1190
|
+
const queue = yield* Queue_exports.unbounded();
|
|
1191
|
+
yield* Effect_exports.acquireRelease(
|
|
1192
|
+
Effect_exports.sync(
|
|
1193
|
+
() => addRunListener(sessionId, (ev) => {
|
|
1194
|
+
Effect_exports.runFork(Queue_exports.offer(queue, ev));
|
|
1195
|
+
})
|
|
1196
|
+
),
|
|
1197
|
+
(unsub) => Effect_exports.sync(unsub)
|
|
1198
|
+
);
|
|
1199
|
+
const snap = getRunSnapshot(sessionId);
|
|
1200
|
+
const snapshotSeq = snap ? snap.seq : -1;
|
|
1201
|
+
if (snap) {
|
|
1202
|
+
yield* conn.send({
|
|
1203
|
+
type: "run-snapshot",
|
|
1204
|
+
status: snap.status,
|
|
1205
|
+
seq: snap.seq,
|
|
1206
|
+
events: snap.events
|
|
1207
|
+
});
|
|
1208
|
+
} else {
|
|
1209
|
+
yield* conn.send({ type: "run-idle" });
|
|
1210
|
+
}
|
|
1211
|
+
yield* Effect_exports.forkScoped(
|
|
1212
|
+
Effect_exports.repeat(conn.send({ type: "ping" }), HEARTBEAT6)
|
|
1213
|
+
);
|
|
1214
|
+
yield* Stream_exports.fromQueue(queue).pipe(
|
|
1215
|
+
Stream_exports.filter((ev) => ev.seq > snapshotSeq),
|
|
1216
|
+
Stream_exports.mapEffect(
|
|
1217
|
+
(ev) => conn.send({ type: "run-event", seq: ev.seq, message: ev.message })
|
|
1218
|
+
),
|
|
1219
|
+
Stream_exports.runDrain
|
|
1220
|
+
);
|
|
1221
|
+
}).pipe(Effect_exports.withSpan("ws.handleSessionStream", { attributes: { sessionId } }));
|
|
1222
|
+
var runSessionStreamHandler = (ws, sessionId) => {
|
|
1223
|
+
const program = Effect_exports.scoped(
|
|
1224
|
+
Effect_exports.gen(function* () {
|
|
1225
|
+
const conn = yield* fromWebSocket(ws, "session-stream");
|
|
1226
|
+
yield* handleSessionStream(conn, sessionId);
|
|
1227
|
+
})
|
|
1228
|
+
).pipe(
|
|
1229
|
+
Effect_exports.catchTag(
|
|
1230
|
+
"ValidationError",
|
|
1231
|
+
(e) => Effect_exports.sync(() => ws.close(4400, e.reason))
|
|
1232
|
+
),
|
|
1233
|
+
Effect_exports.catchAll(
|
|
1234
|
+
(e) => Effect_exports.logError("[ws/session-stream]").pipe(
|
|
1235
|
+
Effect_exports.annotateLogs("error", JSON.stringify(e))
|
|
1236
|
+
)
|
|
1237
|
+
)
|
|
1238
|
+
);
|
|
1239
|
+
const fiber = Effect_exports.runFork(program);
|
|
1240
|
+
ws.on("close", () => {
|
|
1241
|
+
Effect_exports.runFork(fiber.interruptAsFork(fiber.id()));
|
|
1242
|
+
});
|
|
1243
|
+
};
|
|
1244
|
+
|
|
1180
1245
|
// packages/feature/explorer/src/server/codeMap/projectGraph/codeIndex.ts
|
|
1181
1246
|
import { promises as fs4 } from "fs";
|
|
1182
1247
|
import path6 from "path";
|
|
@@ -3905,10 +3970,10 @@ function wireCodeIndexToFileWatcher() {
|
|
|
3905
3970
|
});
|
|
3906
3971
|
}
|
|
3907
3972
|
|
|
3908
|
-
// src/lib/
|
|
3909
|
-
|
|
3910
|
-
var
|
|
3911
|
-
var globalStateClients =
|
|
3973
|
+
// src/lib/globalStateBroadcast.ts
|
|
3974
|
+
import { WebSocket } from "ws";
|
|
3975
|
+
var g = globalThis;
|
|
3976
|
+
var globalStateClients = g.__cockpitGlobalStateClients ?? (g.__cockpitGlobalStateClients = /* @__PURE__ */ new Set());
|
|
3912
3977
|
function broadcastToGlobalState(msg) {
|
|
3913
3978
|
const data = JSON.stringify(msg);
|
|
3914
3979
|
for (const ws of globalStateClients) {
|
|
@@ -3917,6 +3982,10 @@ function broadcastToGlobalState(msg) {
|
|
|
3917
3982
|
}
|
|
3918
3983
|
}
|
|
3919
3984
|
}
|
|
3985
|
+
|
|
3986
|
+
// src/lib/wsServer.ts
|
|
3987
|
+
wireCodeIndexToFileWatcher();
|
|
3988
|
+
var g_ws = globalThis;
|
|
3920
3989
|
var wss = g_ws.__cockpitWss ?? (() => {
|
|
3921
3990
|
const server = new WebSocketServer({ noServer: true });
|
|
3922
3991
|
g_ws.__cockpitWss = server;
|
|
@@ -3941,13 +4010,15 @@ var wss = g_ws.__cockpitWss ?? (() => {
|
|
|
3941
4010
|
runTerminalFollowHandler(ws, query.id);
|
|
3942
4011
|
} else if (pathname === "/ws/jupyter") {
|
|
3943
4012
|
runJupyterHandler(ws, query.bubbleId, query.cwd);
|
|
4013
|
+
} else if (pathname === "/ws/session-stream") {
|
|
4014
|
+
runSessionStreamHandler(ws, query.sessionId);
|
|
3944
4015
|
}
|
|
3945
4016
|
});
|
|
3946
4017
|
return server;
|
|
3947
4018
|
})();
|
|
3948
4019
|
function handleUpgrade(req, socket, head) {
|
|
3949
4020
|
const { pathname } = parse(req.url || "", true);
|
|
3950
|
-
if (pathname === "/ws/watch" || pathname === "/ws/global-state" || pathname === "/ws/terminal" || pathname === "/ws/browser" || pathname === "/ws/terminal-follow" || pathname === "/ws/jupyter") {
|
|
4021
|
+
if (pathname === "/ws/watch" || pathname === "/ws/global-state" || pathname === "/ws/terminal" || pathname === "/ws/browser" || pathname === "/ws/terminal-follow" || pathname === "/ws/jupyter" || pathname === "/ws/session-stream") {
|
|
3951
4022
|
wss.handleUpgrade(req, socket, head, (ws) => {
|
|
3952
4023
|
wss.emit("connection", ws, req);
|
|
3953
4024
|
});
|