@dexto/core 1.2.6 → 1.4.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 +55 -13
- package/dist/agent/DextoAgent.cjs +627 -228
- package/dist/agent/DextoAgent.d.ts +157 -34
- package/dist/agent/DextoAgent.d.ts.map +1 -1
- package/dist/agent/DextoAgent.js +625 -227
- 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.d.ts +1 -1
- package/dist/agent/index.d.ts.map +1 -1
- package/dist/agent/index.js +1 -1
- package/dist/agent/schemas.cjs +4 -1
- package/dist/agent/schemas.d.ts +92 -55
- package/dist/agent/schemas.d.ts.map +1 -1
- package/dist/agent/schemas.js +7 -3
- 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 -11
- 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 +69 -3
- package/dist/approval/manager.d.ts +41 -3
- package/dist/approval/manager.d.ts.map +1 -1
- package/dist/approval/manager.js +70 -4
- package/dist/approval/schemas.cjs +20 -5
- package/dist/approval/schemas.d.ts +127 -52
- package/dist/approval/schemas.d.ts.map +1 -1
- package/dist/approval/schemas.js +21 -6
- package/dist/approval/types.d.ts +6 -0
- package/dist/approval/types.d.ts.map +1 -1
- package/dist/approval/types.js +1 -1
- package/dist/{chunk-C6A6W6XS.js → chunk-PTJYTZNU.js} +44 -1
- package/dist/{llm/tokenizer/factory.cjs → context/compression/overflow.cjs} +20 -21
- package/dist/context/compression/overflow.d.ts +33 -0
- package/dist/context/compression/overflow.d.ts.map +1 -0
- package/dist/context/compression/overflow.js +19 -0
- package/dist/context/compression/reactive-overflow.cjs +201 -0
- package/dist/context/compression/reactive-overflow.d.ts +81 -0
- package/dist/context/compression/reactive-overflow.d.ts.map +1 -0
- package/dist/context/compression/reactive-overflow.js +178 -0
- package/dist/context/compression/types.d.ts +9 -7
- package/dist/context/compression/types.d.ts.map +1 -1
- package/dist/context/error-codes.cjs +3 -0
- package/dist/context/error-codes.d.ts +4 -1
- package/dist/context/error-codes.d.ts.map +1 -1
- package/dist/context/error-codes.js +4 -1
- package/dist/context/errors.cjs +28 -0
- package/dist/context/errors.d.ts +7 -0
- package/dist/context/errors.d.ts.map +1 -1
- package/dist/context/errors.js +29 -1
- package/dist/context/index.js +1 -1
- package/dist/context/manager.cjs +287 -323
- package/dist/context/manager.d.ts +65 -111
- package/dist/context/manager.d.ts.map +1 -1
- package/dist/context/manager.js +287 -328
- package/dist/context/media-helpers.js +1 -1
- package/dist/context/types.cjs +49 -0
- package/dist/context/types.d.ts +185 -72
- package/dist/context/types.d.ts.map +1 -1
- package/dist/context/types.js +35 -0
- package/dist/context/utils.cjs +266 -283
- package/dist/context/utils.d.ts +32 -18
- package/dist/context/utils.d.ts.map +1 -1
- package/dist/context/utils.js +266 -283
- 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.js +1 -1
- package/dist/errors/types.cjs +1 -0
- package/dist/errors/types.d.ts +4 -2
- package/dist/errors/types.d.ts.map +1 -1
- package/dist/errors/types.js +2 -1
- package/dist/events/index.cjs +22 -2
- package/dist/events/index.d.ts +170 -62
- package/dist/events/index.d.ts.map +1 -1
- package/dist/events/index.js +23 -3
- package/dist/filesystem/error-codes.js +1 -1
- package/dist/filesystem/errors.js +1 -1
- package/dist/filesystem/filesystem-service.js +1 -1
- package/dist/filesystem/index.js +1 -1
- package/dist/filesystem/path-validator.js +1 -1
- 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.js +1 -1
- package/dist/llm/error-codes.cjs +0 -1
- package/dist/llm/error-codes.d.ts +0 -1
- package/dist/llm/error-codes.d.ts.map +1 -1
- package/dist/llm/error-codes.js +1 -2
- package/dist/llm/errors.cjs +10 -10
- package/dist/llm/errors.d.ts +5 -6
- package/dist/llm/errors.d.ts.map +1 -1
- package/dist/llm/errors.js +12 -12
- package/dist/llm/executor/stream-processor.cjs +367 -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 +344 -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 +753 -0
- package/dist/llm/executor/turn-executor.d.ts +166 -0
- package/dist/llm/executor/turn-executor.d.ts.map +1 -0
- package/dist/llm/executor/turn-executor.js +684 -0
- package/dist/llm/executor/types.d.ts +27 -0
- package/dist/llm/executor/types.d.ts.map +1 -0
- package/dist/llm/formatters/vercel.cjs +20 -186
- 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 +19 -185
- package/dist/llm/registry.cjs +36 -45
- package/dist/llm/registry.d.ts +53 -39
- package/dist/llm/registry.d.ts.map +1 -1
- package/dist/llm/registry.js +34 -42
- package/dist/llm/resolver.cjs +1 -31
- package/dist/llm/resolver.d.ts.map +1 -1
- package/dist/llm/resolver.js +2 -34
- package/dist/llm/schemas.cjs +2 -17
- package/dist/llm/schemas.d.ts +10 -23
- package/dist/llm/schemas.d.ts.map +1 -1
- package/dist/llm/schemas.js +5 -22
- package/dist/llm/services/factory.cjs +3 -92
- package/dist/llm/services/factory.d.ts +14 -4
- package/dist/llm/services/factory.d.ts.map +1 -1
- package/dist/llm/services/factory.js +4 -83
- package/dist/llm/services/test-utils.integration.cjs +6 -8
- package/dist/llm/services/test-utils.integration.d.ts.map +1 -1
- package/dist/llm/services/test-utils.integration.js +7 -9
- 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 +54 -468
- package/dist/llm/services/vercel.d.ts +38 -21
- package/dist/llm/services/vercel.d.ts.map +1 -1
- package/dist/llm/services/vercel.js +56 -475
- package/dist/llm/types.cjs +0 -3
- package/dist/llm/types.d.ts +8 -8
- package/dist/llm/types.d.ts.map +1 -1
- package/dist/llm/types.js +1 -3
- 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.cjs +1 -1
- package/dist/logger/v2/schemas.js +2 -2
- 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 +4 -0
- package/dist/mcp/manager.d.ts.map +1 -1
- package/dist/mcp/manager.js +5 -1
- package/dist/mcp/mcp-client.js +1 -1
- 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 +2 -2
- 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 +1 -0
- package/dist/plugins/error-codes.d.ts +3 -1
- package/dist/plugins/error-codes.d.ts.map +1 -1
- package/dist/plugins/error-codes.js +2 -1
- package/dist/plugins/index.js +1 -1
- package/dist/plugins/loader.cjs +25 -5
- package/dist/plugins/loader.d.ts.map +1 -1
- package/dist/plugins/loader.js +26 -6
- package/dist/plugins/manager.js +1 -1
- package/dist/plugins/registrations/builtins.js +1 -1
- package/dist/plugins/schemas.d.ts +3 -3
- package/dist/plugins/schemas.js +1 -1
- 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.cjs +2 -2
- package/dist/prompts/providers/custom-prompt-provider.d.ts +1 -1
- package/dist/prompts/providers/custom-prompt-provider.d.ts.map +1 -1
- package/dist/prompts/providers/custom-prompt-provider.js +3 -3
- 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/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.js +1 -1
- 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 +149 -51
- 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 +150 -52
- 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.js +1 -1
- package/dist/storage/blob/local-blob-store.js +1 -1
- package/dist/storage/blob/memory-blob-store.js +1 -1
- package/dist/storage/blob/schemas.js +1 -1
- package/dist/storage/cache/factory.cjs +6 -2
- package/dist/storage/cache/factory.d.ts +2 -1
- package/dist/storage/cache/factory.d.ts.map +1 -1
- package/dist/storage/cache/factory.js +7 -3
- package/dist/storage/cache/memory-cache-store.js +1 -1
- package/dist/storage/cache/redis-store.js +1 -1
- package/dist/storage/cache/schemas.js +1 -1
- package/dist/storage/database/factory.cjs +11 -17
- package/dist/storage/database/factory.d.ts +2 -1
- package/dist/storage/database/factory.d.ts.map +1 -1
- package/dist/storage/database/factory.js +12 -18
- 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/schemas.js +1 -1
- package/dist/storage/database/sqlite-store.cjs +8 -0
- package/dist/storage/database/sqlite-store.d.ts.map +1 -1
- package/dist/storage/database/sqlite-store.js +9 -1
- package/dist/storage/error-codes.cjs +1 -0
- package/dist/storage/error-codes.d.ts +1 -0
- package/dist/storage/error-codes.d.ts.map +1 -1
- package/dist/storage/error-codes.js +2 -1
- package/dist/storage/errors.cjs +17 -0
- package/dist/storage/errors.d.ts +9 -0
- package/dist/storage/errors.d.ts.map +1 -1
- package/dist/storage/errors.js +18 -1
- package/dist/storage/index.js +1 -1
- package/dist/storage/schemas.js +1 -1
- package/dist/storage/storage-manager.js +1 -1
- 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.js +1 -1
- package/dist/systemPrompt/index.js +1 -1
- package/dist/systemPrompt/manager.js +1 -1
- package/dist/systemPrompt/registry.js +1 -1
- package/dist/systemPrompt/schemas.d.ts +5 -5
- package/dist/systemPrompt/schemas.js +1 -1
- package/dist/telemetry/decorators.js +1 -1
- package/dist/{llm/tokenizer/default.cjs → telemetry/error-codes.cjs} +14 -19
- package/dist/telemetry/error-codes.d.ts +13 -0
- package/dist/telemetry/error-codes.d.ts.map +1 -0
- package/dist/telemetry/error-codes.js +13 -0
- package/dist/telemetry/errors.cjs +105 -0
- package/dist/telemetry/errors.d.ts +28 -0
- package/dist/telemetry/errors.d.ts.map +1 -0
- package/dist/telemetry/errors.js +82 -0
- 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.cjs +92 -26
- package/dist/telemetry/telemetry.d.ts +1 -1
- package/dist/telemetry/telemetry.d.ts.map +1 -1
- package/dist/telemetry/telemetry.js +75 -19
- 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/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 +2 -0
- package/dist/tools/error-codes.d.ts +3 -1
- package/dist/tools/error-codes.d.ts.map +1 -1
- package/dist/tools/error-codes.js +3 -1
- package/dist/tools/errors.cjs +30 -0
- package/dist/tools/errors.d.ts +16 -0
- package/dist/tools/errors.d.ts.map +1 -1
- package/dist/tools/errors.js +31 -1
- package/dist/tools/index.cjs +2 -0
- package/dist/tools/index.d.ts +1 -0
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +2 -1
- package/dist/tools/internal-tools/constants.js +1 -1
- 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/bash-exec-tool.cjs +42 -18
- package/dist/tools/internal-tools/implementations/bash-exec-tool.d.ts +3 -3
- package/dist/tools/internal-tools/implementations/bash-exec-tool.d.ts.map +1 -1
- package/dist/tools/internal-tools/implementations/bash-exec-tool.js +43 -19
- package/dist/tools/internal-tools/implementations/bash-output-tool.js +1 -1
- package/dist/tools/internal-tools/implementations/delegate-to-url-tool.js +1 -1
- package/dist/tools/internal-tools/implementations/edit-file-tool.cjs +66 -1
- package/dist/tools/internal-tools/implementations/edit-file-tool.d.ts.map +1 -1
- package/dist/tools/internal-tools/implementations/edit-file-tool.js +67 -2
- package/dist/tools/internal-tools/implementations/glob-files-tool.cjs +14 -1
- package/dist/tools/internal-tools/implementations/glob-files-tool.d.ts.map +1 -1
- package/dist/tools/internal-tools/implementations/glob-files-tool.js +15 -2
- package/dist/tools/internal-tools/implementations/grep-content-tool.cjs +16 -1
- package/dist/tools/internal-tools/implementations/grep-content-tool.d.ts.map +1 -1
- package/dist/tools/internal-tools/implementations/grep-content-tool.js +17 -2
- package/dist/tools/internal-tools/implementations/kill-process-tool.js +1 -1
- package/dist/tools/internal-tools/implementations/read-file-tool.cjs +9 -1
- package/dist/tools/internal-tools/implementations/read-file-tool.d.ts.map +1 -1
- package/dist/tools/internal-tools/implementations/read-file-tool.js +10 -2
- package/dist/tools/internal-tools/implementations/search-history-tool.js +1 -1
- package/dist/tools/internal-tools/implementations/write-file-tool.cjs +69 -1
- package/dist/tools/internal-tools/implementations/write-file-tool.d.ts.map +1 -1
- package/dist/tools/internal-tools/implementations/write-file-tool.js +72 -2
- package/dist/tools/internal-tools/provider.cjs +27 -10
- package/dist/tools/internal-tools/provider.d.ts +8 -5
- package/dist/tools/internal-tools/provider.d.ts.map +1 -1
- package/dist/tools/internal-tools/provider.js +28 -11
- package/dist/tools/internal-tools/registry.cjs +4 -3
- package/dist/tools/internal-tools/registry.d.ts +28 -7
- package/dist/tools/internal-tools/registry.d.ts.map +1 -1
- package/dist/tools/internal-tools/registry.js +5 -4
- package/dist/tools/schemas.cjs +17 -7
- package/dist/tools/schemas.d.ts +31 -4
- package/dist/tools/schemas.d.ts.map +1 -1
- package/dist/tools/schemas.js +15 -7
- package/dist/tools/tool-manager.cjs +140 -18
- package/dist/tools/tool-manager.d.ts +23 -1
- package/dist/tools/tool-manager.d.ts.map +1 -1
- package/dist/tools/tool-manager.js +145 -19
- package/dist/tools/types.d.ts +20 -11
- package/dist/tools/types.d.ts.map +1 -1
- package/dist/utils/api-key-resolver.js +1 -1
- package/dist/utils/async-context.js +1 -1
- package/dist/utils/debug.js +1 -1
- package/dist/{llm/tokenizer/types.cjs → utils/defer.cjs} +19 -10
- 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/env-file.js +1 -1
- 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 -1
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +1 -0
- package/dist/utils/path.js +1 -1
- package/dist/utils/redactor.js +1 -1
- 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.d.ts +6 -0
- package/dist/utils/schema.d.ts.map +1 -1
- package/dist/utils/schema.js +1 -1
- package/dist/utils/service-initializer.cjs +6 -2
- package/dist/utils/service-initializer.d.ts.map +1 -1
- package/dist/utils/service-initializer.js +7 -3
- package/dist/utils/user-info.js +1 -1
- package/dist/utils/zod-schema-converter.js +1 -1
- package/package.json +54 -17
- 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/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 -196
- 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 -177
- 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.cjs +0 -43
- 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.cjs +0 -52
- 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 -33
- 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/llm/{formatters → executor}/types.cjs +0 -0
- /package/dist/llm/{formatters → executor}/types.js +0 -0
|
@@ -27,6 +27,7 @@ var import_events = require("../events/index.js");
|
|
|
27
27
|
var import_types = require("../logger/v2/types.js");
|
|
28
28
|
var import_errors = require("../errors/index.js");
|
|
29
29
|
var import_error_codes = require("../plugins/error-codes.js");
|
|
30
|
+
var import_registry = require("../llm/registry.js");
|
|
30
31
|
class ChatSession {
|
|
31
32
|
/**
|
|
32
33
|
* Creates a new ChatSession instance.
|
|
@@ -77,6 +78,10 @@ class ChatSession {
|
|
|
77
78
|
* Stores the bound functions so they can be removed from the event bus.
|
|
78
79
|
*/
|
|
79
80
|
forwarders = /* @__PURE__ */ new Map();
|
|
81
|
+
/**
|
|
82
|
+
* Token accumulator listener for cleanup.
|
|
83
|
+
*/
|
|
84
|
+
tokenAccumulatorListener = null;
|
|
80
85
|
/**
|
|
81
86
|
* AbortController for the currently running turn, if any.
|
|
82
87
|
* Calling cancel() aborts the in-flight LLM request and tool execution checks.
|
|
@@ -107,10 +112,33 @@ class ChatSession {
|
|
|
107
112
|
this.forwarders.set(eventName, forwarder);
|
|
108
113
|
this.eventBus.on(eventName, forwarder);
|
|
109
114
|
});
|
|
115
|
+
this.setupTokenAccumulation();
|
|
110
116
|
this.logger.debug(
|
|
111
117
|
`[setupEventForwarding] Event forwarding setup complete for session=${this.id}`
|
|
112
118
|
);
|
|
113
119
|
}
|
|
120
|
+
/**
|
|
121
|
+
* Sets up token usage accumulation by listening to llm:response events.
|
|
122
|
+
* Accumulates token usage and cost to session metadata for /stats tracking.
|
|
123
|
+
*/
|
|
124
|
+
setupTokenAccumulation() {
|
|
125
|
+
this.tokenAccumulatorListener = (payload) => {
|
|
126
|
+
if (payload.tokenUsage) {
|
|
127
|
+
let cost;
|
|
128
|
+
const llmConfig = this.services.stateManager.getLLMConfig(this.id);
|
|
129
|
+
const pricing = (0, import_registry.getModelPricing)(llmConfig.provider, llmConfig.model);
|
|
130
|
+
if (pricing) {
|
|
131
|
+
cost = (0, import_registry.calculateCost)(payload.tokenUsage, pricing);
|
|
132
|
+
}
|
|
133
|
+
this.services.sessionManager.accumulateTokenUsage(this.id, payload.tokenUsage, cost).catch((err) => {
|
|
134
|
+
this.logger.warn(
|
|
135
|
+
`Failed to accumulate token usage: ${err instanceof Error ? err.message : String(err)}`
|
|
136
|
+
);
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
};
|
|
140
|
+
this.eventBus.on("llm:response", this.tokenAccumulatorListener);
|
|
141
|
+
}
|
|
114
142
|
/**
|
|
115
143
|
* Initializes session-specific services.
|
|
116
144
|
*/
|
|
@@ -123,7 +151,6 @@ class ChatSession {
|
|
|
123
151
|
);
|
|
124
152
|
this.llmService = (0, import_factory2.createLLMService)(
|
|
125
153
|
llmConfig,
|
|
126
|
-
llmConfig.router,
|
|
127
154
|
this.services.toolManager,
|
|
128
155
|
this.services.systemPromptManager,
|
|
129
156
|
this.historyProvider,
|
|
@@ -152,12 +179,12 @@ class ChatSession {
|
|
|
152
179
|
async saveBlockedInteraction(userInput, errorMessage, _imageData, _fileData) {
|
|
153
180
|
const userMessage = {
|
|
154
181
|
role: "user",
|
|
155
|
-
content: "[Blocked by content policy: input redacted]"
|
|
182
|
+
content: [{ type: "text", text: "[Blocked by content policy: input redacted]" }]
|
|
156
183
|
};
|
|
157
184
|
const errorContent = `Error: ${errorMessage}`;
|
|
158
185
|
const assistantMessage = {
|
|
159
186
|
role: "assistant",
|
|
160
|
-
content: errorContent
|
|
187
|
+
content: [{ type: "text", text: errorContent }]
|
|
161
188
|
};
|
|
162
189
|
await this.historyProvider.saveMessage(userMessage);
|
|
163
190
|
await this.historyProvider.saveMessage(assistantMessage);
|
|
@@ -165,44 +192,61 @@ class ChatSession {
|
|
|
165
192
|
this.eventBus.emit("llm:response", {
|
|
166
193
|
content: errorContent,
|
|
167
194
|
provider: llmConfig.provider,
|
|
168
|
-
model: llmConfig.model
|
|
169
|
-
router: llmConfig.router
|
|
195
|
+
model: llmConfig.model
|
|
170
196
|
});
|
|
171
197
|
}
|
|
172
198
|
/**
|
|
173
|
-
*
|
|
199
|
+
* Stream a response for the given content.
|
|
200
|
+
* Primary method for running conversations with multi-image support.
|
|
174
201
|
*
|
|
175
|
-
*
|
|
176
|
-
*
|
|
177
|
-
* 2. Passes it to the LLM service for processing
|
|
178
|
-
* 3. Returns the AI's response text
|
|
179
|
-
*
|
|
180
|
-
* The method handles both text-only and multimodal input (text + images/files).
|
|
181
|
-
* Tool calls and conversation management are handled internally by the LLM service.
|
|
182
|
-
*
|
|
183
|
-
* @param input - The user's text input
|
|
184
|
-
* @param imageDataInput - Optional image data for multimodal input
|
|
185
|
-
* @param fileDataInput - Optional file data for file input
|
|
186
|
-
* @param stream - Optional flag to enable streaming responses
|
|
202
|
+
* @param content - String or ContentPart[] (text, images, files)
|
|
203
|
+
* @param options - { signal?: AbortSignal }
|
|
187
204
|
* @returns Promise that resolves to the AI's response text
|
|
188
205
|
*
|
|
189
206
|
* @example
|
|
190
207
|
* ```typescript
|
|
191
|
-
*
|
|
192
|
-
*
|
|
208
|
+
* // Text only
|
|
209
|
+
* const response = await session.stream('What is the weather?');
|
|
210
|
+
*
|
|
211
|
+
* // Multiple images
|
|
212
|
+
* const response = await session.stream([
|
|
213
|
+
* { type: 'text', text: 'Compare these images' },
|
|
214
|
+
* { type: 'image', image: base64Data1, mimeType: 'image/png' },
|
|
215
|
+
* { type: 'image', image: base64Data2, mimeType: 'image/png' }
|
|
216
|
+
* ]);
|
|
193
217
|
* ```
|
|
194
218
|
*/
|
|
195
|
-
async
|
|
219
|
+
async stream(content, options) {
|
|
220
|
+
const parts = typeof content === "string" ? [{ type: "text", text: content }] : content;
|
|
221
|
+
const textParts = parts.filter(
|
|
222
|
+
(p) => p.type === "text"
|
|
223
|
+
);
|
|
224
|
+
const imageParts = parts.filter((p) => p.type === "image");
|
|
225
|
+
const fileParts = parts.filter((p) => p.type === "file");
|
|
196
226
|
this.logger.debug(
|
|
197
|
-
`
|
|
227
|
+
`Streaming session ${this.id} | textParts=${textParts.length} | images=${imageParts.length} | files=${fileParts.length}`
|
|
198
228
|
);
|
|
199
229
|
this.currentRunController = new AbortController();
|
|
200
|
-
const signal = this.currentRunController.signal;
|
|
230
|
+
const signal = options?.signal ? this.combineSignals(options.signal, this.currentRunController.signal) : this.currentRunController.signal;
|
|
201
231
|
try {
|
|
232
|
+
const textContent = textParts.map((p) => p.text).join("\n");
|
|
233
|
+
const firstImage = imageParts[0];
|
|
234
|
+
const firstFile = fileParts[0];
|
|
202
235
|
const beforeLLMPayload = {
|
|
203
|
-
text:
|
|
204
|
-
...
|
|
205
|
-
|
|
236
|
+
text: textContent,
|
|
237
|
+
...firstImage && {
|
|
238
|
+
imageData: {
|
|
239
|
+
image: typeof firstImage.image === "string" ? firstImage.image : "[binary]",
|
|
240
|
+
mimeType: firstImage.mimeType || "image/jpeg"
|
|
241
|
+
}
|
|
242
|
+
},
|
|
243
|
+
...firstFile && {
|
|
244
|
+
fileData: {
|
|
245
|
+
data: typeof firstFile.data === "string" ? firstFile.data : "[binary]",
|
|
246
|
+
mimeType: firstFile.mimeType,
|
|
247
|
+
...firstFile.filename && { filename: firstFile.filename }
|
|
248
|
+
}
|
|
249
|
+
},
|
|
206
250
|
sessionId: this.id
|
|
207
251
|
};
|
|
208
252
|
const modifiedBeforePayload = await this.services.pluginManager.executePlugins(
|
|
@@ -217,22 +261,17 @@ class ChatSession {
|
|
|
217
261
|
abortSignal: signal
|
|
218
262
|
}
|
|
219
263
|
);
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
finalImageData,
|
|
227
|
-
finalFileData,
|
|
228
|
-
stream
|
|
229
|
-
);
|
|
264
|
+
let modifiedParts = [...parts];
|
|
265
|
+
if (modifiedBeforePayload.text !== textContent && textParts.length > 0) {
|
|
266
|
+
modifiedParts = modifiedParts.filter((p) => p.type !== "text");
|
|
267
|
+
modifiedParts.unshift({ type: "text", text: modifiedBeforePayload.text });
|
|
268
|
+
}
|
|
269
|
+
const response = await this.llmService.stream(modifiedParts, { signal });
|
|
230
270
|
const llmConfig = this.services.stateManager.getLLMConfig(this.id);
|
|
231
271
|
const beforeResponsePayload = {
|
|
232
272
|
content: response,
|
|
233
273
|
provider: llmConfig.provider,
|
|
234
274
|
model: llmConfig.model,
|
|
235
|
-
router: llmConfig.router,
|
|
236
275
|
sessionId: this.id
|
|
237
276
|
};
|
|
238
277
|
const modifiedResponsePayload = await this.services.pluginManager.executePlugins(
|
|
@@ -256,16 +295,21 @@ class ChatSession {
|
|
|
256
295
|
context: "user_cancelled",
|
|
257
296
|
recoverable: true
|
|
258
297
|
});
|
|
298
|
+
try {
|
|
299
|
+
const history = await this.getHistory();
|
|
300
|
+
const lastAssistant = history.filter((m) => m.role === "assistant").pop();
|
|
301
|
+
if (lastAssistant && typeof lastAssistant.content === "string") {
|
|
302
|
+
return lastAssistant.content;
|
|
303
|
+
}
|
|
304
|
+
} catch {
|
|
305
|
+
this.logger.debug("Failed to retrieve partial response from history on cancel");
|
|
306
|
+
}
|
|
259
307
|
return "";
|
|
260
308
|
}
|
|
261
309
|
if (error instanceof import_errors.DextoRuntimeError && error.code === import_error_codes.PluginErrorCode.PLUGIN_BLOCKED_EXECUTION && error.scope === import_errors.ErrorScope.PLUGIN && error.type === import_errors.ErrorType.FORBIDDEN) {
|
|
310
|
+
const textContent = parts.filter((p) => p.type === "text").map((p) => p.text).join("\n");
|
|
262
311
|
try {
|
|
263
|
-
await this.saveBlockedInteraction(
|
|
264
|
-
input,
|
|
265
|
-
error.message,
|
|
266
|
-
imageDataInput,
|
|
267
|
-
fileDataInput
|
|
268
|
-
);
|
|
312
|
+
await this.saveBlockedInteraction(textContent, error.message);
|
|
269
313
|
this.logger.debug(
|
|
270
314
|
`ChatSession ${this.id}: Saved blocked interaction to history`
|
|
271
315
|
);
|
|
@@ -276,15 +320,27 @@ class ChatSession {
|
|
|
276
320
|
}
|
|
277
321
|
return error.message;
|
|
278
322
|
}
|
|
279
|
-
const errortype = error instanceof Error ? "object" : "string";
|
|
280
323
|
this.logger.error(
|
|
281
|
-
`Error in ChatSession.
|
|
324
|
+
`Error in ChatSession.stream: ${error instanceof Error ? error.message : String(error)}`
|
|
282
325
|
);
|
|
283
326
|
throw error;
|
|
284
327
|
} finally {
|
|
285
328
|
this.currentRunController = null;
|
|
286
329
|
}
|
|
287
330
|
}
|
|
331
|
+
/**
|
|
332
|
+
* Combine multiple abort signals into one.
|
|
333
|
+
*/
|
|
334
|
+
combineSignals(signal1, signal2) {
|
|
335
|
+
const controller = new AbortController();
|
|
336
|
+
const onAbort = () => controller.abort();
|
|
337
|
+
signal1.addEventListener("abort", onAbort);
|
|
338
|
+
signal2.addEventListener("abort", onAbort);
|
|
339
|
+
if (signal1.aborted || signal2.aborted) {
|
|
340
|
+
controller.abort();
|
|
341
|
+
}
|
|
342
|
+
return controller.signal;
|
|
343
|
+
}
|
|
288
344
|
/**
|
|
289
345
|
* Retrieves the complete conversation history for this session.
|
|
290
346
|
*
|
|
@@ -355,11 +411,11 @@ class ChatSession {
|
|
|
355
411
|
/**
|
|
356
412
|
* Switches the LLM service for this session while preserving conversation history.
|
|
357
413
|
*
|
|
358
|
-
* This method creates a new LLM service with the specified configuration
|
|
414
|
+
* This method creates a new LLM service with the specified configuration,
|
|
359
415
|
* while maintaining the existing ContextManager and conversation history. This allows
|
|
360
416
|
* users to change AI models mid-conversation without losing context.
|
|
361
417
|
*
|
|
362
|
-
* @param newLLMConfig The new LLM configuration to use
|
|
418
|
+
* @param newLLMConfig The new LLM configuration to use
|
|
363
419
|
*
|
|
364
420
|
* @example
|
|
365
421
|
* ```typescript
|
|
@@ -368,16 +424,13 @@ class ChatSession {
|
|
|
368
424
|
* provider: 'openai',
|
|
369
425
|
* model: 'gpt-5',
|
|
370
426
|
* apiKey: process.env.OPENAI_API_KEY,
|
|
371
|
-
* router: 'in-built'
|
|
372
427
|
* });
|
|
373
428
|
* ```
|
|
374
429
|
*/
|
|
375
430
|
async switchLLM(newLLMConfig) {
|
|
376
431
|
try {
|
|
377
|
-
const router = newLLMConfig.router;
|
|
378
432
|
const newLLMService = (0, import_factory2.createLLMService)(
|
|
379
433
|
newLLMConfig,
|
|
380
|
-
router,
|
|
381
434
|
this.services.toolManager,
|
|
382
435
|
this.services.systemPromptManager,
|
|
383
436
|
this.historyProvider,
|
|
@@ -394,7 +447,6 @@ class ChatSession {
|
|
|
394
447
|
);
|
|
395
448
|
this.eventBus.emit("llm:switched", {
|
|
396
449
|
newConfig: newLLMConfig,
|
|
397
|
-
router,
|
|
398
450
|
historyRetained: true
|
|
399
451
|
});
|
|
400
452
|
} catch (error) {
|
|
@@ -435,8 +487,54 @@ class ChatSession {
|
|
|
435
487
|
this.eventBus.off(eventName, forwarder);
|
|
436
488
|
});
|
|
437
489
|
this.forwarders.clear();
|
|
490
|
+
if (this.tokenAccumulatorListener) {
|
|
491
|
+
this.eventBus.off("llm:response", this.tokenAccumulatorListener);
|
|
492
|
+
this.tokenAccumulatorListener = null;
|
|
493
|
+
}
|
|
438
494
|
this.logger.debug(`Session ${this.id} disposed successfully`);
|
|
439
495
|
}
|
|
496
|
+
/**
|
|
497
|
+
* Check if this session is currently processing a message.
|
|
498
|
+
* Returns true if a run is in progress and has not been aborted.
|
|
499
|
+
*/
|
|
500
|
+
isBusy() {
|
|
501
|
+
return this.currentRunController !== null && !this.currentRunController.signal.aborted;
|
|
502
|
+
}
|
|
503
|
+
/**
|
|
504
|
+
* Queue a message for processing when the session is busy.
|
|
505
|
+
* The message will be injected into the conversation when the current turn completes.
|
|
506
|
+
*
|
|
507
|
+
* @param message The user message to queue
|
|
508
|
+
* @returns Queue position and message ID
|
|
509
|
+
*/
|
|
510
|
+
queueMessage(message) {
|
|
511
|
+
return this.llmService.getMessageQueue().enqueue(message);
|
|
512
|
+
}
|
|
513
|
+
/**
|
|
514
|
+
* Get all messages currently in the queue.
|
|
515
|
+
* @returns Array of queued messages
|
|
516
|
+
*/
|
|
517
|
+
getQueuedMessages() {
|
|
518
|
+
return this.llmService.getMessageQueue().getAll();
|
|
519
|
+
}
|
|
520
|
+
/**
|
|
521
|
+
* Remove a queued message.
|
|
522
|
+
* @param id Message ID to remove
|
|
523
|
+
* @returns true if message was found and removed; false otherwise
|
|
524
|
+
*/
|
|
525
|
+
removeQueuedMessage(id) {
|
|
526
|
+
return this.llmService.getMessageQueue().remove(id);
|
|
527
|
+
}
|
|
528
|
+
/**
|
|
529
|
+
* Clear all queued messages.
|
|
530
|
+
* @returns Number of messages that were cleared
|
|
531
|
+
*/
|
|
532
|
+
clearMessageQueue() {
|
|
533
|
+
const queue = this.llmService.getMessageQueue();
|
|
534
|
+
const count = queue.pendingCount();
|
|
535
|
+
queue.clear();
|
|
536
|
+
return count;
|
|
537
|
+
}
|
|
440
538
|
/**
|
|
441
539
|
* Cancel the currently running turn for this session, if any.
|
|
442
540
|
* Returns true if a run was in progress and was signaled to abort.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { ContextManager } from '../context/index.js';
|
|
2
|
-
import type {
|
|
2
|
+
import type { VercelLLMService } from '../llm/services/vercel.js';
|
|
3
3
|
import type { SystemPromptManager } from '../systemPrompt/manager.js';
|
|
4
4
|
import type { ToolManager } from '../tools/tool-manager.js';
|
|
5
5
|
import type { ValidatedLLMConfig } from '../llm/schemas.js';
|
|
@@ -10,6 +10,8 @@ import type { MCPManager } from '../mcp/manager.js';
|
|
|
10
10
|
import { SessionEventBus, AgentEventBus } from '../events/index.js';
|
|
11
11
|
import type { IDextoLogger } from '../logger/v2/types.js';
|
|
12
12
|
import type { InternalMessage } from '../context/types.js';
|
|
13
|
+
import type { UserMessageInput } from './message-queue.js';
|
|
14
|
+
import type { ContentInput } from '../agent/types.js';
|
|
13
15
|
/**
|
|
14
16
|
* Represents an isolated conversation session within a Dexto agent.
|
|
15
17
|
*
|
|
@@ -52,7 +54,7 @@ import type { InternalMessage } from '../context/types.js';
|
|
|
52
54
|
*
|
|
53
55
|
* @see {@link SessionManager} for session lifecycle management
|
|
54
56
|
* @see {@link ContextManager} for conversation history management
|
|
55
|
-
* @see {@link
|
|
57
|
+
* @see {@link VercelLLMService} for AI model interaction
|
|
56
58
|
*/
|
|
57
59
|
export declare class ChatSession {
|
|
58
60
|
private services;
|
|
@@ -86,6 +88,10 @@ export declare class ChatSession {
|
|
|
86
88
|
* Stores the bound functions so they can be removed from the event bus.
|
|
87
89
|
*/
|
|
88
90
|
private forwarders;
|
|
91
|
+
/**
|
|
92
|
+
* Token accumulator listener for cleanup.
|
|
93
|
+
*/
|
|
94
|
+
private tokenAccumulatorListener;
|
|
89
95
|
/**
|
|
90
96
|
* AbortController for the currently running turn, if any.
|
|
91
97
|
* Calling cancel() aborts the in-flight LLM request and tool execution checks.
|
|
@@ -129,6 +135,11 @@ export declare class ChatSession {
|
|
|
129
135
|
* information when needed.
|
|
130
136
|
*/
|
|
131
137
|
private setupEventForwarding;
|
|
138
|
+
/**
|
|
139
|
+
* Sets up token usage accumulation by listening to llm:response events.
|
|
140
|
+
* Accumulates token usage and cost to session metadata for /stats tracking.
|
|
141
|
+
*/
|
|
142
|
+
private setupTokenAccumulation;
|
|
132
143
|
/**
|
|
133
144
|
* Initializes session-specific services.
|
|
134
145
|
*/
|
|
@@ -146,36 +157,33 @@ export declare class ChatSession {
|
|
|
146
157
|
*/
|
|
147
158
|
private saveBlockedInteraction;
|
|
148
159
|
/**
|
|
149
|
-
*
|
|
150
|
-
*
|
|
151
|
-
* This method:
|
|
152
|
-
* 1. Takes user input (text, optionally with image or file data)
|
|
153
|
-
* 2. Passes it to the LLM service for processing
|
|
154
|
-
* 3. Returns the AI's response text
|
|
160
|
+
* Stream a response for the given content.
|
|
161
|
+
* Primary method for running conversations with multi-image support.
|
|
155
162
|
*
|
|
156
|
-
*
|
|
157
|
-
*
|
|
158
|
-
*
|
|
159
|
-
* @param input - The user's text input
|
|
160
|
-
* @param imageDataInput - Optional image data for multimodal input
|
|
161
|
-
* @param fileDataInput - Optional file data for file input
|
|
162
|
-
* @param stream - Optional flag to enable streaming responses
|
|
163
|
+
* @param content - String or ContentPart[] (text, images, files)
|
|
164
|
+
* @param options - { signal?: AbortSignal }
|
|
163
165
|
* @returns Promise that resolves to the AI's response text
|
|
164
166
|
*
|
|
165
167
|
* @example
|
|
166
168
|
* ```typescript
|
|
167
|
-
*
|
|
168
|
-
*
|
|
169
|
+
* // Text only
|
|
170
|
+
* const response = await session.stream('What is the weather?');
|
|
171
|
+
*
|
|
172
|
+
* // Multiple images
|
|
173
|
+
* const response = await session.stream([
|
|
174
|
+
* { type: 'text', text: 'Compare these images' },
|
|
175
|
+
* { type: 'image', image: base64Data1, mimeType: 'image/png' },
|
|
176
|
+
* { type: 'image', image: base64Data2, mimeType: 'image/png' }
|
|
177
|
+
* ]);
|
|
169
178
|
* ```
|
|
170
179
|
*/
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
}, stream?: boolean): Promise<string>;
|
|
180
|
+
stream(content: ContentInput, options?: {
|
|
181
|
+
signal?: AbortSignal;
|
|
182
|
+
}): Promise<string>;
|
|
183
|
+
/**
|
|
184
|
+
* Combine multiple abort signals into one.
|
|
185
|
+
*/
|
|
186
|
+
private combineSignals;
|
|
179
187
|
/**
|
|
180
188
|
* Retrieves the complete conversation history for this session.
|
|
181
189
|
*
|
|
@@ -231,15 +239,15 @@ export declare class ChatSession {
|
|
|
231
239
|
*
|
|
232
240
|
* @returns The LLMService for this session
|
|
233
241
|
*/
|
|
234
|
-
getLLMService():
|
|
242
|
+
getLLMService(): VercelLLMService;
|
|
235
243
|
/**
|
|
236
244
|
* Switches the LLM service for this session while preserving conversation history.
|
|
237
245
|
*
|
|
238
|
-
* This method creates a new LLM service with the specified configuration
|
|
246
|
+
* This method creates a new LLM service with the specified configuration,
|
|
239
247
|
* while maintaining the existing ContextManager and conversation history. This allows
|
|
240
248
|
* users to change AI models mid-conversation without losing context.
|
|
241
249
|
*
|
|
242
|
-
* @param newLLMConfig The new LLM configuration to use
|
|
250
|
+
* @param newLLMConfig The new LLM configuration to use
|
|
243
251
|
*
|
|
244
252
|
* @example
|
|
245
253
|
* ```typescript
|
|
@@ -248,7 +256,6 @@ export declare class ChatSession {
|
|
|
248
256
|
* provider: 'openai',
|
|
249
257
|
* model: 'gpt-5',
|
|
250
258
|
* apiKey: process.env.OPENAI_API_KEY,
|
|
251
|
-
* router: 'in-built'
|
|
252
259
|
* });
|
|
253
260
|
* ```
|
|
254
261
|
*/
|
|
@@ -267,6 +274,39 @@ export declare class ChatSession {
|
|
|
267
274
|
* Without this cleanup, sessions would remain in memory due to listener references.
|
|
268
275
|
*/
|
|
269
276
|
dispose(): void;
|
|
277
|
+
/**
|
|
278
|
+
* Check if this session is currently processing a message.
|
|
279
|
+
* Returns true if a run is in progress and has not been aborted.
|
|
280
|
+
*/
|
|
281
|
+
isBusy(): boolean;
|
|
282
|
+
/**
|
|
283
|
+
* Queue a message for processing when the session is busy.
|
|
284
|
+
* The message will be injected into the conversation when the current turn completes.
|
|
285
|
+
*
|
|
286
|
+
* @param message The user message to queue
|
|
287
|
+
* @returns Queue position and message ID
|
|
288
|
+
*/
|
|
289
|
+
queueMessage(message: UserMessageInput): {
|
|
290
|
+
queued: true;
|
|
291
|
+
position: number;
|
|
292
|
+
id: string;
|
|
293
|
+
};
|
|
294
|
+
/**
|
|
295
|
+
* Get all messages currently in the queue.
|
|
296
|
+
* @returns Array of queued messages
|
|
297
|
+
*/
|
|
298
|
+
getQueuedMessages(): import('./types.js').QueuedMessage[];
|
|
299
|
+
/**
|
|
300
|
+
* Remove a queued message.
|
|
301
|
+
* @param id Message ID to remove
|
|
302
|
+
* @returns true if message was found and removed; false otherwise
|
|
303
|
+
*/
|
|
304
|
+
removeQueuedMessage(id: string): boolean;
|
|
305
|
+
/**
|
|
306
|
+
* Clear all queued messages.
|
|
307
|
+
* @returns Number of messages that were cleared
|
|
308
|
+
*/
|
|
309
|
+
clearMessageQueue(): number;
|
|
270
310
|
/**
|
|
271
311
|
* Cancel the currently running turn for this session, if any.
|
|
272
312
|
* Returns true if a run was in progress and was signaled to abort.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat-session.d.ts","sourceRoot":"","sources":["../../src/session/chat-session.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAE7D,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"chat-session.d.ts","sourceRoot":"","sources":["../../src/session/chat-session.ts"],"names":[],"mappings":"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"}
|