@dollhousemcp/mcp-server 2.0.0-rc.5 → 2.0.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/CHANGELOG.md +54 -17
- package/README.github.md +2 -2
- package/README.md +2 -2
- package/README.md.backup +284 -224
- package/README.npm.md +2 -2
- package/dist/cache/LRUCache.d.ts +3 -0
- package/dist/cache/LRUCache.d.ts.map +1 -1
- package/dist/cache/LRUCache.js +36 -26
- package/dist/config/env.d.ts +14 -4
- package/dist/config/env.d.ts.map +1 -1
- package/dist/config/env.js +20 -6
- package/dist/di/Container.d.ts +21 -0
- package/dist/di/Container.d.ts.map +1 -1
- package/dist/di/Container.js +250 -53
- package/dist/elements/BaseElement.d.ts.map +1 -1
- package/dist/elements/BaseElement.js +5 -10
- package/dist/elements/base/BaseElementManager.d.ts +22 -0
- package/dist/elements/base/BaseElementManager.d.ts.map +1 -1
- package/dist/elements/base/BaseElementManager.js +47 -7
- package/dist/elements/memories/Memory.d.ts +1 -0
- package/dist/elements/memories/Memory.d.ts.map +1 -1
- package/dist/elements/memories/Memory.js +12 -8
- package/dist/elements/memories/MemoryManager.d.ts.map +1 -1
- package/dist/elements/memories/MemoryManager.js +23 -42
- package/dist/elements/memories/MemorySearchIndex.js +2 -2
- package/dist/generated/version.d.ts +2 -2
- package/dist/generated/version.d.ts.map +1 -1
- package/dist/generated/version.js +3 -3
- package/dist/handlers/EnhancedIndexHandler.js +6 -6
- package/dist/handlers/element-crud/editElement.d.ts.map +1 -1
- package/dist/handlers/element-crud/editElement.js +39 -18
- package/dist/handlers/element-crud/helpers.d.ts.map +1 -1
- package/dist/handlers/element-crud/helpers.js +30 -3
- package/dist/handlers/element-crud/listElements.d.ts +2 -0
- package/dist/handlers/element-crud/listElements.d.ts.map +1 -1
- package/dist/handlers/element-crud/listElements.js +3 -1
- package/dist/handlers/mcp-aql/Gatekeeper.d.ts.map +1 -1
- package/dist/handlers/mcp-aql/Gatekeeper.js +23 -17
- package/dist/handlers/mcp-aql/GatekeeperTypes.d.ts +4 -0
- package/dist/handlers/mcp-aql/GatekeeperTypes.d.ts.map +1 -1
- package/dist/handlers/mcp-aql/GatekeeperTypes.js +1 -1
- package/dist/handlers/mcp-aql/MCPAQLHandler.d.ts +33 -0
- package/dist/handlers/mcp-aql/MCPAQLHandler.d.ts.map +1 -1
- package/dist/handlers/mcp-aql/MCPAQLHandler.js +232 -23
- package/dist/handlers/mcp-aql/OperationRouter.d.ts.map +1 -1
- package/dist/handlers/mcp-aql/OperationRouter.js +13 -1
- package/dist/handlers/mcp-aql/OperationSchema.d.ts +7 -0
- package/dist/handlers/mcp-aql/OperationSchema.d.ts.map +1 -1
- package/dist/handlers/mcp-aql/OperationSchema.js +52 -1
- package/dist/handlers/mcp-aql/UnifiedEndpoint.d.ts.map +1 -1
- package/dist/handlers/mcp-aql/UnifiedEndpoint.js +4 -3
- package/dist/handlers/mcp-aql/evaluatePermission.d.ts +53 -0
- package/dist/handlers/mcp-aql/evaluatePermission.d.ts.map +1 -0
- package/dist/handlers/mcp-aql/evaluatePermission.js +132 -0
- package/dist/handlers/mcp-aql/policies/ElementPolicies.d.ts +17 -0
- package/dist/handlers/mcp-aql/policies/ElementPolicies.d.ts.map +1 -1
- package/dist/handlers/mcp-aql/policies/ElementPolicies.js +91 -1
- package/dist/handlers/mcp-aql/policies/ToolClassification.d.ts +5 -3
- package/dist/handlers/mcp-aql/policies/ToolClassification.d.ts.map +1 -1
- package/dist/handlers/mcp-aql/policies/ToolClassification.js +56 -2
- package/dist/handlers/mcp-aql/types.d.ts +22 -0
- package/dist/handlers/mcp-aql/types.d.ts.map +1 -1
- package/dist/handlers/mcp-aql/types.js +47 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -3
- package/dist/logging/LogHooks.js +11 -11
- package/dist/logging/LogManager.d.ts +0 -2
- package/dist/logging/LogManager.d.ts.map +1 -1
- package/dist/logging/LogManager.js +1 -3
- package/dist/logging/sinks/MemoryLogSink.d.ts +2 -0
- package/dist/logging/sinks/MemoryLogSink.d.ts.map +1 -1
- package/dist/logging/sinks/MemoryLogSink.js +12 -3
- package/dist/logging/types.d.ts +0 -2
- package/dist/logging/types.d.ts.map +1 -1
- package/dist/logging/types.js +1 -1
- package/dist/metrics/GatekeeperMetricsTracker.d.ts +32 -0
- package/dist/metrics/GatekeeperMetricsTracker.d.ts.map +1 -0
- package/dist/metrics/GatekeeperMetricsTracker.js +42 -0
- package/dist/metrics/MetricsManager.d.ts +47 -0
- package/dist/metrics/MetricsManager.d.ts.map +1 -0
- package/dist/metrics/MetricsManager.js +232 -0
- package/dist/metrics/OperationMetricsTracker.d.ts +32 -0
- package/dist/metrics/OperationMetricsTracker.d.ts.map +1 -0
- package/dist/metrics/OperationMetricsTracker.js +53 -0
- package/dist/metrics/collectors/DefaultElementProviderCollector.d.ts +27 -0
- package/dist/metrics/collectors/DefaultElementProviderCollector.d.ts.map +1 -0
- package/dist/metrics/collectors/DefaultElementProviderCollector.js +69 -0
- package/dist/metrics/collectors/FileLockManagerCollector.d.ts +16 -0
- package/dist/metrics/collectors/FileLockManagerCollector.d.ts.map +1 -0
- package/dist/metrics/collectors/FileLockManagerCollector.js +51 -0
- package/dist/metrics/collectors/GatekeeperMetricsCollector.d.ts +16 -0
- package/dist/metrics/collectors/GatekeeperMetricsCollector.d.ts.map +1 -0
- package/dist/metrics/collectors/GatekeeperMetricsCollector.js +76 -0
- package/dist/metrics/collectors/LRUCacheCollector.d.ts +18 -0
- package/dist/metrics/collectors/LRUCacheCollector.d.ts.map +1 -0
- package/dist/metrics/collectors/LRUCacheCollector.js +95 -0
- package/dist/metrics/collectors/OperationMetricsCollector.d.ts +16 -0
- package/dist/metrics/collectors/OperationMetricsCollector.d.ts.map +1 -0
- package/dist/metrics/collectors/OperationMetricsCollector.js +80 -0
- package/dist/metrics/collectors/OperationalTelemetryCollector.d.ts +17 -0
- package/dist/metrics/collectors/OperationalTelemetryCollector.d.ts.map +1 -0
- package/dist/metrics/collectors/OperationalTelemetryCollector.js +26 -0
- package/dist/metrics/collectors/PerformanceMonitorCollector.d.ts +14 -0
- package/dist/metrics/collectors/PerformanceMonitorCollector.d.ts.map +1 -0
- package/dist/metrics/collectors/PerformanceMonitorCollector.js +141 -0
- package/dist/metrics/collectors/SecurityMonitorCollector.d.ts +21 -0
- package/dist/metrics/collectors/SecurityMonitorCollector.d.ts.map +1 -0
- package/dist/metrics/collectors/SecurityMonitorCollector.js +56 -0
- package/dist/metrics/collectors/SecurityTelemetryCollector.d.ts +15 -0
- package/dist/metrics/collectors/SecurityTelemetryCollector.d.ts.map +1 -0
- package/dist/metrics/collectors/SecurityTelemetryCollector.js +112 -0
- package/dist/metrics/collectors/TriggerMetricsTrackerCollector.d.ts +16 -0
- package/dist/metrics/collectors/TriggerMetricsTrackerCollector.d.ts.map +1 -0
- package/dist/metrics/collectors/TriggerMetricsTrackerCollector.js +26 -0
- package/dist/metrics/collectors/index.d.ts +11 -0
- package/dist/metrics/collectors/index.d.ts.map +1 -0
- package/dist/metrics/collectors/index.js +11 -0
- package/dist/metrics/sinks/MemoryMetricsSink.d.ts +22 -0
- package/dist/metrics/sinks/MemoryMetricsSink.d.ts.map +1 -0
- package/dist/metrics/sinks/MemoryMetricsSink.js +121 -0
- package/dist/metrics/types.d.ts +98 -0
- package/dist/metrics/types.d.ts.map +1 -0
- package/dist/metrics/types.js +24 -0
- package/dist/portfolio/DefaultElementProvider.d.ts.map +1 -1
- package/dist/portfolio/DefaultElementProvider.js +1 -7
- package/dist/portfolio/EnhancedIndexManager.d.ts.map +1 -1
- package/dist/portfolio/EnhancedIndexManager.js +18 -18
- package/dist/portfolio/NLPScoringManager.d.ts.map +1 -1
- package/dist/portfolio/NLPScoringManager.js +5 -9
- package/dist/portfolio/PortfolioIndexManager.js +2 -2
- package/dist/portfolio/RelationshipManager.js +2 -2
- package/dist/portfolio/VerbTriggerManager.d.ts.map +1 -1
- package/dist/portfolio/VerbTriggerManager.js +5 -19
- package/dist/portfolio/config/IndexConfig.d.ts.map +1 -1
- package/dist/portfolio/config/IndexConfig.js +1 -12
- package/dist/portfolio/enhanced-index/ElementDefinitionBuilder.d.ts.map +1 -1
- package/dist/portfolio/enhanced-index/ElementDefinitionBuilder.js +3 -15
- package/dist/portfolio/enhanced-index/SemanticRelationshipService.d.ts.map +1 -1
- package/dist/portfolio/enhanced-index/SemanticRelationshipService.js +2 -16
- package/dist/portfolio/types/RelationshipTypes.d.ts.map +1 -1
- package/dist/portfolio/types/RelationshipTypes.js +3 -17
- package/dist/security/audit/config/suppressions.d.ts.map +1 -1
- package/dist/security/audit/config/suppressions.js +36 -8
- package/dist/security/constants.d.ts.map +1 -1
- package/dist/security/constants.js +10 -6
- package/dist/security/fileLockManager.d.ts.map +1 -1
- package/dist/security/fileLockManager.js +8 -6
- package/dist/security/secureYamlParser.d.ts.map +1 -1
- package/dist/security/secureYamlParser.js +1 -13
- package/dist/security/securityMonitor.d.ts +2 -1
- package/dist/security/securityMonitor.d.ts.map +1 -1
- package/dist/security/securityMonitor.js +14 -3
- package/dist/security/telemetry/SecurityTelemetry.d.ts +16 -0
- package/dist/security/telemetry/SecurityTelemetry.d.ts.map +1 -1
- package/dist/security/telemetry/SecurityTelemetry.js +30 -2
- package/dist/security/tokenManager.d.ts +3 -0
- package/dist/security/tokenManager.d.ts.map +1 -1
- package/dist/security/tokenManager.js +13 -5
- package/dist/security/validation/BackgroundValidator.d.ts.map +1 -1
- package/dist/security/validation/BackgroundValidator.js +7 -7
- package/dist/server/startup.d.ts.map +1 -1
- package/dist/server/startup.js +8 -24
- package/dist/server/tools/MCPAQLTools.js +8 -1
- package/dist/services/ActivationStore.d.ts.map +1 -1
- package/dist/services/ActivationStore.js +9 -3
- package/dist/services/FileWatchService.d.ts +1 -0
- package/dist/services/FileWatchService.d.ts.map +1 -1
- package/dist/services/FileWatchService.js +83 -48
- package/dist/services/MetadataService.d.ts.map +1 -1
- package/dist/services/MetadataService.js +7 -2
- package/dist/services/PolicyExportService.d.ts.map +1 -1
- package/dist/services/PolicyExportService.js +8 -1
- package/dist/services/query/ElementQueryService.d.ts.map +1 -1
- package/dist/services/query/ElementQueryService.js +1 -41
- package/dist/services/query/PaginationService.d.ts.map +1 -1
- package/dist/services/query/PaginationService.js +1 -14
- package/dist/services/query/SortService.d.ts.map +1 -1
- package/dist/services/query/SortService.js +1 -6
- package/dist/services/validation/ValidationService.d.ts.map +1 -1
- package/dist/services/validation/ValidationService.js +3 -8
- package/dist/storage/ElementStorageLayer.d.ts.map +1 -1
- package/dist/storage/ElementStorageLayer.js +5 -2
- package/dist/storage/MemoryStorageLayer.d.ts.map +1 -1
- package/dist/storage/MemoryStorageLayer.js +5 -2
- package/dist/telemetry/OperationalTelemetry.js +2 -2
- package/dist/utils/EventDeduplicator.d.ts +44 -0
- package/dist/utils/EventDeduplicator.d.ts.map +1 -0
- package/dist/utils/EventDeduplicator.js +93 -0
- package/dist/utils/FileLock.d.ts.map +1 -1
- package/dist/utils/FileLock.js +1 -9
- package/dist/utils/PerformanceMonitor.d.ts.map +1 -1
- package/dist/utils/PerformanceMonitor.js +5 -5
- package/dist/utils/SlidingWindowRateLimiter.d.ts +13 -0
- package/dist/utils/SlidingWindowRateLimiter.d.ts.map +1 -0
- package/dist/utils/SlidingWindowRateLimiter.js +23 -0
- package/dist/web/console/IngestRoutes.d.ts +84 -0
- package/dist/web/console/IngestRoutes.d.ts.map +1 -0
- package/dist/web/console/IngestRoutes.js +252 -0
- package/dist/web/console/LeaderElection.d.ts +89 -0
- package/dist/web/console/LeaderElection.d.ts.map +1 -0
- package/dist/web/console/LeaderElection.js +205 -0
- package/dist/web/console/LeaderForwardingSink.d.ts +61 -0
- package/dist/web/console/LeaderForwardingSink.d.ts.map +1 -0
- package/dist/web/console/LeaderForwardingSink.js +197 -0
- package/dist/web/console/SessionNames.d.ts +46 -0
- package/dist/web/console/SessionNames.d.ts.map +1 -0
- package/dist/web/console/SessionNames.js +257 -0
- package/dist/web/console/UnifiedConsole.d.ts +64 -0
- package/dist/web/console/UnifiedConsole.d.ts.map +1 -0
- package/dist/web/console/UnifiedConsole.js +119 -0
- package/dist/web/contentPipeline.d.ts +58 -0
- package/dist/web/contentPipeline.d.ts.map +1 -0
- package/dist/web/contentPipeline.js +112 -0
- package/dist/web/portDiscovery.d.ts +58 -0
- package/dist/web/portDiscovery.d.ts.map +1 -0
- package/dist/web/portDiscovery.js +143 -0
- package/dist/web/public/app.js +148 -60
- package/dist/web/public/logs.js +638 -0
- package/dist/web/public/metrics.js +682 -0
- package/dist/web/public/permissions.js +394 -0
- package/dist/web/public/sessions.js +369 -0
- package/dist/web/routes/healthRoutes.d.ts +16 -0
- package/dist/web/routes/healthRoutes.d.ts.map +1 -0
- package/dist/web/routes/healthRoutes.js +29 -0
- package/dist/web/routes/logRoutes.d.ts +18 -0
- package/dist/web/routes/logRoutes.d.ts.map +1 -0
- package/dist/web/routes/logRoutes.js +126 -0
- package/dist/web/routes/metricsRoutes.d.ts +17 -0
- package/dist/web/routes/metricsRoutes.d.ts.map +1 -0
- package/dist/web/routes/metricsRoutes.js +90 -0
- package/dist/web/routes/permissionRoutes.d.ts +16 -0
- package/dist/web/routes/permissionRoutes.d.ts.map +1 -0
- package/dist/web/routes/permissionRoutes.js +133 -0
- package/dist/web/routes.d.ts.map +1 -1
- package/dist/web/routes.js +309 -339
- package/dist/web/server.d.ts +21 -1
- package/dist/web/server.d.ts.map +1 -1
- package/dist/web/server.js +42 -4
- package/dist/web/sinks/WebSSELogSink.d.ts +15 -0
- package/dist/web/sinks/WebSSELogSink.d.ts.map +1 -0
- package/dist/web/sinks/WebSSELogSink.js +22 -0
- package/dist/web/sinks/WebSSEMetricsSink.d.ts +16 -0
- package/dist/web/sinks/WebSSEMetricsSink.d.ts.map +1 -0
- package/dist/web/sinks/WebSSEMetricsSink.js +23 -0
- package/package.json +2 -2
- package/server.json +2 -2
- package/dist/constants/version.d.ts +0 -3
- package/dist/constants/version.d.ts.map +0 -1
- package/dist/constants/version.js +0 -4
- package/dist/logging/sinks/SSELogSink.d.ts +0 -35
- package/dist/logging/sinks/SSELogSink.d.ts.map +0 -1
- package/dist/logging/sinks/SSELogSink.js +0 -181
- package/dist/logging/viewer/viewerHtml.d.ts +0 -8
- package/dist/logging/viewer/viewerHtml.d.ts.map +0 -1
- package/dist/logging/viewer/viewerHtml.js +0 -204
- package/dist/web/public/public/app.js +0 -1878
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UnifiedEndpoint.d.ts","sourceRoot":"","sources":["../../../src/handlers/mcp-aql/UnifiedEndpoint.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,OAAO,EAAE,eAAe,EAAE,WAAW,
|
|
1
|
+
{"version":3,"file":"UnifiedEndpoint.d.ts","sourceRoot":"","sources":["../../../src/handlers/mcp-aql/UnifiedEndpoint.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,OAAO,EAAE,eAAe,EAAE,WAAW,EAA6E,MAAM,YAAY,CAAC;AAIrI;;;;;;;;;;;;;;GAcG;AACH,qBAAa,eAAe;IACd,OAAO,CAAC,QAAQ,CAAC,aAAa;gBAAb,aAAa,EAAE,aAAa;IAEzD;;;;;;;;;;;OAWG;IACG,MAAM,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,eAAe,GAAG,WAAW,CAAC;IAwEpE;;;;;;OAMG;YACW,cAAc;IAuB5B;;;OAGG;IACH,OAAO,CAAC,SAAS;IAQjB;;OAEG;IACH,OAAO,CAAC,OAAO;CAOhB;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,CAqCzC"}
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
* - Full audit logging for all operations
|
|
23
23
|
*/
|
|
24
24
|
import { getRoute } from './OperationRouter.js';
|
|
25
|
-
import { isOperationInput, parseOperationInput } from './types.js';
|
|
25
|
+
import { isOperationInput, parseOperationInput, describeInvalidInput } from './types.js';
|
|
26
26
|
import { logger } from '../../utils/logger.js';
|
|
27
27
|
import { SecurityMonitor } from '../../security/securityMonitor.js';
|
|
28
28
|
/**
|
|
@@ -66,7 +66,8 @@ export class UnifiedEndpoint {
|
|
|
66
66
|
// Step 1: Validate and normalize input structure (supports silent JSON fallback)
|
|
67
67
|
const parsedInput = parseOperationInput(input);
|
|
68
68
|
if (!parsedInput) {
|
|
69
|
-
return this.failure('Invalid input: expected OperationInput with operation name and optional params'
|
|
69
|
+
return this.failure('Invalid input: expected OperationInput with operation name and optional params. ' +
|
|
70
|
+
describeInvalidInput(input), startTime);
|
|
70
71
|
}
|
|
71
72
|
const { operation } = parsedInput;
|
|
72
73
|
// Step 2: Determine the correct CRUD endpoint for this operation
|
|
@@ -204,4 +205,4 @@ export function getOperationHelp() {
|
|
|
204
205
|
- abort_execution: Abort a running execution
|
|
205
206
|
`.trim();
|
|
206
207
|
}
|
|
207
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVW5pZmllZEVuZHBvaW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2hhbmRsZXJzL21jcC1hcWwvVW5pZmllZEVuZHBvaW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBc0JHO0FBR0gsT0FBTyxFQUFFLFFBQVEsRUFBZ0IsTUFBTSxzQkFBc0IsQ0FBQztBQUM5RCxPQUFPLEVBQThDLGdCQUFnQixFQUFFLG1CQUFtQixFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQy9HLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFFcEU7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFDSCxNQUFNLE9BQU8sZUFBZTtJQUNHO0lBQTdCLFlBQTZCLGFBQTRCO1FBQTVCLGtCQUFhLEdBQWIsYUFBYSxDQUFlO0lBQUcsQ0FBQztJQUU3RDs7Ozs7Ozs7Ozs7T0FXRztJQUNILEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBYztRQUN6Qiw4REFBOEQ7UUFDOUQsTUFBTSxTQUFTLEdBQUcsV0FBVyxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBRXBDLHFFQUFxRTtRQUNyRSxNQUFNLGFBQWEsR0FBRyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1FBRTVFLElBQUksQ0FBQztZQUNILGlGQUFpRjtZQUNqRixNQUFNLFdBQVcsR0FBRyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMvQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7Z0JBQ2pCLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FDakIsZ0ZBQWdGLEVBQ2hGLFNBQVMsQ0FDVixDQUFDO1lBQ0osQ0FBQztZQUVELE1BQU0sRUFBRSxTQUFTLEVBQUUsR0FBRyxXQUFXLENBQUM7WUFFbEMsaUVBQWlFO1lBQ2pFLE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUNsQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQ1gsZUFBZSxDQUFDLGdCQUFnQixDQUFDO29CQUMvQixJQUFJLEVBQUUsMkJBQTJCO29CQUNqQyxRQUFRLEVBQUUsUUFBUTtvQkFDbEIsTUFBTSxFQUFFLHdCQUF3QjtvQkFDaEMsT0FBTyxFQUFFLHVCQUF1QixTQUFTLEdBQUc7b0JBQzVDLGNBQWMsRUFBRSxFQUFFLFNBQVMsRUFBRTtpQkFDOUIsQ0FBQyxDQUFDO2dCQUNILE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FDakIsdUJBQXVCLFNBQVMsbURBQW1ELEVBQ25GLFNBQVMsQ0FDVixDQUFDO1lBQ0osQ0FBQztZQUVELGtEQUFrRDtZQUNsRCw4REFBOEQ7WUFDOUQsdURBQXVEO1lBQ3ZELE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLFdBQVcsQ0FBQyxDQUFDO1lBRXRFLHlCQUF5QjtZQUN6QixlQUFlLENBQUMsZ0JBQWdCLENBQUM7Z0JBQy9CLElBQUksRUFBRSxpQkFBaUI7Z0JBQ3ZCLFFBQVEsRUFBRSxLQUFLO2dCQUNmLE1BQU0sRUFBRSx3QkFBd0I7Z0JBQ2hDLE9BQU8sRUFBRSxjQUFjLFNBQVMsZUFBZSxLQUFLLENBQUMsUUFBUSxVQUFVO2dCQUN2RSxjQUFjLEVBQUUsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLEtBQUssQ0FBQyxRQUFRLEVBQUU7YUFDeEQsQ0FBQyxDQUFDO1lBRUgsT0FBTyxNQUFNLENBQUM7UUFDaEIsQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDZixNQUFNLE9BQU8sR0FBRyxLQUFLLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7WUFFdkUsZUFBZSxDQUFDLGdCQUFnQixDQUFDO2dCQUMvQixJQUFJLEVBQUUsMkJBQTJCO2dCQUNqQyxRQUFRLEVBQUUsUUFBUTtnQkFDbEIsTUFBTSxFQUFFLHdCQUF3QjtnQkFDaEMsT0FBTyxFQUFFLGNBQWMsYUFBYSxhQUFhLE9BQU8sRUFBRTtnQkFDMUQsY0FBYyxFQUFFLEVBQUUsU0FBUyxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFO2FBQzdELENBQUMsQ0FBQztZQUVILE1BQU0sQ0FBQyxLQUFLLENBQUMsa0NBQWtDLEVBQUU7Z0JBQy9DLFNBQVMsRUFBRSxhQUFhO2dCQUN4QixLQUFLLEVBQUUsT0FBTztnQkFDZCxLQUFLLEVBQUUsS0FBSyxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsU0FBUzthQUN4RCxDQUFDLENBQUM7WUFFSCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQzFDLENBQUM7SUFDSCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ssS0FBSyxDQUFDLGNBQWMsQ0FDMUIsUUFBc0IsRUFDdEIsS0FBYztRQUVkLFFBQVEsUUFBUSxFQUFFLENBQUM7WUFDakIsS0FBSyxRQUFRO2dCQUNYLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDaEQsS0FBSyxNQUFNO2dCQUNULE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDOUMsS0FBSyxRQUFRO2dCQUNYLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDaEQsS0FBSyxRQUFRO2dCQUNYLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDaEQsS0FBSyxTQUFTO2dCQUNaLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDakQsT0FBTyxDQUFDLENBQUMsQ0FBQztnQkFDUixnRUFBZ0U7Z0JBQ2hFLE1BQU0sV0FBVyxHQUFVLFFBQVEsQ0FBQztnQkFDcEMsT0FBTyxXQUFXLENBQUM7WUFDckIsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ssU0FBUyxDQUFDLFNBQWlCO1FBQ2pDLE9BQU87WUFDTCxTQUFTLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLFNBQVM7WUFDN0QsVUFBVSxFQUFFLFVBQVUsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxTQUFTLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDbEUsU0FBUyxFQUFFLElBQUksSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFO1NBQ3BDLENBQUM7SUFDSixDQUFDO0lBRUQ7O09BRUc7SUFDSyxPQUFPLENBQUMsS0FBYSxFQUFFLFNBQWlCO1FBQzlDLE9BQU87WUFDTCxPQUFPLEVBQUUsS0FBSztZQUNkLEtBQUs7WUFDTCxLQUFLLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUM7U0FDakMsQ0FBQztJQUNKLENBQUM7Q0FDRjtBQUVEOzs7OztHQUtHO0FBQ0gsTUFBTSxVQUFVLGdCQUFnQjtJQUM5QixPQUFPOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQW1DUixDQUFDLElBQUksRUFBRSxDQUFDO0FBQ1QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVW5pZmllZEVuZHBvaW50IC0gU2luZ2xlIHVuaWZpZWQgTUNQLUFRTCBlbmRwb2ludCBoYW5kbGVyIChJc3N1ZSAjMTk2KVxuICpcbiAqIFRoaXMgaGFuZGxlciBwcm92aWRlcyBhIHNpbmdsZSBgbWNwX2FxbGAgZW5kcG9pbnQgYXMgYW4gYWx0ZXJuYXRpdmUgdG8gdGhlXG4gKiA0IENSVUQgZW5kcG9pbnRzIGZvciB1c2VycyB3aG8gd2FudCBtaW5pbWFsIHRva2VuIGZvb3RwcmludCAofjMwMC00MDAgdG9rZW5zXG4gKiB2cyB+OTQzIHRva2VucyBmb3IgNCBlbmRwb2ludHMpLlxuICpcbiAqIEFSQ0hJVEVDVFVSRTpcbiAqIC0gU2luZ2xlIGVudHJ5IHBvaW50IGZvciBhbGwgTUNQLUFRTCBvcGVyYXRpb25zXG4gKiAtIFJvdXRlcyBpbnRlcm5hbGx5IHRvIGFwcHJvcHJpYXRlIE1DUEFRTEhhbmRsZXIgbWV0aG9kc1xuICogLSBVc2VzIEdhdGVrZWVwZXIgKFBlcm1pc3Npb25HdWFyZCkgZm9yIGFsbCBwZXJtaXNzaW9uIGNoZWNrc1xuICogLSBNYWludGFpbnMgZnVsbCBzZWN1cml0eSB3aXRoIG1pbmltYWwgY2xpZW50LXNpZGUgZm9vdHByaW50XG4gKlxuICogVVNFIENBU0VTOlxuICogLSBNdWx0aS1zZXJ2ZXIgZGVwbG95bWVudHMgd2hlcmUgdG9rZW4gYnVkZ2V0IGlzIGNvbnN0cmFpbmVkXG4gKiAtIENsaWVudHMgdGhhdCBwcmVmZXIgc2ltcGxlciB0b29sIGludGVyZmFjZXNcbiAqIC0gSW50ZWdyYXRpb24gc2NlbmFyaW9zIHdoZXJlIDQgZW5kcG9pbnRzIGNyZWF0ZSBjb21wbGV4aXR5XG4gKlxuICogU0VDVVJJVFk6XG4gKiAtIEFsbCBvcGVyYXRpb25zIHBhc3MgdGhyb3VnaCBQZXJtaXNzaW9uR3VhcmQudmFsaWRhdGUoKVxuICogLSBPcGVyYXRpb24gcm91dGluZyBpcyBkZXRlcm1pbmVkIHNlcnZlci1zaWRlLCBub3QgY2xpZW50LXNpZGVcbiAqIC0gRnVsbCBhdWRpdCBsb2dnaW5nIGZvciBhbGwgb3BlcmF0aW9uc1xuICovXG5cbmltcG9ydCB7IE1DUEFRTEhhbmRsZXIgfSBmcm9tICcuL01DUEFRTEhhbmRsZXIuanMnO1xuaW1wb3J0IHsgZ2V0Um91dGUsIENSVURFbmRwb2ludCB9IGZyb20gJy4vT3BlcmF0aW9uUm91dGVyLmpzJztcbmltcG9ydCB7IE9wZXJhdGlvblJlc3VsdCwgQmF0Y2hSZXN1bHQsIFJlc3BvbnNlTWV0YSwgaXNPcGVyYXRpb25JbnB1dCwgcGFyc2VPcGVyYXRpb25JbnB1dCB9IGZyb20gJy4vdHlwZXMuanMnO1xuaW1wb3J0IHsgbG9nZ2VyIH0gZnJvbSAnLi4vLi4vdXRpbHMvbG9nZ2VyLmpzJztcbmltcG9ydCB7IFNlY3VyaXR5TW9uaXRvciB9IGZyb20gJy4uLy4uL3NlY3VyaXR5L3NlY3VyaXR5TW9uaXRvci5qcyc7XG5cbi8qKlxuICogVW5pZmllZEVuZHBvaW50IC0gU2luZ2xlIGVudHJ5IHBvaW50IGZvciBhbGwgTUNQLUFRTCBvcGVyYXRpb25zXG4gKlxuICogVGhpcyBjbGFzcyB3cmFwcyBNQ1BBUUxIYW5kbGVyIHRvIHByb3ZpZGUgYSB1bmlmaWVkIGVuZHBvaW50IHRoYXRcbiAqIGF1dG9tYXRpY2FsbHkgcm91dGVzIG9wZXJhdGlvbnMgdG8gdGhlIGNvcnJlY3QgQ1JVRCBoYW5kbGVyIGJhc2VkXG4gKiBvbiB0aGUgb3BlcmF0aW9uIG5hbWUuXG4gKlxuICogU0VDVVJJVFkgTk9URTpcbiAqIFVubGlrZSB0aGUgNC1lbmRwb2ludCBtb2RlIHdoZXJlIHRoZSBjbGllbnQgY2hvb3NlcyB3aGljaCBlbmRwb2ludCB0byBjYWxsLFxuICogaW4gc2luZ2xlLWVuZHBvaW50IG1vZGUgdGhlIHNlcnZlciBkZXRlcm1pbmVzIHRoZSBhcHByb3ByaWF0ZSBoYW5kbGVyXG4gKiBiYXNlZCBvbiB0aGUgb3BlcmF0aW9uIG5hbWUuIFRoaXMgbWVhbnM6XG4gKiAxLiBUaGUgY2xpZW50IGNhbm5vdCBieXBhc3Mgc2VjdXJpdHkgYnkgY2FsbGluZyB0aGUgd3JvbmcgZW5kcG9pbnRcbiAqIDIuIEFsbCByb3V0aW5nIGlzIGVuZm9yY2VkIHNlcnZlci1zaWRlIHZpYSBQZXJtaXNzaW9uR3VhcmRcbiAqIDMuIFRoZSBvcGVyYXRpb24tdG8tZW5kcG9pbnQgbWFwcGluZyBpcyBhdXRob3JpdGF0aXZlXG4gKi9cbmV4cG9ydCBjbGFzcyBVbmlmaWVkRW5kcG9pbnQge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IG1jcEFxbEhhbmRsZXI6IE1DUEFRTEhhbmRsZXIpIHt9XG5cbiAgLyoqXG4gICAqIEhhbmRsZSBhbnkgTUNQLUFRTCBvcGVyYXRpb24gdGhyb3VnaCB0aGUgdW5pZmllZCBlbmRwb2ludC5cbiAgICpcbiAgICogVGhpcyBtZXRob2Q6XG4gICAqIDEuIFZhbGlkYXRlcyBpbnB1dCBzdHJ1Y3R1cmVcbiAgICogMi4gRGV0ZXJtaW5lcyB0aGUgY29ycmVjdCBDUlVEIGVuZHBvaW50IGZvciB0aGUgb3BlcmF0aW9uXG4gICAqIDMuIFJvdXRlcyB0byB0aGUgYXBwcm9wcmlhdGUgaGFuZGxlciBtZXRob2RcbiAgICogNC4gUmV0dXJucyBzdGFuZGFyZGl6ZWQgT3BlcmF0aW9uUmVzdWx0IG9yIEJhdGNoUmVzdWx0XG4gICAqXG4gICAqIEBwYXJhbSBpbnB1dCAtIE9wZXJhdGlvbiBpbnB1dCB3aXRoIG9wZXJhdGlvbiBuYW1lIGFuZCBwYXJhbXMsIG9yIEJhdGNoUmVxdWVzdFxuICAgKiBAcmV0dXJucyBPcGVyYXRpb25SZXN1bHQgb3IgQmF0Y2hSZXN1bHQgd2l0aCBzdWNjZXNzL2ZhaWx1cmUgc3RhdHVzXG4gICAqL1xuICBhc3luYyBoYW5kbGUoaW5wdXQ6IHVua25vd24pOiBQcm9taXNlPE9wZXJhdGlvblJlc3VsdCB8IEJhdGNoUmVzdWx0PiB7XG4gICAgLy8gSXNzdWUgIzMwMTogQ2FwdHVyZSBzdGFydCB0aW1lIGZvciByZXNwb25zZSB0aW1pbmcgbWV0YWRhdGFcbiAgICBjb25zdCBzdGFydFRpbWUgPSBwZXJmb3JtYW5jZS5ub3coKTtcblxuICAgIC8vIEV4dHJhY3Qgb3BlcmF0aW9uIG5hbWUgZm9yIGxvZ2dpbmcgKHNhZmUgYWNjZXNzIGJlZm9yZSB2YWxpZGF0aW9uKVxuICAgIGNvbnN0IG9wZXJhdGlvbk5hbWUgPSBpc09wZXJhdGlvbklucHV0KGlucHV0KSA/IGlucHV0Lm9wZXJhdGlvbiA6ICd1bmtub3duJztcblxuICAgIHRyeSB7XG4gICAgICAvLyBTdGVwIDE6IFZhbGlkYXRlIGFuZCBub3JtYWxpemUgaW5wdXQgc3RydWN0dXJlIChzdXBwb3J0cyBzaWxlbnQgSlNPTiBmYWxsYmFjaylcbiAgICAgIGNvbnN0IHBhcnNlZElucHV0ID0gcGFyc2VPcGVyYXRpb25JbnB1dChpbnB1dCk7XG4gICAgICBpZiAoIXBhcnNlZElucHV0KSB7XG4gICAgICAgIHJldHVybiB0aGlzLmZhaWx1cmUoXG4gICAgICAgICAgJ0ludmFsaWQgaW5wdXQ6IGV4cGVjdGVkIE9wZXJhdGlvbklucHV0IHdpdGggb3BlcmF0aW9uIG5hbWUgYW5kIG9wdGlvbmFsIHBhcmFtcycsXG4gICAgICAgICAgc3RhcnRUaW1lXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHsgb3BlcmF0aW9uIH0gPSBwYXJzZWRJbnB1dDtcblxuICAgICAgLy8gU3RlcCAyOiBEZXRlcm1pbmUgdGhlIGNvcnJlY3QgQ1JVRCBlbmRwb2ludCBmb3IgdGhpcyBvcGVyYXRpb25cbiAgICAgIGNvbnN0IHJvdXRlID0gZ2V0Um91dGUob3BlcmF0aW9uKTtcbiAgICAgIGlmICghcm91dGUpIHtcbiAgICAgICAgU2VjdXJpdHlNb25pdG9yLmxvZ1NlY3VyaXR5RXZlbnQoe1xuICAgICAgICAgIHR5cGU6ICdVUERBVEVfU0VDVVJJVFlfVklPTEFUSU9OJyxcbiAgICAgICAgICBzZXZlcml0eTogJ01FRElVTScsXG4gICAgICAgICAgc291cmNlOiAnVW5pZmllZEVuZHBvaW50LmhhbmRsZScsXG4gICAgICAgICAgZGV0YWlsczogYFVua25vd24gb3BlcmF0aW9uOiBcIiR7b3BlcmF0aW9ufVwiYCxcbiAgICAgICAgICBhZGRpdGlvbmFsRGF0YTogeyBvcGVyYXRpb24gfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRoaXMuZmFpbHVyZShcbiAgICAgICAgICBgVW5rbm93biBvcGVyYXRpb246IFwiJHtvcGVyYXRpb259XCIuIFNlZSB0b29sIGRlc2NyaXB0aW9uIGZvciBhdmFpbGFibGUgb3BlcmF0aW9ucy5gLFxuICAgICAgICAgIHN0YXJ0VGltZVxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICAvLyBTdGVwIDM6IFJvdXRlIHRvIHRoZSBhcHByb3ByaWF0ZSBoYW5kbGVyIG1ldGhvZFxuICAgICAgLy8gVGhlIGhhbmRsZXIgd2lsbCBwZXJmb3JtIGl0cyBvd24gUGVybWlzc2lvbkd1YXJkIHZhbGlkYXRpb25cbiAgICAgIC8vIFBhc3MgcGFyc2VkSW5wdXQgdG8gZW5zdXJlIG5vcm1hbGl6ZWQgZm9ybWF0IGlzIHVzZWRcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMucm91dGVUb0hhbmRsZXIocm91dGUuZW5kcG9pbnQsIHBhcnNlZElucHV0KTtcblxuICAgICAgLy8gTG9nIHN1Y2Nlc3NmdWwgcm91dGluZ1xuICAgICAgU2VjdXJpdHlNb25pdG9yLmxvZ1NlY3VyaXR5RXZlbnQoe1xuICAgICAgICB0eXBlOiAnRUxFTUVOVF9DUkVBVEVEJyxcbiAgICAgICAgc2V2ZXJpdHk6ICdMT1cnLFxuICAgICAgICBzb3VyY2U6ICdVbmlmaWVkRW5kcG9pbnQuaGFuZGxlJyxcbiAgICAgICAgZGV0YWlsczogYE9wZXJhdGlvbiAnJHtvcGVyYXRpb259JyByb3V0ZWQgdG8gJHtyb3V0ZS5lbmRwb2ludH0gaGFuZGxlcmAsXG4gICAgICAgIGFkZGl0aW9uYWxEYXRhOiB7IG9wZXJhdGlvbiwgZW5kcG9pbnQ6IHJvdXRlLmVuZHBvaW50IH1cbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zdCBtZXNzYWdlID0gZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiBTdHJpbmcoZXJyb3IpO1xuXG4gICAgICBTZWN1cml0eU1vbml0b3IubG9nU2VjdXJpdHlFdmVudCh7XG4gICAgICAgIHR5cGU6ICdVUERBVEVfU0VDVVJJVFlfVklPTEFUSU9OJyxcbiAgICAgICAgc2V2ZXJpdHk6ICdNRURJVU0nLFxuICAgICAgICBzb3VyY2U6ICdVbmlmaWVkRW5kcG9pbnQuaGFuZGxlJyxcbiAgICAgICAgZGV0YWlsczogYE9wZXJhdGlvbiAnJHtvcGVyYXRpb25OYW1lfScgZmFpbGVkOiAke21lc3NhZ2V9YCxcbiAgICAgICAgYWRkaXRpb25hbERhdGE6IHsgb3BlcmF0aW9uOiBvcGVyYXRpb25OYW1lLCBlcnJvcjogbWVzc2FnZSB9XG4gICAgICB9KTtcblxuICAgICAgbG9nZ2VyLmVycm9yKCdVbmlmaWVkRW5kcG9pbnQgb3BlcmF0aW9uIGZhaWxlZCcsIHtcbiAgICAgICAgb3BlcmF0aW9uOiBvcGVyYXRpb25OYW1lLFxuICAgICAgICBlcnJvcjogbWVzc2FnZSxcbiAgICAgICAgc3RhY2s6IGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5zdGFjayA6IHVuZGVmaW5lZCxcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gdGhpcy5mYWlsdXJlKG1lc3NhZ2UsIHN0YXJ0VGltZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJvdXRlIGlucHV0IHRvIHRoZSBhcHByb3ByaWF0ZSBDUlVEIGhhbmRsZXIgYmFzZWQgb24gZW5kcG9pbnQgdHlwZS5cbiAgICpcbiAgICogQHBhcmFtIGVuZHBvaW50IC0gVGhlIENSVUQgZW5kcG9pbnQgZGV0ZXJtaW5lZCBmcm9tIG9wZXJhdGlvbiByb3V0aW5nXG4gICAqIEBwYXJhbSBpbnB1dCAtIFRoZSB2YWxpZGF0ZWQgb3BlcmF0aW9uIGlucHV0XG4gICAqIEByZXR1cm5zIE9wZXJhdGlvblJlc3VsdCBvciBCYXRjaFJlc3VsdCBmcm9tIHRoZSBoYW5kbGVyXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIHJvdXRlVG9IYW5kbGVyKFxuICAgIGVuZHBvaW50OiBDUlVERW5kcG9pbnQsXG4gICAgaW5wdXQ6IHVua25vd25cbiAgKTogUHJvbWlzZTxPcGVyYXRpb25SZXN1bHQgfCBCYXRjaFJlc3VsdD4ge1xuICAgIHN3aXRjaCAoZW5kcG9pbnQpIHtcbiAgICAgIGNhc2UgJ0NSRUFURSc6XG4gICAgICAgIHJldHVybiB0aGlzLm1jcEFxbEhhbmRsZXIuaGFuZGxlQ3JlYXRlKGlucHV0KTtcbiAgICAgIGNhc2UgJ1JFQUQnOlxuICAgICAgICByZXR1cm4gdGhpcy5tY3BBcWxIYW5kbGVyLmhhbmRsZVJlYWQoaW5wdXQpO1xuICAgICAgY2FzZSAnVVBEQVRFJzpcbiAgICAgICAgcmV0dXJuIHRoaXMubWNwQXFsSGFuZGxlci5oYW5kbGVVcGRhdGUoaW5wdXQpO1xuICAgICAgY2FzZSAnREVMRVRFJzpcbiAgICAgICAgcmV0dXJuIHRoaXMubWNwQXFsSGFuZGxlci5oYW5kbGVEZWxldGUoaW5wdXQpO1xuICAgICAgY2FzZSAnRVhFQ1VURSc6XG4gICAgICAgIHJldHVybiB0aGlzLm1jcEFxbEhhbmRsZXIuaGFuZGxlRXhlY3V0ZShpbnB1dCk7XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIC8vIEV4aGF1c3RpdmUgY2hlY2sgLSBUeXBlU2NyaXB0IHdpbGwgZXJyb3IgaWYgYSBjYXNlIGlzIG1pc3NpbmdcbiAgICAgICAgY29uc3QgX2V4aGF1c3RpdmU6IG5ldmVyID0gZW5kcG9pbnQ7XG4gICAgICAgIHJldHVybiBfZXhoYXVzdGl2ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQnVpbGQgcmVzcG9uc2UgbWV0YWRhdGEgd2l0aCBjb3JyZWxhdGlvbiBJRCBhbmQgdGltaW5nLlxuICAgKiBJc3N1ZSAjMzAxOiBSZXF1ZXN0IGNvcnJlbGF0aW9uIHN1cHBvcnQuXG4gICAqL1xuICBwcml2YXRlIGJ1aWxkTWV0YShzdGFydFRpbWU6IG51bWJlcik6IFJlc3BvbnNlTWV0YSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHJlcXVlc3RJZDogdGhpcy5tY3BBcWxIYW5kbGVyLmdldENvcnJlbGF0aW9uSWQoKSA/PyAndW5rbm93bicsXG4gICAgICBkdXJhdGlvbk1zOiBwYXJzZUZsb2F0KChwZXJmb3JtYW5jZS5ub3coKSAtIHN0YXJ0VGltZSkudG9GaXhlZCgyKSksXG4gICAgICB0aW1lc3RhbXA6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIGZhaWxlZCBvcGVyYXRpb24gcmVzdWx0XG4gICAqL1xuICBwcml2YXRlIGZhaWx1cmUoZXJyb3I6IHN0cmluZywgc3RhcnRUaW1lOiBudW1iZXIpOiBPcGVyYXRpb25SZXN1bHQge1xuICAgIHJldHVybiB7XG4gICAgICBzdWNjZXNzOiBmYWxzZSxcbiAgICAgIGVycm9yLFxuICAgICAgX21ldGE6IHRoaXMuYnVpbGRNZXRhKHN0YXJ0VGltZSksXG4gICAgfTtcbiAgfVxufVxuXG4vKipcbiAqIEdldCBhbGwgYXZhaWxhYmxlIG9wZXJhdGlvbnMgd2l0aCB0aGVpciBlbmRwb2ludCBtYXBwaW5ncy5cbiAqIFRoaXMgaXMgdXNlZnVsIGZvciBkb2N1bWVudGF0aW9uIGFuZCBoZWxwIHRleHQuXG4gKlxuICogQHJldHVybnMgTWFwIG9mIG9wZXJhdGlvbiBuYW1lcyB0byB0aGVpciBDUlVERSBlbmRwb2ludHNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldE9wZXJhdGlvbkhlbHAoKTogc3RyaW5nIHtcbiAgcmV0dXJuIGBcbiMjIE1DUC1BUUwgVW5pZmllZCBFbmRwb2ludCBPcGVyYXRpb25zIChDUlVERSlcblxuIyMjIENSRUFURSBPcGVyYXRpb25zIChhZGRpdGl2ZSwgbm9uLWRlc3RydWN0aXZlKVxuLSBjcmVhdGVfZWxlbWVudDogQ3JlYXRlIGEgbmV3IGVsZW1lbnRcbi0gaW1wb3J0X2VsZW1lbnQ6IEltcG9ydCBhbiBlbGVtZW50IGZyb20gZXhwb3J0ZWQgZGF0YVxuLSBhZGRFbnRyeTogQWRkIGFuIGVudHJ5IHRvIGEgbWVtb3J5IGVsZW1lbnRcbi0gYWN0aXZhdGVfZWxlbWVudDogQWN0aXZhdGUgYW4gZWxlbWVudCBmb3IgdXNlIGluIHNlc3Npb25cblxuIyMjIFJFQUQgT3BlcmF0aW9ucyAoc2FmZSwgcmVhZC1vbmx5KVxuLSBsaXN0X2VsZW1lbnRzOiBMaXN0IGVsZW1lbnRzIHdpdGggZmlsdGVyaW5nIGFuZCBwYWdpbmF0aW9uXG4tIGdldF9lbGVtZW50OiBSZXRyaWV2ZSBhIHNpbmdsZSBlbGVtZW50IGJ5IG5hbWVcbi0gZ2V0X2VsZW1lbnRfZGV0YWlsczogR2V0IGRldGFpbGVkIGluZm9ybWF0aW9uIGFib3V0IGFuIGVsZW1lbnRcbi0gc2VhcmNoX2VsZW1lbnRzOiBGdWxsLXRleHQgc2VhcmNoIGFjcm9zcyBlbGVtZW50c1xuLSBxdWVyeV9lbGVtZW50czogUXVlcnkgZWxlbWVudHMgd2l0aCBhZHZhbmNlZCBmaWx0ZXJzXG4tIGdldF9hY3RpdmVfZWxlbWVudHM6IEdldCBjdXJyZW50bHkgYWN0aXZlIGVsZW1lbnRzXG4tIHZhbGlkYXRlX2VsZW1lbnQ6IFZhbGlkYXRlIGFuIGVsZW1lbnQncyBzdHJ1Y3R1cmVcbi0gcmVuZGVyOiBSZW5kZXIgYSB0ZW1wbGF0ZSB3aXRoIHZhcmlhYmxlc1xuLSBleHBvcnRfZWxlbWVudDogRXhwb3J0IGFuIGVsZW1lbnQgdG8gcG9ydGFibGUgZm9ybWF0XG4tIGRlYWN0aXZhdGVfZWxlbWVudDogRGVhY3RpdmF0ZSBhbiBhY3RpdmUgZWxlbWVudFxuXG4jIyMgVVBEQVRFIE9wZXJhdGlvbnMgKG1vZGlmeWluZylcbi0gZWRpdF9lbGVtZW50OiBNb2RpZnkgYW4gZXhpc3RpbmcgZWxlbWVudCdzIGZpZWxkc1xuXG4jIyMgREVMRVRFIE9wZXJhdGlvbnMgKGRlc3RydWN0aXZlKVxuLSBkZWxldGVfZWxlbWVudDogUGVybWFuZW50bHkgZGVsZXRlIGFuIGVsZW1lbnRcbi0gY2xlYXI6IENsZWFyIGVudHJpZXMgZnJvbSBhIG1lbW9yeSBlbGVtZW50XG5cbiMjIyBFWEVDVVRFIE9wZXJhdGlvbnMgKHJ1bnRpbWUgbGlmZWN5Y2xlLCBwb3RlbnRpYWxseSBkZXN0cnVjdGl2ZSlcbi0gZXhlY3V0ZV9hZ2VudDogU3RhcnQgZXhlY3V0aW9uIG9mIGFuIGFnZW50XG4tIGdldF9leGVjdXRpb25fc3RhdGU6IFF1ZXJ5IGN1cnJlbnQgZXhlY3V0aW9uIHN0YXRlXG4tIHJlY29yZF9leGVjdXRpb25fc3RlcDogUmVjb3JkIGV4ZWN1dGlvbiBwcm9ncmVzc1xuLSBjb21wbGV0ZV9leGVjdXRpb246IFNpZ25hbCBzdWNjZXNzZnVsIGNvbXBsZXRpb25cbi0gY29udGludWVfZXhlY3V0aW9uOiBSZXN1bWUgZnJvbSBzYXZlZCBzdGF0ZVxuLSBhYm9ydF9leGVjdXRpb246IEFib3J0IGEgcnVubmluZyBleGVjdXRpb25cbmAudHJpbSgpO1xufVxuIl19
|
|
208
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVW5pZmllZEVuZHBvaW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2hhbmRsZXJzL21jcC1hcWwvVW5pZmllZEVuZHBvaW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBc0JHO0FBR0gsT0FBTyxFQUFFLFFBQVEsRUFBZ0IsTUFBTSxzQkFBc0IsQ0FBQztBQUM5RCxPQUFPLEVBQThDLGdCQUFnQixFQUFFLG1CQUFtQixFQUFFLG9CQUFvQixFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ3JJLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFFcEU7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFDSCxNQUFNLE9BQU8sZUFBZTtJQUNHO0lBQTdCLFlBQTZCLGFBQTRCO1FBQTVCLGtCQUFhLEdBQWIsYUFBYSxDQUFlO0lBQUcsQ0FBQztJQUU3RDs7Ozs7Ozs7Ozs7T0FXRztJQUNILEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBYztRQUN6Qiw4REFBOEQ7UUFDOUQsTUFBTSxTQUFTLEdBQUcsV0FBVyxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBRXBDLHFFQUFxRTtRQUNyRSxNQUFNLGFBQWEsR0FBRyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1FBRTVFLElBQUksQ0FBQztZQUNILGlGQUFpRjtZQUNqRixNQUFNLFdBQVcsR0FBRyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMvQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7Z0JBQ2pCLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FDakIsa0ZBQWtGO29CQUNsRixvQkFBb0IsQ0FBQyxLQUFLLENBQUMsRUFDM0IsU0FBUyxDQUNWLENBQUM7WUFDSixD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YSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNqRCxPQUFPLENBQUMsQ0FBQyxDQUFDO2dCQUNSLGdFQUFnRTtnQkFDaEUsTUFBTSxXQUFXLEdBQVUsUUFBUSxDQUFDO2dCQUNwQyxPQUFPLFdBQVcsQ0FBQztZQUNyQixDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFRDs7O09BR0c7SUFDSyxTQUFTLENBQUMsU0FBaUI7UUFDakMsT0FBTztZQUNMLFNBQVMsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLGdCQUFnQixFQUFFLElBQUksU0FBUztZQUM3RCxVQUFVLEVBQUUsVUFBVSxDQUFDLENBQUMsV0FBVyxDQUFDLEdBQUcsRUFBRSxHQUFHLFNBQVMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNsRSxTQUFTLEVBQUUsSUFBSSxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUU7U0FDcEMsQ0FBQztJQUNKLENBQUM7SUFFRDs7T0FFRztJQUNLLE9BQU8sQ0FBQyxLQUFhLEVBQUUsU0FBaUI7UUFDOUMsT0FBTztZQUNMLE9BQU8sRUFBRSxLQUFLO1lBQ2QsS0FBSztZQUNMLEtBQUssRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQztTQUNqQyxDQUFDO0lBQ0osQ0FBQztDQUNGO0FBRUQ7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsZ0JBQWdCO0lBQzlCLE9BQU87Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBbUNSLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDVCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBVbmlmaWVkRW5kcG9pbnQgLSBTaW5nbGUgdW5pZmllZCBNQ1AtQVFMIGVuZHBvaW50IGhhbmRsZXIgKElzc3VlICMxOTYpXG4gKlxuICogVGhpcyBoYW5kbGVyIHByb3ZpZGVzIGEgc2luZ2xlIGBtY3BfYXFsYCBlbmRwb2ludCBhcyBhbiBhbHRlcm5hdGl2ZSB0byB0aGVcbiAqIDQgQ1JVRCBlbmRwb2ludHMgZm9yIHVzZXJzIHdobyB3YW50IG1pbmltYWwgdG9rZW4gZm9vdHByaW50ICh+MzAwLTQwMCB0b2tlbnNcbiAqIHZzIH45NDMgdG9rZW5zIGZvciA0IGVuZHBvaW50cykuXG4gKlxuICogQVJDSElURUNUVVJFOlxuICogLSBTaW5nbGUgZW50cnkgcG9pbnQgZm9yIGFsbCBNQ1AtQVFMIG9wZXJhdGlvbnNcbiAqIC0gUm91dGVzIGludGVybmFsbHkgdG8gYXBwcm9wcmlhdGUgTUNQQVFMSGFuZGxlciBtZXRob2RzXG4gKiAtIFVzZXMgR2F0ZWtlZXBlciAoUGVybWlzc2lvbkd1YXJkKSBmb3IgYWxsIHBlcm1pc3Npb24gY2hlY2tzXG4gKiAtIE1haW50YWlucyBmdWxsIHNlY3VyaXR5IHdpdGggbWluaW1hbCBjbGllbnQtc2lkZSBmb290cHJpbnRcbiAqXG4gKiBVU0UgQ0FTRVM6XG4gKiAtIE11bHRpLXNlcnZlciBkZXBsb3ltZW50cyB3aGVyZSB0b2tlbiBidWRnZXQgaXMgY29uc3RyYWluZWRcbiAqIC0gQ2xpZW50cyB0aGF0IHByZWZlciBzaW1wbGVyIHRvb2wgaW50ZXJmYWNlc1xuICogLSBJbnRlZ3JhdGlvbiBzY2VuYXJpb3Mgd2hlcmUgNCBlbmRwb2ludHMgY3JlYXRlIGNvbXBsZXhpdHlcbiAqXG4gKiBTRUNVUklUWTpcbiAqIC0gQWxsIG9wZXJhdGlvbnMgcGFzcyB0aHJvdWdoIFBlcm1pc3Npb25HdWFyZC52YWxpZGF0ZSgpXG4gKiAtIE9wZXJhdGlvbiByb3V0aW5nIGlzIGRldGVybWluZWQgc2VydmVyLXNpZGUsIG5vdCBjbGllbnQtc2lkZVxuICogLSBGdWxsIGF1ZGl0IGxvZ2dpbmcgZm9yIGFsbCBvcGVyYXRpb25zXG4gKi9cblxuaW1wb3J0IHsgTUNQQVFMSGFuZGxlciB9IGZyb20gJy4vTUNQQVFMSGFuZGxlci5qcyc7XG5pbXBvcnQgeyBnZXRSb3V0ZSwgQ1JVREVuZHBvaW50IH0gZnJvbSAnLi9PcGVyYXRpb25Sb3V0ZXIuanMnO1xuaW1wb3J0IHsgT3BlcmF0aW9uUmVzdWx0LCBCYXRjaFJlc3VsdCwgUmVzcG9uc2VNZXRhLCBpc09wZXJhdGlvbklucHV0LCBwYXJzZU9wZXJhdGlvbklucHV0LCBkZXNjcmliZUludmFsaWRJbnB1dCB9IGZyb20gJy4vdHlwZXMuanMnO1xuaW1wb3J0IHsgbG9nZ2VyIH0gZnJvbSAnLi4vLi4vdXRpbHMvbG9nZ2VyLmpzJztcbmltcG9ydCB7IFNlY3VyaXR5TW9uaXRvciB9IGZyb20gJy4uLy4uL3NlY3VyaXR5L3NlY3VyaXR5TW9uaXRvci5qcyc7XG5cbi8qKlxuICogVW5pZmllZEVuZHBvaW50IC0gU2luZ2xlIGVudHJ5IHBvaW50IGZvciBhbGwgTUNQLUFRTCBvcGVyYXRpb25zXG4gKlxuICogVGhpcyBjbGFzcyB3cmFwcyBNQ1BBUUxIYW5kbGVyIHRvIHByb3ZpZGUgYSB1bmlmaWVkIGVuZHBvaW50IHRoYXRcbiAqIGF1dG9tYXRpY2FsbHkgcm91dGVzIG9wZXJhdGlvbnMgdG8gdGhlIGNvcnJlY3QgQ1JVRCBoYW5kbGVyIGJhc2VkXG4gKiBvbiB0aGUgb3BlcmF0aW9uIG5hbWUuXG4gKlxuICogU0VDVVJJVFkgTk9URTpcbiAqIFVubGlrZSB0aGUgNC1lbmRwb2ludCBtb2RlIHdoZXJlIHRoZSBjbGllbnQgY2hvb3NlcyB3aGljaCBlbmRwb2ludCB0byBjYWxsLFxuICogaW4gc2luZ2xlLWVuZHBvaW50IG1vZGUgdGhlIHNlcnZlciBkZXRlcm1pbmVzIHRoZSBhcHByb3ByaWF0ZSBoYW5kbGVyXG4gKiBiYXNlZCBvbiB0aGUgb3BlcmF0aW9uIG5hbWUuIFRoaXMgbWVhbnM6XG4gKiAxLiBUaGUgY2xpZW50IGNhbm5vdCBieXBhc3Mgc2VjdXJpdHkgYnkgY2FsbGluZyB0aGUgd3JvbmcgZW5kcG9pbnRcbiAqIDIuIEFsbCByb3V0aW5nIGlzIGVuZm9yY2VkIHNlcnZlci1zaWRlIHZpYSBQZXJtaXNzaW9uR3VhcmRcbiAqIDMuIFRoZSBvcGVyYXRpb24tdG8tZW5kcG9pbnQgbWFwcGluZyBpcyBhdXRob3JpdGF0aXZlXG4gKi9cbmV4cG9ydCBjbGFzcyBVbmlmaWVkRW5kcG9pbnQge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IG1jcEFxbEhhbmRsZXI6IE1DUEFRTEhhbmRsZXIpIHt9XG5cbiAgLyoqXG4gICAqIEhhbmRsZSBhbnkgTUNQLUFRTCBvcGVyYXRpb24gdGhyb3VnaCB0aGUgdW5pZmllZCBlbmRwb2ludC5cbiAgICpcbiAgICogVGhpcyBtZXRob2Q6XG4gICAqIDEuIFZhbGlkYXRlcyBpbnB1dCBzdHJ1Y3R1cmVcbiAgICogMi4gRGV0ZXJtaW5lcyB0aGUgY29ycmVjdCBDUlVEIGVuZHBvaW50IGZvciB0aGUgb3BlcmF0aW9uXG4gICAqIDMuIFJvdXRlcyB0byB0aGUgYXBwcm9wcmlhdGUgaGFuZGxlciBtZXRob2RcbiAgICogNC4gUmV0dXJucyBzdGFuZGFyZGl6ZWQgT3BlcmF0aW9uUmVzdWx0IG9yIEJhdGNoUmVzdWx0XG4gICAqXG4gICAqIEBwYXJhbSBpbnB1dCAtIE9wZXJhdGlvbiBpbnB1dCB3aXRoIG9wZXJhdGlvbiBuYW1lIGFuZCBwYXJhbXMsIG9yIEJhdGNoUmVxdWVzdFxuICAgKiBAcmV0dXJucyBPcGVyYXRpb25SZXN1bHQgb3IgQmF0Y2hSZXN1bHQgd2l0aCBzdWNjZXNzL2ZhaWx1cmUgc3RhdHVzXG4gICAqL1xuICBhc3luYyBoYW5kbGUoaW5wdXQ6IHVua25vd24pOiBQcm9taXNlPE9wZXJhdGlvblJlc3VsdCB8IEJhdGNoUmVzdWx0PiB7XG4gICAgLy8gSXNzdWUgIzMwMTogQ2FwdHVyZSBzdGFydCB0aW1lIGZvciByZXNwb25zZSB0aW1pbmcgbWV0YWRhdGFcbiAgICBjb25zdCBzdGFydFRpbWUgPSBwZXJmb3JtYW5jZS5ub3coKTtcblxuICAgIC8vIEV4dHJhY3Qgb3BlcmF0aW9uIG5hbWUgZm9yIGxvZ2dpbmcgKHNhZmUgYWNjZXNzIGJlZm9yZSB2YWxpZGF0aW9uKVxuICAgIGNvbnN0IG9wZXJhdGlvbk5hbWUgPSBpc09wZXJhdGlvbklucHV0KGlucHV0KSA/IGlucHV0Lm9wZXJhdGlvbiA6ICd1bmtub3duJztcblxuICAgIHRyeSB7XG4gICAgICAvLyBTdGVwIDE6IFZhbGlkYXRlIGFuZCBub3JtYWxpemUgaW5wdXQgc3RydWN0dXJlIChzdXBwb3J0cyBzaWxlbnQgSlNPTiBmYWxsYmFjaylcbiAgICAgIGNvbnN0IHBhcnNlZElucHV0ID0gcGFyc2VPcGVyYXRpb25JbnB1dChpbnB1dCk7XG4gICAgICBpZiAoIXBhcnNlZElucHV0KSB7XG4gICAgICAgIHJldHVybiB0aGlzLmZhaWx1cmUoXG4gICAgICAgICAgJ0ludmFsaWQgaW5wdXQ6IGV4cGVjdGVkIE9wZXJhdGlvbklucHV0IHdpdGggb3BlcmF0aW9uIG5hbWUgYW5kIG9wdGlvbmFsIHBhcmFtcy4gJyArXG4gICAgICAgICAgZGVzY3JpYmVJbnZhbGlkSW5wdXQoaW5wdXQpLFxuICAgICAgICAgIHN0YXJ0VGltZVxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB7IG9wZXJhdGlvbiB9ID0gcGFyc2VkSW5wdXQ7XG5cbiAgICAgIC8vIFN0ZXAgMjogRGV0ZXJtaW5lIHRoZSBjb3JyZWN0IENSVUQgZW5kcG9pbnQgZm9yIHRoaXMgb3BlcmF0aW9uXG4gICAgICBjb25zdCByb3V0ZSA9IGdldFJvdXRlKG9wZXJhdGlvbik7XG4gICAgICBpZiAoIXJvdXRlKSB7XG4gICAgICAgIFNlY3VyaXR5TW9uaXRvci5sb2dTZWN1cml0eUV2ZW50KHtcbiAgICAgICAgICB0eXBlOiAnVVBEQVRFX1NFQ1VSSVRZX1ZJT0xBVElPTicsXG4gICAgICAgICAgc2V2ZXJpdHk6ICdNRURJVU0nLFxuICAgICAgICAgIHNvdXJjZTogJ1VuaWZpZWRFbmRwb2ludC5oYW5kbGUnLFxuICAgICAgICAgIGRldGFpbHM6IGBVbmtub3duIG9wZXJhdGlvbjogXCIke29wZXJhdGlvbn1cImAsXG4gICAgICAgICAgYWRkaXRpb25hbERhdGE6IHsgb3BlcmF0aW9uIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB0aGlzLmZhaWx1cmUoXG4gICAgICAgICAgYFVua25vd24gb3BlcmF0aW9uOiBcIiR7b3BlcmF0aW9ufVwiLiBTZWUgdG9vbCBkZXNjcmlwdGlvbiBmb3IgYXZhaWxhYmxlIG9wZXJhdGlvbnMuYCxcbiAgICAgICAgICBzdGFydFRpbWVcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgLy8gU3RlcCAzOiBSb3V0ZSB0byB0aGUgYXBwcm9wcmlhdGUgaGFuZGxlciBtZXRob2RcbiAgICAgIC8vIFRoZSBoYW5kbGVyIHdpbGwgcGVyZm9ybSBpdHMgb3duIFBlcm1pc3Npb25HdWFyZCB2YWxpZGF0aW9uXG4gICAgICAvLyBQYXNzIHBhcnNlZElucHV0IHRvIGVuc3VyZSBub3JtYWxpemVkIGZvcm1hdCBpcyB1c2VkXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLnJvdXRlVG9IYW5kbGVyKHJvdXRlLmVuZHBvaW50LCBwYXJzZWRJbnB1dCk7XG5cbiAgICAgIC8vIExvZyBzdWNjZXNzZnVsIHJvdXRpbmdcbiAgICAgIFNlY3VyaXR5TW9uaXRvci5sb2dTZWN1cml0eUV2ZW50KHtcbiAgICAgICAgdHlwZTogJ0VMRU1FTlRfQ1JFQVRFRCcsXG4gICAgICAgIHNldmVyaXR5OiAnTE9XJyxcbiAgICAgICAgc291cmNlOiAnVW5pZmllZEVuZHBvaW50LmhhbmRsZScsXG4gICAgICAgIGRldGFpbHM6IGBPcGVyYXRpb24gJyR7b3BlcmF0aW9ufScgcm91dGVkIHRvICR7cm91dGUuZW5kcG9pbnR9IGhhbmRsZXJgLFxuICAgICAgICBhZGRpdGlvbmFsRGF0YTogeyBvcGVyYXRpb24sIGVuZHBvaW50OiByb3V0ZS5lbmRwb2ludCB9XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc3QgbWVzc2FnZSA9IGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogU3RyaW5nKGVycm9yKTtcblxuICAgICAgU2VjdXJpdHlNb25pdG9yLmxvZ1NlY3VyaXR5RXZlbnQoe1xuICAgICAgICB0eXBlOiAnVVBEQVRFX1NFQ1VSSVRZX1ZJT0xBVElPTicsXG4gICAgICAgIHNldmVyaXR5OiAnTUVESVVNJyxcbiAgICAgICAgc291cmNlOiAnVW5pZmllZEVuZHBvaW50LmhhbmRsZScsXG4gICAgICAgIGRldGFpbHM6IGBPcGVyYXRpb24gJyR7b3BlcmF0aW9uTmFtZX0nIGZhaWxlZDogJHttZXNzYWdlfWAsXG4gICAgICAgIGFkZGl0aW9uYWxEYXRhOiB7IG9wZXJhdGlvbjogb3BlcmF0aW9uTmFtZSwgZXJyb3I6IG1lc3NhZ2UgfVxuICAgICAgfSk7XG5cbiAgICAgIGxvZ2dlci5lcnJvcignVW5pZmllZEVuZHBvaW50IG9wZXJhdGlvbiBmYWlsZWQnLCB7XG4gICAgICAgIG9wZXJhdGlvbjogb3BlcmF0aW9uTmFtZSxcbiAgICAgICAgZXJyb3I6IG1lc3NhZ2UsXG4gICAgICAgIHN0YWNrOiBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3Iuc3RhY2sgOiB1bmRlZmluZWQsXG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIHRoaXMuZmFpbHVyZShtZXNzYWdlLCBzdGFydFRpbWUpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSb3V0ZSBpbnB1dCB0byB0aGUgYXBwcm9wcmlhdGUgQ1JVRCBoYW5kbGVyIGJhc2VkIG9uIGVuZHBvaW50IHR5cGUuXG4gICAqXG4gICAqIEBwYXJhbSBlbmRwb2ludCAtIFRoZSBDUlVEIGVuZHBvaW50IGRldGVybWluZWQgZnJvbSBvcGVyYXRpb24gcm91dGluZ1xuICAgKiBAcGFyYW0gaW5wdXQgLSBUaGUgdmFsaWRhdGVkIG9wZXJhdGlvbiBpbnB1dFxuICAgKiBAcmV0dXJucyBPcGVyYXRpb25SZXN1bHQgb3IgQmF0Y2hSZXN1bHQgZnJvbSB0aGUgaGFuZGxlclxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyByb3V0ZVRvSGFuZGxlcihcbiAgICBlbmRwb2ludDogQ1JVREVuZHBvaW50LFxuICAgIGlucHV0OiB1bmtub3duXG4gICk6IFByb21pc2U8T3BlcmF0aW9uUmVzdWx0IHwgQmF0Y2hSZXN1bHQ+IHtcbiAgICBzd2l0Y2ggKGVuZHBvaW50KSB7XG4gICAgICBjYXNlICdDUkVBVEUnOlxuICAgICAgICByZXR1cm4gdGhpcy5tY3BBcWxIYW5kbGVyLmhhbmRsZUNyZWF0ZShpbnB1dCk7XG4gICAgICBjYXNlICdSRUFEJzpcbiAgICAgICAgcmV0dXJuIHRoaXMubWNwQXFsSGFuZGxlci5oYW5kbGVSZWFkKGlucHV0KTtcbiAgICAgIGNhc2UgJ1VQREFURSc6XG4gICAgICAgIHJldHVybiB0aGlzLm1jcEFxbEhhbmRsZXIuaGFuZGxlVXBkYXRlKGlucHV0KTtcbiAgICAgIGNhc2UgJ0RFTEVURSc6XG4gICAgICAgIHJldHVybiB0aGlzLm1jcEFxbEhhbmRsZXIuaGFuZGxlRGVsZXRlKGlucHV0KTtcbiAgICAgIGNhc2UgJ0VYRUNVVEUnOlxuICAgICAgICByZXR1cm4gdGhpcy5tY3BBcWxIYW5kbGVyLmhhbmRsZUV4ZWN1dGUoaW5wdXQpO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICAvLyBFeGhhdXN0aXZlIGNoZWNrIC0gVHlwZVNjcmlwdCB3aWxsIGVycm9yIGlmIGEgY2FzZSBpcyBtaXNzaW5nXG4gICAgICAgIGNvbnN0IF9leGhhdXN0aXZlOiBuZXZlciA9IGVuZHBvaW50O1xuICAgICAgICByZXR1cm4gX2V4aGF1c3RpdmU7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkIHJlc3BvbnNlIG1ldGFkYXRhIHdpdGggY29ycmVsYXRpb24gSUQgYW5kIHRpbWluZy5cbiAgICogSXNzdWUgIzMwMTogUmVxdWVzdCBjb3JyZWxhdGlvbiBzdXBwb3J0LlxuICAgKi9cbiAgcHJpdmF0ZSBidWlsZE1ldGEoc3RhcnRUaW1lOiBudW1iZXIpOiBSZXNwb25zZU1ldGEge1xuICAgIHJldHVybiB7XG4gICAgICByZXF1ZXN0SWQ6IHRoaXMubWNwQXFsSGFuZGxlci5nZXRDb3JyZWxhdGlvbklkKCkgPz8gJ3Vua25vd24nLFxuICAgICAgZHVyYXRpb25NczogcGFyc2VGbG9hdCgocGVyZm9ybWFuY2Uubm93KCkgLSBzdGFydFRpbWUpLnRvRml4ZWQoMikpLFxuICAgICAgdGltZXN0YW1wOiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBmYWlsZWQgb3BlcmF0aW9uIHJlc3VsdFxuICAgKi9cbiAgcHJpdmF0ZSBmYWlsdXJlKGVycm9yOiBzdHJpbmcsIHN0YXJ0VGltZTogbnVtYmVyKTogT3BlcmF0aW9uUmVzdWx0IHtcbiAgICByZXR1cm4ge1xuICAgICAgc3VjY2VzczogZmFsc2UsXG4gICAgICBlcnJvcixcbiAgICAgIF9tZXRhOiB0aGlzLmJ1aWxkTWV0YShzdGFydFRpbWUpLFxuICAgIH07XG4gIH1cbn1cblxuLyoqXG4gKiBHZXQgYWxsIGF2YWlsYWJsZSBvcGVyYXRpb25zIHdpdGggdGhlaXIgZW5kcG9pbnQgbWFwcGluZ3MuXG4gKiBUaGlzIGlzIHVzZWZ1bCBmb3IgZG9jdW1lbnRhdGlvbiBhbmQgaGVscCB0ZXh0LlxuICpcbiAqIEByZXR1cm5zIE1hcCBvZiBvcGVyYXRpb24gbmFtZXMgdG8gdGhlaXIgQ1JVREUgZW5kcG9pbnRzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRPcGVyYXRpb25IZWxwKCk6IHN0cmluZyB7XG4gIHJldHVybiBgXG4jIyBNQ1AtQVFMIFVuaWZpZWQgRW5kcG9pbnQgT3BlcmF0aW9ucyAoQ1JVREUpXG5cbiMjIyBDUkVBVEUgT3BlcmF0aW9ucyAoYWRkaXRpdmUsIG5vbi1kZXN0cnVjdGl2ZSlcbi0gY3JlYXRlX2VsZW1lbnQ6IENyZWF0ZSBhIG5ldyBlbGVtZW50XG4tIGltcG9ydF9lbGVtZW50OiBJbXBvcnQgYW4gZWxlbWVudCBmcm9tIGV4cG9ydGVkIGRhdGFcbi0gYWRkRW50cnk6IEFkZCBhbiBlbnRyeSB0byBhIG1lbW9yeSBlbGVtZW50XG4tIGFjdGl2YXRlX2VsZW1lbnQ6IEFjdGl2YXRlIGFuIGVsZW1lbnQgZm9yIHVzZSBpbiBzZXNzaW9uXG5cbiMjIyBSRUFEIE9wZXJhdGlvbnMgKHNhZmUsIHJlYWQtb25seSlcbi0gbGlzdF9lbGVtZW50czogTGlzdCBlbGVtZW50cyB3aXRoIGZpbHRlcmluZyBhbmQgcGFnaW5hdGlvblxuLSBnZXRfZWxlbWVudDogUmV0cmlldmUgYSBzaW5nbGUgZWxlbWVudCBieSBuYW1lXG4tIGdldF9lbGVtZW50X2RldGFpbHM6IEdldCBkZXRhaWxlZCBpbmZvcm1hdGlvbiBhYm91dCBhbiBlbGVtZW50XG4tIHNlYXJjaF9lbGVtZW50czogRnVsbC10ZXh0IHNlYXJjaCBhY3Jvc3MgZWxlbWVudHNcbi0gcXVlcnlfZWxlbWVudHM6IFF1ZXJ5IGVsZW1lbnRzIHdpdGggYWR2YW5jZWQgZmlsdGVyc1xuLSBnZXRfYWN0aXZlX2VsZW1lbnRzOiBHZXQgY3VycmVudGx5IGFjdGl2ZSBlbGVtZW50c1xuLSB2YWxpZGF0ZV9lbGVtZW50OiBWYWxpZGF0ZSBhbiBlbGVtZW50J3Mgc3RydWN0dXJlXG4tIHJlbmRlcjogUmVuZGVyIGEgdGVtcGxhdGUgd2l0aCB2YXJpYWJsZXNcbi0gZXhwb3J0X2VsZW1lbnQ6IEV4cG9ydCBhbiBlbGVtZW50IHRvIHBvcnRhYmxlIGZvcm1hdFxuLSBkZWFjdGl2YXRlX2VsZW1lbnQ6IERlYWN0aXZhdGUgYW4gYWN0aXZlIGVsZW1lbnRcblxuIyMjIFVQREFURSBPcGVyYXRpb25zIChtb2RpZnlpbmcpXG4tIGVkaXRfZWxlbWVudDogTW9kaWZ5IGFuIGV4aXN0aW5nIGVsZW1lbnQncyBmaWVsZHNcblxuIyMjIERFTEVURSBPcGVyYXRpb25zIChkZXN0cnVjdGl2ZSlcbi0gZGVsZXRlX2VsZW1lbnQ6IFBlcm1hbmVudGx5IGRlbGV0ZSBhbiBlbGVtZW50XG4tIGNsZWFyOiBDbGVhciBlbnRyaWVzIGZyb20gYSBtZW1vcnkgZWxlbWVudFxuXG4jIyMgRVhFQ1VURSBPcGVyYXRpb25zIChydW50aW1lIGxpZmVjeWNsZSwgcG90ZW50aWFsbHkgZGVzdHJ1Y3RpdmUpXG4tIGV4ZWN1dGVfYWdlbnQ6IFN0YXJ0IGV4ZWN1dGlvbiBvZiBhbiBhZ2VudFxuLSBnZXRfZXhlY3V0aW9uX3N0YXRlOiBRdWVyeSBjdXJyZW50IGV4ZWN1dGlvbiBzdGF0ZVxuLSByZWNvcmRfZXhlY3V0aW9uX3N0ZXA6IFJlY29yZCBleGVjdXRpb24gcHJvZ3Jlc3Ncbi0gY29tcGxldGVfZXhlY3V0aW9uOiBTaWduYWwgc3VjY2Vzc2Z1bCBjb21wbGV0aW9uXG4tIGNvbnRpbnVlX2V4ZWN1dGlvbjogUmVzdW1lIGZyb20gc2F2ZWQgc3RhdGVcbi0gYWJvcnRfZXhlY3V0aW9uOiBBYm9ydCBhIHJ1bm5pbmcgZXhlY3V0aW9uXG5gLnRyaW0oKTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Permission evaluation for PreToolUse hooks across all AI platforms.
|
|
3
|
+
*
|
|
4
|
+
* Provides the `evaluate_permission` MCP-AQL READ operation, enabling
|
|
5
|
+
* Claude Code, Cursor, Gemini CLI, Windsurf, and Codex to use
|
|
6
|
+
* DollhouseMCP as their permission evaluation backend via hooks.
|
|
7
|
+
*
|
|
8
|
+
* Three-stage evaluation pipeline:
|
|
9
|
+
* 1. Rate limiting — prevents abuse
|
|
10
|
+
* 2. Static tool classification — built-in allow/deny rules
|
|
11
|
+
* 3. Element policy evaluation — active element gatekeeper policies
|
|
12
|
+
*
|
|
13
|
+
* Returns platform-specific response formats so each platform's hook
|
|
14
|
+
* script receives the JSON shape it expects.
|
|
15
|
+
*/
|
|
16
|
+
import type { RateLimiter } from '../../utils/RateLimiter.js';
|
|
17
|
+
import type { ToolClassificationResult, CliToolPolicyResult } from './policies/ToolClassification.js';
|
|
18
|
+
import type { ActiveElement } from './policies/ElementPolicies.js';
|
|
19
|
+
/** Error thrown when permission evaluation fails at a specific stage */
|
|
20
|
+
export declare class PermissionEvaluationError extends Error {
|
|
21
|
+
readonly stage: 'rate_limit' | 'classification' | 'policy' | 'element_fetch';
|
|
22
|
+
readonly toolName: string;
|
|
23
|
+
constructor(message: string, stage: 'rate_limit' | 'classification' | 'policy' | 'element_fetch', toolName: string, cause?: unknown);
|
|
24
|
+
}
|
|
25
|
+
/** Dependencies injected from MCPAQLHandler */
|
|
26
|
+
export interface EvaluatePermissionDeps {
|
|
27
|
+
permissionPromptLimiter: RateLimiter;
|
|
28
|
+
classifyTool: (toolName: string, toolInput: Record<string, unknown>) => ToolClassificationResult;
|
|
29
|
+
evaluateCliToolPolicy: (toolName: string, toolInput: Record<string, unknown>, elements: ActiveElement[]) => CliToolPolicyResult;
|
|
30
|
+
getActiveElements: () => Promise<ActiveElement[]>;
|
|
31
|
+
}
|
|
32
|
+
/** Known platform identifiers */
|
|
33
|
+
export declare const SUPPORTED_PLATFORMS: string[];
|
|
34
|
+
/**
|
|
35
|
+
* Format permission evaluation response for platform-specific hook scripts.
|
|
36
|
+
* Each platform expects a different JSON shape from its hook response.
|
|
37
|
+
*
|
|
38
|
+
* Unknown platforms default to claude_code format with a warning log.
|
|
39
|
+
*/
|
|
40
|
+
export declare function formatPermissionResponse(decision: 'allow' | 'deny' | 'ask', platform: string, _input: Record<string, unknown>, reason?: string): Record<string, unknown>;
|
|
41
|
+
/**
|
|
42
|
+
* Evaluate a CLI permission request for PreToolUse hooks.
|
|
43
|
+
*
|
|
44
|
+
* @param params - Tool name, input, and target platform
|
|
45
|
+
* @param deps - Injected dependencies from MCPAQLHandler
|
|
46
|
+
* @returns Platform-formatted permission decision
|
|
47
|
+
*/
|
|
48
|
+
export declare function evaluatePermission(params: {
|
|
49
|
+
tool_name?: unknown;
|
|
50
|
+
input?: unknown;
|
|
51
|
+
platform?: unknown;
|
|
52
|
+
}, deps: EvaluatePermissionDeps): Promise<Record<string, unknown>>;
|
|
53
|
+
//# sourceMappingURL=evaluatePermission.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"evaluatePermission.d.ts","sourceRoot":"","sources":["../../../src/handlers/mcp-aql/evaluatePermission.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,KAAK,EAAE,wBAAwB,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AACtG,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAEnE,wEAAwE;AACxE,qBAAa,yBAA0B,SAAQ,KAAK;IAClD,SAAgB,KAAK,EAAE,YAAY,GAAG,gBAAgB,GAAG,QAAQ,GAAG,eAAe,CAAC;IACpF,SAAgB,QAAQ,EAAE,MAAM,CAAC;gBAG/B,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,YAAY,GAAG,gBAAgB,GAAG,QAAQ,GAAG,eAAe,EACnE,QAAQ,EAAE,MAAM,EAChB,KAAK,CAAC,EAAE,OAAO;CAOlB;AAED,+CAA+C;AAC/C,MAAM,WAAW,sBAAsB;IACrC,uBAAuB,EAAE,WAAW,CAAC;IACrC,YAAY,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,wBAAwB,CAAC;IACjG,qBAAqB,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,mBAAmB,CAAC;IAChI,iBAAiB,EAAE,MAAM,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC;CACnD;AA2CD,iCAAiC;AACjC,eAAO,MAAM,mBAAmB,UAAkC,CAAC;AAEnE;;;;;GAKG;AACH,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,OAAO,GAAG,MAAM,GAAG,KAAK,EAClC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,MAAM,CAAC,EAAE,MAAM,GACd,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAczB;AAED;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CACtC,MAAM,EAAE;IAAE,SAAS,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,EACpE,IAAI,EAAE,sBAAsB,GAC3B,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CA8ClC"}
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Permission evaluation for PreToolUse hooks across all AI platforms.
|
|
3
|
+
*
|
|
4
|
+
* Provides the `evaluate_permission` MCP-AQL READ operation, enabling
|
|
5
|
+
* Claude Code, Cursor, Gemini CLI, Windsurf, and Codex to use
|
|
6
|
+
* DollhouseMCP as their permission evaluation backend via hooks.
|
|
7
|
+
*
|
|
8
|
+
* Three-stage evaluation pipeline:
|
|
9
|
+
* 1. Rate limiting — prevents abuse
|
|
10
|
+
* 2. Static tool classification — built-in allow/deny rules
|
|
11
|
+
* 3. Element policy evaluation — active element gatekeeper policies
|
|
12
|
+
*
|
|
13
|
+
* Returns platform-specific response formats so each platform's hook
|
|
14
|
+
* script receives the JSON shape it expects.
|
|
15
|
+
*/
|
|
16
|
+
/** Error thrown when permission evaluation fails at a specific stage */
|
|
17
|
+
export class PermissionEvaluationError extends Error {
|
|
18
|
+
stage;
|
|
19
|
+
toolName;
|
|
20
|
+
constructor(message, stage, toolName, cause) {
|
|
21
|
+
super(message, cause ? { cause } : undefined);
|
|
22
|
+
this.name = 'PermissionEvaluationError';
|
|
23
|
+
this.stage = stage;
|
|
24
|
+
this.toolName = toolName;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
/** Optional reason field, only included when reason is provided */
|
|
28
|
+
function withReason(obj, reason, key = 'reason') {
|
|
29
|
+
return reason ? { ...obj, [key]: reason } : obj;
|
|
30
|
+
}
|
|
31
|
+
/** Gemini: maps 'ask' to 'deny' (no interactive support) */
|
|
32
|
+
function formatGemini(decision, reason) {
|
|
33
|
+
return withReason({ decision: decision === 'ask' ? 'deny' : decision }, reason);
|
|
34
|
+
}
|
|
35
|
+
/** Cursor: uses 'permission' field instead of 'decision' */
|
|
36
|
+
function formatCursor(decision, reason) {
|
|
37
|
+
return withReason({ permission: decision }, reason);
|
|
38
|
+
}
|
|
39
|
+
/** Windsurf: uses boolean 'allowed' field */
|
|
40
|
+
function formatWindsurf(decision, reason) {
|
|
41
|
+
return withReason({ allowed: decision === 'allow' }, reason);
|
|
42
|
+
}
|
|
43
|
+
/** Codex: wraps in hookSpecificOutput, maps 'ask' to 'deny' */
|
|
44
|
+
function formatCodex(decision, reason) {
|
|
45
|
+
return { hookSpecificOutput: withReason({ permissionDecision: decision === 'ask' ? 'deny' : decision }, reason) };
|
|
46
|
+
}
|
|
47
|
+
/** Claude Code (default): uses 'decision' with 'message' for ask, 'reason' for deny */
|
|
48
|
+
function formatClaudeCode(decision, reason) {
|
|
49
|
+
if (decision === 'allow')
|
|
50
|
+
return { decision: 'allow' };
|
|
51
|
+
if (decision === 'ask')
|
|
52
|
+
return withReason({ decision: 'ask' }, reason, 'message');
|
|
53
|
+
return withReason({ decision: 'deny' }, reason);
|
|
54
|
+
}
|
|
55
|
+
/** Platform formatter lookup */
|
|
56
|
+
const platformFormatters = {
|
|
57
|
+
gemini: formatGemini,
|
|
58
|
+
cursor: formatCursor,
|
|
59
|
+
windsurf: formatWindsurf,
|
|
60
|
+
codex: formatCodex,
|
|
61
|
+
claude_code: formatClaudeCode,
|
|
62
|
+
};
|
|
63
|
+
/** Known platform identifiers */
|
|
64
|
+
export const SUPPORTED_PLATFORMS = Object.keys(platformFormatters);
|
|
65
|
+
/**
|
|
66
|
+
* Format permission evaluation response for platform-specific hook scripts.
|
|
67
|
+
* Each platform expects a different JSON shape from its hook response.
|
|
68
|
+
*
|
|
69
|
+
* Unknown platforms default to claude_code format with a warning log.
|
|
70
|
+
*/
|
|
71
|
+
export function formatPermissionResponse(decision, platform, _input, reason) {
|
|
72
|
+
switch (platform) {
|
|
73
|
+
case 'gemini': return formatGemini(decision, reason);
|
|
74
|
+
case 'cursor': return formatCursor(decision, reason);
|
|
75
|
+
case 'windsurf': return formatWindsurf(decision, reason);
|
|
76
|
+
case 'codex': return formatCodex(decision, reason);
|
|
77
|
+
case 'claude_code': return formatClaudeCode(decision, reason);
|
|
78
|
+
default:
|
|
79
|
+
// Import lazily to avoid circular dependency at module load time
|
|
80
|
+
import('../../utils/logger.js').then(({ logger }) => {
|
|
81
|
+
logger.warn(`[evaluatePermission] Unknown platform "${platform}", defaulting to claude_code format. Supported: ${SUPPORTED_PLATFORMS.join(', ')}`);
|
|
82
|
+
}).catch(() => { });
|
|
83
|
+
return formatClaudeCode(decision, reason);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Evaluate a CLI permission request for PreToolUse hooks.
|
|
88
|
+
*
|
|
89
|
+
* @param params - Tool name, input, and target platform
|
|
90
|
+
* @param deps - Injected dependencies from MCPAQLHandler
|
|
91
|
+
* @returns Platform-formatted permission decision
|
|
92
|
+
*/
|
|
93
|
+
export async function evaluatePermission(params, deps) {
|
|
94
|
+
const toolName = typeof params.tool_name === 'string' ? params.tool_name : '';
|
|
95
|
+
const inputRaw = params.input;
|
|
96
|
+
const input = (inputRaw && typeof inputRaw === 'object')
|
|
97
|
+
? inputRaw
|
|
98
|
+
: {};
|
|
99
|
+
const platform = typeof params.platform === 'string' ? params.platform : 'claude_code';
|
|
100
|
+
// Rate limit
|
|
101
|
+
const rateStatus = deps.permissionPromptLimiter.checkLimit();
|
|
102
|
+
if (!rateStatus.allowed) {
|
|
103
|
+
return formatPermissionResponse('deny', platform, input, 'Rate limit exceeded');
|
|
104
|
+
}
|
|
105
|
+
deps.permissionPromptLimiter.consumeToken();
|
|
106
|
+
// Stage 1: Static classification
|
|
107
|
+
const classification = deps.classifyTool(toolName, input);
|
|
108
|
+
if (classification.behavior === 'allow') {
|
|
109
|
+
return formatPermissionResponse('allow', platform, input);
|
|
110
|
+
}
|
|
111
|
+
if (classification.behavior === 'deny') {
|
|
112
|
+
return formatPermissionResponse('deny', platform, input, classification.reason);
|
|
113
|
+
}
|
|
114
|
+
// Stage 2: Element policy evaluation
|
|
115
|
+
let elements;
|
|
116
|
+
try {
|
|
117
|
+
elements = await deps.getActiveElements();
|
|
118
|
+
}
|
|
119
|
+
catch (err) {
|
|
120
|
+
throw new PermissionEvaluationError(`Failed to fetch active elements for policy evaluation: ${err instanceof Error ? err.message : String(err)}`, 'element_fetch', toolName, err);
|
|
121
|
+
}
|
|
122
|
+
const decision = deps.evaluateCliToolPolicy(toolName, input, elements);
|
|
123
|
+
if (decision.behavior === 'deny') {
|
|
124
|
+
return formatPermissionResponse('deny', platform, input, decision.message);
|
|
125
|
+
}
|
|
126
|
+
if (decision.behavior === 'confirm') {
|
|
127
|
+
return formatPermissionResponse('ask', platform, input, decision.message || 'Requires confirmation per element policy');
|
|
128
|
+
}
|
|
129
|
+
// Default: allow
|
|
130
|
+
return formatPermissionResponse('allow', platform, input);
|
|
131
|
+
}
|
|
132
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZhbHVhdGVQZXJtaXNzaW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2hhbmRsZXJzL21jcC1hcWwvZXZhbHVhdGVQZXJtaXNzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBTUgsd0VBQXdFO0FBQ3hFLE1BQU0sT0FBTyx5QkFBMEIsU0FBUSxLQUFLO0lBQ2xDLEtBQUssQ0FBK0Q7SUFDcEUsUUFBUSxDQUFTO0lBRWpDLFlBQ0UsT0FBZSxFQUNmLEtBQW1FLEVBQ25FLFFBQWdCLEVBQ2hCLEtBQWU7UUFFZixLQUFLLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDOUMsSUFBSSxDQUFDLElBQUksR0FBRywyQkFBMkIsQ0FBQztRQUN4QyxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztJQUMzQixDQUFDO0NBQ0Y7QUFVRCxtRUFBbUU7QUFDbkUsU0FBUyxVQUFVLENBQUMsR0FBNEIsRUFBRSxNQUFlLEVBQUUsR0FBRyxHQUFHLFFBQVE7SUFDL0UsT0FBTyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO0FBQ2xELENBQUM7QUFFRCw0REFBNEQ7QUFDNUQsU0FBUyxZQUFZLENBQUMsUUFBZ0IsRUFBRSxNQUFlO0lBQ3JELE9BQU8sVUFBVSxDQUFDLEVBQUUsUUFBUSxFQUFFLFFBQVEsS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDbEYsQ0FBQztBQUVELDREQUE0RDtBQUM1RCxTQUFT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QUMsQ0FBQztJQUNsRixDQUFDO0lBRUQscUNBQXFDO0lBQ3JDLElBQUksUUFBeUIsQ0FBQztJQUM5QixJQUFJLENBQUM7UUFDSCxRQUFRLEdBQUcsTUFBTSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztJQUM1QyxDQUFDO0lBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztRQUNiLE1BQU0sSUFBSSx5QkFBeUIsQ0FDakMsMERBQTBELEdBQUcsWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUM1RyxlQUFlLEVBQUUsUUFBUSxFQUFFLEdBQUcsQ0FDL0IsQ0FBQztJQUNKLENBQUM7SUFDRCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUMsUUFBUSxFQUFFLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQztJQUV2RSxJQUFJLFFBQVEsQ0FBQyxRQUFRLEtBQUssTUFBTSxFQUFFLENBQUM7UUFDakMsT0FBTyx3QkFBd0IsQ0FBQyxNQUFNLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDN0UsQ0FBQztJQUNELElBQUksUUFBUSxDQUFDLFFBQVEsS0FBSyxTQUFTLEVBQUUsQ0FBQztRQUNwQyxPQUFPLHdCQUF3QixDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUNwRCxRQUFRLENBQUMsT0FBTyxJQUFJLDBDQUEwQyxDQUFDLENBQUM7SUFDcEUsQ0FBQztJQUVELGlCQUFpQjtJQUNqQixPQUFPLHdCQUF3QixDQUFDLE9BQU8sRUFBRSxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDNUQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogUGVybWlzc2lvbiBldmFsdWF0aW9uIGZvciBQcmVUb29sVXNlIGhvb2tzIGFjcm9zcyBhbGwgQUkgcGxhdGZvcm1zLlxuICpcbiAqIFByb3ZpZGVzIHRoZSBgZXZhbHVhdGVfcGVybWlzc2lvbmAgTUNQLUFRTCBSRUFEIG9wZXJhdGlvbiwgZW5hYmxpbmdcbiAqIENsYXVkZSBDb2RlLCBDdXJzb3IsIEdlbWluaSBDTEksIFdpbmRzdXJmLCBhbmQgQ29kZXggdG8gdXNlXG4gKiBEb2xsaG91c2VNQ1AgYXMgdGhlaXIgcGVybWlzc2lvbiBldmFsdWF0aW9uIGJhY2tlbmQgdmlhIGhvb2tzLlxuICpcbiAqIFRocmVlLXN0YWdlIGV2YWx1YXRpb24gcGlwZWxpbmU6XG4gKiAxLiBSYXRlIGxpbWl0aW5nIOKAlCBwcmV2ZW50cyBhYnVzZVxuICogMi4gU3RhdGljIHRvb2wgY2xhc3NpZmljYXRpb24g4oCUIGJ1aWx0LWluIGFsbG93L2RlbnkgcnVsZXNcbiAqIDMuIEVsZW1lbnQgcG9saWN5IGV2YWx1YXRpb24g4oCUIGFjdGl2ZSBlbGVtZW50IGdhdGVrZWVwZXIgcG9saWNpZXNcbiAqXG4gKiBSZXR1cm5zIHBsYXRmb3JtLXNwZWNpZmljIHJlc3BvbnNlIGZvcm1hdHMgc28gZWFjaCBwbGF0Zm9ybSdzIGhvb2tcbiAqIHNjcmlwdCByZWNlaXZlcyB0aGUgSlNPTiBzaGFwZSBpdCBleHBlY3RzLlxuICovXG5cbmltcG9ydCB0eXBlIHsgUmF0ZUxpbWl0ZXIgfSBmcm9tICcuLi8uLi91dGlscy9SYXRlTGltaXRlci5qcyc7XG5pbXBvcnQgdHlwZSB7IFRvb2xDbGFzc2lmaWNhdGlvblJlc3VsdCwgQ2xpVG9vbFBvbGljeVJlc3VsdCB9IGZyb20gJy4vcG9saWNpZXMvVG9vbENsYXNzaWZpY2F0aW9uLmpzJztcbmltcG9ydCB0eXBlIHsgQWN0aXZlRWxlbWVudCB9IGZyb20gJy4vcG9saWNpZXMvRWxlbWVudFBvbGljaWVzLmpzJztcblxuLyoqIEVycm9yIHRocm93biB3aGVuIHBlcm1pc3Npb24gZXZhbHVhdGlvbiBmYWlscyBhdCBhIHNwZWNpZmljIHN0YWdlICovXG5leHBvcnQgY2xhc3MgUGVybWlzc2lvbkV2YWx1YXRpb25FcnJvciBleHRlbmRzIEVycm9yIHtcbiAgcHVibGljIHJlYWRvbmx5IHN0YWdlOiAncmF0ZV9saW1pdCcgfCAnY2xhc3NpZmljYXRpb24nIHwgJ3BvbGljeScgfCAnZWxlbWVudF9mZXRjaCc7XG4gIHB1YmxpYyByZWFkb25seSB0b29sTmFtZTogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIG1lc3NhZ2U6IHN0cmluZyxcbiAgICBzdGFnZTogJ3JhdGVfbGltaXQnIHwgJ2NsYXNzaWZpY2F0aW9uJyB8ICdwb2xpY3knIHwgJ2VsZW1lbnRfZmV0Y2gnLFxuICAgIHRvb2xOYW1lOiBzdHJpbmcsXG4gICAgY2F1c2U/OiB1bmtub3duLFxuICApIHtcbiAgICBzdXBlcihtZXNzYWdlLCBjYXVzZSA/IHsgY2F1c2UgfSA6IHVuZGVmaW5lZCk7XG4gICAgdGhpcy5uYW1lID0gJ1Blcm1pc3Npb25FdmFsdWF0aW9uRXJyb3InO1xuICAgIHRoaXMuc3RhZ2UgPSBzdGFnZTtcbiAgICB0aGlzLnRvb2xOYW1lID0gdG9vbE5hbWU7XG4gIH1cbn1cblxuLyoqIERlcGVuZGVuY2llcyBpbmplY3RlZCBmcm9tIE1DUEFRTEhhbmRsZXIgKi9cbmV4cG9ydCBpbnRlcmZhY2UgRXZhbHVhdGVQZXJtaXNzaW9uRGVwcyB7XG4gIHBlcm1pc3Npb25Qcm9tcHRMaW1pdGVyOiBSYXRlTGltaXRlcjtcbiAgY2xhc3NpZnlUb29sOiAodG9vbE5hbWU6IHN0cmluZywgdG9vbElucHV0OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPikgPT4gVG9vbENsYXNzaWZpY2F0aW9uUmVzdWx0O1xuICBldmFsdWF0ZUNsaVRvb2xQb2xpY3k6ICh0b29sTmFtZTogc3RyaW5nLCB0b29sSW5wdXQ6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LCBlbGVtZW50czogQWN0aXZlRWxlbWVudFtdKSA9PiBDbGlUb29sUG9saWN5UmVzdWx0O1xuICBnZXRBY3RpdmVFbGVtZW50czogKCkgPT4gUHJvbWlzZTxBY3RpdmVFbGVtZW50W10+O1xufVxuXG4vKiogT3B0aW9uYWwgcmVhc29uIGZpZWxkLCBvbmx5IGluY2x1ZGVkIHdoZW4gcmVhc29uIGlzIHByb3ZpZGVkICovXG5mdW5jdGlvbiB3aXRoUmVhc29uKG9iajogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sIHJlYXNvbj86IHN0cmluZywga2V5ID0gJ3JlYXNvbicpOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB7XG4gIHJldHVybiByZWFzb24gPyB7IC4uLm9iaiwgW2tleV06IHJlYXNvbiB9IDogb2JqO1xufVxuXG4vKiogR2VtaW5pOiBtYXBzICdhc2snIHRvICdkZW55JyAobm8gaW50ZXJhY3RpdmUgc3VwcG9ydCkgKi9cbmZ1bmN0aW9uIGZvcm1hdEdlbWluaShkZWNpc2lvbjogc3RyaW5nLCByZWFzb24/OiBzdHJpbmcpOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB7XG4gIHJldHVybiB3aXRoUmVhc29uKHsgZGVjaXNpb246IGRlY2lzaW9uID09PSAnYXNrJyA/ICdkZW55JyA6IGRlY2lzaW9uIH0sIHJlYXNvbik7XG59XG5cbi8qKiBDdXJzb3I6IHVzZXMgJ3Blcm1pc3Npb24nIGZpZWxkIGluc3RlYWQgb2YgJ2RlY2lzaW9uJyAqL1xuZnVuY3Rpb24gZm9ybWF0Q3Vyc29yKGRlY2lzaW9uOiBzdHJpbmcsIHJlYXNvbj86IHN0cmluZyk6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHtcbiAgcmV0dXJuIHdpdGhSZWFzb24oeyBwZXJtaXNzaW9uOiBkZWNpc2lvbiB9LCByZWFzb24pO1xufVxuXG4vKiogV2luZHN1cmY6IHVzZXMgYm9vbGVhbiAnYWxsb3dlZCcgZmllbGQgKi9cbmZ1bmN0aW9uIGZvcm1hdFdpbmRzdXJmKGRlY2lzaW9uOiBzdHJpbmcsIHJlYXNvbj86IHN0cmluZyk6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHtcbiAgcmV0dXJuIHdpdGhSZWFzb24oeyBhbGxvd2VkOiBkZWNpc2lvbiA9PT0gJ2FsbG93JyB9LCByZWFzb24pO1xufVxuXG4vKiogQ29kZXg6IHdyYXBzIGluIGhvb2tTcGVjaWZpY091dHB1dCwgbWFwcyAnYXNrJyB0byAnZGVueScgKi9cbmZ1bmN0aW9uIGZvcm1hdENvZGV4KGRlY2lzaW9uOiBzdHJpbmcsIHJlYXNvbj86IHN0cmluZyk6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHtcbiAgcmV0dXJuIHsgaG9va1NwZWNpZmljT3V0cHV0OiB3aXRoUmVhc29uKHsgcGVybWlzc2lvbkRlY2lzaW9uOiBkZWNpc2lvbiA9PT0gJ2FzaycgPyAnZGVueScgOiBkZWNpc2lvbiB9LCByZWFzb24pIH07XG59XG5cbi8qKiBDbGF1ZGUgQ29kZSAoZGVmYXVsdCk6IHVzZXMgJ2RlY2lzaW9uJyB3aXRoICdtZXNzYWdlJyBmb3IgYXNrLCAncmVhc29uJyBmb3IgZGVueSAqL1xuZnVuY3Rpb24gZm9ybWF0Q2xhdWRlQ29kZShkZWNpc2lvbjogc3RyaW5nLCByZWFzb24/OiBzdHJpbmcpOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB7XG4gIGlmIChkZWNpc2lvbiA9PT0gJ2FsbG93JykgcmV0dXJuIHsgZGVjaXNpb246ICdhbGxvdycgfTtcbiAgaWYgKGRlY2lzaW9uID09PSAnYXNrJykgcmV0dXJuIHdpdGhSZWFzb24oeyBkZWNpc2lvbjogJ2FzaycgfSwgcmVhc29uLCAnbWVzc2FnZScpO1xuICByZXR1cm4gd2l0aFJlYXNvbih7IGRlY2lzaW9uOiAnZGVueScgfSwgcmVhc29uKTtcbn1cblxuLyoqIFBsYXRmb3JtIGZvcm1hdHRlciBsb29rdXAgKi9cbmNvbnN0IHBsYXRmb3JtRm9ybWF0dGVyczogUmVjb3JkPHN0cmluZywgKGRlY2lzaW9uOiBzdHJpbmcsIHJlYXNvbj86IHN0cmluZykgPT4gUmVjb3JkPHN0cmluZywgdW5rbm93bj4+ID0ge1xuICBnZW1pbmk6IGZvcm1hdEdlbWluaSxcbiAgY3Vyc29yOiBmb3JtYXRDdXJzb3IsXG4gIHdpbmRzdXJmOiBmb3JtYXRXaW5kc3VyZixcbiAgY29kZXg6IGZvcm1hdENvZGV4LFxuICBjbGF1ZGVfY29kZTogZm9ybWF0Q2xhdWRlQ29kZSxcbn07XG5cbi8qKiBLbm93biBwbGF0Zm9ybSBpZGVudGlmaWVycyAqL1xuZXhwb3J0IGNvbnN0IFNVUFBPUlRFRF9QTEFURk9STVMgPSBPYmplY3Qua2V5cyhwbGF0Zm9ybUZvcm1hdHRlcnMpO1xuXG4vKipcbiAqIEZvcm1hdCBwZXJtaXNzaW9uIGV2YWx1YXRpb24gcmVzcG9uc2UgZm9yIHBsYXRmb3JtLXNwZWNpZmljIGhvb2sgc2NyaXB0cy5cbiAqIEVhY2ggcGxhdGZvcm0gZXhwZWN0cyBhIGRpZmZlcmVudCBKU09OIHNoYXBlIGZyb20gaXRzIGhvb2sgcmVzcG9uc2UuXG4gKlxuICogVW5rbm93biBwbGF0Zm9ybXMgZGVmYXVsdCB0byBjbGF1ZGVfY29kZSBmb3JtYXQgd2l0aCBhIHdhcm5pbmcgbG9nLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0UGVybWlzc2lvblJlc3BvbnNlKFxuICBkZWNpc2lvbjogJ2FsbG93JyB8ICdkZW55JyB8ICdhc2snLFxuICBwbGF0Zm9ybTogc3RyaW5nLFxuICBfaW5wdXQ6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICByZWFzb24/OiBzdHJpbmcsXG4pOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB7XG4gIHN3aXRjaCAocGxhdGZvcm0pIHtcbiAgICBjYXNlICdnZW1pbmknOiByZXR1cm4gZm9ybWF0R2VtaW5pKGRlY2lzaW9uLCByZWFzb24pO1xuICAgIGNhc2UgJ2N1cnNvcic6IHJldHVybiBmb3JtYXRDdXJzb3IoZGVjaXNpb24sIHJlYXNvbik7XG4gICAgY2FzZSAnd2luZHN1cmYnOiByZXR1cm4gZm9ybWF0V2luZHN1cmYoZGVjaXNpb24sIHJlYXNvbik7XG4gICAgY2FzZSAnY29kZXgnOiByZXR1cm4gZm9ybWF0Q29kZXgoZGVjaXNpb24sIHJlYXNvbik7XG4gICAgY2FzZSAnY2xhdWRlX2NvZGUnOiByZXR1cm4gZm9ybWF0Q2xhdWRlQ29kZShkZWNpc2lvbiwgcmVhc29uKTtcbiAgICBkZWZhdWx0OlxuICAgICAgLy8gSW1wb3J0IGxhemlseSB0byBhdm9pZCBjaXJjdWxhciBkZXBlbmRlbmN5IGF0IG1vZHVsZSBsb2FkIHRpbWVcbiAgICAgIGltcG9ydCgnLi4vLi4vdXRpbHMvbG9nZ2VyLmpzJykudGhlbigoeyBsb2dnZXIgfSkgPT4ge1xuICAgICAgICBsb2dnZXIud2FybihgW2V2YWx1YXRlUGVybWlzc2lvbl0gVW5rbm93biBwbGF0Zm9ybSBcIiR7cGxhdGZvcm19XCIsIGRlZmF1bHRpbmcgdG8gY2xhdWRlX2NvZGUgZm9ybWF0LiBTdXBwb3J0ZWQ6ICR7U1VQUE9SVEVEX1BMQVRGT1JNUy5qb2luKCcsICcpfWApO1xuICAgICAgfSkuY2F0Y2goKCkgPT4geyAvKiBsb2dnZXIgbm90IGF2YWlsYWJsZSAqLyB9KTtcbiAgICAgIHJldHVybiBmb3JtYXRDbGF1ZGVDb2RlKGRlY2lzaW9uLCByZWFzb24pO1xuICB9XG59XG5cbi8qKlxuICogRXZhbHVhdGUgYSBDTEkgcGVybWlzc2lvbiByZXF1ZXN0IGZvciBQcmVUb29sVXNlIGhvb2tzLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUb29sIG5hbWUsIGlucHV0LCBhbmQgdGFyZ2V0IHBsYXRmb3JtXG4gKiBAcGFyYW0gZGVwcyAtIEluamVjdGVkIGRlcGVuZGVuY2llcyBmcm9tIE1DUEFRTEhhbmRsZXJcbiAqIEByZXR1cm5zIFBsYXRmb3JtLWZvcm1hdHRlZCBwZXJtaXNzaW9uIGRlY2lzaW9uXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBldmFsdWF0ZVBlcm1pc3Npb24oXG4gIHBhcmFtczogeyB0b29sX25hbWU/OiB1bmtub3duOyBpbnB1dD86IHVua25vd247IHBsYXRmb3JtPzogdW5rbm93biB9LFxuICBkZXBzOiBFdmFsdWF0ZVBlcm1pc3Npb25EZXBzLFxuKTogUHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4ge1xuICBjb25zdCB0b29sTmFtZSA9IHR5cGVvZiBwYXJhbXMudG9vbF9uYW1lID09PSAnc3RyaW5nJyA/IHBhcmFtcy50b29sX25hbWUgOiAnJztcbiAgY29uc3QgaW5wdXRSYXcgPSBwYXJhbXMuaW5wdXQ7XG4gIGNvbnN0IGlucHV0ID0gKGlucHV0UmF3ICYmIHR5cGVvZiBpbnB1dFJhdyA9PT0gJ29iamVjdCcpXG4gICAgPyBpbnB1dFJhdyBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuICAgIDoge307XG4gIGNvbnN0IHBsYXRmb3JtID0gdHlwZW9mIHBhcmFtcy5wbGF0Zm9ybSA9PT0gJ3N0cmluZycgPyBwYXJhbXMucGxhdGZvcm0gOiAnY2xhdWRlX2NvZGUnO1xuXG4gIC8vIFJhdGUgbGltaXRcbiAgY29uc3QgcmF0ZVN0YXR1cyA9IGRlcHMucGVybWlzc2lvblByb21wdExpbWl0ZXIuY2hlY2tMaW1pdCgpO1xuICBpZiAoIXJhdGVTdGF0dXMuYWxsb3dlZCkge1xuICAgIHJldHVybiBmb3JtYXRQZXJtaXNzaW9uUmVzcG9uc2UoJ2RlbnknLCBwbGF0Zm9ybSwgaW5wdXQsICdSYXRlIGxpbWl0IGV4Y2VlZGVkJyk7XG4gIH1cbiAgZGVwcy5wZXJtaXNzaW9uUHJvbXB0TGltaXRlci5jb25zdW1lVG9rZW4oKTtcblxuICAvLyBTdGFnZSAxOiBTdGF0aWMgY2xhc3NpZmljYXRpb25cbiAgY29uc3QgY2xhc3NpZmljYXRpb24gPSBkZXBzLmNsYXNzaWZ5VG9vbCh0b29sTmFtZSwgaW5wdXQpO1xuICBpZiAoY2xhc3NpZmljYXRpb24uYmVoYXZpb3IgPT09ICdhbGxvdycpIHtcbiAgICByZXR1cm4gZm9ybWF0UGVybWlzc2lvblJlc3BvbnNlKCdhbGxvdycsIHBsYXRmb3JtLCBpbnB1dCk7XG4gIH1cbiAgaWYgKGNsYXNzaWZpY2F0aW9uLmJlaGF2aW9yID09PSAnZGVueScpIHtcbiAgICByZXR1cm4gZm9ybWF0UGVybWlzc2lvblJlc3BvbnNlKCdkZW55JywgcGxhdGZvcm0sIGlucHV0LCBjbGFzc2lmaWNhdGlvbi5yZWFzb24pO1xuICB9XG5cbiAgLy8gU3RhZ2UgMjogRWxlbWVudCBwb2xpY3kgZXZhbHVhdGlvblxuICBsZXQgZWxlbWVudHM6IEFjdGl2ZUVsZW1lbnRbXTtcbiAgdHJ5IHtcbiAgICBlbGVtZW50cyA9IGF3YWl0IGRlcHMuZ2V0QWN0aXZlRWxlbWVudHMoKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhyb3cgbmV3IFBlcm1pc3Npb25FdmFsdWF0aW9uRXJyb3IoXG4gICAgICBgRmFpbGVkIHRvIGZldGNoIGFjdGl2ZSBlbGVtZW50cyBmb3IgcG9saWN5IGV2YWx1YXRpb246ICR7ZXJyIGluc3RhbmNlb2YgRXJyb3IgPyBlcnIubWVzc2FnZSA6IFN0cmluZyhlcnIpfWAsXG4gICAgICAnZWxlbWVudF9mZXRjaCcsIHRvb2xOYW1lLCBlcnIsXG4gICAgKTtcbiAgfVxuICBjb25zdCBkZWNpc2lvbiA9IGRlcHMuZXZhbHVhdGVDbGlUb29sUG9saWN5KHRvb2xOYW1lLCBpbnB1dCwgZWxlbWVudHMpO1xuXG4gIGlmIChkZWNpc2lvbi5iZWhhdmlvciA9PT0gJ2RlbnknKSB7XG4gICAgcmV0dXJuIGZvcm1hdFBlcm1pc3Npb25SZXNwb25zZSgnZGVueScsIHBsYXRmb3JtLCBpbnB1dCwgZGVjaXNpb24ubWVzc2FnZSk7XG4gIH1cbiAgaWYgKGRlY2lzaW9uLmJlaGF2aW9yID09PSAnY29uZmlybScpIHtcbiAgICByZXR1cm4gZm9ybWF0UGVybWlzc2lvblJlc3BvbnNlKCdhc2snLCBwbGF0Zm9ybSwgaW5wdXQsXG4gICAgICBkZWNpc2lvbi5tZXNzYWdlIHx8ICdSZXF1aXJlcyBjb25maXJtYXRpb24gcGVyIGVsZW1lbnQgcG9saWN5Jyk7XG4gIH1cblxuICAvLyBEZWZhdWx0OiBhbGxvd1xuICByZXR1cm4gZm9ybWF0UGVybWlzc2lvblJlc3BvbnNlKCdhbGxvdycsIHBsYXRmb3JtLCBpbnB1dCk7XG59XG4iXX0=
|
|
@@ -81,6 +81,23 @@ export declare function createDecisionFromPolicy(operation: string, result: Elem
|
|
|
81
81
|
* @throws Error if the policy is malformed
|
|
82
82
|
*/
|
|
83
83
|
export declare function parseElementPolicy(metadata: unknown): ElementGatekeeperPolicy | undefined;
|
|
84
|
+
/**
|
|
85
|
+
* Analyze externalRestrictions patterns for common mistakes and suspicious syntax.
|
|
86
|
+
*
|
|
87
|
+
* Returns non-fatal warnings to help LLMs and users write effective patterns.
|
|
88
|
+
* Does NOT throw — validation errors are handled by {@link validatePatternStrings}.
|
|
89
|
+
*
|
|
90
|
+
* Checks performed (Issue #1664):
|
|
91
|
+
* - Missing tool prefix (pattern doesn't start with ToolName:)
|
|
92
|
+
* - Overly broad patterns (bare `*` or `ToolName:*`)
|
|
93
|
+
* - Regex syntax that won't work in glob matching
|
|
94
|
+
* - Leading/trailing whitespace
|
|
95
|
+
*
|
|
96
|
+
* @param patterns - Array of pattern strings to analyze
|
|
97
|
+
* @param fieldName - Field name for warning messages
|
|
98
|
+
* @returns Array of warning messages (empty if no issues found)
|
|
99
|
+
*/
|
|
100
|
+
export declare function analyzePatternSyntax(patterns: string[], fieldName: string): string[];
|
|
84
101
|
/**
|
|
85
102
|
* Check if an operation is a gatekeeper infrastructure operation that should
|
|
86
103
|
* skip element policy evaluation in the primary enforcement path.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ElementPolicies.d.ts","sourceRoot":"","sources":["../../../../src/handlers/mcp-aql/policies/ElementPolicies.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EACL,eAAe,EACf,KAAK,uBAAuB,EAE5B,KAAK,kBAAkB,EAExB,MAAM,uBAAuB,CAAC;AAM/B;;;GAGG;AACH,MAAM,WAAW,yBAAyB;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,uBAAuB,CAAC;IACrC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,yBAAyB,CAAC;CACrC;AAED;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC,kEAAkE;IAClE,eAAe,EAAE,eAAe,CAAC;IACjC,oDAAoD;IACpD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,kEAAkE;IAClE,aAAa,CAAC,EAAE,OAAO,GAAG,SAAS,GAAG,MAAM,GAAG,mBAAmB,CAAC;IACnE,8DAA8D;IAC9D,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,eAAe,CAAA;KAAE,CAAC,CAAC;CAC7E;AAED;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,MAAM,EACjB,cAAc,EAAE,aAAa,EAAE,EAC/B,iBAAiB,CAAC,EAAE,MAAM,GACzB,mBAAmB,CAgGrB;AAED;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CACtC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,mBAAmB,EAC3B,iBAAiB,CAAC,EAAE,MAAM,GACzB,kBAAkB,CA2EpB;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,OAAO,GAChB,uBAAuB,GAAG,SAAS,
|
|
1
|
+
{"version":3,"file":"ElementPolicies.d.ts","sourceRoot":"","sources":["../../../../src/handlers/mcp-aql/policies/ElementPolicies.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EACL,eAAe,EACf,KAAK,uBAAuB,EAE5B,KAAK,kBAAkB,EAExB,MAAM,uBAAuB,CAAC;AAM/B;;;GAGG;AACH,MAAM,WAAW,yBAAyB;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,uBAAuB,CAAC;IACrC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,yBAAyB,CAAC;CACrC;AAED;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC,kEAAkE;IAClE,eAAe,EAAE,eAAe,CAAC;IACjC,oDAAoD;IACpD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,kEAAkE;IAClE,aAAa,CAAC,EAAE,OAAO,GAAG,SAAS,GAAG,MAAM,GAAG,mBAAmB,CAAC;IACnE,8DAA8D;IAC9D,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,eAAe,CAAA;KAAE,CAAC,CAAC;CAC7E;AAED;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,MAAM,EACjB,cAAc,EAAE,aAAa,EAAE,EAC/B,iBAAiB,CAAC,EAAE,MAAM,GACzB,mBAAmB,CAgGrB;AAED;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CACtC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,mBAAmB,EAC3B,iBAAiB,CAAC,EAAE,MAAM,GACzB,kBAAkB,CA2EpB;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,OAAO,GAChB,uBAAuB,GAAG,SAAS,CAmHrC;AAgED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,MAAM,EAAE,EAClB,SAAS,EAAE,MAAM,GAChB,MAAM,EAAE,CAMV;AA+HD;;;;GAIG;AACH,wBAAgB,0BAA0B,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAErE;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CACvC,cAAc,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,CAAC,GACvF;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAS5C;AAED;;;GAGG;AACH,wBAAgB,2BAA2B,CACzC,cAAc,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,CAAC,GACvF,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAUvC;AAwCD,wBAAgB,wBAAwB,CACtC,SAAS,EAAE,OAAO,EAClB,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,GAClB,uBAAuB,GAAG,SAAS,CAkCrC"}
|