@a5c-ai/agent-platform 5.0.1-staging.016f0b0e8119
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +48 -0
- package/dist/anycli/cache.d.ts +45 -0
- package/dist/anycli/cache.d.ts.map +1 -0
- package/dist/anycli/cache.js +118 -0
- package/dist/anycli/index.d.ts +10 -0
- package/dist/anycli/index.d.ts.map +1 -0
- package/dist/anycli/index.js +25 -0
- package/dist/anycli/types.d.ts +32 -0
- package/dist/anycli/types.d.ts.map +1 -0
- package/dist/anycli/types.js +9 -0
- package/dist/api/breakpoints.d.ts +93 -0
- package/dist/api/breakpoints.d.ts.map +1 -0
- package/dist/api/breakpoints.js +334 -0
- package/dist/api/effects.d.ts +14 -0
- package/dist/api/effects.d.ts.map +1 -0
- package/dist/api/effects.js +306 -0
- package/dist/api/effectsTypes.d.ts +79 -0
- package/dist/api/effectsTypes.d.ts.map +1 -0
- package/dist/api/effectsTypes.js +6 -0
- package/dist/api/eventStream.d.ts +34 -0
- package/dist/api/eventStream.d.ts.map +1 -0
- package/dist/api/eventStream.js +126 -0
- package/dist/api/index.d.ts +10 -0
- package/dist/api/index.d.ts.map +1 -0
- package/dist/api/index.js +27 -0
- package/dist/api/runs.d.ts +85 -0
- package/dist/api/runs.d.ts.map +1 -0
- package/dist/api/runs.js +247 -0
- package/dist/api/utils.d.ts +28 -0
- package/dist/api/utils.d.ts.map +1 -0
- package/dist/api/utils.js +74 -0
- package/dist/breakpoints/approvalChains.d.ts +68 -0
- package/dist/breakpoints/approvalChains.d.ts.map +1 -0
- package/dist/breakpoints/approvalChains.js +111 -0
- package/dist/breakpoints/delegation.d.ts +42 -0
- package/dist/breakpoints/delegation.d.ts.map +1 -0
- package/dist/breakpoints/delegation.js +199 -0
- package/dist/breakpoints/delegationTypes.d.ts +46 -0
- package/dist/breakpoints/delegationTypes.d.ts.map +1 -0
- package/dist/breakpoints/delegationTypes.js +10 -0
- package/dist/breakpoints/postures.d.ts +28 -0
- package/dist/breakpoints/postures.d.ts.map +1 -0
- package/dist/breakpoints/postures.js +100 -0
- package/dist/compression/compaction.d.ts +82 -0
- package/dist/compression/compaction.d.ts.map +1 -0
- package/dist/compression/compaction.js +310 -0
- package/dist/cost/claudeCodeParser.d.ts +81 -0
- package/dist/cost/claudeCodeParser.d.ts.map +1 -0
- package/dist/cost/claudeCodeParser.js +232 -0
- package/dist/cost/collector.d.ts +42 -0
- package/dist/cost/collector.d.ts.map +1 -0
- package/dist/cost/collector.js +105 -0
- package/dist/cost/effectCost.d.ts +23 -0
- package/dist/cost/effectCost.d.ts.map +1 -0
- package/dist/cost/effectCost.js +26 -0
- package/dist/cost/index.d.ts +7 -0
- package/dist/cost/index.d.ts.map +1 -0
- package/dist/cost/index.js +28 -0
- package/dist/cost/journal.d.ts +40 -0
- package/dist/cost/journal.d.ts.map +1 -0
- package/dist/cost/journal.js +137 -0
- package/dist/cost/types.d.ts +164 -0
- package/dist/cost/types.d.ts.map +1 -0
- package/dist/cost/types.js +228 -0
- package/dist/daemon/automationExecutor.d.ts +16 -0
- package/dist/daemon/automationExecutor.d.ts.map +1 -0
- package/dist/daemon/automationExecutor.js +222 -0
- package/dist/daemon/config.d.ts +8 -0
- package/dist/daemon/config.d.ts.map +1 -0
- package/dist/daemon/config.js +209 -0
- package/dist/daemon/daemonLog.d.ts +13 -0
- package/dist/daemon/daemonLog.d.ts.map +1 -0
- package/dist/daemon/daemonLog.js +64 -0
- package/dist/daemon/fileWatcher.d.ts +9 -0
- package/dist/daemon/fileWatcher.d.ts.map +1 -0
- package/dist/daemon/fileWatcher.js +141 -0
- package/dist/daemon/index.d.ts +9 -0
- package/dist/daemon/index.d.ts.map +1 -0
- package/dist/daemon/index.js +25 -0
- package/dist/daemon/lifecycle.d.ts +12 -0
- package/dist/daemon/lifecycle.d.ts.map +1 -0
- package/dist/daemon/lifecycle.js +257 -0
- package/dist/daemon/loop.d.ts +21 -0
- package/dist/daemon/loop.d.ts.map +1 -0
- package/dist/daemon/loop.js +196 -0
- package/dist/daemon/timerScheduler.d.ts +13 -0
- package/dist/daemon/timerScheduler.d.ts.map +1 -0
- package/dist/daemon/timerScheduler.js +122 -0
- package/dist/daemon/types.d.ts +93 -0
- package/dist/daemon/types.d.ts.map +1 -0
- package/dist/daemon/types.js +25 -0
- package/dist/daemon/webhookListener.d.ts +6 -0
- package/dist/daemon/webhookListener.d.ts.map +1 -0
- package/dist/daemon/webhookListener.js +110 -0
- package/dist/governance/authority.d.ts +68 -0
- package/dist/governance/authority.d.ts.map +1 -0
- package/dist/governance/authority.js +136 -0
- package/dist/governance/bridge.d.ts +17 -0
- package/dist/governance/bridge.d.ts.map +1 -0
- package/dist/governance/bridge.js +46 -0
- package/dist/governance/builtins.d.ts +25 -0
- package/dist/governance/builtins.d.ts.map +1 -0
- package/dist/governance/builtins.js +67 -0
- package/dist/governance/categories.d.ts +58 -0
- package/dist/governance/categories.d.ts.map +1 -0
- package/dist/governance/categories.js +120 -0
- package/dist/governance/decisionTrail.d.ts +60 -0
- package/dist/governance/decisionTrail.d.ts.map +1 -0
- package/dist/governance/decisionTrail.js +68 -0
- package/dist/governance/engine.d.ts +20 -0
- package/dist/governance/engine.d.ts.map +1 -0
- package/dist/governance/engine.js +124 -0
- package/dist/governance/index.d.ts +20 -0
- package/dist/governance/index.d.ts.map +1 -0
- package/dist/governance/index.js +75 -0
- package/dist/governance/logging.d.ts +18 -0
- package/dist/governance/logging.d.ts.map +1 -0
- package/dist/governance/logging.js +83 -0
- package/dist/governance/mandate.d.ts +83 -0
- package/dist/governance/mandate.d.ts.map +1 -0
- package/dist/governance/mandate.js +180 -0
- package/dist/governance/permissionEvents.d.ts +51 -0
- package/dist/governance/permissionEvents.d.ts.map +1 -0
- package/dist/governance/permissionEvents.js +52 -0
- package/dist/governance/permissionPropagation.d.ts +18 -0
- package/dist/governance/permissionPropagation.d.ts.map +1 -0
- package/dist/governance/permissionPropagation.js +58 -0
- package/dist/governance/postureBridge.d.ts +17 -0
- package/dist/governance/postureBridge.d.ts.map +1 -0
- package/dist/governance/postureBridge.js +117 -0
- package/dist/governance/sandboxBridge.d.ts +49 -0
- package/dist/governance/sandboxBridge.d.ts.map +1 -0
- package/dist/governance/sandboxBridge.js +77 -0
- package/dist/governance/sandboxPolicy.d.ts +51 -0
- package/dist/governance/sandboxPolicy.d.ts.map +1 -0
- package/dist/governance/sandboxPolicy.js +177 -0
- package/dist/governance/types.d.ts +3 -0
- package/dist/governance/types.d.ts.map +1 -0
- package/dist/governance/types.js +5 -0
- package/dist/harness/amux/amuxBridge.d.ts +71 -0
- package/dist/harness/amux/amuxBridge.d.ts.map +1 -0
- package/dist/harness/amux/amuxBridge.js +117 -0
- package/dist/harness/amux/amuxClientFactory.d.ts +29 -0
- package/dist/harness/amux/amuxClientFactory.d.ts.map +1 -0
- package/dist/harness/amux/amuxClientFactory.js +90 -0
- package/dist/harness/amux/amuxEventEmitter.d.ts +51 -0
- package/dist/harness/amux/amuxEventEmitter.d.ts.map +1 -0
- package/dist/harness/amux/amuxEventEmitter.js +143 -0
- package/dist/harness/amux/amuxEventMapper.d.ts +58 -0
- package/dist/harness/amux/amuxEventMapper.d.ts.map +1 -0
- package/dist/harness/amux/amuxEventMapper.js +92 -0
- package/dist/harness/amux/amuxHarnessMap.d.ts +25 -0
- package/dist/harness/amux/amuxHarnessMap.d.ts.map +1 -0
- package/dist/harness/amux/amuxHarnessMap.js +55 -0
- package/dist/harness/amux/amuxStdinReader.d.ts +45 -0
- package/dist/harness/amux/amuxStdinReader.d.ts.map +1 -0
- package/dist/harness/amux/amuxStdinReader.js +106 -0
- package/dist/harness/amux/amuxTypes.d.ts +122 -0
- package/dist/harness/amux/amuxTypes.d.ts.map +1 -0
- package/dist/harness/amux/amuxTypes.js +11 -0
- package/dist/harness/amux/index.d.ts +17 -0
- package/dist/harness/amux/index.d.ts.map +1 -0
- package/dist/harness/amux/index.js +34 -0
- package/dist/harness/backgroundTracker.d.ts +64 -0
- package/dist/harness/backgroundTracker.d.ts.map +1 -0
- package/dist/harness/backgroundTracker.js +107 -0
- package/dist/harness/builtInHarness.d.ts +3 -0
- package/dist/harness/builtInHarness.d.ts.map +1 -0
- package/dist/harness/builtInHarness.js +18 -0
- package/dist/harness/capabilityRouter.d.ts +76 -0
- package/dist/harness/capabilityRouter.d.ts.map +1 -0
- package/dist/harness/capabilityRouter.js +176 -0
- package/dist/harness/fallbackChains.d.ts +42 -0
- package/dist/harness/fallbackChains.d.ts.map +1 -0
- package/dist/harness/fallbackChains.js +69 -0
- package/dist/harness/hostContract.d.ts +63 -0
- package/dist/harness/hostContract.d.ts.map +1 -0
- package/dist/harness/hostContract.js +136 -0
- package/dist/harness/index.d.ts +18 -0
- package/dist/harness/index.d.ts.map +1 -0
- package/dist/harness/index.js +91 -0
- package/dist/harness/internal/createRun/askUserQuestion.d.ts +11 -0
- package/dist/harness/internal/createRun/askUserQuestion.d.ts.map +1 -0
- package/dist/harness/internal/createRun/askUserQuestion.js +162 -0
- package/dist/harness/internal/createRun/index.d.ts +25 -0
- package/dist/harness/internal/createRun/index.d.ts.map +1 -0
- package/dist/harness/internal/createRun/index.js +137 -0
- package/dist/harness/internal/createRun/orchestration/constants.d.ts +7 -0
- package/dist/harness/internal/createRun/orchestration/constants.d.ts.map +1 -0
- package/dist/harness/internal/createRun/orchestration/constants.js +13 -0
- package/dist/harness/internal/createRun/orchestration/effects.d.ts +43 -0
- package/dist/harness/internal/createRun/orchestration/effects.d.ts.map +1 -0
- package/dist/harness/internal/createRun/orchestration/effects.js +490 -0
- package/dist/harness/internal/createRun/orchestration/effectsHelpers.d.ts +20 -0
- package/dist/harness/internal/createRun/orchestration/effectsHelpers.d.ts.map +1 -0
- package/dist/harness/internal/createRun/orchestration/effectsHelpers.js +79 -0
- package/dist/harness/internal/createRun/orchestration/externalPhase.d.ts +3 -0
- package/dist/harness/internal/createRun/orchestration/externalPhase.d.ts.map +1 -0
- package/dist/harness/internal/createRun/orchestration/externalPhase.js +319 -0
- package/dist/harness/internal/createRun/orchestration/externalPhaseHelpers.d.ts +16 -0
- package/dist/harness/internal/createRun/orchestration/externalPhaseHelpers.d.ts.map +1 -0
- package/dist/harness/internal/createRun/orchestration/externalPhaseHelpers.js +104 -0
- package/dist/harness/internal/createRun/orchestration/index.d.ts +14 -0
- package/dist/harness/internal/createRun/orchestration/index.d.ts.map +1 -0
- package/dist/harness/internal/createRun/orchestration/index.js +36 -0
- package/dist/harness/internal/createRun/orchestration/internalPhase.d.ts +3 -0
- package/dist/harness/internal/createRun/orchestration/internalPhase.d.ts.map +1 -0
- package/dist/harness/internal/createRun/orchestration/internalPhase.js +464 -0
- package/dist/harness/internal/createRun/orchestration/internalTools.d.ts +26 -0
- package/dist/harness/internal/createRun/orchestration/internalTools.d.ts.map +1 -0
- package/dist/harness/internal/createRun/orchestration/internalTools.js +262 -0
- package/dist/harness/internal/createRun/orchestration/internalToolsHelpers.d.ts +17 -0
- package/dist/harness/internal/createRun/orchestration/internalToolsHelpers.d.ts.map +1 -0
- package/dist/harness/internal/createRun/orchestration/internalToolsHelpers.js +23 -0
- package/dist/harness/internal/createRun/orchestration/taskResult.d.ts +10 -0
- package/dist/harness/internal/createRun/orchestration/taskResult.d.ts.map +1 -0
- package/dist/harness/internal/createRun/orchestration/taskResult.js +67 -0
- package/dist/harness/internal/createRun/orchestration/types.d.ts +46 -0
- package/dist/harness/internal/createRun/orchestration/types.d.ts.map +1 -0
- package/dist/harness/internal/createRun/orchestration/types.js +2 -0
- package/dist/harness/internal/createRun/orchestration/verbose.d.ts +7 -0
- package/dist/harness/internal/createRun/orchestration/verbose.d.ts.map +1 -0
- package/dist/harness/internal/createRun/orchestration/verbose.js +240 -0
- package/dist/harness/internal/createRun/output.d.ts +38 -0
- package/dist/harness/internal/createRun/output.d.ts.map +1 -0
- package/dist/harness/internal/createRun/output.js +415 -0
- package/dist/harness/internal/createRun/pi.d.ts +34 -0
- package/dist/harness/internal/createRun/pi.d.ts.map +1 -0
- package/dist/harness/internal/createRun/pi.js +216 -0
- package/dist/harness/internal/createRun/planProcess/agentOutput.d.ts +5 -0
- package/dist/harness/internal/createRun/planProcess/agentOutput.d.ts.map +1 -0
- package/dist/harness/internal/createRun/planProcess/agentOutput.js +113 -0
- package/dist/harness/internal/createRun/planProcess/delegation.d.ts +23 -0
- package/dist/harness/internal/createRun/planProcess/delegation.d.ts.map +1 -0
- package/dist/harness/internal/createRun/planProcess/delegation.js +176 -0
- package/dist/harness/internal/createRun/planProcess/external.d.ts +14 -0
- package/dist/harness/internal/createRun/planProcess/external.d.ts.map +1 -0
- package/dist/harness/internal/createRun/planProcess/external.js +139 -0
- package/dist/harness/internal/createRun/planProcess/index.d.ts +12 -0
- package/dist/harness/internal/createRun/planProcess/index.d.ts.map +1 -0
- package/dist/harness/internal/createRun/planProcess/index.js +24 -0
- package/dist/harness/internal/createRun/planProcess/paths.d.ts +7 -0
- package/dist/harness/internal/createRun/planProcess/paths.d.ts.map +1 -0
- package/dist/harness/internal/createRun/planProcess/paths.js +98 -0
- package/dist/harness/internal/createRun/planProcess/phase.d.ts +6 -0
- package/dist/harness/internal/createRun/planProcess/phase.d.ts.map +1 -0
- package/dist/harness/internal/createRun/planProcess/phase.js +361 -0
- package/dist/harness/internal/createRun/planProcess/phaseHelpers.d.ts +37 -0
- package/dist/harness/internal/createRun/planProcess/phaseHelpers.d.ts.map +1 -0
- package/dist/harness/internal/createRun/planProcess/phaseHelpers.js +159 -0
- package/dist/harness/internal/createRun/planProcess/phaseTypes.d.ts +25 -0
- package/dist/harness/internal/createRun/planProcess/phaseTypes.d.ts.map +1 -0
- package/dist/harness/internal/createRun/planProcess/phaseTypes.js +6 -0
- package/dist/harness/internal/createRun/planProcess/prompts.d.ts +20 -0
- package/dist/harness/internal/createRun/planProcess/prompts.d.ts.map +1 -0
- package/dist/harness/internal/createRun/planProcess/prompts.js +208 -0
- package/dist/harness/internal/createRun/planProcess/recovery.d.ts +18 -0
- package/dist/harness/internal/createRun/planProcess/recovery.d.ts.map +1 -0
- package/dist/harness/internal/createRun/planProcess/recovery.js +188 -0
- package/dist/harness/internal/createRun/planProcess/recovery.test.d.ts +2 -0
- package/dist/harness/internal/createRun/planProcess/recovery.test.d.ts.map +1 -0
- package/dist/harness/internal/createRun/planProcess/recovery.test.js +68 -0
- package/dist/harness/internal/createRun/planProcess/runState.d.ts +40 -0
- package/dist/harness/internal/createRun/planProcess/runState.d.ts.map +1 -0
- package/dist/harness/internal/createRun/planProcess/runState.js +179 -0
- package/dist/harness/internal/createRun/planProcess/understandIntent.d.ts +22 -0
- package/dist/harness/internal/createRun/planProcess/understandIntent.d.ts.map +1 -0
- package/dist/harness/internal/createRun/planProcess/understandIntent.js +65 -0
- package/dist/harness/internal/createRun/planProcess/validation.d.ts +2 -0
- package/dist/harness/internal/createRun/planProcess/validation.d.ts.map +1 -0
- package/dist/harness/internal/createRun/planProcess/validation.js +212 -0
- package/dist/harness/internal/createRun/planProcess/validationSource.d.ts +11 -0
- package/dist/harness/internal/createRun/planProcess/validationSource.d.ts.map +1 -0
- package/dist/harness/internal/createRun/planProcess/validationSource.js +328 -0
- package/dist/harness/internal/createRun/planProcess/validationText.d.ts +3 -0
- package/dist/harness/internal/createRun/planProcess/validationText.d.ts.map +1 -0
- package/dist/harness/internal/createRun/planProcess/validationText.js +145 -0
- package/dist/harness/internal/createRun/prompts.d.ts +49 -0
- package/dist/harness/internal/createRun/prompts.d.ts.map +1 -0
- package/dist/harness/internal/createRun/prompts.js +307 -0
- package/dist/harness/internal/createRun/resumeState.d.ts +28 -0
- package/dist/harness/internal/createRun/resumeState.d.ts.map +1 -0
- package/dist/harness/internal/createRun/resumeState.js +133 -0
- package/dist/harness/internal/createRun/utils.d.ts +182 -0
- package/dist/harness/internal/createRun/utils.d.ts.map +1 -0
- package/dist/harness/internal/createRun/utils.js +133 -0
- package/dist/harness/internal.d.ts +13 -0
- package/dist/harness/internal.d.ts.map +1 -0
- package/dist/harness/internal.js +149 -0
- package/dist/harness/invoker/launch.d.ts +20 -0
- package/dist/harness/invoker/launch.d.ts.map +1 -0
- package/dist/harness/invoker/launch.js +23 -0
- package/dist/harness/invoker/processControl.d.ts +11 -0
- package/dist/harness/invoker/processControl.d.ts.map +1 -0
- package/dist/harness/invoker/processControl.js +50 -0
- package/dist/harness/invoker.d.ts +43 -0
- package/dist/harness/invoker.d.ts.map +1 -0
- package/dist/harness/invoker.js +210 -0
- package/dist/harness/modeSelector.d.ts +50 -0
- package/dist/harness/modeSelector.d.ts.map +1 -0
- package/dist/harness/modeSelector.js +124 -0
- package/dist/harness/modelSelection.d.ts +37 -0
- package/dist/harness/modelSelection.d.ts.map +1 -0
- package/dist/harness/modelSelection.js +81 -0
- package/dist/harness/operatorCommands.d.ts +38 -0
- package/dist/harness/operatorCommands.d.ts.map +1 -0
- package/dist/harness/operatorCommands.js +118 -0
- package/dist/harness/piSecureSandbox.d.ts +8 -0
- package/dist/harness/piSecureSandbox.d.ts.map +1 -0
- package/dist/harness/piSecureSandbox.js +366 -0
- package/dist/harness/piSecureSandboxTypes.d.ts +51 -0
- package/dist/harness/piSecureSandboxTypes.d.ts.map +1 -0
- package/dist/harness/piSecureSandboxTypes.js +6 -0
- package/dist/harness/piWrapper/compaction.d.ts +13 -0
- package/dist/harness/piWrapper/compaction.d.ts.map +1 -0
- package/dist/harness/piWrapper/compaction.js +38 -0
- package/dist/harness/piWrapper/instructionPrompts.d.ts +2 -0
- package/dist/harness/piWrapper/instructionPrompts.d.ts.map +1 -0
- package/dist/harness/piWrapper/instructionPrompts.js +97 -0
- package/dist/harness/piWrapper/moduleSupport.d.ts +77 -0
- package/dist/harness/piWrapper/moduleSupport.d.ts.map +1 -0
- package/dist/harness/piWrapper/moduleSupport.js +204 -0
- package/dist/harness/piWrapper.d.ts +80 -0
- package/dist/harness/piWrapper.d.ts.map +1 -0
- package/dist/harness/piWrapper.js +389 -0
- package/dist/harness/piWrapper.test.d.ts +2 -0
- package/dist/harness/piWrapper.test.d.ts.map +1 -0
- package/dist/harness/piWrapper.test.js +193 -0
- package/dist/harness/planMode.d.ts +68 -0
- package/dist/harness/planMode.d.ts.map +1 -0
- package/dist/harness/planMode.js +145 -0
- package/dist/harness/selectionPolicies.d.ts +29 -0
- package/dist/harness/selectionPolicies.d.ts.map +1 -0
- package/dist/harness/selectionPolicies.js +165 -0
- package/dist/harness/types.d.ts +266 -0
- package/dist/harness/types.d.ts.map +1 -0
- package/dist/harness/types.js +34 -0
- package/dist/index.d.ts +16 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +54 -0
- package/dist/interaction/askUserQuestion/core.d.ts +8 -0
- package/dist/interaction/askUserQuestion/core.d.ts.map +1 -0
- package/dist/interaction/askUserQuestion/core.js +112 -0
- package/dist/interaction/askUserQuestion/terminal.d.ts +15 -0
- package/dist/interaction/askUserQuestion/terminal.d.ts.map +1 -0
- package/dist/interaction/askUserQuestion/terminal.js +128 -0
- package/dist/interaction/askUserQuestion.d.ts +10 -0
- package/dist/interaction/askUserQuestion.d.ts.map +1 -0
- package/dist/interaction/askUserQuestion.js +295 -0
- package/dist/interaction/askUserQuestionTypes.d.ts +31 -0
- package/dist/interaction/askUserQuestionTypes.d.ts.map +1 -0
- package/dist/interaction/askUserQuestionTypes.js +6 -0
- package/dist/interaction/index.d.ts +4 -0
- package/dist/interaction/index.d.ts.map +1 -0
- package/dist/interaction/index.js +20 -0
- package/dist/interaction/interactionRouter.d.ts +25 -0
- package/dist/interaction/interactionRouter.d.ts.map +1 -0
- package/dist/interaction/interactionRouter.js +55 -0
- package/dist/mcp/channels/allowlist.d.ts +19 -0
- package/dist/mcp/channels/allowlist.d.ts.map +1 -0
- package/dist/mcp/channels/allowlist.js +140 -0
- package/dist/mcp/channels/channelManager.d.ts +64 -0
- package/dist/mcp/channels/channelManager.d.ts.map +1 -0
- package/dist/mcp/channels/channelManager.js +137 -0
- package/dist/mcp/channels/inboundQueue.d.ts +47 -0
- package/dist/mcp/channels/inboundQueue.d.ts.map +1 -0
- package/dist/mcp/channels/inboundQueue.js +96 -0
- package/dist/mcp/channels/index.d.ts +17 -0
- package/dist/mcp/channels/index.d.ts.map +1 -0
- package/dist/mcp/channels/index.js +39 -0
- package/dist/mcp/channels/outbound.d.ts +33 -0
- package/dist/mcp/channels/outbound.d.ts.map +1 -0
- package/dist/mcp/channels/outbound.js +94 -0
- package/dist/mcp/channels/permissionRelay.d.ts +62 -0
- package/dist/mcp/channels/permissionRelay.d.ts.map +1 -0
- package/dist/mcp/channels/permissionRelay.js +159 -0
- package/dist/mcp/channels/types.d.ts +135 -0
- package/dist/mcp/channels/types.d.ts.map +1 -0
- package/dist/mcp/channels/types.js +16 -0
- package/dist/mcp/client/config.d.ts +28 -0
- package/dist/mcp/client/config.d.ts.map +1 -0
- package/dist/mcp/client/config.js +142 -0
- package/dist/mcp/client/executor.d.ts +30 -0
- package/dist/mcp/client/executor.d.ts.map +1 -0
- package/dist/mcp/client/executor.js +60 -0
- package/dist/mcp/client/index.d.ts +12 -0
- package/dist/mcp/client/index.d.ts.map +1 -0
- package/dist/mcp/client/index.js +27 -0
- package/dist/mcp/client/manager.d.ts +74 -0
- package/dist/mcp/client/manager.d.ts.map +1 -0
- package/dist/mcp/client/manager.js +214 -0
- package/dist/mcp/client/toolRegistry.d.ts +50 -0
- package/dist/mcp/client/toolRegistry.d.ts.map +1 -0
- package/dist/mcp/client/toolRegistry.js +118 -0
- package/dist/mcp/client/types.d.ts +96 -0
- package/dist/mcp/client/types.d.ts.map +1 -0
- package/dist/mcp/client/types.js +15 -0
- package/dist/mcp/transport/index.d.ts +9 -0
- package/dist/mcp/transport/index.d.ts.map +1 -0
- package/dist/mcp/transport/index.js +13 -0
- package/dist/mcp/transport/session.d.ts +18 -0
- package/dist/mcp/transport/session.d.ts.map +1 -0
- package/dist/mcp/transport/session.js +78 -0
- package/dist/mcp/transport/types.d.ts +19 -0
- package/dist/mcp/transport/types.d.ts.map +1 -0
- package/dist/mcp/transport/types.js +7 -0
- package/dist/mcp/transport/websocket.d.ts +41 -0
- package/dist/mcp/transport/websocket.d.ts.map +1 -0
- package/dist/mcp/transport/websocket.js +271 -0
- package/dist/observability/health.d.ts +19 -0
- package/dist/observability/health.d.ts.map +1 -0
- package/dist/observability/health.js +129 -0
- package/dist/observability/index.d.ts +7 -0
- package/dist/observability/index.d.ts.map +1 -0
- package/dist/observability/index.js +22 -0
- package/dist/observability/runStatus.d.ts +44 -0
- package/dist/observability/runStatus.d.ts.map +1 -0
- package/dist/observability/runStatus.js +169 -0
- package/dist/observability/timeline.d.ts +11 -0
- package/dist/observability/timeline.d.ts.map +1 -0
- package/dist/observability/timeline.js +176 -0
- package/dist/observability/types.d.ts +62 -0
- package/dist/observability/types.d.ts.map +1 -0
- package/dist/observability/types.js +8 -0
- package/dist/observability/webhooks.d.ts +68 -0
- package/dist/observability/webhooks.d.ts.map +1 -0
- package/dist/observability/webhooks.js +132 -0
- package/dist/plugins/index.d.ts +11 -0
- package/dist/plugins/index.d.ts.map +1 -0
- package/dist/plugins/index.js +18 -0
- package/dist/plugins/loader.d.ts +37 -0
- package/dist/plugins/loader.d.ts.map +1 -0
- package/dist/plugins/loader.js +112 -0
- package/dist/plugins/sandbox.d.ts +38 -0
- package/dist/plugins/sandbox.d.ts.map +1 -0
- package/dist/plugins/sandbox.js +109 -0
- package/dist/plugins/types.d.ts +27 -0
- package/dist/plugins/types.d.ts.map +1 -0
- package/dist/plugins/types.js +7 -0
- package/dist/plugins/version-check.d.ts +23 -0
- package/dist/plugins/version-check.d.ts.map +1 -0
- package/dist/plugins/version-check.js +70 -0
- package/dist/processes/index.d.ts +12 -0
- package/dist/processes/index.d.ts.map +1 -0
- package/dist/processes/index.js +15 -0
- package/dist/processes/recommender.d.ts +36 -0
- package/dist/processes/recommender.d.ts.map +1 -0
- package/dist/processes/recommender.js +73 -0
- package/dist/processes/scorer.d.ts +26 -0
- package/dist/processes/scorer.d.ts.map +1 -0
- package/dist/processes/scorer.js +104 -0
- package/dist/processes/types.d.ts +48 -0
- package/dist/processes/types.d.ts.map +1 -0
- package/dist/processes/types.js +9 -0
- package/dist/runtime/index.d.ts +3 -0
- package/dist/runtime/index.d.ts.map +1 -0
- package/dist/runtime/index.js +28 -0
- package/dist/seams/contract.d.ts +63 -0
- package/dist/seams/contract.d.ts.map +1 -0
- package/dist/seams/contract.js +138 -0
- package/dist/seams/contract.test.d.ts +2 -0
- package/dist/seams/contract.test.d.ts.map +1 -0
- package/dist/seams/contract.test.js +99 -0
- package/dist/seams/index.d.ts +3 -0
- package/dist/seams/index.d.ts.map +1 -0
- package/dist/seams/index.js +8 -0
- package/dist/session/context.d.ts +22 -0
- package/dist/session/context.d.ts.map +1 -0
- package/dist/session/context.js +113 -0
- package/dist/session/continuityState.d.ts +39 -0
- package/dist/session/continuityState.d.ts.map +1 -0
- package/dist/session/continuityState.js +164 -0
- package/dist/session/cost.d.ts +63 -0
- package/dist/session/cost.d.ts.map +1 -0
- package/dist/session/cost.js +194 -0
- package/dist/session/discovery.d.ts +22 -0
- package/dist/session/discovery.d.ts.map +1 -0
- package/dist/session/discovery.js +35 -0
- package/dist/session/history.d.ts +30 -0
- package/dist/session/history.d.ts.map +1 -0
- package/dist/session/history.js +143 -0
- package/dist/session/index.d.ts +7 -0
- package/dist/session/index.d.ts.map +1 -0
- package/dist/session/index.js +70 -0
- package/dist/session/memoryExtraction.d.ts +65 -0
- package/dist/session/memoryExtraction.d.ts.map +1 -0
- package/dist/session/memoryExtraction.js +201 -0
- package/dist/session/parse.d.ts +45 -0
- package/dist/session/parse.d.ts.map +1 -0
- package/dist/session/parse.js +170 -0
- package/dist/session/persistence.d.ts +46 -0
- package/dist/session/persistence.d.ts.map +1 -0
- package/dist/session/persistence.js +180 -0
- package/dist/session/types.d.ts +267 -0
- package/dist/session/types.d.ts.map +1 -0
- package/dist/session/types.js +45 -0
- package/dist/session/write.d.ts +61 -0
- package/dist/session/write.d.ts.map +1 -0
- package/dist/session/write.js +213 -0
- package/dist/skills/chain.d.ts +31 -0
- package/dist/skills/chain.d.ts.map +1 -0
- package/dist/skills/chain.js +113 -0
- package/dist/skills/discovery.d.ts +34 -0
- package/dist/skills/discovery.d.ts.map +1 -0
- package/dist/skills/discovery.js +185 -0
- package/dist/skills/index.d.ts +12 -0
- package/dist/skills/index.d.ts.map +1 -0
- package/dist/skills/index.js +18 -0
- package/dist/skills/router.d.ts +35 -0
- package/dist/skills/router.d.ts.map +1 -0
- package/dist/skills/router.js +143 -0
- package/dist/skills/types.d.ts +33 -0
- package/dist/skills/types.d.ts.map +1 -0
- package/dist/skills/types.js +5 -0
- package/dist/storage/atomic.d.ts +2 -0
- package/dist/storage/atomic.d.ts.map +1 -0
- package/dist/storage/atomic.js +54 -0
- package/dist/storage/clock.d.ts +2 -0
- package/dist/storage/clock.d.ts.map +1 -0
- package/dist/storage/clock.js +6 -0
- package/dist/storage/index.d.ts +7 -0
- package/dist/storage/index.d.ts.map +1 -0
- package/dist/storage/index.js +9 -0
- package/dist/storage/journalWatcher.d.ts +24 -0
- package/dist/storage/journalWatcher.d.ts.map +1 -0
- package/dist/storage/journalWatcher.js +172 -0
- package/dist/storage/paths.d.ts +5 -0
- package/dist/storage/paths.d.ts.map +1 -0
- package/dist/storage/paths.js +26 -0
- package/dist/storage/snapshotState.d.ts +10 -0
- package/dist/storage/snapshotState.d.ts.map +1 -0
- package/dist/storage/snapshotState.js +15 -0
- package/dist/storage/storeTaskArtifacts.d.ts +6 -0
- package/dist/storage/storeTaskArtifacts.d.ts.map +1 -0
- package/dist/storage/storeTaskArtifacts.js +55 -0
- package/dist/storage/types.d.ts +21 -0
- package/dist/storage/types.d.ts.map +1 -0
- package/dist/storage/types.js +2 -0
- package/dist/tasks/crud.d.ts +33 -0
- package/dist/tasks/crud.d.ts.map +1 -0
- package/dist/tasks/crud.js +150 -0
- package/dist/tasks/index.d.ts +2 -0
- package/dist/tasks/index.d.ts.map +1 -0
- package/dist/tasks/index.js +9 -0
- package/package.json +159 -0
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GAP-REMOTE-001: Daemon Mode — Type definitions.
|
|
3
|
+
*/
|
|
4
|
+
import type { AutomationRule, TimerAutomationRule, WebhookAutomationRule } from "@a5c-ai/agent-comm-mux";
|
|
5
|
+
export interface DaemonConfig {
|
|
6
|
+
workspace: string;
|
|
7
|
+
triggers: TriggerConfig[];
|
|
8
|
+
maxConcurrentRuns?: number;
|
|
9
|
+
}
|
|
10
|
+
export interface FileTriggerConfig {
|
|
11
|
+
type: "file";
|
|
12
|
+
pattern: string;
|
|
13
|
+
processId: string;
|
|
14
|
+
entrypoint: string;
|
|
15
|
+
debounceMs?: number;
|
|
16
|
+
}
|
|
17
|
+
export type TriggerConfig = FileTriggerConfig | AutomationRule;
|
|
18
|
+
export interface FileTriggerEvent {
|
|
19
|
+
type: "file";
|
|
20
|
+
processId: string;
|
|
21
|
+
entrypoint: string;
|
|
22
|
+
inputs?: Record<string, unknown>;
|
|
23
|
+
}
|
|
24
|
+
export interface AutomationTriggerEvent {
|
|
25
|
+
type: "automation";
|
|
26
|
+
rule: AutomationRule;
|
|
27
|
+
inputs?: Record<string, unknown>;
|
|
28
|
+
}
|
|
29
|
+
export type TriggerEvent = FileTriggerEvent | AutomationTriggerEvent;
|
|
30
|
+
export declare function isFileTriggerConfig(trigger: TriggerConfig): trigger is FileTriggerConfig;
|
|
31
|
+
export declare function isTimerAutomationRule(trigger: TriggerConfig): trigger is TimerAutomationRule;
|
|
32
|
+
export declare function isWebhookAutomationRule(trigger: TriggerConfig): trigger is WebhookAutomationRule;
|
|
33
|
+
export declare function isFileTriggerEvent(event: TriggerEvent): event is FileTriggerEvent;
|
|
34
|
+
export declare function isAutomationTriggerEvent(event: TriggerEvent): event is AutomationTriggerEvent;
|
|
35
|
+
export interface LegacyTriggerConfig {
|
|
36
|
+
type: "file" | "webhook" | "timer";
|
|
37
|
+
processId: string;
|
|
38
|
+
entrypoint: string;
|
|
39
|
+
pattern?: string;
|
|
40
|
+
port?: number;
|
|
41
|
+
cron?: string;
|
|
42
|
+
debounceMs?: number;
|
|
43
|
+
}
|
|
44
|
+
export interface DaemonStartOptions {
|
|
45
|
+
daemonDir: string;
|
|
46
|
+
workspace: string;
|
|
47
|
+
foreground?: boolean;
|
|
48
|
+
config?: DaemonConfig;
|
|
49
|
+
}
|
|
50
|
+
export interface DaemonStartOutput {
|
|
51
|
+
pid: number;
|
|
52
|
+
daemonDir: string;
|
|
53
|
+
startedAt: string;
|
|
54
|
+
}
|
|
55
|
+
export interface DaemonStopOptions {
|
|
56
|
+
daemonDir: string;
|
|
57
|
+
gracePeriodMs?: number;
|
|
58
|
+
}
|
|
59
|
+
export interface DaemonStopOutput {
|
|
60
|
+
pid: number;
|
|
61
|
+
stoppedAt: string;
|
|
62
|
+
}
|
|
63
|
+
export interface DaemonStatusOptions {
|
|
64
|
+
daemonDir: string;
|
|
65
|
+
}
|
|
66
|
+
export interface DaemonStatusOutput {
|
|
67
|
+
running: boolean;
|
|
68
|
+
pid?: number;
|
|
69
|
+
uptime?: number;
|
|
70
|
+
startedAt?: string;
|
|
71
|
+
activeTriggers?: number;
|
|
72
|
+
pendingRuns?: number;
|
|
73
|
+
}
|
|
74
|
+
export interface FileWatcherHandle {
|
|
75
|
+
dispose(): void;
|
|
76
|
+
}
|
|
77
|
+
export interface WebhookListenerOptions {
|
|
78
|
+
rule: WebhookAutomationRule;
|
|
79
|
+
onTrigger: TriggerCallback;
|
|
80
|
+
}
|
|
81
|
+
export interface WebhookListenerHandle {
|
|
82
|
+
close(): Promise<void>;
|
|
83
|
+
port: number;
|
|
84
|
+
}
|
|
85
|
+
export type TriggerCallback = (trigger: TriggerEvent) => void | Promise<void>;
|
|
86
|
+
export interface DaemonMetadata {
|
|
87
|
+
workspace: string;
|
|
88
|
+
startedAt: string;
|
|
89
|
+
triggers: TriggerConfig[];
|
|
90
|
+
maxConcurrentRuns: number;
|
|
91
|
+
pid: number;
|
|
92
|
+
}
|
|
93
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/daemon/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* GAP-REMOTE-001: Daemon Mode — Type definitions.
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.isFileTriggerConfig = isFileTriggerConfig;
|
|
7
|
+
exports.isTimerAutomationRule = isTimerAutomationRule;
|
|
8
|
+
exports.isWebhookAutomationRule = isWebhookAutomationRule;
|
|
9
|
+
exports.isFileTriggerEvent = isFileTriggerEvent;
|
|
10
|
+
exports.isAutomationTriggerEvent = isAutomationTriggerEvent;
|
|
11
|
+
function isFileTriggerConfig(trigger) {
|
|
12
|
+
return "type" in trigger && trigger.type === "file";
|
|
13
|
+
}
|
|
14
|
+
function isTimerAutomationRule(trigger) {
|
|
15
|
+
return "trigger" in trigger && trigger.trigger.type === "timer";
|
|
16
|
+
}
|
|
17
|
+
function isWebhookAutomationRule(trigger) {
|
|
18
|
+
return "trigger" in trigger && trigger.trigger.type === "webhook";
|
|
19
|
+
}
|
|
20
|
+
function isFileTriggerEvent(event) {
|
|
21
|
+
return event.type !== "automation";
|
|
22
|
+
}
|
|
23
|
+
function isAutomationTriggerEvent(event) {
|
|
24
|
+
return event.type === "automation";
|
|
25
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GAP-REMOTE-001: Webhook Listener — HTTP trigger endpoint.
|
|
3
|
+
*/
|
|
4
|
+
import type { WebhookListenerOptions, WebhookListenerHandle } from "./types";
|
|
5
|
+
export declare function createWebhookListener(options: WebhookListenerOptions): Promise<WebhookListenerHandle>;
|
|
6
|
+
//# sourceMappingURL=webhookListener.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webhookListener.d.ts","sourceRoot":"","sources":["../../src/daemon/webhookListener.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAI7E,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,sBAAsB,GAC9B,OAAO,CAAC,qBAAqB,CAAC,CA0EhC"}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* GAP-REMOTE-001: Webhook Listener — HTTP trigger endpoint.
|
|
4
|
+
*/
|
|
5
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
8
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
9
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
10
|
+
}
|
|
11
|
+
Object.defineProperty(o, k2, desc);
|
|
12
|
+
}) : (function(o, m, k, k2) {
|
|
13
|
+
if (k2 === undefined) k2 = k;
|
|
14
|
+
o[k2] = m[k];
|
|
15
|
+
}));
|
|
16
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
17
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
18
|
+
}) : function(o, v) {
|
|
19
|
+
o["default"] = v;
|
|
20
|
+
});
|
|
21
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
22
|
+
var ownKeys = function(o) {
|
|
23
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
24
|
+
var ar = [];
|
|
25
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
26
|
+
return ar;
|
|
27
|
+
};
|
|
28
|
+
return ownKeys(o);
|
|
29
|
+
};
|
|
30
|
+
return function (mod) {
|
|
31
|
+
if (mod && mod.__esModule) return mod;
|
|
32
|
+
var result = {};
|
|
33
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
34
|
+
__setModuleDefault(result, mod);
|
|
35
|
+
return result;
|
|
36
|
+
};
|
|
37
|
+
})();
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.createWebhookListener = createWebhookListener;
|
|
40
|
+
const http = __importStar(require("node:http"));
|
|
41
|
+
const MAX_BODY_BYTES = 1024 * 1024; // 1 MiB
|
|
42
|
+
async function createWebhookListener(options) {
|
|
43
|
+
const { rule, onTrigger } = options;
|
|
44
|
+
const port = rule.trigger.port;
|
|
45
|
+
const path = rule.trigger.path ?? "/trigger";
|
|
46
|
+
const method = rule.trigger.method ?? "POST";
|
|
47
|
+
const authToken = rule.trigger.auth?.type === "bearer" ? rule.trigger.auth.token : undefined;
|
|
48
|
+
const server = http.createServer((req, res) => {
|
|
49
|
+
if (req.method !== method || req.url !== path) {
|
|
50
|
+
res.writeHead(404, { "Content-Type": "application/json" });
|
|
51
|
+
res.end(JSON.stringify({ error: "Not found" }));
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
// Auth check
|
|
55
|
+
if (authToken) {
|
|
56
|
+
const authHeader = req.headers.authorization;
|
|
57
|
+
if (!authHeader || authHeader !== `Bearer ${authToken}`) {
|
|
58
|
+
res.writeHead(401, { "Content-Type": "application/json" });
|
|
59
|
+
res.end(JSON.stringify({ error: "Unauthorized" }));
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
let body = "";
|
|
64
|
+
let bodySize = 0;
|
|
65
|
+
req.on("data", (chunk) => {
|
|
66
|
+
bodySize += chunk.length;
|
|
67
|
+
if (bodySize > MAX_BODY_BYTES) {
|
|
68
|
+
res.writeHead(413, { "Content-Type": "application/json" });
|
|
69
|
+
res.end(JSON.stringify({ error: "Payload too large" }));
|
|
70
|
+
req.destroy();
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
body += chunk.toString();
|
|
74
|
+
});
|
|
75
|
+
req.on("end", () => {
|
|
76
|
+
try {
|
|
77
|
+
const payload = JSON.parse(body);
|
|
78
|
+
const inputs = typeof payload.inputs === "object" && payload.inputs !== null && !Array.isArray(payload.inputs)
|
|
79
|
+
? payload.inputs
|
|
80
|
+
: undefined;
|
|
81
|
+
void onTrigger({
|
|
82
|
+
type: "automation",
|
|
83
|
+
rule,
|
|
84
|
+
inputs,
|
|
85
|
+
});
|
|
86
|
+
res.writeHead(200, { "Content-Type": "application/json" });
|
|
87
|
+
res.end(JSON.stringify({ ok: true }));
|
|
88
|
+
}
|
|
89
|
+
catch {
|
|
90
|
+
res.writeHead(400, { "Content-Type": "application/json" });
|
|
91
|
+
res.end(JSON.stringify({ error: "Invalid JSON body" }));
|
|
92
|
+
}
|
|
93
|
+
});
|
|
94
|
+
});
|
|
95
|
+
return new Promise((resolve, reject) => {
|
|
96
|
+
server.on("error", reject);
|
|
97
|
+
server.listen(port, () => {
|
|
98
|
+
const addr = server.address();
|
|
99
|
+
const actualPort = typeof addr === "object" && addr ? addr.port : port;
|
|
100
|
+
resolve({
|
|
101
|
+
port: actualPort,
|
|
102
|
+
async close() {
|
|
103
|
+
return new Promise((res, rej) => {
|
|
104
|
+
server.close((err) => (err ? rej(err) : res()));
|
|
105
|
+
});
|
|
106
|
+
},
|
|
107
|
+
});
|
|
108
|
+
});
|
|
109
|
+
});
|
|
110
|
+
}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GAP-SEC: Authority Chain system.
|
|
3
|
+
*
|
|
4
|
+
* Models delegation chains from human principals through agent principals,
|
|
5
|
+
* with monotonically narrowing scope at each hop.
|
|
6
|
+
*/
|
|
7
|
+
import type { MandateScope } from './mandate';
|
|
8
|
+
/** A principal (human or agent) in the authority chain. */
|
|
9
|
+
export interface AuthorityPrincipal {
|
|
10
|
+
kind: 'human' | 'agent';
|
|
11
|
+
id: string;
|
|
12
|
+
displayName: string;
|
|
13
|
+
}
|
|
14
|
+
/** A single grant of authority from one principal to another. */
|
|
15
|
+
export interface AuthorityGrant {
|
|
16
|
+
from: AuthorityPrincipal;
|
|
17
|
+
to: AuthorityPrincipal;
|
|
18
|
+
scope: MandateScope;
|
|
19
|
+
grantedAt: string;
|
|
20
|
+
revokedAt?: string;
|
|
21
|
+
expiresAt?: string;
|
|
22
|
+
}
|
|
23
|
+
/** A link in the authority chain (wrapping a grant). */
|
|
24
|
+
export interface AuthorityChainLink {
|
|
25
|
+
grant: AuthorityGrant;
|
|
26
|
+
index: number;
|
|
27
|
+
}
|
|
28
|
+
/** A full authority chain from root to leaf. */
|
|
29
|
+
export interface AuthorityChain {
|
|
30
|
+
grants: AuthorityGrant[];
|
|
31
|
+
rootPrincipal: AuthorityPrincipal;
|
|
32
|
+
effectiveScope: MandateScope;
|
|
33
|
+
}
|
|
34
|
+
/** Result of chain validation. */
|
|
35
|
+
export interface AuthorityChainValidationResult {
|
|
36
|
+
valid: boolean;
|
|
37
|
+
reason?: string;
|
|
38
|
+
}
|
|
39
|
+
/** Result of tracing authority to a human root. */
|
|
40
|
+
export interface AuthorityTrace {
|
|
41
|
+
humanPrincipal: AuthorityPrincipal;
|
|
42
|
+
hopCount: number;
|
|
43
|
+
principalPath: string[];
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Create an authority chain from an ordered list of grants.
|
|
47
|
+
* Computes the effective scope as the intersection of all grant scopes.
|
|
48
|
+
*/
|
|
49
|
+
export declare function createAuthorityChain(grants: AuthorityGrant[]): AuthorityChain;
|
|
50
|
+
/**
|
|
51
|
+
* Validate an authority chain. Checks:
|
|
52
|
+
* 1. Root must be a human principal.
|
|
53
|
+
* 2. No revoked links.
|
|
54
|
+
* 3. No expired links.
|
|
55
|
+
* 4. Scopes monotonically narrow (no expansion).
|
|
56
|
+
*/
|
|
57
|
+
export declare function validateAuthorityChain(chain: AuthorityChain): AuthorityChainValidationResult;
|
|
58
|
+
/**
|
|
59
|
+
* Attenuate (intersect) two scopes. The result is never wider than either input.
|
|
60
|
+
* Pure function.
|
|
61
|
+
*/
|
|
62
|
+
export declare function attenuateScope(parent: MandateScope, child: MandateScope): MandateScope;
|
|
63
|
+
/**
|
|
64
|
+
* Trace authority back to the human root, returning the human principal,
|
|
65
|
+
* hop count, and full principal path.
|
|
66
|
+
*/
|
|
67
|
+
export declare function traceAuthorityToHuman(chain: AuthorityChain): AuthorityTrace;
|
|
68
|
+
//# sourceMappingURL=authority.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"authority.d.ts","sourceRoot":"","sources":["../../src/governance/authority.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAM9C,2DAA2D;AAC3D,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,iEAAiE;AACjE,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,kBAAkB,CAAC;IACzB,EAAE,EAAE,kBAAkB,CAAC;IACvB,KAAK,EAAE,YAAY,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wDAAwD;AACxD,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,cAAc,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,gDAAgD;AAChD,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,cAAc,EAAE,CAAC;IACzB,aAAa,EAAE,kBAAkB,CAAC;IAClC,cAAc,EAAE,YAAY,CAAC;CAC9B;AAED,kCAAkC;AAClC,MAAM,WAAW,8BAA8B;IAC7C,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,mDAAmD;AACnD,MAAM,WAAW,cAAc;IAC7B,cAAc,EAAE,kBAAkB,CAAC;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,EAAE,CAAC;CACzB;AAMD;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,cAAc,EAAE,GAAG,cAAc,CAkB7E;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,cAAc,GAAG,8BAA8B,CAiC5F;AA2BD;;;GAGG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,GAAG,YAAY,CAqBtF;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,cAAc,GAAG,cAAc,CAW3E"}
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* GAP-SEC: Authority Chain system.
|
|
4
|
+
*
|
|
5
|
+
* Models delegation chains from human principals through agent principals,
|
|
6
|
+
* with monotonically narrowing scope at each hop.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.createAuthorityChain = createAuthorityChain;
|
|
10
|
+
exports.validateAuthorityChain = validateAuthorityChain;
|
|
11
|
+
exports.attenuateScope = attenuateScope;
|
|
12
|
+
exports.traceAuthorityToHuman = traceAuthorityToHuman;
|
|
13
|
+
// ---------------------------------------------------------------------------
|
|
14
|
+
// Core functions
|
|
15
|
+
// ---------------------------------------------------------------------------
|
|
16
|
+
/**
|
|
17
|
+
* Create an authority chain from an ordered list of grants.
|
|
18
|
+
* Computes the effective scope as the intersection of all grant scopes.
|
|
19
|
+
*/
|
|
20
|
+
function createAuthorityChain(grants) {
|
|
21
|
+
if (grants.length === 0) {
|
|
22
|
+
throw new Error('Authority chain requires at least one grant');
|
|
23
|
+
}
|
|
24
|
+
const rootPrincipal = grants[0].from;
|
|
25
|
+
// Compute effective scope as intersection of all grant scopes
|
|
26
|
+
let effectiveScope = { ...grants[0].scope, allowedEffectKinds: [...grants[0].scope.allowedEffectKinds] };
|
|
27
|
+
for (let i = 1; i < grants.length; i++) {
|
|
28
|
+
effectiveScope = attenuateScope(effectiveScope, grants[i].scope);
|
|
29
|
+
}
|
|
30
|
+
return {
|
|
31
|
+
grants: [...grants],
|
|
32
|
+
rootPrincipal,
|
|
33
|
+
effectiveScope,
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Validate an authority chain. Checks:
|
|
38
|
+
* 1. Root must be a human principal.
|
|
39
|
+
* 2. No revoked links.
|
|
40
|
+
* 3. No expired links.
|
|
41
|
+
* 4. Scopes monotonically narrow (no expansion).
|
|
42
|
+
*/
|
|
43
|
+
function validateAuthorityChain(chain) {
|
|
44
|
+
// 1. Root must be human
|
|
45
|
+
if (chain.rootPrincipal.kind !== 'human') {
|
|
46
|
+
return { valid: false, reason: 'Authority chain must be rooted in a human principal' };
|
|
47
|
+
}
|
|
48
|
+
const now = Date.now();
|
|
49
|
+
for (let i = 0; i < chain.grants.length; i++) {
|
|
50
|
+
const grant = chain.grants[i];
|
|
51
|
+
// 2. No revoked links
|
|
52
|
+
if (grant.revokedAt) {
|
|
53
|
+
return { valid: false, reason: `Grant at index ${i} has been revoked` };
|
|
54
|
+
}
|
|
55
|
+
// 3. No expired links
|
|
56
|
+
if (grant.expiresAt && new Date(grant.expiresAt).getTime() <= now) {
|
|
57
|
+
return { valid: false, reason: `Grant at index ${i} has expired` };
|
|
58
|
+
}
|
|
59
|
+
// 4. Scope must not expand beyond previous grant
|
|
60
|
+
if (i > 0) {
|
|
61
|
+
const parentScope = chain.grants[i - 1].scope;
|
|
62
|
+
const childScope = grant.scope;
|
|
63
|
+
if (!isScopeSubsetOrEqual(parentScope, childScope)) {
|
|
64
|
+
return { valid: false, reason: `Grant at index ${i} expands scope beyond parent` };
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
return { valid: true };
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Check if childScope is a subset of or equal to parentScope.
|
|
72
|
+
*/
|
|
73
|
+
function isScopeSubsetOrEqual(parent, child) {
|
|
74
|
+
// Check effect kinds
|
|
75
|
+
const parentWildcard = parent.allowedEffectKinds.length === 1 && parent.allowedEffectKinds[0] === '*';
|
|
76
|
+
if (!parentWildcard) {
|
|
77
|
+
for (const kind of child.allowedEffectKinds) {
|
|
78
|
+
if (kind === '*') {
|
|
79
|
+
return false; // wildcard child cannot escape non-wildcard parent
|
|
80
|
+
}
|
|
81
|
+
if (!parent.allowedEffectKinds.includes(kind)) {
|
|
82
|
+
return false;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
// Check numeric limits
|
|
87
|
+
if (child.maxIterations > parent.maxIterations)
|
|
88
|
+
return false;
|
|
89
|
+
if (child.maxConcurrentTasks > parent.maxConcurrentTasks)
|
|
90
|
+
return false;
|
|
91
|
+
if (child.timeoutMs > parent.timeoutMs)
|
|
92
|
+
return false;
|
|
93
|
+
return true;
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Attenuate (intersect) two scopes. The result is never wider than either input.
|
|
97
|
+
* Pure function.
|
|
98
|
+
*/
|
|
99
|
+
function attenuateScope(parent, child) {
|
|
100
|
+
const parentWildcard = parent.allowedEffectKinds.length === 1 && parent.allowedEffectKinds[0] === '*';
|
|
101
|
+
const childWildcard = child.allowedEffectKinds.length === 1 && child.allowedEffectKinds[0] === '*';
|
|
102
|
+
let allowedEffectKinds;
|
|
103
|
+
if (parentWildcard && childWildcard) {
|
|
104
|
+
allowedEffectKinds = ['*'];
|
|
105
|
+
}
|
|
106
|
+
else if (parentWildcard) {
|
|
107
|
+
allowedEffectKinds = [...child.allowedEffectKinds];
|
|
108
|
+
}
|
|
109
|
+
else if (childWildcard) {
|
|
110
|
+
allowedEffectKinds = [...parent.allowedEffectKinds];
|
|
111
|
+
}
|
|
112
|
+
else {
|
|
113
|
+
allowedEffectKinds = parent.allowedEffectKinds.filter(k => child.allowedEffectKinds.includes(k));
|
|
114
|
+
}
|
|
115
|
+
return {
|
|
116
|
+
allowedEffectKinds,
|
|
117
|
+
maxIterations: Math.min(parent.maxIterations, child.maxIterations),
|
|
118
|
+
maxConcurrentTasks: Math.min(parent.maxConcurrentTasks, child.maxConcurrentTasks),
|
|
119
|
+
timeoutMs: Math.min(parent.timeoutMs, child.timeoutMs),
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Trace authority back to the human root, returning the human principal,
|
|
124
|
+
* hop count, and full principal path.
|
|
125
|
+
*/
|
|
126
|
+
function traceAuthorityToHuman(chain) {
|
|
127
|
+
const principalPath = [chain.grants[0].from.id];
|
|
128
|
+
for (const grant of chain.grants) {
|
|
129
|
+
principalPath.push(grant.to.id);
|
|
130
|
+
}
|
|
131
|
+
return {
|
|
132
|
+
humanPrincipal: chain.rootPrincipal,
|
|
133
|
+
hopCount: chain.grants.length,
|
|
134
|
+
principalPath,
|
|
135
|
+
};
|
|
136
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Bridge from existing breakpoint rules to governance policies (GAP-SEC-001).
|
|
3
|
+
* Converts BreakpointRule[] into PolicyRule[] for unified evaluation.
|
|
4
|
+
*/
|
|
5
|
+
import type { BreakpointRule } from "@a5c-ai/babysitter-sdk";
|
|
6
|
+
import type { PolicyRule } from './types';
|
|
7
|
+
/**
|
|
8
|
+
* Convert breakpoint auto-approval rules into governance policy rules.
|
|
9
|
+
*
|
|
10
|
+
* Mapping:
|
|
11
|
+
* - "auto-approve" → allow policy (permission kind)
|
|
12
|
+
* - "never-auto-approve" → deny policy (permission kind)
|
|
13
|
+
*
|
|
14
|
+
* The breakpoint pattern is mapped to a "matches" condition on the taskId field.
|
|
15
|
+
*/
|
|
16
|
+
export declare function breakpointRulesToPolicies(rules: BreakpointRule[]): PolicyRule[];
|
|
17
|
+
//# sourceMappingURL=bridge.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bridge.d.ts","sourceRoot":"","sources":["../../src/governance/bridge.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAE1C;;;;;;;;GAQG;AACH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,cAAc,EAAE,GAAG,UAAU,EAAE,CAkB/E"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Bridge from existing breakpoint rules to governance policies (GAP-SEC-001).
|
|
4
|
+
* Converts BreakpointRule[] into PolicyRule[] for unified evaluation.
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.breakpointRulesToPolicies = breakpointRulesToPolicies;
|
|
8
|
+
/**
|
|
9
|
+
* Convert breakpoint auto-approval rules into governance policy rules.
|
|
10
|
+
*
|
|
11
|
+
* Mapping:
|
|
12
|
+
* - "auto-approve" → allow policy (permission kind)
|
|
13
|
+
* - "never-auto-approve" → deny policy (permission kind)
|
|
14
|
+
*
|
|
15
|
+
* The breakpoint pattern is mapped to a "matches" condition on the taskId field.
|
|
16
|
+
*/
|
|
17
|
+
function breakpointRulesToPolicies(rules) {
|
|
18
|
+
return rules.map(rule => ({
|
|
19
|
+
id: `bp-bridge:${rule.id}`,
|
|
20
|
+
kind: 'permission',
|
|
21
|
+
condition: {
|
|
22
|
+
field: 'taskId',
|
|
23
|
+
op: 'matches',
|
|
24
|
+
value: globToRegex(rule.pattern),
|
|
25
|
+
},
|
|
26
|
+
action: rule.action === 'auto-approve' ? 'allow' : 'deny',
|
|
27
|
+
priority: rule.action === 'never-auto-approve' ? 100 : 50,
|
|
28
|
+
metadata: {
|
|
29
|
+
source: 'breakpoint-bridge',
|
|
30
|
+
originalPattern: rule.pattern,
|
|
31
|
+
createdBy: rule.createdBy,
|
|
32
|
+
...(rule.note ? { note: rule.note } : {}),
|
|
33
|
+
},
|
|
34
|
+
}));
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Convert a simple glob pattern to a regex string.
|
|
38
|
+
* Supports * (any chars) and ? (single char).
|
|
39
|
+
*/
|
|
40
|
+
function globToRegex(glob) {
|
|
41
|
+
const escaped = glob
|
|
42
|
+
.replace(/[.+^${}()|[\]\\]/g, '\\$&')
|
|
43
|
+
.replace(/\*/g, '.*')
|
|
44
|
+
.replace(/\?/g, '.');
|
|
45
|
+
return `^${escaped}$`;
|
|
46
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Built-in governance policy rules (GAP-SEC-001).
|
|
3
|
+
* Ready-to-use policy factories for common constraints.
|
|
4
|
+
*/
|
|
5
|
+
import type { PolicyRule, StatefulPolicyRule } from './types';
|
|
6
|
+
/**
|
|
7
|
+
* Deny effects when the iteration count exceeds a limit.
|
|
8
|
+
*/
|
|
9
|
+
export declare function maxIterationsPolicy(limit: number): PolicyRule;
|
|
10
|
+
/**
|
|
11
|
+
* Deny effects whose effectKind is not in the allowed list.
|
|
12
|
+
* Implemented as a deny rule that matches effectKinds NOT in the list.
|
|
13
|
+
*
|
|
14
|
+
* Since condition ops are single-value, this creates one deny rule per
|
|
15
|
+
* disallowed kind by using a special "neq" with a runtime check.
|
|
16
|
+
* For simplicity, we use a "matches" regex that rejects non-matching kinds.
|
|
17
|
+
*/
|
|
18
|
+
export declare function taskKindPolicy(allowedKinds: string[]): PolicyRule;
|
|
19
|
+
/**
|
|
20
|
+
* Deny effects when the rate exceeds maxCount within windowMs.
|
|
21
|
+
* Uses an in-memory sliding window counter via StatefulPolicyRule.
|
|
22
|
+
* Note: counter resets on process restart (in-memory only).
|
|
23
|
+
*/
|
|
24
|
+
export declare function rateLimitPolicy(windowMs: number, maxCount: number): StatefulPolicyRule;
|
|
25
|
+
//# sourceMappingURL=builtins.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"builtins.d.ts","sourceRoot":"","sources":["../../src/governance/builtins.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,kBAAkB,EAA2B,MAAM,SAAS,CAAC;AAEvF;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,CAS7D;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,UAAU,CAUjE;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,kBAAkB,CAqBtF"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Built-in governance policy rules (GAP-SEC-001).
|
|
4
|
+
* Ready-to-use policy factories for common constraints.
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.maxIterationsPolicy = maxIterationsPolicy;
|
|
8
|
+
exports.taskKindPolicy = taskKindPolicy;
|
|
9
|
+
exports.rateLimitPolicy = rateLimitPolicy;
|
|
10
|
+
/**
|
|
11
|
+
* Deny effects when the iteration count exceeds a limit.
|
|
12
|
+
*/
|
|
13
|
+
function maxIterationsPolicy(limit) {
|
|
14
|
+
return {
|
|
15
|
+
id: `builtin:max-iterations:${limit}`,
|
|
16
|
+
kind: 'resource-limit',
|
|
17
|
+
condition: { field: 'iteration', op: 'gt', value: String(limit) },
|
|
18
|
+
action: 'deny',
|
|
19
|
+
priority: 90,
|
|
20
|
+
metadata: { description: `Deny when iteration exceeds ${limit}` },
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Deny effects whose effectKind is not in the allowed list.
|
|
25
|
+
* Implemented as a deny rule that matches effectKinds NOT in the list.
|
|
26
|
+
*
|
|
27
|
+
* Since condition ops are single-value, this creates one deny rule per
|
|
28
|
+
* disallowed kind by using a special "neq" with a runtime check.
|
|
29
|
+
* For simplicity, we use a "matches" regex that rejects non-matching kinds.
|
|
30
|
+
*/
|
|
31
|
+
function taskKindPolicy(allowedKinds) {
|
|
32
|
+
const pattern = `^(?!${allowedKinds.map(k => k.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')).join('|')}$)`;
|
|
33
|
+
return {
|
|
34
|
+
id: `builtin:task-kind:${allowedKinds.join(',')}`,
|
|
35
|
+
kind: 'permission',
|
|
36
|
+
condition: { field: 'effectKind', op: 'matches', value: pattern },
|
|
37
|
+
action: 'deny',
|
|
38
|
+
priority: 80,
|
|
39
|
+
metadata: { description: `Only allow effect kinds: ${allowedKinds.join(', ')}` },
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Deny effects when the rate exceeds maxCount within windowMs.
|
|
44
|
+
* Uses an in-memory sliding window counter via StatefulPolicyRule.
|
|
45
|
+
* Note: counter resets on process restart (in-memory only).
|
|
46
|
+
*/
|
|
47
|
+
function rateLimitPolicy(windowMs, maxCount) {
|
|
48
|
+
let timestamps = [];
|
|
49
|
+
return {
|
|
50
|
+
id: `builtin:rate-limit:${maxCount}per${windowMs}ms`,
|
|
51
|
+
kind: 'rate-limit',
|
|
52
|
+
// Declarative condition is a no-op placeholder; shouldMatch does the real work
|
|
53
|
+
condition: { field: '__rate_limit__', op: 'eq', value: '__stateful__' },
|
|
54
|
+
action: 'deny',
|
|
55
|
+
priority: 95,
|
|
56
|
+
metadata: {
|
|
57
|
+
description: `Rate limit: ${maxCount} per ${windowMs}ms`,
|
|
58
|
+
},
|
|
59
|
+
shouldMatch(_context) {
|
|
60
|
+
const now = Date.now();
|
|
61
|
+
// Evict expired timestamps with filter (O(n) but no shift overhead)
|
|
62
|
+
timestamps = timestamps.filter(t => t > now - windowMs);
|
|
63
|
+
timestamps.push(now);
|
|
64
|
+
return timestamps.length > maxCount;
|
|
65
|
+
},
|
|
66
|
+
};
|
|
67
|
+
}
|