cloving 0.3.19 → 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 (507) 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/.DS_Store +0 -0
  343. package/.aider.chat.history.md +0 -16978
  344. package/.aider.input.history +0 -15
  345. package/.aider.tags.cache.v3/cache.db +0 -0
  346. package/.aider.tags.cache.v3/cache.db-shm +0 -0
  347. package/.aider.tags.cache.v3/cache.db-wal +0 -0
  348. package/.cursorrules +0 -77
  349. package/.github/workflows/auto-release.yml +0 -83
  350. package/.github/workflows/ci.yml +0 -32
  351. package/.github/workflows/npm-publish.yml +0 -34
  352. package/.gitignore +0 -67
  353. package/.husky/_/.gitignore +0 -1
  354. package/.husky/_/applypatch-msg +0 -2
  355. package/.husky/_/commit-msg +0 -2
  356. package/.husky/_/h +0 -22
  357. package/.husky/_/husky.sh +0 -9
  358. package/.husky/_/post-applypatch +0 -2
  359. package/.husky/_/post-checkout +0 -2
  360. package/.husky/_/post-commit +0 -2
  361. package/.husky/_/post-merge +0 -2
  362. package/.husky/_/post-rewrite +0 -2
  363. package/.husky/_/pre-applypatch +0 -2
  364. package/.husky/_/pre-auto-gc +0 -2
  365. package/.husky/_/pre-commit +0 -2
  366. package/.husky/_/pre-merge-commit +0 -2
  367. package/.husky/_/pre-push +0 -2
  368. package/.husky/_/pre-rebase +0 -2
  369. package/.husky/_/prepare-commit-msg +0 -2
  370. package/.husky/pre-commit +0 -1
  371. package/.husky/pre-push +0 -1
  372. package/.prettierrc.json +0 -7
  373. package/.tool-versions +0 -2
  374. package/SECURITY.md +0 -15
  375. package/cloving.json +0 -67
  376. package/dist/abstract_gpt/index.js +0 -55
  377. package/dist/cloving_gpt/adapters/Adapter.js +0 -2
  378. package/dist/cloving_gpt/adapters/azureopenai.js +0 -69
  379. package/dist/cloving_gpt/adapters/claude.js +0 -128
  380. package/dist/cloving_gpt/adapters/gemini.js +0 -135
  381. package/dist/cloving_gpt/adapters/gpt4all.js +0 -29
  382. package/dist/cloving_gpt/adapters/index.js +0 -2
  383. package/dist/cloving_gpt/adapters/mistral.js +0 -128
  384. package/dist/cloving_gpt/adapters/ollama.js +0 -128
  385. package/dist/cloving_gpt/adapters/openai.js +0 -100
  386. package/dist/cloving_gpt/index.js +0 -192
  387. package/dist/commands/analyze.js +0 -47
  388. package/dist/commands/chat.js +0 -14
  389. package/dist/commands/check.js +0 -7
  390. package/dist/commands/commit.js +0 -44
  391. package/dist/commands/config.js +0 -167
  392. package/dist/commands/describe.js +0 -235
  393. package/dist/commands/generate/code.js +0 -21
  394. package/dist/commands/generate/commit.js +0 -11
  395. package/dist/commands/generate/context.js +0 -82
  396. package/dist/commands/generate/docs.js +0 -11
  397. package/dist/commands/generate/documentation.js +0 -11
  398. package/dist/commands/generate/fizzbuzz.js +0 -35
  399. package/dist/commands/generate/init.js +0 -15
  400. package/dist/commands/generate/review.js +0 -11
  401. package/dist/commands/generate/sh.js +0 -95
  402. package/dist/commands/generate/shell.js +0 -11
  403. package/dist/commands/generate/unit_tests.js +0 -11
  404. package/dist/commands/init.js +0 -13
  405. package/dist/commands/models.js +0 -22
  406. package/dist/commands/project/build.js +0 -88
  407. package/dist/commands/project/complete.js +0 -12
  408. package/dist/commands/project/init.js +0 -82
  409. package/dist/commands/project/plan.js +0 -108
  410. package/dist/commands/proxy.js +0 -11
  411. package/dist/commands/review.js +0 -50
  412. package/dist/commands/tokens.js +0 -75
  413. package/dist/commands/unit_tests.js +0 -150
  414. package/dist/commands/update.js +0 -7
  415. package/dist/file2.js +0 -4
  416. package/dist/index.js +0 -134
  417. package/dist/managers/BlockManager.js +0 -120
  418. package/dist/managers/ChatManager.js +0 -653
  419. package/dist/managers/ChunkManager.js +0 -32
  420. package/dist/managers/CodeManager.js +0 -185
  421. package/dist/managers/CommitManager.js +0 -64
  422. package/dist/managers/DocsManager.js +0 -88
  423. package/dist/managers/DocumentationManager.js +0 -114
  424. package/dist/managers/InitManager.js +0 -230
  425. package/dist/managers/ProxyManager.js +0 -210
  426. package/dist/managers/ReviewManager.js +0 -131
  427. package/dist/managers/ShellManager.js +0 -163
  428. package/dist/managers/StreamManager.js +0 -308
  429. package/dist/managers/UnitTestManager.js +0 -243
  430. package/dist/managers/src/managers/ProxyManager.js +0 -1
  431. package/dist/newfile.js +0 -2
  432. package/dist/package.json +0 -86
  433. package/dist/utils/command_utils.js +0 -384
  434. package/dist/utils/config_utils.js +0 -249
  435. package/dist/utils/gitUtils.js +0 -42
  436. package/dist/utils/git_utils.js +0 -217
  437. package/dist/utils/modelUtils.js +0 -7
  438. package/dist/utils/model_utils.js +0 -7
  439. package/dist/utils/prompt_utils.js +0 -333
  440. package/dist/utils/prompts/CODEGEN_COULDNT_APPLY.md +0 -5
  441. package/dist/utils/prompts/CODEGEN_EXAMPLES.md +0 -82
  442. package/dist/utils/prompts/CODEGEN_INSTRUCTIONS.md +0 -43
  443. package/dist/utils/prompts/DOCS_INSTRUCTIONS.md +0 -9
  444. package/dist/utils/prompts/INIT_INSTRUCTIONS.md +0 -132
  445. package/dist/utils/prompts/REVIEW_INSTRUCTIONS.md +0 -49
  446. package/dist/utils/prompts/SHELL_INSTRUCTIONS.md +0 -15
  447. package/dist/utils/prompts/SPECIAL_FILES.md +0 -66
  448. package/dist/utils/prompts/index.js +0 -27
  449. package/dist/utils/string_utils.js +0 -505
  450. package/dist/utils/types.js +0 -2
  451. package/jest.config.js +0 -11
  452. package/src/cloving_gpt/adapters/azureopenai.ts +0 -83
  453. package/src/cloving_gpt/adapters/claude.ts +0 -140
  454. package/src/cloving_gpt/adapters/gemini.ts +0 -146
  455. package/src/cloving_gpt/adapters/index.ts +0 -43
  456. package/src/cloving_gpt/adapters/mistral.ts +0 -142
  457. package/src/cloving_gpt/adapters/ollama.ts +0 -136
  458. package/src/cloving_gpt/adapters/openai.ts +0 -113
  459. package/src/cloving_gpt/index.ts +0 -229
  460. package/src/commands/chat.ts +0 -12
  461. package/src/commands/config.ts +0 -192
  462. package/src/commands/generate/code.ts +0 -18
  463. package/src/commands/generate/commit.ts +0 -9
  464. package/src/commands/generate/context.ts +0 -93
  465. package/src/commands/generate/docs.ts +0 -9
  466. package/src/commands/generate/review.ts +0 -9
  467. package/src/commands/generate/shell.ts +0 -9
  468. package/src/commands/generate/unit_tests.ts +0 -9
  469. package/src/commands/init.ts +0 -9
  470. package/src/commands/models.ts +0 -21
  471. package/src/commands/proxy.ts +0 -9
  472. package/src/commands/tokens.ts +0 -82
  473. package/src/index.ts +0 -197
  474. package/src/managers/BlockManager.ts +0 -126
  475. package/src/managers/ChatManager.ts +0 -755
  476. package/src/managers/ChunkManager.ts +0 -31
  477. package/src/managers/CodeManager.ts +0 -226
  478. package/src/managers/CommitManager.ts +0 -71
  479. package/src/managers/DocsManager.ts +0 -101
  480. package/src/managers/InitManager.ts +0 -263
  481. package/src/managers/ProxyManager.ts +0 -240
  482. package/src/managers/ReviewManager.ts +0 -154
  483. package/src/managers/ShellManager.ts +0 -172
  484. package/src/managers/StreamManager.ts +0 -353
  485. package/src/managers/UnitTestManager.ts +0 -293
  486. package/src/utils/config_utils.ts +0 -271
  487. package/src/utils/git_utils.ts +0 -230
  488. package/src/utils/model_utils.ts +0 -3
  489. package/src/utils/prompt_utils.ts +0 -375
  490. package/src/utils/prompts/CODEGEN_COULDNT_APPLY.md +0 -5
  491. package/src/utils/prompts/CODEGEN_EXAMPLES.md +0 -82
  492. package/src/utils/prompts/CODEGEN_INSTRUCTIONS.md +0 -43
  493. package/src/utils/prompts/DOCS_INSTRUCTIONS.md +0 -9
  494. package/src/utils/prompts/INIT_INSTRUCTIONS.md +0 -132
  495. package/src/utils/prompts/REVIEW_INSTRUCTIONS.md +0 -49
  496. package/src/utils/prompts/SHELL_INSTRUCTIONS.md +0 -15
  497. package/src/utils/prompts/SPECIAL_FILES.md +0 -66
  498. package/src/utils/prompts/index.ts +0 -37
  499. package/src/utils/string_utils.ts +0 -552
  500. package/src/utils/types.ts +0 -127
  501. package/tests/commands/generate/unit_tests.test.ts +0 -27
  502. package/tests/utils/git_utils.test.ts +0 -116
  503. package/tests/utils/model_utils.test.ts +0 -27
  504. package/tests/utils/prompt_utils.test.ts +0 -33
  505. package/tests/utils/string_utils.test.ts +0 -560
  506. package/tsconfig.json +0 -14
  507. package/yarn.lock +0 -5823
@@ -1,308 +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
- const fs_1 = __importDefault(require("fs"));
7
- const axios_1 = __importDefault(require("axios"));
8
- const path_1 = __importDefault(require("path"));
9
- const events_1 = require("events");
10
- const colors_1 = __importDefault(require("colors"));
11
- const cli_highlight_1 = __importDefault(require("cli-highlight"));
12
- const cloving_gpt_1 = __importDefault(require("../cloving_gpt"));
13
- const ChunkManager_1 = __importDefault(require("./ChunkManager"));
14
- const BlockManager_1 = __importDefault(require("./BlockManager"));
15
- const prompt_utils_1 = require("../utils/prompt_utils");
16
- const config_utils_1 = require("../utils/config_utils");
17
- const prompt_utils_2 = require("../utils/prompt_utils");
18
- /**
19
- * StreamManager class
20
- *
21
- * This class extends EventEmitter and manages the streaming of responses from an AI model.
22
- * It handles the processing of chunks, manages code blocks, and provides animation for code generation.
23
- */
24
- class StreamManager extends events_1.EventEmitter {
25
- /**
26
- * Creates an instance of StreamManager.
27
- * @param {any} options - Configuration options for the StreamManager.
28
- */
29
- constructor(options) {
30
- super();
31
- this.options = options;
32
- this.prompt = '';
33
- this.responseString = '';
34
- this.contextFiles = {};
35
- this.chatHistory = [];
36
- this.isProcessing = false;
37
- this.animationInterval = null;
38
- this.retryCount = 0;
39
- this.maxRetries = 3;
40
- this.gpt = new cloving_gpt_1.default(options);
41
- this.chunkManager = new ChunkManager_1.default();
42
- this.blockManager = new BlockManager_1.default();
43
- }
44
- /**
45
- * Checks for the latest version of the app from GitHub and compares it with the current version.
46
- * If a new version is available, it notifies the user.
47
- * @private
48
- * @returns {Promise<void>}
49
- */
50
- async checkForLatestVersion() {
51
- try {
52
- const response = await axios_1.default.get('https://api.github.com/repos/cloving-ai/cloving-cli/releases/latest');
53
- const latestVersion = response.data.tag_name;
54
- const currentVersion = `v${(0, prompt_utils_1.getPackageVersion)()}`;
55
- if (latestVersion !== currentVersion) {
56
- console.log(colors_1.default.bgWhite.black(`\n 🚀 A new version of Cloving is available: ${latestVersion} `));
57
- console.log(colors_1.default.bgWhite.black(` You are currently using version: ${currentVersion} `));
58
- console.log(colors_1.default.bgWhite.black(` To upgrade, run: ${colors_1.default.bgWhite.black.bold('npm install -g cloving@latest')} `));
59
- }
60
- }
61
- catch (error) {
62
- // ignore errors
63
- }
64
- }
65
- /**
66
- * Handles the response stream from the AI model.
67
- * @param {any} responseStream - The stream of responses from the AI model.
68
- */
69
- handleResponseStream(responseStream) {
70
- this.responseString = '';
71
- this.setupChunkManagerEvents();
72
- this.setupBlockManagerEvents();
73
- this.setupResponseStreamEvents(responseStream);
74
- }
75
- /**
76
- * Sets up event listeners for the BlockManager.
77
- * @private
78
- */
79
- setupBlockManagerEvents() {
80
- this.blockManager = new BlockManager_1.default();
81
- this.blockManager.on('startGeneratingCode', () => {
82
- this.setupAnimationInterval();
83
- });
84
- this.blockManager.on('endGeneratingCode', () => {
85
- this.clearAnimation();
86
- });
87
- this.blockManager.on('content', (content) => {
88
- process.stdout.write(content);
89
- this.responseString += content;
90
- });
91
- this.blockManager.on('codeBlock', (codeBlock) => {
92
- this.handleCodeBlock(codeBlock);
93
- });
94
- }
95
- /**
96
- * Sets up an animation interval for code generation visualization.
97
- * @private
98
- */
99
- setupAnimationInterval() {
100
- process.stdout.write(colors_1.default.gray.bold('\nGenerating code... '));
101
- let animationIndex = 0;
102
- const animationChars = ['/', '|', '\\', '-'];
103
- this.animationInterval = setInterval(() => {
104
- process.stdout.write('\b'.repeat(1));
105
- process.stdout.write(colors_1.default.gray.bold(animationChars[animationIndex]));
106
- animationIndex = (animationIndex + 1) % animationChars.length;
107
- }, 100);
108
- }
109
- /**
110
- * Clears the animation interval.
111
- * @private
112
- */
113
- clearAnimation() {
114
- if (!this.animationInterval)
115
- return;
116
- clearInterval(this.animationInterval);
117
- process.stdout.write('\b'.repeat(100));
118
- }
119
- /**
120
- * Handles the processing of a code block.
121
- * @private
122
- * @param {Object} codeBlock - The code block to process.
123
- * @param {CurrentNewBlock} [codeBlock.currentNewBlock] - The current and new content of the code block.
124
- * @param {string} [codeBlock.raw] - The raw content of the code block.
125
- */
126
- handleCodeBlock(codeBlock) {
127
- const { currentNewBlock, raw } = codeBlock;
128
- if (currentNewBlock?.currentContent && currentNewBlock?.newContent) {
129
- this.displayCurrentNewBlock(currentNewBlock);
130
- }
131
- else if (raw) {
132
- this.displayRawCodeBlock(raw);
133
- }
134
- else {
135
- process.stdout.write(` \n`);
136
- }
137
- this.responseString += raw || currentNewBlock;
138
- }
139
- /**
140
- * Displays the current and new content of a code block.
141
- * @private
142
- * @param {CurrentNewBlock} currentNewBlock - The current and new content of the code block.
143
- */
144
- displayCurrentNewBlock(currentNewBlock) {
145
- const language = currentNewBlock.language.split('\n')[0];
146
- process.stdout.write(colors_1.default.gray.bold(`\`\`\`${language} \n`));
147
- process.stdout.write(colors_1.default.gray.bold(`<<<<<<< CURRENT ${currentNewBlock.filePath}\n`));
148
- try {
149
- process.stdout.write((0, cli_highlight_1.default)(currentNewBlock.currentContent));
150
- }
151
- catch (error) {
152
- process.stdout.write(currentNewBlock.currentContent);
153
- }
154
- process.stdout.write(colors_1.default.gray.bold('\n=======\n'));
155
- try {
156
- process.stdout.write((0, cli_highlight_1.default)(currentNewBlock.newContent));
157
- }
158
- catch (error) {
159
- process.stdout.write(currentNewBlock.newContent);
160
- }
161
- process.stdout.write(colors_1.default.gray.bold('\n>>>>>>> NEW\n```'));
162
- }
163
- /**
164
- * Displays a raw code block.
165
- * @private
166
- * @param {string} raw - The raw content of the code block.
167
- */
168
- displayRawCodeBlock(raw) {
169
- process.stdout.write(` \n`);
170
- process.stdout.write((0, cli_highlight_1.default)(raw));
171
- }
172
- /**
173
- * Sets up event listeners for the ChunkManager.
174
- * @private
175
- */
176
- setupChunkManagerEvents() {
177
- this.chunkManager = new ChunkManager_1.default();
178
- this.chunkManager.on('content', (buffer) => {
179
- this.processChunkManagerContent(buffer);
180
- });
181
- }
182
- /**
183
- * Processes the content received from the ChunkManager.
184
- * @private
185
- * @param {string} buffer - The buffer containing the chunk content.
186
- */
187
- processChunkManagerContent(buffer) {
188
- let convertedStream = this.gpt.convertStream(buffer);
189
- while (convertedStream !== null) {
190
- const { output, lastChar } = convertedStream;
191
- this.blockManager.addContent(output);
192
- this.chunkManager.clearBuffer(lastChar);
193
- buffer = buffer.slice(lastChar);
194
- convertedStream = this.gpt.convertStream(buffer);
195
- }
196
- }
197
- /**
198
- * Sets up event listeners for the response stream.
199
- * @private
200
- * @param {any} responseStream - The stream of responses from the AI model.
201
- */
202
- setupResponseStreamEvents(responseStream) {
203
- responseStream.data.on('data', this.handleResponseStreamData.bind(this));
204
- responseStream.data.on('end', () => this.finalizeResponse());
205
- responseStream.data.on('error', this.handleResponseStreamError.bind(this));
206
- }
207
- /**
208
- * Handles the data received from the response stream.
209
- * @private
210
- * @param {Buffer | undefined} chunk - The chunk of data received from the stream.
211
- */
212
- handleResponseStreamData(chunk) {
213
- if (!chunk)
214
- return;
215
- const chunkString = chunk.toString();
216
- this.chunkManager.addChunk(chunkString);
217
- }
218
- /**
219
- * Handles errors that occur during the response stream.
220
- * @private
221
- * @param {Error} error - The error that occurred.
222
- */
223
- handleResponseStreamError(error) {
224
- console.error('Error streaming response:', error);
225
- this.isProcessing = false;
226
- process.stdout.write('\n');
227
- this.emit('prompt');
228
- }
229
- /**
230
- * Finalizes the response processing.
231
- * This method should be overridden in subclasses to provide specific finalization behavior.
232
- * @protected
233
- */
234
- finalizeResponse() {
235
- this.isProcessing = false;
236
- this.emit('responseFinalized', this.responseString);
237
- }
238
- /**
239
- * Loads context files specified in the options or defaults to the primary language's directory.
240
- * @private
241
- * @returns {Promise<void>}
242
- */
243
- async loadContextFiles() {
244
- try {
245
- const config = (0, config_utils_1.getNearestClovingConfig)().config;
246
- const primaryLanguage = config.languages.find((lang) => lang.primary);
247
- const defaultDirectory = primaryLanguage ? primaryLanguage.directory : '.';
248
- const testingDirectories = config.testingFrameworks?.map((framework) => framework.directory) || [];
249
- const testingDirectory = testingDirectories[0];
250
- let files = this.options.files || [defaultDirectory, testingDirectory].filter(Boolean);
251
- if (files.length > 0) {
252
- console.log(`\nBuilding AI prompt context...\n`);
253
- }
254
- for (const file of files) {
255
- // Skip if the file is not a string
256
- if (!file)
257
- continue;
258
- try {
259
- const previousCount = Object.keys(this.contextFiles).length;
260
- this.contextFiles = await (0, prompt_utils_2.addFileOrDirectoryToContext)(file, this.contextFiles, this.options);
261
- const newCount = Object.keys(this.contextFiles).length;
262
- const addedCount = newCount - previousCount;
263
- const totalTokens = this.calculateTotalTokens();
264
- console.log(colors_1.default.cyan(`📁 Loaded context from: ${colors_1.default.bold(file)}`));
265
- console.log(colors_1.default.green(` ✅ Added ${addedCount} file(s) to context`));
266
- console.log(colors_1.default.yellow(` 📊 Total tokens in context: ${totalTokens.toLocaleString()}\n`));
267
- }
268
- catch (fileError) {
269
- console.error(colors_1.default.red(`Error loading context from ${file}:`), fileError);
270
- }
271
- }
272
- }
273
- catch (error) {
274
- console.error(colors_1.default.red('Error loading context files:'), error);
275
- throw new Error('Failed to load context files');
276
- }
277
- }
278
- calculateTotalTokens() {
279
- return Object.values(this.contextFiles).reduce((total, content) => {
280
- return total + Math.ceil(content.length / 4);
281
- }, 0);
282
- }
283
- async refreshContext() {
284
- await this.reloadContextFiles();
285
- const updatedSystemPrompt = (0, prompt_utils_2.generateCodegenPrompt)(this.contextFiles);
286
- this.chatHistory[0] = { role: 'user', content: updatedSystemPrompt };
287
- this.chatHistory[1] = { role: 'assistant', content: 'What would you like to do?' };
288
- }
289
- async reloadContextFiles() {
290
- for (const filePath in this.contextFiles) {
291
- try {
292
- const content = await fs_1.default.promises.readFile(path_1.default.resolve(filePath), 'utf8');
293
- this.contextFiles[filePath] = content;
294
- }
295
- catch (error) {
296
- console.error(`Error reading file ${filePath}:`, error);
297
- }
298
- }
299
- }
300
- addUserPrompt(content) {
301
- this.prompt = content;
302
- this.chatHistory.push({ role: 'user', content });
303
- }
304
- addAssistantResponse(content) {
305
- this.chatHistory.push({ role: 'assistant', content });
306
- }
307
- }
308
- exports.default = StreamManager;
@@ -1,243 +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
- const fs_1 = require("fs");
7
- const child_process_1 = require("child_process");
8
- const cli_highlight_1 = __importDefault(require("cli-highlight"));
9
- const prompts_1 = require("@inquirer/prompts");
10
- const git_utils_1 = require("../utils/git_utils");
11
- const prompts_2 = require("../utils/prompts");
12
- const config_utils_1 = require("../utils/config_utils");
13
- const string_utils_1 = require("../utils/string_utils");
14
- const cloving_gpt_1 = __importDefault(require("../cloving_gpt"));
15
- class UnitTestManager {
16
- constructor(options) {
17
- this.options = options;
18
- this.chatHistory = [];
19
- this.gpt = new cloving_gpt_1.default(options);
20
- }
21
- extractChangedFiles(gitDiff) {
22
- const fileRegex = /diff --git a\/(.+?) b\/(.+?)\n/g;
23
- const files = new Set();
24
- let match;
25
- while ((match = fileRegex.exec(gitDiff)) !== null) {
26
- files.add(match[1]);
27
- }
28
- return Array.from(files);
29
- }
30
- generateUnitTestPrompt(files, srcFiles, testFiles, gitDiff) {
31
- if (this.chatHistory.length === 0) {
32
- const systemPrompt = `### Example of a well-structured response
33
-
34
- # Unit Test Generation
35
-
36
- ## Files Overview
37
-
38
- These are the files that are relevant for generating unit tests:
39
-
40
- 1. **app/models/foo.rb**
41
- 2. **app/views/baz/bar.html.erb**
42
-
43
- ## Relevant Test Files
44
-
45
- 1. **test/models/foo_test.rb**
46
- 2. **test/controllers/baz_controller_test.rb**
47
-
48
- ## Task
49
-
50
- Generate unit tests for the files listed above. Always show filenames for the generated code.`;
51
- this.chatHistory.push({ role: 'user', content: systemPrompt });
52
- this.chatHistory.push({ role: 'assistant', content: 'What would you like to do?' });
53
- }
54
- const filesList = files.length > 0 ? files.join('\n') : 'No files provided';
55
- const prompt = `Enumerate all the files in the provided list${gitDiff ? ' and git diff' : ''} as well as the file names of anything that these files interact with.
56
- Also, list any test files that might be relevant to these files.
57
-
58
- ### List of Code Files
59
-
60
- ${filesList}
61
-
62
- ### List of All Source Files
63
-
64
- ${srcFiles}
65
-
66
- ### List of all test files
67
-
68
- ${testFiles}
69
-
70
- ${gitDiff ? '### Git Diff Content' : ''}
71
-
72
- ${gitDiff || ''}
73
-
74
- ## Example Output
75
-
76
- Here are the files that are relevant:
77
-
78
- \`\`\`plaintext
79
- ## files
80
-
81
- app/models/foo.rb
82
- app/views/baz/bar.html.erb
83
-
84
- ## relevant test files
85
-
86
- test/models/foo_test.rb
87
- test/controllers/baz_controller_test.rb
88
- \`\`\`
89
-
90
- ### Prompt
91
-
92
- Enumerate all the files in the provided list${gitDiff ? ' and git diff' : ''} as well as the file names of anything that these files interact with.
93
- Also, list any test files that might be relevant to these files.`;
94
- this.chatHistory.push({ role: 'user', content: prompt });
95
- return prompt;
96
- }
97
- async handleUserAction(analysis, autoSave = false) {
98
- const blocks = (0, string_utils_1.extractCurrentNewBlocks)(analysis);
99
- if (autoSave) {
100
- await (0, string_utils_1.applyAndSaveCurrentNewBlocks)(blocks);
101
- return;
102
- }
103
- const files = Array.from(new Set(blocks.map((block) => block.filePath)));
104
- const action = await (0, prompts_1.select)({
105
- message: 'What would you like to do?',
106
- choices: [
107
- { name: 'Save a Unit Test File', value: 'save' },
108
- { name: 'Save All Unit Test Files', value: 'saveAll' },
109
- { name: 'Copy Entire Response to Clipboard', value: 'copyAll' },
110
- { name: 'Done', value: 'done' },
111
- ],
112
- });
113
- switch (action) {
114
- case 'save':
115
- let saveAnother = true;
116
- while (saveAnother) {
117
- const fileToSave = await (0, prompts_1.select)({
118
- message: 'Which unit test file do you want to save?',
119
- choices: files.map((file) => ({ name: file, value: file })),
120
- });
121
- await (0, string_utils_1.applyAndSaveCurrentNewBlocks)(blocks.filter((block) => block.filePath === fileToSave));
122
- saveAnother = await (0, prompts_1.confirm)({
123
- message: 'Do you want to save another file?',
124
- default: false,
125
- });
126
- }
127
- break;
128
- case 'saveAll':
129
- await (0, string_utils_1.applyAndSaveCurrentNewBlocks)(blocks);
130
- console.log('All unit test files have been saved.');
131
- break;
132
- case 'copyAll':
133
- process.nextTick(() => {
134
- require('copy-paste').copy(analysis, () => {
135
- console.log('Entire response copied to clipboard');
136
- });
137
- });
138
- break;
139
- case 'done':
140
- break;
141
- }
142
- }
143
- async generateUnitTests() {
144
- const { files, save } = this.options;
145
- const allSrcFiles = await (0, config_utils_1.getAllFiles)(this.options, true);
146
- const testingDirectory = (0, config_utils_1.getTestingDirectory)();
147
- if (allSrcFiles.length === 0 || !testingDirectory) {
148
- console.error('Could not find any source files to generate unit tests. Please run: cloving init. Then try again.');
149
- process.exit(1);
150
- }
151
- const testFiles = (0, child_process_1.execFileSync)('find', [testingDirectory, '-type', 'f']).toString().trim();
152
- let contextFiles;
153
- if (files) {
154
- console.log('Generating unit tests for the provided files...');
155
- console.log('Gathering a list of files related to the changes...');
156
- const prompt = this.generateUnitTestPrompt(files, allSrcFiles.join('\n'), testFiles);
157
- contextFiles = await this.gpt.generateText({ prompt, messages: this.chatHistory });
158
- }
159
- else {
160
- console.log('Generating unit tests for the git diff between this branch and the default branch...');
161
- console.log('Gathering a list of files related to the changes...');
162
- const gitDiff = await (0, git_utils_1.getGitDiff)();
163
- const changedFiles = this.extractChangedFiles(gitDiff);
164
- const prompt = this.generateUnitTestPrompt(changedFiles, allSrcFiles.join('\n'), testFiles, gitDiff);
165
- contextFiles = await this.gpt.generateText({ prompt, messages: this.chatHistory });
166
- }
167
- this.chatHistory.push({ role: 'assistant', content: contextFiles });
168
- contextFiles = (0, string_utils_1.extractMarkdown)(contextFiles);
169
- console.log(contextFiles);
170
- console.log('\nBuilding the tests for these files...');
171
- // Initialize variables
172
- const lines = [];
173
- const context = [];
174
- // Read each line of the context files
175
- contextFiles.split('\n').forEach((line) => {
176
- if (line.trim()) {
177
- lines.push(line.trim());
178
- }
179
- });
180
- for (const codeFile of lines) {
181
- if (await fs_1.promises
182
- .stat(codeFile)
183
- .then((stat) => stat.isFile())
184
- .catch(() => false)) {
185
- const fileContents = await fs_1.promises.readFile(codeFile, 'utf-8');
186
- context.push(`### Contents of **${codeFile}\n\n${fileContents
187
- .split('\n')
188
- .map((line) => ` ${line}`)
189
- .join('\n')}**\n\n`);
190
- }
191
- }
192
- // Generate the message for unit test creation
193
- let analysis = '';
194
- if ((files || []).length > 0) {
195
- const message = `Create unit tests for the List of Files. Always show filenames for the generated code.
196
-
197
- ## List of Files
198
- ${(files || []).join('\n')}
199
-
200
- ${prompts_2.CODEGEN_INSTRUCTIONS}
201
-
202
- ## Context
203
-
204
- ${context.join('\n\n')}
205
-
206
- ## Prompt
207
-
208
- Create unit tests for the List of Files. Always show filenames for the generated code.`;
209
- // Get the model and analysis using ClovingGPT
210
- this.chatHistory.push({ role: 'user', content: message });
211
- analysis = await this.gpt.generateText({ prompt: message, messages: this.chatHistory });
212
- }
213
- else {
214
- const message = `Create unit tests for the Code Diff. Always show filenames for the generated code.
215
-
216
- ## Code Diff
217
-
218
- ${await (0, git_utils_1.getGitDiff)()}
219
-
220
- ## Context
221
-
222
- ${context.join('\n\n')}
223
-
224
- ${prompts_2.CODEGEN_INSTRUCTIONS}
225
-
226
- ## Prompt
227
-
228
- Create unit tests for the Code Diff. Always show filenames for the generated code.`;
229
- // Get the model and analysis using ClovingGPT
230
- this.chatHistory.push({ role: 'user', content: message });
231
- analysis = await this.gpt.generateText({ prompt: message, messages: this.chatHistory });
232
- }
233
- if (analysis) {
234
- console.log((0, cli_highlight_1.default)(analysis));
235
- }
236
- else {
237
- console.log('No unit tests generated.');
238
- }
239
- // Add the new user action handling
240
- await this.handleUserAction(analysis, save);
241
- }
242
- }
243
- exports.default = UnitTestManager;
@@ -1 +0,0 @@
1
- "use strict";
package/dist/newfile.js DELETED
@@ -1,2 +0,0 @@
1
- "use strict";
2
- const newContent = 'This is new';
package/dist/package.json DELETED
@@ -1,86 +0,0 @@
1
- {
2
- "name": "cloving",
3
- "version": "0.3.19",
4
- "packageManager": "yarn@1.22.22",
5
- "main": "dist/index.js",
6
- "types": "dist/index.d.ts",
7
- "scripts": {
8
- "build": "tsc && cp package.json dist/package.json && cp src/utils/prompts/*.md dist/utils/prompts/",
9
- "start": "node dist/index.js",
10
- "watch": "tsc -w",
11
- "check": "bash -c 'npx tsc --noEmit --skipLibCheck'",
12
- "test": "bash -c jest",
13
- "prepare": "husky",
14
- "format": "prettier --write \"src/**/*.ts\""
15
- },
16
- "bin": "./dist/index.js",
17
- "files": [
18
- "dist",
19
- "!**/test/**"
20
- ],
21
- "keywords": [],
22
- "author": "Lucas Carlson",
23
- "license": "MIT",
24
- "description": "",
25
- "lint-staged": {
26
- "*.ts": [
27
- "yarn run check",
28
- "prettier --write"
29
- ]
30
- },
31
- "lint-prepush": {
32
- "base": "main",
33
- "tasks": {
34
- "*.ts": [
35
- "yarn run check",
36
- "yarn run test",
37
- "yarn run format"
38
- ]
39
- }
40
- },
41
- "dependencies": {
42
- "@inquirer/prompts": "^7.3.2",
43
- "axios": "^1.7.9",
44
- "cli-highlight": "^2.1.11",
45
- "colors": "^1.4.0",
46
- "commander": "^13.1.0",
47
- "copy-paste": "^1.5.3",
48
- "eslint": "^9.20.1",
49
- "eslint-config-prettier": "^10.0.1",
50
- "eslint-config-raine": "^0.5.0",
51
- "eslint-config-standard": "^17.1.0",
52
- "eslint-plugin-import": "^2.31.0",
53
- "eslint-plugin-jsdoc": "^50.6.3",
54
- "eslint-plugin-n": "^17.15.1",
55
- "eslint-plugin-promise": "^7.2.1",
56
- "express": "^4.21.2",
57
- "ignore": "^7.0.3",
58
- "ini": "^5.0.0",
59
- "isbinaryfile": "^5.0.4",
60
- "nock": "^14.0.1",
61
- "vite": "^6.1.1",
62
- "vite-node": "^3.0.6"
63
- },
64
- "devDependencies": {
65
- "@types/body-parser": "^1.19.5",
66
- "@types/copy-paste": "^1.1.33",
67
- "@types/express": "^5.0.0",
68
- "@types/ini": "^4.1.1",
69
- "@types/inquirer": "^9.0.7",
70
- "@types/jest": "^29.5.14",
71
- "@types/node": "^22.13.4",
72
- "husky": "^9.1.7",
73
- "jest": "^29.7.0",
74
- "lint-prepush": "^3.0.2",
75
- "lint-staged": "^15.4.3",
76
- "prettier": "^3.5.1",
77
- "ts-jest": "^29.2.5",
78
- "typescript": "^5.7.3"
79
- },
80
- "resolutions": {
81
- "eslint": "8.57.0",
82
- "eslint-plugin-n": "16.6.2",
83
- "eslint-plugin-import": "2.29.1",
84
- "eslint-plugin-promise": "6.6.0"
85
- }
86
- }