@surething/cockpit 1.0.275 → 1.0.276
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 +3 -1
- 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 +14 -0
- package/.next-prod/server/app/_global-error/page.js +2 -2
- package/.next-prod/server/app/_global-error/page.js.nft.json +1 -1
- package/.next-prod/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/.next-prod/server/app/_global-error.html +1 -1
- package/.next-prod/server/app/_global-error.rsc +1 -1
- package/.next-prod/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/.next-prod/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
- package/.next-prod/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next-prod/server/app/_not-found/page.js +1 -1
- package/.next-prod/server/app/_not-found/page.js.nft.json +1 -1
- package/.next-prod/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next-prod/server/app/_not-found.html +2 -2
- package/.next-prod/server/app/_not-found.rsc +3 -3
- package/.next-prod/server/app/_not-found.segments/_full.segment.rsc +3 -3
- package/.next-prod/server/app/_not-found.segments/_index.segment.rsc +3 -3
- package/.next-prod/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/.next-prod/server/app/_not-found.segments/_tree.segment.rsc +2 -2
- package/.next-prod/server/app/api/agent/test/route.js +1 -1
- package/.next-prod/server/app/api/agent/test/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/bash/route.js +1 -1
- package/.next-prod/server/app/api/bash/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/bots/[id]/route.js +1 -0
- package/.next-prod/server/app/api/bots/[id]/route.js.nft.json +1 -0
- package/.next-prod/server/app/api/bots/[id]/route_client-reference-manifest.js +1 -0
- package/.next-prod/server/app/api/bots/route.js +1 -0
- package/.next-prod/server/app/api/bots/route.js.nft.json +1 -0
- package/.next-prod/server/app/api/bots/route_client-reference-manifest.js +1 -0
- 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 +2 -2
- package/.next-prod/server/app/api/db/columns/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/db/connect/route.js +1 -1
- package/.next-prod/server/app/api/db/connect/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/db/disconnect/route.js +1 -1
- package/.next-prod/server/app/api/db/disconnect/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/db/export/route.js +1 -1
- package/.next-prod/server/app/api/db/export/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/db/query/route.js +1 -1
- package/.next-prod/server/app/api/db/query/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/db/schemas/route.js +1 -1
- package/.next-prod/server/app/api/db/schemas/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/deepseek/balance/route.js +1 -1
- package/.next-prod/server/app/api/deepseek/balance/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/deepseek/credentials/route.js +1 -1
- package/.next-prod/server/app/api/deepseek/credentials/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/deepseek/models/route.js +1 -1
- package/.next-prod/server/app/api/deepseek/models/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/dev/spans/route.js +1 -1
- package/.next-prod/server/app/api/dev/spans/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/extension/version/route.js +1 -1
- package/.next-prod/server/app/api/extension/version/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/file/route.js +1 -1
- package/.next-prod/server/app/api/file/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/files/blame/route.js +1 -1
- package/.next-prod/server/app/api/files/blame/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/files/clipboard/route.js +1 -1
- package/.next-prod/server/app/api/files/clipboard/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/files/copy/route.js +1 -1
- package/.next-prod/server/app/api/files/copy/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/files/delete/route.js +1 -1
- package/.next-prod/server/app/api/files/delete/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/files/expanded/route.js +1 -1
- package/.next-prod/server/app/api/files/expanded/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/files/index/route.js +1 -1
- package/.next-prod/server/app/api/files/index/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/files/init/route.js +1 -1
- package/.next-prod/server/app/api/files/init/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/files/paste/route.js +1 -1
- package/.next-prod/server/app/api/files/paste/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/files/read/route.js +1 -1
- package/.next-prod/server/app/api/files/read/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/files/readdir/route.js +1 -1
- package/.next-prod/server/app/api/files/readdir/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/files/recent/route.js +1 -1
- package/.next-prod/server/app/api/files/recent/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/files/save/route.js +1 -1
- package/.next-prod/server/app/api/files/save/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/files/search/route.js +1 -1
- package/.next-prod/server/app/api/files/search/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/files/stat/route.js +1 -1
- package/.next-prod/server/app/api/files/stat/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/files/text/route.js +1 -1
- package/.next-prod/server/app/api/files/text/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/git/blob/route.js +1 -1
- package/.next-prod/server/app/api/git/blob/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/git/branch-diff/route.js +1 -1
- package/.next-prod/server/app/api/git/branch-diff/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/git/branches/route.js +1 -1
- package/.next-prod/server/app/api/git/branches/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/git/commit-diff/route.js +1 -1
- package/.next-prod/server/app/api/git/commit-diff/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/git/commits/route.js +1 -1
- package/.next-prod/server/app/api/git/commits/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/git/current-branch/route.js +1 -1
- package/.next-prod/server/app/api/git/current-branch/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/git/diff/route.js +1 -1
- package/.next-prod/server/app/api/git/diff/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/git/discard/route.js +1 -1
- package/.next-prod/server/app/api/git/discard/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/git/stage/route.js +1 -1
- package/.next-prod/server/app/api/git/stage/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/git/status/route.js +1 -1
- package/.next-prod/server/app/api/git/status/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/git/unstage/route.js +1 -1
- package/.next-prod/server/app/api/git/unstage/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/git/worktree/route.js +1 -1
- package/.next-prod/server/app/api/git/worktree/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/glm/credentials/route.js +1 -1
- package/.next-prod/server/app/api/glm/credentials/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/glm/models/route.js +1 -1
- package/.next-prod/server/app/api/glm/models/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/glm/usage/route.js +1 -1
- package/.next-prod/server/app/api/glm/usage/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/global-state/route.js +2 -2
- 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/instructions/config/route.js +1 -1
- package/.next-prod/server/app/api/instructions/config/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/kimi/credentials/route.js +1 -1
- package/.next-prod/server/app/api/kimi/credentials/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/kimi/models/route.js +1 -1
- package/.next-prod/server/app/api/kimi/models/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/kimi/usage/route.js +1 -1
- package/.next-prod/server/app/api/kimi/usage/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/lsp/definition/route.js +1 -1
- package/.next-prod/server/app/api/lsp/definition/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/lsp/hover/route.js +1 -1
- package/.next-prod/server/app/api/lsp/hover/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/lsp/references/route.js +1 -1
- package/.next-prod/server/app/api/lsp/references/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/lsp/status/route.js +1 -1
- package/.next-prod/server/app/api/lsp/status/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/lsp/warmup/route.js +1 -1
- package/.next-prod/server/app/api/lsp/warmup/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/mysql/columns/route.js +1 -1
- package/.next-prod/server/app/api/mysql/columns/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/mysql/connect/route.js +1 -1
- package/.next-prod/server/app/api/mysql/connect/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/mysql/disconnect/route.js +1 -1
- package/.next-prod/server/app/api/mysql/disconnect/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/mysql/export/route.js +1 -1
- package/.next-prod/server/app/api/mysql/export/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/mysql/query/route.js +1 -1
- package/.next-prod/server/app/api/mysql/query/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/mysql/schemas/route.js +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/push/public-key/route.js +1 -1
- package/.next-prod/server/app/api/push/public-key/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/push/subscribe/route.js +1 -1
- package/.next-prod/server/app/api/push/subscribe/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/push/unsubscribe/route.js +1 -1
- package/.next-prod/server/app/api/push/unsubscribe/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/redis/command/route.js +1 -1
- package/.next-prod/server/app/api/redis/command/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/redis/connect/route.js +1 -1
- package/.next-prod/server/app/api/redis/connect/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/redis/delete/route.js +1 -1
- package/.next-prod/server/app/api/redis/delete/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/redis/disconnect/route.js +1 -1
- package/.next-prod/server/app/api/redis/disconnect/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/redis/get/route.js +1 -1
- package/.next-prod/server/app/api/redis/get/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/redis/keys/route.js +1 -1
- package/.next-prod/server/app/api/redis/keys/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/redis/set/route.js +1 -1
- package/.next-prod/server/app/api/redis/set/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/restart/route.js +1 -1
- package/.next-prod/server/app/api/restart/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/review/[id]/comments/route.js +1 -1
- package/.next-prod/server/app/api/review/[id]/comments/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/review/[id]/replies/route.js +1 -1
- package/.next-prod/server/app/api/review/[id]/replies/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/review/[id]/route.js +1 -1
- package/.next-prod/server/app/api/review/[id]/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/review/identify/route.js +1 -1
- package/.next-prod/server/app/api/review/identify/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/review/order/route.js +1 -1
- package/.next-prod/server/app/api/review/order/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/review/route.js +1 -1
- package/.next-prod/server/app/api/review/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/review/share-info/route.js +1 -1
- package/.next-prod/server/app/api/review/share-info/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/review/users/route.js +1 -1
- package/.next-prod/server/app/api/review/users/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/scheduled-tasks/route.js +2 -2
- package/.next-prod/server/app/api/scheduled-tasks/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/services/config/route.js +1 -1
- package/.next-prod/server/app/api/services/config/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/services/scripts/route.js +1 -1
- package/.next-prod/server/app/api/services/scripts/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/session/[sessionId]/fork/route.js +1 -1
- package/.next-prod/server/app/api/session/[sessionId]/fork/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/session/[sessionId]/history/route.js +1 -1
- package/.next-prod/server/app/api/session/[sessionId]/history/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/session/[sessionId]/turn/route.js +2 -2
- package/.next-prod/server/app/api/session/[sessionId]/turn/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/session/user-messages/route.js +1 -1
- package/.next-prod/server/app/api/session/user-messages/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/delegate/route.js +1 -1
- package/.next-prod/server/app/api/sessions/delegate/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/sessions/search/route.js +1 -1
- package/.next-prod/server/app/api/sessions/search/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/sessions/status/route.js +1 -1
- package/.next-prod/server/app/api/sessions/status/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/settings/route.js +1 -1
- package/.next-prod/server/app/api/settings/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/shutdown/route.js +1 -1
- package/.next-prod/server/app/api/shutdown/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/skills/[id]/route.js +1 -1
- package/.next-prod/server/app/api/skills/[id]/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/skills/content/route.js +1 -1
- package/.next-prod/server/app/api/skills/content/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/skills/route.js +1 -1
- package/.next-prod/server/app/api/skills/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/snapshots/blob/route.js +1 -1
- package/.next-prod/server/app/api/snapshots/blob/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 -1
- package/.next-prod/server/app/api/update/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/update-state/route.js +1 -1
- package/.next-prod/server/app/api/update-state/route.js.nft.json +1 -1
- package/.next-prod/server/app/api/version/route.js +1 -1
- package/.next-prod/server/app/api/version/route.js.nft.json +1 -1
- package/.next-prod/server/app/apps/[...path]/route.js +1 -1
- package/.next-prod/server/app/apps/[...path]/route.js.nft.json +1 -1
- package/.next-prod/server/app/favicon.ico/route.js +1 -1
- package/.next-prod/server/app/favicon.ico/route.js.nft.json +1 -1
- package/.next-prod/server/app/m/page.js +1 -1
- package/.next-prod/server/app/m/page.js.nft.json +1 -1
- package/.next-prod/server/app/m/page_client-reference-manifest.js +1 -1
- package/.next-prod/server/app/manifest.webmanifest/route.js +2 -2
- package/.next-prod/server/app/manifest.webmanifest/route.js.nft.json +1 -1
- package/.next-prod/server/app/page.js +1 -1
- package/.next-prod/server/app/page.js.nft.json +1 -1
- package/.next-prod/server/app/page_client-reference-manifest.js +1 -1
- package/.next-prod/server/app/project/page.js +1 -1
- package/.next-prod/server/app/project/page.js.nft.json +1 -1
- package/.next-prod/server/app/project/page_client-reference-manifest.js +1 -1
- package/.next-prod/server/app/review/[id]/page.js +1 -1
- package/.next-prod/server/app/review/[id]/page.js.nft.json +1 -1
- package/.next-prod/server/app/review/[id]/page_client-reference-manifest.js +1 -1
- package/.next-prod/server/app-paths-manifest.json +3 -1
- package/.next-prod/server/chunks/2493.js +13 -9
- package/.next-prod/server/chunks/{7956.js → 3354.js} +2 -2
- package/.next-prod/server/chunks/6495.js +1 -1
- package/.next-prod/server/chunks/6548.js +1 -1
- package/.next-prod/server/chunks/7438.js +764 -0
- package/.next-prod/server/chunks/{1653.js → 8022.js} +2 -2
- 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/O8neHUIr3dQhe1jcOUsQ8/_buildManifest.js +1 -0
- package/.next-prod/static/chunks/{103-1f50be74a00f89af.js → 50015-b81552adf20a6a33.js} +2 -2
- package/.next-prod/static/chunks/72539-049ac78fc767d177.js +17 -0
- package/.next-prod/static/chunks/89656-d9dd3a8559041236.js +34 -0
- package/.next-prod/static/chunks/99092-5b836813f4b1d4b3.js +716 -0
- package/.next-prod/static/chunks/app/_global-error/{page-b56c0b18a3b4d026.js → page-e2f146f38bb4df42.js} +1 -1
- package/.next-prod/static/chunks/app/api/agent/test/{route-b56c0b18a3b4d026.js → route-e2f146f38bb4df42.js} +1 -1
- package/.next-prod/static/chunks/app/api/bash/{route-b56c0b18a3b4d026.js → route-e2f146f38bb4df42.js} +1 -1
- package/.next-prod/static/chunks/app/api/{chat/codex/route-b56c0b18a3b4d026.js → bots/[id]/route-e2f146f38bb4df42.js} +1 -1
- package/.next-prod/static/chunks/app/api/bots/route-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/app/api/chat/codex/route-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/app/api/chat/deepseek/route-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/app/api/chat/glm/route-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/app/api/chat/kimi/route-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/app/api/chat/ollama/route-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/app/api/chat/route-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/app/api/chat/stop/route-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/app/api/claude-stats/route-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/app/api/commands/route-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/app/api/comments/route-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/app/api/db/columns/route-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/app/api/db/connect/route-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/app/api/db/disconnect/route-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/app/api/db/export/route-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/app/api/db/query/route-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/app/api/db/schemas/route-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/app/api/deepseek/balance/route-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/app/api/deepseek/credentials/route-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/app/api/deepseek/models/route-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/app/api/dev/spans/route-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/app/api/extension/version/route-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/app/api/file/route-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/app/api/files/blame/route-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/app/api/files/clipboard/route-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/app/api/files/copy/route-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/app/api/files/delete/route-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/app/api/files/expanded/route-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/app/api/files/index/route-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/app/api/files/init/route-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/app/api/files/paste/route-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/app/api/files/read/route-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/app/api/files/readdir/route-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/app/api/files/recent/route-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/app/api/files/save/route-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/app/api/files/search/route-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/app/api/files/stat/route-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/app/api/files/text/route-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/app/api/git/blob/route-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/app/api/git/branch-diff/route-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/app/api/git/branches/route-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/app/api/git/commit-diff/route-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/app/api/git/commits/route-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/app/api/git/current-branch/route-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/app/api/git/diff/route-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/app/api/git/discard/route-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/app/api/git/stage/route-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/app/api/git/status/route-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/app/api/git/unstage/route-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/app/api/git/worktree/route-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/app/api/glm/credentials/route-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/app/api/glm/models/route-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/app/api/glm/usage/route-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/app/api/global-state/route-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/app/api/health/route-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/app/api/html-apps/[id]/route-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/app/api/html-apps/route-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/app/api/instructions/config/route-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/app/api/kimi/credentials/route-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/app/api/kimi/models/route-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/app/api/kimi/usage/route-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/app/api/lsp/definition/route-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/app/api/lsp/hover/route-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/app/api/lsp/references/route-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/app/api/lsp/status/route-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/app/api/lsp/warmup/route-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/app/api/mysql/columns/route-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/app/api/mysql/connect/route-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/app/api/mysql/disconnect/route-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/app/api/mysql/export/route-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/app/api/mysql/query/route-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/app/api/mysql/schemas/route-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/app/api/neo4j/connect/route-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/app/api/neo4j/disconnect/route-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/app/api/neo4j/query/route-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/app/api/neo4j/schema/route-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/app/api/note/route-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/app/api/ollama/config/route-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/app/api/ollama/models/route-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/app/api/ollama/start/route-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/app/api/open-cursor/route-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/app/api/open-vscode/route-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/app/api/pick-folder/route-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/app/api/pinned-sessions/route-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/app/api/project-settings/route-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/app/api/project-state/route-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/app/api/projectGraph/affected/route-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/app/api/projectGraph/callees/route-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/app/api/projectGraph/callers/route-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/app/api/projectGraph/coedit/route-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/app/api/projectGraph/context/route-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/app/api/projectGraph/file/route-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/app/api/projectGraph/file-functions/route-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/app/api/projectGraph/impact/route-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/app/api/projectGraph/related/route-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/app/api/projectGraph/risk/route-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/app/api/projectGraph/search/route-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/app/api/projects/route-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/app/api/push/public-key/route-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/app/api/push/subscribe/route-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/app/api/push/unsubscribe/route-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/app/api/redis/command/route-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/app/api/redis/connect/route-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/app/api/redis/delete/route-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/app/api/redis/disconnect/route-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/app/api/redis/get/route-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/app/api/redis/keys/route-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/app/api/redis/set/route-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/app/api/restart/route-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/app/api/review/[id]/comments/route-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/app/api/review/[id]/replies/route-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/app/api/review/[id]/route-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/app/api/review/identify/route-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/app/api/review/order/route-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/app/api/review/route-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/app/api/review/share-info/route-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/app/api/review/users/route-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/app/api/scheduled-tasks/route-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/app/api/services/config/route-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/app/api/services/scripts/route-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/app/api/session/[sessionId]/fork/route-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/app/api/session/[sessionId]/history/route-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/app/api/session/[sessionId]/turn/route-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/app/api/session/user-messages/route-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/app/api/session-by-path/route-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/app/api/sessions/delegate/route-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/app/api/sessions/projects/[encodedPath]/route-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/app/api/sessions/projects/route-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/app/api/sessions/route-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/app/api/sessions/search/route-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/app/api/sessions/status/route-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/app/api/settings/route-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/app/api/shutdown/route-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/app/api/skills/[id]/route-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/app/api/skills/content/route-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/app/api/skills/route-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/app/api/snapshots/blob/route-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/app/api/snapshots/diff/route-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/app/api/snapshots/route-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/app/api/terminal/aliases/route-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/app/api/terminal/autocomplete/route-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/app/api/terminal/bubble-order/route-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/app/api/terminal/env/route-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/app/api/terminal/history/route-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/app/api/update/route-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/app/api/update-state/route-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/app/api/version/route-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/app/apps/[...path]/route-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/app/layout-347ca1b3228d5b23.js +1 -0
- package/.next-prod/static/chunks/app/manifest.webmanifest/route-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/app/page-2ade7ecd21636624.js +1 -0
- package/.next-prod/static/chunks/app/project/page-2ade7ecd21636624.js +1 -0
- package/.next-prod/static/chunks/next/dist/client/components/builtin/app-error-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/next/dist/client/components/builtin/forbidden-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/next/dist/client/components/builtin/not-found-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/chunks/next/dist/client/components/builtin/unauthorized-e2f146f38bb4df42.js +1 -0
- package/.next-prod/static/css/7a02a222d1299650.css +1 -0
- package/.next-prod/trace +15 -15
- package/.next-prod/trace-build +1 -1
- package/.next-prod/types/app/api/bots/[id]/route.ts +353 -0
- package/.next-prod/types/app/api/bots/route.ts +353 -0
- package/.next-prod/types/routes.d.ts +3 -1
- package/.next-prod/types/validator.ts +18 -0
- package/README.md +13 -0
- package/README.zh.md +13 -0
- package/bots/README.md +86 -0
- package/bots/cockpit-helper/BOT.md +95 -0
- package/bots/cockpit-helper/commitments/active.md +3 -0
- package/bots/cockpit-helper/evidence/refs.md +3 -0
- package/bots/cockpit-helper/identity/persona.md +25 -0
- package/bots/cockpit-helper/identity/principles.md +49 -0
- package/bots/cockpit-helper/memory/facts.md +3 -0
- package/bots/cockpit-helper/relationships/user.md +3 -0
- package/dist/{chunk-JJWVBF6H.mjs → chunk-BCWVTDEZ.mjs} +648 -140
- package/dist/{chunk-6R4AHIIV.mjs → chunk-QY2K7YIF.mjs} +1 -1
- package/dist/httpApi.mjs +2 -2
- package/dist/scheduledTasks.mjs +80 -14
- package/dist/wsServer.mjs +2 -2
- package/package.json +2 -1
- package/skills/README.md +18 -2
- package/skills/bot/SKILL.md +155 -0
- package/skills/bot-run/SKILL.md +214 -0
- package/skills/bot-turn/SKILL.md +99 -0
- package/skills/bot-turn/attach.md +45 -0
- package/skills/bot-turn/export.md +113 -0
- package/skills/bot-turn/review.md +101 -0
- package/skills/bot-turn/writing.md +110 -0
- package/.next-prod/server/chunks/5750.js +0 -762
- package/.next-prod/static/chunks/72539-7e4ca2de5c9f3f90.js +0 -17
- package/.next-prod/static/chunks/89656-bc48af1f9ee9c312.js +0 -32
- package/.next-prod/static/chunks/99092-36ee2c49e4c4c059.js +0 -716
- package/.next-prod/static/chunks/app/api/chat/deepseek/route-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/app/api/chat/glm/route-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/app/api/chat/kimi/route-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/app/api/chat/ollama/route-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/app/api/chat/route-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/app/api/chat/stop/route-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/app/api/claude-stats/route-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/app/api/commands/route-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/app/api/comments/route-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/app/api/db/columns/route-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/app/api/db/connect/route-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/app/api/db/disconnect/route-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/app/api/db/export/route-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/app/api/db/query/route-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/app/api/db/schemas/route-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/app/api/deepseek/balance/route-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/app/api/deepseek/credentials/route-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/app/api/deepseek/models/route-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/app/api/dev/spans/route-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/app/api/extension/version/route-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/app/api/file/route-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/app/api/files/blame/route-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/app/api/files/clipboard/route-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/app/api/files/copy/route-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/app/api/files/delete/route-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/app/api/files/expanded/route-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/app/api/files/index/route-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/app/api/files/init/route-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/app/api/files/paste/route-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/app/api/files/read/route-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/app/api/files/readdir/route-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/app/api/files/recent/route-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/app/api/files/save/route-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/app/api/files/search/route-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/app/api/files/stat/route-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/app/api/files/text/route-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/app/api/git/blob/route-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/app/api/git/branch-diff/route-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/app/api/git/branches/route-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/app/api/git/commit-diff/route-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/app/api/git/commits/route-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/app/api/git/current-branch/route-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/app/api/git/diff/route-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/app/api/git/discard/route-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/app/api/git/stage/route-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/app/api/git/status/route-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/app/api/git/unstage/route-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/app/api/git/worktree/route-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/app/api/glm/credentials/route-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/app/api/glm/models/route-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/app/api/glm/usage/route-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/app/api/global-state/route-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/app/api/health/route-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/app/api/html-apps/[id]/route-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/app/api/html-apps/route-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/app/api/instructions/config/route-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/app/api/kimi/credentials/route-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/app/api/kimi/models/route-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/app/api/kimi/usage/route-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/app/api/lsp/definition/route-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/app/api/lsp/hover/route-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/app/api/lsp/references/route-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/app/api/lsp/status/route-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/app/api/lsp/warmup/route-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/app/api/mysql/columns/route-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/app/api/mysql/connect/route-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/app/api/mysql/disconnect/route-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/app/api/mysql/export/route-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/app/api/mysql/query/route-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/app/api/mysql/schemas/route-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/app/api/neo4j/connect/route-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/app/api/neo4j/disconnect/route-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/app/api/neo4j/query/route-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/app/api/neo4j/schema/route-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/app/api/note/route-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/app/api/ollama/config/route-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/app/api/ollama/models/route-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/app/api/ollama/start/route-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/app/api/open-cursor/route-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/app/api/open-vscode/route-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/app/api/pick-folder/route-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/app/api/pinned-sessions/route-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/app/api/project-settings/route-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/app/api/project-state/route-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/app/api/projectGraph/affected/route-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/app/api/projectGraph/callees/route-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/app/api/projectGraph/callers/route-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/app/api/projectGraph/coedit/route-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/app/api/projectGraph/context/route-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/app/api/projectGraph/file/route-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/app/api/projectGraph/file-functions/route-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/app/api/projectGraph/impact/route-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/app/api/projectGraph/related/route-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/app/api/projectGraph/risk/route-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/app/api/projectGraph/search/route-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/app/api/projects/route-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/app/api/push/public-key/route-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/app/api/push/subscribe/route-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/app/api/push/unsubscribe/route-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/app/api/redis/command/route-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/app/api/redis/connect/route-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/app/api/redis/delete/route-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/app/api/redis/disconnect/route-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/app/api/redis/get/route-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/app/api/redis/keys/route-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/app/api/redis/set/route-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/app/api/restart/route-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/app/api/review/[id]/comments/route-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/app/api/review/[id]/replies/route-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/app/api/review/[id]/route-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/app/api/review/identify/route-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/app/api/review/order/route-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/app/api/review/route-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/app/api/review/share-info/route-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/app/api/review/users/route-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/app/api/scheduled-tasks/route-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/app/api/services/config/route-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/app/api/services/scripts/route-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/app/api/session/[sessionId]/fork/route-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/app/api/session/[sessionId]/history/route-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/app/api/session/[sessionId]/turn/route-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/app/api/session/user-messages/route-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/app/api/session-by-path/route-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/app/api/sessions/delegate/route-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/app/api/sessions/projects/[encodedPath]/route-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/app/api/sessions/projects/route-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/app/api/sessions/route-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/app/api/sessions/search/route-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/app/api/sessions/status/route-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/app/api/settings/route-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/app/api/shutdown/route-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/app/api/skills/[id]/route-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/app/api/skills/content/route-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/app/api/skills/route-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/app/api/snapshots/blob/route-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/app/api/snapshots/diff/route-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/app/api/snapshots/route-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/app/api/terminal/aliases/route-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/app/api/terminal/autocomplete/route-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/app/api/terminal/bubble-order/route-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/app/api/terminal/env/route-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/app/api/terminal/history/route-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/app/api/update/route-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/app/api/update-state/route-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/app/api/version/route-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/app/apps/[...path]/route-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/app/layout-5e8ca15dabb4d8c2.js +0 -1
- package/.next-prod/static/chunks/app/manifest.webmanifest/route-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/app/page-eb7a11e6dd6a9e94.js +0 -1
- package/.next-prod/static/chunks/app/project/page-eb7a11e6dd6a9e94.js +0 -1
- package/.next-prod/static/chunks/next/dist/client/components/builtin/app-error-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/next/dist/client/components/builtin/forbidden-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/next/dist/client/components/builtin/not-found-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/chunks/next/dist/client/components/builtin/unauthorized-b56c0b18a3b4d026.js +0 -1
- package/.next-prod/static/css/08c892de6d5e2335.css +0 -1
- package/.next-prod/static/mTTTlFslhC7zzHMDXGNOW/_buildManifest.js +0 -1
- /package/.next-prod/static/{mTTTlFslhC7zzHMDXGNOW → O8neHUIr3dQhe1jcOUsQ8}/_ssgManifest.js +0 -0
package/dist/httpApi.mjs
CHANGED
|
@@ -27,10 +27,10 @@ import {
|
|
|
27
27
|
unregisterBrowser,
|
|
28
28
|
unregisterTerminal,
|
|
29
29
|
writeStdinToCommand
|
|
30
|
-
} from "./chunk-
|
|
30
|
+
} from "./chunk-QY2K7YIF.mjs";
|
|
31
31
|
import {
|
|
32
32
|
getTerminalHistoryPath
|
|
33
|
-
} from "./chunk-
|
|
33
|
+
} from "./chunk-BCWVTDEZ.mjs";
|
|
34
34
|
import "./chunk-7P6ASYW6.mjs";
|
|
35
35
|
|
|
36
36
|
// src/lib/httpApi.ts
|
package/dist/scheduledTasks.mjs
CHANGED
|
@@ -17,11 +17,12 @@ import {
|
|
|
17
17
|
isRunActive,
|
|
18
18
|
mutateJsonFile,
|
|
19
19
|
readJsonFile,
|
|
20
|
+
readJsonFileForUpdate,
|
|
20
21
|
requestStop,
|
|
21
22
|
updateGlobalState,
|
|
22
23
|
withFileLock,
|
|
23
24
|
writeJsonFile
|
|
24
|
-
} from "./chunk-
|
|
25
|
+
} from "./chunk-BCWVTDEZ.mjs";
|
|
25
26
|
import "./chunk-7P6ASYW6.mjs";
|
|
26
27
|
|
|
27
28
|
// packages/feature/agent/src/server/scheduledTasks.ts
|
|
@@ -254,7 +255,8 @@ var en_default = {
|
|
|
254
255
|
reloadNow: "Reload",
|
|
255
256
|
upgradeCommandCopied: "Copied `cockpit update`",
|
|
256
257
|
projectNotes: "Project Notes",
|
|
257
|
-
closeProject: "Close project"
|
|
258
|
+
closeProject: "Close project",
|
|
259
|
+
bots: "Bots"
|
|
258
260
|
},
|
|
259
261
|
mobile: {
|
|
260
262
|
useDesktop: "Desktop",
|
|
@@ -601,7 +603,7 @@ var en_default = {
|
|
|
601
603
|
codexResumeFailed: "Previous session is in use by another Codex client \u2014 started a new session; history was not carried over",
|
|
602
604
|
codexResumeFailedPrevious: "Previous session",
|
|
603
605
|
codexResumeFailedNew: "New session",
|
|
604
|
-
placeholder: "Type a message, Enter to send (Shift+Enter for new line, paste images; start a line with / (
|
|
606
|
+
placeholder: "Type a message, Enter to send (Shift+Enter for new line, paste images; start a line with / (skill), /@ (skill in a subagent) or @ (bot in a subagent), multiple allowed)",
|
|
605
607
|
placeholderDisabled: "Generating... you can keep typing (ESC to cancel; if stuck, cancel and resend 'continue')",
|
|
606
608
|
imageSizeLimit: "Image size exceeds limit (max 5MB), current: {{size}}MB",
|
|
607
609
|
viewGitChanges: "View Git changes",
|
|
@@ -1342,6 +1344,29 @@ var en_default = {
|
|
|
1342
1344
|
reviewUtils: {
|
|
1343
1345
|
adjectives: ["Happy", "Brave", "Quiet", "Bright", "Gentle", "Agile", "Free", "Clear", "Flying", "Relaxed", "Lively", "Wise", "Calm", "Alert", "Composed", "Steady", "Cheerful", "Warm", "Bold", "Poised"],
|
|
1344
1346
|
nouns: ["Panda", "Dolphin", "Crane", "Snow Leopard", "Skylark", "Squirrel", "Flying Fish", "Deer", "Bluebird", "Silver Fox", "Owl", "Dragonfly", "Firefly", "Sea Turtle", "Butterfly", "Monkey", "Red-crowned Crane", "Antelope", "Swallow", "Penguin"]
|
|
1347
|
+
},
|
|
1348
|
+
bots: {
|
|
1349
|
+
title: "Bots",
|
|
1350
|
+
search: "Search bots",
|
|
1351
|
+
addExisting: "Add bot",
|
|
1352
|
+
addTooltip: "Add as Bot",
|
|
1353
|
+
emptyNoMatch: "No bots match your search.",
|
|
1354
|
+
emptyNoBots: "No bots of your own yet.",
|
|
1355
|
+
emptyCreatePrefix: "Use",
|
|
1356
|
+
emptyCreateSuffix: "in chat to create one.",
|
|
1357
|
+
emptyAddExisting: "add an existing Bot directory",
|
|
1358
|
+
invalid: "Invalid",
|
|
1359
|
+
builtin: "Built-in",
|
|
1360
|
+
remove: "Remove registration",
|
|
1361
|
+
open: "Open as project",
|
|
1362
|
+
pathPlaceholder: "Absolute path to a Bot directory or its BOT.md",
|
|
1363
|
+
addHint: "The directory must contain a BOT.md. Its files are not changed.",
|
|
1364
|
+
added: "Bot added",
|
|
1365
|
+
alreadyAdded: "Already added",
|
|
1366
|
+
removed: "Bot removed; its files were kept.",
|
|
1367
|
+
loadFailed: "Failed to load bots",
|
|
1368
|
+
saveFailed: "Failed to add bot",
|
|
1369
|
+
removeFailed: "Failed to remove bot"
|
|
1345
1370
|
}
|
|
1346
1371
|
};
|
|
1347
1372
|
|
|
@@ -1569,7 +1594,8 @@ var zh_default = {
|
|
|
1569
1594
|
reloadNow: "\u5237\u65B0",
|
|
1570
1595
|
upgradeCommandCopied: "\u5DF2\u590D\u5236 `cockpit update`",
|
|
1571
1596
|
projectNotes: "\u9879\u76EE\u7B14\u8BB0",
|
|
1572
|
-
closeProject: "\u5173\u95ED\u9879\u76EE"
|
|
1597
|
+
closeProject: "\u5173\u95ED\u9879\u76EE",
|
|
1598
|
+
bots: "\u673A\u5668\u4EBA"
|
|
1573
1599
|
},
|
|
1574
1600
|
mobile: {
|
|
1575
1601
|
useDesktop: "\u684C\u9762\u7248",
|
|
@@ -1916,7 +1942,7 @@ var zh_default = {
|
|
|
1916
1942
|
codexResumeFailed: "\u539F\u4F1A\u8BDD\u88AB\u5176\u4ED6 Codex \u5BA2\u6237\u7AEF\u5360\u7528\uFF0C\u5DF2\u65B0\u5EFA\u4F1A\u8BDD\uFF0C\u5386\u53F2\u672A\u7EE7\u627F",
|
|
1917
1943
|
codexResumeFailedPrevious: "\u539F\u4F1A\u8BDD",
|
|
1918
1944
|
codexResumeFailedNew: "\u65B0\u4F1A\u8BDD",
|
|
1919
|
-
placeholder: "\u8F93\u5165\u6D88\u606F\uFF0CEnter \u53D1\u9001\uFF08Shift+Enter \u6362\u884C\uFF0C\u53EF\u7C98\u8D34\u56FE\u7247\uFF1B\u884C\u9996 /\uFF08\
|
|
1945
|
+
placeholder: "\u8F93\u5165\u6D88\u606F\uFF0CEnter \u53D1\u9001\uFF08Shift+Enter \u6362\u884C\uFF0C\u53EF\u7C98\u8D34\u56FE\u7247\uFF1B\u884C\u9996 /\uFF08skill\uFF09\u3001/@\uFF08\u5B50\u4EE3\u7406\u6267\u884C skill\uFF09\u6216 @\uFF08\u5B50\u4EE3\u7406\u6267\u884C\u673A\u5668\u4EBA\uFF09\uFF0C\u652F\u6301\u591A\u884C\u591A\u547D\u4EE4\uFF09",
|
|
1920
1946
|
placeholderDisabled: "\u751F\u6210\u4E2D... \u53EF\u7EE7\u7EED\u8F93\u5165 (ESC \u53D6\u6D88;\u5361\u4F4F\u592A\u4E45\u53EF\u53D6\u6D88\u540E\u91CD\u53D1\u300C\u7EE7\u7EED\u300D)",
|
|
1921
1947
|
imageSizeLimit: "\u56FE\u7247\u5927\u5C0F\u8D85\u8FC7\u9650\u5236\uFF08\u6700\u5927 5MB\uFF09\uFF0C\u5F53\u524D\u5927\u5C0F: {{size}}MB",
|
|
1922
1948
|
viewGitChanges: "\u67E5\u770B Git \u53D8\u66F4",
|
|
@@ -2657,6 +2683,29 @@ var zh_default = {
|
|
|
2657
2683
|
reviewUtils: {
|
|
2658
2684
|
adjectives: ["\u5FEB\u4E50", "\u52C7\u6562", "\u5B89\u9759", "\u660E\u4EAE", "\u6E29\u67D4", "\u7075\u5DE7", "\u81EA\u7531", "\u6E05\u6F88", "\u98DE\u7FD4", "\u60A0\u95F2", "\u6D3B\u6CFC", "\u806A\u6167", "\u6DE1\u5B9A", "\u673A\u654F", "\u4ECE\u5BB9", "\u575A\u5B9A", "\u723D\u6717", "\u548C\u7166", "\u5954\u653E", "\u6C89\u7A33"],
|
|
2659
2685
|
nouns: ["\u718A\u732B", "\u6D77\u8C5A", "\u767D\u9E64", "\u96EA\u8C79", "\u4E91\u96C0", "\u677E\u9F20", "\u98DE\u9C7C", "\u6885\u82B1\u9E7F", "\u9752\u9E1F", "\u94F6\u72D0", "\u732B\u5934\u9E70", "\u873B\u8713", "\u8424\u706B\u866B", "\u6D77\u9F9F", "\u8774\u8776", "\u91D1\u4E1D\u7334", "\u4E39\u9876\u9E64", "\u7F9A\u7F8A", "\u71D5\u5B50", "\u4F01\u9E45"]
|
|
2686
|
+
},
|
|
2687
|
+
bots: {
|
|
2688
|
+
title: "\u673A\u5668\u4EBA",
|
|
2689
|
+
search: "\u641C\u7D22\u673A\u5668\u4EBA",
|
|
2690
|
+
addExisting: "\u6DFB\u52A0\u673A\u5668\u4EBA",
|
|
2691
|
+
addTooltip: "\u6DFB\u52A0\u4E3A\u673A\u5668\u4EBA",
|
|
2692
|
+
emptyNoMatch: "\u6CA1\u6709\u5339\u914D\u7684\u673A\u5668\u4EBA\u3002",
|
|
2693
|
+
emptyNoBots: "\u8FD8\u6CA1\u6709\u4F60\u81EA\u5DF1\u7684\u673A\u5668\u4EBA\u3002",
|
|
2694
|
+
emptyCreatePrefix: "\u5728\u804A\u5929\u91CC\u4F7F\u7528",
|
|
2695
|
+
emptyCreateSuffix: "\u521B\u5EFA\u4E00\u4E2A\u3002",
|
|
2696
|
+
emptyAddExisting: "\u6DFB\u52A0\u5DF2\u6709\u7684\u673A\u5668\u4EBA\u76EE\u5F55",
|
|
2697
|
+
invalid: "\u65E0\u6548",
|
|
2698
|
+
builtin: "\u5185\u7F6E",
|
|
2699
|
+
remove: "\u79FB\u9664\u6CE8\u518C",
|
|
2700
|
+
open: "\u4F5C\u4E3A\u9879\u76EE\u6253\u5F00",
|
|
2701
|
+
pathPlaceholder: "\u673A\u5668\u4EBA\u76EE\u5F55\u6216\u5176 BOT.md \u7684\u7EDD\u5BF9\u8DEF\u5F84",
|
|
2702
|
+
addHint: "\u76EE\u5F55\u4E2D\u5FC5\u987B\u5305\u542B BOT.md\uFF0C\u4E0D\u4F1A\u6539\u52A8\u5176\u4E2D\u7684\u6587\u4EF6\u3002",
|
|
2703
|
+
added: "\u673A\u5668\u4EBA\u5DF2\u6DFB\u52A0",
|
|
2704
|
+
alreadyAdded: "\u5DF2\u6DFB\u52A0\u8FC7",
|
|
2705
|
+
removed: "\u5DF2\u79FB\u9664\u673A\u5668\u4EBA\u6CE8\u518C\uFF0C\u76EE\u5F55\u6587\u4EF6\u4ECD\u4FDD\u7559\u3002",
|
|
2706
|
+
loadFailed: "\u52A0\u8F7D\u673A\u5668\u4EBA\u5931\u8D25",
|
|
2707
|
+
saveFailed: "\u6DFB\u52A0\u673A\u5668\u4EBA\u5931\u8D25",
|
|
2708
|
+
removeFailed: "\u79FB\u9664\u673A\u5668\u4EBA\u5931\u8D25"
|
|
2660
2709
|
}
|
|
2661
2710
|
};
|
|
2662
2711
|
|
|
@@ -2852,6 +2901,8 @@ var ScheduledTaskManager = class {
|
|
|
2852
2901
|
this.firing = /* @__PURE__ */ new Set();
|
|
2853
2902
|
this.initialized = false;
|
|
2854
2903
|
this.initPromise = null;
|
|
2904
|
+
/** Set when the task file exists but does not parse; see init(). */
|
|
2905
|
+
this.loadFailed = false;
|
|
2855
2906
|
this.onTaskFired = null;
|
|
2856
2907
|
}
|
|
2857
2908
|
/**
|
|
@@ -2871,7 +2922,17 @@ var ScheduledTaskManager = class {
|
|
|
2871
2922
|
async init() {
|
|
2872
2923
|
if (this.initialized) return;
|
|
2873
2924
|
this.initialized = true;
|
|
2874
|
-
|
|
2925
|
+
try {
|
|
2926
|
+
this.tasks = await readJsonFileForUpdate(SCHEDULED_TASKS_FILE, []);
|
|
2927
|
+
} catch (error) {
|
|
2928
|
+
this.loadFailed = true;
|
|
2929
|
+
this.tasks = [];
|
|
2930
|
+
console.error(
|
|
2931
|
+
`[ScheduledTaskManager] ${SCHEDULED_TASKS_FILE} could not be read \u2014 NO scheduled task will fire until it is fixed. The file has been left untouched:`,
|
|
2932
|
+
error
|
|
2933
|
+
);
|
|
2934
|
+
return;
|
|
2935
|
+
}
|
|
2875
2936
|
console.log(`[ScheduledTaskManager] Loaded ${this.tasks.length} scheduled tasks`);
|
|
2876
2937
|
for (const task of this.tasks) {
|
|
2877
2938
|
if (!task.paused && !task.completed) {
|
|
@@ -2880,6 +2941,10 @@ var ScheduledTaskManager = class {
|
|
|
2880
2941
|
}
|
|
2881
2942
|
await this.saveToDisk();
|
|
2882
2943
|
}
|
|
2944
|
+
/** True when init() could not parse the task file: no timers, and no writes. */
|
|
2945
|
+
isLoadFailed() {
|
|
2946
|
+
return this.loadFailed;
|
|
2947
|
+
}
|
|
2883
2948
|
/**
|
|
2884
2949
|
* Register a task-fired callback (used for WS broadcast).
|
|
2885
2950
|
*/
|
|
@@ -2890,7 +2955,7 @@ var ScheduledTaskManager = class {
|
|
|
2890
2955
|
* Read tasks from disk (avoids in-memory inconsistency between dual module instances).
|
|
2891
2956
|
*/
|
|
2892
2957
|
async readTasksFromDisk() {
|
|
2893
|
-
return
|
|
2958
|
+
return readJsonFileForUpdate(SCHEDULED_TASKS_FILE, []);
|
|
2894
2959
|
}
|
|
2895
2960
|
/**
|
|
2896
2961
|
* Return all tasks for the current instance (reads from disk each time to ensure cross-instance consistency).
|
|
@@ -2928,7 +2993,7 @@ var ScheduledTaskManager = class {
|
|
|
2928
2993
|
async updateTask(id, fields) {
|
|
2929
2994
|
await this.ensureInit();
|
|
2930
2995
|
const task = await withFileLock(SCHEDULED_TASKS_FILE, async () => {
|
|
2931
|
-
const allTasks = await
|
|
2996
|
+
const allTasks = await readJsonFileForUpdate(SCHEDULED_TASKS_FILE, []);
|
|
2932
2997
|
const idx = allTasks.findIndex((t) => t.id === id);
|
|
2933
2998
|
if (idx === -1) return null;
|
|
2934
2999
|
const updated = { ...allTasks[idx], ...fields };
|
|
@@ -2953,7 +3018,7 @@ var ScheduledTaskManager = class {
|
|
|
2953
3018
|
async deleteTask(id) {
|
|
2954
3019
|
await this.ensureInit();
|
|
2955
3020
|
const removed = await withFileLock(SCHEDULED_TASKS_FILE, async () => {
|
|
2956
|
-
const allTasks = await
|
|
3021
|
+
const allTasks = await readJsonFileForUpdate(SCHEDULED_TASKS_FILE, []);
|
|
2957
3022
|
const idx = allTasks.findIndex((t) => t.id === id);
|
|
2958
3023
|
if (idx === -1) return false;
|
|
2959
3024
|
allTasks.splice(idx, 1);
|
|
@@ -2978,7 +3043,7 @@ var ScheduledTaskManager = class {
|
|
|
2978
3043
|
* Resume a task.
|
|
2979
3044
|
*/
|
|
2980
3045
|
async resumeTask(id) {
|
|
2981
|
-
const allTasks = await
|
|
3046
|
+
const allTasks = await readJsonFileForUpdate(SCHEDULED_TASKS_FILE, []);
|
|
2982
3047
|
const task = allTasks.find((t) => t.id === id);
|
|
2983
3048
|
if (!task) return null;
|
|
2984
3049
|
const now = Date.now();
|
|
@@ -3005,7 +3070,7 @@ var ScheduledTaskManager = class {
|
|
|
3005
3070
|
*/
|
|
3006
3071
|
async triggerTask(id) {
|
|
3007
3072
|
await this.ensureInit();
|
|
3008
|
-
const allTasks = await
|
|
3073
|
+
const allTasks = await readJsonFileForUpdate(SCHEDULED_TASKS_FILE, []);
|
|
3009
3074
|
const task = allTasks.find((t) => t.id === id);
|
|
3010
3075
|
if (!task) return false;
|
|
3011
3076
|
const memIdx = this.tasks.findIndex((t) => t.id === id);
|
|
@@ -3059,7 +3124,7 @@ var ScheduledTaskManager = class {
|
|
|
3059
3124
|
async markReadBySessionId(sessionId) {
|
|
3060
3125
|
await this.ensureInit();
|
|
3061
3126
|
await withFileLock(SCHEDULED_TASKS_FILE, async () => {
|
|
3062
|
-
const allTasks = await
|
|
3127
|
+
const allTasks = await readJsonFileForUpdate(SCHEDULED_TASKS_FILE, []);
|
|
3063
3128
|
let changed = false;
|
|
3064
3129
|
for (const task of allTasks) {
|
|
3065
3130
|
if (task.sessionId === sessionId && task.unread) {
|
|
@@ -3076,7 +3141,7 @@ var ScheduledTaskManager = class {
|
|
|
3076
3141
|
async markAllRead() {
|
|
3077
3142
|
await this.ensureInit();
|
|
3078
3143
|
await withFileLock(SCHEDULED_TASKS_FILE, async () => {
|
|
3079
|
-
const allTasks = await
|
|
3144
|
+
const allTasks = await readJsonFileForUpdate(SCHEDULED_TASKS_FILE, []);
|
|
3080
3145
|
let changed = false;
|
|
3081
3146
|
for (const task of allTasks) {
|
|
3082
3147
|
if (task.unread) {
|
|
@@ -3093,7 +3158,7 @@ var ScheduledTaskManager = class {
|
|
|
3093
3158
|
async reorderTasks(orderedIds) {
|
|
3094
3159
|
await this.ensureInit();
|
|
3095
3160
|
await withFileLock(SCHEDULED_TASKS_FILE, async () => {
|
|
3096
|
-
const allTasks = await
|
|
3161
|
+
const allTasks = await readJsonFileForUpdate(SCHEDULED_TASKS_FILE, []);
|
|
3097
3162
|
for (let i = 0; i < orderedIds.length; i++) {
|
|
3098
3163
|
const task = allTasks.find((t) => t.id === orderedIds[i]);
|
|
3099
3164
|
if (task) task.sortIndex = i;
|
|
@@ -3209,6 +3274,7 @@ var ScheduledTaskManager = class {
|
|
|
3209
3274
|
}
|
|
3210
3275
|
}
|
|
3211
3276
|
async saveToDisk() {
|
|
3277
|
+
if (this.loadFailed) return;
|
|
3212
3278
|
try {
|
|
3213
3279
|
await mutateJsonFile(SCHEDULED_TASKS_FILE, [], () => [...this.tasks]);
|
|
3214
3280
|
} catch (error) {
|
package/dist/wsServer.mjs
CHANGED
|
@@ -13,7 +13,7 @@ import {
|
|
|
13
13
|
resolvePendingRequest,
|
|
14
14
|
unregisterBrowser,
|
|
15
15
|
writeStdinToCommand
|
|
16
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-QY2K7YIF.mjs";
|
|
17
17
|
import {
|
|
18
18
|
Effect_exports,
|
|
19
19
|
FSError,
|
|
@@ -33,7 +33,7 @@ import {
|
|
|
33
33
|
recoverStashedCodexRollouts,
|
|
34
34
|
recoverStashedTranscripts,
|
|
35
35
|
sanitizedSpawnEnv
|
|
36
|
-
} from "./chunk-
|
|
36
|
+
} from "./chunk-BCWVTDEZ.mjs";
|
|
37
37
|
import {
|
|
38
38
|
registerWatcherSubscriber,
|
|
39
39
|
subscribeBuildProgress
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@surething/cockpit",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.276",
|
|
4
4
|
"description": "OpenCockpit is 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",
|
|
@@ -68,6 +68,7 @@
|
|
|
68
68
|
"bin",
|
|
69
69
|
"chrome-extension",
|
|
70
70
|
"apps",
|
|
71
|
+
"bots",
|
|
71
72
|
"!**/*.test.*",
|
|
72
73
|
"!**/*.spec.*",
|
|
73
74
|
"public",
|
package/skills/README.md
CHANGED
|
@@ -21,10 +21,17 @@ sets `COCKPIT_ROOT` to the package root), then:
|
|
|
21
21
|
*is* the registry, for both dispatch and the `/api/commands` autocomplete
|
|
22
22
|
dropdown (whose description text comes from each file's frontmatter).
|
|
23
23
|
2. On dispatch the file is read, `{{BASE_URL}}` is substituted with
|
|
24
|
-
`http://localhost:<port
|
|
24
|
+
`http://localhost:<port>` and `{{COCKPIT_DIR}}` with the resolved data
|
|
25
|
+
directory (`$COCKPIT_HOME`, default `~/.cockpit`), and the result is written to
|
|
25
26
|
`~/.cockpit/skills/<cmd>/SKILL.md` — the copy the agent is pointed at, so
|
|
26
27
|
builtins travel the same "read this skill file" path as user skills.
|
|
27
|
-
3.
|
|
28
|
+
3. Any **other** `*.md` in `skills/<cmd>/` is copied next to it with the same
|
|
29
|
+
substitution. These are reference files, not commands — step 1 keys on
|
|
30
|
+
directories holding a `SKILL.md`, so adding one never registers a verb.
|
|
31
|
+
A SKILL.md points at `{{COCKPIT_DIR}}/skills/<cmd>/<file>.md` to defer the
|
|
32
|
+
part most invocations do not need (`bot-turn` keeps its write lock and its
|
|
33
|
+
review checklist out of every ordinary Bot turn this way).
|
|
34
|
+
4. A user-registered skill with the same `name` shadows the builtin.
|
|
28
35
|
|
|
29
36
|
Edits take effect on the next dispatch — no rebuild, no restart.
|
|
30
37
|
|
|
@@ -35,6 +42,9 @@ Edits take effect on the next dispatch — no rebuild, no restart.
|
|
|
35
42
|
```yaml
|
|
36
43
|
---
|
|
37
44
|
name: <cmd> # MUST equal the directory name
|
|
45
|
+
hidden: true # optional — machinery, not a command to type: still
|
|
46
|
+
# dispatchable and still read by whoever references it,
|
|
47
|
+
# just left out of the `/` autocomplete (see bot-run)
|
|
38
48
|
description: <one line — this is verbatim what the autocomplete dropdown
|
|
39
49
|
shows; it is NOT translated, and must not be given an
|
|
40
50
|
i18n commands.<cmd> key, which would silently override it>
|
|
@@ -44,6 +54,12 @@ Edits take effect on the next dispatch — no rebuild, no restart.
|
|
|
44
54
|
|
|
45
55
|
2. Body is English prose. Use `{{BASE_URL}}` for any URL the agent must curl
|
|
46
56
|
on the server host.
|
|
57
|
+
|
|
58
|
+
Split it when one part is long and rarely needed: put that part in
|
|
59
|
+
`skills/<cmd>/<file>.md` and have SKILL.md name the absolute path plus the
|
|
60
|
+
condition for opening it. Keep the *consequence* of not opening it in
|
|
61
|
+
SKILL.md — a deferred rule the model never learns it should fetch is the
|
|
62
|
+
same as a deleted one.
|
|
47
63
|
3. That's it — no TypeScript to touch. Both the dropdown and the dispatcher
|
|
48
64
|
pick it up from the directory.
|
|
49
65
|
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: bot
|
|
3
|
+
description: "Create a Bot: a plain directory with BOT.md and long-term context, addressed as @name."
|
|
4
|
+
argument-hint: "[what the Bot is for]"
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Creating a Bot
|
|
8
|
+
|
|
9
|
+
A **Bot** is a plain directory with a `BOT.md` at its root. Once registered, a line starting with
|
|
10
|
+
`@name` in any chat is handed to a session of its own, which reads `BOT.md` and uses the Bot's
|
|
11
|
+
files as its long-term context. Its files change only when the user explicitly asks (remember /
|
|
12
|
+
update / correct / forget), under a short write lock, so parallel sessions keep reading freely.
|
|
13
|
+
|
|
14
|
+
**This skill does one thing: create a new Bot.** Everything you can do *to* an existing Bot is
|
|
15
|
+
addressed to the Bot itself, not to this command — `@name review` to sweep it, `@name attach <path
|
|
16
|
+
to SKILL.md>` to give it a tool, `@name export to <path>` to make a shareable copy with no memory
|
|
17
|
+
in it, `@name <task>` for ordinary work. That is where those instructions live too, so they
|
|
18
|
+
improve for every existing Bot at once. If the request is about a Bot that already exists, say
|
|
19
|
+
which `@name` line does it and stop.
|
|
20
|
+
|
|
21
|
+
**Cloning one is not an exception.** "Copy this Bot", "make me another one like it", "turn it into
|
|
22
|
+
a template" all operate on a Bot that exists, so they are `@name export to <path>` — and they need
|
|
23
|
+
a session that has read the whole source directory to tell a general procedure from this user's
|
|
24
|
+
private memory. Say that line and stop; do not scaffold a copy from here.
|
|
25
|
+
|
|
26
|
+
`curl -s {{BASE_URL}}/api/bots` lists registered Bots with their `name`, `description` and
|
|
27
|
+
absolute `path` — use it to check a new name for clashes.
|
|
28
|
+
|
|
29
|
+
## 1. Create: align first, write only after confirmation
|
|
30
|
+
|
|
31
|
+
1. **Align on the Bot** — restate in a few lines what this Bot is for: its role, what it
|
|
32
|
+
should remember, and what it is responsible for keeping up to date. Ask back only when the
|
|
33
|
+
request is genuinely ambiguous.
|
|
34
|
+
2. **Tell the name and directory** — resolve both and state them exactly:
|
|
35
|
+
- **You pick `<name>`** from the request: lowercase letters, digits and `-`, starting with a
|
|
36
|
+
letter or digit (it becomes the `@name` mention). Check it against the registry above.
|
|
37
|
+
- The user gave a directory → `<that directory>/<name>/`; none given →
|
|
38
|
+
`{{COCKPIT_DIR}}/bots/<name>/`.
|
|
39
|
+
- The target must not already exist, or must be empty. Never overwrite an existing directory.
|
|
40
|
+
3. **Write only after confirmation** — once the user agrees, create the files below with
|
|
41
|
+
`Write`.
|
|
42
|
+
4. **Hand over registration** — do NOT register it yourself. Tell the user the directory
|
|
43
|
+
path and the two ways to add it: open the **Bots** panel → **Add bot** and paste the path,
|
|
44
|
+
or open `BOT.md` in the file explorer and click its **Add as Bot** button.
|
|
45
|
+
5. **Say what it can now be asked**, in four lines — this is the only place the user learns the
|
|
46
|
+
verbs, since `@` autocomplete shows only the description:
|
|
47
|
+
- `@<name> <task>` — ordinary work, in its own session, with its files as context
|
|
48
|
+
- `@<name> review` — a sweep for stale entries, contradictions and dangling commitments
|
|
49
|
+
- `@<name> attach <path to SKILL.md>` — teach it a tool it may use
|
|
50
|
+
- `@<name> export to <path>` — a new Bot at that path with the manual and skills but none of
|
|
51
|
+
the memory, to hand to someone else
|
|
52
|
+
|
|
53
|
+
Say them in the user's own language if they wrote in another one — each mode answers to the
|
|
54
|
+
phrasings listed at the top of its `bot-turn` file, English and Chinese alike.
|
|
55
|
+
|
|
56
|
+
## 2. Layout
|
|
57
|
+
|
|
58
|
+
```text
|
|
59
|
+
<name>/
|
|
60
|
+
├── BOT.md # manifest + operating manual (the subagent reads this first)
|
|
61
|
+
├── identity/
|
|
62
|
+
│ ├── persona.md # stable role, voice, scope
|
|
63
|
+
│ └── principles.md # operating principles and boundaries
|
|
64
|
+
├── relationships/
|
|
65
|
+
│ └── user.md # confirmed preferences of the people it works with
|
|
66
|
+
├── memory/
|
|
67
|
+
│ ├── facts.md # durable, verified facts
|
|
68
|
+
│ └── procedures.md # procedures proven by successful execution
|
|
69
|
+
├── projects/ # created on demand: projects/<project-name>/CONTEXT.md
|
|
70
|
+
├── skills/ # created on demand: this Bot's own SKILL.md files
|
|
71
|
+
├── commitments/
|
|
72
|
+
│ └── active.md # open promises and follow-ups
|
|
73
|
+
├── evidence/
|
|
74
|
+
│ └── refs.md # sources backing the entries above
|
|
75
|
+
└── secrets/ # only if this Bot has credentials of its own — never read, never printed
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
Two more directories appear on their own and are never scaffolded: `.locks/` (the write lock) and
|
|
79
|
+
`.reviews/` (one uniquely timestamped file per review sweep). Both are work products, never memory — nothing
|
|
80
|
+
reads them as fact.
|
|
81
|
+
|
|
82
|
+
Credentials belong to the tool, not to the Bot: a skill's `.env` files stay next to that skill, so
|
|
83
|
+
several Bots share one copy and no key is duplicated. `<bot>/secrets/` is for the rare case where
|
|
84
|
+
the credential really is this Bot's own (its own account). Either way it is gitignored when the
|
|
85
|
+
directory is a repository.
|
|
86
|
+
|
|
87
|
+
Seed `identity/persona.md` and `identity/principles.md` from what the user told you. Every
|
|
88
|
+
other file starts as a heading plus a one-line HTML comment describing its purpose — never
|
|
89
|
+
invent facts, preferences, or history.
|
|
90
|
+
|
|
91
|
+
## 3. BOT.md
|
|
92
|
+
|
|
93
|
+
Frontmatter is only `name` and `description` (the description is what the `@` autocomplete shows).
|
|
94
|
+
|
|
95
|
+
The body says **who this Bot is** — its role, which of its files to read, which skills it has, and
|
|
96
|
+
where new entries belong. It does NOT restate how a Bot turn works: reading rules, entry format,
|
|
97
|
+
the write lock, the non-recording list and the reporting rules all live in the hidden `bot-turn`
|
|
98
|
+
skill, which is handed to the session alongside this file. Keep it that way. Anything written here
|
|
99
|
+
is copied into every Bot and frozen on the user's disk; anything in `bot-turn` is fixed once and
|
|
100
|
+
every existing Bot gets the fix. Put in `BOT.md` only what would be wrong in another Bot's.
|
|
101
|
+
|
|
102
|
+
````markdown
|
|
103
|
+
---
|
|
104
|
+
name: <name>
|
|
105
|
+
description: "<one line: what this Bot knows and maintains>"
|
|
106
|
+
---
|
|
107
|
+
|
|
108
|
+
# <name>
|
|
109
|
+
|
|
110
|
+
<one paragraph: role and scope>
|
|
111
|
+
|
|
112
|
+
## Before working
|
|
113
|
+
|
|
114
|
+
Read, relative to this file's directory:
|
|
115
|
+
|
|
116
|
+
- identity/persona.md and identity/principles.md — always
|
|
117
|
+
- relationships/user.md and commitments/active.md — always
|
|
118
|
+
- memory/facts.md and memory/procedures.md — when relevant to the task
|
|
119
|
+
- projects/<project-name>/CONTEXT.md — when the task concerns that project
|
|
120
|
+
- the Skills table below — always; resolve and open a row's SKILL.md only when the task matches it
|
|
121
|
+
|
|
122
|
+
Reading rules, entry format, when writing is allowed, the write lock and the reporting rules are
|
|
123
|
+
the same for every Bot: they are in the `bot-turn` skill you were handed with this file. If you do
|
|
124
|
+
not have it, say so rather than inventing a protocol — especially the write lock.
|
|
125
|
+
|
|
126
|
+
## Skills
|
|
127
|
+
|
|
128
|
+
| Skill | When to use | Where |
|
|
129
|
+
|---|---|---|
|
|
130
|
+
| <name> | <the kind of task it applies to> | <the registered skill's name, or a path relative to this directory for one of this Bot's own> |
|
|
131
|
+
|
|
132
|
+
## Updating
|
|
133
|
+
|
|
134
|
+
Only when the task explicitly asks to remember, update, correct or forget something (`bot-turn`
|
|
135
|
+
§3–§4 covers the rest: metadata, what never gets recorded, the write lock). Where things go in
|
|
136
|
+
this Bot:
|
|
137
|
+
|
|
138
|
+
- a confirmed fact or a correction → memory/facts.md (mark the old entry `status: superseded` or replace it; never leave a contradiction)
|
|
139
|
+
- a decision and its reason → memory/facts.md under `## Decisions`, dated
|
|
140
|
+
- a user preference → relationships/user.md
|
|
141
|
+
- a promise made or completed → commitments/active.md, with `done-when`, `waiting-on` and
|
|
142
|
+
`next-check` (`status: done` or `cancelled` when it ends)
|
|
143
|
+
- a procedure that just worked → memory/procedures.md
|
|
144
|
+
- project status changes → projects/<project-name>/CONTEXT.md, where `<project-name>` is the
|
|
145
|
+
project's name in lowercase kebab-case (by default its root directory name); reuse an existing
|
|
146
|
+
directory for the same project instead of creating a second one
|
|
147
|
+
- where the information came from → evidence/refs.md
|
|
148
|
+
|
|
149
|
+
<Anything that is true of THIS Bot only: a file it must never touch, a project whose CONTEXT.md
|
|
150
|
+
is authoritative, a person whose word settles a question.>
|
|
151
|
+
````
|
|
152
|
+
|
|
153
|
+
Adapt the lists to the Bot's purpose, but keep the sections: together with `bot-turn` they are the
|
|
154
|
+
only contract between the Bot and whoever runs it. Resist copying any of `bot-turn` back in here —
|
|
155
|
+
a frozen copy is exactly what this split exists to prevent.
|