cloving 0.3.20 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (416) hide show
  1. package/{LICENSE.md → LICENSE} +1 -1
  2. package/README.md +475 -182
  3. package/dist/src/authority/budgets.d.ts +12 -0
  4. package/dist/src/authority/budgets.js +42 -0
  5. package/dist/src/authority/commands.d.ts +7 -0
  6. package/dist/src/authority/commands.js +263 -0
  7. package/dist/src/authority/details.d.ts +28 -0
  8. package/dist/src/authority/details.js +33 -0
  9. package/dist/src/authority/dispatch-decision.d.ts +40 -0
  10. package/dist/src/authority/dispatch-decision.js +47 -0
  11. package/dist/src/authority/effect-requests.d.ts +2 -0
  12. package/dist/src/authority/effect-requests.js +139 -0
  13. package/dist/src/authority/effect-results.d.ts +4 -0
  14. package/dist/src/authority/effect-results.js +236 -0
  15. package/dist/src/authority/events.d.ts +2 -0
  16. package/dist/src/authority/events.js +45 -0
  17. package/dist/src/authority/gate-reduction.d.ts +8 -0
  18. package/dist/src/authority/gate-reduction.js +109 -0
  19. package/dist/src/authority/gates.d.ts +48 -0
  20. package/dist/src/authority/gates.js +77 -0
  21. package/dist/src/authority/history-state.d.ts +15 -0
  22. package/dist/src/authority/history-state.js +61 -0
  23. package/dist/src/authority/history.d.ts +13 -0
  24. package/dist/src/authority/history.js +37 -0
  25. package/dist/src/authority/instants.d.ts +3 -0
  26. package/dist/src/authority/instants.js +38 -0
  27. package/dist/src/authority/leases.d.ts +15 -0
  28. package/dist/src/authority/leases.js +113 -0
  29. package/dist/src/authority/operations.d.ts +101 -0
  30. package/dist/src/authority/operations.js +75 -0
  31. package/dist/src/authority/reconciliation.d.ts +27 -0
  32. package/dist/src/authority/reconciliation.js +147 -0
  33. package/dist/src/authority/reducer.d.ts +41 -0
  34. package/dist/src/authority/reducer.js +139 -0
  35. package/dist/src/authority/reduction-state.d.ts +36 -0
  36. package/dist/src/authority/reduction-state.js +68 -0
  37. package/dist/src/authority/reduction.d.ts +6 -0
  38. package/dist/src/authority/reduction.js +160 -0
  39. package/dist/src/authority/status-closure.d.ts +4 -0
  40. package/dist/src/authority/status-closure.js +57 -0
  41. package/dist/src/authority/status-effects.d.ts +17 -0
  42. package/dist/src/authority/status-effects.js +43 -0
  43. package/dist/src/authority/status-input.d.ts +45 -0
  44. package/dist/src/authority/status-input.js +9 -0
  45. package/dist/src/authority/status.d.ts +32 -0
  46. package/dist/src/authority/status.js +256 -0
  47. package/dist/src/authority/stop-sequence.d.ts +37 -0
  48. package/dist/src/authority/stop-sequence.js +91 -0
  49. package/dist/src/authority/transitions.d.ts +63 -0
  50. package/dist/src/authority/transitions.js +122 -0
  51. package/dist/src/broker/actor/adapter-calls.d.ts +13 -0
  52. package/dist/src/broker/actor/adapter-calls.js +34 -0
  53. package/dist/src/broker/actor/adapter-outcomes.d.ts +28 -0
  54. package/dist/src/broker/actor/adapter-outcomes.js +80 -0
  55. package/dist/src/broker/actor/authority-actor.d.ts +25 -0
  56. package/dist/src/broker/actor/authority-actor.js +169 -0
  57. package/dist/src/broker/actor/authority-changes.d.ts +31 -0
  58. package/dist/src/broker/actor/authority-changes.js +46 -0
  59. package/dist/src/broker/actor/authority-connection.d.ts +15 -0
  60. package/dist/src/broker/actor/authority-connection.js +44 -0
  61. package/dist/src/broker/actor/authority-conversion.d.ts +10 -0
  62. package/dist/src/broker/actor/authority-conversion.js +72 -0
  63. package/dist/src/broker/actor/authority-delivery.d.ts +13 -0
  64. package/dist/src/broker/actor/authority-delivery.js +162 -0
  65. package/dist/src/broker/actor/authority-logger.d.ts +2 -0
  66. package/dist/src/broker/actor/authority-logger.js +19 -0
  67. package/dist/src/broker/actor/authority-policy.d.ts +9 -0
  68. package/dist/src/broker/actor/authority-policy.js +11 -0
  69. package/dist/src/broker/actor/authority-queries.d.ts +45 -0
  70. package/dist/src/broker/actor/authority-queries.js +85 -0
  71. package/dist/src/broker/actor/authority-receipts.d.ts +28 -0
  72. package/dist/src/broker/actor/authority-receipts.js +84 -0
  73. package/dist/src/broker/actor/authority-release.d.ts +13 -0
  74. package/dist/src/broker/actor/authority-release.js +69 -0
  75. package/dist/src/broker/actor/authority-runtime.d.ts +60 -0
  76. package/dist/src/broker/actor/authority-runtime.js +204 -0
  77. package/dist/src/broker/actor/authority-session.d.ts +65 -0
  78. package/dist/src/broker/actor/authority-session.js +252 -0
  79. package/dist/src/broker/actor/authority-settings.d.ts +33 -0
  80. package/dist/src/broker/actor/authority-settings.js +63 -0
  81. package/dist/src/broker/actor/authority-upgrades.d.ts +16 -0
  82. package/dist/src/broker/actor/authority-upgrades.js +12 -0
  83. package/dist/src/broker/actor/authority-watchdog.d.ts +14 -0
  84. package/dist/src/broker/actor/authority-watchdog.js +41 -0
  85. package/dist/src/broker/actor/authority.d.ts +14 -0
  86. package/dist/src/broker/actor/authority.js +115 -0
  87. package/dist/src/broker/actor/delivery-intents.d.ts +68 -0
  88. package/dist/src/broker/actor/delivery-intents.js +77 -0
  89. package/dist/src/broker/actor/delivery-plan.d.ts +2 -0
  90. package/dist/src/broker/actor/delivery-plan.js +109 -0
  91. package/dist/src/broker/actor/delivery-results.d.ts +11 -0
  92. package/dist/src/broker/actor/delivery-results.js +63 -0
  93. package/dist/src/broker/actor/effect-delivery.d.ts +19 -0
  94. package/dist/src/broker/actor/effect-delivery.js +118 -0
  95. package/dist/src/broker/actor/effect-plan.d.ts +41 -0
  96. package/dist/src/broker/actor/effect-plan.js +173 -0
  97. package/dist/src/broker/actor/effect-queries.d.ts +27 -0
  98. package/dist/src/broker/actor/effect-queries.js +80 -0
  99. package/dist/src/broker/actor/effect-turn.d.ts +25 -0
  100. package/dist/src/broker/actor/effect-turn.js +84 -0
  101. package/dist/src/broker/actor/pin-check.d.ts +6 -0
  102. package/dist/src/broker/actor/pin-check.js +12 -0
  103. package/dist/src/broker/actor/runtime-parts.d.ts +23 -0
  104. package/dist/src/broker/actor/runtime-parts.js +34 -0
  105. package/dist/src/broker/actor/stop-plan.d.ts +20 -0
  106. package/dist/src/broker/actor/stop-plan.js +46 -0
  107. package/dist/src/broker/actor/stop-turn.d.ts +17 -0
  108. package/dist/src/broker/actor/stop-turn.js +42 -0
  109. package/dist/src/broker/actor/turn-draft.d.ts +31 -0
  110. package/dist/src/broker/actor/turn-draft.js +138 -0
  111. package/dist/src/broker/actor/turn-plan.d.ts +17 -0
  112. package/dist/src/broker/actor/turn-plan.js +136 -0
  113. package/dist/src/broker/actor/turn-refusals.d.ts +8 -0
  114. package/dist/src/broker/actor/turn-refusals.js +35 -0
  115. package/dist/src/broker/actor/turn-staging.d.ts +78 -0
  116. package/dist/src/broker/actor/turn-staging.js +34 -0
  117. package/dist/src/broker/actor/turn-state.d.ts +34 -0
  118. package/dist/src/broker/actor/turn-state.js +208 -0
  119. package/dist/src/broker/authority-admission.d.ts +21 -0
  120. package/dist/src/broker/authority-admission.js +70 -0
  121. package/dist/src/broker/authority-restore.d.ts +30 -0
  122. package/dist/src/broker/authority-restore.js +165 -0
  123. package/dist/src/broker/decision-restore.d.ts +16 -0
  124. package/dist/src/broker/decision-restore.js +158 -0
  125. package/dist/src/broker/decision-upgrade.d.ts +3 -0
  126. package/dist/src/broker/decision-upgrade.js +12 -0
  127. package/dist/src/broker/effect-restore.d.ts +20 -0
  128. package/dist/src/broker/effect-restore.js +111 -0
  129. package/dist/src/broker/effect-upgrade.d.ts +3 -0
  130. package/dist/src/broker/effect-upgrade.js +9 -0
  131. package/dist/src/broker/operation-digest.d.ts +1 -0
  132. package/dist/src/broker/operation-digest.js +4 -0
  133. package/dist/src/broker/socket-address.d.ts +9 -0
  134. package/dist/src/broker/socket-address.js +14 -0
  135. package/dist/src/broker/workflow-pin.d.ts +2 -0
  136. package/dist/src/broker/workflow-pin.js +5 -0
  137. package/dist/src/chats/destination.d.ts +4 -0
  138. package/dist/src/chats/destination.js +94 -0
  139. package/dist/src/chats/import.d.ts +13 -0
  140. package/dist/src/chats/import.js +71 -0
  141. package/dist/src/chats/normalize.d.ts +20 -0
  142. package/dist/src/chats/normalize.js +139 -0
  143. package/dist/src/chats/reader.d.ts +15 -0
  144. package/dist/src/chats/reader.js +87 -0
  145. package/dist/src/cli/arguments.d.ts +23 -0
  146. package/dist/src/cli/arguments.js +154 -0
  147. package/dist/src/cli/client.d.ts +15 -0
  148. package/dist/src/cli/client.js +122 -0
  149. package/dist/src/cli/commands.d.ts +14 -0
  150. package/dist/src/cli/commands.js +253 -0
  151. package/dist/src/cli/main.d.ts +1 -0
  152. package/dist/src/cli/main.js +80 -0
  153. package/dist/src/cli/render.d.ts +8 -0
  154. package/dist/src/cli/render.js +186 -0
  155. package/dist/src/cli/runtime-arguments.d.ts +73 -0
  156. package/dist/src/cli/runtime-arguments.js +248 -0
  157. package/dist/src/cli/runtime-directory.d.ts +4 -0
  158. package/dist/src/cli/runtime-directory.js +25 -0
  159. package/dist/src/cli/toolchain.d.ts +3 -0
  160. package/dist/src/cli/toolchain.js +74 -0
  161. package/dist/src/cli/usage.d.ts +4 -0
  162. package/dist/src/cli/usage.js +124 -0
  163. package/dist/src/cli/validate.d.ts +38 -0
  164. package/dist/src/cli/validate.js +116 -0
  165. package/dist/src/cli/watch-board-view.d.ts +22 -0
  166. package/dist/src/cli/watch-board-view.js +128 -0
  167. package/dist/src/cli/watch-board.d.ts +15 -0
  168. package/dist/src/cli/watch-board.js +174 -0
  169. package/dist/src/cli/watch-element.d.ts +11 -0
  170. package/dist/src/cli/watch-element.js +6 -0
  171. package/dist/src/cli/watch-model.d.ts +29 -0
  172. package/dist/src/cli/watch-model.js +261 -0
  173. package/dist/src/cli/watch-navigation.d.ts +9 -0
  174. package/dist/src/cli/watch-navigation.js +40 -0
  175. package/dist/src/cli/watch-page.d.ts +1 -0
  176. package/dist/src/cli/watch-page.js +272 -0
  177. package/dist/src/cli/watch-paths.d.ts +2 -0
  178. package/dist/src/cli/watch-paths.js +52 -0
  179. package/dist/src/cli/watch-phases.d.ts +7 -0
  180. package/dist/src/cli/watch-phases.js +148 -0
  181. package/dist/src/cli/watch-reads.d.ts +28 -0
  182. package/dist/src/cli/watch-reads.js +244 -0
  183. package/dist/src/cli/watch-render.d.ts +139 -0
  184. package/dist/src/cli/watch-render.js +95 -0
  185. package/dist/src/cli/watch-server.d.ts +10 -0
  186. package/dist/src/cli/watch-server.js +176 -0
  187. package/dist/src/cli/watch-stream.d.ts +11 -0
  188. package/dist/src/cli/watch-stream.js +128 -0
  189. package/dist/src/cli/watch-turn.d.ts +29 -0
  190. package/dist/src/cli/watch-turn.js +130 -0
  191. package/dist/src/cli/watch-view.d.ts +39 -0
  192. package/dist/src/cli/watch-view.js +223 -0
  193. package/dist/src/cli.d.ts +2 -0
  194. package/dist/src/cli.js +62 -0
  195. package/dist/src/daemon/claude-turn.d.ts +28 -0
  196. package/dist/src/daemon/claude-turn.js +135 -0
  197. package/dist/src/daemon/claude-worker.d.ts +26 -0
  198. package/dist/src/daemon/claude-worker.js +224 -0
  199. package/dist/src/daemon/codex-stream.d.ts +4 -0
  200. package/dist/src/daemon/codex-stream.js +113 -0
  201. package/dist/src/daemon/daemon.d.ts +46 -0
  202. package/dist/src/daemon/daemon.js +186 -0
  203. package/dist/src/daemon/delivery-router.d.ts +10 -0
  204. package/dist/src/daemon/delivery-router.js +34 -0
  205. package/dist/src/daemon/github-calls.d.ts +29 -0
  206. package/dist/src/daemon/github-calls.js +127 -0
  207. package/dist/src/daemon/github-issue-methods.d.ts +3 -0
  208. package/dist/src/daemon/github-issue-methods.js +99 -0
  209. package/dist/src/daemon/github-issue-privacy.d.ts +6 -0
  210. package/dist/src/daemon/github-issue-privacy.js +131 -0
  211. package/dist/src/daemon/github-merge.d.ts +18 -0
  212. package/dist/src/daemon/github-merge.js +259 -0
  213. package/dist/src/daemon/github-methods.d.ts +5 -0
  214. package/dist/src/daemon/github-methods.js +198 -0
  215. package/dist/src/daemon/github-operation.d.ts +38 -0
  216. package/dist/src/daemon/github-operation.js +57 -0
  217. package/dist/src/daemon/github-worker.d.ts +17 -0
  218. package/dist/src/daemon/github-worker.js +281 -0
  219. package/dist/src/daemon/host-environment.d.ts +8 -0
  220. package/dist/src/daemon/host-environment.js +14 -0
  221. package/dist/src/daemon/issue-queue.d.ts +9 -0
  222. package/dist/src/daemon/issue-queue.js +163 -0
  223. package/dist/src/daemon/notify-message.d.ts +14 -0
  224. package/dist/src/daemon/notify-message.js +48 -0
  225. package/dist/src/daemon/notify.d.ts +12 -0
  226. package/dist/src/daemon/notify.js +161 -0
  227. package/dist/src/daemon/operation-journal.d.ts +42 -0
  228. package/dist/src/daemon/operation-journal.js +53 -0
  229. package/dist/src/daemon/ticket-registration.d.ts +33 -0
  230. package/dist/src/daemon/ticket-registration.js +177 -0
  231. package/dist/src/daemon/ticket-source.d.ts +17 -0
  232. package/dist/src/daemon/ticket-source.js +36 -0
  233. package/dist/src/daemon/work-tree.d.ts +26 -0
  234. package/dist/src/daemon/work-tree.js +206 -0
  235. package/dist/src/effect-authorization.d.ts +21 -0
  236. package/dist/src/effect-authorization.js +14 -0
  237. package/dist/src/execution-pin.d.ts +4 -0
  238. package/dist/src/execution-pin.js +68 -0
  239. package/dist/src/host/start-delivery.d.ts +41 -0
  240. package/dist/src/host/start-delivery.js +68 -0
  241. package/dist/src/host/step-bridge-host.d.ts +79 -0
  242. package/dist/src/host/step-bridge-host.js +205 -0
  243. package/dist/src/host/step-claims.d.ts +31 -0
  244. package/dist/src/host/step-claims.js +85 -0
  245. package/dist/src/host/world-host.d.ts +21 -0
  246. package/dist/src/host/world-host.js +51 -0
  247. package/dist/src/host/world-reconciliation.d.ts +37 -0
  248. package/dist/src/host/world-reconciliation.js +75 -0
  249. package/dist/src/host/world-runs.d.ts +14 -0
  250. package/dist/src/host/world-runs.js +61 -0
  251. package/dist/src/operation-identity.d.ts +7 -0
  252. package/dist/src/operation-identity.js +59 -0
  253. package/dist/src/protocol.d.ts +35 -0
  254. package/dist/src/protocol.js +64 -0
  255. package/dist/src/resource-files.d.ts +1 -0
  256. package/dist/src/resource-files.js +29 -0
  257. package/dist/src/service/changes.d.ts +11 -0
  258. package/dist/src/service/changes.js +32 -0
  259. package/dist/src/service/decision-handler.d.ts +9 -0
  260. package/dist/src/service/decision-handler.js +233 -0
  261. package/dist/src/service/event-handler.d.ts +10 -0
  262. package/dist/src/service/event-handler.js +70 -0
  263. package/dist/src/service/expiry.d.ts +13 -0
  264. package/dist/src/service/expiry.js +53 -0
  265. package/dist/src/service/gateway.d.ts +21 -0
  266. package/dist/src/service/gateway.js +120 -0
  267. package/dist/src/service/registry.d.ts +40 -0
  268. package/dist/src/service/registry.js +13 -0
  269. package/dist/src/service/replies.d.ts +26 -0
  270. package/dist/src/service/replies.js +56 -0
  271. package/dist/src/service/run-handlers.d.ts +4 -0
  272. package/dist/src/service/run-handlers.js +271 -0
  273. package/dist/src/service/service.d.ts +58 -0
  274. package/dist/src/service/service.js +212 -0
  275. package/dist/src/service/submission-handler.d.ts +4 -0
  276. package/dist/src/service/submission-handler.js +206 -0
  277. package/dist/src/service/transport.d.ts +16 -0
  278. package/dist/src/service/transport.js +141 -0
  279. package/dist/src/service/worker-port.d.ts +85 -0
  280. package/dist/src/service/worker-port.js +126 -0
  281. package/dist/src/step-bridge.d.ts +57 -0
  282. package/dist/src/step-bridge.js +4 -0
  283. package/dist/src/steps/decision-gate.d.ts +2 -0
  284. package/dist/src/steps/decision-gate.js +8 -0
  285. package/dist/src/steps/load-cycle.d.ts +10 -0
  286. package/dist/src/steps/load-cycle.js +11 -0
  287. package/dist/src/steps/protected-effect.d.ts +2 -0
  288. package/dist/src/steps/protected-effect.js +8 -0
  289. package/dist/src/storage/decision-rows.d.ts +54 -0
  290. package/dist/src/storage/decision-rows.js +72 -0
  291. package/dist/src/storage/decision-snapshots.d.ts +17 -0
  292. package/dist/src/storage/decision-snapshots.js +25 -0
  293. package/dist/src/storage/domain-changes.d.ts +48 -0
  294. package/dist/src/storage/domain-changes.js +213 -0
  295. package/dist/src/storage/domain-rows.d.ts +85 -0
  296. package/dist/src/storage/domain-rows.js +129 -0
  297. package/dist/src/storage/domain-schema.d.ts +32 -0
  298. package/dist/src/storage/domain-schema.js +193 -0
  299. package/dist/src/storage/effect-changes.d.ts +5 -0
  300. package/dist/src/storage/effect-changes.js +105 -0
  301. package/dist/src/storage/effect-rows.d.ts +67 -0
  302. package/dist/src/storage/effect-rows.js +74 -0
  303. package/dist/src/storage/effect-schema.d.ts +1 -0
  304. package/dist/src/storage/effect-schema.js +59 -0
  305. package/dist/src/storage/statements.d.ts +9 -0
  306. package/dist/src/storage/statements.js +8 -0
  307. package/dist/src/submission.d.ts +42 -0
  308. package/dist/src/submission.js +71 -0
  309. package/dist/src/turn-profile.d.ts +13 -0
  310. package/dist/src/turn-profile.js +100 -0
  311. package/dist/src/workflow-admission.d.ts +45 -0
  312. package/dist/src/workflow-admission.js +151 -0
  313. package/dist/src/workflow-contracts.d.ts +27 -0
  314. package/dist/src/workflow-contracts.js +88 -0
  315. package/dist/src/workflow-declaration.d.ts +11 -0
  316. package/dist/src/workflow-declaration.js +57 -0
  317. package/dist/src/workflow-resources.d.ts +8 -0
  318. package/dist/src/workflow-resources.js +14 -0
  319. package/dist/src/workflows.d.ts +5 -0
  320. package/dist/src/workflows.js +3 -0
  321. package/dist/tools/compile-workflows.d.ts +1 -0
  322. package/dist/tools/compile-workflows.js +33 -0
  323. package/dist/tools/self-host-processes.d.ts +10 -0
  324. package/dist/tools/self-host-processes.js +151 -0
  325. package/dist/tools/self-host-workflows.d.ts +15 -0
  326. package/dist/tools/self-host-workflows.js +78 -0
  327. package/dist/tools/self-host.d.ts +1 -0
  328. package/dist/tools/self-host.js +261 -0
  329. package/dist/tools/self-update-host.d.ts +6 -0
  330. package/dist/tools/self-update-host.js +41 -0
  331. package/dist/tools/self-update.d.ts +10 -0
  332. package/dist/tools/self-update.js +105 -0
  333. package/dist/tools/workflow-manifest.d.ts +3 -0
  334. package/dist/tools/workflow-manifest.js +34 -0
  335. package/dist/workflows/develop-prd.d.ts +7 -0
  336. package/dist/workflows/develop-prd.js +97 -0
  337. package/dist/workflows/develop-ticket.d.ts +15 -0
  338. package/dist/workflows/develop-ticket.js +301 -0
  339. package/dist/workflows/issue-labels.d.ts +14 -0
  340. package/dist/workflows/issue-labels.js +36 -0
  341. package/package.json +82 -75
  342. package/dist/abstract_gpt/index.js +0 -55
  343. package/dist/cloving_gpt/adapters/Adapter.js +0 -2
  344. package/dist/cloving_gpt/adapters/azureopenai.js +0 -69
  345. package/dist/cloving_gpt/adapters/claude.js +0 -128
  346. package/dist/cloving_gpt/adapters/gemini.js +0 -135
  347. package/dist/cloving_gpt/adapters/gpt4all.js +0 -29
  348. package/dist/cloving_gpt/adapters/index.js +0 -2
  349. package/dist/cloving_gpt/adapters/mistral.js +0 -128
  350. package/dist/cloving_gpt/adapters/ollama.js +0 -128
  351. package/dist/cloving_gpt/adapters/openai.js +0 -100
  352. package/dist/cloving_gpt/index.js +0 -192
  353. package/dist/commands/analyze.js +0 -47
  354. package/dist/commands/chat.js +0 -14
  355. package/dist/commands/check.js +0 -7
  356. package/dist/commands/commit.js +0 -44
  357. package/dist/commands/config.js +0 -167
  358. package/dist/commands/describe.js +0 -235
  359. package/dist/commands/generate/code.js +0 -21
  360. package/dist/commands/generate/commit.js +0 -11
  361. package/dist/commands/generate/context.js +0 -82
  362. package/dist/commands/generate/docs.js +0 -11
  363. package/dist/commands/generate/documentation.js +0 -11
  364. package/dist/commands/generate/fizzbuzz.js +0 -35
  365. package/dist/commands/generate/init.js +0 -15
  366. package/dist/commands/generate/review.js +0 -11
  367. package/dist/commands/generate/sh.js +0 -95
  368. package/dist/commands/generate/shell.js +0 -11
  369. package/dist/commands/generate/unit_tests.js +0 -11
  370. package/dist/commands/init.js +0 -13
  371. package/dist/commands/models.js +0 -22
  372. package/dist/commands/project/build.js +0 -88
  373. package/dist/commands/project/complete.js +0 -12
  374. package/dist/commands/project/init.js +0 -82
  375. package/dist/commands/project/plan.js +0 -108
  376. package/dist/commands/proxy.js +0 -11
  377. package/dist/commands/review.js +0 -50
  378. package/dist/commands/tokens.js +0 -75
  379. package/dist/commands/unit_tests.js +0 -150
  380. package/dist/commands/update.js +0 -7
  381. package/dist/file2.js +0 -4
  382. package/dist/index.js +0 -136
  383. package/dist/managers/BlockManager.js +0 -120
  384. package/dist/managers/ChatManager.js +0 -653
  385. package/dist/managers/ChunkManager.js +0 -32
  386. package/dist/managers/CodeManager.js +0 -185
  387. package/dist/managers/CommitManager.js +0 -78
  388. package/dist/managers/DocsManager.js +0 -88
  389. package/dist/managers/DocumentationManager.js +0 -114
  390. package/dist/managers/InitManager.js +0 -230
  391. package/dist/managers/ProxyManager.js +0 -210
  392. package/dist/managers/ReviewManager.js +0 -131
  393. package/dist/managers/ShellManager.js +0 -163
  394. package/dist/managers/StreamManager.js +0 -308
  395. package/dist/managers/UnitTestManager.js +0 -243
  396. package/dist/managers/src/managers/ProxyManager.js +0 -1
  397. package/dist/newfile.js +0 -2
  398. package/dist/package.json +0 -86
  399. package/dist/utils/command_utils.js +0 -384
  400. package/dist/utils/config_utils.js +0 -249
  401. package/dist/utils/gitUtils.js +0 -42
  402. package/dist/utils/git_utils.js +0 -217
  403. package/dist/utils/modelUtils.js +0 -7
  404. package/dist/utils/model_utils.js +0 -7
  405. package/dist/utils/prompt_utils.js +0 -333
  406. package/dist/utils/prompts/CODEGEN_COULDNT_APPLY.md +0 -5
  407. package/dist/utils/prompts/CODEGEN_EXAMPLES.md +0 -82
  408. package/dist/utils/prompts/CODEGEN_INSTRUCTIONS.md +0 -43
  409. package/dist/utils/prompts/DOCS_INSTRUCTIONS.md +0 -9
  410. package/dist/utils/prompts/INIT_INSTRUCTIONS.md +0 -132
  411. package/dist/utils/prompts/REVIEW_INSTRUCTIONS.md +0 -49
  412. package/dist/utils/prompts/SHELL_INSTRUCTIONS.md +0 -15
  413. package/dist/utils/prompts/SPECIAL_FILES.md +0 -66
  414. package/dist/utils/prompts/index.js +0 -27
  415. package/dist/utils/string_utils.js +0 -505
  416. package/dist/utils/types.js +0 -2
@@ -0,0 +1,88 @@
1
+ const identifier = /^[A-Za-z0-9._:-]{1,128}$/;
2
+ const reason = /^\S[\s\S]{0,255}$/;
3
+ export function isBlockedReason(value) {
4
+ return typeof value === "string" && reason.test(value);
5
+ }
6
+ const outcomes = {
7
+ waiting_for_decision: {
8
+ keys: ["cycleId", "decisionId", "kind"],
9
+ parse: (fields) => {
10
+ const cycleId = textField(fields, {
11
+ key: "cycleId",
12
+ pattern: identifier,
13
+ });
14
+ const decisionId = textField(fields, {
15
+ key: "decisionId",
16
+ pattern: identifier,
17
+ });
18
+ if (cycleId === null || decisionId === null)
19
+ return null;
20
+ return { kind: "waiting_for_decision", cycleId, decisionId };
21
+ },
22
+ },
23
+ blocked: {
24
+ keys: ["cycleId", "evidenceId", "kind", "reason"],
25
+ parse: (fields) => {
26
+ const cycleId = textField(fields, {
27
+ key: "cycleId",
28
+ pattern: identifier,
29
+ });
30
+ const evidenceId = textField(fields, {
31
+ key: "evidenceId",
32
+ pattern: identifier,
33
+ });
34
+ const blocker = fields["reason"];
35
+ if (cycleId === null || evidenceId === null || !isBlockedReason(blocker))
36
+ return null;
37
+ return { kind: "blocked", cycleId, reason: blocker, evidenceId };
38
+ },
39
+ },
40
+ handoff_requested: {
41
+ keys: ["cycleId", "kind", "promotionId"],
42
+ parse: (fields) => {
43
+ const cycleId = textField(fields, {
44
+ key: "cycleId",
45
+ pattern: identifier,
46
+ });
47
+ const promotionId = textField(fields, {
48
+ key: "promotionId",
49
+ pattern: identifier,
50
+ });
51
+ if (cycleId === null || promotionId === null)
52
+ return null;
53
+ return { kind: "handoff_requested", cycleId, promotionId };
54
+ },
55
+ },
56
+ };
57
+ export function validateDevelopmentInput(value) {
58
+ const fields = exactFields(value, ["cycleId"]);
59
+ const cycleId = fields && textField(fields, { key: "cycleId", pattern: identifier });
60
+ if (!cycleId)
61
+ return { kind: "invalid", reason: "invalid-development-input" };
62
+ return { kind: "valid", value: { cycleId } };
63
+ }
64
+ export function validateCycleOutcome(value, input) {
65
+ const kind = exactFields(value, null)?.["kind"];
66
+ const contract = typeof kind === "string" && Object.hasOwn(outcomes, kind)
67
+ ? outcomes[kind]
68
+ : undefined;
69
+ const fields = contract && exactFields(value, contract.keys);
70
+ const outcome = fields && contract.parse(fields);
71
+ if (!outcome || outcome.cycleId !== input.cycleId)
72
+ return { kind: "invalid", reason: "invalid-cycle-outcome" };
73
+ return { kind: "valid", value: outcome };
74
+ }
75
+ function exactFields(value, keys) {
76
+ if (!value || typeof value !== "object" || Array.isArray(value))
77
+ return null;
78
+ const fields = Object.fromEntries(Object.entries(value));
79
+ if (keys &&
80
+ JSON.stringify(Object.keys(fields).sort()) !== JSON.stringify(keys))
81
+ return null;
82
+ return fields;
83
+ }
84
+ function textField(fields, field) {
85
+ const { key, pattern } = field;
86
+ const value = fields[key];
87
+ return typeof value === "string" && pattern.test(value) ? value : null;
88
+ }
@@ -0,0 +1,11 @@
1
+ import type { SubmissionContract } from "./submission.ts";
2
+ export interface WorkflowDeclaration {
3
+ readonly workflowId: string;
4
+ readonly effectLimit: number;
5
+ readonly capabilities: readonly ("claude" | "github")[];
6
+ readonly input: SubmissionContract;
7
+ }
8
+ export interface DeclaredWorkflow extends WorkflowDeclaration {
9
+ readonly functionName: string;
10
+ }
11
+ export declare function isWorkflowDeclaration(value: unknown): value is WorkflowDeclaration;
@@ -0,0 +1,57 @@
1
+ import { record } from "./protocol.js";
2
+ function keys(fields, allowed) {
3
+ return Object.keys(fields).every((key) => allowed.includes(key));
4
+ }
5
+ function integer(value, bounds) {
6
+ return (typeof value === "number" &&
7
+ Number.isInteger(value) &&
8
+ value >= bounds.minimum &&
9
+ value <= bounds.maximum);
10
+ }
11
+ function integerBounds(fields) {
12
+ const { minimum, maximum } = fields;
13
+ if (minimum !== undefined && !Number.isInteger(minimum))
14
+ return false;
15
+ if (maximum !== undefined && !Number.isInteger(maximum))
16
+ return false;
17
+ return (typeof minimum !== "number" ||
18
+ typeof maximum !== "number" ||
19
+ minimum <= maximum);
20
+ }
21
+ function isField(value) {
22
+ const fields = record(value);
23
+ if (fields === undefined ||
24
+ !keys(fields, ["type", "optional", "minimum", "maximum"]))
25
+ return false;
26
+ if (fields["optional"] !== undefined &&
27
+ typeof fields["optional"] !== "boolean")
28
+ return false;
29
+ if (fields["type"] === "integer")
30
+ return integerBounds(fields);
31
+ return ((fields["type"] === "string" || fields["type"] === "boolean") &&
32
+ !Object.hasOwn(fields, "minimum") &&
33
+ !Object.hasOwn(fields, "maximum"));
34
+ }
35
+ function isInput(value) {
36
+ const input = record(value);
37
+ if (input === undefined || !keys(input, ["maximumBytes", "fields"]))
38
+ return false;
39
+ const fields = record(input["fields"]);
40
+ return (integer(input["maximumBytes"], { minimum: 1, maximum: 1_048_576 }) &&
41
+ fields !== undefined &&
42
+ Object.values(fields).every(isField));
43
+ }
44
+ export function isWorkflowDeclaration(value) {
45
+ const declaration = record(value);
46
+ if (declaration === undefined ||
47
+ !keys(declaration, ["workflowId", "effectLimit", "capabilities", "input"]))
48
+ return false;
49
+ const { workflowId, effectLimit, capabilities, input } = declaration;
50
+ return (typeof workflowId === "string" &&
51
+ /^[A-Za-z0-9-]{1,64}$/.test(workflowId) &&
52
+ integer(effectLimit, { minimum: 1, maximum: 100 }) &&
53
+ Array.isArray(capabilities) &&
54
+ capabilities.length > 0 &&
55
+ capabilities.every((capability) => capability === "claude" || capability === "github") &&
56
+ isInput(input));
57
+ }
@@ -0,0 +1,8 @@
1
+ export type ResolvedResources = {
2
+ readonly kind: "resolved";
3
+ readonly resources: Readonly<Record<string, string>>;
4
+ } | {
5
+ readonly kind: "inaccessible";
6
+ readonly path: string;
7
+ };
8
+ export declare function resolveResources(declared: readonly string[], discovered: unknown): ResolvedResources;
@@ -0,0 +1,14 @@
1
+ const digest = /^[0-9a-f]{64}$/;
2
+ export function resolveResources(declared, discovered) {
3
+ const available = discovered && typeof discovered === "object" && !Array.isArray(discovered)
4
+ ? Object.fromEntries(Object.entries(discovered))
5
+ : {};
6
+ const entries = [];
7
+ for (const path of declared) {
8
+ const value = Object.hasOwn(available, path) ? available[path] : undefined;
9
+ if (typeof value !== "string" || !digest.test(value))
10
+ return { kind: "inaccessible", path };
11
+ entries.push([path, value]);
12
+ }
13
+ return { kind: "resolved", resources: Object.fromEntries(entries) };
14
+ }
@@ -0,0 +1,5 @@
1
+ export { loadCycle, type CycleLoad } from "./steps/load-cycle.ts";
2
+ export { protectedEffect } from "./steps/protected-effect.ts";
3
+ export { decisionGate } from "./steps/decision-gate.ts";
4
+ export type { GateRequest, GateResult, ProtectedRequest, ProtectedResult, ProtectedScope, } from "./step-bridge.ts";
5
+ export type { CycleOutcome, DevelopmentInput } from "./workflow-contracts.ts";
@@ -0,0 +1,3 @@
1
+ export { loadCycle } from "./steps/load-cycle.js";
2
+ export { protectedEffect } from "./steps/protected-effect.js";
3
+ export { decisionGate } from "./steps/decision-gate.js";
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,33 @@
1
+ import { mkdir, writeFile } from "node:fs/promises";
2
+ import { resolve } from "node:path";
3
+ import { BaseBuilder } from "@workflow/builders";
4
+ import { serializeManifest } from "./workflow-manifest.js";
5
+ const [sourceDirectory, outputDirectory] = process.argv.slice(2);
6
+ if (!sourceDirectory || !outputDirectory) {
7
+ throw new Error("Usage: npm run build:workflows -- SOURCE_DIRECTORY OUTPUT_DIRECTORY");
8
+ }
9
+ const output = resolve(outputDirectory);
10
+ class WorkflowBuilder extends BaseBuilder {
11
+ async build() {
12
+ const inputFiles = await this.getInputFiles();
13
+ await mkdir(output, { recursive: true });
14
+ const result = await this.createCombinedBundle({
15
+ inputFiles,
16
+ stepsOutfile: resolve(output, "steps.mjs"),
17
+ flowOutfile: resolve(output, "flow.mjs"),
18
+ format: "esm",
19
+ });
20
+ await writeFile(resolve(output, "manifest.json"), serializeManifest(result.manifest));
21
+ await this.createClientLibrary();
22
+ }
23
+ }
24
+ await new WorkflowBuilder({
25
+ buildTarget: "standalone",
26
+ workingDir: process.cwd(),
27
+ dirs: [resolve(sourceDirectory)],
28
+ stepsBundlePath: resolve(output, "steps.mjs"),
29
+ workflowsBundlePath: resolve(output, "flow.mjs"),
30
+ webhookBundlePath: resolve(output, "webhook.mjs"),
31
+ clientBundlePath: resolve(output, "client.mjs"),
32
+ sourcemap: false,
33
+ }).build();
@@ -0,0 +1,10 @@
1
+ export interface HostProcesses {
2
+ readonly project: string;
3
+ readonly product: string;
4
+ readonly runtime: string;
5
+ readonly directory: string;
6
+ readonly repository: string;
7
+ readonly watchPort: string;
8
+ readonly updateMilliseconds: number | undefined;
9
+ }
10
+ export declare function hostedPrograms(settings: HostProcesses): Promise<number>;
@@ -0,0 +1,151 @@
1
+ import { execFile, spawn } from "node:child_process";
2
+ import { addAbortListener } from "node:events";
3
+ import { extname, join } from "node:path";
4
+ import { setTimeout as delay } from "node:timers/promises";
5
+ import { promisify } from "node:util";
6
+ import { selfUpdater } from "./self-update.js";
7
+ import { workerTurnActive } from "./self-update-host.js";
8
+ function launched(argumentsList, settings) {
9
+ const child = spawn(process.execPath, argumentsList, {
10
+ cwd: settings.directory,
11
+ env: settings.environment,
12
+ stdio: "inherit",
13
+ });
14
+ const ended = new Promise((settle, reject) => {
15
+ child.once("error", reject);
16
+ child.once("close", (status) => {
17
+ settle(status ?? 1);
18
+ });
19
+ });
20
+ return { child, ended };
21
+ }
22
+ async function stopped(programs) {
23
+ for (const program of programs)
24
+ program.child.kill("SIGTERM");
25
+ await Promise.all(programs.map((program) => program.ended));
26
+ }
27
+ function updatingGit(settings, stopping) {
28
+ const git = promisify(execFile);
29
+ return async (argumentsList) => {
30
+ if (argumentsList[0] === "merge")
31
+ return (await git("git", ["-C", settings.repository, ...argumentsList], {
32
+ encoding: "utf8",
33
+ })).stdout;
34
+ const command = git("git", ["-C", settings.repository, ...argumentsList], {
35
+ encoding: "utf8",
36
+ signal: stopping,
37
+ killSignal: "SIGKILL",
38
+ timeout: argumentsList[0] === "fetch" || argumentsList[0] === "remote"
39
+ ? 30000
40
+ : 0,
41
+ });
42
+ const listener = addAbortListener(stopping, () => {
43
+ command.child.kill("SIGKILL");
44
+ });
45
+ try {
46
+ return (await command).stdout;
47
+ }
48
+ finally {
49
+ listener[Symbol.dispose]();
50
+ }
51
+ };
52
+ }
53
+ async function polled(settings, lifecycle) {
54
+ if (settings.updateMilliseconds === undefined)
55
+ return;
56
+ const cancelled = () => lifecycle.stopping.aborted;
57
+ const updater = selfUpdater({
58
+ directory: settings.directory,
59
+ git: updatingGit(settings, lifecycle.stopping),
60
+ active: async () => lifecycle.stopping.aborted ||
61
+ (await workerTurnActive(settings.directory)),
62
+ stop: async () => {
63
+ if (lifecycle.stopping.aborted)
64
+ throw new Error("self-update-stopped");
65
+ await lifecycle.stop();
66
+ },
67
+ error: (line) => {
68
+ process.stderr.write(line);
69
+ },
70
+ });
71
+ while (!cancelled()) {
72
+ await delay(settings.updateMilliseconds, undefined, {
73
+ signal: lifecycle.stopping,
74
+ }).catch((error) => {
75
+ if (!(error instanceof Error) || error.name !== "AbortError")
76
+ throw error;
77
+ });
78
+ if (cancelled())
79
+ return;
80
+ const status = await updater.check();
81
+ if (status !== undefined)
82
+ return status;
83
+ }
84
+ return undefined;
85
+ }
86
+ function hostedChildren(settings) {
87
+ const daemon = launched([join(settings.project, "start.mjs")], {
88
+ directory: settings.project,
89
+ environment: process.env,
90
+ });
91
+ if (settings.watchPort === "off")
92
+ return [daemon];
93
+ return [
94
+ daemon,
95
+ launched([
96
+ join(settings.product, `src/cli${extname(import.meta.filename)}`),
97
+ "watch",
98
+ "--port",
99
+ settings.watchPort,
100
+ ], {
101
+ directory: settings.product,
102
+ environment: {
103
+ ...process.env,
104
+ CLOVING_RUNTIME_DIR: settings.runtime,
105
+ },
106
+ }),
107
+ ];
108
+ }
109
+ export async function hostedPrograms(settings) {
110
+ const programs = hostedChildren(settings);
111
+ const daemon = programs[0];
112
+ const stopping = new AbortController();
113
+ let updating = false;
114
+ const interrupt = () => {
115
+ stopping.abort();
116
+ for (const program of programs)
117
+ program.child.kill("SIGINT");
118
+ };
119
+ const terminate = () => {
120
+ stopping.abort();
121
+ for (const program of programs)
122
+ program.child.kill("SIGTERM");
123
+ };
124
+ process.on("SIGINT", interrupt);
125
+ process.on("SIGTERM", terminate);
126
+ const polling = polled(settings, {
127
+ stopping: stopping.signal,
128
+ stop: async () => {
129
+ updating = true;
130
+ await stopped(programs);
131
+ },
132
+ });
133
+ try {
134
+ const [status, updateStatus] = await Promise.all([
135
+ daemon.ended.then((status) => {
136
+ if (!updating)
137
+ stopping.abort();
138
+ return status;
139
+ }),
140
+ polling,
141
+ ]);
142
+ return updateStatus ?? status;
143
+ }
144
+ finally {
145
+ stopping.abort();
146
+ await stopped(programs);
147
+ await polling;
148
+ process.off("SIGINT", interrupt);
149
+ process.off("SIGTERM", terminate);
150
+ }
151
+ }
@@ -0,0 +1,15 @@
1
+ import type { WorkflowManifest } from "@workflow/builders";
2
+ import { type DeclaredWorkflow } from "../src/workflow-declaration.ts";
3
+ interface HostManifest {
4
+ readonly schemaVersion: 1;
5
+ readonly name: string;
6
+ readonly workflowId: string;
7
+ readonly steps: readonly string[];
8
+ readonly capabilities: readonly string[];
9
+ readonly resources: readonly string[];
10
+ readonly artifacts: string;
11
+ }
12
+ export declare function workflowFiles(directory: string): Promise<string[]>;
13
+ export declare function workflowDeclarations(directory: string, manifests: Readonly<Record<string, HostManifest>>): Promise<readonly DeclaredWorkflow[]>;
14
+ export declare function workflowManifests(compiled: WorkflowManifest): Readonly<Record<string, HostManifest>>;
15
+ export {};
@@ -0,0 +1,78 @@
1
+ import { readdir, readFile } from "node:fs/promises";
2
+ import { basename, extname, join } from "node:path";
3
+ import { isWorkflowDeclaration, } from "../src/workflow-declaration.js";
4
+ export async function workflowFiles(directory) {
5
+ const entries = await readdir(directory, { withFileTypes: true });
6
+ return entries
7
+ .filter((entry) => entry.isFile() &&
8
+ /\.(?:ts|js)$/.test(entry.name) &&
9
+ !entry.name.endsWith(".d.ts"))
10
+ .map((entry) => entry.name)
11
+ .sort();
12
+ }
13
+ export async function workflowDeclarations(directory, manifests) {
14
+ const declarations = [];
15
+ for (const file of await workflowFiles(directory)) {
16
+ const name = basename(file, extname(file));
17
+ const declarationFile = `${name}.declaration.json`;
18
+ const text = await readFile(join(directory, declarationFile), "utf8").catch((error) => {
19
+ if (error instanceof Error &&
20
+ "code" in error &&
21
+ error.code === "ENOENT")
22
+ return undefined;
23
+ throw new Error(`invalid-workflow-declaration: ${declarationFile}`, {
24
+ cause: error,
25
+ });
26
+ });
27
+ if (text === undefined)
28
+ continue;
29
+ const entry = Object.entries(manifests).find(([, manifest]) => manifest.name === name);
30
+ try {
31
+ const value = JSON.parse(text);
32
+ if (!isWorkflowDeclaration(value) || entry === undefined)
33
+ throw new Error("Invalid declaration or missing workflow function.");
34
+ declarations.push({
35
+ ...value,
36
+ functionName: entry[0],
37
+ capabilities: [...new Set(value.capabilities)],
38
+ });
39
+ }
40
+ catch (error) {
41
+ throw new Error(`invalid-workflow-declaration: ${declarationFile}`, {
42
+ cause: error,
43
+ });
44
+ }
45
+ }
46
+ return declarations;
47
+ }
48
+ export function workflowManifests(compiled) {
49
+ const names = new Set();
50
+ const steps = Object.values(compiled.steps ?? {})
51
+ .flatMap((entries) => Object.values(entries))
52
+ .map((entry) => entry.stepId)
53
+ .filter((identifier) => identifier.startsWith("step//cloving/"));
54
+ return Object.fromEntries(Object.entries(compiled.workflows ?? {}).flatMap(([file, entries]) => {
55
+ const functions = Object.values(entries);
56
+ if (functions.length > 1)
57
+ throw new Error(`${file} must contain only one workflow function.`);
58
+ return functions.map((entry) => {
59
+ const workflowId = entry.workflowId;
60
+ const functionName = workflowId.slice(workflowId.lastIndexOf("//") + 2);
61
+ if (names.has(functionName))
62
+ throw new Error(`duplicate-workflow-function: ${functionName}`);
63
+ names.add(functionName);
64
+ return [
65
+ functionName,
66
+ {
67
+ schemaVersion: 1,
68
+ name: basename(file, extname(file)),
69
+ workflowId,
70
+ steps,
71
+ capabilities: ["claude", "github"],
72
+ resources: [],
73
+ artifacts: "artifacts",
74
+ },
75
+ ];
76
+ });
77
+ }));
78
+ }
@@ -0,0 +1 @@
1
+ export {};