@ai-setting/roy-agent-core 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +99145 -0
- package/package.json +114 -0
- package/src/config/config-component.test.ts +627 -0
- package/src/config/config-component.ts +906 -0
- package/src/config/config-parser.test.ts +319 -0
- package/src/config/config-parser.ts +203 -0
- package/src/config/decentralized-config.test.ts +740 -0
- package/src/config/env-key.ts +210 -0
- package/src/config/env-source.test.ts +252 -0
- package/src/config/env-source.ts +301 -0
- package/src/config/file-source.test.ts +357 -0
- package/src/config/file-source.ts +421 -0
- package/src/config/index.ts +24 -0
- package/src/config/protocol-resolver.test.ts +217 -0
- package/src/config/protocol-resolver.ts +228 -0
- package/src/env/agent/agent-component.abort.test.ts +511 -0
- package/src/env/agent/agent-component.record-session.test.ts +349 -0
- package/src/env/agent/agent-component.test.ts +1389 -0
- package/src/env/agent/agent-component.tool-error.test.ts +327 -0
- package/src/env/agent/agent-component.ts +1711 -0
- package/src/env/agent/agent-config-registration.test.ts +226 -0
- package/src/env/agent/agent-config-registration.ts +46 -0
- package/src/env/agent/agent-reminder-plugin.integration.test.ts +243 -0
- package/src/env/agent/index.ts +10 -0
- package/src/env/agent/summary-agent.parse-hint.test.ts +360 -0
- package/src/env/agent/summary-agent.ts +508 -0
- package/src/env/agent/types.ts +536 -0
- package/src/env/commands/commands-component.test.ts +364 -0
- package/src/env/commands/commands-component.ts +604 -0
- package/src/env/commands/commands-config-registration.test.ts +198 -0
- package/src/env/commands/commands-config-registration.ts +38 -0
- package/src/env/commands/index.ts +21 -0
- package/src/env/commands/parser.test.ts +203 -0
- package/src/env/commands/parser.ts +115 -0
- package/src/env/commands/types.ts +184 -0
- package/src/env/commands-prompt-integration.test.ts +243 -0
- package/src/env/component-env.test.ts +119 -0
- package/src/env/component.ts +335 -0
- package/src/env/constants.test.ts +72 -0
- package/src/env/constants.ts +123 -0
- package/src/env/debug/debug-component.test.ts +114 -0
- package/src/env/debug/debug-component.ts +547 -0
- package/src/env/debug/formatters/index.ts +9 -0
- package/src/env/debug/formatters/repl-formatter.test.ts +139 -0
- package/src/env/debug/formatters/repl-formatter.ts +358 -0
- package/src/env/debug/formatters/trace-formatter.test.ts +119 -0
- package/src/env/debug/formatters/trace-formatter.ts +191 -0
- package/src/env/debug/formatters/tree-formatter.test.ts +107 -0
- package/src/env/debug/formatters/tree-formatter.ts +325 -0
- package/src/env/debug/index.ts +38 -0
- package/src/env/debug/parser/regex-parser.test.ts +201 -0
- package/src/env/debug/parser/regex-parser.ts +196 -0
- package/src/env/debug/parser/span-builder.test.ts +241 -0
- package/src/env/debug/parser/span-builder.ts +386 -0
- package/src/env/debug/reader/log-reader.test.ts +170 -0
- package/src/env/debug/reader/log-reader.ts +186 -0
- package/src/env/debug/reader/span-db-reader.test.ts +118 -0
- package/src/env/debug/reader/span-db-reader.ts +201 -0
- package/src/env/debug/types.test.ts +187 -0
- package/src/env/debug/types.ts +171 -0
- package/src/env/environment-init.test.ts +183 -0
- package/src/env/environment-lifecycle.test.ts +516 -0
- package/src/env/environment-service.test.ts +332 -0
- package/src/env/environment.handle-query.test.ts +96 -0
- package/src/env/environment.test.ts +232 -0
- package/src/env/environment.ts +708 -0
- package/src/env/errors.test.ts +165 -0
- package/src/env/errors.ts +157 -0
- package/src/env/event-source/event-source-agent-handler.test.ts +193 -0
- package/src/env/event-source/event-source-agent-handler.ts +111 -0
- package/src/env/event-source/event-source-component.process-cleanup.test.ts +236 -0
- package/src/env/event-source/event-source-component.stop.test.ts +346 -0
- package/src/env/event-source/event-source-component.test.ts +1207 -0
- package/src/env/event-source/event-source-component.ts +1379 -0
- package/src/env/event-source/event-source-config-registration.test.ts +242 -0
- package/src/env/event-source/event-source-config-registration.ts +37 -0
- package/src/env/event-source/event-source-integration.test.ts +320 -0
- package/src/env/event-source/event-source-platform.test.ts +630 -0
- package/src/env/event-source/types.ts +298 -0
- package/src/env/hook/global-hook-manager.ts +162 -0
- package/src/env/hook/hook-manager.test.ts +374 -0
- package/src/env/hook/hook-manager.ts +309 -0
- package/src/env/hook/index.ts +38 -0
- package/src/env/hook/types.ts +138 -0
- package/src/env/index.ts +144 -0
- package/src/env/interface.ts +203 -0
- package/src/env/llm/hooks.test.ts +293 -0
- package/src/env/llm/hooks.ts +316 -0
- package/src/env/llm/index.ts +61 -0
- package/src/env/llm/invoke-threshold-check.test.ts +88 -0
- package/src/env/llm/invoke-timeout.test.ts +54 -0
- package/src/env/llm/invoke.test.ts +71 -0
- package/src/env/llm/invoke.ts +1039 -0
- package/src/env/llm/llm-config.test.ts +523 -0
- package/src/env/llm/llm.test.ts +233 -0
- package/src/env/llm/llm.ts +568 -0
- package/src/env/llm/provider.test.ts +182 -0
- package/src/env/llm/provider.ts +108 -0
- package/src/env/llm/transform.test.ts +251 -0
- package/src/env/llm/transform.ts +286 -0
- package/src/env/llm/types.test.ts +580 -0
- package/src/env/llm/types.ts +424 -0
- package/src/env/log-trace/decorator-otel.test.ts +182 -0
- package/src/env/log-trace/decorator.ts +230 -0
- package/src/env/log-trace/index.ts +79 -0
- package/src/env/log-trace/log-trace-component.test.ts +242 -0
- package/src/env/log-trace/log-trace-component.ts +497 -0
- package/src/env/log-trace/log-trace-config-registration.test.ts +348 -0
- package/src/env/log-trace/log-trace-config-registration.ts +45 -0
- package/src/env/log-trace/logger.test.ts +149 -0
- package/src/env/log-trace/logger.ts +522 -0
- package/src/env/log-trace/opentelemetry/cli-propagation.test.ts +147 -0
- package/src/env/log-trace/opentelemetry/cli-propagation.ts +194 -0
- package/src/env/log-trace/opentelemetry/integration.test.ts +668 -0
- package/src/env/log-trace/opentelemetry/mod.ts +25 -0
- package/src/env/log-trace/opentelemetry/propagation-env.test.ts +181 -0
- package/src/env/log-trace/opentelemetry/propagation-env.ts +136 -0
- package/src/env/log-trace/opentelemetry/propagation.test.ts +259 -0
- package/src/env/log-trace/opentelemetry/propagation.ts +215 -0
- package/src/env/log-trace/opentelemetry/tracer-provider-context.test.ts +166 -0
- package/src/env/log-trace/opentelemetry/tracer-provider.test.ts +379 -0
- package/src/env/log-trace/opentelemetry/tracer-provider.ts +612 -0
- package/src/env/log-trace/span-storage.test.ts +145 -0
- package/src/env/log-trace/span-storage.ts +230 -0
- package/src/env/log-trace/trace-context.test.ts +187 -0
- package/src/env/log-trace/trace-context.ts +162 -0
- package/src/env/log-trace/types.test.ts +63 -0
- package/src/env/log-trace/types.ts +172 -0
- package/src/env/mcp/README.md +244 -0
- package/src/env/mcp/__integration__/mcp-component.integration.test.ts +373 -0
- package/src/env/mcp/config.test.ts +74 -0
- package/src/env/mcp/config.ts +116 -0
- package/src/env/mcp/index.ts +41 -0
- package/src/env/mcp/loader.test.ts +161 -0
- package/src/env/mcp/loader.ts +209 -0
- package/src/env/mcp/mcp-component.test.ts +111 -0
- package/src/env/mcp/mcp-component.ts +358 -0
- package/src/env/mcp/mcp-config-registration.test.ts +304 -0
- package/src/env/mcp/mcp-config-registration.ts +50 -0
- package/src/env/mcp/scanner.test.ts +170 -0
- package/src/env/mcp/scanner.ts +246 -0
- package/src/env/mcp/tool/adapter.test.ts +520 -0
- package/src/env/mcp/tool/adapter.ts +521 -0
- package/src/env/mcp/tool/index.ts +5 -0
- package/src/env/mcp/types.test.ts +171 -0
- package/src/env/mcp/types.ts +79 -0
- package/src/env/memory/README.md +177 -0
- package/src/env/memory/built-in/index.ts +59 -0
- package/src/env/memory/built-in/recall-memory.ts +103 -0
- package/src/env/memory/built-in/record-memory.ts +148 -0
- package/src/env/memory/index.ts +20 -0
- package/src/env/memory/memory-component.test.ts +239 -0
- package/src/env/memory/memory-component.ts +503 -0
- package/src/env/memory/memory-config-registration.test.ts +67 -0
- package/src/env/memory/memory-config-registration.ts +48 -0
- package/src/env/memory/memory-config.ts +45 -0
- package/src/env/memory/memory-file.test.ts +268 -0
- package/src/env/memory/plugin/index.ts +48 -0
- package/src/env/memory/plugin/memory-agent.test.ts +249 -0
- package/src/env/memory/plugin/memory-agent.ts +365 -0
- package/src/env/memory/plugin/memory-manager.ts +198 -0
- package/src/env/memory/plugin/memory-plugin-agent.test.ts +145 -0
- package/src/env/memory/plugin/memory-plugin.ts +210 -0
- package/src/env/memory/plugin/plugin-simplified.test.ts +51 -0
- package/src/env/memory/plugin/recall-memory.test.ts +106 -0
- package/src/env/memory/plugin/recall-memory.ts +53 -0
- package/src/env/memory/plugin/types.ts +101 -0
- package/src/env/memory/tools/memory-agent-tools.ts +228 -0
- package/src/env/memory/types.ts +85 -0
- package/src/env/paths.ts +118 -0
- package/src/env/prompt/index.ts +18 -0
- package/src/env/prompt/memory-prompts.test.ts +91 -0
- package/src/env/prompt/prompt-component.test.ts +491 -0
- package/src/env/prompt/prompt-component.ts +619 -0
- package/src/env/prompt/prompt-config-registration.test.ts +213 -0
- package/src/env/prompt/prompt-config-registration.ts +39 -0
- package/src/env/prompt/prompts-index.ts +504 -0
- package/src/env/prompt/renderer.ts +67 -0
- package/src/env/prompt/types.ts +136 -0
- package/src/env/session/hooks.ts +18 -0
- package/src/env/session/index.ts +37 -0
- package/src/env/session/search-query-parser.test.ts +425 -0
- package/src/env/session/search-query-parser.ts +171 -0
- package/src/env/session/session-checkpoint.test.ts +523 -0
- package/src/env/session/session-component.extract-recent-messages.test.ts +209 -0
- package/src/env/session/session-component.test.ts +132 -0
- package/src/env/session/session-component.ts +1249 -0
- package/src/env/session/session-config-registration.test.ts +138 -0
- package/src/env/session/session-config-registration.ts +52 -0
- package/src/env/session/session-message-converter.test.ts +763 -0
- package/src/env/session/session-message-converter.ts +415 -0
- package/src/env/session/session-message-e2e.test.ts +448 -0
- package/src/env/session/session-search.test.ts +391 -0
- package/src/env/session/session-store.test.ts +362 -0
- package/src/env/session/session-store.ts +141 -0
- package/src/env/session/storage/index.ts +6 -0
- package/src/env/session/storage/memory.ts +502 -0
- package/src/env/session/storage/sqlite.ts +794 -0
- package/src/env/session/types.ts +742 -0
- package/src/env/skill/config.ts +39 -0
- package/src/env/skill/index.ts +6 -0
- package/src/env/skill/parser.test.ts +116 -0
- package/src/env/skill/parser.ts +77 -0
- package/src/env/skill/scanner.test.ts +211 -0
- package/src/env/skill/scanner.ts +119 -0
- package/src/env/skill/skill-component.test.ts +234 -0
- package/src/env/skill/skill-component.ts +352 -0
- package/src/env/skill/skill-config-registration.test.ts +60 -0
- package/src/env/skill/skill-config-registration.ts +43 -0
- package/src/env/skill/tool/index.ts +1 -0
- package/src/env/skill/tool/skill-tool.test.ts +100 -0
- package/src/env/skill/tool/skill-tool.ts +72 -0
- package/src/env/skill/types.ts +64 -0
- package/src/env/task/delegate/delegate-tool.test.ts +498 -0
- package/src/env/task/delegate/delegate-tool.ts +1014 -0
- package/src/env/task/delegate/index.ts +18 -0
- package/src/env/task/delegate/stop-tool.test.ts +140 -0
- package/src/env/task/delegate/stop-tool.ts +119 -0
- package/src/env/task/delegate/task-events.test.ts +178 -0
- package/src/env/task/delegate/task-events.ts +143 -0
- package/src/env/task/hooks/contexts.test.ts +92 -0
- package/src/env/task/hooks/contexts.ts +192 -0
- package/src/env/task/hooks/index.ts +23 -0
- package/src/env/task/hooks/task-hook-points.test.ts +32 -0
- package/src/env/task/hooks/task-hook-points.ts +54 -0
- package/src/env/task/index.ts +7 -0
- package/src/env/task/plugins/index.ts +13 -0
- package/src/env/task/plugins/task-plugin.test.ts +74 -0
- package/src/env/task/plugins/task-plugin.ts +89 -0
- package/src/env/task/plugins/task-tag-plugin.test.ts +377 -0
- package/src/env/task/plugins/task-tag-plugin.ts +319 -0
- package/src/env/task/plugins/task-workflow-extractor.integration.test.ts +226 -0
- package/src/env/task/plugins/workflow-extractor-agent.test.ts +107 -0
- package/src/env/task/plugins/workflow-extractor-agent.ts +225 -0
- package/src/env/task/storage/index.ts +6 -0
- package/src/env/task/storage/sqlite-task-store.test.ts +283 -0
- package/src/env/task/storage/sqlite-task-store.ts +903 -0
- package/src/env/task/storage/task-search.test.ts +291 -0
- package/src/env/task/tag-service.test.ts +198 -0
- package/src/env/task/tag-service.ts +264 -0
- package/src/env/task/task-component.test.ts +193 -0
- package/src/env/task/task-component.ts +658 -0
- package/src/env/task/task-config-registration.test.ts +57 -0
- package/src/env/task/task-config-registration.ts +37 -0
- package/src/env/task/task-types.test.ts +137 -0
- package/src/env/task/tools/complete-tool.ts +44 -0
- package/src/env/task/tools/create-tool.ts +49 -0
- package/src/env/task/tools/delete-tool.ts +43 -0
- package/src/env/task/tools/get-tool.ts +59 -0
- package/src/env/task/tools/index.ts +10 -0
- package/src/env/task/tools/list-tool.ts +40 -0
- package/src/env/task/tools/operation/create-tool.ts +48 -0
- package/src/env/task/tools/operation/delete-tool.ts +43 -0
- package/src/env/task/tools/operation/get-tool.ts +43 -0
- package/src/env/task/tools/operation/index.ts +9 -0
- package/src/env/task/tools/operation/list-tool.ts +40 -0
- package/src/env/task/tools/operation/operation-tools.test.ts +274 -0
- package/src/env/task/tools/operation/operation-types.ts +75 -0
- package/src/env/task/tools/operation/update-tool.ts +47 -0
- package/src/env/task/tools/task-tools.test.ts +203 -0
- package/src/env/task/tools/task-types.test.ts +75 -0
- package/src/env/task/tools/task-types.ts +68 -0
- package/src/env/task/tools/update-tool.ts +70 -0
- package/src/env/task/types.ts +160 -0
- package/src/env/tool/built-in/bash.ts +201 -0
- package/src/env/tool/built-in/echo.ts +29 -0
- package/src/env/tool/built-in/edit-file.test.ts +136 -0
- package/src/env/tool/built-in/edit-file.ts +92 -0
- package/src/env/tool/built-in/glob.test.ts +94 -0
- package/src/env/tool/built-in/glob.ts +65 -0
- package/src/env/tool/built-in/grep.test.ts +122 -0
- package/src/env/tool/built-in/grep.ts +108 -0
- package/src/env/tool/built-in/index.ts +44 -0
- package/src/env/tool/built-in/read-file.test.ts +84 -0
- package/src/env/tool/built-in/read-file.ts +75 -0
- package/src/env/tool/built-in/write-file.test.ts +119 -0
- package/src/env/tool/built-in/write-file.ts +68 -0
- package/src/env/tool/index.ts +24 -0
- package/src/env/tool/registry.test.ts +257 -0
- package/src/env/tool/registry.ts +167 -0
- package/src/env/tool/tool-component.test.ts +559 -0
- package/src/env/tool/tool-component.ts +563 -0
- package/src/env/tool/tool-config-registration.test.ts +249 -0
- package/src/env/tool/tool-config-registration.ts +46 -0
- package/src/env/tool/types.ts +267 -0
- package/src/env/tool/validator.test.ts +143 -0
- package/src/env/tool/validator.ts +44 -0
- package/src/env/types.ts +180 -0
- package/src/env/workflow/ask-user-tool-registration.test.ts +216 -0
- package/src/env/workflow/complex-workflow.integration.test.ts +1900 -0
- package/src/env/workflow/decorators/decorator-node.ts +229 -0
- package/src/env/workflow/decorators/decorator.test.ts +196 -0
- package/src/env/workflow/decorators/edge.ts +82 -0
- package/src/env/workflow/decorators/index.ts +31 -0
- package/src/env/workflow/decorators/node-as.ts +98 -0
- package/src/env/workflow/decorators/workflow.ts +54 -0
- package/src/env/workflow/engine/dag-manager.test.ts +570 -0
- package/src/env/workflow/engine/dag-manager.ts +594 -0
- package/src/env/workflow/engine/engine.ts +1422 -0
- package/src/env/workflow/engine/event-bus.test.ts +359 -0
- package/src/env/workflow/engine/event-bus.ts +156 -0
- package/src/env/workflow/engine/executor-agent-session.test.ts +84 -0
- package/src/env/workflow/engine/executor.test.ts +619 -0
- package/src/env/workflow/engine/executor.ts +593 -0
- package/src/env/workflow/engine/index.ts +24 -0
- package/src/env/workflow/engine/node-registry.test.ts +560 -0
- package/src/env/workflow/engine/node-registry.ts +289 -0
- package/src/env/workflow/engine/resume-removed.test.ts +22 -0
- package/src/env/workflow/engine/scheduler.test.ts +715 -0
- package/src/env/workflow/engine/scheduler.ts +318 -0
- package/src/env/workflow/engine/workflow-engine.test.ts +815 -0
- package/src/env/workflow/extractor/workflow-converter.ts +306 -0
- package/src/env/workflow/fixtures.ts +380 -0
- package/src/env/workflow/index.ts +38 -0
- package/src/env/workflow/integration/run-resume-unified.test.ts +186 -0
- package/src/env/workflow/integration/service-integration.test.ts +267 -0
- package/src/env/workflow/metadata/keys.ts +12 -0
- package/src/env/workflow/nodes/agent-component-adapter.test.ts +318 -0
- package/src/env/workflow/nodes/agent-component-adapter.ts +448 -0
- package/src/env/workflow/nodes/agent-node.test.ts +371 -0
- package/src/env/workflow/nodes/agent-node.ts +598 -0
- package/src/env/workflow/nodes/ask-user-node.ts +113 -0
- package/src/env/workflow/nodes/condition-node.ts +200 -0
- package/src/env/workflow/nodes/index.ts +9 -0
- package/src/env/workflow/nodes/merge-node.ts +141 -0
- package/src/env/workflow/nodes/skill-node.test.ts +253 -0
- package/src/env/workflow/nodes/skill-node.ts +393 -0
- package/src/env/workflow/nodes/tool-node.test.ts +251 -0
- package/src/env/workflow/nodes/tool-node.ts +493 -0
- package/src/env/workflow/nodes/workflow-llm-history.test.ts +455 -0
- package/src/env/workflow/nodes/workflow-node.test.ts +315 -0
- package/src/env/workflow/nodes/workflow-node.ts +311 -0
- package/src/env/workflow/service/index.ts +27 -0
- package/src/env/workflow/service/registry.test.ts +133 -0
- package/src/env/workflow/service/registry.ts +71 -0
- package/src/env/workflow/service/workflow-service.test.ts +310 -0
- package/src/env/workflow/service/workflow-service.ts +393 -0
- package/src/env/workflow/storage/index.ts +28 -0
- package/src/env/workflow/storage/mock-repositories.ts +385 -0
- package/src/env/workflow/storage/sqlite.test.ts +179 -0
- package/src/env/workflow/storage/sqlite.ts +163 -0
- package/src/env/workflow/storage/workflow-repo.test.ts +780 -0
- package/src/env/workflow/storage/workflow-repo.ts +342 -0
- package/src/env/workflow/tools/ask-user-tool.ts +82 -0
- package/src/env/workflow/tools/index.ts +26 -0
- package/src/env/workflow/tools/run-workflow.test.ts +352 -0
- package/src/env/workflow/tools/run-workflow.ts +214 -0
- package/src/env/workflow/types/context.ts +18 -0
- package/src/env/workflow/types/decorators-types.ts +198 -0
- package/src/env/workflow/types/event.test.ts +515 -0
- package/src/env/workflow/types/event.ts +193 -0
- package/src/env/workflow/types/index.ts +49 -0
- package/src/env/workflow/types/run.test.ts +437 -0
- package/src/env/workflow/types/run.ts +173 -0
- package/src/env/workflow/types/workflow-hil.ts +114 -0
- package/src/env/workflow/types/workflow-message.test.ts +138 -0
- package/src/env/workflow/types/workflow-message.ts +196 -0
- package/src/env/workflow/types/workflow-session.test.ts +95 -0
- package/src/env/workflow/types/workflow-session.ts +59 -0
- package/src/env/workflow/types/workflow.test.ts +495 -0
- package/src/env/workflow/types/workflow.ts +195 -0
- package/src/env/workflow/types_compat.ts +51 -0
- package/src/env/workflow/utils/create-workflow.ts +47 -0
- package/src/env/workflow/utils/execution-state.ts +245 -0
- package/src/env/workflow/utils/index.ts +18 -0
- package/src/env/workflow/utils/node-registry-helper.ts +58 -0
- package/src/env/workflow/utils/recovery-validator.test.ts +460 -0
- package/src/env/workflow/utils/recovery-validator.ts +377 -0
- package/src/env/workflow/utils/session-parser.test.ts +111 -0
- package/src/env/workflow/utils/session-parser.ts +94 -0
- package/src/env/workflow/utils/session-recovery.test.ts +334 -0
- package/src/env/workflow/utils/session-recovery.ts +188 -0
- package/src/env/workflow/utils/template-resolver.test.ts +258 -0
- package/src/env/workflow/utils/template-resolver.ts +436 -0
- package/src/env/workflow/utils/validation-rules.ts +149 -0
- package/src/env/workflow/workflow-component.ts +544 -0
- package/src/index.ts +422 -0
- package/src/utils/id.ts +21 -0
|
@@ -0,0 +1,289 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview NodeRegistry - Registry for creating Node instances
|
|
3
|
+
*
|
|
4
|
+
* NodeRegistry manages node creation from NodeDefinition instances.
|
|
5
|
+
* It provides:
|
|
6
|
+
* - Built-in node types: tool, skill, agent, workflow
|
|
7
|
+
* - Custom node type registration via factory functions
|
|
8
|
+
* - Node creation based on node type
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
import type { Node, NodeDefinition, NodeExecutionContext } from '../types/index';
|
|
12
|
+
import { EventBus } from './event-bus';
|
|
13
|
+
import { ToolNode } from '../nodes/tool-node';
|
|
14
|
+
import type { ToolRegistry } from '../nodes/tool-node';
|
|
15
|
+
import { SkillNode } from '../nodes/skill-node';
|
|
16
|
+
import type { SkillRegistry } from '../nodes/skill-node';
|
|
17
|
+
import { AgentNode } from '../nodes/agent-node';
|
|
18
|
+
import type { AgentRunner } from '../nodes/agent-node';
|
|
19
|
+
import { AgentComponentAdapter } from '../nodes/agent-component-adapter';
|
|
20
|
+
import { WorkflowNode } from '../nodes/workflow-node';
|
|
21
|
+
import type { WorkflowRunner } from '../nodes/workflow-node';
|
|
22
|
+
|
|
23
|
+
// AgentComponent 类型(可选依赖)
|
|
24
|
+
import type { AgentComponent } from '../../agent/agent-component';
|
|
25
|
+
import type { SessionComponent } from '../../session/session-component';
|
|
26
|
+
import { AskUserNode } from '../nodes/ask-user-node';
|
|
27
|
+
|
|
28
|
+
// ============================================================================
|
|
29
|
+
// Type Definitions
|
|
30
|
+
// ============================================================================
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* NodeRegistry initialization options
|
|
34
|
+
*/
|
|
35
|
+
export interface NodeRegistryOptions {
|
|
36
|
+
/** Registry for looking up tools */
|
|
37
|
+
toolRegistry?: ToolRegistry;
|
|
38
|
+
/** Registry for looking up skills */
|
|
39
|
+
skillRegistry?: SkillRegistry;
|
|
40
|
+
/** AgentComponent for executing agent nodes (auto-creates adapter) */
|
|
41
|
+
agentComponent?: AgentComponent;
|
|
42
|
+
/** Explicit AgentRunner (takes precedence over agentComponent) */
|
|
43
|
+
agentRunner?: AgentRunner;
|
|
44
|
+
/** Runner for executing workflow nodes */
|
|
45
|
+
workflowRunner?: WorkflowRunner;
|
|
46
|
+
/** Session component for agent session management */
|
|
47
|
+
sessionComponent?: SessionComponent;
|
|
48
|
+
/** @deprecated Use agentRunner instead */
|
|
49
|
+
agentRunner2?: AgentRunner;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* NodeContext for node creation
|
|
54
|
+
*
|
|
55
|
+
* Context information passed to node factories when creating nodes.
|
|
56
|
+
*/
|
|
57
|
+
export interface NodeContext {
|
|
58
|
+
/** Run ID for this workflow execution */
|
|
59
|
+
runId: string;
|
|
60
|
+
/** Workflow name */
|
|
61
|
+
workflowName: string;
|
|
62
|
+
/** Event bus for workflow events */
|
|
63
|
+
eventBus: EventBus;
|
|
64
|
+
/** Debug mode flag */
|
|
65
|
+
debug: boolean;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* NodeFactory function type
|
|
70
|
+
*
|
|
71
|
+
* Factory function that creates a Node instance from a NodeDefinition.
|
|
72
|
+
*/
|
|
73
|
+
export type NodeFactory = (
|
|
74
|
+
definition: NodeDefinition,
|
|
75
|
+
context: NodeContext
|
|
76
|
+
) => Node;
|
|
77
|
+
|
|
78
|
+
// ============================================================================
|
|
79
|
+
// NodeRegistry Class
|
|
80
|
+
// ============================================================================
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* NodeRegistry
|
|
84
|
+
*
|
|
85
|
+
* Registry for creating Node instances from NodeDefinition.
|
|
86
|
+
*
|
|
87
|
+
* Features:
|
|
88
|
+
* - Built-in node types: tool, skill, agent, workflow
|
|
89
|
+
* - Custom node type registration via factory functions
|
|
90
|
+
* - Node creation based on node type
|
|
91
|
+
*
|
|
92
|
+
* @example
|
|
93
|
+
* ```typescript
|
|
94
|
+
* const registry = new NodeRegistry(
|
|
95
|
+
* toolRegistry,
|
|
96
|
+
* skillRegistry,
|
|
97
|
+
* agentRunner,
|
|
98
|
+
* workflowRunner
|
|
99
|
+
* );
|
|
100
|
+
*
|
|
101
|
+
* // Register custom node type
|
|
102
|
+
* registry.register('custom', (definition, context) => {
|
|
103
|
+
* return new CustomNode(definition);
|
|
104
|
+
* });
|
|
105
|
+
*
|
|
106
|
+
* // Create node from definition
|
|
107
|
+
* const node = registry.createNode(definition);
|
|
108
|
+
* ```
|
|
109
|
+
*/
|
|
110
|
+
export class NodeRegistry {
|
|
111
|
+
/** Map of registered node factories by type */
|
|
112
|
+
private factories: Map<string, NodeFactory> = new Map();
|
|
113
|
+
|
|
114
|
+
/** Tool registry for looking up tools */
|
|
115
|
+
private toolRegistry?: ToolRegistry;
|
|
116
|
+
|
|
117
|
+
/** Skill registry for looking up skills */
|
|
118
|
+
private skillRegistry?: SkillRegistry;
|
|
119
|
+
|
|
120
|
+
/** Agent runner for executing agent nodes */
|
|
121
|
+
private agentRunner?: AgentRunner;
|
|
122
|
+
|
|
123
|
+
/** Workflow runner for executing workflow nodes */
|
|
124
|
+
private workflowRunner?: WorkflowRunner;
|
|
125
|
+
|
|
126
|
+
/** AgentComponent adapter (auto-created if agentComponent is provided) */
|
|
127
|
+
private agentComponentAdapter?: AgentComponentAdapter;
|
|
128
|
+
|
|
129
|
+
/** Session component for agent session management */
|
|
130
|
+
private sessionComponent?: SessionComponent;
|
|
131
|
+
|
|
132
|
+
/**
|
|
133
|
+
* Create a new NodeRegistry
|
|
134
|
+
*
|
|
135
|
+
* @param options - Registry options
|
|
136
|
+
* @param options.toolRegistry - Registry for looking up tools (optional)
|
|
137
|
+
* @param options.skillRegistry - Registry for looking up skills (optional)
|
|
138
|
+
* @param options.agentComponent - AgentComponent for executing agent nodes (optional, auto-creates adapter)
|
|
139
|
+
* @param options.agentRunner - Explicit AgentRunner (takes precedence over agentComponent)
|
|
140
|
+
* @param options.workflowRunner - Runner for executing workflow nodes (optional)
|
|
141
|
+
* @param options.sessionComponent - Session component for agent session management (optional)
|
|
142
|
+
*/
|
|
143
|
+
constructor(options?: NodeRegistryOptions) {
|
|
144
|
+
const {
|
|
145
|
+
toolRegistry,
|
|
146
|
+
skillRegistry,
|
|
147
|
+
agentComponent,
|
|
148
|
+
agentRunner,
|
|
149
|
+
workflowRunner,
|
|
150
|
+
sessionComponent,
|
|
151
|
+
} = options ?? {};
|
|
152
|
+
|
|
153
|
+
// Store registries
|
|
154
|
+
this.toolRegistry = toolRegistry;
|
|
155
|
+
this.skillRegistry = skillRegistry;
|
|
156
|
+
this.workflowRunner = workflowRunner;
|
|
157
|
+
this.sessionComponent = sessionComponent;
|
|
158
|
+
|
|
159
|
+
// Create AgentRunner:
|
|
160
|
+
// 1. Use explicit agentRunner if provided
|
|
161
|
+
// 2. Otherwise, auto-create from agentComponent if provided
|
|
162
|
+
if (agentRunner) {
|
|
163
|
+
this.agentRunner = agentRunner;
|
|
164
|
+
// If agentRunner is an AgentComponentAdapter, set session component
|
|
165
|
+
if (agentRunner.setSessionComponent && sessionComponent) {
|
|
166
|
+
agentRunner.setSessionComponent(sessionComponent);
|
|
167
|
+
}
|
|
168
|
+
} else if (agentComponent) {
|
|
169
|
+
this.agentComponentAdapter = new AgentComponentAdapter(agentComponent, {}, sessionComponent);
|
|
170
|
+
this.agentRunner = this.agentComponentAdapter;
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
// Register built-in node types
|
|
174
|
+
this.registerBuiltInTypes();
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
/**
|
|
178
|
+
* Get the AgentComponentAdapter if available
|
|
179
|
+
*/
|
|
180
|
+
getAgentAdapter(): AgentComponentAdapter | undefined {
|
|
181
|
+
return (this as any).agentComponentAdapter;
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
/**
|
|
185
|
+
* Get the AgentRunner
|
|
186
|
+
*/
|
|
187
|
+
getAgentRunner(): AgentRunner | undefined {
|
|
188
|
+
return (this as any).agentRunner;
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
/**
|
|
192
|
+
* Get the SessionComponent
|
|
193
|
+
*/
|
|
194
|
+
getSessionComponent(): SessionComponent | undefined {
|
|
195
|
+
return (this as any).sessionComponent;
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
/**
|
|
199
|
+
* Register built-in node types
|
|
200
|
+
*/
|
|
201
|
+
private registerBuiltInTypes(): void {
|
|
202
|
+
// Register 'tool' node type
|
|
203
|
+
this.factories.set('tool', (definition) => {
|
|
204
|
+
if (!this.toolRegistry) {
|
|
205
|
+
throw new Error('ToolRegistry is required for tool nodes');
|
|
206
|
+
}
|
|
207
|
+
return new ToolNode(definition, this.toolRegistry);
|
|
208
|
+
});
|
|
209
|
+
|
|
210
|
+
// Register 'skill' node type
|
|
211
|
+
this.factories.set('skill', (definition) => {
|
|
212
|
+
if (!this.skillRegistry) {
|
|
213
|
+
throw new Error('SkillRegistry is required for skill nodes');
|
|
214
|
+
}
|
|
215
|
+
return new SkillNode(definition, this.skillRegistry);
|
|
216
|
+
});
|
|
217
|
+
|
|
218
|
+
// Register 'agent' node type
|
|
219
|
+
this.factories.set('agent', (definition) => {
|
|
220
|
+
if (!this.agentRunner) {
|
|
221
|
+
throw new Error('AgentRunner is required for agent nodes');
|
|
222
|
+
}
|
|
223
|
+
return new AgentNode(definition, this.agentRunner);
|
|
224
|
+
});
|
|
225
|
+
|
|
226
|
+
// Register 'workflow' node type
|
|
227
|
+
this.factories.set('workflow', (definition) => {
|
|
228
|
+
if (!this.workflowRunner) {
|
|
229
|
+
throw new Error('WorkflowRunner is required for workflow nodes');
|
|
230
|
+
}
|
|
231
|
+
return new WorkflowNode(definition, this.workflowRunner);
|
|
232
|
+
});
|
|
233
|
+
|
|
234
|
+
// Register 'ask_user' node type
|
|
235
|
+
this.factories.set('ask_user', (definition) => {
|
|
236
|
+
return new AskUserNode(definition);
|
|
237
|
+
});
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
/**
|
|
241
|
+
* Register a custom node factory
|
|
242
|
+
*
|
|
243
|
+
* @param type - Node type identifier
|
|
244
|
+
* @param factory - Factory function to create nodes of this type
|
|
245
|
+
*/
|
|
246
|
+
register(type: string, factory: NodeFactory): void {
|
|
247
|
+
this.factories.set(type, factory);
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
/**
|
|
251
|
+
* Check if a node type is registered
|
|
252
|
+
*
|
|
253
|
+
* @param type - Node type identifier
|
|
254
|
+
* @returns True if the type is registered
|
|
255
|
+
*/
|
|
256
|
+
has(type: string): boolean {
|
|
257
|
+
return this.factories.has(type);
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
/**
|
|
261
|
+
* List all registered node types
|
|
262
|
+
*
|
|
263
|
+
* @returns Array of registered type names
|
|
264
|
+
*/
|
|
265
|
+
list(): string[] {
|
|
266
|
+
return Array.from(this.factories.keys());
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
/**
|
|
270
|
+
* Create a Node instance from a NodeDefinition
|
|
271
|
+
*
|
|
272
|
+
* @param definition - Node definition
|
|
273
|
+
* @param context - Node context (optional, for future use)
|
|
274
|
+
* @returns Node instance
|
|
275
|
+
* @throws Error if the node type is not registered
|
|
276
|
+
*/
|
|
277
|
+
createNode(definition: NodeDefinition, context?: NodeContext): Node {
|
|
278
|
+
const factory = this.factories.get(definition.type);
|
|
279
|
+
|
|
280
|
+
if (!factory) {
|
|
281
|
+
const availableTypes = this.list().join(', ');
|
|
282
|
+
throw new Error(
|
|
283
|
+
`Unknown node type: ${definition.type}. Available types: ${availableTypes}`
|
|
284
|
+
);
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
return factory(definition, context!);
|
|
288
|
+
}
|
|
289
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { describe, it, expect } from 'vitest';
|
|
2
|
+
import { WorkflowEngine } from './engine';
|
|
3
|
+
|
|
4
|
+
describe('resume() method', () => {
|
|
5
|
+
it('should have resume method for pausing recovery', () => {
|
|
6
|
+
// In the session-based design, resume() is used to recover from pauses
|
|
7
|
+
expect(typeof WorkflowEngine.prototype.resume).toBe('function');
|
|
8
|
+
});
|
|
9
|
+
|
|
10
|
+
it('should still have run method for unified run/resume', () => {
|
|
11
|
+
// The unified run() method handles both fresh start and resume
|
|
12
|
+
expect(typeof WorkflowEngine.prototype.run).toBe('function');
|
|
13
|
+
});
|
|
14
|
+
|
|
15
|
+
it('should still have stop method', () => {
|
|
16
|
+
expect(typeof WorkflowEngine.prototype.stop).toBe('function');
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
it('should still have pause method', () => {
|
|
20
|
+
expect(typeof WorkflowEngine.prototype.pause).toBe('function');
|
|
21
|
+
});
|
|
22
|
+
});
|