@ai-setting/roy-agent-core 1.3.10 → 1.3.14
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,318 +0,0 @@
|
|
|
1
|
-
import { DAGManager } from './dag-manager';
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Scheduler Options
|
|
5
|
-
*/
|
|
6
|
-
export interface SchedulerOptions {
|
|
7
|
-
/** Maximum number of nodes that can run in parallel. null = unlimited */
|
|
8
|
-
parallelLimit: number | null;
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
/**
|
|
12
|
-
* Scheduler State
|
|
13
|
-
*/
|
|
14
|
-
export interface SchedulerState {
|
|
15
|
-
/** Nodes that have not been started yet */
|
|
16
|
-
pending: string[];
|
|
17
|
-
/** Nodes that are ready to execute (dependencies met, not started) */
|
|
18
|
-
ready: string[];
|
|
19
|
-
/** Nodes that are currently running */
|
|
20
|
-
running: string[];
|
|
21
|
-
/** Nodes that have completed successfully */
|
|
22
|
-
completed: string[];
|
|
23
|
-
/** Nodes that have failed */
|
|
24
|
-
failed: string[];
|
|
25
|
-
/** Nodes that were skipped (not executed) */
|
|
26
|
-
skipped: string[];
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
/**
|
|
30
|
-
* Scheduler
|
|
31
|
-
*
|
|
32
|
-
* Determines which nodes are ready to execute based on:
|
|
33
|
-
* - DAG dependencies
|
|
34
|
-
* - Parallel execution limit
|
|
35
|
-
* - Node completion status
|
|
36
|
-
*
|
|
37
|
-
* The scheduler tracks the state of all nodes and manages the execution queue.
|
|
38
|
-
*/
|
|
39
|
-
export class Scheduler {
|
|
40
|
-
private dagManager: DAGManager;
|
|
41
|
-
private options: SchedulerOptions;
|
|
42
|
-
|
|
43
|
-
// Node state tracking
|
|
44
|
-
private pending: Set<string> = new Set();
|
|
45
|
-
private ready: Set<string> = new Set();
|
|
46
|
-
private running: Set<string> = new Set();
|
|
47
|
-
private completed: Set<string> = new Set();
|
|
48
|
-
private failed: Set<string> = new Set();
|
|
49
|
-
private skipped: Set<string> = new Set();
|
|
50
|
-
|
|
51
|
-
/**
|
|
52
|
-
* Create a new Scheduler
|
|
53
|
-
* @param dagManager - The DAG manager for the workflow
|
|
54
|
-
* @param options - Scheduler options
|
|
55
|
-
*/
|
|
56
|
-
constructor(dagManager: DAGManager, options?: Partial<SchedulerOptions>) {
|
|
57
|
-
this.dagManager = dagManager;
|
|
58
|
-
// Use explicit undefined check to preserve null as valid value
|
|
59
|
-
const parallelLimit = options?.parallelLimit;
|
|
60
|
-
this.options = {
|
|
61
|
-
parallelLimit: parallelLimit === undefined ? 1 : parallelLimit,
|
|
62
|
-
};
|
|
63
|
-
|
|
64
|
-
// Initialize pending set with all nodes
|
|
65
|
-
const analysis = dagManager.analyze();
|
|
66
|
-
for (const nodeId of analysis.dependencies.keys()) {
|
|
67
|
-
this.pending.add(nodeId);
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
// Calculate initial ready nodes
|
|
71
|
-
this.updateReadyNodes(new Set());
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
/**
|
|
75
|
-
* Get nodes that are ready to execute
|
|
76
|
-
* Ready nodes are those whose dependencies are met and are not already running/completed/failed
|
|
77
|
-
* @param completedNodes - Set of completed node IDs (external tracking)
|
|
78
|
-
*/
|
|
79
|
-
getReadyNodes(completedNodes: Set<string>): string[] {
|
|
80
|
-
// Calculate all completed nodes (including those tracked internally)
|
|
81
|
-
const allCompleted = new Set(completedNodes);
|
|
82
|
-
for (const nodeId of this.completed) {
|
|
83
|
-
allCompleted.add(nodeId);
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
// Get ready nodes from DAG manager
|
|
87
|
-
const readyFromDag = this.dagManager.getReadyNodes(allCompleted);
|
|
88
|
-
|
|
89
|
-
// Filter out nodes that are already running, completed, failed, or skipped
|
|
90
|
-
// Also ensure the node is in pending or ready state (not already processed)
|
|
91
|
-
const ready: string[] = [];
|
|
92
|
-
for (const nodeId of readyFromDag) {
|
|
93
|
-
const isProcessed = this.running.has(nodeId) ||
|
|
94
|
-
this.completed.has(nodeId) ||
|
|
95
|
-
this.failed.has(nodeId) ||
|
|
96
|
-
this.skipped.has(nodeId);
|
|
97
|
-
|
|
98
|
-
if (!isProcessed) {
|
|
99
|
-
ready.push(nodeId);
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
// Sort for deterministic order
|
|
104
|
-
return ready.sort();
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
/**
|
|
108
|
-
* Get the number of currently running nodes
|
|
109
|
-
*/
|
|
110
|
-
getRunningCount(): number {
|
|
111
|
-
return this.running.size;
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
/**
|
|
115
|
-
* Check if more nodes can be started based on the parallel limit
|
|
116
|
-
*/
|
|
117
|
-
canStartMore(): boolean {
|
|
118
|
-
// null means unlimited
|
|
119
|
-
if (this.options.parallelLimit === null) {
|
|
120
|
-
return true;
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
if (this.options.parallelLimit <= 0) {
|
|
124
|
-
return false;
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
return this.running.size < this.options.parallelLimit;
|
|
128
|
-
}
|
|
129
|
-
|
|
130
|
-
/**
|
|
131
|
-
* Mark a node as started
|
|
132
|
-
* @param nodeId - The node ID
|
|
133
|
-
*/
|
|
134
|
-
markStarted(nodeId: string): void {
|
|
135
|
-
// Only track if not already running
|
|
136
|
-
if (!this.running.has(nodeId)) {
|
|
137
|
-
this.running.add(nodeId);
|
|
138
|
-
this.ready.delete(nodeId);
|
|
139
|
-
this.pending.delete(nodeId);
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
/**
|
|
144
|
-
* Check if a node is currently running
|
|
145
|
-
* @param nodeId - The node ID
|
|
146
|
-
*/
|
|
147
|
-
isRunning(nodeId: string): boolean {
|
|
148
|
-
return this.running.has(nodeId);
|
|
149
|
-
}
|
|
150
|
-
|
|
151
|
-
/**
|
|
152
|
-
* Check if a node has completed
|
|
153
|
-
* @param nodeId - The node ID
|
|
154
|
-
*/
|
|
155
|
-
isCompleted(nodeId: string): boolean {
|
|
156
|
-
return this.completed.has(nodeId);
|
|
157
|
-
}
|
|
158
|
-
|
|
159
|
-
/**
|
|
160
|
-
* Check if a node has failed
|
|
161
|
-
* @param nodeId - The node ID
|
|
162
|
-
*/
|
|
163
|
-
isFailed(nodeId: string): boolean {
|
|
164
|
-
return this.failed.has(nodeId);
|
|
165
|
-
}
|
|
166
|
-
|
|
167
|
-
/**
|
|
168
|
-
* Check if a node is in pending state
|
|
169
|
-
* @param nodeId - The node ID
|
|
170
|
-
*/
|
|
171
|
-
isPending(nodeId: string): boolean {
|
|
172
|
-
return this.pending.has(nodeId);
|
|
173
|
-
}
|
|
174
|
-
|
|
175
|
-
/**
|
|
176
|
-
* Check if a node is ready to execute
|
|
177
|
-
* @param nodeId - The node ID
|
|
178
|
-
*/
|
|
179
|
-
isReady(nodeId: string): boolean {
|
|
180
|
-
return this.ready.has(nodeId);
|
|
181
|
-
}
|
|
182
|
-
|
|
183
|
-
/**
|
|
184
|
-
* Mark a node as completed successfully
|
|
185
|
-
* @param nodeId - The node ID
|
|
186
|
-
*/
|
|
187
|
-
markCompleted(nodeId: string): void {
|
|
188
|
-
// Remove from other states
|
|
189
|
-
this.running.delete(nodeId);
|
|
190
|
-
this.ready.delete(nodeId);
|
|
191
|
-
this.pending.delete(nodeId);
|
|
192
|
-
this.failed.delete(nodeId);
|
|
193
|
-
this.skipped.delete(nodeId);
|
|
194
|
-
|
|
195
|
-
// Add to completed
|
|
196
|
-
this.completed.add(nodeId);
|
|
197
|
-
}
|
|
198
|
-
|
|
199
|
-
/**
|
|
200
|
-
* Mark a node as failed
|
|
201
|
-
* @param nodeId - The node ID
|
|
202
|
-
*/
|
|
203
|
-
markFailed(nodeId: string): void {
|
|
204
|
-
// Remove from any other state
|
|
205
|
-
this.running.delete(nodeId);
|
|
206
|
-
this.ready.delete(nodeId);
|
|
207
|
-
this.pending.delete(nodeId);
|
|
208
|
-
this.completed.delete(nodeId);
|
|
209
|
-
this.skipped.delete(nodeId);
|
|
210
|
-
|
|
211
|
-
// Add to failed
|
|
212
|
-
this.failed.add(nodeId);
|
|
213
|
-
}
|
|
214
|
-
|
|
215
|
-
/**
|
|
216
|
-
* Mark a node as skipped (not executed)
|
|
217
|
-
* @param nodeId - The node ID
|
|
218
|
-
*/
|
|
219
|
-
markSkipped(nodeId: string): void {
|
|
220
|
-
if (this.running.has(nodeId)) {
|
|
221
|
-
this.running.delete(nodeId);
|
|
222
|
-
}
|
|
223
|
-
if (this.ready.has(nodeId)) {
|
|
224
|
-
this.ready.delete(nodeId);
|
|
225
|
-
}
|
|
226
|
-
if (this.pending.has(nodeId)) {
|
|
227
|
-
this.pending.delete(nodeId);
|
|
228
|
-
}
|
|
229
|
-
this.skipped.add(nodeId);
|
|
230
|
-
}
|
|
231
|
-
|
|
232
|
-
/**
|
|
233
|
-
* Reset the scheduler state
|
|
234
|
-
* Clears all running, completed, failed, and skipped nodes
|
|
235
|
-
*/
|
|
236
|
-
reset(): void {
|
|
237
|
-
this.running.clear();
|
|
238
|
-
this.completed.clear();
|
|
239
|
-
this.failed.clear();
|
|
240
|
-
this.skipped.clear();
|
|
241
|
-
|
|
242
|
-
// Rebuild pending and ready from DAG analysis
|
|
243
|
-
const analysis = this.dagManager.analyze();
|
|
244
|
-
|
|
245
|
-
this.pending.clear();
|
|
246
|
-
this.ready.clear();
|
|
247
|
-
|
|
248
|
-
for (const nodeId of analysis.dependencies.keys()) {
|
|
249
|
-
this.pending.add(nodeId);
|
|
250
|
-
}
|
|
251
|
-
|
|
252
|
-
this.updateReadyNodes(new Set());
|
|
253
|
-
}
|
|
254
|
-
|
|
255
|
-
/**
|
|
256
|
-
* Get the current state of the scheduler
|
|
257
|
-
*/
|
|
258
|
-
getState(): SchedulerState {
|
|
259
|
-
// Rebuild ready set based on current state
|
|
260
|
-
this.updateReadyNodes(new Set());
|
|
261
|
-
|
|
262
|
-
return {
|
|
263
|
-
pending: Array.from(this.pending).sort(),
|
|
264
|
-
ready: Array.from(this.ready).sort(),
|
|
265
|
-
running: Array.from(this.running).sort(),
|
|
266
|
-
completed: Array.from(this.completed).sort(),
|
|
267
|
-
failed: Array.from(this.failed).sort(),
|
|
268
|
-
skipped: Array.from(this.skipped).sort(),
|
|
269
|
-
};
|
|
270
|
-
}
|
|
271
|
-
|
|
272
|
-
/**
|
|
273
|
-
* Update the ready set based on completed nodes
|
|
274
|
-
*/
|
|
275
|
-
private updateReadyNodes(completedNodes: Set<string>): void {
|
|
276
|
-
const allCompleted = new Set(completedNodes);
|
|
277
|
-
for (const nodeId of this.completed) {
|
|
278
|
-
allCompleted.add(nodeId);
|
|
279
|
-
}
|
|
280
|
-
|
|
281
|
-
// Get all node IDs
|
|
282
|
-
const analysis = this.dagManager.analyze();
|
|
283
|
-
const allNodeIds = Array.from(analysis.dependencies.keys());
|
|
284
|
-
|
|
285
|
-
// Clear and rebuild ready set
|
|
286
|
-
this.ready.clear();
|
|
287
|
-
|
|
288
|
-
for (const nodeId of allNodeIds) {
|
|
289
|
-
// Skip if already in some terminal or transitional state
|
|
290
|
-
if (this.running.has(nodeId) ||
|
|
291
|
-
this.completed.has(nodeId) ||
|
|
292
|
-
this.failed.has(nodeId) ||
|
|
293
|
-
this.skipped.has(nodeId)) {
|
|
294
|
-
continue;
|
|
295
|
-
}
|
|
296
|
-
|
|
297
|
-
// Check if dependencies are met
|
|
298
|
-
if (this.dagManager.areDependenciesMet(nodeId, allCompleted)) {
|
|
299
|
-
this.ready.add(nodeId);
|
|
300
|
-
}
|
|
301
|
-
}
|
|
302
|
-
}
|
|
303
|
-
|
|
304
|
-
/**
|
|
305
|
-
* Get the parallel limit
|
|
306
|
-
*/
|
|
307
|
-
getParallelLimit(): number | null {
|
|
308
|
-
return this.options.parallelLimit;
|
|
309
|
-
}
|
|
310
|
-
|
|
311
|
-
/**
|
|
312
|
-
* Update the parallel limit
|
|
313
|
-
* @param limit - New parallel limit (null for unlimited)
|
|
314
|
-
*/
|
|
315
|
-
setParallelLimit(limit: number | null): void {
|
|
316
|
-
this.options.parallelLimit = limit;
|
|
317
|
-
}
|
|
318
|
-
}
|