@a5c-ai/agent-platform 5.0.1-staging.04ca6ab00d21
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 +53 -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/cli/amuxEventsFormatter.d.ts +26 -0
- package/dist/cli/amuxEventsFormatter.d.ts.map +1 -0
- package/dist/cli/amuxEventsFormatter.js +86 -0
- package/dist/cli/args/argFlags.d.ts +6 -0
- package/dist/cli/args/argFlags.d.ts.map +1 -0
- package/dist/cli/args/argFlags.js +72 -0
- package/dist/cli/args/argPositionals.d.ts +3 -0
- package/dist/cli/args/argPositionals.d.ts.map +1 -0
- package/dist/cli/args/argPositionals.js +18 -0
- package/dist/cli/args/index.d.ts +4 -0
- package/dist/cli/args/index.d.ts.map +1 -0
- package/dist/cli/args/index.js +75 -0
- package/dist/cli/args/types.d.ts +13 -0
- package/dist/cli/args/types.d.ts.map +1 -0
- package/dist/cli/args/types.js +2 -0
- package/dist/cli/commands/daemon.d.ts +31 -0
- package/dist/cli/commands/daemon.d.ts.map +1 -0
- package/dist/cli/commands/daemon.js +156 -0
- package/dist/cli/commands/harness/createRun.d.ts +3 -0
- package/dist/cli/commands/harness/createRun.d.ts.map +1 -0
- package/dist/cli/commands/harness/createRun.js +8 -0
- package/dist/cli/commands/harness/resumeRun.d.ts +20 -0
- package/dist/cli/commands/harness/resumeRun.d.ts.map +1 -0
- package/dist/cli/commands/harness/resumeRun.js +341 -0
- package/dist/cli/commands/jsonlInteractive.d.ts +35 -0
- package/dist/cli/commands/jsonlInteractive.d.ts.map +1 -0
- package/dist/cli/commands/jsonlInteractive.js +302 -0
- package/dist/cli/commands/mcpServe.d.ts +18 -0
- package/dist/cli/commands/mcpServe.d.ts.map +1 -0
- package/dist/cli/commands/mcpServe.js +59 -0
- package/dist/cli/commands/session/history.d.ts +14 -0
- package/dist/cli/commands/session/history.d.ts.map +1 -0
- package/dist/cli/commands/session/history.js +100 -0
- package/dist/cli/commands/tui.d.ts +23 -0
- package/dist/cli/commands/tui.d.ts.map +1 -0
- package/dist/cli/commands/tui.js +183 -0
- package/dist/cli/dispatch.d.ts +4 -0
- package/dist/cli/dispatch.d.ts.map +1 -0
- package/dist/cli/dispatch.js +332 -0
- package/dist/cli/main.d.ts +7 -0
- package/dist/cli/main.d.ts.map +1 -0
- package/dist/cli/main.js +41 -0
- package/dist/cli/program.d.ts +7 -0
- package/dist/cli/program.d.ts.map +1 -0
- package/dist/cli/program.js +8 -0
- package/dist/cli/ui.d.ts +9 -0
- package/dist/cli/ui.d.ts.map +1 -0
- package/dist/cli/ui.js +125 -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 +7 -0
- package/dist/daemon/index.d.ts.map +1 -0
- package/dist/daemon/index.js +21 -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 +10 -0
- package/dist/harness/index.d.ts.map +1 -0
- package/dist/harness/index.js +66 -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 +17 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +55 -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/prompts/commandTemplates.d.ts +3 -0
- package/dist/prompts/commandTemplates.d.ts.map +1 -0
- package/dist/prompts/commandTemplates.js +238 -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 +140 -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 +102 -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 +163 -0
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GAP-OBS-NEW-002: Phase Timeline Visualization.
|
|
3
|
+
*
|
|
4
|
+
* Synthesizes phase timeline data from journal events. Identifies planning,
|
|
5
|
+
* execution, verification, and completion phases with duration metrics.
|
|
6
|
+
*/
|
|
7
|
+
import { type JournalEvent } from "@a5c-ai/babysitter-sdk";
|
|
8
|
+
import type { PhaseTimeline } from "./types";
|
|
9
|
+
export declare function buildPhaseTimelineFromEvents(events: JournalEvent[]): PhaseTimeline;
|
|
10
|
+
export declare function buildPhaseTimeline(runDir: string): Promise<PhaseTimeline>;
|
|
11
|
+
//# sourceMappingURL=timeline.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"timeline.d.ts","sourceRoot":"","sources":["../../src/observability/timeline.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAe,KAAK,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACxE,OAAO,KAAK,EACV,aAAa,EAKd,MAAM,SAAS,CAAC;AA2BjB,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,YAAY,EAAE,GAAG,aAAa,CA6HlF;AAoCD,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAG/E"}
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* GAP-OBS-NEW-002: Phase Timeline Visualization.
|
|
4
|
+
*
|
|
5
|
+
* Synthesizes phase timeline data from journal events. Identifies planning,
|
|
6
|
+
* execution, verification, and completion phases with duration metrics.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.buildPhaseTimelineFromEvents = buildPhaseTimelineFromEvents;
|
|
10
|
+
exports.buildPhaseTimeline = buildPhaseTimeline;
|
|
11
|
+
const babysitter_sdk_1 = require("@a5c-ai/babysitter-sdk");
|
|
12
|
+
const VERIFICATION_TASK_IDS = new Set([
|
|
13
|
+
"typecheck",
|
|
14
|
+
"lint",
|
|
15
|
+
"run-tests",
|
|
16
|
+
"adversarial-review",
|
|
17
|
+
]);
|
|
18
|
+
function ms(a, b) {
|
|
19
|
+
return new Date(b).getTime() - new Date(a).getTime();
|
|
20
|
+
}
|
|
21
|
+
function makePhase(name, startedAt, endedAt) {
|
|
22
|
+
return {
|
|
23
|
+
name,
|
|
24
|
+
startedAt,
|
|
25
|
+
endedAt,
|
|
26
|
+
durationMs: endedAt ? ms(startedAt, endedAt) : null,
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
function isVerificationEvent(event) {
|
|
30
|
+
const taskId = event.data.taskId;
|
|
31
|
+
return taskId != null && VERIFICATION_TASK_IDS.has(taskId);
|
|
32
|
+
}
|
|
33
|
+
function buildPhaseTimelineFromEvents(events) {
|
|
34
|
+
if (events.length === 0) {
|
|
35
|
+
return {
|
|
36
|
+
phases: [],
|
|
37
|
+
milestones: [],
|
|
38
|
+
iterations: [],
|
|
39
|
+
currentPhase: "planning",
|
|
40
|
+
totalDurationMs: null,
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
const phases = [];
|
|
44
|
+
const milestones = [];
|
|
45
|
+
let currentPhase = "planning";
|
|
46
|
+
const firstEvent = events[0];
|
|
47
|
+
const lastEvent = events[events.length - 1];
|
|
48
|
+
// Find key transition points
|
|
49
|
+
const firstEffectReq = events.find((e) => e.type === "EFFECT_REQUESTED");
|
|
50
|
+
const runCompleted = events.find((e) => e.type === "RUN_COMPLETED");
|
|
51
|
+
const runFailed = events.find((e) => e.type === "RUN_FAILED");
|
|
52
|
+
// Find first verification event (typecheck/lint/test/review)
|
|
53
|
+
const firstVerificationReq = events.find((e) => e.type === "EFFECT_REQUESTED" && isVerificationEvent(e));
|
|
54
|
+
const lastVerificationResolved = [...events]
|
|
55
|
+
.reverse()
|
|
56
|
+
.find((e) => e.type === "EFFECT_RESOLVED" && isVerificationEvent(e));
|
|
57
|
+
// Phase 1: Planning — from RUN_CREATED to first EFFECT_REQUESTED
|
|
58
|
+
if (firstEvent.type === "RUN_CREATED") {
|
|
59
|
+
const planEnd = firstEffectReq?.recordedAt ?? null;
|
|
60
|
+
phases.push(makePhase("planning", firstEvent.recordedAt, planEnd));
|
|
61
|
+
if (planEnd) {
|
|
62
|
+
currentPhase = "execution";
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
// Phase 2: Execution — from first EFFECT_REQUESTED to verification start (or last resolved)
|
|
66
|
+
if (firstEffectReq) {
|
|
67
|
+
// Find the last non-verification EFFECT_RESOLVED as fallback execution end
|
|
68
|
+
const lastNonVerifResolved = [...events]
|
|
69
|
+
.reverse()
|
|
70
|
+
.find((e) => e.type === "EFFECT_RESOLVED" && !isVerificationEvent(e));
|
|
71
|
+
const execEnd = firstVerificationReq?.recordedAt
|
|
72
|
+
?? runCompleted?.recordedAt
|
|
73
|
+
?? runFailed?.recordedAt
|
|
74
|
+
?? lastNonVerifResolved?.recordedAt
|
|
75
|
+
?? null;
|
|
76
|
+
phases.push(makePhase("execution", firstEffectReq.recordedAt, execEnd));
|
|
77
|
+
currentPhase = execEnd ? (firstVerificationReq ? "verification" : "execution") : "execution";
|
|
78
|
+
}
|
|
79
|
+
// Phase 3: Verification — quality gates
|
|
80
|
+
if (firstVerificationReq) {
|
|
81
|
+
const verEnd = lastVerificationResolved?.recordedAt
|
|
82
|
+
?? runCompleted?.recordedAt
|
|
83
|
+
?? runFailed?.recordedAt
|
|
84
|
+
?? null;
|
|
85
|
+
phases.push(makePhase("verification", firstVerificationReq.recordedAt, verEnd));
|
|
86
|
+
currentPhase = verEnd ? "completion" : "verification";
|
|
87
|
+
}
|
|
88
|
+
// Phase 4: Completion
|
|
89
|
+
if (runCompleted) {
|
|
90
|
+
phases.push(makePhase("completion", runCompleted.recordedAt, runCompleted.recordedAt));
|
|
91
|
+
currentPhase = "completed";
|
|
92
|
+
}
|
|
93
|
+
else if (runFailed) {
|
|
94
|
+
phases.push(makePhase("completion", runFailed.recordedAt, runFailed.recordedAt));
|
|
95
|
+
currentPhase = "failed";
|
|
96
|
+
}
|
|
97
|
+
// Extract milestones
|
|
98
|
+
for (const event of events) {
|
|
99
|
+
if (event.type === "EFFECT_RESOLVED" && event.data.kind === "breakpoint") {
|
|
100
|
+
milestones.push({
|
|
101
|
+
type: "breakpoint",
|
|
102
|
+
label: event.data.title ?? `Breakpoint ${event.data.effectId}`,
|
|
103
|
+
occurredAt: event.recordedAt,
|
|
104
|
+
data: event.data,
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
if (event.type === "EFFECT_RESOLVED" &&
|
|
108
|
+
(event.data.taskId === "adversarial-review")) {
|
|
109
|
+
milestones.push({
|
|
110
|
+
type: "quality-gate",
|
|
111
|
+
label: `Quality review: ${event.data.taskId}`,
|
|
112
|
+
occurredAt: event.recordedAt,
|
|
113
|
+
data: event.data,
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
if (event.type === "RUN_COMPLETED") {
|
|
117
|
+
milestones.push({
|
|
118
|
+
type: "run-completed",
|
|
119
|
+
label: "Run completed",
|
|
120
|
+
occurredAt: event.recordedAt,
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
if (event.type === "RUN_FAILED") {
|
|
124
|
+
milestones.push({
|
|
125
|
+
type: "run-failed",
|
|
126
|
+
label: "Run failed",
|
|
127
|
+
occurredAt: event.recordedAt,
|
|
128
|
+
data: event.data,
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
// Build iteration breakdowns
|
|
133
|
+
const iterations = buildIterations(events);
|
|
134
|
+
const totalDurationMs = events.length >= 2 ? ms(firstEvent.recordedAt, lastEvent.recordedAt) : null;
|
|
135
|
+
return {
|
|
136
|
+
phases,
|
|
137
|
+
milestones,
|
|
138
|
+
iterations,
|
|
139
|
+
currentPhase,
|
|
140
|
+
totalDurationMs,
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
function buildIterations(events) {
|
|
144
|
+
const iterationMap = new Map();
|
|
145
|
+
for (const event of events) {
|
|
146
|
+
const iter = event.data.iteration;
|
|
147
|
+
if (iter != null) {
|
|
148
|
+
let group = iterationMap.get(iter);
|
|
149
|
+
if (!group) {
|
|
150
|
+
group = [];
|
|
151
|
+
iterationMap.set(iter, group);
|
|
152
|
+
}
|
|
153
|
+
group.push(event);
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
const iterations = [];
|
|
157
|
+
for (const [iteration, iterEvents] of iterationMap) {
|
|
158
|
+
if (iterEvents.length === 0)
|
|
159
|
+
continue;
|
|
160
|
+
const first = iterEvents[0];
|
|
161
|
+
const last = iterEvents[iterEvents.length - 1];
|
|
162
|
+
const endedAt = last.type === "EFFECT_RESOLVED" ? last.recordedAt : null;
|
|
163
|
+
iterations.push({
|
|
164
|
+
iteration,
|
|
165
|
+
phases: [], // Per-iteration phase breakdown could be added later
|
|
166
|
+
startedAt: first.recordedAt,
|
|
167
|
+
endedAt,
|
|
168
|
+
durationMs: endedAt ? ms(first.recordedAt, endedAt) : null,
|
|
169
|
+
});
|
|
170
|
+
}
|
|
171
|
+
return iterations.sort((a, b) => a.iteration - b.iteration);
|
|
172
|
+
}
|
|
173
|
+
async function buildPhaseTimeline(runDir) {
|
|
174
|
+
const events = await (0, babysitter_sdk_1.loadJournal)(runDir);
|
|
175
|
+
return buildPhaseTimelineFromEvents(events);
|
|
176
|
+
}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Observability types.
|
|
3
|
+
*
|
|
4
|
+
* GAP-OBS-NEW-002: Phase Timeline types.
|
|
5
|
+
* GAP-STATE-008: Run Health Model types.
|
|
6
|
+
*/
|
|
7
|
+
export type RunHealthStatus = "healthy" | "degraded" | "stuck" | "failed";
|
|
8
|
+
export interface RunHealthMetrics {
|
|
9
|
+
errorRate: number;
|
|
10
|
+
avgEffectLatencyMs: number;
|
|
11
|
+
pendingCount: number;
|
|
12
|
+
oldestPendingAgeMs: number;
|
|
13
|
+
iterationCount: number;
|
|
14
|
+
lastActivityAt: string | null;
|
|
15
|
+
totalEffects: number;
|
|
16
|
+
resolvedEffects: number;
|
|
17
|
+
failedEffects: number;
|
|
18
|
+
}
|
|
19
|
+
export interface RunHealthSnapshot {
|
|
20
|
+
status: RunHealthStatus;
|
|
21
|
+
metrics: RunHealthMetrics;
|
|
22
|
+
issues: string[];
|
|
23
|
+
computedAt: string;
|
|
24
|
+
}
|
|
25
|
+
export interface HealthConfig {
|
|
26
|
+
/** Threshold for detecting stuck runs (default: 300000ms = 5min). */
|
|
27
|
+
stuckThresholdMs: number;
|
|
28
|
+
/** Error rate above which run is 'degraded' (default: 0.3). */
|
|
29
|
+
degradedErrorRate: number;
|
|
30
|
+
/** Error rate above which run is 'failed' (default: 0.7). */
|
|
31
|
+
failedErrorRate: number;
|
|
32
|
+
/** Max age for pending effects before generating issue (default: 600000ms = 10min). */
|
|
33
|
+
maxPendingAge: number;
|
|
34
|
+
}
|
|
35
|
+
export type PhaseName = "planning" | "execution" | "verification" | "completion";
|
|
36
|
+
export interface PhaseEntry {
|
|
37
|
+
name: PhaseName;
|
|
38
|
+
startedAt: string;
|
|
39
|
+
endedAt: string | null;
|
|
40
|
+
durationMs: number | null;
|
|
41
|
+
}
|
|
42
|
+
export interface Milestone {
|
|
43
|
+
type: "breakpoint" | "quality-gate" | "run-completed" | "run-failed";
|
|
44
|
+
label: string;
|
|
45
|
+
occurredAt: string;
|
|
46
|
+
data?: Record<string, unknown>;
|
|
47
|
+
}
|
|
48
|
+
export interface IterationTimeline {
|
|
49
|
+
iteration: number;
|
|
50
|
+
phases: PhaseEntry[];
|
|
51
|
+
startedAt: string;
|
|
52
|
+
endedAt: string | null;
|
|
53
|
+
durationMs: number | null;
|
|
54
|
+
}
|
|
55
|
+
export interface PhaseTimeline {
|
|
56
|
+
phases: PhaseEntry[];
|
|
57
|
+
milestones: Milestone[];
|
|
58
|
+
iterations: IterationTimeline[];
|
|
59
|
+
currentPhase: PhaseName | "completed" | "failed";
|
|
60
|
+
totalDurationMs: number | null;
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/observability/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG,UAAU,GAAG,OAAO,GAAG,QAAQ,CAAC;AAE1E,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,eAAe,CAAC;IACxB,OAAO,EAAE,gBAAgB,CAAC;IAC1B,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B,qEAAqE;IACrE,gBAAgB,EAAE,MAAM,CAAC;IACzB,+DAA+D;IAC/D,iBAAiB,EAAE,MAAM,CAAC;IAC1B,6DAA6D;IAC7D,eAAe,EAAE,MAAM,CAAC;IACxB,uFAAuF;IACvF,aAAa,EAAE,MAAM,CAAC;CACvB;AAMD,MAAM,MAAM,SAAS,GAAG,UAAU,GAAG,WAAW,GAAG,cAAc,GAAG,YAAY,CAAC;AAEjF,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,SAAS,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,YAAY,GAAG,cAAc,GAAG,eAAe,GAAG,YAAY,CAAC;IACrE,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC;AAED,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,UAAU,EAAE,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,UAAU,EAAE,CAAC;IACrB,UAAU,EAAE,SAAS,EAAE,CAAC;IACxB,UAAU,EAAE,iBAAiB,EAAE,CAAC;IAChC,YAAY,EAAE,SAAS,GAAG,WAAW,GAAG,QAAQ,CAAC;IACjD,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GAP-OBS-NEW-001: Dashboard Webhook and Alert System.
|
|
3
|
+
*
|
|
4
|
+
* Webhook registration, event filtering, and alert evaluation
|
|
5
|
+
* for run health changes. Pure functions for registry management
|
|
6
|
+
* and alert level computation.
|
|
7
|
+
*/
|
|
8
|
+
import type { RunHealthSnapshot } from "./types";
|
|
9
|
+
export type AlertLevel = "info" | "warn" | "critical";
|
|
10
|
+
export type WebhookEventType = "run.health_changed" | "run.completed" | "run.failed" | "run.stuck" | "effect.pending_timeout";
|
|
11
|
+
export interface WebhookRegistration {
|
|
12
|
+
id: string;
|
|
13
|
+
url: string;
|
|
14
|
+
events: WebhookEventType[];
|
|
15
|
+
runId?: string;
|
|
16
|
+
alertLevels?: AlertLevel[];
|
|
17
|
+
secret?: string;
|
|
18
|
+
createdAt: string;
|
|
19
|
+
enabled: boolean;
|
|
20
|
+
}
|
|
21
|
+
export interface WebhookEvent {
|
|
22
|
+
id: string;
|
|
23
|
+
type: WebhookEventType;
|
|
24
|
+
runId: string;
|
|
25
|
+
alertLevel: AlertLevel;
|
|
26
|
+
payload: Record<string, unknown>;
|
|
27
|
+
occurredAt: string;
|
|
28
|
+
}
|
|
29
|
+
export interface WebhookDeliveryResult {
|
|
30
|
+
webhookId: string;
|
|
31
|
+
success: boolean;
|
|
32
|
+
statusCode?: number;
|
|
33
|
+
error?: string;
|
|
34
|
+
deliveredAt: string;
|
|
35
|
+
}
|
|
36
|
+
export interface WebhookRegistry {
|
|
37
|
+
schemaVersion: string;
|
|
38
|
+
registrations: WebhookRegistration[];
|
|
39
|
+
}
|
|
40
|
+
export type WebhookRegistrationInput = Omit<WebhookRegistration, "id" | "createdAt">;
|
|
41
|
+
export declare const WEBHOOK_SCHEMA_VERSION = "2026.01.webhooks-v1";
|
|
42
|
+
/**
|
|
43
|
+
* Register a new webhook in the registry.
|
|
44
|
+
* Mutates the registry and returns the created registration.
|
|
45
|
+
*/
|
|
46
|
+
export declare function registerWebhook(registry: WebhookRegistry, input: WebhookRegistrationInput): WebhookRegistration;
|
|
47
|
+
/**
|
|
48
|
+
* Remove a webhook by id. Throws if not found.
|
|
49
|
+
*/
|
|
50
|
+
export declare function unregisterWebhook(registry: WebhookRegistry, id: string): void;
|
|
51
|
+
/**
|
|
52
|
+
* List webhooks, optionally filtered by runId.
|
|
53
|
+
*/
|
|
54
|
+
export declare function listWebhooks(registry: WebhookRegistry, runId?: string): WebhookRegistration[];
|
|
55
|
+
/**
|
|
56
|
+
* Build a webhook event from a health snapshot.
|
|
57
|
+
*/
|
|
58
|
+
export declare function buildWebhookEvent(type: WebhookEventType, runId: string, snapshot: RunHealthSnapshot): WebhookEvent;
|
|
59
|
+
/**
|
|
60
|
+
* Evaluate whether a health transition warrants an alert.
|
|
61
|
+
* Returns the alert level, or null if no alert is needed.
|
|
62
|
+
*/
|
|
63
|
+
export declare function evaluateAlertLevel(prev: RunHealthSnapshot | null, next: RunHealthSnapshot): AlertLevel | null;
|
|
64
|
+
/**
|
|
65
|
+
* Filter registrations for a given event type and optional alert level.
|
|
66
|
+
*/
|
|
67
|
+
export declare function filterRegistrations(registrations: WebhookRegistration[], eventType: WebhookEventType, alertLevel?: AlertLevel): WebhookRegistration[];
|
|
68
|
+
//# sourceMappingURL=webhooks.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webhooks.d.ts","sourceRoot":"","sources":["../../src/observability/webhooks.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAmB,MAAM,SAAS,CAAC;AAMlE,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,MAAM,GAAG,UAAU,CAAC;AAEtD,MAAM,MAAM,gBAAgB,GACxB,oBAAoB,GACpB,eAAe,GACf,YAAY,GACZ,WAAW,GACX,wBAAwB,CAAC;AAE7B,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,gBAAgB,EAAE,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,gBAAgB,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,UAAU,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,eAAe;IAC9B,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,mBAAmB,EAAE,CAAC;CACtC;AAED,MAAM,MAAM,wBAAwB,GAAG,IAAI,CAAC,mBAAmB,EAAE,IAAI,GAAG,WAAW,CAAC,CAAC;AAMrF,eAAO,MAAM,sBAAsB,wBAAwB,CAAC;AA0B5D;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,eAAe,EACzB,KAAK,EAAE,wBAAwB,GAC9B,mBAAmB,CAQrB;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,eAAe,EACzB,EAAE,EAAE,MAAM,GACT,IAAI,CAMN;AAED;;GAEG;AACH,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,eAAe,EACzB,KAAK,CAAC,EAAE,MAAM,GACb,mBAAmB,EAAE,CAGvB;AAMD;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,gBAAgB,EACtB,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,iBAAiB,GAC1B,YAAY,CAad;AAMD;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,iBAAiB,GAAG,IAAI,EAC9B,IAAI,EAAE,iBAAiB,GACtB,UAAU,GAAG,IAAI,CAgBnB;AAMD;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,aAAa,EAAE,mBAAmB,EAAE,EACpC,SAAS,EAAE,gBAAgB,EAC3B,UAAU,CAAC,EAAE,UAAU,GACtB,mBAAmB,EAAE,CASvB"}
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* GAP-OBS-NEW-001: Dashboard Webhook and Alert System.
|
|
4
|
+
*
|
|
5
|
+
* Webhook registration, event filtering, and alert evaluation
|
|
6
|
+
* for run health changes. Pure functions for registry management
|
|
7
|
+
* and alert level computation.
|
|
8
|
+
*/
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.WEBHOOK_SCHEMA_VERSION = void 0;
|
|
11
|
+
exports.registerWebhook = registerWebhook;
|
|
12
|
+
exports.unregisterWebhook = unregisterWebhook;
|
|
13
|
+
exports.listWebhooks = listWebhooks;
|
|
14
|
+
exports.buildWebhookEvent = buildWebhookEvent;
|
|
15
|
+
exports.evaluateAlertLevel = evaluateAlertLevel;
|
|
16
|
+
exports.filterRegistrations = filterRegistrations;
|
|
17
|
+
// ---------------------------------------------------------------------------
|
|
18
|
+
// Constants
|
|
19
|
+
// ---------------------------------------------------------------------------
|
|
20
|
+
exports.WEBHOOK_SCHEMA_VERSION = "2026.01.webhooks-v1";
|
|
21
|
+
// ---------------------------------------------------------------------------
|
|
22
|
+
// ID generation
|
|
23
|
+
// ---------------------------------------------------------------------------
|
|
24
|
+
function generateId() {
|
|
25
|
+
// Use crypto.randomUUID for test isolation (no shared mutable counter)
|
|
26
|
+
return `wh-${crypto.randomUUID()}`;
|
|
27
|
+
}
|
|
28
|
+
// ---------------------------------------------------------------------------
|
|
29
|
+
// Alert level mapping
|
|
30
|
+
// ---------------------------------------------------------------------------
|
|
31
|
+
const STATUS_ALERT_MAP = {
|
|
32
|
+
healthy: "info",
|
|
33
|
+
degraded: "warn",
|
|
34
|
+
stuck: "critical",
|
|
35
|
+
failed: "critical",
|
|
36
|
+
};
|
|
37
|
+
// ---------------------------------------------------------------------------
|
|
38
|
+
// Registry management (pure, operates on mutable registry)
|
|
39
|
+
// ---------------------------------------------------------------------------
|
|
40
|
+
/**
|
|
41
|
+
* Register a new webhook in the registry.
|
|
42
|
+
* Mutates the registry and returns the created registration.
|
|
43
|
+
*/
|
|
44
|
+
function registerWebhook(registry, input) {
|
|
45
|
+
const registration = {
|
|
46
|
+
...input,
|
|
47
|
+
id: generateId(),
|
|
48
|
+
createdAt: new Date().toISOString(),
|
|
49
|
+
};
|
|
50
|
+
registry.registrations.push(registration);
|
|
51
|
+
return registration;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Remove a webhook by id. Throws if not found.
|
|
55
|
+
*/
|
|
56
|
+
function unregisterWebhook(registry, id) {
|
|
57
|
+
const index = registry.registrations.findIndex((r) => r.id === id);
|
|
58
|
+
if (index === -1) {
|
|
59
|
+
throw new Error(`Webhook not found: ${id}`);
|
|
60
|
+
}
|
|
61
|
+
registry.registrations.splice(index, 1);
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* List webhooks, optionally filtered by runId.
|
|
65
|
+
*/
|
|
66
|
+
function listWebhooks(registry, runId) {
|
|
67
|
+
if (!runId)
|
|
68
|
+
return [...registry.registrations];
|
|
69
|
+
return registry.registrations.filter((r) => r.runId === runId);
|
|
70
|
+
}
|
|
71
|
+
// ---------------------------------------------------------------------------
|
|
72
|
+
// Event building
|
|
73
|
+
// ---------------------------------------------------------------------------
|
|
74
|
+
/**
|
|
75
|
+
* Build a webhook event from a health snapshot.
|
|
76
|
+
*/
|
|
77
|
+
function buildWebhookEvent(type, runId, snapshot) {
|
|
78
|
+
return {
|
|
79
|
+
id: generateId(),
|
|
80
|
+
type,
|
|
81
|
+
runId,
|
|
82
|
+
alertLevel: STATUS_ALERT_MAP[snapshot.status],
|
|
83
|
+
payload: {
|
|
84
|
+
status: snapshot.status,
|
|
85
|
+
metrics: snapshot.metrics,
|
|
86
|
+
issues: snapshot.issues,
|
|
87
|
+
},
|
|
88
|
+
occurredAt: new Date().toISOString(),
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
// ---------------------------------------------------------------------------
|
|
92
|
+
// Alert level evaluation (pure)
|
|
93
|
+
// ---------------------------------------------------------------------------
|
|
94
|
+
/**
|
|
95
|
+
* Evaluate whether a health transition warrants an alert.
|
|
96
|
+
* Returns the alert level, or null if no alert is needed.
|
|
97
|
+
*/
|
|
98
|
+
function evaluateAlertLevel(prev, next) {
|
|
99
|
+
const prevStatus = prev?.status ?? "healthy";
|
|
100
|
+
const nextStatus = next.status;
|
|
101
|
+
if (prevStatus === nextStatus)
|
|
102
|
+
return null;
|
|
103
|
+
// Recovery: anything → healthy
|
|
104
|
+
if (nextStatus === "healthy")
|
|
105
|
+
return "info";
|
|
106
|
+
// Degradation
|
|
107
|
+
if (nextStatus === "degraded")
|
|
108
|
+
return "warn";
|
|
109
|
+
// Critical states
|
|
110
|
+
if (nextStatus === "stuck" || nextStatus === "failed")
|
|
111
|
+
return "critical";
|
|
112
|
+
return null;
|
|
113
|
+
}
|
|
114
|
+
// ---------------------------------------------------------------------------
|
|
115
|
+
// Registration filtering
|
|
116
|
+
// ---------------------------------------------------------------------------
|
|
117
|
+
/**
|
|
118
|
+
* Filter registrations for a given event type and optional alert level.
|
|
119
|
+
*/
|
|
120
|
+
function filterRegistrations(registrations, eventType, alertLevel) {
|
|
121
|
+
return registrations.filter((r) => {
|
|
122
|
+
if (!r.enabled)
|
|
123
|
+
return false;
|
|
124
|
+
if (!r.events.includes(eventType))
|
|
125
|
+
return false;
|
|
126
|
+
if (alertLevel && r.alertLevels && r.alertLevels.length > 0) {
|
|
127
|
+
if (!r.alertLevels.includes(alertLevel))
|
|
128
|
+
return false;
|
|
129
|
+
}
|
|
130
|
+
return true;
|
|
131
|
+
});
|
|
132
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Plugin sandboxing module for L6 Agent-Platform.
|
|
3
|
+
*
|
|
4
|
+
* Provides permission-gated plugin loading, runtime sandbox enforcement,
|
|
5
|
+
* and semver compatibility checking.
|
|
6
|
+
*/
|
|
7
|
+
export type { PluginPermission, PluginManifest, PluginStatus, PluginInstance, PluginSandboxConfig, } from './types';
|
|
8
|
+
export { PluginSandbox } from './sandbox';
|
|
9
|
+
export { PluginLoader } from './loader';
|
|
10
|
+
export { PluginVersionChecker, type VersionCheckResult } from './version-check';
|
|
11
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/plugins/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,YAAY,EACV,gBAAgB,EAChB,cAAc,EACd,YAAY,EACZ,cAAc,EACd,mBAAmB,GACpB,MAAM,SAAS,CAAC;AAGjB,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAG1C,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAGxC,OAAO,EAAE,oBAAoB,EAAE,KAAK,kBAAkB,EAAE,MAAM,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Plugin sandboxing module for L6 Agent-Platform.
|
|
4
|
+
*
|
|
5
|
+
* Provides permission-gated plugin loading, runtime sandbox enforcement,
|
|
6
|
+
* and semver compatibility checking.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.PluginVersionChecker = exports.PluginLoader = exports.PluginSandbox = void 0;
|
|
10
|
+
// Sandbox
|
|
11
|
+
var sandbox_1 = require("./sandbox");
|
|
12
|
+
Object.defineProperty(exports, "PluginSandbox", { enumerable: true, get: function () { return sandbox_1.PluginSandbox; } });
|
|
13
|
+
// Loader
|
|
14
|
+
var loader_1 = require("./loader");
|
|
15
|
+
Object.defineProperty(exports, "PluginLoader", { enumerable: true, get: function () { return loader_1.PluginLoader; } });
|
|
16
|
+
// Version checker
|
|
17
|
+
var version_check_1 = require("./version-check");
|
|
18
|
+
Object.defineProperty(exports, "PluginVersionChecker", { enumerable: true, get: function () { return version_check_1.PluginVersionChecker; } });
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PluginLoader — lifecycle manager for plugin instances.
|
|
3
|
+
*
|
|
4
|
+
* Tracks loaded plugins, validates manifests on load, and manages
|
|
5
|
+
* status transitions (loading -> loaded | error, unloading, reloading).
|
|
6
|
+
*/
|
|
7
|
+
import type { PluginManifest, PluginInstance } from './types';
|
|
8
|
+
export declare class PluginLoader {
|
|
9
|
+
private plugins;
|
|
10
|
+
/**
|
|
11
|
+
* Load a plugin from its manifest.
|
|
12
|
+
*
|
|
13
|
+
* Validates required fields and permissions before transitioning the
|
|
14
|
+
* instance to `loaded`. If validation fails the instance is stored with
|
|
15
|
+
* status `error` and the error message is attached.
|
|
16
|
+
*/
|
|
17
|
+
load(manifest: PluginManifest): PluginInstance;
|
|
18
|
+
/**
|
|
19
|
+
* Unload a plugin by id.
|
|
20
|
+
*
|
|
21
|
+
* Sets status to `unloaded`. Returns `true` if the plugin existed,
|
|
22
|
+
* `false` otherwise.
|
|
23
|
+
*/
|
|
24
|
+
unload(pluginId: string): boolean;
|
|
25
|
+
/**
|
|
26
|
+
* Reload a plugin by re-loading from the existing manifest.
|
|
27
|
+
* Returns the new instance, or `undefined` if the plugin was not found.
|
|
28
|
+
*/
|
|
29
|
+
reload(pluginId: string): PluginInstance | undefined;
|
|
30
|
+
/** Return all tracked plugin instances. */
|
|
31
|
+
list(): PluginInstance[];
|
|
32
|
+
/** Get a single plugin instance by id. */
|
|
33
|
+
get(pluginId: string): PluginInstance | undefined;
|
|
34
|
+
/** Check whether a plugin is currently loaded (status === 'loaded'). */
|
|
35
|
+
isLoaded(pluginId: string): boolean;
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=loader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/plugins/loader.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAoB,MAAM,SAAS,CAAC;AAahF,qBAAa,YAAY;IACvB,OAAO,CAAC,OAAO,CAAqC;IAMpD;;;;;;OAMG;IACH,IAAI,CAAC,QAAQ,EAAE,cAAc,GAAG,cAAc;IAqC9C;;;;;OAKG;IACH,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAUjC;;;OAGG;IACH,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS;IAYpD,2CAA2C;IAC3C,IAAI,IAAI,cAAc,EAAE;IAIxB,0CAA0C;IAC1C,GAAG,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS;IAIjD,wEAAwE;IACxE,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;CAGpC"}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* PluginLoader — lifecycle manager for plugin instances.
|
|
4
|
+
*
|
|
5
|
+
* Tracks loaded plugins, validates manifests on load, and manages
|
|
6
|
+
* status transitions (loading -> loaded | error, unloading, reloading).
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.PluginLoader = void 0;
|
|
10
|
+
/** Set of all valid permission strings used for manifest validation. */
|
|
11
|
+
const VALID_PERMISSIONS = new Set([
|
|
12
|
+
'fs:read',
|
|
13
|
+
'fs:write',
|
|
14
|
+
'net:outbound',
|
|
15
|
+
'process:spawn',
|
|
16
|
+
'env:read',
|
|
17
|
+
'mcp:connect',
|
|
18
|
+
'shell:execute',
|
|
19
|
+
]);
|
|
20
|
+
class PluginLoader {
|
|
21
|
+
plugins = new Map();
|
|
22
|
+
// ---------------------------------------------------------------------------
|
|
23
|
+
// Load / Unload / Reload
|
|
24
|
+
// ---------------------------------------------------------------------------
|
|
25
|
+
/**
|
|
26
|
+
* Load a plugin from its manifest.
|
|
27
|
+
*
|
|
28
|
+
* Validates required fields and permissions before transitioning the
|
|
29
|
+
* instance to `loaded`. If validation fails the instance is stored with
|
|
30
|
+
* status `error` and the error message is attached.
|
|
31
|
+
*/
|
|
32
|
+
load(manifest) {
|
|
33
|
+
// Validate required fields
|
|
34
|
+
const issues = [];
|
|
35
|
+
if (!manifest.id)
|
|
36
|
+
issues.push('missing id');
|
|
37
|
+
if (!manifest.name)
|
|
38
|
+
issues.push('missing name');
|
|
39
|
+
if (!manifest.version)
|
|
40
|
+
issues.push('missing version');
|
|
41
|
+
if (!manifest.entrypoint)
|
|
42
|
+
issues.push('missing entrypoint');
|
|
43
|
+
if (!Array.isArray(manifest.permissions)) {
|
|
44
|
+
issues.push('permissions must be an array');
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
for (const perm of manifest.permissions) {
|
|
48
|
+
if (!VALID_PERMISSIONS.has(perm)) {
|
|
49
|
+
issues.push(`unknown permission: ${perm}`);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
if (issues.length > 0) {
|
|
54
|
+
const instance = {
|
|
55
|
+
manifest,
|
|
56
|
+
status: 'error',
|
|
57
|
+
error: `Manifest validation failed: ${issues.join('; ')}`,
|
|
58
|
+
};
|
|
59
|
+
this.plugins.set(manifest.id, instance);
|
|
60
|
+
return instance;
|
|
61
|
+
}
|
|
62
|
+
const instance = {
|
|
63
|
+
manifest,
|
|
64
|
+
status: 'loaded',
|
|
65
|
+
loadedAt: Date.now(),
|
|
66
|
+
};
|
|
67
|
+
this.plugins.set(manifest.id, instance);
|
|
68
|
+
return instance;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Unload a plugin by id.
|
|
72
|
+
*
|
|
73
|
+
* Sets status to `unloaded`. Returns `true` if the plugin existed,
|
|
74
|
+
* `false` otherwise.
|
|
75
|
+
*/
|
|
76
|
+
unload(pluginId) {
|
|
77
|
+
const instance = this.plugins.get(pluginId);
|
|
78
|
+
if (!instance)
|
|
79
|
+
return false;
|
|
80
|
+
instance.status = 'unloaded';
|
|
81
|
+
instance.loadedAt = undefined;
|
|
82
|
+
instance.error = undefined;
|
|
83
|
+
return true;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Reload a plugin by re-loading from the existing manifest.
|
|
87
|
+
* Returns the new instance, or `undefined` if the plugin was not found.
|
|
88
|
+
*/
|
|
89
|
+
reload(pluginId) {
|
|
90
|
+
const existing = this.plugins.get(pluginId);
|
|
91
|
+
if (!existing)
|
|
92
|
+
return undefined;
|
|
93
|
+
this.unload(pluginId);
|
|
94
|
+
return this.load(existing.manifest);
|
|
95
|
+
}
|
|
96
|
+
// ---------------------------------------------------------------------------
|
|
97
|
+
// Queries
|
|
98
|
+
// ---------------------------------------------------------------------------
|
|
99
|
+
/** Return all tracked plugin instances. */
|
|
100
|
+
list() {
|
|
101
|
+
return [...this.plugins.values()];
|
|
102
|
+
}
|
|
103
|
+
/** Get a single plugin instance by id. */
|
|
104
|
+
get(pluginId) {
|
|
105
|
+
return this.plugins.get(pluginId);
|
|
106
|
+
}
|
|
107
|
+
/** Check whether a plugin is currently loaded (status === 'loaded'). */
|
|
108
|
+
isLoaded(pluginId) {
|
|
109
|
+
return this.plugins.get(pluginId)?.status === 'loaded';
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
exports.PluginLoader = PluginLoader;
|