@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,48 +1,59 @@
|
|
|
1
|
-
import "../../chunk-
|
|
1
|
+
import "../../chunk-PTJYTZNU.js";
|
|
2
2
|
import { DextoLogComponent } from "../../logger/v2/types.js";
|
|
3
3
|
import { SessionError } from "../errors.js";
|
|
4
4
|
class DatabaseHistoryProvider {
|
|
5
|
+
// Debounce window for batching updates
|
|
5
6
|
constructor(sessionId, database, logger) {
|
|
6
7
|
this.sessionId = sessionId;
|
|
7
8
|
this.database = database;
|
|
8
9
|
this.logger = logger.createChild(DextoLogComponent.SESSION);
|
|
9
10
|
}
|
|
10
11
|
logger;
|
|
12
|
+
// Cache state
|
|
13
|
+
cache = null;
|
|
14
|
+
dirty = false;
|
|
15
|
+
flushTimer = null;
|
|
16
|
+
flushPromise = null;
|
|
17
|
+
// Flush configuration
|
|
18
|
+
static FLUSH_DELAY_MS = 100;
|
|
11
19
|
async getHistory() {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
20
|
+
if (this.cache === null) {
|
|
21
|
+
const key = this.getMessagesKey();
|
|
22
|
+
try {
|
|
23
|
+
this.cache = await this.database.getRange(key, 0, 1e4);
|
|
24
|
+
this.logger.debug(
|
|
25
|
+
`DatabaseHistoryProvider: Loaded ${this.cache.length} messages from DB for session ${this.sessionId}`
|
|
26
|
+
);
|
|
27
|
+
} catch (error) {
|
|
28
|
+
this.logger.error(
|
|
29
|
+
`DatabaseHistoryProvider: Error loading messages for session ${this.sessionId}: ${error instanceof Error ? error.message : String(error)}`
|
|
30
|
+
);
|
|
31
|
+
throw SessionError.storageFailed(
|
|
32
|
+
this.sessionId,
|
|
33
|
+
"load history",
|
|
34
|
+
error instanceof Error ? error.message : String(error)
|
|
35
|
+
);
|
|
36
|
+
}
|
|
24
37
|
}
|
|
38
|
+
return [...this.cache];
|
|
25
39
|
}
|
|
26
40
|
async saveMessage(message) {
|
|
27
41
|
const key = this.getMessagesKey();
|
|
42
|
+
if (this.cache === null) {
|
|
43
|
+
await this.getHistory();
|
|
44
|
+
}
|
|
45
|
+
this.cache.push(message);
|
|
28
46
|
try {
|
|
29
47
|
await this.database.append(key, message);
|
|
30
|
-
let contentPreview = "[no content]";
|
|
31
|
-
if (message.content) {
|
|
32
|
-
if (typeof message.content === "string") {
|
|
33
|
-
contentPreview = message.content.length > 100 ? `${message.content.substring(0, 100)}...` : message.content;
|
|
34
|
-
} else if (Array.isArray(message.content)) {
|
|
35
|
-
contentPreview = `[${message.content.length} parts]`;
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
48
|
this.logger.debug(
|
|
39
49
|
`DatabaseHistoryProvider: Saved message for session ${this.sessionId}`,
|
|
40
50
|
{
|
|
41
51
|
role: message.role,
|
|
42
|
-
|
|
52
|
+
id: message.id
|
|
43
53
|
}
|
|
44
54
|
);
|
|
45
55
|
} catch (error) {
|
|
56
|
+
this.cache.pop();
|
|
46
57
|
this.logger.error(
|
|
47
58
|
`DatabaseHistoryProvider: Error saving message for session ${this.sessionId}: ${error instanceof Error ? error.message : String(error)}`
|
|
48
59
|
);
|
|
@@ -53,7 +64,34 @@ class DatabaseHistoryProvider {
|
|
|
53
64
|
);
|
|
54
65
|
}
|
|
55
66
|
}
|
|
67
|
+
async updateMessage(message) {
|
|
68
|
+
if (!message.id) {
|
|
69
|
+
this.logger.warn(
|
|
70
|
+
`DatabaseHistoryProvider: Ignoring update for message without id in session ${this.sessionId}`
|
|
71
|
+
);
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
if (this.cache === null) {
|
|
75
|
+
await this.getHistory();
|
|
76
|
+
}
|
|
77
|
+
const index = this.cache.findIndex((m) => m.id === message.id);
|
|
78
|
+
if (index !== -1) {
|
|
79
|
+
this.cache[index] = message;
|
|
80
|
+
this.dirty = true;
|
|
81
|
+
this.scheduleFlush();
|
|
82
|
+
this.logger.debug(
|
|
83
|
+
`DatabaseHistoryProvider: Updated message ${message.id} in cache for session ${this.sessionId}`
|
|
84
|
+
);
|
|
85
|
+
} else {
|
|
86
|
+
this.logger.warn(
|
|
87
|
+
`DatabaseHistoryProvider: Message ${message.id} not found for update in session ${this.sessionId}`
|
|
88
|
+
);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
56
91
|
async clearHistory() {
|
|
92
|
+
this.cancelPendingFlush();
|
|
93
|
+
this.cache = [];
|
|
94
|
+
this.dirty = false;
|
|
57
95
|
const key = this.getMessagesKey();
|
|
58
96
|
try {
|
|
59
97
|
await this.database.delete(key);
|
|
@@ -70,6 +108,81 @@ class DatabaseHistoryProvider {
|
|
|
70
108
|
);
|
|
71
109
|
}
|
|
72
110
|
}
|
|
111
|
+
/**
|
|
112
|
+
* Flush any pending updates to the database.
|
|
113
|
+
* Should be called at turn boundaries to ensure durability.
|
|
114
|
+
*/
|
|
115
|
+
async flush() {
|
|
116
|
+
if (this.flushPromise) {
|
|
117
|
+
await this.flushPromise;
|
|
118
|
+
return;
|
|
119
|
+
}
|
|
120
|
+
this.cancelPendingFlush();
|
|
121
|
+
if (!this.dirty || !this.cache) {
|
|
122
|
+
return;
|
|
123
|
+
}
|
|
124
|
+
this.flushPromise = this.doFlush();
|
|
125
|
+
try {
|
|
126
|
+
await this.flushPromise;
|
|
127
|
+
} finally {
|
|
128
|
+
this.flushPromise = null;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Internal flush implementation.
|
|
133
|
+
* Writes entire cache to DB (delete + re-append all).
|
|
134
|
+
*/
|
|
135
|
+
async doFlush() {
|
|
136
|
+
if (!this.dirty || !this.cache) {
|
|
137
|
+
return;
|
|
138
|
+
}
|
|
139
|
+
const key = this.getMessagesKey();
|
|
140
|
+
const messageCount = this.cache.length;
|
|
141
|
+
try {
|
|
142
|
+
await this.database.delete(key);
|
|
143
|
+
for (const msg of this.cache) {
|
|
144
|
+
await this.database.append(key, msg);
|
|
145
|
+
}
|
|
146
|
+
if (!this.flushTimer) {
|
|
147
|
+
this.dirty = false;
|
|
148
|
+
}
|
|
149
|
+
this.logger.debug(
|
|
150
|
+
`DatabaseHistoryProvider: Flushed ${messageCount} messages to DB for session ${this.sessionId}`
|
|
151
|
+
);
|
|
152
|
+
} catch (error) {
|
|
153
|
+
this.logger.error(
|
|
154
|
+
`DatabaseHistoryProvider: Error flushing messages for session ${this.sessionId}: ${error instanceof Error ? error.message : String(error)}`
|
|
155
|
+
);
|
|
156
|
+
throw SessionError.storageFailed(
|
|
157
|
+
this.sessionId,
|
|
158
|
+
"flush messages",
|
|
159
|
+
error instanceof Error ? error.message : String(error)
|
|
160
|
+
);
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Schedule a debounced flush.
|
|
165
|
+
* Batches rapid updateMessage() calls into a single DB write.
|
|
166
|
+
*/
|
|
167
|
+
scheduleFlush() {
|
|
168
|
+
if (this.flushTimer) {
|
|
169
|
+
return;
|
|
170
|
+
}
|
|
171
|
+
this.flushTimer = setTimeout(() => {
|
|
172
|
+
this.flushTimer = null;
|
|
173
|
+
this.doFlush().catch(() => {
|
|
174
|
+
});
|
|
175
|
+
}, DatabaseHistoryProvider.FLUSH_DELAY_MS);
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Cancel any pending scheduled flush.
|
|
179
|
+
*/
|
|
180
|
+
cancelPendingFlush() {
|
|
181
|
+
if (this.flushTimer) {
|
|
182
|
+
clearTimeout(this.flushTimer);
|
|
183
|
+
this.flushTimer = null;
|
|
184
|
+
}
|
|
185
|
+
}
|
|
73
186
|
getMessagesKey() {
|
|
74
187
|
return `messages:${this.sessionId}`;
|
|
75
188
|
}
|
|
@@ -22,6 +22,9 @@ __export(memory_exports, {
|
|
|
22
22
|
});
|
|
23
23
|
module.exports = __toCommonJS(memory_exports);
|
|
24
24
|
class MemoryHistoryProvider {
|
|
25
|
+
constructor(logger) {
|
|
26
|
+
this.logger = logger;
|
|
27
|
+
}
|
|
25
28
|
messages = [];
|
|
26
29
|
async getHistory() {
|
|
27
30
|
return [...this.messages];
|
|
@@ -29,9 +32,24 @@ class MemoryHistoryProvider {
|
|
|
29
32
|
async saveMessage(message) {
|
|
30
33
|
this.messages.push(message);
|
|
31
34
|
}
|
|
35
|
+
async updateMessage(message) {
|
|
36
|
+
if (!message.id) {
|
|
37
|
+
this.logger.warn("MemoryHistoryProvider: Ignoring update for message without id");
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
const index = this.messages.findIndex((m) => m.id === message.id);
|
|
41
|
+
if (index !== -1) {
|
|
42
|
+
this.messages[index] = message;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
32
45
|
async clearHistory() {
|
|
33
46
|
this.messages = [];
|
|
34
47
|
}
|
|
48
|
+
/**
|
|
49
|
+
* No-op for in-memory provider - all operations are already "flushed".
|
|
50
|
+
*/
|
|
51
|
+
async flush() {
|
|
52
|
+
}
|
|
35
53
|
}
|
|
36
54
|
// Annotate the CommonJS export names for ESM import in node:
|
|
37
55
|
0 && (module.exports = {
|
|
@@ -1,14 +1,22 @@
|
|
|
1
1
|
import type { InternalMessage } from '../../context/types.js';
|
|
2
2
|
import type { IConversationHistoryProvider } from './types.js';
|
|
3
|
+
import type { IDextoLogger } from '../../logger/v2/types.js';
|
|
3
4
|
/**
|
|
4
5
|
* Lightweight in-memory history provider for ephemeral, isolated LLM calls.
|
|
5
6
|
* Used to run background tasks (e.g., title generation) without touching
|
|
6
7
|
* the real session history or emitting history-related side effects.
|
|
7
8
|
*/
|
|
8
9
|
export declare class MemoryHistoryProvider implements IConversationHistoryProvider {
|
|
10
|
+
private logger;
|
|
9
11
|
private messages;
|
|
12
|
+
constructor(logger: IDextoLogger);
|
|
10
13
|
getHistory(): Promise<InternalMessage[]>;
|
|
11
14
|
saveMessage(message: InternalMessage): Promise<void>;
|
|
15
|
+
updateMessage(message: InternalMessage): Promise<void>;
|
|
12
16
|
clearHistory(): Promise<void>;
|
|
17
|
+
/**
|
|
18
|
+
* No-op for in-memory provider - all operations are already "flushed".
|
|
19
|
+
*/
|
|
20
|
+
flush(): Promise<void>;
|
|
13
21
|
}
|
|
14
22
|
//# sourceMappingURL=memory.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../../../src/session/history/memory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../../../src/session/history/memory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,YAAY,CAAC;AAC/D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAE7D;;;;GAIG;AACH,qBAAa,qBAAsB,YAAW,4BAA4B;IAG1D,OAAO,CAAC,MAAM;IAF1B,OAAO,CAAC,QAAQ,CAAyB;gBAErB,MAAM,EAAE,YAAY;IAElC,UAAU,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;IAKxC,WAAW,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAIpD,aAAa,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAYtD,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAInC;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAG/B"}
|
|
@@ -1,5 +1,8 @@
|
|
|
1
|
-
import "../../chunk-
|
|
1
|
+
import "../../chunk-PTJYTZNU.js";
|
|
2
2
|
class MemoryHistoryProvider {
|
|
3
|
+
constructor(logger) {
|
|
4
|
+
this.logger = logger;
|
|
5
|
+
}
|
|
3
6
|
messages = [];
|
|
4
7
|
async getHistory() {
|
|
5
8
|
return [...this.messages];
|
|
@@ -7,9 +10,24 @@ class MemoryHistoryProvider {
|
|
|
7
10
|
async saveMessage(message) {
|
|
8
11
|
this.messages.push(message);
|
|
9
12
|
}
|
|
13
|
+
async updateMessage(message) {
|
|
14
|
+
if (!message.id) {
|
|
15
|
+
this.logger.warn("MemoryHistoryProvider: Ignoring update for message without id");
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
18
|
+
const index = this.messages.findIndex((m) => m.id === message.id);
|
|
19
|
+
if (index !== -1) {
|
|
20
|
+
this.messages[index] = message;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
10
23
|
async clearHistory() {
|
|
11
24
|
this.messages = [];
|
|
12
25
|
}
|
|
26
|
+
/**
|
|
27
|
+
* No-op for in-memory provider - all operations are already "flushed".
|
|
28
|
+
*/
|
|
29
|
+
async flush() {
|
|
30
|
+
}
|
|
13
31
|
}
|
|
14
32
|
export {
|
|
15
33
|
MemoryHistoryProvider
|
|
@@ -2,13 +2,25 @@ import type { InternalMessage } from '../../context/types.js';
|
|
|
2
2
|
/**
|
|
3
3
|
* Session-scoped conversation history provider.
|
|
4
4
|
* Each instance is tied to a specific session and manages only that session's messages.
|
|
5
|
+
*
|
|
6
|
+
* Implementations may use caching to optimize read performance. If caching is used,
|
|
7
|
+
* the flush() method should be called at turn boundaries to ensure all updates
|
|
8
|
+
* are persisted to durable storage.
|
|
5
9
|
*/
|
|
6
10
|
export interface IConversationHistoryProvider {
|
|
7
11
|
/** Load the full message history for this session */
|
|
8
12
|
getHistory(): Promise<InternalMessage[]>;
|
|
9
|
-
/** Append a message to this session's history */
|
|
13
|
+
/** Append a message to this session's history (must be durable immediately) */
|
|
10
14
|
saveMessage(message: InternalMessage): Promise<void>;
|
|
15
|
+
/** Update an existing message in this session's history (may be cached/batched) */
|
|
16
|
+
updateMessage(message: InternalMessage): Promise<void>;
|
|
11
17
|
/** Clear all messages for this session */
|
|
12
18
|
clearHistory(): Promise<void>;
|
|
19
|
+
/**
|
|
20
|
+
* Flush any pending updates to durable storage.
|
|
21
|
+
* Called at turn boundaries to ensure data durability.
|
|
22
|
+
* Implementations without caching can make this a no-op.
|
|
23
|
+
*/
|
|
24
|
+
flush(): Promise<void>;
|
|
13
25
|
}
|
|
14
26
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/session/history/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAE9D
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/session/history/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAE9D;;;;;;;GAOG;AACH,MAAM,WAAW,4BAA4B;IACzC,qDAAqD;IACrD,UAAU,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC;IAEzC,+EAA+E;IAC/E,WAAW,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAErD,mFAAmF;IACnF,aAAa,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEvD,0CAA0C;IAC1C,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAE9B;;;;OAIG;IACH,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1B"}
|
package/dist/session/index.cjs
CHANGED
|
@@ -19,6 +19,7 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
19
19
|
var session_exports = {};
|
|
20
20
|
__export(session_exports, {
|
|
21
21
|
ChatSession: () => import_chat_session.ChatSession,
|
|
22
|
+
MessageQueueService: () => import_message_queue.MessageQueueService,
|
|
22
23
|
SessionError: () => import_errors.SessionError,
|
|
23
24
|
SessionErrorCode: () => import_error_codes.SessionErrorCode,
|
|
24
25
|
SessionManager: () => import_session_manager.SessionManager
|
|
@@ -28,9 +29,11 @@ var import_chat_session = require("./chat-session.js");
|
|
|
28
29
|
var import_session_manager = require("./session-manager.js");
|
|
29
30
|
var import_error_codes = require("./error-codes.js");
|
|
30
31
|
var import_errors = require("./errors.js");
|
|
32
|
+
var import_message_queue = require("./message-queue.js");
|
|
31
33
|
// Annotate the CommonJS export names for ESM import in node:
|
|
32
34
|
0 && (module.exports = {
|
|
33
35
|
ChatSession,
|
|
36
|
+
MessageQueueService,
|
|
34
37
|
SessionError,
|
|
35
38
|
SessionErrorCode,
|
|
36
39
|
SessionManager
|
package/dist/session/index.d.ts
CHANGED
|
@@ -3,4 +3,7 @@ export { SessionManager } from './session-manager.js';
|
|
|
3
3
|
export type { SessionMetadata } from './session-manager.js';
|
|
4
4
|
export { SessionErrorCode } from './error-codes.js';
|
|
5
5
|
export { SessionError } from './errors.js';
|
|
6
|
+
export { MessageQueueService } from './message-queue.js';
|
|
7
|
+
export type { UserMessageInput } from './message-queue.js';
|
|
8
|
+
export type { QueuedMessage, CoalescedMessage } from './types.js';
|
|
6
9
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/session/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,YAAY,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/session/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,YAAY,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,YAAY,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,YAAY,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC"}
|
package/dist/session/index.js
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
|
-
import "../chunk-
|
|
1
|
+
import "../chunk-PTJYTZNU.js";
|
|
2
2
|
import { ChatSession } from "./chat-session.js";
|
|
3
3
|
import { SessionManager } from "./session-manager.js";
|
|
4
4
|
import { SessionErrorCode } from "./error-codes.js";
|
|
5
5
|
import { SessionError } from "./errors.js";
|
|
6
|
+
import { MessageQueueService } from "./message-queue.js";
|
|
6
7
|
export {
|
|
7
8
|
ChatSession,
|
|
9
|
+
MessageQueueService,
|
|
8
10
|
SessionError,
|
|
9
11
|
SessionErrorCode,
|
|
10
12
|
SessionManager
|
|
@@ -0,0 +1,201 @@
|
|
|
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 message_queue_exports = {};
|
|
20
|
+
__export(message_queue_exports, {
|
|
21
|
+
MessageQueueService: () => MessageQueueService
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(message_queue_exports);
|
|
24
|
+
function generateId() {
|
|
25
|
+
return `msg_${Date.now()}_${Math.random().toString(36).slice(2, 11)}`;
|
|
26
|
+
}
|
|
27
|
+
class MessageQueueService {
|
|
28
|
+
constructor(eventBus, logger) {
|
|
29
|
+
this.eventBus = eventBus;
|
|
30
|
+
this.logger = logger;
|
|
31
|
+
}
|
|
32
|
+
queue = [];
|
|
33
|
+
/**
|
|
34
|
+
* Add a message to the queue.
|
|
35
|
+
* Called by API endpoint - returns immediately with queue position.
|
|
36
|
+
*
|
|
37
|
+
* @param message The user message to queue
|
|
38
|
+
* @returns Queue position and message ID
|
|
39
|
+
*/
|
|
40
|
+
enqueue(message) {
|
|
41
|
+
const queuedMsg = {
|
|
42
|
+
id: generateId(),
|
|
43
|
+
content: message.content,
|
|
44
|
+
queuedAt: Date.now(),
|
|
45
|
+
...message.metadata !== void 0 && { metadata: message.metadata }
|
|
46
|
+
};
|
|
47
|
+
this.queue.push(queuedMsg);
|
|
48
|
+
this.logger.debug(`Message queued: ${queuedMsg.id}, position: ${this.queue.length}`);
|
|
49
|
+
this.eventBus.emit("message:queued", {
|
|
50
|
+
position: this.queue.length,
|
|
51
|
+
id: queuedMsg.id
|
|
52
|
+
});
|
|
53
|
+
return {
|
|
54
|
+
queued: true,
|
|
55
|
+
position: this.queue.length,
|
|
56
|
+
id: queuedMsg.id
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Dequeue ALL pending messages and coalesce into single injection.
|
|
61
|
+
* Called by executor between steps.
|
|
62
|
+
*
|
|
63
|
+
* Multiple queued messages become ONE combined message to the LLM.
|
|
64
|
+
*
|
|
65
|
+
* @example
|
|
66
|
+
* If 3 messages are queued: "stop", "try X instead", "also check Y"
|
|
67
|
+
* They become:
|
|
68
|
+
* ```
|
|
69
|
+
* [1]: stop
|
|
70
|
+
*
|
|
71
|
+
* [2]: try X instead
|
|
72
|
+
*
|
|
73
|
+
* [3]: also check Y
|
|
74
|
+
* ```
|
|
75
|
+
*
|
|
76
|
+
* @returns Coalesced message or null if queue is empty
|
|
77
|
+
*/
|
|
78
|
+
dequeueAll() {
|
|
79
|
+
if (this.queue.length === 0) return null;
|
|
80
|
+
const messages = [...this.queue];
|
|
81
|
+
this.queue = [];
|
|
82
|
+
const combined = this.coalesce(messages);
|
|
83
|
+
this.logger.debug(
|
|
84
|
+
`Dequeued ${messages.length} message(s): ${messages.map((m) => m.id).join(", ")}`
|
|
85
|
+
);
|
|
86
|
+
this.eventBus.emit("message:dequeued", {
|
|
87
|
+
count: messages.length,
|
|
88
|
+
ids: messages.map((m) => m.id),
|
|
89
|
+
coalesced: messages.length > 1,
|
|
90
|
+
content: combined.combinedContent
|
|
91
|
+
});
|
|
92
|
+
return combined;
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Coalesce multiple messages into one (multimodal-aware).
|
|
96
|
+
* Strategy: Combine with numbered separators, preserve all media.
|
|
97
|
+
*/
|
|
98
|
+
coalesce(messages) {
|
|
99
|
+
if (messages.length === 1) {
|
|
100
|
+
const firstMsg = messages[0];
|
|
101
|
+
if (!firstMsg) {
|
|
102
|
+
throw new Error("Unexpected empty messages array");
|
|
103
|
+
}
|
|
104
|
+
return {
|
|
105
|
+
messages,
|
|
106
|
+
combinedContent: firstMsg.content,
|
|
107
|
+
firstQueuedAt: firstMsg.queuedAt,
|
|
108
|
+
lastQueuedAt: firstMsg.queuedAt
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
const combinedContent = [];
|
|
112
|
+
for (const [i, msg] of messages.entries()) {
|
|
113
|
+
const prefix = messages.length === 2 ? i === 0 ? "First" : "Also" : `[${i + 1}]`;
|
|
114
|
+
let prefixText = `${prefix}: `;
|
|
115
|
+
for (const part of msg.content) {
|
|
116
|
+
if (part.type === "text") {
|
|
117
|
+
if (prefixText) {
|
|
118
|
+
combinedContent.push({ type: "text", text: prefixText + part.text });
|
|
119
|
+
prefixText = "";
|
|
120
|
+
} else {
|
|
121
|
+
combinedContent.push(part);
|
|
122
|
+
}
|
|
123
|
+
} else {
|
|
124
|
+
if (prefixText) {
|
|
125
|
+
combinedContent.push({ type: "text", text: prefixText });
|
|
126
|
+
prefixText = "";
|
|
127
|
+
}
|
|
128
|
+
combinedContent.push(part);
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
if (prefixText && msg.content.length === 0) {
|
|
132
|
+
combinedContent.push({ type: "text", text: prefixText + "[empty message]" });
|
|
133
|
+
}
|
|
134
|
+
if (i < messages.length - 1) {
|
|
135
|
+
combinedContent.push({ type: "text", text: "\n\n" });
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
const firstMessage = messages[0];
|
|
139
|
+
const lastMessage = messages[messages.length - 1];
|
|
140
|
+
if (!firstMessage || !lastMessage) {
|
|
141
|
+
throw new Error("Unexpected undefined message in non-empty array");
|
|
142
|
+
}
|
|
143
|
+
return {
|
|
144
|
+
messages,
|
|
145
|
+
combinedContent,
|
|
146
|
+
firstQueuedAt: firstMessage.queuedAt,
|
|
147
|
+
lastQueuedAt: lastMessage.queuedAt
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Check if there are pending messages in the queue.
|
|
152
|
+
*/
|
|
153
|
+
hasPending() {
|
|
154
|
+
return this.queue.length > 0;
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Get the number of pending messages.
|
|
158
|
+
*/
|
|
159
|
+
pendingCount() {
|
|
160
|
+
return this.queue.length;
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Clear all pending messages without processing.
|
|
164
|
+
* Used during cleanup/abort.
|
|
165
|
+
*/
|
|
166
|
+
clear() {
|
|
167
|
+
this.queue = [];
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Get all queued messages (for UI display).
|
|
171
|
+
* Returns a shallow copy to prevent external mutation.
|
|
172
|
+
*/
|
|
173
|
+
getAll() {
|
|
174
|
+
return [...this.queue];
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* Get a single queued message by ID.
|
|
178
|
+
*/
|
|
179
|
+
get(id) {
|
|
180
|
+
return this.queue.find((m) => m.id === id);
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Remove a single queued message by ID.
|
|
184
|
+
* @returns true if message was found and removed; false otherwise
|
|
185
|
+
*/
|
|
186
|
+
remove(id) {
|
|
187
|
+
const index = this.queue.findIndex((m) => m.id === id);
|
|
188
|
+
if (index === -1) {
|
|
189
|
+
this.logger.debug(`Remove failed: message ${id} not found in queue`);
|
|
190
|
+
return false;
|
|
191
|
+
}
|
|
192
|
+
this.queue.splice(index, 1);
|
|
193
|
+
this.logger.debug(`Message removed: ${id}, remaining: ${this.queue.length}`);
|
|
194
|
+
this.eventBus.emit("message:removed", { id });
|
|
195
|
+
return true;
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
199
|
+
0 && (module.exports = {
|
|
200
|
+
MessageQueueService
|
|
201
|
+
});
|