@dexto/core 1.2.4 → 1.2.5
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 +164 -64
- package/dist/agent/schemas.d.ts +2605 -517
- package/dist/agent/schemas.d.ts.map +1 -1
- package/dist/agent/schemas.js +167 -64
- 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/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.d.ts +6 -6
- 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/prompt-manager.cjs +25 -18
- 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 -18
- 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/file-prompt-provider.cjs +14 -12
- package/dist/prompts/providers/file-prompt-provider.d.ts +3 -1
- package/dist/prompts/providers/file-prompt-provider.d.ts.map +1 -1
- package/dist/prompts/providers/file-prompt-provider.js +14 -12
- 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/providers/starter-prompt-provider.cjs +7 -5
- package/dist/prompts/providers/starter-prompt-provider.d.ts +3 -1
- package/dist/prompts/providers/starter-prompt-provider.d.ts.map +1 -1
- package/dist/prompts/providers/starter-prompt-provider.js +7 -5
- package/dist/prompts/schemas.d.ts +3 -3
- 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/manager.cjs +11 -8
- package/dist/systemPrompt/manager.d.ts +4 -2
- package/dist/systemPrompt/manager.d.ts.map +1 -1
- package/dist/systemPrompt/manager.js +11 -8
- package/dist/systemPrompt/schemas.cjs +21 -1
- package/dist/systemPrompt/schemas.d.ts +53 -53
- package/dist/systemPrompt/schemas.d.ts.map +1 -1
- package/dist/systemPrompt/schemas.js +11 -1
- 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 +87 -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 +69 -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/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
|
@@ -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:
|
|
@@ -2,6 +2,7 @@ import { ChatSession } from './chat-session.js';
|
|
|
2
2
|
import { SystemPromptManager } from '../systemPrompt/manager.js';
|
|
3
3
|
import { ToolManager } from '../tools/tool-manager.js';
|
|
4
4
|
import { AgentEventBus } from '../events/index.js';
|
|
5
|
+
import type { IDextoLogger } from '../logger/v2/types.js';
|
|
5
6
|
import type { AgentStateManager } from '../agent/state-manager.js';
|
|
6
7
|
import type { ValidatedLLMConfig } from '../llm/schemas.js';
|
|
7
8
|
import type { StorageManager } from '../storage/index.js';
|
|
@@ -49,6 +50,7 @@ export declare class SessionManager {
|
|
|
49
50
|
private cleanupInterval?;
|
|
50
51
|
private initializationPromise;
|
|
51
52
|
private readonly pendingCreations;
|
|
53
|
+
private logger;
|
|
52
54
|
constructor(services: {
|
|
53
55
|
stateManager: AgentStateManager;
|
|
54
56
|
systemPromptManager: SystemPromptManager;
|
|
@@ -58,7 +60,7 @@ export declare class SessionManager {
|
|
|
58
60
|
resourceManager: import('../resources/index.js').ResourceManager;
|
|
59
61
|
pluginManager: PluginManager;
|
|
60
62
|
mcpManager: import('../mcp/manager.js').MCPManager;
|
|
61
|
-
}, config
|
|
63
|
+
}, config: SessionManagerConfig | undefined, logger: IDextoLogger);
|
|
62
64
|
/**
|
|
63
65
|
* Initialize the SessionManager with persistent storage.
|
|
64
66
|
* This must be called before using any session operations.
|
|
@@ -86,13 +88,6 @@ export declare class SessionManager {
|
|
|
86
88
|
* This method implements atomic session creation to prevent race conditions.
|
|
87
89
|
*/
|
|
88
90
|
private createSessionInternal;
|
|
89
|
-
/**
|
|
90
|
-
* Gets or creates the default session.
|
|
91
|
-
* This is used for backward compatibility with single-session operations.
|
|
92
|
-
*
|
|
93
|
-
* @returns The default ChatSession (creates one if it doesn't exist)
|
|
94
|
-
*/
|
|
95
|
-
getDefaultSession(): Promise<ChatSession>;
|
|
96
91
|
/**
|
|
97
92
|
* Retrieves an existing session by ID.
|
|
98
93
|
*
|
|
@@ -182,15 +177,6 @@ export declare class SessionManager {
|
|
|
182
177
|
message: string;
|
|
183
178
|
warnings: string[];
|
|
184
179
|
}>;
|
|
185
|
-
/**
|
|
186
|
-
* Switch LLM for the default session.
|
|
187
|
-
* @param newLLMConfig The new LLM configuration to apply
|
|
188
|
-
* @returns Result object with success message and any warnings
|
|
189
|
-
*/
|
|
190
|
-
switchLLMForDefaultSession(newLLMConfig: ValidatedLLMConfig): Promise<{
|
|
191
|
-
message: string;
|
|
192
|
-
warnings: string[];
|
|
193
|
-
}>;
|
|
194
180
|
/**
|
|
195
181
|
* Get session statistics for monitoring and debugging.
|
|
196
182
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-manager.d.ts","sourceRoot":"","sources":["../../src/session/session-manager.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"session-manager.d.ts","sourceRoot":"","sources":["../../src/session/session-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
import "../chunk-C6A6W6XS.js";
|
|
2
2
|
import { randomUUID } from "crypto";
|
|
3
3
|
import { ChatSession } from "./chat-session.js";
|
|
4
|
-
import {
|
|
4
|
+
import { DextoLogComponent } from "../logger/v2/types.js";
|
|
5
5
|
import { SessionError } from "./errors.js";
|
|
6
6
|
class SessionManager {
|
|
7
|
-
constructor(services, config = {}) {
|
|
7
|
+
constructor(services, config = {}, logger) {
|
|
8
8
|
this.services = services;
|
|
9
9
|
this.maxSessions = config.maxSessions ?? 100;
|
|
10
10
|
this.sessionTTL = config.sessionTTL ?? 36e5;
|
|
11
|
+
this.logger = logger.createChild(DextoLogComponent.SESSION);
|
|
11
12
|
}
|
|
12
13
|
sessions = /* @__PURE__ */ new Map();
|
|
13
14
|
maxSessions;
|
|
@@ -17,6 +18,7 @@ class SessionManager {
|
|
|
17
18
|
initializationPromise;
|
|
18
19
|
// Add a Map to track ongoing session creation operations to prevent race conditions
|
|
19
20
|
pendingCreations = /* @__PURE__ */ new Map();
|
|
21
|
+
logger;
|
|
20
22
|
/**
|
|
21
23
|
* Initialize the SessionManager with persistent storage.
|
|
22
24
|
* This must be called before using any session operations.
|
|
@@ -29,12 +31,12 @@ class SessionManager {
|
|
|
29
31
|
const cleanupIntervalMs = Math.min(this.sessionTTL / 4, 15 * 60 * 1e3);
|
|
30
32
|
this.cleanupInterval = setInterval(
|
|
31
33
|
() => this.cleanupExpiredSessions().catch(
|
|
32
|
-
(err) => logger.error(`Periodic session cleanup failed: ${err}`)
|
|
34
|
+
(err) => this.logger.error(`Periodic session cleanup failed: ${err}`)
|
|
33
35
|
),
|
|
34
36
|
cleanupIntervalMs
|
|
35
37
|
);
|
|
36
38
|
this.initialized = true;
|
|
37
|
-
logger.debug(
|
|
39
|
+
this.logger.debug(
|
|
38
40
|
`SessionManager initialized with periodic cleanup every ${Math.round(cleanupIntervalMs / 1e3 / 60)} minutes`
|
|
39
41
|
);
|
|
40
42
|
}
|
|
@@ -45,7 +47,7 @@ class SessionManager {
|
|
|
45
47
|
async restoreSessionsFromStorage() {
|
|
46
48
|
try {
|
|
47
49
|
const sessionKeys = await this.services.storageManager.getDatabase().list("session:");
|
|
48
|
-
logger.debug(`Found ${sessionKeys.length} persisted sessions to restore`);
|
|
50
|
+
this.logger.debug(`Found ${sessionKeys.length} persisted sessions to restore`);
|
|
49
51
|
for (const sessionKey of sessionKeys) {
|
|
50
52
|
const sessionId = sessionKey.replace("session:", "");
|
|
51
53
|
const sessionData = await this.services.storageManager.getDatabase().get(sessionKey);
|
|
@@ -53,15 +55,15 @@ class SessionManager {
|
|
|
53
55
|
const now = Date.now();
|
|
54
56
|
const lastActivity = sessionData.lastActivity;
|
|
55
57
|
if (now - lastActivity <= this.sessionTTL) {
|
|
56
|
-
logger.debug(`Session ${sessionId} restored from storage`);
|
|
58
|
+
this.logger.debug(`Session ${sessionId} restored from storage`);
|
|
57
59
|
} else {
|
|
58
60
|
await this.services.storageManager.getDatabase().delete(sessionKey);
|
|
59
|
-
logger.debug(`Expired session ${sessionId} cleaned up during restore`);
|
|
61
|
+
this.logger.debug(`Expired session ${sessionId} cleaned up during restore`);
|
|
60
62
|
}
|
|
61
63
|
}
|
|
62
64
|
}
|
|
63
65
|
} catch (error) {
|
|
64
|
-
logger.error(
|
|
66
|
+
this.logger.error(
|
|
65
67
|
`Failed to restore sessions from storage: ${error instanceof Error ? error.message : String(error)}`
|
|
66
68
|
);
|
|
67
69
|
}
|
|
@@ -113,10 +115,14 @@ class SessionManager {
|
|
|
113
115
|
const existingMetadata = await this.services.storageManager.getDatabase().get(sessionKey);
|
|
114
116
|
if (existingMetadata) {
|
|
115
117
|
await this.updateSessionActivity(id);
|
|
116
|
-
const session2 = new ChatSession(
|
|
118
|
+
const session2 = new ChatSession(
|
|
119
|
+
{ ...this.services, sessionManager: this },
|
|
120
|
+
id,
|
|
121
|
+
this.logger
|
|
122
|
+
);
|
|
117
123
|
await session2.init();
|
|
118
124
|
this.sessions.set(id, session2);
|
|
119
|
-
logger.info(`Restored session from storage: ${id}
|
|
125
|
+
this.logger.info(`Restored session from storage: ${id}`);
|
|
120
126
|
return session2;
|
|
121
127
|
}
|
|
122
128
|
const activeSessionKeys = await this.services.storageManager.getDatabase().list("session:");
|
|
@@ -132,19 +138,21 @@ class SessionManager {
|
|
|
132
138
|
try {
|
|
133
139
|
await this.services.storageManager.getDatabase().set(sessionKey, sessionData);
|
|
134
140
|
} catch (error) {
|
|
135
|
-
logger.error(`Failed to store session metadata for ${id}:`,
|
|
141
|
+
this.logger.error(`Failed to store session metadata for ${id}:`, {
|
|
142
|
+
error: error instanceof Error ? error.message : String(error)
|
|
143
|
+
});
|
|
136
144
|
throw error;
|
|
137
145
|
}
|
|
138
146
|
let session;
|
|
139
147
|
try {
|
|
140
|
-
session = new ChatSession({ ...this.services, sessionManager: this }, id);
|
|
148
|
+
session = new ChatSession({ ...this.services, sessionManager: this }, id, this.logger);
|
|
141
149
|
await session.init();
|
|
142
150
|
this.sessions.set(id, session);
|
|
143
151
|
await this.services.storageManager.getCache().set(sessionKey, sessionData, this.sessionTTL / 1e3);
|
|
144
|
-
logger.info(`Created new session: ${id}
|
|
152
|
+
this.logger.info(`Created new session: ${id}`);
|
|
145
153
|
return session;
|
|
146
154
|
} catch (error) {
|
|
147
|
-
logger.error(
|
|
155
|
+
this.logger.error(
|
|
148
156
|
`Failed to initialize session ${id}: ${error instanceof Error ? error.message : String(error)}`
|
|
149
157
|
);
|
|
150
158
|
await this.services.storageManager.getDatabase().delete(sessionKey);
|
|
@@ -153,16 +161,6 @@ class SessionManager {
|
|
|
153
161
|
throw SessionError.initializationFailed(id, reason);
|
|
154
162
|
}
|
|
155
163
|
}
|
|
156
|
-
/**
|
|
157
|
-
* Gets or creates the default session.
|
|
158
|
-
* This is used for backward compatibility with single-session operations.
|
|
159
|
-
*
|
|
160
|
-
* @returns The default ChatSession (creates one if it doesn't exist)
|
|
161
|
-
*/
|
|
162
|
-
async getDefaultSession() {
|
|
163
|
-
const defaultSessionId = "default";
|
|
164
|
-
return await this.createSession(defaultSessionId);
|
|
165
|
-
}
|
|
166
164
|
/**
|
|
167
165
|
* Retrieves an existing session by ID.
|
|
168
166
|
*
|
|
@@ -184,7 +182,8 @@ class SessionManager {
|
|
|
184
182
|
if (sessionData) {
|
|
185
183
|
const session = new ChatSession(
|
|
186
184
|
{ ...this.services, sessionManager: this },
|
|
187
|
-
sessionId
|
|
185
|
+
sessionId,
|
|
186
|
+
this.logger
|
|
188
187
|
);
|
|
189
188
|
await session.init();
|
|
190
189
|
this.sessions.set(sessionId, session);
|
|
@@ -208,7 +207,9 @@ class SessionManager {
|
|
|
208
207
|
}
|
|
209
208
|
const sessionKey = `session:${sessionId}`;
|
|
210
209
|
await this.services.storageManager.getCache().delete(sessionKey);
|
|
211
|
-
logger.debug(
|
|
210
|
+
this.logger.debug(
|
|
211
|
+
`Ended session (removed from memory, chat history preserved): ${sessionId}`
|
|
212
|
+
);
|
|
212
213
|
}
|
|
213
214
|
/**
|
|
214
215
|
* Deletes a session and its conversation history, removing everything from memory and storage.
|
|
@@ -227,7 +228,7 @@ class SessionManager {
|
|
|
227
228
|
const sessionKey = `session:${sessionId}`;
|
|
228
229
|
await this.services.storageManager.getDatabase().delete(sessionKey);
|
|
229
230
|
await this.services.storageManager.getCache().delete(sessionKey);
|
|
230
|
-
logger.debug(`Deleted session and conversation history: ${sessionId}`);
|
|
231
|
+
this.logger.debug(`Deleted session and conversation history: ${sessionId}`);
|
|
231
232
|
}
|
|
232
233
|
/**
|
|
233
234
|
* Resets the conversation history for a session while keeping the session alive.
|
|
@@ -250,7 +251,7 @@ class SessionManager {
|
|
|
250
251
|
await this.services.storageManager.getDatabase().set(sessionKey, sessionData);
|
|
251
252
|
await this.services.storageManager.getCache().set(sessionKey, sessionData, this.sessionTTL / 1e3);
|
|
252
253
|
}
|
|
253
|
-
logger.debug(`Reset session conversation: ${sessionId}`);
|
|
254
|
+
this.logger.debug(`Reset session conversation: ${sessionId}`);
|
|
254
255
|
}
|
|
255
256
|
/**
|
|
256
257
|
* Lists all active session IDs.
|
|
@@ -363,13 +364,13 @@ class SessionManager {
|
|
|
363
364
|
if (session) {
|
|
364
365
|
session.dispose();
|
|
365
366
|
this.sessions.delete(sessionId);
|
|
366
|
-
logger.debug(
|
|
367
|
+
this.logger.debug(
|
|
367
368
|
`Removed expired session from memory: ${sessionId} (chat history preserved)`
|
|
368
369
|
);
|
|
369
370
|
}
|
|
370
371
|
}
|
|
371
372
|
if (expiredSessions.length > 0) {
|
|
372
|
-
logger.debug(
|
|
373
|
+
this.logger.debug(
|
|
373
374
|
`Memory cleanup: removed ${expiredSessions.length} inactive sessions, chat history preserved`
|
|
374
375
|
);
|
|
375
376
|
}
|
|
@@ -391,13 +392,13 @@ class SessionManager {
|
|
|
391
392
|
await session.switchLLM(newLLMConfig);
|
|
392
393
|
} catch (error) {
|
|
393
394
|
failedSessions.push(sId);
|
|
394
|
-
logger.warn(
|
|
395
|
+
this.logger.warn(
|
|
395
396
|
`Error switching LLM for session ${sId}: ${error instanceof Error ? error.message : String(error)}`
|
|
396
397
|
);
|
|
397
398
|
}
|
|
398
399
|
}
|
|
399
400
|
}
|
|
400
|
-
this.services.agentEventBus.emit("
|
|
401
|
+
this.services.agentEventBus.emit("llm:switched", {
|
|
401
402
|
newConfig: newLLMConfig,
|
|
402
403
|
router: newLLMConfig.router,
|
|
403
404
|
historyRetained: true,
|
|
@@ -419,7 +420,7 @@ class SessionManager {
|
|
|
419
420
|
throw SessionError.notFound(sessionId);
|
|
420
421
|
}
|
|
421
422
|
await session.switchLLM(newLLMConfig);
|
|
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,
|
|
@@ -428,23 +429,6 @@ class SessionManager {
|
|
|
428
429
|
const message = `Successfully switched to ${newLLMConfig.provider}/${newLLMConfig.model} using ${newLLMConfig.router} router for session ${sessionId}`;
|
|
429
430
|
return { message, warnings: [] };
|
|
430
431
|
}
|
|
431
|
-
/**
|
|
432
|
-
* Switch LLM for the default session.
|
|
433
|
-
* @param newLLMConfig The new LLM configuration to apply
|
|
434
|
-
* @returns Result object with success message and any warnings
|
|
435
|
-
*/
|
|
436
|
-
async switchLLMForDefaultSession(newLLMConfig) {
|
|
437
|
-
const defaultSession = await this.getDefaultSession();
|
|
438
|
-
await defaultSession.switchLLM(newLLMConfig);
|
|
439
|
-
this.services.agentEventBus.emit("dexto:llmSwitched", {
|
|
440
|
-
newConfig: newLLMConfig,
|
|
441
|
-
router: newLLMConfig.router,
|
|
442
|
-
historyRetained: true,
|
|
443
|
-
sessionIds: [defaultSession.id]
|
|
444
|
-
});
|
|
445
|
-
const message = `Successfully switched to ${newLLMConfig.provider}/${newLLMConfig.model} using ${newLLMConfig.router} router`;
|
|
446
|
-
return { message, warnings: [] };
|
|
447
|
-
}
|
|
448
432
|
/**
|
|
449
433
|
* Get session statistics for monitoring and debugging.
|
|
450
434
|
*/
|
|
@@ -470,21 +454,21 @@ class SessionManager {
|
|
|
470
454
|
if (this.cleanupInterval) {
|
|
471
455
|
clearInterval(this.cleanupInterval);
|
|
472
456
|
delete this.cleanupInterval;
|
|
473
|
-
logger.debug("Periodic session cleanup stopped");
|
|
457
|
+
this.logger.debug("Periodic session cleanup stopped");
|
|
474
458
|
}
|
|
475
459
|
const sessionIds = Array.from(this.sessions.keys());
|
|
476
460
|
for (const sessionId of sessionIds) {
|
|
477
461
|
try {
|
|
478
462
|
await this.endSession(sessionId);
|
|
479
463
|
} catch (error) {
|
|
480
|
-
logger.error(
|
|
464
|
+
this.logger.error(
|
|
481
465
|
`Failed to cleanup session ${sessionId}: ${error instanceof Error ? error.message : String(error)}`
|
|
482
466
|
);
|
|
483
467
|
}
|
|
484
468
|
}
|
|
485
469
|
this.sessions.clear();
|
|
486
470
|
this.initialized = false;
|
|
487
|
-
logger.debug("SessionManager cleanup completed");
|
|
471
|
+
this.logger.debug("SessionManager cleanup completed");
|
|
488
472
|
}
|
|
489
473
|
}
|
|
490
474
|
export {
|
|
@@ -25,7 +25,7 @@ module.exports = __toCommonJS(title_generator_exports);
|
|
|
25
25
|
var import_factory = require("../llm/services/factory.cjs");
|
|
26
26
|
var import_events = require("../events/index.cjs");
|
|
27
27
|
var import_memory = require("./history/memory.js");
|
|
28
|
-
async function generateSessionTitle(config, router, toolManager, systemPromptManager, resourceManager, userText, opts = {}) {
|
|
28
|
+
async function generateSessionTitle(config, router, toolManager, systemPromptManager, resourceManager, userText, logger, opts = {}) {
|
|
29
29
|
const timeoutMs = opts.timeoutMs;
|
|
30
30
|
const controller = timeoutMs !== void 0 ? new AbortController() : void 0;
|
|
31
31
|
let timer;
|
|
@@ -43,7 +43,8 @@ async function generateSessionTitle(config, router, toolManager, systemPromptMan
|
|
|
43
43
|
history,
|
|
44
44
|
bus,
|
|
45
45
|
`titlegen-${Math.random().toString(36).slice(2)}`,
|
|
46
|
-
resourceManager
|
|
46
|
+
resourceManager,
|
|
47
|
+
logger
|
|
47
48
|
);
|
|
48
49
|
const instruction = [
|
|
49
50
|
"Generate a short conversation title from the following user message.",
|
|
@@ -3,6 +3,7 @@ import type { LLMRouter } from '../llm/types.js';
|
|
|
3
3
|
import type { ToolManager } from '../tools/tool-manager.js';
|
|
4
4
|
import type { SystemPromptManager } from '../systemPrompt/manager.js';
|
|
5
5
|
import type { ResourceManager } from '../resources/index.js';
|
|
6
|
+
import type { IDextoLogger } from '../logger/v2/types.js';
|
|
6
7
|
export interface GenerateSessionTitleResult {
|
|
7
8
|
title?: string;
|
|
8
9
|
error?: string;
|
|
@@ -12,7 +13,7 @@ export interface GenerateSessionTitleResult {
|
|
|
12
13
|
* Generate a concise title for a chat based on the first user message.
|
|
13
14
|
* Runs a lightweight, isolated LLM completion that does not touch real history.
|
|
14
15
|
*/
|
|
15
|
-
export declare function generateSessionTitle(config: ValidatedLLMConfig, router: LLMRouter, toolManager: ToolManager, systemPromptManager: SystemPromptManager, resourceManager: ResourceManager, userText: string, opts?: {
|
|
16
|
+
export declare function generateSessionTitle(config: ValidatedLLMConfig, router: LLMRouter, toolManager: ToolManager, systemPromptManager: SystemPromptManager, resourceManager: ResourceManager, userText: string, logger: IDextoLogger, opts?: {
|
|
16
17
|
timeoutMs?: number;
|
|
17
18
|
}): Promise<GenerateSessionTitleResult>;
|
|
18
19
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"title-generator.d.ts","sourceRoot":"","sources":["../../src/session/title-generator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"title-generator.d.ts","sourceRoot":"","sources":["../../src/session/title-generator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAK7D,MAAM,WAAW,0BAA0B;IACvC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;CACtB;AAED;;;GAGG;AACH,wBAAsB,oBAAoB,CACtC,MAAM,EAAE,kBAAkB,EAC1B,MAAM,EAAE,SAAS,EACjB,WAAW,EAAE,WAAW,EACxB,mBAAmB,EAAE,mBAAmB,EACxC,eAAe,EAAE,eAAe,EAChC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,YAAY,EACpB,IAAI,GAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAO,GAClC,OAAO,CAAC,0BAA0B,CAAC,CAuDrC;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CA8BzE"}
|