@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
|
@@ -66,26 +66,20 @@ __export(vercel_exports, {
|
|
|
66
66
|
VercelLLMService: () => VercelLLMService
|
|
67
67
|
});
|
|
68
68
|
module.exports = __toCommonJS(vercel_exports);
|
|
69
|
-
var import_ai = require("ai");
|
|
70
69
|
var import_types2 = require("../../logger/v2/types.js");
|
|
71
|
-
var import_ai2 = require("ai");
|
|
72
70
|
var import_manager = require("../../context/manager.js");
|
|
73
|
-
var import_utils = require("../../context/utils.js");
|
|
74
|
-
var import_debug = require("../../utils/debug.js");
|
|
75
71
|
var import_registry = require("../registry.js");
|
|
76
|
-
var import_DextoRuntimeError = require("../../errors/DextoRuntimeError.js");
|
|
77
|
-
var import_error_codes = require("../error-codes.js");
|
|
78
|
-
var import_types5 = require("../../errors/types.js");
|
|
79
|
-
var import_error_conversion = require("../../utils/error-conversion.js");
|
|
80
|
-
var import_error_codes2 = require("../../tools/error-codes.js");
|
|
81
72
|
var import_vercel = require("../formatters/vercel.js");
|
|
82
|
-
var import_factory = require("../tokenizer/factory.js");
|
|
83
73
|
var import_decorators = require("../../telemetry/decorators.js");
|
|
84
74
|
var import_api = require("@opentelemetry/api");
|
|
75
|
+
var import_turn_executor = require("../executor/turn-executor.js");
|
|
76
|
+
var import_message_queue = require("../../session/message-queue.js");
|
|
77
|
+
var import_DextoRuntimeError = require("../../errors/DextoRuntimeError.js");
|
|
78
|
+
var import_error_codes = require("../error-codes.js");
|
|
85
79
|
var _VercelLLMService_decorators, _init;
|
|
86
80
|
_VercelLLMService_decorators = [(0, import_decorators.InstrumentClass)({
|
|
87
81
|
prefix: "llm.vercel",
|
|
88
|
-
excludeMethods: ["getModelId", "getAllTools", "
|
|
82
|
+
excludeMethods: ["getModelId", "getAllTools", "createTurnExecutor"]
|
|
89
83
|
})];
|
|
90
84
|
class VercelLLMService {
|
|
91
85
|
model;
|
|
@@ -94,8 +88,9 @@ class VercelLLMService {
|
|
|
94
88
|
contextManager;
|
|
95
89
|
sessionEventBus;
|
|
96
90
|
sessionId;
|
|
97
|
-
toolSupportCache = /* @__PURE__ */ new Map();
|
|
98
91
|
logger;
|
|
92
|
+
resourceManager;
|
|
93
|
+
messageQueue;
|
|
99
94
|
/**
|
|
100
95
|
* Helper to extract model ID from LanguageModel union type (string | LanguageModelV2)
|
|
101
96
|
*/
|
|
@@ -109,20 +104,19 @@ class VercelLLMService {
|
|
|
109
104
|
this.toolManager = toolManager;
|
|
110
105
|
this.sessionEventBus = sessionEventBus;
|
|
111
106
|
this.sessionId = sessionId;
|
|
107
|
+
this.resourceManager = resourceManager;
|
|
108
|
+
this.messageQueue = new import_message_queue.MessageQueueService(this.sessionEventBus, this.logger);
|
|
112
109
|
const formatter = new import_vercel.VercelMessageFormatter(this.logger);
|
|
113
|
-
const tokenizer = (0, import_factory.createTokenizer)(config.provider, this.getModelId(), this.logger);
|
|
114
110
|
const maxInputTokens = (0, import_registry.getEffectiveMaxInputTokens)(config, this.logger);
|
|
115
111
|
this.contextManager = new import_manager.ContextManager(
|
|
116
112
|
config,
|
|
117
113
|
formatter,
|
|
118
114
|
systemPromptManager,
|
|
119
115
|
maxInputTokens,
|
|
120
|
-
tokenizer,
|
|
121
116
|
historyProvider,
|
|
122
117
|
sessionId,
|
|
123
118
|
resourceManager,
|
|
124
119
|
this.logger
|
|
125
|
-
// compressionStrategies uses default
|
|
126
120
|
);
|
|
127
121
|
this.logger.debug(
|
|
128
122
|
`[VercelLLMService] Initialized for model: ${this.getModelId()}, provider: ${this.config.provider}, temperature: ${this.config.temperature}, maxOutputTokens: ${this.config.maxOutputTokens}`
|
|
@@ -131,134 +125,40 @@ class VercelLLMService {
|
|
|
131
125
|
getAllTools() {
|
|
132
126
|
return this.toolManager.getAllTools();
|
|
133
127
|
}
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
callId,
|
|
159
|
-
toolName,
|
|
160
|
-
rawResult,
|
|
161
|
-
{ success: true }
|
|
162
|
-
);
|
|
163
|
-
this.logger.debug(
|
|
164
|
-
`[vercel] Emitting toolResult event for ${toolName} with callId ${callId}`
|
|
165
|
-
);
|
|
166
|
-
this.sessionEventBus.emit("llm:tool-result", {
|
|
167
|
-
toolName,
|
|
168
|
-
callId,
|
|
169
|
-
success: true,
|
|
170
|
-
sanitized: persisted,
|
|
171
|
-
...(0, import_debug.shouldIncludeRawToolResult)() ? { rawResult } : {}
|
|
172
|
-
});
|
|
173
|
-
const summaryText = (0, import_utils.summarizeToolContentForText)(persisted.content);
|
|
174
|
-
return summaryText;
|
|
175
|
-
} catch (err) {
|
|
176
|
-
let errorResult;
|
|
177
|
-
let errorFlags = "";
|
|
178
|
-
if (err instanceof import_DextoRuntimeError.DextoRuntimeError && err.code === import_error_codes2.ToolErrorCode.EXECUTION_DENIED) {
|
|
179
|
-
errorResult = { error: err.message, denied: true };
|
|
180
|
-
errorFlags = " (denied)";
|
|
181
|
-
} else if (err instanceof import_DextoRuntimeError.DextoRuntimeError && err.code === import_error_codes2.ToolErrorCode.CONFIRMATION_TIMEOUT) {
|
|
182
|
-
errorResult = { error: err.message, denied: true, timeout: true };
|
|
183
|
-
errorFlags = " (timeout)";
|
|
184
|
-
} else {
|
|
185
|
-
const message = err instanceof Error ? err.message : String(err);
|
|
186
|
-
errorResult = { error: message };
|
|
187
|
-
}
|
|
188
|
-
try {
|
|
189
|
-
const persisted = await this.contextManager.addToolResult(
|
|
190
|
-
callId,
|
|
191
|
-
toolName,
|
|
192
|
-
errorResult,
|
|
193
|
-
{ success: false }
|
|
194
|
-
);
|
|
195
|
-
this.sessionEventBus.emit("llm:tool-result", {
|
|
196
|
-
toolName,
|
|
197
|
-
callId,
|
|
198
|
-
success: false,
|
|
199
|
-
sanitized: persisted,
|
|
200
|
-
...(0, import_debug.shouldIncludeRawToolResult)() ? { rawResult: errorResult } : {}
|
|
201
|
-
});
|
|
202
|
-
} catch (persistErr) {
|
|
203
|
-
this.logger.error(
|
|
204
|
-
`Failed to persist error result for ${toolName}: ${String(persistErr)}`
|
|
205
|
-
);
|
|
206
|
-
}
|
|
207
|
-
return `Tool ${toolName} failed${errorFlags}: ${errorResult.error}`;
|
|
208
|
-
}
|
|
209
|
-
},
|
|
210
|
-
...tool.description && { description: tool.description }
|
|
211
|
-
};
|
|
212
|
-
}
|
|
213
|
-
return acc;
|
|
214
|
-
}, {});
|
|
215
|
-
}
|
|
216
|
-
async validateToolSupport() {
|
|
217
|
-
const modelKey = `${this.config.provider}:${this.getModelId()}:${this.config.baseURL ?? ""}`;
|
|
218
|
-
if (this.toolSupportCache.has(modelKey)) {
|
|
219
|
-
return this.toolSupportCache.get(modelKey);
|
|
220
|
-
}
|
|
221
|
-
if (!this.config.baseURL) {
|
|
222
|
-
this.logger.debug(`Skipping tool validation for ${modelKey} - no custom baseURL`);
|
|
223
|
-
this.toolSupportCache.set(modelKey, true);
|
|
224
|
-
return true;
|
|
225
|
-
}
|
|
226
|
-
this.logger.debug(`Testing tool support for custom endpoint model: ${modelKey}`);
|
|
227
|
-
const testTool = {
|
|
228
|
-
test_tool: {
|
|
229
|
-
inputSchema: (0, import_ai2.jsonSchema)({
|
|
230
|
-
type: "object",
|
|
231
|
-
properties: {},
|
|
232
|
-
additionalProperties: false
|
|
233
|
-
}),
|
|
234
|
-
execute: async () => ({ result: "test" })
|
|
235
|
-
}
|
|
236
|
-
};
|
|
237
|
-
try {
|
|
238
|
-
await (0, import_ai.generateText)({
|
|
239
|
-
model: this.model,
|
|
240
|
-
messages: [{ role: "user", content: "Hello" }],
|
|
241
|
-
tools: testTool,
|
|
242
|
-
stopWhen: (0, import_ai.stepCountIs)(1)
|
|
243
|
-
});
|
|
244
|
-
this.toolSupportCache.set(modelKey, true);
|
|
245
|
-
this.logger.debug(`Model ${modelKey} supports tools`);
|
|
246
|
-
return true;
|
|
247
|
-
} catch (error) {
|
|
248
|
-
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
249
|
-
if (errorMessage.includes("does not support tools")) {
|
|
250
|
-
this.toolSupportCache.set(modelKey, false);
|
|
251
|
-
this.logger.debug(`Model ${modelKey} does not support tools`);
|
|
252
|
-
return false;
|
|
253
|
-
}
|
|
254
|
-
this.logger.debug(
|
|
255
|
-
`Tool validation error for ${modelKey}, assuming supported: ${errorMessage}`
|
|
256
|
-
);
|
|
257
|
-
this.toolSupportCache.set(modelKey, true);
|
|
258
|
-
return true;
|
|
259
|
-
}
|
|
128
|
+
/**
|
|
129
|
+
* Create a TurnExecutor instance for executing the agent loop.
|
|
130
|
+
*/
|
|
131
|
+
createTurnExecutor(externalSignal) {
|
|
132
|
+
return new import_turn_executor.TurnExecutor(
|
|
133
|
+
this.model,
|
|
134
|
+
this.toolManager,
|
|
135
|
+
this.contextManager,
|
|
136
|
+
this.sessionEventBus,
|
|
137
|
+
this.resourceManager,
|
|
138
|
+
this.sessionId,
|
|
139
|
+
{
|
|
140
|
+
maxSteps: this.config.maxIterations,
|
|
141
|
+
maxOutputTokens: this.config.maxOutputTokens,
|
|
142
|
+
temperature: this.config.temperature,
|
|
143
|
+
baseURL: this.config.baseURL
|
|
144
|
+
},
|
|
145
|
+
{ provider: this.config.provider, model: this.getModelId() },
|
|
146
|
+
this.logger,
|
|
147
|
+
this.messageQueue,
|
|
148
|
+
void 0,
|
|
149
|
+
// modelLimits - TurnExecutor will use defaults
|
|
150
|
+
externalSignal
|
|
151
|
+
);
|
|
260
152
|
}
|
|
261
|
-
|
|
153
|
+
/**
|
|
154
|
+
* Stream a response for the given content.
|
|
155
|
+
* Primary method for running conversations with multi-image support.
|
|
156
|
+
*
|
|
157
|
+
* @param content - String or ContentPart[] (text, images, files)
|
|
158
|
+
* @param options - { signal?: AbortSignal }
|
|
159
|
+
* @returns The assistant's text response
|
|
160
|
+
*/
|
|
161
|
+
async stream(content, options) {
|
|
262
162
|
const activeSpan = import_api.trace.getActiveSpan();
|
|
263
163
|
const currentContext = import_api.context.active();
|
|
264
164
|
const provider = this.config.provider;
|
|
@@ -281,330 +181,13 @@ class VercelLLMService {
|
|
|
281
181
|
import_api.propagation.createBaggage(baggageEntries)
|
|
282
182
|
);
|
|
283
183
|
return await import_api.context.with(updatedContext, async () => {
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
this.
|
|
287
|
-
|
|
288
|
-
);
|
|
289
|
-
|
|
290
|
-
this.logger.silly(
|
|
291
|
-
`[VercelLLMService] Formatted tools: ${JSON.stringify(formattedTools, null, 2)}`
|
|
292
|
-
);
|
|
293
|
-
let fullResponse = "";
|
|
294
|
-
this.sessionEventBus.emit("llm:thinking");
|
|
295
|
-
const prepared = await this.contextManager.getFormattedMessagesWithCompression(
|
|
296
|
-
{ mcpManager: this.toolManager.getMcpManager() },
|
|
297
|
-
{ provider: this.config.provider, model: this.getModelId() }
|
|
298
|
-
);
|
|
299
|
-
const formattedMessages = prepared.formattedMessages;
|
|
300
|
-
const tokensUsed = prepared.tokensUsed;
|
|
301
|
-
this.logger.silly(
|
|
302
|
-
`Messages (potentially compressed): ${JSON.stringify(formattedMessages, null, 2)}`
|
|
303
|
-
);
|
|
304
|
-
this.logger.silly(`Tools: ${JSON.stringify(formattedTools, null, 2)}`);
|
|
305
|
-
this.logger.debug(`Estimated tokens being sent to Vercel provider: ${tokensUsed}`);
|
|
306
|
-
if (stream) {
|
|
307
|
-
fullResponse = await this.streamText(
|
|
308
|
-
formattedMessages,
|
|
309
|
-
formattedTools,
|
|
310
|
-
this.config.maxIterations,
|
|
311
|
-
options?.signal
|
|
312
|
-
);
|
|
313
|
-
} else {
|
|
314
|
-
fullResponse = await this.generateText(
|
|
315
|
-
formattedMessages,
|
|
316
|
-
formattedTools,
|
|
317
|
-
this.config.maxIterations,
|
|
318
|
-
options?.signal
|
|
319
|
-
);
|
|
320
|
-
}
|
|
321
|
-
if (options?.signal?.aborted) {
|
|
322
|
-
return fullResponse;
|
|
323
|
-
}
|
|
324
|
-
return fullResponse || `Reached maximum number of steps (${this.config.maxIterations}) without a final response.`;
|
|
325
|
-
});
|
|
326
|
-
}
|
|
327
|
-
async generateText(messages, tools, maxSteps = 50, signal) {
|
|
328
|
-
const activeSpan = import_api.trace.getActiveSpan();
|
|
329
|
-
if (activeSpan) {
|
|
330
|
-
activeSpan.setAttribute("llm.provider", this.config.provider);
|
|
331
|
-
activeSpan.setAttribute("llm.model", this.getModelId());
|
|
332
|
-
}
|
|
333
|
-
let stepIteration = 0;
|
|
334
|
-
const estimatedTokens = Math.ceil(JSON.stringify(messages, null, 2).length / 4);
|
|
335
|
-
this.logger.debug(
|
|
336
|
-
`vercel generateText:Generating text with messages (${estimatedTokens} estimated tokens)`
|
|
337
|
-
);
|
|
338
|
-
const temperature = this.config.temperature;
|
|
339
|
-
const maxOutputTokens = this.config.maxOutputTokens;
|
|
340
|
-
const supportsTools = await this.validateToolSupport();
|
|
341
|
-
const effectiveTools = supportsTools ? tools : {};
|
|
342
|
-
if (!supportsTools && Object.keys(tools).length > 0) {
|
|
343
|
-
this.logger.debug(
|
|
344
|
-
`Model ${this.getModelId()} does not support tools, using empty tools object for generation`
|
|
345
|
-
);
|
|
346
|
-
}
|
|
347
|
-
try {
|
|
348
|
-
const includeMaxOutputTokens = typeof maxOutputTokens === "number";
|
|
349
|
-
const response = await (0, import_ai.generateText)({
|
|
350
|
-
model: this.model,
|
|
351
|
-
messages,
|
|
352
|
-
tools: effectiveTools,
|
|
353
|
-
...signal ? { abortSignal: signal } : {},
|
|
354
|
-
onStepFinish: async (step) => {
|
|
355
|
-
this.logger.debug(`Step iteration: ${stepIteration}`);
|
|
356
|
-
stepIteration++;
|
|
357
|
-
this.logger.debug(`Step finished, text: ${step.text}`);
|
|
358
|
-
this.logger.debug(
|
|
359
|
-
`Step finished, step tool calls: ${JSON.stringify(step.toolCalls, null, 2)}`
|
|
360
|
-
);
|
|
361
|
-
this.logger.debug(
|
|
362
|
-
`Step finished, step tool results: ${JSON.stringify(step.toolResults, null, 2)}`
|
|
363
|
-
);
|
|
364
|
-
},
|
|
365
|
-
stopWhen: (0, import_ai.stepCountIs)(maxSteps),
|
|
366
|
-
...includeMaxOutputTokens ? { maxOutputTokens } : {},
|
|
367
|
-
...temperature !== void 0 && { temperature }
|
|
368
|
-
});
|
|
369
|
-
this.sessionEventBus.emit("llm:response", {
|
|
370
|
-
content: response.text,
|
|
371
|
-
...response.reasoningText && { reasoning: response.reasoningText },
|
|
372
|
-
provider: this.config.provider,
|
|
373
|
-
model: this.getModelId(),
|
|
374
|
-
router: "vercel",
|
|
375
|
-
tokenUsage: {
|
|
376
|
-
...response.totalUsage.inputTokens !== void 0 && {
|
|
377
|
-
inputTokens: response.totalUsage.inputTokens
|
|
378
|
-
},
|
|
379
|
-
...response.totalUsage.outputTokens !== void 0 && {
|
|
380
|
-
outputTokens: response.totalUsage.outputTokens
|
|
381
|
-
},
|
|
382
|
-
...response.totalUsage.reasoningTokens !== void 0 && {
|
|
383
|
-
reasoningTokens: response.totalUsage.reasoningTokens
|
|
384
|
-
},
|
|
385
|
-
...response.totalUsage.totalTokens !== void 0 && {
|
|
386
|
-
totalTokens: response.totalUsage.totalTokens
|
|
387
|
-
}
|
|
388
|
-
}
|
|
389
|
-
});
|
|
390
|
-
const activeSpan2 = import_api.trace.getActiveSpan();
|
|
391
|
-
if (activeSpan2) {
|
|
392
|
-
const attributes = {};
|
|
393
|
-
if (response.totalUsage.inputTokens !== void 0) {
|
|
394
|
-
attributes["gen_ai.usage.input_tokens"] = response.totalUsage.inputTokens;
|
|
395
|
-
}
|
|
396
|
-
if (response.totalUsage.outputTokens !== void 0) {
|
|
397
|
-
attributes["gen_ai.usage.output_tokens"] = response.totalUsage.outputTokens;
|
|
398
|
-
}
|
|
399
|
-
if (response.totalUsage.totalTokens !== void 0) {
|
|
400
|
-
attributes["gen_ai.usage.total_tokens"] = response.totalUsage.totalTokens;
|
|
401
|
-
}
|
|
402
|
-
if (response.totalUsage.reasoningTokens !== void 0) {
|
|
403
|
-
attributes["gen_ai.usage.reasoning_tokens"] = response.totalUsage.reasoningTokens;
|
|
404
|
-
}
|
|
405
|
-
activeSpan2.setAttributes(attributes);
|
|
406
|
-
}
|
|
407
|
-
await this.contextManager.processLLMResponse(response);
|
|
408
|
-
if (typeof response.totalUsage.totalTokens === "number") {
|
|
409
|
-
this.contextManager.updateActualTokenCount(response.totalUsage.totalTokens);
|
|
410
|
-
}
|
|
411
|
-
return response.text;
|
|
412
|
-
} catch (err) {
|
|
413
|
-
const error = this.mapProviderError(err, "generate");
|
|
414
|
-
this.sessionEventBus.emit("llm:error", {
|
|
415
|
-
error,
|
|
416
|
-
context: "generateText",
|
|
417
|
-
recoverable: false
|
|
418
|
-
});
|
|
419
|
-
return "";
|
|
420
|
-
}
|
|
421
|
-
}
|
|
422
|
-
mapProviderError(err, phase) {
|
|
423
|
-
if (import_ai.APICallError.isInstance?.(err)) {
|
|
424
|
-
this.logger.error(`APICallError in mapProviderError: ${JSON.stringify(err, null, 2)}`);
|
|
425
|
-
const status = err.statusCode;
|
|
426
|
-
const headers = err.responseHeaders || {};
|
|
427
|
-
const retryAfter = headers["retry-after"] ? Number(headers["retry-after"]) : void 0;
|
|
428
|
-
const body = typeof err.responseBody === "string" ? err.responseBody : JSON.stringify(err.responseBody ?? "");
|
|
429
|
-
if (status === 429) {
|
|
430
|
-
return new import_DextoRuntimeError.DextoRuntimeError(
|
|
431
|
-
import_error_codes.LLMErrorCode.RATE_LIMIT_EXCEEDED,
|
|
432
|
-
import_types5.ErrorScope.LLM,
|
|
433
|
-
import_types5.ErrorType.RATE_LIMIT,
|
|
434
|
-
`Rate limit exceeded${body ? ` - ${body}` : ""}`,
|
|
435
|
-
{
|
|
436
|
-
sessionId: this.sessionId,
|
|
437
|
-
provider: this.config.provider,
|
|
438
|
-
model: this.getModelId(),
|
|
439
|
-
status,
|
|
440
|
-
retryAfter,
|
|
441
|
-
body,
|
|
442
|
-
phase
|
|
443
|
-
}
|
|
444
|
-
);
|
|
445
|
-
}
|
|
446
|
-
if (status === 408) {
|
|
447
|
-
return new import_DextoRuntimeError.DextoRuntimeError(
|
|
448
|
-
import_error_codes.LLMErrorCode.GENERATION_FAILED,
|
|
449
|
-
import_types5.ErrorScope.LLM,
|
|
450
|
-
import_types5.ErrorType.TIMEOUT,
|
|
451
|
-
`Provider timed out${body ? ` - ${body}` : ""}`,
|
|
452
|
-
{
|
|
453
|
-
sessionId: this.sessionId,
|
|
454
|
-
provider: this.config.provider,
|
|
455
|
-
model: this.getModelId(),
|
|
456
|
-
status,
|
|
457
|
-
body,
|
|
458
|
-
phase
|
|
459
|
-
}
|
|
460
|
-
);
|
|
461
|
-
}
|
|
462
|
-
return new import_DextoRuntimeError.DextoRuntimeError(
|
|
463
|
-
import_error_codes.LLMErrorCode.GENERATION_FAILED,
|
|
464
|
-
import_types5.ErrorScope.LLM,
|
|
465
|
-
import_types5.ErrorType.THIRD_PARTY,
|
|
466
|
-
`Provider error ${status}${body ? ` - ${body}` : ""}`,
|
|
467
|
-
{
|
|
468
|
-
sessionId: this.sessionId,
|
|
469
|
-
provider: this.config.provider,
|
|
470
|
-
model: this.getModelId(),
|
|
471
|
-
status,
|
|
472
|
-
body,
|
|
473
|
-
phase
|
|
474
|
-
}
|
|
475
|
-
);
|
|
476
|
-
}
|
|
477
|
-
return (0, import_error_conversion.toError)(err, this.logger);
|
|
478
|
-
}
|
|
479
|
-
// Updated streamText to behave like generateText - returns string and handles message processing internally
|
|
480
|
-
async streamText(messages, tools, maxSteps = 10, signal) {
|
|
481
|
-
const activeSpan = import_api.trace.getActiveSpan();
|
|
482
|
-
if (activeSpan) {
|
|
483
|
-
activeSpan.setAttribute("llm.provider", this.config.provider);
|
|
484
|
-
activeSpan.setAttribute("llm.model", this.getModelId());
|
|
485
|
-
}
|
|
486
|
-
let stepIteration = 0;
|
|
487
|
-
const temperature = this.config.temperature;
|
|
488
|
-
const maxOutputTokens = this.config.maxOutputTokens;
|
|
489
|
-
const supportsTools = await this.validateToolSupport();
|
|
490
|
-
const effectiveTools = supportsTools ? tools : {};
|
|
491
|
-
if (!supportsTools && Object.keys(tools).length > 0) {
|
|
492
|
-
this.logger.debug(
|
|
493
|
-
`Model ${this.getModelId()} does not support tools, using empty tools object for streaming`
|
|
494
|
-
);
|
|
495
|
-
}
|
|
496
|
-
let streamErr;
|
|
497
|
-
const includeMaxOutputTokens = typeof maxOutputTokens === "number";
|
|
498
|
-
let response;
|
|
499
|
-
response = (0, import_ai.streamText)({
|
|
500
|
-
model: this.model,
|
|
501
|
-
messages,
|
|
502
|
-
tools: effectiveTools,
|
|
503
|
-
...signal ? { abortSignal: signal } : {},
|
|
504
|
-
onChunk: (chunk) => {
|
|
505
|
-
this.logger.debug(`Chunk type: ${chunk.chunk.type}`);
|
|
506
|
-
if (chunk.chunk.type === "text-delta") {
|
|
507
|
-
this.sessionEventBus.emit("llm:chunk", {
|
|
508
|
-
chunkType: "text",
|
|
509
|
-
content: chunk.chunk.text,
|
|
510
|
-
isComplete: false
|
|
511
|
-
});
|
|
512
|
-
} else if (chunk.chunk.type === "reasoning-delta") {
|
|
513
|
-
this.sessionEventBus.emit("llm:chunk", {
|
|
514
|
-
chunkType: "reasoning",
|
|
515
|
-
content: chunk.chunk.text,
|
|
516
|
-
isComplete: false
|
|
517
|
-
});
|
|
518
|
-
}
|
|
519
|
-
},
|
|
520
|
-
// TODO: Add onAbort handler when we implement partial response handling.
|
|
521
|
-
// Vercel triggers onAbort instead of onError for cancelled streams.
|
|
522
|
-
// This is where cancellation logic should be handled properly.
|
|
523
|
-
onError: (error) => {
|
|
524
|
-
const err = this.mapProviderError(error, "stream");
|
|
525
|
-
this.logger.error(`Error in streamText after parsing: ${err.toString()}`);
|
|
526
|
-
this.sessionEventBus.emit("llm:error", {
|
|
527
|
-
error: err,
|
|
528
|
-
context: "streamText",
|
|
529
|
-
recoverable: false
|
|
530
|
-
});
|
|
531
|
-
streamErr = error;
|
|
532
|
-
},
|
|
533
|
-
onStepFinish: async (step) => {
|
|
534
|
-
this.logger.debug(`Step iteration: ${stepIteration}`);
|
|
535
|
-
stepIteration++;
|
|
536
|
-
this.logger.debug(`Step finished, text: ${step.text}`);
|
|
537
|
-
this.logger.debug(
|
|
538
|
-
`Step finished, step tool calls: ${JSON.stringify(step.toolCalls, null, 2)}`
|
|
539
|
-
);
|
|
540
|
-
this.logger.debug(
|
|
541
|
-
`Step finished, step tool results: ${JSON.stringify(step.toolResults, null, 2)}`
|
|
542
|
-
);
|
|
543
|
-
},
|
|
544
|
-
// No onFinish: we finalize after the stream completes below.
|
|
545
|
-
stopWhen: (0, import_ai.stepCountIs)(maxSteps),
|
|
546
|
-
...includeMaxOutputTokens ? { maxOutputTokens } : {},
|
|
547
|
-
...temperature !== void 0 && { temperature }
|
|
184
|
+
const parts = typeof content === "string" ? [{ type: "text", text: content }] : content;
|
|
185
|
+
await this.contextManager.addUserMessage(parts);
|
|
186
|
+
const executor = this.createTurnExecutor(options?.signal);
|
|
187
|
+
const contributorContext = { mcpManager: this.toolManager.getMcpManager() };
|
|
188
|
+
const result = await executor.execute(contributorContext, true);
|
|
189
|
+
return result.text ?? "";
|
|
548
190
|
});
|
|
549
|
-
if (streamErr) {
|
|
550
|
-
return "";
|
|
551
|
-
}
|
|
552
|
-
let finalText;
|
|
553
|
-
let usage;
|
|
554
|
-
let reasoningText;
|
|
555
|
-
try {
|
|
556
|
-
[finalText, usage, reasoningText] = await Promise.all([
|
|
557
|
-
response.text,
|
|
558
|
-
response.totalUsage,
|
|
559
|
-
response.reasoningText
|
|
560
|
-
]);
|
|
561
|
-
} catch (_error) {
|
|
562
|
-
this.logger.debug(
|
|
563
|
-
`streamText finalization failed while awaiting text/usage/reasoning: ${String(_error)}`
|
|
564
|
-
);
|
|
565
|
-
return "";
|
|
566
|
-
}
|
|
567
|
-
this.logger.debug(`streamText finalText: ${finalText}`);
|
|
568
|
-
this.logger.debug(`streamText usage: ${JSON.stringify(usage, null, 2)}`);
|
|
569
|
-
this.logger.debug(`streamText reasoningText: ${reasoningText}`);
|
|
570
|
-
this.sessionEventBus.emit("llm:response", {
|
|
571
|
-
content: finalText,
|
|
572
|
-
...reasoningText && { reasoning: reasoningText },
|
|
573
|
-
provider: this.config.provider,
|
|
574
|
-
model: this.getModelId(),
|
|
575
|
-
router: "vercel",
|
|
576
|
-
tokenUsage: {
|
|
577
|
-
...usage.inputTokens !== void 0 && { inputTokens: usage.inputTokens },
|
|
578
|
-
...usage.outputTokens !== void 0 && { outputTokens: usage.outputTokens },
|
|
579
|
-
...usage.reasoningTokens !== void 0 && {
|
|
580
|
-
reasoningTokens: usage.reasoningTokens
|
|
581
|
-
},
|
|
582
|
-
...usage.totalTokens !== void 0 && { totalTokens: usage.totalTokens }
|
|
583
|
-
}
|
|
584
|
-
});
|
|
585
|
-
const activeSpan2 = import_api.trace.getActiveSpan();
|
|
586
|
-
if (activeSpan2) {
|
|
587
|
-
const attributes = {};
|
|
588
|
-
if (usage.inputTokens !== void 0) {
|
|
589
|
-
attributes["gen_ai.usage.input_tokens"] = usage.inputTokens;
|
|
590
|
-
}
|
|
591
|
-
if (usage.outputTokens !== void 0) {
|
|
592
|
-
attributes["gen_ai.usage.output_tokens"] = usage.outputTokens;
|
|
593
|
-
}
|
|
594
|
-
if (usage.totalTokens !== void 0) {
|
|
595
|
-
attributes["gen_ai.usage.total_tokens"] = usage.totalTokens;
|
|
596
|
-
}
|
|
597
|
-
if (usage.reasoningTokens !== void 0) {
|
|
598
|
-
attributes["gen_ai.usage.reasoning_tokens"] = usage.reasoningTokens;
|
|
599
|
-
}
|
|
600
|
-
activeSpan2.setAttributes(attributes);
|
|
601
|
-
}
|
|
602
|
-
if (typeof usage.totalTokens === "number") {
|
|
603
|
-
this.contextManager.updateActualTokenCount(usage.totalTokens);
|
|
604
|
-
}
|
|
605
|
-
await this.contextManager.processLLMStreamResponse(response);
|
|
606
|
-
this.logger.silly(`streamText response object: ${JSON.stringify(response, null, 2)}`);
|
|
607
|
-
return finalText;
|
|
608
191
|
}
|
|
609
192
|
/**
|
|
610
193
|
* Get configuration information about the LLM service
|
|
@@ -616,7 +199,6 @@ class VercelLLMService {
|
|
|
616
199
|
try {
|
|
617
200
|
modelMaxInputTokens = (0, import_registry.getMaxInputTokensForModel)(
|
|
618
201
|
this.config.provider,
|
|
619
|
-
// Use our internal provider name
|
|
620
202
|
this.getModelId(),
|
|
621
203
|
this.logger
|
|
622
204
|
);
|
|
@@ -631,9 +213,7 @@ class VercelLLMService {
|
|
|
631
213
|
}
|
|
632
214
|
}
|
|
633
215
|
return {
|
|
634
|
-
router: "vercel",
|
|
635
216
|
provider: this.config.provider,
|
|
636
|
-
// Use our internal provider name
|
|
637
217
|
model: this.model,
|
|
638
218
|
configuredMaxInputTokens: configuredMaxTokens,
|
|
639
219
|
modelMaxInputTokens
|
|
@@ -645,6 +225,12 @@ class VercelLLMService {
|
|
|
645
225
|
getContextManager() {
|
|
646
226
|
return this.contextManager;
|
|
647
227
|
}
|
|
228
|
+
/**
|
|
229
|
+
* Get the message queue for external access (e.g., queueing messages while busy)
|
|
230
|
+
*/
|
|
231
|
+
getMessageQueue() {
|
|
232
|
+
return this.messageQueue;
|
|
233
|
+
}
|
|
648
234
|
}
|
|
649
235
|
_init = __decoratorStart(null);
|
|
650
236
|
VercelLLMService = __decorateElement(_init, 0, "VercelLLMService", _VercelLLMService_decorators, VercelLLMService);
|