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,113 +0,0 @@
1
- import { Adapter } from '.'
2
- import type { GPTRequest, OpenAIStreamChunk } from '../../utils/types'
3
-
4
- // OpenAIAdapter class implements the Adapter interface
5
- export class OpenAIAdapter implements Adapter {
6
- private model: string
7
-
8
- // List of supported models
9
- static supportedModels: string[] = [
10
- 'openai:gpt:o1-preview',
11
- 'openai:gpt:o1-mini',
12
- 'openai:gpt:4o-2024-08-06',
13
- 'openai:gpt:4o',
14
- 'openai:gpt:4o-mini',
15
- 'openai:gpt:4-turbo',
16
- 'openai:gpt:3.5-turbo',
17
- 'openai:text-embedding:3-large',
18
- // Add more supported models here as needed
19
- ]
20
-
21
- // Method to list supported models
22
- static listSupportedModels(): void {
23
- OpenAIAdapter.supportedModels.forEach((model) => {
24
- console.log(model)
25
- })
26
- }
27
-
28
- // Constructor to initialize the model
29
- constructor(model: string) {
30
- this.model = model
31
- }
32
-
33
- // Method to get the API endpoint
34
- getEndpoint(): string {
35
- return `https://api.openai.com/v1/chat/completions`
36
- }
37
-
38
- // Method to get the headers for the API request
39
- getHeaders(apiKey: string): Record<string, string> {
40
- return {
41
- Authorization: `Bearer ${apiKey}`,
42
- 'Content-Type': 'application/json',
43
- }
44
- }
45
-
46
- // Method to get the payload for the API request
47
- getPayload(request: GPTRequest, stream: boolean = false): Record<string, any> {
48
- return {
49
- model: this.model.replace(':', '-'),
50
- messages:
51
- request.messages && request.messages.length > 0
52
- ? request.messages
53
- : [{ role: 'user', content: request.prompt }],
54
- max_tokens: request.maxTokens,
55
- temperature: request.temperature || 0.2,
56
- stream,
57
- }
58
- }
59
-
60
- // Method to extract the response from the API response data
61
- extractResponse(data: any): string {
62
- return data.choices[0].message.content
63
- }
64
-
65
- // Method to convert the stream data into OpenAIStreamChunk format
66
- // data example:
67
- // {
68
- // id: 'chatcmpl-9tL477A98d54qvVQqJT010bm8BLJl',
69
- // object: 'chat.completion.chunk',
70
- // created: 1722976043,
71
- // model: 'gpt-4o-2024-05-13',
72
- // system_fingerprint: 'fp_3aa7262c27',
73
- // choices: [
74
- // {
75
- // "index": 0,
76
- // "delta": {
77
- // "content": " basic"
78
- // },
79
- // "logprobs": null,
80
- // "finish_reason": null
81
- // }
82
- // ]
83
- // }
84
- convertStream(data: string): OpenAIStreamChunk | null {
85
- let beginningChar = 0
86
- let lastChar = 0
87
-
88
- while (lastChar < data.length) {
89
- try {
90
- let remainingString = data.slice(beginningChar, lastChar)
91
-
92
- // Strip any leading characters until we encounter the first '{' in this block
93
- const firstBraceIndex = remainingString.indexOf('{')
94
- if (firstBraceIndex > -1) {
95
- remainingString = remainingString.slice(firstBraceIndex)
96
- }
97
-
98
- const parsedObject = JSON.parse(remainingString)
99
- const output = parsedObject?.choices[0]?.delta?.content || ''
100
-
101
- return {
102
- output,
103
- lastChar,
104
- }
105
- } catch (error) {
106
- // Incrementally increase the size of the JSON string to parse
107
- lastChar += 1
108
- }
109
- }
110
-
111
- return null
112
- }
113
- }
@@ -1,229 +0,0 @@
1
- import highlight from 'cli-highlight'
2
- import process from 'process'
3
- import colors from 'colors'
4
- import { confirm } from '@inquirer/prompts'
5
- import axios, { AxiosResponse, AxiosError } from 'axios'
6
-
7
- import { Adapter } from './adapters/'
8
- import { ClaudeAdapter } from './adapters/claude'
9
- import { OpenAIAdapter } from './adapters/openai'
10
- import { MistralAdapter } from './adapters/mistral'
11
- import { OllamaAdapter } from './adapters/ollama'
12
- import { GeminiAdapter } from './adapters/gemini'
13
- import { AzureOpenAIAdapter } from './adapters/azureopenai'
14
- import { parseMarkdownInstructions } from '../utils/string_utils'
15
- import { getConfig, getPrimaryModel } from '../utils/config_utils'
16
-
17
- import type {
18
- OpenAIStreamChunk,
19
- GPTRequest,
20
- ClovingGPTOptions,
21
- ClovingConfig,
22
- ChatMessage,
23
- } from '../utils/types'
24
-
25
- class ClovingGPT {
26
- public adapter: Adapter
27
- public silent: boolean
28
- public temperature: number
29
- public stream: boolean
30
- private apiKey: string
31
- private timeout: number
32
-
33
- constructor(options: ClovingGPTOptions) {
34
- const { model: partialModel } = options
35
- const config: ClovingConfig = getConfig(options)
36
- if (!config || !config.models) {
37
- console.log('No cloving configuration found. Please run: cloving config')
38
- process.exit(1)
39
- }
40
-
41
- const primaryModel = getPrimaryModel(partialModel)
42
- if (!primaryModel) {
43
- console.log('No AI API models found in the cloving configuration. Please run: cloving config')
44
- process.exit(1)
45
- }
46
-
47
- const { provider, model, config: modelConfig } = primaryModel
48
- this.apiKey = modelConfig.apiKey
49
- this.temperature = options.temperature || modelConfig.temperature || 0.2
50
- this.silent = options.silent || modelConfig.silent || false
51
- this.stream = options.stream || false
52
- this.timeout = options.timeout || 60000 // Default timeout of 60 seconds
53
-
54
- switch (provider) {
55
- case 'claude':
56
- this.adapter = new ClaudeAdapter(model)
57
- break
58
- case 'openai':
59
- this.adapter = new OpenAIAdapter(model)
60
- break
61
- case 'mistral':
62
- this.adapter = new MistralAdapter(model)
63
- break
64
- case 'ollama':
65
- this.adapter = new OllamaAdapter(model)
66
- break
67
- case 'gemini':
68
- this.adapter = new GeminiAdapter(model)
69
- break
70
- case 'azureopenai':
71
- if (!modelConfig.endpoint) {
72
- throw new Error('Azure OpenAI endpoint not configured')
73
- }
74
- this.adapter = new AzureOpenAIAdapter(model, modelConfig.endpoint)
75
- break
76
- default:
77
- throw new Error(`Unsupported provider: ${provider}`)
78
- }
79
- }
80
-
81
- private async reviewPrompt(
82
- prompt: string,
83
- messages: ChatMessage[],
84
- endpoint: string,
85
- ): Promise<string | null> {
86
- if (this.silent) return prompt
87
-
88
- const fullPrompt = messages
89
- .map((m) => (m.role === 'user' ? `# Task\n\n${m.content}` : m.content))
90
- .join('\n\n')
91
-
92
- const tokenCount = Math.ceil(fullPrompt.length / 4).toLocaleString()
93
- const reviewPrompt = await confirm({
94
- message: `Do you want to review the ~${tokenCount} token prompt before sending it to ${endpoint}?`,
95
- default: true,
96
- })
97
-
98
- if (reviewPrompt) {
99
- parseMarkdownInstructions(fullPrompt).map((code) => {
100
- if (code.trim().startsWith('```')) {
101
- const lines = code.split('\n')
102
- const language = code.match(/```(\w+)/)?.[1] || 'default'
103
- console.log(lines[0])
104
- try {
105
- if (language === 'default') {
106
- console.log(highlight(lines.slice(1, -1).join('\n')))
107
- } else {
108
- console.log(highlight(lines.slice(1, -1).join('\n'), { language }))
109
- }
110
- } catch (error) {
111
- // don't highlight if it fails
112
- console.log(lines.slice(1, -1).join('\n'))
113
- }
114
- console.log(lines.slice(-1)[0])
115
- } else {
116
- console.log(highlight(code, { language: 'markdown' }))
117
- }
118
- })
119
-
120
- const confirmPrompt = await confirm({
121
- message: `Are you sure you want to continue?`,
122
- default: true,
123
- })
124
-
125
- if (!confirmPrompt) {
126
- process.exit(1)
127
- }
128
- }
129
-
130
- return prompt
131
- }
132
-
133
- public async streamText(request: GPTRequest): Promise<AxiosResponse> {
134
- request.stream = true
135
- request.temperature ||= this.temperature
136
-
137
- const endpoint = this.adapter.getEndpoint(this.stream)
138
- const payload = this.adapter.getPayload(request, this.stream)
139
- const headers = this.adapter.getHeaders(this.apiKey)
140
-
141
- const reviewedPrompt = await this.reviewPrompt(request.prompt, request.messages || [], endpoint)
142
- if (reviewedPrompt === null) {
143
- throw new Error('Operation cancelled by user')
144
- }
145
- request.prompt = reviewedPrompt
146
-
147
- const maxRetries = 5
148
- let attempt = 0
149
- let delay = 1000 // Initial delay of 1 second
150
-
151
- while (attempt < maxRetries) {
152
- try {
153
- return await axios({
154
- method: 'post',
155
- url: endpoint,
156
- data: payload,
157
- headers: headers,
158
- responseType: 'stream',
159
- timeout: this.timeout,
160
- })
161
- } catch (err) {
162
- const error = err as AxiosError
163
- if (error.response && error.response.status === 429) {
164
- attempt++
165
- const tokenCount = payload.messages
166
- .reduce((acc: number, message: any) => acc + Math.ceil(message.content.length / 4), 0)
167
- .toLocaleString()
168
- console.warn(
169
- `${colors.red.bold('ERROR')} Rate limit error for this ${tokenCount} token prompt. Possibly past the token limit for this AI API. Try including fewer code files. Retrying in ${delay / 1000} seconds... (Attempt ${attempt} of ${maxRetries})`,
170
- )
171
- await new Promise((resolve) => setTimeout(resolve, delay))
172
- delay *= 2 // Exponential backoff
173
- } else {
174
- throw error
175
- }
176
- }
177
- }
178
-
179
- throw new Error('Max retries exceeded')
180
- }
181
-
182
- public async generateText(request: GPTRequest): Promise<string> {
183
- request.temperature ||= this.temperature
184
-
185
- const endpoint = this.adapter.getEndpoint(this.stream)
186
- const payload = this.adapter.getPayload(request, this.stream)
187
- const headers = this.adapter.getHeaders(this.apiKey)
188
-
189
- const reviewedPrompt = await this.reviewPrompt(request.prompt, request.messages || [], endpoint)
190
- if (reviewedPrompt === null) {
191
- throw new Error('Operation cancelled by user')
192
- }
193
- request.prompt = reviewedPrompt
194
-
195
- try {
196
- const response = await axios.post(endpoint, payload, { headers })
197
- return this.adapter.extractResponse(response.data)
198
- } catch (err) {
199
- const error = err as AxiosError
200
- let errorMessage = 'An error occurred while communicating with the AI server'
201
-
202
- if (error.response) {
203
- // The request was made and the server responded with a status code
204
- // that falls out of the range of 2xx
205
- errorMessage = `Server responded with status ${error.response.status}: ${error.response.statusText}`
206
- } else if (error.request) {
207
- // The request was made but no response was received
208
- errorMessage = 'No response received from the server'
209
- } else {
210
- // Something happened in setting up the request that triggered an Error
211
- errorMessage = error.message || 'Unknown error occurred'
212
- }
213
-
214
- console.error(
215
- `${colors.red.bold('ERROR')} ${errorMessage}\n` +
216
- `Endpoint: ${this.adapter.getEndpoint(this.stream)}\n` +
217
- `Details: ${colors.yellow(JSON.stringify(error.response?.data || {}, null, 2))}\n`,
218
- )
219
-
220
- throw new Error(errorMessage)
221
- }
222
- }
223
-
224
- convertStream(data: string): OpenAIStreamChunk | null {
225
- return this.adapter.convertStream(data)
226
- }
227
- }
228
-
229
- export default ClovingGPT
@@ -1,12 +0,0 @@
1
- import ChatManager from '../managers/ChatManager'
2
- import { getConfig } from '../utils/config_utils'
3
- import type { ClovingGPTOptions } from '../utils/types'
4
-
5
- const chat = async (options: ClovingGPTOptions) => {
6
- options.silent = getConfig(options).globalSilent || false
7
- options.stream = true
8
- const chatManager = new ChatManager(options)
9
- await chatManager.initialize()
10
- }
11
-
12
- export default chat
@@ -1,192 +0,0 @@
1
- import { getConfig, saveConfig } from '../utils/config_utils'
2
- import { fetchModels } from '../utils/prompt_utils'
3
- import type { ClovingModelConfig } from '../utils/types'
4
-
5
- // Add this type definition at the top of the file
6
- import { select, input, confirm } from '@inquirer/prompts'
7
-
8
- /**
9
- * Configures the AI models by prompting the user for various settings.
10
- *
11
- * @returns {Promise<void>} A promise that resolves when the configuration is complete.
12
- */
13
- export const config = async (): Promise<void> => {
14
- let currentConfig = getConfig({})
15
-
16
- // Ensure models are initialized properly
17
- if (!currentConfig.models) {
18
- currentConfig.models = {}
19
- }
20
-
21
- const models = await fetchModels()
22
- if (models.length === 0) {
23
- console.error('No models available.')
24
- throw new Error('No models available')
25
- }
26
-
27
- let continueConfig = true
28
-
29
- while (continueConfig) {
30
- const providers = [...new Set(models.map((model) => model.split(':')[0]))]
31
- /**
32
- * Prompts the user to select a provider from the available models.
33
- */
34
- const selectedProvider = await select({
35
- message: 'Select a provider:',
36
- choices: providers.map((provider) => ({ name: provider, value: provider })),
37
- })
38
-
39
- const providerModels = models.filter((model) => model.startsWith(selectedProvider))
40
- const modelCategories = [...new Set(providerModels.map((model) => model.split(':')[1]))]
41
- /**
42
- * Prompts the user to select a category from the selected provider's models.
43
- */
44
- const selectedCategory = await select({
45
- message: 'Select a category:',
46
- choices: modelCategories.map((category) => ({ name: category, value: category })),
47
- })
48
-
49
- const specificModels = providerModels.filter(
50
- (model) => model.split(':')[1] === selectedCategory,
51
- )
52
- /**
53
- * Prompts the user to select a specific model from the selected category.
54
- */
55
- const modelIndex = await select({
56
- message: "Select an AI model you'd like to use:",
57
- choices: specificModels.map((model, index) => ({ name: model, value: index })),
58
- pageSize: specificModels.length,
59
- })
60
-
61
- const selectedModel = specificModels[modelIndex]
62
- /**
63
- * Prompts the user to enter the API key for the selected model.
64
- */
65
- const apiKey = await input({
66
- message: `Enter your API key for ${selectedModel}: `,
67
- })
68
- const [provider, ...modelParts] = selectedModel?.split(':') || []
69
- const model = modelParts.join(':')
70
-
71
- if (!currentConfig.models[provider]) {
72
- currentConfig.models[provider] = {}
73
- }
74
-
75
- /**
76
- * Prompts the user to set the selected model as the primary model.
77
- */
78
- const primary = await confirm({
79
- message:
80
- 'Set this model as the primary? Primary models are used by default if your prompt fits within its context window. You can configure backup models for larger prompts.',
81
- default: true,
82
- })
83
-
84
- /**
85
- * Prompts the user to enter the priority for the selected model.
86
- *
87
- * @returns {string} The priority value as a string.
88
- */
89
- const priority = await input({
90
- message:
91
- 'Enter the priority for this model (0-100). Higher priority AI APIs are chosen as long as the prompt fits its context window:',
92
- default: primary ? '100' : '0',
93
- validate: (input: string) => {
94
- const num = parseInt(input, 10)
95
- if (isNaN(num) || num < 0 || num > 100) {
96
- return 'Please enter a valid number between 0 and 100.'
97
- }
98
- return true
99
- },
100
- })
101
-
102
- /**
103
- * Prompts the user to decide if they want to review all prompts before they are sent to the selected model.
104
- */
105
- const review = await confirm({
106
- message: `Do you want to review all prompts before they are sent to ${selectedModel}?`,
107
- default: false,
108
- })
109
-
110
- /**
111
- * Prompts the user to decide if they trust the selected model with sensitive information.
112
- */
113
- const trust = await confirm({
114
- message: `Do you trust ${selectedModel} with sensitive information?`,
115
- default: true,
116
- })
117
-
118
- /**
119
- * Prompts the user to enter the temperature setting for the selected model.
120
- *
121
- * @returns {string} The temperature value as a string.
122
- */
123
- const temperature = await input({
124
- message: `Enter the temperature for ${selectedModel} (0.0 - 1.0): [0.2]`,
125
- default: '0.2',
126
- validate: (value: string) => {
127
- const num = parseFloat(value)
128
- if (isNaN(num) || num < 0 || num > 1) {
129
- return 'Please enter a valid number between 0.0 and 1.0.'
130
- }
131
- return true
132
- },
133
- })
134
-
135
- const parsedTemperature = parseFloat(temperature)
136
-
137
- /**
138
- * Constructs the model configuration object.
139
- */
140
- let modelConfig: ClovingModelConfig = {
141
- apiKey,
142
- primary,
143
- priority: parseInt(priority, 10),
144
- silent: !review,
145
- trust,
146
- temperature: parsedTemperature,
147
- }
148
-
149
- if (provider === 'azureopenai') {
150
- /**
151
- * Prompts the user to enter the Azure OpenAI endpoint URL.
152
- */
153
- const endpoint = await input({
154
- message: 'Enter the Azure OpenAI endpoint URL:',
155
- validate: (value: string) => {
156
- if (!value.startsWith('https://')) {
157
- return 'Please enter a valid HTTPS URL'
158
- }
159
- return true
160
- },
161
- })
162
- modelConfig.endpoint = endpoint
163
- }
164
-
165
- currentConfig.models[provider][model] = modelConfig
166
-
167
- if (primary) {
168
- // Ensure only one primary model
169
- for (const p in currentConfig.models) {
170
- for (const m in currentConfig.models[p]) {
171
- if (p !== provider || m !== model) {
172
- currentConfig.models[p][m].primary = false
173
- }
174
- }
175
- }
176
- }
177
-
178
- /**
179
- * Prompts the user to decide if they want to configure another model.
180
- */
181
- const anotherModel = await confirm({
182
- message: 'Do you want to configure another model?',
183
- default: true,
184
- })
185
-
186
- continueConfig = anotherModel
187
- }
188
-
189
- saveConfig(currentConfig)
190
- }
191
-
192
- export default config
@@ -1,18 +0,0 @@
1
- import { getConfig } from '../../utils/config_utils'
2
- import ChatManager from '../../managers/ChatManager'
3
- import CodeManager from '../../managers/CodeManager'
4
- import type { ClovingGPTOptions } from '../../utils/types'
5
-
6
- const code = async (options: ClovingGPTOptions) => {
7
- if (options.interactive) {
8
- options.silent = getConfig(options).globalSilent || false
9
- options.stream = true
10
- const chatManager = new ChatManager(options)
11
- await chatManager.initialize()
12
- } else {
13
- const codeManager = new CodeManager(options)
14
- await codeManager.initialize()
15
- }
16
- }
17
-
18
- export default code
@@ -1,9 +0,0 @@
1
- import type { ClovingGPTOptions } from '../../utils/types'
2
- import CommitManager from '../../managers/CommitManager'
3
-
4
- const commit = async (options: ClovingGPTOptions) => {
5
- const commitManager = new CommitManager(options)
6
- await commitManager.generateCommit()
7
- }
8
-
9
- export default commit
@@ -1,93 +0,0 @@
1
- import highlight from 'cli-highlight'
2
- import ncp from 'copy-paste'
3
- import fs from 'fs'
4
- import path from 'path'
5
- import { input, confirm } from '@inquirer/prompts'
6
-
7
- import { collectSpecialFileContents, addFileOrDirectoryToContext } from '../../utils/prompt_utils'
8
- import { getConfig, getNearestClovingConfig, getAllFiles } from '../../utils/config_utils'
9
- import type { ClovingGPTOptions } from '../../utils/types'
10
-
11
- const generateContextPrompt = (files: string[], contextFiles: Record<string, string>): string => {
12
- const specialFileContents = collectSpecialFileContents()
13
- const specialFiles = Object.keys(specialFileContents)
14
- .map(
15
- (file) =>
16
- `### Contents of ${file}\n\n${JSON.stringify(specialFileContents[file], null, 2)}\n\n`,
17
- )
18
- .join('\n')
19
- const contextFileContents = Object.keys(contextFiles)
20
- .map((file) => `### Contents of ${file}\n\n${contextFiles[file]}\n\n`)
21
- .join('\n')
22
-
23
- return `### Description of App
24
-
25
- ${JSON.stringify(getNearestClovingConfig().config, null, 2)}
26
-
27
- ${specialFiles}
28
-
29
- ${contextFileContents}
30
-
31
- ### Directory structure
32
-
33
- ${files.join('\n')}`
34
- }
35
-
36
- const context = async (options: ClovingGPTOptions) => {
37
- let { files } = options
38
- options.silent = getConfig(options).globalSilent || false
39
- const allSrcFiles = await getAllFiles(options, false)
40
- let contextFiles: Record<string, string> = {}
41
-
42
- try {
43
- if (files) {
44
- for (const file of files) {
45
- const filePath = path.resolve(file)
46
- if (
47
- await fs.promises
48
- .stat(filePath)
49
- .then((stat) => stat.isFile())
50
- .catch(() => false)
51
- ) {
52
- const content = await fs.promises.readFile(filePath, 'utf-8')
53
- contextFiles[file] = content
54
- }
55
- }
56
- } else {
57
- let includeMoreFiles = true
58
-
59
- while (includeMoreFiles) {
60
- const contextFile = await input({
61
- message:
62
- 'Enter the relative path of a file or directory you would like to include as context (or press enter to continue):',
63
- })
64
-
65
- if (contextFile) {
66
- contextFiles = await addFileOrDirectoryToContext(contextFile, contextFiles, options)
67
- } else {
68
- includeMoreFiles = false
69
- }
70
- }
71
- }
72
-
73
- const contextPrompt = generateContextPrompt(allSrcFiles, contextFiles)
74
-
75
- console.log('\nGenerated Context Prompt:')
76
- console.log(highlight(contextPrompt, { language: 'markdown' }))
77
-
78
- const copyToClipboard = await confirm({
79
- message: 'Do you want to copy the context prompt to your clipboard?',
80
- default: true,
81
- })
82
-
83
- if (copyToClipboard) {
84
- ncp.copy(contextPrompt, () => {
85
- console.log('Context prompt copied to clipboard')
86
- })
87
- }
88
- } catch (error) {
89
- console.error('Could not generate context', error)
90
- }
91
- }
92
-
93
- export default context
@@ -1,9 +0,0 @@
1
- import DocsManager from '../../managers/DocsManager'
2
- import type { ClovingGPTOptions } from '../../utils/types'
3
-
4
- const docs = async (options: ClovingGPTOptions) => {
5
- const docsManager = new DocsManager(options)
6
- await docsManager.generateDocs()
7
- }
8
-
9
- export default docs
@@ -1,9 +0,0 @@
1
- import ReviewManager from '../../managers/ReviewManager'
2
- import type { ClovingGPTOptions } from '../../utils/types'
3
-
4
- const review = async (options: ClovingGPTOptions) => {
5
- const reviewManager = new ReviewManager(options)
6
- await reviewManager.generateReview()
7
- }
8
-
9
- export default review