@dexto/core 1.2.4 → 1.2.6
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 +60 -0
- package/dist/agent/DextoAgent.cjs +579 -345
- package/dist/agent/DextoAgent.d.ts +131 -83
- package/dist/agent/DextoAgent.d.ts.map +1 -1
- package/dist/agent/DextoAgent.js +573 -336
- package/dist/agent/agentCard.cjs +4 -2
- package/dist/agent/agentCard.d.ts +0 -1
- package/dist/agent/agentCard.d.ts.map +1 -1
- package/dist/agent/agentCard.js +4 -2
- package/dist/agent/index.cjs +3 -7
- package/dist/agent/index.d.ts +3 -3
- package/dist/agent/index.d.ts.map +1 -1
- package/dist/agent/index.js +7 -6
- package/dist/agent/schemas.cjs +179 -75
- package/dist/agent/schemas.d.ts +2678 -586
- package/dist/agent/schemas.d.ts.map +1 -1
- package/dist/agent/schemas.js +172 -65
- package/dist/agent/state-manager.cjs +28 -23
- package/dist/agent/state-manager.d.ts +4 -1
- package/dist/agent/state-manager.d.ts.map +1 -1
- package/dist/agent/state-manager.js +28 -23
- package/dist/{preferences/constants.cjs → agent/types.cjs} +2 -14
- package/dist/agent/types.d.ts +54 -0
- package/dist/agent/types.d.ts.map +1 -0
- package/dist/agent/types.js +0 -0
- package/dist/approval/errors.cjs +89 -8
- package/dist/approval/errors.d.ts +5 -3
- package/dist/approval/errors.d.ts.map +1 -1
- package/dist/approval/errors.js +89 -8
- package/dist/approval/{providers/factory.d.ts → factory.d.ts} +2 -2
- package/dist/approval/factory.d.ts.map +1 -0
- package/dist/approval/{providers/factory.js → factory.js} +1 -1
- package/dist/approval/index.cjs +4 -6
- package/dist/approval/index.d.ts +3 -5
- package/dist/approval/index.d.ts.map +1 -1
- package/dist/approval/index.js +4 -5
- package/dist/approval/manager.cjs +140 -37
- package/dist/approval/manager.d.ts +56 -17
- package/dist/approval/manager.d.ts.map +1 -1
- package/dist/approval/manager.js +141 -38
- package/dist/approval/schemas.cjs +9 -1
- package/dist/approval/schemas.d.ts +120 -35
- package/dist/approval/schemas.d.ts.map +1 -1
- package/dist/approval/schemas.js +9 -2
- package/dist/approval/types.cjs +14 -2
- package/dist/approval/types.d.ts +64 -12
- package/dist/approval/types.d.ts.map +1 -1
- package/dist/approval/types.js +12 -1
- package/dist/context/compression/middle-removal.cjs +11 -11
- package/dist/context/compression/middle-removal.d.ts +3 -1
- package/dist/context/compression/middle-removal.d.ts.map +1 -1
- package/dist/context/compression/middle-removal.js +11 -11
- package/dist/context/compression/oldest-removal.cjs +18 -5
- package/dist/context/compression/oldest-removal.d.ts +3 -1
- package/dist/context/compression/oldest-removal.d.ts.map +1 -1
- package/dist/context/compression/oldest-removal.js +18 -5
- package/dist/context/manager.cjs +94 -67
- package/dist/context/manager.d.ts +13 -10
- package/dist/context/manager.d.ts.map +1 -1
- package/dist/context/manager.js +94 -67
- package/dist/context/utils.cjs +79 -65
- package/dist/context/utils.d.ts +15 -12
- package/dist/context/utils.d.ts.map +1 -1
- package/dist/context/utils.js +45 -31
- package/dist/errors/DextoRuntimeError.d.ts +5 -5
- package/dist/errors/DextoRuntimeError.d.ts.map +1 -1
- package/dist/errors/result-bridge.cjs +2 -3
- package/dist/errors/result-bridge.d.ts +5 -3
- package/dist/errors/result-bridge.d.ts.map +1 -1
- package/dist/errors/result-bridge.js +1 -2
- package/dist/errors/types.cjs +1 -2
- package/dist/errors/types.d.ts +5 -8
- package/dist/errors/types.d.ts.map +1 -1
- package/dist/errors/types.js +1 -2
- package/dist/events/index.cjs +125 -55
- package/dist/events/index.d.ts +204 -97
- package/dist/events/index.d.ts.map +1 -1
- package/dist/events/index.js +123 -55
- package/dist/filesystem/filesystem-service.cjs +40 -30
- package/dist/filesystem/filesystem-service.d.ts +9 -1
- package/dist/filesystem/filesystem-service.d.ts.map +1 -1
- package/dist/filesystem/filesystem-service.js +40 -30
- package/dist/filesystem/path-validator.cjs +4 -3
- package/dist/filesystem/path-validator.d.ts +3 -1
- package/dist/filesystem/path-validator.d.ts.map +1 -1
- package/dist/filesystem/path-validator.js +4 -3
- package/dist/filesystem/types.d.ts +3 -3
- package/dist/filesystem/types.d.ts.map +1 -1
- package/dist/index.browser.cjs +7 -0
- package/dist/index.browser.d.ts +2 -0
- package/dist/index.browser.d.ts.map +1 -1
- package/dist/index.browser.js +4 -0
- package/dist/index.cjs +0 -7
- package/dist/index.d.ts +12 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +0 -4
- package/dist/llm/formatters/anthropic.cjs +32 -21
- package/dist/llm/formatters/anthropic.d.ts +3 -0
- package/dist/llm/formatters/anthropic.d.ts.map +1 -1
- package/dist/llm/formatters/anthropic.js +32 -21
- package/dist/llm/formatters/factory.cjs +6 -7
- package/dist/llm/formatters/factory.d.ts +2 -1
- package/dist/llm/formatters/factory.d.ts.map +1 -1
- package/dist/llm/formatters/factory.js +4 -5
- package/dist/llm/formatters/openai.cjs +38 -9
- package/dist/llm/formatters/openai.d.ts +3 -0
- package/dist/llm/formatters/openai.d.ts.map +1 -1
- package/dist/llm/formatters/openai.js +38 -9
- package/dist/llm/formatters/vercel.cjs +49 -8
- package/dist/llm/formatters/vercel.d.ts +3 -0
- package/dist/llm/formatters/vercel.d.ts.map +1 -1
- package/dist/llm/formatters/vercel.js +49 -8
- package/dist/llm/registry.cjs +153 -17
- package/dist/llm/registry.d.ts +5 -2
- package/dist/llm/registry.d.ts.map +1 -1
- package/dist/llm/registry.js +143 -7
- package/dist/llm/resolver.cjs +4 -4
- package/dist/llm/resolver.d.ts +3 -2
- package/dist/llm/resolver.d.ts.map +1 -1
- package/dist/llm/resolver.js +4 -4
- package/dist/llm/schemas.cjs +6 -3
- package/dist/llm/schemas.d.ts +51 -17
- package/dist/llm/schemas.d.ts.map +1 -1
- package/dist/llm/schemas.js +5 -3
- package/dist/llm/services/anthropic.cjs +216 -183
- package/dist/llm/services/anthropic.d.ts +3 -1
- package/dist/llm/services/anthropic.d.ts.map +1 -1
- package/dist/llm/services/anthropic.js +217 -184
- package/dist/llm/services/factory.cjs +15 -9
- package/dist/llm/services/factory.d.ts +2 -1
- package/dist/llm/services/factory.d.ts.map +1 -1
- package/dist/llm/services/factory.js +15 -9
- package/dist/llm/services/openai.cjs +262 -225
- package/dist/llm/services/openai.d.ts +3 -1
- package/dist/llm/services/openai.d.ts.map +1 -1
- package/dist/llm/services/openai.js +263 -226
- package/dist/llm/services/test-utils.integration.cjs +58 -12
- package/dist/llm/services/test-utils.integration.d.ts.map +1 -1
- package/dist/llm/services/test-utils.integration.js +58 -12
- package/dist/llm/services/types.d.ts +9 -0
- package/dist/llm/services/types.d.ts.map +1 -1
- package/dist/llm/services/vercel.cjs +163 -111
- package/dist/llm/services/vercel.d.ts +3 -1
- package/dist/llm/services/vercel.d.ts.map +1 -1
- package/dist/llm/services/vercel.js +157 -105
- package/dist/llm/tokenizer/factory.cjs +2 -2
- package/dist/llm/tokenizer/factory.d.ts +3 -1
- package/dist/llm/tokenizer/factory.d.ts.map +1 -1
- package/dist/llm/tokenizer/factory.js +2 -2
- package/dist/llm/tokenizer/openai.cjs +16 -9
- package/dist/llm/tokenizer/openai.d.ts +4 -1
- package/dist/llm/tokenizer/openai.d.ts.map +1 -1
- package/dist/llm/tokenizer/openai.js +16 -9
- package/dist/llm/validation.cjs +8 -9
- package/dist/llm/validation.d.ts +3 -1
- package/dist/llm/validation.d.ts.map +1 -1
- package/dist/llm/validation.js +5 -6
- package/dist/logger/factory.cjs +54 -0
- package/dist/logger/factory.d.ts +36 -0
- package/dist/logger/factory.d.ts.map +1 -0
- package/dist/logger/factory.js +31 -0
- package/dist/logger/index.cjs +42 -3
- package/dist/logger/index.d.ts +17 -1
- package/dist/logger/index.d.ts.map +1 -1
- package/dist/logger/index.js +26 -1
- package/dist/logger/logger.cjs +30 -17
- package/dist/logger/logger.d.ts.map +1 -1
- package/dist/logger/logger.js +30 -17
- package/dist/logger/v2/dexto-logger.cjs +141 -0
- package/dist/logger/v2/dexto-logger.d.ts +54 -0
- package/dist/logger/v2/dexto-logger.d.ts.map +1 -0
- package/dist/logger/v2/dexto-logger.js +118 -0
- package/dist/{preferences → logger/v2}/error-codes.cjs +11 -10
- package/dist/logger/v2/error-codes.d.ts +13 -0
- package/dist/logger/v2/error-codes.d.ts.map +1 -0
- package/dist/logger/v2/error-codes.js +13 -0
- package/dist/logger/v2/errors.cjs +107 -0
- package/dist/logger/v2/errors.d.ts +32 -0
- package/dist/logger/v2/errors.d.ts.map +1 -0
- package/dist/logger/v2/errors.js +84 -0
- package/dist/logger/v2/schemas.cjs +57 -0
- package/dist/logger/v2/schemas.d.ts +147 -0
- package/dist/logger/v2/schemas.d.ts.map +1 -0
- package/dist/logger/v2/schemas.js +33 -0
- package/dist/logger/v2/transport-factory.cjs +53 -0
- package/dist/logger/v2/transport-factory.d.ts +21 -0
- package/dist/logger/v2/transport-factory.d.ts.map +1 -0
- package/dist/logger/v2/transport-factory.js +29 -0
- package/dist/logger/v2/transports/console-transport.cjs +79 -0
- package/dist/logger/v2/transports/console-transport.d.ts +23 -0
- package/dist/logger/v2/transports/console-transport.d.ts.map +1 -0
- package/dist/logger/v2/transports/console-transport.js +46 -0
- package/dist/logger/v2/transports/file-transport.cjs +161 -0
- package/dist/logger/v2/transports/file-transport.d.ts +46 -0
- package/dist/logger/v2/transports/file-transport.d.ts.map +1 -0
- package/dist/logger/v2/transports/file-transport.js +128 -0
- package/dist/logger/v2/types.cjs +49 -0
- package/dist/logger/v2/types.d.ts +123 -0
- package/dist/logger/v2/types.d.ts.map +1 -0
- package/dist/logger/v2/types.js +26 -0
- package/dist/mcp/manager.cjs +88 -78
- package/dist/mcp/manager.d.ts +3 -1
- package/dist/mcp/manager.d.ts.map +1 -1
- package/dist/mcp/manager.js +88 -78
- package/dist/mcp/mcp-client.cjs +109 -79
- package/dist/mcp/mcp-client.d.ts +3 -0
- package/dist/mcp/mcp-client.d.ts.map +1 -1
- package/dist/mcp/mcp-client.js +102 -72
- package/dist/memory/index.cjs +2 -0
- package/dist/memory/index.d.ts +1 -1
- package/dist/memory/index.d.ts.map +1 -1
- package/dist/memory/index.js +3 -1
- package/dist/memory/manager.cjs +9 -7
- package/dist/memory/manager.d.ts +3 -1
- package/dist/memory/manager.d.ts.map +1 -1
- package/dist/memory/manager.js +9 -7
- package/dist/memory/schemas.cjs +10 -0
- package/dist/memory/schemas.d.ts +37 -8
- package/dist/memory/schemas.d.ts.map +1 -1
- package/dist/memory/schemas.js +9 -0
- package/dist/plugins/manager.cjs +21 -19
- package/dist/plugins/manager.d.ts +3 -1
- package/dist/plugins/manager.d.ts.map +1 -1
- package/dist/plugins/manager.js +21 -19
- package/dist/plugins/schemas.d.ts +9 -9
- package/dist/plugins/types.d.ts +2 -2
- package/dist/plugins/types.d.ts.map +1 -1
- package/dist/process/command-validator.cjs +30 -20
- package/dist/process/command-validator.d.ts +4 -1
- package/dist/process/command-validator.d.ts.map +1 -1
- package/dist/process/command-validator.js +30 -20
- package/dist/process/process-service.cjs +23 -21
- package/dist/process/process-service.d.ts +3 -1
- package/dist/process/process-service.d.ts.map +1 -1
- package/dist/process/process-service.js +23 -21
- package/dist/prompts/index.cjs +6 -8
- package/dist/prompts/index.d.ts +2 -4
- package/dist/prompts/index.d.ts.map +1 -1
- package/dist/prompts/index.js +4 -6
- package/dist/prompts/prompt-manager.cjs +25 -20
- package/dist/prompts/prompt-manager.d.ts +3 -1
- package/dist/prompts/prompt-manager.d.ts.map +1 -1
- package/dist/prompts/prompt-manager.js +25 -20
- package/dist/prompts/providers/config-prompt-provider.cjs +331 -0
- package/dist/prompts/providers/config-prompt-provider.d.ts +34 -0
- package/dist/prompts/providers/config-prompt-provider.d.ts.map +1 -0
- package/dist/prompts/providers/config-prompt-provider.js +308 -0
- package/dist/prompts/providers/custom-prompt-provider.cjs +11 -7
- package/dist/prompts/providers/custom-prompt-provider.d.ts +3 -1
- package/dist/prompts/providers/custom-prompt-provider.d.ts.map +1 -1
- package/dist/prompts/providers/custom-prompt-provider.js +11 -7
- package/dist/prompts/providers/mcp-prompt-provider.cjs +7 -6
- package/dist/prompts/providers/mcp-prompt-provider.d.ts +3 -1
- package/dist/prompts/providers/mcp-prompt-provider.d.ts.map +1 -1
- package/dist/prompts/providers/mcp-prompt-provider.js +7 -6
- package/dist/prompts/schemas.cjs +42 -23
- package/dist/prompts/schemas.d.ts +123 -14
- package/dist/prompts/schemas.d.ts.map +1 -1
- package/dist/prompts/schemas.js +39 -22
- package/dist/prompts/types.d.ts +1 -1
- package/dist/prompts/types.d.ts.map +1 -1
- package/dist/resources/handlers/blob-handler.cjs +15 -11
- package/dist/resources/handlers/blob-handler.d.ts +3 -1
- package/dist/resources/handlers/blob-handler.d.ts.map +1 -1
- package/dist/resources/handlers/blob-handler.js +15 -11
- package/dist/resources/handlers/factory.cjs +3 -3
- package/dist/resources/handlers/factory.d.ts +2 -1
- package/dist/resources/handlers/factory.d.ts.map +1 -1
- package/dist/resources/handlers/factory.js +3 -3
- package/dist/resources/handlers/filesystem-handler.cjs +10 -8
- package/dist/resources/handlers/filesystem-handler.d.ts +3 -1
- package/dist/resources/handlers/filesystem-handler.d.ts.map +1 -1
- package/dist/resources/handlers/filesystem-handler.js +10 -8
- package/dist/resources/internal-provider.cjs +28 -20
- package/dist/resources/internal-provider.d.ts +3 -1
- package/dist/resources/internal-provider.d.ts.map +1 -1
- package/dist/resources/internal-provider.js +28 -20
- package/dist/resources/manager.cjs +34 -25
- package/dist/resources/manager.d.ts +3 -1
- package/dist/resources/manager.d.ts.map +1 -1
- package/dist/resources/manager.js +34 -25
- package/dist/resources/schemas.d.ts +6 -6
- package/dist/search/search-service.cjs +8 -6
- package/dist/search/search-service.d.ts +3 -1
- package/dist/search/search-service.d.ts.map +1 -1
- package/dist/search/search-service.js +8 -6
- package/dist/session/chat-session.cjs +40 -27
- package/dist/session/chat-session.d.ts +10 -7
- package/dist/session/chat-session.d.ts.map +1 -1
- package/dist/session/chat-session.js +40 -27
- package/dist/session/history/database.cjs +18 -11
- package/dist/session/history/database.d.ts +3 -1
- package/dist/session/history/database.d.ts.map +1 -1
- package/dist/session/history/database.js +18 -11
- package/dist/session/history/factory.cjs +2 -2
- package/dist/session/history/factory.d.ts +5 -1
- package/dist/session/history/factory.d.ts.map +1 -1
- package/dist/session/history/factory.js +2 -2
- package/dist/session/session-manager.cjs +37 -53
- package/dist/session/session-manager.d.ts +3 -17
- package/dist/session/session-manager.d.ts.map +1 -1
- package/dist/session/session-manager.js +37 -53
- package/dist/session/title-generator.cjs +3 -2
- package/dist/session/title-generator.d.ts +2 -1
- package/dist/session/title-generator.d.ts.map +1 -1
- package/dist/session/title-generator.js +3 -2
- package/dist/storage/blob/factory.cjs +9 -18
- package/dist/storage/blob/factory.d.ts +5 -4
- package/dist/storage/blob/factory.d.ts.map +1 -1
- package/dist/storage/blob/factory.js +8 -17
- package/dist/storage/blob/local-blob-store.cjs +25 -32
- package/dist/storage/blob/local-blob-store.d.ts +3 -2
- package/dist/storage/blob/local-blob-store.d.ts.map +1 -1
- package/dist/storage/blob/local-blob-store.js +25 -32
- package/dist/storage/blob/memory-blob-store.cjs +326 -0
- package/dist/storage/blob/memory-blob-store.d.ts +66 -0
- package/dist/storage/blob/memory-blob-store.d.ts.map +1 -0
- package/dist/storage/blob/memory-blob-store.js +303 -0
- package/dist/storage/blob/schemas.cjs +3 -1
- package/dist/storage/blob/schemas.d.ts +6 -6
- package/dist/storage/blob/schemas.d.ts.map +1 -1
- package/dist/storage/blob/schemas.js +3 -1
- package/dist/storage/cache/factory.cjs +7 -8
- package/dist/storage/cache/factory.d.ts +4 -1
- package/dist/storage/cache/factory.d.ts.map +1 -1
- package/dist/storage/cache/factory.js +4 -5
- package/dist/storage/cache/redis-store.cjs +4 -1
- package/dist/storage/cache/redis-store.d.ts +3 -1
- package/dist/storage/cache/redis-store.d.ts.map +1 -1
- package/dist/storage/cache/redis-store.js +4 -1
- package/dist/storage/database/factory.cjs +13 -16
- package/dist/storage/database/factory.d.ts +5 -3
- package/dist/storage/database/factory.d.ts.map +1 -1
- package/dist/storage/database/factory.js +9 -12
- package/dist/storage/database/postgres-store.cjs +4 -1
- package/dist/storage/database/postgres-store.d.ts +3 -1
- package/dist/storage/database/postgres-store.d.ts.map +1 -1
- package/dist/storage/database/postgres-store.js +4 -1
- package/dist/storage/database/schemas.cjs +3 -4
- package/dist/storage/database/schemas.d.ts +8 -16
- package/dist/storage/database/schemas.d.ts.map +1 -1
- package/dist/storage/database/schemas.js +3 -4
- package/dist/storage/database/sqlite-store.cjs +17 -45
- package/dist/storage/database/sqlite-store.d.ts +3 -3
- package/dist/storage/database/sqlite-store.d.ts.map +1 -1
- package/dist/storage/database/sqlite-store.js +17 -45
- package/dist/storage/schemas.cjs +3 -1
- package/dist/storage/schemas.d.ts +16 -23
- package/dist/storage/schemas.d.ts.map +1 -1
- package/dist/storage/schemas.js +3 -1
- package/dist/storage/storage-manager.cjs +15 -15
- package/dist/storage/storage-manager.d.ts +6 -6
- package/dist/storage/storage-manager.d.ts.map +1 -1
- package/dist/storage/storage-manager.js +15 -15
- package/dist/systemPrompt/contributors.cjs +15 -15
- package/dist/systemPrompt/contributors.d.ts +5 -3
- package/dist/systemPrompt/contributors.d.ts.map +1 -1
- package/dist/systemPrompt/contributors.js +15 -15
- package/dist/systemPrompt/in-built-prompts.cjs +0 -5
- package/dist/systemPrompt/in-built-prompts.d.ts +1 -2
- package/dist/systemPrompt/in-built-prompts.d.ts.map +1 -1
- package/dist/systemPrompt/in-built-prompts.js +0 -4
- package/dist/systemPrompt/manager.cjs +31 -23
- package/dist/systemPrompt/manager.d.ts +5 -3
- package/dist/systemPrompt/manager.d.ts.map +1 -1
- package/dist/systemPrompt/manager.js +31 -23
- package/dist/systemPrompt/registry.cjs +1 -2
- package/dist/systemPrompt/registry.d.ts +1 -1
- package/dist/systemPrompt/registry.d.ts.map +1 -1
- package/dist/systemPrompt/registry.js +1 -2
- package/dist/systemPrompt/schemas.cjs +24 -18
- package/dist/systemPrompt/schemas.d.ts +46 -222
- package/dist/systemPrompt/schemas.d.ts.map +1 -1
- package/dist/systemPrompt/schemas.js +14 -18
- package/dist/telemetry/decorators.cjs +54 -15
- package/dist/telemetry/decorators.d.ts.map +1 -1
- package/dist/telemetry/decorators.js +54 -15
- package/dist/telemetry/utils.cjs +21 -14
- package/dist/telemetry/utils.d.ts +7 -3
- package/dist/telemetry/utils.d.ts.map +1 -1
- package/dist/telemetry/utils.js +21 -14
- package/dist/tools/confirmation/allowed-tools-provider/factory.cjs +2 -2
- package/dist/tools/confirmation/allowed-tools-provider/factory.d.ts +2 -1
- package/dist/tools/confirmation/allowed-tools-provider/factory.d.ts.map +1 -1
- package/dist/tools/confirmation/allowed-tools-provider/factory.js +2 -2
- package/dist/tools/confirmation/allowed-tools-provider/storage.cjs +7 -6
- package/dist/tools/confirmation/allowed-tools-provider/storage.d.ts +3 -1
- package/dist/tools/confirmation/allowed-tools-provider/storage.d.ts.map +1 -1
- package/dist/tools/confirmation/allowed-tools-provider/storage.js +7 -6
- package/dist/tools/errors.cjs +2 -1
- package/dist/tools/errors.d.ts.map +1 -1
- package/dist/tools/errors.js +2 -1
- package/dist/tools/internal-tools/constants.cjs +2 -1
- 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 +2 -1
- package/dist/tools/internal-tools/implementations/bash-exec-tool.cjs +1 -1
- package/dist/tools/internal-tools/implementations/bash-exec-tool.js +1 -1
- package/dist/tools/internal-tools/implementations/delegate-to-url-tool.cjs +192 -0
- package/dist/tools/internal-tools/implementations/delegate-to-url-tool.d.ts +33 -0
- package/dist/tools/internal-tools/implementations/delegate-to-url-tool.d.ts.map +1 -0
- package/dist/tools/internal-tools/implementations/delegate-to-url-tool.js +169 -0
- package/dist/tools/internal-tools/provider.cjs +21 -17
- package/dist/tools/internal-tools/provider.d.ts +3 -1
- package/dist/tools/internal-tools/provider.d.ts.map +1 -1
- package/dist/tools/internal-tools/provider.js +21 -17
- package/dist/tools/internal-tools/registry.cjs +5 -0
- package/dist/tools/internal-tools/registry.d.ts.map +1 -1
- package/dist/tools/internal-tools/registry.js +5 -0
- package/dist/tools/schemas.cjs +16 -4
- package/dist/tools/schemas.d.ts +21 -9
- package/dist/tools/schemas.d.ts.map +1 -1
- package/dist/tools/schemas.js +15 -4
- package/dist/tools/tool-manager.cjs +64 -47
- package/dist/tools/tool-manager.d.ts +4 -2
- package/dist/tools/tool-manager.d.ts.map +1 -1
- package/dist/tools/tool-manager.js +61 -44
- package/dist/tools/types.d.ts +0 -4
- package/dist/tools/types.d.ts.map +1 -1
- package/dist/utils/env-file.cjs +118 -0
- package/dist/utils/env-file.d.ts +5 -0
- package/dist/utils/env-file.d.ts.map +1 -0
- package/dist/utils/env-file.js +85 -0
- package/dist/utils/error-conversion.cjs +23 -1
- package/dist/utils/error-conversion.d.ts +2 -1
- package/dist/utils/error-conversion.d.ts.map +1 -1
- package/dist/utils/error-conversion.js +23 -1
- package/dist/utils/execution-context.d.ts.map +1 -1
- package/dist/utils/fs-walk.d.ts.map +1 -1
- package/dist/utils/index.cjs +7 -9
- package/dist/utils/index.d.ts +3 -4
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +3 -4
- package/dist/utils/path.cjs +22 -57
- package/dist/utils/path.d.ts +8 -7
- package/dist/utils/path.d.ts.map +1 -1
- package/dist/utils/path.js +21 -54
- package/dist/utils/result.cjs +37 -14
- package/dist/utils/result.d.ts.map +1 -1
- package/dist/utils/result.js +37 -14
- package/dist/utils/schema.cjs +2 -3
- package/dist/utils/schema.d.ts +2 -1
- package/dist/utils/schema.d.ts.map +1 -1
- package/dist/utils/schema.js +1 -2
- package/dist/utils/service-initializer.cjs +88 -61
- package/dist/utils/service-initializer.d.ts +4 -2
- package/dist/utils/service-initializer.d.ts.map +1 -1
- package/dist/utils/service-initializer.js +70 -43
- package/package.json +7 -3
- package/dist/Dexto.cjs +0 -251
- package/dist/Dexto.d.ts +0 -191
- package/dist/Dexto.d.ts.map +0 -1
- package/dist/Dexto.js +0 -228
- package/dist/agent/registry/error-codes.cjs +0 -44
- package/dist/agent/registry/error-codes.d.ts +0 -21
- package/dist/agent/registry/error-codes.d.ts.map +0 -1
- package/dist/agent/registry/error-codes.js +0 -21
- package/dist/agent/registry/errors.cjs +0 -188
- package/dist/agent/registry/errors.d.ts +0 -63
- package/dist/agent/registry/errors.d.ts.map +0 -1
- package/dist/agent/registry/errors.js +0 -165
- package/dist/agent/registry/registry.cjs +0 -479
- package/dist/agent/registry/registry.d.ts +0 -130
- package/dist/agent/registry/registry.d.ts.map +0 -1
- package/dist/agent/registry/registry.js +0 -453
- package/dist/agent/registry/types.cjs +0 -74
- package/dist/agent/registry/types.d.ts +0 -142
- package/dist/agent/registry/types.d.ts.map +0 -1
- package/dist/agent/registry/types.js +0 -48
- package/dist/agent/registry/user-registry.cjs +0 -140
- package/dist/agent/registry/user-registry.d.ts +0 -34
- package/dist/agent/registry/user-registry.d.ts.map +0 -1
- package/dist/agent/registry/user-registry.js +0 -105
- package/dist/approval/providers/event-based-approval-provider.cjs +0 -156
- package/dist/approval/providers/event-based-approval-provider.d.ts +0 -39
- package/dist/approval/providers/event-based-approval-provider.d.ts.map +0 -1
- package/dist/approval/providers/event-based-approval-provider.js +0 -133
- package/dist/approval/providers/factory.d.ts.map +0 -1
- package/dist/approval/providers/noop-approval-provider.cjs +0 -54
- package/dist/approval/providers/noop-approval-provider.d.ts +0 -18
- package/dist/approval/providers/noop-approval-provider.d.ts.map +0 -1
- package/dist/approval/providers/noop-approval-provider.js +0 -31
- package/dist/config/agent-resolver.cjs +0 -153
- package/dist/config/agent-resolver.d.ts +0 -14
- package/dist/config/agent-resolver.d.ts.map +0 -1
- package/dist/config/agent-resolver.js +0 -123
- package/dist/config/error-codes.cjs +0 -39
- package/dist/config/error-codes.d.ts +0 -16
- package/dist/config/error-codes.d.ts.map +0 -1
- package/dist/config/error-codes.js +0 -16
- package/dist/config/errors.cjs +0 -126
- package/dist/config/errors.d.ts +0 -34
- package/dist/config/errors.d.ts.map +0 -1
- package/dist/config/errors.js +0 -103
- package/dist/config/index.cjs +0 -26
- package/dist/config/index.d.ts +0 -4
- package/dist/config/index.d.ts.map +0 -1
- package/dist/config/index.js +0 -3
- package/dist/config/loader.cjs +0 -119
- package/dist/config/loader.d.ts +0 -16
- package/dist/config/loader.d.ts.map +0 -1
- package/dist/config/loader.js +0 -86
- package/dist/config/writer.cjs +0 -182
- package/dist/config/writer.d.ts +0 -35
- package/dist/config/writer.d.ts.map +0 -1
- package/dist/config/writer.js +0 -147
- package/dist/preferences/constants.d.ts +0 -2
- package/dist/preferences/constants.d.ts.map +0 -1
- package/dist/preferences/constants.js +0 -5
- package/dist/preferences/error-codes.d.ts +0 -8
- package/dist/preferences/error-codes.d.ts.map +0 -1
- package/dist/preferences/error-codes.js +0 -12
- package/dist/preferences/errors.cjs +0 -75
- package/dist/preferences/errors.d.ts +0 -18
- package/dist/preferences/errors.d.ts.map +0 -1
- package/dist/preferences/errors.js +0 -51
- package/dist/preferences/index.cjs +0 -55
- package/dist/preferences/index.d.ts +0 -6
- package/dist/preferences/index.d.ts.map +0 -1
- package/dist/preferences/index.js +0 -32
- package/dist/preferences/loader.cjs +0 -138
- package/dist/preferences/loader.d.ts +0 -51
- package/dist/preferences/loader.d.ts.map +0 -1
- package/dist/preferences/loader.js +0 -110
- package/dist/preferences/schemas.cjs +0 -75
- package/dist/preferences/schemas.d.ts +0 -110
- package/dist/preferences/schemas.d.ts.map +0 -1
- package/dist/preferences/schemas.js +0 -49
- package/dist/prompts/providers/file-prompt-provider.cjs +0 -399
- package/dist/prompts/providers/file-prompt-provider.d.ts +0 -47
- package/dist/prompts/providers/file-prompt-provider.d.ts.map +0 -1
- package/dist/prompts/providers/file-prompt-provider.js +0 -376
- package/dist/prompts/providers/starter-prompt-provider.cjs +0 -170
- package/dist/prompts/providers/starter-prompt-provider.d.ts +0 -45
- package/dist/prompts/providers/starter-prompt-provider.d.ts.map +0 -1
- package/dist/prompts/providers/starter-prompt-provider.js +0 -147
- package/dist/utils/api-key-store.cjs +0 -56
- package/dist/utils/api-key-store.d.ts +0 -24
- package/dist/utils/api-key-store.d.ts.map +0 -1
- package/dist/utils/api-key-store.js +0 -31
- package/dist/utils/env.cjs +0 -154
- package/dist/utils/env.d.ts +0 -28
- package/dist/utils/env.d.ts.map +0 -1
- package/dist/utils/env.js +0 -119
- package/dist/utils/port-utils.cjs +0 -37
- package/dist/utils/port-utils.d.ts +0 -10
- package/dist/utils/port-utils.d.ts.map +0 -1
- package/dist/utils/port-utils.js +0 -14
- package/dist/utils/port-utils.spec.cjs +0 -26
- package/dist/utils/port-utils.spec.js +0 -25
- /package/dist/approval/{providers/factory.cjs → factory.cjs} +0 -0
|
@@ -10,7 +10,7 @@ import {
|
|
|
10
10
|
APICallError,
|
|
11
11
|
stepCountIs
|
|
12
12
|
} from "ai";
|
|
13
|
-
import {
|
|
13
|
+
import { DextoLogComponent } from "../../logger/v2/types.js";
|
|
14
14
|
import { jsonSchema } from "ai";
|
|
15
15
|
import { ContextManager } from "../../context/manager.js";
|
|
16
16
|
import { summarizeToolContentForText } from "../../context/utils.js";
|
|
@@ -24,7 +24,7 @@ import { ToolErrorCode } from "../../tools/error-codes.js";
|
|
|
24
24
|
import { VercelMessageFormatter } from "../formatters/vercel.js";
|
|
25
25
|
import { createTokenizer } from "../tokenizer/factory.js";
|
|
26
26
|
import { InstrumentClass } from "../../telemetry/decorators.js";
|
|
27
|
-
import { trace } from "@opentelemetry/api";
|
|
27
|
+
import { trace, context, propagation } from "@opentelemetry/api";
|
|
28
28
|
_VercelLLMService_decorators = [InstrumentClass({
|
|
29
29
|
prefix: "llm.vercel",
|
|
30
30
|
excludeMethods: ["getModelId", "getAllTools", "formatTools", "validateToolSupport"]
|
|
@@ -37,21 +37,23 @@ class VercelLLMService {
|
|
|
37
37
|
sessionEventBus;
|
|
38
38
|
sessionId;
|
|
39
39
|
toolSupportCache = /* @__PURE__ */ new Map();
|
|
40
|
+
logger;
|
|
40
41
|
/**
|
|
41
42
|
* Helper to extract model ID from LanguageModel union type (string | LanguageModelV2)
|
|
42
43
|
*/
|
|
43
44
|
getModelId() {
|
|
44
45
|
return typeof this.model === "string" ? this.model : this.model.modelId;
|
|
45
46
|
}
|
|
46
|
-
constructor(toolManager, model, systemPromptManager, historyProvider, sessionEventBus, config, sessionId, resourceManager) {
|
|
47
|
+
constructor(toolManager, model, systemPromptManager, historyProvider, sessionEventBus, config, sessionId, resourceManager, logger) {
|
|
48
|
+
this.logger = logger.createChild(DextoLogComponent.LLM);
|
|
47
49
|
this.model = model;
|
|
48
50
|
this.config = config;
|
|
49
51
|
this.toolManager = toolManager;
|
|
50
52
|
this.sessionEventBus = sessionEventBus;
|
|
51
53
|
this.sessionId = sessionId;
|
|
52
|
-
const formatter = new VercelMessageFormatter();
|
|
53
|
-
const tokenizer = createTokenizer(config.provider, this.getModelId());
|
|
54
|
-
const maxInputTokens = getEffectiveMaxInputTokens(config);
|
|
54
|
+
const formatter = new VercelMessageFormatter(this.logger);
|
|
55
|
+
const tokenizer = createTokenizer(config.provider, this.getModelId(), this.logger);
|
|
56
|
+
const maxInputTokens = getEffectiveMaxInputTokens(config, this.logger);
|
|
55
57
|
this.contextManager = new ContextManager(
|
|
56
58
|
config,
|
|
57
59
|
formatter,
|
|
@@ -60,10 +62,11 @@ class VercelLLMService {
|
|
|
60
62
|
tokenizer,
|
|
61
63
|
historyProvider,
|
|
62
64
|
sessionId,
|
|
63
|
-
resourceManager
|
|
65
|
+
resourceManager,
|
|
66
|
+
this.logger
|
|
64
67
|
// compressionStrategies uses default
|
|
65
68
|
);
|
|
66
|
-
logger.debug(
|
|
69
|
+
this.logger.debug(
|
|
67
70
|
`[VercelLLMService] Initialized for model: ${this.getModelId()}, provider: ${this.config.provider}, temperature: ${this.config.temperature}, maxOutputTokens: ${this.config.maxOutputTokens}`
|
|
68
71
|
);
|
|
69
72
|
}
|
|
@@ -71,7 +74,7 @@ class VercelLLMService {
|
|
|
71
74
|
return this.toolManager.getAllTools();
|
|
72
75
|
}
|
|
73
76
|
formatTools(tools) {
|
|
74
|
-
logger.debug(`Formatting tools for vercel`);
|
|
77
|
+
this.logger.debug(`Formatting tools for vercel`);
|
|
75
78
|
return Object.keys(tools).reduce((acc, toolName) => {
|
|
76
79
|
const tool = tools[toolName];
|
|
77
80
|
if (tool) {
|
|
@@ -80,10 +83,10 @@ class VercelLLMService {
|
|
|
80
83
|
execute: async (args, options) => {
|
|
81
84
|
const callId = options.toolCallId;
|
|
82
85
|
try {
|
|
83
|
-
logger.debug(
|
|
86
|
+
this.logger.debug(
|
|
84
87
|
`[vercel] Emitting toolCall event for ${toolName} with callId ${callId}`
|
|
85
88
|
);
|
|
86
|
-
this.sessionEventBus.emit("
|
|
89
|
+
this.sessionEventBus.emit("llm:tool-call", {
|
|
87
90
|
toolName,
|
|
88
91
|
args,
|
|
89
92
|
callId
|
|
@@ -99,10 +102,10 @@ class VercelLLMService {
|
|
|
99
102
|
rawResult,
|
|
100
103
|
{ success: true }
|
|
101
104
|
);
|
|
102
|
-
logger.debug(
|
|
105
|
+
this.logger.debug(
|
|
103
106
|
`[vercel] Emitting toolResult event for ${toolName} with callId ${callId}`
|
|
104
107
|
);
|
|
105
|
-
this.sessionEventBus.emit("
|
|
108
|
+
this.sessionEventBus.emit("llm:tool-result", {
|
|
106
109
|
toolName,
|
|
107
110
|
callId,
|
|
108
111
|
success: true,
|
|
@@ -131,7 +134,7 @@ class VercelLLMService {
|
|
|
131
134
|
errorResult,
|
|
132
135
|
{ success: false }
|
|
133
136
|
);
|
|
134
|
-
this.sessionEventBus.emit("
|
|
137
|
+
this.sessionEventBus.emit("llm:tool-result", {
|
|
135
138
|
toolName,
|
|
136
139
|
callId,
|
|
137
140
|
success: false,
|
|
@@ -139,7 +142,7 @@ class VercelLLMService {
|
|
|
139
142
|
...shouldIncludeRawToolResult() ? { rawResult: errorResult } : {}
|
|
140
143
|
});
|
|
141
144
|
} catch (persistErr) {
|
|
142
|
-
logger.error(
|
|
145
|
+
this.logger.error(
|
|
143
146
|
`Failed to persist error result for ${toolName}: ${String(persistErr)}`
|
|
144
147
|
);
|
|
145
148
|
}
|
|
@@ -158,11 +161,11 @@ class VercelLLMService {
|
|
|
158
161
|
return this.toolSupportCache.get(modelKey);
|
|
159
162
|
}
|
|
160
163
|
if (!this.config.baseURL) {
|
|
161
|
-
logger.debug(`Skipping tool validation for ${modelKey} - no custom baseURL`);
|
|
164
|
+
this.logger.debug(`Skipping tool validation for ${modelKey} - no custom baseURL`);
|
|
162
165
|
this.toolSupportCache.set(modelKey, true);
|
|
163
166
|
return true;
|
|
164
167
|
}
|
|
165
|
-
logger.debug(`Testing tool support for custom endpoint model: ${modelKey}`);
|
|
168
|
+
this.logger.debug(`Testing tool support for custom endpoint model: ${modelKey}`);
|
|
166
169
|
const testTool = {
|
|
167
170
|
test_tool: {
|
|
168
171
|
inputSchema: jsonSchema({
|
|
@@ -181,16 +184,16 @@ class VercelLLMService {
|
|
|
181
184
|
stopWhen: stepCountIs(1)
|
|
182
185
|
});
|
|
183
186
|
this.toolSupportCache.set(modelKey, true);
|
|
184
|
-
logger.debug(`Model ${modelKey} supports tools`);
|
|
187
|
+
this.logger.debug(`Model ${modelKey} supports tools`);
|
|
185
188
|
return true;
|
|
186
189
|
} catch (error) {
|
|
187
190
|
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
188
191
|
if (errorMessage.includes("does not support tools")) {
|
|
189
192
|
this.toolSupportCache.set(modelKey, false);
|
|
190
|
-
logger.debug(`Model ${modelKey} does not support tools`);
|
|
193
|
+
this.logger.debug(`Model ${modelKey} does not support tools`);
|
|
191
194
|
return false;
|
|
192
195
|
}
|
|
193
|
-
logger.debug(
|
|
196
|
+
this.logger.debug(
|
|
194
197
|
`Tool validation error for ${modelKey}, assuming supported: ${errorMessage}`
|
|
195
198
|
);
|
|
196
199
|
this.toolSupportCache.set(modelKey, true);
|
|
@@ -198,57 +201,80 @@ class VercelLLMService {
|
|
|
198
201
|
}
|
|
199
202
|
}
|
|
200
203
|
async completeTask(textInput, options, imageData, fileData, stream) {
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
)
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
const formattedMessages = prepared.formattedMessages;
|
|
222
|
-
const tokensUsed = prepared.tokensUsed;
|
|
223
|
-
logger.silly(
|
|
224
|
-
`Messages (potentially compressed): ${JSON.stringify(formattedMessages, null, 2)}`
|
|
204
|
+
const activeSpan = trace.getActiveSpan();
|
|
205
|
+
const currentContext = context.active();
|
|
206
|
+
const provider = this.config.provider;
|
|
207
|
+
const model = this.getModelId();
|
|
208
|
+
if (activeSpan) {
|
|
209
|
+
activeSpan.setAttribute("llm.provider", provider);
|
|
210
|
+
activeSpan.setAttribute("llm.model", model);
|
|
211
|
+
}
|
|
212
|
+
const existingBaggage = propagation.getBaggage(currentContext);
|
|
213
|
+
const baggageEntries = {};
|
|
214
|
+
if (existingBaggage) {
|
|
215
|
+
existingBaggage.getAllEntries().forEach(([key, entry]) => {
|
|
216
|
+
baggageEntries[key] = entry;
|
|
217
|
+
});
|
|
218
|
+
}
|
|
219
|
+
baggageEntries["llm.provider"] = { value: provider };
|
|
220
|
+
baggageEntries["llm.model"] = { value: model };
|
|
221
|
+
const updatedContext = propagation.setBaggage(
|
|
222
|
+
currentContext,
|
|
223
|
+
propagation.createBaggage(baggageEntries)
|
|
225
224
|
);
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
formattedTools,
|
|
232
|
-
this.config.maxIterations,
|
|
233
|
-
options?.signal
|
|
225
|
+
return await context.with(updatedContext, async () => {
|
|
226
|
+
await this.contextManager.addUserMessage(textInput, imageData, fileData);
|
|
227
|
+
const tools = await this.toolManager.getAllTools();
|
|
228
|
+
this.logger.silly(
|
|
229
|
+
`[VercelLLMService] Tools before formatting: ${JSON.stringify(tools, null, 2)}`
|
|
234
230
|
);
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
formattedTools,
|
|
239
|
-
this.config.maxIterations,
|
|
240
|
-
options?.signal
|
|
231
|
+
const formattedTools = this.formatTools(tools);
|
|
232
|
+
this.logger.silly(
|
|
233
|
+
`[VercelLLMService] Formatted tools: ${JSON.stringify(formattedTools, null, 2)}`
|
|
241
234
|
);
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
235
|
+
let fullResponse = "";
|
|
236
|
+
this.sessionEventBus.emit("llm:thinking");
|
|
237
|
+
const prepared = await this.contextManager.getFormattedMessagesWithCompression(
|
|
238
|
+
{ mcpManager: this.toolManager.getMcpManager() },
|
|
239
|
+
{ provider: this.config.provider, model: this.getModelId() }
|
|
240
|
+
);
|
|
241
|
+
const formattedMessages = prepared.formattedMessages;
|
|
242
|
+
const tokensUsed = prepared.tokensUsed;
|
|
243
|
+
this.logger.silly(
|
|
244
|
+
`Messages (potentially compressed): ${JSON.stringify(formattedMessages, null, 2)}`
|
|
245
|
+
);
|
|
246
|
+
this.logger.silly(`Tools: ${JSON.stringify(formattedTools, null, 2)}`);
|
|
247
|
+
this.logger.debug(`Estimated tokens being sent to Vercel provider: ${tokensUsed}`);
|
|
248
|
+
if (stream) {
|
|
249
|
+
fullResponse = await this.streamText(
|
|
250
|
+
formattedMessages,
|
|
251
|
+
formattedTools,
|
|
252
|
+
this.config.maxIterations,
|
|
253
|
+
options?.signal
|
|
254
|
+
);
|
|
255
|
+
} else {
|
|
256
|
+
fullResponse = await this.generateText(
|
|
257
|
+
formattedMessages,
|
|
258
|
+
formattedTools,
|
|
259
|
+
this.config.maxIterations,
|
|
260
|
+
options?.signal
|
|
261
|
+
);
|
|
262
|
+
}
|
|
263
|
+
if (options?.signal?.aborted) {
|
|
264
|
+
return fullResponse;
|
|
265
|
+
}
|
|
266
|
+
return fullResponse || `Reached maximum number of steps (${this.config.maxIterations}) without a final response.`;
|
|
267
|
+
});
|
|
247
268
|
}
|
|
248
269
|
async generateText(messages, tools, maxSteps = 50, signal) {
|
|
270
|
+
const activeSpan = trace.getActiveSpan();
|
|
271
|
+
if (activeSpan) {
|
|
272
|
+
activeSpan.setAttribute("llm.provider", this.config.provider);
|
|
273
|
+
activeSpan.setAttribute("llm.model", this.getModelId());
|
|
274
|
+
}
|
|
249
275
|
let stepIteration = 0;
|
|
250
276
|
const estimatedTokens = Math.ceil(JSON.stringify(messages, null, 2).length / 4);
|
|
251
|
-
logger.debug(
|
|
277
|
+
this.logger.debug(
|
|
252
278
|
`vercel generateText:Generating text with messages (${estimatedTokens} estimated tokens)`
|
|
253
279
|
);
|
|
254
280
|
const temperature = this.config.temperature;
|
|
@@ -256,7 +282,7 @@ class VercelLLMService {
|
|
|
256
282
|
const supportsTools = await this.validateToolSupport();
|
|
257
283
|
const effectiveTools = supportsTools ? tools : {};
|
|
258
284
|
if (!supportsTools && Object.keys(tools).length > 0) {
|
|
259
|
-
logger.debug(
|
|
285
|
+
this.logger.debug(
|
|
260
286
|
`Model ${this.getModelId()} does not support tools, using empty tools object for generation`
|
|
261
287
|
);
|
|
262
288
|
}
|
|
@@ -268,13 +294,13 @@ class VercelLLMService {
|
|
|
268
294
|
tools: effectiveTools,
|
|
269
295
|
...signal ? { abortSignal: signal } : {},
|
|
270
296
|
onStepFinish: async (step) => {
|
|
271
|
-
logger.debug(`Step iteration: ${stepIteration}`);
|
|
297
|
+
this.logger.debug(`Step iteration: ${stepIteration}`);
|
|
272
298
|
stepIteration++;
|
|
273
|
-
logger.debug(`Step finished, text: ${step.text}`);
|
|
274
|
-
logger.debug(
|
|
299
|
+
this.logger.debug(`Step finished, text: ${step.text}`);
|
|
300
|
+
this.logger.debug(
|
|
275
301
|
`Step finished, step tool calls: ${JSON.stringify(step.toolCalls, null, 2)}`
|
|
276
302
|
);
|
|
277
|
-
logger.debug(
|
|
303
|
+
this.logger.debug(
|
|
278
304
|
`Step finished, step tool results: ${JSON.stringify(step.toolResults, null, 2)}`
|
|
279
305
|
);
|
|
280
306
|
},
|
|
@@ -282,7 +308,7 @@ class VercelLLMService {
|
|
|
282
308
|
...includeMaxOutputTokens ? { maxOutputTokens } : {},
|
|
283
309
|
...temperature !== void 0 && { temperature }
|
|
284
310
|
});
|
|
285
|
-
this.sessionEventBus.emit("
|
|
311
|
+
this.sessionEventBus.emit("llm:response", {
|
|
286
312
|
content: response.text,
|
|
287
313
|
...response.reasoningText && { reasoning: response.reasoningText },
|
|
288
314
|
provider: this.config.provider,
|
|
@@ -303,8 +329,8 @@ class VercelLLMService {
|
|
|
303
329
|
}
|
|
304
330
|
}
|
|
305
331
|
});
|
|
306
|
-
const
|
|
307
|
-
if (
|
|
332
|
+
const activeSpan2 = trace.getActiveSpan();
|
|
333
|
+
if (activeSpan2) {
|
|
308
334
|
const attributes = {};
|
|
309
335
|
if (response.totalUsage.inputTokens !== void 0) {
|
|
310
336
|
attributes["gen_ai.usage.input_tokens"] = response.totalUsage.inputTokens;
|
|
@@ -318,7 +344,7 @@ class VercelLLMService {
|
|
|
318
344
|
if (response.totalUsage.reasoningTokens !== void 0) {
|
|
319
345
|
attributes["gen_ai.usage.reasoning_tokens"] = response.totalUsage.reasoningTokens;
|
|
320
346
|
}
|
|
321
|
-
|
|
347
|
+
activeSpan2.setAttributes(attributes);
|
|
322
348
|
}
|
|
323
349
|
await this.contextManager.processLLMResponse(response);
|
|
324
350
|
if (typeof response.totalUsage.totalTokens === "number") {
|
|
@@ -326,17 +352,24 @@ class VercelLLMService {
|
|
|
326
352
|
}
|
|
327
353
|
return response.text;
|
|
328
354
|
} catch (err) {
|
|
329
|
-
this.mapProviderError(err, "generate");
|
|
355
|
+
const error = this.mapProviderError(err, "generate");
|
|
356
|
+
this.sessionEventBus.emit("llm:error", {
|
|
357
|
+
error,
|
|
358
|
+
context: "generateText",
|
|
359
|
+
recoverable: false
|
|
360
|
+
});
|
|
361
|
+
return "";
|
|
330
362
|
}
|
|
331
363
|
}
|
|
332
364
|
mapProviderError(err, phase) {
|
|
333
365
|
if (APICallError.isInstance?.(err)) {
|
|
366
|
+
this.logger.error(`APICallError in mapProviderError: ${JSON.stringify(err, null, 2)}`);
|
|
334
367
|
const status = err.statusCode;
|
|
335
368
|
const headers = err.responseHeaders || {};
|
|
336
369
|
const retryAfter = headers["retry-after"] ? Number(headers["retry-after"]) : void 0;
|
|
337
370
|
const body = typeof err.responseBody === "string" ? err.responseBody : JSON.stringify(err.responseBody ?? "");
|
|
338
371
|
if (status === 429) {
|
|
339
|
-
|
|
372
|
+
return new DextoRuntimeError(
|
|
340
373
|
LLMErrorCode.RATE_LIMIT_EXCEEDED,
|
|
341
374
|
ErrorScope.LLM,
|
|
342
375
|
ErrorType.RATE_LIMIT,
|
|
@@ -353,7 +386,7 @@ class VercelLLMService {
|
|
|
353
386
|
);
|
|
354
387
|
}
|
|
355
388
|
if (status === 408) {
|
|
356
|
-
|
|
389
|
+
return new DextoRuntimeError(
|
|
357
390
|
LLMErrorCode.GENERATION_FAILED,
|
|
358
391
|
ErrorScope.LLM,
|
|
359
392
|
ErrorType.TIMEOUT,
|
|
@@ -368,7 +401,7 @@ class VercelLLMService {
|
|
|
368
401
|
}
|
|
369
402
|
);
|
|
370
403
|
}
|
|
371
|
-
|
|
404
|
+
return new DextoRuntimeError(
|
|
372
405
|
LLMErrorCode.GENERATION_FAILED,
|
|
373
406
|
ErrorScope.LLM,
|
|
374
407
|
ErrorType.THIRD_PARTY,
|
|
@@ -383,38 +416,44 @@ class VercelLLMService {
|
|
|
383
416
|
}
|
|
384
417
|
);
|
|
385
418
|
}
|
|
386
|
-
|
|
419
|
+
return toError(err, this.logger);
|
|
387
420
|
}
|
|
388
421
|
// Updated streamText to behave like generateText - returns string and handles message processing internally
|
|
389
422
|
async streamText(messages, tools, maxSteps = 10, signal) {
|
|
423
|
+
const activeSpan = trace.getActiveSpan();
|
|
424
|
+
if (activeSpan) {
|
|
425
|
+
activeSpan.setAttribute("llm.provider", this.config.provider);
|
|
426
|
+
activeSpan.setAttribute("llm.model", this.getModelId());
|
|
427
|
+
}
|
|
390
428
|
let stepIteration = 0;
|
|
391
429
|
const temperature = this.config.temperature;
|
|
392
430
|
const maxOutputTokens = this.config.maxOutputTokens;
|
|
393
431
|
const supportsTools = await this.validateToolSupport();
|
|
394
432
|
const effectiveTools = supportsTools ? tools : {};
|
|
395
433
|
if (!supportsTools && Object.keys(tools).length > 0) {
|
|
396
|
-
logger.debug(
|
|
434
|
+
this.logger.debug(
|
|
397
435
|
`Model ${this.getModelId()} does not support tools, using empty tools object for streaming`
|
|
398
436
|
);
|
|
399
437
|
}
|
|
400
438
|
let streamErr;
|
|
401
439
|
const includeMaxOutputTokens = typeof maxOutputTokens === "number";
|
|
402
|
-
|
|
440
|
+
let response;
|
|
441
|
+
response = streamText({
|
|
403
442
|
model: this.model,
|
|
404
443
|
messages,
|
|
405
444
|
tools: effectiveTools,
|
|
406
445
|
...signal ? { abortSignal: signal } : {},
|
|
407
446
|
onChunk: (chunk) => {
|
|
408
|
-
logger.debug(`Chunk type: ${chunk.chunk.type}`);
|
|
447
|
+
this.logger.debug(`Chunk type: ${chunk.chunk.type}`);
|
|
409
448
|
if (chunk.chunk.type === "text-delta") {
|
|
410
|
-
this.sessionEventBus.emit("
|
|
411
|
-
|
|
449
|
+
this.sessionEventBus.emit("llm:chunk", {
|
|
450
|
+
chunkType: "text",
|
|
412
451
|
content: chunk.chunk.text,
|
|
413
452
|
isComplete: false
|
|
414
453
|
});
|
|
415
454
|
} else if (chunk.chunk.type === "reasoning-delta") {
|
|
416
|
-
this.sessionEventBus.emit("
|
|
417
|
-
|
|
455
|
+
this.sessionEventBus.emit("llm:chunk", {
|
|
456
|
+
chunkType: "reasoning",
|
|
418
457
|
content: chunk.chunk.text,
|
|
419
458
|
isComplete: false
|
|
420
459
|
});
|
|
@@ -424,9 +463,9 @@ class VercelLLMService {
|
|
|
424
463
|
// Vercel triggers onAbort instead of onError for cancelled streams.
|
|
425
464
|
// This is where cancellation logic should be handled properly.
|
|
426
465
|
onError: (error) => {
|
|
427
|
-
const err =
|
|
428
|
-
logger.error(`Error in streamText: ${err
|
|
429
|
-
this.sessionEventBus.emit("
|
|
466
|
+
const err = this.mapProviderError(error, "stream");
|
|
467
|
+
this.logger.error(`Error in streamText after parsing: ${err.toString()}`);
|
|
468
|
+
this.sessionEventBus.emit("llm:error", {
|
|
430
469
|
error: err,
|
|
431
470
|
context: "streamText",
|
|
432
471
|
recoverable: false
|
|
@@ -434,13 +473,13 @@ class VercelLLMService {
|
|
|
434
473
|
streamErr = error;
|
|
435
474
|
},
|
|
436
475
|
onStepFinish: async (step) => {
|
|
437
|
-
logger.debug(`Step iteration: ${stepIteration}`);
|
|
476
|
+
this.logger.debug(`Step iteration: ${stepIteration}`);
|
|
438
477
|
stepIteration++;
|
|
439
|
-
logger.debug(`Step finished, text: ${step.text}`);
|
|
440
|
-
logger.debug(
|
|
478
|
+
this.logger.debug(`Step finished, text: ${step.text}`);
|
|
479
|
+
this.logger.debug(
|
|
441
480
|
`Step finished, step tool calls: ${JSON.stringify(step.toolCalls, null, 2)}`
|
|
442
481
|
);
|
|
443
|
-
logger.debug(
|
|
482
|
+
this.logger.debug(
|
|
444
483
|
`Step finished, step tool results: ${JSON.stringify(step.toolResults, null, 2)}`
|
|
445
484
|
);
|
|
446
485
|
},
|
|
@@ -449,16 +488,28 @@ class VercelLLMService {
|
|
|
449
488
|
...includeMaxOutputTokens ? { maxOutputTokens } : {},
|
|
450
489
|
...temperature !== void 0 && { temperature }
|
|
451
490
|
});
|
|
452
|
-
const [finalText, usage, reasoningText] = await Promise.all([
|
|
453
|
-
response.text,
|
|
454
|
-
response.totalUsage,
|
|
455
|
-
response.reasoningText
|
|
456
|
-
]);
|
|
457
|
-
response.totalUsage;
|
|
458
491
|
if (streamErr) {
|
|
459
492
|
return "";
|
|
460
493
|
}
|
|
461
|
-
|
|
494
|
+
let finalText;
|
|
495
|
+
let usage;
|
|
496
|
+
let reasoningText;
|
|
497
|
+
try {
|
|
498
|
+
[finalText, usage, reasoningText] = await Promise.all([
|
|
499
|
+
response.text,
|
|
500
|
+
response.totalUsage,
|
|
501
|
+
response.reasoningText
|
|
502
|
+
]);
|
|
503
|
+
} catch (_error) {
|
|
504
|
+
this.logger.debug(
|
|
505
|
+
`streamText finalization failed while awaiting text/usage/reasoning: ${String(_error)}`
|
|
506
|
+
);
|
|
507
|
+
return "";
|
|
508
|
+
}
|
|
509
|
+
this.logger.debug(`streamText finalText: ${finalText}`);
|
|
510
|
+
this.logger.debug(`streamText usage: ${JSON.stringify(usage, null, 2)}`);
|
|
511
|
+
this.logger.debug(`streamText reasoningText: ${reasoningText}`);
|
|
512
|
+
this.sessionEventBus.emit("llm:response", {
|
|
462
513
|
content: finalText,
|
|
463
514
|
...reasoningText && { reasoning: reasoningText },
|
|
464
515
|
provider: this.config.provider,
|
|
@@ -473,8 +524,8 @@ class VercelLLMService {
|
|
|
473
524
|
...usage.totalTokens !== void 0 && { totalTokens: usage.totalTokens }
|
|
474
525
|
}
|
|
475
526
|
});
|
|
476
|
-
const
|
|
477
|
-
if (
|
|
527
|
+
const activeSpan2 = trace.getActiveSpan();
|
|
528
|
+
if (activeSpan2) {
|
|
478
529
|
const attributes = {};
|
|
479
530
|
if (usage.inputTokens !== void 0) {
|
|
480
531
|
attributes["gen_ai.usage.input_tokens"] = usage.inputTokens;
|
|
@@ -488,13 +539,13 @@ class VercelLLMService {
|
|
|
488
539
|
if (usage.reasoningTokens !== void 0) {
|
|
489
540
|
attributes["gen_ai.usage.reasoning_tokens"] = usage.reasoningTokens;
|
|
490
541
|
}
|
|
491
|
-
|
|
542
|
+
activeSpan2.setAttributes(attributes);
|
|
492
543
|
}
|
|
493
544
|
if (typeof usage.totalTokens === "number") {
|
|
494
545
|
this.contextManager.updateActualTokenCount(usage.totalTokens);
|
|
495
546
|
}
|
|
496
547
|
await this.contextManager.processLLMStreamResponse(response);
|
|
497
|
-
logger.silly(`streamText response object: ${JSON.stringify(response, null, 2)}`);
|
|
548
|
+
this.logger.silly(`streamText response object: ${JSON.stringify(response, null, 2)}`);
|
|
498
549
|
return finalText;
|
|
499
550
|
}
|
|
500
551
|
/**
|
|
@@ -508,12 +559,13 @@ class VercelLLMService {
|
|
|
508
559
|
modelMaxInputTokens = getMaxInputTokensForModel(
|
|
509
560
|
this.config.provider,
|
|
510
561
|
// Use our internal provider name
|
|
511
|
-
this.getModelId()
|
|
562
|
+
this.getModelId(),
|
|
563
|
+
this.logger
|
|
512
564
|
);
|
|
513
565
|
} catch (error) {
|
|
514
566
|
if (error instanceof DextoRuntimeError && error.code === LLMErrorCode.MODEL_UNKNOWN) {
|
|
515
567
|
modelMaxInputTokens = configuredMaxTokens;
|
|
516
|
-
logger.debug(
|
|
568
|
+
this.logger.debug(
|
|
517
569
|
`Could not find model ${this.getModelId()} in LLM registry to get max tokens. Using configured max tokens: ${configuredMaxTokens}.`
|
|
518
570
|
);
|
|
519
571
|
} else {
|
|
@@ -25,10 +25,10 @@ var import_openai = require("./openai.js");
|
|
|
25
25
|
var import_anthropic = require("./anthropic.js");
|
|
26
26
|
var import_google = require("./google.js");
|
|
27
27
|
var import_default = require("./default.js");
|
|
28
|
-
function createTokenizer(provider, model) {
|
|
28
|
+
function createTokenizer(provider, model, logger) {
|
|
29
29
|
switch (provider) {
|
|
30
30
|
case "openai":
|
|
31
|
-
return new import_openai.OpenAITokenizer(model);
|
|
31
|
+
return new import_openai.OpenAITokenizer(model, logger);
|
|
32
32
|
case "anthropic":
|
|
33
33
|
return new import_anthropic.AnthropicTokenizer();
|
|
34
34
|
case "google":
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import { ITokenizer } from './types.js';
|
|
2
2
|
import type { LLMProvider } from '../types.js';
|
|
3
|
+
import type { IDextoLogger } from '../../logger/v2/types.js';
|
|
3
4
|
/**
|
|
4
5
|
* Creates the appropriate tokenizer for the specified provider and model
|
|
5
6
|
* @param provider The LLM provider name (case-insensitive)
|
|
6
7
|
* @param model The specific model name (used by some tokenizers)
|
|
8
|
+
* @param logger The logger instance for logging
|
|
7
9
|
* @returns An appropriate tokenizer implementation, or DefaultTokenizer if no specific implementation exists
|
|
8
10
|
*/
|
|
9
|
-
export declare function createTokenizer(provider: LLMProvider, model: string): ITokenizer;
|
|
11
|
+
export declare function createTokenizer(provider: LLMProvider, model: string, logger: IDextoLogger): ITokenizer;
|
|
10
12
|
//# sourceMappingURL=factory.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../../src/llm/tokenizer/factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAKxC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../../src/llm/tokenizer/factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAKxC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAE7D;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC3B,QAAQ,EAAE,WAAW,EACrB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,YAAY,GACrB,UAAU,CAcZ"}
|
|
@@ -3,10 +3,10 @@ import { OpenAITokenizer } from "./openai.js";
|
|
|
3
3
|
import { AnthropicTokenizer } from "./anthropic.js";
|
|
4
4
|
import { GoogleTokenizer } from "./google.js";
|
|
5
5
|
import { DefaultTokenizer } from "./default.js";
|
|
6
|
-
function createTokenizer(provider, model) {
|
|
6
|
+
function createTokenizer(provider, model, logger) {
|
|
7
7
|
switch (provider) {
|
|
8
8
|
case "openai":
|
|
9
|
-
return new OpenAITokenizer(model);
|
|
9
|
+
return new OpenAITokenizer(model, logger);
|
|
10
10
|
case "anthropic":
|
|
11
11
|
return new AnthropicTokenizer();
|
|
12
12
|
case "google":
|
|
@@ -23,7 +23,7 @@ __export(openai_exports, {
|
|
|
23
23
|
module.exports = __toCommonJS(openai_exports);
|
|
24
24
|
var import_types = require("./types.js");
|
|
25
25
|
var import_module = require("module");
|
|
26
|
-
var
|
|
26
|
+
var import_types2 = require("../../logger/v2/types.js");
|
|
27
27
|
const import_meta = {};
|
|
28
28
|
const FALLBACK_ENCODING = "cl100k_base";
|
|
29
29
|
class OpenAITokenizer {
|
|
@@ -31,29 +31,36 @@ class OpenAITokenizer {
|
|
|
31
31
|
// Store original model name for context/logging
|
|
32
32
|
encoding;
|
|
33
33
|
// Tiktoken encoding instance
|
|
34
|
+
logger;
|
|
34
35
|
/**
|
|
35
36
|
* Initializes the tokenizer for a specific OpenAI model or compatible model.
|
|
36
37
|
* @param model The OpenAI model name (e.g., 'gpt-5') or a custom model name.
|
|
38
|
+
* @param logger The logger instance for logging.
|
|
37
39
|
* @throws TokenizationError if tiktoken initialization fails for both specific model and fallback.
|
|
38
40
|
*/
|
|
39
|
-
constructor(model) {
|
|
41
|
+
constructor(model, logger) {
|
|
40
42
|
this.modelName = model;
|
|
43
|
+
this.logger = logger.createChild(import_types2.DextoLogComponent.LLM);
|
|
41
44
|
try {
|
|
42
45
|
const { encoding_for_model } = loadTiktoken();
|
|
43
46
|
this.encoding = encoding_for_model(model);
|
|
44
|
-
|
|
47
|
+
this.logger.debug(`Initialized tiktoken with specific encoding for model: ${model}`);
|
|
45
48
|
} catch (error) {
|
|
46
|
-
|
|
49
|
+
this.logger.warn(
|
|
47
50
|
`Could not get specific encoding for model '${this.modelName}'. Falling back to '${FALLBACK_ENCODING}'. Error: ${error instanceof Error ? error.message : String(error)}`
|
|
48
51
|
);
|
|
49
52
|
try {
|
|
50
53
|
const { get_encoding } = loadTiktoken();
|
|
51
54
|
this.encoding = get_encoding(FALLBACK_ENCODING);
|
|
52
|
-
|
|
55
|
+
this.logger.debug(
|
|
56
|
+
`Initialized tiktoken with fallback encoding: ${FALLBACK_ENCODING}`
|
|
57
|
+
);
|
|
53
58
|
} catch (fallbackError) {
|
|
54
|
-
|
|
59
|
+
this.logger.error(
|
|
55
60
|
`Failed to initialize tiktoken with specific model '${this.modelName}' or fallback '${FALLBACK_ENCODING}'.`,
|
|
56
|
-
|
|
61
|
+
{
|
|
62
|
+
error: fallbackError instanceof Error ? fallbackError.message : String(fallbackError)
|
|
63
|
+
}
|
|
57
64
|
);
|
|
58
65
|
throw new import_types.TokenizationError(
|
|
59
66
|
`Failed to initialize tiktoken for model '${this.modelName}' using specific or fallback encoding ('${FALLBACK_ENCODING}'): ${fallbackError instanceof Error ? fallbackError.message : String(fallbackError)}`
|
|
@@ -73,9 +80,9 @@ class OpenAITokenizer {
|
|
|
73
80
|
const tokens = this.encoding.encode(text);
|
|
74
81
|
return tokens.length;
|
|
75
82
|
} catch (error) {
|
|
76
|
-
|
|
83
|
+
this.logger.error(
|
|
77
84
|
`Tiktoken encoding failed for model ${this.modelName} (using encoding: ${this.encoding.name}):`,
|
|
78
|
-
error
|
|
85
|
+
{ error: error instanceof Error ? error.message : String(error) }
|
|
79
86
|
);
|
|
80
87
|
throw new import_types.TokenizationError(
|
|
81
88
|
`Encoding failed for text snippet using model ${this.modelName}.`
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { ITokenizer } from './types.js';
|
|
2
|
+
import type { IDextoLogger } from '../../logger/v2/types.js';
|
|
2
3
|
/**
|
|
3
4
|
* Tokenizer for OpenAI models using the tiktoken library.
|
|
4
5
|
* Attempts to use the specific model's encoding, falls back to a common base encoding ('cl100k_base')
|
|
@@ -7,12 +8,14 @@ import { ITokenizer } from './types.js';
|
|
|
7
8
|
export declare class OpenAITokenizer implements ITokenizer {
|
|
8
9
|
private modelName;
|
|
9
10
|
private encoding;
|
|
11
|
+
private logger;
|
|
10
12
|
/**
|
|
11
13
|
* Initializes the tokenizer for a specific OpenAI model or compatible model.
|
|
12
14
|
* @param model The OpenAI model name (e.g., 'gpt-5') or a custom model name.
|
|
15
|
+
* @param logger The logger instance for logging.
|
|
13
16
|
* @throws TokenizationError if tiktoken initialization fails for both specific model and fallback.
|
|
14
17
|
*/
|
|
15
|
-
constructor(model: string);
|
|
18
|
+
constructor(model: string, logger: IDextoLogger);
|
|
16
19
|
/**
|
|
17
20
|
* Counts the tokens in the text using the determined encoding.
|
|
18
21
|
* @param text Text content to count tokens for
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openai.d.ts","sourceRoot":"","sources":["../../../src/llm/tokenizer/openai.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAqB,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"openai.d.ts","sourceRoot":"","sources":["../../../src/llm/tokenizer/openai.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAqB,MAAM,YAAY,CAAC;AAG3D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAM7D;;;;GAIG;AACH,qBAAa,eAAgB,YAAW,UAAU;IAC9C,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,MAAM,CAAe;IAE7B;;;;;OAKG;gBACS,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY;IAqC/C;;;;;OAKG;IACH,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAgBjC;;;OAGG;IACH,IAAI,IAAI,IAAI;IAMZ,eAAe,IAAI,MAAM;CAG5B"}
|