@ai-setting/roy-agent-core 1.3.10 → 1.3.11
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/config/index.js +1647 -0
- package/dist/index.js +12579 -89691
- package/package.json +19 -56
- package/src/config/config-component.test.ts +0 -627
- package/src/config/config-component.ts +0 -906
- package/src/config/config-parser.test.ts +0 -319
- package/src/config/config-parser.ts +0 -203
- package/src/config/decentralized-config.test.ts +0 -740
- package/src/config/env-key.ts +0 -210
- package/src/config/env-source.test.ts +0 -252
- package/src/config/env-source.ts +0 -301
- package/src/config/file-source.test.ts +0 -357
- package/src/config/file-source.ts +0 -421
- package/src/config/index.ts +0 -24
- package/src/config/protocol-resolver.test.ts +0 -217
- package/src/config/protocol-resolver.ts +0 -228
- package/src/env/agent/agent-component.abort.test.ts +0 -511
- package/src/env/agent/agent-component.record-session.test.ts +0 -349
- package/src/env/agent/agent-component.test.ts +0 -1389
- package/src/env/agent/agent-component.tool-error.test.ts +0 -327
- package/src/env/agent/agent-component.ts +0 -1711
- package/src/env/agent/agent-config-registration.test.ts +0 -226
- package/src/env/agent/agent-config-registration.ts +0 -46
- package/src/env/agent/agent-reminder-plugin.integration.test.ts +0 -243
- package/src/env/agent/index.ts +0 -10
- package/src/env/agent/summary-agent.parse-hint.test.ts +0 -360
- package/src/env/agent/summary-agent.ts +0 -508
- package/src/env/agent/types.ts +0 -536
- package/src/env/commands/commands-component.test.ts +0 -364
- package/src/env/commands/commands-component.ts +0 -604
- package/src/env/commands/commands-config-registration.test.ts +0 -198
- package/src/env/commands/commands-config-registration.ts +0 -38
- package/src/env/commands/index.ts +0 -21
- package/src/env/commands/parser.test.ts +0 -203
- package/src/env/commands/parser.ts +0 -115
- package/src/env/commands/types.ts +0 -184
- package/src/env/commands-prompt-integration.test.ts +0 -243
- package/src/env/component-env.test.ts +0 -119
- package/src/env/component.ts +0 -335
- package/src/env/constants.test.ts +0 -72
- package/src/env/constants.ts +0 -123
- package/src/env/debug/debug-component.test.ts +0 -114
- package/src/env/debug/debug-component.ts +0 -547
- package/src/env/debug/formatters/index.ts +0 -9
- package/src/env/debug/formatters/repl-formatter.test.ts +0 -139
- package/src/env/debug/formatters/repl-formatter.ts +0 -358
- package/src/env/debug/formatters/trace-formatter.test.ts +0 -119
- package/src/env/debug/formatters/trace-formatter.ts +0 -191
- package/src/env/debug/formatters/tree-formatter.test.ts +0 -107
- package/src/env/debug/formatters/tree-formatter.ts +0 -325
- package/src/env/debug/index.ts +0 -38
- package/src/env/debug/parser/regex-parser.test.ts +0 -201
- package/src/env/debug/parser/regex-parser.ts +0 -196
- package/src/env/debug/parser/span-builder.test.ts +0 -241
- package/src/env/debug/parser/span-builder.ts +0 -386
- package/src/env/debug/reader/log-reader.test.ts +0 -170
- package/src/env/debug/reader/log-reader.ts +0 -186
- package/src/env/debug/reader/span-db-reader.test.ts +0 -118
- package/src/env/debug/reader/span-db-reader.ts +0 -201
- package/src/env/debug/types.test.ts +0 -187
- package/src/env/debug/types.ts +0 -171
- package/src/env/environment-init.test.ts +0 -183
- package/src/env/environment-lifecycle.test.ts +0 -516
- package/src/env/environment-service.test.ts +0 -332
- package/src/env/environment.handle-query.test.ts +0 -96
- package/src/env/environment.test.ts +0 -232
- package/src/env/environment.ts +0 -708
- package/src/env/errors.test.ts +0 -165
- package/src/env/errors.ts +0 -157
- package/src/env/event-source/event-source-agent-handler.test.ts +0 -193
- package/src/env/event-source/event-source-agent-handler.ts +0 -111
- package/src/env/event-source/event-source-component.process-cleanup.test.ts +0 -236
- package/src/env/event-source/event-source-component.stop.test.ts +0 -346
- package/src/env/event-source/event-source-component.test.ts +0 -1207
- package/src/env/event-source/event-source-component.ts +0 -1379
- package/src/env/event-source/event-source-config-registration.test.ts +0 -242
- package/src/env/event-source/event-source-config-registration.ts +0 -37
- package/src/env/event-source/event-source-integration.test.ts +0 -320
- package/src/env/event-source/event-source-platform.test.ts +0 -630
- package/src/env/event-source/types.ts +0 -298
- package/src/env/hook/global-hook-manager.ts +0 -162
- package/src/env/hook/hook-manager.test.ts +0 -374
- package/src/env/hook/hook-manager.ts +0 -309
- package/src/env/hook/index.ts +0 -38
- package/src/env/hook/types.ts +0 -138
- package/src/env/index.ts +0 -144
- package/src/env/interface.ts +0 -203
- package/src/env/llm/hooks.test.ts +0 -293
- package/src/env/llm/hooks.ts +0 -316
- package/src/env/llm/index.ts +0 -61
- package/src/env/llm/invoke-threshold-check.test.ts +0 -88
- package/src/env/llm/invoke-timeout.test.ts +0 -54
- package/src/env/llm/invoke.test.ts +0 -71
- package/src/env/llm/invoke.ts +0 -1039
- package/src/env/llm/llm-config.test.ts +0 -523
- package/src/env/llm/llm.test.ts +0 -233
- package/src/env/llm/llm.ts +0 -568
- package/src/env/llm/provider.test.ts +0 -182
- package/src/env/llm/provider.ts +0 -108
- package/src/env/llm/transform.test.ts +0 -251
- package/src/env/llm/transform.ts +0 -286
- package/src/env/llm/types.test.ts +0 -580
- package/src/env/llm/types.ts +0 -424
- package/src/env/log-trace/decorator-otel.test.ts +0 -182
- package/src/env/log-trace/decorator.ts +0 -230
- package/src/env/log-trace/index.ts +0 -79
- package/src/env/log-trace/log-trace-component.test.ts +0 -242
- package/src/env/log-trace/log-trace-component.ts +0 -497
- package/src/env/log-trace/log-trace-config-registration.test.ts +0 -348
- package/src/env/log-trace/log-trace-config-registration.ts +0 -45
- package/src/env/log-trace/logger.test.ts +0 -149
- package/src/env/log-trace/logger.ts +0 -522
- package/src/env/log-trace/opentelemetry/cli-propagation.test.ts +0 -147
- package/src/env/log-trace/opentelemetry/cli-propagation.ts +0 -194
- package/src/env/log-trace/opentelemetry/integration.test.ts +0 -668
- package/src/env/log-trace/opentelemetry/mod.ts +0 -25
- package/src/env/log-trace/opentelemetry/propagation-env.test.ts +0 -181
- package/src/env/log-trace/opentelemetry/propagation-env.ts +0 -136
- package/src/env/log-trace/opentelemetry/propagation.test.ts +0 -259
- package/src/env/log-trace/opentelemetry/propagation.ts +0 -215
- package/src/env/log-trace/opentelemetry/tracer-provider-context.test.ts +0 -166
- package/src/env/log-trace/opentelemetry/tracer-provider.test.ts +0 -379
- package/src/env/log-trace/opentelemetry/tracer-provider.ts +0 -612
- package/src/env/log-trace/span-storage.test.ts +0 -145
- package/src/env/log-trace/span-storage.ts +0 -230
- package/src/env/log-trace/trace-context.test.ts +0 -187
- package/src/env/log-trace/trace-context.ts +0 -162
- package/src/env/log-trace/types.test.ts +0 -63
- package/src/env/log-trace/types.ts +0 -172
- package/src/env/mcp/README.md +0 -244
- package/src/env/mcp/__integration__/mcp-component.integration.test.ts +0 -373
- package/src/env/mcp/config.test.ts +0 -74
- package/src/env/mcp/config.ts +0 -116
- package/src/env/mcp/index.ts +0 -41
- package/src/env/mcp/loader.test.ts +0 -161
- package/src/env/mcp/loader.ts +0 -209
- package/src/env/mcp/mcp-component.test.ts +0 -111
- package/src/env/mcp/mcp-component.ts +0 -358
- package/src/env/mcp/mcp-config-registration.test.ts +0 -304
- package/src/env/mcp/mcp-config-registration.ts +0 -50
- package/src/env/mcp/scanner.test.ts +0 -170
- package/src/env/mcp/scanner.ts +0 -246
- package/src/env/mcp/tool/adapter.test.ts +0 -520
- package/src/env/mcp/tool/adapter.ts +0 -521
- package/src/env/mcp/tool/index.ts +0 -5
- package/src/env/mcp/types.test.ts +0 -171
- package/src/env/mcp/types.ts +0 -79
- package/src/env/memory/README.md +0 -177
- package/src/env/memory/built-in/index.ts +0 -59
- package/src/env/memory/built-in/recall-memory.ts +0 -103
- package/src/env/memory/built-in/record-memory.ts +0 -148
- package/src/env/memory/index.ts +0 -20
- package/src/env/memory/memory-component.test.ts +0 -239
- package/src/env/memory/memory-component.ts +0 -503
- package/src/env/memory/memory-config-registration.test.ts +0 -67
- package/src/env/memory/memory-config-registration.ts +0 -48
- package/src/env/memory/memory-config.ts +0 -45
- package/src/env/memory/memory-file.test.ts +0 -268
- package/src/env/memory/plugin/index.ts +0 -48
- package/src/env/memory/plugin/memory-agent.test.ts +0 -249
- package/src/env/memory/plugin/memory-agent.ts +0 -365
- package/src/env/memory/plugin/memory-manager.ts +0 -198
- package/src/env/memory/plugin/memory-plugin-agent.test.ts +0 -145
- package/src/env/memory/plugin/memory-plugin.ts +0 -210
- package/src/env/memory/plugin/plugin-simplified.test.ts +0 -51
- package/src/env/memory/plugin/recall-memory.test.ts +0 -106
- package/src/env/memory/plugin/recall-memory.ts +0 -53
- package/src/env/memory/plugin/types.ts +0 -101
- package/src/env/memory/tools/memory-agent-tools.ts +0 -228
- package/src/env/memory/types.ts +0 -85
- package/src/env/paths.ts +0 -118
- package/src/env/prompt/index.ts +0 -18
- package/src/env/prompt/memory-prompts.test.ts +0 -91
- package/src/env/prompt/prompt-component.test.ts +0 -491
- package/src/env/prompt/prompt-component.ts +0 -619
- package/src/env/prompt/prompt-config-registration.test.ts +0 -213
- package/src/env/prompt/prompt-config-registration.ts +0 -39
- package/src/env/prompt/prompts-index.ts +0 -504
- package/src/env/prompt/renderer.ts +0 -67
- package/src/env/prompt/types.ts +0 -136
- package/src/env/session/hooks.ts +0 -18
- package/src/env/session/index.ts +0 -37
- package/src/env/session/search-query-parser.test.ts +0 -425
- package/src/env/session/search-query-parser.ts +0 -171
- package/src/env/session/session-checkpoint.test.ts +0 -523
- package/src/env/session/session-component.extract-recent-messages.test.ts +0 -209
- package/src/env/session/session-component.test.ts +0 -132
- package/src/env/session/session-component.ts +0 -1249
- package/src/env/session/session-config-registration.test.ts +0 -138
- package/src/env/session/session-config-registration.ts +0 -52
- package/src/env/session/session-message-converter.test.ts +0 -763
- package/src/env/session/session-message-converter.ts +0 -415
- package/src/env/session/session-message-e2e.test.ts +0 -448
- package/src/env/session/session-search.test.ts +0 -391
- package/src/env/session/session-store.test.ts +0 -362
- package/src/env/session/session-store.ts +0 -141
- package/src/env/session/storage/index.ts +0 -6
- package/src/env/session/storage/memory.ts +0 -502
- package/src/env/session/storage/sqlite.ts +0 -794
- package/src/env/session/types.ts +0 -742
- package/src/env/skill/config.ts +0 -39
- package/src/env/skill/index.ts +0 -6
- package/src/env/skill/parser.test.ts +0 -116
- package/src/env/skill/parser.ts +0 -77
- package/src/env/skill/scanner.test.ts +0 -211
- package/src/env/skill/scanner.ts +0 -119
- package/src/env/skill/skill-component.test.ts +0 -234
- package/src/env/skill/skill-component.ts +0 -352
- package/src/env/skill/skill-config-registration.test.ts +0 -60
- package/src/env/skill/skill-config-registration.ts +0 -43
- package/src/env/skill/tool/index.ts +0 -1
- package/src/env/skill/tool/skill-tool.test.ts +0 -100
- package/src/env/skill/tool/skill-tool.ts +0 -72
- package/src/env/skill/types.ts +0 -64
- package/src/env/task/delegate/delegate-tool.test.ts +0 -498
- package/src/env/task/delegate/delegate-tool.ts +0 -1014
- package/src/env/task/delegate/index.ts +0 -18
- package/src/env/task/delegate/stop-tool.test.ts +0 -140
- package/src/env/task/delegate/stop-tool.ts +0 -119
- package/src/env/task/delegate/task-events.test.ts +0 -178
- package/src/env/task/delegate/task-events.ts +0 -143
- package/src/env/task/hooks/contexts.test.ts +0 -92
- package/src/env/task/hooks/contexts.ts +0 -192
- package/src/env/task/hooks/index.ts +0 -23
- package/src/env/task/hooks/task-hook-points.test.ts +0 -32
- package/src/env/task/hooks/task-hook-points.ts +0 -54
- package/src/env/task/index.ts +0 -7
- package/src/env/task/plugins/index.ts +0 -13
- package/src/env/task/plugins/task-plugin.test.ts +0 -74
- package/src/env/task/plugins/task-plugin.ts +0 -89
- package/src/env/task/plugins/task-tag-plugin.test.ts +0 -377
- package/src/env/task/plugins/task-tag-plugin.ts +0 -319
- package/src/env/task/plugins/task-workflow-extractor.integration.test.ts +0 -226
- package/src/env/task/plugins/workflow-extractor-agent.test.ts +0 -107
- package/src/env/task/plugins/workflow-extractor-agent.ts +0 -225
- package/src/env/task/storage/index.ts +0 -6
- package/src/env/task/storage/sqlite-task-store.test.ts +0 -283
- package/src/env/task/storage/sqlite-task-store.ts +0 -903
- package/src/env/task/storage/task-search.test.ts +0 -291
- package/src/env/task/tag-service.test.ts +0 -198
- package/src/env/task/tag-service.ts +0 -264
- package/src/env/task/task-component.test.ts +0 -193
- package/src/env/task/task-component.ts +0 -658
- package/src/env/task/task-config-registration.test.ts +0 -57
- package/src/env/task/task-config-registration.ts +0 -37
- package/src/env/task/task-types.test.ts +0 -137
- package/src/env/task/tools/complete-tool.ts +0 -44
- package/src/env/task/tools/create-tool.ts +0 -49
- package/src/env/task/tools/delete-tool.ts +0 -43
- package/src/env/task/tools/get-tool.ts +0 -59
- package/src/env/task/tools/index.ts +0 -10
- package/src/env/task/tools/list-tool.ts +0 -40
- package/src/env/task/tools/operation/create-tool.ts +0 -48
- package/src/env/task/tools/operation/delete-tool.ts +0 -43
- package/src/env/task/tools/operation/get-tool.ts +0 -43
- package/src/env/task/tools/operation/index.ts +0 -9
- package/src/env/task/tools/operation/list-tool.ts +0 -40
- package/src/env/task/tools/operation/operation-tools.test.ts +0 -274
- package/src/env/task/tools/operation/operation-types.ts +0 -75
- package/src/env/task/tools/operation/update-tool.ts +0 -47
- package/src/env/task/tools/task-tools.test.ts +0 -203
- package/src/env/task/tools/task-types.test.ts +0 -75
- package/src/env/task/tools/task-types.ts +0 -68
- package/src/env/task/tools/update-tool.ts +0 -70
- package/src/env/task/types.ts +0 -160
- package/src/env/tool/built-in/bash.ts +0 -201
- package/src/env/tool/built-in/echo.ts +0 -29
- package/src/env/tool/built-in/edit-file.test.ts +0 -136
- package/src/env/tool/built-in/edit-file.ts +0 -92
- package/src/env/tool/built-in/glob.test.ts +0 -94
- package/src/env/tool/built-in/glob.ts +0 -65
- package/src/env/tool/built-in/grep.test.ts +0 -122
- package/src/env/tool/built-in/grep.ts +0 -108
- package/src/env/tool/built-in/index.ts +0 -44
- package/src/env/tool/built-in/read-file.test.ts +0 -84
- package/src/env/tool/built-in/read-file.ts +0 -75
- package/src/env/tool/built-in/write-file.test.ts +0 -119
- package/src/env/tool/built-in/write-file.ts +0 -68
- package/src/env/tool/index.ts +0 -24
- package/src/env/tool/registry.test.ts +0 -257
- package/src/env/tool/registry.ts +0 -167
- package/src/env/tool/tool-component.test.ts +0 -559
- package/src/env/tool/tool-component.ts +0 -563
- package/src/env/tool/tool-config-registration.test.ts +0 -249
- package/src/env/tool/tool-config-registration.ts +0 -46
- package/src/env/tool/types.ts +0 -267
- package/src/env/tool/validator.test.ts +0 -143
- package/src/env/tool/validator.ts +0 -44
- package/src/env/types.ts +0 -180
- package/src/env/workflow/ask-user-tool-registration.test.ts +0 -216
- package/src/env/workflow/complex-workflow.integration.test.ts +0 -1900
- package/src/env/workflow/decorators/decorator-node.ts +0 -229
- package/src/env/workflow/decorators/decorator.test.ts +0 -196
- package/src/env/workflow/decorators/edge.ts +0 -82
- package/src/env/workflow/decorators/index.ts +0 -31
- package/src/env/workflow/decorators/node-as.ts +0 -98
- package/src/env/workflow/decorators/workflow.ts +0 -54
- package/src/env/workflow/engine/dag-manager.test.ts +0 -570
- package/src/env/workflow/engine/dag-manager.ts +0 -594
- package/src/env/workflow/engine/engine.ts +0 -1422
- package/src/env/workflow/engine/event-bus.test.ts +0 -359
- package/src/env/workflow/engine/event-bus.ts +0 -156
- package/src/env/workflow/engine/executor-agent-session.test.ts +0 -84
- package/src/env/workflow/engine/executor.test.ts +0 -619
- package/src/env/workflow/engine/executor.ts +0 -593
- package/src/env/workflow/engine/index.ts +0 -24
- package/src/env/workflow/engine/node-registry.test.ts +0 -560
- package/src/env/workflow/engine/node-registry.ts +0 -289
- package/src/env/workflow/engine/resume-removed.test.ts +0 -22
- package/src/env/workflow/engine/scheduler.test.ts +0 -715
- package/src/env/workflow/engine/scheduler.ts +0 -318
- package/src/env/workflow/engine/workflow-engine.test.ts +0 -815
- package/src/env/workflow/extractor/workflow-converter.ts +0 -306
- package/src/env/workflow/fixtures.ts +0 -380
- package/src/env/workflow/index.ts +0 -38
- package/src/env/workflow/integration/run-resume-unified.test.ts +0 -186
- package/src/env/workflow/integration/service-integration.test.ts +0 -267
- package/src/env/workflow/metadata/keys.ts +0 -12
- package/src/env/workflow/nodes/agent-component-adapter.test.ts +0 -318
- package/src/env/workflow/nodes/agent-component-adapter.ts +0 -448
- package/src/env/workflow/nodes/agent-node.test.ts +0 -371
- package/src/env/workflow/nodes/agent-node.ts +0 -598
- package/src/env/workflow/nodes/ask-user-node.ts +0 -113
- package/src/env/workflow/nodes/condition-node.ts +0 -200
- package/src/env/workflow/nodes/index.ts +0 -9
- package/src/env/workflow/nodes/merge-node.ts +0 -141
- package/src/env/workflow/nodes/skill-node.test.ts +0 -253
- package/src/env/workflow/nodes/skill-node.ts +0 -393
- package/src/env/workflow/nodes/tool-node.test.ts +0 -251
- package/src/env/workflow/nodes/tool-node.ts +0 -493
- package/src/env/workflow/nodes/workflow-llm-history.test.ts +0 -455
- package/src/env/workflow/nodes/workflow-node.test.ts +0 -315
- package/src/env/workflow/nodes/workflow-node.ts +0 -311
- package/src/env/workflow/service/index.ts +0 -27
- package/src/env/workflow/service/registry.test.ts +0 -133
- package/src/env/workflow/service/registry.ts +0 -71
- package/src/env/workflow/service/workflow-service.test.ts +0 -310
- package/src/env/workflow/service/workflow-service.ts +0 -393
- package/src/env/workflow/storage/index.ts +0 -28
- package/src/env/workflow/storage/mock-repositories.ts +0 -385
- package/src/env/workflow/storage/sqlite.test.ts +0 -179
- package/src/env/workflow/storage/sqlite.ts +0 -163
- package/src/env/workflow/storage/workflow-repo.test.ts +0 -780
- package/src/env/workflow/storage/workflow-repo.ts +0 -342
- package/src/env/workflow/tools/ask-user-tool.ts +0 -82
- package/src/env/workflow/tools/index.ts +0 -26
- package/src/env/workflow/tools/run-workflow.test.ts +0 -352
- package/src/env/workflow/tools/run-workflow.ts +0 -214
- package/src/env/workflow/types/context.ts +0 -18
- package/src/env/workflow/types/decorators-types.ts +0 -198
- package/src/env/workflow/types/event.test.ts +0 -515
- package/src/env/workflow/types/event.ts +0 -193
- package/src/env/workflow/types/index.ts +0 -49
- package/src/env/workflow/types/run.test.ts +0 -437
- package/src/env/workflow/types/run.ts +0 -173
- package/src/env/workflow/types/workflow-hil.ts +0 -114
- package/src/env/workflow/types/workflow-message.test.ts +0 -138
- package/src/env/workflow/types/workflow-message.ts +0 -196
- package/src/env/workflow/types/workflow-session.test.ts +0 -95
- package/src/env/workflow/types/workflow-session.ts +0 -59
- package/src/env/workflow/types/workflow.test.ts +0 -495
- package/src/env/workflow/types/workflow.ts +0 -195
- package/src/env/workflow/types_compat.ts +0 -51
- package/src/env/workflow/utils/create-workflow.ts +0 -47
- package/src/env/workflow/utils/execution-state.ts +0 -245
- package/src/env/workflow/utils/index.ts +0 -18
- package/src/env/workflow/utils/node-registry-helper.ts +0 -58
- package/src/env/workflow/utils/recovery-validator.test.ts +0 -460
- package/src/env/workflow/utils/recovery-validator.ts +0 -377
- package/src/env/workflow/utils/session-parser.test.ts +0 -111
- package/src/env/workflow/utils/session-parser.ts +0 -94
- package/src/env/workflow/utils/session-recovery.test.ts +0 -334
- package/src/env/workflow/utils/session-recovery.ts +0 -188
- package/src/env/workflow/utils/template-resolver.test.ts +0 -258
- package/src/env/workflow/utils/template-resolver.ts +0 -436
- package/src/env/workflow/utils/validation-rules.ts +0 -149
- package/src/env/workflow/workflow-component.ts +0 -544
- package/src/index.ts +0 -422
- package/src/utils/id.ts +0 -21
|
@@ -1,393 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* WorkflowService - Session-based Workflow Execution
|
|
3
|
-
*
|
|
4
|
-
* After session-based refactoring, workflow runs are managed via SessionComponent.
|
|
5
|
-
* The workflows table is still used for storing workflow definitions.
|
|
6
|
-
*
|
|
7
|
-
* Key concepts:
|
|
8
|
-
* - Session IS a workflow run (no separate runId concept)
|
|
9
|
-
* - Session.metadata stores workflow run state (status, input, agentSessions)
|
|
10
|
-
* - Session.messages stores node execution history with workflow.node.* roles
|
|
11
|
-
* - Resume is based on session state and messages
|
|
12
|
-
*/
|
|
13
|
-
|
|
14
|
-
import type {
|
|
15
|
-
Workflow,
|
|
16
|
-
WorkflowDefinition,
|
|
17
|
-
RunOptions,
|
|
18
|
-
RunResult,
|
|
19
|
-
RunStatus,
|
|
20
|
-
WorkflowMetadata,
|
|
21
|
-
WorkflowConfig,
|
|
22
|
-
} from '../types';
|
|
23
|
-
|
|
24
|
-
// Repository interfaces (abstraction for storage layer)
|
|
25
|
-
export interface WorkflowRepository {
|
|
26
|
-
create(workflow: Omit<Workflow, 'id' | 'createdAt' | 'updatedAt'>): Workflow;
|
|
27
|
-
getById(id: string): Workflow | null;
|
|
28
|
-
getByName(name: string): Workflow | null;
|
|
29
|
-
list(options?: ListOptions): Workflow[];
|
|
30
|
-
update(id: string, updates: Partial<Workflow>): Workflow | null;
|
|
31
|
-
delete(id: string): boolean;
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
// Need NodeDefinition for addNode
|
|
35
|
-
import type { NodeDefinition } from '../types';
|
|
36
|
-
|
|
37
|
-
// ==================== Options Interfaces ====================
|
|
38
|
-
|
|
39
|
-
export interface CreateOptions {
|
|
40
|
-
tags?: string[];
|
|
41
|
-
metadata?: WorkflowMetadata;
|
|
42
|
-
taskId?: number;
|
|
43
|
-
force?: boolean;
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
export interface ListOptions {
|
|
47
|
-
tag?: string;
|
|
48
|
-
taskId?: number;
|
|
49
|
-
search?: string;
|
|
50
|
-
limit?: number;
|
|
51
|
-
offset?: number;
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
export interface WorkflowUpdates {
|
|
55
|
-
definition?: WorkflowDefinition;
|
|
56
|
-
config?: WorkflowConfig;
|
|
57
|
-
tags?: string[];
|
|
58
|
-
metadata?: WorkflowMetadata;
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
// Engine interface (abstraction for workflow execution)
|
|
62
|
-
// Note: Unified run() handles both fresh start and resume from session
|
|
63
|
-
// Note: pause is triggered internally by interrupts, not a manual operation
|
|
64
|
-
export interface WorkflowEngine {
|
|
65
|
-
createSession(
|
|
66
|
-
workflowId: string,
|
|
67
|
-
options?: { input?: Record<string, any>; workflowName?: string; workflowVersion?: string }
|
|
68
|
-
): Promise<string>;
|
|
69
|
-
|
|
70
|
-
run(sessionId: string, options?: RunOptions): Promise<RunResult>;
|
|
71
|
-
runWorkflow(workflow: Workflow | WorkflowDefinition, options?: RunOptions): Promise<RunResult>;
|
|
72
|
-
stop(sessionId: string, reason?: string): Promise<void>;
|
|
73
|
-
addNode(sessionId: string, nodeDefinition: NodeDefinition): Promise<void>;
|
|
74
|
-
removeNode(sessionId: string, nodeId: string): Promise<void>;
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
// Engine factory type for creating new engine instances per run
|
|
78
|
-
export type WorkflowEngineFactory = (
|
|
79
|
-
workflow: Workflow,
|
|
80
|
-
options?: RunOptions
|
|
81
|
-
) => Pick<WorkflowEngine, 'run' | 'stop' | 'runWorkflow'>;
|
|
82
|
-
|
|
83
|
-
// Session types
|
|
84
|
-
export interface SessionInfo {
|
|
85
|
-
id: string;
|
|
86
|
-
title: string;
|
|
87
|
-
metadata: WorkflowSessionMetadata;
|
|
88
|
-
createdAt: Date;
|
|
89
|
-
updatedAt: Date;
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
export interface WorkflowSessionMetadata {
|
|
93
|
-
type: 'workflow';
|
|
94
|
-
runId?: string; // Legacy runId for compatibility
|
|
95
|
-
workflowId?: string;
|
|
96
|
-
workflowName: string;
|
|
97
|
-
workflowVersion?: string;
|
|
98
|
-
status: 'running' | 'paused' | 'completed' | 'failed';
|
|
99
|
-
input?: any;
|
|
100
|
-
rootNodeId?: string;
|
|
101
|
-
agentSessions?: AgentSessionRef[];
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
export interface AgentSessionRef {
|
|
105
|
-
nodeId: string;
|
|
106
|
-
sessionId: string;
|
|
107
|
-
status: 'active' | 'paused' | 'completed';
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
// ==================== WorkflowService ====================
|
|
111
|
-
|
|
112
|
-
export class WorkflowService {
|
|
113
|
-
constructor(
|
|
114
|
-
private workflowRepository: WorkflowRepository,
|
|
115
|
-
private engineFactory: WorkflowEngineFactory,
|
|
116
|
-
private sessionComponent?: {
|
|
117
|
-
create(options: { id?: string; title: string; metadata: any }): Promise<{ id: string }>;
|
|
118
|
-
get(id: string): Promise<SessionInfo | null | undefined>;
|
|
119
|
-
list?(options?: { limit?: number; offset?: number }): Promise<SessionInfo[]>;
|
|
120
|
-
update(id: string, updates: { metadata?: any }): Promise<boolean>;
|
|
121
|
-
addMessage(sessionId: string, message: any): Promise<string>;
|
|
122
|
-
getMessages(sessionId: string): Promise<any[]>;
|
|
123
|
-
}
|
|
124
|
-
) {}
|
|
125
|
-
|
|
126
|
-
// ==================== Workflow CRUD ====================
|
|
127
|
-
|
|
128
|
-
/**
|
|
129
|
-
* Create a new workflow from definition
|
|
130
|
-
*/
|
|
131
|
-
async createWorkflow(
|
|
132
|
-
definition: WorkflowDefinition,
|
|
133
|
-
options?: CreateOptions
|
|
134
|
-
): Promise<Workflow> {
|
|
135
|
-
// Check if workflow with same name exists
|
|
136
|
-
const existing = this.workflowRepository.getByName(definition.name);
|
|
137
|
-
|
|
138
|
-
if (existing) {
|
|
139
|
-
if (options?.force !== true) {
|
|
140
|
-
throw new Error(`Workflow already exists: ${definition.name}`);
|
|
141
|
-
}
|
|
142
|
-
// Update existing workflow
|
|
143
|
-
return this.workflowRepository.update(existing.id, {
|
|
144
|
-
name: definition.name,
|
|
145
|
-
version: definition.version,
|
|
146
|
-
description: definition.description || existing.description,
|
|
147
|
-
definition,
|
|
148
|
-
config: definition.config || {},
|
|
149
|
-
metadata: {
|
|
150
|
-
...options.metadata || definition.metadata || existing.metadata || {},
|
|
151
|
-
taskId: options.taskId || definition.metadata?.taskId || existing.metadata?.taskId,
|
|
152
|
-
},
|
|
153
|
-
tags: options.tags || definition.metadata?.tags || [],
|
|
154
|
-
})!;
|
|
155
|
-
}
|
|
156
|
-
|
|
157
|
-
// Create new workflow
|
|
158
|
-
const workflow: Omit<Workflow, 'id' | 'createdAt' | 'updatedAt'> = {
|
|
159
|
-
name: definition.name,
|
|
160
|
-
version: definition.version,
|
|
161
|
-
description: definition.description,
|
|
162
|
-
definition,
|
|
163
|
-
config: definition.config || {},
|
|
164
|
-
metadata: {
|
|
165
|
-
...options?.metadata || definition.metadata || {},
|
|
166
|
-
taskId: options?.taskId || definition.metadata?.taskId,
|
|
167
|
-
},
|
|
168
|
-
tags: options?.tags || definition.metadata?.tags || [],
|
|
169
|
-
};
|
|
170
|
-
|
|
171
|
-
return this.workflowRepository.create(workflow);
|
|
172
|
-
}
|
|
173
|
-
|
|
174
|
-
/**
|
|
175
|
-
* Get workflow by id or name
|
|
176
|
-
*/
|
|
177
|
-
getWorkflow(idOrName: string): Workflow | null {
|
|
178
|
-
// Try by id first
|
|
179
|
-
let workflow = this.workflowRepository.getById(idOrName);
|
|
180
|
-
if (workflow) return workflow;
|
|
181
|
-
|
|
182
|
-
// Then try by name
|
|
183
|
-
return this.workflowRepository.getByName(idOrName);
|
|
184
|
-
}
|
|
185
|
-
|
|
186
|
-
/**
|
|
187
|
-
* Get workflow by id
|
|
188
|
-
*/
|
|
189
|
-
getWorkflowById(id: string): Workflow | null {
|
|
190
|
-
return this.workflowRepository.getById(id);
|
|
191
|
-
}
|
|
192
|
-
|
|
193
|
-
/**
|
|
194
|
-
* Get workflow by name
|
|
195
|
-
*/
|
|
196
|
-
getWorkflowByName(name: string): Workflow | null {
|
|
197
|
-
return this.workflowRepository.getByName(name);
|
|
198
|
-
}
|
|
199
|
-
|
|
200
|
-
/**
|
|
201
|
-
* List workflows with optional filters
|
|
202
|
-
*/
|
|
203
|
-
listWorkflows(options?: ListOptions): Workflow[] {
|
|
204
|
-
return this.workflowRepository.list(options);
|
|
205
|
-
}
|
|
206
|
-
|
|
207
|
-
/**
|
|
208
|
-
* Update an existing workflow
|
|
209
|
-
*/
|
|
210
|
-
async updateWorkflow(
|
|
211
|
-
idOrName: string,
|
|
212
|
-
updates: WorkflowUpdates,
|
|
213
|
-
options?: { tags?: string[] }
|
|
214
|
-
): Promise<Workflow> {
|
|
215
|
-
// Find the workflow
|
|
216
|
-
let workflow = this.workflowRepository.getByName(idOrName);
|
|
217
|
-
if (!workflow) {
|
|
218
|
-
workflow = this.workflowRepository.getById(idOrName);
|
|
219
|
-
}
|
|
220
|
-
|
|
221
|
-
if (!workflow) {
|
|
222
|
-
throw new Error(`Workflow not found: ${idOrName}`);
|
|
223
|
-
}
|
|
224
|
-
|
|
225
|
-
const updateData: Partial<Workflow> = {
|
|
226
|
-
...updates,
|
|
227
|
-
};
|
|
228
|
-
|
|
229
|
-
if (options?.tags !== undefined) {
|
|
230
|
-
updateData.tags = options.tags;
|
|
231
|
-
}
|
|
232
|
-
|
|
233
|
-
const updated = this.workflowRepository.update(workflow.id, updateData);
|
|
234
|
-
if (!updated) {
|
|
235
|
-
throw new Error(`Failed to update workflow: ${idOrName}`);
|
|
236
|
-
}
|
|
237
|
-
|
|
238
|
-
return updated;
|
|
239
|
-
}
|
|
240
|
-
|
|
241
|
-
/**
|
|
242
|
-
* Delete a workflow by name or id
|
|
243
|
-
*/
|
|
244
|
-
async deleteWorkflow(idOrName: string): Promise<boolean> {
|
|
245
|
-
// Find the workflow
|
|
246
|
-
let workflow = this.workflowRepository.getByName(idOrName);
|
|
247
|
-
if (!workflow) {
|
|
248
|
-
workflow = this.workflowRepository.getById(idOrName);
|
|
249
|
-
}
|
|
250
|
-
|
|
251
|
-
if (!workflow) {
|
|
252
|
-
return false;
|
|
253
|
-
}
|
|
254
|
-
|
|
255
|
-
return this.workflowRepository.delete(workflow.id);
|
|
256
|
-
}
|
|
257
|
-
|
|
258
|
-
// ==================== Workflow Execution (Session-based) ====================
|
|
259
|
-
|
|
260
|
-
/**
|
|
261
|
-
* Run a workflow by definition or name
|
|
262
|
-
*
|
|
263
|
-
* This creates a Session that represents the workflow run.
|
|
264
|
-
* The Session ID is used as the run identifier for pause/resume.
|
|
265
|
-
*/
|
|
266
|
-
async runWorkflow(
|
|
267
|
-
idOrNameOrDefinition: string | WorkflowDefinition,
|
|
268
|
-
input?: Record<string, any>,
|
|
269
|
-
options?: RunOptions
|
|
270
|
-
): Promise<RunResult> {
|
|
271
|
-
// Resolve workflow
|
|
272
|
-
let workflow: Workflow | null = null;
|
|
273
|
-
let definition: WorkflowDefinition | null = null;
|
|
274
|
-
|
|
275
|
-
if (typeof idOrNameOrDefinition === 'string') {
|
|
276
|
-
// Running by name - workflow must exist
|
|
277
|
-
workflow = this.getWorkflow(idOrNameOrDefinition);
|
|
278
|
-
if (!workflow) {
|
|
279
|
-
throw new Error(`Workflow not found: ${idOrNameOrDefinition}`);
|
|
280
|
-
}
|
|
281
|
-
definition = workflow.definition;
|
|
282
|
-
} else {
|
|
283
|
-
// Running by definition - create inline workflow if needed
|
|
284
|
-
definition = idOrNameOrDefinition;
|
|
285
|
-
workflow = this.getWorkflowByName(definition.name);
|
|
286
|
-
|
|
287
|
-
// If workflow doesn't exist, create a temporary one for execution
|
|
288
|
-
if (!workflow) {
|
|
289
|
-
workflow = {
|
|
290
|
-
id: `wf_inline_${definition.name}`,
|
|
291
|
-
name: definition.name,
|
|
292
|
-
version: definition.version,
|
|
293
|
-
description: definition.description,
|
|
294
|
-
definition,
|
|
295
|
-
config: definition.config || {},
|
|
296
|
-
metadata: definition.metadata || {},
|
|
297
|
-
tags: definition.metadata?.tags || [],
|
|
298
|
-
createdAt: new Date(),
|
|
299
|
-
updatedAt: new Date(),
|
|
300
|
-
};
|
|
301
|
-
}
|
|
302
|
-
}
|
|
303
|
-
|
|
304
|
-
// Create engine and run workflow directly
|
|
305
|
-
// Note: engine.runWorkflow() handles session creation and state management
|
|
306
|
-
const engine = this.engineFactory(workflow, {
|
|
307
|
-
...options,
|
|
308
|
-
input,
|
|
309
|
-
});
|
|
310
|
-
|
|
311
|
-
// Run the workflow (this creates the session internally)
|
|
312
|
-
const result = await engine.runWorkflow(workflow, {
|
|
313
|
-
...options,
|
|
314
|
-
input,
|
|
315
|
-
});
|
|
316
|
-
|
|
317
|
-
return {
|
|
318
|
-
...result,
|
|
319
|
-
runId: result.runId || result.sessionId || '',
|
|
320
|
-
sessionId: result.sessionId || result.runId || '',
|
|
321
|
-
};
|
|
322
|
-
}
|
|
323
|
-
|
|
324
|
-
/**
|
|
325
|
-
* Run workflow by name (convenience method)
|
|
326
|
-
*/
|
|
327
|
-
async runWorkflowByName(
|
|
328
|
-
name: string,
|
|
329
|
-
input?: Record<string, any>,
|
|
330
|
-
options?: RunOptions
|
|
331
|
-
): Promise<RunResult> {
|
|
332
|
-
const workflow = this.getWorkflowByName(name);
|
|
333
|
-
if (!workflow) {
|
|
334
|
-
throw new Error(`Workflow not found: ${name}`);
|
|
335
|
-
}
|
|
336
|
-
|
|
337
|
-
return this.runWorkflow(name, input, options);
|
|
338
|
-
}
|
|
339
|
-
|
|
340
|
-
/**
|
|
341
|
-
* Stop a running workflow session
|
|
342
|
-
*/
|
|
343
|
-
async stopRun(sessionId: string, reason?: string): Promise<void> {
|
|
344
|
-
const session = await this.sessionComponent?.get(sessionId);
|
|
345
|
-
if (!session) {
|
|
346
|
-
throw new Error(`Session not found: ${sessionId}`);
|
|
347
|
-
}
|
|
348
|
-
|
|
349
|
-
const metadata = session.metadata as WorkflowSessionMetadata;
|
|
350
|
-
if (metadata.type !== 'workflow') {
|
|
351
|
-
throw new Error(`Session is not a workflow session: ${sessionId}`);
|
|
352
|
-
}
|
|
353
|
-
|
|
354
|
-
const workflow = this.getWorkflowByName(metadata.workflowName);
|
|
355
|
-
if (!workflow) {
|
|
356
|
-
throw new Error(`Workflow not found: ${metadata.workflowName}`);
|
|
357
|
-
}
|
|
358
|
-
|
|
359
|
-
const engine = this.engineFactory(workflow);
|
|
360
|
-
await engine.stop(sessionId, reason);
|
|
361
|
-
}
|
|
362
|
-
|
|
363
|
-
/**
|
|
364
|
-
* Get workflow session by ID
|
|
365
|
-
*/
|
|
366
|
-
async getSession(sessionId: string): Promise<SessionInfo | null> {
|
|
367
|
-
if (!this.sessionComponent) {
|
|
368
|
-
return null;
|
|
369
|
-
}
|
|
370
|
-
const session = await this.sessionComponent.get(sessionId);
|
|
371
|
-
return session ?? null;
|
|
372
|
-
}
|
|
373
|
-
|
|
374
|
-
/**
|
|
375
|
-
* List workflow sessions
|
|
376
|
-
*/
|
|
377
|
-
async listSessions(options?: { limit?: number; offset?: number }): Promise<SessionInfo[]> {
|
|
378
|
-
if (!this.sessionComponent?.list) {
|
|
379
|
-
return [];
|
|
380
|
-
}
|
|
381
|
-
return this.sessionComponent.list(options);
|
|
382
|
-
}
|
|
383
|
-
|
|
384
|
-
/**
|
|
385
|
-
* Get messages from a workflow session
|
|
386
|
-
*/
|
|
387
|
-
async getSessionMessages(sessionId: string): Promise<any[]> {
|
|
388
|
-
if (!this.sessionComponent) {
|
|
389
|
-
return [];
|
|
390
|
-
}
|
|
391
|
-
return this.sessionComponent.getMessages(sessionId);
|
|
392
|
-
}
|
|
393
|
-
}
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @fileoverview Workflow Storage Module
|
|
3
|
-
*
|
|
4
|
-
* Re-exports all storage components for the workflow component.
|
|
5
|
-
*
|
|
6
|
-
* Note: After session-based refactoring, workflow runs are now managed via SessionComponent.
|
|
7
|
-
* The workflows table is still used for storing workflow definitions.
|
|
8
|
-
*/
|
|
9
|
-
|
|
10
|
-
// SQLite database utilities
|
|
11
|
-
export {
|
|
12
|
-
getDatabase,
|
|
13
|
-
closeDatabase,
|
|
14
|
-
initializeTables,
|
|
15
|
-
getDatabasePath,
|
|
16
|
-
resetDatabase,
|
|
17
|
-
initDatabase,
|
|
18
|
-
type BunDatabase,
|
|
19
|
-
} from './sqlite';
|
|
20
|
-
|
|
21
|
-
// Workflow Repository
|
|
22
|
-
export {
|
|
23
|
-
WorkflowRepository,
|
|
24
|
-
rowToWorkflow,
|
|
25
|
-
type WorkflowRow,
|
|
26
|
-
type ListWorkflowsOptions,
|
|
27
|
-
type UpdateWorkflowOptions,
|
|
28
|
-
} from './workflow-repo';
|