@crewx/sdk 0.8.0-rc.73 → 0.8.0-rc.74
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 +67 -102
- 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
|
@@ -1,4 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* LayoutLoader — loads layout templates from templates/agents/*.yaml files.
|
|
4
|
+
* Ported 1:1 from packages/sdk-bak/src/services/layout-loader.service.ts.
|
|
5
|
+
* Only import paths and DEFAULT_OPTIONS.templatesPath are changed.
|
|
6
|
+
*/
|
|
2
7
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
8
|
if (k2 === undefined) k2 = k;
|
|
4
9
|
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
@@ -37,18 +42,30 @@ exports.LayoutLoader = void 0;
|
|
|
37
42
|
const fs_1 = require("fs");
|
|
38
43
|
const path = __importStar(require("path"));
|
|
39
44
|
const js_yaml_1 = require("js-yaml");
|
|
40
|
-
const
|
|
45
|
+
const types_1 = require("./types");
|
|
46
|
+
/**
|
|
47
|
+
* Default loader options — points to SDK's bundled templates directory.
|
|
48
|
+
*/
|
|
41
49
|
const DEFAULT_OPTIONS = {
|
|
42
50
|
templatesPath: path.join(__dirname, '../../../templates/agents'),
|
|
43
51
|
validationMode: 'lenient',
|
|
44
52
|
fallbackLayoutId: 'crewx/default',
|
|
45
53
|
};
|
|
54
|
+
/**
|
|
55
|
+
* Layout loader service.
|
|
56
|
+
* Loads and caches layout definitions from YAML files.
|
|
57
|
+
* Provides fallback mechanism and prop override support.
|
|
58
|
+
*/
|
|
46
59
|
class LayoutLoader {
|
|
60
|
+
layouts = new Map();
|
|
61
|
+
options;
|
|
47
62
|
constructor(options) {
|
|
48
|
-
this.layouts = new Map();
|
|
49
63
|
this.options = { ...DEFAULT_OPTIONS, ...options };
|
|
50
64
|
this.loadAllLayouts();
|
|
51
65
|
}
|
|
66
|
+
/**
|
|
67
|
+
* Load a layout by ID with optional props override.
|
|
68
|
+
*/
|
|
52
69
|
load(layoutId, propsOverride) {
|
|
53
70
|
let layout = this.layouts.get(layoutId);
|
|
54
71
|
if (!layout) {
|
|
@@ -59,7 +76,7 @@ class LayoutLoader {
|
|
|
59
76
|
console.warn(`Layout not found: ${layoutId}, falling back to ${this.options.fallbackLayoutId}`);
|
|
60
77
|
layout = this.layouts.get(this.options.fallbackLayoutId);
|
|
61
78
|
if (!layout) {
|
|
62
|
-
throw new
|
|
79
|
+
throw new types_1.LayoutLoadError(`Fallback layout not found: ${this.options.fallbackLayoutId}`, this.options.fallbackLayoutId);
|
|
63
80
|
}
|
|
64
81
|
}
|
|
65
82
|
if (propsOverride && Object.keys(propsOverride).length > 0) {
|
|
@@ -74,9 +91,8 @@ class LayoutLoader {
|
|
|
74
91
|
return Array.from(this.layouts.keys());
|
|
75
92
|
}
|
|
76
93
|
hasLayout(layoutId) {
|
|
77
|
-
if (this.layouts.has(layoutId))
|
|
94
|
+
if (this.layouts.has(layoutId))
|
|
78
95
|
return true;
|
|
79
|
-
}
|
|
80
96
|
const normalizedId = this.normalizeLayoutId(layoutId);
|
|
81
97
|
return this.layouts.has(normalizedId);
|
|
82
98
|
}
|
|
@@ -84,10 +100,62 @@ class LayoutLoader {
|
|
|
84
100
|
this.layouts.clear();
|
|
85
101
|
this.loadAllLayouts();
|
|
86
102
|
}
|
|
103
|
+
/**
|
|
104
|
+
* Register or override a layout at runtime.
|
|
105
|
+
*/
|
|
106
|
+
registerLayout(layoutId, layoutConfig) {
|
|
107
|
+
if (!layoutId || typeof layoutId !== 'string') {
|
|
108
|
+
throw new types_1.LayoutLoadError('Layout ID must be a non-empty string', layoutId);
|
|
109
|
+
}
|
|
110
|
+
const config = typeof layoutConfig === 'string'
|
|
111
|
+
? { template: layoutConfig }
|
|
112
|
+
: layoutConfig;
|
|
113
|
+
const template = typeof config.template === 'string' ? config.template : '';
|
|
114
|
+
if (!template || template.trim().length === 0) {
|
|
115
|
+
throw new types_1.LayoutLoadError(`Custom layout template is empty for ${layoutId}`, layoutId);
|
|
116
|
+
}
|
|
117
|
+
const propsSchemaRaw = config.propsSchema || {};
|
|
118
|
+
const defaultPropsFromSchema = this.extractDefaultProps(propsSchemaRaw);
|
|
119
|
+
const explicitDefaults = config.defaultProps || {};
|
|
120
|
+
const layoutDefinition = {
|
|
121
|
+
id: layoutId,
|
|
122
|
+
version: config.version || '1.0.0',
|
|
123
|
+
description: config.description || `Custom layout ${layoutId}`,
|
|
124
|
+
template,
|
|
125
|
+
propsSchema: this.parsePropsSchema(propsSchemaRaw),
|
|
126
|
+
defaultProps: { ...defaultPropsFromSchema, ...explicitDefaults },
|
|
127
|
+
};
|
|
128
|
+
const existingLayout = this.layouts.get(layoutId);
|
|
129
|
+
const templatesEqual = existingLayout?.template === template &&
|
|
130
|
+
JSON.stringify(existingLayout?.defaultProps ?? {}) === JSON.stringify(layoutDefinition.defaultProps ?? {}) &&
|
|
131
|
+
JSON.stringify(existingLayout?.propsSchema ?? {}) === JSON.stringify(layoutDefinition.propsSchema ?? {});
|
|
132
|
+
this.layouts.set(layoutId, layoutDefinition);
|
|
133
|
+
if (process.env.CREWX_VERBOSE === '1') {
|
|
134
|
+
if (!existingLayout) {
|
|
135
|
+
console.error(`Registered custom layout: ${layoutId}`);
|
|
136
|
+
}
|
|
137
|
+
else if (!templatesEqual) {
|
|
138
|
+
console.error(`Updated custom layout: ${layoutId}`);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Register multiple layouts from a map.
|
|
144
|
+
*/
|
|
145
|
+
registerLayouts(layoutsMap) {
|
|
146
|
+
for (const [id, config] of Object.entries(layoutsMap)) {
|
|
147
|
+
try {
|
|
148
|
+
this.registerLayout(id, config);
|
|
149
|
+
}
|
|
150
|
+
catch (error) {
|
|
151
|
+
console.warn(`Failed to register custom layout ${id}:`, error instanceof Error ? error.message : error);
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
}
|
|
87
155
|
loadAllLayouts() {
|
|
88
156
|
const layoutsDir = this.options.templatesPath;
|
|
89
157
|
if (!(0, fs_1.existsSync)(layoutsDir)) {
|
|
90
|
-
throw new
|
|
158
|
+
throw new types_1.LayoutLoadError(`Templates directory not found: ${layoutsDir}`, undefined, new Error(`Directory does not exist: ${layoutsDir}`));
|
|
91
159
|
}
|
|
92
160
|
try {
|
|
93
161
|
const files = (0, fs_1.readdirSync)(layoutsDir).filter(f => f.endsWith('.yaml') || f.endsWith('.yml'));
|
|
@@ -114,7 +182,7 @@ class LayoutLoader {
|
|
|
114
182
|
console.error(`Loaded ${this.layouts.size} layouts from ${layoutsDir}`);
|
|
115
183
|
}
|
|
116
184
|
catch (error) {
|
|
117
|
-
throw new
|
|
185
|
+
throw new types_1.LayoutLoadError(`Failed to read layouts directory: ${layoutsDir}`, undefined, error instanceof Error ? error : new Error(String(error)));
|
|
118
186
|
}
|
|
119
187
|
}
|
|
120
188
|
loadLayoutFile(filePath, layoutName) {
|
|
@@ -122,32 +190,36 @@ class LayoutLoader {
|
|
|
122
190
|
const content = (0, fs_1.readFileSync)(filePath, 'utf-8');
|
|
123
191
|
if (!content || content.trim().length === 0) {
|
|
124
192
|
console.warn(`Empty YAML file: ${filePath}, will use fallback`);
|
|
125
|
-
throw new
|
|
193
|
+
throw new types_1.LayoutLoadError(`Empty YAML file: ${filePath}`, layoutName, new Error('File content is empty'));
|
|
126
194
|
}
|
|
127
195
|
const parsed = (0, js_yaml_1.load)(content);
|
|
128
196
|
if (!parsed || typeof parsed !== 'object') {
|
|
129
197
|
console.warn(`Invalid YAML content in ${filePath} (parsed as ${typeof parsed}), will use fallback`);
|
|
130
|
-
throw new
|
|
198
|
+
throw new types_1.LayoutLoadError(`Invalid or empty YAML in ${filePath}`, layoutName, new Error('YAML parsing returned null/undefined or non-object'));
|
|
131
199
|
}
|
|
200
|
+
// Format 2: layouts map (templates/agents/default.yaml format)
|
|
132
201
|
if (parsed.layouts && typeof parsed.layouts === 'object') {
|
|
133
|
-
const
|
|
134
|
-
if (!
|
|
202
|
+
const entry = this.resolveLayoutEntry(parsed.layouts, layoutName);
|
|
203
|
+
if (!entry || entry.template.trim().length === 0) {
|
|
135
204
|
console.warn(`Empty or missing layout template in ${filePath} for ${layoutName}`);
|
|
136
|
-
throw new
|
|
205
|
+
throw new types_1.LayoutLoadError(`Layout template not found or empty in layouts map: ${layoutName}`, layoutName);
|
|
137
206
|
}
|
|
207
|
+
// propsSchema may be inline in the layout entry object (e.g. default.yaml) or at the top level
|
|
208
|
+
const propsSchemaRaw = entry.propsSchema || parsed.propsSchema || {};
|
|
138
209
|
return {
|
|
139
210
|
id: `crewx/${layoutName}`,
|
|
140
211
|
version: parsed.version || '1.0.0',
|
|
141
212
|
description: parsed.description || `CrewX ${layoutName} layout`,
|
|
142
|
-
template:
|
|
143
|
-
propsSchema: this.parsePropsSchema(
|
|
144
|
-
defaultProps: this.extractDefaultProps(
|
|
213
|
+
template: entry.template,
|
|
214
|
+
propsSchema: this.parsePropsSchema(propsSchemaRaw),
|
|
215
|
+
defaultProps: this.extractDefaultProps(propsSchemaRaw),
|
|
145
216
|
};
|
|
146
217
|
}
|
|
147
218
|
else {
|
|
219
|
+
// Format 1: direct layout definition
|
|
148
220
|
if (!parsed.template || (typeof parsed.template === 'string' && parsed.template.trim().length === 0)) {
|
|
149
221
|
console.warn(`Empty or missing template field in ${filePath}`);
|
|
150
|
-
throw new
|
|
222
|
+
throw new types_1.LayoutLoadError(`Layout template is missing or empty in ${filePath}`, layoutName);
|
|
151
223
|
}
|
|
152
224
|
return {
|
|
153
225
|
id: parsed.id || `crewx/${layoutName}`,
|
|
@@ -160,7 +232,7 @@ class LayoutLoader {
|
|
|
160
232
|
}
|
|
161
233
|
}
|
|
162
234
|
catch (error) {
|
|
163
|
-
throw new
|
|
235
|
+
throw new types_1.LayoutLoadError(`Failed to load layout file: ${filePath}`, layoutName, error instanceof Error ? error : new Error(String(error)));
|
|
164
236
|
}
|
|
165
237
|
}
|
|
166
238
|
parsePropsSchema(raw) {
|
|
@@ -187,70 +259,21 @@ class LayoutLoader {
|
|
|
187
259
|
return defaults;
|
|
188
260
|
}
|
|
189
261
|
normalizeLayoutId(layoutId) {
|
|
190
|
-
if (!layoutId)
|
|
262
|
+
if (!layoutId)
|
|
191
263
|
return this.options.fallbackLayoutId;
|
|
192
|
-
|
|
193
|
-
if (layoutId.includes('/')) {
|
|
264
|
+
if (layoutId.includes('/'))
|
|
194
265
|
return layoutId;
|
|
195
|
-
}
|
|
196
266
|
return `crewx/${layoutId}`;
|
|
197
267
|
}
|
|
198
|
-
|
|
199
|
-
if (!layoutId || typeof layoutId !== 'string') {
|
|
200
|
-
throw new layout_types_1.LayoutLoadError('Layout ID must be a non-empty string', layoutId);
|
|
201
|
-
}
|
|
202
|
-
const config = typeof layoutConfig === 'string'
|
|
203
|
-
? { template: layoutConfig }
|
|
204
|
-
: layoutConfig;
|
|
205
|
-
const template = typeof config.template === 'string' ? config.template : '';
|
|
206
|
-
if (!template || template.trim().length === 0) {
|
|
207
|
-
throw new layout_types_1.LayoutLoadError(`Custom layout template is empty for ${layoutId}`, layoutId);
|
|
208
|
-
}
|
|
209
|
-
const propsSchemaRaw = config.propsSchema || {};
|
|
210
|
-
const defaultPropsFromSchema = this.extractDefaultProps(propsSchemaRaw);
|
|
211
|
-
const explicitDefaults = config.defaultProps || {};
|
|
212
|
-
const layoutDefinition = {
|
|
213
|
-
id: layoutId,
|
|
214
|
-
version: config.version || '1.0.0',
|
|
215
|
-
description: config.description || `Custom layout ${layoutId}`,
|
|
216
|
-
template,
|
|
217
|
-
propsSchema: this.parsePropsSchema(propsSchemaRaw),
|
|
218
|
-
defaultProps: { ...defaultPropsFromSchema, ...explicitDefaults },
|
|
219
|
-
};
|
|
220
|
-
const existingLayout = this.layouts.get(layoutId);
|
|
221
|
-
const templatesEqual = existingLayout?.template === template &&
|
|
222
|
-
JSON.stringify(existingLayout?.defaultProps ?? {}) === JSON.stringify(layoutDefinition.defaultProps ?? {}) &&
|
|
223
|
-
JSON.stringify(existingLayout?.propsSchema ?? {}) === JSON.stringify(layoutDefinition.propsSchema ?? {});
|
|
224
|
-
this.layouts.set(layoutId, layoutDefinition);
|
|
225
|
-
if (process.env.CREWX_VERBOSE === '1') {
|
|
226
|
-
if (!existingLayout) {
|
|
227
|
-
console.error(`Registered custom layout: ${layoutId}`);
|
|
228
|
-
}
|
|
229
|
-
else if (!templatesEqual) {
|
|
230
|
-
console.error(`Updated custom layout: ${layoutId}`);
|
|
231
|
-
}
|
|
232
|
-
}
|
|
233
|
-
}
|
|
234
|
-
registerLayouts(layoutsMap) {
|
|
235
|
-
for (const [id, config] of Object.entries(layoutsMap)) {
|
|
236
|
-
try {
|
|
237
|
-
this.registerLayout(id, config);
|
|
238
|
-
}
|
|
239
|
-
catch (error) {
|
|
240
|
-
console.warn(`Failed to register custom layout ${id}:`, error instanceof Error ? error.message : error);
|
|
241
|
-
}
|
|
242
|
-
}
|
|
243
|
-
}
|
|
244
|
-
resolveLayoutTemplate(layoutsMap, layoutName) {
|
|
268
|
+
resolveLayoutEntry(layoutsMap, layoutName) {
|
|
245
269
|
const candidates = new Set();
|
|
246
270
|
if (layoutName) {
|
|
247
271
|
candidates.add(layoutName);
|
|
248
272
|
if (layoutName.includes('/')) {
|
|
249
273
|
const parts = layoutName.split('/');
|
|
250
274
|
const last = parts[parts.length - 1];
|
|
251
|
-
if (last)
|
|
275
|
+
if (last)
|
|
252
276
|
candidates.add(last);
|
|
253
|
-
}
|
|
254
277
|
}
|
|
255
278
|
else {
|
|
256
279
|
candidates.add(`crewx/${layoutName}`);
|
|
@@ -260,16 +283,23 @@ class LayoutLoader {
|
|
|
260
283
|
for (const key of candidates) {
|
|
261
284
|
const value = layoutsMap[key];
|
|
262
285
|
if (typeof value === 'string' && value.trim().length > 0) {
|
|
263
|
-
return value;
|
|
286
|
+
return { template: value };
|
|
287
|
+
}
|
|
288
|
+
if (value && typeof value === 'object' && typeof value.template === 'string' && value.template.trim().length > 0) {
|
|
289
|
+
return { template: value.template, propsSchema: value.propsSchema };
|
|
264
290
|
}
|
|
265
291
|
}
|
|
266
292
|
for (const value of Object.values(layoutsMap)) {
|
|
267
293
|
if (typeof value === 'string' && value.trim().length > 0) {
|
|
268
|
-
return value;
|
|
294
|
+
return { template: value };
|
|
295
|
+
}
|
|
296
|
+
const v = value;
|
|
297
|
+
if (v && typeof v === 'object' && typeof v.template === 'string' && v.template.trim().length > 0) {
|
|
298
|
+
return { template: v.template, propsSchema: v.propsSchema };
|
|
269
299
|
}
|
|
270
300
|
}
|
|
271
301
|
return undefined;
|
|
272
302
|
}
|
|
273
303
|
}
|
|
274
304
|
exports.LayoutLoader = LayoutLoader;
|
|
275
|
-
//# sourceMappingURL=
|
|
305
|
+
//# sourceMappingURL=loader.js.map
|
|
@@ -1,4 +1,9 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* PropsValidator — React PropTypes style props validation.
|
|
3
|
+
* Ported 1:1 from packages/sdk-bak/src/services/props-validator.service.ts.
|
|
4
|
+
* Only the import path is changed.
|
|
5
|
+
*/
|
|
6
|
+
import { PropSchema, ValidationResult } from './types';
|
|
2
7
|
export type ValidationMode = 'strict' | 'lenient';
|
|
3
8
|
export interface PropsValidatorOptions {
|
|
4
9
|
defaultMode?: ValidationMode;
|
|
@@ -27,3 +32,4 @@ export declare class PropsValidator {
|
|
|
27
32
|
private buildPath;
|
|
28
33
|
private describeType;
|
|
29
34
|
}
|
|
35
|
+
//# sourceMappingURL=props-validator.d.ts.map
|
|
@@ -1,8 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* PropsValidator — React PropTypes style props validation.
|
|
4
|
+
* Ported 1:1 from packages/sdk-bak/src/services/props-validator.service.ts.
|
|
5
|
+
* Only the import path is changed.
|
|
6
|
+
*/
|
|
2
7
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
8
|
exports.PropsValidator = void 0;
|
|
4
|
-
const
|
|
9
|
+
const types_1 = require("./types");
|
|
5
10
|
class PropsValidator {
|
|
11
|
+
defaultMode;
|
|
6
12
|
constructor(options = {}) {
|
|
7
13
|
this.defaultMode = options.defaultMode ?? 'lenient';
|
|
8
14
|
}
|
|
@@ -10,7 +16,7 @@ class PropsValidator {
|
|
|
10
16
|
const errors = [];
|
|
11
17
|
const resolvedProps = this.validateObject(props ?? {}, schema, mode, ['props'], errors);
|
|
12
18
|
if (errors.length > 0 && mode === 'strict') {
|
|
13
|
-
throw new
|
|
19
|
+
throw new types_1.PropsValidationError('Props validation failed in strict mode', errors);
|
|
14
20
|
}
|
|
15
21
|
return {
|
|
16
22
|
valid: errors.length === 0,
|
|
@@ -39,10 +45,6 @@ class PropsValidator {
|
|
|
39
45
|
sanitized[key] = result.value;
|
|
40
46
|
}
|
|
41
47
|
}
|
|
42
|
-
if (mode === 'lenient') {
|
|
43
|
-
}
|
|
44
|
-
else if (mode === 'strict') {
|
|
45
|
-
}
|
|
46
48
|
return sanitized;
|
|
47
49
|
}
|
|
48
50
|
resolveProp(value, schema, pathSegments, mode, errors) {
|
|
@@ -118,30 +120,18 @@ class PropsValidator {
|
|
|
118
120
|
return { valid: false, error: `Expected string, got ${this.describeType(value)}` };
|
|
119
121
|
}
|
|
120
122
|
if (schema.oneOf && !schema.oneOf.includes(value)) {
|
|
121
|
-
return {
|
|
122
|
-
valid: false,
|
|
123
|
-
error: `Expected one of: ${schema.oneOf.join(', ')}`,
|
|
124
|
-
};
|
|
123
|
+
return { valid: false, error: `Expected one of: ${schema.oneOf.join(', ')}` };
|
|
125
124
|
}
|
|
126
125
|
if (schema.minLength !== undefined && value.length < schema.minLength) {
|
|
127
|
-
return {
|
|
128
|
-
valid: false,
|
|
129
|
-
error: `String length must be >= ${schema.minLength}`,
|
|
130
|
-
};
|
|
126
|
+
return { valid: false, error: `String length must be >= ${schema.minLength}` };
|
|
131
127
|
}
|
|
132
128
|
if (schema.maxLength !== undefined && value.length > schema.maxLength) {
|
|
133
|
-
return {
|
|
134
|
-
valid: false,
|
|
135
|
-
error: `String length must be <= ${schema.maxLength}`,
|
|
136
|
-
};
|
|
129
|
+
return { valid: false, error: `String length must be <= ${schema.maxLength}` };
|
|
137
130
|
}
|
|
138
131
|
if (schema.pattern) {
|
|
139
132
|
const pattern = new RegExp(schema.pattern);
|
|
140
133
|
if (!pattern.test(value)) {
|
|
141
|
-
return {
|
|
142
|
-
valid: false,
|
|
143
|
-
error: `String does not match pattern ${schema.pattern}`,
|
|
144
|
-
};
|
|
134
|
+
return { valid: false, error: `String does not match pattern ${schema.pattern}` };
|
|
145
135
|
}
|
|
146
136
|
}
|
|
147
137
|
return { valid: true, value };
|
|
@@ -157,10 +147,7 @@ class PropsValidator {
|
|
|
157
147
|
return { valid: false, error: `Number must be <= ${schema.max}` };
|
|
158
148
|
}
|
|
159
149
|
if (schema.oneOf && !schema.oneOf.includes(value)) {
|
|
160
|
-
return {
|
|
161
|
-
valid: false,
|
|
162
|
-
error: `Expected one of: ${schema.oneOf.join(', ')}`,
|
|
163
|
-
};
|
|
150
|
+
return { valid: false, error: `Expected one of: ${schema.oneOf.join(', ')}` };
|
|
164
151
|
}
|
|
165
152
|
return { valid: true, value };
|
|
166
153
|
}
|
|
@@ -175,24 +162,17 @@ class PropsValidator {
|
|
|
175
162
|
return { valid: false, error: `Expected array, got ${this.describeType(value)}` };
|
|
176
163
|
}
|
|
177
164
|
if (schema.minLength !== undefined && value.length < schema.minLength) {
|
|
178
|
-
return {
|
|
179
|
-
valid: false,
|
|
180
|
-
error: `Array length must be >= ${schema.minLength}`,
|
|
181
|
-
};
|
|
165
|
+
return { valid: false, error: `Array length must be >= ${schema.minLength}` };
|
|
182
166
|
}
|
|
183
167
|
if (schema.maxLength !== undefined && value.length > schema.maxLength) {
|
|
184
|
-
return {
|
|
185
|
-
valid: false,
|
|
186
|
-
error: `Array length must be <= ${schema.maxLength}`,
|
|
187
|
-
};
|
|
168
|
+
return { valid: false, error: `Array length must be <= ${schema.maxLength}` };
|
|
188
169
|
}
|
|
189
170
|
return { valid: true, value: [...value] };
|
|
190
171
|
}
|
|
191
172
|
validateArrayOf(value, schema, pathSegments, mode, errors) {
|
|
192
173
|
const base = this.validateArray(value, schema);
|
|
193
|
-
if (!base.valid)
|
|
174
|
+
if (!base.valid)
|
|
194
175
|
return base;
|
|
195
|
-
}
|
|
196
176
|
const itemValues = [];
|
|
197
177
|
const itemType = schema.itemType;
|
|
198
178
|
const itemOneOf = schema.itemOneOf;
|
|
@@ -258,26 +238,17 @@ class PropsValidator {
|
|
|
258
238
|
}
|
|
259
239
|
matchesType(value, typeName) {
|
|
260
240
|
switch (typeName) {
|
|
261
|
-
case 'string':
|
|
262
|
-
|
|
263
|
-
case 'number':
|
|
264
|
-
return typeof value === 'number' && !Number.isNaN(value);
|
|
241
|
+
case 'string': return typeof value === 'string';
|
|
242
|
+
case 'number': return typeof value === 'number' && !Number.isNaN(value);
|
|
265
243
|
case 'bool':
|
|
266
|
-
case 'boolean':
|
|
267
|
-
|
|
268
|
-
case '
|
|
269
|
-
return Array.isArray(value);
|
|
270
|
-
case 'object':
|
|
271
|
-
return this.isPlainObject(value);
|
|
244
|
+
case 'boolean': return typeof value === 'boolean';
|
|
245
|
+
case 'array': return Array.isArray(value);
|
|
246
|
+
case 'object': return this.isPlainObject(value);
|
|
272
247
|
case 'func':
|
|
273
|
-
case 'function':
|
|
274
|
-
|
|
275
|
-
case '
|
|
276
|
-
|
|
277
|
-
case 'node':
|
|
278
|
-
return value === null || value === undefined || typeof value !== 'symbol';
|
|
279
|
-
default:
|
|
280
|
-
return true;
|
|
248
|
+
case 'function': return typeof value === 'function';
|
|
249
|
+
case 'shape': return this.isPlainObject(value);
|
|
250
|
+
case 'node': return value === null || value === undefined || typeof value !== 'symbol';
|
|
251
|
+
default: return true;
|
|
281
252
|
}
|
|
282
253
|
}
|
|
283
254
|
applyDefaults(schema) {
|
|
@@ -319,14 +290,12 @@ class PropsValidator {
|
|
|
319
290
|
return segments.join('.');
|
|
320
291
|
}
|
|
321
292
|
describeType(value) {
|
|
322
|
-
if (Array.isArray(value))
|
|
293
|
+
if (Array.isArray(value))
|
|
323
294
|
return 'array';
|
|
324
|
-
|
|
325
|
-
if (value === null) {
|
|
295
|
+
if (value === null)
|
|
326
296
|
return 'null';
|
|
327
|
-
}
|
|
328
297
|
return typeof value;
|
|
329
298
|
}
|
|
330
299
|
}
|
|
331
300
|
exports.PropsValidator = PropsValidator;
|
|
332
|
-
//# sourceMappingURL=props-validator.
|
|
301
|
+
//# sourceMappingURL=props-validator.js.map
|
|
@@ -1,30 +1,43 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
/**
|
|
2
|
+
* LayoutRenderer — Handlebars-based layout rendering.
|
|
3
|
+
* Ported from packages/sdk-bak/src/services/layout-renderer.service.ts.
|
|
4
|
+
* Excluded: registerTemplateHelpers (exec/shell-quote).
|
|
5
|
+
* Exec is handled separately by TemplateEngine in the facade layer.
|
|
6
|
+
* WI-CONV-002: formatConversation helper restored.
|
|
7
|
+
*/
|
|
8
|
+
import { PropsValidator } from './props-validator';
|
|
9
|
+
import type { LayoutDefinition, RenderContext, PropSchema, ValidationResult } from './types';
|
|
10
|
+
export { PropsValidationError } from './types';
|
|
11
|
+
export type { LayoutDefinition, RenderContext, PropSchema, ValidationResult as PropsValidationResult, } from './types';
|
|
5
12
|
export interface RenderOptions {
|
|
6
13
|
validationMode?: 'strict' | 'lenient';
|
|
7
14
|
skipValidation?: boolean;
|
|
8
15
|
}
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
deny?: string[];
|
|
13
|
-
}
|
|
14
|
-
export interface TemplateConfig {
|
|
15
|
-
exec?: ExecHelperConfig;
|
|
16
|
-
helpers?: Record<string, string>;
|
|
17
|
-
}
|
|
16
|
+
/**
|
|
17
|
+
* LayoutRenderer — renders layout templates with Handlebars.
|
|
18
|
+
*/
|
|
18
19
|
export declare class LayoutRenderer {
|
|
19
20
|
private readonly handlebars;
|
|
20
21
|
private readonly propsValidator;
|
|
21
22
|
constructor(propsValidator?: PropsValidator);
|
|
23
|
+
/**
|
|
24
|
+
* Render a layout template with the given context.
|
|
25
|
+
*/
|
|
22
26
|
render(layout: LayoutDefinition, context: RenderContext, options?: RenderOptions): string;
|
|
27
|
+
/**
|
|
28
|
+
* Validate props against schema.
|
|
29
|
+
*/
|
|
23
30
|
validate(props: Record<string, any> | undefined, propsSchema: Record<string, PropSchema>, mode?: 'strict' | 'lenient'): ValidationResult;
|
|
31
|
+
/**
|
|
32
|
+
* Merge default props and runtime props, then validate.
|
|
33
|
+
*/
|
|
24
34
|
resolveProps(layout: LayoutDefinition, props: Record<string, any> | undefined, mode?: 'strict' | 'lenient'): ValidationResult;
|
|
25
35
|
private prepareRenderContext;
|
|
36
|
+
/**
|
|
37
|
+
* Register built-in Handlebars helpers (no exec).
|
|
38
|
+
* WI-CONV-002: formatConversation block helper registered for conversation history.
|
|
39
|
+
*/
|
|
26
40
|
private registerHelpers;
|
|
27
|
-
registerTemplateHelpers(config: TemplateConfig): void;
|
|
28
41
|
private executeValidation;
|
|
29
42
|
private mergeProps;
|
|
30
43
|
private deepMerge;
|
|
@@ -32,3 +45,4 @@ export declare class LayoutRenderer {
|
|
|
32
45
|
private isPlainObject;
|
|
33
46
|
private sanitizeVars;
|
|
34
47
|
}
|
|
48
|
+
//# sourceMappingURL=renderer.d.ts.map
|