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
@@ -1,180 +0,0 @@
1
- import { validateCoverage, withinRoot } from "./corpus-input.js";
2
- import { evidenceReason, revisionReasons, } from "./revision.js";
3
- function object(value) {
4
- return value !== null && typeof value === "object" && !Array.isArray(value);
5
- }
6
- function exact(value, fields) {
7
- const { required, optional = [] } = fields;
8
- return (required.every((key) => Object.hasOwn(value, key)) &&
9
- Object.keys(value).every((key) => required.includes(key) || optional.includes(key)));
10
- }
11
- function natural(value) {
12
- return typeof value === "number" && Number.isSafeInteger(value) && value >= 0;
13
- }
14
- function absolute(value) {
15
- return (typeof value === "string" &&
16
- value.startsWith("/") &&
17
- !value.includes("\0") &&
18
- value.split("/").every((part) => part !== "." && part !== ".."));
19
- }
20
- function digest(value) {
21
- return (value === null ||
22
- (typeof value === "string" && /^sha256:[a-f\d]{64}$/.test(value)));
23
- }
24
- function evidenceValue(value) {
25
- return (object(value) &&
26
- digest(value["digest"]) &&
27
- (!Object.hasOwn(value, "byteSize") ||
28
- (natural(value["byteSize"]) && value["byteSize"] <= 10_485_760)));
29
- }
30
- function source(value, roots) {
31
- if (!evidenceValue(value) ||
32
- !absolute(value["path"]) ||
33
- typeof value["status"] !== "string")
34
- throw new Error("invalid-import");
35
- return {
36
- path: value["path"],
37
- root: selectedRoot(value["selection"], roots),
38
- status: value["status"],
39
- digest: value.digest,
40
- ...(value.byteSize === undefined ? {} : { byteSize: value.byteSize }),
41
- };
42
- }
43
- export function parseEvidenceCoverage(text, importId) {
44
- validateCoverage(text, importId);
45
- const value = JSON.parse(text);
46
- if (!object(value))
47
- throw new Error("invalid-import");
48
- const entries = value["schemaVersion"] === 1 ? value["files"] : value["entries"];
49
- const roots = value["schemaVersion"] === 1 ? [] : value["roots"];
50
- if (!Array.isArray(entries) ||
51
- !Array.isArray(roots) ||
52
- !roots.every((root) => typeof root === "string"))
53
- throw new Error("invalid-import");
54
- return entries.map((entry) => source(entry, roots));
55
- }
56
- function revisionValue(value) {
57
- return (value === null ||
58
- (evidenceValue(value) &&
59
- exact(value, { required: ["digest"], optional: ["byteSize"] })));
60
- }
61
- function revisionEntry(value) {
62
- if (!object(value) ||
63
- !exact(value, {
64
- required: ["path", "root", "before", "after", "status", "reason"],
65
- }))
66
- return false;
67
- if (!selectionKey(value))
68
- return false;
69
- const reason = value["reason"];
70
- if (typeof reason !== "string" || !Object.hasOwn(revisionReasons, reason))
71
- return false;
72
- const expected = Object.entries(revisionReasons).find(([key]) => key === reason)?.[1];
73
- return (value["status"] === expected &&
74
- revisionPresence(value) &&
75
- consistentReason(value));
76
- }
77
- function revisionPresence(value) {
78
- const reason = value["reason"];
79
- if (reason === "no-previous-entry")
80
- return value["before"] === null && value["after"] !== null;
81
- if (reason === "not-selected")
82
- return value["before"] !== null && value["after"] === null;
83
- return value["before"] !== null && value["after"] !== null;
84
- }
85
- function validCounts(value, entries) {
86
- const statuses = [
87
- "new",
88
- "missing",
89
- "unchanged",
90
- "changed",
91
- "truncated",
92
- "extended",
93
- ];
94
- return (object(value) &&
95
- exact(value, { required: statuses }) &&
96
- statuses.every((status) => natural(value[status]) &&
97
- value[status] ===
98
- entries.filter((entry) => entry["status"] === status).length));
99
- }
100
- export function nextEvidenceRevision(text, importId) {
101
- if (text === undefined)
102
- return 1;
103
- const value = JSON.parse(text);
104
- if (!object(value) ||
105
- !exact(value, {
106
- required: [
107
- "schemaVersion",
108
- "importId",
109
- "previousImportId",
110
- "evidenceRevision",
111
- "counts",
112
- "entries",
113
- ],
114
- }))
115
- throw new Error("invalid-import");
116
- if (!revisionHeader(value, importId))
117
- throw new Error("invalid-import");
118
- const entries = value["entries"];
119
- if (!Array.isArray(entries) ||
120
- !entries.every(revisionEntry) ||
121
- !validCounts(value["counts"], entries))
122
- throw new Error("invalid-import");
123
- const revision = value["evidenceRevision"];
124
- if (!natural(revision))
125
- throw new Error("invalid-import");
126
- return revision + 1;
127
- }
128
- function selectedRoot(selection, roots) {
129
- if (roots.length === 0 || !object(selection) || selection["kind"] !== "root")
130
- return null;
131
- const index = selection["index"];
132
- if (!natural(index) || roots[index] === undefined)
133
- throw new Error("invalid-import");
134
- return roots[index];
135
- }
136
- function selectionKey(value) {
137
- return (absolute(value["path"]) &&
138
- (value["root"] === null ||
139
- (absolute(value["root"]) && withinRoot(value["root"], value["path"]))));
140
- }
141
- function revisionHeader(value, importId) {
142
- const revision = value["evidenceRevision"];
143
- if (value["schemaVersion"] !== 1 ||
144
- value["importId"] !== importId ||
145
- !natural(revision) ||
146
- revision === 0 ||
147
- revision === Number.MAX_SAFE_INTEGER)
148
- return false;
149
- const previous = value["previousImportId"];
150
- if (typeof previous !== "string" ||
151
- previous === importId ||
152
- !/^[a-f\d]{8}-[a-f\d]{4}-4[a-f\d]{3}-[89ab][a-f\d]{3}-[a-f\d]{12}$/.test(previous))
153
- return false;
154
- return true;
155
- }
156
- function consistentReason(value) {
157
- const before = value["before"];
158
- const after = value["after"];
159
- if (!revisionValue(before) || !revisionValue(after))
160
- return false;
161
- const reason = value["reason"];
162
- const unverified = [
163
- "no-previous-entry",
164
- "not-selected",
165
- "not-included",
166
- ].includes(String(reason));
167
- if (!unverified && after?.digest === null)
168
- return false;
169
- const prefix = reason === "verified-prefix" ? before?.digest : undefined;
170
- return (evidenceReason({
171
- before: comparable(before, { status: "included" }),
172
- after: comparable(after, {
173
- status: reason === "not-included" ? "unsupported" : "included",
174
- prefixDigest: prefix ?? undefined,
175
- }),
176
- }) === reason);
177
- }
178
- function comparable(value, state) {
179
- return value === null ? null : { ...value, ...state };
180
- }
@@ -1,48 +0,0 @@
1
- export interface SelectionKey {
2
- readonly path: string;
3
- readonly root: string | null;
4
- }
5
- export interface EvidenceValue {
6
- readonly digest: string | null;
7
- readonly byteSize?: number | undefined;
8
- }
9
- export interface ComparableEvidence extends EvidenceValue {
10
- readonly status: string;
11
- readonly prefixDigest?: string | undefined;
12
- }
13
- export interface EvidenceSource extends SelectionKey, ComparableEvidence {
14
- }
15
- export declare const revisionReasons: {
16
- readonly "no-previous-entry": "new";
17
- readonly "not-selected": "missing";
18
- readonly "not-included": "missing";
19
- readonly "same-digest": "unchanged";
20
- readonly "previous-digest-unknown": "changed";
21
- readonly "previous-size-unknown": "changed";
22
- readonly "shorter-source": "truncated";
23
- readonly "verified-prefix": "extended";
24
- readonly "digest-changed": "changed";
25
- };
26
- export type RevisionReason = keyof typeof revisionReasons;
27
- export type RevisionStatus = (typeof revisionReasons)[RevisionReason];
28
- export interface RevisionEntry extends SelectionKey {
29
- readonly before: EvidenceValue | null;
30
- readonly after: EvidenceValue | null;
31
- readonly status: RevisionStatus;
32
- readonly reason: RevisionReason;
33
- }
34
- export declare function pairEvidence(data: {
35
- readonly previous: readonly SelectionKey[];
36
- readonly current: readonly SelectionKey[];
37
- }): readonly (number | null)[];
38
- export declare function evidenceReason(data: {
39
- readonly before: ComparableEvidence | null;
40
- readonly after: ComparableEvidence | null;
41
- }): RevisionReason;
42
- export declare function compareEvidence(data: {
43
- readonly previous: readonly EvidenceSource[];
44
- readonly current: readonly EvidenceSource[];
45
- }): {
46
- counts: Record<RevisionStatus, number>;
47
- entries: RevisionEntry[];
48
- };
@@ -1,94 +0,0 @@
1
- export const revisionReasons = {
2
- "no-previous-entry": "new",
3
- "not-selected": "missing",
4
- "not-included": "missing",
5
- "same-digest": "unchanged",
6
- "previous-digest-unknown": "changed",
7
- "previous-size-unknown": "changed",
8
- "shorter-source": "truncated",
9
- "verified-prefix": "extended",
10
- "digest-changed": "changed",
11
- };
12
- export function pairEvidence(data) {
13
- const queues = new Map();
14
- const key = (entry) => JSON.stringify([entry.path, entry.root]);
15
- data.previous.forEach((entry, index) => {
16
- const encoded = key(entry);
17
- const queue = queues.get(encoded) ?? [];
18
- queue.push(index);
19
- queues.set(encoded, queue);
20
- });
21
- return data.current.map((entry) => queues.get(key(entry))?.shift() ?? null);
22
- }
23
- export function evidenceReason(data) {
24
- const { before, after } = data;
25
- if (before === null)
26
- return "no-previous-entry";
27
- if (after === null)
28
- return "not-selected";
29
- if (after.status !== "included")
30
- return "not-included";
31
- if (before.digest !== null && before.digest === after.digest)
32
- return "same-digest";
33
- if (before.digest === null)
34
- return "previous-digest-unknown";
35
- if (before.byteSize === undefined)
36
- return "previous-size-unknown";
37
- return sizeReason({ ...before, byteSize: before.byteSize }, after);
38
- }
39
- function sizeReason(before, after) {
40
- if (after.byteSize !== undefined && after.byteSize < before.byteSize)
41
- return "shorter-source";
42
- if (after.byteSize !== undefined &&
43
- after.byteSize > before.byteSize &&
44
- after.prefixDigest === before.digest)
45
- return "verified-prefix";
46
- return "digest-changed";
47
- }
48
- function value(source) {
49
- if (source === undefined)
50
- return null;
51
- return {
52
- digest: source.digest,
53
- ...(source.byteSize === undefined ? {} : { byteSize: source.byteSize }),
54
- };
55
- }
56
- function entry(before, after) {
57
- const key = after ?? before;
58
- if (key === undefined)
59
- throw new Error("invalid-evidence");
60
- const why = evidenceReason({ before: before ?? null, after: after ?? null });
61
- return {
62
- path: key.path,
63
- root: key.root,
64
- before: value(before),
65
- after: value(after),
66
- status: revisionReasons[why],
67
- reason: why,
68
- };
69
- }
70
- export function compareEvidence(data) {
71
- const pairs = pairEvidence(data);
72
- const used = new Set(pairs);
73
- const entries = data.current.map((after, index) => {
74
- const matched = pairs[index];
75
- return entry(matched === null || matched === undefined
76
- ? undefined
77
- : data.previous[matched], after);
78
- });
79
- data.previous.forEach((before, index) => {
80
- if (!used.has(index))
81
- entries.push(entry(before, undefined));
82
- });
83
- const counts = {
84
- new: 0,
85
- missing: 0,
86
- unchanged: 0,
87
- changed: 0,
88
- truncated: 0,
89
- extended: 0,
90
- };
91
- for (const item of entries)
92
- counts[item.status]++;
93
- return { counts, entries };
94
- }
@@ -1,25 +0,0 @@
1
- import { type ScanSource } from "./source.ts";
2
- export interface SelectionRequest {
3
- readonly paths: readonly string[];
4
- readonly roots?: readonly string[];
5
- readonly excludeProjects?: readonly string[];
6
- readonly workingDirectory: string;
7
- }
8
- export interface SelectionOutcome {
9
- readonly status: "unreadable" | "unsupported" | "excluded" | "pending";
10
- readonly reason: string;
11
- }
12
- export interface SourceSelection {
13
- readonly kind: "file" | "subtree";
14
- readonly path: string;
15
- readonly selection: {
16
- readonly kind: "file" | "root";
17
- readonly index: number;
18
- };
19
- readonly outcome?: SelectionOutcome;
20
- readonly inspection?: ScanSource;
21
- }
22
- export declare function selectChatSources(request: SelectionRequest): Promise<{
23
- roots: string[];
24
- entries: SourceSelection[];
25
- }>;
@@ -1,109 +0,0 @@
1
- import { readdir } from "node:fs/promises";
2
- import { basename, join, relative, resolve } from "node:path";
3
- import { inspectScanSource, noFollowPath, refuseRepositoryRoot, sourceFailure, verifyScanSource, verifyScanAncestor, } from "./source.js";
4
- function outcome(reason) {
5
- return {
6
- status: reason === "source-unreadable" ? "unreadable" : "unsupported",
7
- reason,
8
- };
9
- }
10
- async function scanEntry(entry, context) {
11
- try {
12
- const { exclusions, depth } = context;
13
- const root = entry.inspection?.root ?? entry.path;
14
- const inspection = await inspectScanSource(entry.path, root);
15
- if (entry.inspection !== undefined)
16
- verifyScanAncestor(entry.inspection, inspection);
17
- const inspected = { ...entry, kind: inspection.kind, inspection };
18
- const disposition = entryDisposition(inspected, context);
19
- if (disposition !== undefined)
20
- return [{ ...inspected, outcome: disposition }];
21
- if (inspection.kind === "file")
22
- return [inspected];
23
- const entries = [];
24
- const children = await readdir(noFollowPath(entry.path), {
25
- withFileTypes: true,
26
- });
27
- await verifyScanSource(inspection);
28
- for (const child of children) {
29
- const scanned = await scanEntry({
30
- ...inspected,
31
- kind: child.isDirectory() ? "subtree" : "file",
32
- path: join(entry.path, child.name),
33
- }, { exclusions, depth: depth + 1 });
34
- for (const selected of scanned)
35
- entries.push(selected);
36
- }
37
- return entries;
38
- }
39
- catch (error) {
40
- return [{ ...entry, outcome: outcome(sourceFailure(error)) }];
41
- }
42
- }
43
- function entryDisposition(entry, context) {
44
- if (entry.kind === "file")
45
- return entry.path.endsWith(".jsonl")
46
- ? undefined
47
- : outcome("unsupported-extension");
48
- if (context.depth === 1 && context.exclusions.includes(basename(entry.path)))
49
- return { status: "excluded", reason: "project-excluded" };
50
- if (context.depth === 4)
51
- return { status: "pending", reason: "depth-limit" };
52
- return;
53
- }
54
- async function prepareRoot(path) {
55
- const entry = {
56
- path,
57
- kind: "subtree",
58
- selection: { kind: "root", index: 0 },
59
- };
60
- try {
61
- const inspection = await inspectScanSource(path, path);
62
- if (inspection.kind !== "subtree")
63
- throw new Error("non-directory-root");
64
- await refuseRepositoryRoot(inspection.root);
65
- return { ...entry, path: inspection.root, inspection };
66
- }
67
- catch (error) {
68
- return { ...entry, outcome: outcome(sourceFailure(error)) };
69
- }
70
- }
71
- export async function selectChatSources(request) {
72
- const entries = request.paths.map((path, index) => ({
73
- path: resolve(request.workingDirectory, path),
74
- kind: "file",
75
- selection: { kind: "file", index },
76
- }));
77
- const selectedRoots = [];
78
- for (const value of request.roots ?? [])
79
- selectedRoots.push(await prepareRoot(resolve(request.workingDirectory, value)));
80
- selectedRoots.sort((left, right) => stringOrder(left.path, right.path));
81
- const roots = selectedRoots.map((root) => root.path);
82
- for (const [index, root] of selectedRoots.entries()) {
83
- const selected = { ...root, selection: { kind: "root", index } };
84
- const scanned = root.outcome === undefined
85
- ? await scanEntry(selected, {
86
- exclusions: request.excludeProjects ?? [],
87
- depth: 0,
88
- })
89
- : [selected];
90
- scanned.sort((left, right) => stringOrder(relative(root.path, left.path), relative(root.path, right.path)));
91
- for (const entry of scanned)
92
- entries.push(entry);
93
- }
94
- let attempts = 0;
95
- return {
96
- roots,
97
- entries: entries.map((entry) => {
98
- if (entry.selection.kind === "file" || entry.outcome !== undefined)
99
- return entry;
100
- attempts++;
101
- return attempts <= 100
102
- ? entry
103
- : { ...entry, outcome: { status: "pending", reason: "file-limit" } };
104
- }),
105
- };
106
- }
107
- function stringOrder(left, right) {
108
- return left < right ? -1 : Number(left > right);
109
- }
@@ -1,23 +0,0 @@
1
- import type { Stats } from "node:fs";
2
- export interface SourceIdentity {
3
- readonly path: string;
4
- readonly device: number;
5
- readonly inode: number;
6
- }
7
- export interface ScanSource {
8
- readonly path: string;
9
- readonly root: string;
10
- readonly identities: readonly SourceIdentity[];
11
- readonly size: number;
12
- readonly modified: number;
13
- readonly changed: number;
14
- readonly kind: "file" | "subtree";
15
- }
16
- export declare function contained(root: string, path: string): boolean;
17
- export declare function inspectScanSource(path: string, root: string): Promise<ScanSource>;
18
- export declare function noFollowPath(path: string): string;
19
- export declare function refuseRepositoryRoot(path: string): Promise<void>;
20
- export declare function sourceFailure(error: unknown): string;
21
- export declare function verifyScanSource(expected: ScanSource): Promise<void>;
22
- export declare function verifyOpenSource(expected: ScanSource, stats: Stats): void;
23
- export declare function verifyScanAncestor(expected: ScanSource, current: ScanSource): void;
@@ -1,135 +0,0 @@
1
- import { lstat, realpath } from "node:fs/promises";
2
- import { dirname, isAbsolute, join, relative, sep } from "node:path";
3
- export function contained(root, path) {
4
- const suffix = relative(root, path);
5
- return (!isAbsolute(suffix) && suffix !== ".." && !suffix.startsWith(`..${sep}`));
6
- }
7
- async function inspectComponents(path) {
8
- const identities = [];
9
- let ancestor = path;
10
- const ancestors = [];
11
- for (;;) {
12
- ancestors.unshift(ancestor);
13
- const parent = dirname(ancestor);
14
- if (parent === ancestor)
15
- break;
16
- ancestor = parent;
17
- }
18
- let stats;
19
- for (const component of ancestors) {
20
- const next = await lstat(noFollowPath(component));
21
- if (next.isSymbolicLink())
22
- throw new Error("symbolic-link");
23
- identities.unshift({ path: component, device: next.dev, inode: next.ino });
24
- stats = next;
25
- }
26
- if (stats === undefined)
27
- throw new Error("source-unreadable");
28
- return { identities, stats };
29
- }
30
- export async function inspectScanSource(path, root) {
31
- const { identities, stats } = await inspectComponents(path);
32
- const canonicalPath = await realpath(path);
33
- const canonicalRoot = path === root ? canonicalPath : root;
34
- if (!contained(canonicalRoot, canonicalPath))
35
- throw new Error("outside-root");
36
- const canonicalStats = await lstat(noFollowPath(canonicalPath));
37
- if (canonicalStats.dev !== stats.dev || canonicalStats.ino !== stats.ino)
38
- throw new Error("source-changed");
39
- const confirmation = await inspectComponents(path);
40
- if (JSON.stringify(confirmation.identities) !== JSON.stringify(identities))
41
- throw new Error("source-changed");
42
- if (!stats.isDirectory() && !stats.isFile())
43
- throw new Error("nonregular-file");
44
- return {
45
- path,
46
- root: canonicalRoot,
47
- identities,
48
- size: stats.size,
49
- modified: stats.mtimeMs,
50
- changed: stats.ctimeMs,
51
- kind: stats.isDirectory() ? "subtree" : "file",
52
- };
53
- }
54
- export function noFollowPath(path) {
55
- if (process.platform !== "darwin")
56
- throw new Error("platform-unsupported");
57
- if (!isAbsolute(path))
58
- throw new Error("source-unreadable");
59
- return `/.nofollow${path}`;
60
- }
61
- async function metadata(path) {
62
- try {
63
- return await lstat(noFollowPath(path));
64
- }
65
- catch (error) {
66
- if (error instanceof Error && "code" in error && error.code === "ENOENT")
67
- return;
68
- throw error;
69
- }
70
- }
71
- async function repositoryMarker(path) {
72
- if (await metadata(join(path, ".git")))
73
- return true;
74
- const [head, objects, references] = await Promise.all([
75
- metadata(join(path, "HEAD")),
76
- metadata(join(path, "objects")),
77
- metadata(join(path, "refs")),
78
- ]);
79
- return (head?.isFile() === true &&
80
- objects?.isDirectory() === true &&
81
- references?.isDirectory() === true);
82
- }
83
- export async function refuseRepositoryRoot(path) {
84
- let ancestor = path;
85
- for (;;) {
86
- if (await repositoryMarker(ancestor))
87
- throw new Error("repository-root");
88
- const parent = dirname(ancestor);
89
- if (parent === ancestor)
90
- return;
91
- ancestor = parent;
92
- }
93
- }
94
- export function sourceFailure(error) {
95
- if (error instanceof Error && "code" in error && error.code === "ELOOP")
96
- return "symbolic-link";
97
- const reason = error instanceof Error ? error.message : "";
98
- return [
99
- "symbolic-link",
100
- "outside-root",
101
- "nonregular-file",
102
- "repository-root",
103
- "source-changed",
104
- "non-directory-root",
105
- ].includes(reason)
106
- ? reason
107
- : "source-unreadable";
108
- }
109
- export async function verifyScanSource(expected) {
110
- const current = await inspectScanSource(expected.path, expected.root);
111
- if (JSON.stringify(current.identities) !== JSON.stringify(expected.identities))
112
- throw new Error("source-changed");
113
- if (expected.kind === "file" &&
114
- (current.size !== expected.size ||
115
- current.modified !== expected.modified ||
116
- current.changed !== expected.changed))
117
- throw new Error("source-changed");
118
- }
119
- export function verifyOpenSource(expected, stats) {
120
- const identity = expected.identities[0];
121
- if (!stats.isFile() ||
122
- identity === undefined ||
123
- stats.dev !== identity.device ||
124
- stats.ino !== identity.inode ||
125
- stats.size !== expected.size ||
126
- stats.mtimeMs !== expected.modified ||
127
- stats.ctimeMs !== expected.changed)
128
- throw new Error("source-changed");
129
- }
130
- export function verifyScanAncestor(expected, current) {
131
- const ancestors = current.identities.slice(-expected.identities.length);
132
- if (expected.identities.some((identity, index) => identity.device !== ancestors[index]?.device ||
133
- identity.inode !== ancestors[index].inode))
134
- throw new Error("source-changed");
135
- }
@@ -1,57 +0,0 @@
1
- import type { MessageRecord } from "./normalize.ts";
2
- export interface OccurrenceReference {
3
- readonly recordIndex: number;
4
- readonly sourceId: string;
5
- }
6
- export interface Occurrence extends OccurrenceReference {
7
- readonly uuid: string | null;
8
- readonly sessionId: string | null;
9
- readonly isSidechain: boolean | null;
10
- readonly parentUuid?: string | null;
11
- readonly copyOf?: OccurrenceReference;
12
- }
13
- interface ConflictGroup {
14
- readonly uuid: string;
15
- readonly variants: readonly (readonly OccurrenceReference[])[];
16
- }
17
- interface ParentLink {
18
- readonly childUuid: string | null;
19
- readonly parentUuid: string | null;
20
- readonly occurrences: readonly OccurrenceReference[];
21
- readonly status: "root" | "resolved" | "missing" | "ambiguous";
22
- }
23
- interface SessionNode {
24
- readonly uuid: string | null;
25
- readonly occurrences: readonly OccurrenceReference[];
26
- }
27
- interface SessionStructure {
28
- readonly sessionId: string;
29
- readonly nodes: readonly SessionNode[];
30
- readonly links: readonly ParentLink[];
31
- readonly forkPoints: readonly {
32
- parentUuid: string;
33
- childUuids: readonly string[];
34
- }[];
35
- readonly unknownParents: readonly OccurrenceReference[];
36
- readonly missingParentTargets: readonly string[];
37
- readonly cycles: readonly (readonly string[])[];
38
- }
39
- export interface StructureCounts {
40
- readonly records: number;
41
- readonly knownSessions: number;
42
- readonly forks: number;
43
- readonly copies: number;
44
- readonly conflictGroups: number;
45
- readonly unknownIdentities: number;
46
- readonly missingParentTargets: number;
47
- }
48
- export interface ImportStructure {
49
- readonly historyCompleteness: "unknown";
50
- readonly counts: StructureCounts;
51
- readonly occurrences: readonly Occurrence[];
52
- readonly conflictGroups: readonly ConflictGroup[];
53
- readonly sessions: readonly SessionStructure[];
54
- readonly unknownSessions: readonly OccurrenceReference[];
55
- }
56
- export declare function structureImport(records: readonly MessageRecord[]): ImportStructure;
57
- export {};