@dexto/core 1.3.0 → 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 +17 -9
- package/dist/agent/DextoAgent.cjs +548 -207
- package/dist/agent/DextoAgent.d.ts +156 -33
- package/dist/agent/DextoAgent.d.ts.map +1 -1
- package/dist/agent/DextoAgent.js +545 -204
- 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 +3 -0
- package/dist/agent/schemas.d.ts +92 -55
- package/dist/agent/schemas.d.ts.map +1 -1
- package/dist/agent/schemas.js +6 -2
- 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 +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 +18 -4
- package/dist/approval/schemas.d.ts +106 -32
- package/dist/approval/schemas.d.ts.map +1 -1
- package/dist/approval/schemas.js +19 -5
- 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/default.cjs → context/compression/overflow.cjs} +20 -18
- 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 +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 +181 -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.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.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.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 +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.js +1 -1
- package/dist/plugins/index.js +1 -1
- package/dist/plugins/loader.js +1 -1
- 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.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/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.js +1 -1
- 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.js +1 -1
- 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.js +1 -1
- package/dist/storage/error-codes.js +1 -1
- package/dist/storage/errors.js +1 -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/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/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 +16 -6
- package/dist/tools/schemas.d.ts +31 -4
- package/dist/tools/schemas.d.ts.map +1 -1
- package/dist/tools/schemas.js +14 -6
- 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 -0
- 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.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 +6 -7
- 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 -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.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.cjs +0 -44
- 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 -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/llm/{formatters → executor}/types.cjs +0 -0
- /package/dist/llm/{formatters → executor}/types.js +0 -0
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { PromptProvider, PromptDefinition, PromptListResult } from '../types.js';
|
|
2
2
|
import type { GetPromptResult } from '@modelcontextprotocol/sdk/types.js';
|
|
3
3
|
import type { ValidatedAgentConfig } from '../../agent/schemas.js';
|
|
4
|
+
import type { PromptsConfig } from '../schemas.js';
|
|
4
5
|
import type { IDextoLogger } from '../../logger/v2/types.js';
|
|
5
6
|
/**
|
|
6
7
|
* Config Prompt Provider - Unified provider for prompts from agent configuration
|
|
@@ -20,7 +21,7 @@ export declare class ConfigPromptProvider implements PromptProvider {
|
|
|
20
21
|
constructor(agentConfig: ValidatedAgentConfig, logger: IDextoLogger);
|
|
21
22
|
getSource(): string;
|
|
22
23
|
invalidateCache(): void;
|
|
23
|
-
|
|
24
|
+
updatePrompts(prompts: PromptsConfig): void;
|
|
24
25
|
listPrompts(_cursor?: string): Promise<PromptListResult>;
|
|
25
26
|
getPrompt(name: string, args?: Record<string, unknown>): Promise<GetPromptResult>;
|
|
26
27
|
getPromptDefinition(name: string): Promise<PromptDefinition | null>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-prompt-provider.d.ts","sourceRoot":"","sources":["../../../src/prompts/providers/config-prompt-provider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAc,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAClG,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"config-prompt-provider.d.ts","sourceRoot":"","sources":["../../../src/prompts/providers/config-prompt-provider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAc,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAClG,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AACnE,OAAO,KAAK,EAA4B,aAAa,EAAE,MAAM,eAAe,CAAC;AAE7E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAS7D;;;;;;;;GAQG;AACH,qBAAa,oBAAqB,YAAW,cAAc;IACvD,OAAO,CAAC,OAAO,CAAqB;IACpC,OAAO,CAAC,YAAY,CAAoB;IACxC,OAAO,CAAC,aAAa,CAAkC;IACvD,OAAO,CAAC,UAAU,CAAkB;IACpC,OAAO,CAAC,MAAM,CAAe;gBAEjB,WAAW,EAAE,oBAAoB,EAAE,MAAM,EAAE,YAAY;IAMnE,SAAS,IAAI,MAAM;IAInB,eAAe,IAAI,IAAI;IAOvB,aAAa,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAYrC,WAAW,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAUxD,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,eAAe,CAAC;IAgCjF,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;YAkB3D,iBAAiB;IAsC/B,OAAO,CAAC,mBAAmB;YAuBb,iBAAiB;IAyE/B,OAAO,CAAC,mBAAmB;IA+F3B,OAAO,CAAC,iBAAiB;IAyBzB,OAAO,CAAC,cAAc;CA+BzB"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import "../../chunk-
|
|
1
|
+
import "../../chunk-PTJYTZNU.js";
|
|
2
|
+
import { PromptsSchema } from "../schemas.js";
|
|
2
3
|
import { DextoLogComponent } from "../../logger/v2/types.js";
|
|
3
4
|
import { PromptError } from "../errors.js";
|
|
4
5
|
import { expandPlaceholders } from "../utils.js";
|
|
@@ -26,8 +27,14 @@ class ConfigPromptProvider {
|
|
|
26
27
|
this.promptContent.clear();
|
|
27
28
|
this.logger.debug("ConfigPromptProvider cache invalidated");
|
|
28
29
|
}
|
|
29
|
-
|
|
30
|
-
|
|
30
|
+
updatePrompts(prompts) {
|
|
31
|
+
const result = PromptsSchema.safeParse(prompts);
|
|
32
|
+
if (!result.success) {
|
|
33
|
+
const errorMsg = result.error.issues.map((i) => i.message).join(", ");
|
|
34
|
+
this.logger.error(`Invalid prompts config: ${errorMsg}`);
|
|
35
|
+
throw PromptError.validationFailed(errorMsg);
|
|
36
|
+
}
|
|
37
|
+
this.prompts = result.data;
|
|
31
38
|
this.invalidateCache();
|
|
32
39
|
this.buildPromptsCache();
|
|
33
40
|
}
|
|
@@ -83,7 +90,7 @@ class ConfigPromptProvider {
|
|
|
83
90
|
async buildPromptsCache() {
|
|
84
91
|
const cache = [];
|
|
85
92
|
const contentMap = /* @__PURE__ */ new Map();
|
|
86
|
-
for (const prompt of this.prompts) {
|
|
93
|
+
for (const prompt of this.prompts ?? []) {
|
|
87
94
|
try {
|
|
88
95
|
if (prompt.type === "inline") {
|
|
89
96
|
const { info, content } = this.processInlinePrompt(prompt);
|
|
@@ -116,6 +123,7 @@ class ConfigPromptProvider {
|
|
|
116
123
|
const promptName = `config:${prompt.id}`;
|
|
117
124
|
const promptInfo = {
|
|
118
125
|
name: promptName,
|
|
126
|
+
displayName: prompt.id,
|
|
119
127
|
title: prompt.title,
|
|
120
128
|
description: prompt.description,
|
|
121
129
|
source: "config",
|
|
@@ -167,6 +175,7 @@ class ConfigPromptProvider {
|
|
|
167
175
|
}
|
|
168
176
|
const promptInfo = {
|
|
169
177
|
name: `config:${parsed.id}`,
|
|
178
|
+
displayName: parsed.id,
|
|
170
179
|
title: parsed.title,
|
|
171
180
|
description: parsed.description,
|
|
172
181
|
source: "config",
|
|
@@ -163,6 +163,18 @@ export type ValidatedFilePrompt = z.output<typeof FilePromptSchema>;
|
|
|
163
163
|
* Type for a single prompt (either inline or file)
|
|
164
164
|
*/
|
|
165
165
|
export type ValidatedPrompt = ValidatedInlinePrompt | ValidatedFilePrompt;
|
|
166
|
+
/**
|
|
167
|
+
* Input type for a single inline prompt (before validation)
|
|
168
|
+
*/
|
|
169
|
+
export type InlinePrompt = z.input<typeof InlinePromptSchema>;
|
|
170
|
+
/**
|
|
171
|
+
* Input type for a single file-based prompt (before validation)
|
|
172
|
+
*/
|
|
173
|
+
export type FilePrompt = z.input<typeof FilePromptSchema>;
|
|
174
|
+
/**
|
|
175
|
+
* Input type for a single prompt (before validation)
|
|
176
|
+
*/
|
|
177
|
+
export type Prompt = InlinePrompt | FilePrompt;
|
|
166
178
|
/**
|
|
167
179
|
* Validated prompts configuration type
|
|
168
180
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../src/prompts/schemas.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB;;GAEG;AACH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;EAiCoC,CAAC;AAEpE;;GAEG;AACH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;EAeiC,CAAC;AAE/D;;;GAGG;AACH,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MA6BgC,CAAC;AAE3D;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAExE;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAEpE;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,qBAAqB,GAAG,mBAAmB,CAAC;AAE1E;;GAEG;AACH,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,aAAa,CAAC,CAAC;AAEpE;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../src/prompts/schemas.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB;;GAEG;AACH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;EAiCoC,CAAC;AAEpE;;GAEG;AACH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;EAeiC,CAAC;AAE/D;;;GAGG;AACH,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MA6BgC,CAAC;AAE3D;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAExE;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAEpE;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,qBAAqB,GAAG,mBAAmB,CAAC;AAE1E;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAE9D;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAE1D;;GAEG;AACH,MAAM,MAAM,MAAM,GAAG,YAAY,GAAG,UAAU,CAAC;AAE/C;;GAEG;AACH,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,aAAa,CAAC,CAAC;AAEpE;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC"}
|
package/dist/prompts/schemas.js
CHANGED
package/dist/prompts/types.d.ts
CHANGED
|
@@ -23,6 +23,8 @@ export interface PromptDefinition {
|
|
|
23
23
|
*/
|
|
24
24
|
export interface PromptInfo extends PromptDefinition {
|
|
25
25
|
source: 'mcp' | 'config' | 'custom';
|
|
26
|
+
/** User-friendly display name without namespace prefix (e.g., "quick-start" instead of "config:quick-start") */
|
|
27
|
+
displayName?: string | undefined;
|
|
26
28
|
metadata?: Record<string, unknown>;
|
|
27
29
|
}
|
|
28
30
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/prompts/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAE1E;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CAClC;AAED;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,SAAS,CAAC,EAAE,cAAc,EAAE,GAAG,SAAS,CAAC;CAC5C;AAED;;GAEG;AACH,MAAM,WAAW,UAAW,SAAQ,gBAAgB;IAChD,MAAM,EAAE,KAAK,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACpC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACtC;AAED;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;AAEnD;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC7B,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACnC;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC3B;;OAEG;IACH,SAAS,IAAI,MAAM,CAAC;IAEpB;;OAEG;IACH,eAAe,IAAI,IAAI,CAAC;IAExB;;OAEG;IACH,WAAW,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAExD;;OAEG;IACH,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;IAElF;;OAEG;IACH,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAAC;CACvE"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/prompts/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAE1E;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CAClC;AAED;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,SAAS,CAAC,EAAE,cAAc,EAAE,GAAG,SAAS,CAAC;CAC5C;AAED;;GAEG;AACH,MAAM,WAAW,UAAW,SAAQ,gBAAgB;IAChD,MAAM,EAAE,KAAK,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACpC,gHAAgH;IAChH,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACtC;AAED;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;AAEnD;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC7B,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACnC;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC3B;;OAEG;IACH,SAAS,IAAI,MAAM,CAAC;IAEpB;;OAEG;IACH,eAAe,IAAI,IAAI,CAAC;IAExB;;OAEG;IACH,WAAW,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAExD;;OAEG;IACH,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;IAElF;;OAEG;IACH,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAAC;CACvE"}
|
package/dist/prompts/utils.js
CHANGED
package/dist/resources/errors.js
CHANGED
package/dist/resources/index.js
CHANGED
package/dist/search/index.js
CHANGED
|
@@ -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.
|