@dexto/core 1.2.4 → 1.2.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +60 -0
- package/dist/agent/DextoAgent.cjs +579 -345
- package/dist/agent/DextoAgent.d.ts +131 -83
- package/dist/agent/DextoAgent.d.ts.map +1 -1
- package/dist/agent/DextoAgent.js +573 -336
- package/dist/agent/agentCard.cjs +4 -2
- package/dist/agent/agentCard.d.ts +0 -1
- package/dist/agent/agentCard.d.ts.map +1 -1
- package/dist/agent/agentCard.js +4 -2
- package/dist/agent/index.cjs +3 -7
- package/dist/agent/index.d.ts +3 -3
- package/dist/agent/index.d.ts.map +1 -1
- package/dist/agent/index.js +7 -6
- package/dist/agent/schemas.cjs +179 -75
- package/dist/agent/schemas.d.ts +2678 -586
- package/dist/agent/schemas.d.ts.map +1 -1
- package/dist/agent/schemas.js +172 -65
- package/dist/agent/state-manager.cjs +28 -23
- package/dist/agent/state-manager.d.ts +4 -1
- package/dist/agent/state-manager.d.ts.map +1 -1
- package/dist/agent/state-manager.js +28 -23
- package/dist/{preferences/constants.cjs → agent/types.cjs} +2 -14
- package/dist/agent/types.d.ts +54 -0
- package/dist/agent/types.d.ts.map +1 -0
- package/dist/agent/types.js +0 -0
- package/dist/approval/errors.cjs +89 -8
- package/dist/approval/errors.d.ts +5 -3
- package/dist/approval/errors.d.ts.map +1 -1
- package/dist/approval/errors.js +89 -8
- package/dist/approval/{providers/factory.d.ts → factory.d.ts} +2 -2
- package/dist/approval/factory.d.ts.map +1 -0
- package/dist/approval/{providers/factory.js → factory.js} +1 -1
- package/dist/approval/index.cjs +4 -6
- package/dist/approval/index.d.ts +3 -5
- package/dist/approval/index.d.ts.map +1 -1
- package/dist/approval/index.js +4 -5
- package/dist/approval/manager.cjs +140 -37
- package/dist/approval/manager.d.ts +56 -17
- package/dist/approval/manager.d.ts.map +1 -1
- package/dist/approval/manager.js +141 -38
- package/dist/approval/schemas.cjs +9 -1
- package/dist/approval/schemas.d.ts +120 -35
- package/dist/approval/schemas.d.ts.map +1 -1
- package/dist/approval/schemas.js +9 -2
- package/dist/approval/types.cjs +14 -2
- package/dist/approval/types.d.ts +64 -12
- package/dist/approval/types.d.ts.map +1 -1
- package/dist/approval/types.js +12 -1
- package/dist/context/compression/middle-removal.cjs +11 -11
- package/dist/context/compression/middle-removal.d.ts +3 -1
- package/dist/context/compression/middle-removal.d.ts.map +1 -1
- package/dist/context/compression/middle-removal.js +11 -11
- package/dist/context/compression/oldest-removal.cjs +18 -5
- package/dist/context/compression/oldest-removal.d.ts +3 -1
- package/dist/context/compression/oldest-removal.d.ts.map +1 -1
- package/dist/context/compression/oldest-removal.js +18 -5
- package/dist/context/manager.cjs +94 -67
- package/dist/context/manager.d.ts +13 -10
- package/dist/context/manager.d.ts.map +1 -1
- package/dist/context/manager.js +94 -67
- package/dist/context/utils.cjs +79 -65
- package/dist/context/utils.d.ts +15 -12
- package/dist/context/utils.d.ts.map +1 -1
- package/dist/context/utils.js +45 -31
- package/dist/errors/DextoRuntimeError.d.ts +5 -5
- package/dist/errors/DextoRuntimeError.d.ts.map +1 -1
- package/dist/errors/result-bridge.cjs +2 -3
- package/dist/errors/result-bridge.d.ts +5 -3
- package/dist/errors/result-bridge.d.ts.map +1 -1
- package/dist/errors/result-bridge.js +1 -2
- package/dist/errors/types.cjs +1 -2
- package/dist/errors/types.d.ts +5 -8
- package/dist/errors/types.d.ts.map +1 -1
- package/dist/errors/types.js +1 -2
- package/dist/events/index.cjs +125 -55
- package/dist/events/index.d.ts +204 -97
- package/dist/events/index.d.ts.map +1 -1
- package/dist/events/index.js +123 -55
- package/dist/filesystem/filesystem-service.cjs +40 -30
- package/dist/filesystem/filesystem-service.d.ts +9 -1
- package/dist/filesystem/filesystem-service.d.ts.map +1 -1
- package/dist/filesystem/filesystem-service.js +40 -30
- package/dist/filesystem/path-validator.cjs +4 -3
- package/dist/filesystem/path-validator.d.ts +3 -1
- package/dist/filesystem/path-validator.d.ts.map +1 -1
- package/dist/filesystem/path-validator.js +4 -3
- package/dist/filesystem/types.d.ts +3 -3
- package/dist/filesystem/types.d.ts.map +1 -1
- package/dist/index.browser.cjs +7 -0
- package/dist/index.browser.d.ts +2 -0
- package/dist/index.browser.d.ts.map +1 -1
- package/dist/index.browser.js +4 -0
- package/dist/index.cjs +0 -7
- package/dist/index.d.ts +12 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +0 -4
- package/dist/llm/formatters/anthropic.cjs +32 -21
- package/dist/llm/formatters/anthropic.d.ts +3 -0
- package/dist/llm/formatters/anthropic.d.ts.map +1 -1
- package/dist/llm/formatters/anthropic.js +32 -21
- package/dist/llm/formatters/factory.cjs +6 -7
- package/dist/llm/formatters/factory.d.ts +2 -1
- package/dist/llm/formatters/factory.d.ts.map +1 -1
- package/dist/llm/formatters/factory.js +4 -5
- package/dist/llm/formatters/openai.cjs +38 -9
- package/dist/llm/formatters/openai.d.ts +3 -0
- package/dist/llm/formatters/openai.d.ts.map +1 -1
- package/dist/llm/formatters/openai.js +38 -9
- package/dist/llm/formatters/vercel.cjs +49 -8
- package/dist/llm/formatters/vercel.d.ts +3 -0
- package/dist/llm/formatters/vercel.d.ts.map +1 -1
- package/dist/llm/formatters/vercel.js +49 -8
- package/dist/llm/registry.cjs +153 -17
- package/dist/llm/registry.d.ts +5 -2
- package/dist/llm/registry.d.ts.map +1 -1
- package/dist/llm/registry.js +143 -7
- package/dist/llm/resolver.cjs +4 -4
- package/dist/llm/resolver.d.ts +3 -2
- package/dist/llm/resolver.d.ts.map +1 -1
- package/dist/llm/resolver.js +4 -4
- package/dist/llm/schemas.cjs +6 -3
- package/dist/llm/schemas.d.ts +51 -17
- package/dist/llm/schemas.d.ts.map +1 -1
- package/dist/llm/schemas.js +5 -3
- package/dist/llm/services/anthropic.cjs +216 -183
- package/dist/llm/services/anthropic.d.ts +3 -1
- package/dist/llm/services/anthropic.d.ts.map +1 -1
- package/dist/llm/services/anthropic.js +217 -184
- package/dist/llm/services/factory.cjs +15 -9
- package/dist/llm/services/factory.d.ts +2 -1
- package/dist/llm/services/factory.d.ts.map +1 -1
- package/dist/llm/services/factory.js +15 -9
- package/dist/llm/services/openai.cjs +262 -225
- package/dist/llm/services/openai.d.ts +3 -1
- package/dist/llm/services/openai.d.ts.map +1 -1
- package/dist/llm/services/openai.js +263 -226
- package/dist/llm/services/test-utils.integration.cjs +58 -12
- package/dist/llm/services/test-utils.integration.d.ts.map +1 -1
- package/dist/llm/services/test-utils.integration.js +58 -12
- package/dist/llm/services/types.d.ts +9 -0
- package/dist/llm/services/types.d.ts.map +1 -1
- package/dist/llm/services/vercel.cjs +163 -111
- package/dist/llm/services/vercel.d.ts +3 -1
- package/dist/llm/services/vercel.d.ts.map +1 -1
- package/dist/llm/services/vercel.js +157 -105
- package/dist/llm/tokenizer/factory.cjs +2 -2
- package/dist/llm/tokenizer/factory.d.ts +3 -1
- package/dist/llm/tokenizer/factory.d.ts.map +1 -1
- package/dist/llm/tokenizer/factory.js +2 -2
- package/dist/llm/tokenizer/openai.cjs +16 -9
- package/dist/llm/tokenizer/openai.d.ts +4 -1
- package/dist/llm/tokenizer/openai.d.ts.map +1 -1
- package/dist/llm/tokenizer/openai.js +16 -9
- package/dist/llm/validation.cjs +8 -9
- package/dist/llm/validation.d.ts +3 -1
- package/dist/llm/validation.d.ts.map +1 -1
- package/dist/llm/validation.js +5 -6
- package/dist/logger/factory.cjs +54 -0
- package/dist/logger/factory.d.ts +36 -0
- package/dist/logger/factory.d.ts.map +1 -0
- package/dist/logger/factory.js +31 -0
- package/dist/logger/index.cjs +42 -3
- package/dist/logger/index.d.ts +17 -1
- package/dist/logger/index.d.ts.map +1 -1
- package/dist/logger/index.js +26 -1
- package/dist/logger/logger.cjs +30 -17
- package/dist/logger/logger.d.ts.map +1 -1
- package/dist/logger/logger.js +30 -17
- package/dist/logger/v2/dexto-logger.cjs +141 -0
- package/dist/logger/v2/dexto-logger.d.ts +54 -0
- package/dist/logger/v2/dexto-logger.d.ts.map +1 -0
- package/dist/logger/v2/dexto-logger.js +118 -0
- package/dist/{preferences → logger/v2}/error-codes.cjs +11 -10
- package/dist/logger/v2/error-codes.d.ts +13 -0
- package/dist/logger/v2/error-codes.d.ts.map +1 -0
- package/dist/logger/v2/error-codes.js +13 -0
- package/dist/logger/v2/errors.cjs +107 -0
- package/dist/logger/v2/errors.d.ts +32 -0
- package/dist/logger/v2/errors.d.ts.map +1 -0
- package/dist/logger/v2/errors.js +84 -0
- package/dist/logger/v2/schemas.cjs +57 -0
- package/dist/logger/v2/schemas.d.ts +147 -0
- package/dist/logger/v2/schemas.d.ts.map +1 -0
- package/dist/logger/v2/schemas.js +33 -0
- package/dist/logger/v2/transport-factory.cjs +53 -0
- package/dist/logger/v2/transport-factory.d.ts +21 -0
- package/dist/logger/v2/transport-factory.d.ts.map +1 -0
- package/dist/logger/v2/transport-factory.js +29 -0
- package/dist/logger/v2/transports/console-transport.cjs +79 -0
- package/dist/logger/v2/transports/console-transport.d.ts +23 -0
- package/dist/logger/v2/transports/console-transport.d.ts.map +1 -0
- package/dist/logger/v2/transports/console-transport.js +46 -0
- package/dist/logger/v2/transports/file-transport.cjs +161 -0
- package/dist/logger/v2/transports/file-transport.d.ts +46 -0
- package/dist/logger/v2/transports/file-transport.d.ts.map +1 -0
- package/dist/logger/v2/transports/file-transport.js +128 -0
- package/dist/logger/v2/types.cjs +49 -0
- package/dist/logger/v2/types.d.ts +123 -0
- package/dist/logger/v2/types.d.ts.map +1 -0
- package/dist/logger/v2/types.js +26 -0
- package/dist/mcp/manager.cjs +88 -78
- package/dist/mcp/manager.d.ts +3 -1
- package/dist/mcp/manager.d.ts.map +1 -1
- package/dist/mcp/manager.js +88 -78
- package/dist/mcp/mcp-client.cjs +109 -79
- package/dist/mcp/mcp-client.d.ts +3 -0
- package/dist/mcp/mcp-client.d.ts.map +1 -1
- package/dist/mcp/mcp-client.js +102 -72
- package/dist/memory/index.cjs +2 -0
- package/dist/memory/index.d.ts +1 -1
- package/dist/memory/index.d.ts.map +1 -1
- package/dist/memory/index.js +3 -1
- package/dist/memory/manager.cjs +9 -7
- package/dist/memory/manager.d.ts +3 -1
- package/dist/memory/manager.d.ts.map +1 -1
- package/dist/memory/manager.js +9 -7
- package/dist/memory/schemas.cjs +10 -0
- package/dist/memory/schemas.d.ts +37 -8
- package/dist/memory/schemas.d.ts.map +1 -1
- package/dist/memory/schemas.js +9 -0
- package/dist/plugins/manager.cjs +21 -19
- package/dist/plugins/manager.d.ts +3 -1
- package/dist/plugins/manager.d.ts.map +1 -1
- package/dist/plugins/manager.js +21 -19
- package/dist/plugins/schemas.d.ts +9 -9
- package/dist/plugins/types.d.ts +2 -2
- package/dist/plugins/types.d.ts.map +1 -1
- package/dist/process/command-validator.cjs +30 -20
- package/dist/process/command-validator.d.ts +4 -1
- package/dist/process/command-validator.d.ts.map +1 -1
- package/dist/process/command-validator.js +30 -20
- package/dist/process/process-service.cjs +23 -21
- package/dist/process/process-service.d.ts +3 -1
- package/dist/process/process-service.d.ts.map +1 -1
- package/dist/process/process-service.js +23 -21
- package/dist/prompts/index.cjs +6 -8
- package/dist/prompts/index.d.ts +2 -4
- package/dist/prompts/index.d.ts.map +1 -1
- package/dist/prompts/index.js +4 -6
- package/dist/prompts/prompt-manager.cjs +25 -20
- package/dist/prompts/prompt-manager.d.ts +3 -1
- package/dist/prompts/prompt-manager.d.ts.map +1 -1
- package/dist/prompts/prompt-manager.js +25 -20
- package/dist/prompts/providers/config-prompt-provider.cjs +331 -0
- package/dist/prompts/providers/config-prompt-provider.d.ts +34 -0
- package/dist/prompts/providers/config-prompt-provider.d.ts.map +1 -0
- package/dist/prompts/providers/config-prompt-provider.js +308 -0
- package/dist/prompts/providers/custom-prompt-provider.cjs +11 -7
- package/dist/prompts/providers/custom-prompt-provider.d.ts +3 -1
- package/dist/prompts/providers/custom-prompt-provider.d.ts.map +1 -1
- package/dist/prompts/providers/custom-prompt-provider.js +11 -7
- package/dist/prompts/providers/mcp-prompt-provider.cjs +7 -6
- package/dist/prompts/providers/mcp-prompt-provider.d.ts +3 -1
- package/dist/prompts/providers/mcp-prompt-provider.d.ts.map +1 -1
- package/dist/prompts/providers/mcp-prompt-provider.js +7 -6
- package/dist/prompts/schemas.cjs +42 -23
- package/dist/prompts/schemas.d.ts +123 -14
- package/dist/prompts/schemas.d.ts.map +1 -1
- package/dist/prompts/schemas.js +39 -22
- package/dist/prompts/types.d.ts +1 -1
- package/dist/prompts/types.d.ts.map +1 -1
- package/dist/resources/handlers/blob-handler.cjs +15 -11
- package/dist/resources/handlers/blob-handler.d.ts +3 -1
- package/dist/resources/handlers/blob-handler.d.ts.map +1 -1
- package/dist/resources/handlers/blob-handler.js +15 -11
- package/dist/resources/handlers/factory.cjs +3 -3
- package/dist/resources/handlers/factory.d.ts +2 -1
- package/dist/resources/handlers/factory.d.ts.map +1 -1
- package/dist/resources/handlers/factory.js +3 -3
- package/dist/resources/handlers/filesystem-handler.cjs +10 -8
- package/dist/resources/handlers/filesystem-handler.d.ts +3 -1
- package/dist/resources/handlers/filesystem-handler.d.ts.map +1 -1
- package/dist/resources/handlers/filesystem-handler.js +10 -8
- package/dist/resources/internal-provider.cjs +28 -20
- package/dist/resources/internal-provider.d.ts +3 -1
- package/dist/resources/internal-provider.d.ts.map +1 -1
- package/dist/resources/internal-provider.js +28 -20
- package/dist/resources/manager.cjs +34 -25
- package/dist/resources/manager.d.ts +3 -1
- package/dist/resources/manager.d.ts.map +1 -1
- package/dist/resources/manager.js +34 -25
- package/dist/resources/schemas.d.ts +6 -6
- package/dist/search/search-service.cjs +8 -6
- package/dist/search/search-service.d.ts +3 -1
- package/dist/search/search-service.d.ts.map +1 -1
- package/dist/search/search-service.js +8 -6
- package/dist/session/chat-session.cjs +40 -27
- package/dist/session/chat-session.d.ts +10 -7
- package/dist/session/chat-session.d.ts.map +1 -1
- package/dist/session/chat-session.js +40 -27
- package/dist/session/history/database.cjs +18 -11
- package/dist/session/history/database.d.ts +3 -1
- package/dist/session/history/database.d.ts.map +1 -1
- package/dist/session/history/database.js +18 -11
- package/dist/session/history/factory.cjs +2 -2
- package/dist/session/history/factory.d.ts +5 -1
- package/dist/session/history/factory.d.ts.map +1 -1
- package/dist/session/history/factory.js +2 -2
- package/dist/session/session-manager.cjs +37 -53
- package/dist/session/session-manager.d.ts +3 -17
- package/dist/session/session-manager.d.ts.map +1 -1
- package/dist/session/session-manager.js +37 -53
- package/dist/session/title-generator.cjs +3 -2
- package/dist/session/title-generator.d.ts +2 -1
- package/dist/session/title-generator.d.ts.map +1 -1
- package/dist/session/title-generator.js +3 -2
- package/dist/storage/blob/factory.cjs +9 -18
- package/dist/storage/blob/factory.d.ts +5 -4
- package/dist/storage/blob/factory.d.ts.map +1 -1
- package/dist/storage/blob/factory.js +8 -17
- package/dist/storage/blob/local-blob-store.cjs +25 -32
- package/dist/storage/blob/local-blob-store.d.ts +3 -2
- package/dist/storage/blob/local-blob-store.d.ts.map +1 -1
- package/dist/storage/blob/local-blob-store.js +25 -32
- package/dist/storage/blob/memory-blob-store.cjs +326 -0
- package/dist/storage/blob/memory-blob-store.d.ts +66 -0
- package/dist/storage/blob/memory-blob-store.d.ts.map +1 -0
- package/dist/storage/blob/memory-blob-store.js +303 -0
- package/dist/storage/blob/schemas.cjs +3 -1
- package/dist/storage/blob/schemas.d.ts +6 -6
- package/dist/storage/blob/schemas.d.ts.map +1 -1
- package/dist/storage/blob/schemas.js +3 -1
- package/dist/storage/cache/factory.cjs +7 -8
- package/dist/storage/cache/factory.d.ts +4 -1
- package/dist/storage/cache/factory.d.ts.map +1 -1
- package/dist/storage/cache/factory.js +4 -5
- package/dist/storage/cache/redis-store.cjs +4 -1
- package/dist/storage/cache/redis-store.d.ts +3 -1
- package/dist/storage/cache/redis-store.d.ts.map +1 -1
- package/dist/storage/cache/redis-store.js +4 -1
- package/dist/storage/database/factory.cjs +13 -16
- package/dist/storage/database/factory.d.ts +5 -3
- package/dist/storage/database/factory.d.ts.map +1 -1
- package/dist/storage/database/factory.js +9 -12
- package/dist/storage/database/postgres-store.cjs +4 -1
- package/dist/storage/database/postgres-store.d.ts +3 -1
- package/dist/storage/database/postgres-store.d.ts.map +1 -1
- package/dist/storage/database/postgres-store.js +4 -1
- package/dist/storage/database/schemas.cjs +3 -4
- package/dist/storage/database/schemas.d.ts +8 -16
- package/dist/storage/database/schemas.d.ts.map +1 -1
- package/dist/storage/database/schemas.js +3 -4
- package/dist/storage/database/sqlite-store.cjs +17 -45
- package/dist/storage/database/sqlite-store.d.ts +3 -3
- package/dist/storage/database/sqlite-store.d.ts.map +1 -1
- package/dist/storage/database/sqlite-store.js +17 -45
- package/dist/storage/schemas.cjs +3 -1
- package/dist/storage/schemas.d.ts +16 -23
- package/dist/storage/schemas.d.ts.map +1 -1
- package/dist/storage/schemas.js +3 -1
- package/dist/storage/storage-manager.cjs +15 -15
- package/dist/storage/storage-manager.d.ts +6 -6
- package/dist/storage/storage-manager.d.ts.map +1 -1
- package/dist/storage/storage-manager.js +15 -15
- package/dist/systemPrompt/contributors.cjs +15 -15
- package/dist/systemPrompt/contributors.d.ts +5 -3
- package/dist/systemPrompt/contributors.d.ts.map +1 -1
- package/dist/systemPrompt/contributors.js +15 -15
- package/dist/systemPrompt/in-built-prompts.cjs +0 -5
- package/dist/systemPrompt/in-built-prompts.d.ts +1 -2
- package/dist/systemPrompt/in-built-prompts.d.ts.map +1 -1
- package/dist/systemPrompt/in-built-prompts.js +0 -4
- package/dist/systemPrompt/manager.cjs +31 -23
- package/dist/systemPrompt/manager.d.ts +5 -3
- package/dist/systemPrompt/manager.d.ts.map +1 -1
- package/dist/systemPrompt/manager.js +31 -23
- package/dist/systemPrompt/registry.cjs +1 -2
- package/dist/systemPrompt/registry.d.ts +1 -1
- package/dist/systemPrompt/registry.d.ts.map +1 -1
- package/dist/systemPrompt/registry.js +1 -2
- package/dist/systemPrompt/schemas.cjs +24 -18
- package/dist/systemPrompt/schemas.d.ts +46 -222
- package/dist/systemPrompt/schemas.d.ts.map +1 -1
- package/dist/systemPrompt/schemas.js +14 -18
- package/dist/telemetry/decorators.cjs +54 -15
- package/dist/telemetry/decorators.d.ts.map +1 -1
- package/dist/telemetry/decorators.js +54 -15
- package/dist/telemetry/utils.cjs +21 -14
- package/dist/telemetry/utils.d.ts +7 -3
- package/dist/telemetry/utils.d.ts.map +1 -1
- package/dist/telemetry/utils.js +21 -14
- package/dist/tools/confirmation/allowed-tools-provider/factory.cjs +2 -2
- package/dist/tools/confirmation/allowed-tools-provider/factory.d.ts +2 -1
- package/dist/tools/confirmation/allowed-tools-provider/factory.d.ts.map +1 -1
- package/dist/tools/confirmation/allowed-tools-provider/factory.js +2 -2
- package/dist/tools/confirmation/allowed-tools-provider/storage.cjs +7 -6
- package/dist/tools/confirmation/allowed-tools-provider/storage.d.ts +3 -1
- package/dist/tools/confirmation/allowed-tools-provider/storage.d.ts.map +1 -1
- package/dist/tools/confirmation/allowed-tools-provider/storage.js +7 -6
- package/dist/tools/errors.cjs +2 -1
- package/dist/tools/errors.d.ts.map +1 -1
- package/dist/tools/errors.js +2 -1
- package/dist/tools/internal-tools/constants.cjs +2 -1
- package/dist/tools/internal-tools/constants.d.ts +1 -1
- package/dist/tools/internal-tools/constants.d.ts.map +1 -1
- package/dist/tools/internal-tools/constants.js +2 -1
- package/dist/tools/internal-tools/implementations/bash-exec-tool.cjs +1 -1
- package/dist/tools/internal-tools/implementations/bash-exec-tool.js +1 -1
- package/dist/tools/internal-tools/implementations/delegate-to-url-tool.cjs +192 -0
- package/dist/tools/internal-tools/implementations/delegate-to-url-tool.d.ts +33 -0
- package/dist/tools/internal-tools/implementations/delegate-to-url-tool.d.ts.map +1 -0
- package/dist/tools/internal-tools/implementations/delegate-to-url-tool.js +169 -0
- package/dist/tools/internal-tools/provider.cjs +21 -17
- package/dist/tools/internal-tools/provider.d.ts +3 -1
- package/dist/tools/internal-tools/provider.d.ts.map +1 -1
- package/dist/tools/internal-tools/provider.js +21 -17
- package/dist/tools/internal-tools/registry.cjs +5 -0
- package/dist/tools/internal-tools/registry.d.ts.map +1 -1
- package/dist/tools/internal-tools/registry.js +5 -0
- package/dist/tools/schemas.cjs +16 -4
- package/dist/tools/schemas.d.ts +21 -9
- package/dist/tools/schemas.d.ts.map +1 -1
- package/dist/tools/schemas.js +15 -4
- package/dist/tools/tool-manager.cjs +64 -47
- package/dist/tools/tool-manager.d.ts +4 -2
- package/dist/tools/tool-manager.d.ts.map +1 -1
- package/dist/tools/tool-manager.js +61 -44
- package/dist/tools/types.d.ts +0 -4
- package/dist/tools/types.d.ts.map +1 -1
- package/dist/utils/env-file.cjs +118 -0
- package/dist/utils/env-file.d.ts +5 -0
- package/dist/utils/env-file.d.ts.map +1 -0
- package/dist/utils/env-file.js +85 -0
- package/dist/utils/error-conversion.cjs +23 -1
- package/dist/utils/error-conversion.d.ts +2 -1
- package/dist/utils/error-conversion.d.ts.map +1 -1
- package/dist/utils/error-conversion.js +23 -1
- package/dist/utils/execution-context.d.ts.map +1 -1
- package/dist/utils/fs-walk.d.ts.map +1 -1
- package/dist/utils/index.cjs +7 -9
- package/dist/utils/index.d.ts +3 -4
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +3 -4
- package/dist/utils/path.cjs +22 -57
- package/dist/utils/path.d.ts +8 -7
- package/dist/utils/path.d.ts.map +1 -1
- package/dist/utils/path.js +21 -54
- package/dist/utils/result.cjs +37 -14
- package/dist/utils/result.d.ts.map +1 -1
- package/dist/utils/result.js +37 -14
- package/dist/utils/schema.cjs +2 -3
- package/dist/utils/schema.d.ts +2 -1
- package/dist/utils/schema.d.ts.map +1 -1
- package/dist/utils/schema.js +1 -2
- package/dist/utils/service-initializer.cjs +88 -61
- package/dist/utils/service-initializer.d.ts +4 -2
- package/dist/utils/service-initializer.d.ts.map +1 -1
- package/dist/utils/service-initializer.js +70 -43
- package/package.json +7 -3
- package/dist/Dexto.cjs +0 -251
- package/dist/Dexto.d.ts +0 -191
- package/dist/Dexto.d.ts.map +0 -1
- package/dist/Dexto.js +0 -228
- package/dist/agent/registry/error-codes.cjs +0 -44
- package/dist/agent/registry/error-codes.d.ts +0 -21
- package/dist/agent/registry/error-codes.d.ts.map +0 -1
- package/dist/agent/registry/error-codes.js +0 -21
- package/dist/agent/registry/errors.cjs +0 -188
- package/dist/agent/registry/errors.d.ts +0 -63
- package/dist/agent/registry/errors.d.ts.map +0 -1
- package/dist/agent/registry/errors.js +0 -165
- package/dist/agent/registry/registry.cjs +0 -479
- package/dist/agent/registry/registry.d.ts +0 -130
- package/dist/agent/registry/registry.d.ts.map +0 -1
- package/dist/agent/registry/registry.js +0 -453
- package/dist/agent/registry/types.cjs +0 -74
- package/dist/agent/registry/types.d.ts +0 -142
- package/dist/agent/registry/types.d.ts.map +0 -1
- package/dist/agent/registry/types.js +0 -48
- package/dist/agent/registry/user-registry.cjs +0 -140
- package/dist/agent/registry/user-registry.d.ts +0 -34
- package/dist/agent/registry/user-registry.d.ts.map +0 -1
- package/dist/agent/registry/user-registry.js +0 -105
- package/dist/approval/providers/event-based-approval-provider.cjs +0 -156
- package/dist/approval/providers/event-based-approval-provider.d.ts +0 -39
- package/dist/approval/providers/event-based-approval-provider.d.ts.map +0 -1
- package/dist/approval/providers/event-based-approval-provider.js +0 -133
- package/dist/approval/providers/factory.d.ts.map +0 -1
- package/dist/approval/providers/noop-approval-provider.cjs +0 -54
- package/dist/approval/providers/noop-approval-provider.d.ts +0 -18
- package/dist/approval/providers/noop-approval-provider.d.ts.map +0 -1
- package/dist/approval/providers/noop-approval-provider.js +0 -31
- package/dist/config/agent-resolver.cjs +0 -153
- package/dist/config/agent-resolver.d.ts +0 -14
- package/dist/config/agent-resolver.d.ts.map +0 -1
- package/dist/config/agent-resolver.js +0 -123
- package/dist/config/error-codes.cjs +0 -39
- package/dist/config/error-codes.d.ts +0 -16
- package/dist/config/error-codes.d.ts.map +0 -1
- package/dist/config/error-codes.js +0 -16
- package/dist/config/errors.cjs +0 -126
- package/dist/config/errors.d.ts +0 -34
- package/dist/config/errors.d.ts.map +0 -1
- package/dist/config/errors.js +0 -103
- package/dist/config/index.cjs +0 -26
- package/dist/config/index.d.ts +0 -4
- package/dist/config/index.d.ts.map +0 -1
- package/dist/config/index.js +0 -3
- package/dist/config/loader.cjs +0 -119
- package/dist/config/loader.d.ts +0 -16
- package/dist/config/loader.d.ts.map +0 -1
- package/dist/config/loader.js +0 -86
- package/dist/config/writer.cjs +0 -182
- package/dist/config/writer.d.ts +0 -35
- package/dist/config/writer.d.ts.map +0 -1
- package/dist/config/writer.js +0 -147
- package/dist/preferences/constants.d.ts +0 -2
- package/dist/preferences/constants.d.ts.map +0 -1
- package/dist/preferences/constants.js +0 -5
- package/dist/preferences/error-codes.d.ts +0 -8
- package/dist/preferences/error-codes.d.ts.map +0 -1
- package/dist/preferences/error-codes.js +0 -12
- package/dist/preferences/errors.cjs +0 -75
- package/dist/preferences/errors.d.ts +0 -18
- package/dist/preferences/errors.d.ts.map +0 -1
- package/dist/preferences/errors.js +0 -51
- package/dist/preferences/index.cjs +0 -55
- package/dist/preferences/index.d.ts +0 -6
- package/dist/preferences/index.d.ts.map +0 -1
- package/dist/preferences/index.js +0 -32
- package/dist/preferences/loader.cjs +0 -138
- package/dist/preferences/loader.d.ts +0 -51
- package/dist/preferences/loader.d.ts.map +0 -1
- package/dist/preferences/loader.js +0 -110
- package/dist/preferences/schemas.cjs +0 -75
- package/dist/preferences/schemas.d.ts +0 -110
- package/dist/preferences/schemas.d.ts.map +0 -1
- package/dist/preferences/schemas.js +0 -49
- package/dist/prompts/providers/file-prompt-provider.cjs +0 -399
- package/dist/prompts/providers/file-prompt-provider.d.ts +0 -47
- package/dist/prompts/providers/file-prompt-provider.d.ts.map +0 -1
- package/dist/prompts/providers/file-prompt-provider.js +0 -376
- package/dist/prompts/providers/starter-prompt-provider.cjs +0 -170
- package/dist/prompts/providers/starter-prompt-provider.d.ts +0 -45
- package/dist/prompts/providers/starter-prompt-provider.d.ts.map +0 -1
- package/dist/prompts/providers/starter-prompt-provider.js +0 -147
- package/dist/utils/api-key-store.cjs +0 -56
- package/dist/utils/api-key-store.d.ts +0 -24
- package/dist/utils/api-key-store.d.ts.map +0 -1
- package/dist/utils/api-key-store.js +0 -31
- package/dist/utils/env.cjs +0 -154
- package/dist/utils/env.d.ts +0 -28
- package/dist/utils/env.d.ts.map +0 -1
- package/dist/utils/env.js +0 -119
- package/dist/utils/port-utils.cjs +0 -37
- package/dist/utils/port-utils.d.ts +0 -10
- package/dist/utils/port-utils.d.ts.map +0 -1
- package/dist/utils/port-utils.js +0 -14
- package/dist/utils/port-utils.spec.cjs +0 -26
- package/dist/utils/port-utils.spec.js +0 -25
- /package/dist/approval/{providers/factory.cjs → factory.cjs} +0 -0
|
@@ -5,7 +5,7 @@ import {
|
|
|
5
5
|
SessionEventBus,
|
|
6
6
|
SessionEventNames
|
|
7
7
|
} from "../events/index.js";
|
|
8
|
-
import {
|
|
8
|
+
import { DextoLogComponent } from "../logger/v2/types.js";
|
|
9
9
|
import { DextoRuntimeError, ErrorScope, ErrorType } from "../errors/index.js";
|
|
10
10
|
import { PluginErrorCode } from "../plugins/error-codes.js";
|
|
11
11
|
class ChatSession {
|
|
@@ -19,13 +19,15 @@ class ChatSession {
|
|
|
19
19
|
*
|
|
20
20
|
* @param services - The shared services from the agent (state manager, prompt, client managers, etc.)
|
|
21
21
|
* @param id - Unique identifier for this session
|
|
22
|
+
* @param logger - Logger instance for dependency injection
|
|
22
23
|
*/
|
|
23
|
-
constructor(services, id) {
|
|
24
|
+
constructor(services, id, logger) {
|
|
24
25
|
this.services = services;
|
|
25
26
|
this.id = id;
|
|
27
|
+
this.logger = logger.createChild(DextoLogComponent.SESSION);
|
|
26
28
|
this.eventBus = new SessionEventBus();
|
|
27
29
|
this.setupEventForwarding();
|
|
28
|
-
logger.debug(`ChatSession ${this.id}: Created, awaiting initialization`);
|
|
30
|
+
this.logger.debug(`ChatSession ${this.id}: Created, awaiting initialization`);
|
|
29
31
|
}
|
|
30
32
|
/**
|
|
31
33
|
* Session-scoped event emitter for handling conversation events.
|
|
@@ -34,9 +36,9 @@ class ChatSession {
|
|
|
34
36
|
* to the global agent event bus.
|
|
35
37
|
*
|
|
36
38
|
* Events emitted include:
|
|
37
|
-
* - `
|
|
38
|
-
* - `
|
|
39
|
-
* - `
|
|
39
|
+
* - `llm:thinking` - AI model is processing
|
|
40
|
+
* - `llm:tool-call` - Tool execution requested
|
|
41
|
+
* - `llm:response` - Final response generated
|
|
40
42
|
*/
|
|
41
43
|
eventBus;
|
|
42
44
|
/**
|
|
@@ -61,6 +63,7 @@ class ChatSession {
|
|
|
61
63
|
* Calling cancel() aborts the in-flight LLM request and tool execution checks.
|
|
62
64
|
*/
|
|
63
65
|
currentRunController = null;
|
|
66
|
+
logger;
|
|
64
67
|
/**
|
|
65
68
|
* Initialize the session services asynchronously.
|
|
66
69
|
* This must be called after construction to set up the storage-backed services.
|
|
@@ -80,14 +83,14 @@ class ChatSession {
|
|
|
80
83
|
SessionEventNames.forEach((eventName) => {
|
|
81
84
|
const forwarder = (payload) => {
|
|
82
85
|
const payloadWithSession = payload && typeof payload === "object" ? { ...payload, sessionId: this.id } : { sessionId: this.id };
|
|
83
|
-
logger.silly(
|
|
84
|
-
`Forwarding session event ${eventName} to agent bus with session context: ${JSON.stringify(payloadWithSession, null, 2)}`
|
|
85
|
-
);
|
|
86
86
|
this.services.agentEventBus.emit(eventName, payloadWithSession);
|
|
87
87
|
};
|
|
88
88
|
this.forwarders.set(eventName, forwarder);
|
|
89
89
|
this.eventBus.on(eventName, forwarder);
|
|
90
90
|
});
|
|
91
|
+
this.logger.debug(
|
|
92
|
+
`[setupEventForwarding] Event forwarding setup complete for session=${this.id}`
|
|
93
|
+
);
|
|
91
94
|
}
|
|
92
95
|
/**
|
|
93
96
|
* Initializes session-specific services.
|
|
@@ -96,7 +99,8 @@ class ChatSession {
|
|
|
96
99
|
const llmConfig = this.services.stateManager.getLLMConfig(this.id);
|
|
97
100
|
this.historyProvider = createDatabaseHistoryProvider(
|
|
98
101
|
this.services.storageManager.getDatabase(),
|
|
99
|
-
this.id
|
|
102
|
+
this.id,
|
|
103
|
+
this.logger
|
|
100
104
|
);
|
|
101
105
|
this.llmService = createLLMService(
|
|
102
106
|
llmConfig,
|
|
@@ -108,10 +112,12 @@ class ChatSession {
|
|
|
108
112
|
this.eventBus,
|
|
109
113
|
// Use session event bus
|
|
110
114
|
this.id,
|
|
111
|
-
this.services.resourceManager
|
|
115
|
+
this.services.resourceManager,
|
|
112
116
|
// Pass ResourceManager for blob storage
|
|
117
|
+
this.logger
|
|
118
|
+
// Pass logger for dependency injection
|
|
113
119
|
);
|
|
114
|
-
logger.debug(`ChatSession ${this.id}: Services initialized with storage`);
|
|
120
|
+
this.logger.debug(`ChatSession ${this.id}: Services initialized with storage`);
|
|
115
121
|
}
|
|
116
122
|
/**
|
|
117
123
|
* Saves a blocked interaction to history when a plugin blocks execution.
|
|
@@ -137,7 +143,7 @@ class ChatSession {
|
|
|
137
143
|
await this.historyProvider.saveMessage(userMessage);
|
|
138
144
|
await this.historyProvider.saveMessage(assistantMessage);
|
|
139
145
|
const llmConfig = this.services.stateManager.getLLMConfig(this.id);
|
|
140
|
-
this.eventBus.emit("
|
|
146
|
+
this.eventBus.emit("llm:response", {
|
|
141
147
|
content: errorContent,
|
|
142
148
|
provider: llmConfig.provider,
|
|
143
149
|
model: llmConfig.model,
|
|
@@ -168,7 +174,7 @@ class ChatSession {
|
|
|
168
174
|
* ```
|
|
169
175
|
*/
|
|
170
176
|
async run(input, imageDataInput, fileDataInput, stream) {
|
|
171
|
-
logger.debug(
|
|
177
|
+
this.logger.debug(
|
|
172
178
|
`Running session ${this.id} | input.len=${input?.length ?? 0} | image=${imageDataInput ? imageDataInput.mimeType : "none"} | file=${fileDataInput ? `${fileDataInput.mimeType}:${fileDataInput.filename ?? "unknown"}` : "none"}`
|
|
173
179
|
);
|
|
174
180
|
this.currentRunController = new AbortController();
|
|
@@ -226,7 +232,7 @@ class ChatSession {
|
|
|
226
232
|
} catch (error) {
|
|
227
233
|
const aborted = error instanceof Error && error.name === "AbortError" || typeof error === "object" && error !== null && error.aborted === true;
|
|
228
234
|
if (aborted) {
|
|
229
|
-
this.eventBus.emit("
|
|
235
|
+
this.eventBus.emit("llm:error", {
|
|
230
236
|
error: new Error("Run cancelled"),
|
|
231
237
|
context: "user_cancelled",
|
|
232
238
|
recoverable: true
|
|
@@ -241,14 +247,20 @@ class ChatSession {
|
|
|
241
247
|
imageDataInput,
|
|
242
248
|
fileDataInput
|
|
243
249
|
);
|
|
244
|
-
logger.debug(
|
|
250
|
+
this.logger.debug(
|
|
251
|
+
`ChatSession ${this.id}: Saved blocked interaction to history`
|
|
252
|
+
);
|
|
245
253
|
} catch (saveError) {
|
|
246
|
-
logger.warn(
|
|
254
|
+
this.logger.warn(
|
|
247
255
|
`Failed to save blocked interaction to history: ${saveError instanceof Error ? saveError.message : String(saveError)}`
|
|
248
256
|
);
|
|
249
257
|
}
|
|
250
258
|
return error.message;
|
|
251
259
|
}
|
|
260
|
+
const errortype = error instanceof Error ? "object" : "string";
|
|
261
|
+
this.logger.error(
|
|
262
|
+
`Error in ChatSession.run: errortype=${errortype}: ${error instanceof Error ? error.message : String(error)}`
|
|
263
|
+
);
|
|
252
264
|
throw error;
|
|
253
265
|
} finally {
|
|
254
266
|
this.currentRunController = null;
|
|
@@ -284,7 +296,7 @@ class ChatSession {
|
|
|
284
296
|
* This method:
|
|
285
297
|
* 1. Clears all messages from the session's conversation history
|
|
286
298
|
* 2. Removes persisted history from the storage provider
|
|
287
|
-
* 3. Emits a `
|
|
299
|
+
* 3. Emits a `session:reset` event with session context
|
|
288
300
|
*
|
|
289
301
|
* The system prompt and session configuration remain unchanged.
|
|
290
302
|
* Only the conversation messages are cleared.
|
|
@@ -301,7 +313,7 @@ class ChatSession {
|
|
|
301
313
|
*/
|
|
302
314
|
async reset() {
|
|
303
315
|
await this.historyProvider.clearHistory();
|
|
304
|
-
this.services.agentEventBus.emit("
|
|
316
|
+
this.services.agentEventBus.emit("session:reset", {
|
|
305
317
|
sessionId: this.id
|
|
306
318
|
});
|
|
307
319
|
}
|
|
@@ -354,19 +366,20 @@ class ChatSession {
|
|
|
354
366
|
this.eventBus,
|
|
355
367
|
// Use session event bus
|
|
356
368
|
this.id,
|
|
357
|
-
this.services.resourceManager
|
|
369
|
+
this.services.resourceManager,
|
|
370
|
+
this.logger
|
|
358
371
|
);
|
|
359
372
|
this.llmService = newLLMService;
|
|
360
|
-
logger.info(
|
|
373
|
+
this.logger.info(
|
|
361
374
|
`ChatSession ${this.id}: LLM switched to ${newLLMConfig.provider}/${newLLMConfig.model}`
|
|
362
375
|
);
|
|
363
|
-
this.eventBus.emit("
|
|
376
|
+
this.eventBus.emit("llm:switched", {
|
|
364
377
|
newConfig: newLLMConfig,
|
|
365
378
|
router,
|
|
366
379
|
historyRetained: true
|
|
367
380
|
});
|
|
368
381
|
} catch (error) {
|
|
369
|
-
logger.error(
|
|
382
|
+
this.logger.error(
|
|
370
383
|
`Error during ChatSession.switchLLM for session ${this.id}: ${error instanceof Error ? error.message : String(error)}`
|
|
371
384
|
);
|
|
372
385
|
throw error;
|
|
@@ -380,11 +393,11 @@ class ChatSession {
|
|
|
380
393
|
async cleanup() {
|
|
381
394
|
try {
|
|
382
395
|
this.dispose();
|
|
383
|
-
logger.debug(
|
|
396
|
+
this.logger.debug(
|
|
384
397
|
`ChatSession ${this.id}: Memory cleanup completed (chat history preserved)`
|
|
385
398
|
);
|
|
386
399
|
} catch (error) {
|
|
387
|
-
logger.error(
|
|
400
|
+
this.logger.error(
|
|
388
401
|
`Error during ChatSession cleanup for session ${this.id}: ${error instanceof Error ? error.message : String(error)}`
|
|
389
402
|
);
|
|
390
403
|
throw error;
|
|
@@ -398,12 +411,12 @@ class ChatSession {
|
|
|
398
411
|
* Without this cleanup, sessions would remain in memory due to listener references.
|
|
399
412
|
*/
|
|
400
413
|
dispose() {
|
|
401
|
-
logger.debug(`Disposing session ${this.id} - cleaning up event listeners`);
|
|
414
|
+
this.logger.debug(`Disposing session ${this.id} - cleaning up event listeners`);
|
|
402
415
|
this.forwarders.forEach((forwarder, eventName) => {
|
|
403
416
|
this.eventBus.off(eventName, forwarder);
|
|
404
417
|
});
|
|
405
418
|
this.forwarders.clear();
|
|
406
|
-
logger.debug(`Session ${this.id} disposed successfully`);
|
|
419
|
+
this.logger.debug(`Session ${this.id} disposed successfully`);
|
|
407
420
|
}
|
|
408
421
|
/**
|
|
409
422
|
* Cancel the currently running turn for this session, if any.
|
|
@@ -21,23 +21,25 @@ __export(database_exports, {
|
|
|
21
21
|
DatabaseHistoryProvider: () => DatabaseHistoryProvider
|
|
22
22
|
});
|
|
23
23
|
module.exports = __toCommonJS(database_exports);
|
|
24
|
-
var
|
|
24
|
+
var import_types = require("../../logger/v2/types.cjs");
|
|
25
25
|
var import_errors = require("../errors.js");
|
|
26
26
|
class DatabaseHistoryProvider {
|
|
27
|
-
constructor(sessionId, database) {
|
|
27
|
+
constructor(sessionId, database, logger) {
|
|
28
28
|
this.sessionId = sessionId;
|
|
29
29
|
this.database = database;
|
|
30
|
+
this.logger = logger.createChild(import_types.DextoLogComponent.SESSION);
|
|
30
31
|
}
|
|
32
|
+
logger;
|
|
31
33
|
async getHistory() {
|
|
32
34
|
const key = this.getMessagesKey();
|
|
33
35
|
try {
|
|
34
36
|
const messages = await this.database.getRange(key, 0, 1e3);
|
|
35
|
-
|
|
37
|
+
this.logger.debug(
|
|
36
38
|
`DatabaseHistoryProvider: Retrieved ${messages.length} messages for session ${this.sessionId}`
|
|
37
39
|
);
|
|
38
40
|
return messages;
|
|
39
41
|
} catch (error) {
|
|
40
|
-
|
|
42
|
+
this.logger.error(
|
|
41
43
|
`DatabaseHistoryProvider: Error retrieving messages for session ${this.sessionId}: ${error instanceof Error ? error.message : String(error)}`
|
|
42
44
|
);
|
|
43
45
|
return [];
|
|
@@ -55,12 +57,15 @@ class DatabaseHistoryProvider {
|
|
|
55
57
|
contentPreview = `[${message.content.length} parts]`;
|
|
56
58
|
}
|
|
57
59
|
}
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
60
|
+
this.logger.debug(
|
|
61
|
+
`DatabaseHistoryProvider: Saved message for session ${this.sessionId}`,
|
|
62
|
+
{
|
|
63
|
+
role: message.role,
|
|
64
|
+
content: contentPreview
|
|
65
|
+
}
|
|
66
|
+
);
|
|
62
67
|
} catch (error) {
|
|
63
|
-
|
|
68
|
+
this.logger.error(
|
|
64
69
|
`DatabaseHistoryProvider: Error saving message for session ${this.sessionId}: ${error instanceof Error ? error.message : String(error)}`
|
|
65
70
|
);
|
|
66
71
|
throw import_errors.SessionError.storageFailed(
|
|
@@ -74,9 +79,11 @@ class DatabaseHistoryProvider {
|
|
|
74
79
|
const key = this.getMessagesKey();
|
|
75
80
|
try {
|
|
76
81
|
await this.database.delete(key);
|
|
77
|
-
|
|
82
|
+
this.logger.debug(
|
|
83
|
+
`DatabaseHistoryProvider: Cleared history for session ${this.sessionId}`
|
|
84
|
+
);
|
|
78
85
|
} catch (error) {
|
|
79
|
-
|
|
86
|
+
this.logger.error(
|
|
80
87
|
`DatabaseHistoryProvider: Error clearing session ${this.sessionId}: ${error instanceof Error ? error.message : String(error)}`
|
|
81
88
|
);
|
|
82
89
|
throw import_errors.SessionError.resetFailed(
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { IDextoLogger } from '../../logger/v2/types.js';
|
|
1
2
|
import type { Database } from '../../storage/types.js';
|
|
2
3
|
import type { InternalMessage } from '../../context/types.js';
|
|
3
4
|
import type { IConversationHistoryProvider } from './types.js';
|
|
@@ -16,7 +17,8 @@ import type { IConversationHistoryProvider } from './types.js';
|
|
|
16
17
|
export declare class DatabaseHistoryProvider implements IConversationHistoryProvider {
|
|
17
18
|
private sessionId;
|
|
18
19
|
private database;
|
|
19
|
-
|
|
20
|
+
private logger;
|
|
21
|
+
constructor(sessionId: string, database: Database, logger: IDextoLogger);
|
|
20
22
|
getHistory(): Promise<InternalMessage[]>;
|
|
21
23
|
saveMessage(message: InternalMessage): Promise<void>;
|
|
22
24
|
clearHistory(): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../../../src/session/history/database.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../../../src/session/history/database.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAE7D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAEvD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,YAAY,CAAC;AAE/D;;;;;;;;;;;GAWG;AACH,qBAAa,uBAAwB,YAAW,4BAA4B;IAIpE,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,QAAQ;IAJpB,OAAO,CAAC,MAAM,CAAe;gBAGjB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,QAAQ,EAC1B,MAAM,EAAE,YAAY;IAKlB,UAAU,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;IAmBxC,WAAW,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAqCpD,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAkBnC,OAAO,CAAC,cAAc;CAGzB"}
|
|
@@ -1,21 +1,23 @@
|
|
|
1
1
|
import "../../chunk-C6A6W6XS.js";
|
|
2
|
-
import {
|
|
2
|
+
import { DextoLogComponent } from "../../logger/v2/types.js";
|
|
3
3
|
import { SessionError } from "../errors.js";
|
|
4
4
|
class DatabaseHistoryProvider {
|
|
5
|
-
constructor(sessionId, database) {
|
|
5
|
+
constructor(sessionId, database, logger) {
|
|
6
6
|
this.sessionId = sessionId;
|
|
7
7
|
this.database = database;
|
|
8
|
+
this.logger = logger.createChild(DextoLogComponent.SESSION);
|
|
8
9
|
}
|
|
10
|
+
logger;
|
|
9
11
|
async getHistory() {
|
|
10
12
|
const key = this.getMessagesKey();
|
|
11
13
|
try {
|
|
12
14
|
const messages = await this.database.getRange(key, 0, 1e3);
|
|
13
|
-
logger.debug(
|
|
15
|
+
this.logger.debug(
|
|
14
16
|
`DatabaseHistoryProvider: Retrieved ${messages.length} messages for session ${this.sessionId}`
|
|
15
17
|
);
|
|
16
18
|
return messages;
|
|
17
19
|
} catch (error) {
|
|
18
|
-
logger.error(
|
|
20
|
+
this.logger.error(
|
|
19
21
|
`DatabaseHistoryProvider: Error retrieving messages for session ${this.sessionId}: ${error instanceof Error ? error.message : String(error)}`
|
|
20
22
|
);
|
|
21
23
|
return [];
|
|
@@ -33,12 +35,15 @@ class DatabaseHistoryProvider {
|
|
|
33
35
|
contentPreview = `[${message.content.length} parts]`;
|
|
34
36
|
}
|
|
35
37
|
}
|
|
36
|
-
logger.debug(
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
38
|
+
this.logger.debug(
|
|
39
|
+
`DatabaseHistoryProvider: Saved message for session ${this.sessionId}`,
|
|
40
|
+
{
|
|
41
|
+
role: message.role,
|
|
42
|
+
content: contentPreview
|
|
43
|
+
}
|
|
44
|
+
);
|
|
40
45
|
} catch (error) {
|
|
41
|
-
logger.error(
|
|
46
|
+
this.logger.error(
|
|
42
47
|
`DatabaseHistoryProvider: Error saving message for session ${this.sessionId}: ${error instanceof Error ? error.message : String(error)}`
|
|
43
48
|
);
|
|
44
49
|
throw SessionError.storageFailed(
|
|
@@ -52,9 +57,11 @@ class DatabaseHistoryProvider {
|
|
|
52
57
|
const key = this.getMessagesKey();
|
|
53
58
|
try {
|
|
54
59
|
await this.database.delete(key);
|
|
55
|
-
logger.debug(
|
|
60
|
+
this.logger.debug(
|
|
61
|
+
`DatabaseHistoryProvider: Cleared history for session ${this.sessionId}`
|
|
62
|
+
);
|
|
56
63
|
} catch (error) {
|
|
57
|
-
logger.error(
|
|
64
|
+
this.logger.error(
|
|
58
65
|
`DatabaseHistoryProvider: Error clearing session ${this.sessionId}: ${error instanceof Error ? error.message : String(error)}`
|
|
59
66
|
);
|
|
60
67
|
throw SessionError.resetFailed(
|
|
@@ -22,8 +22,8 @@ __export(factory_exports, {
|
|
|
22
22
|
});
|
|
23
23
|
module.exports = __toCommonJS(factory_exports);
|
|
24
24
|
var import_database = require("./database.js");
|
|
25
|
-
function createDatabaseHistoryProvider(database, sessionId) {
|
|
26
|
-
return new import_database.DatabaseHistoryProvider(sessionId, database);
|
|
25
|
+
function createDatabaseHistoryProvider(database, sessionId, logger) {
|
|
26
|
+
return new import_database.DatabaseHistoryProvider(sessionId, database, logger);
|
|
27
27
|
}
|
|
28
28
|
// Annotate the CommonJS export names for ESM import in node:
|
|
29
29
|
0 && (module.exports = {
|
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
import type { IConversationHistoryProvider } from './types.js';
|
|
2
2
|
import type { Database } from '../../storage/types.js';
|
|
3
|
+
import type { IDextoLogger } from '../../logger/v2/types.js';
|
|
3
4
|
/**
|
|
4
5
|
* Create a history provider directly with database backend
|
|
6
|
+
* @param database Database instance
|
|
7
|
+
* @param sessionId Session ID
|
|
8
|
+
* @param logger Logger instance for logging
|
|
5
9
|
*/
|
|
6
|
-
export declare function createDatabaseHistoryProvider(database: Database, sessionId: string): IConversationHistoryProvider;
|
|
10
|
+
export declare function createDatabaseHistoryProvider(database: Database, sessionId: string, logger: IDextoLogger): IConversationHistoryProvider;
|
|
7
11
|
//# sourceMappingURL=factory.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../../src/session/history/factory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,YAAY,CAAC;AAC/D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../../src/session/history/factory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,YAAY,CAAC;AAC/D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAG7D;;;;;GAKG;AACH,wBAAgB,6BAA6B,CACzC,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,YAAY,GACrB,4BAA4B,CAE9B"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import "../../chunk-C6A6W6XS.js";
|
|
2
2
|
import { DatabaseHistoryProvider } from "./database.js";
|
|
3
|
-
function createDatabaseHistoryProvider(database, sessionId) {
|
|
4
|
-
return new DatabaseHistoryProvider(sessionId, database);
|
|
3
|
+
function createDatabaseHistoryProvider(database, sessionId, logger) {
|
|
4
|
+
return new DatabaseHistoryProvider(sessionId, database, logger);
|
|
5
5
|
}
|
|
6
6
|
export {
|
|
7
7
|
createDatabaseHistoryProvider
|
|
@@ -23,13 +23,14 @@ __export(session_manager_exports, {
|
|
|
23
23
|
module.exports = __toCommonJS(session_manager_exports);
|
|
24
24
|
var import_crypto = require("crypto");
|
|
25
25
|
var import_chat_session = require("./chat-session.js");
|
|
26
|
-
var
|
|
26
|
+
var import_types = require("../logger/v2/types.js");
|
|
27
27
|
var import_errors = require("./errors.js");
|
|
28
28
|
class SessionManager {
|
|
29
|
-
constructor(services, config = {}) {
|
|
29
|
+
constructor(services, config = {}, logger) {
|
|
30
30
|
this.services = services;
|
|
31
31
|
this.maxSessions = config.maxSessions ?? 100;
|
|
32
32
|
this.sessionTTL = config.sessionTTL ?? 36e5;
|
|
33
|
+
this.logger = logger.createChild(import_types.DextoLogComponent.SESSION);
|
|
33
34
|
}
|
|
34
35
|
sessions = /* @__PURE__ */ new Map();
|
|
35
36
|
maxSessions;
|
|
@@ -39,6 +40,7 @@ class SessionManager {
|
|
|
39
40
|
initializationPromise;
|
|
40
41
|
// Add a Map to track ongoing session creation operations to prevent race conditions
|
|
41
42
|
pendingCreations = /* @__PURE__ */ new Map();
|
|
43
|
+
logger;
|
|
42
44
|
/**
|
|
43
45
|
* Initialize the SessionManager with persistent storage.
|
|
44
46
|
* This must be called before using any session operations.
|
|
@@ -51,12 +53,12 @@ class SessionManager {
|
|
|
51
53
|
const cleanupIntervalMs = Math.min(this.sessionTTL / 4, 15 * 60 * 1e3);
|
|
52
54
|
this.cleanupInterval = setInterval(
|
|
53
55
|
() => this.cleanupExpiredSessions().catch(
|
|
54
|
-
(err) =>
|
|
56
|
+
(err) => this.logger.error(`Periodic session cleanup failed: ${err}`)
|
|
55
57
|
),
|
|
56
58
|
cleanupIntervalMs
|
|
57
59
|
);
|
|
58
60
|
this.initialized = true;
|
|
59
|
-
|
|
61
|
+
this.logger.debug(
|
|
60
62
|
`SessionManager initialized with periodic cleanup every ${Math.round(cleanupIntervalMs / 1e3 / 60)} minutes`
|
|
61
63
|
);
|
|
62
64
|
}
|
|
@@ -67,7 +69,7 @@ class SessionManager {
|
|
|
67
69
|
async restoreSessionsFromStorage() {
|
|
68
70
|
try {
|
|
69
71
|
const sessionKeys = await this.services.storageManager.getDatabase().list("session:");
|
|
70
|
-
|
|
72
|
+
this.logger.debug(`Found ${sessionKeys.length} persisted sessions to restore`);
|
|
71
73
|
for (const sessionKey of sessionKeys) {
|
|
72
74
|
const sessionId = sessionKey.replace("session:", "");
|
|
73
75
|
const sessionData = await this.services.storageManager.getDatabase().get(sessionKey);
|
|
@@ -75,15 +77,15 @@ class SessionManager {
|
|
|
75
77
|
const now = Date.now();
|
|
76
78
|
const lastActivity = sessionData.lastActivity;
|
|
77
79
|
if (now - lastActivity <= this.sessionTTL) {
|
|
78
|
-
|
|
80
|
+
this.logger.debug(`Session ${sessionId} restored from storage`);
|
|
79
81
|
} else {
|
|
80
82
|
await this.services.storageManager.getDatabase().delete(sessionKey);
|
|
81
|
-
|
|
83
|
+
this.logger.debug(`Expired session ${sessionId} cleaned up during restore`);
|
|
82
84
|
}
|
|
83
85
|
}
|
|
84
86
|
}
|
|
85
87
|
} catch (error) {
|
|
86
|
-
|
|
88
|
+
this.logger.error(
|
|
87
89
|
`Failed to restore sessions from storage: ${error instanceof Error ? error.message : String(error)}`
|
|
88
90
|
);
|
|
89
91
|
}
|
|
@@ -135,10 +137,14 @@ class SessionManager {
|
|
|
135
137
|
const existingMetadata = await this.services.storageManager.getDatabase().get(sessionKey);
|
|
136
138
|
if (existingMetadata) {
|
|
137
139
|
await this.updateSessionActivity(id);
|
|
138
|
-
const session2 = new import_chat_session.ChatSession(
|
|
140
|
+
const session2 = new import_chat_session.ChatSession(
|
|
141
|
+
{ ...this.services, sessionManager: this },
|
|
142
|
+
id,
|
|
143
|
+
this.logger
|
|
144
|
+
);
|
|
139
145
|
await session2.init();
|
|
140
146
|
this.sessions.set(id, session2);
|
|
141
|
-
|
|
147
|
+
this.logger.info(`Restored session from storage: ${id}`);
|
|
142
148
|
return session2;
|
|
143
149
|
}
|
|
144
150
|
const activeSessionKeys = await this.services.storageManager.getDatabase().list("session:");
|
|
@@ -154,19 +160,21 @@ class SessionManager {
|
|
|
154
160
|
try {
|
|
155
161
|
await this.services.storageManager.getDatabase().set(sessionKey, sessionData);
|
|
156
162
|
} catch (error) {
|
|
157
|
-
|
|
163
|
+
this.logger.error(`Failed to store session metadata for ${id}:`, {
|
|
164
|
+
error: error instanceof Error ? error.message : String(error)
|
|
165
|
+
});
|
|
158
166
|
throw error;
|
|
159
167
|
}
|
|
160
168
|
let session;
|
|
161
169
|
try {
|
|
162
|
-
session = new import_chat_session.ChatSession({ ...this.services, sessionManager: this }, id);
|
|
170
|
+
session = new import_chat_session.ChatSession({ ...this.services, sessionManager: this }, id, this.logger);
|
|
163
171
|
await session.init();
|
|
164
172
|
this.sessions.set(id, session);
|
|
165
173
|
await this.services.storageManager.getCache().set(sessionKey, sessionData, this.sessionTTL / 1e3);
|
|
166
|
-
|
|
174
|
+
this.logger.info(`Created new session: ${id}`);
|
|
167
175
|
return session;
|
|
168
176
|
} catch (error) {
|
|
169
|
-
|
|
177
|
+
this.logger.error(
|
|
170
178
|
`Failed to initialize session ${id}: ${error instanceof Error ? error.message : String(error)}`
|
|
171
179
|
);
|
|
172
180
|
await this.services.storageManager.getDatabase().delete(sessionKey);
|
|
@@ -175,16 +183,6 @@ class SessionManager {
|
|
|
175
183
|
throw import_errors.SessionError.initializationFailed(id, reason);
|
|
176
184
|
}
|
|
177
185
|
}
|
|
178
|
-
/**
|
|
179
|
-
* Gets or creates the default session.
|
|
180
|
-
* This is used for backward compatibility with single-session operations.
|
|
181
|
-
*
|
|
182
|
-
* @returns The default ChatSession (creates one if it doesn't exist)
|
|
183
|
-
*/
|
|
184
|
-
async getDefaultSession() {
|
|
185
|
-
const defaultSessionId = "default";
|
|
186
|
-
return await this.createSession(defaultSessionId);
|
|
187
|
-
}
|
|
188
186
|
/**
|
|
189
187
|
* Retrieves an existing session by ID.
|
|
190
188
|
*
|
|
@@ -206,7 +204,8 @@ class SessionManager {
|
|
|
206
204
|
if (sessionData) {
|
|
207
205
|
const session = new import_chat_session.ChatSession(
|
|
208
206
|
{ ...this.services, sessionManager: this },
|
|
209
|
-
sessionId
|
|
207
|
+
sessionId,
|
|
208
|
+
this.logger
|
|
210
209
|
);
|
|
211
210
|
await session.init();
|
|
212
211
|
this.sessions.set(sessionId, session);
|
|
@@ -230,7 +229,9 @@ class SessionManager {
|
|
|
230
229
|
}
|
|
231
230
|
const sessionKey = `session:${sessionId}`;
|
|
232
231
|
await this.services.storageManager.getCache().delete(sessionKey);
|
|
233
|
-
|
|
232
|
+
this.logger.debug(
|
|
233
|
+
`Ended session (removed from memory, chat history preserved): ${sessionId}`
|
|
234
|
+
);
|
|
234
235
|
}
|
|
235
236
|
/**
|
|
236
237
|
* Deletes a session and its conversation history, removing everything from memory and storage.
|
|
@@ -249,7 +250,7 @@ class SessionManager {
|
|
|
249
250
|
const sessionKey = `session:${sessionId}`;
|
|
250
251
|
await this.services.storageManager.getDatabase().delete(sessionKey);
|
|
251
252
|
await this.services.storageManager.getCache().delete(sessionKey);
|
|
252
|
-
|
|
253
|
+
this.logger.debug(`Deleted session and conversation history: ${sessionId}`);
|
|
253
254
|
}
|
|
254
255
|
/**
|
|
255
256
|
* Resets the conversation history for a session while keeping the session alive.
|
|
@@ -272,7 +273,7 @@ class SessionManager {
|
|
|
272
273
|
await this.services.storageManager.getDatabase().set(sessionKey, sessionData);
|
|
273
274
|
await this.services.storageManager.getCache().set(sessionKey, sessionData, this.sessionTTL / 1e3);
|
|
274
275
|
}
|
|
275
|
-
|
|
276
|
+
this.logger.debug(`Reset session conversation: ${sessionId}`);
|
|
276
277
|
}
|
|
277
278
|
/**
|
|
278
279
|
* Lists all active session IDs.
|
|
@@ -385,13 +386,13 @@ class SessionManager {
|
|
|
385
386
|
if (session) {
|
|
386
387
|
session.dispose();
|
|
387
388
|
this.sessions.delete(sessionId);
|
|
388
|
-
|
|
389
|
+
this.logger.debug(
|
|
389
390
|
`Removed expired session from memory: ${sessionId} (chat history preserved)`
|
|
390
391
|
);
|
|
391
392
|
}
|
|
392
393
|
}
|
|
393
394
|
if (expiredSessions.length > 0) {
|
|
394
|
-
|
|
395
|
+
this.logger.debug(
|
|
395
396
|
`Memory cleanup: removed ${expiredSessions.length} inactive sessions, chat history preserved`
|
|
396
397
|
);
|
|
397
398
|
}
|
|
@@ -413,13 +414,13 @@ class SessionManager {
|
|
|
413
414
|
await session.switchLLM(newLLMConfig);
|
|
414
415
|
} catch (error) {
|
|
415
416
|
failedSessions.push(sId);
|
|
416
|
-
|
|
417
|
+
this.logger.warn(
|
|
417
418
|
`Error switching LLM for session ${sId}: ${error instanceof Error ? error.message : String(error)}`
|
|
418
419
|
);
|
|
419
420
|
}
|
|
420
421
|
}
|
|
421
422
|
}
|
|
422
|
-
this.services.agentEventBus.emit("
|
|
423
|
+
this.services.agentEventBus.emit("llm:switched", {
|
|
423
424
|
newConfig: newLLMConfig,
|
|
424
425
|
router: newLLMConfig.router,
|
|
425
426
|
historyRetained: true,
|
|
@@ -441,7 +442,7 @@ class SessionManager {
|
|
|
441
442
|
throw import_errors.SessionError.notFound(sessionId);
|
|
442
443
|
}
|
|
443
444
|
await session.switchLLM(newLLMConfig);
|
|
444
|
-
this.services.agentEventBus.emit("
|
|
445
|
+
this.services.agentEventBus.emit("llm:switched", {
|
|
445
446
|
newConfig: newLLMConfig,
|
|
446
447
|
router: newLLMConfig.router,
|
|
447
448
|
historyRetained: true,
|
|
@@ -450,23 +451,6 @@ class SessionManager {
|
|
|
450
451
|
const message = `Successfully switched to ${newLLMConfig.provider}/${newLLMConfig.model} using ${newLLMConfig.router} router for session ${sessionId}`;
|
|
451
452
|
return { message, warnings: [] };
|
|
452
453
|
}
|
|
453
|
-
/**
|
|
454
|
-
* Switch LLM for the default session.
|
|
455
|
-
* @param newLLMConfig The new LLM configuration to apply
|
|
456
|
-
* @returns Result object with success message and any warnings
|
|
457
|
-
*/
|
|
458
|
-
async switchLLMForDefaultSession(newLLMConfig) {
|
|
459
|
-
const defaultSession = await this.getDefaultSession();
|
|
460
|
-
await defaultSession.switchLLM(newLLMConfig);
|
|
461
|
-
this.services.agentEventBus.emit("dexto:llmSwitched", {
|
|
462
|
-
newConfig: newLLMConfig,
|
|
463
|
-
router: newLLMConfig.router,
|
|
464
|
-
historyRetained: true,
|
|
465
|
-
sessionIds: [defaultSession.id]
|
|
466
|
-
});
|
|
467
|
-
const message = `Successfully switched to ${newLLMConfig.provider}/${newLLMConfig.model} using ${newLLMConfig.router} router`;
|
|
468
|
-
return { message, warnings: [] };
|
|
469
|
-
}
|
|
470
454
|
/**
|
|
471
455
|
* Get session statistics for monitoring and debugging.
|
|
472
456
|
*/
|
|
@@ -492,21 +476,21 @@ class SessionManager {
|
|
|
492
476
|
if (this.cleanupInterval) {
|
|
493
477
|
clearInterval(this.cleanupInterval);
|
|
494
478
|
delete this.cleanupInterval;
|
|
495
|
-
|
|
479
|
+
this.logger.debug("Periodic session cleanup stopped");
|
|
496
480
|
}
|
|
497
481
|
const sessionIds = Array.from(this.sessions.keys());
|
|
498
482
|
for (const sessionId of sessionIds) {
|
|
499
483
|
try {
|
|
500
484
|
await this.endSession(sessionId);
|
|
501
485
|
} catch (error) {
|
|
502
|
-
|
|
486
|
+
this.logger.error(
|
|
503
487
|
`Failed to cleanup session ${sessionId}: ${error instanceof Error ? error.message : String(error)}`
|
|
504
488
|
);
|
|
505
489
|
}
|
|
506
490
|
}
|
|
507
491
|
this.sessions.clear();
|
|
508
492
|
this.initialized = false;
|
|
509
|
-
|
|
493
|
+
this.logger.debug("SessionManager cleanup completed");
|
|
510
494
|
}
|
|
511
495
|
}
|
|
512
496
|
// Annotate the CommonJS export names for ESM import in node:
|