@dexto/core 1.3.0 → 1.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +17 -9
- package/dist/agent/DextoAgent.cjs +548 -207
- package/dist/agent/DextoAgent.d.ts +156 -33
- package/dist/agent/DextoAgent.d.ts.map +1 -1
- package/dist/agent/DextoAgent.js +545 -204
- package/dist/agent/agentCard.js +1 -1
- package/dist/agent/error-codes.cjs +1 -0
- package/dist/agent/error-codes.d.ts +2 -1
- package/dist/agent/error-codes.d.ts.map +1 -1
- package/dist/agent/error-codes.js +2 -1
- package/dist/agent/errors.cjs +13 -0
- package/dist/agent/errors.d.ts +4 -0
- package/dist/agent/errors.d.ts.map +1 -1
- package/dist/agent/errors.js +14 -1
- package/dist/agent/index.d.ts +1 -1
- package/dist/agent/index.d.ts.map +1 -1
- package/dist/agent/index.js +1 -1
- package/dist/agent/schemas.cjs +3 -0
- package/dist/agent/schemas.d.ts +92 -55
- package/dist/agent/schemas.d.ts.map +1 -1
- package/dist/agent/schemas.js +6 -2
- package/dist/agent/state-manager.cjs +5 -5
- package/dist/agent/state-manager.d.ts +4 -4
- package/dist/agent/state-manager.js +6 -6
- package/dist/agent/types.d.ts +24 -10
- package/dist/agent/types.d.ts.map +1 -1
- package/dist/approval/error-codes.js +1 -1
- package/dist/approval/errors.js +1 -1
- package/dist/approval/factory.js +1 -1
- package/dist/approval/index.js +1 -1
- package/dist/approval/manager.cjs +69 -3
- package/dist/approval/manager.d.ts +41 -3
- package/dist/approval/manager.d.ts.map +1 -1
- package/dist/approval/manager.js +70 -4
- package/dist/approval/schemas.cjs +18 -4
- package/dist/approval/schemas.d.ts +106 -32
- package/dist/approval/schemas.d.ts.map +1 -1
- package/dist/approval/schemas.js +19 -5
- package/dist/approval/types.d.ts +6 -0
- package/dist/approval/types.d.ts.map +1 -1
- package/dist/approval/types.js +1 -1
- package/dist/{chunk-C6A6W6XS.js → chunk-PTJYTZNU.js} +44 -1
- package/dist/{llm/tokenizer/default.cjs → context/compression/overflow.cjs} +20 -18
- package/dist/context/compression/overflow.d.ts +33 -0
- package/dist/context/compression/overflow.d.ts.map +1 -0
- package/dist/context/compression/overflow.js +19 -0
- package/dist/context/compression/reactive-overflow.cjs +201 -0
- package/dist/context/compression/reactive-overflow.d.ts +81 -0
- package/dist/context/compression/reactive-overflow.d.ts.map +1 -0
- package/dist/context/compression/reactive-overflow.js +178 -0
- package/dist/context/compression/types.d.ts +9 -7
- package/dist/context/compression/types.d.ts.map +1 -1
- package/dist/context/error-codes.cjs +3 -0
- package/dist/context/error-codes.d.ts +4 -1
- package/dist/context/error-codes.d.ts.map +1 -1
- package/dist/context/error-codes.js +4 -1
- package/dist/context/errors.cjs +28 -0
- package/dist/context/errors.d.ts +7 -0
- package/dist/context/errors.d.ts.map +1 -1
- package/dist/context/errors.js +29 -1
- package/dist/context/index.js +1 -1
- package/dist/context/manager.cjs +280 -323
- package/dist/context/manager.d.ts +65 -111
- package/dist/context/manager.d.ts.map +1 -1
- package/dist/context/manager.js +280 -328
- package/dist/context/media-helpers.js +1 -1
- package/dist/context/types.cjs +49 -0
- package/dist/context/types.d.ts +181 -72
- package/dist/context/types.d.ts.map +1 -1
- package/dist/context/types.js +35 -0
- package/dist/context/utils.cjs +266 -283
- package/dist/context/utils.d.ts +32 -18
- package/dist/context/utils.d.ts.map +1 -1
- package/dist/context/utils.js +266 -283
- package/dist/errors/DextoBaseError.js +1 -1
- package/dist/errors/DextoRuntimeError.js +1 -1
- package/dist/errors/DextoValidationError.js +1 -1
- package/dist/errors/index.js +1 -1
- package/dist/errors/result-bridge.js +1 -1
- package/dist/errors/types.js +1 -1
- package/dist/events/index.cjs +18 -1
- package/dist/events/index.d.ts +149 -12
- package/dist/events/index.d.ts.map +1 -1
- package/dist/events/index.js +19 -2
- package/dist/filesystem/error-codes.js +1 -1
- package/dist/filesystem/errors.js +1 -1
- package/dist/filesystem/filesystem-service.js +1 -1
- package/dist/filesystem/index.js +1 -1
- package/dist/filesystem/path-validator.js +1 -1
- package/dist/index.browser.cjs +23 -8
- package/dist/index.browser.d.ts +4 -3
- package/dist/index.browser.d.ts.map +1 -1
- package/dist/index.browser.js +20 -3
- package/dist/index.js +1 -1
- package/dist/llm/error-codes.cjs +0 -1
- package/dist/llm/error-codes.d.ts +0 -1
- package/dist/llm/error-codes.d.ts.map +1 -1
- package/dist/llm/error-codes.js +1 -2
- package/dist/llm/errors.cjs +10 -10
- package/dist/llm/errors.d.ts +5 -6
- package/dist/llm/errors.d.ts.map +1 -1
- package/dist/llm/errors.js +12 -12
- package/dist/llm/executor/stream-processor.cjs +367 -0
- package/dist/llm/executor/stream-processor.d.ts +55 -0
- package/dist/llm/executor/stream-processor.d.ts.map +1 -0
- package/dist/llm/executor/stream-processor.js +344 -0
- package/dist/llm/executor/tool-output-truncator.cjs +75 -0
- package/dist/llm/executor/tool-output-truncator.d.ts +27 -0
- package/dist/llm/executor/tool-output-truncator.d.ts.map +1 -0
- package/dist/llm/executor/tool-output-truncator.js +48 -0
- package/dist/llm/executor/turn-executor.cjs +753 -0
- package/dist/llm/executor/turn-executor.d.ts +166 -0
- package/dist/llm/executor/turn-executor.d.ts.map +1 -0
- package/dist/llm/executor/turn-executor.js +684 -0
- package/dist/llm/executor/types.d.ts +27 -0
- package/dist/llm/executor/types.d.ts.map +1 -0
- package/dist/llm/formatters/vercel.cjs +20 -186
- package/dist/llm/formatters/vercel.d.ts +2 -14
- package/dist/llm/formatters/vercel.d.ts.map +1 -1
- package/dist/llm/formatters/vercel.js +19 -185
- package/dist/llm/registry.cjs +36 -45
- package/dist/llm/registry.d.ts +53 -39
- package/dist/llm/registry.d.ts.map +1 -1
- package/dist/llm/registry.js +34 -42
- package/dist/llm/resolver.cjs +1 -31
- package/dist/llm/resolver.d.ts.map +1 -1
- package/dist/llm/resolver.js +2 -34
- package/dist/llm/schemas.cjs +2 -17
- package/dist/llm/schemas.d.ts +10 -23
- package/dist/llm/schemas.d.ts.map +1 -1
- package/dist/llm/schemas.js +5 -22
- package/dist/llm/services/factory.cjs +3 -92
- package/dist/llm/services/factory.d.ts +14 -4
- package/dist/llm/services/factory.d.ts.map +1 -1
- package/dist/llm/services/factory.js +4 -83
- package/dist/llm/services/test-utils.integration.cjs +6 -8
- package/dist/llm/services/test-utils.integration.d.ts.map +1 -1
- package/dist/llm/services/test-utils.integration.js +7 -9
- package/dist/llm/services/types.d.ts +1 -28
- package/dist/llm/services/types.d.ts.map +1 -1
- package/dist/llm/services/vercel.cjs +54 -468
- package/dist/llm/services/vercel.d.ts +38 -21
- package/dist/llm/services/vercel.d.ts.map +1 -1
- package/dist/llm/services/vercel.js +56 -475
- package/dist/llm/types.cjs +0 -3
- package/dist/llm/types.d.ts +8 -8
- package/dist/llm/types.d.ts.map +1 -1
- package/dist/llm/types.js +1 -3
- package/dist/llm/validation.js +1 -1
- package/dist/logger/browser.js +1 -1
- package/dist/logger/factory.js +1 -1
- package/dist/logger/index.js +1 -1
- package/dist/logger/logger.js +1 -1
- package/dist/logger/v2/dexto-logger.cjs +34 -6
- package/dist/logger/v2/dexto-logger.d.ts +20 -2
- package/dist/logger/v2/dexto-logger.d.ts.map +1 -1
- package/dist/logger/v2/dexto-logger.js +35 -7
- package/dist/logger/v2/error-codes.js +1 -1
- package/dist/logger/v2/errors.js +1 -1
- package/dist/logger/v2/schemas.js +1 -1
- package/dist/logger/v2/test-utils.cjs +70 -0
- package/dist/logger/v2/test-utils.d.ts +17 -0
- package/dist/logger/v2/test-utils.d.ts.map +1 -0
- package/dist/logger/v2/test-utils.js +46 -0
- package/dist/logger/v2/transport-factory.js +1 -1
- package/dist/logger/v2/transports/console-transport.js +1 -1
- package/dist/logger/v2/transports/file-transport.cjs +6 -0
- package/dist/logger/v2/transports/file-transport.d.ts +4 -0
- package/dist/logger/v2/transports/file-transport.d.ts.map +1 -1
- package/dist/logger/v2/transports/file-transport.js +7 -1
- package/dist/logger/v2/types.cjs +1 -0
- package/dist/logger/v2/types.d.ts +18 -2
- package/dist/logger/v2/types.d.ts.map +1 -1
- package/dist/logger/v2/types.js +2 -1
- package/dist/mcp/error-codes.cjs +1 -0
- package/dist/mcp/error-codes.d.ts +1 -0
- package/dist/mcp/error-codes.d.ts.map +1 -1
- package/dist/mcp/error-codes.js +2 -1
- package/dist/mcp/errors.cjs +13 -0
- package/dist/mcp/errors.d.ts +7 -0
- package/dist/mcp/errors.d.ts.map +1 -1
- package/dist/mcp/errors.js +14 -1
- package/dist/mcp/manager.cjs +4 -0
- package/dist/mcp/manager.d.ts.map +1 -1
- package/dist/mcp/manager.js +5 -1
- package/dist/mcp/mcp-client.js +1 -1
- package/dist/mcp/resolver.js +1 -1
- package/dist/mcp/schemas.cjs +6 -0
- package/dist/mcp/schemas.d.ts +52 -0
- package/dist/mcp/schemas.d.ts.map +1 -1
- package/dist/mcp/schemas.js +6 -1
- package/dist/memory/error-codes.js +1 -1
- package/dist/memory/errors.js +1 -1
- package/dist/memory/index.js +1 -1
- package/dist/memory/manager.js +1 -1
- package/dist/memory/schemas.d.ts +2 -2
- package/dist/memory/schemas.js +1 -1
- package/dist/plugins/builtins/content-policy.js +1 -1
- package/dist/plugins/builtins/response-sanitizer.js +1 -1
- package/dist/plugins/error-codes.js +1 -1
- package/dist/plugins/index.js +1 -1
- package/dist/plugins/loader.js +1 -1
- package/dist/plugins/manager.js +1 -1
- package/dist/plugins/registrations/builtins.js +1 -1
- package/dist/plugins/schemas.d.ts +3 -3
- package/dist/plugins/schemas.js +1 -1
- package/dist/plugins/types.d.ts +0 -1
- package/dist/plugins/types.d.ts.map +1 -1
- package/dist/process/command-validator.js +1 -1
- package/dist/process/error-codes.js +1 -1
- package/dist/process/errors.js +1 -1
- package/dist/process/index.js +1 -1
- package/dist/process/process-service.cjs +78 -26
- package/dist/process/process-service.d.ts +6 -1
- package/dist/process/process-service.d.ts.map +1 -1
- package/dist/process/process-service.js +79 -27
- package/dist/process/types.d.ts +2 -2
- package/dist/process/types.d.ts.map +1 -1
- package/dist/prompts/error-codes.cjs +1 -0
- package/dist/prompts/error-codes.d.ts +2 -1
- package/dist/prompts/error-codes.d.ts.map +1 -1
- package/dist/prompts/error-codes.js +2 -1
- package/dist/prompts/errors.cjs +15 -0
- package/dist/prompts/errors.d.ts +4 -0
- package/dist/prompts/errors.d.ts.map +1 -1
- package/dist/prompts/errors.js +16 -1
- package/dist/prompts/index.js +1 -1
- package/dist/prompts/name-validation.js +1 -1
- package/dist/prompts/prompt-manager.cjs +13 -2
- package/dist/prompts/prompt-manager.d.ts +7 -0
- package/dist/prompts/prompt-manager.d.ts.map +1 -1
- package/dist/prompts/prompt-manager.js +14 -3
- package/dist/prompts/providers/config-prompt-provider.cjs +12 -3
- package/dist/prompts/providers/config-prompt-provider.d.ts +2 -1
- package/dist/prompts/providers/config-prompt-provider.d.ts.map +1 -1
- package/dist/prompts/providers/config-prompt-provider.js +13 -4
- package/dist/prompts/providers/custom-prompt-provider.js +1 -1
- package/dist/prompts/providers/mcp-prompt-provider.js +1 -1
- package/dist/prompts/schemas.d.ts +12 -0
- package/dist/prompts/schemas.d.ts.map +1 -1
- package/dist/prompts/schemas.js +1 -1
- package/dist/prompts/types.d.ts +2 -0
- package/dist/prompts/types.d.ts.map +1 -1
- package/dist/prompts/utils.js +1 -1
- package/dist/resources/error-codes.js +1 -1
- package/dist/resources/errors.js +1 -1
- package/dist/resources/handlers/blob-handler.js +1 -1
- package/dist/resources/handlers/factory.js +1 -1
- package/dist/resources/handlers/filesystem-handler.js +1 -1
- package/dist/resources/index.js +1 -1
- package/dist/resources/internal-provider.js +1 -1
- package/dist/resources/manager.js +1 -1
- package/dist/resources/reference-parser.js +1 -1
- package/dist/resources/schemas.js +1 -1
- package/dist/search/index.js +1 -1
- package/dist/search/search-service.js +1 -1
- package/dist/session/chat-session.cjs +149 -51
- package/dist/session/chat-session.d.ts +69 -29
- package/dist/session/chat-session.d.ts.map +1 -1
- package/dist/session/chat-session.js +150 -52
- package/dist/session/error-codes.js +1 -1
- package/dist/session/errors.js +1 -1
- package/dist/session/history/database.cjs +134 -21
- package/dist/session/history/database.d.ts +37 -8
- package/dist/session/history/database.d.ts.map +1 -1
- package/dist/session/history/database.js +135 -22
- package/dist/session/history/factory.js +1 -1
- package/dist/session/history/memory.cjs +18 -0
- package/dist/session/history/memory.d.ts +8 -0
- package/dist/session/history/memory.d.ts.map +1 -1
- package/dist/session/history/memory.js +19 -1
- package/dist/session/history/types.d.ts +13 -1
- package/dist/session/history/types.d.ts.map +1 -1
- package/dist/session/index.cjs +3 -0
- package/dist/session/index.d.ts +3 -0
- package/dist/session/index.d.ts.map +1 -1
- package/dist/session/index.js +3 -1
- package/dist/session/message-queue.cjs +201 -0
- package/dist/session/message-queue.d.ts +114 -0
- package/dist/session/message-queue.d.ts.map +1 -0
- package/dist/session/message-queue.js +178 -0
- package/dist/session/schemas.js +1 -1
- package/dist/session/session-manager.cjs +57 -7
- package/dist/session/session-manager.d.ts +18 -0
- package/dist/session/session-manager.d.ts.map +1 -1
- package/dist/session/session-manager.js +58 -8
- package/dist/session/title-generator.cjs +4 -8
- package/dist/session/title-generator.d.ts +1 -2
- package/dist/session/title-generator.d.ts.map +1 -1
- package/dist/session/title-generator.js +5 -9
- package/dist/session/types.cjs +16 -0
- package/dist/session/types.d.ts +14 -0
- package/dist/session/types.d.ts.map +1 -0
- package/dist/session/types.js +0 -0
- package/dist/storage/blob/factory.js +1 -1
- package/dist/storage/blob/local-blob-store.js +1 -1
- package/dist/storage/blob/memory-blob-store.js +1 -1
- package/dist/storage/blob/schemas.js +1 -1
- package/dist/storage/cache/factory.js +1 -1
- package/dist/storage/cache/memory-cache-store.js +1 -1
- package/dist/storage/cache/redis-store.js +1 -1
- package/dist/storage/cache/schemas.js +1 -1
- package/dist/storage/database/factory.js +1 -1
- package/dist/storage/database/memory-database-store.js +1 -1
- package/dist/storage/database/postgres-store.cjs +12 -0
- package/dist/storage/database/postgres-store.d.ts.map +1 -1
- package/dist/storage/database/postgres-store.js +13 -1
- package/dist/storage/database/schemas.js +1 -1
- package/dist/storage/database/sqlite-store.js +1 -1
- package/dist/storage/error-codes.js +1 -1
- package/dist/storage/errors.js +1 -1
- package/dist/storage/index.js +1 -1
- package/dist/storage/schemas.js +1 -1
- package/dist/storage/storage-manager.js +1 -1
- package/dist/systemPrompt/contributors.js +1 -1
- package/dist/systemPrompt/error-codes.js +1 -1
- package/dist/systemPrompt/errors.js +1 -1
- package/dist/systemPrompt/in-built-prompts.js +1 -1
- package/dist/systemPrompt/index.js +1 -1
- package/dist/systemPrompt/manager.js +1 -1
- package/dist/systemPrompt/registry.js +1 -1
- package/dist/systemPrompt/schemas.d.ts +5 -5
- package/dist/systemPrompt/schemas.js +1 -1
- package/dist/telemetry/decorators.js +1 -1
- package/dist/telemetry/error-codes.js +1 -1
- package/dist/telemetry/errors.js +1 -1
- package/dist/telemetry/exporters.js +1 -1
- package/dist/telemetry/index.js +1 -1
- package/dist/telemetry/schemas.js +1 -1
- package/dist/telemetry/telemetry.js +1 -1
- package/dist/telemetry/utils.js +1 -1
- package/dist/tools/bash-pattern-utils.cjs +91 -0
- package/dist/tools/bash-pattern-utils.d.ts +58 -0
- package/dist/tools/bash-pattern-utils.d.ts.map +1 -0
- package/dist/tools/bash-pattern-utils.js +64 -0
- package/dist/tools/confirmation/allowed-tools-provider/factory.js +1 -1
- package/dist/tools/confirmation/allowed-tools-provider/in-memory.js +1 -1
- package/dist/tools/confirmation/allowed-tools-provider/storage.js +1 -1
- package/dist/tools/display-types.cjs +60 -0
- package/dist/tools/display-types.d.ts +133 -0
- package/dist/tools/display-types.d.ts.map +1 -0
- package/dist/tools/display-types.js +32 -0
- package/dist/tools/error-codes.cjs +2 -0
- package/dist/tools/error-codes.d.ts +3 -1
- package/dist/tools/error-codes.d.ts.map +1 -1
- package/dist/tools/error-codes.js +3 -1
- package/dist/tools/errors.cjs +30 -0
- package/dist/tools/errors.d.ts +16 -0
- package/dist/tools/errors.d.ts.map +1 -1
- package/dist/tools/errors.js +31 -1
- package/dist/tools/index.cjs +2 -0
- package/dist/tools/index.d.ts +1 -0
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +2 -1
- package/dist/tools/internal-tools/constants.js +1 -1
- package/dist/tools/internal-tools/implementations/ask-user-tool.cjs +1 -1
- package/dist/tools/internal-tools/implementations/ask-user-tool.js +2 -2
- package/dist/tools/internal-tools/implementations/bash-exec-tool.cjs +42 -18
- package/dist/tools/internal-tools/implementations/bash-exec-tool.d.ts +3 -3
- package/dist/tools/internal-tools/implementations/bash-exec-tool.d.ts.map +1 -1
- package/dist/tools/internal-tools/implementations/bash-exec-tool.js +43 -19
- package/dist/tools/internal-tools/implementations/bash-output-tool.js +1 -1
- package/dist/tools/internal-tools/implementations/delegate-to-url-tool.js +1 -1
- package/dist/tools/internal-tools/implementations/edit-file-tool.cjs +66 -1
- package/dist/tools/internal-tools/implementations/edit-file-tool.d.ts.map +1 -1
- package/dist/tools/internal-tools/implementations/edit-file-tool.js +67 -2
- package/dist/tools/internal-tools/implementations/glob-files-tool.cjs +14 -1
- package/dist/tools/internal-tools/implementations/glob-files-tool.d.ts.map +1 -1
- package/dist/tools/internal-tools/implementations/glob-files-tool.js +15 -2
- package/dist/tools/internal-tools/implementations/grep-content-tool.cjs +16 -1
- package/dist/tools/internal-tools/implementations/grep-content-tool.d.ts.map +1 -1
- package/dist/tools/internal-tools/implementations/grep-content-tool.js +17 -2
- package/dist/tools/internal-tools/implementations/kill-process-tool.js +1 -1
- package/dist/tools/internal-tools/implementations/read-file-tool.cjs +9 -1
- package/dist/tools/internal-tools/implementations/read-file-tool.d.ts.map +1 -1
- package/dist/tools/internal-tools/implementations/read-file-tool.js +10 -2
- package/dist/tools/internal-tools/implementations/search-history-tool.js +1 -1
- package/dist/tools/internal-tools/implementations/write-file-tool.cjs +69 -1
- package/dist/tools/internal-tools/implementations/write-file-tool.d.ts.map +1 -1
- package/dist/tools/internal-tools/implementations/write-file-tool.js +72 -2
- package/dist/tools/internal-tools/provider.cjs +27 -10
- package/dist/tools/internal-tools/provider.d.ts +8 -5
- package/dist/tools/internal-tools/provider.d.ts.map +1 -1
- package/dist/tools/internal-tools/provider.js +28 -11
- package/dist/tools/internal-tools/registry.cjs +4 -3
- package/dist/tools/internal-tools/registry.d.ts +28 -7
- package/dist/tools/internal-tools/registry.d.ts.map +1 -1
- package/dist/tools/internal-tools/registry.js +5 -4
- package/dist/tools/schemas.cjs +16 -6
- package/dist/tools/schemas.d.ts +31 -4
- package/dist/tools/schemas.d.ts.map +1 -1
- package/dist/tools/schemas.js +14 -6
- package/dist/tools/tool-manager.cjs +140 -18
- package/dist/tools/tool-manager.d.ts +23 -1
- package/dist/tools/tool-manager.d.ts.map +1 -1
- package/dist/tools/tool-manager.js +145 -19
- package/dist/tools/types.d.ts +20 -0
- package/dist/tools/types.d.ts.map +1 -1
- package/dist/utils/api-key-resolver.js +1 -1
- package/dist/utils/async-context.js +1 -1
- package/dist/utils/debug.js +1 -1
- package/dist/{llm/tokenizer/types.cjs → utils/defer.cjs} +19 -10
- package/dist/utils/defer.d.ts +63 -0
- package/dist/utils/defer.d.ts.map +1 -0
- package/dist/utils/defer.js +19 -0
- package/dist/utils/env-file.js +1 -1
- package/dist/utils/error-conversion.js +1 -1
- package/dist/utils/execution-context.js +1 -1
- package/dist/utils/fs-walk.js +1 -1
- package/dist/utils/index.cjs +3 -1
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +1 -0
- package/dist/utils/path.js +1 -1
- package/dist/utils/redactor.js +1 -1
- package/dist/utils/result.js +1 -1
- package/dist/utils/safe-stringify.js +1 -1
- package/dist/utils/schema-metadata.js +1 -1
- package/dist/utils/schema.js +1 -1
- package/dist/utils/service-initializer.cjs +6 -2
- package/dist/utils/service-initializer.d.ts.map +1 -1
- package/dist/utils/service-initializer.js +7 -3
- package/dist/utils/user-info.js +1 -1
- package/dist/utils/zod-schema-converter.js +1 -1
- package/package.json +6 -7
- package/dist/context/compression/middle-removal.cjs +0 -95
- package/dist/context/compression/middle-removal.d.ts +0 -47
- package/dist/context/compression/middle-removal.d.ts.map +0 -1
- package/dist/context/compression/middle-removal.js +0 -72
- package/dist/context/compression/oldest-removal.cjs +0 -83
- package/dist/context/compression/oldest-removal.d.ts +0 -42
- package/dist/context/compression/oldest-removal.d.ts.map +0 -1
- package/dist/context/compression/oldest-removal.js +0 -60
- package/dist/llm/formatters/anthropic.cjs +0 -257
- package/dist/llm/formatters/anthropic.d.ts +0 -46
- package/dist/llm/formatters/anthropic.d.ts.map +0 -1
- package/dist/llm/formatters/anthropic.js +0 -239
- package/dist/llm/formatters/factory.cjs +0 -50
- package/dist/llm/formatters/factory.d.ts +0 -10
- package/dist/llm/formatters/factory.d.ts.map +0 -1
- package/dist/llm/formatters/factory.js +0 -27
- package/dist/llm/formatters/openai.cjs +0 -203
- package/dist/llm/formatters/openai.d.ts +0 -39
- package/dist/llm/formatters/openai.d.ts.map +0 -1
- package/dist/llm/formatters/openai.js +0 -184
- package/dist/llm/formatters/types.d.ts +0 -41
- package/dist/llm/formatters/types.d.ts.map +0 -1
- package/dist/llm/services/anthropic.cjs +0 -511
- package/dist/llm/services/anthropic.d.ts +0 -48
- package/dist/llm/services/anthropic.d.ts.map +0 -1
- package/dist/llm/services/anthropic.js +0 -447
- package/dist/llm/services/openai.cjs +0 -611
- package/dist/llm/services/openai.d.ts +0 -48
- package/dist/llm/services/openai.d.ts.map +0 -1
- package/dist/llm/services/openai.js +0 -547
- package/dist/llm/tokenizer/anthropic.cjs +0 -43
- package/dist/llm/tokenizer/anthropic.d.ts +0 -19
- package/dist/llm/tokenizer/anthropic.d.ts.map +0 -1
- package/dist/llm/tokenizer/anthropic.js +0 -20
- package/dist/llm/tokenizer/default.d.ts +0 -14
- package/dist/llm/tokenizer/default.d.ts.map +0 -1
- package/dist/llm/tokenizer/default.js +0 -18
- package/dist/llm/tokenizer/factory.cjs +0 -44
- package/dist/llm/tokenizer/factory.d.ts +0 -12
- package/dist/llm/tokenizer/factory.d.ts.map +0 -1
- package/dist/llm/tokenizer/factory.js +0 -21
- package/dist/llm/tokenizer/google.cjs +0 -52
- package/dist/llm/tokenizer/google.d.ts +0 -29
- package/dist/llm/tokenizer/google.d.ts.map +0 -1
- package/dist/llm/tokenizer/google.js +0 -29
- package/dist/llm/tokenizer/openai.cjs +0 -115
- package/dist/llm/tokenizer/openai.d.ts +0 -41
- package/dist/llm/tokenizer/openai.d.ts.map +0 -1
- package/dist/llm/tokenizer/openai.js +0 -91
- package/dist/llm/tokenizer/types.d.ts +0 -18
- package/dist/llm/tokenizer/types.d.ts.map +0 -1
- package/dist/llm/tokenizer/types.js +0 -10
- /package/dist/llm/{formatters → executor}/types.cjs +0 -0
- /package/dist/llm/{formatters → executor}/types.js +0 -0
|
@@ -1,257 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __defProp = Object.defineProperty;
|
|
3
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
-
var __export = (target, all) => {
|
|
7
|
-
for (var name in all)
|
|
8
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
-
};
|
|
10
|
-
var __copyProps = (to, from, except, desc) => {
|
|
11
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
-
for (let key of __getOwnPropNames(from))
|
|
13
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
-
}
|
|
16
|
-
return to;
|
|
17
|
-
};
|
|
18
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
-
var anthropic_exports = {};
|
|
20
|
-
__export(anthropic_exports, {
|
|
21
|
-
AnthropicMessageFormatter: () => AnthropicMessageFormatter
|
|
22
|
-
});
|
|
23
|
-
module.exports = __toCommonJS(anthropic_exports);
|
|
24
|
-
var import_types4 = require("../../logger/v2/types.cjs");
|
|
25
|
-
var import_utils = require("../../context/utils.cjs");
|
|
26
|
-
class AnthropicMessageFormatter {
|
|
27
|
-
logger;
|
|
28
|
-
constructor(logger) {
|
|
29
|
-
this.logger = logger.createChild(import_types4.DextoLogComponent.LLM);
|
|
30
|
-
}
|
|
31
|
-
/**
|
|
32
|
-
* Formats internal messages into Anthropic's Claude API format
|
|
33
|
-
*
|
|
34
|
-
* Handles the complex logic of:
|
|
35
|
-
* 1. Ensuring tool calls are paired with their results
|
|
36
|
-
* 2. Creating the correct nested content structure
|
|
37
|
-
* 3. Converting tool results to Anthropic's expected format
|
|
38
|
-
*
|
|
39
|
-
* @param history Array of internal messages to format
|
|
40
|
-
* @returns Array of messages formatted for Anthropic's API
|
|
41
|
-
*/
|
|
42
|
-
format(history, context, _systemPrompt) {
|
|
43
|
-
const formatted = [];
|
|
44
|
-
let filteredHistory;
|
|
45
|
-
try {
|
|
46
|
-
filteredHistory = (0, import_utils.filterMessagesByLLMCapabilities)([...history], context, this.logger);
|
|
47
|
-
} catch (error) {
|
|
48
|
-
this.logger.warn("Failed to apply capability filtering, using original history:", {
|
|
49
|
-
error: error instanceof Error ? error.message : String(error)
|
|
50
|
-
});
|
|
51
|
-
filteredHistory = [...history];
|
|
52
|
-
}
|
|
53
|
-
const pendingToolCalls = /* @__PURE__ */ new Map();
|
|
54
|
-
for (let i = 0; i < filteredHistory.length; i++) {
|
|
55
|
-
const msg = filteredHistory[i];
|
|
56
|
-
if (!msg) {
|
|
57
|
-
continue;
|
|
58
|
-
}
|
|
59
|
-
if (msg.role === "system") continue;
|
|
60
|
-
if (msg.role === "user" && !msg.toolCallId) {
|
|
61
|
-
formatted.push({
|
|
62
|
-
role: "user",
|
|
63
|
-
content: this.formatUserContent(msg.content)
|
|
64
|
-
});
|
|
65
|
-
continue;
|
|
66
|
-
}
|
|
67
|
-
if (msg.role === "tool" && msg.toolCallId) {
|
|
68
|
-
const pendingCall = pendingToolCalls.get(msg.toolCallId);
|
|
69
|
-
if (pendingCall) {
|
|
70
|
-
if (pendingCall.assistantMsg) {
|
|
71
|
-
formatted.push(pendingCall.assistantMsg);
|
|
72
|
-
pendingCall.assistantMsg = null;
|
|
73
|
-
}
|
|
74
|
-
const safeContent = (0, import_utils.toTextForToolMessage)(msg.content);
|
|
75
|
-
const toolResultMsg = {
|
|
76
|
-
role: "user",
|
|
77
|
-
content: [
|
|
78
|
-
{
|
|
79
|
-
type: "tool_result",
|
|
80
|
-
tool_use_id: msg.toolCallId,
|
|
81
|
-
content: safeContent
|
|
82
|
-
}
|
|
83
|
-
]
|
|
84
|
-
};
|
|
85
|
-
formatted.push(toolResultMsg);
|
|
86
|
-
pendingToolCalls.delete(msg.toolCallId);
|
|
87
|
-
} else {
|
|
88
|
-
this.logger.warn(
|
|
89
|
-
`Skipping orphaned tool result ${msg.toolCallId} (no matching tool call found) - cannot send to Anthropic without corresponding tool_use`
|
|
90
|
-
);
|
|
91
|
-
}
|
|
92
|
-
continue;
|
|
93
|
-
}
|
|
94
|
-
if (msg.role === "assistant" && msg.toolCalls && msg.toolCalls.length > 0) {
|
|
95
|
-
for (const toolCall of msg.toolCalls) {
|
|
96
|
-
const contentArray = [];
|
|
97
|
-
if (msg.content) {
|
|
98
|
-
contentArray.push({
|
|
99
|
-
type: "text",
|
|
100
|
-
text: msg.content
|
|
101
|
-
});
|
|
102
|
-
}
|
|
103
|
-
contentArray.push({
|
|
104
|
-
type: "tool_use",
|
|
105
|
-
id: toolCall.id,
|
|
106
|
-
name: toolCall.function.name,
|
|
107
|
-
input: JSON.parse(toolCall.function.arguments)
|
|
108
|
-
});
|
|
109
|
-
const assistantMsg = {
|
|
110
|
-
role: "assistant",
|
|
111
|
-
content: contentArray
|
|
112
|
-
};
|
|
113
|
-
pendingToolCalls.set(toolCall.id, {
|
|
114
|
-
assistantMsg,
|
|
115
|
-
index: i,
|
|
116
|
-
toolName: toolCall.function.name
|
|
117
|
-
});
|
|
118
|
-
}
|
|
119
|
-
continue;
|
|
120
|
-
}
|
|
121
|
-
if (msg.role === "assistant" && (!msg.toolCalls || msg.toolCalls.length === 0)) {
|
|
122
|
-
const assistantMsg = {
|
|
123
|
-
role: "assistant",
|
|
124
|
-
content: String(msg.content || "")
|
|
125
|
-
};
|
|
126
|
-
formatted.push(assistantMsg);
|
|
127
|
-
continue;
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
const remainingToolCalls = Array.from(pendingToolCalls.entries()).sort(
|
|
131
|
-
(a, b) => a[1].index - b[1].index
|
|
132
|
-
);
|
|
133
|
-
for (const [id, { assistantMsg, toolName }] of remainingToolCalls) {
|
|
134
|
-
if (assistantMsg) {
|
|
135
|
-
formatted.push(assistantMsg);
|
|
136
|
-
const syntheticResult = {
|
|
137
|
-
role: "user",
|
|
138
|
-
content: [
|
|
139
|
-
{
|
|
140
|
-
type: "tool_result",
|
|
141
|
-
tool_use_id: id,
|
|
142
|
-
content: "Error: Tool execution was interrupted (session crashed or cancelled before completion)",
|
|
143
|
-
is_error: true
|
|
144
|
-
}
|
|
145
|
-
]
|
|
146
|
-
};
|
|
147
|
-
formatted.push(syntheticResult);
|
|
148
|
-
this.logger.warn(
|
|
149
|
-
`Tool call ${id} (${toolName}) had no matching tool result - added synthetic error result to prevent API errors`
|
|
150
|
-
);
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
return formatted;
|
|
154
|
-
}
|
|
155
|
-
/**
|
|
156
|
-
* Returns the system prompt for Anthropic's API
|
|
157
|
-
*
|
|
158
|
-
* Anthropic doesn't include the system prompt in messages array
|
|
159
|
-
* but passes it as a separate parameter
|
|
160
|
-
*
|
|
161
|
-
* @param systemPrompt The system prompt to format
|
|
162
|
-
* @returns The system prompt without any modification
|
|
163
|
-
*/
|
|
164
|
-
formatSystemPrompt(systemPrompt) {
|
|
165
|
-
return systemPrompt;
|
|
166
|
-
}
|
|
167
|
-
/**
|
|
168
|
-
* Parses Anthropic API response into internal message objects.
|
|
169
|
-
*/
|
|
170
|
-
parseResponse(response) {
|
|
171
|
-
const internal = [];
|
|
172
|
-
const typedResponse = response;
|
|
173
|
-
if (!typedResponse || !Array.isArray(typedResponse.content)) {
|
|
174
|
-
return internal;
|
|
175
|
-
}
|
|
176
|
-
let combinedText = null;
|
|
177
|
-
const calls = [];
|
|
178
|
-
for (const block of typedResponse.content) {
|
|
179
|
-
const typedBlock = block;
|
|
180
|
-
if (typedBlock.type === "text") {
|
|
181
|
-
combinedText = (combinedText ?? "") + typedBlock.text;
|
|
182
|
-
} else if (typedBlock.type === "tool_use") {
|
|
183
|
-
calls.push({
|
|
184
|
-
id: typedBlock.id,
|
|
185
|
-
type: "function",
|
|
186
|
-
function: {
|
|
187
|
-
name: typedBlock.name,
|
|
188
|
-
arguments: JSON.stringify(typedBlock.input)
|
|
189
|
-
}
|
|
190
|
-
});
|
|
191
|
-
}
|
|
192
|
-
}
|
|
193
|
-
const assistantMessage = {
|
|
194
|
-
role: "assistant",
|
|
195
|
-
content: combinedText
|
|
196
|
-
};
|
|
197
|
-
if (calls.length > 0) {
|
|
198
|
-
assistantMessage.toolCalls = calls;
|
|
199
|
-
}
|
|
200
|
-
internal.push(assistantMessage);
|
|
201
|
-
return internal;
|
|
202
|
-
}
|
|
203
|
-
// Helper to format user message parts (text + image + file) into Anthropic multimodal API format
|
|
204
|
-
formatUserContent(content) {
|
|
205
|
-
if (!Array.isArray(content)) {
|
|
206
|
-
return String(content || "");
|
|
207
|
-
}
|
|
208
|
-
const blocks = content.map((part) => {
|
|
209
|
-
if (part.type === "text") {
|
|
210
|
-
return { type: "text", text: part.text };
|
|
211
|
-
}
|
|
212
|
-
if (part.type === "image") {
|
|
213
|
-
const raw = (0, import_utils.getImageData)(part, this.logger);
|
|
214
|
-
let source;
|
|
215
|
-
if (raw.startsWith("http://") || raw.startsWith("https://")) {
|
|
216
|
-
source = { type: "url", url: raw };
|
|
217
|
-
} else if (raw.startsWith("data:")) {
|
|
218
|
-
const [meta, b64] = raw.split(",", 2);
|
|
219
|
-
const mediaTypeMatch = meta?.match(/data:(.*);base64/);
|
|
220
|
-
const media_type = mediaTypeMatch && mediaTypeMatch[1] || part.mimeType || "application/octet-stream";
|
|
221
|
-
source = { type: "base64", media_type, data: b64 };
|
|
222
|
-
} else {
|
|
223
|
-
source = { type: "base64", media_type: part.mimeType, data: raw };
|
|
224
|
-
}
|
|
225
|
-
return { type: "image", source };
|
|
226
|
-
}
|
|
227
|
-
if (part.type === "file") {
|
|
228
|
-
const raw = (0, import_utils.getFileData)(part, this.logger);
|
|
229
|
-
const fileName = part.filename || "file";
|
|
230
|
-
let content2 = "";
|
|
231
|
-
try {
|
|
232
|
-
if (raw.startsWith("data:")) {
|
|
233
|
-
const [, base64Data] = raw.split(",", 2);
|
|
234
|
-
content2 = Buffer.from(base64Data || "", "base64").toString("utf-8");
|
|
235
|
-
} else if (raw.match(/^[A-Za-z0-9+/]*={0,2}$/)) {
|
|
236
|
-
content2 = Buffer.from(raw, "base64").toString("utf-8");
|
|
237
|
-
} else {
|
|
238
|
-
content2 = raw;
|
|
239
|
-
}
|
|
240
|
-
} catch {
|
|
241
|
-
content2 = `[Binary file: ${fileName}]`;
|
|
242
|
-
}
|
|
243
|
-
return {
|
|
244
|
-
type: "text",
|
|
245
|
-
text: `File "${fileName}":
|
|
246
|
-
${content2}`
|
|
247
|
-
};
|
|
248
|
-
}
|
|
249
|
-
return null;
|
|
250
|
-
}).filter((block) => block !== null);
|
|
251
|
-
return blocks;
|
|
252
|
-
}
|
|
253
|
-
}
|
|
254
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
255
|
-
0 && (module.exports = {
|
|
256
|
-
AnthropicMessageFormatter
|
|
257
|
-
});
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
import { MessageParam } from '@anthropic-ai/sdk/resources';
|
|
2
|
-
import { IMessageFormatter } from './types.js';
|
|
3
|
-
import { LLMContext } from '../types.js';
|
|
4
|
-
import { InternalMessage } from '../../context/types.js';
|
|
5
|
-
import type { IDextoLogger } from '../../logger/v2/types.js';
|
|
6
|
-
/**
|
|
7
|
-
* Message formatter for Anthropic's Claude API.
|
|
8
|
-
*
|
|
9
|
-
* Converts the internal message format to Anthropic's specific structure, which has
|
|
10
|
-
* notable differences in handling tool calls and tool results:
|
|
11
|
-
* - Anthropic uses a content array with different types (text, tool_use, tool_result)
|
|
12
|
-
* - Tool results are sent as user messages with special content structure
|
|
13
|
-
* - System prompts are not included in the messages array but sent separately
|
|
14
|
-
*/
|
|
15
|
-
export declare class AnthropicMessageFormatter implements IMessageFormatter {
|
|
16
|
-
private logger;
|
|
17
|
-
constructor(logger: IDextoLogger);
|
|
18
|
-
/**
|
|
19
|
-
* Formats internal messages into Anthropic's Claude API format
|
|
20
|
-
*
|
|
21
|
-
* Handles the complex logic of:
|
|
22
|
-
* 1. Ensuring tool calls are paired with their results
|
|
23
|
-
* 2. Creating the correct nested content structure
|
|
24
|
-
* 3. Converting tool results to Anthropic's expected format
|
|
25
|
-
*
|
|
26
|
-
* @param history Array of internal messages to format
|
|
27
|
-
* @returns Array of messages formatted for Anthropic's API
|
|
28
|
-
*/
|
|
29
|
-
format(history: Readonly<InternalMessage[]>, context: LLMContext, _systemPrompt?: string | null): MessageParam[];
|
|
30
|
-
/**
|
|
31
|
-
* Returns the system prompt for Anthropic's API
|
|
32
|
-
*
|
|
33
|
-
* Anthropic doesn't include the system prompt in messages array
|
|
34
|
-
* but passes it as a separate parameter
|
|
35
|
-
*
|
|
36
|
-
* @param systemPrompt The system prompt to format
|
|
37
|
-
* @returns The system prompt without any modification
|
|
38
|
-
*/
|
|
39
|
-
formatSystemPrompt(systemPrompt: string | null): string | null;
|
|
40
|
-
/**
|
|
41
|
-
* Parses Anthropic API response into internal message objects.
|
|
42
|
-
*/
|
|
43
|
-
parseResponse(response: unknown): InternalMessage[];
|
|
44
|
-
private formatUserContent;
|
|
45
|
-
}
|
|
46
|
-
//# sourceMappingURL=anthropic.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"anthropic.d.ts","sourceRoot":"","sources":["../../../src/llm/formatters/anthropic.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAO3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAS7D;;;;;;;;GAQG;AACH,qBAAa,yBAA0B,YAAW,iBAAiB;IAC/D,OAAO,CAAC,MAAM,CAAe;gBAEjB,MAAM,EAAE,YAAY;IAGhC;;;;;;;;;;OAUG;IACH,MAAM,CACF,OAAO,EAAE,QAAQ,CAAC,eAAe,EAAE,CAAC,EACpC,OAAO,EAAE,UAAU,EACnB,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,GAC9B,YAAY,EAAE;IA6KjB;;;;;;;;OAQG;IACH,kBAAkB,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI;IAK9D;;OAEG;IACH,aAAa,CAAC,QAAQ,EAAE,OAAO,GAAG,eAAe,EAAE;IAsCnD,OAAO,CAAC,iBAAiB;CA+D5B"}
|
|
@@ -1,239 +0,0 @@
|
|
|
1
|
-
import "../../chunk-C6A6W6XS.js";
|
|
2
|
-
import { DextoLogComponent } from "../../logger/v2/types.js";
|
|
3
|
-
import {
|
|
4
|
-
getImageData,
|
|
5
|
-
getFileData,
|
|
6
|
-
filterMessagesByLLMCapabilities,
|
|
7
|
-
toTextForToolMessage
|
|
8
|
-
} from "../../context/utils.js";
|
|
9
|
-
class AnthropicMessageFormatter {
|
|
10
|
-
logger;
|
|
11
|
-
constructor(logger) {
|
|
12
|
-
this.logger = logger.createChild(DextoLogComponent.LLM);
|
|
13
|
-
}
|
|
14
|
-
/**
|
|
15
|
-
* Formats internal messages into Anthropic's Claude API format
|
|
16
|
-
*
|
|
17
|
-
* Handles the complex logic of:
|
|
18
|
-
* 1. Ensuring tool calls are paired with their results
|
|
19
|
-
* 2. Creating the correct nested content structure
|
|
20
|
-
* 3. Converting tool results to Anthropic's expected format
|
|
21
|
-
*
|
|
22
|
-
* @param history Array of internal messages to format
|
|
23
|
-
* @returns Array of messages formatted for Anthropic's API
|
|
24
|
-
*/
|
|
25
|
-
format(history, context, _systemPrompt) {
|
|
26
|
-
const formatted = [];
|
|
27
|
-
let filteredHistory;
|
|
28
|
-
try {
|
|
29
|
-
filteredHistory = filterMessagesByLLMCapabilities([...history], context, this.logger);
|
|
30
|
-
} catch (error) {
|
|
31
|
-
this.logger.warn("Failed to apply capability filtering, using original history:", {
|
|
32
|
-
error: error instanceof Error ? error.message : String(error)
|
|
33
|
-
});
|
|
34
|
-
filteredHistory = [...history];
|
|
35
|
-
}
|
|
36
|
-
const pendingToolCalls = /* @__PURE__ */ new Map();
|
|
37
|
-
for (let i = 0; i < filteredHistory.length; i++) {
|
|
38
|
-
const msg = filteredHistory[i];
|
|
39
|
-
if (!msg) {
|
|
40
|
-
continue;
|
|
41
|
-
}
|
|
42
|
-
if (msg.role === "system") continue;
|
|
43
|
-
if (msg.role === "user" && !msg.toolCallId) {
|
|
44
|
-
formatted.push({
|
|
45
|
-
role: "user",
|
|
46
|
-
content: this.formatUserContent(msg.content)
|
|
47
|
-
});
|
|
48
|
-
continue;
|
|
49
|
-
}
|
|
50
|
-
if (msg.role === "tool" && msg.toolCallId) {
|
|
51
|
-
const pendingCall = pendingToolCalls.get(msg.toolCallId);
|
|
52
|
-
if (pendingCall) {
|
|
53
|
-
if (pendingCall.assistantMsg) {
|
|
54
|
-
formatted.push(pendingCall.assistantMsg);
|
|
55
|
-
pendingCall.assistantMsg = null;
|
|
56
|
-
}
|
|
57
|
-
const safeContent = toTextForToolMessage(msg.content);
|
|
58
|
-
const toolResultMsg = {
|
|
59
|
-
role: "user",
|
|
60
|
-
content: [
|
|
61
|
-
{
|
|
62
|
-
type: "tool_result",
|
|
63
|
-
tool_use_id: msg.toolCallId,
|
|
64
|
-
content: safeContent
|
|
65
|
-
}
|
|
66
|
-
]
|
|
67
|
-
};
|
|
68
|
-
formatted.push(toolResultMsg);
|
|
69
|
-
pendingToolCalls.delete(msg.toolCallId);
|
|
70
|
-
} else {
|
|
71
|
-
this.logger.warn(
|
|
72
|
-
`Skipping orphaned tool result ${msg.toolCallId} (no matching tool call found) - cannot send to Anthropic without corresponding tool_use`
|
|
73
|
-
);
|
|
74
|
-
}
|
|
75
|
-
continue;
|
|
76
|
-
}
|
|
77
|
-
if (msg.role === "assistant" && msg.toolCalls && msg.toolCalls.length > 0) {
|
|
78
|
-
for (const toolCall of msg.toolCalls) {
|
|
79
|
-
const contentArray = [];
|
|
80
|
-
if (msg.content) {
|
|
81
|
-
contentArray.push({
|
|
82
|
-
type: "text",
|
|
83
|
-
text: msg.content
|
|
84
|
-
});
|
|
85
|
-
}
|
|
86
|
-
contentArray.push({
|
|
87
|
-
type: "tool_use",
|
|
88
|
-
id: toolCall.id,
|
|
89
|
-
name: toolCall.function.name,
|
|
90
|
-
input: JSON.parse(toolCall.function.arguments)
|
|
91
|
-
});
|
|
92
|
-
const assistantMsg = {
|
|
93
|
-
role: "assistant",
|
|
94
|
-
content: contentArray
|
|
95
|
-
};
|
|
96
|
-
pendingToolCalls.set(toolCall.id, {
|
|
97
|
-
assistantMsg,
|
|
98
|
-
index: i,
|
|
99
|
-
toolName: toolCall.function.name
|
|
100
|
-
});
|
|
101
|
-
}
|
|
102
|
-
continue;
|
|
103
|
-
}
|
|
104
|
-
if (msg.role === "assistant" && (!msg.toolCalls || msg.toolCalls.length === 0)) {
|
|
105
|
-
const assistantMsg = {
|
|
106
|
-
role: "assistant",
|
|
107
|
-
content: String(msg.content || "")
|
|
108
|
-
};
|
|
109
|
-
formatted.push(assistantMsg);
|
|
110
|
-
continue;
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
const remainingToolCalls = Array.from(pendingToolCalls.entries()).sort(
|
|
114
|
-
(a, b) => a[1].index - b[1].index
|
|
115
|
-
);
|
|
116
|
-
for (const [id, { assistantMsg, toolName }] of remainingToolCalls) {
|
|
117
|
-
if (assistantMsg) {
|
|
118
|
-
formatted.push(assistantMsg);
|
|
119
|
-
const syntheticResult = {
|
|
120
|
-
role: "user",
|
|
121
|
-
content: [
|
|
122
|
-
{
|
|
123
|
-
type: "tool_result",
|
|
124
|
-
tool_use_id: id,
|
|
125
|
-
content: "Error: Tool execution was interrupted (session crashed or cancelled before completion)",
|
|
126
|
-
is_error: true
|
|
127
|
-
}
|
|
128
|
-
]
|
|
129
|
-
};
|
|
130
|
-
formatted.push(syntheticResult);
|
|
131
|
-
this.logger.warn(
|
|
132
|
-
`Tool call ${id} (${toolName}) had no matching tool result - added synthetic error result to prevent API errors`
|
|
133
|
-
);
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
return formatted;
|
|
137
|
-
}
|
|
138
|
-
/**
|
|
139
|
-
* Returns the system prompt for Anthropic's API
|
|
140
|
-
*
|
|
141
|
-
* Anthropic doesn't include the system prompt in messages array
|
|
142
|
-
* but passes it as a separate parameter
|
|
143
|
-
*
|
|
144
|
-
* @param systemPrompt The system prompt to format
|
|
145
|
-
* @returns The system prompt without any modification
|
|
146
|
-
*/
|
|
147
|
-
formatSystemPrompt(systemPrompt) {
|
|
148
|
-
return systemPrompt;
|
|
149
|
-
}
|
|
150
|
-
/**
|
|
151
|
-
* Parses Anthropic API response into internal message objects.
|
|
152
|
-
*/
|
|
153
|
-
parseResponse(response) {
|
|
154
|
-
const internal = [];
|
|
155
|
-
const typedResponse = response;
|
|
156
|
-
if (!typedResponse || !Array.isArray(typedResponse.content)) {
|
|
157
|
-
return internal;
|
|
158
|
-
}
|
|
159
|
-
let combinedText = null;
|
|
160
|
-
const calls = [];
|
|
161
|
-
for (const block of typedResponse.content) {
|
|
162
|
-
const typedBlock = block;
|
|
163
|
-
if (typedBlock.type === "text") {
|
|
164
|
-
combinedText = (combinedText ?? "") + typedBlock.text;
|
|
165
|
-
} else if (typedBlock.type === "tool_use") {
|
|
166
|
-
calls.push({
|
|
167
|
-
id: typedBlock.id,
|
|
168
|
-
type: "function",
|
|
169
|
-
function: {
|
|
170
|
-
name: typedBlock.name,
|
|
171
|
-
arguments: JSON.stringify(typedBlock.input)
|
|
172
|
-
}
|
|
173
|
-
});
|
|
174
|
-
}
|
|
175
|
-
}
|
|
176
|
-
const assistantMessage = {
|
|
177
|
-
role: "assistant",
|
|
178
|
-
content: combinedText
|
|
179
|
-
};
|
|
180
|
-
if (calls.length > 0) {
|
|
181
|
-
assistantMessage.toolCalls = calls;
|
|
182
|
-
}
|
|
183
|
-
internal.push(assistantMessage);
|
|
184
|
-
return internal;
|
|
185
|
-
}
|
|
186
|
-
// Helper to format user message parts (text + image + file) into Anthropic multimodal API format
|
|
187
|
-
formatUserContent(content) {
|
|
188
|
-
if (!Array.isArray(content)) {
|
|
189
|
-
return String(content || "");
|
|
190
|
-
}
|
|
191
|
-
const blocks = content.map((part) => {
|
|
192
|
-
if (part.type === "text") {
|
|
193
|
-
return { type: "text", text: part.text };
|
|
194
|
-
}
|
|
195
|
-
if (part.type === "image") {
|
|
196
|
-
const raw = getImageData(part, this.logger);
|
|
197
|
-
let source;
|
|
198
|
-
if (raw.startsWith("http://") || raw.startsWith("https://")) {
|
|
199
|
-
source = { type: "url", url: raw };
|
|
200
|
-
} else if (raw.startsWith("data:")) {
|
|
201
|
-
const [meta, b64] = raw.split(",", 2);
|
|
202
|
-
const mediaTypeMatch = meta?.match(/data:(.*);base64/);
|
|
203
|
-
const media_type = mediaTypeMatch && mediaTypeMatch[1] || part.mimeType || "application/octet-stream";
|
|
204
|
-
source = { type: "base64", media_type, data: b64 };
|
|
205
|
-
} else {
|
|
206
|
-
source = { type: "base64", media_type: part.mimeType, data: raw };
|
|
207
|
-
}
|
|
208
|
-
return { type: "image", source };
|
|
209
|
-
}
|
|
210
|
-
if (part.type === "file") {
|
|
211
|
-
const raw = getFileData(part, this.logger);
|
|
212
|
-
const fileName = part.filename || "file";
|
|
213
|
-
let content2 = "";
|
|
214
|
-
try {
|
|
215
|
-
if (raw.startsWith("data:")) {
|
|
216
|
-
const [, base64Data] = raw.split(",", 2);
|
|
217
|
-
content2 = Buffer.from(base64Data || "", "base64").toString("utf-8");
|
|
218
|
-
} else if (raw.match(/^[A-Za-z0-9+/]*={0,2}$/)) {
|
|
219
|
-
content2 = Buffer.from(raw, "base64").toString("utf-8");
|
|
220
|
-
} else {
|
|
221
|
-
content2 = raw;
|
|
222
|
-
}
|
|
223
|
-
} catch {
|
|
224
|
-
content2 = `[Binary file: ${fileName}]`;
|
|
225
|
-
}
|
|
226
|
-
return {
|
|
227
|
-
type: "text",
|
|
228
|
-
text: `File "${fileName}":
|
|
229
|
-
${content2}`
|
|
230
|
-
};
|
|
231
|
-
}
|
|
232
|
-
return null;
|
|
233
|
-
}).filter((block) => block !== null);
|
|
234
|
-
return blocks;
|
|
235
|
-
}
|
|
236
|
-
}
|
|
237
|
-
export {
|
|
238
|
-
AnthropicMessageFormatter
|
|
239
|
-
};
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __defProp = Object.defineProperty;
|
|
3
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
-
var __export = (target, all) => {
|
|
7
|
-
for (var name in all)
|
|
8
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
-
};
|
|
10
|
-
var __copyProps = (to, from, except, desc) => {
|
|
11
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
-
for (let key of __getOwnPropNames(from))
|
|
13
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
-
}
|
|
16
|
-
return to;
|
|
17
|
-
};
|
|
18
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
-
var factory_exports = {};
|
|
20
|
-
__export(factory_exports, {
|
|
21
|
-
createMessageFormatter: () => createMessageFormatter
|
|
22
|
-
});
|
|
23
|
-
module.exports = __toCommonJS(factory_exports);
|
|
24
|
-
var import_vercel = require("./vercel.js");
|
|
25
|
-
var import_openai = require("./openai.js");
|
|
26
|
-
var import_anthropic = require("./anthropic.js");
|
|
27
|
-
var import_errors = require("../errors.js");
|
|
28
|
-
function createMessageFormatter(provider, router, logger) {
|
|
29
|
-
if (router === "vercel") {
|
|
30
|
-
return new import_vercel.VercelMessageFormatter(logger);
|
|
31
|
-
} else if (router === "in-built") {
|
|
32
|
-
if (provider === "openai" || provider === "openai-compatible") {
|
|
33
|
-
return new import_openai.OpenAIMessageFormatter(logger);
|
|
34
|
-
} else if (provider === "anthropic") {
|
|
35
|
-
return new import_anthropic.AnthropicMessageFormatter(logger);
|
|
36
|
-
} else {
|
|
37
|
-
logger.error(
|
|
38
|
-
`Provider '${provider}' supported by registry but not configured for 'default' router message formatting.`
|
|
39
|
-
);
|
|
40
|
-
throw import_errors.LLMError.unsupportedRouter(router, provider);
|
|
41
|
-
}
|
|
42
|
-
} else {
|
|
43
|
-
logger.error(`Unsupported LLM router specified: ${router}`);
|
|
44
|
-
throw import_errors.LLMError.unsupportedRouter(router, provider);
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
48
|
-
0 && (module.exports = {
|
|
49
|
-
createMessageFormatter
|
|
50
|
-
});
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { IMessageFormatter } from './types.js';
|
|
2
|
-
import type { IDextoLogger } from '../../logger/v2/types.js';
|
|
3
|
-
import type { LLMProvider, LLMRouter } from '../types.js';
|
|
4
|
-
/**
|
|
5
|
-
* Creates a message formatter for the specified provider and router combination.
|
|
6
|
-
* Each formatter handles the conversion between internal message format and
|
|
7
|
-
* provider-specific message structures.
|
|
8
|
-
*/
|
|
9
|
-
export declare function createMessageFormatter(provider: LLMProvider, router: LLMRouter, logger: IDextoLogger): IMessageFormatter;
|
|
10
|
-
//# sourceMappingURL=factory.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../../src/llm/formatters/factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAI/C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAG1D;;;;GAIG;AACH,wBAAgB,sBAAsB,CAClC,QAAQ,EAAE,WAAW,EACrB,MAAM,EAAE,SAAS,EACjB,MAAM,EAAE,YAAY,GACrB,iBAAiB,CAmBnB"}
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import "../../chunk-C6A6W6XS.js";
|
|
2
|
-
import { VercelMessageFormatter } from "./vercel.js";
|
|
3
|
-
import { OpenAIMessageFormatter } from "./openai.js";
|
|
4
|
-
import { AnthropicMessageFormatter } from "./anthropic.js";
|
|
5
|
-
import { LLMError } from "../errors.js";
|
|
6
|
-
function createMessageFormatter(provider, router, logger) {
|
|
7
|
-
if (router === "vercel") {
|
|
8
|
-
return new VercelMessageFormatter(logger);
|
|
9
|
-
} else if (router === "in-built") {
|
|
10
|
-
if (provider === "openai" || provider === "openai-compatible") {
|
|
11
|
-
return new OpenAIMessageFormatter(logger);
|
|
12
|
-
} else if (provider === "anthropic") {
|
|
13
|
-
return new AnthropicMessageFormatter(logger);
|
|
14
|
-
} else {
|
|
15
|
-
logger.error(
|
|
16
|
-
`Provider '${provider}' supported by registry but not configured for 'default' router message formatting.`
|
|
17
|
-
);
|
|
18
|
-
throw LLMError.unsupportedRouter(router, provider);
|
|
19
|
-
}
|
|
20
|
-
} else {
|
|
21
|
-
logger.error(`Unsupported LLM router specified: ${router}`);
|
|
22
|
-
throw LLMError.unsupportedRouter(router, provider);
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
export {
|
|
26
|
-
createMessageFormatter
|
|
27
|
-
};
|