@a5c-ai/agent-platform 5.0.1-staging.b436b3b3e611
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 +14 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +52 -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/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 +55 -0
- package/dist/seams/contract.d.ts.map +1 -0
- package/dist/seams/contract.js +120 -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 +96 -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/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 +141 -0
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Session context persistence for cross-run knowledge sharing (GAP-SESSION-001).
|
|
4
|
+
* Stores accumulated notes and shared knowledge as a JSON file alongside the session state file.
|
|
5
|
+
*/
|
|
6
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
7
|
+
if (k2 === undefined) k2 = k;
|
|
8
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
9
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
10
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
11
|
+
}
|
|
12
|
+
Object.defineProperty(o, k2, desc);
|
|
13
|
+
}) : (function(o, m, k, k2) {
|
|
14
|
+
if (k2 === undefined) k2 = k;
|
|
15
|
+
o[k2] = m[k];
|
|
16
|
+
}));
|
|
17
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
18
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
19
|
+
}) : function(o, v) {
|
|
20
|
+
o["default"] = v;
|
|
21
|
+
});
|
|
22
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
23
|
+
var ownKeys = function(o) {
|
|
24
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
25
|
+
var ar = [];
|
|
26
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
27
|
+
return ar;
|
|
28
|
+
};
|
|
29
|
+
return ownKeys(o);
|
|
30
|
+
};
|
|
31
|
+
return function (mod) {
|
|
32
|
+
if (mod && mod.__esModule) return mod;
|
|
33
|
+
var result = {};
|
|
34
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
35
|
+
__setModuleDefault(result, mod);
|
|
36
|
+
return result;
|
|
37
|
+
};
|
|
38
|
+
})();
|
|
39
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
40
|
+
exports.getSessionContextPath = getSessionContextPath;
|
|
41
|
+
exports.getSessionContext = getSessionContext;
|
|
42
|
+
exports.updateSessionContext = updateSessionContext;
|
|
43
|
+
const node_fs_1 = require("node:fs");
|
|
44
|
+
const path = __importStar(require("node:path"));
|
|
45
|
+
/**
|
|
46
|
+
* Get the file path for a session's context JSON file.
|
|
47
|
+
*/
|
|
48
|
+
function getSessionContextPath(stateDir, sessionId) {
|
|
49
|
+
return `${stateDir}/${sessionId}.context.json`;
|
|
50
|
+
}
|
|
51
|
+
const EMPTY_CONTEXT = {
|
|
52
|
+
notes: [],
|
|
53
|
+
sharedKnowledge: {},
|
|
54
|
+
worktree: undefined,
|
|
55
|
+
};
|
|
56
|
+
/**
|
|
57
|
+
* Read session context from disk.
|
|
58
|
+
* Returns empty context if the file does not exist.
|
|
59
|
+
* Logs a warning and returns empty context if the file is corrupt.
|
|
60
|
+
*/
|
|
61
|
+
async function getSessionContext(stateDir, sessionId) {
|
|
62
|
+
const filePath = getSessionContextPath(stateDir, sessionId);
|
|
63
|
+
let raw;
|
|
64
|
+
try {
|
|
65
|
+
raw = await node_fs_1.promises.readFile(filePath, 'utf8');
|
|
66
|
+
}
|
|
67
|
+
catch (error) {
|
|
68
|
+
const err = error;
|
|
69
|
+
if (err.code === 'ENOENT') {
|
|
70
|
+
return { ...EMPTY_CONTEXT, sharedKnowledge: {} };
|
|
71
|
+
}
|
|
72
|
+
// Unexpected FS error — return empty rather than crash
|
|
73
|
+
return { ...EMPTY_CONTEXT, sharedKnowledge: {} };
|
|
74
|
+
}
|
|
75
|
+
try {
|
|
76
|
+
const data = JSON.parse(raw);
|
|
77
|
+
return {
|
|
78
|
+
notes: Array.isArray(data.notes) ? data.notes : [],
|
|
79
|
+
sharedKnowledge: data.sharedKnowledge && typeof data.sharedKnowledge === 'object'
|
|
80
|
+
? data.sharedKnowledge
|
|
81
|
+
: {},
|
|
82
|
+
worktree: data.worktree && typeof data.worktree === 'object'
|
|
83
|
+
? data.worktree
|
|
84
|
+
: undefined,
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
catch {
|
|
88
|
+
// Corrupt JSON — return empty context rather than crash
|
|
89
|
+
return { ...EMPTY_CONTEXT, sharedKnowledge: {} };
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Update session context by merging new data with existing context.
|
|
94
|
+
* Notes are appended; sharedKnowledge keys are merged (newer values win).
|
|
95
|
+
* Uses atomic temp-file + rename pattern to prevent partial writes.
|
|
96
|
+
*/
|
|
97
|
+
async function updateSessionContext(stateDir, sessionId, updates) {
|
|
98
|
+
const existing = await getSessionContext(stateDir, sessionId);
|
|
99
|
+
const merged = {
|
|
100
|
+
notes: updates.notes ? [...existing.notes, ...updates.notes] : existing.notes,
|
|
101
|
+
sharedKnowledge: updates.sharedKnowledge
|
|
102
|
+
? { ...existing.sharedKnowledge, ...updates.sharedKnowledge }
|
|
103
|
+
: existing.sharedKnowledge,
|
|
104
|
+
worktree: updates.worktree ? { ...(existing.worktree ?? {}), ...updates.worktree } : existing.worktree,
|
|
105
|
+
};
|
|
106
|
+
const filePath = getSessionContextPath(stateDir, sessionId);
|
|
107
|
+
const dir = path.dirname(filePath);
|
|
108
|
+
const tempPath = `${filePath}.tmp.${process.pid}`;
|
|
109
|
+
await node_fs_1.promises.mkdir(dir, { recursive: true });
|
|
110
|
+
await node_fs_1.promises.writeFile(tempPath, JSON.stringify(merged), 'utf8');
|
|
111
|
+
await node_fs_1.promises.rename(tempPath, filePath);
|
|
112
|
+
return merged;
|
|
113
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GAP-PERF-008: Structured Continuity State.
|
|
3
|
+
*
|
|
4
|
+
* Structured state that persists across session compaction. Captures
|
|
5
|
+
* key decisions, current phase, and working context for seamless
|
|
6
|
+
* resume after context compression.
|
|
7
|
+
*/
|
|
8
|
+
export interface ContinuityPhase {
|
|
9
|
+
name: string;
|
|
10
|
+
startedAt: string;
|
|
11
|
+
description: string;
|
|
12
|
+
}
|
|
13
|
+
export interface ContinuityDecision {
|
|
14
|
+
key: string;
|
|
15
|
+
value: string;
|
|
16
|
+
rationale?: string;
|
|
17
|
+
madeAt: string;
|
|
18
|
+
runId?: string;
|
|
19
|
+
}
|
|
20
|
+
export interface ContinuityWorkingContext {
|
|
21
|
+
focus: string;
|
|
22
|
+
blockers: string[];
|
|
23
|
+
nextSteps: string[];
|
|
24
|
+
}
|
|
25
|
+
export interface ContinuityState {
|
|
26
|
+
schemaVersion: string;
|
|
27
|
+
updatedAt: string;
|
|
28
|
+
currentPhase: ContinuityPhase | null;
|
|
29
|
+
decisions: ContinuityDecision[];
|
|
30
|
+
workingContext: ContinuityWorkingContext;
|
|
31
|
+
}
|
|
32
|
+
export declare const CONTINUITY_STATE_SCHEMA_VERSION = "2026.01.continuity-state-v1";
|
|
33
|
+
export declare function getContinuityStatePath(stateDir: string, sessionId: string): string;
|
|
34
|
+
export declare function getContinuityState(stateDir: string, sessionId: string): Promise<ContinuityState>;
|
|
35
|
+
export declare function setCurrentPhase(stateDir: string, sessionId: string, phase: Omit<ContinuityPhase, "startedAt">): Promise<void>;
|
|
36
|
+
export declare function upsertDecision(stateDir: string, sessionId: string, decision: Omit<ContinuityDecision, "madeAt">): Promise<void>;
|
|
37
|
+
export declare function updateWorkingContext(stateDir: string, sessionId: string, updates: Partial<ContinuityWorkingContext>): Promise<void>;
|
|
38
|
+
export declare function buildContinuityResumePrompt(stateDir: string, sessionId: string): Promise<string>;
|
|
39
|
+
//# sourceMappingURL=continuityState.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"continuityState.d.ts","sourceRoot":"","sources":["../../src/session/continuityState.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AASH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,wBAAwB;IACvC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,eAAe;IAC9B,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,eAAe,GAAG,IAAI,CAAC;IACrC,SAAS,EAAE,kBAAkB,EAAE,CAAC;IAChC,cAAc,EAAE,wBAAwB,CAAC;CAC1C;AAMD,eAAO,MAAM,+BAA+B,gCAAgC,CAAC;AAiD7E,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAElF;AAED,wBAAsB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAEtG;AAED,wBAAsB,eAAe,CACnC,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,IAAI,CAAC,eAAe,EAAE,WAAW,CAAC,GACxC,OAAO,CAAC,IAAI,CAAC,CAMf;AAED,wBAAsB,cAAc,CAClC,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,IAAI,CAAC,kBAAkB,EAAE,QAAQ,CAAC,GAC3C,OAAO,CAAC,IAAI,CAAC,CAYf;AAED,wBAAsB,oBAAoB,CACxC,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,OAAO,CAAC,wBAAwB,CAAC,GACzC,OAAO,CAAC,IAAI,CAAC,CAQf;AAED,wBAAsB,2BAA2B,CAC/C,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,MAAM,CAAC,CA2BjB"}
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* GAP-PERF-008: Structured Continuity State.
|
|
4
|
+
*
|
|
5
|
+
* Structured state that persists across session compaction. Captures
|
|
6
|
+
* key decisions, current phase, and working context for seamless
|
|
7
|
+
* resume after context compression.
|
|
8
|
+
*/
|
|
9
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
12
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
13
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
14
|
+
}
|
|
15
|
+
Object.defineProperty(o, k2, desc);
|
|
16
|
+
}) : (function(o, m, k, k2) {
|
|
17
|
+
if (k2 === undefined) k2 = k;
|
|
18
|
+
o[k2] = m[k];
|
|
19
|
+
}));
|
|
20
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
21
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
22
|
+
}) : function(o, v) {
|
|
23
|
+
o["default"] = v;
|
|
24
|
+
});
|
|
25
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
26
|
+
var ownKeys = function(o) {
|
|
27
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
28
|
+
var ar = [];
|
|
29
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
30
|
+
return ar;
|
|
31
|
+
};
|
|
32
|
+
return ownKeys(o);
|
|
33
|
+
};
|
|
34
|
+
return function (mod) {
|
|
35
|
+
if (mod && mod.__esModule) return mod;
|
|
36
|
+
var result = {};
|
|
37
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
38
|
+
__setModuleDefault(result, mod);
|
|
39
|
+
return result;
|
|
40
|
+
};
|
|
41
|
+
})();
|
|
42
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
43
|
+
exports.CONTINUITY_STATE_SCHEMA_VERSION = void 0;
|
|
44
|
+
exports.getContinuityStatePath = getContinuityStatePath;
|
|
45
|
+
exports.getContinuityState = getContinuityState;
|
|
46
|
+
exports.setCurrentPhase = setCurrentPhase;
|
|
47
|
+
exports.upsertDecision = upsertDecision;
|
|
48
|
+
exports.updateWorkingContext = updateWorkingContext;
|
|
49
|
+
exports.buildContinuityResumePrompt = buildContinuityResumePrompt;
|
|
50
|
+
const fs = __importStar(require("node:fs/promises"));
|
|
51
|
+
const path = __importStar(require("node:path"));
|
|
52
|
+
// ---------------------------------------------------------------------------
|
|
53
|
+
// Constants
|
|
54
|
+
// ---------------------------------------------------------------------------
|
|
55
|
+
exports.CONTINUITY_STATE_SCHEMA_VERSION = "2026.01.continuity-state-v1";
|
|
56
|
+
// ---------------------------------------------------------------------------
|
|
57
|
+
// Internal helpers
|
|
58
|
+
// ---------------------------------------------------------------------------
|
|
59
|
+
function emptyContinuityState() {
|
|
60
|
+
return {
|
|
61
|
+
schemaVersion: exports.CONTINUITY_STATE_SCHEMA_VERSION,
|
|
62
|
+
updatedAt: new Date().toISOString(),
|
|
63
|
+
currentPhase: null,
|
|
64
|
+
decisions: [],
|
|
65
|
+
workingContext: { focus: "", blockers: [], nextSteps: [] },
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
async function readRaw(filePath) {
|
|
69
|
+
let raw;
|
|
70
|
+
try {
|
|
71
|
+
raw = await fs.readFile(filePath, "utf8");
|
|
72
|
+
}
|
|
73
|
+
catch {
|
|
74
|
+
return emptyContinuityState();
|
|
75
|
+
}
|
|
76
|
+
try {
|
|
77
|
+
const data = JSON.parse(raw);
|
|
78
|
+
return {
|
|
79
|
+
schemaVersion: typeof data.schemaVersion === "string" ? data.schemaVersion : exports.CONTINUITY_STATE_SCHEMA_VERSION,
|
|
80
|
+
updatedAt: typeof data.updatedAt === "string" ? data.updatedAt : new Date().toISOString(),
|
|
81
|
+
currentPhase: data.currentPhase ?? null,
|
|
82
|
+
decisions: Array.isArray(data.decisions) ? data.decisions : [],
|
|
83
|
+
workingContext: data.workingContext ?? { focus: "", blockers: [], nextSteps: [] },
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
catch {
|
|
87
|
+
return emptyContinuityState();
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
async function writeRaw(filePath, data) {
|
|
91
|
+
const dir = path.dirname(filePath);
|
|
92
|
+
const tempPath = `${filePath}.tmp.${process.pid}`;
|
|
93
|
+
await fs.mkdir(dir, { recursive: true });
|
|
94
|
+
await fs.writeFile(tempPath, JSON.stringify(data, null, 2), "utf8");
|
|
95
|
+
await fs.rename(tempPath, filePath);
|
|
96
|
+
}
|
|
97
|
+
// ---------------------------------------------------------------------------
|
|
98
|
+
// Public API
|
|
99
|
+
// ---------------------------------------------------------------------------
|
|
100
|
+
function getContinuityStatePath(stateDir, sessionId) {
|
|
101
|
+
return path.join(stateDir, `${sessionId}.continuity.json`);
|
|
102
|
+
}
|
|
103
|
+
async function getContinuityState(stateDir, sessionId) {
|
|
104
|
+
return readRaw(getContinuityStatePath(stateDir, sessionId));
|
|
105
|
+
}
|
|
106
|
+
async function setCurrentPhase(stateDir, sessionId, phase) {
|
|
107
|
+
const filePath = getContinuityStatePath(stateDir, sessionId);
|
|
108
|
+
const state = await readRaw(filePath);
|
|
109
|
+
state.currentPhase = { ...phase, startedAt: new Date().toISOString() };
|
|
110
|
+
state.updatedAt = new Date().toISOString();
|
|
111
|
+
await writeRaw(filePath, state);
|
|
112
|
+
}
|
|
113
|
+
async function upsertDecision(stateDir, sessionId, decision) {
|
|
114
|
+
const filePath = getContinuityStatePath(stateDir, sessionId);
|
|
115
|
+
const state = await readRaw(filePath);
|
|
116
|
+
const existing = state.decisions.findIndex((d) => d.key === decision.key);
|
|
117
|
+
const entry = { ...decision, madeAt: new Date().toISOString() };
|
|
118
|
+
if (existing >= 0) {
|
|
119
|
+
state.decisions[existing] = entry;
|
|
120
|
+
}
|
|
121
|
+
else {
|
|
122
|
+
state.decisions.push(entry);
|
|
123
|
+
}
|
|
124
|
+
state.updatedAt = new Date().toISOString();
|
|
125
|
+
await writeRaw(filePath, state);
|
|
126
|
+
}
|
|
127
|
+
async function updateWorkingContext(stateDir, sessionId, updates) {
|
|
128
|
+
const filePath = getContinuityStatePath(stateDir, sessionId);
|
|
129
|
+
const state = await readRaw(filePath);
|
|
130
|
+
if (updates.focus !== undefined)
|
|
131
|
+
state.workingContext.focus = updates.focus;
|
|
132
|
+
if (updates.blockers !== undefined)
|
|
133
|
+
state.workingContext.blockers = updates.blockers;
|
|
134
|
+
if (updates.nextSteps !== undefined)
|
|
135
|
+
state.workingContext.nextSteps = updates.nextSteps;
|
|
136
|
+
state.updatedAt = new Date().toISOString();
|
|
137
|
+
await writeRaw(filePath, state);
|
|
138
|
+
}
|
|
139
|
+
async function buildContinuityResumePrompt(stateDir, sessionId) {
|
|
140
|
+
const state = await getContinuityState(stateDir, sessionId);
|
|
141
|
+
const sections = [];
|
|
142
|
+
if (state.currentPhase) {
|
|
143
|
+
sections.push(`## Current Phase: ${state.currentPhase.name}\n${state.currentPhase.description}`);
|
|
144
|
+
}
|
|
145
|
+
if (state.decisions.length > 0) {
|
|
146
|
+
const items = state.decisions.map((d) => {
|
|
147
|
+
const rationale = d.rationale ? ` (${d.rationale})` : "";
|
|
148
|
+
return `- **${d.key}**: ${d.value}${rationale}`;
|
|
149
|
+
});
|
|
150
|
+
sections.push(`## Key Decisions\n${items.join("\n")}`);
|
|
151
|
+
}
|
|
152
|
+
const wc = state.workingContext;
|
|
153
|
+
if (wc.focus || wc.blockers.length > 0 || wc.nextSteps.length > 0) {
|
|
154
|
+
const parts = [];
|
|
155
|
+
if (wc.focus)
|
|
156
|
+
parts.push(`**Focus**: ${wc.focus}`);
|
|
157
|
+
if (wc.blockers.length > 0)
|
|
158
|
+
parts.push(`**Blockers**: ${wc.blockers.join(", ")}`);
|
|
159
|
+
if (wc.nextSteps.length > 0)
|
|
160
|
+
parts.push(`**Next Steps**: ${wc.nextSteps.join(", ")}`);
|
|
161
|
+
sections.push(`## Working Context\n${parts.join("\n")}`);
|
|
162
|
+
}
|
|
163
|
+
return sections.length > 0 ? sections.join("\n\n") : "";
|
|
164
|
+
}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GAP-SESSION-004: Session-Level Cost Tracking and Budgets.
|
|
3
|
+
*
|
|
4
|
+
* Aggregates cost data from runs within a session. Supports configurable
|
|
5
|
+
* budgets with threshold alerts and auto-pause.
|
|
6
|
+
* Uses the same atomic temp-file + rename pattern as context.ts.
|
|
7
|
+
*/
|
|
8
|
+
export interface SessionBudget {
|
|
9
|
+
/** Maximum cost in USD. 0 = unlimited. */
|
|
10
|
+
maxCostUsd: number;
|
|
11
|
+
/** Alert threshold percentages (default: [50, 80, 100]). */
|
|
12
|
+
alertThresholds: number[];
|
|
13
|
+
/** Whether to auto-pause orchestration when budget exceeded. */
|
|
14
|
+
autoPause: boolean;
|
|
15
|
+
}
|
|
16
|
+
export interface SessionCostState {
|
|
17
|
+
totalCostUsd: number;
|
|
18
|
+
totalInputTokens: number;
|
|
19
|
+
totalOutputTokens: number;
|
|
20
|
+
runCosts: Array<{
|
|
21
|
+
runId: string;
|
|
22
|
+
costUsd: number;
|
|
23
|
+
inputTokens: number;
|
|
24
|
+
outputTokens: number;
|
|
25
|
+
}>;
|
|
26
|
+
budget?: SessionBudget;
|
|
27
|
+
triggeredThresholds: number[];
|
|
28
|
+
paused: boolean;
|
|
29
|
+
lastUpdatedAt: string;
|
|
30
|
+
}
|
|
31
|
+
export interface SessionBudgetAlert {
|
|
32
|
+
thresholdPct: number;
|
|
33
|
+
currentCostUsd: number;
|
|
34
|
+
budgetUsd: number;
|
|
35
|
+
currentPct: number;
|
|
36
|
+
message: string;
|
|
37
|
+
}
|
|
38
|
+
export interface BudgetCheckResult {
|
|
39
|
+
exceeded: boolean;
|
|
40
|
+
alerts: SessionBudgetAlert[];
|
|
41
|
+
shouldPause: boolean;
|
|
42
|
+
}
|
|
43
|
+
export interface RunCostUpdate {
|
|
44
|
+
runId: string;
|
|
45
|
+
costUsd: number;
|
|
46
|
+
inputTokens: number;
|
|
47
|
+
outputTokens: number;
|
|
48
|
+
}
|
|
49
|
+
export declare function getSessionCostPath(stateDir: string, sessionId: string): string;
|
|
50
|
+
export declare function getSessionCost(stateDir: string, sessionId: string): Promise<SessionCostState>;
|
|
51
|
+
export declare function updateSessionCost(stateDir: string, sessionId: string, update: RunCostUpdate): Promise<SessionCostState>;
|
|
52
|
+
export declare function setSessionBudget(stateDir: string, sessionId: string, budget: SessionBudget): Promise<SessionCostState>;
|
|
53
|
+
/**
|
|
54
|
+
* Pure function: evaluate budget thresholds against current cost.
|
|
55
|
+
* Returns new alerts (excluding already-triggered thresholds).
|
|
56
|
+
*/
|
|
57
|
+
export declare function checkBudget(costState: SessionCostState): BudgetCheckResult;
|
|
58
|
+
/**
|
|
59
|
+
* Persist triggered thresholds back to cost state after checkBudget produces alerts.
|
|
60
|
+
* Call this after processing alerts to prevent re-triggering.
|
|
61
|
+
*/
|
|
62
|
+
export declare function markThresholdsTriggered(stateDir: string, sessionId: string, thresholds: number[]): Promise<void>;
|
|
63
|
+
//# sourceMappingURL=cost.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cost.d.ts","sourceRoot":"","sources":["../../src/session/cost.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AASH,MAAM,WAAW,aAAa;IAC5B,0CAA0C;IAC1C,UAAU,EAAE,MAAM,CAAC;IACnB,4DAA4D;IAC5D,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,gEAAgE;IAChE,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,QAAQ,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC/F,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAC9B,MAAM,EAAE,OAAO,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,kBAAkB;IACjC,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,kBAAkB,EAAE,CAAC;IAC7B,WAAW,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;CACtB;AAwDD,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAE9E;AAED,wBAAsB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAEnG;AAED,wBAAsB,iBAAiB,CACrC,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,aAAa,GACpB,OAAO,CAAC,gBAAgB,CAAC,CAiC3B;AAED,wBAAsB,gBAAgB,CACpC,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,aAAa,GACpB,OAAO,CAAC,gBAAgB,CAAC,CAO3B;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,SAAS,EAAE,gBAAgB,GAAG,iBAAiB,CA2B1E;AAED;;;GAGG;AACH,wBAAsB,uBAAuB,CAC3C,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAAE,GACnB,OAAO,CAAC,IAAI,CAAC,CASf"}
|
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* GAP-SESSION-004: Session-Level Cost Tracking and Budgets.
|
|
4
|
+
*
|
|
5
|
+
* Aggregates cost data from runs within a session. Supports configurable
|
|
6
|
+
* budgets with threshold alerts and auto-pause.
|
|
7
|
+
* Uses the same atomic temp-file + rename pattern as context.ts.
|
|
8
|
+
*/
|
|
9
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
12
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
13
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
14
|
+
}
|
|
15
|
+
Object.defineProperty(o, k2, desc);
|
|
16
|
+
}) : (function(o, m, k, k2) {
|
|
17
|
+
if (k2 === undefined) k2 = k;
|
|
18
|
+
o[k2] = m[k];
|
|
19
|
+
}));
|
|
20
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
21
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
22
|
+
}) : function(o, v) {
|
|
23
|
+
o["default"] = v;
|
|
24
|
+
});
|
|
25
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
26
|
+
var ownKeys = function(o) {
|
|
27
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
28
|
+
var ar = [];
|
|
29
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
30
|
+
return ar;
|
|
31
|
+
};
|
|
32
|
+
return ownKeys(o);
|
|
33
|
+
};
|
|
34
|
+
return function (mod) {
|
|
35
|
+
if (mod && mod.__esModule) return mod;
|
|
36
|
+
var result = {};
|
|
37
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
38
|
+
__setModuleDefault(result, mod);
|
|
39
|
+
return result;
|
|
40
|
+
};
|
|
41
|
+
})();
|
|
42
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
43
|
+
exports.getSessionCostPath = getSessionCostPath;
|
|
44
|
+
exports.getSessionCost = getSessionCost;
|
|
45
|
+
exports.updateSessionCost = updateSessionCost;
|
|
46
|
+
exports.setSessionBudget = setSessionBudget;
|
|
47
|
+
exports.checkBudget = checkBudget;
|
|
48
|
+
exports.markThresholdsTriggered = markThresholdsTriggered;
|
|
49
|
+
const node_fs_1 = require("node:fs");
|
|
50
|
+
const path = __importStar(require("node:path"));
|
|
51
|
+
// ---------------------------------------------------------------------------
|
|
52
|
+
// Internal helpers
|
|
53
|
+
// ---------------------------------------------------------------------------
|
|
54
|
+
function emptyCostState() {
|
|
55
|
+
return {
|
|
56
|
+
totalCostUsd: 0,
|
|
57
|
+
totalInputTokens: 0,
|
|
58
|
+
totalOutputTokens: 0,
|
|
59
|
+
runCosts: [],
|
|
60
|
+
triggeredThresholds: [],
|
|
61
|
+
paused: false,
|
|
62
|
+
lastUpdatedAt: new Date().toISOString(),
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
async function readRaw(filePath) {
|
|
66
|
+
let raw;
|
|
67
|
+
try {
|
|
68
|
+
raw = await node_fs_1.promises.readFile(filePath, "utf8");
|
|
69
|
+
}
|
|
70
|
+
catch (error) {
|
|
71
|
+
const err = error;
|
|
72
|
+
if (err.code === "ENOENT")
|
|
73
|
+
return emptyCostState();
|
|
74
|
+
return emptyCostState();
|
|
75
|
+
}
|
|
76
|
+
try {
|
|
77
|
+
const data = JSON.parse(raw);
|
|
78
|
+
return {
|
|
79
|
+
totalCostUsd: typeof data.totalCostUsd === "number" ? data.totalCostUsd : 0,
|
|
80
|
+
totalInputTokens: typeof data.totalInputTokens === "number" ? data.totalInputTokens : 0,
|
|
81
|
+
totalOutputTokens: typeof data.totalOutputTokens === "number" ? data.totalOutputTokens : 0,
|
|
82
|
+
runCosts: Array.isArray(data.runCosts) ? data.runCosts : [],
|
|
83
|
+
budget: data.budget,
|
|
84
|
+
triggeredThresholds: Array.isArray(data.triggeredThresholds) ? data.triggeredThresholds : [],
|
|
85
|
+
paused: typeof data.paused === "boolean" ? data.paused : false,
|
|
86
|
+
lastUpdatedAt: typeof data.lastUpdatedAt === "string" ? data.lastUpdatedAt : new Date().toISOString(),
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
catch {
|
|
90
|
+
return emptyCostState();
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
async function writeRaw(filePath, data) {
|
|
94
|
+
const dir = path.dirname(filePath);
|
|
95
|
+
const tempPath = `${filePath}.tmp.${process.pid}`;
|
|
96
|
+
await node_fs_1.promises.mkdir(dir, { recursive: true });
|
|
97
|
+
await node_fs_1.promises.writeFile(tempPath, JSON.stringify(data, null, 2), "utf8");
|
|
98
|
+
await node_fs_1.promises.rename(tempPath, filePath);
|
|
99
|
+
}
|
|
100
|
+
// ---------------------------------------------------------------------------
|
|
101
|
+
// Public API
|
|
102
|
+
// ---------------------------------------------------------------------------
|
|
103
|
+
function getSessionCostPath(stateDir, sessionId) {
|
|
104
|
+
return path.join(stateDir, `${sessionId}.cost.json`);
|
|
105
|
+
}
|
|
106
|
+
async function getSessionCost(stateDir, sessionId) {
|
|
107
|
+
return readRaw(getSessionCostPath(stateDir, sessionId));
|
|
108
|
+
}
|
|
109
|
+
async function updateSessionCost(stateDir, sessionId, update) {
|
|
110
|
+
const filePath = getSessionCostPath(stateDir, sessionId);
|
|
111
|
+
const data = await readRaw(filePath);
|
|
112
|
+
// Check for duplicate run cost entry and update or add
|
|
113
|
+
const existingIdx = data.runCosts.findIndex((r) => r.runId === update.runId);
|
|
114
|
+
if (existingIdx >= 0) {
|
|
115
|
+
// Update existing entry (re-aggregation): subtract old, add new
|
|
116
|
+
const old = data.runCosts[existingIdx];
|
|
117
|
+
data.totalCostUsd += update.costUsd - old.costUsd;
|
|
118
|
+
data.totalInputTokens += update.inputTokens - old.inputTokens;
|
|
119
|
+
data.totalOutputTokens += update.outputTokens - old.outputTokens;
|
|
120
|
+
data.runCosts[existingIdx] = {
|
|
121
|
+
runId: update.runId,
|
|
122
|
+
costUsd: update.costUsd,
|
|
123
|
+
inputTokens: update.inputTokens,
|
|
124
|
+
outputTokens: update.outputTokens,
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
else {
|
|
128
|
+
data.totalCostUsd += update.costUsd;
|
|
129
|
+
data.totalInputTokens += update.inputTokens;
|
|
130
|
+
data.totalOutputTokens += update.outputTokens;
|
|
131
|
+
data.runCosts.push({
|
|
132
|
+
runId: update.runId,
|
|
133
|
+
costUsd: update.costUsd,
|
|
134
|
+
inputTokens: update.inputTokens,
|
|
135
|
+
outputTokens: update.outputTokens,
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
data.lastUpdatedAt = new Date().toISOString();
|
|
139
|
+
await writeRaw(filePath, data);
|
|
140
|
+
return data;
|
|
141
|
+
}
|
|
142
|
+
async function setSessionBudget(stateDir, sessionId, budget) {
|
|
143
|
+
const filePath = getSessionCostPath(stateDir, sessionId);
|
|
144
|
+
const data = await readRaw(filePath);
|
|
145
|
+
data.budget = budget;
|
|
146
|
+
data.lastUpdatedAt = new Date().toISOString();
|
|
147
|
+
await writeRaw(filePath, data);
|
|
148
|
+
return data;
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Pure function: evaluate budget thresholds against current cost.
|
|
152
|
+
* Returns new alerts (excluding already-triggered thresholds).
|
|
153
|
+
*/
|
|
154
|
+
function checkBudget(costState) {
|
|
155
|
+
if (!costState.budget || costState.budget.maxCostUsd <= 0) {
|
|
156
|
+
return { exceeded: false, alerts: [], shouldPause: false };
|
|
157
|
+
}
|
|
158
|
+
const { maxCostUsd, alertThresholds, autoPause } = costState.budget;
|
|
159
|
+
const currentPct = (costState.totalCostUsd / maxCostUsd) * 100;
|
|
160
|
+
const exceeded = currentPct >= 100;
|
|
161
|
+
const alerts = [];
|
|
162
|
+
for (const threshold of alertThresholds) {
|
|
163
|
+
if (currentPct >= threshold && !costState.triggeredThresholds.includes(threshold)) {
|
|
164
|
+
alerts.push({
|
|
165
|
+
thresholdPct: threshold,
|
|
166
|
+
currentCostUsd: costState.totalCostUsd,
|
|
167
|
+
budgetUsd: maxCostUsd,
|
|
168
|
+
currentPct,
|
|
169
|
+
message: `Session cost ${currentPct.toFixed(1)}% of budget ($${costState.totalCostUsd.toFixed(4)} / $${maxCostUsd.toFixed(2)})`,
|
|
170
|
+
});
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
return {
|
|
174
|
+
exceeded,
|
|
175
|
+
alerts,
|
|
176
|
+
shouldPause: exceeded && autoPause,
|
|
177
|
+
};
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Persist triggered thresholds back to cost state after checkBudget produces alerts.
|
|
181
|
+
* Call this after processing alerts to prevent re-triggering.
|
|
182
|
+
*/
|
|
183
|
+
async function markThresholdsTriggered(stateDir, sessionId, thresholds) {
|
|
184
|
+
if (thresholds.length === 0)
|
|
185
|
+
return;
|
|
186
|
+
const filePath = getSessionCostPath(stateDir, sessionId);
|
|
187
|
+
const data = await readRaw(filePath);
|
|
188
|
+
const existing = new Set(data.triggeredThresholds);
|
|
189
|
+
for (const t of thresholds)
|
|
190
|
+
existing.add(t);
|
|
191
|
+
data.triggeredThresholds = [...existing];
|
|
192
|
+
data.lastUpdatedAt = new Date().toISOString();
|
|
193
|
+
await writeRaw(filePath, data);
|
|
194
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Mapping of harness identifiers to their native session environment variables.
|
|
3
|
+
*
|
|
4
|
+
* Only Pi-specific env vars are kept here. External harness session discovery
|
|
5
|
+
* is handled by agent-mux session management.
|
|
6
|
+
*/
|
|
7
|
+
export declare const HARNESS_ENV_VARS: Record<string, string[]>;
|
|
8
|
+
/**
|
|
9
|
+
* Resolve the current session ID from the ambient environment (markers + env vars).
|
|
10
|
+
*
|
|
11
|
+
* This is used for "autodiscovery" in contexts where no explicit session ID
|
|
12
|
+
* was provided (e.g. journaling low-level events).
|
|
13
|
+
*
|
|
14
|
+
* Precedence:
|
|
15
|
+
* 1. Harness-native env vars (Pi / oh-my-pi)
|
|
16
|
+
* 2. AGENT_SESSION_ID
|
|
17
|
+
* 3. PID-scoped marker for the given harness (fallback only)
|
|
18
|
+
*
|
|
19
|
+
* External harness session discovery is delegated to agent-mux.
|
|
20
|
+
*/
|
|
21
|
+
export declare function resolveAmbientSessionId(harness?: string): string | undefined;
|
|
22
|
+
//# sourceMappingURL=discovery.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"discovery.d.ts","sourceRoot":"","sources":["../../src/session/discovery.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAGrD,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAO5E"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.HARNESS_ENV_VARS = void 0;
|
|
4
|
+
exports.resolveAmbientSessionId = resolveAmbientSessionId;
|
|
5
|
+
const babysitter_sdk_1 = require("@a5c-ai/babysitter-sdk");
|
|
6
|
+
/**
|
|
7
|
+
* Mapping of harness identifiers to their native session environment variables.
|
|
8
|
+
*
|
|
9
|
+
* Only Pi-specific env vars are kept here. External harness session discovery
|
|
10
|
+
* is handled by agent-mux session management.
|
|
11
|
+
*/
|
|
12
|
+
exports.HARNESS_ENV_VARS = {
|
|
13
|
+
"pi": ["PI_SESSION_ID"],
|
|
14
|
+
"oh-my-pi": ["OMP_SESSION_ID"],
|
|
15
|
+
};
|
|
16
|
+
/**
|
|
17
|
+
* Resolve the current session ID from the ambient environment (markers + env vars).
|
|
18
|
+
*
|
|
19
|
+
* This is used for "autodiscovery" in contexts where no explicit session ID
|
|
20
|
+
* was provided (e.g. journaling low-level events).
|
|
21
|
+
*
|
|
22
|
+
* Precedence:
|
|
23
|
+
* 1. Harness-native env vars (Pi / oh-my-pi)
|
|
24
|
+
* 2. AGENT_SESSION_ID
|
|
25
|
+
* 3. PID-scoped marker for the given harness (fallback only)
|
|
26
|
+
*
|
|
27
|
+
* External harness session discovery is delegated to agent-mux.
|
|
28
|
+
*/
|
|
29
|
+
function resolveAmbientSessionId(harness) {
|
|
30
|
+
if (!harness) {
|
|
31
|
+
return process.env.AGENT_SESSION_ID;
|
|
32
|
+
}
|
|
33
|
+
const envVars = exports.HARNESS_ENV_VARS[harness] || [];
|
|
34
|
+
return (0, babysitter_sdk_1.resolveSessionIdWithMarker)(harness, {}, envVars);
|
|
35
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Session history persistence for GAP-SESSION-002.
|
|
3
|
+
*
|
|
4
|
+
* Stores accumulated decisions, run summaries, and context snapshots
|
|
5
|
+
* in a dedicated <sessionId>.history.json file alongside the session state.
|
|
6
|
+
* Uses the same atomic temp-file + rename pattern as context.ts.
|
|
7
|
+
*/
|
|
8
|
+
import type { SessionDecision, SessionRunSummary, SessionContextSnapshot, SessionHistory } from "./types";
|
|
9
|
+
/** Get the file path for a session's history JSON file. */
|
|
10
|
+
export declare function getSessionHistoryPath(stateDir: string, sessionId: string): string;
|
|
11
|
+
/**
|
|
12
|
+
* Append a decision to the session's history.
|
|
13
|
+
* Automatically adds a timestamp.
|
|
14
|
+
*/
|
|
15
|
+
export declare function addDecision(stateDir: string, sessionId: string, decision: Omit<SessionDecision, "timestamp">): Promise<void>;
|
|
16
|
+
/**
|
|
17
|
+
* Append a run summary to the session's history.
|
|
18
|
+
*/
|
|
19
|
+
export declare function addRunSummary(stateDir: string, sessionId: string, summary: SessionRunSummary): Promise<void>;
|
|
20
|
+
/**
|
|
21
|
+
* Save a context snapshot to the session's history.
|
|
22
|
+
* Automatically adds a timestamp.
|
|
23
|
+
*/
|
|
24
|
+
export declare function saveContextSnapshot(stateDir: string, sessionId: string, snapshot: Omit<SessionContextSnapshot, "timestamp">): Promise<void>;
|
|
25
|
+
/**
|
|
26
|
+
* Get the full session history: SessionContext fields + history arrays.
|
|
27
|
+
* Returns empty defaults when files do not exist.
|
|
28
|
+
*/
|
|
29
|
+
export declare function getSessionHistory(stateDir: string, sessionId: string): Promise<SessionHistory>;
|
|
30
|
+
//# sourceMappingURL=history.d.ts.map
|