@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,498 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @fileoverview delegate_task Tool Tests
|
|
3
|
-
*
|
|
4
|
-
* TDD: 红色阶段 - 编写失败的测试
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
import { describe, test, expect, beforeEach, afterEach, vi } from "vitest";
|
|
8
|
-
import type { TaskComponent } from "../task-component";
|
|
9
|
-
import type { Tool, ToolContext, ToolResult } from "../../tool/types";
|
|
10
|
-
|
|
11
|
-
// Mock the tool factory
|
|
12
|
-
// Actual implementation will be imported after RED phase
|
|
13
|
-
const createDelegateTool = async (taskComponent: TaskComponent): Promise<Tool> => {
|
|
14
|
-
const module = await import("./delegate-tool");
|
|
15
|
-
return module.createDelegateTool(taskComponent);
|
|
16
|
-
};
|
|
17
|
-
|
|
18
|
-
describe("delegate_task Tool", () => {
|
|
19
|
-
let mockTaskComponent: any;
|
|
20
|
-
let tool: Tool;
|
|
21
|
-
let mockSessionComponent: any;
|
|
22
|
-
let mockAgentComponent: any;
|
|
23
|
-
|
|
24
|
-
beforeEach(async () => {
|
|
25
|
-
// Mock SessionComponent with proper structure
|
|
26
|
-
mockSessionComponent = {
|
|
27
|
-
get: vi.fn(),
|
|
28
|
-
create: vi.fn(),
|
|
29
|
-
addMessage: vi.fn(),
|
|
30
|
-
};
|
|
31
|
-
|
|
32
|
-
// Mock AgentComponent with getAgent method (required by ensureSubAgentRegistered)
|
|
33
|
-
mockAgentComponent = {
|
|
34
|
-
getAgent: vi.fn((name: string) => {
|
|
35
|
-
// Return undefined to trigger registration path
|
|
36
|
-
return undefined;
|
|
37
|
-
}),
|
|
38
|
-
registerAgent: vi.fn((name: string, config: any) => ({
|
|
39
|
-
name,
|
|
40
|
-
config,
|
|
41
|
-
status: "idle",
|
|
42
|
-
plugins: new Map(),
|
|
43
|
-
})),
|
|
44
|
-
};
|
|
45
|
-
|
|
46
|
-
// Mock TaskComponent
|
|
47
|
-
mockTaskComponent = {
|
|
48
|
-
createTask: vi.fn(),
|
|
49
|
-
updateTask: vi.fn(),
|
|
50
|
-
createOperation: vi.fn(),
|
|
51
|
-
getTask: vi.fn(),
|
|
52
|
-
listTasks: vi.fn(),
|
|
53
|
-
getTagService: vi.fn().mockReturnValue({
|
|
54
|
-
listTags: vi.fn().mockResolvedValue([]),
|
|
55
|
-
findSimilarTasks: vi.fn().mockResolvedValue([]),
|
|
56
|
-
}),
|
|
57
|
-
env: {
|
|
58
|
-
getComponent: vi.fn((name: string) => {
|
|
59
|
-
if (name === "session") return mockSessionComponent;
|
|
60
|
-
if (name === "agent") return mockAgentComponent;
|
|
61
|
-
return { registerTool: vi.fn() };
|
|
62
|
-
}),
|
|
63
|
-
handle_query: vi.fn(),
|
|
64
|
-
},
|
|
65
|
-
};
|
|
66
|
-
|
|
67
|
-
// Store references for test setup
|
|
68
|
-
(mockTaskComponent as any).mockSessionComponent = mockSessionComponent;
|
|
69
|
-
(mockTaskComponent as any).mockAgentComponent = mockAgentComponent;
|
|
70
|
-
|
|
71
|
-
tool = await createDelegateTool(mockTaskComponent);
|
|
72
|
-
});
|
|
73
|
-
|
|
74
|
-
afterEach(() => {
|
|
75
|
-
vi.clearAllMocks();
|
|
76
|
-
});
|
|
77
|
-
|
|
78
|
-
describe("Tool Definition", () => {
|
|
79
|
-
test("should have correct tool name", () => {
|
|
80
|
-
expect(tool.name).toBe("delegate_task");
|
|
81
|
-
});
|
|
82
|
-
|
|
83
|
-
test("should have description with subagent types", () => {
|
|
84
|
-
expect(tool.description).toContain("delegate");
|
|
85
|
-
expect(tool.description).toContain("subagent");
|
|
86
|
-
});
|
|
87
|
-
|
|
88
|
-
test("should have parameters schema", () => {
|
|
89
|
-
expect(tool.parameters).toBeDefined();
|
|
90
|
-
expect(tool.parameters.shape).toBeDefined();
|
|
91
|
-
});
|
|
92
|
-
|
|
93
|
-
test("should have description field in parameters", () => {
|
|
94
|
-
const shape = tool.parameters.shape;
|
|
95
|
-
expect(shape.description).toBeDefined();
|
|
96
|
-
});
|
|
97
|
-
|
|
98
|
-
test("should have prompt field in parameters", () => {
|
|
99
|
-
const shape = tool.parameters.shape;
|
|
100
|
-
expect(shape.prompt).toBeDefined();
|
|
101
|
-
});
|
|
102
|
-
|
|
103
|
-
test("should have subagent_type field in parameters", () => {
|
|
104
|
-
const shape = tool.parameters.shape;
|
|
105
|
-
expect(shape.subagent_type).toBeDefined();
|
|
106
|
-
});
|
|
107
|
-
|
|
108
|
-
test("should have background field in parameters", () => {
|
|
109
|
-
const shape = tool.parameters.shape;
|
|
110
|
-
expect(shape.background).toBeDefined();
|
|
111
|
-
});
|
|
112
|
-
|
|
113
|
-
test("should have task_id field in parameters", () => {
|
|
114
|
-
const shape = tool.parameters.shape;
|
|
115
|
-
expect(shape.task_id).toBeDefined();
|
|
116
|
-
});
|
|
117
|
-
});
|
|
118
|
-
|
|
119
|
-
describe("Synchronous Execution", () => {
|
|
120
|
-
test("should execute synchronously when background=false", async () => {
|
|
121
|
-
const mockContext: ToolContext = {
|
|
122
|
-
session_id: "test-session-123",
|
|
123
|
-
};
|
|
124
|
-
|
|
125
|
-
// Mock parent session for get
|
|
126
|
-
const mockParentSession = {
|
|
127
|
-
id: "test-session-123",
|
|
128
|
-
};
|
|
129
|
-
|
|
130
|
-
// Mock sub-agent session
|
|
131
|
-
const mockSubSession = {
|
|
132
|
-
id: "sub-session-456",
|
|
133
|
-
info: { metadata: { subagent_type: "general" } },
|
|
134
|
-
addMessage: vi.fn(),
|
|
135
|
-
};
|
|
136
|
-
|
|
137
|
-
const mockSessionComponent = (mockTaskComponent as any).mockSessionComponent;
|
|
138
|
-
|
|
139
|
-
// Mock session component methods
|
|
140
|
-
mockSessionComponent.get
|
|
141
|
-
.mockReturnValueOnce(mockParentSession); // Parent session check
|
|
142
|
-
|
|
143
|
-
mockSessionComponent.create.mockResolvedValue(mockSubSession);
|
|
144
|
-
mockTaskComponent.env.handle_query.mockResolvedValue("Task completed successfully");
|
|
145
|
-
|
|
146
|
-
const result = await tool.execute(
|
|
147
|
-
{
|
|
148
|
-
description: "Test task",
|
|
149
|
-
prompt: "Do something",
|
|
150
|
-
subagent_type: "general",
|
|
151
|
-
background: false,
|
|
152
|
-
},
|
|
153
|
-
mockContext
|
|
154
|
-
);
|
|
155
|
-
|
|
156
|
-
expect(result.success).toBe(true);
|
|
157
|
-
expect(result.metadata?.sessionId).toBe(mockSubSession.id);
|
|
158
|
-
});
|
|
159
|
-
|
|
160
|
-
test("should return error for unknown subagent_type", async () => {
|
|
161
|
-
const mockContext: ToolContext = {
|
|
162
|
-
session_id: "test-session-123",
|
|
163
|
-
};
|
|
164
|
-
|
|
165
|
-
const result = await tool.execute(
|
|
166
|
-
{
|
|
167
|
-
description: "Test task",
|
|
168
|
-
prompt: "Do something",
|
|
169
|
-
subagent_type: "unknown_type",
|
|
170
|
-
background: false,
|
|
171
|
-
},
|
|
172
|
-
mockContext
|
|
173
|
-
);
|
|
174
|
-
|
|
175
|
-
expect(result.success).toBe(false);
|
|
176
|
-
expect(result.error).toContain("Unknown subagent type");
|
|
177
|
-
});
|
|
178
|
-
|
|
179
|
-
test("should use default subagent_type as general", async () => {
|
|
180
|
-
const mockContext: ToolContext = {
|
|
181
|
-
session_id: "test-session-123",
|
|
182
|
-
};
|
|
183
|
-
|
|
184
|
-
const mockParentSession = {
|
|
185
|
-
id: "test-session-123",
|
|
186
|
-
};
|
|
187
|
-
|
|
188
|
-
const mockSubSession = {
|
|
189
|
-
id: "sub-session-456",
|
|
190
|
-
info: { metadata: { subagent_type: "general" } },
|
|
191
|
-
addMessage: vi.fn(),
|
|
192
|
-
};
|
|
193
|
-
|
|
194
|
-
const mockSessionComponent = (mockTaskComponent as any).mockSessionComponent;
|
|
195
|
-
mockSessionComponent.get.mockReturnValueOnce(mockParentSession);
|
|
196
|
-
mockSessionComponent.create.mockResolvedValue(mockSubSession);
|
|
197
|
-
mockTaskComponent.env.handle_query.mockResolvedValue("Task completed");
|
|
198
|
-
|
|
199
|
-
const result = await tool.execute(
|
|
200
|
-
{
|
|
201
|
-
description: "Test task",
|
|
202
|
-
prompt: "Do something",
|
|
203
|
-
},
|
|
204
|
-
mockContext
|
|
205
|
-
);
|
|
206
|
-
|
|
207
|
-
expect(result.success).toBe(true);
|
|
208
|
-
});
|
|
209
|
-
});
|
|
210
|
-
|
|
211
|
-
describe("Background Execution", () => {
|
|
212
|
-
test("should execute in background when background=true", async () => {
|
|
213
|
-
const mockContext: ToolContext = {
|
|
214
|
-
session_id: "test-session-123",
|
|
215
|
-
};
|
|
216
|
-
|
|
217
|
-
const mockParentSession = {
|
|
218
|
-
id: "test-session-123",
|
|
219
|
-
};
|
|
220
|
-
|
|
221
|
-
const mockSubSession = {
|
|
222
|
-
id: "sub-session-456",
|
|
223
|
-
addMessage: vi.fn(),
|
|
224
|
-
};
|
|
225
|
-
|
|
226
|
-
// Mock for createTask
|
|
227
|
-
const createdTask = {
|
|
228
|
-
id: 999,
|
|
229
|
-
title: "Background task",
|
|
230
|
-
status: "active",
|
|
231
|
-
};
|
|
232
|
-
mockTaskComponent.createTask.mockResolvedValue(createdTask);
|
|
233
|
-
mockTaskComponent.createOperation.mockResolvedValue({});
|
|
234
|
-
|
|
235
|
-
// Mock session component
|
|
236
|
-
const mockSessionComponent = (mockTaskComponent as any).mockSessionComponent;
|
|
237
|
-
mockSessionComponent.get.mockResolvedValue(mockParentSession);
|
|
238
|
-
mockSessionComponent.create.mockResolvedValue(mockSubSession);
|
|
239
|
-
|
|
240
|
-
const result = await tool.execute(
|
|
241
|
-
{
|
|
242
|
-
description: "Background task",
|
|
243
|
-
prompt: "Do something in background",
|
|
244
|
-
subagent_type: "general",
|
|
245
|
-
background: true,
|
|
246
|
-
},
|
|
247
|
-
mockContext
|
|
248
|
-
);
|
|
249
|
-
|
|
250
|
-
expect(result.success).toBe(true);
|
|
251
|
-
expect(result.metadata?.background).toBe(true);
|
|
252
|
-
expect(result.metadata?.status).toBe("accepted");
|
|
253
|
-
});
|
|
254
|
-
|
|
255
|
-
test("should include task_id in metadata for background tasks", async () => {
|
|
256
|
-
const mockContext: ToolContext = {
|
|
257
|
-
session_id: "test-session-123",
|
|
258
|
-
};
|
|
259
|
-
|
|
260
|
-
const mockParentSession = {
|
|
261
|
-
id: "test-session-123",
|
|
262
|
-
};
|
|
263
|
-
|
|
264
|
-
const mockSubSession = {
|
|
265
|
-
id: "sub-session-456",
|
|
266
|
-
addMessage: vi.fn(),
|
|
267
|
-
};
|
|
268
|
-
|
|
269
|
-
// Mock for createTask
|
|
270
|
-
const createdTask = {
|
|
271
|
-
id: 123,
|
|
272
|
-
title: "Background task",
|
|
273
|
-
status: "active",
|
|
274
|
-
};
|
|
275
|
-
mockTaskComponent.createTask.mockResolvedValue(createdTask);
|
|
276
|
-
mockTaskComponent.createOperation.mockResolvedValue({});
|
|
277
|
-
|
|
278
|
-
// Mock session component
|
|
279
|
-
const mockSessionComponent = (mockTaskComponent as any).mockSessionComponent;
|
|
280
|
-
mockSessionComponent.get.mockResolvedValue(mockParentSession);
|
|
281
|
-
mockSessionComponent.create.mockResolvedValue(mockSubSession);
|
|
282
|
-
|
|
283
|
-
const result = await tool.execute(
|
|
284
|
-
{
|
|
285
|
-
description: "Background task",
|
|
286
|
-
prompt: "Do something",
|
|
287
|
-
subagent_type: "general",
|
|
288
|
-
background: true,
|
|
289
|
-
task_id: 123,
|
|
290
|
-
},
|
|
291
|
-
mockContext
|
|
292
|
-
);
|
|
293
|
-
|
|
294
|
-
expect(result.success).toBe(true);
|
|
295
|
-
expect(result.metadata?.task_id).toBe(123);
|
|
296
|
-
});
|
|
297
|
-
});
|
|
298
|
-
|
|
299
|
-
describe("Task Association", () => {
|
|
300
|
-
test("should create task if task_id not provided in background mode", async () => {
|
|
301
|
-
const mockContext: ToolContext = {
|
|
302
|
-
session_id: "test-session-123",
|
|
303
|
-
};
|
|
304
|
-
|
|
305
|
-
const mockParentSession = {
|
|
306
|
-
id: "test-session-123",
|
|
307
|
-
};
|
|
308
|
-
|
|
309
|
-
const mockSubSession = {
|
|
310
|
-
id: "sub-session-456",
|
|
311
|
-
addMessage: vi.fn(),
|
|
312
|
-
};
|
|
313
|
-
|
|
314
|
-
// Mock for createTask
|
|
315
|
-
const createdTask = {
|
|
316
|
-
id: 999,
|
|
317
|
-
title: "Background task",
|
|
318
|
-
status: "active",
|
|
319
|
-
};
|
|
320
|
-
mockTaskComponent.createTask.mockResolvedValue(createdTask);
|
|
321
|
-
mockTaskComponent.createOperation.mockResolvedValue({});
|
|
322
|
-
|
|
323
|
-
// Mock session component
|
|
324
|
-
const mockSessionComponent = (mockTaskComponent as any).mockSessionComponent;
|
|
325
|
-
mockSessionComponent.get.mockResolvedValue(mockParentSession);
|
|
326
|
-
mockSessionComponent.create.mockResolvedValue(mockSubSession);
|
|
327
|
-
|
|
328
|
-
const result = await tool.execute(
|
|
329
|
-
{
|
|
330
|
-
description: "Background task",
|
|
331
|
-
prompt: "Do something",
|
|
332
|
-
background: true,
|
|
333
|
-
},
|
|
334
|
-
mockContext
|
|
335
|
-
);
|
|
336
|
-
|
|
337
|
-
expect(result.success).toBe(true);
|
|
338
|
-
expect(mockTaskComponent.createTask).toHaveBeenCalled();
|
|
339
|
-
});
|
|
340
|
-
|
|
341
|
-
test("should update existing task when task_id provided", async () => {
|
|
342
|
-
const mockContext: ToolContext = {
|
|
343
|
-
session_id: "test-session-123",
|
|
344
|
-
};
|
|
345
|
-
|
|
346
|
-
const mockParentSession = {
|
|
347
|
-
id: "test-session-123",
|
|
348
|
-
};
|
|
349
|
-
|
|
350
|
-
const mockSubSession = {
|
|
351
|
-
id: "sub-session-456",
|
|
352
|
-
addMessage: vi.fn(),
|
|
353
|
-
};
|
|
354
|
-
|
|
355
|
-
const existingTask = {
|
|
356
|
-
id: 123,
|
|
357
|
-
title: "Existing task",
|
|
358
|
-
status: "active",
|
|
359
|
-
};
|
|
360
|
-
|
|
361
|
-
mockTaskComponent.getTask.mockResolvedValue(existingTask);
|
|
362
|
-
mockTaskComponent.updateTask.mockResolvedValue({
|
|
363
|
-
...existingTask,
|
|
364
|
-
status: "active",
|
|
365
|
-
});
|
|
366
|
-
mockTaskComponent.createOperation.mockResolvedValue({});
|
|
367
|
-
|
|
368
|
-
// Mock session component
|
|
369
|
-
const mockSessionComponent = (mockTaskComponent as any).mockSessionComponent;
|
|
370
|
-
mockSessionComponent.get.mockResolvedValue(mockParentSession);
|
|
371
|
-
mockSessionComponent.create.mockResolvedValue(mockSubSession);
|
|
372
|
-
|
|
373
|
-
const result = await tool.execute(
|
|
374
|
-
{
|
|
375
|
-
description: "Existing task",
|
|
376
|
-
prompt: "Do something",
|
|
377
|
-
background: true,
|
|
378
|
-
task_id: 123,
|
|
379
|
-
},
|
|
380
|
-
mockContext
|
|
381
|
-
);
|
|
382
|
-
|
|
383
|
-
expect(result.success).toBe(true);
|
|
384
|
-
expect(mockTaskComponent.updateTask).toHaveBeenCalled();
|
|
385
|
-
});
|
|
386
|
-
});
|
|
387
|
-
|
|
388
|
-
describe("Error Handling", () => {
|
|
389
|
-
test("should handle parent session not found", async () => {
|
|
390
|
-
const mockContext: ToolContext = {
|
|
391
|
-
session_id: "non-existent-session",
|
|
392
|
-
};
|
|
393
|
-
|
|
394
|
-
const mockSessionComponent = (mockTaskComponent as any).mockSessionComponent;
|
|
395
|
-
mockSessionComponent.get.mockResolvedValue(null);
|
|
396
|
-
|
|
397
|
-
const result = await tool.execute(
|
|
398
|
-
{
|
|
399
|
-
description: "Test task",
|
|
400
|
-
prompt: "Do something",
|
|
401
|
-
background: false,
|
|
402
|
-
},
|
|
403
|
-
mockContext
|
|
404
|
-
);
|
|
405
|
-
|
|
406
|
-
expect(result.success).toBe(false);
|
|
407
|
-
expect(result.error).toContain("Parent session not found");
|
|
408
|
-
});
|
|
409
|
-
|
|
410
|
-
test("should handle execution error", async () => {
|
|
411
|
-
const mockContext: ToolContext = {
|
|
412
|
-
session_id: "test-session-123",
|
|
413
|
-
};
|
|
414
|
-
|
|
415
|
-
const mockParentSession = {
|
|
416
|
-
id: "test-session-123",
|
|
417
|
-
};
|
|
418
|
-
|
|
419
|
-
const mockSubSession = {
|
|
420
|
-
id: "sub-session-456",
|
|
421
|
-
info: { metadata: { subagent_type: "general" } },
|
|
422
|
-
addMessage: vi.fn(),
|
|
423
|
-
};
|
|
424
|
-
|
|
425
|
-
const mockSessionComponent = (mockTaskComponent as any).mockSessionComponent;
|
|
426
|
-
mockSessionComponent.get.mockResolvedValue(mockParentSession);
|
|
427
|
-
mockSessionComponent.create.mockResolvedValue(mockSubSession);
|
|
428
|
-
|
|
429
|
-
// Mock handle_query to reject with "Execution failed" error
|
|
430
|
-
mockTaskComponent.env.handle_query.mockRejectedValue(new Error("Execution failed"));
|
|
431
|
-
|
|
432
|
-
const result = await tool.execute(
|
|
433
|
-
{
|
|
434
|
-
description: "Test task",
|
|
435
|
-
prompt: "Do something",
|
|
436
|
-
background: false,
|
|
437
|
-
},
|
|
438
|
-
mockContext
|
|
439
|
-
);
|
|
440
|
-
|
|
441
|
-
// The tool should return success: true since it catches the error internally
|
|
442
|
-
// and returns the error as the result output
|
|
443
|
-
expect(result.success).toBe(true);
|
|
444
|
-
expect(result.output).toContain("Execution failed");
|
|
445
|
-
});
|
|
446
|
-
});
|
|
447
|
-
|
|
448
|
-
describe("BackgroundTaskManager SessionComponent Access", () => {
|
|
449
|
-
test("should correctly pass env to BackgroundTaskManager", async () => {
|
|
450
|
-
// This test verifies that the env object is correctly passed to BackgroundTaskManager
|
|
451
|
-
// so that it can access SessionComponent via env.getComponent("session")
|
|
452
|
-
|
|
453
|
-
const mockContext: ToolContext = {
|
|
454
|
-
session_id: "test-session-123",
|
|
455
|
-
};
|
|
456
|
-
|
|
457
|
-
const mockParentSession = { id: "test-session-123" };
|
|
458
|
-
const mockSubSession = {
|
|
459
|
-
id: "sub-session-456",
|
|
460
|
-
info: { metadata: { subagent_type: "general" } },
|
|
461
|
-
addMessage: vi.fn(),
|
|
462
|
-
};
|
|
463
|
-
|
|
464
|
-
const mockSessionComponent = (mockTaskComponent as any).mockSessionComponent;
|
|
465
|
-
|
|
466
|
-
// Mock session component methods
|
|
467
|
-
mockSessionComponent.get.mockResolvedValue(mockParentSession);
|
|
468
|
-
mockSessionComponent.create.mockResolvedValue(mockSubSession);
|
|
469
|
-
mockTaskComponent.env.handle_query.mockResolvedValue("Background task result");
|
|
470
|
-
|
|
471
|
-
// Create task
|
|
472
|
-
const createdTask = {
|
|
473
|
-
id: 999,
|
|
474
|
-
title: "Background task",
|
|
475
|
-
status: "active",
|
|
476
|
-
};
|
|
477
|
-
mockTaskComponent.createTask.mockResolvedValue(createdTask);
|
|
478
|
-
mockTaskComponent.createOperation.mockResolvedValue({});
|
|
479
|
-
|
|
480
|
-
const result = await tool.execute(
|
|
481
|
-
{
|
|
482
|
-
description: "Background task",
|
|
483
|
-
prompt: "Do something in background",
|
|
484
|
-
subagent_type: "general",
|
|
485
|
-
background: true,
|
|
486
|
-
},
|
|
487
|
-
mockContext
|
|
488
|
-
);
|
|
489
|
-
|
|
490
|
-
// Verify that getComponent was called with "session"
|
|
491
|
-
expect(mockTaskComponent.env.getComponent).toHaveBeenCalledWith("session");
|
|
492
|
-
|
|
493
|
-
// Verify the task was created successfully
|
|
494
|
-
expect(result.success).toBe(true);
|
|
495
|
-
expect(result.metadata?.background).toBe(true);
|
|
496
|
-
});
|
|
497
|
-
});
|
|
498
|
-
});
|