@surething/cockpit 1.0.260 → 1.0.262
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 +7 -4
- package/.next-prod/build-manifest.json +2 -2
- package/.next-prod/cockpit-build.json +1 -1
- package/.next-prod/prerender-manifest.json +4 -4
- package/.next-prod/routes-manifest.json +18 -0
- package/.next-prod/server/app/_global-error/page.js +2 -2
- package/.next-prod/server/app/_global-error/page.js.nft.json +1 -1
- package/.next-prod/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/.next-prod/server/app/_global-error.html +1 -1
- package/.next-prod/server/app/_global-error.rsc +1 -1
- package/.next-prod/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/.next-prod/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
- package/.next-prod/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next-prod/server/app/_not-found/page.js +1 -1
- package/.next-prod/server/app/_not-found/page.js.nft.json +1 -1
- package/.next-prod/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next-prod/server/app/_not-found.html +2 -2
- package/.next-prod/server/app/_not-found.rsc +4 -4
- package/.next-prod/server/app/_not-found.segments/_full.segment.rsc +4 -4
- package/.next-prod/server/app/_not-found.segments/_index.segment.rsc +12 -11
- package/.next-prod/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/.next-prod/server/app/_not-found.segments/_tree.segment.rsc +2 -2
- package/.next-prod/server/app/api/agent/test/route.js +1 -1
- package/.next-prod/server/app/api/agent/test/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/bash/route.js +1 -1
- package/.next-prod/server/app/api/bash/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/chat/codex/route.js +1 -1
- package/.next-prod/server/app/api/chat/codex/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/chat/deepseek/route.js +1 -1
- package/.next-prod/server/app/api/chat/deepseek/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/chat/glm/route.js +1 -1
- package/.next-prod/server/app/api/chat/glm/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/chat/kimi/route.js +1 -1
- package/.next-prod/server/app/api/chat/kimi/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/chat/ollama/route.js +1 -1
- package/.next-prod/server/app/api/chat/ollama/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/chat/route.js +1 -1
- package/.next-prod/server/app/api/chat/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/chat/stop/route.js +1 -1
- package/.next-prod/server/app/api/chat/stop/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/claude-stats/route.js +1 -1
- package/.next-prod/server/app/api/claude-stats/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/commands/route.js +1 -1
- package/.next-prod/server/app/api/commands/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/comments/route.js +1 -1
- package/.next-prod/server/app/api/comments/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/db/columns/route.js +1 -1
- package/.next-prod/server/app/api/db/columns/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/db/connect/route.js +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 +2 -2
- package/.next-prod/server/app/api/db/schemas/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/deepseek/balance/route.js +1 -1
- package/.next-prod/server/app/api/deepseek/balance/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/deepseek/credentials/route.js +1 -1
- package/.next-prod/server/app/api/deepseek/credentials/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/deepseek/models/route.js +1 -1
- package/.next-prod/server/app/api/deepseek/models/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/dev/spans/route.js +1 -1
- package/.next-prod/server/app/api/dev/spans/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/extension/version/route.js +1 -1
- package/.next-prod/server/app/api/extension/version/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/file/route.js +1 -1
- package/.next-prod/server/app/api/file/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/files/blame/route.js +1 -1
- package/.next-prod/server/app/api/files/blame/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/files/clipboard/route.js +1 -1
- package/.next-prod/server/app/api/files/clipboard/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/files/copy/route.js +1 -1
- package/.next-prod/server/app/api/files/copy/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/files/delete/route.js +1 -1
- package/.next-prod/server/app/api/files/delete/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/files/expanded/route.js +1 -1
- package/.next-prod/server/app/api/files/expanded/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/files/index/route.js +1 -1
- package/.next-prod/server/app/api/files/index/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/files/init/route.js +1 -1
- package/.next-prod/server/app/api/files/init/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/files/paste/route.js +1 -1
- package/.next-prod/server/app/api/files/paste/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/files/read/route.js +1 -1
- package/.next-prod/server/app/api/files/read/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/files/readdir/route.js +1 -1
- package/.next-prod/server/app/api/files/readdir/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/files/recent/route.js +1 -1
- package/.next-prod/server/app/api/files/recent/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/files/save/route.js +1 -1
- package/.next-prod/server/app/api/files/save/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/files/search/route.js +1 -1
- package/.next-prod/server/app/api/files/search/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/files/stat/route.js +1 -1
- package/.next-prod/server/app/api/files/stat/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/files/text/route.js +1 -1
- package/.next-prod/server/app/api/files/text/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/git/branch-diff/route.js +1 -1
- package/.next-prod/server/app/api/git/branch-diff/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/git/branches/route.js +1 -1
- package/.next-prod/server/app/api/git/branches/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/git/commit-diff/route.js +1 -1
- package/.next-prod/server/app/api/git/commit-diff/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/git/commits/route.js +1 -1
- package/.next-prod/server/app/api/git/commits/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/git/current-branch/route.js +1 -1
- package/.next-prod/server/app/api/git/current-branch/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/git/diff/route.js +1 -1
- package/.next-prod/server/app/api/git/diff/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/git/discard/route.js +1 -1
- package/.next-prod/server/app/api/git/discard/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/git/stage/route.js +1 -1
- package/.next-prod/server/app/api/git/stage/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/git/status/route.js +1 -1
- package/.next-prod/server/app/api/git/status/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/git/unstage/route.js +1 -1
- package/.next-prod/server/app/api/git/unstage/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/git/worktree/route.js +1 -1
- package/.next-prod/server/app/api/git/worktree/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/glm/credentials/route.js +1 -1
- package/.next-prod/server/app/api/glm/credentials/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/glm/models/route.js +1 -1
- package/.next-prod/server/app/api/glm/models/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/glm/usage/route.js +1 -1
- package/.next-prod/server/app/api/glm/usage/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/global-state/route.js +1 -1
- package/.next-prod/server/app/api/global-state/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/health/route.js +1 -1
- package/.next-prod/server/app/api/health/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/html-apps/[id]/route.js +1 -1
- package/.next-prod/server/app/api/html-apps/[id]/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/html-apps/route.js +1 -1
- package/.next-prod/server/app/api/html-apps/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/jupyter/load/route.js +1 -1
- package/.next-prod/server/app/api/jupyter/load/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/jupyter/save/route.js +1 -1
- package/.next-prod/server/app/api/jupyter/save/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/jupyter/shutdown/route.js +1 -1
- package/.next-prod/server/app/api/jupyter/shutdown/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/kimi/credentials/route.js +1 -1
- package/.next-prod/server/app/api/kimi/credentials/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/kimi/models/route.js +1 -1
- package/.next-prod/server/app/api/kimi/models/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/kimi/usage/route.js +1 -1
- package/.next-prod/server/app/api/kimi/usage/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/lsp/definition/route.js +1 -1
- package/.next-prod/server/app/api/lsp/definition/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/lsp/hover/route.js +1 -1
- package/.next-prod/server/app/api/lsp/hover/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/lsp/references/route.js +1 -1
- package/.next-prod/server/app/api/lsp/references/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/lsp/status/route.js +1 -1
- package/.next-prod/server/app/api/lsp/status/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/lsp/warmup/route.js +1 -1
- package/.next-prod/server/app/api/lsp/warmup/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/mysql/columns/route.js +2 -2
- 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/config/route.js +1 -1
- package/.next-prod/server/app/api/ollama/config/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/ollama/models/route.js +1 -1
- package/.next-prod/server/app/api/ollama/models/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/ollama/start/route.js +1 -1
- package/.next-prod/server/app/api/ollama/start/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/open-cursor/route.js +1 -1
- package/.next-prod/server/app/api/open-cursor/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/open-vscode/route.js +1 -1
- package/.next-prod/server/app/api/open-vscode/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/pick-folder/route.js +1 -1
- package/.next-prod/server/app/api/pick-folder/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/pinned-sessions/route.js +1 -1
- package/.next-prod/server/app/api/pinned-sessions/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/project-settings/route.js +1 -1
- package/.next-prod/server/app/api/project-settings/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/project-state/route.js +2 -2
- package/.next-prod/server/app/api/project-state/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/projectGraph/affected/route.js +1 -1
- package/.next-prod/server/app/api/projectGraph/affected/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/projectGraph/callees/route.js +1 -1
- package/.next-prod/server/app/api/projectGraph/callees/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/projectGraph/callers/route.js +1 -1
- package/.next-prod/server/app/api/projectGraph/callers/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/projectGraph/coedit/route.js +1 -1
- package/.next-prod/server/app/api/projectGraph/coedit/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/projectGraph/context/route.js +1 -1
- package/.next-prod/server/app/api/projectGraph/context/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/projectGraph/file/route.js +1 -1
- package/.next-prod/server/app/api/projectGraph/file/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/projectGraph/file-functions/route.js +1 -1
- package/.next-prod/server/app/api/projectGraph/file-functions/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/projectGraph/impact/route.js +1 -1
- package/.next-prod/server/app/api/projectGraph/impact/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/projectGraph/related/route.js +1 -1
- package/.next-prod/server/app/api/projectGraph/related/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/projectGraph/risk/route.js +1 -1
- package/.next-prod/server/app/api/projectGraph/risk/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/projectGraph/search/route.js +1 -1
- package/.next-prod/server/app/api/projectGraph/search/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/projects/route.js +1 -1
- package/.next-prod/server/app/api/projects/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/prompts/config/route.js +1 -1
- package/.next-prod/server/app/api/prompts/config/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/push/public-key/route.js +1 -1
- package/.next-prod/server/app/api/push/public-key/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/push/subscribe/route.js +1 -1
- package/.next-prod/server/app/api/push/subscribe/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/push/unsubscribe/route.js +1 -1
- package/.next-prod/server/app/api/push/unsubscribe/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/redis/command/route.js +1 -1
- package/.next-prod/server/app/api/redis/command/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/redis/connect/route.js +1 -1
- package/.next-prod/server/app/api/redis/connect/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/redis/delete/route.js +1 -1
- package/.next-prod/server/app/api/redis/delete/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/redis/disconnect/route.js +1 -1
- package/.next-prod/server/app/api/redis/disconnect/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/redis/get/route.js +1 -1
- package/.next-prod/server/app/api/redis/get/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/redis/keys/route.js +1 -1
- package/.next-prod/server/app/api/redis/keys/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/redis/set/route.js +1 -1
- package/.next-prod/server/app/api/redis/set/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/restart/route.js +1 -0
- package/.next-prod/server/app/api/restart/route.js.nft.json +1 -0
- package/.next-prod/server/app/api/restart/route_client-reference-manifest.js +1 -0
- package/.next-prod/server/app/api/review/[id]/comments/route.js +1 -1
- package/.next-prod/server/app/api/review/[id]/comments/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/review/[id]/replies/route.js +1 -1
- package/.next-prod/server/app/api/review/[id]/replies/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/review/[id]/route.js +1 -1
- package/.next-prod/server/app/api/review/[id]/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/review/identify/route.js +1 -1
- package/.next-prod/server/app/api/review/identify/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/review/order/route.js +1 -1
- package/.next-prod/server/app/api/review/order/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/review/route.js +1 -1
- package/.next-prod/server/app/api/review/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/review/share-info/route.js +1 -1
- package/.next-prod/server/app/api/review/share-info/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/review/users/route.js +1 -1
- package/.next-prod/server/app/api/review/users/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/scheduled-tasks/route.js +2 -2
- package/.next-prod/server/app/api/scheduled-tasks/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/services/config/route.js +1 -1
- package/.next-prod/server/app/api/services/config/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/services/scripts/route.js +1 -1
- package/.next-prod/server/app/api/services/scripts/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/session/[sessionId]/fork/route.js +1 -1
- package/.next-prod/server/app/api/session/[sessionId]/fork/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/session/[sessionId]/history/route.js +1 -1
- package/.next-prod/server/app/api/session/[sessionId]/history/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/session-by-path/route.js +1 -1
- package/.next-prod/server/app/api/session-by-path/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/sessions/projects/[encodedPath]/route.js +1 -1
- package/.next-prod/server/app/api/sessions/projects/[encodedPath]/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/sessions/projects/route.js +1 -1
- package/.next-prod/server/app/api/sessions/projects/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/sessions/route.js +1 -1
- package/.next-prod/server/app/api/sessions/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/settings/route.js +1 -1
- package/.next-prod/server/app/api/settings/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/shutdown/route.js +1 -0
- package/.next-prod/server/app/api/shutdown/route.js.nft.json +1 -0
- package/.next-prod/server/app/api/shutdown/route_client-reference-manifest.js +1 -0
- package/.next-prod/server/app/api/skills/[id]/route.js +1 -1
- package/.next-prod/server/app/api/skills/[id]/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/skills/content/route.js +1 -1
- package/.next-prod/server/app/api/skills/content/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/skills/route.js +1 -1
- package/.next-prod/server/app/api/skills/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/snapshots/diff/route.js +1 -1
- package/.next-prod/server/app/api/snapshots/diff/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/snapshots/route.js +1 -1
- package/.next-prod/server/app/api/snapshots/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/terminal/aliases/route.js +1 -1
- package/.next-prod/server/app/api/terminal/aliases/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/terminal/autocomplete/route.js +1 -1
- package/.next-prod/server/app/api/terminal/autocomplete/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/terminal/bubble-order/route.js +1 -1
- package/.next-prod/server/app/api/terminal/bubble-order/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/terminal/env/route.js +1 -1
- package/.next-prod/server/app/api/terminal/env/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/terminal/history/route.js +1 -1
- package/.next-prod/server/app/api/terminal/history/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/update/route.js +1 -0
- package/.next-prod/server/app/api/update/route.js.nft.json +1 -0
- package/.next-prod/server/app/api/update/route_client-reference-manifest.js +1 -0
- package/.next-prod/server/app/api/version/route.js +1 -1
- package/.next-prod/server/app/api/version/route.js.nft.json +1 -1
- package/.next-prod/server/app/apps/[...path]/route.js +1 -1
- package/.next-prod/server/app/apps/[...path]/route.js.nft.json +1 -1
- package/.next-prod/server/app/favicon.ico/route.js +1 -1
- package/.next-prod/server/app/favicon.ico/route.js.nft.json +1 -1
- package/.next-prod/server/app/m/page.js +1 -1
- package/.next-prod/server/app/m/page.js.nft.json +1 -1
- package/.next-prod/server/app/m/page_client-reference-manifest.js +1 -1
- package/.next-prod/server/app/manifest.webmanifest/route.js +2 -2
- package/.next-prod/server/app/manifest.webmanifest/route.js.nft.json +1 -1
- package/.next-prod/server/app/page.js +1 -1
- package/.next-prod/server/app/page.js.nft.json +1 -1
- package/.next-prod/server/app/page_client-reference-manifest.js +1 -1
- package/.next-prod/server/app/project/page.js +1 -1
- package/.next-prod/server/app/project/page.js.nft.json +1 -1
- package/.next-prod/server/app/project/page_client-reference-manifest.js +1 -1
- package/.next-prod/server/app/review/[id]/page.js +1 -1
- package/.next-prod/server/app/review/[id]/page.js.nft.json +1 -1
- package/.next-prod/server/app/review/[id]/page_client-reference-manifest.js +1 -1
- package/.next-prod/server/app-paths-manifest.json +7 -4
- package/.next-prod/server/chunks/516.js +1 -0
- package/.next-prod/server/chunks/5750.js +16 -13
- package/.next-prod/server/chunks/6495.js +1 -1
- package/.next-prod/server/chunks/6548.js +1 -1
- package/.next-prod/server/chunks/7184.js +1 -1
- package/.next-prod/server/chunks/841.js +1 -1
- package/.next-prod/server/chunks/9352.js +2 -2
- package/.next-prod/server/functions-config-manifest.json +3 -0
- package/.next-prod/server/middleware-build-manifest.js +1 -1
- package/.next-prod/server/pages/404.html +2 -2
- package/.next-prod/server/pages/500.html +1 -1
- package/.next-prod/server/server-reference-manifest.json +1 -1
- package/.next-prod/static/chunks/{1372-d16d68b1b03a345a.js → 1372-a26fa30d21bd1ecc.js} +1 -1
- package/.next-prod/static/chunks/5400-bf3fe22440a73161.js +36 -0
- package/.next-prod/static/chunks/6784-d51b98432358f755.js +381 -0
- package/.next-prod/static/chunks/app/_global-error/page-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/chunks/app/api/agent/test/route-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/chunks/app/api/bash/route-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/chunks/app/api/chat/codex/route-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/chunks/app/api/chat/deepseek/route-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/chunks/app/api/chat/glm/route-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/chunks/app/api/chat/kimi/route-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/chunks/app/api/chat/ollama/route-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/chunks/app/api/chat/route-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/chunks/app/api/chat/stop/route-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/chunks/app/api/claude-stats/route-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/chunks/app/api/commands/route-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/chunks/app/api/comments/route-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/chunks/app/api/db/columns/route-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/chunks/app/api/db/connect/route-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/chunks/app/api/db/disconnect/route-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/chunks/app/api/db/export/route-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/chunks/app/api/db/query/route-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/chunks/app/api/db/schemas/route-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/chunks/app/api/deepseek/balance/route-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/chunks/app/api/deepseek/credentials/route-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/chunks/app/api/deepseek/models/route-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/chunks/app/api/dev/spans/route-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/chunks/app/api/extension/version/route-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/chunks/app/api/file/route-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/chunks/app/api/files/blame/route-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/chunks/app/api/files/clipboard/route-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/chunks/app/api/files/copy/route-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/chunks/app/api/files/delete/route-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/chunks/app/api/files/expanded/route-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/chunks/app/api/files/index/route-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/chunks/app/api/files/init/route-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/chunks/app/api/files/paste/route-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/chunks/app/api/files/read/route-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/chunks/app/api/files/readdir/route-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/chunks/app/api/files/recent/route-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/chunks/app/api/files/save/route-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/chunks/app/api/files/search/route-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/chunks/app/api/files/stat/route-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/chunks/app/api/files/text/route-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/chunks/app/api/git/branch-diff/route-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/chunks/app/api/git/branches/route-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/chunks/app/api/git/commit-diff/route-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/chunks/app/api/git/commits/route-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/chunks/app/api/git/current-branch/route-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/chunks/app/api/git/diff/route-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/chunks/app/api/git/discard/route-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/chunks/app/api/git/stage/route-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/chunks/app/api/git/status/route-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/chunks/app/api/git/unstage/route-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/chunks/app/api/git/worktree/route-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/chunks/app/api/glm/credentials/route-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/chunks/app/api/glm/models/route-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/chunks/app/api/glm/usage/route-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/chunks/app/api/global-state/route-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/chunks/app/api/health/route-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/chunks/app/api/html-apps/[id]/route-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/chunks/app/api/html-apps/route-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/chunks/app/api/jupyter/load/route-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/chunks/app/api/jupyter/save/route-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/chunks/app/api/jupyter/shutdown/route-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/chunks/app/api/kimi/credentials/route-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/chunks/app/api/kimi/models/route-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/chunks/app/api/kimi/usage/route-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/chunks/app/api/lsp/definition/route-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/chunks/app/api/lsp/hover/route-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/chunks/app/api/lsp/references/route-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/chunks/app/api/lsp/status/route-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/chunks/app/api/lsp/warmup/route-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/chunks/app/api/mysql/columns/route-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/chunks/app/api/mysql/connect/route-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/chunks/app/api/mysql/disconnect/route-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/chunks/app/api/mysql/export/route-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/chunks/app/api/mysql/query/route-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/chunks/app/api/mysql/schemas/route-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/chunks/app/api/neo4j/connect/route-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/chunks/app/api/neo4j/disconnect/route-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/chunks/app/api/neo4j/query/route-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/chunks/app/api/neo4j/schema/route-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/chunks/app/api/note/route-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/chunks/app/api/ollama/config/route-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/chunks/app/api/ollama/models/route-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/chunks/app/api/ollama/start/route-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/chunks/app/api/open-cursor/route-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/chunks/app/api/open-vscode/route-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/chunks/app/api/pick-folder/route-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/chunks/app/api/pinned-sessions/route-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/chunks/app/api/project-settings/route-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/chunks/app/api/project-state/route-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/chunks/app/api/projectGraph/affected/route-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/chunks/app/api/projectGraph/callees/route-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/chunks/app/api/projectGraph/callers/route-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/chunks/app/api/projectGraph/coedit/route-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/chunks/app/api/projectGraph/context/route-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/chunks/app/api/projectGraph/file/route-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/chunks/app/api/projectGraph/file-functions/route-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/chunks/app/api/projectGraph/impact/route-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/chunks/app/api/projectGraph/related/route-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/chunks/app/api/projectGraph/risk/route-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/chunks/app/api/projectGraph/search/route-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/chunks/app/api/projects/route-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/chunks/app/api/prompts/config/route-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/chunks/app/api/push/public-key/route-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/chunks/app/api/push/subscribe/route-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/chunks/app/api/push/unsubscribe/route-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/chunks/app/api/redis/command/route-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/chunks/app/api/redis/connect/route-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/chunks/app/api/redis/delete/route-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/chunks/app/api/redis/disconnect/route-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/chunks/app/api/redis/get/route-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/chunks/app/api/redis/keys/route-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/chunks/app/api/redis/set/route-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/chunks/app/api/restart/route-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/chunks/app/api/review/[id]/comments/route-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/chunks/app/api/review/[id]/replies/route-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/chunks/app/api/review/[id]/route-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/chunks/app/api/review/identify/route-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/chunks/app/api/review/order/route-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/chunks/app/api/review/route-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/chunks/app/api/review/share-info/route-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/chunks/app/api/review/users/route-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/chunks/app/api/scheduled-tasks/route-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/chunks/app/api/services/config/route-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/chunks/app/api/services/scripts/route-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/chunks/app/api/session/[sessionId]/fork/route-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/chunks/app/api/session/[sessionId]/history/route-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/chunks/app/api/session-by-path/route-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/chunks/app/api/sessions/projects/[encodedPath]/route-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/chunks/app/api/sessions/projects/route-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/chunks/app/api/sessions/route-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/chunks/app/api/settings/route-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/chunks/app/api/shutdown/route-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/chunks/app/api/skills/[id]/route-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/chunks/app/api/skills/content/route-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/chunks/app/api/skills/route-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/chunks/app/api/snapshots/diff/route-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/chunks/app/api/snapshots/route-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/chunks/app/api/terminal/aliases/route-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/chunks/app/api/terminal/autocomplete/route-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/chunks/app/api/terminal/bubble-order/route-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/chunks/app/api/terminal/env/route-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/chunks/app/api/terminal/history/route-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/chunks/app/api/update/route-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/chunks/app/api/version/route-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/chunks/app/apps/[...path]/route-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/chunks/app/{layout-ab52fc1a83af968b.js → layout-7b31e254e348e208.js} +1 -1
- package/.next-prod/static/chunks/app/manifest.webmanifest/route-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/chunks/app/{page-5de8b6584e328a6f.js → page-cb0d12250512641d.js} +1 -1
- package/.next-prod/static/chunks/app/project/{page-5de8b6584e328a6f.js → page-cb0d12250512641d.js} +1 -1
- package/.next-prod/static/chunks/next/dist/client/components/builtin/app-error-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/chunks/next/dist/client/components/builtin/forbidden-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/chunks/next/dist/client/components/builtin/not-found-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/chunks/next/dist/client/components/builtin/unauthorized-7c7e4c414aa6453c.js +1 -0
- package/.next-prod/static/css/38ad6f470b64a40f.css +1 -0
- package/.next-prod/static/noNfrQRJFchmZSWx_yn1K/_buildManifest.js +1 -0
- package/.next-prod/trace +14 -14
- package/.next-prod/trace-build +1 -1
- package/.next-prod/types/app/api/restart/route.ts +353 -0
- package/.next-prod/types/app/api/shutdown/route.ts +353 -0
- package/.next-prod/types/app/api/update/route.ts +353 -0
- package/.next-prod/types/routes.d.ts +4 -1
- package/.next-prod/types/validator.ts +27 -0
- package/README.md +75 -0
- package/README.zh.md +64 -0
- package/apps/devkit/app.jsx +20 -18
- package/bin/cock-service.mjs +498 -0
- package/bin/cock.mjs +35 -27
- package/bin/cockpitHome.mjs +33 -0
- package/bin/rotateLog.mjs +52 -0
- package/bin/updater.mjs +231 -0
- package/dist/{chunk-CLPJYIFC.mjs → chunk-AI7T3EXM.mjs} +4 -3
- package/dist/{chunk-B5LXMESP.mjs → chunk-LC4LAEWJ.mjs} +1 -1
- package/dist/{chunk-TU3GL2HK.mjs → chunk-ZCMAJV2M.mjs} +15 -4
- package/dist/httpApi.mjs +2 -2
- package/dist/scheduledTasks.mjs +61 -7
- package/dist/{server-2UJDVZ32.mjs → server-CQXVJT3F.mjs} +2 -2
- package/dist/wsServer.mjs +144 -112
- package/package.json +1 -1
- package/server.mjs +127 -11
- package/.next-prod/server/chunks/151.js +0 -1
- package/.next-prod/static/4Jgc-wu2w_CC8iS5G1QZf/_buildManifest.js +0 -1
- package/.next-prod/static/chunks/1157-164bcf046a0a9b15.js +0 -32
- package/.next-prod/static/chunks/6784-09dffdb0e8ca7fb3.js +0 -381
- package/.next-prod/static/chunks/app/_global-error/page-3c1c06e2de280418.js +0 -1
- package/.next-prod/static/chunks/app/api/agent/test/route-3c1c06e2de280418.js +0 -1
- package/.next-prod/static/chunks/app/api/bash/route-3c1c06e2de280418.js +0 -1
- package/.next-prod/static/chunks/app/api/chat/codex/route-3c1c06e2de280418.js +0 -1
- package/.next-prod/static/chunks/app/api/chat/deepseek/route-3c1c06e2de280418.js +0 -1
- package/.next-prod/static/chunks/app/api/chat/glm/route-3c1c06e2de280418.js +0 -1
- package/.next-prod/static/chunks/app/api/chat/kimi/route-3c1c06e2de280418.js +0 -1
- package/.next-prod/static/chunks/app/api/chat/ollama/route-3c1c06e2de280418.js +0 -1
- package/.next-prod/static/chunks/app/api/chat/route-3c1c06e2de280418.js +0 -1
- package/.next-prod/static/chunks/app/api/chat/stop/route-3c1c06e2de280418.js +0 -1
- package/.next-prod/static/chunks/app/api/claude-stats/route-3c1c06e2de280418.js +0 -1
- package/.next-prod/static/chunks/app/api/commands/route-3c1c06e2de280418.js +0 -1
- package/.next-prod/static/chunks/app/api/comments/route-3c1c06e2de280418.js +0 -1
- package/.next-prod/static/chunks/app/api/db/columns/route-3c1c06e2de280418.js +0 -1
- package/.next-prod/static/chunks/app/api/db/connect/route-3c1c06e2de280418.js +0 -1
- package/.next-prod/static/chunks/app/api/db/disconnect/route-3c1c06e2de280418.js +0 -1
- package/.next-prod/static/chunks/app/api/db/export/route-3c1c06e2de280418.js +0 -1
- package/.next-prod/static/chunks/app/api/db/query/route-3c1c06e2de280418.js +0 -1
- package/.next-prod/static/chunks/app/api/db/schemas/route-3c1c06e2de280418.js +0 -1
- package/.next-prod/static/chunks/app/api/deepseek/balance/route-3c1c06e2de280418.js +0 -1
- package/.next-prod/static/chunks/app/api/deepseek/credentials/route-3c1c06e2de280418.js +0 -1
- package/.next-prod/static/chunks/app/api/deepseek/models/route-3c1c06e2de280418.js +0 -1
- package/.next-prod/static/chunks/app/api/dev/spans/route-3c1c06e2de280418.js +0 -1
- package/.next-prod/static/chunks/app/api/extension/version/route-3c1c06e2de280418.js +0 -1
- package/.next-prod/static/chunks/app/api/file/route-3c1c06e2de280418.js +0 -1
- package/.next-prod/static/chunks/app/api/files/blame/route-3c1c06e2de280418.js +0 -1
- package/.next-prod/static/chunks/app/api/files/clipboard/route-3c1c06e2de280418.js +0 -1
- package/.next-prod/static/chunks/app/api/files/copy/route-3c1c06e2de280418.js +0 -1
- package/.next-prod/static/chunks/app/api/files/delete/route-3c1c06e2de280418.js +0 -1
- package/.next-prod/static/chunks/app/api/files/expanded/route-3c1c06e2de280418.js +0 -1
- package/.next-prod/static/chunks/app/api/files/index/route-3c1c06e2de280418.js +0 -1
- package/.next-prod/static/chunks/app/api/files/init/route-3c1c06e2de280418.js +0 -1
- package/.next-prod/static/chunks/app/api/files/paste/route-3c1c06e2de280418.js +0 -1
- package/.next-prod/static/chunks/app/api/files/read/route-3c1c06e2de280418.js +0 -1
- package/.next-prod/static/chunks/app/api/files/readdir/route-3c1c06e2de280418.js +0 -1
- package/.next-prod/static/chunks/app/api/files/recent/route-3c1c06e2de280418.js +0 -1
- package/.next-prod/static/chunks/app/api/files/save/route-3c1c06e2de280418.js +0 -1
- package/.next-prod/static/chunks/app/api/files/search/route-3c1c06e2de280418.js +0 -1
- package/.next-prod/static/chunks/app/api/files/stat/route-3c1c06e2de280418.js +0 -1
- package/.next-prod/static/chunks/app/api/files/text/route-3c1c06e2de280418.js +0 -1
- package/.next-prod/static/chunks/app/api/git/branch-diff/route-3c1c06e2de280418.js +0 -1
- package/.next-prod/static/chunks/app/api/git/branches/route-3c1c06e2de280418.js +0 -1
- package/.next-prod/static/chunks/app/api/git/commit-diff/route-3c1c06e2de280418.js +0 -1
- package/.next-prod/static/chunks/app/api/git/commits/route-3c1c06e2de280418.js +0 -1
- package/.next-prod/static/chunks/app/api/git/current-branch/route-3c1c06e2de280418.js +0 -1
- package/.next-prod/static/chunks/app/api/git/diff/route-3c1c06e2de280418.js +0 -1
- package/.next-prod/static/chunks/app/api/git/discard/route-3c1c06e2de280418.js +0 -1
- package/.next-prod/static/chunks/app/api/git/stage/route-3c1c06e2de280418.js +0 -1
- package/.next-prod/static/chunks/app/api/git/status/route-3c1c06e2de280418.js +0 -1
- package/.next-prod/static/chunks/app/api/git/unstage/route-3c1c06e2de280418.js +0 -1
- package/.next-prod/static/chunks/app/api/git/worktree/route-3c1c06e2de280418.js +0 -1
- package/.next-prod/static/chunks/app/api/glm/credentials/route-3c1c06e2de280418.js +0 -1
- package/.next-prod/static/chunks/app/api/glm/models/route-3c1c06e2de280418.js +0 -1
- package/.next-prod/static/chunks/app/api/glm/usage/route-3c1c06e2de280418.js +0 -1
- package/.next-prod/static/chunks/app/api/global-state/route-3c1c06e2de280418.js +0 -1
- package/.next-prod/static/chunks/app/api/health/route-3c1c06e2de280418.js +0 -1
- package/.next-prod/static/chunks/app/api/html-apps/[id]/route-3c1c06e2de280418.js +0 -1
- package/.next-prod/static/chunks/app/api/html-apps/route-3c1c06e2de280418.js +0 -1
- package/.next-prod/static/chunks/app/api/jupyter/load/route-3c1c06e2de280418.js +0 -1
- package/.next-prod/static/chunks/app/api/jupyter/save/route-3c1c06e2de280418.js +0 -1
- package/.next-prod/static/chunks/app/api/jupyter/shutdown/route-3c1c06e2de280418.js +0 -1
- package/.next-prod/static/chunks/app/api/kimi/credentials/route-3c1c06e2de280418.js +0 -1
- package/.next-prod/static/chunks/app/api/kimi/models/route-3c1c06e2de280418.js +0 -1
- package/.next-prod/static/chunks/app/api/kimi/usage/route-3c1c06e2de280418.js +0 -1
- package/.next-prod/static/chunks/app/api/lsp/definition/route-3c1c06e2de280418.js +0 -1
- package/.next-prod/static/chunks/app/api/lsp/hover/route-3c1c06e2de280418.js +0 -1
- package/.next-prod/static/chunks/app/api/lsp/references/route-3c1c06e2de280418.js +0 -1
- package/.next-prod/static/chunks/app/api/lsp/status/route-3c1c06e2de280418.js +0 -1
- package/.next-prod/static/chunks/app/api/lsp/warmup/route-3c1c06e2de280418.js +0 -1
- package/.next-prod/static/chunks/app/api/mysql/columns/route-3c1c06e2de280418.js +0 -1
- package/.next-prod/static/chunks/app/api/mysql/connect/route-3c1c06e2de280418.js +0 -1
- package/.next-prod/static/chunks/app/api/mysql/disconnect/route-3c1c06e2de280418.js +0 -1
- package/.next-prod/static/chunks/app/api/mysql/export/route-3c1c06e2de280418.js +0 -1
- package/.next-prod/static/chunks/app/api/mysql/query/route-3c1c06e2de280418.js +0 -1
- package/.next-prod/static/chunks/app/api/mysql/schemas/route-3c1c06e2de280418.js +0 -1
- package/.next-prod/static/chunks/app/api/neo4j/connect/route-3c1c06e2de280418.js +0 -1
- package/.next-prod/static/chunks/app/api/neo4j/disconnect/route-3c1c06e2de280418.js +0 -1
- package/.next-prod/static/chunks/app/api/neo4j/query/route-3c1c06e2de280418.js +0 -1
- package/.next-prod/static/chunks/app/api/neo4j/schema/route-3c1c06e2de280418.js +0 -1
- package/.next-prod/static/chunks/app/api/note/route-3c1c06e2de280418.js +0 -1
- package/.next-prod/static/chunks/app/api/ollama/config/route-3c1c06e2de280418.js +0 -1
- package/.next-prod/static/chunks/app/api/ollama/models/route-3c1c06e2de280418.js +0 -1
- package/.next-prod/static/chunks/app/api/ollama/start/route-3c1c06e2de280418.js +0 -1
- package/.next-prod/static/chunks/app/api/open-cursor/route-3c1c06e2de280418.js +0 -1
- package/.next-prod/static/chunks/app/api/open-vscode/route-3c1c06e2de280418.js +0 -1
- package/.next-prod/static/chunks/app/api/pick-folder/route-3c1c06e2de280418.js +0 -1
- package/.next-prod/static/chunks/app/api/pinned-sessions/route-3c1c06e2de280418.js +0 -1
- package/.next-prod/static/chunks/app/api/project-settings/route-3c1c06e2de280418.js +0 -1
- package/.next-prod/static/chunks/app/api/project-state/route-3c1c06e2de280418.js +0 -1
- package/.next-prod/static/chunks/app/api/projectGraph/affected/route-3c1c06e2de280418.js +0 -1
- package/.next-prod/static/chunks/app/api/projectGraph/callees/route-3c1c06e2de280418.js +0 -1
- package/.next-prod/static/chunks/app/api/projectGraph/callers/route-3c1c06e2de280418.js +0 -1
- package/.next-prod/static/chunks/app/api/projectGraph/coedit/route-3c1c06e2de280418.js +0 -1
- package/.next-prod/static/chunks/app/api/projectGraph/context/route-3c1c06e2de280418.js +0 -1
- package/.next-prod/static/chunks/app/api/projectGraph/file/route-3c1c06e2de280418.js +0 -1
- package/.next-prod/static/chunks/app/api/projectGraph/file-functions/route-3c1c06e2de280418.js +0 -1
- package/.next-prod/static/chunks/app/api/projectGraph/impact/route-3c1c06e2de280418.js +0 -1
- package/.next-prod/static/chunks/app/api/projectGraph/related/route-3c1c06e2de280418.js +0 -1
- package/.next-prod/static/chunks/app/api/projectGraph/risk/route-3c1c06e2de280418.js +0 -1
- package/.next-prod/static/chunks/app/api/projectGraph/search/route-3c1c06e2de280418.js +0 -1
- package/.next-prod/static/chunks/app/api/projects/route-3c1c06e2de280418.js +0 -1
- package/.next-prod/static/chunks/app/api/prompts/config/route-3c1c06e2de280418.js +0 -1
- package/.next-prod/static/chunks/app/api/push/public-key/route-3c1c06e2de280418.js +0 -1
- package/.next-prod/static/chunks/app/api/push/subscribe/route-3c1c06e2de280418.js +0 -1
- package/.next-prod/static/chunks/app/api/push/unsubscribe/route-3c1c06e2de280418.js +0 -1
- package/.next-prod/static/chunks/app/api/redis/command/route-3c1c06e2de280418.js +0 -1
- package/.next-prod/static/chunks/app/api/redis/connect/route-3c1c06e2de280418.js +0 -1
- package/.next-prod/static/chunks/app/api/redis/delete/route-3c1c06e2de280418.js +0 -1
- package/.next-prod/static/chunks/app/api/redis/disconnect/route-3c1c06e2de280418.js +0 -1
- package/.next-prod/static/chunks/app/api/redis/get/route-3c1c06e2de280418.js +0 -1
- package/.next-prod/static/chunks/app/api/redis/keys/route-3c1c06e2de280418.js +0 -1
- package/.next-prod/static/chunks/app/api/redis/set/route-3c1c06e2de280418.js +0 -1
- package/.next-prod/static/chunks/app/api/review/[id]/comments/route-3c1c06e2de280418.js +0 -1
- package/.next-prod/static/chunks/app/api/review/[id]/replies/route-3c1c06e2de280418.js +0 -1
- package/.next-prod/static/chunks/app/api/review/[id]/route-3c1c06e2de280418.js +0 -1
- package/.next-prod/static/chunks/app/api/review/identify/route-3c1c06e2de280418.js +0 -1
- package/.next-prod/static/chunks/app/api/review/order/route-3c1c06e2de280418.js +0 -1
- package/.next-prod/static/chunks/app/api/review/route-3c1c06e2de280418.js +0 -1
- package/.next-prod/static/chunks/app/api/review/share-info/route-3c1c06e2de280418.js +0 -1
- package/.next-prod/static/chunks/app/api/review/users/route-3c1c06e2de280418.js +0 -1
- package/.next-prod/static/chunks/app/api/scheduled-tasks/route-3c1c06e2de280418.js +0 -1
- package/.next-prod/static/chunks/app/api/services/config/route-3c1c06e2de280418.js +0 -1
- package/.next-prod/static/chunks/app/api/services/scripts/route-3c1c06e2de280418.js +0 -1
- package/.next-prod/static/chunks/app/api/session/[sessionId]/fork/route-3c1c06e2de280418.js +0 -1
- package/.next-prod/static/chunks/app/api/session/[sessionId]/history/route-3c1c06e2de280418.js +0 -1
- package/.next-prod/static/chunks/app/api/session-by-path/route-3c1c06e2de280418.js +0 -1
- package/.next-prod/static/chunks/app/api/sessions/projects/[encodedPath]/route-3c1c06e2de280418.js +0 -1
- package/.next-prod/static/chunks/app/api/sessions/projects/route-3c1c06e2de280418.js +0 -1
- package/.next-prod/static/chunks/app/api/sessions/route-3c1c06e2de280418.js +0 -1
- package/.next-prod/static/chunks/app/api/settings/route-3c1c06e2de280418.js +0 -1
- package/.next-prod/static/chunks/app/api/skills/[id]/route-3c1c06e2de280418.js +0 -1
- package/.next-prod/static/chunks/app/api/skills/content/route-3c1c06e2de280418.js +0 -1
- package/.next-prod/static/chunks/app/api/skills/route-3c1c06e2de280418.js +0 -1
- package/.next-prod/static/chunks/app/api/snapshots/diff/route-3c1c06e2de280418.js +0 -1
- package/.next-prod/static/chunks/app/api/snapshots/route-3c1c06e2de280418.js +0 -1
- package/.next-prod/static/chunks/app/api/terminal/aliases/route-3c1c06e2de280418.js +0 -1
- package/.next-prod/static/chunks/app/api/terminal/autocomplete/route-3c1c06e2de280418.js +0 -1
- package/.next-prod/static/chunks/app/api/terminal/bubble-order/route-3c1c06e2de280418.js +0 -1
- package/.next-prod/static/chunks/app/api/terminal/env/route-3c1c06e2de280418.js +0 -1
- package/.next-prod/static/chunks/app/api/terminal/history/route-3c1c06e2de280418.js +0 -1
- package/.next-prod/static/chunks/app/api/version/route-3c1c06e2de280418.js +0 -1
- package/.next-prod/static/chunks/app/apps/[...path]/route-3c1c06e2de280418.js +0 -1
- package/.next-prod/static/chunks/app/manifest.webmanifest/route-3c1c06e2de280418.js +0 -1
- package/.next-prod/static/chunks/next/dist/client/components/builtin/app-error-3c1c06e2de280418.js +0 -1
- package/.next-prod/static/chunks/next/dist/client/components/builtin/forbidden-3c1c06e2de280418.js +0 -1
- package/.next-prod/static/chunks/next/dist/client/components/builtin/not-found-3c1c06e2de280418.js +0 -1
- package/.next-prod/static/chunks/next/dist/client/components/builtin/unauthorized-3c1c06e2de280418.js +0 -1
- package/.next-prod/static/css/83c134c954630942.css +0 -1
- /package/.next-prod/static/{4Jgc-wu2w_CC8iS5G1QZf → noNfrQRJFchmZSWx_yn1K}/_ssgManifest.js +0 -0
package/dist/wsServer.mjs
CHANGED
|
@@ -4,7 +4,7 @@ import {
|
|
|
4
4
|
getRunSnapshot,
|
|
5
5
|
recoverStashedCodexRollouts,
|
|
6
6
|
recoverStashedTranscripts
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-LC4LAEWJ.mjs";
|
|
8
8
|
import {
|
|
9
9
|
addExitListener,
|
|
10
10
|
addOutputListener,
|
|
@@ -20,7 +20,7 @@ import {
|
|
|
20
20
|
resolvePendingRequest,
|
|
21
21
|
unregisterBrowser,
|
|
22
22
|
writeStdinToCommand
|
|
23
|
-
} from "./chunk-
|
|
23
|
+
} from "./chunk-AI7T3EXM.mjs";
|
|
24
24
|
import {
|
|
25
25
|
AppError,
|
|
26
26
|
Effect_exports,
|
|
@@ -36,7 +36,7 @@ import {
|
|
|
36
36
|
ValidationError,
|
|
37
37
|
WSError,
|
|
38
38
|
sanitizedSpawnEnv
|
|
39
|
-
} from "./chunk-
|
|
39
|
+
} from "./chunk-ZCMAJV2M.mjs";
|
|
40
40
|
import "./chunk-7P6ASYW6.mjs";
|
|
41
41
|
|
|
42
42
|
// src/lib/wsServer.ts
|
|
@@ -717,7 +717,7 @@ var handleJupyter = (conn, bubbleId, cwd) => Effect_exports.gen(function* () {
|
|
|
717
717
|
Effect_exports.annotateLogs("cwd", cwd)
|
|
718
718
|
);
|
|
719
719
|
const { kernelManager } = yield* Effect_exports.tryPromise({
|
|
720
|
-
try: () => import("./server-
|
|
720
|
+
try: () => import("./server-CQXVJT3F.mjs"),
|
|
721
721
|
catch: (cause) => new AppError({
|
|
722
722
|
message: "failed to import kernel manager",
|
|
723
723
|
cause
|
|
@@ -844,13 +844,85 @@ var runJupyterHandler = (ws, bubbleId, cwd) => {
|
|
|
844
844
|
};
|
|
845
845
|
|
|
846
846
|
// src/lib/effect/terminalHandler.ts
|
|
847
|
-
import { spawn
|
|
847
|
+
import { spawn as spawn2, execSync as execSync2 } from "child_process";
|
|
848
848
|
import * as nodePty from "node-pty";
|
|
849
|
+
|
|
850
|
+
// src/lib/shell.ts
|
|
851
|
+
import { existsSync as existsSync3 } from "fs";
|
|
852
|
+
import { execSync, spawn } from "child_process";
|
|
853
|
+
var bashCache;
|
|
854
|
+
var gitBashCache;
|
|
855
|
+
var pwshCache;
|
|
856
|
+
function resolveGitBash() {
|
|
857
|
+
if (!isWindows) return null;
|
|
858
|
+
if (gitBashCache !== void 0) return gitBashCache;
|
|
859
|
+
const envShell = process.env.SHELL;
|
|
860
|
+
const candidates = [
|
|
861
|
+
...envShell && /bash(\.exe)?$/i.test(envShell) ? [envShell] : [],
|
|
862
|
+
"C:\\Program Files\\Git\\bin\\bash.exe",
|
|
863
|
+
"C:\\Program Files (x86)\\Git\\bin\\bash.exe",
|
|
864
|
+
...process.env.ProgramFiles ? [`${process.env.ProgramFiles}\\Git\\bin\\bash.exe`] : []
|
|
865
|
+
];
|
|
866
|
+
for (const c of candidates) {
|
|
867
|
+
if (existsSync3(c)) return gitBashCache = c;
|
|
868
|
+
}
|
|
869
|
+
return null;
|
|
870
|
+
}
|
|
871
|
+
function resolveWindowsPowerShell() {
|
|
872
|
+
if (pwshCache !== void 0) return pwshCache;
|
|
873
|
+
try {
|
|
874
|
+
const found = execSync("where pwsh", { encoding: "utf-8", timeout: 3e3 }).trim().split(/\r?\n/)[0];
|
|
875
|
+
if (found && existsSync3(found)) return pwshCache = found;
|
|
876
|
+
} catch {
|
|
877
|
+
}
|
|
878
|
+
return pwshCache = "powershell.exe";
|
|
879
|
+
}
|
|
880
|
+
function resolveBashShell() {
|
|
881
|
+
if (!isWindows) return getDefaultShell();
|
|
882
|
+
if (bashCache !== void 0) return bashCache;
|
|
883
|
+
const gitBash = resolveGitBash();
|
|
884
|
+
if (gitBash) return bashCache = gitBash;
|
|
885
|
+
try {
|
|
886
|
+
const found = execSync("where bash", { encoding: "utf-8", timeout: 3e3 }).trim().split(/\r?\n/)[0];
|
|
887
|
+
if (found && existsSync3(found)) return bashCache = found;
|
|
888
|
+
} catch {
|
|
889
|
+
}
|
|
890
|
+
return null;
|
|
891
|
+
}
|
|
892
|
+
function killProcessTree(child) {
|
|
893
|
+
const pid = child.pid;
|
|
894
|
+
if (!pid) return;
|
|
895
|
+
if (isWindows) {
|
|
896
|
+
try {
|
|
897
|
+
spawn("taskkill", ["/PID", String(pid), "/T", "/F"], { stdio: "ignore" });
|
|
898
|
+
} catch {
|
|
899
|
+
}
|
|
900
|
+
return;
|
|
901
|
+
}
|
|
902
|
+
const signal = (sig) => {
|
|
903
|
+
try {
|
|
904
|
+
process.kill(-pid, sig);
|
|
905
|
+
} catch {
|
|
906
|
+
try {
|
|
907
|
+
process.kill(pid, sig);
|
|
908
|
+
} catch {
|
|
909
|
+
}
|
|
910
|
+
}
|
|
911
|
+
};
|
|
912
|
+
signal("SIGTERM");
|
|
913
|
+
const timer = setTimeout(() => {
|
|
914
|
+
if (child.exitCode === null && child.signalCode === null) signal("SIGKILL");
|
|
915
|
+
}, 1e3);
|
|
916
|
+
if (typeof timer.unref === "function") timer.unref();
|
|
917
|
+
child.once("exit", () => clearTimeout(timer));
|
|
918
|
+
}
|
|
919
|
+
|
|
920
|
+
// src/lib/effect/terminalHandler.ts
|
|
849
921
|
var HEARTBEAT5 = Schedule_exports.spaced("30 seconds");
|
|
850
922
|
var OPEN_PREFERRED_SHELL_COMMAND = "__cockpit_open_preferred_shell__";
|
|
851
923
|
function commandPath(command) {
|
|
852
924
|
try {
|
|
853
|
-
const found =
|
|
925
|
+
const found = execSync2(`command -v ${command}`, {
|
|
854
926
|
encoding: "utf-8",
|
|
855
927
|
timeout: 3e3
|
|
856
928
|
}).trim().split(/\r?\n/)[0];
|
|
@@ -865,66 +937,83 @@ function loginShellArgs(shell) {
|
|
|
865
937
|
}
|
|
866
938
|
function resolvePreferredPtyShell(cwd) {
|
|
867
939
|
if (isWindows) {
|
|
868
|
-
|
|
869
|
-
|
|
870
|
-
|
|
871
|
-
[
|
|
872
|
-
"sh",
|
|
873
|
-
"-lc",
|
|
874
|
-
"command -v zsh >/dev/null 2>&1 && printf zsh || { command -v bash >/dev/null 2>&1 && printf bash; }"
|
|
875
|
-
],
|
|
876
|
-
{ encoding: "utf-8", timeout: 3e3 }
|
|
877
|
-
).trim();
|
|
878
|
-
if (wslShell === "zsh" || wslShell === "bash") {
|
|
879
|
-
return {
|
|
880
|
-
file: "wsl.exe",
|
|
881
|
-
args: ["--cd", cwd, "--exec", wslShell, ...loginShellArgs(wslShell)],
|
|
882
|
-
cwd: process.cwd(),
|
|
883
|
-
name: wslShell
|
|
884
|
-
};
|
|
885
|
-
}
|
|
886
|
-
} catch {
|
|
887
|
-
}
|
|
888
|
-
} else {
|
|
889
|
-
for (const shell of ["zsh", "bash", "sh"]) {
|
|
890
|
-
const file = commandPath(shell);
|
|
891
|
-
if (file) return { file, args: loginShellArgs(shell), cwd, name: shell };
|
|
940
|
+
const gitBash = resolveGitBash();
|
|
941
|
+
if (gitBash) {
|
|
942
|
+
return { file: gitBash, args: ["--login", "-i"], cwd, name: "bash" };
|
|
892
943
|
}
|
|
944
|
+
const pwsh = resolveWindowsPowerShell();
|
|
945
|
+
const pwshName = pwsh.split(/[\\/]/).pop()?.replace(/\.exe$/i, "") || "powershell";
|
|
946
|
+
return { file: pwsh, args: ["-NoLogo"], cwd, name: pwshName };
|
|
947
|
+
}
|
|
948
|
+
for (const shell of ["zsh", "bash", "sh"]) {
|
|
949
|
+
const file = commandPath(shell);
|
|
950
|
+
if (file) return { file, args: loginShellArgs(shell), cwd, name: shell };
|
|
893
951
|
}
|
|
894
952
|
const fallback = getDefaultShell();
|
|
895
953
|
const fallbackName = fallback.split(/[\\/]/).pop() || fallback;
|
|
896
954
|
return {
|
|
897
955
|
file: fallback,
|
|
898
|
-
args:
|
|
956
|
+
args: loginShellArgs(fallbackName),
|
|
899
957
|
cwd,
|
|
900
958
|
name: fallbackName
|
|
901
959
|
};
|
|
902
960
|
}
|
|
961
|
+
function resolveCommandShell() {
|
|
962
|
+
if (!isWindows) return getDefaultShell();
|
|
963
|
+
const bash = resolveBashShell();
|
|
964
|
+
if (bash) return bash;
|
|
965
|
+
throw new Error(
|
|
966
|
+
"bash not found \u2014 install Git Bash or WSL on Windows to run commands"
|
|
967
|
+
);
|
|
968
|
+
}
|
|
969
|
+
function windowsChildPidMap() {
|
|
970
|
+
const out = execSync2(
|
|
971
|
+
'powershell -NoProfile -NonInteractive -Command "Get-CimInstance Win32_Process | Select-Object ProcessId,ParentProcessId | ConvertTo-Csv -NoTypeInformation"',
|
|
972
|
+
{ encoding: "utf-8", timeout: 5e3 }
|
|
973
|
+
);
|
|
974
|
+
const byParent = /* @__PURE__ */ new Map();
|
|
975
|
+
for (const line of out.split(/\r?\n/).slice(1)) {
|
|
976
|
+
const m = line.match(/^"?(\d+)"?,"?(\d+)"?/);
|
|
977
|
+
if (!m) continue;
|
|
978
|
+
const child = Number(m[1]);
|
|
979
|
+
const parent = Number(m[2]);
|
|
980
|
+
const bucket = byParent.get(parent);
|
|
981
|
+
if (bucket) bucket.push(child);
|
|
982
|
+
else byParent.set(parent, [child]);
|
|
983
|
+
}
|
|
984
|
+
return byParent;
|
|
985
|
+
}
|
|
903
986
|
function getDescendantPids(pid) {
|
|
904
987
|
const descendants = [];
|
|
988
|
+
if (isWindows) {
|
|
989
|
+
let byParent;
|
|
990
|
+
try {
|
|
991
|
+
byParent = windowsChildPidMap();
|
|
992
|
+
} catch {
|
|
993
|
+
return descendants;
|
|
994
|
+
}
|
|
995
|
+
const seen = /* @__PURE__ */ new Set([pid]);
|
|
996
|
+
const walk = (parentPid) => {
|
|
997
|
+
for (const child of byParent.get(parentPid) ?? []) {
|
|
998
|
+
if (seen.has(child)) continue;
|
|
999
|
+
seen.add(child);
|
|
1000
|
+
walk(child);
|
|
1001
|
+
descendants.push(child);
|
|
1002
|
+
}
|
|
1003
|
+
};
|
|
1004
|
+
walk(pid);
|
|
1005
|
+
return descendants;
|
|
1006
|
+
}
|
|
905
1007
|
function collect(parentPid) {
|
|
906
1008
|
try {
|
|
907
|
-
|
|
908
|
-
|
|
909
|
-
|
|
910
|
-
|
|
911
|
-
|
|
912
|
-
|
|
913
|
-
|
|
914
|
-
|
|
915
|
-
collect(cp);
|
|
916
|
-
descendants.push(cp);
|
|
917
|
-
}
|
|
918
|
-
} else {
|
|
919
|
-
result = execSync(`pgrep -P ${parentPid}`, {
|
|
920
|
-
encoding: "utf-8",
|
|
921
|
-
timeout: 3e3
|
|
922
|
-
}).trim();
|
|
923
|
-
const childPids = result.split("\n").filter(Boolean).map(Number);
|
|
924
|
-
for (const cp of childPids) {
|
|
925
|
-
collect(cp);
|
|
926
|
-
descendants.push(cp);
|
|
927
|
-
}
|
|
1009
|
+
const result = execSync2(`pgrep -P ${parentPid}`, {
|
|
1010
|
+
encoding: "utf-8",
|
|
1011
|
+
timeout: 3e3
|
|
1012
|
+
}).trim();
|
|
1013
|
+
const childPids = result.split("\n").filter(Boolean).map(Number);
|
|
1014
|
+
for (const cp of childPids) {
|
|
1015
|
+
collect(cp);
|
|
1016
|
+
descendants.push(cp);
|
|
928
1017
|
}
|
|
929
1018
|
} catch {
|
|
930
1019
|
}
|
|
@@ -1062,13 +1151,12 @@ var dispatchMessage = (msg, projectCwd, registry, send) => Effect_exports.sync((
|
|
|
1062
1151
|
...env
|
|
1063
1152
|
};
|
|
1064
1153
|
try {
|
|
1065
|
-
const userShell = getDefaultShell();
|
|
1066
1154
|
if (usePty) {
|
|
1067
1155
|
const ptyEnv = { PATH: getDefaultPath() };
|
|
1068
1156
|
for (const [k, v] of Object.entries(childEnv)) {
|
|
1069
1157
|
if (v !== void 0) ptyEnv[k] = v;
|
|
1070
1158
|
}
|
|
1071
|
-
const ptyTarget = command === OPEN_PREFERRED_SHELL_COMMAND ? resolvePreferredPtyShell(cwd) : { file:
|
|
1159
|
+
const ptyTarget = command === OPEN_PREFERRED_SHELL_COMMAND ? resolvePreferredPtyShell(cwd) : { file: resolveCommandShell(), args: ["--login", "-c", command], cwd, name: command };
|
|
1072
1160
|
const ptyProcess = nodePty.spawn(
|
|
1073
1161
|
ptyTarget.file,
|
|
1074
1162
|
ptyTarget.args,
|
|
@@ -1080,7 +1168,6 @@ var dispatchMessage = (msg, projectCwd, registry, send) => Effect_exports.sync((
|
|
|
1080
1168
|
env: ptyEnv
|
|
1081
1169
|
}
|
|
1082
1170
|
);
|
|
1083
|
-
const dummyChild = spawn("true", [], { stdio: "ignore" });
|
|
1084
1171
|
registerCommand({
|
|
1085
1172
|
commandId,
|
|
1086
1173
|
command: ptyTarget.name,
|
|
@@ -1088,7 +1175,6 @@ var dispatchMessage = (msg, projectCwd, registry, send) => Effect_exports.sync((
|
|
|
1088
1175
|
projectCwd,
|
|
1089
1176
|
tabId,
|
|
1090
1177
|
pid: ptyProcess.pid,
|
|
1091
|
-
process: dummyChild,
|
|
1092
1178
|
ptyProcess,
|
|
1093
1179
|
usePty: true,
|
|
1094
1180
|
timestamp: (/* @__PURE__ */ new Date()).toISOString(),
|
|
@@ -1099,7 +1185,7 @@ var dispatchMessage = (msg, projectCwd, registry, send) => Effect_exports.sync((
|
|
|
1099
1185
|
attachPtyListeners(registry, send, commandId, ptyProcess)
|
|
1100
1186
|
);
|
|
1101
1187
|
} else {
|
|
1102
|
-
const child =
|
|
1188
|
+
const child = spawn2(resolveCommandShell(), ["--login", "-c", command], {
|
|
1103
1189
|
cwd,
|
|
1104
1190
|
env: childEnv,
|
|
1105
1191
|
stdio: ["pipe", "pipe", "pipe"],
|
|
@@ -1168,7 +1254,7 @@ var dispatchMessage = (msg, projectCwd, registry, send) => Effect_exports.sync((
|
|
|
1168
1254
|
Effect_exports.runFork(
|
|
1169
1255
|
attachPtyListeners(registry, send, commandId, cmd.ptyProcess)
|
|
1170
1256
|
);
|
|
1171
|
-
} else {
|
|
1257
|
+
} else if (cmd.process) {
|
|
1172
1258
|
Effect_exports.runFork(
|
|
1173
1259
|
attachPipeListeners(registry, send, commandId, cmd.process)
|
|
1174
1260
|
);
|
|
@@ -1270,60 +1356,6 @@ var runTerminalHandler = (ws, projectCwd) => {
|
|
|
1270
1356
|
|
|
1271
1357
|
// src/lib/effect/bashStreamHandler.ts
|
|
1272
1358
|
import { spawn as spawn4 } from "child_process";
|
|
1273
|
-
|
|
1274
|
-
// src/lib/shell.ts
|
|
1275
|
-
import { existsSync as existsSync3 } from "fs";
|
|
1276
|
-
import { execSync as execSync2, spawn as spawn3 } from "child_process";
|
|
1277
|
-
var bashCache;
|
|
1278
|
-
function resolveBashShell() {
|
|
1279
|
-
if (!isWindows) return getDefaultShell();
|
|
1280
|
-
if (bashCache !== void 0) return bashCache;
|
|
1281
|
-
const envShell = process.env.SHELL;
|
|
1282
|
-
const candidates = [
|
|
1283
|
-
...envShell && /bash(\.exe)?$/i.test(envShell) ? [envShell] : [],
|
|
1284
|
-
"C:\\Program Files\\Git\\bin\\bash.exe",
|
|
1285
|
-
"C:\\Program Files (x86)\\Git\\bin\\bash.exe",
|
|
1286
|
-
...process.env.ProgramFiles ? [`${process.env.ProgramFiles}\\Git\\bin\\bash.exe`] : []
|
|
1287
|
-
];
|
|
1288
|
-
for (const c of candidates) {
|
|
1289
|
-
if (existsSync3(c)) return bashCache = c;
|
|
1290
|
-
}
|
|
1291
|
-
try {
|
|
1292
|
-
const found = execSync2("where bash", { encoding: "utf-8", timeout: 3e3 }).trim().split(/\r?\n/)[0];
|
|
1293
|
-
if (found && existsSync3(found)) return bashCache = found;
|
|
1294
|
-
} catch {
|
|
1295
|
-
}
|
|
1296
|
-
return null;
|
|
1297
|
-
}
|
|
1298
|
-
function killProcessTree(child) {
|
|
1299
|
-
const pid = child.pid;
|
|
1300
|
-
if (!pid) return;
|
|
1301
|
-
if (isWindows) {
|
|
1302
|
-
try {
|
|
1303
|
-
spawn3("taskkill", ["/PID", String(pid), "/T", "/F"], { stdio: "ignore" });
|
|
1304
|
-
} catch {
|
|
1305
|
-
}
|
|
1306
|
-
return;
|
|
1307
|
-
}
|
|
1308
|
-
const signal = (sig) => {
|
|
1309
|
-
try {
|
|
1310
|
-
process.kill(-pid, sig);
|
|
1311
|
-
} catch {
|
|
1312
|
-
try {
|
|
1313
|
-
process.kill(pid, sig);
|
|
1314
|
-
} catch {
|
|
1315
|
-
}
|
|
1316
|
-
}
|
|
1317
|
-
};
|
|
1318
|
-
signal("SIGTERM");
|
|
1319
|
-
const timer = setTimeout(() => {
|
|
1320
|
-
if (child.exitCode === null && child.signalCode === null) signal("SIGKILL");
|
|
1321
|
-
}, 1e3);
|
|
1322
|
-
if (typeof timer.unref === "function") timer.unref();
|
|
1323
|
-
child.once("exit", () => clearTimeout(timer));
|
|
1324
|
-
}
|
|
1325
|
-
|
|
1326
|
-
// src/lib/effect/bashStreamHandler.ts
|
|
1327
1359
|
var HEARTBEAT6 = Schedule_exports.spaced("30 seconds");
|
|
1328
1360
|
function killChild(child) {
|
|
1329
1361
|
killProcessTree(child);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@surething/cockpit",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.262",
|
|
4
4
|
"description": "The open-source Claude Code GUI — an IDE-like workbench for parallel AI coding. Drive Claude (default), Codex, DeepSeek, Kimi, or local Ollama in tabs. Terminal, browser & DB bubbles, code review. Self-host on a shared dev box — a seat for every teammate. Local-first, MIT.",
|
|
5
5
|
"author": "Robert",
|
|
6
6
|
"license": "MIT",
|
package/server.mjs
CHANGED
|
@@ -2,10 +2,11 @@ import { createServer } from 'http';
|
|
|
2
2
|
import { createGzip, constants as zlibConstants } from 'zlib';
|
|
3
3
|
import { exec, execSync } from 'child_process';
|
|
4
4
|
import { networkInterfaces, homedir } from 'os';
|
|
5
|
-
import { writeFileSync, mkdirSync, readFileSync, realpathSync } from 'fs';
|
|
5
|
+
import { writeFileSync, mkdirSync, readFileSync, realpathSync, unlinkSync } from 'fs';
|
|
6
6
|
import { join, dirname, resolve } from 'path';
|
|
7
7
|
import { fileURLToPath } from 'url';
|
|
8
8
|
import next from 'next';
|
|
9
|
+
import { rotateIfLarge } from './bin/rotateLog.mjs';
|
|
9
10
|
|
|
10
11
|
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
11
12
|
process.env.COCKPIT_ROOT = __dirname;
|
|
@@ -26,6 +27,34 @@ const cockpitHome = process.env.COCKPIT_HOME
|
|
|
26
27
|
// path if it doesn't exist yet.
|
|
27
28
|
const normHome = (p) => { try { return realpathSync(p); } catch { return p; } };
|
|
28
29
|
|
|
30
|
+
const SERVER_JSON = join(cockpitHome, 'server.json');
|
|
31
|
+
|
|
32
|
+
// Read once at boot. `version` backs `cockpit status` (process.env
|
|
33
|
+
// npm_package_version is only set when launched through an npm script, so it is
|
|
34
|
+
// null under `node server.mjs` / a service unit). `buildId` identifies the
|
|
35
|
+
// frontend assets this process serves — a browser tab left open across an
|
|
36
|
+
// upgrade still references the previous build's content-hashed chunks, which no
|
|
37
|
+
// longer exist on disk.
|
|
38
|
+
function readBuildInfo() {
|
|
39
|
+
let version = null;
|
|
40
|
+
try {
|
|
41
|
+
version = JSON.parse(readFileSync(join(__dirname, 'package.json'), 'utf8')).version;
|
|
42
|
+
} catch { /* unreadable package.json — report null rather than fail boot */ }
|
|
43
|
+
let buildId = null;
|
|
44
|
+
try {
|
|
45
|
+
buildId = readFileSync(join(__dirname, '.next-prod', 'BUILD_ID'), 'utf8').trim();
|
|
46
|
+
} catch { /* dev mode has no prebuilt BUILD_ID */ }
|
|
47
|
+
return { version, buildId };
|
|
48
|
+
}
|
|
49
|
+
const buildInfo = readBuildInfo();
|
|
50
|
+
// Expose to the app layer. /api/health used to report
|
|
51
|
+
// process.env.npm_package_version, which npm only sets when the process was
|
|
52
|
+
// launched through an npm script — under `node server.mjs`, a service unit, or
|
|
53
|
+
// the global bin it was always null, so the health probe's version field was
|
|
54
|
+
// dead weight.
|
|
55
|
+
if (buildInfo.version) process.env.COCKPIT_VERSION = buildInfo.version;
|
|
56
|
+
if (buildInfo.buildId) process.env.COCKPIT_BUILD_ID = buildInfo.buildId;
|
|
57
|
+
|
|
29
58
|
// Single-instance-per-data-dir guard. Probe the recorded instance's /api/health: if a live
|
|
30
59
|
// cockpit on THIS data dir answers (app === 'cockpit' && home === this data dir), refuse and
|
|
31
60
|
// point the user at COCKPIT_HOME. Connection refused / timeout / wrong signature → stale → take
|
|
@@ -34,7 +63,7 @@ const normHome = (p) => { try { return realpathSync(p); } catch { return p; } };
|
|
|
34
63
|
async function ensureSingleInstance() {
|
|
35
64
|
if (process.env.COCKPIT_FORCE) return;
|
|
36
65
|
let prev;
|
|
37
|
-
try { prev = JSON.parse(readFileSync(
|
|
66
|
+
try { prev = JSON.parse(readFileSync(SERVER_JSON, 'utf8')); } catch { return; }
|
|
38
67
|
if (!prev || !prev.port) return;
|
|
39
68
|
try {
|
|
40
69
|
const ac = new AbortController();
|
|
@@ -47,7 +76,7 @@ async function ensureSingleInstance() {
|
|
|
47
76
|
console.error(` Data dir: ${cockpitHome}`);
|
|
48
77
|
console.error(` To run a second instance, isolate it with COCKPIT_HOME, e.g.:`);
|
|
49
78
|
console.error(` COCKPIT_HOME=~/.cockpit-alt cockpit`);
|
|
50
|
-
console.error(` False alarm? Delete ${
|
|
79
|
+
console.error(` False alarm? Delete ${SERVER_JSON} or set COCKPIT_FORCE=1.\n`);
|
|
51
80
|
process.exit(1);
|
|
52
81
|
}
|
|
53
82
|
} catch { /* connection refused / timeout / non-cockpit → stale, proceed */ }
|
|
@@ -77,23 +106,66 @@ async function ensureSingleInstance() {
|
|
|
77
106
|
let flushRunningSync = null;
|
|
78
107
|
|
|
79
108
|
let _cleanupRan = false;
|
|
109
|
+
|
|
110
|
+
/**
|
|
111
|
+
* A child that must OUTLIVE us, registered on globalThis by /api/update.
|
|
112
|
+
*
|
|
113
|
+
* The updater is spawned by this process and then has to keep running after we
|
|
114
|
+
* exit — it is what reinstalls the package and starts the replacement server.
|
|
115
|
+
* `detached: true` is not enough: it moves the child into its own session and
|
|
116
|
+
* process group but leaves the parent/child relationship intact, so the
|
|
117
|
+
* `pkill -P <us>` below still matches it. Without this exclusion the server
|
|
118
|
+
* kills the very process that was supposed to bring it back, and the update
|
|
119
|
+
* stops dead with the server down.
|
|
120
|
+
*
|
|
121
|
+
* Read through globalThis because the route lives in Next's module graph and
|
|
122
|
+
* cannot import this file.
|
|
123
|
+
*/
|
|
124
|
+
function handedOffPid() {
|
|
125
|
+
const pid = globalThis.__cockpitHandedOffPid;
|
|
126
|
+
return typeof pid === 'number' && pid > 0 ? pid : null;
|
|
127
|
+
}
|
|
128
|
+
|
|
80
129
|
function killChildren() {
|
|
81
130
|
if (_cleanupRan) return;
|
|
82
131
|
_cleanupRan = true;
|
|
132
|
+
const spare = handedOffPid();
|
|
83
133
|
if (process.platform === 'win32') {
|
|
84
|
-
// Windows: list child PIDs
|
|
85
|
-
//
|
|
134
|
+
// Windows: list child PIDs, then taskkill /F /T each one — running /T on
|
|
135
|
+
// ourselves would take this process down too.
|
|
136
|
+
//
|
|
137
|
+
// This used to shell out to `wmic`, which is deprecated and absent by
|
|
138
|
+
// default from Windows 11 24H2; the failure was swallowed by the catch, so
|
|
139
|
+
// orphaned next-server workers were left running. PowerShell's CIM cmdlet
|
|
140
|
+
// is the supported replacement.
|
|
86
141
|
try {
|
|
87
|
-
const out = execSync(
|
|
88
|
-
|
|
142
|
+
const out = execSync(
|
|
143
|
+
`powershell -NoProfile -NonInteractive -Command "Get-CimInstance Win32_Process -Filter 'ParentProcessId=${process.pid}' | Select-Object -ExpandProperty ProcessId"`,
|
|
144
|
+
{ encoding: 'utf-8', stdio: ['ignore', 'pipe', 'ignore'], timeout: 5000 }
|
|
145
|
+
);
|
|
146
|
+
const pids = out.split(/\r?\n/).map(s => s.trim()).filter(s => /^\d+$/.test(s));
|
|
89
147
|
for (const pid of pids) {
|
|
148
|
+
if (spare && Number(pid) === spare) continue;
|
|
90
149
|
try { execSync(`taskkill /F /T /PID ${pid}`, { stdio: 'ignore' }); } catch {}
|
|
91
150
|
}
|
|
92
151
|
} catch {}
|
|
93
152
|
return;
|
|
94
153
|
}
|
|
95
|
-
// POSIX:
|
|
96
|
-
//
|
|
154
|
+
// POSIX: direct children only, no recursion (next-server and friends are all
|
|
155
|
+
// direct children — enough).
|
|
156
|
+
if (spare) {
|
|
157
|
+
// Enumerate and signal individually so the handed-off updater can be
|
|
158
|
+
// skipped; `pkill -P` has no exclusion form.
|
|
159
|
+
try {
|
|
160
|
+
const out = execSync(`pgrep -P ${process.pid}`, { encoding: 'utf-8', stdio: ['ignore', 'pipe', 'ignore'] });
|
|
161
|
+
for (const line of out.split('\n')) {
|
|
162
|
+
const pid = Number(line.trim());
|
|
163
|
+
if (!pid || pid === spare) continue;
|
|
164
|
+
try { process.kill(pid, 'SIGTERM'); } catch {}
|
|
165
|
+
}
|
|
166
|
+
} catch { /* pgrep exits 1 when there are no children */ }
|
|
167
|
+
return;
|
|
168
|
+
}
|
|
97
169
|
// pkill exits 1 when nothing matches; not treated as an error.
|
|
98
170
|
try { execSync(`pkill -TERM -P ${process.pid}`, { stdio: 'ignore' }); } catch {}
|
|
99
171
|
}
|
|
@@ -103,8 +175,21 @@ function killChildren() {
|
|
|
103
175
|
// through process.exit() → 'exit' fires → this single hook covers every
|
|
104
176
|
// graceful shutdown. Flush live PTY scrollback to disk first, then kill the
|
|
105
177
|
// children (the flush reads this process's own memory — independent of them).
|
|
178
|
+
// Best-effort: drop our server.json on the way out so `cockpit status` says
|
|
179
|
+
// "not running" straight away instead of probing a dead port. Guarded by pid so
|
|
180
|
+
// we never delete a record a newer instance has since written. A hard kill
|
|
181
|
+
// (SIGKILL) skips this entirely — which is why status probes /api/health rather
|
|
182
|
+
// than trusting the file's existence.
|
|
183
|
+
function removeServerJson() {
|
|
184
|
+
try {
|
|
185
|
+
const rec = JSON.parse(readFileSync(SERVER_JSON, 'utf8'));
|
|
186
|
+
if (rec && rec.pid === process.pid) unlinkSync(SERVER_JSON);
|
|
187
|
+
} catch { /* absent, unreadable, or not ours */ }
|
|
188
|
+
}
|
|
189
|
+
|
|
106
190
|
process.on('exit', () => {
|
|
107
191
|
try { flushRunningSync?.(); } catch {}
|
|
192
|
+
removeServerJson();
|
|
108
193
|
killChildren();
|
|
109
194
|
});
|
|
110
195
|
|
|
@@ -173,6 +258,17 @@ const handle = app.getRequestHandler();
|
|
|
173
258
|
|
|
174
259
|
app.prepare().then(async () => {
|
|
175
260
|
await ensureSingleInstance();
|
|
261
|
+
|
|
262
|
+
// Rotate the app log — AFTER the single-instance check, never before. A
|
|
263
|
+
// second `cockpit` on the same data dir is rejected above, and if it had
|
|
264
|
+
// rotated first it would have consumed a generation of a *running*
|
|
265
|
+
// instance's history just by failing to start.
|
|
266
|
+
//
|
|
267
|
+
// Safe to do here because the Effect logger appends per write (fs/promises
|
|
268
|
+
// appendFile) rather than holding an fd, so nothing has the file open and it
|
|
269
|
+
// recreates it on the next line. This is also what makes it work on Windows,
|
|
270
|
+
// where renaming a file that some process holds open fails outright.
|
|
271
|
+
rotateIfLarge(join(cockpitHome, 'logs', 'cockpit.log'));
|
|
176
272
|
const upgradeHandler = app.getUpgradeHandler();
|
|
177
273
|
// v2 P8: HTTP intercepts (handleTerminalApi / handleBrowserApi) moved to src/lib/httpApi.ts
|
|
178
274
|
const { handleUpgrade, broadcastToGlobalState } = await import(dev ? './src/lib/wsServer.ts' : './dist/wsServer.mjs');
|
|
@@ -363,10 +459,30 @@ app.prepare().then(async () => {
|
|
|
363
459
|
const url = `http://localhost:${port}`;
|
|
364
460
|
console.log(`> Ready on ${url}`);
|
|
365
461
|
|
|
366
|
-
//
|
|
462
|
+
// Discoverability: `cockpit start` is the only way to survive closing the
|
|
463
|
+
// terminal (there is no service integration), but nothing else advertises
|
|
464
|
+
// it. Only worth saying when we ARE in the foreground — a backgrounded
|
|
465
|
+
// instance's operator already knows.
|
|
466
|
+
if ((process.env.COCKPIT_MANAGED || 'foreground') === 'foreground') {
|
|
467
|
+
console.log(' Tip: `cockpit start` runs it in the background — then this terminal can be closed.');
|
|
468
|
+
}
|
|
469
|
+
|
|
470
|
+
// Write server.json so CLI subcommands can read the port, and so
|
|
471
|
+
// `cockpit status` / `stop` can find and identify this instance.
|
|
367
472
|
try {
|
|
368
473
|
mkdirSync(cockpitHome, { recursive: true });
|
|
369
|
-
writeFileSync(
|
|
474
|
+
writeFileSync(SERVER_JSON, JSON.stringify({
|
|
475
|
+
pid: process.pid,
|
|
476
|
+
port,
|
|
477
|
+
version: buildInfo.version,
|
|
478
|
+
buildId: buildInfo.buildId,
|
|
479
|
+
startedAt: Date.now(),
|
|
480
|
+
// How this process is supervised, set by whoever launched it:
|
|
481
|
+
// 'foreground' (plain `cockpit`), 'bare' (`cockpit start`), or a
|
|
482
|
+
// service manager later on. `cockpit stop` uses it to decide whether
|
|
483
|
+
// stopping also means telling a supervisor not to restart us.
|
|
484
|
+
managed: process.env.COCKPIT_MANAGED || 'foreground',
|
|
485
|
+
}, null, 2));
|
|
370
486
|
} catch {}
|
|
371
487
|
|
|
372
488
|
// Auto-open the browser in prod mode (disable with --no-open)
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";exports.id=151,exports.ids=[151],exports.modules={26479:(a,b,c)=>{c.d(b,{CR:()=>h,my:()=>i,os:()=>g});var d=c(29021),e=c(33873),f=c(7939);function g(a,b){let c=(0,f.Kk)(a,b);if(d.existsSync(c))return{sessionPath:c,engine:"claude"};let e=(0,f.Xi)(a,b);if(d.existsSync(e))return{sessionPath:e,engine:"deepseek"};let g=(0,f.n2)(a,b);if(d.existsSync(g))return{sessionPath:g,engine:"kimi"};let h=(0,f.Rk)(a,b);if(d.existsSync(h))return{sessionPath:h,engine:"glm"};let i=(0,f.eg)(b);if(i)return{sessionPath:i,engine:"codex"};let j=(0,f.yw)(a,b);return d.existsSync(j)?{sessionPath:j,engine:"ollama"}:null}function h(a){return!!a.engine}function i(a,b,c){switch(a.engine){case"claude":return(0,f.Kk)(b,c);case"deepseek":return(0,f.Xi)(b,c);case"kimi":return(0,f.n2)(b,c);case"glm":return(0,f.Rk)(b,c);case"ollama":return(0,f.yw)(b,c);case"codex":{let a=new Date,b=a=>String(a).padStart(2,"0"),d=String(a.getFullYear()),g=b(a.getMonth()+1),h=b(a.getDate()),i=`${d}-${g}-${h}T${b(a.getHours())}-${b(a.getMinutes())}-${b(a.getSeconds())}`;return(0,e.join)(f.yk,d,g,h,`rollout-${i}-${c}.jsonl`)}default:return null}}},40516:(a,b,c)=>{c.d(b,{$H:()=>h,BZ:()=>B,Bn:()=>m,C4:()=>e,Dn:()=>g,Hq:()=>E,L8:()=>K,RA:()=>d,TB:()=>t,U6:()=>r,Uk:()=>n,VW:()=>w,Y8:()=>o,YU:()=>s,dr:()=>G,g$:()=>j,iN:()=>x,jB:()=>i,nE:()=>F,nq:()=>C,o4:()=>A,p7:()=>D,q4:()=>y,qW:()=>p,uz:()=>q,wL:()=>f,yM:()=>l});let d="[Image]",e={bash:"Bash",applyPatch:"ApplyPatch",task:"Task",todo:"TodoWrite",webSearch:"WebSearch",webFetch:"WebFetch"},f="mcp__",g=(a,b)=>`${f}${a}__${b}`,h="spawn_agent",i="wait_agent",j=new Set([h,i,"close_agent","send_input","resume_agent"]),k="update_plan",l="apply_patch",m="exec",n=new Set([l,m]);function o(a,b){return b?.startsWith(f)?`${b}__${a}`:"shell_command"===a||"exec_command"===a?e.bash:"apply_patch"===a?e.applyPatch:a===h?e.task:a===k?e.todo:a}function p(a){return{todos:(a??[]).flatMap(a=>"string"==typeof a?.text?[{content:a.text,status:a.completed?"completed":"pending"}]:[])}}function q(a){let b=a.filter(a=>"completed"===a.status).length;return`${b}/${a.length} completed`}function r(a,b){if(b?.type==="open_page"&&b.url)return{name:e.webFetch,input:{url:b.url},result:b.url};let c=b?.query||a||"",d=b?.queries?.length?b.queries:c?[c]:[];return{name:e.webSearch,input:{query:c},result:d.join("\n")}}function s(a){return a.error?.message?a.error.message:null===a.result||void 0===a.result?"":"string"==typeof a.result?a.result:JSON.stringify(a.result,null,2)}function t(a){let b,c=[],d=/^\*\*\* (Add|Update|Delete) File: (.+)$/gm;for(;b=d.exec(a);)c.push({path:b[2].trim(),kind:b[1].toLowerCase()});return{changes:c}}let u=/"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|`(?:\\.|[^`\\])*`/g,v={n:"\n",r:"\r",t:" ",b:"\b",f:"\f",v:"\v",0:"\0"};function w(a){let b=function(a){let b;for(u.lastIndex=0;b=u.exec(a);){let a=function(a){if(a.startsWith('"'))try{return JSON.parse(a)}catch{}return a.slice(1,-1).replace(/\\(u\{[0-9a-fA-F]+\}|u[0-9a-fA-F]{4}|x[0-9a-fA-F]{2}|[\s\S])/g,(a,b)=>b.startsWith("u{")?String.fromCodePoint(parseInt(b.slice(2,-1),16)):b.startsWith("u")||b.startsWith("x")?String.fromCharCode(parseInt(b.slice(1),16)):v[b]??b)}(b[0]);if(a.includes("*** Begin Patch"))return a}return null}(a);if(b)return{kind:"patch",patch:b};let c=function(a){let b=a.indexOf("tools.exec_command(");if(-1===b)return null;let c=a.indexOf("{",b);if(-1===c)return null;let d=0,e="";for(let b=c;b<a.length;b++){let f=a[b];if(e){"\\"===f?b++:f===e&&(e="");continue}if('"'===f||"'"===f||"`"===f){e=f;continue}if("{"===f)d++;else if("}"===f&&0==--d)try{let d=JSON.parse(a.slice(c,b+1));return d&&"object"==typeof d?d:null}catch{break}}return null}(a);return c?{kind:"exec",command:"string"==typeof c.cmd?c.cmd:"",args:c}:{kind:"unknown"}}function x(a){let b=w(a);return"patch"===b.kind?{name:e.applyPatch,input:t(b.patch)}:"exec"===b.kind?{name:e.bash,input:G("exec_command",b.args)}:{name:e.bash,input:{command:a}}}function y(a){if(null==a)return"";if("string"==typeof a)return a;if(Array.isArray(a))return a.map(y).join("");if("object"==typeof a){let b=a.text;return"string"==typeof b?b:JSON.stringify(a)}return String(a)}let z=new Set(["completed","errored","interrupted","not_found","failed"]);function A(a,b){let c="string"==typeof a.message?a.message:"",d="string"==typeof a.agent_type?a.agent_type:void 0;return{...d?{subagent_type:d}:{},description:B(b?.nickname,d,c),prompt:c,...b?.agentId?{agent_id:b.agentId}:{}}}function B(a,b,c){if(a)return b?`${a} (${b})`:a;let d=c.split("\n",1)[0]?.trim()||"";return d?d.slice(0,80):b||"subagent"}function C(a){try{let b=JSON.parse(a);if("string"!=typeof b?.agent_id||!b.agent_id)return null;return{agentId:b.agent_id,..."string"==typeof b.nickname?{nickname:b.nickname}:{}}}catch{return null}}function D(a){let b;try{b=JSON.parse(a)}catch{return[]}let c=b?.status;if(!c||"object"!=typeof c)return[];let d=[];for(let[a,b]of Object.entries(c)){if(!b||"object"!=typeof b)continue;let[c,e]=Object.entries(b)[0]??[];c&&d.push({agentId:a,status:c,message:"string"==typeof e?e:"",done:z.has(c)})}return d}function E(a){return a&&"object"==typeof a?Object.entries(a).flatMap(([a,b])=>{let c="string"==typeof b?.status?b.status:"";return c?[{agentId:a,status:c,message:"string"==typeof b?.message?b.message:"",done:z.has(c)}]:[]}):[]}function F(a){return a.message||`(agent ${a.status})`}function G(a,b){if(a===h)return A(b);if(a===k)return{todos:(Array.isArray(b.plan)?b.plan:[]).flatMap(a=>"string"!=typeof a?.step?[]:[{content:a.step,status:"string"==typeof a.status?a.status:"pending"}])};if(o(a)!==e.bash||"string"==typeof b.command||"string"!=typeof b.cmd)return b;let{cmd:c,...d}=b;return{...d,command:b.cmd}}let H=/^<image\b[^>]*>$/i,I=/<\/?image\b[^>]*>/gi,J=/^data:(image\/(?:png|jpeg|webp|gif));base64,([\s\S]*)$/;function K(a){return{text:(a?.filter(a=>"input_text"===a.type&&a.text&&!H.test(a.text.trim())).map(a=>a.text).join("")||"").replace(I,""),images:a?.filter(a=>"input_image"===a.type&&a.image_url).map(a=>{let b;return(b=a.image_url.match(J))?{type:"base64",media_type:b[1],data:b[2]}:null}).filter(a=>null!==a)||[]}}},72891:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{OZ:()=>o,RL:()=>n,k9:()=>p,ok:()=>l});var e=c(37625),f=c(52693),g=c(18412),h=c(89705),i=c(94506),j=c(770),k=a([i]);i=(k.then?(await k)():k)[0];let l=(a,b=200)=>new Response(JSON.stringify(a),{status:b,headers:{"content-type":"application/json"}}),m=a=>{let b=e.od(a);if(f.Ru(b)){let a=b.value,c=(0,j.Sh)(a);return new Response(JSON.stringify({error:(a=>{let b=a.message;if("string"==typeof b&&b.length>0)return b;let c=a.cause;if(c instanceof Error&&c.message.length>0)return c.message;switch(a._tag){case"ValidationError":return`Invalid ${a.field}: ${a.reason}`;case"NotFoundError":return`${a.resource} not found: ${a.id}`;case"PermissionError":return`Permission denied: ${a.action} on ${a.resource}`;case"DBError":return`${a.db} ${a.op} failed`;case"FSError":return`${a.op} ${a.path} failed`;case"WSError":return`${a.proto} ${a.kind} failed`;case"AgentError":return`${a.provider} ${a.kind} failed`;default:return a._tag}})(a),tag:a._tag}),{status:c,headers:{"content-type":"application/json"}})}return console.error("[handler] uncaught defect:\n"+e.j9(a)),new Response(JSON.stringify({error:"Internal Server Error",tag:"InternalError"}),{status:500,headers:{"content-type":"application/json"}})},n=a=>async b=>{let c=await i.s9.runPromiseExit(a(b));return g.YW(c,{onFailure:a=>m(a),onSuccess:a=>a})},o=a=>async(b,c)=>{let d=await c.params,e=await i.s9.runPromiseExit(a(b,d));return g.YW(e,{onFailure:a=>m(a),onSuccess:a=>a})},p=a=>h.$mh({try:()=>a.json(),catch:()=>new j.yI({field:"body",reason:"invalid JSON"})});d()}catch(a){d(a)}})},98084:(a,b,c)=>{function d(a){return a.isMeta&&a.sourceToolUseID?"skill":a.origin?.kind==="task-notification"?"task-notification":a.origin?.kind&&"human"!==a.origin.kind||a.isMeta||a.isCompactSummary?"meta":null}function e(a){if("user"!==a.type||null!==d(a))return!1;let b=a.message?.content;return"string"==typeof b?b.length>0:!!Array.isArray(b)&&b.some(a=>a?.type==="text")}c.d(b,{k:()=>d,l:()=>e})}};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
self.__BUILD_MANIFEST={__rewrites:{afterFiles:[],beforeFiles:[],fallback:[]},__routerFilterStatic:{numItems:139,errorRate:1e-4,numBits:2665,numHashes:14,bitArray:[0,0,1,0,1,0,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,0,1,1,0,1,0,1,0,1,1,0,1,1,0,1,1,0,1,0,1,0,1,1,0,1,1,1,0,0,0,1,0,0,1,1,1,0,0,0,1,1,0,0,1,0,0,0,0,1,1,0,1,0,0,0,1,1,0,0,1,0,1,0,0,1,1,1,1,1,1,0,1,1,0,0,1,0,1,0,1,1,0,1,0,0,1,0,1,0,1,0,1,1,0,0,0,1,1,1,1,0,0,0,1,0,0,1,1,0,0,1,0,0,1,0,0,1,0,1,1,0,1,1,0,0,1,0,0,1,0,0,1,0,1,1,0,0,1,1,0,1,1,0,0,1,1,0,0,0,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,0,1,1,0,0,0,1,0,0,1,0,1,1,0,0,1,1,1,1,1,1,1,0,0,1,0,1,0,1,1,0,1,1,0,1,1,1,1,1,0,1,0,1,0,0,1,1,1,1,1,0,1,0,1,1,0,1,1,0,1,1,0,0,0,0,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,1,1,0,1,0,1,0,1,1,1,1,0,0,1,1,0,0,1,1,1,0,0,0,1,1,1,0,1,1,0,1,1,0,0,1,1,1,0,0,0,0,1,0,0,1,0,1,0,0,1,1,0,0,0,1,1,0,1,1,0,1,0,1,0,1,1,1,1,1,1,1,1,0,0,1,0,1,0,1,0,0,1,0,1,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,0,1,1,0,1,1,0,1,0,0,0,0,0,0,1,0,1,1,0,0,0,0,0,0,1,0,1,1,0,0,1,1,0,0,1,0,1,1,0,0,0,1,0,1,1,1,0,0,0,1,0,0,1,1,0,0,0,0,0,0,1,0,0,0,1,0,1,0,0,1,0,0,1,0,1,1,1,1,0,0,0,1,0,0,1,1,1,1,1,0,1,0,1,0,1,0,0,1,1,0,1,0,0,1,0,1,1,1,1,0,0,0,1,1,0,1,1,1,1,1,0,0,0,1,0,1,1,1,0,0,1,1,0,1,1,1,0,1,0,0,1,1,0,0,1,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,1,0,1,1,1,0,1,0,0,1,1,0,1,0,0,0,0,1,1,1,0,0,0,1,0,1,1,0,0,1,0,0,0,1,1,1,0,1,1,1,0,1,1,0,1,0,0,1,1,0,1,0,0,1,1,0,1,0,0,1,0,1,1,1,1,0,0,0,1,1,1,0,1,1,1,0,0,1,0,1,1,0,0,0,1,1,0,0,0,0,1,1,0,0,0,0,0,0,1,1,0,1,0,0,0,1,1,1,0,0,0,0,1,0,0,1,0,0,0,1,1,0,0,0,1,1,0,1,0,0,0,0,0,1,0,0,0,0,1,1,1,0,0,1,1,1,0,0,1,1,1,0,0,0,1,0,0,0,0,0,1,0,1,1,0,1,0,1,0,0,0,1,1,1,1,0,0,1,0,0,0,0,0,1,1,1,0,1,1,0,0,0,0,1,0,1,0,0,1,0,0,0,0,1,0,0,1,1,0,1,0,0,0,1,1,1,0,0,1,1,1,0,0,1,0,1,0,1,0,1,1,0,1,0,0,0,1,0,1,1,0,1,1,1,1,1,1,1,0,1,1,0,1,1,0,1,1,0,0,0,1,0,0,1,0,0,1,1,1,0,1,1,0,0,0,0,1,1,0,0,0,0,1,0,1,0,0,1,1,0,0,1,1,1,0,1,1,1,1,1,0,0,1,1,0,0,1,0,0,1,0,1,0,0,1,0,1,0,1,1,1,0,1,0,1,0,1,0,1,1,1,1,0,0,1,1,0,0,0,1,0,1,0,1,1,0,1,1,1,1,0,0,0,1,0,0,0,1,0,1,1,0,1,0,1,0,1,0,0,1,1,1,0,0,1,0,0,1,1,1,0,1,1,1,0,0,1,1,1,0,0,1,1,0,1,0,1,0,0,0,0,0,1,1,1,1,1,1,0,0,1,0,0,0,1,1,1,1,0,0,1,0,1,1,0,0,1,1,0,1,1,1,1,0,1,1,1,1,0,0,1,1,0,1,0,1,0,1,1,1,1,0,0,0,0,0,0,1,1,0,1,1,0,0,1,1,1,0,0,1,0,0,0,1,1,1,0,0,1,1,0,1,1,0,0,0,1,1,0,1,1,0,0,0,1,0,0,0,0,1,0,1,1,0,0,0,0,1,1,1,1,0,1,0,0,0,1,1,0,1,0,0,1,1,0,0,1,0,0,1,0,0,0,1,1,0,1,1,1,1,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,1,0,1,1,1,1,1,1,1,0,0,1,1,1,0,0,0,1,0,1,1,0,1,0,1,0,1,1,1,0,1,0,1,0,0,0,0,1,0,1,0,1,0,0,0,0,1,0,1,0,1,0,1,1,0,0,1,0,1,1,0,1,1,0,1,1,1,0,0,1,1,0,0,0,1,0,1,0,0,1,1,1,1,1,1,1,0,1,0,0,0,0,1,1,1,0,0,1,1,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,1,0,1,0,0,1,1,0,1,1,0,0,0,1,1,1,1,0,0,1,0,1,1,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,1,0,0,1,0,1,0,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,0,1,1,0,1,1,1,0,1,1,1,0,1,0,0,0,1,0,0,0,0,1,1,1,0,0,0,1,0,1,1,1,1,1,0,1,0,0,1,1,0,1,1,1,1,1,1,1,0,1,0,0,1,0,0,0,0,1,0,1,0,1,0,1,0,1,1,0,0,0,1,0,0,0,1,1,1,1,1,1,0,0,1,1,0,1,1,1,1,1,1,0,0,1,1,1,0,0,1,0,0,1,0,0,0,0,1,0,1,0,1,0,0,0,1,0,0,0,1,1,0,0,0,1,0,0,1,0,0,1,1,1,0,0,1,0,0,0,1,1,0,1,1,0,0,1,1,0,0,0,0,0,1,1,0,0,1,0,0,1,0,1,0,0,0,0,0,0,1,0,1,0,1,1,1,1,1,0,1,0,1,1,1,0,0,0,1,0,0,0,1,1,1,0,1,1,1,0,0,0,1,1,1,0,1,0,1,1,1,1,1,0,1,0,0,0,0,0,0,0,1,0,1,1,0,0,0,1,0,1,0,1,0,0,1,0,1,1,0,1,0,0,1,0,0,1,0,0,1,0,1,1,0,0,1,0,0,0,0,0,0,0,0,1,1,1,0,1,0,0,1,1,1,1,0,0,0,0,1,1,0,0,0,1,1,1,0,0,1,1,1,0,0,1,0,0,0,0,1,0,1,0,0,1,1,0,0,1,1,0,0,0,0,1,0,1,1,1,0,1,1,1,0,0,0,1,1,1,0,0,0,0,1,1,0,0,1,0,1,0,0,1,1,0,1,0,0,1,0,0,0,0,1,1,1,1,1,1,0,1,1,0,1,1,0,1,0,0,1,1,1,0,0,1,0,0,1,0,1,0,1,0,0,0,1,0,1,1,1,0,0,1,0,1,0,0,1,0,0,1,1,1,1,0,0,0,1,0,0,0,1,1,1,0,1,0,0,0,0,0,1,1,0,1,1,0,1,0,1,1,1,1,0,0,1,1,1,1,0,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,1,0,1,1,1,1,1,1,0,1,1,0,0,1,1,0,0,0,0,1,0,0,1,0,0,0,0,1,0,1,1,0,1,1,1,1,1,0,1,0,1,1,1,1,1,0,0,1,0,1,1,0,0,1,1,0,1,0,1,1,1,1,1,1,1,0,0,1,1,0,1,1,0,0,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,0,0,1,0,0,0,1,0,1,1,1,1,0,0,0,1,1,1,0,1,1,1,0,0,0,1,1,0,1,0,0,1,0,1,1,1,0,1,0,1,1,0,1,1,1,0,0,1,1,0,0,0,0,1,1,0,1,1,0,0,0,1,0,0,0,0,0,0,1,0,0,1,1,0,0,1,0,1,1,0,1,1,1,1,0,1,1,1,1,1,1,0,1,0,0,0,1,0,1,1,0,1,1,1,1,0,0,0,0,1,0,1,0,1,0,0,1,0,0,1,0,0,1,1,0,0,0,1,0,0,0,0,1,1,1,0,0,1,0,0,1,0,0,0,0,1,0,0,1,1,0,0,0,1,1,1,1,1,0,0,0,1,0,0,1,1,0,1,1,0,1,1,1,1,0,1,0,0,1,0,1,1,1,1,0,1,0,1,0,1,1,0,0,0,1,1,1,1,1,1,0,0,1,0,1,1,0,1,1,1,1,1,1,0,1,0,1,1,0,0,1,1,0,1,0,0,0,0,0,1,1,1,0,1,0,1,1,0,1,1,1,0,0,0,1,1,0,0,0,1,0,1,0,0,1,0,1,1,1,0,0,0,1,1,1,0,0,0,1,1,0,1,1,1,1,1,0,0,0,0,1,0,1,0,1,0,0,0,1,1,0,0,1,0,1,0,1,1,1,0,1,1,1,0,0,1,0,1,1,1,1,0,1,1,0,0,1,1,1,0,1,1,0,0,1,1,0,1,0,1,1,0,0,0,1,0,1,0,1,1,0,0,0,0,0,1,0,0,0,0,1,0,0,1,1,0,0,1,0,0,1,1,0,0,0,0,1,1,1,0,1,1,1,0,0,0,1,0,1,0,0,0,0,1,1,1,0,1,0,0,0,1,0,1,0,0,1,0,1,0,0,1,1,1,1,1,0,0,0,1,0,0,1,1,1,0,1,1,1,1,0,0,1,0,0,0,0,1,0,1,1,1,1,0,1,0,0,1,0,0,0,0,0,1,0,0,1,1,1,1,0,1,1,1,1,1,0,0,1,0,0,0,1,1,0,0,1,1,0,0,1,0,0,1,0,1,0,0,1,1,1,1,1,1,0,0,0,0,0,1,0,0,1,1,0,1,0,0,0,1,1,0,1,1,1,1,0,1,1,1,1,0,1,1,1,0,1,0,1,1,1,1,0,1,1,0,0,0,1,1,1,1,1,0,0,1,1,1,0,0,0,1,1,0,1,0,1,1,1,0,0,0,0,1,1,0,1,0,1,0,0,0,1,1,0,1,1,0,1,0,1,1,1,1,0,1,1,0,0,1,1,1,0,1,0,1,1,1,0,1,1,1,0,1,1,0,1,0,1,0,0,0,1,1,0,0,0,0,1,0,1,0,0,0,1,1,1,1,0,0,0,1,1,0,1,1,0,0,0,0,1,0,0,1,1,1,1,1,0,1,1,0,1,0,1,1,0,0,0,1,0,1,1,0,1,0,1,1,1,0,0,1,0,0,1,1,1,0,1,1,0,1,0,0,1,0,1,1,0,1,0,1,0,0,1,1,0,1,0,1,1,0,0,0,1,0,1,0,1,0,1,0,0,1,0,0,1,1,1,1,0,1,1,1,0,0,0,0,1,0,1,1,1,1,0,0,0,0,1,1,1,0,0,1,1,0,1,1,0,1,0,1,0,0,1,1,0,1,1,0,0,1,1,0,0,1,0,1,0,1,1,1,1,0,1,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,0,1,0,0,0,1,0,0,0,1,1,0,0,0,0,1,1,1,1,0,1,0,1,1,0,1,1,0,1,1,0,0,1,0,1,0,0,0,0,0,0,1,0,1,0,1,0,0,1,1,0,1,0]},__routerFilterDynamic:{numItems:7,errorRate:1e-4,numBits:135,numHashes:14,bitArray:[1,1,0,1,0,1,1,1,1,1,1,0,1,0,0,0,1,1,1,1,0,0,1,0,0,1,1,0,0,1,1,0,1,1,0,0,0,0,1,0,0,1,1,1,0,1,1,1,1,1,0,0,0,0,1,0,1,1,1,1,1,0,1,1,0,0,0,1,0,1,0,0,0,0,1,0,1,0,1,1,1,0,0,0,0,0,0,1,0,1,1,1,1,0,1,1,0,1,0,0,0,0,1,0,1,1,1,1,0,1,1,0,1,0,1,1,0,0,0,0,0,1,0,0,0,1,1,1,1,0,0,1,1,1,1]},sortedPages:["/_app"]},self.__BUILD_MANIFEST_CB&&self.__BUILD_MANIFEST_CB();
|