@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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"error-codes.d.ts","sourceRoot":"","sources":["../../src/llm/error-codes.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,oBAAY,YAAY;IAEpB,eAAe,wBAAwB;IACvC,eAAe,wBAAwB,CAAE,0BAA0B;IACnE,yBAAyB,kCAAkC;IAC3D,gBAAgB,yBAAyB;IACzC,gBAAgB,yBAAyB;IAGzC,kBAAkB,2BAA2B;IAC7C,aAAa,sBAAsB;IACnC,oBAAoB,6BAA6B;
|
|
1
|
+
{"version":3,"file":"error-codes.d.ts","sourceRoot":"","sources":["../../src/llm/error-codes.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,oBAAY,YAAY;IAEpB,eAAe,wBAAwB;IACvC,eAAe,wBAAwB,CAAE,0BAA0B;IACnE,yBAAyB,kCAAkC;IAC3D,gBAAgB,yBAAyB;IACzC,gBAAgB,yBAAyB;IAGzC,kBAAkB,2BAA2B;IAC7C,aAAa,sBAAsB;IACnC,oBAAoB,6BAA6B;IAGjD,sBAAsB,+BAA+B;IACrD,uBAAuB,gCAAgC;IACvD,kBAAkB,2BAA2B;IAG7C,eAAe,wBAAwB;IACvC,mBAAmB,4BAA4B;IAG/C,aAAa,sBAAsB;IACnC,iBAAiB,0BAA0B;IAG3C,oBAAoB,6BAA6B,CAAE,+CAA+C;IAGlG,sBAAsB,+BAA+B;CACxD"}
|
package/dist/llm/error-codes.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import "../chunk-
|
|
1
|
+
import "../chunk-PTJYTZNU.js";
|
|
2
2
|
var LLMErrorCode = /* @__PURE__ */ ((LLMErrorCode2) => {
|
|
3
3
|
LLMErrorCode2["API_KEY_MISSING"] = "llm_api_key_missing";
|
|
4
4
|
LLMErrorCode2["API_KEY_INVALID"] = "llm_api_key_invalid";
|
|
@@ -8,7 +8,6 @@ var LLMErrorCode = /* @__PURE__ */ ((LLMErrorCode2) => {
|
|
|
8
8
|
LLMErrorCode2["MODEL_INCOMPATIBLE"] = "llm_model_incompatible";
|
|
9
9
|
LLMErrorCode2["MODEL_UNKNOWN"] = "llm_model_unknown";
|
|
10
10
|
LLMErrorCode2["PROVIDER_UNSUPPORTED"] = "llm_provider_unsupported";
|
|
11
|
-
LLMErrorCode2["ROUTER_UNSUPPORTED"] = "llm_router_unsupported";
|
|
12
11
|
LLMErrorCode2["INPUT_FILE_UNSUPPORTED"] = "llm_input_file_unsupported";
|
|
13
12
|
LLMErrorCode2["INPUT_IMAGE_UNSUPPORTED"] = "llm_input_image_unsupported";
|
|
14
13
|
LLMErrorCode2["INPUT_TEXT_INVALID"] = "llm_input_text_invalid";
|
package/dist/llm/errors.cjs
CHANGED
|
@@ -46,25 +46,25 @@ class LLMError {
|
|
|
46
46
|
{ provider }
|
|
47
47
|
);
|
|
48
48
|
}
|
|
49
|
-
static
|
|
49
|
+
static unsupportedProvider(provider) {
|
|
50
50
|
const availableProviders = (0, import_registry.getSupportedProviders)();
|
|
51
51
|
return new import_DextoRuntimeError.DextoRuntimeError(
|
|
52
|
-
import_error_codes.LLMErrorCode.
|
|
52
|
+
import_error_codes.LLMErrorCode.PROVIDER_UNSUPPORTED,
|
|
53
53
|
import_types.ErrorScope.LLM,
|
|
54
54
|
import_types2.ErrorType.USER,
|
|
55
|
-
`
|
|
56
|
-
{
|
|
57
|
-
"Specify the provider explicitly or use a recognized model name"
|
|
55
|
+
`Provider '${provider}' is not supported. Available providers: ${availableProviders.join(", ")}`,
|
|
56
|
+
{ provider, availableProviders }
|
|
58
57
|
);
|
|
59
58
|
}
|
|
60
|
-
static
|
|
61
|
-
const
|
|
59
|
+
static modelProviderUnknown(model) {
|
|
60
|
+
const availableProviders = (0, import_registry.getSupportedProviders)();
|
|
62
61
|
return new import_DextoRuntimeError.DextoRuntimeError(
|
|
63
|
-
import_error_codes.LLMErrorCode.
|
|
62
|
+
import_error_codes.LLMErrorCode.MODEL_UNKNOWN,
|
|
64
63
|
import_types.ErrorScope.LLM,
|
|
65
64
|
import_types2.ErrorType.USER,
|
|
66
|
-
`
|
|
67
|
-
{
|
|
65
|
+
`Unknown model '${model}' - could not infer provider. Available providers: ${availableProviders.join(", ")}`,
|
|
66
|
+
{ model, availableProviders },
|
|
67
|
+
"Specify the provider explicitly or use a recognized model name"
|
|
68
68
|
);
|
|
69
69
|
}
|
|
70
70
|
// Runtime service errors
|
package/dist/llm/errors.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { DextoRuntimeError } from '../errors/DextoRuntimeError.js';
|
|
2
|
-
import type { LLMProvider
|
|
2
|
+
import type { LLMProvider } from './types.js';
|
|
3
3
|
/**
|
|
4
4
|
* LLM runtime error factory methods
|
|
5
5
|
* Creates properly typed errors for LLM runtime operations
|
|
@@ -15,15 +15,14 @@ export declare class LLMError {
|
|
|
15
15
|
static baseUrlMissing(provider: LLMProvider): DextoRuntimeError<{
|
|
16
16
|
provider: "openai" | "openai-compatible" | "anthropic" | "google" | "groq" | "xai" | "cohere";
|
|
17
17
|
}>;
|
|
18
|
+
static unsupportedProvider(provider: string): DextoRuntimeError<{
|
|
19
|
+
provider: string;
|
|
20
|
+
availableProviders: ("openai" | "openai-compatible" | "anthropic" | "google" | "groq" | "xai" | "cohere")[];
|
|
21
|
+
}>;
|
|
18
22
|
static modelProviderUnknown(model: string): DextoRuntimeError<{
|
|
19
23
|
model: string;
|
|
20
24
|
availableProviders: ("openai" | "openai-compatible" | "anthropic" | "google" | "groq" | "xai" | "cohere")[];
|
|
21
25
|
}>;
|
|
22
|
-
static unsupportedRouter(router: LLMRouter, provider: LLMProvider): DextoRuntimeError<{
|
|
23
|
-
router: "vercel" | "in-built";
|
|
24
|
-
provider: "openai" | "openai-compatible" | "anthropic" | "google" | "groq" | "xai" | "cohere";
|
|
25
|
-
supportedRouters: ("vercel" | "in-built")[];
|
|
26
|
-
}>;
|
|
27
26
|
static rateLimitExceeded(provider: LLMProvider, retryAfter?: number): DextoRuntimeError<{
|
|
28
27
|
details: {
|
|
29
28
|
provider: "openai" | "openai-compatible" | "anthropic" | "google" | "groq" | "xai" | "cohere";
|
package/dist/llm/errors.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/llm/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAMnE,OAAO,KAAK,EAAE,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/llm/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAMnE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C;;;;;;GAMG;AACH,qBAAa,QAAQ;IAEjB,MAAM,CAAC,YAAY,CAAC,QAAQ,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM;;;;IAUxD,MAAM,CAAC,cAAc,CAAC,QAAQ,EAAE,WAAW;;;IAU3C,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,MAAM;;;;IAW3C,MAAM,CAAC,oBAAoB,CAAC,KAAK,EAAE,MAAM;;;;IAczC,MAAM,CAAC,iBAAiB,CAAC,QAAQ,EAAE,WAAW,EAAE,UAAU,CAAC,EAAE,MAAM;;;;;;;IAgBnE,MAAM,CAAC,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM;;;;;;;IAW3E,MAAM,CAAC,kBAAkB;CAU5B"}
|
package/dist/llm/errors.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import "../chunk-
|
|
1
|
+
import "../chunk-PTJYTZNU.js";
|
|
2
2
|
import { DextoRuntimeError } from "../errors/DextoRuntimeError.js";
|
|
3
3
|
import { ErrorScope } from "../errors/types.js";
|
|
4
4
|
import { ErrorType } from "../errors/types.js";
|
|
5
5
|
import { LLMErrorCode } from "./error-codes.js";
|
|
6
|
-
import { getSupportedProviders
|
|
6
|
+
import { getSupportedProviders } from "./registry.js";
|
|
7
7
|
class LLMError {
|
|
8
8
|
// Runtime model/provider lookup errors
|
|
9
9
|
static unknownModel(provider, model) {
|
|
@@ -24,25 +24,25 @@ class LLMError {
|
|
|
24
24
|
{ provider }
|
|
25
25
|
);
|
|
26
26
|
}
|
|
27
|
-
static
|
|
27
|
+
static unsupportedProvider(provider) {
|
|
28
28
|
const availableProviders = getSupportedProviders();
|
|
29
29
|
return new DextoRuntimeError(
|
|
30
|
-
LLMErrorCode.
|
|
30
|
+
LLMErrorCode.PROVIDER_UNSUPPORTED,
|
|
31
31
|
ErrorScope.LLM,
|
|
32
32
|
ErrorType.USER,
|
|
33
|
-
`
|
|
34
|
-
{
|
|
35
|
-
"Specify the provider explicitly or use a recognized model name"
|
|
33
|
+
`Provider '${provider}' is not supported. Available providers: ${availableProviders.join(", ")}`,
|
|
34
|
+
{ provider, availableProviders }
|
|
36
35
|
);
|
|
37
36
|
}
|
|
38
|
-
static
|
|
39
|
-
const
|
|
37
|
+
static modelProviderUnknown(model) {
|
|
38
|
+
const availableProviders = getSupportedProviders();
|
|
40
39
|
return new DextoRuntimeError(
|
|
41
|
-
LLMErrorCode.
|
|
40
|
+
LLMErrorCode.MODEL_UNKNOWN,
|
|
42
41
|
ErrorScope.LLM,
|
|
43
42
|
ErrorType.USER,
|
|
44
|
-
`
|
|
45
|
-
{
|
|
43
|
+
`Unknown model '${model}' - could not infer provider. Available providers: ${availableProviders.join(", ")}`,
|
|
44
|
+
{ model, availableProviders },
|
|
45
|
+
"Specify the provider explicitly or use a recognized model name"
|
|
46
46
|
);
|
|
47
47
|
}
|
|
48
48
|
// Runtime service errors
|
|
@@ -0,0 +1,367 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var stream_processor_exports = {};
|
|
20
|
+
__export(stream_processor_exports, {
|
|
21
|
+
StreamProcessor: () => StreamProcessor
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(stream_processor_exports);
|
|
24
|
+
var import_tool_output_truncator = require("./tool-output-truncator.js");
|
|
25
|
+
var import_utils = require("../../context/utils.js");
|
|
26
|
+
var import_types3 = require("../../logger/v2/types.js");
|
|
27
|
+
class StreamProcessor {
|
|
28
|
+
/**
|
|
29
|
+
* @param contextManager Context manager for message persistence
|
|
30
|
+
* @param eventBus Event bus for emitting events
|
|
31
|
+
* @param resourceManager Resource manager for blob storage
|
|
32
|
+
* @param abortSignal Abort signal for cancellation
|
|
33
|
+
* @param config Provider/model configuration
|
|
34
|
+
* @param logger Logger instance
|
|
35
|
+
* @param streaming If true, emits llm:chunk events. Default true.
|
|
36
|
+
* @param approvalMetadata Map of tool call IDs to approval metadata
|
|
37
|
+
*/
|
|
38
|
+
constructor(contextManager, eventBus, resourceManager, abortSignal, config, logger, streaming = true, approvalMetadata) {
|
|
39
|
+
this.contextManager = contextManager;
|
|
40
|
+
this.eventBus = eventBus;
|
|
41
|
+
this.resourceManager = resourceManager;
|
|
42
|
+
this.abortSignal = abortSignal;
|
|
43
|
+
this.config = config;
|
|
44
|
+
this.streaming = streaming;
|
|
45
|
+
this.approvalMetadata = approvalMetadata;
|
|
46
|
+
this.logger = logger.createChild(import_types3.DextoLogComponent.EXECUTOR);
|
|
47
|
+
}
|
|
48
|
+
assistantMessageId = null;
|
|
49
|
+
actualTokens = { inputTokens: 0, outputTokens: 0, totalTokens: 0 };
|
|
50
|
+
finishReason = "unknown";
|
|
51
|
+
reasoningText = "";
|
|
52
|
+
accumulatedText = "";
|
|
53
|
+
logger;
|
|
54
|
+
/**
|
|
55
|
+
* Track pending tool calls (added to context but no result yet).
|
|
56
|
+
* On cancel/abort, we add synthetic "cancelled" results to maintain tool_use/tool_result pairing.
|
|
57
|
+
*/
|
|
58
|
+
pendingToolCalls = /* @__PURE__ */ new Map();
|
|
59
|
+
async process(streamFn) {
|
|
60
|
+
const stream = streamFn();
|
|
61
|
+
try {
|
|
62
|
+
for await (const event of stream.fullStream) {
|
|
63
|
+
switch (event.type) {
|
|
64
|
+
case "text-delta":
|
|
65
|
+
if (!this.assistantMessageId) {
|
|
66
|
+
this.assistantMessageId = await this.contextManager.addAssistantMessage("", [], {}).then(() => {
|
|
67
|
+
return this.getLastMessageId();
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
await this.contextManager.appendAssistantText(
|
|
71
|
+
this.assistantMessageId,
|
|
72
|
+
event.text
|
|
73
|
+
);
|
|
74
|
+
this.accumulatedText += event.text;
|
|
75
|
+
if (this.streaming) {
|
|
76
|
+
this.eventBus.emit("llm:chunk", {
|
|
77
|
+
chunkType: "text",
|
|
78
|
+
content: event.text
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
break;
|
|
82
|
+
case "reasoning-delta":
|
|
83
|
+
this.reasoningText += event.text;
|
|
84
|
+
if (this.streaming) {
|
|
85
|
+
this.eventBus.emit("llm:chunk", {
|
|
86
|
+
chunkType: "reasoning",
|
|
87
|
+
content: event.text
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
break;
|
|
91
|
+
case "tool-call":
|
|
92
|
+
if (!this.assistantMessageId) {
|
|
93
|
+
this.assistantMessageId = await this.createAssistantMessage();
|
|
94
|
+
}
|
|
95
|
+
await this.contextManager.addToolCall(this.assistantMessageId, {
|
|
96
|
+
id: event.toolCallId,
|
|
97
|
+
type: "function",
|
|
98
|
+
function: {
|
|
99
|
+
name: event.toolName,
|
|
100
|
+
arguments: JSON.stringify(event.input)
|
|
101
|
+
}
|
|
102
|
+
});
|
|
103
|
+
this.pendingToolCalls.set(event.toolCallId, {
|
|
104
|
+
toolName: event.toolName
|
|
105
|
+
});
|
|
106
|
+
break;
|
|
107
|
+
case "tool-result": {
|
|
108
|
+
const rawResult = event.output;
|
|
109
|
+
this.logger.debug("Tool result received", {
|
|
110
|
+
toolName: event.toolName,
|
|
111
|
+
toolCallId: event.toolCallId,
|
|
112
|
+
rawResult
|
|
113
|
+
});
|
|
114
|
+
const sanitized = await (0, import_utils.sanitizeToolResult)(
|
|
115
|
+
rawResult,
|
|
116
|
+
{
|
|
117
|
+
blobStore: this.resourceManager.getBlobStore(),
|
|
118
|
+
toolName: event.toolName,
|
|
119
|
+
toolCallId: event.toolCallId,
|
|
120
|
+
success: true
|
|
121
|
+
},
|
|
122
|
+
this.logger
|
|
123
|
+
);
|
|
124
|
+
const truncated = (0, import_tool_output_truncator.truncateToolResult)(sanitized);
|
|
125
|
+
const approval = this.approvalMetadata?.get(event.toolCallId);
|
|
126
|
+
await this.contextManager.addToolResult(
|
|
127
|
+
event.toolCallId,
|
|
128
|
+
event.toolName,
|
|
129
|
+
truncated,
|
|
130
|
+
// Includes meta.success from sanitization
|
|
131
|
+
approval
|
|
132
|
+
// Only approval metadata if present
|
|
133
|
+
);
|
|
134
|
+
this.eventBus.emit("llm:tool-result", {
|
|
135
|
+
toolName: event.toolName,
|
|
136
|
+
callId: event.toolCallId,
|
|
137
|
+
success: true,
|
|
138
|
+
sanitized: truncated,
|
|
139
|
+
rawResult,
|
|
140
|
+
...approval?.requireApproval !== void 0 && {
|
|
141
|
+
requireApproval: approval.requireApproval
|
|
142
|
+
},
|
|
143
|
+
...approval?.approvalStatus !== void 0 && {
|
|
144
|
+
approvalStatus: approval.approvalStatus
|
|
145
|
+
}
|
|
146
|
+
});
|
|
147
|
+
this.approvalMetadata?.delete(event.toolCallId);
|
|
148
|
+
this.pendingToolCalls.delete(event.toolCallId);
|
|
149
|
+
break;
|
|
150
|
+
}
|
|
151
|
+
case "finish-step":
|
|
152
|
+
if (event.usage) {
|
|
153
|
+
const cacheWriteTokens = event.providerMetadata?.["anthropic"]?.["cacheCreationInputTokens"] ?? // @ts-expect-error - Bedrock metadata typing not in Vercel SDK
|
|
154
|
+
event.providerMetadata?.["bedrock"]?.["usage"]?.["cacheWriteInputTokens"] ?? 0;
|
|
155
|
+
this.actualTokens = {
|
|
156
|
+
inputTokens: (this.actualTokens.inputTokens ?? 0) + (event.usage.inputTokens ?? 0),
|
|
157
|
+
outputTokens: (this.actualTokens.outputTokens ?? 0) + (event.usage.outputTokens ?? 0),
|
|
158
|
+
totalTokens: (this.actualTokens.totalTokens ?? 0) + (event.usage.totalTokens ?? 0),
|
|
159
|
+
...event.usage.reasoningTokens !== void 0 && {
|
|
160
|
+
reasoningTokens: (this.actualTokens.reasoningTokens ?? 0) + event.usage.reasoningTokens
|
|
161
|
+
},
|
|
162
|
+
// Cache tokens
|
|
163
|
+
cacheReadTokens: (this.actualTokens.cacheReadTokens ?? 0) + (event.usage.cachedInputTokens ?? 0),
|
|
164
|
+
cacheWriteTokens: (this.actualTokens.cacheWriteTokens ?? 0) + cacheWriteTokens
|
|
165
|
+
};
|
|
166
|
+
}
|
|
167
|
+
break;
|
|
168
|
+
case "finish": {
|
|
169
|
+
this.finishReason = event.finishReason;
|
|
170
|
+
const cachedInputTokens = event.totalUsage.cachedInputTokens ?? 0;
|
|
171
|
+
const providerExcludesCached = this.config.provider === "anthropic" || this.config.provider === "bedrock";
|
|
172
|
+
const adjustedInputTokens = providerExcludesCached ? event.totalUsage.inputTokens ?? 0 : (event.totalUsage.inputTokens ?? 0) - cachedInputTokens;
|
|
173
|
+
const usage = {
|
|
174
|
+
inputTokens: adjustedInputTokens,
|
|
175
|
+
outputTokens: event.totalUsage.outputTokens ?? 0,
|
|
176
|
+
totalTokens: event.totalUsage.totalTokens ?? 0,
|
|
177
|
+
// Capture reasoning tokens if available (from Claude extended thinking, etc.)
|
|
178
|
+
...event.totalUsage.reasoningTokens !== void 0 && {
|
|
179
|
+
reasoningTokens: event.totalUsage.reasoningTokens
|
|
180
|
+
},
|
|
181
|
+
// Cache tokens - read from totalUsage, write from accumulated finish-step events
|
|
182
|
+
cacheReadTokens: cachedInputTokens,
|
|
183
|
+
cacheWriteTokens: this.actualTokens.cacheWriteTokens ?? 0
|
|
184
|
+
};
|
|
185
|
+
this.actualTokens = usage;
|
|
186
|
+
this.logger.info("LLM response complete", {
|
|
187
|
+
finishReason: event.finishReason,
|
|
188
|
+
contentLength: this.accumulatedText.length,
|
|
189
|
+
content: this.accumulatedText,
|
|
190
|
+
...this.reasoningText && {
|
|
191
|
+
reasoningLength: this.reasoningText.length,
|
|
192
|
+
reasoning: this.reasoningText
|
|
193
|
+
},
|
|
194
|
+
usage,
|
|
195
|
+
provider: this.config.provider,
|
|
196
|
+
model: this.config.model
|
|
197
|
+
});
|
|
198
|
+
if (this.assistantMessageId) {
|
|
199
|
+
await this.contextManager.updateAssistantMessage(
|
|
200
|
+
this.assistantMessageId,
|
|
201
|
+
{
|
|
202
|
+
tokenUsage: usage
|
|
203
|
+
}
|
|
204
|
+
);
|
|
205
|
+
}
|
|
206
|
+
const hasContent = this.accumulatedText || this.reasoningText;
|
|
207
|
+
if (this.finishReason !== "tool-calls" || hasContent) {
|
|
208
|
+
this.eventBus.emit("llm:response", {
|
|
209
|
+
content: this.accumulatedText,
|
|
210
|
+
...this.reasoningText && { reasoning: this.reasoningText },
|
|
211
|
+
provider: this.config.provider,
|
|
212
|
+
model: this.config.model,
|
|
213
|
+
tokenUsage: usage,
|
|
214
|
+
finishReason: this.finishReason
|
|
215
|
+
});
|
|
216
|
+
}
|
|
217
|
+
break;
|
|
218
|
+
}
|
|
219
|
+
case "tool-error": {
|
|
220
|
+
this.logger.error("Tool execution failed", {
|
|
221
|
+
toolName: event.toolName,
|
|
222
|
+
toolCallId: event.toolCallId,
|
|
223
|
+
error: event.error
|
|
224
|
+
});
|
|
225
|
+
const errorMessage = event.error instanceof Error ? event.error.message : String(event.error);
|
|
226
|
+
const errorResult = {
|
|
227
|
+
content: [{ type: "text", text: `Error: ${errorMessage}` }],
|
|
228
|
+
meta: {
|
|
229
|
+
toolName: event.toolName,
|
|
230
|
+
toolCallId: event.toolCallId,
|
|
231
|
+
success: false
|
|
232
|
+
}
|
|
233
|
+
};
|
|
234
|
+
await this.contextManager.addToolResult(
|
|
235
|
+
event.toolCallId,
|
|
236
|
+
event.toolName,
|
|
237
|
+
errorResult,
|
|
238
|
+
void 0
|
|
239
|
+
// No approval metadata for errors
|
|
240
|
+
);
|
|
241
|
+
this.eventBus.emit("llm:tool-result", {
|
|
242
|
+
toolName: event.toolName,
|
|
243
|
+
callId: event.toolCallId,
|
|
244
|
+
success: false,
|
|
245
|
+
error: errorMessage
|
|
246
|
+
});
|
|
247
|
+
this.eventBus.emit("llm:error", {
|
|
248
|
+
error: event.error instanceof Error ? event.error : new Error(String(event.error)),
|
|
249
|
+
context: `Tool execution failed: ${event.toolName}`,
|
|
250
|
+
toolCallId: event.toolCallId,
|
|
251
|
+
recoverable: true
|
|
252
|
+
// Tool errors are typically recoverable
|
|
253
|
+
});
|
|
254
|
+
this.pendingToolCalls.delete(event.toolCallId);
|
|
255
|
+
break;
|
|
256
|
+
}
|
|
257
|
+
case "error": {
|
|
258
|
+
const err = event.error instanceof Error ? event.error : new Error(String(event.error));
|
|
259
|
+
this.logger.error(`LLM error: ${err.toString()}}`);
|
|
260
|
+
this.eventBus.emit("llm:error", {
|
|
261
|
+
error: err
|
|
262
|
+
});
|
|
263
|
+
break;
|
|
264
|
+
}
|
|
265
|
+
case "abort":
|
|
266
|
+
this.logger.debug("Stream aborted, emitting partial response");
|
|
267
|
+
this.finishReason = "cancelled";
|
|
268
|
+
await this.persistCancelledToolResults();
|
|
269
|
+
this.eventBus.emit("llm:response", {
|
|
270
|
+
content: this.accumulatedText,
|
|
271
|
+
...this.reasoningText && { reasoning: this.reasoningText },
|
|
272
|
+
provider: this.config.provider,
|
|
273
|
+
model: this.config.model,
|
|
274
|
+
tokenUsage: this.actualTokens,
|
|
275
|
+
finishReason: "cancelled"
|
|
276
|
+
});
|
|
277
|
+
return {
|
|
278
|
+
text: this.accumulatedText,
|
|
279
|
+
finishReason: "cancelled",
|
|
280
|
+
usage: this.actualTokens
|
|
281
|
+
};
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
} catch (error) {
|
|
285
|
+
const isAbortError = error instanceof Error && error.name === "AbortError" || this.abortSignal.aborted;
|
|
286
|
+
if (isAbortError) {
|
|
287
|
+
this.logger.debug("Stream cancelled, emitting partial response");
|
|
288
|
+
this.finishReason = "cancelled";
|
|
289
|
+
await this.persistCancelledToolResults();
|
|
290
|
+
this.eventBus.emit("llm:response", {
|
|
291
|
+
content: this.accumulatedText,
|
|
292
|
+
...this.reasoningText && { reasoning: this.reasoningText },
|
|
293
|
+
provider: this.config.provider,
|
|
294
|
+
model: this.config.model,
|
|
295
|
+
tokenUsage: this.actualTokens,
|
|
296
|
+
finishReason: "cancelled"
|
|
297
|
+
});
|
|
298
|
+
return {
|
|
299
|
+
text: this.accumulatedText,
|
|
300
|
+
finishReason: "cancelled",
|
|
301
|
+
usage: this.actualTokens
|
|
302
|
+
};
|
|
303
|
+
}
|
|
304
|
+
this.logger.error("Stream processing failed", { error });
|
|
305
|
+
this.eventBus.emit("llm:error", {
|
|
306
|
+
error: error instanceof Error ? error : new Error(String(error)),
|
|
307
|
+
context: "StreamProcessor",
|
|
308
|
+
recoverable: false
|
|
309
|
+
});
|
|
310
|
+
throw error;
|
|
311
|
+
}
|
|
312
|
+
return {
|
|
313
|
+
text: this.accumulatedText,
|
|
314
|
+
finishReason: this.finishReason,
|
|
315
|
+
usage: this.actualTokens
|
|
316
|
+
};
|
|
317
|
+
}
|
|
318
|
+
async createAssistantMessage() {
|
|
319
|
+
await this.contextManager.addAssistantMessage("", [], {});
|
|
320
|
+
return this.getLastMessageId();
|
|
321
|
+
}
|
|
322
|
+
async getLastMessageId() {
|
|
323
|
+
const history = await this.contextManager.getHistory();
|
|
324
|
+
const last = history[history.length - 1];
|
|
325
|
+
if (!last || !last.id) throw new Error("Failed to get last message ID");
|
|
326
|
+
return last.id;
|
|
327
|
+
}
|
|
328
|
+
/**
|
|
329
|
+
* Persist synthetic "cancelled" results for all pending tool calls.
|
|
330
|
+
* This maintains the tool_use/tool_result pairing required by LLM APIs.
|
|
331
|
+
* Called on abort/cancel to prevent "tool_use ids were found without tool_result" errors.
|
|
332
|
+
*/
|
|
333
|
+
async persistCancelledToolResults() {
|
|
334
|
+
if (this.pendingToolCalls.size === 0) return;
|
|
335
|
+
this.logger.debug(
|
|
336
|
+
`Persisting cancelled results for ${this.pendingToolCalls.size} pending tool call(s)`
|
|
337
|
+
);
|
|
338
|
+
for (const [toolCallId, { toolName }] of this.pendingToolCalls) {
|
|
339
|
+
const cancelledResult = {
|
|
340
|
+
content: [{ type: "text", text: "Cancelled by user" }],
|
|
341
|
+
meta: {
|
|
342
|
+
toolName,
|
|
343
|
+
toolCallId,
|
|
344
|
+
success: false
|
|
345
|
+
}
|
|
346
|
+
};
|
|
347
|
+
await this.contextManager.addToolResult(
|
|
348
|
+
toolCallId,
|
|
349
|
+
toolName,
|
|
350
|
+
cancelledResult,
|
|
351
|
+
void 0
|
|
352
|
+
// No approval metadata for cancelled tools
|
|
353
|
+
);
|
|
354
|
+
this.eventBus.emit("llm:tool-result", {
|
|
355
|
+
toolName,
|
|
356
|
+
callId: toolCallId,
|
|
357
|
+
success: false,
|
|
358
|
+
error: "Cancelled by user"
|
|
359
|
+
});
|
|
360
|
+
}
|
|
361
|
+
this.pendingToolCalls.clear();
|
|
362
|
+
}
|
|
363
|
+
}
|
|
364
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
365
|
+
0 && (module.exports = {
|
|
366
|
+
StreamProcessor
|
|
367
|
+
});
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { StreamTextResult, ToolSet as VercelToolSet } from 'ai';
|
|
2
|
+
import { ContextManager } from '../../context/manager.js';
|
|
3
|
+
import { SessionEventBus } from '../../events/index.js';
|
|
4
|
+
import { ResourceManager } from '../../resources/index.js';
|
|
5
|
+
import { StreamProcessorResult } from './types.js';
|
|
6
|
+
import { IDextoLogger } from '../../logger/v2/types.js';
|
|
7
|
+
import { LLMProvider } from '../types.js';
|
|
8
|
+
export interface StreamProcessorConfig {
|
|
9
|
+
provider: LLMProvider;
|
|
10
|
+
model: string;
|
|
11
|
+
}
|
|
12
|
+
export declare class StreamProcessor {
|
|
13
|
+
private contextManager;
|
|
14
|
+
private eventBus;
|
|
15
|
+
private resourceManager;
|
|
16
|
+
private abortSignal;
|
|
17
|
+
private config;
|
|
18
|
+
private streaming;
|
|
19
|
+
private approvalMetadata?;
|
|
20
|
+
private assistantMessageId;
|
|
21
|
+
private actualTokens;
|
|
22
|
+
private finishReason;
|
|
23
|
+
private reasoningText;
|
|
24
|
+
private accumulatedText;
|
|
25
|
+
private logger;
|
|
26
|
+
/**
|
|
27
|
+
* Track pending tool calls (added to context but no result yet).
|
|
28
|
+
* On cancel/abort, we add synthetic "cancelled" results to maintain tool_use/tool_result pairing.
|
|
29
|
+
*/
|
|
30
|
+
private pendingToolCalls;
|
|
31
|
+
/**
|
|
32
|
+
* @param contextManager Context manager for message persistence
|
|
33
|
+
* @param eventBus Event bus for emitting events
|
|
34
|
+
* @param resourceManager Resource manager for blob storage
|
|
35
|
+
* @param abortSignal Abort signal for cancellation
|
|
36
|
+
* @param config Provider/model configuration
|
|
37
|
+
* @param logger Logger instance
|
|
38
|
+
* @param streaming If true, emits llm:chunk events. Default true.
|
|
39
|
+
* @param approvalMetadata Map of tool call IDs to approval metadata
|
|
40
|
+
*/
|
|
41
|
+
constructor(contextManager: ContextManager, eventBus: SessionEventBus, resourceManager: ResourceManager, abortSignal: AbortSignal, config: StreamProcessorConfig, logger: IDextoLogger, streaming?: boolean, approvalMetadata?: Map<string, {
|
|
42
|
+
requireApproval: boolean;
|
|
43
|
+
approvalStatus?: "approved" | "rejected";
|
|
44
|
+
}> | undefined);
|
|
45
|
+
process(streamFn: () => StreamTextResult<VercelToolSet, unknown>): Promise<StreamProcessorResult>;
|
|
46
|
+
private createAssistantMessage;
|
|
47
|
+
private getLastMessageId;
|
|
48
|
+
/**
|
|
49
|
+
* Persist synthetic "cancelled" results for all pending tool calls.
|
|
50
|
+
* This maintains the tool_use/tool_result pairing required by LLM APIs.
|
|
51
|
+
* Called on abort/cancel to prevent "tool_use ids were found without tool_result" errors.
|
|
52
|
+
*/
|
|
53
|
+
private persistCancelledToolResults;
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=stream-processor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stream-processor.d.ts","sourceRoot":"","sources":["../../../src/llm/executor/stream-processor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,IAAI,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAmB,MAAM,uBAAuB,CAAC;AACzE,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAE3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAGnD,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAExD,OAAO,EAAE,WAAW,EAAc,MAAM,aAAa,CAAC;AAEtD,MAAM,WAAW,qBAAqB;IAClC,QAAQ,EAAE,WAAW,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;CACjB;AAED,qBAAa,eAAe;IAwBpB,OAAO,CAAC,cAAc;IACtB,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,eAAe;IACvB,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,MAAM;IAEd,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,gBAAgB,CAAC;IA9B7B,OAAO,CAAC,kBAAkB,CAAuB;IACjD,OAAO,CAAC,YAAY,CAAmE;IACvF,OAAO,CAAC,YAAY,CAA8B;IAClD,OAAO,CAAC,aAAa,CAAc;IACnC,OAAO,CAAC,eAAe,CAAc;IACrC,OAAO,CAAC,MAAM,CAAe;IAC7B;;;OAGG;IACH,OAAO,CAAC,gBAAgB,CAAgD;IAExE;;;;;;;;;OASG;gBAES,cAAc,EAAE,cAAc,EAC9B,QAAQ,EAAE,eAAe,EACzB,eAAe,EAAE,eAAe,EAChC,WAAW,EAAE,WAAW,EACxB,MAAM,EAAE,qBAAqB,EACrC,MAAM,EAAE,YAAY,EACZ,SAAS,GAAE,OAAc,EACzB,gBAAgB,CAAC,EAAE,GAAG,CAC1B,MAAM,EACN;QAAE,eAAe,EAAE,OAAO,CAAC;QAAC,cAAc,CAAC,EAAE,UAAU,GAAG,UAAU,CAAA;KAAE,CACzE,YAAA;IAKC,OAAO,CACT,QAAQ,EAAE,MAAM,gBAAgB,CAAC,aAAa,EAAE,OAAO,CAAC,GACzD,OAAO,CAAC,qBAAqB,CAAC;YAmYnB,sBAAsB;YAKtB,gBAAgB;IAO9B;;;;OAIG;YACW,2BAA2B;CAmC5C"}
|