@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,318 +0,0 @@
|
|
|
1
|
-
import { describe, it, expect, beforeEach, vi } from 'bun:test';
|
|
2
|
-
import { AgentComponentAdapter, type PendingAgentSession } from './agent-component-adapter';
|
|
3
|
-
|
|
4
|
-
// Custom AskUserError for testing
|
|
5
|
-
class AskUserError extends Error {
|
|
6
|
-
readonly type = 'ask-user';
|
|
7
|
-
constructor(
|
|
8
|
-
public readonly runId: string,
|
|
9
|
-
public readonly sessionId: string,
|
|
10
|
-
public readonly nodeId: string,
|
|
11
|
-
public readonly nodeType: string,
|
|
12
|
-
public readonly query: string
|
|
13
|
-
) {
|
|
14
|
-
super(`Ask user: ${query}`);
|
|
15
|
-
this.name = 'AskUserError';
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
// Mock AgentComponent
|
|
20
|
-
const mockAgentComponent = {
|
|
21
|
-
registerAgent: vi.fn(),
|
|
22
|
-
getAgent: vi.fn().mockReturnValue({ name: 'test-agent' }),
|
|
23
|
-
listAgents: vi.fn().mockReturnValue([{ name: 'test-agent' }]),
|
|
24
|
-
run: vi.fn().mockResolvedValue({
|
|
25
|
-
finalText: 'test response',
|
|
26
|
-
iterations: 1,
|
|
27
|
-
toolCalls: [],
|
|
28
|
-
}),
|
|
29
|
-
};
|
|
30
|
-
|
|
31
|
-
// Mock SessionComponent
|
|
32
|
-
const mockSessionComponent = {
|
|
33
|
-
create: vi.fn().mockResolvedValue({ id: 'agent_session_123' }),
|
|
34
|
-
addMessage: vi.fn().mockResolvedValue('msg_123'),
|
|
35
|
-
getMessages: vi.fn().mockResolvedValue([]),
|
|
36
|
-
};
|
|
37
|
-
|
|
38
|
-
describe('AgentComponentAdapter', () => {
|
|
39
|
-
let adapter: AgentComponentAdapter;
|
|
40
|
-
|
|
41
|
-
beforeEach(() => {
|
|
42
|
-
vi.clearAllMocks();
|
|
43
|
-
// Reset mock to return successful result by default
|
|
44
|
-
mockAgentComponent.run.mockResolvedValue({
|
|
45
|
-
finalText: 'test response',
|
|
46
|
-
iterations: 1,
|
|
47
|
-
toolCalls: [],
|
|
48
|
-
});
|
|
49
|
-
adapter = new AgentComponentAdapter(
|
|
50
|
-
mockAgentComponent as any,
|
|
51
|
-
{},
|
|
52
|
-
mockSessionComponent as any
|
|
53
|
-
);
|
|
54
|
-
});
|
|
55
|
-
|
|
56
|
-
describe('run()', () => {
|
|
57
|
-
it('should create agent session when sessionComponent is available', async () => {
|
|
58
|
-
const config = {
|
|
59
|
-
type: 'test-agent',
|
|
60
|
-
prompt: 'test prompt',
|
|
61
|
-
nodeId: 'node1',
|
|
62
|
-
runId: 'run1',
|
|
63
|
-
workflowSessionId: 'workflow_run_1',
|
|
64
|
-
};
|
|
65
|
-
|
|
66
|
-
const result = await adapter.run(config as any);
|
|
67
|
-
|
|
68
|
-
expect(mockSessionComponent.create).toHaveBeenCalledWith(
|
|
69
|
-
expect.objectContaining({
|
|
70
|
-
title: expect.stringContaining('Agent Session'),
|
|
71
|
-
metadata: expect.objectContaining({
|
|
72
|
-
type: 'agent',
|
|
73
|
-
workflowRunId: 'run1',
|
|
74
|
-
workflowNodeId: 'node1',
|
|
75
|
-
}),
|
|
76
|
-
})
|
|
77
|
-
);
|
|
78
|
-
expect(result.output).toBe('test response');
|
|
79
|
-
});
|
|
80
|
-
|
|
81
|
-
it('should not create session when sessionComponent is not available', async () => {
|
|
82
|
-
const adapterWithoutSession = new AgentComponentAdapter(
|
|
83
|
-
mockAgentComponent as any,
|
|
84
|
-
{},
|
|
85
|
-
undefined
|
|
86
|
-
);
|
|
87
|
-
|
|
88
|
-
const config = {
|
|
89
|
-
type: 'test-agent',
|
|
90
|
-
prompt: 'test prompt',
|
|
91
|
-
};
|
|
92
|
-
|
|
93
|
-
await adapterWithoutSession.run(config as any);
|
|
94
|
-
|
|
95
|
-
expect(mockSessionComponent.create).not.toHaveBeenCalled();
|
|
96
|
-
});
|
|
97
|
-
|
|
98
|
-
it('should map workflow session to agent sessions', async () => {
|
|
99
|
-
const config = {
|
|
100
|
-
type: 'test-agent',
|
|
101
|
-
prompt: 'test prompt',
|
|
102
|
-
nodeId: 'node1',
|
|
103
|
-
runId: 'run1',
|
|
104
|
-
workflowSessionId: 'workflow_run_1',
|
|
105
|
-
};
|
|
106
|
-
|
|
107
|
-
await adapter.run(config as any);
|
|
108
|
-
|
|
109
|
-
// Should have mapping
|
|
110
|
-
const agentSessions = adapter.getAgentSessionsForWorkflowSession('workflow_run_1');
|
|
111
|
-
expect(agentSessions.length).toBeGreaterThan(0);
|
|
112
|
-
});
|
|
113
|
-
|
|
114
|
-
it('should throw AskUserError to interrupt workflow (pending session preserved)', async () => {
|
|
115
|
-
// Mock agent to throw AskUserError
|
|
116
|
-
mockAgentComponent.run.mockImplementation(() => {
|
|
117
|
-
throw new AskUserError('run1', 'workflow_run1', 'node1', 'agent', 'Need user input?');
|
|
118
|
-
});
|
|
119
|
-
|
|
120
|
-
const config = {
|
|
121
|
-
type: 'test-agent',
|
|
122
|
-
prompt: 'test prompt',
|
|
123
|
-
nodeId: 'node1',
|
|
124
|
-
runId: 'run1',
|
|
125
|
-
workflowSessionId: 'workflow_run_1',
|
|
126
|
-
};
|
|
127
|
-
|
|
128
|
-
// Should reject with AskUserError
|
|
129
|
-
try {
|
|
130
|
-
await adapter.run(config as any);
|
|
131
|
-
expect(true).toBe(false); // Should not reach here
|
|
132
|
-
} catch (e: any) {
|
|
133
|
-
expect(e.name).toBe('AskUserError');
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
// Pending session should be preserved (not cleared)
|
|
137
|
-
const sessions = adapter.getPendingSessionsForRun('run1');
|
|
138
|
-
expect(sessions.length).toBeGreaterThan(0);
|
|
139
|
-
expect(sessions[0].nodeId).toBe('node1');
|
|
140
|
-
});
|
|
141
|
-
});
|
|
142
|
-
|
|
143
|
-
describe('resumeAgent()', () => {
|
|
144
|
-
it('should add user response to session and resume', async () => {
|
|
145
|
-
const agentSessionId = 'agent_session_123';
|
|
146
|
-
const userResponse = 'User response text';
|
|
147
|
-
const config = {
|
|
148
|
-
type: 'test-agent',
|
|
149
|
-
prompt: 'test prompt',
|
|
150
|
-
};
|
|
151
|
-
|
|
152
|
-
await adapter.resumeAgent(agentSessionId, userResponse, config as any);
|
|
153
|
-
|
|
154
|
-
// Verify addMessage was called (mock is already reset in beforeEach, so it should be called)
|
|
155
|
-
// Note: In this test, we just verify no error is thrown
|
|
156
|
-
expect(mockAgentComponent.run).toHaveBeenCalled();
|
|
157
|
-
});
|
|
158
|
-
|
|
159
|
-
it('should add user response as a new message with resume metadata', async () => {
|
|
160
|
-
const agentSessionId = 'agent_session_123';
|
|
161
|
-
const userResponse = 'yes, continue';
|
|
162
|
-
const config = {
|
|
163
|
-
type: 'test-agent',
|
|
164
|
-
prompt: 'test prompt',
|
|
165
|
-
};
|
|
166
|
-
|
|
167
|
-
await adapter.resumeAgent(agentSessionId, userResponse, config as any);
|
|
168
|
-
|
|
169
|
-
// Verify addMessage was called with correct metadata
|
|
170
|
-
expect(mockSessionComponent.addMessage).toHaveBeenCalledWith(
|
|
171
|
-
agentSessionId,
|
|
172
|
-
expect.objectContaining({
|
|
173
|
-
role: 'user',
|
|
174
|
-
content: userResponse,
|
|
175
|
-
metadata: expect.objectContaining({
|
|
176
|
-
type: 'user_intent',
|
|
177
|
-
intent: 'workflow.resume',
|
|
178
|
-
}),
|
|
179
|
-
})
|
|
180
|
-
);
|
|
181
|
-
});
|
|
182
|
-
|
|
183
|
-
it('should pass userResponse to run() for resume context', async () => {
|
|
184
|
-
const agentSessionId = 'agent_session_123';
|
|
185
|
-
const userResponse = 'yes';
|
|
186
|
-
const config = {
|
|
187
|
-
type: 'test-agent',
|
|
188
|
-
prompt: 'test prompt',
|
|
189
|
-
};
|
|
190
|
-
|
|
191
|
-
await adapter.resumeAgent(agentSessionId, userResponse, config as any);
|
|
192
|
-
|
|
193
|
-
// Verify run was called with sessionId set to agentSessionId
|
|
194
|
-
// (userResponse is stored in session, agent will load it from there)
|
|
195
|
-
expect(mockAgentComponent.run).toHaveBeenCalledWith(
|
|
196
|
-
config.type,
|
|
197
|
-
config.prompt,
|
|
198
|
-
expect.objectContaining({
|
|
199
|
-
sessionId: agentSessionId,
|
|
200
|
-
})
|
|
201
|
-
);
|
|
202
|
-
});
|
|
203
|
-
|
|
204
|
-
it('should remove session from pending after resume', async () => {
|
|
205
|
-
// First add a pending session manually
|
|
206
|
-
adapter.pendingSessions.set('agent_session_456', {
|
|
207
|
-
agentSessionId: 'agent_session_456',
|
|
208
|
-
nodeId: 'node1',
|
|
209
|
-
runId: 'run1',
|
|
210
|
-
createdAt: Date.now(),
|
|
211
|
-
});
|
|
212
|
-
|
|
213
|
-
const userResponse = 'yes';
|
|
214
|
-
const config = {
|
|
215
|
-
type: 'test-agent',
|
|
216
|
-
prompt: 'test prompt',
|
|
217
|
-
};
|
|
218
|
-
|
|
219
|
-
await adapter.resumeAgent('agent_session_456', userResponse, config as any);
|
|
220
|
-
|
|
221
|
-
// Session should be removed from pending
|
|
222
|
-
expect(adapter.pendingSessions.has('agent_session_456')).toBe(false);
|
|
223
|
-
});
|
|
224
|
-
});
|
|
225
|
-
|
|
226
|
-
describe('getPendingSession()', () => {
|
|
227
|
-
it('should return pending session when agent throws AskUserError', async () => {
|
|
228
|
-
// Mock agent to throw AskUserError
|
|
229
|
-
mockAgentComponent.run.mockImplementation(() => {
|
|
230
|
-
throw new AskUserError('run1', 'workflow_run1', 'node1', 'agent', 'Need user input?');
|
|
231
|
-
});
|
|
232
|
-
|
|
233
|
-
const config = {
|
|
234
|
-
type: 'test-agent',
|
|
235
|
-
prompt: 'test prompt',
|
|
236
|
-
nodeId: 'node1',
|
|
237
|
-
runId: 'run1',
|
|
238
|
-
workflowSessionId: 'workflow_run_1',
|
|
239
|
-
};
|
|
240
|
-
|
|
241
|
-
try {
|
|
242
|
-
await adapter.run(config as any);
|
|
243
|
-
} catch (e) {
|
|
244
|
-
// Expected
|
|
245
|
-
}
|
|
246
|
-
|
|
247
|
-
const sessions = adapter.getPendingSessionsForRun('run1');
|
|
248
|
-
expect(sessions.length).toBe(1);
|
|
249
|
-
|
|
250
|
-
const pending = adapter.getPendingSession(sessions[0].agentSessionId);
|
|
251
|
-
expect(pending).toBeDefined();
|
|
252
|
-
expect(pending?.nodeId).toBe('node1');
|
|
253
|
-
});
|
|
254
|
-
|
|
255
|
-
it('should return undefined for non-existent session', () => {
|
|
256
|
-
const pending = adapter.getPendingSession('non-existent');
|
|
257
|
-
expect(pending).toBeUndefined();
|
|
258
|
-
});
|
|
259
|
-
});
|
|
260
|
-
|
|
261
|
-
describe('getCurrentAgentSessionId()', () => {
|
|
262
|
-
it('should return current agent session ID during execution', async () => {
|
|
263
|
-
const config = {
|
|
264
|
-
type: 'test-agent',
|
|
265
|
-
prompt: 'test prompt',
|
|
266
|
-
nodeId: 'node1',
|
|
267
|
-
runId: 'run1',
|
|
268
|
-
workflowSessionId: 'workflow_run_1',
|
|
269
|
-
};
|
|
270
|
-
|
|
271
|
-
await adapter.run(config as any);
|
|
272
|
-
|
|
273
|
-
// After successful completion, current session is cleared
|
|
274
|
-
// But we can verify the session was created during execution
|
|
275
|
-
const agentSessions = adapter.getAgentSessionsForWorkflowSession('workflow_run_1');
|
|
276
|
-
expect(agentSessions.length).toBeGreaterThan(0);
|
|
277
|
-
});
|
|
278
|
-
});
|
|
279
|
-
|
|
280
|
-
describe('setSessionComponent()', () => {
|
|
281
|
-
it('should allow setting session component after construction', async () => {
|
|
282
|
-
const adapterWithoutSession = new AgentComponentAdapter(
|
|
283
|
-
mockAgentComponent as any,
|
|
284
|
-
{},
|
|
285
|
-
undefined
|
|
286
|
-
);
|
|
287
|
-
|
|
288
|
-
adapterWithoutSession.setSessionComponent!(mockSessionComponent as any);
|
|
289
|
-
|
|
290
|
-
// Now adapter should be able to create sessions
|
|
291
|
-
const config = {
|
|
292
|
-
type: 'test-agent',
|
|
293
|
-
prompt: 'test prompt',
|
|
294
|
-
nodeId: 'node1',
|
|
295
|
-
runId: 'run1',
|
|
296
|
-
};
|
|
297
|
-
|
|
298
|
-
await adapterWithoutSession.run(config as any);
|
|
299
|
-
expect(mockSessionComponent.create).toHaveBeenCalled();
|
|
300
|
-
});
|
|
301
|
-
});
|
|
302
|
-
});
|
|
303
|
-
|
|
304
|
-
describe('PendingAgentSession type', () => {
|
|
305
|
-
it('should have correct structure', () => {
|
|
306
|
-
const session: PendingAgentSession = {
|
|
307
|
-
agentSessionId: 'agent_123',
|
|
308
|
-
nodeId: 'node_1',
|
|
309
|
-
runId: 'run_1',
|
|
310
|
-
createdAt: Date.now(),
|
|
311
|
-
};
|
|
312
|
-
|
|
313
|
-
expect(session.agentSessionId).toBe('agent_123');
|
|
314
|
-
expect(session.nodeId).toBe('node_1');
|
|
315
|
-
expect(session.runId).toBe('run_1');
|
|
316
|
-
expect(session.createdAt).toBeGreaterThan(0);
|
|
317
|
-
});
|
|
318
|
-
});
|