@dexto/core 1.3.0 → 1.5.0
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/README.md +53 -9
- package/dist/agent/DextoAgent.cjs +570 -210
- package/dist/agent/DextoAgent.d.ts +175 -35
- package/dist/agent/DextoAgent.d.ts.map +1 -1
- package/dist/agent/DextoAgent.js +568 -208
- package/dist/agent/agentCard.js +1 -1
- package/dist/agent/error-codes.cjs +1 -0
- package/dist/agent/error-codes.d.ts +2 -1
- package/dist/agent/error-codes.d.ts.map +1 -1
- package/dist/agent/error-codes.js +2 -1
- package/dist/agent/errors.cjs +13 -0
- package/dist/agent/errors.d.ts +4 -0
- package/dist/agent/errors.d.ts.map +1 -1
- package/dist/agent/errors.js +14 -1
- package/dist/agent/index.cjs +4 -1
- package/dist/agent/index.d.ts +2 -2
- package/dist/agent/index.d.ts.map +1 -1
- package/dist/agent/index.js +6 -2
- package/dist/agent/schemas.cjs +90 -68
- package/dist/agent/schemas.d.ts +5998 -146
- package/dist/agent/schemas.d.ts.map +1 -1
- package/dist/agent/schemas.js +90 -65
- package/dist/agent/state-manager.cjs +5 -5
- package/dist/agent/state-manager.d.ts +4 -4
- package/dist/agent/state-manager.js +6 -6
- package/dist/agent/types.d.ts +24 -10
- package/dist/agent/types.d.ts.map +1 -1
- package/dist/approval/error-codes.js +1 -1
- package/dist/approval/errors.js +1 -1
- package/dist/approval/factory.js +1 -1
- package/dist/approval/index.js +1 -1
- package/dist/approval/manager.cjs +234 -4
- package/dist/approval/manager.d.ts +131 -4
- package/dist/approval/manager.d.ts.map +1 -1
- package/dist/approval/manager.js +225 -5
- package/dist/approval/schemas.cjs +57 -7
- package/dist/approval/schemas.d.ts +344 -33
- package/dist/approval/schemas.d.ts.map +1 -1
- package/dist/approval/schemas.js +54 -8
- package/dist/approval/types.cjs +1 -0
- package/dist/approval/types.d.ts +32 -1
- package/dist/approval/types.d.ts.map +1 -1
- package/dist/approval/types.js +2 -1
- package/dist/{chunk-C6A6W6XS.js → chunk-PTJYTZNU.js} +44 -1
- package/dist/context/compaction/factory.cjs +57 -0
- package/dist/context/compaction/factory.d.ts +17 -0
- package/dist/context/compaction/factory.d.ts.map +1 -0
- package/dist/context/compaction/factory.js +34 -0
- package/dist/context/compaction/index.cjs +49 -0
- package/dist/context/compaction/index.d.ts +11 -0
- package/dist/context/compaction/index.d.ts.map +1 -0
- package/dist/context/compaction/index.js +19 -0
- package/dist/context/compaction/overflow.cjs +43 -0
- package/dist/context/compaction/overflow.d.ts +33 -0
- package/dist/context/compaction/overflow.d.ts.map +1 -0
- package/dist/context/compaction/overflow.js +19 -0
- package/dist/context/compaction/provider.cjs +16 -0
- package/dist/context/compaction/provider.d.ts +48 -0
- package/dist/context/compaction/provider.d.ts.map +1 -0
- package/dist/context/compaction/providers/noop-provider.cjs +48 -0
- package/dist/context/compaction/providers/noop-provider.d.ts +24 -0
- package/dist/context/compaction/providers/noop-provider.d.ts.map +1 -0
- package/dist/context/compaction/providers/noop-provider.js +24 -0
- package/dist/context/compaction/providers/reactive-overflow-provider.cjs +61 -0
- package/dist/context/compaction/providers/reactive-overflow-provider.d.ts +36 -0
- package/dist/context/compaction/providers/reactive-overflow-provider.d.ts.map +1 -0
- package/dist/context/compaction/providers/reactive-overflow-provider.js +37 -0
- package/dist/{llm/tokenizer/factory.cjs → context/compaction/registry.cjs} +15 -20
- package/dist/context/compaction/registry.d.ts +19 -0
- package/dist/context/compaction/registry.d.ts.map +1 -0
- package/dist/context/compaction/registry.js +16 -0
- package/dist/context/compaction/schemas.cjs +38 -0
- package/dist/context/compaction/schemas.d.ts +24 -0
- package/dist/context/compaction/schemas.d.ts.map +1 -0
- package/dist/context/compaction/schemas.js +14 -0
- package/dist/{llm/tokenizer/types.cjs → context/compaction/strategies/noop.cjs} +12 -9
- package/dist/context/compaction/strategies/noop.d.ts +18 -0
- package/dist/context/compaction/strategies/noop.d.ts.map +1 -0
- package/dist/context/compaction/strategies/noop.js +13 -0
- package/dist/context/compaction/strategies/reactive-overflow.cjs +201 -0
- package/dist/context/compaction/strategies/reactive-overflow.d.ts +81 -0
- package/dist/context/compaction/strategies/reactive-overflow.d.ts.map +1 -0
- package/dist/context/compaction/strategies/reactive-overflow.js +178 -0
- package/dist/context/compaction/types.d.ts +20 -0
- package/dist/context/compaction/types.d.ts.map +1 -0
- package/dist/context/error-codes.cjs +7 -0
- package/dist/context/error-codes.d.ts +8 -1
- package/dist/context/error-codes.d.ts.map +1 -1
- package/dist/context/error-codes.js +8 -1
- package/dist/context/errors.cjs +68 -0
- package/dist/context/errors.d.ts +21 -0
- package/dist/context/errors.d.ts.map +1 -1
- package/dist/context/errors.js +69 -1
- package/dist/context/index.cjs +3 -1
- package/dist/context/index.d.ts +1 -0
- package/dist/context/index.d.ts.map +1 -1
- package/dist/context/index.js +2 -1
- package/dist/context/manager.cjs +280 -323
- package/dist/context/manager.d.ts +65 -111
- package/dist/context/manager.d.ts.map +1 -1
- package/dist/context/manager.js +280 -328
- package/dist/context/media-helpers.js +1 -1
- package/dist/context/types.cjs +49 -0
- package/dist/context/types.d.ts +187 -72
- package/dist/context/types.d.ts.map +1 -1
- package/dist/context/types.js +35 -0
- package/dist/context/utils.cjs +293 -290
- package/dist/context/utils.d.ts +32 -18
- package/dist/context/utils.d.ts.map +1 -1
- package/dist/context/utils.js +293 -290
- package/dist/errors/DextoBaseError.js +1 -1
- package/dist/errors/DextoRuntimeError.js +1 -1
- package/dist/errors/DextoValidationError.js +1 -1
- package/dist/errors/index.js +1 -1
- package/dist/errors/result-bridge.cjs +2 -3
- package/dist/errors/result-bridge.d.ts.map +1 -1
- package/dist/errors/result-bridge.js +3 -4
- package/dist/errors/types.js +1 -1
- package/dist/events/index.cjs +18 -1
- package/dist/events/index.d.ts +149 -12
- package/dist/events/index.d.ts.map +1 -1
- package/dist/events/index.js +19 -2
- package/dist/filesystem/error-codes.js +1 -1
- package/dist/filesystem/errors.js +1 -1
- package/dist/filesystem/filesystem-service.cjs +39 -0
- package/dist/filesystem/filesystem-service.d.ts +32 -0
- package/dist/filesystem/filesystem-service.d.ts.map +1 -1
- package/dist/filesystem/filesystem-service.js +40 -1
- package/dist/filesystem/index.d.ts +1 -1
- package/dist/filesystem/index.d.ts.map +1 -1
- package/dist/filesystem/index.js +1 -1
- package/dist/filesystem/path-validator.cjs +69 -1
- package/dist/filesystem/path-validator.d.ts +43 -2
- package/dist/filesystem/path-validator.d.ts.map +1 -1
- package/dist/filesystem/path-validator.js +70 -2
- package/dist/image/define-image.cjs +146 -0
- package/dist/image/define-image.d.ts +71 -0
- package/dist/image/define-image.d.ts.map +1 -0
- package/dist/image/define-image.js +121 -0
- package/dist/{llm/tokenizer/default.cjs → image/index.cjs} +10 -19
- package/dist/image/index.d.ts +53 -0
- package/dist/image/index.d.ts.map +1 -0
- package/dist/image/index.js +7 -0
- package/dist/image/types.d.ts +231 -0
- package/dist/image/types.d.ts.map +1 -0
- package/dist/image/types.js +0 -0
- package/dist/index.browser.cjs +23 -8
- package/dist/index.browser.d.ts +4 -3
- package/dist/index.browser.d.ts.map +1 -1
- package/dist/index.browser.js +20 -3
- package/dist/index.cjs +5 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/llm/error-codes.cjs +1 -1
- package/dist/llm/error-codes.d.ts +1 -1
- package/dist/llm/error-codes.d.ts.map +1 -1
- package/dist/llm/error-codes.js +2 -2
- package/dist/llm/errors.cjs +34 -10
- package/dist/llm/errors.d.ts +23 -11
- package/dist/llm/errors.d.ts.map +1 -1
- package/dist/llm/errors.js +36 -12
- package/dist/llm/executor/stream-processor.cjs +375 -0
- package/dist/llm/executor/stream-processor.d.ts +55 -0
- package/dist/llm/executor/stream-processor.d.ts.map +1 -0
- package/dist/llm/executor/stream-processor.js +352 -0
- package/dist/llm/executor/tool-output-truncator.cjs +75 -0
- package/dist/llm/executor/tool-output-truncator.d.ts +27 -0
- package/dist/llm/executor/tool-output-truncator.d.ts.map +1 -0
- package/dist/llm/executor/tool-output-truncator.js +48 -0
- package/dist/llm/executor/turn-executor.cjs +780 -0
- package/dist/llm/executor/turn-executor.d.ts +167 -0
- package/dist/llm/executor/turn-executor.d.ts.map +1 -0
- package/dist/llm/executor/turn-executor.js +711 -0
- package/dist/llm/executor/types.cjs +16 -0
- package/dist/llm/executor/types.d.ts +27 -0
- package/dist/llm/executor/types.d.ts.map +1 -0
- package/dist/llm/executor/types.js +0 -0
- package/dist/llm/formatters/vercel.cjs +26 -188
- package/dist/llm/formatters/vercel.d.ts +2 -14
- package/dist/llm/formatters/vercel.d.ts.map +1 -1
- package/dist/llm/formatters/vercel.js +25 -187
- package/dist/llm/index.cjs +18 -1
- package/dist/llm/index.d.ts +2 -0
- package/dist/llm/index.d.ts.map +1 -1
- package/dist/llm/index.js +14 -0
- package/dist/llm/providers/local/ai-sdk-adapter.cjs +308 -0
- package/dist/llm/providers/local/ai-sdk-adapter.d.ts +29 -0
- package/dist/llm/providers/local/ai-sdk-adapter.d.ts.map +1 -0
- package/dist/llm/providers/local/ai-sdk-adapter.js +278 -0
- package/dist/llm/providers/local/downloader.cjs +291 -0
- package/dist/llm/providers/local/downloader.d.ts +82 -0
- package/dist/llm/providers/local/downloader.d.ts.map +1 -0
- package/dist/llm/providers/local/downloader.js +251 -0
- package/dist/llm/providers/local/error-codes.cjs +57 -0
- package/dist/llm/providers/local/error-codes.d.ts +66 -0
- package/dist/llm/providers/local/error-codes.d.ts.map +1 -0
- package/dist/llm/providers/local/error-codes.js +34 -0
- package/dist/llm/providers/local/errors.cjs +240 -0
- package/dist/llm/providers/local/errors.d.ts +31 -0
- package/dist/llm/providers/local/errors.d.ts.map +1 -0
- package/dist/llm/providers/local/errors.js +217 -0
- package/dist/llm/providers/local/gpu-detector.cjs +214 -0
- package/dist/llm/providers/local/gpu-detector.d.ts +28 -0
- package/dist/llm/providers/local/gpu-detector.d.ts.map +1 -0
- package/dist/llm/providers/local/gpu-detector.js +178 -0
- package/dist/llm/providers/local/index.cjs +147 -0
- package/dist/llm/providers/local/index.d.ts +21 -0
- package/dist/llm/providers/local/index.d.ts.map +1 -0
- package/dist/llm/providers/local/index.js +126 -0
- package/dist/llm/providers/local/node-llama-provider.cjs +216 -0
- package/dist/llm/providers/local/node-llama-provider.d.ts +90 -0
- package/dist/llm/providers/local/node-llama-provider.d.ts.map +1 -0
- package/dist/llm/providers/local/node-llama-provider.js +176 -0
- package/dist/llm/providers/local/ollama-provider.cjs +230 -0
- package/dist/llm/providers/local/ollama-provider.d.ts +70 -0
- package/dist/llm/providers/local/ollama-provider.d.ts.map +1 -0
- package/dist/llm/providers/local/ollama-provider.js +198 -0
- package/dist/llm/providers/local/registry.cjs +343 -0
- package/dist/llm/providers/local/registry.d.ts +51 -0
- package/dist/llm/providers/local/registry.d.ts.map +1 -0
- package/dist/llm/providers/local/registry.js +312 -0
- package/dist/llm/providers/local/schemas.cjs +169 -0
- package/dist/llm/providers/local/schemas.d.ts +395 -0
- package/dist/llm/providers/local/schemas.d.ts.map +1 -0
- package/dist/llm/providers/local/schemas.js +133 -0
- package/dist/llm/providers/local/types.cjs +16 -0
- package/dist/llm/providers/local/types.d.ts +219 -0
- package/dist/llm/providers/local/types.d.ts.map +1 -0
- package/dist/llm/providers/local/types.js +0 -0
- package/dist/llm/providers/openrouter-model-registry.cjs +350 -0
- package/dist/llm/providers/openrouter-model-registry.d.ts +120 -0
- package/dist/llm/providers/openrouter-model-registry.d.ts.map +1 -0
- package/dist/llm/providers/openrouter-model-registry.js +309 -0
- package/dist/llm/registry.cjs +569 -52
- package/dist/llm/registry.d.ts +79 -39
- package/dist/llm/registry.d.ts.map +1 -1
- package/dist/llm/registry.js +564 -49
- package/dist/llm/resolver.cjs +62 -34
- package/dist/llm/resolver.d.ts +3 -3
- package/dist/llm/resolver.d.ts.map +1 -1
- package/dist/llm/resolver.js +69 -38
- package/dist/llm/schemas.cjs +92 -97
- package/dist/llm/schemas.d.ts +162 -39
- package/dist/llm/schemas.d.ts.map +1 -1
- package/dist/llm/schemas.js +93 -100
- package/dist/llm/services/factory.cjs +88 -103
- package/dist/llm/services/factory.d.ts +17 -4
- package/dist/llm/services/factory.d.ts.map +1 -1
- package/dist/llm/services/factory.js +87 -93
- package/dist/llm/services/test-utils.integration.cjs +28 -10
- package/dist/llm/services/test-utils.integration.d.ts +7 -1
- package/dist/llm/services/test-utils.integration.d.ts.map +1 -1
- package/dist/llm/services/test-utils.integration.js +33 -12
- package/dist/llm/services/types.d.ts +1 -28
- package/dist/llm/services/types.d.ts.map +1 -1
- package/dist/llm/services/vercel.cjs +58 -469
- package/dist/llm/services/vercel.d.ts +39 -21
- package/dist/llm/services/vercel.d.ts.map +1 -1
- package/dist/llm/services/vercel.js +60 -476
- package/dist/llm/types.cjs +11 -4
- package/dist/llm/types.d.ts +9 -9
- package/dist/llm/types.d.ts.map +1 -1
- package/dist/llm/types.js +12 -4
- package/dist/llm/validation.js +1 -1
- package/dist/logger/browser.js +1 -1
- package/dist/logger/factory.js +1 -1
- package/dist/logger/index.js +1 -1
- package/dist/logger/logger.js +1 -1
- package/dist/logger/v2/dexto-logger.cjs +34 -6
- package/dist/logger/v2/dexto-logger.d.ts +20 -2
- package/dist/logger/v2/dexto-logger.d.ts.map +1 -1
- package/dist/logger/v2/dexto-logger.js +35 -7
- package/dist/logger/v2/error-codes.js +1 -1
- package/dist/logger/v2/errors.js +1 -1
- package/dist/logger/v2/schemas.js +1 -1
- package/dist/logger/v2/test-utils.cjs +70 -0
- package/dist/logger/v2/test-utils.d.ts +17 -0
- package/dist/logger/v2/test-utils.d.ts.map +1 -0
- package/dist/logger/v2/test-utils.js +46 -0
- package/dist/logger/v2/transport-factory.js +1 -1
- package/dist/logger/v2/transports/console-transport.js +1 -1
- package/dist/logger/v2/transports/file-transport.cjs +6 -0
- package/dist/logger/v2/transports/file-transport.d.ts +4 -0
- package/dist/logger/v2/transports/file-transport.d.ts.map +1 -1
- package/dist/logger/v2/transports/file-transport.js +7 -1
- package/dist/logger/v2/types.cjs +1 -0
- package/dist/logger/v2/types.d.ts +18 -2
- package/dist/logger/v2/types.d.ts.map +1 -1
- package/dist/logger/v2/types.js +2 -1
- package/dist/mcp/error-codes.cjs +1 -0
- package/dist/mcp/error-codes.d.ts +1 -0
- package/dist/mcp/error-codes.d.ts.map +1 -1
- package/dist/mcp/error-codes.js +2 -1
- package/dist/mcp/errors.cjs +13 -0
- package/dist/mcp/errors.d.ts +7 -0
- package/dist/mcp/errors.d.ts.map +1 -1
- package/dist/mcp/errors.js +14 -1
- package/dist/mcp/manager.cjs +12 -0
- package/dist/mcp/manager.d.ts +17 -0
- package/dist/mcp/manager.d.ts.map +1 -1
- package/dist/mcp/manager.js +13 -1
- package/dist/mcp/mcp-client.cjs +0 -3
- package/dist/mcp/mcp-client.d.ts.map +1 -1
- package/dist/mcp/mcp-client.js +1 -4
- package/dist/mcp/resolver.js +1 -1
- package/dist/mcp/schemas.cjs +6 -0
- package/dist/mcp/schemas.d.ts +52 -0
- package/dist/mcp/schemas.d.ts.map +1 -1
- package/dist/mcp/schemas.js +6 -1
- package/dist/memory/error-codes.js +1 -1
- package/dist/memory/errors.js +1 -1
- package/dist/memory/index.js +1 -1
- package/dist/memory/manager.js +1 -1
- package/dist/memory/schemas.d.ts +3 -3
- package/dist/memory/schemas.js +1 -1
- package/dist/plugins/builtins/content-policy.js +1 -1
- package/dist/plugins/builtins/response-sanitizer.js +1 -1
- package/dist/plugins/error-codes.cjs +3 -0
- package/dist/plugins/error-codes.d.ts +7 -1
- package/dist/plugins/error-codes.d.ts.map +1 -1
- package/dist/plugins/error-codes.js +4 -1
- package/dist/plugins/index.cjs +7 -0
- package/dist/plugins/index.d.ts +4 -2
- package/dist/plugins/index.d.ts.map +1 -1
- package/dist/plugins/index.js +7 -2
- package/dist/plugins/loader.js +1 -1
- package/dist/plugins/manager.cjs +92 -7
- package/dist/plugins/manager.d.ts +10 -3
- package/dist/plugins/manager.d.ts.map +1 -1
- package/dist/plugins/manager.js +93 -8
- package/dist/plugins/registrations/builtins.js +1 -1
- package/dist/plugins/registry.cjs +63 -0
- package/dist/plugins/registry.d.ts +101 -0
- package/dist/plugins/registry.d.ts.map +1 -0
- package/dist/plugins/registry.js +39 -0
- package/dist/plugins/schemas.cjs +17 -5
- package/dist/plugins/schemas.d.ts +65 -8
- package/dist/plugins/schemas.d.ts.map +1 -1
- package/dist/plugins/schemas.js +16 -5
- package/dist/plugins/types.d.ts +0 -1
- package/dist/plugins/types.d.ts.map +1 -1
- package/dist/process/command-validator.js +1 -1
- package/dist/process/error-codes.js +1 -1
- package/dist/process/errors.js +1 -1
- package/dist/process/index.js +1 -1
- package/dist/process/process-service.cjs +78 -26
- package/dist/process/process-service.d.ts +6 -1
- package/dist/process/process-service.d.ts.map +1 -1
- package/dist/process/process-service.js +79 -27
- package/dist/process/types.d.ts +2 -2
- package/dist/process/types.d.ts.map +1 -1
- package/dist/prompts/error-codes.cjs +1 -0
- package/dist/prompts/error-codes.d.ts +2 -1
- package/dist/prompts/error-codes.d.ts.map +1 -1
- package/dist/prompts/error-codes.js +2 -1
- package/dist/prompts/errors.cjs +15 -0
- package/dist/prompts/errors.d.ts +4 -0
- package/dist/prompts/errors.d.ts.map +1 -1
- package/dist/prompts/errors.js +16 -1
- package/dist/prompts/index.js +1 -1
- package/dist/prompts/name-validation.js +1 -1
- package/dist/prompts/prompt-manager.cjs +13 -2
- package/dist/prompts/prompt-manager.d.ts +7 -0
- package/dist/prompts/prompt-manager.d.ts.map +1 -1
- package/dist/prompts/prompt-manager.js +14 -3
- package/dist/prompts/providers/config-prompt-provider.cjs +12 -3
- package/dist/prompts/providers/config-prompt-provider.d.ts +2 -1
- package/dist/prompts/providers/config-prompt-provider.d.ts.map +1 -1
- package/dist/prompts/providers/config-prompt-provider.js +13 -4
- package/dist/prompts/providers/custom-prompt-provider.js +1 -1
- package/dist/prompts/providers/mcp-prompt-provider.js +1 -1
- package/dist/prompts/schemas.d.ts +12 -0
- package/dist/prompts/schemas.d.ts.map +1 -1
- package/dist/prompts/schemas.js +1 -1
- package/dist/prompts/types.d.ts +2 -0
- package/dist/prompts/types.d.ts.map +1 -1
- package/dist/prompts/utils.js +1 -1
- package/dist/providers/base-registry.cjs +147 -0
- package/dist/providers/base-registry.d.ts +147 -0
- package/dist/providers/base-registry.d.ts.map +1 -0
- package/dist/providers/base-registry.js +123 -0
- package/dist/providers/discovery.cjs +95 -0
- package/dist/providers/discovery.d.ts +94 -0
- package/dist/providers/discovery.d.ts.map +1 -0
- package/dist/providers/discovery.js +70 -0
- package/dist/providers/index.cjs +24 -0
- package/dist/providers/index.d.ts +32 -0
- package/dist/providers/index.d.ts.map +1 -0
- package/dist/providers/index.js +2 -0
- package/dist/resources/error-codes.js +1 -1
- package/dist/resources/errors.js +1 -1
- package/dist/resources/handlers/blob-handler.js +1 -1
- package/dist/resources/handlers/factory.js +1 -1
- package/dist/resources/handlers/filesystem-handler.js +1 -1
- package/dist/resources/index.js +1 -1
- package/dist/resources/internal-provider.js +1 -1
- package/dist/resources/manager.js +1 -1
- package/dist/resources/reference-parser.cjs +3 -3
- package/dist/resources/reference-parser.d.ts.map +1 -1
- package/dist/resources/reference-parser.js +4 -4
- package/dist/resources/schemas.js +1 -1
- package/dist/search/index.js +1 -1
- package/dist/search/search-service.js +1 -1
- package/dist/session/chat-session.cjs +169 -54
- package/dist/session/chat-session.d.ts +69 -29
- package/dist/session/chat-session.d.ts.map +1 -1
- package/dist/session/chat-session.js +171 -56
- package/dist/session/error-codes.js +1 -1
- package/dist/session/errors.js +1 -1
- package/dist/session/history/database.cjs +134 -21
- package/dist/session/history/database.d.ts +37 -8
- package/dist/session/history/database.d.ts.map +1 -1
- package/dist/session/history/database.js +135 -22
- package/dist/session/history/factory.js +1 -1
- package/dist/session/history/memory.cjs +18 -0
- package/dist/session/history/memory.d.ts +8 -0
- package/dist/session/history/memory.d.ts.map +1 -1
- package/dist/session/history/memory.js +19 -1
- package/dist/session/history/types.d.ts +13 -1
- package/dist/session/history/types.d.ts.map +1 -1
- package/dist/session/index.cjs +3 -0
- package/dist/session/index.d.ts +3 -0
- package/dist/session/index.d.ts.map +1 -1
- package/dist/session/index.js +3 -1
- package/dist/session/message-queue.cjs +201 -0
- package/dist/session/message-queue.d.ts +114 -0
- package/dist/session/message-queue.d.ts.map +1 -0
- package/dist/session/message-queue.js +178 -0
- package/dist/session/schemas.js +1 -1
- package/dist/session/session-manager.cjs +57 -7
- package/dist/session/session-manager.d.ts +18 -0
- package/dist/session/session-manager.d.ts.map +1 -1
- package/dist/session/session-manager.js +58 -8
- package/dist/session/title-generator.cjs +4 -8
- package/dist/session/title-generator.d.ts +1 -2
- package/dist/session/title-generator.d.ts.map +1 -1
- package/dist/session/title-generator.js +5 -9
- package/dist/session/types.cjs +16 -0
- package/dist/session/types.d.ts +14 -0
- package/dist/session/types.d.ts.map +1 -0
- package/dist/session/types.js +0 -0
- package/dist/storage/blob/factory.cjs +8 -11
- package/dist/storage/blob/factory.d.ts +32 -6
- package/dist/storage/blob/factory.d.ts.map +1 -1
- package/dist/storage/blob/factory.js +9 -12
- package/dist/storage/blob/index.cjs +56 -0
- package/dist/storage/blob/index.d.ts +45 -0
- package/dist/storage/blob/index.d.ts.map +1 -0
- package/dist/storage/blob/index.js +30 -0
- package/dist/storage/blob/local-blob-store.js +1 -1
- package/dist/storage/blob/memory-blob-store.js +1 -1
- package/dist/storage/blob/provider.cjs +16 -0
- package/dist/storage/blob/provider.d.ts +50 -0
- package/dist/storage/blob/provider.d.ts.map +1 -0
- package/dist/storage/blob/provider.js +0 -0
- package/dist/storage/blob/providers/index.cjs +31 -0
- package/dist/storage/blob/providers/index.d.ts +8 -0
- package/dist/storage/blob/providers/index.d.ts.map +1 -0
- package/dist/storage/blob/providers/index.js +7 -0
- package/dist/storage/blob/providers/local.cjs +39 -0
- package/dist/storage/blob/providers/local.d.ts +17 -0
- package/dist/storage/blob/providers/local.d.ts.map +1 -0
- package/dist/storage/blob/providers/local.js +16 -0
- package/dist/storage/blob/providers/memory.cjs +39 -0
- package/dist/storage/blob/providers/memory.d.ts +17 -0
- package/dist/storage/blob/providers/memory.d.ts.map +1 -0
- package/dist/storage/blob/providers/memory.js +16 -0
- package/dist/storage/blob/registry.cjs +50 -0
- package/dist/storage/blob/registry.d.ts +42 -0
- package/dist/storage/blob/registry.d.ts.map +1 -0
- package/dist/storage/blob/registry.js +26 -0
- package/dist/storage/blob/schemas.cjs +9 -12
- package/dist/storage/blob/schemas.d.ts +39 -34
- package/dist/storage/blob/schemas.d.ts.map +1 -1
- package/dist/storage/blob/schemas.js +7 -12
- package/dist/storage/cache/factory.cjs +8 -36
- package/dist/storage/cache/factory.d.ts +32 -7
- package/dist/storage/cache/factory.d.ts.map +1 -1
- package/dist/storage/cache/factory.js +9 -27
- package/dist/storage/cache/index.cjs +53 -0
- package/dist/storage/cache/index.d.ts +44 -0
- package/dist/storage/cache/index.d.ts.map +1 -0
- package/dist/storage/cache/index.js +28 -0
- package/dist/storage/cache/memory-cache-store.js +1 -1
- package/dist/storage/cache/provider.cjs +16 -0
- package/dist/storage/cache/provider.d.ts +56 -0
- package/dist/storage/cache/provider.d.ts.map +1 -0
- package/dist/storage/cache/provider.js +0 -0
- package/dist/storage/cache/providers/index.cjs +31 -0
- package/dist/storage/cache/providers/index.d.ts +8 -0
- package/dist/storage/cache/providers/index.d.ts.map +1 -0
- package/dist/storage/cache/providers/index.js +7 -0
- package/dist/storage/cache/providers/memory.cjs +40 -0
- package/dist/storage/cache/providers/memory.d.ts +17 -0
- package/dist/storage/cache/providers/memory.d.ts.map +1 -0
- package/dist/storage/cache/providers/memory.js +17 -0
- package/dist/storage/cache/providers/redis.cjs +66 -0
- package/dist/storage/cache/providers/redis.d.ts +20 -0
- package/dist/storage/cache/providers/redis.d.ts.map +1 -0
- package/dist/storage/cache/providers/redis.js +33 -0
- package/dist/storage/cache/redis-store.js +1 -1
- package/dist/{llm/tokenizer/google.cjs → storage/cache/registry.cjs} +23 -25
- package/dist/storage/cache/registry.d.ts +42 -0
- package/dist/storage/cache/registry.d.ts.map +1 -0
- package/dist/storage/cache/registry.js +26 -0
- package/dist/storage/cache/schemas.cjs +6 -2
- package/dist/storage/cache/schemas.d.ts +2 -3
- package/dist/storage/cache/schemas.d.ts.map +1 -1
- package/dist/storage/cache/schemas.js +4 -2
- package/dist/storage/database/factory.cjs +8 -47
- package/dist/storage/database/factory.d.ts +34 -8
- package/dist/storage/database/factory.d.ts.map +1 -1
- package/dist/storage/database/factory.js +9 -38
- package/dist/storage/database/index.cjs +58 -0
- package/dist/storage/database/index.d.ts +45 -0
- package/dist/storage/database/index.d.ts.map +1 -0
- package/dist/storage/database/index.js +37 -0
- package/dist/storage/database/memory-database-store.js +1 -1
- package/dist/storage/database/postgres-store.cjs +12 -0
- package/dist/storage/database/postgres-store.d.ts.map +1 -1
- package/dist/storage/database/postgres-store.js +13 -1
- package/dist/storage/database/provider.cjs +16 -0
- package/dist/storage/database/provider.d.ts +56 -0
- package/dist/storage/database/provider.d.ts.map +1 -0
- package/dist/storage/database/provider.js +0 -0
- package/dist/storage/database/providers/index.cjs +34 -0
- package/dist/storage/database/providers/index.d.ts +9 -0
- package/dist/storage/database/providers/index.d.ts.map +1 -0
- package/dist/storage/database/providers/index.js +9 -0
- package/dist/storage/database/providers/memory.cjs +40 -0
- package/dist/storage/database/providers/memory.d.ts +16 -0
- package/dist/storage/database/providers/memory.d.ts.map +1 -0
- package/dist/storage/database/providers/memory.js +17 -0
- package/dist/storage/database/providers/postgres.cjs +62 -0
- package/dist/storage/database/providers/postgres.d.ts +19 -0
- package/dist/storage/database/providers/postgres.d.ts.map +1 -0
- package/dist/storage/database/providers/postgres.js +29 -0
- package/dist/storage/database/providers/sqlite.cjs +66 -0
- package/dist/storage/database/providers/sqlite.d.ts +20 -0
- package/dist/storage/database/providers/sqlite.d.ts.map +1 -0
- package/dist/storage/database/providers/sqlite.js +33 -0
- package/dist/storage/database/registry.cjs +50 -0
- package/dist/storage/database/registry.d.ts +42 -0
- package/dist/storage/database/registry.d.ts.map +1 -0
- package/dist/storage/database/registry.js +26 -0
- package/dist/storage/database/schemas.cjs +8 -2
- package/dist/storage/database/schemas.d.ts +3 -4
- package/dist/storage/database/schemas.d.ts.map +1 -1
- package/dist/storage/database/schemas.js +5 -2
- package/dist/storage/database/sqlite-store.js +1 -1
- package/dist/storage/error-codes.cjs +6 -0
- package/dist/storage/error-codes.d.ts +7 -1
- package/dist/storage/error-codes.d.ts.map +1 -1
- package/dist/storage/error-codes.js +7 -1
- package/dist/storage/errors.cjs +80 -0
- package/dist/storage/errors.d.ts +24 -0
- package/dist/storage/errors.d.ts.map +1 -1
- package/dist/storage/errors.js +81 -1
- package/dist/storage/index.cjs +47 -4
- package/dist/storage/index.d.ts +34 -8
- package/dist/storage/index.d.ts.map +1 -1
- package/dist/storage/index.js +33 -4
- package/dist/storage/schemas.cjs +4 -0
- package/dist/storage/schemas.d.ts +17 -50
- package/dist/storage/schemas.d.ts.map +1 -1
- package/dist/storage/schemas.js +6 -2
- package/dist/storage/storage-manager.cjs +6 -6
- package/dist/storage/storage-manager.d.ts.map +1 -1
- package/dist/storage/storage-manager.js +4 -4
- package/dist/systemPrompt/contributors.js +1 -1
- package/dist/systemPrompt/error-codes.js +1 -1
- package/dist/systemPrompt/errors.js +1 -1
- package/dist/systemPrompt/in-built-prompts.cjs +7 -6
- package/dist/systemPrompt/in-built-prompts.d.ts +2 -2
- package/dist/systemPrompt/in-built-prompts.d.ts.map +1 -1
- package/dist/systemPrompt/in-built-prompts.js +7 -6
- package/dist/systemPrompt/index.js +1 -1
- package/dist/systemPrompt/manager.js +1 -1
- package/dist/systemPrompt/registry.cjs +2 -2
- package/dist/systemPrompt/registry.d.ts +1 -1
- package/dist/systemPrompt/registry.d.ts.map +1 -1
- package/dist/systemPrompt/registry.js +3 -3
- package/dist/systemPrompt/schemas.cjs +2 -2
- package/dist/systemPrompt/schemas.d.ts +18 -18
- package/dist/systemPrompt/schemas.js +3 -3
- package/dist/telemetry/decorators.js +1 -1
- package/dist/telemetry/error-codes.js +1 -1
- package/dist/telemetry/errors.js +1 -1
- package/dist/telemetry/exporters.js +1 -1
- package/dist/telemetry/index.js +1 -1
- package/dist/telemetry/schemas.js +1 -1
- package/dist/telemetry/telemetry.js +1 -1
- package/dist/telemetry/utils.js +1 -1
- package/dist/tools/bash-pattern-utils.cjs +91 -0
- package/dist/tools/bash-pattern-utils.d.ts +58 -0
- package/dist/tools/bash-pattern-utils.d.ts.map +1 -0
- package/dist/tools/bash-pattern-utils.js +64 -0
- package/dist/tools/confirmation/allowed-tools-provider/factory.js +1 -1
- package/dist/tools/confirmation/allowed-tools-provider/in-memory.js +1 -1
- package/dist/tools/confirmation/allowed-tools-provider/storage.js +1 -1
- package/dist/tools/custom-tool-registry.cjs +64 -0
- package/dist/tools/custom-tool-registry.d.ts +120 -0
- package/dist/tools/custom-tool-registry.d.ts.map +1 -0
- package/dist/tools/custom-tool-registry.js +40 -0
- package/dist/tools/custom-tool-schema-registry.cjs +164 -0
- package/dist/tools/custom-tool-schema-registry.d.ts +86 -0
- package/dist/tools/custom-tool-schema-registry.d.ts.map +1 -0
- package/dist/tools/custom-tool-schema-registry.js +140 -0
- package/dist/tools/display-types.cjs +60 -0
- package/dist/tools/display-types.d.ts +133 -0
- package/dist/tools/display-types.d.ts.map +1 -0
- package/dist/tools/display-types.js +32 -0
- package/dist/tools/error-codes.cjs +5 -0
- package/dist/tools/error-codes.d.ts +6 -1
- package/dist/tools/error-codes.d.ts.map +1 -1
- package/dist/tools/error-codes.js +6 -1
- package/dist/tools/errors.cjs +71 -0
- package/dist/tools/errors.d.ts +33 -0
- package/dist/tools/errors.d.ts.map +1 -1
- package/dist/tools/errors.js +72 -1
- package/dist/tools/index.cjs +15 -1
- package/dist/tools/index.d.ts +5 -0
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +13 -2
- package/dist/tools/internal-tools/constants.cjs +3 -9
- package/dist/tools/internal-tools/constants.d.ts +1 -1
- package/dist/tools/internal-tools/constants.d.ts.map +1 -1
- package/dist/tools/internal-tools/constants.js +4 -10
- package/dist/tools/internal-tools/implementations/ask-user-tool.cjs +1 -1
- package/dist/tools/internal-tools/implementations/ask-user-tool.js +2 -2
- package/dist/tools/internal-tools/implementations/delegate-to-url-tool.js +1 -1
- package/dist/tools/internal-tools/implementations/get-resource-tool.cjs +113 -0
- package/dist/tools/internal-tools/implementations/get-resource-tool.d.ts +30 -0
- package/dist/tools/internal-tools/implementations/get-resource-tool.d.ts.map +1 -0
- package/dist/tools/internal-tools/implementations/get-resource-tool.js +90 -0
- package/dist/tools/internal-tools/implementations/list-resources-tool.cjs +91 -0
- package/dist/tools/internal-tools/implementations/list-resources-tool.d.ts +24 -0
- package/dist/tools/internal-tools/implementations/list-resources-tool.d.ts.map +1 -0
- package/dist/tools/internal-tools/implementations/list-resources-tool.js +68 -0
- package/dist/tools/internal-tools/implementations/search-history-tool.js +1 -1
- package/dist/tools/internal-tools/provider.cjs +175 -31
- package/dist/tools/internal-tools/provider.d.ts +62 -14
- package/dist/tools/internal-tools/provider.d.ts.map +1 -1
- package/dist/tools/internal-tools/provider.js +176 -32
- package/dist/tools/internal-tools/registry.cjs +19 -43
- package/dist/tools/internal-tools/registry.d.ts +32 -11
- package/dist/tools/internal-tools/registry.d.ts.map +1 -1
- package/dist/tools/internal-tools/registry.js +20 -44
- package/dist/tools/schemas.cjs +36 -6
- package/dist/tools/schemas.d.ts +74 -5
- package/dist/tools/schemas.d.ts.map +1 -1
- package/dist/tools/schemas.js +30 -6
- package/dist/tools/tool-manager.cjs +279 -30
- package/dist/tools/tool-manager.d.ts +45 -4
- package/dist/tools/tool-manager.d.ts.map +1 -1
- package/dist/tools/tool-manager.js +284 -31
- package/dist/tools/types.d.ts +63 -0
- package/dist/tools/types.d.ts.map +1 -1
- package/dist/utils/api-key-resolver.cjs +19 -1
- package/dist/utils/api-key-resolver.d.ts.map +1 -1
- package/dist/utils/api-key-resolver.js +20 -2
- package/dist/utils/async-context.js +1 -1
- package/dist/utils/debug.js +1 -1
- package/dist/{llm/tokenizer/anthropic.cjs → utils/defer.cjs} +19 -20
- package/dist/utils/defer.d.ts +63 -0
- package/dist/utils/defer.d.ts.map +1 -0
- package/dist/utils/defer.js +19 -0
- package/dist/utils/error-conversion.js +1 -1
- package/dist/utils/execution-context.js +1 -1
- package/dist/utils/fs-walk.js +1 -1
- package/dist/utils/index.cjs +3 -3
- package/dist/utils/index.d.ts +1 -1
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +1 -1
- package/dist/utils/path.js +1 -1
- package/dist/utils/redactor.cjs +18 -3
- package/dist/utils/redactor.d.ts +0 -7
- package/dist/utils/redactor.d.ts.map +1 -1
- package/dist/utils/redactor.js +19 -4
- package/dist/utils/result.js +1 -1
- package/dist/utils/safe-stringify.js +1 -1
- package/dist/utils/schema-metadata.js +1 -1
- package/dist/utils/schema.js +1 -1
- package/dist/utils/service-initializer.cjs +15 -37
- package/dist/utils/service-initializer.d.ts.map +1 -1
- package/dist/utils/service-initializer.js +16 -38
- package/dist/utils/user-info.js +1 -1
- package/dist/utils/zod-schema-converter.js +1 -1
- package/package.json +10 -8
- package/dist/context/compression/middle-removal.cjs +0 -95
- package/dist/context/compression/middle-removal.d.ts +0 -47
- package/dist/context/compression/middle-removal.d.ts.map +0 -1
- package/dist/context/compression/middle-removal.js +0 -72
- package/dist/context/compression/oldest-removal.cjs +0 -83
- package/dist/context/compression/oldest-removal.d.ts +0 -42
- package/dist/context/compression/oldest-removal.d.ts.map +0 -1
- package/dist/context/compression/oldest-removal.js +0 -60
- package/dist/context/compression/types.d.ts +0 -18
- package/dist/context/compression/types.d.ts.map +0 -1
- package/dist/llm/formatters/anthropic.cjs +0 -257
- package/dist/llm/formatters/anthropic.d.ts +0 -46
- package/dist/llm/formatters/anthropic.d.ts.map +0 -1
- package/dist/llm/formatters/anthropic.js +0 -239
- package/dist/llm/formatters/factory.cjs +0 -50
- package/dist/llm/formatters/factory.d.ts +0 -10
- package/dist/llm/formatters/factory.d.ts.map +0 -1
- package/dist/llm/formatters/factory.js +0 -27
- package/dist/llm/formatters/openai.cjs +0 -203
- package/dist/llm/formatters/openai.d.ts +0 -39
- package/dist/llm/formatters/openai.d.ts.map +0 -1
- package/dist/llm/formatters/openai.js +0 -184
- package/dist/llm/formatters/types.d.ts +0 -41
- package/dist/llm/formatters/types.d.ts.map +0 -1
- package/dist/llm/services/anthropic.cjs +0 -511
- package/dist/llm/services/anthropic.d.ts +0 -48
- package/dist/llm/services/anthropic.d.ts.map +0 -1
- package/dist/llm/services/anthropic.js +0 -447
- package/dist/llm/services/openai.cjs +0 -611
- package/dist/llm/services/openai.d.ts +0 -48
- package/dist/llm/services/openai.d.ts.map +0 -1
- package/dist/llm/services/openai.js +0 -547
- package/dist/llm/tokenizer/anthropic.d.ts +0 -19
- package/dist/llm/tokenizer/anthropic.d.ts.map +0 -1
- package/dist/llm/tokenizer/anthropic.js +0 -20
- package/dist/llm/tokenizer/default.d.ts +0 -14
- package/dist/llm/tokenizer/default.d.ts.map +0 -1
- package/dist/llm/tokenizer/default.js +0 -18
- package/dist/llm/tokenizer/factory.d.ts +0 -12
- package/dist/llm/tokenizer/factory.d.ts.map +0 -1
- package/dist/llm/tokenizer/factory.js +0 -21
- package/dist/llm/tokenizer/google.d.ts +0 -29
- package/dist/llm/tokenizer/google.d.ts.map +0 -1
- package/dist/llm/tokenizer/google.js +0 -29
- package/dist/llm/tokenizer/openai.cjs +0 -115
- package/dist/llm/tokenizer/openai.d.ts +0 -41
- package/dist/llm/tokenizer/openai.d.ts.map +0 -1
- package/dist/llm/tokenizer/openai.js +0 -91
- package/dist/llm/tokenizer/types.d.ts +0 -18
- package/dist/llm/tokenizer/types.d.ts.map +0 -1
- package/dist/llm/tokenizer/types.js +0 -10
- package/dist/tools/internal-tools/implementations/bash-exec-tool.cjs +0 -106
- package/dist/tools/internal-tools/implementations/bash-exec-tool.d.ts +0 -13
- package/dist/tools/internal-tools/implementations/bash-exec-tool.d.ts.map +0 -1
- package/dist/tools/internal-tools/implementations/bash-exec-tool.js +0 -73
- package/dist/tools/internal-tools/implementations/bash-output-tool.cjs +0 -49
- package/dist/tools/internal-tools/implementations/bash-output-tool.d.ts +0 -12
- package/dist/tools/internal-tools/implementations/bash-output-tool.d.ts.map +0 -1
- package/dist/tools/internal-tools/implementations/bash-output-tool.js +0 -26
- package/dist/tools/internal-tools/implementations/edit-file-tool.cjs +0 -62
- package/dist/tools/internal-tools/implementations/edit-file-tool.d.ts +0 -12
- package/dist/tools/internal-tools/implementations/edit-file-tool.d.ts.map +0 -1
- package/dist/tools/internal-tools/implementations/edit-file-tool.js +0 -39
- package/dist/tools/internal-tools/implementations/glob-files-tool.cjs +0 -57
- package/dist/tools/internal-tools/implementations/glob-files-tool.d.ts +0 -12
- package/dist/tools/internal-tools/implementations/glob-files-tool.d.ts.map +0 -1
- package/dist/tools/internal-tools/implementations/glob-files-tool.js +0 -34
- package/dist/tools/internal-tools/implementations/grep-content-tool.cjs +0 -71
- package/dist/tools/internal-tools/implementations/grep-content-tool.d.ts +0 -12
- package/dist/tools/internal-tools/implementations/grep-content-tool.d.ts.map +0 -1
- package/dist/tools/internal-tools/implementations/grep-content-tool.js +0 -48
- package/dist/tools/internal-tools/implementations/kill-process-tool.cjs +0 -47
- package/dist/tools/internal-tools/implementations/kill-process-tool.d.ts +0 -12
- package/dist/tools/internal-tools/implementations/kill-process-tool.d.ts.map +0 -1
- package/dist/tools/internal-tools/implementations/kill-process-tool.js +0 -24
- package/dist/tools/internal-tools/implementations/read-file-tool.cjs +0 -55
- package/dist/tools/internal-tools/implementations/read-file-tool.d.ts +0 -12
- package/dist/tools/internal-tools/implementations/read-file-tool.d.ts.map +0 -1
- package/dist/tools/internal-tools/implementations/read-file-tool.js +0 -32
- package/dist/tools/internal-tools/implementations/write-file-tool.cjs +0 -56
- package/dist/tools/internal-tools/implementations/write-file-tool.d.ts +0 -12
- package/dist/tools/internal-tools/implementations/write-file-tool.d.ts.map +0 -1
- package/dist/tools/internal-tools/implementations/write-file-tool.js +0 -33
- package/dist/utils/env-file.cjs +0 -118
- package/dist/utils/env-file.d.ts +0 -5
- package/dist/utils/env-file.d.ts.map +0 -1
- package/dist/utils/env-file.js +0 -85
- /package/dist/context/{compression/types.js → compaction/provider.js} +0 -0
- /package/dist/context/{compression → compaction}/types.cjs +0 -0
- /package/dist/{llm/formatters → context/compaction}/types.js +0 -0
- /package/dist/{llm/formatters → image}/types.cjs +0 -0
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var message_queue_exports = {};
|
|
20
|
+
__export(message_queue_exports, {
|
|
21
|
+
MessageQueueService: () => MessageQueueService
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(message_queue_exports);
|
|
24
|
+
function generateId() {
|
|
25
|
+
return `msg_${Date.now()}_${Math.random().toString(36).slice(2, 11)}`;
|
|
26
|
+
}
|
|
27
|
+
class MessageQueueService {
|
|
28
|
+
constructor(eventBus, logger) {
|
|
29
|
+
this.eventBus = eventBus;
|
|
30
|
+
this.logger = logger;
|
|
31
|
+
}
|
|
32
|
+
queue = [];
|
|
33
|
+
/**
|
|
34
|
+
* Add a message to the queue.
|
|
35
|
+
* Called by API endpoint - returns immediately with queue position.
|
|
36
|
+
*
|
|
37
|
+
* @param message The user message to queue
|
|
38
|
+
* @returns Queue position and message ID
|
|
39
|
+
*/
|
|
40
|
+
enqueue(message) {
|
|
41
|
+
const queuedMsg = {
|
|
42
|
+
id: generateId(),
|
|
43
|
+
content: message.content,
|
|
44
|
+
queuedAt: Date.now(),
|
|
45
|
+
...message.metadata !== void 0 && { metadata: message.metadata }
|
|
46
|
+
};
|
|
47
|
+
this.queue.push(queuedMsg);
|
|
48
|
+
this.logger.debug(`Message queued: ${queuedMsg.id}, position: ${this.queue.length}`);
|
|
49
|
+
this.eventBus.emit("message:queued", {
|
|
50
|
+
position: this.queue.length,
|
|
51
|
+
id: queuedMsg.id
|
|
52
|
+
});
|
|
53
|
+
return {
|
|
54
|
+
queued: true,
|
|
55
|
+
position: this.queue.length,
|
|
56
|
+
id: queuedMsg.id
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Dequeue ALL pending messages and coalesce into single injection.
|
|
61
|
+
* Called by executor between steps.
|
|
62
|
+
*
|
|
63
|
+
* Multiple queued messages become ONE combined message to the LLM.
|
|
64
|
+
*
|
|
65
|
+
* @example
|
|
66
|
+
* If 3 messages are queued: "stop", "try X instead", "also check Y"
|
|
67
|
+
* They become:
|
|
68
|
+
* ```
|
|
69
|
+
* [1]: stop
|
|
70
|
+
*
|
|
71
|
+
* [2]: try X instead
|
|
72
|
+
*
|
|
73
|
+
* [3]: also check Y
|
|
74
|
+
* ```
|
|
75
|
+
*
|
|
76
|
+
* @returns Coalesced message or null if queue is empty
|
|
77
|
+
*/
|
|
78
|
+
dequeueAll() {
|
|
79
|
+
if (this.queue.length === 0) return null;
|
|
80
|
+
const messages = [...this.queue];
|
|
81
|
+
this.queue = [];
|
|
82
|
+
const combined = this.coalesce(messages);
|
|
83
|
+
this.logger.debug(
|
|
84
|
+
`Dequeued ${messages.length} message(s): ${messages.map((m) => m.id).join(", ")}`
|
|
85
|
+
);
|
|
86
|
+
this.eventBus.emit("message:dequeued", {
|
|
87
|
+
count: messages.length,
|
|
88
|
+
ids: messages.map((m) => m.id),
|
|
89
|
+
coalesced: messages.length > 1,
|
|
90
|
+
content: combined.combinedContent
|
|
91
|
+
});
|
|
92
|
+
return combined;
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Coalesce multiple messages into one (multimodal-aware).
|
|
96
|
+
* Strategy: Combine with numbered separators, preserve all media.
|
|
97
|
+
*/
|
|
98
|
+
coalesce(messages) {
|
|
99
|
+
if (messages.length === 1) {
|
|
100
|
+
const firstMsg = messages[0];
|
|
101
|
+
if (!firstMsg) {
|
|
102
|
+
throw new Error("Unexpected empty messages array");
|
|
103
|
+
}
|
|
104
|
+
return {
|
|
105
|
+
messages,
|
|
106
|
+
combinedContent: firstMsg.content,
|
|
107
|
+
firstQueuedAt: firstMsg.queuedAt,
|
|
108
|
+
lastQueuedAt: firstMsg.queuedAt
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
const combinedContent = [];
|
|
112
|
+
for (const [i, msg] of messages.entries()) {
|
|
113
|
+
const prefix = messages.length === 2 ? i === 0 ? "First" : "Also" : `[${i + 1}]`;
|
|
114
|
+
let prefixText = `${prefix}: `;
|
|
115
|
+
for (const part of msg.content) {
|
|
116
|
+
if (part.type === "text") {
|
|
117
|
+
if (prefixText) {
|
|
118
|
+
combinedContent.push({ type: "text", text: prefixText + part.text });
|
|
119
|
+
prefixText = "";
|
|
120
|
+
} else {
|
|
121
|
+
combinedContent.push(part);
|
|
122
|
+
}
|
|
123
|
+
} else {
|
|
124
|
+
if (prefixText) {
|
|
125
|
+
combinedContent.push({ type: "text", text: prefixText });
|
|
126
|
+
prefixText = "";
|
|
127
|
+
}
|
|
128
|
+
combinedContent.push(part);
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
if (prefixText && msg.content.length === 0) {
|
|
132
|
+
combinedContent.push({ type: "text", text: prefixText + "[empty message]" });
|
|
133
|
+
}
|
|
134
|
+
if (i < messages.length - 1) {
|
|
135
|
+
combinedContent.push({ type: "text", text: "\n\n" });
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
const firstMessage = messages[0];
|
|
139
|
+
const lastMessage = messages[messages.length - 1];
|
|
140
|
+
if (!firstMessage || !lastMessage) {
|
|
141
|
+
throw new Error("Unexpected undefined message in non-empty array");
|
|
142
|
+
}
|
|
143
|
+
return {
|
|
144
|
+
messages,
|
|
145
|
+
combinedContent,
|
|
146
|
+
firstQueuedAt: firstMessage.queuedAt,
|
|
147
|
+
lastQueuedAt: lastMessage.queuedAt
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Check if there are pending messages in the queue.
|
|
152
|
+
*/
|
|
153
|
+
hasPending() {
|
|
154
|
+
return this.queue.length > 0;
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Get the number of pending messages.
|
|
158
|
+
*/
|
|
159
|
+
pendingCount() {
|
|
160
|
+
return this.queue.length;
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Clear all pending messages without processing.
|
|
164
|
+
* Used during cleanup/abort.
|
|
165
|
+
*/
|
|
166
|
+
clear() {
|
|
167
|
+
this.queue = [];
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Get all queued messages (for UI display).
|
|
171
|
+
* Returns a shallow copy to prevent external mutation.
|
|
172
|
+
*/
|
|
173
|
+
getAll() {
|
|
174
|
+
return [...this.queue];
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* Get a single queued message by ID.
|
|
178
|
+
*/
|
|
179
|
+
get(id) {
|
|
180
|
+
return this.queue.find((m) => m.id === id);
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Remove a single queued message by ID.
|
|
184
|
+
* @returns true if message was found and removed; false otherwise
|
|
185
|
+
*/
|
|
186
|
+
remove(id) {
|
|
187
|
+
const index = this.queue.findIndex((m) => m.id === id);
|
|
188
|
+
if (index === -1) {
|
|
189
|
+
this.logger.debug(`Remove failed: message ${id} not found in queue`);
|
|
190
|
+
return false;
|
|
191
|
+
}
|
|
192
|
+
this.queue.splice(index, 1);
|
|
193
|
+
this.logger.debug(`Message removed: ${id}, remaining: ${this.queue.length}`);
|
|
194
|
+
this.eventBus.emit("message:removed", { id });
|
|
195
|
+
return true;
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
199
|
+
0 && (module.exports = {
|
|
200
|
+
MessageQueueService
|
|
201
|
+
});
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import type { SessionEventBus } from '../events/index.js';
|
|
2
|
+
import type { QueuedMessage, CoalescedMessage } from './types.js';
|
|
3
|
+
import type { ContentPart } from '../context/types.js';
|
|
4
|
+
import type { IDextoLogger } from '../logger/v2/types.js';
|
|
5
|
+
/**
|
|
6
|
+
* Input for enqueuing a user message to the queue.
|
|
7
|
+
* (Not to be confused with UserMessage from context/types.ts which represents
|
|
8
|
+
* a message in conversation history)
|
|
9
|
+
*/
|
|
10
|
+
export interface UserMessageInput {
|
|
11
|
+
/** Multimodal content array (text, images, files, etc.) */
|
|
12
|
+
content: ContentPart[];
|
|
13
|
+
/** Optional metadata to attach to the message */
|
|
14
|
+
metadata?: Record<string, unknown>;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* MessageQueueService handles queuing of user messages during agent execution.
|
|
18
|
+
*
|
|
19
|
+
* Key features:
|
|
20
|
+
* - Accepts messages when the agent is busy executing tools
|
|
21
|
+
* - Coalesces multiple queued messages into a single injection
|
|
22
|
+
* - Supports multimodal content (text, images, files)
|
|
23
|
+
*
|
|
24
|
+
* This enables user guidance where users can send
|
|
25
|
+
* mid-task instructions like "stop" or "try a different approach".
|
|
26
|
+
*
|
|
27
|
+
* @example
|
|
28
|
+
* ```typescript
|
|
29
|
+
* // In API handler - queue message if agent is busy
|
|
30
|
+
* if (agent.isBusy()) {
|
|
31
|
+
* return messageQueue.enqueue({ content: [{ type: 'text', text: 'stop' }] });
|
|
32
|
+
* }
|
|
33
|
+
*
|
|
34
|
+
* // In TurnExecutor - check for queued messages
|
|
35
|
+
* const coalesced = messageQueue.dequeueAll();
|
|
36
|
+
* if (coalesced) {
|
|
37
|
+
* await contextManager.addMessage({
|
|
38
|
+
* role: 'user',
|
|
39
|
+
* content: coalesced.combinedContent,
|
|
40
|
+
* });
|
|
41
|
+
* }
|
|
42
|
+
* ```
|
|
43
|
+
*/
|
|
44
|
+
export declare class MessageQueueService {
|
|
45
|
+
private eventBus;
|
|
46
|
+
private logger;
|
|
47
|
+
private queue;
|
|
48
|
+
constructor(eventBus: SessionEventBus, logger: IDextoLogger);
|
|
49
|
+
/**
|
|
50
|
+
* Add a message to the queue.
|
|
51
|
+
* Called by API endpoint - returns immediately with queue position.
|
|
52
|
+
*
|
|
53
|
+
* @param message The user message to queue
|
|
54
|
+
* @returns Queue position and message ID
|
|
55
|
+
*/
|
|
56
|
+
enqueue(message: UserMessageInput): {
|
|
57
|
+
queued: true;
|
|
58
|
+
position: number;
|
|
59
|
+
id: string;
|
|
60
|
+
};
|
|
61
|
+
/**
|
|
62
|
+
* Dequeue ALL pending messages and coalesce into single injection.
|
|
63
|
+
* Called by executor between steps.
|
|
64
|
+
*
|
|
65
|
+
* Multiple queued messages become ONE combined message to the LLM.
|
|
66
|
+
*
|
|
67
|
+
* @example
|
|
68
|
+
* If 3 messages are queued: "stop", "try X instead", "also check Y"
|
|
69
|
+
* They become:
|
|
70
|
+
* ```
|
|
71
|
+
* [1]: stop
|
|
72
|
+
*
|
|
73
|
+
* [2]: try X instead
|
|
74
|
+
*
|
|
75
|
+
* [3]: also check Y
|
|
76
|
+
* ```
|
|
77
|
+
*
|
|
78
|
+
* @returns Coalesced message or null if queue is empty
|
|
79
|
+
*/
|
|
80
|
+
dequeueAll(): CoalescedMessage | null;
|
|
81
|
+
/**
|
|
82
|
+
* Coalesce multiple messages into one (multimodal-aware).
|
|
83
|
+
* Strategy: Combine with numbered separators, preserve all media.
|
|
84
|
+
*/
|
|
85
|
+
private coalesce;
|
|
86
|
+
/**
|
|
87
|
+
* Check if there are pending messages in the queue.
|
|
88
|
+
*/
|
|
89
|
+
hasPending(): boolean;
|
|
90
|
+
/**
|
|
91
|
+
* Get the number of pending messages.
|
|
92
|
+
*/
|
|
93
|
+
pendingCount(): number;
|
|
94
|
+
/**
|
|
95
|
+
* Clear all pending messages without processing.
|
|
96
|
+
* Used during cleanup/abort.
|
|
97
|
+
*/
|
|
98
|
+
clear(): void;
|
|
99
|
+
/**
|
|
100
|
+
* Get all queued messages (for UI display).
|
|
101
|
+
* Returns a shallow copy to prevent external mutation.
|
|
102
|
+
*/
|
|
103
|
+
getAll(): QueuedMessage[];
|
|
104
|
+
/**
|
|
105
|
+
* Get a single queued message by ID.
|
|
106
|
+
*/
|
|
107
|
+
get(id: string): QueuedMessage | undefined;
|
|
108
|
+
/**
|
|
109
|
+
* Remove a single queued message by ID.
|
|
110
|
+
* @returns true if message was found and removed; false otherwise
|
|
111
|
+
*/
|
|
112
|
+
remove(id: string): boolean;
|
|
113
|
+
}
|
|
114
|
+
//# sourceMappingURL=message-queue.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"message-queue.d.ts","sourceRoot":"","sources":["../../src/session/message-queue.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAClE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAS1D;;;;GAIG;AACH,MAAM,WAAW,gBAAgB;IAC7B,2DAA2D;IAC3D,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,iDAAiD;IACjD,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACtC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,qBAAa,mBAAmB;IAIxB,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,MAAM;IAJlB,OAAO,CAAC,KAAK,CAAuB;gBAGxB,QAAQ,EAAE,eAAe,EACzB,MAAM,EAAE,YAAY;IAGhC;;;;;;OAMG;IACH,OAAO,CAAC,OAAO,EAAE,gBAAgB,GAAG;QAAE,MAAM,EAAE,IAAI,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE;IAwBlF;;;;;;;;;;;;;;;;;;OAkBG;IACH,UAAU,IAAI,gBAAgB,GAAG,IAAI;IAsBrC;;;OAGG;IACH,OAAO,CAAC,QAAQ;IA0EhB;;OAEG;IACH,UAAU,IAAI,OAAO;IAIrB;;OAEG;IACH,YAAY,IAAI,MAAM;IAItB;;;OAGG;IACH,KAAK,IAAI,IAAI;IAIb;;;OAGG;IACH,MAAM,IAAI,aAAa,EAAE;IAIzB;;OAEG;IACH,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IAI1C;;;OAGG;IACH,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;CAY9B"}
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
import "../chunk-PTJYTZNU.js";
|
|
2
|
+
function generateId() {
|
|
3
|
+
return `msg_${Date.now()}_${Math.random().toString(36).slice(2, 11)}`;
|
|
4
|
+
}
|
|
5
|
+
class MessageQueueService {
|
|
6
|
+
constructor(eventBus, logger) {
|
|
7
|
+
this.eventBus = eventBus;
|
|
8
|
+
this.logger = logger;
|
|
9
|
+
}
|
|
10
|
+
queue = [];
|
|
11
|
+
/**
|
|
12
|
+
* Add a message to the queue.
|
|
13
|
+
* Called by API endpoint - returns immediately with queue position.
|
|
14
|
+
*
|
|
15
|
+
* @param message The user message to queue
|
|
16
|
+
* @returns Queue position and message ID
|
|
17
|
+
*/
|
|
18
|
+
enqueue(message) {
|
|
19
|
+
const queuedMsg = {
|
|
20
|
+
id: generateId(),
|
|
21
|
+
content: message.content,
|
|
22
|
+
queuedAt: Date.now(),
|
|
23
|
+
...message.metadata !== void 0 && { metadata: message.metadata }
|
|
24
|
+
};
|
|
25
|
+
this.queue.push(queuedMsg);
|
|
26
|
+
this.logger.debug(`Message queued: ${queuedMsg.id}, position: ${this.queue.length}`);
|
|
27
|
+
this.eventBus.emit("message:queued", {
|
|
28
|
+
position: this.queue.length,
|
|
29
|
+
id: queuedMsg.id
|
|
30
|
+
});
|
|
31
|
+
return {
|
|
32
|
+
queued: true,
|
|
33
|
+
position: this.queue.length,
|
|
34
|
+
id: queuedMsg.id
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Dequeue ALL pending messages and coalesce into single injection.
|
|
39
|
+
* Called by executor between steps.
|
|
40
|
+
*
|
|
41
|
+
* Multiple queued messages become ONE combined message to the LLM.
|
|
42
|
+
*
|
|
43
|
+
* @example
|
|
44
|
+
* If 3 messages are queued: "stop", "try X instead", "also check Y"
|
|
45
|
+
* They become:
|
|
46
|
+
* ```
|
|
47
|
+
* [1]: stop
|
|
48
|
+
*
|
|
49
|
+
* [2]: try X instead
|
|
50
|
+
*
|
|
51
|
+
* [3]: also check Y
|
|
52
|
+
* ```
|
|
53
|
+
*
|
|
54
|
+
* @returns Coalesced message or null if queue is empty
|
|
55
|
+
*/
|
|
56
|
+
dequeueAll() {
|
|
57
|
+
if (this.queue.length === 0) return null;
|
|
58
|
+
const messages = [...this.queue];
|
|
59
|
+
this.queue = [];
|
|
60
|
+
const combined = this.coalesce(messages);
|
|
61
|
+
this.logger.debug(
|
|
62
|
+
`Dequeued ${messages.length} message(s): ${messages.map((m) => m.id).join(", ")}`
|
|
63
|
+
);
|
|
64
|
+
this.eventBus.emit("message:dequeued", {
|
|
65
|
+
count: messages.length,
|
|
66
|
+
ids: messages.map((m) => m.id),
|
|
67
|
+
coalesced: messages.length > 1,
|
|
68
|
+
content: combined.combinedContent
|
|
69
|
+
});
|
|
70
|
+
return combined;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Coalesce multiple messages into one (multimodal-aware).
|
|
74
|
+
* Strategy: Combine with numbered separators, preserve all media.
|
|
75
|
+
*/
|
|
76
|
+
coalesce(messages) {
|
|
77
|
+
if (messages.length === 1) {
|
|
78
|
+
const firstMsg = messages[0];
|
|
79
|
+
if (!firstMsg) {
|
|
80
|
+
throw new Error("Unexpected empty messages array");
|
|
81
|
+
}
|
|
82
|
+
return {
|
|
83
|
+
messages,
|
|
84
|
+
combinedContent: firstMsg.content,
|
|
85
|
+
firstQueuedAt: firstMsg.queuedAt,
|
|
86
|
+
lastQueuedAt: firstMsg.queuedAt
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
const combinedContent = [];
|
|
90
|
+
for (const [i, msg] of messages.entries()) {
|
|
91
|
+
const prefix = messages.length === 2 ? i === 0 ? "First" : "Also" : `[${i + 1}]`;
|
|
92
|
+
let prefixText = `${prefix}: `;
|
|
93
|
+
for (const part of msg.content) {
|
|
94
|
+
if (part.type === "text") {
|
|
95
|
+
if (prefixText) {
|
|
96
|
+
combinedContent.push({ type: "text", text: prefixText + part.text });
|
|
97
|
+
prefixText = "";
|
|
98
|
+
} else {
|
|
99
|
+
combinedContent.push(part);
|
|
100
|
+
}
|
|
101
|
+
} else {
|
|
102
|
+
if (prefixText) {
|
|
103
|
+
combinedContent.push({ type: "text", text: prefixText });
|
|
104
|
+
prefixText = "";
|
|
105
|
+
}
|
|
106
|
+
combinedContent.push(part);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
if (prefixText && msg.content.length === 0) {
|
|
110
|
+
combinedContent.push({ type: "text", text: prefixText + "[empty message]" });
|
|
111
|
+
}
|
|
112
|
+
if (i < messages.length - 1) {
|
|
113
|
+
combinedContent.push({ type: "text", text: "\n\n" });
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
const firstMessage = messages[0];
|
|
117
|
+
const lastMessage = messages[messages.length - 1];
|
|
118
|
+
if (!firstMessage || !lastMessage) {
|
|
119
|
+
throw new Error("Unexpected undefined message in non-empty array");
|
|
120
|
+
}
|
|
121
|
+
return {
|
|
122
|
+
messages,
|
|
123
|
+
combinedContent,
|
|
124
|
+
firstQueuedAt: firstMessage.queuedAt,
|
|
125
|
+
lastQueuedAt: lastMessage.queuedAt
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Check if there are pending messages in the queue.
|
|
130
|
+
*/
|
|
131
|
+
hasPending() {
|
|
132
|
+
return this.queue.length > 0;
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Get the number of pending messages.
|
|
136
|
+
*/
|
|
137
|
+
pendingCount() {
|
|
138
|
+
return this.queue.length;
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Clear all pending messages without processing.
|
|
142
|
+
* Used during cleanup/abort.
|
|
143
|
+
*/
|
|
144
|
+
clear() {
|
|
145
|
+
this.queue = [];
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Get all queued messages (for UI display).
|
|
149
|
+
* Returns a shallow copy to prevent external mutation.
|
|
150
|
+
*/
|
|
151
|
+
getAll() {
|
|
152
|
+
return [...this.queue];
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Get a single queued message by ID.
|
|
156
|
+
*/
|
|
157
|
+
get(id) {
|
|
158
|
+
return this.queue.find((m) => m.id === id);
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Remove a single queued message by ID.
|
|
162
|
+
* @returns true if message was found and removed; false otherwise
|
|
163
|
+
*/
|
|
164
|
+
remove(id) {
|
|
165
|
+
const index = this.queue.findIndex((m) => m.id === id);
|
|
166
|
+
if (index === -1) {
|
|
167
|
+
this.logger.debug(`Remove failed: message ${id} not found in queue`);
|
|
168
|
+
return false;
|
|
169
|
+
}
|
|
170
|
+
this.queue.splice(index, 1);
|
|
171
|
+
this.logger.debug(`Message removed: ${id}, remaining: ${this.queue.length}`);
|
|
172
|
+
this.eventBus.emit("message:removed", { id });
|
|
173
|
+
return true;
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
export {
|
|
177
|
+
MessageQueueService
|
|
178
|
+
};
|
package/dist/session/schemas.js
CHANGED
|
@@ -40,6 +40,8 @@ class SessionManager {
|
|
|
40
40
|
initializationPromise;
|
|
41
41
|
// Add a Map to track ongoing session creation operations to prevent race conditions
|
|
42
42
|
pendingCreations = /* @__PURE__ */ new Map();
|
|
43
|
+
// Per-session mutex for token usage updates to prevent lost updates from concurrent calls
|
|
44
|
+
tokenUsageLocks = /* @__PURE__ */ new Map();
|
|
43
45
|
logger;
|
|
44
46
|
/**
|
|
45
47
|
* Initialize the SessionManager with persistent storage.
|
|
@@ -295,12 +297,17 @@ class SessionManager {
|
|
|
295
297
|
await this.ensureInitialized();
|
|
296
298
|
const sessionKey = `session:${sessionId}`;
|
|
297
299
|
const sessionData = await this.services.storageManager.getDatabase().get(sessionKey);
|
|
298
|
-
|
|
300
|
+
if (!sessionData) return void 0;
|
|
301
|
+
return {
|
|
299
302
|
createdAt: sessionData.createdAt,
|
|
300
303
|
lastActivity: sessionData.lastActivity,
|
|
301
304
|
messageCount: sessionData.messageCount,
|
|
302
|
-
title: sessionData.metadata?.title
|
|
303
|
-
|
|
305
|
+
title: sessionData.metadata?.title,
|
|
306
|
+
...sessionData.tokenUsage && { tokenUsage: sessionData.tokenUsage },
|
|
307
|
+
...sessionData.estimatedCost !== void 0 && {
|
|
308
|
+
estimatedCost: sessionData.estimatedCost
|
|
309
|
+
}
|
|
310
|
+
};
|
|
304
311
|
}
|
|
305
312
|
/**
|
|
306
313
|
* Get the global session manager configuration.
|
|
@@ -337,6 +344,51 @@ class SessionManager {
|
|
|
337
344
|
await this.services.storageManager.getCache().set(sessionKey, sessionData, this.sessionTTL / 1e3);
|
|
338
345
|
}
|
|
339
346
|
}
|
|
347
|
+
/**
|
|
348
|
+
* Accumulates token usage for a session.
|
|
349
|
+
* Called after each LLM response to update session-level totals.
|
|
350
|
+
*
|
|
351
|
+
* Uses per-session locking to prevent lost updates from concurrent calls.
|
|
352
|
+
*/
|
|
353
|
+
async accumulateTokenUsage(sessionId, usage, cost) {
|
|
354
|
+
await this.ensureInitialized();
|
|
355
|
+
const sessionKey = `session:${sessionId}`;
|
|
356
|
+
const previousLock = this.tokenUsageLocks.get(sessionKey) ?? Promise.resolve();
|
|
357
|
+
const currentLock = previousLock.then(async () => {
|
|
358
|
+
const sessionData = await this.services.storageManager.getDatabase().get(sessionKey);
|
|
359
|
+
if (!sessionData) return;
|
|
360
|
+
if (!sessionData.tokenUsage) {
|
|
361
|
+
sessionData.tokenUsage = {
|
|
362
|
+
inputTokens: 0,
|
|
363
|
+
outputTokens: 0,
|
|
364
|
+
reasoningTokens: 0,
|
|
365
|
+
cacheReadTokens: 0,
|
|
366
|
+
cacheWriteTokens: 0,
|
|
367
|
+
totalTokens: 0
|
|
368
|
+
};
|
|
369
|
+
}
|
|
370
|
+
sessionData.tokenUsage.inputTokens += usage.inputTokens ?? 0;
|
|
371
|
+
sessionData.tokenUsage.outputTokens += usage.outputTokens ?? 0;
|
|
372
|
+
sessionData.tokenUsage.reasoningTokens += usage.reasoningTokens ?? 0;
|
|
373
|
+
sessionData.tokenUsage.cacheReadTokens += usage.cacheReadTokens ?? 0;
|
|
374
|
+
sessionData.tokenUsage.cacheWriteTokens += usage.cacheWriteTokens ?? 0;
|
|
375
|
+
sessionData.tokenUsage.totalTokens += usage.totalTokens ?? 0;
|
|
376
|
+
if (cost !== void 0) {
|
|
377
|
+
sessionData.estimatedCost = (sessionData.estimatedCost ?? 0) + cost;
|
|
378
|
+
}
|
|
379
|
+
sessionData.lastActivity = Date.now();
|
|
380
|
+
await this.services.storageManager.getDatabase().set(sessionKey, sessionData);
|
|
381
|
+
await this.services.storageManager.getCache().set(sessionKey, sessionData, this.sessionTTL / 1e3);
|
|
382
|
+
});
|
|
383
|
+
this.tokenUsageLocks.set(sessionKey, currentLock);
|
|
384
|
+
try {
|
|
385
|
+
await currentLock;
|
|
386
|
+
} finally {
|
|
387
|
+
if (this.tokenUsageLocks.get(sessionKey) === currentLock) {
|
|
388
|
+
this.tokenUsageLocks.delete(sessionKey);
|
|
389
|
+
}
|
|
390
|
+
}
|
|
391
|
+
}
|
|
340
392
|
/**
|
|
341
393
|
* Sets the human-friendly title for a session.
|
|
342
394
|
* Title is stored in session metadata and cached with TTL.
|
|
@@ -422,11 +474,10 @@ class SessionManager {
|
|
|
422
474
|
}
|
|
423
475
|
this.services.agentEventBus.emit("llm:switched", {
|
|
424
476
|
newConfig: newLLMConfig,
|
|
425
|
-
router: newLLMConfig.router,
|
|
426
477
|
historyRetained: true,
|
|
427
478
|
sessionIds: sessionIds.filter((id) => !failedSessions.includes(id))
|
|
428
479
|
});
|
|
429
|
-
const message = failedSessions.length > 0 ? `Successfully switched to ${newLLMConfig.provider}/${newLLMConfig.model}
|
|
480
|
+
const message = failedSessions.length > 0 ? `Successfully switched to ${newLLMConfig.provider}/${newLLMConfig.model} (${failedSessions.length} sessions failed)` : `Successfully switched to ${newLLMConfig.provider}/${newLLMConfig.model} for all sessions`;
|
|
430
481
|
const warnings = failedSessions.length > 0 ? [`Failed to switch LLM for sessions: ${failedSessions.join(", ")}`] : [];
|
|
431
482
|
return { message, warnings };
|
|
432
483
|
}
|
|
@@ -444,11 +495,10 @@ class SessionManager {
|
|
|
444
495
|
await session.switchLLM(newLLMConfig);
|
|
445
496
|
this.services.agentEventBus.emit("llm:switched", {
|
|
446
497
|
newConfig: newLLMConfig,
|
|
447
|
-
router: newLLMConfig.router,
|
|
448
498
|
historyRetained: true,
|
|
449
499
|
sessionIds: [sessionId]
|
|
450
500
|
});
|
|
451
|
-
const message = `Successfully switched to ${newLLMConfig.provider}/${newLLMConfig.model}
|
|
501
|
+
const message = `Successfully switched to ${newLLMConfig.provider}/${newLLMConfig.model} for session ${sessionId}`;
|
|
452
502
|
return { message, warnings: [] };
|
|
453
503
|
}
|
|
454
504
|
/**
|
|
@@ -7,11 +7,19 @@ import type { AgentStateManager } from '../agent/state-manager.js';
|
|
|
7
7
|
import type { ValidatedLLMConfig } from '../llm/schemas.js';
|
|
8
8
|
import type { StorageManager } from '../storage/index.js';
|
|
9
9
|
import type { PluginManager } from '../plugins/manager.js';
|
|
10
|
+
import type { TokenUsage } from '../llm/types.js';
|
|
11
|
+
/**
|
|
12
|
+
* Session-level token usage totals (accumulated across all messages).
|
|
13
|
+
* All fields required since we track cumulative totals (defaulting to 0).
|
|
14
|
+
*/
|
|
15
|
+
export type SessionTokenUsage = Required<TokenUsage>;
|
|
10
16
|
export interface SessionMetadata {
|
|
11
17
|
createdAt: number;
|
|
12
18
|
lastActivity: number;
|
|
13
19
|
messageCount: number;
|
|
14
20
|
title?: string;
|
|
21
|
+
tokenUsage?: SessionTokenUsage;
|
|
22
|
+
estimatedCost?: number;
|
|
15
23
|
}
|
|
16
24
|
export interface SessionManagerConfig {
|
|
17
25
|
maxSessions?: number;
|
|
@@ -24,6 +32,8 @@ export interface SessionData {
|
|
|
24
32
|
lastActivity: number;
|
|
25
33
|
messageCount: number;
|
|
26
34
|
metadata?: Record<string, any>;
|
|
35
|
+
tokenUsage?: SessionTokenUsage;
|
|
36
|
+
estimatedCost?: number;
|
|
27
37
|
}
|
|
28
38
|
/**
|
|
29
39
|
* Manages multiple chat sessions within a Dexto agent.
|
|
@@ -50,6 +60,7 @@ export declare class SessionManager {
|
|
|
50
60
|
private cleanupInterval?;
|
|
51
61
|
private initializationPromise;
|
|
52
62
|
private readonly pendingCreations;
|
|
63
|
+
private readonly tokenUsageLocks;
|
|
53
64
|
private logger;
|
|
54
65
|
constructor(services: {
|
|
55
66
|
stateManager: AgentStateManager;
|
|
@@ -142,6 +153,13 @@ export declare class SessionManager {
|
|
|
142
153
|
* Increments the message count for a session.
|
|
143
154
|
*/
|
|
144
155
|
incrementMessageCount(sessionId: string): Promise<void>;
|
|
156
|
+
/**
|
|
157
|
+
* Accumulates token usage for a session.
|
|
158
|
+
* Called after each LLM response to update session-level totals.
|
|
159
|
+
*
|
|
160
|
+
* Uses per-session locking to prevent lost updates from concurrent calls.
|
|
161
|
+
*/
|
|
162
|
+
accumulateTokenUsage(sessionId: string, usage: TokenUsage, cost?: number): Promise<void>;
|
|
145
163
|
/**
|
|
146
164
|
* Sets the human-friendly title for a session.
|
|
147
165
|
* Title is stored in session metadata and cached with TTL.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-manager.d.ts","sourceRoot":"","sources":["../../src/session/session-manager.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAE1D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"session-manager.d.ts","sourceRoot":"","sources":["../../src/session/session-manager.ts"],"names":[],"mappings":"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"}
|