@dexto/core 1.3.0 → 1.5.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 +53 -9
- package/dist/agent/DextoAgent.cjs +570 -210
- package/dist/agent/DextoAgent.d.ts +175 -35
- package/dist/agent/DextoAgent.d.ts.map +1 -1
- package/dist/agent/DextoAgent.js +568 -208
- package/dist/agent/agentCard.js +1 -1
- package/dist/agent/error-codes.cjs +1 -0
- package/dist/agent/error-codes.d.ts +2 -1
- package/dist/agent/error-codes.d.ts.map +1 -1
- package/dist/agent/error-codes.js +2 -1
- package/dist/agent/errors.cjs +13 -0
- package/dist/agent/errors.d.ts +4 -0
- package/dist/agent/errors.d.ts.map +1 -1
- package/dist/agent/errors.js +14 -1
- package/dist/agent/index.cjs +4 -1
- package/dist/agent/index.d.ts +2 -2
- package/dist/agent/index.d.ts.map +1 -1
- package/dist/agent/index.js +6 -2
- package/dist/agent/schemas.cjs +90 -68
- package/dist/agent/schemas.d.ts +5998 -146
- package/dist/agent/schemas.d.ts.map +1 -1
- package/dist/agent/schemas.js +90 -65
- package/dist/agent/state-manager.cjs +5 -5
- package/dist/agent/state-manager.d.ts +4 -4
- package/dist/agent/state-manager.js +6 -6
- package/dist/agent/types.d.ts +24 -10
- package/dist/agent/types.d.ts.map +1 -1
- package/dist/approval/error-codes.js +1 -1
- package/dist/approval/errors.js +1 -1
- package/dist/approval/factory.js +1 -1
- package/dist/approval/index.js +1 -1
- package/dist/approval/manager.cjs +234 -4
- package/dist/approval/manager.d.ts +131 -4
- package/dist/approval/manager.d.ts.map +1 -1
- package/dist/approval/manager.js +225 -5
- package/dist/approval/schemas.cjs +57 -7
- package/dist/approval/schemas.d.ts +344 -33
- package/dist/approval/schemas.d.ts.map +1 -1
- package/dist/approval/schemas.js +54 -8
- package/dist/approval/types.cjs +1 -0
- package/dist/approval/types.d.ts +32 -1
- package/dist/approval/types.d.ts.map +1 -1
- package/dist/approval/types.js +2 -1
- package/dist/{chunk-C6A6W6XS.js → chunk-PTJYTZNU.js} +44 -1
- package/dist/context/compaction/factory.cjs +57 -0
- package/dist/context/compaction/factory.d.ts +17 -0
- package/dist/context/compaction/factory.d.ts.map +1 -0
- package/dist/context/compaction/factory.js +34 -0
- package/dist/context/compaction/index.cjs +49 -0
- package/dist/context/compaction/index.d.ts +11 -0
- package/dist/context/compaction/index.d.ts.map +1 -0
- package/dist/context/compaction/index.js +19 -0
- package/dist/context/compaction/overflow.cjs +43 -0
- package/dist/context/compaction/overflow.d.ts +33 -0
- package/dist/context/compaction/overflow.d.ts.map +1 -0
- package/dist/context/compaction/overflow.js +19 -0
- package/dist/context/compaction/provider.cjs +16 -0
- package/dist/context/compaction/provider.d.ts +48 -0
- package/dist/context/compaction/provider.d.ts.map +1 -0
- package/dist/context/compaction/providers/noop-provider.cjs +48 -0
- package/dist/context/compaction/providers/noop-provider.d.ts +24 -0
- package/dist/context/compaction/providers/noop-provider.d.ts.map +1 -0
- package/dist/context/compaction/providers/noop-provider.js +24 -0
- package/dist/context/compaction/providers/reactive-overflow-provider.cjs +61 -0
- package/dist/context/compaction/providers/reactive-overflow-provider.d.ts +36 -0
- package/dist/context/compaction/providers/reactive-overflow-provider.d.ts.map +1 -0
- package/dist/context/compaction/providers/reactive-overflow-provider.js +37 -0
- package/dist/{llm/tokenizer/factory.cjs → context/compaction/registry.cjs} +15 -20
- package/dist/context/compaction/registry.d.ts +19 -0
- package/dist/context/compaction/registry.d.ts.map +1 -0
- package/dist/context/compaction/registry.js +16 -0
- package/dist/context/compaction/schemas.cjs +38 -0
- package/dist/context/compaction/schemas.d.ts +24 -0
- package/dist/context/compaction/schemas.d.ts.map +1 -0
- package/dist/context/compaction/schemas.js +14 -0
- package/dist/{llm/tokenizer/types.cjs → context/compaction/strategies/noop.cjs} +12 -9
- package/dist/context/compaction/strategies/noop.d.ts +18 -0
- package/dist/context/compaction/strategies/noop.d.ts.map +1 -0
- package/dist/context/compaction/strategies/noop.js +13 -0
- package/dist/context/compaction/strategies/reactive-overflow.cjs +201 -0
- package/dist/context/compaction/strategies/reactive-overflow.d.ts +81 -0
- package/dist/context/compaction/strategies/reactive-overflow.d.ts.map +1 -0
- package/dist/context/compaction/strategies/reactive-overflow.js +178 -0
- package/dist/context/compaction/types.d.ts +20 -0
- package/dist/context/compaction/types.d.ts.map +1 -0
- package/dist/context/error-codes.cjs +7 -0
- package/dist/context/error-codes.d.ts +8 -1
- package/dist/context/error-codes.d.ts.map +1 -1
- package/dist/context/error-codes.js +8 -1
- package/dist/context/errors.cjs +68 -0
- package/dist/context/errors.d.ts +21 -0
- package/dist/context/errors.d.ts.map +1 -1
- package/dist/context/errors.js +69 -1
- package/dist/context/index.cjs +3 -1
- package/dist/context/index.d.ts +1 -0
- package/dist/context/index.d.ts.map +1 -1
- package/dist/context/index.js +2 -1
- package/dist/context/manager.cjs +280 -323
- package/dist/context/manager.d.ts +65 -111
- package/dist/context/manager.d.ts.map +1 -1
- package/dist/context/manager.js +280 -328
- package/dist/context/media-helpers.js +1 -1
- package/dist/context/types.cjs +49 -0
- package/dist/context/types.d.ts +187 -72
- package/dist/context/types.d.ts.map +1 -1
- package/dist/context/types.js +35 -0
- package/dist/context/utils.cjs +293 -290
- package/dist/context/utils.d.ts +32 -18
- package/dist/context/utils.d.ts.map +1 -1
- package/dist/context/utils.js +293 -290
- package/dist/errors/DextoBaseError.js +1 -1
- package/dist/errors/DextoRuntimeError.js +1 -1
- package/dist/errors/DextoValidationError.js +1 -1
- package/dist/errors/index.js +1 -1
- package/dist/errors/result-bridge.cjs +2 -3
- package/dist/errors/result-bridge.d.ts.map +1 -1
- package/dist/errors/result-bridge.js +3 -4
- package/dist/errors/types.js +1 -1
- package/dist/events/index.cjs +18 -1
- package/dist/events/index.d.ts +149 -12
- package/dist/events/index.d.ts.map +1 -1
- package/dist/events/index.js +19 -2
- package/dist/filesystem/error-codes.js +1 -1
- package/dist/filesystem/errors.js +1 -1
- package/dist/filesystem/filesystem-service.cjs +39 -0
- package/dist/filesystem/filesystem-service.d.ts +32 -0
- package/dist/filesystem/filesystem-service.d.ts.map +1 -1
- package/dist/filesystem/filesystem-service.js +40 -1
- package/dist/filesystem/index.d.ts +1 -1
- package/dist/filesystem/index.d.ts.map +1 -1
- package/dist/filesystem/index.js +1 -1
- package/dist/filesystem/path-validator.cjs +69 -1
- package/dist/filesystem/path-validator.d.ts +43 -2
- package/dist/filesystem/path-validator.d.ts.map +1 -1
- package/dist/filesystem/path-validator.js +70 -2
- package/dist/image/define-image.cjs +146 -0
- package/dist/image/define-image.d.ts +71 -0
- package/dist/image/define-image.d.ts.map +1 -0
- package/dist/image/define-image.js +121 -0
- package/dist/{llm/tokenizer/default.cjs → image/index.cjs} +10 -19
- package/dist/image/index.d.ts +53 -0
- package/dist/image/index.d.ts.map +1 -0
- package/dist/image/index.js +7 -0
- package/dist/image/types.d.ts +231 -0
- package/dist/image/types.d.ts.map +1 -0
- package/dist/image/types.js +0 -0
- package/dist/index.browser.cjs +23 -8
- package/dist/index.browser.d.ts +4 -3
- package/dist/index.browser.d.ts.map +1 -1
- package/dist/index.browser.js +20 -3
- package/dist/index.cjs +5 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/llm/error-codes.cjs +1 -1
- package/dist/llm/error-codes.d.ts +1 -1
- package/dist/llm/error-codes.d.ts.map +1 -1
- package/dist/llm/error-codes.js +2 -2
- package/dist/llm/errors.cjs +34 -10
- package/dist/llm/errors.d.ts +23 -11
- package/dist/llm/errors.d.ts.map +1 -1
- package/dist/llm/errors.js +36 -12
- package/dist/llm/executor/stream-processor.cjs +375 -0
- package/dist/llm/executor/stream-processor.d.ts +55 -0
- package/dist/llm/executor/stream-processor.d.ts.map +1 -0
- package/dist/llm/executor/stream-processor.js +352 -0
- package/dist/llm/executor/tool-output-truncator.cjs +75 -0
- package/dist/llm/executor/tool-output-truncator.d.ts +27 -0
- package/dist/llm/executor/tool-output-truncator.d.ts.map +1 -0
- package/dist/llm/executor/tool-output-truncator.js +48 -0
- package/dist/llm/executor/turn-executor.cjs +780 -0
- package/dist/llm/executor/turn-executor.d.ts +167 -0
- package/dist/llm/executor/turn-executor.d.ts.map +1 -0
- package/dist/llm/executor/turn-executor.js +711 -0
- package/dist/llm/executor/types.cjs +16 -0
- package/dist/llm/executor/types.d.ts +27 -0
- package/dist/llm/executor/types.d.ts.map +1 -0
- package/dist/llm/executor/types.js +0 -0
- package/dist/llm/formatters/vercel.cjs +26 -188
- package/dist/llm/formatters/vercel.d.ts +2 -14
- package/dist/llm/formatters/vercel.d.ts.map +1 -1
- package/dist/llm/formatters/vercel.js +25 -187
- package/dist/llm/index.cjs +18 -1
- package/dist/llm/index.d.ts +2 -0
- package/dist/llm/index.d.ts.map +1 -1
- package/dist/llm/index.js +14 -0
- package/dist/llm/providers/local/ai-sdk-adapter.cjs +308 -0
- package/dist/llm/providers/local/ai-sdk-adapter.d.ts +29 -0
- package/dist/llm/providers/local/ai-sdk-adapter.d.ts.map +1 -0
- package/dist/llm/providers/local/ai-sdk-adapter.js +278 -0
- package/dist/llm/providers/local/downloader.cjs +291 -0
- package/dist/llm/providers/local/downloader.d.ts +82 -0
- package/dist/llm/providers/local/downloader.d.ts.map +1 -0
- package/dist/llm/providers/local/downloader.js +251 -0
- package/dist/llm/providers/local/error-codes.cjs +57 -0
- package/dist/llm/providers/local/error-codes.d.ts +66 -0
- package/dist/llm/providers/local/error-codes.d.ts.map +1 -0
- package/dist/llm/providers/local/error-codes.js +34 -0
- package/dist/llm/providers/local/errors.cjs +240 -0
- package/dist/llm/providers/local/errors.d.ts +31 -0
- package/dist/llm/providers/local/errors.d.ts.map +1 -0
- package/dist/llm/providers/local/errors.js +217 -0
- package/dist/llm/providers/local/gpu-detector.cjs +214 -0
- package/dist/llm/providers/local/gpu-detector.d.ts +28 -0
- package/dist/llm/providers/local/gpu-detector.d.ts.map +1 -0
- package/dist/llm/providers/local/gpu-detector.js +178 -0
- package/dist/llm/providers/local/index.cjs +147 -0
- package/dist/llm/providers/local/index.d.ts +21 -0
- package/dist/llm/providers/local/index.d.ts.map +1 -0
- package/dist/llm/providers/local/index.js +126 -0
- package/dist/llm/providers/local/node-llama-provider.cjs +216 -0
- package/dist/llm/providers/local/node-llama-provider.d.ts +90 -0
- package/dist/llm/providers/local/node-llama-provider.d.ts.map +1 -0
- package/dist/llm/providers/local/node-llama-provider.js +176 -0
- package/dist/llm/providers/local/ollama-provider.cjs +230 -0
- package/dist/llm/providers/local/ollama-provider.d.ts +70 -0
- package/dist/llm/providers/local/ollama-provider.d.ts.map +1 -0
- package/dist/llm/providers/local/ollama-provider.js +198 -0
- package/dist/llm/providers/local/registry.cjs +343 -0
- package/dist/llm/providers/local/registry.d.ts +51 -0
- package/dist/llm/providers/local/registry.d.ts.map +1 -0
- package/dist/llm/providers/local/registry.js +312 -0
- package/dist/llm/providers/local/schemas.cjs +169 -0
- package/dist/llm/providers/local/schemas.d.ts +395 -0
- package/dist/llm/providers/local/schemas.d.ts.map +1 -0
- package/dist/llm/providers/local/schemas.js +133 -0
- package/dist/llm/providers/local/types.cjs +16 -0
- package/dist/llm/providers/local/types.d.ts +219 -0
- package/dist/llm/providers/local/types.d.ts.map +1 -0
- package/dist/llm/providers/local/types.js +0 -0
- package/dist/llm/providers/openrouter-model-registry.cjs +350 -0
- package/dist/llm/providers/openrouter-model-registry.d.ts +120 -0
- package/dist/llm/providers/openrouter-model-registry.d.ts.map +1 -0
- package/dist/llm/providers/openrouter-model-registry.js +309 -0
- package/dist/llm/registry.cjs +569 -52
- package/dist/llm/registry.d.ts +79 -39
- package/dist/llm/registry.d.ts.map +1 -1
- package/dist/llm/registry.js +564 -49
- package/dist/llm/resolver.cjs +62 -34
- package/dist/llm/resolver.d.ts +3 -3
- package/dist/llm/resolver.d.ts.map +1 -1
- package/dist/llm/resolver.js +69 -38
- package/dist/llm/schemas.cjs +92 -97
- package/dist/llm/schemas.d.ts +162 -39
- package/dist/llm/schemas.d.ts.map +1 -1
- package/dist/llm/schemas.js +93 -100
- package/dist/llm/services/factory.cjs +88 -103
- package/dist/llm/services/factory.d.ts +17 -4
- package/dist/llm/services/factory.d.ts.map +1 -1
- package/dist/llm/services/factory.js +87 -93
- package/dist/llm/services/test-utils.integration.cjs +28 -10
- package/dist/llm/services/test-utils.integration.d.ts +7 -1
- package/dist/llm/services/test-utils.integration.d.ts.map +1 -1
- package/dist/llm/services/test-utils.integration.js +33 -12
- package/dist/llm/services/types.d.ts +1 -28
- package/dist/llm/services/types.d.ts.map +1 -1
- package/dist/llm/services/vercel.cjs +58 -469
- package/dist/llm/services/vercel.d.ts +39 -21
- package/dist/llm/services/vercel.d.ts.map +1 -1
- package/dist/llm/services/vercel.js +60 -476
- package/dist/llm/types.cjs +11 -4
- package/dist/llm/types.d.ts +9 -9
- package/dist/llm/types.d.ts.map +1 -1
- package/dist/llm/types.js +12 -4
- package/dist/llm/validation.js +1 -1
- package/dist/logger/browser.js +1 -1
- package/dist/logger/factory.js +1 -1
- package/dist/logger/index.js +1 -1
- package/dist/logger/logger.js +1 -1
- package/dist/logger/v2/dexto-logger.cjs +34 -6
- package/dist/logger/v2/dexto-logger.d.ts +20 -2
- package/dist/logger/v2/dexto-logger.d.ts.map +1 -1
- package/dist/logger/v2/dexto-logger.js +35 -7
- package/dist/logger/v2/error-codes.js +1 -1
- package/dist/logger/v2/errors.js +1 -1
- package/dist/logger/v2/schemas.js +1 -1
- package/dist/logger/v2/test-utils.cjs +70 -0
- package/dist/logger/v2/test-utils.d.ts +17 -0
- package/dist/logger/v2/test-utils.d.ts.map +1 -0
- package/dist/logger/v2/test-utils.js +46 -0
- package/dist/logger/v2/transport-factory.js +1 -1
- package/dist/logger/v2/transports/console-transport.js +1 -1
- package/dist/logger/v2/transports/file-transport.cjs +6 -0
- package/dist/logger/v2/transports/file-transport.d.ts +4 -0
- package/dist/logger/v2/transports/file-transport.d.ts.map +1 -1
- package/dist/logger/v2/transports/file-transport.js +7 -1
- package/dist/logger/v2/types.cjs +1 -0
- package/dist/logger/v2/types.d.ts +18 -2
- package/dist/logger/v2/types.d.ts.map +1 -1
- package/dist/logger/v2/types.js +2 -1
- package/dist/mcp/error-codes.cjs +1 -0
- package/dist/mcp/error-codes.d.ts +1 -0
- package/dist/mcp/error-codes.d.ts.map +1 -1
- package/dist/mcp/error-codes.js +2 -1
- package/dist/mcp/errors.cjs +13 -0
- package/dist/mcp/errors.d.ts +7 -0
- package/dist/mcp/errors.d.ts.map +1 -1
- package/dist/mcp/errors.js +14 -1
- package/dist/mcp/manager.cjs +12 -0
- package/dist/mcp/manager.d.ts +17 -0
- package/dist/mcp/manager.d.ts.map +1 -1
- package/dist/mcp/manager.js +13 -1
- package/dist/mcp/mcp-client.cjs +0 -3
- package/dist/mcp/mcp-client.d.ts.map +1 -1
- package/dist/mcp/mcp-client.js +1 -4
- package/dist/mcp/resolver.js +1 -1
- package/dist/mcp/schemas.cjs +6 -0
- package/dist/mcp/schemas.d.ts +52 -0
- package/dist/mcp/schemas.d.ts.map +1 -1
- package/dist/mcp/schemas.js +6 -1
- package/dist/memory/error-codes.js +1 -1
- package/dist/memory/errors.js +1 -1
- package/dist/memory/index.js +1 -1
- package/dist/memory/manager.js +1 -1
- package/dist/memory/schemas.d.ts +3 -3
- package/dist/memory/schemas.js +1 -1
- package/dist/plugins/builtins/content-policy.js +1 -1
- package/dist/plugins/builtins/response-sanitizer.js +1 -1
- package/dist/plugins/error-codes.cjs +3 -0
- package/dist/plugins/error-codes.d.ts +7 -1
- package/dist/plugins/error-codes.d.ts.map +1 -1
- package/dist/plugins/error-codes.js +4 -1
- package/dist/plugins/index.cjs +7 -0
- package/dist/plugins/index.d.ts +4 -2
- package/dist/plugins/index.d.ts.map +1 -1
- package/dist/plugins/index.js +7 -2
- package/dist/plugins/loader.js +1 -1
- package/dist/plugins/manager.cjs +92 -7
- package/dist/plugins/manager.d.ts +10 -3
- package/dist/plugins/manager.d.ts.map +1 -1
- package/dist/plugins/manager.js +93 -8
- package/dist/plugins/registrations/builtins.js +1 -1
- package/dist/plugins/registry.cjs +63 -0
- package/dist/plugins/registry.d.ts +101 -0
- package/dist/plugins/registry.d.ts.map +1 -0
- package/dist/plugins/registry.js +39 -0
- package/dist/plugins/schemas.cjs +17 -5
- package/dist/plugins/schemas.d.ts +65 -8
- package/dist/plugins/schemas.d.ts.map +1 -1
- package/dist/plugins/schemas.js +16 -5
- package/dist/plugins/types.d.ts +0 -1
- package/dist/plugins/types.d.ts.map +1 -1
- package/dist/process/command-validator.js +1 -1
- package/dist/process/error-codes.js +1 -1
- package/dist/process/errors.js +1 -1
- package/dist/process/index.js +1 -1
- package/dist/process/process-service.cjs +78 -26
- package/dist/process/process-service.d.ts +6 -1
- package/dist/process/process-service.d.ts.map +1 -1
- package/dist/process/process-service.js +79 -27
- package/dist/process/types.d.ts +2 -2
- package/dist/process/types.d.ts.map +1 -1
- package/dist/prompts/error-codes.cjs +1 -0
- package/dist/prompts/error-codes.d.ts +2 -1
- package/dist/prompts/error-codes.d.ts.map +1 -1
- package/dist/prompts/error-codes.js +2 -1
- package/dist/prompts/errors.cjs +15 -0
- package/dist/prompts/errors.d.ts +4 -0
- package/dist/prompts/errors.d.ts.map +1 -1
- package/dist/prompts/errors.js +16 -1
- package/dist/prompts/index.js +1 -1
- package/dist/prompts/name-validation.js +1 -1
- package/dist/prompts/prompt-manager.cjs +13 -2
- package/dist/prompts/prompt-manager.d.ts +7 -0
- package/dist/prompts/prompt-manager.d.ts.map +1 -1
- package/dist/prompts/prompt-manager.js +14 -3
- package/dist/prompts/providers/config-prompt-provider.cjs +12 -3
- package/dist/prompts/providers/config-prompt-provider.d.ts +2 -1
- package/dist/prompts/providers/config-prompt-provider.d.ts.map +1 -1
- package/dist/prompts/providers/config-prompt-provider.js +13 -4
- package/dist/prompts/providers/custom-prompt-provider.js +1 -1
- package/dist/prompts/providers/mcp-prompt-provider.js +1 -1
- package/dist/prompts/schemas.d.ts +12 -0
- package/dist/prompts/schemas.d.ts.map +1 -1
- package/dist/prompts/schemas.js +1 -1
- package/dist/prompts/types.d.ts +2 -0
- package/dist/prompts/types.d.ts.map +1 -1
- package/dist/prompts/utils.js +1 -1
- package/dist/providers/base-registry.cjs +147 -0
- package/dist/providers/base-registry.d.ts +147 -0
- package/dist/providers/base-registry.d.ts.map +1 -0
- package/dist/providers/base-registry.js +123 -0
- package/dist/providers/discovery.cjs +95 -0
- package/dist/providers/discovery.d.ts +94 -0
- package/dist/providers/discovery.d.ts.map +1 -0
- package/dist/providers/discovery.js +70 -0
- package/dist/providers/index.cjs +24 -0
- package/dist/providers/index.d.ts +32 -0
- package/dist/providers/index.d.ts.map +1 -0
- package/dist/providers/index.js +2 -0
- package/dist/resources/error-codes.js +1 -1
- package/dist/resources/errors.js +1 -1
- package/dist/resources/handlers/blob-handler.js +1 -1
- package/dist/resources/handlers/factory.js +1 -1
- package/dist/resources/handlers/filesystem-handler.js +1 -1
- package/dist/resources/index.js +1 -1
- package/dist/resources/internal-provider.js +1 -1
- package/dist/resources/manager.js +1 -1
- package/dist/resources/reference-parser.cjs +3 -3
- package/dist/resources/reference-parser.d.ts.map +1 -1
- package/dist/resources/reference-parser.js +4 -4
- package/dist/resources/schemas.js +1 -1
- package/dist/search/index.js +1 -1
- package/dist/search/search-service.js +1 -1
- package/dist/session/chat-session.cjs +169 -54
- package/dist/session/chat-session.d.ts +69 -29
- package/dist/session/chat-session.d.ts.map +1 -1
- package/dist/session/chat-session.js +171 -56
- package/dist/session/error-codes.js +1 -1
- package/dist/session/errors.js +1 -1
- package/dist/session/history/database.cjs +134 -21
- package/dist/session/history/database.d.ts +37 -8
- package/dist/session/history/database.d.ts.map +1 -1
- package/dist/session/history/database.js +135 -22
- package/dist/session/history/factory.js +1 -1
- package/dist/session/history/memory.cjs +18 -0
- package/dist/session/history/memory.d.ts +8 -0
- package/dist/session/history/memory.d.ts.map +1 -1
- package/dist/session/history/memory.js +19 -1
- package/dist/session/history/types.d.ts +13 -1
- package/dist/session/history/types.d.ts.map +1 -1
- package/dist/session/index.cjs +3 -0
- package/dist/session/index.d.ts +3 -0
- package/dist/session/index.d.ts.map +1 -1
- package/dist/session/index.js +3 -1
- package/dist/session/message-queue.cjs +201 -0
- package/dist/session/message-queue.d.ts +114 -0
- package/dist/session/message-queue.d.ts.map +1 -0
- package/dist/session/message-queue.js +178 -0
- package/dist/session/schemas.js +1 -1
- package/dist/session/session-manager.cjs +57 -7
- package/dist/session/session-manager.d.ts +18 -0
- package/dist/session/session-manager.d.ts.map +1 -1
- package/dist/session/session-manager.js +58 -8
- package/dist/session/title-generator.cjs +4 -8
- package/dist/session/title-generator.d.ts +1 -2
- package/dist/session/title-generator.d.ts.map +1 -1
- package/dist/session/title-generator.js +5 -9
- package/dist/session/types.cjs +16 -0
- package/dist/session/types.d.ts +14 -0
- package/dist/session/types.d.ts.map +1 -0
- package/dist/session/types.js +0 -0
- package/dist/storage/blob/factory.cjs +8 -11
- package/dist/storage/blob/factory.d.ts +32 -6
- package/dist/storage/blob/factory.d.ts.map +1 -1
- package/dist/storage/blob/factory.js +9 -12
- package/dist/storage/blob/index.cjs +56 -0
- package/dist/storage/blob/index.d.ts +45 -0
- package/dist/storage/blob/index.d.ts.map +1 -0
- package/dist/storage/blob/index.js +30 -0
- package/dist/storage/blob/local-blob-store.js +1 -1
- package/dist/storage/blob/memory-blob-store.js +1 -1
- package/dist/storage/blob/provider.cjs +16 -0
- package/dist/storage/blob/provider.d.ts +50 -0
- package/dist/storage/blob/provider.d.ts.map +1 -0
- package/dist/storage/blob/provider.js +0 -0
- package/dist/storage/blob/providers/index.cjs +31 -0
- package/dist/storage/blob/providers/index.d.ts +8 -0
- package/dist/storage/blob/providers/index.d.ts.map +1 -0
- package/dist/storage/blob/providers/index.js +7 -0
- package/dist/storage/blob/providers/local.cjs +39 -0
- package/dist/storage/blob/providers/local.d.ts +17 -0
- package/dist/storage/blob/providers/local.d.ts.map +1 -0
- package/dist/storage/blob/providers/local.js +16 -0
- package/dist/storage/blob/providers/memory.cjs +39 -0
- package/dist/storage/blob/providers/memory.d.ts +17 -0
- package/dist/storage/blob/providers/memory.d.ts.map +1 -0
- package/dist/storage/blob/providers/memory.js +16 -0
- package/dist/storage/blob/registry.cjs +50 -0
- package/dist/storage/blob/registry.d.ts +42 -0
- package/dist/storage/blob/registry.d.ts.map +1 -0
- package/dist/storage/blob/registry.js +26 -0
- package/dist/storage/blob/schemas.cjs +9 -12
- package/dist/storage/blob/schemas.d.ts +39 -34
- package/dist/storage/blob/schemas.d.ts.map +1 -1
- package/dist/storage/blob/schemas.js +7 -12
- package/dist/storage/cache/factory.cjs +8 -36
- package/dist/storage/cache/factory.d.ts +32 -7
- package/dist/storage/cache/factory.d.ts.map +1 -1
- package/dist/storage/cache/factory.js +9 -27
- package/dist/storage/cache/index.cjs +53 -0
- package/dist/storage/cache/index.d.ts +44 -0
- package/dist/storage/cache/index.d.ts.map +1 -0
- package/dist/storage/cache/index.js +28 -0
- package/dist/storage/cache/memory-cache-store.js +1 -1
- package/dist/storage/cache/provider.cjs +16 -0
- package/dist/storage/cache/provider.d.ts +56 -0
- package/dist/storage/cache/provider.d.ts.map +1 -0
- package/dist/storage/cache/provider.js +0 -0
- package/dist/storage/cache/providers/index.cjs +31 -0
- package/dist/storage/cache/providers/index.d.ts +8 -0
- package/dist/storage/cache/providers/index.d.ts.map +1 -0
- package/dist/storage/cache/providers/index.js +7 -0
- package/dist/storage/cache/providers/memory.cjs +40 -0
- package/dist/storage/cache/providers/memory.d.ts +17 -0
- package/dist/storage/cache/providers/memory.d.ts.map +1 -0
- package/dist/storage/cache/providers/memory.js +17 -0
- package/dist/storage/cache/providers/redis.cjs +66 -0
- package/dist/storage/cache/providers/redis.d.ts +20 -0
- package/dist/storage/cache/providers/redis.d.ts.map +1 -0
- package/dist/storage/cache/providers/redis.js +33 -0
- package/dist/storage/cache/redis-store.js +1 -1
- package/dist/{llm/tokenizer/google.cjs → storage/cache/registry.cjs} +23 -25
- package/dist/storage/cache/registry.d.ts +42 -0
- package/dist/storage/cache/registry.d.ts.map +1 -0
- package/dist/storage/cache/registry.js +26 -0
- package/dist/storage/cache/schemas.cjs +6 -2
- package/dist/storage/cache/schemas.d.ts +2 -3
- package/dist/storage/cache/schemas.d.ts.map +1 -1
- package/dist/storage/cache/schemas.js +4 -2
- package/dist/storage/database/factory.cjs +8 -47
- package/dist/storage/database/factory.d.ts +34 -8
- package/dist/storage/database/factory.d.ts.map +1 -1
- package/dist/storage/database/factory.js +9 -38
- package/dist/storage/database/index.cjs +58 -0
- package/dist/storage/database/index.d.ts +45 -0
- package/dist/storage/database/index.d.ts.map +1 -0
- package/dist/storage/database/index.js +37 -0
- package/dist/storage/database/memory-database-store.js +1 -1
- package/dist/storage/database/postgres-store.cjs +12 -0
- package/dist/storage/database/postgres-store.d.ts.map +1 -1
- package/dist/storage/database/postgres-store.js +13 -1
- package/dist/storage/database/provider.cjs +16 -0
- package/dist/storage/database/provider.d.ts +56 -0
- package/dist/storage/database/provider.d.ts.map +1 -0
- package/dist/storage/database/provider.js +0 -0
- package/dist/storage/database/providers/index.cjs +34 -0
- package/dist/storage/database/providers/index.d.ts +9 -0
- package/dist/storage/database/providers/index.d.ts.map +1 -0
- package/dist/storage/database/providers/index.js +9 -0
- package/dist/storage/database/providers/memory.cjs +40 -0
- package/dist/storage/database/providers/memory.d.ts +16 -0
- package/dist/storage/database/providers/memory.d.ts.map +1 -0
- package/dist/storage/database/providers/memory.js +17 -0
- package/dist/storage/database/providers/postgres.cjs +62 -0
- package/dist/storage/database/providers/postgres.d.ts +19 -0
- package/dist/storage/database/providers/postgres.d.ts.map +1 -0
- package/dist/storage/database/providers/postgres.js +29 -0
- package/dist/storage/database/providers/sqlite.cjs +66 -0
- package/dist/storage/database/providers/sqlite.d.ts +20 -0
- package/dist/storage/database/providers/sqlite.d.ts.map +1 -0
- package/dist/storage/database/providers/sqlite.js +33 -0
- package/dist/storage/database/registry.cjs +50 -0
- package/dist/storage/database/registry.d.ts +42 -0
- package/dist/storage/database/registry.d.ts.map +1 -0
- package/dist/storage/database/registry.js +26 -0
- package/dist/storage/database/schemas.cjs +8 -2
- package/dist/storage/database/schemas.d.ts +3 -4
- package/dist/storage/database/schemas.d.ts.map +1 -1
- package/dist/storage/database/schemas.js +5 -2
- package/dist/storage/database/sqlite-store.js +1 -1
- package/dist/storage/error-codes.cjs +6 -0
- package/dist/storage/error-codes.d.ts +7 -1
- package/dist/storage/error-codes.d.ts.map +1 -1
- package/dist/storage/error-codes.js +7 -1
- package/dist/storage/errors.cjs +80 -0
- package/dist/storage/errors.d.ts +24 -0
- package/dist/storage/errors.d.ts.map +1 -1
- package/dist/storage/errors.js +81 -1
- package/dist/storage/index.cjs +47 -4
- package/dist/storage/index.d.ts +34 -8
- package/dist/storage/index.d.ts.map +1 -1
- package/dist/storage/index.js +33 -4
- package/dist/storage/schemas.cjs +4 -0
- package/dist/storage/schemas.d.ts +17 -50
- package/dist/storage/schemas.d.ts.map +1 -1
- package/dist/storage/schemas.js +6 -2
- package/dist/storage/storage-manager.cjs +6 -6
- package/dist/storage/storage-manager.d.ts.map +1 -1
- package/dist/storage/storage-manager.js +4 -4
- package/dist/systemPrompt/contributors.js +1 -1
- package/dist/systemPrompt/error-codes.js +1 -1
- package/dist/systemPrompt/errors.js +1 -1
- package/dist/systemPrompt/in-built-prompts.cjs +7 -6
- package/dist/systemPrompt/in-built-prompts.d.ts +2 -2
- package/dist/systemPrompt/in-built-prompts.d.ts.map +1 -1
- package/dist/systemPrompt/in-built-prompts.js +7 -6
- package/dist/systemPrompt/index.js +1 -1
- package/dist/systemPrompt/manager.js +1 -1
- package/dist/systemPrompt/registry.cjs +2 -2
- package/dist/systemPrompt/registry.d.ts +1 -1
- package/dist/systemPrompt/registry.d.ts.map +1 -1
- package/dist/systemPrompt/registry.js +3 -3
- package/dist/systemPrompt/schemas.cjs +2 -2
- package/dist/systemPrompt/schemas.d.ts +18 -18
- package/dist/systemPrompt/schemas.js +3 -3
- package/dist/telemetry/decorators.js +1 -1
- package/dist/telemetry/error-codes.js +1 -1
- package/dist/telemetry/errors.js +1 -1
- package/dist/telemetry/exporters.js +1 -1
- package/dist/telemetry/index.js +1 -1
- package/dist/telemetry/schemas.js +1 -1
- package/dist/telemetry/telemetry.js +1 -1
- package/dist/telemetry/utils.js +1 -1
- package/dist/tools/bash-pattern-utils.cjs +91 -0
- package/dist/tools/bash-pattern-utils.d.ts +58 -0
- package/dist/tools/bash-pattern-utils.d.ts.map +1 -0
- package/dist/tools/bash-pattern-utils.js +64 -0
- package/dist/tools/confirmation/allowed-tools-provider/factory.js +1 -1
- package/dist/tools/confirmation/allowed-tools-provider/in-memory.js +1 -1
- package/dist/tools/confirmation/allowed-tools-provider/storage.js +1 -1
- package/dist/tools/custom-tool-registry.cjs +64 -0
- package/dist/tools/custom-tool-registry.d.ts +120 -0
- package/dist/tools/custom-tool-registry.d.ts.map +1 -0
- package/dist/tools/custom-tool-registry.js +40 -0
- package/dist/tools/custom-tool-schema-registry.cjs +164 -0
- package/dist/tools/custom-tool-schema-registry.d.ts +86 -0
- package/dist/tools/custom-tool-schema-registry.d.ts.map +1 -0
- package/dist/tools/custom-tool-schema-registry.js +140 -0
- package/dist/tools/display-types.cjs +60 -0
- package/dist/tools/display-types.d.ts +133 -0
- package/dist/tools/display-types.d.ts.map +1 -0
- package/dist/tools/display-types.js +32 -0
- package/dist/tools/error-codes.cjs +5 -0
- package/dist/tools/error-codes.d.ts +6 -1
- package/dist/tools/error-codes.d.ts.map +1 -1
- package/dist/tools/error-codes.js +6 -1
- package/dist/tools/errors.cjs +71 -0
- package/dist/tools/errors.d.ts +33 -0
- package/dist/tools/errors.d.ts.map +1 -1
- package/dist/tools/errors.js +72 -1
- package/dist/tools/index.cjs +15 -1
- package/dist/tools/index.d.ts +5 -0
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +13 -2
- package/dist/tools/internal-tools/constants.cjs +3 -9
- 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 +4 -10
- package/dist/tools/internal-tools/implementations/ask-user-tool.cjs +1 -1
- package/dist/tools/internal-tools/implementations/ask-user-tool.js +2 -2
- package/dist/tools/internal-tools/implementations/delegate-to-url-tool.js +1 -1
- package/dist/tools/internal-tools/implementations/get-resource-tool.cjs +113 -0
- package/dist/tools/internal-tools/implementations/get-resource-tool.d.ts +30 -0
- package/dist/tools/internal-tools/implementations/get-resource-tool.d.ts.map +1 -0
- package/dist/tools/internal-tools/implementations/get-resource-tool.js +90 -0
- package/dist/tools/internal-tools/implementations/list-resources-tool.cjs +91 -0
- package/dist/tools/internal-tools/implementations/list-resources-tool.d.ts +24 -0
- package/dist/tools/internal-tools/implementations/list-resources-tool.d.ts.map +1 -0
- package/dist/tools/internal-tools/implementations/list-resources-tool.js +68 -0
- package/dist/tools/internal-tools/implementations/search-history-tool.js +1 -1
- package/dist/tools/internal-tools/provider.cjs +175 -31
- package/dist/tools/internal-tools/provider.d.ts +62 -14
- package/dist/tools/internal-tools/provider.d.ts.map +1 -1
- package/dist/tools/internal-tools/provider.js +176 -32
- package/dist/tools/internal-tools/registry.cjs +19 -43
- package/dist/tools/internal-tools/registry.d.ts +32 -11
- package/dist/tools/internal-tools/registry.d.ts.map +1 -1
- package/dist/tools/internal-tools/registry.js +20 -44
- package/dist/tools/schemas.cjs +36 -6
- package/dist/tools/schemas.d.ts +74 -5
- package/dist/tools/schemas.d.ts.map +1 -1
- package/dist/tools/schemas.js +30 -6
- package/dist/tools/tool-manager.cjs +279 -30
- package/dist/tools/tool-manager.d.ts +45 -4
- package/dist/tools/tool-manager.d.ts.map +1 -1
- package/dist/tools/tool-manager.js +284 -31
- package/dist/tools/types.d.ts +63 -0
- package/dist/tools/types.d.ts.map +1 -1
- package/dist/utils/api-key-resolver.cjs +19 -1
- package/dist/utils/api-key-resolver.d.ts.map +1 -1
- package/dist/utils/api-key-resolver.js +20 -2
- package/dist/utils/async-context.js +1 -1
- package/dist/utils/debug.js +1 -1
- package/dist/{llm/tokenizer/anthropic.cjs → utils/defer.cjs} +19 -20
- package/dist/utils/defer.d.ts +63 -0
- package/dist/utils/defer.d.ts.map +1 -0
- package/dist/utils/defer.js +19 -0
- package/dist/utils/error-conversion.js +1 -1
- package/dist/utils/execution-context.js +1 -1
- package/dist/utils/fs-walk.js +1 -1
- package/dist/utils/index.cjs +3 -3
- package/dist/utils/index.d.ts +1 -1
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +1 -1
- package/dist/utils/path.js +1 -1
- package/dist/utils/redactor.cjs +18 -3
- package/dist/utils/redactor.d.ts +0 -7
- package/dist/utils/redactor.d.ts.map +1 -1
- package/dist/utils/redactor.js +19 -4
- package/dist/utils/result.js +1 -1
- package/dist/utils/safe-stringify.js +1 -1
- package/dist/utils/schema-metadata.js +1 -1
- package/dist/utils/schema.js +1 -1
- package/dist/utils/service-initializer.cjs +15 -37
- package/dist/utils/service-initializer.d.ts.map +1 -1
- package/dist/utils/service-initializer.js +16 -38
- package/dist/utils/user-info.js +1 -1
- package/dist/utils/zod-schema-converter.js +1 -1
- package/package.json +10 -8
- package/dist/context/compression/middle-removal.cjs +0 -95
- package/dist/context/compression/middle-removal.d.ts +0 -47
- package/dist/context/compression/middle-removal.d.ts.map +0 -1
- package/dist/context/compression/middle-removal.js +0 -72
- package/dist/context/compression/oldest-removal.cjs +0 -83
- package/dist/context/compression/oldest-removal.d.ts +0 -42
- package/dist/context/compression/oldest-removal.d.ts.map +0 -1
- package/dist/context/compression/oldest-removal.js +0 -60
- package/dist/context/compression/types.d.ts +0 -18
- package/dist/context/compression/types.d.ts.map +0 -1
- package/dist/llm/formatters/anthropic.cjs +0 -257
- package/dist/llm/formatters/anthropic.d.ts +0 -46
- package/dist/llm/formatters/anthropic.d.ts.map +0 -1
- package/dist/llm/formatters/anthropic.js +0 -239
- package/dist/llm/formatters/factory.cjs +0 -50
- package/dist/llm/formatters/factory.d.ts +0 -10
- package/dist/llm/formatters/factory.d.ts.map +0 -1
- package/dist/llm/formatters/factory.js +0 -27
- package/dist/llm/formatters/openai.cjs +0 -203
- package/dist/llm/formatters/openai.d.ts +0 -39
- package/dist/llm/formatters/openai.d.ts.map +0 -1
- package/dist/llm/formatters/openai.js +0 -184
- package/dist/llm/formatters/types.d.ts +0 -41
- package/dist/llm/formatters/types.d.ts.map +0 -1
- package/dist/llm/services/anthropic.cjs +0 -511
- package/dist/llm/services/anthropic.d.ts +0 -48
- package/dist/llm/services/anthropic.d.ts.map +0 -1
- package/dist/llm/services/anthropic.js +0 -447
- package/dist/llm/services/openai.cjs +0 -611
- package/dist/llm/services/openai.d.ts +0 -48
- package/dist/llm/services/openai.d.ts.map +0 -1
- package/dist/llm/services/openai.js +0 -547
- package/dist/llm/tokenizer/anthropic.d.ts +0 -19
- package/dist/llm/tokenizer/anthropic.d.ts.map +0 -1
- package/dist/llm/tokenizer/anthropic.js +0 -20
- package/dist/llm/tokenizer/default.d.ts +0 -14
- package/dist/llm/tokenizer/default.d.ts.map +0 -1
- package/dist/llm/tokenizer/default.js +0 -18
- package/dist/llm/tokenizer/factory.d.ts +0 -12
- package/dist/llm/tokenizer/factory.d.ts.map +0 -1
- package/dist/llm/tokenizer/factory.js +0 -21
- package/dist/llm/tokenizer/google.d.ts +0 -29
- package/dist/llm/tokenizer/google.d.ts.map +0 -1
- package/dist/llm/tokenizer/google.js +0 -29
- package/dist/llm/tokenizer/openai.cjs +0 -115
- package/dist/llm/tokenizer/openai.d.ts +0 -41
- package/dist/llm/tokenizer/openai.d.ts.map +0 -1
- package/dist/llm/tokenizer/openai.js +0 -91
- package/dist/llm/tokenizer/types.d.ts +0 -18
- package/dist/llm/tokenizer/types.d.ts.map +0 -1
- package/dist/llm/tokenizer/types.js +0 -10
- package/dist/tools/internal-tools/implementations/bash-exec-tool.cjs +0 -106
- package/dist/tools/internal-tools/implementations/bash-exec-tool.d.ts +0 -13
- package/dist/tools/internal-tools/implementations/bash-exec-tool.d.ts.map +0 -1
- package/dist/tools/internal-tools/implementations/bash-exec-tool.js +0 -73
- package/dist/tools/internal-tools/implementations/bash-output-tool.cjs +0 -49
- package/dist/tools/internal-tools/implementations/bash-output-tool.d.ts +0 -12
- package/dist/tools/internal-tools/implementations/bash-output-tool.d.ts.map +0 -1
- package/dist/tools/internal-tools/implementations/bash-output-tool.js +0 -26
- package/dist/tools/internal-tools/implementations/edit-file-tool.cjs +0 -62
- package/dist/tools/internal-tools/implementations/edit-file-tool.d.ts +0 -12
- package/dist/tools/internal-tools/implementations/edit-file-tool.d.ts.map +0 -1
- package/dist/tools/internal-tools/implementations/edit-file-tool.js +0 -39
- package/dist/tools/internal-tools/implementations/glob-files-tool.cjs +0 -57
- package/dist/tools/internal-tools/implementations/glob-files-tool.d.ts +0 -12
- package/dist/tools/internal-tools/implementations/glob-files-tool.d.ts.map +0 -1
- package/dist/tools/internal-tools/implementations/glob-files-tool.js +0 -34
- package/dist/tools/internal-tools/implementations/grep-content-tool.cjs +0 -71
- package/dist/tools/internal-tools/implementations/grep-content-tool.d.ts +0 -12
- package/dist/tools/internal-tools/implementations/grep-content-tool.d.ts.map +0 -1
- package/dist/tools/internal-tools/implementations/grep-content-tool.js +0 -48
- package/dist/tools/internal-tools/implementations/kill-process-tool.cjs +0 -47
- package/dist/tools/internal-tools/implementations/kill-process-tool.d.ts +0 -12
- package/dist/tools/internal-tools/implementations/kill-process-tool.d.ts.map +0 -1
- package/dist/tools/internal-tools/implementations/kill-process-tool.js +0 -24
- package/dist/tools/internal-tools/implementations/read-file-tool.cjs +0 -55
- package/dist/tools/internal-tools/implementations/read-file-tool.d.ts +0 -12
- package/dist/tools/internal-tools/implementations/read-file-tool.d.ts.map +0 -1
- package/dist/tools/internal-tools/implementations/read-file-tool.js +0 -32
- package/dist/tools/internal-tools/implementations/write-file-tool.cjs +0 -56
- package/dist/tools/internal-tools/implementations/write-file-tool.d.ts +0 -12
- package/dist/tools/internal-tools/implementations/write-file-tool.d.ts.map +0 -1
- package/dist/tools/internal-tools/implementations/write-file-tool.js +0 -33
- package/dist/utils/env-file.cjs +0 -118
- package/dist/utils/env-file.d.ts +0 -5
- package/dist/utils/env-file.d.ts.map +0 -1
- package/dist/utils/env-file.js +0 -85
- /package/dist/context/{compression/types.js → compaction/provider.js} +0 -0
- /package/dist/context/{compression → compaction}/types.cjs +0 -0
- /package/dist/{llm/formatters → context/compaction}/types.js +0 -0
- /package/dist/{llm/formatters → image}/types.cjs +0 -0
package/dist/filesystem/index.js
CHANGED
|
@@ -39,6 +39,7 @@ class PathValidator {
|
|
|
39
39
|
normalizedBlockedPaths;
|
|
40
40
|
normalizedBlockedExtensions;
|
|
41
41
|
logger;
|
|
42
|
+
directoryApprovalChecker;
|
|
42
43
|
constructor(config, logger) {
|
|
43
44
|
this.config = config;
|
|
44
45
|
this.logger = logger;
|
|
@@ -53,6 +54,16 @@ class PathValidator {
|
|
|
53
54
|
`PathValidator initialized with ${this.normalizedAllowedPaths.length} allowed paths`
|
|
54
55
|
);
|
|
55
56
|
}
|
|
57
|
+
/**
|
|
58
|
+
* Set a callback to check if a path is in an approved directory.
|
|
59
|
+
* This allows PathValidator to consult ApprovalManager without a direct dependency.
|
|
60
|
+
*
|
|
61
|
+
* @param checker Function that returns true if path is in an approved directory
|
|
62
|
+
*/
|
|
63
|
+
setDirectoryApprovalChecker(checker) {
|
|
64
|
+
this.directoryApprovalChecker = checker;
|
|
65
|
+
this.logger.debug("Directory approval checker configured");
|
|
66
|
+
}
|
|
56
67
|
/**
|
|
57
68
|
* Validate a file path for security and policy compliance
|
|
58
69
|
*/
|
|
@@ -123,15 +134,23 @@ class PathValidator {
|
|
|
123
134
|
}
|
|
124
135
|
/**
|
|
125
136
|
* Check if path is within allowed paths (whitelist check)
|
|
137
|
+
* Also consults the directory approval checker if configured.
|
|
126
138
|
*/
|
|
127
139
|
isPathAllowed(normalizedPath) {
|
|
128
140
|
if (this.normalizedAllowedPaths.length === 0) {
|
|
129
141
|
return true;
|
|
130
142
|
}
|
|
131
|
-
|
|
143
|
+
const isInConfigPaths = this.normalizedAllowedPaths.some((allowedPath) => {
|
|
132
144
|
const relative = path.relative(allowedPath, normalizedPath);
|
|
133
145
|
return !relative.startsWith("..") && !path.isAbsolute(relative);
|
|
134
146
|
});
|
|
147
|
+
if (isInConfigPaths) {
|
|
148
|
+
return true;
|
|
149
|
+
}
|
|
150
|
+
if (this.directoryApprovalChecker) {
|
|
151
|
+
return this.directoryApprovalChecker(normalizedPath);
|
|
152
|
+
}
|
|
153
|
+
return false;
|
|
135
154
|
}
|
|
136
155
|
/**
|
|
137
156
|
* Check if path matches blocked patterns (blacklist check)
|
|
@@ -154,6 +173,55 @@ class PathValidator {
|
|
|
154
173
|
isPathAllowedQuick(normalizedPath) {
|
|
155
174
|
return this.isPathAllowed(normalizedPath) && !this.isPathBlocked(normalizedPath);
|
|
156
175
|
}
|
|
176
|
+
/**
|
|
177
|
+
* Check if a file path is within the configured allowed paths (from config only).
|
|
178
|
+
* This method does NOT consult ApprovalManager - it only checks the static config paths.
|
|
179
|
+
*
|
|
180
|
+
* This is used by ToolManager.checkDirectoryAccess() to determine if a path
|
|
181
|
+
* needs directory approval. Paths within config-allowed directories don't need
|
|
182
|
+
* directory approval prompts.
|
|
183
|
+
*
|
|
184
|
+
* @param filePath The file path to check (can be relative or absolute)
|
|
185
|
+
* @returns true if the path is within config-allowed paths, false otherwise
|
|
186
|
+
*
|
|
187
|
+
* @example
|
|
188
|
+
* ```typescript
|
|
189
|
+
* // Check if path needs directory approval
|
|
190
|
+
* if (!pathValidator.isPathWithinAllowed('/external/project/file.ts')) {
|
|
191
|
+
* // Request directory access approval
|
|
192
|
+
* }
|
|
193
|
+
* ```
|
|
194
|
+
*/
|
|
195
|
+
isPathWithinAllowed(filePath) {
|
|
196
|
+
if (!filePath || filePath.trim() === "") {
|
|
197
|
+
return false;
|
|
198
|
+
}
|
|
199
|
+
const workingDir = this.config.workingDirectory || process.cwd();
|
|
200
|
+
let normalizedPath;
|
|
201
|
+
try {
|
|
202
|
+
normalizedPath = path.isAbsolute(filePath) ? path.resolve(filePath) : path.resolve(workingDir, filePath);
|
|
203
|
+
try {
|
|
204
|
+
normalizedPath = import_node_fs.realpathSync.native(normalizedPath);
|
|
205
|
+
} catch {
|
|
206
|
+
}
|
|
207
|
+
} catch {
|
|
208
|
+
return false;
|
|
209
|
+
}
|
|
210
|
+
return this.isInConfigAllowedPaths(normalizedPath);
|
|
211
|
+
}
|
|
212
|
+
/**
|
|
213
|
+
* Check if path is within config-allowed paths only (no approval checker).
|
|
214
|
+
* Used for prompting decisions.
|
|
215
|
+
*/
|
|
216
|
+
isInConfigAllowedPaths(normalizedPath) {
|
|
217
|
+
if (this.normalizedAllowedPaths.length === 0) {
|
|
218
|
+
return true;
|
|
219
|
+
}
|
|
220
|
+
return this.normalizedAllowedPaths.some((allowedPath) => {
|
|
221
|
+
const relative = path.relative(allowedPath, normalizedPath);
|
|
222
|
+
return !relative.startsWith("..") && !path.isAbsolute(relative);
|
|
223
|
+
});
|
|
224
|
+
}
|
|
157
225
|
/**
|
|
158
226
|
* Get normalized allowed paths
|
|
159
227
|
*/
|
|
@@ -5,16 +5,23 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import { FileSystemConfig, PathValidation } from './types.js';
|
|
7
7
|
import type { IDextoLogger } from '../logger/v2/types.js';
|
|
8
|
+
/**
|
|
9
|
+
* Callback type for checking if a path is in an approved directory.
|
|
10
|
+
* Used to consult ApprovalManager without creating a direct dependency.
|
|
11
|
+
*/
|
|
12
|
+
export type DirectoryApprovalChecker = (filePath: string) => boolean;
|
|
8
13
|
/**
|
|
9
14
|
* PathValidator - Validates file paths for security and policy compliance
|
|
10
15
|
*
|
|
11
16
|
* Security checks:
|
|
12
17
|
* 1. Path traversal detection (../, symbolic links)
|
|
13
|
-
* 2. Allowed paths enforcement (whitelist)
|
|
18
|
+
* 2. Allowed paths enforcement (whitelist + approved directories)
|
|
14
19
|
* 3. Blocked paths detection (blacklist)
|
|
15
20
|
* 4. File extension restrictions
|
|
16
21
|
* 5. Absolute path normalization
|
|
17
|
-
*
|
|
22
|
+
*
|
|
23
|
+
* PathValidator can optionally consult an external approval checker (e.g., ApprovalManager)
|
|
24
|
+
* to determine if paths outside the config's allowed paths are accessible.
|
|
18
25
|
*/
|
|
19
26
|
export declare class PathValidator {
|
|
20
27
|
private config;
|
|
@@ -22,7 +29,15 @@ export declare class PathValidator {
|
|
|
22
29
|
private normalizedBlockedPaths;
|
|
23
30
|
private normalizedBlockedExtensions;
|
|
24
31
|
private logger;
|
|
32
|
+
private directoryApprovalChecker;
|
|
25
33
|
constructor(config: FileSystemConfig, logger: IDextoLogger);
|
|
34
|
+
/**
|
|
35
|
+
* Set a callback to check if a path is in an approved directory.
|
|
36
|
+
* This allows PathValidator to consult ApprovalManager without a direct dependency.
|
|
37
|
+
*
|
|
38
|
+
* @param checker Function that returns true if path is in an approved directory
|
|
39
|
+
*/
|
|
40
|
+
setDirectoryApprovalChecker(checker: DirectoryApprovalChecker): void;
|
|
26
41
|
/**
|
|
27
42
|
* Validate a file path for security and policy compliance
|
|
28
43
|
*/
|
|
@@ -33,6 +48,7 @@ export declare class PathValidator {
|
|
|
33
48
|
private hasPathTraversal;
|
|
34
49
|
/**
|
|
35
50
|
* Check if path is within allowed paths (whitelist check)
|
|
51
|
+
* Also consults the directory approval checker if configured.
|
|
36
52
|
*/
|
|
37
53
|
private isPathAllowed;
|
|
38
54
|
/**
|
|
@@ -43,6 +59,31 @@ export declare class PathValidator {
|
|
|
43
59
|
* Quick check if a path is allowed (for internal use)
|
|
44
60
|
*/
|
|
45
61
|
isPathAllowedQuick(normalizedPath: string): boolean;
|
|
62
|
+
/**
|
|
63
|
+
* Check if a file path is within the configured allowed paths (from config only).
|
|
64
|
+
* This method does NOT consult ApprovalManager - it only checks the static config paths.
|
|
65
|
+
*
|
|
66
|
+
* This is used by ToolManager.checkDirectoryAccess() to determine if a path
|
|
67
|
+
* needs directory approval. Paths within config-allowed directories don't need
|
|
68
|
+
* directory approval prompts.
|
|
69
|
+
*
|
|
70
|
+
* @param filePath The file path to check (can be relative or absolute)
|
|
71
|
+
* @returns true if the path is within config-allowed paths, false otherwise
|
|
72
|
+
*
|
|
73
|
+
* @example
|
|
74
|
+
* ```typescript
|
|
75
|
+
* // Check if path needs directory approval
|
|
76
|
+
* if (!pathValidator.isPathWithinAllowed('/external/project/file.ts')) {
|
|
77
|
+
* // Request directory access approval
|
|
78
|
+
* }
|
|
79
|
+
* ```
|
|
80
|
+
*/
|
|
81
|
+
isPathWithinAllowed(filePath: string): boolean;
|
|
82
|
+
/**
|
|
83
|
+
* Check if path is within config-allowed paths only (no approval checker).
|
|
84
|
+
* Used for prompting decisions.
|
|
85
|
+
*/
|
|
86
|
+
private isInConfigAllowedPaths;
|
|
46
87
|
/**
|
|
47
88
|
* Get normalized allowed paths
|
|
48
89
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"path-validator.d.ts","sourceRoot":"","sources":["../../src/filesystem/path-validator.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAE1D
|
|
1
|
+
{"version":3,"file":"path-validator.d.ts","sourceRoot":"","sources":["../../src/filesystem/path-validator.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAE1D;;;GAGG;AACH,MAAM,MAAM,wBAAwB,GAAG,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC;AAErE;;;;;;;;;;;;GAYG;AACH,qBAAa,aAAa;IACtB,OAAO,CAAC,MAAM,CAAmB;IACjC,OAAO,CAAC,sBAAsB,CAAW;IACzC,OAAO,CAAC,sBAAsB,CAAW;IACzC,OAAO,CAAC,2BAA2B,CAAW;IAC9C,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,wBAAwB,CAAuC;gBAE3D,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAE,YAAY;IAsB1D;;;;;OAKG;IACH,2BAA2B,CAAC,OAAO,EAAE,wBAAwB,GAAG,IAAI;IAKpE;;OAEG;IACH,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc;IA0E9C;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAaxB;;;OAGG;IACH,OAAO,CAAC,aAAa;IAyBrB;;OAEG;IACH,OAAO,CAAC,aAAa;IAyBrB;;OAEG;IACH,kBAAkB,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO;IAInD;;;;;;;;;;;;;;;;;;OAkBG;IACH,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IA8B9C;;;OAGG;IACH,OAAO,CAAC,sBAAsB;IAY9B;;OAEG;IACH,eAAe,IAAI,MAAM,EAAE;IAI3B;;OAEG;IACH,eAAe,IAAI,MAAM,EAAE;CAG9B"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import "../chunk-
|
|
1
|
+
import "../chunk-PTJYTZNU.js";
|
|
2
2
|
import * as path from "node:path";
|
|
3
3
|
import { realpathSync } from "node:fs";
|
|
4
4
|
class PathValidator {
|
|
@@ -7,6 +7,7 @@ class PathValidator {
|
|
|
7
7
|
normalizedBlockedPaths;
|
|
8
8
|
normalizedBlockedExtensions;
|
|
9
9
|
logger;
|
|
10
|
+
directoryApprovalChecker;
|
|
10
11
|
constructor(config, logger) {
|
|
11
12
|
this.config = config;
|
|
12
13
|
this.logger = logger;
|
|
@@ -21,6 +22,16 @@ class PathValidator {
|
|
|
21
22
|
`PathValidator initialized with ${this.normalizedAllowedPaths.length} allowed paths`
|
|
22
23
|
);
|
|
23
24
|
}
|
|
25
|
+
/**
|
|
26
|
+
* Set a callback to check if a path is in an approved directory.
|
|
27
|
+
* This allows PathValidator to consult ApprovalManager without a direct dependency.
|
|
28
|
+
*
|
|
29
|
+
* @param checker Function that returns true if path is in an approved directory
|
|
30
|
+
*/
|
|
31
|
+
setDirectoryApprovalChecker(checker) {
|
|
32
|
+
this.directoryApprovalChecker = checker;
|
|
33
|
+
this.logger.debug("Directory approval checker configured");
|
|
34
|
+
}
|
|
24
35
|
/**
|
|
25
36
|
* Validate a file path for security and policy compliance
|
|
26
37
|
*/
|
|
@@ -91,15 +102,23 @@ class PathValidator {
|
|
|
91
102
|
}
|
|
92
103
|
/**
|
|
93
104
|
* Check if path is within allowed paths (whitelist check)
|
|
105
|
+
* Also consults the directory approval checker if configured.
|
|
94
106
|
*/
|
|
95
107
|
isPathAllowed(normalizedPath) {
|
|
96
108
|
if (this.normalizedAllowedPaths.length === 0) {
|
|
97
109
|
return true;
|
|
98
110
|
}
|
|
99
|
-
|
|
111
|
+
const isInConfigPaths = this.normalizedAllowedPaths.some((allowedPath) => {
|
|
100
112
|
const relative = path.relative(allowedPath, normalizedPath);
|
|
101
113
|
return !relative.startsWith("..") && !path.isAbsolute(relative);
|
|
102
114
|
});
|
|
115
|
+
if (isInConfigPaths) {
|
|
116
|
+
return true;
|
|
117
|
+
}
|
|
118
|
+
if (this.directoryApprovalChecker) {
|
|
119
|
+
return this.directoryApprovalChecker(normalizedPath);
|
|
120
|
+
}
|
|
121
|
+
return false;
|
|
103
122
|
}
|
|
104
123
|
/**
|
|
105
124
|
* Check if path matches blocked patterns (blacklist check)
|
|
@@ -122,6 +141,55 @@ class PathValidator {
|
|
|
122
141
|
isPathAllowedQuick(normalizedPath) {
|
|
123
142
|
return this.isPathAllowed(normalizedPath) && !this.isPathBlocked(normalizedPath);
|
|
124
143
|
}
|
|
144
|
+
/**
|
|
145
|
+
* Check if a file path is within the configured allowed paths (from config only).
|
|
146
|
+
* This method does NOT consult ApprovalManager - it only checks the static config paths.
|
|
147
|
+
*
|
|
148
|
+
* This is used by ToolManager.checkDirectoryAccess() to determine if a path
|
|
149
|
+
* needs directory approval. Paths within config-allowed directories don't need
|
|
150
|
+
* directory approval prompts.
|
|
151
|
+
*
|
|
152
|
+
* @param filePath The file path to check (can be relative or absolute)
|
|
153
|
+
* @returns true if the path is within config-allowed paths, false otherwise
|
|
154
|
+
*
|
|
155
|
+
* @example
|
|
156
|
+
* ```typescript
|
|
157
|
+
* // Check if path needs directory approval
|
|
158
|
+
* if (!pathValidator.isPathWithinAllowed('/external/project/file.ts')) {
|
|
159
|
+
* // Request directory access approval
|
|
160
|
+
* }
|
|
161
|
+
* ```
|
|
162
|
+
*/
|
|
163
|
+
isPathWithinAllowed(filePath) {
|
|
164
|
+
if (!filePath || filePath.trim() === "") {
|
|
165
|
+
return false;
|
|
166
|
+
}
|
|
167
|
+
const workingDir = this.config.workingDirectory || process.cwd();
|
|
168
|
+
let normalizedPath;
|
|
169
|
+
try {
|
|
170
|
+
normalizedPath = path.isAbsolute(filePath) ? path.resolve(filePath) : path.resolve(workingDir, filePath);
|
|
171
|
+
try {
|
|
172
|
+
normalizedPath = realpathSync.native(normalizedPath);
|
|
173
|
+
} catch {
|
|
174
|
+
}
|
|
175
|
+
} catch {
|
|
176
|
+
return false;
|
|
177
|
+
}
|
|
178
|
+
return this.isInConfigAllowedPaths(normalizedPath);
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Check if path is within config-allowed paths only (no approval checker).
|
|
182
|
+
* Used for prompting decisions.
|
|
183
|
+
*/
|
|
184
|
+
isInConfigAllowedPaths(normalizedPath) {
|
|
185
|
+
if (this.normalizedAllowedPaths.length === 0) {
|
|
186
|
+
return true;
|
|
187
|
+
}
|
|
188
|
+
return this.normalizedAllowedPaths.some((allowedPath) => {
|
|
189
|
+
const relative = path.relative(allowedPath, normalizedPath);
|
|
190
|
+
return !relative.startsWith("..") && !path.isAbsolute(relative);
|
|
191
|
+
});
|
|
192
|
+
}
|
|
125
193
|
/**
|
|
126
194
|
* Get normalized allowed paths
|
|
127
195
|
*/
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var define_image_exports = {};
|
|
20
|
+
__export(define_image_exports, {
|
|
21
|
+
defineImage: () => defineImage,
|
|
22
|
+
defineProviderCategory: () => defineProviderCategory,
|
|
23
|
+
validateImageDefinition: () => validateImageDefinition
|
|
24
|
+
});
|
|
25
|
+
module.exports = __toCommonJS(define_image_exports);
|
|
26
|
+
function defineImage(definition) {
|
|
27
|
+
if (!definition.name) {
|
|
28
|
+
throw new Error("Image definition must have a name");
|
|
29
|
+
}
|
|
30
|
+
if (!definition.version) {
|
|
31
|
+
throw new Error("Image definition must have a version");
|
|
32
|
+
}
|
|
33
|
+
if (!definition.description) {
|
|
34
|
+
throw new Error("Image definition must have a description");
|
|
35
|
+
}
|
|
36
|
+
for (const [category, config] of Object.entries(definition.providers)) {
|
|
37
|
+
if (!config) continue;
|
|
38
|
+
if (!config.providers && !config.register) {
|
|
39
|
+
throw new Error(
|
|
40
|
+
`Provider category '${category}' must have either 'providers' array or 'register' function`
|
|
41
|
+
);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
return definition;
|
|
45
|
+
}
|
|
46
|
+
function defineProviderCategory(config) {
|
|
47
|
+
if (!config.providers && !config.register) {
|
|
48
|
+
throw new Error("Provider category must have either providers or register function");
|
|
49
|
+
}
|
|
50
|
+
return config;
|
|
51
|
+
}
|
|
52
|
+
function validateImageDefinition(definition) {
|
|
53
|
+
if (!definition.name || typeof definition.name !== "string") {
|
|
54
|
+
throw new Error("Image name must be a non-empty string");
|
|
55
|
+
}
|
|
56
|
+
if (!definition.version || typeof definition.version !== "string") {
|
|
57
|
+
throw new Error("Image version must be a non-empty string");
|
|
58
|
+
}
|
|
59
|
+
if (!definition.description || typeof definition.description !== "string") {
|
|
60
|
+
throw new Error("Image description must be a non-empty string");
|
|
61
|
+
}
|
|
62
|
+
const versionRegex = /^\d+\.\d+\.\d+(-[a-zA-Z0-9.-]+)?$/;
|
|
63
|
+
if (!versionRegex.test(definition.version)) {
|
|
64
|
+
throw new Error(
|
|
65
|
+
`Image version '${definition.version}' is not valid semver. Expected format: x.y.z`
|
|
66
|
+
);
|
|
67
|
+
}
|
|
68
|
+
const validTargets = [
|
|
69
|
+
"local-development",
|
|
70
|
+
"cloud-production",
|
|
71
|
+
"edge-serverless",
|
|
72
|
+
"embedded-iot",
|
|
73
|
+
"enterprise",
|
|
74
|
+
"custom"
|
|
75
|
+
];
|
|
76
|
+
if (definition.target && !validTargets.includes(definition.target)) {
|
|
77
|
+
throw new Error(
|
|
78
|
+
`Invalid target '${definition.target}'. Valid targets: ${validTargets.join(", ")}`
|
|
79
|
+
);
|
|
80
|
+
}
|
|
81
|
+
const hasProviders = definition.providers && Object.values(definition.providers).some((config) => config !== void 0);
|
|
82
|
+
if (!hasProviders && !definition.extends) {
|
|
83
|
+
throw new Error(
|
|
84
|
+
"Image must either define at least one provider category or extend a base image"
|
|
85
|
+
);
|
|
86
|
+
}
|
|
87
|
+
for (const [category, config] of Object.entries(definition.providers)) {
|
|
88
|
+
if (!config) continue;
|
|
89
|
+
if (!config.providers && !config.register) {
|
|
90
|
+
throw new Error(
|
|
91
|
+
`Provider category '${category}' must have either 'providers' array or 'register' function`
|
|
92
|
+
);
|
|
93
|
+
}
|
|
94
|
+
if (config.providers && !Array.isArray(config.providers)) {
|
|
95
|
+
throw new Error(`Provider category '${category}' providers must be an array`);
|
|
96
|
+
}
|
|
97
|
+
if (config.register && typeof config.register !== "function") {
|
|
98
|
+
throw new Error(`Provider category '${category}' register must be a function`);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
const validConstraints = [
|
|
102
|
+
"filesystem-required",
|
|
103
|
+
"network-required",
|
|
104
|
+
"offline-capable",
|
|
105
|
+
"serverless-compatible",
|
|
106
|
+
"cold-start-optimized",
|
|
107
|
+
"low-memory",
|
|
108
|
+
"edge-compatible",
|
|
109
|
+
"browser-compatible"
|
|
110
|
+
];
|
|
111
|
+
if (definition.constraints) {
|
|
112
|
+
if (!Array.isArray(definition.constraints)) {
|
|
113
|
+
throw new Error("Image constraints must be an array");
|
|
114
|
+
}
|
|
115
|
+
for (const constraint of definition.constraints) {
|
|
116
|
+
if (!validConstraints.includes(constraint)) {
|
|
117
|
+
throw new Error(
|
|
118
|
+
`Invalid constraint '${constraint}'. Valid constraints: ${validConstraints.join(", ")}`
|
|
119
|
+
);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
if (definition.utils) {
|
|
124
|
+
for (const [name, path] of Object.entries(definition.utils)) {
|
|
125
|
+
if (typeof path !== "string") {
|
|
126
|
+
throw new Error(`Utility '${name}' path must be a string`);
|
|
127
|
+
}
|
|
128
|
+
if (!path.startsWith("./")) {
|
|
129
|
+
throw new Error(
|
|
130
|
+
`Utility '${name}' path must be relative (start with './'). Got: ${path}`
|
|
131
|
+
);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
if (definition.extends) {
|
|
136
|
+
if (typeof definition.extends !== "string") {
|
|
137
|
+
throw new Error("Image extends must be a string (parent image name)");
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
142
|
+
0 && (module.exports = {
|
|
143
|
+
defineImage,
|
|
144
|
+
defineProviderCategory,
|
|
145
|
+
validateImageDefinition
|
|
146
|
+
});
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Image definition helper
|
|
3
|
+
*
|
|
4
|
+
* Provides type-safe API for defining base images.
|
|
5
|
+
*/
|
|
6
|
+
import type { ImageDefinition } from './types.js';
|
|
7
|
+
/**
|
|
8
|
+
* Define a Dexto base image.
|
|
9
|
+
*
|
|
10
|
+
* This function provides type checking and validation for image definitions.
|
|
11
|
+
* Use this in your dexto.image.ts file.
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* ```typescript
|
|
15
|
+
* // dexto.image.ts
|
|
16
|
+
* import { defineImage } from '@dexto/core';
|
|
17
|
+
* import { localBlobProvider } from './providers/blob.js';
|
|
18
|
+
*
|
|
19
|
+
* export default defineImage({
|
|
20
|
+
* name: 'local',
|
|
21
|
+
* version: '1.0.0',
|
|
22
|
+
* description: 'Local development base image',
|
|
23
|
+
* target: 'local-development',
|
|
24
|
+
*
|
|
25
|
+
* providers: {
|
|
26
|
+
* blobStore: {
|
|
27
|
+
* providers: [localBlobProvider],
|
|
28
|
+
* },
|
|
29
|
+
* },
|
|
30
|
+
*
|
|
31
|
+
* defaults: {
|
|
32
|
+
* storage: {
|
|
33
|
+
* blob: { type: 'local', storePath: './data/blobs' },
|
|
34
|
+
* },
|
|
35
|
+
* },
|
|
36
|
+
*
|
|
37
|
+
* constraints: ['filesystem-required', 'offline-capable'],
|
|
38
|
+
* });
|
|
39
|
+
* ```
|
|
40
|
+
*
|
|
41
|
+
* @param definition - Image definition object
|
|
42
|
+
* @returns The same definition (for type inference)
|
|
43
|
+
*/
|
|
44
|
+
export declare function defineImage(definition: ImageDefinition): ImageDefinition;
|
|
45
|
+
/**
|
|
46
|
+
* Helper to create a provider category configuration.
|
|
47
|
+
*
|
|
48
|
+
* @example
|
|
49
|
+
* ```typescript
|
|
50
|
+
* import { defineProviderCategory } from '@dexto/core';
|
|
51
|
+
*
|
|
52
|
+
* const blobStore = defineProviderCategory({
|
|
53
|
+
* providers: [localBlobProvider, s3BlobProvider],
|
|
54
|
+
* });
|
|
55
|
+
* ```
|
|
56
|
+
*/
|
|
57
|
+
export declare function defineProviderCategory(config: {
|
|
58
|
+
providers?: any[];
|
|
59
|
+
register?: () => void | Promise<void>;
|
|
60
|
+
}): {
|
|
61
|
+
providers?: any[];
|
|
62
|
+
register?: () => void | Promise<void>;
|
|
63
|
+
};
|
|
64
|
+
/**
|
|
65
|
+
* Validate an image definition.
|
|
66
|
+
* Throws if the definition is invalid.
|
|
67
|
+
*
|
|
68
|
+
* Used by bundler to validate images before building.
|
|
69
|
+
*/
|
|
70
|
+
export declare function validateImageDefinition(definition: ImageDefinition): void;
|
|
71
|
+
//# sourceMappingURL=define-image.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"define-image.d.ts","sourceRoot":"","sources":["../../src/image/define-image.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,wBAAgB,WAAW,CAAC,UAAU,EAAE,eAAe,GAAG,eAAe,CAuBxE;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE;IAC3C,SAAS,CAAC,EAAE,GAAG,EAAE,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACzC;gBAFe,GAAG,EAAE;eACN,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;EAMxC;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,eAAe,GAAG,IAAI,CAiHzE"}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
import "../chunk-PTJYTZNU.js";
|
|
2
|
+
function defineImage(definition) {
|
|
3
|
+
if (!definition.name) {
|
|
4
|
+
throw new Error("Image definition must have a name");
|
|
5
|
+
}
|
|
6
|
+
if (!definition.version) {
|
|
7
|
+
throw new Error("Image definition must have a version");
|
|
8
|
+
}
|
|
9
|
+
if (!definition.description) {
|
|
10
|
+
throw new Error("Image definition must have a description");
|
|
11
|
+
}
|
|
12
|
+
for (const [category, config] of Object.entries(definition.providers)) {
|
|
13
|
+
if (!config) continue;
|
|
14
|
+
if (!config.providers && !config.register) {
|
|
15
|
+
throw new Error(
|
|
16
|
+
`Provider category '${category}' must have either 'providers' array or 'register' function`
|
|
17
|
+
);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
return definition;
|
|
21
|
+
}
|
|
22
|
+
function defineProviderCategory(config) {
|
|
23
|
+
if (!config.providers && !config.register) {
|
|
24
|
+
throw new Error("Provider category must have either providers or register function");
|
|
25
|
+
}
|
|
26
|
+
return config;
|
|
27
|
+
}
|
|
28
|
+
function validateImageDefinition(definition) {
|
|
29
|
+
if (!definition.name || typeof definition.name !== "string") {
|
|
30
|
+
throw new Error("Image name must be a non-empty string");
|
|
31
|
+
}
|
|
32
|
+
if (!definition.version || typeof definition.version !== "string") {
|
|
33
|
+
throw new Error("Image version must be a non-empty string");
|
|
34
|
+
}
|
|
35
|
+
if (!definition.description || typeof definition.description !== "string") {
|
|
36
|
+
throw new Error("Image description must be a non-empty string");
|
|
37
|
+
}
|
|
38
|
+
const versionRegex = /^\d+\.\d+\.\d+(-[a-zA-Z0-9.-]+)?$/;
|
|
39
|
+
if (!versionRegex.test(definition.version)) {
|
|
40
|
+
throw new Error(
|
|
41
|
+
`Image version '${definition.version}' is not valid semver. Expected format: x.y.z`
|
|
42
|
+
);
|
|
43
|
+
}
|
|
44
|
+
const validTargets = [
|
|
45
|
+
"local-development",
|
|
46
|
+
"cloud-production",
|
|
47
|
+
"edge-serverless",
|
|
48
|
+
"embedded-iot",
|
|
49
|
+
"enterprise",
|
|
50
|
+
"custom"
|
|
51
|
+
];
|
|
52
|
+
if (definition.target && !validTargets.includes(definition.target)) {
|
|
53
|
+
throw new Error(
|
|
54
|
+
`Invalid target '${definition.target}'. Valid targets: ${validTargets.join(", ")}`
|
|
55
|
+
);
|
|
56
|
+
}
|
|
57
|
+
const hasProviders = definition.providers && Object.values(definition.providers).some((config) => config !== void 0);
|
|
58
|
+
if (!hasProviders && !definition.extends) {
|
|
59
|
+
throw new Error(
|
|
60
|
+
"Image must either define at least one provider category or extend a base image"
|
|
61
|
+
);
|
|
62
|
+
}
|
|
63
|
+
for (const [category, config] of Object.entries(definition.providers)) {
|
|
64
|
+
if (!config) continue;
|
|
65
|
+
if (!config.providers && !config.register) {
|
|
66
|
+
throw new Error(
|
|
67
|
+
`Provider category '${category}' must have either 'providers' array or 'register' function`
|
|
68
|
+
);
|
|
69
|
+
}
|
|
70
|
+
if (config.providers && !Array.isArray(config.providers)) {
|
|
71
|
+
throw new Error(`Provider category '${category}' providers must be an array`);
|
|
72
|
+
}
|
|
73
|
+
if (config.register && typeof config.register !== "function") {
|
|
74
|
+
throw new Error(`Provider category '${category}' register must be a function`);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
const validConstraints = [
|
|
78
|
+
"filesystem-required",
|
|
79
|
+
"network-required",
|
|
80
|
+
"offline-capable",
|
|
81
|
+
"serverless-compatible",
|
|
82
|
+
"cold-start-optimized",
|
|
83
|
+
"low-memory",
|
|
84
|
+
"edge-compatible",
|
|
85
|
+
"browser-compatible"
|
|
86
|
+
];
|
|
87
|
+
if (definition.constraints) {
|
|
88
|
+
if (!Array.isArray(definition.constraints)) {
|
|
89
|
+
throw new Error("Image constraints must be an array");
|
|
90
|
+
}
|
|
91
|
+
for (const constraint of definition.constraints) {
|
|
92
|
+
if (!validConstraints.includes(constraint)) {
|
|
93
|
+
throw new Error(
|
|
94
|
+
`Invalid constraint '${constraint}'. Valid constraints: ${validConstraints.join(", ")}`
|
|
95
|
+
);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
if (definition.utils) {
|
|
100
|
+
for (const [name, path] of Object.entries(definition.utils)) {
|
|
101
|
+
if (typeof path !== "string") {
|
|
102
|
+
throw new Error(`Utility '${name}' path must be a string`);
|
|
103
|
+
}
|
|
104
|
+
if (!path.startsWith("./")) {
|
|
105
|
+
throw new Error(
|
|
106
|
+
`Utility '${name}' path must be relative (start with './'). Got: ${path}`
|
|
107
|
+
);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
if (definition.extends) {
|
|
112
|
+
if (typeof definition.extends !== "string") {
|
|
113
|
+
throw new Error("Image extends must be a string (parent image name)");
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
export {
|
|
118
|
+
defineImage,
|
|
119
|
+
defineProviderCategory,
|
|
120
|
+
validateImageDefinition
|
|
121
|
+
};
|
|
@@ -16,26 +16,17 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
16
16
|
return to;
|
|
17
17
|
};
|
|
18
18
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
-
var
|
|
20
|
-
__export(
|
|
21
|
-
|
|
19
|
+
var image_exports = {};
|
|
20
|
+
__export(image_exports, {
|
|
21
|
+
defineImage: () => import_define_image.defineImage,
|
|
22
|
+
defineProviderCategory: () => import_define_image.defineProviderCategory,
|
|
23
|
+
validateImageDefinition: () => import_define_image.validateImageDefinition
|
|
22
24
|
});
|
|
23
|
-
module.exports = __toCommonJS(
|
|
24
|
-
|
|
25
|
-
/**
|
|
26
|
-
* Assumes roughly 4 characters per token.
|
|
27
|
-
* @param text Text content to count tokens for
|
|
28
|
-
* @returns Approximate number of tokens
|
|
29
|
-
*/
|
|
30
|
-
countTokens(text) {
|
|
31
|
-
if (!text) return 0;
|
|
32
|
-
return Math.ceil(text.length / 4);
|
|
33
|
-
}
|
|
34
|
-
getProviderName() {
|
|
35
|
-
return "default";
|
|
36
|
-
}
|
|
37
|
-
}
|
|
25
|
+
module.exports = __toCommonJS(image_exports);
|
|
26
|
+
var import_define_image = require("./define-image.js");
|
|
38
27
|
// Annotate the CommonJS export names for ESM import in node:
|
|
39
28
|
0 && (module.exports = {
|
|
40
|
-
|
|
29
|
+
defineImage,
|
|
30
|
+
defineProviderCategory,
|
|
31
|
+
validateImageDefinition
|
|
41
32
|
});
|