@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/errors.js
CHANGED
|
@@ -24,6 +24,15 @@ class LLMError {
|
|
|
24
24
|
{ provider }
|
|
25
25
|
);
|
|
26
26
|
}
|
|
27
|
+
static missingConfig(provider, configName) {
|
|
28
|
+
return new DextoRuntimeError(
|
|
29
|
+
LLMErrorCode.CONFIG_MISSING,
|
|
30
|
+
ErrorScope.LLM,
|
|
31
|
+
ErrorType.USER,
|
|
32
|
+
`Provider '${provider}' requires ${configName}`,
|
|
33
|
+
{ provider, configName }
|
|
34
|
+
);
|
|
35
|
+
}
|
|
27
36
|
static unsupportedProvider(provider) {
|
|
28
37
|
const availableProviders = getSupportedProviders();
|
|
29
38
|
return new DextoRuntimeError(
|
|
@@ -34,6 +43,21 @@ class LLMError {
|
|
|
34
43
|
{ provider, availableProviders }
|
|
35
44
|
);
|
|
36
45
|
}
|
|
46
|
+
/**
|
|
47
|
+
* Runtime error when API key is missing for a provider that requires it.
|
|
48
|
+
* This occurs when relaxed validation allowed the app to start without an API key,
|
|
49
|
+
* and the user then tries to use the LLM functionality.
|
|
50
|
+
*/
|
|
51
|
+
static apiKeyMissing(provider, envVar) {
|
|
52
|
+
return new DextoRuntimeError(
|
|
53
|
+
LLMErrorCode.API_KEY_MISSING,
|
|
54
|
+
ErrorScope.LLM,
|
|
55
|
+
ErrorType.USER,
|
|
56
|
+
`API key required for provider '${provider}'`,
|
|
57
|
+
{ provider, envVar },
|
|
58
|
+
`Set the ${envVar} environment variable or configure it in Settings`
|
|
59
|
+
);
|
|
60
|
+
}
|
|
37
61
|
static modelProviderUnknown(model) {
|
|
38
62
|
const availableProviders = getSupportedProviders();
|
|
39
63
|
return new DextoRuntimeError(
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var provider_options_exports = {};
|
|
20
|
+
__export(provider_options_exports, {
|
|
21
|
+
buildProviderOptions: () => buildProviderOptions,
|
|
22
|
+
getDefaultReasoningEffort: () => getDefaultReasoningEffort
|
|
23
|
+
});
|
|
24
|
+
module.exports = __toCommonJS(provider_options_exports);
|
|
25
|
+
var import_registry = require("../registry.js");
|
|
26
|
+
function buildProviderOptions(config) {
|
|
27
|
+
const { provider, model, reasoningEffort } = config;
|
|
28
|
+
const modelLower = model.toLowerCase();
|
|
29
|
+
if (provider === "anthropic") {
|
|
30
|
+
return {
|
|
31
|
+
anthropic: {
|
|
32
|
+
// Enable prompt caching - saves money and improves latency
|
|
33
|
+
cacheControl: { type: "ephemeral" },
|
|
34
|
+
// Stream reasoning/thinking content when model supports it
|
|
35
|
+
sendReasoning: true
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
if (provider === "bedrock" && modelLower.includes("claude")) {
|
|
40
|
+
return {
|
|
41
|
+
bedrock: {
|
|
42
|
+
cacheControl: { type: "ephemeral" },
|
|
43
|
+
sendReasoning: true
|
|
44
|
+
}
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
if (provider === "vertex" && modelLower.includes("claude")) {
|
|
48
|
+
return {
|
|
49
|
+
"vertex-anthropic": {
|
|
50
|
+
cacheControl: { type: "ephemeral" },
|
|
51
|
+
sendReasoning: true
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
if (provider === "google" || provider === "vertex" && !modelLower.includes("claude")) {
|
|
56
|
+
return {
|
|
57
|
+
google: {
|
|
58
|
+
thinkingConfig: {
|
|
59
|
+
// Include thoughts in the response for transparency
|
|
60
|
+
includeThoughts: true
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
if (provider === "openai") {
|
|
66
|
+
const effectiveEffort = reasoningEffort ?? getDefaultReasoningEffort(model);
|
|
67
|
+
if (effectiveEffort) {
|
|
68
|
+
return {
|
|
69
|
+
openai: {
|
|
70
|
+
reasoningEffort: effectiveEffort
|
|
71
|
+
}
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
return void 0;
|
|
76
|
+
}
|
|
77
|
+
function getDefaultReasoningEffort(model) {
|
|
78
|
+
if ((0, import_registry.isReasoningCapableModel)(model)) {
|
|
79
|
+
return "medium";
|
|
80
|
+
}
|
|
81
|
+
return void 0;
|
|
82
|
+
}
|
|
83
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
84
|
+
0 && (module.exports = {
|
|
85
|
+
buildProviderOptions,
|
|
86
|
+
getDefaultReasoningEffort
|
|
87
|
+
});
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Provider-specific options builder for Vercel AI SDK's streamText/generateText.
|
|
3
|
+
*
|
|
4
|
+
* Centralizes provider-specific configuration that requires explicit opt-in:
|
|
5
|
+
* - Anthropic: cacheControl for prompt caching, sendReasoning for extended thinking
|
|
6
|
+
* - Bedrock/Vertex Claude: Same as Anthropic (Claude models on these platforms)
|
|
7
|
+
* - Google: thinkingConfig for Gemini thinking models
|
|
8
|
+
* - OpenAI: reasoningEffort for o1/o3/codex/gpt-5 models
|
|
9
|
+
*
|
|
10
|
+
* Caching notes:
|
|
11
|
+
* - Anthropic: Requires explicit cacheControl option (we enable it)
|
|
12
|
+
* - OpenAI: Automatic for prompts ≥1024 tokens (no config needed)
|
|
13
|
+
* - Google: Implicit caching automatic for Gemini 2.5+ (≥1024 tokens for Flash,
|
|
14
|
+
* ≥2048 for Pro). Explicit caching requires pre-created cachedContent IDs.
|
|
15
|
+
* All providers return cached token counts in the response (cachedInputTokens).
|
|
16
|
+
*/
|
|
17
|
+
import type { LLMProvider } from '../types.js';
|
|
18
|
+
export type ReasoningEffort = 'none' | 'minimal' | 'low' | 'medium' | 'high' | 'xhigh';
|
|
19
|
+
export interface ProviderOptionsConfig {
|
|
20
|
+
provider: LLMProvider;
|
|
21
|
+
model: string;
|
|
22
|
+
reasoningEffort?: ReasoningEffort | undefined;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Build provider-specific options for streamText/generateText.
|
|
26
|
+
*
|
|
27
|
+
* @param config Provider, model, and optional reasoning effort configuration
|
|
28
|
+
* @returns Provider options object or undefined if no special options needed
|
|
29
|
+
*/
|
|
30
|
+
export declare function buildProviderOptions(config: ProviderOptionsConfig): Record<string, Record<string, unknown>> | undefined;
|
|
31
|
+
/**
|
|
32
|
+
* Determine the default reasoning effort for OpenAI models.
|
|
33
|
+
*
|
|
34
|
+
* OpenAI reasoning effort levels (from lowest to highest):
|
|
35
|
+
* - 'none': No reasoning, fastest responses
|
|
36
|
+
* - 'low': Minimal reasoning, fast responses
|
|
37
|
+
* - 'medium': Balanced reasoning (OpenAI's recommended daily driver)
|
|
38
|
+
* - 'high': Thorough reasoning for complex tasks
|
|
39
|
+
* - 'xhigh': Extra high reasoning for quality-critical, non-latency-sensitive tasks
|
|
40
|
+
*
|
|
41
|
+
* Default strategy:
|
|
42
|
+
* - Reasoning-capable models (codex, o1, o3, gpt-5): 'medium' - OpenAI's recommended default
|
|
43
|
+
* - Other models: undefined (no reasoning effort needed)
|
|
44
|
+
*
|
|
45
|
+
* @param model The model name
|
|
46
|
+
* @returns Reasoning effort level or undefined if not applicable
|
|
47
|
+
*/
|
|
48
|
+
export declare function getDefaultReasoningEffort(model: string): Exclude<ReasoningEffort, 'none'> | undefined;
|
|
49
|
+
//# sourceMappingURL=provider-options.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider-options.d.ts","sourceRoot":"","sources":["../../../src/llm/executor/provider-options.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAG/C,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,SAAS,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC;AAEvF,MAAM,WAAW,qBAAqB;IAClC,QAAQ,EAAE,WAAW,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,eAAe,CAAC,EAAE,eAAe,GAAG,SAAS,CAAC;CACjD;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAChC,MAAM,EAAE,qBAAqB,GAC9B,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,SAAS,CAgErD;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,yBAAyB,CACrC,KAAK,EAAE,MAAM,GACd,OAAO,CAAC,eAAe,EAAE,MAAM,CAAC,GAAG,SAAS,CAS9C"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import "../../chunk-PTJYTZNU.js";
|
|
2
|
+
import { isReasoningCapableModel } from "../registry.js";
|
|
3
|
+
function buildProviderOptions(config) {
|
|
4
|
+
const { provider, model, reasoningEffort } = config;
|
|
5
|
+
const modelLower = model.toLowerCase();
|
|
6
|
+
if (provider === "anthropic") {
|
|
7
|
+
return {
|
|
8
|
+
anthropic: {
|
|
9
|
+
// Enable prompt caching - saves money and improves latency
|
|
10
|
+
cacheControl: { type: "ephemeral" },
|
|
11
|
+
// Stream reasoning/thinking content when model supports it
|
|
12
|
+
sendReasoning: true
|
|
13
|
+
}
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
if (provider === "bedrock" && modelLower.includes("claude")) {
|
|
17
|
+
return {
|
|
18
|
+
bedrock: {
|
|
19
|
+
cacheControl: { type: "ephemeral" },
|
|
20
|
+
sendReasoning: true
|
|
21
|
+
}
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
if (provider === "vertex" && modelLower.includes("claude")) {
|
|
25
|
+
return {
|
|
26
|
+
"vertex-anthropic": {
|
|
27
|
+
cacheControl: { type: "ephemeral" },
|
|
28
|
+
sendReasoning: true
|
|
29
|
+
}
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
if (provider === "google" || provider === "vertex" && !modelLower.includes("claude")) {
|
|
33
|
+
return {
|
|
34
|
+
google: {
|
|
35
|
+
thinkingConfig: {
|
|
36
|
+
// Include thoughts in the response for transparency
|
|
37
|
+
includeThoughts: true
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
if (provider === "openai") {
|
|
43
|
+
const effectiveEffort = reasoningEffort ?? getDefaultReasoningEffort(model);
|
|
44
|
+
if (effectiveEffort) {
|
|
45
|
+
return {
|
|
46
|
+
openai: {
|
|
47
|
+
reasoningEffort: effectiveEffort
|
|
48
|
+
}
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
return void 0;
|
|
53
|
+
}
|
|
54
|
+
function getDefaultReasoningEffort(model) {
|
|
55
|
+
if (isReasoningCapableModel(model)) {
|
|
56
|
+
return "medium";
|
|
57
|
+
}
|
|
58
|
+
return void 0;
|
|
59
|
+
}
|
|
60
|
+
export {
|
|
61
|
+
buildProviderOptions,
|
|
62
|
+
getDefaultReasoningEffort
|
|
63
|
+
};
|
|
@@ -88,22 +88,30 @@ class StreamProcessor {
|
|
|
88
88
|
});
|
|
89
89
|
}
|
|
90
90
|
break;
|
|
91
|
-
case "tool-call":
|
|
91
|
+
case "tool-call": {
|
|
92
92
|
if (!this.assistantMessageId) {
|
|
93
93
|
this.assistantMessageId = await this.createAssistantMessage();
|
|
94
94
|
}
|
|
95
|
-
|
|
95
|
+
const toolCall = {
|
|
96
96
|
id: event.toolCallId,
|
|
97
97
|
type: "function",
|
|
98
98
|
function: {
|
|
99
99
|
name: event.toolName,
|
|
100
100
|
arguments: JSON.stringify(event.input)
|
|
101
101
|
}
|
|
102
|
-
}
|
|
102
|
+
};
|
|
103
|
+
const shouldPersistProviderMetadata = this.config.provider === "google" || this.config.provider === "vertex";
|
|
104
|
+
if (shouldPersistProviderMetadata && event.providerMetadata) {
|
|
105
|
+
toolCall.providerOptions = {
|
|
106
|
+
...event.providerMetadata
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
await this.contextManager.addToolCall(this.assistantMessageId, toolCall);
|
|
103
110
|
this.pendingToolCalls.set(event.toolCallId, {
|
|
104
111
|
toolName: event.toolName
|
|
105
112
|
});
|
|
106
113
|
break;
|
|
114
|
+
}
|
|
107
115
|
case "tool-result": {
|
|
108
116
|
const rawResult = event.output;
|
|
109
117
|
this.logger.debug("Tool result received", {
|
|
@@ -150,8 +158,10 @@ class StreamProcessor {
|
|
|
150
158
|
}
|
|
151
159
|
case "finish-step":
|
|
152
160
|
if (event.usage) {
|
|
153
|
-
const
|
|
154
|
-
event.providerMetadata?.["bedrock"]
|
|
161
|
+
const anthropicMeta = event.providerMetadata?.["anthropic"];
|
|
162
|
+
const bedrockMeta = event.providerMetadata?.["bedrock"];
|
|
163
|
+
const cacheWriteTokens = anthropicMeta?.["cacheCreationInputTokens"] ?? bedrockMeta?.usage?.["cacheWriteInputTokens"] ?? 0;
|
|
164
|
+
const cacheReadTokens = anthropicMeta?.["cacheReadInputTokens"] ?? bedrockMeta?.usage?.["cacheReadInputTokens"] ?? event.usage.cachedInputTokens ?? 0;
|
|
155
165
|
this.actualTokens = {
|
|
156
166
|
inputTokens: (this.actualTokens.inputTokens ?? 0) + (event.usage.inputTokens ?? 0),
|
|
157
167
|
outputTokens: (this.actualTokens.outputTokens ?? 0) + (event.usage.outputTokens ?? 0),
|
|
@@ -160,16 +170,17 @@ class StreamProcessor {
|
|
|
160
170
|
reasoningTokens: (this.actualTokens.reasoningTokens ?? 0) + event.usage.reasoningTokens
|
|
161
171
|
},
|
|
162
172
|
// Cache tokens
|
|
163
|
-
cacheReadTokens: (this.actualTokens.cacheReadTokens ?? 0) +
|
|
173
|
+
cacheReadTokens: (this.actualTokens.cacheReadTokens ?? 0) + cacheReadTokens,
|
|
164
174
|
cacheWriteTokens: (this.actualTokens.cacheWriteTokens ?? 0) + cacheWriteTokens
|
|
165
175
|
};
|
|
166
176
|
}
|
|
167
177
|
break;
|
|
168
178
|
case "finish": {
|
|
169
179
|
this.finishReason = event.finishReason;
|
|
170
|
-
const
|
|
180
|
+
const cacheReadTokens = this.actualTokens.cacheReadTokens ?? event.totalUsage.cachedInputTokens ?? 0;
|
|
181
|
+
const cacheWriteTokens = this.actualTokens.cacheWriteTokens ?? 0;
|
|
171
182
|
const providerExcludesCached = this.config.provider === "anthropic" || this.config.provider === "bedrock";
|
|
172
|
-
const adjustedInputTokens = providerExcludesCached ? event.totalUsage.inputTokens ?? 0 : (event.totalUsage.inputTokens ?? 0) -
|
|
183
|
+
const adjustedInputTokens = providerExcludesCached ? event.totalUsage.inputTokens ?? 0 : (event.totalUsage.inputTokens ?? 0) - cacheReadTokens;
|
|
173
184
|
const usage = {
|
|
174
185
|
inputTokens: adjustedInputTokens,
|
|
175
186
|
outputTokens: event.totalUsage.outputTokens ?? 0,
|
|
@@ -178,9 +189,9 @@ class StreamProcessor {
|
|
|
178
189
|
...event.totalUsage.reasoningTokens !== void 0 && {
|
|
179
190
|
reasoningTokens: event.totalUsage.reasoningTokens
|
|
180
191
|
},
|
|
181
|
-
// Cache tokens
|
|
182
|
-
cacheReadTokens
|
|
183
|
-
cacheWriteTokens
|
|
192
|
+
// Cache tokens from accumulated finish-step events or totalUsage fallback
|
|
193
|
+
cacheReadTokens,
|
|
194
|
+
cacheWriteTokens
|
|
184
195
|
};
|
|
185
196
|
this.actualTokens = usage;
|
|
186
197
|
this.logger.info("LLM response complete", {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stream-processor.d.ts","sourceRoot":"","sources":["../../../src/llm/executor/stream-processor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,IAAI,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAmB,MAAM,uBAAuB,CAAC;AACzE,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAE3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAGnD,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAExD,OAAO,EAAE,WAAW,EAAc,MAAM,aAAa,CAAC;AAEtD,MAAM,WAAW,qBAAqB;IAClC,QAAQ,EAAE,WAAW,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;CACjB;AAED,qBAAa,eAAe;IAwBpB,OAAO,CAAC,cAAc;IACtB,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,eAAe;IACvB,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,MAAM;IAEd,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,gBAAgB,CAAC;IA9B7B,OAAO,CAAC,kBAAkB,CAAuB;IACjD,OAAO,CAAC,YAAY,CAAmE;IACvF,OAAO,CAAC,YAAY,CAA8B;IAClD,OAAO,CAAC,aAAa,CAAc;IACnC,OAAO,CAAC,eAAe,CAAc;IACrC,OAAO,CAAC,MAAM,CAAe;IAC7B;;;OAGG;IACH,OAAO,CAAC,gBAAgB,CAAgD;IAExE;;;;;;;;;OASG;gBAES,cAAc,EAAE,cAAc,EAC9B,QAAQ,EAAE,eAAe,EACzB,eAAe,EAAE,eAAe,EAChC,WAAW,EAAE,WAAW,EACxB,MAAM,EAAE,qBAAqB,EACrC,MAAM,EAAE,YAAY,EACZ,SAAS,GAAE,OAAc,EACzB,gBAAgB,CAAC,EAAE,GAAG,CAC1B,MAAM,EACN;QAAE,eAAe,EAAE,OAAO,CAAC;QAAC,cAAc,CAAC,EAAE,UAAU,GAAG,UAAU,CAAA;KAAE,CACzE,YAAA;IAKC,OAAO,CACT,QAAQ,EAAE,MAAM,gBAAgB,CAAC,aAAa,EAAE,OAAO,CAAC,GACzD,OAAO,CAAC,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"stream-processor.d.ts","sourceRoot":"","sources":["../../../src/llm/executor/stream-processor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,IAAI,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAmB,MAAM,uBAAuB,CAAC;AACzE,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAE3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAGnD,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAExD,OAAO,EAAE,WAAW,EAAc,MAAM,aAAa,CAAC;AAEtD,MAAM,WAAW,qBAAqB;IAClC,QAAQ,EAAE,WAAW,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;CACjB;AAED,qBAAa,eAAe;IAwBpB,OAAO,CAAC,cAAc;IACtB,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,eAAe;IACvB,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,MAAM;IAEd,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,gBAAgB,CAAC;IA9B7B,OAAO,CAAC,kBAAkB,CAAuB;IACjD,OAAO,CAAC,YAAY,CAAmE;IACvF,OAAO,CAAC,YAAY,CAA8B;IAClD,OAAO,CAAC,aAAa,CAAc;IACnC,OAAO,CAAC,eAAe,CAAc;IACrC,OAAO,CAAC,MAAM,CAAe;IAC7B;;;OAGG;IACH,OAAO,CAAC,gBAAgB,CAAgD;IAExE;;;;;;;;;OASG;gBAES,cAAc,EAAE,cAAc,EAC9B,QAAQ,EAAE,eAAe,EACzB,eAAe,EAAE,eAAe,EAChC,WAAW,EAAE,WAAW,EACxB,MAAM,EAAE,qBAAqB,EACrC,MAAM,EAAE,YAAY,EACZ,SAAS,GAAE,OAAc,EACzB,gBAAgB,CAAC,EAAE,GAAG,CAC1B,MAAM,EACN;QAAE,eAAe,EAAE,OAAO,CAAC;QAAC,cAAc,CAAC,EAAE,UAAU,GAAG,UAAU,CAAA;KAAE,CACzE,YAAA;IAKC,OAAO,CACT,QAAQ,EAAE,MAAM,gBAAgB,CAAC,aAAa,EAAE,OAAO,CAAC,GACzD,OAAO,CAAC,qBAAqB,CAAC;YAmanB,sBAAsB;YAKtB,gBAAgB;IAO9B;;;;OAIG;YACW,2BAA2B;CAmC5C"}
|
|
@@ -66,22 +66,30 @@ class StreamProcessor {
|
|
|
66
66
|
});
|
|
67
67
|
}
|
|
68
68
|
break;
|
|
69
|
-
case "tool-call":
|
|
69
|
+
case "tool-call": {
|
|
70
70
|
if (!this.assistantMessageId) {
|
|
71
71
|
this.assistantMessageId = await this.createAssistantMessage();
|
|
72
72
|
}
|
|
73
|
-
|
|
73
|
+
const toolCall = {
|
|
74
74
|
id: event.toolCallId,
|
|
75
75
|
type: "function",
|
|
76
76
|
function: {
|
|
77
77
|
name: event.toolName,
|
|
78
78
|
arguments: JSON.stringify(event.input)
|
|
79
79
|
}
|
|
80
|
-
}
|
|
80
|
+
};
|
|
81
|
+
const shouldPersistProviderMetadata = this.config.provider === "google" || this.config.provider === "vertex";
|
|
82
|
+
if (shouldPersistProviderMetadata && event.providerMetadata) {
|
|
83
|
+
toolCall.providerOptions = {
|
|
84
|
+
...event.providerMetadata
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
await this.contextManager.addToolCall(this.assistantMessageId, toolCall);
|
|
81
88
|
this.pendingToolCalls.set(event.toolCallId, {
|
|
82
89
|
toolName: event.toolName
|
|
83
90
|
});
|
|
84
91
|
break;
|
|
92
|
+
}
|
|
85
93
|
case "tool-result": {
|
|
86
94
|
const rawResult = event.output;
|
|
87
95
|
this.logger.debug("Tool result received", {
|
|
@@ -128,8 +136,10 @@ class StreamProcessor {
|
|
|
128
136
|
}
|
|
129
137
|
case "finish-step":
|
|
130
138
|
if (event.usage) {
|
|
131
|
-
const
|
|
132
|
-
event.providerMetadata?.["bedrock"]
|
|
139
|
+
const anthropicMeta = event.providerMetadata?.["anthropic"];
|
|
140
|
+
const bedrockMeta = event.providerMetadata?.["bedrock"];
|
|
141
|
+
const cacheWriteTokens = anthropicMeta?.["cacheCreationInputTokens"] ?? bedrockMeta?.usage?.["cacheWriteInputTokens"] ?? 0;
|
|
142
|
+
const cacheReadTokens = anthropicMeta?.["cacheReadInputTokens"] ?? bedrockMeta?.usage?.["cacheReadInputTokens"] ?? event.usage.cachedInputTokens ?? 0;
|
|
133
143
|
this.actualTokens = {
|
|
134
144
|
inputTokens: (this.actualTokens.inputTokens ?? 0) + (event.usage.inputTokens ?? 0),
|
|
135
145
|
outputTokens: (this.actualTokens.outputTokens ?? 0) + (event.usage.outputTokens ?? 0),
|
|
@@ -138,16 +148,17 @@ class StreamProcessor {
|
|
|
138
148
|
reasoningTokens: (this.actualTokens.reasoningTokens ?? 0) + event.usage.reasoningTokens
|
|
139
149
|
},
|
|
140
150
|
// Cache tokens
|
|
141
|
-
cacheReadTokens: (this.actualTokens.cacheReadTokens ?? 0) +
|
|
151
|
+
cacheReadTokens: (this.actualTokens.cacheReadTokens ?? 0) + cacheReadTokens,
|
|
142
152
|
cacheWriteTokens: (this.actualTokens.cacheWriteTokens ?? 0) + cacheWriteTokens
|
|
143
153
|
};
|
|
144
154
|
}
|
|
145
155
|
break;
|
|
146
156
|
case "finish": {
|
|
147
157
|
this.finishReason = event.finishReason;
|
|
148
|
-
const
|
|
158
|
+
const cacheReadTokens = this.actualTokens.cacheReadTokens ?? event.totalUsage.cachedInputTokens ?? 0;
|
|
159
|
+
const cacheWriteTokens = this.actualTokens.cacheWriteTokens ?? 0;
|
|
149
160
|
const providerExcludesCached = this.config.provider === "anthropic" || this.config.provider === "bedrock";
|
|
150
|
-
const adjustedInputTokens = providerExcludesCached ? event.totalUsage.inputTokens ?? 0 : (event.totalUsage.inputTokens ?? 0) -
|
|
161
|
+
const adjustedInputTokens = providerExcludesCached ? event.totalUsage.inputTokens ?? 0 : (event.totalUsage.inputTokens ?? 0) - cacheReadTokens;
|
|
151
162
|
const usage = {
|
|
152
163
|
inputTokens: adjustedInputTokens,
|
|
153
164
|
outputTokens: event.totalUsage.outputTokens ?? 0,
|
|
@@ -156,9 +167,9 @@ class StreamProcessor {
|
|
|
156
167
|
...event.totalUsage.reasoningTokens !== void 0 && {
|
|
157
168
|
reasoningTokens: event.totalUsage.reasoningTokens
|
|
158
169
|
},
|
|
159
|
-
// Cache tokens
|
|
160
|
-
cacheReadTokens
|
|
161
|
-
cacheWriteTokens
|
|
170
|
+
// Cache tokens from accumulated finish-step events or totalUsage fallback
|
|
171
|
+
cacheReadTokens,
|
|
172
|
+
cacheWriteTokens
|
|
162
173
|
};
|
|
163
174
|
this.actualTokens = usage;
|
|
164
175
|
this.logger.info("LLM response complete", {
|
|
@@ -79,17 +79,19 @@ module.exports = __toCommonJS(turn_executor_exports);
|
|
|
79
79
|
var import_ai = require("ai");
|
|
80
80
|
var import_api = require("@opentelemetry/api");
|
|
81
81
|
var import_stream_processor = require("./stream-processor.js");
|
|
82
|
+
var import_provider_options = require("./provider-options.js");
|
|
82
83
|
var import_types4 = require("../../logger/v2/types.js");
|
|
83
84
|
var import_defer = require("../../utils/defer.js");
|
|
84
85
|
var import_DextoRuntimeError = require("../../errors/DextoRuntimeError.js");
|
|
85
86
|
var import_types7 = require("../../errors/types.js");
|
|
86
87
|
var import_error_codes = require("../error-codes.js");
|
|
87
88
|
var import_error_conversion = require("../../utils/error-conversion.js");
|
|
88
|
-
var import_overflow = require("../../context/
|
|
89
|
-
var import_reactive_overflow = require("../../context/
|
|
89
|
+
var import_overflow = require("../../context/compaction/overflow.js");
|
|
90
|
+
var import_reactive_overflow = require("../../context/compaction/strategies/reactive-overflow.js");
|
|
90
91
|
const toolSupportCache = /* @__PURE__ */ new Map();
|
|
92
|
+
const LOCAL_PROVIDERS = ["ollama", "local"];
|
|
91
93
|
class TurnExecutor {
|
|
92
|
-
constructor(model, toolManager, contextManager, eventBus, resourceManager, sessionId, config, llmContext, logger, messageQueue, modelLimits, externalSignal) {
|
|
94
|
+
constructor(model, toolManager, contextManager, eventBus, resourceManager, sessionId, config, llmContext, logger, messageQueue, modelLimits, externalSignal, compactionStrategy) {
|
|
93
95
|
this.model = model;
|
|
94
96
|
this.toolManager = toolManager;
|
|
95
97
|
this.contextManager = contextManager;
|
|
@@ -103,8 +105,10 @@ class TurnExecutor {
|
|
|
103
105
|
this.externalSignal = externalSignal;
|
|
104
106
|
this.logger = logger.createChild(import_types4.DextoLogComponent.EXECUTOR);
|
|
105
107
|
this.stepAbortController = new AbortController();
|
|
106
|
-
if (
|
|
107
|
-
this.
|
|
108
|
+
if (compactionStrategy !== void 0) {
|
|
109
|
+
this.compactionStrategy = compactionStrategy;
|
|
110
|
+
} else if (modelLimits) {
|
|
111
|
+
this.compactionStrategy = new import_reactive_overflow.ReactiveOverflowStrategy(model, {}, this.logger);
|
|
108
112
|
}
|
|
109
113
|
}
|
|
110
114
|
logger;
|
|
@@ -113,8 +117,7 @@ class TurnExecutor {
|
|
|
113
117
|
* This allows soft cancel (abort current step) while still continuing with queued messages.
|
|
114
118
|
*/
|
|
115
119
|
stepAbortController;
|
|
116
|
-
|
|
117
|
-
compressionStrategy = null;
|
|
120
|
+
compactionStrategy = null;
|
|
118
121
|
/**
|
|
119
122
|
* Map to track approval metadata by toolCallId.
|
|
120
123
|
* Used to pass approval info from tool execution to result persistence.
|
|
@@ -147,6 +150,24 @@ class TurnExecutor {
|
|
|
147
150
|
let lastText = "";
|
|
148
151
|
this.eventBus.emit("llm:thinking");
|
|
149
152
|
const supportsTools = await this.validateToolSupport();
|
|
153
|
+
if (!supportsTools) {
|
|
154
|
+
const modelKey = `${this.llmContext.provider}:${this.llmContext.model}`;
|
|
155
|
+
this.eventBus.emit("llm:unsupported-input", {
|
|
156
|
+
errors: [
|
|
157
|
+
`Model '${modelKey}' does not support tool calling.`,
|
|
158
|
+
"You can still chat, but the model will not be able to use tools or execute commands."
|
|
159
|
+
],
|
|
160
|
+
provider: this.llmContext.provider,
|
|
161
|
+
model: this.llmContext.model,
|
|
162
|
+
details: {
|
|
163
|
+
feature: "tool-calling",
|
|
164
|
+
supported: false
|
|
165
|
+
}
|
|
166
|
+
});
|
|
167
|
+
this.logger.warn(
|
|
168
|
+
`Model ${modelKey} does not support tools - continuing without tool calling`
|
|
169
|
+
);
|
|
170
|
+
}
|
|
150
171
|
let currentAbortHandler = null;
|
|
151
172
|
try {
|
|
152
173
|
while (true) {
|
|
@@ -183,6 +204,11 @@ class TurnExecutor {
|
|
|
183
204
|
streaming,
|
|
184
205
|
this.approvalMetadata
|
|
185
206
|
);
|
|
207
|
+
const providerOptions = (0, import_provider_options.buildProviderOptions)({
|
|
208
|
+
provider: this.llmContext.provider,
|
|
209
|
+
model: this.llmContext.model,
|
|
210
|
+
reasoningEffort: this.config.reasoningEffort
|
|
211
|
+
});
|
|
186
212
|
const result = await streamProcessor.process(
|
|
187
213
|
() => (0, import_ai.streamText)({
|
|
188
214
|
model: this.model,
|
|
@@ -196,6 +222,10 @@ class TurnExecutor {
|
|
|
196
222
|
...this.config.temperature !== void 0 && {
|
|
197
223
|
temperature: this.config.temperature
|
|
198
224
|
},
|
|
225
|
+
// Provider-specific options (caching, reasoning, etc.)
|
|
226
|
+
...providerOptions !== void 0 && {
|
|
227
|
+
providerOptions
|
|
228
|
+
},
|
|
199
229
|
// Log stream-level errors (tool errors, API errors during streaming)
|
|
200
230
|
onError: (error) => {
|
|
201
231
|
this.logger.error("Stream error", { error });
|
|
@@ -299,20 +329,25 @@ class TurnExecutor {
|
|
|
299
329
|
* Validates if the current model supports tools.
|
|
300
330
|
* Uses a static cache to avoid repeated validation calls.
|
|
301
331
|
*
|
|
302
|
-
* For
|
|
303
|
-
*
|
|
332
|
+
* For local providers (Ollama, local) and custom baseURL endpoints, makes a test call to verify tool support.
|
|
333
|
+
* Known cloud providers without baseURL are assumed to support tools.
|
|
304
334
|
*/
|
|
305
335
|
async validateToolSupport() {
|
|
306
336
|
const modelKey = `${this.llmContext.provider}:${this.llmContext.model}:${this.config.baseURL ?? ""}`;
|
|
307
337
|
if (toolSupportCache.has(modelKey)) {
|
|
308
338
|
return toolSupportCache.get(modelKey);
|
|
309
339
|
}
|
|
310
|
-
|
|
311
|
-
|
|
340
|
+
const isLocalProvider = LOCAL_PROVIDERS.includes(this.llmContext.provider);
|
|
341
|
+
if (!this.config.baseURL && !isLocalProvider) {
|
|
342
|
+
this.logger.debug(
|
|
343
|
+
`Skipping tool validation for ${modelKey} - known cloud provider without custom baseURL`
|
|
344
|
+
);
|
|
312
345
|
toolSupportCache.set(modelKey, true);
|
|
313
346
|
return true;
|
|
314
347
|
}
|
|
315
|
-
this.logger.debug(
|
|
348
|
+
this.logger.debug(
|
|
349
|
+
`Testing tool support for ${isLocalProvider ? "local provider" : "custom endpoint"} model: ${modelKey}`
|
|
350
|
+
);
|
|
316
351
|
const testTool = {
|
|
317
352
|
test_tool: {
|
|
318
353
|
inputSchema: (0, import_ai.jsonSchema)({
|
|
@@ -342,7 +377,9 @@ class TurnExecutor {
|
|
|
342
377
|
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
343
378
|
if (errorMessage.includes("does not support tools")) {
|
|
344
379
|
toolSupportCache.set(modelKey, false);
|
|
345
|
-
this.logger.debug(
|
|
380
|
+
this.logger.debug(
|
|
381
|
+
`Detected that model ${modelKey} does not support tool calling - tool functionality will be disabled`
|
|
382
|
+
);
|
|
346
383
|
return false;
|
|
347
384
|
}
|
|
348
385
|
this.logger.debug(
|
|
@@ -623,7 +660,7 @@ class TurnExecutor {
|
|
|
623
660
|
* Check if context has overflowed based on actual token usage from API.
|
|
624
661
|
*/
|
|
625
662
|
checkAndHandleOverflow(tokens) {
|
|
626
|
-
if (!this.modelLimits || !this.
|
|
663
|
+
if (!this.modelLimits || !this.compactionStrategy) {
|
|
627
664
|
return false;
|
|
628
665
|
}
|
|
629
666
|
return (0, import_overflow.isOverflow)(tokens, this.modelLimits);
|
|
@@ -638,16 +675,16 @@ class TurnExecutor {
|
|
|
638
675
|
* @param originalTokens The actual input token count from API that triggered overflow
|
|
639
676
|
*/
|
|
640
677
|
async compress(originalTokens) {
|
|
641
|
-
if (!this.
|
|
678
|
+
if (!this.compactionStrategy) {
|
|
642
679
|
return;
|
|
643
680
|
}
|
|
644
681
|
this.logger.info(
|
|
645
682
|
`Context overflow detected (${originalTokens} tokens), running compression`
|
|
646
683
|
);
|
|
647
684
|
const history = await this.contextManager.getHistory();
|
|
648
|
-
const summaryMessages = await this.
|
|
685
|
+
const summaryMessages = await this.compactionStrategy.compact(history);
|
|
649
686
|
if (summaryMessages.length === 0) {
|
|
650
|
-
this.logger.debug("
|
|
687
|
+
this.logger.debug("Compaction returned no summary (history too short)");
|
|
651
688
|
return;
|
|
652
689
|
}
|
|
653
690
|
for (const summary of summaryMessages) {
|
|
@@ -656,17 +693,17 @@ class TurnExecutor {
|
|
|
656
693
|
const { filterCompacted, estimateMessagesTokens } = await import("../../context/utils.js");
|
|
657
694
|
const updatedHistory = await this.contextManager.getHistory();
|
|
658
695
|
const filteredHistory = filterCompacted(updatedHistory);
|
|
659
|
-
const
|
|
660
|
-
this.eventBus.emit("context:
|
|
696
|
+
const compactedTokens = estimateMessagesTokens(filteredHistory);
|
|
697
|
+
this.eventBus.emit("context:compacted", {
|
|
661
698
|
originalTokens,
|
|
662
|
-
|
|
699
|
+
compactedTokens,
|
|
663
700
|
originalMessages: history.length,
|
|
664
|
-
|
|
665
|
-
strategy: this.
|
|
701
|
+
compactedMessages: filteredHistory.length,
|
|
702
|
+
strategy: this.compactionStrategy.name,
|
|
666
703
|
reason: "overflow"
|
|
667
704
|
});
|
|
668
705
|
this.logger.info(
|
|
669
|
-
`
|
|
706
|
+
`Compaction complete: ${originalTokens} \u2192 ~${compactedTokens} tokens (${history.length} \u2192 ${filteredHistory.length} messages after filtering)`
|
|
670
707
|
);
|
|
671
708
|
}
|
|
672
709
|
/**
|
|
@@ -8,7 +8,8 @@ import type { ResourceManager } from '../../resources/index.js';
|
|
|
8
8
|
import { DynamicContributorContext } from '../../systemPrompt/types.js';
|
|
9
9
|
import { LLMContext } from '../types.js';
|
|
10
10
|
import type { MessageQueueService } from '../../session/message-queue.js';
|
|
11
|
-
import { type ModelLimits } from '../../context/
|
|
11
|
+
import { type ModelLimits } from '../../context/compaction/overflow.js';
|
|
12
|
+
import type { ICompactionStrategy } from '../../context/compaction/types.js';
|
|
12
13
|
/**
|
|
13
14
|
* TurnExecutor orchestrates the agent loop using `stopWhen: stepCountIs(1)`.
|
|
14
15
|
*
|
|
@@ -39,7 +40,7 @@ export declare class TurnExecutor {
|
|
|
39
40
|
* This allows soft cancel (abort current step) while still continuing with queued messages.
|
|
40
41
|
*/
|
|
41
42
|
private stepAbortController;
|
|
42
|
-
private
|
|
43
|
+
private compactionStrategy;
|
|
43
44
|
/**
|
|
44
45
|
* Map to track approval metadata by toolCallId.
|
|
45
46
|
* Used to pass approval info from tool execution to result persistence.
|
|
@@ -50,7 +51,8 @@ export declare class TurnExecutor {
|
|
|
50
51
|
maxOutputTokens?: number | undefined;
|
|
51
52
|
temperature?: number | undefined;
|
|
52
53
|
baseURL?: string | undefined;
|
|
53
|
-
|
|
54
|
+
reasoningEffort?: 'none' | 'minimal' | 'low' | 'medium' | 'high' | 'xhigh' | undefined;
|
|
55
|
+
}, llmContext: LLMContext, logger: IDextoLogger, messageQueue: MessageQueueService, modelLimits?: ModelLimits | undefined, externalSignal?: AbortSignal | undefined, compactionStrategy?: ICompactionStrategy | null);
|
|
54
56
|
/**
|
|
55
57
|
* Get StreamProcessor config from TurnExecutor state.
|
|
56
58
|
*/
|
|
@@ -77,8 +79,8 @@ export declare class TurnExecutor {
|
|
|
77
79
|
* Validates if the current model supports tools.
|
|
78
80
|
* Uses a static cache to avoid repeated validation calls.
|
|
79
81
|
*
|
|
80
|
-
* For
|
|
81
|
-
*
|
|
82
|
+
* For local providers (Ollama, local) and custom baseURL endpoints, makes a test call to verify tool support.
|
|
83
|
+
* Known cloud providers without baseURL are assumed to support tools.
|
|
82
84
|
*/
|
|
83
85
|
private validateToolSupport;
|
|
84
86
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"turn-executor.d.ts","sourceRoot":"","sources":["../../../src/llm/executor/turn-executor.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,aAAa,EAMb,KAAK,YAAY,EAEpB,MAAM,IAAI,CAAC;AAEZ,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE1D,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAG1D,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"turn-executor.d.ts","sourceRoot":"","sources":["../../../src/llm/executor/turn-executor.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,aAAa,EAMb,KAAK,YAAY,EAEpB,MAAM,IAAI,CAAC;AAEZ,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE1D,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAG1D,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAG5C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAE7D,OAAO,KAAK,EAAE,eAAe,EAAmB,MAAM,uBAAuB,CAAC;AAC9E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAE,UAAU,EAAoB,MAAM,aAAa,CAAC;AAC3D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAQ1E,OAAO,EAAc,KAAK,WAAW,EAAE,MAAM,sCAAsC,CAAC;AAEpF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AAc7E;;;;;;;;;;;GAWG;AACH,qBAAa,YAAY;IAkBjB,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,cAAc;IACtB,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,eAAe;IACvB,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,MAAM;IAQd,OAAO,CAAC,UAAU;IAElB,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,WAAW,CAAC;IACpB,OAAO,CAAC,cAAc,CAAC;IAnC3B,OAAO,CAAC,MAAM,CAAe;IAC7B;;;OAGG;IACH,OAAO,CAAC,mBAAmB,CAAkB;IAC7C,OAAO,CAAC,kBAAkB,CAAoC;IAC9D;;;OAGG;IACH,OAAO,CAAC,gBAAgB,CAGpB;gBAGQ,KAAK,EAAE,aAAa,EACpB,WAAW,EAAE,WAAW,EACxB,cAAc,EAAE,cAAc,CAAC,YAAY,CAAC,EAC5C,QAAQ,EAAE,eAAe,EACzB,eAAe,EAAE,eAAe,EAChC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE;QACZ,QAAQ,EAAE,MAAM,CAAC;QACjB,eAAe,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QACrC,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QACjC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAE7B,eAAe,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC;KAC1F,EACO,UAAU,EAAE,UAAU,EAC9B,MAAM,EAAE,YAAY,EACZ,YAAY,EAAE,mBAAmB,EACjC,WAAW,CAAC,EAAE,WAAW,YAAA,EACzB,cAAc,CAAC,EAAE,WAAW,YAAA,EACpC,kBAAkB,CAAC,EAAE,mBAAmB,GAAG,IAAI;IAqBnD;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAOhC;;;;;;OAMG;IACG,OAAO,CACT,kBAAkB,EAAE,yBAAyB,EAC7C,SAAS,GAAE,OAAc,GAC1B,OAAO,CAAC,cAAc,CAAC;IAsN1B;;;OAGG;IACH,KAAK,IAAI,IAAI;IAIb;;;OAGG;YACW,oBAAoB;IAmBlC;;;;;;OAMG;YACW,mBAAmB;IA0EjC;;;;;;;OAOG;YACW,WAAW;IA0GzB;;;;;OAKG;IACH,OAAO,CAAC,sBAAsB;IAuF9B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAyBxB;;OAEG;IACH,OAAO,CAAC,eAAe;IAavB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAS5B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAU;IAC/C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAU;IAE/C;;;;;;;;;;;OAWG;YACW,mBAAmB;IAkDjC;;;;;;OAMG;IACH,OAAO,CAAC,kBAAkB;IAgB1B;;;OAGG;IACH,OAAO,CAAC,OAAO;IAYf;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAO9B;;;;;;;;OAQG;YACW,QAAQ;IA8CtB;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAoB9B;;OAEG;IACH,OAAO,CAAC,gBAAgB;CA0D3B"}
|