@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,268 @@
1
+ #!/usr/bin/env node
2
+ import { appendFileSync, existsSync as _existsSync, mkdirSync, readFileSync } from "node:fs";
3
+ import { isAbsolute as _isAbsolute, resolve as _resolve } from "node:path";
4
+ import { rootDirFrom } from "../shared/root-dir.mjs";
5
+ import { layoutPath } from "../shared/layout-dir.mjs";
6
+ import { readMergedOperatorConfig } from "../shared/config.mjs";
7
+ import { emitHookFired, registerHookFailureTrap } from "../shared/observability.mjs";
8
+ import { readHooksVerbose, verboseLog } from "../shared/_lib.mjs";
9
+
10
+ function readStdin() {
11
+ try {
12
+ return JSON.parse(readFileSync(0, "utf8") || "{}");
13
+ } catch {
14
+ return {};
15
+ }
16
+ }
17
+
18
+ function readWorkspaceConfig(startDir = process.cwd()) {
19
+ return readMergedOperatorConfig(startDir);
20
+ }
21
+
22
+ const payload = readStdin();
23
+ const startedAt = Date.now();
24
+ const completeHook = registerHookFailureTrap({
25
+ payload,
26
+ hookEvent: "PreToolUse",
27
+ startedAt,
28
+ toolName: payload?.tool_name ?? "Bash",
29
+ });
30
+ const command =
31
+ payload?.tool_input?.command ||
32
+ payload?.tool_input?.input ||
33
+ payload?.command ||
34
+ "";
35
+
36
+ const workspaceStartDir = payload?.cwd ?? process.cwd();
37
+ const root = rootDirFrom(workspaceStartDir);
38
+ mkdirSync(layoutPath(root, "logs"), { recursive: true });
39
+ const logFile = layoutPath(root, "logs", "hooks.log");
40
+
41
+ const toolName = payload?.tool_name ?? "";
42
+ const isBashTool = toolName === "Bash";
43
+
44
+ // ── Guard: bashFileReadGuard ──────────────────────────────────────────────────
45
+ // Warns when the agent uses cat/head/tail on a single file with no pipe or
46
+ // redirect — the Read tool provides line numbers and is preferred.
47
+ // Translated from donor bash-file-read-guard.ts; Bash-tool only (no MCP bypass).
48
+ const BASH_FILE_READ_PATTERNS = [
49
+ /^\s*cat\s+(?!-)[^\s|&;]+\s*$/,
50
+ /^\s*head\s+(-n\s+\d+\s+)?(?!-)[^\s|&;]+\s*$/,
51
+ /^\s*tail\s+(-n\s+\d+\s+)?(?!-)[^\s|&;]+\s*$/,
52
+ ];
53
+ const bashFileReadWarning = isBashTool && BASH_FILE_READ_PATTERNS.some((p) => p.test(command))
54
+ ? "Prefer the Read tool over `cat`/`head`/`tail` for reading file contents. The Read tool provides line numbers and hash anchors for precise editing."
55
+ : null;
56
+
57
+ // ── Guard: stderrHideWarning (non-blocking) ───────────────────────────────────
58
+ // Advises against discarding stderr to /dev/null — silenced errors hide real
59
+ // failures. This is a soft warning, NOT a block: the command still runs.
60
+ // Matches `2>/dev/null`, `2> /dev/null`, and combined `>/dev/null 2>&1`.
61
+ const stderrHideWarning = isBashTool && /2>\s*\/dev\/null|>\s*\/dev\/null\s+2>&1/.test(command)
62
+ ? "Avoid silencing stderr with `2>/dev/null` — discarded errors hide real failures. Keep stderr visible, or capture it to a file you can inspect."
63
+ : null;
64
+
65
+ // Combine all non-blocking advisories into a single additionalContext string.
66
+ const advisoryContext = [bashFileReadWarning, stderrHideWarning]
67
+ .filter(Boolean)
68
+ .join("\n\n") || null;
69
+
70
+ // ── Guard: writeExistingFileGuard ─────────────────────────────────────────────
71
+ // Blocks Bash-tool commands that would overwrite an existing file via shell
72
+ // redirect (>), tee, or cp when the destination already exists on disk.
73
+ // Translated from donor write-existing-file-guard/; Bash-tool only.
74
+ //
75
+ // Patterns detected:
76
+ // echo ... > FILE (shell redirect to existing file)
77
+ // ... | tee FILE (tee writing to existing file)
78
+ // cp SRC FILE (cp overwriting existing file)
79
+ function extractWriteDestination(cmd) {
80
+ // Shell redirect: anything before > then the target filename (not >>)
81
+ const redirectMatch = cmd.match(/(?:^|[^>])>\s*([^\s|&;>]+)/);
82
+ if (redirectMatch) {
83
+ const dest = redirectMatch[1].trim();
84
+ // /dev/null (and other /dev/* sinks) discard output — they are never
85
+ // "overwritten", so they must not trip the existing-file guard.
86
+ if (!/^\/dev\//.test(dest)) return dest;
87
+ }
88
+ // tee: tee <file> at end of pipeline
89
+ const teeMatch = cmd.match(/\btee\s+([^\s|&;]+)\s*$/);
90
+ if (teeMatch) return teeMatch[1].trim();
91
+ // cp: cp <src> <dest>
92
+ const cpMatch = cmd.match(/^\s*cp\s+(?:-\w+\s+)*(\S+)\s+(\S+)\s*$/);
93
+ if (cpMatch) return cpMatch[2].trim();
94
+ return null;
95
+ }
96
+
97
+ function resolveWritePath(dest, cwd) {
98
+ return _isAbsolute(dest) ? dest : _resolve(cwd, dest);
99
+ }
100
+
101
+ const writeExistingFileDeny = (() => {
102
+ if (!isBashTool) return false;
103
+ const dest = extractWriteDestination(command);
104
+ if (!dest) return false;
105
+ const abs = resolveWritePath(dest, workspaceStartDir);
106
+ return _existsSync(abs);
107
+ })();
108
+
109
+ // ── Guardrail 1: destructive shell commands ──────────────────────────────────
110
+ const blocked = /\brm\s+-rf\b|\bgit\s+reset\s+--hard\b|\bgit\s+clean\s+-fd\b|\bDROP\s+TABLE\b|\bmkfs\b/i.test(command);
111
+
112
+ // ── Guardrail 2: direct reads of Operator control-plane state ─────────────────
113
+ //
114
+ // Protected paths (have first-class MCP equivalents):
115
+ // .enact/operator/state/*.json → operator_hud / operator_task_list / operator_state_read
116
+ // .enact/operator/sessions/current.json → operator_session_status
117
+ // .enact/operator/team/team.json → operator_team_status
118
+ //
119
+ // NOT blocked: plans/, research/, reports/, logs/ (intentionally operator-readable)
120
+ //
121
+ // NOTE: This guard only fires for Bash tool events (matcher: 'Bash' in hooks.ts).
122
+ // Non-Bash MCP file-read tools such as mcp__enact_ctx__ctx_read do NOT pass
123
+ // through this hook — they bypass via the enact-context MCP server directly.
124
+ // TODO(slice-2): Add path deny-list in the enact-context MCP server for the same
125
+ // protected paths. See docs/a_proposed/2026-05-15-operator-direct-state-io-guardrail.md
126
+ // "Non-Bash MCP File-Read Paths (Audit Conclusion)" section.
127
+
128
+ // Matches cat/jq/sed/rg/grep/head/tail/awk/less/more used against one of the
129
+ // three protected path tokens. Works with absolute and relative paths, with or
130
+ // without surrounding quotes. Does NOT match plans/, research/, reports/, logs/.
131
+ const STATE_IO_COMMANDS = /\b(cat|jq|sed|rg|grep|head|tail|awk|less|more)\b/i;
132
+ const STATE_IO_PATHS = /(?:^|[\s|;&"'`(])(?:[^\s"'`]*[\\/])?\.enact[\\/]operator[\\/](?:state[\\/][^\s"'`]*\.json|sessions[\\/]current\.json|team[\\/]team\.json)/;
133
+ const directStateRead = STATE_IO_COMMANDS.test(command) && STATE_IO_PATHS.test(command);
134
+
135
+ // ── Read-only command detection (for task sync gate) ─────────────────────────
136
+ // These patterns are safe to allow even when the sync gate is active.
137
+ const READ_ONLY_COMMANDS = /^(ls|pwd|find|echo|wc|which|type|env|printenv|node\s+--version|pnpm\s+(list|ls)|npm\s+(list|ls)|git\s+(status|log|diff|show|branch|stash\s+list|remote|describe)|du\s|df\s|stat\s)/i;
138
+ const isReadOnly = READ_ONLY_COMMANDS.test(command.trimStart());
139
+
140
+ // ── Guardrail 3: task sync gate ───────────────────────────────────────────────
141
+ // If the active lane has pending local tasks and no progress has been made
142
+ // for >= LANE_SYNC_GATE_THRESHOLD turns, block mutating Bash commands.
143
+ let taskSyncDeny = false;
144
+ try {
145
+ if (!blocked && !directStateRead && !isReadOnly) {
146
+ const { readOperatorAuthority } = await import("@amsterdamdatalabs/enact-operator/authority");
147
+ const authority = readOperatorAuthority(root);
148
+ const hasActiveLane = !!(authority.ralph?.active || authority.ultrawork?.active || authority.autopilot?.active || authority.team?.active);
149
+ if (hasActiveLane) {
150
+ const { readContinuationState, buildContinuationGuidance, isLaneSyncGated } = await import("@amsterdamdatalabs/enact-operator/continuation");
151
+ const state = readContinuationState(root);
152
+ const guidance = buildContinuationGuidance(authority);
153
+ taskSyncDeny = isLaneSyncGated(state, guidance);
154
+ }
155
+ }
156
+ } catch {
157
+ // best-effort: never block on gate read errors
158
+ }
159
+
160
+ appendFileSync(logFile, `${new Date().toISOString()} PreToolUse ${command}\n`, "utf8");
161
+
162
+ if (blocked) {
163
+ await emitHookFired({
164
+ payload,
165
+ hookEvent: "PreToolUse",
166
+ outcome: "denied",
167
+ latencyMs: Date.now() - startedAt,
168
+ toolName: payload?.tool_name ?? "Bash",
169
+ });
170
+ completeHook();
171
+ process.stdout.write(JSON.stringify({
172
+ decision: "block",
173
+ reason: "Operator safety preset blocked an obviously destructive command.",
174
+ }));
175
+ } else if (directStateRead) {
176
+ const allowOverride = readWorkspaceConfig(workspaceStartDir)?.operator?.allow_direct_state_io === true;
177
+ if (allowOverride) {
178
+ appendFileSync(logFile, `${new Date().toISOString()} PreToolUse ESCAPE-HATCH operator.allow_direct_state_io used for: ${command}\n`, "utf8");
179
+ await emitHookFired({
180
+ payload,
181
+ hookEvent: "PreToolUse",
182
+ outcome: "allowed",
183
+ latencyMs: Date.now() - startedAt,
184
+ toolName: payload?.tool_name ?? "Bash",
185
+ });
186
+ completeHook();
187
+ process.stdout.write(JSON.stringify({ continue: true }));
188
+ } else {
189
+ await emitHookFired({
190
+ payload,
191
+ hookEvent: "PreToolUse",
192
+ outcome: "denied",
193
+ latencyMs: Date.now() - startedAt,
194
+ toolName: payload?.tool_name ?? "Bash",
195
+ });
196
+ completeHook();
197
+ process.stdout.write(JSON.stringify({
198
+ decision: "block",
199
+ reason:
200
+ "Direct shell reads of Operator control-plane state are not allowed. " +
201
+ "Use the Operator MCP surface instead:\n" +
202
+ " • operator_hud — summary runtime truth\n" +
203
+ " • operator_session_status — session state (.enact/operator/sessions/current.json)\n" +
204
+ " • operator_team_status — team state (.enact/operator/team/team.json)\n" +
205
+ " • operator_task_list — local tasks\n" +
206
+ " • operator_reviews_list — reviews\n" +
207
+ " • operator_inbox_list — inbox\n" +
208
+ " • operator_state_read — named mode state (.enact/operator/state/*.json)\n" +
209
+ "To allow direct access for operator debugging, set [operator].allow_direct_state_io = true in config.toml.",
210
+ }));
211
+ }
212
+ } else if (writeExistingFileDeny) {
213
+ await emitHookFired({
214
+ payload,
215
+ hookEvent: "PreToolUse",
216
+ outcome: "denied",
217
+ latencyMs: Date.now() - startedAt,
218
+ toolName: payload?.tool_name ?? "Bash",
219
+ });
220
+ completeHook({ blocked: true });
221
+ process.stdout.write(JSON.stringify({
222
+ decision: "block",
223
+ reason:
224
+ "writeExistingFileGuard: the destination file already exists. " +
225
+ "Use the Edit tool to modify existing files instead of overwriting them with shell redirects, tee, or cp. " +
226
+ "The Edit tool preserves history and avoids accidental data loss.",
227
+ }));
228
+ } else if (taskSyncDeny) {
229
+ await emitHookFired({
230
+ payload,
231
+ hookEvent: "PreToolUse",
232
+ outcome: "denied",
233
+ latencyMs: Date.now() - startedAt,
234
+ toolName: payload?.tool_name ?? "Bash",
235
+ });
236
+ completeHook();
237
+ process.stdout.write(JSON.stringify({
238
+ decision: "block",
239
+ reason:
240
+ "Task sync gate: the active lane has pending local tasks and no progress has been recorded. " +
241
+ "Update the local task before running more commands.\n" +
242
+ " 1. operator_task_read — read the pending local task\n" +
243
+ " 2. operator_task_update — record real status, notes, or blocker\n" +
244
+ "Read-only commands (ls, git status, git log, etc.) are still allowed.",
245
+ }));
246
+ } else {
247
+ await emitHookFired({
248
+ payload,
249
+ hookEvent: "PreToolUse",
250
+ outcome: "allowed",
251
+ latencyMs: Date.now() - startedAt,
252
+ toolName: payload?.tool_name ?? "Bash",
253
+ });
254
+ completeHook();
255
+
256
+ if (readHooksVerbose(workspaceStartDir)) verboseLog("pre-tool-use", `allow — ${toolName || "tool"} passed through`);
257
+ if (advisoryContext) {
258
+ process.stdout.write(JSON.stringify({
259
+ hookSpecificOutput: {
260
+ hookEventName: "PreToolUse",
261
+ permissionDecision: "allow",
262
+ additionalContext: advisoryContext,
263
+ },
264
+ }));
265
+ } else {
266
+ process.stdout.write(JSON.stringify({ continue: true }));
267
+ }
268
+ }
@@ -0,0 +1,4 @@
1
+ #!/usr/bin/env node
2
+
3
+ import "./lanes/user-prompt-submit.mjs";
4
+