@dexto/core 1.1.9 → 1.1.11
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/dist/Dexto.cjs +261 -0
- package/dist/Dexto.d.ts +212 -0
- package/dist/Dexto.d.ts.map +1 -0
- package/dist/Dexto.js +236 -0
- package/dist/agent/DextoAgent.cjs +428 -123
- package/dist/agent/DextoAgent.d.ts +170 -102
- package/dist/agent/DextoAgent.d.ts.map +1 -0
- package/dist/agent/DextoAgent.js +428 -123
- package/dist/agent/agentCard.d.ts +4 -7
- package/dist/agent/agentCard.d.ts.map +1 -0
- package/dist/agent/error-codes.cjs +2 -0
- package/dist/agent/error-codes.d.ts +4 -3
- package/dist/agent/error-codes.d.ts.map +1 -0
- package/dist/agent/error-codes.js +2 -0
- package/dist/agent/errors.cjs +13 -0
- package/dist/agent/errors.d.ts +6 -17
- package/dist/agent/errors.d.ts.map +1 -0
- package/dist/agent/errors.js +13 -0
- package/dist/agent/index.cjs +3 -0
- package/dist/agent/index.d.ts +6 -57
- package/dist/agent/index.d.ts.map +1 -0
- package/dist/agent/index.js +2 -0
- package/dist/agent/registry/error-codes.cjs +2 -0
- package/dist/agent/registry/error-codes.d.ts +4 -3
- package/dist/agent/registry/error-codes.d.ts.map +1 -0
- package/dist/agent/registry/error-codes.js +2 -0
- package/dist/agent/registry/errors.cjs +58 -28
- package/dist/agent/registry/errors.d.ts +32 -36
- package/dist/agent/registry/errors.d.ts.map +1 -0
- package/dist/agent/registry/errors.js +58 -28
- package/dist/agent/registry/registry.cjs +242 -54
- package/dist/agent/registry/registry.d.ts +84 -21
- package/dist/agent/registry/registry.d.ts.map +1 -0
- package/dist/agent/registry/registry.js +251 -55
- package/dist/agent/registry/types.cjs +36 -3
- package/dist/agent/registry/types.d.ts +66 -24
- package/dist/agent/registry/types.d.ts.map +1 -0
- package/dist/agent/registry/types.js +33 -2
- package/dist/agent/registry/user-registry.cjs +140 -0
- package/dist/agent/registry/user-registry.d.ts +34 -0
- package/dist/agent/registry/user-registry.d.ts.map +1 -0
- package/dist/agent/registry/user-registry.js +104 -0
- package/dist/agent/schemas.cjs +17 -3
- package/dist/agent/schemas.d.ts +685 -463
- package/dist/agent/schemas.d.ts.map +1 -0
- package/dist/agent/schemas.js +17 -3
- package/dist/agent/state-manager.d.ts +7 -12
- package/dist/agent/state-manager.d.ts.map +1 -0
- package/dist/approval/error-codes.cjs +44 -0
- package/dist/approval/error-codes.d.ts +21 -0
- package/dist/approval/error-codes.d.ts.map +1 -0
- package/dist/approval/error-codes.js +20 -0
- package/dist/approval/errors.cjs +251 -0
- package/dist/approval/errors.d.ts +110 -0
- package/dist/approval/errors.d.ts.map +1 -0
- package/dist/approval/errors.js +227 -0
- package/dist/approval/index.cjs +84 -0
- package/dist/approval/index.d.ts +12 -0
- package/dist/approval/index.d.ts.map +1 -0
- package/dist/approval/index.js +55 -0
- package/dist/approval/manager.cjs +159 -0
- package/dist/approval/manager.d.ts +109 -0
- package/dist/approval/manager.d.ts.map +1 -0
- package/dist/approval/manager.js +135 -0
- package/dist/approval/providers/event-based-approval-provider.cjs +156 -0
- package/dist/approval/providers/event-based-approval-provider.d.ts +39 -0
- package/dist/approval/providers/event-based-approval-provider.d.ts.map +1 -0
- package/dist/approval/providers/event-based-approval-provider.js +132 -0
- package/dist/approval/providers/factory.cjs +38 -0
- package/dist/approval/providers/factory.d.ts +12 -0
- package/dist/approval/providers/factory.d.ts.map +1 -0
- package/dist/approval/providers/factory.js +14 -0
- package/dist/approval/providers/noop-approval-provider.cjs +54 -0
- package/dist/approval/providers/noop-approval-provider.d.ts +18 -0
- package/dist/approval/providers/noop-approval-provider.d.ts.map +1 -0
- package/dist/approval/providers/noop-approval-provider.js +30 -0
- package/dist/approval/schemas.cjs +168 -0
- package/dist/approval/schemas.d.ts +602 -0
- package/dist/approval/schemas.d.ts.map +1 -0
- package/dist/approval/schemas.js +126 -0
- package/dist/approval/types.cjs +41 -0
- package/dist/approval/types.d.ts +140 -0
- package/dist/approval/types.d.ts.map +1 -0
- package/dist/approval/types.js +16 -0
- package/dist/config/agent-resolver.d.ts +3 -4
- package/dist/config/agent-resolver.d.ts.map +1 -0
- package/dist/config/error-codes.d.ts +2 -3
- package/dist/config/error-codes.d.ts.map +1 -0
- package/dist/config/errors.d.ts +3 -18
- package/dist/config/errors.d.ts.map +1 -0
- package/dist/config/index.d.ts +4 -7
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/loader.d.ts +2 -5
- package/dist/config/loader.d.ts.map +1 -0
- package/dist/config/writer.d.ts +8 -11
- package/dist/config/writer.d.ts.map +1 -0
- package/dist/context/compression/middle-removal.d.ts +3 -6
- package/dist/context/compression/middle-removal.d.ts.map +1 -0
- package/dist/context/compression/oldest-removal.d.ts +3 -6
- package/dist/context/compression/oldest-removal.d.ts.map +1 -0
- package/dist/context/compression/types.d.ts +2 -5
- package/dist/context/compression/types.d.ts.map +1 -0
- package/dist/context/error-codes.d.ts +2 -3
- package/dist/context/error-codes.d.ts.map +1 -0
- package/dist/context/errors.d.ts +3 -18
- package/dist/context/errors.d.ts.map +1 -0
- package/dist/context/index.cjs +11 -0
- package/dist/context/index.d.ts +4 -19
- package/dist/context/index.d.ts.map +1 -0
- package/dist/context/index.js +5 -0
- package/dist/context/manager.cjs +121 -24
- package/dist/context/manager.d.ts +28 -20
- package/dist/context/manager.d.ts.map +1 -0
- package/dist/context/manager.js +127 -25
- package/dist/context/media-helpers.cjs +40 -0
- package/dist/context/media-helpers.d.ts +15 -0
- package/dist/context/media-helpers.d.ts.map +1 -0
- package/dist/context/media-helpers.js +15 -0
- package/dist/context/types.d.ts +27 -10
- package/dist/context/types.d.ts.map +1 -0
- package/dist/context/utils.cjs +811 -71
- package/dist/context/utils.d.ts +78 -15
- package/dist/context/utils.d.ts.map +1 -0
- package/dist/context/utils.js +802 -70
- package/dist/errors/DextoBaseError.d.ts +2 -3
- package/dist/errors/DextoBaseError.d.ts.map +1 -0
- package/dist/errors/DextoRuntimeError.d.ts +5 -16
- package/dist/errors/DextoRuntimeError.d.ts.map +1 -0
- package/dist/errors/DextoValidationError.d.ts +3 -16
- package/dist/errors/DextoValidationError.d.ts.map +1 -0
- package/dist/errors/index.d.ts +7 -14
- package/dist/errors/index.d.ts.map +1 -0
- package/dist/errors/result-bridge.d.ts +3 -18
- package/dist/errors/result-bridge.d.ts.map +1 -0
- package/dist/errors/types.cjs +4 -0
- package/dist/errors/types.d.ts +27 -20
- package/dist/errors/types.d.ts.map +1 -0
- package/dist/errors/types.js +4 -0
- package/dist/events/index.cjs +8 -3
- package/dist/events/index.d.ts +63 -35
- package/dist/events/index.d.ts.map +1 -0
- package/dist/events/index.js +8 -3
- package/dist/index.browser.cjs +36 -0
- package/dist/index.browser.d.ts +24 -51
- package/dist/index.browser.d.ts.map +1 -0
- package/dist/index.browser.js +34 -1
- package/dist/index.cjs +29 -1
- package/dist/index.d.ts +33 -89
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +14 -0
- package/dist/llm/error-codes.d.ts +2 -3
- package/dist/llm/error-codes.d.ts.map +1 -0
- package/dist/llm/errors.d.ts +3 -18
- package/dist/llm/errors.d.ts.map +1 -0
- package/dist/llm/formatters/anthropic.d.ts +2 -4
- package/dist/llm/formatters/anthropic.d.ts.map +1 -0
- package/dist/llm/formatters/factory.d.ts +3 -6
- package/dist/llm/formatters/factory.d.ts.map +1 -0
- package/dist/llm/formatters/openai.d.ts +2 -4
- package/dist/llm/formatters/openai.d.ts.map +1 -0
- package/dist/llm/formatters/types.d.ts +2 -4
- package/dist/llm/formatters/types.d.ts.map +1 -0
- package/dist/llm/formatters/vercel.d.ts +6 -7
- package/dist/llm/formatters/vercel.d.ts.map +1 -0
- package/dist/llm/index.d.ts +8 -39
- package/dist/llm/index.d.ts.map +1 -0
- package/dist/llm/registry.cjs +15 -1
- package/dist/llm/registry.d.ts +26 -29
- package/dist/llm/registry.d.ts.map +1 -0
- package/dist/llm/registry.js +15 -1
- package/dist/llm/resolver.d.ts +6 -20
- package/dist/llm/resolver.d.ts.map +1 -0
- package/dist/llm/schemas.d.ts +15 -17
- package/dist/llm/schemas.d.ts.map +1 -0
- package/dist/llm/services/anthropic.cjs +24 -11
- package/dist/llm/services/anthropic.d.ts +7 -32
- package/dist/llm/services/anthropic.d.ts.map +1 -0
- package/dist/llm/services/anthropic.js +24 -11
- package/dist/llm/services/factory.cjs +21 -15
- package/dist/llm/services/factory.d.ts +5 -32
- package/dist/llm/services/factory.d.ts.map +1 -0
- package/dist/llm/services/factory.js +21 -15
- package/dist/llm/services/index.d.ts +2 -21
- package/dist/llm/services/index.d.ts.map +1 -0
- package/dist/llm/services/openai.cjs +33 -16
- package/dist/llm/services/openai.d.ts +7 -32
- package/dist/llm/services/openai.d.ts.map +1 -0
- package/dist/llm/services/openai.js +33 -16
- package/dist/llm/services/test-utils.integration.cjs +2 -2
- package/dist/llm/services/test-utils.integration.d.ts +8 -49
- package/dist/llm/services/test-utils.integration.d.ts.map +1 -0
- package/dist/llm/services/test-utils.integration.js +2 -2
- package/dist/llm/services/types.d.ts +5 -22
- package/dist/llm/services/types.d.ts.map +1 -0
- package/dist/llm/services/vercel.cjs +52 -21
- package/dist/llm/services/vercel.d.ts +12 -35
- package/dist/llm/services/vercel.d.ts.map +1 -0
- package/dist/llm/services/vercel.js +53 -22
- package/dist/llm/tokenizer/anthropic.d.ts +2 -4
- package/dist/llm/tokenizer/anthropic.d.ts.map +1 -0
- package/dist/llm/tokenizer/default.d.ts +2 -4
- package/dist/llm/tokenizer/default.d.ts.map +1 -0
- package/dist/llm/tokenizer/factory.d.ts +3 -5
- package/dist/llm/tokenizer/factory.d.ts.map +1 -0
- package/dist/llm/tokenizer/google.d.ts +2 -4
- package/dist/llm/tokenizer/google.d.ts.map +1 -0
- package/dist/llm/tokenizer/openai.d.ts +2 -4
- package/dist/llm/tokenizer/openai.d.ts.map +1 -0
- package/dist/llm/tokenizer/types.d.ts +3 -4
- package/dist/llm/tokenizer/types.d.ts.map +1 -0
- package/dist/llm/types.d.ts +9 -10
- package/dist/llm/types.d.ts.map +1 -0
- package/dist/llm/validation.d.ts +8 -23
- package/dist/llm/validation.d.ts.map +1 -0
- package/dist/logger/browser.d.ts +4 -5
- package/dist/logger/browser.d.ts.map +1 -0
- package/dist/logger/index.d.ts +2 -1
- package/dist/logger/index.d.ts.map +1 -0
- package/dist/logger/logger.cjs +35 -7
- package/dist/logger/logger.d.ts +5 -5
- package/dist/logger/logger.d.ts.map +1 -0
- package/dist/logger/logger.js +35 -7
- package/dist/mcp/error-codes.d.ts +2 -3
- package/dist/mcp/error-codes.d.ts.map +1 -0
- package/dist/mcp/errors.d.ts +2 -17
- package/dist/mcp/errors.d.ts.map +1 -0
- package/dist/mcp/index.d.ts +8 -26
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/manager.cjs +462 -114
- package/dist/mcp/manager.d.ts +117 -58
- package/dist/mcp/manager.d.ts.map +1 -0
- package/dist/mcp/manager.js +462 -114
- package/dist/mcp/mcp-client.cjs +172 -10
- package/dist/mcp/mcp-client.d.ts +36 -14
- package/dist/mcp/mcp-client.d.ts.map +1 -0
- package/dist/mcp/mcp-client.js +176 -10
- package/dist/mcp/resolver.d.ts +5 -20
- package/dist/mcp/resolver.d.ts.map +1 -0
- package/dist/mcp/schemas.cjs +13 -5
- package/dist/mcp/schemas.d.ts +31 -28
- package/dist/mcp/schemas.d.ts.map +1 -0
- package/dist/mcp/schemas.js +10 -5
- package/dist/mcp/types.d.ts +18 -10
- package/dist/mcp/types.d.ts.map +1 -0
- package/dist/memory/error-codes.cjs +39 -0
- package/dist/memory/error-codes.d.ts +15 -0
- package/dist/memory/error-codes.d.ts.map +1 -0
- package/dist/memory/error-codes.js +15 -0
- package/dist/memory/errors.cjs +112 -0
- package/dist/memory/errors.d.ts +16 -0
- package/dist/memory/errors.d.ts.map +1 -0
- package/dist/memory/errors.js +88 -0
- package/dist/memory/index.cjs +43 -0
- package/dist/memory/index.d.ts +6 -0
- package/dist/memory/index.d.ts.map +1 -0
- package/dist/memory/index.js +18 -0
- package/dist/memory/manager.cjs +214 -0
- package/dist/memory/manager.d.ts +56 -0
- package/dist/memory/manager.d.ts.map +1 -0
- package/dist/memory/manager.js +195 -0
- package/dist/memory/schemas.cjs +82 -0
- package/dist/memory/schemas.d.ts +129 -0
- package/dist/memory/schemas.d.ts.map +1 -0
- package/dist/memory/schemas.js +53 -0
- package/dist/memory/types.d.ts +76 -0
- package/dist/memory/types.d.ts.map +1 -0
- package/dist/plugins/builtins/content-policy.cjs +112 -0
- package/dist/plugins/builtins/content-policy.d.ts +26 -0
- package/dist/plugins/builtins/content-policy.d.ts.map +1 -0
- package/dist/plugins/builtins/content-policy.js +88 -0
- package/dist/plugins/builtins/response-sanitizer.cjs +102 -0
- package/dist/plugins/builtins/response-sanitizer.d.ts +25 -0
- package/dist/plugins/builtins/response-sanitizer.d.ts.map +1 -0
- package/dist/plugins/builtins/response-sanitizer.js +78 -0
- package/dist/plugins/error-codes.cjs +39 -0
- package/dist/plugins/error-codes.d.ts +26 -0
- package/dist/plugins/error-codes.d.ts.map +1 -0
- package/dist/plugins/error-codes.js +15 -0
- package/dist/plugins/index.cjs +54 -0
- package/dist/plugins/index.d.ts +19 -0
- package/dist/plugins/index.d.ts.map +1 -0
- package/dist/plugins/index.js +24 -0
- package/dist/plugins/loader.cjs +151 -0
- package/dist/plugins/loader.d.ts +30 -0
- package/dist/plugins/loader.d.ts.map +1 -0
- package/dist/plugins/loader.js +124 -0
- package/dist/plugins/manager.cjs +386 -0
- package/dist/plugins/manager.d.ts +97 -0
- package/dist/plugins/manager.d.ts.map +1 -0
- package/dist/plugins/manager.js +362 -0
- package/dist/plugins/registrations/builtins.cjs +51 -0
- package/dist/plugins/registrations/builtins.d.ts +17 -0
- package/dist/plugins/registrations/builtins.d.ts.map +1 -0
- package/dist/plugins/registrations/builtins.js +27 -0
- package/dist/plugins/schemas.cjs +61 -0
- package/dist/plugins/schemas.d.ts +138 -0
- package/dist/plugins/schemas.d.ts.map +1 -0
- package/dist/plugins/schemas.js +35 -0
- package/dist/plugins/types.d.ts +152 -0
- package/dist/plugins/types.d.ts.map +1 -0
- package/dist/preferences/constants.d.ts +2 -3
- package/dist/preferences/constants.d.ts.map +1 -0
- package/dist/preferences/error-codes.d.ts +2 -3
- package/dist/preferences/error-codes.d.ts.map +1 -0
- package/dist/preferences/errors.d.ts +4 -19
- package/dist/preferences/errors.d.ts.map +1 -0
- package/dist/preferences/index.d.ts +5 -20
- package/dist/preferences/index.d.ts.map +1 -0
- package/dist/preferences/loader.d.ts +9 -12
- package/dist/preferences/loader.d.ts.map +1 -0
- package/dist/preferences/schemas.d.ts +19 -21
- package/dist/preferences/schemas.d.ts.map +1 -0
- package/dist/prompts/error-codes.cjs +38 -0
- package/dist/prompts/error-codes.d.ts +15 -0
- package/dist/prompts/error-codes.d.ts.map +1 -0
- package/dist/prompts/error-codes.js +14 -0
- package/dist/prompts/errors.cjs +144 -0
- package/dist/prompts/errors.d.ts +45 -0
- package/dist/prompts/errors.d.ts.map +1 -0
- package/dist/prompts/errors.js +120 -0
- package/dist/prompts/index.cjs +53 -0
- package/dist/prompts/index.d.ts +13 -0
- package/dist/prompts/index.d.ts.map +1 -0
- package/dist/prompts/index.js +20 -0
- package/dist/prompts/name-validation.cjs +45 -0
- package/dist/prompts/name-validation.d.ts +9 -0
- package/dist/prompts/name-validation.d.ts.map +1 -0
- package/dist/prompts/name-validation.js +18 -0
- package/dist/prompts/prompt-manager.cjs +374 -0
- package/dist/prompts/prompt-manager.d.ts +74 -0
- package/dist/prompts/prompt-manager.d.ts.map +1 -0
- package/dist/prompts/prompt-manager.js +352 -0
- package/dist/prompts/providers/custom-prompt-provider.cjs +283 -0
- package/dist/prompts/providers/custom-prompt-provider.d.ts +36 -0
- package/dist/prompts/providers/custom-prompt-provider.d.ts.map +1 -0
- package/dist/prompts/providers/custom-prompt-provider.js +259 -0
- package/dist/prompts/providers/file-prompt-provider.cjs +399 -0
- package/dist/prompts/providers/file-prompt-provider.d.ts +47 -0
- package/dist/prompts/providers/file-prompt-provider.d.ts.map +1 -0
- package/dist/prompts/providers/file-prompt-provider.js +375 -0
- package/dist/prompts/providers/mcp-prompt-provider.cjs +102 -0
- package/dist/prompts/providers/mcp-prompt-provider.d.ts +35 -0
- package/dist/prompts/providers/mcp-prompt-provider.d.ts.map +1 -0
- package/dist/prompts/providers/mcp-prompt-provider.js +78 -0
- package/dist/prompts/providers/starter-prompt-provider.cjs +170 -0
- package/dist/prompts/providers/starter-prompt-provider.d.ts +45 -0
- package/dist/prompts/providers/starter-prompt-provider.d.ts.map +1 -0
- package/dist/prompts/providers/starter-prompt-provider.js +146 -0
- package/dist/prompts/schemas.cjs +54 -0
- package/dist/prompts/schemas.d.ts +65 -0
- package/dist/prompts/schemas.d.ts.map +1 -0
- package/dist/prompts/schemas.js +30 -0
- package/dist/{storage/backend/cache-backend.cjs → prompts/types.cjs} +2 -2
- package/dist/prompts/types.d.ts +64 -0
- package/dist/prompts/types.d.ts.map +1 -0
- package/dist/prompts/utils.cjs +176 -0
- package/dist/prompts/utils.d.ts +32 -0
- package/dist/prompts/utils.d.ts.map +1 -0
- package/dist/prompts/utils.js +149 -0
- package/dist/resources/error-codes.cjs +38 -0
- package/dist/resources/error-codes.d.ts +13 -0
- package/dist/resources/error-codes.d.ts.map +1 -0
- package/dist/resources/error-codes.js +14 -0
- package/dist/resources/errors.cjs +155 -0
- package/dist/resources/errors.d.ts +48 -0
- package/dist/resources/errors.d.ts.map +1 -0
- package/dist/resources/errors.js +131 -0
- package/dist/resources/handlers/blob-handler.cjs +230 -0
- package/dist/resources/handlers/blob-handler.d.ts +38 -0
- package/dist/resources/handlers/blob-handler.d.ts.map +1 -0
- package/dist/resources/handlers/blob-handler.js +206 -0
- package/dist/resources/handlers/factory.cjs +50 -0
- package/dist/resources/handlers/factory.d.ts +11 -0
- package/dist/resources/handlers/factory.d.ts.map +1 -0
- package/dist/resources/handlers/factory.js +25 -0
- package/dist/resources/handlers/filesystem-handler.cjs +385 -0
- package/dist/resources/handlers/filesystem-handler.d.ts +35 -0
- package/dist/resources/handlers/filesystem-handler.d.ts.map +1 -0
- package/dist/resources/handlers/filesystem-handler.js +351 -0
- package/dist/{storage/backend/database-backend.cjs → resources/handlers/types.cjs} +2 -2
- package/dist/resources/handlers/types.d.ts +15 -0
- package/dist/resources/handlers/types.d.ts.map +1 -0
- package/dist/resources/index.cjs +58 -0
- package/dist/resources/index.d.ts +39 -0
- package/dist/resources/index.d.ts.map +1 -0
- package/dist/resources/index.js +34 -0
- package/dist/resources/internal-provider.cjs +141 -0
- package/dist/resources/internal-provider.d.ts +19 -0
- package/dist/resources/internal-provider.d.ts.map +1 -0
- package/dist/resources/internal-provider.js +117 -0
- package/dist/resources/manager.cjs +221 -0
- package/dist/resources/manager.d.ts +29 -0
- package/dist/resources/manager.d.ts.map +1 -0
- package/dist/resources/manager.js +197 -0
- package/dist/resources/reference-parser.cjs +217 -0
- package/dist/resources/reference-parser.d.ts +33 -0
- package/dist/resources/reference-parser.d.ts.map +1 -0
- package/dist/resources/reference-parser.js +190 -0
- package/dist/resources/schemas.cjs +98 -0
- package/dist/resources/schemas.d.ts +212 -0
- package/dist/resources/schemas.d.ts.map +1 -0
- package/dist/resources/schemas.js +72 -0
- package/dist/resources/types.cjs +16 -0
- package/dist/resources/types.d.ts +57 -0
- package/dist/resources/types.d.ts.map +1 -0
- package/dist/resources/types.js +0 -0
- package/dist/search/index.d.ts +2 -4
- package/dist/search/index.d.ts.map +1 -0
- package/dist/search/search-service.d.ts +5 -9
- package/dist/search/search-service.d.ts.map +1 -0
- package/dist/search/types.d.ts +7 -10
- package/dist/search/types.d.ts.map +1 -0
- package/dist/session/chat-session.cjs +103 -10
- package/dist/session/chat-session.d.ts +30 -41
- package/dist/session/chat-session.d.ts.map +1 -0
- package/dist/session/chat-session.js +103 -10
- package/dist/session/error-codes.d.ts +2 -3
- package/dist/session/error-codes.d.ts.map +1 -0
- package/dist/session/errors.d.ts +2 -17
- package/dist/session/errors.d.ts.map +1 -0
- package/dist/session/history/database.d.ts +6 -9
- package/dist/session/history/database.d.ts.map +1 -0
- package/dist/session/history/factory.d.ts +4 -8
- package/dist/session/history/factory.d.ts.map +1 -0
- package/dist/session/history/memory.cjs +39 -0
- package/dist/session/history/memory.d.ts +14 -0
- package/dist/session/history/memory.d.ts.map +1 -0
- package/dist/session/history/memory.js +15 -0
- package/dist/session/history/types.d.ts +3 -6
- package/dist/session/history/types.d.ts.map +1 -0
- package/dist/session/index.d.ts +3 -50
- package/dist/session/index.d.ts.map +1 -0
- package/dist/session/schemas.d.ts +4 -6
- package/dist/session/schemas.d.ts.map +1 -0
- package/dist/session/session-manager.cjs +63 -29
- package/dist/session/session-manager.d.ts +27 -43
- package/dist/session/session-manager.d.ts.map +1 -0
- package/dist/session/session-manager.js +63 -29
- package/dist/session/title-generator.cjs +140 -0
- package/dist/session/title-generator.d.ts +22 -0
- package/dist/session/title-generator.d.ts.map +1 -0
- package/dist/session/title-generator.js +115 -0
- package/dist/storage/blob/factory.cjs +50 -0
- package/dist/storage/blob/factory.d.ts +8 -0
- package/dist/storage/blob/factory.d.ts.map +1 -0
- package/dist/storage/blob/factory.js +26 -0
- package/dist/storage/blob/local-blob-store.cjs +487 -0
- package/dist/storage/blob/local-blob-store.d.ts +56 -0
- package/dist/storage/blob/local-blob-store.d.ts.map +1 -0
- package/dist/storage/blob/local-blob-store.js +453 -0
- package/dist/storage/blob/schemas.cjs +53 -0
- package/dist/storage/blob/schemas.d.ts +80 -0
- package/dist/storage/blob/schemas.d.ts.map +1 -0
- package/dist/storage/blob/schemas.js +28 -0
- package/dist/storage/blob/types.cjs +16 -0
- package/dist/storage/blob/types.d.ts +154 -0
- package/dist/storage/blob/types.d.ts.map +1 -0
- package/dist/storage/blob/types.js +0 -0
- package/dist/storage/cache/factory.cjs +63 -0
- package/dist/storage/cache/factory.d.ts +8 -0
- package/dist/storage/cache/factory.d.ts.map +1 -0
- package/dist/storage/cache/factory.js +29 -0
- package/dist/storage/cache/memory-cache-store.cjs +107 -0
- package/dist/storage/cache/memory-cache-store.d.ts +26 -0
- package/dist/storage/cache/memory-cache-store.d.ts.map +1 -0
- package/dist/storage/cache/memory-cache-store.js +83 -0
- package/dist/storage/{backend/redis-backend.cjs → cache/redis-store.cjs} +8 -22
- package/dist/storage/{backend/redis-backend.d.ts → cache/redis-store.d.ts} +8 -14
- package/dist/storage/cache/redis-store.d.ts.map +1 -0
- package/dist/storage/{backend/redis-backend.js → cache/redis-store.js} +4 -18
- package/dist/storage/cache/schemas.cjs +77 -0
- package/dist/storage/cache/schemas.d.ts +151 -0
- package/dist/storage/cache/schemas.d.ts.map +1 -0
- package/dist/storage/cache/schemas.js +52 -0
- package/dist/storage/cache/types.cjs +16 -0
- package/dist/storage/{backend/cache-backend.d.cts → cache/types.d.ts} +3 -4
- package/dist/storage/cache/types.d.ts.map +1 -0
- package/dist/storage/cache/types.js +0 -0
- package/dist/storage/database/factory.cjs +84 -0
- package/dist/storage/database/factory.d.ts +8 -0
- package/dist/storage/database/factory.d.ts.map +1 -0
- package/dist/storage/database/factory.js +50 -0
- package/dist/storage/{backend/memory-backend.cjs → database/memory-database-store.cjs} +10 -28
- package/dist/storage/{backend/memory-backend.d.ts → database/memory-database-store.d.ts} +7 -12
- package/dist/storage/database/memory-database-store.d.ts.map +1 -0
- package/dist/storage/{backend/memory-backend.js → database/memory-database-store.js} +6 -24
- package/dist/storage/{backend/postgres-backend.cjs → database/postgres-store.cjs} +11 -11
- package/dist/storage/{backend/postgres-backend.d.ts → database/postgres-store.d.ts} +8 -11
- package/dist/storage/database/postgres-store.d.ts.map +1 -0
- package/dist/storage/{backend/postgres-backend.js → database/postgres-store.js} +7 -7
- package/dist/storage/database/schemas.cjs +89 -0
- package/dist/storage/database/schemas.d.ts +227 -0
- package/dist/storage/database/schemas.d.ts.map +1 -0
- package/dist/storage/database/schemas.js +64 -0
- package/dist/storage/{backend/sqlite-backend.cjs → database/sqlite-store.cjs} +15 -14
- package/dist/storage/{backend/sqlite-backend.d.ts → database/sqlite-store.d.ts} +8 -11
- package/dist/storage/database/sqlite-store.d.ts.map +1 -0
- package/dist/storage/{backend/sqlite-backend.js → database/sqlite-store.js} +11 -10
- package/dist/storage/database/types.cjs +16 -0
- package/dist/storage/{backend/database-backend.d.cts → database/types.d.ts} +3 -4
- package/dist/storage/database/types.d.ts.map +1 -0
- package/dist/storage/database/types.js +0 -0
- package/dist/storage/error-codes.cjs +15 -0
- package/dist/storage/error-codes.d.ts +19 -5
- package/dist/storage/error-codes.d.ts.map +1 -0
- package/dist/storage/error-codes.js +15 -0
- package/dist/storage/errors.cjs +195 -7
- package/dist/storage/errors.d.ts +71 -19
- package/dist/storage/errors.d.ts.map +1 -0
- package/dist/storage/errors.js +189 -1
- package/dist/storage/index.cjs +24 -5
- package/dist/storage/index.d.ts +48 -7
- package/dist/storage/index.d.ts.map +1 -0
- package/dist/storage/index.js +20 -4
- package/dist/storage/schemas.cjs +22 -84
- package/dist/storage/schemas.d.ts +98 -574
- package/dist/storage/schemas.d.ts.map +1 -0
- package/dist/storage/schemas.js +25 -84
- package/dist/storage/storage-manager.cjs +131 -116
- package/dist/storage/storage-manager.d.ts +51 -25
- package/dist/storage/storage-manager.d.ts.map +1 -0
- package/dist/storage/storage-manager.js +130 -105
- package/dist/storage/types.d.ts +7 -5
- package/dist/storage/types.d.ts.map +1 -0
- package/dist/systemPrompt/contributors.cjs +54 -0
- package/dist/systemPrompt/contributors.d.ts +30 -15
- package/dist/systemPrompt/contributors.d.ts.map +1 -0
- package/dist/systemPrompt/contributors.js +53 -0
- package/dist/systemPrompt/error-codes.d.ts +2 -3
- package/dist/systemPrompt/error-codes.d.ts.map +1 -0
- package/dist/systemPrompt/errors.d.ts +2 -17
- package/dist/systemPrompt/errors.d.ts.map +1 -0
- package/dist/systemPrompt/in-built-prompts.cjs +13 -15
- package/dist/systemPrompt/in-built-prompts.d.ts +4 -14
- package/dist/systemPrompt/in-built-prompts.d.ts.map +1 -0
- package/dist/systemPrompt/in-built-prompts.js +13 -15
- package/dist/systemPrompt/index.cjs +11 -0
- package/dist/systemPrompt/index.d.ts +7 -14
- package/dist/systemPrompt/index.d.ts.map +1 -0
- package/dist/systemPrompt/index.js +8 -0
- package/dist/systemPrompt/manager.cjs +24 -6
- package/dist/systemPrompt/manager.d.ts +8 -16
- package/dist/systemPrompt/manager.d.ts.map +1 -0
- package/dist/systemPrompt/manager.js +24 -6
- package/dist/systemPrompt/registry.d.ts +6 -16
- package/dist/systemPrompt/registry.d.ts.map +1 -0
- package/dist/systemPrompt/schemas.cjs +17 -3
- package/dist/systemPrompt/schemas.d.ts +204 -30
- package/dist/systemPrompt/schemas.d.ts.map +1 -0
- package/dist/systemPrompt/schemas.js +17 -3
- package/dist/systemPrompt/types.d.ts +3 -12
- package/dist/systemPrompt/types.d.ts.map +1 -0
- package/dist/tools/confirmation/allowed-tools-provider/factory.cjs +1 -1
- package/dist/tools/confirmation/allowed-tools-provider/factory.d.ts +6 -12
- package/dist/tools/confirmation/allowed-tools-provider/factory.d.ts.map +1 -0
- package/dist/tools/confirmation/allowed-tools-provider/factory.js +1 -1
- package/dist/tools/confirmation/allowed-tools-provider/in-memory.d.ts +3 -5
- package/dist/tools/confirmation/allowed-tools-provider/in-memory.d.ts.map +1 -0
- package/dist/tools/confirmation/allowed-tools-provider/storage.cjs +9 -9
- package/dist/tools/confirmation/allowed-tools-provider/storage.d.ts +7 -13
- package/dist/tools/confirmation/allowed-tools-provider/storage.d.ts.map +1 -0
- package/dist/tools/confirmation/allowed-tools-provider/storage.js +9 -9
- package/dist/tools/confirmation/allowed-tools-provider/types.d.ts +2 -3
- package/dist/tools/confirmation/allowed-tools-provider/types.d.ts.map +1 -0
- package/dist/tools/error-codes.d.ts +2 -3
- package/dist/tools/error-codes.d.ts.map +1 -0
- package/dist/tools/errors.d.ts +2 -17
- package/dist/tools/errors.d.ts.map +1 -0
- package/dist/tools/index.cjs +0 -2
- package/dist/tools/index.d.ts +11 -19
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +0 -1
- package/dist/tools/internal-tools/implementations/ask-user-tool.cjs +57 -0
- package/dist/tools/internal-tools/implementations/ask-user-tool.d.ts +18 -0
- package/dist/tools/internal-tools/implementations/ask-user-tool.d.ts.map +1 -0
- package/dist/tools/internal-tools/implementations/ask-user-tool.js +33 -0
- package/dist/tools/internal-tools/implementations/search-history-tool.d.ts +3 -11
- package/dist/tools/internal-tools/implementations/search-history-tool.d.ts.map +1 -0
- package/dist/tools/internal-tools/index.d.ts +3 -13
- package/dist/tools/internal-tools/index.d.ts.map +1 -0
- package/dist/tools/internal-tools/provider.cjs +9 -11
- package/dist/tools/internal-tools/provider.d.ts +6 -20
- package/dist/tools/internal-tools/provider.d.ts.map +1 -0
- package/dist/tools/internal-tools/provider.js +9 -11
- package/dist/tools/internal-tools/registry.cjs +6 -1
- package/dist/tools/internal-tools/registry.d.ts +10 -15
- package/dist/tools/internal-tools/registry.d.ts.map +1 -0
- package/dist/tools/internal-tools/registry.js +6 -1
- package/dist/tools/schemas.cjs +14 -2
- package/dist/tools/schemas.d.ts +12 -8
- package/dist/tools/schemas.d.ts.map +1 -0
- package/dist/tools/schemas.js +10 -2
- package/dist/tools/tool-manager.cjs +174 -14
- package/dist/tools/tool-manager.d.ts +48 -22
- package/dist/tools/tool-manager.d.ts.map +1 -0
- package/dist/tools/tool-manager.js +174 -14
- package/dist/tools/types.d.ts +9 -11
- package/dist/tools/types.d.ts.map +1 -0
- package/dist/utils/api-key-resolver.d.ts +5 -7
- package/dist/utils/api-key-resolver.d.ts.map +1 -0
- package/dist/utils/api-key-store.d.ts +5 -7
- package/dist/utils/api-key-store.d.ts.map +1 -0
- package/dist/utils/async-context.cjs +51 -0
- package/dist/utils/async-context.d.ts +68 -0
- package/dist/utils/async-context.d.ts.map +1 -0
- package/dist/utils/async-context.js +24 -0
- package/dist/utils/debug.cjs +40 -0
- package/dist/utils/debug.d.ts +2 -0
- package/dist/utils/debug.d.ts.map +1 -0
- package/dist/utils/debug.js +16 -0
- package/dist/utils/env.d.ts +4 -5
- package/dist/utils/env.d.ts.map +1 -0
- package/dist/utils/error-conversion.d.ts +2 -3
- package/dist/utils/error-conversion.d.ts.map +1 -0
- package/dist/utils/execution-context.d.ts +5 -6
- package/dist/utils/execution-context.d.ts.map +1 -0
- package/dist/utils/fs-walk.d.ts +2 -3
- package/dist/utils/fs-walk.d.ts.map +1 -0
- package/dist/utils/index.cjs +3 -1
- package/dist/utils/index.d.ts +14 -63
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +1 -0
- package/dist/utils/path.d.ts +9 -10
- package/dist/utils/path.d.ts.map +1 -0
- package/dist/utils/port-utils.d.ts +2 -3
- package/dist/utils/port-utils.d.ts.map +1 -0
- package/dist/utils/redactor.d.ts +2 -3
- package/dist/utils/redactor.d.ts.map +1 -0
- package/dist/utils/result.d.ts +14 -27
- package/dist/utils/result.d.ts.map +1 -0
- package/dist/utils/safe-stringify.d.ts +2 -3
- package/dist/utils/safe-stringify.d.ts.map +1 -0
- package/dist/utils/schema-metadata.cjs +235 -0
- package/dist/utils/schema-metadata.d.ts +82 -0
- package/dist/utils/schema-metadata.d.ts.map +1 -0
- package/dist/utils/schema-metadata.js +207 -0
- package/dist/utils/schema.d.ts +2 -3
- package/dist/utils/schema.d.ts.map +1 -0
- package/dist/utils/service-initializer.cjs +71 -34
- package/dist/utils/service-initializer.d.ts +18 -43
- package/dist/utils/service-initializer.d.ts.map +1 -0
- package/dist/utils/service-initializer.js +71 -34
- package/dist/utils/user-info.d.ts +2 -3
- package/dist/utils/user-info.d.ts.map +1 -0
- package/dist/utils/zod-schema-converter.d.ts +3 -5
- package/dist/utils/zod-schema-converter.d.ts.map +1 -0
- package/package.json +6 -4
- package/dist/agent/DextoAgent.d.cts +0 -541
- package/dist/agent/agentCard.d.cts +0 -20
- package/dist/agent/error-codes.d.cts +0 -14
- package/dist/agent/errors.d.cts +0 -44
- package/dist/agent/index.d.cts +0 -60
- package/dist/agent/registry/error-codes.d.cts +0 -20
- package/dist/agent/registry/errors.d.cts +0 -67
- package/dist/agent/registry/registry.d.cts +0 -67
- package/dist/agent/registry/types.d.cts +0 -100
- package/dist/agent/schemas.d.cts +0 -1502
- package/dist/agent/state-manager.d.cts +0 -97
- package/dist/config/agent-resolver.d.cts +0 -15
- package/dist/config/error-codes.d.cts +0 -17
- package/dist/config/errors.d.cts +0 -49
- package/dist/config/index.d.cts +0 -7
- package/dist/config/loader.d.cts +0 -19
- package/dist/config/writer.d.cts +0 -38
- package/dist/context/compression/middle-removal.d.cts +0 -48
- package/dist/context/compression/oldest-removal.d.cts +0 -43
- package/dist/context/compression/types.d.cts +0 -21
- package/dist/context/error-codes.d.cts +0 -19
- package/dist/context/errors.d.cts +0 -36
- package/dist/context/index.d.cts +0 -19
- package/dist/context/manager.d.cts +0 -254
- package/dist/context/types.d.cts +0 -113
- package/dist/context/utils.d.cts +0 -79
- package/dist/errors/DextoBaseError.d.cts +0 -15
- package/dist/errors/DextoRuntimeError.d.cts +0 -37
- package/dist/errors/DextoValidationError.d.cts +0 -65
- package/dist/errors/index.d.cts +0 -18
- package/dist/errors/result-bridge.d.cts +0 -39
- package/dist/errors/types.d.cts +0 -62
- package/dist/events/index.d.cts +0 -272
- package/dist/index.browser.d.cts +0 -53
- package/dist/index.d.cts +0 -89
- package/dist/llm/error-codes.d.cts +0 -26
- package/dist/llm/errors.d.cts +0 -58
- package/dist/llm/formatters/anthropic.d.cts +0 -45
- package/dist/llm/formatters/factory.d.cts +0 -12
- package/dist/llm/formatters/openai.d.cts +0 -38
- package/dist/llm/formatters/types.d.cts +0 -43
- package/dist/llm/formatters/vercel.d.cts +0 -48
- package/dist/llm/index.d.cts +0 -39
- package/dist/llm/registry.d.cts +0 -176
- package/dist/llm/resolver.d.cts +0 -34
- package/dist/llm/schemas.d.cts +0 -111
- package/dist/llm/services/anthropic.d.cts +0 -65
- package/dist/llm/services/factory.d.cts +0 -39
- package/dist/llm/services/index.d.cts +0 -21
- package/dist/llm/services/openai.d.cts +0 -65
- package/dist/llm/services/test-utils.integration.d.cts +0 -83
- package/dist/llm/services/types.d.cts +0 -56
- package/dist/llm/services/vercel.d.cts +0 -72
- package/dist/llm/tokenizer/anthropic.d.cts +0 -21
- package/dist/llm/tokenizer/default.d.cts +0 -16
- package/dist/llm/tokenizer/factory.d.cts +0 -12
- package/dist/llm/tokenizer/google.d.cts +0 -31
- package/dist/llm/tokenizer/openai.d.cts +0 -32
- package/dist/llm/tokenizer/types.d.cts +0 -19
- package/dist/llm/types.d.cts +0 -29
- package/dist/llm/validation.d.cts +0 -60
- package/dist/logger/browser.d.cts +0 -29
- package/dist/logger/index.d.cts +0 -1
- package/dist/logger/logger.d.cts +0 -52
- package/dist/mcp/error-codes.d.cts +0 -16
- package/dist/mcp/errors.d.cts +0 -72
- package/dist/mcp/index.d.cts +0 -26
- package/dist/mcp/manager.d.cts +0 -163
- package/dist/mcp/mcp-client.d.cts +0 -108
- package/dist/mcp/resolver.d.cts +0 -22
- package/dist/mcp/schemas.d.cts +0 -266
- package/dist/mcp/types.d.cts +0 -21
- package/dist/preferences/constants.d.cts +0 -3
- package/dist/preferences/error-codes.d.cts +0 -9
- package/dist/preferences/errors.d.cts +0 -33
- package/dist/preferences/index.d.cts +0 -21
- package/dist/preferences/loader.d.cts +0 -45
- package/dist/preferences/schemas.d.cts +0 -104
- package/dist/search/index.d.cts +0 -5
- package/dist/search/search-service.d.cts +0 -47
- package/dist/search/types.d.cts +0 -78
- package/dist/session/chat-session.d.cts +0 -284
- package/dist/session/error-codes.d.cts +0 -13
- package/dist/session/errors.d.cts +0 -58
- package/dist/session/history/database.d.cts +0 -28
- package/dist/session/history/factory.d.cts +0 -11
- package/dist/session/history/types.d.cts +0 -17
- package/dist/session/index.d.cts +0 -53
- package/dist/session/schemas.d.cts +0 -16
- package/dist/session/session-manager.d.cts +0 -219
- package/dist/storage/backend/cache-backend.d.ts +0 -15
- package/dist/storage/backend/database-backend.d.ts +0 -19
- package/dist/storage/backend/memory-backend.d.cts +0 -34
- package/dist/storage/backend/postgres-backend.d.cts +0 -37
- package/dist/storage/backend/redis-backend.d.cts +0 -36
- package/dist/storage/backend/sqlite-backend.d.cts +0 -35
- package/dist/storage/backend/types.d.cts +0 -14
- package/dist/storage/backend/types.d.ts +0 -14
- package/dist/storage/error-codes.d.cts +0 -14
- package/dist/storage/errors.d.cts +0 -63
- package/dist/storage/index.d.cts +0 -7
- package/dist/storage/schemas.d.cts +0 -856
- package/dist/storage/storage-manager.d.cts +0 -52
- package/dist/storage/types.d.cts +0 -5
- package/dist/systemPrompt/contributors.d.cts +0 -44
- package/dist/systemPrompt/error-codes.d.cts +0 -13
- package/dist/systemPrompt/errors.d.cts +0 -55
- package/dist/systemPrompt/in-built-prompts.d.cts +0 -28
- package/dist/systemPrompt/index.d.cts +0 -14
- package/dist/systemPrompt/manager.d.cts +0 -31
- package/dist/systemPrompt/registry.d.cts +0 -20
- package/dist/systemPrompt/schemas.d.cts +0 -401
- package/dist/systemPrompt/types.d.cts +0 -19
- package/dist/tools/confirmation/allowed-tools-provider/factory.d.cts +0 -19
- package/dist/tools/confirmation/allowed-tools-provider/in-memory.d.cts +0 -17
- package/dist/tools/confirmation/allowed-tools-provider/storage.d.cts +0 -26
- package/dist/tools/confirmation/allowed-tools-provider/types.d.cts +0 -35
- package/dist/tools/confirmation/event-based-confirmation-provider.cjs +0 -158
- package/dist/tools/confirmation/event-based-confirmation-provider.d.cts +0 -41
- package/dist/tools/confirmation/event-based-confirmation-provider.d.ts +0 -41
- package/dist/tools/confirmation/event-based-confirmation-provider.js +0 -134
- package/dist/tools/confirmation/factory.cjs +0 -52
- package/dist/tools/confirmation/factory.d.cts +0 -37
- package/dist/tools/confirmation/factory.d.ts +0 -37
- package/dist/tools/confirmation/factory.js +0 -28
- package/dist/tools/confirmation/noop-confirmation-provider.cjs +0 -49
- package/dist/tools/confirmation/noop-confirmation-provider.d.cts +0 -22
- package/dist/tools/confirmation/noop-confirmation-provider.d.ts +0 -22
- package/dist/tools/confirmation/noop-confirmation-provider.js +0 -25
- package/dist/tools/confirmation/types.d.cts +0 -46
- package/dist/tools/confirmation/types.d.ts +0 -46
- package/dist/tools/error-codes.d.cts +0 -18
- package/dist/tools/errors.d.cts +0 -97
- package/dist/tools/index.d.cts +0 -19
- package/dist/tools/internal-tools/implementations/search-history-tool.d.cts +0 -15
- package/dist/tools/internal-tools/index.d.cts +0 -13
- package/dist/tools/internal-tools/provider.d.cts +0 -66
- package/dist/tools/internal-tools/registry.d.cts +0 -45
- package/dist/tools/schemas.d.cts +0 -21
- package/dist/tools/tool-manager.d.cts +0 -106
- package/dist/tools/types.d.cts +0 -66
- package/dist/utils/api-key-resolver.d.cts +0 -23
- package/dist/utils/api-key-store.d.cts +0 -26
- package/dist/utils/env.d.cts +0 -29
- package/dist/utils/error-conversion.d.cts +0 -13
- package/dist/utils/execution-context.d.cts +0 -21
- package/dist/utils/fs-walk.d.cts +0 -9
- package/dist/utils/index.d.cts +0 -63
- package/dist/utils/path.d.cts +0 -54
- package/dist/utils/port-utils.d.cts +0 -11
- package/dist/utils/port-utils.spec.d.cts +0 -2
- package/dist/utils/port-utils.spec.d.ts +0 -2
- package/dist/utils/redactor.d.cts +0 -18
- package/dist/utils/result.d.cts +0 -180
- package/dist/utils/safe-stringify.d.cts +0 -7
- package/dist/utils/schema.d.cts +0 -6
- package/dist/utils/service-initializer.d.cts +0 -63
- package/dist/utils/user-info.d.cts +0 -3
- package/dist/utils/zod-schema-converter.d.cts +0 -13
- /package/dist/{storage/backend → memory}/types.cjs +0 -0
- /package/dist/{storage/backend → memory}/types.js +0 -0
- /package/dist/{tools/confirmation → plugins}/types.cjs +0 -0
- /package/dist/{tools/confirmation → plugins}/types.js +0 -0
- /package/dist/{storage/backend/cache-backend.js → prompts/types.js} +0 -0
- /package/dist/{storage/backend/database-backend.js → resources/handlers/types.js} +0 -0
|
@@ -1,67 +1,130 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import 'zod';
|
|
3
|
-
|
|
1
|
+
import { Registry, AgentRegistry, AgentRegistryEntry } from './types.js';
|
|
4
2
|
/**
|
|
5
3
|
* Local agent registry implementation
|
|
6
|
-
*
|
|
4
|
+
*
|
|
5
|
+
* TODO: ARCHITECTURAL REFACTOR - Move registry, preferences, and agent resolution to CLI
|
|
6
|
+
*
|
|
7
|
+
* PROBLEM: Registry operations are CLI concerns but live in Core, causing:
|
|
8
|
+
* - Missing analytics for auto-install (when running `dexto`, registry installs agents but doesn't track)
|
|
9
|
+
* - Wrong separation of concerns (Core = execution engine, not discovery/setup)
|
|
10
|
+
* - Registry manages ~/.dexto/agents filesystem which is CLI-level setup
|
|
11
|
+
*
|
|
12
|
+
* THE RIGHT ARCHITECTURE:
|
|
13
|
+
*
|
|
14
|
+
* Move to CLI:
|
|
15
|
+
* 1. Agent Registry (packages/core/src/agent/registry/) → packages/cli/src/registry/
|
|
16
|
+
* - installAgent(), uninstallAgent(), resolveAgent(), listAgents()
|
|
17
|
+
* - Can directly call capture() for analytics
|
|
18
|
+
* - Manages ~/.dexto/agents installation directory
|
|
19
|
+
*
|
|
20
|
+
* 2. Global Preferences (packages/core/src/preferences/) → packages/cli/src/preferences/
|
|
21
|
+
* - User's default LLM, model, default agent
|
|
22
|
+
* - Used by `dexto setup` command
|
|
23
|
+
* - Manages ~/.dexto/preferences.json
|
|
24
|
+
*
|
|
25
|
+
* 3. Agent Resolution (packages/core/src/config/agent-resolver.ts) → packages/cli/src/agent-resolver.ts
|
|
26
|
+
* - Discovery logic: check registry, trigger installs, apply preferences
|
|
27
|
+
* - Returns resolved config PATH to core
|
|
28
|
+
*
|
|
29
|
+
* Core keeps:
|
|
30
|
+
* - config/loader.ts - Load YAML from path
|
|
31
|
+
* - config/schemas.ts - Zod validation
|
|
32
|
+
* - Agent execution (DextoAgent, LLM, tools, MCP)
|
|
33
|
+
*
|
|
34
|
+
* FLOW AFTER REFACTOR:
|
|
35
|
+
* CLI index.ts:
|
|
36
|
+
* → CLI: resolveAgentPath() (discovery logic)
|
|
37
|
+
* → CLI: registry.resolveAgent()
|
|
38
|
+
* → CLI: registry.installAgent() if needed
|
|
39
|
+
* → CLI: capture('dexto_install_agent', ...) ✓ Natural!
|
|
40
|
+
* → Core: new DextoAgent(configPath) (just loads & runs)
|
|
41
|
+
*
|
|
42
|
+
* BENEFITS:
|
|
43
|
+
* - Clear separation: CLI = setup/discovery, Core = execution
|
|
44
|
+
* - Analytics naturally colocated with operations
|
|
45
|
+
* - Core is portable (no CLI dependencies)
|
|
46
|
+
* - No circular deps (CLI → Core, correct direction)
|
|
47
|
+
*
|
|
48
|
+
* ESTIMATE: ~3-4 hours (mostly moving code + updating imports)
|
|
7
49
|
*/
|
|
8
|
-
declare class LocalAgentRegistry implements AgentRegistry {
|
|
50
|
+
export declare class LocalAgentRegistry implements AgentRegistry {
|
|
9
51
|
private _registry;
|
|
10
52
|
/**
|
|
11
53
|
* Lazy load registry from JSON file
|
|
12
54
|
*/
|
|
13
55
|
getRegistry(): Registry;
|
|
14
56
|
/**
|
|
15
|
-
* Load
|
|
57
|
+
* Load and merge bundled + user registries
|
|
16
58
|
* Uses fail-fast approach - throws RegistryError for any loading issues
|
|
17
59
|
*/
|
|
18
60
|
private loadRegistry;
|
|
19
61
|
/**
|
|
20
|
-
* Check if agent exists in registry
|
|
62
|
+
* Check if agent exists in registry by ID
|
|
21
63
|
*/
|
|
22
|
-
hasAgent(
|
|
64
|
+
hasAgent(agentId: string): boolean;
|
|
23
65
|
/**
|
|
24
66
|
* Get available agents with their metadata from registry
|
|
25
67
|
*/
|
|
26
68
|
getAvailableAgents(): Record<string, AgentRegistryEntry>;
|
|
69
|
+
/**
|
|
70
|
+
* Validate custom agent ID doesn't conflict with bundled registry
|
|
71
|
+
* @throws RegistryError if ID conflicts with builtin agent
|
|
72
|
+
*/
|
|
73
|
+
private validateCustomAgentId;
|
|
27
74
|
/**
|
|
28
75
|
* Resolve main config file for installed agent
|
|
29
76
|
* Handles both directory agents (with main field) and single-file agents
|
|
30
77
|
*/
|
|
31
|
-
resolveMainConfig(agentDir: string,
|
|
78
|
+
resolveMainConfig(agentDir: string, agentId: string): string;
|
|
32
79
|
/**
|
|
33
80
|
* Install agent atomically using temp + rename pattern
|
|
34
|
-
* @param
|
|
81
|
+
* @param agentId ID of the agent to install
|
|
35
82
|
* @param injectPreferences Whether to inject global preferences into installed agent (default: true)
|
|
36
83
|
*/
|
|
37
|
-
installAgent(
|
|
84
|
+
installAgent(agentId: string, injectPreferences?: boolean): Promise<string>;
|
|
85
|
+
/**
|
|
86
|
+
* Install a custom agent from a local file path
|
|
87
|
+
* @param agentId Unique identifier for the custom agent
|
|
88
|
+
* @param sourcePath Absolute path to agent YAML file or directory
|
|
89
|
+
* @param metadata Agent metadata (name for display, description, author, tags, main)
|
|
90
|
+
* @param injectPreferences Whether to inject global preferences (default: true)
|
|
91
|
+
* @returns Path to the installed agent's main config file
|
|
92
|
+
*/
|
|
93
|
+
installCustomAgentFromPath(agentId: string, sourcePath: string, metadata: {
|
|
94
|
+
name?: string;
|
|
95
|
+
description: string;
|
|
96
|
+
author: string;
|
|
97
|
+
tags: string[];
|
|
98
|
+
main?: string;
|
|
99
|
+
}, injectPreferences?: boolean): Promise<string>;
|
|
38
100
|
/**
|
|
39
|
-
* Resolve a registry agent
|
|
40
|
-
* NOTE: Only handles registry
|
|
101
|
+
* Resolve a registry agent ID to a config path
|
|
102
|
+
* NOTE: Only handles registry IDs, not file paths (routing done in loadAgentConfig)
|
|
41
103
|
* Handles installing agent if needed
|
|
42
|
-
* @param
|
|
104
|
+
* @param agentId ID of the agent to resolve
|
|
43
105
|
* @param autoInstall Whether to automatically install missing agents from registry (default: true)
|
|
44
106
|
* @param injectPreferences Whether to inject preferences during auto-installation (default: true)
|
|
45
107
|
*/
|
|
46
|
-
resolveAgent(
|
|
108
|
+
resolveAgent(agentId: string, autoInstall?: boolean, injectPreferences?: boolean): Promise<string>;
|
|
47
109
|
/**
|
|
48
110
|
* Get list of currently installed agents
|
|
49
111
|
*/
|
|
50
112
|
getInstalledAgents(): Promise<string[]>;
|
|
51
113
|
/**
|
|
52
|
-
* Check if an agent is safe to uninstall (not the default
|
|
114
|
+
* Check if an agent is safe to uninstall (not the default agent from preferences)
|
|
53
115
|
*/
|
|
54
116
|
private isAgentSafeToUninstall;
|
|
55
117
|
/**
|
|
56
118
|
* Uninstall an agent by removing its directory
|
|
57
|
-
*
|
|
119
|
+
* For custom agents: also removes from user registry
|
|
120
|
+
* For builtin agents: only removes from disk
|
|
121
|
+
* @param agentId ID of the agent to uninstall
|
|
58
122
|
* @param force Whether to force uninstall even if agent is protected (default: false)
|
|
59
123
|
*/
|
|
60
|
-
uninstallAgent(
|
|
124
|
+
uninstallAgent(agentId: string, force?: boolean): Promise<void>;
|
|
61
125
|
}
|
|
62
126
|
/**
|
|
63
127
|
* Get cached registry instance (singleton pattern)
|
|
64
128
|
*/
|
|
65
|
-
declare function getAgentRegistry(): LocalAgentRegistry;
|
|
66
|
-
|
|
67
|
-
export { LocalAgentRegistry, getAgentRegistry };
|
|
129
|
+
export declare function getAgentRegistry(): LocalAgentRegistry;
|
|
130
|
+
//# sourceMappingURL=registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/agent/registry/registry.ts"],"names":[],"mappings":"AAOA,OAAO,EACH,QAAQ,EAER,aAAa,EACb,kBAAkB,EAErB,MAAM,YAAY,CAAC;AAYpB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+CG;AACH,qBAAa,kBAAmB,YAAW,aAAa;IACpD,OAAO,CAAC,SAAS,CAAyB;IAE1C;;OAEG;IACH,WAAW,IAAI,QAAQ;IAOvB;;;OAGG;IACH,OAAO,CAAC,YAAY;IAyCpB;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAKlC;;OAEG;IACH,kBAAkB,IAAI,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC;IAKxD;;;OAGG;IACH,OAAO,CAAC,qBAAqB;IAgC7B;;;OAGG;IACH,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM;IAqC5D;;;;OAIG;IACG,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,iBAAiB,GAAE,OAAc,GAAG,OAAO,CAAC,MAAM,CAAC;IAqGvF;;;;;;;OAOG;IACG,0BAA0B,CAC5B,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE;QACN,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,WAAW,EAAE,MAAM,CAAC;QACpB,MAAM,EAAE,MAAM,CAAC;QACf,IAAI,EAAE,MAAM,EAAE,CAAC;QACf,IAAI,CAAC,EAAE,MAAM,CAAC;KACjB,EACD,iBAAiB,GAAE,OAAc,GAClC,OAAO,CAAC,MAAM,CAAC;IAqKlB;;;;;;;OAOG;IACG,YAAY,CACd,OAAO,EAAE,MAAM,EACf,WAAW,GAAE,OAAc,EAC3B,iBAAiB,GAAE,OAAc,GAClC,OAAO,CAAC,MAAM,CAAC;IAsClB;;OAEG;IACG,kBAAkB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAsB7C;;OAEG;YACW,sBAAsB;IAYpC;;;;;;OAMG;IACG,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,GAAE,OAAe,GAAG,OAAO,CAAC,IAAI,CAAC;CA8C/E;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,kBAAkB,CAKrD"}
|
|
@@ -5,8 +5,17 @@ import { logger } from "../../logger/index.js";
|
|
|
5
5
|
import { resolveBundledScript, getDextoGlobalPath, copyDirectory } from "../../utils/path.js";
|
|
6
6
|
import { loadGlobalPreferences } from "../../preferences/loader.js";
|
|
7
7
|
import { writePreferencesToAgent } from "../../config/writer.js";
|
|
8
|
-
import {
|
|
8
|
+
import {
|
|
9
|
+
RegistrySchema,
|
|
10
|
+
normalizeRegistryJson
|
|
11
|
+
} from "./types.js";
|
|
9
12
|
import { RegistryError } from "./errors.js";
|
|
13
|
+
import {
|
|
14
|
+
loadUserRegistry,
|
|
15
|
+
mergeRegistries,
|
|
16
|
+
removeAgentFromUserRegistry,
|
|
17
|
+
addAgentToUserRegistry
|
|
18
|
+
} from "./user-registry.js";
|
|
10
19
|
let cachedRegistry = null;
|
|
11
20
|
class LocalAgentRegistry {
|
|
12
21
|
_registry = null;
|
|
@@ -20,7 +29,7 @@ class LocalAgentRegistry {
|
|
|
20
29
|
return this._registry;
|
|
21
30
|
}
|
|
22
31
|
/**
|
|
23
|
-
* Load
|
|
32
|
+
* Load and merge bundled + user registries
|
|
24
33
|
* Uses fail-fast approach - throws RegistryError for any loading issues
|
|
25
34
|
*/
|
|
26
35
|
loadRegistry() {
|
|
@@ -36,23 +45,30 @@ class LocalAgentRegistry {
|
|
|
36
45
|
if (!existsSync(jsonPath)) {
|
|
37
46
|
throw RegistryError.registryNotFound(jsonPath, "File doesn't exist");
|
|
38
47
|
}
|
|
48
|
+
let bundledRegistry;
|
|
39
49
|
try {
|
|
40
50
|
const jsonData = readFileSync(jsonPath, "utf-8");
|
|
41
51
|
const rawRegistry = JSON.parse(jsonData);
|
|
42
|
-
|
|
52
|
+
bundledRegistry = RegistrySchema.parse(normalizeRegistryJson(rawRegistry));
|
|
43
53
|
} catch (error) {
|
|
44
54
|
throw RegistryError.registryParseError(
|
|
45
55
|
jsonPath,
|
|
46
56
|
error instanceof Error ? error.message : String(error)
|
|
47
57
|
);
|
|
48
58
|
}
|
|
59
|
+
const userRegistry = loadUserRegistry();
|
|
60
|
+
const merged = mergeRegistries(bundledRegistry, userRegistry);
|
|
61
|
+
logger.debug(
|
|
62
|
+
`Loaded registry: ${Object.keys(bundledRegistry.agents).length} bundled, ${Object.keys(userRegistry.agents).length} custom`
|
|
63
|
+
);
|
|
64
|
+
return merged;
|
|
49
65
|
}
|
|
50
66
|
/**
|
|
51
|
-
* Check if agent exists in registry
|
|
67
|
+
* Check if agent exists in registry by ID
|
|
52
68
|
*/
|
|
53
|
-
hasAgent(
|
|
69
|
+
hasAgent(agentId) {
|
|
54
70
|
const registry = this.getRegistry();
|
|
55
|
-
return
|
|
71
|
+
return agentId in registry.agents;
|
|
56
72
|
}
|
|
57
73
|
/**
|
|
58
74
|
* Get available agents with their metadata from registry
|
|
@@ -61,27 +77,59 @@ class LocalAgentRegistry {
|
|
|
61
77
|
const registry = this.getRegistry();
|
|
62
78
|
return registry.agents;
|
|
63
79
|
}
|
|
80
|
+
/**
|
|
81
|
+
* Validate custom agent ID doesn't conflict with bundled registry
|
|
82
|
+
* @throws RegistryError if ID conflicts with builtin agent
|
|
83
|
+
*/
|
|
84
|
+
validateCustomAgentId(agentId) {
|
|
85
|
+
let jsonPath;
|
|
86
|
+
try {
|
|
87
|
+
jsonPath = resolveBundledScript("agents/agent-registry.json");
|
|
88
|
+
} catch (error) {
|
|
89
|
+
throw RegistryError.registryNotFound(
|
|
90
|
+
"agents/agent-registry.json",
|
|
91
|
+
error instanceof Error ? error.message : String(error)
|
|
92
|
+
);
|
|
93
|
+
}
|
|
94
|
+
try {
|
|
95
|
+
const jsonData = readFileSync(jsonPath, "utf-8");
|
|
96
|
+
const bundledRegistry = RegistrySchema.parse(
|
|
97
|
+
normalizeRegistryJson(JSON.parse(jsonData))
|
|
98
|
+
);
|
|
99
|
+
if (agentId in bundledRegistry.agents) {
|
|
100
|
+
throw RegistryError.customAgentNameConflict(agentId);
|
|
101
|
+
}
|
|
102
|
+
} catch (error) {
|
|
103
|
+
if (error instanceof Error && /name conflicts with builtin agent/.test(error.message)) {
|
|
104
|
+
throw error;
|
|
105
|
+
}
|
|
106
|
+
throw RegistryError.registryParseError(
|
|
107
|
+
jsonPath,
|
|
108
|
+
error instanceof Error ? error.message : String(error)
|
|
109
|
+
);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
64
112
|
/**
|
|
65
113
|
* Resolve main config file for installed agent
|
|
66
114
|
* Handles both directory agents (with main field) and single-file agents
|
|
67
115
|
*/
|
|
68
|
-
resolveMainConfig(agentDir,
|
|
116
|
+
resolveMainConfig(agentDir, agentId) {
|
|
69
117
|
const registry = this.getRegistry();
|
|
70
|
-
const agentData = registry.agents[
|
|
118
|
+
const agentData = registry.agents[agentId];
|
|
71
119
|
if (!agentData) {
|
|
72
120
|
const available = Object.keys(registry.agents);
|
|
73
|
-
throw RegistryError.agentNotFound(
|
|
121
|
+
throw RegistryError.agentNotFound(agentId, available);
|
|
74
122
|
}
|
|
75
123
|
if (agentData.source.endsWith("/")) {
|
|
76
124
|
if (!agentData.main) {
|
|
77
125
|
throw RegistryError.agentInvalidEntry(
|
|
78
|
-
|
|
126
|
+
agentId,
|
|
79
127
|
"directory entry missing main field"
|
|
80
128
|
);
|
|
81
129
|
}
|
|
82
130
|
const mainConfigPath = path.join(agentDir, agentData.main);
|
|
83
131
|
if (!existsSync(mainConfigPath)) {
|
|
84
|
-
throw RegistryError.mainConfigMissing(
|
|
132
|
+
throw RegistryError.mainConfigMissing(agentId, mainConfigPath);
|
|
85
133
|
}
|
|
86
134
|
return mainConfigPath;
|
|
87
135
|
} else {
|
|
@@ -95,22 +143,29 @@ class LocalAgentRegistry {
|
|
|
95
143
|
}
|
|
96
144
|
/**
|
|
97
145
|
* Install agent atomically using temp + rename pattern
|
|
98
|
-
* @param
|
|
146
|
+
* @param agentId ID of the agent to install
|
|
99
147
|
* @param injectPreferences Whether to inject global preferences into installed agent (default: true)
|
|
100
148
|
*/
|
|
101
|
-
async installAgent(
|
|
102
|
-
logger.info(`Installing agent: ${
|
|
149
|
+
async installAgent(agentId, injectPreferences = true) {
|
|
150
|
+
logger.info(`Installing agent: ${agentId}`);
|
|
103
151
|
const registry = this.getRegistry();
|
|
104
|
-
const agentData = registry.agents[
|
|
152
|
+
const agentData = registry.agents[agentId];
|
|
105
153
|
if (!agentData) {
|
|
106
154
|
const available = Object.keys(registry.agents);
|
|
107
|
-
throw RegistryError.agentNotFound(
|
|
155
|
+
throw RegistryError.agentNotFound(agentId, available);
|
|
108
156
|
}
|
|
109
157
|
const globalAgentsDir = getDextoGlobalPath("agents");
|
|
110
|
-
const targetDir = path.
|
|
158
|
+
const targetDir = path.resolve(globalAgentsDir, agentId);
|
|
159
|
+
const relTarget = path.relative(globalAgentsDir, targetDir);
|
|
160
|
+
if (relTarget.startsWith("..") || path.isAbsolute(relTarget)) {
|
|
161
|
+
throw RegistryError.installationFailed(
|
|
162
|
+
agentId,
|
|
163
|
+
"invalid agentId: path traversal detected"
|
|
164
|
+
);
|
|
165
|
+
}
|
|
111
166
|
if (existsSync(targetDir)) {
|
|
112
|
-
logger.info(`Agent '${
|
|
113
|
-
return this.resolveMainConfig(targetDir,
|
|
167
|
+
logger.info(`Agent '${agentId}' already installed`);
|
|
168
|
+
return this.resolveMainConfig(targetDir, agentId);
|
|
114
169
|
}
|
|
115
170
|
await fs.mkdir(globalAgentsDir, { recursive: true });
|
|
116
171
|
const sourcePath = resolveBundledScript(`agents/${agentData.source}`);
|
|
@@ -123,31 +178,144 @@ class LocalAgentRegistry {
|
|
|
123
178
|
const targetFile = path.join(tempDir, path.basename(sourcePath));
|
|
124
179
|
await fs.copyFile(sourcePath, targetFile);
|
|
125
180
|
}
|
|
126
|
-
const mainConfigPath = this.resolveMainConfig(tempDir,
|
|
181
|
+
const mainConfigPath = this.resolveMainConfig(tempDir, agentId);
|
|
127
182
|
if (!existsSync(mainConfigPath)) {
|
|
128
|
-
throw RegistryError.installationValidationFailed(
|
|
183
|
+
throw RegistryError.installationValidationFailed(agentId, mainConfigPath);
|
|
129
184
|
}
|
|
130
185
|
await fs.rename(tempDir, targetDir);
|
|
131
|
-
logger.info(`\u2713 Installed agent '${
|
|
186
|
+
logger.info(`\u2713 Installed agent '${agentId}' to ${targetDir}`);
|
|
132
187
|
if (injectPreferences) {
|
|
133
188
|
try {
|
|
134
189
|
const preferences = await loadGlobalPreferences();
|
|
135
190
|
await writePreferencesToAgent(targetDir, preferences);
|
|
136
|
-
logger.info(`\u2713 Applied global preferences to installed agent '${
|
|
191
|
+
logger.info(`\u2713 Applied global preferences to installed agent '${agentId}'`);
|
|
137
192
|
} catch (error) {
|
|
138
193
|
logger.warn(
|
|
139
|
-
`Failed to inject preferences to '${
|
|
194
|
+
`Failed to inject preferences to '${agentId}': ${error instanceof Error ? error.message : String(error)}`
|
|
140
195
|
);
|
|
141
196
|
console.log(
|
|
142
|
-
`\u26A0\uFE0F Warning: Could not apply preferences to '${
|
|
197
|
+
`\u26A0\uFE0F Warning: Could not apply preferences to '${agentId}' - agent will use bundled settings`
|
|
143
198
|
);
|
|
144
199
|
}
|
|
145
200
|
} else {
|
|
146
201
|
logger.info(
|
|
147
|
-
`Skipped preference injection for '${
|
|
202
|
+
`Skipped preference injection for '${agentId}' (injectPreferences=false)`
|
|
203
|
+
);
|
|
204
|
+
}
|
|
205
|
+
return this.resolveMainConfig(targetDir, agentId);
|
|
206
|
+
} catch (error) {
|
|
207
|
+
try {
|
|
208
|
+
if (existsSync(tempDir)) {
|
|
209
|
+
await fs.rm(tempDir, { recursive: true, force: true });
|
|
210
|
+
}
|
|
211
|
+
} catch (cleanupError) {
|
|
212
|
+
logger.error(
|
|
213
|
+
`Failed to clean up temp directory: ${cleanupError instanceof Error ? cleanupError.message : String(cleanupError)}. Skipping cleanup...`
|
|
148
214
|
);
|
|
149
215
|
}
|
|
150
|
-
|
|
216
|
+
throw RegistryError.installationFailed(
|
|
217
|
+
agentId,
|
|
218
|
+
error instanceof Error ? error.message : String(error)
|
|
219
|
+
);
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
/**
|
|
223
|
+
* Install a custom agent from a local file path
|
|
224
|
+
* @param agentId Unique identifier for the custom agent
|
|
225
|
+
* @param sourcePath Absolute path to agent YAML file or directory
|
|
226
|
+
* @param metadata Agent metadata (name for display, description, author, tags, main)
|
|
227
|
+
* @param injectPreferences Whether to inject global preferences (default: true)
|
|
228
|
+
* @returns Path to the installed agent's main config file
|
|
229
|
+
*/
|
|
230
|
+
async installCustomAgentFromPath(agentId, sourcePath, metadata, injectPreferences = true) {
|
|
231
|
+
logger.info(`Installing custom agent '${agentId}' from ${sourcePath}`);
|
|
232
|
+
this.validateCustomAgentId(agentId);
|
|
233
|
+
if (!existsSync(sourcePath)) {
|
|
234
|
+
throw RegistryError.configNotFound(sourcePath);
|
|
235
|
+
}
|
|
236
|
+
const globalAgentsDir = getDextoGlobalPath("agents");
|
|
237
|
+
const targetDir = path.resolve(globalAgentsDir, agentId);
|
|
238
|
+
const relTarget = path.relative(globalAgentsDir, targetDir);
|
|
239
|
+
if (relTarget.startsWith("..") || path.isAbsolute(relTarget)) {
|
|
240
|
+
throw RegistryError.installationFailed(
|
|
241
|
+
agentId,
|
|
242
|
+
"invalid agentId: path traversal detected"
|
|
243
|
+
);
|
|
244
|
+
}
|
|
245
|
+
if (existsSync(targetDir)) {
|
|
246
|
+
throw RegistryError.agentAlreadyExists(agentId);
|
|
247
|
+
}
|
|
248
|
+
await fs.mkdir(globalAgentsDir, { recursive: true });
|
|
249
|
+
const stats = await fs.stat(sourcePath);
|
|
250
|
+
const isDirectory = stats.isDirectory();
|
|
251
|
+
const configFileName = isDirectory ? void 0 : `${agentId}.yml`;
|
|
252
|
+
if (!metadata.description) {
|
|
253
|
+
throw RegistryError.installationFailed(agentId, "description is required");
|
|
254
|
+
}
|
|
255
|
+
if (isDirectory && !metadata.main) {
|
|
256
|
+
throw RegistryError.installationFailed(
|
|
257
|
+
agentId,
|
|
258
|
+
"main field is required for directory-based agents"
|
|
259
|
+
);
|
|
260
|
+
}
|
|
261
|
+
const displayName = metadata.name || agentId.split("-").map((word) => word.charAt(0).toUpperCase() + word.slice(1)).join(" ");
|
|
262
|
+
const registryEntry = {
|
|
263
|
+
id: agentId,
|
|
264
|
+
name: displayName,
|
|
265
|
+
description: metadata.description,
|
|
266
|
+
author: metadata.author,
|
|
267
|
+
tags: metadata.tags,
|
|
268
|
+
source: isDirectory ? `${agentId}/` : configFileName,
|
|
269
|
+
main: metadata.main
|
|
270
|
+
};
|
|
271
|
+
const tempDir = `${targetDir}.tmp.${Date.now()}`;
|
|
272
|
+
try {
|
|
273
|
+
if (isDirectory) {
|
|
274
|
+
await copyDirectory(sourcePath, tempDir);
|
|
275
|
+
} else {
|
|
276
|
+
await fs.mkdir(tempDir, { recursive: true });
|
|
277
|
+
const targetFile = path.join(tempDir, configFileName);
|
|
278
|
+
await fs.copyFile(sourcePath, targetFile);
|
|
279
|
+
}
|
|
280
|
+
const tempMainConfigPath = isDirectory ? path.join(tempDir, metadata.main) : path.join(tempDir, configFileName);
|
|
281
|
+
if (!existsSync(tempMainConfigPath)) {
|
|
282
|
+
throw RegistryError.installationValidationFailed(agentId, tempMainConfigPath);
|
|
283
|
+
}
|
|
284
|
+
await fs.rename(tempDir, targetDir);
|
|
285
|
+
logger.info(`\u2713 Installed custom agent '${agentId}' to ${targetDir}`);
|
|
286
|
+
const mainConfigPath = isDirectory && metadata.main ? path.join(targetDir, metadata.main) : path.join(targetDir, configFileName);
|
|
287
|
+
try {
|
|
288
|
+
await addAgentToUserRegistry(agentId, registryEntry);
|
|
289
|
+
logger.info(`\u2713 Added '${agentId}' to user registry`);
|
|
290
|
+
this._registry = null;
|
|
291
|
+
} catch (registryError) {
|
|
292
|
+
try {
|
|
293
|
+
if (existsSync(targetDir)) {
|
|
294
|
+
await fs.rm(targetDir, { recursive: true, force: true });
|
|
295
|
+
logger.info(`Rolled back installation: removed ${targetDir}`);
|
|
296
|
+
}
|
|
297
|
+
} catch (rollbackError) {
|
|
298
|
+
logger.error(
|
|
299
|
+
`Rollback failed for '${agentId}': ${rollbackError instanceof Error ? rollbackError.message : String(rollbackError)}`
|
|
300
|
+
);
|
|
301
|
+
}
|
|
302
|
+
throw registryError;
|
|
303
|
+
}
|
|
304
|
+
if (injectPreferences) {
|
|
305
|
+
try {
|
|
306
|
+
const preferences = await loadGlobalPreferences();
|
|
307
|
+
await writePreferencesToAgent(targetDir, preferences);
|
|
308
|
+
logger.info(`\u2713 Applied global preferences to custom agent '${agentId}'`);
|
|
309
|
+
} catch (error) {
|
|
310
|
+
logger.warn(
|
|
311
|
+
`Failed to inject preferences to '${agentId}': ${error instanceof Error ? error.message : String(error)}`
|
|
312
|
+
);
|
|
313
|
+
console.log(
|
|
314
|
+
`\u26A0\uFE0F Warning: Could not apply preferences to '${agentId}' - agent will use default settings`
|
|
315
|
+
);
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
return mainConfigPath;
|
|
151
319
|
} catch (error) {
|
|
152
320
|
try {
|
|
153
321
|
if (existsSync(tempDir)) {
|
|
@@ -155,46 +323,50 @@ class LocalAgentRegistry {
|
|
|
155
323
|
}
|
|
156
324
|
} catch (cleanupError) {
|
|
157
325
|
logger.error(
|
|
158
|
-
`Failed to clean up temp directory: ${cleanupError}. Skipping cleanup...`
|
|
326
|
+
`Failed to clean up temp directory: ${cleanupError instanceof Error ? cleanupError.message : String(cleanupError)}. Skipping cleanup...`
|
|
159
327
|
);
|
|
160
328
|
}
|
|
161
329
|
throw RegistryError.installationFailed(
|
|
162
|
-
|
|
330
|
+
agentId,
|
|
163
331
|
error instanceof Error ? error.message : String(error)
|
|
164
332
|
);
|
|
165
333
|
}
|
|
166
334
|
}
|
|
167
335
|
/**
|
|
168
|
-
* Resolve a registry agent
|
|
169
|
-
* NOTE: Only handles registry
|
|
336
|
+
* Resolve a registry agent ID to a config path
|
|
337
|
+
* NOTE: Only handles registry IDs, not file paths (routing done in loadAgentConfig)
|
|
170
338
|
* Handles installing agent if needed
|
|
171
|
-
* @param
|
|
339
|
+
* @param agentId ID of the agent to resolve
|
|
172
340
|
* @param autoInstall Whether to automatically install missing agents from registry (default: true)
|
|
173
341
|
* @param injectPreferences Whether to inject preferences during auto-installation (default: true)
|
|
174
342
|
*/
|
|
175
|
-
async resolveAgent(
|
|
176
|
-
logger.debug(`Resolving registry agent: ${
|
|
343
|
+
async resolveAgent(agentId, autoInstall = true, injectPreferences = true) {
|
|
344
|
+
logger.debug(`Resolving registry agent: ${agentId}`);
|
|
177
345
|
const globalAgentsDir = getDextoGlobalPath("agents");
|
|
178
|
-
const installedPath = path.
|
|
346
|
+
const installedPath = path.resolve(globalAgentsDir, agentId);
|
|
347
|
+
const relInstalled = path.relative(globalAgentsDir, installedPath);
|
|
348
|
+
if (relInstalled.startsWith("..") || path.isAbsolute(relInstalled)) {
|
|
349
|
+
throw RegistryError.agentNotFound(agentId, Object.keys(this.getRegistry().agents));
|
|
350
|
+
}
|
|
179
351
|
if (existsSync(installedPath)) {
|
|
180
|
-
const mainConfig = this.resolveMainConfig(installedPath,
|
|
181
|
-
logger.debug(`Resolved installed agent '${
|
|
352
|
+
const mainConfig = this.resolveMainConfig(installedPath, agentId);
|
|
353
|
+
logger.debug(`Resolved installed agent '${agentId}' to: ${mainConfig}`);
|
|
182
354
|
return mainConfig;
|
|
183
355
|
}
|
|
184
|
-
logger.debug(`Agent '${
|
|
185
|
-
if (this.hasAgent(
|
|
356
|
+
logger.debug(`Agent '${agentId}' not found in installed path: ${installedPath}`);
|
|
357
|
+
if (this.hasAgent(agentId)) {
|
|
186
358
|
if (autoInstall) {
|
|
187
|
-
logger.info(`Installing agent '${
|
|
188
|
-
return await this.installAgent(
|
|
359
|
+
logger.info(`Installing agent '${agentId}' from registry...`);
|
|
360
|
+
return await this.installAgent(agentId, injectPreferences);
|
|
189
361
|
} else {
|
|
190
362
|
const registry2 = this.getRegistry();
|
|
191
363
|
const available2 = Object.keys(registry2.agents);
|
|
192
|
-
throw RegistryError.agentNotInstalledAutoInstallDisabled(
|
|
364
|
+
throw RegistryError.agentNotInstalledAutoInstallDisabled(agentId, available2);
|
|
193
365
|
}
|
|
194
366
|
}
|
|
195
367
|
const registry = this.getRegistry();
|
|
196
368
|
const available = Object.keys(registry.agents);
|
|
197
|
-
throw RegistryError.agentNotFound(
|
|
369
|
+
throw RegistryError.agentNotFound(agentId, available);
|
|
198
370
|
}
|
|
199
371
|
/**
|
|
200
372
|
* Get list of currently installed agents
|
|
@@ -213,32 +385,56 @@ class LocalAgentRegistry {
|
|
|
213
385
|
}
|
|
214
386
|
}
|
|
215
387
|
/**
|
|
216
|
-
* Check if an agent is safe to uninstall (not the default
|
|
388
|
+
* Check if an agent is safe to uninstall (not the default agent from preferences)
|
|
217
389
|
*/
|
|
218
|
-
isAgentSafeToUninstall(
|
|
219
|
-
|
|
390
|
+
async isAgentSafeToUninstall(agentId) {
|
|
391
|
+
try {
|
|
392
|
+
const preferences = await loadGlobalPreferences();
|
|
393
|
+
const defaultAgent = preferences.defaults.defaultAgent;
|
|
394
|
+
return agentId !== defaultAgent;
|
|
395
|
+
} catch {
|
|
396
|
+
logger.warn("Could not load preferences, using fallback protection for default-agent");
|
|
397
|
+
return agentId !== "default-agent";
|
|
398
|
+
}
|
|
220
399
|
}
|
|
221
400
|
/**
|
|
222
401
|
* Uninstall an agent by removing its directory
|
|
223
|
-
*
|
|
402
|
+
* For custom agents: also removes from user registry
|
|
403
|
+
* For builtin agents: only removes from disk
|
|
404
|
+
* @param agentId ID of the agent to uninstall
|
|
224
405
|
* @param force Whether to force uninstall even if agent is protected (default: false)
|
|
225
406
|
*/
|
|
226
|
-
async uninstallAgent(
|
|
407
|
+
async uninstallAgent(agentId, force = false) {
|
|
227
408
|
const globalAgentsDir = getDextoGlobalPath("agents");
|
|
228
|
-
const agentDir = path.
|
|
229
|
-
|
|
409
|
+
const agentDir = path.resolve(globalAgentsDir, agentId);
|
|
410
|
+
const relAgent = path.relative(globalAgentsDir, agentDir);
|
|
411
|
+
if (relAgent.startsWith("..") || path.isAbsolute(relAgent)) {
|
|
412
|
+
throw RegistryError.uninstallationFailed(
|
|
413
|
+
agentId,
|
|
414
|
+
"invalid agentId: path traversal detected"
|
|
415
|
+
);
|
|
416
|
+
}
|
|
417
|
+
logger.info(`Uninstalling agent: ${agentId} from ${agentDir}`);
|
|
230
418
|
if (!existsSync(agentDir)) {
|
|
231
|
-
throw RegistryError.agentNotInstalled(
|
|
419
|
+
throw RegistryError.agentNotInstalled(agentId);
|
|
232
420
|
}
|
|
233
|
-
if (!force && !this.isAgentSafeToUninstall(
|
|
234
|
-
throw RegistryError.agentProtected(
|
|
421
|
+
if (!force && !await this.isAgentSafeToUninstall(agentId)) {
|
|
422
|
+
throw RegistryError.agentProtected(agentId);
|
|
235
423
|
}
|
|
424
|
+
const registry = this.getRegistry();
|
|
425
|
+
const agentData = registry.agents[agentId];
|
|
426
|
+
const isCustomAgent = agentData?.type === "custom";
|
|
236
427
|
try {
|
|
237
428
|
await fs.rm(agentDir, { recursive: true, force: true });
|
|
238
|
-
logger.info(`\u2713 Removed agent '${
|
|
429
|
+
logger.info(`\u2713 Removed agent '${agentId}' from ${agentDir}`);
|
|
430
|
+
if (isCustomAgent) {
|
|
431
|
+
await removeAgentFromUserRegistry(agentId);
|
|
432
|
+
logger.info(`\u2713 Removed custom agent '${agentId}' from user registry`);
|
|
433
|
+
this._registry = null;
|
|
434
|
+
}
|
|
239
435
|
} catch (error) {
|
|
240
436
|
throw RegistryError.uninstallationFailed(
|
|
241
|
-
|
|
437
|
+
agentId,
|
|
242
438
|
error instanceof Error ? error.message : String(error)
|
|
243
439
|
);
|
|
244
440
|
}
|
|
@@ -19,23 +19,56 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
19
19
|
var types_exports = {};
|
|
20
20
|
__export(types_exports, {
|
|
21
21
|
AgentRegistryEntrySchema: () => AgentRegistryEntrySchema,
|
|
22
|
-
RegistrySchema: () => RegistrySchema
|
|
22
|
+
RegistrySchema: () => RegistrySchema,
|
|
23
|
+
deriveDisplayName: () => deriveDisplayName,
|
|
24
|
+
normalizeRegistryJson: () => normalizeRegistryJson
|
|
23
25
|
});
|
|
24
26
|
module.exports = __toCommonJS(types_exports);
|
|
25
27
|
var import_zod = require("zod");
|
|
28
|
+
function deriveDisplayName(slug) {
|
|
29
|
+
return slug.split("-").filter(Boolean).map((part) => part.charAt(0).toUpperCase() + part.slice(1)).join(" ");
|
|
30
|
+
}
|
|
26
31
|
const AgentRegistryEntrySchema = import_zod.z.object({
|
|
32
|
+
id: import_zod.z.string().describe("Unique identifier for the agent"),
|
|
33
|
+
name: import_zod.z.string().describe("Display name for the agent"),
|
|
27
34
|
description: import_zod.z.string(),
|
|
28
35
|
author: import_zod.z.string(),
|
|
29
36
|
tags: import_zod.z.array(import_zod.z.string()),
|
|
30
37
|
source: import_zod.z.string(),
|
|
31
|
-
main: import_zod.z.string().optional()
|
|
38
|
+
main: import_zod.z.string().optional(),
|
|
39
|
+
type: import_zod.z.enum(["builtin", "custom"]).default("builtin").describe("Agent type")
|
|
32
40
|
}).strict();
|
|
33
41
|
const RegistrySchema = import_zod.z.object({
|
|
34
42
|
version: import_zod.z.string(),
|
|
35
43
|
agents: import_zod.z.record(import_zod.z.string(), AgentRegistryEntrySchema)
|
|
36
44
|
}).strict();
|
|
45
|
+
function normalizeRegistryJson(raw) {
|
|
46
|
+
if (!raw || typeof raw !== "object") {
|
|
47
|
+
return { version: "1.0.0", agents: {} };
|
|
48
|
+
}
|
|
49
|
+
const input = raw;
|
|
50
|
+
const normalizedAgents = {};
|
|
51
|
+
const agents = input.agents && typeof input.agents === "object" && input.agents !== null ? input.agents : {};
|
|
52
|
+
for (const [agentId, value] of Object.entries(agents)) {
|
|
53
|
+
if (!value || typeof value !== "object") continue;
|
|
54
|
+
const entry = { ...value };
|
|
55
|
+
if (!entry.id || typeof entry.id !== "string" || entry.id.trim() !== agentId) {
|
|
56
|
+
entry.id = agentId;
|
|
57
|
+
}
|
|
58
|
+
if (!entry.name || typeof entry.name !== "string" || !entry.name.trim()) {
|
|
59
|
+
entry.name = deriveDisplayName(agentId);
|
|
60
|
+
}
|
|
61
|
+
normalizedAgents[agentId] = entry;
|
|
62
|
+
}
|
|
63
|
+
return {
|
|
64
|
+
version: typeof input.version === "string" && input.version.trim().length > 0 ? input.version : "1.0.0",
|
|
65
|
+
agents: normalizedAgents
|
|
66
|
+
};
|
|
67
|
+
}
|
|
37
68
|
// Annotate the CommonJS export names for ESM import in node:
|
|
38
69
|
0 && (module.exports = {
|
|
39
70
|
AgentRegistryEntrySchema,
|
|
40
|
-
RegistrySchema
|
|
71
|
+
RegistrySchema,
|
|
72
|
+
deriveDisplayName,
|
|
73
|
+
normalizeRegistryJson
|
|
41
74
|
});
|