@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
package/dist/llm/registry.cjs
CHANGED
|
@@ -22,19 +22,18 @@ __export(registry_exports, {
|
|
|
22
22
|
LLM_REGISTRY: () => LLM_REGISTRY,
|
|
23
23
|
MIME_TYPE_TO_FILE_TYPE: () => MIME_TYPE_TO_FILE_TYPE,
|
|
24
24
|
acceptsAnyModel: () => acceptsAnyModel,
|
|
25
|
+
calculateCost: () => calculateCost,
|
|
25
26
|
getAllSupportedModels: () => getAllSupportedModels,
|
|
26
27
|
getAllowedMimeTypes: () => getAllowedMimeTypes,
|
|
27
28
|
getDefaultModelForProvider: () => getDefaultModelForProvider,
|
|
28
29
|
getEffectiveMaxInputTokens: () => getEffectiveMaxInputTokens,
|
|
29
30
|
getMaxInputTokensForModel: () => getMaxInputTokensForModel,
|
|
31
|
+
getModelDisplayName: () => getModelDisplayName,
|
|
32
|
+
getModelPricing: () => getModelPricing,
|
|
30
33
|
getProviderFromModel: () => getProviderFromModel,
|
|
31
34
|
getSupportedFileTypesForModel: () => getSupportedFileTypesForModel,
|
|
32
35
|
getSupportedModels: () => getSupportedModels,
|
|
33
36
|
getSupportedProviders: () => getSupportedProviders,
|
|
34
|
-
getSupportedRoutersForModel: () => getSupportedRoutersForModel,
|
|
35
|
-
getSupportedRoutersForProvider: () => getSupportedRoutersForProvider,
|
|
36
|
-
isRouterSupportedForModel: () => isRouterSupportedForModel,
|
|
37
|
-
isRouterSupportedForProvider: () => isRouterSupportedForProvider,
|
|
38
37
|
isValidProviderModel: () => isValidProviderModel,
|
|
39
38
|
modelSupportsFileType: () => modelSupportsFileType,
|
|
40
39
|
requiresBaseURL: () => requiresBaseURL,
|
|
@@ -332,7 +331,6 @@ const LLM_REGISTRY = {
|
|
|
332
331
|
}
|
|
333
332
|
}
|
|
334
333
|
],
|
|
335
|
-
supportedRouters: ["vercel", "in-built"],
|
|
336
334
|
baseURLSupport: "none",
|
|
337
335
|
supportedFileTypes: []
|
|
338
336
|
// No defaults - models must explicitly specify support
|
|
@@ -340,7 +338,6 @@ const LLM_REGISTRY = {
|
|
|
340
338
|
"openai-compatible": {
|
|
341
339
|
models: [],
|
|
342
340
|
// Empty - accepts any model name for custom endpoints
|
|
343
|
-
supportedRouters: ["vercel", "in-built"],
|
|
344
341
|
baseURLSupport: "required",
|
|
345
342
|
supportedFileTypes: ["pdf", "image", "audio"]
|
|
346
343
|
// Allow all types for custom endpoints - user assumes responsibility for model capabilities
|
|
@@ -475,7 +472,6 @@ const LLM_REGISTRY = {
|
|
|
475
472
|
}
|
|
476
473
|
}
|
|
477
474
|
],
|
|
478
|
-
supportedRouters: ["vercel", "in-built"],
|
|
479
475
|
baseURLSupport: "none",
|
|
480
476
|
supportedFileTypes: []
|
|
481
477
|
// No defaults - models must explicitly specify support
|
|
@@ -572,7 +568,6 @@ const LLM_REGISTRY = {
|
|
|
572
568
|
}
|
|
573
569
|
}
|
|
574
570
|
],
|
|
575
|
-
supportedRouters: ["vercel"],
|
|
576
571
|
baseURLSupport: "none",
|
|
577
572
|
supportedFileTypes: []
|
|
578
573
|
// No defaults - models must explicitly specify support
|
|
@@ -690,7 +685,6 @@ const LLM_REGISTRY = {
|
|
|
690
685
|
}
|
|
691
686
|
}
|
|
692
687
|
],
|
|
693
|
-
supportedRouters: ["vercel"],
|
|
694
688
|
baseURLSupport: "none",
|
|
695
689
|
supportedFileTypes: []
|
|
696
690
|
// Groq currently doesn't support file uploads
|
|
@@ -753,7 +747,6 @@ const LLM_REGISTRY = {
|
|
|
753
747
|
}
|
|
754
748
|
}
|
|
755
749
|
],
|
|
756
|
-
supportedRouters: ["vercel"],
|
|
757
750
|
baseURLSupport: "none",
|
|
758
751
|
supportedFileTypes: []
|
|
759
752
|
// XAI currently doesn't support file uploads
|
|
@@ -811,7 +804,6 @@ const LLM_REGISTRY = {
|
|
|
811
804
|
}
|
|
812
805
|
}
|
|
813
806
|
],
|
|
814
|
-
supportedRouters: ["vercel"],
|
|
815
807
|
baseURLSupport: "none",
|
|
816
808
|
supportedFileTypes: []
|
|
817
809
|
// Cohere currently doesn't support file uploads
|
|
@@ -858,10 +850,6 @@ function getProviderFromModel(model) {
|
|
|
858
850
|
function getAllSupportedModels() {
|
|
859
851
|
return Object.values(LLM_REGISTRY).flatMap((info) => info.models.map((m) => m.name));
|
|
860
852
|
}
|
|
861
|
-
function getSupportedRoutersForProvider(provider) {
|
|
862
|
-
const providerInfo = LLM_REGISTRY[provider];
|
|
863
|
-
return providerInfo.supportedRouters;
|
|
864
|
-
}
|
|
865
853
|
function supportsBaseURL(provider) {
|
|
866
854
|
const providerInfo = LLM_REGISTRY[provider];
|
|
867
855
|
return providerInfo.baseURLSupport !== "none";
|
|
@@ -918,32 +906,6 @@ function validateModelFileSupport(provider, model, mimeType) {
|
|
|
918
906
|
};
|
|
919
907
|
}
|
|
920
908
|
}
|
|
921
|
-
function isRouterSupportedForModel(provider, model, router) {
|
|
922
|
-
const providerInfo = LLM_REGISTRY[provider];
|
|
923
|
-
const modelInfo = providerInfo.models.find((m) => m.name.toLowerCase() === model.toLowerCase());
|
|
924
|
-
if (!modelInfo) {
|
|
925
|
-
return isRouterSupportedForProvider(provider, router);
|
|
926
|
-
}
|
|
927
|
-
if (modelInfo.supportedRouters) {
|
|
928
|
-
return modelInfo.supportedRouters.includes(router);
|
|
929
|
-
}
|
|
930
|
-
return isRouterSupportedForProvider(provider, router);
|
|
931
|
-
}
|
|
932
|
-
function getSupportedRoutersForModel(provider, model) {
|
|
933
|
-
const providerInfo = LLM_REGISTRY[provider];
|
|
934
|
-
const modelInfo = providerInfo.models.find((m) => m.name.toLowerCase() === model.toLowerCase());
|
|
935
|
-
if (!modelInfo) {
|
|
936
|
-
return getSupportedRoutersForProvider(provider);
|
|
937
|
-
}
|
|
938
|
-
if (modelInfo.supportedRouters) {
|
|
939
|
-
return modelInfo.supportedRouters;
|
|
940
|
-
}
|
|
941
|
-
return getSupportedRoutersForProvider(provider);
|
|
942
|
-
}
|
|
943
|
-
function isRouterSupportedForProvider(provider, router) {
|
|
944
|
-
const supportedRouters = getSupportedRoutersForProvider(provider);
|
|
945
|
-
return supportedRouters.includes(router);
|
|
946
|
-
}
|
|
947
909
|
function getEffectiveMaxInputTokens(config, logger) {
|
|
948
910
|
const configuredMaxInputTokens = config.maxInputTokens;
|
|
949
911
|
if (configuredMaxInputTokens != null) {
|
|
@@ -1018,25 +980,54 @@ function getEffectiveMaxInputTokens(config, logger) {
|
|
|
1018
980
|
}
|
|
1019
981
|
}
|
|
1020
982
|
}
|
|
983
|
+
function getModelPricing(provider, model) {
|
|
984
|
+
const providerInfo = LLM_REGISTRY[provider];
|
|
985
|
+
if (acceptsAnyModel(provider)) {
|
|
986
|
+
return void 0;
|
|
987
|
+
}
|
|
988
|
+
const modelInfo = providerInfo.models.find((m) => m.name.toLowerCase() === model.toLowerCase());
|
|
989
|
+
return modelInfo?.pricing;
|
|
990
|
+
}
|
|
991
|
+
function getModelDisplayName(model, provider) {
|
|
992
|
+
let resolvedProvider;
|
|
993
|
+
try {
|
|
994
|
+
resolvedProvider = provider ?? getProviderFromModel(model);
|
|
995
|
+
} catch {
|
|
996
|
+
return model;
|
|
997
|
+
}
|
|
998
|
+
const providerInfo = LLM_REGISTRY[resolvedProvider];
|
|
999
|
+
if (!providerInfo || acceptsAnyModel(resolvedProvider)) {
|
|
1000
|
+
return model;
|
|
1001
|
+
}
|
|
1002
|
+
const modelInfo = providerInfo.models.find((m) => m.name.toLowerCase() === model.toLowerCase());
|
|
1003
|
+
return modelInfo?.displayName ?? model;
|
|
1004
|
+
}
|
|
1005
|
+
function calculateCost(usage, pricing) {
|
|
1006
|
+
const inputCost = (usage.inputTokens ?? 0) * pricing.inputPerM / 1e6;
|
|
1007
|
+
const outputCost = (usage.outputTokens ?? 0) * pricing.outputPerM / 1e6;
|
|
1008
|
+
const cacheReadCost = (usage.cacheReadTokens ?? 0) * (pricing.cacheReadPerM ?? 0) / 1e6;
|
|
1009
|
+
const cacheWriteCost = (usage.cacheWriteTokens ?? 0) * (pricing.cacheWritePerM ?? 0) / 1e6;
|
|
1010
|
+
const reasoningCost = (usage.reasoningTokens ?? 0) * pricing.outputPerM / 1e6;
|
|
1011
|
+
return inputCost + outputCost + cacheReadCost + cacheWriteCost + reasoningCost;
|
|
1012
|
+
}
|
|
1021
1013
|
// Annotate the CommonJS export names for ESM import in node:
|
|
1022
1014
|
0 && (module.exports = {
|
|
1023
1015
|
DEFAULT_MAX_INPUT_TOKENS,
|
|
1024
1016
|
LLM_REGISTRY,
|
|
1025
1017
|
MIME_TYPE_TO_FILE_TYPE,
|
|
1026
1018
|
acceptsAnyModel,
|
|
1019
|
+
calculateCost,
|
|
1027
1020
|
getAllSupportedModels,
|
|
1028
1021
|
getAllowedMimeTypes,
|
|
1029
1022
|
getDefaultModelForProvider,
|
|
1030
1023
|
getEffectiveMaxInputTokens,
|
|
1031
1024
|
getMaxInputTokensForModel,
|
|
1025
|
+
getModelDisplayName,
|
|
1026
|
+
getModelPricing,
|
|
1032
1027
|
getProviderFromModel,
|
|
1033
1028
|
getSupportedFileTypesForModel,
|
|
1034
1029
|
getSupportedModels,
|
|
1035
1030
|
getSupportedProviders,
|
|
1036
|
-
getSupportedRoutersForModel,
|
|
1037
|
-
getSupportedRoutersForProvider,
|
|
1038
|
-
isRouterSupportedForModel,
|
|
1039
|
-
isRouterSupportedForProvider,
|
|
1040
1031
|
isValidProviderModel,
|
|
1041
1032
|
modelSupportsFileType,
|
|
1042
1033
|
requiresBaseURL,
|
package/dist/llm/registry.d.ts
CHANGED
|
@@ -1,27 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LLM Model Registry
|
|
3
|
+
*
|
|
4
|
+
* TODO: maxOutputTokens - Currently we rely on @ai-sdk/anthropic (and other provider SDKs)
|
|
5
|
+
* to set appropriate maxOutputTokens defaults per model. As of v2.0.56, @ai-sdk/anthropic
|
|
6
|
+
* has getModelCapabilities() which sets correct limits (e.g., 64000 for claude-haiku-4-5).
|
|
7
|
+
*
|
|
8
|
+
* If we need finer control or want to support models before the SDK does, we could:
|
|
9
|
+
* 1. Add maxOutputTokens to ModelInfo interface
|
|
10
|
+
* 2. Create getMaxOutputTokensForModel() / getEffectiveMaxOutputTokens() helpers
|
|
11
|
+
* 3. Pass explicit maxOutputTokens in TurnExecutor when config doesn't specify one
|
|
12
|
+
*
|
|
13
|
+
* For now, keeping SDK dependency is simpler and auto-updates with SDK releases.
|
|
14
|
+
*/
|
|
1
15
|
import { LLMConfig } from './schemas.js';
|
|
2
|
-
import { type LLMProvider, type
|
|
16
|
+
import { type LLMProvider, type SupportedFileType, type TokenUsage } from './types.js';
|
|
3
17
|
import type { IDextoLogger } from '../logger/v2/types.js';
|
|
18
|
+
/**
|
|
19
|
+
* Pricing metadata for a model (USD per 1M tokens).
|
|
20
|
+
* Optional; when omitted, pricing is unknown.
|
|
21
|
+
*/
|
|
22
|
+
export interface ModelPricing {
|
|
23
|
+
inputPerM: number;
|
|
24
|
+
outputPerM: number;
|
|
25
|
+
cacheReadPerM?: number;
|
|
26
|
+
cacheWritePerM?: number;
|
|
27
|
+
currency?: 'USD';
|
|
28
|
+
unit?: 'per_million_tokens';
|
|
29
|
+
}
|
|
4
30
|
export interface ModelInfo {
|
|
5
31
|
name: string;
|
|
6
32
|
maxInputTokens: number;
|
|
7
33
|
default?: boolean;
|
|
8
34
|
supportedFileTypes: SupportedFileType[];
|
|
9
|
-
supportedRouters?: LLMRouter[];
|
|
10
35
|
displayName?: string;
|
|
11
|
-
pricing?:
|
|
12
|
-
inputPerM: number;
|
|
13
|
-
outputPerM: number;
|
|
14
|
-
cacheReadPerM?: number;
|
|
15
|
-
cacheWritePerM?: number;
|
|
16
|
-
currency?: 'USD';
|
|
17
|
-
unit?: 'per_million_tokens';
|
|
18
|
-
};
|
|
36
|
+
pricing?: ModelPricing;
|
|
19
37
|
}
|
|
20
38
|
export declare const MIME_TYPE_TO_FILE_TYPE: Record<string, SupportedFileType>;
|
|
21
39
|
export declare function getAllowedMimeTypes(): string[];
|
|
22
40
|
export interface ProviderInfo {
|
|
23
41
|
models: ModelInfo[];
|
|
24
|
-
supportedRouters: LLMRouter[];
|
|
25
42
|
baseURLSupport: 'none' | 'optional' | 'required';
|
|
26
43
|
supportedFileTypes: SupportedFileType[];
|
|
27
44
|
}
|
|
@@ -84,12 +101,6 @@ export declare function getProviderFromModel(model: string): LLMProvider;
|
|
|
84
101
|
* Returns a flat array of all supported model names from all providers.
|
|
85
102
|
*/
|
|
86
103
|
export declare function getAllSupportedModels(): string[];
|
|
87
|
-
/**
|
|
88
|
-
* Gets the supported routers for a given provider.
|
|
89
|
-
* @param provider The name of the provider.
|
|
90
|
-
* @returns An array of supported router names for the provider
|
|
91
|
-
*/
|
|
92
|
-
export declare function getSupportedRoutersForProvider(provider: LLMProvider): LLMRouter[];
|
|
93
104
|
/**
|
|
94
105
|
* Checks if a provider supports custom baseURL.
|
|
95
106
|
* @param provider The name of the provider.
|
|
@@ -136,28 +147,6 @@ export declare function validateModelFileSupport(provider: LLMProvider, model: s
|
|
|
136
147
|
fileType?: SupportedFileType;
|
|
137
148
|
error?: string;
|
|
138
149
|
};
|
|
139
|
-
/**
|
|
140
|
-
* Checks if a specific model supports a specific router.
|
|
141
|
-
* @param provider The name of the provider.
|
|
142
|
-
* @param model The name of the model.
|
|
143
|
-
* @param router The router name to check.
|
|
144
|
-
* @returns True if the model supports the router, false otherwise.
|
|
145
|
-
*/
|
|
146
|
-
export declare function isRouterSupportedForModel(provider: LLMProvider, model: string, router: LLMRouter): boolean;
|
|
147
|
-
/**
|
|
148
|
-
* Gets the supported routers for a specific model.
|
|
149
|
-
* @param provider The name of the provider.
|
|
150
|
-
* @param model The name of the model.
|
|
151
|
-
* @returns An array of supported router names for the model.
|
|
152
|
-
*/
|
|
153
|
-
export declare function getSupportedRoutersForModel(provider: LLMProvider, model: string): LLMRouter[];
|
|
154
|
-
/**
|
|
155
|
-
* Checks if a provider supports a specific router.
|
|
156
|
-
* @param provider The name of the provider.
|
|
157
|
-
* @param router The router name to check.
|
|
158
|
-
* @returns True if the provider supports the router, false otherwise.
|
|
159
|
-
*/
|
|
160
|
-
export declare function isRouterSupportedForProvider(provider: LLMProvider, router: LLMRouter): boolean;
|
|
161
150
|
/**
|
|
162
151
|
* Determines the effective maximum input token limit based on configuration.
|
|
163
152
|
* Priority:
|
|
@@ -173,4 +162,29 @@ export declare function isRouterSupportedForProvider(provider: LLMProvider, rout
|
|
|
173
162
|
* TODO: make more readable
|
|
174
163
|
*/
|
|
175
164
|
export declare function getEffectiveMaxInputTokens(config: LLMConfig, logger: IDextoLogger): number;
|
|
165
|
+
/**
|
|
166
|
+
* Gets the pricing information for a specific model.
|
|
167
|
+
*
|
|
168
|
+
* TODO: When adding gateway providers (openrouter, vercel-ai, dexto, etc.),
|
|
169
|
+
* each gateway will be its own provider with its own pricing in the registry.
|
|
170
|
+
* The gateway's pricing includes any markup, so no separate "gateway multiplier" logic is needed.
|
|
171
|
+
* Example: provider: 'dexto' would have models with Dexto's pricing (base + markup baked in).
|
|
172
|
+
*
|
|
173
|
+
* @param provider The name of the provider.
|
|
174
|
+
* @param model The name of the model.
|
|
175
|
+
* @returns The pricing information for the model, or undefined if not available.
|
|
176
|
+
*/
|
|
177
|
+
export declare function getModelPricing(provider: LLMProvider, model: string): ModelPricing | undefined;
|
|
178
|
+
/**
|
|
179
|
+
* Gets the display name for a model, falling back to the model ID if not found.
|
|
180
|
+
*/
|
|
181
|
+
export declare function getModelDisplayName(model: string, provider?: LLMProvider): string;
|
|
182
|
+
/**
|
|
183
|
+
* Calculates the cost for a given token usage based on model pricing.
|
|
184
|
+
*
|
|
185
|
+
* @param usage Token usage counts.
|
|
186
|
+
* @param pricing Model pricing (per million tokens).
|
|
187
|
+
* @returns Cost in USD.
|
|
188
|
+
*/
|
|
189
|
+
export declare function calculateCost(usage: TokenUsage, pricing: ModelPricing): number;
|
|
176
190
|
//# sourceMappingURL=registry.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/llm/registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAIzC,OAAO,EAEH,KAAK,WAAW,EAChB,KAAK,
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/llm/registry.ts"],"names":[],"mappings":"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"}
|
package/dist/llm/registry.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import "../chunk-
|
|
1
|
+
import "../chunk-PTJYTZNU.js";
|
|
2
2
|
import { LLMError } from "./errors.js";
|
|
3
3
|
import { LLMErrorCode } from "./error-codes.js";
|
|
4
4
|
import { DextoRuntimeError } from "../errors/DextoRuntimeError.js";
|
|
@@ -291,7 +291,6 @@ const LLM_REGISTRY = {
|
|
|
291
291
|
}
|
|
292
292
|
}
|
|
293
293
|
],
|
|
294
|
-
supportedRouters: ["vercel", "in-built"],
|
|
295
294
|
baseURLSupport: "none",
|
|
296
295
|
supportedFileTypes: []
|
|
297
296
|
// No defaults - models must explicitly specify support
|
|
@@ -299,7 +298,6 @@ const LLM_REGISTRY = {
|
|
|
299
298
|
"openai-compatible": {
|
|
300
299
|
models: [],
|
|
301
300
|
// Empty - accepts any model name for custom endpoints
|
|
302
|
-
supportedRouters: ["vercel", "in-built"],
|
|
303
301
|
baseURLSupport: "required",
|
|
304
302
|
supportedFileTypes: ["pdf", "image", "audio"]
|
|
305
303
|
// Allow all types for custom endpoints - user assumes responsibility for model capabilities
|
|
@@ -434,7 +432,6 @@ const LLM_REGISTRY = {
|
|
|
434
432
|
}
|
|
435
433
|
}
|
|
436
434
|
],
|
|
437
|
-
supportedRouters: ["vercel", "in-built"],
|
|
438
435
|
baseURLSupport: "none",
|
|
439
436
|
supportedFileTypes: []
|
|
440
437
|
// No defaults - models must explicitly specify support
|
|
@@ -531,7 +528,6 @@ const LLM_REGISTRY = {
|
|
|
531
528
|
}
|
|
532
529
|
}
|
|
533
530
|
],
|
|
534
|
-
supportedRouters: ["vercel"],
|
|
535
531
|
baseURLSupport: "none",
|
|
536
532
|
supportedFileTypes: []
|
|
537
533
|
// No defaults - models must explicitly specify support
|
|
@@ -649,7 +645,6 @@ const LLM_REGISTRY = {
|
|
|
649
645
|
}
|
|
650
646
|
}
|
|
651
647
|
],
|
|
652
|
-
supportedRouters: ["vercel"],
|
|
653
648
|
baseURLSupport: "none",
|
|
654
649
|
supportedFileTypes: []
|
|
655
650
|
// Groq currently doesn't support file uploads
|
|
@@ -712,7 +707,6 @@ const LLM_REGISTRY = {
|
|
|
712
707
|
}
|
|
713
708
|
}
|
|
714
709
|
],
|
|
715
|
-
supportedRouters: ["vercel"],
|
|
716
710
|
baseURLSupport: "none",
|
|
717
711
|
supportedFileTypes: []
|
|
718
712
|
// XAI currently doesn't support file uploads
|
|
@@ -770,7 +764,6 @@ const LLM_REGISTRY = {
|
|
|
770
764
|
}
|
|
771
765
|
}
|
|
772
766
|
],
|
|
773
|
-
supportedRouters: ["vercel"],
|
|
774
767
|
baseURLSupport: "none",
|
|
775
768
|
supportedFileTypes: []
|
|
776
769
|
// Cohere currently doesn't support file uploads
|
|
@@ -817,10 +810,6 @@ function getProviderFromModel(model) {
|
|
|
817
810
|
function getAllSupportedModels() {
|
|
818
811
|
return Object.values(LLM_REGISTRY).flatMap((info) => info.models.map((m) => m.name));
|
|
819
812
|
}
|
|
820
|
-
function getSupportedRoutersForProvider(provider) {
|
|
821
|
-
const providerInfo = LLM_REGISTRY[provider];
|
|
822
|
-
return providerInfo.supportedRouters;
|
|
823
|
-
}
|
|
824
813
|
function supportsBaseURL(provider) {
|
|
825
814
|
const providerInfo = LLM_REGISTRY[provider];
|
|
826
815
|
return providerInfo.baseURLSupport !== "none";
|
|
@@ -877,32 +866,6 @@ function validateModelFileSupport(provider, model, mimeType) {
|
|
|
877
866
|
};
|
|
878
867
|
}
|
|
879
868
|
}
|
|
880
|
-
function isRouterSupportedForModel(provider, model, router) {
|
|
881
|
-
const providerInfo = LLM_REGISTRY[provider];
|
|
882
|
-
const modelInfo = providerInfo.models.find((m) => m.name.toLowerCase() === model.toLowerCase());
|
|
883
|
-
if (!modelInfo) {
|
|
884
|
-
return isRouterSupportedForProvider(provider, router);
|
|
885
|
-
}
|
|
886
|
-
if (modelInfo.supportedRouters) {
|
|
887
|
-
return modelInfo.supportedRouters.includes(router);
|
|
888
|
-
}
|
|
889
|
-
return isRouterSupportedForProvider(provider, router);
|
|
890
|
-
}
|
|
891
|
-
function getSupportedRoutersForModel(provider, model) {
|
|
892
|
-
const providerInfo = LLM_REGISTRY[provider];
|
|
893
|
-
const modelInfo = providerInfo.models.find((m) => m.name.toLowerCase() === model.toLowerCase());
|
|
894
|
-
if (!modelInfo) {
|
|
895
|
-
return getSupportedRoutersForProvider(provider);
|
|
896
|
-
}
|
|
897
|
-
if (modelInfo.supportedRouters) {
|
|
898
|
-
return modelInfo.supportedRouters;
|
|
899
|
-
}
|
|
900
|
-
return getSupportedRoutersForProvider(provider);
|
|
901
|
-
}
|
|
902
|
-
function isRouterSupportedForProvider(provider, router) {
|
|
903
|
-
const supportedRouters = getSupportedRoutersForProvider(provider);
|
|
904
|
-
return supportedRouters.includes(router);
|
|
905
|
-
}
|
|
906
869
|
function getEffectiveMaxInputTokens(config, logger) {
|
|
907
870
|
const configuredMaxInputTokens = config.maxInputTokens;
|
|
908
871
|
if (configuredMaxInputTokens != null) {
|
|
@@ -977,24 +940,53 @@ function getEffectiveMaxInputTokens(config, logger) {
|
|
|
977
940
|
}
|
|
978
941
|
}
|
|
979
942
|
}
|
|
943
|
+
function getModelPricing(provider, model) {
|
|
944
|
+
const providerInfo = LLM_REGISTRY[provider];
|
|
945
|
+
if (acceptsAnyModel(provider)) {
|
|
946
|
+
return void 0;
|
|
947
|
+
}
|
|
948
|
+
const modelInfo = providerInfo.models.find((m) => m.name.toLowerCase() === model.toLowerCase());
|
|
949
|
+
return modelInfo?.pricing;
|
|
950
|
+
}
|
|
951
|
+
function getModelDisplayName(model, provider) {
|
|
952
|
+
let resolvedProvider;
|
|
953
|
+
try {
|
|
954
|
+
resolvedProvider = provider ?? getProviderFromModel(model);
|
|
955
|
+
} catch {
|
|
956
|
+
return model;
|
|
957
|
+
}
|
|
958
|
+
const providerInfo = LLM_REGISTRY[resolvedProvider];
|
|
959
|
+
if (!providerInfo || acceptsAnyModel(resolvedProvider)) {
|
|
960
|
+
return model;
|
|
961
|
+
}
|
|
962
|
+
const modelInfo = providerInfo.models.find((m) => m.name.toLowerCase() === model.toLowerCase());
|
|
963
|
+
return modelInfo?.displayName ?? model;
|
|
964
|
+
}
|
|
965
|
+
function calculateCost(usage, pricing) {
|
|
966
|
+
const inputCost = (usage.inputTokens ?? 0) * pricing.inputPerM / 1e6;
|
|
967
|
+
const outputCost = (usage.outputTokens ?? 0) * pricing.outputPerM / 1e6;
|
|
968
|
+
const cacheReadCost = (usage.cacheReadTokens ?? 0) * (pricing.cacheReadPerM ?? 0) / 1e6;
|
|
969
|
+
const cacheWriteCost = (usage.cacheWriteTokens ?? 0) * (pricing.cacheWritePerM ?? 0) / 1e6;
|
|
970
|
+
const reasoningCost = (usage.reasoningTokens ?? 0) * pricing.outputPerM / 1e6;
|
|
971
|
+
return inputCost + outputCost + cacheReadCost + cacheWriteCost + reasoningCost;
|
|
972
|
+
}
|
|
980
973
|
export {
|
|
981
974
|
DEFAULT_MAX_INPUT_TOKENS,
|
|
982
975
|
LLM_REGISTRY,
|
|
983
976
|
MIME_TYPE_TO_FILE_TYPE,
|
|
984
977
|
acceptsAnyModel,
|
|
978
|
+
calculateCost,
|
|
985
979
|
getAllSupportedModels,
|
|
986
980
|
getAllowedMimeTypes,
|
|
987
981
|
getDefaultModelForProvider,
|
|
988
982
|
getEffectiveMaxInputTokens,
|
|
989
983
|
getMaxInputTokensForModel,
|
|
984
|
+
getModelDisplayName,
|
|
985
|
+
getModelPricing,
|
|
990
986
|
getProviderFromModel,
|
|
991
987
|
getSupportedFileTypesForModel,
|
|
992
988
|
getSupportedModels,
|
|
993
989
|
getSupportedProviders,
|
|
994
|
-
getSupportedRoutersForModel,
|
|
995
|
-
getSupportedRoutersForProvider,
|
|
996
|
-
isRouterSupportedForModel,
|
|
997
|
-
isRouterSupportedForProvider,
|
|
998
990
|
isValidProviderModel,
|
|
999
991
|
modelSupportsFileType,
|
|
1000
992
|
requiresBaseURL,
|
package/dist/llm/resolver.cjs
CHANGED
|
@@ -80,41 +80,12 @@ function resolveLLMConfig(previous, updates, logger) {
|
|
|
80
80
|
context: { provider, model }
|
|
81
81
|
});
|
|
82
82
|
}
|
|
83
|
-
let router = updates.router;
|
|
84
|
-
if (!router) {
|
|
85
|
-
if (provider !== previous.provider && !(0, import_registry.isRouterSupportedForModel)(provider, model, previous.router)) {
|
|
86
|
-
const supported = (0, import_registry.getSupportedRoutersForModel)(provider, model);
|
|
87
|
-
if (supported.length === 0) {
|
|
88
|
-
warnings.push({
|
|
89
|
-
code: import_error_codes.LLMErrorCode.ROUTER_UNSUPPORTED,
|
|
90
|
-
message: `No routers supported for model '${model}' (${provider})`,
|
|
91
|
-
severity: "error",
|
|
92
|
-
scope: import_types.ErrorScope.LLM,
|
|
93
|
-
type: import_types.ErrorType.USER,
|
|
94
|
-
context: router ? { provider, model, router } : { provider, model }
|
|
95
|
-
});
|
|
96
|
-
} else {
|
|
97
|
-
router = supported.includes("vercel") ? "vercel" : supported[0];
|
|
98
|
-
warnings.push({
|
|
99
|
-
code: import_error_codes.LLMErrorCode.ROUTER_UNSUPPORTED,
|
|
100
|
-
message: `Router changed to '${router}' for model '${model}' (${provider})`,
|
|
101
|
-
severity: "warning",
|
|
102
|
-
scope: import_types.ErrorScope.LLM,
|
|
103
|
-
type: import_types.ErrorType.USER,
|
|
104
|
-
context: { provider, model, router }
|
|
105
|
-
});
|
|
106
|
-
}
|
|
107
|
-
} else {
|
|
108
|
-
router = previous.router;
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
83
|
const maxInputTokens = updates.maxInputTokens ?? (0, import_registry.getEffectiveMaxInputTokens)({ provider, model, apiKey: apiKey || previous.apiKey }, logger);
|
|
112
84
|
return {
|
|
113
85
|
candidate: {
|
|
114
86
|
provider,
|
|
115
87
|
model,
|
|
116
88
|
apiKey,
|
|
117
|
-
router,
|
|
118
89
|
baseURL: updates.baseURL ?? previous.baseURL,
|
|
119
90
|
maxIterations: updates.maxIterations ?? previous.maxIterations,
|
|
120
91
|
maxInputTokens,
|
|
@@ -139,8 +110,7 @@ function validateLLMConfig(candidate, warnings) {
|
|
|
139
110
|
type: import_types.ErrorType.USER,
|
|
140
111
|
context: {
|
|
141
112
|
provider: candidate.provider,
|
|
142
|
-
model: candidate.model
|
|
143
|
-
...candidate.router && { router: candidate.router }
|
|
113
|
+
model: candidate.model
|
|
144
114
|
}
|
|
145
115
|
});
|
|
146
116
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolver.d.ts","sourceRoot":"","sources":["../../src/llm/resolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAiD,MAAM,oBAAoB,CAAC;AAC3F,OAAO,EAAE,KAAK,EAAyB,MAAM,uBAAuB,CAAC;AAGrE,OAAO,EAAE,KAAK,kBAAkB,EAAE,KAAK,UAAU,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"resolver.d.ts","sourceRoot":"","sources":["../../src/llm/resolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAiD,MAAM,oBAAoB,CAAC;AAC3F,OAAO,EAAE,KAAK,EAAyB,MAAM,uBAAuB,CAAC;AAGrE,OAAO,EAAE,KAAK,kBAAkB,EAAE,KAAK,UAAU,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AASxF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEnD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAE7D;;GAEG;AACH,wBAAgB,2BAA2B,CACvC,QAAQ,EAAE,kBAAkB,EAC5B,OAAO,EAAE,UAAU,EACnB,MAAM,EAAE,YAAY,GACrB,MAAM,CAAC,kBAAkB,EAAE,gBAAgB,CAAC,CAU9C;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAC5B,QAAQ,EAAE,kBAAkB,EAC5B,OAAO,EAAE,UAAU,EACnB,MAAM,EAAE,YAAY,GACrB;IAAE,SAAS,EAAE,SAAS,CAAC;IAAC,QAAQ,EAAE,KAAK,CAAC,gBAAgB,CAAC,EAAE,CAAA;CAAE,CA+E/D;AAGD,wBAAgB,iBAAiB,CAC7B,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,KAAK,CAAC,gBAAgB,CAAC,EAAE,GACpC,MAAM,CAAC,kBAAkB,EAAE,gBAAgB,CAAC,CA0B9C"}
|
package/dist/llm/resolver.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import "../chunk-
|
|
1
|
+
import "../chunk-PTJYTZNU.js";
|
|
2
2
|
import { hasErrors, splitIssues, ok, fail, zodToIssues } from "../utils/result.js";
|
|
3
3
|
import { ErrorScope, ErrorType } from "../errors/types.js";
|
|
4
4
|
import { LLMErrorCode } from "./error-codes.js";
|
|
@@ -6,8 +6,6 @@ import { LLMConfigSchema } from "./schemas.js";
|
|
|
6
6
|
import {
|
|
7
7
|
getDefaultModelForProvider,
|
|
8
8
|
acceptsAnyModel,
|
|
9
|
-
isRouterSupportedForModel,
|
|
10
|
-
getSupportedRoutersForModel,
|
|
11
9
|
getProviderFromModel,
|
|
12
10
|
isValidProviderModel,
|
|
13
11
|
getEffectiveMaxInputTokens
|
|
@@ -64,41 +62,12 @@ function resolveLLMConfig(previous, updates, logger) {
|
|
|
64
62
|
context: { provider, model }
|
|
65
63
|
});
|
|
66
64
|
}
|
|
67
|
-
let router = updates.router;
|
|
68
|
-
if (!router) {
|
|
69
|
-
if (provider !== previous.provider && !isRouterSupportedForModel(provider, model, previous.router)) {
|
|
70
|
-
const supported = getSupportedRoutersForModel(provider, model);
|
|
71
|
-
if (supported.length === 0) {
|
|
72
|
-
warnings.push({
|
|
73
|
-
code: LLMErrorCode.ROUTER_UNSUPPORTED,
|
|
74
|
-
message: `No routers supported for model '${model}' (${provider})`,
|
|
75
|
-
severity: "error",
|
|
76
|
-
scope: ErrorScope.LLM,
|
|
77
|
-
type: ErrorType.USER,
|
|
78
|
-
context: router ? { provider, model, router } : { provider, model }
|
|
79
|
-
});
|
|
80
|
-
} else {
|
|
81
|
-
router = supported.includes("vercel") ? "vercel" : supported[0];
|
|
82
|
-
warnings.push({
|
|
83
|
-
code: LLMErrorCode.ROUTER_UNSUPPORTED,
|
|
84
|
-
message: `Router changed to '${router}' for model '${model}' (${provider})`,
|
|
85
|
-
severity: "warning",
|
|
86
|
-
scope: ErrorScope.LLM,
|
|
87
|
-
type: ErrorType.USER,
|
|
88
|
-
context: { provider, model, router }
|
|
89
|
-
});
|
|
90
|
-
}
|
|
91
|
-
} else {
|
|
92
|
-
router = previous.router;
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
65
|
const maxInputTokens = updates.maxInputTokens ?? getEffectiveMaxInputTokens({ provider, model, apiKey: apiKey || previous.apiKey }, logger);
|
|
96
66
|
return {
|
|
97
67
|
candidate: {
|
|
98
68
|
provider,
|
|
99
69
|
model,
|
|
100
70
|
apiKey,
|
|
101
|
-
router,
|
|
102
71
|
baseURL: updates.baseURL ?? previous.baseURL,
|
|
103
72
|
maxIterations: updates.maxIterations ?? previous.maxIterations,
|
|
104
73
|
maxInputTokens,
|
|
@@ -123,8 +92,7 @@ function validateLLMConfig(candidate, warnings) {
|
|
|
123
92
|
type: ErrorType.USER,
|
|
124
93
|
context: {
|
|
125
94
|
provider: candidate.provider,
|
|
126
|
-
model: candidate.model
|
|
127
|
-
...candidate.router && { router: candidate.router }
|
|
95
|
+
model: candidate.model
|
|
128
96
|
}
|
|
129
97
|
});
|
|
130
98
|
}
|
package/dist/llm/schemas.cjs
CHANGED
|
@@ -39,7 +39,6 @@ const LLMConfigFields = {
|
|
|
39
39
|
"API key for provider; can be given directly or via $ENV reference"
|
|
40
40
|
),
|
|
41
41
|
maxIterations: import_zod.z.coerce.number().int().positive().describe("Max iterations for agentic loops"),
|
|
42
|
-
router: import_zod.z.enum(import_types2.LLM_ROUTERS).describe("Router to use (vercel | in-built)"),
|
|
43
42
|
baseURL: import_result.OptionalURL.describe(
|
|
44
43
|
"Base URL for provider (e.g., https://api.openai.com/v1). Only certain providers support this."
|
|
45
44
|
),
|
|
@@ -56,7 +55,6 @@ const LLMConfigBaseSchema = import_zod.z.object({
|
|
|
56
55
|
apiKey: LLMConfigFields.apiKey,
|
|
57
56
|
// Apply defaults only for complete config validation
|
|
58
57
|
maxIterations: import_zod.z.coerce.number().int().positive().default(50),
|
|
59
|
-
router: import_zod.z.enum(import_types2.LLM_ROUTERS).default("vercel"),
|
|
60
58
|
baseURL: LLMConfigFields.baseURL,
|
|
61
59
|
maxInputTokens: LLMConfigFields.maxInputTokens,
|
|
62
60
|
maxOutputTokens: LLMConfigFields.maxOutputTokens,
|
|
@@ -164,25 +162,12 @@ const LLMConfigSchema = LLMConfigBaseSchema.superRefine((data, ctx) => {
|
|
|
164
162
|
}
|
|
165
163
|
}
|
|
166
164
|
}
|
|
167
|
-
if (!(0, import_registry.isRouterSupportedForModel)(data.provider, data.model, data.router)) {
|
|
168
|
-
const supportedRouters = (0, import_registry.getSupportedRoutersForModel)(data.provider, data.model);
|
|
169
|
-
ctx.addIssue({
|
|
170
|
-
code: import_zod.z.ZodIssueCode.custom,
|
|
171
|
-
path: ["router"],
|
|
172
|
-
message: `Model '${data.model}' (${data.provider}) does not support router '${data.router}'. Supported: ${supportedRouters.join(", ")}`,
|
|
173
|
-
params: {
|
|
174
|
-
code: import_error_codes.LLMErrorCode.ROUTER_UNSUPPORTED,
|
|
175
|
-
scope: import_types.ErrorScope.LLM,
|
|
176
|
-
type: import_types.ErrorType.USER
|
|
177
|
-
}
|
|
178
|
-
});
|
|
179
|
-
}
|
|
180
165
|
}).brand();
|
|
181
166
|
const LLMUpdatesSchema = import_zod.z.object({ ...LLMConfigFields }).partial().superRefine((data, ctx) => {
|
|
182
|
-
if (!data.model && !data.provider
|
|
167
|
+
if (!data.model && !data.provider) {
|
|
183
168
|
ctx.addIssue({
|
|
184
169
|
code: import_zod.z.ZodIssueCode.custom,
|
|
185
|
-
message: "At least model
|
|
170
|
+
message: "At least model or provider must be specified for LLM switch",
|
|
186
171
|
path: []
|
|
187
172
|
});
|
|
188
173
|
}
|