@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
package/dist/plugins/manager.cjs
CHANGED
|
@@ -21,21 +21,23 @@ __export(manager_exports, {
|
|
|
21
21
|
PluginManager: () => PluginManager
|
|
22
22
|
});
|
|
23
23
|
module.exports = __toCommonJS(manager_exports);
|
|
24
|
-
var import_logger = require("../logger/index.js");
|
|
25
24
|
var import_errors = require("../errors/index.js");
|
|
26
25
|
var import_error_codes = require("./error-codes.js");
|
|
27
26
|
var import_loader = require("./loader.js");
|
|
28
27
|
var import_async_context = require("../utils/async-context.js");
|
|
28
|
+
var import_types = require("../logger/v2/types.js");
|
|
29
29
|
class PluginManager {
|
|
30
30
|
plugins = /* @__PURE__ */ new Map();
|
|
31
31
|
pluginsByExtensionPoint = /* @__PURE__ */ new Map();
|
|
32
32
|
options;
|
|
33
33
|
initialized = false;
|
|
34
|
+
logger;
|
|
34
35
|
/** Default timeout for plugin execution (milliseconds) */
|
|
35
36
|
static DEFAULT_TIMEOUT = 5e3;
|
|
36
|
-
constructor(options) {
|
|
37
|
+
constructor(options, logger) {
|
|
37
38
|
this.options = options;
|
|
38
|
-
|
|
39
|
+
this.logger = logger.createChild(import_types.DextoLogComponent.PLUGIN);
|
|
40
|
+
this.logger.debug("PluginManager created");
|
|
39
41
|
}
|
|
40
42
|
/**
|
|
41
43
|
* Register a built-in plugin
|
|
@@ -67,7 +69,7 @@ class PluginManager {
|
|
|
67
69
|
}
|
|
68
70
|
};
|
|
69
71
|
this.plugins.set(name, loadedPlugin);
|
|
70
|
-
|
|
72
|
+
this.logger.debug(`Built-in plugin registered: ${name}`);
|
|
71
73
|
}
|
|
72
74
|
/**
|
|
73
75
|
* Initialize all plugins from configuration
|
|
@@ -106,7 +108,7 @@ class PluginManager {
|
|
|
106
108
|
}
|
|
107
109
|
for (const pluginConfig of customPlugins) {
|
|
108
110
|
if (!pluginConfig.enabled) {
|
|
109
|
-
|
|
111
|
+
this.logger.debug(`Skipping disabled plugin: ${pluginConfig.name}`);
|
|
110
112
|
continue;
|
|
111
113
|
}
|
|
112
114
|
try {
|
|
@@ -118,7 +120,7 @@ class PluginManager {
|
|
|
118
120
|
config: pluginConfig
|
|
119
121
|
};
|
|
120
122
|
this.plugins.set(pluginConfig.name, loadedPlugin);
|
|
121
|
-
|
|
123
|
+
this.logger.info(`Custom plugin loaded: ${pluginConfig.name}`);
|
|
122
124
|
} catch (error) {
|
|
123
125
|
throw new import_errors.DextoRuntimeError(
|
|
124
126
|
import_error_codes.PluginErrorCode.PLUGIN_INITIALIZATION_FAILED,
|
|
@@ -133,7 +135,7 @@ class PluginManager {
|
|
|
133
135
|
try {
|
|
134
136
|
if (loadedPlugin.plugin.initialize) {
|
|
135
137
|
await loadedPlugin.plugin.initialize(loadedPlugin.config.config || {});
|
|
136
|
-
|
|
138
|
+
this.logger.debug(`Plugin initialized: ${name}`);
|
|
137
139
|
}
|
|
138
140
|
} catch (error) {
|
|
139
141
|
throw new import_errors.DextoRuntimeError(
|
|
@@ -150,7 +152,7 @@ class PluginManager {
|
|
|
150
152
|
}
|
|
151
153
|
for (const [extensionPoint, plugins] of this.pluginsByExtensionPoint.entries()) {
|
|
152
154
|
plugins.sort((a, b) => a.config.priority - b.config.priority);
|
|
153
|
-
|
|
155
|
+
this.logger.debug(
|
|
154
156
|
`Extension point '${extensionPoint}': ${plugins.length} plugin(s) registered`,
|
|
155
157
|
{
|
|
156
158
|
plugins: plugins.map((p) => ({
|
|
@@ -161,7 +163,7 @@ class PluginManager {
|
|
|
161
163
|
);
|
|
162
164
|
}
|
|
163
165
|
this.initialized = true;
|
|
164
|
-
|
|
166
|
+
this.logger.info(`PluginManager initialized with ${this.plugins.size} plugin(s)`);
|
|
165
167
|
}
|
|
166
168
|
/**
|
|
167
169
|
* Register a plugin to the extension points it implements
|
|
@@ -214,7 +216,7 @@ class PluginManager {
|
|
|
214
216
|
userId: asyncCtx?.userId ?? void 0,
|
|
215
217
|
tenantId: asyncCtx?.tenantId ?? void 0,
|
|
216
218
|
llmConfig,
|
|
217
|
-
logger:
|
|
219
|
+
logger: this.logger,
|
|
218
220
|
abortSignal: options.abortSignal ?? void 0,
|
|
219
221
|
agent: {
|
|
220
222
|
sessionManager: options.sessionManager,
|
|
@@ -236,7 +238,7 @@ class PluginManager {
|
|
|
236
238
|
PluginManager.DEFAULT_TIMEOUT
|
|
237
239
|
);
|
|
238
240
|
const duration = Date.now() - startTime;
|
|
239
|
-
|
|
241
|
+
this.logger.debug(`Plugin '${config.name}' executed at ${extensionPoint}`, {
|
|
240
242
|
ok: result.ok,
|
|
241
243
|
cancelled: result.cancel,
|
|
242
244
|
duration,
|
|
@@ -245,7 +247,7 @@ class PluginManager {
|
|
|
245
247
|
if (result.notices && result.notices.length > 0) {
|
|
246
248
|
for (const notice of result.notices) {
|
|
247
249
|
const level = notice.kind === "block" || notice.kind === "warn" ? "warn" : "info";
|
|
248
|
-
|
|
250
|
+
this.logger[level](`Plugin notice (${notice.kind}): ${notice.message}`, {
|
|
249
251
|
plugin: config.name,
|
|
250
252
|
code: notice.code,
|
|
251
253
|
details: notice.details
|
|
@@ -253,7 +255,7 @@ class PluginManager {
|
|
|
253
255
|
}
|
|
254
256
|
}
|
|
255
257
|
if (!result.ok) {
|
|
256
|
-
|
|
258
|
+
this.logger.warn(`Plugin '${config.name}' returned error`, {
|
|
257
259
|
message: result.message
|
|
258
260
|
});
|
|
259
261
|
if (config.blocking && result.cancel) {
|
|
@@ -273,7 +275,7 @@ class PluginManager {
|
|
|
273
275
|
}
|
|
274
276
|
if (result.modify) {
|
|
275
277
|
currentPayload = { ...currentPayload, ...result.modify };
|
|
276
|
-
|
|
278
|
+
this.logger.debug(`Plugin '${config.name}' modified payload`, {
|
|
277
279
|
keys: Object.keys(result.modify)
|
|
278
280
|
});
|
|
279
281
|
}
|
|
@@ -295,7 +297,7 @@ class PluginManager {
|
|
|
295
297
|
if (error instanceof import_errors.DextoRuntimeError) {
|
|
296
298
|
throw error;
|
|
297
299
|
}
|
|
298
|
-
|
|
300
|
+
this.logger.error(`Plugin '${config.name}' threw error`, {
|
|
299
301
|
error: error instanceof Error ? error.message : String(error),
|
|
300
302
|
duration
|
|
301
303
|
});
|
|
@@ -311,7 +313,7 @@ class PluginManager {
|
|
|
311
313
|
}
|
|
312
314
|
);
|
|
313
315
|
}
|
|
314
|
-
|
|
316
|
+
this.logger.debug(`Non-blocking plugin error, continuing execution`);
|
|
315
317
|
}
|
|
316
318
|
}
|
|
317
319
|
return currentPayload;
|
|
@@ -354,15 +356,15 @@ class PluginManager {
|
|
|
354
356
|
if (loadedPlugin.plugin.cleanup) {
|
|
355
357
|
try {
|
|
356
358
|
await loadedPlugin.plugin.cleanup();
|
|
357
|
-
|
|
359
|
+
this.logger.debug(`Plugin cleaned up: ${name}`);
|
|
358
360
|
} catch (error) {
|
|
359
|
-
|
|
361
|
+
this.logger.error(`Plugin cleanup failed: ${name}`, {
|
|
360
362
|
error: error instanceof Error ? error.message : String(error)
|
|
361
363
|
});
|
|
362
364
|
}
|
|
363
365
|
}
|
|
364
366
|
}
|
|
365
|
-
|
|
367
|
+
this.logger.info("PluginManager cleanup complete");
|
|
366
368
|
}
|
|
367
369
|
/**
|
|
368
370
|
* Get plugin statistics
|
|
@@ -5,6 +5,7 @@ import type { SessionManager } from '../session/index.js';
|
|
|
5
5
|
import type { MCPManager } from '../mcp/manager.js';
|
|
6
6
|
import type { ToolManager } from '../tools/tool-manager.js';
|
|
7
7
|
import type { AgentStateManager } from '../agent/state-manager.js';
|
|
8
|
+
import type { IDextoLogger } from '../logger/v2/types.js';
|
|
8
9
|
/**
|
|
9
10
|
* Options for PluginManager construction
|
|
10
11
|
*/
|
|
@@ -40,9 +41,10 @@ export declare class PluginManager {
|
|
|
40
41
|
private pluginsByExtensionPoint;
|
|
41
42
|
private options;
|
|
42
43
|
private initialized;
|
|
44
|
+
private logger;
|
|
43
45
|
/** Default timeout for plugin execution (milliseconds) */
|
|
44
46
|
private static readonly DEFAULT_TIMEOUT;
|
|
45
|
-
constructor(options: PluginManagerOptions);
|
|
47
|
+
constructor(options: PluginManagerOptions, logger: IDextoLogger);
|
|
46
48
|
/**
|
|
47
49
|
* Register a built-in plugin
|
|
48
50
|
* Called by the built-in plugin registry before initialize()
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/plugins/manager.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/plugins/manager.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACR,cAAc,EAEd,YAAY,EAGf,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAG1D;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACjC,aAAa,EAAE,aAAa,CAAC;IAC7B,cAAc,EAAE,cAAc,CAAC;IAC/B,SAAS,EAAE,MAAM,CAAC;CACrB;AAED;;;GAGG;AACH,MAAM,WAAW,uBAAuB;IACpC,cAAc,EAAE,cAAc,CAAC;IAC/B,UAAU,EAAE,UAAU,CAAC;IACvB,WAAW,EAAE,WAAW,CAAC;IACzB,YAAY,EAAE,iBAAiB,CAAC;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,WAAW,CAAC;CAC7B;AAED;;;;;;;;;GASG;AACH,qBAAa,aAAa;IACtB,OAAO,CAAC,OAAO,CAAwC;IACvD,OAAO,CAAC,uBAAuB,CAAkD;IACjF,OAAO,CAAC,OAAO,CAAuB;IACtC,OAAO,CAAC,WAAW,CAAkB;IACrC,OAAO,CAAC,MAAM,CAAe;IAE7B,0DAA0D;IAC1D,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAQ;gBAEnC,OAAO,EAAE,oBAAoB,EAAE,MAAM,EAAE,YAAY;IAM/D;;;;;;;OAOG;IACH,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,GAAG,IAAI;IA8B3F;;;;;;OAMG;IACG,UAAU,CAAC,aAAa,GAAE,YAAY,EAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAqHnE;;OAEG;IACH,OAAO,CAAC,yBAAyB;IAkBjC;;;;;;;;;OASG;IACG,cAAc,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC9C,cAAc,EAAE,cAAc,EAC9B,OAAO,EAAE,CAAC,EACV,OAAO,EAAE,uBAAuB,GACjC,OAAO,CAAC,CAAC,CAAC;IAoKb;;;OAGG;YACW,kBAAkB;IA8BhC;;;OAGG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAgB9B;;OAEG;IACH,QAAQ,IAAI;QACR,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,gBAAgB,EAAE,MAAM,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;KACpD;CAcJ"}
|
package/dist/plugins/manager.js
CHANGED
|
@@ -1,19 +1,21 @@
|
|
|
1
1
|
import "../chunk-C6A6W6XS.js";
|
|
2
|
-
import { logger } from "../logger/index.js";
|
|
3
2
|
import { DextoRuntimeError, ErrorScope, ErrorType } from "../errors/index.js";
|
|
4
3
|
import { PluginErrorCode } from "./error-codes.js";
|
|
5
4
|
import { loadPluginModule, resolvePluginPath } from "./loader.js";
|
|
6
5
|
import { getContext } from "../utils/async-context.js";
|
|
6
|
+
import { DextoLogComponent } from "../logger/v2/types.js";
|
|
7
7
|
class PluginManager {
|
|
8
8
|
plugins = /* @__PURE__ */ new Map();
|
|
9
9
|
pluginsByExtensionPoint = /* @__PURE__ */ new Map();
|
|
10
10
|
options;
|
|
11
11
|
initialized = false;
|
|
12
|
+
logger;
|
|
12
13
|
/** Default timeout for plugin execution (milliseconds) */
|
|
13
14
|
static DEFAULT_TIMEOUT = 5e3;
|
|
14
|
-
constructor(options) {
|
|
15
|
+
constructor(options, logger) {
|
|
15
16
|
this.options = options;
|
|
16
|
-
logger.
|
|
17
|
+
this.logger = logger.createChild(DextoLogComponent.PLUGIN);
|
|
18
|
+
this.logger.debug("PluginManager created");
|
|
17
19
|
}
|
|
18
20
|
/**
|
|
19
21
|
* Register a built-in plugin
|
|
@@ -45,7 +47,7 @@ class PluginManager {
|
|
|
45
47
|
}
|
|
46
48
|
};
|
|
47
49
|
this.plugins.set(name, loadedPlugin);
|
|
48
|
-
logger.debug(`Built-in plugin registered: ${name}`);
|
|
50
|
+
this.logger.debug(`Built-in plugin registered: ${name}`);
|
|
49
51
|
}
|
|
50
52
|
/**
|
|
51
53
|
* Initialize all plugins from configuration
|
|
@@ -84,7 +86,7 @@ class PluginManager {
|
|
|
84
86
|
}
|
|
85
87
|
for (const pluginConfig of customPlugins) {
|
|
86
88
|
if (!pluginConfig.enabled) {
|
|
87
|
-
logger.debug(`Skipping disabled plugin: ${pluginConfig.name}`);
|
|
89
|
+
this.logger.debug(`Skipping disabled plugin: ${pluginConfig.name}`);
|
|
88
90
|
continue;
|
|
89
91
|
}
|
|
90
92
|
try {
|
|
@@ -96,7 +98,7 @@ class PluginManager {
|
|
|
96
98
|
config: pluginConfig
|
|
97
99
|
};
|
|
98
100
|
this.plugins.set(pluginConfig.name, loadedPlugin);
|
|
99
|
-
logger.info(`Custom plugin loaded: ${pluginConfig.name}`);
|
|
101
|
+
this.logger.info(`Custom plugin loaded: ${pluginConfig.name}`);
|
|
100
102
|
} catch (error) {
|
|
101
103
|
throw new DextoRuntimeError(
|
|
102
104
|
PluginErrorCode.PLUGIN_INITIALIZATION_FAILED,
|
|
@@ -111,7 +113,7 @@ class PluginManager {
|
|
|
111
113
|
try {
|
|
112
114
|
if (loadedPlugin.plugin.initialize) {
|
|
113
115
|
await loadedPlugin.plugin.initialize(loadedPlugin.config.config || {});
|
|
114
|
-
logger.debug(`Plugin initialized: ${name}`);
|
|
116
|
+
this.logger.debug(`Plugin initialized: ${name}`);
|
|
115
117
|
}
|
|
116
118
|
} catch (error) {
|
|
117
119
|
throw new DextoRuntimeError(
|
|
@@ -128,7 +130,7 @@ class PluginManager {
|
|
|
128
130
|
}
|
|
129
131
|
for (const [extensionPoint, plugins] of this.pluginsByExtensionPoint.entries()) {
|
|
130
132
|
plugins.sort((a, b) => a.config.priority - b.config.priority);
|
|
131
|
-
logger.debug(
|
|
133
|
+
this.logger.debug(
|
|
132
134
|
`Extension point '${extensionPoint}': ${plugins.length} plugin(s) registered`,
|
|
133
135
|
{
|
|
134
136
|
plugins: plugins.map((p) => ({
|
|
@@ -139,7 +141,7 @@ class PluginManager {
|
|
|
139
141
|
);
|
|
140
142
|
}
|
|
141
143
|
this.initialized = true;
|
|
142
|
-
logger.info(`PluginManager initialized with ${this.plugins.size} plugin(s)`);
|
|
144
|
+
this.logger.info(`PluginManager initialized with ${this.plugins.size} plugin(s)`);
|
|
143
145
|
}
|
|
144
146
|
/**
|
|
145
147
|
* Register a plugin to the extension points it implements
|
|
@@ -192,7 +194,7 @@ class PluginManager {
|
|
|
192
194
|
userId: asyncCtx?.userId ?? void 0,
|
|
193
195
|
tenantId: asyncCtx?.tenantId ?? void 0,
|
|
194
196
|
llmConfig,
|
|
195
|
-
logger,
|
|
197
|
+
logger: this.logger,
|
|
196
198
|
abortSignal: options.abortSignal ?? void 0,
|
|
197
199
|
agent: {
|
|
198
200
|
sessionManager: options.sessionManager,
|
|
@@ -214,7 +216,7 @@ class PluginManager {
|
|
|
214
216
|
PluginManager.DEFAULT_TIMEOUT
|
|
215
217
|
);
|
|
216
218
|
const duration = Date.now() - startTime;
|
|
217
|
-
logger.debug(`Plugin '${config.name}' executed at ${extensionPoint}`, {
|
|
219
|
+
this.logger.debug(`Plugin '${config.name}' executed at ${extensionPoint}`, {
|
|
218
220
|
ok: result.ok,
|
|
219
221
|
cancelled: result.cancel,
|
|
220
222
|
duration,
|
|
@@ -223,7 +225,7 @@ class PluginManager {
|
|
|
223
225
|
if (result.notices && result.notices.length > 0) {
|
|
224
226
|
for (const notice of result.notices) {
|
|
225
227
|
const level = notice.kind === "block" || notice.kind === "warn" ? "warn" : "info";
|
|
226
|
-
logger[level](`Plugin notice (${notice.kind}): ${notice.message}`, {
|
|
228
|
+
this.logger[level](`Plugin notice (${notice.kind}): ${notice.message}`, {
|
|
227
229
|
plugin: config.name,
|
|
228
230
|
code: notice.code,
|
|
229
231
|
details: notice.details
|
|
@@ -231,7 +233,7 @@ class PluginManager {
|
|
|
231
233
|
}
|
|
232
234
|
}
|
|
233
235
|
if (!result.ok) {
|
|
234
|
-
logger.warn(`Plugin '${config.name}' returned error`, {
|
|
236
|
+
this.logger.warn(`Plugin '${config.name}' returned error`, {
|
|
235
237
|
message: result.message
|
|
236
238
|
});
|
|
237
239
|
if (config.blocking && result.cancel) {
|
|
@@ -251,7 +253,7 @@ class PluginManager {
|
|
|
251
253
|
}
|
|
252
254
|
if (result.modify) {
|
|
253
255
|
currentPayload = { ...currentPayload, ...result.modify };
|
|
254
|
-
logger.debug(`Plugin '${config.name}' modified payload`, {
|
|
256
|
+
this.logger.debug(`Plugin '${config.name}' modified payload`, {
|
|
255
257
|
keys: Object.keys(result.modify)
|
|
256
258
|
});
|
|
257
259
|
}
|
|
@@ -273,7 +275,7 @@ class PluginManager {
|
|
|
273
275
|
if (error instanceof DextoRuntimeError) {
|
|
274
276
|
throw error;
|
|
275
277
|
}
|
|
276
|
-
logger.error(`Plugin '${config.name}' threw error`, {
|
|
278
|
+
this.logger.error(`Plugin '${config.name}' threw error`, {
|
|
277
279
|
error: error instanceof Error ? error.message : String(error),
|
|
278
280
|
duration
|
|
279
281
|
});
|
|
@@ -289,7 +291,7 @@ class PluginManager {
|
|
|
289
291
|
}
|
|
290
292
|
);
|
|
291
293
|
}
|
|
292
|
-
logger.debug(`Non-blocking plugin error, continuing execution`);
|
|
294
|
+
this.logger.debug(`Non-blocking plugin error, continuing execution`);
|
|
293
295
|
}
|
|
294
296
|
}
|
|
295
297
|
return currentPayload;
|
|
@@ -332,15 +334,15 @@ class PluginManager {
|
|
|
332
334
|
if (loadedPlugin.plugin.cleanup) {
|
|
333
335
|
try {
|
|
334
336
|
await loadedPlugin.plugin.cleanup();
|
|
335
|
-
logger.debug(`Plugin cleaned up: ${name}`);
|
|
337
|
+
this.logger.debug(`Plugin cleaned up: ${name}`);
|
|
336
338
|
} catch (error) {
|
|
337
|
-
logger.error(`Plugin cleanup failed: ${name}`, {
|
|
339
|
+
this.logger.error(`Plugin cleanup failed: ${name}`, {
|
|
338
340
|
error: error instanceof Error ? error.message : String(error)
|
|
339
341
|
});
|
|
340
342
|
}
|
|
341
343
|
}
|
|
342
344
|
}
|
|
343
|
-
logger.info("PluginManager cleanup complete");
|
|
345
|
+
this.logger.info("PluginManager cleanup complete");
|
|
344
346
|
}
|
|
345
347
|
/**
|
|
346
348
|
* Get plugin statistics
|
|
@@ -10,17 +10,17 @@ export declare const CustomPluginConfigSchema: z.ZodObject<{
|
|
|
10
10
|
priority: z.ZodNumber;
|
|
11
11
|
config: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>;
|
|
12
12
|
}, "strict", z.ZodTypeAny, {
|
|
13
|
+
enabled: boolean;
|
|
13
14
|
name: string;
|
|
14
15
|
priority: number;
|
|
15
|
-
enabled: boolean;
|
|
16
|
-
blocking: boolean;
|
|
17
16
|
module: string;
|
|
17
|
+
blocking: boolean;
|
|
18
18
|
config?: Record<string, any> | undefined;
|
|
19
19
|
}, {
|
|
20
20
|
name: string;
|
|
21
21
|
priority: number;
|
|
22
|
-
blocking: boolean;
|
|
23
22
|
module: string;
|
|
23
|
+
blocking: boolean;
|
|
24
24
|
config?: Record<string, any> | undefined;
|
|
25
25
|
enabled?: boolean | undefined;
|
|
26
26
|
}>;
|
|
@@ -80,27 +80,27 @@ export declare const PluginsConfigSchema: z.ZodDefault<z.ZodObject<{
|
|
|
80
80
|
priority: z.ZodNumber;
|
|
81
81
|
config: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>;
|
|
82
82
|
}, "strict", z.ZodTypeAny, {
|
|
83
|
+
enabled: boolean;
|
|
83
84
|
name: string;
|
|
84
85
|
priority: number;
|
|
85
|
-
enabled: boolean;
|
|
86
|
-
blocking: boolean;
|
|
87
86
|
module: string;
|
|
87
|
+
blocking: boolean;
|
|
88
88
|
config?: Record<string, any> | undefined;
|
|
89
89
|
}, {
|
|
90
90
|
name: string;
|
|
91
91
|
priority: number;
|
|
92
|
-
blocking: boolean;
|
|
93
92
|
module: string;
|
|
93
|
+
blocking: boolean;
|
|
94
94
|
config?: Record<string, any> | undefined;
|
|
95
95
|
enabled?: boolean | undefined;
|
|
96
96
|
}>, "many">>;
|
|
97
97
|
}, "strict", z.ZodTypeAny, {
|
|
98
98
|
custom: {
|
|
99
|
+
enabled: boolean;
|
|
99
100
|
name: string;
|
|
100
101
|
priority: number;
|
|
101
|
-
enabled: boolean;
|
|
102
|
-
blocking: boolean;
|
|
103
102
|
module: string;
|
|
103
|
+
blocking: boolean;
|
|
104
104
|
config?: Record<string, any> | undefined;
|
|
105
105
|
}[];
|
|
106
106
|
contentPolicy?: z.objectOutputType<{
|
|
@@ -117,8 +117,8 @@ export declare const PluginsConfigSchema: z.ZodDefault<z.ZodObject<{
|
|
|
117
117
|
custom?: {
|
|
118
118
|
name: string;
|
|
119
119
|
priority: number;
|
|
120
|
-
blocking: boolean;
|
|
121
120
|
module: string;
|
|
121
|
+
blocking: boolean;
|
|
122
122
|
config?: Record<string, any> | undefined;
|
|
123
123
|
enabled?: boolean | undefined;
|
|
124
124
|
}[] | undefined;
|
package/dist/plugins/types.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { ValidatedLLMConfig } from '../llm/schemas.js';
|
|
2
|
-
import type {
|
|
2
|
+
import type { IDextoLogger } from '../logger/v2/types.js';
|
|
3
3
|
import type { SessionManager } from '../session/index.js';
|
|
4
4
|
import type { MCPManager } from '../mcp/manager.js';
|
|
5
5
|
import type { ToolManager } from '../tools/tool-manager.js';
|
|
@@ -49,7 +49,7 @@ export interface PluginExecutionContext {
|
|
|
49
49
|
/** Current LLM configuration */
|
|
50
50
|
llmConfig: ValidatedLLMConfig;
|
|
51
51
|
/** Logger scoped to this plugin execution */
|
|
52
|
-
logger:
|
|
52
|
+
logger: IDextoLogger;
|
|
53
53
|
/** Abort signal for cancellation */
|
|
54
54
|
abortSignal?: AbortSignal | undefined;
|
|
55
55
|
/** Reference to agent services (read-only access) */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/plugins/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/plugins/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -21,7 +21,6 @@ __export(command_validator_exports, {
|
|
|
21
21
|
CommandValidator: () => CommandValidator
|
|
22
22
|
});
|
|
23
23
|
module.exports = __toCommonJS(command_validator_exports);
|
|
24
|
-
var import_logger = require("../logger/index.js");
|
|
25
24
|
const MAX_COMMAND_LENGTH = 1e4;
|
|
26
25
|
const DANGEROUS_PATTERNS = [
|
|
27
26
|
// File system destruction
|
|
@@ -142,21 +141,13 @@ const DANGEROUS_PATTERNS = [
|
|
|
142
141
|
// Remove packages
|
|
143
142
|
];
|
|
144
143
|
const INJECTION_PATTERNS = [
|
|
145
|
-
// Command chaining with dangerous commands
|
|
144
|
+
// Command chaining with dangerous commands using semicolon (more suspicious)
|
|
146
145
|
/;\s*rm\s+-rf/,
|
|
147
146
|
// ; rm -rf
|
|
148
|
-
/&&\s*rm\s+-rf/,
|
|
149
|
-
// && rm -rf
|
|
150
|
-
/\|\s*rm\s+-rf/,
|
|
151
|
-
// | rm -rf
|
|
152
147
|
/;\s*chmod\s+777/,
|
|
153
148
|
// ; chmod 777
|
|
154
|
-
/&&\s*chmod\s+777/,
|
|
155
|
-
// && chmod 777
|
|
156
149
|
/;\s*chown\s+root/,
|
|
157
150
|
// ; chown root
|
|
158
|
-
/&&\s*chown\s+root/,
|
|
159
|
-
// && chown root
|
|
160
151
|
// Command substitution with dangerous commands
|
|
161
152
|
/`.*rm.*`/,
|
|
162
153
|
// backticks with rm
|
|
@@ -413,9 +404,13 @@ const WRITE_PATTERNS = [
|
|
|
413
404
|
];
|
|
414
405
|
class CommandValidator {
|
|
415
406
|
config;
|
|
416
|
-
|
|
407
|
+
logger;
|
|
408
|
+
constructor(config, logger) {
|
|
417
409
|
this.config = config;
|
|
418
|
-
|
|
410
|
+
this.logger = logger;
|
|
411
|
+
this.logger.debug(
|
|
412
|
+
`CommandValidator initialized with security level: ${config.securityLevel}`
|
|
413
|
+
);
|
|
419
414
|
}
|
|
420
415
|
/**
|
|
421
416
|
* Validate a command for security and policy compliance
|
|
@@ -428,6 +423,12 @@ class CommandValidator {
|
|
|
428
423
|
};
|
|
429
424
|
}
|
|
430
425
|
const trimmedCommand = command.trim();
|
|
426
|
+
if (/&\s*$/.test(trimmedCommand)) {
|
|
427
|
+
return {
|
|
428
|
+
isValid: false,
|
|
429
|
+
error: "Commands ending with & (shell backgrounding) are not allowed. Use run_in_background parameter instead for proper process management."
|
|
430
|
+
};
|
|
431
|
+
}
|
|
431
432
|
if (trimmedCommand.length > MAX_COMMAND_LENGTH) {
|
|
432
433
|
return {
|
|
433
434
|
isValid: false,
|
|
@@ -504,18 +505,27 @@ class CommandValidator {
|
|
|
504
505
|
}
|
|
505
506
|
/**
|
|
506
507
|
* Determine if a command requires approval
|
|
508
|
+
* Handles compound commands (with &&, ||, ;) by checking each sub-command
|
|
507
509
|
*/
|
|
508
510
|
determineApprovalRequirement(command) {
|
|
509
|
-
|
|
510
|
-
|
|
511
|
+
const subCommands = command.split(/\s*(?:&&|\|\||;)\s*/).map((cmd) => cmd.trim());
|
|
512
|
+
for (const subCmd of subCommands) {
|
|
513
|
+
if (!subCmd) continue;
|
|
514
|
+
const normalizedSubCmd = subCmd.replace(/^(?:then|do|else)\b\s*/, "").replace(/^\{\s*/, "").trim();
|
|
515
|
+
if (!normalizedSubCmd) continue;
|
|
516
|
+
for (const pattern of REQUIRES_APPROVAL_PATTERNS) {
|
|
517
|
+
if (pattern.test(normalizedSubCmd)) {
|
|
518
|
+
return true;
|
|
519
|
+
}
|
|
520
|
+
}
|
|
521
|
+
if (this.config.securityLevel === "strict") {
|
|
511
522
|
return true;
|
|
512
523
|
}
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
return WRITE_PATTERNS.some((pattern) => pattern.test(command));
|
|
524
|
+
if (this.config.securityLevel === "moderate") {
|
|
525
|
+
if (WRITE_PATTERNS.some((pattern) => pattern.test(normalizedSubCmd))) {
|
|
526
|
+
return true;
|
|
527
|
+
}
|
|
528
|
+
}
|
|
519
529
|
}
|
|
520
530
|
return false;
|
|
521
531
|
}
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
* Security-focused command validation for process execution
|
|
5
5
|
*/
|
|
6
6
|
import { ProcessConfig, CommandValidation } from './types.js';
|
|
7
|
+
import type { IDextoLogger } from '../logger/v2/types.js';
|
|
7
8
|
/**
|
|
8
9
|
* CommandValidator - Validates commands for security and policy compliance
|
|
9
10
|
*
|
|
@@ -17,7 +18,8 @@ import { ProcessConfig, CommandValidation } from './types.js';
|
|
|
17
18
|
*/
|
|
18
19
|
export declare class CommandValidator {
|
|
19
20
|
private config;
|
|
20
|
-
|
|
21
|
+
private logger;
|
|
22
|
+
constructor(config: ProcessConfig, logger: IDextoLogger);
|
|
21
23
|
/**
|
|
22
24
|
* Validate a command for security and policy compliance
|
|
23
25
|
*/
|
|
@@ -28,6 +30,7 @@ export declare class CommandValidator {
|
|
|
28
30
|
private detectInjection;
|
|
29
31
|
/**
|
|
30
32
|
* Determine if a command requires approval
|
|
33
|
+
* Handles compound commands (with &&, ||, ;) by checking each sub-command
|
|
31
34
|
*/
|
|
32
35
|
private determineApprovalRequirement;
|
|
33
36
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command-validator.d.ts","sourceRoot":"","sources":["../../src/process/command-validator.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"command-validator.d.ts","sourceRoot":"","sources":["../../src/process/command-validator.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAkQ1D;;;;;;;;;;GAUG;AACH,qBAAa,gBAAgB;IACzB,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,MAAM,CAAe;gBAEjB,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,YAAY;IAQvD;;OAEG;IACH,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,iBAAiB;IAgFnD;;OAEG;IACH,OAAO,CAAC,eAAe;IAgCvB;;;OAGG;IACH,OAAO,CAAC,4BAA4B;IAyCpC;;OAEG;IACH,kBAAkB,IAAI,MAAM,EAAE;IAI9B;;OAEG;IACH,kBAAkB,IAAI,MAAM,EAAE;IAI9B;;OAEG;IACH,gBAAgB,IAAI,MAAM;CAG7B"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import "../chunk-C6A6W6XS.js";
|
|
2
|
-
import { logger } from "../logger/index.js";
|
|
3
2
|
const MAX_COMMAND_LENGTH = 1e4;
|
|
4
3
|
const DANGEROUS_PATTERNS = [
|
|
5
4
|
// File system destruction
|
|
@@ -120,21 +119,13 @@ const DANGEROUS_PATTERNS = [
|
|
|
120
119
|
// Remove packages
|
|
121
120
|
];
|
|
122
121
|
const INJECTION_PATTERNS = [
|
|
123
|
-
// Command chaining with dangerous commands
|
|
122
|
+
// Command chaining with dangerous commands using semicolon (more suspicious)
|
|
124
123
|
/;\s*rm\s+-rf/,
|
|
125
124
|
// ; rm -rf
|
|
126
|
-
/&&\s*rm\s+-rf/,
|
|
127
|
-
// && rm -rf
|
|
128
|
-
/\|\s*rm\s+-rf/,
|
|
129
|
-
// | rm -rf
|
|
130
125
|
/;\s*chmod\s+777/,
|
|
131
126
|
// ; chmod 777
|
|
132
|
-
/&&\s*chmod\s+777/,
|
|
133
|
-
// && chmod 777
|
|
134
127
|
/;\s*chown\s+root/,
|
|
135
128
|
// ; chown root
|
|
136
|
-
/&&\s*chown\s+root/,
|
|
137
|
-
// && chown root
|
|
138
129
|
// Command substitution with dangerous commands
|
|
139
130
|
/`.*rm.*`/,
|
|
140
131
|
// backticks with rm
|
|
@@ -391,9 +382,13 @@ const WRITE_PATTERNS = [
|
|
|
391
382
|
];
|
|
392
383
|
class CommandValidator {
|
|
393
384
|
config;
|
|
394
|
-
|
|
385
|
+
logger;
|
|
386
|
+
constructor(config, logger) {
|
|
395
387
|
this.config = config;
|
|
396
|
-
logger
|
|
388
|
+
this.logger = logger;
|
|
389
|
+
this.logger.debug(
|
|
390
|
+
`CommandValidator initialized with security level: ${config.securityLevel}`
|
|
391
|
+
);
|
|
397
392
|
}
|
|
398
393
|
/**
|
|
399
394
|
* Validate a command for security and policy compliance
|
|
@@ -406,6 +401,12 @@ class CommandValidator {
|
|
|
406
401
|
};
|
|
407
402
|
}
|
|
408
403
|
const trimmedCommand = command.trim();
|
|
404
|
+
if (/&\s*$/.test(trimmedCommand)) {
|
|
405
|
+
return {
|
|
406
|
+
isValid: false,
|
|
407
|
+
error: "Commands ending with & (shell backgrounding) are not allowed. Use run_in_background parameter instead for proper process management."
|
|
408
|
+
};
|
|
409
|
+
}
|
|
409
410
|
if (trimmedCommand.length > MAX_COMMAND_LENGTH) {
|
|
410
411
|
return {
|
|
411
412
|
isValid: false,
|
|
@@ -482,18 +483,27 @@ class CommandValidator {
|
|
|
482
483
|
}
|
|
483
484
|
/**
|
|
484
485
|
* Determine if a command requires approval
|
|
486
|
+
* Handles compound commands (with &&, ||, ;) by checking each sub-command
|
|
485
487
|
*/
|
|
486
488
|
determineApprovalRequirement(command) {
|
|
487
|
-
|
|
488
|
-
|
|
489
|
+
const subCommands = command.split(/\s*(?:&&|\|\||;)\s*/).map((cmd) => cmd.trim());
|
|
490
|
+
for (const subCmd of subCommands) {
|
|
491
|
+
if (!subCmd) continue;
|
|
492
|
+
const normalizedSubCmd = subCmd.replace(/^(?:then|do|else)\b\s*/, "").replace(/^\{\s*/, "").trim();
|
|
493
|
+
if (!normalizedSubCmd) continue;
|
|
494
|
+
for (const pattern of REQUIRES_APPROVAL_PATTERNS) {
|
|
495
|
+
if (pattern.test(normalizedSubCmd)) {
|
|
496
|
+
return true;
|
|
497
|
+
}
|
|
498
|
+
}
|
|
499
|
+
if (this.config.securityLevel === "strict") {
|
|
489
500
|
return true;
|
|
490
501
|
}
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
return WRITE_PATTERNS.some((pattern) => pattern.test(command));
|
|
502
|
+
if (this.config.securityLevel === "moderate") {
|
|
503
|
+
if (WRITE_PATTERNS.some((pattern) => pattern.test(normalizedSubCmd))) {
|
|
504
|
+
return true;
|
|
505
|
+
}
|
|
506
|
+
}
|
|
497
507
|
}
|
|
498
508
|
return false;
|
|
499
509
|
}
|