@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.
Files changed (377) hide show
  1. package/README.md +33 -0
  2. package/dist/index.d.ts +24 -0
  3. package/dist/index.d.ts.map +1 -0
  4. package/dist/index.js +24 -0
  5. package/dist/index.js.map +1 -0
  6. package/dist/lanes/autopilot/index.d.ts +95 -0
  7. package/dist/lanes/autopilot/index.d.ts.map +1 -0
  8. package/dist/lanes/autopilot/index.js +499 -0
  9. package/dist/lanes/autopilot/index.js.map +1 -0
  10. package/dist/lanes/ralph/index.d.ts +118 -0
  11. package/dist/lanes/ralph/index.d.ts.map +1 -0
  12. package/dist/lanes/ralph/index.js +680 -0
  13. package/dist/lanes/ralph/index.js.map +1 -0
  14. package/dist/lanes/team/index.d.ts +110 -0
  15. package/dist/lanes/team/index.d.ts.map +1 -0
  16. package/dist/lanes/team/index.js +748 -0
  17. package/dist/lanes/team/index.js.map +1 -0
  18. package/dist/lanes/team/roles.d.ts +15 -0
  19. package/dist/lanes/team/roles.d.ts.map +1 -0
  20. package/dist/lanes/team/roles.js +89 -0
  21. package/dist/lanes/team/roles.js.map +1 -0
  22. package/dist/lanes/ultrawork/burst.d.ts +69 -0
  23. package/dist/lanes/ultrawork/burst.d.ts.map +1 -0
  24. package/dist/lanes/ultrawork/burst.js +254 -0
  25. package/dist/lanes/ultrawork/burst.js.map +1 -0
  26. package/dist/lanes/ultrawork/index.d.ts +159 -0
  27. package/dist/lanes/ultrawork/index.d.ts.map +1 -0
  28. package/dist/lanes/ultrawork/index.js +919 -0
  29. package/dist/lanes/ultrawork/index.js.map +1 -0
  30. package/dist/lanes/ultrawork/phases.d.ts +57 -0
  31. package/dist/lanes/ultrawork/phases.d.ts.map +1 -0
  32. package/dist/lanes/ultrawork/phases.js +116 -0
  33. package/dist/lanes/ultrawork/phases.js.map +1 -0
  34. package/dist/mcp/activation.d.ts +5 -0
  35. package/dist/mcp/activation.d.ts.map +1 -0
  36. package/dist/mcp/activation.js +234 -0
  37. package/dist/mcp/activation.js.map +1 -0
  38. package/dist/mcp/cli.d.ts +11 -0
  39. package/dist/mcp/cli.d.ts.map +1 -0
  40. package/dist/mcp/cli.js +140 -0
  41. package/dist/mcp/cli.js.map +1 -0
  42. package/dist/mcp/continuation.d.ts +5 -0
  43. package/dist/mcp/continuation.d.ts.map +1 -0
  44. package/dist/mcp/continuation.js +360 -0
  45. package/dist/mcp/continuation.js.map +1 -0
  46. package/dist/mcp/jobs.d.ts +5 -0
  47. package/dist/mcp/jobs.d.ts.map +1 -0
  48. package/dist/mcp/jobs.js +212 -0
  49. package/dist/mcp/jobs.js.map +1 -0
  50. package/dist/mcp/laneSupport.d.ts +19 -0
  51. package/dist/mcp/laneSupport.d.ts.map +1 -0
  52. package/dist/mcp/laneSupport.js +21 -0
  53. package/dist/mcp/laneSupport.js.map +1 -0
  54. package/dist/mcp/lanes/autopilot.d.ts +5 -0
  55. package/dist/mcp/lanes/autopilot.d.ts.map +1 -0
  56. package/dist/mcp/lanes/autopilot.js +227 -0
  57. package/dist/mcp/lanes/autopilot.js.map +1 -0
  58. package/dist/mcp/lanes/ralph.d.ts +5 -0
  59. package/dist/mcp/lanes/ralph.d.ts.map +1 -0
  60. package/dist/mcp/lanes/ralph.js +392 -0
  61. package/dist/mcp/lanes/ralph.js.map +1 -0
  62. package/dist/mcp/lanes/team.d.ts +5 -0
  63. package/dist/mcp/lanes/team.d.ts.map +1 -0
  64. package/dist/mcp/lanes/team.js +413 -0
  65. package/dist/mcp/lanes/team.js.map +1 -0
  66. package/dist/mcp/lanes/ultrawork.d.ts +5 -0
  67. package/dist/mcp/lanes/ultrawork.d.ts.map +1 -0
  68. package/dist/mcp/lanes/ultrawork.js +497 -0
  69. package/dist/mcp/lanes/ultrawork.js.map +1 -0
  70. package/dist/mcp/linkage.d.ts +5 -0
  71. package/dist/mcp/linkage.d.ts.map +1 -0
  72. package/dist/mcp/linkage.js +126 -0
  73. package/dist/mcp/linkage.js.map +1 -0
  74. package/dist/mcp/planning.d.ts +5 -0
  75. package/dist/mcp/planning.d.ts.map +1 -0
  76. package/dist/mcp/planning.js +584 -0
  77. package/dist/mcp/planning.js.map +1 -0
  78. package/dist/mcp/rpcTransport.d.ts +17 -0
  79. package/dist/mcp/rpcTransport.d.ts.map +1 -0
  80. package/dist/mcp/rpcTransport.js +90 -0
  81. package/dist/mcp/rpcTransport.js.map +1 -0
  82. package/dist/mcp/schemas/ralphVerify.d.ts +32 -0
  83. package/dist/mcp/schemas/ralphVerify.d.ts.map +1 -0
  84. package/dist/mcp/schemas/ralphVerify.js +20 -0
  85. package/dist/mcp/schemas/ralphVerify.js.map +1 -0
  86. package/dist/mcp/server.d.ts +5 -0
  87. package/dist/mcp/server.d.ts.map +1 -0
  88. package/dist/mcp/server.js +176 -0
  89. package/dist/mcp/server.js.map +1 -0
  90. package/dist/mcp/system.d.ts +5 -0
  91. package/dist/mcp/system.d.ts.map +1 -0
  92. package/dist/mcp/system.js +445 -0
  93. package/dist/mcp/system.js.map +1 -0
  94. package/dist/mcp/toolFilter.d.ts +2 -0
  95. package/dist/mcp/toolFilter.d.ts.map +1 -0
  96. package/dist/mcp/toolFilter.js +2 -0
  97. package/dist/mcp/toolFilter.js.map +1 -0
  98. package/dist/mcp/toolPartitions.d.ts +20 -0
  99. package/dist/mcp/toolPartitions.d.ts.map +1 -0
  100. package/dist/mcp/toolPartitions.js +280 -0
  101. package/dist/mcp/toolPartitions.js.map +1 -0
  102. package/dist/mcp/toolRuntime.d.ts +9 -0
  103. package/dist/mcp/toolRuntime.d.ts.map +1 -0
  104. package/dist/mcp/toolRuntime.js +179 -0
  105. package/dist/mcp/toolRuntime.js.map +1 -0
  106. package/dist/mcp/workflow.d.ts +12 -0
  107. package/dist/mcp/workflow.d.ts.map +1 -0
  108. package/dist/mcp/workflow.js +723 -0
  109. package/dist/mcp/workflow.js.map +1 -0
  110. package/dist/operator/hooks/hookDispatcher.d.ts +39 -0
  111. package/dist/operator/hooks/hookDispatcher.d.ts.map +1 -0
  112. package/dist/operator/hooks/hookDispatcher.js +58 -0
  113. package/dist/operator/hooks/hookDispatcher.js.map +1 -0
  114. package/dist/operator/hooks/hookGating.d.ts +28 -0
  115. package/dist/operator/hooks/hookGating.d.ts.map +1 -0
  116. package/dist/operator/hooks/hookGating.js +61 -0
  117. package/dist/operator/hooks/hookGating.js.map +1 -0
  118. package/dist/operator/hooks/hooks.d.ts +20 -0
  119. package/dist/operator/hooks/hooks.d.ts.map +1 -0
  120. package/dist/operator/hooks/hooks.js +124 -0
  121. package/dist/operator/hooks/hooks.js.map +1 -0
  122. package/dist/operator/hooks/toolGuardHooks.d.ts +86 -0
  123. package/dist/operator/hooks/toolGuardHooks.d.ts.map +1 -0
  124. package/dist/operator/hooks/toolGuardHooks.js +163 -0
  125. package/dist/operator/hooks/toolGuardHooks.js.map +1 -0
  126. package/dist/operator/hud.d.ts +115 -0
  127. package/dist/operator/hud.d.ts.map +1 -0
  128. package/dist/operator/hud.js +229 -0
  129. package/dist/operator/hud.js.map +1 -0
  130. package/dist/operator/missions.d.ts +125 -0
  131. package/dist/operator/missions.d.ts.map +1 -0
  132. package/dist/operator/missions.js +304 -0
  133. package/dist/operator/missions.js.map +1 -0
  134. package/dist/operator/operatorCore.d.ts +11 -0
  135. package/dist/operator/operatorCore.d.ts.map +1 -0
  136. package/dist/operator/operatorCore.js +9 -0
  137. package/dist/operator/operatorCore.js.map +1 -0
  138. package/dist/operator/operatorRuntimeCore.d.ts +17 -0
  139. package/dist/operator/operatorRuntimeCore.d.ts.map +1 -0
  140. package/dist/operator/operatorRuntimeCore.js +17 -0
  141. package/dist/operator/operatorRuntimeCore.js.map +1 -0
  142. package/dist/operator/runtime.d.ts +74 -0
  143. package/dist/operator/runtime.d.ts.map +1 -0
  144. package/dist/operator/runtime.js +357 -0
  145. package/dist/operator/runtime.js.map +1 -0
  146. package/dist/shared/core/bootstrap.d.ts +16 -0
  147. package/dist/shared/core/bootstrap.d.ts.map +1 -0
  148. package/dist/shared/core/bootstrap.js +77 -0
  149. package/dist/shared/core/bootstrap.js.map +1 -0
  150. package/dist/shared/core/contract.d.ts +71 -0
  151. package/dist/shared/core/contract.d.ts.map +1 -0
  152. package/dist/shared/core/contract.js +452 -0
  153. package/dist/shared/core/contract.js.map +1 -0
  154. package/dist/shared/core/events.d.ts +57 -0
  155. package/dist/shared/core/events.d.ts.map +1 -0
  156. package/dist/shared/core/events.js +36 -0
  157. package/dist/shared/core/events.js.map +1 -0
  158. package/dist/shared/core/jobs.d.ts +46 -0
  159. package/dist/shared/core/jobs.d.ts.map +1 -0
  160. package/dist/shared/core/jobs.js +137 -0
  161. package/dist/shared/core/jobs.js.map +1 -0
  162. package/dist/shared/core/json.d.ts +12 -0
  163. package/dist/shared/core/json.d.ts.map +1 -0
  164. package/dist/shared/core/json.js +52 -0
  165. package/dist/shared/core/json.js.map +1 -0
  166. package/dist/shared/core/layoutMigration.d.ts +11 -0
  167. package/dist/shared/core/layoutMigration.d.ts.map +1 -0
  168. package/dist/shared/core/layoutMigration.js +56 -0
  169. package/dist/shared/core/layoutMigration.js.map +1 -0
  170. package/dist/shared/core/lifecycle.d.ts +61 -0
  171. package/dist/shared/core/lifecycle.d.ts.map +1 -0
  172. package/dist/shared/core/lifecycle.js +123 -0
  173. package/dist/shared/core/lifecycle.js.map +1 -0
  174. package/dist/shared/core/packagePaths.d.ts +2 -0
  175. package/dist/shared/core/packagePaths.d.ts.map +1 -0
  176. package/dist/shared/core/packagePaths.js +9 -0
  177. package/dist/shared/core/packagePaths.js.map +1 -0
  178. package/dist/shared/core/terminology.d.ts +38 -0
  179. package/dist/shared/core/terminology.d.ts.map +1 -0
  180. package/dist/shared/core/terminology.js +54 -0
  181. package/dist/shared/core/terminology.js.map +1 -0
  182. package/dist/shared/core/types.d.ts +30 -0
  183. package/dist/shared/core/types.d.ts.map +1 -0
  184. package/dist/shared/core/types.js +2 -0
  185. package/dist/shared/core/types.js.map +1 -0
  186. package/dist/shared/diagnostics/doctor.d.ts +19 -0
  187. package/dist/shared/diagnostics/doctor.d.ts.map +1 -0
  188. package/dist/shared/diagnostics/doctor.js +82 -0
  189. package/dist/shared/diagnostics/doctor.js.map +1 -0
  190. package/dist/shared/diagnostics/hostRollout.d.ts +16 -0
  191. package/dist/shared/diagnostics/hostRollout.d.ts.map +1 -0
  192. package/dist/shared/diagnostics/hostRollout.js +78 -0
  193. package/dist/shared/diagnostics/hostRollout.js.map +1 -0
  194. package/dist/shared/observability/emit.d.ts +3 -0
  195. package/dist/shared/observability/emit.d.ts.map +1 -0
  196. package/dist/shared/observability/emit.js +17 -0
  197. package/dist/shared/observability/emit.js.map +1 -0
  198. package/dist/shared/observability/testWorkspace.d.ts +4 -0
  199. package/dist/shared/observability/testWorkspace.d.ts.map +1 -0
  200. package/dist/shared/observability/testWorkspace.js +35 -0
  201. package/dist/shared/observability/testWorkspace.js.map +1 -0
  202. package/dist/shared/state/installRegistry.d.ts +22 -0
  203. package/dist/shared/state/installRegistry.d.ts.map +1 -0
  204. package/dist/shared/state/installRegistry.js +51 -0
  205. package/dist/shared/state/installRegistry.js.map +1 -0
  206. package/dist/shared/state/session.d.ts +18 -0
  207. package/dist/shared/state/session.d.ts.map +1 -0
  208. package/dist/shared/state/session.js +127 -0
  209. package/dist/shared/state/session.js.map +1 -0
  210. package/dist/shared/state/state.d.ts +16 -0
  211. package/dist/shared/state/state.d.ts.map +1 -0
  212. package/dist/shared/state/state.js +91 -0
  213. package/dist/shared/state/state.js.map +1 -0
  214. package/dist/shared/state/tasks.d.ts +113 -0
  215. package/dist/shared/state/tasks.d.ts.map +1 -0
  216. package/dist/shared/state/tasks.js +274 -0
  217. package/dist/shared/state/tasks.js.map +1 -0
  218. package/dist/shared/workflow/activation/activeSkill.d.ts +46 -0
  219. package/dist/shared/workflow/activation/activeSkill.d.ts.map +1 -0
  220. package/dist/shared/workflow/activation/activeSkill.js +158 -0
  221. package/dist/shared/workflow/activation/activeSkill.js.map +1 -0
  222. package/dist/shared/workflow/activation/gateProfiles.d.ts +26 -0
  223. package/dist/shared/workflow/activation/gateProfiles.d.ts.map +1 -0
  224. package/dist/shared/workflow/activation/gateProfiles.js +102 -0
  225. package/dist/shared/workflow/activation/gateProfiles.js.map +1 -0
  226. package/dist/shared/workflow/activation/modeMatrix.d.ts +28 -0
  227. package/dist/shared/workflow/activation/modeMatrix.d.ts.map +1 -0
  228. package/dist/shared/workflow/activation/modeMatrix.js +91 -0
  229. package/dist/shared/workflow/activation/modeMatrix.js.map +1 -0
  230. package/dist/shared/workflow/activation/skillActivation.d.ts +74 -0
  231. package/dist/shared/workflow/activation/skillActivation.d.ts.map +1 -0
  232. package/dist/shared/workflow/activation/skillActivation.js +485 -0
  233. package/dist/shared/workflow/activation/skillActivation.js.map +1 -0
  234. package/dist/shared/workflow/activation/skillVariant.d.ts +18 -0
  235. package/dist/shared/workflow/activation/skillVariant.d.ts.map +1 -0
  236. package/dist/shared/workflow/activation/skillVariant.js +44 -0
  237. package/dist/shared/workflow/activation/skillVariant.js.map +1 -0
  238. package/dist/shared/workflow/authority/authority.d.ts +34 -0
  239. package/dist/shared/workflow/authority/authority.d.ts.map +1 -0
  240. package/dist/shared/workflow/authority/authority.js +64 -0
  241. package/dist/shared/workflow/authority/authority.js.map +1 -0
  242. package/dist/shared/workflow/closure/closureManifest.d.ts +39 -0
  243. package/dist/shared/workflow/closure/closureManifest.d.ts.map +1 -0
  244. package/dist/shared/workflow/closure/closureManifest.js +62 -0
  245. package/dist/shared/workflow/closure/closureManifest.js.map +1 -0
  246. package/dist/shared/workflow/closure/closureRequirements.d.ts +12 -0
  247. package/dist/shared/workflow/closure/closureRequirements.d.ts.map +1 -0
  248. package/dist/shared/workflow/closure/closureRequirements.js +30 -0
  249. package/dist/shared/workflow/closure/closureRequirements.js.map +1 -0
  250. package/dist/shared/workflow/closure/contractParity.d.ts +24 -0
  251. package/dist/shared/workflow/closure/contractParity.d.ts.map +1 -0
  252. package/dist/shared/workflow/closure/contractParity.js +238 -0
  253. package/dist/shared/workflow/closure/contractParity.js.map +1 -0
  254. package/dist/shared/workflow/closure/contractParityContext.d.ts +8 -0
  255. package/dist/shared/workflow/closure/contractParityContext.d.ts.map +1 -0
  256. package/dist/shared/workflow/closure/contractParityContext.js +50 -0
  257. package/dist/shared/workflow/closure/contractParityContext.js.map +1 -0
  258. package/dist/shared/workflow/closure/scopeGuard.d.ts +11 -0
  259. package/dist/shared/workflow/closure/scopeGuard.d.ts.map +1 -0
  260. package/dist/shared/workflow/closure/scopeGuard.js +69 -0
  261. package/dist/shared/workflow/closure/scopeGuard.js.map +1 -0
  262. package/dist/shared/workflow/closure/ultragoalArtifact.d.ts +13 -0
  263. package/dist/shared/workflow/closure/ultragoalArtifact.d.ts.map +1 -0
  264. package/dist/shared/workflow/closure/ultragoalArtifact.js +31 -0
  265. package/dist/shared/workflow/closure/ultragoalArtifact.js.map +1 -0
  266. package/dist/shared/workflow/closure/workflowReconcile.d.ts +70 -0
  267. package/dist/shared/workflow/closure/workflowReconcile.d.ts.map +1 -0
  268. package/dist/shared/workflow/closure/workflowReconcile.js +267 -0
  269. package/dist/shared/workflow/closure/workflowReconcile.js.map +1 -0
  270. package/dist/shared/workflow/continuation/continuation.d.ts +109 -0
  271. package/dist/shared/workflow/continuation/continuation.d.ts.map +1 -0
  272. package/dist/shared/workflow/continuation/continuation.js +550 -0
  273. package/dist/shared/workflow/continuation/continuation.js.map +1 -0
  274. package/dist/shared/workflow/continuation/continuationEventReservations.d.ts +17 -0
  275. package/dist/shared/workflow/continuation/continuationEventReservations.d.ts.map +1 -0
  276. package/dist/shared/workflow/continuation/continuationEventReservations.js +88 -0
  277. package/dist/shared/workflow/continuation/continuationEventReservations.js.map +1 -0
  278. package/dist/shared/workflow/continuation/continuationFollowUp.d.ts +114 -0
  279. package/dist/shared/workflow/continuation/continuationFollowUp.d.ts.map +1 -0
  280. package/dist/shared/workflow/continuation/continuationFollowUp.js +330 -0
  281. package/dist/shared/workflow/continuation/continuationFollowUp.js.map +1 -0
  282. package/dist/shared/workflow/continuation/continuationOrchestrator.d.ts +66 -0
  283. package/dist/shared/workflow/continuation/continuationOrchestrator.d.ts.map +1 -0
  284. package/dist/shared/workflow/continuation/continuationOrchestrator.js +144 -0
  285. package/dist/shared/workflow/continuation/continuationOrchestrator.js.map +1 -0
  286. package/dist/shared/workflow/continuation/hookContinuation.d.ts +44 -0
  287. package/dist/shared/workflow/continuation/hookContinuation.d.ts.map +1 -0
  288. package/dist/shared/workflow/continuation/hookContinuation.js +85 -0
  289. package/dist/shared/workflow/continuation/hookContinuation.js.map +1 -0
  290. package/dist/shared/workflow/continuation/stopPolicy.d.ts +38 -0
  291. package/dist/shared/workflow/continuation/stopPolicy.d.ts.map +1 -0
  292. package/dist/shared/workflow/continuation/stopPolicy.js +435 -0
  293. package/dist/shared/workflow/continuation/stopPolicy.js.map +1 -0
  294. package/dist/shared/workflow/continuation/stopVerdict.d.ts +31 -0
  295. package/dist/shared/workflow/continuation/stopVerdict.d.ts.map +1 -0
  296. package/dist/shared/workflow/continuation/stopVerdict.js +98 -0
  297. package/dist/shared/workflow/continuation/stopVerdict.js.map +1 -0
  298. package/dist/shared/workflow/delegation/delegatedSession.d.ts +118 -0
  299. package/dist/shared/workflow/delegation/delegatedSession.d.ts.map +1 -0
  300. package/dist/shared/workflow/delegation/delegatedSession.js +496 -0
  301. package/dist/shared/workflow/delegation/delegatedSession.js.map +1 -0
  302. package/dist/shared/workflow/delegation/delegationPrompt.d.ts +3 -0
  303. package/dist/shared/workflow/delegation/delegationPrompt.d.ts.map +1 -0
  304. package/dist/shared/workflow/delegation/delegationPrompt.js +15 -0
  305. package/dist/shared/workflow/delegation/delegationPrompt.js.map +1 -0
  306. package/dist/shared/workflow/delegation/sessionTasks.d.ts +40 -0
  307. package/dist/shared/workflow/delegation/sessionTasks.d.ts.map +1 -0
  308. package/dist/shared/workflow/delegation/sessionTasks.js +73 -0
  309. package/dist/shared/workflow/delegation/sessionTasks.js.map +1 -0
  310. package/dist/shared/workflow/delegation/subagentRuntime.d.ts +26 -0
  311. package/dist/shared/workflow/delegation/subagentRuntime.d.ts.map +1 -0
  312. package/dist/shared/workflow/delegation/subagentRuntime.js +231 -0
  313. package/dist/shared/workflow/delegation/subagentRuntime.js.map +1 -0
  314. package/dist/shared/workflow/delivery/adoAuxiliaryRuntime.d.ts +79 -0
  315. package/dist/shared/workflow/delivery/adoAuxiliaryRuntime.d.ts.map +1 -0
  316. package/dist/shared/workflow/delivery/adoAuxiliaryRuntime.js +166 -0
  317. package/dist/shared/workflow/delivery/adoAuxiliaryRuntime.js.map +1 -0
  318. package/dist/shared/workflow/delivery/finalWave.d.ts +57 -0
  319. package/dist/shared/workflow/delivery/finalWave.d.ts.map +1 -0
  320. package/dist/shared/workflow/delivery/finalWave.js +123 -0
  321. package/dist/shared/workflow/delivery/finalWave.js.map +1 -0
  322. package/dist/shared/workflow/delivery/lifecyclePushMap.d.ts +68 -0
  323. package/dist/shared/workflow/delivery/lifecyclePushMap.d.ts.map +1 -0
  324. package/dist/shared/workflow/delivery/lifecyclePushMap.js +82 -0
  325. package/dist/shared/workflow/delivery/lifecyclePushMap.js.map +1 -0
  326. package/dist/shared/workflow/delivery/prSidecar.d.ts +7 -0
  327. package/dist/shared/workflow/delivery/prSidecar.d.ts.map +1 -0
  328. package/dist/shared/workflow/delivery/prSidecar.js +4 -0
  329. package/dist/shared/workflow/delivery/prSidecar.js.map +1 -0
  330. package/dist/shared/workflow/delivery/reviewStaleness.d.ts +37 -0
  331. package/dist/shared/workflow/delivery/reviewStaleness.d.ts.map +1 -0
  332. package/dist/shared/workflow/delivery/reviewStaleness.js +94 -0
  333. package/dist/shared/workflow/delivery/reviewStaleness.js.map +1 -0
  334. package/dist/shared/workflow/planning/hyperplan.d.ts +40 -0
  335. package/dist/shared/workflow/planning/hyperplan.d.ts.map +1 -0
  336. package/dist/shared/workflow/planning/hyperplan.js +133 -0
  337. package/dist/shared/workflow/planning/hyperplan.js.map +1 -0
  338. package/dist/shared/workflow/planning/notepad.d.ts +17 -0
  339. package/dist/shared/workflow/planning/notepad.d.ts.map +1 -0
  340. package/dist/shared/workflow/planning/notepad.js +84 -0
  341. package/dist/shared/workflow/planning/notepad.js.map +1 -0
  342. package/dist/shared/workflow/planning/planFormat.d.ts +3 -0
  343. package/dist/shared/workflow/planning/planFormat.d.ts.map +1 -0
  344. package/dist/shared/workflow/planning/planFormat.js +14 -0
  345. package/dist/shared/workflow/planning/planFormat.js.map +1 -0
  346. package/package.json +155 -0
  347. package/runtime/hooks/_continuation.mjs +2 -0
  348. package/runtime/hooks/_lib.mjs +2 -0
  349. package/runtime/hooks/_toolGuards.mjs +2 -0
  350. package/runtime/hooks/lanes/resolveSkillActivation.mjs +241 -0
  351. package/runtime/hooks/lanes/user-prompt-submit.mjs +326 -0
  352. package/runtime/hooks/layout-dir.mjs +2 -0
  353. package/runtime/hooks/lifecycle/pre-compact.mjs +121 -0
  354. package/runtime/hooks/lifecycle/session-start.mjs +356 -0
  355. package/runtime/hooks/lifecycle/stop.mjs +223 -0
  356. package/runtime/hooks/observability.mjs +2 -0
  357. package/runtime/hooks/post-tool-use-failure.mjs +5 -0
  358. package/runtime/hooks/post-tool-use.mjs +4 -0
  359. package/runtime/hooks/pre-compact.mjs +4 -0
  360. package/runtime/hooks/pre-tool-use.mjs +4 -0
  361. package/runtime/hooks/resolveSkillActivation.mjs +4 -0
  362. package/runtime/hooks/root-dir.mjs +2 -0
  363. package/runtime/hooks/session-start.mjs +4 -0
  364. package/runtime/hooks/shared/_continuation.mjs +341 -0
  365. package/runtime/hooks/shared/_lib.mjs +60 -0
  366. package/runtime/hooks/shared/_toolGuards.mjs +237 -0
  367. package/runtime/hooks/shared/config.mjs +143 -0
  368. package/runtime/hooks/shared/layout-dir.mjs +12 -0
  369. package/runtime/hooks/shared/observability.mjs +257 -0
  370. package/runtime/hooks/shared/root-dir.mjs +9 -0
  371. package/runtime/hooks/stop.mjs +4 -0
  372. package/runtime/hooks/subagent-tracker.mjs +4 -0
  373. package/runtime/hooks/subagents/subagent-tracker.mjs +106 -0
  374. package/runtime/hooks/tools/post-tool-use-failure.mjs +251 -0
  375. package/runtime/hooks/tools/post-tool-use.mjs +205 -0
  376. package/runtime/hooks/tools/pre-tool-use.mjs +268 -0
  377. 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":"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"}
@@ -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":"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"}
@@ -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"}