cloving 0.3.20 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (515) hide show
  1. package/{LICENSE.md → LICENSE} +1 -1
  2. package/README.md +606 -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 +271 -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 +29 -0
  32. package/dist/src/authority/reconciliation.js +156 -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 +124 -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 +67 -0
  78. package/dist/src/broker/actor/authority-session.js +251 -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/analysis-batches.d.ts +24 -0
  138. package/dist/src/chats/analysis-batches.js +83 -0
  139. package/dist/src/chats/analysis-contract.d.ts +80 -0
  140. package/dist/src/chats/analysis-contract.js +16 -0
  141. package/dist/src/chats/analysis-data.d.ts +3 -0
  142. package/dist/src/chats/analysis-data.js +85 -0
  143. package/dist/src/chats/analysis-input.d.ts +12 -0
  144. package/dist/src/chats/analysis-input.js +83 -0
  145. package/dist/src/chats/analysis-links.d.ts +2 -0
  146. package/dist/src/chats/analysis-links.js +25 -0
  147. package/dist/src/chats/analysis-prompt.d.ts +10 -0
  148. package/dist/src/chats/analysis-prompt.js +16 -0
  149. package/dist/src/chats/analysis-proposal.d.ts +2 -0
  150. package/dist/src/chats/analysis-proposal.js +32 -0
  151. package/dist/src/chats/analysis-provenance.d.ts +4 -0
  152. package/dist/src/chats/analysis-provenance.js +99 -0
  153. package/dist/src/chats/analysis-shape.d.ts +3 -0
  154. package/dist/src/chats/analysis-shape.js +228 -0
  155. package/dist/src/chats/analysis.d.ts +3 -0
  156. package/dist/src/chats/analysis.js +42 -0
  157. package/dist/src/chats/corpus-input.d.ts +5 -0
  158. package/dist/src/chats/corpus-input.js +288 -0
  159. package/dist/src/chats/destination.d.ts +4 -0
  160. package/dist/src/chats/destination.js +96 -0
  161. package/dist/src/chats/import.d.ts +15 -0
  162. package/dist/src/chats/import.js +243 -0
  163. package/dist/src/chats/input-file.d.ts +3 -0
  164. package/dist/src/chats/input-file.js +32 -0
  165. package/dist/src/chats/normalize.d.ts +29 -0
  166. package/dist/src/chats/normalize.js +155 -0
  167. package/dist/src/chats/previous-import.d.ts +5 -0
  168. package/dist/src/chats/previous-import.js +34 -0
  169. package/dist/src/chats/reader.d.ts +21 -0
  170. package/dist/src/chats/reader.js +118 -0
  171. package/dist/src/chats/redact-import.d.ts +14 -0
  172. package/dist/src/chats/redact-import.js +141 -0
  173. package/dist/src/chats/redaction.d.ts +41 -0
  174. package/dist/src/chats/redaction.js +161 -0
  175. package/dist/src/chats/revision-input.d.ts +3 -0
  176. package/dist/src/chats/revision-input.js +180 -0
  177. package/dist/src/chats/revision.d.ts +48 -0
  178. package/dist/src/chats/revision.js +94 -0
  179. package/dist/src/chats/selection.d.ts +25 -0
  180. package/dist/src/chats/selection.js +109 -0
  181. package/dist/src/chats/source.d.ts +23 -0
  182. package/dist/src/chats/source.js +135 -0
  183. package/dist/src/chats/structure.d.ts +57 -0
  184. package/dist/src/chats/structure.js +216 -0
  185. package/dist/src/cli/arguments.d.ts +31 -0
  186. package/dist/src/cli/arguments.js +235 -0
  187. package/dist/src/cli/client.d.ts +16 -0
  188. package/dist/src/cli/client.js +159 -0
  189. package/dist/src/cli/commands.d.ts +17 -0
  190. package/dist/src/cli/commands.js +271 -0
  191. package/dist/src/cli/main.d.ts +2 -0
  192. package/dist/src/cli/main.js +127 -0
  193. package/dist/src/cli/render.d.ts +10 -0
  194. package/dist/src/cli/render.js +254 -0
  195. package/dist/src/cli/runtime-arguments.d.ts +73 -0
  196. package/dist/src/cli/runtime-arguments.js +248 -0
  197. package/dist/src/cli/runtime-directory.d.ts +4 -0
  198. package/dist/src/cli/runtime-directory.js +25 -0
  199. package/dist/src/cli/toolchain.d.ts +3 -0
  200. package/dist/src/cli/toolchain.js +74 -0
  201. package/dist/src/cli/usage-render.d.ts +3 -0
  202. package/dist/src/cli/usage-render.js +28 -0
  203. package/dist/src/cli/usage.d.ts +5 -0
  204. package/dist/src/cli/usage.js +156 -0
  205. package/dist/src/cli/validate.d.ts +38 -0
  206. package/dist/src/cli/validate.js +116 -0
  207. package/dist/src/cli/watch-actions.d.ts +10 -0
  208. package/dist/src/cli/watch-actions.js +58 -0
  209. package/dist/src/cli/watch-board-view.d.ts +54 -0
  210. package/dist/src/cli/watch-board-view.js +201 -0
  211. package/dist/src/cli/watch-board.d.ts +15 -0
  212. package/dist/src/cli/watch-board.js +179 -0
  213. package/dist/src/cli/watch-card-client.d.ts +1 -0
  214. package/dist/src/cli/watch-card-client.js +44 -0
  215. package/dist/src/cli/watch-card-forms.d.ts +2 -0
  216. package/dist/src/cli/watch-card-forms.js +33 -0
  217. package/dist/src/cli/watch-card-reply.d.ts +5 -0
  218. package/dist/src/cli/watch-card-reply.js +34 -0
  219. package/dist/src/cli/watch-card-view.d.ts +40 -0
  220. package/dist/src/cli/watch-card-view.js +86 -0
  221. package/dist/src/cli/watch-client.d.ts +1 -0
  222. package/dist/src/cli/watch-client.js +118 -0
  223. package/dist/src/cli/watch-element.d.ts +11 -0
  224. package/dist/src/cli/watch-element.js +6 -0
  225. package/dist/src/cli/watch-model.d.ts +29 -0
  226. package/dist/src/cli/watch-model.js +278 -0
  227. package/dist/src/cli/watch-navigation.d.ts +9 -0
  228. package/dist/src/cli/watch-navigation.js +40 -0
  229. package/dist/src/cli/watch-page.d.ts +1 -0
  230. package/dist/src/cli/watch-page.js +258 -0
  231. package/dist/src/cli/watch-paths.d.ts +2 -0
  232. package/dist/src/cli/watch-paths.js +52 -0
  233. package/dist/src/cli/watch-phases.d.ts +7 -0
  234. package/dist/src/cli/watch-phases.js +148 -0
  235. package/dist/src/cli/watch-pr-board.d.ts +3 -0
  236. package/dist/src/cli/watch-pr-board.js +26 -0
  237. package/dist/src/cli/watch-pr-command.d.ts +15 -0
  238. package/dist/src/cli/watch-pr-command.js +37 -0
  239. package/dist/src/cli/watch-pr-identity.d.ts +20 -0
  240. package/dist/src/cli/watch-pr-identity.js +62 -0
  241. package/dist/src/cli/watch-pr-observer.d.ts +19 -0
  242. package/dist/src/cli/watch-pr-observer.js +108 -0
  243. package/dist/src/cli/watch-pr-settings.d.ts +8 -0
  244. package/dist/src/cli/watch-pr-settings.js +47 -0
  245. package/dist/src/cli/watch-reads.d.ts +28 -0
  246. package/dist/src/cli/watch-reads.js +248 -0
  247. package/dist/src/cli/watch-render.d.ts +153 -0
  248. package/dist/src/cli/watch-render.js +102 -0
  249. package/dist/src/cli/watch-run-input.d.ts +14 -0
  250. package/dist/src/cli/watch-run-input.js +49 -0
  251. package/dist/src/cli/watch-server.d.ts +13 -0
  252. package/dist/src/cli/watch-server.js +214 -0
  253. package/dist/src/cli/watch-start-view.d.ts +18 -0
  254. package/dist/src/cli/watch-start-view.js +77 -0
  255. package/dist/src/cli/watch-stream.d.ts +11 -0
  256. package/dist/src/cli/watch-stream.js +128 -0
  257. package/dist/src/cli/watch-turn.d.ts +30 -0
  258. package/dist/src/cli/watch-turn.js +135 -0
  259. package/dist/src/cli/watch-usage.d.ts +6 -0
  260. package/dist/src/cli/watch-usage.js +65 -0
  261. package/dist/src/cli/watch-view.d.ts +54 -0
  262. package/dist/src/cli/watch-view.js +267 -0
  263. package/dist/src/cli.d.ts +2 -0
  264. package/dist/src/cli.js +104 -0
  265. package/dist/src/daemon/analysis-launch.d.ts +5 -0
  266. package/dist/src/daemon/analysis-launch.js +81 -0
  267. package/dist/src/daemon/analysis-token.d.ts +6 -0
  268. package/dist/src/daemon/analysis-token.js +88 -0
  269. package/dist/src/daemon/analysis-worker.d.ts +22 -0
  270. package/dist/src/daemon/analysis-worker.js +219 -0
  271. package/dist/src/daemon/chats-files.d.ts +15 -0
  272. package/dist/src/daemon/chats-files.js +113 -0
  273. package/dist/src/daemon/chats-worker.d.ts +12 -0
  274. package/dist/src/daemon/chats-worker.js +200 -0
  275. package/dist/src/daemon/claude-turn.d.ts +38 -0
  276. package/dist/src/daemon/claude-turn.js +216 -0
  277. package/dist/src/daemon/claude-worker.d.ts +29 -0
  278. package/dist/src/daemon/claude-worker.js +276 -0
  279. package/dist/src/daemon/codex-stream.d.ts +4 -0
  280. package/dist/src/daemon/codex-stream.js +129 -0
  281. package/dist/src/daemon/daemon.d.ts +49 -0
  282. package/dist/src/daemon/daemon.js +195 -0
  283. package/dist/src/daemon/delivery-router.d.ts +10 -0
  284. package/dist/src/daemon/delivery-router.js +34 -0
  285. package/dist/src/daemon/github-calls.d.ts +29 -0
  286. package/dist/src/daemon/github-calls.js +127 -0
  287. package/dist/src/daemon/github-issue-methods.d.ts +3 -0
  288. package/dist/src/daemon/github-issue-methods.js +99 -0
  289. package/dist/src/daemon/github-issue-privacy.d.ts +6 -0
  290. package/dist/src/daemon/github-issue-privacy.js +131 -0
  291. package/dist/src/daemon/github-merge.d.ts +18 -0
  292. package/dist/src/daemon/github-merge.js +259 -0
  293. package/dist/src/daemon/github-methods.d.ts +5 -0
  294. package/dist/src/daemon/github-methods.js +202 -0
  295. package/dist/src/daemon/github-operation.d.ts +38 -0
  296. package/dist/src/daemon/github-operation.js +57 -0
  297. package/dist/src/daemon/github-ticket-status.d.ts +3 -0
  298. package/dist/src/daemon/github-ticket-status.js +268 -0
  299. package/dist/src/daemon/github-worker.d.ts +17 -0
  300. package/dist/src/daemon/github-worker.js +281 -0
  301. package/dist/src/daemon/host-environment.d.ts +8 -0
  302. package/dist/src/daemon/host-environment.js +14 -0
  303. package/dist/src/daemon/issue-queue.d.ts +10 -0
  304. package/dist/src/daemon/issue-queue.js +254 -0
  305. package/dist/src/daemon/notify-message.d.ts +14 -0
  306. package/dist/src/daemon/notify-message.js +48 -0
  307. package/dist/src/daemon/notify.d.ts +12 -0
  308. package/dist/src/daemon/notify.js +161 -0
  309. package/dist/src/daemon/operation-journal.d.ts +43 -0
  310. package/dist/src/daemon/operation-journal.js +55 -0
  311. package/dist/src/daemon/retrying-turn.d.ts +9 -0
  312. package/dist/src/daemon/retrying-turn.js +185 -0
  313. package/dist/src/daemon/ticket-registration.d.ts +33 -0
  314. package/dist/src/daemon/ticket-registration.js +177 -0
  315. package/dist/src/daemon/ticket-source.d.ts +17 -0
  316. package/dist/src/daemon/ticket-source.js +36 -0
  317. package/dist/src/daemon/work-tree.d.ts +26 -0
  318. package/dist/src/daemon/work-tree.js +206 -0
  319. package/dist/src/effect-authorization.d.ts +21 -0
  320. package/dist/src/effect-authorization.js +14 -0
  321. package/dist/src/execution-pin.d.ts +4 -0
  322. package/dist/src/execution-pin.js +68 -0
  323. package/dist/src/host/start-delivery.d.ts +41 -0
  324. package/dist/src/host/start-delivery.js +68 -0
  325. package/dist/src/host/step-bridge-host.d.ts +79 -0
  326. package/dist/src/host/step-bridge-host.js +205 -0
  327. package/dist/src/host/step-claims.d.ts +31 -0
  328. package/dist/src/host/step-claims.js +85 -0
  329. package/dist/src/host/world-host.d.ts +21 -0
  330. package/dist/src/host/world-host.js +51 -0
  331. package/dist/src/host/world-reconciliation.d.ts +39 -0
  332. package/dist/src/host/world-reconciliation.js +81 -0
  333. package/dist/src/host/world-runs.d.ts +14 -0
  334. package/dist/src/host/world-runs.js +69 -0
  335. package/dist/src/operation-identity.d.ts +7 -0
  336. package/dist/src/operation-identity.js +59 -0
  337. package/dist/src/protocol.d.ts +35 -0
  338. package/dist/src/protocol.js +64 -0
  339. package/dist/src/resource-files.d.ts +1 -0
  340. package/dist/src/resource-files.js +29 -0
  341. package/dist/src/service/changes.d.ts +11 -0
  342. package/dist/src/service/changes.js +32 -0
  343. package/dist/src/service/decision-handler.d.ts +9 -0
  344. package/dist/src/service/decision-handler.js +233 -0
  345. package/dist/src/service/event-handler.d.ts +10 -0
  346. package/dist/src/service/event-handler.js +70 -0
  347. package/dist/src/service/expiry.d.ts +13 -0
  348. package/dist/src/service/expiry.js +53 -0
  349. package/dist/src/service/gateway.d.ts +21 -0
  350. package/dist/src/service/gateway.js +120 -0
  351. package/dist/src/service/registry.d.ts +40 -0
  352. package/dist/src/service/registry.js +13 -0
  353. package/dist/src/service/replies.d.ts +26 -0
  354. package/dist/src/service/replies.js +56 -0
  355. package/dist/src/service/run-handlers.d.ts +4 -0
  356. package/dist/src/service/run-handlers.js +263 -0
  357. package/dist/src/service/service.d.ts +58 -0
  358. package/dist/src/service/service.js +212 -0
  359. package/dist/src/service/submission-handler.d.ts +4 -0
  360. package/dist/src/service/submission-handler.js +206 -0
  361. package/dist/src/service/transport.d.ts +16 -0
  362. package/dist/src/service/transport.js +141 -0
  363. package/dist/src/service/worker-port.d.ts +85 -0
  364. package/dist/src/service/worker-port.js +126 -0
  365. package/dist/src/service/worker-totals.d.ts +3 -0
  366. package/dist/src/service/worker-totals.js +28 -0
  367. package/dist/src/step-bridge.d.ts +57 -0
  368. package/dist/src/step-bridge.js +4 -0
  369. package/dist/src/steps/decision-gate.d.ts +2 -0
  370. package/dist/src/steps/decision-gate.js +8 -0
  371. package/dist/src/steps/load-cycle.d.ts +10 -0
  372. package/dist/src/steps/load-cycle.js +11 -0
  373. package/dist/src/steps/protected-effect.d.ts +2 -0
  374. package/dist/src/steps/protected-effect.js +8 -0
  375. package/dist/src/storage/decision-rows.d.ts +54 -0
  376. package/dist/src/storage/decision-rows.js +72 -0
  377. package/dist/src/storage/decision-snapshots.d.ts +17 -0
  378. package/dist/src/storage/decision-snapshots.js +25 -0
  379. package/dist/src/storage/domain-changes.d.ts +48 -0
  380. package/dist/src/storage/domain-changes.js +213 -0
  381. package/dist/src/storage/domain-rows.d.ts +85 -0
  382. package/dist/src/storage/domain-rows.js +129 -0
  383. package/dist/src/storage/domain-schema.d.ts +32 -0
  384. package/dist/src/storage/domain-schema.js +193 -0
  385. package/dist/src/storage/effect-changes.d.ts +5 -0
  386. package/dist/src/storage/effect-changes.js +105 -0
  387. package/dist/src/storage/effect-rows.d.ts +67 -0
  388. package/dist/src/storage/effect-rows.js +74 -0
  389. package/dist/src/storage/effect-schema.d.ts +1 -0
  390. package/dist/src/storage/effect-schema.js +59 -0
  391. package/dist/src/storage/statements.d.ts +9 -0
  392. package/dist/src/storage/statements.js +8 -0
  393. package/dist/src/submission.d.ts +42 -0
  394. package/dist/src/submission.js +71 -0
  395. package/dist/src/ticket-status.d.ts +8 -0
  396. package/dist/src/ticket-status.js +45 -0
  397. package/dist/src/token-prices.d.ts +19 -0
  398. package/dist/src/token-prices.js +76 -0
  399. package/dist/src/turn-profile.d.ts +13 -0
  400. package/dist/src/turn-profile.js +100 -0
  401. package/dist/src/worker-usage.d.ts +22 -0
  402. package/dist/src/worker-usage.js +44 -0
  403. package/dist/src/workflow-admission.d.ts +45 -0
  404. package/dist/src/workflow-admission.js +151 -0
  405. package/dist/src/workflow-candidate.d.ts +29 -0
  406. package/dist/src/workflow-candidate.js +59 -0
  407. package/dist/src/workflow-contracts.d.ts +29 -0
  408. package/dist/src/workflow-contracts.js +110 -0
  409. package/dist/src/workflow-declaration.d.ts +11 -0
  410. package/dist/src/workflow-declaration.js +59 -0
  411. package/dist/src/workflow-resources.d.ts +8 -0
  412. package/dist/src/workflow-resources.js +14 -0
  413. package/dist/src/workflows.d.ts +6 -0
  414. package/dist/src/workflows.js +4 -0
  415. package/dist/tools/compile-workflows.d.ts +1 -0
  416. package/dist/tools/compile-workflows.js +33 -0
  417. package/dist/tools/self-host-processes.d.ts +10 -0
  418. package/dist/tools/self-host-processes.js +156 -0
  419. package/dist/tools/self-host-workflows.d.ts +15 -0
  420. package/dist/tools/self-host-workflows.js +78 -0
  421. package/dist/tools/self-host.d.ts +1 -0
  422. package/dist/tools/self-host.js +261 -0
  423. package/dist/tools/self-update-host.d.ts +13 -0
  424. package/dist/tools/self-update-host.js +88 -0
  425. package/dist/tools/self-update.d.ts +11 -0
  426. package/dist/tools/self-update.js +177 -0
  427. package/dist/tools/workflow-manifest.d.ts +3 -0
  428. package/dist/tools/workflow-manifest.js +34 -0
  429. package/dist/workflows/analyze-chats.d.ts +10 -0
  430. package/dist/workflows/analyze-chats.declaration.json +9 -0
  431. package/dist/workflows/analyze-chats.js +73 -0
  432. package/dist/workflows/develop-prd.d.ts +7 -0
  433. package/dist/workflows/develop-prd.js +97 -0
  434. package/dist/workflows/develop-ticket.d.ts +9 -0
  435. package/dist/workflows/develop-ticket.js +202 -0
  436. package/dist/workflows/issue-labels.d.ts +16 -0
  437. package/dist/workflows/issue-labels.js +70 -0
  438. package/dist/workflows/ticket-prompts.d.ts +35 -0
  439. package/dist/workflows/ticket-prompts.js +133 -0
  440. package/package.json +84 -75
  441. package/dist/abstract_gpt/index.js +0 -55
  442. package/dist/cloving_gpt/adapters/Adapter.js +0 -2
  443. package/dist/cloving_gpt/adapters/azureopenai.js +0 -69
  444. package/dist/cloving_gpt/adapters/claude.js +0 -128
  445. package/dist/cloving_gpt/adapters/gemini.js +0 -135
  446. package/dist/cloving_gpt/adapters/gpt4all.js +0 -29
  447. package/dist/cloving_gpt/adapters/index.js +0 -2
  448. package/dist/cloving_gpt/adapters/mistral.js +0 -128
  449. package/dist/cloving_gpt/adapters/ollama.js +0 -128
  450. package/dist/cloving_gpt/adapters/openai.js +0 -100
  451. package/dist/cloving_gpt/index.js +0 -192
  452. package/dist/commands/analyze.js +0 -47
  453. package/dist/commands/chat.js +0 -14
  454. package/dist/commands/check.js +0 -7
  455. package/dist/commands/commit.js +0 -44
  456. package/dist/commands/config.js +0 -167
  457. package/dist/commands/describe.js +0 -235
  458. package/dist/commands/generate/code.js +0 -21
  459. package/dist/commands/generate/commit.js +0 -11
  460. package/dist/commands/generate/context.js +0 -82
  461. package/dist/commands/generate/docs.js +0 -11
  462. package/dist/commands/generate/documentation.js +0 -11
  463. package/dist/commands/generate/fizzbuzz.js +0 -35
  464. package/dist/commands/generate/init.js +0 -15
  465. package/dist/commands/generate/review.js +0 -11
  466. package/dist/commands/generate/sh.js +0 -95
  467. package/dist/commands/generate/shell.js +0 -11
  468. package/dist/commands/generate/unit_tests.js +0 -11
  469. package/dist/commands/init.js +0 -13
  470. package/dist/commands/models.js +0 -22
  471. package/dist/commands/project/build.js +0 -88
  472. package/dist/commands/project/complete.js +0 -12
  473. package/dist/commands/project/init.js +0 -82
  474. package/dist/commands/project/plan.js +0 -108
  475. package/dist/commands/proxy.js +0 -11
  476. package/dist/commands/review.js +0 -50
  477. package/dist/commands/tokens.js +0 -75
  478. package/dist/commands/unit_tests.js +0 -150
  479. package/dist/commands/update.js +0 -7
  480. package/dist/file2.js +0 -4
  481. package/dist/index.js +0 -136
  482. package/dist/managers/BlockManager.js +0 -120
  483. package/dist/managers/ChatManager.js +0 -653
  484. package/dist/managers/ChunkManager.js +0 -32
  485. package/dist/managers/CodeManager.js +0 -185
  486. package/dist/managers/CommitManager.js +0 -78
  487. package/dist/managers/DocsManager.js +0 -88
  488. package/dist/managers/DocumentationManager.js +0 -114
  489. package/dist/managers/InitManager.js +0 -230
  490. package/dist/managers/ProxyManager.js +0 -210
  491. package/dist/managers/ReviewManager.js +0 -131
  492. package/dist/managers/ShellManager.js +0 -163
  493. package/dist/managers/StreamManager.js +0 -308
  494. package/dist/managers/UnitTestManager.js +0 -243
  495. package/dist/managers/src/managers/ProxyManager.js +0 -1
  496. package/dist/newfile.js +0 -2
  497. package/dist/package.json +0 -86
  498. package/dist/utils/command_utils.js +0 -384
  499. package/dist/utils/config_utils.js +0 -249
  500. package/dist/utils/gitUtils.js +0 -42
  501. package/dist/utils/git_utils.js +0 -217
  502. package/dist/utils/modelUtils.js +0 -7
  503. package/dist/utils/model_utils.js +0 -7
  504. package/dist/utils/prompt_utils.js +0 -333
  505. package/dist/utils/prompts/CODEGEN_COULDNT_APPLY.md +0 -5
  506. package/dist/utils/prompts/CODEGEN_EXAMPLES.md +0 -82
  507. package/dist/utils/prompts/CODEGEN_INSTRUCTIONS.md +0 -43
  508. package/dist/utils/prompts/DOCS_INSTRUCTIONS.md +0 -9
  509. package/dist/utils/prompts/INIT_INSTRUCTIONS.md +0 -132
  510. package/dist/utils/prompts/REVIEW_INSTRUCTIONS.md +0 -49
  511. package/dist/utils/prompts/SHELL_INSTRUCTIONS.md +0 -15
  512. package/dist/utils/prompts/SPECIAL_FILES.md +0 -66
  513. package/dist/utils/prompts/index.js +0 -27
  514. package/dist/utils/string_utils.js +0 -505
  515. package/dist/utils/types.js +0 -2
@@ -1,505 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.checkBlocksApplicability = exports.applyAndSaveCurrentNewBlocks = exports.applyAndSaveBlock = exports.searchReplaceString = exports.writeFileContent = exports.ensureDirectoryExists = exports.extractCurrentNewBlocks = exports.extractBlock = exports.findBlockIndices = exports.parseMarkdownInstructions = exports.extractMarkdown = exports.extractJsonMetadata = exports.estimateTokens = void 0;
7
- const fs_1 = __importDefault(require("fs"));
8
- const path_1 = __importDefault(require("path"));
9
- const colors_1 = __importDefault(require("colors"));
10
- const BLOCK_START = '\n```';
11
- const BLOCK_CURRENT = '\n<<<<<<< CURRENT';
12
- const BLOCK_DIVIDER = '\n=======';
13
- const BLOCK_END = '\n>>>>>>> NEW\n```';
14
- // Function to estimate token count
15
- const estimateTokens = async (text) => {
16
- const charCount = text.length;
17
- const tokenCount = Math.ceil(charCount / 4);
18
- return tokenCount;
19
- };
20
- exports.estimateTokens = estimateTokens;
21
- /**
22
- * Extracts JSON metadata from an AI response string.
23
- *
24
- * This function attempts to extract a valid JSON string from the given response.
25
- * It handles responses that may contain the JSON within a code block or as plain text.
26
- *
27
- * The function performs the following steps:
28
- * 1. Looks for a ```json code block and extracts its content if found.
29
- * 2. If no code block is found, it treats the entire response as potential JSON.
30
- * 3. Trims the extracted string to remove leading/trailing whitespace.
31
- * 4. Removes any text before the first '{' and after the last '}'.
32
- *
33
- * @param {string} response - The AI response string that may contain JSON metadata.
34
- * @returns {string} A string containing only the JSON part of the response.
35
- * If no valid JSON structure is found, it may return an empty string
36
- * or a partial JSON string.
37
- *
38
- * @example
39
- * const aiResponse = '```json\n{"key": "value"}\n```\nOther text'
40
- * const jsonMetadata = extractJsonMetadata(aiResponse)
41
- * // jsonMetadata will be '{"key": "value"}'
42
- *
43
- * @example
44
- * const plainResponse = 'Some text {"key": "value"} more text'
45
- * const jsonMetadata = extractJsonMetadata(plainResponse)
46
- * // jsonMetadata will be '{"key": "value"}'
47
- */
48
- const extractJsonMetadata = (response) => {
49
- let jsonString;
50
- // Extract the ```json block from the response
51
- const jsonBlockStart = response.indexOf('```json');
52
- const jsonBlockEnd = response.indexOf('```', jsonBlockStart + 6);
53
- if (jsonBlockStart !== -1 && jsonBlockEnd !== -1) {
54
- jsonString = response.substring(jsonBlockStart + 6, jsonBlockEnd).trim();
55
- }
56
- else {
57
- jsonString = response;
58
- }
59
- // Remove any data before the first '{'
60
- const jsonStartIndex = jsonString.indexOf('{');
61
- if (jsonStartIndex !== -1) {
62
- jsonString = jsonString.substring(jsonStartIndex);
63
- }
64
- // Remove any data after the last '}'
65
- const jsonEndIndex = jsonString.lastIndexOf('}');
66
- if (jsonEndIndex !== -1) {
67
- jsonString = jsonString.substring(0, jsonEndIndex + 1);
68
- }
69
- // sanity check that the extracted string is valid JSON
70
- try {
71
- JSON.parse(jsonString);
72
- }
73
- catch (error) {
74
- jsonString = '';
75
- }
76
- return jsonString;
77
- };
78
- exports.extractJsonMetadata = extractJsonMetadata;
79
- /**
80
- * Extracts markdown content from a given response string.
81
- *
82
- * This function attempts to extract markdown content from the input string,
83
- * focusing on content within code blocks and removing any surrounding metadata.
84
- *
85
- * @param {string} response - The input string containing markdown and possibly other content.
86
- * @returns {string} The extracted markdown content.
87
- *
88
- * @example
89
- * const response = '```markdown\n# Title\nContent\n```\nOther text';
90
- * const markdown = extractMarkdown(response);
91
- * console.log(markdown); // Outputs: "# Title\nContent"
92
- */
93
- const extractMarkdown = (response) => {
94
- let markdownString = response;
95
- // Regular expression to match any ```<word> block
96
- const codeBlockRegex = /```(\w+)\s*([\s\S]*?)\s*```/g;
97
- let match;
98
- while ((match = codeBlockRegex.exec(response)) !== null) {
99
- // Extract the content inside the code block
100
- const [, , content] = match;
101
- markdownString = content.trim();
102
- }
103
- // Remove any data before the first '#'
104
- const jsonStartIndex = markdownString.indexOf('#');
105
- if (jsonStartIndex !== -1) {
106
- markdownString = markdownString.substring(jsonStartIndex);
107
- }
108
- // Remove the last ``` if it exists
109
- if (markdownString.endsWith('```')) {
110
- markdownString = markdownString.substring(0, markdownString.length - 3);
111
- }
112
- return markdownString;
113
- };
114
- exports.extractMarkdown = extractMarkdown;
115
- /**
116
- * Parses markdown instructions into separate blocks.
117
- *
118
- * This function takes a string input containing markdown instructions and
119
- * separates it into an array of strings, where each string represents a
120
- * distinct block of content (either a code block or a text block).
121
- *
122
- * @param {string} input - The input string containing markdown instructions.
123
- * @returns {string[]} An array of strings, each representing a distinct block of content.
124
- *
125
- * @example
126
- * const input = "# Title\n```js\nconst x = 1;\n```\nSome text";
127
- * const blocks = parseMarkdownInstructions(input);
128
- * console.log(blocks);
129
- * // Outputs: ["# Title", "```js\nconst x = 1;\n```", "Some text"]
130
- */
131
- const parseMarkdownInstructions = (input) => {
132
- const lines = input.split('\n');
133
- const result = [];
134
- let buffer = [];
135
- let inCodeBlock = false;
136
- lines.forEach((line) => {
137
- if (line.trim().startsWith('```')) {
138
- if (inCodeBlock) {
139
- // End of code block
140
- buffer.push(line);
141
- result.push(buffer.join('\n'));
142
- buffer = [];
143
- inCodeBlock = false;
144
- }
145
- else {
146
- // Start of code block
147
- if (buffer.length > 0) {
148
- result.push(buffer.join('\n'));
149
- buffer = [];
150
- }
151
- buffer.push(line);
152
- inCodeBlock = true;
153
- }
154
- }
155
- else {
156
- buffer.push(line);
157
- }
158
- });
159
- // If buffer has any remaining lines, add them to the result
160
- if (buffer.length > 0) {
161
- result.push(buffer.join('\n'));
162
- }
163
- return result;
164
- };
165
- exports.parseMarkdownInstructions = parseMarkdownInstructions;
166
- /**
167
- * Finds the indices of a CURRENT/NEW block within the input string.
168
- *
169
- * This function searches for the start, divider, and end markers of a CURRENT/NEW block
170
- * in the input string, starting from the given index. It returns the indices of these
171
- * markers if a complete block is found.
172
- *
173
- * @param {string} input - The input string to search for block indices.
174
- * @param {number} startIndex - The index in the input string to start searching from.
175
- * @returns {BlockIndices | null} An object containing the indices of the block components,
176
- * or null if a complete block is not found.
177
- */
178
- const findBlockIndices = (input, startIndex) => {
179
- const blockStart = input.indexOf(BLOCK_START, startIndex);
180
- if (blockStart === -1)
181
- return null;
182
- const languageStart = blockStart + BLOCK_START.length;
183
- const languageEnd = input.indexOf('\n', languageStart);
184
- if (languageEnd === -1)
185
- return null;
186
- const currentStart = input.indexOf(BLOCK_CURRENT, startIndex);
187
- const filePathStart = currentStart + BLOCK_CURRENT.length;
188
- const filePathEnd = input.indexOf('\n', filePathStart);
189
- const dividerIndex = input.indexOf(BLOCK_DIVIDER, filePathEnd);
190
- if (dividerIndex === -1)
191
- return null;
192
- const blockEnd = input.indexOf(BLOCK_END, dividerIndex);
193
- if (blockEnd === -1)
194
- return null;
195
- return {
196
- start: languageStart,
197
- current: currentStart,
198
- filePathEnd,
199
- divider: dividerIndex,
200
- end: blockEnd,
201
- };
202
- };
203
- exports.findBlockIndices = findBlockIndices;
204
- /**
205
- * Extracts the content of a CURRENT/NEW block using the provided indices.
206
- *
207
- * This function takes the input string and a set of block indices, and extracts
208
- * the file path, current content, and new content from the block.
209
- *
210
- * @param {string} input - The input string containing the CURRENT/NEW block.
211
- * @param {BlockIndices} indices - An object containing the indices of the block components.
212
- * @returns {CurrentNewBlock} An object containing the extracted file path, current content, and new content.
213
- */
214
- const extractBlock = (input, indices) => {
215
- const language = input.slice(indices.start, indices.current).trim();
216
- const filePath = input.slice(indices.current + BLOCK_CURRENT.length, indices.filePathEnd).trim();
217
- const currentContent = input.slice(indices.filePathEnd + 1, indices.divider).trim();
218
- const newContent = input.slice(indices.divider + BLOCK_DIVIDER.length, indices.end).trim();
219
- return { language, filePath, currentContent, newContent };
220
- };
221
- exports.extractBlock = extractBlock;
222
- /**
223
- * Extracts CURRENT/NEW blocks from the given input string.
224
- *
225
- * This function parses the input string to find and extract all CURRENT/NEW blocks.
226
- * Each block contains information about file paths, current content, and new content.
227
- *
228
- * The blocks are defined by specific delimiters:
229
- * - Setup: '```lang'
230
- * - Start: '<<<<<<< CURRENT'
231
- * - Divider: '======='
232
- * - End: '>>>>>>> NEW'
233
- * - Finish: '```'
234
- *
235
- * @param {string} [input] - The input string containing CURRENT/NEW blocks.
236
- * @returns {CurrentNewBlock[]} An array of CurrentNewBlock objects, each representing a parsed block.
237
- * If the input is undefined or empty, an empty array is returned.
238
- *
239
- * @example
240
- * const input = "
241
- * ```typescript
242
- * <<<<<<< CURRENT path/to/file.ts
243
- * const oldCode = 'old'
244
- * =======
245
- * const newCode = 'new'
246
- * >>>>>>> NEW
247
- * ```"
248
- * const blocks = extractCurrentNewBlocks(input)
249
- * // blocks will contain one CurrentNewBlock object with the parsed information
250
- */
251
- const extractCurrentNewBlocks = (input) => {
252
- if (!input)
253
- return [];
254
- const blocks = [];
255
- let currentIndex = 0;
256
- while (currentIndex < input.length) {
257
- const indices = (0, exports.findBlockIndices)(input, currentIndex);
258
- if (!indices)
259
- break;
260
- blocks.push((0, exports.extractBlock)(input, indices));
261
- currentIndex = indices.end + BLOCK_END.length;
262
- }
263
- return blocks;
264
- };
265
- exports.extractCurrentNewBlocks = extractCurrentNewBlocks;
266
- const readFileContent = async (filePath) => {
267
- try {
268
- return await fs_1.default.promises.readFile(filePath, 'utf-8');
269
- }
270
- catch (error) {
271
- if (error.code === 'ENOENT') {
272
- return '';
273
- }
274
- throw error;
275
- }
276
- };
277
- const ensureDirectoryExists = async (filePath) => {
278
- await fs_1.default.promises.mkdir(path_1.default.dirname(filePath), { recursive: true });
279
- };
280
- exports.ensureDirectoryExists = ensureDirectoryExists;
281
- const writeFileContent = async (filePath, content) => {
282
- await (0, exports.ensureDirectoryExists)(filePath);
283
- await fs_1.default.promises.writeFile(filePath, content);
284
- };
285
- exports.writeFileContent = writeFileContent;
286
- /**
287
- * Updates the content of a file by replacing a specified block of current content with new content.
288
- *
289
- * This function searches for the `currentContent` within the `currentContent` of the file.
290
- * If found, it replaces it with the `newContent` from the `block`, preserving the indentation
291
- * level of the original content.
292
- *
293
- * @param {string} currentContent - The existing content of the file.
294
- * @param {CurrentNewBlock} block - An object containing the current and new content to be replaced.
295
- * @returns {string} The updated file content with the specified block replaced.
296
- *
297
- * @example
298
- * const currentContent = `
299
- * function example() {
300
- * console.log('Old content')
301
- * }
302
- * `
303
- * const block = {
304
- * currentContent: "console.log('Old content')",
305
- * newContent: "console.log('New content')"
306
- * }
307
- * const updatedContent = searchReplaceString(currentContent, block)
308
- * // updatedContent will be:
309
- * // function example() {
310
- * // console.log('New content')
311
- * // }
312
- */
313
- const searchReplaceString = (currentContent, block) => {
314
- // 1) if block.currentContent.trim() is empty then return block.newContent
315
- if (block.currentContent.trim() === '') {
316
- return block.newContent;
317
- }
318
- // check if you can replace the entire block without changing indentation
319
- if (currentContent.includes(block.currentContent)) {
320
- return currentContent.replace(block.currentContent, block.newContent);
321
- }
322
- // 2) split currentContent and block.currentContent into new lines and trim() all the lines, then put back the new lines
323
- const currentLines = currentContent.split('\n').map((line) => line.trim());
324
- const blockLines = block.currentContent.split('\n').map((line) => line.trim());
325
- // 3) see if the trimmed block.currentContent matches a section of code in the trimmed currentContent
326
- const blockContent = blockLines.join('\n');
327
- const currentContentTrimmed = currentLines.join('\n');
328
- // 4) if so, make a variable named matchingLine with the line number of which line the block.currentContent starts on in currentContent
329
- const matchingLine = currentContentTrimmed.indexOf(blockContent);
330
- if (matchingLine === -1) {
331
- return currentContent; // If no match is found, return the original content
332
- }
333
- // 5) compare the first line of block.currentContent with the startLine line of currentContent, putting any preceeding spaces that are in currentContent but not in block.currentContent into a variable named preceedingSpaces
334
- const startLine = currentContent.split('\n').findIndex((line) => line.includes(blockLines[0]));
335
- if (startLine === -1) {
336
- return currentContent; // If no match is found, return the original content
337
- }
338
- const startLineContent = currentContent.split('\n')[startLine];
339
- const blockLineContent = block.currentContent.split('\n')[0];
340
- const precedingSpaces = startLineContent.replace(blockLineContent, '');
341
- // 6) add preceedingSpaces to the start of each line in both block.currentContent and block.newContent
342
- if (precedingSpaces) {
343
- const indentedCurrentContent = block.currentContent
344
- .split('\n')
345
- .map((line) => precedingSpaces + line)
346
- .join('\n');
347
- const indentedNewContent = block.newContent
348
- .split('\n')
349
- .map((line) => precedingSpaces + line)
350
- .join('\n');
351
- // 7) finally, do a simple currentContent.replace(block.currentContent, block.newContent) with the modified (added preceeding spaces to match) variables
352
- return currentContent.replace(indentedCurrentContent, indentedNewContent);
353
- }
354
- else {
355
- return currentContent.replace(block.currentContent, block.newContent);
356
- }
357
- };
358
- exports.searchReplaceString = searchReplaceString;
359
- /**
360
- * Analyzes the content of a block against the file content to find matching lines.
361
- *
362
- * This function compares the trimmed content of a block with the trimmed content of a file
363
- * to identify all occurrences of the block content within the file.
364
- *
365
- * @param {CurrentNewBlock} block - The block containing the content to be searched for.
366
- * @param {string} fileContent - The content of the file to be analyzed.
367
- * @returns {Promise<{ matchingLines: number[]; currentContentTrimmed: string }>} A promise that resolves to an object containing:
368
- * - matchingLines: An array of line numbers where the block content matches in the file.
369
- * - currentContentTrimmed: The trimmed content of the file.
370
- */
371
- const analyzeBlockContent = async (block, fileContent) => {
372
- const currentLines = fileContent.split('\n').map((line) => line.trim());
373
- const blockLines = block.currentContent.split('\n').map((line) => line.trim());
374
- const blockContent = blockLines.join('\n');
375
- const currentContentTrimmed = currentLines.join('\n');
376
- const matchingLines = [];
377
- let matchingLine = -1;
378
- while ((matchingLine = currentContentTrimmed.indexOf(blockContent, matchingLine + 1)) !== -1) {
379
- matchingLines.push(matchingLine);
380
- }
381
- return { matchingLines, currentContentTrimmed };
382
- };
383
- /**
384
- * Processes a single block by applying its changes to the corresponding file.
385
- *
386
- * This function handles the following scenarios:
387
- * 1. Creating a new file if it doesn't exist.
388
- * 2. Updating an existing file if the block's current content matches exactly once.
389
- * 3. Logging errors if the current content is not found or matches multiple times.
390
- *
391
- * @param {CurrentNewBlock} block - The block containing the changes to be applied.
392
- * @param {number} index - The index of the block being processed (used for logging).
393
- * @returns {Promise<void>} A promise that resolves when the block has been processed.
394
- */
395
- const applyAndSaveBlock = async (block, index) => {
396
- const filePath = path_1.default.resolve(block.filePath);
397
- let fileContent = await readFileContent(filePath);
398
- if (fileContent === '') {
399
- await (0, exports.writeFileContent)(filePath, block.newContent);
400
- console.log(`[${index + 1}] ${colors_1.default.green.bold(block.filePath)} has been ${colors_1.default.green.bold('created')}`);
401
- return;
402
- }
403
- const { matchingLines } = await analyzeBlockContent(block, fileContent);
404
- if (matchingLines.length === 0) {
405
- console.log(`[${index + 1}] ${colors_1.default.red.bold(block.filePath)} ${colors_1.default.red.bold('ERROR: Current content not found to replace in the file')}`);
406
- return;
407
- }
408
- else if (matchingLines.length > 1) {
409
- console.log(`[${index + 1}] ${colors_1.default.red.bold(block.filePath)} ${colors_1.default.red.bold(`ERROR: Current content matches multiple (${matchingLines.length}) parts in the file`)}`);
410
- return;
411
- }
412
- const updatedContent = (0, exports.searchReplaceString)(fileContent, block);
413
- await (0, exports.writeFileContent)(filePath, updatedContent);
414
- console.log(`[${index + 1}] ${colors_1.default.green.bold(block.filePath)} has been ${colors_1.default.yellow.bold('updated')}`);
415
- };
416
- exports.applyAndSaveBlock = applyAndSaveBlock;
417
- /**
418
- * Applies and saves the changes specified in the CurrentNewBlock array.
419
- *
420
- * This function iterates through an array of CurrentNewBlock objects, each representing
421
- * a change to be made to a file. For each block, it attempts to process the change
422
- * by either creating a new file, updating an existing file, or reporting an error
423
- * if the current content doesn't match.
424
- *
425
- * The function provides console output to inform the user about the status of each
426
- * file operation (created, updated, or error).
427
- *
428
- * @param {CurrentNewBlock[]} blocks - An array of CurrentNewBlock objects representing the changes to be applied.
429
- * @returns {Promise<void>} A promise that resolves when all blocks have been processed.
430
- *
431
- * @throws Will log errors to the console if any block processing fails, but won't stop execution for other blocks.
432
- *
433
- * @example
434
- * const blocks = [
435
- * { filePath: 'path/to/file.ts', currentContent: 'old code', newContent: 'new code' },
436
- * { filePath: 'path/to/newfile.ts', currentContent: '', newContent: 'new file content' }
437
- * ]
438
- * await applyAndSaveCurrentNewBlocks(blocks)
439
- */
440
- const applyAndSaveCurrentNewBlocks = async (blocks) => {
441
- console.log(`\nApplying and saving current/new blocks...\n`);
442
- for (const [index, block] of blocks.entries()) {
443
- try {
444
- await (0, exports.applyAndSaveBlock)(block, index);
445
- }
446
- catch (error) {
447
- console.error(`Error processing ${colors_1.default.red(block.filePath)}:`, error);
448
- }
449
- }
450
- };
451
- exports.applyAndSaveCurrentNewBlocks = applyAndSaveCurrentNewBlocks;
452
- /**
453
- * Checks if all the blocks can be applied without making any changes.
454
- *
455
- * This function iterates through an array of CurrentNewBlock objects and checks
456
- * if each block can be applied to its respective file. It returns a tuple where
457
- * the first element is a boolean indicating if all blocks can be applied, and
458
- * the second element is a string summarizing the success or failure of each block.
459
- *
460
- * @param {CurrentNewBlock[]} blocks - An array of CurrentNewBlock objects to be checked.
461
- * @returns {Promise<[boolean, string]>} A promise that resolves to a tuple containing
462
- * a boolean and a summary string.
463
- *
464
- * @example
465
- * const blocks = [
466
- * { filePath: 'path/to/file.ts', currentContent: 'old code', newContent: 'new code' },
467
- * { filePath: 'path/to/newfile.ts', currentContent: '', newContent: 'new file content' }
468
- * ]
469
- * const [canApply, summary] = await checkBlocksApplicability(blocks)
470
- */
471
- const checkBlocksApplicability = async (blocks) => {
472
- let allApplicable = true;
473
- const summary = [];
474
- for (const [index, block] of blocks.entries()) {
475
- const filePath = path_1.default.resolve(block.filePath);
476
- let fileContent = await readFileContent(filePath);
477
- if (block.newContent.trim() === '') {
478
- allApplicable = false;
479
- summary.push(`[${index + 1}] ${colors_1.default.red.bold(block.filePath)} ${colors_1.default.red.bold('cannot be applied: New content is empty')}`);
480
- }
481
- else if (fileContent === '') {
482
- summary.push(`[${index + 1}] ${colors_1.default.green.bold(block.filePath)} can be ${colors_1.default.green.bold('created')}`);
483
- }
484
- else if (block.currentContent.trim() === '') {
485
- allApplicable = false;
486
- summary.push(`[${index + 1}] ${colors_1.default.red.bold(block.filePath)} ${colors_1.default.red.bold(`cannot be applied: File '${block.filePath}' already exists`)}`);
487
- }
488
- else {
489
- const { matchingLines } = await analyzeBlockContent(block, fileContent);
490
- if (matchingLines.length === 0) {
491
- allApplicable = false;
492
- summary.push(`[${index + 1}] ${colors_1.default.red.bold(block.filePath)} ${colors_1.default.red.bold('cannot be applied: Current content not found')}`);
493
- }
494
- else if (matchingLines.length > 1) {
495
- allApplicable = false;
496
- summary.push(`[${index + 1}] ${colors_1.default.red.bold(block.filePath)} ${colors_1.default.red.bold(`cannot be applied: Current content matches multiple (${matchingLines.length}) parts in the file`)}`);
497
- }
498
- else {
499
- summary.push(`[${index + 1}] ${colors_1.default.green.bold(block.filePath)} can be ${colors_1.default.yellow.bold('updated')}`);
500
- }
501
- }
502
- }
503
- return [allApplicable, summary.join('\n')];
504
- };
505
- exports.checkBlocksApplicability = checkBlocksApplicability;
@@ -1,2 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });