@dexto/core 1.5.7 → 1.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +19 -8
- package/dist/agent/DextoAgent.cjs +383 -153
- package/dist/agent/DextoAgent.d.ts +112 -60
- package/dist/agent/DextoAgent.d.ts.map +1 -1
- package/dist/agent/DextoAgent.js +380 -150
- package/dist/{context/compaction/provider.cjs → agent/agent-options.cjs} +2 -2
- package/dist/agent/agent-options.d.ts +53 -0
- package/dist/agent/agent-options.d.ts.map +1 -0
- package/dist/agent/agentCard.cjs +1 -1
- package/dist/agent/errors.cjs +2 -2
- package/dist/agent/errors.d.ts.map +1 -1
- package/dist/agent/index.cjs +1 -6
- package/dist/agent/index.d.ts +3 -2
- package/dist/agent/index.d.ts.map +1 -1
- package/dist/agent/index.js +1 -7
- package/dist/{storage/blob/provider.cjs → agent/runtime-config.cjs} +2 -2
- package/dist/agent/runtime-config.d.ts +53 -0
- package/dist/agent/runtime-config.d.ts.map +1 -0
- package/dist/agent/schemas.cjs +2 -99
- package/dist/agent/schemas.d.ts +10 -9160
- package/dist/agent/schemas.d.ts.map +1 -1
- package/dist/agent/schemas.js +1 -104
- package/dist/agent/state-manager.d.ts +5 -5
- package/dist/agent/state-manager.d.ts.map +1 -1
- package/dist/approval/error-codes.cjs +1 -1
- package/dist/approval/error-codes.d.ts +1 -1
- package/dist/approval/error-codes.d.ts.map +1 -1
- package/dist/approval/error-codes.js +1 -1
- package/dist/approval/errors.cjs +5 -5
- package/dist/approval/errors.d.ts +2 -2
- package/dist/approval/errors.d.ts.map +1 -1
- package/dist/approval/errors.js +5 -5
- package/dist/approval/index.cjs +8 -8
- package/dist/approval/index.d.ts +2 -2
- package/dist/approval/index.d.ts.map +1 -1
- package/dist/approval/index.js +8 -8
- package/dist/approval/manager.cjs +77 -57
- package/dist/approval/manager.d.ts +41 -43
- package/dist/approval/manager.d.ts.map +1 -1
- package/dist/approval/manager.js +75 -55
- package/dist/approval/schemas.cjs +26 -25
- package/dist/approval/schemas.d.ts +35 -15
- package/dist/approval/schemas.d.ts.map +1 -1
- package/dist/approval/schemas.js +22 -21
- package/dist/approval/types.cjs +1 -1
- package/dist/approval/types.d.ts +14 -14
- package/dist/approval/types.d.ts.map +1 -1
- package/dist/approval/types.js +1 -1
- package/dist/context/compaction/index.cjs +2 -23
- package/dist/context/compaction/index.d.ts +1 -7
- package/dist/context/compaction/index.d.ts.map +1 -1
- package/dist/context/compaction/index.js +1 -16
- package/dist/context/compaction/strategies/noop.cjs +19 -1
- package/dist/context/compaction/strategies/noop.d.ts +13 -3
- package/dist/context/compaction/strategies/noop.d.ts.map +1 -1
- package/dist/context/compaction/strategies/noop.js +19 -1
- package/dist/context/compaction/strategies/{reactive-overflow.cjs → reactive-overflow-compaction.cjs} +67 -64
- package/dist/context/compaction/strategies/{reactive-overflow.d.ts → reactive-overflow-compaction.d.ts} +19 -36
- package/dist/context/compaction/strategies/reactive-overflow-compaction.d.ts.map +1 -0
- package/dist/context/compaction/strategies/{reactive-overflow.js → reactive-overflow-compaction.js} +63 -60
- package/dist/context/compaction/types.d.ts +40 -8
- package/dist/context/compaction/types.d.ts.map +1 -1
- package/dist/context/manager.cjs +5 -3
- package/dist/context/manager.d.ts +4 -3
- package/dist/context/manager.d.ts.map +1 -1
- package/dist/context/manager.js +5 -3
- package/dist/context/types.d.ts +2 -0
- package/dist/context/types.d.ts.map +1 -1
- package/dist/context/utils.cjs +70 -43
- package/dist/context/utils.d.ts +14 -14
- package/dist/context/utils.d.ts.map +1 -1
- package/dist/context/utils.js +69 -42
- package/dist/errors/result-bridge.d.ts +2 -2
- package/dist/errors/result-bridge.d.ts.map +1 -1
- package/dist/errors/types.cjs +1 -1
- package/dist/errors/types.d.ts +3 -3
- package/dist/errors/types.d.ts.map +1 -1
- package/dist/errors/types.js +1 -1
- package/dist/events/index.cjs +15 -2
- package/dist/events/index.d.ts +78 -7
- package/dist/events/index.d.ts.map +1 -1
- package/dist/events/index.js +15 -2
- package/dist/{plugins → hooks}/builtins/content-policy.cjs +7 -6
- package/dist/hooks/builtins/content-policy.d.ts +24 -0
- package/dist/hooks/builtins/content-policy.d.ts.map +1 -0
- package/dist/{plugins → hooks}/builtins/content-policy.js +6 -5
- package/dist/{plugins → hooks}/builtins/response-sanitizer.cjs +3 -3
- package/dist/hooks/builtins/response-sanitizer.d.ts +22 -0
- package/dist/hooks/builtins/response-sanitizer.d.ts.map +1 -0
- package/dist/{plugins → hooks}/builtins/response-sanitizer.js +2 -2
- package/dist/hooks/error-codes.cjs +43 -0
- package/dist/hooks/error-codes.d.ts +34 -0
- package/dist/hooks/error-codes.d.ts.map +1 -0
- package/dist/hooks/error-codes.js +20 -0
- package/dist/{storage/cache/providers/memory.cjs → hooks/index.cjs} +15 -18
- package/dist/hooks/index.d.ts +14 -0
- package/dist/hooks/index.d.ts.map +1 -0
- package/dist/hooks/index.js +11 -0
- package/dist/hooks/manager.cjs +354 -0
- package/dist/hooks/manager.d.ts +103 -0
- package/dist/hooks/manager.d.ts.map +1 -0
- package/dist/hooks/manager.js +331 -0
- package/dist/{plugins → hooks}/types.d.ts +36 -34
- package/dist/hooks/types.d.ts.map +1 -0
- package/dist/index.browser.cjs +13 -12
- package/dist/index.browser.d.ts +6 -6
- package/dist/index.browser.d.ts.map +1 -1
- package/dist/index.browser.js +8 -7
- package/dist/index.cjs +5 -7
- package/dist/index.d.ts +2 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -3
- package/dist/llm/curation-config.cjs +82 -0
- package/dist/llm/curation-config.d.ts +13 -0
- package/dist/llm/curation-config.d.ts.map +1 -0
- package/dist/llm/curation-config.js +59 -0
- package/dist/llm/curation.cjs +57 -0
- package/dist/llm/curation.d.ts +16 -0
- package/dist/llm/curation.d.ts.map +1 -0
- package/dist/llm/curation.js +34 -0
- package/dist/llm/errors.cjs +2 -2
- package/dist/llm/errors.d.ts +8 -8
- package/dist/llm/errors.js +1 -1
- package/dist/llm/executor/provider-options.cjs +1 -1
- package/dist/llm/executor/provider-options.js +1 -1
- package/dist/llm/executor/stream-processor.cjs +131 -11
- package/dist/llm/executor/stream-processor.d.ts +7 -5
- package/dist/llm/executor/stream-processor.d.ts.map +1 -1
- package/dist/llm/executor/stream-processor.js +131 -11
- package/dist/llm/executor/turn-executor.cjs +57 -56
- package/dist/llm/executor/turn-executor.d.ts +7 -8
- package/dist/llm/executor/turn-executor.d.ts.map +1 -1
- package/dist/llm/executor/turn-executor.js +57 -56
- package/dist/llm/formatters/vercel.cjs +2 -2
- package/dist/llm/formatters/vercel.d.ts +2 -2
- package/dist/llm/formatters/vercel.d.ts.map +1 -1
- package/dist/llm/index.cjs +14 -3
- package/dist/llm/index.d.ts +3 -1
- package/dist/llm/index.d.ts.map +1 -1
- package/dist/llm/index.js +13 -2
- package/dist/llm/providers/local/schemas.d.ts +10 -10
- package/dist/llm/registry/auto-update.cjs +263 -0
- package/dist/llm/registry/auto-update.d.ts +27 -0
- package/dist/llm/registry/auto-update.d.ts.map +1 -0
- package/dist/llm/registry/auto-update.js +227 -0
- package/dist/llm/registry/index.cjs +806 -0
- package/dist/llm/{registry.d.ts → registry/index.d.ts} +21 -43
- package/dist/llm/registry/index.d.ts.map +1 -0
- package/dist/llm/registry/index.js +756 -0
- package/dist/llm/registry/models.generated.cjs +4861 -0
- package/dist/llm/registry/models.generated.d.ts +431 -0
- package/dist/llm/registry/models.generated.d.ts.map +1 -0
- package/dist/llm/registry/models.generated.js +4838 -0
- package/dist/{storage/database/providers/index.cjs → llm/registry/models.manual.cjs} +22 -12
- package/dist/llm/registry/models.manual.d.ts +22 -0
- package/dist/llm/registry/models.manual.d.ts.map +1 -0
- package/dist/llm/registry/models.manual.js +21 -0
- package/dist/llm/registry/sync.cjs +354 -0
- package/dist/llm/registry/sync.d.ts +41 -0
- package/dist/llm/registry/sync.d.ts.map +1 -0
- package/dist/llm/registry/sync.js +328 -0
- package/dist/llm/resolver.cjs +29 -20
- package/dist/llm/resolver.d.ts +4 -4
- package/dist/llm/resolver.d.ts.map +1 -1
- package/dist/llm/resolver.js +28 -20
- package/dist/llm/schemas.cjs +69 -94
- package/dist/llm/schemas.d.ts +19 -158
- package/dist/llm/schemas.d.ts.map +1 -1
- package/dist/llm/schemas.js +67 -91
- package/dist/llm/services/factory.cjs +6 -7
- package/dist/llm/services/factory.d.ts +3 -4
- package/dist/llm/services/factory.d.ts.map +1 -1
- package/dist/llm/services/factory.js +6 -7
- package/dist/llm/services/vercel.cjs +11 -15
- package/dist/llm/services/vercel.d.ts +7 -7
- package/dist/llm/services/vercel.d.ts.map +1 -1
- package/dist/llm/services/vercel.js +11 -15
- package/dist/llm/types.cjs +1 -1
- package/dist/llm/types.d.ts +1 -1
- package/dist/llm/types.d.ts.map +1 -1
- package/dist/llm/types.js +1 -1
- package/dist/llm/validation.cjs +2 -2
- package/dist/llm/validation.d.ts +2 -2
- package/dist/llm/validation.d.ts.map +1 -1
- package/dist/llm/validation.js +1 -1
- package/dist/logger/browser.cjs +4 -4
- package/dist/logger/browser.d.ts +4 -4
- package/dist/logger/browser.d.ts.map +1 -1
- package/dist/logger/browser.js +3 -3
- package/dist/{context/compaction/providers/noop-provider.cjs → logger/default-logger-factory.cjs} +16 -22
- package/dist/logger/default-logger-factory.d.ts +301 -0
- package/dist/logger/default-logger-factory.d.ts.map +1 -0
- package/dist/logger/default-logger-factory.js +18 -0
- package/dist/logger/factory.d.ts +2 -2
- package/dist/logger/factory.d.ts.map +1 -1
- package/dist/logger/index.cjs +7 -2
- package/dist/logger/index.d.ts +5 -3
- package/dist/logger/index.d.ts.map +1 -1
- package/dist/logger/index.js +8 -2
- package/dist/logger/logger.cjs +4 -4
- package/dist/logger/logger.d.ts +4 -4
- package/dist/logger/logger.d.ts.map +1 -1
- package/dist/logger/logger.js +3 -3
- package/dist/logger/v2/dexto-logger.d.ts +3 -3
- package/dist/logger/v2/dexto-logger.d.ts.map +1 -1
- package/dist/logger/v2/schemas.d.ts +12 -12
- package/dist/logger/v2/test-utils.d.ts +5 -5
- package/dist/logger/v2/test-utils.d.ts.map +1 -1
- package/dist/logger/v2/transport-factory.d.ts +3 -3
- package/dist/logger/v2/transport-factory.d.ts.map +1 -1
- package/dist/logger/v2/transports/console-transport.d.ts +2 -2
- package/dist/logger/v2/transports/console-transport.d.ts.map +1 -1
- package/dist/logger/v2/transports/file-transport.d.ts +2 -2
- package/dist/logger/v2/transports/file-transport.d.ts.map +1 -1
- package/dist/logger/v2/transports/silent-transport.d.ts +2 -2
- package/dist/logger/v2/transports/silent-transport.d.ts.map +1 -1
- package/dist/logger/v2/types.cjs +1 -1
- package/dist/logger/v2/types.d.ts +8 -8
- package/dist/logger/v2/types.d.ts.map +1 -1
- package/dist/logger/v2/types.js +1 -1
- package/dist/mcp/errors.cjs +2 -2
- package/dist/mcp/errors.d.ts.map +1 -1
- package/dist/mcp/manager.cjs +16 -11
- package/dist/mcp/manager.d.ts +16 -13
- package/dist/mcp/manager.d.ts.map +1 -1
- package/dist/mcp/manager.js +17 -12
- package/dist/mcp/mcp-client.cjs +25 -20
- package/dist/mcp/mcp-client.d.ts +5 -5
- package/dist/mcp/mcp-client.d.ts.map +1 -1
- package/dist/mcp/mcp-client.js +20 -15
- package/dist/mcp/resolver.cjs +1 -1
- package/dist/mcp/schemas.cjs +5 -5
- package/dist/mcp/schemas.d.ts +4 -4
- package/dist/mcp/schemas.js +2 -2
- package/dist/mcp/types.d.ts +7 -7
- package/dist/mcp/types.d.ts.map +1 -1
- package/dist/memory/manager.d.ts +2 -2
- package/dist/memory/manager.d.ts.map +1 -1
- package/dist/memory/schemas.d.ts +2 -2
- package/dist/prompts/errors.cjs +3 -3
- package/dist/prompts/errors.d.ts.map +1 -1
- package/dist/prompts/prompt-manager.d.ts +3 -3
- package/dist/prompts/prompt-manager.d.ts.map +1 -1
- package/dist/prompts/providers/config-prompt-provider.cjs +15 -29
- package/dist/prompts/providers/config-prompt-provider.d.ts +3 -3
- package/dist/prompts/providers/config-prompt-provider.d.ts.map +1 -1
- package/dist/prompts/providers/config-prompt-provider.js +15 -29
- package/dist/prompts/providers/custom-prompt-provider.d.ts +2 -2
- package/dist/prompts/providers/custom-prompt-provider.d.ts.map +1 -1
- package/dist/prompts/providers/mcp-prompt-provider.d.ts +2 -2
- package/dist/prompts/providers/mcp-prompt-provider.d.ts.map +1 -1
- package/dist/prompts/schemas.d.ts +4 -4
- package/dist/resources/{internal-provider.cjs → agent-resources-provider.cjs} +16 -16
- package/dist/resources/{internal-provider.d.ts → agent-resources-provider.d.ts} +6 -6
- package/dist/resources/agent-resources-provider.d.ts.map +1 -0
- package/dist/resources/{internal-provider.js → agent-resources-provider.js} +13 -13
- package/dist/resources/errors.cjs +2 -2
- package/dist/resources/errors.d.ts.map +1 -1
- package/dist/resources/handlers/blob-handler.d.ts +2 -2
- package/dist/resources/handlers/blob-handler.d.ts.map +1 -1
- package/dist/resources/handlers/factory.d.ts +3 -3
- package/dist/resources/handlers/factory.d.ts.map +1 -1
- package/dist/resources/handlers/filesystem-handler.cjs +25 -0
- package/dist/resources/handlers/filesystem-handler.d.ts +3 -2
- package/dist/resources/handlers/filesystem-handler.d.ts.map +1 -1
- package/dist/resources/handlers/filesystem-handler.js +25 -0
- package/dist/resources/index.cjs +7 -9
- package/dist/resources/index.d.ts +3 -3
- package/dist/resources/index.d.ts.map +1 -1
- package/dist/resources/index.js +5 -10
- package/dist/resources/manager.cjs +77 -74
- package/dist/resources/manager.d.ts +16 -7
- package/dist/resources/manager.d.ts.map +1 -1
- package/dist/resources/manager.js +77 -74
- package/dist/resources/schemas.cjs +6 -26
- package/dist/resources/schemas.d.ts +8 -100
- package/dist/resources/schemas.d.ts.map +1 -1
- package/dist/resources/schemas.js +4 -23
- package/dist/search/search-service.d.ts +2 -2
- package/dist/search/search-service.d.ts.map +1 -1
- package/dist/session/chat-session.cjs +16 -26
- package/dist/session/chat-session.d.ts +7 -5
- package/dist/session/chat-session.d.ts.map +1 -1
- package/dist/session/chat-session.js +17 -27
- package/dist/session/errors.cjs +2 -2
- package/dist/session/errors.d.ts.map +1 -1
- package/dist/session/history/database.cjs +1 -1
- package/dist/session/history/database.d.ts +4 -4
- package/dist/session/history/database.d.ts.map +1 -1
- package/dist/session/history/factory.d.ts +3 -3
- package/dist/session/history/factory.d.ts.map +1 -1
- package/dist/session/history/memory.d.ts +4 -4
- package/dist/session/history/memory.d.ts.map +1 -1
- package/dist/session/history/types.d.ts +2 -2
- package/dist/session/history/types.d.ts.map +1 -1
- package/dist/session/index.cjs +3 -0
- package/dist/session/index.d.ts +2 -0
- package/dist/session/index.d.ts.map +1 -1
- package/dist/session/index.js +2 -0
- package/dist/session/message-queue.cjs +29 -5
- package/dist/session/message-queue.d.ts +5 -3
- package/dist/session/message-queue.d.ts.map +1 -1
- package/dist/session/message-queue.js +29 -5
- package/dist/session/session-manager.cjs +107 -12
- package/dist/session/session-manager.d.ts +49 -8
- package/dist/session/session-manager.d.ts.map +1 -1
- package/dist/session/session-manager.js +97 -12
- package/dist/session/title-generator.cjs +2 -2
- package/dist/session/title-generator.d.ts +2 -2
- package/dist/session/title-generator.d.ts.map +1 -1
- package/dist/session/types.d.ts +1 -0
- package/dist/session/types.d.ts.map +1 -1
- package/dist/storage/blob/index.cjs +0 -40
- package/dist/storage/blob/index.d.ts +2 -44
- package/dist/storage/blob/index.d.ts.map +1 -1
- package/dist/storage/blob/index.js +0 -30
- package/dist/storage/cache/index.cjs +0 -37
- package/dist/storage/cache/index.d.ts +0 -42
- package/dist/storage/cache/index.d.ts.map +1 -1
- package/dist/storage/cache/index.js +0 -28
- package/dist/storage/database/index.cjs +0 -42
- package/dist/storage/database/index.d.ts +0 -43
- package/dist/storage/database/index.d.ts.map +1 -1
- package/dist/storage/database/index.js +0 -37
- package/dist/storage/error-codes.cjs +1 -6
- package/dist/storage/error-codes.d.ts +2 -7
- package/dist/storage/error-codes.d.ts.map +1 -1
- package/dist/storage/error-codes.js +1 -6
- package/dist/storage/errors.cjs +18 -82
- package/dist/storage/errors.d.ts +4 -24
- package/dist/storage/errors.d.ts.map +1 -1
- package/dist/storage/errors.js +16 -80
- package/dist/storage/index.cjs +8 -69
- package/dist/storage/index.d.ts +11 -66
- package/dist/storage/index.d.ts.map +1 -1
- package/dist/storage/index.js +6 -50
- package/dist/storage/storage-manager.cjs +9 -25
- package/dist/storage/storage-manager.d.ts +11 -15
- package/dist/storage/storage-manager.d.ts.map +1 -1
- package/dist/storage/storage-manager.js +8 -23
- package/dist/storage/types.d.ts +0 -1
- package/dist/storage/types.d.ts.map +1 -1
- package/dist/systemPrompt/contributors.d.ts +4 -4
- package/dist/systemPrompt/contributors.d.ts.map +1 -1
- package/dist/systemPrompt/errors.cjs +2 -2
- package/dist/systemPrompt/errors.d.ts.map +1 -1
- package/dist/systemPrompt/manager.cjs +1 -5
- package/dist/systemPrompt/manager.d.ts +2 -3
- package/dist/systemPrompt/manager.d.ts.map +1 -1
- package/dist/systemPrompt/manager.js +1 -5
- package/dist/telemetry/index.cjs +3 -0
- package/dist/telemetry/index.d.ts +2 -0
- package/dist/telemetry/index.d.ts.map +1 -1
- package/dist/telemetry/index.js +2 -0
- package/dist/telemetry/utils.d.ts +4 -4
- package/dist/telemetry/utils.d.ts.map +1 -1
- package/dist/test-utils/in-memory-storage.cjs +288 -0
- package/dist/test-utils/in-memory-storage.js +252 -0
- package/dist/tools/confirmation/allowed-tools-provider/factory.d.ts +3 -3
- package/dist/tools/confirmation/allowed-tools-provider/factory.d.ts.map +1 -1
- package/dist/tools/confirmation/allowed-tools-provider/in-memory.d.ts +2 -2
- package/dist/tools/confirmation/allowed-tools-provider/in-memory.d.ts.map +1 -1
- package/dist/tools/confirmation/allowed-tools-provider/storage.d.ts +4 -4
- package/dist/tools/confirmation/allowed-tools-provider/storage.d.ts.map +1 -1
- package/dist/tools/confirmation/allowed-tools-provider/types.d.ts +2 -2
- package/dist/tools/confirmation/allowed-tools-provider/types.d.ts.map +1 -1
- package/dist/tools/{internal-tools/constants.cjs → define-tool.cjs} +8 -13
- package/dist/tools/define-tool.d.ts +11 -0
- package/dist/tools/define-tool.d.ts.map +1 -0
- package/dist/tools/define-tool.js +7 -0
- package/dist/tools/error-codes.cjs +2 -2
- package/dist/tools/error-codes.d.ts +2 -2
- package/dist/tools/error-codes.d.ts.map +1 -1
- package/dist/tools/error-codes.js +2 -2
- package/dist/tools/errors.cjs +11 -23
- package/dist/tools/errors.d.ts +4 -10
- package/dist/tools/errors.d.ts.map +1 -1
- package/dist/tools/errors.js +9 -21
- package/dist/tools/index.cjs +3 -8
- package/dist/tools/index.d.ts +2 -4
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +2 -7
- package/dist/{storage/blob/providers/index.cjs → tools/pattern-utils.cjs} +11 -9
- package/dist/tools/pattern-utils.d.ts +20 -0
- package/dist/tools/pattern-utils.d.ts.map +1 -0
- package/dist/tools/pattern-utils.js +10 -0
- package/dist/tools/schemas.cjs +14 -40
- package/dist/tools/schemas.d.ts +6 -50
- package/dist/tools/schemas.d.ts.map +1 -1
- package/dist/tools/schemas.js +11 -32
- package/dist/tools/tool-call-metadata.cjs +75 -0
- package/dist/tools/tool-call-metadata.d.ts +16 -0
- package/dist/tools/tool-call-metadata.d.ts.map +1 -0
- package/dist/tools/tool-call-metadata.js +51 -0
- package/dist/tools/tool-manager.cjs +578 -302
- package/dist/tools/tool-manager.d.ts +105 -81
- package/dist/tools/tool-manager.d.ts.map +1 -1
- package/dist/tools/tool-manager.js +578 -306
- package/dist/tools/types.d.ts +112 -13
- package/dist/tools/types.d.ts.map +1 -1
- package/dist/utils/api-key-resolver.cjs +1 -1
- package/dist/utils/api-key-resolver.js +1 -1
- package/dist/utils/env.cjs +49 -0
- package/dist/utils/env.d.ts +4 -0
- package/dist/utils/env.d.ts.map +1 -0
- package/dist/utils/env.js +24 -0
- package/dist/utils/error-conversion.d.ts +2 -2
- package/dist/utils/error-conversion.d.ts.map +1 -1
- package/dist/utils/index.cjs +3 -1
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +1 -0
- package/dist/utils/path.d.ts +2 -2
- package/dist/utils/path.d.ts.map +1 -1
- package/dist/utils/result.cjs +1 -1
- package/dist/utils/result.d.ts.map +1 -1
- package/dist/utils/schema.cjs +9 -5
- package/dist/utils/schema.d.ts +4 -2
- package/dist/utils/schema.d.ts.map +1 -1
- package/dist/utils/schema.js +9 -5
- package/dist/utils/service-initializer.cjs +58 -51
- package/dist/utils/service-initializer.d.ts +31 -9
- package/dist/utils/service-initializer.d.ts.map +1 -1
- package/dist/utils/service-initializer.js +58 -51
- package/dist/{storage/cache/providers/index.cjs → workspace/error-codes.cjs} +8 -9
- package/dist/workspace/error-codes.d.ts +5 -0
- package/dist/workspace/error-codes.d.ts.map +1 -0
- package/dist/workspace/error-codes.js +7 -0
- package/dist/{storage/blob/factory.cjs → workspace/errors.cjs} +20 -14
- package/dist/workspace/errors.d.ts +5 -0
- package/dist/workspace/errors.d.ts.map +1 -0
- package/dist/workspace/errors.js +21 -0
- package/dist/{image → workspace}/index.cjs +12 -10
- package/dist/workspace/index.d.ts +5 -0
- package/dist/workspace/index.d.ts.map +1 -0
- package/dist/workspace/index.js +9 -0
- package/dist/workspace/manager.cjs +113 -0
- package/dist/workspace/manager.d.ts +18 -0
- package/dist/workspace/manager.d.ts.map +1 -0
- package/dist/workspace/manager.js +90 -0
- package/dist/workspace/types.d.ts +14 -0
- package/dist/workspace/types.d.ts.map +1 -0
- package/package.json +7 -3
- package/dist/context/compaction/factory.cjs +0 -57
- package/dist/context/compaction/factory.d.ts +0 -17
- package/dist/context/compaction/factory.d.ts.map +0 -1
- package/dist/context/compaction/factory.js +0 -34
- package/dist/context/compaction/provider.d.ts +0 -48
- package/dist/context/compaction/provider.d.ts.map +0 -1
- package/dist/context/compaction/providers/noop-provider.d.ts +0 -24
- package/dist/context/compaction/providers/noop-provider.d.ts.map +0 -1
- package/dist/context/compaction/providers/noop-provider.js +0 -24
- package/dist/context/compaction/providers/reactive-overflow-provider.cjs +0 -76
- package/dist/context/compaction/providers/reactive-overflow-provider.d.ts +0 -51
- package/dist/context/compaction/providers/reactive-overflow-provider.d.ts.map +0 -1
- package/dist/context/compaction/providers/reactive-overflow-provider.js +0 -52
- package/dist/context/compaction/registry.cjs +0 -39
- package/dist/context/compaction/registry.d.ts +0 -19
- package/dist/context/compaction/registry.d.ts.map +0 -1
- package/dist/context/compaction/registry.js +0 -16
- package/dist/context/compaction/schemas.cjs +0 -58
- package/dist/context/compaction/schemas.d.ts +0 -69
- package/dist/context/compaction/schemas.d.ts.map +0 -1
- package/dist/context/compaction/schemas.js +0 -34
- package/dist/context/compaction/strategies/reactive-overflow.d.ts.map +0 -1
- package/dist/image/define-image.cjs +0 -146
- package/dist/image/define-image.d.ts +0 -71
- package/dist/image/define-image.d.ts.map +0 -1
- package/dist/image/define-image.js +0 -121
- package/dist/image/index.d.ts +0 -53
- package/dist/image/index.d.ts.map +0 -1
- package/dist/image/index.js +0 -7
- package/dist/image/types.d.ts +0 -246
- package/dist/image/types.d.ts.map +0 -1
- package/dist/llm/registry.cjs +0 -2075
- package/dist/llm/registry.d.ts.map +0 -1
- package/dist/llm/registry.js +0 -2025
- package/dist/llm/services/test-utils.integration.cjs +0 -237
- package/dist/llm/services/test-utils.integration.d.ts +0 -48
- package/dist/llm/services/test-utils.integration.d.ts.map +0 -1
- package/dist/llm/services/test-utils.integration.js +0 -214
- package/dist/plugins/builtins/content-policy.d.ts +0 -26
- package/dist/plugins/builtins/content-policy.d.ts.map +0 -1
- package/dist/plugins/builtins/response-sanitizer.d.ts +0 -25
- package/dist/plugins/builtins/response-sanitizer.d.ts.map +0 -1
- package/dist/plugins/error-codes.cjs +0 -43
- package/dist/plugins/error-codes.d.ts +0 -34
- package/dist/plugins/error-codes.d.ts.map +0 -1
- package/dist/plugins/error-codes.js +0 -20
- package/dist/plugins/index.cjs +0 -61
- package/dist/plugins/index.d.ts +0 -21
- package/dist/plugins/index.d.ts.map +0 -1
- package/dist/plugins/index.js +0 -30
- package/dist/plugins/loader.cjs +0 -171
- package/dist/plugins/loader.d.ts +0 -30
- package/dist/plugins/loader.d.ts.map +0 -1
- package/dist/plugins/loader.js +0 -145
- package/dist/plugins/manager.cjs +0 -473
- package/dist/plugins/manager.d.ts +0 -106
- package/dist/plugins/manager.d.ts.map +0 -1
- package/dist/plugins/manager.js +0 -450
- package/dist/plugins/registrations/builtins.cjs +0 -51
- package/dist/plugins/registrations/builtins.d.ts +0 -17
- package/dist/plugins/registrations/builtins.d.ts.map +0 -1
- package/dist/plugins/registrations/builtins.js +0 -28
- package/dist/plugins/registry.cjs +0 -63
- package/dist/plugins/registry.d.ts +0 -101
- package/dist/plugins/registry.d.ts.map +0 -1
- package/dist/plugins/registry.js +0 -39
- package/dist/plugins/schemas.cjs +0 -73
- package/dist/plugins/schemas.d.ts +0 -195
- package/dist/plugins/schemas.d.ts.map +0 -1
- package/dist/plugins/schemas.js +0 -47
- package/dist/plugins/types.d.ts.map +0 -1
- package/dist/providers/base-registry.cjs +0 -147
- package/dist/providers/base-registry.d.ts +0 -147
- package/dist/providers/base-registry.d.ts.map +0 -1
- package/dist/providers/base-registry.js +0 -123
- package/dist/providers/discovery.cjs +0 -109
- package/dist/providers/discovery.d.ts +0 -96
- package/dist/providers/discovery.d.ts.map +0 -1
- package/dist/providers/discovery.js +0 -84
- package/dist/providers/index.cjs +0 -24
- package/dist/providers/index.d.ts +0 -32
- package/dist/providers/index.d.ts.map +0 -1
- package/dist/providers/index.js +0 -2
- package/dist/resources/internal-provider.d.ts.map +0 -1
- package/dist/storage/blob/factory.d.ts +0 -37
- package/dist/storage/blob/factory.d.ts.map +0 -1
- package/dist/storage/blob/factory.js +0 -15
- package/dist/storage/blob/local-blob-store.cjs +0 -496
- package/dist/storage/blob/local-blob-store.d.ts +0 -58
- package/dist/storage/blob/local-blob-store.d.ts.map +0 -1
- package/dist/storage/blob/local-blob-store.js +0 -463
- package/dist/storage/blob/memory-blob-store.cjs +0 -326
- package/dist/storage/blob/memory-blob-store.d.ts +0 -66
- package/dist/storage/blob/memory-blob-store.d.ts.map +0 -1
- package/dist/storage/blob/memory-blob-store.js +0 -303
- package/dist/storage/blob/provider.d.ts +0 -50
- package/dist/storage/blob/provider.d.ts.map +0 -1
- package/dist/storage/blob/providers/index.d.ts +0 -8
- package/dist/storage/blob/providers/index.d.ts.map +0 -1
- package/dist/storage/blob/providers/index.js +0 -7
- package/dist/storage/blob/providers/local.cjs +0 -39
- package/dist/storage/blob/providers/local.d.ts +0 -17
- package/dist/storage/blob/providers/local.d.ts.map +0 -1
- package/dist/storage/blob/providers/local.js +0 -16
- package/dist/storage/blob/providers/memory.cjs +0 -39
- package/dist/storage/blob/providers/memory.d.ts +0 -17
- package/dist/storage/blob/providers/memory.d.ts.map +0 -1
- package/dist/storage/blob/providers/memory.js +0 -16
- package/dist/storage/blob/registry.cjs +0 -50
- package/dist/storage/blob/registry.d.ts +0 -42
- package/dist/storage/blob/registry.d.ts.map +0 -1
- package/dist/storage/blob/registry.js +0 -26
- package/dist/storage/blob/schemas.cjs +0 -52
- package/dist/storage/blob/schemas.d.ts +0 -85
- package/dist/storage/blob/schemas.d.ts.map +0 -1
- package/dist/storage/blob/schemas.js +0 -26
- package/dist/storage/cache/factory.cjs +0 -38
- package/dist/storage/cache/factory.d.ts +0 -37
- package/dist/storage/cache/factory.d.ts.map +0 -1
- package/dist/storage/cache/factory.js +0 -15
- package/dist/storage/cache/memory-cache-store.cjs +0 -107
- package/dist/storage/cache/memory-cache-store.d.ts +0 -26
- package/dist/storage/cache/memory-cache-store.d.ts.map +0 -1
- package/dist/storage/cache/memory-cache-store.js +0 -84
- package/dist/storage/cache/provider.cjs +0 -16
- package/dist/storage/cache/provider.d.ts +0 -56
- package/dist/storage/cache/provider.d.ts.map +0 -1
- package/dist/storage/cache/provider.js +0 -0
- package/dist/storage/cache/providers/index.d.ts +0 -8
- package/dist/storage/cache/providers/index.d.ts.map +0 -1
- package/dist/storage/cache/providers/index.js +0 -7
- package/dist/storage/cache/providers/memory.d.ts +0 -17
- package/dist/storage/cache/providers/memory.d.ts.map +0 -1
- package/dist/storage/cache/providers/memory.js +0 -17
- package/dist/storage/cache/providers/redis.cjs +0 -66
- package/dist/storage/cache/providers/redis.d.ts +0 -20
- package/dist/storage/cache/providers/redis.d.ts.map +0 -1
- package/dist/storage/cache/providers/redis.js +0 -33
- package/dist/storage/cache/redis-store.cjs +0 -173
- package/dist/storage/cache/redis-store.d.ts +0 -32
- package/dist/storage/cache/redis-store.d.ts.map +0 -1
- package/dist/storage/cache/redis-store.js +0 -150
- package/dist/storage/cache/registry.cjs +0 -50
- package/dist/storage/cache/registry.d.ts +0 -42
- package/dist/storage/cache/registry.d.ts.map +0 -1
- package/dist/storage/cache/registry.js +0 -26
- package/dist/storage/cache/schemas.cjs +0 -81
- package/dist/storage/cache/schemas.d.ts +0 -150
- package/dist/storage/cache/schemas.d.ts.map +0 -1
- package/dist/storage/cache/schemas.js +0 -55
- package/dist/storage/database/factory.cjs +0 -38
- package/dist/storage/database/factory.d.ts +0 -39
- package/dist/storage/database/factory.d.ts.map +0 -1
- package/dist/storage/database/factory.js +0 -15
- package/dist/storage/database/memory-database-store.cjs +0 -122
- package/dist/storage/database/memory-database-store.d.ts +0 -29
- package/dist/storage/database/memory-database-store.d.ts.map +0 -1
- package/dist/storage/database/memory-database-store.js +0 -99
- package/dist/storage/database/postgres-store.cjs +0 -342
- package/dist/storage/database/postgres-store.d.ts +0 -55
- package/dist/storage/database/postgres-store.d.ts.map +0 -1
- package/dist/storage/database/postgres-store.js +0 -319
- package/dist/storage/database/provider.cjs +0 -16
- package/dist/storage/database/provider.d.ts +0 -56
- package/dist/storage/database/provider.d.ts.map +0 -1
- package/dist/storage/database/provider.js +0 -0
- package/dist/storage/database/providers/index.d.ts +0 -9
- package/dist/storage/database/providers/index.d.ts.map +0 -1
- package/dist/storage/database/providers/index.js +0 -9
- package/dist/storage/database/providers/memory.cjs +0 -40
- package/dist/storage/database/providers/memory.d.ts +0 -16
- package/dist/storage/database/providers/memory.d.ts.map +0 -1
- package/dist/storage/database/providers/memory.js +0 -17
- package/dist/storage/database/providers/postgres.cjs +0 -62
- package/dist/storage/database/providers/postgres.d.ts +0 -19
- package/dist/storage/database/providers/postgres.d.ts.map +0 -1
- package/dist/storage/database/providers/postgres.js +0 -29
- package/dist/storage/database/providers/sqlite.cjs +0 -66
- package/dist/storage/database/providers/sqlite.d.ts +0 -20
- package/dist/storage/database/providers/sqlite.d.ts.map +0 -1
- package/dist/storage/database/providers/sqlite.js +0 -33
- package/dist/storage/database/registry.cjs +0 -50
- package/dist/storage/database/registry.d.ts +0 -42
- package/dist/storage/database/registry.d.ts.map +0 -1
- package/dist/storage/database/registry.js +0 -26
- package/dist/storage/database/schemas.cjs +0 -97
- package/dist/storage/database/schemas.d.ts +0 -226
- package/dist/storage/database/schemas.d.ts.map +0 -1
- package/dist/storage/database/schemas.js +0 -70
- package/dist/storage/database/sqlite-store.cjs +0 -270
- package/dist/storage/database/sqlite-store.d.ts +0 -33
- package/dist/storage/database/sqlite-store.d.ts.map +0 -1
- package/dist/storage/database/sqlite-store.js +0 -237
- package/dist/storage/schemas.cjs +0 -57
- package/dist/storage/schemas.d.ts +0 -347
- package/dist/storage/schemas.d.ts.map +0 -1
- package/dist/storage/schemas.js +0 -37
- package/dist/tools/bash-pattern-utils.cjs +0 -91
- package/dist/tools/bash-pattern-utils.d.ts +0 -58
- package/dist/tools/bash-pattern-utils.d.ts.map +0 -1
- package/dist/tools/bash-pattern-utils.js +0 -64
- package/dist/tools/custom-tool-registry.cjs +0 -64
- package/dist/tools/custom-tool-registry.d.ts +0 -126
- package/dist/tools/custom-tool-registry.d.ts.map +0 -1
- package/dist/tools/custom-tool-registry.js +0 -40
- package/dist/tools/custom-tool-schema-registry.cjs +0 -164
- package/dist/tools/custom-tool-schema-registry.d.ts +0 -86
- package/dist/tools/custom-tool-schema-registry.d.ts.map +0 -1
- package/dist/tools/custom-tool-schema-registry.js +0 -140
- package/dist/tools/internal-tools/constants.d.ts +0 -12
- package/dist/tools/internal-tools/constants.d.ts.map +0 -1
- package/dist/tools/internal-tools/constants.js +0 -12
- package/dist/tools/internal-tools/implementations/ask-user-tool.cjs +0 -57
- package/dist/tools/internal-tools/implementations/ask-user-tool.d.ts +0 -18
- package/dist/tools/internal-tools/implementations/ask-user-tool.d.ts.map +0 -1
- package/dist/tools/internal-tools/implementations/ask-user-tool.js +0 -34
- package/dist/tools/internal-tools/implementations/delegate-to-url-tool.cjs +0 -192
- package/dist/tools/internal-tools/implementations/delegate-to-url-tool.d.ts +0 -33
- package/dist/tools/internal-tools/implementations/delegate-to-url-tool.d.ts.map +0 -1
- package/dist/tools/internal-tools/implementations/delegate-to-url-tool.js +0 -169
- package/dist/tools/internal-tools/implementations/get-resource-tool.cjs +0 -113
- package/dist/tools/internal-tools/implementations/get-resource-tool.d.ts +0 -30
- package/dist/tools/internal-tools/implementations/get-resource-tool.d.ts.map +0 -1
- package/dist/tools/internal-tools/implementations/get-resource-tool.js +0 -90
- package/dist/tools/internal-tools/implementations/invoke-skill-tool.cjs +0 -140
- package/dist/tools/internal-tools/implementations/invoke-skill-tool.d.ts +0 -24
- package/dist/tools/internal-tools/implementations/invoke-skill-tool.d.ts.map +0 -1
- package/dist/tools/internal-tools/implementations/invoke-skill-tool.js +0 -117
- package/dist/tools/internal-tools/implementations/list-resources-tool.cjs +0 -91
- package/dist/tools/internal-tools/implementations/list-resources-tool.d.ts +0 -24
- package/dist/tools/internal-tools/implementations/list-resources-tool.d.ts.map +0 -1
- package/dist/tools/internal-tools/implementations/list-resources-tool.js +0 -68
- package/dist/tools/internal-tools/implementations/search-history-tool.cjs +0 -61
- package/dist/tools/internal-tools/implementations/search-history-tool.d.ts +0 -7
- package/dist/tools/internal-tools/implementations/search-history-tool.d.ts.map +0 -1
- package/dist/tools/internal-tools/implementations/search-history-tool.js +0 -38
- package/dist/tools/internal-tools/index.cjs +0 -26
- package/dist/tools/internal-tools/index.d.ts +0 -4
- package/dist/tools/internal-tools/index.d.ts.map +0 -1
- package/dist/tools/internal-tools/index.js +0 -3
- package/dist/tools/internal-tools/provider.cjs +0 -324
- package/dist/tools/internal-tools/provider.d.ts +0 -114
- package/dist/tools/internal-tools/provider.d.ts.map +0 -1
- package/dist/tools/internal-tools/provider.js +0 -301
- package/dist/tools/internal-tools/registry.cjs +0 -71
- package/dist/tools/internal-tools/registry.d.ts +0 -91
- package/dist/tools/internal-tools/registry.d.ts.map +0 -1
- package/dist/tools/internal-tools/registry.js +0 -47
- /package/dist/{context/compaction/provider.js → agent/agent-options.js} +0 -0
- /package/dist/{image/types.js → agent/runtime-config.js} +0 -0
- /package/dist/{image → hooks}/types.cjs +0 -0
- /package/dist/{plugins → hooks}/types.js +0 -0
- /package/dist/{plugins → workspace}/types.cjs +0 -0
- /package/dist/{storage/blob/provider.js → workspace/types.js} +0 -0
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
2
3
|
var __defProp = Object.defineProperty;
|
|
3
4
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
5
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
5
7
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
8
|
var __export = (target, all) => {
|
|
7
9
|
for (var name in all)
|
|
@@ -15,6 +17,14 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
15
17
|
}
|
|
16
18
|
return to;
|
|
17
19
|
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
+
mod
|
|
27
|
+
));
|
|
18
28
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
29
|
var session_manager_exports = {};
|
|
20
30
|
__export(session_manager_exports, {
|
|
@@ -153,7 +163,20 @@ class SessionManager {
|
|
|
153
163
|
});
|
|
154
164
|
const sessionData2 = await this.services.storageManager.getDatabase().get(sessionKey);
|
|
155
165
|
if (sessionData2?.llmOverride) {
|
|
156
|
-
|
|
166
|
+
const { resolveApiKeyForProvider } = await import("../utils/api-key-resolver.js");
|
|
167
|
+
const apiKey = resolveApiKeyForProvider(sessionData2.llmOverride.provider);
|
|
168
|
+
if (!apiKey) {
|
|
169
|
+
this.logger.warn(
|
|
170
|
+
`Skipped LLM override restore for session ${id}: missing API key for provider ${sessionData2.llmOverride.provider}`,
|
|
171
|
+
{ sessionId: id, provider: sessionData2.llmOverride.provider }
|
|
172
|
+
);
|
|
173
|
+
} else {
|
|
174
|
+
const restoredConfig = {
|
|
175
|
+
...sessionData2.llmOverride,
|
|
176
|
+
apiKey
|
|
177
|
+
};
|
|
178
|
+
this.services.stateManager.updateLLM(restoredConfig, id);
|
|
179
|
+
}
|
|
157
180
|
}
|
|
158
181
|
const session2 = new import_chat_session.ChatSession(
|
|
159
182
|
{ ...this.services, sessionManager: this },
|
|
@@ -169,11 +192,13 @@ class SessionManager {
|
|
|
169
192
|
if (activeSessionKeys.length >= this.maxSessions) {
|
|
170
193
|
throw import_errors.SessionError.maxSessionsExceeded(activeSessionKeys.length, this.maxSessions);
|
|
171
194
|
}
|
|
195
|
+
const workspace = await this.services.workspaceManager?.getWorkspace();
|
|
172
196
|
const sessionData = {
|
|
173
197
|
id,
|
|
174
198
|
createdAt: Date.now(),
|
|
175
199
|
lastActivity: Date.now(),
|
|
176
|
-
messageCount: 0
|
|
200
|
+
messageCount: 0,
|
|
201
|
+
...workspace?.id !== void 0 && { workspaceId: workspace.id }
|
|
177
202
|
};
|
|
178
203
|
try {
|
|
179
204
|
await this.services.storageManager.getDatabase().set(sessionKey, sessionData);
|
|
@@ -239,7 +264,20 @@ class SessionManager {
|
|
|
239
264
|
sessionId
|
|
240
265
|
});
|
|
241
266
|
if (sessionData.llmOverride) {
|
|
242
|
-
|
|
267
|
+
const { resolveApiKeyForProvider } = await import("../utils/api-key-resolver.js");
|
|
268
|
+
const apiKey = resolveApiKeyForProvider(sessionData.llmOverride.provider);
|
|
269
|
+
if (!apiKey) {
|
|
270
|
+
this.logger.warn(
|
|
271
|
+
`Skipped LLM override restore for session ${sessionId}: missing API key for provider ${sessionData.llmOverride.provider}`,
|
|
272
|
+
{ sessionId, provider: sessionData.llmOverride.provider }
|
|
273
|
+
);
|
|
274
|
+
} else {
|
|
275
|
+
const restoredConfig = {
|
|
276
|
+
...sessionData.llmOverride,
|
|
277
|
+
apiKey
|
|
278
|
+
};
|
|
279
|
+
this.services.stateManager.updateLLM(restoredConfig, sessionId);
|
|
280
|
+
}
|
|
243
281
|
}
|
|
244
282
|
const session = new import_chat_session.ChatSession(
|
|
245
283
|
{ ...this.services, sessionManager: this },
|
|
@@ -344,7 +382,9 @@ class SessionManager {
|
|
|
344
382
|
...sessionData.tokenUsage && { tokenUsage: sessionData.tokenUsage },
|
|
345
383
|
...sessionData.estimatedCost !== void 0 && {
|
|
346
384
|
estimatedCost: sessionData.estimatedCost
|
|
347
|
-
}
|
|
385
|
+
},
|
|
386
|
+
...sessionData.modelStats && { modelStats: sessionData.modelStats },
|
|
387
|
+
...sessionData.workspaceId && { workspaceId: sessionData.workspaceId }
|
|
348
388
|
};
|
|
349
389
|
}
|
|
350
390
|
/**
|
|
@@ -387,14 +427,22 @@ class SessionManager {
|
|
|
387
427
|
* Called after each LLM response to update session-level totals.
|
|
388
428
|
*
|
|
389
429
|
* Uses per-session locking to prevent lost updates from concurrent calls.
|
|
430
|
+
*
|
|
431
|
+
* @param sessionId The session ID
|
|
432
|
+
* @param usage Token usage to accumulate
|
|
433
|
+
* @param cost Estimated cost for this usage
|
|
434
|
+
* @param modelInfo Optional model info for per-model tracking
|
|
390
435
|
*/
|
|
391
|
-
async accumulateTokenUsage(sessionId, usage, cost) {
|
|
436
|
+
async accumulateTokenUsage(sessionId, usage, cost, modelInfo) {
|
|
392
437
|
await this.ensureInitialized();
|
|
393
438
|
const sessionKey = `session:${sessionId}`;
|
|
394
439
|
const previousLock = this.tokenUsageLocks.get(sessionKey) ?? Promise.resolve();
|
|
395
440
|
const currentLock = previousLock.then(async () => {
|
|
396
441
|
const sessionData = await this.services.storageManager.getDatabase().get(sessionKey);
|
|
397
442
|
if (!sessionData) return;
|
|
443
|
+
if (modelInfo) {
|
|
444
|
+
this.updateModelStats(sessionData, usage, cost, modelInfo);
|
|
445
|
+
}
|
|
398
446
|
if (!sessionData.tokenUsage) {
|
|
399
447
|
sessionData.tokenUsage = {
|
|
400
448
|
inputTokens: 0,
|
|
@@ -405,12 +453,7 @@ class SessionManager {
|
|
|
405
453
|
totalTokens: 0
|
|
406
454
|
};
|
|
407
455
|
}
|
|
408
|
-
sessionData.tokenUsage
|
|
409
|
-
sessionData.tokenUsage.outputTokens += usage.outputTokens ?? 0;
|
|
410
|
-
sessionData.tokenUsage.reasoningTokens += usage.reasoningTokens ?? 0;
|
|
411
|
-
sessionData.tokenUsage.cacheReadTokens += usage.cacheReadTokens ?? 0;
|
|
412
|
-
sessionData.tokenUsage.cacheWriteTokens += usage.cacheWriteTokens ?? 0;
|
|
413
|
-
sessionData.tokenUsage.totalTokens += usage.totalTokens ?? 0;
|
|
456
|
+
this.accumulateTokensInto(sessionData.tokenUsage, usage);
|
|
414
457
|
if (cost !== void 0) {
|
|
415
458
|
sessionData.estimatedCost = (sessionData.estimatedCost ?? 0) + cost;
|
|
416
459
|
}
|
|
@@ -427,6 +470,57 @@ class SessionManager {
|
|
|
427
470
|
}
|
|
428
471
|
}
|
|
429
472
|
}
|
|
473
|
+
/**
|
|
474
|
+
* Helper to accumulate token usage into a target SessionTokenUsage object.
|
|
475
|
+
* Used for both session-level and per-model token tracking.
|
|
476
|
+
*/
|
|
477
|
+
accumulateTokensInto(target, usage) {
|
|
478
|
+
target.inputTokens += usage.inputTokens ?? 0;
|
|
479
|
+
target.outputTokens += usage.outputTokens ?? 0;
|
|
480
|
+
target.reasoningTokens += usage.reasoningTokens ?? 0;
|
|
481
|
+
target.cacheReadTokens += usage.cacheReadTokens ?? 0;
|
|
482
|
+
target.cacheWriteTokens += usage.cacheWriteTokens ?? 0;
|
|
483
|
+
target.totalTokens += usage.totalTokens ?? 0;
|
|
484
|
+
}
|
|
485
|
+
/**
|
|
486
|
+
* Updates per-model statistics for a session.
|
|
487
|
+
* Finds or creates a model entry and accumulates tokens and cost.
|
|
488
|
+
*
|
|
489
|
+
* @private
|
|
490
|
+
*/
|
|
491
|
+
updateModelStats(sessionData, usage, cost, modelInfo) {
|
|
492
|
+
if (!sessionData.modelStats) {
|
|
493
|
+
sessionData.modelStats = [];
|
|
494
|
+
}
|
|
495
|
+
let modelStat = sessionData.modelStats.find(
|
|
496
|
+
(s) => s.provider === modelInfo.provider && s.model === modelInfo.model
|
|
497
|
+
);
|
|
498
|
+
if (!modelStat) {
|
|
499
|
+
modelStat = {
|
|
500
|
+
provider: modelInfo.provider,
|
|
501
|
+
model: modelInfo.model,
|
|
502
|
+
messageCount: 0,
|
|
503
|
+
tokenUsage: {
|
|
504
|
+
inputTokens: 0,
|
|
505
|
+
outputTokens: 0,
|
|
506
|
+
reasoningTokens: 0,
|
|
507
|
+
cacheReadTokens: 0,
|
|
508
|
+
cacheWriteTokens: 0,
|
|
509
|
+
totalTokens: 0
|
|
510
|
+
},
|
|
511
|
+
estimatedCost: 0,
|
|
512
|
+
firstUsedAt: Date.now(),
|
|
513
|
+
lastUsedAt: Date.now()
|
|
514
|
+
};
|
|
515
|
+
sessionData.modelStats.push(modelStat);
|
|
516
|
+
}
|
|
517
|
+
this.accumulateTokensInto(modelStat.tokenUsage, usage);
|
|
518
|
+
if (cost !== void 0) {
|
|
519
|
+
modelStat.estimatedCost += cost;
|
|
520
|
+
}
|
|
521
|
+
modelStat.messageCount += 1;
|
|
522
|
+
modelStat.lastUsedAt = Date.now();
|
|
523
|
+
}
|
|
430
524
|
/**
|
|
431
525
|
* Sets the human-friendly title for a session.
|
|
432
526
|
* Title is stored in session metadata and cached with TTL.
|
|
@@ -534,7 +628,8 @@ class SessionManager {
|
|
|
534
628
|
const sessionKey = `session:${sessionId}`;
|
|
535
629
|
const sessionData = await this.services.storageManager.getDatabase().get(sessionKey);
|
|
536
630
|
if (sessionData) {
|
|
537
|
-
|
|
631
|
+
const { apiKey: _apiKey, ...configWithoutApiKey } = newLLMConfig;
|
|
632
|
+
sessionData.llmOverride = configWithoutApiKey;
|
|
538
633
|
await this.services.storageManager.getDatabase().set(sessionKey, sessionData);
|
|
539
634
|
await this.services.storageManager.getCache().set(sessionKey, sessionData, this.sessionTTL / 1e3);
|
|
540
635
|
}
|
|
@@ -2,22 +2,35 @@ 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 {
|
|
5
|
+
import type { Logger } from '../logger/v2/types.js';
|
|
6
6
|
import type { AgentStateManager } from '../agent/state-manager.js';
|
|
7
7
|
import type { ValidatedLLMConfig } from '../llm/schemas.js';
|
|
8
8
|
import type { StorageManager } from '../storage/index.js';
|
|
9
|
-
import type {
|
|
9
|
+
import type { HookManager } from '../hooks/manager.js';
|
|
10
10
|
import type { TokenUsage } from '../llm/types.js';
|
|
11
|
+
import type { CompactionStrategy } from '../context/compaction/types.js';
|
|
11
12
|
export type SessionLoggerFactory = (options: {
|
|
12
|
-
baseLogger:
|
|
13
|
+
baseLogger: Logger;
|
|
13
14
|
agentId: string;
|
|
14
15
|
sessionId: string;
|
|
15
|
-
}) =>
|
|
16
|
+
}) => Logger;
|
|
16
17
|
/**
|
|
17
18
|
* Session-level token usage totals (accumulated across all messages).
|
|
18
19
|
* All fields required since we track cumulative totals (defaulting to 0).
|
|
19
20
|
*/
|
|
20
21
|
export type SessionTokenUsage = Required<TokenUsage>;
|
|
22
|
+
/**
|
|
23
|
+
* Per-model statistics for tracking usage across multiple models within a session.
|
|
24
|
+
*/
|
|
25
|
+
export interface ModelStatistics {
|
|
26
|
+
provider: string;
|
|
27
|
+
model: string;
|
|
28
|
+
messageCount: number;
|
|
29
|
+
tokenUsage: SessionTokenUsage;
|
|
30
|
+
estimatedCost: number;
|
|
31
|
+
firstUsedAt: number;
|
|
32
|
+
lastUsedAt: number;
|
|
33
|
+
}
|
|
21
34
|
export interface SessionMetadata {
|
|
22
35
|
createdAt: number;
|
|
23
36
|
lastActivity: number;
|
|
@@ -25,6 +38,8 @@ export interface SessionMetadata {
|
|
|
25
38
|
title?: string;
|
|
26
39
|
tokenUsage?: SessionTokenUsage;
|
|
27
40
|
estimatedCost?: number;
|
|
41
|
+
modelStats?: ModelStatistics[];
|
|
42
|
+
workspaceId?: string;
|
|
28
43
|
}
|
|
29
44
|
export interface SessionManagerConfig {
|
|
30
45
|
maxSessions?: number;
|
|
@@ -32,6 +47,7 @@ export interface SessionManagerConfig {
|
|
|
32
47
|
/** Host hook for creating a session-scoped logger (e.g. file logger) */
|
|
33
48
|
sessionLoggerFactory?: SessionLoggerFactory;
|
|
34
49
|
}
|
|
50
|
+
type PersistedLLMConfig = Omit<ValidatedLLMConfig, 'apiKey'>;
|
|
35
51
|
export interface SessionData {
|
|
36
52
|
id: string;
|
|
37
53
|
userId?: string;
|
|
@@ -41,8 +57,10 @@ export interface SessionData {
|
|
|
41
57
|
metadata?: Record<string, any>;
|
|
42
58
|
tokenUsage?: SessionTokenUsage;
|
|
43
59
|
estimatedCost?: number;
|
|
60
|
+
modelStats?: ModelStatistics[];
|
|
61
|
+
workspaceId?: string;
|
|
44
62
|
/** Persisted LLM config override for this session */
|
|
45
|
-
llmOverride?:
|
|
63
|
+
llmOverride?: PersistedLLMConfig;
|
|
46
64
|
}
|
|
47
65
|
/**
|
|
48
66
|
* Manages multiple chat sessions within a Dexto agent.
|
|
@@ -79,9 +97,11 @@ export declare class SessionManager {
|
|
|
79
97
|
agentEventBus: AgentEventBus;
|
|
80
98
|
storageManager: StorageManager;
|
|
81
99
|
resourceManager: import('../resources/index.js').ResourceManager;
|
|
82
|
-
|
|
100
|
+
hookManager: HookManager;
|
|
83
101
|
mcpManager: import('../mcp/manager.js').MCPManager;
|
|
84
|
-
|
|
102
|
+
compactionStrategy: CompactionStrategy | null;
|
|
103
|
+
workspaceManager?: import('../workspace/manager.js').WorkspaceManager;
|
|
104
|
+
}, config: SessionManagerConfig | undefined, logger: Logger);
|
|
85
105
|
/**
|
|
86
106
|
* Initialize the SessionManager with persistent storage.
|
|
87
107
|
* This must be called before using any session operations.
|
|
@@ -168,8 +188,28 @@ export declare class SessionManager {
|
|
|
168
188
|
* Called after each LLM response to update session-level totals.
|
|
169
189
|
*
|
|
170
190
|
* Uses per-session locking to prevent lost updates from concurrent calls.
|
|
191
|
+
*
|
|
192
|
+
* @param sessionId The session ID
|
|
193
|
+
* @param usage Token usage to accumulate
|
|
194
|
+
* @param cost Estimated cost for this usage
|
|
195
|
+
* @param modelInfo Optional model info for per-model tracking
|
|
196
|
+
*/
|
|
197
|
+
accumulateTokenUsage(sessionId: string, usage: TokenUsage, cost?: number, modelInfo?: {
|
|
198
|
+
provider: string;
|
|
199
|
+
model: string;
|
|
200
|
+
}): Promise<void>;
|
|
201
|
+
/**
|
|
202
|
+
* Helper to accumulate token usage into a target SessionTokenUsage object.
|
|
203
|
+
* Used for both session-level and per-model token tracking.
|
|
204
|
+
*/
|
|
205
|
+
private accumulateTokensInto;
|
|
206
|
+
/**
|
|
207
|
+
* Updates per-model statistics for a session.
|
|
208
|
+
* Finds or creates a model entry and accumulates tokens and cost.
|
|
209
|
+
*
|
|
210
|
+
* @private
|
|
171
211
|
*/
|
|
172
|
-
|
|
212
|
+
private updateModelStats;
|
|
173
213
|
/**
|
|
174
214
|
* Sets the human-friendly title for a session.
|
|
175
215
|
* Title is stored in session metadata and cached with TTL.
|
|
@@ -227,4 +267,5 @@ export declare class SessionManager {
|
|
|
227
267
|
*/
|
|
228
268
|
cleanup(): Promise<void>;
|
|
229
269
|
}
|
|
270
|
+
export {};
|
|
230
271
|
//# sourceMappingURL=session-manager.d.ts.map
|
|
@@ -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;AACnD,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"session-manager.d.ts","sourceRoot":"","sources":["../../src/session/session-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -131,7 +131,20 @@ class SessionManager {
|
|
|
131
131
|
});
|
|
132
132
|
const sessionData2 = await this.services.storageManager.getDatabase().get(sessionKey);
|
|
133
133
|
if (sessionData2?.llmOverride) {
|
|
134
|
-
|
|
134
|
+
const { resolveApiKeyForProvider } = await import("../utils/api-key-resolver.js");
|
|
135
|
+
const apiKey = resolveApiKeyForProvider(sessionData2.llmOverride.provider);
|
|
136
|
+
if (!apiKey) {
|
|
137
|
+
this.logger.warn(
|
|
138
|
+
`Skipped LLM override restore for session ${id}: missing API key for provider ${sessionData2.llmOverride.provider}`,
|
|
139
|
+
{ sessionId: id, provider: sessionData2.llmOverride.provider }
|
|
140
|
+
);
|
|
141
|
+
} else {
|
|
142
|
+
const restoredConfig = {
|
|
143
|
+
...sessionData2.llmOverride,
|
|
144
|
+
apiKey
|
|
145
|
+
};
|
|
146
|
+
this.services.stateManager.updateLLM(restoredConfig, id);
|
|
147
|
+
}
|
|
135
148
|
}
|
|
136
149
|
const session2 = new ChatSession(
|
|
137
150
|
{ ...this.services, sessionManager: this },
|
|
@@ -147,11 +160,13 @@ class SessionManager {
|
|
|
147
160
|
if (activeSessionKeys.length >= this.maxSessions) {
|
|
148
161
|
throw SessionError.maxSessionsExceeded(activeSessionKeys.length, this.maxSessions);
|
|
149
162
|
}
|
|
163
|
+
const workspace = await this.services.workspaceManager?.getWorkspace();
|
|
150
164
|
const sessionData = {
|
|
151
165
|
id,
|
|
152
166
|
createdAt: Date.now(),
|
|
153
167
|
lastActivity: Date.now(),
|
|
154
|
-
messageCount: 0
|
|
168
|
+
messageCount: 0,
|
|
169
|
+
...workspace?.id !== void 0 && { workspaceId: workspace.id }
|
|
155
170
|
};
|
|
156
171
|
try {
|
|
157
172
|
await this.services.storageManager.getDatabase().set(sessionKey, sessionData);
|
|
@@ -217,7 +232,20 @@ class SessionManager {
|
|
|
217
232
|
sessionId
|
|
218
233
|
});
|
|
219
234
|
if (sessionData.llmOverride) {
|
|
220
|
-
|
|
235
|
+
const { resolveApiKeyForProvider } = await import("../utils/api-key-resolver.js");
|
|
236
|
+
const apiKey = resolveApiKeyForProvider(sessionData.llmOverride.provider);
|
|
237
|
+
if (!apiKey) {
|
|
238
|
+
this.logger.warn(
|
|
239
|
+
`Skipped LLM override restore for session ${sessionId}: missing API key for provider ${sessionData.llmOverride.provider}`,
|
|
240
|
+
{ sessionId, provider: sessionData.llmOverride.provider }
|
|
241
|
+
);
|
|
242
|
+
} else {
|
|
243
|
+
const restoredConfig = {
|
|
244
|
+
...sessionData.llmOverride,
|
|
245
|
+
apiKey
|
|
246
|
+
};
|
|
247
|
+
this.services.stateManager.updateLLM(restoredConfig, sessionId);
|
|
248
|
+
}
|
|
221
249
|
}
|
|
222
250
|
const session = new ChatSession(
|
|
223
251
|
{ ...this.services, sessionManager: this },
|
|
@@ -322,7 +350,9 @@ class SessionManager {
|
|
|
322
350
|
...sessionData.tokenUsage && { tokenUsage: sessionData.tokenUsage },
|
|
323
351
|
...sessionData.estimatedCost !== void 0 && {
|
|
324
352
|
estimatedCost: sessionData.estimatedCost
|
|
325
|
-
}
|
|
353
|
+
},
|
|
354
|
+
...sessionData.modelStats && { modelStats: sessionData.modelStats },
|
|
355
|
+
...sessionData.workspaceId && { workspaceId: sessionData.workspaceId }
|
|
326
356
|
};
|
|
327
357
|
}
|
|
328
358
|
/**
|
|
@@ -365,14 +395,22 @@ class SessionManager {
|
|
|
365
395
|
* Called after each LLM response to update session-level totals.
|
|
366
396
|
*
|
|
367
397
|
* Uses per-session locking to prevent lost updates from concurrent calls.
|
|
398
|
+
*
|
|
399
|
+
* @param sessionId The session ID
|
|
400
|
+
* @param usage Token usage to accumulate
|
|
401
|
+
* @param cost Estimated cost for this usage
|
|
402
|
+
* @param modelInfo Optional model info for per-model tracking
|
|
368
403
|
*/
|
|
369
|
-
async accumulateTokenUsage(sessionId, usage, cost) {
|
|
404
|
+
async accumulateTokenUsage(sessionId, usage, cost, modelInfo) {
|
|
370
405
|
await this.ensureInitialized();
|
|
371
406
|
const sessionKey = `session:${sessionId}`;
|
|
372
407
|
const previousLock = this.tokenUsageLocks.get(sessionKey) ?? Promise.resolve();
|
|
373
408
|
const currentLock = previousLock.then(async () => {
|
|
374
409
|
const sessionData = await this.services.storageManager.getDatabase().get(sessionKey);
|
|
375
410
|
if (!sessionData) return;
|
|
411
|
+
if (modelInfo) {
|
|
412
|
+
this.updateModelStats(sessionData, usage, cost, modelInfo);
|
|
413
|
+
}
|
|
376
414
|
if (!sessionData.tokenUsage) {
|
|
377
415
|
sessionData.tokenUsage = {
|
|
378
416
|
inputTokens: 0,
|
|
@@ -383,12 +421,7 @@ class SessionManager {
|
|
|
383
421
|
totalTokens: 0
|
|
384
422
|
};
|
|
385
423
|
}
|
|
386
|
-
sessionData.tokenUsage
|
|
387
|
-
sessionData.tokenUsage.outputTokens += usage.outputTokens ?? 0;
|
|
388
|
-
sessionData.tokenUsage.reasoningTokens += usage.reasoningTokens ?? 0;
|
|
389
|
-
sessionData.tokenUsage.cacheReadTokens += usage.cacheReadTokens ?? 0;
|
|
390
|
-
sessionData.tokenUsage.cacheWriteTokens += usage.cacheWriteTokens ?? 0;
|
|
391
|
-
sessionData.tokenUsage.totalTokens += usage.totalTokens ?? 0;
|
|
424
|
+
this.accumulateTokensInto(sessionData.tokenUsage, usage);
|
|
392
425
|
if (cost !== void 0) {
|
|
393
426
|
sessionData.estimatedCost = (sessionData.estimatedCost ?? 0) + cost;
|
|
394
427
|
}
|
|
@@ -405,6 +438,57 @@ class SessionManager {
|
|
|
405
438
|
}
|
|
406
439
|
}
|
|
407
440
|
}
|
|
441
|
+
/**
|
|
442
|
+
* Helper to accumulate token usage into a target SessionTokenUsage object.
|
|
443
|
+
* Used for both session-level and per-model token tracking.
|
|
444
|
+
*/
|
|
445
|
+
accumulateTokensInto(target, usage) {
|
|
446
|
+
target.inputTokens += usage.inputTokens ?? 0;
|
|
447
|
+
target.outputTokens += usage.outputTokens ?? 0;
|
|
448
|
+
target.reasoningTokens += usage.reasoningTokens ?? 0;
|
|
449
|
+
target.cacheReadTokens += usage.cacheReadTokens ?? 0;
|
|
450
|
+
target.cacheWriteTokens += usage.cacheWriteTokens ?? 0;
|
|
451
|
+
target.totalTokens += usage.totalTokens ?? 0;
|
|
452
|
+
}
|
|
453
|
+
/**
|
|
454
|
+
* Updates per-model statistics for a session.
|
|
455
|
+
* Finds or creates a model entry and accumulates tokens and cost.
|
|
456
|
+
*
|
|
457
|
+
* @private
|
|
458
|
+
*/
|
|
459
|
+
updateModelStats(sessionData, usage, cost, modelInfo) {
|
|
460
|
+
if (!sessionData.modelStats) {
|
|
461
|
+
sessionData.modelStats = [];
|
|
462
|
+
}
|
|
463
|
+
let modelStat = sessionData.modelStats.find(
|
|
464
|
+
(s) => s.provider === modelInfo.provider && s.model === modelInfo.model
|
|
465
|
+
);
|
|
466
|
+
if (!modelStat) {
|
|
467
|
+
modelStat = {
|
|
468
|
+
provider: modelInfo.provider,
|
|
469
|
+
model: modelInfo.model,
|
|
470
|
+
messageCount: 0,
|
|
471
|
+
tokenUsage: {
|
|
472
|
+
inputTokens: 0,
|
|
473
|
+
outputTokens: 0,
|
|
474
|
+
reasoningTokens: 0,
|
|
475
|
+
cacheReadTokens: 0,
|
|
476
|
+
cacheWriteTokens: 0,
|
|
477
|
+
totalTokens: 0
|
|
478
|
+
},
|
|
479
|
+
estimatedCost: 0,
|
|
480
|
+
firstUsedAt: Date.now(),
|
|
481
|
+
lastUsedAt: Date.now()
|
|
482
|
+
};
|
|
483
|
+
sessionData.modelStats.push(modelStat);
|
|
484
|
+
}
|
|
485
|
+
this.accumulateTokensInto(modelStat.tokenUsage, usage);
|
|
486
|
+
if (cost !== void 0) {
|
|
487
|
+
modelStat.estimatedCost += cost;
|
|
488
|
+
}
|
|
489
|
+
modelStat.messageCount += 1;
|
|
490
|
+
modelStat.lastUsedAt = Date.now();
|
|
491
|
+
}
|
|
408
492
|
/**
|
|
409
493
|
* Sets the human-friendly title for a session.
|
|
410
494
|
* Title is stored in session metadata and cached with TTL.
|
|
@@ -512,7 +596,8 @@ class SessionManager {
|
|
|
512
596
|
const sessionKey = `session:${sessionId}`;
|
|
513
597
|
const sessionData = await this.services.storageManager.getDatabase().get(sessionKey);
|
|
514
598
|
if (sessionData) {
|
|
515
|
-
|
|
599
|
+
const { apiKey: _apiKey, ...configWithoutApiKey } = newLLMConfig;
|
|
600
|
+
sessionData.llmOverride = configWithoutApiKey;
|
|
516
601
|
await this.services.storageManager.getDatabase().set(sessionKey, sessionData);
|
|
517
602
|
await this.services.storageManager.getCache().set(sessionKey, sessionData, this.sessionTTL / 1e3);
|
|
518
603
|
}
|
|
@@ -22,8 +22,8 @@ __export(title_generator_exports, {
|
|
|
22
22
|
generateSessionTitle: () => generateSessionTitle
|
|
23
23
|
});
|
|
24
24
|
module.exports = __toCommonJS(title_generator_exports);
|
|
25
|
-
var import_factory = require("../llm/services/factory.
|
|
26
|
-
var import_events = require("../events/index.
|
|
25
|
+
var import_factory = require("../llm/services/factory.js");
|
|
26
|
+
var import_events = require("../events/index.js");
|
|
27
27
|
var import_memory = require("./history/memory.js");
|
|
28
28
|
async function generateSessionTitle(config, toolManager, systemPromptManager, resourceManager, userText, logger, opts = {}) {
|
|
29
29
|
const timeoutMs = opts.timeoutMs;
|
|
@@ -2,7 +2,7 @@ import type { ValidatedLLMConfig } from '../llm/schemas.js';
|
|
|
2
2
|
import type { ToolManager } from '../tools/tool-manager.js';
|
|
3
3
|
import type { SystemPromptManager } from '../systemPrompt/manager.js';
|
|
4
4
|
import type { ResourceManager } from '../resources/index.js';
|
|
5
|
-
import type {
|
|
5
|
+
import type { Logger } from '../logger/v2/types.js';
|
|
6
6
|
export interface GenerateSessionTitleResult {
|
|
7
7
|
title?: string;
|
|
8
8
|
error?: string;
|
|
@@ -12,7 +12,7 @@ export interface GenerateSessionTitleResult {
|
|
|
12
12
|
* Generate a concise title for a chat based on the first user message.
|
|
13
13
|
* Runs a lightweight, isolated LLM completion that does not touch real history.
|
|
14
14
|
*/
|
|
15
|
-
export declare function generateSessionTitle(config: ValidatedLLMConfig, toolManager: ToolManager, systemPromptManager: SystemPromptManager, resourceManager: ResourceManager, userText: string, logger:
|
|
15
|
+
export declare function generateSessionTitle(config: ValidatedLLMConfig, toolManager: ToolManager, systemPromptManager: SystemPromptManager, resourceManager: ResourceManager, userText: string, logger: Logger, opts?: {
|
|
16
16
|
timeoutMs?: number;
|
|
17
17
|
}): Promise<GenerateSessionTitleResult>;
|
|
18
18
|
/**
|
|
@@ -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,
|
|
1
|
+
{"version":3,"file":"title-generator.d.ts","sourceRoot":"","sources":["../../src/session/title-generator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAKpD,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,WAAW,EAAE,WAAW,EACxB,mBAAmB,EAAE,mBAAmB,EACxC,eAAe,EAAE,eAAe,EAChC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,IAAI,GAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAO,GAClC,OAAO,CAAC,0BAA0B,CAAC,CAmDrC;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CA8BzE"}
|
package/dist/session/types.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/session/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAElD,MAAM,WAAW,aAAa;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/session/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAElD,MAAM,WAAW,aAAa;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,IAAI,CAAC,EAAE,SAAS,GAAG,YAAY,CAAC;CACnC;AAED,MAAM,WAAW,gBAAgB;IAC7B,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,eAAe,EAAE,WAAW,EAAE,CAAC;IAC/B,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;CACxB"}
|
|
@@ -3,10 +3,6 @@ var __defProp = Object.defineProperty;
|
|
|
3
3
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
4
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
5
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
-
var __export = (target, all) => {
|
|
7
|
-
for (var name in all)
|
|
8
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
-
};
|
|
10
6
|
var __copyProps = (to, from, except, desc) => {
|
|
11
7
|
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
8
|
for (let key of __getOwnPropNames(from))
|
|
@@ -17,40 +13,4 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
17
13
|
};
|
|
18
14
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
15
|
var blob_exports = {};
|
|
20
|
-
__export(blob_exports, {
|
|
21
|
-
BLOB_STORE_TYPES: () => import_schemas.BLOB_STORE_TYPES,
|
|
22
|
-
BlobStoreConfigSchema: () => import_schemas.BlobStoreConfigSchema,
|
|
23
|
-
BlobStoreRegistry: () => import_registry2.BlobStoreRegistry,
|
|
24
|
-
InMemoryBlobStore: () => import_memory_blob_store.InMemoryBlobStore,
|
|
25
|
-
InMemoryBlobStoreSchema: () => import_schemas.InMemoryBlobStoreSchema,
|
|
26
|
-
LocalBlobStore: () => import_local_blob_store.LocalBlobStore,
|
|
27
|
-
LocalBlobStoreSchema: () => import_schemas.LocalBlobStoreSchema,
|
|
28
|
-
blobStoreRegistry: () => import_registry2.blobStoreRegistry,
|
|
29
|
-
createBlobStore: () => import_factory.createBlobStore
|
|
30
|
-
});
|
|
31
16
|
module.exports = __toCommonJS(blob_exports);
|
|
32
|
-
var import_registry = require("./registry.js");
|
|
33
|
-
var import_providers = require("./providers/index.js");
|
|
34
|
-
var import_factory = require("./factory.js");
|
|
35
|
-
var import_registry2 = require("./registry.js");
|
|
36
|
-
var import_schemas = require("./schemas.js");
|
|
37
|
-
var import_local_blob_store = require("./local-blob-store.js");
|
|
38
|
-
var import_memory_blob_store = require("./memory-blob-store.js");
|
|
39
|
-
if (!import_registry.blobStoreRegistry.has("local")) {
|
|
40
|
-
import_registry.blobStoreRegistry.register(import_providers.localBlobStoreProvider);
|
|
41
|
-
}
|
|
42
|
-
if (!import_registry.blobStoreRegistry.has("in-memory")) {
|
|
43
|
-
import_registry.blobStoreRegistry.register(import_providers.inMemoryBlobStoreProvider);
|
|
44
|
-
}
|
|
45
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
46
|
-
0 && (module.exports = {
|
|
47
|
-
BLOB_STORE_TYPES,
|
|
48
|
-
BlobStoreConfigSchema,
|
|
49
|
-
BlobStoreRegistry,
|
|
50
|
-
InMemoryBlobStore,
|
|
51
|
-
InMemoryBlobStoreSchema,
|
|
52
|
-
LocalBlobStore,
|
|
53
|
-
LocalBlobStoreSchema,
|
|
54
|
-
blobStoreRegistry,
|
|
55
|
-
createBlobStore
|
|
56
|
-
});
|
|
@@ -1,45 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
*
|
|
4
|
-
* This module provides a flexible blob storage system with support for
|
|
5
|
-
* multiple backends through a provider pattern.
|
|
6
|
-
*
|
|
7
|
-
* ## Built-in Providers
|
|
8
|
-
* - `local`: Store blobs on the local filesystem
|
|
9
|
-
* - `in-memory`: Store blobs in RAM (for testing/development)
|
|
10
|
-
*
|
|
11
|
-
* ## Custom Providers
|
|
12
|
-
* Custom providers (e.g., S3, Azure, Supabase) can be registered at the
|
|
13
|
-
* CLI/server layer before configuration loading.
|
|
14
|
-
*
|
|
15
|
-
* ## Usage
|
|
16
|
-
*
|
|
17
|
-
* ### Using built-in providers
|
|
18
|
-
* ```typescript
|
|
19
|
-
* import { createBlobStore } from '@dexto/core';
|
|
20
|
-
*
|
|
21
|
-
* const blob = createBlobStore({ type: 'local', storePath: '/tmp' }, logger);
|
|
22
|
-
* ```
|
|
23
|
-
*
|
|
24
|
-
* ### Registering custom providers
|
|
25
|
-
* ```typescript
|
|
26
|
-
* import { blobStoreRegistry, type BlobStoreProvider } from '@dexto/core';
|
|
27
|
-
*
|
|
28
|
-
* const s3Provider: BlobStoreProvider<'s3', S3Config> = {
|
|
29
|
-
* type: 's3',
|
|
30
|
-
* configSchema: S3ConfigSchema,
|
|
31
|
-
* create: (config, logger) => new S3BlobStore(config, logger),
|
|
32
|
-
* };
|
|
33
|
-
*
|
|
34
|
-
* blobStoreRegistry.register(s3Provider);
|
|
35
|
-
* const blob = createBlobStore({ type: 's3', bucket: 'my-bucket' }, logger);
|
|
36
|
-
* ```
|
|
37
|
-
*/
|
|
38
|
-
export { createBlobStore } from './factory.js';
|
|
39
|
-
export { blobStoreRegistry, BlobStoreRegistry } from './registry.js';
|
|
40
|
-
export type { BlobStoreProvider } from './provider.js';
|
|
41
|
-
export type { BlobStore, BlobInput, BlobMetadata, BlobReference, BlobData, BlobStats, StoredBlobMetadata, } from './types.js';
|
|
42
|
-
export { BLOB_STORE_TYPES, BlobStoreConfigSchema, InMemoryBlobStoreSchema, LocalBlobStoreSchema, type BlobStoreType, type BlobStoreConfig, type InMemoryBlobStoreConfig, type LocalBlobStoreConfig, } from './schemas.js';
|
|
43
|
-
export { LocalBlobStore } from './local-blob-store.js';
|
|
44
|
-
export { InMemoryBlobStore } from './memory-blob-store.js';
|
|
1
|
+
export type { BlobStore } from './types.js';
|
|
2
|
+
export type { BlobInput, BlobMetadata, StoredBlobMetadata, BlobReference, BlobData, BlobStats, } from './types.js';
|
|
45
3
|
//# sourceMappingURL=index.d.ts.map
|