@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,209 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @fileoverview SessionComponent extractRecentMessages Tests
|
|
3
|
-
*
|
|
4
|
-
* Tests for the extractRecentMessages method
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
import { describe, it, expect, beforeEach } from 'bun:test';
|
|
8
|
-
import { SessionComponent } from './session-component';
|
|
9
|
-
import { MemorySessionStore } from './storage/memory';
|
|
10
|
-
import type { SessionMessage } from './types';
|
|
11
|
-
|
|
12
|
-
describe('SessionComponent.extractRecentMessages', () => {
|
|
13
|
-
let component: SessionComponent;
|
|
14
|
-
let store: MemorySessionStore;
|
|
15
|
-
|
|
16
|
-
beforeEach(async () => {
|
|
17
|
-
// Create component with memory store
|
|
18
|
-
component = new SessionComponent();
|
|
19
|
-
store = new MemorySessionStore();
|
|
20
|
-
|
|
21
|
-
// Inject mock dependencies
|
|
22
|
-
(component as any).store = store;
|
|
23
|
-
(component as any).hooksConfig = {};
|
|
24
|
-
});
|
|
25
|
-
|
|
26
|
-
// Helper to create test messages
|
|
27
|
-
function createMessage(
|
|
28
|
-
id: string,
|
|
29
|
-
role: 'user' | 'assistant',
|
|
30
|
-
content: string,
|
|
31
|
-
parts?: any[]
|
|
32
|
-
): SessionMessage {
|
|
33
|
-
return {
|
|
34
|
-
id,
|
|
35
|
-
sessionID: 'test-session',
|
|
36
|
-
role,
|
|
37
|
-
content,
|
|
38
|
-
timestamp: Date.now(),
|
|
39
|
-
parts,
|
|
40
|
-
metadata: {},
|
|
41
|
-
};
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
describe('basic extraction', () => {
|
|
45
|
-
it('should extract 2 turns by default', async () => {
|
|
46
|
-
const messages: SessionMessage[] = [
|
|
47
|
-
createMessage('1', 'user', 'First question'),
|
|
48
|
-
createMessage('2', 'assistant', 'First answer'),
|
|
49
|
-
createMessage('3', 'user', 'Second question'),
|
|
50
|
-
createMessage('4', 'assistant', 'Second answer'),
|
|
51
|
-
createMessage('5', 'user', 'Third question'),
|
|
52
|
-
createMessage('6', 'assistant', 'Third answer'),
|
|
53
|
-
];
|
|
54
|
-
|
|
55
|
-
// Access private method via any cast
|
|
56
|
-
const result = (component as any).extractRecentMessages(messages);
|
|
57
|
-
|
|
58
|
-
expect(result.length).toBe(4); // 2 turns = user + assistant pairs
|
|
59
|
-
expect(result[0]).toEqual({ role: 'user', content: 'Second question' });
|
|
60
|
-
expect(result[1]).toEqual({ role: 'assistant', content: 'Second answer' });
|
|
61
|
-
expect(result[2]).toEqual({ role: 'user', content: 'Third question' });
|
|
62
|
-
expect(result[3]).toEqual({ role: 'assistant', content: 'Third answer' });
|
|
63
|
-
});
|
|
64
|
-
|
|
65
|
-
it('should extract 1 turn when specified', async () => {
|
|
66
|
-
const messages: SessionMessage[] = [
|
|
67
|
-
createMessage('1', 'user', 'First question'),
|
|
68
|
-
createMessage('2', 'assistant', 'First answer'),
|
|
69
|
-
createMessage('3', 'user', 'Second question'),
|
|
70
|
-
createMessage('4', 'assistant', 'Second answer'),
|
|
71
|
-
];
|
|
72
|
-
|
|
73
|
-
const result = (component as any).extractRecentMessages(messages, 1);
|
|
74
|
-
|
|
75
|
-
expect(result.length).toBe(2); // 1 turn = user + assistant
|
|
76
|
-
expect(result[0]).toEqual({ role: 'user', content: 'Second question' });
|
|
77
|
-
expect(result[1]).toEqual({ role: 'assistant', content: 'Second answer' });
|
|
78
|
-
});
|
|
79
|
-
|
|
80
|
-
it('should extract 3 turns when specified', async () => {
|
|
81
|
-
const messages: SessionMessage[] = [
|
|
82
|
-
createMessage('1', 'user', 'First question'),
|
|
83
|
-
createMessage('2', 'assistant', 'First answer'),
|
|
84
|
-
createMessage('3', 'user', 'Second question'),
|
|
85
|
-
createMessage('4', 'assistant', 'Second answer'),
|
|
86
|
-
createMessage('5', 'user', 'Third question'),
|
|
87
|
-
createMessage('6', 'assistant', 'Third answer'),
|
|
88
|
-
];
|
|
89
|
-
|
|
90
|
-
const result = (component as any).extractRecentMessages(messages, 3);
|
|
91
|
-
|
|
92
|
-
expect(result.length).toBe(6); // 3 turns
|
|
93
|
-
});
|
|
94
|
-
});
|
|
95
|
-
|
|
96
|
-
describe('skip tool calls and results', () => {
|
|
97
|
-
it('should skip assistant messages with tool-call parts', async () => {
|
|
98
|
-
const messages: SessionMessage[] = [
|
|
99
|
-
createMessage('1', 'user', 'Run a command'),
|
|
100
|
-
createMessage('2', 'assistant', 'I will run the command', [
|
|
101
|
-
{ type: 'tool-call', toolName: 'bash' }
|
|
102
|
-
]),
|
|
103
|
-
createMessage('3', 'user', 'Second question'),
|
|
104
|
-
createMessage('4', 'assistant', 'Second answer'),
|
|
105
|
-
];
|
|
106
|
-
|
|
107
|
-
const result = (component as any).extractRecentMessages(messages, 1);
|
|
108
|
-
|
|
109
|
-
// Should skip the tool-call message and find next user+assistant pair
|
|
110
|
-
expect(result.length).toBe(2);
|
|
111
|
-
expect(result[0]).toEqual({ role: 'user', content: 'Second question' });
|
|
112
|
-
expect(result[1]).toEqual({ role: 'assistant', content: 'Second answer' });
|
|
113
|
-
});
|
|
114
|
-
|
|
115
|
-
it('should skip assistant messages with tool-result parts', async () => {
|
|
116
|
-
const messages: SessionMessage[] = [
|
|
117
|
-
createMessage('1', 'user', 'Run a command'),
|
|
118
|
-
createMessage('2', 'assistant', 'Command completed', [
|
|
119
|
-
{ type: 'tool-result', toolName: 'bash' }
|
|
120
|
-
]),
|
|
121
|
-
createMessage('3', 'user', 'Second question'),
|
|
122
|
-
createMessage('4', 'assistant', 'Second answer'),
|
|
123
|
-
];
|
|
124
|
-
|
|
125
|
-
const result = (component as any).extractRecentMessages(messages, 1);
|
|
126
|
-
|
|
127
|
-
expect(result.length).toBe(2);
|
|
128
|
-
expect(result[0]).toEqual({ role: 'user', content: 'Second question' });
|
|
129
|
-
expect(result[1]).toEqual({ role: 'assistant', content: 'Second answer' });
|
|
130
|
-
});
|
|
131
|
-
|
|
132
|
-
it('should include assistant messages without tool parts', async () => {
|
|
133
|
-
const messages: SessionMessage[] = [
|
|
134
|
-
createMessage('1', 'user', 'Hello'),
|
|
135
|
-
createMessage('2', 'assistant', 'Hi there!'), // No tool parts
|
|
136
|
-
createMessage('3', 'user', 'How are you?'),
|
|
137
|
-
createMessage('4', 'assistant', 'I am fine!'),
|
|
138
|
-
];
|
|
139
|
-
|
|
140
|
-
const result = (component as any).extractRecentMessages(messages, 1);
|
|
141
|
-
|
|
142
|
-
expect(result.length).toBe(2);
|
|
143
|
-
expect(result[1]).toEqual({ role: 'assistant', content: 'I am fine!' });
|
|
144
|
-
});
|
|
145
|
-
});
|
|
146
|
-
|
|
147
|
-
describe('skip checkpoint messages', () => {
|
|
148
|
-
it('should skip checkpoint messages when extracting', async () => {
|
|
149
|
-
const messages: SessionMessage[] = [
|
|
150
|
-
createMessage('1', 'user', 'First question'),
|
|
151
|
-
createMessage('2', 'assistant', 'First answer'),
|
|
152
|
-
createMessage('3', 'user', '', undefined), // Will be checkpoint
|
|
153
|
-
createMessage('3', 'user', 'Second question'),
|
|
154
|
-
createMessage('4', 'assistant', 'Second answer'),
|
|
155
|
-
];
|
|
156
|
-
// Mark checkpoint
|
|
157
|
-
messages[2].metadata = { isCheckpoint: true };
|
|
158
|
-
|
|
159
|
-
const result = (component as any).extractRecentMessages(messages, 1);
|
|
160
|
-
|
|
161
|
-
expect(result.length).toBe(2);
|
|
162
|
-
expect(result[0]).toEqual({ role: 'user', content: 'Second question' });
|
|
163
|
-
});
|
|
164
|
-
});
|
|
165
|
-
|
|
166
|
-
describe('edge cases', () => {
|
|
167
|
-
it('should return empty array if no valid turns found', async () => {
|
|
168
|
-
const messages: SessionMessage[] = [
|
|
169
|
-
createMessage('1', 'assistant', 'I started first', [
|
|
170
|
-
{ type: 'tool-call', toolName: 'bash' }
|
|
171
|
-
]),
|
|
172
|
-
];
|
|
173
|
-
|
|
174
|
-
const result = (component as any).extractRecentMessages(messages, 1);
|
|
175
|
-
|
|
176
|
-
expect(result.length).toBe(0);
|
|
177
|
-
});
|
|
178
|
-
|
|
179
|
-
it('should handle empty messages array', async () => {
|
|
180
|
-
const messages: SessionMessage[] = [];
|
|
181
|
-
|
|
182
|
-
const result = (component as any).extractRecentMessages(messages);
|
|
183
|
-
|
|
184
|
-
expect(result.length).toBe(0);
|
|
185
|
-
});
|
|
186
|
-
|
|
187
|
-
it('should handle only user messages', async () => {
|
|
188
|
-
const messages: SessionMessage[] = [
|
|
189
|
-
createMessage('1', 'user', 'Hello'),
|
|
190
|
-
];
|
|
191
|
-
|
|
192
|
-
const result = (component as any).extractRecentMessages(messages, 1);
|
|
193
|
-
|
|
194
|
-
expect(result.length).toBe(0);
|
|
195
|
-
});
|
|
196
|
-
|
|
197
|
-
it('should handle messages with only empty content', async () => {
|
|
198
|
-
const messages: SessionMessage[] = [
|
|
199
|
-
createMessage('1', 'user', ''),
|
|
200
|
-
createMessage('2', 'assistant', ' '),
|
|
201
|
-
];
|
|
202
|
-
|
|
203
|
-
const result = (component as any).extractRecentMessages(messages, 1);
|
|
204
|
-
|
|
205
|
-
// Empty content is filtered out
|
|
206
|
-
expect(result.length).toBe(0);
|
|
207
|
-
});
|
|
208
|
-
});
|
|
209
|
-
});
|
|
@@ -1,132 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @fileoverview SessionComponent Custom ID Tests
|
|
3
|
-
*
|
|
4
|
-
* Tests for SessionComponent.create() supporting custom session ID
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
import { describe, it, expect, beforeEach, afterEach } from 'bun:test';
|
|
8
|
-
import { SessionComponent } from './session-component';
|
|
9
|
-
import { MemorySessionStore } from './storage/memory';
|
|
10
|
-
import type { CreateSessionOptions, Session } from './types';
|
|
11
|
-
|
|
12
|
-
describe('SessionComponent.create with custom ID', () => {
|
|
13
|
-
let component: SessionComponent;
|
|
14
|
-
let store: MemorySessionStore;
|
|
15
|
-
|
|
16
|
-
beforeEach(async () => {
|
|
17
|
-
// Create component with memory store
|
|
18
|
-
component = new SessionComponent();
|
|
19
|
-
store = new MemorySessionStore();
|
|
20
|
-
|
|
21
|
-
// Inject mock dependencies
|
|
22
|
-
(component as any).store = store;
|
|
23
|
-
(component as any).hooksConfig = {};
|
|
24
|
-
});
|
|
25
|
-
|
|
26
|
-
describe('custom session ID', () => {
|
|
27
|
-
it('should accept custom session ID in options', async () => {
|
|
28
|
-
const customId = 'workflow_test123';
|
|
29
|
-
|
|
30
|
-
const options: CreateSessionOptions = {
|
|
31
|
-
id: customId,
|
|
32
|
-
title: 'Test Session',
|
|
33
|
-
metadata: { type: 'workflow', workflowName: 'test' },
|
|
34
|
-
};
|
|
35
|
-
|
|
36
|
-
const session = await component.create(options);
|
|
37
|
-
|
|
38
|
-
expect(session.id).toBe(customId);
|
|
39
|
-
expect(session.title).toBe('Test Session');
|
|
40
|
-
});
|
|
41
|
-
|
|
42
|
-
it('should generate ID if not provided', async () => {
|
|
43
|
-
const options: CreateSessionOptions = {
|
|
44
|
-
title: 'Test Session',
|
|
45
|
-
};
|
|
46
|
-
|
|
47
|
-
const session = await component.create(options);
|
|
48
|
-
|
|
49
|
-
expect(session.id).toBeTruthy();
|
|
50
|
-
expect(typeof session.id).toBe('string');
|
|
51
|
-
});
|
|
52
|
-
|
|
53
|
-
it('should preserve workflow-style session ID', async () => {
|
|
54
|
-
const timestamp = Date.now();
|
|
55
|
-
const sessionId = `workflow_${timestamp}_1_abc`;
|
|
56
|
-
|
|
57
|
-
const options: CreateSessionOptions = {
|
|
58
|
-
id: sessionId,
|
|
59
|
-
title: 'Workflow Session',
|
|
60
|
-
};
|
|
61
|
-
|
|
62
|
-
const session = await component.create(options);
|
|
63
|
-
|
|
64
|
-
expect(session.id).toBe(sessionId);
|
|
65
|
-
expect(session.id.startsWith('workflow_')).toBe(true);
|
|
66
|
-
});
|
|
67
|
-
|
|
68
|
-
it('should create workflow session with correct metadata', async () => {
|
|
69
|
-
const sessionId = 'workflow_test_workflow1';
|
|
70
|
-
|
|
71
|
-
const options: CreateSessionOptions = {
|
|
72
|
-
id: sessionId,
|
|
73
|
-
title: 'Workflow: test-workflow',
|
|
74
|
-
metadata: {
|
|
75
|
-
type: 'workflow',
|
|
76
|
-
workflowName: 'test-workflow',
|
|
77
|
-
workflowId: 'wf-123',
|
|
78
|
-
status: 'running',
|
|
79
|
-
},
|
|
80
|
-
};
|
|
81
|
-
|
|
82
|
-
const session = await component.create(options);
|
|
83
|
-
|
|
84
|
-
expect(session.id).toBe(sessionId);
|
|
85
|
-
expect((session.metadata as any).type).toBe('workflow');
|
|
86
|
-
expect((session.metadata as any).workflowName).toBe('test-workflow');
|
|
87
|
-
expect((session.metadata as any).status).toBe('running');
|
|
88
|
-
});
|
|
89
|
-
|
|
90
|
-
it('should allow custom ID with parent session', async () => {
|
|
91
|
-
// First create parent session
|
|
92
|
-
const parentSession = await component.create({
|
|
93
|
-
title: 'Parent Session',
|
|
94
|
-
});
|
|
95
|
-
|
|
96
|
-
// Create child session with custom ID
|
|
97
|
-
const childOptions: CreateSessionOptions = {
|
|
98
|
-
id: `workflow_child_${Date.now()}`,
|
|
99
|
-
title: 'Child Workflow',
|
|
100
|
-
parentID: parentSession.id,
|
|
101
|
-
};
|
|
102
|
-
|
|
103
|
-
const childSession = await component.create(childOptions);
|
|
104
|
-
|
|
105
|
-
expect(childSession.parentID).toBe(parentSession.id);
|
|
106
|
-
expect(childSession.id.startsWith('workflow_child_')).toBe(true);
|
|
107
|
-
});
|
|
108
|
-
});
|
|
109
|
-
|
|
110
|
-
describe('duplicate ID handling', () => {
|
|
111
|
-
it('should throw error if custom ID already exists', async () => {
|
|
112
|
-
const customId = 'workflow_duplicate_test';
|
|
113
|
-
|
|
114
|
-
// Create first session with custom ID
|
|
115
|
-
await component.create({
|
|
116
|
-
id: customId,
|
|
117
|
-
title: 'First Session',
|
|
118
|
-
});
|
|
119
|
-
|
|
120
|
-
// Try to create second session with same ID
|
|
121
|
-
try {
|
|
122
|
-
await component.create({
|
|
123
|
-
id: customId,
|
|
124
|
-
title: 'Second Session',
|
|
125
|
-
});
|
|
126
|
-
expect.fail('Should have thrown an error');
|
|
127
|
-
} catch (error: any) {
|
|
128
|
-
expect(error.message).toContain('already exists');
|
|
129
|
-
}
|
|
130
|
-
});
|
|
131
|
-
});
|
|
132
|
-
});
|