@a5c-ai/genty-platform 5.1.1-staging.00ceebd28cf2
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/sessions.d.ts +17 -0
- package/dist/api/sessions.d.ts.map +1 -0
- package/dist/api/sessions.js +58 -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/analytics.d.ts +46 -0
- package/dist/breakpoints/analytics.d.ts.map +1 -0
- package/dist/breakpoints/analytics.js +64 -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/compression/compactionStrategy.d.ts +37 -0
- package/dist/compression/compactionStrategy.d.ts.map +1 -0
- package/dist/compression/compactionStrategy.js +52 -0
- package/dist/compression/compressionFamilies.d.ts +39 -0
- package/dist/compression/compressionFamilies.d.ts.map +1 -0
- package/dist/compression/compressionFamilies.js +123 -0
- package/dist/context/dynamic.d.ts +16 -0
- package/dist/context/dynamic.d.ts.map +1 -0
- package/dist/context/dynamic.js +55 -0
- package/dist/context/instructions.d.ts +15 -0
- package/dist/context/instructions.d.ts.map +1 -0
- package/dist/context/instructions.js +97 -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 +158 -0
- package/dist/cost/types.d.ts +172 -0
- package/dist/cost/types.d.ts.map +1 -0
- package/dist/cost/types.js +229 -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 +245 -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/durableQueue.d.ts +41 -0
- package/dist/daemon/durableQueue.d.ts.map +1 -0
- package/dist/daemon/durableQueue.js +183 -0
- package/dist/daemon/fileWatcher.d.ts +9 -0
- package/dist/daemon/fileWatcher.d.ts.map +1 -0
- package/dist/daemon/fileWatcher.js +144 -0
- package/dist/daemon/index.d.ts +9 -0
- package/dist/daemon/index.d.ts.map +1 -0
- package/dist/daemon/index.js +26 -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 +27 -0
- package/dist/daemon/loop.d.ts.map +1 -0
- package/dist/daemon/loop.js +387 -0
- package/dist/daemon/timerScheduler.d.ts +13 -0
- package/dist/daemon/timerScheduler.d.ts.map +1 -0
- package/dist/daemon/timerScheduler.js +212 -0
- package/dist/daemon/types.d.ts +122 -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 +132 -0
- package/dist/extensions/discovery.d.ts +15 -0
- package/dist/extensions/discovery.d.ts.map +1 -0
- package/dist/extensions/discovery.js +119 -0
- package/dist/extensions/installer.d.ts +14 -0
- package/dist/extensions/installer.d.ts.map +1 -0
- package/dist/extensions/installer.js +100 -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/privacySettings.d.ts +31 -0
- package/dist/governance/privacySettings.d.ts.map +1 -0
- package/dist/governance/privacySettings.js +104 -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/adapters/adapterBridge.d.ts +71 -0
- package/dist/harness/adapters/adapterBridge.d.ts.map +1 -0
- package/dist/harness/adapters/adapterBridge.js +117 -0
- package/dist/harness/adapters/adapterClientFactory.d.ts +29 -0
- package/dist/harness/adapters/adapterClientFactory.d.ts.map +1 -0
- package/dist/harness/adapters/adapterClientFactory.js +90 -0
- package/dist/harness/adapters/adapterEventEmitter.d.ts +51 -0
- package/dist/harness/adapters/adapterEventEmitter.d.ts.map +1 -0
- package/dist/harness/adapters/adapterEventEmitter.js +143 -0
- package/dist/harness/adapters/adapterEventMapper.d.ts +63 -0
- package/dist/harness/adapters/adapterEventMapper.d.ts.map +1 -0
- package/dist/harness/adapters/adapterEventMapper.js +100 -0
- package/dist/harness/adapters/adapterHarnessMap.d.ts +25 -0
- package/dist/harness/adapters/adapterHarnessMap.d.ts.map +1 -0
- package/dist/harness/adapters/adapterHarnessMap.js +55 -0
- package/dist/harness/adapters/adapterStdinReader.d.ts +45 -0
- package/dist/harness/adapters/adapterStdinReader.d.ts.map +1 -0
- package/dist/harness/adapters/adapterStdinReader.js +106 -0
- package/dist/harness/adapters/adapterTypes.d.ts +122 -0
- package/dist/harness/adapters/adapterTypes.d.ts.map +1 -0
- package/dist/harness/adapters/adapterTypes.js +11 -0
- package/dist/harness/adapters/index.d.ts +17 -0
- package/dist/harness/adapters/index.d.ts.map +1 -0
- package/dist/harness/adapters/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/budgetDowngrade.d.ts +12 -0
- package/dist/harness/budgetDowngrade.d.ts.map +1 -0
- package/dist/harness/budgetDowngrade.js +71 -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/circuitBreaker.d.ts +51 -0
- package/dist/harness/circuitBreaker.d.ts.map +1 -0
- package/dist/harness/circuitBreaker.js +110 -0
- package/dist/harness/concurrentEffects.d.ts +39 -0
- package/dist/harness/concurrentEffects.d.ts.map +1 -0
- package/dist/harness/concurrentEffects.js +90 -0
- package/dist/harness/effectRouting.d.ts +57 -0
- package/dist/harness/effectRouting.d.ts.map +1 -0
- package/dist/harness/effectRouting.js +130 -0
- package/dist/harness/extensionToolBridge.d.ts +13 -0
- package/dist/harness/extensionToolBridge.d.ts.map +1 -0
- package/dist/harness/extensionToolBridge.js +23 -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/gentySessionContext.d.ts +31 -0
- package/dist/harness/gentySessionContext.d.ts.map +1 -0
- package/dist/harness/gentySessionContext.js +49 -0
- package/dist/harness/gentySessionIntegration.d.ts +16 -0
- package/dist/harness/gentySessionIntegration.d.ts.map +1 -0
- package/dist/harness/gentySessionIntegration.js +66 -0
- package/dist/harness/hostContract.d.ts +69 -0
- package/dist/harness/hostContract.d.ts.map +1 -0
- package/dist/harness/hostContract.js +169 -0
- package/dist/harness/index.d.ts +25 -0
- package/dist/harness/index.d.ts.map +1 -0
- package/dist/harness/index.js +122 -0
- package/dist/harness/internal/createRun/agent-core-loop.d.ts +43 -0
- package/dist/harness/internal/createRun/agent-core-loop.d.ts.map +1 -0
- package/dist/harness/internal/createRun/agent-core-loop.js +247 -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 +163 -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 +17 -0
- package/dist/harness/internal/createRun/orchestration/dispatch.d.ts +23 -0
- package/dist/harness/internal/createRun/orchestration/dispatch.d.ts.map +1 -0
- package/dist/harness/internal/createRun/orchestration/dispatch.js +135 -0
- package/dist/harness/internal/createRun/orchestration/effects.d.ts +135 -0
- package/dist/harness/internal/createRun/orchestration/effects.d.ts.map +1 -0
- package/dist/harness/internal/createRun/orchestration/effects.js +904 -0
- package/dist/harness/internal/createRun/orchestration/effectsHelpers.d.ts +21 -0
- package/dist/harness/internal/createRun/orchestration/effectsHelpers.d.ts.map +1 -0
- package/dist/harness/internal/createRun/orchestration/effectsHelpers.js +80 -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 +403 -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 +106 -0
- package/dist/harness/internal/createRun/orchestration/hookDecisionEffects.d.ts +32 -0
- package/dist/harness/internal/createRun/orchestration/hookDecisionEffects.d.ts.map +1 -0
- package/dist/harness/internal/createRun/orchestration/hookDecisionEffects.js +76 -0
- package/dist/harness/internal/createRun/orchestration/index.d.ts +29 -0
- package/dist/harness/internal/createRun/orchestration/index.d.ts.map +1 -0
- package/dist/harness/internal/createRun/orchestration/index.js +370 -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 +656 -0
- package/dist/harness/internal/createRun/orchestration/internalTools.d.ts +27 -0
- package/dist/harness/internal/createRun/orchestration/internalTools.d.ts.map +1 -0
- package/dist/harness/internal/createRun/orchestration/internalTools.js +264 -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 +48 -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/orchestration/workerSessionEnhancer.d.ts +4 -0
- package/dist/harness/internal/createRun/orchestration/workerSessionEnhancer.d.ts.map +1 -0
- package/dist/harness/internal/createRun/orchestration/workerSessionEnhancer.js +36 -0
- package/dist/harness/internal/createRun/output.d.ts +40 -0
- package/dist/harness/internal/createRun/output.d.ts.map +1 -0
- package/dist/harness/internal/createRun/output.js +467 -0
- package/dist/harness/internal/createRun/pi.d.ts +10 -0
- package/dist/harness/internal/createRun/pi.d.ts.map +1 -0
- package/dist/harness/internal/createRun/pi.js +35 -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 +424 -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 +22 -0
- package/dist/harness/internal/createRun/planProcess/prompts.d.ts.map +1 -0
- package/dist/harness/internal/createRun/planProcess/prompts.js +239 -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 +205 -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 +4 -0
- package/dist/harness/internal/createRun/planProcess/validation.d.ts.map +1 -0
- package/dist/harness/internal/createRun/planProcess/validation.js +260 -0
- package/dist/harness/internal/createRun/planProcess/validationSource.d.ts +13 -0
- package/dist/harness/internal/createRun/planProcess/validationSource.d.ts.map +1 -0
- package/dist/harness/internal/createRun/planProcess/validationSource.js +345 -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 +59 -0
- package/dist/harness/internal/createRun/prompts.d.ts.map +1 -0
- package/dist/harness/internal/createRun/prompts.js +427 -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 +184 -0
- package/dist/harness/internal/createRun/utils.d.ts.map +1 -0
- package/dist/harness/internal/createRun/utils.js +218 -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 +44 -0
- package/dist/harness/invoker.d.ts.map +1 -0
- package/dist/harness/invoker.js +341 -0
- package/dist/harness/lspIntegration.d.ts +48 -0
- package/dist/harness/lspIntegration.d.ts.map +1 -0
- package/dist/harness/lspIntegration.js +45 -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/multiHarnessDispatch.d.ts +49 -0
- package/dist/harness/multiHarnessDispatch.d.ts.map +1 -0
- package/dist/harness/multiHarnessDispatch.js +73 -0
- package/dist/harness/oauthIntegration.d.ts +55 -0
- package/dist/harness/oauthIntegration.d.ts.map +1 -0
- package/dist/harness/oauthIntegration.js +84 -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/parallelFileOps.d.ts +56 -0
- package/dist/harness/parallelFileOps.d.ts.map +1 -0
- package/dist/harness/parallelFileOps.js +166 -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 +78 -0
- package/dist/harness/piWrapper/moduleSupport.d.ts.map +1 -0
- package/dist/harness/piWrapper/moduleSupport.js +207 -0
- package/dist/harness/piWrapper.d.ts +82 -0
- package/dist/harness/piWrapper.d.ts.map +1 -0
- package/dist/harness/piWrapper.js +406 -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/profileOrchestration.d.ts +55 -0
- package/dist/harness/profileOrchestration.d.ts.map +1 -0
- package/dist/harness/profileOrchestration.js +61 -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/streamingParallelism.d.ts +43 -0
- package/dist/harness/streamingParallelism.d.ts.map +1 -0
- package/dist/harness/streamingParallelism.js +113 -0
- package/dist/harness/streamingRenderer.d.ts +64 -0
- package/dist/harness/streamingRenderer.d.ts.map +1 -0
- package/dist/harness/streamingRenderer.js +85 -0
- package/dist/harness/types.d.ts +278 -0
- package/dist/harness/types.d.ts.map +1 -0
- package/dist/harness/types.js +34 -0
- package/dist/harness/websocketSession.d.ts +63 -0
- package/dist/harness/websocketSession.d.ts.map +1 -0
- package/dist/harness/websocketSession.js +113 -0
- package/dist/harness/worktreeIsolation.d.ts +39 -0
- package/dist/harness/worktreeIsolation.d.ts.map +1 -0
- package/dist/harness/worktreeIsolation.js +85 -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/commandDiscovery.d.ts +38 -0
- package/dist/interaction/commandDiscovery.d.ts.map +1 -0
- package/dist/interaction/commandDiscovery.js +106 -0
- package/dist/interaction/index.d.ts +11 -0
- package/dist/interaction/index.d.ts.map +1 -0
- package/dist/interaction/index.js +42 -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/interaction/model-switch.d.ts +16 -0
- package/dist/interaction/model-switch.d.ts.map +1 -0
- package/dist/interaction/model-switch.js +41 -0
- package/dist/interaction/permissionApprovalUi.d.ts +32 -0
- package/dist/interaction/permissionApprovalUi.d.ts.map +1 -0
- package/dist/interaction/permissionApprovalUi.js +96 -0
- package/dist/interaction/steering.d.ts +17 -0
- package/dist/interaction/steering.d.ts.map +1 -0
- package/dist/interaction/steering.js +41 -0
- package/dist/interaction/typedEffectPatterns.d.ts +55 -0
- package/dist/interaction/typedEffectPatterns.d.ts.map +1 -0
- package/dist/interaction/typedEffectPatterns.js +190 -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 +16 -0
- package/dist/mcp/channels/index.d.ts.map +1 -0
- package/dist/mcp/channels/index.js +38 -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/auth.d.ts +57 -0
- package/dist/mcp/client/auth.d.ts.map +1 -0
- package/dist/mcp/client/auth.js +99 -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 +144 -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 +61 -0
- package/dist/mcp/client/index.d.ts +13 -0
- package/dist/mcp/client/index.d.ts.map +1 -0
- package/dist/mcp/client/index.js +30 -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 +215 -0
- package/dist/mcp/client/resourceBrowser.d.ts +52 -0
- package/dist/mcp/client/resourceBrowser.d.ts.map +1 -0
- package/dist/mcp/client/resourceBrowser.js +80 -0
- package/dist/mcp/client/toolRegistry.d.ts +113 -0
- package/dist/mcp/client/toolRegistry.d.ts.map +1 -0
- package/dist/mcp/client/toolRegistry.js +190 -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/alertWebhooks.d.ts +35 -0
- package/dist/observability/alertWebhooks.d.ts.map +1 -0
- package/dist/observability/alertWebhooks.js +68 -0
- package/dist/observability/analytics.d.ts +66 -0
- package/dist/observability/analytics.d.ts.map +1 -0
- package/dist/observability/analytics.js +104 -0
- package/dist/observability/auditExport.d.ts +25 -0
- package/dist/observability/auditExport.d.ts.map +1 -0
- package/dist/observability/auditExport.js +108 -0
- package/dist/observability/contextIntrospection.d.ts +40 -0
- package/dist/observability/contextIntrospection.d.ts.map +1 -0
- package/dist/observability/contextIntrospection.js +93 -0
- package/dist/observability/failureTriage.d.ts +28 -0
- package/dist/observability/failureTriage.d.ts.map +1 -0
- package/dist/observability/failureTriage.js +168 -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 +14 -0
- package/dist/observability/index.d.ts.map +1 -0
- package/dist/observability/index.js +53 -0
- package/dist/observability/progressSummarizer.d.ts +27 -0
- package/dist/observability/progressSummarizer.d.ts.map +1 -0
- package/dist/observability/progressSummarizer.js +143 -0
- package/dist/observability/promptPlan.d.ts +52 -0
- package/dist/observability/promptPlan.d.ts.map +1 -0
- package/dist/observability/promptPlan.js +101 -0
- package/dist/observability/resumeDashboard.d.ts +32 -0
- package/dist/observability/resumeDashboard.d.ts.map +1 -0
- package/dist/observability/resumeDashboard.js +204 -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/subagentHealth.d.ts +66 -0
- package/dist/observability/subagentHealth.d.ts.map +1 -0
- package/dist/observability/subagentHealth.js +107 -0
- package/dist/observability/subagentProgress.d.ts +64 -0
- package/dist/observability/subagentProgress.d.ts.map +1 -0
- package/dist/observability/subagentProgress.js +91 -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/ccCompatibility.d.ts +79 -0
- package/dist/plugins/ccCompatibility.d.ts.map +1 -0
- package/dist/plugins/ccCompatibility.js +139 -0
- package/dist/plugins/index.d.ts +16 -0
- package/dist/plugins/index.d.ts.map +1 -0
- package/dist/plugins/index.js +38 -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/management.d.ts +33 -0
- package/dist/plugins/management.d.ts.map +1 -0
- package/dist/plugins/management.js +99 -0
- package/dist/plugins/marketplace.d.ts +64 -0
- package/dist/plugins/marketplace.d.ts.map +1 -0
- package/dist/plugins/marketplace.js +101 -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/trust.d.ts +31 -0
- package/dist/plugins/trust.d.ts.map +1 -0
- package/dist/plugins/trust.js +66 -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/validation.d.ts +32 -0
- package/dist/plugins/validation.d.ts.map +1 -0
- package/dist/plugins/validation.js +117 -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/plugins/versioning.d.ts +40 -0
- package/dist/plugins/versioning.d.ts.map +1 -0
- package/dist/plugins/versioning.js +101 -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 +141 -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 +72 -0
- package/dist/session/cost.d.ts.map +1 -0
- package/dist/session/cost.js +221 -0
- package/dist/session/crossRunComm.d.ts +40 -0
- package/dist/session/crossRunComm.d.ts.map +1 -0
- package/dist/session/crossRunComm.js +86 -0
- package/dist/session/crossRunState.d.ts +8 -0
- package/dist/session/crossRunState.d.ts.map +1 -0
- package/dist/session/crossRunState.js +45 -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 +144 -0
- package/dist/session/index.d.ts +8 -0
- package/dist/session/index.d.ts.map +1 -0
- package/dist/session/index.js +73 -0
- package/dist/session/memoryConsolidation.d.ts +31 -0
- package/dist/session/memoryConsolidation.d.ts.map +1 -0
- package/dist/session/memoryConsolidation.js +135 -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/sessionSharing.d.ts +55 -0
- package/dist/session/sessionSharing.d.ts.map +1 -0
- package/dist/session/sessionSharing.js +113 -0
- package/dist/session/sessionTemplates.d.ts +57 -0
- package/dist/session/sessionTemplates.d.ts.map +1 -0
- package/dist/session/sessionTemplates.js +93 -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 +173 -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/dist/trust/harness-signing.d.ts +15 -0
- package/dist/trust/harness-signing.d.ts.map +1 -0
- package/dist/trust/harness-signing.js +46 -0
- package/dist/trust/key-store.d.ts +15 -0
- package/dist/trust/key-store.d.ts.map +1 -0
- package/dist/trust/key-store.js +66 -0
- package/package.json +161 -0
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Plugin management — install, uninstall, enable, disable, and list plugins
|
|
4
|
+
* with persistent state stored in a configurable directory (GAP-USER-017).
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.PluginManager = void 0;
|
|
8
|
+
const node_fs_1 = require("node:fs");
|
|
9
|
+
const node_path_1 = require("node:path");
|
|
10
|
+
// ---------------------------------------------------------------------------
|
|
11
|
+
// PluginManager
|
|
12
|
+
// ---------------------------------------------------------------------------
|
|
13
|
+
const STATE_FILENAME = 'plugins-state.json';
|
|
14
|
+
class PluginManager {
|
|
15
|
+
stateDir;
|
|
16
|
+
statePath;
|
|
17
|
+
constructor(stateDir) {
|
|
18
|
+
this.stateDir = stateDir;
|
|
19
|
+
this.statePath = (0, node_path_1.join)(stateDir, STATE_FILENAME);
|
|
20
|
+
}
|
|
21
|
+
/** List all known plugins. */
|
|
22
|
+
list() {
|
|
23
|
+
const state = this.readState();
|
|
24
|
+
return Object.values(state.plugins);
|
|
25
|
+
}
|
|
26
|
+
/** Install a plugin by id. Marks it as installed and enabled. */
|
|
27
|
+
install(id) {
|
|
28
|
+
const state = this.readState();
|
|
29
|
+
const existing = state.plugins[id];
|
|
30
|
+
if (existing?.installed) {
|
|
31
|
+
return existing;
|
|
32
|
+
}
|
|
33
|
+
const info = existing
|
|
34
|
+
? { ...existing, installed: true, enabled: true }
|
|
35
|
+
: {
|
|
36
|
+
id,
|
|
37
|
+
name: id,
|
|
38
|
+
version: '0.0.0',
|
|
39
|
+
trustLevel: 'untrusted',
|
|
40
|
+
installed: true,
|
|
41
|
+
enabled: true,
|
|
42
|
+
};
|
|
43
|
+
state.plugins[id] = info;
|
|
44
|
+
this.writeState(state);
|
|
45
|
+
return info;
|
|
46
|
+
}
|
|
47
|
+
/** Uninstall a plugin by id. */
|
|
48
|
+
uninstall(id) {
|
|
49
|
+
const state = this.readState();
|
|
50
|
+
const existing = state.plugins[id];
|
|
51
|
+
if (!existing)
|
|
52
|
+
return;
|
|
53
|
+
existing.installed = false;
|
|
54
|
+
existing.enabled = false;
|
|
55
|
+
this.writeState(state);
|
|
56
|
+
}
|
|
57
|
+
/** Enable an installed plugin. */
|
|
58
|
+
enable(id) {
|
|
59
|
+
const state = this.readState();
|
|
60
|
+
const existing = state.plugins[id];
|
|
61
|
+
if (!existing || !existing.installed) {
|
|
62
|
+
throw new Error(`Plugin "${id}" is not installed`);
|
|
63
|
+
}
|
|
64
|
+
existing.enabled = true;
|
|
65
|
+
this.writeState(state);
|
|
66
|
+
}
|
|
67
|
+
/** Disable an installed plugin (keeps it installed). */
|
|
68
|
+
disable(id) {
|
|
69
|
+
const state = this.readState();
|
|
70
|
+
const existing = state.plugins[id];
|
|
71
|
+
if (!existing || !existing.installed) {
|
|
72
|
+
throw new Error(`Plugin "${id}" is not installed`);
|
|
73
|
+
}
|
|
74
|
+
existing.enabled = false;
|
|
75
|
+
this.writeState(state);
|
|
76
|
+
}
|
|
77
|
+
/** Get info for a single plugin, or undefined if unknown. */
|
|
78
|
+
getInfo(id) {
|
|
79
|
+
const state = this.readState();
|
|
80
|
+
return state.plugins[id];
|
|
81
|
+
}
|
|
82
|
+
// -------------------------------------------------------------------------
|
|
83
|
+
// Private helpers
|
|
84
|
+
// -------------------------------------------------------------------------
|
|
85
|
+
readState() {
|
|
86
|
+
if (!(0, node_fs_1.existsSync)(this.statePath)) {
|
|
87
|
+
return { plugins: {} };
|
|
88
|
+
}
|
|
89
|
+
const raw = (0, node_fs_1.readFileSync)(this.statePath, 'utf-8');
|
|
90
|
+
return JSON.parse(raw);
|
|
91
|
+
}
|
|
92
|
+
writeState(state) {
|
|
93
|
+
if (!(0, node_fs_1.existsSync)(this.stateDir)) {
|
|
94
|
+
(0, node_fs_1.mkdirSync)(this.stateDir, { recursive: true });
|
|
95
|
+
}
|
|
96
|
+
(0, node_fs_1.writeFileSync)(this.statePath, JSON.stringify(state, null, 2), 'utf-8');
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
exports.PluginManager = PluginManager;
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CC Marketplace Protocol Support (GAP-ECO-002).
|
|
3
|
+
*
|
|
4
|
+
* Client and installer for the babysitter plugin marketplace.
|
|
5
|
+
* Uses injectable fetch for testability — no actual HTTP calls
|
|
6
|
+
* are hard-wired.
|
|
7
|
+
*/
|
|
8
|
+
export interface MarketplaceEntry {
|
|
9
|
+
id: string;
|
|
10
|
+
name: string;
|
|
11
|
+
version: string;
|
|
12
|
+
description: string;
|
|
13
|
+
author: string;
|
|
14
|
+
downloadUrl: string;
|
|
15
|
+
checksumSha256: string;
|
|
16
|
+
category?: string;
|
|
17
|
+
}
|
|
18
|
+
export interface MarketplaceSearchResult {
|
|
19
|
+
entries: MarketplaceEntry[];
|
|
20
|
+
total: number;
|
|
21
|
+
}
|
|
22
|
+
export interface MarketplaceCategoryList {
|
|
23
|
+
categories: string[];
|
|
24
|
+
}
|
|
25
|
+
/** Minimal fetch interface for dependency injection. */
|
|
26
|
+
export type FetchFn = (url: string, init?: {
|
|
27
|
+
method?: string;
|
|
28
|
+
}) => Promise<{
|
|
29
|
+
ok: boolean;
|
|
30
|
+
status: number;
|
|
31
|
+
json(): Promise<unknown>;
|
|
32
|
+
text(): Promise<string>;
|
|
33
|
+
}>;
|
|
34
|
+
export declare class MarketplaceClient {
|
|
35
|
+
private readonly baseUrl;
|
|
36
|
+
private readonly fetch;
|
|
37
|
+
constructor(baseUrl: string, fetch: FetchFn);
|
|
38
|
+
/**
|
|
39
|
+
* Search the marketplace by query string.
|
|
40
|
+
*/
|
|
41
|
+
search(query: string): Promise<MarketplaceSearchResult>;
|
|
42
|
+
/**
|
|
43
|
+
* Get a single marketplace entry by id.
|
|
44
|
+
*/
|
|
45
|
+
getEntry(id: string): Promise<MarketplaceEntry>;
|
|
46
|
+
/**
|
|
47
|
+
* List all available categories.
|
|
48
|
+
*/
|
|
49
|
+
listCategories(): Promise<string[]>;
|
|
50
|
+
}
|
|
51
|
+
export declare class MarketplaceInstaller {
|
|
52
|
+
private readonly fetch;
|
|
53
|
+
constructor(fetch: FetchFn);
|
|
54
|
+
/**
|
|
55
|
+
* Download and install a marketplace entry to the target directory.
|
|
56
|
+
* Returns the path where the plugin was installed.
|
|
57
|
+
*/
|
|
58
|
+
install(entry: MarketplaceEntry, targetDir: string): Promise<string>;
|
|
59
|
+
/**
|
|
60
|
+
* Verify an installed plugin matches its expected checksum.
|
|
61
|
+
*/
|
|
62
|
+
verify(entry: MarketplaceEntry, installedPath: string): boolean;
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=marketplace.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"marketplace.d.ts","sourceRoot":"","sources":["../../src/plugins/marketplace.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAUH,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,gBAAgB,EAAE,CAAC;IAC5B,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,uBAAuB;IACtC,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,wDAAwD;AACxD,MAAM,MAAM,OAAO,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,KAAK,OAAO,CAAC;IACzE,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IACzB,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;CACzB,CAAC,CAAC;AAMH,qBAAa,iBAAiB;IAE1B,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,KAAK;gBADL,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,OAAO;IAGjC;;OAEG;IACG,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAS7D;;OAEG;IACG,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IASrD;;OAEG;IACG,cAAc,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;CAS1C;AAMD,qBAAa,oBAAoB;IACnB,OAAO,CAAC,QAAQ,CAAC,KAAK;gBAAL,KAAK,EAAE,OAAO;IAE3C;;;OAGG;IACG,OAAO,CAAC,KAAK,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAsB1E;;OAEG;IACH,MAAM,CAAC,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO;CAQhE"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* CC Marketplace Protocol Support (GAP-ECO-002).
|
|
4
|
+
*
|
|
5
|
+
* Client and installer for the babysitter plugin marketplace.
|
|
6
|
+
* Uses injectable fetch for testability — no actual HTTP calls
|
|
7
|
+
* are hard-wired.
|
|
8
|
+
*/
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.MarketplaceInstaller = exports.MarketplaceClient = void 0;
|
|
11
|
+
const node_fs_1 = require("node:fs");
|
|
12
|
+
const node_path_1 = require("node:path");
|
|
13
|
+
const node_crypto_1 = require("node:crypto");
|
|
14
|
+
// ---------------------------------------------------------------------------
|
|
15
|
+
// MarketplaceClient
|
|
16
|
+
// ---------------------------------------------------------------------------
|
|
17
|
+
class MarketplaceClient {
|
|
18
|
+
baseUrl;
|
|
19
|
+
fetch;
|
|
20
|
+
constructor(baseUrl, fetch) {
|
|
21
|
+
this.baseUrl = baseUrl;
|
|
22
|
+
this.fetch = fetch;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Search the marketplace by query string.
|
|
26
|
+
*/
|
|
27
|
+
async search(query) {
|
|
28
|
+
const url = `${this.baseUrl}/search?q=${encodeURIComponent(query)}`;
|
|
29
|
+
const res = await this.fetch(url);
|
|
30
|
+
if (!res.ok) {
|
|
31
|
+
throw new Error(`Marketplace search failed: HTTP ${res.status}`);
|
|
32
|
+
}
|
|
33
|
+
return (await res.json());
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Get a single marketplace entry by id.
|
|
37
|
+
*/
|
|
38
|
+
async getEntry(id) {
|
|
39
|
+
const url = `${this.baseUrl}/entries/${encodeURIComponent(id)}`;
|
|
40
|
+
const res = await this.fetch(url);
|
|
41
|
+
if (!res.ok) {
|
|
42
|
+
throw new Error(`Marketplace getEntry failed: HTTP ${res.status}`);
|
|
43
|
+
}
|
|
44
|
+
return (await res.json());
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* List all available categories.
|
|
48
|
+
*/
|
|
49
|
+
async listCategories() {
|
|
50
|
+
const url = `${this.baseUrl}/categories`;
|
|
51
|
+
const res = await this.fetch(url);
|
|
52
|
+
if (!res.ok) {
|
|
53
|
+
throw new Error(`Marketplace listCategories failed: HTTP ${res.status}`);
|
|
54
|
+
}
|
|
55
|
+
const data = (await res.json());
|
|
56
|
+
return data.categories;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
exports.MarketplaceClient = MarketplaceClient;
|
|
60
|
+
// ---------------------------------------------------------------------------
|
|
61
|
+
// MarketplaceInstaller
|
|
62
|
+
// ---------------------------------------------------------------------------
|
|
63
|
+
class MarketplaceInstaller {
|
|
64
|
+
fetch;
|
|
65
|
+
constructor(fetch) {
|
|
66
|
+
this.fetch = fetch;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Download and install a marketplace entry to the target directory.
|
|
70
|
+
* Returns the path where the plugin was installed.
|
|
71
|
+
*/
|
|
72
|
+
async install(entry, targetDir) {
|
|
73
|
+
const res = await this.fetch(entry.downloadUrl);
|
|
74
|
+
if (!res.ok) {
|
|
75
|
+
throw new Error(`Download failed for ${entry.id}: HTTP ${res.status}`);
|
|
76
|
+
}
|
|
77
|
+
const content = await res.text();
|
|
78
|
+
if (!(0, node_fs_1.existsSync)(targetDir)) {
|
|
79
|
+
(0, node_fs_1.mkdirSync)(targetDir, { recursive: true });
|
|
80
|
+
}
|
|
81
|
+
const pluginDir = (0, node_path_1.join)(targetDir, entry.id);
|
|
82
|
+
if (!(0, node_fs_1.existsSync)(pluginDir)) {
|
|
83
|
+
(0, node_fs_1.mkdirSync)(pluginDir, { recursive: true });
|
|
84
|
+
}
|
|
85
|
+
const manifestPath = (0, node_path_1.join)(pluginDir, 'plugin.json');
|
|
86
|
+
(0, node_fs_1.writeFileSync)(manifestPath, content, 'utf8');
|
|
87
|
+
return pluginDir;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Verify an installed plugin matches its expected checksum.
|
|
91
|
+
*/
|
|
92
|
+
verify(entry, installedPath) {
|
|
93
|
+
const manifestPath = (0, node_path_1.join)(installedPath, 'plugin.json');
|
|
94
|
+
if (!(0, node_fs_1.existsSync)(manifestPath))
|
|
95
|
+
return false;
|
|
96
|
+
const content = (0, node_fs_1.readFileSync)(manifestPath, 'utf8');
|
|
97
|
+
const hash = (0, node_crypto_1.createHash)('sha256').update(content).digest('hex');
|
|
98
|
+
return hash === entry.checksumSha256;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
exports.MarketplaceInstaller = MarketplaceInstaller;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PluginSandbox — permission tracking and policy enforcement for loaded plugins.
|
|
3
|
+
*
|
|
4
|
+
* Each plugin is assigned a set of permissions drawn from its manifest.
|
|
5
|
+
* Runtime checks gate access to resources (file paths, network, shell, etc.)
|
|
6
|
+
* by combining the granted permissions with an optional PluginSandboxConfig.
|
|
7
|
+
*/
|
|
8
|
+
import type { PluginPermission, PluginSandboxConfig } from './types';
|
|
9
|
+
export declare class PluginSandbox {
|
|
10
|
+
private permissions;
|
|
11
|
+
private configs;
|
|
12
|
+
/** Grant a single permission to a plugin. */
|
|
13
|
+
grantPermission(pluginId: string, permission: PluginPermission): void;
|
|
14
|
+
/** Revoke a single permission from a plugin. */
|
|
15
|
+
revokePermission(pluginId: string, permission: PluginPermission): void;
|
|
16
|
+
/** Check whether a plugin currently holds a given permission. */
|
|
17
|
+
checkPermission(pluginId: string, permission: PluginPermission): boolean;
|
|
18
|
+
/** Return the full list of permissions granted to a plugin. */
|
|
19
|
+
getPermissions(pluginId: string): PluginPermission[];
|
|
20
|
+
/** Attach a sandbox configuration (memory / timeout / allowed paths) for a plugin. */
|
|
21
|
+
setConfig(pluginId: string, config: PluginSandboxConfig): void;
|
|
22
|
+
/** Retrieve the sandbox configuration for a plugin, if any. */
|
|
23
|
+
getConfig(pluginId: string): PluginSandboxConfig | undefined;
|
|
24
|
+
/**
|
|
25
|
+
* Determine whether a plugin is allowed to perform `action` on `resource`.
|
|
26
|
+
*
|
|
27
|
+
* The check works in two stages:
|
|
28
|
+
* 1. The action is mapped to a required permission. If the plugin does not
|
|
29
|
+
* hold that permission the call is denied.
|
|
30
|
+
* 2. For file-system actions the optional `allowedPaths` list in the sandbox
|
|
31
|
+
* config is consulted. If the list exists and the resource does not start
|
|
32
|
+
* with any allowed prefix the call is denied.
|
|
33
|
+
*/
|
|
34
|
+
isAllowed(pluginId: string, action: string, resource?: string): boolean;
|
|
35
|
+
/** Remove all permission and config state for a plugin. */
|
|
36
|
+
clear(pluginId: string): void;
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=sandbox.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sandbox.d.ts","sourceRoot":"","sources":["../../src/plugins/sandbox.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAarE,qBAAa,aAAa;IACxB,OAAO,CAAC,WAAW,CAA4C;IAC/D,OAAO,CAAC,OAAO,CAA0C;IAMzD,6CAA6C;IAC7C,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,gBAAgB,GAAG,IAAI;IASrE,gDAAgD;IAChD,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,gBAAgB,GAAG,IAAI;IAOtE,iEAAiE;IACjE,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,gBAAgB,GAAG,OAAO;IAIxE,+DAA+D;IAC/D,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,gBAAgB,EAAE;IASpD,sFAAsF;IACtF,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,mBAAmB,GAAG,IAAI;IAI9D,+DAA+D;IAC/D,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,mBAAmB,GAAG,SAAS;IAQ5D;;;;;;;;;OASG;IACH,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO;IAoCvE,2DAA2D;IAC3D,KAAK,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;CAI9B"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* PluginSandbox — permission tracking and policy enforcement for loaded plugins.
|
|
4
|
+
*
|
|
5
|
+
* Each plugin is assigned a set of permissions drawn from its manifest.
|
|
6
|
+
* Runtime checks gate access to resources (file paths, network, shell, etc.)
|
|
7
|
+
* by combining the granted permissions with an optional PluginSandboxConfig.
|
|
8
|
+
*/
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.PluginSandbox = void 0;
|
|
11
|
+
/** Map from a high-level action verb to the permission(s) it requires. */
|
|
12
|
+
const ACTION_PERMISSION_MAP = {
|
|
13
|
+
read: 'fs:read',
|
|
14
|
+
write: 'fs:write',
|
|
15
|
+
fetch: 'net:outbound',
|
|
16
|
+
spawn: 'process:spawn',
|
|
17
|
+
env: 'env:read',
|
|
18
|
+
mcp: 'mcp:connect',
|
|
19
|
+
shell: 'shell:execute',
|
|
20
|
+
};
|
|
21
|
+
class PluginSandbox {
|
|
22
|
+
permissions = new Map();
|
|
23
|
+
configs = new Map();
|
|
24
|
+
// ---------------------------------------------------------------------------
|
|
25
|
+
// Permission CRUD
|
|
26
|
+
// ---------------------------------------------------------------------------
|
|
27
|
+
/** Grant a single permission to a plugin. */
|
|
28
|
+
grantPermission(pluginId, permission) {
|
|
29
|
+
let perms = this.permissions.get(pluginId);
|
|
30
|
+
if (!perms) {
|
|
31
|
+
perms = new Set();
|
|
32
|
+
this.permissions.set(pluginId, perms);
|
|
33
|
+
}
|
|
34
|
+
perms.add(permission);
|
|
35
|
+
}
|
|
36
|
+
/** Revoke a single permission from a plugin. */
|
|
37
|
+
revokePermission(pluginId, permission) {
|
|
38
|
+
const perms = this.permissions.get(pluginId);
|
|
39
|
+
if (perms) {
|
|
40
|
+
perms.delete(permission);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
/** Check whether a plugin currently holds a given permission. */
|
|
44
|
+
checkPermission(pluginId, permission) {
|
|
45
|
+
return this.permissions.get(pluginId)?.has(permission) ?? false;
|
|
46
|
+
}
|
|
47
|
+
/** Return the full list of permissions granted to a plugin. */
|
|
48
|
+
getPermissions(pluginId) {
|
|
49
|
+
const perms = this.permissions.get(pluginId);
|
|
50
|
+
return perms ? [...perms] : [];
|
|
51
|
+
}
|
|
52
|
+
// ---------------------------------------------------------------------------
|
|
53
|
+
// Configuration
|
|
54
|
+
// ---------------------------------------------------------------------------
|
|
55
|
+
/** Attach a sandbox configuration (memory / timeout / allowed paths) for a plugin. */
|
|
56
|
+
setConfig(pluginId, config) {
|
|
57
|
+
this.configs.set(pluginId, config);
|
|
58
|
+
}
|
|
59
|
+
/** Retrieve the sandbox configuration for a plugin, if any. */
|
|
60
|
+
getConfig(pluginId) {
|
|
61
|
+
return this.configs.get(pluginId);
|
|
62
|
+
}
|
|
63
|
+
// ---------------------------------------------------------------------------
|
|
64
|
+
// Policy check
|
|
65
|
+
// ---------------------------------------------------------------------------
|
|
66
|
+
/**
|
|
67
|
+
* Determine whether a plugin is allowed to perform `action` on `resource`.
|
|
68
|
+
*
|
|
69
|
+
* The check works in two stages:
|
|
70
|
+
* 1. The action is mapped to a required permission. If the plugin does not
|
|
71
|
+
* hold that permission the call is denied.
|
|
72
|
+
* 2. For file-system actions the optional `allowedPaths` list in the sandbox
|
|
73
|
+
* config is consulted. If the list exists and the resource does not start
|
|
74
|
+
* with any allowed prefix the call is denied.
|
|
75
|
+
*/
|
|
76
|
+
isAllowed(pluginId, action, resource) {
|
|
77
|
+
// Resolve the permission required for this action
|
|
78
|
+
const requiredPermission = ACTION_PERMISSION_MAP[action];
|
|
79
|
+
if (!requiredPermission) {
|
|
80
|
+
// Unknown action — deny by default
|
|
81
|
+
return false;
|
|
82
|
+
}
|
|
83
|
+
if (!this.checkPermission(pluginId, requiredPermission)) {
|
|
84
|
+
return false;
|
|
85
|
+
}
|
|
86
|
+
// For filesystem operations, enforce allowedPaths when configured
|
|
87
|
+
if (resource &&
|
|
88
|
+
(requiredPermission === 'fs:read' || requiredPermission === 'fs:write')) {
|
|
89
|
+
const config = this.configs.get(pluginId);
|
|
90
|
+
if (config?.allowedPaths && config.allowedPaths.length > 0) {
|
|
91
|
+
const normalised = resource.replace(/\\/g, '/');
|
|
92
|
+
const allowed = config.allowedPaths.some((p) => normalised.startsWith(p.replace(/\\/g, '/')));
|
|
93
|
+
if (!allowed) {
|
|
94
|
+
return false;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
return true;
|
|
99
|
+
}
|
|
100
|
+
// ---------------------------------------------------------------------------
|
|
101
|
+
// Cleanup
|
|
102
|
+
// ---------------------------------------------------------------------------
|
|
103
|
+
/** Remove all permission and config state for a plugin. */
|
|
104
|
+
clear(pluginId) {
|
|
105
|
+
this.permissions.delete(pluginId);
|
|
106
|
+
this.configs.delete(pluginId);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
exports.PluginSandbox = PluginSandbox;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
export type TrustLevel = 'verified' | 'community' | 'local' | 'unknown';
|
|
2
|
+
export interface PluginProvenance {
|
|
3
|
+
source: 'npm' | 'git' | 'local' | 'marketplace';
|
|
4
|
+
author?: string;
|
|
5
|
+
signature?: string;
|
|
6
|
+
publishedAt?: string;
|
|
7
|
+
registryUrl?: string;
|
|
8
|
+
}
|
|
9
|
+
export declare function classifyTrust(provenance: PluginProvenance): TrustLevel;
|
|
10
|
+
interface BlocklistData {
|
|
11
|
+
blocked: Array<{
|
|
12
|
+
pluginId: string;
|
|
13
|
+
reason?: string;
|
|
14
|
+
blockedAt: string;
|
|
15
|
+
}>;
|
|
16
|
+
}
|
|
17
|
+
export declare function loadBlocklist(configDir: string): BlocklistData;
|
|
18
|
+
export declare function isBlocked(configDir: string, pluginId: string): boolean;
|
|
19
|
+
export declare function addToBlocklist(configDir: string, pluginId: string, reason?: string): void;
|
|
20
|
+
export declare function removeFromBlocklist(configDir: string, pluginId: string): boolean;
|
|
21
|
+
export type TrustClass = 'system' | 'verified' | 'community' | 'sandboxed';
|
|
22
|
+
export interface PluginTrustPolicy {
|
|
23
|
+
allowedPermissions: Set<string>;
|
|
24
|
+
}
|
|
25
|
+
export declare const DEFAULT_TRUST_POLICIES: Record<TrustClass, PluginTrustPolicy>;
|
|
26
|
+
export declare function evaluatePluginTrust(requestedPermissions: string[], trustClass: TrustClass, policy?: Record<TrustClass, PluginTrustPolicy>): {
|
|
27
|
+
allowed: boolean;
|
|
28
|
+
deniedPermissions: string[];
|
|
29
|
+
};
|
|
30
|
+
export {};
|
|
31
|
+
//# sourceMappingURL=trust.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trust.d.ts","sourceRoot":"","sources":["../../src/plugins/trust.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,UAAU,GAAG,UAAU,GAAG,WAAW,GAAG,OAAO,GAAG,SAAS,CAAC;AAExE,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,KAAK,GAAG,KAAK,GAAG,OAAO,GAAG,aAAa,CAAC;IAChD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,wBAAgB,aAAa,CAAC,UAAU,EAAE,gBAAgB,GAAG,UAAU,CAKtE;AAID,UAAU,aAAa;IACrB,OAAO,EAAE,KAAK,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC1E;AAED,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,aAAa,CAQ9D;AAED,wBAAgB,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAGtE;AAED,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAOzF;AAED,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAOhF;AAED,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,UAAU,GAAG,WAAW,GAAG,WAAW,CAAC;AAE3E,MAAM,WAAW,iBAAiB;IAChC,kBAAkB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CACjC;AAED,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,UAAU,EAAE,iBAAiB,CAKxE,CAAC;AAEF,wBAAgB,mBAAmB,CACjC,oBAAoB,EAAE,MAAM,EAAE,EAC9B,UAAU,EAAE,UAAU,EACtB,MAAM,wCAAyB,GAC9B;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,iBAAiB,EAAE,MAAM,EAAE,CAAA;CAAE,CAInD"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DEFAULT_TRUST_POLICIES = void 0;
|
|
4
|
+
exports.classifyTrust = classifyTrust;
|
|
5
|
+
exports.loadBlocklist = loadBlocklist;
|
|
6
|
+
exports.isBlocked = isBlocked;
|
|
7
|
+
exports.addToBlocklist = addToBlocklist;
|
|
8
|
+
exports.removeFromBlocklist = removeFromBlocklist;
|
|
9
|
+
exports.evaluatePluginTrust = evaluatePluginTrust;
|
|
10
|
+
const node_fs_1 = require("node:fs");
|
|
11
|
+
const node_path_1 = require("node:path");
|
|
12
|
+
function classifyTrust(provenance) {
|
|
13
|
+
if (provenance.signature && provenance.source === 'marketplace')
|
|
14
|
+
return 'verified';
|
|
15
|
+
if (provenance.source === 'npm' && provenance.author)
|
|
16
|
+
return 'community';
|
|
17
|
+
if (provenance.source === 'local')
|
|
18
|
+
return 'local';
|
|
19
|
+
return 'unknown';
|
|
20
|
+
}
|
|
21
|
+
const BLOCKLIST_FILENAME = 'plugin-blocklist.json';
|
|
22
|
+
function loadBlocklist(configDir) {
|
|
23
|
+
const filePath = (0, node_path_1.join)(configDir, BLOCKLIST_FILENAME);
|
|
24
|
+
if (!(0, node_fs_1.existsSync)(filePath))
|
|
25
|
+
return { blocked: [] };
|
|
26
|
+
try {
|
|
27
|
+
return JSON.parse((0, node_fs_1.readFileSync)(filePath, 'utf8'));
|
|
28
|
+
}
|
|
29
|
+
catch {
|
|
30
|
+
return { blocked: [] };
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
function isBlocked(configDir, pluginId) {
|
|
34
|
+
const data = loadBlocklist(configDir);
|
|
35
|
+
return data.blocked.some(b => b.pluginId === pluginId);
|
|
36
|
+
}
|
|
37
|
+
function addToBlocklist(configDir, pluginId, reason) {
|
|
38
|
+
const data = loadBlocklist(configDir);
|
|
39
|
+
if (data.blocked.some(b => b.pluginId === pluginId))
|
|
40
|
+
return;
|
|
41
|
+
data.blocked.push({ pluginId, reason, blockedAt: new Date().toISOString() });
|
|
42
|
+
const filePath = (0, node_path_1.join)(configDir, BLOCKLIST_FILENAME);
|
|
43
|
+
if (!(0, node_fs_1.existsSync)((0, node_path_1.dirname)(filePath)))
|
|
44
|
+
(0, node_fs_1.mkdirSync)((0, node_path_1.dirname)(filePath), { recursive: true });
|
|
45
|
+
(0, node_fs_1.writeFileSync)(filePath, JSON.stringify(data, null, 2), 'utf8');
|
|
46
|
+
}
|
|
47
|
+
function removeFromBlocklist(configDir, pluginId) {
|
|
48
|
+
const data = loadBlocklist(configDir);
|
|
49
|
+
const before = data.blocked.length;
|
|
50
|
+
data.blocked = data.blocked.filter(b => b.pluginId !== pluginId);
|
|
51
|
+
if (data.blocked.length === before)
|
|
52
|
+
return false;
|
|
53
|
+
(0, node_fs_1.writeFileSync)((0, node_path_1.join)(configDir, BLOCKLIST_FILENAME), JSON.stringify(data, null, 2), 'utf8');
|
|
54
|
+
return true;
|
|
55
|
+
}
|
|
56
|
+
exports.DEFAULT_TRUST_POLICIES = {
|
|
57
|
+
system: { allowedPermissions: new Set(['tools:register', 'commands:register', 'keybindings:register', 'events:listen', 'statusbar:register', 'context:inject', 'filesystem:read', 'filesystem:write', 'network:outbound', 'subprocess:spawn']) },
|
|
58
|
+
verified: { allowedPermissions: new Set(['tools:register', 'commands:register', 'keybindings:register', 'events:listen', 'statusbar:register', 'context:inject', 'filesystem:read', 'network:outbound']) },
|
|
59
|
+
community: { allowedPermissions: new Set(['tools:register', 'commands:register', 'events:listen', 'statusbar:register', 'context:inject']) },
|
|
60
|
+
sandboxed: { allowedPermissions: new Set(['tools:register', 'events:listen']) },
|
|
61
|
+
};
|
|
62
|
+
function evaluatePluginTrust(requestedPermissions, trustClass, policy = exports.DEFAULT_TRUST_POLICIES) {
|
|
63
|
+
const allowed = policy[trustClass].allowedPermissions;
|
|
64
|
+
const denied = requestedPermissions.filter(p => !allowed.has(p));
|
|
65
|
+
return { allowed: denied.length === 0, deniedPermissions: denied };
|
|
66
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Plugin sandboxing types for L6 Agent-Platform.
|
|
3
|
+
* Defines the permission model, manifest schema, instance lifecycle,
|
|
4
|
+
* and sandbox configuration for loaded plugins.
|
|
5
|
+
*/
|
|
6
|
+
export type PluginPermission = 'fs:read' | 'fs:write' | 'net:outbound' | 'process:spawn' | 'env:read' | 'mcp:connect' | 'shell:execute';
|
|
7
|
+
export interface PluginManifest {
|
|
8
|
+
id: string;
|
|
9
|
+
name: string;
|
|
10
|
+
version: string;
|
|
11
|
+
permissions: PluginPermission[];
|
|
12
|
+
entrypoint: string;
|
|
13
|
+
minPlatformVersion?: string;
|
|
14
|
+
}
|
|
15
|
+
export type PluginStatus = 'loaded' | 'unloaded' | 'error' | 'loading';
|
|
16
|
+
export interface PluginInstance {
|
|
17
|
+
manifest: PluginManifest;
|
|
18
|
+
status: PluginStatus;
|
|
19
|
+
loadedAt?: number;
|
|
20
|
+
error?: string;
|
|
21
|
+
}
|
|
22
|
+
export interface PluginSandboxConfig {
|
|
23
|
+
maxMemoryMb?: number;
|
|
24
|
+
timeoutMs?: number;
|
|
25
|
+
allowedPaths?: string[];
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/plugins/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,MAAM,gBAAgB,GACxB,SAAS,GACT,UAAU,GACV,cAAc,GACd,eAAe,GACf,UAAU,GACV,aAAa,GACb,eAAe,CAAC;AAEpB,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,gBAAgB,EAAE,CAAC;IAChC,UAAU,EAAE,MAAM,CAAC;IACnB,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,UAAU,GAAG,OAAO,GAAG,SAAS,CAAC;AAEvE,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,cAAc,CAAC;IACzB,MAAM,EAAE,YAAY,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,mBAAmB;IAClC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Plugin validation — structural checks for manifests and installed plugin
|
|
3
|
+
* directories.
|
|
4
|
+
*
|
|
5
|
+
* `validatePlugin` performs in-memory manifest validation.
|
|
6
|
+
* `diagnosePlugin` inspects the file-system layout of a plugin directory.
|
|
7
|
+
* `formatDiagnostics` renders issues into a human-readable report.
|
|
8
|
+
*/
|
|
9
|
+
import type { PluginManifest } from './types';
|
|
10
|
+
export interface ValidationResult {
|
|
11
|
+
valid: boolean;
|
|
12
|
+
errors: string[];
|
|
13
|
+
warnings: string[];
|
|
14
|
+
}
|
|
15
|
+
export interface DiagnosticEntry {
|
|
16
|
+
level: 'error' | 'warning' | 'info';
|
|
17
|
+
message: string;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Validate a plugin manifest in memory.
|
|
21
|
+
* Returns errors (fatal) and warnings (non-fatal observations).
|
|
22
|
+
*/
|
|
23
|
+
export declare function validatePlugin(manifest: PluginManifest): ValidationResult;
|
|
24
|
+
/**
|
|
25
|
+
* Inspect a plugin directory on disk and return diagnostic entries.
|
|
26
|
+
*/
|
|
27
|
+
export declare function diagnosePlugin(pluginDir: string): DiagnosticEntry[];
|
|
28
|
+
/**
|
|
29
|
+
* Render diagnostic entries into a human-readable multi-line string.
|
|
30
|
+
*/
|
|
31
|
+
export declare function formatDiagnostics(entries: DiagnosticEntry[]): string;
|
|
32
|
+
//# sourceMappingURL=validation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/plugins/validation.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,KAAK,EAAE,cAAc,EAAoB,MAAM,SAAS,CAAC;AAMhE,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;IACpC,OAAO,EAAE,MAAM,CAAC;CACjB;AAgBD;;;GAGG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,cAAc,GAAG,gBAAgB,CAsCzE;AAMD;;GAEG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,eAAe,EAAE,CA6BnE;AAYD;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,eAAe,EAAE,GAAG,MAAM,CAKpE"}
|