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,384 +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.addFileOrDirectoryToContext = exports.readFileContent = exports.fetchModels = exports.runCommand = exports.generateFileList = exports.getAllFilesInDirectory = exports.checkForSpecialFiles = exports.collectSpecialFileContents = exports.generateShellPrompt = exports.generateCodegenPrompt = exports.getPackageVersion = exports.SPECIAL_FILES = exports.CODEGEN_INSTRUCTIONS = void 0;
7
- const fs_1 = __importDefault(require("fs"));
8
- const path_1 = __importDefault(require("path"));
9
- const child_process_1 = require("child_process");
10
- const isbinaryfile_1 = require("isbinaryfile");
11
- const colors_1 = __importDefault(require("colors"));
12
- const path_2 = require("path");
13
- const config_utils_1 = require("./config_utils");
14
- exports.CODEGEN_INSTRUCTIONS = `## AI Code Generation Instructions
15
-
16
- ### General Guidelines
17
-
18
- 1. **Respond as an expert software developer.**
19
- 2. **Follow best practices and the latest standards found in the **Description of App** section.**
20
- 3. **Adhere to existing conventions and libraries in the codebase.**
21
-
22
- ### Request Handling
23
-
24
- 1. **Try to understand the request, but if anything is unclear, ask questions.**
25
- 2. **Decide if you need to propose edits to existing files not in the chat.**
26
- - If yes, provide the full path names and ask the user to add them.
27
- - Wait for user approval before proceeding.
28
- 3. **Propose changes using *CURRENT/NEW* Blocks.**
29
- 4. **Show the smallest possible *CURRENT* section that uniquely identifies the code.**
30
- 5. **To move code, use two *CURRENT/NEW* blocks: one to remove and one to add.**
31
- 6. **For new files or to replace an existing file, the *CURRENT* block is empty.**
32
-
33
- ### *CURRENT/NEW* Block Format
34
-
35
- 1. **Start a block with three backticks and the language name.**
36
- \`\`\`typescript
37
- 2. **Next line: seven <, CURRENT, and the file path.**
38
- <<<<<<< CURRENT path/to/file.ts
39
- 3. **Include the exact existing code to be changed.**
40
- 4. **Divide with seven =.**
41
- =======
42
- 5. **Add the new code.**
43
- 6. **End with seven > and NEW.**
44
- >>>>>>> NEW
45
- 7. **Close the block with three backticks.**
46
- \`\`\``;
47
- exports.SPECIAL_FILES = [
48
- 'package.json',
49
- 'Gemfile',
50
- 'requirements.txt',
51
- 'Pipfile',
52
- 'pyproject.toml',
53
- 'pom.xml',
54
- 'build.gradle',
55
- '.csproj',
56
- 'packages.config',
57
- 'composer.json',
58
- 'CMakeLists.txt',
59
- 'conanfile.txt',
60
- 'conanfile.py',
61
- 'go.mod',
62
- 'Cargo.toml',
63
- 'Package.swift',
64
- 'build.gradle.kts',
65
- 'Podfile',
66
- 'Cartfile',
67
- 'cpanfile',
68
- 'DESCRIPTION',
69
- 'mix.exs',
70
- 'build.sbt',
71
- 'pubspec.yaml',
72
- 'stack.yaml',
73
- 'cabal.project',
74
- 'Project.toml',
75
- 'rockspec',
76
- 'rebar.config',
77
- 'project.clj',
78
- 'tsconfig.json',
79
- '.eslintrc.js',
80
- '.eslintrc.json',
81
- '.eslintrc.yaml',
82
- '.eslintrc.yml',
83
- '.eslintrc',
84
- '.prettierrc',
85
- '.prettierrc.js',
86
- '.prettierrc.json',
87
- '.prettierrc.yaml',
88
- '.prettierrc.yml',
89
- '.prettierrc',
90
- '.stylelintrc',
91
- '.stylelintrc.json',
92
- '.stylelintrc.yaml',
93
- '.stylelintrc.yml',
94
- '.stylelintrc',
95
- 'jest.config.js',
96
- 'jest.config.json',
97
- 'jest.config.ts',
98
- 'jest.config.cjs',
99
- 'jest.config.mjs',
100
- 'webpack.config.js',
101
- 'webpack.config.ts',
102
- 'webpack.config.cjs',
103
- 'webpack.config.mjs',
104
- 'webpack.config.common.js',
105
- ];
106
- const getPackageVersion = () => {
107
- const packagePath = (0, path_2.join)(__dirname, '..', 'package.json');
108
- const packageJson = JSON.parse(fs_1.default.readFileSync(packagePath, 'utf8'));
109
- return packageJson.version;
110
- };
111
- exports.getPackageVersion = getPackageVersion;
112
- const renderAsString = (contextFile) => {
113
- if (typeof contextFile === 'string') {
114
- return contextFile;
115
- }
116
- return JSON.stringify(contextFile, null, 2);
117
- };
118
- const generateCodegenPrompt = (contextFilesContent) => {
119
- const specialFileContents = (0, exports.collectSpecialFileContents)();
120
- // detect if specialFileContents[file] is a string or an object
121
- const specialFiles = Object.keys(specialFileContents)
122
- .map((file) => `### Contents of **${file}**\n\n\`\`\`\n${renderAsString(specialFileContents[file])}\n\`\`\`\n\n`)
123
- .join('\n');
124
- const contextFileContents = Object.keys(contextFilesContent)
125
- .map((file) => `### Contents of **${file}**\n\n\`\`\`\n${contextFilesContent[file]}\n\`\`\`\n\n`)
126
- .join('\n');
127
- const prompt = `${exports.CODEGEN_INSTRUCTIONS}
128
-
129
- ## Description of App
130
-
131
- \`\`\`json
132
- ${JSON.stringify((0, config_utils_1.getClovingConfig)(), null, 2)}
133
- \`\`\`
134
-
135
- ## Special Files
136
-
137
- ${specialFiles.length > 0 ? specialFiles : 'No special files provided.'}
138
-
139
- ## Context Files
140
-
141
- ${contextFileContents.length > 0 ? contextFileContents : 'No context files provided.'}
142
-
143
- ## Directory structure
144
-
145
- ${Object.keys(contextFilesContent).join('\n')}
146
-
147
- ${exports.CODEGEN_INSTRUCTIONS}
148
-
149
- ### Example 1: Changing a Variable
150
-
151
- \`\`\`typescript
152
- <<<<<<< CURRENT path/to/file.ts
153
- const myVariable = 'exact'
154
- const oldVariable = 1
155
- =======
156
- const myVariable = 'exact'
157
- const newVariable = 2
158
- >>>>>>> NEW
159
- \`\`\`
160
-
161
- ### Example 2: Create a New File
162
-
163
- \`\`\`ruby
164
- <<<<<<< CURRENT path/to/newfile.rb
165
- =======
166
- def new_function
167
- puts 'Hello, world!'
168
- end
169
- >>>>>>> NEW
170
- \`\`\`
171
-
172
- ### Example 3: Moving a Function
173
-
174
- Removing it from path/to/file.py
175
-
176
- \`\`\`python
177
- <<<<<<< CURRENT path/to/file.py
178
- def old_function():
179
- return 'Old function'
180
- =======
181
- >>>>>>> NEW
182
- \`\`\`
183
-
184
- Adding it to path/to/newfile.py
185
-
186
- \`\`\`python
187
- <<<<<<< CURRENT path/to/newfile.py
188
- def existing_function():
189
- return 'Existing function'
190
-
191
- =======
192
- def existing_function():
193
- return 'Existing function'
194
-
195
- def old_function():
196
- return 'Old function'
197
- >>>>>>> NEW
198
- \`\`\`
199
-
200
- ### Example 4: Removing a Function
201
-
202
- \`\`\`java
203
- <<<<<<< CURRENT path/to/file.java
204
- public void oldFunction() {
205
- System.out.println("Old function")
206
- }
207
- =======
208
- >>>>>>> NEW
209
- \`\`\`
210
-
211
- ### Example 5: Replace a file
212
-
213
- This will replace the entire contents of **path/to/file.rb** with the new content:
214
-
215
- \`\`\`ruby
216
- <<<<<<< CURRENT path/to/file.rb
217
- =======
218
- def new_function
219
- puts 'Hello, world!'
220
- end
221
- >>>>>>> NEW
222
- \`\`\`
223
-
224
- ## Don't Invent Code That Isn't Provided in Context
225
-
226
- A file might be referenced by just the file name without the full path, but the code must be provided in the *Context Files* section.
227
-
228
- Unless you believe you are creating a whole new file, never ever under any circumstances make up code in the CURRENT block that was not provided to you in the *Context Files* section.
229
-
230
- If a required file hasn't been provided in the *Context Files* section, stop everything and ask the user to provide it in the context by adding -f path/to/file to the command or add path/to/file in the interactive chat.`;
231
- return prompt;
232
- };
233
- exports.generateCodegenPrompt = generateCodegenPrompt;
234
- const generateShellPrompt = () => {
235
- const shell = (0, child_process_1.execSync)('echo $SHELL').toString().trim();
236
- const os = (0, child_process_1.execSync)('echo $OSTYPE').toString().trim();
237
- return `Generate an executable ${shell} script that works on ${os}. Try to make it a single line if possible and as simple and straightforward as possible.
238
-
239
- Do not add any commentary or context to the message other than the commit message itself.
240
-
241
- An example of the output for this should look like the following:
242
-
243
- \`\`\`sh
244
- find . -type f -name "*.ts" -exec sed -i '' 's/old/new/g' {} +
245
- \`\`\`
246
-
247
- Don't use that script, it is only an example.`;
248
- };
249
- exports.generateShellPrompt = generateShellPrompt;
250
- const collectSpecialFileContents = () => {
251
- const specialFileContents = {};
252
- for (const file of exports.SPECIAL_FILES) {
253
- if (fs_1.default.existsSync(file)) {
254
- try {
255
- const content = fs_1.default.readFileSync(file, 'utf-8');
256
- specialFileContents[file] = file.endsWith('.json') ? JSON.parse(content) : content;
257
- }
258
- catch (error) {
259
- specialFileContents[file] = fs_1.default.readFileSync(file, 'utf-8');
260
- }
261
- }
262
- }
263
- return specialFileContents;
264
- };
265
- exports.collectSpecialFileContents = collectSpecialFileContents;
266
- const checkForSpecialFiles = () => exports.SPECIAL_FILES.some((file) => fs_1.default.existsSync(file));
267
- exports.checkForSpecialFiles = checkForSpecialFiles;
268
- const getAllFilesInDirectory = async (dir) => {
269
- const subdirs = await fs_1.default.promises.readdir(dir);
270
- const files = await Promise.all(subdirs.map(async (subdir) => {
271
- const res = path_1.default.resolve(dir, subdir);
272
- if (subdir === 'node_modules' || subdir === '.git' || subdir === '.DS_Store') {
273
- return [];
274
- }
275
- const stat = await fs_1.default.promises.stat(res);
276
- if (stat.isDirectory()) {
277
- return (0, exports.getAllFilesInDirectory)(res);
278
- }
279
- else {
280
- const isBinary = await (0, isbinaryfile_1.isBinaryFile)(res);
281
- return isBinary ? [] : res;
282
- }
283
- }));
284
- return files.flat();
285
- };
286
- exports.getAllFilesInDirectory = getAllFilesInDirectory;
287
- const generateFileList = async () => {
288
- try {
289
- const lsOutput = await (0, exports.runCommand)('ls', []);
290
- const findOutput = await (0, exports.runCommand)('find', ['.']);
291
- const cleanedFindOutput = findOutput.map((file) => file.startsWith('./') ? file.slice(2) : file);
292
- const files = [...lsOutput, ...cleanedFindOutput];
293
- const uniqueFiles = Array.from(new Set(files));
294
- return uniqueFiles.filter((file) => file && !file.includes('.git') && !file.includes('node_modules') && !file.includes('tmp'));
295
- }
296
- catch (error) {
297
- console.error('Error generating file list:', error.message);
298
- return [];
299
- }
300
- };
301
- exports.generateFileList = generateFileList;
302
- const runCommand = (command, args) => {
303
- return new Promise((resolve, reject) => {
304
- const process = (0, child_process_1.spawn)(command, args);
305
- const output = [];
306
- process.stdout.on('data', (data) => {
307
- output.push(data.toString());
308
- });
309
- process.stderr.on('data', (data) => {
310
- console.error(`stderr: ${data}`);
311
- });
312
- process.on('close', (code) => {
313
- if (code !== 0) {
314
- reject(new Error(`${command} process exited with code ${code}`));
315
- }
316
- else {
317
- resolve(output.join('').trim().split('\n'));
318
- }
319
- });
320
- });
321
- };
322
- exports.runCommand = runCommand;
323
- const fetchModels = async () => {
324
- try {
325
- const modelsOutput = await (0, exports.runCommand)('cloving', ['models']);
326
- return modelsOutput;
327
- }
328
- catch (error) {
329
- console.error('Error fetching models:', error.message);
330
- return [];
331
- }
332
- };
333
- exports.fetchModels = fetchModels;
334
- const readFileContent = (file) => {
335
- try {
336
- return fs_1.default.readFileSync(file, 'utf-8');
337
- }
338
- catch (error) {
339
- console.error('Error reading file content:', error.message);
340
- return '';
341
- }
342
- };
343
- exports.readFileContent = readFileContent;
344
- const addFileToContext = async (filePath, contextFiles, baseDir) => {
345
- const relativePath = path_1.default.relative(baseDir, filePath);
346
- if (await (0, isbinaryfile_1.isBinaryFile)(filePath)) {
347
- return;
348
- }
349
- const content = await fs_1.default.promises.readFile(filePath, 'utf-8');
350
- contextFiles[relativePath] = content;
351
- };
352
- const addDirectoryToContext = async (dirPath, contextFiles, baseDir) => {
353
- const entries = await fs_1.default.promises.readdir(dirPath, { withFileTypes: true });
354
- for (const entry of entries) {
355
- const fullPath = path_1.default.join(dirPath, entry.name);
356
- if (entry.isDirectory()) {
357
- if (entry.name !== 'node_modules' && entry.name !== '.git') {
358
- await addDirectoryToContext(fullPath, contextFiles, baseDir);
359
- }
360
- }
361
- else {
362
- await addFileToContext(fullPath, contextFiles, baseDir);
363
- }
364
- }
365
- };
366
- const addFileOrDirectoryToContext = async (contextFile, contextFiles, options) => {
367
- const filePath = path_1.default.resolve(contextFile);
368
- const baseDir = process.cwd();
369
- try {
370
- const stats = await fs_1.default.promises.stat(filePath);
371
- if (stats.isDirectory()) {
372
- await addDirectoryToContext(filePath, contextFiles, baseDir);
373
- }
374
- else if (stats.isFile()) {
375
- await addFileToContext(filePath, contextFiles, baseDir);
376
- }
377
- }
378
- catch (error) {
379
- console.error(colors_1.default.red(`${colors_1.default.bold('Error')}: File or directory "${contextFile}" does not exist`));
380
- process.exit(1);
381
- }
382
- return contextFiles;
383
- };
384
- exports.addFileOrDirectoryToContext = addFileOrDirectoryToContext;
@@ -1,249 +0,0 @@
1
- "use strict";
2
- /**
3
- * @file Configuration utilities for Cloving
4
- * @module config_utils
5
- */
6
- var __importDefault = (this && this.__importDefault) || function (mod) {
7
- return (mod && mod.__esModule) ? mod : { "default": mod };
8
- };
9
- Object.defineProperty(exports, "__esModule", { value: true });
10
- exports.getTestingDirectory = exports.getAllFiles = exports.removeProjectConfig = exports.saveProjectConfig = exports.getProjectConfig = exports.getPrimaryModel = exports.saveConfig = exports.getNearestClovingConfig = exports.getClovingConfig = exports.getConfig = exports.CLOVINGPROJECT_PATH = exports.CLOVINGFILE_PATH = exports.CLOVING_CONFIG_PATH = void 0;
11
- const os_1 = __importDefault(require("os"));
12
- const path_1 = __importDefault(require("path"));
13
- const fs_1 = __importDefault(require("fs"));
14
- const ini_1 = __importDefault(require("ini"));
15
- const child_process_1 = require("child_process");
16
- const cloving_gpt_1 = __importDefault(require("../cloving_gpt"));
17
- /** Path to the global Cloving configuration file */
18
- exports.CLOVING_CONFIG_PATH = path_1.default.join(os_1.default.homedir(), '.clovingconfig');
19
- /** Name of the local Cloving configuration file */
20
- exports.CLOVINGFILE_PATH = 'cloving.json';
21
- /** Path to the Cloving projects directory */
22
- exports.CLOVINGPROJECT_PATH = '.clovingprojects';
23
- /** Cached Cloving configuration */
24
- let clovingConfig;
25
- /**
26
- * Retrieves the Cloving configuration
27
- * @param {ClovingGPTOptions} options - Options for ClovingGPT
28
- * @returns {ClovingConfig} The Cloving configuration
29
- */
30
- const getConfig = (options) => {
31
- try {
32
- if (fs_1.default.existsSync(exports.CLOVING_CONFIG_PATH)) {
33
- const rawConfig = fs_1.default.readFileSync(exports.CLOVING_CONFIG_PATH, 'utf-8');
34
- const config = ini_1.default.parse(rawConfig);
35
- if (options.silent) {
36
- config.globalSilent = true;
37
- }
38
- // Parse temperature to float if it exists in the config
39
- for (const provider in config.models) {
40
- for (const model in config.models[provider]) {
41
- if (config.models[provider][model].temperature !== undefined) {
42
- const temp = config.models[provider][model].temperature;
43
- config.models[provider][model].temperature =
44
- typeof temp === 'string' ? parseFloat(temp) : temp;
45
- }
46
- }
47
- }
48
- return config;
49
- }
50
- }
51
- catch (err) {
52
- console.error('Error reading configuration:', err);
53
- }
54
- // Fallback to environment variables if config file doesn't exist
55
- if (process.env.CLOVING_MODEL) {
56
- const [provider, ...modelParts] = process.env.CLOVING_MODEL.split(':');
57
- const model = modelParts.join(':');
58
- return {
59
- models: {
60
- [provider]: {
61
- [model]: {
62
- apiKey: process.env.CLOVING_API_KEY ?? '',
63
- primary: true,
64
- priority: 10,
65
- silent: options.silent || false,
66
- trust: false,
67
- temperature: options.temperature || 0.2,
68
- },
69
- },
70
- },
71
- globalSilent: options.silent || false,
72
- };
73
- }
74
- else {
75
- return { models: {}, globalSilent: options.silent || false };
76
- }
77
- };
78
- exports.getConfig = getConfig;
79
- /**
80
- * Retrieves the local Cloving configuration
81
- * @returns {ClovingfileConfig} The local Cloving configuration
82
- * @throws {Error} If the cloving.json file is not found
83
- */
84
- const getClovingConfig = () => {
85
- if (clovingConfig) {
86
- return clovingConfig;
87
- }
88
- else if (fs_1.default.existsSync(exports.CLOVINGFILE_PATH)) {
89
- clovingConfig = getClovingConfigAtPath(exports.CLOVINGFILE_PATH);
90
- return clovingConfig;
91
- }
92
- else {
93
- console.log(`${exports.CLOVINGFILE_PATH} file not found, please run: cloving init`);
94
- process.exit(1);
95
- }
96
- };
97
- exports.getClovingConfig = getClovingConfig;
98
- const getClovingConfigAtPath = (fullPath) => {
99
- const configFile = fs_1.default.readFileSync(fullPath, 'utf-8');
100
- return JSON.parse(configFile);
101
- };
102
- const getNearestClovingConfig = () => {
103
- let runPath = process.cwd();
104
- const parts = runPath.split(path_1.default.sep);
105
- while (parts.length > 0) {
106
- const configPath = path_1.default.join(parts.join(path_1.default.sep), exports.CLOVINGFILE_PATH);
107
- if (fs_1.default.existsSync(configPath)) {
108
- clovingConfig = getClovingConfigAtPath(configPath);
109
- return { config: clovingConfig, path: configPath };
110
- }
111
- parts.pop();
112
- }
113
- throw new Error(`No ${exports.CLOVINGFILE_PATH} file found in ${runPath} or any parent directory`);
114
- };
115
- exports.getNearestClovingConfig = getNearestClovingConfig;
116
- /**
117
- * Saves the Cloving configuration to the config file
118
- * @param {ClovingConfig} config - The configuration to save
119
- */
120
- const saveConfig = (config) => {
121
- const iniString = ini_1.default.stringify(config);
122
- fs_1.default.writeFileSync(exports.CLOVING_CONFIG_PATH, iniString);
123
- console.log(`Configuration saved to ${exports.CLOVING_CONFIG_PATH}`);
124
- };
125
- exports.saveConfig = saveConfig;
126
- /**
127
- * Retrieves the primary model configuration
128
- * @param {string} [partialModel] - Partial model name to filter by
129
- * @returns {Object | null} The primary model configuration or null if not found
130
- */
131
- const getPrimaryModel = (partialModel) => {
132
- try {
133
- const config = (0, exports.getConfig)({});
134
- const models = [];
135
- for (const provider in config.models) {
136
- for (const model in config.models[provider]) {
137
- if (!partialModel || `${provider}:${model}`.startsWith(partialModel)) {
138
- models.push({
139
- provider,
140
- model,
141
- config: config.models[provider][model],
142
- });
143
- }
144
- }
145
- }
146
- models.sort((a, b) => parseInt(`${b.config.priority}`, 10) - parseInt(`${a.config.priority}`, 10));
147
- return models.length > 0 ? models[0] : null;
148
- }
149
- catch (err) {
150
- console.error('Error reading model from configuration:', err);
151
- return null;
152
- }
153
- };
154
- exports.getPrimaryModel = getPrimaryModel;
155
- /**
156
- * Retrieves the configuration for a specific project
157
- * @param {string} name - The name of the project
158
- * @returns {ProjectConfig} The project configuration
159
- * @throws {Error} If the project configuration file is not found
160
- */
161
- const getProjectConfig = (name) => {
162
- const projectConfigPath = path_1.default.join(exports.CLOVINGPROJECT_PATH, name, 'config.ini');
163
- if (fs_1.default.existsSync(projectConfigPath)) {
164
- const configFile = fs_1.default.readFileSync(projectConfigPath, 'utf-8');
165
- return ini_1.default.parse(configFile);
166
- }
167
- else {
168
- throw new Error(`${projectConfigPath} file not found`);
169
- }
170
- };
171
- exports.getProjectConfig = getProjectConfig;
172
- /**
173
- * Saves the configuration for a specific project
174
- * @param {string} name - The name of the project
175
- * @param {ProjectConfig} config - The project configuration to save
176
- */
177
- const saveProjectConfig = (name, config) => {
178
- const projectConfigPath = path_1.default.join(exports.CLOVINGPROJECT_PATH, name, 'config.ini');
179
- const projectConfigDir = path_1.default.dirname(projectConfigPath);
180
- // Create directory if it doesn't exist
181
- if (!fs_1.default.existsSync(projectConfigDir)) {
182
- fs_1.default.mkdirSync(projectConfigDir, { recursive: true });
183
- }
184
- const iniString = ini_1.default.stringify(config);
185
- fs_1.default.writeFileSync(projectConfigPath, iniString);
186
- console.log(`Configuration saved to ${projectConfigPath}`);
187
- };
188
- exports.saveProjectConfig = saveProjectConfig;
189
- /**
190
- * Removes the configuration file for a specific project
191
- * @param {string} name - The name of the project
192
- */
193
- const removeProjectConfig = (name) => {
194
- const projectConfigPath = path_1.default.join(exports.CLOVINGPROJECT_PATH, name, 'config.ini');
195
- if (fs_1.default.existsSync(projectConfigPath)) {
196
- fs_1.default.unlinkSync(projectConfigPath);
197
- console.log(`Project completed and file removed: ${projectConfigPath}`);
198
- }
199
- else {
200
- console.error(`Configuration not found: ${projectConfigPath}`);
201
- }
202
- };
203
- exports.removeProjectConfig = removeProjectConfig;
204
- const setupTestingPrompt = async (gpt, config) => {
205
- const prompt = `I have the following cloving.json configuration file:
206
-
207
- ==== begin cloving.json ====
208
- ${JSON.stringify(config, null, 2)}
209
- ==== end cloving.json ====
210
-
211
- Please provide instructions on how to set up testing for this project.`;
212
- const setupInstructions = await gpt.generateText({ prompt });
213
- console.log(setupInstructions);
214
- process.exit(0);
215
- };
216
- const getAllFiles = async (options, forTesting) => {
217
- const gpt = new cloving_gpt_1.default(options);
218
- // Read the cloving.json file
219
- const { config } = (0, exports.getNearestClovingConfig)();
220
- const testingDirectory = (0, exports.getTestingDirectory)();
221
- let allSrcFiles = [];
222
- if (forTesting && !testingDirectory) {
223
- await setupTestingPrompt(gpt, config);
224
- }
225
- // Collect srcFiles for each language with specified directory and extension
226
- for (const language of config.languages) {
227
- if (language.directory && language.extension) {
228
- const srcFiles = (0, child_process_1.execFileSync)('find', [
229
- language.directory,
230
- '-type',
231
- 'f',
232
- '-name',
233
- `*${language.extension}`,
234
- ])
235
- .toString()
236
- .trim()
237
- .split('\n');
238
- allSrcFiles = allSrcFiles.concat(srcFiles);
239
- }
240
- }
241
- // Ensure allSrcFiles is unique
242
- return Array.from(new Set(allSrcFiles));
243
- };
244
- exports.getAllFiles = getAllFiles;
245
- const getTestingDirectory = () => {
246
- const config = (0, exports.getClovingConfig)();
247
- return config.testingFrameworks?.find((framework) => framework.directory)?.directory;
248
- };
249
- exports.getTestingDirectory = getTestingDirectory;
@@ -1,42 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getGitDiff = exports.generateCommitMessagePrompt = void 0;
4
- const child_process_1 = require("child_process");
5
- const generateCommitMessagePrompt = () => {
6
- const diff = (0, child_process_1.execSync)('git diff').toString();
7
- return `Generate a concise and meaningful commit message based on a diff.
8
-
9
- Do not add any commentary or context to the message other than the commit message itself.
10
-
11
- An example of the output for this should look like the following:
12
-
13
- # Update dependencies and package versions
14
-
15
- - Upgrade Ruby gems including aws-sdk, honeybadger, irb, and rubocop
16
- - Update Node.js packages including esbuild, tinymce, and trix
17
- - Bump TypeScript and ESLint related packages to latest versions
18
-
19
- ====
20
-
21
- Here is the diff to help you write the commit message:
22
-
23
- ${diff}`;
24
- };
25
- exports.generateCommitMessagePrompt = generateCommitMessagePrompt;
26
- const getGitDiff = () => {
27
- try {
28
- const masterBranchName = (0, child_process_1.execSync)('git symbolic-ref refs/remotes/origin/HEAD | sed \'s@^refs/remotes/origin/@@\'')
29
- .toString()
30
- .trim();
31
- if (!masterBranchName) {
32
- throw new Error('Error: Could not determine the default branch (main or master)');
33
- }
34
- const gitDiff = (0, child_process_1.execSync)(`git diff ${masterBranchName} --`).toString().trim();
35
- return gitDiff;
36
- }
37
- catch (error) {
38
- console.error('Error getting git diff:', error.message);
39
- process.exit(1);
40
- }
41
- };
42
- exports.getGitDiff = getGitDiff;