@petepetrash/circuit 0.1.0

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 (1993) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +246 -0
  3. package/bin/circuit +44 -0
  4. package/bin/node-version-guard.d.ts +12 -0
  5. package/bin/node-version-guard.js +65 -0
  6. package/dist/app/checkpoints/discover.d.ts +63 -0
  7. package/dist/app/checkpoints/discover.d.ts.map +1 -0
  8. package/dist/app/checkpoints/discover.js +121 -0
  9. package/dist/app/checkpoints/discover.js.map +1 -0
  10. package/dist/app/checkpoints/render.d.ts +4 -0
  11. package/dist/app/checkpoints/render.d.ts.map +1 -0
  12. package/dist/app/checkpoints/render.js +68 -0
  13. package/dist/app/checkpoints/render.js.map +1 -0
  14. package/dist/app/continuity/brief.d.ts +140 -0
  15. package/dist/app/continuity/brief.d.ts.map +1 -0
  16. package/dist/app/continuity/brief.js +557 -0
  17. package/dist/app/continuity/brief.js.map +1 -0
  18. package/dist/app/continuity/harvest.d.ts +65 -0
  19. package/dist/app/continuity/harvest.d.ts.map +1 -0
  20. package/dist/app/continuity/harvest.js +658 -0
  21. package/dist/app/continuity/harvest.js.map +1 -0
  22. package/dist/app/continuity/records.d.ts +39 -0
  23. package/dist/app/continuity/records.d.ts.map +1 -0
  24. package/dist/app/continuity/records.js +210 -0
  25. package/dist/app/continuity/records.js.map +1 -0
  26. package/dist/app/history/extract.d.ts +8 -0
  27. package/dist/app/history/extract.d.ts.map +1 -0
  28. package/dist/app/history/extract.js +716 -0
  29. package/dist/app/history/extract.js.map +1 -0
  30. package/dist/app/history/indexer.d.ts +107 -0
  31. package/dist/app/history/indexer.d.ts.map +1 -0
  32. package/dist/app/history/indexer.js +234 -0
  33. package/dist/app/history/indexer.js.map +1 -0
  34. package/dist/app/history/memory-effect-read.d.ts +8 -0
  35. package/dist/app/history/memory-effect-read.d.ts.map +1 -0
  36. package/dist/app/history/memory-effect-read.js +40 -0
  37. package/dist/app/history/memory-effect-read.js.map +1 -0
  38. package/dist/app/history/memory-effect.d.ts +34 -0
  39. package/dist/app/history/memory-effect.d.ts.map +1 -0
  40. package/dist/app/history/memory-effect.js +234 -0
  41. package/dist/app/history/memory-effect.js.map +1 -0
  42. package/dist/app/history/memory-identity.d.ts +7 -0
  43. package/dist/app/history/memory-identity.d.ts.map +1 -0
  44. package/dist/app/history/memory-identity.js +39 -0
  45. package/dist/app/history/memory-identity.js.map +1 -0
  46. package/dist/app/history/memory-merge.d.ts +16 -0
  47. package/dist/app/history/memory-merge.d.ts.map +1 -0
  48. package/dist/app/history/memory-merge.js +224 -0
  49. package/dist/app/history/memory-merge.js.map +1 -0
  50. package/dist/app/history/memory-preview.d.ts +10 -0
  51. package/dist/app/history/memory-preview.d.ts.map +1 -0
  52. package/dist/app/history/memory-preview.js +103 -0
  53. package/dist/app/history/memory-preview.js.map +1 -0
  54. package/dist/app/history/pull-log.d.ts +13 -0
  55. package/dist/app/history/pull-log.d.ts.map +1 -0
  56. package/dist/app/history/pull-log.js +91 -0
  57. package/dist/app/history/pull-log.js.map +1 -0
  58. package/dist/app/history/pull-suppression.d.ts +12 -0
  59. package/dist/app/history/pull-suppression.d.ts.map +1 -0
  60. package/dist/app/history/pull-suppression.js +40 -0
  61. package/dist/app/history/pull-suppression.js.map +1 -0
  62. package/dist/app/history/query.d.ts +19 -0
  63. package/dist/app/history/query.d.ts.map +1 -0
  64. package/dist/app/history/query.js +342 -0
  65. package/dist/app/history/query.js.map +1 -0
  66. package/dist/app/history/recall-precision.d.ts +15 -0
  67. package/dist/app/history/recall-precision.d.ts.map +1 -0
  68. package/dist/app/history/recall-precision.js +116 -0
  69. package/dist/app/history/recall-precision.js.map +1 -0
  70. package/dist/app/history/run-source-files.d.ts +23 -0
  71. package/dist/app/history/run-source-files.d.ts.map +1 -0
  72. package/dist/app/history/run-source-files.js +82 -0
  73. package/dist/app/history/run-source-files.js.map +1 -0
  74. package/dist/app/history/run-start-recall.d.ts +18 -0
  75. package/dist/app/history/run-start-recall.d.ts.map +1 -0
  76. package/dist/app/history/run-start-recall.js +156 -0
  77. package/dist/app/history/run-start-recall.js.map +1 -0
  78. package/dist/app/inbox/discover.d.ts +63 -0
  79. package/dist/app/inbox/discover.d.ts.map +1 -0
  80. package/dist/app/inbox/discover.js +120 -0
  81. package/dist/app/inbox/discover.js.map +1 -0
  82. package/dist/app/inbox/render.d.ts +4 -0
  83. package/dist/app/inbox/render.d.ts.map +1 -0
  84. package/dist/app/inbox/render.js +66 -0
  85. package/dist/app/inbox/render.js.map +1 -0
  86. package/dist/app/operator-summary/writer.d.ts +41 -0
  87. package/dist/app/operator-summary/writer.d.ts.map +1 -0
  88. package/dist/app/operator-summary/writer.js +1667 -0
  89. package/dist/app/operator-summary/writer.js.map +1 -0
  90. package/dist/app/process-evidence/projection.d.ts +36 -0
  91. package/dist/app/process-evidence/projection.d.ts.map +1 -0
  92. package/dist/app/process-evidence/projection.js +137 -0
  93. package/dist/app/process-evidence/projection.js.map +1 -0
  94. package/dist/app/run-envelope/autonomous-run.d.ts +17 -0
  95. package/dist/app/run-envelope/autonomous-run.d.ts.map +1 -0
  96. package/dist/app/run-envelope/autonomous-run.js +59 -0
  97. package/dist/app/run-envelope/autonomous-run.js.map +1 -0
  98. package/dist/app/run-envelope/continuation-loop.d.ts +24 -0
  99. package/dist/app/run-envelope/continuation-loop.d.ts.map +1 -0
  100. package/dist/app/run-envelope/continuation-loop.js +72 -0
  101. package/dist/app/run-envelope/continuation-loop.js.map +1 -0
  102. package/dist/app/run-envelope/contract-lock.d.ts +15 -0
  103. package/dist/app/run-envelope/contract-lock.d.ts.map +1 -0
  104. package/dist/app/run-envelope/contract-lock.js +44 -0
  105. package/dist/app/run-envelope/contract-lock.js.map +1 -0
  106. package/dist/app/run-envelope/contract-quality.d.ts +15 -0
  107. package/dist/app/run-envelope/contract-quality.d.ts.map +1 -0
  108. package/dist/app/run-envelope/contract-quality.js +48 -0
  109. package/dist/app/run-envelope/contract-quality.js.map +1 -0
  110. package/dist/app/run-envelope/no-progress.d.ts +11 -0
  111. package/dist/app/run-envelope/no-progress.d.ts.map +1 -0
  112. package/dist/app/run-envelope/no-progress.js +40 -0
  113. package/dist/app/run-envelope/no-progress.js.map +1 -0
  114. package/dist/app/run-envelope/shadow-record.d.ts +40 -0
  115. package/dist/app/run-envelope/shadow-record.d.ts.map +1 -0
  116. package/dist/app/run-envelope/shadow-record.js +108 -0
  117. package/dist/app/run-envelope/shadow-record.js.map +1 -0
  118. package/dist/app/run-envelope/source-record.d.ts +62 -0
  119. package/dist/app/run-envelope/source-record.d.ts.map +1 -0
  120. package/dist/app/run-envelope/source-record.js +648 -0
  121. package/dist/app/run-envelope/source-record.js.map +1 -0
  122. package/dist/app/run-status/projection-common.d.ts +57 -0
  123. package/dist/app/run-status/projection-common.d.ts.map +1 -0
  124. package/dist/app/run-status/projection-common.js +90 -0
  125. package/dist/app/run-status/projection-common.js.map +1 -0
  126. package/dist/app/run-status/run-folder-projector.d.ts +9 -0
  127. package/dist/app/run-status/run-folder-projector.d.ts.map +1 -0
  128. package/dist/app/run-status/run-folder-projector.js +68 -0
  129. package/dist/app/run-status/run-folder-projector.js.map +1 -0
  130. package/dist/app/run-status/runtime-run-folder.d.ts +4 -0
  131. package/dist/app/run-status/runtime-run-folder.d.ts.map +1 -0
  132. package/dist/app/run-status/runtime-run-folder.js +461 -0
  133. package/dist/app/run-status/runtime-run-folder.js.map +1 -0
  134. package/dist/cli/checkpoints.d.ts +7 -0
  135. package/dist/cli/checkpoints.d.ts.map +1 -0
  136. package/dist/cli/checkpoints.js +60 -0
  137. package/dist/cli/checkpoints.js.map +1 -0
  138. package/dist/cli/chosen-connectors.d.ts +14 -0
  139. package/dist/cli/chosen-connectors.d.ts.map +1 -0
  140. package/dist/cli/chosen-connectors.js +85 -0
  141. package/dist/cli/chosen-connectors.js.map +1 -0
  142. package/dist/cli/circuit.d.ts +9 -0
  143. package/dist/cli/circuit.d.ts.map +1 -0
  144. package/dist/cli/circuit.js +218 -0
  145. package/dist/cli/circuit.js.map +1 -0
  146. package/dist/cli/command-vocabulary.d.ts +3 -0
  147. package/dist/cli/command-vocabulary.d.ts.map +1 -0
  148. package/dist/cli/command-vocabulary.js +26 -0
  149. package/dist/cli/command-vocabulary.js.map +1 -0
  150. package/dist/cli/commander-support.d.ts +6 -0
  151. package/dist/cli/commander-support.d.ts.map +1 -0
  152. package/dist/cli/commander-support.js +61 -0
  153. package/dist/cli/commander-support.js.map +1 -0
  154. package/dist/cli/compiled-flow-loading.d.ts +21 -0
  155. package/dist/cli/compiled-flow-loading.d.ts.map +1 -0
  156. package/dist/cli/compiled-flow-loading.js +84 -0
  157. package/dist/cli/compiled-flow-loading.js.map +1 -0
  158. package/dist/cli/config-command.d.ts +33 -0
  159. package/dist/cli/config-command.d.ts.map +1 -0
  160. package/dist/cli/config-command.js +367 -0
  161. package/dist/cli/config-command.js.map +1 -0
  162. package/dist/cli/create.d.ts +12 -0
  163. package/dist/cli/create.d.ts.map +1 -0
  164. package/dist/cli/create.js +229 -0
  165. package/dist/cli/create.js.map +1 -0
  166. package/dist/cli/custom-flow-package.d.ts +62 -0
  167. package/dist/cli/custom-flow-package.d.ts.map +1 -0
  168. package/dist/cli/custom-flow-package.js +294 -0
  169. package/dist/cli/custom-flow-package.js.map +1 -0
  170. package/dist/cli/doctor.d.ts +9 -0
  171. package/dist/cli/doctor.d.ts.map +1 -0
  172. package/dist/cli/doctor.js +147 -0
  173. package/dist/cli/doctor.js.map +1 -0
  174. package/dist/cli/flow-selection-preview.d.ts +784 -0
  175. package/dist/cli/flow-selection-preview.d.ts.map +1 -0
  176. package/dist/cli/flow-selection-preview.js +248 -0
  177. package/dist/cli/flow-selection-preview.js.map +1 -0
  178. package/dist/cli/front-door.d.ts +3 -0
  179. package/dist/cli/front-door.d.ts.map +1 -0
  180. package/dist/cli/front-door.js +41 -0
  181. package/dist/cli/front-door.js.map +1 -0
  182. package/dist/cli/generate.d.ts +8 -0
  183. package/dist/cli/generate.d.ts.map +1 -0
  184. package/dist/cli/generate.js +346 -0
  185. package/dist/cli/generate.js.map +1 -0
  186. package/dist/cli/handoff-codex-hooks.d.ts +25 -0
  187. package/dist/cli/handoff-codex-hooks.d.ts.map +1 -0
  188. package/dist/cli/handoff-codex-hooks.js +555 -0
  189. package/dist/cli/handoff-codex-hooks.js.map +1 -0
  190. package/dist/cli/handoff.d.ts +8 -0
  191. package/dist/cli/handoff.d.ts.map +1 -0
  192. package/dist/cli/handoff.js +634 -0
  193. package/dist/cli/handoff.js.map +1 -0
  194. package/dist/cli/help.d.ts +15 -0
  195. package/dist/cli/help.d.ts.map +1 -0
  196. package/dist/cli/help.js +312 -0
  197. package/dist/cli/help.js.map +1 -0
  198. package/dist/cli/history.d.ts +2 -0
  199. package/dist/cli/history.d.ts.map +1 -0
  200. package/dist/cli/history.js +384 -0
  201. package/dist/cli/history.js.map +1 -0
  202. package/dist/cli/inbox.d.ts +7 -0
  203. package/dist/cli/inbox.d.ts.map +1 -0
  204. package/dist/cli/inbox.js +58 -0
  205. package/dist/cli/inbox.js.map +1 -0
  206. package/dist/cli/interactive/app.d.ts +11 -0
  207. package/dist/cli/interactive/app.d.ts.map +1 -0
  208. package/dist/cli/interactive/app.js +220 -0
  209. package/dist/cli/interactive/app.js.map +1 -0
  210. package/dist/cli/interactive/index.d.ts +2 -0
  211. package/dist/cli/interactive/index.d.ts.map +1 -0
  212. package/dist/cli/interactive/index.js +51 -0
  213. package/dist/cli/interactive/index.js.map +1 -0
  214. package/dist/cli/interactive/state.d.ts +122 -0
  215. package/dist/cli/interactive/state.d.ts.map +1 -0
  216. package/dist/cli/interactive/state.js +413 -0
  217. package/dist/cli/interactive/state.js.map +1 -0
  218. package/dist/cli/memory.d.ts +5 -0
  219. package/dist/cli/memory.d.ts.map +1 -0
  220. package/dist/cli/memory.js +327 -0
  221. package/dist/cli/memory.js.map +1 -0
  222. package/dist/cli/post-run-artifacts.d.ts +45 -0
  223. package/dist/cli/post-run-artifacts.d.ts.map +1 -0
  224. package/dist/cli/post-run-artifacts.js +100 -0
  225. package/dist/cli/post-run-artifacts.js.map +1 -0
  226. package/dist/cli/preview.d.ts +9 -0
  227. package/dist/cli/preview.d.ts.map +1 -0
  228. package/dist/cli/preview.js +326 -0
  229. package/dist/cli/preview.js.map +1 -0
  230. package/dist/cli/reclaim.d.ts +2 -0
  231. package/dist/cli/reclaim.d.ts.map +1 -0
  232. package/dist/cli/reclaim.js +67 -0
  233. package/dist/cli/reclaim.js.map +1 -0
  234. package/dist/cli/recovery-attempt-runner.d.ts +25 -0
  235. package/dist/cli/recovery-attempt-runner.d.ts.map +1 -0
  236. package/dist/cli/recovery-attempt-runner.js +98 -0
  237. package/dist/cli/recovery-attempt-runner.js.map +1 -0
  238. package/dist/cli/resume-input.d.ts +27 -0
  239. package/dist/cli/resume-input.d.ts.map +1 -0
  240. package/dist/cli/resume-input.js +58 -0
  241. package/dist/cli/resume-input.js.map +1 -0
  242. package/dist/cli/routed-connectors.d.ts +14 -0
  243. package/dist/cli/routed-connectors.d.ts.map +1 -0
  244. package/dist/cli/routed-connectors.js +85 -0
  245. package/dist/cli/routed-connectors.js.map +1 -0
  246. package/dist/cli/run-flag-vocabulary.d.ts +14 -0
  247. package/dist/cli/run-flag-vocabulary.d.ts.map +1 -0
  248. package/dist/cli/run-flag-vocabulary.js +38 -0
  249. package/dist/cli/run-flag-vocabulary.js.map +1 -0
  250. package/dist/cli/run-output.d.ts +32 -0
  251. package/dist/cli/run-output.d.ts.map +1 -0
  252. package/dist/cli/run-output.js +47 -0
  253. package/dist/cli/run-output.js.map +1 -0
  254. package/dist/cli/run-stdout-envelope.d.ts +47 -0
  255. package/dist/cli/run-stdout-envelope.d.ts.map +1 -0
  256. package/dist/cli/run-stdout-envelope.js +98 -0
  257. package/dist/cli/run-stdout-envelope.js.map +1 -0
  258. package/dist/cli/run.d.ts +59 -0
  259. package/dist/cli/run.d.ts.map +1 -0
  260. package/dist/cli/run.js +1182 -0
  261. package/dist/cli/run.js.map +1 -0
  262. package/dist/cli/runs.d.ts +2 -0
  263. package/dist/cli/runs.d.ts.map +1 -0
  264. package/dist/cli/runs.js +88 -0
  265. package/dist/cli/runs.js.map +1 -0
  266. package/dist/cli/runtime-routing-policy.d.ts +51 -0
  267. package/dist/cli/runtime-routing-policy.d.ts.map +1 -0
  268. package/dist/cli/runtime-routing-policy.js +143 -0
  269. package/dist/cli/runtime-routing-policy.js.map +1 -0
  270. package/dist/cli/styled-table.d.ts +11 -0
  271. package/dist/cli/styled-table.d.ts.map +1 -0
  272. package/dist/cli/styled-table.js +40 -0
  273. package/dist/cli/styled-table.js.map +1 -0
  274. package/dist/cli/terminal-style.d.ts +26 -0
  275. package/dist/cli/terminal-style.d.ts.map +1 -0
  276. package/dist/cli/terminal-style.js +75 -0
  277. package/dist/cli/terminal-style.js.map +1 -0
  278. package/dist/cli/tty-notice.d.ts +21 -0
  279. package/dist/cli/tty-notice.d.ts.map +1 -0
  280. package/dist/cli/tty-notice.js +35 -0
  281. package/dist/cli/tty-notice.js.map +1 -0
  282. package/dist/cli/uninstall.d.ts +22 -0
  283. package/dist/cli/uninstall.d.ts.map +1 -0
  284. package/dist/cli/uninstall.js +277 -0
  285. package/dist/cli/uninstall.js.map +1 -0
  286. package/dist/cli/utility-progress.d.ts +14 -0
  287. package/dist/cli/utility-progress.d.ts.map +1 -0
  288. package/dist/cli/utility-progress.js +23 -0
  289. package/dist/cli/utility-progress.js.map +1 -0
  290. package/dist/cli/version-info.d.ts +2 -0
  291. package/dist/cli/version-info.d.ts.map +1 -0
  292. package/dist/cli/version-info.js +32 -0
  293. package/dist/cli/version-info.js.map +1 -0
  294. package/dist/connectors/claude-code.d.ts +16 -0
  295. package/dist/connectors/claude-code.d.ts.map +1 -0
  296. package/dist/connectors/claude-code.js +492 -0
  297. package/dist/connectors/claude-code.js.map +1 -0
  298. package/dist/connectors/codex-default-model.d.ts +10 -0
  299. package/dist/connectors/codex-default-model.d.ts.map +1 -0
  300. package/dist/connectors/codex-default-model.js +142 -0
  301. package/dist/connectors/codex-default-model.js.map +1 -0
  302. package/dist/connectors/codex.d.ts +21 -0
  303. package/dist/connectors/codex.d.ts.map +1 -0
  304. package/dist/connectors/codex.js +709 -0
  305. package/dist/connectors/codex.js.map +1 -0
  306. package/dist/connectors/connector.d.ts +7 -0
  307. package/dist/connectors/connector.d.ts.map +1 -0
  308. package/dist/connectors/connector.js +2 -0
  309. package/dist/connectors/connector.js.map +1 -0
  310. package/dist/connectors/cursor-agent.d.ts +10 -0
  311. package/dist/connectors/cursor-agent.d.ts.map +1 -0
  312. package/dist/connectors/cursor-agent.js +156 -0
  313. package/dist/connectors/cursor-agent.js.map +1 -0
  314. package/dist/connectors/custom.d.ts +7 -0
  315. package/dist/connectors/custom.d.ts.map +1 -0
  316. package/dist/connectors/custom.js +135 -0
  317. package/dist/connectors/custom.js.map +1 -0
  318. package/dist/connectors/health.d.ts +35 -0
  319. package/dist/connectors/health.d.ts.map +1 -0
  320. package/dist/connectors/health.js +169 -0
  321. package/dist/connectors/health.js.map +1 -0
  322. package/dist/connectors/remediation.d.ts +3 -0
  323. package/dist/connectors/remediation.d.ts.map +1 -0
  324. package/dist/connectors/remediation.js +16 -0
  325. package/dist/connectors/remediation.js.map +1 -0
  326. package/dist/connectors/resolver.d.ts +44 -0
  327. package/dist/connectors/resolver.d.ts.map +1 -0
  328. package/dist/connectors/resolver.js +204 -0
  329. package/dist/connectors/resolver.js.map +1 -0
  330. package/dist/connectors/subprocess.d.ts +59 -0
  331. package/dist/connectors/subprocess.d.ts.map +1 -0
  332. package/dist/connectors/subprocess.js +375 -0
  333. package/dist/connectors/subprocess.js.map +1 -0
  334. package/dist/flows/accommodation-ledger.d.ts +49 -0
  335. package/dist/flows/accommodation-ledger.d.ts.map +1 -0
  336. package/dist/flows/accommodation-ledger.js +277 -0
  337. package/dist/flows/accommodation-ledger.js.map +1 -0
  338. package/dist/flows/assemble-flow-schematic.d.ts +30 -0
  339. package/dist/flows/assemble-flow-schematic.d.ts.map +1 -0
  340. package/dist/flows/assemble-flow-schematic.js +58 -0
  341. package/dist/flows/assemble-flow-schematic.js.map +1 -0
  342. package/dist/flows/axis-selections.d.ts +4 -0
  343. package/dist/flows/axis-selections.d.ts.map +1 -0
  344. package/dist/flows/axis-selections.js +34 -0
  345. package/dist/flows/axis-selections.js.map +1 -0
  346. package/dist/flows/block-step-expansion.d.ts +69 -0
  347. package/dist/flows/block-step-expansion.d.ts.map +1 -0
  348. package/dist/flows/block-step-expansion.js +219 -0
  349. package/dist/flows/block-step-expansion.js.map +1 -0
  350. package/dist/flows/build/assembly-spec.d.ts +5 -0
  351. package/dist/flows/build/assembly-spec.d.ts.map +1 -0
  352. package/dist/flows/build/assembly-spec.js +287 -0
  353. package/dist/flows/build/assembly-spec.js.map +1 -0
  354. package/dist/flows/build/data.d.ts +848 -0
  355. package/dist/flows/build/data.d.ts.map +1 -0
  356. package/dist/flows/build/data.js +163 -0
  357. package/dist/flows/build/data.js.map +1 -0
  358. package/dist/flows/build/flow.d.ts +2 -0
  359. package/dist/flows/build/flow.d.ts.map +1 -0
  360. package/dist/flows/build/flow.js +4 -0
  361. package/dist/flows/build/flow.js.map +1 -0
  362. package/dist/flows/build/index.d.ts +4 -0
  363. package/dist/flows/build/index.d.ts.map +1 -0
  364. package/dist/flows/build/index.js +8 -0
  365. package/dist/flows/build/index.js.map +1 -0
  366. package/dist/flows/build/relay-hints.d.ts +5 -0
  367. package/dist/flows/build/relay-hints.d.ts.map +1 -0
  368. package/dist/flows/build/relay-hints.js +51 -0
  369. package/dist/flows/build/relay-hints.js.map +1 -0
  370. package/dist/flows/build/reports.d.ts +577 -0
  371. package/dist/flows/build/reports.d.ts.map +1 -0
  372. package/dist/flows/build/reports.js +698 -0
  373. package/dist/flows/build/reports.js.map +1 -0
  374. package/dist/flows/build/writers/baseline-snapshot.d.ts +4 -0
  375. package/dist/flows/build/writers/baseline-snapshot.d.ts.map +1 -0
  376. package/dist/flows/build/writers/baseline-snapshot.js +76 -0
  377. package/dist/flows/build/writers/baseline-snapshot.js.map +1 -0
  378. package/dist/flows/build/writers/checkpoint-brief-projection.d.ts +29 -0
  379. package/dist/flows/build/writers/checkpoint-brief-projection.d.ts.map +1 -0
  380. package/dist/flows/build/writers/checkpoint-brief-projection.js +145 -0
  381. package/dist/flows/build/writers/checkpoint-brief-projection.js.map +1 -0
  382. package/dist/flows/build/writers/checkpoint-brief.d.ts +3 -0
  383. package/dist/flows/build/writers/checkpoint-brief.d.ts.map +1 -0
  384. package/dist/flows/build/writers/checkpoint-brief.js +55 -0
  385. package/dist/flows/build/writers/checkpoint-brief.js.map +1 -0
  386. package/dist/flows/build/writers/checkpoint-html.d.ts +3 -0
  387. package/dist/flows/build/writers/checkpoint-html.d.ts.map +1 -0
  388. package/dist/flows/build/writers/checkpoint-html.js +106 -0
  389. package/dist/flows/build/writers/checkpoint-html.js.map +1 -0
  390. package/dist/flows/build/writers/close.d.ts +3 -0
  391. package/dist/flows/build/writers/close.d.ts.map +1 -0
  392. package/dist/flows/build/writers/close.js +72 -0
  393. package/dist/flows/build/writers/close.js.map +1 -0
  394. package/dist/flows/build/writers/plan.d.ts +3 -0
  395. package/dist/flows/build/writers/plan.d.ts.map +1 -0
  396. package/dist/flows/build/writers/plan.js +74 -0
  397. package/dist/flows/build/writers/plan.js.map +1 -0
  398. package/dist/flows/build/writers/result-projection.d.ts +13 -0
  399. package/dist/flows/build/writers/result-projection.d.ts.map +1 -0
  400. package/dist/flows/build/writers/result-projection.js +105 -0
  401. package/dist/flows/build/writers/result-projection.js.map +1 -0
  402. package/dist/flows/build/writers/touch-area-projection.d.ts +9 -0
  403. package/dist/flows/build/writers/touch-area-projection.d.ts.map +1 -0
  404. package/dist/flows/build/writers/touch-area-projection.js +120 -0
  405. package/dist/flows/build/writers/touch-area-projection.js.map +1 -0
  406. package/dist/flows/build/writers/touch-area.d.ts +3 -0
  407. package/dist/flows/build/writers/touch-area.d.ts.map +1 -0
  408. package/dist/flows/build/writers/touch-area.js +130 -0
  409. package/dist/flows/build/writers/touch-area.js.map +1 -0
  410. package/dist/flows/build/writers/verification-projection.d.ts +4 -0
  411. package/dist/flows/build/writers/verification-projection.d.ts.map +1 -0
  412. package/dist/flows/build/writers/verification-projection.js +21 -0
  413. package/dist/flows/build/writers/verification-projection.js.map +1 -0
  414. package/dist/flows/build/writers/verification.d.ts +3 -0
  415. package/dist/flows/build/writers/verification.d.ts.map +1 -0
  416. package/dist/flows/build/writers/verification.js +31 -0
  417. package/dist/flows/build/writers/verification.js.map +1 -0
  418. package/dist/flows/canonical-stage-policy.d.ts +14 -0
  419. package/dist/flows/canonical-stage-policy.d.ts.map +1 -0
  420. package/dist/flows/canonical-stage-policy.js +31 -0
  421. package/dist/flows/canonical-stage-policy.js.map +1 -0
  422. package/dist/flows/catalog-derivations.d.ts +34 -0
  423. package/dist/flows/catalog-derivations.d.ts.map +1 -0
  424. package/dist/flows/catalog-derivations.js +144 -0
  425. package/dist/flows/catalog-derivations.js.map +1 -0
  426. package/dist/flows/catalog.d.ts +16 -0
  427. package/dist/flows/catalog.d.ts.map +1 -0
  428. package/dist/flows/catalog.js +87 -0
  429. package/dist/flows/catalog.js.map +1 -0
  430. package/dist/flows/compile-schematic-to-flow.d.ts +16 -0
  431. package/dist/flows/compile-schematic-to-flow.d.ts.map +1 -0
  432. package/dist/flows/compile-schematic-to-flow.js +651 -0
  433. package/dist/flows/compile-schematic-to-flow.js.map +1 -0
  434. package/dist/flows/compiled-flow-file-plan.d.ts +8 -0
  435. package/dist/flows/compiled-flow-file-plan.d.ts.map +1 -0
  436. package/dist/flows/compiled-flow-file-plan.js +50 -0
  437. package/dist/flows/compiled-flow-file-plan.js.map +1 -0
  438. package/dist/flows/composition/actual-menu.d.ts +30 -0
  439. package/dist/flows/composition/actual-menu.d.ts.map +1 -0
  440. package/dist/flows/composition/actual-menu.js +131 -0
  441. package/dist/flows/composition/actual-menu.js.map +1 -0
  442. package/dist/flows/composition/composer.d.ts +73 -0
  443. package/dist/flows/composition/composer.d.ts.map +1 -0
  444. package/dist/flows/composition/composer.js +1339 -0
  445. package/dist/flows/composition/composer.js.map +1 -0
  446. package/dist/flows/composition/equipment-profiles.d.ts +21 -0
  447. package/dist/flows/composition/equipment-profiles.d.ts.map +1 -0
  448. package/dist/flows/composition/equipment-profiles.js +82 -0
  449. package/dist/flows/composition/equipment-profiles.js.map +1 -0
  450. package/dist/flows/composition/evaluate.d.ts +76 -0
  451. package/dist/flows/composition/evaluate.d.ts.map +1 -0
  452. package/dist/flows/composition/evaluate.js +373 -0
  453. package/dist/flows/composition/evaluate.js.map +1 -0
  454. package/dist/flows/composition/index.d.ts +8 -0
  455. package/dist/flows/composition/index.d.ts.map +1 -0
  456. package/dist/flows/composition/index.js +16 -0
  457. package/dist/flows/composition/index.js.map +1 -0
  458. package/dist/flows/composition/intent.d.ts +10 -0
  459. package/dist/flows/composition/intent.d.ts.map +1 -0
  460. package/dist/flows/composition/intent.js +125 -0
  461. package/dist/flows/composition/intent.js.map +1 -0
  462. package/dist/flows/composition/propose-prompts.d.ts +3 -0
  463. package/dist/flows/composition/propose-prompts.d.ts.map +1 -0
  464. package/dist/flows/composition/propose-prompts.js +196 -0
  465. package/dist/flows/composition/propose-prompts.js.map +1 -0
  466. package/dist/flows/composition/propose.d.ts +36 -0
  467. package/dist/flows/composition/propose.d.ts.map +1 -0
  468. package/dist/flows/composition/propose.js +275 -0
  469. package/dist/flows/composition/propose.js.map +1 -0
  470. package/dist/flows/contract-body-signature.d.ts +4 -0
  471. package/dist/flows/contract-body-signature.d.ts.map +1 -0
  472. package/dist/flows/contract-body-signature.js +166 -0
  473. package/dist/flows/contract-body-signature.js.map +1 -0
  474. package/dist/flows/converge-proof/assembly-spec.d.ts +5 -0
  475. package/dist/flows/converge-proof/assembly-spec.d.ts.map +1 -0
  476. package/dist/flows/converge-proof/assembly-spec.js +115 -0
  477. package/dist/flows/converge-proof/assembly-spec.js.map +1 -0
  478. package/dist/flows/converge-proof/data.d.ts +412 -0
  479. package/dist/flows/converge-proof/data.d.ts.map +1 -0
  480. package/dist/flows/converge-proof/data.js +23 -0
  481. package/dist/flows/converge-proof/data.js.map +1 -0
  482. package/dist/flows/converge-proof/flow.d.ts +2 -0
  483. package/dist/flows/converge-proof/flow.d.ts.map +1 -0
  484. package/dist/flows/converge-proof/flow.js +4 -0
  485. package/dist/flows/converge-proof/flow.js.map +1 -0
  486. package/dist/flows/cross-tool-build/assembly-spec.d.ts +5 -0
  487. package/dist/flows/cross-tool-build/assembly-spec.d.ts.map +1 -0
  488. package/dist/flows/cross-tool-build/assembly-spec.js +183 -0
  489. package/dist/flows/cross-tool-build/assembly-spec.js.map +1 -0
  490. package/dist/flows/cross-tool-build/data.d.ts +570 -0
  491. package/dist/flows/cross-tool-build/data.d.ts.map +1 -0
  492. package/dist/flows/cross-tool-build/data.js +94 -0
  493. package/dist/flows/cross-tool-build/data.js.map +1 -0
  494. package/dist/flows/cross-tool-build/flow.d.ts +2 -0
  495. package/dist/flows/cross-tool-build/flow.d.ts.map +1 -0
  496. package/dist/flows/cross-tool-build/flow.js +4 -0
  497. package/dist/flows/cross-tool-build/flow.js.map +1 -0
  498. package/dist/flows/cross-tool-build/relay-hints.d.ts +7 -0
  499. package/dist/flows/cross-tool-build/relay-hints.d.ts.map +1 -0
  500. package/dist/flows/cross-tool-build/relay-hints.js +76 -0
  501. package/dist/flows/cross-tool-build/relay-hints.js.map +1 -0
  502. package/dist/flows/cross-tool-build/reports.d.ts +161 -0
  503. package/dist/flows/cross-tool-build/reports.d.ts.map +1 -0
  504. package/dist/flows/cross-tool-build/reports.js +196 -0
  505. package/dist/flows/cross-tool-build/reports.js.map +1 -0
  506. package/dist/flows/cross-tool-build/writers/close.d.ts +3 -0
  507. package/dist/flows/cross-tool-build/writers/close.d.ts.map +1 -0
  508. package/dist/flows/cross-tool-build/writers/close.js +49 -0
  509. package/dist/flows/cross-tool-build/writers/close.js.map +1 -0
  510. package/dist/flows/cross-tool-build/writers/plan.d.ts +3 -0
  511. package/dist/flows/cross-tool-build/writers/plan.d.ts.map +1 -0
  512. package/dist/flows/cross-tool-build/writers/plan.js +27 -0
  513. package/dist/flows/cross-tool-build/writers/plan.js.map +1 -0
  514. package/dist/flows/cross-tool-build/writers/verification.d.ts +3 -0
  515. package/dist/flows/cross-tool-build/writers/verification.d.ts.map +1 -0
  516. package/dist/flows/cross-tool-build/writers/verification.js +46 -0
  517. package/dist/flows/cross-tool-build/writers/verification.js.map +1 -0
  518. package/dist/flows/equipment-reshape.d.ts +18 -0
  519. package/dist/flows/equipment-reshape.d.ts.map +1 -0
  520. package/dist/flows/equipment-reshape.js +119 -0
  521. package/dist/flows/equipment-reshape.js.map +1 -0
  522. package/dist/flows/explainer/data.d.ts +1032 -0
  523. package/dist/flows/explainer/data.d.ts.map +1 -0
  524. package/dist/flows/explainer/data.js +712 -0
  525. package/dist/flows/explainer/data.js.map +1 -0
  526. package/dist/flows/explainer/flow.d.ts +2 -0
  527. package/dist/flows/explainer/flow.d.ts.map +1 -0
  528. package/dist/flows/explainer/flow.js +4 -0
  529. package/dist/flows/explainer/flow.js.map +1 -0
  530. package/dist/flows/explainer/relay-hints.d.ts +4 -0
  531. package/dist/flows/explainer/relay-hints.d.ts.map +1 -0
  532. package/dist/flows/explainer/relay-hints.js +28 -0
  533. package/dist/flows/explainer/relay-hints.js.map +1 -0
  534. package/dist/flows/explainer/reports.d.ts +394 -0
  535. package/dist/flows/explainer/reports.d.ts.map +1 -0
  536. package/dist/flows/explainer/reports.js +296 -0
  537. package/dist/flows/explainer/reports.js.map +1 -0
  538. package/dist/flows/explainer/writers/close.d.ts +3 -0
  539. package/dist/flows/explainer/writers/close.d.ts.map +1 -0
  540. package/dist/flows/explainer/writers/close.js +67 -0
  541. package/dist/flows/explainer/writers/close.js.map +1 -0
  542. package/dist/flows/explainer/writers/digest.d.ts +3 -0
  543. package/dist/flows/explainer/writers/digest.d.ts.map +1 -0
  544. package/dist/flows/explainer/writers/digest.js +47 -0
  545. package/dist/flows/explainer/writers/digest.js.map +1 -0
  546. package/dist/flows/explainer/writers/ideas.d.ts +3 -0
  547. package/dist/flows/explainer/writers/ideas.d.ts.map +1 -0
  548. package/dist/flows/explainer/writers/ideas.js +65 -0
  549. package/dist/flows/explainer/writers/ideas.js.map +1 -0
  550. package/dist/flows/explainer/writers/intake.d.ts +3 -0
  551. package/dist/flows/explainer/writers/intake.d.ts.map +1 -0
  552. package/dist/flows/explainer/writers/intake.js +33 -0
  553. package/dist/flows/explainer/writers/intake.js.map +1 -0
  554. package/dist/flows/explainer/writers/spec.d.ts +3 -0
  555. package/dist/flows/explainer/writers/spec.d.ts.map +1 -0
  556. package/dist/flows/explainer/writers/spec.js +77 -0
  557. package/dist/flows/explainer/writers/spec.js.map +1 -0
  558. package/dist/flows/explainer/writers/verification.d.ts +3 -0
  559. package/dist/flows/explainer/writers/verification.d.ts.map +1 -0
  560. package/dist/flows/explainer/writers/verification.js +43 -0
  561. package/dist/flows/explainer/writers/verification.js.map +1 -0
  562. package/dist/flows/explore/assembly-spec.d.ts +5 -0
  563. package/dist/flows/explore/assembly-spec.d.ts.map +1 -0
  564. package/dist/flows/explore/assembly-spec.js +344 -0
  565. package/dist/flows/explore/assembly-spec.js.map +1 -0
  566. package/dist/flows/explore/data.d.ts +734 -0
  567. package/dist/flows/explore/data.d.ts.map +1 -0
  568. package/dist/flows/explore/data.js +174 -0
  569. package/dist/flows/explore/data.js.map +1 -0
  570. package/dist/flows/explore/flow.d.ts +2 -0
  571. package/dist/flows/explore/flow.d.ts.map +1 -0
  572. package/dist/flows/explore/flow.js +4 -0
  573. package/dist/flows/explore/flow.js.map +1 -0
  574. package/dist/flows/explore/index.d.ts +4 -0
  575. package/dist/flows/explore/index.d.ts.map +1 -0
  576. package/dist/flows/explore/index.js +8 -0
  577. package/dist/flows/explore/index.js.map +1 -0
  578. package/dist/flows/explore/relay-hints.d.ts +6 -0
  579. package/dist/flows/explore/relay-hints.d.ts.map +1 -0
  580. package/dist/flows/explore/relay-hints.js +53 -0
  581. package/dist/flows/explore/relay-hints.js.map +1 -0
  582. package/dist/flows/explore/reports.d.ts +483 -0
  583. package/dist/flows/explore/reports.d.ts.map +1 -0
  584. package/dist/flows/explore/reports.js +359 -0
  585. package/dist/flows/explore/reports.js.map +1 -0
  586. package/dist/flows/explore/writers/analysis.d.ts +3 -0
  587. package/dist/flows/explore/writers/analysis.d.ts.map +1 -0
  588. package/dist/flows/explore/writers/analysis.js +55 -0
  589. package/dist/flows/explore/writers/analysis.js.map +1 -0
  590. package/dist/flows/explore/writers/brief.d.ts +3 -0
  591. package/dist/flows/explore/writers/brief.d.ts.map +1 -0
  592. package/dist/flows/explore/writers/brief.js +24 -0
  593. package/dist/flows/explore/writers/brief.js.map +1 -0
  594. package/dist/flows/explore/writers/close.d.ts +3 -0
  595. package/dist/flows/explore/writers/close.d.ts.map +1 -0
  596. package/dist/flows/explore/writers/close.js +86 -0
  597. package/dist/flows/explore/writers/close.js.map +1 -0
  598. package/dist/flows/explore/writers/decision-options-projection.d.ts +10 -0
  599. package/dist/flows/explore/writers/decision-options-projection.d.ts.map +1 -0
  600. package/dist/flows/explore/writers/decision-options-projection.js +108 -0
  601. package/dist/flows/explore/writers/decision-options-projection.js.map +1 -0
  602. package/dist/flows/explore/writers/decision-options.d.ts +3 -0
  603. package/dist/flows/explore/writers/decision-options.d.ts.map +1 -0
  604. package/dist/flows/explore/writers/decision-options.js +25 -0
  605. package/dist/flows/explore/writers/decision-options.js.map +1 -0
  606. package/dist/flows/explore/writers/decision.d.ts +3 -0
  607. package/dist/flows/explore/writers/decision.d.ts.map +1 -0
  608. package/dist/flows/explore/writers/decision.js +80 -0
  609. package/dist/flows/explore/writers/decision.js.map +1 -0
  610. package/dist/flows/explore/writers/result-projection.d.ts +17 -0
  611. package/dist/flows/explore/writers/result-projection.d.ts.map +1 -0
  612. package/dist/flows/explore/writers/result-projection.js +41 -0
  613. package/dist/flows/explore/writers/result-projection.js.map +1 -0
  614. package/dist/flows/explore/writers/tournament-html.d.ts +3 -0
  615. package/dist/flows/explore/writers/tournament-html.d.ts.map +1 -0
  616. package/dist/flows/explore/writers/tournament-html.js +119 -0
  617. package/dist/flows/explore/writers/tournament-html.js.map +1 -0
  618. package/dist/flows/fix/assembly-spec.d.ts +5 -0
  619. package/dist/flows/fix/assembly-spec.d.ts.map +1 -0
  620. package/dist/flows/fix/assembly-spec.js +405 -0
  621. package/dist/flows/fix/assembly-spec.js.map +1 -0
  622. package/dist/flows/fix/data.d.ts +921 -0
  623. package/dist/flows/fix/data.d.ts.map +1 -0
  624. package/dist/flows/fix/data.js +207 -0
  625. package/dist/flows/fix/data.js.map +1 -0
  626. package/dist/flows/fix/flow.d.ts +2 -0
  627. package/dist/flows/fix/flow.d.ts.map +1 -0
  628. package/dist/flows/fix/flow.js +4 -0
  629. package/dist/flows/fix/flow.js.map +1 -0
  630. package/dist/flows/fix/index.d.ts +3 -0
  631. package/dist/flows/fix/index.d.ts.map +1 -0
  632. package/dist/flows/fix/index.js +5 -0
  633. package/dist/flows/fix/index.js.map +1 -0
  634. package/dist/flows/fix/relay-hints.d.ts +6 -0
  635. package/dist/flows/fix/relay-hints.d.ts.map +1 -0
  636. package/dist/flows/fix/relay-hints.js +52 -0
  637. package/dist/flows/fix/relay-hints.js.map +1 -0
  638. package/dist/flows/fix/reports.d.ts +562 -0
  639. package/dist/flows/fix/reports.d.ts.map +1 -0
  640. package/dist/flows/fix/reports.js +822 -0
  641. package/dist/flows/fix/reports.js.map +1 -0
  642. package/dist/flows/fix/writers/baseline-snapshot.d.ts +3 -0
  643. package/dist/flows/fix/writers/baseline-snapshot.d.ts.map +1 -0
  644. package/dist/flows/fix/writers/baseline-snapshot.js +45 -0
  645. package/dist/flows/fix/writers/baseline-snapshot.js.map +1 -0
  646. package/dist/flows/fix/writers/brief-projection.d.ts +8 -0
  647. package/dist/flows/fix/writers/brief-projection.d.ts.map +1 -0
  648. package/dist/flows/fix/writers/brief-projection.js +149 -0
  649. package/dist/flows/fix/writers/brief-projection.js.map +1 -0
  650. package/dist/flows/fix/writers/brief.d.ts +3 -0
  651. package/dist/flows/fix/writers/brief.d.ts.map +1 -0
  652. package/dist/flows/fix/writers/brief.js +29 -0
  653. package/dist/flows/fix/writers/brief.js.map +1 -0
  654. package/dist/flows/fix/writers/change-set-projection.d.ts +10 -0
  655. package/dist/flows/fix/writers/change-set-projection.d.ts.map +1 -0
  656. package/dist/flows/fix/writers/change-set-projection.js +62 -0
  657. package/dist/flows/fix/writers/change-set-projection.js.map +1 -0
  658. package/dist/flows/fix/writers/change-set.d.ts +3 -0
  659. package/dist/flows/fix/writers/change-set.d.ts.map +1 -0
  660. package/dist/flows/fix/writers/change-set.js +93 -0
  661. package/dist/flows/fix/writers/change-set.js.map +1 -0
  662. package/dist/flows/fix/writers/close.d.ts +3 -0
  663. package/dist/flows/fix/writers/close.d.ts.map +1 -0
  664. package/dist/flows/fix/writers/close.js +86 -0
  665. package/dist/flows/fix/writers/close.js.map +1 -0
  666. package/dist/flows/fix/writers/regression-baseline.d.ts +3 -0
  667. package/dist/flows/fix/writers/regression-baseline.d.ts.map +1 -0
  668. package/dist/flows/fix/writers/regression-baseline.js +39 -0
  669. package/dist/flows/fix/writers/regression-baseline.js.map +1 -0
  670. package/dist/flows/fix/writers/regression-projection.d.ts +5 -0
  671. package/dist/flows/fix/writers/regression-projection.d.ts.map +1 -0
  672. package/dist/flows/fix/writers/regression-projection.js +71 -0
  673. package/dist/flows/fix/writers/regression-projection.js.map +1 -0
  674. package/dist/flows/fix/writers/regression-rerun.d.ts +3 -0
  675. package/dist/flows/fix/writers/regression-rerun.d.ts.map +1 -0
  676. package/dist/flows/fix/writers/regression-rerun.js +51 -0
  677. package/dist/flows/fix/writers/regression-rerun.js.map +1 -0
  678. package/dist/flows/fix/writers/result-projection.d.ts +15 -0
  679. package/dist/flows/fix/writers/result-projection.d.ts.map +1 -0
  680. package/dist/flows/fix/writers/result-projection.js +58 -0
  681. package/dist/flows/fix/writers/result-projection.js.map +1 -0
  682. package/dist/flows/fix/writers/verification-projection.d.ts +4 -0
  683. package/dist/flows/fix/writers/verification-projection.d.ts.map +1 -0
  684. package/dist/flows/fix/writers/verification-projection.js +24 -0
  685. package/dist/flows/fix/writers/verification-projection.js.map +1 -0
  686. package/dist/flows/fix/writers/verification.d.ts +3 -0
  687. package/dist/flows/fix/writers/verification.d.ts.map +1 -0
  688. package/dist/flows/fix/writers/verification.js +32 -0
  689. package/dist/flows/fix/writers/verification.js.map +1 -0
  690. package/dist/flows/fix-until-green/assembly-spec.d.ts +5 -0
  691. package/dist/flows/fix-until-green/assembly-spec.d.ts.map +1 -0
  692. package/dist/flows/fix-until-green/assembly-spec.js +141 -0
  693. package/dist/flows/fix-until-green/assembly-spec.js.map +1 -0
  694. package/dist/flows/fix-until-green/data.d.ts +462 -0
  695. package/dist/flows/fix-until-green/data.d.ts.map +1 -0
  696. package/dist/flows/fix-until-green/data.js +49 -0
  697. package/dist/flows/fix-until-green/data.js.map +1 -0
  698. package/dist/flows/fix-until-green/flow.d.ts +2 -0
  699. package/dist/flows/fix-until-green/flow.d.ts.map +1 -0
  700. package/dist/flows/fix-until-green/flow.js +4 -0
  701. package/dist/flows/fix-until-green/flow.js.map +1 -0
  702. package/dist/flows/fix-until-green/relay-hints.d.ts +3 -0
  703. package/dist/flows/fix-until-green/relay-hints.d.ts.map +1 -0
  704. package/dist/flows/fix-until-green/relay-hints.js +37 -0
  705. package/dist/flows/fix-until-green/relay-hints.js.map +1 -0
  706. package/dist/flows/fix-until-green/reports.d.ts +38 -0
  707. package/dist/flows/fix-until-green/reports.d.ts.map +1 -0
  708. package/dist/flows/fix-until-green/reports.js +28 -0
  709. package/dist/flows/fix-until-green/reports.js.map +1 -0
  710. package/dist/flows/fix-until-green/writers/plan.d.ts +3 -0
  711. package/dist/flows/fix-until-green/writers/plan.d.ts.map +1 -0
  712. package/dist/flows/fix-until-green/writers/plan.js +27 -0
  713. package/dist/flows/fix-until-green/writers/plan.js.map +1 -0
  714. package/dist/flows/fix-until-green/writers/verification.d.ts +3 -0
  715. package/dist/flows/fix-until-green/writers/verification.d.ts.map +1 -0
  716. package/dist/flows/fix-until-green/writers/verification.js +46 -0
  717. package/dist/flows/fix-until-green/writers/verification.js.map +1 -0
  718. package/dist/flows/flow-definition.d.ts +81 -0
  719. package/dist/flows/flow-definition.d.ts.map +1 -0
  720. package/dist/flows/flow-definition.js +258 -0
  721. package/dist/flows/flow-definition.js.map +1 -0
  722. package/dist/flows/goal/assembly-spec.d.ts +5 -0
  723. package/dist/flows/goal/assembly-spec.d.ts.map +1 -0
  724. package/dist/flows/goal/assembly-spec.js +352 -0
  725. package/dist/flows/goal/assembly-spec.js.map +1 -0
  726. package/dist/flows/goal/data.d.ts +795 -0
  727. package/dist/flows/goal/data.d.ts.map +1 -0
  728. package/dist/flows/goal/data.js +181 -0
  729. package/dist/flows/goal/data.js.map +1 -0
  730. package/dist/flows/goal/flow.d.ts +2 -0
  731. package/dist/flows/goal/flow.d.ts.map +1 -0
  732. package/dist/flows/goal/flow.js +4 -0
  733. package/dist/flows/goal/flow.js.map +1 -0
  734. package/dist/flows/goal/relay-hints.d.ts +5 -0
  735. package/dist/flows/goal/relay-hints.d.ts.map +1 -0
  736. package/dist/flows/goal/relay-hints.js +48 -0
  737. package/dist/flows/goal/relay-hints.js.map +1 -0
  738. package/dist/flows/goal/reports.d.ts +442 -0
  739. package/dist/flows/goal/reports.d.ts.map +1 -0
  740. package/dist/flows/goal/reports.js +510 -0
  741. package/dist/flows/goal/reports.js.map +1 -0
  742. package/dist/flows/goal/writers/attempt.d.ts +3 -0
  743. package/dist/flows/goal/writers/attempt.d.ts.map +1 -0
  744. package/dist/flows/goal/writers/attempt.js +52 -0
  745. package/dist/flows/goal/writers/attempt.js.map +1 -0
  746. package/dist/flows/goal/writers/close.d.ts +3 -0
  747. package/dist/flows/goal/writers/close.d.ts.map +1 -0
  748. package/dist/flows/goal/writers/close.js +80 -0
  749. package/dist/flows/goal/writers/close.js.map +1 -0
  750. package/dist/flows/goal/writers/contract.d.ts +3 -0
  751. package/dist/flows/goal/writers/contract.d.ts.map +1 -0
  752. package/dist/flows/goal/writers/contract.js +137 -0
  753. package/dist/flows/goal/writers/contract.js.map +1 -0
  754. package/dist/flows/goal/writers/evidence-evaluation.d.ts +3 -0
  755. package/dist/flows/goal/writers/evidence-evaluation.d.ts.map +1 -0
  756. package/dist/flows/goal/writers/evidence-evaluation.js +91 -0
  757. package/dist/flows/goal/writers/evidence-evaluation.js.map +1 -0
  758. package/dist/flows/goal/writers/recovery.d.ts +3 -0
  759. package/dist/flows/goal/writers/recovery.d.ts.map +1 -0
  760. package/dist/flows/goal/writers/recovery.js +67 -0
  761. package/dist/flows/goal/writers/recovery.js.map +1 -0
  762. package/dist/flows/prototype/assembly-spec.d.ts +5 -0
  763. package/dist/flows/prototype/assembly-spec.d.ts.map +1 -0
  764. package/dist/flows/prototype/assembly-spec.js +408 -0
  765. package/dist/flows/prototype/assembly-spec.js.map +1 -0
  766. package/dist/flows/prototype/data.d.ts +947 -0
  767. package/dist/flows/prototype/data.d.ts.map +1 -0
  768. package/dist/flows/prototype/data.js +212 -0
  769. package/dist/flows/prototype/data.js.map +1 -0
  770. package/dist/flows/prototype/flow.d.ts +2 -0
  771. package/dist/flows/prototype/flow.d.ts.map +1 -0
  772. package/dist/flows/prototype/flow.js +4 -0
  773. package/dist/flows/prototype/flow.js.map +1 -0
  774. package/dist/flows/prototype/index.d.ts +4 -0
  775. package/dist/flows/prototype/index.d.ts.map +1 -0
  776. package/dist/flows/prototype/index.js +8 -0
  777. package/dist/flows/prototype/index.js.map +1 -0
  778. package/dist/flows/prototype/relay-hints.d.ts +5 -0
  779. package/dist/flows/prototype/relay-hints.d.ts.map +1 -0
  780. package/dist/flows/prototype/relay-hints.js +46 -0
  781. package/dist/flows/prototype/relay-hints.js.map +1 -0
  782. package/dist/flows/prototype/reports.d.ts +909 -0
  783. package/dist/flows/prototype/reports.d.ts.map +1 -0
  784. package/dist/flows/prototype/reports.js +721 -0
  785. package/dist/flows/prototype/reports.js.map +1 -0
  786. package/dist/flows/prototype/writers/brief.d.ts +3 -0
  787. package/dist/flows/prototype/writers/brief.d.ts.map +1 -0
  788. package/dist/flows/prototype/writers/brief.js +51 -0
  789. package/dist/flows/prototype/writers/brief.js.map +1 -0
  790. package/dist/flows/prototype/writers/checkpoint-html.d.ts +3 -0
  791. package/dist/flows/prototype/writers/checkpoint-html.d.ts.map +1 -0
  792. package/dist/flows/prototype/writers/checkpoint-html.js +247 -0
  793. package/dist/flows/prototype/writers/checkpoint-html.js.map +1 -0
  794. package/dist/flows/prototype/writers/close.d.ts +3 -0
  795. package/dist/flows/prototype/writers/close.d.ts.map +1 -0
  796. package/dist/flows/prototype/writers/close.js +358 -0
  797. package/dist/flows/prototype/writers/close.js.map +1 -0
  798. package/dist/flows/prototype/writers/plan.d.ts +3 -0
  799. package/dist/flows/prototype/writers/plan.d.ts.map +1 -0
  800. package/dist/flows/prototype/writers/plan.js +31 -0
  801. package/dist/flows/prototype/writers/plan.js.map +1 -0
  802. package/dist/flows/prototype/writers/variant-choice-options.d.ts +3 -0
  803. package/dist/flows/prototype/writers/variant-choice-options.d.ts.map +1 -0
  804. package/dist/flows/prototype/writers/variant-choice-options.js +58 -0
  805. package/dist/flows/prototype/writers/variant-choice-options.js.map +1 -0
  806. package/dist/flows/prototype/writers/variant-options.d.ts +3 -0
  807. package/dist/flows/prototype/writers/variant-options.d.ts.map +1 -0
  808. package/dist/flows/prototype/writers/variant-options.js +74 -0
  809. package/dist/flows/prototype/writers/variant-options.js.map +1 -0
  810. package/dist/flows/prototype/writers/variant-provider-evidence.d.ts +3 -0
  811. package/dist/flows/prototype/writers/variant-provider-evidence.d.ts.map +1 -0
  812. package/dist/flows/prototype/writers/variant-provider-evidence.js +79 -0
  813. package/dist/flows/prototype/writers/variant-provider-evidence.js.map +1 -0
  814. package/dist/flows/prototype/writers/variant-verification.d.ts +3 -0
  815. package/dist/flows/prototype/writers/variant-verification.d.ts.map +1 -0
  816. package/dist/flows/prototype/writers/variant-verification.js +149 -0
  817. package/dist/flows/prototype/writers/variant-verification.js.map +1 -0
  818. package/dist/flows/prototype/writers/verification.d.ts +3 -0
  819. package/dist/flows/prototype/writers/verification.d.ts.map +1 -0
  820. package/dist/flows/prototype/writers/verification.js +105 -0
  821. package/dist/flows/prototype/writers/verification.js.map +1 -0
  822. package/dist/flows/pursue/assembly-spec.d.ts +6 -0
  823. package/dist/flows/pursue/assembly-spec.d.ts.map +1 -0
  824. package/dist/flows/pursue/assembly-spec.js +181 -0
  825. package/dist/flows/pursue/assembly-spec.js.map +1 -0
  826. package/dist/flows/pursue/data.d.ts +740 -0
  827. package/dist/flows/pursue/data.d.ts.map +1 -0
  828. package/dist/flows/pursue/data.js +125 -0
  829. package/dist/flows/pursue/data.js.map +1 -0
  830. package/dist/flows/pursue/flow.d.ts +2 -0
  831. package/dist/flows/pursue/flow.d.ts.map +1 -0
  832. package/dist/flows/pursue/flow.js +4 -0
  833. package/dist/flows/pursue/flow.js.map +1 -0
  834. package/dist/flows/pursue/relay-hints.d.ts +4 -0
  835. package/dist/flows/pursue/relay-hints.d.ts.map +1 -0
  836. package/dist/flows/pursue/relay-hints.js +34 -0
  837. package/dist/flows/pursue/relay-hints.js.map +1 -0
  838. package/dist/flows/pursue/reports.d.ts +383 -0
  839. package/dist/flows/pursue/reports.d.ts.map +1 -0
  840. package/dist/flows/pursue/reports.js +404 -0
  841. package/dist/flows/pursue/reports.js.map +1 -0
  842. package/dist/flows/pursue/writers/close.d.ts +3 -0
  843. package/dist/flows/pursue/writers/close.d.ts.map +1 -0
  844. package/dist/flows/pursue/writers/close.js +41 -0
  845. package/dist/flows/pursue/writers/close.js.map +1 -0
  846. package/dist/flows/pursue/writers/contract-projection.d.ts +7 -0
  847. package/dist/flows/pursue/writers/contract-projection.d.ts.map +1 -0
  848. package/dist/flows/pursue/writers/contract-projection.js +125 -0
  849. package/dist/flows/pursue/writers/contract-projection.js.map +1 -0
  850. package/dist/flows/pursue/writers/contract.d.ts +3 -0
  851. package/dist/flows/pursue/writers/contract.d.ts.map +1 -0
  852. package/dist/flows/pursue/writers/contract.js +17 -0
  853. package/dist/flows/pursue/writers/contract.js.map +1 -0
  854. package/dist/flows/pursue/writers/graph.d.ts +3 -0
  855. package/dist/flows/pursue/writers/graph.d.ts.map +1 -0
  856. package/dist/flows/pursue/writers/graph.js +76 -0
  857. package/dist/flows/pursue/writers/graph.js.map +1 -0
  858. package/dist/flows/pursue/writers/result-projection.d.ts +11 -0
  859. package/dist/flows/pursue/writers/result-projection.d.ts.map +1 -0
  860. package/dist/flows/pursue/writers/result-projection.js +85 -0
  861. package/dist/flows/pursue/writers/result-projection.js.map +1 -0
  862. package/dist/flows/pursue/writers/verification-projection.d.ts +4 -0
  863. package/dist/flows/pursue/writers/verification-projection.d.ts.map +1 -0
  864. package/dist/flows/pursue/writers/verification-projection.js +20 -0
  865. package/dist/flows/pursue/writers/verification-projection.js.map +1 -0
  866. package/dist/flows/pursue/writers/verification.d.ts +3 -0
  867. package/dist/flows/pursue/writers/verification.d.ts.map +1 -0
  868. package/dist/flows/pursue/writers/verification.js +24 -0
  869. package/dist/flows/pursue/writers/verification.js.map +1 -0
  870. package/dist/flows/pursue/writers/wave-plan.d.ts +3 -0
  871. package/dist/flows/pursue/writers/wave-plan.d.ts.map +1 -0
  872. package/dist/flows/pursue/writers/wave-plan.js +36 -0
  873. package/dist/flows/pursue/writers/wave-plan.js.map +1 -0
  874. package/dist/flows/registries/checkpoint-writers/registry.d.ts +3 -0
  875. package/dist/flows/registries/checkpoint-writers/registry.d.ts.map +1 -0
  876. package/dist/flows/registries/checkpoint-writers/registry.js +12 -0
  877. package/dist/flows/registries/checkpoint-writers/registry.js.map +1 -0
  878. package/dist/flows/registries/checkpoint-writers/types.d.ts +22 -0
  879. package/dist/flows/registries/checkpoint-writers/types.d.ts.map +1 -0
  880. package/dist/flows/registries/checkpoint-writers/types.js +24 -0
  881. package/dist/flows/registries/checkpoint-writers/types.js.map +1 -0
  882. package/dist/flows/registries/close-writers/generic-close-builder.d.ts +3 -0
  883. package/dist/flows/registries/close-writers/generic-close-builder.d.ts.map +1 -0
  884. package/dist/flows/registries/close-writers/generic-close-builder.js +45 -0
  885. package/dist/flows/registries/close-writers/generic-close-builder.js.map +1 -0
  886. package/dist/flows/registries/close-writers/registry.d.ts +5 -0
  887. package/dist/flows/registries/close-writers/registry.d.ts.map +1 -0
  888. package/dist/flows/registries/close-writers/registry.js +48 -0
  889. package/dist/flows/registries/close-writers/registry.js.map +1 -0
  890. package/dist/flows/registries/close-writers/types.d.ts +19 -0
  891. package/dist/flows/registries/close-writers/types.d.ts.map +1 -0
  892. package/dist/flows/registries/close-writers/types.js +19 -0
  893. package/dist/flows/registries/close-writers/types.js.map +1 -0
  894. package/dist/flows/registries/compose-writers/registry.d.ts +6 -0
  895. package/dist/flows/registries/compose-writers/registry.d.ts.map +1 -0
  896. package/dist/flows/registries/compose-writers/registry.js +46 -0
  897. package/dist/flows/registries/compose-writers/registry.js.map +1 -0
  898. package/dist/flows/registries/compose-writers/types.d.ts +30 -0
  899. package/dist/flows/registries/compose-writers/types.d.ts.map +1 -0
  900. package/dist/flows/registries/compose-writers/types.js +22 -0
  901. package/dist/flows/registries/compose-writers/types.js.map +1 -0
  902. package/dist/flows/registries/cross-report-validators.d.ts +10 -0
  903. package/dist/flows/registries/cross-report-validators.d.ts.map +1 -0
  904. package/dist/flows/registries/cross-report-validators.js +31 -0
  905. package/dist/flows/registries/cross-report-validators.js.map +1 -0
  906. package/dist/flows/registries/report-schemas.d.ts +10 -0
  907. package/dist/flows/registries/report-schemas.d.ts.map +1 -0
  908. package/dist/flows/registries/report-schemas.js +77 -0
  909. package/dist/flows/registries/report-schemas.js.map +1 -0
  910. package/dist/flows/registries/runtime-index.d.ts +100 -0
  911. package/dist/flows/registries/runtime-index.d.ts.map +1 -0
  912. package/dist/flows/registries/runtime-index.js +27 -0
  913. package/dist/flows/registries/runtime-index.js.map +1 -0
  914. package/dist/flows/registries/shape-hints/from-zod.d.ts +6 -0
  915. package/dist/flows/registries/shape-hints/from-zod.d.ts.map +1 -0
  916. package/dist/flows/registries/shape-hints/from-zod.js +354 -0
  917. package/dist/flows/registries/shape-hints/from-zod.js.map +1 -0
  918. package/dist/flows/registries/shape-hints/instruction-helpers.d.ts +3 -0
  919. package/dist/flows/registries/shape-hints/instruction-helpers.d.ts.map +1 -0
  920. package/dist/flows/registries/shape-hints/instruction-helpers.js +28 -0
  921. package/dist/flows/registries/shape-hints/instruction-helpers.js.map +1 -0
  922. package/dist/flows/registries/shape-hints/registry.d.ts +5 -0
  923. package/dist/flows/registries/shape-hints/registry.d.ts.map +1 -0
  924. package/dist/flows/registries/shape-hints/registry.js +33 -0
  925. package/dist/flows/registries/shape-hints/registry.js.map +1 -0
  926. package/dist/flows/registries/shape-hints/types.d.ts +14 -0
  927. package/dist/flows/registries/shape-hints/types.d.ts.map +1 -0
  928. package/dist/flows/registries/shape-hints/types.js +25 -0
  929. package/dist/flows/registries/shape-hints/types.js.map +1 -0
  930. package/dist/flows/registries/verification-writers/registry.d.ts +6 -0
  931. package/dist/flows/registries/verification-writers/registry.d.ts.map +1 -0
  932. package/dist/flows/registries/verification-writers/registry.js +37 -0
  933. package/dist/flows/registries/verification-writers/registry.js.map +1 -0
  934. package/dist/flows/registries/verification-writers/types.d.ts +37 -0
  935. package/dist/flows/registries/verification-writers/types.d.ts.map +1 -0
  936. package/dist/flows/registries/verification-writers/types.js +22 -0
  937. package/dist/flows/registries/verification-writers/types.js.map +1 -0
  938. package/dist/flows/report-declarations.d.ts +23 -0
  939. package/dist/flows/report-declarations.d.ts.map +1 -0
  940. package/dist/flows/report-declarations.js +46 -0
  941. package/dist/flows/report-declarations.js.map +1 -0
  942. package/dist/flows/report-schema-kit.d.ts +22 -0
  943. package/dist/flows/report-schema-kit.d.ts.map +1 -0
  944. package/dist/flows/report-schema-kit.js +59 -0
  945. package/dist/flows/report-schema-kit.js.map +1 -0
  946. package/dist/flows/resolvers/archetype.d.ts +14 -0
  947. package/dist/flows/resolvers/archetype.d.ts.map +1 -0
  948. package/dist/flows/resolvers/archetype.js +125 -0
  949. package/dist/flows/resolvers/archetype.js.map +1 -0
  950. package/dist/flows/resolvers/equipment.d.ts +32 -0
  951. package/dist/flows/resolvers/equipment.d.ts.map +1 -0
  952. package/dist/flows/resolvers/equipment.js +101 -0
  953. package/dist/flows/resolvers/equipment.js.map +1 -0
  954. package/dist/flows/resolvers/signals.d.ts +27 -0
  955. package/dist/flows/resolvers/signals.d.ts.map +1 -0
  956. package/dist/flows/resolvers/signals.js +273 -0
  957. package/dist/flows/resolvers/signals.js.map +1 -0
  958. package/dist/flows/resolvers/structure.d.ts +23 -0
  959. package/dist/flows/resolvers/structure.d.ts.map +1 -0
  960. package/dist/flows/resolvers/structure.js +112 -0
  961. package/dist/flows/resolvers/structure.js.map +1 -0
  962. package/dist/flows/review/assembly-spec.d.ts +5 -0
  963. package/dist/flows/review/assembly-spec.d.ts.map +1 -0
  964. package/dist/flows/review/assembly-spec.js +90 -0
  965. package/dist/flows/review/assembly-spec.js.map +1 -0
  966. package/dist/flows/review/data.d.ts +555 -0
  967. package/dist/flows/review/data.d.ts.map +1 -0
  968. package/dist/flows/review/data.js +75 -0
  969. package/dist/flows/review/data.js.map +1 -0
  970. package/dist/flows/review/flow.d.ts +2 -0
  971. package/dist/flows/review/flow.d.ts.map +1 -0
  972. package/dist/flows/review/flow.js +4 -0
  973. package/dist/flows/review/flow.js.map +1 -0
  974. package/dist/flows/review/index.d.ts +4 -0
  975. package/dist/flows/review/index.d.ts.map +1 -0
  976. package/dist/flows/review/index.js +8 -0
  977. package/dist/flows/review/index.js.map +1 -0
  978. package/dist/flows/review/relay-hints.d.ts +3 -0
  979. package/dist/flows/review/relay-hints.d.ts.map +1 -0
  980. package/dist/flows/review/relay-hints.js +31 -0
  981. package/dist/flows/review/relay-hints.js.map +1 -0
  982. package/dist/flows/review/reports.d.ts +247 -0
  983. package/dist/flows/review/reports.d.ts.map +1 -0
  984. package/dist/flows/review/reports.js +176 -0
  985. package/dist/flows/review/reports.js.map +1 -0
  986. package/dist/flows/review/writers/intake-projection.d.ts +13 -0
  987. package/dist/flows/review/writers/intake-projection.d.ts.map +1 -0
  988. package/dist/flows/review/writers/intake-projection.js +90 -0
  989. package/dist/flows/review/writers/intake-projection.js.map +1 -0
  990. package/dist/flows/review/writers/intake.d.ts +3 -0
  991. package/dist/flows/review/writers/intake.d.ts.map +1 -0
  992. package/dist/flows/review/writers/intake.js +186 -0
  993. package/dist/flows/review/writers/intake.js.map +1 -0
  994. package/dist/flows/review/writers/result-html.d.ts +3 -0
  995. package/dist/flows/review/writers/result-html.d.ts.map +1 -0
  996. package/dist/flows/review/writers/result-html.js +78 -0
  997. package/dist/flows/review/writers/result-html.js.map +1 -0
  998. package/dist/flows/review/writers/result-projection.d.ts +6 -0
  999. package/dist/flows/review/writers/result-projection.d.ts.map +1 -0
  1000. package/dist/flows/review/writers/result-projection.js +29 -0
  1001. package/dist/flows/review/writers/result-projection.js.map +1 -0
  1002. package/dist/flows/review/writers/result.d.ts +3 -0
  1003. package/dist/flows/review/writers/result.d.ts.map +1 -0
  1004. package/dist/flows/review/writers/result.js +50 -0
  1005. package/dist/flows/review/writers/result.js.map +1 -0
  1006. package/dist/flows/runtime-proof/assembly-spec.d.ts +5 -0
  1007. package/dist/flows/runtime-proof/assembly-spec.d.ts.map +1 -0
  1008. package/dist/flows/runtime-proof/assembly-spec.js +54 -0
  1009. package/dist/flows/runtime-proof/assembly-spec.js.map +1 -0
  1010. package/dist/flows/runtime-proof/data.d.ts +423 -0
  1011. package/dist/flows/runtime-proof/data.d.ts.map +1 -0
  1012. package/dist/flows/runtime-proof/data.js +36 -0
  1013. package/dist/flows/runtime-proof/data.js.map +1 -0
  1014. package/dist/flows/runtime-proof/flow.d.ts +2 -0
  1015. package/dist/flows/runtime-proof/flow.d.ts.map +1 -0
  1016. package/dist/flows/runtime-proof/flow.js +4 -0
  1017. package/dist/flows/runtime-proof/flow.js.map +1 -0
  1018. package/dist/flows/runtime-proof/reports.d.ts +6 -0
  1019. package/dist/flows/runtime-proof/reports.d.ts.map +1 -0
  1020. package/dist/flows/runtime-proof/reports.js +7 -0
  1021. package/dist/flows/runtime-proof/reports.js.map +1 -0
  1022. package/dist/flows/runtime-proof/writers/compose.d.ts +3 -0
  1023. package/dist/flows/runtime-proof/writers/compose.d.ts.map +1 -0
  1024. package/dist/flows/runtime-proof/writers/compose.js +10 -0
  1025. package/dist/flows/runtime-proof/writers/compose.js.map +1 -0
  1026. package/dist/flows/schematic-catalog-check.d.ts +3 -0
  1027. package/dist/flows/schematic-catalog-check.d.ts.map +1 -0
  1028. package/dist/flows/schematic-catalog-check.js +73 -0
  1029. package/dist/flows/schematic-catalog-check.js.map +1 -0
  1030. package/dist/flows/stage-policy.d.ts +22 -0
  1031. package/dist/flows/stage-policy.d.ts.map +1 -0
  1032. package/dist/flows/stage-policy.js +27 -0
  1033. package/dist/flows/stage-policy.js.map +1 -0
  1034. package/dist/flows/sweep/assembly-spec.d.ts +5 -0
  1035. package/dist/flows/sweep/assembly-spec.d.ts.map +1 -0
  1036. package/dist/flows/sweep/assembly-spec.js +170 -0
  1037. package/dist/flows/sweep/assembly-spec.js.map +1 -0
  1038. package/dist/flows/sweep/data.d.ts +552 -0
  1039. package/dist/flows/sweep/data.d.ts.map +1 -0
  1040. package/dist/flows/sweep/data.js +70 -0
  1041. package/dist/flows/sweep/data.js.map +1 -0
  1042. package/dist/flows/sweep/flow.d.ts +2 -0
  1043. package/dist/flows/sweep/flow.d.ts.map +1 -0
  1044. package/dist/flows/sweep/flow.js +4 -0
  1045. package/dist/flows/sweep/flow.js.map +1 -0
  1046. package/dist/flows/sweep/paths.d.ts +11 -0
  1047. package/dist/flows/sweep/paths.d.ts.map +1 -0
  1048. package/dist/flows/sweep/paths.js +18 -0
  1049. package/dist/flows/sweep/paths.js.map +1 -0
  1050. package/dist/flows/sweep/relay-hints.d.ts +3 -0
  1051. package/dist/flows/sweep/relay-hints.d.ts.map +1 -0
  1052. package/dist/flows/sweep/relay-hints.js +27 -0
  1053. package/dist/flows/sweep/relay-hints.js.map +1 -0
  1054. package/dist/flows/sweep/reports.d.ts +172 -0
  1055. package/dist/flows/sweep/reports.d.ts.map +1 -0
  1056. package/dist/flows/sweep/reports.js +179 -0
  1057. package/dist/flows/sweep/reports.js.map +1 -0
  1058. package/dist/flows/sweep/writers/census.d.ts +3 -0
  1059. package/dist/flows/sweep/writers/census.d.ts.map +1 -0
  1060. package/dist/flows/sweep/writers/census.js +67 -0
  1061. package/dist/flows/sweep/writers/census.js.map +1 -0
  1062. package/dist/flows/sweep/writers/partition.d.ts +3 -0
  1063. package/dist/flows/sweep/writers/partition.d.ts.map +1 -0
  1064. package/dist/flows/sweep/writers/partition.js +130 -0
  1065. package/dist/flows/sweep/writers/partition.js.map +1 -0
  1066. package/dist/flows/sweep/writers/scan.d.ts +5 -0
  1067. package/dist/flows/sweep/writers/scan.d.ts.map +1 -0
  1068. package/dist/flows/sweep/writers/scan.js +89 -0
  1069. package/dist/flows/sweep/writers/scan.js.map +1 -0
  1070. package/dist/flows/sweep/writers/verification.d.ts +3 -0
  1071. package/dist/flows/sweep/writers/verification.d.ts.map +1 -0
  1072. package/dist/flows/sweep/writers/verification.js +55 -0
  1073. package/dist/flows/sweep/writers/verification.js.map +1 -0
  1074. package/dist/flows/types.d.ts +111 -0
  1075. package/dist/flows/types.d.ts.map +1 -0
  1076. package/dist/flows/types.js +14 -0
  1077. package/dist/flows/types.js.map +1 -0
  1078. package/dist/history/run-corpus.d.ts +16 -0
  1079. package/dist/history/run-corpus.d.ts.map +1 -0
  1080. package/dist/history/run-corpus.js +55 -0
  1081. package/dist/history/run-corpus.js.map +1 -0
  1082. package/dist/index.d.ts +2 -0
  1083. package/dist/index.d.ts.map +1 -0
  1084. package/dist/index.js +2 -0
  1085. package/dist/index.js.map +1 -0
  1086. package/dist/memory/project-distill.d.ts +18 -0
  1087. package/dist/memory/project-distill.d.ts.map +1 -0
  1088. package/dist/memory/project-distill.js +244 -0
  1089. package/dist/memory/project-distill.js.map +1 -0
  1090. package/dist/memory/project-identity.d.ts +25 -0
  1091. package/dist/memory/project-identity.d.ts.map +1 -0
  1092. package/dist/memory/project-identity.js +125 -0
  1093. package/dist/memory/project-identity.js.map +1 -0
  1094. package/dist/memory/project-injection.d.ts +12 -0
  1095. package/dist/memory/project-injection.d.ts.map +1 -0
  1096. package/dist/memory/project-injection.js +56 -0
  1097. package/dist/memory/project-injection.js.map +1 -0
  1098. package/dist/memory/project-store.d.ts +35 -0
  1099. package/dist/memory/project-store.d.ts.map +1 -0
  1100. package/dist/memory/project-store.js +150 -0
  1101. package/dist/memory/project-store.js.map +1 -0
  1102. package/dist/policy/fanout-join-policy.d.ts +26 -0
  1103. package/dist/policy/fanout-join-policy.d.ts.map +1 -0
  1104. package/dist/policy/fanout-join-policy.js +87 -0
  1105. package/dist/policy/fanout-join-policy.js.map +1 -0
  1106. package/dist/policy/flow-kind-policy-core.d.ts +50 -0
  1107. package/dist/policy/flow-kind-policy-core.d.ts.map +1 -0
  1108. package/dist/policy/flow-kind-policy-core.js +250 -0
  1109. package/dist/policy/flow-kind-policy-core.js.map +1 -0
  1110. package/dist/policy/flow-kind-policy.d.ts +19 -0
  1111. package/dist/policy/flow-kind-policy.d.ts.map +1 -0
  1112. package/dist/policy/flow-kind-policy.js +41 -0
  1113. package/dist/policy/flow-kind-policy.js.map +1 -0
  1114. package/dist/policy/policy-envelope.d.ts +28 -0
  1115. package/dist/policy/policy-envelope.d.ts.map +1 -0
  1116. package/dist/policy/policy-envelope.js +317 -0
  1117. package/dist/policy/policy-envelope.js.map +1 -0
  1118. package/dist/policy/recovery-route-policy.d.ts +165 -0
  1119. package/dist/policy/recovery-route-policy.d.ts.map +1 -0
  1120. package/dist/policy/recovery-route-policy.js +112 -0
  1121. package/dist/policy/recovery-route-policy.js.map +1 -0
  1122. package/dist/policy/rubric.d.ts +28 -0
  1123. package/dist/policy/rubric.d.ts.map +1 -0
  1124. package/dist/policy/rubric.js +139 -0
  1125. package/dist/policy/rubric.js.map +1 -0
  1126. package/dist/release/checks.d.ts +45 -0
  1127. package/dist/release/checks.d.ts.map +1 -0
  1128. package/dist/release/checks.js +382 -0
  1129. package/dist/release/checks.js.map +1 -0
  1130. package/dist/release/schemas.d.ts +590 -0
  1131. package/dist/release/schemas.d.ts.map +1 -0
  1132. package/dist/release/schemas.js +369 -0
  1133. package/dist/release/schemas.js.map +1 -0
  1134. package/dist/runtime/acceptance-criteria.d.ts +41 -0
  1135. package/dist/runtime/acceptance-criteria.d.ts.map +1 -0
  1136. package/dist/runtime/acceptance-criteria.js +282 -0
  1137. package/dist/runtime/acceptance-criteria.js.map +1 -0
  1138. package/dist/runtime/domain/flow.d.ts +11 -0
  1139. package/dist/runtime/domain/flow.d.ts.map +1 -0
  1140. package/dist/runtime/domain/flow.js +2 -0
  1141. package/dist/runtime/domain/flow.js.map +1 -0
  1142. package/dist/runtime/domain/route.d.ts +13 -0
  1143. package/dist/runtime/domain/route.d.ts.map +1 -0
  1144. package/dist/runtime/domain/route.js +7 -0
  1145. package/dist/runtime/domain/route.js.map +1 -0
  1146. package/dist/runtime/domain/run-file.d.ts +5 -0
  1147. package/dist/runtime/domain/run-file.d.ts.map +1 -0
  1148. package/dist/runtime/domain/run-file.js +2 -0
  1149. package/dist/runtime/domain/run-file.js.map +1 -0
  1150. package/dist/runtime/domain/run.d.ts +4 -0
  1151. package/dist/runtime/domain/run.d.ts.map +1 -0
  1152. package/dist/runtime/domain/run.js +2 -0
  1153. package/dist/runtime/domain/run.js.map +1 -0
  1154. package/dist/runtime/domain/selection.d.ts +11 -0
  1155. package/dist/runtime/domain/selection.d.ts.map +1 -0
  1156. package/dist/runtime/domain/selection.js +2 -0
  1157. package/dist/runtime/domain/selection.js.map +1 -0
  1158. package/dist/runtime/domain/step.d.ts +19 -0
  1159. package/dist/runtime/domain/step.d.ts.map +1 -0
  1160. package/dist/runtime/domain/step.js +4 -0
  1161. package/dist/runtime/domain/step.js.map +1 -0
  1162. package/dist/runtime/domain/trace.d.ts +21 -0
  1163. package/dist/runtime/domain/trace.d.ts.map +1 -0
  1164. package/dist/runtime/domain/trace.js +2 -0
  1165. package/dist/runtime/domain/trace.js.map +1 -0
  1166. package/dist/runtime/executors/checkpoint.d.ts +18 -0
  1167. package/dist/runtime/executors/checkpoint.d.ts.map +1 -0
  1168. package/dist/runtime/executors/checkpoint.js +463 -0
  1169. package/dist/runtime/executors/checkpoint.js.map +1 -0
  1170. package/dist/runtime/executors/compose.d.ts +11 -0
  1171. package/dist/runtime/executors/compose.d.ts.map +1 -0
  1172. package/dist/runtime/executors/compose.js +124 -0
  1173. package/dist/runtime/executors/compose.js.map +1 -0
  1174. package/dist/runtime/executors/fanout.d.ts +8 -0
  1175. package/dist/runtime/executors/fanout.d.ts.map +1 -0
  1176. package/dist/runtime/executors/fanout.js +312 -0
  1177. package/dist/runtime/executors/fanout.js.map +1 -0
  1178. package/dist/runtime/executors/index.d.ts +11 -0
  1179. package/dist/runtime/executors/index.d.ts.map +1 -0
  1180. package/dist/runtime/executors/index.js +32 -0
  1181. package/dist/runtime/executors/index.js.map +1 -0
  1182. package/dist/runtime/executors/relay.d.ts +73 -0
  1183. package/dist/runtime/executors/relay.d.ts.map +1 -0
  1184. package/dist/runtime/executors/relay.js +788 -0
  1185. package/dist/runtime/executors/relay.js.map +1 -0
  1186. package/dist/runtime/executors/result.d.ts +14 -0
  1187. package/dist/runtime/executors/result.d.ts.map +1 -0
  1188. package/dist/runtime/executors/result.js +19 -0
  1189. package/dist/runtime/executors/result.js.map +1 -0
  1190. package/dist/runtime/executors/shared.d.ts +17 -0
  1191. package/dist/runtime/executors/shared.d.ts.map +1 -0
  1192. package/dist/runtime/executors/shared.js +49 -0
  1193. package/dist/runtime/executors/shared.js.map +1 -0
  1194. package/dist/runtime/executors/sub-run.d.ts +8 -0
  1195. package/dist/runtime/executors/sub-run.d.ts.map +1 -0
  1196. package/dist/runtime/executors/sub-run.js +275 -0
  1197. package/dist/runtime/executors/sub-run.js.map +1 -0
  1198. package/dist/runtime/executors/verification.d.ts +7 -0
  1199. package/dist/runtime/executors/verification.d.ts.map +1 -0
  1200. package/dist/runtime/executors/verification.js +374 -0
  1201. package/dist/runtime/executors/verification.js.map +1 -0
  1202. package/dist/runtime/fanout/branch-execution.d.ts +17 -0
  1203. package/dist/runtime/fanout/branch-execution.d.ts.map +1 -0
  1204. package/dist/runtime/fanout/branch-execution.js +576 -0
  1205. package/dist/runtime/fanout/branch-execution.js.map +1 -0
  1206. package/dist/runtime/fanout/branch-expansion.d.ts +6 -0
  1207. package/dist/runtime/fanout/branch-expansion.d.ts.map +1 -0
  1208. package/dist/runtime/fanout/branch-expansion.js +64 -0
  1209. package/dist/runtime/fanout/branch-expansion.js.map +1 -0
  1210. package/dist/runtime/fanout/run-owner-lock.d.ts +28 -0
  1211. package/dist/runtime/fanout/run-owner-lock.d.ts.map +1 -0
  1212. package/dist/runtime/fanout/run-owner-lock.js +98 -0
  1213. package/dist/runtime/fanout/run-owner-lock.js.map +1 -0
  1214. package/dist/runtime/fanout/types.d.ts +38 -0
  1215. package/dist/runtime/fanout/types.d.ts.map +1 -0
  1216. package/dist/runtime/fanout/types.js +2 -0
  1217. package/dist/runtime/fanout/types.js.map +1 -0
  1218. package/dist/runtime/fanout/worktree-reaper.d.ts +108 -0
  1219. package/dist/runtime/fanout/worktree-reaper.d.ts.map +1 -0
  1220. package/dist/runtime/fanout/worktree-reaper.js +195 -0
  1221. package/dist/runtime/fanout/worktree-reaper.js.map +1 -0
  1222. package/dist/runtime/fanout/worktree.d.ts +3 -0
  1223. package/dist/runtime/fanout/worktree.d.ts.map +1 -0
  1224. package/dist/runtime/fanout/worktree.js +35 -0
  1225. package/dist/runtime/fanout/worktree.js.map +1 -0
  1226. package/dist/runtime/manifest/executable-flow.d.ts +100 -0
  1227. package/dist/runtime/manifest/executable-flow.d.ts.map +1 -0
  1228. package/dist/runtime/manifest/executable-flow.js +2 -0
  1229. package/dist/runtime/manifest/executable-flow.js.map +1 -0
  1230. package/dist/runtime/manifest/from-compiled-flow.d.ts +4 -0
  1231. package/dist/runtime/manifest/from-compiled-flow.d.ts.map +1 -0
  1232. package/dist/runtime/manifest/from-compiled-flow.js +169 -0
  1233. package/dist/runtime/manifest/from-compiled-flow.js.map +1 -0
  1234. package/dist/runtime/manifest/runtime-package-index.d.ts +4 -0
  1235. package/dist/runtime/manifest/runtime-package-index.d.ts.map +1 -0
  1236. package/dist/runtime/manifest/runtime-package-index.js +98 -0
  1237. package/dist/runtime/manifest/runtime-package-index.js.map +1 -0
  1238. package/dist/runtime/manifest/validate-executable-flow.d.ts +8 -0
  1239. package/dist/runtime/manifest/validate-executable-flow.d.ts.map +1 -0
  1240. package/dist/runtime/manifest/validate-executable-flow.js +143 -0
  1241. package/dist/runtime/manifest/validate-executable-flow.js.map +1 -0
  1242. package/dist/runtime/projections/progress.d.ts +16 -0
  1243. package/dist/runtime/projections/progress.d.ts.map +1 -0
  1244. package/dist/runtime/projections/progress.js +679 -0
  1245. package/dist/runtime/projections/progress.js.map +1 -0
  1246. package/dist/runtime/projections/status.d.ts +4 -0
  1247. package/dist/runtime/projections/status.d.ts.map +1 -0
  1248. package/dist/runtime/projections/status.js +14 -0
  1249. package/dist/runtime/projections/status.js.map +1 -0
  1250. package/dist/runtime/projections/tournament-checkpoint-context.d.ts +18 -0
  1251. package/dist/runtime/projections/tournament-checkpoint-context.d.ts.map +1 -0
  1252. package/dist/runtime/projections/tournament-checkpoint-context.js +106 -0
  1253. package/dist/runtime/projections/tournament-checkpoint-context.js.map +1 -0
  1254. package/dist/runtime/run/binding-legibility.d.ts +71 -0
  1255. package/dist/runtime/run/binding-legibility.d.ts.map +1 -0
  1256. package/dist/runtime/run/binding-legibility.js +61 -0
  1257. package/dist/runtime/run/binding-legibility.js.map +1 -0
  1258. package/dist/runtime/run/capabilities.d.ts +34 -0
  1259. package/dist/runtime/run/capabilities.d.ts.map +1 -0
  1260. package/dist/runtime/run/capabilities.js +22 -0
  1261. package/dist/runtime/run/capabilities.js.map +1 -0
  1262. package/dist/runtime/run/carried-notes.d.ts +13 -0
  1263. package/dist/runtime/run/carried-notes.d.ts.map +1 -0
  1264. package/dist/runtime/run/carried-notes.js +53 -0
  1265. package/dist/runtime/run/carried-notes.js.map +1 -0
  1266. package/dist/runtime/run/checkpoint-resume.d.ts +44 -0
  1267. package/dist/runtime/run/checkpoint-resume.d.ts.map +1 -0
  1268. package/dist/runtime/run/checkpoint-resume.js +549 -0
  1269. package/dist/runtime/run/checkpoint-resume.js.map +1 -0
  1270. package/dist/runtime/run/child-runner.d.ts +57 -0
  1271. package/dist/runtime/run/child-runner.d.ts.map +1 -0
  1272. package/dist/runtime/run/child-runner.js +2 -0
  1273. package/dist/runtime/run/child-runner.js.map +1 -0
  1274. package/dist/runtime/run/commit-containment.d.ts +11 -0
  1275. package/dist/runtime/run/commit-containment.d.ts.map +1 -0
  1276. package/dist/runtime/run/commit-containment.js +46 -0
  1277. package/dist/runtime/run/commit-containment.js.map +1 -0
  1278. package/dist/runtime/run/compiled-flow-runner.d.ts +26 -0
  1279. package/dist/runtime/run/compiled-flow-runner.d.ts.map +1 -0
  1280. package/dist/runtime/run/compiled-flow-runner.js +137 -0
  1281. package/dist/runtime/run/compiled-flow-runner.js.map +1 -0
  1282. package/dist/runtime/run/connector-planning.d.ts +3 -0
  1283. package/dist/runtime/run/connector-planning.d.ts.map +1 -0
  1284. package/dist/runtime/run/connector-planning.js +29 -0
  1285. package/dist/runtime/run/connector-planning.js.map +1 -0
  1286. package/dist/runtime/run/context-delivery.d.ts +24 -0
  1287. package/dist/runtime/run/context-delivery.d.ts.map +1 -0
  1288. package/dist/runtime/run/context-delivery.js +92 -0
  1289. package/dist/runtime/run/context-delivery.js.map +1 -0
  1290. package/dist/runtime/run/context-pull.d.ts +22 -0
  1291. package/dist/runtime/run/context-pull.d.ts.map +1 -0
  1292. package/dist/runtime/run/context-pull.js +112 -0
  1293. package/dist/runtime/run/context-pull.js.map +1 -0
  1294. package/dist/runtime/run/engine-flags.d.ts +7 -0
  1295. package/dist/runtime/run/engine-flags.d.ts.map +1 -0
  1296. package/dist/runtime/run/engine-flags.js +89 -0
  1297. package/dist/runtime/run/engine-flags.js.map +1 -0
  1298. package/dist/runtime/run/equipment-reshape.d.ts +24 -0
  1299. package/dist/runtime/run/equipment-reshape.d.ts.map +1 -0
  1300. package/dist/runtime/run/equipment-reshape.js +156 -0
  1301. package/dist/runtime/run/equipment-reshape.js.map +1 -0
  1302. package/dist/runtime/run/external-files.d.ts +5 -0
  1303. package/dist/runtime/run/external-files.d.ts.map +1 -0
  1304. package/dist/runtime/run/external-files.js +7 -0
  1305. package/dist/runtime/run/external-files.js.map +1 -0
  1306. package/dist/runtime/run/frozen-eval.d.ts +8 -0
  1307. package/dist/runtime/run/frozen-eval.d.ts.map +1 -0
  1308. package/dist/runtime/run/frozen-eval.js +60 -0
  1309. package/dist/runtime/run/frozen-eval.js.map +1 -0
  1310. package/dist/runtime/run/graph-runner.d.ts +67 -0
  1311. package/dist/runtime/run/graph-runner.d.ts.map +1 -0
  1312. package/dist/runtime/run/graph-runner.js +1755 -0
  1313. package/dist/runtime/run/graph-runner.js.map +1 -0
  1314. package/dist/runtime/run/guidance.d.ts +49 -0
  1315. package/dist/runtime/run/guidance.d.ts.map +1 -0
  1316. package/dist/runtime/run/guidance.js +227 -0
  1317. package/dist/runtime/run/guidance.js.map +1 -0
  1318. package/dist/runtime/run/honesty-ledger.d.ts +21 -0
  1319. package/dist/runtime/run/honesty-ledger.d.ts.map +1 -0
  1320. package/dist/runtime/run/honesty-ledger.js +75 -0
  1321. package/dist/runtime/run/honesty-ledger.js.map +1 -0
  1322. package/dist/runtime/run/iteration-ledger.d.ts +15 -0
  1323. package/dist/runtime/run/iteration-ledger.d.ts.map +1 -0
  1324. package/dist/runtime/run/iteration-ledger.js +91 -0
  1325. package/dist/runtime/run/iteration-ledger.js.map +1 -0
  1326. package/dist/runtime/run/manifest-snapshot.d.ts +27 -0
  1327. package/dist/runtime/run/manifest-snapshot.d.ts.map +1 -0
  1328. package/dist/runtime/run/manifest-snapshot.js +58 -0
  1329. package/dist/runtime/run/manifest-snapshot.js.map +1 -0
  1330. package/dist/runtime/run/oracle-command-pin.d.ts +20 -0
  1331. package/dist/runtime/run/oracle-command-pin.d.ts.map +1 -0
  1332. package/dist/runtime/run/oracle-command-pin.js +94 -0
  1333. package/dist/runtime/run/oracle-command-pin.js.map +1 -0
  1334. package/dist/runtime/run/recovery-binding-verdict.d.ts +40 -0
  1335. package/dist/runtime/run/recovery-binding-verdict.d.ts.map +1 -0
  1336. package/dist/runtime/run/recovery-binding-verdict.js +70 -0
  1337. package/dist/runtime/run/recovery-binding-verdict.js.map +1 -0
  1338. package/dist/runtime/run/recovery-corridor.d.ts +103 -0
  1339. package/dist/runtime/run/recovery-corridor.d.ts.map +1 -0
  1340. package/dist/runtime/run/recovery-corridor.js +178 -0
  1341. package/dist/runtime/run/recovery-corridor.js.map +1 -0
  1342. package/dist/runtime/run/recovery-selection.d.ts +18 -0
  1343. package/dist/runtime/run/recovery-selection.d.ts.map +1 -0
  1344. package/dist/runtime/run/recovery-selection.js +43 -0
  1345. package/dist/runtime/run/recovery-selection.js.map +1 -0
  1346. package/dist/runtime/run/relay-guidance.d.ts +40 -0
  1347. package/dist/runtime/run/relay-guidance.d.ts.map +1 -0
  1348. package/dist/runtime/run/relay-guidance.js +306 -0
  1349. package/dist/runtime/run/relay-guidance.js.map +1 -0
  1350. package/dist/runtime/run/relay-support.d.ts +29 -0
  1351. package/dist/runtime/run/relay-support.d.ts.map +1 -0
  1352. package/dist/runtime/run/relay-support.js +436 -0
  1353. package/dist/runtime/run/relay-support.js.map +1 -0
  1354. package/dist/runtime/run/result-recovery.d.ts +16 -0
  1355. package/dist/runtime/run/result-recovery.d.ts.map +1 -0
  1356. package/dist/runtime/run/result-recovery.js +73 -0
  1357. package/dist/runtime/run/result-recovery.js.map +1 -0
  1358. package/dist/runtime/run/result-writer.d.ts +17 -0
  1359. package/dist/runtime/run/result-writer.d.ts.map +1 -0
  1360. package/dist/runtime/run/result-writer.js +5 -0
  1361. package/dist/runtime/run/result-writer.js.map +1 -0
  1362. package/dist/runtime/run/resume-lock.d.ts +29 -0
  1363. package/dist/runtime/run/resume-lock.d.ts.map +1 -0
  1364. package/dist/runtime/run/resume-lock.js +166 -0
  1365. package/dist/runtime/run/resume-lock.js.map +1 -0
  1366. package/dist/runtime/run/reuse-children.d.ts +24 -0
  1367. package/dist/runtime/run/reuse-children.d.ts.map +1 -0
  1368. package/dist/runtime/run/reuse-children.js +107 -0
  1369. package/dist/runtime/run/reuse-children.js.map +1 -0
  1370. package/dist/runtime/run/run-boundary.d.ts +30 -0
  1371. package/dist/runtime/run/run-boundary.d.ts.map +1 -0
  1372. package/dist/runtime/run/run-boundary.js +110 -0
  1373. package/dist/runtime/run/run-boundary.js.map +1 -0
  1374. package/dist/runtime/run/run-close.d.ts +22 -0
  1375. package/dist/runtime/run/run-close.d.ts.map +1 -0
  1376. package/dist/runtime/run/run-close.js +228 -0
  1377. package/dist/runtime/run/run-close.js.map +1 -0
  1378. package/dist/runtime/run/run-context.d.ts +59 -0
  1379. package/dist/runtime/run/run-context.d.ts.map +1 -0
  1380. package/dist/runtime/run/run-context.js +2 -0
  1381. package/dist/runtime/run/run-context.js.map +1 -0
  1382. package/dist/runtime/run/run-transition.d.ts +43 -0
  1383. package/dist/runtime/run/run-transition.d.ts.map +1 -0
  1384. package/dist/runtime/run/run-transition.js +52 -0
  1385. package/dist/runtime/run/run-transition.js.map +1 -0
  1386. package/dist/runtime/run/run-values.d.ts +80 -0
  1387. package/dist/runtime/run/run-values.d.ts.map +1 -0
  1388. package/dist/runtime/run/run-values.js +85 -0
  1389. package/dist/runtime/run/run-values.js.map +1 -0
  1390. package/dist/runtime/run/slice-corridor.d.ts +27 -0
  1391. package/dist/runtime/run/slice-corridor.d.ts.map +1 -0
  1392. package/dist/runtime/run/slice-corridor.js +99 -0
  1393. package/dist/runtime/run/slice-corridor.js.map +1 -0
  1394. package/dist/runtime/run/trace-evidence.d.ts +34 -0
  1395. package/dist/runtime/run/trace-evidence.d.ts.map +1 -0
  1396. package/dist/runtime/run/trace-evidence.js +148 -0
  1397. package/dist/runtime/run/trace-evidence.js.map +1 -0
  1398. package/dist/runtime/run/until-budget.d.ts +12 -0
  1399. package/dist/runtime/run/until-budget.d.ts.map +1 -0
  1400. package/dist/runtime/run/until-budget.js +102 -0
  1401. package/dist/runtime/run/until-budget.js.map +1 -0
  1402. package/dist/runtime/run/until-corridor.d.ts +32 -0
  1403. package/dist/runtime/run/until-corridor.d.ts.map +1 -0
  1404. package/dist/runtime/run/until-corridor.js +161 -0
  1405. package/dist/runtime/run/until-corridor.js.map +1 -0
  1406. package/dist/runtime/run-files/report-validator.d.ts +3 -0
  1407. package/dist/runtime/run-files/report-validator.d.ts.map +1 -0
  1408. package/dist/runtime/run-files/report-validator.js +29 -0
  1409. package/dist/runtime/run-files/report-validator.js.map +1 -0
  1410. package/dist/runtime/run-files/run-file-store.d.ts +13 -0
  1411. package/dist/runtime/run-files/run-file-store.d.ts.map +1 -0
  1412. package/dist/runtime/run-files/run-file-store.js +42 -0
  1413. package/dist/runtime/run-files/run-file-store.js.map +1 -0
  1414. package/dist/runtime/trace/trace-fields.d.ts +97 -0
  1415. package/dist/runtime/trace/trace-fields.d.ts.map +1 -0
  1416. package/dist/runtime/trace/trace-fields.js +181 -0
  1417. package/dist/runtime/trace/trace-fields.js.map +1 -0
  1418. package/dist/runtime/trace/trace-store.d.ts +20 -0
  1419. package/dist/runtime/trace/trace-store.d.ts.map +1 -0
  1420. package/dist/runtime/trace/trace-store.js +157 -0
  1421. package/dist/runtime/trace/trace-store.js.map +1 -0
  1422. package/dist/schemas/acceptance-criteria.d.ts +94 -0
  1423. package/dist/schemas/acceptance-criteria.d.ts.map +1 -0
  1424. package/dist/schemas/acceptance-criteria.js +42 -0
  1425. package/dist/schemas/acceptance-criteria.js.map +1 -0
  1426. package/dist/schemas/axes.d.ts +45 -0
  1427. package/dist/schemas/axes.d.ts.map +1 -0
  1428. package/dist/schemas/axes.js +79 -0
  1429. package/dist/schemas/axes.js.map +1 -0
  1430. package/dist/schemas/axis-config-requirement.d.ts +20 -0
  1431. package/dist/schemas/axis-config-requirement.d.ts.map +1 -0
  1432. package/dist/schemas/axis-config-requirement.js +24 -0
  1433. package/dist/schemas/axis-config-requirement.js.map +1 -0
  1434. package/dist/schemas/builtin-report-schemas.d.ts +6 -0
  1435. package/dist/schemas/builtin-report-schemas.d.ts.map +1 -0
  1436. package/dist/schemas/builtin-report-schemas.js +155 -0
  1437. package/dist/schemas/builtin-report-schemas.js.map +1 -0
  1438. package/dist/schemas/change-kind.d.ts +75 -0
  1439. package/dist/schemas/change-kind.d.ts.map +1 -0
  1440. package/dist/schemas/change-kind.js +35 -0
  1441. package/dist/schemas/change-kind.js.map +1 -0
  1442. package/dist/schemas/change-packet.d.ts +42 -0
  1443. package/dist/schemas/change-packet.d.ts.map +1 -0
  1444. package/dist/schemas/change-packet.js +26 -0
  1445. package/dist/schemas/change-packet.js.map +1 -0
  1446. package/dist/schemas/check.d.ts +174 -0
  1447. package/dist/schemas/check.d.ts.map +1 -0
  1448. package/dist/schemas/check.js +162 -0
  1449. package/dist/schemas/check.js.map +1 -0
  1450. package/dist/schemas/checkpoint-boundary.d.ts +605 -0
  1451. package/dist/schemas/checkpoint-boundary.d.ts.map +1 -0
  1452. package/dist/schemas/checkpoint-boundary.js +243 -0
  1453. package/dist/schemas/checkpoint-boundary.js.map +1 -0
  1454. package/dist/schemas/compiled-flow.d.ts +1065 -0
  1455. package/dist/schemas/compiled-flow.d.ts.map +1 -0
  1456. package/dist/schemas/compiled-flow.js +331 -0
  1457. package/dist/schemas/compiled-flow.js.map +1 -0
  1458. package/dist/schemas/config.d.ts +905 -0
  1459. package/dist/schemas/config.d.ts.map +1 -0
  1460. package/dist/schemas/config.js +240 -0
  1461. package/dist/schemas/config.js.map +1 -0
  1462. package/dist/schemas/connector.d.ts +216 -0
  1463. package/dist/schemas/connector.d.ts.map +1 -0
  1464. package/dist/schemas/connector.js +150 -0
  1465. package/dist/schemas/connector.js.map +1 -0
  1466. package/dist/schemas/context-request.d.ts +14 -0
  1467. package/dist/schemas/context-request.d.ts.map +1 -0
  1468. package/dist/schemas/context-request.js +33 -0
  1469. package/dist/schemas/context-request.js.map +1 -0
  1470. package/dist/schemas/continuity.d.ts +362 -0
  1471. package/dist/schemas/continuity.d.ts.map +1 -0
  1472. package/dist/schemas/continuity.js +232 -0
  1473. package/dist/schemas/continuity.js.map +1 -0
  1474. package/dist/schemas/custom-flow-descriptor.d.ts +10 -0
  1475. package/dist/schemas/custom-flow-descriptor.d.ts.map +1 -0
  1476. package/dist/schemas/custom-flow-descriptor.js +12 -0
  1477. package/dist/schemas/custom-flow-descriptor.js.map +1 -0
  1478. package/dist/schemas/depth.d.ts +16 -0
  1479. package/dist/schemas/depth.d.ts.map +1 -0
  1480. package/dist/schemas/depth.js +7 -0
  1481. package/dist/schemas/depth.js.map +1 -0
  1482. package/dist/schemas/engine-flags.d.ts +44 -0
  1483. package/dist/schemas/engine-flags.d.ts.map +1 -0
  1484. package/dist/schemas/engine-flags.js +104 -0
  1485. package/dist/schemas/engine-flags.js.map +1 -0
  1486. package/dist/schemas/equipment-discovery.d.ts +8 -0
  1487. package/dist/schemas/equipment-discovery.d.ts.map +1 -0
  1488. package/dist/schemas/equipment-discovery.js +36 -0
  1489. package/dist/schemas/equipment-discovery.js.map +1 -0
  1490. package/dist/schemas/equipment-scope.d.ts +42 -0
  1491. package/dist/schemas/equipment-scope.d.ts.map +1 -0
  1492. package/dist/schemas/equipment-scope.js +84 -0
  1493. package/dist/schemas/equipment-scope.js.map +1 -0
  1494. package/dist/schemas/flow-block-definitions.d.ts +59 -0
  1495. package/dist/schemas/flow-block-definitions.d.ts.map +1 -0
  1496. package/dist/schemas/flow-block-definitions.js +867 -0
  1497. package/dist/schemas/flow-block-definitions.js.map +1 -0
  1498. package/dist/schemas/flow-blocks.d.ts +301 -0
  1499. package/dist/schemas/flow-blocks.d.ts.map +1 -0
  1500. package/dist/schemas/flow-blocks.js +223 -0
  1501. package/dist/schemas/flow-blocks.js.map +1 -0
  1502. package/dist/schemas/flow-schematic-policy.d.ts +6 -0
  1503. package/dist/schemas/flow-schematic-policy.d.ts.map +1 -0
  1504. package/dist/schemas/flow-schematic-policy.js +8 -0
  1505. package/dist/schemas/flow-schematic-policy.js.map +1 -0
  1506. package/dist/schemas/flow-schematic.d.ts +1407 -0
  1507. package/dist/schemas/flow-schematic.d.ts.map +1 -0
  1508. package/dist/schemas/flow-schematic.js +944 -0
  1509. package/dist/schemas/flow-schematic.js.map +1 -0
  1510. package/dist/schemas/guidance-decision.d.ts +728 -0
  1511. package/dist/schemas/guidance-decision.d.ts.map +1 -0
  1512. package/dist/schemas/guidance-decision.js +527 -0
  1513. package/dist/schemas/guidance-decision.js.map +1 -0
  1514. package/dist/schemas/hashing.d.ts +6 -0
  1515. package/dist/schemas/hashing.d.ts.map +1 -0
  1516. package/dist/schemas/hashing.js +27 -0
  1517. package/dist/schemas/hashing.js.map +1 -0
  1518. package/dist/schemas/history.d.ts +1735 -0
  1519. package/dist/schemas/history.d.ts.map +1 -0
  1520. package/dist/schemas/history.js +662 -0
  1521. package/dist/schemas/history.js.map +1 -0
  1522. package/dist/schemas/host.d.ts +16 -0
  1523. package/dist/schemas/host.d.ts.map +1 -0
  1524. package/dist/schemas/host.js +8 -0
  1525. package/dist/schemas/host.js.map +1 -0
  1526. package/dist/schemas/ids.d.ts +18 -0
  1527. package/dist/schemas/ids.d.ts.map +1 -0
  1528. package/dist/schemas/ids.js +17 -0
  1529. package/dist/schemas/ids.js.map +1 -0
  1530. package/dist/schemas/index.d.ts +60 -0
  1531. package/dist/schemas/index.d.ts.map +1 -0
  1532. package/dist/schemas/index.js +60 -0
  1533. package/dist/schemas/index.js.map +1 -0
  1534. package/dist/schemas/json.d.ts +10 -0
  1535. package/dist/schemas/json.d.ts.map +1 -0
  1536. package/dist/schemas/json.js +12 -0
  1537. package/dist/schemas/json.js.map +1 -0
  1538. package/dist/schemas/manifest.d.ts +15 -0
  1539. package/dist/schemas/manifest.d.ts.map +1 -0
  1540. package/dist/schemas/manifest.js +61 -0
  1541. package/dist/schemas/manifest.js.map +1 -0
  1542. package/dist/schemas/memory-input.d.ts +94 -0
  1543. package/dist/schemas/memory-input.d.ts.map +1 -0
  1544. package/dist/schemas/memory-input.js +119 -0
  1545. package/dist/schemas/memory-input.js.map +1 -0
  1546. package/dist/schemas/operator-summary.d.ts +369 -0
  1547. package/dist/schemas/operator-summary.d.ts.map +1 -0
  1548. package/dist/schemas/operator-summary.js +207 -0
  1549. package/dist/schemas/operator-summary.js.map +1 -0
  1550. package/dist/schemas/policy-envelope.d.ts +1655 -0
  1551. package/dist/schemas/policy-envelope.d.ts.map +1 -0
  1552. package/dist/schemas/policy-envelope.js +330 -0
  1553. package/dist/schemas/policy-envelope.js.map +1 -0
  1554. package/dist/schemas/power.d.ts +26 -0
  1555. package/dist/schemas/power.d.ts.map +1 -0
  1556. package/dist/schemas/power.js +38 -0
  1557. package/dist/schemas/power.js.map +1 -0
  1558. package/dist/schemas/process-evidence.d.ts +156 -0
  1559. package/dist/schemas/process-evidence.d.ts.map +1 -0
  1560. package/dist/schemas/process-evidence.js +142 -0
  1561. package/dist/schemas/process-evidence.js.map +1 -0
  1562. package/dist/schemas/process.d.ts +16 -0
  1563. package/dist/schemas/process.d.ts.map +1 -0
  1564. package/dist/schemas/process.js +7 -0
  1565. package/dist/schemas/process.js.map +1 -0
  1566. package/dist/schemas/progress-event.d.ts +1505 -0
  1567. package/dist/schemas/progress-event.d.ts.map +1 -0
  1568. package/dist/schemas/progress-event.js +246 -0
  1569. package/dist/schemas/progress-event.js.map +1 -0
  1570. package/dist/schemas/proof-assessment.d.ts +542 -0
  1571. package/dist/schemas/proof-assessment.d.ts.map +1 -0
  1572. package/dist/schemas/proof-assessment.js +336 -0
  1573. package/dist/schemas/proof-assessment.js.map +1 -0
  1574. package/dist/schemas/recovery-route-kind.d.ts +229 -0
  1575. package/dist/schemas/recovery-route-kind.d.ts.map +1 -0
  1576. package/dist/schemas/recovery-route-kind.js +242 -0
  1577. package/dist/schemas/recovery-route-kind.js.map +1 -0
  1578. package/dist/schemas/ref.d.ts +51 -0
  1579. package/dist/schemas/ref.d.ts.map +1 -0
  1580. package/dist/schemas/ref.js +96 -0
  1581. package/dist/schemas/ref.js.map +1 -0
  1582. package/dist/schemas/report-file-surface.d.ts +44 -0
  1583. package/dist/schemas/report-file-surface.d.ts.map +1 -0
  1584. package/dist/schemas/report-file-surface.js +22 -0
  1585. package/dist/schemas/report-file-surface.js.map +1 -0
  1586. package/dist/schemas/result.d.ts +23 -0
  1587. package/dist/schemas/result.d.ts.map +1 -0
  1588. package/dist/schemas/result.js +55 -0
  1589. package/dist/schemas/result.js.map +1 -0
  1590. package/dist/schemas/role.d.ts +8 -0
  1591. package/dist/schemas/role.d.ts.map +1 -0
  1592. package/dist/schemas/role.js +5 -0
  1593. package/dist/schemas/role.js.map +1 -0
  1594. package/dist/schemas/route-policy.d.ts +5 -0
  1595. package/dist/schemas/route-policy.d.ts.map +1 -0
  1596. package/dist/schemas/route-policy.js +9 -0
  1597. package/dist/schemas/route-policy.js.map +1 -0
  1598. package/dist/schemas/routing-contract-schemas.d.ts +11 -0
  1599. package/dist/schemas/routing-contract-schemas.d.ts.map +1 -0
  1600. package/dist/schemas/routing-contract-schemas.js +72 -0
  1601. package/dist/schemas/routing-contract-schemas.js.map +1 -0
  1602. package/dist/schemas/rubric.d.ts +74 -0
  1603. package/dist/schemas/rubric.d.ts.map +1 -0
  1604. package/dist/schemas/rubric.js +125 -0
  1605. package/dist/schemas/rubric.js.map +1 -0
  1606. package/dist/schemas/run-envelope.d.ts +1333 -0
  1607. package/dist/schemas/run-envelope.d.ts.map +1 -0
  1608. package/dist/schemas/run-envelope.js +578 -0
  1609. package/dist/schemas/run-envelope.js.map +1 -0
  1610. package/dist/schemas/run-status.d.ts +216 -0
  1611. package/dist/schemas/run-status.d.ts.map +1 -0
  1612. package/dist/schemas/run-status.js +146 -0
  1613. package/dist/schemas/run-status.js.map +1 -0
  1614. package/dist/schemas/run.d.ts +2866 -0
  1615. package/dist/schemas/run.d.ts.map +1 -0
  1616. package/dist/schemas/run.js +647 -0
  1617. package/dist/schemas/run.js.map +1 -0
  1618. package/dist/schemas/runtime-evidence.d.ts +152 -0
  1619. package/dist/schemas/runtime-evidence.d.ts.map +1 -0
  1620. package/dist/schemas/runtime-evidence.js +127 -0
  1621. package/dist/schemas/runtime-evidence.js.map +1 -0
  1622. package/dist/schemas/runtime-source.d.ts +55 -0
  1623. package/dist/schemas/runtime-source.d.ts.map +1 -0
  1624. package/dist/schemas/runtime-source.js +40 -0
  1625. package/dist/schemas/runtime-source.js.map +1 -0
  1626. package/dist/schemas/scalars.d.ts +21 -0
  1627. package/dist/schemas/scalars.d.ts.map +1 -0
  1628. package/dist/schemas/scalars.js +51 -0
  1629. package/dist/schemas/scalars.js.map +1 -0
  1630. package/dist/schemas/selection-policy.d.ts +764 -0
  1631. package/dist/schemas/selection-policy.d.ts.map +1 -0
  1632. package/dist/schemas/selection-policy.js +209 -0
  1633. package/dist/schemas/selection-policy.js.map +1 -0
  1634. package/dist/schemas/skill-hook.d.ts +214 -0
  1635. package/dist/schemas/skill-hook.d.ts.map +1 -0
  1636. package/dist/schemas/skill-hook.js +279 -0
  1637. package/dist/schemas/skill-hook.js.map +1 -0
  1638. package/dist/schemas/skill.d.ts +59 -0
  1639. package/dist/schemas/skill.d.ts.map +1 -0
  1640. package/dist/schemas/skill.js +82 -0
  1641. package/dist/schemas/skill.js.map +1 -0
  1642. package/dist/schemas/snapshot.d.ts +108 -0
  1643. package/dist/schemas/snapshot.d.ts.map +1 -0
  1644. package/dist/schemas/snapshot.js +40 -0
  1645. package/dist/schemas/snapshot.js.map +1 -0
  1646. package/dist/schemas/stage.d.ts +85 -0
  1647. package/dist/schemas/stage.d.ts.map +1 -0
  1648. package/dist/schemas/stage.js +58 -0
  1649. package/dist/schemas/stage.js.map +1 -0
  1650. package/dist/schemas/step.d.ts +2455 -0
  1651. package/dist/schemas/step.d.ts.map +1 -0
  1652. package/dist/schemas/step.js +567 -0
  1653. package/dist/schemas/step.js.map +1 -0
  1654. package/dist/schemas/trace-entry.d.ts +2573 -0
  1655. package/dist/schemas/trace-entry.d.ts.map +1 -0
  1656. package/dist/schemas/trace-entry.js +973 -0
  1657. package/dist/schemas/trace-entry.js.map +1 -0
  1658. package/dist/schemas/verification.d.ts +47 -0
  1659. package/dist/schemas/verification.d.ts.map +1 -0
  1660. package/dist/schemas/verification.js +122 -0
  1661. package/dist/schemas/verification.js.map +1 -0
  1662. package/dist/schemas/work-contract-projection.d.ts +473 -0
  1663. package/dist/schemas/work-contract-projection.d.ts.map +1 -0
  1664. package/dist/schemas/work-contract-projection.js +232 -0
  1665. package/dist/schemas/work-contract-projection.js.map +1 -0
  1666. package/dist/selection/connector-planning.d.ts +23 -0
  1667. package/dist/selection/connector-planning.d.ts.map +1 -0
  1668. package/dist/selection/connector-planning.js +31 -0
  1669. package/dist/selection/connector-planning.js.map +1 -0
  1670. package/dist/selection/power-inference.d.ts +20 -0
  1671. package/dist/selection/power-inference.d.ts.map +1 -0
  1672. package/dist/selection/power-inference.js +74 -0
  1673. package/dist/selection/power-inference.js.map +1 -0
  1674. package/dist/selection/power-tiers.d.ts +24 -0
  1675. package/dist/selection/power-tiers.d.ts.map +1 -0
  1676. package/dist/selection/power-tiers.js +115 -0
  1677. package/dist/selection/power-tiers.js.map +1 -0
  1678. package/dist/selection/relay-selection.d.ts +11 -0
  1679. package/dist/selection/relay-selection.d.ts.map +1 -0
  1680. package/dist/selection/relay-selection.js +57 -0
  1681. package/dist/selection/relay-selection.js.map +1 -0
  1682. package/dist/selection/selection-resolver.d.ts +23 -0
  1683. package/dist/selection/selection-resolver.d.ts.map +1 -0
  1684. package/dist/selection/selection-resolver.js +153 -0
  1685. package/dist/selection/selection-resolver.js.map +1 -0
  1686. package/dist/shared/atomic-io.d.ts +11 -0
  1687. package/dist/shared/atomic-io.d.ts.map +1 -0
  1688. package/dist/shared/atomic-io.js +29 -0
  1689. package/dist/shared/atomic-io.js.map +1 -0
  1690. package/dist/shared/checkpoint-auto-resolution.d.ts +17 -0
  1691. package/dist/shared/checkpoint-auto-resolution.d.ts.map +1 -0
  1692. package/dist/shared/checkpoint-auto-resolution.js +72 -0
  1693. package/dist/shared/checkpoint-auto-resolution.js.map +1 -0
  1694. package/dist/shared/checkpoint-boundary.d.ts +15 -0
  1695. package/dist/shared/checkpoint-boundary.d.ts.map +1 -0
  1696. package/dist/shared/checkpoint-boundary.js +125 -0
  1697. package/dist/shared/checkpoint-boundary.js.map +1 -0
  1698. package/dist/shared/config-loader.d.ts +20 -0
  1699. package/dist/shared/config-loader.d.ts.map +1 -0
  1700. package/dist/shared/config-loader.js +140 -0
  1701. package/dist/shared/config-loader.js.map +1 -0
  1702. package/dist/shared/connector-relay.d.ts +39 -0
  1703. package/dist/shared/connector-relay.d.ts.map +1 -0
  1704. package/dist/shared/connector-relay.js +2 -0
  1705. package/dist/shared/connector-relay.js.map +1 -0
  1706. package/dist/shared/control-plane-gitignore.d.ts +10 -0
  1707. package/dist/shared/control-plane-gitignore.d.ts.map +1 -0
  1708. package/dist/shared/control-plane-gitignore.js +46 -0
  1709. package/dist/shared/control-plane-gitignore.js.map +1 -0
  1710. package/dist/shared/control-plane-paths.d.ts +36 -0
  1711. package/dist/shared/control-plane-paths.d.ts.map +1 -0
  1712. package/dist/shared/control-plane-paths.js +71 -0
  1713. package/dist/shared/control-plane-paths.js.map +1 -0
  1714. package/dist/shared/equipment-enforcement.d.ts +11 -0
  1715. package/dist/shared/equipment-enforcement.d.ts.map +1 -0
  1716. package/dist/shared/equipment-enforcement.js +37 -0
  1717. package/dist/shared/equipment-enforcement.js.map +1 -0
  1718. package/dist/shared/fanout-aggregate-report.d.ts +32 -0
  1719. package/dist/shared/fanout-aggregate-report.d.ts.map +1 -0
  1720. package/dist/shared/fanout-aggregate-report.js +73 -0
  1721. package/dist/shared/fanout-aggregate-report.js.map +1 -0
  1722. package/dist/shared/fanout-branch-template.d.ts +4 -0
  1723. package/dist/shared/fanout-branch-template.d.ts.map +1 -0
  1724. package/dist/shared/fanout-branch-template.js +55 -0
  1725. package/dist/shared/fanout-branch-template.js.map +1 -0
  1726. package/dist/shared/git-state-command.d.ts +19 -0
  1727. package/dist/shared/git-state-command.d.ts.map +1 -0
  1728. package/dist/shared/git-state-command.js +52 -0
  1729. package/dist/shared/git-state-command.js.map +1 -0
  1730. package/dist/shared/git-state.d.ts +3 -0
  1731. package/dist/shared/git-state.d.ts.map +1 -0
  1732. package/dist/shared/git-state.js +163 -0
  1733. package/dist/shared/git-state.js.map +1 -0
  1734. package/dist/shared/git-state.ts +175 -0
  1735. package/dist/shared/html/checkpoint-page.d.ts +41 -0
  1736. package/dist/shared/html/checkpoint-page.d.ts.map +1 -0
  1737. package/dist/shared/html/checkpoint-page.js +108 -0
  1738. package/dist/shared/html/checkpoint-page.js.map +1 -0
  1739. package/dist/shared/html/index.d.ts +6 -0
  1740. package/dist/shared/html/index.d.ts.map +1 -0
  1741. package/dist/shared/html/index.js +16 -0
  1742. package/dist/shared/html/index.js.map +1 -0
  1743. package/dist/shared/html/multi-variant.d.ts +56 -0
  1744. package/dist/shared/html/multi-variant.d.ts.map +1 -0
  1745. package/dist/shared/html/multi-variant.js +183 -0
  1746. package/dist/shared/html/multi-variant.js.map +1 -0
  1747. package/dist/shared/html/page.d.ts +5 -0
  1748. package/dist/shared/html/page.d.ts.map +1 -0
  1749. package/dist/shared/html/page.js +42 -0
  1750. package/dist/shared/html/page.js.map +1 -0
  1751. package/dist/shared/html/projector.d.ts +38 -0
  1752. package/dist/shared/html/projector.d.ts.map +1 -0
  1753. package/dist/shared/html/projector.js +7 -0
  1754. package/dist/shared/html/projector.js.map +1 -0
  1755. package/dist/shared/html/react-page.d.ts +10 -0
  1756. package/dist/shared/html/react-page.d.ts.map +1 -0
  1757. package/dist/shared/html/react-page.js +31 -0
  1758. package/dist/shared/html/react-page.js.map +1 -0
  1759. package/dist/shared/html/report-components.d.ts +57 -0
  1760. package/dist/shared/html/report-components.d.ts.map +1 -0
  1761. package/dist/shared/html/report-components.js +69 -0
  1762. package/dist/shared/html/report-components.js.map +1 -0
  1763. package/dist/shared/html/ui/alert.d.ts +10 -0
  1764. package/dist/shared/html/ui/alert.d.ts.map +1 -0
  1765. package/dist/shared/html/ui/alert.js +28 -0
  1766. package/dist/shared/html/ui/alert.js.map +1 -0
  1767. package/dist/shared/html/ui/badge.d.ts +11 -0
  1768. package/dist/shared/html/ui/badge.d.ts.map +1 -0
  1769. package/dist/shared/html/ui/badge.js +32 -0
  1770. package/dist/shared/html/ui/badge.js.map +1 -0
  1771. package/dist/shared/html/ui/button.d.ts +13 -0
  1772. package/dist/shared/html/ui/button.d.ts.map +1 -0
  1773. package/dist/shared/html/ui/button.js +36 -0
  1774. package/dist/shared/html/ui/button.js.map +1 -0
  1775. package/dist/shared/html/ui/card.d.ts +10 -0
  1776. package/dist/shared/html/ui/card.d.ts.map +1 -0
  1777. package/dist/shared/html/ui/card.js +25 -0
  1778. package/dist/shared/html/ui/card.js.map +1 -0
  1779. package/dist/shared/html/ui/checkbox.d.ts +4 -0
  1780. package/dist/shared/html/ui/checkbox.d.ts.map +1 -0
  1781. package/dist/shared/html/ui/checkbox.js +7 -0
  1782. package/dist/shared/html/ui/checkbox.js.map +1 -0
  1783. package/dist/shared/html/ui/collapsible.d.ts +6 -0
  1784. package/dist/shared/html/ui/collapsible.d.ts.map +1 -0
  1785. package/dist/shared/html/ui/collapsible.js +13 -0
  1786. package/dist/shared/html/ui/collapsible.js.map +1 -0
  1787. package/dist/shared/html/ui/css.generated.d.ts +2 -0
  1788. package/dist/shared/html/ui/css.generated.d.ts.map +1 -0
  1789. package/dist/shared/html/ui/css.generated.js +5 -0
  1790. package/dist/shared/html/ui/css.generated.js.map +1 -0
  1791. package/dist/shared/html/ui/field.d.ts +26 -0
  1792. package/dist/shared/html/ui/field.d.ts.map +1 -0
  1793. package/dist/shared/html/ui/field.js +79 -0
  1794. package/dist/shared/html/ui/field.js.map +1 -0
  1795. package/dist/shared/html/ui/index.d.ts +16 -0
  1796. package/dist/shared/html/ui/index.d.ts.map +1 -0
  1797. package/dist/shared/html/ui/index.js +20 -0
  1798. package/dist/shared/html/ui/index.js.map +1 -0
  1799. package/dist/shared/html/ui/input.d.ts +5 -0
  1800. package/dist/shared/html/ui/input.d.ts.map +1 -0
  1801. package/dist/shared/html/ui/input.js +11 -0
  1802. package/dist/shared/html/ui/input.js.map +1 -0
  1803. package/dist/shared/html/ui/kbd.d.ts +5 -0
  1804. package/dist/shared/html/ui/kbd.d.ts.map +1 -0
  1805. package/dist/shared/html/ui/kbd.js +10 -0
  1806. package/dist/shared/html/ui/kbd.js.map +1 -0
  1807. package/dist/shared/html/ui/label.d.ts +4 -0
  1808. package/dist/shared/html/ui/label.d.ts.map +1 -0
  1809. package/dist/shared/html/ui/label.js +9 -0
  1810. package/dist/shared/html/ui/label.js.map +1 -0
  1811. package/dist/shared/html/ui/radio-group.d.ts +5 -0
  1812. package/dist/shared/html/ui/radio-group.d.ts.map +1 -0
  1813. package/dist/shared/html/ui/radio-group.js +10 -0
  1814. package/dist/shared/html/ui/radio-group.js.map +1 -0
  1815. package/dist/shared/html/ui/separator.d.ts +4 -0
  1816. package/dist/shared/html/ui/separator.d.ts.map +1 -0
  1817. package/dist/shared/html/ui/separator.js +11 -0
  1818. package/dist/shared/html/ui/separator.js.map +1 -0
  1819. package/dist/shared/html/ui/table.d.ts +11 -0
  1820. package/dist/shared/html/ui/table.d.ts.map +1 -0
  1821. package/dist/shared/html/ui/table.js +28 -0
  1822. package/dist/shared/html/ui/table.js.map +1 -0
  1823. package/dist/shared/html/ui/textarea.d.ts +4 -0
  1824. package/dist/shared/html/ui/textarea.d.ts.map +1 -0
  1825. package/dist/shared/html/ui/textarea.js +7 -0
  1826. package/dist/shared/html/ui/textarea.js.map +1 -0
  1827. package/dist/shared/html/ui/utils.d.ts +3 -0
  1828. package/dist/shared/html/ui/utils.d.ts.map +1 -0
  1829. package/dist/shared/html/ui/utils.js +11 -0
  1830. package/dist/shared/html/ui/utils.js.map +1 -0
  1831. package/dist/shared/json-extraction.d.ts +2 -0
  1832. package/dist/shared/json-extraction.d.ts.map +1 -0
  1833. package/dist/shared/json-extraction.js +68 -0
  1834. package/dist/shared/json-extraction.js.map +1 -0
  1835. package/dist/shared/manifest-snapshot.d.ts +13 -0
  1836. package/dist/shared/manifest-snapshot.d.ts.map +1 -0
  1837. package/dist/shared/manifest-snapshot.js +48 -0
  1838. package/dist/shared/manifest-snapshot.js.map +1 -0
  1839. package/dist/shared/operator-summary/explore.d.ts +3 -0
  1840. package/dist/shared/operator-summary/explore.d.ts.map +1 -0
  1841. package/dist/shared/operator-summary/explore.js +208 -0
  1842. package/dist/shared/operator-summary/explore.js.map +1 -0
  1843. package/dist/shared/operator-summary/index.d.ts +6 -0
  1844. package/dist/shared/operator-summary/index.d.ts.map +1 -0
  1845. package/dist/shared/operator-summary/index.js +10 -0
  1846. package/dist/shared/operator-summary/index.js.map +1 -0
  1847. package/dist/shared/operator-summary/json.d.ts +10 -0
  1848. package/dist/shared/operator-summary/json.d.ts.map +1 -0
  1849. package/dist/shared/operator-summary/json.js +63 -0
  1850. package/dist/shared/operator-summary/json.js.map +1 -0
  1851. package/dist/shared/operator-summary/projections.d.ts +4 -0
  1852. package/dist/shared/operator-summary/projections.d.ts.map +1 -0
  1853. package/dist/shared/operator-summary/projections.js +452 -0
  1854. package/dist/shared/operator-summary/projections.js.map +1 -0
  1855. package/dist/shared/operator-summary/projector.d.ts +14 -0
  1856. package/dist/shared/operator-summary/projector.d.ts.map +1 -0
  1857. package/dist/shared/operator-summary/projector.js +12 -0
  1858. package/dist/shared/operator-summary/projector.js.map +1 -0
  1859. package/dist/shared/operator-summary/text.d.ts +11 -0
  1860. package/dist/shared/operator-summary/text.d.ts.map +1 -0
  1861. package/dist/shared/operator-summary/text.js +92 -0
  1862. package/dist/shared/operator-summary/text.js.map +1 -0
  1863. package/dist/shared/outcome.d.ts +13 -0
  1864. package/dist/shared/outcome.d.ts.map +1 -0
  1865. package/dist/shared/outcome.js +76 -0
  1866. package/dist/shared/outcome.js.map +1 -0
  1867. package/dist/shared/progress-output.d.ts +12 -0
  1868. package/dist/shared/progress-output.d.ts.map +1 -0
  1869. package/dist/shared/progress-output.js +50 -0
  1870. package/dist/shared/progress-output.js.map +1 -0
  1871. package/dist/shared/proof-assessment.d.ts +7 -0
  1872. package/dist/shared/proof-assessment.d.ts.map +1 -0
  1873. package/dist/shared/proof-assessment.js +67 -0
  1874. package/dist/shared/proof-assessment.js.map +1 -0
  1875. package/dist/shared/proof-plan.d.ts +26 -0
  1876. package/dist/shared/proof-plan.d.ts.map +1 -0
  1877. package/dist/shared/proof-plan.js +164 -0
  1878. package/dist/shared/proof-plan.js.map +1 -0
  1879. package/dist/shared/relay-runtime-types.d.ts +30 -0
  1880. package/dist/shared/relay-runtime-types.d.ts.map +1 -0
  1881. package/dist/shared/relay-runtime-types.js +2 -0
  1882. package/dist/shared/relay-runtime-types.js.map +1 -0
  1883. package/dist/shared/result-path.d.ts +3 -0
  1884. package/dist/shared/result-path.d.ts.map +1 -0
  1885. package/dist/shared/result-path.js +6 -0
  1886. package/dist/shared/result-path.js.map +1 -0
  1887. package/dist/shared/run-artifact-io.d.ts +3 -0
  1888. package/dist/shared/run-artifact-io.d.ts.map +1 -0
  1889. package/dist/shared/run-artifact-io.js +17 -0
  1890. package/dist/shared/run-artifact-io.js.map +1 -0
  1891. package/dist/shared/run-file-paths.d.ts +3 -0
  1892. package/dist/shared/run-file-paths.d.ts.map +1 -0
  1893. package/dist/shared/run-file-paths.js +72 -0
  1894. package/dist/shared/run-file-paths.js.map +1 -0
  1895. package/dist/shared/run-relative-path.d.ts +2 -0
  1896. package/dist/shared/run-relative-path.d.ts.map +1 -0
  1897. package/dist/shared/run-relative-path.js +43 -0
  1898. package/dist/shared/run-relative-path.js.map +1 -0
  1899. package/dist/shared/runtime-source.d.ts +24 -0
  1900. package/dist/shared/runtime-source.d.ts.map +1 -0
  1901. package/dist/shared/runtime-source.js +75 -0
  1902. package/dist/shared/runtime-source.js.map +1 -0
  1903. package/dist/shared/runtime-touched-files.d.ts +12 -0
  1904. package/dist/shared/runtime-touched-files.d.ts.map +1 -0
  1905. package/dist/shared/runtime-touched-files.js +106 -0
  1906. package/dist/shared/runtime-touched-files.js.map +1 -0
  1907. package/dist/shared/skill-loading.d.ts +22 -0
  1908. package/dist/shared/skill-loading.d.ts.map +1 -0
  1909. package/dist/shared/skill-loading.js +75 -0
  1910. package/dist/shared/skill-loading.js.map +1 -0
  1911. package/dist/shared/status-block-renderer.d.ts +16 -0
  1912. package/dist/shared/status-block-renderer.d.ts.map +1 -0
  1913. package/dist/shared/status-block-renderer.js +67 -0
  1914. package/dist/shared/status-block-renderer.js.map +1 -0
  1915. package/dist/shared/user-skill-registry.d.ts +18 -0
  1916. package/dist/shared/user-skill-registry.d.ts.map +1 -0
  1917. package/dist/shared/user-skill-registry.js +130 -0
  1918. package/dist/shared/user-skill-registry.js.map +1 -0
  1919. package/dist/shared/verification-resolver.d.ts +23 -0
  1920. package/dist/shared/verification-resolver.d.ts.map +1 -0
  1921. package/dist/shared/verification-resolver.js +162 -0
  1922. package/dist/shared/verification-resolver.js.map +1 -0
  1923. package/dist/shared/work-contract-projection.d.ts +15 -0
  1924. package/dist/shared/work-contract-projection.d.ts.map +1 -0
  1925. package/dist/shared/work-contract-projection.js +498 -0
  1926. package/dist/shared/work-contract-projection.js.map +1 -0
  1927. package/dist/shared/working-tree-changes.d.ts +18 -0
  1928. package/dist/shared/working-tree-changes.d.ts.map +1 -0
  1929. package/dist/shared/working-tree-changes.js +94 -0
  1930. package/dist/shared/working-tree-changes.js.map +1 -0
  1931. package/dist/shared/write-capable-worker-disclosure.d.ts +3 -0
  1932. package/dist/shared/write-capable-worker-disclosure.d.ts.map +1 -0
  1933. package/dist/shared/write-capable-worker-disclosure.js +6 -0
  1934. package/dist/shared/write-capable-worker-disclosure.js.map +1 -0
  1935. package/dist/shared/zod-to-response-schema.d.ts +4 -0
  1936. package/dist/shared/zod-to-response-schema.d.ts.map +1 -0
  1937. package/dist/shared/zod-to-response-schema.js +88 -0
  1938. package/dist/shared/zod-to-response-schema.js.map +1 -0
  1939. package/dist/skill-hooks/decision-packet.d.ts +10 -0
  1940. package/dist/skill-hooks/decision-packet.d.ts.map +1 -0
  1941. package/dist/skill-hooks/decision-packet.js +42 -0
  1942. package/dist/skill-hooks/decision-packet.js.map +1 -0
  1943. package/dist/skill-hooks/dispatch.d.ts +27 -0
  1944. package/dist/skill-hooks/dispatch.d.ts.map +1 -0
  1945. package/dist/skill-hooks/dispatch.js +167 -0
  1946. package/dist/skill-hooks/dispatch.js.map +1 -0
  1947. package/dist/skill-hooks/injection.d.ts +7 -0
  1948. package/dist/skill-hooks/injection.d.ts.map +1 -0
  1949. package/dist/skill-hooks/injection.js +50 -0
  1950. package/dist/skill-hooks/injection.js.map +1 -0
  1951. package/dist/skill-hooks/policy.d.ts +32 -0
  1952. package/dist/skill-hooks/policy.d.ts.map +1 -0
  1953. package/dist/skill-hooks/policy.js +104 -0
  1954. package/dist/skill-hooks/policy.js.map +1 -0
  1955. package/dist/skill-hooks/surface-sources.d.ts +8 -0
  1956. package/dist/skill-hooks/surface-sources.d.ts.map +1 -0
  1957. package/dist/skill-hooks/surface-sources.js +55 -0
  1958. package/dist/skill-hooks/surface-sources.js.map +1 -0
  1959. package/generated/flows/build/circuit.json +439 -0
  1960. package/generated/flows/build/circuit.work-contract.v0.json +1283 -0
  1961. package/generated/flows/catalog.json +29 -0
  1962. package/generated/flows/converge-proof/circuit.json +145 -0
  1963. package/generated/flows/converge-proof/circuit.work-contract.v0.json +275 -0
  1964. package/generated/flows/cross-tool-build/circuit.json +321 -0
  1965. package/generated/flows/cross-tool-build/circuit.work-contract.v0.json +1157 -0
  1966. package/generated/flows/explainer/circuit.json +610 -0
  1967. package/generated/flows/explainer/circuit.work-contract.v0.json +1552 -0
  1968. package/generated/flows/explore/circuit.json +217 -0
  1969. package/generated/flows/explore/circuit.work-contract.v0.json +717 -0
  1970. package/generated/flows/explore/tournament.json +412 -0
  1971. package/generated/flows/explore/tournament.work-contract.v0.json +983 -0
  1972. package/generated/flows/fix/circuit.json +563 -0
  1973. package/generated/flows/fix/circuit.work-contract.v0.json +2175 -0
  1974. package/generated/flows/fix/low.json +511 -0
  1975. package/generated/flows/fix/low.work-contract.v0.json +1921 -0
  1976. package/generated/flows/fix-until-green/circuit.json +183 -0
  1977. package/generated/flows/fix-until-green/circuit.work-contract.v0.json +438 -0
  1978. package/generated/flows/goal/circuit.json +638 -0
  1979. package/generated/flows/goal/circuit.work-contract.v0.json +2133 -0
  1980. package/generated/flows/prototype/circuit.json +278 -0
  1981. package/generated/flows/prototype/circuit.work-contract.v0.json +690 -0
  1982. package/generated/flows/prototype/tournament.json +505 -0
  1983. package/generated/flows/prototype/tournament.work-contract.v0.json +1122 -0
  1984. package/generated/flows/pursue/circuit.json +298 -0
  1985. package/generated/flows/pursue/circuit.work-contract.v0.json +944 -0
  1986. package/generated/flows/review/circuit.json +142 -0
  1987. package/generated/flows/review/circuit.work-contract.v0.json +392 -0
  1988. package/generated/flows/runtime-proof/circuit.json +91 -0
  1989. package/generated/flows/runtime-proof/circuit.work-contract.v0.json +183 -0
  1990. package/generated/flows/sweep/circuit.json +239 -0
  1991. package/generated/flows/sweep/circuit.work-contract.v0.json +590 -0
  1992. package/package.json +102 -0
  1993. package/plugins/version.json +3 -0
@@ -0,0 +1,1667 @@
1
+ // Operator summary write path: resolve the per-flow result report, run the
2
+ // projection, emit HTML, add cross-flow details, then write JSON, markdown, and
3
+ // HTML siblings. Per-flow projection logic lives in src/shared/operator-summary/.
4
+ import { existsSync, mkdirSync, readFileSync, rmSync, writeFileSync } from 'node:fs';
5
+ import { dirname, isAbsolute, join, relative, resolve } from 'node:path';
6
+ import { findFlowRuntimeSurfaceById } from '../../flows/catalog.js';
7
+ import { iterationLedgerFromTrace, renderIterationLedgerMarkdown, } from '../../runtime/run/iteration-ledger.js';
8
+ import { OperatorAutoResolution, OperatorEquipmentReshape, OperatorSkillHookActivation, OperatorSummary, } from '../../schemas/operator-summary.js';
9
+ import { Power } from '../../schemas/power.js';
10
+ import { CompiledDepth } from '../../schemas/process.js';
11
+ import { ProviderScopedModel } from '../../schemas/selection-policy.js';
12
+ import { RunSkillHookEvent } from '../../schemas/skill-hook.js';
13
+ import { RelayRole } from '../../schemas/step.js';
14
+ import { CatalogSourcedBinding, RelayUsageEvidence, RunEquipmentReshapeTraceEntry, TraceEntry, } from '../../schemas/trace-entry.js';
15
+ import { genericCheckpointHtml, getHtmlProjector, } from '../../shared/html/index.js';
16
+ import { arrayField, evidenceReportById, friendlyRunNote, isObject, numberField, projectSummary, readJsonIfPresent, stringArrayField, stringField, } from '../../shared/operator-summary/index.js';
17
+ import { friendlyFixOutcome } from '../../shared/operator-summary/text.js';
18
+ import { RUN_RESULT_RELATIVE_PATH } from '../../shared/result-path.js';
19
+ import { resolveRunRelative } from '../../shared/run-relative-path.js';
20
+ import { WRITE_CAPABLE_WORKER_DISCLOSURE, flowMayInvokeWriteCapableWorker, } from '../../shared/write-capable-worker-disclosure.js';
21
+ // On resume, the CLI has the flow id but no longer has the original
22
+ // `routedBy` / `routerReason` (those came from the route classifier on
23
+ // the initial run). Recover them from the previously-written operator
24
+ // summary so a resume rewrite does not strip routing metadata that the
25
+ // initial close site captured.
26
+ export function readPriorRoute(runFolder) {
27
+ const path = join(runFolder, 'reports', 'operator-summary.json');
28
+ if (!existsSync(path))
29
+ return {};
30
+ try {
31
+ const raw = JSON.parse(readFileSync(path, 'utf8'));
32
+ if (!isObject(raw))
33
+ return {};
34
+ const routedBy = raw.routed_by;
35
+ const routerReason = raw.router_reason;
36
+ // Routing is model-only now, so the only recognized source is 'explicit'.
37
+ // A stale 'classifier' value from an older run folder is ignored, which
38
+ // degrades gracefully to recovery provenance on resume.
39
+ return {
40
+ ...(routedBy === 'explicit' ? { routedBy } : {}),
41
+ ...(typeof routerReason === 'string' && routerReason.length > 0 ? { routerReason } : {}),
42
+ };
43
+ }
44
+ catch {
45
+ return {};
46
+ }
47
+ }
48
+ // Label used when listing the HTML report in report_paths. Not load-bearing
49
+ // for control flow — markdown rendering and CLI plumbing read summary.html_path
50
+ // directly. Kept as a friendly label for the report list.
51
+ const HTML_REPORT_LABEL = 'Operator summary (HTML)';
52
+ // The brief is a fixed-size digest: OperatorBriefSlots (the schema) caps key
53
+ // points at 4 and caveats at 3 so the rendered card stays scannable at a
54
+ // glance. The caps are honest only because capWithOverflow (below) turns
55
+ // anything beyond them into an explicit "+N more" line — a capped brief may
56
+ // be short, but it can never silently read as the whole story.
57
+ const MAX_KEY_POINTS = 4;
58
+ const MAX_CAVEATS = 3;
59
+ // Cap a list for the fixed-size brief. When items overflow the cap, the last
60
+ // slot becomes an explicit "+N more in operator-summary.json." pointer instead
61
+ // of a silent drop: the brief stays schema-sized while telling the operator
62
+ // how much it is not showing and where the full record lives (the JSON
63
+ // summary carries the uncapped details, evidence_warnings, and checkpoint
64
+ // data the brief draws from). With no slot left for even the pointer
65
+ // (max <= 0), the caller has filled the card with lines that outrank these.
66
+ function capWithOverflow(items, max) {
67
+ if (max <= 0)
68
+ return [];
69
+ if (items.length <= max)
70
+ return [...items];
71
+ const shown = items.slice(0, max - 1);
72
+ return [...shown, `+${items.length - shown.length} more in operator-summary.json.`];
73
+ }
74
+ // Key points for the outcome-override briefs. Priority lines (the abort or
75
+ // stop reason, the salvage handover, the checkpoint prompt) always keep their
76
+ // slots: several of them exist ONLY in the brief, so evicting one for an
77
+ // overflow pointer would lose it outright. Detail-derived candidates fill
78
+ // whatever space remains, with the usual overflow accounting; when priority
79
+ // lines fill the card, the dropped candidates still live in the details array
80
+ // of the same operator-summary.json this brief is part of.
81
+ function briefKeyPoints(priority, candidates) {
82
+ const front = priority.slice(0, MAX_KEY_POINTS);
83
+ return [...front, ...capWithOverflow(candidates, MAX_KEY_POINTS - front.length)];
84
+ }
85
+ // The real salvage menu for a stopped or aborted run: the operator inspects
86
+ // the diff, proves the change on their own terms, then decides what happens
87
+ // to the attempt. Replaces a generic "inspect the run" pointer that named no
88
+ // options (F6).
89
+ const SALVAGE_NEXT_ACTION = 'review the diff, run verification at your own budget, then resume, rerun, or discard the attempt.';
90
+ // Only Build and Fix run a verification step and an independent review step
91
+ // whose reports live at this well-known per-flow path today. Any other flow
92
+ // simply renders no salvage line for that report — never a false claim.
93
+ const VERIFICATION_REPORT_PATH_BY_FLOW = {
94
+ build: 'reports/build/verification.json',
95
+ fix: 'reports/fix/verification.json',
96
+ };
97
+ const REVIEW_REPORT_PATH_BY_FLOW = {
98
+ build: 'reports/build/review.json',
99
+ fix: 'reports/fix/review.json',
100
+ };
101
+ // Names the failing or timed-out command straight from the verification
102
+ // report (1c's honest per-command reason made this legible) instead of
103
+ // leaving the operator to reconstruct it from the trace by hand (F6/2b).
104
+ function verificationFailureLine(runFolder, flowId) {
105
+ const path = VERIFICATION_REPORT_PATH_BY_FLOW[flowId];
106
+ if (path === undefined)
107
+ return undefined;
108
+ const report = readJsonIfPresent(runFolder, path);
109
+ if (stringField(report, 'overall_status') !== 'failed')
110
+ return undefined;
111
+ const failing = arrayField(report, 'commands').find((item) => isObject(item) && stringField(item, 'status') === 'failed');
112
+ if (!isObject(failing))
113
+ return undefined;
114
+ const id = stringField(failing, 'command_id') ?? 'unknown command';
115
+ if (failing.timed_out === true) {
116
+ const duration = numberField(failing, 'duration_ms');
117
+ const budget = numberField(failing, 'timeout_ms');
118
+ const durationText = duration === undefined ? '' : ` after ${duration}ms`;
119
+ const budgetText = budget === undefined ? '' : ` (budget ${budget}ms)`;
120
+ return `Verification: command '${id}' timed out${durationText}${budgetText}.`;
121
+ }
122
+ const exitCode = numberField(failing, 'exit_code');
123
+ return `Verification: command '${id}' exited ${exitCode ?? 'non-zero'}.`;
124
+ }
125
+ // States plainly that independent review never ran, instead of leaving a
126
+ // stopped or aborted run's summary silent about a skipped safeguard (F6).
127
+ function reviewDidNotRunLine(runFolder, flowId) {
128
+ const path = REVIEW_REPORT_PATH_BY_FLOW[flowId];
129
+ if (path === undefined)
130
+ return undefined;
131
+ return readJsonIfPresent(runFolder, path) === undefined
132
+ ? 'Review: independent review did not run.'
133
+ : undefined;
134
+ }
135
+ // The salvage key points a stopped or aborted run should hand the operator:
136
+ // what verification found, whether edits are sitting uncommitted, and
137
+ // whether review ran at all (F6/2b).
138
+ function salvageKeyPoints(input) {
139
+ const points = [];
140
+ const verificationLine = verificationFailureLine(input.runFolder, input.flowId);
141
+ if (verificationLine !== undefined)
142
+ points.push(verificationLine);
143
+ if (flowMayInvokeWriteCapableWorker(input.flowId)) {
144
+ points.push("Working tree: the attempt's edits remain uncommitted.");
145
+ }
146
+ const reviewLine = reviewDidNotRunLine(input.runFolder, input.flowId);
147
+ if (reviewLine !== undefined)
148
+ points.push(reviewLine);
149
+ return points;
150
+ }
151
+ function jsonPath(runFolder) {
152
+ return join(runFolder, 'reports', 'operator-summary.json');
153
+ }
154
+ function markdownPath(runFolder) {
155
+ return join(runFolder, 'reports', 'operator-summary.md');
156
+ }
157
+ function htmlPath(runFolder) {
158
+ return join(runFolder, 'reports', 'operator-summary.html');
159
+ }
160
+ function isInsideOrSame(root, target) {
161
+ const fromRoot = relative(root, target);
162
+ return fromRoot === '' || (!fromRoot.startsWith('..') && !isAbsolute(fromRoot));
163
+ }
164
+ function readCheckpointRequest(runFolder, checkpoint) {
165
+ let requestPath;
166
+ try {
167
+ requestPath = isAbsolute(checkpoint.request_path)
168
+ ? resolve(checkpoint.request_path)
169
+ : resolveRunRelative(runFolder, checkpoint.request_path);
170
+ }
171
+ catch {
172
+ return undefined;
173
+ }
174
+ if (!isInsideOrSame(resolve(runFolder), requestPath))
175
+ return undefined;
176
+ if (!existsSync(requestPath))
177
+ return undefined;
178
+ try {
179
+ const parsed = JSON.parse(readFileSync(requestPath, 'utf8'));
180
+ return isObject(parsed) ? parsed : undefined;
181
+ }
182
+ catch {
183
+ return undefined;
184
+ }
185
+ }
186
+ function checkpointProjectRoot(request) {
187
+ const executionContext = request?.execution_context;
188
+ if (!isObject(executionContext))
189
+ return undefined;
190
+ const projectRoot = stringField(executionContext, 'project_root');
191
+ return projectRoot !== undefined && isAbsolute(projectRoot) ? projectRoot : undefined;
192
+ }
193
+ function checkpointDepth(request) {
194
+ const executionContext = request?.execution_context;
195
+ if (!isObject(executionContext))
196
+ return undefined;
197
+ const axes = executionContext.axes;
198
+ if (!isObject(axes))
199
+ return undefined;
200
+ return stringField(axes, 'depth');
201
+ }
202
+ // Widens the envelope checkpoint (step id, request path, allowed ids) with
203
+ // the decision context the request file carries: the question, labeled
204
+ // choices, the declared default, and the depth dial. Best-effort by design —
205
+ // a missing or malformed request file leaves the widened fields undefined
206
+ // and the page falls back to choice ids.
207
+ function widenedProjectorCheckpoint(checkpoint, request) {
208
+ const prompt = request === undefined ? undefined : stringField(request, 'prompt');
209
+ const safeDefault = request === undefined ? undefined : stringField(request, 'safe_default_choice');
210
+ const depth = checkpointDepth(request);
211
+ const choices = arrayField(request, 'choices').flatMap((item) => {
212
+ if (!isObject(item))
213
+ return [];
214
+ const id = stringField(item, 'id');
215
+ if (id === undefined)
216
+ return [];
217
+ const label = stringField(item, 'label');
218
+ const description = stringField(item, 'description');
219
+ return [
220
+ {
221
+ id,
222
+ ...(label === undefined ? {} : { label }),
223
+ ...(description === undefined ? {} : { description }),
224
+ },
225
+ ];
226
+ });
227
+ return {
228
+ step_id: checkpoint.step_id,
229
+ request_path: checkpoint.request_path,
230
+ allowed_choices: checkpoint.allowed_choices,
231
+ ...(prompt === undefined ? {} : { prompt }),
232
+ ...(safeDefault === undefined ? {} : { safe_default_choice: safeDefault }),
233
+ ...(choices.length === 0 ? {} : { choices }),
234
+ ...(depth === undefined ? {} : { depth }),
235
+ };
236
+ }
237
+ function reportLink(runFolder, label, relPath, schema) {
238
+ return {
239
+ label,
240
+ path: resolveRunRelative(runFolder, relPath),
241
+ ...(schema === undefined ? {} : { schema }),
242
+ };
243
+ }
244
+ function warningRecords(report) {
245
+ return arrayField(report, 'evidence_warnings').flatMap((item) => {
246
+ if (!isObject(item))
247
+ return [];
248
+ const kind = stringField(item, 'kind');
249
+ const message = stringField(item, 'message');
250
+ if (kind === undefined || message === undefined)
251
+ return [];
252
+ const path = stringField(item, 'path');
253
+ return [{ kind, message, ...(path === undefined ? {} : { path }) }];
254
+ });
255
+ }
256
+ function flowDisplayName(flowId) {
257
+ return flowId
258
+ .split('-')
259
+ .map((part) => `${part.slice(0, 1).toUpperCase()}${part.slice(1)}`)
260
+ .join(' ');
261
+ }
262
+ function digestStatusText(headline) {
263
+ return headline.replace(/^Circuit\s*·\s*/i, '').trim();
264
+ }
265
+ function digestHeadline(flowName) {
266
+ return `Circuit · ${flowName}`;
267
+ }
268
+ function withoutDetailPrefix(detail, prefix) {
269
+ return detail.slice(prefix.length).trim();
270
+ }
271
+ function sentence(value) {
272
+ const trimmed = value.trim();
273
+ if (trimmed.length === 0)
274
+ return trimmed;
275
+ return /[.!?]$/.test(trimmed) ? trimmed : `${trimmed}.`;
276
+ }
277
+ function splitSemicolonDetail(detail, prefix) {
278
+ return withoutDetailPrefix(detail, prefix)
279
+ .split(/;\s*/)
280
+ .map((entry) => entry.trim())
281
+ .filter((entry) => entry.length > 0);
282
+ }
283
+ function detailWithPrefix(details, prefix) {
284
+ return details.find((detail) => detail.startsWith(prefix));
285
+ }
286
+ function hasEvidenceWarningKind(report, kind) {
287
+ return arrayField(report, 'evidence_warnings').some((item) => isObject(item) && stringField(item, 'kind') === kind);
288
+ }
289
+ function reviewOutcomeLabel(flowReport) {
290
+ if (hasEvidenceWarningKind(flowReport, 'scope_empty'))
291
+ return 'No scope';
292
+ const verdict = stringField(flowReport, 'verdict');
293
+ const findings = arrayField(flowReport, 'findings').length;
294
+ if (verdict === 'CLEAN')
295
+ return 'Clean';
296
+ return `Issues (${findings})`;
297
+ }
298
+ function buildOutcomeLabel(flowReport, runOutcome) {
299
+ const outcome = stringField(flowReport, 'outcome') ?? runOutcome;
300
+ const verification = stringField(flowReport, 'verification_status');
301
+ const review = stringField(flowReport, 'review_verdict');
302
+ if (outcome === 'complete' && verification === 'passed' && review === 'accept') {
303
+ return 'Implemented';
304
+ }
305
+ if (outcome === 'needs_attention')
306
+ return 'Needs follow-up';
307
+ return `Finished (${outcome})`;
308
+ }
309
+ function fixOutcomeLabel(flowReport, runOutcome) {
310
+ const outcome = stringField(flowReport, 'outcome') ?? runOutcome;
311
+ switch (outcome) {
312
+ case 'fixed':
313
+ return 'Fixed';
314
+ case 'partial':
315
+ return 'Applied with follow-ups';
316
+ case 'not-reproduced':
317
+ return 'Not reproduced';
318
+ case 'failed':
319
+ return 'Failed';
320
+ case 'stopped':
321
+ return 'Stopped';
322
+ case 'handoff':
323
+ return 'Handed off';
324
+ default:
325
+ return friendlyFixOutcome(outcome);
326
+ }
327
+ }
328
+ function exploreOutcomeLabel(input) {
329
+ const decisionReport = evidenceReportById(input.runFolder, input.flowReport, 'explore.decision') ??
330
+ readJsonIfPresent(input.runFolder, 'reports/decision.json');
331
+ const selected = stringField(decisionReport, 'selected_option_label');
332
+ if (selected !== undefined)
333
+ return `Decided: ${selected}`;
334
+ const snapshot = isObject(input.flowReport?.verdict_snapshot)
335
+ ? input.flowReport.verdict_snapshot
336
+ : undefined;
337
+ const review = stringField(snapshot, 'review_verdict');
338
+ if (review === 'accept-with-fold-ins') {
339
+ const foldIns = isObject(input.flowReport?.review_fold_ins)
340
+ ? input.flowReport.review_fold_ins
341
+ : undefined;
342
+ if (stringArrayField(foldIns, 'objections').length > 0) {
343
+ return 'Recommendation with required fold-ins';
344
+ }
345
+ if (stringArrayField(foldIns, 'missed_angles').length > 0) {
346
+ return 'Recommendation with optional considerations';
347
+ }
348
+ return 'Recommendation with reviewer notes';
349
+ }
350
+ return 'Recommendation ready';
351
+ }
352
+ function prototypeOutcomeLabel(flowReport, runOutcome) {
353
+ const outcome = stringField(flowReport, 'outcome') ?? runOutcome;
354
+ if (outcome === 'kept')
355
+ return 'Kept';
356
+ if (outcome === 'build_input_saved')
357
+ return 'Saved as Build input';
358
+ if (outcome === 'discarded')
359
+ return 'Discarded';
360
+ return `Finished (${outcome})`;
361
+ }
362
+ function pursueOutcomeLabel(flowReport) {
363
+ const total = numberField(flowReport, 'total_pursuits');
364
+ const completed = numberField(flowReport, 'completed_count') ?? 0;
365
+ return total === undefined ? `${completed} completed` : `${completed}/${total} completed`;
366
+ }
367
+ function goalOutcomeLabel(flowReport, runOutcome) {
368
+ const outcome = stringField(flowReport, 'outcome') ?? runOutcome;
369
+ return outcome === 'complete' ? 'Met' : 'Not met';
370
+ }
371
+ function outcomeLabelFor(input) {
372
+ switch (input.flowId) {
373
+ case 'review':
374
+ return reviewOutcomeLabel(input.flowReport);
375
+ case 'build':
376
+ return buildOutcomeLabel(input.flowReport, input.runOutcome);
377
+ case 'fix':
378
+ return fixOutcomeLabel(input.flowReport, input.runOutcome);
379
+ case 'explore':
380
+ return exploreOutcomeLabel(input);
381
+ case 'prototype':
382
+ return prototypeOutcomeLabel(input.flowReport, input.runOutcome);
383
+ case 'pursue':
384
+ return pursueOutcomeLabel(input.flowReport);
385
+ case 'goal':
386
+ return goalOutcomeLabel(input.flowReport, input.runOutcome);
387
+ default:
388
+ return input.runOutcome;
389
+ }
390
+ }
391
+ function normalizedAssessment(details, fallback) {
392
+ const assessment = detailWithPrefix(details, 'Assessment: ');
393
+ if (assessment !== undefined)
394
+ return withoutDetailPrefix(assessment, 'Assessment: ');
395
+ const recommendation = detailWithPrefix(details, 'Recommendation: ');
396
+ if (recommendation !== undefined)
397
+ return withoutDetailPrefix(recommendation, 'Recommendation: ');
398
+ const result = detailWithPrefix(details, 'Result: ');
399
+ if (result !== undefined)
400
+ return withoutDetailPrefix(result, 'Result: ');
401
+ return sentence(fallback
402
+ .replace(/^Circuit:\s*/i, '')
403
+ .replace(/^Circuit\s*·\s*/i, '')
404
+ .trim());
405
+ }
406
+ // Uncapped key-point candidates, in render order. Callers that prepend their
407
+ // own lines (the outcome-override briefs) combine first and cap once —
408
+ // capping twice would let an inner "+N more" line survive while real points
409
+ // drop.
410
+ function keyPointCandidatesFromDetails(details) {
411
+ const points = [];
412
+ // `Result: ` is the third-choice assessment source (after Assessment: and
413
+ // Recommendation: — see normalizedAssessment). When neither higher-precedence
414
+ // prefix is present it becomes the assessment, so it must not also render as a
415
+ // key point (the Pursue/Fix duplication in F-L-1). Review carries both an
416
+ // assessment paragraph and a Result line, so there it stays a distinct point.
417
+ const resultIsAssessmentSource = !details.some((detail) => detail.startsWith('Assessment: ')) &&
418
+ !details.some((detail) => detail.startsWith('Recommendation: '));
419
+ const add = (point) => {
420
+ const trimmed = point.trim();
421
+ if (trimmed.length === 0)
422
+ return;
423
+ if (points.includes(trimmed))
424
+ return;
425
+ points.push(trimmed);
426
+ };
427
+ for (const detail of details) {
428
+ if (detail.startsWith('Run note: '))
429
+ continue;
430
+ if (detail.startsWith('Assessment: '))
431
+ continue;
432
+ if (detail.startsWith('Recommendation: '))
433
+ continue;
434
+ if (resultIsAssessmentSource && detail.startsWith('Result: '))
435
+ continue;
436
+ if (detail.startsWith('Abort reason: '))
437
+ continue;
438
+ if (detail.startsWith('Escalation reason: '))
439
+ continue;
440
+ if (detail.startsWith('Handoff reason: '))
441
+ continue;
442
+ if (detail.startsWith('Stop reason: '))
443
+ continue;
444
+ if (detail.startsWith('Confidence limitations: '))
445
+ continue;
446
+ if (detail.startsWith('Residual risks: '))
447
+ continue;
448
+ if (detail.startsWith('Required fold-in: '))
449
+ continue;
450
+ if (detail.startsWith('Consider: '))
451
+ continue;
452
+ if (detail.startsWith('Next action: ') || detail.startsWith('Next step: '))
453
+ continue;
454
+ if (detail.startsWith('Reviewer steps: ')) {
455
+ for (const step of splitSemicolonDetail(detail, 'Reviewer steps: '))
456
+ add(step);
457
+ continue;
458
+ }
459
+ add(detail);
460
+ }
461
+ return points;
462
+ }
463
+ function keyPointsFromDetails(details) {
464
+ return capWithOverflow(keyPointCandidatesFromDetails(details), MAX_KEY_POINTS);
465
+ }
466
+ function caveatsFrom(input) {
467
+ const caveats = [];
468
+ const add = (caveat) => {
469
+ const trimmed = caveat.trim();
470
+ if (trimmed.length === 0)
471
+ return;
472
+ if (caveats.includes(trimmed))
473
+ return;
474
+ caveats.push(trimmed);
475
+ };
476
+ // Machine warnings FIRST. A warning records a subsystem failure the run
477
+ // survived (a swallowed hook dispatch, a failed HTML render, a parked
478
+ // discovery); it must never lose its brief slot to an ordinary review
479
+ // caveat, so position here is survival priority under the cap below.
480
+ for (const warning of input.warnings) {
481
+ add(`${warning.kind}: ${warning.message}`);
482
+ }
483
+ for (const detail of input.details) {
484
+ if (detail.startsWith('Confidence limitations: ')) {
485
+ for (const caveat of splitSemicolonDetail(detail, 'Confidence limitations: ')) {
486
+ add(sentence(caveat));
487
+ }
488
+ continue;
489
+ }
490
+ if (detail.startsWith('Residual risks: ')) {
491
+ for (const caveat of splitSemicolonDetail(detail, 'Residual risks: '))
492
+ add(sentence(caveat));
493
+ continue;
494
+ }
495
+ if (detail.startsWith('Required fold-in: '))
496
+ add(withoutDetailPrefix(detail, 'Required fold-in: '));
497
+ if (detail.startsWith('Consider: '))
498
+ add(withoutDetailPrefix(detail, 'Consider: '));
499
+ }
500
+ return capWithOverflow(caveats, MAX_CAVEATS);
501
+ }
502
+ function nextActionFrom(details, flowId, outcomeLabel) {
503
+ const nextAction = detailWithPrefix(details, 'Next action: ');
504
+ if (nextAction !== undefined)
505
+ return sentence(withoutDetailPrefix(nextAction, 'Next action: '));
506
+ const nextStep = detailWithPrefix(details, 'Next step: ');
507
+ if (nextStep !== undefined)
508
+ return sentence(withoutDetailPrefix(nextStep, 'Next step: '));
509
+ if (flowId === 'review' && outcomeLabel.startsWith('Issues')) {
510
+ return 'address the findings, then rerun Review.';
511
+ }
512
+ if (outcomeLabel === 'Needs follow-up' || outcomeLabel === 'Applied with follow-ups') {
513
+ return 'address the follow-up, then rerun the relevant check.';
514
+ }
515
+ if (outcomeLabel === 'No scope')
516
+ return 'rerun Review with source content in scope.';
517
+ if (outcomeLabel === 'Failed')
518
+ return 'inspect the failed proof and rerun after correction.';
519
+ return 'nothing required.';
520
+ }
521
+ function runOutcomeOverrideBrief(input) {
522
+ // Uncapped candidates: each branch prepends its own lines (reason, salvage,
523
+ // checkpoint) and caps ONCE, so priority lines hold the front slots and one
524
+ // overflow line accounts for everything dropped.
525
+ const keyPoints = keyPointCandidatesFromDetails(input.details);
526
+ if (input.runResult.outcome === 'checkpoint_waiting') {
527
+ return {
528
+ headline: digestHeadline(input.flowName),
529
+ assessment: 'Circuit is waiting for a checkpoint choice before this flow can continue.',
530
+ key_points: briefKeyPoints([
531
+ `Checkpoint step: ${input.runResult.checkpoint.step_id}`,
532
+ `Choices: ${input.runResult.checkpoint.allowed_choices.join(', ')}`,
533
+ ...(input.checkpointDefaultChoice === undefined
534
+ ? []
535
+ : [`Default if unanswered: ${input.checkpointDefaultChoice}`]),
536
+ ], keyPoints),
537
+ caveats: [],
538
+ next_action: 'choose a checkpoint option to continue.',
539
+ };
540
+ }
541
+ if (input.runResult.outcome === 'aborted') {
542
+ return {
543
+ headline: digestHeadline(input.flowName),
544
+ assessment: 'The run aborted before this flow could finish.',
545
+ key_points: briefKeyPoints([
546
+ ...(input.runResult.reason === undefined
547
+ ? []
548
+ : [`Abort reason: ${input.runResult.reason}`]),
549
+ ...salvageKeyPoints({ runFolder: input.runFolder, flowId: input.flowId }),
550
+ ], keyPoints),
551
+ caveats: [],
552
+ next_action: SALVAGE_NEXT_ACTION,
553
+ };
554
+ }
555
+ if (input.runResult.outcome === 'escalated') {
556
+ return {
557
+ headline: digestHeadline(input.flowName),
558
+ assessment: 'The run escalated because Circuit could not close the flow safely.',
559
+ key_points: briefKeyPoints(input.runResult.reason === undefined
560
+ ? []
561
+ : [`Escalation reason: ${input.runResult.reason}`], keyPoints),
562
+ caveats: [],
563
+ next_action: 'inspect the escalation reason and choose the recovery path.',
564
+ };
565
+ }
566
+ if (input.runResult.outcome === 'handoff') {
567
+ return {
568
+ headline: digestHeadline(input.flowName),
569
+ assessment: 'The flow prepared a handoff instead of closing complete.',
570
+ key_points: briefKeyPoints(input.runResult.reason === undefined ? [] : [`Handoff reason: ${input.runResult.reason}`], keyPoints),
571
+ caveats: [],
572
+ next_action: 'resume from the handoff record.',
573
+ };
574
+ }
575
+ if (input.runResult.outcome === 'stopped') {
576
+ return {
577
+ headline: digestHeadline(input.flowName),
578
+ assessment: 'The flow stopped before complete evidence was produced.',
579
+ key_points: briefKeyPoints([
580
+ ...(input.runResult.reason === undefined
581
+ ? []
582
+ : [`Stop reason: ${input.runResult.reason}`]),
583
+ ...salvageKeyPoints({ runFolder: input.runFolder, flowId: input.flowId }),
584
+ ], keyPoints),
585
+ caveats: [],
586
+ next_action: SALVAGE_NEXT_ACTION,
587
+ };
588
+ }
589
+ return undefined;
590
+ }
591
+ function buildBriefSlots(input) {
592
+ const flowName = flowDisplayName(input.flowId);
593
+ const override = runOutcomeOverrideBrief({
594
+ runFolder: input.runFolder,
595
+ flowId: input.flowId,
596
+ flowName,
597
+ runResult: input.runResult,
598
+ details: input.details,
599
+ ...(input.checkpointDefaultChoice === undefined
600
+ ? {}
601
+ : { checkpointDefaultChoice: input.checkpointDefaultChoice }),
602
+ });
603
+ if (override !== undefined)
604
+ return override;
605
+ const outcomeLabel = outcomeLabelFor({
606
+ runFolder: input.runFolder,
607
+ flowId: input.flowId,
608
+ flowReport: input.flowReport,
609
+ runOutcome: input.runResult.outcome,
610
+ resultSummary: input.runResult.summary,
611
+ });
612
+ return {
613
+ headline: digestHeadline(flowName),
614
+ assessment: normalizedAssessment(input.details, input.projectionHeadline),
615
+ key_points: keyPointsFromDetails(input.details),
616
+ caveats: caveatsFrom({ details: input.details, warnings: input.warnings }),
617
+ next_action: nextActionFrom(input.details, input.flowId, outcomeLabel),
618
+ };
619
+ }
620
+ function evidenceLinks(runFolder, report) {
621
+ const links = [];
622
+ const warnings = [];
623
+ for (const item of arrayField(report, 'evidence_links')) {
624
+ if (!isObject(item))
625
+ continue;
626
+ const reportId = stringField(item, 'report_id');
627
+ const path = stringField(item, 'path');
628
+ if (reportId === undefined || path === undefined)
629
+ continue;
630
+ try {
631
+ links.push(reportLink(runFolder, reportId, path, stringField(item, 'schema')));
632
+ }
633
+ catch (err) {
634
+ // A malformed evidence_links[].path (traversal, absolute, symlink-cross)
635
+ // would otherwise throw inside resolveRunRelative and abort the close.
636
+ // Keep the summary whole, but say the link was dropped — a silently
637
+ // missing report reads as "never produced" when it may exist.
638
+ warnings.push({
639
+ kind: 'evidence_link_dropped',
640
+ message: `evidence link '${reportId}' could not be added to the summary: ${err instanceof Error ? err.message : String(err)}`,
641
+ path,
642
+ });
643
+ }
644
+ }
645
+ return { links, warnings };
646
+ }
647
+ function readAutoResolutions(runFolder) {
648
+ const tracePath = join(runFolder, 'trace.ndjson');
649
+ if (!existsSync(tracePath))
650
+ return [];
651
+ const records = [];
652
+ for (const line of readFileSync(tracePath, 'utf8').split(/\r?\n/)) {
653
+ if (line.trim().length === 0)
654
+ continue;
655
+ let entry;
656
+ try {
657
+ entry = JSON.parse(line);
658
+ }
659
+ catch {
660
+ continue;
661
+ }
662
+ if (!isObject(entry))
663
+ continue;
664
+ if (entry.kind !== 'checkpoint.resolved' || entry.auto_resolved !== true)
665
+ continue;
666
+ const responsePath = stringField(entry, 'response_path');
667
+ if (responsePath === undefined)
668
+ continue;
669
+ const response = readJsonIfPresent(runFolder, responsePath);
670
+ const autoResolution = isObject(response) ? response.auto_resolution : undefined;
671
+ const parsed = OperatorAutoResolution.safeParse(autoResolution);
672
+ if (parsed.success)
673
+ records.push(parsed.data);
674
+ }
675
+ return records;
676
+ }
677
+ function emptySpendTotals() {
678
+ return {
679
+ relays: 0,
680
+ relays_missing_usage: 0,
681
+ models: [],
682
+ input_tokens: 0,
683
+ output_tokens: 0,
684
+ cache_read_tokens: 0,
685
+ cache_creation_tokens: 0,
686
+ };
687
+ }
688
+ // The receipt's fixed role order. Deliberately a literal, not
689
+ // `RelayRole.options`: the rendered order is a receipt commitment, not a
690
+ // side effect of enum declaration order.
691
+ const SPEND_ROLE_ORDER = ['researcher', 'implementer', 'reviewer'];
692
+ // Aggregate the run receipt out of the trace: depth from `run.bootstrapped`,
693
+ // worker-run count and distinct models from `relay.started`, check totals from
694
+ // `check.evaluated`, and the per-role spend rollup from joining `relay.started`
695
+ // (role, model) with `relay.completed` (usage) on `(step_id, attempt)`. One
696
+ // pass, field-tolerant like the other trace readers — a malformed line is
697
+ // skipped, never fatal. Returns undefined when the trace is missing or never
698
+ // bootstrapped (nothing truthful to report).
699
+ function readRunReceipt(runFolder) {
700
+ const tracePath = join(runFolder, 'trace.ndjson');
701
+ if (!existsSync(tracePath))
702
+ return undefined;
703
+ let depth;
704
+ let reducedBindings;
705
+ let power;
706
+ let powerAuto = false;
707
+ let inference;
708
+ let workerRuns = 0;
709
+ let escalations = 0;
710
+ let checksEvaluated = 0;
711
+ let checksFailed = 0;
712
+ const models = [];
713
+ const seenModels = new Set();
714
+ const relayRoleByKey = new Map();
715
+ const spendByRole = new Map();
716
+ let spendRelaysMissingUsage = 0;
717
+ let anyUsage = false;
718
+ let anyCostMissing = false;
719
+ for (const line of readFileSync(tracePath, 'utf8').split(/\r?\n/)) {
720
+ if (line.trim().length === 0)
721
+ continue;
722
+ let entry;
723
+ try {
724
+ entry = JSON.parse(line);
725
+ }
726
+ catch {
727
+ continue;
728
+ }
729
+ if (!isObject(entry))
730
+ continue;
731
+ if (entry.kind === 'run.bootstrapped') {
732
+ const parsed = CompiledDepth.safeParse(entry.depth);
733
+ if (parsed.success)
734
+ depth = parsed.data;
735
+ // Stage 1 legibility: a non-empty reduced set means this run lost
736
+ // catalog-sourced bindings (a composed/custom flow). Carried to the
737
+ // receipt note. An absent or empty field (every built-in run) leaves
738
+ // the receipt byte-identical to before this field existed.
739
+ const bindings = CatalogSourcedBinding.array().safeParse(entry.reduced_bindings);
740
+ if (bindings.success && bindings.data.length > 0)
741
+ reducedBindings = bindings.data;
742
+ continue;
743
+ }
744
+ if (entry.kind === 'relay.started') {
745
+ workerRuns += 1;
746
+ const selection = entry.resolved_selection;
747
+ if (isObject(selection)) {
748
+ // The dial is run-level, so the first power a selection carries is the
749
+ // run's dial; escalations count per-relay dial provenance.
750
+ if (power === undefined) {
751
+ const parsedPower = Power.safeParse(selection.power);
752
+ if (parsedPower.success)
753
+ power = parsedPower.data;
754
+ }
755
+ if (selection.power_source === 'auto')
756
+ powerAuto = true;
757
+ if (selection.power_escalated === true)
758
+ escalations += 1;
759
+ }
760
+ const model = isObject(selection)
761
+ ? ProviderScopedModel.safeParse(selection.model)
762
+ : undefined;
763
+ const modelKey = model?.success ? `${model.data.provider}:${model.data.model}` : undefined;
764
+ if (model?.success && modelKey !== undefined && !seenModels.has(modelKey)) {
765
+ seenModels.add(modelKey);
766
+ models.push(model.data);
767
+ }
768
+ // Remember role + model so the spend rollup can attribute usage when
769
+ // this relay's `relay.completed` arrives on the same key.
770
+ const role = RelayRole.safeParse(entry.role);
771
+ const stepId = stringField(entry, 'step_id');
772
+ if (role.success && stepId !== undefined && typeof entry.attempt === 'number') {
773
+ relayRoleByKey.set(`${stepId}#${entry.attempt}`, {
774
+ role: role.data,
775
+ ...(modelKey === undefined ? {} : { model: modelKey }),
776
+ });
777
+ }
778
+ continue;
779
+ }
780
+ if (entry.kind === 'relay.completed') {
781
+ const stepId = stringField(entry, 'step_id');
782
+ const started = stepId === undefined || typeof entry.attempt !== 'number'
783
+ ? undefined
784
+ : relayRoleByKey.get(`${stepId}#${entry.attempt}`);
785
+ // No matching relay.started means no role to bill — skip the entry.
786
+ if (started === undefined)
787
+ continue;
788
+ const totals = spendByRole.get(started.role) ?? emptySpendTotals();
789
+ spendByRole.set(started.role, totals);
790
+ totals.relays += 1;
791
+ if (started.model !== undefined && !totals.models.includes(started.model)) {
792
+ totals.models.push(started.model);
793
+ }
794
+ const usage = RelayUsageEvidence.safeParse(entry.usage);
795
+ if (!usage.success) {
796
+ totals.relays_missing_usage += 1;
797
+ spendRelaysMissingUsage += 1;
798
+ continue;
799
+ }
800
+ anyUsage = true;
801
+ totals.input_tokens += usage.data.input_tokens;
802
+ totals.output_tokens += usage.data.output_tokens;
803
+ totals.cache_read_tokens += usage.data.cache_read_tokens;
804
+ totals.cache_creation_tokens += usage.data.cache_creation_tokens;
805
+ if (usage.data.total_cost_usd_reported === undefined) {
806
+ anyCostMissing = true;
807
+ }
808
+ else {
809
+ totals.cost_usd_reported =
810
+ (totals.cost_usd_reported ?? 0) + usage.data.total_cost_usd_reported;
811
+ }
812
+ continue;
813
+ }
814
+ if (entry.kind === 'run.power-inference' && inference === undefined) {
815
+ const recommended = Power.safeParse(entry.recommended);
816
+ const resolved = Power.safeParse(entry.resolved);
817
+ const rationale = stringField(entry, 'rationale');
818
+ if (recommended.success && resolved.success && rationale !== undefined) {
819
+ inference = {
820
+ recommended: recommended.data,
821
+ rationale,
822
+ resolved: resolved.data,
823
+ clamped: entry.clamped === true,
824
+ };
825
+ }
826
+ continue;
827
+ }
828
+ if (entry.kind === 'check.evaluated') {
829
+ checksEvaluated += 1;
830
+ if (entry.outcome === 'fail')
831
+ checksFailed += 1;
832
+ }
833
+ }
834
+ if (depth === undefined)
835
+ return undefined;
836
+ // Spend is absent — never empty — when no completed relay carried usage, so
837
+ // a usage-less trace keeps its receipt byte-identical to before this field.
838
+ const spendRoles = anyUsage
839
+ ? SPEND_ROLE_ORDER.flatMap((role) => {
840
+ const totals = spendByRole.get(role);
841
+ return totals === undefined ? [] : [{ role, ...totals }];
842
+ })
843
+ : [];
844
+ const reportedCosts = spendRoles.flatMap((role) => role.cost_usd_reported === undefined ? [] : [role.cost_usd_reported]);
845
+ const spend = anyUsage
846
+ ? {
847
+ ...(reportedCosts.length === 0
848
+ ? {}
849
+ : { total_cost_usd_reported: reportedCosts.reduce((sum, cost) => sum + cost, 0) }),
850
+ relays_missing_usage: spendRelaysMissingUsage,
851
+ partial: spendRelaysMissingUsage > 0 || anyCostMissing,
852
+ roles: spendRoles,
853
+ }
854
+ : undefined;
855
+ // Under auto, the run's dial is the resolved inference; the first relay
856
+ // selection materialized the medium fallback before the inference landed.
857
+ const effectivePower = inference?.resolved ?? power;
858
+ return {
859
+ depth,
860
+ ...(effectivePower === undefined ? {} : { power: effectivePower }),
861
+ ...(powerAuto ? { power_source: 'auto' } : {}),
862
+ ...(powerAuto && inference !== undefined
863
+ ? {
864
+ power_recommended: inference.recommended,
865
+ power_rationale: inference.rationale,
866
+ power_clamped: inference.clamped,
867
+ }
868
+ : {}),
869
+ worker_runs: workerRuns,
870
+ escalations,
871
+ models,
872
+ checks_evaluated: checksEvaluated,
873
+ checks_failed: checksFailed,
874
+ ...(reducedBindings === undefined ? {} : { reduced_bindings: reducedBindings }),
875
+ ...(spend === undefined ? {} : { spend }),
876
+ };
877
+ }
878
+ // The receipt trailer speaks plain words only: the power dial first (the
879
+ // taught dial), then the process tier the run actually ran at, how many
880
+ // worker runs, escalations, and what the checks proved. Tier words yes,
881
+ // model ids no — those live in the JSON receipt and the run record. The ⎿
882
+ // glyph is the CIRCUIT status-block grammar: the trailer reads as machine
883
+ // truth at the end of the model-written digest, with no feature-name label.
884
+ function receiptLine(receipt) {
885
+ const runsWord = receipt.worker_runs === 1 ? 'worker run' : 'worker runs';
886
+ const parts = [];
887
+ if (receipt.power !== undefined) {
888
+ // Under an auto dial, say so — and say which kind of auto: a resolved
889
+ // recommendation (possibly capped to the operator bounds) or the medium
890
+ // fallback a run lands on when its researcher never recommended.
891
+ const autoQualifier = receipt.power_source !== 'auto'
892
+ ? ''
893
+ : receipt.power_rationale === undefined
894
+ ? ' (auto, no recommendation)'
895
+ : receipt.power_clamped === true
896
+ ? ' (auto, capped)'
897
+ : ' (auto)';
898
+ parts.push(`power ${receipt.power}${autoQualifier}`);
899
+ }
900
+ parts.push(`process ${receipt.depth}`);
901
+ parts.push(`${receipt.worker_runs} ${runsWord}`);
902
+ if (receipt.escalations > 0) {
903
+ parts.push(`${receipt.escalations} ${receipt.escalations === 1 ? 'escalation' : 'escalations'}`);
904
+ }
905
+ if (receipt.checks_evaluated > 0) {
906
+ parts.push(receipt.checks_failed === 0
907
+ ? 'all checks passed'
908
+ : `${receipt.checks_evaluated - receipt.checks_failed} of ${receipt.checks_evaluated} checks passed`);
909
+ }
910
+ return `⎿ ${parts.join(' · ')}`;
911
+ }
912
+ // Dollar figures keep plain cents above a dime and three significant figures
913
+ // (capped at four decimal places) below it, so a $0.0123 run does not round
914
+ // away to $0.01. Never scientific notation.
915
+ function formatSpendDollars(amount) {
916
+ if (amount >= 0.1)
917
+ return `$${amount.toFixed(2)}`;
918
+ const significant = Number(amount.toPrecision(3));
919
+ if (significant >= 0.1)
920
+ return `$${significant.toFixed(2)}`;
921
+ return `$${significant.toFixed(4).replace(/0+$/, '').replace(/\.$/, '')}`;
922
+ }
923
+ // Token figures: raw below 1k, one-decimal k below 1M, two-decimal M above.
924
+ function formatSpendTokens(count) {
925
+ if (count >= 1_000_000)
926
+ return `${(count / 1_000_000).toFixed(2)}M`;
927
+ if (count >= 1000)
928
+ return `${(count / 1000).toFixed(1)}k`;
929
+ return String(count);
930
+ }
931
+ // Second trailer line, rendered directly under the receipt line and only when
932
+ // the run has a spend rollup. Dollar form when any relay reported a cost;
933
+ // token fallback (input + output only, cache tokens excluded) otherwise. The
934
+ // (partial) qualifier covers the figure the line actually renders: a dollar
935
+ // sum is partial whenever any meter or any cost is missing, a token sum only
936
+ // when a meter is missing — absent dollars cannot hollow out a figure the
937
+ // token form never claims. Role segments keep the headline's form and are
938
+ // dropped when the role contributed nothing measurable in that form; the
939
+ // qualifier, not a fabricated zero, marks the gap.
940
+ function spendLine(receipt) {
941
+ const spend = receipt.spend;
942
+ if (spend === undefined)
943
+ return undefined;
944
+ if (spend.total_cost_usd_reported !== undefined) {
945
+ const qualifier = spend.partial ? ' (partial)' : '';
946
+ const parts = [`spend ${formatSpendDollars(spend.total_cost_usd_reported)}${qualifier}`];
947
+ for (const role of spend.roles) {
948
+ if (role.cost_usd_reported === undefined)
949
+ continue;
950
+ parts.push(`${role.role} ${formatSpendDollars(role.cost_usd_reported)}`);
951
+ }
952
+ return `⎿ ${parts.join(' · ')}`;
953
+ }
954
+ const total = spend.roles.reduce((sum, role) => sum + role.input_tokens + role.output_tokens, 0);
955
+ const qualifier = spend.relays_missing_usage > 0 ? ' (partial)' : '';
956
+ const parts = [`spend ${formatSpendTokens(total)} tokens${qualifier}`];
957
+ for (const role of spend.roles) {
958
+ if (role.relays_missing_usage === role.relays)
959
+ continue;
960
+ parts.push(`${role.role} ${formatSpendTokens(role.input_tokens + role.output_tokens)}`);
961
+ }
962
+ return `⎿ ${parts.join(' · ')}`;
963
+ }
964
+ // Plain-words labels for the catalog-sourced bindings, so the note speaks
965
+ // operator language (no schema field names). Order follows the receipt's
966
+ // reduced_bindings array, which preserves the canonical binding order.
967
+ const REDUCED_BINDING_LABELS = {
968
+ edit_file_surfaces: 'edit-file hooks',
969
+ depth_binding: 'depth binding',
970
+ slice_loop: 'slice loop',
971
+ terminal_outcome_binding: 'terminal outcome',
972
+ primary_result_surface: 'primary result',
973
+ };
974
+ // Third trailer line, rendered under the receipt (and spend) line only when the
975
+ // run lost catalog-sourced bindings — a composed or published custom flow whose
976
+ // id matched no catalog package. Names what degraded so a reduced run reads as
977
+ // reduced instead of looking like a full run. Absent on every built-in run.
978
+ function reducedBindingsLine(receipt) {
979
+ const reduced = receipt.reduced_bindings;
980
+ if (reduced === undefined || reduced.length === 0)
981
+ return undefined;
982
+ const labels = reduced.map((binding) => REDUCED_BINDING_LABELS[binding]);
983
+ return `⎿ reduced bindings (no catalog package): ${labels.join(' · ')}`;
984
+ }
985
+ // The registry's "could not find skill" error is multi-line (it lists every
986
+ // searched path). The digest wants the headline only.
987
+ function firstLine(text) {
988
+ const head = text.split(/\r?\n/)[0]?.trim() ?? '';
989
+ return head.length > 0 ? head : text.trim();
990
+ }
991
+ function skillHookSourceLabel(source) {
992
+ switch (source) {
993
+ case 'project-policy':
994
+ return 'project policy';
995
+ case 'user-global-policy':
996
+ return 'user-global policy';
997
+ case 'default-mapping':
998
+ return 'default mapping';
999
+ }
1000
+ }
1001
+ // Read the run's skill-hook records out of the trace and project them into the
1002
+ // operator surface: a deduped list of activations (which hook fired, what it
1003
+ // injected, its provenance, any unavailable skill) plus warnings for any
1004
+ // swallowed dispatch failure. One pass over trace.ndjson; both kinds live there.
1005
+ function readSkillHookSummary(runFolder) {
1006
+ const tracePath = join(runFolder, 'trace.ndjson');
1007
+ if (!existsSync(tracePath))
1008
+ return { activations: [], warnings: [] };
1009
+ const seen = new Set();
1010
+ const activations = [];
1011
+ const warnings = [];
1012
+ for (const line of readFileSync(tracePath, 'utf8').split(/\r?\n/)) {
1013
+ if (line.trim().length === 0)
1014
+ continue;
1015
+ let entry;
1016
+ try {
1017
+ entry = JSON.parse(line);
1018
+ }
1019
+ catch {
1020
+ continue;
1021
+ }
1022
+ if (!isObject(entry))
1023
+ continue;
1024
+ if (entry.kind === 'run.skill-hook-error') {
1025
+ const message = stringField(entry, 'message');
1026
+ if (message !== undefined) {
1027
+ warnings.push({ kind: 'skill_hook_dispatch_failed', message: firstLine(message) });
1028
+ }
1029
+ continue;
1030
+ }
1031
+ if (entry.kind !== 'run.skill-hook')
1032
+ continue;
1033
+ const parsed = RunSkillHookEvent.safeParse(entry.event);
1034
+ if (!parsed.success)
1035
+ continue;
1036
+ const event = parsed.data;
1037
+ if (event.policy.mode === 'none')
1038
+ continue;
1039
+ const blocked = event.decision_packet_id !== undefined;
1040
+ const triggered = event.triggered_skills.map((skill) => skill.id);
1041
+ const activation = OperatorSkillHookActivation.parse({
1042
+ hook: event.hook,
1043
+ mode: event.policy.mode,
1044
+ source: event.policy.source,
1045
+ ...(event.policy.policy_ref === undefined ? {} : { policy_ref: event.policy.policy_ref }),
1046
+ injected_skills: event.policy.mode === 'auto' && !blocked ? triggered : [],
1047
+ withheld_skills: event.policy.mode === 'auto' && blocked ? triggered : [],
1048
+ unavailable_skills: (event.unavailable_skills ?? []).map((skill) => ({
1049
+ id: skill.id,
1050
+ ...(skill.reason === undefined ? {} : { reason: firstLine(skill.reason) }),
1051
+ })),
1052
+ });
1053
+ // Dedup identical activations: a hook that re-fires across retries or slices
1054
+ // with the same outcome is one line in the digest, not N.
1055
+ const key = JSON.stringify(activation);
1056
+ if (seen.has(key))
1057
+ continue;
1058
+ seen.add(key);
1059
+ activations.push(activation);
1060
+ }
1061
+ return { activations, warnings };
1062
+ }
1063
+ // Read the trace's best-effort degradation markers into operator warnings.
1064
+ // Both kinds record a subsystem failure the run survived (mirroring
1065
+ // `run.skill-hook-error` above): auto-power inference crashing leaves the
1066
+ // dial at the medium fallback, and a passed relay whose report could not be
1067
+ // materialized leaves a gap where `writes.report.path` should be. Surfacing
1068
+ // them here is what makes the trace markers reach the operator's eyes —
1069
+ // warnings are never evicted from the brief's caveats (see caveatsFrom).
1070
+ function readDegradationWarnings(runFolder) {
1071
+ const tracePath = join(runFolder, 'trace.ndjson');
1072
+ if (!existsSync(tracePath))
1073
+ return [];
1074
+ const warnings = [];
1075
+ for (const line of readFileSync(tracePath, 'utf8').split(/\r?\n/)) {
1076
+ if (line.trim().length === 0)
1077
+ continue;
1078
+ let entry;
1079
+ try {
1080
+ entry = JSON.parse(line);
1081
+ }
1082
+ catch {
1083
+ continue;
1084
+ }
1085
+ if (!isObject(entry))
1086
+ continue;
1087
+ if (entry.kind === 'run.power-inference-error') {
1088
+ const message = stringField(entry, 'message');
1089
+ if (message !== undefined) {
1090
+ warnings.push({ kind: 'power_inference_failed', message: firstLine(message) });
1091
+ }
1092
+ continue;
1093
+ }
1094
+ if (entry.kind === 'step.report_skipped') {
1095
+ const reason = stringField(entry, 'reason');
1096
+ const reportPath = stringField(entry, 'report_path');
1097
+ if (reason !== undefined) {
1098
+ warnings.push({
1099
+ kind: 'relay_report_skipped',
1100
+ message: firstLine(reason),
1101
+ ...(reportPath === undefined ? {} : { path: reportPath }),
1102
+ });
1103
+ }
1104
+ continue;
1105
+ }
1106
+ if (entry.kind === 'run.context-delivery-error') {
1107
+ const message = stringField(entry, 'message');
1108
+ if (message !== undefined) {
1109
+ warnings.push({ kind: 'context_delivery_failed', message: firstLine(message) });
1110
+ }
1111
+ }
1112
+ }
1113
+ return warnings;
1114
+ }
1115
+ // The recovery-binding verdict layer aborts with reason strings that are part
1116
+ // of the runtime contract and pinned by tests — they speak engine vocabulary
1117
+ // ("WorkContract", "recovery binding", raw failure-cause ids) and must stay
1118
+ // verbatim in the trace and the result. This is the operator-facing
1119
+ // translation seam: recognize the pinned shapes and lead with what happened
1120
+ // in plain words, whose problem it is, and what to do next. Unrecognized
1121
+ // reasons get no translation — a wrong guess is worse than the raw string.
1122
+ const RECOVERY_BINDING_ABORT_PATTERN = /^step '([^']+)' selected recovery route '([^']+)' (?:after|for) \S+,? but (?:the WorkContract does not declare a matching recovery binding|its WorkContract binding only allows: .+)$/;
1123
+ const RECOVERY_NO_EVIDENCE_ABORT_PATTERN = /^step '([^']+)' selected recovery route '([^']+)' without failure evidence$/;
1124
+ function friendlyAbortReason(reason) {
1125
+ const binding = RECOVERY_BINDING_ABORT_PATTERN.exec(reason);
1126
+ if (binding !== null) {
1127
+ return `Step '${binding[1]}' failed, and the flow tried to recover through its '${binding[2]}' route, but the flow's safety rules do not allow that recovery for this kind of failure — so Circuit stopped the run. This is a problem in the flow definition, not in your project. Update or regenerate the flow, then run it again.`;
1128
+ }
1129
+ const noEvidence = RECOVERY_NO_EVIDENCE_ABORT_PATTERN.exec(reason);
1130
+ if (noEvidence !== null) {
1131
+ return `Step '${noEvidence[1]}' took its '${noEvidence[2]}' recovery route without a recorded failure to justify it, so Circuit stopped the run. This is a problem in the flow definition, not in your project. Update or regenerate the flow, then run it again.`;
1132
+ }
1133
+ return undefined;
1134
+ }
1135
+ // When nothing in config or the flow chose a connector, resolution falls back
1136
+ // to an automatic pick (recorded per relay as resolved_from.source === 'auto').
1137
+ // The pick is legible in the trace but an operator who assumed a configured
1138
+ // default was used would never look there. Collect the distinct auto-picked
1139
+ // connector names with relay counts so the summary can say what happened.
1140
+ function readAutoConnectorPicks(runFolder) {
1141
+ const tracePath = join(runFolder, 'trace.ndjson');
1142
+ const picks = new Map();
1143
+ if (!existsSync(tracePath))
1144
+ return picks;
1145
+ for (const line of readFileSync(tracePath, 'utf8').split(/\r?\n/)) {
1146
+ if (line.trim().length === 0)
1147
+ continue;
1148
+ let entry;
1149
+ try {
1150
+ entry = JSON.parse(line);
1151
+ }
1152
+ catch {
1153
+ continue;
1154
+ }
1155
+ if (!isObject(entry) || entry.kind !== 'relay.started')
1156
+ continue;
1157
+ const resolvedFrom = entry.resolved_from;
1158
+ if (!isObject(resolvedFrom) || resolvedFrom.source !== 'auto')
1159
+ continue;
1160
+ const connector = entry.connector;
1161
+ if (!isObject(connector))
1162
+ continue;
1163
+ const name = stringField(connector, 'name');
1164
+ if (name === undefined)
1165
+ continue;
1166
+ picks.set(name, (picks.get(name) ?? 0) + 1);
1167
+ }
1168
+ return picks;
1169
+ }
1170
+ function skillHookActivationLine(activation) {
1171
+ const provenance = activation.policy_ref ?? skillHookSourceLabel(activation.source);
1172
+ if (activation.mode === 'mute') {
1173
+ return `\`${activation.hook}\` fired (muted; nothing injected) — ${provenance}`;
1174
+ }
1175
+ const parts = [];
1176
+ if (activation.injected_skills.length > 0) {
1177
+ parts.push(`injected ${activation.injected_skills.join(', ')}`);
1178
+ }
1179
+ if (activation.withheld_skills.length > 0) {
1180
+ parts.push(`withheld ${activation.withheld_skills.join(', ')} pending a strict-mode decision`);
1181
+ }
1182
+ for (const unavailable of activation.unavailable_skills) {
1183
+ parts.push(unavailable.reason === undefined
1184
+ ? `could not load ${unavailable.id}`
1185
+ : `could not load ${unavailable.id} (${unavailable.reason})`);
1186
+ }
1187
+ if (parts.length === 0)
1188
+ parts.push('matched but injected nothing');
1189
+ return `\`${activation.hook}\` ${parts.join('; ')} — ${provenance}`;
1190
+ }
1191
+ // Read the run's live equipment reshapes out of the trace and project them into
1192
+ // the operator surface (Step 2 / F2). The engine only appends a
1193
+ // `run.equipment-reshape` entry when a relay actually surfaced an equipment
1194
+ // discovery, so every entry is a real event — never no-op noise. An honored
1195
+ // reshape (`reshaped: true`) becomes a structured record naming the steps that
1196
+ // gained skills; a parked discovery (`reshaped: false` — found but declined
1197
+ // because it was unconfirmed, the budget was spent, or nothing remained to
1198
+ // equip) becomes a warning so the operator sees why the flow stayed unchanged.
1199
+ // One pass over trace.ndjson, deduped so a re-recorded entry is one line.
1200
+ function readEquipmentReshapeSummary(runFolder) {
1201
+ const tracePath = join(runFolder, 'trace.ndjson');
1202
+ if (!existsSync(tracePath))
1203
+ return { reshapes: [], warnings: [] };
1204
+ const seen = new Set();
1205
+ const reshapes = [];
1206
+ const warnings = [];
1207
+ for (const line of readFileSync(tracePath, 'utf8').split(/\r?\n/)) {
1208
+ if (line.trim().length === 0)
1209
+ continue;
1210
+ let entry;
1211
+ try {
1212
+ entry = JSON.parse(line);
1213
+ }
1214
+ catch {
1215
+ continue;
1216
+ }
1217
+ if (!isObject(entry) || entry.kind !== 'run.equipment-reshape')
1218
+ continue;
1219
+ const parsed = RunEquipmentReshapeTraceEntry.safeParse(entry);
1220
+ if (!parsed.success)
1221
+ continue;
1222
+ const event = parsed.data;
1223
+ const stepId = event.step_id;
1224
+ if (event.reshaped) {
1225
+ // The trace gate above is looser than the operator surface (e.g. it
1226
+ // admits an empty-string domain tag the surface rejects). Use safeParse,
1227
+ // not parse, so a torn or forward-version line that slips the gate is
1228
+ // skipped like any other junk line rather than crashing the whole write.
1229
+ const record = OperatorEquipmentReshape.safeParse({
1230
+ step_id: stepId,
1231
+ domain_tags: event.domain_tags,
1232
+ equipped_steps: (event.equipped_steps ?? []).map((id) => id),
1233
+ reason: event.reason,
1234
+ });
1235
+ if (!record.success)
1236
+ continue;
1237
+ const key = JSON.stringify(record.data);
1238
+ if (seen.has(key))
1239
+ continue;
1240
+ seen.add(key);
1241
+ reshapes.push(record.data);
1242
+ continue;
1243
+ }
1244
+ // A parked discovery. Prefix the step id so the warning names where the
1245
+ // discovery surfaced even when the recorded reason does not.
1246
+ const warning = {
1247
+ kind: 'equipment_discovery_parked',
1248
+ message: `${stepId}: ${firstLine(event.reason)}`,
1249
+ };
1250
+ const key = JSON.stringify(warning);
1251
+ if (seen.has(key))
1252
+ continue;
1253
+ seen.add(key);
1254
+ warnings.push(warning);
1255
+ }
1256
+ return { reshapes, warnings };
1257
+ }
1258
+ function equipmentReshapeLine(reshape) {
1259
+ const domains = reshape.domain_tags.length > 0 ? reshape.domain_tags.join(', ') : 'a domain';
1260
+ const equipped = reshape.equipped_steps.length > 0 ? reshape.equipped_steps.join(', ') : 'no remaining step';
1261
+ return `\`${reshape.step_id}\` confirmed ${domains}; equipped ${equipped}`;
1262
+ }
1263
+ // Read the run's per-iteration experiment ledger out of the trace. The engine
1264
+ // only stamps `run.until-judgment` entries on a judge-gated until loop, so any
1265
+ // non-until run (and any count-driven loop) yields no entries and an empty
1266
+ // ledger — the summary then stays byte-identical to before this section
1267
+ // existed. Field-tolerant like the other trace readers: each line is parsed
1268
+ // through the strict union and a torn or forward-version line is dropped, never
1269
+ // fatal. The projection joins each judgment to the relay usage of its iteration.
1270
+ function readIterationLedger(runFolder) {
1271
+ const tracePath = join(runFolder, 'trace.ndjson');
1272
+ if (!existsSync(tracePath))
1273
+ return [];
1274
+ const entries = [];
1275
+ for (const line of readFileSync(tracePath, 'utf8').split(/\r?\n/)) {
1276
+ if (line.trim().length === 0)
1277
+ continue;
1278
+ let raw;
1279
+ try {
1280
+ raw = JSON.parse(line);
1281
+ }
1282
+ catch {
1283
+ continue;
1284
+ }
1285
+ const parsed = TraceEntry.safeParse(raw);
1286
+ if (parsed.success)
1287
+ entries.push(parsed.data);
1288
+ }
1289
+ return iterationLedgerFromTrace(entries);
1290
+ }
1291
+ function formatScore(value) {
1292
+ if (value === null || value === undefined)
1293
+ return 'n/a';
1294
+ return value.toFixed(3).replace(/\.?0+$/, '');
1295
+ }
1296
+ function formatSignedScore(value) {
1297
+ if (value === null || value === undefined)
1298
+ return 'n/a';
1299
+ const sign = value >= 0 ? '+' : '';
1300
+ return `${sign}${formatScore(value)}`;
1301
+ }
1302
+ function autoResolutionSummaryLine(record) {
1303
+ const label = record.checkpoint_label ?? record.checkpoint_id;
1304
+ const vetoText = record.runtime_veto_effect === 'none' ? 'no runtime vetoes' : record.runtime_veto_effect;
1305
+ return `${label}: ${record.resolved_value} selected by policy \`highest-score\` (aggregate score ${formatScore(record.winning_score)}; margin ${formatSignedScore(record.margin)} over runner-up; ${vetoText}).`;
1306
+ }
1307
+ function checkpointOptionDetails(runFolder, allowedChoices) {
1308
+ const optionsReport = readJsonIfPresent(runFolder, 'reports/decision-options.json');
1309
+ const labelsById = new Map();
1310
+ for (const option of arrayField(optionsReport, 'options')) {
1311
+ if (!isObject(option))
1312
+ continue;
1313
+ const id = stringField(option, 'id');
1314
+ const label = stringField(option, 'label');
1315
+ if (id === undefined || label === undefined)
1316
+ continue;
1317
+ labelsById.set(id, label);
1318
+ }
1319
+ return allowedChoices.flatMap((choice) => {
1320
+ const label = labelsById.get(choice);
1321
+ return label === undefined ? [] : [`${label} (${choice})`];
1322
+ });
1323
+ }
1324
+ // The experiment-ledger section, rendered under the digest only when the run
1325
+ // is a judge-gated until loop that recorded at least one judged pass. Empty
1326
+ // rows render nothing, so a non-until run keeps its summary byte-identical.
1327
+ function ledgerSection(rows) {
1328
+ if (rows.length === 0)
1329
+ return [];
1330
+ return ['', 'Experiment ledger (one row per pass):', '', renderIterationLedgerMarkdown(rows)];
1331
+ }
1332
+ function renderMarkdown(summary, ledgerRows) {
1333
+ if (summary.brief_slots !== undefined) {
1334
+ const lines = [summary.brief_slots.headline, '', summary.brief_slots.assessment, ''];
1335
+ for (const point of summary.brief_slots.key_points)
1336
+ lines.push(`- ${point}`);
1337
+ for (const caveat of summary.brief_slots.caveats)
1338
+ lines.push(`- Caveat: ${caveat}`);
1339
+ lines.push('', `Next: ${summary.brief_slots.next_action}`);
1340
+ if (summary.auto_resolutions !== undefined && summary.auto_resolutions.length > 0) {
1341
+ lines.push('', 'Auto-resolutions:');
1342
+ // Same cap-with-overflow treatment as the brief lists: the digest shows
1343
+ // at most MAX_KEY_POINTS resolutions and announces the rest instead of
1344
+ // dropping them silently (the JSON summary carries all of them).
1345
+ for (const line of capWithOverflow(summary.auto_resolutions.map((resolution) => autoResolutionSummaryLine(resolution)), MAX_KEY_POINTS)) {
1346
+ lines.push(`- ${line}`);
1347
+ }
1348
+ }
1349
+ if (summary.skill_hook_activations !== undefined && summary.skill_hook_activations.length > 0) {
1350
+ lines.push('', 'Skill hooks:');
1351
+ for (const activation of summary.skill_hook_activations) {
1352
+ lines.push(`- ${skillHookActivationLine(activation)}`);
1353
+ }
1354
+ }
1355
+ if (summary.equipment_reshapes !== undefined && summary.equipment_reshapes.length > 0) {
1356
+ lines.push('', 'Live equipment:');
1357
+ for (const reshape of summary.equipment_reshapes) {
1358
+ lines.push(`- ${equipmentReshapeLine(reshape)}`);
1359
+ }
1360
+ }
1361
+ if (summary.receipt !== undefined) {
1362
+ lines.push('', receiptLine(summary.receipt));
1363
+ const spend = spendLine(summary.receipt);
1364
+ if (spend !== undefined)
1365
+ lines.push(spend);
1366
+ const reduced = reducedBindingsLine(summary.receipt);
1367
+ if (reduced !== undefined)
1368
+ lines.push(reduced);
1369
+ }
1370
+ lines.push(...ledgerSection(ledgerRows));
1371
+ if (summary.html_path !== undefined) {
1372
+ lines.push('', `Rich summary: ${summary.html_path}`);
1373
+ }
1374
+ return `${lines.join('\n')}\n`;
1375
+ }
1376
+ const lines = [summary.headline, '', summary.status_text ?? digestStatusText(summary.headline)];
1377
+ if (summary.checkpoint !== undefined) {
1378
+ lines.push('', '## Checkpoint', '');
1379
+ lines.push(`- Step: \`${summary.checkpoint.step_id}\``);
1380
+ lines.push(`- Request: ${summary.checkpoint.request_path}`);
1381
+ lines.push(`- Choices: ${summary.checkpoint.allowed_choices.join(', ')}`);
1382
+ }
1383
+ if (summary.auto_resolutions !== undefined && summary.auto_resolutions.length > 0) {
1384
+ lines.push('', '## Auto-resolutions', '');
1385
+ for (const resolution of summary.auto_resolutions) {
1386
+ lines.push(`- ${autoResolutionSummaryLine(resolution)}`);
1387
+ }
1388
+ }
1389
+ if (summary.skill_hook_activations !== undefined && summary.skill_hook_activations.length > 0) {
1390
+ lines.push('', '## Skill hooks', '');
1391
+ for (const activation of summary.skill_hook_activations) {
1392
+ lines.push(`- ${skillHookActivationLine(activation)}`);
1393
+ }
1394
+ }
1395
+ if (summary.equipment_reshapes !== undefined && summary.equipment_reshapes.length > 0) {
1396
+ lines.push('', '## Live equipment', '');
1397
+ for (const reshape of summary.equipment_reshapes) {
1398
+ lines.push(`- ${equipmentReshapeLine(reshape)}`);
1399
+ }
1400
+ }
1401
+ const visibleDetails = summary.details.filter((detail) => !detail.startsWith('Run note:'));
1402
+ if (visibleDetails.length > 0) {
1403
+ lines.push('');
1404
+ for (const detail of visibleDetails)
1405
+ lines.push(`- ${detail}`);
1406
+ }
1407
+ if (summary.evidence_warnings.length > 0) {
1408
+ lines.push('', 'Warnings:');
1409
+ for (const warning of summary.evidence_warnings) {
1410
+ const path = warning.path === undefined ? '' : ` (${warning.path})`;
1411
+ lines.push(`- ${warning.kind}${path}: ${warning.message}`);
1412
+ }
1413
+ }
1414
+ if (summary.receipt !== undefined) {
1415
+ lines.push('', receiptLine(summary.receipt));
1416
+ const spend = spendLine(summary.receipt);
1417
+ if (spend !== undefined)
1418
+ lines.push(spend);
1419
+ const reduced = reducedBindingsLine(summary.receipt);
1420
+ if (reduced !== undefined)
1421
+ lines.push(reduced);
1422
+ }
1423
+ lines.push(...ledgerSection(ledgerRows));
1424
+ if (summary.html_path !== undefined) {
1425
+ lines.push('', `Rich summary: ${summary.html_path}`);
1426
+ }
1427
+ return `${lines.join('\n')}\n`;
1428
+ }
1429
+ export function writeOperatorSummary(input) {
1430
+ const flowId = input.runResult.flow_id;
1431
+ const flowResultRelPath = findFlowRuntimeSurfaceById(flowId)?.primaryResult?.path;
1432
+ const flowReport = flowResultRelPath === undefined
1433
+ ? undefined
1434
+ : readJsonIfPresent(input.runFolder, flowResultRelPath);
1435
+ const resultRelPath = RUN_RESULT_RELATIVE_PATH;
1436
+ const resultPath = input.runResult.outcome === 'checkpoint_waiting'
1437
+ ? undefined
1438
+ : resolveRunRelative(input.runFolder, resultRelPath);
1439
+ const autoResolutions = readAutoResolutions(input.runFolder);
1440
+ const skillHookSummary = readSkillHookSummary(input.runFolder);
1441
+ const equipmentReshapeSummary = readEquipmentReshapeSummary(input.runFolder);
1442
+ const receipt = readRunReceipt(input.runFolder);
1443
+ const ledgerRows = readIterationLedger(input.runFolder);
1444
+ const outJsonPath = jsonPath(input.runFolder);
1445
+ const outMarkdownPath = markdownPath(input.runFolder);
1446
+ mkdirSync(dirname(outJsonPath), { recursive: true });
1447
+ // Write HTML first so JSON+markdown only promise a path that actually
1448
+ // exists on disk. Failure here degrades to a markdown-only summary; it
1449
+ // must not abort the run or break the JSON/MD siblings.
1450
+ const projector = getHtmlProjector(flowId);
1451
+ const candidateHtmlPath = htmlPath(input.runFolder);
1452
+ let outHtmlPath;
1453
+ let htmlEmitWarning;
1454
+ let renderedHtml;
1455
+ // Parse the checkpoint request once; the projector context, the generic
1456
+ // checkpoint page, and the markdown brief all adapt to what it carries.
1457
+ const checkpointRequest = input.runResult.outcome === 'checkpoint_waiting'
1458
+ ? readCheckpointRequest(input.runFolder, input.runResult.checkpoint)
1459
+ : undefined;
1460
+ const projectorCheckpoint = input.runResult.outcome === 'checkpoint_waiting'
1461
+ ? widenedProjectorCheckpoint(input.runResult.checkpoint, checkpointRequest)
1462
+ : undefined;
1463
+ const projectRoot = checkpointProjectRoot(checkpointRequest);
1464
+ const ctx = {
1465
+ runFolder: input.runFolder,
1466
+ ...(projectRoot === undefined ? {} : { projectRoot }),
1467
+ runId: input.runResult.run_id,
1468
+ flowId,
1469
+ runOutcome: input.runResult.outcome,
1470
+ ...(projectorCheckpoint === undefined ? {} : { checkpoint: projectorCheckpoint }),
1471
+ flowReport,
1472
+ readJsonRunRelative: (relPath) => readJsonIfPresent(input.runFolder, relPath),
1473
+ readEvidenceReportById: (reportId) => evidenceReportById(input.runFolder, flowReport, reportId),
1474
+ autoResolutions,
1475
+ };
1476
+ if (projector !== undefined) {
1477
+ try {
1478
+ renderedHtml = projector(ctx);
1479
+ }
1480
+ catch (err) {
1481
+ htmlEmitWarning = {
1482
+ kind: 'html_render_failed',
1483
+ message: err instanceof Error ? err.message : String(err),
1484
+ path: candidateHtmlPath,
1485
+ };
1486
+ }
1487
+ }
1488
+ // Structural floor: a waiting checkpoint always gets a page. Flows with
1489
+ // no projector (or whose projector produced nothing, or threw) fall back
1490
+ // to the generic checkpoint page rendered from the widened context alone,
1491
+ // so the operator always sees the question, the options, and an honest
1492
+ // resume path. Non-checkpoint outcomes keep skipping HTML cleanly.
1493
+ if (input.runResult.outcome === 'checkpoint_waiting' && renderedHtml === undefined) {
1494
+ try {
1495
+ renderedHtml = genericCheckpointHtml(ctx);
1496
+ }
1497
+ catch (err) {
1498
+ htmlEmitWarning ??= {
1499
+ kind: 'html_render_failed',
1500
+ message: err instanceof Error ? err.message : String(err),
1501
+ path: candidateHtmlPath,
1502
+ };
1503
+ }
1504
+ }
1505
+ if (renderedHtml === undefined) {
1506
+ // Stale-cleanup: a resume whose projector returned undefined (or that
1507
+ // has no projector at all) must not leave the previous run's HTML
1508
+ // behind. The operator may have bookmarked or scrolled to that path
1509
+ // and would otherwise open stale content silently.
1510
+ if (existsSync(candidateHtmlPath))
1511
+ rmSync(candidateHtmlPath, { force: true, recursive: true });
1512
+ }
1513
+ else {
1514
+ try {
1515
+ writeFileSync(candidateHtmlPath, renderedHtml);
1516
+ outHtmlPath = candidateHtmlPath;
1517
+ }
1518
+ catch (err) {
1519
+ // writeFileSync may have left a partial file behind. Remove it so
1520
+ // neither the envelope nor any reader points at a half-written
1521
+ // report, and surface the failure as a warning the operator can
1522
+ // see in the markdown summary.
1523
+ if (existsSync(candidateHtmlPath))
1524
+ rmSync(candidateHtmlPath, { force: true, recursive: true });
1525
+ htmlEmitWarning = {
1526
+ kind: 'html_write_failed',
1527
+ message: err instanceof Error ? err.message : String(err),
1528
+ path: candidateHtmlPath,
1529
+ };
1530
+ }
1531
+ }
1532
+ const reportPaths = [];
1533
+ if (resultPath !== undefined)
1534
+ reportPaths.push(reportLink(input.runFolder, 'Run result', resultRelPath));
1535
+ if (flowResultRelPath !== undefined && flowReport !== undefined) {
1536
+ reportPaths.push(reportLink(input.runFolder, `${flowId} result`, flowResultRelPath));
1537
+ }
1538
+ if (outHtmlPath !== undefined) {
1539
+ reportPaths.push({ label: HTML_REPORT_LABEL, path: outHtmlPath });
1540
+ }
1541
+ if (input.runResult.outcome === 'checkpoint_waiting') {
1542
+ const checkpoint = input.runResult.checkpoint;
1543
+ reportPaths.push({
1544
+ label: 'Checkpoint request',
1545
+ path: checkpoint.request_path,
1546
+ });
1547
+ }
1548
+ const evidence = evidenceLinks(input.runFolder, flowReport);
1549
+ reportPaths.push(...evidence.links);
1550
+ // Compute headline + per-flow details via the registry, then overlay shared
1551
+ // concerns: worker disclosure, run note framing, abort reason, checkpoint
1552
+ // option detail, and the special-case checkpoint_waiting / aborted headlines.
1553
+ const projection = projectSummary({
1554
+ runFolder: input.runFolder,
1555
+ flowId,
1556
+ flowReport,
1557
+ resultSummary: input.runResult.summary,
1558
+ runOutcome: input.runResult.outcome,
1559
+ });
1560
+ const details = [
1561
+ ...(flowMayInvokeWriteCapableWorker(flowId)
1562
+ ? [`Worker access: ${WRITE_CAPABLE_WORKER_DISCLOSURE}`]
1563
+ : []),
1564
+ ...(flowId === 'explore'
1565
+ ? []
1566
+ : [`Run note: ${friendlyRunNote(flowId, input.runResult.summary)}`]),
1567
+ ...projection.details,
1568
+ ];
1569
+ if (input.runResult.outcome === 'checkpoint_waiting') {
1570
+ const checkpoint = input.runResult.checkpoint;
1571
+ const optionDetails = checkpointOptionDetails(input.runFolder, checkpoint.allowed_choices);
1572
+ if (optionDetails.length > 0)
1573
+ details.push(`Checkpoint options: ${optionDetails.join('; ')}`);
1574
+ }
1575
+ if (input.runResult.outcome === 'aborted' && input.runResult.reason !== undefined) {
1576
+ // Lead with the plain-language translation when the reason is one of the
1577
+ // pinned engine shapes; the raw reason always follows, verbatim.
1578
+ const friendly = friendlyAbortReason(input.runResult.reason);
1579
+ if (friendly !== undefined)
1580
+ details.push(`What happened: ${friendly}`);
1581
+ details.push(`Abort reason: ${input.runResult.reason}`);
1582
+ }
1583
+ // An escalated run is a failure (it ran out of recovery and handed up), but
1584
+ // its per-flow projection headline reads as a neutral/complete result and
1585
+ // hides the reason. Surface it the way an abort is surfaced so the operator
1586
+ // sees the failure, not a false "complete".
1587
+ if (input.runResult.outcome === 'escalated' && input.runResult.reason !== undefined) {
1588
+ details.push(`Escalation reason: ${input.runResult.reason}`);
1589
+ }
1590
+ // Auto-power transparency: when the dial resolved from a researcher
1591
+ // recommendation, the digest says what was chosen and why. The receipt
1592
+ // trailer carries the tier; this line carries the reasoning.
1593
+ if (receipt?.power_source === 'auto' && receipt.power_rationale !== undefined) {
1594
+ const capped = receipt.power_clamped === true && receipt.power_recommended !== undefined
1595
+ ? ` (recommended ${receipt.power_recommended}, held to the configured bounds)`
1596
+ : '';
1597
+ details.push(`Power dial: auto chose ${receipt.power}${capped}. Reason: ${receipt.power_rationale}`);
1598
+ }
1599
+ // Connector transparency, mirroring the power-dial line: when nothing chose
1600
+ // a connector, say which one the automatic fallback picked and how to make
1601
+ // the choice explicit. Absent entirely when every relay was chosen by
1602
+ // config, flow, or step pin.
1603
+ for (const [name, count] of readAutoConnectorPicks(input.runFolder)) {
1604
+ details.push(`Connector: nothing was configured, so '${name}' was the automatic pick for ` +
1605
+ `${count} relay step(s). To choose explicitly: circuit config set relay.default ${name}`);
1606
+ }
1607
+ const warnings = [
1608
+ ...warningRecords(flowReport),
1609
+ ...(htmlEmitWarning === undefined ? [] : [htmlEmitWarning]),
1610
+ ...evidence.warnings,
1611
+ ...skillHookSummary.warnings,
1612
+ ...equipmentReshapeSummary.warnings,
1613
+ ...readDegradationWarnings(input.runFolder),
1614
+ ];
1615
+ const briefSlots = buildBriefSlots({
1616
+ runFolder: input.runFolder,
1617
+ flowId,
1618
+ flowReport,
1619
+ runResult: input.runResult,
1620
+ projectionHeadline: projection.headline,
1621
+ details,
1622
+ warnings,
1623
+ ...(projectorCheckpoint?.safe_default_choice === undefined
1624
+ ? {}
1625
+ : { checkpointDefaultChoice: projectorCheckpoint.safe_default_choice }),
1626
+ });
1627
+ const candidate = OperatorSummary.parse({
1628
+ schema_version: 1,
1629
+ run_id: input.runResult.run_id,
1630
+ flow_id: input.runResult.flow_id,
1631
+ selected_flow: input.route.selectedFlow,
1632
+ ...(input.route.routedBy === undefined ? {} : { routed_by: input.route.routedBy }),
1633
+ ...(input.route.routerReason === undefined ? {} : { router_reason: input.route.routerReason }),
1634
+ outcome: input.runResult.outcome,
1635
+ headline: briefSlots.headline,
1636
+ status_text: digestStatusText(briefSlots.headline),
1637
+ brief_slots: briefSlots,
1638
+ details,
1639
+ evidence_warnings: warnings,
1640
+ run_folder: input.runFolder,
1641
+ ...(resultPath === undefined ? {} : { result_path: resultPath }),
1642
+ ...(outHtmlPath === undefined ? {} : { html_path: outHtmlPath }),
1643
+ report_paths: reportPaths,
1644
+ ...(autoResolutions.length === 0 ? {} : { auto_resolutions: autoResolutions }),
1645
+ ...(skillHookSummary.activations.length === 0
1646
+ ? {}
1647
+ : { skill_hook_activations: skillHookSummary.activations }),
1648
+ ...(equipmentReshapeSummary.reshapes.length === 0
1649
+ ? {}
1650
+ : { equipment_reshapes: equipmentReshapeSummary.reshapes }),
1651
+ ...(receipt === undefined ? {} : { receipt }),
1652
+ ...(input.runResult.outcome === 'checkpoint_waiting'
1653
+ ? { checkpoint: input.runResult.checkpoint }
1654
+ : {}),
1655
+ });
1656
+ writeFileSync(outJsonPath, `${JSON.stringify(candidate, null, 2)}\n`);
1657
+ writeFileSync(outMarkdownPath, renderMarkdown(candidate, ledgerRows));
1658
+ return outHtmlPath === undefined
1659
+ ? { summary: candidate, jsonPath: outJsonPath, markdownPath: outMarkdownPath }
1660
+ : {
1661
+ summary: candidate,
1662
+ jsonPath: outJsonPath,
1663
+ markdownPath: outMarkdownPath,
1664
+ htmlPath: outHtmlPath,
1665
+ };
1666
+ }
1667
+ //# sourceMappingURL=writer.js.map