cloving 1.3.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 (396) hide show
  1. package/README.md +235 -206
  2. package/dist/src/agent-harness-shell.d.ts +2 -1
  3. package/dist/src/agent-harness-shell.js +8 -5
  4. package/dist/src/authority/command-wait-checks.d.ts +8 -0
  5. package/dist/src/authority/command-wait-checks.js +88 -0
  6. package/dist/src/authority/command-wait-results.d.ts +15 -0
  7. package/dist/src/authority/command-wait-results.js +73 -0
  8. package/dist/src/authority/command-wait-view.d.ts +21 -0
  9. package/dist/src/authority/command-wait-view.js +34 -0
  10. package/dist/src/authority/command-waits.d.ts +39 -0
  11. package/dist/src/authority/command-waits.js +97 -0
  12. package/dist/src/authority/commands.js +22 -1
  13. package/dist/src/authority/dispatch-decision.d.ts +8 -0
  14. package/dist/src/authority/dispatch-decision.js +26 -1
  15. package/dist/src/authority/effect-requests.js +6 -3
  16. package/dist/src/authority/effect-results.js +4 -2
  17. package/dist/src/authority/history-state.d.ts +2 -0
  18. package/dist/src/authority/history-state.js +13 -1
  19. package/dist/src/authority/instants.d.ts +1 -0
  20. package/dist/src/authority/instants.js +21 -0
  21. package/dist/src/authority/reduction-state.d.ts +2 -0
  22. package/dist/src/authority/reduction-state.js +5 -0
  23. package/dist/src/authority/reduction.js +24 -0
  24. package/dist/src/authority/status-input.d.ts +2 -0
  25. package/dist/src/authority/status.d.ts +2 -0
  26. package/dist/src/authority/status.js +1 -0
  27. package/dist/src/authority/stop-sequence.d.ts +1 -0
  28. package/dist/src/authority/stop-sequence.js +2 -1
  29. package/dist/src/authority/transitions.d.ts +6 -4
  30. package/dist/src/authority/transitions.js +7 -0
  31. package/dist/src/broker/actor/authority-queries.d.ts +2 -1
  32. package/dist/src/broker/actor/authority-queries.js +14 -5
  33. package/dist/src/broker/actor/authority-receipts.js +1 -1
  34. package/dist/src/broker/actor/authority-settings.js +2 -2
  35. package/dist/src/broker/actor/authority-upgrades.d.ts +19 -2
  36. package/dist/src/broker/actor/authority-upgrades.js +7 -2
  37. package/dist/src/broker/actor/delivery-intents.js +2 -0
  38. package/dist/src/broker/actor/effect-delivery.d.ts +1 -1
  39. package/dist/src/broker/actor/effect-delivery.js +15 -2
  40. package/dist/src/broker/actor/effect-plan.js +11 -2
  41. package/dist/src/broker/actor/effect-queries.d.ts +4 -0
  42. package/dist/src/broker/actor/effect-queries.js +9 -1
  43. package/dist/src/broker/actor/effect-turn.js +2 -0
  44. package/dist/src/broker/actor/stop-plan.js +9 -3
  45. package/dist/src/broker/actor/stop-turn.d.ts +2 -0
  46. package/dist/src/broker/actor/stop-turn.js +24 -11
  47. package/dist/src/broker/actor/turn-draft.d.ts +1 -0
  48. package/dist/src/broker/actor/turn-draft.js +4 -0
  49. package/dist/src/broker/actor/turn-state.js +5 -1
  50. package/dist/src/broker/authority-admission.js +60 -0
  51. package/dist/src/broker/authority-restore.d.ts +2 -0
  52. package/dist/src/broker/authority-restore.js +35 -1
  53. package/dist/src/broker/command-wait-restore.d.ts +31 -0
  54. package/dist/src/broker/command-wait-restore.js +86 -0
  55. package/dist/src/broker/decision-restore.d.ts +1 -1
  56. package/dist/src/broker/decision-restore.js +1 -0
  57. package/dist/src/broker/effect-upgrade.d.ts +2 -0
  58. package/dist/src/broker/effect-upgrade.js +8 -2
  59. package/dist/src/cli/arguments.d.ts +13 -0
  60. package/dist/src/cli/arguments.js +42 -3
  61. package/dist/src/cli/chat-stores.d.ts +2 -0
  62. package/dist/src/cli/chat-stores.js +113 -0
  63. package/dist/src/cli/client.d.ts +4 -1
  64. package/dist/src/cli/client.js +9 -3
  65. package/dist/src/cli/command-requests.d.ts +17 -0
  66. package/dist/src/cli/command-requests.js +43 -0
  67. package/dist/src/cli/command-waits.d.ts +9 -0
  68. package/dist/src/cli/command-waits.js +51 -0
  69. package/dist/src/cli/commands.js +14 -41
  70. package/dist/src/cli/config-file.d.ts +2 -2
  71. package/dist/src/cli/config-file.js +4 -2
  72. package/dist/src/cli/doctor-workflows.d.ts +5 -2
  73. package/dist/src/cli/doctor-workflows.js +12 -7
  74. package/dist/src/cli/doctor.js +6 -9
  75. package/dist/src/cli/harness-probes.d.ts +2 -0
  76. package/dist/src/cli/harness-probes.js +1 -1
  77. package/dist/src/cli/harness-processes.d.ts +6 -0
  78. package/dist/src/cli/harness-processes.js +36 -0
  79. package/dist/src/cli/init-command.d.ts +9 -0
  80. package/dist/src/cli/init-command.js +52 -0
  81. package/dist/src/cli/init-prompt-command.d.ts +10 -0
  82. package/dist/src/cli/init-prompt-command.js +145 -0
  83. package/dist/src/cli/init-prompt.d.ts +35 -0
  84. package/dist/src/cli/init-prompt.js +74 -0
  85. package/dist/src/cli/init-selection.d.ts +13 -0
  86. package/dist/src/cli/init-selection.js +75 -0
  87. package/dist/src/cli/main.d.ts +2 -0
  88. package/dist/src/cli/main.js +37 -7
  89. package/dist/src/cli/mcp-server.d.ts +1 -0
  90. package/dist/src/cli/mcp-server.js +156 -0
  91. package/dist/src/cli/mcp-tools.d.ts +15 -0
  92. package/dist/src/cli/mcp-tools.js +80 -0
  93. package/dist/src/cli/render.d.ts +1 -1
  94. package/dist/src/cli/render.js +17 -30
  95. package/dist/src/cli/report-ci-jobs.d.ts +23 -0
  96. package/dist/src/cli/report-ci-jobs.js +103 -0
  97. package/dist/src/cli/report-ci-usage.d.ts +9 -0
  98. package/dist/src/cli/report-ci-usage.js +185 -0
  99. package/dist/src/cli/report-ci.d.ts +13 -0
  100. package/dist/src/cli/report-ci.js +74 -0
  101. package/dist/src/cli/report-closures.d.ts +6 -0
  102. package/dist/src/cli/report-closures.js +97 -0
  103. package/dist/src/cli/report-flow.d.ts +7 -0
  104. package/dist/src/cli/report-flow.js +122 -0
  105. package/dist/src/cli/report-github-reader.d.ts +29 -0
  106. package/dist/src/cli/report-github-reader.js +157 -0
  107. package/dist/src/cli/report-github.d.ts +15 -8
  108. package/dist/src/cli/report-github.js +131 -150
  109. package/dist/src/cli/report-operator.d.ts +3 -0
  110. package/dist/src/cli/report-operator.js +40 -0
  111. package/dist/src/cli/report-ready.d.ts +3 -0
  112. package/dist/src/cli/report-ready.js +96 -0
  113. package/dist/src/cli/report-text.d.ts +9 -0
  114. package/dist/src/cli/report-text.js +33 -0
  115. package/dist/src/cli/report.d.ts +1 -0
  116. package/dist/src/cli/report.js +104 -27
  117. package/dist/src/cli/runtime-arguments.d.ts +2 -1
  118. package/dist/src/cli/runtime-arguments.js +7 -2
  119. package/dist/src/cli/schedule-arguments.d.ts +14 -0
  120. package/dist/src/cli/schedule-arguments.js +26 -0
  121. package/dist/src/cli/schedule-render.d.ts +22 -0
  122. package/dist/src/cli/schedule-render.js +73 -0
  123. package/dist/src/cli/terminal-text.d.ts +3 -0
  124. package/dist/src/cli/terminal-text.js +28 -0
  125. package/dist/src/cli/usage-render.d.ts +1 -0
  126. package/dist/src/cli/usage-render.js +28 -1
  127. package/dist/src/cli/usage.d.ts +1 -1
  128. package/dist/src/cli/usage.js +50 -7
  129. package/dist/src/cli/watch-actions.js +2 -2
  130. package/dist/src/cli/watch-board-view.js +19 -2
  131. package/dist/src/cli/watch-board.d.ts +4 -2
  132. package/dist/src/cli/watch-board.js +53 -43
  133. package/dist/src/cli/watch-card-forms.d.ts +1 -1
  134. package/dist/src/cli/watch-card-forms.js +11 -10
  135. package/dist/src/cli/watch-client.d.ts +1 -1
  136. package/dist/src/cli/watch-client.js +2 -11
  137. package/dist/src/cli/watch-header-view.d.ts +0 -5
  138. package/dist/src/cli/watch-header-view.js +8 -20
  139. package/dist/src/cli/watch-model.d.ts +4 -1
  140. package/dist/src/cli/watch-model.js +17 -11
  141. package/dist/src/cli/watch-page.js +12 -14
  142. package/dist/src/cli/watch-phases.d.ts +12 -3
  143. package/dist/src/cli/watch-phases.js +68 -11
  144. package/dist/src/cli/watch-pr-board.js +1 -1
  145. package/dist/src/cli/watch-pr-command.d.ts +1 -0
  146. package/dist/src/cli/watch-pull-request.js +18 -8
  147. package/dist/src/cli/watch-reads.d.ts +2 -0
  148. package/dist/src/cli/watch-reads.js +17 -16
  149. package/dist/src/cli/watch-render.d.ts +14 -0
  150. package/dist/src/cli/watch-run-input.d.ts +0 -1
  151. package/dist/src/cli/watch-run-input.js +0 -13
  152. package/dist/src/cli/watch-server.js +6 -6
  153. package/dist/src/cli/watch-view.d.ts +0 -3
  154. package/dist/src/cli/watch-view.js +13 -13
  155. package/dist/src/cli.js +59 -5
  156. package/dist/src/command-wait.d.ts +4 -0
  157. package/dist/src/command-wait.js +45 -0
  158. package/dist/src/configuration-change.d.ts +7 -0
  159. package/dist/src/configuration-change.js +14 -0
  160. package/dist/src/configuration-schema.d.ts +9 -0
  161. package/dist/src/configuration-schema.js +6 -2
  162. package/dist/src/daemon/attachment-file.d.ts +6 -0
  163. package/dist/src/daemon/attachment-file.js +86 -0
  164. package/dist/src/daemon/attachments.d.ts +14 -0
  165. package/dist/src/daemon/attachments.js +17 -0
  166. package/dist/src/daemon/claude-recovery.d.ts +50 -0
  167. package/dist/src/daemon/claude-recovery.js +204 -0
  168. package/dist/src/daemon/claude-stream.d.ts +27 -0
  169. package/dist/src/daemon/claude-stream.js +63 -0
  170. package/dist/src/daemon/claude-turn.d.ts +11 -25
  171. package/dist/src/daemon/claude-turn.js +64 -81
  172. package/dist/src/daemon/claude-worker.d.ts +2 -1
  173. package/dist/src/daemon/claude-worker.js +124 -122
  174. package/dist/src/daemon/daemon-adapters.d.ts +2 -0
  175. package/dist/src/daemon/daemon-adapters.js +26 -2
  176. package/dist/src/daemon/daemon-loops.d.ts +3 -1
  177. package/dist/src/daemon/daemon-loops.js +3 -1
  178. package/dist/src/daemon/daemon.js +14 -6
  179. package/dist/src/daemon/github-attach.d.ts +2 -0
  180. package/dist/src/daemon/github-attach.js +149 -0
  181. package/dist/src/daemon/github-ci-filters.d.ts +6 -0
  182. package/dist/src/daemon/github-ci-filters.js +138 -0
  183. package/dist/src/daemon/github-ci-workflows.d.ts +10 -0
  184. package/dist/src/daemon/github-ci-workflows.js +148 -0
  185. package/dist/src/daemon/github-ci.js +22 -4
  186. package/dist/src/daemon/github-issue-methods.d.ts +2 -0
  187. package/dist/src/daemon/github-issue-methods.js +37 -2
  188. package/dist/src/daemon/github-merge-call.d.ts +2 -1
  189. package/dist/src/daemon/github-merge-call.js +10 -3
  190. package/dist/src/daemon/github-merge.js +52 -24
  191. package/dist/src/daemon/github-methods.js +12 -2
  192. package/dist/src/daemon/github-operation.d.ts +4 -0
  193. package/dist/src/daemon/github-operation.js +6 -0
  194. package/dist/src/daemon/github-worker.d.ts +4 -0
  195. package/dist/src/daemon/github-worker.js +6 -0
  196. package/dist/src/daemon/issue-queue.d.ts +1 -1
  197. package/dist/src/daemon/issue-queue.js +16 -11
  198. package/dist/src/daemon/notify-events.d.ts +6 -0
  199. package/dist/src/daemon/notify-events.js +84 -0
  200. package/dist/src/daemon/notify-journal.js +1 -1
  201. package/dist/src/daemon/notify-message.d.ts +4 -1
  202. package/dist/src/daemon/notify-message.js +36 -0
  203. package/dist/src/daemon/notify.d.ts +1 -1
  204. package/dist/src/daemon/notify.js +5 -77
  205. package/dist/src/daemon/operation-journal.d.ts +1 -0
  206. package/dist/src/daemon/queue-status.d.ts +9 -3
  207. package/dist/src/daemon/queue-status.js +17 -4
  208. package/dist/src/daemon/resume-index-lock.d.ts +13 -0
  209. package/dist/src/daemon/resume-index-lock.js +160 -0
  210. package/dist/src/daemon/resume-worktree.d.ts +7 -0
  211. package/dist/src/daemon/resume-worktree.js +29 -0
  212. package/dist/src/daemon/retrying-turn.d.ts +2 -12
  213. package/dist/src/daemon/retrying-turn.js +98 -172
  214. package/dist/src/daemon/schedule-control.d.ts +26 -0
  215. package/dist/src/daemon/schedule-control.js +110 -0
  216. package/dist/src/daemon/schedule-journal.d.ts +2 -15
  217. package/dist/src/daemon/schedule-journal.js +67 -4
  218. package/dist/src/daemon/ticket-registration.d.ts +2 -7
  219. package/dist/src/daemon/ticket-registration.js +15 -81
  220. package/dist/src/daemon/turn-attempt-journal.d.ts +38 -0
  221. package/dist/src/daemon/turn-attempt-journal.js +136 -0
  222. package/dist/src/daemon/turn-attempts.d.ts +47 -0
  223. package/dist/src/daemon/turn-attempts.js +166 -0
  224. package/dist/src/daemon/turn-report.d.ts +8 -1
  225. package/dist/src/daemon/turn-report.js +39 -0
  226. package/dist/src/daemon/work-tree.d.ts +9 -0
  227. package/dist/src/daemon/work-tree.js +20 -0
  228. package/dist/src/daemon/worker-profile.d.ts +8 -0
  229. package/dist/src/daemon/worker-profile.js +40 -0
  230. package/dist/src/daemon/workflow-schedules.d.ts +3 -0
  231. package/dist/src/daemon/workflow-schedules.js +98 -45
  232. package/dist/src/daemon/worktree-processes.d.ts +9 -0
  233. package/dist/src/daemon/worktree-processes.js +151 -0
  234. package/dist/src/doctor-report.d.ts +3 -5
  235. package/dist/src/doctor-report.js +6 -13
  236. package/dist/src/harness-start.d.ts +15 -0
  237. package/dist/src/harness-start.js +37 -0
  238. package/dist/src/host/command-wait.d.ts +38 -0
  239. package/dist/src/host/command-wait.js +115 -0
  240. package/dist/src/host/start-delivery.d.ts +5 -7
  241. package/dist/src/host/start-delivery.js +3 -15
  242. package/dist/src/host/step-bridge-host.d.ts +2 -0
  243. package/dist/src/host/step-bridge-host.js +21 -0
  244. package/dist/src/operation-identity.d.ts +1 -0
  245. package/dist/src/operation-identity.js +4 -0
  246. package/dist/src/private-config.schema.json +40 -0
  247. package/dist/src/project-config.schema.json +40 -0
  248. package/dist/src/project-settings.d.ts +2 -2
  249. package/dist/src/project-settings.js +3 -1
  250. package/dist/src/queue-spend.d.ts +4 -0
  251. package/dist/src/queue-spend.js +21 -0
  252. package/dist/src/relay/relay-service.d.ts +3 -0
  253. package/dist/src/relay/relay-service.js +5 -3
  254. package/dist/src/report-ci.d.ts +164 -0
  255. package/dist/src/report-ci.js +32 -0
  256. package/dist/src/report-effects.d.ts +15 -0
  257. package/dist/src/report-effects.js +212 -0
  258. package/dist/src/report-flow-types.d.ts +38 -0
  259. package/dist/src/report-flow-types.js +7 -0
  260. package/dist/src/report-flow.d.ts +43 -0
  261. package/dist/src/report-flow.js +193 -0
  262. package/dist/src/report-operator.d.ts +67 -0
  263. package/dist/src/report-operator.js +25 -0
  264. package/dist/src/report-quality.d.ts +221 -0
  265. package/dist/src/report-quality.js +94 -0
  266. package/dist/src/report-ready.d.ts +23 -0
  267. package/dist/src/report-ready.js +117 -0
  268. package/dist/src/report-statistics.d.ts +2 -1
  269. package/dist/src/report-statistics.js +40 -4
  270. package/dist/src/report.d.ts +588 -47
  271. package/dist/src/report.js +156 -41
  272. package/dist/src/schedule-progress.d.ts +33 -0
  273. package/dist/src/schedule-progress.js +45 -0
  274. package/dist/src/service/active-tickets.js +6 -6
  275. package/dist/src/service/command-waits.d.ts +34 -0
  276. package/dist/src/service/command-waits.js +86 -0
  277. package/dist/src/service/expiry.js +2 -0
  278. package/dist/src/service/gateway.js +3 -1
  279. package/dist/src/service/queue-spend.d.ts +6 -0
  280. package/dist/src/service/queue-spend.js +68 -0
  281. package/dist/src/service/replies.d.ts +8 -1
  282. package/dist/src/service/replies.js +11 -0
  283. package/dist/src/service/run-handlers.js +22 -2
  284. package/dist/src/service/run-metadata.d.ts +15 -1
  285. package/dist/src/service/run-metadata.js +93 -8
  286. package/dist/src/service/service.d.ts +4 -0
  287. package/dist/src/service/service.js +8 -8
  288. package/dist/src/service/submission-handler.js +18 -4
  289. package/dist/src/service/worker-port.js +9 -1
  290. package/dist/src/service/worker-totals.d.ts +2 -0
  291. package/dist/src/service/worker-totals.js +1 -1
  292. package/dist/src/step-bridge.d.ts +20 -0
  293. package/dist/src/steps/command-wait.d.ts +12 -0
  294. package/dist/src/steps/command-wait.js +26 -0
  295. package/dist/src/steps/open-decision-wait.d.ts +2 -0
  296. package/dist/src/steps/{decision-gate.js → open-decision-wait.js} +0 -7
  297. package/dist/src/steps/review-by-person.js +4 -1
  298. package/dist/src/steps/wait-for-command.d.ts +3 -0
  299. package/dist/src/steps/wait-for-command.js +17 -0
  300. package/dist/src/steps/wait-for-decision.js +1 -1
  301. package/dist/src/storage/command-wait-rows.d.ts +30 -0
  302. package/dist/src/storage/command-wait-rows.js +96 -0
  303. package/dist/src/storage/decision-snapshots.d.ts +8 -1
  304. package/dist/src/storage/decision-snapshots.js +15 -1
  305. package/dist/src/storage/domain-changes.d.ts +2 -0
  306. package/dist/src/storage/domain-changes.js +3 -0
  307. package/dist/src/storage/domain-schema.d.ts +13 -1
  308. package/dist/src/storage/domain-schema.js +31 -4
  309. package/dist/src/storage/effect-schema.d.ts +1 -0
  310. package/dist/src/storage/effect-schema.js +5 -0
  311. package/dist/src/testing-requests.d.ts +15 -0
  312. package/dist/src/testing-requests.js +93 -0
  313. package/dist/src/testing.d.ts +4 -10
  314. package/dist/src/testing.js +33 -86
  315. package/dist/src/worker-usage.d.ts +1 -0
  316. package/dist/src/worker-usage.js +3 -0
  317. package/dist/src/workflow-candidate.d.ts +1 -0
  318. package/dist/src/workflow-candidate.js +12 -1
  319. package/dist/src/workflow-contracts.d.ts +1 -0
  320. package/dist/src/workflow-contracts.js +9 -2
  321. package/dist/src/workflow-discovery.d.ts +2 -13
  322. package/dist/src/workflow-discovery.js +1 -13
  323. package/dist/src/workflow-refusals.js +0 -1
  324. package/dist/src/workflows.d.ts +1 -1
  325. package/dist/src/workflows.js +1 -1
  326. package/dist/tools/red-green-command.d.ts +1 -0
  327. package/dist/tools/red-green-command.js +174 -0
  328. package/dist/tools/red-green-process.d.ts +10 -0
  329. package/dist/tools/red-green-process.js +59 -0
  330. package/dist/tools/self-host-processes.d.ts +2 -0
  331. package/dist/tools/self-host-processes.js +32 -13
  332. package/dist/tools/self-host-project.js +13 -78
  333. package/dist/tools/self-host-runtime.js +1 -1
  334. package/dist/tools/self-host.js +42 -10
  335. package/dist/tools/template-command.d.ts +1 -0
  336. package/dist/tools/template-command.js +160 -0
  337. package/dist/tools/template-copy.d.ts +11 -0
  338. package/dist/tools/template-copy.js +130 -0
  339. package/dist/tools/template-files.d.ts +17 -0
  340. package/dist/tools/template-files.js +74 -0
  341. package/dist/tools/workflow-bundles.js +1 -0
  342. package/dist/tools/workflow-candidate-counts.js +2 -2
  343. package/dist/tools/workflow-candidate-shape.d.ts +3 -0
  344. package/dist/tools/workflow-candidate-shape.js +90 -0
  345. package/dist/tools/workflow-candidate-source.js +15 -1
  346. package/dist/tools/workflow-candidate-syntax.d.ts +2 -2
  347. package/dist/tools/workflow-candidate-syntax.js +24 -94
  348. package/dist/tools/workflow-command.js +1 -2
  349. package/dist/tools/workflow-folders.d.ts +2 -3
  350. package/dist/tools/workflow-folders.js +1 -1
  351. package/package.json +16 -8
  352. package/templates/develop/README.md +12 -0
  353. package/templates/develop/develop/flow-tests.ts +37 -0
  354. package/templates/develop/develop/pull.ts +5 -1
  355. package/templates/develop/develop/refusal-tests.ts +77 -0
  356. package/templates/develop/develop/turn.ts +2 -1
  357. package/templates/idea-to-issue/README.md +27 -0
  358. package/templates/idea-to-issue/idea-to-issue/effects.ts +52 -0
  359. package/templates/idea-to-issue/idea-to-issue/leave.ts +10 -0
  360. package/templates/idea-to-issue/idea-to-issue/next.ts +29 -0
  361. package/templates/idea-to-issue/idea-to-issue/post-person.ts +18 -0
  362. package/templates/idea-to-issue/idea-to-issue/post.ts +50 -0
  363. package/templates/idea-to-issue/idea-to-issue/queue.ts +27 -0
  364. package/templates/idea-to-issue/idea-to-issue/review.ts +42 -0
  365. package/templates/idea-to-issue/idea-to-issue/scenarios.ts +50 -0
  366. package/templates/idea-to-issue/idea-to-issue/turn.ts +40 -0
  367. package/templates/idea-to-issue/idea-to-issue.declaration.json +16 -0
  368. package/templates/idea-to-issue/idea-to-issue.test.ts +79 -0
  369. package/templates/idea-to-issue/idea-to-issue.ts +49 -0
  370. package/templates/idea-to-issue/template.json +81 -0
  371. package/templates/review-day/README.md +97 -0
  372. package/templates/review-day/review-day/critique.ts +58 -0
  373. package/templates/review-day/review-day/decision.ts +29 -0
  374. package/templates/review-day/review-day/facts.ts +69 -0
  375. package/templates/review-day/review-day/label.ts +29 -0
  376. package/templates/review-day/review-day/next.ts +28 -0
  377. package/templates/review-day/review-day/post.ts +27 -0
  378. package/templates/review-day/review-day/report.ts +98 -0
  379. package/templates/review-day/review-day/rules.ts +12 -0
  380. package/templates/review-day/review-day/scenarios.ts +76 -0
  381. package/templates/review-day/review-day/turn.ts +73 -0
  382. package/templates/review-day/review-day.declaration.json +16 -0
  383. package/templates/review-day/review-day.test.ts +362 -0
  384. package/templates/review-day/review-day.ts +37 -0
  385. package/templates/review-day/template.json +56 -0
  386. package/dist/src/cli/watch-start-view.d.ts +0 -18
  387. package/dist/src/cli/watch-start-view.js +0 -77
  388. package/dist/src/steps/decision-gate.d.ts +0 -3
  389. package/dist/workflows/develop-prd.d.ts +0 -7
  390. package/dist/workflows/develop-prd.js +0 -165
  391. package/dist/workflows/develop-ticket.d.ts +0 -9
  392. package/dist/workflows/develop-ticket.js +0 -207
  393. package/dist/workflows/issue-labels.d.ts +0 -16
  394. package/dist/workflows/issue-labels.js +0 -70
  395. package/dist/workflows/ticket-prompts.d.ts +0 -35
  396. package/dist/workflows/ticket-prompts.js +0 -147
@@ -3,7 +3,10 @@ export interface Interruption {
3
3
  readonly signal: Promise<void>;
4
4
  readonly reply: Reply;
5
5
  }
6
- export declare function send(runtimeDirectory: string, request: ServiceRequest): Promise<Reply>;
6
+ export interface ClientRequest extends ServiceRequest {
7
+ readonly signal?: AbortSignal;
8
+ }
9
+ export declare function send(runtimeDirectory: string, input: ClientRequest): Promise<Reply>;
7
10
  export declare function listRuns(runtimeDirectory: string): Promise<Reply>;
8
11
  export declare function mutate(runtimeDirectory: string, mutation: {
9
12
  readonly request: ServiceRequest;
@@ -41,7 +41,7 @@ function exchange(context) {
41
41
  error: { code: address.reason, detail: address.detail },
42
42
  });
43
43
  return new Promise((settle) => {
44
- const socket = net.connect(address.path);
44
+ const socket = net.connect({ path: address.path, signal: context.signal });
45
45
  let buffered = "";
46
46
  let written = false;
47
47
  socket.setEncoding("utf8");
@@ -86,8 +86,14 @@ function exchange(context) {
86
86
  });
87
87
  }
88
88
  const unobserved = () => undefined;
89
- export function send(runtimeDirectory, request) {
90
- return exchange({ runtimeDirectory, request, onEvent: unobserved });
89
+ export function send(runtimeDirectory, input) {
90
+ const { signal, ...request } = input;
91
+ return exchange({
92
+ runtimeDirectory,
93
+ request,
94
+ onEvent: unobserved,
95
+ ...(signal === undefined ? {} : { signal }),
96
+ });
91
97
  }
92
98
  function listedRuns(result) {
93
99
  const runs = result["runs"];
@@ -0,0 +1,17 @@
1
+ import { type Fields, type Reply, type ServiceError, type ServiceRequest } from "../protocol.ts";
2
+ import { type ClientRequest } from "./client.ts";
3
+ export interface ReadCommand {
4
+ readonly kind: "status" | "questions" | "events";
5
+ readonly runId?: string | null;
6
+ readonly limit?: number | null;
7
+ readonly after?: string | number | null;
8
+ readonly follow?: boolean;
9
+ }
10
+ export declare function readCommandRequest(command: ReadCommand): ServiceRequest;
11
+ export declare function readCommandReply(runtimeDirectory: string, request: ClientRequest): Promise<Reply>;
12
+ export declare function errorObject(error: ServiceError, format?: {
13
+ readonly commandId?: string;
14
+ }): Fields;
15
+ export declare function commandJson(reply: Reply, format?: {
16
+ readonly commandId?: string;
17
+ }): Fields;
@@ -0,0 +1,43 @@
1
+ import {} from "../protocol.js";
2
+ import { send } from "./client.js";
3
+ import { withCiReruns } from "./github-ci-progress.js";
4
+ import { statusJson } from "./render.js";
5
+ export function readCommandRequest(command) {
6
+ const { kind, runId, limit, after, follow } = command;
7
+ const parameters = kind === "questions"
8
+ ? { runId }
9
+ : { runId, limit, after, ...(follow === undefined ? {} : { follow }) };
10
+ return {
11
+ operation: kind,
12
+ parameters: Object.fromEntries(Object.entries(parameters).filter(([, value]) => value !== null && value !== undefined)),
13
+ };
14
+ }
15
+ export async function readCommandReply(runtimeDirectory, request) {
16
+ const reply = await send(runtimeDirectory, request);
17
+ return request.operation === "status"
18
+ ? await withCiReruns(runtimeDirectory, reply)
19
+ : reply;
20
+ }
21
+ export function errorObject(error, format = {}) {
22
+ if (error.code === "event-gap")
23
+ return {
24
+ schemaVersion: 1,
25
+ kind: "event-gap",
26
+ after: error["after"],
27
+ earliestAvailable: error["earliestAvailable"],
28
+ latestSequence: error["latestSequence"],
29
+ };
30
+ return {
31
+ schemaVersion: 1,
32
+ kind: "error",
33
+ ...error,
34
+ commandId: error["commandId"] ?? format.commandId ?? null,
35
+ runId: error["runId"] ?? null,
36
+ currentRevision: error["currentRevision"] ?? null,
37
+ };
38
+ }
39
+ export function commandJson(reply, format = {}) {
40
+ return reply.kind === "error"
41
+ ? errorObject(reply.error, format)
42
+ : statusJson(reply.result);
43
+ }
@@ -0,0 +1,9 @@
1
+ import { type Shown } from "./watch-element.ts";
2
+ import type { CommandWaitView } from "../authority/command-wait-view.ts";
3
+ export declare function shownCommandWaits(value: unknown): readonly CommandWaitView[];
4
+ export declare function commandWaitText(wait: CommandWaitView): string;
5
+ export declare function CommandWaits(props: {
6
+ readonly waits: readonly CommandWaitView[];
7
+ }): Shown;
8
+ export declare function effectBudgetText(spent: number | null | undefined, limit: number | null | undefined): string;
9
+ export declare function activeCommandWait(waits: readonly CommandWaitView[]): boolean;
@@ -0,0 +1,51 @@
1
+ import { element } from "./watch-element.js";
2
+ import { record } from "../protocol.js";
3
+ function waitTime(value) {
4
+ return typeof value === "string" ? value : null;
5
+ }
6
+ export function shownCommandWaits(value) {
7
+ if (!Array.isArray(value))
8
+ return [];
9
+ return value.flatMap((entry) => {
10
+ const fields = record(entry);
11
+ if (typeof fields?.["name"] !== "string" ||
12
+ typeof fields["command"] !== "string" ||
13
+ typeof fields["state"] !== "string" ||
14
+ typeof fields["maximumWaitSeconds"] !== "number" ||
15
+ typeof fields["remainingSeconds"] !== "number" ||
16
+ typeof fields["checkCount"] !== "number")
17
+ return [];
18
+ return [
19
+ {
20
+ name: fields["name"],
21
+ command: fields["command"],
22
+ state: fields["state"],
23
+ maximumWaitSeconds: fields["maximumWaitSeconds"],
24
+ remainingSeconds: fields["remainingSeconds"],
25
+ checkCount: fields["checkCount"],
26
+ startedAt: waitTime(fields["startedAt"]),
27
+ deadline: waitTime(fields["deadline"]),
28
+ nextCheckAt: waitTime(fields["nextCheckAt"]),
29
+ reason: waitTime(fields["reason"]),
30
+ },
31
+ ];
32
+ });
33
+ }
34
+ export function commandWaitText(wait) {
35
+ const reason = wait.reason === null ? "" : ` · ${wait.reason}`;
36
+ return `Command wait ${wait.name} · ${wait.command} · ${wait.state} · ${String(wait.remainingSeconds)} s left · deadline ${wait.deadline ?? "none"} · next check ${wait.nextCheckAt ?? "none"} · checks ${String(wait.checkCount)}${reason}`;
37
+ }
38
+ export function CommandWaits(props) {
39
+ return props.waits.map((wait) => element("p", {
40
+ class: "meta command-wait",
41
+ children: commandWaitText(wait),
42
+ }));
43
+ }
44
+ export function effectBudgetText(spent, limit) {
45
+ return spent == null || limit == null
46
+ ? ""
47
+ : `${String(spent)} of ${String(limit)} effect units`;
48
+ }
49
+ export function activeCommandWait(waits) {
50
+ return waits.some((wait) => wait.state === "waiting");
51
+ }
@@ -1,30 +1,14 @@
1
+ import { commandJson, errorObject, readCommandReply, readCommandRequest, } from "./command-requests.js";
1
2
  import { reportCommand } from "./report.js";
3
+ import { scheduleServiceRequest } from "./schedule-arguments.js";
2
4
  import { withCiReruns } from "./github-ci-progress.js";
3
5
  import { readFile } from "node:fs/promises";
4
6
  import { resolve } from "node:path";
5
7
  import { record, } from "../protocol.js";
6
8
  import { follow, listRuns, mutate, send } from "./client.js";
7
- import { errorText, eventText, pendingSummary, rendered, runOverview, statusJson, } from "./render.js";
9
+ import { errorText, eventText, pendingSummary, rendered, runOverview, } from "./render.js";
8
10
  import { commandUsage } from "./usage.js";
9
11
  import { defaultWatchPort, watchServer } from "./watch-server.js";
10
- function errorObject(error, format) {
11
- if (error.code === "event-gap")
12
- return {
13
- schemaVersion: 1,
14
- kind: "event-gap",
15
- after: error["after"],
16
- earliestAvailable: error["earliestAvailable"],
17
- latestSequence: error["latestSequence"],
18
- };
19
- return {
20
- schemaVersion: 1,
21
- kind: "error",
22
- ...error,
23
- commandId: error["commandId"] ?? format.commandId ?? null,
24
- runId: error["runId"] ?? null,
25
- currentRevision: error["currentRevision"] ?? null,
26
- };
27
- }
28
12
  function failed(environment, failure) {
29
13
  const { terminal } = environment;
30
14
  const shown = errorObject(failure.error, failure.format);
@@ -42,16 +26,14 @@ function presented(environment, outcome) {
42
26
  if (reply.kind === "error")
43
27
  return failed(environment, { error: reply.error, format });
44
28
  environment.terminal.out(format.json
45
- ? `${JSON.stringify(statusJson(reply.result))}\n`
29
+ ? `${JSON.stringify(commandJson(reply))}\n`
46
30
  : rendered(reply.result));
47
31
  return 0;
48
32
  }
49
33
  async function requested(environment, exchange) {
50
- const reply = await send(environment.runtimeDirectory, exchange.request);
34
+ const reply = await readCommandReply(environment.runtimeDirectory, exchange.request);
51
35
  return presented(environment, {
52
- reply: exchange.request.operation === "status"
53
- ? await withCiReruns(environment.runtimeDirectory, reply)
54
- : reply,
36
+ reply,
55
37
  format: exchange.format,
56
38
  });
57
39
  }
@@ -153,10 +135,7 @@ async function status(environment, invocation) {
153
135
  }
154
136
  return requested(environment, {
155
137
  format: { json },
156
- request: {
157
- operation: "status",
158
- parameters: present({ runId, limit, after }),
159
- },
138
+ request: readCommandRequest(invocation),
160
139
  });
161
140
  }
162
141
  function decision(environment, invocation) {
@@ -200,15 +179,7 @@ async function events(environment, invocation) {
200
179
  const print = (event) => {
201
180
  terminal.out(json ? `${JSON.stringify(event)}\n` : `${eventText(event)}\n`);
202
181
  };
203
- const request = {
204
- operation: "events",
205
- parameters: present({
206
- runId: invocation.runId,
207
- after: invocation.after,
208
- limit: invocation.limit,
209
- follow: following,
210
- }),
211
- };
182
+ const request = readCommandRequest(invocation);
212
183
  const reply = following
213
184
  ? await follow(environment.runtimeDirectory, {
214
185
  request,
@@ -240,6 +211,11 @@ export function runtimeCommand(invocation, environment) {
240
211
  return located(invocation, { ...environment, runtimeDirectory });
241
212
  }
242
213
  function located(invocation, environment) {
214
+ if (invocation.kind === "schedule")
215
+ return requested(environment, {
216
+ format: { json: invocation.json },
217
+ request: scheduleServiceRequest(invocation),
218
+ });
243
219
  if (invocation.kind === "report")
244
220
  return reportCommand(invocation, environment);
245
221
  if (invocation.kind === "run")
@@ -256,10 +232,7 @@ function located(invocation, environment) {
256
232
  return watch(environment, invocation);
257
233
  return requested(environment, {
258
234
  format: { json: invocation.json },
259
- request: {
260
- operation: "questions",
261
- parameters: present({ runId: invocation.runId }),
262
- },
235
+ request: readCommandRequest(invocation),
263
236
  });
264
237
  }
265
238
  function watch(environment, invocation) {
@@ -1,3 +1,3 @@
1
- import { type SettingChange } from "../configuration-change.ts";
1
+ import { type SettingChange, type HarnessChange } from "../configuration-change.ts";
2
2
  export declare function readConfigFile(path: string): Promise<string | undefined>;
3
- export declare function changeConfigFile(path: string, change: SettingChange): Promise<void>;
3
+ export declare function changeConfigFile(path: string, change: SettingChange | HarnessChange): Promise<void>;
@@ -2,7 +2,7 @@ import { randomUUID } from "node:crypto";
2
2
  import { chmod, mkdir, readFile, rename, rm, stat, writeFile, } from "node:fs/promises";
3
3
  import { dirname } from "node:path";
4
4
  import { acquireSettingsLock, releaseSettingsLock } from "./config-lock.js";
5
- import { changedConfiguration, } from "../configuration-change.js";
5
+ import { changedConfiguration, selectedHarnessConfiguration, } from "../configuration-change.js";
6
6
  export async function readConfigFile(path) {
7
7
  try {
8
8
  return await readFile(path, "utf8");
@@ -38,7 +38,9 @@ export async function changeConfigFile(path, change) {
38
38
  }
39
39
  async function writeChange(path, change) {
40
40
  const previous = await readConfigFile(path);
41
- const next = changedConfiguration(previous, change);
41
+ const next = "harness" in change
42
+ ? selectedHarnessConfiguration(previous, change.harness)
43
+ : changedConfiguration(previous, change);
42
44
  const mode = previous !== undefined && change.scope === "project"
43
45
  ? (await stat(path)).mode & 0o777
44
46
  : 0o600;
@@ -1,3 +1,6 @@
1
- import type { DoctorWorkflow } from "../doctor-report.ts";
2
- export declare const bundledDoctorWorkflows: DoctorWorkflow[];
1
+ import type { DoctorObservation, DoctorWorkflow } from "../doctor-report.ts";
2
+ export declare function workflowObservation(context: {
3
+ readonly workflows: readonly DoctorWorkflow[];
4
+ readonly prerequisite: string | undefined;
5
+ }): DoctorObservation;
3
6
  export declare function doctorWorkflows(repository: string, environment: Readonly<NodeJS.ProcessEnv>): Promise<readonly DoctorWorkflow[]>;
@@ -3,12 +3,17 @@ import { homedir } from "node:os";
3
3
  import { join } from "node:path";
4
4
  import { configurationRoot, absoluteWorkflowFolder, } from "../project-settings.js";
5
5
  import { isCandidateDeclaration } from "../workflow-candidate.js";
6
- import { bundledWorkflowIds } from "../workflow-discovery.js";
7
- export const bundledDoctorWorkflows = Object.values(bundledWorkflowIds).map((workflowId) => ({
8
- scope: "bundled",
9
- workflowId,
10
- capabilities: ["claude", "github"],
11
- }));
6
+ export function workflowObservation(context) {
7
+ if (context.prerequisite !== undefined)
8
+ return { result: "skip", detail: context.prerequisite };
9
+ const found = context.workflows.length > 0;
10
+ return {
11
+ result: found ? "ok" : "fail",
12
+ detail: found
13
+ ? "Project or user workflow found"
14
+ : "No project or user workflow",
15
+ };
16
+ }
12
17
  export async function doctorWorkflows(repository, environment) {
13
18
  const discovered = [];
14
19
  for (const [scope, folder] of [
@@ -41,5 +46,5 @@ export async function doctorWorkflows(repository, environment) {
41
46
  discovered.push({ scope, ...declaration.workflow });
42
47
  }
43
48
  }
44
- return [...bundledDoctorWorkflows, ...discovered];
49
+ return discovered;
45
50
  }
@@ -3,7 +3,7 @@ import { dirname, delimiter, join } from "node:path";
3
3
  import { doctorCodes, doctorExitCode, doctorFixes, requiredDoctorCodes, } from "../doctor-report.js";
4
4
  import { privateSettingsPath, projectSettings } from "./project-settings.js";
5
5
  import { githubObservations } from "./doctor-github.js";
6
- import { bundledDoctorWorkflows, doctorWorkflows } from "./doctor-workflows.js";
6
+ import { doctorWorkflows, workflowObservation } from "./doctor-workflows.js";
7
7
  import { runtimeObservation, serviceObservation } from "./doctor-runtime.js";
8
8
  import { harnessObservations } from "./doctor-harness.js";
9
9
  import { commandObservation, nodeObservation, privateTextsObservation, queueObservation, } from "./doctor-local.js";
@@ -40,7 +40,7 @@ export async function doctorReport(options) {
40
40
  const found = repository === undefined
41
41
  ? {
42
42
  observations: {},
43
- required: requiredDoctorCodes([], { queueSeconds: undefined }),
43
+ required: requiredDoctorCodes([]),
44
44
  }
45
45
  : await repositoryObservations({ ...options, repository });
46
46
  const git = repository === undefined
@@ -94,18 +94,15 @@ async function repositoryObservations(options) {
94
94
  settingsValid,
95
95
  environment,
96
96
  });
97
- const required = requiredDoctorCodes(workflowContext.workflows, {
98
- queueSeconds: settingsValid
99
- ? environment["CLOVING_QUEUE_SECONDS"]
100
- : undefined,
101
- });
97
+ observations["no-workflow"] = workflowObservation(workflowContext);
98
+ const required = requiredDoctorCodes(workflowContext.workflows);
102
99
  const dependent = await configuredObservations({ ...options, environment }, { prerequisite: workflowContext.prerequisite, project, serviceEnvironment });
103
100
  return { observations: { ...observations, ...dependent }, required };
104
101
  }
105
102
  async function workflowRequirements(repository, context) {
106
103
  if (!context.settingsValid)
107
104
  return {
108
- workflows: bundledDoctorWorkflows,
105
+ workflows: [],
109
106
  prerequisite: "Settings files are invalid",
110
107
  };
111
108
  try {
@@ -116,7 +113,7 @@ async function workflowRequirements(repository, context) {
116
113
  }
117
114
  catch (error) {
118
115
  return {
119
- workflows: bundledDoctorWorkflows,
116
+ workflows: [],
120
117
  prerequisite: `Workflow requirements unavailable: ${error instanceof Error ? error.message : "discovery failed"}`,
121
118
  };
122
119
  }
@@ -1,8 +1,10 @@
1
1
  import type { ProbeRunner } from "./probe-command.ts";
2
+ import { type ShellMode } from "../agent-harness-shell.ts";
2
3
  export interface HarnessEntry {
3
4
  readonly name: string;
4
5
  readonly kind: "file" | "shell";
5
6
  readonly path: string;
7
+ readonly shellMode?: ShellMode;
6
8
  readonly version: string | null;
7
9
  readonly working: boolean;
8
10
  readonly reason: string | null;
@@ -87,7 +87,7 @@ async function probeShell(candidate, context) {
87
87
  env,
88
88
  });
89
89
  const stdout = shellBlock(output.stdout, 0);
90
- return probeEntry({ name, kind, path }, {
90
+ return probeEntry({ name, kind, path, ...(kind === "shell" ? { shellMode: mode } : {}) }, {
91
91
  stdout: stdout ?? "",
92
92
  reason: output.reason ?? (stdout === null ? "shell-protocol" : null),
93
93
  });
@@ -0,0 +1,6 @@
1
+ interface HarnessProcessEffects {
2
+ readonly snapshot: () => string;
3
+ readonly kill: (identifier: number, signal: "SIGTERM") => boolean;
4
+ }
5
+ export declare function terminateHarness(identifier: number | undefined, effects: HarnessProcessEffects): void;
6
+ export {};
@@ -0,0 +1,36 @@
1
+ function harnessProcesses(identifier, effects) {
2
+ let snapshot;
3
+ try {
4
+ snapshot = effects.snapshot();
5
+ }
6
+ catch {
7
+ return [identifier];
8
+ }
9
+ const rows = snapshot
10
+ .trim()
11
+ .split("\n")
12
+ .map((row) => row.trim().split(/\s+/).map(Number));
13
+ const identifiers = [identifier];
14
+ for (let index = 0; index < identifiers.length; index++) {
15
+ for (const [child, parent] of rows) {
16
+ if (parent === identifiers[index] && child !== undefined && child > 0)
17
+ identifiers.push(child);
18
+ }
19
+ }
20
+ return identifiers;
21
+ }
22
+ export function terminateHarness(identifier, effects) {
23
+ if (identifier === undefined)
24
+ return;
25
+ for (const target of harnessProcesses(identifier, effects).reverse()) {
26
+ try {
27
+ effects.kill(target, "SIGTERM");
28
+ }
29
+ catch (error) {
30
+ if (!(error instanceof Error) ||
31
+ !("code" in error) ||
32
+ error.code !== "ESRCH")
33
+ throw error;
34
+ }
35
+ }
36
+ }
@@ -0,0 +1,9 @@
1
+ import { type HarnessStartRequest } from "../harness-start.ts";
2
+ import type { ProbeRunner } from "./probe-command.ts";
3
+ export declare function initCommand(context: {
4
+ readonly repository: string | undefined;
5
+ readonly environment: Readonly<NodeJS.ProcessEnv>;
6
+ readonly probe: ProbeRunner;
7
+ readonly harness: string | undefined;
8
+ readonly start: (request: HarnessStartRequest) => Promise<number | null>;
9
+ }): Promise<number>;
@@ -0,0 +1,52 @@
1
+ import { createInterface } from "node:readline/promises";
2
+ import { harnessStartRequest, } from "../harness-start.js";
3
+ import { changeConfigFile } from "./config-file.js";
4
+ import { chooseHarness, selectedHarness } from "./init-selection.js";
5
+ import { privateSettingsPath, projectSettings } from "./project-settings.js";
6
+ export async function initCommand(context) {
7
+ if (context.repository === undefined) {
8
+ process.stderr.write("not-a-repository: run git init.\n");
9
+ return 1;
10
+ }
11
+ try {
12
+ const entry = context.harness === undefined
13
+ ? await promptHarness({ ...context, repository: context.repository })
14
+ : await selectedHarness(context.harness, context);
15
+ await changeConfigFile(privateSettingsPath(context.environment, context.repository), {
16
+ harness: { name: entry.name, kind: entry.kind, path: entry.path },
17
+ scope: "private",
18
+ });
19
+ const request = harnessStartRequest(entry, {
20
+ repository: context.repository,
21
+ environment: context.environment,
22
+ message: "run `cloving init-prompt`",
23
+ });
24
+ const status = await context.start(request);
25
+ if (status !== null)
26
+ return status;
27
+ process.stderr.write("Open your agent in this repository and tell it: run `cloving init-prompt`.\n");
28
+ return 1;
29
+ }
30
+ catch (error) {
31
+ process.stderr.write((error instanceof Error ? error.message : "init-failed") + "\n");
32
+ return 2;
33
+ }
34
+ }
35
+ async function promptHarness(context) {
36
+ if (!process.stdin.isTTY || !process.stdout.isTTY)
37
+ throw new Error("harness-not-selected");
38
+ const terminal = createInterface({
39
+ input: process.stdin,
40
+ output: process.stdout,
41
+ });
42
+ try {
43
+ return await chooseHarness({
44
+ ...context,
45
+ current: projectSettings(context.environment, context.repository).harness,
46
+ question: (text) => terminal.question(text),
47
+ });
48
+ }
49
+ finally {
50
+ terminal.close();
51
+ }
52
+ }
@@ -0,0 +1,10 @@
1
+ import { type InitPromptFacts } from "./init-prompt.ts";
2
+ import type { ProbeRunner } from "./probe-command.ts";
3
+ interface PromptContext {
4
+ readonly repository: string | undefined;
5
+ readonly environment: Readonly<NodeJS.ProcessEnv>;
6
+ readonly probe: ProbeRunner;
7
+ }
8
+ export declare function initPromptFacts(context: PromptContext): Promise<InitPromptFacts>;
9
+ export declare function initPromptCommand(context: PromptContext): Promise<number>;
10
+ export {};