usesteady 0.1.0-alpha.1

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 (665) hide show
  1. package/LICENSE +186 -0
  2. package/README.md +724 -0
  3. package/bin/use-steady.js +13 -0
  4. package/dist/server-store.d.ts +68 -0
  5. package/dist/server-store.d.ts.map +1 -0
  6. package/dist/server-store.js +133 -0
  7. package/dist/server-store.js.map +1 -0
  8. package/dist/server.d.ts +35 -0
  9. package/dist/server.d.ts.map +1 -0
  10. package/dist/server.js +569 -0
  11. package/dist/server.js.map +1 -0
  12. package/dist/src/claude/adapters/api-adapter.d.ts +99 -0
  13. package/dist/src/claude/adapters/api-adapter.d.ts.map +1 -0
  14. package/dist/src/claude/adapters/api-adapter.js +415 -0
  15. package/dist/src/claude/adapters/api-adapter.js.map +1 -0
  16. package/dist/src/claude/adapters/stub-adapter.d.ts +73 -0
  17. package/dist/src/claude/adapters/stub-adapter.d.ts.map +1 -0
  18. package/dist/src/claude/adapters/stub-adapter.js +114 -0
  19. package/dist/src/claude/adapters/stub-adapter.js.map +1 -0
  20. package/dist/src/claude/artifact-mapper.d.ts +85 -0
  21. package/dist/src/claude/artifact-mapper.d.ts.map +1 -0
  22. package/dist/src/claude/artifact-mapper.js +187 -0
  23. package/dist/src/claude/artifact-mapper.js.map +1 -0
  24. package/dist/src/claude/delivery-gate.d.ts +136 -0
  25. package/dist/src/claude/delivery-gate.d.ts.map +1 -0
  26. package/dist/src/claude/delivery-gate.js +231 -0
  27. package/dist/src/claude/delivery-gate.js.map +1 -0
  28. package/dist/src/claude/index.d.ts +24 -0
  29. package/dist/src/claude/index.d.ts.map +1 -0
  30. package/dist/src/claude/index.js +23 -0
  31. package/dist/src/claude/index.js.map +1 -0
  32. package/dist/src/claude/types.d.ts +223 -0
  33. package/dist/src/claude/types.d.ts.map +1 -0
  34. package/dist/src/claude/types.js +64 -0
  35. package/dist/src/claude/types.js.map +1 -0
  36. package/dist/src/control/compiler.d.ts +125 -0
  37. package/dist/src/control/compiler.d.ts.map +1 -0
  38. package/dist/src/control/compiler.js +179 -0
  39. package/dist/src/control/compiler.js.map +1 -0
  40. package/dist/src/control/constraints.d.ts +42 -0
  41. package/dist/src/control/constraints.d.ts.map +1 -0
  42. package/dist/src/control/constraints.js +116 -0
  43. package/dist/src/control/constraints.js.map +1 -0
  44. package/dist/src/control/drift-detector.d.ts +49 -0
  45. package/dist/src/control/drift-detector.d.ts.map +1 -0
  46. package/dist/src/control/drift-detector.js +115 -0
  47. package/dist/src/control/drift-detector.js.map +1 -0
  48. package/dist/src/control/index.d.ts +44 -0
  49. package/dist/src/control/index.d.ts.map +1 -0
  50. package/dist/src/control/index.js +40 -0
  51. package/dist/src/control/index.js.map +1 -0
  52. package/dist/src/control/types.d.ts +144 -0
  53. package/dist/src/control/types.d.ts.map +1 -0
  54. package/dist/src/control/types.js +57 -0
  55. package/dist/src/control/types.js.map +1 -0
  56. package/dist/src/cursor/adapters/inprocess-adapter.d.ts +78 -0
  57. package/dist/src/cursor/adapters/inprocess-adapter.d.ts.map +1 -0
  58. package/dist/src/cursor/adapters/inprocess-adapter.js +308 -0
  59. package/dist/src/cursor/adapters/inprocess-adapter.js.map +1 -0
  60. package/dist/src/cursor/adapters/stub-adapter.d.ts +75 -0
  61. package/dist/src/cursor/adapters/stub-adapter.d.ts.map +1 -0
  62. package/dist/src/cursor/adapters/stub-adapter.js +120 -0
  63. package/dist/src/cursor/adapters/stub-adapter.js.map +1 -0
  64. package/dist/src/cursor/artifact-mapper.d.ts +81 -0
  65. package/dist/src/cursor/artifact-mapper.d.ts.map +1 -0
  66. package/dist/src/cursor/artifact-mapper.js +203 -0
  67. package/dist/src/cursor/artifact-mapper.js.map +1 -0
  68. package/dist/src/cursor/delivery-gate.d.ts +144 -0
  69. package/dist/src/cursor/delivery-gate.d.ts.map +1 -0
  70. package/dist/src/cursor/delivery-gate.js +208 -0
  71. package/dist/src/cursor/delivery-gate.js.map +1 -0
  72. package/dist/src/cursor/glob-matcher.d.ts +30 -0
  73. package/dist/src/cursor/glob-matcher.d.ts.map +1 -0
  74. package/dist/src/cursor/glob-matcher.js +68 -0
  75. package/dist/src/cursor/glob-matcher.js.map +1 -0
  76. package/dist/src/cursor/index.d.ts +43 -0
  77. package/dist/src/cursor/index.d.ts.map +1 -0
  78. package/dist/src/cursor/index.js +44 -0
  79. package/dist/src/cursor/index.js.map +1 -0
  80. package/dist/src/cursor/ocd-evaluator.d.ts +89 -0
  81. package/dist/src/cursor/ocd-evaluator.d.ts.map +1 -0
  82. package/dist/src/cursor/ocd-evaluator.js +142 -0
  83. package/dist/src/cursor/ocd-evaluator.js.map +1 -0
  84. package/dist/src/cursor/types.d.ts +309 -0
  85. package/dist/src/cursor/types.d.ts.map +1 -0
  86. package/dist/src/cursor/types.js +48 -0
  87. package/dist/src/cursor/types.js.map +1 -0
  88. package/dist/src/execution/claude/claude-execution-coordinator.d.ts +164 -0
  89. package/dist/src/execution/claude/claude-execution-coordinator.d.ts.map +1 -0
  90. package/dist/src/execution/claude/claude-execution-coordinator.js +198 -0
  91. package/dist/src/execution/claude/claude-execution-coordinator.js.map +1 -0
  92. package/dist/src/execution/claude/index.d.ts +13 -0
  93. package/dist/src/execution/claude/index.d.ts.map +1 -0
  94. package/dist/src/execution/claude/index.js +12 -0
  95. package/dist/src/execution/claude/index.js.map +1 -0
  96. package/dist/src/execution/cursor/cursor-execution-coordinator.d.ts +216 -0
  97. package/dist/src/execution/cursor/cursor-execution-coordinator.d.ts.map +1 -0
  98. package/dist/src/execution/cursor/cursor-execution-coordinator.js +233 -0
  99. package/dist/src/execution/cursor/cursor-execution-coordinator.js.map +1 -0
  100. package/dist/src/execution/cursor/index.d.ts +20 -0
  101. package/dist/src/execution/cursor/index.d.ts.map +1 -0
  102. package/dist/src/execution/cursor/index.js +18 -0
  103. package/dist/src/execution/cursor/index.js.map +1 -0
  104. package/dist/src/execution/reminders/index.d.ts +11 -0
  105. package/dist/src/execution/reminders/index.d.ts.map +1 -0
  106. package/dist/src/execution/reminders/index.js +9 -0
  107. package/dist/src/execution/reminders/index.js.map +1 -0
  108. package/dist/src/execution/reminders/reminder-execution-coordinator.d.ts +125 -0
  109. package/dist/src/execution/reminders/reminder-execution-coordinator.d.ts.map +1 -0
  110. package/dist/src/execution/reminders/reminder-execution-coordinator.js +129 -0
  111. package/dist/src/execution/reminders/reminder-execution-coordinator.js.map +1 -0
  112. package/dist/src/execution/reminders/reminder-execution-types.d.ts +161 -0
  113. package/dist/src/execution/reminders/reminder-execution-types.d.ts.map +1 -0
  114. package/dist/src/execution/reminders/reminder-execution-types.js +39 -0
  115. package/dist/src/execution/reminders/reminder-execution-types.js.map +1 -0
  116. package/dist/src/execution/reminders/reminder-execution-validator.d.ts +45 -0
  117. package/dist/src/execution/reminders/reminder-execution-validator.d.ts.map +1 -0
  118. package/dist/src/execution/reminders/reminder-execution-validator.js +92 -0
  119. package/dist/src/execution/reminders/reminder-execution-validator.js.map +1 -0
  120. package/dist/src/execution/reminders/reminder-executor.d.ts +62 -0
  121. package/dist/src/execution/reminders/reminder-executor.d.ts.map +1 -0
  122. package/dist/src/execution/reminders/reminder-executor.js +113 -0
  123. package/dist/src/execution/reminders/reminder-executor.js.map +1 -0
  124. package/dist/src/execution/reminders/reminder-time-parser.d.ts +41 -0
  125. package/dist/src/execution/reminders/reminder-time-parser.d.ts.map +1 -0
  126. package/dist/src/execution/reminders/reminder-time-parser.js +113 -0
  127. package/dist/src/execution/reminders/reminder-time-parser.js.map +1 -0
  128. package/dist/src/friction/auto-capture.d.ts +38 -0
  129. package/dist/src/friction/auto-capture.d.ts.map +1 -0
  130. package/dist/src/friction/auto-capture.js +133 -0
  131. package/dist/src/friction/auto-capture.js.map +1 -0
  132. package/dist/src/friction/client.d.ts +39 -0
  133. package/dist/src/friction/client.d.ts.map +1 -0
  134. package/dist/src/friction/client.js +165 -0
  135. package/dist/src/friction/client.js.map +1 -0
  136. package/dist/src/friction/config.d.ts +16 -0
  137. package/dist/src/friction/config.d.ts.map +1 -0
  138. package/dist/src/friction/config.js +56 -0
  139. package/dist/src/friction/config.js.map +1 -0
  140. package/dist/src/friction/github-auth.d.ts +41 -0
  141. package/dist/src/friction/github-auth.d.ts.map +1 -0
  142. package/dist/src/friction/github-auth.js +155 -0
  143. package/dist/src/friction/github-auth.js.map +1 -0
  144. package/dist/src/friction/github-issues.d.ts +51 -0
  145. package/dist/src/friction/github-issues.d.ts.map +1 -0
  146. package/dist/src/friction/github-issues.js +118 -0
  147. package/dist/src/friction/github-issues.js.map +1 -0
  148. package/dist/src/friction/payout-ledger.d.ts +45 -0
  149. package/dist/src/friction/payout-ledger.d.ts.map +1 -0
  150. package/dist/src/friction/payout-ledger.js +111 -0
  151. package/dist/src/friction/payout-ledger.js.map +1 -0
  152. package/dist/src/friction/queue.d.ts +42 -0
  153. package/dist/src/friction/queue.d.ts.map +1 -0
  154. package/dist/src/friction/queue.js +179 -0
  155. package/dist/src/friction/queue.js.map +1 -0
  156. package/dist/src/friction/reviewer.d.ts +42 -0
  157. package/dist/src/friction/reviewer.d.ts.map +1 -0
  158. package/dist/src/friction/reviewer.js +269 -0
  159. package/dist/src/friction/reviewer.js.map +1 -0
  160. package/dist/src/friction/types.d.ts +63 -0
  161. package/dist/src/friction/types.d.ts.map +1 -0
  162. package/dist/src/friction/types.js +18 -0
  163. package/dist/src/friction/types.js.map +1 -0
  164. package/dist/src/history/index.d.ts +39 -0
  165. package/dist/src/history/index.d.ts.map +1 -0
  166. package/dist/src/history/index.js +41 -0
  167. package/dist/src/history/index.js.map +1 -0
  168. package/dist/src/history/session-chain.d.ts +36 -0
  169. package/dist/src/history/session-chain.d.ts.map +1 -0
  170. package/dist/src/history/session-chain.js +91 -0
  171. package/dist/src/history/session-chain.js.map +1 -0
  172. package/dist/src/history/types.d.ts +130 -0
  173. package/dist/src/history/types.d.ts.map +1 -0
  174. package/dist/src/history/types.js +32 -0
  175. package/dist/src/history/types.js.map +1 -0
  176. package/dist/src/history/workflow-history.d.ts +48 -0
  177. package/dist/src/history/workflow-history.d.ts.map +1 -0
  178. package/dist/src/history/workflow-history.js +116 -0
  179. package/dist/src/history/workflow-history.js.map +1 -0
  180. package/dist/src/index.d.ts +88 -0
  181. package/dist/src/index.d.ts.map +1 -0
  182. package/dist/src/index.js +58 -0
  183. package/dist/src/index.js.map +1 -0
  184. package/dist/src/intake/classify-intent-state.d.ts +20 -0
  185. package/dist/src/intake/classify-intent-state.d.ts.map +1 -0
  186. package/dist/src/intake/classify-intent-state.js +29 -0
  187. package/dist/src/intake/classify-intent-state.js.map +1 -0
  188. package/dist/src/intake/intake-service.d.ts +105 -0
  189. package/dist/src/intake/intake-service.d.ts.map +1 -0
  190. package/dist/src/intake/intake-service.js +407 -0
  191. package/dist/src/intake/intake-service.js.map +1 -0
  192. package/dist/src/intake/response-planner.d.ts +25 -0
  193. package/dist/src/intake/response-planner.d.ts.map +1 -0
  194. package/dist/src/intake/response-planner.js +52 -0
  195. package/dist/src/intake/response-planner.js.map +1 -0
  196. package/dist/src/intake/signal-extractor.d.ts +25 -0
  197. package/dist/src/intake/signal-extractor.d.ts.map +1 -0
  198. package/dist/src/intake/signal-extractor.js +42 -0
  199. package/dist/src/intake/signal-extractor.js.map +1 -0
  200. package/dist/src/intake/trace.d.ts +157 -0
  201. package/dist/src/intake/trace.d.ts.map +1 -0
  202. package/dist/src/intake/trace.js +38 -0
  203. package/dist/src/intake/trace.js.map +1 -0
  204. package/dist/src/intake/types.d.ts +70 -0
  205. package/dist/src/intake/types.d.ts.map +1 -0
  206. package/dist/src/intake/types.js +30 -0
  207. package/dist/src/intake/types.js.map +1 -0
  208. package/dist/src/interaction/defaults.d.ts +12 -0
  209. package/dist/src/interaction/defaults.d.ts.map +1 -0
  210. package/dist/src/interaction/defaults.js +26 -0
  211. package/dist/src/interaction/defaults.js.map +1 -0
  212. package/dist/src/interaction/guidance-order.d.ts +53 -0
  213. package/dist/src/interaction/guidance-order.d.ts.map +1 -0
  214. package/dist/src/interaction/guidance-order.js +131 -0
  215. package/dist/src/interaction/guidance-order.js.map +1 -0
  216. package/dist/src/interaction/observe.d.ts +57 -0
  217. package/dist/src/interaction/observe.d.ts.map +1 -0
  218. package/dist/src/interaction/observe.js +77 -0
  219. package/dist/src/interaction/observe.js.map +1 -0
  220. package/dist/src/interaction/selectors.d.ts +16 -0
  221. package/dist/src/interaction/selectors.d.ts.map +1 -0
  222. package/dist/src/interaction/selectors.js +23 -0
  223. package/dist/src/interaction/selectors.js.map +1 -0
  224. package/dist/src/interaction/types.d.ts +105 -0
  225. package/dist/src/interaction/types.d.ts.map +1 -0
  226. package/dist/src/interaction/types.js +48 -0
  227. package/dist/src/interaction/types.js.map +1 -0
  228. package/dist/src/interaction/updater.d.ts +22 -0
  229. package/dist/src/interaction/updater.d.ts.map +1 -0
  230. package/dist/src/interaction/updater.js +87 -0
  231. package/dist/src/interaction/updater.js.map +1 -0
  232. package/dist/src/present/boundary-explanation/boundary-explanation-detector.d.ts +48 -0
  233. package/dist/src/present/boundary-explanation/boundary-explanation-detector.d.ts.map +1 -0
  234. package/dist/src/present/boundary-explanation/boundary-explanation-detector.js +107 -0
  235. package/dist/src/present/boundary-explanation/boundary-explanation-detector.js.map +1 -0
  236. package/dist/src/present/boundary-explanation/boundary-explanation-types.d.ts +43 -0
  237. package/dist/src/present/boundary-explanation/boundary-explanation-types.d.ts.map +1 -0
  238. package/dist/src/present/boundary-explanation/boundary-explanation-types.js +20 -0
  239. package/dist/src/present/boundary-explanation/boundary-explanation-types.js.map +1 -0
  240. package/dist/src/present/boundary-explanation/index.d.ts +10 -0
  241. package/dist/src/present/boundary-explanation/index.d.ts.map +1 -0
  242. package/dist/src/present/boundary-explanation/index.js +2 -0
  243. package/dist/src/present/boundary-explanation/index.js.map +1 -0
  244. package/dist/src/present/control-visibility/control-visibility-assertions.d.ts +70 -0
  245. package/dist/src/present/control-visibility/control-visibility-assertions.d.ts.map +1 -0
  246. package/dist/src/present/control-visibility/control-visibility-assertions.js +138 -0
  247. package/dist/src/present/control-visibility/control-visibility-assertions.js.map +1 -0
  248. package/dist/src/present/control-visibility/control-visibility-evaluator.d.ts +67 -0
  249. package/dist/src/present/control-visibility/control-visibility-evaluator.d.ts.map +1 -0
  250. package/dist/src/present/control-visibility/control-visibility-evaluator.js +146 -0
  251. package/dist/src/present/control-visibility/control-visibility-evaluator.js.map +1 -0
  252. package/dist/src/present/control-visibility/control-visibility-types.d.ts +113 -0
  253. package/dist/src/present/control-visibility/control-visibility-types.d.ts.map +1 -0
  254. package/dist/src/present/control-visibility/control-visibility-types.js +24 -0
  255. package/dist/src/present/control-visibility/control-visibility-types.js.map +1 -0
  256. package/dist/src/present/control-visibility/index.d.ts +16 -0
  257. package/dist/src/present/control-visibility/index.d.ts.map +1 -0
  258. package/dist/src/present/control-visibility/index.js +15 -0
  259. package/dist/src/present/control-visibility/index.js.map +1 -0
  260. package/dist/src/present/format.d.ts +57 -0
  261. package/dist/src/present/format.d.ts.map +1 -0
  262. package/dist/src/present/format.js +150 -0
  263. package/dist/src/present/format.js.map +1 -0
  264. package/dist/src/present/present-coordinator.d.ts +153 -0
  265. package/dist/src/present/present-coordinator.d.ts.map +1 -0
  266. package/dist/src/present/present-coordinator.js +213 -0
  267. package/dist/src/present/present-coordinator.js.map +1 -0
  268. package/dist/src/present/reminders/index.d.ts +22 -0
  269. package/dist/src/present/reminders/index.d.ts.map +1 -0
  270. package/dist/src/present/reminders/index.js +22 -0
  271. package/dist/src/present/reminders/index.js.map +1 -0
  272. package/dist/src/present/reminders/reminder-presenter.d.ts +76 -0
  273. package/dist/src/present/reminders/reminder-presenter.d.ts.map +1 -0
  274. package/dist/src/present/reminders/reminder-presenter.js +359 -0
  275. package/dist/src/present/reminders/reminder-presenter.js.map +1 -0
  276. package/dist/src/present/reminders/reminder-renderer.d.ts +82 -0
  277. package/dist/src/present/reminders/reminder-renderer.d.ts.map +1 -0
  278. package/dist/src/present/reminders/reminder-renderer.js +136 -0
  279. package/dist/src/present/reminders/reminder-renderer.js.map +1 -0
  280. package/dist/src/present/reminders/reminder-types.d.ts +131 -0
  281. package/dist/src/present/reminders/reminder-types.d.ts.map +1 -0
  282. package/dist/src/present/reminders/reminder-types.js +29 -0
  283. package/dist/src/present/reminders/reminder-types.js.map +1 -0
  284. package/dist/src/present/types.d.ts +114 -0
  285. package/dist/src/present/types.d.ts.map +1 -0
  286. package/dist/src/present/types.js +18 -0
  287. package/dist/src/present/types.js.map +1 -0
  288. package/dist/src/product/claude-product-session.d.ts +146 -0
  289. package/dist/src/product/claude-product-session.d.ts.map +1 -0
  290. package/dist/src/product/claude-product-session.js +362 -0
  291. package/dist/src/product/claude-product-session.js.map +1 -0
  292. package/dist/src/product/cursor-product-session.d.ts +211 -0
  293. package/dist/src/product/cursor-product-session.d.ts.map +1 -0
  294. package/dist/src/product/cursor-product-session.js +390 -0
  295. package/dist/src/product/cursor-product-session.js.map +1 -0
  296. package/dist/src/product/index.d.ts +28 -0
  297. package/dist/src/product/index.d.ts.map +1 -0
  298. package/dist/src/product/index.js +22 -0
  299. package/dist/src/product/index.js.map +1 -0
  300. package/dist/src/product/session-resilience/index.d.ts +17 -0
  301. package/dist/src/product/session-resilience/index.d.ts.map +1 -0
  302. package/dist/src/product/session-resilience/index.js +15 -0
  303. package/dist/src/product/session-resilience/index.js.map +1 -0
  304. package/dist/src/product/session-resilience/session-serializer.d.ts +43 -0
  305. package/dist/src/product/session-resilience/session-serializer.d.ts.map +1 -0
  306. package/dist/src/product/session-resilience/session-serializer.js +84 -0
  307. package/dist/src/product/session-resilience/session-serializer.js.map +1 -0
  308. package/dist/src/product/session-resilience/session-snapshot-types.d.ts +35 -0
  309. package/dist/src/product/session-resilience/session-snapshot-types.d.ts.map +1 -0
  310. package/dist/src/product/session-resilience/session-snapshot-types.js +21 -0
  311. package/dist/src/product/session-resilience/session-snapshot-types.js.map +1 -0
  312. package/dist/src/product/session-resilience/session-staleness.d.ts +54 -0
  313. package/dist/src/product/session-resilience/session-staleness.d.ts.map +1 -0
  314. package/dist/src/product/session-resilience/session-staleness.js +62 -0
  315. package/dist/src/product/session-resilience/session-staleness.js.map +1 -0
  316. package/dist/src/product/session-resilience/session-summary.d.ts +40 -0
  317. package/dist/src/product/session-resilience/session-summary.d.ts.map +1 -0
  318. package/dist/src/product/session-resilience/session-summary.js +72 -0
  319. package/dist/src/product/session-resilience/session-summary.js.map +1 -0
  320. package/dist/src/prv/patterns.d.ts +32 -0
  321. package/dist/src/prv/patterns.d.ts.map +1 -0
  322. package/dist/src/prv/patterns.js +40 -0
  323. package/dist/src/prv/patterns.js.map +1 -0
  324. package/dist/src/prv/prv.d.ts +13 -0
  325. package/dist/src/prv/prv.d.ts.map +1 -0
  326. package/dist/src/prv/prv.js +22 -0
  327. package/dist/src/prv/prv.js.map +1 -0
  328. package/dist/src/prv/types.d.ts +26 -0
  329. package/dist/src/prv/types.d.ts.map +1 -0
  330. package/dist/src/prv/types.js +15 -0
  331. package/dist/src/prv/types.js.map +1 -0
  332. package/dist/src/safety/detectors/arbitrary-exec.detector.d.ts +3 -0
  333. package/dist/src/safety/detectors/arbitrary-exec.detector.d.ts.map +1 -0
  334. package/dist/src/safety/detectors/arbitrary-exec.detector.js +31 -0
  335. package/dist/src/safety/detectors/arbitrary-exec.detector.js.map +1 -0
  336. package/dist/src/safety/detectors/bulk-data-exfil.detector.d.ts +21 -0
  337. package/dist/src/safety/detectors/bulk-data-exfil.detector.d.ts.map +1 -0
  338. package/dist/src/safety/detectors/bulk-data-exfil.detector.js +90 -0
  339. package/dist/src/safety/detectors/bulk-data-exfil.detector.js.map +1 -0
  340. package/dist/src/safety/detectors/destructive.detector.d.ts +3 -0
  341. package/dist/src/safety/detectors/destructive.detector.d.ts.map +1 -0
  342. package/dist/src/safety/detectors/destructive.detector.js +28 -0
  343. package/dist/src/safety/detectors/destructive.detector.js.map +1 -0
  344. package/dist/src/safety/detectors/evasion.detector.d.ts +3 -0
  345. package/dist/src/safety/detectors/evasion.detector.d.ts.map +1 -0
  346. package/dist/src/safety/detectors/evasion.detector.js +28 -0
  347. package/dist/src/safety/detectors/evasion.detector.js.map +1 -0
  348. package/dist/src/safety/detectors/secret-access.detector.d.ts +31 -0
  349. package/dist/src/safety/detectors/secret-access.detector.d.ts.map +1 -0
  350. package/dist/src/safety/detectors/secret-access.detector.js +78 -0
  351. package/dist/src/safety/detectors/secret-access.detector.js.map +1 -0
  352. package/dist/src/safety/registry.d.ts +9 -0
  353. package/dist/src/safety/registry.d.ts.map +1 -0
  354. package/dist/src/safety/registry.js +22 -0
  355. package/dist/src/safety/registry.js.map +1 -0
  356. package/dist/src/safety/safety-gate.d.ts +16 -0
  357. package/dist/src/safety/safety-gate.d.ts.map +1 -0
  358. package/dist/src/safety/safety-gate.js +26 -0
  359. package/dist/src/safety/safety-gate.js.map +1 -0
  360. package/dist/src/safety/types.d.ts +35 -0
  361. package/dist/src/safety/types.d.ts.map +1 -0
  362. package/dist/src/safety/types.js +14 -0
  363. package/dist/src/safety/types.js.map +1 -0
  364. package/dist/src/shell/claude-shell.d.ts +63 -0
  365. package/dist/src/shell/claude-shell.d.ts.map +1 -0
  366. package/dist/src/shell/claude-shell.js +81 -0
  367. package/dist/src/shell/claude-shell.js.map +1 -0
  368. package/dist/src/shell/cli/friction-admin.d.ts +14 -0
  369. package/dist/src/shell/cli/friction-admin.d.ts.map +1 -0
  370. package/dist/src/shell/cli/friction-admin.js +276 -0
  371. package/dist/src/shell/cli/friction-admin.js.map +1 -0
  372. package/dist/src/shell/cli/friction-report.d.ts +16 -0
  373. package/dist/src/shell/cli/friction-report.d.ts.map +1 -0
  374. package/dist/src/shell/cli/friction-report.js +156 -0
  375. package/dist/src/shell/cli/friction-report.js.map +1 -0
  376. package/dist/src/shell/cli/main.d.ts +68 -0
  377. package/dist/src/shell/cli/main.d.ts.map +1 -0
  378. package/dist/src/shell/cli/main.js +488 -0
  379. package/dist/src/shell/cli/main.js.map +1 -0
  380. package/dist/src/shell/cli/use-steady.d.ts +26 -0
  381. package/dist/src/shell/cli/use-steady.d.ts.map +1 -0
  382. package/dist/src/shell/cli/use-steady.js +117 -0
  383. package/dist/src/shell/cli/use-steady.js.map +1 -0
  384. package/dist/src/shell/cursor-shell.d.ts +63 -0
  385. package/dist/src/shell/cursor-shell.d.ts.map +1 -0
  386. package/dist/src/shell/cursor-shell.js +88 -0
  387. package/dist/src/shell/cursor-shell.js.map +1 -0
  388. package/dist/src/shell/defaults.d.ts +51 -0
  389. package/dist/src/shell/defaults.d.ts.map +1 -0
  390. package/dist/src/shell/defaults.js +78 -0
  391. package/dist/src/shell/defaults.js.map +1 -0
  392. package/dist/src/shell/history-render.d.ts +56 -0
  393. package/dist/src/shell/history-render.d.ts.map +1 -0
  394. package/dist/src/shell/history-render.js +166 -0
  395. package/dist/src/shell/history-render.js.map +1 -0
  396. package/dist/src/shell/index.d.ts +43 -0
  397. package/dist/src/shell/index.d.ts.map +1 -0
  398. package/dist/src/shell/index.js +45 -0
  399. package/dist/src/shell/index.js.map +1 -0
  400. package/dist/src/shell/render.d.ts +42 -0
  401. package/dist/src/shell/render.d.ts.map +1 -0
  402. package/dist/src/shell/render.js +122 -0
  403. package/dist/src/shell/render.js.map +1 -0
  404. package/dist/src/shell/types.d.ts +46 -0
  405. package/dist/src/shell/types.d.ts.map +1 -0
  406. package/dist/src/shell/types.js +19 -0
  407. package/dist/src/shell/types.js.map +1 -0
  408. package/dist/src/shell/workflow-defaults.d.ts +23 -0
  409. package/dist/src/shell/workflow-defaults.d.ts.map +1 -0
  410. package/dist/src/shell/workflow-defaults.js +27 -0
  411. package/dist/src/shell/workflow-defaults.js.map +1 -0
  412. package/dist/src/shell/workflow-render.d.ts +54 -0
  413. package/dist/src/shell/workflow-render.d.ts.map +1 -0
  414. package/dist/src/shell/workflow-render.js +319 -0
  415. package/dist/src/shell/workflow-render.js.map +1 -0
  416. package/dist/src/shell/workflow-shell.d.ts +110 -0
  417. package/dist/src/shell/workflow-shell.d.ts.map +1 -0
  418. package/dist/src/shell/workflow-shell.js +180 -0
  419. package/dist/src/shell/workflow-shell.js.map +1 -0
  420. package/dist/src/skills/audit.d.ts +118 -0
  421. package/dist/src/skills/audit.d.ts.map +1 -0
  422. package/dist/src/skills/audit.js +147 -0
  423. package/dist/src/skills/audit.js.map +1 -0
  424. package/dist/src/skills/invocation.d.ts +131 -0
  425. package/dist/src/skills/invocation.d.ts.map +1 -0
  426. package/dist/src/skills/invocation.js +165 -0
  427. package/dist/src/skills/invocation.js.map +1 -0
  428. package/dist/src/skills/loader.d.ts +70 -0
  429. package/dist/src/skills/loader.d.ts.map +1 -0
  430. package/dist/src/skills/loader.js +220 -0
  431. package/dist/src/skills/loader.js.map +1 -0
  432. package/dist/src/skills/local-recovery-adapter.d.ts +49 -0
  433. package/dist/src/skills/local-recovery-adapter.d.ts.map +1 -0
  434. package/dist/src/skills/local-recovery-adapter.js +184 -0
  435. package/dist/src/skills/local-recovery-adapter.js.map +1 -0
  436. package/dist/src/skills/parser.d.ts +53 -0
  437. package/dist/src/skills/parser.d.ts.map +1 -0
  438. package/dist/src/skills/parser.js +336 -0
  439. package/dist/src/skills/parser.js.map +1 -0
  440. package/dist/src/skills/registry.d.ts +123 -0
  441. package/dist/src/skills/registry.d.ts.map +1 -0
  442. package/dist/src/skills/registry.js +144 -0
  443. package/dist/src/skills/registry.js.map +1 -0
  444. package/dist/src/skills/types.d.ts +242 -0
  445. package/dist/src/skills/types.d.ts.map +1 -0
  446. package/dist/src/skills/types.js +50 -0
  447. package/dist/src/skills/types.js.map +1 -0
  448. package/dist/src/skills/validator.d.ts +31 -0
  449. package/dist/src/skills/validator.d.ts.map +1 -0
  450. package/dist/src/skills/validator.js +366 -0
  451. package/dist/src/skills/validator.js.map +1 -0
  452. package/dist/src/ucp/envelope.d.ts +165 -0
  453. package/dist/src/ucp/envelope.d.ts.map +1 -0
  454. package/dist/src/ucp/envelope.js +241 -0
  455. package/dist/src/ucp/envelope.js.map +1 -0
  456. package/dist/src/ucp/hashes.d.ts +36 -0
  457. package/dist/src/ucp/hashes.d.ts.map +1 -0
  458. package/dist/src/ucp/hashes.js +59 -0
  459. package/dist/src/ucp/hashes.js.map +1 -0
  460. package/dist/src/ucp/mappers/map-artifact.d.ts +58 -0
  461. package/dist/src/ucp/mappers/map-artifact.d.ts.map +1 -0
  462. package/dist/src/ucp/mappers/map-artifact.js +51 -0
  463. package/dist/src/ucp/mappers/map-artifact.js.map +1 -0
  464. package/dist/src/ucp/mappers/map-change-interpretation.d.ts +12 -0
  465. package/dist/src/ucp/mappers/map-change-interpretation.d.ts.map +1 -0
  466. package/dist/src/ucp/mappers/map-change-interpretation.js +18 -0
  467. package/dist/src/ucp/mappers/map-change-interpretation.js.map +1 -0
  468. package/dist/src/ucp/mappers/map-completion.d.ts +10 -0
  469. package/dist/src/ucp/mappers/map-completion.d.ts.map +1 -0
  470. package/dist/src/ucp/mappers/map-completion.js +24 -0
  471. package/dist/src/ucp/mappers/map-completion.js.map +1 -0
  472. package/dist/src/ucp/mappers/map-context.d.ts +9 -0
  473. package/dist/src/ucp/mappers/map-context.d.ts.map +1 -0
  474. package/dist/src/ucp/mappers/map-context.js +13 -0
  475. package/dist/src/ucp/mappers/map-context.js.map +1 -0
  476. package/dist/src/ucp/mappers/map-debug-trace.d.ts +10 -0
  477. package/dist/src/ucp/mappers/map-debug-trace.d.ts.map +1 -0
  478. package/dist/src/ucp/mappers/map-debug-trace.js +18 -0
  479. package/dist/src/ucp/mappers/map-debug-trace.js.map +1 -0
  480. package/dist/src/ucp/mappers/map-disambiguation.d.ts +10 -0
  481. package/dist/src/ucp/mappers/map-disambiguation.d.ts.map +1 -0
  482. package/dist/src/ucp/mappers/map-disambiguation.js +21 -0
  483. package/dist/src/ucp/mappers/map-disambiguation.js.map +1 -0
  484. package/dist/src/ucp/mappers/map-execution-trace.d.ts +64 -0
  485. package/dist/src/ucp/mappers/map-execution-trace.d.ts.map +1 -0
  486. package/dist/src/ucp/mappers/map-execution-trace.js +57 -0
  487. package/dist/src/ucp/mappers/map-execution-trace.js.map +1 -0
  488. package/dist/src/ucp/mappers/map-intent-interpretation.d.ts +11 -0
  489. package/dist/src/ucp/mappers/map-intent-interpretation.d.ts.map +1 -0
  490. package/dist/src/ucp/mappers/map-intent-interpretation.js +17 -0
  491. package/dist/src/ucp/mappers/map-intent-interpretation.js.map +1 -0
  492. package/dist/src/ucp/mappers/map-intent.d.ts +9 -0
  493. package/dist/src/ucp/mappers/map-intent.d.ts.map +1 -0
  494. package/dist/src/ucp/mappers/map-intent.js +11 -0
  495. package/dist/src/ucp/mappers/map-intent.js.map +1 -0
  496. package/dist/src/ucp/mappers/map-prv.d.ts +10 -0
  497. package/dist/src/ucp/mappers/map-prv.d.ts.map +1 -0
  498. package/dist/src/ucp/mappers/map-prv.js +14 -0
  499. package/dist/src/ucp/mappers/map-prv.js.map +1 -0
  500. package/dist/src/ucp/mappers/map-reminder-execution.d.ts +57 -0
  501. package/dist/src/ucp/mappers/map-reminder-execution.d.ts.map +1 -0
  502. package/dist/src/ucp/mappers/map-reminder-execution.js +69 -0
  503. package/dist/src/ucp/mappers/map-reminder-execution.js.map +1 -0
  504. package/dist/src/ucp/mappers/map-replay-report.d.ts +81 -0
  505. package/dist/src/ucp/mappers/map-replay-report.d.ts.map +1 -0
  506. package/dist/src/ucp/mappers/map-replay-report.js +76 -0
  507. package/dist/src/ucp/mappers/map-replay-report.js.map +1 -0
  508. package/dist/src/ucp/mappers/map-response.d.ts +13 -0
  509. package/dist/src/ucp/mappers/map-response.d.ts.map +1 -0
  510. package/dist/src/ucp/mappers/map-response.js +25 -0
  511. package/dist/src/ucp/mappers/map-response.js.map +1 -0
  512. package/dist/src/ucp/mappers/map-safety.d.ts +14 -0
  513. package/dist/src/ucp/mappers/map-safety.d.ts.map +1 -0
  514. package/dist/src/ucp/mappers/map-safety.js +22 -0
  515. package/dist/src/ucp/mappers/map-safety.js.map +1 -0
  516. package/dist/src/ucp/persistence/index.d.ts +24 -0
  517. package/dist/src/ucp/persistence/index.d.ts.map +1 -0
  518. package/dist/src/ucp/persistence/index.js +22 -0
  519. package/dist/src/ucp/persistence/index.js.map +1 -0
  520. package/dist/src/ucp/persistence/query.d.ts +164 -0
  521. package/dist/src/ucp/persistence/query.d.ts.map +1 -0
  522. package/dist/src/ucp/persistence/query.js +240 -0
  523. package/dist/src/ucp/persistence/query.js.map +1 -0
  524. package/dist/src/ucp/persistence/reader.d.ts +43 -0
  525. package/dist/src/ucp/persistence/reader.d.ts.map +1 -0
  526. package/dist/src/ucp/persistence/reader.js +104 -0
  527. package/dist/src/ucp/persistence/reader.js.map +1 -0
  528. package/dist/src/ucp/persistence/store.d.ts +77 -0
  529. package/dist/src/ucp/persistence/store.d.ts.map +1 -0
  530. package/dist/src/ucp/persistence/store.js +177 -0
  531. package/dist/src/ucp/persistence/store.js.map +1 -0
  532. package/dist/src/ucp/persistence/write.d.ts +48 -0
  533. package/dist/src/ucp/persistence/write.d.ts.map +1 -0
  534. package/dist/src/ucp/persistence/write.js +59 -0
  535. package/dist/src/ucp/persistence/write.js.map +1 -0
  536. package/dist/src/ucp/projection.d.ts +146 -0
  537. package/dist/src/ucp/projection.d.ts.map +1 -0
  538. package/dist/src/ucp/projection.js +139 -0
  539. package/dist/src/ucp/projection.js.map +1 -0
  540. package/dist/src/ucp/types.d.ts +585 -0
  541. package/dist/src/ucp/types.d.ts.map +1 -0
  542. package/dist/src/ucp/types.js +57 -0
  543. package/dist/src/ucp/types.js.map +1 -0
  544. package/dist/src/understand/completion/completion.d.ts +26 -0
  545. package/dist/src/understand/completion/completion.d.ts.map +1 -0
  546. package/dist/src/understand/completion/completion.js +45 -0
  547. package/dist/src/understand/completion/completion.js.map +1 -0
  548. package/dist/src/understand/completion/rules.d.ts +61 -0
  549. package/dist/src/understand/completion/rules.d.ts.map +1 -0
  550. package/dist/src/understand/completion/rules.js +268 -0
  551. package/dist/src/understand/completion/rules.js.map +1 -0
  552. package/dist/src/understand/completion/types.d.ts +68 -0
  553. package/dist/src/understand/completion/types.d.ts.map +1 -0
  554. package/dist/src/understand/completion/types.js +34 -0
  555. package/dist/src/understand/completion/types.js.map +1 -0
  556. package/dist/src/understand/context/context-alignment.d.ts +18 -0
  557. package/dist/src/understand/context/context-alignment.d.ts.map +1 -0
  558. package/dist/src/understand/context/context-alignment.js +61 -0
  559. package/dist/src/understand/context/context-alignment.js.map +1 -0
  560. package/dist/src/understand/context/types.d.ts +20 -0
  561. package/dist/src/understand/context/types.d.ts.map +1 -0
  562. package/dist/src/understand/context/types.js +13 -0
  563. package/dist/src/understand/context/types.js.map +1 -0
  564. package/dist/src/understand/disambiguation/detectors/missing-context.detector.d.ts +12 -0
  565. package/dist/src/understand/disambiguation/detectors/missing-context.detector.d.ts.map +1 -0
  566. package/dist/src/understand/disambiguation/detectors/missing-context.detector.js +60 -0
  567. package/dist/src/understand/disambiguation/detectors/missing-context.detector.js.map +1 -0
  568. package/dist/src/understand/disambiguation/detectors/overloaded-term.detector.d.ts +13 -0
  569. package/dist/src/understand/disambiguation/detectors/overloaded-term.detector.d.ts.map +1 -0
  570. package/dist/src/understand/disambiguation/detectors/overloaded-term.detector.js +57 -0
  571. package/dist/src/understand/disambiguation/detectors/overloaded-term.detector.js.map +1 -0
  572. package/dist/src/understand/disambiguation/detectors/typo-adjacent.detector.d.ts +16 -0
  573. package/dist/src/understand/disambiguation/detectors/typo-adjacent.detector.d.ts.map +1 -0
  574. package/dist/src/understand/disambiguation/detectors/typo-adjacent.detector.js +56 -0
  575. package/dist/src/understand/disambiguation/detectors/typo-adjacent.detector.js.map +1 -0
  576. package/dist/src/understand/disambiguation/registry.d.ts +14 -0
  577. package/dist/src/understand/disambiguation/registry.d.ts.map +1 -0
  578. package/dist/src/understand/disambiguation/registry.js +27 -0
  579. package/dist/src/understand/disambiguation/registry.js.map +1 -0
  580. package/dist/src/understand/disambiguation/types.d.ts +34 -0
  581. package/dist/src/understand/disambiguation/types.d.ts.map +1 -0
  582. package/dist/src/understand/disambiguation/types.js +15 -0
  583. package/dist/src/understand/disambiguation/types.js.map +1 -0
  584. package/dist/src/understand/intent-interpretation/intent-interpretation.d.ts +86 -0
  585. package/dist/src/understand/intent-interpretation/intent-interpretation.d.ts.map +1 -0
  586. package/dist/src/understand/intent-interpretation/intent-interpretation.js +141 -0
  587. package/dist/src/understand/intent-interpretation/intent-interpretation.js.map +1 -0
  588. package/dist/src/understand/intent-interpretation/interpreters/color-intent.interpreter.d.ts +33 -0
  589. package/dist/src/understand/intent-interpretation/interpreters/color-intent.interpreter.d.ts.map +1 -0
  590. package/dist/src/understand/intent-interpretation/interpreters/color-intent.interpreter.js +66 -0
  591. package/dist/src/understand/intent-interpretation/interpreters/color-intent.interpreter.js.map +1 -0
  592. package/dist/src/understand/intent-interpretation/interpreters/config-intent.interpreter.d.ts +20 -0
  593. package/dist/src/understand/intent-interpretation/interpreters/config-intent.interpreter.d.ts.map +1 -0
  594. package/dist/src/understand/intent-interpretation/interpreters/config-intent.interpreter.js +80 -0
  595. package/dist/src/understand/intent-interpretation/interpreters/config-intent.interpreter.js.map +1 -0
  596. package/dist/src/understand/intent-interpretation/interpreters/text-intent.interpreter.d.ts +25 -0
  597. package/dist/src/understand/intent-interpretation/interpreters/text-intent.interpreter.d.ts.map +1 -0
  598. package/dist/src/understand/intent-interpretation/interpreters/text-intent.interpreter.js +47 -0
  599. package/dist/src/understand/intent-interpretation/interpreters/text-intent.interpreter.js.map +1 -0
  600. package/dist/src/understand/intent-interpretation/interpreters/workflow-intent.interpreter.d.ts +35 -0
  601. package/dist/src/understand/intent-interpretation/interpreters/workflow-intent.interpreter.d.ts.map +1 -0
  602. package/dist/src/understand/intent-interpretation/interpreters/workflow-intent.interpreter.js +89 -0
  603. package/dist/src/understand/intent-interpretation/interpreters/workflow-intent.interpreter.js.map +1 -0
  604. package/dist/src/understand/intent-interpretation/registry.d.ts +18 -0
  605. package/dist/src/understand/intent-interpretation/registry.d.ts.map +1 -0
  606. package/dist/src/understand/intent-interpretation/registry.js +26 -0
  607. package/dist/src/understand/intent-interpretation/registry.js.map +1 -0
  608. package/dist/src/understand/intent-interpretation/types.d.ts +83 -0
  609. package/dist/src/understand/intent-interpretation/types.d.ts.map +1 -0
  610. package/dist/src/understand/intent-interpretation/types.js +40 -0
  611. package/dist/src/understand/intent-interpretation/types.js.map +1 -0
  612. package/dist/src/understand/interpretation/intent.d.ts +72 -0
  613. package/dist/src/understand/interpretation/intent.d.ts.map +1 -0
  614. package/dist/src/understand/interpretation/intent.js +414 -0
  615. package/dist/src/understand/interpretation/intent.js.map +1 -0
  616. package/dist/src/understand/interpretation/interpretation.d.ts +26 -0
  617. package/dist/src/understand/interpretation/interpretation.d.ts.map +1 -0
  618. package/dist/src/understand/interpretation/interpretation.js +43 -0
  619. package/dist/src/understand/interpretation/interpretation.js.map +1 -0
  620. package/dist/src/understand/interpretation/parser.d.ts +20 -0
  621. package/dist/src/understand/interpretation/parser.d.ts.map +1 -0
  622. package/dist/src/understand/interpretation/parser.js +88 -0
  623. package/dist/src/understand/interpretation/parser.js.map +1 -0
  624. package/dist/src/understand/interpretation/rules.d.ts +19 -0
  625. package/dist/src/understand/interpretation/rules.d.ts.map +1 -0
  626. package/dist/src/understand/interpretation/rules.js +222 -0
  627. package/dist/src/understand/interpretation/rules.js.map +1 -0
  628. package/dist/src/understand/interpretation/types.d.ts +90 -0
  629. package/dist/src/understand/interpretation/types.d.ts.map +1 -0
  630. package/dist/src/understand/interpretation/types.js +29 -0
  631. package/dist/src/understand/interpretation/types.js.map +1 -0
  632. package/dist/src/understand/shared/types.d.ts +13 -0
  633. package/dist/src/understand/shared/types.d.ts.map +1 -0
  634. package/dist/src/understand/shared/types.js +9 -0
  635. package/dist/src/understand/shared/types.js.map +1 -0
  636. package/dist/src/understand/silent-guidance/index.d.ts +4 -0
  637. package/dist/src/understand/silent-guidance/index.d.ts.map +1 -0
  638. package/dist/src/understand/silent-guidance/index.js +3 -0
  639. package/dist/src/understand/silent-guidance/index.js.map +1 -0
  640. package/dist/src/understand/silent-guidance/selector.d.ts +44 -0
  641. package/dist/src/understand/silent-guidance/selector.d.ts.map +1 -0
  642. package/dist/src/understand/silent-guidance/selector.js +158 -0
  643. package/dist/src/understand/silent-guidance/selector.js.map +1 -0
  644. package/dist/src/understand/silent-guidance/templates.d.ts +31 -0
  645. package/dist/src/understand/silent-guidance/templates.d.ts.map +1 -0
  646. package/dist/src/understand/silent-guidance/templates.js +109 -0
  647. package/dist/src/understand/silent-guidance/templates.js.map +1 -0
  648. package/dist/src/understand/silent-guidance/types.d.ts +36 -0
  649. package/dist/src/understand/silent-guidance/types.d.ts.map +1 -0
  650. package/dist/src/understand/silent-guidance/types.js +2 -0
  651. package/dist/src/understand/silent-guidance/types.js.map +1 -0
  652. package/dist/src/workflow/coordinator.d.ts +197 -0
  653. package/dist/src/workflow/coordinator.d.ts.map +1 -0
  654. package/dist/src/workflow/coordinator.js +682 -0
  655. package/dist/src/workflow/coordinator.js.map +1 -0
  656. package/dist/src/workflow/index.d.ts +30 -0
  657. package/dist/src/workflow/index.d.ts.map +1 -0
  658. package/dist/src/workflow/index.js +30 -0
  659. package/dist/src/workflow/index.js.map +1 -0
  660. package/dist/src/workflow/types.d.ts +213 -0
  661. package/dist/src/workflow/types.d.ts.map +1 -0
  662. package/dist/src/workflow/types.js +27 -0
  663. package/dist/src/workflow/types.js.map +1 -0
  664. package/package.json +54 -0
  665. package/ui/README.md +73 -0
@@ -0,0 +1,319 @@
1
+ /**
2
+ * Phase 9D: Workflow shell rendering.
3
+ *
4
+ * ── Purpose ───────────────────────────────────────────────────────────────────
5
+ *
6
+ * Pure function that maps WorkflowRun state → ShellFrame.
7
+ * No I/O. No coordinator calls. No authority.
8
+ *
9
+ * ── Two-layer read rule (WS6) ─────────────────────────────────────────────────
10
+ *
11
+ * 1. Read WorkflowRun.phase first — determines the frame type and prompt kind.
12
+ * 2. Read currentSession.state.display second — provides task-level detail
13
+ * (change summary, conflict list, scope candidates, failure note).
14
+ *
15
+ * Never conflate workflow phase with session phase. See docs/phase-9c-baseline.md
16
+ * for the full phase distinction table.
17
+ *
18
+ * ── Key invariants (WS1–WS5) ──────────────────────────────────────────────────
19
+ *
20
+ * WS1: Pure — no side effects, no state mutation.
21
+ * WS3: task_failed prompt is always "choose" (stop/skip/retry), never "confirm".
22
+ * A choice prompt cannot imply a default the way a yes/no confirm can.
23
+ * WS4: Failure note from display.failureNote is preserved verbatim.
24
+ * exec_error, blocked, rejected, and missing-plugin all have distinct notes.
25
+ * The renderer never replaces these with a generic "task failed" message.
26
+ * WS5: completed/stopped frames read history from run.tasks[i].outcome, not
27
+ * from currentSession (which is absent in those phases).
28
+ *
29
+ * ── task_approved rendering (9C distinction) ──────────────────────────────────
30
+ *
31
+ * task_approved renders as "Approved — ready to deliver."
32
+ * Never as "Accepted" or "Completed". Those are delivery outcomes.
33
+ * The advance functions collapse approve+deliver into one user action, so
34
+ * task_approved is usually a transient frame — but it must not visually blur.
35
+ *
36
+ * See: docs/phase-9c-baseline.md — workflow/session phase distinction
37
+ * docs/phase-9d-baseline.md — Phase 9D freeze record
38
+ */
39
+ // ─── Formatting helpers ───────────────────────────────────────────────────────
40
+ const DIVIDER = "─".repeat(52);
41
+ function header(label) {
42
+ return `${DIVIDER}\n ${label}\n${DIVIDER}`;
43
+ }
44
+ function outcomeSymbol(outcome) {
45
+ switch (outcome) {
46
+ case "accepted": return "[done]";
47
+ case "skipped": return "[skip]";
48
+ case "skipped_by_intake": return "[auto]";
49
+ case "stopped": return "[stop]";
50
+ case "rejected": return "[reject]";
51
+ case "pending": return "[...]";
52
+ }
53
+ }
54
+ // ─── Session detail helpers ───────────────────────────────────────────────────
55
+ /**
56
+ * Extract task detail lines from the session display.
57
+ * Used for task_ready and task_conflict frames where H needs context.
58
+ *
59
+ * Reads session display (layer 2) only after workflow phase is established.
60
+ */
61
+ function sessionDetailLines(run) {
62
+ const session = run.currentSession;
63
+ if (!session)
64
+ return [];
65
+ const d = session.state.display;
66
+ const lines = [];
67
+ if (d.changeSummary)
68
+ lines.push(` Understood: ${d.changeSummary}`);
69
+ if (d.targetFiles && d.targetFiles.length)
70
+ lines.push(` Files: ${d.targetFiles.join(", ")}`);
71
+ if (d.conflicts && d.conflicts.length) {
72
+ lines.push(" Conflicts:");
73
+ for (const c of d.conflicts)
74
+ lines.push(` • ${c}`);
75
+ }
76
+ return lines;
77
+ }
78
+ /**
79
+ * Extract scope candidates from the current session's scope question.
80
+ * Only valid when workflow phase is "task_scope".
81
+ */
82
+ function scopeCandidates(run) {
83
+ const session = run.currentSession;
84
+ if (!session)
85
+ return [];
86
+ return session.state.scopeQuestion?.candidates ?? [];
87
+ }
88
+ /**
89
+ * Whether retry is available for the current task (retryCount < maxRetries).
90
+ * Avoids presenting a retry option that the coordinator would silently ignore.
91
+ */
92
+ function retryAvailable(run) {
93
+ const task = run.tasks[run.currentIndex];
94
+ if (!task)
95
+ return false;
96
+ const max = run.spec.maxRetries ?? 2;
97
+ return task.retryCount < max;
98
+ }
99
+ /**
100
+ * Build completed/stopped summary lines from task outcomes.
101
+ * WS5: reads run.tasks[i].outcome — does NOT read currentSession.
102
+ */
103
+ function taskSummaryLines(run) {
104
+ const done = run.tasks.filter(t => t.outcome !== "pending");
105
+ if (done.length === 0)
106
+ return [];
107
+ const lines = [" Tasks:"];
108
+ for (const t of done) {
109
+ const label = t.spec.label ?? t.spec.input.slice(0, 48);
110
+ lines.push(` ${outcomeSymbol(t.outcome)} ${label}`);
111
+ }
112
+ return lines;
113
+ }
114
+ // ─── Public rendering function ────────────────────────────────────────────────
115
+ /**
116
+ * Render a WorkflowRun into a ShellFrame.
117
+ *
118
+ * WS1: Pure — no I/O, no side effects.
119
+ * WS6: Returns the same ShellFrame contract as renderCursorFrame /
120
+ * renderClaudeFrame. A generic shell loop can drive all three without
121
+ * special workflow logic.
122
+ *
123
+ * Two-layer read rule:
124
+ * 1. Switch on run.phase (workflow coordinator layer).
125
+ * 2. Read currentSession.state.display for task-level detail (session layer).
126
+ */
127
+ export function renderWorkflowFrame(run) {
128
+ const { phase, display } = run;
129
+ switch (phase) {
130
+ // ── Pre-flight review (WF-R4) ─────────────────────────────────────────
131
+ case "reviewing": {
132
+ const total = run.spec.tasks.length;
133
+ const runtime = (t) => t.runtime ?? run.spec.defaultRuntime ?? "cursor";
134
+ const taskLines = run.spec.tasks.map((t, i) => {
135
+ const lbl = t.label ?? t.input.slice(0, 56);
136
+ return ` ${i + 1}. [${runtime(t)}] ${lbl}`;
137
+ });
138
+ const breakGlassLines = run.mode === "break_glass"
139
+ ? [
140
+ ` ⚠ BREAK-GLASS MODE`,
141
+ ` All steps will run without per-step approval.`,
142
+ ...(run.breakGlassReason
143
+ ? [` Reason: ${run.breakGlassReason}`]
144
+ : []),
145
+ "",
146
+ ]
147
+ : [];
148
+ return {
149
+ lines: [
150
+ "",
151
+ header(`REVIEW "${run.spec.name}" — ${total} task${total === 1 ? "" : "s"}`),
152
+ "",
153
+ ...breakGlassLines,
154
+ ...taskLines,
155
+ "",
156
+ ],
157
+ prompt: { kind: "confirm", question: "Start workflow? (y/n)" },
158
+ };
159
+ }
160
+ // ── Transient states (no prompt) ──────────────────────────────────────
161
+ case "idle": {
162
+ return {
163
+ lines: [
164
+ "",
165
+ header(`WORKFLOW ${display.headline}`),
166
+ ` ${display.progress}`,
167
+ " Call advanceWorkflow() to start.",
168
+ "",
169
+ ],
170
+ };
171
+ }
172
+ case "running": {
173
+ return {
174
+ lines: [
175
+ "",
176
+ header("WORKFLOW ADVANCING"),
177
+ ` ${display.progress}`,
178
+ ` ${display.headline}`,
179
+ "",
180
+ ],
181
+ };
182
+ }
183
+ case "task_approved": {
184
+ // Transient — advance functions collapse approve+deliver.
185
+ // Render as "Approved" explicitly. Never "Accepted" or "Completed" (9C distinction).
186
+ return {
187
+ lines: [
188
+ "",
189
+ header(`APPROVED ${display.progress}`),
190
+ " Task approved — ready to deliver.",
191
+ " (Delivery in progress...)",
192
+ "",
193
+ ],
194
+ };
195
+ }
196
+ // ── H decision required ───────────────────────────────────────────────
197
+ case "task_ready": {
198
+ const detail = sessionDetailLines(run);
199
+ // F6: show the immediately preceding task's outcome so H sees what just succeeded
200
+ // before being asked to approve the next one.
201
+ const prevTask = run.tasks[run.currentIndex - 1];
202
+ const prevLine = prevTask && prevTask.outcome !== "pending"
203
+ ? [` Previous: ${outcomeSymbol(prevTask.outcome)} ${prevTask.spec.label ?? prevTask.spec.input.slice(0, 48)}`]
204
+ : [];
205
+ // F5 / WF-A1: raw task input is the approval anchor (source of truth).
206
+ // WF-A2: interpreted summary (in detail) is assistive, not authoritative.
207
+ const taskSpec = run.spec.tasks[run.currentIndex];
208
+ const rawInputLine = taskSpec ? [` You asked: ${taskSpec.input}`] : [];
209
+ return {
210
+ lines: [
211
+ "",
212
+ header(`APPROVE? ${display.progress}`),
213
+ ` ${display.headline}`,
214
+ ...prevLine,
215
+ ...rawInputLine,
216
+ ...detail,
217
+ "",
218
+ ],
219
+ // confirm — the only way to approve or reject.
220
+ prompt: { kind: "confirm", question: "Approve this task? (y/n)" },
221
+ };
222
+ }
223
+ case "task_conflict": {
224
+ const detail = sessionDetailLines(run); // includes conflict list from session display
225
+ // F5 / WF-A1: raw task input is also anchored in conflict frames.
226
+ const taskSpec = run.spec.tasks[run.currentIndex];
227
+ const rawInputLine = taskSpec ? [` You asked: ${taskSpec.input}`] : [];
228
+ return {
229
+ lines: [
230
+ "",
231
+ header(`CONFLICT ${display.progress}`),
232
+ ` ${display.headline}`,
233
+ ...rawInputLine,
234
+ ...detail,
235
+ "",
236
+ ],
237
+ // confirm — H must explicitly accept or reject.
238
+ prompt: { kind: "confirm", question: "Accept conflict and approve task? (y/n)" },
239
+ };
240
+ }
241
+ case "task_scope": {
242
+ const candidates = scopeCandidates(run);
243
+ const candidateLines = candidates.map((c, i) => ` ${i + 1}. ${c}`);
244
+ return {
245
+ lines: [
246
+ "",
247
+ header(`SCOPE? ${display.progress}`),
248
+ ` ${display.headline}`,
249
+ ...candidateLines,
250
+ "",
251
+ ],
252
+ // choose — H selects by number.
253
+ prompt: {
254
+ kind: "choose",
255
+ question: "Select file (enter number):",
256
+ choices: candidates,
257
+ },
258
+ };
259
+ }
260
+ case "task_failed": {
261
+ // WS4: preserve specific failure note — never flatten to generic "task failed".
262
+ const failureNote = display.failureNote ?? "Task failed.";
263
+ // F7: show which task failed so H has context when choosing stop/skip/retry.
264
+ const taskSpec = run.spec.tasks[run.currentIndex];
265
+ const taskLabel = taskSpec ? (taskSpec.label ?? taskSpec.input.slice(0, 60)) : undefined;
266
+ // F8: explain retry semantics — retry re-attempts the same input, unchanged.
267
+ // This prevents H from expecting a different outcome on an unchanged spec.
268
+ // WS3: always "choose", never "confirm". No implicit default.
269
+ const choices = retryAvailable(run)
270
+ ? ["stop", "skip", "retry"]
271
+ : ["stop", "skip"];
272
+ const retryNote = retryAvailable(run)
273
+ ? " Note: retry re-attempts the same input unchanged. Use skip if the spec needs correction."
274
+ : undefined;
275
+ return {
276
+ lines: [
277
+ "",
278
+ header(`FAILED ${display.progress}`),
279
+ ...(taskLabel ? [` Task: ${taskLabel}`] : []),
280
+ ` Failure: ${failureNote}`,
281
+ ...(retryNote ? [retryNote] : []),
282
+ "",
283
+ ],
284
+ prompt: { kind: "choose", question: "Action:", choices },
285
+ };
286
+ }
287
+ // ── Terminal phases (no prompt) ───────────────────────────────────────
288
+ case "completed": {
289
+ // WS5: history from run.tasks[i].outcome, not currentSession.
290
+ const summary = taskSummaryLines(run);
291
+ return {
292
+ lines: [
293
+ "",
294
+ header("COMPLETED"),
295
+ ` ${display.headline}`,
296
+ ...summary,
297
+ "",
298
+ ],
299
+ };
300
+ }
301
+ case "stopped": {
302
+ // WS5: history from run.tasks[i].outcome, not currentSession.
303
+ const summary = taskSummaryLines(run);
304
+ return {
305
+ lines: [
306
+ "",
307
+ header("STOPPED"),
308
+ ` ${display.headline}`,
309
+ ...summary,
310
+ // F10: explain partial-state clearly so H knows completed tasks are already applied.
311
+ " Note: completed tasks have already been applied to the workspace.",
312
+ " Use version control or your editor's undo to revert if needed.",
313
+ "",
314
+ ],
315
+ };
316
+ }
317
+ }
318
+ }
319
+ //# sourceMappingURL=workflow-render.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow-render.js","sourceRoot":"","sources":["../../../src/shell/workflow-render.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,110 @@
1
+ /**
2
+ * Phase 9D: Workflow shell advance functions.
3
+ *
4
+ * ── Purpose ───────────────────────────────────────────────────────────────────
5
+ *
6
+ * Pure (or async-pure) functions that map a user answer + current WorkflowRun
7
+ * → next WorkflowRun. These are the seam between the I/O layer and the
8
+ * WorkflowCoordinator API.
9
+ *
10
+ * ── What these functions do ───────────────────────────────────────────────────
11
+ *
12
+ * advanceWorkflowOnConfirm — handles "confirm" prompt answers (y/n).
13
+ * Valid from: task_ready, task_conflict.
14
+ * yes: [acceptConflict if needed] → confirmWorkflowTask(true) → deliver
15
+ * → if running: advanceWorkflow (auto-advance to next task)
16
+ * no: confirmWorkflowTask(false) → task_failed
17
+ *
18
+ * advanceWorkflowOnChoice — handles "choose" prompt answers (1-N).
19
+ * Valid from: task_scope, task_failed.
20
+ * task_scope: answerWorkflowScope(idx) → deliver → if running: advanceWorkflow
21
+ * task_failed: applyFailureAction(action) → if running: advanceWorkflow
22
+ *
23
+ * ── The approve+deliver collapse ─────────────────────────────────────────────
24
+ *
25
+ * The coordinator keeps confirmWorkflowTask and deliverWorkflowTask separate
26
+ * (W2 — coordinator never approves on behalf of H). The shell collapses them
27
+ * into one user action because "I approved it, now run it" is the correct
28
+ * product-shell semantic. task_approved is an internal transition, not shown.
29
+ *
30
+ * This is identical to what Phase 9A did for cursor-shell / claude-shell.
31
+ *
32
+ * ── What these functions are NOT ──────────────────────────────────────────────
33
+ *
34
+ * WS2: NOT authority layers — all decisions are delegated to coordinator functions.
35
+ * The shell never calls approve() or deliver() directly on sessions.
36
+ * It only calls coordinator functions (confirmWorkflowTask, deliverWorkflowTask).
37
+ * NOT renderers — rendering is in workflow-render.ts.
38
+ * NOT stateful — return new WorkflowRun; do not mutate.
39
+ *
40
+ * See: docs/phase-9d-baseline.md
41
+ */
42
+ import type { WorkflowRun, WorkflowPlugins } from "../workflow/types.js";
43
+ import type { CursorOCDPolicy } from "../cursor/types.js";
44
+ import type { ClaudeOCDPolicy } from "../claude/artifact-mapper.js";
45
+ import type { ClaudeToolPolicy } from "../claude/types.js";
46
+ import type { ClaudeGateDeps } from "../claude/delivery-gate.js";
47
+ /**
48
+ * WorkflowShellPolicies — all OCD + tool policies needed by advanceWorkflow.
49
+ *
50
+ * Grouped here to keep advance function signatures clean.
51
+ * Mirrors Phase 9A's per-function policy params, grouped for the workflow context.
52
+ */
53
+ export type WorkflowShellPolicies = {
54
+ readonly cursorPolicy: CursorOCDPolicy;
55
+ readonly claudeOCDPolicy: ClaudeOCDPolicy;
56
+ readonly claudeToolPolicy: ClaudeToolPolicy;
57
+ };
58
+ /**
59
+ * Advance the workflow based on a yes/no answer to the current confirm prompt.
60
+ *
61
+ * Called when `renderWorkflowFrame(run).prompt.kind === "confirm"`.
62
+ * Valid from "task_ready" and "task_conflict".
63
+ *
64
+ * yes: if task_conflict → acceptWorkflowConflict first.
65
+ * then confirmWorkflowTask(true) → task_approved.
66
+ * then deliverWorkflowTask → final outcome.
67
+ * if outcome === "running" → advanceWorkflow (auto-advance to next task).
68
+ *
69
+ * no: confirmWorkflowTask(false) → task_failed (outcome: "rejected").
70
+ *
71
+ * WS2: this function never calls approve() or deliver() on sessions directly.
72
+ * All decisions go through coordinator functions.
73
+ *
74
+ * @param run Current workflow run (must be task_ready or task_conflict).
75
+ * @param yes true = H approved; false = H rejected.
76
+ * @param plugins Runtime plugins (coordinator picks by session runtime).
77
+ * @param storeDir UCP store directory.
78
+ * @param policies OCD and tool policies for advanceWorkflow.
79
+ * @param deps Optional Claude gate dependencies (for test injection).
80
+ */
81
+ export declare function advanceWorkflowOnConfirm(run: WorkflowRun, yes: boolean, plugins: WorkflowPlugins, storeDir: string, policies: WorkflowShellPolicies, deps?: ClaudeGateDeps): Promise<WorkflowRun>;
82
+ /**
83
+ * Advance the workflow based on a numbered choice.
84
+ *
85
+ * Called when `renderWorkflowFrame(run).prompt.kind === "choose"`.
86
+ * Valid from "task_scope" and "task_failed".
87
+ *
88
+ * From task_scope:
89
+ * choiceIdx (1-N) selects a candidate file.
90
+ * answerWorkflowScope → task_approved → deliver → if running: advanceWorkflow.
91
+ * Out-of-range index → returns run unchanged (re-prompt).
92
+ *
93
+ * From task_failed:
94
+ * choiceIdx 1 = "stop" → applyFailureAction("stop") → stopped.
95
+ * choiceIdx 2 = "skip" → applyFailureAction("skip") → running/completed.
96
+ * choiceIdx 3 = "retry" → applyFailureAction("retry") → running (if within limit).
97
+ * If applyFailureAction("retry") returns the same run (max retries), re-prompt.
98
+ * If action produces "running" → advanceWorkflow.
99
+ *
100
+ * WS3: The "stop/skip/retry" choice is never a confirm — it cannot imply a default.
101
+ *
102
+ * @param run Current workflow run (must be task_scope or task_failed).
103
+ * @param choiceIdx 1-based index into the choices shown by renderWorkflowFrame.
104
+ * @param plugins Runtime plugins.
105
+ * @param storeDir UCP store directory.
106
+ * @param policies OCD and tool policies for advanceWorkflow.
107
+ * @param deps Optional Claude gate dependencies.
108
+ */
109
+ export declare function advanceWorkflowOnChoice(run: WorkflowRun, choiceIdx: number, plugins: WorkflowPlugins, storeDir: string, policies: WorkflowShellPolicies, deps?: ClaudeGateDeps): Promise<WorkflowRun>;
110
+ //# sourceMappingURL=workflow-shell.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow-shell.d.ts","sourceRoot":"","sources":["../../../src/shell/workflow-shell.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AAcH,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,MAAO,sBAAsB,CAAC;AAC1E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAoB,oBAAoB,CAAC;AACxE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAoB,8BAA8B,CAAC;AAClF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAmB,oBAAoB,CAAC;AACxE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAoB,4BAA4B,CAAC;AAI/E;;;;;GAKG;AACH,MAAM,MAAM,qBAAqB,GAAG;IAClC,QAAQ,CAAC,YAAY,EAAM,eAAe,CAAC;IAC3C,QAAQ,CAAC,eAAe,EAAG,eAAe,CAAC;IAC3C,QAAQ,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;CAC7C,CAAC;AAuCF;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAsB,wBAAwB,CAC5C,GAAG,EAAO,WAAW,EACrB,GAAG,EAAO,OAAO,EACjB,OAAO,EAAG,eAAe,EACzB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,qBAAqB,EAC/B,IAAI,CAAC,EAAK,cAAc,GACvB,OAAO,CAAC,WAAW,CAAC,CAuCtB;AAID;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAsB,uBAAuB,CAC3C,GAAG,EAAQ,WAAW,EACtB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAI,eAAe,EAC1B,QAAQ,EAAG,MAAM,EACjB,QAAQ,EAAG,qBAAqB,EAChC,IAAI,CAAC,EAAM,cAAc,GACxB,OAAO,CAAC,WAAW,CAAC,CA4CtB"}
@@ -0,0 +1,180 @@
1
+ /**
2
+ * Phase 9D: Workflow shell advance functions.
3
+ *
4
+ * ── Purpose ───────────────────────────────────────────────────────────────────
5
+ *
6
+ * Pure (or async-pure) functions that map a user answer + current WorkflowRun
7
+ * → next WorkflowRun. These are the seam between the I/O layer and the
8
+ * WorkflowCoordinator API.
9
+ *
10
+ * ── What these functions do ───────────────────────────────────────────────────
11
+ *
12
+ * advanceWorkflowOnConfirm — handles "confirm" prompt answers (y/n).
13
+ * Valid from: task_ready, task_conflict.
14
+ * yes: [acceptConflict if needed] → confirmWorkflowTask(true) → deliver
15
+ * → if running: advanceWorkflow (auto-advance to next task)
16
+ * no: confirmWorkflowTask(false) → task_failed
17
+ *
18
+ * advanceWorkflowOnChoice — handles "choose" prompt answers (1-N).
19
+ * Valid from: task_scope, task_failed.
20
+ * task_scope: answerWorkflowScope(idx) → deliver → if running: advanceWorkflow
21
+ * task_failed: applyFailureAction(action) → if running: advanceWorkflow
22
+ *
23
+ * ── The approve+deliver collapse ─────────────────────────────────────────────
24
+ *
25
+ * The coordinator keeps confirmWorkflowTask and deliverWorkflowTask separate
26
+ * (W2 — coordinator never approves on behalf of H). The shell collapses them
27
+ * into one user action because "I approved it, now run it" is the correct
28
+ * product-shell semantic. task_approved is an internal transition, not shown.
29
+ *
30
+ * This is identical to what Phase 9A did for cursor-shell / claude-shell.
31
+ *
32
+ * ── What these functions are NOT ──────────────────────────────────────────────
33
+ *
34
+ * WS2: NOT authority layers — all decisions are delegated to coordinator functions.
35
+ * The shell never calls approve() or deliver() directly on sessions.
36
+ * It only calls coordinator functions (confirmWorkflowTask, deliverWorkflowTask).
37
+ * NOT renderers — rendering is in workflow-render.ts.
38
+ * NOT stateful — return new WorkflowRun; do not mutate.
39
+ *
40
+ * See: docs/phase-9d-baseline.md
41
+ */
42
+ import { startWorkflow, cancelWorkflow, acceptWorkflowConflict, confirmWorkflowTask, deliverWorkflowTask, answerWorkflowScope, applyFailureAction, advanceWorkflow, isWorkflowTerminal, } from "../workflow/coordinator.js";
43
+ // ─── Internal: deliver + auto-advance ────────────────────────────────────────
44
+ /**
45
+ * Deliver the current approved task and auto-advance when delivery returns "running".
46
+ *
47
+ * The "running" state means delivery succeeded and there are more tasks.
48
+ * The shell advances immediately so the next task is ready for H without an
49
+ * extra prompt round-trip.
50
+ *
51
+ * task_scope and task_failed are surfaced to H as-is (no auto-advance).
52
+ */
53
+ async function deliverAndAdvance(run, plugins, storeDir, policies, deps) {
54
+ const delivered = await deliverWorkflowTask(run, plugins, storeDir, deps);
55
+ // Auto-advance through "running" (between tasks) so the shell loop gets
56
+ // a stable phase (task_ready, task_conflict, task_scope, task_failed,
57
+ // completed, or stopped) rather than needing an extra advanceWorkflow call.
58
+ if (delivered.phase === "running") {
59
+ return advanceWorkflow(delivered, policies.cursorPolicy, policies.claudeOCDPolicy, policies.claudeToolPolicy);
60
+ }
61
+ return delivered;
62
+ }
63
+ // ─── Confirm advance (y/n) ────────────────────────────────────────────────────
64
+ /**
65
+ * Advance the workflow based on a yes/no answer to the current confirm prompt.
66
+ *
67
+ * Called when `renderWorkflowFrame(run).prompt.kind === "confirm"`.
68
+ * Valid from "task_ready" and "task_conflict".
69
+ *
70
+ * yes: if task_conflict → acceptWorkflowConflict first.
71
+ * then confirmWorkflowTask(true) → task_approved.
72
+ * then deliverWorkflowTask → final outcome.
73
+ * if outcome === "running" → advanceWorkflow (auto-advance to next task).
74
+ *
75
+ * no: confirmWorkflowTask(false) → task_failed (outcome: "rejected").
76
+ *
77
+ * WS2: this function never calls approve() or deliver() on sessions directly.
78
+ * All decisions go through coordinator functions.
79
+ *
80
+ * @param run Current workflow run (must be task_ready or task_conflict).
81
+ * @param yes true = H approved; false = H rejected.
82
+ * @param plugins Runtime plugins (coordinator picks by session runtime).
83
+ * @param storeDir UCP store directory.
84
+ * @param policies OCD and tool policies for advanceWorkflow.
85
+ * @param deps Optional Claude gate dependencies (for test injection).
86
+ */
87
+ export async function advanceWorkflowOnConfirm(run, yes, plugins, storeDir, policies, deps) {
88
+ if (isWorkflowTerminal(run))
89
+ return run;
90
+ // ── reviewing: pre-flight start/cancel ───────────────────────────────────
91
+ // WF-R3: startWorkflow is the only path out of reviewing into execution.
92
+ if (run.phase === "reviewing") {
93
+ if (!yes)
94
+ return cancelWorkflow(run);
95
+ return startWorkflow(run, policies.cursorPolicy, policies.claudeOCDPolicy, policies.claudeToolPolicy);
96
+ }
97
+ if (run.phase !== "task_ready" && run.phase !== "task_conflict")
98
+ return run;
99
+ // BG-2: break_glass skips per-step human confirm.
100
+ // Same workspace, same runtime, same seam — only the H gate is removed.
101
+ // The audit record still captures every step (BG-3).
102
+ const effectiveYes = run.mode === "break_glass" ? true : yes;
103
+ if (!effectiveYes) {
104
+ // H rejected — transition to task_failed.
105
+ return confirmWorkflowTask(run, false);
106
+ }
107
+ // H approved (or break-glass auto-approved).
108
+ // For task_conflict: accept the conflict first to reach task_ready.
109
+ const ready = run.phase === "task_conflict"
110
+ ? acceptWorkflowConflict(run)
111
+ : run;
112
+ // Approve — transitions to task_approved (internal).
113
+ const approved = confirmWorkflowTask(ready, true);
114
+ // Deliver + auto-advance through "running" if there are more tasks.
115
+ return deliverAndAdvance(approved, plugins, storeDir, policies, deps);
116
+ }
117
+ // ─── Choice advance (1-N selection) ──────────────────────────────────────────
118
+ /**
119
+ * Advance the workflow based on a numbered choice.
120
+ *
121
+ * Called when `renderWorkflowFrame(run).prompt.kind === "choose"`.
122
+ * Valid from "task_scope" and "task_failed".
123
+ *
124
+ * From task_scope:
125
+ * choiceIdx (1-N) selects a candidate file.
126
+ * answerWorkflowScope → task_approved → deliver → if running: advanceWorkflow.
127
+ * Out-of-range index → returns run unchanged (re-prompt).
128
+ *
129
+ * From task_failed:
130
+ * choiceIdx 1 = "stop" → applyFailureAction("stop") → stopped.
131
+ * choiceIdx 2 = "skip" → applyFailureAction("skip") → running/completed.
132
+ * choiceIdx 3 = "retry" → applyFailureAction("retry") → running (if within limit).
133
+ * If applyFailureAction("retry") returns the same run (max retries), re-prompt.
134
+ * If action produces "running" → advanceWorkflow.
135
+ *
136
+ * WS3: The "stop/skip/retry" choice is never a confirm — it cannot imply a default.
137
+ *
138
+ * @param run Current workflow run (must be task_scope or task_failed).
139
+ * @param choiceIdx 1-based index into the choices shown by renderWorkflowFrame.
140
+ * @param plugins Runtime plugins.
141
+ * @param storeDir UCP store directory.
142
+ * @param policies OCD and tool policies for advanceWorkflow.
143
+ * @param deps Optional Claude gate dependencies.
144
+ */
145
+ export async function advanceWorkflowOnChoice(run, choiceIdx, plugins, storeDir, policies, deps) {
146
+ if (isWorkflowTerminal(run))
147
+ return run;
148
+ // ── task_scope: file selection ────────────────────────────────────────────
149
+ if (run.phase === "task_scope") {
150
+ const answered = answerWorkflowScope(run, choiceIdx);
151
+ if (answered === run)
152
+ return run; // out-of-range — re-prompt
153
+ // answered is now task_approved — deliver + auto-advance.
154
+ return deliverAndAdvance(answered, plugins, storeDir, policies, deps);
155
+ }
156
+ // ── task_failed: stop / skip / retry ─────────────────────────────────────
157
+ if (run.phase === "task_failed") {
158
+ // Map choice index to action.
159
+ // Choices match what renderWorkflowFrame presents:
160
+ // 1 = "stop", 2 = "skip", 3 = "retry" (when retry is available)
161
+ const actionMap = {
162
+ 1: "stop",
163
+ 2: "skip",
164
+ 3: "retry",
165
+ };
166
+ const action = actionMap[choiceIdx];
167
+ if (!action)
168
+ return run; // out-of-range — re-prompt
169
+ const next = applyFailureAction(run, action);
170
+ if (next === run)
171
+ return run; // retry at max limit — re-prompt
172
+ // If action produced "running", auto-advance to next task.
173
+ if (next.phase === "running") {
174
+ return advanceWorkflow(next, policies.cursorPolicy, policies.claudeOCDPolicy, policies.claudeToolPolicy);
175
+ }
176
+ return next;
177
+ }
178
+ return run;
179
+ }
180
+ //# sourceMappingURL=workflow-shell.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow-shell.js","sourceRoot":"","sources":["../../../src/shell/workflow-shell.ts"],"names":[],"mappings":"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"}