@dexto/core 1.2.6 → 1.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +55 -13
- package/dist/agent/DextoAgent.cjs +627 -228
- package/dist/agent/DextoAgent.d.ts +157 -34
- package/dist/agent/DextoAgent.d.ts.map +1 -1
- package/dist/agent/DextoAgent.js +625 -227
- package/dist/agent/agentCard.js +1 -1
- package/dist/agent/error-codes.cjs +1 -0
- package/dist/agent/error-codes.d.ts +2 -1
- package/dist/agent/error-codes.d.ts.map +1 -1
- package/dist/agent/error-codes.js +2 -1
- package/dist/agent/errors.cjs +13 -0
- package/dist/agent/errors.d.ts +4 -0
- package/dist/agent/errors.d.ts.map +1 -1
- package/dist/agent/errors.js +14 -1
- package/dist/agent/index.d.ts +1 -1
- package/dist/agent/index.d.ts.map +1 -1
- package/dist/agent/index.js +1 -1
- package/dist/agent/schemas.cjs +4 -1
- package/dist/agent/schemas.d.ts +92 -55
- package/dist/agent/schemas.d.ts.map +1 -1
- package/dist/agent/schemas.js +7 -3
- package/dist/agent/state-manager.cjs +5 -5
- package/dist/agent/state-manager.d.ts +4 -4
- package/dist/agent/state-manager.js +6 -6
- package/dist/agent/types.d.ts +24 -11
- package/dist/agent/types.d.ts.map +1 -1
- package/dist/approval/error-codes.js +1 -1
- package/dist/approval/errors.js +1 -1
- package/dist/approval/factory.js +1 -1
- package/dist/approval/index.js +1 -1
- package/dist/approval/manager.cjs +69 -3
- package/dist/approval/manager.d.ts +41 -3
- package/dist/approval/manager.d.ts.map +1 -1
- package/dist/approval/manager.js +70 -4
- package/dist/approval/schemas.cjs +20 -5
- package/dist/approval/schemas.d.ts +127 -52
- package/dist/approval/schemas.d.ts.map +1 -1
- package/dist/approval/schemas.js +21 -6
- package/dist/approval/types.d.ts +6 -0
- package/dist/approval/types.d.ts.map +1 -1
- package/dist/approval/types.js +1 -1
- package/dist/{chunk-C6A6W6XS.js → chunk-PTJYTZNU.js} +44 -1
- package/dist/{llm/tokenizer/factory.cjs → context/compression/overflow.cjs} +20 -21
- package/dist/context/compression/overflow.d.ts +33 -0
- package/dist/context/compression/overflow.d.ts.map +1 -0
- package/dist/context/compression/overflow.js +19 -0
- package/dist/context/compression/reactive-overflow.cjs +201 -0
- package/dist/context/compression/reactive-overflow.d.ts +81 -0
- package/dist/context/compression/reactive-overflow.d.ts.map +1 -0
- package/dist/context/compression/reactive-overflow.js +178 -0
- package/dist/context/compression/types.d.ts +9 -7
- package/dist/context/compression/types.d.ts.map +1 -1
- package/dist/context/error-codes.cjs +3 -0
- package/dist/context/error-codes.d.ts +4 -1
- package/dist/context/error-codes.d.ts.map +1 -1
- package/dist/context/error-codes.js +4 -1
- package/dist/context/errors.cjs +28 -0
- package/dist/context/errors.d.ts +7 -0
- package/dist/context/errors.d.ts.map +1 -1
- package/dist/context/errors.js +29 -1
- package/dist/context/index.js +1 -1
- package/dist/context/manager.cjs +287 -323
- package/dist/context/manager.d.ts +65 -111
- package/dist/context/manager.d.ts.map +1 -1
- package/dist/context/manager.js +287 -328
- package/dist/context/media-helpers.js +1 -1
- package/dist/context/types.cjs +49 -0
- package/dist/context/types.d.ts +185 -72
- package/dist/context/types.d.ts.map +1 -1
- package/dist/context/types.js +35 -0
- package/dist/context/utils.cjs +266 -283
- package/dist/context/utils.d.ts +32 -18
- package/dist/context/utils.d.ts.map +1 -1
- package/dist/context/utils.js +266 -283
- package/dist/errors/DextoBaseError.js +1 -1
- package/dist/errors/DextoRuntimeError.js +1 -1
- package/dist/errors/DextoValidationError.js +1 -1
- package/dist/errors/index.js +1 -1
- package/dist/errors/result-bridge.js +1 -1
- package/dist/errors/types.cjs +1 -0
- package/dist/errors/types.d.ts +4 -2
- package/dist/errors/types.d.ts.map +1 -1
- package/dist/errors/types.js +2 -1
- package/dist/events/index.cjs +22 -2
- package/dist/events/index.d.ts +170 -62
- package/dist/events/index.d.ts.map +1 -1
- package/dist/events/index.js +23 -3
- package/dist/filesystem/error-codes.js +1 -1
- package/dist/filesystem/errors.js +1 -1
- package/dist/filesystem/filesystem-service.js +1 -1
- package/dist/filesystem/index.js +1 -1
- package/dist/filesystem/path-validator.js +1 -1
- package/dist/index.browser.cjs +23 -8
- package/dist/index.browser.d.ts +4 -3
- package/dist/index.browser.d.ts.map +1 -1
- package/dist/index.browser.js +20 -3
- package/dist/index.js +1 -1
- package/dist/llm/error-codes.cjs +0 -1
- package/dist/llm/error-codes.d.ts +0 -1
- package/dist/llm/error-codes.d.ts.map +1 -1
- package/dist/llm/error-codes.js +1 -2
- package/dist/llm/errors.cjs +10 -10
- package/dist/llm/errors.d.ts +5 -6
- package/dist/llm/errors.d.ts.map +1 -1
- package/dist/llm/errors.js +12 -12
- package/dist/llm/executor/stream-processor.cjs +367 -0
- package/dist/llm/executor/stream-processor.d.ts +55 -0
- package/dist/llm/executor/stream-processor.d.ts.map +1 -0
- package/dist/llm/executor/stream-processor.js +344 -0
- package/dist/llm/executor/tool-output-truncator.cjs +75 -0
- package/dist/llm/executor/tool-output-truncator.d.ts +27 -0
- package/dist/llm/executor/tool-output-truncator.d.ts.map +1 -0
- package/dist/llm/executor/tool-output-truncator.js +48 -0
- package/dist/llm/executor/turn-executor.cjs +753 -0
- package/dist/llm/executor/turn-executor.d.ts +166 -0
- package/dist/llm/executor/turn-executor.d.ts.map +1 -0
- package/dist/llm/executor/turn-executor.js +684 -0
- package/dist/llm/executor/types.d.ts +27 -0
- package/dist/llm/executor/types.d.ts.map +1 -0
- package/dist/llm/formatters/vercel.cjs +20 -186
- package/dist/llm/formatters/vercel.d.ts +2 -14
- package/dist/llm/formatters/vercel.d.ts.map +1 -1
- package/dist/llm/formatters/vercel.js +19 -185
- package/dist/llm/registry.cjs +36 -45
- package/dist/llm/registry.d.ts +53 -39
- package/dist/llm/registry.d.ts.map +1 -1
- package/dist/llm/registry.js +34 -42
- package/dist/llm/resolver.cjs +1 -31
- package/dist/llm/resolver.d.ts.map +1 -1
- package/dist/llm/resolver.js +2 -34
- package/dist/llm/schemas.cjs +2 -17
- package/dist/llm/schemas.d.ts +10 -23
- package/dist/llm/schemas.d.ts.map +1 -1
- package/dist/llm/schemas.js +5 -22
- package/dist/llm/services/factory.cjs +3 -92
- package/dist/llm/services/factory.d.ts +14 -4
- package/dist/llm/services/factory.d.ts.map +1 -1
- package/dist/llm/services/factory.js +4 -83
- package/dist/llm/services/test-utils.integration.cjs +6 -8
- package/dist/llm/services/test-utils.integration.d.ts.map +1 -1
- package/dist/llm/services/test-utils.integration.js +7 -9
- package/dist/llm/services/types.d.ts +1 -28
- package/dist/llm/services/types.d.ts.map +1 -1
- package/dist/llm/services/vercel.cjs +54 -468
- package/dist/llm/services/vercel.d.ts +38 -21
- package/dist/llm/services/vercel.d.ts.map +1 -1
- package/dist/llm/services/vercel.js +56 -475
- package/dist/llm/types.cjs +0 -3
- package/dist/llm/types.d.ts +8 -8
- package/dist/llm/types.d.ts.map +1 -1
- package/dist/llm/types.js +1 -3
- package/dist/llm/validation.js +1 -1
- package/dist/logger/browser.js +1 -1
- package/dist/logger/factory.js +1 -1
- package/dist/logger/index.js +1 -1
- package/dist/logger/logger.js +1 -1
- package/dist/logger/v2/dexto-logger.cjs +34 -6
- package/dist/logger/v2/dexto-logger.d.ts +20 -2
- package/dist/logger/v2/dexto-logger.d.ts.map +1 -1
- package/dist/logger/v2/dexto-logger.js +35 -7
- package/dist/logger/v2/error-codes.js +1 -1
- package/dist/logger/v2/errors.js +1 -1
- package/dist/logger/v2/schemas.cjs +1 -1
- package/dist/logger/v2/schemas.js +2 -2
- package/dist/logger/v2/test-utils.cjs +70 -0
- package/dist/logger/v2/test-utils.d.ts +17 -0
- package/dist/logger/v2/test-utils.d.ts.map +1 -0
- package/dist/logger/v2/test-utils.js +46 -0
- package/dist/logger/v2/transport-factory.js +1 -1
- package/dist/logger/v2/transports/console-transport.js +1 -1
- package/dist/logger/v2/transports/file-transport.cjs +6 -0
- package/dist/logger/v2/transports/file-transport.d.ts +4 -0
- package/dist/logger/v2/transports/file-transport.d.ts.map +1 -1
- package/dist/logger/v2/transports/file-transport.js +7 -1
- package/dist/logger/v2/types.cjs +1 -0
- package/dist/logger/v2/types.d.ts +18 -2
- package/dist/logger/v2/types.d.ts.map +1 -1
- package/dist/logger/v2/types.js +2 -1
- package/dist/mcp/error-codes.cjs +1 -0
- package/dist/mcp/error-codes.d.ts +1 -0
- package/dist/mcp/error-codes.d.ts.map +1 -1
- package/dist/mcp/error-codes.js +2 -1
- package/dist/mcp/errors.cjs +13 -0
- package/dist/mcp/errors.d.ts +7 -0
- package/dist/mcp/errors.d.ts.map +1 -1
- package/dist/mcp/errors.js +14 -1
- package/dist/mcp/manager.cjs +4 -0
- package/dist/mcp/manager.d.ts.map +1 -1
- package/dist/mcp/manager.js +5 -1
- package/dist/mcp/mcp-client.js +1 -1
- package/dist/mcp/resolver.js +1 -1
- package/dist/mcp/schemas.cjs +6 -0
- package/dist/mcp/schemas.d.ts +52 -0
- package/dist/mcp/schemas.d.ts.map +1 -1
- package/dist/mcp/schemas.js +6 -1
- package/dist/memory/error-codes.js +1 -1
- package/dist/memory/errors.js +1 -1
- package/dist/memory/index.js +1 -1
- package/dist/memory/manager.js +1 -1
- package/dist/memory/schemas.d.ts +2 -2
- package/dist/memory/schemas.js +1 -1
- package/dist/plugins/builtins/content-policy.js +1 -1
- package/dist/plugins/builtins/response-sanitizer.js +1 -1
- package/dist/plugins/error-codes.cjs +1 -0
- package/dist/plugins/error-codes.d.ts +3 -1
- package/dist/plugins/error-codes.d.ts.map +1 -1
- package/dist/plugins/error-codes.js +2 -1
- package/dist/plugins/index.js +1 -1
- package/dist/plugins/loader.cjs +25 -5
- package/dist/plugins/loader.d.ts.map +1 -1
- package/dist/plugins/loader.js +26 -6
- package/dist/plugins/manager.js +1 -1
- package/dist/plugins/registrations/builtins.js +1 -1
- package/dist/plugins/schemas.d.ts +3 -3
- package/dist/plugins/schemas.js +1 -1
- package/dist/plugins/types.d.ts +0 -1
- package/dist/plugins/types.d.ts.map +1 -1
- package/dist/process/command-validator.js +1 -1
- package/dist/process/error-codes.js +1 -1
- package/dist/process/errors.js +1 -1
- package/dist/process/index.js +1 -1
- package/dist/process/process-service.cjs +78 -26
- package/dist/process/process-service.d.ts +6 -1
- package/dist/process/process-service.d.ts.map +1 -1
- package/dist/process/process-service.js +79 -27
- package/dist/process/types.d.ts +2 -2
- package/dist/process/types.d.ts.map +1 -1
- package/dist/prompts/error-codes.cjs +1 -0
- package/dist/prompts/error-codes.d.ts +2 -1
- package/dist/prompts/error-codes.d.ts.map +1 -1
- package/dist/prompts/error-codes.js +2 -1
- package/dist/prompts/errors.cjs +15 -0
- package/dist/prompts/errors.d.ts +4 -0
- package/dist/prompts/errors.d.ts.map +1 -1
- package/dist/prompts/errors.js +16 -1
- package/dist/prompts/index.js +1 -1
- package/dist/prompts/name-validation.js +1 -1
- package/dist/prompts/prompt-manager.cjs +13 -2
- package/dist/prompts/prompt-manager.d.ts +7 -0
- package/dist/prompts/prompt-manager.d.ts.map +1 -1
- package/dist/prompts/prompt-manager.js +14 -3
- package/dist/prompts/providers/config-prompt-provider.cjs +12 -3
- package/dist/prompts/providers/config-prompt-provider.d.ts +2 -1
- package/dist/prompts/providers/config-prompt-provider.d.ts.map +1 -1
- package/dist/prompts/providers/config-prompt-provider.js +13 -4
- package/dist/prompts/providers/custom-prompt-provider.cjs +2 -2
- package/dist/prompts/providers/custom-prompt-provider.d.ts +1 -1
- package/dist/prompts/providers/custom-prompt-provider.d.ts.map +1 -1
- package/dist/prompts/providers/custom-prompt-provider.js +3 -3
- package/dist/prompts/providers/mcp-prompt-provider.js +1 -1
- package/dist/prompts/schemas.d.ts +12 -0
- package/dist/prompts/schemas.d.ts.map +1 -1
- package/dist/prompts/schemas.js +1 -1
- package/dist/prompts/types.d.ts +2 -0
- package/dist/prompts/types.d.ts.map +1 -1
- package/dist/prompts/utils.js +1 -1
- package/dist/resources/error-codes.js +1 -1
- package/dist/resources/errors.js +1 -1
- package/dist/resources/handlers/blob-handler.js +1 -1
- package/dist/resources/handlers/factory.js +1 -1
- package/dist/resources/handlers/filesystem-handler.js +1 -1
- package/dist/resources/index.js +1 -1
- package/dist/resources/internal-provider.js +1 -1
- package/dist/resources/manager.js +1 -1
- package/dist/resources/reference-parser.js +1 -1
- package/dist/resources/schemas.js +1 -1
- package/dist/search/index.js +1 -1
- package/dist/search/search-service.js +1 -1
- package/dist/session/chat-session.cjs +149 -51
- package/dist/session/chat-session.d.ts +69 -29
- package/dist/session/chat-session.d.ts.map +1 -1
- package/dist/session/chat-session.js +150 -52
- package/dist/session/error-codes.js +1 -1
- package/dist/session/errors.js +1 -1
- package/dist/session/history/database.cjs +134 -21
- package/dist/session/history/database.d.ts +37 -8
- package/dist/session/history/database.d.ts.map +1 -1
- package/dist/session/history/database.js +135 -22
- package/dist/session/history/factory.js +1 -1
- package/dist/session/history/memory.cjs +18 -0
- package/dist/session/history/memory.d.ts +8 -0
- package/dist/session/history/memory.d.ts.map +1 -1
- package/dist/session/history/memory.js +19 -1
- package/dist/session/history/types.d.ts +13 -1
- package/dist/session/history/types.d.ts.map +1 -1
- package/dist/session/index.cjs +3 -0
- package/dist/session/index.d.ts +3 -0
- package/dist/session/index.d.ts.map +1 -1
- package/dist/session/index.js +3 -1
- package/dist/session/message-queue.cjs +201 -0
- package/dist/session/message-queue.d.ts +114 -0
- package/dist/session/message-queue.d.ts.map +1 -0
- package/dist/session/message-queue.js +178 -0
- package/dist/session/schemas.js +1 -1
- package/dist/session/session-manager.cjs +57 -7
- package/dist/session/session-manager.d.ts +18 -0
- package/dist/session/session-manager.d.ts.map +1 -1
- package/dist/session/session-manager.js +58 -8
- package/dist/session/title-generator.cjs +4 -8
- package/dist/session/title-generator.d.ts +1 -2
- package/dist/session/title-generator.d.ts.map +1 -1
- package/dist/session/title-generator.js +5 -9
- package/dist/session/types.cjs +16 -0
- package/dist/session/types.d.ts +14 -0
- package/dist/session/types.d.ts.map +1 -0
- package/dist/session/types.js +0 -0
- package/dist/storage/blob/factory.js +1 -1
- package/dist/storage/blob/local-blob-store.js +1 -1
- package/dist/storage/blob/memory-blob-store.js +1 -1
- package/dist/storage/blob/schemas.js +1 -1
- package/dist/storage/cache/factory.cjs +6 -2
- package/dist/storage/cache/factory.d.ts +2 -1
- package/dist/storage/cache/factory.d.ts.map +1 -1
- package/dist/storage/cache/factory.js +7 -3
- package/dist/storage/cache/memory-cache-store.js +1 -1
- package/dist/storage/cache/redis-store.js +1 -1
- package/dist/storage/cache/schemas.js +1 -1
- package/dist/storage/database/factory.cjs +11 -17
- package/dist/storage/database/factory.d.ts +2 -1
- package/dist/storage/database/factory.d.ts.map +1 -1
- package/dist/storage/database/factory.js +12 -18
- package/dist/storage/database/memory-database-store.js +1 -1
- package/dist/storage/database/postgres-store.cjs +12 -0
- package/dist/storage/database/postgres-store.d.ts.map +1 -1
- package/dist/storage/database/postgres-store.js +13 -1
- package/dist/storage/database/schemas.js +1 -1
- package/dist/storage/database/sqlite-store.cjs +8 -0
- package/dist/storage/database/sqlite-store.d.ts.map +1 -1
- package/dist/storage/database/sqlite-store.js +9 -1
- package/dist/storage/error-codes.cjs +1 -0
- package/dist/storage/error-codes.d.ts +1 -0
- package/dist/storage/error-codes.d.ts.map +1 -1
- package/dist/storage/error-codes.js +2 -1
- package/dist/storage/errors.cjs +17 -0
- package/dist/storage/errors.d.ts +9 -0
- package/dist/storage/errors.d.ts.map +1 -1
- package/dist/storage/errors.js +18 -1
- package/dist/storage/index.js +1 -1
- package/dist/storage/schemas.js +1 -1
- package/dist/storage/storage-manager.js +1 -1
- package/dist/systemPrompt/contributors.js +1 -1
- package/dist/systemPrompt/error-codes.js +1 -1
- package/dist/systemPrompt/errors.js +1 -1
- package/dist/systemPrompt/in-built-prompts.js +1 -1
- package/dist/systemPrompt/index.js +1 -1
- package/dist/systemPrompt/manager.js +1 -1
- package/dist/systemPrompt/registry.js +1 -1
- package/dist/systemPrompt/schemas.d.ts +5 -5
- package/dist/systemPrompt/schemas.js +1 -1
- package/dist/telemetry/decorators.js +1 -1
- package/dist/{llm/tokenizer/default.cjs → telemetry/error-codes.cjs} +14 -19
- package/dist/telemetry/error-codes.d.ts +13 -0
- package/dist/telemetry/error-codes.d.ts.map +1 -0
- package/dist/telemetry/error-codes.js +13 -0
- package/dist/telemetry/errors.cjs +105 -0
- package/dist/telemetry/errors.d.ts +28 -0
- package/dist/telemetry/errors.d.ts.map +1 -0
- package/dist/telemetry/errors.js +82 -0
- package/dist/telemetry/exporters.js +1 -1
- package/dist/telemetry/index.js +1 -1
- package/dist/telemetry/schemas.js +1 -1
- package/dist/telemetry/telemetry.cjs +92 -26
- package/dist/telemetry/telemetry.d.ts +1 -1
- package/dist/telemetry/telemetry.d.ts.map +1 -1
- package/dist/telemetry/telemetry.js +75 -19
- package/dist/telemetry/utils.js +1 -1
- package/dist/tools/bash-pattern-utils.cjs +91 -0
- package/dist/tools/bash-pattern-utils.d.ts +58 -0
- package/dist/tools/bash-pattern-utils.d.ts.map +1 -0
- package/dist/tools/bash-pattern-utils.js +64 -0
- package/dist/tools/confirmation/allowed-tools-provider/factory.js +1 -1
- package/dist/tools/confirmation/allowed-tools-provider/in-memory.js +1 -1
- package/dist/tools/confirmation/allowed-tools-provider/storage.js +1 -1
- package/dist/tools/display-types.cjs +60 -0
- package/dist/tools/display-types.d.ts +133 -0
- package/dist/tools/display-types.d.ts.map +1 -0
- package/dist/tools/display-types.js +32 -0
- package/dist/tools/error-codes.cjs +2 -0
- package/dist/tools/error-codes.d.ts +3 -1
- package/dist/tools/error-codes.d.ts.map +1 -1
- package/dist/tools/error-codes.js +3 -1
- package/dist/tools/errors.cjs +30 -0
- package/dist/tools/errors.d.ts +16 -0
- package/dist/tools/errors.d.ts.map +1 -1
- package/dist/tools/errors.js +31 -1
- package/dist/tools/index.cjs +2 -0
- package/dist/tools/index.d.ts +1 -0
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +2 -1
- package/dist/tools/internal-tools/constants.js +1 -1
- package/dist/tools/internal-tools/implementations/ask-user-tool.cjs +1 -1
- package/dist/tools/internal-tools/implementations/ask-user-tool.js +2 -2
- package/dist/tools/internal-tools/implementations/bash-exec-tool.cjs +42 -18
- package/dist/tools/internal-tools/implementations/bash-exec-tool.d.ts +3 -3
- package/dist/tools/internal-tools/implementations/bash-exec-tool.d.ts.map +1 -1
- package/dist/tools/internal-tools/implementations/bash-exec-tool.js +43 -19
- package/dist/tools/internal-tools/implementations/bash-output-tool.js +1 -1
- package/dist/tools/internal-tools/implementations/delegate-to-url-tool.js +1 -1
- package/dist/tools/internal-tools/implementations/edit-file-tool.cjs +66 -1
- package/dist/tools/internal-tools/implementations/edit-file-tool.d.ts.map +1 -1
- package/dist/tools/internal-tools/implementations/edit-file-tool.js +67 -2
- package/dist/tools/internal-tools/implementations/glob-files-tool.cjs +14 -1
- package/dist/tools/internal-tools/implementations/glob-files-tool.d.ts.map +1 -1
- package/dist/tools/internal-tools/implementations/glob-files-tool.js +15 -2
- package/dist/tools/internal-tools/implementations/grep-content-tool.cjs +16 -1
- package/dist/tools/internal-tools/implementations/grep-content-tool.d.ts.map +1 -1
- package/dist/tools/internal-tools/implementations/grep-content-tool.js +17 -2
- package/dist/tools/internal-tools/implementations/kill-process-tool.js +1 -1
- package/dist/tools/internal-tools/implementations/read-file-tool.cjs +9 -1
- package/dist/tools/internal-tools/implementations/read-file-tool.d.ts.map +1 -1
- package/dist/tools/internal-tools/implementations/read-file-tool.js +10 -2
- package/dist/tools/internal-tools/implementations/search-history-tool.js +1 -1
- package/dist/tools/internal-tools/implementations/write-file-tool.cjs +69 -1
- package/dist/tools/internal-tools/implementations/write-file-tool.d.ts.map +1 -1
- package/dist/tools/internal-tools/implementations/write-file-tool.js +72 -2
- package/dist/tools/internal-tools/provider.cjs +27 -10
- package/dist/tools/internal-tools/provider.d.ts +8 -5
- package/dist/tools/internal-tools/provider.d.ts.map +1 -1
- package/dist/tools/internal-tools/provider.js +28 -11
- package/dist/tools/internal-tools/registry.cjs +4 -3
- package/dist/tools/internal-tools/registry.d.ts +28 -7
- package/dist/tools/internal-tools/registry.d.ts.map +1 -1
- package/dist/tools/internal-tools/registry.js +5 -4
- package/dist/tools/schemas.cjs +17 -7
- package/dist/tools/schemas.d.ts +31 -4
- package/dist/tools/schemas.d.ts.map +1 -1
- package/dist/tools/schemas.js +15 -7
- package/dist/tools/tool-manager.cjs +140 -18
- package/dist/tools/tool-manager.d.ts +23 -1
- package/dist/tools/tool-manager.d.ts.map +1 -1
- package/dist/tools/tool-manager.js +145 -19
- package/dist/tools/types.d.ts +20 -11
- package/dist/tools/types.d.ts.map +1 -1
- package/dist/utils/api-key-resolver.js +1 -1
- package/dist/utils/async-context.js +1 -1
- package/dist/utils/debug.js +1 -1
- package/dist/{llm/tokenizer/types.cjs → utils/defer.cjs} +19 -10
- package/dist/utils/defer.d.ts +63 -0
- package/dist/utils/defer.d.ts.map +1 -0
- package/dist/utils/defer.js +19 -0
- package/dist/utils/env-file.js +1 -1
- package/dist/utils/error-conversion.js +1 -1
- package/dist/utils/execution-context.js +1 -1
- package/dist/utils/fs-walk.js +1 -1
- package/dist/utils/index.cjs +3 -1
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +1 -0
- package/dist/utils/path.js +1 -1
- package/dist/utils/redactor.js +1 -1
- package/dist/utils/result.js +1 -1
- package/dist/utils/safe-stringify.js +1 -1
- package/dist/utils/schema-metadata.js +1 -1
- package/dist/utils/schema.d.ts +6 -0
- package/dist/utils/schema.d.ts.map +1 -1
- package/dist/utils/schema.js +1 -1
- package/dist/utils/service-initializer.cjs +6 -2
- package/dist/utils/service-initializer.d.ts.map +1 -1
- package/dist/utils/service-initializer.js +7 -3
- package/dist/utils/user-info.js +1 -1
- package/dist/utils/zod-schema-converter.js +1 -1
- package/package.json +54 -17
- package/dist/context/compression/middle-removal.cjs +0 -95
- package/dist/context/compression/middle-removal.d.ts +0 -47
- package/dist/context/compression/middle-removal.d.ts.map +0 -1
- package/dist/context/compression/middle-removal.js +0 -72
- package/dist/context/compression/oldest-removal.cjs +0 -83
- package/dist/context/compression/oldest-removal.d.ts +0 -42
- package/dist/context/compression/oldest-removal.d.ts.map +0 -1
- package/dist/context/compression/oldest-removal.js +0 -60
- package/dist/llm/formatters/anthropic.cjs +0 -257
- package/dist/llm/formatters/anthropic.d.ts +0 -46
- package/dist/llm/formatters/anthropic.d.ts.map +0 -1
- package/dist/llm/formatters/anthropic.js +0 -239
- package/dist/llm/formatters/factory.cjs +0 -50
- package/dist/llm/formatters/factory.d.ts +0 -10
- package/dist/llm/formatters/factory.d.ts.map +0 -1
- package/dist/llm/formatters/factory.js +0 -27
- package/dist/llm/formatters/openai.cjs +0 -196
- package/dist/llm/formatters/openai.d.ts +0 -39
- package/dist/llm/formatters/openai.d.ts.map +0 -1
- package/dist/llm/formatters/openai.js +0 -177
- package/dist/llm/formatters/types.d.ts +0 -41
- package/dist/llm/formatters/types.d.ts.map +0 -1
- package/dist/llm/services/anthropic.cjs +0 -511
- package/dist/llm/services/anthropic.d.ts +0 -48
- package/dist/llm/services/anthropic.d.ts.map +0 -1
- package/dist/llm/services/anthropic.js +0 -447
- package/dist/llm/services/openai.cjs +0 -611
- package/dist/llm/services/openai.d.ts +0 -48
- package/dist/llm/services/openai.d.ts.map +0 -1
- package/dist/llm/services/openai.js +0 -547
- package/dist/llm/tokenizer/anthropic.cjs +0 -43
- package/dist/llm/tokenizer/anthropic.d.ts +0 -19
- package/dist/llm/tokenizer/anthropic.d.ts.map +0 -1
- package/dist/llm/tokenizer/anthropic.js +0 -20
- package/dist/llm/tokenizer/default.d.ts +0 -14
- package/dist/llm/tokenizer/default.d.ts.map +0 -1
- package/dist/llm/tokenizer/default.js +0 -18
- package/dist/llm/tokenizer/factory.d.ts +0 -12
- package/dist/llm/tokenizer/factory.d.ts.map +0 -1
- package/dist/llm/tokenizer/factory.js +0 -21
- package/dist/llm/tokenizer/google.cjs +0 -52
- package/dist/llm/tokenizer/google.d.ts +0 -29
- package/dist/llm/tokenizer/google.d.ts.map +0 -1
- package/dist/llm/tokenizer/google.js +0 -29
- package/dist/llm/tokenizer/openai.cjs +0 -115
- package/dist/llm/tokenizer/openai.d.ts +0 -33
- package/dist/llm/tokenizer/openai.d.ts.map +0 -1
- package/dist/llm/tokenizer/openai.js +0 -91
- package/dist/llm/tokenizer/types.d.ts +0 -18
- package/dist/llm/tokenizer/types.d.ts.map +0 -1
- package/dist/llm/tokenizer/types.js +0 -10
- /package/dist/llm/{formatters → executor}/types.cjs +0 -0
- /package/dist/llm/{formatters → executor}/types.js +0 -0
|
@@ -2,32 +2,21 @@ import {
|
|
|
2
2
|
__decorateElement,
|
|
3
3
|
__decoratorStart,
|
|
4
4
|
__runInitializers
|
|
5
|
-
} from "../../chunk-
|
|
5
|
+
} from "../../chunk-PTJYTZNU.js";
|
|
6
6
|
var _VercelLLMService_decorators, _init;
|
|
7
|
-
import {
|
|
8
|
-
generateText,
|
|
9
|
-
streamText,
|
|
10
|
-
APICallError,
|
|
11
|
-
stepCountIs
|
|
12
|
-
} from "ai";
|
|
13
7
|
import { DextoLogComponent } from "../../logger/v2/types.js";
|
|
14
|
-
import { jsonSchema } from "ai";
|
|
15
8
|
import { ContextManager } from "../../context/manager.js";
|
|
16
|
-
import {
|
|
17
|
-
import { shouldIncludeRawToolResult } from "../../utils/debug.js";
|
|
18
|
-
import { getMaxInputTokensForModel, getEffectiveMaxInputTokens } from "../registry.js";
|
|
19
|
-
import { DextoRuntimeError } from "../../errors/DextoRuntimeError.js";
|
|
20
|
-
import { LLMErrorCode } from "../error-codes.js";
|
|
21
|
-
import { ErrorScope, ErrorType } from "../../errors/types.js";
|
|
22
|
-
import { toError } from "../../utils/error-conversion.js";
|
|
23
|
-
import { ToolErrorCode } from "../../tools/error-codes.js";
|
|
9
|
+
import { getEffectiveMaxInputTokens, getMaxInputTokensForModel } from "../registry.js";
|
|
24
10
|
import { VercelMessageFormatter } from "../formatters/vercel.js";
|
|
25
|
-
import { createTokenizer } from "../tokenizer/factory.js";
|
|
26
11
|
import { InstrumentClass } from "../../telemetry/decorators.js";
|
|
27
12
|
import { trace, context, propagation } from "@opentelemetry/api";
|
|
13
|
+
import { TurnExecutor } from "../executor/turn-executor.js";
|
|
14
|
+
import { MessageQueueService } from "../../session/message-queue.js";
|
|
15
|
+
import { DextoRuntimeError } from "../../errors/DextoRuntimeError.js";
|
|
16
|
+
import { LLMErrorCode } from "../error-codes.js";
|
|
28
17
|
_VercelLLMService_decorators = [InstrumentClass({
|
|
29
18
|
prefix: "llm.vercel",
|
|
30
|
-
excludeMethods: ["getModelId", "getAllTools", "
|
|
19
|
+
excludeMethods: ["getModelId", "getAllTools", "createTurnExecutor"]
|
|
31
20
|
})];
|
|
32
21
|
class VercelLLMService {
|
|
33
22
|
model;
|
|
@@ -36,8 +25,9 @@ class VercelLLMService {
|
|
|
36
25
|
contextManager;
|
|
37
26
|
sessionEventBus;
|
|
38
27
|
sessionId;
|
|
39
|
-
toolSupportCache = /* @__PURE__ */ new Map();
|
|
40
28
|
logger;
|
|
29
|
+
resourceManager;
|
|
30
|
+
messageQueue;
|
|
41
31
|
/**
|
|
42
32
|
* Helper to extract model ID from LanguageModel union type (string | LanguageModelV2)
|
|
43
33
|
*/
|
|
@@ -51,20 +41,19 @@ class VercelLLMService {
|
|
|
51
41
|
this.toolManager = toolManager;
|
|
52
42
|
this.sessionEventBus = sessionEventBus;
|
|
53
43
|
this.sessionId = sessionId;
|
|
44
|
+
this.resourceManager = resourceManager;
|
|
45
|
+
this.messageQueue = new MessageQueueService(this.sessionEventBus, this.logger);
|
|
54
46
|
const formatter = new VercelMessageFormatter(this.logger);
|
|
55
|
-
const tokenizer = createTokenizer(config.provider, this.getModelId(), this.logger);
|
|
56
47
|
const maxInputTokens = getEffectiveMaxInputTokens(config, this.logger);
|
|
57
48
|
this.contextManager = new ContextManager(
|
|
58
49
|
config,
|
|
59
50
|
formatter,
|
|
60
51
|
systemPromptManager,
|
|
61
52
|
maxInputTokens,
|
|
62
|
-
tokenizer,
|
|
63
53
|
historyProvider,
|
|
64
54
|
sessionId,
|
|
65
55
|
resourceManager,
|
|
66
56
|
this.logger
|
|
67
|
-
// compressionStrategies uses default
|
|
68
57
|
);
|
|
69
58
|
this.logger.debug(
|
|
70
59
|
`[VercelLLMService] Initialized for model: ${this.getModelId()}, provider: ${this.config.provider}, temperature: ${this.config.temperature}, maxOutputTokens: ${this.config.maxOutputTokens}`
|
|
@@ -73,134 +62,40 @@ class VercelLLMService {
|
|
|
73
62
|
getAllTools() {
|
|
74
63
|
return this.toolManager.getAllTools();
|
|
75
64
|
}
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
callId,
|
|
101
|
-
toolName,
|
|
102
|
-
rawResult,
|
|
103
|
-
{ success: true }
|
|
104
|
-
);
|
|
105
|
-
this.logger.debug(
|
|
106
|
-
`[vercel] Emitting toolResult event for ${toolName} with callId ${callId}`
|
|
107
|
-
);
|
|
108
|
-
this.sessionEventBus.emit("llm:tool-result", {
|
|
109
|
-
toolName,
|
|
110
|
-
callId,
|
|
111
|
-
success: true,
|
|
112
|
-
sanitized: persisted,
|
|
113
|
-
...shouldIncludeRawToolResult() ? { rawResult } : {}
|
|
114
|
-
});
|
|
115
|
-
const summaryText = summarizeToolContentForText(persisted.content);
|
|
116
|
-
return summaryText;
|
|
117
|
-
} catch (err) {
|
|
118
|
-
let errorResult;
|
|
119
|
-
let errorFlags = "";
|
|
120
|
-
if (err instanceof DextoRuntimeError && err.code === ToolErrorCode.EXECUTION_DENIED) {
|
|
121
|
-
errorResult = { error: err.message, denied: true };
|
|
122
|
-
errorFlags = " (denied)";
|
|
123
|
-
} else if (err instanceof DextoRuntimeError && err.code === ToolErrorCode.CONFIRMATION_TIMEOUT) {
|
|
124
|
-
errorResult = { error: err.message, denied: true, timeout: true };
|
|
125
|
-
errorFlags = " (timeout)";
|
|
126
|
-
} else {
|
|
127
|
-
const message = err instanceof Error ? err.message : String(err);
|
|
128
|
-
errorResult = { error: message };
|
|
129
|
-
}
|
|
130
|
-
try {
|
|
131
|
-
const persisted = await this.contextManager.addToolResult(
|
|
132
|
-
callId,
|
|
133
|
-
toolName,
|
|
134
|
-
errorResult,
|
|
135
|
-
{ success: false }
|
|
136
|
-
);
|
|
137
|
-
this.sessionEventBus.emit("llm:tool-result", {
|
|
138
|
-
toolName,
|
|
139
|
-
callId,
|
|
140
|
-
success: false,
|
|
141
|
-
sanitized: persisted,
|
|
142
|
-
...shouldIncludeRawToolResult() ? { rawResult: errorResult } : {}
|
|
143
|
-
});
|
|
144
|
-
} catch (persistErr) {
|
|
145
|
-
this.logger.error(
|
|
146
|
-
`Failed to persist error result for ${toolName}: ${String(persistErr)}`
|
|
147
|
-
);
|
|
148
|
-
}
|
|
149
|
-
return `Tool ${toolName} failed${errorFlags}: ${errorResult.error}`;
|
|
150
|
-
}
|
|
151
|
-
},
|
|
152
|
-
...tool.description && { description: tool.description }
|
|
153
|
-
};
|
|
154
|
-
}
|
|
155
|
-
return acc;
|
|
156
|
-
}, {});
|
|
157
|
-
}
|
|
158
|
-
async validateToolSupport() {
|
|
159
|
-
const modelKey = `${this.config.provider}:${this.getModelId()}:${this.config.baseURL ?? ""}`;
|
|
160
|
-
if (this.toolSupportCache.has(modelKey)) {
|
|
161
|
-
return this.toolSupportCache.get(modelKey);
|
|
162
|
-
}
|
|
163
|
-
if (!this.config.baseURL) {
|
|
164
|
-
this.logger.debug(`Skipping tool validation for ${modelKey} - no custom baseURL`);
|
|
165
|
-
this.toolSupportCache.set(modelKey, true);
|
|
166
|
-
return true;
|
|
167
|
-
}
|
|
168
|
-
this.logger.debug(`Testing tool support for custom endpoint model: ${modelKey}`);
|
|
169
|
-
const testTool = {
|
|
170
|
-
test_tool: {
|
|
171
|
-
inputSchema: jsonSchema({
|
|
172
|
-
type: "object",
|
|
173
|
-
properties: {},
|
|
174
|
-
additionalProperties: false
|
|
175
|
-
}),
|
|
176
|
-
execute: async () => ({ result: "test" })
|
|
177
|
-
}
|
|
178
|
-
};
|
|
179
|
-
try {
|
|
180
|
-
await generateText({
|
|
181
|
-
model: this.model,
|
|
182
|
-
messages: [{ role: "user", content: "Hello" }],
|
|
183
|
-
tools: testTool,
|
|
184
|
-
stopWhen: stepCountIs(1)
|
|
185
|
-
});
|
|
186
|
-
this.toolSupportCache.set(modelKey, true);
|
|
187
|
-
this.logger.debug(`Model ${modelKey} supports tools`);
|
|
188
|
-
return true;
|
|
189
|
-
} catch (error) {
|
|
190
|
-
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
191
|
-
if (errorMessage.includes("does not support tools")) {
|
|
192
|
-
this.toolSupportCache.set(modelKey, false);
|
|
193
|
-
this.logger.debug(`Model ${modelKey} does not support tools`);
|
|
194
|
-
return false;
|
|
195
|
-
}
|
|
196
|
-
this.logger.debug(
|
|
197
|
-
`Tool validation error for ${modelKey}, assuming supported: ${errorMessage}`
|
|
198
|
-
);
|
|
199
|
-
this.toolSupportCache.set(modelKey, true);
|
|
200
|
-
return true;
|
|
201
|
-
}
|
|
65
|
+
/**
|
|
66
|
+
* Create a TurnExecutor instance for executing the agent loop.
|
|
67
|
+
*/
|
|
68
|
+
createTurnExecutor(externalSignal) {
|
|
69
|
+
return new TurnExecutor(
|
|
70
|
+
this.model,
|
|
71
|
+
this.toolManager,
|
|
72
|
+
this.contextManager,
|
|
73
|
+
this.sessionEventBus,
|
|
74
|
+
this.resourceManager,
|
|
75
|
+
this.sessionId,
|
|
76
|
+
{
|
|
77
|
+
maxSteps: this.config.maxIterations,
|
|
78
|
+
maxOutputTokens: this.config.maxOutputTokens,
|
|
79
|
+
temperature: this.config.temperature,
|
|
80
|
+
baseURL: this.config.baseURL
|
|
81
|
+
},
|
|
82
|
+
{ provider: this.config.provider, model: this.getModelId() },
|
|
83
|
+
this.logger,
|
|
84
|
+
this.messageQueue,
|
|
85
|
+
void 0,
|
|
86
|
+
// modelLimits - TurnExecutor will use defaults
|
|
87
|
+
externalSignal
|
|
88
|
+
);
|
|
202
89
|
}
|
|
203
|
-
|
|
90
|
+
/**
|
|
91
|
+
* Stream a response for the given content.
|
|
92
|
+
* Primary method for running conversations with multi-image support.
|
|
93
|
+
*
|
|
94
|
+
* @param content - String or ContentPart[] (text, images, files)
|
|
95
|
+
* @param options - { signal?: AbortSignal }
|
|
96
|
+
* @returns The assistant's text response
|
|
97
|
+
*/
|
|
98
|
+
async stream(content, options) {
|
|
204
99
|
const activeSpan = trace.getActiveSpan();
|
|
205
100
|
const currentContext = context.active();
|
|
206
101
|
const provider = this.config.provider;
|
|
@@ -223,331 +118,14 @@ class VercelLLMService {
|
|
|
223
118
|
propagation.createBaggage(baggageEntries)
|
|
224
119
|
);
|
|
225
120
|
return await context.with(updatedContext, async () => {
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
this.
|
|
229
|
-
|
|
230
|
-
);
|
|
231
|
-
|
|
232
|
-
this.logger.silly(
|
|
233
|
-
`[VercelLLMService] Formatted tools: ${JSON.stringify(formattedTools, null, 2)}`
|
|
234
|
-
);
|
|
235
|
-
let fullResponse = "";
|
|
236
|
-
this.sessionEventBus.emit("llm:thinking");
|
|
237
|
-
const prepared = await this.contextManager.getFormattedMessagesWithCompression(
|
|
238
|
-
{ mcpManager: this.toolManager.getMcpManager() },
|
|
239
|
-
{ provider: this.config.provider, model: this.getModelId() }
|
|
240
|
-
);
|
|
241
|
-
const formattedMessages = prepared.formattedMessages;
|
|
242
|
-
const tokensUsed = prepared.tokensUsed;
|
|
243
|
-
this.logger.silly(
|
|
244
|
-
`Messages (potentially compressed): ${JSON.stringify(formattedMessages, null, 2)}`
|
|
245
|
-
);
|
|
246
|
-
this.logger.silly(`Tools: ${JSON.stringify(formattedTools, null, 2)}`);
|
|
247
|
-
this.logger.debug(`Estimated tokens being sent to Vercel provider: ${tokensUsed}`);
|
|
248
|
-
if (stream) {
|
|
249
|
-
fullResponse = await this.streamText(
|
|
250
|
-
formattedMessages,
|
|
251
|
-
formattedTools,
|
|
252
|
-
this.config.maxIterations,
|
|
253
|
-
options?.signal
|
|
254
|
-
);
|
|
255
|
-
} else {
|
|
256
|
-
fullResponse = await this.generateText(
|
|
257
|
-
formattedMessages,
|
|
258
|
-
formattedTools,
|
|
259
|
-
this.config.maxIterations,
|
|
260
|
-
options?.signal
|
|
261
|
-
);
|
|
262
|
-
}
|
|
263
|
-
if (options?.signal?.aborted) {
|
|
264
|
-
return fullResponse;
|
|
265
|
-
}
|
|
266
|
-
return fullResponse || `Reached maximum number of steps (${this.config.maxIterations}) without a final response.`;
|
|
121
|
+
const parts = typeof content === "string" ? [{ type: "text", text: content }] : content;
|
|
122
|
+
await this.contextManager.addUserMessage(parts);
|
|
123
|
+
const executor = this.createTurnExecutor(options?.signal);
|
|
124
|
+
const contributorContext = { mcpManager: this.toolManager.getMcpManager() };
|
|
125
|
+
const result = await executor.execute(contributorContext, true);
|
|
126
|
+
return result.text ?? "";
|
|
267
127
|
});
|
|
268
128
|
}
|
|
269
|
-
async generateText(messages, tools, maxSteps = 50, signal) {
|
|
270
|
-
const activeSpan = trace.getActiveSpan();
|
|
271
|
-
if (activeSpan) {
|
|
272
|
-
activeSpan.setAttribute("llm.provider", this.config.provider);
|
|
273
|
-
activeSpan.setAttribute("llm.model", this.getModelId());
|
|
274
|
-
}
|
|
275
|
-
let stepIteration = 0;
|
|
276
|
-
const estimatedTokens = Math.ceil(JSON.stringify(messages, null, 2).length / 4);
|
|
277
|
-
this.logger.debug(
|
|
278
|
-
`vercel generateText:Generating text with messages (${estimatedTokens} estimated tokens)`
|
|
279
|
-
);
|
|
280
|
-
const temperature = this.config.temperature;
|
|
281
|
-
const maxOutputTokens = this.config.maxOutputTokens;
|
|
282
|
-
const supportsTools = await this.validateToolSupport();
|
|
283
|
-
const effectiveTools = supportsTools ? tools : {};
|
|
284
|
-
if (!supportsTools && Object.keys(tools).length > 0) {
|
|
285
|
-
this.logger.debug(
|
|
286
|
-
`Model ${this.getModelId()} does not support tools, using empty tools object for generation`
|
|
287
|
-
);
|
|
288
|
-
}
|
|
289
|
-
try {
|
|
290
|
-
const includeMaxOutputTokens = typeof maxOutputTokens === "number";
|
|
291
|
-
const response = await generateText({
|
|
292
|
-
model: this.model,
|
|
293
|
-
messages,
|
|
294
|
-
tools: effectiveTools,
|
|
295
|
-
...signal ? { abortSignal: signal } : {},
|
|
296
|
-
onStepFinish: async (step) => {
|
|
297
|
-
this.logger.debug(`Step iteration: ${stepIteration}`);
|
|
298
|
-
stepIteration++;
|
|
299
|
-
this.logger.debug(`Step finished, text: ${step.text}`);
|
|
300
|
-
this.logger.debug(
|
|
301
|
-
`Step finished, step tool calls: ${JSON.stringify(step.toolCalls, null, 2)}`
|
|
302
|
-
);
|
|
303
|
-
this.logger.debug(
|
|
304
|
-
`Step finished, step tool results: ${JSON.stringify(step.toolResults, null, 2)}`
|
|
305
|
-
);
|
|
306
|
-
},
|
|
307
|
-
stopWhen: stepCountIs(maxSteps),
|
|
308
|
-
...includeMaxOutputTokens ? { maxOutputTokens } : {},
|
|
309
|
-
...temperature !== void 0 && { temperature }
|
|
310
|
-
});
|
|
311
|
-
this.sessionEventBus.emit("llm:response", {
|
|
312
|
-
content: response.text,
|
|
313
|
-
...response.reasoningText && { reasoning: response.reasoningText },
|
|
314
|
-
provider: this.config.provider,
|
|
315
|
-
model: this.getModelId(),
|
|
316
|
-
router: "vercel",
|
|
317
|
-
tokenUsage: {
|
|
318
|
-
...response.totalUsage.inputTokens !== void 0 && {
|
|
319
|
-
inputTokens: response.totalUsage.inputTokens
|
|
320
|
-
},
|
|
321
|
-
...response.totalUsage.outputTokens !== void 0 && {
|
|
322
|
-
outputTokens: response.totalUsage.outputTokens
|
|
323
|
-
},
|
|
324
|
-
...response.totalUsage.reasoningTokens !== void 0 && {
|
|
325
|
-
reasoningTokens: response.totalUsage.reasoningTokens
|
|
326
|
-
},
|
|
327
|
-
...response.totalUsage.totalTokens !== void 0 && {
|
|
328
|
-
totalTokens: response.totalUsage.totalTokens
|
|
329
|
-
}
|
|
330
|
-
}
|
|
331
|
-
});
|
|
332
|
-
const activeSpan2 = trace.getActiveSpan();
|
|
333
|
-
if (activeSpan2) {
|
|
334
|
-
const attributes = {};
|
|
335
|
-
if (response.totalUsage.inputTokens !== void 0) {
|
|
336
|
-
attributes["gen_ai.usage.input_tokens"] = response.totalUsage.inputTokens;
|
|
337
|
-
}
|
|
338
|
-
if (response.totalUsage.outputTokens !== void 0) {
|
|
339
|
-
attributes["gen_ai.usage.output_tokens"] = response.totalUsage.outputTokens;
|
|
340
|
-
}
|
|
341
|
-
if (response.totalUsage.totalTokens !== void 0) {
|
|
342
|
-
attributes["gen_ai.usage.total_tokens"] = response.totalUsage.totalTokens;
|
|
343
|
-
}
|
|
344
|
-
if (response.totalUsage.reasoningTokens !== void 0) {
|
|
345
|
-
attributes["gen_ai.usage.reasoning_tokens"] = response.totalUsage.reasoningTokens;
|
|
346
|
-
}
|
|
347
|
-
activeSpan2.setAttributes(attributes);
|
|
348
|
-
}
|
|
349
|
-
await this.contextManager.processLLMResponse(response);
|
|
350
|
-
if (typeof response.totalUsage.totalTokens === "number") {
|
|
351
|
-
this.contextManager.updateActualTokenCount(response.totalUsage.totalTokens);
|
|
352
|
-
}
|
|
353
|
-
return response.text;
|
|
354
|
-
} catch (err) {
|
|
355
|
-
const error = this.mapProviderError(err, "generate");
|
|
356
|
-
this.sessionEventBus.emit("llm:error", {
|
|
357
|
-
error,
|
|
358
|
-
context: "generateText",
|
|
359
|
-
recoverable: false
|
|
360
|
-
});
|
|
361
|
-
return "";
|
|
362
|
-
}
|
|
363
|
-
}
|
|
364
|
-
mapProviderError(err, phase) {
|
|
365
|
-
if (APICallError.isInstance?.(err)) {
|
|
366
|
-
this.logger.error(`APICallError in mapProviderError: ${JSON.stringify(err, null, 2)}`);
|
|
367
|
-
const status = err.statusCode;
|
|
368
|
-
const headers = err.responseHeaders || {};
|
|
369
|
-
const retryAfter = headers["retry-after"] ? Number(headers["retry-after"]) : void 0;
|
|
370
|
-
const body = typeof err.responseBody === "string" ? err.responseBody : JSON.stringify(err.responseBody ?? "");
|
|
371
|
-
if (status === 429) {
|
|
372
|
-
return new DextoRuntimeError(
|
|
373
|
-
LLMErrorCode.RATE_LIMIT_EXCEEDED,
|
|
374
|
-
ErrorScope.LLM,
|
|
375
|
-
ErrorType.RATE_LIMIT,
|
|
376
|
-
`Rate limit exceeded${body ? ` - ${body}` : ""}`,
|
|
377
|
-
{
|
|
378
|
-
sessionId: this.sessionId,
|
|
379
|
-
provider: this.config.provider,
|
|
380
|
-
model: this.getModelId(),
|
|
381
|
-
status,
|
|
382
|
-
retryAfter,
|
|
383
|
-
body,
|
|
384
|
-
phase
|
|
385
|
-
}
|
|
386
|
-
);
|
|
387
|
-
}
|
|
388
|
-
if (status === 408) {
|
|
389
|
-
return new DextoRuntimeError(
|
|
390
|
-
LLMErrorCode.GENERATION_FAILED,
|
|
391
|
-
ErrorScope.LLM,
|
|
392
|
-
ErrorType.TIMEOUT,
|
|
393
|
-
`Provider timed out${body ? ` - ${body}` : ""}`,
|
|
394
|
-
{
|
|
395
|
-
sessionId: this.sessionId,
|
|
396
|
-
provider: this.config.provider,
|
|
397
|
-
model: this.getModelId(),
|
|
398
|
-
status,
|
|
399
|
-
body,
|
|
400
|
-
phase
|
|
401
|
-
}
|
|
402
|
-
);
|
|
403
|
-
}
|
|
404
|
-
return new DextoRuntimeError(
|
|
405
|
-
LLMErrorCode.GENERATION_FAILED,
|
|
406
|
-
ErrorScope.LLM,
|
|
407
|
-
ErrorType.THIRD_PARTY,
|
|
408
|
-
`Provider error ${status}${body ? ` - ${body}` : ""}`,
|
|
409
|
-
{
|
|
410
|
-
sessionId: this.sessionId,
|
|
411
|
-
provider: this.config.provider,
|
|
412
|
-
model: this.getModelId(),
|
|
413
|
-
status,
|
|
414
|
-
body,
|
|
415
|
-
phase
|
|
416
|
-
}
|
|
417
|
-
);
|
|
418
|
-
}
|
|
419
|
-
return toError(err, this.logger);
|
|
420
|
-
}
|
|
421
|
-
// Updated streamText to behave like generateText - returns string and handles message processing internally
|
|
422
|
-
async streamText(messages, tools, maxSteps = 10, signal) {
|
|
423
|
-
const activeSpan = trace.getActiveSpan();
|
|
424
|
-
if (activeSpan) {
|
|
425
|
-
activeSpan.setAttribute("llm.provider", this.config.provider);
|
|
426
|
-
activeSpan.setAttribute("llm.model", this.getModelId());
|
|
427
|
-
}
|
|
428
|
-
let stepIteration = 0;
|
|
429
|
-
const temperature = this.config.temperature;
|
|
430
|
-
const maxOutputTokens = this.config.maxOutputTokens;
|
|
431
|
-
const supportsTools = await this.validateToolSupport();
|
|
432
|
-
const effectiveTools = supportsTools ? tools : {};
|
|
433
|
-
if (!supportsTools && Object.keys(tools).length > 0) {
|
|
434
|
-
this.logger.debug(
|
|
435
|
-
`Model ${this.getModelId()} does not support tools, using empty tools object for streaming`
|
|
436
|
-
);
|
|
437
|
-
}
|
|
438
|
-
let streamErr;
|
|
439
|
-
const includeMaxOutputTokens = typeof maxOutputTokens === "number";
|
|
440
|
-
let response;
|
|
441
|
-
response = streamText({
|
|
442
|
-
model: this.model,
|
|
443
|
-
messages,
|
|
444
|
-
tools: effectiveTools,
|
|
445
|
-
...signal ? { abortSignal: signal } : {},
|
|
446
|
-
onChunk: (chunk) => {
|
|
447
|
-
this.logger.debug(`Chunk type: ${chunk.chunk.type}`);
|
|
448
|
-
if (chunk.chunk.type === "text-delta") {
|
|
449
|
-
this.sessionEventBus.emit("llm:chunk", {
|
|
450
|
-
chunkType: "text",
|
|
451
|
-
content: chunk.chunk.text,
|
|
452
|
-
isComplete: false
|
|
453
|
-
});
|
|
454
|
-
} else if (chunk.chunk.type === "reasoning-delta") {
|
|
455
|
-
this.sessionEventBus.emit("llm:chunk", {
|
|
456
|
-
chunkType: "reasoning",
|
|
457
|
-
content: chunk.chunk.text,
|
|
458
|
-
isComplete: false
|
|
459
|
-
});
|
|
460
|
-
}
|
|
461
|
-
},
|
|
462
|
-
// TODO: Add onAbort handler when we implement partial response handling.
|
|
463
|
-
// Vercel triggers onAbort instead of onError for cancelled streams.
|
|
464
|
-
// This is where cancellation logic should be handled properly.
|
|
465
|
-
onError: (error) => {
|
|
466
|
-
const err = this.mapProviderError(error, "stream");
|
|
467
|
-
this.logger.error(`Error in streamText after parsing: ${err.toString()}`);
|
|
468
|
-
this.sessionEventBus.emit("llm:error", {
|
|
469
|
-
error: err,
|
|
470
|
-
context: "streamText",
|
|
471
|
-
recoverable: false
|
|
472
|
-
});
|
|
473
|
-
streamErr = error;
|
|
474
|
-
},
|
|
475
|
-
onStepFinish: async (step) => {
|
|
476
|
-
this.logger.debug(`Step iteration: ${stepIteration}`);
|
|
477
|
-
stepIteration++;
|
|
478
|
-
this.logger.debug(`Step finished, text: ${step.text}`);
|
|
479
|
-
this.logger.debug(
|
|
480
|
-
`Step finished, step tool calls: ${JSON.stringify(step.toolCalls, null, 2)}`
|
|
481
|
-
);
|
|
482
|
-
this.logger.debug(
|
|
483
|
-
`Step finished, step tool results: ${JSON.stringify(step.toolResults, null, 2)}`
|
|
484
|
-
);
|
|
485
|
-
},
|
|
486
|
-
// No onFinish: we finalize after the stream completes below.
|
|
487
|
-
stopWhen: stepCountIs(maxSteps),
|
|
488
|
-
...includeMaxOutputTokens ? { maxOutputTokens } : {},
|
|
489
|
-
...temperature !== void 0 && { temperature }
|
|
490
|
-
});
|
|
491
|
-
if (streamErr) {
|
|
492
|
-
return "";
|
|
493
|
-
}
|
|
494
|
-
let finalText;
|
|
495
|
-
let usage;
|
|
496
|
-
let reasoningText;
|
|
497
|
-
try {
|
|
498
|
-
[finalText, usage, reasoningText] = await Promise.all([
|
|
499
|
-
response.text,
|
|
500
|
-
response.totalUsage,
|
|
501
|
-
response.reasoningText
|
|
502
|
-
]);
|
|
503
|
-
} catch (_error) {
|
|
504
|
-
this.logger.debug(
|
|
505
|
-
`streamText finalization failed while awaiting text/usage/reasoning: ${String(_error)}`
|
|
506
|
-
);
|
|
507
|
-
return "";
|
|
508
|
-
}
|
|
509
|
-
this.logger.debug(`streamText finalText: ${finalText}`);
|
|
510
|
-
this.logger.debug(`streamText usage: ${JSON.stringify(usage, null, 2)}`);
|
|
511
|
-
this.logger.debug(`streamText reasoningText: ${reasoningText}`);
|
|
512
|
-
this.sessionEventBus.emit("llm:response", {
|
|
513
|
-
content: finalText,
|
|
514
|
-
...reasoningText && { reasoning: reasoningText },
|
|
515
|
-
provider: this.config.provider,
|
|
516
|
-
model: this.getModelId(),
|
|
517
|
-
router: "vercel",
|
|
518
|
-
tokenUsage: {
|
|
519
|
-
...usage.inputTokens !== void 0 && { inputTokens: usage.inputTokens },
|
|
520
|
-
...usage.outputTokens !== void 0 && { outputTokens: usage.outputTokens },
|
|
521
|
-
...usage.reasoningTokens !== void 0 && {
|
|
522
|
-
reasoningTokens: usage.reasoningTokens
|
|
523
|
-
},
|
|
524
|
-
...usage.totalTokens !== void 0 && { totalTokens: usage.totalTokens }
|
|
525
|
-
}
|
|
526
|
-
});
|
|
527
|
-
const activeSpan2 = trace.getActiveSpan();
|
|
528
|
-
if (activeSpan2) {
|
|
529
|
-
const attributes = {};
|
|
530
|
-
if (usage.inputTokens !== void 0) {
|
|
531
|
-
attributes["gen_ai.usage.input_tokens"] = usage.inputTokens;
|
|
532
|
-
}
|
|
533
|
-
if (usage.outputTokens !== void 0) {
|
|
534
|
-
attributes["gen_ai.usage.output_tokens"] = usage.outputTokens;
|
|
535
|
-
}
|
|
536
|
-
if (usage.totalTokens !== void 0) {
|
|
537
|
-
attributes["gen_ai.usage.total_tokens"] = usage.totalTokens;
|
|
538
|
-
}
|
|
539
|
-
if (usage.reasoningTokens !== void 0) {
|
|
540
|
-
attributes["gen_ai.usage.reasoning_tokens"] = usage.reasoningTokens;
|
|
541
|
-
}
|
|
542
|
-
activeSpan2.setAttributes(attributes);
|
|
543
|
-
}
|
|
544
|
-
if (typeof usage.totalTokens === "number") {
|
|
545
|
-
this.contextManager.updateActualTokenCount(usage.totalTokens);
|
|
546
|
-
}
|
|
547
|
-
await this.contextManager.processLLMStreamResponse(response);
|
|
548
|
-
this.logger.silly(`streamText response object: ${JSON.stringify(response, null, 2)}`);
|
|
549
|
-
return finalText;
|
|
550
|
-
}
|
|
551
129
|
/**
|
|
552
130
|
* Get configuration information about the LLM service
|
|
553
131
|
* @returns Configuration object with provider and model information
|
|
@@ -558,7 +136,6 @@ class VercelLLMService {
|
|
|
558
136
|
try {
|
|
559
137
|
modelMaxInputTokens = getMaxInputTokensForModel(
|
|
560
138
|
this.config.provider,
|
|
561
|
-
// Use our internal provider name
|
|
562
139
|
this.getModelId(),
|
|
563
140
|
this.logger
|
|
564
141
|
);
|
|
@@ -573,9 +150,7 @@ class VercelLLMService {
|
|
|
573
150
|
}
|
|
574
151
|
}
|
|
575
152
|
return {
|
|
576
|
-
router: "vercel",
|
|
577
153
|
provider: this.config.provider,
|
|
578
|
-
// Use our internal provider name
|
|
579
154
|
model: this.model,
|
|
580
155
|
configuredMaxInputTokens: configuredMaxTokens,
|
|
581
156
|
modelMaxInputTokens
|
|
@@ -587,6 +162,12 @@ class VercelLLMService {
|
|
|
587
162
|
getContextManager() {
|
|
588
163
|
return this.contextManager;
|
|
589
164
|
}
|
|
165
|
+
/**
|
|
166
|
+
* Get the message queue for external access (e.g., queueing messages while busy)
|
|
167
|
+
*/
|
|
168
|
+
getMessageQueue() {
|
|
169
|
+
return this.messageQueue;
|
|
170
|
+
}
|
|
590
171
|
}
|
|
591
172
|
_init = __decoratorStart(null);
|
|
592
173
|
VercelLLMService = __decorateElement(_init, 0, "VercelLLMService", _VercelLLMService_decorators, VercelLLMService);
|
package/dist/llm/types.cjs
CHANGED
|
@@ -19,7 +19,6 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
19
19
|
var types_exports = {};
|
|
20
20
|
__export(types_exports, {
|
|
21
21
|
LLM_PROVIDERS: () => LLM_PROVIDERS,
|
|
22
|
-
LLM_ROUTERS: () => LLM_ROUTERS,
|
|
23
22
|
SUPPORTED_FILE_TYPES: () => SUPPORTED_FILE_TYPES
|
|
24
23
|
});
|
|
25
24
|
module.exports = __toCommonJS(types_exports);
|
|
@@ -32,11 +31,9 @@ const LLM_PROVIDERS = [
|
|
|
32
31
|
"xai",
|
|
33
32
|
"cohere"
|
|
34
33
|
];
|
|
35
|
-
const LLM_ROUTERS = ["vercel", "in-built"];
|
|
36
34
|
const SUPPORTED_FILE_TYPES = ["pdf", "image", "audio"];
|
|
37
35
|
// Annotate the CommonJS export names for ESM import in node:
|
|
38
36
|
0 && (module.exports = {
|
|
39
37
|
LLM_PROVIDERS,
|
|
40
|
-
LLM_ROUTERS,
|
|
41
38
|
SUPPORTED_FILE_TYPES
|
|
42
39
|
});
|
package/dist/llm/types.d.ts
CHANGED
|
@@ -1,14 +1,7 @@
|
|
|
1
1
|
export declare const LLM_PROVIDERS: readonly ["openai", "openai-compatible", "anthropic", "google", "groq", "xai", "cohere"];
|
|
2
2
|
export type LLMProvider = (typeof LLM_PROVIDERS)[number];
|
|
3
|
-
export declare const LLM_ROUTERS: readonly ["vercel", "in-built"];
|
|
4
|
-
export type LLMRouter = (typeof LLM_ROUTERS)[number];
|
|
5
3
|
export declare const SUPPORTED_FILE_TYPES: readonly ["pdf", "image", "audio"];
|
|
6
4
|
export type SupportedFileType = (typeof SUPPORTED_FILE_TYPES)[number];
|
|
7
|
-
/**
|
|
8
|
-
* LLMRouter defines the routing backend for LLM service instantiation.
|
|
9
|
-
* 'vercel' = use Vercel LLM service, 'in-built' = use in-built LLM service
|
|
10
|
-
* This type is now defined in the registry as the source of truth.
|
|
11
|
-
*/
|
|
12
5
|
/**
|
|
13
6
|
* Context interface for message formatters.
|
|
14
7
|
* Provides runtime information for model-aware processing.
|
|
@@ -22,7 +15,14 @@ export interface LLMContext {
|
|
|
22
15
|
export interface LLMUpdateContext {
|
|
23
16
|
provider?: LLMProvider;
|
|
24
17
|
model?: string;
|
|
25
|
-
router?: LLMRouter;
|
|
26
18
|
suggestedAction?: string;
|
|
27
19
|
}
|
|
20
|
+
export interface TokenUsage {
|
|
21
|
+
inputTokens?: number;
|
|
22
|
+
outputTokens?: number;
|
|
23
|
+
reasoningTokens?: number;
|
|
24
|
+
totalTokens?: number;
|
|
25
|
+
cacheReadTokens?: number;
|
|
26
|
+
cacheWriteTokens?: number;
|
|
27
|
+
}
|
|
28
28
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/llm/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/llm/types.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,aAAa,0FAQhB,CAAC;AACX,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;AAEzD,eAAO,MAAM,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/llm/types.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,aAAa,0FAQhB,CAAC;AACX,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;AAEzD,eAAO,MAAM,oBAAoB,oCAAqC,CAAC;AACvE,MAAM,MAAM,iBAAiB,GAAG,CAAC,OAAO,oBAAoB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEtE;;;GAGG;AAEH,MAAM,WAAW,UAAU;IACvB,mDAAmD;IACnD,QAAQ,EAAE,WAAW,CAAC;IAEtB,kEAAkE;IAClE,KAAK,EAAE,MAAM,CAAC;CACjB;AAGD,MAAM,WAAW,gBAAgB;IAC7B,QAAQ,CAAC,EAAE,WAAW,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,eAAe,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,UAAU;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC7B"}
|
package/dist/llm/types.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import "../chunk-
|
|
1
|
+
import "../chunk-PTJYTZNU.js";
|
|
2
2
|
const LLM_PROVIDERS = [
|
|
3
3
|
"openai",
|
|
4
4
|
"openai-compatible",
|
|
@@ -8,10 +8,8 @@ const LLM_PROVIDERS = [
|
|
|
8
8
|
"xai",
|
|
9
9
|
"cohere"
|
|
10
10
|
];
|
|
11
|
-
const LLM_ROUTERS = ["vercel", "in-built"];
|
|
12
11
|
const SUPPORTED_FILE_TYPES = ["pdf", "image", "audio"];
|
|
13
12
|
export {
|
|
14
13
|
LLM_PROVIDERS,
|
|
15
|
-
LLM_ROUTERS,
|
|
16
14
|
SUPPORTED_FILE_TYPES
|
|
17
15
|
};
|
package/dist/llm/validation.js
CHANGED