@dexto/core 1.2.3 → 1.2.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +60 -0
- package/dist/agent/DextoAgent.cjs +579 -345
- package/dist/agent/DextoAgent.d.ts +131 -83
- package/dist/agent/DextoAgent.d.ts.map +1 -1
- package/dist/agent/DextoAgent.js +573 -336
- package/dist/agent/agentCard.cjs +4 -2
- package/dist/agent/agentCard.d.ts +0 -1
- package/dist/agent/agentCard.d.ts.map +1 -1
- package/dist/agent/agentCard.js +4 -2
- package/dist/agent/index.cjs +3 -7
- package/dist/agent/index.d.ts +3 -3
- package/dist/agent/index.d.ts.map +1 -1
- package/dist/agent/index.js +7 -6
- package/dist/agent/schemas.cjs +164 -64
- package/dist/agent/schemas.d.ts +2605 -517
- package/dist/agent/schemas.d.ts.map +1 -1
- package/dist/agent/schemas.js +167 -64
- package/dist/agent/state-manager.cjs +28 -23
- package/dist/agent/state-manager.d.ts +4 -1
- package/dist/agent/state-manager.d.ts.map +1 -1
- package/dist/agent/state-manager.js +28 -23
- package/dist/{preferences/constants.cjs → agent/types.cjs} +2 -14
- package/dist/agent/types.d.ts +54 -0
- package/dist/agent/types.d.ts.map +1 -0
- package/dist/agent/types.js +0 -0
- package/dist/approval/errors.cjs +89 -8
- package/dist/approval/errors.d.ts +5 -3
- package/dist/approval/errors.d.ts.map +1 -1
- package/dist/approval/errors.js +89 -8
- package/dist/approval/{providers/factory.d.ts → factory.d.ts} +2 -2
- package/dist/approval/factory.d.ts.map +1 -0
- package/dist/approval/{providers/factory.js → factory.js} +1 -1
- package/dist/approval/index.cjs +4 -6
- package/dist/approval/index.d.ts +3 -5
- package/dist/approval/index.d.ts.map +1 -1
- package/dist/approval/index.js +4 -5
- package/dist/approval/manager.cjs +140 -37
- package/dist/approval/manager.d.ts +56 -17
- package/dist/approval/manager.d.ts.map +1 -1
- package/dist/approval/manager.js +141 -38
- package/dist/approval/schemas.cjs +9 -1
- package/dist/approval/schemas.d.ts +120 -35
- package/dist/approval/schemas.d.ts.map +1 -1
- package/dist/approval/schemas.js +9 -2
- package/dist/approval/types.cjs +14 -2
- package/dist/approval/types.d.ts +64 -12
- package/dist/approval/types.d.ts.map +1 -1
- package/dist/approval/types.js +12 -1
- package/dist/context/compression/middle-removal.cjs +11 -11
- package/dist/context/compression/middle-removal.d.ts +3 -1
- package/dist/context/compression/middle-removal.d.ts.map +1 -1
- package/dist/context/compression/middle-removal.js +11 -11
- package/dist/context/compression/oldest-removal.cjs +18 -5
- package/dist/context/compression/oldest-removal.d.ts +3 -1
- package/dist/context/compression/oldest-removal.d.ts.map +1 -1
- package/dist/context/compression/oldest-removal.js +18 -5
- package/dist/context/manager.cjs +94 -67
- package/dist/context/manager.d.ts +13 -10
- package/dist/context/manager.d.ts.map +1 -1
- package/dist/context/manager.js +94 -67
- package/dist/context/utils.cjs +79 -65
- package/dist/context/utils.d.ts +15 -12
- package/dist/context/utils.d.ts.map +1 -1
- package/dist/context/utils.js +45 -31
- package/dist/errors/DextoRuntimeError.d.ts +5 -5
- package/dist/errors/DextoRuntimeError.d.ts.map +1 -1
- package/dist/errors/result-bridge.cjs +2 -3
- package/dist/errors/result-bridge.d.ts +5 -3
- package/dist/errors/result-bridge.d.ts.map +1 -1
- package/dist/errors/result-bridge.js +1 -2
- package/dist/errors/types.cjs +1 -2
- package/dist/errors/types.d.ts +5 -8
- package/dist/errors/types.d.ts.map +1 -1
- package/dist/errors/types.js +1 -2
- package/dist/events/index.cjs +125 -55
- package/dist/events/index.d.ts +204 -97
- package/dist/events/index.d.ts.map +1 -1
- package/dist/events/index.js +123 -55
- package/dist/filesystem/filesystem-service.cjs +40 -30
- package/dist/filesystem/filesystem-service.d.ts +9 -1
- package/dist/filesystem/filesystem-service.d.ts.map +1 -1
- package/dist/filesystem/filesystem-service.js +40 -30
- package/dist/filesystem/path-validator.cjs +4 -3
- package/dist/filesystem/path-validator.d.ts +3 -1
- package/dist/filesystem/path-validator.d.ts.map +1 -1
- package/dist/filesystem/path-validator.js +4 -3
- package/dist/filesystem/types.d.ts +3 -3
- package/dist/filesystem/types.d.ts.map +1 -1
- package/dist/index.browser.cjs +7 -0
- package/dist/index.browser.d.ts +2 -0
- package/dist/index.browser.d.ts.map +1 -1
- package/dist/index.browser.js +4 -0
- package/dist/index.cjs +0 -7
- package/dist/index.d.ts +12 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +0 -4
- package/dist/llm/formatters/anthropic.cjs +32 -21
- package/dist/llm/formatters/anthropic.d.ts +3 -0
- package/dist/llm/formatters/anthropic.d.ts.map +1 -1
- package/dist/llm/formatters/anthropic.js +32 -21
- package/dist/llm/formatters/factory.cjs +6 -7
- package/dist/llm/formatters/factory.d.ts +2 -1
- package/dist/llm/formatters/factory.d.ts.map +1 -1
- package/dist/llm/formatters/factory.js +4 -5
- package/dist/llm/formatters/openai.cjs +38 -9
- package/dist/llm/formatters/openai.d.ts +3 -0
- package/dist/llm/formatters/openai.d.ts.map +1 -1
- package/dist/llm/formatters/openai.js +38 -9
- package/dist/llm/formatters/vercel.cjs +49 -8
- package/dist/llm/formatters/vercel.d.ts +3 -0
- package/dist/llm/formatters/vercel.d.ts.map +1 -1
- package/dist/llm/formatters/vercel.js +49 -8
- package/dist/llm/registry.cjs +153 -17
- package/dist/llm/registry.d.ts +5 -2
- package/dist/llm/registry.d.ts.map +1 -1
- package/dist/llm/registry.js +143 -7
- package/dist/llm/resolver.cjs +4 -4
- package/dist/llm/resolver.d.ts +3 -2
- package/dist/llm/resolver.d.ts.map +1 -1
- package/dist/llm/resolver.js +4 -4
- package/dist/llm/schemas.cjs +6 -3
- package/dist/llm/schemas.d.ts +51 -17
- package/dist/llm/schemas.d.ts.map +1 -1
- package/dist/llm/schemas.js +5 -3
- package/dist/llm/services/anthropic.cjs +216 -183
- package/dist/llm/services/anthropic.d.ts +3 -1
- package/dist/llm/services/anthropic.d.ts.map +1 -1
- package/dist/llm/services/anthropic.js +217 -184
- package/dist/llm/services/factory.cjs +15 -9
- package/dist/llm/services/factory.d.ts +2 -1
- package/dist/llm/services/factory.d.ts.map +1 -1
- package/dist/llm/services/factory.js +15 -9
- package/dist/llm/services/openai.cjs +262 -225
- package/dist/llm/services/openai.d.ts +3 -1
- package/dist/llm/services/openai.d.ts.map +1 -1
- package/dist/llm/services/openai.js +263 -226
- package/dist/llm/services/test-utils.integration.cjs +58 -12
- package/dist/llm/services/test-utils.integration.d.ts.map +1 -1
- package/dist/llm/services/test-utils.integration.js +58 -12
- package/dist/llm/services/types.d.ts +9 -0
- package/dist/llm/services/types.d.ts.map +1 -1
- package/dist/llm/services/vercel.cjs +163 -111
- package/dist/llm/services/vercel.d.ts +3 -1
- package/dist/llm/services/vercel.d.ts.map +1 -1
- package/dist/llm/services/vercel.js +157 -105
- package/dist/llm/tokenizer/factory.cjs +2 -2
- package/dist/llm/tokenizer/factory.d.ts +3 -1
- package/dist/llm/tokenizer/factory.d.ts.map +1 -1
- package/dist/llm/tokenizer/factory.js +2 -2
- package/dist/llm/tokenizer/openai.cjs +16 -9
- package/dist/llm/tokenizer/openai.d.ts +4 -1
- package/dist/llm/tokenizer/openai.d.ts.map +1 -1
- package/dist/llm/tokenizer/openai.js +16 -9
- package/dist/llm/validation.cjs +8 -9
- package/dist/llm/validation.d.ts +3 -1
- package/dist/llm/validation.d.ts.map +1 -1
- package/dist/llm/validation.js +5 -6
- package/dist/logger/factory.cjs +54 -0
- package/dist/logger/factory.d.ts +36 -0
- package/dist/logger/factory.d.ts.map +1 -0
- package/dist/logger/factory.js +31 -0
- package/dist/logger/index.cjs +42 -3
- package/dist/logger/index.d.ts +17 -1
- package/dist/logger/index.d.ts.map +1 -1
- package/dist/logger/index.js +26 -1
- package/dist/logger/logger.cjs +30 -17
- package/dist/logger/logger.d.ts.map +1 -1
- package/dist/logger/logger.js +30 -17
- package/dist/logger/v2/dexto-logger.cjs +141 -0
- package/dist/logger/v2/dexto-logger.d.ts +54 -0
- package/dist/logger/v2/dexto-logger.d.ts.map +1 -0
- package/dist/logger/v2/dexto-logger.js +118 -0
- package/dist/{preferences → logger/v2}/error-codes.cjs +11 -10
- package/dist/logger/v2/error-codes.d.ts +13 -0
- package/dist/logger/v2/error-codes.d.ts.map +1 -0
- package/dist/logger/v2/error-codes.js +13 -0
- package/dist/logger/v2/errors.cjs +107 -0
- package/dist/logger/v2/errors.d.ts +32 -0
- package/dist/logger/v2/errors.d.ts.map +1 -0
- package/dist/logger/v2/errors.js +84 -0
- package/dist/logger/v2/schemas.cjs +57 -0
- package/dist/logger/v2/schemas.d.ts +147 -0
- package/dist/logger/v2/schemas.d.ts.map +1 -0
- package/dist/logger/v2/schemas.js +33 -0
- package/dist/logger/v2/transport-factory.cjs +53 -0
- package/dist/logger/v2/transport-factory.d.ts +21 -0
- package/dist/logger/v2/transport-factory.d.ts.map +1 -0
- package/dist/logger/v2/transport-factory.js +29 -0
- package/dist/logger/v2/transports/console-transport.cjs +79 -0
- package/dist/logger/v2/transports/console-transport.d.ts +23 -0
- package/dist/logger/v2/transports/console-transport.d.ts.map +1 -0
- package/dist/logger/v2/transports/console-transport.js +46 -0
- package/dist/logger/v2/transports/file-transport.cjs +161 -0
- package/dist/logger/v2/transports/file-transport.d.ts +46 -0
- package/dist/logger/v2/transports/file-transport.d.ts.map +1 -0
- package/dist/logger/v2/transports/file-transport.js +128 -0
- package/dist/logger/v2/types.cjs +49 -0
- package/dist/logger/v2/types.d.ts +123 -0
- package/dist/logger/v2/types.d.ts.map +1 -0
- package/dist/logger/v2/types.js +26 -0
- package/dist/mcp/manager.cjs +88 -78
- package/dist/mcp/manager.d.ts +3 -1
- package/dist/mcp/manager.d.ts.map +1 -1
- package/dist/mcp/manager.js +88 -78
- package/dist/mcp/mcp-client.cjs +109 -79
- package/dist/mcp/mcp-client.d.ts +3 -0
- package/dist/mcp/mcp-client.d.ts.map +1 -1
- package/dist/mcp/mcp-client.js +102 -72
- package/dist/memory/manager.cjs +9 -7
- package/dist/memory/manager.d.ts +3 -1
- package/dist/memory/manager.d.ts.map +1 -1
- package/dist/memory/manager.js +9 -7
- package/dist/memory/schemas.d.ts +6 -6
- package/dist/plugins/manager.cjs +21 -19
- package/dist/plugins/manager.d.ts +3 -1
- package/dist/plugins/manager.d.ts.map +1 -1
- package/dist/plugins/manager.js +21 -19
- package/dist/plugins/schemas.d.ts +9 -9
- package/dist/plugins/types.d.ts +2 -2
- package/dist/plugins/types.d.ts.map +1 -1
- package/dist/process/command-validator.cjs +30 -20
- package/dist/process/command-validator.d.ts +4 -1
- package/dist/process/command-validator.d.ts.map +1 -1
- package/dist/process/command-validator.js +30 -20
- package/dist/process/process-service.cjs +23 -21
- package/dist/process/process-service.d.ts +3 -1
- package/dist/process/process-service.d.ts.map +1 -1
- package/dist/process/process-service.js +23 -21
- package/dist/prompts/prompt-manager.cjs +25 -18
- package/dist/prompts/prompt-manager.d.ts +3 -1
- package/dist/prompts/prompt-manager.d.ts.map +1 -1
- package/dist/prompts/prompt-manager.js +25 -18
- package/dist/prompts/providers/custom-prompt-provider.cjs +11 -7
- package/dist/prompts/providers/custom-prompt-provider.d.ts +3 -1
- package/dist/prompts/providers/custom-prompt-provider.d.ts.map +1 -1
- package/dist/prompts/providers/custom-prompt-provider.js +11 -7
- package/dist/prompts/providers/file-prompt-provider.cjs +14 -12
- package/dist/prompts/providers/file-prompt-provider.d.ts +3 -1
- package/dist/prompts/providers/file-prompt-provider.d.ts.map +1 -1
- package/dist/prompts/providers/file-prompt-provider.js +14 -12
- package/dist/prompts/providers/mcp-prompt-provider.cjs +7 -6
- package/dist/prompts/providers/mcp-prompt-provider.d.ts +3 -1
- package/dist/prompts/providers/mcp-prompt-provider.d.ts.map +1 -1
- package/dist/prompts/providers/mcp-prompt-provider.js +7 -6
- package/dist/prompts/providers/starter-prompt-provider.cjs +7 -5
- package/dist/prompts/providers/starter-prompt-provider.d.ts +3 -1
- package/dist/prompts/providers/starter-prompt-provider.d.ts.map +1 -1
- package/dist/prompts/providers/starter-prompt-provider.js +7 -5
- package/dist/prompts/schemas.d.ts +3 -3
- package/dist/resources/handlers/blob-handler.cjs +15 -11
- package/dist/resources/handlers/blob-handler.d.ts +3 -1
- package/dist/resources/handlers/blob-handler.d.ts.map +1 -1
- package/dist/resources/handlers/blob-handler.js +15 -11
- package/dist/resources/handlers/factory.cjs +3 -3
- package/dist/resources/handlers/factory.d.ts +2 -1
- package/dist/resources/handlers/factory.d.ts.map +1 -1
- package/dist/resources/handlers/factory.js +3 -3
- package/dist/resources/handlers/filesystem-handler.cjs +10 -8
- package/dist/resources/handlers/filesystem-handler.d.ts +3 -1
- package/dist/resources/handlers/filesystem-handler.d.ts.map +1 -1
- package/dist/resources/handlers/filesystem-handler.js +10 -8
- package/dist/resources/internal-provider.cjs +28 -20
- package/dist/resources/internal-provider.d.ts +3 -1
- package/dist/resources/internal-provider.d.ts.map +1 -1
- package/dist/resources/internal-provider.js +28 -20
- package/dist/resources/manager.cjs +34 -25
- package/dist/resources/manager.d.ts +3 -1
- package/dist/resources/manager.d.ts.map +1 -1
- package/dist/resources/manager.js +34 -25
- package/dist/resources/schemas.d.ts +6 -6
- package/dist/search/search-service.cjs +8 -6
- package/dist/search/search-service.d.ts +3 -1
- package/dist/search/search-service.d.ts.map +1 -1
- package/dist/search/search-service.js +8 -6
- package/dist/session/chat-session.cjs +40 -27
- package/dist/session/chat-session.d.ts +10 -7
- package/dist/session/chat-session.d.ts.map +1 -1
- package/dist/session/chat-session.js +40 -27
- package/dist/session/history/database.cjs +18 -11
- package/dist/session/history/database.d.ts +3 -1
- package/dist/session/history/database.d.ts.map +1 -1
- package/dist/session/history/database.js +18 -11
- package/dist/session/history/factory.cjs +2 -2
- package/dist/session/history/factory.d.ts +5 -1
- package/dist/session/history/factory.d.ts.map +1 -1
- package/dist/session/history/factory.js +2 -2
- package/dist/session/session-manager.cjs +37 -53
- package/dist/session/session-manager.d.ts +3 -17
- package/dist/session/session-manager.d.ts.map +1 -1
- package/dist/session/session-manager.js +37 -53
- package/dist/session/title-generator.cjs +3 -2
- package/dist/session/title-generator.d.ts +2 -1
- package/dist/session/title-generator.d.ts.map +1 -1
- package/dist/session/title-generator.js +3 -2
- package/dist/storage/blob/factory.cjs +9 -18
- package/dist/storage/blob/factory.d.ts +5 -4
- package/dist/storage/blob/factory.d.ts.map +1 -1
- package/dist/storage/blob/factory.js +8 -17
- package/dist/storage/blob/local-blob-store.cjs +25 -32
- package/dist/storage/blob/local-blob-store.d.ts +3 -2
- package/dist/storage/blob/local-blob-store.d.ts.map +1 -1
- package/dist/storage/blob/local-blob-store.js +25 -32
- package/dist/storage/blob/memory-blob-store.cjs +326 -0
- package/dist/storage/blob/memory-blob-store.d.ts +66 -0
- package/dist/storage/blob/memory-blob-store.d.ts.map +1 -0
- package/dist/storage/blob/memory-blob-store.js +303 -0
- package/dist/storage/blob/schemas.cjs +3 -1
- package/dist/storage/blob/schemas.d.ts +6 -6
- package/dist/storage/blob/schemas.d.ts.map +1 -1
- package/dist/storage/blob/schemas.js +3 -1
- package/dist/storage/cache/factory.cjs +7 -8
- package/dist/storage/cache/factory.d.ts +4 -1
- package/dist/storage/cache/factory.d.ts.map +1 -1
- package/dist/storage/cache/factory.js +4 -5
- package/dist/storage/cache/redis-store.cjs +4 -1
- package/dist/storage/cache/redis-store.d.ts +3 -1
- package/dist/storage/cache/redis-store.d.ts.map +1 -1
- package/dist/storage/cache/redis-store.js +4 -1
- package/dist/storage/database/factory.cjs +13 -16
- package/dist/storage/database/factory.d.ts +5 -3
- package/dist/storage/database/factory.d.ts.map +1 -1
- package/dist/storage/database/factory.js +9 -12
- package/dist/storage/database/postgres-store.cjs +4 -1
- package/dist/storage/database/postgres-store.d.ts +3 -1
- package/dist/storage/database/postgres-store.d.ts.map +1 -1
- package/dist/storage/database/postgres-store.js +4 -1
- package/dist/storage/database/schemas.cjs +3 -4
- package/dist/storage/database/schemas.d.ts +8 -16
- package/dist/storage/database/schemas.d.ts.map +1 -1
- package/dist/storage/database/schemas.js +3 -4
- package/dist/storage/database/sqlite-store.cjs +17 -45
- package/dist/storage/database/sqlite-store.d.ts +3 -3
- package/dist/storage/database/sqlite-store.d.ts.map +1 -1
- package/dist/storage/database/sqlite-store.js +17 -45
- package/dist/storage/schemas.cjs +3 -1
- package/dist/storage/schemas.d.ts +16 -23
- package/dist/storage/schemas.d.ts.map +1 -1
- package/dist/storage/schemas.js +3 -1
- package/dist/storage/storage-manager.cjs +15 -15
- package/dist/storage/storage-manager.d.ts +6 -6
- package/dist/storage/storage-manager.d.ts.map +1 -1
- package/dist/storage/storage-manager.js +15 -15
- package/dist/systemPrompt/contributors.cjs +15 -15
- package/dist/systemPrompt/contributors.d.ts +5 -3
- package/dist/systemPrompt/contributors.d.ts.map +1 -1
- package/dist/systemPrompt/contributors.js +15 -15
- package/dist/systemPrompt/manager.cjs +11 -8
- package/dist/systemPrompt/manager.d.ts +4 -2
- package/dist/systemPrompt/manager.d.ts.map +1 -1
- package/dist/systemPrompt/manager.js +11 -8
- package/dist/systemPrompt/schemas.cjs +21 -1
- package/dist/systemPrompt/schemas.d.ts +53 -53
- package/dist/systemPrompt/schemas.d.ts.map +1 -1
- package/dist/systemPrompt/schemas.js +11 -1
- package/dist/telemetry/decorators.cjs +54 -15
- package/dist/telemetry/decorators.d.ts.map +1 -1
- package/dist/telemetry/decorators.js +54 -15
- package/dist/telemetry/utils.cjs +21 -14
- package/dist/telemetry/utils.d.ts +7 -3
- package/dist/telemetry/utils.d.ts.map +1 -1
- package/dist/telemetry/utils.js +21 -14
- package/dist/tools/confirmation/allowed-tools-provider/factory.cjs +2 -2
- package/dist/tools/confirmation/allowed-tools-provider/factory.d.ts +2 -1
- package/dist/tools/confirmation/allowed-tools-provider/factory.d.ts.map +1 -1
- package/dist/tools/confirmation/allowed-tools-provider/factory.js +2 -2
- package/dist/tools/confirmation/allowed-tools-provider/storage.cjs +7 -6
- package/dist/tools/confirmation/allowed-tools-provider/storage.d.ts +3 -1
- package/dist/tools/confirmation/allowed-tools-provider/storage.d.ts.map +1 -1
- package/dist/tools/confirmation/allowed-tools-provider/storage.js +7 -6
- package/dist/tools/errors.cjs +2 -1
- package/dist/tools/errors.d.ts.map +1 -1
- package/dist/tools/errors.js +2 -1
- package/dist/tools/internal-tools/constants.cjs +2 -1
- package/dist/tools/internal-tools/constants.d.ts +1 -1
- package/dist/tools/internal-tools/constants.d.ts.map +1 -1
- package/dist/tools/internal-tools/constants.js +2 -1
- package/dist/tools/internal-tools/implementations/bash-exec-tool.cjs +1 -1
- package/dist/tools/internal-tools/implementations/bash-exec-tool.js +1 -1
- package/dist/tools/internal-tools/implementations/delegate-to-url-tool.cjs +192 -0
- package/dist/tools/internal-tools/implementations/delegate-to-url-tool.d.ts +33 -0
- package/dist/tools/internal-tools/implementations/delegate-to-url-tool.d.ts.map +1 -0
- package/dist/tools/internal-tools/implementations/delegate-to-url-tool.js +169 -0
- package/dist/tools/internal-tools/provider.cjs +21 -17
- package/dist/tools/internal-tools/provider.d.ts +3 -1
- package/dist/tools/internal-tools/provider.d.ts.map +1 -1
- package/dist/tools/internal-tools/provider.js +21 -17
- package/dist/tools/internal-tools/registry.cjs +5 -0
- package/dist/tools/internal-tools/registry.d.ts.map +1 -1
- package/dist/tools/internal-tools/registry.js +5 -0
- package/dist/tools/schemas.cjs +16 -4
- package/dist/tools/schemas.d.ts +21 -9
- package/dist/tools/schemas.d.ts.map +1 -1
- package/dist/tools/schemas.js +15 -4
- package/dist/tools/tool-manager.cjs +64 -47
- package/dist/tools/tool-manager.d.ts +4 -2
- package/dist/tools/tool-manager.d.ts.map +1 -1
- package/dist/tools/tool-manager.js +61 -44
- package/dist/tools/types.d.ts +0 -4
- package/dist/tools/types.d.ts.map +1 -1
- package/dist/utils/env-file.cjs +118 -0
- package/dist/utils/env-file.d.ts +5 -0
- package/dist/utils/env-file.d.ts.map +1 -0
- package/dist/utils/env-file.js +85 -0
- package/dist/utils/error-conversion.cjs +23 -1
- package/dist/utils/error-conversion.d.ts +2 -1
- package/dist/utils/error-conversion.d.ts.map +1 -1
- package/dist/utils/error-conversion.js +23 -1
- package/dist/utils/execution-context.d.ts.map +1 -1
- package/dist/utils/fs-walk.d.ts.map +1 -1
- package/dist/utils/index.cjs +7 -9
- package/dist/utils/index.d.ts +3 -4
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +3 -4
- package/dist/utils/path.cjs +22 -57
- package/dist/utils/path.d.ts +8 -7
- package/dist/utils/path.d.ts.map +1 -1
- package/dist/utils/path.js +21 -54
- package/dist/utils/result.cjs +37 -14
- package/dist/utils/result.d.ts.map +1 -1
- package/dist/utils/result.js +37 -14
- package/dist/utils/schema.cjs +2 -3
- package/dist/utils/schema.d.ts +2 -1
- package/dist/utils/schema.d.ts.map +1 -1
- package/dist/utils/schema.js +1 -2
- package/dist/utils/service-initializer.cjs +87 -61
- package/dist/utils/service-initializer.d.ts +4 -2
- package/dist/utils/service-initializer.d.ts.map +1 -1
- package/dist/utils/service-initializer.js +69 -43
- package/package.json +7 -3
- package/dist/Dexto.cjs +0 -251
- package/dist/Dexto.d.ts +0 -191
- package/dist/Dexto.d.ts.map +0 -1
- package/dist/Dexto.js +0 -228
- package/dist/agent/registry/error-codes.cjs +0 -44
- package/dist/agent/registry/error-codes.d.ts +0 -21
- package/dist/agent/registry/error-codes.d.ts.map +0 -1
- package/dist/agent/registry/error-codes.js +0 -21
- package/dist/agent/registry/errors.cjs +0 -188
- package/dist/agent/registry/errors.d.ts +0 -63
- package/dist/agent/registry/errors.d.ts.map +0 -1
- package/dist/agent/registry/errors.js +0 -165
- package/dist/agent/registry/registry.cjs +0 -479
- package/dist/agent/registry/registry.d.ts +0 -130
- package/dist/agent/registry/registry.d.ts.map +0 -1
- package/dist/agent/registry/registry.js +0 -453
- package/dist/agent/registry/types.cjs +0 -74
- package/dist/agent/registry/types.d.ts +0 -142
- package/dist/agent/registry/types.d.ts.map +0 -1
- package/dist/agent/registry/types.js +0 -48
- package/dist/agent/registry/user-registry.cjs +0 -140
- package/dist/agent/registry/user-registry.d.ts +0 -34
- package/dist/agent/registry/user-registry.d.ts.map +0 -1
- package/dist/agent/registry/user-registry.js +0 -105
- package/dist/approval/providers/event-based-approval-provider.cjs +0 -156
- package/dist/approval/providers/event-based-approval-provider.d.ts +0 -39
- package/dist/approval/providers/event-based-approval-provider.d.ts.map +0 -1
- package/dist/approval/providers/event-based-approval-provider.js +0 -133
- package/dist/approval/providers/factory.d.ts.map +0 -1
- package/dist/approval/providers/noop-approval-provider.cjs +0 -54
- package/dist/approval/providers/noop-approval-provider.d.ts +0 -18
- package/dist/approval/providers/noop-approval-provider.d.ts.map +0 -1
- package/dist/approval/providers/noop-approval-provider.js +0 -31
- package/dist/config/agent-resolver.cjs +0 -153
- package/dist/config/agent-resolver.d.ts +0 -14
- package/dist/config/agent-resolver.d.ts.map +0 -1
- package/dist/config/agent-resolver.js +0 -123
- package/dist/config/error-codes.cjs +0 -39
- package/dist/config/error-codes.d.ts +0 -16
- package/dist/config/error-codes.d.ts.map +0 -1
- package/dist/config/error-codes.js +0 -16
- package/dist/config/errors.cjs +0 -126
- package/dist/config/errors.d.ts +0 -34
- package/dist/config/errors.d.ts.map +0 -1
- package/dist/config/errors.js +0 -103
- package/dist/config/index.cjs +0 -26
- package/dist/config/index.d.ts +0 -4
- package/dist/config/index.d.ts.map +0 -1
- package/dist/config/index.js +0 -3
- package/dist/config/loader.cjs +0 -119
- package/dist/config/loader.d.ts +0 -16
- package/dist/config/loader.d.ts.map +0 -1
- package/dist/config/loader.js +0 -86
- package/dist/config/writer.cjs +0 -182
- package/dist/config/writer.d.ts +0 -35
- package/dist/config/writer.d.ts.map +0 -1
- package/dist/config/writer.js +0 -147
- package/dist/preferences/constants.d.ts +0 -2
- package/dist/preferences/constants.d.ts.map +0 -1
- package/dist/preferences/constants.js +0 -5
- package/dist/preferences/error-codes.d.ts +0 -8
- package/dist/preferences/error-codes.d.ts.map +0 -1
- package/dist/preferences/error-codes.js +0 -12
- package/dist/preferences/errors.cjs +0 -75
- package/dist/preferences/errors.d.ts +0 -18
- package/dist/preferences/errors.d.ts.map +0 -1
- package/dist/preferences/errors.js +0 -51
- package/dist/preferences/index.cjs +0 -55
- package/dist/preferences/index.d.ts +0 -6
- package/dist/preferences/index.d.ts.map +0 -1
- package/dist/preferences/index.js +0 -32
- package/dist/preferences/loader.cjs +0 -138
- package/dist/preferences/loader.d.ts +0 -51
- package/dist/preferences/loader.d.ts.map +0 -1
- package/dist/preferences/loader.js +0 -110
- package/dist/preferences/schemas.cjs +0 -75
- package/dist/preferences/schemas.d.ts +0 -110
- package/dist/preferences/schemas.d.ts.map +0 -1
- package/dist/preferences/schemas.js +0 -49
- package/dist/utils/api-key-store.cjs +0 -56
- package/dist/utils/api-key-store.d.ts +0 -24
- package/dist/utils/api-key-store.d.ts.map +0 -1
- package/dist/utils/api-key-store.js +0 -31
- package/dist/utils/env.cjs +0 -154
- package/dist/utils/env.d.ts +0 -28
- package/dist/utils/env.d.ts.map +0 -1
- package/dist/utils/env.js +0 -119
- package/dist/utils/port-utils.cjs +0 -37
- package/dist/utils/port-utils.d.ts +0 -10
- package/dist/utils/port-utils.d.ts.map +0 -1
- package/dist/utils/port-utils.js +0 -14
- package/dist/utils/port-utils.spec.cjs +0 -26
- package/dist/utils/port-utils.spec.js +0 -25
- /package/dist/approval/{providers/factory.cjs → factory.cjs} +0 -0
|
@@ -1,453 +0,0 @@
|
|
|
1
|
-
import "../../chunk-C6A6W6XS.js";
|
|
2
|
-
import { existsSync, readFileSync } from "fs";
|
|
3
|
-
import { promises as fs } from "fs";
|
|
4
|
-
import path from "path";
|
|
5
|
-
import { logger } from "../../logger/index.js";
|
|
6
|
-
import { resolveBundledScript, getDextoGlobalPath, copyDirectory } from "../../utils/path.js";
|
|
7
|
-
import { loadGlobalPreferences } from "../../preferences/loader.js";
|
|
8
|
-
import { writePreferencesToAgent } from "../../config/writer.js";
|
|
9
|
-
import {
|
|
10
|
-
RegistrySchema,
|
|
11
|
-
normalizeRegistryJson
|
|
12
|
-
} from "./types.js";
|
|
13
|
-
import { RegistryError } from "./errors.js";
|
|
14
|
-
import {
|
|
15
|
-
loadUserRegistry,
|
|
16
|
-
mergeRegistries,
|
|
17
|
-
removeAgentFromUserRegistry,
|
|
18
|
-
addAgentToUserRegistry
|
|
19
|
-
} from "./user-registry.js";
|
|
20
|
-
let cachedRegistry = null;
|
|
21
|
-
class LocalAgentRegistry {
|
|
22
|
-
_registry = null;
|
|
23
|
-
/**
|
|
24
|
-
* Lazy load registry from JSON file
|
|
25
|
-
*/
|
|
26
|
-
getRegistry() {
|
|
27
|
-
if (this._registry === null) {
|
|
28
|
-
this._registry = this.loadRegistry();
|
|
29
|
-
}
|
|
30
|
-
return this._registry;
|
|
31
|
-
}
|
|
32
|
-
/**
|
|
33
|
-
* Load and merge bundled + user registries
|
|
34
|
-
* Uses fail-fast approach - throws RegistryError for any loading issues
|
|
35
|
-
*/
|
|
36
|
-
loadRegistry() {
|
|
37
|
-
let jsonPath;
|
|
38
|
-
try {
|
|
39
|
-
jsonPath = resolveBundledScript("agents/agent-registry.json");
|
|
40
|
-
} catch (error) {
|
|
41
|
-
throw RegistryError.registryNotFound(
|
|
42
|
-
"agents/agent-registry.json",
|
|
43
|
-
error instanceof Error ? error.message : String(error)
|
|
44
|
-
);
|
|
45
|
-
}
|
|
46
|
-
if (!existsSync(jsonPath)) {
|
|
47
|
-
throw RegistryError.registryNotFound(jsonPath, "File doesn't exist");
|
|
48
|
-
}
|
|
49
|
-
let bundledRegistry;
|
|
50
|
-
try {
|
|
51
|
-
const jsonData = readFileSync(jsonPath, "utf-8");
|
|
52
|
-
const rawRegistry = JSON.parse(jsonData);
|
|
53
|
-
bundledRegistry = RegistrySchema.parse(normalizeRegistryJson(rawRegistry));
|
|
54
|
-
} catch (error) {
|
|
55
|
-
throw RegistryError.registryParseError(
|
|
56
|
-
jsonPath,
|
|
57
|
-
error instanceof Error ? error.message : String(error)
|
|
58
|
-
);
|
|
59
|
-
}
|
|
60
|
-
const userRegistry = loadUserRegistry();
|
|
61
|
-
const merged = mergeRegistries(bundledRegistry, userRegistry);
|
|
62
|
-
logger.debug(
|
|
63
|
-
`Loaded registry: ${Object.keys(bundledRegistry.agents).length} bundled, ${Object.keys(userRegistry.agents).length} custom`
|
|
64
|
-
);
|
|
65
|
-
return merged;
|
|
66
|
-
}
|
|
67
|
-
/**
|
|
68
|
-
* Check if agent exists in registry by ID
|
|
69
|
-
*/
|
|
70
|
-
hasAgent(agentId) {
|
|
71
|
-
const registry = this.getRegistry();
|
|
72
|
-
return agentId in registry.agents;
|
|
73
|
-
}
|
|
74
|
-
/**
|
|
75
|
-
* Get available agents with their metadata from registry
|
|
76
|
-
*/
|
|
77
|
-
getAvailableAgents() {
|
|
78
|
-
const registry = this.getRegistry();
|
|
79
|
-
return registry.agents;
|
|
80
|
-
}
|
|
81
|
-
/**
|
|
82
|
-
* Validate custom agent ID doesn't conflict with bundled registry
|
|
83
|
-
* @throws RegistryError if ID conflicts with builtin agent
|
|
84
|
-
*/
|
|
85
|
-
validateCustomAgentId(agentId) {
|
|
86
|
-
let jsonPath;
|
|
87
|
-
try {
|
|
88
|
-
jsonPath = resolveBundledScript("agents/agent-registry.json");
|
|
89
|
-
} catch (error) {
|
|
90
|
-
throw RegistryError.registryNotFound(
|
|
91
|
-
"agents/agent-registry.json",
|
|
92
|
-
error instanceof Error ? error.message : String(error)
|
|
93
|
-
);
|
|
94
|
-
}
|
|
95
|
-
try {
|
|
96
|
-
const jsonData = readFileSync(jsonPath, "utf-8");
|
|
97
|
-
const bundledRegistry = RegistrySchema.parse(
|
|
98
|
-
normalizeRegistryJson(JSON.parse(jsonData))
|
|
99
|
-
);
|
|
100
|
-
if (agentId in bundledRegistry.agents) {
|
|
101
|
-
throw RegistryError.customAgentNameConflict(agentId);
|
|
102
|
-
}
|
|
103
|
-
} catch (error) {
|
|
104
|
-
if (error instanceof Error && /name conflicts with builtin agent/.test(error.message)) {
|
|
105
|
-
throw error;
|
|
106
|
-
}
|
|
107
|
-
throw RegistryError.registryParseError(
|
|
108
|
-
jsonPath,
|
|
109
|
-
error instanceof Error ? error.message : String(error)
|
|
110
|
-
);
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
/**
|
|
114
|
-
* Resolve main config file for installed agent
|
|
115
|
-
* Handles both directory agents (with main field) and single-file agents
|
|
116
|
-
*/
|
|
117
|
-
resolveMainConfig(agentDir, agentId) {
|
|
118
|
-
const registry = this.getRegistry();
|
|
119
|
-
const agentData = registry.agents[agentId];
|
|
120
|
-
if (!agentData) {
|
|
121
|
-
const available = Object.keys(registry.agents);
|
|
122
|
-
throw RegistryError.agentNotFound(agentId, available);
|
|
123
|
-
}
|
|
124
|
-
if (agentData.source.endsWith("/")) {
|
|
125
|
-
if (!agentData.main) {
|
|
126
|
-
throw RegistryError.agentInvalidEntry(
|
|
127
|
-
agentId,
|
|
128
|
-
"directory entry missing main field"
|
|
129
|
-
);
|
|
130
|
-
}
|
|
131
|
-
const mainConfigPath = path.join(agentDir, agentData.main);
|
|
132
|
-
if (!existsSync(mainConfigPath)) {
|
|
133
|
-
throw RegistryError.mainConfigMissing(agentId, mainConfigPath);
|
|
134
|
-
}
|
|
135
|
-
return mainConfigPath;
|
|
136
|
-
} else {
|
|
137
|
-
const filename = path.basename(agentData.source);
|
|
138
|
-
const configPath = path.join(agentDir, filename);
|
|
139
|
-
if (!existsSync(configPath)) {
|
|
140
|
-
throw RegistryError.configNotFound(configPath);
|
|
141
|
-
}
|
|
142
|
-
return configPath;
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
/**
|
|
146
|
-
* Install agent atomically using temp + rename pattern
|
|
147
|
-
* @param agentId ID of the agent to install
|
|
148
|
-
* @param injectPreferences Whether to inject global preferences into installed agent (default: true)
|
|
149
|
-
*/
|
|
150
|
-
async installAgent(agentId, injectPreferences = true) {
|
|
151
|
-
logger.info(`Installing agent: ${agentId}`);
|
|
152
|
-
const registry = this.getRegistry();
|
|
153
|
-
const agentData = registry.agents[agentId];
|
|
154
|
-
if (!agentData) {
|
|
155
|
-
const available = Object.keys(registry.agents);
|
|
156
|
-
throw RegistryError.agentNotFound(agentId, available);
|
|
157
|
-
}
|
|
158
|
-
const globalAgentsDir = getDextoGlobalPath("agents");
|
|
159
|
-
const targetDir = path.resolve(globalAgentsDir, agentId);
|
|
160
|
-
const relTarget = path.relative(globalAgentsDir, targetDir);
|
|
161
|
-
if (relTarget.startsWith("..") || path.isAbsolute(relTarget)) {
|
|
162
|
-
throw RegistryError.installationFailed(
|
|
163
|
-
agentId,
|
|
164
|
-
"invalid agentId: path traversal detected"
|
|
165
|
-
);
|
|
166
|
-
}
|
|
167
|
-
if (existsSync(targetDir)) {
|
|
168
|
-
logger.info(`Agent '${agentId}' already installed`);
|
|
169
|
-
return this.resolveMainConfig(targetDir, agentId);
|
|
170
|
-
}
|
|
171
|
-
await fs.mkdir(globalAgentsDir, { recursive: true });
|
|
172
|
-
const sourcePath = resolveBundledScript(`agents/${agentData.source}`);
|
|
173
|
-
const tempDir = `${targetDir}.tmp.${Date.now()}`;
|
|
174
|
-
try {
|
|
175
|
-
if (agentData.source.endsWith("/")) {
|
|
176
|
-
await copyDirectory(sourcePath, tempDir);
|
|
177
|
-
} else {
|
|
178
|
-
await fs.mkdir(tempDir, { recursive: true });
|
|
179
|
-
const targetFile = path.join(tempDir, path.basename(sourcePath));
|
|
180
|
-
await fs.copyFile(sourcePath, targetFile);
|
|
181
|
-
}
|
|
182
|
-
const mainConfigPath = this.resolveMainConfig(tempDir, agentId);
|
|
183
|
-
if (!existsSync(mainConfigPath)) {
|
|
184
|
-
throw RegistryError.installationValidationFailed(agentId, mainConfigPath);
|
|
185
|
-
}
|
|
186
|
-
await fs.rename(tempDir, targetDir);
|
|
187
|
-
logger.info(`\u2713 Installed agent '${agentId}' to ${targetDir}`);
|
|
188
|
-
if (injectPreferences) {
|
|
189
|
-
try {
|
|
190
|
-
const preferences = await loadGlobalPreferences();
|
|
191
|
-
await writePreferencesToAgent(targetDir, preferences);
|
|
192
|
-
logger.info(`\u2713 Applied global preferences to installed agent '${agentId}'`);
|
|
193
|
-
} catch (error) {
|
|
194
|
-
logger.warn(
|
|
195
|
-
`Failed to inject preferences to '${agentId}': ${error instanceof Error ? error.message : String(error)}`
|
|
196
|
-
);
|
|
197
|
-
console.log(
|
|
198
|
-
`\u26A0\uFE0F Warning: Could not apply preferences to '${agentId}' - agent will use bundled settings`
|
|
199
|
-
);
|
|
200
|
-
}
|
|
201
|
-
} else {
|
|
202
|
-
logger.info(
|
|
203
|
-
`Skipped preference injection for '${agentId}' (injectPreferences=false)`
|
|
204
|
-
);
|
|
205
|
-
}
|
|
206
|
-
return this.resolveMainConfig(targetDir, agentId);
|
|
207
|
-
} catch (error) {
|
|
208
|
-
try {
|
|
209
|
-
if (existsSync(tempDir)) {
|
|
210
|
-
await fs.rm(tempDir, { recursive: true, force: true });
|
|
211
|
-
}
|
|
212
|
-
} catch (cleanupError) {
|
|
213
|
-
logger.error(
|
|
214
|
-
`Failed to clean up temp directory: ${cleanupError instanceof Error ? cleanupError.message : String(cleanupError)}. Skipping cleanup...`
|
|
215
|
-
);
|
|
216
|
-
}
|
|
217
|
-
throw RegistryError.installationFailed(
|
|
218
|
-
agentId,
|
|
219
|
-
error instanceof Error ? error.message : String(error)
|
|
220
|
-
);
|
|
221
|
-
}
|
|
222
|
-
}
|
|
223
|
-
/**
|
|
224
|
-
* Install a custom agent from a local file path
|
|
225
|
-
* @param agentId Unique identifier for the custom agent
|
|
226
|
-
* @param sourcePath Absolute path to agent YAML file or directory
|
|
227
|
-
* @param metadata Agent metadata (name for display, description, author, tags, main)
|
|
228
|
-
* @param injectPreferences Whether to inject global preferences (default: true)
|
|
229
|
-
* @returns Path to the installed agent's main config file
|
|
230
|
-
*/
|
|
231
|
-
async installCustomAgentFromPath(agentId, sourcePath, metadata, injectPreferences = true) {
|
|
232
|
-
logger.info(`Installing custom agent '${agentId}' from ${sourcePath}`);
|
|
233
|
-
this.validateCustomAgentId(agentId);
|
|
234
|
-
if (!existsSync(sourcePath)) {
|
|
235
|
-
throw RegistryError.configNotFound(sourcePath);
|
|
236
|
-
}
|
|
237
|
-
const globalAgentsDir = getDextoGlobalPath("agents");
|
|
238
|
-
const targetDir = path.resolve(globalAgentsDir, agentId);
|
|
239
|
-
const relTarget = path.relative(globalAgentsDir, targetDir);
|
|
240
|
-
if (relTarget.startsWith("..") || path.isAbsolute(relTarget)) {
|
|
241
|
-
throw RegistryError.installationFailed(
|
|
242
|
-
agentId,
|
|
243
|
-
"invalid agentId: path traversal detected"
|
|
244
|
-
);
|
|
245
|
-
}
|
|
246
|
-
if (existsSync(targetDir)) {
|
|
247
|
-
throw RegistryError.agentAlreadyExists(agentId);
|
|
248
|
-
}
|
|
249
|
-
await fs.mkdir(globalAgentsDir, { recursive: true });
|
|
250
|
-
const stats = await fs.stat(sourcePath);
|
|
251
|
-
const isDirectory = stats.isDirectory();
|
|
252
|
-
const configFileName = isDirectory ? void 0 : `${agentId}.yml`;
|
|
253
|
-
if (!metadata.description) {
|
|
254
|
-
throw RegistryError.installationFailed(agentId, "description is required");
|
|
255
|
-
}
|
|
256
|
-
if (isDirectory && !metadata.main) {
|
|
257
|
-
throw RegistryError.installationFailed(
|
|
258
|
-
agentId,
|
|
259
|
-
"main field is required for directory-based agents"
|
|
260
|
-
);
|
|
261
|
-
}
|
|
262
|
-
const displayName = metadata.name || agentId.split("-").map((word) => word.charAt(0).toUpperCase() + word.slice(1)).join(" ");
|
|
263
|
-
const registryEntry = {
|
|
264
|
-
id: agentId,
|
|
265
|
-
name: displayName,
|
|
266
|
-
description: metadata.description,
|
|
267
|
-
author: metadata.author,
|
|
268
|
-
tags: metadata.tags,
|
|
269
|
-
source: isDirectory ? `${agentId}/` : configFileName,
|
|
270
|
-
main: metadata.main
|
|
271
|
-
};
|
|
272
|
-
const tempDir = `${targetDir}.tmp.${Date.now()}`;
|
|
273
|
-
try {
|
|
274
|
-
if (isDirectory) {
|
|
275
|
-
await copyDirectory(sourcePath, tempDir);
|
|
276
|
-
} else {
|
|
277
|
-
await fs.mkdir(tempDir, { recursive: true });
|
|
278
|
-
const targetFile = path.join(tempDir, configFileName);
|
|
279
|
-
await fs.copyFile(sourcePath, targetFile);
|
|
280
|
-
}
|
|
281
|
-
const tempMainConfigPath = isDirectory ? path.join(tempDir, metadata.main) : path.join(tempDir, configFileName);
|
|
282
|
-
if (!existsSync(tempMainConfigPath)) {
|
|
283
|
-
throw RegistryError.installationValidationFailed(agentId, tempMainConfigPath);
|
|
284
|
-
}
|
|
285
|
-
await fs.rename(tempDir, targetDir);
|
|
286
|
-
logger.info(`\u2713 Installed custom agent '${agentId}' to ${targetDir}`);
|
|
287
|
-
const mainConfigPath = isDirectory && metadata.main ? path.join(targetDir, metadata.main) : path.join(targetDir, configFileName);
|
|
288
|
-
try {
|
|
289
|
-
await addAgentToUserRegistry(agentId, registryEntry);
|
|
290
|
-
logger.info(`\u2713 Added '${agentId}' to user registry`);
|
|
291
|
-
this._registry = null;
|
|
292
|
-
} catch (registryError) {
|
|
293
|
-
try {
|
|
294
|
-
if (existsSync(targetDir)) {
|
|
295
|
-
await fs.rm(targetDir, { recursive: true, force: true });
|
|
296
|
-
logger.info(`Rolled back installation: removed ${targetDir}`);
|
|
297
|
-
}
|
|
298
|
-
} catch (rollbackError) {
|
|
299
|
-
logger.error(
|
|
300
|
-
`Rollback failed for '${agentId}': ${rollbackError instanceof Error ? rollbackError.message : String(rollbackError)}`
|
|
301
|
-
);
|
|
302
|
-
}
|
|
303
|
-
throw registryError;
|
|
304
|
-
}
|
|
305
|
-
if (injectPreferences) {
|
|
306
|
-
try {
|
|
307
|
-
const preferences = await loadGlobalPreferences();
|
|
308
|
-
await writePreferencesToAgent(targetDir, preferences);
|
|
309
|
-
logger.info(`\u2713 Applied global preferences to custom agent '${agentId}'`);
|
|
310
|
-
} catch (error) {
|
|
311
|
-
logger.warn(
|
|
312
|
-
`Failed to inject preferences to '${agentId}': ${error instanceof Error ? error.message : String(error)}`
|
|
313
|
-
);
|
|
314
|
-
console.log(
|
|
315
|
-
`\u26A0\uFE0F Warning: Could not apply preferences to '${agentId}' - agent will use default settings`
|
|
316
|
-
);
|
|
317
|
-
}
|
|
318
|
-
}
|
|
319
|
-
return mainConfigPath;
|
|
320
|
-
} catch (error) {
|
|
321
|
-
try {
|
|
322
|
-
if (existsSync(tempDir)) {
|
|
323
|
-
await fs.rm(tempDir, { recursive: true, force: true });
|
|
324
|
-
}
|
|
325
|
-
} catch (cleanupError) {
|
|
326
|
-
logger.error(
|
|
327
|
-
`Failed to clean up temp directory: ${cleanupError instanceof Error ? cleanupError.message : String(cleanupError)}. Skipping cleanup...`
|
|
328
|
-
);
|
|
329
|
-
}
|
|
330
|
-
throw RegistryError.installationFailed(
|
|
331
|
-
agentId,
|
|
332
|
-
error instanceof Error ? error.message : String(error)
|
|
333
|
-
);
|
|
334
|
-
}
|
|
335
|
-
}
|
|
336
|
-
/**
|
|
337
|
-
* Resolve a registry agent ID to a config path
|
|
338
|
-
* NOTE: Only handles registry IDs, not file paths (routing done in loadAgentConfig)
|
|
339
|
-
* Handles installing agent if needed
|
|
340
|
-
* @param agentId ID of the agent to resolve
|
|
341
|
-
* @param autoInstall Whether to automatically install missing agents from registry (default: true)
|
|
342
|
-
* @param injectPreferences Whether to inject preferences during auto-installation (default: true)
|
|
343
|
-
*/
|
|
344
|
-
async resolveAgent(agentId, autoInstall = true, injectPreferences = true) {
|
|
345
|
-
logger.debug(`Resolving registry agent: ${agentId}`);
|
|
346
|
-
const globalAgentsDir = getDextoGlobalPath("agents");
|
|
347
|
-
const installedPath = path.resolve(globalAgentsDir, agentId);
|
|
348
|
-
const relInstalled = path.relative(globalAgentsDir, installedPath);
|
|
349
|
-
if (relInstalled.startsWith("..") || path.isAbsolute(relInstalled)) {
|
|
350
|
-
throw RegistryError.agentNotFound(agentId, Object.keys(this.getRegistry().agents));
|
|
351
|
-
}
|
|
352
|
-
if (existsSync(installedPath)) {
|
|
353
|
-
const mainConfig = this.resolveMainConfig(installedPath, agentId);
|
|
354
|
-
logger.debug(`Resolved installed agent '${agentId}' to: ${mainConfig}`);
|
|
355
|
-
return mainConfig;
|
|
356
|
-
}
|
|
357
|
-
logger.debug(`Agent '${agentId}' not found in installed path: ${installedPath}`);
|
|
358
|
-
if (this.hasAgent(agentId)) {
|
|
359
|
-
if (autoInstall) {
|
|
360
|
-
logger.info(`Installing agent '${agentId}' from registry...`);
|
|
361
|
-
return await this.installAgent(agentId, injectPreferences);
|
|
362
|
-
} else {
|
|
363
|
-
const registry2 = this.getRegistry();
|
|
364
|
-
const available2 = Object.keys(registry2.agents);
|
|
365
|
-
throw RegistryError.agentNotInstalledAutoInstallDisabled(agentId, available2);
|
|
366
|
-
}
|
|
367
|
-
}
|
|
368
|
-
const registry = this.getRegistry();
|
|
369
|
-
const available = Object.keys(registry.agents);
|
|
370
|
-
throw RegistryError.agentNotFound(agentId, available);
|
|
371
|
-
}
|
|
372
|
-
/**
|
|
373
|
-
* Get list of currently installed agents
|
|
374
|
-
*/
|
|
375
|
-
async getInstalledAgents() {
|
|
376
|
-
const globalAgentsDir = getDextoGlobalPath("agents");
|
|
377
|
-
if (!existsSync(globalAgentsDir)) {
|
|
378
|
-
return [];
|
|
379
|
-
}
|
|
380
|
-
try {
|
|
381
|
-
const entries = await fs.readdir(globalAgentsDir, { withFileTypes: true });
|
|
382
|
-
return entries.filter((entry) => entry.isDirectory()).map((entry) => entry.name).filter((name) => !name.startsWith(".tmp") && !name.includes(".tmp."));
|
|
383
|
-
} catch (error) {
|
|
384
|
-
logger.error(`Failed to read installed agents directory: ${error}`);
|
|
385
|
-
return [];
|
|
386
|
-
}
|
|
387
|
-
}
|
|
388
|
-
/**
|
|
389
|
-
* Check if an agent is safe to uninstall (not the default agent from preferences)
|
|
390
|
-
*/
|
|
391
|
-
async isAgentSafeToUninstall(agentId) {
|
|
392
|
-
try {
|
|
393
|
-
const preferences = await loadGlobalPreferences();
|
|
394
|
-
const defaultAgent = preferences.defaults.defaultAgent;
|
|
395
|
-
return agentId !== defaultAgent;
|
|
396
|
-
} catch {
|
|
397
|
-
logger.warn("Could not load preferences, using fallback protection for default-agent");
|
|
398
|
-
return agentId !== "default-agent";
|
|
399
|
-
}
|
|
400
|
-
}
|
|
401
|
-
/**
|
|
402
|
-
* Uninstall an agent by removing its directory
|
|
403
|
-
* For custom agents: also removes from user registry
|
|
404
|
-
* For builtin agents: only removes from disk
|
|
405
|
-
* @param agentId ID of the agent to uninstall
|
|
406
|
-
* @param force Whether to force uninstall even if agent is protected (default: false)
|
|
407
|
-
*/
|
|
408
|
-
async uninstallAgent(agentId, force = false) {
|
|
409
|
-
const globalAgentsDir = getDextoGlobalPath("agents");
|
|
410
|
-
const agentDir = path.resolve(globalAgentsDir, agentId);
|
|
411
|
-
const relAgent = path.relative(globalAgentsDir, agentDir);
|
|
412
|
-
if (relAgent.startsWith("..") || path.isAbsolute(relAgent)) {
|
|
413
|
-
throw RegistryError.uninstallationFailed(
|
|
414
|
-
agentId,
|
|
415
|
-
"invalid agentId: path traversal detected"
|
|
416
|
-
);
|
|
417
|
-
}
|
|
418
|
-
logger.info(`Uninstalling agent: ${agentId} from ${agentDir}`);
|
|
419
|
-
if (!existsSync(agentDir)) {
|
|
420
|
-
throw RegistryError.agentNotInstalled(agentId);
|
|
421
|
-
}
|
|
422
|
-
if (!force && !await this.isAgentSafeToUninstall(agentId)) {
|
|
423
|
-
throw RegistryError.agentProtected(agentId);
|
|
424
|
-
}
|
|
425
|
-
const registry = this.getRegistry();
|
|
426
|
-
const agentData = registry.agents[agentId];
|
|
427
|
-
const isCustomAgent = agentData?.type === "custom";
|
|
428
|
-
try {
|
|
429
|
-
await fs.rm(agentDir, { recursive: true, force: true });
|
|
430
|
-
logger.info(`\u2713 Removed agent '${agentId}' from ${agentDir}`);
|
|
431
|
-
if (isCustomAgent) {
|
|
432
|
-
await removeAgentFromUserRegistry(agentId);
|
|
433
|
-
logger.info(`\u2713 Removed custom agent '${agentId}' from user registry`);
|
|
434
|
-
this._registry = null;
|
|
435
|
-
}
|
|
436
|
-
} catch (error) {
|
|
437
|
-
throw RegistryError.uninstallationFailed(
|
|
438
|
-
agentId,
|
|
439
|
-
error instanceof Error ? error.message : String(error)
|
|
440
|
-
);
|
|
441
|
-
}
|
|
442
|
-
}
|
|
443
|
-
}
|
|
444
|
-
function getAgentRegistry() {
|
|
445
|
-
if (cachedRegistry === null) {
|
|
446
|
-
cachedRegistry = new LocalAgentRegistry();
|
|
447
|
-
}
|
|
448
|
-
return cachedRegistry;
|
|
449
|
-
}
|
|
450
|
-
export {
|
|
451
|
-
LocalAgentRegistry,
|
|
452
|
-
getAgentRegistry
|
|
453
|
-
};
|
|
@@ -1,74 +0,0 @@
|
|
|
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 types_exports = {};
|
|
20
|
-
__export(types_exports, {
|
|
21
|
-
AgentRegistryEntrySchema: () => AgentRegistryEntrySchema,
|
|
22
|
-
RegistrySchema: () => RegistrySchema,
|
|
23
|
-
deriveDisplayName: () => deriveDisplayName,
|
|
24
|
-
normalizeRegistryJson: () => normalizeRegistryJson
|
|
25
|
-
});
|
|
26
|
-
module.exports = __toCommonJS(types_exports);
|
|
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
|
-
}
|
|
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"),
|
|
34
|
-
description: import_zod.z.string(),
|
|
35
|
-
author: import_zod.z.string(),
|
|
36
|
-
tags: import_zod.z.array(import_zod.z.string()),
|
|
37
|
-
source: import_zod.z.string(),
|
|
38
|
-
main: import_zod.z.string().optional(),
|
|
39
|
-
type: import_zod.z.enum(["builtin", "custom"]).default("builtin").describe("Agent type")
|
|
40
|
-
}).strict();
|
|
41
|
-
const RegistrySchema = import_zod.z.object({
|
|
42
|
-
version: import_zod.z.string(),
|
|
43
|
-
agents: import_zod.z.record(import_zod.z.string(), AgentRegistryEntrySchema)
|
|
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
|
-
}
|
|
68
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
69
|
-
0 && (module.exports = {
|
|
70
|
-
AgentRegistryEntrySchema,
|
|
71
|
-
RegistrySchema,
|
|
72
|
-
deriveDisplayName,
|
|
73
|
-
normalizeRegistryJson
|
|
74
|
-
});
|
|
@@ -1,142 +0,0 @@
|
|
|
1
|
-
import { z } from 'zod';
|
|
2
|
-
export declare function deriveDisplayName(slug: string): string;
|
|
3
|
-
/**
|
|
4
|
-
* Schema for agent data in registry JSON
|
|
5
|
-
*/
|
|
6
|
-
export declare const AgentRegistryEntrySchema: z.ZodObject<{
|
|
7
|
-
id: z.ZodString;
|
|
8
|
-
name: z.ZodString;
|
|
9
|
-
description: z.ZodString;
|
|
10
|
-
author: z.ZodString;
|
|
11
|
-
tags: z.ZodArray<z.ZodString, "many">;
|
|
12
|
-
source: z.ZodString;
|
|
13
|
-
main: z.ZodOptional<z.ZodString>;
|
|
14
|
-
type: z.ZodDefault<z.ZodEnum<["builtin", "custom"]>>;
|
|
15
|
-
}, "strict", z.ZodTypeAny, {
|
|
16
|
-
name: string;
|
|
17
|
-
type: "custom" | "builtin";
|
|
18
|
-
description: string;
|
|
19
|
-
id: string;
|
|
20
|
-
tags: string[];
|
|
21
|
-
source: string;
|
|
22
|
-
author: string;
|
|
23
|
-
main?: string | undefined;
|
|
24
|
-
}, {
|
|
25
|
-
name: string;
|
|
26
|
-
description: string;
|
|
27
|
-
id: string;
|
|
28
|
-
tags: string[];
|
|
29
|
-
source: string;
|
|
30
|
-
author: string;
|
|
31
|
-
type?: "custom" | "builtin" | undefined;
|
|
32
|
-
main?: string | undefined;
|
|
33
|
-
}>;
|
|
34
|
-
export type AgentRegistryEntry = z.output<typeof AgentRegistryEntrySchema>;
|
|
35
|
-
/**
|
|
36
|
-
* Schema for complete registry JSON
|
|
37
|
-
*/
|
|
38
|
-
export declare const RegistrySchema: z.ZodObject<{
|
|
39
|
-
version: z.ZodString;
|
|
40
|
-
agents: z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
41
|
-
id: z.ZodString;
|
|
42
|
-
name: z.ZodString;
|
|
43
|
-
description: z.ZodString;
|
|
44
|
-
author: z.ZodString;
|
|
45
|
-
tags: z.ZodArray<z.ZodString, "many">;
|
|
46
|
-
source: z.ZodString;
|
|
47
|
-
main: z.ZodOptional<z.ZodString>;
|
|
48
|
-
type: z.ZodDefault<z.ZodEnum<["builtin", "custom"]>>;
|
|
49
|
-
}, "strict", z.ZodTypeAny, {
|
|
50
|
-
name: string;
|
|
51
|
-
type: "custom" | "builtin";
|
|
52
|
-
description: string;
|
|
53
|
-
id: string;
|
|
54
|
-
tags: string[];
|
|
55
|
-
source: string;
|
|
56
|
-
author: string;
|
|
57
|
-
main?: string | undefined;
|
|
58
|
-
}, {
|
|
59
|
-
name: string;
|
|
60
|
-
description: string;
|
|
61
|
-
id: string;
|
|
62
|
-
tags: string[];
|
|
63
|
-
source: string;
|
|
64
|
-
author: string;
|
|
65
|
-
type?: "custom" | "builtin" | undefined;
|
|
66
|
-
main?: string | undefined;
|
|
67
|
-
}>>;
|
|
68
|
-
}, "strict", z.ZodTypeAny, {
|
|
69
|
-
version: string;
|
|
70
|
-
agents: Record<string, {
|
|
71
|
-
name: string;
|
|
72
|
-
type: "custom" | "builtin";
|
|
73
|
-
description: string;
|
|
74
|
-
id: string;
|
|
75
|
-
tags: string[];
|
|
76
|
-
source: string;
|
|
77
|
-
author: string;
|
|
78
|
-
main?: string | undefined;
|
|
79
|
-
}>;
|
|
80
|
-
}, {
|
|
81
|
-
version: string;
|
|
82
|
-
agents: Record<string, {
|
|
83
|
-
name: string;
|
|
84
|
-
description: string;
|
|
85
|
-
id: string;
|
|
86
|
-
tags: string[];
|
|
87
|
-
source: string;
|
|
88
|
-
author: string;
|
|
89
|
-
type?: "custom" | "builtin" | undefined;
|
|
90
|
-
main?: string | undefined;
|
|
91
|
-
}>;
|
|
92
|
-
}>;
|
|
93
|
-
export type Registry = z.output<typeof RegistrySchema>;
|
|
94
|
-
type RawRegistry = {
|
|
95
|
-
version?: unknown;
|
|
96
|
-
agents?: Record<string, unknown> | unknown;
|
|
97
|
-
};
|
|
98
|
-
/**
|
|
99
|
-
* Normalize registry JSON data to ensure consistency.
|
|
100
|
-
* Validates that id field matches the registry key and derives display names if missing.
|
|
101
|
-
*/
|
|
102
|
-
export declare function normalizeRegistryJson(raw: unknown): RawRegistry;
|
|
103
|
-
/**
|
|
104
|
-
* Agent registry interface
|
|
105
|
-
*/
|
|
106
|
-
export interface AgentRegistry {
|
|
107
|
-
/**
|
|
108
|
-
* Returns true if the registry contains an agent with the provided ID
|
|
109
|
-
*/
|
|
110
|
-
hasAgent(agentId: string): boolean;
|
|
111
|
-
/**
|
|
112
|
-
* Returns a map of available agent IDs to their registry entries
|
|
113
|
-
*/
|
|
114
|
-
getAvailableAgents(): Record<string, AgentRegistryEntry>;
|
|
115
|
-
/**
|
|
116
|
-
* Installs an agent from the registry by ID
|
|
117
|
-
* @param agentId - Unique agent identifier
|
|
118
|
-
* @param injectPreferences - Whether to inject global preferences (default: true)
|
|
119
|
-
* @returns Path to the installed agent config
|
|
120
|
-
*/
|
|
121
|
-
installAgent(agentId: string, injectPreferences?: boolean): Promise<string>;
|
|
122
|
-
/**
|
|
123
|
-
* Uninstalls an agent by ID
|
|
124
|
-
* @param agentId - Unique agent identifier
|
|
125
|
-
* @param force - Whether to force uninstall protected agents (default: false)
|
|
126
|
-
*/
|
|
127
|
-
uninstallAgent(agentId: string, force?: boolean): Promise<void>;
|
|
128
|
-
/**
|
|
129
|
-
* Returns list of currently installed agent IDs
|
|
130
|
-
*/
|
|
131
|
-
getInstalledAgents(): Promise<string[]>;
|
|
132
|
-
/**
|
|
133
|
-
* Resolves an agent ID or path and optionally auto-installs if needed
|
|
134
|
-
* @param idOrPath - Agent ID from registry or filesystem path
|
|
135
|
-
* @param autoInstall - Whether to auto-install from registry (default: true)
|
|
136
|
-
* @param injectPreferences - Whether to inject preferences during install (default: true)
|
|
137
|
-
* @returns Path to the agent config file
|
|
138
|
-
*/
|
|
139
|
-
resolveAgent(idOrPath: string, autoInstall?: boolean, injectPreferences?: boolean): Promise<string>;
|
|
140
|
-
}
|
|
141
|
-
export {};
|
|
142
|
-
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/agent/registry/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAMtD;AAED;;GAEG;AACH,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;EAWxB,CAAC;AAEd,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAE3E;;GAEG;AACH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAKd,CAAC;AAEd,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,cAAc,CAAC,CAAC;AAEvD,KAAK,WAAW,GAAG;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC;CAC9C,CAAC;AAEF;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,OAAO,GAAG,WAAW,CAsC/D;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC1B;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;IACnC;;OAEG;IACH,kBAAkB,IAAI,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;IACzD;;;;;OAKG;IACH,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,iBAAiB,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC5E;;;;OAIG;IACH,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAChE;;OAEG;IACH,kBAAkB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACxC;;;;;;OAMG;IACH,YAAY,CACR,QAAQ,EAAE,MAAM,EAChB,WAAW,CAAC,EAAE,OAAO,EACrB,iBAAiB,CAAC,EAAE,OAAO,GAC5B,OAAO,CAAC,MAAM,CAAC,CAAC;CACtB"}
|