@dexto/core 1.5.8 → 1.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +19 -8
- package/dist/agent/DextoAgent.cjs +293 -154
- package/dist/agent/DextoAgent.d.ts +83 -56
- package/dist/agent/DextoAgent.d.ts.map +1 -1
- package/dist/agent/DextoAgent.js +290 -151
- package/dist/{context/compaction/provider.cjs → agent/agent-options.cjs} +2 -2
- package/dist/agent/agent-options.d.ts +53 -0
- package/dist/agent/agent-options.d.ts.map +1 -0
- package/dist/agent/agentCard.cjs +1 -1
- package/dist/agent/errors.cjs +2 -2
- package/dist/agent/errors.d.ts.map +1 -1
- package/dist/agent/index.cjs +1 -6
- package/dist/agent/index.d.ts +3 -2
- package/dist/agent/index.d.ts.map +1 -1
- package/dist/agent/index.js +1 -7
- package/dist/{storage/blob/provider.cjs → agent/runtime-config.cjs} +2 -2
- package/dist/agent/runtime-config.d.ts +53 -0
- package/dist/agent/runtime-config.d.ts.map +1 -0
- package/dist/agent/schemas.cjs +2 -104
- package/dist/agent/schemas.d.ts +10 -9199
- package/dist/agent/schemas.d.ts.map +1 -1
- package/dist/agent/schemas.js +1 -109
- package/dist/agent/state-manager.d.ts +5 -5
- package/dist/agent/state-manager.d.ts.map +1 -1
- package/dist/approval/error-codes.cjs +1 -1
- package/dist/approval/error-codes.d.ts +1 -1
- package/dist/approval/error-codes.d.ts.map +1 -1
- package/dist/approval/error-codes.js +1 -1
- package/dist/approval/errors.cjs +5 -5
- package/dist/approval/errors.d.ts +2 -2
- package/dist/approval/errors.d.ts.map +1 -1
- package/dist/approval/errors.js +5 -5
- package/dist/approval/index.cjs +8 -8
- package/dist/approval/index.d.ts +2 -2
- package/dist/approval/index.d.ts.map +1 -1
- package/dist/approval/index.js +8 -8
- package/dist/approval/manager.cjs +77 -57
- package/dist/approval/manager.d.ts +41 -43
- package/dist/approval/manager.d.ts.map +1 -1
- package/dist/approval/manager.js +75 -55
- package/dist/approval/schemas.cjs +26 -25
- package/dist/approval/schemas.d.ts +35 -15
- package/dist/approval/schemas.d.ts.map +1 -1
- package/dist/approval/schemas.js +22 -21
- package/dist/approval/types.cjs +1 -1
- package/dist/approval/types.d.ts +14 -14
- package/dist/approval/types.d.ts.map +1 -1
- package/dist/approval/types.js +1 -1
- package/dist/context/compaction/index.cjs +2 -23
- package/dist/context/compaction/index.d.ts +1 -7
- package/dist/context/compaction/index.d.ts.map +1 -1
- package/dist/context/compaction/index.js +1 -16
- package/dist/context/compaction/strategies/noop.cjs +19 -1
- package/dist/context/compaction/strategies/noop.d.ts +13 -3
- package/dist/context/compaction/strategies/noop.d.ts.map +1 -1
- package/dist/context/compaction/strategies/noop.js +19 -1
- package/dist/context/compaction/strategies/{reactive-overflow.cjs → reactive-overflow-compaction.cjs} +67 -64
- package/dist/context/compaction/strategies/{reactive-overflow.d.ts → reactive-overflow-compaction.d.ts} +19 -36
- package/dist/context/compaction/strategies/reactive-overflow-compaction.d.ts.map +1 -0
- package/dist/context/compaction/strategies/{reactive-overflow.js → reactive-overflow-compaction.js} +63 -60
- package/dist/context/compaction/types.d.ts +40 -8
- package/dist/context/compaction/types.d.ts.map +1 -1
- package/dist/context/manager.cjs +4 -2
- package/dist/context/manager.d.ts +4 -3
- package/dist/context/manager.d.ts.map +1 -1
- package/dist/context/manager.js +4 -2
- package/dist/context/types.d.ts +2 -0
- package/dist/context/types.d.ts.map +1 -1
- package/dist/context/utils.cjs +2 -2
- package/dist/context/utils.d.ts +14 -14
- package/dist/context/utils.d.ts.map +1 -1
- package/dist/errors/result-bridge.d.ts +2 -2
- package/dist/errors/result-bridge.d.ts.map +1 -1
- package/dist/errors/types.cjs +1 -1
- package/dist/errors/types.d.ts +3 -3
- package/dist/errors/types.d.ts.map +1 -1
- package/dist/errors/types.js +1 -1
- package/dist/events/index.cjs +11 -1
- package/dist/events/index.d.ts +43 -7
- package/dist/events/index.d.ts.map +1 -1
- package/dist/events/index.js +11 -1
- package/dist/{plugins → hooks}/builtins/content-policy.cjs +7 -6
- package/dist/hooks/builtins/content-policy.d.ts +24 -0
- package/dist/hooks/builtins/content-policy.d.ts.map +1 -0
- package/dist/{plugins → hooks}/builtins/content-policy.js +6 -5
- package/dist/{plugins → hooks}/builtins/response-sanitizer.cjs +3 -3
- package/dist/hooks/builtins/response-sanitizer.d.ts +22 -0
- package/dist/hooks/builtins/response-sanitizer.d.ts.map +1 -0
- package/dist/{plugins → hooks}/builtins/response-sanitizer.js +2 -2
- package/dist/hooks/error-codes.cjs +43 -0
- package/dist/hooks/error-codes.d.ts +34 -0
- package/dist/hooks/error-codes.d.ts.map +1 -0
- package/dist/hooks/error-codes.js +20 -0
- package/dist/{storage/cache/providers/memory.cjs → hooks/index.cjs} +15 -18
- package/dist/hooks/index.d.ts +14 -0
- package/dist/hooks/index.d.ts.map +1 -0
- package/dist/hooks/index.js +11 -0
- package/dist/hooks/manager.cjs +354 -0
- package/dist/hooks/manager.d.ts +103 -0
- package/dist/hooks/manager.d.ts.map +1 -0
- package/dist/hooks/manager.js +331 -0
- package/dist/{plugins → hooks}/types.d.ts +36 -34
- package/dist/hooks/types.d.ts.map +1 -0
- package/dist/index.browser.cjs +13 -12
- package/dist/index.browser.d.ts +5 -5
- package/dist/index.browser.d.ts.map +1 -1
- package/dist/index.browser.js +8 -7
- package/dist/index.cjs +5 -7
- package/dist/index.d.ts +2 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -3
- package/dist/llm/errors.cjs +1 -1
- package/dist/llm/executor/stream-processor.cjs +131 -11
- package/dist/llm/executor/stream-processor.d.ts +7 -5
- package/dist/llm/executor/stream-processor.d.ts.map +1 -1
- package/dist/llm/executor/stream-processor.js +131 -11
- package/dist/llm/executor/turn-executor.cjs +49 -54
- package/dist/llm/executor/turn-executor.d.ts +7 -8
- package/dist/llm/executor/turn-executor.d.ts.map +1 -1
- package/dist/llm/executor/turn-executor.js +49 -54
- package/dist/llm/formatters/vercel.cjs +2 -2
- package/dist/llm/formatters/vercel.d.ts +2 -2
- package/dist/llm/formatters/vercel.d.ts.map +1 -1
- package/dist/llm/providers/local/schemas.d.ts +10 -10
- package/dist/llm/registry/auto-update.d.ts +2 -2
- package/dist/llm/registry/auto-update.d.ts.map +1 -1
- package/dist/llm/registry/index.d.ts +3 -3
- package/dist/llm/registry/index.d.ts.map +1 -1
- package/dist/llm/resolver.cjs +2 -2
- package/dist/llm/resolver.d.ts +4 -4
- package/dist/llm/resolver.d.ts.map +1 -1
- package/dist/llm/schemas.cjs +67 -104
- package/dist/llm/schemas.d.ts +6 -145
- package/dist/llm/schemas.d.ts.map +1 -1
- package/dist/llm/schemas.js +64 -101
- package/dist/llm/services/factory.cjs +2 -3
- package/dist/llm/services/factory.d.ts +3 -4
- package/dist/llm/services/factory.d.ts.map +1 -1
- package/dist/llm/services/factory.js +2 -3
- package/dist/llm/services/vercel.cjs +7 -14
- package/dist/llm/services/vercel.d.ts +6 -7
- package/dist/llm/services/vercel.d.ts.map +1 -1
- package/dist/llm/services/vercel.js +7 -14
- package/dist/llm/validation.cjs +1 -1
- package/dist/llm/validation.d.ts +2 -2
- package/dist/llm/validation.d.ts.map +1 -1
- package/dist/logger/browser.cjs +4 -4
- package/dist/logger/browser.d.ts +4 -4
- package/dist/logger/browser.d.ts.map +1 -1
- package/dist/logger/browser.js +3 -3
- package/dist/{context/compaction/providers/noop-provider.cjs → logger/default-logger-factory.cjs} +16 -22
- package/dist/logger/default-logger-factory.d.ts +301 -0
- package/dist/logger/default-logger-factory.d.ts.map +1 -0
- package/dist/logger/default-logger-factory.js +18 -0
- package/dist/logger/factory.d.ts +2 -2
- package/dist/logger/factory.d.ts.map +1 -1
- package/dist/logger/index.cjs +7 -2
- package/dist/logger/index.d.ts +5 -3
- package/dist/logger/index.d.ts.map +1 -1
- package/dist/logger/index.js +8 -2
- package/dist/logger/logger.cjs +4 -4
- package/dist/logger/logger.d.ts +4 -4
- package/dist/logger/logger.d.ts.map +1 -1
- package/dist/logger/logger.js +3 -3
- package/dist/logger/v2/dexto-logger.d.ts +3 -3
- package/dist/logger/v2/dexto-logger.d.ts.map +1 -1
- package/dist/logger/v2/schemas.d.ts +12 -12
- package/dist/logger/v2/test-utils.d.ts +5 -5
- package/dist/logger/v2/test-utils.d.ts.map +1 -1
- package/dist/logger/v2/transport-factory.d.ts +3 -3
- package/dist/logger/v2/transport-factory.d.ts.map +1 -1
- package/dist/logger/v2/transports/console-transport.d.ts +2 -2
- package/dist/logger/v2/transports/console-transport.d.ts.map +1 -1
- package/dist/logger/v2/transports/file-transport.d.ts +2 -2
- package/dist/logger/v2/transports/file-transport.d.ts.map +1 -1
- package/dist/logger/v2/transports/silent-transport.d.ts +2 -2
- package/dist/logger/v2/transports/silent-transport.d.ts.map +1 -1
- package/dist/logger/v2/types.cjs +1 -1
- package/dist/logger/v2/types.d.ts +8 -8
- package/dist/logger/v2/types.d.ts.map +1 -1
- package/dist/logger/v2/types.js +1 -1
- package/dist/mcp/errors.cjs +2 -2
- package/dist/mcp/errors.d.ts.map +1 -1
- package/dist/mcp/manager.cjs +16 -11
- package/dist/mcp/manager.d.ts +16 -13
- package/dist/mcp/manager.d.ts.map +1 -1
- package/dist/mcp/manager.js +17 -12
- package/dist/mcp/mcp-client.cjs +25 -20
- package/dist/mcp/mcp-client.d.ts +5 -5
- package/dist/mcp/mcp-client.d.ts.map +1 -1
- package/dist/mcp/mcp-client.js +20 -15
- package/dist/mcp/resolver.cjs +1 -1
- package/dist/mcp/schemas.cjs +5 -5
- package/dist/mcp/schemas.d.ts +4 -4
- package/dist/mcp/schemas.js +2 -2
- package/dist/mcp/types.d.ts +7 -7
- package/dist/mcp/types.d.ts.map +1 -1
- package/dist/memory/manager.d.ts +2 -2
- package/dist/memory/manager.d.ts.map +1 -1
- package/dist/memory/schemas.d.ts +2 -2
- package/dist/prompts/errors.cjs +3 -3
- package/dist/prompts/errors.d.ts.map +1 -1
- package/dist/prompts/prompt-manager.d.ts +3 -3
- package/dist/prompts/prompt-manager.d.ts.map +1 -1
- package/dist/prompts/providers/config-prompt-provider.cjs +15 -29
- package/dist/prompts/providers/config-prompt-provider.d.ts +3 -3
- package/dist/prompts/providers/config-prompt-provider.d.ts.map +1 -1
- package/dist/prompts/providers/config-prompt-provider.js +15 -29
- package/dist/prompts/providers/custom-prompt-provider.d.ts +2 -2
- package/dist/prompts/providers/custom-prompt-provider.d.ts.map +1 -1
- package/dist/prompts/providers/mcp-prompt-provider.d.ts +2 -2
- package/dist/prompts/providers/mcp-prompt-provider.d.ts.map +1 -1
- package/dist/prompts/schemas.d.ts +4 -4
- package/dist/resources/{internal-provider.cjs → agent-resources-provider.cjs} +16 -16
- package/dist/resources/{internal-provider.d.ts → agent-resources-provider.d.ts} +6 -6
- package/dist/resources/agent-resources-provider.d.ts.map +1 -0
- package/dist/resources/{internal-provider.js → agent-resources-provider.js} +13 -13
- package/dist/resources/errors.cjs +2 -2
- package/dist/resources/errors.d.ts.map +1 -1
- package/dist/resources/handlers/blob-handler.d.ts +2 -2
- package/dist/resources/handlers/blob-handler.d.ts.map +1 -1
- package/dist/resources/handlers/factory.d.ts +3 -3
- package/dist/resources/handlers/factory.d.ts.map +1 -1
- package/dist/resources/handlers/filesystem-handler.d.ts +2 -2
- package/dist/resources/handlers/filesystem-handler.d.ts.map +1 -1
- package/dist/resources/index.cjs +7 -9
- package/dist/resources/index.d.ts +3 -3
- package/dist/resources/index.d.ts.map +1 -1
- package/dist/resources/index.js +5 -10
- package/dist/resources/manager.cjs +77 -74
- package/dist/resources/manager.d.ts +16 -7
- package/dist/resources/manager.d.ts.map +1 -1
- package/dist/resources/manager.js +77 -74
- package/dist/resources/schemas.cjs +6 -26
- package/dist/resources/schemas.d.ts +8 -100
- package/dist/resources/schemas.d.ts.map +1 -1
- package/dist/resources/schemas.js +4 -23
- package/dist/search/search-service.d.ts +2 -2
- package/dist/search/search-service.d.ts.map +1 -1
- package/dist/session/chat-session.cjs +15 -25
- package/dist/session/chat-session.d.ts +7 -5
- package/dist/session/chat-session.d.ts.map +1 -1
- package/dist/session/chat-session.js +16 -26
- package/dist/session/errors.cjs +2 -2
- package/dist/session/errors.d.ts.map +1 -1
- package/dist/session/history/database.cjs +1 -1
- package/dist/session/history/database.d.ts +4 -4
- package/dist/session/history/database.d.ts.map +1 -1
- package/dist/session/history/factory.d.ts +3 -3
- package/dist/session/history/factory.d.ts.map +1 -1
- package/dist/session/history/memory.d.ts +4 -4
- package/dist/session/history/memory.d.ts.map +1 -1
- package/dist/session/history/types.d.ts +2 -2
- package/dist/session/history/types.d.ts.map +1 -1
- package/dist/session/index.cjs +3 -0
- package/dist/session/index.d.ts +2 -0
- package/dist/session/index.d.ts.map +1 -1
- package/dist/session/index.js +2 -0
- package/dist/session/message-queue.d.ts +2 -2
- package/dist/session/message-queue.d.ts.map +1 -1
- package/dist/session/session-manager.cjs +67 -9
- package/dist/session/session-manager.d.ts +46 -7
- package/dist/session/session-manager.d.ts.map +1 -1
- package/dist/session/session-manager.js +67 -9
- package/dist/session/title-generator.cjs +2 -2
- package/dist/session/title-generator.d.ts +2 -2
- package/dist/session/title-generator.d.ts.map +1 -1
- package/dist/storage/blob/index.cjs +0 -40
- package/dist/storage/blob/index.d.ts +2 -44
- package/dist/storage/blob/index.d.ts.map +1 -1
- package/dist/storage/blob/index.js +0 -30
- package/dist/storage/cache/index.cjs +0 -37
- package/dist/storage/cache/index.d.ts +0 -42
- package/dist/storage/cache/index.d.ts.map +1 -1
- package/dist/storage/cache/index.js +0 -28
- package/dist/storage/database/index.cjs +0 -42
- package/dist/storage/database/index.d.ts +0 -43
- package/dist/storage/database/index.d.ts.map +1 -1
- package/dist/storage/database/index.js +0 -37
- package/dist/storage/error-codes.cjs +1 -6
- package/dist/storage/error-codes.d.ts +2 -7
- package/dist/storage/error-codes.d.ts.map +1 -1
- package/dist/storage/error-codes.js +1 -6
- package/dist/storage/errors.cjs +18 -82
- package/dist/storage/errors.d.ts +4 -24
- package/dist/storage/errors.d.ts.map +1 -1
- package/dist/storage/errors.js +16 -80
- package/dist/storage/index.cjs +8 -69
- package/dist/storage/index.d.ts +11 -66
- package/dist/storage/index.d.ts.map +1 -1
- package/dist/storage/index.js +6 -50
- package/dist/storage/storage-manager.cjs +9 -25
- package/dist/storage/storage-manager.d.ts +11 -15
- package/dist/storage/storage-manager.d.ts.map +1 -1
- package/dist/storage/storage-manager.js +8 -23
- package/dist/storage/types.d.ts +0 -1
- package/dist/storage/types.d.ts.map +1 -1
- package/dist/systemPrompt/contributors.d.ts +4 -4
- package/dist/systemPrompt/contributors.d.ts.map +1 -1
- package/dist/systemPrompt/errors.cjs +2 -2
- package/dist/systemPrompt/errors.d.ts.map +1 -1
- package/dist/systemPrompt/manager.cjs +1 -5
- package/dist/systemPrompt/manager.d.ts +2 -3
- package/dist/systemPrompt/manager.d.ts.map +1 -1
- package/dist/systemPrompt/manager.js +1 -5
- package/dist/telemetry/index.cjs +3 -0
- package/dist/telemetry/index.d.ts +2 -0
- package/dist/telemetry/index.d.ts.map +1 -1
- package/dist/telemetry/index.js +2 -0
- package/dist/telemetry/utils.d.ts +4 -4
- package/dist/telemetry/utils.d.ts.map +1 -1
- package/dist/test-utils/in-memory-storage.cjs +288 -0
- package/dist/test-utils/in-memory-storage.js +252 -0
- package/dist/tools/confirmation/allowed-tools-provider/factory.d.ts +3 -3
- package/dist/tools/confirmation/allowed-tools-provider/factory.d.ts.map +1 -1
- package/dist/tools/confirmation/allowed-tools-provider/in-memory.d.ts +2 -2
- package/dist/tools/confirmation/allowed-tools-provider/in-memory.d.ts.map +1 -1
- package/dist/tools/confirmation/allowed-tools-provider/storage.d.ts +4 -4
- package/dist/tools/confirmation/allowed-tools-provider/storage.d.ts.map +1 -1
- package/dist/tools/confirmation/allowed-tools-provider/types.d.ts +2 -2
- package/dist/tools/confirmation/allowed-tools-provider/types.d.ts.map +1 -1
- package/dist/tools/{internal-tools/constants.cjs → define-tool.cjs} +8 -13
- package/dist/tools/define-tool.d.ts +11 -0
- package/dist/tools/define-tool.d.ts.map +1 -0
- package/dist/tools/define-tool.js +7 -0
- package/dist/tools/error-codes.cjs +2 -2
- package/dist/tools/error-codes.d.ts +2 -2
- package/dist/tools/error-codes.d.ts.map +1 -1
- package/dist/tools/error-codes.js +2 -2
- package/dist/tools/errors.cjs +11 -23
- package/dist/tools/errors.d.ts +4 -10
- package/dist/tools/errors.d.ts.map +1 -1
- package/dist/tools/errors.js +9 -21
- package/dist/tools/index.cjs +3 -8
- package/dist/tools/index.d.ts +2 -4
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +2 -7
- package/dist/{storage/blob/providers/index.cjs → tools/pattern-utils.cjs} +11 -9
- package/dist/tools/pattern-utils.d.ts +20 -0
- package/dist/tools/pattern-utils.d.ts.map +1 -0
- package/dist/tools/pattern-utils.js +10 -0
- package/dist/tools/schemas.cjs +14 -40
- package/dist/tools/schemas.d.ts +6 -50
- package/dist/tools/schemas.d.ts.map +1 -1
- package/dist/tools/schemas.js +11 -32
- package/dist/tools/tool-call-metadata.cjs +3 -3
- package/dist/tools/tool-call-metadata.d.ts +1 -1
- package/dist/tools/tool-call-metadata.d.ts.map +1 -1
- package/dist/tools/tool-call-metadata.js +3 -3
- package/dist/tools/tool-manager.cjs +376 -327
- package/dist/tools/tool-manager.d.ts +63 -80
- package/dist/tools/tool-manager.d.ts.map +1 -1
- package/dist/tools/tool-manager.js +376 -331
- package/dist/tools/types.d.ts +112 -13
- package/dist/tools/types.d.ts.map +1 -1
- package/dist/utils/error-conversion.d.ts +2 -2
- package/dist/utils/error-conversion.d.ts.map +1 -1
- package/dist/utils/path.d.ts +2 -2
- package/dist/utils/path.d.ts.map +1 -1
- package/dist/utils/result.cjs +1 -1
- package/dist/utils/result.d.ts.map +1 -1
- package/dist/utils/schema.cjs +9 -5
- package/dist/utils/schema.d.ts +4 -2
- package/dist/utils/schema.d.ts.map +1 -1
- package/dist/utils/schema.js +9 -5
- package/dist/utils/service-initializer.cjs +51 -56
- package/dist/utils/service-initializer.d.ts +17 -14
- package/dist/utils/service-initializer.d.ts.map +1 -1
- package/dist/utils/service-initializer.js +51 -56
- package/dist/{storage/cache/providers/index.cjs → workspace/error-codes.cjs} +8 -9
- package/dist/workspace/error-codes.d.ts +5 -0
- package/dist/workspace/error-codes.d.ts.map +1 -0
- package/dist/workspace/error-codes.js +7 -0
- package/dist/{storage/blob/factory.cjs → workspace/errors.cjs} +20 -14
- package/dist/workspace/errors.d.ts +5 -0
- package/dist/workspace/errors.d.ts.map +1 -0
- package/dist/workspace/errors.js +21 -0
- package/dist/{image → workspace}/index.cjs +12 -10
- package/dist/workspace/index.d.ts +5 -0
- package/dist/workspace/index.d.ts.map +1 -0
- package/dist/workspace/index.js +9 -0
- package/dist/workspace/manager.cjs +113 -0
- package/dist/workspace/manager.d.ts +18 -0
- package/dist/workspace/manager.d.ts.map +1 -0
- package/dist/workspace/manager.js +90 -0
- package/dist/workspace/types.d.ts +14 -0
- package/dist/workspace/types.d.ts.map +1 -0
- package/package.json +2 -2
- package/dist/context/compaction/factory.cjs +0 -57
- package/dist/context/compaction/factory.d.ts +0 -17
- package/dist/context/compaction/factory.d.ts.map +0 -1
- package/dist/context/compaction/factory.js +0 -34
- package/dist/context/compaction/provider.d.ts +0 -48
- package/dist/context/compaction/provider.d.ts.map +0 -1
- package/dist/context/compaction/providers/noop-provider.d.ts +0 -24
- package/dist/context/compaction/providers/noop-provider.d.ts.map +0 -1
- package/dist/context/compaction/providers/noop-provider.js +0 -24
- package/dist/context/compaction/providers/reactive-overflow-provider.cjs +0 -76
- package/dist/context/compaction/providers/reactive-overflow-provider.d.ts +0 -51
- package/dist/context/compaction/providers/reactive-overflow-provider.d.ts.map +0 -1
- package/dist/context/compaction/providers/reactive-overflow-provider.js +0 -52
- package/dist/context/compaction/registry.cjs +0 -39
- package/dist/context/compaction/registry.d.ts +0 -19
- package/dist/context/compaction/registry.d.ts.map +0 -1
- package/dist/context/compaction/registry.js +0 -16
- package/dist/context/compaction/schemas.cjs +0 -58
- package/dist/context/compaction/schemas.d.ts +0 -69
- package/dist/context/compaction/schemas.d.ts.map +0 -1
- package/dist/context/compaction/schemas.js +0 -34
- package/dist/context/compaction/strategies/reactive-overflow.d.ts.map +0 -1
- package/dist/image/define-image.cjs +0 -146
- package/dist/image/define-image.d.ts +0 -71
- package/dist/image/define-image.d.ts.map +0 -1
- package/dist/image/define-image.js +0 -121
- package/dist/image/index.d.ts +0 -53
- package/dist/image/index.d.ts.map +0 -1
- package/dist/image/index.js +0 -7
- package/dist/image/types.d.ts +0 -246
- package/dist/image/types.d.ts.map +0 -1
- package/dist/llm/services/test-utils.integration.cjs +0 -237
- package/dist/llm/services/test-utils.integration.d.ts +0 -48
- package/dist/llm/services/test-utils.integration.d.ts.map +0 -1
- package/dist/llm/services/test-utils.integration.js +0 -214
- package/dist/plugins/builtins/content-policy.d.ts +0 -26
- package/dist/plugins/builtins/content-policy.d.ts.map +0 -1
- package/dist/plugins/builtins/response-sanitizer.d.ts +0 -25
- package/dist/plugins/builtins/response-sanitizer.d.ts.map +0 -1
- package/dist/plugins/error-codes.cjs +0 -43
- package/dist/plugins/error-codes.d.ts +0 -34
- package/dist/plugins/error-codes.d.ts.map +0 -1
- package/dist/plugins/error-codes.js +0 -20
- package/dist/plugins/index.cjs +0 -61
- package/dist/plugins/index.d.ts +0 -21
- package/dist/plugins/index.d.ts.map +0 -1
- package/dist/plugins/index.js +0 -30
- package/dist/plugins/loader.cjs +0 -171
- package/dist/plugins/loader.d.ts +0 -30
- package/dist/plugins/loader.d.ts.map +0 -1
- package/dist/plugins/loader.js +0 -145
- package/dist/plugins/manager.cjs +0 -473
- package/dist/plugins/manager.d.ts +0 -106
- package/dist/plugins/manager.d.ts.map +0 -1
- package/dist/plugins/manager.js +0 -450
- package/dist/plugins/registrations/builtins.cjs +0 -51
- package/dist/plugins/registrations/builtins.d.ts +0 -17
- package/dist/plugins/registrations/builtins.d.ts.map +0 -1
- package/dist/plugins/registrations/builtins.js +0 -28
- package/dist/plugins/registry.cjs +0 -63
- package/dist/plugins/registry.d.ts +0 -101
- package/dist/plugins/registry.d.ts.map +0 -1
- package/dist/plugins/registry.js +0 -39
- package/dist/plugins/schemas.cjs +0 -73
- package/dist/plugins/schemas.d.ts +0 -195
- package/dist/plugins/schemas.d.ts.map +0 -1
- package/dist/plugins/schemas.js +0 -47
- package/dist/plugins/types.d.ts.map +0 -1
- package/dist/providers/base-registry.cjs +0 -147
- package/dist/providers/base-registry.d.ts +0 -147
- package/dist/providers/base-registry.d.ts.map +0 -1
- package/dist/providers/base-registry.js +0 -123
- package/dist/providers/discovery.cjs +0 -109
- package/dist/providers/discovery.d.ts +0 -96
- package/dist/providers/discovery.d.ts.map +0 -1
- package/dist/providers/discovery.js +0 -84
- package/dist/providers/index.cjs +0 -24
- package/dist/providers/index.d.ts +0 -32
- package/dist/providers/index.d.ts.map +0 -1
- package/dist/providers/index.js +0 -2
- package/dist/resources/internal-provider.d.ts.map +0 -1
- package/dist/storage/blob/factory.d.ts +0 -37
- package/dist/storage/blob/factory.d.ts.map +0 -1
- package/dist/storage/blob/factory.js +0 -15
- package/dist/storage/blob/local-blob-store.cjs +0 -496
- package/dist/storage/blob/local-blob-store.d.ts +0 -58
- package/dist/storage/blob/local-blob-store.d.ts.map +0 -1
- package/dist/storage/blob/local-blob-store.js +0 -463
- package/dist/storage/blob/memory-blob-store.cjs +0 -326
- package/dist/storage/blob/memory-blob-store.d.ts +0 -66
- package/dist/storage/blob/memory-blob-store.d.ts.map +0 -1
- package/dist/storage/blob/memory-blob-store.js +0 -303
- package/dist/storage/blob/provider.d.ts +0 -50
- package/dist/storage/blob/provider.d.ts.map +0 -1
- package/dist/storage/blob/providers/index.d.ts +0 -8
- package/dist/storage/blob/providers/index.d.ts.map +0 -1
- package/dist/storage/blob/providers/index.js +0 -7
- package/dist/storage/blob/providers/local.cjs +0 -39
- package/dist/storage/blob/providers/local.d.ts +0 -17
- package/dist/storage/blob/providers/local.d.ts.map +0 -1
- package/dist/storage/blob/providers/local.js +0 -16
- package/dist/storage/blob/providers/memory.cjs +0 -39
- package/dist/storage/blob/providers/memory.d.ts +0 -17
- package/dist/storage/blob/providers/memory.d.ts.map +0 -1
- package/dist/storage/blob/providers/memory.js +0 -16
- package/dist/storage/blob/registry.cjs +0 -50
- package/dist/storage/blob/registry.d.ts +0 -42
- package/dist/storage/blob/registry.d.ts.map +0 -1
- package/dist/storage/blob/registry.js +0 -26
- package/dist/storage/blob/schemas.cjs +0 -52
- package/dist/storage/blob/schemas.d.ts +0 -85
- package/dist/storage/blob/schemas.d.ts.map +0 -1
- package/dist/storage/blob/schemas.js +0 -26
- package/dist/storage/cache/factory.cjs +0 -38
- package/dist/storage/cache/factory.d.ts +0 -37
- package/dist/storage/cache/factory.d.ts.map +0 -1
- package/dist/storage/cache/factory.js +0 -15
- package/dist/storage/cache/memory-cache-store.cjs +0 -107
- package/dist/storage/cache/memory-cache-store.d.ts +0 -26
- package/dist/storage/cache/memory-cache-store.d.ts.map +0 -1
- package/dist/storage/cache/memory-cache-store.js +0 -84
- package/dist/storage/cache/provider.cjs +0 -16
- package/dist/storage/cache/provider.d.ts +0 -56
- package/dist/storage/cache/provider.d.ts.map +0 -1
- package/dist/storage/cache/provider.js +0 -0
- package/dist/storage/cache/providers/index.d.ts +0 -8
- package/dist/storage/cache/providers/index.d.ts.map +0 -1
- package/dist/storage/cache/providers/index.js +0 -7
- package/dist/storage/cache/providers/memory.d.ts +0 -17
- package/dist/storage/cache/providers/memory.d.ts.map +0 -1
- package/dist/storage/cache/providers/memory.js +0 -17
- package/dist/storage/cache/providers/redis.cjs +0 -66
- package/dist/storage/cache/providers/redis.d.ts +0 -20
- package/dist/storage/cache/providers/redis.d.ts.map +0 -1
- package/dist/storage/cache/providers/redis.js +0 -33
- package/dist/storage/cache/redis-store.cjs +0 -173
- package/dist/storage/cache/redis-store.d.ts +0 -32
- package/dist/storage/cache/redis-store.d.ts.map +0 -1
- package/dist/storage/cache/redis-store.js +0 -150
- package/dist/storage/cache/registry.cjs +0 -50
- package/dist/storage/cache/registry.d.ts +0 -42
- package/dist/storage/cache/registry.d.ts.map +0 -1
- package/dist/storage/cache/registry.js +0 -26
- package/dist/storage/cache/schemas.cjs +0 -81
- package/dist/storage/cache/schemas.d.ts +0 -150
- package/dist/storage/cache/schemas.d.ts.map +0 -1
- package/dist/storage/cache/schemas.js +0 -55
- package/dist/storage/database/factory.cjs +0 -38
- package/dist/storage/database/factory.d.ts +0 -39
- package/dist/storage/database/factory.d.ts.map +0 -1
- package/dist/storage/database/factory.js +0 -15
- package/dist/storage/database/memory-database-store.cjs +0 -122
- package/dist/storage/database/memory-database-store.d.ts +0 -29
- package/dist/storage/database/memory-database-store.d.ts.map +0 -1
- package/dist/storage/database/memory-database-store.js +0 -99
- package/dist/storage/database/postgres-store.cjs +0 -342
- package/dist/storage/database/postgres-store.d.ts +0 -55
- package/dist/storage/database/postgres-store.d.ts.map +0 -1
- package/dist/storage/database/postgres-store.js +0 -319
- package/dist/storage/database/provider.cjs +0 -16
- package/dist/storage/database/provider.d.ts +0 -56
- package/dist/storage/database/provider.d.ts.map +0 -1
- package/dist/storage/database/provider.js +0 -0
- package/dist/storage/database/providers/index.cjs +0 -34
- package/dist/storage/database/providers/index.d.ts +0 -9
- package/dist/storage/database/providers/index.d.ts.map +0 -1
- package/dist/storage/database/providers/index.js +0 -9
- package/dist/storage/database/providers/memory.cjs +0 -40
- package/dist/storage/database/providers/memory.d.ts +0 -16
- package/dist/storage/database/providers/memory.d.ts.map +0 -1
- package/dist/storage/database/providers/memory.js +0 -17
- package/dist/storage/database/providers/postgres.cjs +0 -62
- package/dist/storage/database/providers/postgres.d.ts +0 -19
- package/dist/storage/database/providers/postgres.d.ts.map +0 -1
- package/dist/storage/database/providers/postgres.js +0 -29
- package/dist/storage/database/providers/sqlite.cjs +0 -66
- package/dist/storage/database/providers/sqlite.d.ts +0 -20
- package/dist/storage/database/providers/sqlite.d.ts.map +0 -1
- package/dist/storage/database/providers/sqlite.js +0 -33
- package/dist/storage/database/registry.cjs +0 -50
- package/dist/storage/database/registry.d.ts +0 -42
- package/dist/storage/database/registry.d.ts.map +0 -1
- package/dist/storage/database/registry.js +0 -26
- package/dist/storage/database/schemas.cjs +0 -97
- package/dist/storage/database/schemas.d.ts +0 -226
- package/dist/storage/database/schemas.d.ts.map +0 -1
- package/dist/storage/database/schemas.js +0 -70
- package/dist/storage/database/sqlite-store.cjs +0 -270
- package/dist/storage/database/sqlite-store.d.ts +0 -33
- package/dist/storage/database/sqlite-store.d.ts.map +0 -1
- package/dist/storage/database/sqlite-store.js +0 -237
- package/dist/storage/schemas.cjs +0 -57
- package/dist/storage/schemas.d.ts +0 -347
- package/dist/storage/schemas.d.ts.map +0 -1
- package/dist/storage/schemas.js +0 -37
- package/dist/tools/bash-pattern-utils.cjs +0 -91
- package/dist/tools/bash-pattern-utils.d.ts +0 -58
- package/dist/tools/bash-pattern-utils.d.ts.map +0 -1
- package/dist/tools/bash-pattern-utils.js +0 -64
- package/dist/tools/custom-tool-registry.cjs +0 -64
- package/dist/tools/custom-tool-registry.d.ts +0 -126
- package/dist/tools/custom-tool-registry.d.ts.map +0 -1
- package/dist/tools/custom-tool-registry.js +0 -40
- package/dist/tools/custom-tool-schema-registry.cjs +0 -164
- package/dist/tools/custom-tool-schema-registry.d.ts +0 -86
- package/dist/tools/custom-tool-schema-registry.d.ts.map +0 -1
- package/dist/tools/custom-tool-schema-registry.js +0 -140
- package/dist/tools/internal-tools/constants.d.ts +0 -12
- package/dist/tools/internal-tools/constants.d.ts.map +0 -1
- package/dist/tools/internal-tools/constants.js +0 -12
- package/dist/tools/internal-tools/implementations/ask-user-tool.cjs +0 -57
- package/dist/tools/internal-tools/implementations/ask-user-tool.d.ts +0 -18
- package/dist/tools/internal-tools/implementations/ask-user-tool.d.ts.map +0 -1
- package/dist/tools/internal-tools/implementations/ask-user-tool.js +0 -34
- package/dist/tools/internal-tools/implementations/delegate-to-url-tool.cjs +0 -192
- package/dist/tools/internal-tools/implementations/delegate-to-url-tool.d.ts +0 -33
- package/dist/tools/internal-tools/implementations/delegate-to-url-tool.d.ts.map +0 -1
- package/dist/tools/internal-tools/implementations/delegate-to-url-tool.js +0 -169
- package/dist/tools/internal-tools/implementations/get-resource-tool.cjs +0 -113
- package/dist/tools/internal-tools/implementations/get-resource-tool.d.ts +0 -30
- package/dist/tools/internal-tools/implementations/get-resource-tool.d.ts.map +0 -1
- package/dist/tools/internal-tools/implementations/get-resource-tool.js +0 -90
- package/dist/tools/internal-tools/implementations/invoke-skill-tool.cjs +0 -140
- package/dist/tools/internal-tools/implementations/invoke-skill-tool.d.ts +0 -24
- package/dist/tools/internal-tools/implementations/invoke-skill-tool.d.ts.map +0 -1
- package/dist/tools/internal-tools/implementations/invoke-skill-tool.js +0 -117
- package/dist/tools/internal-tools/implementations/list-resources-tool.cjs +0 -91
- package/dist/tools/internal-tools/implementations/list-resources-tool.d.ts +0 -24
- package/dist/tools/internal-tools/implementations/list-resources-tool.d.ts.map +0 -1
- package/dist/tools/internal-tools/implementations/list-resources-tool.js +0 -68
- package/dist/tools/internal-tools/implementations/search-history-tool.cjs +0 -61
- package/dist/tools/internal-tools/implementations/search-history-tool.d.ts +0 -7
- package/dist/tools/internal-tools/implementations/search-history-tool.d.ts.map +0 -1
- package/dist/tools/internal-tools/implementations/search-history-tool.js +0 -38
- package/dist/tools/internal-tools/index.cjs +0 -26
- package/dist/tools/internal-tools/index.d.ts +0 -4
- package/dist/tools/internal-tools/index.d.ts.map +0 -1
- package/dist/tools/internal-tools/index.js +0 -3
- package/dist/tools/internal-tools/provider.cjs +0 -324
- package/dist/tools/internal-tools/provider.d.ts +0 -116
- package/dist/tools/internal-tools/provider.d.ts.map +0 -1
- package/dist/tools/internal-tools/provider.js +0 -301
- package/dist/tools/internal-tools/registry.cjs +0 -71
- package/dist/tools/internal-tools/registry.d.ts +0 -91
- package/dist/tools/internal-tools/registry.d.ts.map +0 -1
- package/dist/tools/internal-tools/registry.js +0 -47
- /package/dist/{context/compaction/provider.js → agent/agent-options.js} +0 -0
- /package/dist/{image/types.js → agent/runtime-config.js} +0 -0
- /package/dist/{image → hooks}/types.cjs +0 -0
- /package/dist/{plugins → hooks}/types.js +0 -0
- /package/dist/{plugins → workspace}/types.cjs +0 -0
- /package/dist/{storage/blob/provider.js → workspace/types.js} +0 -0
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { Hook, BeforeResponsePayload, HookExecutionContext, HookResult } from '../types.js';
|
|
2
|
+
export interface ResponseSanitizerConfig {
|
|
3
|
+
redactEmails?: boolean;
|
|
4
|
+
redactApiKeys?: boolean;
|
|
5
|
+
maxResponseLength?: number;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Response sanitizer built-in hook.
|
|
9
|
+
*
|
|
10
|
+
* This hook redacts sensitive information from LLM responses to prevent accidental leakage:
|
|
11
|
+
* - Email addresses
|
|
12
|
+
* - API keys and tokens
|
|
13
|
+
* - Optional: Truncates responses that exceed length limits
|
|
14
|
+
*/
|
|
15
|
+
export declare class ResponseSanitizerHook implements Hook {
|
|
16
|
+
private redactEmails;
|
|
17
|
+
private redactApiKeys;
|
|
18
|
+
private maxResponseLength;
|
|
19
|
+
initialize(config: Record<string, unknown>): Promise<void>;
|
|
20
|
+
beforeResponse(payload: BeforeResponsePayload, _context: HookExecutionContext): Promise<HookResult>;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=response-sanitizer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"response-sanitizer.d.ts","sourceRoot":"","sources":["../../../src/hooks/builtins/response-sanitizer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACR,IAAI,EACJ,qBAAqB,EACrB,oBAAoB,EACpB,UAAU,EAEb,MAAM,aAAa,CAAC;AAErB,MAAM,WAAW,uBAAuB;IACpC,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAQD;;;;;;;GAOG;AACH,qBAAa,qBAAsB,YAAW,IAAI;IAC9C,OAAO,CAAC,YAAY,CAAkC;IACtD,OAAO,CAAC,aAAa,CAAmC;IACxD,OAAO,CAAC,iBAAiB,CAAsC;IAEzD,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAO1D,cAAc,CAChB,OAAO,EAAE,qBAAqB,EAC9B,QAAQ,EAAE,oBAAoB,GAC/B,OAAO,CAAC,UAAU,CAAC;CAyEzB"}
|
|
@@ -4,7 +4,7 @@ const DEFAULTS = {
|
|
|
4
4
|
redactApiKeys: false,
|
|
5
5
|
maxResponseLength: 0
|
|
6
6
|
};
|
|
7
|
-
class
|
|
7
|
+
class ResponseSanitizerHook {
|
|
8
8
|
redactEmails = DEFAULTS.redactEmails;
|
|
9
9
|
redactApiKeys = DEFAULTS.redactApiKeys;
|
|
10
10
|
maxResponseLength = DEFAULTS.maxResponseLength;
|
|
@@ -75,5 +75,5 @@ class ResponseSanitizerPlugin {
|
|
|
75
75
|
}
|
|
76
76
|
}
|
|
77
77
|
export {
|
|
78
|
-
|
|
78
|
+
ResponseSanitizerHook
|
|
79
79
|
};
|
|
@@ -0,0 +1,43 @@
|
|
|
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 error_codes_exports = {};
|
|
20
|
+
__export(error_codes_exports, {
|
|
21
|
+
HookErrorCode: () => HookErrorCode
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(error_codes_exports);
|
|
24
|
+
var HookErrorCode = /* @__PURE__ */ ((HookErrorCode2) => {
|
|
25
|
+
HookErrorCode2["HOOK_LOAD_FAILED"] = "HOOK_LOAD_FAILED";
|
|
26
|
+
HookErrorCode2["HOOK_INVALID_SHAPE"] = "HOOK_INVALID_SHAPE";
|
|
27
|
+
HookErrorCode2["HOOK_INSTANTIATION_FAILED"] = "HOOK_INSTANTIATION_FAILED";
|
|
28
|
+
HookErrorCode2["HOOK_INITIALIZATION_FAILED"] = "HOOK_INITIALIZATION_FAILED";
|
|
29
|
+
HookErrorCode2["HOOK_CONFIGURATION_INVALID"] = "HOOK_CONFIGURATION_INVALID";
|
|
30
|
+
HookErrorCode2["HOOK_EXECUTION_FAILED"] = "HOOK_EXECUTION_FAILED";
|
|
31
|
+
HookErrorCode2["HOOK_EXECUTION_TIMEOUT"] = "HOOK_EXECUTION_TIMEOUT";
|
|
32
|
+
HookErrorCode2["HOOK_BLOCKED_EXECUTION"] = "HOOK_BLOCKED_EXECUTION";
|
|
33
|
+
HookErrorCode2["HOOK_DUPLICATE_PRIORITY"] = "HOOK_DUPLICATE_PRIORITY";
|
|
34
|
+
HookErrorCode2["HOOK_DEPENDENCY_NOT_INSTALLED"] = "HOOK_DEPENDENCY_NOT_INSTALLED";
|
|
35
|
+
HookErrorCode2["HOOK_PROVIDER_ALREADY_REGISTERED"] = "HOOK_PROVIDER_ALREADY_REGISTERED";
|
|
36
|
+
HookErrorCode2["HOOK_PROVIDER_NOT_FOUND"] = "HOOK_PROVIDER_NOT_FOUND";
|
|
37
|
+
HookErrorCode2["HOOK_PROVIDER_VALIDATION_FAILED"] = "HOOK_PROVIDER_VALIDATION_FAILED";
|
|
38
|
+
return HookErrorCode2;
|
|
39
|
+
})(HookErrorCode || {});
|
|
40
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
41
|
+
0 && (module.exports = {
|
|
42
|
+
HookErrorCode
|
|
43
|
+
});
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Hook-specific error codes.
|
|
3
|
+
* Used for hook loading, validation, and execution errors.
|
|
4
|
+
*/
|
|
5
|
+
export declare enum HookErrorCode {
|
|
6
|
+
/** Hook file not found or cannot be loaded */
|
|
7
|
+
HOOK_LOAD_FAILED = "HOOK_LOAD_FAILED",
|
|
8
|
+
/** Hook does not implement required interface */
|
|
9
|
+
HOOK_INVALID_SHAPE = "HOOK_INVALID_SHAPE",
|
|
10
|
+
/** Hook constructor threw an error */
|
|
11
|
+
HOOK_INSTANTIATION_FAILED = "HOOK_INSTANTIATION_FAILED",
|
|
12
|
+
/** Hook initialization failed */
|
|
13
|
+
HOOK_INITIALIZATION_FAILED = "HOOK_INITIALIZATION_FAILED",
|
|
14
|
+
/** Hook configuration is invalid */
|
|
15
|
+
HOOK_CONFIGURATION_INVALID = "HOOK_CONFIGURATION_INVALID",
|
|
16
|
+
/** Hook execution failed */
|
|
17
|
+
HOOK_EXECUTION_FAILED = "HOOK_EXECUTION_FAILED",
|
|
18
|
+
/** Hook execution timed out */
|
|
19
|
+
HOOK_EXECUTION_TIMEOUT = "HOOK_EXECUTION_TIMEOUT",
|
|
20
|
+
/** Hook blocked execution */
|
|
21
|
+
HOOK_BLOCKED_EXECUTION = "HOOK_BLOCKED_EXECUTION",
|
|
22
|
+
/** Duplicate hook priority */
|
|
23
|
+
HOOK_DUPLICATE_PRIORITY = "HOOK_DUPLICATE_PRIORITY",
|
|
24
|
+
/** Required dependency not installed for hook loading */
|
|
25
|
+
HOOK_DEPENDENCY_NOT_INSTALLED = "HOOK_DEPENDENCY_NOT_INSTALLED",
|
|
26
|
+
/** Hook provider already registered in registry */
|
|
27
|
+
HOOK_PROVIDER_ALREADY_REGISTERED = "HOOK_PROVIDER_ALREADY_REGISTERED",
|
|
28
|
+
/** Hook provider not found in registry */
|
|
29
|
+
HOOK_PROVIDER_NOT_FOUND = "HOOK_PROVIDER_NOT_FOUND",
|
|
30
|
+
/** Hook provider configuration validation failed */
|
|
31
|
+
HOOK_PROVIDER_VALIDATION_FAILED = "HOOK_PROVIDER_VALIDATION_FAILED"
|
|
32
|
+
}
|
|
33
|
+
export type { HookErrorCode as default };
|
|
34
|
+
//# sourceMappingURL=error-codes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error-codes.d.ts","sourceRoot":"","sources":["../../src/hooks/error-codes.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,oBAAY,aAAa;IACrB,8CAA8C;IAC9C,gBAAgB,qBAAqB;IAErC,iDAAiD;IACjD,kBAAkB,uBAAuB;IAEzC,sCAAsC;IACtC,yBAAyB,8BAA8B;IAEvD,iCAAiC;IACjC,0BAA0B,+BAA+B;IAEzD,oCAAoC;IACpC,0BAA0B,+BAA+B;IAEzD,4BAA4B;IAC5B,qBAAqB,0BAA0B;IAE/C,+BAA+B;IAC/B,sBAAsB,2BAA2B;IAEjD,6BAA6B;IAC7B,sBAAsB,2BAA2B;IAEjD,8BAA8B;IAC9B,uBAAuB,4BAA4B;IAEnD,yDAAyD;IACzD,6BAA6B,kCAAkC;IAE/D,mDAAmD;IACnD,gCAAgC,qCAAqC;IAErE,0CAA0C;IAC1C,uBAAuB,4BAA4B;IAEnD,oDAAoD;IACpD,+BAA+B,oCAAoC;CACtE;AAED,YAAY,EAAE,aAAa,IAAI,OAAO,EAAE,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import "../chunk-PTJYTZNU.js";
|
|
2
|
+
var HookErrorCode = /* @__PURE__ */ ((HookErrorCode2) => {
|
|
3
|
+
HookErrorCode2["HOOK_LOAD_FAILED"] = "HOOK_LOAD_FAILED";
|
|
4
|
+
HookErrorCode2["HOOK_INVALID_SHAPE"] = "HOOK_INVALID_SHAPE";
|
|
5
|
+
HookErrorCode2["HOOK_INSTANTIATION_FAILED"] = "HOOK_INSTANTIATION_FAILED";
|
|
6
|
+
HookErrorCode2["HOOK_INITIALIZATION_FAILED"] = "HOOK_INITIALIZATION_FAILED";
|
|
7
|
+
HookErrorCode2["HOOK_CONFIGURATION_INVALID"] = "HOOK_CONFIGURATION_INVALID";
|
|
8
|
+
HookErrorCode2["HOOK_EXECUTION_FAILED"] = "HOOK_EXECUTION_FAILED";
|
|
9
|
+
HookErrorCode2["HOOK_EXECUTION_TIMEOUT"] = "HOOK_EXECUTION_TIMEOUT";
|
|
10
|
+
HookErrorCode2["HOOK_BLOCKED_EXECUTION"] = "HOOK_BLOCKED_EXECUTION";
|
|
11
|
+
HookErrorCode2["HOOK_DUPLICATE_PRIORITY"] = "HOOK_DUPLICATE_PRIORITY";
|
|
12
|
+
HookErrorCode2["HOOK_DEPENDENCY_NOT_INSTALLED"] = "HOOK_DEPENDENCY_NOT_INSTALLED";
|
|
13
|
+
HookErrorCode2["HOOK_PROVIDER_ALREADY_REGISTERED"] = "HOOK_PROVIDER_ALREADY_REGISTERED";
|
|
14
|
+
HookErrorCode2["HOOK_PROVIDER_NOT_FOUND"] = "HOOK_PROVIDER_NOT_FOUND";
|
|
15
|
+
HookErrorCode2["HOOK_PROVIDER_VALIDATION_FAILED"] = "HOOK_PROVIDER_VALIDATION_FAILED";
|
|
16
|
+
return HookErrorCode2;
|
|
17
|
+
})(HookErrorCode || {});
|
|
18
|
+
export {
|
|
19
|
+
HookErrorCode
|
|
20
|
+
};
|
|
@@ -16,25 +16,22 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
16
16
|
return to;
|
|
17
17
|
};
|
|
18
18
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
-
var
|
|
20
|
-
__export(
|
|
21
|
-
|
|
19
|
+
var hooks_exports = {};
|
|
20
|
+
__export(hooks_exports, {
|
|
21
|
+
ContentPolicyHook: () => import_content_policy.ContentPolicyHook,
|
|
22
|
+
HookErrorCode: () => import_error_codes.HookErrorCode,
|
|
23
|
+
HookManager: () => import_manager.HookManager,
|
|
24
|
+
ResponseSanitizerHook: () => import_response_sanitizer.ResponseSanitizerHook
|
|
22
25
|
});
|
|
23
|
-
module.exports = __toCommonJS(
|
|
24
|
-
var
|
|
25
|
-
var
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
configSchema: import_schemas.InMemoryCacheSchema,
|
|
29
|
-
create: (_config, _logger) => new import_memory_cache_store.MemoryCacheStore(),
|
|
30
|
-
metadata: {
|
|
31
|
-
displayName: "In-Memory",
|
|
32
|
-
description: "Store cache data in RAM (ephemeral, for testing and development)",
|
|
33
|
-
requiresNetwork: false,
|
|
34
|
-
supportsTTL: true
|
|
35
|
-
}
|
|
36
|
-
};
|
|
26
|
+
module.exports = __toCommonJS(hooks_exports);
|
|
27
|
+
var import_manager = require("./manager.js");
|
|
28
|
+
var import_error_codes = require("./error-codes.js");
|
|
29
|
+
var import_content_policy = require("./builtins/content-policy.js");
|
|
30
|
+
var import_response_sanitizer = require("./builtins/response-sanitizer.js");
|
|
37
31
|
// Annotate the CommonJS export names for ESM import in node:
|
|
38
32
|
0 && (module.exports = {
|
|
39
|
-
|
|
33
|
+
ContentPolicyHook,
|
|
34
|
+
HookErrorCode,
|
|
35
|
+
HookManager,
|
|
36
|
+
ResponseSanitizerHook
|
|
40
37
|
});
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Hook System
|
|
3
|
+
*
|
|
4
|
+
* Unified hook architecture for extending agent behavior at key extension points.
|
|
5
|
+
*/
|
|
6
|
+
export type { Hook, HookConfig, HookExecutionContext, HookResult, HookNotice, ExtensionPoint, BeforeLLMRequestPayload, BeforeToolCallPayload, AfterToolResultPayload, BeforeResponsePayload, } from './types.js';
|
|
7
|
+
export { HookManager } from './manager.js';
|
|
8
|
+
export type { HookManagerOptions, HookExecutionContextOptions } from './manager.js';
|
|
9
|
+
export { HookErrorCode } from './error-codes.js';
|
|
10
|
+
export { ContentPolicyHook } from './builtins/content-policy.js';
|
|
11
|
+
export type { ContentPolicyConfig } from './builtins/content-policy.js';
|
|
12
|
+
export { ResponseSanitizerHook } from './builtins/response-sanitizer.js';
|
|
13
|
+
export type { ResponseSanitizerConfig } from './builtins/response-sanitizer.js';
|
|
14
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,YAAY,EACR,IAAI,EACJ,UAAU,EACV,oBAAoB,EACpB,UAAU,EACV,UAAU,EACV,cAAc,EACd,uBAAuB,EACvB,qBAAqB,EACrB,sBAAsB,EACtB,qBAAqB,GACxB,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,YAAY,EAAE,kBAAkB,EAAE,2BAA2B,EAAE,MAAM,cAAc,CAAC;AAGpF,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAGjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,YAAY,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACxE,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AACzE,YAAY,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import "../chunk-PTJYTZNU.js";
|
|
2
|
+
import { HookManager } from "./manager.js";
|
|
3
|
+
import { HookErrorCode } from "./error-codes.js";
|
|
4
|
+
import { ContentPolicyHook } from "./builtins/content-policy.js";
|
|
5
|
+
import { ResponseSanitizerHook } from "./builtins/response-sanitizer.js";
|
|
6
|
+
export {
|
|
7
|
+
ContentPolicyHook,
|
|
8
|
+
HookErrorCode,
|
|
9
|
+
HookManager,
|
|
10
|
+
ResponseSanitizerHook
|
|
11
|
+
};
|
|
@@ -0,0 +1,354 @@
|
|
|
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 manager_exports = {};
|
|
20
|
+
__export(manager_exports, {
|
|
21
|
+
HookManager: () => HookManager
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(manager_exports);
|
|
24
|
+
var import_errors = require("../errors/index.js");
|
|
25
|
+
var import_error_codes = require("./error-codes.js");
|
|
26
|
+
var import_async_context = require("../utils/async-context.js");
|
|
27
|
+
var import_types = require("../logger/v2/types.js");
|
|
28
|
+
class HookManager {
|
|
29
|
+
hooks = [];
|
|
30
|
+
hooksByExtensionPoint = /* @__PURE__ */ new Map();
|
|
31
|
+
hookNameByInstance = /* @__PURE__ */ new WeakMap();
|
|
32
|
+
options;
|
|
33
|
+
initialized = false;
|
|
34
|
+
logger;
|
|
35
|
+
/** Default timeout for hook execution (milliseconds) */
|
|
36
|
+
static DEFAULT_TIMEOUT = 5e3;
|
|
37
|
+
constructor(options, hooks, logger) {
|
|
38
|
+
this.options = options;
|
|
39
|
+
this.logger = logger.createChild(import_types.DextoLogComponent.HOOK);
|
|
40
|
+
this.setHooks(hooks);
|
|
41
|
+
this.logger.debug("HookManager created");
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Provide the concrete hooks this manager should orchestrate.
|
|
45
|
+
* Hooks must be fully resolved and initialized before calling `initialize()`.
|
|
46
|
+
*/
|
|
47
|
+
setHooks(hooks) {
|
|
48
|
+
if (this.initialized) {
|
|
49
|
+
throw new import_errors.DextoRuntimeError(
|
|
50
|
+
import_error_codes.HookErrorCode.HOOK_CONFIGURATION_INVALID,
|
|
51
|
+
import_errors.ErrorScope.HOOK,
|
|
52
|
+
import_errors.ErrorType.SYSTEM,
|
|
53
|
+
"Cannot set hooks after initialization"
|
|
54
|
+
);
|
|
55
|
+
}
|
|
56
|
+
this.hooks = [...hooks];
|
|
57
|
+
this.hooksByExtensionPoint.clear();
|
|
58
|
+
this.hookNameByInstance = /* @__PURE__ */ new WeakMap();
|
|
59
|
+
for (const [index, hook] of this.hooks.entries()) {
|
|
60
|
+
this.hookNameByInstance.set(hook, this.deriveHookName(hook, index));
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Initialize hook orchestration.
|
|
65
|
+
* Validates hook shapes and registers them to extension points.
|
|
66
|
+
* @throws {DextoRuntimeError} If any hook fails validation (fail-fast)
|
|
67
|
+
*/
|
|
68
|
+
async initialize() {
|
|
69
|
+
if (this.initialized) {
|
|
70
|
+
throw new import_errors.DextoRuntimeError(
|
|
71
|
+
import_error_codes.HookErrorCode.HOOK_CONFIGURATION_INVALID,
|
|
72
|
+
import_errors.ErrorScope.HOOK,
|
|
73
|
+
import_errors.ErrorType.SYSTEM,
|
|
74
|
+
"HookManager already initialized"
|
|
75
|
+
);
|
|
76
|
+
}
|
|
77
|
+
for (const [index, hook] of this.hooks.entries()) {
|
|
78
|
+
this.assertValidHookShape(hook, index);
|
|
79
|
+
this.registerToExtensionPoints(hook);
|
|
80
|
+
}
|
|
81
|
+
for (const [extensionPoint, hooks] of this.hooksByExtensionPoint.entries()) {
|
|
82
|
+
this.logger.debug(
|
|
83
|
+
`Extension point '${extensionPoint}': ${hooks.length} hook(s) registered`
|
|
84
|
+
);
|
|
85
|
+
}
|
|
86
|
+
this.initialized = true;
|
|
87
|
+
this.logger.info(`HookManager initialized with ${this.hooks.length} hook(s)`);
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Register a hook to the extension points it implements.
|
|
91
|
+
*/
|
|
92
|
+
registerToExtensionPoints(hook) {
|
|
93
|
+
const extensionPoints = [
|
|
94
|
+
"beforeLLMRequest",
|
|
95
|
+
"beforeToolCall",
|
|
96
|
+
"afterToolResult",
|
|
97
|
+
"beforeResponse"
|
|
98
|
+
];
|
|
99
|
+
for (const point of extensionPoints) {
|
|
100
|
+
if (typeof hook[point] === "function") {
|
|
101
|
+
if (!this.hooksByExtensionPoint.has(point)) {
|
|
102
|
+
this.hooksByExtensionPoint.set(point, []);
|
|
103
|
+
}
|
|
104
|
+
this.hooksByExtensionPoint.get(point).push(hook);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Execute all hooks at a specific extension point.
|
|
110
|
+
* Hooks execute sequentially in the order they were provided.
|
|
111
|
+
*
|
|
112
|
+
* @param extensionPoint - Which extension point to execute
|
|
113
|
+
* @param payload - Payload for this extension point (must be an object)
|
|
114
|
+
* @param options - Options for building execution context
|
|
115
|
+
* @returns Modified payload after all hooks execute
|
|
116
|
+
* @throws {DextoRuntimeError} If a hook cancels execution or payload is not an object
|
|
117
|
+
*/
|
|
118
|
+
async executeHooks(extensionPoint, payload, options) {
|
|
119
|
+
const hooks = this.hooksByExtensionPoint.get(extensionPoint) || [];
|
|
120
|
+
if (hooks.length === 0) {
|
|
121
|
+
return payload;
|
|
122
|
+
}
|
|
123
|
+
if (payload === null || typeof payload !== "object") {
|
|
124
|
+
throw new import_errors.DextoRuntimeError(
|
|
125
|
+
import_error_codes.HookErrorCode.HOOK_INVALID_SHAPE,
|
|
126
|
+
import_errors.ErrorScope.HOOK,
|
|
127
|
+
import_errors.ErrorType.USER,
|
|
128
|
+
`Payload for ${extensionPoint} must be an object (got ${payload === null ? "null" : typeof payload})`,
|
|
129
|
+
{ extensionPoint, payloadType: typeof payload }
|
|
130
|
+
);
|
|
131
|
+
}
|
|
132
|
+
let currentPayload = { ...payload };
|
|
133
|
+
const asyncCtx = (0, import_async_context.getContext)();
|
|
134
|
+
const llmConfig = options.stateManager.getLLMConfig(options.sessionId);
|
|
135
|
+
const context = {
|
|
136
|
+
sessionId: options.sessionId ?? void 0,
|
|
137
|
+
userId: asyncCtx?.userId ?? void 0,
|
|
138
|
+
tenantId: asyncCtx?.tenantId ?? void 0,
|
|
139
|
+
llmConfig,
|
|
140
|
+
logger: this.logger,
|
|
141
|
+
abortSignal: options.abortSignal ?? void 0,
|
|
142
|
+
agent: {
|
|
143
|
+
sessionManager: options.sessionManager,
|
|
144
|
+
mcpManager: options.mcpManager,
|
|
145
|
+
toolManager: options.toolManager,
|
|
146
|
+
stateManager: options.stateManager,
|
|
147
|
+
agentEventBus: this.options.agentEventBus,
|
|
148
|
+
storageManager: this.options.storageManager
|
|
149
|
+
}
|
|
150
|
+
};
|
|
151
|
+
for (const [index, hook] of hooks.entries()) {
|
|
152
|
+
const method = hook[extensionPoint];
|
|
153
|
+
if (!method) continue;
|
|
154
|
+
const hookName = this.hookNameByInstance.get(hook) ?? this.deriveHookName(hook, index);
|
|
155
|
+
const startTime = Date.now();
|
|
156
|
+
try {
|
|
157
|
+
const result = await this.executeWithTimeout(
|
|
158
|
+
method.call(hook, currentPayload, context),
|
|
159
|
+
hookName,
|
|
160
|
+
HookManager.DEFAULT_TIMEOUT
|
|
161
|
+
);
|
|
162
|
+
const duration = Date.now() - startTime;
|
|
163
|
+
this.logger.debug(`Hook '${hookName}' executed at ${extensionPoint}`, {
|
|
164
|
+
ok: result.ok,
|
|
165
|
+
cancelled: result.cancel,
|
|
166
|
+
duration,
|
|
167
|
+
hasModifications: !!result.modify
|
|
168
|
+
});
|
|
169
|
+
if (result.notices && result.notices.length > 0) {
|
|
170
|
+
for (const notice of result.notices) {
|
|
171
|
+
const level = notice.kind === "block" || notice.kind === "warn" ? "warn" : "info";
|
|
172
|
+
this.logger[level](`Hook notice (${notice.kind}): ${notice.message}`, {
|
|
173
|
+
hook: hookName,
|
|
174
|
+
code: notice.code,
|
|
175
|
+
details: notice.details
|
|
176
|
+
});
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
if (!result.ok) {
|
|
180
|
+
this.logger.warn(`Hook '${hookName}' returned error`, {
|
|
181
|
+
message: result.message
|
|
182
|
+
});
|
|
183
|
+
if (result.cancel) {
|
|
184
|
+
throw new import_errors.DextoRuntimeError(
|
|
185
|
+
import_error_codes.HookErrorCode.HOOK_BLOCKED_EXECUTION,
|
|
186
|
+
import_errors.ErrorScope.HOOK,
|
|
187
|
+
import_errors.ErrorType.FORBIDDEN,
|
|
188
|
+
result.message || `Operation blocked by hook '${hookName}'`,
|
|
189
|
+
{
|
|
190
|
+
hook: hookName,
|
|
191
|
+
extensionPoint,
|
|
192
|
+
notices: result.notices
|
|
193
|
+
}
|
|
194
|
+
);
|
|
195
|
+
}
|
|
196
|
+
continue;
|
|
197
|
+
}
|
|
198
|
+
if (result.modify) {
|
|
199
|
+
currentPayload = {
|
|
200
|
+
...currentPayload,
|
|
201
|
+
...result.modify
|
|
202
|
+
};
|
|
203
|
+
this.logger.debug(`Hook '${hookName}' modified payload`, {
|
|
204
|
+
keys: Object.keys(result.modify)
|
|
205
|
+
});
|
|
206
|
+
}
|
|
207
|
+
if (result.cancel) {
|
|
208
|
+
throw new import_errors.DextoRuntimeError(
|
|
209
|
+
import_error_codes.HookErrorCode.HOOK_BLOCKED_EXECUTION,
|
|
210
|
+
import_errors.ErrorScope.HOOK,
|
|
211
|
+
import_errors.ErrorType.FORBIDDEN,
|
|
212
|
+
result.message || `Operation cancelled by hook '${hookName}'`,
|
|
213
|
+
{
|
|
214
|
+
hook: hookName,
|
|
215
|
+
extensionPoint,
|
|
216
|
+
notices: result.notices
|
|
217
|
+
}
|
|
218
|
+
);
|
|
219
|
+
}
|
|
220
|
+
} catch (error) {
|
|
221
|
+
const duration = Date.now() - startTime;
|
|
222
|
+
if (error instanceof import_errors.DextoRuntimeError) {
|
|
223
|
+
throw error;
|
|
224
|
+
}
|
|
225
|
+
this.logger.error(`Hook '${hookName}' threw error`, {
|
|
226
|
+
error: error instanceof Error ? error.message : String(error),
|
|
227
|
+
duration
|
|
228
|
+
});
|
|
229
|
+
throw new import_errors.DextoRuntimeError(
|
|
230
|
+
import_error_codes.HookErrorCode.HOOK_EXECUTION_FAILED,
|
|
231
|
+
import_errors.ErrorScope.HOOK,
|
|
232
|
+
import_errors.ErrorType.SYSTEM,
|
|
233
|
+
`Hook '${hookName}' failed: ${error instanceof Error ? error.message : String(error)}`,
|
|
234
|
+
{
|
|
235
|
+
hook: hookName,
|
|
236
|
+
extensionPoint
|
|
237
|
+
}
|
|
238
|
+
);
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
return currentPayload;
|
|
242
|
+
}
|
|
243
|
+
/**
|
|
244
|
+
* Execute a promise with timeout, properly clearing timer on completion
|
|
245
|
+
* Prevents timer leaks and unhandled rejections from Promise.race
|
|
246
|
+
*/
|
|
247
|
+
async executeWithTimeout(promise, hookName, ms) {
|
|
248
|
+
let timer;
|
|
249
|
+
return await new Promise((resolve, reject) => {
|
|
250
|
+
timer = setTimeout(() => {
|
|
251
|
+
reject(
|
|
252
|
+
new import_errors.DextoRuntimeError(
|
|
253
|
+
import_error_codes.HookErrorCode.HOOK_EXECUTION_TIMEOUT,
|
|
254
|
+
import_errors.ErrorScope.HOOK,
|
|
255
|
+
import_errors.ErrorType.TIMEOUT,
|
|
256
|
+
`Hook '${hookName}' execution timed out after ${ms}ms`
|
|
257
|
+
)
|
|
258
|
+
);
|
|
259
|
+
}, ms);
|
|
260
|
+
promise.then(
|
|
261
|
+
(val) => {
|
|
262
|
+
if (timer) clearTimeout(timer);
|
|
263
|
+
resolve(val);
|
|
264
|
+
},
|
|
265
|
+
(err) => {
|
|
266
|
+
if (timer) clearTimeout(timer);
|
|
267
|
+
reject(err);
|
|
268
|
+
}
|
|
269
|
+
);
|
|
270
|
+
});
|
|
271
|
+
}
|
|
272
|
+
/**
|
|
273
|
+
* Cleanup all hooks.
|
|
274
|
+
* Called when agent shuts down
|
|
275
|
+
*/
|
|
276
|
+
async cleanup() {
|
|
277
|
+
for (const [index, hook] of this.hooks.entries()) {
|
|
278
|
+
const hookName = this.hookNameByInstance.get(hook) ?? this.deriveHookName(hook, index);
|
|
279
|
+
if (hook.cleanup) {
|
|
280
|
+
try {
|
|
281
|
+
await hook.cleanup();
|
|
282
|
+
this.logger.debug(`Hook cleaned up: ${hookName}`);
|
|
283
|
+
} catch (error) {
|
|
284
|
+
this.logger.error(`Hook cleanup failed: ${hookName}`, {
|
|
285
|
+
error: error instanceof Error ? error.message : String(error)
|
|
286
|
+
});
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
this.logger.info("HookManager cleanup complete");
|
|
291
|
+
}
|
|
292
|
+
/**
|
|
293
|
+
* Get hook statistics.
|
|
294
|
+
*/
|
|
295
|
+
getStats() {
|
|
296
|
+
const byExtensionPoint = {};
|
|
297
|
+
for (const [point, hooks] of this.hooksByExtensionPoint.entries()) {
|
|
298
|
+
byExtensionPoint[point] = hooks.length;
|
|
299
|
+
}
|
|
300
|
+
return {
|
|
301
|
+
total: this.hooks.length,
|
|
302
|
+
enabled: this.hooks.length,
|
|
303
|
+
byExtensionPoint
|
|
304
|
+
};
|
|
305
|
+
}
|
|
306
|
+
/**
|
|
307
|
+
* List hook display names in execution order.
|
|
308
|
+
*
|
|
309
|
+
* Names are derived from:
|
|
310
|
+
* - `hook.name` (if present)
|
|
311
|
+
* - constructor/class name (if available)
|
|
312
|
+
* - fallback `hook#N`
|
|
313
|
+
*/
|
|
314
|
+
getHookNames() {
|
|
315
|
+
return this.hooks.map((hook, index) => {
|
|
316
|
+
return this.hookNameByInstance.get(hook) ?? this.deriveHookName(hook, index);
|
|
317
|
+
});
|
|
318
|
+
}
|
|
319
|
+
deriveHookName(hook, index) {
|
|
320
|
+
const maybeNamed = hook;
|
|
321
|
+
if (typeof maybeNamed.name === "string" && maybeNamed.name.trim().length > 0) {
|
|
322
|
+
return maybeNamed.name;
|
|
323
|
+
}
|
|
324
|
+
const ctorName = hook.constructor?.name;
|
|
325
|
+
if (typeof ctorName === "string" && ctorName !== "Object" && ctorName.trim().length > 0) {
|
|
326
|
+
return ctorName;
|
|
327
|
+
}
|
|
328
|
+
return `hook#${index + 1}`;
|
|
329
|
+
}
|
|
330
|
+
assertValidHookShape(hook, index) {
|
|
331
|
+
const extensionPoints = [
|
|
332
|
+
"beforeLLMRequest",
|
|
333
|
+
"beforeToolCall",
|
|
334
|
+
"afterToolResult",
|
|
335
|
+
"beforeResponse"
|
|
336
|
+
];
|
|
337
|
+
const hasExtensionPoint = extensionPoints.some(
|
|
338
|
+
(point) => typeof hook[point] === "function"
|
|
339
|
+
);
|
|
340
|
+
if (!hasExtensionPoint) {
|
|
341
|
+
throw new import_errors.DextoRuntimeError(
|
|
342
|
+
import_error_codes.HookErrorCode.HOOK_INVALID_SHAPE,
|
|
343
|
+
import_errors.ErrorScope.HOOK,
|
|
344
|
+
import_errors.ErrorType.USER,
|
|
345
|
+
`Hook '${this.deriveHookName(hook, index)}' must implement at least one extension point method`,
|
|
346
|
+
{ availableExtensionPoints: extensionPoints }
|
|
347
|
+
);
|
|
348
|
+
}
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
352
|
+
0 && (module.exports = {
|
|
353
|
+
HookManager
|
|
354
|
+
});
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import type { ExtensionPoint, Hook } from './types.js';
|
|
2
|
+
import type { AgentEventBus } from '../events/index.js';
|
|
3
|
+
import type { StorageManager } from '../storage/index.js';
|
|
4
|
+
import type { SessionManager } from '../session/index.js';
|
|
5
|
+
import type { MCPManager } from '../mcp/manager.js';
|
|
6
|
+
import type { ToolManager } from '../tools/tool-manager.js';
|
|
7
|
+
import type { AgentStateManager } from '../agent/state-manager.js';
|
|
8
|
+
import type { Logger } from '../logger/v2/types.js';
|
|
9
|
+
/**
|
|
10
|
+
* Options for HookManager construction.
|
|
11
|
+
*/
|
|
12
|
+
export interface HookManagerOptions {
|
|
13
|
+
agentEventBus: AgentEventBus;
|
|
14
|
+
storageManager: StorageManager;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Options for building hook execution context.
|
|
18
|
+
* Used when calling `executeHooks()`.
|
|
19
|
+
*/
|
|
20
|
+
export interface HookExecutionContextOptions {
|
|
21
|
+
sessionManager: SessionManager;
|
|
22
|
+
mcpManager: MCPManager;
|
|
23
|
+
toolManager: ToolManager;
|
|
24
|
+
stateManager: AgentStateManager;
|
|
25
|
+
sessionId?: string;
|
|
26
|
+
abortSignal?: AbortSignal;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Hook Manager - Orchestrates hook execution.
|
|
30
|
+
*
|
|
31
|
+
* Responsibilities:
|
|
32
|
+
* - Validate hook shape
|
|
33
|
+
* - Manage hook lifecycle (initialize, execute, cleanup)
|
|
34
|
+
* - Execute hooks sequentially at extension points
|
|
35
|
+
* - Handle timeouts and errors with fail-fast policy
|
|
36
|
+
*/
|
|
37
|
+
export declare class HookManager {
|
|
38
|
+
private hooks;
|
|
39
|
+
private hooksByExtensionPoint;
|
|
40
|
+
private hookNameByInstance;
|
|
41
|
+
private options;
|
|
42
|
+
private initialized;
|
|
43
|
+
private logger;
|
|
44
|
+
/** Default timeout for hook execution (milliseconds) */
|
|
45
|
+
private static readonly DEFAULT_TIMEOUT;
|
|
46
|
+
constructor(options: HookManagerOptions, hooks: Hook[], logger: Logger);
|
|
47
|
+
/**
|
|
48
|
+
* Provide the concrete hooks this manager should orchestrate.
|
|
49
|
+
* Hooks must be fully resolved and initialized before calling `initialize()`.
|
|
50
|
+
*/
|
|
51
|
+
setHooks(hooks: Hook[]): void;
|
|
52
|
+
/**
|
|
53
|
+
* Initialize hook orchestration.
|
|
54
|
+
* Validates hook shapes and registers them to extension points.
|
|
55
|
+
* @throws {DextoRuntimeError} If any hook fails validation (fail-fast)
|
|
56
|
+
*/
|
|
57
|
+
initialize(): Promise<void>;
|
|
58
|
+
/**
|
|
59
|
+
* Register a hook to the extension points it implements.
|
|
60
|
+
*/
|
|
61
|
+
private registerToExtensionPoints;
|
|
62
|
+
/**
|
|
63
|
+
* Execute all hooks at a specific extension point.
|
|
64
|
+
* Hooks execute sequentially in the order they were provided.
|
|
65
|
+
*
|
|
66
|
+
* @param extensionPoint - Which extension point to execute
|
|
67
|
+
* @param payload - Payload for this extension point (must be an object)
|
|
68
|
+
* @param options - Options for building execution context
|
|
69
|
+
* @returns Modified payload after all hooks execute
|
|
70
|
+
* @throws {DextoRuntimeError} If a hook cancels execution or payload is not an object
|
|
71
|
+
*/
|
|
72
|
+
executeHooks<T extends object>(extensionPoint: ExtensionPoint, payload: T, options: HookExecutionContextOptions): Promise<T>;
|
|
73
|
+
/**
|
|
74
|
+
* Execute a promise with timeout, properly clearing timer on completion
|
|
75
|
+
* Prevents timer leaks and unhandled rejections from Promise.race
|
|
76
|
+
*/
|
|
77
|
+
private executeWithTimeout;
|
|
78
|
+
/**
|
|
79
|
+
* Cleanup all hooks.
|
|
80
|
+
* Called when agent shuts down
|
|
81
|
+
*/
|
|
82
|
+
cleanup(): Promise<void>;
|
|
83
|
+
/**
|
|
84
|
+
* Get hook statistics.
|
|
85
|
+
*/
|
|
86
|
+
getStats(): {
|
|
87
|
+
total: number;
|
|
88
|
+
enabled: number;
|
|
89
|
+
byExtensionPoint: Record<ExtensionPoint, number>;
|
|
90
|
+
};
|
|
91
|
+
/**
|
|
92
|
+
* List hook display names in execution order.
|
|
93
|
+
*
|
|
94
|
+
* Names are derived from:
|
|
95
|
+
* - `hook.name` (if present)
|
|
96
|
+
* - constructor/class name (if available)
|
|
97
|
+
* - fallback `hook#N`
|
|
98
|
+
*/
|
|
99
|
+
getHookNames(): string[];
|
|
100
|
+
private deriveHookName;
|
|
101
|
+
private assertValidHookShape;
|
|
102
|
+
}
|
|
103
|
+
//# sourceMappingURL=manager.d.ts.map
|