@dexto/core 1.2.6 → 1.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +55 -13
- package/dist/agent/DextoAgent.cjs +627 -228
- package/dist/agent/DextoAgent.d.ts +157 -34
- package/dist/agent/DextoAgent.d.ts.map +1 -1
- package/dist/agent/DextoAgent.js +625 -227
- package/dist/agent/agentCard.js +1 -1
- package/dist/agent/error-codes.cjs +1 -0
- package/dist/agent/error-codes.d.ts +2 -1
- package/dist/agent/error-codes.d.ts.map +1 -1
- package/dist/agent/error-codes.js +2 -1
- package/dist/agent/errors.cjs +13 -0
- package/dist/agent/errors.d.ts +4 -0
- package/dist/agent/errors.d.ts.map +1 -1
- package/dist/agent/errors.js +14 -1
- package/dist/agent/index.d.ts +1 -1
- package/dist/agent/index.d.ts.map +1 -1
- package/dist/agent/index.js +1 -1
- package/dist/agent/schemas.cjs +4 -1
- package/dist/agent/schemas.d.ts +92 -55
- package/dist/agent/schemas.d.ts.map +1 -1
- package/dist/agent/schemas.js +7 -3
- package/dist/agent/state-manager.cjs +5 -5
- package/dist/agent/state-manager.d.ts +4 -4
- package/dist/agent/state-manager.js +6 -6
- package/dist/agent/types.d.ts +24 -11
- package/dist/agent/types.d.ts.map +1 -1
- package/dist/approval/error-codes.js +1 -1
- package/dist/approval/errors.js +1 -1
- package/dist/approval/factory.js +1 -1
- package/dist/approval/index.js +1 -1
- package/dist/approval/manager.cjs +69 -3
- package/dist/approval/manager.d.ts +41 -3
- package/dist/approval/manager.d.ts.map +1 -1
- package/dist/approval/manager.js +70 -4
- package/dist/approval/schemas.cjs +20 -5
- package/dist/approval/schemas.d.ts +127 -52
- package/dist/approval/schemas.d.ts.map +1 -1
- package/dist/approval/schemas.js +21 -6
- package/dist/approval/types.d.ts +6 -0
- package/dist/approval/types.d.ts.map +1 -1
- package/dist/approval/types.js +1 -1
- package/dist/{chunk-C6A6W6XS.js → chunk-PTJYTZNU.js} +44 -1
- package/dist/{llm/tokenizer/factory.cjs → context/compression/overflow.cjs} +20 -21
- package/dist/context/compression/overflow.d.ts +33 -0
- package/dist/context/compression/overflow.d.ts.map +1 -0
- package/dist/context/compression/overflow.js +19 -0
- package/dist/context/compression/reactive-overflow.cjs +201 -0
- package/dist/context/compression/reactive-overflow.d.ts +81 -0
- package/dist/context/compression/reactive-overflow.d.ts.map +1 -0
- package/dist/context/compression/reactive-overflow.js +178 -0
- package/dist/context/compression/types.d.ts +9 -7
- package/dist/context/compression/types.d.ts.map +1 -1
- package/dist/context/error-codes.cjs +3 -0
- package/dist/context/error-codes.d.ts +4 -1
- package/dist/context/error-codes.d.ts.map +1 -1
- package/dist/context/error-codes.js +4 -1
- package/dist/context/errors.cjs +28 -0
- package/dist/context/errors.d.ts +7 -0
- package/dist/context/errors.d.ts.map +1 -1
- package/dist/context/errors.js +29 -1
- package/dist/context/index.js +1 -1
- package/dist/context/manager.cjs +287 -323
- package/dist/context/manager.d.ts +65 -111
- package/dist/context/manager.d.ts.map +1 -1
- package/dist/context/manager.js +287 -328
- package/dist/context/media-helpers.js +1 -1
- package/dist/context/types.cjs +49 -0
- package/dist/context/types.d.ts +185 -72
- package/dist/context/types.d.ts.map +1 -1
- package/dist/context/types.js +35 -0
- package/dist/context/utils.cjs +266 -283
- package/dist/context/utils.d.ts +32 -18
- package/dist/context/utils.d.ts.map +1 -1
- package/dist/context/utils.js +266 -283
- package/dist/errors/DextoBaseError.js +1 -1
- package/dist/errors/DextoRuntimeError.js +1 -1
- package/dist/errors/DextoValidationError.js +1 -1
- package/dist/errors/index.js +1 -1
- package/dist/errors/result-bridge.js +1 -1
- package/dist/errors/types.cjs +1 -0
- package/dist/errors/types.d.ts +4 -2
- package/dist/errors/types.d.ts.map +1 -1
- package/dist/errors/types.js +2 -1
- package/dist/events/index.cjs +22 -2
- package/dist/events/index.d.ts +170 -62
- package/dist/events/index.d.ts.map +1 -1
- package/dist/events/index.js +23 -3
- package/dist/filesystem/error-codes.js +1 -1
- package/dist/filesystem/errors.js +1 -1
- package/dist/filesystem/filesystem-service.js +1 -1
- package/dist/filesystem/index.js +1 -1
- package/dist/filesystem/path-validator.js +1 -1
- package/dist/index.browser.cjs +23 -8
- package/dist/index.browser.d.ts +4 -3
- package/dist/index.browser.d.ts.map +1 -1
- package/dist/index.browser.js +20 -3
- package/dist/index.js +1 -1
- package/dist/llm/error-codes.cjs +0 -1
- package/dist/llm/error-codes.d.ts +0 -1
- package/dist/llm/error-codes.d.ts.map +1 -1
- package/dist/llm/error-codes.js +1 -2
- package/dist/llm/errors.cjs +10 -10
- package/dist/llm/errors.d.ts +5 -6
- package/dist/llm/errors.d.ts.map +1 -1
- package/dist/llm/errors.js +12 -12
- package/dist/llm/executor/stream-processor.cjs +367 -0
- package/dist/llm/executor/stream-processor.d.ts +55 -0
- package/dist/llm/executor/stream-processor.d.ts.map +1 -0
- package/dist/llm/executor/stream-processor.js +344 -0
- package/dist/llm/executor/tool-output-truncator.cjs +75 -0
- package/dist/llm/executor/tool-output-truncator.d.ts +27 -0
- package/dist/llm/executor/tool-output-truncator.d.ts.map +1 -0
- package/dist/llm/executor/tool-output-truncator.js +48 -0
- package/dist/llm/executor/turn-executor.cjs +753 -0
- package/dist/llm/executor/turn-executor.d.ts +166 -0
- package/dist/llm/executor/turn-executor.d.ts.map +1 -0
- package/dist/llm/executor/turn-executor.js +684 -0
- package/dist/llm/executor/types.d.ts +27 -0
- package/dist/llm/executor/types.d.ts.map +1 -0
- package/dist/llm/formatters/vercel.cjs +20 -186
- package/dist/llm/formatters/vercel.d.ts +2 -14
- package/dist/llm/formatters/vercel.d.ts.map +1 -1
- package/dist/llm/formatters/vercel.js +19 -185
- package/dist/llm/registry.cjs +36 -45
- package/dist/llm/registry.d.ts +53 -39
- package/dist/llm/registry.d.ts.map +1 -1
- package/dist/llm/registry.js +34 -42
- package/dist/llm/resolver.cjs +1 -31
- package/dist/llm/resolver.d.ts.map +1 -1
- package/dist/llm/resolver.js +2 -34
- package/dist/llm/schemas.cjs +2 -17
- package/dist/llm/schemas.d.ts +10 -23
- package/dist/llm/schemas.d.ts.map +1 -1
- package/dist/llm/schemas.js +5 -22
- package/dist/llm/services/factory.cjs +3 -92
- package/dist/llm/services/factory.d.ts +14 -4
- package/dist/llm/services/factory.d.ts.map +1 -1
- package/dist/llm/services/factory.js +4 -83
- package/dist/llm/services/test-utils.integration.cjs +6 -8
- package/dist/llm/services/test-utils.integration.d.ts.map +1 -1
- package/dist/llm/services/test-utils.integration.js +7 -9
- package/dist/llm/services/types.d.ts +1 -28
- package/dist/llm/services/types.d.ts.map +1 -1
- package/dist/llm/services/vercel.cjs +54 -468
- package/dist/llm/services/vercel.d.ts +38 -21
- package/dist/llm/services/vercel.d.ts.map +1 -1
- package/dist/llm/services/vercel.js +56 -475
- package/dist/llm/types.cjs +0 -3
- package/dist/llm/types.d.ts +8 -8
- package/dist/llm/types.d.ts.map +1 -1
- package/dist/llm/types.js +1 -3
- package/dist/llm/validation.js +1 -1
- package/dist/logger/browser.js +1 -1
- package/dist/logger/factory.js +1 -1
- package/dist/logger/index.js +1 -1
- package/dist/logger/logger.js +1 -1
- package/dist/logger/v2/dexto-logger.cjs +34 -6
- package/dist/logger/v2/dexto-logger.d.ts +20 -2
- package/dist/logger/v2/dexto-logger.d.ts.map +1 -1
- package/dist/logger/v2/dexto-logger.js +35 -7
- package/dist/logger/v2/error-codes.js +1 -1
- package/dist/logger/v2/errors.js +1 -1
- package/dist/logger/v2/schemas.cjs +1 -1
- package/dist/logger/v2/schemas.js +2 -2
- package/dist/logger/v2/test-utils.cjs +70 -0
- package/dist/logger/v2/test-utils.d.ts +17 -0
- package/dist/logger/v2/test-utils.d.ts.map +1 -0
- package/dist/logger/v2/test-utils.js +46 -0
- package/dist/logger/v2/transport-factory.js +1 -1
- package/dist/logger/v2/transports/console-transport.js +1 -1
- package/dist/logger/v2/transports/file-transport.cjs +6 -0
- package/dist/logger/v2/transports/file-transport.d.ts +4 -0
- package/dist/logger/v2/transports/file-transport.d.ts.map +1 -1
- package/dist/logger/v2/transports/file-transport.js +7 -1
- package/dist/logger/v2/types.cjs +1 -0
- package/dist/logger/v2/types.d.ts +18 -2
- package/dist/logger/v2/types.d.ts.map +1 -1
- package/dist/logger/v2/types.js +2 -1
- package/dist/mcp/error-codes.cjs +1 -0
- package/dist/mcp/error-codes.d.ts +1 -0
- package/dist/mcp/error-codes.d.ts.map +1 -1
- package/dist/mcp/error-codes.js +2 -1
- package/dist/mcp/errors.cjs +13 -0
- package/dist/mcp/errors.d.ts +7 -0
- package/dist/mcp/errors.d.ts.map +1 -1
- package/dist/mcp/errors.js +14 -1
- package/dist/mcp/manager.cjs +4 -0
- package/dist/mcp/manager.d.ts.map +1 -1
- package/dist/mcp/manager.js +5 -1
- package/dist/mcp/mcp-client.js +1 -1
- package/dist/mcp/resolver.js +1 -1
- package/dist/mcp/schemas.cjs +6 -0
- package/dist/mcp/schemas.d.ts +52 -0
- package/dist/mcp/schemas.d.ts.map +1 -1
- package/dist/mcp/schemas.js +6 -1
- package/dist/memory/error-codes.js +1 -1
- package/dist/memory/errors.js +1 -1
- package/dist/memory/index.js +1 -1
- package/dist/memory/manager.js +1 -1
- package/dist/memory/schemas.d.ts +2 -2
- package/dist/memory/schemas.js +1 -1
- package/dist/plugins/builtins/content-policy.js +1 -1
- package/dist/plugins/builtins/response-sanitizer.js +1 -1
- package/dist/plugins/error-codes.cjs +1 -0
- package/dist/plugins/error-codes.d.ts +3 -1
- package/dist/plugins/error-codes.d.ts.map +1 -1
- package/dist/plugins/error-codes.js +2 -1
- package/dist/plugins/index.js +1 -1
- package/dist/plugins/loader.cjs +25 -5
- package/dist/plugins/loader.d.ts.map +1 -1
- package/dist/plugins/loader.js +26 -6
- package/dist/plugins/manager.js +1 -1
- package/dist/plugins/registrations/builtins.js +1 -1
- package/dist/plugins/schemas.d.ts +3 -3
- package/dist/plugins/schemas.js +1 -1
- package/dist/plugins/types.d.ts +0 -1
- package/dist/plugins/types.d.ts.map +1 -1
- package/dist/process/command-validator.js +1 -1
- package/dist/process/error-codes.js +1 -1
- package/dist/process/errors.js +1 -1
- package/dist/process/index.js +1 -1
- package/dist/process/process-service.cjs +78 -26
- package/dist/process/process-service.d.ts +6 -1
- package/dist/process/process-service.d.ts.map +1 -1
- package/dist/process/process-service.js +79 -27
- package/dist/process/types.d.ts +2 -2
- package/dist/process/types.d.ts.map +1 -1
- package/dist/prompts/error-codes.cjs +1 -0
- package/dist/prompts/error-codes.d.ts +2 -1
- package/dist/prompts/error-codes.d.ts.map +1 -1
- package/dist/prompts/error-codes.js +2 -1
- package/dist/prompts/errors.cjs +15 -0
- package/dist/prompts/errors.d.ts +4 -0
- package/dist/prompts/errors.d.ts.map +1 -1
- package/dist/prompts/errors.js +16 -1
- package/dist/prompts/index.js +1 -1
- package/dist/prompts/name-validation.js +1 -1
- package/dist/prompts/prompt-manager.cjs +13 -2
- package/dist/prompts/prompt-manager.d.ts +7 -0
- package/dist/prompts/prompt-manager.d.ts.map +1 -1
- package/dist/prompts/prompt-manager.js +14 -3
- package/dist/prompts/providers/config-prompt-provider.cjs +12 -3
- package/dist/prompts/providers/config-prompt-provider.d.ts +2 -1
- package/dist/prompts/providers/config-prompt-provider.d.ts.map +1 -1
- package/dist/prompts/providers/config-prompt-provider.js +13 -4
- package/dist/prompts/providers/custom-prompt-provider.cjs +2 -2
- package/dist/prompts/providers/custom-prompt-provider.d.ts +1 -1
- package/dist/prompts/providers/custom-prompt-provider.d.ts.map +1 -1
- package/dist/prompts/providers/custom-prompt-provider.js +3 -3
- package/dist/prompts/providers/mcp-prompt-provider.js +1 -1
- package/dist/prompts/schemas.d.ts +12 -0
- package/dist/prompts/schemas.d.ts.map +1 -1
- package/dist/prompts/schemas.js +1 -1
- package/dist/prompts/types.d.ts +2 -0
- package/dist/prompts/types.d.ts.map +1 -1
- package/dist/prompts/utils.js +1 -1
- package/dist/resources/error-codes.js +1 -1
- package/dist/resources/errors.js +1 -1
- package/dist/resources/handlers/blob-handler.js +1 -1
- package/dist/resources/handlers/factory.js +1 -1
- package/dist/resources/handlers/filesystem-handler.js +1 -1
- package/dist/resources/index.js +1 -1
- package/dist/resources/internal-provider.js +1 -1
- package/dist/resources/manager.js +1 -1
- package/dist/resources/reference-parser.js +1 -1
- package/dist/resources/schemas.js +1 -1
- package/dist/search/index.js +1 -1
- package/dist/search/search-service.js +1 -1
- package/dist/session/chat-session.cjs +149 -51
- package/dist/session/chat-session.d.ts +69 -29
- package/dist/session/chat-session.d.ts.map +1 -1
- package/dist/session/chat-session.js +150 -52
- package/dist/session/error-codes.js +1 -1
- package/dist/session/errors.js +1 -1
- package/dist/session/history/database.cjs +134 -21
- package/dist/session/history/database.d.ts +37 -8
- package/dist/session/history/database.d.ts.map +1 -1
- package/dist/session/history/database.js +135 -22
- package/dist/session/history/factory.js +1 -1
- package/dist/session/history/memory.cjs +18 -0
- package/dist/session/history/memory.d.ts +8 -0
- package/dist/session/history/memory.d.ts.map +1 -1
- package/dist/session/history/memory.js +19 -1
- package/dist/session/history/types.d.ts +13 -1
- package/dist/session/history/types.d.ts.map +1 -1
- package/dist/session/index.cjs +3 -0
- package/dist/session/index.d.ts +3 -0
- package/dist/session/index.d.ts.map +1 -1
- package/dist/session/index.js +3 -1
- package/dist/session/message-queue.cjs +201 -0
- package/dist/session/message-queue.d.ts +114 -0
- package/dist/session/message-queue.d.ts.map +1 -0
- package/dist/session/message-queue.js +178 -0
- package/dist/session/schemas.js +1 -1
- package/dist/session/session-manager.cjs +57 -7
- package/dist/session/session-manager.d.ts +18 -0
- package/dist/session/session-manager.d.ts.map +1 -1
- package/dist/session/session-manager.js +58 -8
- package/dist/session/title-generator.cjs +4 -8
- package/dist/session/title-generator.d.ts +1 -2
- package/dist/session/title-generator.d.ts.map +1 -1
- package/dist/session/title-generator.js +5 -9
- package/dist/session/types.cjs +16 -0
- package/dist/session/types.d.ts +14 -0
- package/dist/session/types.d.ts.map +1 -0
- package/dist/session/types.js +0 -0
- package/dist/storage/blob/factory.js +1 -1
- package/dist/storage/blob/local-blob-store.js +1 -1
- package/dist/storage/blob/memory-blob-store.js +1 -1
- package/dist/storage/blob/schemas.js +1 -1
- package/dist/storage/cache/factory.cjs +6 -2
- package/dist/storage/cache/factory.d.ts +2 -1
- package/dist/storage/cache/factory.d.ts.map +1 -1
- package/dist/storage/cache/factory.js +7 -3
- package/dist/storage/cache/memory-cache-store.js +1 -1
- package/dist/storage/cache/redis-store.js +1 -1
- package/dist/storage/cache/schemas.js +1 -1
- package/dist/storage/database/factory.cjs +11 -17
- package/dist/storage/database/factory.d.ts +2 -1
- package/dist/storage/database/factory.d.ts.map +1 -1
- package/dist/storage/database/factory.js +12 -18
- package/dist/storage/database/memory-database-store.js +1 -1
- package/dist/storage/database/postgres-store.cjs +12 -0
- package/dist/storage/database/postgres-store.d.ts.map +1 -1
- package/dist/storage/database/postgres-store.js +13 -1
- package/dist/storage/database/schemas.js +1 -1
- package/dist/storage/database/sqlite-store.cjs +8 -0
- package/dist/storage/database/sqlite-store.d.ts.map +1 -1
- package/dist/storage/database/sqlite-store.js +9 -1
- package/dist/storage/error-codes.cjs +1 -0
- package/dist/storage/error-codes.d.ts +1 -0
- package/dist/storage/error-codes.d.ts.map +1 -1
- package/dist/storage/error-codes.js +2 -1
- package/dist/storage/errors.cjs +17 -0
- package/dist/storage/errors.d.ts +9 -0
- package/dist/storage/errors.d.ts.map +1 -1
- package/dist/storage/errors.js +18 -1
- package/dist/storage/index.js +1 -1
- package/dist/storage/schemas.js +1 -1
- package/dist/storage/storage-manager.js +1 -1
- package/dist/systemPrompt/contributors.js +1 -1
- package/dist/systemPrompt/error-codes.js +1 -1
- package/dist/systemPrompt/errors.js +1 -1
- package/dist/systemPrompt/in-built-prompts.js +1 -1
- package/dist/systemPrompt/index.js +1 -1
- package/dist/systemPrompt/manager.js +1 -1
- package/dist/systemPrompt/registry.js +1 -1
- package/dist/systemPrompt/schemas.d.ts +5 -5
- package/dist/systemPrompt/schemas.js +1 -1
- package/dist/telemetry/decorators.js +1 -1
- package/dist/{llm/tokenizer/default.cjs → telemetry/error-codes.cjs} +14 -19
- package/dist/telemetry/error-codes.d.ts +13 -0
- package/dist/telemetry/error-codes.d.ts.map +1 -0
- package/dist/telemetry/error-codes.js +13 -0
- package/dist/telemetry/errors.cjs +105 -0
- package/dist/telemetry/errors.d.ts +28 -0
- package/dist/telemetry/errors.d.ts.map +1 -0
- package/dist/telemetry/errors.js +82 -0
- package/dist/telemetry/exporters.js +1 -1
- package/dist/telemetry/index.js +1 -1
- package/dist/telemetry/schemas.js +1 -1
- package/dist/telemetry/telemetry.cjs +92 -26
- package/dist/telemetry/telemetry.d.ts +1 -1
- package/dist/telemetry/telemetry.d.ts.map +1 -1
- package/dist/telemetry/telemetry.js +75 -19
- package/dist/telemetry/utils.js +1 -1
- package/dist/tools/bash-pattern-utils.cjs +91 -0
- package/dist/tools/bash-pattern-utils.d.ts +58 -0
- package/dist/tools/bash-pattern-utils.d.ts.map +1 -0
- package/dist/tools/bash-pattern-utils.js +64 -0
- package/dist/tools/confirmation/allowed-tools-provider/factory.js +1 -1
- package/dist/tools/confirmation/allowed-tools-provider/in-memory.js +1 -1
- package/dist/tools/confirmation/allowed-tools-provider/storage.js +1 -1
- package/dist/tools/display-types.cjs +60 -0
- package/dist/tools/display-types.d.ts +133 -0
- package/dist/tools/display-types.d.ts.map +1 -0
- package/dist/tools/display-types.js +32 -0
- package/dist/tools/error-codes.cjs +2 -0
- package/dist/tools/error-codes.d.ts +3 -1
- package/dist/tools/error-codes.d.ts.map +1 -1
- package/dist/tools/error-codes.js +3 -1
- package/dist/tools/errors.cjs +30 -0
- package/dist/tools/errors.d.ts +16 -0
- package/dist/tools/errors.d.ts.map +1 -1
- package/dist/tools/errors.js +31 -1
- package/dist/tools/index.cjs +2 -0
- package/dist/tools/index.d.ts +1 -0
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +2 -1
- package/dist/tools/internal-tools/constants.js +1 -1
- package/dist/tools/internal-tools/implementations/ask-user-tool.cjs +1 -1
- package/dist/tools/internal-tools/implementations/ask-user-tool.js +2 -2
- package/dist/tools/internal-tools/implementations/bash-exec-tool.cjs +42 -18
- package/dist/tools/internal-tools/implementations/bash-exec-tool.d.ts +3 -3
- package/dist/tools/internal-tools/implementations/bash-exec-tool.d.ts.map +1 -1
- package/dist/tools/internal-tools/implementations/bash-exec-tool.js +43 -19
- package/dist/tools/internal-tools/implementations/bash-output-tool.js +1 -1
- package/dist/tools/internal-tools/implementations/delegate-to-url-tool.js +1 -1
- package/dist/tools/internal-tools/implementations/edit-file-tool.cjs +66 -1
- package/dist/tools/internal-tools/implementations/edit-file-tool.d.ts.map +1 -1
- package/dist/tools/internal-tools/implementations/edit-file-tool.js +67 -2
- package/dist/tools/internal-tools/implementations/glob-files-tool.cjs +14 -1
- package/dist/tools/internal-tools/implementations/glob-files-tool.d.ts.map +1 -1
- package/dist/tools/internal-tools/implementations/glob-files-tool.js +15 -2
- package/dist/tools/internal-tools/implementations/grep-content-tool.cjs +16 -1
- package/dist/tools/internal-tools/implementations/grep-content-tool.d.ts.map +1 -1
- package/dist/tools/internal-tools/implementations/grep-content-tool.js +17 -2
- package/dist/tools/internal-tools/implementations/kill-process-tool.js +1 -1
- package/dist/tools/internal-tools/implementations/read-file-tool.cjs +9 -1
- package/dist/tools/internal-tools/implementations/read-file-tool.d.ts.map +1 -1
- package/dist/tools/internal-tools/implementations/read-file-tool.js +10 -2
- package/dist/tools/internal-tools/implementations/search-history-tool.js +1 -1
- package/dist/tools/internal-tools/implementations/write-file-tool.cjs +69 -1
- package/dist/tools/internal-tools/implementations/write-file-tool.d.ts.map +1 -1
- package/dist/tools/internal-tools/implementations/write-file-tool.js +72 -2
- package/dist/tools/internal-tools/provider.cjs +27 -10
- package/dist/tools/internal-tools/provider.d.ts +8 -5
- package/dist/tools/internal-tools/provider.d.ts.map +1 -1
- package/dist/tools/internal-tools/provider.js +28 -11
- package/dist/tools/internal-tools/registry.cjs +4 -3
- package/dist/tools/internal-tools/registry.d.ts +28 -7
- package/dist/tools/internal-tools/registry.d.ts.map +1 -1
- package/dist/tools/internal-tools/registry.js +5 -4
- package/dist/tools/schemas.cjs +17 -7
- package/dist/tools/schemas.d.ts +31 -4
- package/dist/tools/schemas.d.ts.map +1 -1
- package/dist/tools/schemas.js +15 -7
- package/dist/tools/tool-manager.cjs +140 -18
- package/dist/tools/tool-manager.d.ts +23 -1
- package/dist/tools/tool-manager.d.ts.map +1 -1
- package/dist/tools/tool-manager.js +145 -19
- package/dist/tools/types.d.ts +20 -11
- package/dist/tools/types.d.ts.map +1 -1
- package/dist/utils/api-key-resolver.js +1 -1
- package/dist/utils/async-context.js +1 -1
- package/dist/utils/debug.js +1 -1
- package/dist/{llm/tokenizer/types.cjs → utils/defer.cjs} +19 -10
- package/dist/utils/defer.d.ts +63 -0
- package/dist/utils/defer.d.ts.map +1 -0
- package/dist/utils/defer.js +19 -0
- package/dist/utils/env-file.js +1 -1
- package/dist/utils/error-conversion.js +1 -1
- package/dist/utils/execution-context.js +1 -1
- package/dist/utils/fs-walk.js +1 -1
- package/dist/utils/index.cjs +3 -1
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +1 -0
- package/dist/utils/path.js +1 -1
- package/dist/utils/redactor.js +1 -1
- package/dist/utils/result.js +1 -1
- package/dist/utils/safe-stringify.js +1 -1
- package/dist/utils/schema-metadata.js +1 -1
- package/dist/utils/schema.d.ts +6 -0
- package/dist/utils/schema.d.ts.map +1 -1
- package/dist/utils/schema.js +1 -1
- package/dist/utils/service-initializer.cjs +6 -2
- package/dist/utils/service-initializer.d.ts.map +1 -1
- package/dist/utils/service-initializer.js +7 -3
- package/dist/utils/user-info.js +1 -1
- package/dist/utils/zod-schema-converter.js +1 -1
- package/package.json +54 -17
- package/dist/context/compression/middle-removal.cjs +0 -95
- package/dist/context/compression/middle-removal.d.ts +0 -47
- package/dist/context/compression/middle-removal.d.ts.map +0 -1
- package/dist/context/compression/middle-removal.js +0 -72
- package/dist/context/compression/oldest-removal.cjs +0 -83
- package/dist/context/compression/oldest-removal.d.ts +0 -42
- package/dist/context/compression/oldest-removal.d.ts.map +0 -1
- package/dist/context/compression/oldest-removal.js +0 -60
- package/dist/llm/formatters/anthropic.cjs +0 -257
- package/dist/llm/formatters/anthropic.d.ts +0 -46
- package/dist/llm/formatters/anthropic.d.ts.map +0 -1
- package/dist/llm/formatters/anthropic.js +0 -239
- package/dist/llm/formatters/factory.cjs +0 -50
- package/dist/llm/formatters/factory.d.ts +0 -10
- package/dist/llm/formatters/factory.d.ts.map +0 -1
- package/dist/llm/formatters/factory.js +0 -27
- package/dist/llm/formatters/openai.cjs +0 -196
- package/dist/llm/formatters/openai.d.ts +0 -39
- package/dist/llm/formatters/openai.d.ts.map +0 -1
- package/dist/llm/formatters/openai.js +0 -177
- package/dist/llm/formatters/types.d.ts +0 -41
- package/dist/llm/formatters/types.d.ts.map +0 -1
- package/dist/llm/services/anthropic.cjs +0 -511
- package/dist/llm/services/anthropic.d.ts +0 -48
- package/dist/llm/services/anthropic.d.ts.map +0 -1
- package/dist/llm/services/anthropic.js +0 -447
- package/dist/llm/services/openai.cjs +0 -611
- package/dist/llm/services/openai.d.ts +0 -48
- package/dist/llm/services/openai.d.ts.map +0 -1
- package/dist/llm/services/openai.js +0 -547
- package/dist/llm/tokenizer/anthropic.cjs +0 -43
- package/dist/llm/tokenizer/anthropic.d.ts +0 -19
- package/dist/llm/tokenizer/anthropic.d.ts.map +0 -1
- package/dist/llm/tokenizer/anthropic.js +0 -20
- package/dist/llm/tokenizer/default.d.ts +0 -14
- package/dist/llm/tokenizer/default.d.ts.map +0 -1
- package/dist/llm/tokenizer/default.js +0 -18
- package/dist/llm/tokenizer/factory.d.ts +0 -12
- package/dist/llm/tokenizer/factory.d.ts.map +0 -1
- package/dist/llm/tokenizer/factory.js +0 -21
- package/dist/llm/tokenizer/google.cjs +0 -52
- package/dist/llm/tokenizer/google.d.ts +0 -29
- package/dist/llm/tokenizer/google.d.ts.map +0 -1
- package/dist/llm/tokenizer/google.js +0 -29
- package/dist/llm/tokenizer/openai.cjs +0 -115
- package/dist/llm/tokenizer/openai.d.ts +0 -33
- package/dist/llm/tokenizer/openai.d.ts.map +0 -1
- package/dist/llm/tokenizer/openai.js +0 -91
- package/dist/llm/tokenizer/types.d.ts +0 -18
- package/dist/llm/tokenizer/types.d.ts.map +0 -1
- package/dist/llm/tokenizer/types.js +0 -10
- /package/dist/llm/{formatters → executor}/types.cjs +0 -0
- /package/dist/llm/{formatters → executor}/types.js +0 -0
|
@@ -1,611 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __create = Object.create;
|
|
3
|
-
var __defProp = Object.defineProperty;
|
|
4
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
-
var __knownSymbol = (name, symbol) => (symbol = Symbol[name]) ? symbol : Symbol.for("Symbol." + name);
|
|
8
|
-
var __typeError = (msg) => {
|
|
9
|
-
throw TypeError(msg);
|
|
10
|
-
};
|
|
11
|
-
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
12
|
-
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
13
|
-
var __export = (target, all) => {
|
|
14
|
-
for (var name in all)
|
|
15
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
16
|
-
};
|
|
17
|
-
var __copyProps = (to, from, except, desc) => {
|
|
18
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
19
|
-
for (let key of __getOwnPropNames(from))
|
|
20
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
21
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
22
|
-
}
|
|
23
|
-
return to;
|
|
24
|
-
};
|
|
25
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
26
|
-
var __decoratorStart = (base) => [, , , __create(base?.[__knownSymbol("metadata")] ?? null)];
|
|
27
|
-
var __decoratorStrings = ["class", "method", "getter", "setter", "accessor", "field", "value", "get", "set"];
|
|
28
|
-
var __expectFn = (fn) => fn !== void 0 && typeof fn !== "function" ? __typeError("Function expected") : fn;
|
|
29
|
-
var __decoratorContext = (kind, name, done, metadata, fns) => ({ kind: __decoratorStrings[kind], name, metadata, addInitializer: (fn) => done._ ? __typeError("Already initialized") : fns.push(__expectFn(fn || null)) });
|
|
30
|
-
var __decoratorMetadata = (array, target) => __defNormalProp(target, __knownSymbol("metadata"), array[3]);
|
|
31
|
-
var __runInitializers = (array, flags, self, value) => {
|
|
32
|
-
for (var i = 0, fns = array[flags >> 1], n = fns && fns.length; i < n; i++) flags & 1 ? fns[i].call(self) : value = fns[i].call(self, value);
|
|
33
|
-
return value;
|
|
34
|
-
};
|
|
35
|
-
var __decorateElement = (array, flags, name, decorators, target, extra) => {
|
|
36
|
-
var fn, it, done, ctx, access, k = flags & 7, s = !!(flags & 8), p = !!(flags & 16);
|
|
37
|
-
var j = k > 3 ? array.length + 1 : k ? s ? 1 : 2 : 0, key = __decoratorStrings[k + 5];
|
|
38
|
-
var initializers = k > 3 && (array[j - 1] = []), extraInitializers = array[j] || (array[j] = []);
|
|
39
|
-
var desc = k && (!p && !s && (target = target.prototype), k < 5 && (k > 3 || !p) && __getOwnPropDesc(k < 4 ? target : { get [name]() {
|
|
40
|
-
return __privateGet(this, extra);
|
|
41
|
-
}, set [name](x) {
|
|
42
|
-
return __privateSet(this, extra, x);
|
|
43
|
-
} }, name));
|
|
44
|
-
k ? p && k < 4 && __name(extra, (k > 2 ? "set " : k > 1 ? "get " : "") + name) : __name(target, name);
|
|
45
|
-
for (var i = decorators.length - 1; i >= 0; i--) {
|
|
46
|
-
ctx = __decoratorContext(k, name, done = {}, array[3], extraInitializers);
|
|
47
|
-
if (k) {
|
|
48
|
-
ctx.static = s, ctx.private = p, access = ctx.access = { has: p ? (x) => __privateIn(target, x) : (x) => name in x };
|
|
49
|
-
if (k ^ 3) access.get = p ? (x) => (k ^ 1 ? __privateGet : __privateMethod)(x, target, k ^ 4 ? extra : desc.get) : (x) => x[name];
|
|
50
|
-
if (k > 2) access.set = p ? (x, y) => __privateSet(x, target, y, k ^ 4 ? extra : desc.set) : (x, y) => x[name] = y;
|
|
51
|
-
}
|
|
52
|
-
it = (0, decorators[i])(k ? k < 4 ? p ? extra : desc[key] : k > 4 ? void 0 : { get: desc.get, set: desc.set } : target, ctx), done._ = 1;
|
|
53
|
-
if (k ^ 4 || it === void 0) __expectFn(it) && (k > 4 ? initializers.unshift(it) : k ? p ? extra = it : desc[key] = it : target = it);
|
|
54
|
-
else if (typeof it !== "object" || it === null) __typeError("Object expected");
|
|
55
|
-
else __expectFn(fn = it.get) && (desc.get = fn), __expectFn(fn = it.set) && (desc.set = fn), __expectFn(fn = it.init) && initializers.unshift(fn);
|
|
56
|
-
}
|
|
57
|
-
return k || __decoratorMetadata(array, target), desc && __defProp(target, name, desc), p ? k ^ 4 ? extra : desc : target;
|
|
58
|
-
};
|
|
59
|
-
var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
|
|
60
|
-
var __privateIn = (member, obj) => Object(obj) !== obj ? __typeError('Cannot use the "in" operator on this value') : member.has(obj);
|
|
61
|
-
var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
|
|
62
|
-
var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), setter ? setter.call(obj, value) : member.set(obj, value), value);
|
|
63
|
-
var __privateMethod = (obj, member, method) => (__accessCheck(obj, member, "access private method"), method);
|
|
64
|
-
var openai_exports = {};
|
|
65
|
-
__export(openai_exports, {
|
|
66
|
-
OpenAIService: () => OpenAIService
|
|
67
|
-
});
|
|
68
|
-
module.exports = __toCommonJS(openai_exports);
|
|
69
|
-
var import_types3 = require("../../logger/v2/types.js");
|
|
70
|
-
var import_manager = require("../../context/manager.js");
|
|
71
|
-
var import_registry = require("../registry.js");
|
|
72
|
-
var import_DextoRuntimeError = require("../../errors/DextoRuntimeError.js");
|
|
73
|
-
var import_error_codes = require("../error-codes.js");
|
|
74
|
-
var import_openai2 = require("../formatters/openai.js");
|
|
75
|
-
var import_factory = require("../tokenizer/factory.js");
|
|
76
|
-
var import_debug = require("../../utils/debug.js");
|
|
77
|
-
var import_decorators = require("../../telemetry/decorators.js");
|
|
78
|
-
var import_api = require("@opentelemetry/api");
|
|
79
|
-
var _OpenAIService_decorators, _init;
|
|
80
|
-
_OpenAIService_decorators = [(0, import_decorators.InstrumentClass)({
|
|
81
|
-
prefix: "llm.openai",
|
|
82
|
-
excludeMethods: ["getAllTools", "formatToolsForOpenAI", "getConfig", "getContextManager"]
|
|
83
|
-
})];
|
|
84
|
-
class OpenAIService {
|
|
85
|
-
openai;
|
|
86
|
-
config;
|
|
87
|
-
toolManager;
|
|
88
|
-
contextManager;
|
|
89
|
-
sessionEventBus;
|
|
90
|
-
sessionId;
|
|
91
|
-
logger;
|
|
92
|
-
constructor(toolManager, openai, systemPromptManager, historyProvider, sessionEventBus, config, sessionId, resourceManager, logger) {
|
|
93
|
-
this.logger = logger.createChild(import_types3.DextoLogComponent.LLM);
|
|
94
|
-
this.config = config;
|
|
95
|
-
this.openai = openai;
|
|
96
|
-
this.toolManager = toolManager;
|
|
97
|
-
this.sessionEventBus = sessionEventBus;
|
|
98
|
-
this.sessionId = sessionId;
|
|
99
|
-
const formatter = new import_openai2.OpenAIMessageFormatter(this.logger);
|
|
100
|
-
const tokenizer = (0, import_factory.createTokenizer)(config.provider, config.model, this.logger);
|
|
101
|
-
const maxInputTokens = (0, import_registry.getEffectiveMaxInputTokens)(config, this.logger);
|
|
102
|
-
this.contextManager = new import_manager.ContextManager(
|
|
103
|
-
config,
|
|
104
|
-
formatter,
|
|
105
|
-
systemPromptManager,
|
|
106
|
-
maxInputTokens,
|
|
107
|
-
tokenizer,
|
|
108
|
-
historyProvider,
|
|
109
|
-
sessionId,
|
|
110
|
-
resourceManager,
|
|
111
|
-
this.logger
|
|
112
|
-
// compressionStrategies uses default
|
|
113
|
-
);
|
|
114
|
-
}
|
|
115
|
-
getAllTools() {
|
|
116
|
-
return this.toolManager.getAllTools();
|
|
117
|
-
}
|
|
118
|
-
async completeTask(textInput, options, imageData, fileData, stream) {
|
|
119
|
-
const activeSpan = import_api.trace.getActiveSpan();
|
|
120
|
-
const currentContext = import_api.context.active();
|
|
121
|
-
const provider = this.config.provider;
|
|
122
|
-
const model = this.config.model;
|
|
123
|
-
if (activeSpan) {
|
|
124
|
-
activeSpan.setAttribute("llm.provider", provider);
|
|
125
|
-
activeSpan.setAttribute("llm.model", model);
|
|
126
|
-
}
|
|
127
|
-
const existingBaggage = import_api.propagation.getBaggage(currentContext);
|
|
128
|
-
const baggageEntries = {};
|
|
129
|
-
if (existingBaggage) {
|
|
130
|
-
existingBaggage.getAllEntries().forEach(([key, entry]) => {
|
|
131
|
-
baggageEntries[key] = entry;
|
|
132
|
-
});
|
|
133
|
-
}
|
|
134
|
-
baggageEntries["llm.provider"] = { value: provider };
|
|
135
|
-
baggageEntries["llm.model"] = { value: model };
|
|
136
|
-
const updatedContext = import_api.propagation.setBaggage(
|
|
137
|
-
currentContext,
|
|
138
|
-
import_api.propagation.createBaggage(baggageEntries)
|
|
139
|
-
);
|
|
140
|
-
return await import_api.context.with(updatedContext, async () => {
|
|
141
|
-
await this.contextManager.addUserMessage(textInput, imageData, fileData);
|
|
142
|
-
const rawTools = await this.toolManager.getAllTools();
|
|
143
|
-
const formattedTools = this.formatToolsForOpenAI(rawTools);
|
|
144
|
-
this.logger.silly(`Formatted tools: ${JSON.stringify(formattedTools, null, 2)}`);
|
|
145
|
-
this.sessionEventBus.emit("llm:thinking");
|
|
146
|
-
let iterationCount = 0;
|
|
147
|
-
let totalTokens = 0;
|
|
148
|
-
let inputTokens = 0;
|
|
149
|
-
let outputTokens = 0;
|
|
150
|
-
let reasoningTokens = 0;
|
|
151
|
-
let fullResponse = "";
|
|
152
|
-
const contextStr = stream ? "OpenAI streaming API call" : "OpenAI API call";
|
|
153
|
-
try {
|
|
154
|
-
while (iterationCount < this.config.maxIterations) {
|
|
155
|
-
if (options?.signal?.aborted) {
|
|
156
|
-
throw Object.assign(new Error("Aborted"), {
|
|
157
|
-
name: "AbortError",
|
|
158
|
-
aborted: true
|
|
159
|
-
});
|
|
160
|
-
}
|
|
161
|
-
iterationCount++;
|
|
162
|
-
const { message, usage } = stream ? await this.getAIStreamingResponseWithRetries(
|
|
163
|
-
formattedTools,
|
|
164
|
-
options?.signal
|
|
165
|
-
) : await this.getAIResponseWithRetries(formattedTools, options?.signal);
|
|
166
|
-
if (usage) {
|
|
167
|
-
totalTokens += usage.total_tokens ?? 0;
|
|
168
|
-
inputTokens += usage.prompt_tokens ?? 0;
|
|
169
|
-
outputTokens += usage.completion_tokens ?? 0;
|
|
170
|
-
reasoningTokens += usage.completion_tokens_details?.reasoning_tokens ?? 0;
|
|
171
|
-
}
|
|
172
|
-
if (!message.tool_calls || message.tool_calls.length === 0) {
|
|
173
|
-
const responseText = message.content || "";
|
|
174
|
-
const finalContent = stream ? fullResponse + responseText : responseText;
|
|
175
|
-
await this.contextManager.addAssistantMessage(finalContent, void 0, {
|
|
176
|
-
tokenUsage: totalTokens > 0 ? {
|
|
177
|
-
totalTokens,
|
|
178
|
-
inputTokens,
|
|
179
|
-
outputTokens,
|
|
180
|
-
reasoningTokens
|
|
181
|
-
} : void 0
|
|
182
|
-
});
|
|
183
|
-
if (totalTokens > 0) {
|
|
184
|
-
this.contextManager.updateActualTokenCount(totalTokens);
|
|
185
|
-
}
|
|
186
|
-
this.sessionEventBus.emit("llm:response", {
|
|
187
|
-
content: finalContent,
|
|
188
|
-
provider: this.config.provider,
|
|
189
|
-
model: this.config.model,
|
|
190
|
-
router: "in-built",
|
|
191
|
-
tokenUsage: { totalTokens, inputTokens, outputTokens, reasoningTokens }
|
|
192
|
-
});
|
|
193
|
-
const activeSpan3 = import_api.trace.getActiveSpan();
|
|
194
|
-
if (activeSpan3 && totalTokens > 0) {
|
|
195
|
-
const attributes = {
|
|
196
|
-
"gen_ai.usage.total_tokens": totalTokens
|
|
197
|
-
};
|
|
198
|
-
if (inputTokens > 0) {
|
|
199
|
-
attributes["gen_ai.usage.input_tokens"] = inputTokens;
|
|
200
|
-
}
|
|
201
|
-
if (outputTokens > 0) {
|
|
202
|
-
attributes["gen_ai.usage.output_tokens"] = outputTokens;
|
|
203
|
-
}
|
|
204
|
-
if (reasoningTokens > 0) {
|
|
205
|
-
attributes["gen_ai.usage.reasoning_tokens"] = reasoningTokens;
|
|
206
|
-
}
|
|
207
|
-
activeSpan3.setAttributes(attributes);
|
|
208
|
-
}
|
|
209
|
-
return finalContent;
|
|
210
|
-
}
|
|
211
|
-
const functionToolCalls = message.tool_calls.filter(
|
|
212
|
-
(toolCall) => {
|
|
213
|
-
this.logger.debug(`Tool call type received: ${toolCall.type}`);
|
|
214
|
-
return toolCall.type === "function";
|
|
215
|
-
}
|
|
216
|
-
);
|
|
217
|
-
if (message.tool_calls.length > functionToolCalls.length) {
|
|
218
|
-
this.logger.warn(
|
|
219
|
-
`Filtered out ${message.tool_calls.length - functionToolCalls.length} non-function tool calls`
|
|
220
|
-
);
|
|
221
|
-
}
|
|
222
|
-
await this.contextManager.addAssistantMessage(
|
|
223
|
-
message.content,
|
|
224
|
-
functionToolCalls.length > 0 ? functionToolCalls : void 0,
|
|
225
|
-
{}
|
|
226
|
-
);
|
|
227
|
-
if (stream && message.content) {
|
|
228
|
-
fullResponse += message.content;
|
|
229
|
-
}
|
|
230
|
-
for (const toolCall of functionToolCalls) {
|
|
231
|
-
if (options?.signal?.aborted) {
|
|
232
|
-
throw Object.assign(new Error("Aborted"), {
|
|
233
|
-
name: "AbortError",
|
|
234
|
-
aborted: true
|
|
235
|
-
});
|
|
236
|
-
}
|
|
237
|
-
this.logger.debug(`Tool call initiated - Type: ${toolCall.type}`);
|
|
238
|
-
this.logger.debug(
|
|
239
|
-
`Tool call details: ${JSON.stringify(toolCall, null, 2)}`
|
|
240
|
-
);
|
|
241
|
-
const toolName = toolCall.function.name;
|
|
242
|
-
let args = {};
|
|
243
|
-
try {
|
|
244
|
-
args = JSON.parse(toolCall.function.arguments);
|
|
245
|
-
} catch (e) {
|
|
246
|
-
this.logger.error(`Error parsing arguments for ${toolName}:`, {
|
|
247
|
-
error: e instanceof Error ? e.message : String(e)
|
|
248
|
-
});
|
|
249
|
-
const sanitized = await this.contextManager.addToolResult(
|
|
250
|
-
toolCall.id,
|
|
251
|
-
toolName,
|
|
252
|
-
{ error: `Failed to parse arguments: ${e}` },
|
|
253
|
-
{ success: false }
|
|
254
|
-
);
|
|
255
|
-
this.sessionEventBus.emit("llm:tool-result", {
|
|
256
|
-
toolName,
|
|
257
|
-
callId: toolCall.id,
|
|
258
|
-
success: false,
|
|
259
|
-
sanitized,
|
|
260
|
-
...(0, import_debug.shouldIncludeRawToolResult)() ? { rawResult: { error: `Failed to parse arguments: ${e}` } } : {}
|
|
261
|
-
});
|
|
262
|
-
continue;
|
|
263
|
-
}
|
|
264
|
-
this.sessionEventBus.emit("llm:tool-call", {
|
|
265
|
-
toolName,
|
|
266
|
-
args,
|
|
267
|
-
callId: toolCall.id
|
|
268
|
-
});
|
|
269
|
-
try {
|
|
270
|
-
const result = await this.toolManager.executeTool(
|
|
271
|
-
toolName,
|
|
272
|
-
args,
|
|
273
|
-
this.sessionId
|
|
274
|
-
);
|
|
275
|
-
const sanitized = await this.contextManager.addToolResult(
|
|
276
|
-
toolCall.id,
|
|
277
|
-
toolName,
|
|
278
|
-
result,
|
|
279
|
-
{ success: true }
|
|
280
|
-
);
|
|
281
|
-
this.sessionEventBus.emit("llm:tool-result", {
|
|
282
|
-
toolName,
|
|
283
|
-
callId: toolCall.id,
|
|
284
|
-
success: true,
|
|
285
|
-
sanitized,
|
|
286
|
-
...(0, import_debug.shouldIncludeRawToolResult)() ? { rawResult: result } : {}
|
|
287
|
-
});
|
|
288
|
-
} catch (error) {
|
|
289
|
-
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
290
|
-
this.logger.error(
|
|
291
|
-
`Tool execution error for ${toolName}: ${errorMessage}`
|
|
292
|
-
);
|
|
293
|
-
const sanitized = await this.contextManager.addToolResult(
|
|
294
|
-
toolCall.id,
|
|
295
|
-
toolName,
|
|
296
|
-
{ error: errorMessage },
|
|
297
|
-
{ success: false }
|
|
298
|
-
);
|
|
299
|
-
this.sessionEventBus.emit("llm:tool-result", {
|
|
300
|
-
toolName,
|
|
301
|
-
callId: toolCall.id,
|
|
302
|
-
success: false,
|
|
303
|
-
sanitized,
|
|
304
|
-
...(0, import_debug.shouldIncludeRawToolResult)() ? { rawResult: { error: errorMessage } } : {}
|
|
305
|
-
});
|
|
306
|
-
}
|
|
307
|
-
}
|
|
308
|
-
}
|
|
309
|
-
this.logger.warn(
|
|
310
|
-
`Reached maximum iterations (${this.config.maxIterations}) for task.`
|
|
311
|
-
);
|
|
312
|
-
const finalResponse = fullResponse || "Task completed but reached maximum tool call iterations.";
|
|
313
|
-
await this.contextManager.addAssistantMessage(finalResponse, void 0, {
|
|
314
|
-
tokenUsage: totalTokens > 0 ? {
|
|
315
|
-
totalTokens,
|
|
316
|
-
inputTokens,
|
|
317
|
-
outputTokens,
|
|
318
|
-
reasoningTokens
|
|
319
|
-
} : void 0
|
|
320
|
-
});
|
|
321
|
-
if (totalTokens > 0) {
|
|
322
|
-
this.contextManager.updateActualTokenCount(totalTokens);
|
|
323
|
-
}
|
|
324
|
-
this.sessionEventBus.emit("llm:response", {
|
|
325
|
-
content: finalResponse,
|
|
326
|
-
provider: this.config.provider,
|
|
327
|
-
model: this.config.model,
|
|
328
|
-
router: "in-built",
|
|
329
|
-
tokenUsage: { totalTokens, inputTokens, outputTokens, reasoningTokens }
|
|
330
|
-
});
|
|
331
|
-
const activeSpan2 = import_api.trace.getActiveSpan();
|
|
332
|
-
if (activeSpan2 && totalTokens > 0) {
|
|
333
|
-
const attributes = {
|
|
334
|
-
"gen_ai.usage.total_tokens": totalTokens
|
|
335
|
-
};
|
|
336
|
-
if (inputTokens > 0) {
|
|
337
|
-
attributes["gen_ai.usage.input_tokens"] = inputTokens;
|
|
338
|
-
}
|
|
339
|
-
if (outputTokens > 0) {
|
|
340
|
-
attributes["gen_ai.usage.output_tokens"] = outputTokens;
|
|
341
|
-
}
|
|
342
|
-
if (reasoningTokens > 0) {
|
|
343
|
-
attributes["gen_ai.usage.reasoning_tokens"] = reasoningTokens;
|
|
344
|
-
}
|
|
345
|
-
activeSpan2.setAttributes(attributes);
|
|
346
|
-
}
|
|
347
|
-
return finalResponse;
|
|
348
|
-
} catch (error) {
|
|
349
|
-
if (error instanceof Error && (error.name === "AbortError" || error.aborted === true)) {
|
|
350
|
-
throw error;
|
|
351
|
-
}
|
|
352
|
-
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
353
|
-
this.logger.error(`Error in ${contextStr}: ${errorMessage}`, { error });
|
|
354
|
-
if (!stream) {
|
|
355
|
-
this.logger.warn(
|
|
356
|
-
`If this error is due to token overflow, consider configuring 'maxInputTokens' in your LLMConfig.`
|
|
357
|
-
);
|
|
358
|
-
}
|
|
359
|
-
this.sessionEventBus.emit("llm:error", {
|
|
360
|
-
error: error instanceof Error ? error : new Error(errorMessage),
|
|
361
|
-
context: contextStr,
|
|
362
|
-
recoverable: false
|
|
363
|
-
});
|
|
364
|
-
const errorResponse = `Error processing ${stream ? "streaming " : ""}request: ${errorMessage}`;
|
|
365
|
-
await this.contextManager.addAssistantMessage(errorResponse, void 0, {});
|
|
366
|
-
return errorResponse;
|
|
367
|
-
}
|
|
368
|
-
});
|
|
369
|
-
}
|
|
370
|
-
/**
|
|
371
|
-
* Get configuration information about the LLM service
|
|
372
|
-
* @returns Configuration object with provider and model information
|
|
373
|
-
*/
|
|
374
|
-
getConfig() {
|
|
375
|
-
const configuredMaxInputTokens = this.contextManager.getMaxInputTokens();
|
|
376
|
-
let modelMaxInputTokens;
|
|
377
|
-
try {
|
|
378
|
-
modelMaxInputTokens = (0, import_registry.getMaxInputTokensForModel)(
|
|
379
|
-
this.config.provider,
|
|
380
|
-
this.config.model,
|
|
381
|
-
this.logger
|
|
382
|
-
);
|
|
383
|
-
} catch (error) {
|
|
384
|
-
if (error instanceof import_DextoRuntimeError.DextoRuntimeError && error.code === import_error_codes.LLMErrorCode.MODEL_UNKNOWN) {
|
|
385
|
-
modelMaxInputTokens = configuredMaxInputTokens;
|
|
386
|
-
this.logger.debug(
|
|
387
|
-
`Could not find model ${this.config.model} in LLM registry to get max tokens. Using configured max tokens: ${configuredMaxInputTokens}.`
|
|
388
|
-
);
|
|
389
|
-
} else {
|
|
390
|
-
throw error;
|
|
391
|
-
}
|
|
392
|
-
}
|
|
393
|
-
return {
|
|
394
|
-
router: "in-built",
|
|
395
|
-
provider: this.config.provider,
|
|
396
|
-
model: this.config.model,
|
|
397
|
-
configuredMaxInputTokens,
|
|
398
|
-
modelMaxInputTokens
|
|
399
|
-
};
|
|
400
|
-
}
|
|
401
|
-
// Helper methods
|
|
402
|
-
async getAIResponseWithRetries(tools, signal) {
|
|
403
|
-
let attempts = 0;
|
|
404
|
-
const MAX_ATTEMPTS = 3;
|
|
405
|
-
this.logger.debug(`Tools size in getAIResponseWithRetries: ${tools.length}`);
|
|
406
|
-
while (attempts < MAX_ATTEMPTS) {
|
|
407
|
-
attempts++;
|
|
408
|
-
try {
|
|
409
|
-
const {
|
|
410
|
-
formattedMessages,
|
|
411
|
-
systemPrompt: _systemPrompt,
|
|
412
|
-
tokensUsed
|
|
413
|
-
} = await this.contextManager.getFormattedMessagesWithCompression(
|
|
414
|
-
{ mcpManager: this.toolManager.getMcpManager() },
|
|
415
|
-
{ provider: this.config.provider, model: this.config.model }
|
|
416
|
-
);
|
|
417
|
-
this.logger.silly(
|
|
418
|
-
`Message history (potentially compressed) in getAIResponseWithRetries: ${JSON.stringify(formattedMessages, null, 2)}`
|
|
419
|
-
);
|
|
420
|
-
this.logger.debug(`Estimated tokens being sent to OpenAI: ${tokensUsed}`);
|
|
421
|
-
const response = await this.openai.chat.completions.create(
|
|
422
|
-
{
|
|
423
|
-
model: this.config.model,
|
|
424
|
-
messages: formattedMessages,
|
|
425
|
-
tools: attempts === 1 ? tools : [],
|
|
426
|
-
// Only offer tools on first attempt
|
|
427
|
-
tool_choice: attempts === 1 ? "auto" : "none"
|
|
428
|
-
// Disable tool choice on retry
|
|
429
|
-
},
|
|
430
|
-
signal ? { signal } : void 0
|
|
431
|
-
);
|
|
432
|
-
this.logger.silly(
|
|
433
|
-
`OPENAI CHAT COMPLETION RESPONSE: ${JSON.stringify(response, null, 2)}`
|
|
434
|
-
);
|
|
435
|
-
const message = response.choices[0]?.message;
|
|
436
|
-
if (!message) {
|
|
437
|
-
throw new Error("Received empty message from OpenAI API");
|
|
438
|
-
}
|
|
439
|
-
const usage = response.usage;
|
|
440
|
-
return { message, ...usage && { usage } };
|
|
441
|
-
} catch (error) {
|
|
442
|
-
if (error instanceof Error && (error.name === "AbortError" || error.aborted === true)) {
|
|
443
|
-
throw error;
|
|
444
|
-
}
|
|
445
|
-
const apiError = error;
|
|
446
|
-
this.logger.error(
|
|
447
|
-
`Error in OpenAI API call (Attempt ${attempts}/${MAX_ATTEMPTS}): ${apiError.message || JSON.stringify(apiError, null, 2)}`,
|
|
448
|
-
{ status: apiError.status, headers: apiError.headers }
|
|
449
|
-
);
|
|
450
|
-
if (apiError.status === 400 && apiError.code === "context_length_exceeded") {
|
|
451
|
-
this.logger.warn(
|
|
452
|
-
`Context length exceeded. ContextManager compression might not be sufficient. Error details: ${JSON.stringify(apiError.error)}`
|
|
453
|
-
);
|
|
454
|
-
}
|
|
455
|
-
if (attempts >= MAX_ATTEMPTS) {
|
|
456
|
-
this.logger.error(
|
|
457
|
-
`Failed to get response from OpenAI after ${MAX_ATTEMPTS} attempts.`
|
|
458
|
-
);
|
|
459
|
-
throw error;
|
|
460
|
-
}
|
|
461
|
-
await new Promise((resolve) => setTimeout(resolve, 500 * attempts));
|
|
462
|
-
}
|
|
463
|
-
}
|
|
464
|
-
throw new Error("Failed to get response after maximum retry attempts");
|
|
465
|
-
}
|
|
466
|
-
async getAIStreamingResponseWithRetries(tools, signal) {
|
|
467
|
-
let attempts = 0;
|
|
468
|
-
const MAX_ATTEMPTS = 3;
|
|
469
|
-
while (attempts < MAX_ATTEMPTS) {
|
|
470
|
-
attempts++;
|
|
471
|
-
try {
|
|
472
|
-
const {
|
|
473
|
-
formattedMessages,
|
|
474
|
-
systemPrompt: _systemPrompt,
|
|
475
|
-
tokensUsed
|
|
476
|
-
} = await this.contextManager.getFormattedMessagesWithCompression(
|
|
477
|
-
{ mcpManager: this.toolManager.getMcpManager() },
|
|
478
|
-
{ provider: this.config.provider, model: this.config.model }
|
|
479
|
-
);
|
|
480
|
-
this.logger.silly(
|
|
481
|
-
`Streaming message history (potentially compressed): ${JSON.stringify(formattedMessages, null, 2)}`
|
|
482
|
-
);
|
|
483
|
-
this.logger.debug(`Estimated tokens being sent to OpenAI streaming: ${tokensUsed}`);
|
|
484
|
-
const stream = await this.openai.chat.completions.create(
|
|
485
|
-
{
|
|
486
|
-
model: this.config.model,
|
|
487
|
-
messages: formattedMessages,
|
|
488
|
-
tools: attempts === 1 ? tools : [],
|
|
489
|
-
// Only offer tools on first attempt
|
|
490
|
-
tool_choice: attempts === 1 ? "auto" : "none",
|
|
491
|
-
// Disable tool choice on retry
|
|
492
|
-
stream: true,
|
|
493
|
-
stream_options: {
|
|
494
|
-
include_usage: true
|
|
495
|
-
}
|
|
496
|
-
},
|
|
497
|
-
signal ? { signal } : void 0
|
|
498
|
-
);
|
|
499
|
-
let content = "";
|
|
500
|
-
let toolCalls = [];
|
|
501
|
-
let usage;
|
|
502
|
-
for await (const chunk of stream) {
|
|
503
|
-
if (signal?.aborted) {
|
|
504
|
-
throw Object.assign(new Error("Aborted"), {
|
|
505
|
-
name: "AbortError",
|
|
506
|
-
aborted: true
|
|
507
|
-
});
|
|
508
|
-
}
|
|
509
|
-
const delta = chunk.choices[0]?.delta;
|
|
510
|
-
if (delta?.content) {
|
|
511
|
-
content += delta.content;
|
|
512
|
-
this.sessionEventBus.emit("llm:chunk", {
|
|
513
|
-
chunkType: "text",
|
|
514
|
-
content: delta.content,
|
|
515
|
-
isComplete: false
|
|
516
|
-
});
|
|
517
|
-
}
|
|
518
|
-
if (delta?.tool_calls) {
|
|
519
|
-
for (const toolCall of delta.tool_calls) {
|
|
520
|
-
const index = toolCall.index;
|
|
521
|
-
if (typeof index !== "number") {
|
|
522
|
-
continue;
|
|
523
|
-
}
|
|
524
|
-
if (!toolCalls[index]) {
|
|
525
|
-
toolCalls[index] = {
|
|
526
|
-
id: `pending-${index}`,
|
|
527
|
-
type: "function",
|
|
528
|
-
function: { name: "", arguments: "" }
|
|
529
|
-
};
|
|
530
|
-
}
|
|
531
|
-
if (toolCall.id) {
|
|
532
|
-
toolCalls[index].id = toolCall.id;
|
|
533
|
-
}
|
|
534
|
-
const existingToolCall = toolCalls[index];
|
|
535
|
-
if (existingToolCall.type === "function" && toolCall.function) {
|
|
536
|
-
if (toolCall.function.name) {
|
|
537
|
-
existingToolCall.function.name = toolCall.function.name;
|
|
538
|
-
}
|
|
539
|
-
if (toolCall.function.arguments) {
|
|
540
|
-
existingToolCall.function.arguments += toolCall.function.arguments;
|
|
541
|
-
}
|
|
542
|
-
}
|
|
543
|
-
}
|
|
544
|
-
}
|
|
545
|
-
if (chunk.usage) {
|
|
546
|
-
usage = chunk.usage;
|
|
547
|
-
}
|
|
548
|
-
}
|
|
549
|
-
if (content) {
|
|
550
|
-
this.sessionEventBus.emit("llm:chunk", {
|
|
551
|
-
chunkType: "text",
|
|
552
|
-
content: "",
|
|
553
|
-
isComplete: true
|
|
554
|
-
});
|
|
555
|
-
}
|
|
556
|
-
const message = {
|
|
557
|
-
role: "assistant",
|
|
558
|
-
content: content || null,
|
|
559
|
-
refusal: null,
|
|
560
|
-
...toolCalls.length > 0 && { tool_calls: toolCalls }
|
|
561
|
-
};
|
|
562
|
-
this.logger.debug(`OpenAI streaming completed. Usage info: ${usage}`);
|
|
563
|
-
return { message, ...usage && { usage } };
|
|
564
|
-
} catch (error) {
|
|
565
|
-
const apiError = error;
|
|
566
|
-
this.logger.error(
|
|
567
|
-
`Error in OpenAI streaming API call (Attempt ${attempts}/${MAX_ATTEMPTS}): ${apiError.message || JSON.stringify(apiError, null, 2)}`,
|
|
568
|
-
{ status: apiError.status, headers: apiError.headers }
|
|
569
|
-
);
|
|
570
|
-
if (apiError.status === 400 && apiError.message?.includes("maximum context length")) {
|
|
571
|
-
this.logger.warn(
|
|
572
|
-
`Context length exceeded in streaming. ContextManager compression might not be sufficient. Error details: ${JSON.stringify(apiError.error)}`
|
|
573
|
-
);
|
|
574
|
-
}
|
|
575
|
-
if (attempts >= MAX_ATTEMPTS) {
|
|
576
|
-
this.logger.error(
|
|
577
|
-
`Failed to get streaming response from OpenAI after ${MAX_ATTEMPTS} attempts.`
|
|
578
|
-
);
|
|
579
|
-
throw error;
|
|
580
|
-
}
|
|
581
|
-
await new Promise((resolve) => setTimeout(resolve, 500 * attempts));
|
|
582
|
-
}
|
|
583
|
-
}
|
|
584
|
-
throw new Error("Failed to get streaming response after maximum retry attempts");
|
|
585
|
-
}
|
|
586
|
-
formatToolsForOpenAI(tools) {
|
|
587
|
-
return Object.entries(tools).map(([name, tool]) => {
|
|
588
|
-
return {
|
|
589
|
-
type: "function",
|
|
590
|
-
function: {
|
|
591
|
-
name,
|
|
592
|
-
description: tool.description || "",
|
|
593
|
-
parameters: tool.parameters
|
|
594
|
-
}
|
|
595
|
-
};
|
|
596
|
-
});
|
|
597
|
-
}
|
|
598
|
-
/**
|
|
599
|
-
* Get the context manager for external access
|
|
600
|
-
*/
|
|
601
|
-
getContextManager() {
|
|
602
|
-
return this.contextManager;
|
|
603
|
-
}
|
|
604
|
-
}
|
|
605
|
-
_init = __decoratorStart(null);
|
|
606
|
-
OpenAIService = __decorateElement(_init, 0, "OpenAIService", _OpenAIService_decorators, OpenAIService);
|
|
607
|
-
__runInitializers(_init, 1, OpenAIService);
|
|
608
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
609
|
-
0 && (module.exports = {
|
|
610
|
-
OpenAIService
|
|
611
|
-
});
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
import OpenAI from 'openai';
|
|
2
|
-
import { ToolManager } from '../../tools/tool-manager.js';
|
|
3
|
-
import { ILLMService, LLMServiceConfig } from './types.js';
|
|
4
|
-
import { ToolSet } from '../../tools/types.js';
|
|
5
|
-
import type { IDextoLogger } from '../../logger/v2/types.js';
|
|
6
|
-
import { ContextManager } from '../../context/manager.js';
|
|
7
|
-
import { ImageData, FileData } from '../../context/types.js';
|
|
8
|
-
import type { SessionEventBus } from '../../events/index.js';
|
|
9
|
-
import type { IConversationHistoryProvider } from '../../session/history/types.js';
|
|
10
|
-
import type { SystemPromptManager } from '../../systemPrompt/manager.js';
|
|
11
|
-
import type { ValidatedLLMConfig } from '../schemas.js';
|
|
12
|
-
/**
|
|
13
|
-
* OpenAI implementation of LLMService
|
|
14
|
-
* Not actively maintained, so might be buggy or outdated
|
|
15
|
-
* TODO (Telemetry): Add OpenTelemetry metrics collection
|
|
16
|
-
* - LLM call counters (by provider/model)
|
|
17
|
-
* - Token usage histograms (input/output/total/reasoning)
|
|
18
|
-
* - Request latency histograms
|
|
19
|
-
* - Error rate counters
|
|
20
|
-
* See feature-plans/telemetry.md for details
|
|
21
|
-
*/
|
|
22
|
-
export declare class OpenAIService implements ILLMService {
|
|
23
|
-
private openai;
|
|
24
|
-
private config;
|
|
25
|
-
private toolManager;
|
|
26
|
-
private contextManager;
|
|
27
|
-
private sessionEventBus;
|
|
28
|
-
private readonly sessionId;
|
|
29
|
-
private logger;
|
|
30
|
-
constructor(toolManager: ToolManager, openai: OpenAI, systemPromptManager: SystemPromptManager, historyProvider: IConversationHistoryProvider, sessionEventBus: SessionEventBus, config: ValidatedLLMConfig, sessionId: string, resourceManager: import('../../resources/index.js').ResourceManager, logger: IDextoLogger);
|
|
31
|
-
getAllTools(): Promise<ToolSet>;
|
|
32
|
-
completeTask(textInput: string, options: {
|
|
33
|
-
signal?: AbortSignal;
|
|
34
|
-
}, imageData?: ImageData, fileData?: FileData, stream?: boolean): Promise<string>;
|
|
35
|
-
/**
|
|
36
|
-
* Get configuration information about the LLM service
|
|
37
|
-
* @returns Configuration object with provider and model information
|
|
38
|
-
*/
|
|
39
|
-
getConfig(): LLMServiceConfig;
|
|
40
|
-
private getAIResponseWithRetries;
|
|
41
|
-
private getAIStreamingResponseWithRetries;
|
|
42
|
-
private formatToolsForOpenAI;
|
|
43
|
-
/**
|
|
44
|
-
* Get the context manager for external access
|
|
45
|
-
*/
|
|
46
|
-
getContextManager(): ContextManager<unknown>;
|
|
47
|
-
}
|
|
48
|
-
//# sourceMappingURL=openai.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"openai.d.ts","sourceRoot":"","sources":["../../../src/llm/services/openai.ts"],"names":[],"mappings":"AAAA,OAAO,MAAoB,MAAM,QAAQ,CAAC;AAE1C,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC3D,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAE7D,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE1D,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAG7D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,gCAAgC,CAAC;AACnF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAGzE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAKxD;;;;;;;;;GASG;AACH,qBAIa,aAAc,YAAW,WAAW;IAC7C,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,cAAc,CAA6C;IACnE,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,MAAM,CAAe;gBAGzB,WAAW,EAAE,WAAW,EACxB,MAAM,EAAE,MAAM,EACd,mBAAmB,EAAE,mBAAmB,EACxC,eAAe,EAAE,4BAA4B,EAC7C,eAAe,EAAE,eAAe,EAChC,MAAM,EAAE,kBAAkB,EAC1B,SAAS,EAAE,MAAM,EACjB,eAAe,EAAE,OAAO,0BAA0B,EAAE,eAAe,EACnE,MAAM,EAAE,YAAY;IA4BxB,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAIzB,YAAY,CACd,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,EACjC,SAAS,CAAC,EAAE,SAAS,EACrB,QAAQ,CAAC,EAAE,QAAQ,EACnB,MAAM,CAAC,EAAE,OAAO,GACjB,OAAO,CAAC,MAAM,CAAC;IAgWlB;;;OAGG;IACH,SAAS,IAAI,gBAAgB;YAmCf,wBAAwB;YA0FxB,iCAAiC;IAqK/C,OAAO,CAAC,oBAAoB;IAe5B;;OAEG;IACH,iBAAiB,IAAI,cAAc,CAAC,OAAO,CAAC;CAG/C"}
|