@dexto/core 1.2.3 → 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
|
@@ -2,7 +2,7 @@ import "../chunk-C6A6W6XS.js";
|
|
|
2
2
|
import { createLLMService } from "../llm/services/factory.js";
|
|
3
3
|
import { SessionEventBus } from "../events/index.js";
|
|
4
4
|
import { MemoryHistoryProvider } from "./history/memory.js";
|
|
5
|
-
async function generateSessionTitle(config, router, toolManager, systemPromptManager, resourceManager, userText, opts = {}) {
|
|
5
|
+
async function generateSessionTitle(config, router, toolManager, systemPromptManager, resourceManager, userText, logger, opts = {}) {
|
|
6
6
|
const timeoutMs = opts.timeoutMs;
|
|
7
7
|
const controller = timeoutMs !== void 0 ? new AbortController() : void 0;
|
|
8
8
|
let timer;
|
|
@@ -20,7 +20,8 @@ async function generateSessionTitle(config, router, toolManager, systemPromptMan
|
|
|
20
20
|
history,
|
|
21
21
|
bus,
|
|
22
22
|
`titlegen-${Math.random().toString(36).slice(2)}`,
|
|
23
|
-
resourceManager
|
|
23
|
+
resourceManager,
|
|
24
|
+
logger
|
|
24
25
|
);
|
|
25
26
|
const instruction = [
|
|
26
27
|
"Generate a short conversation title from the following user message.",
|
|
@@ -22,26 +22,17 @@ __export(factory_exports, {
|
|
|
22
22
|
});
|
|
23
23
|
module.exports = __toCommonJS(factory_exports);
|
|
24
24
|
var import_local_blob_store = require("./local-blob-store.js");
|
|
25
|
-
var
|
|
26
|
-
function createBlobStore(config,
|
|
25
|
+
var import_memory_blob_store = require("./memory-blob-store.js");
|
|
26
|
+
function createBlobStore(config, logger) {
|
|
27
27
|
switch (config.type) {
|
|
28
|
-
case "local":
|
|
29
|
-
import_logger.logger.info("Using local file-based blob store");
|
|
30
|
-
return new import_local_blob_store.LocalBlobStore(config, agentId);
|
|
31
28
|
case "in-memory":
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
);
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
maxTotalSize: config.maxTotalSize,
|
|
40
|
-
cleanupAfterDays: 30
|
|
41
|
-
// Default for in-memory fallback
|
|
42
|
-
};
|
|
43
|
-
return new import_local_blob_store.LocalBlobStore(localConfig, agentId);
|
|
44
|
-
}
|
|
29
|
+
logger.info("Using in-memory blob store");
|
|
30
|
+
return new import_memory_blob_store.InMemoryBlobStore(config, logger);
|
|
31
|
+
case "local":
|
|
32
|
+
logger.info("Using local file-based blob store");
|
|
33
|
+
return new import_local_blob_store.LocalBlobStore(config, logger);
|
|
34
|
+
default:
|
|
35
|
+
throw new Error(`Unknown blob store type: ${config.type}`);
|
|
45
36
|
}
|
|
46
37
|
}
|
|
47
38
|
// Annotate the CommonJS export names for ESM import in node:
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import type { BlobStore } from './types.js';
|
|
2
|
-
import type { BlobStoreConfig } from '
|
|
2
|
+
import type { BlobStoreConfig } from './schemas.js';
|
|
3
|
+
import type { IDextoLogger } from '../../logger/v2/types.js';
|
|
3
4
|
/**
|
|
4
5
|
* Create a blob store based on configuration.
|
|
5
|
-
*
|
|
6
|
+
* Blob paths are provided via CLI enrichment layer for local storage.
|
|
6
7
|
* @param config Blob store configuration
|
|
7
|
-
* @param
|
|
8
|
+
* @param logger Logger instance for logging
|
|
8
9
|
*/
|
|
9
|
-
export declare function createBlobStore(config: BlobStoreConfig,
|
|
10
|
+
export declare function createBlobStore(config: BlobStoreConfig, logger: IDextoLogger): BlobStore;
|
|
10
11
|
//# sourceMappingURL=factory.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../../src/storage/blob/factory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,KAAK,EAAE,eAAe,
|
|
1
|
+
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../../src/storage/blob/factory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAGpD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAE7D;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,YAAY,GAAG,SAAS,CAaxF"}
|
|
@@ -1,25 +1,16 @@
|
|
|
1
1
|
import "../../chunk-C6A6W6XS.js";
|
|
2
2
|
import { LocalBlobStore } from "./local-blob-store.js";
|
|
3
|
-
import {
|
|
4
|
-
function createBlobStore(config,
|
|
3
|
+
import { InMemoryBlobStore } from "./memory-blob-store.js";
|
|
4
|
+
function createBlobStore(config, logger) {
|
|
5
5
|
switch (config.type) {
|
|
6
|
+
case "in-memory":
|
|
7
|
+
logger.info("Using in-memory blob store");
|
|
8
|
+
return new InMemoryBlobStore(config, logger);
|
|
6
9
|
case "local":
|
|
7
10
|
logger.info("Using local file-based blob store");
|
|
8
|
-
return new LocalBlobStore(config,
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
logger.info(
|
|
12
|
-
"In-memory blob store not implemented, defaulting to local file-based storage"
|
|
13
|
-
);
|
|
14
|
-
const localConfig = {
|
|
15
|
-
type: "local",
|
|
16
|
-
maxBlobSize: config.maxBlobSize,
|
|
17
|
-
maxTotalSize: config.maxTotalSize,
|
|
18
|
-
cleanupAfterDays: 30
|
|
19
|
-
// Default for in-memory fallback
|
|
20
|
-
};
|
|
21
|
-
return new LocalBlobStore(localConfig, agentId);
|
|
22
|
-
}
|
|
11
|
+
return new LocalBlobStore(config, logger);
|
|
12
|
+
default:
|
|
13
|
+
throw new Error(`Unknown blob store type: ${config.type}`);
|
|
23
14
|
}
|
|
24
15
|
}
|
|
25
16
|
export {
|
|
@@ -35,8 +35,7 @@ var import_fs = require("fs");
|
|
|
35
35
|
var import_path = __toESM(require("path"), 1);
|
|
36
36
|
var import_crypto = require("crypto");
|
|
37
37
|
var import_url = require("url");
|
|
38
|
-
var
|
|
39
|
-
var import_path2 = require("../../utils/path.js");
|
|
38
|
+
var import_types = require("../../logger/v2/types.js");
|
|
40
39
|
var import_errors = require("../errors.js");
|
|
41
40
|
class LocalBlobStore {
|
|
42
41
|
config;
|
|
@@ -45,27 +44,13 @@ class LocalBlobStore {
|
|
|
45
44
|
statsCache = null;
|
|
46
45
|
statsCachePromise = null;
|
|
47
46
|
lastStatsRefresh = 0;
|
|
48
|
-
|
|
47
|
+
logger;
|
|
49
48
|
static STATS_REFRESH_INTERVAL_MS = 6e4;
|
|
50
49
|
// 1 minute
|
|
51
|
-
constructor(config,
|
|
50
|
+
constructor(config, logger) {
|
|
52
51
|
this.config = config;
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
if (!trimmed) {
|
|
56
|
-
throw import_errors.StorageError.blobInvalidConfig("agentId cannot be empty or whitespace-only");
|
|
57
|
-
}
|
|
58
|
-
if (!/^[a-zA-Z0-9_-]+$/.test(trimmed)) {
|
|
59
|
-
throw import_errors.StorageError.blobInvalidConfig(
|
|
60
|
-
"agentId must contain only alphanumeric characters, hyphens, and underscores"
|
|
61
|
-
);
|
|
62
|
-
}
|
|
63
|
-
this.agentId = trimmed;
|
|
64
|
-
} else {
|
|
65
|
-
this.agentId = agentId;
|
|
66
|
-
}
|
|
67
|
-
const blobSubdir = this.agentId ? `blobs-${this.agentId}` : "blobs";
|
|
68
|
-
this.storePath = config.storePath || (0, import_path2.getDextoPath)("data", blobSubdir);
|
|
52
|
+
this.storePath = config.storePath;
|
|
53
|
+
this.logger = logger.createChild(import_types.DextoLogComponent.STORAGE);
|
|
69
54
|
}
|
|
70
55
|
async connect() {
|
|
71
56
|
if (this.connected) return;
|
|
@@ -74,14 +59,14 @@ class LocalBlobStore {
|
|
|
74
59
|
await this.refreshStatsCache();
|
|
75
60
|
this.lastStatsRefresh = Date.now();
|
|
76
61
|
this.connected = true;
|
|
77
|
-
|
|
62
|
+
this.logger.debug(`LocalBlobStore connected at: ${this.storePath}`);
|
|
78
63
|
} catch (error) {
|
|
79
64
|
throw import_errors.StorageError.blobOperationFailed("connect", "local", error);
|
|
80
65
|
}
|
|
81
66
|
}
|
|
82
67
|
async disconnect() {
|
|
83
68
|
this.connected = false;
|
|
84
|
-
|
|
69
|
+
this.logger.debug("LocalBlobStore disconnected");
|
|
85
70
|
}
|
|
86
71
|
/**
|
|
87
72
|
* Normalize metadata after JSON parsing to ensure createdAt is a Date object
|
|
@@ -114,7 +99,9 @@ class LocalBlobStore {
|
|
|
114
99
|
const existingMeta = await import_fs.promises.readFile(metaPath, "utf-8");
|
|
115
100
|
const parsed = JSON.parse(existingMeta);
|
|
116
101
|
const existingMetadata = this.normalizeMetadata(parsed);
|
|
117
|
-
|
|
102
|
+
this.logger.debug(
|
|
103
|
+
`Blob ${id} already exists, returning existing reference (deduplication)`
|
|
104
|
+
);
|
|
118
105
|
return {
|
|
119
106
|
id,
|
|
120
107
|
uri: `blob:${id}`,
|
|
@@ -146,7 +133,9 @@ class LocalBlobStore {
|
|
|
146
133
|
import_fs.promises.writeFile(blobPath, buffer),
|
|
147
134
|
import_fs.promises.writeFile(metaPath, JSON.stringify(storedMetadata, null, 2))
|
|
148
135
|
]);
|
|
149
|
-
|
|
136
|
+
this.logger.debug(
|
|
137
|
+
`Stored blob ${id} (${buffer.length} bytes, ${storedMetadata.mimeType})`
|
|
138
|
+
);
|
|
150
139
|
this.updateStatsCacheAfterStore(buffer.length);
|
|
151
140
|
return {
|
|
152
141
|
id,
|
|
@@ -235,7 +224,7 @@ class LocalBlobStore {
|
|
|
235
224
|
const parsed = JSON.parse(metaContent);
|
|
236
225
|
const metadata = this.normalizeMetadata(parsed);
|
|
237
226
|
await Promise.all([import_fs.promises.unlink(blobPath), import_fs.promises.unlink(metaPath)]);
|
|
238
|
-
|
|
227
|
+
this.logger.debug(`Deleted blob: ${id}`);
|
|
239
228
|
this.updateStatsCacheAfterDelete(metadata.size);
|
|
240
229
|
} catch (error) {
|
|
241
230
|
if (error instanceof Error && "code" in error && error.code === "ENOENT") {
|
|
@@ -271,14 +260,16 @@ class LocalBlobStore {
|
|
|
271
260
|
]);
|
|
272
261
|
deletedCount++;
|
|
273
262
|
this.updateStatsCacheAfterDelete(metadata.size);
|
|
274
|
-
|
|
263
|
+
this.logger.debug(`Cleaned up old blob: ${id}`);
|
|
275
264
|
}
|
|
276
265
|
} catch (error) {
|
|
277
|
-
|
|
266
|
+
this.logger.warn(
|
|
267
|
+
`Failed to process blob metadata ${metaFile}: ${String(error)}`
|
|
268
|
+
);
|
|
278
269
|
}
|
|
279
270
|
}
|
|
280
271
|
if (deletedCount > 0) {
|
|
281
|
-
|
|
272
|
+
this.logger.info(`Blob cleanup: removed ${deletedCount} old blobs`);
|
|
282
273
|
}
|
|
283
274
|
return deletedCount;
|
|
284
275
|
} catch (error) {
|
|
@@ -321,12 +312,14 @@ class LocalBlobStore {
|
|
|
321
312
|
metadata
|
|
322
313
|
});
|
|
323
314
|
} catch (error) {
|
|
324
|
-
|
|
315
|
+
this.logger.warn(
|
|
316
|
+
`Failed to process blob metadata ${metaFile}: ${String(error)}`
|
|
317
|
+
);
|
|
325
318
|
}
|
|
326
319
|
}
|
|
327
320
|
return blobs;
|
|
328
321
|
} catch (error) {
|
|
329
|
-
|
|
322
|
+
this.logger.warn(`Failed to list blobs: ${String(error)}`);
|
|
330
323
|
return [];
|
|
331
324
|
}
|
|
332
325
|
}
|
|
@@ -358,13 +351,13 @@ class LocalBlobStore {
|
|
|
358
351
|
const stat = await import_fs.promises.stat(import_path.default.join(this.storePath, datFile));
|
|
359
352
|
stats.totalSize += stat.size;
|
|
360
353
|
} catch (error) {
|
|
361
|
-
|
|
354
|
+
this.logger.debug(
|
|
362
355
|
`Skipping size calculation for ${datFile}: ${error instanceof Error ? error.message : String(error)}`
|
|
363
356
|
);
|
|
364
357
|
}
|
|
365
358
|
}
|
|
366
359
|
} catch (error) {
|
|
367
|
-
|
|
360
|
+
this.logger.warn(`Failed to refresh blob stats cache: ${String(error)}`);
|
|
368
361
|
}
|
|
369
362
|
this.statsCache = stats;
|
|
370
363
|
}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { IDextoLogger } from '../../logger/v2/types.js';
|
|
1
2
|
import type { BlobStore, BlobInput, BlobMetadata, BlobReference, BlobData, BlobStats } from './types.js';
|
|
2
3
|
import type { LocalBlobStoreConfig } from './schemas.js';
|
|
3
4
|
/**
|
|
@@ -14,9 +15,9 @@ export declare class LocalBlobStore implements BlobStore {
|
|
|
14
15
|
private statsCache;
|
|
15
16
|
private statsCachePromise;
|
|
16
17
|
private lastStatsRefresh;
|
|
17
|
-
private
|
|
18
|
+
private logger;
|
|
18
19
|
private static readonly STATS_REFRESH_INTERVAL_MS;
|
|
19
|
-
constructor(config: LocalBlobStoreConfig,
|
|
20
|
+
constructor(config: LocalBlobStoreConfig, logger: IDextoLogger);
|
|
20
21
|
connect(): Promise<void>;
|
|
21
22
|
disconnect(): Promise<void>;
|
|
22
23
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"local-blob-store.d.ts","sourceRoot":"","sources":["../../../src/storage/blob/local-blob-store.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"local-blob-store.d.ts","sourceRoot":"","sources":["../../../src/storage/blob/local-blob-store.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAG7D,OAAO,KAAK,EACR,SAAS,EACT,SAAS,EACT,YAAY,EACZ,aAAa,EACb,QAAQ,EACR,SAAS,EAEZ,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAEzD;;;;;;GAMG;AACH,qBAAa,cAAe,YAAW,SAAS;IAC5C,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,UAAU,CAAqD;IACvE,OAAO,CAAC,iBAAiB,CAA8B;IACvD,OAAO,CAAC,gBAAgB,CAAa;IACrC,OAAO,CAAC,MAAM,CAAe;IAE7B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,yBAAyB,CAAS;gBAE9C,MAAM,EAAE,oBAAoB,EAAE,MAAM,EAAE,YAAY;IAOxD,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAoBxB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAKjC;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAQzB,WAAW,IAAI,OAAO;IAItB,YAAY,IAAI,MAAM;IAIhB,KAAK,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,GAAE,YAAiB,GAAG,OAAO,CAAC,aAAa,CAAC;IAyF5E,QAAQ,CACV,SAAS,EAAE,MAAM,EACjB,MAAM,GAAE,QAAQ,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAgB,GACnE,OAAO,CAAC,QAAQ,CAAC;IAsDd,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAiB3C,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAwBxC,OAAO,CAAC,SAAS,CAAC,EAAE,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC;IAiD1C,QAAQ,IAAI,OAAO,CAAC,SAAS,CAAC;IAepC,cAAc,IAAI,MAAM,GAAG,SAAS;IAI9B,SAAS,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;YAqC7B,gBAAgB;YAsBhB,iBAAiB;IAwB/B,OAAO,CAAC,0BAA0B;IASlC,OAAO,CAAC,2BAA2B;IASnC;;OAEG;YACW,aAAa;IAgD3B;;OAEG;IACH,OAAO,CAAC,cAAc;IAgBtB;;OAEG;IACH,OAAO,CAAC,cAAc;IAiDtB;;OAEG;IACH,OAAO,CAAC,YAAY;CAiBvB"}
|
|
@@ -3,8 +3,7 @@ import { promises as fs, createReadStream } from "fs";
|
|
|
3
3
|
import path from "path";
|
|
4
4
|
import { createHash } from "crypto";
|
|
5
5
|
import { pathToFileURL } from "url";
|
|
6
|
-
import {
|
|
7
|
-
import { getDextoPath } from "../../utils/path.js";
|
|
6
|
+
import { DextoLogComponent } from "../../logger/v2/types.js";
|
|
8
7
|
import { StorageError } from "../errors.js";
|
|
9
8
|
class LocalBlobStore {
|
|
10
9
|
config;
|
|
@@ -13,27 +12,13 @@ class LocalBlobStore {
|
|
|
13
12
|
statsCache = null;
|
|
14
13
|
statsCachePromise = null;
|
|
15
14
|
lastStatsRefresh = 0;
|
|
16
|
-
|
|
15
|
+
logger;
|
|
17
16
|
static STATS_REFRESH_INTERVAL_MS = 6e4;
|
|
18
17
|
// 1 minute
|
|
19
|
-
constructor(config,
|
|
18
|
+
constructor(config, logger) {
|
|
20
19
|
this.config = config;
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
if (!trimmed) {
|
|
24
|
-
throw StorageError.blobInvalidConfig("agentId cannot be empty or whitespace-only");
|
|
25
|
-
}
|
|
26
|
-
if (!/^[a-zA-Z0-9_-]+$/.test(trimmed)) {
|
|
27
|
-
throw StorageError.blobInvalidConfig(
|
|
28
|
-
"agentId must contain only alphanumeric characters, hyphens, and underscores"
|
|
29
|
-
);
|
|
30
|
-
}
|
|
31
|
-
this.agentId = trimmed;
|
|
32
|
-
} else {
|
|
33
|
-
this.agentId = agentId;
|
|
34
|
-
}
|
|
35
|
-
const blobSubdir = this.agentId ? `blobs-${this.agentId}` : "blobs";
|
|
36
|
-
this.storePath = config.storePath || getDextoPath("data", blobSubdir);
|
|
20
|
+
this.storePath = config.storePath;
|
|
21
|
+
this.logger = logger.createChild(DextoLogComponent.STORAGE);
|
|
37
22
|
}
|
|
38
23
|
async connect() {
|
|
39
24
|
if (this.connected) return;
|
|
@@ -42,14 +27,14 @@ class LocalBlobStore {
|
|
|
42
27
|
await this.refreshStatsCache();
|
|
43
28
|
this.lastStatsRefresh = Date.now();
|
|
44
29
|
this.connected = true;
|
|
45
|
-
logger.debug(`LocalBlobStore connected at: ${this.storePath}`);
|
|
30
|
+
this.logger.debug(`LocalBlobStore connected at: ${this.storePath}`);
|
|
46
31
|
} catch (error) {
|
|
47
32
|
throw StorageError.blobOperationFailed("connect", "local", error);
|
|
48
33
|
}
|
|
49
34
|
}
|
|
50
35
|
async disconnect() {
|
|
51
36
|
this.connected = false;
|
|
52
|
-
logger.debug("LocalBlobStore disconnected");
|
|
37
|
+
this.logger.debug("LocalBlobStore disconnected");
|
|
53
38
|
}
|
|
54
39
|
/**
|
|
55
40
|
* Normalize metadata after JSON parsing to ensure createdAt is a Date object
|
|
@@ -82,7 +67,9 @@ class LocalBlobStore {
|
|
|
82
67
|
const existingMeta = await fs.readFile(metaPath, "utf-8");
|
|
83
68
|
const parsed = JSON.parse(existingMeta);
|
|
84
69
|
const existingMetadata = this.normalizeMetadata(parsed);
|
|
85
|
-
logger.debug(
|
|
70
|
+
this.logger.debug(
|
|
71
|
+
`Blob ${id} already exists, returning existing reference (deduplication)`
|
|
72
|
+
);
|
|
86
73
|
return {
|
|
87
74
|
id,
|
|
88
75
|
uri: `blob:${id}`,
|
|
@@ -114,7 +101,9 @@ class LocalBlobStore {
|
|
|
114
101
|
fs.writeFile(blobPath, buffer),
|
|
115
102
|
fs.writeFile(metaPath, JSON.stringify(storedMetadata, null, 2))
|
|
116
103
|
]);
|
|
117
|
-
logger.debug(
|
|
104
|
+
this.logger.debug(
|
|
105
|
+
`Stored blob ${id} (${buffer.length} bytes, ${storedMetadata.mimeType})`
|
|
106
|
+
);
|
|
118
107
|
this.updateStatsCacheAfterStore(buffer.length);
|
|
119
108
|
return {
|
|
120
109
|
id,
|
|
@@ -203,7 +192,7 @@ class LocalBlobStore {
|
|
|
203
192
|
const parsed = JSON.parse(metaContent);
|
|
204
193
|
const metadata = this.normalizeMetadata(parsed);
|
|
205
194
|
await Promise.all([fs.unlink(blobPath), fs.unlink(metaPath)]);
|
|
206
|
-
logger.debug(`Deleted blob: ${id}`);
|
|
195
|
+
this.logger.debug(`Deleted blob: ${id}`);
|
|
207
196
|
this.updateStatsCacheAfterDelete(metadata.size);
|
|
208
197
|
} catch (error) {
|
|
209
198
|
if (error instanceof Error && "code" in error && error.code === "ENOENT") {
|
|
@@ -239,14 +228,16 @@ class LocalBlobStore {
|
|
|
239
228
|
]);
|
|
240
229
|
deletedCount++;
|
|
241
230
|
this.updateStatsCacheAfterDelete(metadata.size);
|
|
242
|
-
logger.debug(`Cleaned up old blob: ${id}`);
|
|
231
|
+
this.logger.debug(`Cleaned up old blob: ${id}`);
|
|
243
232
|
}
|
|
244
233
|
} catch (error) {
|
|
245
|
-
logger.warn(
|
|
234
|
+
this.logger.warn(
|
|
235
|
+
`Failed to process blob metadata ${metaFile}: ${String(error)}`
|
|
236
|
+
);
|
|
246
237
|
}
|
|
247
238
|
}
|
|
248
239
|
if (deletedCount > 0) {
|
|
249
|
-
logger.info(`Blob cleanup: removed ${deletedCount} old blobs`);
|
|
240
|
+
this.logger.info(`Blob cleanup: removed ${deletedCount} old blobs`);
|
|
250
241
|
}
|
|
251
242
|
return deletedCount;
|
|
252
243
|
} catch (error) {
|
|
@@ -289,12 +280,14 @@ class LocalBlobStore {
|
|
|
289
280
|
metadata
|
|
290
281
|
});
|
|
291
282
|
} catch (error) {
|
|
292
|
-
logger.warn(
|
|
283
|
+
this.logger.warn(
|
|
284
|
+
`Failed to process blob metadata ${metaFile}: ${String(error)}`
|
|
285
|
+
);
|
|
293
286
|
}
|
|
294
287
|
}
|
|
295
288
|
return blobs;
|
|
296
289
|
} catch (error) {
|
|
297
|
-
logger.warn(`Failed to list blobs: ${String(error)}`);
|
|
290
|
+
this.logger.warn(`Failed to list blobs: ${String(error)}`);
|
|
298
291
|
return [];
|
|
299
292
|
}
|
|
300
293
|
}
|
|
@@ -326,13 +319,13 @@ class LocalBlobStore {
|
|
|
326
319
|
const stat = await fs.stat(path.join(this.storePath, datFile));
|
|
327
320
|
stats.totalSize += stat.size;
|
|
328
321
|
} catch (error) {
|
|
329
|
-
logger.debug(
|
|
322
|
+
this.logger.debug(
|
|
330
323
|
`Skipping size calculation for ${datFile}: ${error instanceof Error ? error.message : String(error)}`
|
|
331
324
|
);
|
|
332
325
|
}
|
|
333
326
|
}
|
|
334
327
|
} catch (error) {
|
|
335
|
-
logger.warn(`Failed to refresh blob stats cache: ${String(error)}`);
|
|
328
|
+
this.logger.warn(`Failed to refresh blob stats cache: ${String(error)}`);
|
|
336
329
|
}
|
|
337
330
|
this.statsCache = stats;
|
|
338
331
|
}
|