@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,91 @@
|
|
|
1
|
+
import { existsSync, readdirSync, rmSync } from 'node:fs';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
import { layoutDir, ensureLayout, stateFile } from '../../shared/core/contract.js';
|
|
4
|
+
import { readJsonFile, validateJsonFile, writeJson } from '../../shared/core/json.js';
|
|
5
|
+
const MODE_STATE_SCHEMA_VERSION = 1;
|
|
6
|
+
const OperatorModeStateSchema = z.object({
|
|
7
|
+
schemaVersion: z.literal(MODE_STATE_SCHEMA_VERSION),
|
|
8
|
+
mode: z.string(),
|
|
9
|
+
data: z.unknown(),
|
|
10
|
+
updatedAt: z.string(),
|
|
11
|
+
});
|
|
12
|
+
function migrateModeState(mode, fallback, raw) {
|
|
13
|
+
// Legacy migration: older builds persisted some mode states as a bare top-level array
|
|
14
|
+
// (e.g. the raw workItems list) before the envelope schema existed. Wrap such a value as
|
|
15
|
+
// `data` instead of throwing, so stale on-disk state self-heals on the next write rather
|
|
16
|
+
// than hard-failing every operator hook (SessionStart/Stop/etc.).
|
|
17
|
+
if (Array.isArray(raw)) {
|
|
18
|
+
return {
|
|
19
|
+
schemaVersion: MODE_STATE_SCHEMA_VERSION,
|
|
20
|
+
mode,
|
|
21
|
+
data: raw,
|
|
22
|
+
updatedAt: new Date().toISOString(),
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
if (raw === null || typeof raw !== 'object') {
|
|
26
|
+
throw new Error(`Mode state for ${mode} must be an object.`);
|
|
27
|
+
}
|
|
28
|
+
const state = raw;
|
|
29
|
+
const schemaVersion = typeof state.schemaVersion === 'number' ? state.schemaVersion : 0;
|
|
30
|
+
if (schemaVersion !== 0 && schemaVersion !== MODE_STATE_SCHEMA_VERSION) {
|
|
31
|
+
throw new Error(`Unsupported schemaVersion ${schemaVersion} for mode ${mode}.`);
|
|
32
|
+
}
|
|
33
|
+
return {
|
|
34
|
+
schemaVersion: MODE_STATE_SCHEMA_VERSION,
|
|
35
|
+
mode: typeof state.mode === 'string' ? state.mode : mode,
|
|
36
|
+
data: (state.data ?? fallback),
|
|
37
|
+
updatedAt: typeof state.updatedAt === 'string' ? state.updatedAt : new Date().toISOString(),
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
export function readModeState(root, mode, fallback) {
|
|
41
|
+
ensureLayout(root);
|
|
42
|
+
const path = stateFile(root, mode);
|
|
43
|
+
const raw = readJsonFile(path);
|
|
44
|
+
if (raw === undefined) {
|
|
45
|
+
return {
|
|
46
|
+
schemaVersion: MODE_STATE_SCHEMA_VERSION,
|
|
47
|
+
mode,
|
|
48
|
+
data: fallback,
|
|
49
|
+
updatedAt: new Date().toISOString(),
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
return validateJsonFile(path, migrateModeState(mode, fallback, raw), OperatorModeStateSchema);
|
|
53
|
+
}
|
|
54
|
+
export function writeModeState(root, mode, data, options = {}) {
|
|
55
|
+
ensureLayout(root);
|
|
56
|
+
const existing = readModeState(root, mode, data);
|
|
57
|
+
const merged = options.replace
|
|
58
|
+
? data
|
|
59
|
+
: typeof existing.data === 'object'
|
|
60
|
+
&& existing.data !== null
|
|
61
|
+
&& !Array.isArray(existing.data)
|
|
62
|
+
&& typeof data === 'object'
|
|
63
|
+
&& data !== null
|
|
64
|
+
&& !Array.isArray(data)
|
|
65
|
+
? { ...existing.data, ...data }
|
|
66
|
+
: data;
|
|
67
|
+
const next = {
|
|
68
|
+
schemaVersion: MODE_STATE_SCHEMA_VERSION,
|
|
69
|
+
mode,
|
|
70
|
+
data: merged,
|
|
71
|
+
updatedAt: new Date().toISOString(),
|
|
72
|
+
};
|
|
73
|
+
writeJson(stateFile(root, mode), next);
|
|
74
|
+
return next;
|
|
75
|
+
}
|
|
76
|
+
export function clearModeState(root, mode) {
|
|
77
|
+
ensureLayout(root);
|
|
78
|
+
const path = stateFile(root, mode);
|
|
79
|
+
const cleared = existsSync(path);
|
|
80
|
+
rmSync(path, { force: true });
|
|
81
|
+
return { mode, cleared };
|
|
82
|
+
}
|
|
83
|
+
export function listModeStates(root) {
|
|
84
|
+
ensureLayout(root);
|
|
85
|
+
const stateDir = `${layoutDir(root)}/state`;
|
|
86
|
+
return readdirSync(stateDir, { withFileTypes: true })
|
|
87
|
+
.filter((entry) => entry.isFile() && entry.name.endsWith('.json'))
|
|
88
|
+
.map((entry) => entry.name.replace(/\.json$/, ''))
|
|
89
|
+
.sort();
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=state.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"state.js","sourceRoot":"","sources":["../../../src/shared/state/state.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
export type OperatorTaskStatus = 'pending' | 'queued' | 'in_progress' | 'blocked' | 'review' | 'superseded' | 'completed' | 'failed' | 'cancelled';
|
|
2
|
+
export interface OperatorTaskEvent {
|
|
3
|
+
status: OperatorTaskStatus;
|
|
4
|
+
at: string;
|
|
5
|
+
by?: string;
|
|
6
|
+
note?: string;
|
|
7
|
+
}
|
|
8
|
+
export type ClosureScope = 'lane-local' | 'integration' | 'repo-end-to-end';
|
|
9
|
+
export interface OperatorTask {
|
|
10
|
+
schemaVersion: 1;
|
|
11
|
+
id: string;
|
|
12
|
+
externalId: string;
|
|
13
|
+
/** Optional factory/board assignment reference (opaque). */
|
|
14
|
+
assignmentRef?: string;
|
|
15
|
+
title: string;
|
|
16
|
+
kind: string;
|
|
17
|
+
phase: string;
|
|
18
|
+
status: OperatorTaskStatus;
|
|
19
|
+
priority: 'low' | 'medium' | 'high';
|
|
20
|
+
owner?: string;
|
|
21
|
+
worktree?: {
|
|
22
|
+
branchName?: string;
|
|
23
|
+
worktreePath?: string;
|
|
24
|
+
ownerAgent?: string;
|
|
25
|
+
leaseExpiresAt?: string;
|
|
26
|
+
};
|
|
27
|
+
verify: string[];
|
|
28
|
+
notes: string[];
|
|
29
|
+
metadata: Record<string, unknown>;
|
|
30
|
+
dependencies: string[];
|
|
31
|
+
blockers: string[];
|
|
32
|
+
reviewStatus: 'none' | 'pending' | 'approved' | 'changes_requested';
|
|
33
|
+
/** Phase 5: additive convergence metadata. */
|
|
34
|
+
reviewStale?: boolean;
|
|
35
|
+
blockerStale?: boolean;
|
|
36
|
+
evidenceOutdated?: boolean;
|
|
37
|
+
claimedAt?: string;
|
|
38
|
+
completedAt?: string;
|
|
39
|
+
result?: string;
|
|
40
|
+
history: OperatorTaskEvent[];
|
|
41
|
+
createdAt: string;
|
|
42
|
+
updatedAt: string;
|
|
43
|
+
/** Phase 3: closure scope. Stored independently — never re-derived at read time. */
|
|
44
|
+
closureScope?: ClosureScope;
|
|
45
|
+
}
|
|
46
|
+
export interface CreateTaskInput {
|
|
47
|
+
title: string;
|
|
48
|
+
kind?: string;
|
|
49
|
+
phase?: string;
|
|
50
|
+
priority?: OperatorTask['priority'];
|
|
51
|
+
verify?: string[];
|
|
52
|
+
notes?: string[];
|
|
53
|
+
metadata?: Record<string, unknown>;
|
|
54
|
+
dependencies?: string[];
|
|
55
|
+
}
|
|
56
|
+
export type LaneTrackerMode = 'autopilot' | 'ralph' | 'ultrawork' | 'team';
|
|
57
|
+
export interface LaneTrackerTaskOptions {
|
|
58
|
+
title: string;
|
|
59
|
+
ownerMode: LaneTrackerMode;
|
|
60
|
+
ownerStateId: string;
|
|
61
|
+
phase?: string;
|
|
62
|
+
priority?: OperatorTask['priority'];
|
|
63
|
+
initialStatus?: OperatorTaskStatus;
|
|
64
|
+
closureScope?: ClosureScope;
|
|
65
|
+
goalScope?: string;
|
|
66
|
+
gateProfile?: string;
|
|
67
|
+
}
|
|
68
|
+
export interface UpsertOperatorTaskInput {
|
|
69
|
+
externalId: string;
|
|
70
|
+
/** Optional factory/board assignment reference (opaque). */
|
|
71
|
+
assignmentRef?: string;
|
|
72
|
+
title: string;
|
|
73
|
+
kind?: string;
|
|
74
|
+
phase?: string;
|
|
75
|
+
status: OperatorTaskStatus;
|
|
76
|
+
priority?: OperatorTask['priority'];
|
|
77
|
+
owner?: string;
|
|
78
|
+
worktree?: OperatorTask['worktree'];
|
|
79
|
+
verify?: string[];
|
|
80
|
+
notes?: string[];
|
|
81
|
+
metadata?: Record<string, unknown>;
|
|
82
|
+
dependencies?: string[];
|
|
83
|
+
blockers?: string[];
|
|
84
|
+
reviewStatus?: OperatorTask['reviewStatus'];
|
|
85
|
+
closureScope?: ClosureScope;
|
|
86
|
+
}
|
|
87
|
+
export declare function createTask(root: string, input: CreateTaskInput): OperatorTask;
|
|
88
|
+
export declare function isLaneTrackerTask(task: OperatorTask, ownerMode?: LaneTrackerMode, ownerStateId?: string): boolean;
|
|
89
|
+
export declare function createLaneTrackerTask(root: string, options: LaneTrackerTaskOptions): OperatorTask;
|
|
90
|
+
export declare function syncLaneTrackerTasks(root: string, options: {
|
|
91
|
+
ownerMode: LaneTrackerMode;
|
|
92
|
+
ownerStateId: string;
|
|
93
|
+
taskIds: string[];
|
|
94
|
+
status?: OperatorTaskStatus;
|
|
95
|
+
title?: string;
|
|
96
|
+
result?: string;
|
|
97
|
+
closureScope?: ClosureScope;
|
|
98
|
+
}): OperatorTask[];
|
|
99
|
+
export declare function getTask(root: string, taskId: string): OperatorTask | null;
|
|
100
|
+
export declare function updateTask(root: string, taskId: string, patch: Partial<Omit<OperatorTask, 'id' | 'createdAt' | 'history'>>, actor?: string): OperatorTask | null;
|
|
101
|
+
export declare function listTasks(root: string, status?: OperatorTaskStatus): OperatorTask[];
|
|
102
|
+
export declare function deleteTask(root: string, taskId: string): {
|
|
103
|
+
taskId: string;
|
|
104
|
+
deleted: boolean;
|
|
105
|
+
};
|
|
106
|
+
export declare function clearTasks(root: string): {
|
|
107
|
+
cleared: number;
|
|
108
|
+
};
|
|
109
|
+
export declare function upsertTask(root: string, input: UpsertOperatorTaskInput, actor?: string): {
|
|
110
|
+
task: OperatorTask;
|
|
111
|
+
previous: OperatorTask | null;
|
|
112
|
+
};
|
|
113
|
+
//# sourceMappingURL=tasks.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tasks.d.ts","sourceRoot":"","sources":["../../../src/shared/state/tasks.ts"],"names":[],"mappings":"AAMA,MAAM,MAAM,kBAAkB,GAC1B,SAAS,GACT,QAAQ,GACR,aAAa,GACb,SAAS,GACT,QAAQ,GACR,YAAY,GACZ,WAAW,GACX,QAAQ,GACR,WAAW,CAAC;AAEhB,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,kBAAkB,CAAC;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,MAAM,YAAY,GAAG,YAAY,GAAG,aAAa,GAAG,iBAAiB,CAAC;AAE5E,MAAM,WAAW,YAAY;IAC3B,aAAa,EAAE,CAAC,CAAC;IACjB,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,4DAA4D;IAC5D,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,kBAAkB,CAAC;IAC3B,QAAQ,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;IACpC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE;QACT,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,cAAc,CAAC,EAAE,MAAM,CAAC;KACzB,CAAC;IACF,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,YAAY,EAAE,MAAM,GAAG,SAAS,GAAG,UAAU,GAAG,mBAAmB,CAAC;IACpE,8CAA8C;IAC9C,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,iBAAiB,EAAE,CAAC;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,oFAAoF;IACpF,YAAY,CAAC,EAAE,YAAY,CAAC;CAC7B;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,YAAY,CAAC,UAAU,CAAC,CAAC;IACpC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB;AAED,MAAM,MAAM,eAAe,GAAG,WAAW,GAAG,OAAO,GAAG,WAAW,GAAG,MAAM,CAAC;AAE3E,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,eAAe,CAAC;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,YAAY,CAAC,UAAU,CAAC,CAAC;IACpC,aAAa,CAAC,EAAE,kBAAkB,CAAC;IACnC,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,uBAAuB;IACtC,UAAU,EAAE,MAAM,CAAC;IACnB,4DAA4D;IAC5D,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,kBAAkB,CAAC;IAC3B,QAAQ,CAAC,EAAE,YAAY,CAAC,UAAU,CAAC,CAAC;IACpC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,YAAY,CAAC,UAAU,CAAC,CAAC;IACpC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,YAAY,CAAC,EAAE,YAAY,CAAC,cAAc,CAAC,CAAC;IAC5C,YAAY,CAAC,EAAE,YAAY,CAAC;CAC7B;AAuFD,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,GAAG,YAAY,CA0B7E;AAED,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,YAAY,EAClB,SAAS,CAAC,EAAE,eAAe,EAC3B,YAAY,CAAC,EAAE,MAAM,GACpB,OAAO,CAQT;AAED,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,sBAAsB,GAC9B,YAAY,CA4Bd;AAED,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE;IACP,SAAS,EAAE,eAAe,CAAC;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,MAAM,CAAC,EAAE,kBAAkB,CAAC;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,YAAY,CAAC;CAC7B,GACA,YAAY,EAAE,CAsBhB;AAED,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CAEzE;AAED,wBAAgB,UAAU,CACxB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,GAAG,WAAW,GAAG,SAAS,CAAC,CAAC,EAClE,KAAK,CAAC,EAAE,MAAM,GACb,YAAY,GAAG,IAAI,CAkDrB;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,kBAAkB,GAAG,YAAY,EAAE,CAGnF;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAQ7F;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,CAI5D;AAED,wBAAgB,UAAU,CACxB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,uBAAuB,EAC9B,KAAK,CAAC,EAAE,MAAM,GACb;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,QAAQ,EAAE,YAAY,GAAG,IAAI,CAAA;CAAE,CAmDvD"}
|
|
@@ -0,0 +1,274 @@
|
|
|
1
|
+
import { randomUUID } from 'node:crypto';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
import { tasksFile } from '../../shared/core/contract.js';
|
|
4
|
+
import { readJsonFile, validateJsonFile, writeJson } from '../../shared/core/json.js';
|
|
5
|
+
import { emitEvent } from '../../shared/observability/emit.js';
|
|
6
|
+
const TASK_SCHEMA_VERSION = 1;
|
|
7
|
+
const OperatorTaskEventSchema = z.object({
|
|
8
|
+
status: z.enum(['pending', 'queued', 'in_progress', 'blocked', 'review', 'superseded', 'completed', 'failed', 'cancelled']),
|
|
9
|
+
at: z.string(),
|
|
10
|
+
by: z.string().optional(),
|
|
11
|
+
note: z.string().optional(),
|
|
12
|
+
});
|
|
13
|
+
const OperatorTaskWorktreeSchema = z.object({
|
|
14
|
+
branchName: z.string().optional(),
|
|
15
|
+
worktreePath: z.string().optional(),
|
|
16
|
+
ownerAgent: z.string().optional(),
|
|
17
|
+
leaseExpiresAt: z.string().optional(),
|
|
18
|
+
});
|
|
19
|
+
const OperatorTaskSchema = z.object({
|
|
20
|
+
schemaVersion: z.literal(TASK_SCHEMA_VERSION),
|
|
21
|
+
id: z.string(),
|
|
22
|
+
externalId: z.string(),
|
|
23
|
+
assignmentRef: z.string().optional(),
|
|
24
|
+
title: z.string(),
|
|
25
|
+
kind: z.string(),
|
|
26
|
+
phase: z.string(),
|
|
27
|
+
status: z.enum(['pending', 'queued', 'in_progress', 'blocked', 'review', 'superseded', 'completed', 'failed', 'cancelled']),
|
|
28
|
+
priority: z.enum(['low', 'medium', 'high']),
|
|
29
|
+
owner: z.string().optional(),
|
|
30
|
+
worktree: OperatorTaskWorktreeSchema.optional(),
|
|
31
|
+
verify: z.array(z.string()),
|
|
32
|
+
notes: z.array(z.string()),
|
|
33
|
+
metadata: z.record(z.string(), z.unknown()),
|
|
34
|
+
dependencies: z.array(z.string()),
|
|
35
|
+
blockers: z.array(z.string()),
|
|
36
|
+
reviewStatus: z.enum(['none', 'pending', 'approved', 'changes_requested']),
|
|
37
|
+
reviewStale: z.boolean().optional(),
|
|
38
|
+
blockerStale: z.boolean().optional(),
|
|
39
|
+
evidenceOutdated: z.boolean().optional(),
|
|
40
|
+
claimedAt: z.string().optional(),
|
|
41
|
+
completedAt: z.string().optional(),
|
|
42
|
+
result: z.string().optional(),
|
|
43
|
+
history: z.array(OperatorTaskEventSchema),
|
|
44
|
+
createdAt: z.string(),
|
|
45
|
+
updatedAt: z.string(),
|
|
46
|
+
closureScope: z.enum(['lane-local', 'integration', 'repo-end-to-end']).optional(),
|
|
47
|
+
});
|
|
48
|
+
function now() {
|
|
49
|
+
return new Date().toISOString();
|
|
50
|
+
}
|
|
51
|
+
function migrateTaskRecord(raw) {
|
|
52
|
+
if (raw === null || typeof raw !== 'object' || Array.isArray(raw)) {
|
|
53
|
+
throw new Error('task record must be an object');
|
|
54
|
+
}
|
|
55
|
+
const record = raw;
|
|
56
|
+
const schemaVersion = typeof record.schemaVersion === 'number' ? record.schemaVersion : 0;
|
|
57
|
+
if (schemaVersion !== 0 && schemaVersion !== TASK_SCHEMA_VERSION) {
|
|
58
|
+
throw new Error(`unsupported schemaVersion ${schemaVersion}`);
|
|
59
|
+
}
|
|
60
|
+
return {
|
|
61
|
+
...record,
|
|
62
|
+
schemaVersion: TASK_SCHEMA_VERSION,
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
function load(root) {
|
|
66
|
+
const path = tasksFile(root);
|
|
67
|
+
const raw = readJsonFile(path);
|
|
68
|
+
if (raw === undefined) {
|
|
69
|
+
return [];
|
|
70
|
+
}
|
|
71
|
+
if (!Array.isArray(raw)) {
|
|
72
|
+
throw new Error(`task state at ${path} must be an array.`);
|
|
73
|
+
}
|
|
74
|
+
return raw.map((entry, index) => validateJsonFile(`${path}[${index}]`, migrateTaskRecord(entry), OperatorTaskSchema));
|
|
75
|
+
}
|
|
76
|
+
function save(root, tasks) {
|
|
77
|
+
writeJson(tasksFile(root), tasks);
|
|
78
|
+
}
|
|
79
|
+
export function createTask(root, input) {
|
|
80
|
+
const createdAt = now();
|
|
81
|
+
const id = `task_${randomUUID().slice(0, 12)}`;
|
|
82
|
+
const task = {
|
|
83
|
+
schemaVersion: TASK_SCHEMA_VERSION,
|
|
84
|
+
id,
|
|
85
|
+
externalId: id,
|
|
86
|
+
title: input.title,
|
|
87
|
+
kind: input.kind ?? 'general',
|
|
88
|
+
phase: input.phase ?? 'default',
|
|
89
|
+
status: 'pending',
|
|
90
|
+
priority: input.priority ?? 'medium',
|
|
91
|
+
verify: input.verify ?? [],
|
|
92
|
+
notes: input.notes ?? [],
|
|
93
|
+
metadata: input.metadata ?? {},
|
|
94
|
+
dependencies: input.dependencies ?? [],
|
|
95
|
+
blockers: [],
|
|
96
|
+
reviewStatus: 'none',
|
|
97
|
+
history: [{ status: 'pending', at: createdAt, note: 'task created' }],
|
|
98
|
+
createdAt,
|
|
99
|
+
updatedAt: createdAt,
|
|
100
|
+
};
|
|
101
|
+
const tasks = load(root);
|
|
102
|
+
tasks.push(task);
|
|
103
|
+
save(root, tasks);
|
|
104
|
+
return task;
|
|
105
|
+
}
|
|
106
|
+
export function isLaneTrackerTask(task, ownerMode, ownerStateId) {
|
|
107
|
+
const trackerKind = task.metadata?.['trackerKind'];
|
|
108
|
+
const trackerMode = task.metadata?.['ownerMode'];
|
|
109
|
+
const trackerStateId = task.metadata?.['ownerStateId'];
|
|
110
|
+
if (trackerKind !== 'lane-bootstrap')
|
|
111
|
+
return false;
|
|
112
|
+
if (ownerMode && trackerMode !== ownerMode)
|
|
113
|
+
return false;
|
|
114
|
+
if (ownerStateId && trackerStateId !== ownerStateId)
|
|
115
|
+
return false;
|
|
116
|
+
return true;
|
|
117
|
+
}
|
|
118
|
+
export function createLaneTrackerTask(root, options) {
|
|
119
|
+
const created = createTask(root, {
|
|
120
|
+
title: options.title,
|
|
121
|
+
kind: 'lane-tracker',
|
|
122
|
+
phase: options.phase ?? options.ownerMode,
|
|
123
|
+
priority: options.priority ?? 'medium',
|
|
124
|
+
metadata: {
|
|
125
|
+
trackerKind: 'lane-bootstrap',
|
|
126
|
+
localOnly: true,
|
|
127
|
+
ownerMode: options.ownerMode,
|
|
128
|
+
ownerStateId: options.ownerStateId,
|
|
129
|
+
...(options.goalScope ? { goalScope: options.goalScope } : {}),
|
|
130
|
+
...(options.gateProfile ? { gateProfile: options.gateProfile } : {}),
|
|
131
|
+
},
|
|
132
|
+
});
|
|
133
|
+
const initialStatus = options.initialStatus ?? 'pending';
|
|
134
|
+
if (initialStatus === 'pending' && options.closureScope === undefined) {
|
|
135
|
+
return created;
|
|
136
|
+
}
|
|
137
|
+
return updateTask(root, created.id, {
|
|
138
|
+
status: initialStatus,
|
|
139
|
+
...(options.closureScope ? { closureScope: options.closureScope } : {}),
|
|
140
|
+
}, 'enact-operator') ?? created;
|
|
141
|
+
}
|
|
142
|
+
export function syncLaneTrackerTasks(root, options) {
|
|
143
|
+
const ids = new Set(options.taskIds);
|
|
144
|
+
const trackers = listTasks(root).filter((task) => ids.has(task.id)
|
|
145
|
+
&& isLaneTrackerTask(task, options.ownerMode, options.ownerStateId));
|
|
146
|
+
return trackers
|
|
147
|
+
.map((task) => updateTask(root, task.id, {
|
|
148
|
+
...(options.status ? { status: options.status } : {}),
|
|
149
|
+
...(options.title ? { title: options.title } : {}),
|
|
150
|
+
...(options.result ? { result: options.result } : {}),
|
|
151
|
+
...(options.closureScope ? { closureScope: options.closureScope } : {}),
|
|
152
|
+
}, 'enact-operator'))
|
|
153
|
+
.filter((task) => task !== null);
|
|
154
|
+
}
|
|
155
|
+
export function getTask(root, taskId) {
|
|
156
|
+
return load(root).find((task) => task.id === taskId) ?? null;
|
|
157
|
+
}
|
|
158
|
+
export function updateTask(root, taskId, patch, actor) {
|
|
159
|
+
const tasks = load(root);
|
|
160
|
+
const index = tasks.findIndex((task) => task.id === taskId);
|
|
161
|
+
if (index === -1) {
|
|
162
|
+
return null;
|
|
163
|
+
}
|
|
164
|
+
const current = tasks[index];
|
|
165
|
+
const nextStatus = patch.status ?? current.status;
|
|
166
|
+
const history = nextStatus !== current.status
|
|
167
|
+
? [
|
|
168
|
+
...current.history,
|
|
169
|
+
{
|
|
170
|
+
status: nextStatus,
|
|
171
|
+
at: now(),
|
|
172
|
+
by: actor,
|
|
173
|
+
note: typeof patch.result === 'string' ? patch.result : undefined,
|
|
174
|
+
},
|
|
175
|
+
]
|
|
176
|
+
: current.history;
|
|
177
|
+
const next = {
|
|
178
|
+
...current,
|
|
179
|
+
...patch,
|
|
180
|
+
schemaVersion: TASK_SCHEMA_VERSION,
|
|
181
|
+
history,
|
|
182
|
+
updatedAt: now(),
|
|
183
|
+
};
|
|
184
|
+
tasks[index] = next;
|
|
185
|
+
save(root, tasks);
|
|
186
|
+
if (nextStatus !== current.status) {
|
|
187
|
+
void emitEvent({
|
|
188
|
+
schema_version: 'enact.raw.v1',
|
|
189
|
+
source: 'enact-operator',
|
|
190
|
+
event_type: 'state.transition',
|
|
191
|
+
session_id: (typeof next.metadata?.sessionId === 'string' && next.metadata.sessionId)
|
|
192
|
+
|| 'unknown',
|
|
193
|
+
run_id: next.assignmentRef ?? next.id,
|
|
194
|
+
ts: now(),
|
|
195
|
+
payload: {
|
|
196
|
+
'openinference.span.kind': 'CHAIN',
|
|
197
|
+
'enact.entity': 'task',
|
|
198
|
+
'enact.entity_id': next.id,
|
|
199
|
+
'enact.from_state': current.status,
|
|
200
|
+
'enact.to_state': next.status,
|
|
201
|
+
'enact.actor': actor ?? 'system',
|
|
202
|
+
},
|
|
203
|
+
});
|
|
204
|
+
}
|
|
205
|
+
return next;
|
|
206
|
+
}
|
|
207
|
+
export function listTasks(root, status) {
|
|
208
|
+
const tasks = load(root);
|
|
209
|
+
return status ? tasks.filter((task) => task.status === status) : tasks;
|
|
210
|
+
}
|
|
211
|
+
export function deleteTask(root, taskId) {
|
|
212
|
+
const tasks = load(root);
|
|
213
|
+
const next = tasks.filter((task) => task.id !== taskId);
|
|
214
|
+
const deleted = next.length !== tasks.length;
|
|
215
|
+
if (deleted) {
|
|
216
|
+
save(root, next);
|
|
217
|
+
}
|
|
218
|
+
return { taskId, deleted };
|
|
219
|
+
}
|
|
220
|
+
export function clearTasks(root) {
|
|
221
|
+
const tasks = load(root);
|
|
222
|
+
save(root, []);
|
|
223
|
+
return { cleared: tasks.length };
|
|
224
|
+
}
|
|
225
|
+
export function upsertTask(root, input, actor) {
|
|
226
|
+
const tasks = load(root);
|
|
227
|
+
const index = tasks.findIndex((task) => task.externalId === input.externalId);
|
|
228
|
+
const previous = index >= 0 ? tasks[index] : null;
|
|
229
|
+
const timestamp = now();
|
|
230
|
+
const statusChanged = previous ? previous.status !== input.status : true;
|
|
231
|
+
const history = previous
|
|
232
|
+
? statusChanged
|
|
233
|
+
? [
|
|
234
|
+
...previous.history,
|
|
235
|
+
{ status: input.status, at: timestamp, by: actor, note: input.notes?.[0] },
|
|
236
|
+
]
|
|
237
|
+
: previous.history
|
|
238
|
+
: [
|
|
239
|
+
{ status: input.status, at: timestamp, by: actor, note: input.notes?.[0] },
|
|
240
|
+
];
|
|
241
|
+
const next = {
|
|
242
|
+
schemaVersion: TASK_SCHEMA_VERSION,
|
|
243
|
+
id: previous?.id ?? `operator_task_${randomUUID().slice(0, 12)}`,
|
|
244
|
+
externalId: input.externalId,
|
|
245
|
+
assignmentRef: input.assignmentRef ?? previous?.assignmentRef,
|
|
246
|
+
title: input.title,
|
|
247
|
+
kind: input.kind ?? previous?.kind ?? 'operator-lane',
|
|
248
|
+
phase: input.phase ?? previous?.phase ?? 'operator',
|
|
249
|
+
status: input.status,
|
|
250
|
+
priority: input.priority ?? previous?.priority ?? 'medium',
|
|
251
|
+
owner: input.owner ?? previous?.owner,
|
|
252
|
+
worktree: input.worktree ?? previous?.worktree,
|
|
253
|
+
verify: input.verify ?? previous?.verify ?? [],
|
|
254
|
+
notes: input.notes ?? previous?.notes ?? [],
|
|
255
|
+
metadata: input.metadata ?? previous?.metadata ?? {},
|
|
256
|
+
dependencies: input.dependencies ?? previous?.dependencies ?? [],
|
|
257
|
+
blockers: input.blockers ?? previous?.blockers ?? [],
|
|
258
|
+
reviewStatus: input.reviewStatus ?? previous?.reviewStatus ?? 'none',
|
|
259
|
+
history,
|
|
260
|
+
createdAt: previous?.createdAt ?? timestamp,
|
|
261
|
+
updatedAt: timestamp,
|
|
262
|
+
completedAt: input.status === 'completed' ? timestamp : previous?.completedAt,
|
|
263
|
+
closureScope: input.closureScope ?? previous?.closureScope,
|
|
264
|
+
};
|
|
265
|
+
if (index >= 0) {
|
|
266
|
+
tasks[index] = next;
|
|
267
|
+
}
|
|
268
|
+
else {
|
|
269
|
+
tasks.push(next);
|
|
270
|
+
}
|
|
271
|
+
save(root, tasks);
|
|
272
|
+
return { task: next, previous };
|
|
273
|
+
}
|
|
274
|
+
//# sourceMappingURL=tasks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tasks.js","sourceRoot":"","sources":["../../../src/shared/state/tasks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClF,OAAO,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAyG3D,MAAM,mBAAmB,GAAG,CAAU,CAAC;AAEvC,MAAM,uBAAuB,GAAiC,CAAC,CAAC,MAAM,CAAC;IACrE,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,QAAQ,EAAE,aAAa,EAAE,SAAS,EAAE,QAAQ,EAAE,YAAY,EAAE,WAAW,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;IAC3H,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACd,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACzB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC5B,CAAC,CAAC;AAEH,MAAM,0BAA0B,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACjC,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACnC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACjC,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACtC,CAAC,CAAC;AAEH,MAAM,kBAAkB,GAA4B,CAAC,CAAC,MAAM,CAAC;IAC3D,aAAa,EAAE,CAAC,CAAC,OAAO,CAAC,mBAAmB,CAAC;IAC7C,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACd,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;IACtB,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACpC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,QAAQ,EAAE,aAAa,EAAE,SAAS,EAAE,QAAQ,EAAE,YAAY,EAAE,WAAW,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;IAC3H,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC3C,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,QAAQ,EAAE,0BAA0B,CAAC,QAAQ,EAAE;IAC/C,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAC3B,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAC1B,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;IAC3C,YAAY,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IACjC,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAC7B,YAAY,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,mBAAmB,CAAC,CAAC;IAC1E,WAAW,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IACnC,YAAY,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IACpC,gBAAgB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IACxC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7B,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,uBAAuB,CAAC;IACzC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,YAAY,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,EAAE,aAAa,EAAE,iBAAiB,CAAC,CAAC,CAAC,QAAQ,EAAE;CAClF,CAAC,CAAC;AAEH,SAAS,GAAG;IACV,OAAO,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;AAClC,CAAC;AAED,SAAS,iBAAiB,CAAC,GAAY;IACrC,IAAI,GAAG,KAAK,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QAClE,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;IACnD,CAAC;IAED,MAAM,MAAM,GAAG,GAA8B,CAAC;IAC9C,MAAM,aAAa,GAAG,OAAO,MAAM,CAAC,aAAa,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1F,IAAI,aAAa,KAAK,CAAC,IAAI,aAAa,KAAK,mBAAmB,EAAE,CAAC;QACjE,MAAM,IAAI,KAAK,CAAC,6BAA6B,aAAa,EAAE,CAAC,CAAC;IAChE,CAAC;IAED,OAAO;QACL,GAAG,MAAM;QACT,aAAa,EAAE,mBAAmB;KACnB,CAAC;AACpB,CAAC;AAED,SAAS,IAAI,CAAC,IAAY;IACxB,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAC7B,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IAC/B,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;QACtB,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CAAC,iBAAiB,IAAI,oBAAoB,CAAC,CAAC;IAC7D,CAAC;IACD,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAC9B,gBAAgB,CAAC,GAAG,IAAI,IAAI,KAAK,GAAG,EAAE,iBAAiB,CAAC,KAAK,CAAC,EAAE,kBAAkB,CAAC,CACpF,CAAC;AACJ,CAAC;AAED,SAAS,IAAI,CAAC,IAAY,EAAE,KAAqB;IAC/C,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;AACpC,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,IAAY,EAAE,KAAsB;IAC7D,MAAM,SAAS,GAAG,GAAG,EAAE,CAAC;IACxB,MAAM,EAAE,GAAG,QAAQ,UAAU,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;IAC/C,MAAM,IAAI,GAAiB;QACzB,aAAa,EAAE,mBAAmB;QAClC,EAAE;QACF,UAAU,EAAE,EAAE;QACd,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,SAAS;QAC7B,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,SAAS;QAC/B,MAAM,EAAE,SAAS;QACjB,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,QAAQ;QACpC,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,EAAE;QAC1B,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,EAAE;QACxB,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,EAAE;QAC9B,YAAY,EAAE,KAAK,CAAC,YAAY,IAAI,EAAE;QACtC,QAAQ,EAAE,EAAE;QACZ,YAAY,EAAE,MAAM;QACpB,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC;QACrE,SAAS;QACT,SAAS,EAAE,SAAS;KACrB,CAAC;IACF,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;IACzB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjB,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAClB,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,iBAAiB,CAC/B,IAAkB,EAClB,SAA2B,EAC3B,YAAqB;IAErB,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,aAAa,CAAC,CAAC;IACnD,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,WAAW,CAAC,CAAC;IACjD,MAAM,cAAc,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,cAAc,CAAC,CAAC;IACvD,IAAI,WAAW,KAAK,gBAAgB;QAAE,OAAO,KAAK,CAAC;IACnD,IAAI,SAAS,IAAI,WAAW,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IACzD,IAAI,YAAY,IAAI,cAAc,KAAK,YAAY;QAAE,OAAO,KAAK,CAAC;IAClE,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,IAAY,EACZ,OAA+B;IAE/B,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,EAAE;QAC/B,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,IAAI,EAAE,cAAc;QACpB,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,SAAS;QACzC,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,QAAQ;QACtC,QAAQ,EAAE;YACR,WAAW,EAAE,gBAAgB;YAC7B,SAAS,EAAE,IAAI;YACf,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,YAAY,EAAE,OAAO,CAAC,YAAY;YAClC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC9D,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACrE;KACF,CAAC,CAAC;IACH,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,IAAI,SAAS,CAAC;IACzD,IAAI,aAAa,KAAK,SAAS,IAAI,OAAO,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;QACtE,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,OAAO,UAAU,CACf,IAAI,EACJ,OAAO,CAAC,EAAE,EACV;QACE,MAAM,EAAE,aAAa;QACrB,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACxE,EACD,gBAAgB,CACjB,IAAI,OAAO,CAAC;AACf,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,IAAY,EACZ,OAQC;IAED,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACrC,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,MAAM,CACrC,CAAC,IAAI,EAAE,EAAE,CACP,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;WACb,iBAAiB,CAAC,IAAI,EAAE,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,YAAY,CAAC,CACtE,CAAC;IACF,OAAO,QAAQ;SACZ,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CACZ,UAAU,CACR,IAAI,EACJ,IAAI,CAAC,EAAE,EACP;QACE,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACrD,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAClD,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACrD,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACxE,EACD,gBAAgB,CACjB,CACF;SACA,MAAM,CAAC,CAAC,IAAI,EAAwB,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;AAC3D,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,IAAY,EAAE,MAAc;IAClD,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC;AAC/D,CAAC;AAED,MAAM,UAAU,UAAU,CACxB,IAAY,EACZ,MAAc,EACd,KAAkE,EAClE,KAAc;IAEd,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;IACzB,MAAM,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,MAAM,CAAC,CAAC;IAC5D,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;QACjB,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;IAC7B,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC;IAClD,MAAM,OAAO,GACX,UAAU,KAAK,OAAO,CAAC,MAAM;QAC3B,CAAC,CAAC;YACE,GAAG,OAAO,CAAC,OAAO;YAClB;gBACE,MAAM,EAAE,UAAU;gBAClB,EAAE,EAAE,GAAG,EAAE;gBACT,EAAE,EAAE,KAAK;gBACT,IAAI,EAAE,OAAO,KAAK,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;aAClE;SACF;QACH,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;IACtB,MAAM,IAAI,GAAiB;QACzB,GAAG,OAAO;QACV,GAAG,KAAK;QACR,aAAa,EAAE,mBAAmB;QAClC,OAAO;QACP,SAAS,EAAE,GAAG,EAAE;KACjB,CAAC;IACF,KAAK,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;IACpB,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAClB,IAAI,UAAU,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC;QAClC,KAAK,SAAS,CAAC;YACb,cAAc,EAAE,cAAc;YAC9B,MAAM,EAAE,gBAAgB;YACxB,UAAU,EAAE,kBAAkB;YAC9B,UAAU,EACR,CAAC,OAAO,IAAI,CAAC,QAAQ,EAAE,SAAS,KAAK,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;mBACtE,SAAS;YACd,MAAM,EAAE,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,EAAE;YACrC,EAAE,EAAE,GAAG,EAAE;YACT,OAAO,EAAE;gBACP,yBAAyB,EAAE,OAAO;gBAClC,cAAc,EAAE,MAAM;gBACtB,iBAAiB,EAAE,IAAI,CAAC,EAAE;gBAC1B,kBAAkB,EAAE,OAAO,CAAC,MAAM;gBAClC,gBAAgB,EAAE,IAAI,CAAC,MAAM;gBAC7B,aAAa,EAAE,KAAK,IAAI,QAAQ;aACjC;SACF,CAAC,CAAC;IACL,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,IAAY,EAAE,MAA2B;IACjE,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;IACzB,OAAO,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AACzE,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,IAAY,EAAE,MAAc;IACrD,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;IACzB,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,MAAM,CAAC,CAAC;IACxD,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,CAAC;IAC7C,IAAI,OAAO,EAAE,CAAC;QACZ,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACnB,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;AAC7B,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,IAAY;IACrC,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;IACzB,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACf,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,UAAU,CACxB,IAAY,EACZ,KAA8B,EAC9B,KAAc;IAEd,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;IACzB,MAAM,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,KAAK,KAAK,CAAC,UAAU,CAAC,CAAC;IAC9E,MAAM,QAAQ,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAClD,MAAM,SAAS,GAAG,GAAG,EAAE,CAAC;IACxB,MAAM,aAAa,GAAG,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;IAEzE,MAAM,OAAO,GAAG,QAAQ;QACtB,CAAC,CAAC,aAAa;YACb,CAAC,CAAC;gBACE,GAAG,QAAQ,CAAC,OAAO;gBACnB,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE;aAC3E;YACH,CAAC,CAAC,QAAQ,CAAC,OAAO;QACpB,CAAC,CAAC;YACE,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE;SAC3E,CAAC;IAEN,MAAM,IAAI,GAAiB;QACzB,aAAa,EAAE,mBAAmB;QAClC,EAAE,EAAE,QAAQ,EAAE,EAAE,IAAI,iBAAiB,UAAU,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE;QAChE,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,aAAa,EAAE,KAAK,CAAC,aAAa,IAAI,QAAQ,EAAE,aAAa;QAC7D,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,QAAQ,EAAE,IAAI,IAAI,eAAe;QACrD,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,QAAQ,EAAE,KAAK,IAAI,UAAU;QACnD,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,QAAQ,EAAE,QAAQ,IAAI,QAAQ;QAC1D,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,QAAQ,EAAE,KAAK;QACrC,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,QAAQ,EAAE,QAAQ;QAC9C,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,QAAQ,EAAE,MAAM,IAAI,EAAE;QAC9C,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,QAAQ,EAAE,KAAK,IAAI,EAAE;QAC3C,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,QAAQ,EAAE,QAAQ,IAAI,EAAE;QACpD,YAAY,EAAE,KAAK,CAAC,YAAY,IAAI,QAAQ,EAAE,YAAY,IAAI,EAAE;QAChE,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,QAAQ,EAAE,QAAQ,IAAI,EAAE;QACpD,YAAY,EAAE,KAAK,CAAC,YAAY,IAAI,QAAQ,EAAE,YAAY,IAAI,MAAM;QACpE,OAAO;QACP,SAAS,EAAE,QAAQ,EAAE,SAAS,IAAI,SAAS;QAC3C,SAAS,EAAE,SAAS;QACpB,WAAW,EAAE,KAAK,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,EAAE,WAAW;QAC7E,YAAY,EAAE,KAAK,CAAC,YAAY,IAAI,QAAQ,EAAE,YAAY;KAC3D,CAAC;IAEF,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;QACf,KAAK,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;IACtB,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnB,CAAC;IAED,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAClB,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;AAClC,CAAC"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare const KNOWN_SKILLS: readonly ["ralph", "ralplan", "team", "ultrawork", "autopilot", "ultragoal", "ultraqa"];
|
|
3
|
+
export type KnownSkill = (typeof KNOWN_SKILLS)[number];
|
|
4
|
+
export declare function isKnownSkill(name: string): name is KnownSkill;
|
|
5
|
+
export declare const ActiveSkillStateSchema: z.ZodObject<{
|
|
6
|
+
schemaVersion: z.ZodLiteral<1>;
|
|
7
|
+
skill: z.ZodNullable<z.ZodEnum<{
|
|
8
|
+
autopilot: "autopilot";
|
|
9
|
+
ralph: "ralph";
|
|
10
|
+
ultrawork: "ultrawork";
|
|
11
|
+
team: "team";
|
|
12
|
+
ralplan: "ralplan";
|
|
13
|
+
ultragoal: "ultragoal";
|
|
14
|
+
ultraqa: "ultraqa";
|
|
15
|
+
}>>;
|
|
16
|
+
activeSkills: z.ZodDefault<z.ZodArray<z.ZodEnum<{
|
|
17
|
+
autopilot: "autopilot";
|
|
18
|
+
ralph: "ralph";
|
|
19
|
+
ultrawork: "ultrawork";
|
|
20
|
+
team: "team";
|
|
21
|
+
ralplan: "ralplan";
|
|
22
|
+
ultragoal: "ultragoal";
|
|
23
|
+
ultraqa: "ultraqa";
|
|
24
|
+
}>>>;
|
|
25
|
+
since: z.ZodNullable<z.ZodString>;
|
|
26
|
+
setBy: z.ZodNullable<z.ZodString>;
|
|
27
|
+
}, z.core.$strip>;
|
|
28
|
+
export type ActiveSkillState = z.infer<typeof ActiveSkillStateSchema>;
|
|
29
|
+
/**
|
|
30
|
+
* Read and validate the active-skill state file.
|
|
31
|
+
* Returns null-skill default when file is absent, corrupt, or schema version mismatches.
|
|
32
|
+
*/
|
|
33
|
+
export declare function readActiveSkill(root: string): ActiveSkillState;
|
|
34
|
+
/**
|
|
35
|
+
* Write the active-skill state file atomically.
|
|
36
|
+
* Validates skill against the known enum — throws on unknown skill name.
|
|
37
|
+
*/
|
|
38
|
+
export declare function writeActiveSkill(root: string, skill: string | null, setBy: string): void;
|
|
39
|
+
/**
|
|
40
|
+
* Clear the active skill (sets skill=null). Convenience wrapper around writeActiveSkill.
|
|
41
|
+
*/
|
|
42
|
+
export declare function clearActiveSkill(root: string, setBy: string): void;
|
|
43
|
+
export declare function activateActiveSkill(root: string, skill: KnownSkill, setBy: string): ActiveSkillState;
|
|
44
|
+
export declare function deactivateActiveSkill(root: string, setBy: string, skill?: KnownSkill | null): ActiveSkillState;
|
|
45
|
+
export declare function listActiveSkills(state: ActiveSkillState): KnownSkill[];
|
|
46
|
+
//# sourceMappingURL=activeSkill.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"activeSkill.d.ts","sourceRoot":"","sources":["../../../../src/shared/workflow/activation/activeSkill.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAMxB,eAAO,MAAM,YAAY,yFAAsH,CAAC;AAEhJ,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC;AAEvD,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,IAAI,UAAU,CAE7D;AAMD,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;iBAMjC,CAAC;AAEH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAoBtE;;;GAGG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,CA6B9D;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAgBxF;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAElE;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,GAAG,gBAAgB,CAapG;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,UAAU,GAAG,IAAI,GAAG,gBAAgB,CAqC9G;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,gBAAgB,GAAG,UAAU,EAAE,CAEtE"}
|