@dexto/core 1.4.0 → 1.5.1
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 +36 -0
- package/dist/agent/DextoAgent.cjs +22 -3
- package/dist/agent/DextoAgent.d.ts +19 -2
- package/dist/agent/DextoAgent.d.ts.map +1 -1
- package/dist/agent/DextoAgent.js +23 -4
- package/dist/agent/index.cjs +4 -1
- package/dist/agent/index.d.ts +1 -1
- package/dist/agent/index.d.ts.map +1 -1
- package/dist/agent/index.js +5 -1
- package/dist/agent/schemas.cjs +90 -71
- package/dist/agent/schemas.d.ts +5959 -96
- package/dist/agent/schemas.d.ts.map +1 -1
- package/dist/agent/schemas.js +87 -66
- package/dist/approval/manager.cjs +165 -1
- package/dist/approval/manager.d.ts +91 -2
- package/dist/approval/manager.d.ts.map +1 -1
- package/dist/approval/manager.js +155 -1
- package/dist/approval/schemas.cjs +39 -3
- package/dist/approval/schemas.d.ts +238 -1
- package/dist/approval/schemas.d.ts.map +1 -1
- package/dist/approval/schemas.js +35 -3
- package/dist/approval/types.cjs +1 -0
- package/dist/approval/types.d.ts +26 -1
- package/dist/approval/types.d.ts.map +1 -1
- package/dist/approval/types.js +1 -0
- package/dist/context/compaction/factory.cjs +57 -0
- package/dist/context/compaction/factory.d.ts +17 -0
- package/dist/context/compaction/factory.d.ts.map +1 -0
- package/dist/context/compaction/factory.js +34 -0
- package/dist/context/compaction/index.cjs +49 -0
- package/dist/context/compaction/index.d.ts +11 -0
- package/dist/context/compaction/index.d.ts.map +1 -0
- package/dist/context/compaction/index.js +19 -0
- package/dist/context/{compression → compaction}/overflow.cjs +3 -3
- package/dist/context/{compression → compaction}/overflow.d.ts +4 -4
- package/dist/context/compaction/overflow.d.ts.map +1 -0
- package/dist/context/{compression → compaction}/overflow.js +2 -2
- package/dist/context/compaction/provider.cjs +16 -0
- package/dist/context/compaction/provider.d.ts +48 -0
- package/dist/context/compaction/provider.d.ts.map +1 -0
- package/dist/context/compaction/providers/noop-provider.cjs +48 -0
- package/dist/context/compaction/providers/noop-provider.d.ts +24 -0
- package/dist/context/compaction/providers/noop-provider.d.ts.map +1 -0
- package/dist/context/compaction/providers/noop-provider.js +24 -0
- package/dist/context/compaction/providers/reactive-overflow-provider.cjs +61 -0
- package/dist/context/compaction/providers/reactive-overflow-provider.d.ts +36 -0
- package/dist/context/compaction/providers/reactive-overflow-provider.d.ts.map +1 -0
- package/dist/context/compaction/providers/reactive-overflow-provider.js +37 -0
- package/dist/context/compaction/registry.cjs +39 -0
- package/dist/context/compaction/registry.d.ts +19 -0
- package/dist/context/compaction/registry.d.ts.map +1 -0
- package/dist/context/compaction/registry.js +16 -0
- package/dist/context/compaction/schemas.cjs +38 -0
- package/dist/context/compaction/schemas.d.ts +24 -0
- package/dist/context/compaction/schemas.d.ts.map +1 -0
- package/dist/context/compaction/schemas.js +14 -0
- package/dist/context/compaction/strategies/noop.cjs +36 -0
- package/dist/context/compaction/strategies/noop.d.ts +18 -0
- package/dist/context/compaction/strategies/noop.d.ts.map +1 -0
- package/dist/context/compaction/strategies/noop.js +13 -0
- package/dist/context/{compression → compaction/strategies}/reactive-overflow.cjs +3 -3
- package/dist/context/{compression → compaction/strategies}/reactive-overflow.d.ts +6 -6
- package/dist/context/compaction/strategies/reactive-overflow.d.ts.map +1 -0
- package/dist/context/{compression → compaction/strategies}/reactive-overflow.js +4 -4
- package/dist/context/{compression → compaction}/types.d.ts +4 -4
- package/dist/context/compaction/types.d.ts.map +1 -0
- package/dist/context/compaction/types.js +0 -0
- package/dist/context/error-codes.cjs +4 -0
- package/dist/context/error-codes.d.ts +4 -0
- package/dist/context/error-codes.d.ts.map +1 -1
- package/dist/context/error-codes.js +4 -0
- package/dist/context/errors.cjs +40 -0
- package/dist/context/errors.d.ts +14 -0
- package/dist/context/errors.d.ts.map +1 -1
- package/dist/context/errors.js +40 -0
- package/dist/context/index.cjs +3 -1
- package/dist/context/index.d.ts +1 -0
- package/dist/context/index.d.ts.map +1 -1
- package/dist/context/index.js +1 -0
- package/dist/context/types.d.ts +6 -0
- package/dist/context/types.d.ts.map +1 -1
- package/dist/context/utils.cjs +27 -7
- package/dist/context/utils.d.ts.map +1 -1
- package/dist/context/utils.js +27 -7
- package/dist/errors/result-bridge.cjs +2 -3
- package/dist/errors/result-bridge.d.ts.map +1 -1
- package/dist/errors/result-bridge.js +2 -3
- package/dist/events/index.cjs +6 -3
- package/dist/events/index.d.ts +35 -19
- package/dist/events/index.d.ts.map +1 -1
- package/dist/events/index.js +5 -3
- package/dist/filesystem/filesystem-service.cjs +39 -0
- package/dist/filesystem/filesystem-service.d.ts +32 -0
- package/dist/filesystem/filesystem-service.d.ts.map +1 -1
- package/dist/filesystem/filesystem-service.js +39 -0
- package/dist/filesystem/index.d.ts +1 -1
- package/dist/filesystem/index.d.ts.map +1 -1
- package/dist/filesystem/path-validator.cjs +69 -1
- package/dist/filesystem/path-validator.d.ts +43 -2
- package/dist/filesystem/path-validator.d.ts.map +1 -1
- package/dist/filesystem/path-validator.js +69 -1
- package/dist/image/define-image.cjs +146 -0
- package/dist/image/define-image.d.ts +71 -0
- package/dist/image/define-image.d.ts.map +1 -0
- package/dist/image/define-image.js +121 -0
- package/dist/image/index.cjs +32 -0
- package/dist/image/index.d.ts +53 -0
- package/dist/image/index.d.ts.map +1 -0
- package/dist/image/index.js +7 -0
- package/dist/image/types.cjs +16 -0
- package/dist/image/types.d.ts +231 -0
- package/dist/image/types.d.ts.map +1 -0
- package/dist/image/types.js +0 -0
- package/dist/index.cjs +5 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/llm/error-codes.cjs +1 -0
- package/dist/llm/error-codes.d.ts +1 -0
- package/dist/llm/error-codes.d.ts.map +1 -1
- package/dist/llm/error-codes.js +1 -0
- package/dist/llm/errors.cjs +24 -0
- package/dist/llm/errors.d.ts +19 -6
- package/dist/llm/errors.d.ts.map +1 -1
- package/dist/llm/errors.js +24 -0
- package/dist/llm/executor/provider-options.cjs +87 -0
- package/dist/llm/executor/provider-options.d.ts +49 -0
- package/dist/llm/executor/provider-options.d.ts.map +1 -0
- package/dist/llm/executor/provider-options.js +63 -0
- package/dist/llm/executor/stream-processor.cjs +22 -11
- package/dist/llm/executor/stream-processor.d.ts.map +1 -1
- package/dist/llm/executor/stream-processor.js +22 -11
- package/dist/llm/executor/turn-executor.cjs +60 -23
- package/dist/llm/executor/turn-executor.d.ts +7 -5
- package/dist/llm/executor/turn-executor.d.ts.map +1 -1
- package/dist/llm/executor/turn-executor.js +60 -23
- package/dist/llm/formatters/vercel.cjs +15 -3
- package/dist/llm/formatters/vercel.d.ts.map +1 -1
- package/dist/llm/formatters/vercel.js +15 -3
- package/dist/llm/index.cjs +18 -1
- package/dist/llm/index.d.ts +2 -0
- package/dist/llm/index.d.ts.map +1 -1
- package/dist/llm/index.js +14 -0
- package/dist/llm/providers/local/ai-sdk-adapter.cjs +308 -0
- package/dist/llm/providers/local/ai-sdk-adapter.d.ts +29 -0
- package/dist/llm/providers/local/ai-sdk-adapter.d.ts.map +1 -0
- package/dist/llm/providers/local/ai-sdk-adapter.js +278 -0
- package/dist/llm/providers/local/downloader.cjs +291 -0
- package/dist/llm/providers/local/downloader.d.ts +82 -0
- package/dist/llm/providers/local/downloader.d.ts.map +1 -0
- package/dist/llm/providers/local/downloader.js +251 -0
- package/dist/llm/providers/local/error-codes.cjs +57 -0
- package/dist/llm/providers/local/error-codes.d.ts +66 -0
- package/dist/llm/providers/local/error-codes.d.ts.map +1 -0
- package/dist/llm/providers/local/error-codes.js +34 -0
- package/dist/llm/providers/local/errors.cjs +240 -0
- package/dist/llm/providers/local/errors.d.ts +31 -0
- package/dist/llm/providers/local/errors.d.ts.map +1 -0
- package/dist/llm/providers/local/errors.js +217 -0
- package/dist/llm/providers/local/gpu-detector.cjs +214 -0
- package/dist/llm/providers/local/gpu-detector.d.ts +28 -0
- package/dist/llm/providers/local/gpu-detector.d.ts.map +1 -0
- package/dist/llm/providers/local/gpu-detector.js +178 -0
- package/dist/llm/providers/local/index.cjs +147 -0
- package/dist/llm/providers/local/index.d.ts +21 -0
- package/dist/llm/providers/local/index.d.ts.map +1 -0
- package/dist/llm/providers/local/index.js +126 -0
- package/dist/llm/providers/local/node-llama-provider.cjs +216 -0
- package/dist/llm/providers/local/node-llama-provider.d.ts +90 -0
- package/dist/llm/providers/local/node-llama-provider.d.ts.map +1 -0
- package/dist/llm/providers/local/node-llama-provider.js +176 -0
- package/dist/llm/providers/local/ollama-provider.cjs +230 -0
- package/dist/llm/providers/local/ollama-provider.d.ts +70 -0
- package/dist/llm/providers/local/ollama-provider.d.ts.map +1 -0
- package/dist/llm/providers/local/ollama-provider.js +198 -0
- package/dist/llm/providers/local/registry.cjs +343 -0
- package/dist/llm/providers/local/registry.d.ts +51 -0
- package/dist/llm/providers/local/registry.d.ts.map +1 -0
- package/dist/llm/providers/local/registry.js +312 -0
- package/dist/llm/providers/local/schemas.cjs +169 -0
- package/dist/llm/providers/local/schemas.d.ts +395 -0
- package/dist/llm/providers/local/schemas.d.ts.map +1 -0
- package/dist/llm/providers/local/schemas.js +133 -0
- package/dist/llm/providers/local/types.cjs +16 -0
- package/dist/llm/providers/local/types.d.ts +219 -0
- package/dist/llm/providers/local/types.d.ts.map +1 -0
- package/dist/llm/providers/local/types.js +0 -0
- package/dist/llm/providers/openrouter-model-registry.cjs +350 -0
- package/dist/llm/providers/openrouter-model-registry.d.ts +120 -0
- package/dist/llm/providers/openrouter-model-registry.d.ts.map +1 -0
- package/dist/llm/providers/openrouter-model-registry.js +309 -0
- package/dist/llm/registry.cjs +604 -9
- package/dist/llm/registry.d.ts +35 -0
- package/dist/llm/registry.d.ts.map +1 -1
- package/dist/llm/registry.js +600 -9
- package/dist/llm/resolver.cjs +63 -5
- package/dist/llm/resolver.d.ts +3 -3
- package/dist/llm/resolver.d.ts.map +1 -1
- package/dist/llm/resolver.js +69 -6
- package/dist/llm/schemas.cjs +107 -81
- package/dist/llm/schemas.d.ts +181 -22
- package/dist/llm/schemas.d.ts.map +1 -1
- package/dist/llm/schemas.js +107 -81
- package/dist/llm/services/factory.cjs +87 -13
- package/dist/llm/services/factory.d.ts +4 -1
- package/dist/llm/services/factory.d.ts.map +1 -1
- package/dist/llm/services/factory.js +85 -12
- package/dist/llm/services/test-utils.integration.cjs +22 -2
- package/dist/llm/services/test-utils.integration.d.ts +7 -1
- package/dist/llm/services/test-utils.integration.d.ts.map +1 -1
- package/dist/llm/services/test-utils.integration.js +26 -3
- package/dist/llm/services/vercel.cjs +8 -3
- package/dist/llm/services/vercel.d.ts +3 -2
- package/dist/llm/services/vercel.d.ts.map +1 -1
- package/dist/llm/services/vercel.js +8 -3
- package/dist/llm/types.cjs +11 -1
- package/dist/llm/types.d.ts +1 -1
- package/dist/llm/types.d.ts.map +1 -1
- package/dist/llm/types.js +11 -1
- package/dist/logger/logger.cjs +7 -3
- package/dist/logger/logger.d.ts.map +1 -1
- package/dist/logger/logger.js +7 -3
- package/dist/mcp/manager.cjs +8 -0
- package/dist/mcp/manager.d.ts +17 -0
- package/dist/mcp/manager.d.ts.map +1 -1
- package/dist/mcp/manager.js +8 -0
- package/dist/mcp/mcp-client.cjs +0 -3
- package/dist/mcp/mcp-client.d.ts.map +1 -1
- package/dist/mcp/mcp-client.js +0 -3
- package/dist/memory/schemas.d.ts +3 -3
- package/dist/plugins/error-codes.cjs +3 -0
- package/dist/plugins/error-codes.d.ts +7 -1
- package/dist/plugins/error-codes.d.ts.map +1 -1
- package/dist/plugins/error-codes.js +3 -0
- package/dist/plugins/index.cjs +7 -0
- package/dist/plugins/index.d.ts +4 -2
- package/dist/plugins/index.d.ts.map +1 -1
- package/dist/plugins/index.js +6 -1
- package/dist/plugins/manager.cjs +92 -7
- package/dist/plugins/manager.d.ts +10 -3
- package/dist/plugins/manager.d.ts.map +1 -1
- package/dist/plugins/manager.js +92 -7
- package/dist/plugins/registry.cjs +63 -0
- package/dist/plugins/registry.d.ts +101 -0
- package/dist/plugins/registry.d.ts.map +1 -0
- package/dist/plugins/registry.js +39 -0
- package/dist/plugins/schemas.cjs +17 -5
- package/dist/plugins/schemas.d.ts +62 -5
- package/dist/plugins/schemas.d.ts.map +1 -1
- package/dist/plugins/schemas.js +15 -4
- package/dist/providers/base-registry.cjs +147 -0
- package/dist/providers/base-registry.d.ts +147 -0
- package/dist/providers/base-registry.d.ts.map +1 -0
- package/dist/providers/base-registry.js +123 -0
- package/dist/providers/discovery.cjs +109 -0
- package/dist/providers/discovery.d.ts +96 -0
- package/dist/providers/discovery.d.ts.map +1 -0
- package/dist/providers/discovery.js +84 -0
- package/dist/providers/index.cjs +24 -0
- package/dist/providers/index.d.ts +32 -0
- package/dist/providers/index.d.ts.map +1 -0
- package/dist/providers/index.js +2 -0
- package/dist/resources/reference-parser.cjs +3 -3
- package/dist/resources/reference-parser.d.ts.map +1 -1
- package/dist/resources/reference-parser.js +3 -3
- package/dist/session/chat-session.cjs +20 -3
- package/dist/session/chat-session.d.ts.map +1 -1
- package/dist/session/chat-session.js +21 -4
- package/dist/session/history/database.cjs +49 -15
- package/dist/session/history/database.d.ts.map +1 -1
- package/dist/session/history/database.js +49 -15
- package/dist/session/session-manager.cjs +2 -1
- package/dist/session/session-manager.d.ts.map +1 -1
- package/dist/session/session-manager.js +2 -1
- package/dist/storage/blob/factory.cjs +8 -11
- package/dist/storage/blob/factory.d.ts +32 -6
- package/dist/storage/blob/factory.d.ts.map +1 -1
- package/dist/storage/blob/factory.js +8 -11
- package/dist/storage/blob/index.cjs +56 -0
- package/dist/storage/blob/index.d.ts +45 -0
- package/dist/storage/blob/index.d.ts.map +1 -0
- package/dist/storage/blob/index.js +30 -0
- package/dist/storage/blob/provider.cjs +16 -0
- package/dist/storage/blob/provider.d.ts +50 -0
- package/dist/storage/blob/provider.d.ts.map +1 -0
- package/dist/storage/blob/provider.js +0 -0
- package/dist/storage/blob/providers/index.cjs +31 -0
- package/dist/storage/blob/providers/index.d.ts +8 -0
- package/dist/storage/blob/providers/index.d.ts.map +1 -0
- package/dist/storage/blob/providers/index.js +7 -0
- package/dist/storage/blob/providers/local.cjs +39 -0
- package/dist/storage/blob/providers/local.d.ts +17 -0
- package/dist/storage/blob/providers/local.d.ts.map +1 -0
- package/dist/storage/blob/providers/local.js +16 -0
- package/dist/storage/blob/providers/memory.cjs +39 -0
- package/dist/storage/blob/providers/memory.d.ts +17 -0
- package/dist/storage/blob/providers/memory.d.ts.map +1 -0
- package/dist/storage/blob/providers/memory.js +16 -0
- package/dist/storage/blob/registry.cjs +50 -0
- package/dist/storage/blob/registry.d.ts +42 -0
- package/dist/storage/blob/registry.d.ts.map +1 -0
- package/dist/storage/blob/registry.js +26 -0
- package/dist/storage/blob/schemas.cjs +9 -12
- package/dist/storage/blob/schemas.d.ts +39 -34
- package/dist/storage/blob/schemas.d.ts.map +1 -1
- package/dist/storage/blob/schemas.js +6 -11
- package/dist/storage/cache/factory.cjs +8 -36
- package/dist/storage/cache/factory.d.ts +32 -7
- package/dist/storage/cache/factory.d.ts.map +1 -1
- package/dist/storage/cache/factory.js +8 -26
- package/dist/storage/cache/index.cjs +53 -0
- package/dist/storage/cache/index.d.ts +44 -0
- package/dist/storage/cache/index.d.ts.map +1 -0
- package/dist/storage/cache/index.js +28 -0
- package/dist/storage/cache/provider.cjs +16 -0
- package/dist/storage/cache/provider.d.ts +56 -0
- package/dist/storage/cache/provider.d.ts.map +1 -0
- package/dist/storage/cache/provider.js +0 -0
- package/dist/storage/cache/providers/index.cjs +31 -0
- package/dist/storage/cache/providers/index.d.ts +8 -0
- package/dist/storage/cache/providers/index.d.ts.map +1 -0
- package/dist/storage/cache/providers/index.js +7 -0
- package/dist/storage/cache/providers/memory.cjs +40 -0
- package/dist/storage/cache/providers/memory.d.ts +17 -0
- package/dist/storage/cache/providers/memory.d.ts.map +1 -0
- package/dist/storage/cache/providers/memory.js +17 -0
- package/dist/storage/cache/providers/redis.cjs +66 -0
- package/dist/storage/cache/providers/redis.d.ts +20 -0
- package/dist/storage/cache/providers/redis.d.ts.map +1 -0
- package/dist/storage/cache/providers/redis.js +33 -0
- package/dist/storage/cache/registry.cjs +50 -0
- package/dist/storage/cache/registry.d.ts +42 -0
- package/dist/storage/cache/registry.d.ts.map +1 -0
- package/dist/storage/cache/registry.js +26 -0
- package/dist/storage/cache/schemas.cjs +6 -2
- package/dist/storage/cache/schemas.d.ts +2 -3
- package/dist/storage/cache/schemas.d.ts.map +1 -1
- package/dist/storage/cache/schemas.js +3 -1
- package/dist/storage/database/factory.cjs +8 -47
- package/dist/storage/database/factory.d.ts +34 -8
- package/dist/storage/database/factory.d.ts.map +1 -1
- package/dist/storage/database/factory.js +8 -37
- package/dist/storage/database/index.cjs +58 -0
- package/dist/storage/database/index.d.ts +45 -0
- package/dist/storage/database/index.d.ts.map +1 -0
- package/dist/storage/database/index.js +37 -0
- package/dist/storage/database/postgres-store.cjs +174 -78
- package/dist/storage/database/postgres-store.d.ts +19 -0
- package/dist/storage/database/postgres-store.d.ts.map +1 -1
- package/dist/storage/database/postgres-store.js +174 -78
- package/dist/storage/database/provider.cjs +16 -0
- package/dist/storage/database/provider.d.ts +56 -0
- package/dist/storage/database/provider.d.ts.map +1 -0
- package/dist/storage/database/provider.js +0 -0
- package/dist/storage/database/providers/index.cjs +34 -0
- package/dist/storage/database/providers/index.d.ts +9 -0
- package/dist/storage/database/providers/index.d.ts.map +1 -0
- package/dist/storage/database/providers/index.js +9 -0
- package/dist/storage/database/providers/memory.cjs +40 -0
- package/dist/storage/database/providers/memory.d.ts +16 -0
- package/dist/storage/database/providers/memory.d.ts.map +1 -0
- package/dist/storage/database/providers/memory.js +17 -0
- package/dist/storage/database/providers/postgres.cjs +62 -0
- package/dist/storage/database/providers/postgres.d.ts +19 -0
- package/dist/storage/database/providers/postgres.d.ts.map +1 -0
- package/dist/storage/database/providers/postgres.js +29 -0
- package/dist/storage/database/providers/sqlite.cjs +66 -0
- package/dist/storage/database/providers/sqlite.d.ts +20 -0
- package/dist/storage/database/providers/sqlite.d.ts.map +1 -0
- package/dist/storage/database/providers/sqlite.js +33 -0
- package/dist/storage/database/registry.cjs +50 -0
- package/dist/storage/database/registry.d.ts +42 -0
- package/dist/storage/database/registry.d.ts.map +1 -0
- package/dist/storage/database/registry.js +26 -0
- package/dist/storage/database/schemas.cjs +12 -3
- package/dist/storage/database/schemas.d.ts +11 -4
- package/dist/storage/database/schemas.d.ts.map +1 -1
- package/dist/storage/database/schemas.js +8 -2
- package/dist/storage/error-codes.cjs +6 -0
- package/dist/storage/error-codes.d.ts +7 -1
- package/dist/storage/error-codes.d.ts.map +1 -1
- package/dist/storage/error-codes.js +6 -0
- package/dist/storage/errors.cjs +80 -0
- package/dist/storage/errors.d.ts +24 -0
- package/dist/storage/errors.d.ts.map +1 -1
- package/dist/storage/errors.js +80 -0
- package/dist/storage/index.cjs +47 -4
- package/dist/storage/index.d.ts +34 -8
- package/dist/storage/index.d.ts.map +1 -1
- package/dist/storage/index.js +32 -3
- package/dist/storage/schemas.cjs +4 -0
- package/dist/storage/schemas.d.ts +24 -50
- package/dist/storage/schemas.d.ts.map +1 -1
- package/dist/storage/schemas.js +5 -1
- package/dist/storage/storage-manager.cjs +6 -6
- package/dist/storage/storage-manager.d.ts.map +1 -1
- package/dist/storage/storage-manager.js +3 -3
- package/dist/systemPrompt/in-built-prompts.cjs +7 -6
- package/dist/systemPrompt/in-built-prompts.d.ts +2 -2
- package/dist/systemPrompt/in-built-prompts.d.ts.map +1 -1
- package/dist/systemPrompt/in-built-prompts.js +6 -5
- package/dist/systemPrompt/registry.cjs +2 -2
- package/dist/systemPrompt/registry.d.ts +1 -1
- package/dist/systemPrompt/registry.d.ts.map +1 -1
- package/dist/systemPrompt/registry.js +2 -2
- package/dist/systemPrompt/schemas.cjs +2 -2
- package/dist/systemPrompt/schemas.d.ts +13 -13
- package/dist/systemPrompt/schemas.js +2 -2
- package/dist/tools/custom-tool-registry.cjs +64 -0
- package/dist/tools/custom-tool-registry.d.ts +126 -0
- package/dist/tools/custom-tool-registry.d.ts.map +1 -0
- package/dist/tools/custom-tool-registry.js +40 -0
- package/dist/tools/custom-tool-schema-registry.cjs +164 -0
- package/dist/tools/custom-tool-schema-registry.d.ts +86 -0
- package/dist/tools/custom-tool-schema-registry.d.ts.map +1 -0
- package/dist/tools/custom-tool-schema-registry.js +140 -0
- package/dist/tools/error-codes.cjs +3 -0
- package/dist/tools/error-codes.d.ts +4 -1
- package/dist/tools/error-codes.d.ts.map +1 -1
- package/dist/tools/error-codes.js +3 -0
- package/dist/tools/errors.cjs +41 -0
- package/dist/tools/errors.d.ts +17 -0
- package/dist/tools/errors.d.ts.map +1 -1
- package/dist/tools/errors.js +41 -0
- package/dist/tools/index.cjs +13 -1
- package/dist/tools/index.d.ts +4 -0
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +11 -1
- package/dist/tools/internal-tools/constants.cjs +3 -9
- package/dist/tools/internal-tools/constants.d.ts +1 -1
- package/dist/tools/internal-tools/constants.d.ts.map +1 -1
- package/dist/tools/internal-tools/constants.js +3 -9
- package/dist/tools/internal-tools/implementations/get-resource-tool.cjs +113 -0
- package/dist/tools/internal-tools/implementations/get-resource-tool.d.ts +30 -0
- package/dist/tools/internal-tools/implementations/get-resource-tool.d.ts.map +1 -0
- package/dist/tools/internal-tools/implementations/get-resource-tool.js +90 -0
- package/dist/tools/internal-tools/implementations/list-resources-tool.cjs +91 -0
- package/dist/tools/internal-tools/implementations/list-resources-tool.d.ts +24 -0
- package/dist/tools/internal-tools/implementations/list-resources-tool.d.ts.map +1 -0
- package/dist/tools/internal-tools/implementations/list-resources-tool.js +68 -0
- package/dist/tools/internal-tools/provider.cjs +153 -23
- package/dist/tools/internal-tools/provider.d.ts +55 -10
- package/dist/tools/internal-tools/provider.d.ts.map +1 -1
- package/dist/tools/internal-tools/provider.js +153 -23
- package/dist/tools/internal-tools/registry.cjs +18 -43
- package/dist/tools/internal-tools/registry.d.ts +4 -4
- package/dist/tools/internal-tools/registry.d.ts.map +1 -1
- package/dist/tools/internal-tools/registry.js +18 -43
- package/dist/tools/schemas.cjs +20 -0
- package/dist/tools/schemas.d.ts +43 -1
- package/dist/tools/schemas.d.ts.map +1 -1
- package/dist/tools/schemas.js +16 -0
- package/dist/tools/tool-manager.cjs +140 -13
- package/dist/tools/tool-manager.d.ts +22 -3
- package/dist/tools/tool-manager.d.ts.map +1 -1
- package/dist/tools/tool-manager.js +140 -13
- package/dist/tools/types.d.ts +43 -0
- package/dist/tools/types.d.ts.map +1 -1
- package/dist/utils/api-key-resolver.cjs +19 -1
- package/dist/utils/api-key-resolver.d.ts.map +1 -1
- package/dist/utils/api-key-resolver.js +19 -1
- package/dist/utils/index.cjs +0 -2
- package/dist/utils/index.d.ts +0 -1
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +0 -1
- package/dist/utils/redactor.cjs +18 -3
- package/dist/utils/redactor.d.ts +0 -7
- package/dist/utils/redactor.d.ts.map +1 -1
- package/dist/utils/redactor.js +18 -3
- package/dist/utils/service-initializer.cjs +9 -35
- package/dist/utils/service-initializer.d.ts.map +1 -1
- package/dist/utils/service-initializer.js +9 -35
- package/package.json +5 -2
- package/dist/context/compression/overflow.d.ts.map +0 -1
- package/dist/context/compression/reactive-overflow.d.ts.map +0 -1
- package/dist/context/compression/types.d.ts.map +0 -1
- package/dist/tools/internal-tools/implementations/bash-exec-tool.cjs +0 -130
- package/dist/tools/internal-tools/implementations/bash-exec-tool.d.ts +0 -13
- package/dist/tools/internal-tools/implementations/bash-exec-tool.d.ts.map +0 -1
- package/dist/tools/internal-tools/implementations/bash-exec-tool.js +0 -97
- package/dist/tools/internal-tools/implementations/bash-output-tool.cjs +0 -49
- package/dist/tools/internal-tools/implementations/bash-output-tool.d.ts +0 -12
- package/dist/tools/internal-tools/implementations/bash-output-tool.d.ts.map +0 -1
- package/dist/tools/internal-tools/implementations/bash-output-tool.js +0 -26
- package/dist/tools/internal-tools/implementations/edit-file-tool.cjs +0 -127
- package/dist/tools/internal-tools/implementations/edit-file-tool.d.ts +0 -12
- package/dist/tools/internal-tools/implementations/edit-file-tool.d.ts.map +0 -1
- package/dist/tools/internal-tools/implementations/edit-file-tool.js +0 -104
- package/dist/tools/internal-tools/implementations/glob-files-tool.cjs +0 -70
- package/dist/tools/internal-tools/implementations/glob-files-tool.d.ts +0 -12
- package/dist/tools/internal-tools/implementations/glob-files-tool.d.ts.map +0 -1
- package/dist/tools/internal-tools/implementations/glob-files-tool.js +0 -47
- package/dist/tools/internal-tools/implementations/grep-content-tool.cjs +0 -86
- package/dist/tools/internal-tools/implementations/grep-content-tool.d.ts +0 -12
- package/dist/tools/internal-tools/implementations/grep-content-tool.d.ts.map +0 -1
- package/dist/tools/internal-tools/implementations/grep-content-tool.js +0 -63
- package/dist/tools/internal-tools/implementations/kill-process-tool.cjs +0 -47
- package/dist/tools/internal-tools/implementations/kill-process-tool.d.ts +0 -12
- package/dist/tools/internal-tools/implementations/kill-process-tool.d.ts.map +0 -1
- package/dist/tools/internal-tools/implementations/kill-process-tool.js +0 -24
- package/dist/tools/internal-tools/implementations/read-file-tool.cjs +0 -63
- package/dist/tools/internal-tools/implementations/read-file-tool.d.ts +0 -12
- package/dist/tools/internal-tools/implementations/read-file-tool.d.ts.map +0 -1
- package/dist/tools/internal-tools/implementations/read-file-tool.js +0 -40
- package/dist/tools/internal-tools/implementations/write-file-tool.cjs +0 -124
- package/dist/tools/internal-tools/implementations/write-file-tool.d.ts +0 -12
- package/dist/tools/internal-tools/implementations/write-file-tool.d.ts.map +0 -1
- package/dist/tools/internal-tools/implementations/write-file-tool.js +0 -103
- package/dist/utils/env-file.cjs +0 -118
- package/dist/utils/env-file.d.ts +0 -5
- package/dist/utils/env-file.d.ts.map +0 -1
- package/dist/utils/env-file.js +0 -85
- /package/dist/context/{compression/types.js → compaction/provider.js} +0 -0
- /package/dist/context/{compression → compaction}/types.cjs +0 -0
package/dist/llm/registry.js
CHANGED
|
@@ -5,6 +5,7 @@ import { DextoRuntimeError } from "../errors/DextoRuntimeError.js";
|
|
|
5
5
|
import {
|
|
6
6
|
LLM_PROVIDERS
|
|
7
7
|
} from "./types.js";
|
|
8
|
+
import { getOpenRouterModelContextLength } from "./providers/openrouter-model-registry.js";
|
|
8
9
|
const MIME_TYPE_TO_FILE_TYPE = {
|
|
9
10
|
"application/pdf": "pdf",
|
|
10
11
|
"audio/mp3": "audio",
|
|
@@ -30,6 +31,60 @@ const DEFAULT_MAX_INPUT_TOKENS = 128e3;
|
|
|
30
31
|
const LLM_REGISTRY = {
|
|
31
32
|
openai: {
|
|
32
33
|
models: [
|
|
34
|
+
// GPT-5.2 series (latest, released Dec 2025)
|
|
35
|
+
{
|
|
36
|
+
name: "gpt-5.2-chat-latest",
|
|
37
|
+
displayName: "GPT-5.2 Instant",
|
|
38
|
+
maxInputTokens: 4e5,
|
|
39
|
+
supportedFileTypes: ["pdf", "image"],
|
|
40
|
+
pricing: {
|
|
41
|
+
inputPerM: 1.75,
|
|
42
|
+
outputPerM: 14,
|
|
43
|
+
cacheReadPerM: 0.175,
|
|
44
|
+
currency: "USD",
|
|
45
|
+
unit: "per_million_tokens"
|
|
46
|
+
}
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
name: "gpt-5.2",
|
|
50
|
+
displayName: "GPT-5.2 Thinking",
|
|
51
|
+
maxInputTokens: 4e5,
|
|
52
|
+
supportedFileTypes: ["pdf", "image"],
|
|
53
|
+
pricing: {
|
|
54
|
+
inputPerM: 1.75,
|
|
55
|
+
outputPerM: 14,
|
|
56
|
+
cacheReadPerM: 0.175,
|
|
57
|
+
currency: "USD",
|
|
58
|
+
unit: "per_million_tokens"
|
|
59
|
+
}
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
name: "gpt-5.2-pro",
|
|
63
|
+
displayName: "GPT-5.2 Pro",
|
|
64
|
+
maxInputTokens: 4e5,
|
|
65
|
+
supportedFileTypes: ["pdf", "image"],
|
|
66
|
+
pricing: {
|
|
67
|
+
inputPerM: 21,
|
|
68
|
+
outputPerM: 168,
|
|
69
|
+
cacheReadPerM: 2.1,
|
|
70
|
+
currency: "USD",
|
|
71
|
+
unit: "per_million_tokens"
|
|
72
|
+
}
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
name: "gpt-5.2-codex",
|
|
76
|
+
displayName: "GPT-5.2 Codex",
|
|
77
|
+
maxInputTokens: 4e5,
|
|
78
|
+
supportedFileTypes: ["pdf", "image"],
|
|
79
|
+
pricing: {
|
|
80
|
+
inputPerM: 1.75,
|
|
81
|
+
outputPerM: 14,
|
|
82
|
+
cacheReadPerM: 0.175,
|
|
83
|
+
currency: "USD",
|
|
84
|
+
unit: "per_million_tokens"
|
|
85
|
+
}
|
|
86
|
+
},
|
|
87
|
+
// GPT-5.1 series
|
|
33
88
|
{
|
|
34
89
|
name: "gpt-5.1-chat-latest",
|
|
35
90
|
displayName: "GPT-5.1 Instant",
|
|
@@ -234,6 +289,7 @@ const LLM_REGISTRY = {
|
|
|
234
289
|
pricing: {
|
|
235
290
|
inputPerM: 2.5,
|
|
236
291
|
outputPerM: 10,
|
|
292
|
+
cacheReadPerM: 1.25,
|
|
237
293
|
currency: "USD",
|
|
238
294
|
unit: "per_million_tokens"
|
|
239
295
|
}
|
|
@@ -299,8 +355,9 @@ const LLM_REGISTRY = {
|
|
|
299
355
|
models: [],
|
|
300
356
|
// Empty - accepts any model name for custom endpoints
|
|
301
357
|
baseURLSupport: "required",
|
|
302
|
-
supportedFileTypes: ["pdf", "image", "audio"]
|
|
358
|
+
supportedFileTypes: ["pdf", "image", "audio"],
|
|
303
359
|
// Allow all types for custom endpoints - user assumes responsibility for model capabilities
|
|
360
|
+
supportsCustomModels: true
|
|
304
361
|
},
|
|
305
362
|
anthropic: {
|
|
306
363
|
models: [
|
|
@@ -438,6 +495,20 @@ const LLM_REGISTRY = {
|
|
|
438
495
|
},
|
|
439
496
|
google: {
|
|
440
497
|
models: [
|
|
498
|
+
{
|
|
499
|
+
name: "gemini-3-flash-preview",
|
|
500
|
+
displayName: "Gemini 3 Flash Preview",
|
|
501
|
+
maxInputTokens: 1048576,
|
|
502
|
+
default: true,
|
|
503
|
+
supportedFileTypes: ["pdf", "image", "audio"],
|
|
504
|
+
pricing: {
|
|
505
|
+
inputPerM: 0.5,
|
|
506
|
+
outputPerM: 3,
|
|
507
|
+
cacheReadPerM: 0.05,
|
|
508
|
+
currency: "USD",
|
|
509
|
+
unit: "per_million_tokens"
|
|
510
|
+
}
|
|
511
|
+
},
|
|
441
512
|
{
|
|
442
513
|
name: "gemini-3-pro-preview",
|
|
443
514
|
displayName: "Gemini 3 Pro Preview",
|
|
@@ -446,6 +517,7 @@ const LLM_REGISTRY = {
|
|
|
446
517
|
pricing: {
|
|
447
518
|
inputPerM: 2,
|
|
448
519
|
outputPerM: 12,
|
|
520
|
+
cacheReadPerM: 0.2,
|
|
449
521
|
currency: "USD",
|
|
450
522
|
unit: "per_million_tokens"
|
|
451
523
|
}
|
|
@@ -458,6 +530,7 @@ const LLM_REGISTRY = {
|
|
|
458
530
|
pricing: {
|
|
459
531
|
inputPerM: 2,
|
|
460
532
|
outputPerM: 120,
|
|
533
|
+
cacheReadPerM: 0.2,
|
|
461
534
|
currency: "USD",
|
|
462
535
|
unit: "per_million_tokens"
|
|
463
536
|
}
|
|
@@ -466,7 +539,6 @@ const LLM_REGISTRY = {
|
|
|
466
539
|
name: "gemini-2.5-pro",
|
|
467
540
|
displayName: "Gemini 2.5 Pro",
|
|
468
541
|
maxInputTokens: 1048576,
|
|
469
|
-
default: true,
|
|
470
542
|
supportedFileTypes: ["pdf", "image", "audio"],
|
|
471
543
|
pricing: {
|
|
472
544
|
inputPerM: 1.25,
|
|
@@ -484,6 +556,7 @@ const LLM_REGISTRY = {
|
|
|
484
556
|
pricing: {
|
|
485
557
|
inputPerM: 0.3,
|
|
486
558
|
outputPerM: 2.5,
|
|
559
|
+
cacheReadPerM: 0.03,
|
|
487
560
|
currency: "USD",
|
|
488
561
|
unit: "per_million_tokens"
|
|
489
562
|
}
|
|
@@ -523,6 +596,7 @@ const LLM_REGISTRY = {
|
|
|
523
596
|
pricing: {
|
|
524
597
|
inputPerM: 0.075,
|
|
525
598
|
outputPerM: 0.3,
|
|
599
|
+
cacheReadPerM: 0.01875,
|
|
526
600
|
currency: "USD",
|
|
527
601
|
unit: "per_million_tokens"
|
|
528
602
|
}
|
|
@@ -579,6 +653,7 @@ const LLM_REGISTRY = {
|
|
|
579
653
|
pricing: {
|
|
580
654
|
inputPerM: 1,
|
|
581
655
|
outputPerM: 3,
|
|
656
|
+
cacheReadPerM: 0.5,
|
|
582
657
|
currency: "USD",
|
|
583
658
|
unit: "per_million_tokens"
|
|
584
659
|
}
|
|
@@ -767,8 +842,462 @@ const LLM_REGISTRY = {
|
|
|
767
842
|
baseURLSupport: "none",
|
|
768
843
|
supportedFileTypes: []
|
|
769
844
|
// Cohere currently doesn't support file uploads
|
|
845
|
+
},
|
|
846
|
+
// https://openrouter.ai/docs
|
|
847
|
+
// OpenRouter is a unified API gateway providing access to 100+ models from various providers.
|
|
848
|
+
// Model validation is handled dynamically via openrouter-model-registry.ts
|
|
849
|
+
openrouter: {
|
|
850
|
+
models: [],
|
|
851
|
+
// Empty - accepts any model name (validated against OpenRouter's catalog)
|
|
852
|
+
baseURLSupport: "none",
|
|
853
|
+
// Fixed endpoint - baseURL auto-injected in resolver, no user override allowed
|
|
854
|
+
supportedFileTypes: ["pdf", "image", "audio"],
|
|
855
|
+
// Allow all types - user assumes responsibility for model capabilities
|
|
856
|
+
supportsCustomModels: true
|
|
857
|
+
},
|
|
858
|
+
// https://docs.litellm.ai/
|
|
859
|
+
// LiteLLM is an OpenAI-compatible proxy that unifies 100+ LLM providers.
|
|
860
|
+
// User must host their own LiteLLM proxy and provide the baseURL.
|
|
861
|
+
litellm: {
|
|
862
|
+
models: [],
|
|
863
|
+
// Empty - accepts any model name (user's proxy determines available models)
|
|
864
|
+
baseURLSupport: "required",
|
|
865
|
+
// User must provide their LiteLLM proxy URL
|
|
866
|
+
supportedFileTypes: ["pdf", "image", "audio"],
|
|
867
|
+
// Allow all types - user assumes responsibility for model capabilities
|
|
868
|
+
supportsCustomModels: true
|
|
869
|
+
},
|
|
870
|
+
// https://glama.ai/
|
|
871
|
+
// Glama is an OpenAI-compatible gateway providing unified access to multiple LLM providers.
|
|
872
|
+
// Fixed endpoint: https://glama.ai/api/gateway/openai/v1
|
|
873
|
+
glama: {
|
|
874
|
+
models: [],
|
|
875
|
+
// Empty - accepts any model name (format: provider/model e.g., openai/gpt-4o)
|
|
876
|
+
baseURLSupport: "none",
|
|
877
|
+
// Fixed endpoint - baseURL auto-injected
|
|
878
|
+
supportedFileTypes: ["pdf", "image", "audio"],
|
|
879
|
+
// Allow all types - user assumes responsibility for model capabilities
|
|
880
|
+
supportsCustomModels: true
|
|
881
|
+
},
|
|
882
|
+
// https://cloud.google.com/vertex-ai
|
|
883
|
+
// Google Vertex AI - GCP-hosted gateway for Gemini and Claude models
|
|
884
|
+
// Supports both Google's Gemini models and Anthropic's Claude via partnership
|
|
885
|
+
//
|
|
886
|
+
// Setup instructions:
|
|
887
|
+
// 1. Create a Google Cloud account and project
|
|
888
|
+
// 2. Enable the Vertex AI API: gcloud services enable aiplatform.googleapis.com
|
|
889
|
+
// 3. Enable desired Claude models (requires Anthropic Model Garden)
|
|
890
|
+
// 4. Install Google Cloud CLI: https://cloud.google.com/sdk/docs/install
|
|
891
|
+
// 5. Configure ADC: gcloud auth application-default login
|
|
892
|
+
// 6. Set env vars: GOOGLE_VERTEX_PROJECT (required), GOOGLE_VERTEX_LOCATION (optional)
|
|
893
|
+
//
|
|
894
|
+
// TODO: Add dynamic model fetching via publishers.models.list API
|
|
895
|
+
// - Requires: projectId, region, ADC auth
|
|
896
|
+
// - Endpoints: GET projects/{project}/locations/{location}/publishers/{google,anthropic}/models
|
|
897
|
+
// - Note: API doesn't return aliases (e.g., gemini-2.0-flash), only versioned IDs
|
|
898
|
+
// - Docs: https://cloud.google.com/vertex-ai/docs/reference/rest/v1/projects.locations.models/list
|
|
899
|
+
// - Models: https://cloud.google.com/vertex-ai/generative-ai/docs/models
|
|
900
|
+
vertex: {
|
|
901
|
+
models: [
|
|
902
|
+
// Gemini 3 models on Vertex AI (Preview)
|
|
903
|
+
{
|
|
904
|
+
name: "gemini-3-flash-preview",
|
|
905
|
+
displayName: "Gemini 3 Flash (Vertex)",
|
|
906
|
+
maxInputTokens: 1048576,
|
|
907
|
+
default: true,
|
|
908
|
+
supportedFileTypes: ["pdf", "image", "audio"],
|
|
909
|
+
pricing: {
|
|
910
|
+
inputPerM: 0.5,
|
|
911
|
+
outputPerM: 3,
|
|
912
|
+
cacheReadPerM: 0.05,
|
|
913
|
+
currency: "USD",
|
|
914
|
+
unit: "per_million_tokens"
|
|
915
|
+
}
|
|
916
|
+
},
|
|
917
|
+
{
|
|
918
|
+
name: "gemini-3-pro-preview",
|
|
919
|
+
displayName: "Gemini 3 Pro (Vertex)",
|
|
920
|
+
maxInputTokens: 1048576,
|
|
921
|
+
supportedFileTypes: ["pdf", "image", "audio"],
|
|
922
|
+
pricing: {
|
|
923
|
+
inputPerM: 2,
|
|
924
|
+
outputPerM: 12,
|
|
925
|
+
cacheReadPerM: 0.2,
|
|
926
|
+
currency: "USD",
|
|
927
|
+
unit: "per_million_tokens"
|
|
928
|
+
}
|
|
929
|
+
},
|
|
930
|
+
// Gemini 2.x models on Vertex AI
|
|
931
|
+
{
|
|
932
|
+
name: "gemini-2.5-pro",
|
|
933
|
+
displayName: "Gemini 2.5 Pro (Vertex)",
|
|
934
|
+
maxInputTokens: 1048576,
|
|
935
|
+
supportedFileTypes: ["pdf", "image", "audio"],
|
|
936
|
+
pricing: {
|
|
937
|
+
inputPerM: 1.25,
|
|
938
|
+
outputPerM: 10,
|
|
939
|
+
cacheReadPerM: 0.31,
|
|
940
|
+
currency: "USD",
|
|
941
|
+
unit: "per_million_tokens"
|
|
942
|
+
}
|
|
943
|
+
},
|
|
944
|
+
{
|
|
945
|
+
name: "gemini-2.5-flash",
|
|
946
|
+
displayName: "Gemini 2.5 Flash (Vertex)",
|
|
947
|
+
maxInputTokens: 1048576,
|
|
948
|
+
supportedFileTypes: ["pdf", "image", "audio"],
|
|
949
|
+
pricing: {
|
|
950
|
+
inputPerM: 0.15,
|
|
951
|
+
outputPerM: 0.6,
|
|
952
|
+
cacheReadPerM: 0.0375,
|
|
953
|
+
currency: "USD",
|
|
954
|
+
unit: "per_million_tokens"
|
|
955
|
+
}
|
|
956
|
+
},
|
|
957
|
+
{
|
|
958
|
+
name: "gemini-2.0-flash",
|
|
959
|
+
displayName: "Gemini 2.0 Flash (Vertex)",
|
|
960
|
+
maxInputTokens: 1048576,
|
|
961
|
+
supportedFileTypes: ["pdf", "image", "audio"],
|
|
962
|
+
pricing: {
|
|
963
|
+
inputPerM: 0.1,
|
|
964
|
+
outputPerM: 0.4,
|
|
965
|
+
cacheReadPerM: 0.025,
|
|
966
|
+
currency: "USD",
|
|
967
|
+
unit: "per_million_tokens"
|
|
968
|
+
}
|
|
969
|
+
},
|
|
970
|
+
// Claude 4.5 models on Vertex AI (via Anthropic partnership)
|
|
971
|
+
// Note: Claude model IDs use @ suffix format on Vertex
|
|
972
|
+
{
|
|
973
|
+
name: "claude-opus-4-5@20251101",
|
|
974
|
+
displayName: "Claude 4.5 Opus (Vertex)",
|
|
975
|
+
maxInputTokens: 2e5,
|
|
976
|
+
supportedFileTypes: ["pdf", "image"],
|
|
977
|
+
pricing: {
|
|
978
|
+
inputPerM: 5,
|
|
979
|
+
outputPerM: 25,
|
|
980
|
+
cacheWritePerM: 6.25,
|
|
981
|
+
cacheReadPerM: 0.5,
|
|
982
|
+
currency: "USD",
|
|
983
|
+
unit: "per_million_tokens"
|
|
984
|
+
}
|
|
985
|
+
},
|
|
986
|
+
{
|
|
987
|
+
name: "claude-sonnet-4-5@20250929",
|
|
988
|
+
displayName: "Claude 4.5 Sonnet (Vertex)",
|
|
989
|
+
maxInputTokens: 2e5,
|
|
990
|
+
supportedFileTypes: ["pdf", "image"],
|
|
991
|
+
pricing: {
|
|
992
|
+
inputPerM: 3,
|
|
993
|
+
outputPerM: 15,
|
|
994
|
+
cacheWritePerM: 3.75,
|
|
995
|
+
cacheReadPerM: 0.3,
|
|
996
|
+
currency: "USD",
|
|
997
|
+
unit: "per_million_tokens"
|
|
998
|
+
}
|
|
999
|
+
},
|
|
1000
|
+
{
|
|
1001
|
+
name: "claude-haiku-4-5@20251001",
|
|
1002
|
+
displayName: "Claude 4.5 Haiku (Vertex)",
|
|
1003
|
+
maxInputTokens: 2e5,
|
|
1004
|
+
supportedFileTypes: ["pdf", "image"],
|
|
1005
|
+
pricing: {
|
|
1006
|
+
inputPerM: 1,
|
|
1007
|
+
outputPerM: 5,
|
|
1008
|
+
cacheWritePerM: 1.25,
|
|
1009
|
+
cacheReadPerM: 0.1,
|
|
1010
|
+
currency: "USD",
|
|
1011
|
+
unit: "per_million_tokens"
|
|
1012
|
+
}
|
|
1013
|
+
},
|
|
1014
|
+
// Claude 4.1 and 4.0 models on Vertex AI
|
|
1015
|
+
{
|
|
1016
|
+
name: "claude-opus-4-1@20250805",
|
|
1017
|
+
displayName: "Claude 4.1 Opus (Vertex)",
|
|
1018
|
+
maxInputTokens: 2e5,
|
|
1019
|
+
supportedFileTypes: ["pdf", "image"],
|
|
1020
|
+
pricing: {
|
|
1021
|
+
inputPerM: 15,
|
|
1022
|
+
outputPerM: 75,
|
|
1023
|
+
cacheWritePerM: 18.75,
|
|
1024
|
+
cacheReadPerM: 1.5,
|
|
1025
|
+
currency: "USD",
|
|
1026
|
+
unit: "per_million_tokens"
|
|
1027
|
+
}
|
|
1028
|
+
},
|
|
1029
|
+
{
|
|
1030
|
+
name: "claude-opus-4@20250514",
|
|
1031
|
+
displayName: "Claude 4 Opus (Vertex)",
|
|
1032
|
+
maxInputTokens: 2e5,
|
|
1033
|
+
supportedFileTypes: ["pdf", "image"],
|
|
1034
|
+
pricing: {
|
|
1035
|
+
inputPerM: 15,
|
|
1036
|
+
outputPerM: 75,
|
|
1037
|
+
cacheWritePerM: 18.75,
|
|
1038
|
+
cacheReadPerM: 1.5,
|
|
1039
|
+
currency: "USD",
|
|
1040
|
+
unit: "per_million_tokens"
|
|
1041
|
+
}
|
|
1042
|
+
},
|
|
1043
|
+
{
|
|
1044
|
+
name: "claude-sonnet-4@20250514",
|
|
1045
|
+
displayName: "Claude 4 Sonnet (Vertex)",
|
|
1046
|
+
maxInputTokens: 2e5,
|
|
1047
|
+
supportedFileTypes: ["pdf", "image"],
|
|
1048
|
+
pricing: {
|
|
1049
|
+
inputPerM: 3,
|
|
1050
|
+
outputPerM: 15,
|
|
1051
|
+
cacheWritePerM: 3.75,
|
|
1052
|
+
cacheReadPerM: 0.3,
|
|
1053
|
+
currency: "USD",
|
|
1054
|
+
unit: "per_million_tokens"
|
|
1055
|
+
}
|
|
1056
|
+
},
|
|
1057
|
+
// Claude 3.x models on Vertex AI
|
|
1058
|
+
{
|
|
1059
|
+
name: "claude-3-7-sonnet@20250219",
|
|
1060
|
+
displayName: "Claude 3.7 Sonnet (Vertex)",
|
|
1061
|
+
maxInputTokens: 2e5,
|
|
1062
|
+
supportedFileTypes: ["pdf", "image"],
|
|
1063
|
+
pricing: {
|
|
1064
|
+
inputPerM: 3,
|
|
1065
|
+
outputPerM: 15,
|
|
1066
|
+
cacheWritePerM: 3.75,
|
|
1067
|
+
cacheReadPerM: 0.3,
|
|
1068
|
+
currency: "USD",
|
|
1069
|
+
unit: "per_million_tokens"
|
|
1070
|
+
}
|
|
1071
|
+
},
|
|
1072
|
+
{
|
|
1073
|
+
name: "claude-3-5-sonnet-v2@20241022",
|
|
1074
|
+
displayName: "Claude 3.5 Sonnet v2 (Vertex)",
|
|
1075
|
+
maxInputTokens: 2e5,
|
|
1076
|
+
supportedFileTypes: ["pdf", "image"],
|
|
1077
|
+
pricing: {
|
|
1078
|
+
inputPerM: 3,
|
|
1079
|
+
outputPerM: 15,
|
|
1080
|
+
cacheWritePerM: 3.75,
|
|
1081
|
+
cacheReadPerM: 0.3,
|
|
1082
|
+
currency: "USD",
|
|
1083
|
+
unit: "per_million_tokens"
|
|
1084
|
+
}
|
|
1085
|
+
},
|
|
1086
|
+
{
|
|
1087
|
+
name: "claude-3-5-haiku@20241022",
|
|
1088
|
+
displayName: "Claude 3.5 Haiku (Vertex)",
|
|
1089
|
+
maxInputTokens: 2e5,
|
|
1090
|
+
supportedFileTypes: ["pdf", "image"],
|
|
1091
|
+
pricing: {
|
|
1092
|
+
inputPerM: 0.8,
|
|
1093
|
+
outputPerM: 4,
|
|
1094
|
+
cacheWritePerM: 1,
|
|
1095
|
+
cacheReadPerM: 0.08,
|
|
1096
|
+
currency: "USD",
|
|
1097
|
+
unit: "per_million_tokens"
|
|
1098
|
+
}
|
|
1099
|
+
}
|
|
1100
|
+
],
|
|
1101
|
+
baseURLSupport: "none",
|
|
1102
|
+
// Auto-constructed from projectId and region
|
|
1103
|
+
supportedFileTypes: ["pdf", "image", "audio"]
|
|
1104
|
+
},
|
|
1105
|
+
// Amazon Bedrock - AWS-hosted gateway for Claude, Nova, and more
|
|
1106
|
+
// Auth: AWS credentials (env vars) or Bedrock API key (AWS_BEARER_TOKEN_BEDROCK)
|
|
1107
|
+
//
|
|
1108
|
+
// Cross-region inference: Auto-added for anthropic.* and amazon.* models
|
|
1109
|
+
// supportsCustomModels: true allows users to add custom model IDs beyond the fixed list
|
|
1110
|
+
bedrock: {
|
|
1111
|
+
supportsCustomModels: true,
|
|
1112
|
+
models: [
|
|
1113
|
+
// Claude 4.5 models (latest)
|
|
1114
|
+
{
|
|
1115
|
+
name: "anthropic.claude-sonnet-4-5-20250929-v1:0",
|
|
1116
|
+
displayName: "Claude 4.5 Sonnet",
|
|
1117
|
+
maxInputTokens: 2e5,
|
|
1118
|
+
default: true,
|
|
1119
|
+
supportedFileTypes: ["pdf", "image"],
|
|
1120
|
+
pricing: {
|
|
1121
|
+
inputPerM: 3,
|
|
1122
|
+
outputPerM: 15,
|
|
1123
|
+
cacheWritePerM: 3.75,
|
|
1124
|
+
cacheReadPerM: 0.3,
|
|
1125
|
+
currency: "USD",
|
|
1126
|
+
unit: "per_million_tokens"
|
|
1127
|
+
}
|
|
1128
|
+
},
|
|
1129
|
+
{
|
|
1130
|
+
name: "anthropic.claude-haiku-4-5-20251001-v1:0",
|
|
1131
|
+
displayName: "Claude 4.5 Haiku",
|
|
1132
|
+
maxInputTokens: 2e5,
|
|
1133
|
+
supportedFileTypes: ["pdf", "image"],
|
|
1134
|
+
pricing: {
|
|
1135
|
+
inputPerM: 1,
|
|
1136
|
+
outputPerM: 5,
|
|
1137
|
+
cacheWritePerM: 1.25,
|
|
1138
|
+
cacheReadPerM: 0.1,
|
|
1139
|
+
currency: "USD",
|
|
1140
|
+
unit: "per_million_tokens"
|
|
1141
|
+
}
|
|
1142
|
+
},
|
|
1143
|
+
{
|
|
1144
|
+
name: "anthropic.claude-opus-4-5-20251101-v1:0",
|
|
1145
|
+
displayName: "Claude 4.5 Opus",
|
|
1146
|
+
maxInputTokens: 2e5,
|
|
1147
|
+
supportedFileTypes: ["pdf", "image"],
|
|
1148
|
+
pricing: {
|
|
1149
|
+
inputPerM: 5,
|
|
1150
|
+
outputPerM: 25,
|
|
1151
|
+
cacheWritePerM: 6.25,
|
|
1152
|
+
cacheReadPerM: 0.5,
|
|
1153
|
+
currency: "USD",
|
|
1154
|
+
unit: "per_million_tokens"
|
|
1155
|
+
}
|
|
1156
|
+
},
|
|
1157
|
+
// Amazon Nova models
|
|
1158
|
+
{
|
|
1159
|
+
name: "amazon.nova-premier-v1:0",
|
|
1160
|
+
displayName: "Nova Premier",
|
|
1161
|
+
maxInputTokens: 1e6,
|
|
1162
|
+
supportedFileTypes: ["image"],
|
|
1163
|
+
pricing: {
|
|
1164
|
+
inputPerM: 2.5,
|
|
1165
|
+
outputPerM: 12.5,
|
|
1166
|
+
currency: "USD",
|
|
1167
|
+
unit: "per_million_tokens"
|
|
1168
|
+
}
|
|
1169
|
+
},
|
|
1170
|
+
{
|
|
1171
|
+
name: "amazon.nova-pro-v1:0",
|
|
1172
|
+
displayName: "Nova Pro",
|
|
1173
|
+
maxInputTokens: 3e5,
|
|
1174
|
+
supportedFileTypes: ["pdf", "image"],
|
|
1175
|
+
pricing: {
|
|
1176
|
+
inputPerM: 0.8,
|
|
1177
|
+
outputPerM: 3.2,
|
|
1178
|
+
cacheReadPerM: 0.2,
|
|
1179
|
+
currency: "USD",
|
|
1180
|
+
unit: "per_million_tokens"
|
|
1181
|
+
}
|
|
1182
|
+
},
|
|
1183
|
+
{
|
|
1184
|
+
name: "amazon.nova-lite-v1:0",
|
|
1185
|
+
displayName: "Nova Lite",
|
|
1186
|
+
maxInputTokens: 3e5,
|
|
1187
|
+
supportedFileTypes: ["pdf", "image"],
|
|
1188
|
+
pricing: {
|
|
1189
|
+
inputPerM: 0.06,
|
|
1190
|
+
outputPerM: 0.24,
|
|
1191
|
+
cacheReadPerM: 0.015,
|
|
1192
|
+
currency: "USD",
|
|
1193
|
+
unit: "per_million_tokens"
|
|
1194
|
+
}
|
|
1195
|
+
},
|
|
1196
|
+
{
|
|
1197
|
+
name: "amazon.nova-micro-v1:0",
|
|
1198
|
+
displayName: "Nova Micro",
|
|
1199
|
+
maxInputTokens: 128e3,
|
|
1200
|
+
supportedFileTypes: [],
|
|
1201
|
+
pricing: {
|
|
1202
|
+
inputPerM: 0.035,
|
|
1203
|
+
outputPerM: 0.14,
|
|
1204
|
+
cacheReadPerM: 875e-5,
|
|
1205
|
+
currency: "USD",
|
|
1206
|
+
unit: "per_million_tokens"
|
|
1207
|
+
}
|
|
1208
|
+
},
|
|
1209
|
+
// OpenAI GPT-OSS
|
|
1210
|
+
{
|
|
1211
|
+
name: "openai.gpt-oss-120b-1:0",
|
|
1212
|
+
displayName: "GPT-OSS 120B",
|
|
1213
|
+
maxInputTokens: 128e3,
|
|
1214
|
+
supportedFileTypes: [],
|
|
1215
|
+
pricing: {
|
|
1216
|
+
inputPerM: 0.15,
|
|
1217
|
+
outputPerM: 0.6,
|
|
1218
|
+
currency: "USD",
|
|
1219
|
+
unit: "per_million_tokens"
|
|
1220
|
+
}
|
|
1221
|
+
},
|
|
1222
|
+
{
|
|
1223
|
+
name: "openai.gpt-oss-20b-1:0",
|
|
1224
|
+
displayName: "GPT-OSS 20B",
|
|
1225
|
+
maxInputTokens: 128e3,
|
|
1226
|
+
supportedFileTypes: [],
|
|
1227
|
+
pricing: {
|
|
1228
|
+
inputPerM: 0.07,
|
|
1229
|
+
outputPerM: 0.3,
|
|
1230
|
+
currency: "USD",
|
|
1231
|
+
unit: "per_million_tokens"
|
|
1232
|
+
}
|
|
1233
|
+
},
|
|
1234
|
+
// Qwen
|
|
1235
|
+
{
|
|
1236
|
+
name: "qwen.qwen3-coder-30b-a3b-v1:0",
|
|
1237
|
+
displayName: "Qwen3 Coder 30B",
|
|
1238
|
+
maxInputTokens: 262144,
|
|
1239
|
+
supportedFileTypes: [],
|
|
1240
|
+
pricing: {
|
|
1241
|
+
inputPerM: 0.15,
|
|
1242
|
+
outputPerM: 0.6,
|
|
1243
|
+
currency: "USD",
|
|
1244
|
+
unit: "per_million_tokens"
|
|
1245
|
+
}
|
|
1246
|
+
},
|
|
1247
|
+
{
|
|
1248
|
+
name: "qwen.qwen3-coder-480b-a35b-v1:0",
|
|
1249
|
+
displayName: "Qwen3 Coder 480B",
|
|
1250
|
+
maxInputTokens: 262144,
|
|
1251
|
+
supportedFileTypes: [],
|
|
1252
|
+
pricing: {
|
|
1253
|
+
inputPerM: 0.22,
|
|
1254
|
+
outputPerM: 1.8,
|
|
1255
|
+
currency: "USD",
|
|
1256
|
+
unit: "per_million_tokens"
|
|
1257
|
+
}
|
|
1258
|
+
}
|
|
1259
|
+
],
|
|
1260
|
+
baseURLSupport: "none",
|
|
1261
|
+
// Auto-constructed from region
|
|
1262
|
+
supportedFileTypes: ["pdf", "image"]
|
|
1263
|
+
},
|
|
1264
|
+
// Native local model execution via node-llama-cpp
|
|
1265
|
+
// Runs GGUF models directly on the machine using Metal/CUDA/Vulkan acceleration
|
|
1266
|
+
// Models are downloaded from HuggingFace and stored in ~/.dexto/models/
|
|
1267
|
+
local: {
|
|
1268
|
+
models: [],
|
|
1269
|
+
// Populated dynamically from local model registry
|
|
1270
|
+
baseURLSupport: "none",
|
|
1271
|
+
// No external server needed
|
|
1272
|
+
supportedFileTypes: ["image"],
|
|
1273
|
+
// Vision support depends on model capabilities
|
|
1274
|
+
supportsCustomModels: true
|
|
1275
|
+
// Allow any GGUF model path
|
|
1276
|
+
},
|
|
1277
|
+
// Ollama server integration
|
|
1278
|
+
// Uses Ollama's OpenAI-compatible API for local model inference
|
|
1279
|
+
// Requires Ollama to be installed and running (default: http://localhost:11434)
|
|
1280
|
+
ollama: {
|
|
1281
|
+
models: [],
|
|
1282
|
+
// Populated dynamically from Ollama API
|
|
1283
|
+
baseURLSupport: "optional",
|
|
1284
|
+
// Default: http://localhost:11434, can be customized
|
|
1285
|
+
supportedFileTypes: ["image"],
|
|
1286
|
+
// Vision support depends on model
|
|
1287
|
+
supportsCustomModels: true
|
|
1288
|
+
// Accept any Ollama model name
|
|
770
1289
|
}
|
|
1290
|
+
// TODO: Add 'dexto' provider (similar to openrouter, uses https://api.dexto.ai/v1)
|
|
771
1291
|
};
|
|
1292
|
+
function stripBedrockRegionPrefix(model) {
|
|
1293
|
+
if (model.startsWith("eu.") || model.startsWith("us.")) {
|
|
1294
|
+
return model.slice(3);
|
|
1295
|
+
}
|
|
1296
|
+
if (model.startsWith("global.")) {
|
|
1297
|
+
return model.slice(7);
|
|
1298
|
+
}
|
|
1299
|
+
return model;
|
|
1300
|
+
}
|
|
772
1301
|
function getDefaultModelForProvider(provider) {
|
|
773
1302
|
const providerInfo = LLM_REGISTRY[provider];
|
|
774
1303
|
return providerInfo.models.find((m) => m.default)?.name || null;
|
|
@@ -782,7 +1311,8 @@ function getSupportedModels(provider) {
|
|
|
782
1311
|
}
|
|
783
1312
|
function getMaxInputTokensForModel(provider, model, logger) {
|
|
784
1313
|
const providerInfo = LLM_REGISTRY[provider];
|
|
785
|
-
const
|
|
1314
|
+
const normalizedModel = stripBedrockRegionPrefix(model).toLowerCase();
|
|
1315
|
+
const modelInfo = providerInfo.models.find((m) => m.name.toLowerCase() === normalizedModel);
|
|
786
1316
|
if (!modelInfo) {
|
|
787
1317
|
const supportedModels = getSupportedModels(provider).join(", ");
|
|
788
1318
|
logger?.error(
|
|
@@ -795,13 +1325,14 @@ function getMaxInputTokensForModel(provider, model, logger) {
|
|
|
795
1325
|
}
|
|
796
1326
|
function isValidProviderModel(provider, model) {
|
|
797
1327
|
const providerInfo = LLM_REGISTRY[provider];
|
|
798
|
-
|
|
1328
|
+
const normalizedModel = stripBedrockRegionPrefix(model).toLowerCase();
|
|
1329
|
+
return providerInfo.models.some((m) => m.name.toLowerCase() === normalizedModel);
|
|
799
1330
|
}
|
|
800
1331
|
function getProviderFromModel(model) {
|
|
801
|
-
const
|
|
1332
|
+
const normalizedModel = stripBedrockRegionPrefix(model).toLowerCase();
|
|
802
1333
|
for (const provider of LLM_PROVIDERS) {
|
|
803
1334
|
const info = LLM_REGISTRY[provider];
|
|
804
|
-
if (info.models.some((m) => m.name.toLowerCase() ===
|
|
1335
|
+
if (info.models.some((m) => m.name.toLowerCase() === normalizedModel)) {
|
|
805
1336
|
return provider;
|
|
806
1337
|
}
|
|
807
1338
|
}
|
|
@@ -822,12 +1353,34 @@ function acceptsAnyModel(provider) {
|
|
|
822
1353
|
const providerInfo = LLM_REGISTRY[provider];
|
|
823
1354
|
return providerInfo.models.length === 0;
|
|
824
1355
|
}
|
|
1356
|
+
function supportsCustomModels(provider) {
|
|
1357
|
+
const providerInfo = LLM_REGISTRY[provider];
|
|
1358
|
+
return providerInfo.supportsCustomModels === true;
|
|
1359
|
+
}
|
|
1360
|
+
const API_KEY_OPTIONAL_PROVIDERS = /* @__PURE__ */ new Set([
|
|
1361
|
+
"local",
|
|
1362
|
+
// Native node-llama-cpp execution - no auth needed
|
|
1363
|
+
"ollama",
|
|
1364
|
+
// Ollama server - no auth needed by default
|
|
1365
|
+
"openai-compatible",
|
|
1366
|
+
// vLLM, LocalAI - often no auth needed
|
|
1367
|
+
"litellm",
|
|
1368
|
+
// Self-hosted proxy - handles auth internally
|
|
1369
|
+
"vertex",
|
|
1370
|
+
// Uses Google Cloud ADC (Application Default Credentials)
|
|
1371
|
+
"bedrock"
|
|
1372
|
+
// Uses AWS credentials (access key + secret or IAM role)
|
|
1373
|
+
]);
|
|
1374
|
+
function requiresApiKey(provider) {
|
|
1375
|
+
return !API_KEY_OPTIONAL_PROVIDERS.has(provider);
|
|
1376
|
+
}
|
|
825
1377
|
function getSupportedFileTypesForModel(provider, model) {
|
|
826
1378
|
const providerInfo = LLM_REGISTRY[provider];
|
|
827
1379
|
if (acceptsAnyModel(provider)) {
|
|
828
1380
|
return providerInfo.supportedFileTypes;
|
|
829
1381
|
}
|
|
830
|
-
const
|
|
1382
|
+
const normalizedModel = stripBedrockRegionPrefix(model).toLowerCase();
|
|
1383
|
+
const modelInfo = providerInfo.models.find((m) => m.name.toLowerCase() === normalizedModel);
|
|
831
1384
|
if (!modelInfo) {
|
|
832
1385
|
throw LLMError.unknownModel(provider, model);
|
|
833
1386
|
}
|
|
@@ -906,6 +1459,19 @@ function getEffectiveMaxInputTokens(config, logger) {
|
|
|
906
1459
|
}
|
|
907
1460
|
}
|
|
908
1461
|
}
|
|
1462
|
+
if (config.provider === "openrouter") {
|
|
1463
|
+
const contextLength = getOpenRouterModelContextLength(config.model);
|
|
1464
|
+
if (contextLength !== null) {
|
|
1465
|
+
logger.debug(
|
|
1466
|
+
`Using maxInputTokens from OpenRouter registry for ${config.model}: ${contextLength}`
|
|
1467
|
+
);
|
|
1468
|
+
return contextLength;
|
|
1469
|
+
}
|
|
1470
|
+
logger.warn(
|
|
1471
|
+
`OpenRouter model ${config.model} not found in cache, defaulting to ${DEFAULT_MAX_INPUT_TOKENS} tokens`
|
|
1472
|
+
);
|
|
1473
|
+
return DEFAULT_MAX_INPUT_TOKENS;
|
|
1474
|
+
}
|
|
909
1475
|
if (config.baseURL) {
|
|
910
1476
|
logger.warn(
|
|
911
1477
|
`baseURL is set but maxInputTokens is missing. Defaulting to ${DEFAULT_MAX_INPUT_TOKENS}. Provide 'maxInputTokens' in configuration to avoid default fallback.`
|
|
@@ -930,6 +1496,12 @@ function getEffectiveMaxInputTokens(config, logger) {
|
|
|
930
1496
|
return registryMaxInputTokens;
|
|
931
1497
|
} catch (error) {
|
|
932
1498
|
if (error instanceof DextoRuntimeError && error.code === LLMErrorCode.MODEL_UNKNOWN) {
|
|
1499
|
+
if (supportsCustomModels(config.provider)) {
|
|
1500
|
+
logger.debug(
|
|
1501
|
+
`Custom model ${config.model} not in ${config.provider} registry, defaulting to ${DEFAULT_MAX_INPUT_TOKENS} tokens`
|
|
1502
|
+
);
|
|
1503
|
+
return DEFAULT_MAX_INPUT_TOKENS;
|
|
1504
|
+
}
|
|
933
1505
|
logger.error(
|
|
934
1506
|
`Registry lookup failed for ${config.provider}/${config.model}: ${error.message}. Effective maxInputTokens cannot be determined.`
|
|
935
1507
|
);
|
|
@@ -945,7 +1517,8 @@ function getModelPricing(provider, model) {
|
|
|
945
1517
|
if (acceptsAnyModel(provider)) {
|
|
946
1518
|
return void 0;
|
|
947
1519
|
}
|
|
948
|
-
const
|
|
1520
|
+
const normalizedModel = stripBedrockRegionPrefix(model).toLowerCase();
|
|
1521
|
+
const modelInfo = providerInfo.models.find((m) => m.name.toLowerCase() === normalizedModel);
|
|
949
1522
|
return modelInfo?.pricing;
|
|
950
1523
|
}
|
|
951
1524
|
function getModelDisplayName(model, provider) {
|
|
@@ -959,9 +1532,23 @@ function getModelDisplayName(model, provider) {
|
|
|
959
1532
|
if (!providerInfo || acceptsAnyModel(resolvedProvider)) {
|
|
960
1533
|
return model;
|
|
961
1534
|
}
|
|
962
|
-
const
|
|
1535
|
+
const normalizedModel = stripBedrockRegionPrefix(model).toLowerCase();
|
|
1536
|
+
const modelInfo = providerInfo.models.find((m) => m.name.toLowerCase() === normalizedModel);
|
|
963
1537
|
return modelInfo?.displayName ?? model;
|
|
964
1538
|
}
|
|
1539
|
+
function isReasoningCapableModel(model, provider) {
|
|
1540
|
+
const modelLower = model.toLowerCase();
|
|
1541
|
+
if (modelLower.includes("codex")) {
|
|
1542
|
+
return true;
|
|
1543
|
+
}
|
|
1544
|
+
if (modelLower.startsWith("o1") || modelLower.startsWith("o3") || modelLower.startsWith("o4")) {
|
|
1545
|
+
return true;
|
|
1546
|
+
}
|
|
1547
|
+
if (modelLower.includes("gpt-5") || modelLower.includes("gpt-5.1") || modelLower.includes("gpt-5.2")) {
|
|
1548
|
+
return true;
|
|
1549
|
+
}
|
|
1550
|
+
return false;
|
|
1551
|
+
}
|
|
965
1552
|
function calculateCost(usage, pricing) {
|
|
966
1553
|
const inputCost = (usage.inputTokens ?? 0) * pricing.inputPerM / 1e6;
|
|
967
1554
|
const outputCost = (usage.outputTokens ?? 0) * pricing.outputPerM / 1e6;
|
|
@@ -987,9 +1574,13 @@ export {
|
|
|
987
1574
|
getSupportedFileTypesForModel,
|
|
988
1575
|
getSupportedModels,
|
|
989
1576
|
getSupportedProviders,
|
|
1577
|
+
isReasoningCapableModel,
|
|
990
1578
|
isValidProviderModel,
|
|
991
1579
|
modelSupportsFileType,
|
|
1580
|
+
requiresApiKey,
|
|
992
1581
|
requiresBaseURL,
|
|
1582
|
+
stripBedrockRegionPrefix,
|
|
993
1583
|
supportsBaseURL,
|
|
1584
|
+
supportsCustomModels,
|
|
994
1585
|
validateModelFileSupport
|
|
995
1586
|
};
|