cloving 1.2.0 → 1.4.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 (752) hide show
  1. package/README.md +700 -331
  2. package/dist/src/agent-harness-shell.d.ts +13 -0
  3. package/dist/src/agent-harness-shell.js +93 -0
  4. package/dist/src/agent-harness-versions.d.ts +8 -0
  5. package/dist/src/agent-harness-versions.js +49 -0
  6. package/dist/src/agent-harnesses.d.ts +4 -0
  7. package/dist/src/agent-harnesses.js +13 -0
  8. package/dist/src/authority/command-wait-checks.d.ts +8 -0
  9. package/dist/src/authority/command-wait-checks.js +88 -0
  10. package/dist/src/authority/command-wait-results.d.ts +15 -0
  11. package/dist/src/authority/command-wait-results.js +73 -0
  12. package/dist/src/authority/command-wait-view.d.ts +21 -0
  13. package/dist/src/authority/command-wait-view.js +34 -0
  14. package/dist/src/authority/command-waits.d.ts +39 -0
  15. package/dist/src/authority/command-waits.js +97 -0
  16. package/dist/src/authority/commands.d.ts +1 -0
  17. package/dist/src/authority/commands.js +46 -5
  18. package/dist/src/authority/dispatch-decision.d.ts +8 -0
  19. package/dist/src/authority/dispatch-decision.js +26 -1
  20. package/dist/src/authority/effect-requests.js +6 -3
  21. package/dist/src/authority/effect-results.js +4 -2
  22. package/dist/src/authority/gate-reduction.d.ts +1 -0
  23. package/dist/src/authority/gate-reduction.js +18 -3
  24. package/dist/src/authority/gates.d.ts +2 -1
  25. package/dist/src/authority/gates.js +5 -1
  26. package/dist/src/authority/history-state.d.ts +2 -0
  27. package/dist/src/authority/history-state.js +13 -1
  28. package/dist/src/authority/instants.d.ts +1 -0
  29. package/dist/src/authority/instants.js +21 -0
  30. package/dist/src/authority/operations.js +1 -1
  31. package/dist/src/authority/reduction-state.d.ts +2 -0
  32. package/dist/src/authority/reduction-state.js +5 -0
  33. package/dist/src/authority/reduction.d.ts +1 -1
  34. package/dist/src/authority/reduction.js +30 -1
  35. package/dist/src/authority/status-input.d.ts +3 -1
  36. package/dist/src/authority/status.d.ts +3 -0
  37. package/dist/src/authority/status.js +28 -3
  38. package/dist/src/authority/stop-sequence.d.ts +1 -0
  39. package/dist/src/authority/stop-sequence.js +2 -1
  40. package/dist/src/authority/transitions.d.ts +7 -5
  41. package/dist/src/authority/transitions.js +13 -0
  42. package/dist/src/broker/actor/authority-delivery.js +1 -0
  43. package/dist/src/broker/actor/authority-queries.d.ts +9 -2
  44. package/dist/src/broker/actor/authority-queries.js +29 -5
  45. package/dist/src/broker/actor/authority-receipts.js +11 -1
  46. package/dist/src/broker/actor/authority-session.js +2 -2
  47. package/dist/src/broker/actor/authority-settings.js +4 -0
  48. package/dist/src/broker/actor/authority-upgrades.d.ts +19 -2
  49. package/dist/src/broker/actor/authority-upgrades.js +7 -2
  50. package/dist/src/broker/actor/delivery-intents.d.ts +2 -1
  51. package/dist/src/broker/actor/delivery-intents.js +6 -4
  52. package/dist/src/broker/actor/effect-delivery.d.ts +1 -1
  53. package/dist/src/broker/actor/effect-delivery.js +18 -2
  54. package/dist/src/broker/actor/effect-plan.js +11 -2
  55. package/dist/src/broker/actor/effect-queries.d.ts +5 -0
  56. package/dist/src/broker/actor/effect-queries.js +16 -1
  57. package/dist/src/broker/actor/effect-turn.js +2 -0
  58. package/dist/src/broker/actor/pin-check.js +1 -1
  59. package/dist/src/broker/actor/stop-plan.js +10 -4
  60. package/dist/src/broker/actor/stop-turn.d.ts +2 -0
  61. package/dist/src/broker/actor/stop-turn.js +24 -11
  62. package/dist/src/broker/actor/turn-draft.d.ts +1 -0
  63. package/dist/src/broker/actor/turn-draft.js +4 -0
  64. package/dist/src/broker/actor/turn-state.js +6 -2
  65. package/dist/src/broker/authority-admission.js +80 -7
  66. package/dist/src/broker/authority-restore.d.ts +2 -0
  67. package/dist/src/broker/authority-restore.js +36 -1
  68. package/dist/src/broker/command-wait-restore.d.ts +31 -0
  69. package/dist/src/broker/command-wait-restore.js +86 -0
  70. package/dist/src/broker/decision-restore.d.ts +1 -1
  71. package/dist/src/broker/decision-restore.js +5 -4
  72. package/dist/src/broker/effect-upgrade.d.ts +2 -0
  73. package/dist/src/broker/effect-upgrade.js +8 -2
  74. package/dist/src/broker/socket-address.d.ts +3 -1
  75. package/dist/src/broker/socket-address.js +2 -2
  76. package/dist/src/cli/arguments.d.ts +22 -11
  77. package/dist/src/cli/arguments.js +73 -104
  78. package/dist/src/cli/chat-stores.d.ts +2 -0
  79. package/dist/src/cli/chat-stores.js +113 -0
  80. package/dist/src/cli/client.d.ts +4 -1
  81. package/dist/src/cli/client.js +9 -3
  82. package/dist/src/cli/command-effects.d.ts +7 -0
  83. package/dist/src/cli/command-effects.js +39 -0
  84. package/dist/src/cli/command-requests.d.ts +17 -0
  85. package/dist/src/cli/command-requests.js +43 -0
  86. package/dist/src/cli/command-waits.d.ts +9 -0
  87. package/dist/src/cli/command-waits.js +51 -0
  88. package/dist/src/cli/commands.js +21 -41
  89. package/dist/src/cli/config-arguments.d.ts +11 -0
  90. package/dist/src/cli/config-arguments.js +59 -0
  91. package/dist/src/cli/config-command.d.ts +2 -0
  92. package/dist/src/cli/config-command.js +105 -0
  93. package/dist/src/cli/config-file.d.ts +3 -0
  94. package/dist/src/cli/config-file.js +52 -0
  95. package/dist/src/cli/config-lock.d.ts +7 -0
  96. package/dist/src/cli/config-lock.js +61 -0
  97. package/dist/src/cli/config-notice.d.ts +5 -0
  98. package/dist/src/cli/config-notice.js +46 -0
  99. package/dist/src/cli/doctor-github.d.ts +9 -0
  100. package/dist/src/cli/doctor-github.js +138 -0
  101. package/dist/src/cli/doctor-harness.d.ts +13 -0
  102. package/dist/src/cli/doctor-harness.js +242 -0
  103. package/dist/src/cli/doctor-local.d.ts +18 -0
  104. package/dist/src/cli/doctor-local.js +77 -0
  105. package/dist/src/cli/doctor-runtime.d.ts +15 -0
  106. package/dist/src/cli/doctor-runtime.js +176 -0
  107. package/dist/src/cli/doctor-service.d.ts +1 -0
  108. package/dist/src/cli/doctor-service.js +11 -0
  109. package/dist/src/cli/doctor-workflows.d.ts +6 -0
  110. package/dist/src/cli/doctor-workflows.js +50 -0
  111. package/dist/src/cli/doctor.d.ts +15 -0
  112. package/dist/src/cli/doctor.js +187 -0
  113. package/dist/src/cli/github-ci-progress.d.ts +8 -0
  114. package/dist/src/cli/github-ci-progress.js +83 -0
  115. package/dist/src/cli/github-retry.d.ts +6 -0
  116. package/dist/src/cli/github-retry.js +47 -0
  117. package/dist/src/cli/harness-probes.d.ts +24 -0
  118. package/dist/src/cli/harness-probes.js +183 -0
  119. package/dist/src/cli/harness-processes.d.ts +6 -0
  120. package/dist/src/cli/harness-processes.js +36 -0
  121. package/dist/src/cli/init-command.d.ts +9 -0
  122. package/dist/src/cli/init-command.js +52 -0
  123. package/dist/src/cli/init-prompt-command.d.ts +10 -0
  124. package/dist/src/cli/init-prompt-command.js +145 -0
  125. package/dist/src/cli/init-prompt.d.ts +35 -0
  126. package/dist/src/cli/init-prompt.js +74 -0
  127. package/dist/src/cli/init-selection.d.ts +13 -0
  128. package/dist/src/cli/init-selection.js +75 -0
  129. package/dist/src/cli/main.d.ts +9 -1
  130. package/dist/src/cli/main.js +69 -61
  131. package/dist/src/cli/mcp-server.d.ts +1 -0
  132. package/dist/src/cli/mcp-server.js +156 -0
  133. package/dist/src/cli/mcp-tools.d.ts +15 -0
  134. package/dist/src/cli/mcp-tools.js +80 -0
  135. package/dist/src/cli/phone-arguments.d.ts +14 -0
  136. package/dist/src/cli/phone-arguments.js +37 -0
  137. package/dist/src/cli/phone-client.d.ts +2 -0
  138. package/dist/src/cli/phone-client.js +32 -0
  139. package/dist/src/cli/phone-command.d.ts +13 -0
  140. package/dist/src/cli/phone-command.js +101 -0
  141. package/dist/src/cli/probe-command.d.ts +36 -0
  142. package/dist/src/cli/probe-command.js +59 -0
  143. package/dist/src/cli/project-settings.d.ts +4 -0
  144. package/dist/src/cli/project-settings.js +33 -0
  145. package/dist/src/cli/render.d.ts +2 -1
  146. package/dist/src/cli/render.js +57 -54
  147. package/dist/src/cli/report-ci-jobs.d.ts +23 -0
  148. package/dist/src/cli/report-ci-jobs.js +103 -0
  149. package/dist/src/cli/report-ci-usage.d.ts +9 -0
  150. package/dist/src/cli/report-ci-usage.js +185 -0
  151. package/dist/src/cli/report-ci.d.ts +13 -0
  152. package/dist/src/cli/report-ci.js +74 -0
  153. package/dist/src/cli/report-closures.d.ts +6 -0
  154. package/dist/src/cli/report-closures.js +97 -0
  155. package/dist/src/cli/report-flow.d.ts +7 -0
  156. package/dist/src/cli/report-flow.js +122 -0
  157. package/dist/src/cli/report-github-reader.d.ts +29 -0
  158. package/dist/src/cli/report-github-reader.js +157 -0
  159. package/dist/src/cli/report-github.d.ts +25 -0
  160. package/dist/src/cli/report-github.js +181 -0
  161. package/dist/src/cli/report-operator.d.ts +3 -0
  162. package/dist/src/cli/report-operator.js +40 -0
  163. package/dist/src/cli/report-ready.d.ts +3 -0
  164. package/dist/src/cli/report-ready.js +96 -0
  165. package/dist/src/cli/report-text.d.ts +9 -0
  166. package/dist/src/cli/report-text.js +33 -0
  167. package/dist/src/cli/report.d.ts +18 -0
  168. package/dist/src/cli/report.js +269 -0
  169. package/dist/src/cli/repository-arguments.d.ts +5 -0
  170. package/dist/src/cli/repository-arguments.js +34 -0
  171. package/dist/src/cli/runtime-arguments.d.ts +6 -1
  172. package/dist/src/cli/runtime-arguments.js +22 -2
  173. package/dist/src/cli/runtime-directory.d.ts +6 -2
  174. package/dist/src/cli/runtime-directory.js +72 -14
  175. package/dist/src/cli/schedule-arguments.d.ts +14 -0
  176. package/dist/src/cli/schedule-arguments.js +26 -0
  177. package/dist/src/cli/schedule-render.d.ts +22 -0
  178. package/dist/src/cli/schedule-render.js +73 -0
  179. package/dist/src/cli/terminal-text.d.ts +3 -0
  180. package/dist/src/cli/terminal-text.js +28 -0
  181. package/dist/src/cli/toolchain.d.ts +2 -0
  182. package/dist/src/cli/toolchain.js +22 -2
  183. package/dist/src/cli/usage-render.d.ts +6 -0
  184. package/dist/src/cli/usage-render.js +67 -1
  185. package/dist/src/cli/usage.d.ts +3 -3
  186. package/dist/src/cli/usage.js +119 -50
  187. package/dist/src/cli/watch-actions.d.ts +2 -0
  188. package/dist/src/cli/watch-actions.js +6 -6
  189. package/dist/src/cli/watch-board-view.d.ts +1 -1
  190. package/dist/src/cli/watch-board-view.js +27 -4
  191. package/dist/src/cli/watch-board.d.ts +4 -2
  192. package/dist/src/cli/watch-board.js +58 -35
  193. package/dist/src/cli/watch-card-forms.d.ts +1 -1
  194. package/dist/src/cli/watch-card-forms.js +13 -12
  195. package/dist/src/cli/watch-client.d.ts +1 -1
  196. package/dist/src/cli/watch-client.js +7 -11
  197. package/dist/src/cli/watch-header-view.d.ts +22 -0
  198. package/dist/src/cli/watch-header-view.js +104 -0
  199. package/dist/src/cli/watch-model.d.ts +4 -1
  200. package/dist/src/cli/watch-model.js +34 -15
  201. package/dist/src/cli/watch-page.js +57 -23
  202. package/dist/src/cli/watch-phases.d.ts +12 -3
  203. package/dist/src/cli/watch-phases.js +68 -11
  204. package/dist/src/cli/watch-phone-client.d.ts +1 -0
  205. package/dist/src/cli/watch-phone-client.js +84 -0
  206. package/dist/src/cli/watch-phone-view.d.ts +56 -0
  207. package/dist/src/cli/watch-phone-view.js +113 -0
  208. package/dist/src/cli/watch-phone.d.ts +5 -0
  209. package/dist/src/cli/watch-phone.js +53 -0
  210. package/dist/src/cli/watch-pr-board.js +1 -1
  211. package/dist/src/cli/watch-pr-command.d.ts +1 -0
  212. package/dist/src/cli/watch-pull-request.d.ts +3 -1
  213. package/dist/src/cli/watch-pull-request.js +22 -8
  214. package/dist/src/cli/watch-reads.d.ts +2 -0
  215. package/dist/src/cli/watch-reads.js +17 -16
  216. package/dist/src/cli/watch-render.d.ts +23 -1
  217. package/dist/src/cli/watch-run-input.d.ts +0 -1
  218. package/dist/src/cli/watch-run-input.js +0 -13
  219. package/dist/src/cli/watch-server.js +29 -11
  220. package/dist/src/cli/watch-turn.d.ts +4 -1
  221. package/dist/src/cli/watch-turn.js +37 -1
  222. package/dist/src/cli/watch-usage.js +5 -1
  223. package/dist/src/cli/watch-view.d.ts +4 -21
  224. package/dist/src/cli/watch-view.js +26 -118
  225. package/dist/src/cli.js +165 -28
  226. package/dist/src/command-settings.d.ts +16 -0
  227. package/dist/src/command-settings.js +42 -0
  228. package/dist/src/command-wait.d.ts +4 -0
  229. package/dist/src/command-wait.js +45 -0
  230. package/dist/src/configuration-change.d.ts +18 -0
  231. package/dist/src/configuration-change.js +76 -0
  232. package/dist/src/configuration-display.d.ts +21 -0
  233. package/dist/src/configuration-display.js +69 -0
  234. package/dist/src/configuration-schema.d.ts +58 -0
  235. package/dist/src/configuration-schema.js +163 -0
  236. package/dist/src/daemon/attachment-file.d.ts +6 -0
  237. package/dist/src/daemon/attachment-file.js +86 -0
  238. package/dist/src/daemon/attachments.d.ts +14 -0
  239. package/dist/src/daemon/attachments.js +17 -0
  240. package/dist/src/daemon/claude-recovery.d.ts +50 -0
  241. package/dist/src/daemon/claude-recovery.js +204 -0
  242. package/dist/src/daemon/claude-stream.d.ts +27 -0
  243. package/dist/src/daemon/claude-stream.js +63 -0
  244. package/dist/src/daemon/claude-turn.d.ts +18 -18
  245. package/dist/src/daemon/claude-turn.js +151 -105
  246. package/dist/src/daemon/claude-worker.d.ts +5 -4
  247. package/dist/src/daemon/claude-worker.js +149 -158
  248. package/dist/src/daemon/command-journal.d.ts +5 -0
  249. package/dist/src/daemon/command-journal.js +50 -0
  250. package/dist/src/daemon/command-process.d.ts +28 -0
  251. package/dist/src/daemon/command-process.js +164 -0
  252. package/dist/src/daemon/command-worker.d.ts +19 -0
  253. package/dist/src/daemon/command-worker.js +182 -0
  254. package/dist/src/daemon/cursor-stream.d.ts +4 -0
  255. package/dist/src/daemon/cursor-stream.js +154 -0
  256. package/dist/src/daemon/daemon-adapters.d.ts +60 -0
  257. package/dist/src/daemon/daemon-adapters.js +126 -0
  258. package/dist/src/daemon/daemon-loops.d.ts +16 -0
  259. package/dist/src/daemon/daemon-loops.js +41 -0
  260. package/dist/src/daemon/daemon.d.ts +2 -33
  261. package/dist/src/daemon/daemon.js +133 -131
  262. package/dist/src/daemon/declared-input.d.ts +3 -0
  263. package/dist/src/daemon/declared-input.js +9 -0
  264. package/dist/src/daemon/delivery-router.js +1 -1
  265. package/dist/src/daemon/gemini-stream.d.ts +4 -0
  266. package/dist/src/daemon/gemini-stream.js +129 -0
  267. package/dist/src/daemon/github-attach.d.ts +2 -0
  268. package/dist/src/daemon/github-attach.js +149 -0
  269. package/dist/src/daemon/github-ci-filters.d.ts +6 -0
  270. package/dist/src/daemon/github-ci-filters.js +138 -0
  271. package/dist/src/daemon/github-ci-rerun.d.ts +26 -0
  272. package/dist/src/daemon/github-ci-rerun.js +92 -0
  273. package/dist/src/daemon/github-ci-workflows.d.ts +10 -0
  274. package/dist/src/daemon/github-ci-workflows.js +148 -0
  275. package/dist/src/daemon/github-ci.js +109 -10
  276. package/dist/src/daemon/github-issue-methods.d.ts +2 -0
  277. package/dist/src/daemon/github-issue-methods.js +37 -2
  278. package/dist/src/daemon/github-merge-call.d.ts +4 -1
  279. package/dist/src/daemon/github-merge-call.js +10 -3
  280. package/dist/src/daemon/github-merge.js +58 -26
  281. package/dist/src/daemon/github-methods.js +22 -2
  282. package/dist/src/daemon/github-operation.d.ts +5 -0
  283. package/dist/src/daemon/github-operation.js +6 -0
  284. package/dist/src/daemon/github-retry.js +8 -44
  285. package/dist/src/daemon/github-worker.d.ts +4 -0
  286. package/dist/src/daemon/github-worker.js +6 -0
  287. package/dist/src/daemon/issue-queue.d.ts +1 -0
  288. package/dist/src/daemon/issue-queue.js +16 -34
  289. package/dist/src/daemon/notify-events.d.ts +6 -0
  290. package/dist/src/daemon/notify-events.js +84 -0
  291. package/dist/src/daemon/notify-journal.js +1 -1
  292. package/dist/src/daemon/notify-message.d.ts +4 -1
  293. package/dist/src/daemon/notify-message.js +36 -0
  294. package/dist/src/daemon/notify.d.ts +1 -1
  295. package/dist/src/daemon/notify.js +7 -78
  296. package/dist/src/daemon/opencode-stream.d.ts +5 -0
  297. package/dist/src/daemon/opencode-stream.js +87 -0
  298. package/dist/src/daemon/operation-journal.d.ts +1 -0
  299. package/dist/src/daemon/queue-status.d.ts +10 -0
  300. package/dist/src/daemon/queue-status.js +51 -0
  301. package/dist/src/daemon/resume-index-lock.d.ts +13 -0
  302. package/dist/src/daemon/resume-index-lock.js +160 -0
  303. package/dist/src/daemon/resume-worktree.d.ts +7 -0
  304. package/dist/src/daemon/resume-worktree.js +29 -0
  305. package/dist/src/daemon/retry-worktree.d.ts +18 -0
  306. package/dist/src/daemon/retry-worktree.js +139 -0
  307. package/dist/src/daemon/retrying-turn.d.ts +2 -10
  308. package/dist/src/daemon/retrying-turn.js +145 -141
  309. package/dist/src/daemon/schedule-control.d.ts +26 -0
  310. package/dist/src/daemon/schedule-control.js +110 -0
  311. package/dist/src/daemon/schedule-journal.d.ts +6 -0
  312. package/dist/src/daemon/schedule-journal.js +120 -0
  313. package/dist/src/daemon/text-output.d.ts +18 -0
  314. package/dist/src/daemon/text-output.js +44 -0
  315. package/dist/src/daemon/ticket-registration.d.ts +7 -14
  316. package/dist/src/daemon/ticket-registration.js +93 -114
  317. package/dist/src/daemon/turn-attempt-journal.d.ts +38 -0
  318. package/dist/src/daemon/turn-attempt-journal.js +136 -0
  319. package/dist/src/daemon/turn-attempts.d.ts +47 -0
  320. package/dist/src/daemon/turn-attempts.js +166 -0
  321. package/dist/src/daemon/turn-command.d.ts +10 -0
  322. package/dist/src/daemon/turn-command.js +33 -0
  323. package/dist/src/daemon/turn-report.d.ts +25 -0
  324. package/dist/src/daemon/turn-report.js +118 -0
  325. package/dist/src/daemon/work-tree.d.ts +11 -1
  326. package/dist/src/daemon/work-tree.js +35 -12
  327. package/dist/src/daemon/worker-profile.d.ts +8 -0
  328. package/dist/src/daemon/worker-profile.js +40 -0
  329. package/dist/src/daemon/workflow-generations.d.ts +32 -0
  330. package/dist/src/daemon/workflow-generations.js +57 -0
  331. package/dist/src/daemon/workflow-replay.d.ts +16 -0
  332. package/dist/src/daemon/workflow-replay.js +58 -0
  333. package/dist/src/daemon/workflow-schedules.d.ts +30 -0
  334. package/dist/src/daemon/workflow-schedules.js +238 -0
  335. package/dist/src/daemon/worktree-processes.d.ts +9 -0
  336. package/dist/src/daemon/worktree-processes.js +151 -0
  337. package/dist/src/decision-wait.d.ts +1 -0
  338. package/dist/src/decision-wait.js +3 -0
  339. package/dist/src/delivery-backoff.d.ts +1 -0
  340. package/dist/src/delivery-backoff.js +3 -0
  341. package/dist/src/doctor-report.d.ts +22 -0
  342. package/dist/src/doctor-report.js +63 -0
  343. package/dist/src/execution-pin.d.ts +5 -0
  344. package/dist/src/execution-pin.js +67 -4
  345. package/dist/src/grok-result.d.ts +12 -0
  346. package/dist/src/grok-result.js +61 -0
  347. package/dist/src/harness-defaults.d.ts +35 -0
  348. package/dist/src/harness-defaults.js +121 -0
  349. package/dist/src/harness-start.d.ts +15 -0
  350. package/dist/src/harness-start.js +37 -0
  351. package/dist/src/host/command-wait.d.ts +38 -0
  352. package/dist/src/host/command-wait.js +115 -0
  353. package/dist/src/host/decision-resume.d.ts +35 -0
  354. package/dist/src/host/decision-resume.js +86 -0
  355. package/dist/src/host/gate-bridge.d.ts +48 -0
  356. package/dist/src/host/gate-bridge.js +124 -0
  357. package/dist/src/host/run-wait.d.ts +26 -0
  358. package/dist/src/host/run-wait.js +37 -0
  359. package/dist/src/host/start-delivery.d.ts +6 -8
  360. package/dist/src/host/start-delivery.js +13 -18
  361. package/dist/src/host/step-bridge-host.d.ts +8 -20
  362. package/dist/src/host/step-bridge-host.js +65 -58
  363. package/dist/src/merge-request.d.ts +19 -0
  364. package/dist/src/merge-request.js +32 -0
  365. package/dist/src/operation-identity.d.ts +1 -0
  366. package/dist/src/operation-identity.js +4 -0
  367. package/dist/src/phone/canonical-json.d.ts +1 -0
  368. package/dist/src/phone/canonical-json.js +16 -0
  369. package/dist/src/phone/phone-link.d.ts +7 -0
  370. package/dist/src/phone/phone-link.js +21 -0
  371. package/dist/src/phone/qr-data.d.ts +8 -0
  372. package/dist/src/phone/qr-data.js +133 -0
  373. package/dist/src/phone/qr-matrix.d.ts +6 -0
  374. package/dist/src/phone/qr-matrix.js +175 -0
  375. package/dist/src/phone/qr-penalty.d.ts +3 -0
  376. package/dist/src/phone/qr-penalty.js +67 -0
  377. package/dist/src/phone/qr-picture.d.ts +5 -0
  378. package/dist/src/phone/qr-picture.js +24 -0
  379. package/dist/src/private-config.schema.json +303 -0
  380. package/dist/src/project-config.schema.json +105 -0
  381. package/dist/src/project-settings.d.ts +19 -0
  382. package/dist/src/project-settings.js +133 -0
  383. package/dist/src/queue-spend.d.ts +4 -0
  384. package/dist/src/queue-spend.js +21 -0
  385. package/dist/src/relay/answer-check.d.ts +24 -0
  386. package/dist/src/relay/answer-check.js +145 -0
  387. package/dist/src/relay/answer-inbox.d.ts +15 -0
  388. package/dist/src/relay/answer-inbox.js +173 -0
  389. package/dist/src/relay/daemon-keys.d.ts +16 -0
  390. package/dist/src/relay/daemon-keys.js +75 -0
  391. package/dist/src/relay/decision-check.d.ts +3 -0
  392. package/dist/src/relay/decision-check.js +77 -0
  393. package/dist/src/relay/decision-close.d.ts +6 -0
  394. package/dist/src/relay/decision-close.js +72 -0
  395. package/dist/src/relay/decision-envelopes.d.ts +29 -0
  396. package/dist/src/relay/decision-envelopes.js +93 -0
  397. package/dist/src/relay/decision-watch.d.ts +14 -0
  398. package/dist/src/relay/decision-watch.js +68 -0
  399. package/dist/src/relay/envelope-post.d.ts +8 -0
  400. package/dist/src/relay/envelope-post.js +71 -0
  401. package/dist/src/relay/envelope.d.ts +28 -0
  402. package/dist/src/relay/envelope.js +53 -0
  403. package/dist/src/relay/hpke.d.ts +25 -0
  404. package/dist/src/relay/hpke.js +108 -0
  405. package/dist/src/relay/pairing-checks.d.ts +42 -0
  406. package/dist/src/relay/pairing-checks.js +172 -0
  407. package/dist/src/relay/pairing-follow.d.ts +8 -0
  408. package/dist/src/relay/pairing-follow.js +95 -0
  409. package/dist/src/relay/pairing-session.d.ts +29 -0
  410. package/dist/src/relay/pairing-session.js +87 -0
  411. package/dist/src/relay/phone-delivery.d.ts +51 -0
  412. package/dist/src/relay/phone-delivery.js +139 -0
  413. package/dist/src/relay/phone-devices.d.ts +36 -0
  414. package/dist/src/relay/phone-devices.js +46 -0
  415. package/dist/src/relay/phone-inbox.d.ts +18 -0
  416. package/dist/src/relay/phone-inbox.js +17 -0
  417. package/dist/src/relay/phone-operations.d.ts +18 -0
  418. package/dist/src/relay/phone-operations.js +121 -0
  419. package/dist/src/relay/phone-outbox.d.ts +21 -0
  420. package/dist/src/relay/phone-outbox.js +25 -0
  421. package/dist/src/relay/phone-socket.d.ts +6 -0
  422. package/dist/src/relay/phone-socket.js +63 -0
  423. package/dist/src/relay/relay-control.d.ts +7 -0
  424. package/dist/src/relay/relay-control.js +24 -0
  425. package/dist/src/relay/relay-files.d.ts +2 -0
  426. package/dist/src/relay/relay-files.js +23 -0
  427. package/dist/src/relay/relay-heartbeat.d.ts +17 -0
  428. package/dist/src/relay/relay-heartbeat.js +81 -0
  429. package/dist/src/relay/relay-http.d.ts +14 -0
  430. package/dist/src/relay/relay-http.js +63 -0
  431. package/dist/src/relay/relay-registration.d.ts +15 -0
  432. package/dist/src/relay/relay-registration.js +63 -0
  433. package/dist/src/relay/relay-service.d.ts +28 -0
  434. package/dist/src/relay/relay-service.js +218 -0
  435. package/dist/src/relay/relay-store.d.ts +48 -0
  436. package/dist/src/relay/relay-store.js +131 -0
  437. package/dist/src/relay/sealed-post.d.ts +25 -0
  438. package/dist/src/relay/sealed-post.js +52 -0
  439. package/dist/src/relay.d.ts +1 -0
  440. package/dist/src/relay.js +8 -0
  441. package/dist/src/report-ci.d.ts +164 -0
  442. package/dist/src/report-ci.js +32 -0
  443. package/dist/src/report-effects.d.ts +15 -0
  444. package/dist/src/report-effects.js +212 -0
  445. package/dist/src/report-flow-types.d.ts +38 -0
  446. package/dist/src/report-flow-types.js +7 -0
  447. package/dist/src/report-flow.d.ts +43 -0
  448. package/dist/src/report-flow.js +193 -0
  449. package/dist/src/report-operator.d.ts +67 -0
  450. package/dist/src/report-operator.js +25 -0
  451. package/dist/src/report-quality.d.ts +221 -0
  452. package/dist/src/report-quality.js +94 -0
  453. package/dist/src/report-ready.d.ts +23 -0
  454. package/dist/src/report-ready.js +117 -0
  455. package/dist/src/report-statistics.d.ts +51 -0
  456. package/dist/src/report-statistics.js +106 -0
  457. package/dist/src/report.d.ts +712 -0
  458. package/dist/src/report.js +234 -0
  459. package/dist/src/repository-identity.d.ts +4 -0
  460. package/dist/src/repository-identity.js +4 -0
  461. package/dist/src/review-subject.d.ts +41 -0
  462. package/dist/src/review-subject.js +91 -0
  463. package/dist/src/run-wait.d.ts +23 -0
  464. package/dist/src/run-wait.js +20 -0
  465. package/dist/src/schedule-progress.d.ts +33 -0
  466. package/dist/src/schedule-progress.js +45 -0
  467. package/dist/src/service/active-tickets.d.ts +4 -0
  468. package/dist/src/service/active-tickets.js +49 -0
  469. package/dist/src/service/command-effects.d.ts +4 -0
  470. package/dist/src/service/command-effects.js +16 -0
  471. package/dist/src/service/command-waits.d.ts +34 -0
  472. package/dist/src/service/command-waits.js +86 -0
  473. package/dist/src/service/decision-handler.d.ts +4 -0
  474. package/dist/src/service/decision-handler.js +39 -4
  475. package/dist/src/service/expiry.js +2 -0
  476. package/dist/src/service/gateway.js +21 -4
  477. package/dist/src/service/queue-spend.d.ts +6 -0
  478. package/dist/src/service/queue-spend.js +68 -0
  479. package/dist/src/service/registry.d.ts +16 -3
  480. package/dist/src/service/registry.js +34 -3
  481. package/dist/src/service/replies.d.ts +16 -1
  482. package/dist/src/service/replies.js +23 -0
  483. package/dist/src/service/run-handlers.js +35 -56
  484. package/dist/src/service/run-metadata.d.ts +22 -0
  485. package/dist/src/service/run-metadata.js +138 -0
  486. package/dist/src/service/run-waits.d.ts +3 -0
  487. package/dist/src/service/run-waits.js +41 -0
  488. package/dist/src/service/service.d.ts +22 -2
  489. package/dist/src/service/service.js +29 -13
  490. package/dist/src/service/submission-handler.d.ts +0 -1
  491. package/dist/src/service/submission-handler.js +22 -36
  492. package/dist/src/service/worker-port.d.ts +1 -0
  493. package/dist/src/service/worker-port.js +9 -1
  494. package/dist/src/service/worker-totals.d.ts +2 -0
  495. package/dist/src/service/worker-totals.js +9 -24
  496. package/dist/src/step-bridge.d.ts +43 -0
  497. package/dist/src/steps/command-wait.d.ts +12 -0
  498. package/dist/src/steps/command-wait.js +26 -0
  499. package/dist/src/steps/merge-by-person.d.ts +2 -0
  500. package/dist/src/steps/merge-by-person.js +18 -0
  501. package/dist/src/steps/merge-when-green.d.ts +2 -0
  502. package/dist/src/steps/merge-when-green.js +62 -0
  503. package/dist/src/steps/open-decision-wait.d.ts +2 -0
  504. package/dist/src/steps/open-decision-wait.js +8 -0
  505. package/dist/src/steps/review-by-agent.d.ts +5 -0
  506. package/dist/src/steps/review-by-agent.js +124 -0
  507. package/dist/src/steps/review-by-person.d.ts +4 -0
  508. package/dist/src/steps/review-by-person.js +19 -0
  509. package/dist/src/steps/review-subject.d.ts +2 -0
  510. package/dist/src/steps/review-subject.js +11 -0
  511. package/dist/src/steps/run-command.d.ts +2 -0
  512. package/dist/src/steps/run-command.js +15 -0
  513. package/dist/src/steps/sleep.d.ts +3 -0
  514. package/dist/src/steps/sleep.js +19 -0
  515. package/dist/src/steps/wait-for-command.d.ts +3 -0
  516. package/dist/src/steps/wait-for-command.js +17 -0
  517. package/dist/src/steps/wait-for-decision.d.ts +2 -0
  518. package/dist/src/steps/wait-for-decision.js +71 -0
  519. package/dist/src/steps/wait-for-run.d.ts +5 -0
  520. package/dist/src/steps/wait-for-run.js +9 -0
  521. package/dist/src/storage/command-wait-rows.d.ts +30 -0
  522. package/dist/src/storage/command-wait-rows.js +96 -0
  523. package/dist/src/storage/decision-snapshots.d.ts +9 -1
  524. package/dist/src/storage/decision-snapshots.js +22 -2
  525. package/dist/src/storage/domain-changes.d.ts +2 -0
  526. package/dist/src/storage/domain-changes.js +3 -0
  527. package/dist/src/storage/domain-schema.d.ts +13 -1
  528. package/dist/src/storage/domain-schema.js +31 -4
  529. package/dist/src/storage/effect-schema.d.ts +1 -0
  530. package/dist/src/storage/effect-schema.js +5 -0
  531. package/dist/src/submission.d.ts +4 -0
  532. package/dist/src/submission.js +6 -2
  533. package/dist/src/testing-requests.d.ts +15 -0
  534. package/dist/src/testing-requests.js +93 -0
  535. package/dist/src/testing.d.ts +23 -0
  536. package/dist/src/testing.js +211 -0
  537. package/dist/src/ticket-status-stream.d.ts +9 -0
  538. package/dist/src/ticket-status-stream.js +94 -0
  539. package/dist/src/token-prices.d.ts +12 -4
  540. package/dist/src/token-prices.js +15 -2
  541. package/dist/src/turn-profile.d.ts +1 -0
  542. package/dist/src/turn-profile.js +8 -1
  543. package/dist/src/worker-usage.d.ts +17 -0
  544. package/dist/src/worker-usage.js +60 -0
  545. package/dist/src/workflow-admission.d.ts +5 -0
  546. package/dist/src/workflow-candidate.d.ts +8 -2
  547. package/dist/src/workflow-candidate.js +59 -6
  548. package/dist/src/workflow-contracts.d.ts +1 -0
  549. package/dist/src/workflow-contracts.js +9 -2
  550. package/dist/src/workflow-declaration.d.ts +21 -3
  551. package/dist/src/workflow-declaration.js +77 -9
  552. package/dist/src/workflow-discovery.d.ts +3 -13
  553. package/dist/src/workflow-discovery.js +5 -14
  554. package/dist/src/workflow-refusals.js +3 -1
  555. package/dist/src/workflow-schedule.d.ts +22 -0
  556. package/dist/src/workflow-schedule.js +53 -0
  557. package/dist/src/workflows.d.ts +12 -2
  558. package/dist/src/workflows.js +9 -1
  559. package/dist/tools/admit-workflow.d.ts +1 -0
  560. package/dist/tools/admit-workflow.js +18 -5
  561. package/dist/tools/doctor-adoption.d.ts +1 -0
  562. package/dist/tools/doctor-adoption.js +11 -0
  563. package/dist/tools/project-configuration.d.ts +4 -0
  564. package/dist/tools/project-configuration.js +47 -0
  565. package/dist/tools/red-green-command.d.ts +1 -0
  566. package/dist/tools/red-green-command.js +174 -0
  567. package/dist/tools/red-green-process.d.ts +10 -0
  568. package/dist/tools/red-green-process.js +59 -0
  569. package/dist/tools/self-host-processes.d.ts +3 -0
  570. package/dist/tools/self-host-processes.js +63 -33
  571. package/dist/tools/self-host-project.d.ts +4 -0
  572. package/dist/tools/self-host-project.js +42 -60
  573. package/dist/tools/self-host-runtime.d.ts +16 -0
  574. package/dist/tools/self-host-runtime.js +60 -0
  575. package/dist/tools/self-host-workflows.d.ts +1 -0
  576. package/dist/tools/self-host-workflows.js +36 -1
  577. package/dist/tools/self-host.js +128 -71
  578. package/dist/tools/template-command.d.ts +1 -0
  579. package/dist/tools/template-command.js +160 -0
  580. package/dist/tools/template-copy.d.ts +11 -0
  581. package/dist/tools/template-copy.js +130 -0
  582. package/dist/tools/template-files.d.ts +17 -0
  583. package/dist/tools/template-files.js +74 -0
  584. package/dist/tools/workflow-bundles.js +1 -0
  585. package/dist/tools/workflow-candidate-counts.d.ts +6 -2
  586. package/dist/tools/workflow-candidate-counts.js +31 -16
  587. package/dist/tools/workflow-candidate-fields.d.ts +5 -0
  588. package/dist/tools/workflow-candidate-fields.js +24 -0
  589. package/dist/tools/workflow-candidate-helper-counts.d.ts +10 -0
  590. package/dist/tools/workflow-candidate-helper-counts.js +129 -0
  591. package/dist/tools/workflow-candidate-program.d.ts +2 -0
  592. package/dist/tools/workflow-candidate-program.js +36 -8
  593. package/dist/tools/workflow-candidate-shape.d.ts +3 -0
  594. package/dist/tools/workflow-candidate-shape.js +90 -0
  595. package/dist/tools/workflow-candidate-source.js +92 -16
  596. package/dist/tools/workflow-candidate-syntax.d.ts +9 -3
  597. package/dist/tools/workflow-candidate-syntax.js +83 -109
  598. package/dist/tools/workflow-command.d.ts +1 -0
  599. package/dist/tools/workflow-command.js +142 -0
  600. package/dist/tools/workflow-folder-capture.d.ts +1 -0
  601. package/dist/tools/workflow-folder-capture.js +47 -2
  602. package/dist/tools/workflow-folders.d.ts +18 -3
  603. package/dist/tools/workflow-folders.js +60 -7
  604. package/dist/tools/workflow-test-hook.d.ts +7 -0
  605. package/dist/tools/workflow-test-hook.js +16 -0
  606. package/dist/tools/workflow-test-loader.d.ts +1 -0
  607. package/dist/tools/workflow-test-loader.js +10 -0
  608. package/package.json +60 -10
  609. package/templates/develop/README.md +90 -0
  610. package/templates/develop/develop/accept.ts +11 -0
  611. package/templates/develop/develop/flow-tests.ts +394 -0
  612. package/templates/develop/develop/local.ts +40 -0
  613. package/templates/develop/develop/option-tests.ts +174 -0
  614. package/templates/develop/develop/partial-choice.ts +29 -0
  615. package/templates/develop/develop/partial.ts +28 -0
  616. package/templates/develop/develop/pull.ts +156 -0
  617. package/templates/develop/develop/queue-partial.ts +39 -0
  618. package/templates/develop/develop/refusal-tests.ts +251 -0
  619. package/templates/develop/develop/report.ts +156 -0
  620. package/templates/develop/develop/round.ts +40 -0
  621. package/templates/develop/develop/scenarios.ts +87 -0
  622. package/templates/develop/develop/turn.ts +68 -0
  623. package/templates/develop/develop.declaration.json +24 -0
  624. package/templates/develop/develop.test.ts +287 -0
  625. package/templates/develop/develop.ts +30 -0
  626. package/templates/develop/template.json +153 -0
  627. package/templates/idea-to-issue/README.md +27 -0
  628. package/templates/idea-to-issue/idea-to-issue/effects.ts +52 -0
  629. package/templates/idea-to-issue/idea-to-issue/leave.ts +10 -0
  630. package/templates/idea-to-issue/idea-to-issue/next.ts +29 -0
  631. package/templates/idea-to-issue/idea-to-issue/post-person.ts +18 -0
  632. package/templates/idea-to-issue/idea-to-issue/post.ts +50 -0
  633. package/templates/idea-to-issue/idea-to-issue/queue.ts +27 -0
  634. package/templates/idea-to-issue/idea-to-issue/review.ts +42 -0
  635. package/templates/idea-to-issue/idea-to-issue/scenarios.ts +50 -0
  636. package/templates/idea-to-issue/idea-to-issue/turn.ts +40 -0
  637. package/templates/idea-to-issue/idea-to-issue.declaration.json +16 -0
  638. package/templates/idea-to-issue/idea-to-issue.test.ts +79 -0
  639. package/templates/idea-to-issue/idea-to-issue.ts +49 -0
  640. package/templates/idea-to-issue/template.json +81 -0
  641. package/templates/review-day/README.md +97 -0
  642. package/templates/review-day/review-day/critique.ts +58 -0
  643. package/templates/review-day/review-day/decision.ts +29 -0
  644. package/templates/review-day/review-day/facts.ts +69 -0
  645. package/templates/review-day/review-day/label.ts +29 -0
  646. package/templates/review-day/review-day/next.ts +28 -0
  647. package/templates/review-day/review-day/post.ts +27 -0
  648. package/templates/review-day/review-day/report.ts +98 -0
  649. package/templates/review-day/review-day/rules.ts +12 -0
  650. package/templates/review-day/review-day/scenarios.ts +76 -0
  651. package/templates/review-day/review-day/turn.ts +73 -0
  652. package/templates/review-day/review-day.declaration.json +16 -0
  653. package/templates/review-day/review-day.test.ts +362 -0
  654. package/templates/review-day/review-day.ts +37 -0
  655. package/templates/review-day/template.json +56 -0
  656. package/dist/src/chats/analysis-batches.d.ts +0 -42
  657. package/dist/src/chats/analysis-batches.js +0 -97
  658. package/dist/src/chats/analysis-checkpoint.d.ts +0 -29
  659. package/dist/src/chats/analysis-checkpoint.js +0 -31
  660. package/dist/src/chats/analysis-contract.d.ts +0 -80
  661. package/dist/src/chats/analysis-contract.js +0 -16
  662. package/dist/src/chats/analysis-data.d.ts +0 -3
  663. package/dist/src/chats/analysis-data.js +0 -85
  664. package/dist/src/chats/analysis-input.d.ts +0 -18
  665. package/dist/src/chats/analysis-input.js +0 -97
  666. package/dist/src/chats/analysis-links.d.ts +0 -2
  667. package/dist/src/chats/analysis-links.js +0 -25
  668. package/dist/src/chats/analysis-merge.d.ts +0 -16
  669. package/dist/src/chats/analysis-merge.js +0 -134
  670. package/dist/src/chats/analysis-prompt.d.ts +0 -18
  671. package/dist/src/chats/analysis-prompt.js +0 -42
  672. package/dist/src/chats/analysis-proposal.d.ts +0 -4
  673. package/dist/src/chats/analysis-proposal.js +0 -41
  674. package/dist/src/chats/analysis-provenance.d.ts +0 -4
  675. package/dist/src/chats/analysis-provenance.js +0 -99
  676. package/dist/src/chats/analysis-shape.d.ts +0 -4
  677. package/dist/src/chats/analysis-shape.js +0 -235
  678. package/dist/src/chats/analysis.d.ts +0 -3
  679. package/dist/src/chats/analysis.js +0 -42
  680. package/dist/src/chats/corpus-input.d.ts +0 -5
  681. package/dist/src/chats/corpus-input.js +0 -288
  682. package/dist/src/chats/destination.d.ts +0 -4
  683. package/dist/src/chats/destination.js +0 -96
  684. package/dist/src/chats/import.d.ts +0 -15
  685. package/dist/src/chats/import.js +0 -243
  686. package/dist/src/chats/input-file.d.ts +0 -3
  687. package/dist/src/chats/input-file.js +0 -32
  688. package/dist/src/chats/normalize.d.ts +0 -29
  689. package/dist/src/chats/normalize.js +0 -155
  690. package/dist/src/chats/previous-import.d.ts +0 -5
  691. package/dist/src/chats/previous-import.js +0 -34
  692. package/dist/src/chats/reader.d.ts +0 -21
  693. package/dist/src/chats/reader.js +0 -118
  694. package/dist/src/chats/redact-import.d.ts +0 -14
  695. package/dist/src/chats/redact-import.js +0 -141
  696. package/dist/src/chats/redaction.d.ts +0 -41
  697. package/dist/src/chats/redaction.js +0 -161
  698. package/dist/src/chats/reference-mapping.d.ts +0 -16
  699. package/dist/src/chats/reference-mapping.js +0 -153
  700. package/dist/src/chats/revision-input.d.ts +0 -3
  701. package/dist/src/chats/revision-input.js +0 -180
  702. package/dist/src/chats/revision.d.ts +0 -48
  703. package/dist/src/chats/revision.js +0 -94
  704. package/dist/src/chats/selection.d.ts +0 -25
  705. package/dist/src/chats/selection.js +0 -109
  706. package/dist/src/chats/source.d.ts +0 -23
  707. package/dist/src/chats/source.js +0 -135
  708. package/dist/src/chats/structure.d.ts +0 -57
  709. package/dist/src/chats/structure.js +0 -216
  710. package/dist/src/chats/workflow-generation-projection.d.ts +0 -8
  711. package/dist/src/chats/workflow-generation-projection.js +0 -75
  712. package/dist/src/chats/workflow-generation-source.d.ts +0 -25
  713. package/dist/src/chats/workflow-generation-source.js +0 -124
  714. package/dist/src/chats/workflow-generation-text.d.ts +0 -23
  715. package/dist/src/chats/workflow-generation-text.js +0 -74
  716. package/dist/src/chats/workflow-generation.d.ts +0 -69
  717. package/dist/src/chats/workflow-generation.js +0 -142
  718. package/dist/src/cli/watch-start-view.d.ts +0 -18
  719. package/dist/src/cli/watch-start-view.js +0 -77
  720. package/dist/src/daemon/analysis-launch.d.ts +0 -5
  721. package/dist/src/daemon/analysis-launch.js +0 -81
  722. package/dist/src/daemon/analysis-token.d.ts +0 -6
  723. package/dist/src/daemon/analysis-token.js +0 -88
  724. package/dist/src/daemon/analysis-worker.d.ts +0 -20
  725. package/dist/src/daemon/analysis-worker.js +0 -271
  726. package/dist/src/daemon/chats-batch-binding.d.ts +0 -23
  727. package/dist/src/daemon/chats-batch-binding.js +0 -99
  728. package/dist/src/daemon/chats-capture.d.ts +0 -18
  729. package/dist/src/daemon/chats-capture.js +0 -194
  730. package/dist/src/daemon/chats-checkpoints.d.ts +0 -41
  731. package/dist/src/daemon/chats-checkpoints.js +0 -186
  732. package/dist/src/daemon/chats-files.d.ts +0 -42
  733. package/dist/src/daemon/chats-files.js +0 -252
  734. package/dist/src/daemon/chats-follow-up.d.ts +0 -38
  735. package/dist/src/daemon/chats-follow-up.js +0 -180
  736. package/dist/src/daemon/chats-question.d.ts +0 -15
  737. package/dist/src/daemon/chats-question.js +0 -93
  738. package/dist/src/daemon/chats-worker.d.ts +0 -13
  739. package/dist/src/daemon/chats-worker.js +0 -201
  740. package/dist/src/steps/decision-gate.d.ts +0 -2
  741. package/dist/src/steps/decision-gate.js +0 -8
  742. package/dist/workflows/analyze-chats.d.ts +0 -15
  743. package/dist/workflows/analyze-chats.declaration.json +0 -22
  744. package/dist/workflows/analyze-chats.js +0 -250
  745. package/dist/workflows/develop-prd.d.ts +0 -7
  746. package/dist/workflows/develop-prd.js +0 -165
  747. package/dist/workflows/develop-ticket.d.ts +0 -9
  748. package/dist/workflows/develop-ticket.js +0 -207
  749. package/dist/workflows/issue-labels.d.ts +0 -16
  750. package/dist/workflows/issue-labels.js +0 -70
  751. package/dist/workflows/ticket-prompts.d.ts +0 -35
  752. package/dist/workflows/ticket-prompts.js +0 -143
@@ -0,0 +1,211 @@
1
+ import { spawn } from "node:child_process";
2
+ import { mkdtemp, readFile, rm, writeFile } from "node:fs/promises";
3
+ import { tmpdir } from "node:os";
4
+ import { join, resolve } from "node:path";
5
+ import { pathToFileURL } from "node:url";
6
+ import { workflowTestLoader } from "../tools/workflow-test-loader.js";
7
+ import { authorizeEffect } from "./effect-authorization.js";
8
+ import { scenarioResult, } from "./testing-requests.js";
9
+ import { stepBridgeKey, } from "./step-bridge.js";
10
+ export function fakeStepBridge(scenario) {
11
+ const { bridge, requests, budget } = scenarioBridge(scenario);
12
+ const key = Symbol.for(stepBridgeKey);
13
+ const sleepKey = Symbol.for("WORKFLOW_SLEEP");
14
+ const previous = Object.getOwnPropertyDescriptor(globalThis, key);
15
+ const previousSleep = Object.getOwnPropertyDescriptor(globalThis, sleepKey);
16
+ if (Reflect.get(globalThis, key) !== undefined ||
17
+ Reflect.get(globalThis, sleepKey) !== undefined)
18
+ throw new Error("workflow-testing-host-active");
19
+ if (previous?.configurable === false || previousSleep?.configurable === false)
20
+ throw new Error("workflow-testing-host-locked");
21
+ Object.defineProperty(globalThis, key, { configurable: true, value: bridge });
22
+ Object.defineProperty(globalThis, sleepKey, {
23
+ configurable: true,
24
+ value: (milliseconds) => {
25
+ requests.push([
26
+ "sleep",
27
+ milliseconds instanceof Date
28
+ ? { until: milliseconds.toISOString() }
29
+ : { seconds: milliseconds / 1000 },
30
+ ]);
31
+ return Promise.resolve();
32
+ },
33
+ });
34
+ return {
35
+ requests,
36
+ get spent() {
37
+ return budget.spent;
38
+ },
39
+ [Symbol.dispose]() {
40
+ if (previous === undefined)
41
+ Reflect.deleteProperty(globalThis, key);
42
+ else
43
+ Object.defineProperty(globalThis, key, previous);
44
+ if (previousSleep === undefined)
45
+ Reflect.deleteProperty(globalThis, sleepKey);
46
+ else
47
+ Object.defineProperty(globalThis, sleepKey, previousSleep);
48
+ },
49
+ };
50
+ }
51
+ function scenarioBridge(scenario) {
52
+ const requests = [];
53
+ const waits = [...(scenario.waits ?? [])];
54
+ const decisions = [...(scenario.decisions ?? [])];
55
+ const budget = { spent: 0 };
56
+ const bridge = {
57
+ ...scenarioEffects(scenario, { requests, budget }),
58
+ ...scenarioCommandWaits(scenario, requests),
59
+ gate: (request) => {
60
+ requests.push(["gate", request]);
61
+ return Promise.resolve(scenario.gate ?? {
62
+ kind: "unavailable",
63
+ reason: "no-scenario-result",
64
+ });
65
+ },
66
+ waitForDecision: (request) => {
67
+ requests.push(["waitForDecision", request]);
68
+ const decision = decisions.shift();
69
+ if (decision === undefined)
70
+ return Promise.reject(new Error("no-scenario-result"));
71
+ return Promise.resolve(decision);
72
+ },
73
+ waitForRun: (request) => {
74
+ requests.push(["waitForRun", request]);
75
+ return Promise.resolve(waits.shift() ?? {
76
+ kind: "unavailable",
77
+ reason: "no-scenario-result",
78
+ promotionId: null,
79
+ });
80
+ },
81
+ };
82
+ return { bridge, requests, budget };
83
+ }
84
+ function scenarioCommandWaits(scenario, requests) {
85
+ const waits = new Map(Object.entries(scenario.commandWaits ?? {}).map(([name, values]) => [
86
+ name,
87
+ [...values],
88
+ ]));
89
+ return {
90
+ openCommandWait: (request) => {
91
+ requests.push(["waitForCommand", request]);
92
+ if (!waits.get(request.name)?.length)
93
+ return Promise.reject(new Error("no-scenario-result"));
94
+ return Promise.resolve({
95
+ kind: "pending",
96
+ deadline: 0,
97
+ nextCheckAt: 0,
98
+ });
99
+ },
100
+ checkCommandWait: (request) => {
101
+ const result = waits.get(request.name)?.shift();
102
+ if (result === undefined)
103
+ return Promise.reject(new Error("no-scenario-result"));
104
+ return Promise.resolve(result);
105
+ },
106
+ };
107
+ }
108
+ function scenarioEffects(scenario, state) {
109
+ const { requests, budget } = state;
110
+ const effects = new Map(Object.entries(scenario.effects ?? {}).map(([key, values]) => [
111
+ key,
112
+ [...values],
113
+ ]));
114
+ return {
115
+ effect: (request) => {
116
+ requests.push(["effect", request]);
117
+ const refusal = spend(scenario, { budget, request });
118
+ if (refusal !== undefined)
119
+ return Promise.resolve(refusal);
120
+ const result = scenario.effects === undefined
121
+ ? scenario.turn
122
+ : effects.get(request.capability + " " + request.method)?.shift();
123
+ return Promise.resolve(result ?? { kind: "unavailable", reason: "no-scenario-result" });
124
+ },
125
+ handoff: (request) => {
126
+ requests.push(["handoff", request]);
127
+ const refusal = spend(scenario, {
128
+ budget,
129
+ request: { capability: "handoff", units: 1 },
130
+ });
131
+ if (refusal !== undefined)
132
+ return Promise.resolve(refusal);
133
+ return Promise.resolve(effects.get("handoff")?.shift() ?? {
134
+ kind: "completed",
135
+ operationId: "handoff",
136
+ receipt: null,
137
+ result: "target-run",
138
+ });
139
+ },
140
+ };
141
+ }
142
+ function spend(scenario, effect) {
143
+ const { budget, request } = effect;
144
+ if (scenario.effectLimit === undefined)
145
+ return undefined;
146
+ const allowed = authorizeEffect({ capabilities: ["claude", "github", "command", "handoff"] }, {
147
+ budget: { limit: scenario.effectLimit, spent: budget.spent },
148
+ request,
149
+ });
150
+ if (allowed.kind === "rejected")
151
+ return { kind: "refused", reason: allowed.reason };
152
+ budget.spent = allowed.spent;
153
+ return undefined;
154
+ }
155
+ function scenarioScript(scenario) {
156
+ const workflow = scenario.workflow.startsWith("file:")
157
+ ? scenario.workflow
158
+ : pathToFileURL(resolve(scenario.workflow)).href;
159
+ return `import { writeFile } from "node:fs/promises";
160
+ import { fakeStepBridge } from ${JSON.stringify(import.meta.url)};
161
+ import * as workflows from ${JSON.stringify(workflow)};
162
+ const given = ${JSON.stringify(scenario)};
163
+ const workflow = workflows[given.exportName];
164
+ if (typeof workflow !== "function") throw new Error("workflow-test-export-missing");
165
+ using bridge = fakeStepBridge(given);
166
+ const outcome = await workflow(given.input);
167
+ await writeFile(process.argv[2], JSON.stringify({ outcome, requests: bridge.requests,
168
+ ...(given.effectLimit === undefined ? {} : { spent: bridge.spent }) }));`;
169
+ }
170
+ export async function runScenario(scenario) {
171
+ const temporary = await mkdtemp(join(tmpdir(), "cloving-scenario-"));
172
+ try {
173
+ const script = join(temporary, "scenario.mjs");
174
+ const resultFile = join(temporary, "result.json");
175
+ await writeFile(script, scenarioScript(scenario));
176
+ await executeScenario(script, resultFile);
177
+ const value = JSON.parse(await readFile(resultFile, "utf8"));
178
+ if (!scenarioResult(value))
179
+ throw new Error("invalid-workflow-scenario-result");
180
+ return value;
181
+ }
182
+ finally {
183
+ await rm(temporary, { recursive: true, force: true });
184
+ }
185
+ }
186
+ function executeScenario(script, resultFile) {
187
+ return new Promise((settle, reject) => {
188
+ const child = spawn(process.execPath, [
189
+ "--experimental-strip-types",
190
+ "--import",
191
+ workflowTestLoader(),
192
+ script,
193
+ resultFile,
194
+ ], {
195
+ env: { ...process.env, NODE_TEST_CONTEXT: undefined },
196
+ stdio: ["ignore", "ignore", "pipe"],
197
+ });
198
+ let diagnostics = "";
199
+ child.stderr.setEncoding("utf8");
200
+ child.stderr.on("data", (text) => {
201
+ diagnostics = (diagnostics + text).slice(-65536);
202
+ });
203
+ child.once("error", reject);
204
+ child.once("close", (code, signal) => {
205
+ if (code === 0)
206
+ settle();
207
+ else
208
+ reject(new Error(`workflow-scenario-failed: ${String(code ?? signal)}\n${diagnostics}`));
209
+ });
210
+ });
211
+ }
@@ -0,0 +1,9 @@
1
+ import { type TicketStatus } from "./ticket-status.ts";
2
+ export interface StreamedTicketStatus {
3
+ readonly ticketStatus: TicketStatus;
4
+ readonly ticketStatusTooLarge?: true;
5
+ }
6
+ export declare function ticketStatusStream(limit: number): {
7
+ write: (chunk: string) => void;
8
+ result: () => StreamedTicketStatus;
9
+ };
@@ -0,0 +1,94 @@
1
+ import { ticketStatus } from "./ticket-status.js";
2
+ function emptyLine() {
3
+ return {
4
+ text: "",
5
+ length: 0,
6
+ contentLength: 0,
7
+ breaks: 0,
8
+ trailingCarriage: false,
9
+ };
10
+ }
11
+ function remainingLine(stream, line) {
12
+ if (line.length <= stream.limit && line.text === "Remaining:") {
13
+ stream.remaining = [];
14
+ stream.characters = 0;
15
+ stream.valid = true;
16
+ return;
17
+ }
18
+ if (!stream.valid)
19
+ return;
20
+ if (line.breaks > 0 || !/^- \S.*$/.test(line.text)) {
21
+ stream.valid = false;
22
+ return;
23
+ }
24
+ stream.characters = Math.min(stream.limit + 1, stream.characters + line.length + 1);
25
+ if (stream.characters <= stream.limit)
26
+ stream.remaining.push(line.text.slice(2));
27
+ }
28
+ function receivedLine(stream) {
29
+ const line = stream.line;
30
+ stream.line = emptyLine();
31
+ if (line.contentLength === 0)
32
+ return;
33
+ if (line.trailingCarriage)
34
+ line.breaks--;
35
+ if (line.length <= stream.limit + 1 && line.trailingCarriage) {
36
+ line.text = line.text.slice(0, -1);
37
+ line.length--;
38
+ }
39
+ if (stream.last !== undefined)
40
+ remainingLine(stream, stream.last);
41
+ if (/^Ticket status:/i.test(line.text))
42
+ stream.statuses = Math.min(2, stream.statuses + 1);
43
+ stream.last = line;
44
+ }
45
+ function writeStatus(stream, chunk) {
46
+ const parts = chunk.split("\n");
47
+ for (const [index, part] of parts.entries()) {
48
+ const { line, limit } = stream;
49
+ const content = part.trimEnd();
50
+ line.breaks = Math.min(2, line.breaks + (part.match(/[\r\u2028\u2029]/g)?.length ?? 0));
51
+ if (part !== "")
52
+ line.trailingCarriage = part.endsWith("\r");
53
+ if (content !== "")
54
+ line.contentLength = Math.min(limit + 1, line.length + content.length);
55
+ line.text = (line.text + part).slice(0, limit + 1);
56
+ line.length = Math.min(limit + 2, line.length + part.length);
57
+ if (index < parts.length - 1)
58
+ receivedLine(stream);
59
+ }
60
+ }
61
+ function statusResult(stream) {
62
+ receivedLine(stream);
63
+ const last = stream.last;
64
+ if (stream.statuses !== 1 || last === undefined)
65
+ return { ticketStatus: ticketStatus("") };
66
+ const status = last.contentLength > stream.limit ? "" : last.text.trimEnd();
67
+ if (status !== "Ticket status: partial" || !stream.valid)
68
+ return { ticketStatus: ticketStatus(status) };
69
+ if (stream.characters > stream.limit)
70
+ return {
71
+ ticketStatus: ticketStatus(status),
72
+ ticketStatusTooLarge: true,
73
+ };
74
+ return {
75
+ ticketStatus: ticketStatus(`Remaining:\n${stream.remaining.map((item) => `- ${item}`).join("\n")}\n${status}`),
76
+ };
77
+ }
78
+ export function ticketStatusStream(limit) {
79
+ const stream = {
80
+ limit,
81
+ line: emptyLine(),
82
+ last: undefined,
83
+ statuses: 0,
84
+ remaining: [],
85
+ characters: 0,
86
+ valid: false,
87
+ };
88
+ return {
89
+ write: (chunk) => {
90
+ writeStatus(stream, chunk);
91
+ },
92
+ result: () => statusResult(stream),
93
+ };
94
+ }
@@ -1,4 +1,5 @@
1
- import { type WorkerUsage } from "./worker-usage.ts";
1
+ import { type WorkerUsage, type WorkerModelUsage } from "./worker-usage.ts";
2
+ import type { NativeHarness } from "./harness-defaults.ts";
2
3
  export interface TokenPrice {
3
4
  readonly input: number;
4
5
  readonly cachedInput: number;
@@ -15,7 +16,14 @@ export declare function parseFallbackModels(value: string | undefined): readonly
15
16
  export declare function priceForModel(prices: TokenPrices, model: string | null): TokenPrice | undefined;
16
17
  export declare function commandModel(command: readonly string[]): string | null;
17
18
  export declare function replaceCommandModel(command: readonly string[], model: string): readonly string[];
18
- export declare function estimatedCostUsd(usage: WorkerUsage, pricing: {
19
- readonly worker: "claude" | "codex";
19
+ interface SinglePricing {
20
+ readonly worker: NativeHarness;
20
21
  readonly price: TokenPrice | undefined;
21
- }): number | null;
22
+ }
23
+ interface ModelPricing {
24
+ readonly worker: "gemini";
25
+ readonly models: readonly WorkerModelUsage[];
26
+ readonly prices: TokenPrices;
27
+ }
28
+ export declare function estimatedCostUsd(usage: WorkerUsage, pricing: SinglePricing | ModelPricing): number | null;
29
+ export {};
@@ -1,4 +1,4 @@
1
- import { priceOf, usageOf } from "./worker-usage.js";
1
+ import { priceOf, sumPrices, usageOf, } from "./worker-usage.js";
2
2
  import { record } from "./protocol.js";
3
3
  export const builtInPriceTable = {
4
4
  date: "2026-10-18",
@@ -90,16 +90,29 @@ export function replaceCommandModel(command, model) {
90
90
  });
91
91
  }
92
92
  export function estimatedCostUsd(usage, pricing) {
93
+ return "models" in pricing
94
+ ? modelCostUsd(pricing)
95
+ : singleCostUsd(usage, pricing);
96
+ }
97
+ function modelCostUsd(pricing) {
98
+ return sumPrices(pricing.models.map(({ model, usage: counts }) => singleCostUsd(counts, {
99
+ worker: "gemini",
100
+ price: priceForModel(pricing.prices, model),
101
+ })));
102
+ }
103
+ function singleCostUsd(usage, pricing) {
93
104
  const { worker, price } = pricing;
94
105
  const counts = usageOf(usage);
95
106
  const cached = counts.cache_read_input_tokens;
96
107
  const output = counts.output_tokens;
97
108
  if (price === undefined ||
109
+ (worker === "cursor-agent" && counts.cache_creation_input_tokens !== 0) ||
98
110
  counts.input_tokens === null ||
99
111
  cached === null ||
100
112
  output === null)
101
113
  return null;
102
- const input = counts.input_tokens - (worker === "codex" ? cached : 0);
114
+ const input = counts.input_tokens -
115
+ (worker === "codex" || worker === "gemini" ? cached : 0);
103
116
  if (input < 0)
104
117
  return null;
105
118
  return priceOf((input / 1_000_000) * price.input +
@@ -1,4 +1,5 @@
1
1
  export interface TurnProfile {
2
+ readonly harness?: string;
2
3
  readonly env?: Readonly<Record<string, string>>;
3
4
  readonly allowedTools?: readonly string[];
4
5
  readonly model?: string;
@@ -1,4 +1,5 @@
1
1
  const fields = [
2
+ "harness",
2
3
  "env",
3
4
  "allowedTools",
4
5
  "model",
@@ -29,6 +30,8 @@ function environment(value) {
29
30
  text(item)));
30
31
  }
31
32
  function validField(name, value) {
33
+ if (name === "harness")
34
+ return typeof value === "string" && /^[a-z][a-z0-9-]{0,63}$/.test(value);
32
35
  if (name === "env")
33
36
  return environment(value);
34
37
  if (name === "allowedTools" || name === "workflows")
@@ -71,7 +74,11 @@ function retained(argumentsList, values) {
71
74
  for (let index = 0; index < argumentsList.length;) {
72
75
  const argument = argumentsList[index] ?? "";
73
76
  const name = argument.split("=")[0] ?? "";
74
- const flag = name === "--allowed-tools" ? "--allowedTools" : name;
77
+ const aliases = {
78
+ "--allowed-tools": "--allowedTools",
79
+ "-m": "--model",
80
+ };
81
+ const flag = aliases[name] ?? name;
75
82
  if (!values.has(flag)) {
76
83
  kept.push(argument);
77
84
  index += 1;
@@ -1,9 +1,14 @@
1
+ export type RetryKind = "capacity" | "network";
1
2
  export interface WorkerUsage {
3
+ readonly cache_creation_input_tokens?: number | null;
2
4
  readonly input_tokens: number | null;
3
5
  readonly cache_read_input_tokens: number | null;
4
6
  readonly output_tokens: number | null;
5
7
  }
6
8
  export interface WorkerTurnUsage {
9
+ readonly model?: string;
10
+ readonly summary?: string;
11
+ readonly harness?: string;
7
12
  readonly attempts?: readonly WorkerAttemptUsage[];
8
13
  readonly estimatedCostUsd: number | null;
9
14
  readonly operationId: string;
@@ -11,12 +16,20 @@ export interface WorkerTurnUsage {
11
16
  readonly costUsd: number | null;
12
17
  }
13
18
  export interface WorkerAttemptUsage {
19
+ readonly resumedAfter?: "daemon-restart";
20
+ readonly models?: readonly WorkerModelUsage[];
21
+ readonly retryKind?: RetryKind | null;
14
22
  readonly attempt: number;
15
23
  readonly model: string | null;
16
24
  readonly usage: WorkerUsage;
17
25
  readonly costUsd: number | null;
18
26
  readonly estimatedCostUsd: number | null;
19
27
  }
28
+ export interface WorkerModelUsage {
29
+ readonly model: string;
30
+ readonly usage: WorkerUsage;
31
+ }
32
+ export declare function modelUsageOf(value: unknown): readonly WorkerModelUsage[] | undefined;
20
33
  export interface WorkerTotals {
21
34
  readonly estimatedCostUsd: number | null;
22
35
  readonly workerTurns: readonly WorkerTurnUsage[];
@@ -29,3 +42,7 @@ export declare function usageOf(value: unknown): WorkerUsage;
29
42
  export declare function sumUsage(values: readonly WorkerUsage[]): WorkerUsage;
30
43
  export declare function sumPrices(values: readonly (number | null)[]): number | null;
31
44
  export declare function workerTotals(workerTurns: readonly WorkerTurnUsage[]): WorkerTotals;
45
+ export declare function attemptsOf(value: unknown): readonly WorkerAttemptUsage[] | undefined;
46
+ export declare function attemptFields(value: unknown): {
47
+ readonly attempts?: readonly WorkerAttemptUsage[];
48
+ };
@@ -1,3 +1,15 @@
1
+ export function modelUsageOf(value) {
2
+ if (!Array.isArray(value))
3
+ return undefined;
4
+ return value.flatMap((entry) => {
5
+ if (typeof entry !== "object" || entry === null)
6
+ return [];
7
+ const model = Reflect.get(entry, "model");
8
+ if (typeof model !== "string")
9
+ return [];
10
+ return [{ model, usage: usageOf(Reflect.get(entry, "usage")) }];
11
+ });
12
+ }
1
13
  export function priceOf(value) {
2
14
  return typeof value === "number" && Number.isFinite(value) && value >= 0
3
15
  ? value
@@ -11,6 +23,11 @@ export function tokenCount(value) {
11
23
  export function usageOf(value) {
12
24
  const fields = typeof value === "object" && value !== null ? value : {};
13
25
  return {
26
+ ...(Object.hasOwn(fields, "cache_creation_input_tokens")
27
+ ? {
28
+ cache_creation_input_tokens: tokenCount(Reflect.get(fields, "cache_creation_input_tokens")),
29
+ }
30
+ : {}),
14
31
  input_tokens: tokenCount(Reflect.get(fields, "input_tokens")),
15
32
  cache_read_input_tokens: tokenCount(Reflect.get(fields, "cache_read_input_tokens")),
16
33
  output_tokens: tokenCount(Reflect.get(fields, "output_tokens")),
@@ -23,6 +40,11 @@ function total(values) {
23
40
  }
24
41
  export function sumUsage(values) {
25
42
  return {
43
+ ...(values.some((value) => Object.hasOwn(value, "cache_creation_input_tokens"))
44
+ ? {
45
+ cache_creation_input_tokens: total(values.map((value) => value.cache_creation_input_tokens ?? null)),
46
+ }
47
+ : {}),
26
48
  input_tokens: total(values.map((value) => value.input_tokens)),
27
49
  cache_read_input_tokens: total(values.map((value) => value.cache_read_input_tokens)),
28
50
  output_tokens: total(values.map((value) => value.output_tokens)),
@@ -42,3 +64,41 @@ export function workerTotals(workerTurns) {
42
64
  estimatedCostUsd: sumPrices(workerTurns.map((turn) => turn.estimatedCostUsd)),
43
65
  };
44
66
  }
67
+ function retryKindField(value) {
68
+ return value === null || value === "capacity" || value === "network"
69
+ ? { retryKind: value }
70
+ : {};
71
+ }
72
+ export function attemptsOf(value) {
73
+ if (!Array.isArray(value))
74
+ return undefined;
75
+ return value.flatMap((entry) => {
76
+ const fields = typeof entry === "object" && entry !== null ? entry : {};
77
+ const field = (name) => Reflect.get(fields, name);
78
+ const attempt = tokenCount(field("attempt"));
79
+ const model = field("model");
80
+ const models = modelUsageOf(field("models"));
81
+ if (attempt === null ||
82
+ attempt === 0 ||
83
+ (model !== null && typeof model !== "string"))
84
+ return [];
85
+ return [
86
+ {
87
+ ...retryKindField(field("retryKind")),
88
+ ...(field("resumedAfter") === "daemon-restart"
89
+ ? { resumedAfter: "daemon-restart" }
90
+ : {}),
91
+ attempt,
92
+ model,
93
+ ...(models === undefined ? {} : { models }),
94
+ usage: usageOf(field("usage")),
95
+ costUsd: priceOf(field("costUsd")),
96
+ estimatedCostUsd: priceOf(field("estimatedCostUsd")),
97
+ },
98
+ ];
99
+ });
100
+ }
101
+ export function attemptFields(value) {
102
+ const attempts = attemptsOf(value);
103
+ return attempts === undefined ? {} : { attempts };
104
+ }
@@ -1,3 +1,4 @@
1
+ import type { CommandWaits } from "./workflow-declaration.ts";
1
2
  export interface ToolchainIdentity {
2
3
  readonly sdk: string;
3
4
  readonly world: string;
@@ -23,11 +24,15 @@ export interface AdmissionPolicy {
23
24
  readonly capabilities: readonly string[];
24
25
  }
25
26
  export interface ExecutionManifest {
27
+ readonly queue?: boolean;
26
28
  readonly name: string;
27
29
  readonly workflowId: string;
28
30
  readonly steps: readonly string[];
29
31
  readonly capabilities: readonly string[];
30
32
  readonly handoffs?: readonly string[];
33
+ readonly commands?: readonly string[];
34
+ readonly commandWaits?: CommandWaits;
35
+ readonly bundleDigest?: string;
31
36
  readonly artifacts: Readonly<Record<string, string>>;
32
37
  readonly resources: Readonly<Record<string, string>>;
33
38
  readonly toolchain: ToolchainIdentity;
@@ -1,4 +1,4 @@
1
- import { type WorkflowDeclaration } from "./workflow-declaration.ts";
1
+ import { type WorkflowQueueCode, type WorkflowDeclaration } from "./workflow-declaration.ts";
2
2
  export interface CandidateDeclaration {
3
3
  readonly workflow: WorkflowDeclaration;
4
4
  readonly methods: Readonly<Record<string, readonly string[]>>;
@@ -6,12 +6,15 @@ export interface CandidateDeclaration {
6
6
  export interface CandidateImport {
7
7
  readonly module: string;
8
8
  readonly names: readonly string[];
9
+ readonly source?: string;
9
10
  }
10
11
  export interface CandidateEffect {
11
12
  readonly capability: string | null;
12
13
  readonly method: string | null;
13
14
  }
14
15
  export interface CandidateAnalysis {
16
+ readonly commandWaits?: readonly (string | null)[];
17
+ readonly localSources?: readonly string[];
15
18
  readonly imports: readonly CandidateImport[];
16
19
  readonly effects: readonly CandidateEffect[];
17
20
  readonly directEffects: readonly string[];
@@ -20,10 +23,13 @@ export interface CandidateAnalysis {
20
23
  readonly knownUnitTotal: number;
21
24
  }
22
25
  export type InstalledWorkflowExports = Readonly<Record<string, readonly string[]>>;
23
- export type WorkflowCandidateCode = "invalid-declaration" | "forbidden-import" | "missing-export" | "unsupported-source" | "dynamic-effect" | "undeclared-effect" | "effect-limit" | "direct-effect";
26
+ export type WorkflowCandidateCode = WorkflowQueueCode | "invalid-declaration" | "forbidden-import" | "missing-export" | "unsupported-source" | "dynamic-effect" | "undeclared-effect" | "effect-limit" | "direct-effect";
24
27
  export interface WorkflowCandidateInput {
25
28
  readonly declaration: unknown;
26
29
  readonly analysis: CandidateAnalysis;
27
30
  readonly installedExports: InstalledWorkflowExports;
28
31
  }
32
+ export declare function workflowHelperPath(source: string, imported: string): string | undefined;
33
+ export declare function isCandidateDeclaration(value: unknown): value is CandidateDeclaration;
29
34
  export declare function checkWorkflowCandidate(input: WorkflowCandidateInput): readonly WorkflowCandidateCode[];
35
+ export declare function candidateDeclarationRefusals(value: unknown): readonly WorkflowCandidateCode[];