@amsterdamdatalabs/enact-operator 0.1.2
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 +33 -0
- package/dist/index.d.ts +24 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +24 -0
- package/dist/index.js.map +1 -0
- package/dist/lanes/autopilot/index.d.ts +95 -0
- package/dist/lanes/autopilot/index.d.ts.map +1 -0
- package/dist/lanes/autopilot/index.js +499 -0
- package/dist/lanes/autopilot/index.js.map +1 -0
- package/dist/lanes/ralph/index.d.ts +118 -0
- package/dist/lanes/ralph/index.d.ts.map +1 -0
- package/dist/lanes/ralph/index.js +680 -0
- package/dist/lanes/ralph/index.js.map +1 -0
- package/dist/lanes/team/index.d.ts +110 -0
- package/dist/lanes/team/index.d.ts.map +1 -0
- package/dist/lanes/team/index.js +748 -0
- package/dist/lanes/team/index.js.map +1 -0
- package/dist/lanes/team/roles.d.ts +15 -0
- package/dist/lanes/team/roles.d.ts.map +1 -0
- package/dist/lanes/team/roles.js +89 -0
- package/dist/lanes/team/roles.js.map +1 -0
- package/dist/lanes/ultrawork/burst.d.ts +69 -0
- package/dist/lanes/ultrawork/burst.d.ts.map +1 -0
- package/dist/lanes/ultrawork/burst.js +254 -0
- package/dist/lanes/ultrawork/burst.js.map +1 -0
- package/dist/lanes/ultrawork/index.d.ts +159 -0
- package/dist/lanes/ultrawork/index.d.ts.map +1 -0
- package/dist/lanes/ultrawork/index.js +919 -0
- package/dist/lanes/ultrawork/index.js.map +1 -0
- package/dist/lanes/ultrawork/phases.d.ts +57 -0
- package/dist/lanes/ultrawork/phases.d.ts.map +1 -0
- package/dist/lanes/ultrawork/phases.js +116 -0
- package/dist/lanes/ultrawork/phases.js.map +1 -0
- package/dist/mcp/activation.d.ts +5 -0
- package/dist/mcp/activation.d.ts.map +1 -0
- package/dist/mcp/activation.js +234 -0
- package/dist/mcp/activation.js.map +1 -0
- package/dist/mcp/cli.d.ts +11 -0
- package/dist/mcp/cli.d.ts.map +1 -0
- package/dist/mcp/cli.js +140 -0
- package/dist/mcp/cli.js.map +1 -0
- package/dist/mcp/continuation.d.ts +5 -0
- package/dist/mcp/continuation.d.ts.map +1 -0
- package/dist/mcp/continuation.js +360 -0
- package/dist/mcp/continuation.js.map +1 -0
- package/dist/mcp/jobs.d.ts +5 -0
- package/dist/mcp/jobs.d.ts.map +1 -0
- package/dist/mcp/jobs.js +212 -0
- package/dist/mcp/jobs.js.map +1 -0
- package/dist/mcp/laneSupport.d.ts +19 -0
- package/dist/mcp/laneSupport.d.ts.map +1 -0
- package/dist/mcp/laneSupport.js +21 -0
- package/dist/mcp/laneSupport.js.map +1 -0
- package/dist/mcp/lanes/autopilot.d.ts +5 -0
- package/dist/mcp/lanes/autopilot.d.ts.map +1 -0
- package/dist/mcp/lanes/autopilot.js +227 -0
- package/dist/mcp/lanes/autopilot.js.map +1 -0
- package/dist/mcp/lanes/ralph.d.ts +5 -0
- package/dist/mcp/lanes/ralph.d.ts.map +1 -0
- package/dist/mcp/lanes/ralph.js +392 -0
- package/dist/mcp/lanes/ralph.js.map +1 -0
- package/dist/mcp/lanes/team.d.ts +5 -0
- package/dist/mcp/lanes/team.d.ts.map +1 -0
- package/dist/mcp/lanes/team.js +413 -0
- package/dist/mcp/lanes/team.js.map +1 -0
- package/dist/mcp/lanes/ultrawork.d.ts +5 -0
- package/dist/mcp/lanes/ultrawork.d.ts.map +1 -0
- package/dist/mcp/lanes/ultrawork.js +497 -0
- package/dist/mcp/lanes/ultrawork.js.map +1 -0
- package/dist/mcp/linkage.d.ts +5 -0
- package/dist/mcp/linkage.d.ts.map +1 -0
- package/dist/mcp/linkage.js +126 -0
- package/dist/mcp/linkage.js.map +1 -0
- package/dist/mcp/planning.d.ts +5 -0
- package/dist/mcp/planning.d.ts.map +1 -0
- package/dist/mcp/planning.js +584 -0
- package/dist/mcp/planning.js.map +1 -0
- package/dist/mcp/rpcTransport.d.ts +17 -0
- package/dist/mcp/rpcTransport.d.ts.map +1 -0
- package/dist/mcp/rpcTransport.js +90 -0
- package/dist/mcp/rpcTransport.js.map +1 -0
- package/dist/mcp/schemas/ralphVerify.d.ts +32 -0
- package/dist/mcp/schemas/ralphVerify.d.ts.map +1 -0
- package/dist/mcp/schemas/ralphVerify.js +20 -0
- package/dist/mcp/schemas/ralphVerify.js.map +1 -0
- package/dist/mcp/server.d.ts +5 -0
- package/dist/mcp/server.d.ts.map +1 -0
- package/dist/mcp/server.js +176 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/mcp/system.d.ts +5 -0
- package/dist/mcp/system.d.ts.map +1 -0
- package/dist/mcp/system.js +445 -0
- package/dist/mcp/system.js.map +1 -0
- package/dist/mcp/toolFilter.d.ts +2 -0
- package/dist/mcp/toolFilter.d.ts.map +1 -0
- package/dist/mcp/toolFilter.js +2 -0
- package/dist/mcp/toolFilter.js.map +1 -0
- package/dist/mcp/toolPartitions.d.ts +20 -0
- package/dist/mcp/toolPartitions.d.ts.map +1 -0
- package/dist/mcp/toolPartitions.js +280 -0
- package/dist/mcp/toolPartitions.js.map +1 -0
- package/dist/mcp/toolRuntime.d.ts +9 -0
- package/dist/mcp/toolRuntime.d.ts.map +1 -0
- package/dist/mcp/toolRuntime.js +179 -0
- package/dist/mcp/toolRuntime.js.map +1 -0
- package/dist/mcp/workflow.d.ts +12 -0
- package/dist/mcp/workflow.d.ts.map +1 -0
- package/dist/mcp/workflow.js +723 -0
- package/dist/mcp/workflow.js.map +1 -0
- package/dist/operator/hooks/hookDispatcher.d.ts +39 -0
- package/dist/operator/hooks/hookDispatcher.d.ts.map +1 -0
- package/dist/operator/hooks/hookDispatcher.js +58 -0
- package/dist/operator/hooks/hookDispatcher.js.map +1 -0
- package/dist/operator/hooks/hookGating.d.ts +28 -0
- package/dist/operator/hooks/hookGating.d.ts.map +1 -0
- package/dist/operator/hooks/hookGating.js +61 -0
- package/dist/operator/hooks/hookGating.js.map +1 -0
- package/dist/operator/hooks/hooks.d.ts +20 -0
- package/dist/operator/hooks/hooks.d.ts.map +1 -0
- package/dist/operator/hooks/hooks.js +124 -0
- package/dist/operator/hooks/hooks.js.map +1 -0
- package/dist/operator/hooks/toolGuardHooks.d.ts +86 -0
- package/dist/operator/hooks/toolGuardHooks.d.ts.map +1 -0
- package/dist/operator/hooks/toolGuardHooks.js +163 -0
- package/dist/operator/hooks/toolGuardHooks.js.map +1 -0
- package/dist/operator/hud.d.ts +115 -0
- package/dist/operator/hud.d.ts.map +1 -0
- package/dist/operator/hud.js +229 -0
- package/dist/operator/hud.js.map +1 -0
- package/dist/operator/missions.d.ts +125 -0
- package/dist/operator/missions.d.ts.map +1 -0
- package/dist/operator/missions.js +304 -0
- package/dist/operator/missions.js.map +1 -0
- package/dist/operator/operatorCore.d.ts +11 -0
- package/dist/operator/operatorCore.d.ts.map +1 -0
- package/dist/operator/operatorCore.js +9 -0
- package/dist/operator/operatorCore.js.map +1 -0
- package/dist/operator/operatorRuntimeCore.d.ts +17 -0
- package/dist/operator/operatorRuntimeCore.d.ts.map +1 -0
- package/dist/operator/operatorRuntimeCore.js +17 -0
- package/dist/operator/operatorRuntimeCore.js.map +1 -0
- package/dist/operator/runtime.d.ts +74 -0
- package/dist/operator/runtime.d.ts.map +1 -0
- package/dist/operator/runtime.js +357 -0
- package/dist/operator/runtime.js.map +1 -0
- package/dist/shared/core/bootstrap.d.ts +16 -0
- package/dist/shared/core/bootstrap.d.ts.map +1 -0
- package/dist/shared/core/bootstrap.js +77 -0
- package/dist/shared/core/bootstrap.js.map +1 -0
- package/dist/shared/core/contract.d.ts +71 -0
- package/dist/shared/core/contract.d.ts.map +1 -0
- package/dist/shared/core/contract.js +452 -0
- package/dist/shared/core/contract.js.map +1 -0
- package/dist/shared/core/events.d.ts +57 -0
- package/dist/shared/core/events.d.ts.map +1 -0
- package/dist/shared/core/events.js +36 -0
- package/dist/shared/core/events.js.map +1 -0
- package/dist/shared/core/jobs.d.ts +46 -0
- package/dist/shared/core/jobs.d.ts.map +1 -0
- package/dist/shared/core/jobs.js +137 -0
- package/dist/shared/core/jobs.js.map +1 -0
- package/dist/shared/core/json.d.ts +12 -0
- package/dist/shared/core/json.d.ts.map +1 -0
- package/dist/shared/core/json.js +52 -0
- package/dist/shared/core/json.js.map +1 -0
- package/dist/shared/core/layoutMigration.d.ts +11 -0
- package/dist/shared/core/layoutMigration.d.ts.map +1 -0
- package/dist/shared/core/layoutMigration.js +56 -0
- package/dist/shared/core/layoutMigration.js.map +1 -0
- package/dist/shared/core/lifecycle.d.ts +61 -0
- package/dist/shared/core/lifecycle.d.ts.map +1 -0
- package/dist/shared/core/lifecycle.js +123 -0
- package/dist/shared/core/lifecycle.js.map +1 -0
- package/dist/shared/core/packagePaths.d.ts +2 -0
- package/dist/shared/core/packagePaths.d.ts.map +1 -0
- package/dist/shared/core/packagePaths.js +9 -0
- package/dist/shared/core/packagePaths.js.map +1 -0
- package/dist/shared/core/terminology.d.ts +38 -0
- package/dist/shared/core/terminology.d.ts.map +1 -0
- package/dist/shared/core/terminology.js +54 -0
- package/dist/shared/core/terminology.js.map +1 -0
- package/dist/shared/core/types.d.ts +30 -0
- package/dist/shared/core/types.d.ts.map +1 -0
- package/dist/shared/core/types.js +2 -0
- package/dist/shared/core/types.js.map +1 -0
- package/dist/shared/diagnostics/doctor.d.ts +19 -0
- package/dist/shared/diagnostics/doctor.d.ts.map +1 -0
- package/dist/shared/diagnostics/doctor.js +82 -0
- package/dist/shared/diagnostics/doctor.js.map +1 -0
- package/dist/shared/diagnostics/hostRollout.d.ts +16 -0
- package/dist/shared/diagnostics/hostRollout.d.ts.map +1 -0
- package/dist/shared/diagnostics/hostRollout.js +78 -0
- package/dist/shared/diagnostics/hostRollout.js.map +1 -0
- package/dist/shared/observability/emit.d.ts +3 -0
- package/dist/shared/observability/emit.d.ts.map +1 -0
- package/dist/shared/observability/emit.js +17 -0
- package/dist/shared/observability/emit.js.map +1 -0
- package/dist/shared/observability/testWorkspace.d.ts +4 -0
- package/dist/shared/observability/testWorkspace.d.ts.map +1 -0
- package/dist/shared/observability/testWorkspace.js +35 -0
- package/dist/shared/observability/testWorkspace.js.map +1 -0
- package/dist/shared/state/installRegistry.d.ts +22 -0
- package/dist/shared/state/installRegistry.d.ts.map +1 -0
- package/dist/shared/state/installRegistry.js +51 -0
- package/dist/shared/state/installRegistry.js.map +1 -0
- package/dist/shared/state/session.d.ts +18 -0
- package/dist/shared/state/session.d.ts.map +1 -0
- package/dist/shared/state/session.js +127 -0
- package/dist/shared/state/session.js.map +1 -0
- package/dist/shared/state/state.d.ts +16 -0
- package/dist/shared/state/state.d.ts.map +1 -0
- package/dist/shared/state/state.js +91 -0
- package/dist/shared/state/state.js.map +1 -0
- package/dist/shared/state/tasks.d.ts +113 -0
- package/dist/shared/state/tasks.d.ts.map +1 -0
- package/dist/shared/state/tasks.js +274 -0
- package/dist/shared/state/tasks.js.map +1 -0
- package/dist/shared/workflow/activation/activeSkill.d.ts +46 -0
- package/dist/shared/workflow/activation/activeSkill.d.ts.map +1 -0
- package/dist/shared/workflow/activation/activeSkill.js +158 -0
- package/dist/shared/workflow/activation/activeSkill.js.map +1 -0
- package/dist/shared/workflow/activation/gateProfiles.d.ts +26 -0
- package/dist/shared/workflow/activation/gateProfiles.d.ts.map +1 -0
- package/dist/shared/workflow/activation/gateProfiles.js +102 -0
- package/dist/shared/workflow/activation/gateProfiles.js.map +1 -0
- package/dist/shared/workflow/activation/modeMatrix.d.ts +28 -0
- package/dist/shared/workflow/activation/modeMatrix.d.ts.map +1 -0
- package/dist/shared/workflow/activation/modeMatrix.js +91 -0
- package/dist/shared/workflow/activation/modeMatrix.js.map +1 -0
- package/dist/shared/workflow/activation/skillActivation.d.ts +74 -0
- package/dist/shared/workflow/activation/skillActivation.d.ts.map +1 -0
- package/dist/shared/workflow/activation/skillActivation.js +485 -0
- package/dist/shared/workflow/activation/skillActivation.js.map +1 -0
- package/dist/shared/workflow/activation/skillVariant.d.ts +18 -0
- package/dist/shared/workflow/activation/skillVariant.d.ts.map +1 -0
- package/dist/shared/workflow/activation/skillVariant.js +44 -0
- package/dist/shared/workflow/activation/skillVariant.js.map +1 -0
- package/dist/shared/workflow/authority/authority.d.ts +34 -0
- package/dist/shared/workflow/authority/authority.d.ts.map +1 -0
- package/dist/shared/workflow/authority/authority.js +64 -0
- package/dist/shared/workflow/authority/authority.js.map +1 -0
- package/dist/shared/workflow/closure/closureManifest.d.ts +39 -0
- package/dist/shared/workflow/closure/closureManifest.d.ts.map +1 -0
- package/dist/shared/workflow/closure/closureManifest.js +62 -0
- package/dist/shared/workflow/closure/closureManifest.js.map +1 -0
- package/dist/shared/workflow/closure/closureRequirements.d.ts +12 -0
- package/dist/shared/workflow/closure/closureRequirements.d.ts.map +1 -0
- package/dist/shared/workflow/closure/closureRequirements.js +30 -0
- package/dist/shared/workflow/closure/closureRequirements.js.map +1 -0
- package/dist/shared/workflow/closure/contractParity.d.ts +24 -0
- package/dist/shared/workflow/closure/contractParity.d.ts.map +1 -0
- package/dist/shared/workflow/closure/contractParity.js +238 -0
- package/dist/shared/workflow/closure/contractParity.js.map +1 -0
- package/dist/shared/workflow/closure/contractParityContext.d.ts +8 -0
- package/dist/shared/workflow/closure/contractParityContext.d.ts.map +1 -0
- package/dist/shared/workflow/closure/contractParityContext.js +50 -0
- package/dist/shared/workflow/closure/contractParityContext.js.map +1 -0
- package/dist/shared/workflow/closure/scopeGuard.d.ts +11 -0
- package/dist/shared/workflow/closure/scopeGuard.d.ts.map +1 -0
- package/dist/shared/workflow/closure/scopeGuard.js +69 -0
- package/dist/shared/workflow/closure/scopeGuard.js.map +1 -0
- package/dist/shared/workflow/closure/ultragoalArtifact.d.ts +13 -0
- package/dist/shared/workflow/closure/ultragoalArtifact.d.ts.map +1 -0
- package/dist/shared/workflow/closure/ultragoalArtifact.js +31 -0
- package/dist/shared/workflow/closure/ultragoalArtifact.js.map +1 -0
- package/dist/shared/workflow/closure/workflowReconcile.d.ts +70 -0
- package/dist/shared/workflow/closure/workflowReconcile.d.ts.map +1 -0
- package/dist/shared/workflow/closure/workflowReconcile.js +267 -0
- package/dist/shared/workflow/closure/workflowReconcile.js.map +1 -0
- package/dist/shared/workflow/continuation/continuation.d.ts +109 -0
- package/dist/shared/workflow/continuation/continuation.d.ts.map +1 -0
- package/dist/shared/workflow/continuation/continuation.js +550 -0
- package/dist/shared/workflow/continuation/continuation.js.map +1 -0
- package/dist/shared/workflow/continuation/continuationEventReservations.d.ts +17 -0
- package/dist/shared/workflow/continuation/continuationEventReservations.d.ts.map +1 -0
- package/dist/shared/workflow/continuation/continuationEventReservations.js +88 -0
- package/dist/shared/workflow/continuation/continuationEventReservations.js.map +1 -0
- package/dist/shared/workflow/continuation/continuationFollowUp.d.ts +114 -0
- package/dist/shared/workflow/continuation/continuationFollowUp.d.ts.map +1 -0
- package/dist/shared/workflow/continuation/continuationFollowUp.js +330 -0
- package/dist/shared/workflow/continuation/continuationFollowUp.js.map +1 -0
- package/dist/shared/workflow/continuation/continuationOrchestrator.d.ts +66 -0
- package/dist/shared/workflow/continuation/continuationOrchestrator.d.ts.map +1 -0
- package/dist/shared/workflow/continuation/continuationOrchestrator.js +144 -0
- package/dist/shared/workflow/continuation/continuationOrchestrator.js.map +1 -0
- package/dist/shared/workflow/continuation/hookContinuation.d.ts +44 -0
- package/dist/shared/workflow/continuation/hookContinuation.d.ts.map +1 -0
- package/dist/shared/workflow/continuation/hookContinuation.js +85 -0
- package/dist/shared/workflow/continuation/hookContinuation.js.map +1 -0
- package/dist/shared/workflow/continuation/stopPolicy.d.ts +38 -0
- package/dist/shared/workflow/continuation/stopPolicy.d.ts.map +1 -0
- package/dist/shared/workflow/continuation/stopPolicy.js +435 -0
- package/dist/shared/workflow/continuation/stopPolicy.js.map +1 -0
- package/dist/shared/workflow/continuation/stopVerdict.d.ts +31 -0
- package/dist/shared/workflow/continuation/stopVerdict.d.ts.map +1 -0
- package/dist/shared/workflow/continuation/stopVerdict.js +98 -0
- package/dist/shared/workflow/continuation/stopVerdict.js.map +1 -0
- package/dist/shared/workflow/delegation/delegatedSession.d.ts +118 -0
- package/dist/shared/workflow/delegation/delegatedSession.d.ts.map +1 -0
- package/dist/shared/workflow/delegation/delegatedSession.js +496 -0
- package/dist/shared/workflow/delegation/delegatedSession.js.map +1 -0
- package/dist/shared/workflow/delegation/delegationPrompt.d.ts +3 -0
- package/dist/shared/workflow/delegation/delegationPrompt.d.ts.map +1 -0
- package/dist/shared/workflow/delegation/delegationPrompt.js +15 -0
- package/dist/shared/workflow/delegation/delegationPrompt.js.map +1 -0
- package/dist/shared/workflow/delegation/sessionTasks.d.ts +40 -0
- package/dist/shared/workflow/delegation/sessionTasks.d.ts.map +1 -0
- package/dist/shared/workflow/delegation/sessionTasks.js +73 -0
- package/dist/shared/workflow/delegation/sessionTasks.js.map +1 -0
- package/dist/shared/workflow/delegation/subagentRuntime.d.ts +26 -0
- package/dist/shared/workflow/delegation/subagentRuntime.d.ts.map +1 -0
- package/dist/shared/workflow/delegation/subagentRuntime.js +231 -0
- package/dist/shared/workflow/delegation/subagentRuntime.js.map +1 -0
- package/dist/shared/workflow/delivery/adoAuxiliaryRuntime.d.ts +79 -0
- package/dist/shared/workflow/delivery/adoAuxiliaryRuntime.d.ts.map +1 -0
- package/dist/shared/workflow/delivery/adoAuxiliaryRuntime.js +166 -0
- package/dist/shared/workflow/delivery/adoAuxiliaryRuntime.js.map +1 -0
- package/dist/shared/workflow/delivery/finalWave.d.ts +57 -0
- package/dist/shared/workflow/delivery/finalWave.d.ts.map +1 -0
- package/dist/shared/workflow/delivery/finalWave.js +123 -0
- package/dist/shared/workflow/delivery/finalWave.js.map +1 -0
- package/dist/shared/workflow/delivery/lifecyclePushMap.d.ts +68 -0
- package/dist/shared/workflow/delivery/lifecyclePushMap.d.ts.map +1 -0
- package/dist/shared/workflow/delivery/lifecyclePushMap.js +82 -0
- package/dist/shared/workflow/delivery/lifecyclePushMap.js.map +1 -0
- package/dist/shared/workflow/delivery/prSidecar.d.ts +7 -0
- package/dist/shared/workflow/delivery/prSidecar.d.ts.map +1 -0
- package/dist/shared/workflow/delivery/prSidecar.js +4 -0
- package/dist/shared/workflow/delivery/prSidecar.js.map +1 -0
- package/dist/shared/workflow/delivery/reviewStaleness.d.ts +37 -0
- package/dist/shared/workflow/delivery/reviewStaleness.d.ts.map +1 -0
- package/dist/shared/workflow/delivery/reviewStaleness.js +94 -0
- package/dist/shared/workflow/delivery/reviewStaleness.js.map +1 -0
- package/dist/shared/workflow/planning/hyperplan.d.ts +40 -0
- package/dist/shared/workflow/planning/hyperplan.d.ts.map +1 -0
- package/dist/shared/workflow/planning/hyperplan.js +133 -0
- package/dist/shared/workflow/planning/hyperplan.js.map +1 -0
- package/dist/shared/workflow/planning/notepad.d.ts +17 -0
- package/dist/shared/workflow/planning/notepad.d.ts.map +1 -0
- package/dist/shared/workflow/planning/notepad.js +84 -0
- package/dist/shared/workflow/planning/notepad.js.map +1 -0
- package/dist/shared/workflow/planning/planFormat.d.ts +3 -0
- package/dist/shared/workflow/planning/planFormat.d.ts.map +1 -0
- package/dist/shared/workflow/planning/planFormat.js +14 -0
- package/dist/shared/workflow/planning/planFormat.js.map +1 -0
- package/package.json +155 -0
- package/runtime/hooks/_continuation.mjs +2 -0
- package/runtime/hooks/_lib.mjs +2 -0
- package/runtime/hooks/_toolGuards.mjs +2 -0
- package/runtime/hooks/lanes/resolveSkillActivation.mjs +241 -0
- package/runtime/hooks/lanes/user-prompt-submit.mjs +326 -0
- package/runtime/hooks/layout-dir.mjs +2 -0
- package/runtime/hooks/lifecycle/pre-compact.mjs +121 -0
- package/runtime/hooks/lifecycle/session-start.mjs +356 -0
- package/runtime/hooks/lifecycle/stop.mjs +223 -0
- package/runtime/hooks/observability.mjs +2 -0
- package/runtime/hooks/post-tool-use-failure.mjs +5 -0
- package/runtime/hooks/post-tool-use.mjs +4 -0
- package/runtime/hooks/pre-compact.mjs +4 -0
- package/runtime/hooks/pre-tool-use.mjs +4 -0
- package/runtime/hooks/resolveSkillActivation.mjs +4 -0
- package/runtime/hooks/root-dir.mjs +2 -0
- package/runtime/hooks/session-start.mjs +4 -0
- package/runtime/hooks/shared/_continuation.mjs +341 -0
- package/runtime/hooks/shared/_lib.mjs +60 -0
- package/runtime/hooks/shared/_toolGuards.mjs +237 -0
- package/runtime/hooks/shared/config.mjs +143 -0
- package/runtime/hooks/shared/layout-dir.mjs +12 -0
- package/runtime/hooks/shared/observability.mjs +257 -0
- package/runtime/hooks/shared/root-dir.mjs +9 -0
- package/runtime/hooks/stop.mjs +4 -0
- package/runtime/hooks/subagent-tracker.mjs +4 -0
- package/runtime/hooks/subagents/subagent-tracker.mjs +106 -0
- package/runtime/hooks/tools/post-tool-use-failure.mjs +251 -0
- package/runtime/hooks/tools/post-tool-use.mjs +205 -0
- package/runtime/hooks/tools/pre-tool-use.mjs +268 -0
- package/runtime/hooks/user-prompt-submit.mjs +4 -0
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { readFileSync, readdirSync, statSync } from 'node:fs';
|
|
2
|
+
import { join } from 'node:path';
|
|
3
|
+
function collectMustNotHavePatterns(planPath) {
|
|
4
|
+
const content = readFileSync(planPath, 'utf8');
|
|
5
|
+
const inlineMatches = content.match(/Must NOT Have:\s*(.+)/i);
|
|
6
|
+
if (inlineMatches) {
|
|
7
|
+
return inlineMatches[1]
|
|
8
|
+
.split(',')
|
|
9
|
+
.map((pattern) => pattern.trim())
|
|
10
|
+
.filter(Boolean);
|
|
11
|
+
}
|
|
12
|
+
const lines = content.split(/\r?\n/);
|
|
13
|
+
const start = lines.findIndex((line) => /^#{1,6}\s+Must NOT Have\s*$/i.test(line.trim()));
|
|
14
|
+
if (start < 0) {
|
|
15
|
+
return [];
|
|
16
|
+
}
|
|
17
|
+
const patterns = [];
|
|
18
|
+
for (let i = start + 1; i < lines.length; i += 1) {
|
|
19
|
+
const line = lines[i];
|
|
20
|
+
if (/^#{1,6}\s+/.test(line.trim()))
|
|
21
|
+
break;
|
|
22
|
+
const match = line.match(/^\s*[-*]\s+(.+?)\s*$/);
|
|
23
|
+
if (match) {
|
|
24
|
+
patterns.push(match[1].trim());
|
|
25
|
+
}
|
|
26
|
+
else if (line.trim()) {
|
|
27
|
+
patterns.push(line.trim());
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
return patterns;
|
|
31
|
+
}
|
|
32
|
+
export function buildScopeGuard(planPath) {
|
|
33
|
+
return {
|
|
34
|
+
planPath,
|
|
35
|
+
patterns: collectMustNotHavePatterns(planPath),
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
function collectFiles(dir) {
|
|
39
|
+
const out = [];
|
|
40
|
+
for (const entry of readdirSync(dir, { withFileTypes: true })) {
|
|
41
|
+
const path = join(dir, entry.name);
|
|
42
|
+
if (entry.isDirectory()) {
|
|
43
|
+
out.push(...collectFiles(path));
|
|
44
|
+
}
|
|
45
|
+
else if (entry.isFile()) {
|
|
46
|
+
out.push(path);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
return out;
|
|
50
|
+
}
|
|
51
|
+
export function runScopeGuard(guard, artefactDir) {
|
|
52
|
+
if (guard.patterns.length === 0) {
|
|
53
|
+
return [];
|
|
54
|
+
}
|
|
55
|
+
if (!statSync(artefactDir).isDirectory()) {
|
|
56
|
+
throw new Error(`scope guard artefactDir is not a directory: ${artefactDir}`);
|
|
57
|
+
}
|
|
58
|
+
const violations = [];
|
|
59
|
+
for (const filePath of collectFiles(artefactDir)) {
|
|
60
|
+
const content = readFileSync(filePath, 'utf8');
|
|
61
|
+
for (const pattern of guard.patterns) {
|
|
62
|
+
if (content.includes(pattern)) {
|
|
63
|
+
violations.push({ filePath, pattern });
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
return violations;
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=scopeGuard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scopeGuard.js","sourceRoot":"","sources":["../../../../src/shared/workflow/closure/scopeGuard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC9D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAYjC,SAAS,0BAA0B,CAAC,QAAgB;IAClD,MAAM,OAAO,GAAG,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC/C,MAAM,aAAa,GAAG,OAAO,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAC9D,IAAI,aAAa,EAAE,CAAC;QAClB,OAAO,aAAa,CAAC,CAAC,CAAC;aACpB,KAAK,CAAC,GAAG,CAAC;aACV,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;aAChC,MAAM,CAAC,OAAO,CAAC,CAAC;IACrB,CAAC;IACD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACrC,MAAM,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,8BAA8B,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAC1F,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QACd,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,KAAK,IAAI,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QACjD,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACtB,IAAI,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YAAE,MAAM;QAC1C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;QACjD,IAAI,KAAK,EAAE,CAAC;YACV,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QACjC,CAAC;aAAM,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;YACvB,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,QAAgB;IAC9C,OAAO;QACL,QAAQ;QACR,QAAQ,EAAE,0BAA0B,CAAC,QAAQ,CAAC;KAC/C,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CAAC,GAAW;IAC/B,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,KAAK,MAAM,KAAK,IAAI,WAAW,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;QAC9D,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QACnC,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;YACxB,GAAG,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;QAClC,CAAC;aAAM,IAAI,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;YAC1B,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjB,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,KAAiB,EAAE,WAAmB;IAClE,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAChC,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;QACzC,MAAM,IAAI,KAAK,CAAC,+CAA+C,WAAW,EAAE,CAAC,CAAC;IAChF,CAAC;IAED,MAAM,UAAU,GAAqB,EAAE,CAAC;IACxC,KAAK,MAAM,QAAQ,IAAI,YAAY,CAAC,WAAW,CAAC,EAAE,CAAC;QACjD,MAAM,OAAO,GAAG,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC/C,KAAK,MAAM,OAAO,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;YACrC,IAAI,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC9B,UAAU,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;YACzC,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare const ULTRAGOAL_SCHEMA_VERSION: 1;
|
|
3
|
+
export declare const UltragoalArtifactSchema: z.ZodObject<{
|
|
4
|
+
schemaVersion: z.ZodLiteral<1>;
|
|
5
|
+
id: z.ZodString;
|
|
6
|
+
createdAt: z.ZodString;
|
|
7
|
+
updatedAt: z.ZodString;
|
|
8
|
+
payload: z.ZodRecord<z.ZodString, z.ZodUnknown>;
|
|
9
|
+
}, z.core.$strip>;
|
|
10
|
+
export type UltragoalArtifact = z.infer<typeof UltragoalArtifactSchema>;
|
|
11
|
+
export declare function parseUltragoalArtifact(raw: unknown, idHint: string): UltragoalArtifact;
|
|
12
|
+
export declare function parseUltragoalId(raw: unknown): string;
|
|
13
|
+
//# sourceMappingURL=ultragoalArtifact.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ultragoalArtifact.d.ts","sourceRoot":"","sources":["../../../../src/shared/workflow/closure/ultragoalArtifact.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,wBAAwB,EAAG,CAAU,CAAC;AAKnD,eAAO,MAAM,uBAAuB;;;;;;iBAMlC,CAAC;AAEH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAQxE,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,iBAAiB,CAMtF;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAMrD"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export const ULTRAGOAL_SCHEMA_VERSION = 1;
|
|
3
|
+
const ULTRAGOAL_ID_PATTERN = /^[A-Za-z0-9._-]+$/;
|
|
4
|
+
const UltragoalPayloadSchema = z.record(z.string(), z.unknown());
|
|
5
|
+
export const UltragoalArtifactSchema = z.object({
|
|
6
|
+
schemaVersion: z.literal(ULTRAGOAL_SCHEMA_VERSION),
|
|
7
|
+
id: z.string().min(1).regex(ULTRAGOAL_ID_PATTERN),
|
|
8
|
+
createdAt: z.string().min(1),
|
|
9
|
+
updatedAt: z.string().min(1),
|
|
10
|
+
payload: UltragoalPayloadSchema,
|
|
11
|
+
});
|
|
12
|
+
function formatSchemaError(error) {
|
|
13
|
+
return error.issues
|
|
14
|
+
.map((issue) => `${issue.path.join('.') || '(root)'} ${issue.message}`)
|
|
15
|
+
.join('; ');
|
|
16
|
+
}
|
|
17
|
+
export function parseUltragoalArtifact(raw, idHint) {
|
|
18
|
+
const parsed = UltragoalArtifactSchema.safeParse(raw);
|
|
19
|
+
if (!parsed.success) {
|
|
20
|
+
throw new Error(`Malformed ultragoal "${idHint}": ${formatSchemaError(parsed.error)}`);
|
|
21
|
+
}
|
|
22
|
+
return parsed.data;
|
|
23
|
+
}
|
|
24
|
+
export function parseUltragoalId(raw) {
|
|
25
|
+
const parsed = z.string().min(1).regex(ULTRAGOAL_ID_PATTERN).safeParse(raw);
|
|
26
|
+
if (!parsed.success) {
|
|
27
|
+
throw new Error('operator_ultragoal: id must be a non-empty slug using only letters, numbers, dot, underscore, or dash');
|
|
28
|
+
}
|
|
29
|
+
return parsed.data;
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=ultragoalArtifact.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ultragoalArtifact.js","sourceRoot":"","sources":["../../../../src/shared/workflow/closure/ultragoalArtifact.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAU,CAAC;AACnD,MAAM,oBAAoB,GAAG,mBAAmB,CAAC;AAEjD,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;AAEjE,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9C,aAAa,EAAE,CAAC,CAAC,OAAO,CAAC,wBAAwB,CAAC;IAClD,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,oBAAoB,CAAC;IACjD,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC5B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC5B,OAAO,EAAE,sBAAsB;CAChC,CAAC,CAAC;AAIH,SAAS,iBAAiB,CAAC,KAAiB;IAC1C,OAAO,KAAK,CAAC,MAAM;SAChB,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,QAAQ,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;SACtE,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,GAAY,EAAE,MAAc;IACjE,MAAM,MAAM,GAAG,uBAAuB,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IACtD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,wBAAwB,MAAM,MAAM,iBAAiB,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACzF,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC;AACrB,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,GAAY;IAC3C,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IAC5E,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,uGAAuG,CAAC,CAAC;IAC3H,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC;AACrB,CAAC"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { type OperatorReviewItem } from '../../../operator/runtime.js';
|
|
2
|
+
import { type OperatorTask } from '../../../shared/state/tasks.js';
|
|
3
|
+
import type { EvidenceHorizon } from '../../../shared/core/events.js';
|
|
4
|
+
import { type VerificationRun } from '../../../shared/workflow/delivery/reviewStaleness.js';
|
|
5
|
+
export declare const DEFAULT_REVIEW_STALE_MS: number;
|
|
6
|
+
export interface WorkflowReconcileTaskClassification {
|
|
7
|
+
taskId: string;
|
|
8
|
+
reviewId: string;
|
|
9
|
+
reason: 'missing-review-record' | 'review-stale';
|
|
10
|
+
ageMs?: number;
|
|
11
|
+
applied: boolean;
|
|
12
|
+
}
|
|
13
|
+
export interface WorkflowReconcileReviewClassification {
|
|
14
|
+
reviewId: string;
|
|
15
|
+
taskId: string;
|
|
16
|
+
reason: 'orphaned-review' | 'pending-no-review-state';
|
|
17
|
+
applied: boolean;
|
|
18
|
+
}
|
|
19
|
+
export interface WorkflowReconcileResult {
|
|
20
|
+
assessedAt: string;
|
|
21
|
+
staleThresholdMs: number;
|
|
22
|
+
summary: {
|
|
23
|
+
tasksReviewed: number;
|
|
24
|
+
staleTaskReviews: number;
|
|
25
|
+
orphanedReviews: number;
|
|
26
|
+
reviewInvalidations: number;
|
|
27
|
+
autoApplied: number;
|
|
28
|
+
status: 'reconciled' | 'unchanged';
|
|
29
|
+
};
|
|
30
|
+
staleTaskReviews: WorkflowReconcileTaskClassification[];
|
|
31
|
+
orphanedReviews: WorkflowReconcileReviewClassification[];
|
|
32
|
+
/** D6 — review convergence-state invalidations computed this reconcile pass. */
|
|
33
|
+
reviewInvalidations: ReviewInvalidationResult[];
|
|
34
|
+
}
|
|
35
|
+
export interface ReconcileOptions {
|
|
36
|
+
staleReviewAgeMs?: number;
|
|
37
|
+
apply?: boolean;
|
|
38
|
+
now?: string;
|
|
39
|
+
/** Optional evidence horizon for the ReconcileEvent persisted to ledger. */
|
|
40
|
+
evidenceHorizon?: EvidenceHorizon;
|
|
41
|
+
modeType?: 'ralph' | 'ultrawork' | 'autopilot';
|
|
42
|
+
modeId?: string;
|
|
43
|
+
/**
|
|
44
|
+
* D6 — verification runs to compare against review evidence horizons.
|
|
45
|
+
* When provided, computeReviewStaleState is run for every review and
|
|
46
|
+
* staleState / supersededBy are updated atomically with the verdict.
|
|
47
|
+
*/
|
|
48
|
+
verificationRuns?: VerificationRun[];
|
|
49
|
+
/**
|
|
50
|
+
* D6 — optional map from reviewId → explicit failing gate IDs.
|
|
51
|
+
* Supplement or override gate IDs parsed from review.notes.
|
|
52
|
+
*/
|
|
53
|
+
failingGateIds?: Map<string, string[]>;
|
|
54
|
+
}
|
|
55
|
+
/** Result of D6 review-invalidation for one review. */
|
|
56
|
+
export interface ReviewInvalidationResult {
|
|
57
|
+
reviewId: string;
|
|
58
|
+
taskId: string;
|
|
59
|
+
before: {
|
|
60
|
+
staleState: OperatorReviewItem['staleState'];
|
|
61
|
+
};
|
|
62
|
+
after: {
|
|
63
|
+
staleState: OperatorReviewItem['staleState'];
|
|
64
|
+
supersededBy?: string;
|
|
65
|
+
};
|
|
66
|
+
trigger: 'P1' | 'P2' | 'P3' | null;
|
|
67
|
+
applied: boolean;
|
|
68
|
+
}
|
|
69
|
+
export declare function reconcileWorkflowState(root: string, tasks: OperatorTask[], reviews: OperatorReviewItem[], options?: ReconcileOptions): WorkflowReconcileResult;
|
|
70
|
+
//# sourceMappingURL=workflowReconcile.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workflowReconcile.d.ts","sourceRoot":"","sources":["../../../../src/shared/workflow/closure/workflowReconcile.ts"],"names":[],"mappings":"AACA,OAAO,EAA8B,KAAK,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC5F,OAAO,EAAE,KAAK,YAAY,EAAc,MAAM,yBAAyB,CAAC;AAExE,OAAO,KAAK,EAAkB,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC/E,OAAO,EAA2B,KAAK,eAAe,EAAE,MAAM,+CAA+C,CAAC;AAG9G,eAAO,MAAM,uBAAuB,QAAsB,CAAC;AAE3D,MAAM,WAAW,mCAAmC;IAClD,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,uBAAuB,GAAG,cAAc,CAAC;IACjD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,qCAAqC;IACpD,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,iBAAiB,GAAG,yBAAyB,CAAC;IACtD,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,uBAAuB;IACtC,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,EAAE,MAAM,CAAC;IACzB,OAAO,EAAE;QACP,aAAa,EAAE,MAAM,CAAC;QACtB,gBAAgB,EAAE,MAAM,CAAC;QACzB,eAAe,EAAE,MAAM,CAAC;QACxB,mBAAmB,EAAE,MAAM,CAAC;QAC5B,WAAW,EAAE,MAAM,CAAC;QACpB,MAAM,EAAE,YAAY,GAAG,WAAW,CAAC;KACpC,CAAC;IACF,gBAAgB,EAAE,mCAAmC,EAAE,CAAC;IACxD,eAAe,EAAE,qCAAqC,EAAE,CAAC;IACzD,gFAAgF;IAChF,mBAAmB,EAAE,wBAAwB,EAAE,CAAC;CACjD;AAoBD,MAAM,WAAW,gBAAgB;IAC/B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,4EAA4E;IAC5E,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,QAAQ,CAAC,EAAE,OAAO,GAAG,WAAW,GAAG,WAAW,CAAC;IAC/C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,eAAe,EAAE,CAAC;IACrC;;;OAGG;IACH,cAAc,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;CACxC;AAED,uDAAuD;AACvD,MAAM,WAAW,wBAAwB;IACvC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE;QAAE,UAAU,EAAE,kBAAkB,CAAC,YAAY,CAAC,CAAA;KAAE,CAAC;IACzD,KAAK,EAAE;QAAE,UAAU,EAAE,kBAAkB,CAAC,YAAY,CAAC,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/E,OAAO,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IACnC,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,YAAY,EAAE,EACrB,OAAO,EAAE,kBAAkB,EAAE,EAC7B,OAAO,GAAE,gBAAqB,GAC7B,uBAAuB,CAuQzB"}
|
|
@@ -0,0 +1,267 @@
|
|
|
1
|
+
import { randomUUID } from 'node:crypto';
|
|
2
|
+
import { appendLedger, updateReview } from '../../../operator/runtime.js';
|
|
3
|
+
import { updateTask } from '../../../shared/state/tasks.js';
|
|
4
|
+
import { createEvidenceHorizon } from '../../../shared/core/events.js';
|
|
5
|
+
import { computeReviewStaleState } from '../../../shared/workflow/delivery/reviewStaleness.js';
|
|
6
|
+
import { coalesceTaskId } from '../../../shared/core/terminology.js';
|
|
7
|
+
export const DEFAULT_REVIEW_STALE_MS = 24 * 60 * 60 * 1000;
|
|
8
|
+
function toReviewsByTaskId(reviews) {
|
|
9
|
+
const buckets = new Map();
|
|
10
|
+
for (const review of reviews) {
|
|
11
|
+
const taskId = coalesceTaskId(review);
|
|
12
|
+
if (!taskId)
|
|
13
|
+
continue;
|
|
14
|
+
const existing = buckets.get(taskId);
|
|
15
|
+
if (existing === undefined) {
|
|
16
|
+
buckets.set(taskId, [review]);
|
|
17
|
+
}
|
|
18
|
+
else {
|
|
19
|
+
existing.push(review);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
for (const reviewList of buckets.values()) {
|
|
23
|
+
reviewList.sort((a, b) => b.updatedAt.localeCompare(a.updatedAt));
|
|
24
|
+
}
|
|
25
|
+
return buckets;
|
|
26
|
+
}
|
|
27
|
+
export function reconcileWorkflowState(root, tasks, reviews, options = {}) {
|
|
28
|
+
const now = options.now ?? new Date().toISOString();
|
|
29
|
+
const nowMs = Date.parse(now);
|
|
30
|
+
const staleThresholdMs = Math.max(options.staleReviewAgeMs ?? DEFAULT_REVIEW_STALE_MS, 0);
|
|
31
|
+
const apply = options.apply === true;
|
|
32
|
+
const reviewsByTaskId = toReviewsByTaskId(reviews);
|
|
33
|
+
const staleTaskReviews = [];
|
|
34
|
+
const orphanedReviews = [];
|
|
35
|
+
const tasksById = new Map(tasks.map((task) => [task.id, task]));
|
|
36
|
+
const reviewStateTasks = tasks.filter((task) => task.status === 'review');
|
|
37
|
+
const tasksReviewed = reviewStateTasks.length;
|
|
38
|
+
for (const task of reviewStateTasks) {
|
|
39
|
+
const taskReviews = reviewsByTaskId.get(task.id) ?? [];
|
|
40
|
+
if (taskReviews.length === 0) {
|
|
41
|
+
const classification = {
|
|
42
|
+
taskId: task.id,
|
|
43
|
+
reviewId: '',
|
|
44
|
+
reason: 'missing-review-record',
|
|
45
|
+
applied: false,
|
|
46
|
+
};
|
|
47
|
+
staleTaskReviews.push(classification);
|
|
48
|
+
continue;
|
|
49
|
+
}
|
|
50
|
+
if (task.reviewStatus !== 'pending') {
|
|
51
|
+
continue;
|
|
52
|
+
}
|
|
53
|
+
for (const review of taskReviews) {
|
|
54
|
+
if (review.status !== 'pending') {
|
|
55
|
+
continue;
|
|
56
|
+
}
|
|
57
|
+
const reviewAgeMs = nowMs - Date.parse(review.updatedAt);
|
|
58
|
+
if (reviewAgeMs < staleThresholdMs) {
|
|
59
|
+
continue;
|
|
60
|
+
}
|
|
61
|
+
const classification = {
|
|
62
|
+
taskId: task.id,
|
|
63
|
+
reviewId: review.id,
|
|
64
|
+
reason: 'review-stale',
|
|
65
|
+
ageMs: reviewAgeMs,
|
|
66
|
+
applied: false,
|
|
67
|
+
};
|
|
68
|
+
if (apply) {
|
|
69
|
+
updateTask(root, task.id, { reviewStale: true });
|
|
70
|
+
updateReview(root, review.id, { statusHint: 'stale' });
|
|
71
|
+
classification.applied = true;
|
|
72
|
+
}
|
|
73
|
+
staleTaskReviews.push(classification);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
const reviewedTaskIds = new Set(tasksById.keys());
|
|
77
|
+
for (const review of reviews) {
|
|
78
|
+
const reviewTaskId = coalesceTaskId(review);
|
|
79
|
+
if (!reviewTaskId || !reviewedTaskIds.has(reviewTaskId)) {
|
|
80
|
+
const classification = {
|
|
81
|
+
reviewId: review.id,
|
|
82
|
+
taskId: reviewTaskId ?? '',
|
|
83
|
+
reason: 'orphaned-review',
|
|
84
|
+
applied: false,
|
|
85
|
+
};
|
|
86
|
+
if (apply && review.status === 'pending') {
|
|
87
|
+
updateReview(root, review.id, { statusHint: 'stale' });
|
|
88
|
+
classification.applied = true;
|
|
89
|
+
}
|
|
90
|
+
orphanedReviews.push(classification);
|
|
91
|
+
continue;
|
|
92
|
+
}
|
|
93
|
+
const task = reviewTaskId ? tasksById.get(reviewTaskId) : undefined;
|
|
94
|
+
if (task && task.status !== 'review' && review.status === 'pending') {
|
|
95
|
+
const classification = {
|
|
96
|
+
reviewId: review.id,
|
|
97
|
+
taskId: reviewTaskId,
|
|
98
|
+
reason: 'pending-no-review-state',
|
|
99
|
+
applied: false,
|
|
100
|
+
};
|
|
101
|
+
if (apply) {
|
|
102
|
+
updateReview(root, review.id, { statusHint: 'stale' });
|
|
103
|
+
classification.applied = true;
|
|
104
|
+
}
|
|
105
|
+
orphanedReviews.push(classification);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
// ── D6: review invalidation rule ─────────────────────────────────────────────
|
|
109
|
+
// For every review, compute staleState via the three-predicate model and
|
|
110
|
+
// update staleState/supersededBy atomically with verdict (never rewriting it).
|
|
111
|
+
const reviewInvalidations = [];
|
|
112
|
+
if (options.verificationRuns && options.verificationRuns.length > 0) {
|
|
113
|
+
for (const review of reviews) {
|
|
114
|
+
const gateIds = options.failingGateIds?.get(review.id);
|
|
115
|
+
const { staleState: newStaleState, trigger } = computeReviewStaleState(review, options.verificationRuns, gateIds);
|
|
116
|
+
const oldStaleState = review.staleState;
|
|
117
|
+
const changed6 = newStaleState !== 'current' && newStaleState !== oldStaleState;
|
|
118
|
+
if (!changed6)
|
|
119
|
+
continue;
|
|
120
|
+
// Determine supersededBy: pick the newest run that drove the result.
|
|
121
|
+
const supersededBy = newStaleState === 'superseded'
|
|
122
|
+
? options.verificationRuns
|
|
123
|
+
.filter((r) => r.runTimestamp > (review.evidenceHorizon?.verificationRunTimestamp ?? ''))
|
|
124
|
+
.sort((a, b) => b.runTimestamp.localeCompare(a.runTimestamp))[0]?.runId
|
|
125
|
+
: undefined;
|
|
126
|
+
const invalidation = {
|
|
127
|
+
reviewId: review.id,
|
|
128
|
+
taskId: coalesceTaskId(review) ?? '',
|
|
129
|
+
before: { staleState: oldStaleState },
|
|
130
|
+
after: { staleState: newStaleState, supersededBy },
|
|
131
|
+
trigger,
|
|
132
|
+
applied: false,
|
|
133
|
+
};
|
|
134
|
+
if (apply) {
|
|
135
|
+
updateReview(root, review.id, {
|
|
136
|
+
staleState: newStaleState,
|
|
137
|
+
supersededBy,
|
|
138
|
+
});
|
|
139
|
+
invalidation.applied = true;
|
|
140
|
+
// Mutate the in-memory copy so downstream staleEntities reflect reality.
|
|
141
|
+
review.staleState = newStaleState;
|
|
142
|
+
review.supersededBy = supersededBy;
|
|
143
|
+
}
|
|
144
|
+
reviewInvalidations.push(invalidation);
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
let autoApplied = 0;
|
|
148
|
+
for (const stale of staleTaskReviews) {
|
|
149
|
+
if (stale.applied)
|
|
150
|
+
autoApplied += 1;
|
|
151
|
+
}
|
|
152
|
+
for (const orphan of orphanedReviews) {
|
|
153
|
+
if (orphan.applied)
|
|
154
|
+
autoApplied += 1;
|
|
155
|
+
}
|
|
156
|
+
for (const inv of reviewInvalidations) {
|
|
157
|
+
if (inv.applied)
|
|
158
|
+
autoApplied += 1;
|
|
159
|
+
}
|
|
160
|
+
const changed = staleTaskReviews.some((entry) => entry.applied) ||
|
|
161
|
+
orphanedReviews.some((entry) => entry.applied) ||
|
|
162
|
+
reviewInvalidations.some((entry) => entry.applied);
|
|
163
|
+
// ── D11: emit ReconcileEvent to ledger ──────────────────────────────────────
|
|
164
|
+
const correlationId = `reconcile_${randomUUID().slice(0, 12)}`;
|
|
165
|
+
const evidenceHorizon = options.evidenceHorizon ?? createEvidenceHorizon(root);
|
|
166
|
+
const staleEntities = [
|
|
167
|
+
...staleTaskReviews
|
|
168
|
+
.filter((s) => s.reason === 'review-stale' && s.reviewId !== '')
|
|
169
|
+
.map((s) => ({
|
|
170
|
+
entityType: 'review',
|
|
171
|
+
entityId: s.reviewId,
|
|
172
|
+
reason: 'evidence_outdated',
|
|
173
|
+
trigger: 'P1',
|
|
174
|
+
})),
|
|
175
|
+
...staleTaskReviews
|
|
176
|
+
.filter((s) => s.reason === 'missing-review-record')
|
|
177
|
+
.map((s) => ({
|
|
178
|
+
entityType: 'task',
|
|
179
|
+
entityId: s.taskId,
|
|
180
|
+
reason: 'evidence_outdated',
|
|
181
|
+
trigger: 'P1',
|
|
182
|
+
})),
|
|
183
|
+
// D6 — map trigger to reason for ReconcileEvent
|
|
184
|
+
...reviewInvalidations.map((inv) => ({
|
|
185
|
+
entityType: 'review',
|
|
186
|
+
entityId: inv.reviewId,
|
|
187
|
+
reason: (inv.trigger === 'P2'
|
|
188
|
+
? 'result_flipped'
|
|
189
|
+
: inv.trigger === 'P1'
|
|
190
|
+
? 'commit_advanced'
|
|
191
|
+
: 'evidence_outdated'),
|
|
192
|
+
trigger: (inv.trigger ?? 'P1'),
|
|
193
|
+
})),
|
|
194
|
+
];
|
|
195
|
+
const autoAppliedEntities = [
|
|
196
|
+
...staleTaskReviews
|
|
197
|
+
.filter((s) => s.applied && s.reviewId !== '')
|
|
198
|
+
.map((s) => ({
|
|
199
|
+
entityType: 'review',
|
|
200
|
+
entityId: s.reviewId,
|
|
201
|
+
change: 'statusHint=stale',
|
|
202
|
+
})),
|
|
203
|
+
...staleTaskReviews
|
|
204
|
+
.filter((s) => s.applied && s.reason === 'missing-review-record')
|
|
205
|
+
.map((s) => ({
|
|
206
|
+
entityType: 'task',
|
|
207
|
+
entityId: s.taskId,
|
|
208
|
+
change: 'reviewStale=true',
|
|
209
|
+
})),
|
|
210
|
+
...orphanedReviews
|
|
211
|
+
.filter((o) => o.applied)
|
|
212
|
+
.map((o) => ({
|
|
213
|
+
entityType: 'review',
|
|
214
|
+
entityId: o.reviewId,
|
|
215
|
+
change: 'statusHint=stale',
|
|
216
|
+
})),
|
|
217
|
+
// D6 — applied invalidation updates
|
|
218
|
+
...reviewInvalidations
|
|
219
|
+
.filter((inv) => inv.applied)
|
|
220
|
+
.map((inv) => ({
|
|
221
|
+
entityType: 'review',
|
|
222
|
+
entityId: inv.reviewId,
|
|
223
|
+
change: `staleState=${inv.after.staleState}${inv.after.supersededBy ? `,supersededBy=${inv.after.supersededBy}` : ''}`,
|
|
224
|
+
})),
|
|
225
|
+
];
|
|
226
|
+
const requiresOperatorDecision = orphanedReviews
|
|
227
|
+
.filter((o) => !o.applied && o.reason === 'orphaned-review')
|
|
228
|
+
.map((o) => ({
|
|
229
|
+
entityType: 'review',
|
|
230
|
+
entityId: o.reviewId,
|
|
231
|
+
description: `Review ${o.reviewId} references unknown task ${o.taskId}`,
|
|
232
|
+
}));
|
|
233
|
+
const reconcileEvent = {
|
|
234
|
+
kind: 'reconcile',
|
|
235
|
+
action: 'reconcile_complete',
|
|
236
|
+
schemaVersion: 1,
|
|
237
|
+
correlationId,
|
|
238
|
+
modeType: options.modeType,
|
|
239
|
+
modeId: options.modeId,
|
|
240
|
+
evidenceHorizon,
|
|
241
|
+
staleEntities,
|
|
242
|
+
autoApplied: autoAppliedEntities,
|
|
243
|
+
requiresOperatorDecision,
|
|
244
|
+
};
|
|
245
|
+
appendLedger(root, {
|
|
246
|
+
kind: 'reconcile',
|
|
247
|
+
action: reconcileEvent.action,
|
|
248
|
+
detail: `Reconcile complete: ${staleEntities.length} stale, ${autoAppliedEntities.length} auto-applied, ${requiresOperatorDecision.length} operator-decision`,
|
|
249
|
+
metadata: reconcileEvent,
|
|
250
|
+
});
|
|
251
|
+
return {
|
|
252
|
+
assessedAt: now,
|
|
253
|
+
staleThresholdMs,
|
|
254
|
+
summary: {
|
|
255
|
+
tasksReviewed,
|
|
256
|
+
staleTaskReviews: staleTaskReviews.length,
|
|
257
|
+
orphanedReviews: orphanedReviews.length,
|
|
258
|
+
reviewInvalidations: reviewInvalidations.length,
|
|
259
|
+
autoApplied,
|
|
260
|
+
status: changed ? 'reconciled' : 'unchanged',
|
|
261
|
+
},
|
|
262
|
+
staleTaskReviews,
|
|
263
|
+
orphanedReviews,
|
|
264
|
+
reviewInvalidations,
|
|
265
|
+
};
|
|
266
|
+
}
|
|
267
|
+
//# sourceMappingURL=workflowReconcile.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workflowReconcile.js","sourceRoot":"","sources":["../../../../src/shared/workflow/closure/workflowReconcile.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import { type OperatorAuthority, type StopVerdict, type OperatorTask } from '../../../operator/operatorCore.js';
|
|
2
|
+
export type ContinuationStatus = 'idle' | 'blocked' | 'cleared';
|
|
3
|
+
export type ContinuationLane = 'ralph' | 'ultrawork' | 'autopilot' | 'team' | 'none';
|
|
4
|
+
export interface ContinuationState {
|
|
5
|
+
schemaVersion: 1;
|
|
6
|
+
status: ContinuationStatus;
|
|
7
|
+
lane: ContinuationLane;
|
|
8
|
+
laneId: string | null;
|
|
9
|
+
blockedAt: string | null;
|
|
10
|
+
clearedAt: string | null;
|
|
11
|
+
updatedAt: string;
|
|
12
|
+
denyCount: number;
|
|
13
|
+
lastProgressAt: string | null;
|
|
14
|
+
lastProgressSource: string | null;
|
|
15
|
+
reason: string | null;
|
|
16
|
+
blockers: string[];
|
|
17
|
+
blockerCategories: string[];
|
|
18
|
+
recommendedTools: string[];
|
|
19
|
+
resumeHint: string | null;
|
|
20
|
+
lastSessionId: string | null;
|
|
21
|
+
lastTranscriptPath: string | null;
|
|
22
|
+
idleTurnCount: number;
|
|
23
|
+
reminderCount: number;
|
|
24
|
+
lastReminderAt: string | null;
|
|
25
|
+
lastReminderSource: string | null;
|
|
26
|
+
lastSessionEndAt: string | null;
|
|
27
|
+
lastActivityAt: string | null;
|
|
28
|
+
lastActivitySource: string | null;
|
|
29
|
+
idleThresholdMs: number;
|
|
30
|
+
pendingTaskIds: string[];
|
|
31
|
+
pendingTaskTitles: string[];
|
|
32
|
+
pendingReviewTaskIds: string[];
|
|
33
|
+
pendingMessageIds: string[];
|
|
34
|
+
consecutiveFailureCount: number;
|
|
35
|
+
laneSyncGatedAt: string | null;
|
|
36
|
+
/** Phase 2 — child agent ids currently running under the parent session (best-effort). */
|
|
37
|
+
activeSubagentIds?: string[];
|
|
38
|
+
lastSubagentLifecycleAt?: string | null;
|
|
39
|
+
lastSubagentLifecycleSource?: string | null;
|
|
40
|
+
}
|
|
41
|
+
export interface LogicalIdleStatus {
|
|
42
|
+
lastActivityAt: string | null;
|
|
43
|
+
lastActivitySource: string | null;
|
|
44
|
+
idleThresholdMs: number;
|
|
45
|
+
idleDurationMs: number | null;
|
|
46
|
+
isLogicalIdle: boolean;
|
|
47
|
+
}
|
|
48
|
+
export type { ContinuationEventReservationResult } from '../../../shared/workflow/continuation/continuationEventReservations.js';
|
|
49
|
+
export { reserveContinuationEvent, clearContinuationEventReservations } from '../../../shared/workflow/continuation/continuationEventReservations.js';
|
|
50
|
+
export declare const FAILURE_ESCALATION_THRESHOLD = 3;
|
|
51
|
+
export declare const LANE_SYNC_GATE_THRESHOLD = 8;
|
|
52
|
+
export declare function readContinuationState(root: string): ContinuationState;
|
|
53
|
+
export declare function writeContinuationState(root: string, state: ContinuationState): ContinuationState;
|
|
54
|
+
export declare function logicalIdleStatus(state: ContinuationState, nowMs?: number): LogicalIdleStatus;
|
|
55
|
+
export declare function readLogicalIdleStatus(root: string, nowMs?: number): LogicalIdleStatus;
|
|
56
|
+
export declare function touchContinuationActivity(root: string, source: string): ContinuationState;
|
|
57
|
+
export interface ContinuationGuidance {
|
|
58
|
+
lane: ContinuationLane;
|
|
59
|
+
laneId: string | null;
|
|
60
|
+
recommendedTools: string[];
|
|
61
|
+
resumeHint: string;
|
|
62
|
+
pendingTaskIds: string[];
|
|
63
|
+
pendingTaskTitles: string[];
|
|
64
|
+
pendingLocalTaskIds: string[];
|
|
65
|
+
pendingLocalTaskTitles: string[];
|
|
66
|
+
pendingReviewTaskIds: string[];
|
|
67
|
+
pendingMessageIds: string[];
|
|
68
|
+
}
|
|
69
|
+
export declare function hasPendingLocalTasks(input: Pick<ContinuationGuidance, 'pendingLocalTaskIds'>): boolean;
|
|
70
|
+
export declare function hasPendingReviewOrMessage(guidance: Pick<ContinuationGuidance, 'pendingReviewTaskIds' | 'pendingMessageIds'>): boolean;
|
|
71
|
+
export declare function formatMandatoryLocalContinuationContext(guidance: Pick<ContinuationGuidance, 'pendingLocalTaskIds' | 'resumeHint'>, before: string): string | null;
|
|
72
|
+
export declare function continuationReminderThresholdForGuidance(guidance: Pick<ContinuationGuidance, 'pendingLocalTaskIds'>, threshold?: number): number;
|
|
73
|
+
export declare function isLaneSyncGated(state: ContinuationState, guidance: Pick<ContinuationGuidance, 'pendingLocalTaskIds'>, threshold?: number): boolean;
|
|
74
|
+
export interface TeamContinuationPayload {
|
|
75
|
+
id: string;
|
|
76
|
+
active: boolean;
|
|
77
|
+
taskQueue: string[];
|
|
78
|
+
executors: Array<{
|
|
79
|
+
pendingInjectedMessageIds: string[];
|
|
80
|
+
assignedTaskIds: string[];
|
|
81
|
+
}>;
|
|
82
|
+
}
|
|
83
|
+
export declare function buildTeamContinuationGuidance(team: TeamContinuationPayload, tasks: OperatorTask[], inbox: Array<{
|
|
84
|
+
status: string;
|
|
85
|
+
}>): ContinuationGuidance;
|
|
86
|
+
export declare function refreshContinuationTeamSignals(root: string, team: TeamContinuationPayload | null, tasks: OperatorTask[], inbox: Array<{
|
|
87
|
+
status: string;
|
|
88
|
+
}>, source: string, progressNote: string): ContinuationState;
|
|
89
|
+
export declare function recordSubagentStartedOnContinuation(root: string, agentId: string, source: string): ContinuationState;
|
|
90
|
+
export declare function recordSubagentStoppedOnContinuation(root: string, agentId: string, source: string): ContinuationState;
|
|
91
|
+
export declare function buildContinuationGuidance(authority: OperatorAuthority): ContinuationGuidance;
|
|
92
|
+
export declare function markContinuationBlocked(root: string, authority: OperatorAuthority, verdict: StopVerdict, input?: {
|
|
93
|
+
sessionId?: string | null;
|
|
94
|
+
transcriptPath?: string | null;
|
|
95
|
+
}): ContinuationState;
|
|
96
|
+
export declare function clearContinuationState(root: string, reason: string, source: string): ContinuationState;
|
|
97
|
+
export declare function recordContinuationFailure(root: string, authority: OperatorAuthority, source: string): ContinuationState;
|
|
98
|
+
export declare function clearConsecutiveFailures(root: string, source: string): ContinuationState;
|
|
99
|
+
export declare function resetContinuationState(root: string, reason: string, source: string): ContinuationState;
|
|
100
|
+
export declare function recordContinuationObservation(root: string, authority: OperatorAuthority, source: string): ContinuationState;
|
|
101
|
+
export declare function maybeRecordContinuationReminder(root: string, authority: OperatorAuthority, source: string, threshold?: number): {
|
|
102
|
+
state: ContinuationState;
|
|
103
|
+
remind: boolean;
|
|
104
|
+
};
|
|
105
|
+
export declare function recordContinuationSessionEnd(root: string, authority: OperatorAuthority, input?: {
|
|
106
|
+
sessionId?: string | null;
|
|
107
|
+
transcriptPath?: string | null;
|
|
108
|
+
}): ContinuationState;
|
|
109
|
+
//# sourceMappingURL=continuation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"continuation.d.ts","sourceRoot":"","sources":["../../../../src/shared/workflow/continuation/continuation.ts"],"names":[],"mappings":"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"}
|