@crewx/sdk 0.8.0-rc.73 → 0.8.0-rc.75
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/README.md +380 -818
- package/dist/adapter/context-builder.d.ts +35 -0
- package/dist/adapter/context-builder.js +87 -0
- package/dist/adapter/index.d.ts +5 -0
- package/dist/{core/remote → adapter}/index.js +3 -2
- package/dist/adapter/plugin-helper.d.ts +19 -0
- package/dist/adapter/plugin-helper.js +45 -0
- package/dist/adapter/scoped-store.d.ts +12 -0
- package/dist/adapter/scoped-store.js +43 -0
- package/dist/adapter/types.d.ts +264 -0
- package/dist/adapter/types.js +23 -0
- package/dist/agent/resolver.d.ts +18 -0
- package/dist/agent/resolver.js +46 -0
- package/dist/boxing/box-storage.interface.d.ts +12 -0
- package/dist/boxing/box-storage.interface.js +3 -0
- package/dist/boxing/box.service.d.ts +4 -0
- package/dist/boxing/box.service.js +5 -1
- package/dist/boxing/box.types.d.ts +4 -0
- package/dist/boxing/box.types.js +3 -0
- package/dist/boxing/context-builder.d.ts +6 -7
- package/dist/boxing/context-builder.js +3 -0
- package/dist/client/CrewxClient.d.ts +65 -0
- package/dist/client/CrewxClient.js +86 -0
- package/dist/client/index.d.ts +3 -0
- package/dist/client/index.js +6 -0
- package/dist/config/loader.browser.d.ts +14 -0
- package/dist/config/loader.browser.js +59 -0
- package/dist/config/loader.d.ts +19 -0
- package/dist/config/loader.js +95 -0
- package/dist/conversation/index.d.ts +5 -3
- package/dist/conversation/index.js +8 -3
- package/dist/conversation/sqlite-provider.d.ts +21 -0
- package/dist/conversation/sqlite-provider.js +178 -0
- package/dist/conversation/to-task-reader.d.ts +14 -0
- package/dist/conversation/to-task-reader.js +28 -0
- package/dist/conversation/to-template-messages.d.ts +15 -0
- package/dist/conversation/to-template-messages.js +34 -0
- package/dist/conversation/types.d.ts +101 -0
- package/dist/conversation/types.js +10 -0
- package/dist/esm/agent/resolver.js +41 -0
- package/dist/esm/boxing/box-storage.interface.js +5 -0
- package/dist/esm/boxing/box.service.js +69 -0
- package/dist/esm/boxing/box.types.js +5 -0
- package/dist/esm/boxing/context-builder.js +76 -0
- package/dist/esm/client/CrewxClient.js +82 -0
- package/dist/esm/client/index.js +2 -0
- package/dist/esm/config/loader.browser.js +54 -0
- package/dist/esm/config/loader.js +77 -0
- package/dist/esm/events/TypedEventEmitter.js +61 -0
- package/dist/esm/events/types.js +8 -0
- package/dist/esm/facade/Crewx.browser.js +310 -0
- package/dist/esm/facade/Crewx.js +941 -0
- package/dist/esm/hooks/define.js +10 -0
- package/dist/esm/hooks/dispatch.js +76 -0
- package/dist/esm/hooks/index.js +6 -0
- package/dist/esm/hooks/observer.js +56 -0
- package/dist/esm/hooks/plugin.js +12 -0
- package/dist/esm/hooks/types.js +9 -0
- package/dist/esm/index.browser.js +15 -0
- package/dist/esm/index.js +60 -0
- package/dist/esm/layout/loader.js +268 -0
- package/dist/esm/layout/props-validator.js +297 -0
- package/dist/esm/layout/renderer.js +180 -0
- package/dist/esm/layout/types.js +31 -0
- package/dist/esm/parallel/agent-runtime.js +21 -0
- package/dist/esm/parallel/helpers.js +214 -0
- package/dist/esm/parallel/index.js +5 -0
- package/dist/esm/parallel/parallel-runner.js +221 -0
- package/dist/esm/parallel/types.js +5 -0
- package/dist/esm/parsers/agent-call.util.js +15 -0
- package/dist/esm/parsers/claude.parser.js +64 -0
- package/dist/esm/parsers/codex.parser.js +97 -0
- package/dist/esm/parsers/copilot.parser.js +63 -0
- package/dist/esm/parsers/gemini.parser.js +43 -0
- package/dist/esm/parsers/opencode.parser.js +73 -0
- package/dist/esm/parsers/router.js +53 -0
- package/dist/esm/platform/BrowserFsAdapter.js +80 -0
- package/dist/esm/platform/IFsAdapter.js +2 -0
- package/dist/esm/platform/NodeFsAdapter.js +34 -0
- package/dist/esm/plugin/plugin-provider.js +202 -0
- package/dist/esm/plugin/types.js +8 -0
- package/dist/esm/plugin.js +25 -0
- package/dist/esm/provider/bridge.browser.js +43 -0
- package/dist/esm/provider/bridge.js +373 -0
- package/dist/esm/provider/parse-usage.js +80 -0
- package/dist/esm/provider/register-api.js +21 -0
- package/dist/esm/provider/vercel-runtime.js +310 -0
- package/dist/esm/remote/index.js +10 -0
- package/dist/esm/remote/remote-agent-manager.js +194 -0
- package/dist/esm/remote/remote-provider.js +98 -0
- package/dist/esm/remote/remote-transport.js +79 -0
- package/dist/esm/remote/types.js +8 -0
- package/dist/esm/server/auth.js +31 -0
- package/dist/esm/server/handler.js +72 -0
- package/dist/esm/server/index.js +5 -0
- package/dist/esm/server/tool-adapter.js +92 -0
- package/dist/esm/template/engine.js +100 -0
- package/dist/esm/template/helpers/exec.browser.js +31 -0
- package/dist/esm/template/helpers/exec.js +220 -0
- package/dist/esm/template/helpers/fenced_code.js +17 -0
- package/dist/esm/template/helpers/include.js +20 -0
- package/dist/esm/template/helpers/p1p2.js +83 -0
- package/dist/esm/template/loader/DocumentLoader.js +124 -0
- package/dist/esm/template/types.js +5 -0
- package/dist/esm/tools/delegate.js +57 -0
- package/dist/esm/tools/index.js +5 -0
- package/dist/esm/tools/node/builtin.js +541 -0
- package/dist/esm/tools/node/index.js +54 -0
- package/dist/esm/types/index.js +27 -0
- package/dist/esm/types/task-log.types.js +5 -0
- package/dist/esm/utils/env-defaults.js +23 -0
- package/dist/esm/utils/glob-match.js +38 -0
- package/dist/esm/utils/id.js +46 -0
- package/dist/esm/utils/workspace.js +21 -0
- package/dist/events/TypedEventEmitter.d.ts +31 -0
- package/dist/events/TypedEventEmitter.js +65 -0
- package/dist/events/types.d.ts +139 -0
- package/dist/events/types.js +9 -0
- package/dist/facade/Crewx.browser.d.ts +73 -0
- package/dist/facade/Crewx.browser.js +314 -0
- package/dist/facade/Crewx.d.ts +267 -0
- package/dist/facade/Crewx.js +1299 -0
- package/dist/hooks/define.d.ts +10 -0
- package/dist/hooks/define.js +13 -0
- package/dist/hooks/dispatch.d.ts +61 -0
- package/dist/hooks/dispatch.js +147 -0
- package/dist/hooks/index.d.ts +13 -0
- package/dist/hooks/index.js +24 -0
- package/dist/hooks/observer.d.ts +20 -0
- package/dist/hooks/observer.js +60 -0
- package/dist/hooks/plugin.d.ts +19 -0
- package/dist/hooks/plugin.js +17 -0
- package/dist/hooks/tool-normalize.d.ts +29 -0
- package/dist/hooks/tool-normalize.js +110 -0
- package/dist/hooks/types.d.ts +79 -0
- package/dist/hooks/types.js +12 -0
- package/dist/hooks/yaml-plugin.d.ts +29 -0
- package/dist/hooks/yaml-plugin.js +356 -0
- package/dist/index.browser.d.ts +15 -0
- package/dist/index.browser.js +25 -0
- package/dist/index.d.ts +70 -58
- package/dist/index.js +144 -133
- package/dist/{services/layout-loader.service.d.ts → layout/loader.d.ts} +24 -4
- package/dist/{services/layout-loader.service.js → layout/loader.js} +103 -73
- package/dist/{services/props-validator.service.d.ts → layout/props-validator.d.ts} +7 -1
- package/dist/{services/props-validator.service.js → layout/props-validator.js} +28 -59
- package/dist/{services/layout-renderer.service.d.ts → layout/renderer.d.ts} +28 -14
- package/dist/layout/renderer.js +193 -0
- package/dist/{types/layout.types.d.ts → layout/types.d.ts} +47 -1
- package/dist/{types/layout.types.js → layout/types.js} +15 -1
- package/dist/parallel/agent-runtime.d.ts +31 -0
- package/dist/parallel/agent-runtime.js +25 -0
- package/dist/{core/parallel → parallel}/helpers.d.ts +2 -1
- package/dist/{core/parallel → parallel}/helpers.js +55 -88
- package/dist/parallel/index.d.ts +8 -0
- package/dist/{core/parallel → parallel}/index.js +5 -3
- package/dist/{core/parallel → parallel}/parallel-runner.d.ts +8 -1
- package/dist/{core/parallel → parallel}/parallel-runner.js +53 -57
- package/dist/parallel/types.d.ts +65 -0
- package/dist/parallel/types.js +6 -0
- package/dist/parsers/agent-call.util.d.ts +3 -0
- package/dist/parsers/agent-call.util.js +2 -0
- package/dist/parsers/api.parser.d.ts +10 -0
- package/dist/parsers/api.parser.js +26 -0
- package/dist/parsers/claude.parser.d.ts +8 -0
- package/dist/parsers/claude.parser.js +22 -1
- package/dist/parsers/codex.parser.d.ts +8 -0
- package/dist/parsers/codex.parser.js +11 -0
- package/dist/parsers/copilot.parser.d.ts +9 -0
- package/dist/parsers/copilot.parser.js +8 -0
- package/dist/parsers/gemini.parser.d.ts +10 -0
- package/dist/parsers/gemini.parser.js +10 -0
- package/dist/parsers/opencode.parser.d.ts +12 -0
- package/dist/parsers/opencode.parser.js +76 -0
- package/dist/parsers/router.d.ts +7 -0
- package/dist/parsers/router.js +56 -0
- package/dist/platform/BrowserFsAdapter.d.ts +37 -0
- package/dist/platform/BrowserFsAdapter.js +84 -0
- package/dist/platform/IFsAdapter.d.ts +29 -0
- package/dist/{core/remote/types.js → platform/IFsAdapter.js} +1 -1
- package/dist/platform/NodeFsAdapter.d.ts +16 -0
- package/dist/platform/NodeFsAdapter.js +38 -0
- package/dist/plugin/plugin-provider.d.ts +33 -0
- package/dist/plugin/plugin-provider.js +207 -0
- package/dist/plugin/types.d.ts +53 -0
- package/dist/plugin/types.js +9 -0
- package/dist/plugin.d.ts +33 -0
- package/dist/plugin.js +29 -0
- package/dist/plugins/conversation.d.ts +18 -0
- package/dist/plugins/conversation.js +59 -0
- package/dist/plugins/file-logger.d.ts +29 -0
- package/dist/plugins/file-logger.js +87 -0
- package/dist/plugins/index.d.ts +16 -0
- package/dist/plugins/index.js +19 -0
- package/dist/plugins/sqlite-tracing.d.ts +29 -0
- package/dist/plugins/sqlite-tracing.js +112 -0
- package/dist/provider/bridge.browser.d.ts +49 -0
- package/dist/provider/bridge.browser.js +49 -0
- package/dist/provider/bridge.d.ts +106 -0
- package/dist/provider/bridge.js +380 -0
- package/dist/provider/mastra-runtime.d.ts +45 -0
- package/dist/provider/mastra-runtime.js +208 -0
- package/dist/provider/parse-usage.d.ts +20 -0
- package/dist/provider/parse-usage.js +83 -0
- package/dist/provider/register-api.d.ts +14 -0
- package/dist/provider/register-api.js +24 -0
- package/dist/provider/vercel-runtime.d.ts +54 -0
- package/dist/provider/vercel-runtime.js +347 -0
- package/dist/remote/index.d.ts +13 -0
- package/dist/remote/index.js +32 -0
- package/dist/remote/remote-agent-manager.d.ts +54 -0
- package/dist/{core/remote → remote}/remote-agent-manager.js +100 -97
- package/dist/remote/remote-provider.d.ts +47 -0
- package/dist/remote/remote-provider.js +141 -0
- package/dist/remote/remote-transport.d.ts +32 -0
- package/dist/remote/remote-transport.js +83 -0
- package/dist/remote/types.d.ts +147 -0
- package/dist/remote/types.js +9 -0
- package/dist/server/auth.d.ts +21 -0
- package/dist/server/auth.js +35 -0
- package/dist/server/handler.d.ts +24 -0
- package/dist/server/handler.js +75 -0
- package/dist/server/index.d.ts +7 -0
- package/dist/server/index.js +9 -0
- package/dist/server/tool-adapter.d.ts +19 -0
- package/dist/server/tool-adapter.js +95 -0
- package/dist/template/engine.d.ts +28 -0
- package/dist/template/engine.js +137 -0
- package/dist/template/helpers/exec.browser.d.ts +22 -0
- package/dist/template/helpers/exec.browser.js +41 -0
- package/dist/template/helpers/exec.d.ts +60 -0
- package/dist/template/helpers/exec.js +230 -0
- package/dist/template/helpers/fenced_code.d.ts +22 -0
- package/dist/template/helpers/fenced_code.js +20 -0
- package/dist/template/helpers/format-conversation.d.ts +30 -0
- package/dist/template/helpers/format-conversation.js +53 -0
- package/dist/template/helpers/include.d.ts +16 -0
- package/dist/template/helpers/include.js +23 -0
- package/dist/template/helpers/p1p2.d.ts +37 -0
- package/dist/template/helpers/p1p2.js +90 -0
- package/dist/template/loader/DocumentLoader.d.ts +48 -0
- package/dist/template/loader/DocumentLoader.js +128 -0
- package/dist/template/types.d.ts +51 -0
- package/dist/template/types.js +6 -0
- package/dist/testing/index.d.ts +12 -0
- package/dist/testing/index.js +16 -0
- package/dist/testing/mock-audit.d.ts +10 -0
- package/dist/testing/mock-audit.js +13 -0
- package/dist/testing/mock-context.d.ts +27 -0
- package/dist/testing/mock-context.js +68 -0
- package/dist/testing/mock-logger.d.ts +15 -0
- package/dist/testing/mock-logger.js +27 -0
- package/dist/testing/mock-router.d.ts +16 -0
- package/dist/testing/mock-router.js +67 -0
- package/dist/testing/mock-storage.d.ts +9 -0
- package/dist/testing/mock-storage.js +21 -0
- package/dist/testing/mock-store.d.ts +3 -0
- package/dist/testing/mock-store.js +8 -0
- package/dist/tools/delegate.d.ts +10 -0
- package/dist/tools/delegate.js +60 -0
- package/dist/tools/index.d.ts +5 -12
- package/dist/tools/index.js +6 -37
- package/dist/tools/node/builtin.d.ts +23 -0
- package/dist/tools/node/builtin.js +547 -0
- package/dist/tools/node/index.d.ts +23 -0
- package/dist/tools/node/index.js +59 -0
- package/dist/types/index.d.ts +804 -6
- package/dist/types/index.js +29 -20
- package/dist/types/task-log.types.d.ts +4 -0
- package/dist/types/task-log.types.js +3 -0
- package/dist/utils/env-defaults.d.ts +18 -0
- package/dist/utils/env-defaults.js +27 -0
- package/dist/utils/glob-match.d.ts +18 -0
- package/dist/utils/glob-match.js +42 -0
- package/dist/{core → utils}/id.d.ts +15 -0
- package/dist/utils/id.js +50 -0
- package/dist/utils/timestamp.d.ts +2 -0
- package/dist/utils/timestamp.js +13 -0
- package/dist/{core → utils}/workspace.d.ts +4 -0
- package/dist/{core → utils}/workspace.js +3 -0
- package/package.json +68 -103
- package/src/schemas/hooks.schema.json +59 -0
- package/templates/agents/default.yaml +490 -0
- package/templates/agents/minimal.yaml +16 -0
- package/LICENSE +0 -201
- package/dist/adapters/MastraToolAdapter.d.ts +0 -9
- package/dist/adapters/MastraToolAdapter.js +0 -66
- package/dist/adapters/MastraToolAdapter.js.map +0 -1
- package/dist/api/index.d.ts +0 -2
- package/dist/api/index.js +0 -8
- package/dist/api/index.js.map +0 -1
- package/dist/boxing/box-storage.interface.js.map +0 -1
- package/dist/boxing/box.service.js.map +0 -1
- package/dist/boxing/box.types.js.map +0 -1
- package/dist/boxing/context-builder.js.map +0 -1
- package/dist/boxing/index.d.ts +0 -6
- package/dist/boxing/index.js +0 -11
- package/dist/boxing/index.js.map +0 -1
- package/dist/boxing/tokenizer.d.ts +0 -3
- package/dist/boxing/tokenizer.js +0 -11
- package/dist/boxing/tokenizer.js.map +0 -1
- package/dist/config/api-provider-parser.d.ts +0 -58
- package/dist/config/api-provider-parser.js +0 -212
- package/dist/config/api-provider-parser.js.map +0 -1
- package/dist/config/index.d.ts +0 -3
- package/dist/config/index.js +0 -20
- package/dist/config/index.js.map +0 -1
- package/dist/config/log.config.d.ts +0 -7
- package/dist/config/log.config.js +0 -20
- package/dist/config/log.config.js.map +0 -1
- package/dist/config/pricing.d.ts +0 -11
- package/dist/config/pricing.js +0 -53
- package/dist/config/pricing.js.map +0 -1
- package/dist/config/timeout.config.d.ts +0 -14
- package/dist/config/timeout.config.js +0 -34
- package/dist/config/timeout.config.js.map +0 -1
- package/dist/config/yaml-loader.d.ts +0 -8
- package/dist/config/yaml-loader.js +0 -155
- package/dist/config/yaml-loader.js.map +0 -1
- package/dist/constants/index.d.ts +0 -4
- package/dist/constants/index.js +0 -8
- package/dist/constants/index.js.map +0 -1
- package/dist/constants.d.ts +0 -1
- package/dist/constants.js +0 -18
- package/dist/constants.js.map +0 -1
- package/dist/conversation/conversation-config.d.ts +0 -9
- package/dist/conversation/conversation-config.js +0 -22
- package/dist/conversation/conversation-config.js.map +0 -1
- package/dist/conversation/conversation-history.interface.d.ts +0 -36
- package/dist/conversation/conversation-history.interface.js +0 -3
- package/dist/conversation/conversation-history.interface.js.map +0 -1
- package/dist/conversation/conversation-storage.service.d.ts +0 -16
- package/dist/conversation/conversation-storage.service.js +0 -213
- package/dist/conversation/conversation-storage.service.js.map +0 -1
- package/dist/conversation/index.js.map +0 -1
- package/dist/core/__tests__/id.test.d.ts +0 -1
- package/dist/core/__tests__/id.test.js +0 -115
- package/dist/core/__tests__/id.test.js.map +0 -1
- package/dist/core/agent/agent-factory.d.ts +0 -37
- package/dist/core/agent/agent-factory.js +0 -68
- package/dist/core/agent/agent-factory.js.map +0 -1
- package/dist/core/agent/agent-runtime.d.ts +0 -52
- package/dist/core/agent/agent-runtime.js +0 -206
- package/dist/core/agent/agent-runtime.js.map +0 -1
- package/dist/core/agent/event-bus.d.ts +0 -44
- package/dist/core/agent/event-bus.js +0 -43
- package/dist/core/agent/event-bus.js.map +0 -1
- package/dist/core/agent/index.d.ts +0 -3
- package/dist/core/agent/index.js +0 -13
- package/dist/core/agent/index.js.map +0 -1
- package/dist/core/env-defaults.d.ts +0 -1
- package/dist/core/env-defaults.js +0 -7
- package/dist/core/env-defaults.js.map +0 -1
- package/dist/core/id.js +0 -27
- package/dist/core/id.js.map +0 -1
- package/dist/core/parallel/helpers.js.map +0 -1
- package/dist/core/parallel/index.d.ts +0 -4
- package/dist/core/parallel/index.js.map +0 -1
- package/dist/core/parallel/parallel-runner.js.map +0 -1
- package/dist/core/parallel/types.d.ts +0 -41
- package/dist/core/parallel/types.js +0 -3
- package/dist/core/parallel/types.js.map +0 -1
- package/dist/core/providers/MastraAPIProvider.d.ts +0 -31
- package/dist/core/providers/MastraAPIProvider.js +0 -365
- package/dist/core/providers/MastraAPIProvider.js.map +0 -1
- package/dist/core/providers/ai-provider.interface.d.ts +0 -79
- package/dist/core/providers/ai-provider.interface.js +0 -23
- package/dist/core/providers/ai-provider.interface.js.map +0 -1
- package/dist/core/providers/base-ai.provider.d.ts +0 -84
- package/dist/core/providers/base-ai.provider.js +0 -1237
- package/dist/core/providers/base-ai.provider.js.map +0 -1
- package/dist/core/providers/base-ai.types.d.ts +0 -26
- package/dist/core/providers/base-ai.types.js +0 -3
- package/dist/core/providers/base-ai.types.js.map +0 -1
- package/dist/core/providers/claude.provider.d.ts +0 -19
- package/dist/core/providers/claude.provider.js +0 -170
- package/dist/core/providers/claude.provider.js.map +0 -1
- package/dist/core/providers/codex.provider.d.ts +0 -21
- package/dist/core/providers/codex.provider.js +0 -134
- package/dist/core/providers/codex.provider.js.map +0 -1
- package/dist/core/providers/copilot.provider.d.ts +0 -25
- package/dist/core/providers/copilot.provider.js +0 -146
- package/dist/core/providers/copilot.provider.js.map +0 -1
- package/dist/core/providers/dynamic-provider.factory.d.ts +0 -74
- package/dist/core/providers/dynamic-provider.factory.js +0 -645
- package/dist/core/providers/dynamic-provider.factory.js.map +0 -1
- package/dist/core/providers/gemini.provider.d.ts +0 -16
- package/dist/core/providers/gemini.provider.js +0 -101
- package/dist/core/providers/gemini.provider.js.map +0 -1
- package/dist/core/providers/index.d.ts +0 -8
- package/dist/core/providers/index.js +0 -20
- package/dist/core/providers/index.js.map +0 -1
- package/dist/core/providers/mock.provider.d.ts +0 -13
- package/dist/core/providers/mock.provider.js +0 -55
- package/dist/core/providers/mock.provider.js.map +0 -1
- package/dist/core/providers/provider-factory.d.ts +0 -3
- package/dist/core/providers/provider-factory.js +0 -65
- package/dist/core/providers/provider-factory.js.map +0 -1
- package/dist/core/providers/tool-call.types.d.ts +0 -39
- package/dist/core/providers/tool-call.types.js +0 -3
- package/dist/core/providers/tool-call.types.js.map +0 -1
- package/dist/core/remote/index.d.ts +0 -3
- package/dist/core/remote/index.js.map +0 -1
- package/dist/core/remote/remote-agent-manager.d.ts +0 -24
- package/dist/core/remote/remote-agent-manager.js.map +0 -1
- package/dist/core/remote/remote-transport.d.ts +0 -15
- package/dist/core/remote/remote-transport.js +0 -70
- package/dist/core/remote/remote-transport.js.map +0 -1
- package/dist/core/remote/types.d.ts +0 -79
- package/dist/core/remote/types.js.map +0 -1
- package/dist/core/workspace.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/internal/index.d.ts +0 -1
- package/dist/internal/index.js +0 -6
- package/dist/internal/index.js.map +0 -1
- package/dist/knowledge/DocumentManager.d.ts +0 -4
- package/dist/knowledge/DocumentManager.js +0 -119
- package/dist/knowledge/DocumentManager.js.map +0 -1
- package/dist/knowledge/index.d.ts +0 -1
- package/dist/knowledge/index.js +0 -18
- package/dist/knowledge/index.js.map +0 -1
- package/dist/parsers/agent-call.util.js.map +0 -1
- package/dist/parsers/claude.parser.js.map +0 -1
- package/dist/parsers/codex.parser.js.map +0 -1
- package/dist/parsers/copilot.parser.js.map +0 -1
- package/dist/parsers/gemini.parser.js.map +0 -1
- package/dist/parsers/index.d.ts +0 -7
- package/dist/parsers/index.js +0 -45
- package/dist/parsers/index.js.map +0 -1
- package/dist/schema/skills-parser.d.ts +0 -8
- package/dist/schema/skills-parser.js +0 -438
- package/dist/schema/skills-parser.js.map +0 -1
- package/dist/schema/skills.types.d.ts +0 -158
- package/dist/schema/skills.types.js +0 -41
- package/dist/schema/skills.types.js.map +0 -1
- package/dist/schemas/api-provider.schema.d.ts +0 -432
- package/dist/schemas/api-provider.schema.js +0 -50
- package/dist/schemas/api-provider.schema.js.map +0 -1
- package/dist/services/index.d.ts +0 -2
- package/dist/services/index.js +0 -19
- package/dist/services/index.js.map +0 -1
- package/dist/services/layout-loader.service.js.map +0 -1
- package/dist/services/layout-renderer.service.js +0 -325
- package/dist/services/layout-renderer.service.js.map +0 -1
- package/dist/services/props-validator.service.js.map +0 -1
- package/dist/skills/adapter/claude-skill-adapter.d.ts +0 -11
- package/dist/skills/adapter/claude-skill-adapter.js +0 -222
- package/dist/skills/adapter/claude-skill-adapter.js.map +0 -1
- package/dist/skills/index.d.ts +0 -6
- package/dist/skills/index.js +0 -31
- package/dist/skills/index.js.map +0 -1
- package/dist/skills/runtime/progressive-loader.d.ts +0 -27
- package/dist/skills/runtime/progressive-loader.js +0 -186
- package/dist/skills/runtime/progressive-loader.js.map +0 -1
- package/dist/skills/runtime/runtime-requirements-validator.d.ts +0 -23
- package/dist/skills/runtime/runtime-requirements-validator.js +0 -248
- package/dist/skills/runtime/runtime-requirements-validator.js.map +0 -1
- package/dist/skills/runtime/skill-runtime.service.d.ts +0 -42
- package/dist/skills/runtime/skill-runtime.service.js +0 -434
- package/dist/skills/runtime/skill-runtime.service.js.map +0 -1
- package/dist/tools/file-system.service.d.ts +0 -10
- package/dist/tools/file-system.service.js +0 -33
- package/dist/tools/file-system.service.js.map +0 -1
- package/dist/tools/find.tool.d.ts +0 -21
- package/dist/tools/find.tool.js +0 -139
- package/dist/tools/find.tool.js.map +0 -1
- package/dist/tools/glob.tool.d.ts +0 -24
- package/dist/tools/glob.tool.js +0 -153
- package/dist/tools/glob.tool.js.map +0 -1
- package/dist/tools/grep.tool.d.ts +0 -1
- package/dist/tools/grep.tool.js +0 -137
- package/dist/tools/grep.tool.js.map +0 -1
- package/dist/tools/index.js.map +0 -1
- package/dist/tools/ls.tool.d.ts +0 -1
- package/dist/tools/ls.tool.js +0 -94
- package/dist/tools/ls.tool.js.map +0 -1
- package/dist/tools/read-file.tool.d.ts +0 -1
- package/dist/tools/read-file.tool.js +0 -69
- package/dist/tools/read-file.tool.js.map +0 -1
- package/dist/tools/replace.tool.d.ts +0 -1
- package/dist/tools/replace.tool.js +0 -68
- package/dist/tools/replace.tool.js.map +0 -1
- package/dist/tools/run-shell-command.tool.d.ts +0 -1
- package/dist/tools/run-shell-command.tool.js +0 -64
- package/dist/tools/run-shell-command.tool.js.map +0 -1
- package/dist/tools/tree.tool.d.ts +0 -1
- package/dist/tools/tree.tool.js +0 -109
- package/dist/tools/tree.tool.js.map +0 -1
- package/dist/tools/types.d.ts +0 -42
- package/dist/tools/types.js +0 -13
- package/dist/tools/types.js.map +0 -1
- package/dist/tools/utils/file-utils.d.ts +0 -5
- package/dist/tools/utils/file-utils.js +0 -221
- package/dist/tools/utils/file-utils.js.map +0 -1
- package/dist/tools/write-file.tool.d.ts +0 -1
- package/dist/tools/write-file.tool.js +0 -55
- package/dist/tools/write-file.tool.js.map +0 -1
- package/dist/types/agent.types.d.ts +0 -134
- package/dist/types/agent.types.js +0 -16
- package/dist/types/agent.types.js.map +0 -1
- package/dist/types/api-provider.types.d.ts +0 -85
- package/dist/types/api-provider.types.js +0 -65
- package/dist/types/api-provider.types.js.map +0 -1
- package/dist/types/index.js.map +0 -1
- package/dist/types/layout.types.js.map +0 -1
- package/dist/types/provider.types.d.ts +0 -12
- package/dist/types/provider.types.js +0 -3
- package/dist/types/provider.types.js.map +0 -1
- package/dist/types/skill-runtime.types.d.ts +0 -244
- package/dist/types/skill-runtime.types.js +0 -44
- package/dist/types/skill-runtime.types.js.map +0 -1
- package/dist/types/structured-payload.types.d.ts +0 -46
- package/dist/types/structured-payload.types.js +0 -65
- package/dist/types/structured-payload.types.js.map +0 -1
- package/dist/types/task-log.types.js.map +0 -1
- package/dist/types/template.types.d.ts +0 -38
- package/dist/types/template.types.js +0 -3
- package/dist/types/template.types.js.map +0 -1
- package/dist/types.d.ts +0 -1
- package/dist/types.js +0 -18
- package/dist/types.js.map +0 -1
- package/dist/utils/api-provider-normalizer.d.ts +0 -16
- package/dist/utils/api-provider-normalizer.js +0 -135
- package/dist/utils/api-provider-normalizer.js.map +0 -1
- package/dist/utils/base-message-formatter.d.ts +0 -32
- package/dist/utils/base-message-formatter.js +0 -170
- package/dist/utils/base-message-formatter.js.map +0 -1
- package/dist/utils/error-utils.d.ts +0 -3
- package/dist/utils/error-utils.js +0 -27
- package/dist/utils/error-utils.js.map +0 -1
- package/dist/utils/index.d.ts +0 -4
- package/dist/utils/index.js +0 -21
- package/dist/utils/index.js.map +0 -1
- package/dist/utils/math-utils.d.ts +0 -3
- package/dist/utils/math-utils.js +0 -10
- package/dist/utils/math-utils.js.map +0 -1
- package/dist/utils/mention-parser.d.ts +0 -18
- package/dist/utils/mention-parser.js +0 -136
- package/dist/utils/mention-parser.js.map +0 -1
- package/dist/utils/string-utils.d.ts +0 -1
- package/dist/utils/string-utils.js +0 -10
- package/dist/utils/string-utils.js.map +0 -1
- package/dist/utils.d.ts +0 -3
- package/dist/utils.js +0 -20
- package/dist/utils.js.map +0 -1
- package/schema/api-provider-config.json +0 -138
- package/schema/crewx-config.json +0 -224
- package/schema/skills-config.json +0 -306
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* parseStdoutEvent — routes a single stdout JSONL event to the appropriate provider parser.
|
|
4
|
+
* Returns TaskLogEntry[] (may be empty if event is not recognized or irrelevant).
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.parseStdoutEvent = parseStdoutEvent;
|
|
8
|
+
const claude_parser_1 = require("./claude.parser");
|
|
9
|
+
const copilot_parser_1 = require("./copilot.parser");
|
|
10
|
+
const codex_parser_1 = require("./codex.parser");
|
|
11
|
+
const gemini_parser_1 = require("./gemini.parser");
|
|
12
|
+
const opencode_parser_1 = require("./opencode.parser");
|
|
13
|
+
function parseStdoutEvent(timestamp, message) {
|
|
14
|
+
let parsed;
|
|
15
|
+
try {
|
|
16
|
+
parsed = JSON.parse(message);
|
|
17
|
+
}
|
|
18
|
+
catch {
|
|
19
|
+
return [];
|
|
20
|
+
}
|
|
21
|
+
const type = parsed.type;
|
|
22
|
+
if (!type)
|
|
23
|
+
return [];
|
|
24
|
+
// Claude stream-json (system event excluded — meta event)
|
|
25
|
+
if (type === 'assistant' || type === 'user') {
|
|
26
|
+
return (0, claude_parser_1.parseClaudeEvent)(timestamp, parsed);
|
|
27
|
+
}
|
|
28
|
+
// Copilot json — assistant.* check must precede Gemini "message" check
|
|
29
|
+
if (type.startsWith('tool.execution') || type.startsWith('assistant.') || type === 'user.message') {
|
|
30
|
+
return (0, copilot_parser_1.parseCopilotEvent)(timestamp, parsed);
|
|
31
|
+
}
|
|
32
|
+
// Codex experimental-json
|
|
33
|
+
if (type.startsWith('item.') || type.startsWith('turn.') || type.startsWith('thread.')) {
|
|
34
|
+
return (0, codex_parser_1.parseCodexEvent)(timestamp, parsed);
|
|
35
|
+
}
|
|
36
|
+
// Gemini stream-json — tool_use/tool_result routed by structure below
|
|
37
|
+
if (type === 'message' || type === 'init') {
|
|
38
|
+
return (0, gemini_parser_1.parseGeminiEvent)(timestamp, parsed);
|
|
39
|
+
}
|
|
40
|
+
// tool_use / tool_result: disambiguate by schema structure.
|
|
41
|
+
// OpenCode has a `part` object; Gemini is flat (tool_name, parameters).
|
|
42
|
+
if (type === 'tool_use' || type === 'tool_result') {
|
|
43
|
+
if (parsed.part && typeof parsed.part === 'object') {
|
|
44
|
+
return (0, opencode_parser_1.parseOpencodeEvent)(timestamp, parsed);
|
|
45
|
+
}
|
|
46
|
+
return (0, gemini_parser_1.parseGeminiEvent)(timestamp, parsed);
|
|
47
|
+
}
|
|
48
|
+
// OpenCode stream-json (--format json)
|
|
49
|
+
// Note: 'text' is a generic name but not used by any other provider currently.
|
|
50
|
+
// 'step_start' and 'step_finish' are OpenCode-specific.
|
|
51
|
+
if (type === 'text' || type === 'step_start' || type === 'step_finish') {
|
|
52
|
+
return (0, opencode_parser_1.parseOpencodeEvent)(timestamp, parsed);
|
|
53
|
+
}
|
|
54
|
+
return [];
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=router.js.map
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* BrowserFsAdapter — IFsAdapter implementation for browser environments.
|
|
3
|
+
*
|
|
4
|
+
* Uses localStorage as the backing store with a key-prefix namespace.
|
|
5
|
+
* Paths are normalized to forward-slash POSIX style.
|
|
6
|
+
*
|
|
7
|
+
* Usage:
|
|
8
|
+
* const fs = new BrowserFsAdapter();
|
|
9
|
+
* // Pre-load content before using with DocumentLoader:
|
|
10
|
+
* fs.setItem('/docs/guide.md', '# Guide\n...');
|
|
11
|
+
*/
|
|
12
|
+
import type { IFsAdapter } from './IFsAdapter';
|
|
13
|
+
export declare class BrowserFsAdapter implements IFsAdapter {
|
|
14
|
+
private readonly prefix;
|
|
15
|
+
private readonly store;
|
|
16
|
+
/**
|
|
17
|
+
* @param options.prefix - localStorage key prefix (default: 'crewx:fs:')
|
|
18
|
+
* @param options.storage - optional external storage map (defaults to an in-memory Map;
|
|
19
|
+
* pass a localStorage-backed wrapper for persistence)
|
|
20
|
+
*/
|
|
21
|
+
constructor(options?: {
|
|
22
|
+
prefix?: string;
|
|
23
|
+
storage?: Map<string, string>;
|
|
24
|
+
});
|
|
25
|
+
readFile(path: string): Promise<string>;
|
|
26
|
+
exists(path: string): Promise<boolean>;
|
|
27
|
+
resolvePath(...segments: string[]): string;
|
|
28
|
+
isAbsolute(path: string): boolean;
|
|
29
|
+
/** Store a virtual file for later reading. */
|
|
30
|
+
setItem(path: string, content: string): void;
|
|
31
|
+
/** Remove a virtual file. */
|
|
32
|
+
removeItem(path: string): void;
|
|
33
|
+
/** List all stored virtual file paths. */
|
|
34
|
+
keys(): string[];
|
|
35
|
+
private toKey;
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=BrowserFsAdapter.d.ts.map
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* BrowserFsAdapter — IFsAdapter implementation for browser environments.
|
|
4
|
+
*
|
|
5
|
+
* Uses localStorage as the backing store with a key-prefix namespace.
|
|
6
|
+
* Paths are normalized to forward-slash POSIX style.
|
|
7
|
+
*
|
|
8
|
+
* Usage:
|
|
9
|
+
* const fs = new BrowserFsAdapter();
|
|
10
|
+
* // Pre-load content before using with DocumentLoader:
|
|
11
|
+
* fs.setItem('/docs/guide.md', '# Guide\n...');
|
|
12
|
+
*/
|
|
13
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
|
+
exports.BrowserFsAdapter = void 0;
|
|
15
|
+
const DEFAULT_PREFIX = 'crewx:fs:';
|
|
16
|
+
class BrowserFsAdapter {
|
|
17
|
+
prefix;
|
|
18
|
+
store;
|
|
19
|
+
/**
|
|
20
|
+
* @param options.prefix - localStorage key prefix (default: 'crewx:fs:')
|
|
21
|
+
* @param options.storage - optional external storage map (defaults to an in-memory Map;
|
|
22
|
+
* pass a localStorage-backed wrapper for persistence)
|
|
23
|
+
*/
|
|
24
|
+
constructor(options) {
|
|
25
|
+
this.prefix = options?.prefix ?? DEFAULT_PREFIX;
|
|
26
|
+
this.store = options?.storage ?? new Map();
|
|
27
|
+
}
|
|
28
|
+
async readFile(path) {
|
|
29
|
+
const key = this.toKey(path);
|
|
30
|
+
const content = this.store.get(key);
|
|
31
|
+
if (content === undefined) {
|
|
32
|
+
throw new Error(`BrowserFsAdapter: file not found: ${path}`);
|
|
33
|
+
}
|
|
34
|
+
return content;
|
|
35
|
+
}
|
|
36
|
+
async exists(path) {
|
|
37
|
+
return this.store.has(this.toKey(path));
|
|
38
|
+
}
|
|
39
|
+
resolvePath(...segments) {
|
|
40
|
+
// Simple POSIX-style path joining (no true "resolve" since there's no cwd)
|
|
41
|
+
const joined = segments
|
|
42
|
+
.map(s => s.replace(/\\/g, '/'))
|
|
43
|
+
.join('/')
|
|
44
|
+
.replace(/\/+/g, '/');
|
|
45
|
+
// Normalize . and .. segments
|
|
46
|
+
const parts = joined.split('/');
|
|
47
|
+
const resolved = [];
|
|
48
|
+
for (const part of parts) {
|
|
49
|
+
if (part === '.' || part === '')
|
|
50
|
+
continue;
|
|
51
|
+
if (part === '..') {
|
|
52
|
+
resolved.pop();
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
resolved.push(part);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
const result = resolved.join('/');
|
|
59
|
+
return joined.startsWith('/') ? `/${result}` : result;
|
|
60
|
+
}
|
|
61
|
+
isAbsolute(path) {
|
|
62
|
+
return path.startsWith('/');
|
|
63
|
+
}
|
|
64
|
+
// ── Browser-specific helpers ───────────────────────────────────────────────
|
|
65
|
+
/** Store a virtual file for later reading. */
|
|
66
|
+
setItem(path, content) {
|
|
67
|
+
this.store.set(this.toKey(path), content);
|
|
68
|
+
}
|
|
69
|
+
/** Remove a virtual file. */
|
|
70
|
+
removeItem(path) {
|
|
71
|
+
this.store.delete(this.toKey(path));
|
|
72
|
+
}
|
|
73
|
+
/** List all stored virtual file paths. */
|
|
74
|
+
keys() {
|
|
75
|
+
return Array.from(this.store.keys())
|
|
76
|
+
.filter(k => k.startsWith(this.prefix))
|
|
77
|
+
.map(k => k.slice(this.prefix.length));
|
|
78
|
+
}
|
|
79
|
+
toKey(path) {
|
|
80
|
+
return `${this.prefix}${path.replace(/\\/g, '/')}`;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
exports.BrowserFsAdapter = BrowserFsAdapter;
|
|
84
|
+
//# sourceMappingURL=BrowserFsAdapter.js.map
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* IFsAdapter — minimal file-system abstraction for DocumentLoader.
|
|
3
|
+
*
|
|
4
|
+
* Allows injection of alternative implementations (e.g., in-memory for tests,
|
|
5
|
+
* or a WEB-compatible adapter in a future round).
|
|
6
|
+
*
|
|
7
|
+
* Node.js default: NodeFsAdapter.
|
|
8
|
+
*/
|
|
9
|
+
export interface IFsAdapter {
|
|
10
|
+
/**
|
|
11
|
+
* Read a file as UTF-8 string.
|
|
12
|
+
* @throws if the file does not exist or is not readable.
|
|
13
|
+
*/
|
|
14
|
+
readFile(path: string): Promise<string>;
|
|
15
|
+
/**
|
|
16
|
+
* Check whether a file exists at the given path.
|
|
17
|
+
*/
|
|
18
|
+
exists(path: string): Promise<boolean>;
|
|
19
|
+
/**
|
|
20
|
+
* Resolve path segments into an absolute path.
|
|
21
|
+
* Behaves like path.resolve() / path.join() depending on implementation.
|
|
22
|
+
*/
|
|
23
|
+
resolvePath(...segments: string[]): string;
|
|
24
|
+
/**
|
|
25
|
+
* Return true if the given path is absolute.
|
|
26
|
+
*/
|
|
27
|
+
isAbsolute(path: string): boolean;
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=IFsAdapter.d.ts.map
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* NodeFsAdapter — default IFsAdapter implementation using Node.js fs/path.
|
|
3
|
+
*
|
|
4
|
+
* This is the concrete adapter used in CLI and server contexts.
|
|
5
|
+
* Full platform abstraction (WEB, browser) is deferred to a future round.
|
|
6
|
+
*/
|
|
7
|
+
import type { IFsAdapter } from './IFsAdapter';
|
|
8
|
+
export declare class NodeFsAdapter implements IFsAdapter {
|
|
9
|
+
readFile(path: string): Promise<string>;
|
|
10
|
+
exists(path: string): Promise<boolean>;
|
|
11
|
+
resolvePath(...segments: string[]): string;
|
|
12
|
+
isAbsolute(path: string): boolean;
|
|
13
|
+
}
|
|
14
|
+
/** Singleton default adapter for convenience in CLI usage. */
|
|
15
|
+
export declare const defaultFsAdapter: IFsAdapter;
|
|
16
|
+
//# sourceMappingURL=NodeFsAdapter.d.ts.map
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* NodeFsAdapter — default IFsAdapter implementation using Node.js fs/path.
|
|
4
|
+
*
|
|
5
|
+
* This is the concrete adapter used in CLI and server contexts.
|
|
6
|
+
* Full platform abstraction (WEB, browser) is deferred to a future round.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.defaultFsAdapter = exports.NodeFsAdapter = void 0;
|
|
10
|
+
const promises_1 = require("fs/promises");
|
|
11
|
+
const path_1 = require("path");
|
|
12
|
+
class NodeFsAdapter {
|
|
13
|
+
async readFile(path) {
|
|
14
|
+
return (0, promises_1.readFile)(path, 'utf-8');
|
|
15
|
+
}
|
|
16
|
+
async exists(path) {
|
|
17
|
+
try {
|
|
18
|
+
await (0, promises_1.access)(path);
|
|
19
|
+
return true;
|
|
20
|
+
}
|
|
21
|
+
catch {
|
|
22
|
+
return false;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
resolvePath(...segments) {
|
|
26
|
+
if (segments.length === 1) {
|
|
27
|
+
return (0, path_1.resolve)(segments[0]);
|
|
28
|
+
}
|
|
29
|
+
return (0, path_1.resolve)((0, path_1.join)(...segments));
|
|
30
|
+
}
|
|
31
|
+
isAbsolute(path) {
|
|
32
|
+
return (0, path_1.isAbsolute)(path);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
exports.NodeFsAdapter = NodeFsAdapter;
|
|
36
|
+
/** Singleton default adapter for convenience in CLI usage. */
|
|
37
|
+
exports.defaultFsAdapter = new NodeFsAdapter();
|
|
38
|
+
//# sourceMappingURL=NodeFsAdapter.js.map
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Plugin Provider Runtime
|
|
3
|
+
*
|
|
4
|
+
* Implements ProviderRuntime for `type: plugin` providers in crewx.yaml.
|
|
5
|
+
* Wraps an arbitrary CLI tool as a CrewX agent via child_process.spawn (shell: false).
|
|
6
|
+
*
|
|
7
|
+
* Symmetric to remote/remote-provider.ts — registered as the `plugin` namespace factory.
|
|
8
|
+
*/
|
|
9
|
+
import type { ProviderRuntime, ProviderFactory, ProviderQueryOptions } from '../provider/bridge.js';
|
|
10
|
+
import type { PluginProviderConfig } from './types.js';
|
|
11
|
+
/**
|
|
12
|
+
* ProviderRuntime implementation for plugin (CLI-wrapped) providers.
|
|
13
|
+
*
|
|
14
|
+
* Created by the `plugin` namespace factory when `createProvider('plugin/mock')` is called.
|
|
15
|
+
* Spawns the configured CLI with args derived from query_args/execute_args,
|
|
16
|
+
* applies `{model}` substitution, and routes the prompt via args or stdin.
|
|
17
|
+
*/
|
|
18
|
+
export declare class PluginProviderRuntime implements ProviderRuntime {
|
|
19
|
+
private readonly config;
|
|
20
|
+
private readonly providerStr;
|
|
21
|
+
constructor(id: string, config: PluginProviderConfig);
|
|
22
|
+
query(message: string, options?: ProviderQueryOptions): Promise<string>;
|
|
23
|
+
execute(message: string, options?: ProviderQueryOptions): Promise<string>;
|
|
24
|
+
private runProcess;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Create a provider factory function for the `plugin` namespace.
|
|
28
|
+
*
|
|
29
|
+
* @param pluginConfigs - Map of plugin provider ID → config (from crewx.yaml `providers:` section)
|
|
30
|
+
* @returns ProviderFactory to register via registerProviderFactory('plugin', factory)
|
|
31
|
+
*/
|
|
32
|
+
export declare function createPluginProviderFactory(pluginConfigs: Map<string, PluginProviderConfig>): ProviderFactory;
|
|
33
|
+
//# sourceMappingURL=plugin-provider.d.ts.map
|
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Plugin Provider Runtime
|
|
4
|
+
*
|
|
5
|
+
* Implements ProviderRuntime for `type: plugin` providers in crewx.yaml.
|
|
6
|
+
* Wraps an arbitrary CLI tool as a CrewX agent via child_process.spawn (shell: false).
|
|
7
|
+
*
|
|
8
|
+
* Symmetric to remote/remote-provider.ts — registered as the `plugin` namespace factory.
|
|
9
|
+
*/
|
|
10
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
+
exports.PluginProviderRuntime = void 0;
|
|
12
|
+
exports.createPluginProviderFactory = createPluginProviderFactory;
|
|
13
|
+
const child_process_1 = require("child_process");
|
|
14
|
+
const bridge_js_1 = require("../provider/bridge.js");
|
|
15
|
+
/**
|
|
16
|
+
* ProviderRuntime implementation for plugin (CLI-wrapped) providers.
|
|
17
|
+
*
|
|
18
|
+
* Created by the `plugin` namespace factory when `createProvider('plugin/mock')` is called.
|
|
19
|
+
* Spawns the configured CLI with args derived from query_args/execute_args,
|
|
20
|
+
* applies `{model}` substitution, and routes the prompt via args or stdin.
|
|
21
|
+
*/
|
|
22
|
+
class PluginProviderRuntime {
|
|
23
|
+
config;
|
|
24
|
+
providerStr;
|
|
25
|
+
constructor(id, config) {
|
|
26
|
+
this.config = config;
|
|
27
|
+
this.providerStr = `plugin/${id}`;
|
|
28
|
+
// Validate at construction time (fail early, not at call time)
|
|
29
|
+
validateCliCommand(config.cli_command);
|
|
30
|
+
validateCliArgs(config.query_args);
|
|
31
|
+
validateCliArgs(config.execute_args);
|
|
32
|
+
if (config.error_patterns)
|
|
33
|
+
validateErrorPatterns(config.error_patterns);
|
|
34
|
+
if (config.env)
|
|
35
|
+
validateEnv(config.env);
|
|
36
|
+
}
|
|
37
|
+
async query(message, options) {
|
|
38
|
+
const model = options?.model ?? this.config.default_model ?? 'default';
|
|
39
|
+
const args = resolveArgs(this.config.query_args, model, message, this.config.prompt_in_args);
|
|
40
|
+
const stdinMessage = this.config.prompt_in_args ? undefined : message;
|
|
41
|
+
options?.onCommand?.(`${this.config.cli_command} ${args.join(' ')}`);
|
|
42
|
+
const timeoutMs = this.config.timeout?.query ?? 600000;
|
|
43
|
+
return this.runProcess(args, options, stdinMessage, timeoutMs);
|
|
44
|
+
}
|
|
45
|
+
async execute(message, options) {
|
|
46
|
+
const model = options?.model ?? this.config.default_model ?? 'default';
|
|
47
|
+
const args = resolveArgs(this.config.execute_args, model, message, this.config.prompt_in_args);
|
|
48
|
+
const stdinMessage = this.config.prompt_in_args ? undefined : message;
|
|
49
|
+
options?.onCommand?.(`${this.config.cli_command} ${args.join(' ')}`);
|
|
50
|
+
const timeoutMs = this.config.timeout?.execute ?? 600000;
|
|
51
|
+
return this.runProcess(args, options, stdinMessage, timeoutMs);
|
|
52
|
+
}
|
|
53
|
+
runProcess(args, options, stdinMessage, timeoutMs) {
|
|
54
|
+
return new Promise((resolve, reject) => {
|
|
55
|
+
// Merge env: process.env is the base; config.env values are added on top.
|
|
56
|
+
// Never replaces process.env — only extends it.
|
|
57
|
+
const mergedEnv = {
|
|
58
|
+
...process.env,
|
|
59
|
+
...(this.config.env ?? {}),
|
|
60
|
+
};
|
|
61
|
+
const proc = (0, child_process_1.spawn)(this.config.cli_command, args, {
|
|
62
|
+
env: mergedEnv,
|
|
63
|
+
shell: false, // Security: no shell interpolation
|
|
64
|
+
stdio: ['pipe', 'pipe', 'pipe'],
|
|
65
|
+
});
|
|
66
|
+
// Write prompt to stdin when prompt_in_args is false
|
|
67
|
+
if (stdinMessage !== undefined) {
|
|
68
|
+
proc.stdin.write(stdinMessage);
|
|
69
|
+
proc.stdin.end();
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
proc.stdin.end();
|
|
73
|
+
}
|
|
74
|
+
if (proc.pid !== undefined) {
|
|
75
|
+
options?.onPid?.(proc.pid);
|
|
76
|
+
}
|
|
77
|
+
let stdout = '';
|
|
78
|
+
let stderr = '';
|
|
79
|
+
let stdoutBuf = '';
|
|
80
|
+
let stderrBuf = '';
|
|
81
|
+
proc.stdout.on('data', (chunk) => {
|
|
82
|
+
const str = chunk.toString();
|
|
83
|
+
stdout += str;
|
|
84
|
+
stdoutBuf += str;
|
|
85
|
+
const lines = stdoutBuf.split('\n');
|
|
86
|
+
stdoutBuf = lines.pop() ?? '';
|
|
87
|
+
for (const line of lines) {
|
|
88
|
+
if (line.trim())
|
|
89
|
+
options?.onOutput?.(line, 'stdout');
|
|
90
|
+
}
|
|
91
|
+
});
|
|
92
|
+
proc.stderr.on('data', (chunk) => {
|
|
93
|
+
const str = chunk.toString();
|
|
94
|
+
stderr += str;
|
|
95
|
+
stderrBuf += str;
|
|
96
|
+
const lines = stderrBuf.split('\n');
|
|
97
|
+
stderrBuf = lines.pop() ?? '';
|
|
98
|
+
for (const line of lines) {
|
|
99
|
+
if (line.trim())
|
|
100
|
+
options?.onOutput?.(line, 'stderr');
|
|
101
|
+
}
|
|
102
|
+
});
|
|
103
|
+
// Hard timeout — terminate and reject if exceeded
|
|
104
|
+
const timeoutHandle = setTimeout(() => {
|
|
105
|
+
proc.kill('SIGTERM');
|
|
106
|
+
reject(new bridge_js_1.ProviderError(`Plugin provider "${this.providerStr}" timed out after ${timeoutMs}ms`, this.providerStr));
|
|
107
|
+
}, timeoutMs);
|
|
108
|
+
proc.on('error', (err) => {
|
|
109
|
+
clearTimeout(timeoutHandle);
|
|
110
|
+
if (err.code === 'ENOENT') {
|
|
111
|
+
const hint = this.config.not_installed_message
|
|
112
|
+
?? `CLI command "${this.config.cli_command}" not found. Is ${this.config.id} installed?`;
|
|
113
|
+
reject(new bridge_js_1.ProviderError(hint, this.providerStr));
|
|
114
|
+
}
|
|
115
|
+
else {
|
|
116
|
+
reject(new bridge_js_1.ProviderError(`Spawn error: ${err.message}`, this.providerStr));
|
|
117
|
+
}
|
|
118
|
+
});
|
|
119
|
+
proc.on('close', (code) => {
|
|
120
|
+
clearTimeout(timeoutHandle);
|
|
121
|
+
// Flush residual buffered content (no trailing newline)
|
|
122
|
+
if (stdoutBuf.trim())
|
|
123
|
+
options?.onOutput?.(stdoutBuf, 'stdout');
|
|
124
|
+
if (stderrBuf.trim())
|
|
125
|
+
options?.onOutput?.(stderrBuf, 'stderr');
|
|
126
|
+
const exitCode = code ?? 0;
|
|
127
|
+
options?.onExitCode?.(exitCode);
|
|
128
|
+
// Check configured error patterns before exit code
|
|
129
|
+
if (this.config.error_patterns) {
|
|
130
|
+
const combined = stderr || stdout;
|
|
131
|
+
for (const ep of this.config.error_patterns) {
|
|
132
|
+
if (combined.includes(ep.pattern)) {
|
|
133
|
+
reject(new bridge_js_1.ProviderError(ep.message, this.providerStr));
|
|
134
|
+
return;
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
if (code !== 0) {
|
|
139
|
+
reject(new bridge_js_1.ProviderError(`Process exited with code ${code}: ${stderr.slice(0, 500)}`, this.providerStr));
|
|
140
|
+
return;
|
|
141
|
+
}
|
|
142
|
+
resolve(stdout.trim());
|
|
143
|
+
});
|
|
144
|
+
});
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
exports.PluginProviderRuntime = PluginProviderRuntime;
|
|
148
|
+
// ── Factory ─────────────────────────────────────────────────────────────────
|
|
149
|
+
/**
|
|
150
|
+
* Create a provider factory function for the `plugin` namespace.
|
|
151
|
+
*
|
|
152
|
+
* @param pluginConfigs - Map of plugin provider ID → config (from crewx.yaml `providers:` section)
|
|
153
|
+
* @returns ProviderFactory to register via registerProviderFactory('plugin', factory)
|
|
154
|
+
*/
|
|
155
|
+
function createPluginProviderFactory(pluginConfigs) {
|
|
156
|
+
return (id, _providerStr) => {
|
|
157
|
+
const config = pluginConfigs.get(id);
|
|
158
|
+
if (!config) {
|
|
159
|
+
throw new bridge_js_1.ProviderError(`Plugin provider "${id}" not found. Available: ${Array.from(pluginConfigs.keys()).join(', ') || '(none)'}`, `plugin/${id}`);
|
|
160
|
+
}
|
|
161
|
+
return new PluginProviderRuntime(id, config);
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
// ── Helpers ─────────────────────────────────────────────────────────────────
|
|
165
|
+
/**
|
|
166
|
+
* Build the final args array for a CLI invocation:
|
|
167
|
+
* 1. Replace `{model}` placeholders in each arg.
|
|
168
|
+
* 2. If promptInArgs is true, append the prompt as a positional argument.
|
|
169
|
+
*/
|
|
170
|
+
function resolveArgs(templateArgs, model, prompt, promptInArgs) {
|
|
171
|
+
const args = templateArgs.map(arg => arg.replace(/\{model\}/g, model));
|
|
172
|
+
if (promptInArgs) {
|
|
173
|
+
args.push(prompt);
|
|
174
|
+
}
|
|
175
|
+
return args;
|
|
176
|
+
}
|
|
177
|
+
// ── Validation ───────────────────────────────────────────────────────────────
|
|
178
|
+
function validateCliCommand(cliCommand) {
|
|
179
|
+
if (!cliCommand || typeof cliCommand !== 'string') {
|
|
180
|
+
throw new Error('Plugin provider requires a cli_command');
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
function validateCliArgs(args) {
|
|
184
|
+
if (!Array.isArray(args)) {
|
|
185
|
+
throw new Error('CLI arguments must be an array');
|
|
186
|
+
}
|
|
187
|
+
for (const arg of args) {
|
|
188
|
+
if (typeof arg !== 'string') {
|
|
189
|
+
throw new Error('Each CLI argument must be a string');
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
function validateErrorPatterns(patterns) {
|
|
194
|
+
for (const { pattern } of patterns) {
|
|
195
|
+
if (typeof pattern !== 'string') {
|
|
196
|
+
throw new Error('Error pattern must be a string');
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
function validateEnv(env) {
|
|
201
|
+
for (const [key, value] of Object.entries(env)) {
|
|
202
|
+
if (typeof key !== 'string' || typeof value !== 'string') {
|
|
203
|
+
throw new Error('env entries must be string key/value pairs');
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
//# sourceMappingURL=plugin-provider.js.map
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Plugin Provider Types
|
|
3
|
+
*
|
|
4
|
+
* Configuration for `type: plugin` providers in crewx.yaml.
|
|
5
|
+
* Plugin providers wrap arbitrary CLI tools as CrewX agents.
|
|
6
|
+
*/
|
|
7
|
+
export interface PluginProviderConfig {
|
|
8
|
+
id: string;
|
|
9
|
+
type: 'plugin';
|
|
10
|
+
/** CLI command (binary name or relative path). Executed via spawn(shell: false). */
|
|
11
|
+
cli_command: string;
|
|
12
|
+
display_name?: string;
|
|
13
|
+
description?: string;
|
|
14
|
+
/**
|
|
15
|
+
* Default model used for `{model}` substitution in args.
|
|
16
|
+
* Can be overridden per-call via QueryOptions.model.
|
|
17
|
+
*/
|
|
18
|
+
default_model?: string;
|
|
19
|
+
/**
|
|
20
|
+
* CLI argument array for `query` mode.
|
|
21
|
+
* `{model}` placeholders are replaced with the resolved model name.
|
|
22
|
+
*/
|
|
23
|
+
query_args: string[];
|
|
24
|
+
/**
|
|
25
|
+
* CLI argument array for `execute` mode.
|
|
26
|
+
* `{model}` placeholders are replaced with the resolved model name.
|
|
27
|
+
*/
|
|
28
|
+
execute_args: string[];
|
|
29
|
+
/**
|
|
30
|
+
* When true, the prompt is appended as the final positional argument.
|
|
31
|
+
* When false, the prompt is written to the process stdin.
|
|
32
|
+
*/
|
|
33
|
+
prompt_in_args: boolean;
|
|
34
|
+
/** Additional environment variables merged into process.env (never replaces it). */
|
|
35
|
+
env?: Record<string, string>;
|
|
36
|
+
/** Per-mode timeout in milliseconds. Defaults: query=600000, execute=600000. */
|
|
37
|
+
timeout?: {
|
|
38
|
+
query: number;
|
|
39
|
+
execute: number;
|
|
40
|
+
};
|
|
41
|
+
/**
|
|
42
|
+
* Output patterns that signal a provider-level error (e.g. "not authenticated").
|
|
43
|
+
* Matched against combined stdout+stderr. Uses string contains (not regex).
|
|
44
|
+
*/
|
|
45
|
+
error_patterns?: Array<{
|
|
46
|
+
pattern: string;
|
|
47
|
+
type: string;
|
|
48
|
+
message: string;
|
|
49
|
+
}>;
|
|
50
|
+
/** Human-readable message shown when the CLI is not found. */
|
|
51
|
+
not_installed_message?: string;
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Plugin Provider Types
|
|
4
|
+
*
|
|
5
|
+
* Configuration for `type: plugin` providers in crewx.yaml.
|
|
6
|
+
* Plugin providers wrap arbitrary CLI tools as CrewX agents.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
//# sourceMappingURL=types.js.map
|
package/dist/plugin.d.ts
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CrewxPlugin — base class for SDK plugins.
|
|
3
|
+
*
|
|
4
|
+
* Plugins subscribe to Crewx events in attach() and clean up in detach().
|
|
5
|
+
* Register via Crewx.use(plugin).
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* class MyPlugin extends CrewxPlugin {
|
|
9
|
+
* readonly name = 'my-plugin';
|
|
10
|
+
* attach(crewx: Crewx) {
|
|
11
|
+
* crewx.on('task:start', (e) => console.log(e.traceId));
|
|
12
|
+
* }
|
|
13
|
+
* }
|
|
14
|
+
* await crewx.use(new MyPlugin());
|
|
15
|
+
*/
|
|
16
|
+
import type { Crewx } from './facade/Crewx';
|
|
17
|
+
export declare abstract class CrewxPlugin {
|
|
18
|
+
/** Unique plugin name. Used for same-instance deduplication in Crewx.use(). */
|
|
19
|
+
abstract readonly name: string;
|
|
20
|
+
/**
|
|
21
|
+
* Called when the plugin is registered via Crewx.use().
|
|
22
|
+
* Subscribe to events and initialize resources here.
|
|
23
|
+
* May be async (e.g. for DB connections).
|
|
24
|
+
*/
|
|
25
|
+
abstract attach(crewx: Crewx): void | Promise<void>;
|
|
26
|
+
/**
|
|
27
|
+
* Called on Crewx.close() in LIFO order.
|
|
28
|
+
* Remove event listeners and release resources here.
|
|
29
|
+
* Default: no-op.
|
|
30
|
+
*/
|
|
31
|
+
detach(_crewx: Crewx): void | Promise<void>;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=plugin.d.ts.map
|
package/dist/plugin.js
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* CrewxPlugin — base class for SDK plugins.
|
|
4
|
+
*
|
|
5
|
+
* Plugins subscribe to Crewx events in attach() and clean up in detach().
|
|
6
|
+
* Register via Crewx.use(plugin).
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* class MyPlugin extends CrewxPlugin {
|
|
10
|
+
* readonly name = 'my-plugin';
|
|
11
|
+
* attach(crewx: Crewx) {
|
|
12
|
+
* crewx.on('task:start', (e) => console.log(e.traceId));
|
|
13
|
+
* }
|
|
14
|
+
* }
|
|
15
|
+
* await crewx.use(new MyPlugin());
|
|
16
|
+
*/
|
|
17
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
exports.CrewxPlugin = void 0;
|
|
19
|
+
class CrewxPlugin {
|
|
20
|
+
/**
|
|
21
|
+
* Called on Crewx.close() in LIFO order.
|
|
22
|
+
* Remove event listeners and release resources here.
|
|
23
|
+
* Default: no-op.
|
|
24
|
+
*/
|
|
25
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
26
|
+
detach(_crewx) { }
|
|
27
|
+
}
|
|
28
|
+
exports.CrewxPlugin = CrewxPlugin;
|
|
29
|
+
//# sourceMappingURL=plugin.js.map
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { CrewxPlugin } from '../plugin';
|
|
2
|
+
import type { Crewx } from '../facade/Crewx';
|
|
3
|
+
import type { IConversationHistoryProvider } from '../conversation/types';
|
|
4
|
+
export interface ConversationPluginOptions {
|
|
5
|
+
dbPath?: string;
|
|
6
|
+
}
|
|
7
|
+
export declare class ConversationPlugin extends CrewxPlugin {
|
|
8
|
+
readonly name = "conversation";
|
|
9
|
+
private _provider;
|
|
10
|
+
private unsubStart;
|
|
11
|
+
private unsubEnd;
|
|
12
|
+
constructor(opts?: ConversationPluginOptions);
|
|
13
|
+
/** Expose provider for SDK history auto-fetch (WI-CONV-002). */
|
|
14
|
+
get conversationProvider(): IConversationHistoryProvider;
|
|
15
|
+
attach(crewx: Crewx): void;
|
|
16
|
+
detach(_crewx: Crewx): void;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=conversation.d.ts.map
|