@tianshu-ai/tianshu 0.3.0
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/LICENSE +200 -0
- package/README.md +284 -0
- package/README.zh-CN.md +136 -0
- package/bin/tianshu.mjs +32 -0
- package/package.json +60 -0
- package/packages/plugin-sdk/dist/agent-loop.d.ts +96 -0
- package/packages/plugin-sdk/dist/agent-loop.d.ts.map +1 -0
- package/packages/plugin-sdk/dist/agent-loop.js +11 -0
- package/packages/plugin-sdk/dist/agent-loop.js.map +1 -0
- package/packages/plugin-sdk/dist/capabilities.d.ts +48 -0
- package/packages/plugin-sdk/dist/capabilities.d.ts.map +1 -0
- package/packages/plugin-sdk/dist/capabilities.js +61 -0
- package/packages/plugin-sdk/dist/capabilities.js.map +1 -0
- package/packages/plugin-sdk/dist/catalog.d.ts +60 -0
- package/packages/plugin-sdk/dist/catalog.d.ts.map +1 -0
- package/packages/plugin-sdk/dist/catalog.js +11 -0
- package/packages/plugin-sdk/dist/catalog.js.map +1 -0
- package/packages/plugin-sdk/dist/client.d.ts +171 -0
- package/packages/plugin-sdk/dist/client.d.ts.map +1 -0
- package/packages/plugin-sdk/dist/client.js +96 -0
- package/packages/plugin-sdk/dist/client.js.map +1 -0
- package/packages/plugin-sdk/dist/index.d.ts +9 -0
- package/packages/plugin-sdk/dist/index.d.ts.map +1 -0
- package/packages/plugin-sdk/dist/index.js +19 -0
- package/packages/plugin-sdk/dist/index.js.map +1 -0
- package/packages/plugin-sdk/dist/lsp.d.ts +32 -0
- package/packages/plugin-sdk/dist/lsp.d.ts.map +1 -0
- package/packages/plugin-sdk/dist/lsp.js +19 -0
- package/packages/plugin-sdk/dist/lsp.js.map +1 -0
- package/packages/plugin-sdk/dist/manifest.d.ts +423 -0
- package/packages/plugin-sdk/dist/manifest.d.ts.map +1 -0
- package/packages/plugin-sdk/dist/manifest.js +7 -0
- package/packages/plugin-sdk/dist/manifest.js.map +1 -0
- package/packages/plugin-sdk/dist/mcp-client.d.ts +74 -0
- package/packages/plugin-sdk/dist/mcp-client.d.ts.map +1 -0
- package/packages/plugin-sdk/dist/mcp-client.js +226 -0
- package/packages/plugin-sdk/dist/mcp-client.js.map +1 -0
- package/packages/plugin-sdk/dist/mcp-fetch.d.ts +10 -0
- package/packages/plugin-sdk/dist/mcp-fetch.d.ts.map +1 -0
- package/packages/plugin-sdk/dist/mcp-fetch.js +130 -0
- package/packages/plugin-sdk/dist/mcp-fetch.js.map +1 -0
- package/packages/plugin-sdk/dist/mcp-toolset.d.ts +128 -0
- package/packages/plugin-sdk/dist/mcp-toolset.d.ts.map +1 -0
- package/packages/plugin-sdk/dist/mcp-toolset.js +246 -0
- package/packages/plugin-sdk/dist/mcp-toolset.js.map +1 -0
- package/packages/plugin-sdk/dist/server.d.ts +486 -0
- package/packages/plugin-sdk/dist/server.d.ts.map +1 -0
- package/packages/plugin-sdk/dist/server.js +10 -0
- package/packages/plugin-sdk/dist/server.js.map +1 -0
- package/packages/plugin-sdk/dist/session-inbox.d.ts +56 -0
- package/packages/plugin-sdk/dist/session-inbox.d.ts.map +1 -0
- package/packages/plugin-sdk/dist/session-inbox.js +12 -0
- package/packages/plugin-sdk/dist/session-inbox.js.map +1 -0
- package/packages/plugin-sdk/package.json +36 -0
- package/packages/server/builtinConfig/plugins/README.md +1 -0
- package/packages/server/builtinConfig/plugins/files/manifest.json +100 -0
- package/packages/server/builtinConfig/plugins/files/skills/files-workspace-layout.md +29 -0
- package/packages/server/builtinConfig/plugins/microsandbox/manifest.json +177 -0
- package/packages/server/builtinConfig/plugins/microsandbox/skills/microsandbox-browser-howto.md +155 -0
- package/packages/server/builtinConfig/plugins/microsandbox/skills/microsandbox-build-use.md +201 -0
- package/packages/server/builtinConfig/plugins/microsandbox/skills/microsandbox-config.md +38 -0
- package/packages/server/builtinConfig/plugins/microsandbox/skills/microsandbox-exec-howto.md +144 -0
- package/packages/server/builtinConfig/plugins/microsandbox/skills/microsandbox-libreoffice.md +159 -0
- package/packages/server/builtinConfig/plugins/microsandbox/skills/microsandbox-main-orchestration.md +75 -0
- package/packages/server/builtinConfig/plugins/microsandbox/templates/README.md +26 -0
- package/packages/server/builtinConfig/plugins/microsandbox/templates/browser.yaml +105 -0
- package/packages/server/builtinConfig/plugins/microsandbox/templates/task-runner-with-browser.yaml +80 -0
- package/packages/server/builtinConfig/plugins/microsandbox/templates/task-runner.yaml +80 -0
- package/packages/server/builtinConfig/plugins/web-search/manifest.json +65 -0
- package/packages/server/builtinConfig/plugins/web-search/skills/web-search-howto.md +69 -0
- package/packages/server/builtinConfig/plugins/workboard/agent-seeds/echo-demo/agent.json +7 -0
- package/packages/server/builtinConfig/plugins/workboard/agent-seeds/llm-default/SOUL.md +53 -0
- package/packages/server/builtinConfig/plugins/workboard/agent-seeds/llm-default/agent.json +7 -0
- package/packages/server/builtinConfig/plugins/workboard/manifest.json +180 -0
- package/packages/server/builtinConfig/plugins/workboard/skills/large-input-large-output.md +185 -0
- package/packages/server/builtinConfig/plugins/workboard/skills/workboard-howto.md +166 -0
- package/packages/server/builtinConfig/plugins/workboard/skills/worker-creator.md +267 -0
- package/packages/server/builtinConfig/plugins/workboard/skills/worker-fleet.md +431 -0
- package/packages/server/dist/catalog.d.ts +52 -0
- package/packages/server/dist/catalog.d.ts.map +1 -0
- package/packages/server/dist/catalog.js +189 -0
- package/packages/server/dist/catalog.js.map +1 -0
- package/packages/server/dist/chat/active-harnesses.d.ts +34 -0
- package/packages/server/dist/chat/active-harnesses.d.ts.map +1 -0
- package/packages/server/dist/chat/active-harnesses.js +118 -0
- package/packages/server/dist/chat/active-harnesses.js.map +1 -0
- package/packages/server/dist/chat/agent-loop.d.ts +64 -0
- package/packages/server/dist/chat/agent-loop.d.ts.map +1 -0
- package/packages/server/dist/chat/agent-loop.js +597 -0
- package/packages/server/dist/chat/agent-loop.js.map +1 -0
- package/packages/server/dist/chat/agent-tool-adapter.d.ts +33 -0
- package/packages/server/dist/chat/agent-tool-adapter.d.ts.map +1 -0
- package/packages/server/dist/chat/agent-tool-adapter.js +260 -0
- package/packages/server/dist/chat/agent-tool-adapter.js.map +1 -0
- package/packages/server/dist/chat/compact.d.ts +52 -0
- package/packages/server/dist/chat/compact.d.ts.map +1 -0
- package/packages/server/dist/chat/compact.js +248 -0
- package/packages/server/dist/chat/compact.js.map +1 -0
- package/packages/server/dist/chat/dump-system-prompt.d.ts +17 -0
- package/packages/server/dist/chat/dump-system-prompt.d.ts.map +1 -0
- package/packages/server/dist/chat/dump-system-prompt.js +58 -0
- package/packages/server/dist/chat/dump-system-prompt.js.map +1 -0
- package/packages/server/dist/chat/handler.d.ts +186 -0
- package/packages/server/dist/chat/handler.d.ts.map +1 -0
- package/packages/server/dist/chat/handler.js +1248 -0
- package/packages/server/dist/chat/handler.js.map +1 -0
- package/packages/server/dist/chat/image-fit.d.ts +34 -0
- package/packages/server/dist/chat/image-fit.d.ts.map +1 -0
- package/packages/server/dist/chat/image-fit.js +157 -0
- package/packages/server/dist/chat/image-fit.js.map +1 -0
- package/packages/server/dist/chat/messages.d.ts +118 -0
- package/packages/server/dist/chat/messages.d.ts.map +1 -0
- package/packages/server/dist/chat/messages.js +341 -0
- package/packages/server/dist/chat/messages.js.map +1 -0
- package/packages/server/dist/chat/session-inbox.d.ts +114 -0
- package/packages/server/dist/chat/session-inbox.d.ts.map +1 -0
- package/packages/server/dist/chat/session-inbox.js +418 -0
- package/packages/server/dist/chat/session-inbox.js.map +1 -0
- package/packages/server/dist/chat/sqlite-session-repo.d.ts +26 -0
- package/packages/server/dist/chat/sqlite-session-repo.d.ts.map +1 -0
- package/packages/server/dist/chat/sqlite-session-repo.js +132 -0
- package/packages/server/dist/chat/sqlite-session-repo.js.map +1 -0
- package/packages/server/dist/chat/sqlite-session-storage.d.ts +83 -0
- package/packages/server/dist/chat/sqlite-session-storage.d.ts.map +1 -0
- package/packages/server/dist/chat/sqlite-session-storage.js +418 -0
- package/packages/server/dist/chat/sqlite-session-storage.js.map +1 -0
- package/packages/server/dist/chat/stub-execution-env.d.ts +3 -0
- package/packages/server/dist/chat/stub-execution-env.d.ts.map +1 -0
- package/packages/server/dist/chat/stub-execution-env.js +87 -0
- package/packages/server/dist/chat/stub-execution-env.js.map +1 -0
- package/packages/server/dist/chat/token-estimate.d.ts +11 -0
- package/packages/server/dist/chat/token-estimate.d.ts.map +1 -0
- package/packages/server/dist/chat/token-estimate.js +67 -0
- package/packages/server/dist/chat/token-estimate.js.map +1 -0
- package/packages/server/dist/chat/ws-protocol.d.ts +244 -0
- package/packages/server/dist/chat/ws-protocol.d.ts.map +1 -0
- package/packages/server/dist/chat/ws-protocol.js +193 -0
- package/packages/server/dist/chat/ws-protocol.js.map +1 -0
- package/packages/server/dist/cli.d.ts +9 -0
- package/packages/server/dist/cli.d.ts.map +1 -0
- package/packages/server/dist/cli.js +329 -0
- package/packages/server/dist/cli.js.map +1 -0
- package/packages/server/dist/core/agent-seeds.d.ts +25 -0
- package/packages/server/dist/core/agent-seeds.d.ts.map +1 -0
- package/packages/server/dist/core/agent-seeds.js +69 -0
- package/packages/server/dist/core/agent-seeds.js.map +1 -0
- package/packages/server/dist/core/config.d.ts +172 -0
- package/packages/server/dist/core/config.d.ts.map +1 -0
- package/packages/server/dist/core/config.js +155 -0
- package/packages/server/dist/core/config.js.map +1 -0
- package/packages/server/dist/core/db-pool.d.ts +32 -0
- package/packages/server/dist/core/db-pool.d.ts.map +1 -0
- package/packages/server/dist/core/db-pool.js +108 -0
- package/packages/server/dist/core/db-pool.js.map +1 -0
- package/packages/server/dist/core/dev-mode.d.ts +13 -0
- package/packages/server/dist/core/dev-mode.d.ts.map +1 -0
- package/packages/server/dist/core/dev-mode.js +51 -0
- package/packages/server/dist/core/dev-mode.js.map +1 -0
- package/packages/server/dist/core/global-ops.d.ts +54 -0
- package/packages/server/dist/core/global-ops.d.ts.map +1 -0
- package/packages/server/dist/core/global-ops.js +143 -0
- package/packages/server/dist/core/global-ops.js.map +1 -0
- package/packages/server/dist/core/identity-resolvers.d.ts +102 -0
- package/packages/server/dist/core/identity-resolvers.d.ts.map +1 -0
- package/packages/server/dist/core/identity-resolvers.js +176 -0
- package/packages/server/dist/core/identity-resolvers.js.map +1 -0
- package/packages/server/dist/core/index.d.ts +13 -0
- package/packages/server/dist/core/index.d.ts.map +1 -0
- package/packages/server/dist/core/index.js +18 -0
- package/packages/server/dist/core/index.js.map +1 -0
- package/packages/server/dist/core/llm.d.ts +45 -0
- package/packages/server/dist/core/llm.d.ts.map +1 -0
- package/packages/server/dist/core/llm.js +140 -0
- package/packages/server/dist/core/llm.js.map +1 -0
- package/packages/server/dist/core/mcp-manager.d.ts +47 -0
- package/packages/server/dist/core/mcp-manager.d.ts.map +1 -0
- package/packages/server/dist/core/mcp-manager.js +129 -0
- package/packages/server/dist/core/mcp-manager.js.map +1 -0
- package/packages/server/dist/core/middleware.d.ts +31 -0
- package/packages/server/dist/core/middleware.d.ts.map +1 -0
- package/packages/server/dist/core/middleware.js +102 -0
- package/packages/server/dist/core/middleware.js.map +1 -0
- package/packages/server/dist/core/migrations/001-initial.d.ts +4 -0
- package/packages/server/dist/core/migrations/001-initial.d.ts.map +1 -0
- package/packages/server/dist/core/migrations/001-initial.js +66 -0
- package/packages/server/dist/core/migrations/001-initial.js.map +1 -0
- package/packages/server/dist/core/migrations/002-task-dependencies.d.ts +4 -0
- package/packages/server/dist/core/migrations/002-task-dependencies.d.ts.map +1 -0
- package/packages/server/dist/core/migrations/002-task-dependencies.js +20 -0
- package/packages/server/dist/core/migrations/002-task-dependencies.js.map +1 -0
- package/packages/server/dist/core/migrations/003-session-tree.d.ts +4 -0
- package/packages/server/dist/core/migrations/003-session-tree.d.ts.map +1 -0
- package/packages/server/dist/core/migrations/003-session-tree.js +96 -0
- package/packages/server/dist/core/migrations/003-session-tree.js.map +1 -0
- package/packages/server/dist/core/migrations/003-worker-agents.d.ts +4 -0
- package/packages/server/dist/core/migrations/003-worker-agents.d.ts.map +1 -0
- package/packages/server/dist/core/migrations/003-worker-agents.js +65 -0
- package/packages/server/dist/core/migrations/003-worker-agents.js.map +1 -0
- package/packages/server/dist/core/migrations/004-rebuild-message-chain.d.ts +4 -0
- package/packages/server/dist/core/migrations/004-rebuild-message-chain.d.ts.map +1 -0
- package/packages/server/dist/core/migrations/004-rebuild-message-chain.js +52 -0
- package/packages/server/dist/core/migrations/004-rebuild-message-chain.js.map +1 -0
- package/packages/server/dist/core/migrations/005-task-status-rename.d.ts +4 -0
- package/packages/server/dist/core/migrations/005-task-status-rename.d.ts.map +1 -0
- package/packages/server/dist/core/migrations/005-task-status-rename.js +64 -0
- package/packages/server/dist/core/migrations/005-task-status-rename.js.map +1 -0
- package/packages/server/dist/core/migrations/006-task-labels.d.ts +4 -0
- package/packages/server/dist/core/migrations/006-task-labels.d.ts.map +1 -0
- package/packages/server/dist/core/migrations/006-task-labels.js +43 -0
- package/packages/server/dist/core/migrations/006-task-labels.js.map +1 -0
- package/packages/server/dist/core/migrations/007-session-inbox.d.ts +4 -0
- package/packages/server/dist/core/migrations/007-session-inbox.d.ts.map +1 -0
- package/packages/server/dist/core/migrations/007-session-inbox.js +67 -0
- package/packages/server/dist/core/migrations/007-session-inbox.js.map +1 -0
- package/packages/server/dist/core/migrations/008-task-intervention.d.ts +4 -0
- package/packages/server/dist/core/migrations/008-task-intervention.d.ts.map +1 -0
- package/packages/server/dist/core/migrations/008-task-intervention.js +60 -0
- package/packages/server/dist/core/migrations/008-task-intervention.js.map +1 -0
- package/packages/server/dist/core/migrations/index.d.ts +12 -0
- package/packages/server/dist/core/migrations/index.d.ts.map +1 -0
- package/packages/server/dist/core/migrations/index.js +58 -0
- package/packages/server/dist/core/migrations/index.js.map +1 -0
- package/packages/server/dist/core/paths.d.ts +53 -0
- package/packages/server/dist/core/paths.d.ts.map +1 -0
- package/packages/server/dist/core/paths.js +125 -0
- package/packages/server/dist/core/paths.js.map +1 -0
- package/packages/server/dist/core/plugins/builtin-loader.d.ts +56 -0
- package/packages/server/dist/core/plugins/builtin-loader.d.ts.map +1 -0
- package/packages/server/dist/core/plugins/builtin-loader.js +153 -0
- package/packages/server/dist/core/plugins/builtin-loader.js.map +1 -0
- package/packages/server/dist/core/plugins/discovery.d.ts +28 -0
- package/packages/server/dist/core/plugins/discovery.d.ts.map +1 -0
- package/packages/server/dist/core/plugins/discovery.js +97 -0
- package/packages/server/dist/core/plugins/discovery.js.map +1 -0
- package/packages/server/dist/core/plugins/index.d.ts +6 -0
- package/packages/server/dist/core/plugins/index.d.ts.map +1 -0
- package/packages/server/dist/core/plugins/index.js +6 -0
- package/packages/server/dist/core/plugins/index.js.map +1 -0
- package/packages/server/dist/core/plugins/manifest.d.ts +9 -0
- package/packages/server/dist/core/plugins/manifest.d.ts.map +1 -0
- package/packages/server/dist/core/plugins/manifest.js +584 -0
- package/packages/server/dist/core/plugins/manifest.js.map +1 -0
- package/packages/server/dist/core/plugins/registry.d.ts +269 -0
- package/packages/server/dist/core/plugins/registry.d.ts.map +1 -0
- package/packages/server/dist/core/plugins/registry.js +1003 -0
- package/packages/server/dist/core/plugins/registry.js.map +1 -0
- package/packages/server/dist/core/plugins/secrets.d.ts +46 -0
- package/packages/server/dist/core/plugins/secrets.d.ts.map +1 -0
- package/packages/server/dist/core/plugins/secrets.js +174 -0
- package/packages/server/dist/core/plugins/secrets.js.map +1 -0
- package/packages/server/dist/core/plugins/skills.d.ts +131 -0
- package/packages/server/dist/core/plugins/skills.d.ts.map +1 -0
- package/packages/server/dist/core/plugins/skills.js +389 -0
- package/packages/server/dist/core/plugins/skills.js.map +1 -0
- package/packages/server/dist/core/templates.d.ts +28 -0
- package/packages/server/dist/core/templates.d.ts.map +1 -0
- package/packages/server/dist/core/templates.js +103 -0
- package/packages/server/dist/core/templates.js.map +1 -0
- package/packages/server/dist/core/tenant-context.d.ts +18 -0
- package/packages/server/dist/core/tenant-context.d.ts.map +1 -0
- package/packages/server/dist/core/tenant-context.js +42 -0
- package/packages/server/dist/core/tenant-context.js.map +1 -0
- package/packages/server/dist/core/tenant-id.d.ts +8 -0
- package/packages/server/dist/core/tenant-id.d.ts.map +1 -0
- package/packages/server/dist/core/tenant-id.js +53 -0
- package/packages/server/dist/core/tenant-id.js.map +1 -0
- package/packages/server/dist/core/tenant-skills.d.ts +29 -0
- package/packages/server/dist/core/tenant-skills.d.ts.map +1 -0
- package/packages/server/dist/core/tenant-skills.js +77 -0
- package/packages/server/dist/core/tenant-skills.js.map +1 -0
- package/packages/server/dist/core/worker-agents-fs.d.ts +44 -0
- package/packages/server/dist/core/worker-agents-fs.d.ts.map +1 -0
- package/packages/server/dist/core/worker-agents-fs.js +86 -0
- package/packages/server/dist/core/worker-agents-fs.js.map +1 -0
- package/packages/server/dist/core/worker-agents.d.ts +77 -0
- package/packages/server/dist/core/worker-agents.d.ts.map +1 -0
- package/packages/server/dist/core/worker-agents.js +191 -0
- package/packages/server/dist/core/worker-agents.js.map +1 -0
- package/packages/server/dist/index.d.ts +2 -0
- package/packages/server/dist/index.d.ts.map +1 -0
- package/packages/server/dist/index.js +623 -0
- package/packages/server/dist/index.js.map +1 -0
- package/packages/server/dist/lsp/client.d.ts +53 -0
- package/packages/server/dist/lsp/client.d.ts.map +1 -0
- package/packages/server/dist/lsp/client.js +258 -0
- package/packages/server/dist/lsp/client.js.map +1 -0
- package/packages/server/dist/lsp/format.d.ts +13 -0
- package/packages/server/dist/lsp/format.d.ts.map +1 -0
- package/packages/server/dist/lsp/format.js +55 -0
- package/packages/server/dist/lsp/format.js.map +1 -0
- package/packages/server/dist/lsp/index.d.ts +20 -0
- package/packages/server/dist/lsp/index.d.ts.map +1 -0
- package/packages/server/dist/lsp/index.js +32 -0
- package/packages/server/dist/lsp/index.js.map +1 -0
- package/packages/server/dist/lsp/language-registry.d.ts +29 -0
- package/packages/server/dist/lsp/language-registry.d.ts.map +1 -0
- package/packages/server/dist/lsp/language-registry.js +62 -0
- package/packages/server/dist/lsp/language-registry.js.map +1 -0
- package/packages/server/dist/lsp/manager.d.ts +77 -0
- package/packages/server/dist/lsp/manager.d.ts.map +1 -0
- package/packages/server/dist/lsp/manager.js +300 -0
- package/packages/server/dist/lsp/manager.js.map +1 -0
- package/packages/server/dist/plugins-routes.d.ts +96 -0
- package/packages/server/dist/plugins-routes.d.ts.map +1 -0
- package/packages/server/dist/plugins-routes.js +627 -0
- package/packages/server/dist/plugins-routes.js.map +1 -0
- package/packages/server/dist/setup/checks/config.d.ts +9 -0
- package/packages/server/dist/setup/checks/config.d.ts.map +1 -0
- package/packages/server/dist/setup/checks/config.js +66 -0
- package/packages/server/dist/setup/checks/config.js.map +1 -0
- package/packages/server/dist/setup/checks/db.d.ts +6 -0
- package/packages/server/dist/setup/checks/db.d.ts.map +1 -0
- package/packages/server/dist/setup/checks/db.js +79 -0
- package/packages/server/dist/setup/checks/db.js.map +1 -0
- package/packages/server/dist/setup/checks/known-models.d.ts +18 -0
- package/packages/server/dist/setup/checks/known-models.d.ts.map +1 -0
- package/packages/server/dist/setup/checks/known-models.js +119 -0
- package/packages/server/dist/setup/checks/known-models.js.map +1 -0
- package/packages/server/dist/setup/checks/network.d.ts +11 -0
- package/packages/server/dist/setup/checks/network.d.ts.map +1 -0
- package/packages/server/dist/setup/checks/network.js +176 -0
- package/packages/server/dist/setup/checks/network.js.map +1 -0
- package/packages/server/dist/setup/checks/plugins.d.ts +9 -0
- package/packages/server/dist/setup/checks/plugins.d.ts.map +1 -0
- package/packages/server/dist/setup/checks/plugins.js +194 -0
- package/packages/server/dist/setup/checks/plugins.js.map +1 -0
- package/packages/server/dist/setup/checks/providers.d.ts +12 -0
- package/packages/server/dist/setup/checks/providers.d.ts.map +1 -0
- package/packages/server/dist/setup/checks/providers.js +368 -0
- package/packages/server/dist/setup/checks/providers.js.map +1 -0
- package/packages/server/dist/setup/checks/runtime.d.ts +3 -0
- package/packages/server/dist/setup/checks/runtime.d.ts.map +1 -0
- package/packages/server/dist/setup/checks/runtime.js +44 -0
- package/packages/server/dist/setup/checks/runtime.js.map +1 -0
- package/packages/server/dist/setup/checks/sandbox.d.ts +9 -0
- package/packages/server/dist/setup/checks/sandbox.d.ts.map +1 -0
- package/packages/server/dist/setup/checks/sandbox.js +110 -0
- package/packages/server/dist/setup/checks/sandbox.js.map +1 -0
- package/packages/server/dist/setup/checks/tenants.d.ts +9 -0
- package/packages/server/dist/setup/checks/tenants.d.ts.map +1 -0
- package/packages/server/dist/setup/checks/tenants.js +509 -0
- package/packages/server/dist/setup/checks/tenants.js.map +1 -0
- package/packages/server/dist/setup/cli-agent.d.ts +39 -0
- package/packages/server/dist/setup/cli-agent.d.ts.map +1 -0
- package/packages/server/dist/setup/cli-agent.js +1353 -0
- package/packages/server/dist/setup/cli-agent.js.map +1 -0
- package/packages/server/dist/setup/doctor.d.ts +32 -0
- package/packages/server/dist/setup/doctor.d.ts.map +1 -0
- package/packages/server/dist/setup/doctor.js +80 -0
- package/packages/server/dist/setup/doctor.js.map +1 -0
- package/packages/server/dist/setup/launchd.d.ts +107 -0
- package/packages/server/dist/setup/launchd.d.ts.map +1 -0
- package/packages/server/dist/setup/launchd.js +309 -0
- package/packages/server/dist/setup/launchd.js.map +1 -0
- package/packages/server/dist/setup/load-env.d.ts +21 -0
- package/packages/server/dist/setup/load-env.d.ts.map +1 -0
- package/packages/server/dist/setup/load-env.js +88 -0
- package/packages/server/dist/setup/load-env.js.map +1 -0
- package/packages/server/dist/setup/probe-default-model.d.ts +28 -0
- package/packages/server/dist/setup/probe-default-model.d.ts.map +1 -0
- package/packages/server/dist/setup/probe-default-model.js +133 -0
- package/packages/server/dist/setup/probe-default-model.js.map +1 -0
- package/packages/server/dist/setup/render.d.ts +28 -0
- package/packages/server/dist/setup/render.d.ts.map +1 -0
- package/packages/server/dist/setup/render.js +60 -0
- package/packages/server/dist/setup/render.js.map +1 -0
- package/packages/server/dist/setup/repo-root.d.ts +3 -0
- package/packages/server/dist/setup/repo-root.d.ts.map +1 -0
- package/packages/server/dist/setup/repo-root.js +43 -0
- package/packages/server/dist/setup/repo-root.js.map +1 -0
- package/packages/server/dist/setup/service.d.ts +60 -0
- package/packages/server/dist/setup/service.d.ts.map +1 -0
- package/packages/server/dist/setup/service.js +345 -0
- package/packages/server/dist/setup/service.js.map +1 -0
- package/packages/server/dist/setup/start-server.d.ts +23 -0
- package/packages/server/dist/setup/start-server.d.ts.map +1 -0
- package/packages/server/dist/setup/start-server.js +465 -0
- package/packages/server/dist/setup/start-server.js.map +1 -0
- package/packages/server/dist/setup/wizard.d.ts +59 -0
- package/packages/server/dist/setup/wizard.d.ts.map +1 -0
- package/packages/server/dist/setup/wizard.js +556 -0
- package/packages/server/dist/setup/wizard.js.map +1 -0
- package/packages/server/dist/tools/edit-file.d.ts +13 -0
- package/packages/server/dist/tools/edit-file.d.ts.map +1 -0
- package/packages/server/dist/tools/edit-file.js +90 -0
- package/packages/server/dist/tools/edit-file.js.map +1 -0
- package/packages/server/dist/tools/glob.d.ts +12 -0
- package/packages/server/dist/tools/glob.d.ts.map +1 -0
- package/packages/server/dist/tools/glob.js +82 -0
- package/packages/server/dist/tools/glob.js.map +1 -0
- package/packages/server/dist/tools/index.d.ts +82 -0
- package/packages/server/dist/tools/index.d.ts.map +1 -0
- package/packages/server/dist/tools/index.js +72 -0
- package/packages/server/dist/tools/index.js.map +1 -0
- package/packages/server/dist/tools/list-dir.d.ts +24 -0
- package/packages/server/dist/tools/list-dir.d.ts.map +1 -0
- package/packages/server/dist/tools/list-dir.js +99 -0
- package/packages/server/dist/tools/list-dir.js.map +1 -0
- package/packages/server/dist/tools/path-helper.d.ts +15 -0
- package/packages/server/dist/tools/path-helper.d.ts.map +1 -0
- package/packages/server/dist/tools/path-helper.js +72 -0
- package/packages/server/dist/tools/path-helper.js.map +1 -0
- package/packages/server/dist/tools/read-file.d.ts +17 -0
- package/packages/server/dist/tools/read-file.d.ts.map +1 -0
- package/packages/server/dist/tools/read-file.js +94 -0
- package/packages/server/dist/tools/read-file.js.map +1 -0
- package/packages/server/dist/tools/sandbox.d.ts +57 -0
- package/packages/server/dist/tools/sandbox.d.ts.map +1 -0
- package/packages/server/dist/tools/sandbox.js +291 -0
- package/packages/server/dist/tools/sandbox.js.map +1 -0
- package/packages/server/dist/tools/write-file.d.ts +12 -0
- package/packages/server/dist/tools/write-file.d.ts.map +1 -0
- package/packages/server/dist/tools/write-file.js +67 -0
- package/packages/server/dist/tools/write-file.js.map +1 -0
- package/packages/server/dist/worker-agents-routes.d.ts +11 -0
- package/packages/server/dist/worker-agents-routes.d.ts.map +1 -0
- package/packages/server/dist/worker-agents-routes.js +253 -0
- package/packages/server/dist/worker-agents-routes.js.map +1 -0
- package/packages/server/package.json +41 -0
- package/packages/web/dist/assets/index-DH-gJ09_.js +60 -0
- package/packages/web/dist/assets/index-xU4lYYqY.css +2 -0
- package/packages/web/dist/index.html +14 -0
- package/packages/web/package.json +36 -0
- package/plugins/README.md +64 -0
- package/plugins/files/dist/client.d.ts +5 -0
- package/plugins/files/dist/client.d.ts.map +1 -0
- package/plugins/files/dist/client.js +354 -0
- package/plugins/files/dist/client.js.map +1 -0
- package/plugins/files/dist/server.d.ts +32 -0
- package/plugins/files/dist/server.d.ts.map +1 -0
- package/plugins/files/dist/server.js +514 -0
- package/plugins/files/dist/server.js.map +1 -0
- package/plugins/files/dist/tools/edit-file.d.ts +29 -0
- package/plugins/files/dist/tools/edit-file.d.ts.map +1 -0
- package/plugins/files/dist/tools/edit-file.js +230 -0
- package/plugins/files/dist/tools/edit-file.js.map +1 -0
- package/plugins/files/dist/tools/edit-file.prompt.md +36 -0
- package/plugins/files/dist/tools/glob.d.ts +12 -0
- package/plugins/files/dist/tools/glob.d.ts.map +1 -0
- package/plugins/files/dist/tools/glob.js +84 -0
- package/plugins/files/dist/tools/glob.js.map +1 -0
- package/plugins/files/dist/tools/index.d.ts +13 -0
- package/plugins/files/dist/tools/index.d.ts.map +1 -0
- package/plugins/files/dist/tools/index.js +158 -0
- package/plugins/files/dist/tools/index.js.map +1 -0
- package/plugins/files/dist/tools/list-dir.d.ts +24 -0
- package/plugins/files/dist/tools/list-dir.d.ts.map +1 -0
- package/plugins/files/dist/tools/list-dir.js +104 -0
- package/plugins/files/dist/tools/list-dir.js.map +1 -0
- package/plugins/files/dist/tools/load-prompt.d.ts +5 -0
- package/plugins/files/dist/tools/load-prompt.d.ts.map +1 -0
- package/plugins/files/dist/tools/load-prompt.js +39 -0
- package/plugins/files/dist/tools/load-prompt.js.map +1 -0
- package/plugins/files/dist/tools/path-helper.d.ts +32 -0
- package/plugins/files/dist/tools/path-helper.d.ts.map +1 -0
- package/plugins/files/dist/tools/path-helper.js +113 -0
- package/plugins/files/dist/tools/path-helper.js.map +1 -0
- package/plugins/files/dist/tools/read-file.d.ts +17 -0
- package/plugins/files/dist/tools/read-file.d.ts.map +1 -0
- package/plugins/files/dist/tools/read-file.js +109 -0
- package/plugins/files/dist/tools/read-file.js.map +1 -0
- package/plugins/files/dist/tools/read-tracker.d.ts +28 -0
- package/plugins/files/dist/tools/read-tracker.d.ts.map +1 -0
- package/plugins/files/dist/tools/read-tracker.js +135 -0
- package/plugins/files/dist/tools/read-tracker.js.map +1 -0
- package/plugins/files/dist/tools/replacers.d.ts +27 -0
- package/plugins/files/dist/tools/replacers.d.ts.map +1 -0
- package/plugins/files/dist/tools/replacers.js +221 -0
- package/plugins/files/dist/tools/replacers.js.map +1 -0
- package/plugins/files/dist/tools/tenant-config-delete.d.ts +12 -0
- package/plugins/files/dist/tools/tenant-config-delete.d.ts.map +1 -0
- package/plugins/files/dist/tools/tenant-config-delete.js +70 -0
- package/plugins/files/dist/tools/tenant-config-delete.js.map +1 -0
- package/plugins/files/dist/tools/tenant-config-edit.d.ts +25 -0
- package/plugins/files/dist/tools/tenant-config-edit.d.ts.map +1 -0
- package/plugins/files/dist/tools/tenant-config-edit.js +142 -0
- package/plugins/files/dist/tools/tenant-config-edit.js.map +1 -0
- package/plugins/files/dist/tools/tenant-config-glob.d.ts +12 -0
- package/plugins/files/dist/tools/tenant-config-glob.d.ts.map +1 -0
- package/plugins/files/dist/tools/tenant-config-glob.js +64 -0
- package/plugins/files/dist/tools/tenant-config-glob.js.map +1 -0
- package/plugins/files/dist/tools/tenant-config-helper.d.ts +64 -0
- package/plugins/files/dist/tools/tenant-config-helper.d.ts.map +1 -0
- package/plugins/files/dist/tools/tenant-config-helper.js +162 -0
- package/plugins/files/dist/tools/tenant-config-helper.js.map +1 -0
- package/plugins/files/dist/tools/tenant-config-list.d.ts +20 -0
- package/plugins/files/dist/tools/tenant-config-list.d.ts.map +1 -0
- package/plugins/files/dist/tools/tenant-config-list.js +95 -0
- package/plugins/files/dist/tools/tenant-config-list.js.map +1 -0
- package/plugins/files/dist/tools/tenant-config-read.d.ts +17 -0
- package/plugins/files/dist/tools/tenant-config-read.d.ts.map +1 -0
- package/plugins/files/dist/tools/tenant-config-read.js +87 -0
- package/plugins/files/dist/tools/tenant-config-read.js.map +1 -0
- package/plugins/files/dist/tools/tenant-config-write.d.ts +14 -0
- package/plugins/files/dist/tools/tenant-config-write.d.ts.map +1 -0
- package/plugins/files/dist/tools/tenant-config-write.js +78 -0
- package/plugins/files/dist/tools/tenant-config-write.js.map +1 -0
- package/plugins/files/dist/tools/text-shape.d.ts +20 -0
- package/plugins/files/dist/tools/text-shape.d.ts.map +1 -0
- package/plugins/files/dist/tools/text-shape.js +57 -0
- package/plugins/files/dist/tools/text-shape.js.map +1 -0
- package/plugins/files/dist/tools/write-file.d.ts +12 -0
- package/plugins/files/dist/tools/write-file.d.ts.map +1 -0
- package/plugins/files/dist/tools/write-file.js +89 -0
- package/plugins/files/dist/tools/write-file.js.map +1 -0
- package/plugins/files/dist/tools/write-file.prompt.md +14 -0
- package/plugins/files/manifest.json +100 -0
- package/plugins/files/package.json +39 -0
- package/plugins/files/skills/files-workspace-layout.md +29 -0
- package/plugins/microsandbox/dist/admin/browser-routes.d.ts +41 -0
- package/plugins/microsandbox/dist/admin/browser-routes.d.ts.map +1 -0
- package/plugins/microsandbox/dist/admin/browser-routes.js +208 -0
- package/plugins/microsandbox/dist/admin/browser-routes.js.map +1 -0
- package/plugins/microsandbox/dist/admin/preview-exec.d.ts +38 -0
- package/plugins/microsandbox/dist/admin/preview-exec.d.ts.map +1 -0
- package/plugins/microsandbox/dist/admin/preview-exec.js +185 -0
- package/plugins/microsandbox/dist/admin/preview-exec.js.map +1 -0
- package/plugins/microsandbox/dist/admin/routes.d.ts +35 -0
- package/plugins/microsandbox/dist/admin/routes.d.ts.map +1 -0
- package/plugins/microsandbox/dist/admin/routes.js +728 -0
- package/plugins/microsandbox/dist/admin/routes.js.map +1 -0
- package/plugins/microsandbox/dist/admin/sandboxfile-io.d.ts +11 -0
- package/plugins/microsandbox/dist/admin/sandboxfile-io.d.ts.map +1 -0
- package/plugins/microsandbox/dist/admin/sandboxfile-io.js +72 -0
- package/plugins/microsandbox/dist/admin/sandboxfile-io.js.map +1 -0
- package/plugins/microsandbox/dist/admin/templates.d.ts +16 -0
- package/plugins/microsandbox/dist/admin/templates.d.ts.map +1 -0
- package/plugins/microsandbox/dist/admin/templates.js +66 -0
- package/plugins/microsandbox/dist/admin/templates.js.map +1 -0
- package/plugins/microsandbox/dist/admin.d.ts +5 -0
- package/plugins/microsandbox/dist/admin.d.ts.map +1 -0
- package/plugins/microsandbox/dist/admin.js +256 -0
- package/plugins/microsandbox/dist/admin.js.map +1 -0
- package/plugins/microsandbox/dist/build/builder.d.ts +69 -0
- package/plugins/microsandbox/dist/build/builder.d.ts.map +1 -0
- package/plugins/microsandbox/dist/build/builder.js +257 -0
- package/plugins/microsandbox/dist/build/builder.js.map +1 -0
- package/plugins/microsandbox/dist/build/metadata.d.ts +27 -0
- package/plugins/microsandbox/dist/build/metadata.d.ts.map +1 -0
- package/plugins/microsandbox/dist/build/metadata.js +55 -0
- package/plugins/microsandbox/dist/build/metadata.js.map +1 -0
- package/plugins/microsandbox/dist/build/pointer.d.ts +51 -0
- package/plugins/microsandbox/dist/build/pointer.d.ts.map +1 -0
- package/plugins/microsandbox/dist/build/pointer.js +130 -0
- package/plugins/microsandbox/dist/build/pointer.js.map +1 -0
- package/plugins/microsandbox/dist/build/sandboxfile.d.ts +15 -0
- package/plugins/microsandbox/dist/build/sandboxfile.d.ts.map +1 -0
- package/plugins/microsandbox/dist/build/sandboxfile.js +176 -0
- package/plugins/microsandbox/dist/build/sandboxfile.js.map +1 -0
- package/plugins/microsandbox/dist/client.d.ts +5 -0
- package/plugins/microsandbox/dist/client.d.ts.map +1 -0
- package/plugins/microsandbox/dist/client.js +941 -0
- package/plugins/microsandbox/dist/client.js.map +1 -0
- package/plugins/microsandbox/dist/runner/browser.d.ts +50 -0
- package/plugins/microsandbox/dist/runner/browser.d.ts.map +1 -0
- package/plugins/microsandbox/dist/runner/browser.js +142 -0
- package/plugins/microsandbox/dist/runner/browser.js.map +1 -0
- package/plugins/microsandbox/dist/runner/free-port.d.ts +6 -0
- package/plugins/microsandbox/dist/runner/free-port.d.ts.map +1 -0
- package/plugins/microsandbox/dist/runner/free-port.js +53 -0
- package/plugins/microsandbox/dist/runner/free-port.js.map +1 -0
- package/plugins/microsandbox/dist/runner/index.d.ts +28 -0
- package/plugins/microsandbox/dist/runner/index.d.ts.map +1 -0
- package/plugins/microsandbox/dist/runner/index.js +72 -0
- package/plugins/microsandbox/dist/runner/index.js.map +1 -0
- package/plugins/microsandbox/dist/runner/microsandbox.d.ts +64 -0
- package/plugins/microsandbox/dist/runner/microsandbox.d.ts.map +1 -0
- package/plugins/microsandbox/dist/runner/microsandbox.js +668 -0
- package/plugins/microsandbox/dist/runner/microsandbox.js.map +1 -0
- package/plugins/microsandbox/dist/runner/nullable.d.ts +36 -0
- package/plugins/microsandbox/dist/runner/nullable.d.ts.map +1 -0
- package/plugins/microsandbox/dist/runner/nullable.js +82 -0
- package/plugins/microsandbox/dist/runner/nullable.js.map +1 -0
- package/plugins/microsandbox/dist/runner/pool.d.ts +97 -0
- package/plugins/microsandbox/dist/runner/pool.d.ts.map +1 -0
- package/plugins/microsandbox/dist/runner/pool.js +494 -0
- package/plugins/microsandbox/dist/runner/pool.js.map +1 -0
- package/plugins/microsandbox/dist/runner/types.d.ts +33 -0
- package/plugins/microsandbox/dist/runner/types.d.ts.map +1 -0
- package/plugins/microsandbox/dist/runner/types.js +79 -0
- package/plugins/microsandbox/dist/runner/types.js.map +1 -0
- package/plugins/microsandbox/dist/server.d.ts +7 -0
- package/plugins/microsandbox/dist/server.d.ts.map +1 -0
- package/plugins/microsandbox/dist/server.js +276 -0
- package/plugins/microsandbox/dist/server.js.map +1 -0
- package/plugins/microsandbox/dist/tools/browser.d.ts +25 -0
- package/plugins/microsandbox/dist/tools/browser.d.ts.map +1 -0
- package/plugins/microsandbox/dist/tools/browser.js +78 -0
- package/plugins/microsandbox/dist/tools/browser.js.map +1 -0
- package/plugins/microsandbox/dist/tools/build.d.ts +5 -0
- package/plugins/microsandbox/dist/tools/build.d.ts.map +1 -0
- package/plugins/microsandbox/dist/tools/build.js +243 -0
- package/plugins/microsandbox/dist/tools/build.js.map +1 -0
- package/plugins/microsandbox/dist/tools/index.d.ts +9 -0
- package/plugins/microsandbox/dist/tools/index.d.ts.map +1 -0
- package/plugins/microsandbox/dist/tools/index.js +430 -0
- package/plugins/microsandbox/dist/tools/index.js.map +1 -0
- package/plugins/microsandbox/dist/tools/mcp-client.d.ts +63 -0
- package/plugins/microsandbox/dist/tools/mcp-client.d.ts.map +1 -0
- package/plugins/microsandbox/dist/tools/mcp-client.js +226 -0
- package/plugins/microsandbox/dist/tools/mcp-client.js.map +1 -0
- package/plugins/microsandbox/manifest.json +177 -0
- package/plugins/microsandbox/package.json +38 -0
- package/plugins/microsandbox/skills/microsandbox-browser-howto.md +155 -0
- package/plugins/microsandbox/skills/microsandbox-build-use.md +201 -0
- package/plugins/microsandbox/skills/microsandbox-config.md +38 -0
- package/plugins/microsandbox/skills/microsandbox-exec-howto.md +144 -0
- package/plugins/microsandbox/skills/microsandbox-libreoffice.md +159 -0
- package/plugins/microsandbox/templates/README.md +26 -0
- package/plugins/web-search/dist/server.d.ts +4 -0
- package/plugins/web-search/dist/server.d.ts.map +1 -0
- package/plugins/web-search/dist/server.js +73 -0
- package/plugins/web-search/dist/server.js.map +1 -0
- package/plugins/web-search/dist/tools/health.d.ts +31 -0
- package/plugins/web-search/dist/tools/health.d.ts.map +1 -0
- package/plugins/web-search/dist/tools/health.js +59 -0
- package/plugins/web-search/dist/tools/health.js.map +1 -0
- package/plugins/web-search/dist/tools/index.d.ts +3 -0
- package/plugins/web-search/dist/tools/index.d.ts.map +1 -0
- package/plugins/web-search/dist/tools/index.js +2 -0
- package/plugins/web-search/dist/tools/index.js.map +1 -0
- package/plugins/web-search/dist/tools/providers.d.ts +43 -0
- package/plugins/web-search/dist/tools/providers.d.ts.map +1 -0
- package/plugins/web-search/dist/tools/providers.js +140 -0
- package/plugins/web-search/dist/tools/providers.js.map +1 -0
- package/plugins/web-search/dist/tools/web-search.d.ts +15 -0
- package/plugins/web-search/dist/tools/web-search.d.ts.map +1 -0
- package/plugins/web-search/dist/tools/web-search.js +244 -0
- package/plugins/web-search/dist/tools/web-search.js.map +1 -0
- package/plugins/web-search/manifest.json +65 -0
- package/plugins/web-search/node_modules/@esbuild/darwin-arm64/README.md +3 -0
- package/plugins/web-search/node_modules/@esbuild/darwin-arm64/package.json +20 -0
- package/plugins/web-search/node_modules/@vitest/expect/LICENSE +21 -0
- package/plugins/web-search/node_modules/@vitest/expect/README.md +21 -0
- package/plugins/web-search/node_modules/@vitest/expect/dist/index.d.ts +808 -0
- package/plugins/web-search/node_modules/@vitest/expect/dist/index.js +1799 -0
- package/plugins/web-search/node_modules/@vitest/expect/package.json +46 -0
- package/plugins/web-search/node_modules/@vitest/mocker/LICENSE +21 -0
- package/plugins/web-search/node_modules/@vitest/mocker/README.md +5 -0
- package/plugins/web-search/node_modules/@vitest/mocker/dist/auto-register.d.ts +2 -0
- package/plugins/web-search/node_modules/@vitest/mocker/dist/auto-register.js +9 -0
- package/plugins/web-search/node_modules/@vitest/mocker/dist/browser.d.ts +53 -0
- package/plugins/web-search/node_modules/@vitest/mocker/dist/browser.js +91 -0
- package/plugins/web-search/node_modules/@vitest/mocker/dist/chunk-interceptor-native.js +15 -0
- package/plugins/web-search/node_modules/@vitest/mocker/dist/chunk-mocker.js +1602 -0
- package/plugins/web-search/node_modules/@vitest/mocker/dist/chunk-pathe.M-eThtNZ.js +174 -0
- package/plugins/web-search/node_modules/@vitest/mocker/dist/chunk-registry.js +182 -0
- package/plugins/web-search/node_modules/@vitest/mocker/dist/chunk-utils.js +16 -0
- package/plugins/web-search/node_modules/@vitest/mocker/dist/index.d.ts +21 -0
- package/plugins/web-search/node_modules/@vitest/mocker/dist/index.js +174 -0
- package/plugins/web-search/node_modules/@vitest/mocker/dist/mocker.d-Ce9_ySj5.d.ts +83 -0
- package/plugins/web-search/node_modules/@vitest/mocker/dist/node.d.ts +821 -0
- package/plugins/web-search/node_modules/@vitest/mocker/dist/node.js +1306 -0
- package/plugins/web-search/node_modules/@vitest/mocker/dist/redirect.d.ts +3 -0
- package/plugins/web-search/node_modules/@vitest/mocker/dist/redirect.js +75 -0
- package/plugins/web-search/node_modules/@vitest/mocker/dist/register.d.ts +9 -0
- package/plugins/web-search/node_modules/@vitest/mocker/dist/register.js +41 -0
- package/plugins/web-search/node_modules/@vitest/mocker/dist/registry.d-D765pazg.d.ts +87 -0
- package/plugins/web-search/node_modules/@vitest/mocker/dist/types.d-D_aRZRdy.d.ts +8 -0
- package/plugins/web-search/node_modules/@vitest/mocker/package.json +82 -0
- package/plugins/web-search/node_modules/@vitest/pretty-format/LICENSE +21 -0
- package/plugins/web-search/node_modules/@vitest/pretty-format/dist/index.d.ts +119 -0
- package/plugins/web-search/node_modules/@vitest/pretty-format/dist/index.js +1387 -0
- package/plugins/web-search/node_modules/@vitest/pretty-format/package.json +44 -0
- package/plugins/web-search/node_modules/@vitest/runner/LICENSE +21 -0
- package/plugins/web-search/node_modules/@vitest/runner/README.md +5 -0
- package/plugins/web-search/node_modules/@vitest/runner/dist/chunk-hooks.js +2254 -0
- package/plugins/web-search/node_modules/@vitest/runner/dist/index.d.ts +261 -0
- package/plugins/web-search/node_modules/@vitest/runner/dist/index.js +6 -0
- package/plugins/web-search/node_modules/@vitest/runner/dist/tasks.d-CkscK4of.d.ts +558 -0
- package/plugins/web-search/node_modules/@vitest/runner/dist/types.d.ts +163 -0
- package/plugins/web-search/node_modules/@vitest/runner/dist/types.js +1 -0
- package/plugins/web-search/node_modules/@vitest/runner/dist/utils.d.ts +47 -0
- package/plugins/web-search/node_modules/@vitest/runner/dist/utils.js +6 -0
- package/plugins/web-search/node_modules/@vitest/runner/package.json +49 -0
- package/plugins/web-search/node_modules/@vitest/snapshot/LICENSE +21 -0
- package/plugins/web-search/node_modules/@vitest/snapshot/README.md +84 -0
- package/plugins/web-search/node_modules/@vitest/snapshot/dist/environment.d-DHdQ1Csl.d.ts +22 -0
- package/plugins/web-search/node_modules/@vitest/snapshot/dist/environment.d.ts +16 -0
- package/plugins/web-search/node_modules/@vitest/snapshot/dist/environment.js +40 -0
- package/plugins/web-search/node_modules/@vitest/snapshot/dist/index.d.ts +137 -0
- package/plugins/web-search/node_modules/@vitest/snapshot/dist/index.js +2305 -0
- package/plugins/web-search/node_modules/@vitest/snapshot/dist/manager.d.ts +18 -0
- package/plugins/web-search/node_modules/@vitest/snapshot/dist/manager.js +73 -0
- package/plugins/web-search/node_modules/@vitest/snapshot/dist/rawSnapshot.d-lFsMJFUd.d.ts +61 -0
- package/plugins/web-search/node_modules/@vitest/snapshot/package.json +54 -0
- package/plugins/web-search/node_modules/@vitest/spy/LICENSE +21 -0
- package/plugins/web-search/node_modules/@vitest/spy/README.md +3 -0
- package/plugins/web-search/node_modules/@vitest/spy/dist/index.d.ts +356 -0
- package/plugins/web-search/node_modules/@vitest/spy/dist/index.js +191 -0
- package/plugins/web-search/node_modules/@vitest/spy/package.json +38 -0
- package/plugins/web-search/node_modules/@vitest/utils/LICENSE +21 -0
- package/plugins/web-search/node_modules/@vitest/utils/dist/chunk-_commonjsHelpers.js +158 -0
- package/plugins/web-search/node_modules/@vitest/utils/dist/diff.d.ts +104 -0
- package/plugins/web-search/node_modules/@vitest/utils/dist/diff.js +2185 -0
- package/plugins/web-search/node_modules/@vitest/utils/dist/error.d.ts +9 -0
- package/plugins/web-search/node_modules/@vitest/utils/dist/error.js +162 -0
- package/plugins/web-search/node_modules/@vitest/utils/dist/helpers.d.ts +56 -0
- package/plugins/web-search/node_modules/@vitest/utils/dist/helpers.js +251 -0
- package/plugins/web-search/node_modules/@vitest/utils/dist/index.d.ts +57 -0
- package/plugins/web-search/node_modules/@vitest/utils/dist/index.js +633 -0
- package/plugins/web-search/node_modules/@vitest/utils/dist/source-map.d.ts +139 -0
- package/plugins/web-search/node_modules/@vitest/utils/dist/source-map.js +996 -0
- package/plugins/web-search/node_modules/@vitest/utils/dist/types.d-BCElaP-c.d.ts +53 -0
- package/plugins/web-search/node_modules/@vitest/utils/dist/types.d.ts +53 -0
- package/plugins/web-search/node_modules/@vitest/utils/dist/types.js +1 -0
- package/plugins/web-search/node_modules/@vitest/utils/package.json +77 -0
- package/plugins/web-search/node_modules/chai/LICENSE +21 -0
- package/plugins/web-search/node_modules/chai/README.md +162 -0
- package/plugins/web-search/node_modules/chai/package.json +74 -0
- package/plugins/web-search/node_modules/esbuild/README.md +3 -0
- package/plugins/web-search/node_modules/esbuild/package.json +49 -0
- package/plugins/web-search/node_modules/std-env/README.md +118 -0
- package/plugins/web-search/node_modules/std-env/dist/index.cjs +1 -0
- package/plugins/web-search/node_modules/std-env/dist/index.d.cts +92 -0
- package/plugins/web-search/node_modules/std-env/dist/index.d.mts +92 -0
- package/plugins/web-search/node_modules/std-env/dist/index.d.ts +92 -0
- package/plugins/web-search/node_modules/std-env/dist/index.mjs +1 -0
- package/plugins/web-search/node_modules/std-env/package.json +46 -0
- package/plugins/web-search/node_modules/tinyexec/LICENSE +21 -0
- package/plugins/web-search/node_modules/tinyexec/README.md +256 -0
- package/plugins/web-search/node_modules/tinyexec/dist/main.cjs +575 -0
- package/plugins/web-search/node_modules/tinyexec/dist/main.d.cts +70 -0
- package/plugins/web-search/node_modules/tinyexec/dist/main.d.ts +70 -0
- package/plugins/web-search/node_modules/tinyexec/dist/main.js +578 -0
- package/plugins/web-search/node_modules/tinyexec/package.json +66 -0
- package/plugins/web-search/node_modules/tinyrainbow/README.md +28 -0
- package/plugins/web-search/node_modules/tinyrainbow/dist/browser.d.ts +8 -0
- package/plugins/web-search/node_modules/tinyrainbow/dist/browser.js +20 -0
- package/plugins/web-search/node_modules/tinyrainbow/dist/chunk-BVHSVHOK.js +90 -0
- package/plugins/web-search/node_modules/tinyrainbow/dist/index-8b61d5bc.d.ts +59 -0
- package/plugins/web-search/node_modules/tinyrainbow/dist/node.d.ts +8 -0
- package/plugins/web-search/node_modules/tinyrainbow/dist/node.js +22 -0
- package/plugins/web-search/node_modules/tinyrainbow/package.json +37 -0
- package/plugins/web-search/node_modules/typescript/README.md +50 -0
- package/plugins/web-search/node_modules/typescript/package.json +120 -0
- package/plugins/web-search/node_modules/vite/README.md +20 -0
- package/plugins/web-search/node_modules/vite/dist/client/client.mjs +1106 -0
- package/plugins/web-search/node_modules/vite/dist/client/env.mjs +19 -0
- package/plugins/web-search/node_modules/vite/dist/node/chunks/build.js +4 -0
- package/plugins/web-search/node_modules/vite/dist/node/chunks/build2.js +5538 -0
- package/plugins/web-search/node_modules/vite/dist/node/chunks/chunk.js +48 -0
- package/plugins/web-search/node_modules/vite/dist/node/chunks/config.js +36065 -0
- package/plugins/web-search/node_modules/vite/dist/node/chunks/config2.js +4 -0
- package/plugins/web-search/node_modules/vite/dist/node/chunks/dist.js +6758 -0
- package/plugins/web-search/node_modules/vite/dist/node/chunks/lib.js +377 -0
- package/plugins/web-search/node_modules/vite/dist/node/chunks/logger.js +329 -0
- package/plugins/web-search/node_modules/vite/dist/node/chunks/moduleRunnerTransport.d.ts +96 -0
- package/plugins/web-search/node_modules/vite/dist/node/chunks/optimizer.js +4 -0
- package/plugins/web-search/node_modules/vite/dist/node/chunks/postcss-import.js +479 -0
- package/plugins/web-search/node_modules/vite/dist/node/chunks/preview.js +4 -0
- package/plugins/web-search/node_modules/vite/dist/node/chunks/server.js +4 -0
- package/plugins/web-search/node_modules/vite/dist/node/cli.js +698 -0
- package/plugins/web-search/node_modules/vite/dist/node/index.d.ts +3717 -0
- package/plugins/web-search/node_modules/vite/dist/node/index.js +30 -0
- package/plugins/web-search/node_modules/vite/dist/node/module-runner.d.ts +311 -0
- package/plugins/web-search/node_modules/vite/dist/node/module-runner.js +1160 -0
- package/plugins/web-search/node_modules/vite/package.json +199 -0
- package/plugins/web-search/node_modules/vite/types/package.json +4 -0
- package/plugins/web-search/node_modules/vitest/README.md +7 -0
- package/plugins/web-search/node_modules/vitest/dist/browser.d.ts +34 -0
- package/plugins/web-search/node_modules/vitest/dist/browser.js +8 -0
- package/plugins/web-search/node_modules/vitest/dist/chunks/_commonjsHelpers.BFTU3MAI.js +7 -0
- package/plugins/web-search/node_modules/vitest/dist/chunks/base.DfmxU-tU.js +38 -0
- package/plugins/web-search/node_modules/vitest/dist/chunks/benchmark.CYdenmiT.js +37 -0
- package/plugins/web-search/node_modules/vitest/dist/chunks/benchmark.d.BwvBVTda.d.ts +24 -0
- package/plugins/web-search/node_modules/vitest/dist/chunks/cac.0BJqEUeA.js +1469 -0
- package/plugins/web-search/node_modules/vitest/dist/chunks/cli-api.DWGBtMmz.js +10660 -0
- package/plugins/web-search/node_modules/vitest/dist/chunks/config.d.BKdhh7Zx.d.ts +224 -0
- package/plugins/web-search/node_modules/vitest/dist/chunks/console.CtFJOzRO.js +153 -0
- package/plugins/web-search/node_modules/vitest/dist/chunks/constants.DnKduX2e.js +44 -0
- package/plugins/web-search/node_modules/vitest/dist/chunks/coverage.DVF1vEu8.js +25 -0
- package/plugins/web-search/node_modules/vitest/dist/chunks/coverage.DfSpMS-b.js +4350 -0
- package/plugins/web-search/node_modules/vitest/dist/chunks/coverage.d.S9RMNXIe.d.ts +35 -0
- package/plugins/web-search/node_modules/vitest/dist/chunks/creator.GK6I-cL4.js +640 -0
- package/plugins/web-search/node_modules/vitest/dist/chunks/date.Bq6ZW5rf.js +73 -0
- package/plugins/web-search/node_modules/vitest/dist/chunks/defaults.B7q_naMc.js +115 -0
- package/plugins/web-search/node_modules/vitest/dist/chunks/env.D4Lgay0q.js +8 -0
- package/plugins/web-search/node_modules/vitest/dist/chunks/environment.d.cL3nLXbE.d.ts +119 -0
- package/plugins/web-search/node_modules/vitest/dist/chunks/execute.B7h3T_Hc.js +708 -0
- package/plugins/web-search/node_modules/vitest/dist/chunks/git.BVQ8w_Sw.js +72 -0
- package/plugins/web-search/node_modules/vitest/dist/chunks/global.d.MAmajcmJ.d.ts +136 -0
- package/plugins/web-search/node_modules/vitest/dist/chunks/globals.DEHgCU4V.js +26 -0
- package/plugins/web-search/node_modules/vitest/dist/chunks/index.B521nVV-.js +157 -0
- package/plugins/web-search/node_modules/vitest/dist/chunks/index.BCWujgDG.js +231 -0
- package/plugins/web-search/node_modules/vitest/dist/chunks/index.CdQS2e2Q.js +37 -0
- package/plugins/web-search/node_modules/vitest/dist/chunks/index.CmSc2RE5.js +587 -0
- package/plugins/web-search/node_modules/vitest/dist/chunks/index.CwejwG0H.js +105 -0
- package/plugins/web-search/node_modules/vitest/dist/chunks/index.D3XRDfWc.js +213 -0
- package/plugins/web-search/node_modules/vitest/dist/chunks/index.VByaPkjc.js +2183 -0
- package/plugins/web-search/node_modules/vitest/dist/chunks/index.X0nbfr6-.js +6584 -0
- package/plugins/web-search/node_modules/vitest/dist/chunks/inspector.C914Efll.js +57 -0
- package/plugins/web-search/node_modules/vitest/dist/chunks/mocker.d.BE_2ls6u.d.ts +17 -0
- package/plugins/web-search/node_modules/vitest/dist/chunks/node.fjCdwEIl.js +15 -0
- package/plugins/web-search/node_modules/vitest/dist/chunks/reporters.d.BuRON0I0.d.ts +3168 -0
- package/plugins/web-search/node_modules/vitest/dist/chunks/rpc.-pEldfrD.js +83 -0
- package/plugins/web-search/node_modules/vitest/dist/chunks/runBaseTests.9Ij9_de-.js +129 -0
- package/plugins/web-search/node_modules/vitest/dist/chunks/setup-common.Dd054P77.js +60 -0
- package/plugins/web-search/node_modules/vitest/dist/chunks/suite.d.FvehnV49.d.ts +10 -0
- package/plugins/web-search/node_modules/vitest/dist/chunks/typechecker.DRKU1-1g.js +874 -0
- package/plugins/web-search/node_modules/vitest/dist/chunks/utils.CAioKnHs.js +61 -0
- package/plugins/web-search/node_modules/vitest/dist/chunks/utils.XdZDrNZV.js +65 -0
- package/plugins/web-search/node_modules/vitest/dist/chunks/vi.bdSIJ99Y.js +4015 -0
- package/plugins/web-search/node_modules/vitest/dist/chunks/vite.d.BnOPPc46.d.ts +25 -0
- package/plugins/web-search/node_modules/vitest/dist/chunks/vm.BThCzidc.js +756 -0
- package/plugins/web-search/node_modules/vitest/dist/chunks/worker.d.CUgIPz9V.d.ts +176 -0
- package/plugins/web-search/node_modules/vitest/dist/chunks/worker.d.uzWsCv9X.d.ts +8 -0
- package/plugins/web-search/node_modules/vitest/dist/cli.js +27 -0
- package/plugins/web-search/node_modules/vitest/dist/config.cjs +148 -0
- package/plugins/web-search/node_modules/vitest/dist/config.d.ts +100 -0
- package/plugins/web-search/node_modules/vitest/dist/config.js +21 -0
- package/plugins/web-search/node_modules/vitest/dist/coverage.d.ts +108 -0
- package/plugins/web-search/node_modules/vitest/dist/coverage.js +34 -0
- package/plugins/web-search/node_modules/vitest/dist/environments.d.ts +26 -0
- package/plugins/web-search/node_modules/vitest/dist/environments.js +2 -0
- package/plugins/web-search/node_modules/vitest/dist/execute.d.ts +150 -0
- package/plugins/web-search/node_modules/vitest/dist/execute.js +13 -0
- package/plugins/web-search/node_modules/vitest/dist/index.d.ts +651 -0
- package/plugins/web-search/node_modules/vitest/dist/index.js +18 -0
- package/plugins/web-search/node_modules/vitest/dist/mocker.d.ts +1 -0
- package/plugins/web-search/node_modules/vitest/dist/mocker.js +1 -0
- package/plugins/web-search/node_modules/vitest/dist/node.d.ts +158 -0
- package/plugins/web-search/node_modules/vitest/dist/node.js +105 -0
- package/plugins/web-search/node_modules/vitest/dist/path.js +7 -0
- package/plugins/web-search/node_modules/vitest/dist/reporters.d.ts +25 -0
- package/plugins/web-search/node_modules/vitest/dist/reporters.js +23 -0
- package/plugins/web-search/node_modules/vitest/dist/runners.d.ts +46 -0
- package/plugins/web-search/node_modules/vitest/dist/runners.js +235 -0
- package/plugins/web-search/node_modules/vitest/dist/snapshot.d.ts +9 -0
- package/plugins/web-search/node_modules/vitest/dist/snapshot.js +4 -0
- package/plugins/web-search/node_modules/vitest/dist/spy.js +1 -0
- package/plugins/web-search/node_modules/vitest/dist/suite.d.ts +5 -0
- package/plugins/web-search/node_modules/vitest/dist/suite.js +5 -0
- package/plugins/web-search/node_modules/vitest/dist/worker.js +124 -0
- package/plugins/web-search/node_modules/vitest/dist/workers/forks.js +43 -0
- package/plugins/web-search/node_modules/vitest/dist/workers/runVmTests.js +90 -0
- package/plugins/web-search/node_modules/vitest/dist/workers/threads.js +31 -0
- package/plugins/web-search/node_modules/vitest/dist/workers/vmForks.js +47 -0
- package/plugins/web-search/node_modules/vitest/dist/workers/vmThreads.js +37 -0
- package/plugins/web-search/node_modules/vitest/dist/workers.d.ts +40 -0
- package/plugins/web-search/node_modules/vitest/dist/workers.js +30 -0
- package/plugins/web-search/node_modules/vitest/package.json +207 -0
- package/plugins/web-search/package.json +30 -0
- package/plugins/web-search/skills/web-search-howto.md +69 -0
- package/plugins/workboard/agent-seeds/echo-demo/agent.json +7 -0
- package/plugins/workboard/agent-seeds/llm-default/SOUL.md +53 -0
- package/plugins/workboard/agent-seeds/llm-default/agent.json +7 -0
- package/plugins/workboard/dist/client.d.ts +5 -0
- package/plugins/workboard/dist/client.d.ts.map +1 -0
- package/plugins/workboard/dist/client.js +895 -0
- package/plugins/workboard/dist/client.js.map +1 -0
- package/plugins/workboard/dist/db/agents.d.ts +100 -0
- package/plugins/workboard/dist/db/agents.d.ts.map +1 -0
- package/plugins/workboard/dist/db/agents.js +280 -0
- package/plugins/workboard/dist/db/agents.js.map +1 -0
- package/plugins/workboard/dist/db/schema.d.ts +3 -0
- package/plugins/workboard/dist/db/schema.d.ts.map +1 -0
- package/plugins/workboard/dist/db/schema.js +31 -0
- package/plugins/workboard/dist/db/schema.js.map +1 -0
- package/plugins/workboard/dist/db/session-history.d.ts +28 -0
- package/plugins/workboard/dist/db/session-history.d.ts.map +1 -0
- package/plugins/workboard/dist/db/session-history.js +224 -0
- package/plugins/workboard/dist/db/session-history.js.map +1 -0
- package/plugins/workboard/dist/db/tasks.d.ts +260 -0
- package/plugins/workboard/dist/db/tasks.d.ts.map +1 -0
- package/plugins/workboard/dist/db/tasks.js +451 -0
- package/plugins/workboard/dist/db/tasks.js.map +1 -0
- package/plugins/workboard/dist/db/worker-agents.d.ts +16 -0
- package/plugins/workboard/dist/db/worker-agents.d.ts.map +1 -0
- package/plugins/workboard/dist/db/worker-agents.js +62 -0
- package/plugins/workboard/dist/db/worker-agents.js.map +1 -0
- package/plugins/workboard/dist/effective-skills.d.ts +13 -0
- package/plugins/workboard/dist/effective-skills.d.ts.map +1 -0
- package/plugins/workboard/dist/effective-skills.js +126 -0
- package/plugins/workboard/dist/effective-skills.js.map +1 -0
- package/plugins/workboard/dist/fs-worker-agents.d.ts +35 -0
- package/plugins/workboard/dist/fs-worker-agents.d.ts.map +1 -0
- package/plugins/workboard/dist/fs-worker-agents.js +199 -0
- package/plugins/workboard/dist/fs-worker-agents.js.map +1 -0
- package/plugins/workboard/dist/migrate-worker-agents.d.ts +11 -0
- package/plugins/workboard/dist/migrate-worker-agents.d.ts.map +1 -0
- package/plugins/workboard/dist/migrate-worker-agents.js +89 -0
- package/plugins/workboard/dist/migrate-worker-agents.js.map +1 -0
- package/plugins/workboard/dist/routes/handlers.d.ts +106 -0
- package/plugins/workboard/dist/routes/handlers.d.ts.map +1 -0
- package/plugins/workboard/dist/routes/handlers.js +668 -0
- package/plugins/workboard/dist/routes/handlers.js.map +1 -0
- package/plugins/workboard/dist/server.d.ts +6 -0
- package/plugins/workboard/dist/server.d.ts.map +1 -0
- package/plugins/workboard/dist/server.js +368 -0
- package/plugins/workboard/dist/server.js.map +1 -0
- package/plugins/workboard/dist/tools/index.d.ts +70 -0
- package/plugins/workboard/dist/tools/index.d.ts.map +1 -0
- package/plugins/workboard/dist/tools/index.js +963 -0
- package/plugins/workboard/dist/tools/index.js.map +1 -0
- package/plugins/workboard/dist/types.d.ts +27 -0
- package/plugins/workboard/dist/types.d.ts.map +1 -0
- package/plugins/workboard/dist/types.js +16 -0
- package/plugins/workboard/dist/types.js.map +1 -0
- package/plugins/workboard/dist/worker/pool.d.ts +220 -0
- package/plugins/workboard/dist/worker/pool.d.ts.map +1 -0
- package/plugins/workboard/dist/worker/pool.js +866 -0
- package/plugins/workboard/dist/worker/pool.js.map +1 -0
- package/plugins/workboard/dist/worker/tool-policy.d.ts +27 -0
- package/plugins/workboard/dist/worker/tool-policy.d.ts.map +1 -0
- package/plugins/workboard/dist/worker/tool-policy.js +76 -0
- package/plugins/workboard/dist/worker/tool-policy.js.map +1 -0
- package/plugins/workboard/dist/worker-agents-page.d.ts +4 -0
- package/plugins/workboard/dist/worker-agents-page.d.ts.map +1 -0
- package/plugins/workboard/dist/worker-agents-page.js +193 -0
- package/plugins/workboard/dist/worker-agents-page.js.map +1 -0
- package/plugins/workboard/manifest.json +180 -0
- package/plugins/workboard/package.json +37 -0
- package/plugins/workboard/skills/large-input-large-output.md +185 -0
- package/plugins/workboard/skills/workboard-howto.md +166 -0
- package/plugins/workboard/skills/worker-creator.md +267 -0
- package/plugins/workboard/skills/worker-fleet.md +431 -0
|
@@ -0,0 +1,431 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: worker-fleet
|
|
3
|
+
description: How to design a multi-worker fleet for a non-trivial user request. Read this when the user asks for something that has natural separation of concerns (research → write, design → build → test, scrape → analyse → report) and a single worker would either lose context or do all roles badly. Covers role decomposition, SOUL.md authoring per role, task DAG design, and failure handling.
|
|
4
|
+
scope: main
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Designing a worker fleet
|
|
8
|
+
|
|
9
|
+
When the user gives you a non-trivial goal, your default is to be
|
|
10
|
+
boring: drop one task, let `llm-default` handle it. That works for
|
|
11
|
+
small, single-axis requests.
|
|
12
|
+
|
|
13
|
+
This skill is for when it doesn't. Three signals say "fleet":
|
|
14
|
+
|
|
15
|
+
1. **Multiple distinct roles.** "Design then build then test" is
|
|
16
|
+
three roles; bundling them into one prompt makes the agent
|
|
17
|
+
skim the spec because it's also writing code in the same turn.
|
|
18
|
+
2. **Quality matters across boundaries.** A coder who also writes
|
|
19
|
+
docs writes mediocre docs; a writer who also picks the model
|
|
20
|
+
architecture picks the wrong one. Boundaries enforce focus.
|
|
21
|
+
3. **Sequential dependency you can name.** If you can draw an
|
|
22
|
+
arrow ("the next agent reads what the previous one wrote"),
|
|
23
|
+
the arrow exists in the worker_agents pool too — make it
|
|
24
|
+
explicit via task `depends_on` instead of hand-holding.
|
|
25
|
+
|
|
26
|
+
If none of those apply, **don't build a fleet** — overhead
|
|
27
|
+
without payoff.
|
|
28
|
+
|
|
29
|
+
## Default phase pipeline: plan → design → build → verify
|
|
30
|
+
|
|
31
|
+
For non-trivial deliverables, decompose into phases BEFORE
|
|
32
|
+
creating any task. The default pipeline:
|
|
33
|
+
|
|
34
|
+
| Phase | What it produces |
|
|
35
|
+
|---|---|
|
|
36
|
+
| **PLAN** | Clarified requirements, sketched approach, listed assumptions, open questions answered. Output is usually a short markdown brief at `./projects/<slug>/PLAN.md`. |
|
|
37
|
+
| **DESIGN** | Concrete data shapes, file layout, interfaces, technology choices with rationale. Output is `DESIGN.md` plus any scaffolding files. |
|
|
38
|
+
| **BUILD** | The actual implementation. May be one task or several (see Sizing below). Output is the artefact at its final path. |
|
|
39
|
+
| **VERIFY** | Runs the artefact end-to-end against the acceptance criteria from PLAN. Captures evidence (test output, screenshot, file size, etc). Stamps a one-line verdict on the task. |
|
|
40
|
+
|
|
41
|
+
Each phase is **one task** (or BUILD may split into BUILD-1/2/3 —
|
|
42
|
+
see Sizing). Wire `dependsOn` so phase N+1 doesn't start until
|
|
43
|
+
phase N is done.
|
|
44
|
+
|
|
45
|
+
Skip phases only when the work genuinely doesn't need them: a
|
|
46
|
+
one-off bug fix can go straight to BUILD + VERIFY; a research
|
|
47
|
+
request may collapse to PLAN + BUILD where BUILD is the report
|
|
48
|
+
itself.
|
|
49
|
+
|
|
50
|
+
The phase pipeline is what makes the kanban useful for the user
|
|
51
|
+
— they see PLAN done, can review the approach, then watch BUILD
|
|
52
|
+
turn over without you holding their hand on every commit.
|
|
53
|
+
|
|
54
|
+
## Reuse over create (read this twice)
|
|
55
|
+
|
|
56
|
+
Before creating any new worker, run:
|
|
57
|
+
|
|
58
|
+
```
|
|
59
|
+
tenant_config_list({ path: "workers" })
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
For every role you think you need, ask in this order:
|
|
63
|
+
|
|
64
|
+
1. **Does an existing worker fit?** Match by responsibility, not
|
|
65
|
+
by name. The `coder` worker is a generalist code writer —
|
|
66
|
+
reuse it instead of inventing `frontend-dev` / `backend-dev`
|
|
67
|
+
/ `python-coder` siblings. The `llm-default` worker is a
|
|
68
|
+
generalist for everything that doesn't need a sharper SOUL.
|
|
69
|
+
2. **Can the existing worker do this with a clearer task
|
|
70
|
+
description?** Most "bad" outputs are bad task descriptions,
|
|
71
|
+
not wrong workers. Tighten the description first.
|
|
72
|
+
3. **Can a small SOUL.md edit on the existing worker absorb the
|
|
73
|
+
new role?** If the new role is a 20% twist on an existing
|
|
74
|
+
one, edit `tenant_config_write workers/<slug>/SOUL.md`
|
|
75
|
+
instead of forking.
|
|
76
|
+
4. **Only when 1–3 fail or the user explicitly asked for a new
|
|
77
|
+
worker** — build the new one.
|
|
78
|
+
|
|
79
|
+
Proliferating workers is the most common over-engineering trap.
|
|
80
|
+
Three consequences if you do it anyway:
|
|
81
|
+
|
|
82
|
+
- Each new SOUL is one more thing to maintain when behaviour
|
|
83
|
+
drifts.
|
|
84
|
+
- The user sees more rows in the Worker agents page than they
|
|
85
|
+
needed; the cognitive load is on them, not you.
|
|
86
|
+
- Identity collisions get more likely (a `writer` and a
|
|
87
|
+
`content-writer` confuse both the user and future you).
|
|
88
|
+
|
|
89
|
+
Ack the reuse decision out loud to the user when you make it:
|
|
90
|
+
"I'll use the existing `coder` worker for the build step — it
|
|
91
|
+
fits." That gives them a chance to override ("actually I want
|
|
92
|
+
a separate `coder-typescript` for this project") before you
|
|
93
|
+
commit.
|
|
94
|
+
|
|
95
|
+
## When NOT to fleet (just as important)
|
|
96
|
+
|
|
97
|
+
- One-shot Q&A, retrieval, or chat-as-thinking — main agent.
|
|
98
|
+
- Anything ≤ 5 minutes single-worker — overhead > payoff.
|
|
99
|
+
- Tasks where the "different roles" are actually the same person
|
|
100
|
+
doing different *steps* (e.g. "first research, then write the
|
|
101
|
+
same report"). Use one worker with a clearer SOUL instead.
|
|
102
|
+
- Throwaway / prototype work the user will rewrite anyway.
|
|
103
|
+
|
|
104
|
+
## Sizing (and the max_tokens stall trap)
|
|
105
|
+
|
|
106
|
+
Keep each task small enough that one worker can finish it in one
|
|
107
|
+
focused run — a few tool calls, a few files, one chunk of
|
|
108
|
+
reasoning. The worst failure mode in this system is a task that
|
|
109
|
+
generates so much content the LLM hits its `max_tokens` cap
|
|
110
|
+
mid-flight, runs out of room to call `task_complete`, and the
|
|
111
|
+
worker pool marks it stalled. The output you produced before the
|
|
112
|
+
cutoff is usually wasted, because the next attempt restarts from
|
|
113
|
+
the original task description.
|
|
114
|
+
|
|
115
|
+
Concrete signals that a task is too big and should split:
|
|
116
|
+
|
|
117
|
+
- generates 1000+ lines of code in one go
|
|
118
|
+
- needs 10+ separate tool calls in one task
|
|
119
|
+
- the user-visible deliverable has clear sub-features that ship
|
|
120
|
+
independently (\"the editor\" + \"the preview\" + \"the save/load\")
|
|
121
|
+
- you'd struggle to write a one-paragraph spec for it without
|
|
122
|
+
resorting to bullet lists with many items
|
|
123
|
+
|
|
124
|
+
When any of those apply, split: BUILD-1 (scaffolding + first
|
|
125
|
+
feature), BUILD-2 (next feature, depends on BUILD-1), and so on.
|
|
126
|
+
Many small tasks compose, retry better when one fails, surface
|
|
127
|
+
progress on the kanban, and let you intervene per-step instead
|
|
128
|
+
of per-monolith.
|
|
129
|
+
|
|
130
|
+
## Sizing
|
|
131
|
+
|
|
132
|
+
- **2 workers** is the common case. (designer + builder), (writer
|
|
133
|
+
+ editor), (researcher + summariser).
|
|
134
|
+
- **3 workers** when you want a third pair of eyes — typically a
|
|
135
|
+
QA / reviewer / critic at the end. Most "design → build → test"
|
|
136
|
+
flows want 3.
|
|
137
|
+
- **4+ workers** is rare. Don't introduce a worker just because a
|
|
138
|
+
*file type* is different (one md writer, one py writer); split
|
|
139
|
+
on *responsibility*, not output format.
|
|
140
|
+
|
|
141
|
+
If you're tempted to use 5+, you're probably modelling a function
|
|
142
|
+
call graph as a fleet — collapse the small ones into a single
|
|
143
|
+
worker that runs them sequentially.
|
|
144
|
+
|
|
145
|
+
## Designing each role
|
|
146
|
+
|
|
147
|
+
For every worker you propose:
|
|
148
|
+
|
|
149
|
+
1. **Name the responsibility in one sentence.** "Designs the
|
|
150
|
+
API spec, writes no code." If the sentence has an "and"
|
|
151
|
+
that's not just fluff, split into two roles.
|
|
152
|
+
2. **List inputs and outputs explicitly.** What files does the
|
|
153
|
+
worker read? What files does it produce? Path conventions
|
|
154
|
+
below.
|
|
155
|
+
3. **Anti-list the role.** What is the worker NOT supposed to
|
|
156
|
+
do? "Don't read source files", "don't run tests", "don't
|
|
157
|
+
add features the spec doesn't mention". This goes in SOUL.md.
|
|
158
|
+
4. **Pick a kind + model.** `kind: "llm"` for everything LLM-
|
|
159
|
+
shaped (the `kind` field is a runtime, not a label — see
|
|
160
|
+
worker-creator). Model defaults to host default; only set
|
|
161
|
+
`modelId` if the role genuinely needs Sonnet / Opus / etc.
|
|
162
|
+
5. **Decide allow-lists.** Default = omit toolsAllow /
|
|
163
|
+
skillsAllow. Only narrow when the role *should* be sandboxed
|
|
164
|
+
(e.g. a "summariser" worker that should only read, never
|
|
165
|
+
write).
|
|
166
|
+
|
|
167
|
+
## SOUL.md template
|
|
168
|
+
|
|
169
|
+
Open with the role identity, then state the boundaries the
|
|
170
|
+
*role* needs (the global SOUL set by the Default LLM is gone
|
|
171
|
+
when this worker runs, so cover the basics yourself):
|
|
172
|
+
|
|
173
|
+
```
|
|
174
|
+
You are <role>, a workboard worker focused on <one-sentence
|
|
175
|
+
responsibility>.
|
|
176
|
+
|
|
177
|
+
## Your job
|
|
178
|
+
|
|
179
|
+
- <2-4 bullet points on what you DO>
|
|
180
|
+
|
|
181
|
+
## Your boundaries
|
|
182
|
+
|
|
183
|
+
- <2-4 bullet points on what you DO NOT do>
|
|
184
|
+
- <Mention sibling workers' roles so it doesn't try to do their job>
|
|
185
|
+
|
|
186
|
+
## Inputs / outputs
|
|
187
|
+
|
|
188
|
+
- Read: <explicit paths or "the description tells you">
|
|
189
|
+
- Produce: <explicit paths under ./projects/<slug>/>
|
|
190
|
+
|
|
191
|
+
## Exit contract
|
|
192
|
+
|
|
193
|
+
Call task_complete with a one-line summary of what you produced
|
|
194
|
+
and a `files` array listing every file you wrote. The orchestrator
|
|
195
|
+
only sees this summary — narrative replies don't reach it.
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
Keep it under 40 lines. Workers don't need a manifesto, they need
|
|
199
|
+
a contract.
|
|
200
|
+
|
|
201
|
+
## Path conventions
|
|
202
|
+
|
|
203
|
+
Pick a single project slug for the whole fleet's outputs and put
|
|
204
|
+
everything under `./projects/<slug>/`:
|
|
205
|
+
|
|
206
|
+
```
|
|
207
|
+
./projects/<slug>/
|
|
208
|
+
├── spec.md <- architect's output
|
|
209
|
+
├── server.js <- coder's output
|
|
210
|
+
├── server.test.js
|
|
211
|
+
├── README.md
|
|
212
|
+
├── qa-report.md <- qa's output
|
|
213
|
+
└── (anything else workers produce)
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
Every task description tells its worker:
|
|
217
|
+
- exactly which sibling-produced files to read (full path), and
|
|
218
|
+
- exactly which files to produce (full path).
|
|
219
|
+
|
|
220
|
+
This is what makes the fleet composable: workers don't need to
|
|
221
|
+
know each other exists, only the file contract.
|
|
222
|
+
|
|
223
|
+
## Task DAG
|
|
224
|
+
|
|
225
|
+
One task per worker, normally. Use `depends_on` to express the
|
|
226
|
+
arrow:
|
|
227
|
+
|
|
228
|
+
```
|
|
229
|
+
T1 (architect) — no deps, picked up immediately
|
|
230
|
+
T2 (coder) — depends_on: [T1.id]
|
|
231
|
+
T3 (qa) — depends_on: [T2.id]
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
Pool semantics:
|
|
235
|
+
- `task_create` returns the new task's `id`. Capture it before
|
|
236
|
+
creating the dependent task.
|
|
237
|
+
- A blocked task stays in `ready` with a lock chip; the pool
|
|
238
|
+
skips it until every dep reaches `done`.
|
|
239
|
+
- Same-priority tasks claimed in created-order; bump `priority`
|
|
240
|
+
on the latest task only when you really need it ahead.
|
|
241
|
+
|
|
242
|
+
For *parallel* fan-out (e.g. one researcher feeds three
|
|
243
|
+
writers), you write three siblings all `depends_on: [T1.id]`.
|
|
244
|
+
Don't try to fan-in — workers can't talk to each other; if the
|
|
245
|
+
output needs aggregation, that's a fourth worker reading the
|
|
246
|
+
three siblings' outputs.
|
|
247
|
+
|
|
248
|
+
## Task description checklist
|
|
249
|
+
|
|
250
|
+
A good task description always has:
|
|
251
|
+
|
|
252
|
+
1. **Goal in one sentence** — what file(s) the worker writes.
|
|
253
|
+
2. **What to read** — full paths, named, `tenant_config_read`-
|
|
254
|
+
able. Describe what's in those files briefly so the worker
|
|
255
|
+
knows what to look for.
|
|
256
|
+
3. **What to produce** — full paths, format constraints (e.g.
|
|
257
|
+
"JSON", "markdown with front-matter").
|
|
258
|
+
4. **Quality gate** — measurable criteria. Tests pass? At least
|
|
259
|
+
N test cases? Output validates against schema? Lints clean?
|
|
260
|
+
Whatever the role's "self-verify" looks like.
|
|
261
|
+
5. **Boundaries restated** — "don't add features the spec
|
|
262
|
+
doesn't mention", "don't read source files".
|
|
263
|
+
|
|
264
|
+
If the description fits in two sentences, the task is too small
|
|
265
|
+
or too vague — either inline it (don't fleet at all) or split
|
|
266
|
+
it into more concrete subtasks.
|
|
267
|
+
|
|
268
|
+
## When the task ingests / produces a lot
|
|
269
|
+
|
|
270
|
+
If a task asks the worker to read ≥ 2 non-trivial files **and**
|
|
271
|
+
produce a single large output (long HTML / md / generated
|
|
272
|
+
code), you've crossed the threshold where naive prompting
|
|
273
|
+
breaks: the worker batches all the reads into one turn, the
|
|
274
|
+
tool results dominate the prompt, and the next call returns
|
|
275
|
+
empty (`no_completion`).
|
|
276
|
+
|
|
277
|
+
Two levers from the orchestrator side:
|
|
278
|
+
|
|
279
|
+
1. **Tell the worker to read this skill in the task description**:
|
|
280
|
+
"Read the `large-input-large-output` skill before starting;
|
|
281
|
+
apply pattern 1 (read-then-summarise) and pattern 2 (skeleton
|
|
282
|
+
then fill)." Workers won't reach for that skill unless the
|
|
283
|
+
description prompts them — the skill is `scope: worker` so
|
|
284
|
+
they see it in `<available_skills>`, but they have to choose
|
|
285
|
+
to read it.
|
|
286
|
+
2. **Or split the task**: one task per source file producing a
|
|
287
|
+
summary, plus one final assembly task reading only the
|
|
288
|
+
summaries. This is the bigger hammer; use it when the input
|
|
289
|
+
set is large enough (≥ 4 files, or any individual file > 30
|
|
290
|
+
KB) that even pattern 1 would push the worker close to its
|
|
291
|
+
context window.
|
|
292
|
+
|
|
293
|
+
This isn't about being defensive — it's about matching the
|
|
294
|
+
task shape to the underlying token economics.
|
|
295
|
+
|
|
296
|
+
## Worked example: "Build me a URL shortener"
|
|
297
|
+
|
|
298
|
+
User says: *Build me a URL shortener service prototype.* You,
|
|
299
|
+
main agent, hear "design + build + test, single output dir,
|
|
300
|
+
classic 3-role flow":
|
|
301
|
+
|
|
302
|
+
**Step 1.** Read this skill (already done — you're here).
|
|
303
|
+
|
|
304
|
+
**Step 2.** Read worker-creator skill (the *how* of writing
|
|
305
|
+
agent.json + SOUL.md).
|
|
306
|
+
|
|
307
|
+
**Step 3.** Check what already exists — reuse over create:
|
|
308
|
+
```
|
|
309
|
+
tenant_config_list({ path: "workers" })
|
|
310
|
+
```
|
|
311
|
+
For each role, walk the reuse-over-create checklist above. The
|
|
312
|
+
fleet you want: `architect`, `coder`, `qa`. Suppose the tenant
|
|
313
|
+
has `coder` / `llm-default` / `echo-demo`:
|
|
314
|
+
|
|
315
|
+
- **architect** — no existing worker is a good fit (we want
|
|
316
|
+
one that explicitly *doesn't* code), build it.
|
|
317
|
+
- **coder** — already there. Reuse, don't fork into
|
|
318
|
+
`coder-typescript` or similar.
|
|
319
|
+
- **qa** — no existing fit (we want one that doesn't read
|
|
320
|
+
source), build it.
|
|
321
|
+
|
|
322
|
+
Net: 2 new workers, 1 reused. Tell the user before writing:
|
|
323
|
+
"I'll reuse the existing `coder` worker for the build step,
|
|
324
|
+
and create `architect` + `qa` for design and testing. OK?"
|
|
325
|
+
This gives them a chance to override (e.g. "please make a
|
|
326
|
+
dedicated `coder-ts` for this project") before you commit.
|
|
327
|
+
|
|
328
|
+
**Step 4.** Create architect:
|
|
329
|
+
```
|
|
330
|
+
tenant_config_write({ path: "workers/architect/agent.json", ... })
|
|
331
|
+
tenant_config_write({ path: "workers/architect/SOUL.md", ... })
|
|
332
|
+
```
|
|
333
|
+
SOUL says: designs the API spec, writes no code, output is
|
|
334
|
+
`./projects/url-shortener/spec.md`, listing endpoints + data
|
|
335
|
+
model + error contract.
|
|
336
|
+
|
|
337
|
+
**Step 5.** Create qa:
|
|
338
|
+
```
|
|
339
|
+
tenant_config_write({ path: "workers/qa/agent.json", ... })
|
|
340
|
+
tenant_config_write({ path: "workers/qa/SOUL.md", ... })
|
|
341
|
+
```
|
|
342
|
+
SOUL says: black-box tests via curl/bash, doesn't read source
|
|
343
|
+
files, produces qa-report.md with PASS/FAIL per test.
|
|
344
|
+
|
|
345
|
+
**Step 6.** Drop tasks (capture each id from the response):
|
|
346
|
+
```
|
|
347
|
+
T1 = task_create(worker_agent_id="architect", title="Design
|
|
348
|
+
URL shortener API spec", description="<describes inputs +
|
|
349
|
+
required spec.md sections + 'don't write code' boundary>")
|
|
350
|
+
|
|
351
|
+
T2 = task_create(worker_agent_id="coder", depends_on=[T1.id],
|
|
352
|
+
title="Implement URL shortener per spec", description="<read
|
|
353
|
+
spec.md, output server.js + server.test.js + package.json +
|
|
354
|
+
README.md, must npm test pass before task_complete>")
|
|
355
|
+
|
|
356
|
+
T3 = task_create(worker_agent_id="qa", depends_on=[T2.id],
|
|
357
|
+
title="Black-box test the URL shortener", description="<read
|
|
358
|
+
README, start server, curl-test 6+ scenarios, qa-report.md
|
|
359
|
+
with PASS/FAIL each, summary at end>")
|
|
360
|
+
```
|
|
361
|
+
|
|
362
|
+
**Step 7.** Tell the user the three task ids and that the board
|
|
363
|
+
will animate them in dependency order. Pool picks them up
|
|
364
|
+
automatically; you don't poll.
|
|
365
|
+
|
|
366
|
+
**Step 8.** When the user comes back:
|
|
367
|
+
```
|
|
368
|
+
task_list()
|
|
369
|
+
```
|
|
370
|
+
Surface the deliverables (workboard expanded cards already
|
|
371
|
+
render delivery-file chips clicking through to the file open
|
|
372
|
+
dialog — point the user there rather than dumping content
|
|
373
|
+
inline).
|
|
374
|
+
|
|
375
|
+
## Failure handling (the intervention loop)
|
|
376
|
+
|
|
377
|
+
The worker pool no longer auto-retries. Every worker failure or
|
|
378
|
+
watchdog timeout parks the row with the `awaiting-intervention`
|
|
379
|
+
label and drops a `task_intervention_required` notification into
|
|
380
|
+
your inbox. **You** decide what happens next; the pool just
|
|
381
|
+
waits.
|
|
382
|
+
|
|
383
|
+
The four levers (use whichever fits, never just `task_move`
|
|
384
|
+
back to ready manually):
|
|
385
|
+
|
|
386
|
+
- `task_continue(task_id, hint?)` — resume the SAME worker
|
|
387
|
+
session. The transcript stays; only your hint is appended.
|
|
388
|
+
Use when the prior session was on the right track and just
|
|
389
|
+
needs a small correction ("don't dump the whole HTML in one
|
|
390
|
+
write_file; use skeleton-then-fill").
|
|
391
|
+
- `task_retry_fresh(task_id, description?)` — throw away the
|
|
392
|
+
prior session, start a brand new one, optionally rewrite the
|
|
393
|
+
brief. Use when the original prompt itself was the problem
|
|
394
|
+
or the worker went so far off-track that resuming is worse
|
|
395
|
+
than restarting.
|
|
396
|
+
- `task_extend_timeout(task_id, additional_ms)` — the worker
|
|
397
|
+
is still doing useful work, it just needs more clock. If the
|
|
398
|
+
failure was specifically a watchdog timeout, this also
|
|
399
|
+
revives the row (no need to chain task_continue).
|
|
400
|
+
- `task_abort(task_id, reason)` — give up; mark the task done
|
|
401
|
+
with a failure summary so dependents stop waiting. Use when
|
|
402
|
+
the spec is fundamentally broken or the data is missing.
|
|
403
|
+
|
|
404
|
+
Diagnosis flow:
|
|
405
|
+
|
|
406
|
+
1. Read the inbox `meta.interventionReason` first — watchdog
|
|
407
|
+
timeouts say so explicitly, runtime errors carry the
|
|
408
|
+
exception text, stream tears say `terminated`.
|
|
409
|
+
2. If meta isn't enough, call `task_get_history(task_id)` to
|
|
410
|
+
see what the worker actually did. The last few entries are
|
|
411
|
+
usually the smoking gun (e.g. an aborted write_file with a
|
|
412
|
+
giant `content` argument means context / output blew up).
|
|
413
|
+
3. Pick the lever. Output: one tool call, no extended prose
|
|
414
|
+
— the user is watching.
|
|
415
|
+
|
|
416
|
+
Cascade rules: a downstream task that fails because its
|
|
417
|
+
upstream delivered the wrong thing is not the worker's fault.
|
|
418
|
+
Revise the upstream task (task_retry_fresh with a tighter
|
|
419
|
+
description) before touching the downstream.
|
|
420
|
+
|
|
421
|
+
When in doubt, ask the user — fleet design is a judgement call,
|
|
422
|
+
and the user has context the description doesn't carry.
|
|
423
|
+
|
|
424
|
+
## See also
|
|
425
|
+
|
|
426
|
+
- `worker-creator` — the file format for agent.json / SOUL.md
|
|
427
|
+
/ per-worker skills.
|
|
428
|
+
- `workboard-howto` — board mechanics, task tools, delivery
|
|
429
|
+
files.
|
|
430
|
+
- `skill-creator` — if you want to ship a worker its own skill
|
|
431
|
+
bundle as part of the fleet.
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
export interface CatalogEntry {
|
|
2
|
+
id: string;
|
|
3
|
+
displayName: string;
|
|
4
|
+
description: string;
|
|
5
|
+
author: string;
|
|
6
|
+
verified: boolean;
|
|
7
|
+
repository: string;
|
|
8
|
+
homepage?: string;
|
|
9
|
+
license?: string;
|
|
10
|
+
tags: string[];
|
|
11
|
+
latestVersion: string;
|
|
12
|
+
tarballUrl: string;
|
|
13
|
+
tarballSha256: string;
|
|
14
|
+
tarballSize?: number;
|
|
15
|
+
tianshuRange: string;
|
|
16
|
+
}
|
|
17
|
+
export interface CatalogSnapshot {
|
|
18
|
+
/** Source URL the snapshot was loaded from. */
|
|
19
|
+
source: string;
|
|
20
|
+
/** ISO timestamp when the host fetched the catalog (server clock). */
|
|
21
|
+
fetchedAt: string;
|
|
22
|
+
/** ISO timestamp the catalog itself reports it was last updated. */
|
|
23
|
+
catalogUpdatedAt: string | null;
|
|
24
|
+
/** Validated, ready-to-use entries. */
|
|
25
|
+
entries: CatalogEntry[];
|
|
26
|
+
/** Count of entries dropped because they failed schema checks. */
|
|
27
|
+
entriesDropped: number;
|
|
28
|
+
}
|
|
29
|
+
export interface CatalogClientOpts {
|
|
30
|
+
url?: string;
|
|
31
|
+
ttlMs?: number;
|
|
32
|
+
fetcher?: typeof fetch;
|
|
33
|
+
}
|
|
34
|
+
export declare class CatalogClient {
|
|
35
|
+
private readonly url;
|
|
36
|
+
private readonly ttlMs;
|
|
37
|
+
private readonly fetcher;
|
|
38
|
+
private cache;
|
|
39
|
+
private inflight;
|
|
40
|
+
constructor(opts?: CatalogClientOpts);
|
|
41
|
+
/**
|
|
42
|
+
* Returns the cached snapshot if still fresh; otherwise re-fetches.
|
|
43
|
+
* Concurrent calls share the same in-flight promise.
|
|
44
|
+
*/
|
|
45
|
+
get(opts?: {
|
|
46
|
+
force?: boolean;
|
|
47
|
+
}): Promise<CatalogSnapshot>;
|
|
48
|
+
/** Discard the in-memory snapshot, forcing the next get() to re-fetch. */
|
|
49
|
+
invalidate(): void;
|
|
50
|
+
private fetchAndCache;
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=catalog.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../src/catalog.ts"],"names":[],"mappings":"AA0BA,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,eAAe;IAC9B,+CAA+C;IAC/C,MAAM,EAAE,MAAM,CAAC;IACf,sEAAsE;IACtE,SAAS,EAAE,MAAM,CAAC;IAClB,oEAAoE;IACpE,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,uCAAuC;IACvC,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,kEAAkE;IAClE,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,iBAAiB;IAChC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,KAAK,CAAC;CACxB;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAS;IAC7B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAe;IACvC,OAAO,CAAC,KAAK,CAAiE;IAC9E,OAAO,CAAC,QAAQ,CAAyC;gBAE7C,IAAI,GAAE,iBAAsB;IAMxC;;;OAGG;IACG,GAAG,CAAC,IAAI,GAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAO,GAAG,OAAO,CAAC,eAAe,CAAC;IAYnE,0EAA0E;IAC1E,UAAU,IAAI,IAAI;YAIJ,aAAa;CAqC5B"}
|
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
// Plugin Catalog client.
|
|
2
|
+
//
|
|
3
|
+
// Fetches the JSON catalog from a remote URL (default
|
|
4
|
+
// `tianshu-ai/plugin-registry`'s `main` branch) and validates the
|
|
5
|
+
// shape against the schema agreed in that repo's `schema.json`.
|
|
6
|
+
//
|
|
7
|
+
// v1 is intentionally minimal:
|
|
8
|
+
// - GET only, no install yet (P2 will add /install)
|
|
9
|
+
// - in-memory cache, refresh on TTL or explicit POST refresh
|
|
10
|
+
// - 1 MB hard cap on the catalog body
|
|
11
|
+
//
|
|
12
|
+
// We do NOT trust the remote: every required field is type-checked
|
|
13
|
+
// before being handed to the API surface. Anything malformed is
|
|
14
|
+
// dropped from the response with an `entriesDropped` count surfaced
|
|
15
|
+
// to the client so the Plugin Manager UI can warn the user.
|
|
16
|
+
const DEFAULT_CATALOG_URL = "https://raw.githubusercontent.com/tianshu-ai/plugin-registry/main/catalog.json";
|
|
17
|
+
const MAX_BODY_BYTES = 1_048_576; // 1 MB
|
|
18
|
+
const FETCH_TIMEOUT_MS = 10_000;
|
|
19
|
+
const TTL_MS = 5 * 60 * 1000; // 5 minutes
|
|
20
|
+
const ID_RE = /^[a-z0-9][a-z0-9-]{1,30}$/;
|
|
21
|
+
const SHA256_RE = /^[a-f0-9]{64}$/;
|
|
22
|
+
export class CatalogClient {
|
|
23
|
+
url;
|
|
24
|
+
ttlMs;
|
|
25
|
+
fetcher;
|
|
26
|
+
cache = null;
|
|
27
|
+
inflight = null;
|
|
28
|
+
constructor(opts = {}) {
|
|
29
|
+
this.url = opts.url ?? process.env.TIANSHU_CATALOG_URL ?? DEFAULT_CATALOG_URL;
|
|
30
|
+
this.ttlMs = opts.ttlMs ?? TTL_MS;
|
|
31
|
+
this.fetcher = opts.fetcher ?? fetch;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Returns the cached snapshot if still fresh; otherwise re-fetches.
|
|
35
|
+
* Concurrent calls share the same in-flight promise.
|
|
36
|
+
*/
|
|
37
|
+
async get(opts = {}) {
|
|
38
|
+
const now = Date.now();
|
|
39
|
+
if (!opts.force && this.cache && this.cache.expiresAt > now) {
|
|
40
|
+
return this.cache.snapshot;
|
|
41
|
+
}
|
|
42
|
+
if (this.inflight)
|
|
43
|
+
return this.inflight;
|
|
44
|
+
this.inflight = this.fetchAndCache().finally(() => {
|
|
45
|
+
this.inflight = null;
|
|
46
|
+
});
|
|
47
|
+
return this.inflight;
|
|
48
|
+
}
|
|
49
|
+
/** Discard the in-memory snapshot, forcing the next get() to re-fetch. */
|
|
50
|
+
invalidate() {
|
|
51
|
+
this.cache = null;
|
|
52
|
+
}
|
|
53
|
+
async fetchAndCache() {
|
|
54
|
+
const fetchedAt = new Date().toISOString();
|
|
55
|
+
const ac = new AbortController();
|
|
56
|
+
const timer = setTimeout(() => ac.abort(), FETCH_TIMEOUT_MS);
|
|
57
|
+
let body;
|
|
58
|
+
try {
|
|
59
|
+
const r = await this.fetcher(this.url, {
|
|
60
|
+
signal: ac.signal,
|
|
61
|
+
headers: { accept: "application/json" },
|
|
62
|
+
});
|
|
63
|
+
if (!r.ok) {
|
|
64
|
+
throw new Error(`catalog fetch ${this.url} → ${r.status}`);
|
|
65
|
+
}
|
|
66
|
+
const cl = Number.parseInt(r.headers.get("content-length") ?? "0", 10);
|
|
67
|
+
if (Number.isFinite(cl) && cl > MAX_BODY_BYTES) {
|
|
68
|
+
throw new Error(`catalog body too large: declared ${cl} bytes`);
|
|
69
|
+
}
|
|
70
|
+
body = await r.text();
|
|
71
|
+
if (body.length > MAX_BODY_BYTES) {
|
|
72
|
+
throw new Error(`catalog body too large: ${body.length} bytes`);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
finally {
|
|
76
|
+
clearTimeout(timer);
|
|
77
|
+
}
|
|
78
|
+
let parsed;
|
|
79
|
+
try {
|
|
80
|
+
parsed = JSON.parse(body);
|
|
81
|
+
}
|
|
82
|
+
catch (err) {
|
|
83
|
+
throw new Error(`catalog body is not valid JSON: ${describe(err)}`);
|
|
84
|
+
}
|
|
85
|
+
const snapshot = validateCatalog(parsed, this.url, fetchedAt);
|
|
86
|
+
this.cache = { snapshot, expiresAt: Date.now() + this.ttlMs };
|
|
87
|
+
return snapshot;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
function validateCatalog(raw, source, fetchedAt) {
|
|
91
|
+
if (!isObject(raw)) {
|
|
92
|
+
throw new Error("catalog root is not an object");
|
|
93
|
+
}
|
|
94
|
+
if (raw.schemaVersion !== 1) {
|
|
95
|
+
throw new Error(`unsupported catalog schemaVersion: ${String(raw.schemaVersion)}`);
|
|
96
|
+
}
|
|
97
|
+
if (!Array.isArray(raw.plugins)) {
|
|
98
|
+
throw new Error("catalog.plugins is not an array");
|
|
99
|
+
}
|
|
100
|
+
const seenIds = new Set();
|
|
101
|
+
const entries = [];
|
|
102
|
+
let dropped = 0;
|
|
103
|
+
for (const item of raw.plugins) {
|
|
104
|
+
const e = normaliseEntry(item);
|
|
105
|
+
if (!e) {
|
|
106
|
+
dropped++;
|
|
107
|
+
continue;
|
|
108
|
+
}
|
|
109
|
+
if (seenIds.has(e.id)) {
|
|
110
|
+
dropped++;
|
|
111
|
+
continue;
|
|
112
|
+
}
|
|
113
|
+
seenIds.add(e.id);
|
|
114
|
+
entries.push(e);
|
|
115
|
+
}
|
|
116
|
+
return {
|
|
117
|
+
source,
|
|
118
|
+
fetchedAt,
|
|
119
|
+
catalogUpdatedAt: typeof raw.updatedAt === "string" ? raw.updatedAt : null,
|
|
120
|
+
entries,
|
|
121
|
+
entriesDropped: dropped,
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
function normaliseEntry(raw) {
|
|
125
|
+
if (!isObject(raw))
|
|
126
|
+
return null;
|
|
127
|
+
const { id, displayName, description, author, verified, repository, homepage, license, tags, latestVersion, tarballUrl, tarballSha256, tarballSize, tianshuRange, } = raw;
|
|
128
|
+
if (typeof id !== "string" || !ID_RE.test(id))
|
|
129
|
+
return null;
|
|
130
|
+
if (!nonEmptyString(displayName) || displayName.length > 80)
|
|
131
|
+
return null;
|
|
132
|
+
if (!nonEmptyString(description) || description.length > 500)
|
|
133
|
+
return null;
|
|
134
|
+
if (!nonEmptyString(author))
|
|
135
|
+
return null;
|
|
136
|
+
if (!isHttpUrl(repository))
|
|
137
|
+
return null;
|
|
138
|
+
if (!nonEmptyString(latestVersion))
|
|
139
|
+
return null;
|
|
140
|
+
if (!isHttpUrl(tarballUrl))
|
|
141
|
+
return null;
|
|
142
|
+
if (typeof tarballSha256 !== "string" || !SHA256_RE.test(tarballSha256))
|
|
143
|
+
return null;
|
|
144
|
+
if (!nonEmptyString(tianshuRange))
|
|
145
|
+
return null;
|
|
146
|
+
const cleanedTags = [];
|
|
147
|
+
if (Array.isArray(tags)) {
|
|
148
|
+
for (const t of tags) {
|
|
149
|
+
if (typeof t === "string" && t.length > 0 && t.length <= 32 && cleanedTags.length < 10) {
|
|
150
|
+
cleanedTags.push(t);
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
return {
|
|
155
|
+
id,
|
|
156
|
+
displayName,
|
|
157
|
+
description,
|
|
158
|
+
author,
|
|
159
|
+
verified: verified === true,
|
|
160
|
+
repository,
|
|
161
|
+
homepage: typeof homepage === "string" && isHttpUrl(homepage) ? homepage : undefined,
|
|
162
|
+
license: nonEmptyString(license) ? license : undefined,
|
|
163
|
+
tags: cleanedTags,
|
|
164
|
+
latestVersion,
|
|
165
|
+
tarballUrl,
|
|
166
|
+
tarballSha256,
|
|
167
|
+
tarballSize: typeof tarballSize === "number" && Number.isInteger(tarballSize) && tarballSize > 0
|
|
168
|
+
? tarballSize
|
|
169
|
+
: undefined,
|
|
170
|
+
tianshuRange,
|
|
171
|
+
};
|
|
172
|
+
}
|
|
173
|
+
function isObject(x) {
|
|
174
|
+
return typeof x === "object" && x !== null && !Array.isArray(x);
|
|
175
|
+
}
|
|
176
|
+
function nonEmptyString(x) {
|
|
177
|
+
return typeof x === "string" && x.length > 0;
|
|
178
|
+
}
|
|
179
|
+
function isHttpUrl(x) {
|
|
180
|
+
if (typeof x !== "string")
|
|
181
|
+
return false;
|
|
182
|
+
return x.startsWith("https://") || x.startsWith("http://");
|
|
183
|
+
}
|
|
184
|
+
function describe(err) {
|
|
185
|
+
if (err instanceof Error)
|
|
186
|
+
return err.message;
|
|
187
|
+
return String(err);
|
|
188
|
+
}
|
|
189
|
+
//# sourceMappingURL=catalog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"catalog.js","sourceRoot":"","sources":["../src/catalog.ts"],"names":[],"mappings":"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"}
|