@machina.ai/cell-cli-core 1.16.0-rc2 → 1.19.4-rc1
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/package.json +6 -4
- package/dist/src/agents/codebase-investigator.js +1 -1
- package/dist/src/agents/executor.js +12 -21
- package/dist/src/agents/executor.js.map +1 -1
- package/dist/src/agents/executor.test.js +53 -57
- package/dist/src/agents/executor.test.js.map +1 -1
- package/dist/src/agents/registry.d.ts +4 -0
- package/dist/src/agents/registry.js +23 -0
- package/dist/src/agents/registry.js.map +1 -1
- package/dist/src/agents/registry.test.js +30 -16
- package/dist/src/agents/registry.test.js.map +1 -1
- package/dist/src/availability/modelAvailabilityService.d.ts +34 -0
- package/dist/src/availability/modelAvailabilityService.js +84 -0
- package/dist/src/availability/modelAvailabilityService.js.map +1 -0
- package/dist/src/availability/modelAvailabilityService.test.d.ts +6 -0
- package/dist/src/availability/modelAvailabilityService.test.js +140 -0
- package/dist/src/availability/modelAvailabilityService.test.js.map +1 -0
- package/dist/src/availability/modelPolicy.d.ts +42 -0
- package/dist/src/availability/modelPolicy.js +7 -0
- package/dist/src/availability/modelPolicy.js.map +1 -0
- package/dist/src/availability/policyCatalog.d.ts +20 -0
- package/dist/src/availability/policyCatalog.js +83 -0
- package/dist/src/availability/policyCatalog.js.map +1 -0
- package/dist/src/availability/policyCatalog.test.d.ts +6 -0
- package/dist/src/availability/policyCatalog.test.js +70 -0
- package/dist/src/availability/policyCatalog.test.js.map +1 -0
- package/dist/src/code_assist/codeAssist.js +1 -1
- package/dist/src/code_assist/codeAssist.test.js +3 -3
- package/dist/src/code_assist/oauth-credential-storage.test.js +1 -0
- package/dist/src/code_assist/oauth-credential-storage.test.js.map +1 -1
- package/dist/src/code_assist/oauth2.js +106 -53
- package/dist/src/code_assist/oauth2.js.map +1 -1
- package/dist/src/code_assist/oauth2.test.js +25 -12
- package/dist/src/code_assist/oauth2.test.js.map +1 -1
- package/dist/src/config/config.d.ts +18 -5
- package/dist/src/config/config.js +51 -19
- package/dist/src/config/config.js.map +1 -1
- package/dist/src/config/config.test.js +14 -79
- package/dist/src/config/config.test.js.map +1 -1
- package/dist/src/config/defaultModelConfigs.js +56 -4
- package/dist/src/config/defaultModelConfigs.js.map +1 -1
- package/dist/src/confirmation-bus/message-bus.d.ts +6 -0
- package/dist/src/confirmation-bus/message-bus.js +63 -2
- package/dist/src/confirmation-bus/message-bus.js.map +1 -1
- package/dist/src/confirmation-bus/types.d.ts +25 -2
- package/dist/src/confirmation-bus/types.js +3 -0
- package/dist/src/confirmation-bus/types.js.map +1 -1
- package/dist/src/core/AuthenticatedContentGenerator.d.ts +20 -0
- package/dist/src/core/AuthenticatedContentGenerator.js +115 -0
- package/dist/src/core/AuthenticatedContentGenerator.js.map +1 -0
- package/dist/src/core/baseLlmClient.d.ts +27 -1
- package/dist/src/core/baseLlmClient.js +66 -45
- package/dist/src/core/baseLlmClient.js.map +1 -1
- package/dist/src/core/baseLlmClient.test.js +94 -6
- package/dist/src/core/baseLlmClient.test.js.map +1 -1
- package/dist/src/core/client.d.ts +1 -2
- package/dist/src/core/client.js +89 -29
- package/dist/src/core/client.js.map +1 -1
- package/dist/src/core/client.test.js +82 -41
- package/dist/src/core/client.test.js.map +1 -1
- package/dist/src/core/clientHookTriggers.d.ts +36 -0
- package/dist/src/core/clientHookTriggers.js +76 -0
- package/dist/src/core/clientHookTriggers.js.map +1 -0
- package/dist/src/core/contentGenerator.d.ts +2 -1
- package/dist/src/core/contentGenerator.js +12 -5
- package/dist/src/core/contentGenerator.js.map +1 -1
- package/dist/src/core/contentGenerator.test.js +119 -1
- package/dist/src/core/contentGenerator.test.js.map +1 -1
- package/dist/src/core/coreToolScheduler.d.ts +0 -2
- package/dist/src/core/coreToolScheduler.js +1 -3
- package/dist/src/core/coreToolScheduler.js.map +1 -1
- package/dist/src/core/coreToolScheduler.test.js +3 -18
- package/dist/src/core/coreToolScheduler.test.js.map +1 -1
- package/dist/src/core/geminiChat.d.ts +10 -5
- package/dist/src/core/geminiChat.js +57 -22
- package/dist/src/core/geminiChat.js.map +1 -1
- package/dist/src/core/geminiChat.test.js +188 -55
- package/dist/src/core/geminiChat.test.js.map +1 -1
- package/dist/src/core/logger.test.js +12 -11
- package/dist/src/core/logger.test.js.map +1 -1
- package/dist/src/core/nonInteractiveToolExecutor.js +6 -2
- package/dist/src/core/nonInteractiveToolExecutor.js.map +1 -1
- package/dist/src/core/nonInteractiveToolExecutor.test.js +10 -2
- package/dist/src/core/nonInteractiveToolExecutor.test.js.map +1 -1
- package/dist/src/core/prompts.js +21 -6
- package/dist/src/core/prompts.js.map +1 -1
- package/dist/src/core/prompts.test.js +79 -93
- package/dist/src/core/prompts.test.js.map +1 -1
- package/dist/src/core/turn.d.ts +14 -3
- package/dist/src/core/turn.js +13 -7
- package/dist/src/core/turn.js.map +1 -1
- package/dist/src/core/turn.test.js +73 -139
- package/dist/src/core/turn.test.js.map +1 -1
- package/dist/src/fallback/handler.js +10 -5
- package/dist/src/fallback/handler.js.map +1 -1
- package/dist/src/fallback/handler.test.js +79 -17
- package/dist/src/fallback/handler.test.js.map +1 -1
- package/dist/src/generated/git-commit.d.ts +2 -2
- package/dist/src/generated/git-commit.js +2 -2
- package/dist/src/hooks/hookEventHandler.d.ts +109 -0
- package/dist/src/hooks/hookEventHandler.js +486 -0
- package/dist/src/hooks/hookEventHandler.js.map +1 -0
- package/dist/src/hooks/hookEventHandler.test.d.ts +6 -0
- package/dist/src/hooks/hookEventHandler.test.js +384 -0
- package/dist/src/hooks/hookEventHandler.test.js.map +1 -0
- package/dist/src/hooks/hookSystem.d.ts +48 -0
- package/dist/src/hooks/hookSystem.js +83 -0
- package/dist/src/hooks/hookSystem.js.map +1 -0
- package/dist/src/hooks/hookSystem.test.d.ts +6 -0
- package/dist/src/hooks/hookSystem.test.js +213 -0
- package/dist/src/hooks/hookSystem.test.js.map +1 -0
- package/dist/src/hooks/index.d.ts +15 -0
- package/dist/src/hooks/index.js +15 -0
- package/dist/src/hooks/index.js.map +1 -0
- package/dist/src/index.d.ts +4 -0
- package/dist/src/index.js +6 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/mcp/oauth-provider.test.js +1 -0
- package/dist/src/mcp/oauth-provider.test.js.map +1 -1
- package/dist/src/policy/policy-engine.d.ts +17 -1
- package/dist/src/policy/policy-engine.js +90 -1
- package/dist/src/policy/policy-engine.js.map +1 -1
- package/dist/src/policy/policy-engine.test.js +222 -0
- package/dist/src/policy/policy-engine.test.js.map +1 -1
- package/dist/src/policy/types.d.ts +51 -1
- package/dist/src/policy/types.js +21 -0
- package/dist/src/policy/types.js.map +1 -1
- package/dist/src/prompts/mcp-prompts.test.js +0 -1
- package/dist/src/prompts/mcp-prompts.test.js.map +1 -1
- package/dist/src/prompts/prompt-registry.test.js +0 -15
- package/dist/src/prompts/prompt-registry.test.js.map +1 -1
- package/dist/src/routing/modelRouterService.js +1 -1
- package/dist/src/routing/modelRouterService.js.map +1 -1
- package/dist/src/routing/strategies/classifierStrategy.test.js +4 -3
- package/dist/src/routing/strategies/classifierStrategy.test.js.map +1 -1
- package/dist/src/services/chatCompressionService.d.ts +2 -1
- package/dist/src/services/chatCompressionService.js +23 -7
- package/dist/src/services/chatCompressionService.js.map +1 -1
- package/dist/src/services/chatCompressionService.test.js +27 -32
- package/dist/src/services/chatCompressionService.test.js.map +1 -1
- package/dist/src/services/chatRecordingService.d.ts +1 -1
- package/dist/src/services/gitService.js +3 -1
- package/dist/src/services/gitService.js.map +1 -1
- package/dist/src/services/gitService.test.js +10 -0
- package/dist/src/services/gitService.test.js.map +1 -1
- package/dist/src/services/modelConfig.integration.test.js +34 -0
- package/dist/src/services/modelConfig.integration.test.js.map +1 -1
- package/dist/src/services/modelConfigService.d.ts +3 -0
- package/dist/src/services/modelConfigService.js +12 -3
- package/dist/src/services/modelConfigService.js.map +1 -1
- package/dist/src/services/modelConfigService.test.js +133 -0
- package/dist/src/services/modelConfigService.test.js.map +1 -1
- package/dist/src/services/shellExecutionService.d.ts +2 -0
- package/dist/src/services/shellExecutionService.js +35 -6
- package/dist/src/services/shellExecutionService.js.map +1 -1
- package/dist/src/services/shellExecutionService.test.js +78 -1
- package/dist/src/services/shellExecutionService.test.js.map +1 -1
- package/dist/src/services/test-data/resolved-aliases.golden.json +57 -4
- package/dist/src/telemetry/activity-monitor.test.js +4 -1
- package/dist/src/telemetry/activity-monitor.test.js.map +1 -1
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.d.ts +2 -1
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.js +97 -51
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.js.map +1 -1
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js +24 -16
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js.map +1 -1
- package/dist/src/telemetry/clearcut-logger/event-metadata-key.d.ts +2 -0
- package/dist/src/telemetry/clearcut-logger/event-metadata-key.js +5 -1
- package/dist/src/telemetry/clearcut-logger/event-metadata-key.js.map +1 -1
- package/dist/src/telemetry/loggers.d.ts +2 -1
- package/dist/src/telemetry/loggers.js +14 -3
- package/dist/src/telemetry/loggers.js.map +1 -1
- package/dist/src/telemetry/loggers.test.js +2 -5
- package/dist/src/telemetry/loggers.test.js.map +1 -1
- package/dist/src/telemetry/metrics.d.ts +26 -8
- package/dist/src/telemetry/metrics.js +37 -11
- package/dist/src/telemetry/metrics.js.map +1 -1
- package/dist/src/telemetry/metrics.test.js +61 -39
- package/dist/src/telemetry/metrics.test.js.map +1 -1
- package/dist/src/telemetry/sanitize.d.ts +25 -0
- package/dist/src/telemetry/sanitize.js +48 -0
- package/dist/src/telemetry/sanitize.js.map +1 -0
- package/dist/src/telemetry/sanitize.test.d.ts +6 -0
- package/dist/src/telemetry/sanitize.test.js +279 -0
- package/dist/src/telemetry/sanitize.test.js.map +1 -0
- package/dist/src/telemetry/semantic.js +1 -1
- package/dist/src/telemetry/semantic.js.map +1 -1
- package/dist/src/telemetry/types.d.ts +19 -0
- package/dist/src/telemetry/types.js +65 -0
- package/dist/src/telemetry/types.js.map +1 -1
- package/dist/src/test-utils/config.d.ts +1 -1
- package/dist/src/test-utils/config.js +1 -1
- package/dist/src/test-utils/mock-message-bus.d.ts +60 -0
- package/dist/src/test-utils/mock-message-bus.js +131 -0
- package/dist/src/test-utils/mock-message-bus.js.map +1 -0
- package/dist/src/test-utils/mock-tool.js +1 -1
- package/dist/src/test-utils/mock-tool.js.map +1 -1
- package/dist/src/tools/edit.test.js +203 -200
- package/dist/src/tools/edit.test.js.map +1 -1
- package/dist/src/tools/mcp-client.d.ts +4 -2
- package/dist/src/tools/mcp-client.js +226 -114
- package/dist/src/tools/mcp-client.js.map +1 -1
- package/dist/src/tools/mcp-client.test.js +128 -54
- package/dist/src/tools/mcp-client.test.js.map +1 -1
- package/dist/src/tools/mcp-tool.test.js +186 -273
- package/dist/src/tools/mcp-tool.test.js.map +1 -1
- package/dist/src/tools/modifiable-tool.d.ts +1 -1
- package/dist/src/tools/modifiable-tool.js +2 -2
- package/dist/src/tools/modifiable-tool.js.map +1 -1
- package/dist/src/tools/modifiable-tool.test.js +12 -11
- package/dist/src/tools/modifiable-tool.test.js.map +1 -1
- package/dist/src/tools/ripGrep.test.js +84 -126
- package/dist/src/tools/ripGrep.test.js.map +1 -1
- package/dist/src/tools/smart-edit.test.js +93 -112
- package/dist/src/tools/smart-edit.test.js.map +1 -1
- package/dist/src/tools/tool-registry.test.js +59 -90
- package/dist/src/tools/tool-registry.test.js.map +1 -1
- package/dist/src/tools/web-fetch.test.js +121 -179
- package/dist/src/tools/web-fetch.test.js.map +1 -1
- package/dist/src/tools/write-file.test.js +105 -116
- package/dist/src/tools/write-file.test.js.map +1 -1
- package/dist/src/tools/write-todos.d.ts +1 -1
- package/dist/src/tools/write-todos.js +1 -1
- package/dist/src/utils/customHeaderUtils.d.ts +9 -0
- package/dist/src/utils/customHeaderUtils.js +34 -0
- package/dist/src/utils/customHeaderUtils.js.map +1 -0
- package/dist/src/utils/customHeaderUtils.test.d.ts +6 -0
- package/dist/src/utils/customHeaderUtils.test.js +77 -0
- package/dist/src/utils/customHeaderUtils.test.js.map +1 -0
- package/dist/src/utils/debugLogger.test.js +27 -25
- package/dist/src/utils/debugLogger.test.js.map +1 -1
- package/dist/src/utils/editor.d.ts +1 -1
- package/dist/src/utils/editor.js +3 -2
- package/dist/src/utils/editor.js.map +1 -1
- package/dist/src/utils/editor.test.js +7 -46
- package/dist/src/utils/editor.test.js.map +1 -1
- package/dist/src/utils/events.d.ts +33 -3
- package/dist/src/utils/events.js +35 -15
- package/dist/src/utils/events.js.map +1 -1
- package/dist/src/utils/events.test.js +86 -5
- package/dist/src/utils/events.test.js.map +1 -1
- package/dist/src/utils/filesearch/fileSearch.js +1 -1
- package/dist/src/utils/filesearch/fileSearch.js.map +1 -1
- package/dist/src/utils/installationManager.test.js +2 -1
- package/dist/src/utils/installationManager.test.js.map +1 -1
- package/dist/src/utils/llm-edit-fixer.test.js +2 -1
- package/dist/src/utils/llm-edit-fixer.test.js.map +1 -1
- package/dist/src/utils/memoryDiscovery.test.js +3 -2
- package/dist/src/utils/memoryDiscovery.test.js.map +1 -1
- package/dist/src/utils/memoryImportProcessor.js +1 -1
- package/dist/src/utils/memoryImportProcessor.js.map +1 -1
- package/dist/src/utils/memoryImportProcessor.test.js +8 -14
- package/dist/src/utils/memoryImportProcessor.test.js.map +1 -1
- package/dist/src/utils/nextSpeakerChecker.test.js +3 -1
- package/dist/src/utils/nextSpeakerChecker.test.js.map +1 -1
- package/dist/src/utils/package.d.ts +14 -0
- package/dist/src/utils/package.js +15 -2
- package/dist/src/utils/package.js.map +1 -1
- package/dist/src/utils/schemaValidator.d.ts +1 -1
- package/dist/src/utils/schemaValidator.js +1 -1
- package/dist/src/utils/shell-utils.js +1 -1
- package/dist/src/utils/stdio.d.ts +32 -0
- package/dist/src/utils/stdio.js +85 -0
- package/dist/src/utils/stdio.js.map +1 -0
- package/dist/src/utils/stdio.test.d.ts +6 -0
- package/dist/src/utils/stdio.test.js +47 -0
- package/dist/src/utils/stdio.test.js.map +1 -0
- package/dist/src/utils/systemEncoding.test.js +2 -1
- package/dist/src/utils/systemEncoding.test.js.map +1 -1
- package/dist/src/utils/terminal.d.ts +14 -0
- package/dist/src/utils/terminal.js +38 -0
- package/dist/src/utils/terminal.js.map +1 -0
- package/dist/src/utils/userAccountManager.test.js +7 -6
- package/dist/src/utils/userAccountManager.test.js.map +1 -1
- package/dist/src/utils/workspaceContext.test.js +5 -4
- package/dist/src/utils/workspaceContext.test.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +6 -4
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
import {} from '@google/genai';
|
|
7
|
-
import { PolicyDecision, } from './types.js';
|
|
7
|
+
import { PolicyDecision, getHookSource, } from './types.js';
|
|
8
8
|
import { stableStringify } from './stable-stringify.js';
|
|
9
9
|
import { debugLogger } from '../utils/debugLogger.js';
|
|
10
10
|
import { SafetyCheckDecision } from '../safety/protocol.js';
|
|
@@ -44,18 +44,36 @@ function ruleMatches(rule, toolCall, stringifiedArgs, serverName) {
|
|
|
44
44
|
}
|
|
45
45
|
return true;
|
|
46
46
|
}
|
|
47
|
+
/**
|
|
48
|
+
* Check if a hook checker rule matches a hook execution context.
|
|
49
|
+
*/
|
|
50
|
+
function hookCheckerMatches(rule, context) {
|
|
51
|
+
// Check event name if specified
|
|
52
|
+
if (rule.eventName && rule.eventName !== context.eventName) {
|
|
53
|
+
return false;
|
|
54
|
+
}
|
|
55
|
+
// Check hook source if specified
|
|
56
|
+
if (rule.hookSource && rule.hookSource !== context.hookSource) {
|
|
57
|
+
return false;
|
|
58
|
+
}
|
|
59
|
+
return true;
|
|
60
|
+
}
|
|
47
61
|
export class PolicyEngine {
|
|
48
62
|
rules;
|
|
49
63
|
checkers;
|
|
64
|
+
hookCheckers;
|
|
50
65
|
defaultDecision;
|
|
51
66
|
nonInteractive;
|
|
52
67
|
checkerRunner;
|
|
68
|
+
allowHooks;
|
|
53
69
|
constructor(config = {}, checkerRunner) {
|
|
54
70
|
this.rules = (config.rules ?? []).sort((a, b) => (b.priority ?? 0) - (a.priority ?? 0));
|
|
55
71
|
this.checkers = (config.checkers ?? []).sort((a, b) => (b.priority ?? 0) - (a.priority ?? 0));
|
|
72
|
+
this.hookCheckers = (config.hookCheckers ?? []).sort((a, b) => (b.priority ?? 0) - (a.priority ?? 0));
|
|
56
73
|
this.defaultDecision = config.defaultDecision ?? PolicyDecision.ASK_USER;
|
|
57
74
|
this.nonInteractive = config.nonInteractive ?? false;
|
|
58
75
|
this.checkerRunner = checkerRunner;
|
|
76
|
+
this.allowHooks = config.allowHooks ?? true;
|
|
59
77
|
}
|
|
60
78
|
/**
|
|
61
79
|
* Check if a tool call is allowed based on the configured policies.
|
|
@@ -147,6 +165,77 @@ export class PolicyEngine {
|
|
|
147
165
|
getCheckers() {
|
|
148
166
|
return this.checkers;
|
|
149
167
|
}
|
|
168
|
+
/**
|
|
169
|
+
* Add a new hook checker to the policy engine.
|
|
170
|
+
*/
|
|
171
|
+
addHookChecker(checker) {
|
|
172
|
+
this.hookCheckers.push(checker);
|
|
173
|
+
this.hookCheckers.sort((a, b) => (b.priority ?? 0) - (a.priority ?? 0));
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* Get all current hook checkers.
|
|
177
|
+
*/
|
|
178
|
+
getHookCheckers() {
|
|
179
|
+
return this.hookCheckers;
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* Check if a hook execution is allowed based on the configured policies.
|
|
183
|
+
* Runs hook-specific safety checkers if configured.
|
|
184
|
+
*/
|
|
185
|
+
async checkHook(request) {
|
|
186
|
+
// If hooks are globally disabled, deny all hook executions
|
|
187
|
+
if (!this.allowHooks) {
|
|
188
|
+
return PolicyDecision.DENY;
|
|
189
|
+
}
|
|
190
|
+
const context = 'input' in request
|
|
191
|
+
? {
|
|
192
|
+
eventName: request.eventName,
|
|
193
|
+
hookSource: getHookSource(request.input),
|
|
194
|
+
trustedFolder: typeof request.input['trusted_folder'] === 'boolean'
|
|
195
|
+
? request.input['trusted_folder']
|
|
196
|
+
: undefined,
|
|
197
|
+
}
|
|
198
|
+
: request;
|
|
199
|
+
// In untrusted folders, deny project-level hooks
|
|
200
|
+
if (context.trustedFolder === false && context.hookSource === 'project') {
|
|
201
|
+
return PolicyDecision.DENY;
|
|
202
|
+
}
|
|
203
|
+
// Run hook-specific safety checkers if configured
|
|
204
|
+
if (this.checkerRunner && this.hookCheckers.length > 0) {
|
|
205
|
+
for (const checkerRule of this.hookCheckers) {
|
|
206
|
+
if (hookCheckerMatches(checkerRule, context)) {
|
|
207
|
+
debugLogger.debug(`[PolicyEngine.checkHook] Running hook checker: ${checkerRule.checker.name} for event: ${context.eventName}`);
|
|
208
|
+
try {
|
|
209
|
+
// Create a synthetic function call for the checker runner
|
|
210
|
+
// This allows reusing the existing checker infrastructure
|
|
211
|
+
const syntheticCall = {
|
|
212
|
+
name: `hook:${context.eventName}`,
|
|
213
|
+
args: {
|
|
214
|
+
hookSource: context.hookSource,
|
|
215
|
+
trustedFolder: context.trustedFolder,
|
|
216
|
+
},
|
|
217
|
+
};
|
|
218
|
+
const result = await this.checkerRunner.runChecker(syntheticCall, checkerRule.checker);
|
|
219
|
+
if (result.decision === SafetyCheckDecision.DENY) {
|
|
220
|
+
debugLogger.debug(`[PolicyEngine.checkHook] Hook checker denied: ${result.reason}`);
|
|
221
|
+
return PolicyDecision.DENY;
|
|
222
|
+
}
|
|
223
|
+
else if (result.decision === SafetyCheckDecision.ASK_USER) {
|
|
224
|
+
debugLogger.debug(`[PolicyEngine.checkHook] Hook checker requested ASK_USER: ${result.reason}`);
|
|
225
|
+
// For hooks, ASK_USER is treated as DENY in non-interactive mode
|
|
226
|
+
return this.applyNonInteractiveMode(PolicyDecision.ASK_USER);
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
catch (error) {
|
|
230
|
+
debugLogger.debug(`[PolicyEngine.checkHook] Hook checker failed: ${error}`);
|
|
231
|
+
return PolicyDecision.DENY;
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
// Default: Allow hooks
|
|
237
|
+
return PolicyDecision.ALLOW;
|
|
238
|
+
}
|
|
150
239
|
applyNonInteractiveMode(decision) {
|
|
151
240
|
// In non-interactive mode, ASK_USER becomes DENY
|
|
152
241
|
if (this.nonInteractive && decision === PolicyDecision.ASK_USER) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"policy-engine.js","sourceRoot":"","sources":["../../../src/policy/policy-engine.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAqB,MAAM,eAAe,CAAC;AAClD,OAAO,EACL,cAAc,
|
|
1
|
+
{"version":3,"file":"policy-engine.js","sourceRoot":"","sources":["../../../src/policy/policy-engine.ts"],"names":[],"mappings":"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"}
|
|
@@ -895,5 +895,227 @@ describe('PolicyEngine', () => {
|
|
|
895
895
|
expect(result.decision).toBe(PolicyDecision.DENY);
|
|
896
896
|
});
|
|
897
897
|
});
|
|
898
|
+
describe('checkHook', () => {
|
|
899
|
+
it('should allow hooks by default', async () => {
|
|
900
|
+
engine = new PolicyEngine({}, mockCheckerRunner);
|
|
901
|
+
const decision = await engine.checkHook({
|
|
902
|
+
eventName: 'BeforeTool',
|
|
903
|
+
hookSource: 'user',
|
|
904
|
+
});
|
|
905
|
+
expect(decision).toBe(PolicyDecision.ALLOW);
|
|
906
|
+
});
|
|
907
|
+
it('should deny all hooks when allowHooks is false', async () => {
|
|
908
|
+
engine = new PolicyEngine({ allowHooks: false }, mockCheckerRunner);
|
|
909
|
+
const decision = await engine.checkHook({
|
|
910
|
+
eventName: 'BeforeTool',
|
|
911
|
+
hookSource: 'user',
|
|
912
|
+
});
|
|
913
|
+
expect(decision).toBe(PolicyDecision.DENY);
|
|
914
|
+
});
|
|
915
|
+
it('should deny project hooks in untrusted folders', async () => {
|
|
916
|
+
engine = new PolicyEngine({}, mockCheckerRunner);
|
|
917
|
+
const decision = await engine.checkHook({
|
|
918
|
+
eventName: 'BeforeTool',
|
|
919
|
+
hookSource: 'project',
|
|
920
|
+
trustedFolder: false,
|
|
921
|
+
});
|
|
922
|
+
expect(decision).toBe(PolicyDecision.DENY);
|
|
923
|
+
});
|
|
924
|
+
it('should allow project hooks in trusted folders', async () => {
|
|
925
|
+
engine = new PolicyEngine({}, mockCheckerRunner);
|
|
926
|
+
const decision = await engine.checkHook({
|
|
927
|
+
eventName: 'BeforeTool',
|
|
928
|
+
hookSource: 'project',
|
|
929
|
+
trustedFolder: true,
|
|
930
|
+
});
|
|
931
|
+
expect(decision).toBe(PolicyDecision.ALLOW);
|
|
932
|
+
});
|
|
933
|
+
it('should allow user hooks in untrusted folders', async () => {
|
|
934
|
+
engine = new PolicyEngine({}, mockCheckerRunner);
|
|
935
|
+
const decision = await engine.checkHook({
|
|
936
|
+
eventName: 'BeforeTool',
|
|
937
|
+
hookSource: 'user',
|
|
938
|
+
trustedFolder: false,
|
|
939
|
+
});
|
|
940
|
+
expect(decision).toBe(PolicyDecision.ALLOW);
|
|
941
|
+
});
|
|
942
|
+
it('should run hook checkers and deny on DENY decision', async () => {
|
|
943
|
+
const hookCheckers = [
|
|
944
|
+
{
|
|
945
|
+
eventName: 'BeforeTool',
|
|
946
|
+
checker: { type: 'external', name: 'test-hook-checker' },
|
|
947
|
+
},
|
|
948
|
+
];
|
|
949
|
+
engine = new PolicyEngine({ hookCheckers }, mockCheckerRunner);
|
|
950
|
+
vi.mocked(mockCheckerRunner.runChecker).mockResolvedValue({
|
|
951
|
+
decision: SafetyCheckDecision.DENY,
|
|
952
|
+
reason: 'Hook checker denied',
|
|
953
|
+
});
|
|
954
|
+
const decision = await engine.checkHook({
|
|
955
|
+
eventName: 'BeforeTool',
|
|
956
|
+
hookSource: 'user',
|
|
957
|
+
});
|
|
958
|
+
expect(decision).toBe(PolicyDecision.DENY);
|
|
959
|
+
expect(mockCheckerRunner.runChecker).toHaveBeenCalledWith(expect.objectContaining({ name: 'hook:BeforeTool' }), expect.objectContaining({ name: 'test-hook-checker' }));
|
|
960
|
+
});
|
|
961
|
+
it('should run hook checkers and allow on ALLOW decision', async () => {
|
|
962
|
+
const hookCheckers = [
|
|
963
|
+
{
|
|
964
|
+
eventName: 'BeforeTool',
|
|
965
|
+
checker: { type: 'external', name: 'test-hook-checker' },
|
|
966
|
+
},
|
|
967
|
+
];
|
|
968
|
+
engine = new PolicyEngine({ hookCheckers }, mockCheckerRunner);
|
|
969
|
+
vi.mocked(mockCheckerRunner.runChecker).mockResolvedValue({
|
|
970
|
+
decision: SafetyCheckDecision.ALLOW,
|
|
971
|
+
});
|
|
972
|
+
const decision = await engine.checkHook({
|
|
973
|
+
eventName: 'BeforeTool',
|
|
974
|
+
hookSource: 'user',
|
|
975
|
+
});
|
|
976
|
+
expect(decision).toBe(PolicyDecision.ALLOW);
|
|
977
|
+
});
|
|
978
|
+
it('should return ASK_USER when checker requests it', async () => {
|
|
979
|
+
const hookCheckers = [
|
|
980
|
+
{
|
|
981
|
+
checker: { type: 'external', name: 'test-hook-checker' },
|
|
982
|
+
},
|
|
983
|
+
];
|
|
984
|
+
engine = new PolicyEngine({ hookCheckers }, mockCheckerRunner);
|
|
985
|
+
vi.mocked(mockCheckerRunner.runChecker).mockResolvedValue({
|
|
986
|
+
decision: SafetyCheckDecision.ASK_USER,
|
|
987
|
+
reason: 'Needs confirmation',
|
|
988
|
+
});
|
|
989
|
+
const decision = await engine.checkHook({
|
|
990
|
+
eventName: 'BeforeTool',
|
|
991
|
+
hookSource: 'user',
|
|
992
|
+
});
|
|
993
|
+
expect(decision).toBe(PolicyDecision.ASK_USER);
|
|
994
|
+
});
|
|
995
|
+
it('should return DENY for ASK_USER in non-interactive mode', async () => {
|
|
996
|
+
const hookCheckers = [
|
|
997
|
+
{
|
|
998
|
+
checker: { type: 'external', name: 'test-hook-checker' },
|
|
999
|
+
},
|
|
1000
|
+
];
|
|
1001
|
+
engine = new PolicyEngine({ hookCheckers, nonInteractive: true }, mockCheckerRunner);
|
|
1002
|
+
vi.mocked(mockCheckerRunner.runChecker).mockResolvedValue({
|
|
1003
|
+
decision: SafetyCheckDecision.ASK_USER,
|
|
1004
|
+
reason: 'Needs confirmation',
|
|
1005
|
+
});
|
|
1006
|
+
const decision = await engine.checkHook({
|
|
1007
|
+
eventName: 'BeforeTool',
|
|
1008
|
+
hookSource: 'user',
|
|
1009
|
+
});
|
|
1010
|
+
expect(decision).toBe(PolicyDecision.DENY);
|
|
1011
|
+
});
|
|
1012
|
+
it('should match hook checkers by eventName', async () => {
|
|
1013
|
+
const hookCheckers = [
|
|
1014
|
+
{
|
|
1015
|
+
eventName: 'AfterTool',
|
|
1016
|
+
checker: { type: 'external', name: 'after-tool-checker' },
|
|
1017
|
+
},
|
|
1018
|
+
{
|
|
1019
|
+
eventName: 'BeforeTool',
|
|
1020
|
+
checker: { type: 'external', name: 'before-tool-checker' },
|
|
1021
|
+
},
|
|
1022
|
+
];
|
|
1023
|
+
engine = new PolicyEngine({ hookCheckers }, mockCheckerRunner);
|
|
1024
|
+
vi.mocked(mockCheckerRunner.runChecker).mockResolvedValue({
|
|
1025
|
+
decision: SafetyCheckDecision.ALLOW,
|
|
1026
|
+
});
|
|
1027
|
+
await engine.checkHook({
|
|
1028
|
+
eventName: 'BeforeTool',
|
|
1029
|
+
hookSource: 'user',
|
|
1030
|
+
});
|
|
1031
|
+
expect(mockCheckerRunner.runChecker).toHaveBeenCalledWith(expect.anything(), expect.objectContaining({ name: 'before-tool-checker' }));
|
|
1032
|
+
expect(mockCheckerRunner.runChecker).not.toHaveBeenCalledWith(expect.anything(), expect.objectContaining({ name: 'after-tool-checker' }));
|
|
1033
|
+
});
|
|
1034
|
+
it('should match hook checkers by hookSource', async () => {
|
|
1035
|
+
const hookCheckers = [
|
|
1036
|
+
{
|
|
1037
|
+
hookSource: 'project',
|
|
1038
|
+
checker: { type: 'external', name: 'project-checker' },
|
|
1039
|
+
},
|
|
1040
|
+
{
|
|
1041
|
+
hookSource: 'user',
|
|
1042
|
+
checker: { type: 'external', name: 'user-checker' },
|
|
1043
|
+
},
|
|
1044
|
+
];
|
|
1045
|
+
engine = new PolicyEngine({ hookCheckers }, mockCheckerRunner);
|
|
1046
|
+
vi.mocked(mockCheckerRunner.runChecker).mockResolvedValue({
|
|
1047
|
+
decision: SafetyCheckDecision.ALLOW,
|
|
1048
|
+
});
|
|
1049
|
+
await engine.checkHook({
|
|
1050
|
+
eventName: 'BeforeTool',
|
|
1051
|
+
hookSource: 'user',
|
|
1052
|
+
});
|
|
1053
|
+
expect(mockCheckerRunner.runChecker).toHaveBeenCalledWith(expect.anything(), expect.objectContaining({ name: 'user-checker' }));
|
|
1054
|
+
expect(mockCheckerRunner.runChecker).not.toHaveBeenCalledWith(expect.anything(), expect.objectContaining({ name: 'project-checker' }));
|
|
1055
|
+
});
|
|
1056
|
+
it('should deny when hook checker throws an error', async () => {
|
|
1057
|
+
const hookCheckers = [
|
|
1058
|
+
{
|
|
1059
|
+
checker: { type: 'external', name: 'failing-checker' },
|
|
1060
|
+
},
|
|
1061
|
+
];
|
|
1062
|
+
engine = new PolicyEngine({ hookCheckers }, mockCheckerRunner);
|
|
1063
|
+
vi.mocked(mockCheckerRunner.runChecker).mockRejectedValue(new Error('Checker failed'));
|
|
1064
|
+
const decision = await engine.checkHook({
|
|
1065
|
+
eventName: 'BeforeTool',
|
|
1066
|
+
hookSource: 'user',
|
|
1067
|
+
});
|
|
1068
|
+
expect(decision).toBe(PolicyDecision.DENY);
|
|
1069
|
+
});
|
|
1070
|
+
it('should run hook checkers in priority order', async () => {
|
|
1071
|
+
const hookCheckers = [
|
|
1072
|
+
{
|
|
1073
|
+
priority: 5,
|
|
1074
|
+
checker: { type: 'external', name: 'low-priority' },
|
|
1075
|
+
},
|
|
1076
|
+
{
|
|
1077
|
+
priority: 20,
|
|
1078
|
+
checker: { type: 'external', name: 'high-priority' },
|
|
1079
|
+
},
|
|
1080
|
+
{
|
|
1081
|
+
priority: 10,
|
|
1082
|
+
checker: { type: 'external', name: 'medium-priority' },
|
|
1083
|
+
},
|
|
1084
|
+
];
|
|
1085
|
+
engine = new PolicyEngine({ hookCheckers }, mockCheckerRunner);
|
|
1086
|
+
vi.mocked(mockCheckerRunner.runChecker).mockImplementation(async (_call, config) => {
|
|
1087
|
+
if (config.name === 'high-priority') {
|
|
1088
|
+
return { decision: SafetyCheckDecision.DENY, reason: 'denied' };
|
|
1089
|
+
}
|
|
1090
|
+
return { decision: SafetyCheckDecision.ALLOW };
|
|
1091
|
+
});
|
|
1092
|
+
await engine.checkHook({
|
|
1093
|
+
eventName: 'BeforeTool',
|
|
1094
|
+
hookSource: 'user',
|
|
1095
|
+
});
|
|
1096
|
+
// Should only call the high-priority checker (first in sorted order)
|
|
1097
|
+
expect(mockCheckerRunner.runChecker).toHaveBeenCalledTimes(1);
|
|
1098
|
+
expect(mockCheckerRunner.runChecker).toHaveBeenCalledWith(expect.anything(), expect.objectContaining({ name: 'high-priority' }));
|
|
1099
|
+
});
|
|
1100
|
+
});
|
|
1101
|
+
describe('addHookChecker', () => {
|
|
1102
|
+
it('should add a new hook checker and maintain priority order', () => {
|
|
1103
|
+
engine = new PolicyEngine({}, mockCheckerRunner);
|
|
1104
|
+
engine.addHookChecker({
|
|
1105
|
+
priority: 5,
|
|
1106
|
+
checker: { type: 'external', name: 'checker1' },
|
|
1107
|
+
});
|
|
1108
|
+
engine.addHookChecker({
|
|
1109
|
+
priority: 10,
|
|
1110
|
+
checker: { type: 'external', name: 'checker2' },
|
|
1111
|
+
});
|
|
1112
|
+
const checkers = engine.getHookCheckers();
|
|
1113
|
+
expect(checkers).toHaveLength(2);
|
|
1114
|
+
expect(checkers[0].priority).toBe(10);
|
|
1115
|
+
expect(checkers[0].checker.name).toBe('checker2');
|
|
1116
|
+
expect(checkers[1].priority).toBe(5);
|
|
1117
|
+
expect(checkers[1].checker.name).toBe('checker1');
|
|
1118
|
+
});
|
|
1119
|
+
});
|
|
898
1120
|
});
|
|
899
1121
|
//# sourceMappingURL=policy-engine.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"policy-engine.test.js","sourceRoot":"","sources":["../../../src/policy/policy-engine.test.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EACL,cAAc,EAId,oBAAoB,GACrB,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAG5D,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;IAC5B,IAAI,MAAoB,CAAC;IACzB,IAAI,iBAAgC,CAAC;IAErC,UAAU,CAAC,GAAG,EAAE;QACd,iBAAiB,GAAG;YAClB,UAAU,EAAE,EAAE,CAAC,EAAE,EAAE;SACQ,CAAC;QAC9B,MAAM,GAAG,IAAI,YAAY,CAAC,EAAE,EAAE,iBAAiB,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;QAC3B,EAAE,CAAC,8CAA8C,EAAE,KAAK,IAAI,EAAE;YAC5D,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,SAAS,CAAC,CAAC;YACrE,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QACjD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,wCAAwC,EAAE,KAAK,IAAI,EAAE;YACtD,MAAM,GAAG,IAAI,YAAY,CAAC,EAAE,eAAe,EAAE,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC;YACpE,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,SAAS,CAAC,CAAC;YACrE,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;YACvC,MAAM,KAAK,GAAiB;gBAC1B,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,cAAc,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE;gBACjE,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,cAAc,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE;gBACnE,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,cAAc,CAAC,QAAQ,EAAE,QAAQ,EAAE,CAAC,EAAE;aACtE,CAAC;YAEF,MAAM,GAAG,IAAI,YAAY,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;YACrC,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;YAEtC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACzC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACxC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE;QACrB,EAAE,CAAC,2BAA2B,EAAE,KAAK,IAAI,EAAE;YACzC,MAAM,KAAK,GAAiB;gBAC1B,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,cAAc,CAAC,KAAK,EAAE;gBACrD,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,CAAC,IAAI,EAAE;aACpD,CAAC;YAEF,MAAM,GAAG,IAAI,YAAY,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;YAErC,MAAM,CAAC,CAAC,MAAM,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CACtE,cAAc,CAAC,KAAK,CACrB,CAAC;YACF,MAAM,CAAC,CAAC,MAAM,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CACrE,cAAc,CAAC,IAAI,CACpB,CAAC;YACF,MAAM,CAAC,CAAC,MAAM,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CACtE,cAAc,CAAC,QAAQ,CACxB,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,8BAA8B,EAAE,KAAK,IAAI,EAAE;YAC5C,MAAM,KAAK,GAAiB;gBAC1B;oBACE,QAAQ,EAAE,OAAO;oBACjB,WAAW,EAAE,QAAQ;oBACrB,QAAQ,EAAE,cAAc,CAAC,IAAI;iBAC9B;gBACD;oBACE,QAAQ,EAAE,OAAO;oBACjB,QAAQ,EAAE,cAAc,CAAC,KAAK;iBAC/B;aACF,CAAC;YAEF,MAAM,GAAG,IAAI,YAAY,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;YAErC,MAAM,aAAa,GAAiB;gBAClC,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE;aAC9B,CAAC;YAEF,MAAM,QAAQ,GAAiB;gBAC7B,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE;aAC5B,CAAC;YAEF,MAAM,CAAC,CAAC,MAAM,MAAM,CAAC,KAAK,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAClE,cAAc,CAAC,IAAI,CACpB,CAAC;YACF,MAAM,CAAC,CAAC,MAAM,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAC7D,cAAc,CAAC,KAAK,CACrB,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,gCAAgC,EAAE,KAAK,IAAI,EAAE;YAC9C,MAAM,KAAK,GAAiB;gBAC1B,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,cAAc,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE;gBACjE,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,cAAc,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE;aACpE,CAAC;YAEF,MAAM,GAAG,IAAI,YAAY,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;YAErC,0CAA0C;YAC1C,MAAM,CAAC,CAAC,MAAM,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CACtE,cAAc,CAAC,KAAK,CACrB,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,2CAA2C,EAAE,KAAK,IAAI,EAAE;YACzD,MAAM,KAAK,GAAiB;gBAC1B,EAAE,QAAQ,EAAE,cAAc,CAAC,IAAI,EAAE,EAAE,uBAAuB;gBAC1D,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE,cAAc,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE;aACxE,CAAC;YAEF,MAAM,GAAG,IAAI,YAAY,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;YAErC,MAAM,CACJ,CAAC,MAAM,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC,QAAQ,CAChE,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;YAC7B,MAAM,CACJ,CAAC,MAAM,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC,QAAQ,CACrE,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QAC9B,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,oCAAoC,EAAE,KAAK,IAAI,EAAE;YAClD,MAAM,MAAM,GAAuB;gBACjC,cAAc,EAAE,IAAI;gBACpB,KAAK,EAAE;oBACL,EAAE,QAAQ,EAAE,kBAAkB,EAAE,QAAQ,EAAE,cAAc,CAAC,QAAQ,EAAE;oBACnE,EAAE,QAAQ,EAAE,cAAc,EAAE,QAAQ,EAAE,cAAc,CAAC,KAAK,EAAE;iBAC7D;aACF,CAAC;YAEF,MAAM,GAAG,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC;YAElC,sDAAsD;YACtD,MAAM,CACJ,CAAC,MAAM,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,kBAAkB,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC,QAAQ,CACvE,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;YAC5B,4BAA4B;YAC5B,MAAM,CACJ,CAAC,MAAM,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC,QAAQ,CACnE,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;YAC7B,2CAA2C;YAC3C,MAAM,CACJ,CAAC,MAAM,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC,QAAQ,CACnE,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QAC9B,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,SAAS,EAAE,GAAG,EAAE;QACvB,EAAE,CAAC,mDAAmD,EAAE,GAAG,EAAE;YAC3D,MAAM,CAAC,OAAO,CAAC;gBACb,QAAQ,EAAE,OAAO;gBACjB,QAAQ,EAAE,cAAc,CAAC,KAAK;gBAC9B,QAAQ,EAAE,CAAC;aACZ,CAAC,CAAC;YACH,MAAM,CAAC,OAAO,CAAC;gBACb,QAAQ,EAAE,OAAO;gBACjB,QAAQ,EAAE,cAAc,CAAC,IAAI;gBAC7B,QAAQ,EAAE,EAAE;aACb,CAAC,CAAC;YACH,MAAM,CAAC,OAAO,CAAC;gBACb,QAAQ,EAAE,OAAO;gBACjB,QAAQ,EAAE,cAAc,CAAC,QAAQ;gBACjC,QAAQ,EAAE,CAAC;aACZ,CAAC,CAAC;YAEH,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;YAChC,MAAM,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAC9B,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACnC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACpC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,gCAAgC,EAAE,KAAK,IAAI,EAAE;YAC9C,MAAM,CACJ,CAAC,MAAM,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC,QAAQ,CAC/D,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;YAEhC,MAAM,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,cAAc,CAAC,KAAK,EAAE,CAAC,CAAC;YAEzE,MAAM,CACJ,CAAC,MAAM,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC,QAAQ,CAC/D,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;QAClC,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;YAC/C,MAAM,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,cAAc,CAAC,KAAK,EAAE,CAAC,CAAC;YACtE,MAAM,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC;YACrE,MAAM,CAAC,OAAO,CAAC;gBACb,QAAQ,EAAE,OAAO;gBACjB,QAAQ,EAAE,cAAc,CAAC,QAAQ;gBACjC,QAAQ,EAAE,EAAE;aACb,CAAC,CAAC;YAEH,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAE1C,MAAM,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;YAEnC,MAAM,cAAc,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;YACzC,MAAM,CAAC,cAAc,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACvC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACvE,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;YAClD,MAAM,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,cAAc,CAAC,KAAK,EAAE,CAAC,CAAC;YAEzE,MAAM,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,kBAAkB,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;YACtE,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;QACxB,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;YAC/C,MAAM,KAAK,GAAiB;gBAC1B,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,cAAc,CAAC,KAAK,EAAE;gBACrD,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,cAAc,CAAC,IAAI,EAAE;aACrD,CAAC;YAEF,MAAM,GAAG,IAAI,YAAY,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;YAErC,MAAM,cAAc,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;YACzC,MAAM,CAAC,cAAc,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACvC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACjD,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,8BAA8B,EAAE,GAAG,EAAE;QAC5C,EAAE,CAAC,2CAA2C,EAAE,KAAK,IAAI,EAAE;YACzD,MAAM,KAAK,GAAiB;gBAC1B;oBACE,QAAQ,EAAE,cAAc;oBACxB,QAAQ,EAAE,cAAc,CAAC,KAAK;oBAC9B,QAAQ,EAAE,EAAE;iBACb;gBACD;oBACE,QAAQ,EAAE,mBAAmB;oBAC7B,QAAQ,EAAE,cAAc,CAAC,IAAI;oBAC7B,QAAQ,EAAE,EAAE;iBACb;aACF,CAAC;YAEF,MAAM,GAAG,IAAI,YAAY,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;YAErC,+BAA+B;YAC/B,MAAM,CACJ,CAAC,MAAM,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,kBAAkB,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC,QAAQ,CACvE,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;YAC7B,MAAM,CACJ,CAAC,MAAM,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,yBAAyB,EAAE,EAAE,SAAS,CAAC,CAAC;iBACjE,QAAQ,CACZ,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;YAE7B,oCAAoC;YACpC,MAAM,CACJ,CAAC,MAAM,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,uBAAuB,EAAE,EAAE,SAAS,CAAC,CAAC;iBAC/D,QAAQ,CACZ,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;YAC5B,MAAM,CACJ,CAAC,MAAM,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,2BAA2B,EAAE,EAAE,SAAS,CAAC,CAAC;iBACnE,QAAQ,CACZ,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;YAE5B,kCAAkC;YAClC,MAAM,CACJ,CAAC,MAAM,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,oBAAoB,EAAE,EAAE,SAAS,CAAC,CAAC;iBAC5D,QAAQ,CACZ,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;YAChC,MAAM,CACJ,CAAC,MAAM,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC,QAAQ,CACrE,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC,kBAAkB;YACnD,MAAM,CACJ,CAAC,MAAM,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC,QAAQ,CAChE,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC,eAAe;QAClD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,6DAA6D,EAAE,KAAK,IAAI,EAAE;YAC3E,MAAM,KAAK,GAAiB;gBAC1B;oBACE,QAAQ,EAAE,cAAc;oBACxB,QAAQ,EAAE,cAAc,CAAC,KAAK;oBAC9B,QAAQ,EAAE,EAAE;iBACb;gBACD;oBACE,QAAQ,EAAE,2BAA2B;oBACrC,QAAQ,EAAE,cAAc,CAAC,IAAI;oBAC7B,QAAQ,EAAE,EAAE;iBACb;aACF,CAAC;YAEF,MAAM,GAAG,IAAI,YAAY,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;YAErC,kDAAkD;YAClD,MAAM,CACJ,CAAC,MAAM,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,2BAA2B,EAAE,EAAE,SAAS,CAAC,CAAC;iBACnE,QAAQ,CACZ,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;YAC5B,MAAM,CACJ,CAAC,MAAM,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,sBAAsB,EAAE,EAAE,SAAS,CAAC,CAAC;iBAC9D,QAAQ,CACZ,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,4DAA4D,EAAE,KAAK,IAAI,EAAE;YAC1E,uEAAuE;YACvE,0EAA0E;YAC1E,MAAM,KAAK,GAAiB;gBAC1B;oBACE,QAAQ,EAAE,gBAAgB;oBAC1B,QAAQ,EAAE,cAAc,CAAC,KAAK;iBAC/B;aACF,CAAC;YACF,MAAM,GAAG,IAAI,YAAY,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;YAErC,0DAA0D;YAC1D,MAAM,eAAe,GAAG,EAAE,IAAI,EAAE,8BAA8B,EAAE,CAAC;YAEjE,sHAAsH;YACtH,0FAA0F;YAC1F,MAAM,CACJ,CAAC,MAAM,MAAM,CAAC,KAAK,CAAC,eAAe,EAAE,wBAAwB,CAAC,CAAC;iBAC5D,QAAQ,CACZ,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,2DAA2D,EAAE,KAAK,IAAI,EAAE;YACzE,MAAM,KAAK,GAAiB;gBAC1B;oBACE,QAAQ,EAAE,gBAAgB;oBAC1B,QAAQ,EAAE,cAAc,CAAC,KAAK;iBAC/B;aACF,CAAC;YACF,MAAM,GAAG,IAAI,YAAY,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;YAErC,+DAA+D;YAC/D,MAAM,eAAe,GAAG,EAAE,IAAI,EAAE,oBAAoB,EAAE,CAAC;YACvD,MAAM,CACJ,CAAC,MAAM,MAAM,CAAC,KAAK,CAAC,eAAe,EAAE,aAAa,CAAC,CAAC,CAAC,QAAQ,CAC9D,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,8DAA8D,EAAE,KAAK,IAAI,EAAE;YAC5E,MAAM,KAAK,GAAiB;gBAC1B;oBACE,QAAQ,EAAE,gBAAgB;oBAC1B,QAAQ,EAAE,cAAc,CAAC,KAAK;iBAC/B;aACF,CAAC;YACF,MAAM,GAAG,IAAI,YAAY,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;YAErC,MAAM,aAAa,GAAG,EAAE,IAAI,EAAE,mBAAmB,EAAE,CAAC;YACpD,MAAM,CAAC,CAAC,MAAM,MAAM,CAAC,KAAK,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CACtE,cAAc,CAAC,KAAK,CACrB,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;QACjC,EAAE,CAAC,iEAAiE,EAAE,KAAK,IAAI,EAAE;YAC/E,MAAM,KAAK,GAAiB;gBAC1B,EAAE,QAAQ,EAAE,cAAc,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE,EAAE,mBAAmB;gBACnE,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,cAAc,CAAC,QAAQ,EAAE,QAAQ,EAAE,CAAC,EAAE;gBACrE;oBACE,QAAQ,EAAE,OAAO;oBACjB,WAAW,EAAE,eAAe;oBAC5B,QAAQ,EAAE,cAAc,CAAC,KAAK;oBAC9B,QAAQ,EAAE,EAAE;iBACb;aACF,CAAC;YAEF,MAAM,GAAG,IAAI,YAAY,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;YAErC,6CAA6C;YAC7C,MAAM,CACJ,CACE,MAAM,MAAM,CAAC,KAAK,CAChB,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAC9C,SAAS,CACV,CACF,CAAC,QAAQ,CACX,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;YAE7B,kDAAkD;YAClD,MAAM,CACJ,CACE,MAAM,MAAM,CAAC,KAAK,CAChB,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAC3C,SAAS,CACV,CACF,CAAC,QAAQ,CACX,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;YAEhC,2CAA2C;YAC3C,MAAM,CAAC,CAAC,MAAM,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CACrE,cAAc,CAAC,IAAI,CACpB,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,kCAAkC,EAAE,KAAK,IAAI,EAAE;YAChD,MAAM,KAAK,GAAiB;gBAC1B;oBACE,QAAQ,EAAE,MAAM;oBAChB,WAAW,EAAE,QAAQ;oBACrB,QAAQ,EAAE,cAAc,CAAC,IAAI;iBAC9B;aACF,CAAC;YAEF,MAAM,GAAG,IAAI,YAAY,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;YAErC,kDAAkD;YAClD,MAAM,CAAC,CAAC,MAAM,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CACrE,cAAc,CAAC,QAAQ,CACxB,CAAC;YAEF,2CAA2C;YAC3C,MAAM,CACJ,CACE,MAAM,MAAM,CAAC,KAAK,CAChB,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,EAC9C,SAAS,CACV,CACF,CAAC,QAAQ,CACX,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;YAEhC,uCAAuC;YACvC,MAAM,CACJ,CACE,MAAM,MAAM,CAAC,KAAK,CAChB,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,EAC9C,SAAS,CACV,CACF,CAAC,QAAQ,CACX,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QAC9B,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,wDAAwD,EAAE,KAAK,IAAI,EAAE;YACtE,MAAM,KAAK,GAAiB;gBAC1B;oBACE,QAAQ,EAAE,OAAO;oBACjB,gDAAgD;oBAChD,WAAW,EAAE,uBAAuB;oBACpC,QAAQ,EAAE,cAAc,CAAC,IAAI;iBAC9B;aACF,CAAC;YAEF,MAAM,GAAG,IAAI,YAAY,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;YAErC,4DAA4D;YAC5D,MAAM,KAAK,GAAG,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;YACrD,MAAM,KAAK,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC;YAErD,MAAM,CACJ,CAAC,MAAM,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,SAAS,CAAC,CAAC;iBAC5D,QAAQ,CACZ,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;YAC5B,MAAM,CACJ,CAAC,MAAM,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,SAAS,CAAC,CAAC;iBAC5D,QAAQ,CACZ,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;YAE5B,oCAAoC;YACpC,MAAM,QAAQ,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;YACtD,MAAM,CACJ,CAAC,MAAM,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,SAAS,CAAC,CAAC;iBAC/D,QAAQ,CACZ,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,kEAAkE,EAAE,KAAK,IAAI,EAAE;YAChF,MAAM,KAAK,GAAiB;gBAC1B;oBACE,QAAQ,EAAE,KAAK;oBACf,WAAW,EAAE,kBAAkB;oBAC/B,QAAQ,EAAE,cAAc,CAAC,IAAI;iBAC9B;aACF,CAAC;YAEF,MAAM,GAAG,IAAI,YAAY,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;YAErC,qEAAqE;YACrE,MAAM,KAAK,GAAG;gBACZ,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE;gBAC1C,MAAM,EAAE,MAAM;aACf,CAAC;YACF,MAAM,KAAK,GAAG;gBACZ,MAAM,EAAE,MAAM;gBACd,IAAI,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE;aAC3C,CAAC;YAEF,MAAM,CACJ,CAAC,MAAM,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC,QAAQ,CACvE,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;YAC5B,MAAM,CACJ,CAAC,MAAM,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC,QAAQ,CACvE,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QAC9B,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,0DAA0D,EAAE,KAAK,IAAI,EAAE;YACxE,MAAM,KAAK,GAAiB;gBAC1B;oBACE,QAAQ,EAAE,MAAM;oBAChB,WAAW,EAAE,cAAc;oBAC3B,QAAQ,EAAE,cAAc,CAAC,IAAI;iBAC9B;aACF,CAAC;YAEF,MAAM,GAAG,IAAI,YAAY,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;YAMrC,MAAM,YAAY,GAAiB;gBACjC,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,EAAE;aACT,CAAC;YACF,2FAA2F;YAC1F,YAAY,CAAC,IAAgC,CAAC,MAAM,CAAC;gBACpD,YAAY,CAAC,IAAI,CAAC;YAEpB,wCAAwC;YACxC,MAAM,MAAM,CACV,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,SAAS,CAAC,CAC9D,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;YAEzB,+CAA+C;YAC/C,MAAM,CACJ,CAAC,MAAM,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,SAAS,CAAC,CAAC;iBAClE,QAAQ,CACZ,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;YAE5B,uCAAuC;YACvC,MAAM,UAAU,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,CAAC;YAC/D,MAAM,CACJ,CAAC,MAAM,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,SAAS,CAAC,CAAC;iBAChE,QAAQ,CACZ,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,wCAAwC,EAAE,KAAK,IAAI,EAAE;YACtD,MAAM,KAAK,GAAiB;gBAC1B;oBACE,QAAQ,EAAE,MAAM;oBAChB,WAAW,EAAE,cAAc;oBAC3B,QAAQ,EAAE,cAAc,CAAC,IAAI;iBAC9B;aACF,CAAC;YAEF,MAAM,GAAG,IAAI,YAAY,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;YAUrC,MAAM,YAAY,GAAiB;gBACjC,MAAM,EAAE;oBACN,MAAM,EAAE;wBACN,MAAM,EAAE,EAAE;qBACX;iBACF;aACF,CAAC;YACF,wDAAwD;YACxD,MAAM,MAAM,GAAG,YAAY,CAAC,MAAO,CAAC,MAAO,CAAC,MAAO,CAAC;YACpD,MAAM,CAAC,MAAM,CAAC,GAAG,YAAY,CAAC,MAAM,CAAC;YAErC,uCAAuC;YACvC,MAAM,MAAM,CACV,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,SAAS,CAAC,CAC9D,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;YAEzB,uCAAuC;YACvC,MAAM,CACJ,CAAC,MAAM,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,SAAS,CAAC,CAAC;iBAClE,QAAQ,CACZ,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QAC9B,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,uDAAuD,EAAE,KAAK,IAAI,EAAE;YACrE,MAAM,KAAK,GAAiB;gBAC1B;oBACE,QAAQ,EAAE,MAAM;oBAChB,WAAW,EAAE,cAAc;oBAC3B,QAAQ,EAAE,cAAc,CAAC,IAAI;iBAC9B;gBACD;oBACE,QAAQ,EAAE,MAAM;oBAChB,WAAW,EAAE,kBAAkB;oBAC/B,QAAQ,EAAE,cAAc,CAAC,KAAK;oBAC9B,QAAQ,EAAE,EAAE;iBACb;aACF,CAAC;YAEF,MAAM,GAAG,IAAI,YAAY,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;YAErC,0DAA0D;YAC1D,MAAM,SAAS,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;YACtC,MAAM,IAAI,GAAG;gBACX,KAAK,EAAE,SAAS;gBAChB,MAAM,EAAE,SAAS;gBACjB,KAAK,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE;aAC7B,CAAC;YAEF,0FAA0F;YAC1F,MAAM,CACJ,CAAC,MAAM,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC,QAAQ,CACjE,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,wDAAwD,EAAE,KAAK,IAAI,EAAE;YACtE,MAAM,KAAK,GAAiB;gBAC1B;oBACE,QAAQ,EAAE,MAAM;oBAChB,WAAW,EAAE,uBAAuB;oBACpC,QAAQ,EAAE,cAAc,CAAC,KAAK;iBAC/B;aACF,CAAC;YAEF,MAAM,GAAG,IAAI,YAAY,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;YAErC,MAAM,IAAI,GAAG;gBACX,YAAY,EAAE,MAAM;gBACpB,cAAc,EAAE,SAAS;gBACzB,aAAa,EAAE,GAAG,EAAE,CAAC,OAAO;gBAC5B,SAAS,EAAE,IAAI;aAChB,CAAC;YAEF,2EAA2E;YAC3E,MAAM,CACJ,CAAC,MAAM,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC,QAAQ,CACjE,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;YAE7B,mEAAmE;YACnE,MAAM,kBAAkB,GAAiB;gBACvC;oBACE,QAAQ,EAAE,MAAM;oBAChB,WAAW,EAAE,gBAAgB;oBAC7B,QAAQ,EAAE,cAAc,CAAC,IAAI;iBAC9B;aACF,CAAC;YACF,MAAM,GAAG,IAAI,YAAY,CAAC,EAAE,KAAK,EAAE,kBAAkB,EAAE,CAAC,CAAC;YACzD,MAAM,CACJ,CAAC,MAAM,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC,QAAQ,CACjE,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;YAEhC,kEAAkE;YAClE,MAAM,iBAAiB,GAAiB;gBACtC;oBACE,QAAQ,EAAE,MAAM;oBAChB,WAAW,EAAE,eAAe;oBAC5B,QAAQ,EAAE,cAAc,CAAC,IAAI;iBAC9B;aACF,CAAC;YACF,MAAM,GAAG,IAAI,YAAY,CAAC,EAAE,KAAK,EAAE,iBAAiB,EAAE,CAAC,CAAC;YACxD,MAAM,CACJ,CAAC,MAAM,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC,QAAQ,CACjE,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,0DAA0D,EAAE,KAAK,IAAI,EAAE;YACxE,MAAM,KAAK,GAAiB;gBAC1B;oBACE,QAAQ,EAAE,MAAM;oBAChB,WAAW,EAAE,4BAA4B;oBACzC,QAAQ,EAAE,cAAc,CAAC,KAAK;iBAC/B;aACF,CAAC;YAEF,MAAM,GAAG,IAAI,YAAY,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;YAErC,MAAM,IAAI,GAAG;gBACX,KAAK,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC;aACjD,CAAC;YAEF,sEAAsE;YACtE,MAAM,CACJ,CAAC,MAAM,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC,QAAQ,CACjE,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;YACxD,MAAM,SAAS,GACb;gBACE,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE;gBACtD;oBACE,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE;oBAC3C,IAAI,EAAE,eAAe;iBACtB;gBACD,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE;gBACpD,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE;gBAChE;oBACE,KAAK,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,EAAE,GAAE,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE;oBAC5D,IAAI,EAAE,oCAAoC;iBAC3C;gBACD;oBACE,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,GAAE,CAAC,EAAE,IAAI,CAAC,EAAE;oBACjD,IAAI,EAAE,mCAAmC;iBAC1C;aACF,CAAC;YAEJ,KAAK,MAAM,EAAE,KAAK,EAAE,IAAI,SAAS,EAAE,CAAC;gBAClC,MAAM,KAAK,GAAiB;oBAC1B;wBACE,QAAQ,EAAE,MAAM;wBAChB,WAAW,EAAE,IAAI;wBACjB,QAAQ,EAAE,cAAc,CAAC,KAAK;qBAC/B;iBACF,CAAC;gBACF,MAAM,GAAG,IAAI,YAAY,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;gBAErC,yEAAyE;gBACzE,MAAM,MAAM,CACV,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,SAAS,CAAC,CACvD,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;gBAEzB,2BAA2B;gBAC3B,MAAM,CACJ,CAAC,MAAM,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,SAAS,CAAC,CAAC;qBAC3D,QAAQ,CACZ,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;YAC/B,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;YACxD,MAAM,KAAK,GAAiB;gBAC1B;oBACE,QAAQ,EAAE,MAAM;oBAChB,WAAW,EAAE,oBAAoB;oBACjC,QAAQ,EAAE,cAAc,CAAC,KAAK;iBAC/B;gBACD;oBACE,QAAQ,EAAE,MAAM;oBAChB,WAAW,EAAE,oBAAoB;oBACjC,QAAQ,EAAE,cAAc,CAAC,IAAI;iBAC9B;aACF,CAAC;YAEF,MAAM,GAAG,IAAI,YAAY,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;YAErC,2CAA2C;YAC3C,MAAM,IAAI,GAAG;gBACX,IAAI,EAAE;oBACJ,SAAS,EAAE,MAAM;oBACjB,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC;iBACtC;aACF,CAAC;YAEF,4DAA4D;YAC5D,MAAM,CACJ,CAAC,MAAM,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC,QAAQ,CACjE,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,8CAA8C,EAAE,KAAK,IAAI,EAAE;YAC5D,MAAM,KAAK,GAAiB;gBAC1B;oBACE,QAAQ,EAAE,MAAM;oBAChB,WAAW,EAAE,wBAAwB;oBACrC,QAAQ,EAAE,cAAc,CAAC,KAAK;iBAC/B;aACF,CAAC;YAEF,MAAM,GAAG,IAAI,YAAY,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;YAErC,MAAM,IAAI,GAAG;gBACX,KAAK,EAAE;oBACL,OAAO,EAAE,QAAQ;oBACjB,MAAM,EAAE,GAAG,EAAE,CAAC,cAAc;iBAC7B;aACF,CAAC;YAEF,gEAAgE;YAChE,MAAM,CACJ,CAAC,MAAM,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC,QAAQ,CACjE,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,2CAA2C,EAAE,KAAK,IAAI,EAAE;YACzD,MAAM,KAAK,GAAiB;gBAC1B;oBACE,QAAQ,EAAE,MAAM;oBAChB,WAAW,EAAE,oBAAoB;oBACjC,QAAQ,EAAE,cAAc,CAAC,KAAK;iBAC/B;aACF,CAAC;YAEF,MAAM,GAAG,IAAI,YAAY,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;YAErC,MAAM,IAAI,GAAG;gBACX,IAAI,EAAE;oBACJ,QAAQ,EAAE,OAAO;oBACjB,MAAM,EAAE,GAAG,EAAE;wBACX,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC;oBAClC,CAAC;iBACF;aACF,CAAC;YAEF,sEAAsE;YACtE,MAAM,CACJ,CAAC,MAAM,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC,QAAQ,CACjE,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,4BAA4B,EAAE,GAAG,EAAE;QAC1C,EAAE,CAAC,6DAA6D,EAAE,KAAK,IAAI,EAAE;YAC3E,MAAM,KAAK,GAAiB;gBAC1B;oBACE,QAAQ,EAAE,WAAW;oBACrB,QAAQ,EAAE,cAAc,CAAC,KAAK;iBAC/B;aACF,CAAC;YACF,MAAM,QAAQ,GAAwB;gBACpC;oBACE,QAAQ,EAAE,WAAW;oBACrB,OAAO,EAAE;wBACP,IAAI,EAAE,UAAU;wBAChB,IAAI,EAAE,cAAc;wBACpB,MAAM,EAAE,EAAE,OAAO,EAAE,cAAc,EAAE;qBACpC;iBACF;aACF,CAAC;YACF,MAAM,GAAG,IAAI,YAAY,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,iBAAiB,CAAC,CAAC;YAClE,EAAE,CAAC,MAAM,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC,iBAAiB,CAAC;gBACxD,QAAQ,EAAE,mBAAmB,CAAC,KAAK;aACpC,CAAC,CAAC;YAEH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,KAAK,CAC/B,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,EAC3C,SAAS,CACV,CAAC;YAEF,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;YACnD,MAAM,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC,oBAAoB,CACvD,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,EAC3C;gBACE,IAAI,EAAE,UAAU;gBAChB,IAAI,EAAE,cAAc;gBACpB,MAAM,EAAE,EAAE,OAAO,EAAE,cAAc,EAAE;aACpC,CACF,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sCAAsC,EAAE,KAAK,IAAI,EAAE;YACpD,MAAM,KAAK,GAAiB;gBAC1B;oBACE,QAAQ,EAAE,MAAM;oBAChB,QAAQ,EAAE,cAAc,CAAC,KAAK;iBAC/B;aACF,CAAC;YACF,MAAM,QAAQ,GAAwB;gBACpC;oBACE,QAAQ,EAAE,MAAM;oBAChB,OAAO,EAAE;wBACP,IAAI,EAAE,YAAY;wBAClB,IAAI,EAAE,oBAAoB,CAAC,YAAY;qBACxC;iBACF;aACF,CAAC;YAEF,iBAAiB,CAAC,UAAU,GAAG,EAAE;iBAC9B,EAAE,EAAE;iBACJ,iBAAiB,CAAC,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC;YAElD,MAAM,GAAG,IAAI,YAAY,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,iBAAiB,CAAC,CAAC;YAClE,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,SAAS,CAAC,CAAC;YAErE,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,wCAAwC,EAAE,KAAK,IAAI,EAAE;YACtD,MAAM,KAAK,GAAiB;gBAC1B;oBACE,QAAQ,EAAE,WAAW;oBACrB,QAAQ,EAAE,cAAc,CAAC,KAAK;iBAC/B;aACF,CAAC;YACF,MAAM,QAAQ,GAAwB;gBACpC;oBACE,QAAQ,EAAE,WAAW;oBACrB,OAAO,EAAE;wBACP,IAAI,EAAE,UAAU;wBAChB,IAAI,EAAE,cAAc;wBACpB,MAAM,EAAE,EAAE,OAAO,EAAE,cAAc,EAAE;qBACpC;iBACF;aACF,CAAC;YACF,MAAM,GAAG,IAAI,YAAY,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,iBAAiB,CAAC,CAAC;YAClE,EAAE,CAAC,MAAM,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC,iBAAiB,CAAC;gBACxD,QAAQ,EAAE,mBAAmB,CAAC,IAAI;gBAClC,MAAM,EAAE,aAAa;aACtB,CAAC,CAAC;YAEH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,KAAK,CAC/B,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,EAC3C,SAAS,CACV,CAAC;YAEF,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;YAClD,MAAM,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC,gBAAgB,EAAE,CAAC;QAC1D,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,kDAAkD,EAAE,KAAK,IAAI,EAAE;YAChE,MAAM,KAAK,GAAiB;gBAC1B;oBACE,QAAQ,EAAE,WAAW;oBACrB,QAAQ,EAAE,cAAc,CAAC,QAAQ;iBAClC;aACF,CAAC;YACF,MAAM,QAAQ,GAAwB;gBACpC;oBACE,QAAQ,EAAE,WAAW;oBACrB,OAAO,EAAE;wBACP,IAAI,EAAE,UAAU;wBAChB,IAAI,EAAE,cAAc;wBACpB,MAAM,EAAE,EAAE,OAAO,EAAE,cAAc,EAAE;qBACpC;iBACF;aACF,CAAC;YACF,MAAM,GAAG,IAAI,YAAY,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,iBAAiB,CAAC,CAAC;YAElE,EAAE,CAAC,MAAM,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC,iBAAiB,CAAC;gBACxD,QAAQ,EAAE,mBAAmB,CAAC,KAAK;aACpC,CAAC,CAAC;YAEH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,KAAK,CAC/B,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,EAC3C,SAAS,CACV,CAAC;YAEF,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;YACtD,MAAM,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC,gBAAgB,EAAE,CAAC;QAC1D,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sCAAsC,EAAE,KAAK,IAAI,EAAE;YACpD,MAAM,KAAK,GAAiB;gBAC1B;oBACE,QAAQ,EAAE,MAAM;oBAChB,QAAQ,EAAE,cAAc,CAAC,KAAK;iBAC/B;aACF,CAAC;YACF,MAAM,QAAQ,GAAwB;gBACpC;oBACE,QAAQ,EAAE,MAAM;oBAChB,OAAO,EAAE;wBACP,IAAI,EAAE,YAAY;wBAClB,IAAI,EAAE,oBAAoB,CAAC,YAAY;qBACxC;iBACF;aACF,CAAC;YAEF,iBAAiB,CAAC,UAAU,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC;gBACvD,QAAQ,EAAE,mBAAmB,CAAC,KAAK;aACpC,CAAC,CAAC;YAEH,MAAM,GAAG,IAAI,YAAY,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,iBAAiB,CAAC,CAAC;YAClE,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,SAAS,CAAC,CAAC;YAErE,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;YAC5C,MAAM,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;QAChE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,uDAAuD,EAAE,KAAK,IAAI,EAAE;YACrE,MAAM,KAAK,GAAiB;gBAC1B;oBACE,QAAQ,EAAE,WAAW;oBACrB,QAAQ,EAAE,cAAc,CAAC,KAAK;iBAC/B;aACF,CAAC;YACF,MAAM,GAAG,IAAI,YAAY,CAAC,EAAE,KAAK,EAAE,EAAE,iBAAiB,CAAC,CAAC;YAExD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,KAAK,CAC/B,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,EAC3C,SAAS,CACV,CAAC;YAEF,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;YACnD,MAAM,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QAC9D,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;QACtC,EAAE,CAAC,sCAAsC,EAAE,KAAK,IAAI,EAAE;YACpD,8DAA8D;YAC9D,MAAM,CAAC,CAAC,MAAM,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAC1D,cAAc,CAAC,QAAQ,CACxB,CAAC;YACF,+DAA+D;YAC/D,MAAM,CAAC,CAAC,MAAM,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CACrE,cAAc,CAAC,QAAQ,CACxB,CAAC;YACF,MAAM,CACJ,CAAC,MAAM,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,aAAa,CAAC,CAAC,CAAC,QAAQ,CAC/D,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;QACH,EAAE,CAAC,yEAAyE,EAAE,KAAK,IAAI,EAAE;YACvF,MAAM,KAAK,GAAiB;gBAC1B;oBACE,QAAQ,EAAE,MAAM;oBAChB,QAAQ,EAAE,cAAc,CAAC,KAAK;iBAC/B;aACF,CAAC;YACF,MAAM,QAAQ,GAAwB;gBACpC;oBACE,QAAQ,EAAE,MAAM;oBAChB,QAAQ,EAAE,EAAE;oBACZ,OAAO,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE;iBAChD;gBACD;oBACE,QAAQ,EAAE,MAAM;oBAChB,QAAQ,EAAE,EAAE,EAAE,mBAAmB;oBACjC,OAAO,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE;iBAChD;aACF,CAAC;YAEF,iBAAiB,CAAC,UAAU,GAAG,EAAE;iBAC9B,EAAE,EAAE;iBACJ,kBAAkB,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE;gBAC9C,IAAI,MAAM,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;oBAC/B,OAAO;wBACL,QAAQ,EAAE,mBAAmB,CAAC,IAAI;wBAClC,MAAM,EAAE,iBAAiB;qBAC1B,CAAC;gBACJ,CAAC;gBACD,OAAO,EAAE,QAAQ,EAAE,mBAAmB,CAAC,KAAK,EAAE,CAAC;YACjD,CAAC,CAAC,CAAC;YAEL,MAAM,GAAG,IAAI,YAAY,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,iBAAiB,CAAC,CAAC;YAClE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,KAAK,CAC3C,EAAE,IAAI,EAAE,MAAM,EAAE,EAChB,SAAS,CACV,CAAC;YAEF,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;YAC3C,MAAM,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;YAC3B,MAAM,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;YAC9D,MAAM,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC,oBAAoB,CACvD,MAAM,CAAC,QAAQ,EAAE,EACjB,MAAM,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAC9C,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;QAC1B,EAAE,CAAC,sDAAsD,EAAE,GAAG,EAAE;YAC9D,MAAM,QAAQ,GAAsB;gBAClC,OAAO,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE;gBAC/C,QAAQ,EAAE,CAAC;aACZ,CAAC;YACF,MAAM,QAAQ,GAAsB;gBAClC,OAAO,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE;gBAC/C,QAAQ,EAAE,EAAE;aACb,CAAC;YAEF,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YAC5B,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YAE5B,MAAM,QAAQ,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;YACtC,MAAM,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACjC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACtC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAClD,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACrC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACpD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;QACtC,EAAE,CAAC,sDAAsD,EAAE,KAAK,IAAI,EAAE;YACpE,MAAM,KAAK,GAAiB;gBAC1B,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,CAAC,KAAK,EAAE;aACrD,CAAC;YACF,MAAM,eAAe,GAAsB;gBACzC,OAAO,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE;gBAC/C,QAAQ,EAAE,MAAM;gBAChB,WAAW,EAAE,aAAa;aAC3B,CAAC;YACF,MAAM,kBAAkB,GAAsB;gBAC5C,OAAO,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,cAAc,EAAE;gBACnD,QAAQ,EAAE,OAAO;aAClB,CAAC;YAEF,MAAM,GAAG,IAAI,YAAY,CACvB,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,eAAe,EAAE,kBAAkB,CAAC,EAAE,EAC1D,iBAAiB,CAClB,CAAC;YAEF,EAAE,CAAC,MAAM,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC,iBAAiB,CAAC;gBACxD,QAAQ,EAAE,mBAAmB,CAAC,KAAK;aACpC,CAAC,CAAC;YAEH,MAAM,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,SAAS,CAAC,CAAC;YAEtE,MAAM,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC,oBAAoB,CACvD,MAAM,CAAC,QAAQ,EAAE,EACjB,MAAM,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAC9C,CAAC;YACF,MAAM,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,oBAAoB,CAC3D,MAAM,CAAC,QAAQ,EAAE,EACjB,MAAM,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,CAClD,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,+CAA+C,EAAE,KAAK,IAAI,EAAE;YAC7D,MAAM,KAAK,GAAiB;gBAC1B,EAAE,QAAQ,EAAE,cAAc,EAAE,QAAQ,EAAE,cAAc,CAAC,KAAK,EAAE;aAC7D,CAAC;YACF,MAAM,eAAe,GAAsB;gBACzC,OAAO,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE;gBAC/C,QAAQ,EAAE,WAAW;aACtB,CAAC;YAEF,MAAM,GAAG,IAAI,YAAY,CACvB,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,eAAe,CAAC,EAAE,EACtC,iBAAiB,CAClB,CAAC;YAEF,EAAE,CAAC,MAAM,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC,iBAAiB,CAAC;gBACxD,QAAQ,EAAE,mBAAmB,CAAC,KAAK;aACpC,CAAC,CAAC;YAEH,MAAM,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,EAAE,QAAQ,CAAC,CAAC;YAEvD,MAAM,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC,oBAAoB,CACvD,MAAM,CAAC,QAAQ,EAAE,EACjB,MAAM,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAC9C,CAAC;QACJ,CAAC,CAAC,CAAC;QACH,EAAE,CAAC,uFAAuF,EAAE,KAAK,IAAI,EAAE;YACrG,MAAM,KAAK,GAAiB;gBAC1B,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,CAAC,QAAQ,EAAE;aACxD,CAAC;YACF,MAAM,QAAQ,GAAwB;gBACpC;oBACE,OAAO,EAAE;wBACP,IAAI,EAAE,YAAY;wBAClB,IAAI,EAAE,oBAAoB,CAAC,YAAY;qBACxC;iBACF;aACF,CAAC;YAEF,MAAM,GAAG,IAAI,YAAY,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,iBAAiB,CAAC,CAAC;YAElE,EAAE,CAAC,MAAM,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC,iBAAiB,CAAC;gBACxD,QAAQ,EAAE,mBAAmB,CAAC,IAAI;gBAClC,MAAM,EAAE,qBAAqB;aAC9B,CAAC,CAAC;YAEH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,SAAS,CAAC,CAAC;YAC/D,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;YAClD,MAAM,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC,gBAAgB,EAAE,CAAC;QAC1D,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mFAAmF,EAAE,KAAK,IAAI,EAAE;YACjG,MAAM,KAAK,GAAiB;gBAC1B,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,CAAC,QAAQ,EAAE;aACxD,CAAC;YACF,MAAM,QAAQ,GAAwB;gBACpC;oBACE,OAAO,EAAE;wBACP,IAAI,EAAE,YAAY;wBAClB,IAAI,EAAE,oBAAoB,CAAC,YAAY;qBACxC;iBACF;aACF,CAAC;YAEF,MAAM,GAAG,IAAI,YAAY,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,iBAAiB,CAAC,CAAC;YAElE,EAAE,CAAC,MAAM,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC,iBAAiB,CAAC;gBACxD,QAAQ,EAAE,mBAAmB,CAAC,KAAK;aACpC,CAAC,CAAC;YAEH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,SAAS,CAAC,CAAC;YAC/D,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;YACtD,MAAM,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC,gBAAgB,EAAE,CAAC;QAC1D,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,gEAAgE,EAAE,KAAK,IAAI,EAAE;YAC9E,MAAM,KAAK,GAAiB;gBAC1B,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,CAAC,KAAK,EAAE;aACrD,CAAC;YACF,MAAM,QAAQ,GAAwB;gBACpC;oBACE,OAAO,EAAE;wBACP,IAAI,EAAE,YAAY;wBAClB,IAAI,EAAE,oBAAoB,CAAC,YAAY;qBACxC;iBACF;aACF,CAAC;YAEF,MAAM,GAAG,IAAI,YAAY,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,iBAAiB,CAAC,CAAC;YAElE,EAAE,CAAC,MAAM,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC,iBAAiB,CAAC;gBACxD,QAAQ,EAAE,mBAAmB,CAAC,QAAQ;gBACtC,MAAM,EAAE,iBAAiB;aAC1B,CAAC,CAAC;YAEH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,SAAS,CAAC,CAAC;YAC/D,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QACxD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,iEAAiE,EAAE,KAAK,IAAI,EAAE;YAC/E,MAAM,KAAK,GAAiB;gBAC1B,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,CAAC,KAAK,EAAE;aACrD,CAAC;YACF,MAAM,QAAQ,GAAwB;gBACpC;oBACE,OAAO,EAAE;wBACP,IAAI,EAAE,YAAY;wBAClB,IAAI,EAAE,oBAAoB,CAAC,YAAY;qBACxC;iBACF;aACF,CAAC;YAEF,MAAM,GAAG,IAAI,YAAY,CACvB,EAAE,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,IAAI,EAAE,EACzC,iBAAiB,CAClB,CAAC;YAEF,EAAE,CAAC,MAAM,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC,iBAAiB,CAAC;gBACxD,QAAQ,EAAE,mBAAmB,CAAC,QAAQ;gBACtC,MAAM,EAAE,iBAAiB;aAC1B,CAAC,CAAC;YAEH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,SAAS,CAAC,CAAC;YAC/D,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QACpD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"policy-engine.test.js","sourceRoot":"","sources":["../../../src/policy/policy-engine.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,6 +9,15 @@ export declare enum PolicyDecision {
|
|
|
9
9
|
DENY = "deny",
|
|
10
10
|
ASK_USER = "ask_user"
|
|
11
11
|
}
|
|
12
|
+
/**
|
|
13
|
+
* Valid sources for hook execution
|
|
14
|
+
*/
|
|
15
|
+
export type HookSource = 'project' | 'user' | 'system' | 'extension';
|
|
16
|
+
/**
|
|
17
|
+
* Safely extract and validate hook source from input
|
|
18
|
+
* Returns 'project' as default if the value is invalid or missing
|
|
19
|
+
*/
|
|
20
|
+
export declare function getHookSource(input: Record<string, unknown>): HookSource;
|
|
12
21
|
export declare enum ApprovalMode {
|
|
13
22
|
DEFAULT = "default",
|
|
14
23
|
AUTO_EDIT = "autoEdit",
|
|
@@ -95,15 +104,50 @@ export interface SafetyCheckerRule {
|
|
|
95
104
|
*/
|
|
96
105
|
checker: SafetyCheckerConfig;
|
|
97
106
|
}
|
|
107
|
+
export interface HookExecutionContext {
|
|
108
|
+
eventName: string;
|
|
109
|
+
hookSource?: HookSource;
|
|
110
|
+
trustedFolder?: boolean;
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Rule for applying safety checkers to hook executions.
|
|
114
|
+
* Similar to SafetyCheckerRule but with hook-specific matching criteria.
|
|
115
|
+
*/
|
|
116
|
+
export interface HookCheckerRule {
|
|
117
|
+
/**
|
|
118
|
+
* The name of the hook event this rule applies to.
|
|
119
|
+
* If undefined, the rule applies to all hook events.
|
|
120
|
+
*/
|
|
121
|
+
eventName?: string;
|
|
122
|
+
/**
|
|
123
|
+
* The source of hooks this rule applies to.
|
|
124
|
+
* If undefined, the rule applies to all hook sources.
|
|
125
|
+
*/
|
|
126
|
+
hookSource?: HookSource;
|
|
127
|
+
/**
|
|
128
|
+
* Priority of this checker. Higher numbers run first.
|
|
129
|
+
* Default is 0.
|
|
130
|
+
*/
|
|
131
|
+
priority?: number;
|
|
132
|
+
/**
|
|
133
|
+
* Specifies an external or built-in safety checker to execute for
|
|
134
|
+
* additional validation of a hook execution.
|
|
135
|
+
*/
|
|
136
|
+
checker: SafetyCheckerConfig;
|
|
137
|
+
}
|
|
98
138
|
export interface PolicyEngineConfig {
|
|
99
139
|
/**
|
|
100
140
|
* List of policy rules to apply.
|
|
101
141
|
*/
|
|
102
142
|
rules?: PolicyRule[];
|
|
103
143
|
/**
|
|
104
|
-
* List of safety checkers to apply.
|
|
144
|
+
* List of safety checkers to apply to tool calls.
|
|
105
145
|
*/
|
|
106
146
|
checkers?: SafetyCheckerRule[];
|
|
147
|
+
/**
|
|
148
|
+
* List of safety checkers to apply to hook executions.
|
|
149
|
+
*/
|
|
150
|
+
hookCheckers?: HookCheckerRule[];
|
|
107
151
|
/**
|
|
108
152
|
* Default decision when no rules match.
|
|
109
153
|
* Defaults to ASK_USER.
|
|
@@ -114,6 +158,12 @@ export interface PolicyEngineConfig {
|
|
|
114
158
|
* When true, ASK_USER decisions become DENY.
|
|
115
159
|
*/
|
|
116
160
|
nonInteractive?: boolean;
|
|
161
|
+
/**
|
|
162
|
+
* Whether to allow hooks to execute.
|
|
163
|
+
* When false, all hooks are denied.
|
|
164
|
+
* Defaults to true.
|
|
165
|
+
*/
|
|
166
|
+
allowHooks?: boolean;
|
|
117
167
|
}
|
|
118
168
|
export interface PolicySettings {
|
|
119
169
|
mcp?: {
|