@dexto/core 1.7.1 → 1.8.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/dist/agent/DextoAgent.cjs +157 -62
- package/dist/agent/DextoAgent.d.ts +71 -17
- package/dist/agent/DextoAgent.d.ts.map +1 -1
- package/dist/agent/DextoAgent.js +161 -63
- package/dist/agent/agent-options.d.ts +6 -10
- package/dist/agent/agent-options.d.ts.map +1 -1
- package/dist/agent/agentCard.js +1 -1
- package/dist/agent/error-codes.js +1 -1
- package/dist/agent/errors.js +1 -1
- package/dist/agent/index.d.ts +1 -0
- package/dist/agent/index.d.ts.map +1 -1
- package/dist/agent/index.js +1 -1
- package/dist/agent/schemas.d.ts +2 -2
- package/dist/agent/schemas.js +1 -1
- package/dist/agent/state-manager.js +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 +2 -2
- package/dist/approval/errors.cjs +2 -5
- package/dist/approval/errors.d.ts.map +1 -1
- package/dist/approval/errors.js +3 -6
- package/dist/approval/factory.cjs +19 -4
- package/dist/approval/factory.d.ts +4 -1
- package/dist/approval/factory.d.ts.map +1 -1
- package/dist/approval/factory.js +19 -5
- package/dist/approval/index.d.ts +1 -1
- package/dist/approval/index.d.ts.map +1 -1
- package/dist/approval/index.js +1 -1
- package/dist/approval/manager.cjs +168 -26
- package/dist/approval/manager.d.ts +46 -12
- package/dist/approval/manager.d.ts.map +1 -1
- package/dist/approval/manager.js +177 -29
- package/dist/approval/schemas.cjs +26 -26
- package/dist/approval/schemas.d.ts +29 -29
- package/dist/approval/schemas.d.ts.map +1 -1
- package/dist/approval/schemas.js +23 -23
- package/dist/approval/types.cjs +5 -5
- package/dist/approval/types.d.ts +18 -18
- package/dist/approval/types.d.ts.map +1 -1
- package/dist/approval/types.js +6 -6
- package/dist/{chunk-PTJYTZNU.js → chunk-C6A6W6XS.js} +1 -44
- package/dist/config/index.cjs +75 -0
- package/dist/config/index.d.ts +15 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +50 -0
- package/dist/context/compaction/overflow.js +1 -1
- package/dist/context/compaction/strategies/noop.js +1 -1
- package/dist/context/compaction/strategies/reactive-overflow-compaction.js +1 -1
- package/dist/context/content-clone.cjs +131 -0
- package/dist/context/content-clone.d.ts +7 -0
- package/dist/context/content-clone.d.ts.map +1 -0
- package/dist/context/content-clone.js +104 -0
- package/dist/context/error-codes.js +1 -1
- package/dist/context/errors.js +1 -1
- package/dist/context/index.cjs +2 -0
- package/dist/context/index.d.ts +1 -0
- package/dist/context/index.d.ts.map +1 -1
- package/dist/context/index.js +2 -1
- package/dist/context/manager.cjs +47 -35
- package/dist/context/manager.d.ts +7 -7
- package/dist/context/manager.d.ts.map +1 -1
- package/dist/context/manager.js +48 -36
- package/dist/context/media-helpers.js +1 -1
- package/dist/context/schemas.cjs +77 -0
- package/dist/context/schemas.d.ts +5 -0
- package/dist/context/schemas.d.ts.map +1 -0
- package/dist/context/schemas.js +53 -0
- package/dist/context/types.js +1 -1
- package/dist/context/utils.cjs +70 -69
- package/dist/context/utils.d.ts +3 -3
- package/dist/context/utils.d.ts.map +1 -1
- package/dist/context/utils.js +71 -70
- package/dist/errors/DextoBaseError.js +1 -1
- package/dist/errors/DextoRuntimeError.js +1 -1
- package/dist/errors/DextoValidationError.js +1 -1
- package/dist/errors/index.js +1 -1
- package/dist/errors/result-bridge.js +1 -1
- package/dist/errors/types.js +1 -1
- package/dist/events/index.cjs +9 -1
- package/dist/events/index.d.ts +20 -8
- package/dist/events/index.d.ts.map +1 -1
- package/dist/events/index.js +10 -2
- package/dist/hooks/builtins/content-policy.js +1 -1
- package/dist/hooks/builtins/response-sanitizer.js +1 -1
- package/dist/hooks/error-codes.js +1 -1
- package/dist/hooks/index.js +1 -1
- package/dist/hooks/manager.cjs +1 -1
- package/dist/hooks/manager.d.ts +2 -2
- package/dist/hooks/manager.d.ts.map +1 -1
- package/dist/hooks/manager.js +2 -2
- package/dist/hooks/types.d.ts +2 -2
- package/dist/hooks/types.d.ts.map +1 -1
- package/dist/index.browser.js +1 -1
- package/dist/index.cjs +2 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/llm/curation-config.js +1 -1
- package/dist/llm/curation.js +1 -1
- package/dist/llm/error-codes.js +1 -1
- package/dist/llm/errors.js +1 -1
- package/dist/llm/executor/index.cjs +32 -0
- package/dist/llm/executor/index.d.ts +2 -0
- package/dist/llm/executor/index.d.ts.map +1 -0
- package/dist/llm/executor/index.js +11 -0
- package/dist/llm/executor/provider-options.js +1 -1
- package/dist/llm/executor/stream-processor.cjs +28 -139
- package/dist/llm/executor/stream-processor.d.ts +2 -13
- package/dist/llm/executor/stream-processor.d.ts.map +1 -1
- package/dist/llm/executor/stream-processor.js +29 -140
- package/dist/{session/history/memory.cjs → llm/executor/tool-definitions.cjs} +21 -33
- package/dist/llm/executor/tool-definitions.d.ts +4 -0
- package/dist/llm/executor/tool-definitions.d.ts.map +1 -0
- package/dist/llm/executor/tool-definitions.js +22 -0
- package/dist/llm/executor/tool-output-truncator.js +1 -1
- package/dist/llm/executor/turn-executor.cjs +1093 -458
- package/dist/llm/executor/turn-executor.d.ts +269 -43
- package/dist/llm/executor/turn-executor.d.ts.map +1 -1
- package/dist/llm/executor/turn-executor.js +1079 -405
- package/dist/llm/executor/types.d.ts +6 -0
- package/dist/llm/executor/types.d.ts.map +1 -1
- package/dist/llm/formatters/vercel.js +1 -1
- package/dist/llm/index.cjs +2 -0
- package/dist/llm/index.d.ts +1 -0
- package/dist/llm/index.d.ts.map +1 -1
- package/dist/llm/index.js +2 -1
- package/dist/llm/providers/codex-app-server.cjs +22 -2
- package/dist/llm/providers/codex-app-server.d.ts.map +1 -1
- package/dist/llm/providers/codex-app-server.js +23 -3
- package/dist/llm/providers/codex-base-url.js +1 -1
- package/dist/llm/providers/local/ai-sdk-adapter.js +1 -1
- package/dist/llm/providers/local/downloader.js +1 -1
- package/dist/llm/providers/local/error-codes.js +1 -1
- package/dist/llm/providers/local/errors.js +1 -1
- package/dist/llm/providers/local/gpu-detector.js +1 -1
- package/dist/llm/providers/local/index.js +1 -1
- package/dist/llm/providers/local/node-llama-provider.js +1 -1
- package/dist/llm/providers/local/ollama-provider.js +1 -1
- package/dist/llm/providers/local/registry.js +1 -1
- package/dist/llm/providers/local/schemas.js +1 -1
- package/dist/llm/providers/openrouter-model-registry.js +1 -1
- package/dist/llm/reasoning/anthropic-betas.js +1 -1
- package/dist/llm/reasoning/anthropic-thinking.js +1 -1
- package/dist/llm/reasoning/openai-reasoning-effort.js +1 -1
- package/dist/llm/reasoning/profile.js +1 -1
- package/dist/llm/reasoning/profiles/anthropic.js +1 -1
- package/dist/llm/reasoning/profiles/bedrock.js +1 -1
- package/dist/llm/reasoning/profiles/google.js +1 -1
- package/dist/llm/reasoning/profiles/openai-compatible.js +1 -1
- package/dist/llm/reasoning/profiles/openai.js +1 -1
- package/dist/llm/reasoning/profiles/openrouter.js +1 -1
- package/dist/llm/reasoning/profiles/shared.js +1 -1
- package/dist/llm/reasoning/profiles/vertex.js +1 -1
- package/dist/llm/registry/auto-update.js +1 -1
- package/dist/llm/registry/index.js +1 -1
- package/dist/llm/registry/models.generated.js +1 -1
- package/dist/llm/registry/models.manual.js +1 -1
- package/dist/llm/registry/sync.js +1 -1
- package/dist/llm/resolver.js +1 -1
- package/dist/llm/schemas.js +1 -1
- package/dist/llm/services/factory.cjs +5 -4
- package/dist/llm/services/factory.d.ts +3 -3
- package/dist/llm/services/factory.d.ts.map +1 -1
- package/dist/llm/services/factory.js +6 -5
- package/dist/llm/services/types.d.ts +10 -1
- package/dist/llm/services/types.d.ts.map +1 -1
- package/dist/llm/services/vercel.cjs +23 -8
- package/dist/llm/services/vercel.d.ts +11 -7
- package/dist/llm/services/vercel.d.ts.map +1 -1
- package/dist/llm/services/vercel.js +24 -9
- package/dist/llm/types.js +1 -1
- package/dist/llm/usage-metadata.cjs +20 -3
- package/dist/llm/usage-metadata.d.ts +1 -0
- package/dist/llm/usage-metadata.d.ts.map +1 -1
- package/dist/llm/usage-metadata.js +19 -3
- package/dist/llm/usage-scope.js +1 -1
- package/dist/llm/usage-summary.js +1 -1
- package/dist/llm/validation.js +1 -1
- package/dist/logger/browser.js +1 -1
- package/dist/logger/default-logger-factory.js +1 -1
- package/dist/logger/factory.js +1 -1
- package/dist/logger/index.js +1 -1
- package/dist/logger/logger.js +1 -1
- package/dist/logger/v2/dexto-logger.js +1 -1
- package/dist/logger/v2/error-codes.js +1 -1
- package/dist/logger/v2/errors.js +1 -1
- package/dist/logger/v2/schemas.js +1 -1
- package/dist/logger/v2/test-utils.js +1 -1
- package/dist/logger/v2/transport-factory.js +1 -1
- package/dist/logger/v2/transports/console-transport.js +1 -1
- package/dist/logger/v2/transports/file-transport.js +1 -1
- package/dist/logger/v2/transports/silent-transport.js +1 -1
- package/dist/logger/v2/types.js +1 -1
- package/dist/mcp/bundled-config.js +1 -1
- package/dist/mcp/error-codes.js +1 -1
- package/dist/mcp/errors.js +1 -1
- package/dist/mcp/index.js +1 -1
- package/dist/mcp/manager.js +1 -1
- package/dist/mcp/mcp-client.js +1 -1
- package/dist/mcp/resolver.js +1 -1
- package/dist/mcp/schemas.js +1 -1
- package/dist/memory/error-codes.js +1 -1
- package/dist/memory/errors.js +1 -1
- package/dist/memory/index.js +1 -1
- package/dist/memory/manager.cjs +7 -27
- package/dist/memory/manager.d.ts +4 -12
- package/dist/memory/manager.d.ts.map +1 -1
- package/dist/memory/manager.js +8 -28
- package/dist/memory/schemas.js +1 -1
- package/dist/prompts/error-codes.js +1 -1
- package/dist/prompts/errors.js +1 -1
- package/dist/prompts/index.js +1 -1
- package/dist/prompts/name-validation.js +1 -1
- package/dist/prompts/prompt-manager.cjs +9 -38
- package/dist/prompts/prompt-manager.d.ts +2 -10
- package/dist/prompts/prompt-manager.d.ts.map +1 -1
- package/dist/prompts/prompt-manager.js +10 -39
- package/dist/prompts/providers/config-prompt-provider.cjs +8 -87
- package/dist/prompts/providers/config-prompt-provider.d.ts.map +1 -1
- package/dist/prompts/providers/config-prompt-provider.js +9 -88
- package/dist/prompts/providers/custom-prompt-provider.cjs +21 -22
- package/dist/prompts/providers/custom-prompt-provider.d.ts +19 -4
- package/dist/prompts/providers/custom-prompt-provider.d.ts.map +1 -1
- package/dist/prompts/providers/custom-prompt-provider.js +22 -23
- package/dist/prompts/providers/mcp-prompt-provider.js +1 -1
- package/dist/prompts/schemas.cjs +2 -24
- package/dist/prompts/schemas.d.ts +0 -52
- package/dist/prompts/schemas.d.ts.map +1 -1
- package/dist/prompts/schemas.js +3 -25
- package/dist/prompts/types.d.ts +5 -32
- package/dist/prompts/types.d.ts.map +1 -1
- package/dist/prompts/utils.js +1 -1
- package/dist/resources/agent-resources-provider.js +1 -1
- package/dist/resources/error-codes.js +1 -1
- package/dist/resources/errors.js +1 -1
- package/dist/resources/handlers/blob-handler.cjs +14 -11
- package/dist/resources/handlers/blob-handler.d.ts +4 -4
- package/dist/resources/handlers/blob-handler.d.ts.map +1 -1
- package/dist/resources/handlers/blob-handler.js +15 -12
- package/dist/resources/handlers/factory.cjs +3 -3
- package/dist/resources/handlers/factory.js +4 -4
- package/dist/resources/handlers/filesystem-handler.js +1 -1
- package/dist/resources/handlers/types.d.ts +2 -2
- package/dist/resources/handlers/types.d.ts.map +1 -1
- package/dist/resources/index.js +1 -1
- package/dist/resources/manager.cjs +10 -7
- package/dist/resources/manager.d.ts +4 -4
- package/dist/resources/manager.d.ts.map +1 -1
- package/dist/resources/manager.js +11 -8
- package/dist/resources/reference-parser.js +1 -1
- package/dist/resources/schemas.cjs +1 -1
- package/dist/resources/schemas.d.ts +2 -2
- package/dist/resources/schemas.js +2 -2
- package/dist/runtime/host-runtime.js +1 -1
- package/dist/runtime/index.cjs +3 -0
- package/dist/runtime/index.d.ts +2 -0
- package/dist/runtime/index.d.ts.map +1 -1
- package/dist/runtime/index.js +3 -1
- package/dist/runtime/run-context.js +1 -1
- package/dist/search/index.js +1 -1
- package/dist/search/search-service.cjs +6 -13
- package/dist/search/search-service.d.ts +5 -3
- package/dist/search/search-service.d.ts.map +1 -1
- package/dist/search/search-service.js +7 -14
- package/dist/session/chat-session.cjs +264 -108
- package/dist/session/chat-session.d.ts +75 -21
- package/dist/session/chat-session.d.ts.map +1 -1
- package/dist/session/chat-session.js +268 -108
- package/dist/session/error-codes.js +1 -1
- package/dist/session/errors.js +1 -1
- package/dist/session/index.cjs +19 -2
- package/dist/session/index.d.ts +4 -3
- package/dist/session/index.d.ts.map +1 -1
- package/dist/session/index.js +19 -3
- package/dist/session/message-queue.cjs +82 -51
- package/dist/session/message-queue.d.ts +13 -8
- package/dist/session/message-queue.d.ts.map +1 -1
- package/dist/session/message-queue.js +83 -52
- package/dist/session/queue-clone.cjs +50 -0
- package/dist/session/queue-clone.d.ts +5 -0
- package/dist/session/queue-clone.d.ts.map +1 -0
- package/dist/session/queue-clone.js +25 -0
- package/dist/session/schemas.cjs +74 -2
- package/dist/session/schemas.d.ts +94 -0
- package/dist/session/schemas.d.ts.map +1 -1
- package/dist/session/schemas.js +69 -2
- package/dist/session/session-manager.cjs +107 -123
- package/dist/session/session-manager.d.ts +7 -6
- package/dist/session/session-manager.d.ts.map +1 -1
- package/dist/session/session-manager.js +108 -124
- package/dist/session/title-generator.cjs +14 -26
- package/dist/session/title-generator.d.ts +4 -6
- package/dist/session/title-generator.d.ts.map +1 -1
- package/dist/session/title-generator.js +16 -28
- package/dist/session/types.cjs +28 -0
- package/dist/session/types.d.ts +5 -1
- package/dist/session/types.d.ts.map +1 -1
- package/dist/session/types.js +19 -0
- package/dist/{session/history/factory.cjs → skills/index.cjs} +9 -9
- package/dist/skills/index.d.ts +4 -0
- package/dist/skills/index.d.ts.map +1 -0
- package/dist/skills/index.js +7 -0
- package/dist/skills/skill-manager.cjs +76 -0
- package/dist/skills/skill-manager.d.ts +13 -0
- package/dist/skills/skill-manager.d.ts.map +1 -0
- package/dist/skills/skill-manager.js +53 -0
- package/dist/skills/types.d.ts +24 -0
- package/dist/skills/types.d.ts.map +1 -0
- package/dist/skills/workspace-skill-source.cjs +120 -0
- package/dist/skills/workspace-skill-source.d.ts +16 -0
- package/dist/skills/workspace-skill-source.d.ts.map +1 -0
- package/dist/skills/workspace-skill-source.js +97 -0
- package/dist/storage/approvals/types.cjs +38 -0
- package/dist/storage/approvals/types.d.ts +54 -0
- package/dist/storage/approvals/types.d.ts.map +1 -0
- package/dist/storage/approvals/types.js +14 -0
- package/dist/storage/artifacts/types.d.ts +73 -0
- package/dist/storage/artifacts/types.d.ts.map +1 -0
- package/dist/storage/conversation/database.cjs +233 -0
- package/dist/storage/conversation/database.d.ts +38 -0
- package/dist/storage/conversation/database.d.ts.map +1 -0
- package/dist/storage/conversation/database.js +210 -0
- package/dist/storage/conversation/types.cjs +16 -0
- package/dist/storage/conversation/types.d.ts +21 -0
- package/dist/storage/conversation/types.d.ts.map +1 -0
- package/dist/storage/conversation/types.js +0 -0
- package/dist/storage/database/types.d.ts +4 -0
- package/dist/storage/database/types.d.ts.map +1 -1
- package/dist/storage/error-codes.js +1 -1
- package/dist/storage/errors.cjs +6 -6
- package/dist/storage/errors.d.ts +2 -2
- package/dist/storage/errors.js +7 -7
- package/dist/storage/index.cjs +42 -5
- package/dist/storage/index.d.ts +19 -8
- package/dist/storage/index.d.ts.map +1 -1
- package/dist/storage/index.js +39 -4
- package/dist/storage/memories/types.cjs +16 -0
- package/dist/storage/memories/types.d.ts +17 -0
- package/dist/storage/memories/types.d.ts.map +1 -0
- package/dist/storage/memories/types.js +0 -0
- package/dist/storage/message-queue/types.cjs +16 -0
- package/dist/storage/message-queue/types.d.ts +15 -0
- package/dist/storage/message-queue/types.d.ts.map +1 -0
- package/dist/storage/message-queue/types.js +0 -0
- package/dist/storage/prompts/types.cjs +16 -0
- package/dist/storage/prompts/types.d.ts +14 -0
- package/dist/storage/prompts/types.d.ts.map +1 -0
- package/dist/storage/prompts/types.js +0 -0
- package/dist/storage/runtime-events/types.cjs +16 -0
- package/dist/storage/runtime-events/types.d.ts +19 -0
- package/dist/storage/runtime-events/types.d.ts.map +1 -0
- package/dist/storage/runtime-events/types.js +0 -0
- package/dist/storage/sessions/types.cjs +16 -0
- package/dist/storage/sessions/types.d.ts +19 -0
- package/dist/storage/sessions/types.d.ts.map +1 -0
- package/dist/storage/sessions/types.js +0 -0
- package/dist/storage/stores/backend.cjs +702 -0
- package/dist/storage/stores/backend.d.ts +303 -0
- package/dist/storage/stores/backend.d.ts.map +1 -0
- package/dist/storage/stores/backend.js +677 -0
- package/dist/storage/stores/in-memory.cjs +510 -0
- package/dist/storage/stores/in-memory.d.ts +11 -0
- package/dist/storage/stores/in-memory.d.ts.map +1 -0
- package/dist/storage/stores/in-memory.js +487 -0
- package/dist/storage/stores/types.cjs +16 -0
- package/dist/storage/stores/types.d.ts +36 -0
- package/dist/storage/stores/types.d.ts.map +1 -0
- package/dist/storage/stores/types.js +0 -0
- package/dist/storage/tool-executions/types.cjs +127 -0
- package/dist/storage/tool-executions/types.d.ts +193 -0
- package/dist/storage/tool-executions/types.d.ts.map +1 -0
- package/dist/storage/tool-executions/types.js +96 -0
- package/dist/storage/tool-preferences/types.cjs +16 -0
- package/dist/storage/tool-preferences/types.d.ts +29 -0
- package/dist/storage/tool-preferences/types.d.ts.map +1 -0
- package/dist/storage/tool-preferences/types.js +0 -0
- package/dist/storage/tool-state/types.cjs +16 -0
- package/dist/storage/tool-state/types.d.ts +20 -0
- package/dist/storage/tool-state/types.d.ts.map +1 -0
- package/dist/storage/tool-state/types.js +0 -0
- package/dist/storage/workspaces/types.cjs +16 -0
- package/dist/storage/workspaces/types.d.ts +19 -0
- package/dist/storage/workspaces/types.d.ts.map +1 -0
- package/dist/storage/workspaces/types.js +0 -0
- package/dist/systemPrompt/contributors.cjs +10 -14
- package/dist/systemPrompt/contributors.d.ts +3 -3
- package/dist/systemPrompt/contributors.d.ts.map +1 -1
- package/dist/systemPrompt/contributors.js +11 -15
- package/dist/systemPrompt/error-codes.js +1 -1
- package/dist/systemPrompt/errors.js +1 -1
- package/dist/systemPrompt/in-built-prompts.js +1 -1
- package/dist/systemPrompt/index.js +1 -1
- package/dist/systemPrompt/manager.js +1 -1
- package/dist/systemPrompt/registry.js +1 -1
- package/dist/systemPrompt/schemas.js +1 -1
- package/dist/telemetry/decorators.js +1 -1
- package/dist/telemetry/error-codes.js +1 -1
- package/dist/telemetry/errors.js +1 -1
- package/dist/telemetry/exporters.js +1 -1
- package/dist/telemetry/index.js +1 -1
- package/dist/telemetry/schemas.js +1 -1
- package/dist/telemetry/telemetry.js +1 -1
- package/dist/telemetry/utils.js +1 -1
- package/dist/test-utils/in-memory-storage.cjs +9 -17
- package/dist/test-utils/in-memory-storage.js +9 -16
- package/dist/test-utils/session-state-stores.cjs +21 -24
- package/dist/test-utils/session-state-stores.js +22 -24
- package/dist/tools/{confirmation → approval}/allowed-tools-provider/factory.cjs +1 -1
- package/dist/tools/{confirmation → approval}/allowed-tools-provider/factory.d.ts +2 -2
- package/dist/tools/approval/allowed-tools-provider/factory.d.ts.map +1 -0
- package/dist/tools/{confirmation → approval}/allowed-tools-provider/factory.js +2 -2
- package/dist/tools/approval/allowed-tools-provider/in-memory.d.ts.map +1 -0
- package/dist/tools/{confirmation → approval}/allowed-tools-provider/in-memory.js +1 -1
- package/dist/tools/approval/allowed-tools-provider/storage.cjs +66 -0
- package/dist/tools/{confirmation → approval}/allowed-tools-provider/storage.d.ts +4 -10
- package/dist/tools/approval/allowed-tools-provider/storage.d.ts.map +1 -0
- package/dist/tools/approval/allowed-tools-provider/storage.js +43 -0
- package/dist/tools/approval/allowed-tools-provider/types.cjs +16 -0
- package/dist/tools/approval/allowed-tools-provider/types.d.ts.map +1 -0
- package/dist/tools/approval/allowed-tools-provider/types.js +0 -0
- package/dist/tools/approval/session-tool-policy.cjs +269 -0
- package/dist/tools/approval/session-tool-policy.d.ts +43 -0
- package/dist/tools/approval/session-tool-policy.d.ts.map +1 -0
- package/dist/tools/approval/session-tool-policy.js +245 -0
- package/dist/tools/define-tool.js +1 -1
- package/dist/tools/display-types.js +1 -1
- package/dist/tools/error-codes.cjs +3 -3
- package/dist/tools/error-codes.d.ts +4 -4
- package/dist/tools/error-codes.d.ts.map +1 -1
- package/dist/tools/error-codes.js +4 -4
- package/dist/tools/errors.cjs +12 -12
- package/dist/tools/errors.d.ts +6 -6
- package/dist/tools/errors.d.ts.map +1 -1
- package/dist/tools/errors.js +13 -13
- package/dist/tools/index.cjs +3 -0
- package/dist/tools/index.d.ts +3 -0
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +3 -1
- package/dist/tools/pattern-utils.js +1 -1
- package/dist/tools/presentation/tool-presentation.cjs +182 -0
- package/dist/tools/presentation/tool-presentation.d.ts +51 -0
- package/dist/tools/presentation/tool-presentation.d.ts.map +1 -0
- package/dist/tools/presentation/tool-presentation.js +159 -0
- package/dist/tools/presentation.js +1 -1
- package/dist/tools/schemas.cjs +5 -10
- package/dist/tools/schemas.d.ts +1 -4
- package/dist/tools/schemas.d.ts.map +1 -1
- package/dist/tools/schemas.js +6 -11
- package/dist/tools/session-tool-preferences-store.cjs +12 -28
- package/dist/tools/session-tool-preferences-store.d.ts +4 -7
- package/dist/tools/session-tool-preferences-store.d.ts.map +1 -1
- package/dist/tools/session-tool-preferences-store.js +12 -29
- package/dist/tools/tool-call-metadata.js +1 -1
- package/dist/tools/tool-manager.cjs +871 -834
- package/dist/tools/tool-manager.d.ts +94 -96
- package/dist/tools/tool-manager.d.ts.map +1 -1
- package/dist/tools/tool-manager.js +876 -833
- package/dist/tools/types.d.ts +10 -14
- package/dist/tools/types.d.ts.map +1 -1
- package/dist/utils/api-key-resolver.js +1 -1
- package/dist/utils/async-context.js +1 -1
- package/dist/utils/debug.js +1 -1
- package/dist/utils/defer.js +1 -1
- package/dist/utils/env.js +1 -1
- package/dist/utils/error-conversion.js +1 -1
- package/dist/utils/execution-context.js +1 -1
- package/dist/utils/fs-walk.js +1 -1
- package/dist/utils/path.js +1 -1
- package/dist/utils/redactor.js +1 -1
- package/dist/utils/result.js +1 -1
- package/dist/utils/safe-stringify.js +1 -1
- package/dist/utils/schema.js +1 -1
- package/dist/utils/service-initializer.cjs +37 -33
- package/dist/utils/service-initializer.d.ts +9 -5
- package/dist/utils/service-initializer.d.ts.map +1 -1
- package/dist/utils/service-initializer.js +38 -34
- package/dist/utils/zod-schema-converter.js +1 -1
- package/dist/workspace/error-codes.cjs +5 -1
- package/dist/workspace/error-codes.d.ts +4 -0
- package/dist/workspace/error-codes.d.ts.map +1 -1
- package/dist/workspace/error-codes.js +6 -2
- package/dist/workspace/errors.cjs +43 -0
- package/dist/workspace/errors.d.ts +9 -0
- package/dist/workspace/errors.d.ts.map +1 -1
- package/dist/workspace/errors.js +44 -1
- package/dist/workspace/index.d.ts +1 -1
- package/dist/workspace/index.d.ts.map +1 -1
- package/dist/workspace/index.js +1 -1
- package/dist/workspace/manager.cjs +21 -29
- package/dist/workspace/manager.d.ts +6 -6
- package/dist/workspace/manager.d.ts.map +1 -1
- package/dist/workspace/manager.js +22 -30
- package/dist/workspace/types.d.ts +47 -0
- package/dist/workspace/types.d.ts.map +1 -1
- package/package.json +114 -2
- package/dist/approval/session-approval-store.cjs +0 -91
- package/dist/approval/session-approval-store.d.ts +0 -37
- package/dist/approval/session-approval-store.d.ts.map +0 -1
- package/dist/approval/session-approval-store.js +0 -68
- package/dist/session/history/database.cjs +0 -232
- package/dist/session/history/database.d.ts +0 -41
- package/dist/session/history/database.d.ts.map +0 -1
- package/dist/session/history/database.js +0 -209
- package/dist/session/history/factory.d.ts +0 -11
- package/dist/session/history/factory.d.ts.map +0 -1
- package/dist/session/history/factory.js +0 -8
- package/dist/session/history/memory.d.ts +0 -22
- package/dist/session/history/memory.d.ts.map +0 -1
- package/dist/session/history/memory.js +0 -34
- package/dist/session/history/types.d.ts +0 -26
- package/dist/session/history/types.d.ts.map +0 -1
- package/dist/session/message-queue-store.cjs +0 -75
- package/dist/session/message-queue-store.d.ts +0 -16
- package/dist/session/message-queue-store.d.ts.map +0 -1
- package/dist/session/message-queue-store.js +0 -52
- package/dist/storage/storage-manager.cjs +0 -209
- package/dist/storage/storage-manager.d.ts +0 -77
- package/dist/storage/storage-manager.d.ts.map +0 -1
- package/dist/storage/storage-manager.js +0 -186
- package/dist/tools/confirmation/allowed-tools-provider/factory.d.ts.map +0 -1
- package/dist/tools/confirmation/allowed-tools-provider/in-memory.d.ts.map +0 -1
- package/dist/tools/confirmation/allowed-tools-provider/storage.cjs +0 -69
- package/dist/tools/confirmation/allowed-tools-provider/storage.d.ts.map +0 -1
- package/dist/tools/confirmation/allowed-tools-provider/storage.js +0 -46
- package/dist/tools/confirmation/allowed-tools-provider/types.d.ts.map +0 -1
- /package/dist/{session/history → skills}/types.cjs +0 -0
- /package/dist/{session/history → skills}/types.js +0 -0
- /package/dist/{tools/confirmation/allowed-tools-provider → storage/artifacts}/types.cjs +0 -0
- /package/dist/{tools/confirmation/allowed-tools-provider → storage/artifacts}/types.js +0 -0
- /package/dist/tools/{confirmation → approval}/allowed-tools-provider/in-memory.cjs +0 -0
- /package/dist/tools/{confirmation → approval}/allowed-tools-provider/in-memory.d.ts +0 -0
- /package/dist/tools/{confirmation → approval}/allowed-tools-provider/types.d.ts +0 -0
|
@@ -13,7 +13,7 @@ export declare enum ApprovalErrorCode {
|
|
|
13
13
|
APPROVAL_PROVIDER_NOT_CONFIGURED = "approval_provider_not_configured",
|
|
14
14
|
APPROVAL_PROVIDER_ERROR = "approval_provider_error",
|
|
15
15
|
APPROVAL_NOT_FOUND = "approval_not_found",
|
|
16
|
-
APPROVAL_TOOL_APPROVAL_DENIED = "
|
|
16
|
+
APPROVAL_TOOL_APPROVAL_DENIED = "approval_tool_approval_denied",
|
|
17
17
|
APPROVAL_ELICITATION_DENIED = "approval_elicitation_denied",
|
|
18
18
|
APPROVAL_ELICITATION_VALIDATION_FAILED = "approval_elicitation_validation_failed",
|
|
19
19
|
APPROVAL_CONFIG_INVALID = "approval_config_invalid"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"error-codes.d.ts","sourceRoot":"","sources":["../../src/approval/error-codes.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,oBAAY,iBAAiB;IAEzB,wBAAwB,6BAA6B;IACrD,yBAAyB,8BAA8B;IACvD,yBAAyB,8BAA8B;IACvD,uBAAuB,4BAA4B;IAGnD,gBAAgB,qBAAqB;IAGrC,kBAAkB,uBAAuB;IACzC,sBAAsB,2BAA2B;IAGjD,gCAAgC,qCAAqC;IACrE,uBAAuB,4BAA4B;IACnD,kBAAkB,uBAAuB;IAGzC,6BAA6B,
|
|
1
|
+
{"version":3,"file":"error-codes.d.ts","sourceRoot":"","sources":["../../src/approval/error-codes.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,oBAAY,iBAAiB;IAEzB,wBAAwB,6BAA6B;IACrD,yBAAyB,8BAA8B;IACvD,yBAAyB,8BAA8B;IACvD,uBAAuB,4BAA4B;IAGnD,gBAAgB,qBAAqB;IAGrC,kBAAkB,uBAAuB;IACzC,sBAAsB,2BAA2B;IAGjD,gCAAgC,qCAAqC;IACrE,uBAAuB,4BAA4B;IACnD,kBAAkB,uBAAuB;IAGzC,6BAA6B,kCAAkC;IAC/D,2BAA2B,gCAAgC;IAC3D,sCAAsC,2CAA2C;IAGjF,uBAAuB,4BAA4B;CACtD"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import "../chunk-
|
|
1
|
+
import "../chunk-C6A6W6XS.js";
|
|
2
2
|
var ApprovalErrorCode = /* @__PURE__ */ ((ApprovalErrorCode2) => {
|
|
3
3
|
ApprovalErrorCode2["APPROVAL_INVALID_REQUEST"] = "approval_invalid_request";
|
|
4
4
|
ApprovalErrorCode2["APPROVAL_INVALID_RESPONSE"] = "approval_invalid_response";
|
|
@@ -10,7 +10,7 @@ var ApprovalErrorCode = /* @__PURE__ */ ((ApprovalErrorCode2) => {
|
|
|
10
10
|
ApprovalErrorCode2["APPROVAL_PROVIDER_NOT_CONFIGURED"] = "approval_provider_not_configured";
|
|
11
11
|
ApprovalErrorCode2["APPROVAL_PROVIDER_ERROR"] = "approval_provider_error";
|
|
12
12
|
ApprovalErrorCode2["APPROVAL_NOT_FOUND"] = "approval_not_found";
|
|
13
|
-
ApprovalErrorCode2["APPROVAL_TOOL_APPROVAL_DENIED"] = "
|
|
13
|
+
ApprovalErrorCode2["APPROVAL_TOOL_APPROVAL_DENIED"] = "approval_tool_approval_denied";
|
|
14
14
|
ApprovalErrorCode2["APPROVAL_ELICITATION_DENIED"] = "approval_elicitation_denied";
|
|
15
15
|
ApprovalErrorCode2["APPROVAL_ELICITATION_VALIDATION_FAILED"] = "approval_elicitation_validation_failed";
|
|
16
16
|
ApprovalErrorCode2["APPROVAL_CONFIG_INVALID"] = "approval_config_invalid";
|
package/dist/approval/errors.cjs
CHANGED
|
@@ -206,7 +206,7 @@ class ApprovalError {
|
|
|
206
206
|
case "system_denied":
|
|
207
207
|
message = customMessage ?? `Tool execution denied by system policy: ${toolName}`;
|
|
208
208
|
suggestions = [
|
|
209
|
-
"Tool
|
|
209
|
+
"Tool was blocked by host policy",
|
|
210
210
|
"Check permissions.toolPolicies in agent configuration"
|
|
211
211
|
];
|
|
212
212
|
break;
|
|
@@ -219,10 +219,7 @@ class ApprovalError {
|
|
|
219
219
|
break;
|
|
220
220
|
default:
|
|
221
221
|
message = customMessage ?? `Tool execution denied: ${toolName}`;
|
|
222
|
-
suggestions = [
|
|
223
|
-
"Approve the tool in the confirmation dialog",
|
|
224
|
-
"Check tool permissions"
|
|
225
|
-
];
|
|
222
|
+
suggestions = ["Approve the tool in the approval dialog", "Check tool permissions"];
|
|
226
223
|
}
|
|
227
224
|
const context = {
|
|
228
225
|
toolName
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/approval/errors.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/approval/errors.ts"],"names":[],"mappings":"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"}
|
package/dist/approval/errors.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import "../chunk-
|
|
1
|
+
import "../chunk-C6A6W6XS.js";
|
|
2
2
|
import { DextoRuntimeError, ErrorScope, ErrorType } from "../errors/index.js";
|
|
3
3
|
import { ApprovalErrorCode } from "./error-codes.js";
|
|
4
4
|
class ApprovalError {
|
|
@@ -184,7 +184,7 @@ class ApprovalError {
|
|
|
184
184
|
case "system_denied":
|
|
185
185
|
message = customMessage ?? `Tool execution denied by system policy: ${toolName}`;
|
|
186
186
|
suggestions = [
|
|
187
|
-
"Tool
|
|
187
|
+
"Tool was blocked by host policy",
|
|
188
188
|
"Check permissions.toolPolicies in agent configuration"
|
|
189
189
|
];
|
|
190
190
|
break;
|
|
@@ -197,10 +197,7 @@ class ApprovalError {
|
|
|
197
197
|
break;
|
|
198
198
|
default:
|
|
199
199
|
message = customMessage ?? `Tool execution denied: ${toolName}`;
|
|
200
|
-
suggestions = [
|
|
201
|
-
"Approve the tool in the confirmation dialog",
|
|
202
|
-
"Check tool permissions"
|
|
203
|
-
];
|
|
200
|
+
suggestions = ["Approve the tool in the approval dialog", "Check tool permissions"];
|
|
204
201
|
}
|
|
205
202
|
const context = {
|
|
206
203
|
toolName
|
|
@@ -18,13 +18,27 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
18
18
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
19
|
var factory_exports = {};
|
|
20
20
|
__export(factory_exports, {
|
|
21
|
-
createApprovalRequest: () => createApprovalRequest
|
|
21
|
+
createApprovalRequest: () => createApprovalRequest,
|
|
22
|
+
createDeterministicApprovalId: () => createDeterministicApprovalId
|
|
22
23
|
});
|
|
23
24
|
module.exports = __toCommonJS(factory_exports);
|
|
24
25
|
var import_crypto = require("crypto");
|
|
25
|
-
function
|
|
26
|
+
function createDeterministicApprovalId(key) {
|
|
27
|
+
const hash = (0, import_crypto.createHash)("sha256").update(key).digest("hex");
|
|
28
|
+
const variant = (Number.parseInt(hash.slice(16, 17), 16) & 3 | 8).toString(16);
|
|
29
|
+
const uuidHex = `${hash.slice(0, 12)}5${hash.slice(13, 16)}${variant}${hash.slice(17, 32)}`;
|
|
30
|
+
const approvalId = [
|
|
31
|
+
uuidHex.slice(0, 8),
|
|
32
|
+
uuidHex.slice(8, 12),
|
|
33
|
+
uuidHex.slice(12, 16),
|
|
34
|
+
uuidHex.slice(16, 20),
|
|
35
|
+
uuidHex.slice(20, 32)
|
|
36
|
+
].join("-");
|
|
37
|
+
return approvalId;
|
|
38
|
+
}
|
|
39
|
+
function createApprovalRequest(details, approvalId = (0, import_crypto.randomUUID)()) {
|
|
26
40
|
return {
|
|
27
|
-
approvalId
|
|
41
|
+
approvalId,
|
|
28
42
|
type: details.type,
|
|
29
43
|
sessionId: details.sessionId,
|
|
30
44
|
hostRuntime: details.hostRuntime,
|
|
@@ -35,5 +49,6 @@ function createApprovalRequest(details) {
|
|
|
35
49
|
}
|
|
36
50
|
// Annotate the CommonJS export names for ESM import in node:
|
|
37
51
|
0 && (module.exports = {
|
|
38
|
-
createApprovalRequest
|
|
52
|
+
createApprovalRequest,
|
|
53
|
+
createDeterministicApprovalId
|
|
39
54
|
});
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import type { ApprovalRequest, ApprovalRequestDetails } from './types.js';
|
|
2
|
+
type ApprovalId = ApprovalRequest['approvalId'];
|
|
3
|
+
export declare function createDeterministicApprovalId(key: string): ApprovalId;
|
|
2
4
|
/**
|
|
3
5
|
* Factory function to create an approval request with generated ID and timestamp.
|
|
4
6
|
*
|
|
@@ -8,5 +10,6 @@ import type { ApprovalRequest, ApprovalRequestDetails } from './types.js';
|
|
|
8
10
|
* @param details - Simplified approval request details without ID and timestamp
|
|
9
11
|
* @returns A complete ApprovalRequest with generated UUID and current timestamp
|
|
10
12
|
*/
|
|
11
|
-
export declare function createApprovalRequest(details: ApprovalRequestDetails): ApprovalRequest;
|
|
13
|
+
export declare function createApprovalRequest(details: ApprovalRequestDetails, approvalId?: ApprovalId): ApprovalRequest;
|
|
14
|
+
export {};
|
|
12
15
|
//# sourceMappingURL=factory.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../src/approval/factory.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAE1E;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,
|
|
1
|
+
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../src/approval/factory.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAE1E,KAAK,UAAU,GAAG,eAAe,CAAC,YAAY,CAAC,CAAC;AAEhD,wBAAgB,6BAA6B,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAYrE;AAED;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CACjC,OAAO,EAAE,sBAAsB,EAC/B,UAAU,GAAE,UAAyB,GACtC,eAAe,CAUjB"}
|
package/dist/approval/factory.js
CHANGED
|
@@ -1,8 +1,21 @@
|
|
|
1
|
-
import "../chunk-
|
|
2
|
-
import { randomUUID } from "crypto";
|
|
3
|
-
function
|
|
1
|
+
import "../chunk-C6A6W6XS.js";
|
|
2
|
+
import { createHash, randomUUID } from "crypto";
|
|
3
|
+
function createDeterministicApprovalId(key) {
|
|
4
|
+
const hash = createHash("sha256").update(key).digest("hex");
|
|
5
|
+
const variant = (Number.parseInt(hash.slice(16, 17), 16) & 3 | 8).toString(16);
|
|
6
|
+
const uuidHex = `${hash.slice(0, 12)}5${hash.slice(13, 16)}${variant}${hash.slice(17, 32)}`;
|
|
7
|
+
const approvalId = [
|
|
8
|
+
uuidHex.slice(0, 8),
|
|
9
|
+
uuidHex.slice(8, 12),
|
|
10
|
+
uuidHex.slice(12, 16),
|
|
11
|
+
uuidHex.slice(16, 20),
|
|
12
|
+
uuidHex.slice(20, 32)
|
|
13
|
+
].join("-");
|
|
14
|
+
return approvalId;
|
|
15
|
+
}
|
|
16
|
+
function createApprovalRequest(details, approvalId = randomUUID()) {
|
|
4
17
|
return {
|
|
5
|
-
approvalId
|
|
18
|
+
approvalId,
|
|
6
19
|
type: details.type,
|
|
7
20
|
sessionId: details.sessionId,
|
|
8
21
|
hostRuntime: details.hostRuntime,
|
|
@@ -12,5 +25,6 @@ function createApprovalRequest(details) {
|
|
|
12
25
|
};
|
|
13
26
|
}
|
|
14
27
|
export {
|
|
15
|
-
createApprovalRequest
|
|
28
|
+
createApprovalRequest,
|
|
29
|
+
createDeterministicApprovalId
|
|
16
30
|
};
|
package/dist/approval/index.d.ts
CHANGED
|
@@ -6,5 +6,5 @@ export { ApprovalErrorCode } from './error-codes.js';
|
|
|
6
6
|
export { ApprovalError } from './errors.js';
|
|
7
7
|
export type { ApprovalValidationContext, ApprovalTimeoutContext, ApprovalCancellationContext, ElicitationValidationContext, } from './errors.js';
|
|
8
8
|
export { ApprovalManager } from './manager.js';
|
|
9
|
-
export type { ApprovalManagerConfig } from './manager.js';
|
|
9
|
+
export type { ApprovalDecisionInput, ApprovalManagerConfig, ApprovalRecordIdentity, ApprovalResponseRecord, } from './manager.js';
|
|
10
10
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/approval/index.ts"],"names":[],"mappings":"AAKA,YAAY,EACR,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,sBAAsB,EACtB,mBAAmB,EACnB,kBAAkB,EAClB,mBAAmB,EACnB,uBAAuB,EACvB,sBAAsB,EACtB,qBAAqB,EACrB,sBAAsB,EACtB,0BAA0B,EAC1B,mBAAmB,EACnB,oBAAoB,GACvB,MAAM,YAAY,CAAC;AAKpB,OAAO,EACH,cAAc,EACd,iBAAiB,EACjB,cAAc,EACd,YAAY,EACZ,cAAc,EACd,YAAY,GACf,MAAM,YAAY,CAAC;AAGpB,OAAO,EACH,kBAAkB,EAClB,oBAAoB,EACpB,kBAAkB,EAClB,0BAA0B,EAC1B,yBAAyB,EACzB,4BAA4B,EAC5B,yBAAyB,EACzB,yBAAyB,EACzB,wBAAwB,EACxB,2BAA2B,EAC3B,qBAAqB,EACrB,8BAA8B,EAC9B,6BAA6B,EAC7B,gCAAgC,EAChC,0BAA0B,EAC1B,0BAA0B,EAC1B,yBAAyB,EACzB,4BAA4B,EAC5B,sBAAsB,EACtB,4BAA4B,GAC/B,MAAM,cAAc,CAAC;AAEtB,YAAY,EACR,wBAAwB,EACxB,yBAAyB,EACzB,4BAA4B,EAC5B,2BAA2B,EAC3B,8BAA8B,GACjC,MAAM,cAAc,CAAC;AAGtB,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,YAAY,EACR,yBAAyB,EACzB,sBAAsB,EACtB,2BAA2B,EAC3B,4BAA4B,GAC/B,MAAM,aAAa,CAAC;AAGrB,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,YAAY,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/approval/index.ts"],"names":[],"mappings":"AAKA,YAAY,EACR,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,sBAAsB,EACtB,mBAAmB,EACnB,kBAAkB,EAClB,mBAAmB,EACnB,uBAAuB,EACvB,sBAAsB,EACtB,qBAAqB,EACrB,sBAAsB,EACtB,0BAA0B,EAC1B,mBAAmB,EACnB,oBAAoB,GACvB,MAAM,YAAY,CAAC;AAKpB,OAAO,EACH,cAAc,EACd,iBAAiB,EACjB,cAAc,EACd,YAAY,EACZ,cAAc,EACd,YAAY,GACf,MAAM,YAAY,CAAC;AAGpB,OAAO,EACH,kBAAkB,EAClB,oBAAoB,EACpB,kBAAkB,EAClB,0BAA0B,EAC1B,yBAAyB,EACzB,4BAA4B,EAC5B,yBAAyB,EACzB,yBAAyB,EACzB,wBAAwB,EACxB,2BAA2B,EAC3B,qBAAqB,EACrB,8BAA8B,EAC9B,6BAA6B,EAC7B,gCAAgC,EAChC,0BAA0B,EAC1B,0BAA0B,EAC1B,yBAAyB,EACzB,4BAA4B,EAC5B,sBAAsB,EACtB,4BAA4B,GAC/B,MAAM,cAAc,CAAC;AAEtB,YAAY,EACR,wBAAwB,EACxB,yBAAyB,EACzB,4BAA4B,EAC5B,2BAA2B,EAC3B,8BAA8B,GACjC,MAAM,cAAc,CAAC;AAGtB,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,YAAY,EACR,yBAAyB,EACzB,sBAAsB,EACtB,2BAA2B,EAC3B,4BAA4B,GAC/B,MAAM,aAAa,CAAC;AAGrB,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,YAAY,EACR,qBAAqB,EACrB,qBAAqB,EACrB,sBAAsB,EACtB,sBAAsB,GACzB,MAAM,cAAc,CAAC"}
|
package/dist/approval/index.js
CHANGED
|
@@ -33,7 +33,9 @@ __export(manager_exports, {
|
|
|
33
33
|
module.exports = __toCommonJS(manager_exports);
|
|
34
34
|
var import_node_path = __toESM(require("node:path"), 1);
|
|
35
35
|
var import_node_fs = require("node:fs");
|
|
36
|
+
var import_node_util = require("node:util");
|
|
36
37
|
var import_types = require("./types.js");
|
|
38
|
+
var import_schemas = require("./schemas.js");
|
|
37
39
|
var import_factory = require("./factory.js");
|
|
38
40
|
var import_types2 = require("../logger/v2/types.js");
|
|
39
41
|
var import_errors = require("./errors.js");
|
|
@@ -64,8 +66,8 @@ function tryRealpathSyncWithExistingParent(resolvedPath) {
|
|
|
64
66
|
}
|
|
65
67
|
}
|
|
66
68
|
class ApprovalManager {
|
|
67
|
-
constructor(config, logger,
|
|
68
|
-
this.
|
|
69
|
+
constructor(config, logger, approvalStore) {
|
|
70
|
+
this.approvalStore = approvalStore;
|
|
69
71
|
this.config = config;
|
|
70
72
|
this.logger = logger.createChild(import_types2.DextoLogComponent.APPROVAL);
|
|
71
73
|
this.logger.debug(
|
|
@@ -77,6 +79,7 @@ class ApprovalManager {
|
|
|
77
79
|
logger;
|
|
78
80
|
loadedScopes = /* @__PURE__ */ new Set();
|
|
79
81
|
scopeLocks = /* @__PURE__ */ new Map();
|
|
82
|
+
approvalRecordLocks = /* @__PURE__ */ new Map();
|
|
80
83
|
scopes = /* @__PURE__ */ new Map();
|
|
81
84
|
getScopeKey(sessionId) {
|
|
82
85
|
return sessionId ?? GLOBAL_APPROVAL_SCOPE;
|
|
@@ -84,6 +87,9 @@ class ApprovalManager {
|
|
|
84
87
|
getScopeLabel(sessionId) {
|
|
85
88
|
return sessionId ?? "global";
|
|
86
89
|
}
|
|
90
|
+
sessionScope(sessionId) {
|
|
91
|
+
return sessionId === void 0 ? {} : { sessionId };
|
|
92
|
+
}
|
|
87
93
|
getApprovalTimeout(type, timeout) {
|
|
88
94
|
return timeout ?? this.getDefaultTimeout(type);
|
|
89
95
|
}
|
|
@@ -123,6 +129,23 @@ class ApprovalManager {
|
|
|
123
129
|
}
|
|
124
130
|
}
|
|
125
131
|
}
|
|
132
|
+
async runWithApprovalRecordLock(approvalId, fn) {
|
|
133
|
+
const previousLock = this.approvalRecordLocks.get(approvalId) ?? Promise.resolve();
|
|
134
|
+
const currentResult = previousLock.catch(() => {
|
|
135
|
+
}).then(() => fn());
|
|
136
|
+
const currentLock = currentResult.then(
|
|
137
|
+
() => void 0,
|
|
138
|
+
() => void 0
|
|
139
|
+
);
|
|
140
|
+
this.approvalRecordLocks.set(approvalId, currentLock);
|
|
141
|
+
try {
|
|
142
|
+
return await currentResult;
|
|
143
|
+
} finally {
|
|
144
|
+
if (this.approvalRecordLocks.get(approvalId) === currentLock) {
|
|
145
|
+
this.approvalRecordLocks.delete(approvalId);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
}
|
|
126
149
|
snapshotToolPatterns(scopeKey) {
|
|
127
150
|
const snapshot = {};
|
|
128
151
|
for (const [toolName, patterns] of this.getScope(scopeKey).toolPatterns) {
|
|
@@ -144,7 +167,10 @@ class ApprovalManager {
|
|
|
144
167
|
toolPatterns: this.snapshotToolPatterns(scopeKey),
|
|
145
168
|
approvedDirectories: this.snapshotApprovedDirectories(scopeKey)
|
|
146
169
|
};
|
|
147
|
-
await this.
|
|
170
|
+
await this.approvalStore.saveSessionState({
|
|
171
|
+
...this.sessionScope(sessionId),
|
|
172
|
+
state
|
|
173
|
+
});
|
|
148
174
|
}
|
|
149
175
|
hydrateScope(sessionId, state) {
|
|
150
176
|
const scopeKey = this.getScopeKey(sessionId);
|
|
@@ -170,7 +196,7 @@ class ApprovalManager {
|
|
|
170
196
|
if (this.loadedScopes.has(scopeKey)) {
|
|
171
197
|
return;
|
|
172
198
|
}
|
|
173
|
-
const state = await this.
|
|
199
|
+
const state = await this.approvalStore.loadSessionState(this.sessionScope(sessionId));
|
|
174
200
|
this.hydrateScope(sessionId, state);
|
|
175
201
|
this.loadedScopes.add(scopeKey);
|
|
176
202
|
this.logger.debug("Restored persisted approval state", {
|
|
@@ -189,7 +215,7 @@ class ApprovalManager {
|
|
|
189
215
|
const scopeKey = this.getScopeKey(sessionId);
|
|
190
216
|
await this.runWithScopeLock(scopeKey, async () => {
|
|
191
217
|
this.evictSessionState(sessionId);
|
|
192
|
-
await this.
|
|
218
|
+
await this.approvalStore.deleteSessionState(this.sessionScope(sessionId));
|
|
193
219
|
});
|
|
194
220
|
}
|
|
195
221
|
// ==================== Pattern Methods ====================
|
|
@@ -468,14 +494,71 @@ class ApprovalManager {
|
|
|
468
494
|
}
|
|
469
495
|
return details;
|
|
470
496
|
}
|
|
497
|
+
withDefaultTimeout(details) {
|
|
498
|
+
return {
|
|
499
|
+
...details,
|
|
500
|
+
timeout: this.getApprovalTimeout(details.type, details.timeout)
|
|
501
|
+
};
|
|
502
|
+
}
|
|
503
|
+
approvalIdentityKey(identity) {
|
|
504
|
+
return JSON.stringify([
|
|
505
|
+
identity.runId,
|
|
506
|
+
identity.turnId,
|
|
507
|
+
identity.modelStepId,
|
|
508
|
+
identity.toolCallId
|
|
509
|
+
]);
|
|
510
|
+
}
|
|
511
|
+
assertMatchingRecordedRequest(existing, candidate) {
|
|
512
|
+
const existingComparable = {
|
|
513
|
+
type: existing.type,
|
|
514
|
+
sessionId: existing.sessionId,
|
|
515
|
+
hostRuntime: existing.hostRuntime,
|
|
516
|
+
timeout: existing.timeout,
|
|
517
|
+
metadata: existing.metadata
|
|
518
|
+
};
|
|
519
|
+
const candidateComparable = {
|
|
520
|
+
type: candidate.type,
|
|
521
|
+
sessionId: candidate.sessionId,
|
|
522
|
+
hostRuntime: candidate.hostRuntime,
|
|
523
|
+
timeout: candidate.timeout,
|
|
524
|
+
metadata: candidate.metadata
|
|
525
|
+
};
|
|
526
|
+
if (!(0, import_node_util.isDeepStrictEqual)(existingComparable, candidateComparable)) {
|
|
527
|
+
throw import_errors.ApprovalError.invalidRequest(
|
|
528
|
+
"Approval request conflicts with existing approval request",
|
|
529
|
+
{
|
|
530
|
+
approvalId: existing.approvalId,
|
|
531
|
+
type: existing.type
|
|
532
|
+
}
|
|
533
|
+
);
|
|
534
|
+
}
|
|
535
|
+
}
|
|
471
536
|
createResponse(request, response) {
|
|
472
537
|
return {
|
|
538
|
+
status: response.status,
|
|
473
539
|
approvalId: request.approvalId,
|
|
474
540
|
...request.sessionId !== void 0 ? { sessionId: request.sessionId } : {},
|
|
475
541
|
...request.hostRuntime !== void 0 ? { hostRuntime: request.hostRuntime } : {},
|
|
476
|
-
...response
|
|
542
|
+
...response.reason !== void 0 ? { reason: response.reason } : {},
|
|
543
|
+
...response.message !== void 0 ? { message: response.message } : {},
|
|
544
|
+
...response.timeoutMs !== void 0 ? { timeoutMs: response.timeoutMs } : {},
|
|
545
|
+
...response.data !== void 0 ? { data: response.data } : {}
|
|
477
546
|
};
|
|
478
547
|
}
|
|
548
|
+
parseResponseForRequest(request, response) {
|
|
549
|
+
switch (request.type) {
|
|
550
|
+
case import_types.ApprovalType.TOOL_APPROVAL:
|
|
551
|
+
return import_schemas.ToolApprovalResponseSchema.parse(response);
|
|
552
|
+
case import_types.ApprovalType.COMMAND_APPROVAL:
|
|
553
|
+
return import_schemas.CommandApprovalResponseSchema.parse(response);
|
|
554
|
+
case import_types.ApprovalType.ELICITATION:
|
|
555
|
+
return import_schemas.ElicitationResponseSchema.parse(response);
|
|
556
|
+
case import_types.ApprovalType.CUSTOM:
|
|
557
|
+
return import_schemas.CustomApprovalResponseSchema.parse(response);
|
|
558
|
+
case import_types.ApprovalType.DIRECTORY_ACCESS:
|
|
559
|
+
return import_schemas.DirectoryAccessResponseSchema.parse(response);
|
|
560
|
+
}
|
|
561
|
+
}
|
|
479
562
|
getElicitationFormData(response) {
|
|
480
563
|
if (response.data && typeof response.data === "object" && "formData" in response.data && typeof response.data.formData === "object" && response.data.formData !== null) {
|
|
481
564
|
return response.data.formData;
|
|
@@ -520,7 +603,7 @@ class ApprovalManager {
|
|
|
520
603
|
* Request a generic approval
|
|
521
604
|
*/
|
|
522
605
|
async requestApproval(details) {
|
|
523
|
-
const request = (0, import_factory.createApprovalRequest)(details);
|
|
606
|
+
const request = (0, import_factory.createApprovalRequest)(this.withDefaultTimeout(details));
|
|
524
607
|
if (request.type === import_types.ApprovalType.ELICITATION && !this.config.elicitation.enabled) {
|
|
525
608
|
throw import_errors.ApprovalError.invalidConfig(
|
|
526
609
|
"Elicitation is disabled. Enable elicitation in your agent configuration to use the ask_user tool or MCP server elicitations."
|
|
@@ -528,8 +611,77 @@ class ApprovalManager {
|
|
|
528
611
|
}
|
|
529
612
|
return this.handleApproval(request);
|
|
530
613
|
}
|
|
614
|
+
async recordApprovalRequest(details, identity) {
|
|
615
|
+
if (details.type === import_types.ApprovalType.ELICITATION && !this.config.elicitation.enabled) {
|
|
616
|
+
throw import_errors.ApprovalError.invalidConfig(
|
|
617
|
+
"Elicitation is disabled. Enable elicitation in your agent configuration to use the ask_user tool or MCP server elicitations."
|
|
618
|
+
);
|
|
619
|
+
}
|
|
620
|
+
const approvalId = (0, import_factory.createDeterministicApprovalId)(this.approvalIdentityKey(identity));
|
|
621
|
+
const request = (0, import_factory.createApprovalRequest)(this.withDefaultTimeout(details), approvalId);
|
|
622
|
+
return this.runWithApprovalRecordLock(approvalId, async () => {
|
|
623
|
+
const existing = await this.approvalStore.getRequest({ approvalId });
|
|
624
|
+
if (existing) {
|
|
625
|
+
this.assertMatchingRecordedRequest(existing, request);
|
|
626
|
+
return existing;
|
|
627
|
+
}
|
|
628
|
+
const recorded = await this.approvalStore.createRequest({ request });
|
|
629
|
+
this.assertMatchingRecordedRequest(recorded, request);
|
|
630
|
+
return recorded;
|
|
631
|
+
});
|
|
632
|
+
}
|
|
633
|
+
async recordApprovalResponse(decision) {
|
|
634
|
+
const record = await this.recordApprovalResponseRecord(decision);
|
|
635
|
+
return record.response;
|
|
636
|
+
}
|
|
637
|
+
async recordApprovalResponseRecord(decision, expectedRequest) {
|
|
638
|
+
return this.runWithApprovalRecordLock(decision.approvalId, async () => {
|
|
639
|
+
const request = await this.approvalStore.getRequest({
|
|
640
|
+
approvalId: decision.approvalId
|
|
641
|
+
});
|
|
642
|
+
if (!request) {
|
|
643
|
+
throw import_errors.ApprovalError.invalidResponse("Approval response has no recorded request", {
|
|
644
|
+
approvalId: decision.approvalId
|
|
645
|
+
});
|
|
646
|
+
}
|
|
647
|
+
if (expectedRequest !== void 0) {
|
|
648
|
+
this.assertMatchingRecordedRequest(request, expectedRequest);
|
|
649
|
+
}
|
|
650
|
+
const response = this.parseResponseForRequest(
|
|
651
|
+
request,
|
|
652
|
+
this.createResponse(request, decision)
|
|
653
|
+
);
|
|
654
|
+
const existing = await this.approvalStore.getResponse({
|
|
655
|
+
approvalId: decision.approvalId
|
|
656
|
+
});
|
|
657
|
+
if (existing) {
|
|
658
|
+
if (!(0, import_node_util.isDeepStrictEqual)(existing, response)) {
|
|
659
|
+
throw import_errors.ApprovalError.invalidResponse(
|
|
660
|
+
"Approval response conflicts with existing approval response",
|
|
661
|
+
{
|
|
662
|
+
approvalId: decision.approvalId
|
|
663
|
+
}
|
|
664
|
+
);
|
|
665
|
+
}
|
|
666
|
+
return { response: existing, status: "replayed" };
|
|
667
|
+
}
|
|
668
|
+
const record = await this.approvalStore.saveResponse({ response });
|
|
669
|
+
if (!(0, import_node_util.isDeepStrictEqual)(record.response, response)) {
|
|
670
|
+
throw import_errors.ApprovalError.invalidResponse(
|
|
671
|
+
"Approval response conflicts with existing approval response",
|
|
672
|
+
{
|
|
673
|
+
approvalId: decision.approvalId
|
|
674
|
+
}
|
|
675
|
+
);
|
|
676
|
+
}
|
|
677
|
+
return record;
|
|
678
|
+
});
|
|
679
|
+
}
|
|
680
|
+
async requestApprovalDecision(request) {
|
|
681
|
+
return this.handleApproval(request);
|
|
682
|
+
}
|
|
531
683
|
/**
|
|
532
|
-
* Handle approval requests (tool approval, elicitation, command
|
|
684
|
+
* Handle approval requests (tool approval, elicitation, command approval, directory access, custom)
|
|
533
685
|
* @private
|
|
534
686
|
*/
|
|
535
687
|
async handleApproval(request) {
|
|
@@ -549,16 +701,6 @@ class ApprovalManager {
|
|
|
549
701
|
status: import_types.ApprovalStatus.APPROVED
|
|
550
702
|
});
|
|
551
703
|
}
|
|
552
|
-
if (mode === "auto-deny") {
|
|
553
|
-
this.logger.info(
|
|
554
|
-
`Auto-deny approval '${request.type}', approvalId: ${request.approvalId}`
|
|
555
|
-
);
|
|
556
|
-
return this.createResponse(request, {
|
|
557
|
-
status: import_types.ApprovalStatus.DENIED,
|
|
558
|
-
reason: import_types.DenialReason.SYSTEM_DENIED,
|
|
559
|
-
message: `Approval automatically denied by system policy (auto-deny mode)`
|
|
560
|
-
});
|
|
561
|
-
}
|
|
562
704
|
const handler = this.ensureHandler();
|
|
563
705
|
this.logger.info(
|
|
564
706
|
`Manual approval '${request.type}' requested, approvalId: ${request.approvalId}, sessionId: ${request.sessionId ?? "global"}`
|
|
@@ -570,7 +712,7 @@ class ApprovalManager {
|
|
|
570
712
|
* Convenience method for tool execution approval
|
|
571
713
|
*
|
|
572
714
|
* TODO: Make sessionId required once all callers are updated to pass it
|
|
573
|
-
* Tool
|
|
715
|
+
* Tool approvals always happen in session context during LLM execution
|
|
574
716
|
*/
|
|
575
717
|
async requestToolApproval(metadata) {
|
|
576
718
|
const { sessionId, hostRuntime, timeout, ...toolMetadata } = metadata;
|
|
@@ -585,19 +727,19 @@ class ApprovalManager {
|
|
|
585
727
|
);
|
|
586
728
|
}
|
|
587
729
|
/**
|
|
588
|
-
* Request command
|
|
730
|
+
* Request command approval
|
|
589
731
|
* Convenience method for dangerous command execution within an already-approved tool
|
|
590
732
|
*
|
|
591
733
|
* This is different from tool approval - it's for per-command approval
|
|
592
734
|
* of dangerous operations (like rm, git push) within tools that are already approved.
|
|
593
735
|
*
|
|
594
736
|
* TODO: Make sessionId required once all callers are updated to pass it
|
|
595
|
-
* Command
|
|
737
|
+
* Command approvals always happen during tool execution which has session context
|
|
596
738
|
*
|
|
597
739
|
* @example
|
|
598
740
|
* ```typescript
|
|
599
741
|
* // bash_exec tool is approved, but dangerous commands still require approval
|
|
600
|
-
* const response = await manager.
|
|
742
|
+
* const response = await manager.requestCommandApproval({
|
|
601
743
|
* toolName: 'bash_exec',
|
|
602
744
|
* command: 'rm -rf /important',
|
|
603
745
|
* originalCommand: 'rm -rf /important',
|
|
@@ -605,11 +747,11 @@ class ApprovalManager {
|
|
|
605
747
|
* });
|
|
606
748
|
* ```
|
|
607
749
|
*/
|
|
608
|
-
async
|
|
750
|
+
async requestCommandApproval(metadata) {
|
|
609
751
|
const { sessionId, hostRuntime, timeout, ...commandMetadata } = metadata;
|
|
610
752
|
return this.requestApproval(
|
|
611
753
|
this.createApprovalDetails(
|
|
612
|
-
import_types.ApprovalType.
|
|
754
|
+
import_types.ApprovalType.COMMAND_APPROVAL,
|
|
613
755
|
commandMetadata,
|
|
614
756
|
sessionId,
|
|
615
757
|
hostRuntime,
|
|
@@ -732,7 +874,7 @@ class ApprovalManager {
|
|
|
732
874
|
* Set the approval handler for manual approval mode.
|
|
733
875
|
*
|
|
734
876
|
* The handler will be called for:
|
|
735
|
-
* - Tool
|
|
877
|
+
* - Tool approval requests when permissions.mode is 'manual'
|
|
736
878
|
* - All elicitation requests (when elicitation is enabled, regardless of permissions.mode)
|
|
737
879
|
*
|
|
738
880
|
* A handler must be set before processing requests if:
|
|
@@ -769,7 +911,7 @@ class ApprovalManager {
|
|
|
769
911
|
ensureHandler() {
|
|
770
912
|
if (!this.handler) {
|
|
771
913
|
throw import_errors.ApprovalError.invalidConfig(
|
|
772
|
-
'An approval handler is required but not configured.\nHandlers are required for:\n \u2022 manual tool approval mode\n \u2022 all elicitation requests (when elicitation is enabled)\nEither:\n \u2022 set permissions.mode to "auto-approve"
|
|
914
|
+
'An approval handler is required but not configured.\nHandlers are required for:\n \u2022 manual tool approval mode\n \u2022 all elicitation requests (when elicitation is enabled)\nEither:\n \u2022 set permissions.mode to "auto-approve", or\n \u2022 disable elicitation (set elicitation.enabled: false), or\n \u2022 call agent.setApprovalHandler(...) before processing requests.'
|
|
773
915
|
);
|
|
774
916
|
}
|
|
775
917
|
return this.handler;
|