cloving 0.3.20 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (416) hide show
  1. package/{LICENSE.md → LICENSE} +1 -1
  2. package/README.md +475 -182
  3. package/dist/src/authority/budgets.d.ts +12 -0
  4. package/dist/src/authority/budgets.js +42 -0
  5. package/dist/src/authority/commands.d.ts +7 -0
  6. package/dist/src/authority/commands.js +263 -0
  7. package/dist/src/authority/details.d.ts +28 -0
  8. package/dist/src/authority/details.js +33 -0
  9. package/dist/src/authority/dispatch-decision.d.ts +40 -0
  10. package/dist/src/authority/dispatch-decision.js +47 -0
  11. package/dist/src/authority/effect-requests.d.ts +2 -0
  12. package/dist/src/authority/effect-requests.js +139 -0
  13. package/dist/src/authority/effect-results.d.ts +4 -0
  14. package/dist/src/authority/effect-results.js +236 -0
  15. package/dist/src/authority/events.d.ts +2 -0
  16. package/dist/src/authority/events.js +45 -0
  17. package/dist/src/authority/gate-reduction.d.ts +8 -0
  18. package/dist/src/authority/gate-reduction.js +109 -0
  19. package/dist/src/authority/gates.d.ts +48 -0
  20. package/dist/src/authority/gates.js +77 -0
  21. package/dist/src/authority/history-state.d.ts +15 -0
  22. package/dist/src/authority/history-state.js +61 -0
  23. package/dist/src/authority/history.d.ts +13 -0
  24. package/dist/src/authority/history.js +37 -0
  25. package/dist/src/authority/instants.d.ts +3 -0
  26. package/dist/src/authority/instants.js +38 -0
  27. package/dist/src/authority/leases.d.ts +15 -0
  28. package/dist/src/authority/leases.js +113 -0
  29. package/dist/src/authority/operations.d.ts +101 -0
  30. package/dist/src/authority/operations.js +75 -0
  31. package/dist/src/authority/reconciliation.d.ts +27 -0
  32. package/dist/src/authority/reconciliation.js +147 -0
  33. package/dist/src/authority/reducer.d.ts +41 -0
  34. package/dist/src/authority/reducer.js +139 -0
  35. package/dist/src/authority/reduction-state.d.ts +36 -0
  36. package/dist/src/authority/reduction-state.js +68 -0
  37. package/dist/src/authority/reduction.d.ts +6 -0
  38. package/dist/src/authority/reduction.js +160 -0
  39. package/dist/src/authority/status-closure.d.ts +4 -0
  40. package/dist/src/authority/status-closure.js +57 -0
  41. package/dist/src/authority/status-effects.d.ts +17 -0
  42. package/dist/src/authority/status-effects.js +43 -0
  43. package/dist/src/authority/status-input.d.ts +45 -0
  44. package/dist/src/authority/status-input.js +9 -0
  45. package/dist/src/authority/status.d.ts +32 -0
  46. package/dist/src/authority/status.js +256 -0
  47. package/dist/src/authority/stop-sequence.d.ts +37 -0
  48. package/dist/src/authority/stop-sequence.js +91 -0
  49. package/dist/src/authority/transitions.d.ts +63 -0
  50. package/dist/src/authority/transitions.js +122 -0
  51. package/dist/src/broker/actor/adapter-calls.d.ts +13 -0
  52. package/dist/src/broker/actor/adapter-calls.js +34 -0
  53. package/dist/src/broker/actor/adapter-outcomes.d.ts +28 -0
  54. package/dist/src/broker/actor/adapter-outcomes.js +80 -0
  55. package/dist/src/broker/actor/authority-actor.d.ts +25 -0
  56. package/dist/src/broker/actor/authority-actor.js +169 -0
  57. package/dist/src/broker/actor/authority-changes.d.ts +31 -0
  58. package/dist/src/broker/actor/authority-changes.js +46 -0
  59. package/dist/src/broker/actor/authority-connection.d.ts +15 -0
  60. package/dist/src/broker/actor/authority-connection.js +44 -0
  61. package/dist/src/broker/actor/authority-conversion.d.ts +10 -0
  62. package/dist/src/broker/actor/authority-conversion.js +72 -0
  63. package/dist/src/broker/actor/authority-delivery.d.ts +13 -0
  64. package/dist/src/broker/actor/authority-delivery.js +162 -0
  65. package/dist/src/broker/actor/authority-logger.d.ts +2 -0
  66. package/dist/src/broker/actor/authority-logger.js +19 -0
  67. package/dist/src/broker/actor/authority-policy.d.ts +9 -0
  68. package/dist/src/broker/actor/authority-policy.js +11 -0
  69. package/dist/src/broker/actor/authority-queries.d.ts +45 -0
  70. package/dist/src/broker/actor/authority-queries.js +85 -0
  71. package/dist/src/broker/actor/authority-receipts.d.ts +28 -0
  72. package/dist/src/broker/actor/authority-receipts.js +84 -0
  73. package/dist/src/broker/actor/authority-release.d.ts +13 -0
  74. package/dist/src/broker/actor/authority-release.js +69 -0
  75. package/dist/src/broker/actor/authority-runtime.d.ts +60 -0
  76. package/dist/src/broker/actor/authority-runtime.js +204 -0
  77. package/dist/src/broker/actor/authority-session.d.ts +65 -0
  78. package/dist/src/broker/actor/authority-session.js +252 -0
  79. package/dist/src/broker/actor/authority-settings.d.ts +33 -0
  80. package/dist/src/broker/actor/authority-settings.js +63 -0
  81. package/dist/src/broker/actor/authority-upgrades.d.ts +16 -0
  82. package/dist/src/broker/actor/authority-upgrades.js +12 -0
  83. package/dist/src/broker/actor/authority-watchdog.d.ts +14 -0
  84. package/dist/src/broker/actor/authority-watchdog.js +41 -0
  85. package/dist/src/broker/actor/authority.d.ts +14 -0
  86. package/dist/src/broker/actor/authority.js +115 -0
  87. package/dist/src/broker/actor/delivery-intents.d.ts +68 -0
  88. package/dist/src/broker/actor/delivery-intents.js +77 -0
  89. package/dist/src/broker/actor/delivery-plan.d.ts +2 -0
  90. package/dist/src/broker/actor/delivery-plan.js +109 -0
  91. package/dist/src/broker/actor/delivery-results.d.ts +11 -0
  92. package/dist/src/broker/actor/delivery-results.js +63 -0
  93. package/dist/src/broker/actor/effect-delivery.d.ts +19 -0
  94. package/dist/src/broker/actor/effect-delivery.js +118 -0
  95. package/dist/src/broker/actor/effect-plan.d.ts +41 -0
  96. package/dist/src/broker/actor/effect-plan.js +173 -0
  97. package/dist/src/broker/actor/effect-queries.d.ts +27 -0
  98. package/dist/src/broker/actor/effect-queries.js +80 -0
  99. package/dist/src/broker/actor/effect-turn.d.ts +25 -0
  100. package/dist/src/broker/actor/effect-turn.js +84 -0
  101. package/dist/src/broker/actor/pin-check.d.ts +6 -0
  102. package/dist/src/broker/actor/pin-check.js +12 -0
  103. package/dist/src/broker/actor/runtime-parts.d.ts +23 -0
  104. package/dist/src/broker/actor/runtime-parts.js +34 -0
  105. package/dist/src/broker/actor/stop-plan.d.ts +20 -0
  106. package/dist/src/broker/actor/stop-plan.js +46 -0
  107. package/dist/src/broker/actor/stop-turn.d.ts +17 -0
  108. package/dist/src/broker/actor/stop-turn.js +42 -0
  109. package/dist/src/broker/actor/turn-draft.d.ts +31 -0
  110. package/dist/src/broker/actor/turn-draft.js +138 -0
  111. package/dist/src/broker/actor/turn-plan.d.ts +17 -0
  112. package/dist/src/broker/actor/turn-plan.js +136 -0
  113. package/dist/src/broker/actor/turn-refusals.d.ts +8 -0
  114. package/dist/src/broker/actor/turn-refusals.js +35 -0
  115. package/dist/src/broker/actor/turn-staging.d.ts +78 -0
  116. package/dist/src/broker/actor/turn-staging.js +34 -0
  117. package/dist/src/broker/actor/turn-state.d.ts +34 -0
  118. package/dist/src/broker/actor/turn-state.js +208 -0
  119. package/dist/src/broker/authority-admission.d.ts +21 -0
  120. package/dist/src/broker/authority-admission.js +70 -0
  121. package/dist/src/broker/authority-restore.d.ts +30 -0
  122. package/dist/src/broker/authority-restore.js +165 -0
  123. package/dist/src/broker/decision-restore.d.ts +16 -0
  124. package/dist/src/broker/decision-restore.js +158 -0
  125. package/dist/src/broker/decision-upgrade.d.ts +3 -0
  126. package/dist/src/broker/decision-upgrade.js +12 -0
  127. package/dist/src/broker/effect-restore.d.ts +20 -0
  128. package/dist/src/broker/effect-restore.js +111 -0
  129. package/dist/src/broker/effect-upgrade.d.ts +3 -0
  130. package/dist/src/broker/effect-upgrade.js +9 -0
  131. package/dist/src/broker/operation-digest.d.ts +1 -0
  132. package/dist/src/broker/operation-digest.js +4 -0
  133. package/dist/src/broker/socket-address.d.ts +9 -0
  134. package/dist/src/broker/socket-address.js +14 -0
  135. package/dist/src/broker/workflow-pin.d.ts +2 -0
  136. package/dist/src/broker/workflow-pin.js +5 -0
  137. package/dist/src/chats/destination.d.ts +4 -0
  138. package/dist/src/chats/destination.js +94 -0
  139. package/dist/src/chats/import.d.ts +13 -0
  140. package/dist/src/chats/import.js +71 -0
  141. package/dist/src/chats/normalize.d.ts +20 -0
  142. package/dist/src/chats/normalize.js +139 -0
  143. package/dist/src/chats/reader.d.ts +15 -0
  144. package/dist/src/chats/reader.js +87 -0
  145. package/dist/src/cli/arguments.d.ts +23 -0
  146. package/dist/src/cli/arguments.js +154 -0
  147. package/dist/src/cli/client.d.ts +15 -0
  148. package/dist/src/cli/client.js +122 -0
  149. package/dist/src/cli/commands.d.ts +14 -0
  150. package/dist/src/cli/commands.js +253 -0
  151. package/dist/src/cli/main.d.ts +1 -0
  152. package/dist/src/cli/main.js +80 -0
  153. package/dist/src/cli/render.d.ts +8 -0
  154. package/dist/src/cli/render.js +186 -0
  155. package/dist/src/cli/runtime-arguments.d.ts +73 -0
  156. package/dist/src/cli/runtime-arguments.js +248 -0
  157. package/dist/src/cli/runtime-directory.d.ts +4 -0
  158. package/dist/src/cli/runtime-directory.js +25 -0
  159. package/dist/src/cli/toolchain.d.ts +3 -0
  160. package/dist/src/cli/toolchain.js +74 -0
  161. package/dist/src/cli/usage.d.ts +4 -0
  162. package/dist/src/cli/usage.js +124 -0
  163. package/dist/src/cli/validate.d.ts +38 -0
  164. package/dist/src/cli/validate.js +116 -0
  165. package/dist/src/cli/watch-board-view.d.ts +22 -0
  166. package/dist/src/cli/watch-board-view.js +128 -0
  167. package/dist/src/cli/watch-board.d.ts +15 -0
  168. package/dist/src/cli/watch-board.js +174 -0
  169. package/dist/src/cli/watch-element.d.ts +11 -0
  170. package/dist/src/cli/watch-element.js +6 -0
  171. package/dist/src/cli/watch-model.d.ts +29 -0
  172. package/dist/src/cli/watch-model.js +261 -0
  173. package/dist/src/cli/watch-navigation.d.ts +9 -0
  174. package/dist/src/cli/watch-navigation.js +40 -0
  175. package/dist/src/cli/watch-page.d.ts +1 -0
  176. package/dist/src/cli/watch-page.js +272 -0
  177. package/dist/src/cli/watch-paths.d.ts +2 -0
  178. package/dist/src/cli/watch-paths.js +52 -0
  179. package/dist/src/cli/watch-phases.d.ts +7 -0
  180. package/dist/src/cli/watch-phases.js +148 -0
  181. package/dist/src/cli/watch-reads.d.ts +28 -0
  182. package/dist/src/cli/watch-reads.js +244 -0
  183. package/dist/src/cli/watch-render.d.ts +139 -0
  184. package/dist/src/cli/watch-render.js +95 -0
  185. package/dist/src/cli/watch-server.d.ts +10 -0
  186. package/dist/src/cli/watch-server.js +176 -0
  187. package/dist/src/cli/watch-stream.d.ts +11 -0
  188. package/dist/src/cli/watch-stream.js +128 -0
  189. package/dist/src/cli/watch-turn.d.ts +29 -0
  190. package/dist/src/cli/watch-turn.js +130 -0
  191. package/dist/src/cli/watch-view.d.ts +39 -0
  192. package/dist/src/cli/watch-view.js +223 -0
  193. package/dist/src/cli.d.ts +2 -0
  194. package/dist/src/cli.js +62 -0
  195. package/dist/src/daemon/claude-turn.d.ts +28 -0
  196. package/dist/src/daemon/claude-turn.js +135 -0
  197. package/dist/src/daemon/claude-worker.d.ts +26 -0
  198. package/dist/src/daemon/claude-worker.js +224 -0
  199. package/dist/src/daemon/codex-stream.d.ts +4 -0
  200. package/dist/src/daemon/codex-stream.js +113 -0
  201. package/dist/src/daemon/daemon.d.ts +46 -0
  202. package/dist/src/daemon/daemon.js +186 -0
  203. package/dist/src/daemon/delivery-router.d.ts +10 -0
  204. package/dist/src/daemon/delivery-router.js +34 -0
  205. package/dist/src/daemon/github-calls.d.ts +29 -0
  206. package/dist/src/daemon/github-calls.js +127 -0
  207. package/dist/src/daemon/github-issue-methods.d.ts +3 -0
  208. package/dist/src/daemon/github-issue-methods.js +99 -0
  209. package/dist/src/daemon/github-issue-privacy.d.ts +6 -0
  210. package/dist/src/daemon/github-issue-privacy.js +131 -0
  211. package/dist/src/daemon/github-merge.d.ts +18 -0
  212. package/dist/src/daemon/github-merge.js +259 -0
  213. package/dist/src/daemon/github-methods.d.ts +5 -0
  214. package/dist/src/daemon/github-methods.js +198 -0
  215. package/dist/src/daemon/github-operation.d.ts +38 -0
  216. package/dist/src/daemon/github-operation.js +57 -0
  217. package/dist/src/daemon/github-worker.d.ts +17 -0
  218. package/dist/src/daemon/github-worker.js +281 -0
  219. package/dist/src/daemon/host-environment.d.ts +8 -0
  220. package/dist/src/daemon/host-environment.js +14 -0
  221. package/dist/src/daemon/issue-queue.d.ts +9 -0
  222. package/dist/src/daemon/issue-queue.js +163 -0
  223. package/dist/src/daemon/notify-message.d.ts +14 -0
  224. package/dist/src/daemon/notify-message.js +48 -0
  225. package/dist/src/daemon/notify.d.ts +12 -0
  226. package/dist/src/daemon/notify.js +161 -0
  227. package/dist/src/daemon/operation-journal.d.ts +42 -0
  228. package/dist/src/daemon/operation-journal.js +53 -0
  229. package/dist/src/daemon/ticket-registration.d.ts +33 -0
  230. package/dist/src/daemon/ticket-registration.js +177 -0
  231. package/dist/src/daemon/ticket-source.d.ts +17 -0
  232. package/dist/src/daemon/ticket-source.js +36 -0
  233. package/dist/src/daemon/work-tree.d.ts +26 -0
  234. package/dist/src/daemon/work-tree.js +206 -0
  235. package/dist/src/effect-authorization.d.ts +21 -0
  236. package/dist/src/effect-authorization.js +14 -0
  237. package/dist/src/execution-pin.d.ts +4 -0
  238. package/dist/src/execution-pin.js +68 -0
  239. package/dist/src/host/start-delivery.d.ts +41 -0
  240. package/dist/src/host/start-delivery.js +68 -0
  241. package/dist/src/host/step-bridge-host.d.ts +79 -0
  242. package/dist/src/host/step-bridge-host.js +205 -0
  243. package/dist/src/host/step-claims.d.ts +31 -0
  244. package/dist/src/host/step-claims.js +85 -0
  245. package/dist/src/host/world-host.d.ts +21 -0
  246. package/dist/src/host/world-host.js +51 -0
  247. package/dist/src/host/world-reconciliation.d.ts +37 -0
  248. package/dist/src/host/world-reconciliation.js +75 -0
  249. package/dist/src/host/world-runs.d.ts +14 -0
  250. package/dist/src/host/world-runs.js +61 -0
  251. package/dist/src/operation-identity.d.ts +7 -0
  252. package/dist/src/operation-identity.js +59 -0
  253. package/dist/src/protocol.d.ts +35 -0
  254. package/dist/src/protocol.js +64 -0
  255. package/dist/src/resource-files.d.ts +1 -0
  256. package/dist/src/resource-files.js +29 -0
  257. package/dist/src/service/changes.d.ts +11 -0
  258. package/dist/src/service/changes.js +32 -0
  259. package/dist/src/service/decision-handler.d.ts +9 -0
  260. package/dist/src/service/decision-handler.js +233 -0
  261. package/dist/src/service/event-handler.d.ts +10 -0
  262. package/dist/src/service/event-handler.js +70 -0
  263. package/dist/src/service/expiry.d.ts +13 -0
  264. package/dist/src/service/expiry.js +53 -0
  265. package/dist/src/service/gateway.d.ts +21 -0
  266. package/dist/src/service/gateway.js +120 -0
  267. package/dist/src/service/registry.d.ts +40 -0
  268. package/dist/src/service/registry.js +13 -0
  269. package/dist/src/service/replies.d.ts +26 -0
  270. package/dist/src/service/replies.js +56 -0
  271. package/dist/src/service/run-handlers.d.ts +4 -0
  272. package/dist/src/service/run-handlers.js +271 -0
  273. package/dist/src/service/service.d.ts +58 -0
  274. package/dist/src/service/service.js +212 -0
  275. package/dist/src/service/submission-handler.d.ts +4 -0
  276. package/dist/src/service/submission-handler.js +206 -0
  277. package/dist/src/service/transport.d.ts +16 -0
  278. package/dist/src/service/transport.js +141 -0
  279. package/dist/src/service/worker-port.d.ts +85 -0
  280. package/dist/src/service/worker-port.js +126 -0
  281. package/dist/src/step-bridge.d.ts +57 -0
  282. package/dist/src/step-bridge.js +4 -0
  283. package/dist/src/steps/decision-gate.d.ts +2 -0
  284. package/dist/src/steps/decision-gate.js +8 -0
  285. package/dist/src/steps/load-cycle.d.ts +10 -0
  286. package/dist/src/steps/load-cycle.js +11 -0
  287. package/dist/src/steps/protected-effect.d.ts +2 -0
  288. package/dist/src/steps/protected-effect.js +8 -0
  289. package/dist/src/storage/decision-rows.d.ts +54 -0
  290. package/dist/src/storage/decision-rows.js +72 -0
  291. package/dist/src/storage/decision-snapshots.d.ts +17 -0
  292. package/dist/src/storage/decision-snapshots.js +25 -0
  293. package/dist/src/storage/domain-changes.d.ts +48 -0
  294. package/dist/src/storage/domain-changes.js +213 -0
  295. package/dist/src/storage/domain-rows.d.ts +85 -0
  296. package/dist/src/storage/domain-rows.js +129 -0
  297. package/dist/src/storage/domain-schema.d.ts +32 -0
  298. package/dist/src/storage/domain-schema.js +193 -0
  299. package/dist/src/storage/effect-changes.d.ts +5 -0
  300. package/dist/src/storage/effect-changes.js +105 -0
  301. package/dist/src/storage/effect-rows.d.ts +67 -0
  302. package/dist/src/storage/effect-rows.js +74 -0
  303. package/dist/src/storage/effect-schema.d.ts +1 -0
  304. package/dist/src/storage/effect-schema.js +59 -0
  305. package/dist/src/storage/statements.d.ts +9 -0
  306. package/dist/src/storage/statements.js +8 -0
  307. package/dist/src/submission.d.ts +42 -0
  308. package/dist/src/submission.js +71 -0
  309. package/dist/src/turn-profile.d.ts +13 -0
  310. package/dist/src/turn-profile.js +100 -0
  311. package/dist/src/workflow-admission.d.ts +45 -0
  312. package/dist/src/workflow-admission.js +151 -0
  313. package/dist/src/workflow-contracts.d.ts +27 -0
  314. package/dist/src/workflow-contracts.js +88 -0
  315. package/dist/src/workflow-declaration.d.ts +11 -0
  316. package/dist/src/workflow-declaration.js +57 -0
  317. package/dist/src/workflow-resources.d.ts +8 -0
  318. package/dist/src/workflow-resources.js +14 -0
  319. package/dist/src/workflows.d.ts +5 -0
  320. package/dist/src/workflows.js +3 -0
  321. package/dist/tools/compile-workflows.d.ts +1 -0
  322. package/dist/tools/compile-workflows.js +33 -0
  323. package/dist/tools/self-host-processes.d.ts +10 -0
  324. package/dist/tools/self-host-processes.js +151 -0
  325. package/dist/tools/self-host-workflows.d.ts +15 -0
  326. package/dist/tools/self-host-workflows.js +78 -0
  327. package/dist/tools/self-host.d.ts +1 -0
  328. package/dist/tools/self-host.js +261 -0
  329. package/dist/tools/self-update-host.d.ts +6 -0
  330. package/dist/tools/self-update-host.js +41 -0
  331. package/dist/tools/self-update.d.ts +10 -0
  332. package/dist/tools/self-update.js +105 -0
  333. package/dist/tools/workflow-manifest.d.ts +3 -0
  334. package/dist/tools/workflow-manifest.js +34 -0
  335. package/dist/workflows/develop-prd.d.ts +7 -0
  336. package/dist/workflows/develop-prd.js +97 -0
  337. package/dist/workflows/develop-ticket.d.ts +15 -0
  338. package/dist/workflows/develop-ticket.js +301 -0
  339. package/dist/workflows/issue-labels.d.ts +14 -0
  340. package/dist/workflows/issue-labels.js +36 -0
  341. package/package.json +82 -75
  342. package/dist/abstract_gpt/index.js +0 -55
  343. package/dist/cloving_gpt/adapters/Adapter.js +0 -2
  344. package/dist/cloving_gpt/adapters/azureopenai.js +0 -69
  345. package/dist/cloving_gpt/adapters/claude.js +0 -128
  346. package/dist/cloving_gpt/adapters/gemini.js +0 -135
  347. package/dist/cloving_gpt/adapters/gpt4all.js +0 -29
  348. package/dist/cloving_gpt/adapters/index.js +0 -2
  349. package/dist/cloving_gpt/adapters/mistral.js +0 -128
  350. package/dist/cloving_gpt/adapters/ollama.js +0 -128
  351. package/dist/cloving_gpt/adapters/openai.js +0 -100
  352. package/dist/cloving_gpt/index.js +0 -192
  353. package/dist/commands/analyze.js +0 -47
  354. package/dist/commands/chat.js +0 -14
  355. package/dist/commands/check.js +0 -7
  356. package/dist/commands/commit.js +0 -44
  357. package/dist/commands/config.js +0 -167
  358. package/dist/commands/describe.js +0 -235
  359. package/dist/commands/generate/code.js +0 -21
  360. package/dist/commands/generate/commit.js +0 -11
  361. package/dist/commands/generate/context.js +0 -82
  362. package/dist/commands/generate/docs.js +0 -11
  363. package/dist/commands/generate/documentation.js +0 -11
  364. package/dist/commands/generate/fizzbuzz.js +0 -35
  365. package/dist/commands/generate/init.js +0 -15
  366. package/dist/commands/generate/review.js +0 -11
  367. package/dist/commands/generate/sh.js +0 -95
  368. package/dist/commands/generate/shell.js +0 -11
  369. package/dist/commands/generate/unit_tests.js +0 -11
  370. package/dist/commands/init.js +0 -13
  371. package/dist/commands/models.js +0 -22
  372. package/dist/commands/project/build.js +0 -88
  373. package/dist/commands/project/complete.js +0 -12
  374. package/dist/commands/project/init.js +0 -82
  375. package/dist/commands/project/plan.js +0 -108
  376. package/dist/commands/proxy.js +0 -11
  377. package/dist/commands/review.js +0 -50
  378. package/dist/commands/tokens.js +0 -75
  379. package/dist/commands/unit_tests.js +0 -150
  380. package/dist/commands/update.js +0 -7
  381. package/dist/file2.js +0 -4
  382. package/dist/index.js +0 -136
  383. package/dist/managers/BlockManager.js +0 -120
  384. package/dist/managers/ChatManager.js +0 -653
  385. package/dist/managers/ChunkManager.js +0 -32
  386. package/dist/managers/CodeManager.js +0 -185
  387. package/dist/managers/CommitManager.js +0 -78
  388. package/dist/managers/DocsManager.js +0 -88
  389. package/dist/managers/DocumentationManager.js +0 -114
  390. package/dist/managers/InitManager.js +0 -230
  391. package/dist/managers/ProxyManager.js +0 -210
  392. package/dist/managers/ReviewManager.js +0 -131
  393. package/dist/managers/ShellManager.js +0 -163
  394. package/dist/managers/StreamManager.js +0 -308
  395. package/dist/managers/UnitTestManager.js +0 -243
  396. package/dist/managers/src/managers/ProxyManager.js +0 -1
  397. package/dist/newfile.js +0 -2
  398. package/dist/package.json +0 -86
  399. package/dist/utils/command_utils.js +0 -384
  400. package/dist/utils/config_utils.js +0 -249
  401. package/dist/utils/gitUtils.js +0 -42
  402. package/dist/utils/git_utils.js +0 -217
  403. package/dist/utils/modelUtils.js +0 -7
  404. package/dist/utils/model_utils.js +0 -7
  405. package/dist/utils/prompt_utils.js +0 -333
  406. package/dist/utils/prompts/CODEGEN_COULDNT_APPLY.md +0 -5
  407. package/dist/utils/prompts/CODEGEN_EXAMPLES.md +0 -82
  408. package/dist/utils/prompts/CODEGEN_INSTRUCTIONS.md +0 -43
  409. package/dist/utils/prompts/DOCS_INSTRUCTIONS.md +0 -9
  410. package/dist/utils/prompts/INIT_INSTRUCTIONS.md +0 -132
  411. package/dist/utils/prompts/REVIEW_INSTRUCTIONS.md +0 -49
  412. package/dist/utils/prompts/SHELL_INSTRUCTIONS.md +0 -15
  413. package/dist/utils/prompts/SPECIAL_FILES.md +0 -66
  414. package/dist/utils/prompts/index.js +0 -27
  415. package/dist/utils/string_utils.js +0 -505
  416. package/dist/utils/types.js +0 -2
@@ -1,230 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const fs_1 = __importDefault(require("fs"));
7
- const os_1 = __importDefault(require("os"));
8
- const path_1 = __importDefault(require("path"));
9
- const colors_1 = __importDefault(require("colors"));
10
- const ignore_1 = __importDefault(require("ignore"));
11
- const fs_2 = require("fs");
12
- const prompts_1 = require("@inquirer/prompts");
13
- const cloving_gpt_1 = __importDefault(require("../cloving_gpt"));
14
- const string_utils_1 = require("../utils/string_utils");
15
- const config_utils_1 = require("../utils/config_utils");
16
- const prompt_utils_1 = require("../utils/prompt_utils");
17
- const prompts_2 = require("../utils/prompts");
18
- class InitManager {
19
- constructor(options) {
20
- this.options = options;
21
- this.chatHistory = [];
22
- this.options.silent = (0, config_utils_1.getConfig)(this.options).globalSilent || false;
23
- this.gpt = new cloving_gpt_1.default(this.options);
24
- this.chatHistory.push({
25
- role: 'system',
26
- content: prompts_2.INIT_INSTRUCTIONS,
27
- });
28
- }
29
- /**
30
- * Initializes the InitManager by collecting special file contents, checking for dependencies,
31
- * and processing the AI response for the project details.
32
- *
33
- * @return {Promise<void>} A promise that resolves when the initialization is complete.
34
- */
35
- async initialize() {
36
- const specialFileContents = (0, prompt_utils_1.collectSpecialFileContents)();
37
- const specialFileNames = Object.keys(specialFileContents).map((file) => ' - ' + file);
38
- this.logInitializationMessage(specialFileNames);
39
- const config = (0, config_utils_1.getConfig)(this.options);
40
- if (!config || !config?.models) {
41
- console.error('No cloving configuration found. Please run `cloving config`');
42
- return;
43
- }
44
- if (!(0, prompt_utils_1.checkForSpecialFiles)()) {
45
- console.error('No dependencies files detected. Please add a dependency file (e.g. package.json, Gemfile, requirements.txt, etc.) to your project and run `cloving init` again.');
46
- return;
47
- }
48
- const tempFilePath = path_1.default.join(os_1.default.tmpdir(), `describe_${Date.now()}.tmp`);
49
- try {
50
- const limitedFileList = await this.getFilteredFileList();
51
- const projectDetails = {
52
- files: limitedFileList,
53
- specialFiles: specialFileContents,
54
- };
55
- const [success, errorMessage] = await this.processAIResponse(projectDetails, tempFilePath);
56
- if (!success) {
57
- console.log(errorMessage);
58
- return;
59
- }
60
- await this.promptUserForReview();
61
- // Clean up
62
- await fs_2.promises.unlink(tempFilePath);
63
- }
64
- catch (error) {
65
- console.error('Error describing the project:', error.message);
66
- }
67
- }
68
- /**
69
- * Checks if a directory exists at the specified path.
70
- *
71
- * @param {string} directory - The path of the directory to check.
72
- * @return {Promise<boolean>} A promise that resolves to true if the directory exists, false otherwise.
73
- */
74
- async directoryExists(directory) {
75
- try {
76
- const stats = await fs_2.promises.stat(directory);
77
- return stats.isDirectory();
78
- }
79
- catch (error) {
80
- return false;
81
- }
82
- }
83
- /**
84
- * Returns a filtered list of files, excluding those ignored by the .gitignore file.
85
- *
86
- * @return {string[]} A list of file paths, limited to the first 100 files.
87
- */
88
- async getFilteredFileList() {
89
- const gitignorePath = path_1.default.join(process.cwd(), '.gitignore');
90
- const ig = (0, ignore_1.default)();
91
- if (fs_1.default.existsSync(gitignorePath)) {
92
- const gitignoreContent = fs_1.default.readFileSync(gitignorePath, 'utf-8');
93
- ig.add(gitignoreContent);
94
- }
95
- const fileList = await (0, prompt_utils_1.generateFileList)();
96
- const filteredFileList = fileList.filter((file) => {
97
- try {
98
- return !ig.ignores(file);
99
- }
100
- catch (error) {
101
- return false;
102
- }
103
- });
104
- return filteredFileList.slice(0, 100);
105
- }
106
- /**
107
- * Logs the initialization message based on the special file names and silent mode.
108
- *
109
- * @param {string[]} specialFileNames - A list of special file names to be analyzed.
110
- * @return {void} No return value.
111
- */
112
- logInitializationMessage(specialFileNames) {
113
- if (!this.options.silent) {
114
- if (specialFileNames.length > 0) {
115
- console.log(`Cloving will analyze the list of files and the contents of the following files:
116
-
117
- ${specialFileNames.join('\n')}
118
-
119
- Cloving will send AI a request to summarize the technologies used in this project.
120
-
121
- This will provide better context for future Cloving requests.`);
122
- }
123
- else {
124
- console.log(`
125
- This script will analyze the list of files in the current directory using GPT to summarize the
126
- technologies used. This will provide better context for future Cloving requests.
127
- `);
128
- }
129
- }
130
- }
131
- /**
132
- * Processes the AI response by generating a prompt, sending it to the AI,
133
- * and saving the response to a temporary file and cloving.json.
134
- *
135
- * @param {any} projectDetails - A JSON object describing the project.
136
- * @param {string} tempFilePath - The path to the temporary file.
137
- * @param {string} errorMessage - An error message if there was an error.
138
- * @return {[boolean, string]} A promise that resolves with an array containing a boolean
139
- * indicating whether the AI response was successfully processed,
140
- * and a message explaining any errors.
141
- */
142
- async processAIResponse(projectDetails, tempFilePath, errorMessage = '') {
143
- const prompt = errorMessage !== ''
144
- ? errorMessage
145
- : `Here is a JSON object describing my project:
146
- ${JSON.stringify(projectDetails, null, 2)}`;
147
- this.chatHistory.push({ role: 'user', content: prompt });
148
- const aiChatResponse = await this.gpt.generateText({ prompt, messages: this.chatHistory });
149
- this.chatHistory.push({ role: 'assistant', content: aiChatResponse });
150
- let cleanAiChatResponse = (0, string_utils_1.extractJsonMetadata)(aiChatResponse);
151
- const [validSyntax, syntaxErrorMessage] = this.checkClovingJsonSyntax(cleanAiChatResponse);
152
- if (!validSyntax) {
153
- console.log(syntaxErrorMessage);
154
- console.log('Retrying...');
155
- return this.processAIResponse(projectDetails, tempFilePath, syntaxErrorMessage);
156
- }
157
- else {
158
- await fs_2.promises.writeFile(tempFilePath, cleanAiChatResponse);
159
- // Save the AI chat response to cloving.json
160
- await fs_2.promises.writeFile('cloving.json', cleanAiChatResponse);
161
- console.log(`Project data saved to ${colors_1.default.green.bold('cloving.json')}`);
162
- return [true, ''];
163
- }
164
- }
165
- /**
166
- * Checks the syntax of the generated cloving.json file.
167
- *
168
- * @param {string} cleanAiChatResponse - The cleaned AI chat response.
169
- * @return {[boolean, string]} An array where the first element is a boolean indicating
170
- * whether the syntax was valid, and the second element is a
171
- * message explaining any errors.
172
- */
173
- checkClovingJsonSyntax(cleanAiChatResponse) {
174
- try {
175
- JSON.parse(cleanAiChatResponse);
176
- }
177
- catch (error) {
178
- return [
179
- false,
180
- `${colors_1.default.red.bold('ERROR:')} parsing cloving.json: ${colors_1.default.red.bold(error.message)}`,
181
- ];
182
- }
183
- const clovingJson = JSON.parse(cleanAiChatResponse);
184
- const directoriesToCheck = [
185
- ...clovingJson.languages.map((language) => ({
186
- type: 'Language',
187
- name: language.name,
188
- directory: language.directory,
189
- })),
190
- ...clovingJson.frameworks.map((framework) => ({
191
- type: 'Framework',
192
- name: framework.name,
193
- directory: framework.directory,
194
- })),
195
- ...clovingJson.testingFrameworks.map((testingFramework) => ({
196
- type: 'Testing Framework',
197
- name: testingFramework.name,
198
- directory: testingFramework.directory,
199
- })),
200
- ];
201
- const missingDirectories = directoriesToCheck.filter((item) => !fs_1.default.existsSync(item.directory));
202
- if (missingDirectories.length > 0) {
203
- const missingDirMessages = missingDirectories.map((item) => `${item.type} ${colors_1.default.bold(item.name)}: ${colors_1.default.red.bold(item.directory)}`);
204
- return [
205
- false,
206
- `${colors_1.default.red.bold('ERROR:')} The following directories were not found:\n${missingDirMessages.join('\n')}`,
207
- ];
208
- }
209
- return [true, ''];
210
- }
211
- /**
212
- * Prompts the user to review the generated data if the `silent` option is not set.
213
- * If the user confirms, reads the content of 'cloving.json' and logs it to the console.
214
- *
215
- * @return {Promise<void>} A promise that resolves when the review is complete.
216
- */
217
- async promptUserForReview() {
218
- if (!this.options.silent) {
219
- const reviewAnswer = await (0, prompts_1.confirm)({
220
- message: 'Do you want to review the generated data?',
221
- default: true,
222
- });
223
- if (reviewAnswer) {
224
- const clovingJsonContent = await fs_2.promises.readFile('cloving.json', 'utf-8');
225
- console.log(clovingJsonContent);
226
- }
227
- }
228
- }
229
- }
230
- exports.default = InitManager;
@@ -1,210 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const express_1 = __importDefault(require("express"));
7
- const body_parser_1 = __importDefault(require("body-parser"));
8
- const fs_1 = __importDefault(require("fs"));
9
- const path_1 = __importDefault(require("path"));
10
- const cloving_gpt_1 = __importDefault(require("../cloving_gpt"));
11
- const ChunkManager_1 = __importDefault(require("./ChunkManager"));
12
- const config_utils_1 = require("../utils/config_utils");
13
- const prompt_utils_1 = require("../utils/prompt_utils");
14
- class ProxyManager {
15
- /**
16
- * Creates an instance of ProxyManager.
17
- * @param {ClovingGPTOptions} options - Configuration options for the ProxyManager.
18
- * @description
19
- * Initializes the ProxyManager with the given options. It sets up:
20
- * - A ClovingGPT instance with silent and stream options enabled
21
- * - An Express application with JSON body parsing
22
- * - A ChunkManager for handling streaming responses
23
- */
24
- constructor(options) {
25
- this.options = options;
26
- this.contextFiles = {};
27
- this.options.silent = true;
28
- this.options.stream = true;
29
- this.gpt = new cloving_gpt_1.default(this.options);
30
- this.app = (0, express_1.default)();
31
- this.app.use(body_parser_1.default.json());
32
- this.chunkManager = new ChunkManager_1.default();
33
- }
34
- async initialize() {
35
- await this.setupRoutes();
36
- await this.loadContextFiles();
37
- this.startServer();
38
- }
39
- async setupRoutes() {
40
- this.app.get('/', (_req, res) => {
41
- res.json({ message: 'ClovingGPT proxy server running' });
42
- });
43
- this.app.post('/v1/chat/completions', async (req, res, next) => {
44
- try {
45
- await this.handleChatCompletions(req, res);
46
- }
47
- catch (error) {
48
- next(error);
49
- }
50
- });
51
- }
52
- async loadContextFiles() {
53
- let files = this.options.files || '.';
54
- let expandedFiles = [];
55
- for (const file of files) {
56
- const filePath = path_1.default.resolve(file);
57
- if (await fs_1.default.promises
58
- .stat(filePath)
59
- .then((stat) => stat.isDirectory())
60
- .catch(() => false)) {
61
- const dirFiles = await (0, prompt_utils_1.getAllFilesInDirectory)(filePath);
62
- expandedFiles = expandedFiles.concat(dirFiles.map((f) => path_1.default.relative(process.cwd(), f)));
63
- }
64
- else {
65
- expandedFiles.push(path_1.default.relative(process.cwd(), filePath));
66
- }
67
- }
68
- files = expandedFiles;
69
- for (const file of files) {
70
- const filePath = path_1.default.resolve(file);
71
- if (await fs_1.default.promises
72
- .stat(filePath)
73
- .then((stat) => stat.isFile())
74
- .catch(() => false)) {
75
- const content = await fs_1.default.promises.readFile(filePath, 'utf-8');
76
- this.contextFiles[file] = content;
77
- }
78
- }
79
- }
80
- async handleChatCompletions(req, res) {
81
- try {
82
- const { messages, stream } = req.body;
83
- if (!Array.isArray(messages)) {
84
- return res.status(400).json({ error: 'Invalid request body: messages must be an array' });
85
- }
86
- const content = messages
87
- .map((message) => {
88
- if (typeof message !== 'object' || typeof message.content !== 'string') {
89
- throw new Error('Invalid message format');
90
- }
91
- return message.content;
92
- })
93
- .join('\n\n');
94
- const contextFileContents = Object.keys(this.contextFiles)
95
- .map((file) => `### Contents of ${file}\n\n${this.contextFiles[file]}\n\n`)
96
- .join('\n');
97
- const prompt = `# Task
98
-
99
- ${content}
100
-
101
- ### Description of App
102
-
103
- ${JSON.stringify((0, config_utils_1.getNearestClovingConfig)().config, null, 2)}
104
-
105
- ${contextFileContents}
106
-
107
- # Task
108
-
109
- ${content}`;
110
- if (stream) {
111
- await this.handleStreamResponse(prompt, res);
112
- }
113
- else {
114
- await this.handleNonStreamResponse(prompt, res);
115
- }
116
- }
117
- catch (error) {
118
- console.error('Error processing request:', error);
119
- if (error instanceof Error && error.message === 'Invalid message format') {
120
- res.status(400).json({
121
- error: 'Invalid request body: each message must have a content property of type string',
122
- });
123
- }
124
- else {
125
- res.status(500).json({ error: 'Internal server error' });
126
- }
127
- }
128
- }
129
- async handleStreamResponse(prompt, res) {
130
- const shortPrompt = prompt.replace('### Task', '').trim().slice(0, 50).replace(/\n/g, ' ');
131
- const promptTokens = Math.ceil(prompt.length / 4).toLocaleString();
132
- console.log(`> sending ${promptTokens} token prompt:`, shortPrompt);
133
- const responseStream = await this.gpt.streamText({ prompt });
134
- res.setHeader('Content-Type', 'application/json');
135
- res.setHeader('Transfer-Encoding', 'chunked');
136
- let convertedStreams = [];
137
- // Add initial stream to indicate the start of the response
138
- convertedStreams.push('{"id":"chatcmpl-9tLvSuRQaYzQIiKRAwI5a7WqdJspq","object":"chat.completion.chunk","created":1722979349,"model":"cloving","system_fingerprint":"fp_3aa7262c27","choices":[{"index":0,"delta":{"role":"assistant","content":"","refusal":null},"logprobs":null,"finish_reason":null}]}');
139
- this.chunkManager.on('content', (buffer) => {
140
- let convertedStream = this.gpt.convertStream(buffer);
141
- while (convertedStream !== null) {
142
- const { output, lastChar } = convertedStream;
143
- const content = JSON.stringify({
144
- id: 'chatcmpl-9tLvSuRQaYzQIiKRAwI5a7WqdJspq',
145
- object: 'chat.completion.chunk',
146
- created: 1722979350,
147
- model: 'cloving',
148
- system_fingerprint: 'fp_3aa7262c27',
149
- choices: [{ index: 0, delta: { content: output }, logprobs: null, finish_reason: null }],
150
- });
151
- convertedStreams.push(content);
152
- if (convertedStreams.length >= 2) {
153
- const dataToSend = convertedStreams.map((c) => `data: ${c}`).join('\n\n');
154
- res.write(`${dataToSend}\n\n`);
155
- convertedStreams = [];
156
- }
157
- buffer = buffer.slice(lastChar);
158
- convertedStream = this.gpt.convertStream(buffer);
159
- }
160
- });
161
- responseStream.data.on('data', (chunk) => {
162
- const chunkString = chunk.toString();
163
- this.chunkManager.addChunk(chunkString);
164
- });
165
- responseStream.data.on('end', () => {
166
- // Send any remaining converted streams
167
- const dataToSend = convertedStreams.map((c) => `data: ${c}`).join('\n\n');
168
- res.write(`${dataToSend}\n\ndata: [DONE]\n\n`);
169
- res.end();
170
- });
171
- responseStream.data.on('error', (error) => {
172
- console.error('Error streaming response:', error);
173
- res.status(500).json({ error: 'Internal server error' });
174
- });
175
- }
176
- async handleNonStreamResponse(prompt, res) {
177
- const content = await this.gpt.generateText({ prompt });
178
- const response = {
179
- id: 'chatcmpl-' + Date.now(),
180
- object: 'chat.completion',
181
- created: Math.floor(Date.now() / 1000),
182
- model: 'cloving',
183
- choices: [
184
- {
185
- index: 0,
186
- message: {
187
- role: 'assistant',
188
- content,
189
- },
190
- logprobs: null,
191
- finish_reason: 'stop',
192
- },
193
- ],
194
- usage: {
195
- prompt_tokens: Math.ceil(prompt.length / 4),
196
- completion_tokens: Math.ceil(content.length / 4),
197
- total_tokens: Math.ceil(prompt.length / 4) + Math.ceil(content.length / 4),
198
- },
199
- system_fingerprint: 'fp_3cd8b62c3b',
200
- };
201
- res.json(response);
202
- }
203
- startServer() {
204
- const port = parseInt(`${process.env.PORT || this.options.port || 3000}`, 10);
205
- this.app.listen(port, () => {
206
- console.log(`ClovingGPT proxy server running on port ${port}`);
207
- });
208
- }
209
- }
210
- exports.default = ProxyManager;
@@ -1,131 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const copy_paste_1 = __importDefault(require("copy-paste"));
7
- const colors_1 = __importDefault(require("colors"));
8
- const prompts_1 = require("@inquirer/prompts");
9
- const cloving_gpt_1 = __importDefault(require("../cloving_gpt"));
10
- const git_utils_1 = require("../utils/git_utils");
11
- const prompt_utils_1 = require("../utils/prompt_utils");
12
- const config_utils_1 = require("../utils/config_utils");
13
- const StreamManager_1 = __importDefault(require("./StreamManager"));
14
- class ReviewManager extends StreamManager_1.default {
15
- constructor(options) {
16
- super(options);
17
- options.silent = (0, config_utils_1.getConfig)(options).globalSilent || false;
18
- options.stream = true;
19
- this.gpt = new cloving_gpt_1.default(options);
20
- }
21
- async getGitDiffPrompt() {
22
- const gitDiff = await (0, git_utils_1.getGitDiff)();
23
- return `${(0, prompt_utils_1.generateReviewPrompt)(this.options, this.contextFiles)}
24
-
25
- ## Diff Content
26
- ${gitDiff}
27
-
28
- # Task
29
-
30
- ${this.options.prompt || 'Please provide a code review.'}`;
31
- }
32
- async handleUserAction(analysis) {
33
- const extractSection = (section) => {
34
- const regex = new RegExp(`## ${section}[\\s\\S]*?(?=\\n## Potential Bugs and Recommended Fixes|$)`, 'g');
35
- const match = analysis.match(regex);
36
- return match ? match[0].trim() : '';
37
- };
38
- const clipboardOption = await (0, prompts_1.select)({
39
- message: 'What would you like to copy to the clipboard?',
40
- choices: [
41
- { name: 'Copy only the Changes Overview', value: 'Changes Overview' },
42
- {
43
- name: 'Copy only the Potential Bugs and Recommended Fixes',
44
- value: 'Potential Bugs and Recommended Fixes',
45
- },
46
- { name: 'Copy everything', value: 'Everything' },
47
- { name: 'Done', value: 'Done' },
48
- ],
49
- });
50
- let contentToCopy = '';
51
- switch (clipboardOption) {
52
- case 'Changes Overview':
53
- contentToCopy = extractSection('Changes Overview');
54
- break;
55
- case 'Potential Bugs and Recommended Fixes':
56
- contentToCopy = extractSection('Potential Bugs and Recommended Fixes');
57
- break;
58
- case 'Everything':
59
- contentToCopy = analysis;
60
- break;
61
- case 'Done':
62
- console.log('No content copied to clipboard.');
63
- return;
64
- }
65
- if (contentToCopy) {
66
- copy_paste_1.default.copy(contentToCopy, (err) => {
67
- if (err) {
68
- console.error(colors_1.default.red('Error: Unable to copy to clipboard.'), err);
69
- }
70
- else {
71
- console.log(colors_1.default.green('Selected content copied to clipboard'));
72
- }
73
- });
74
- }
75
- }
76
- async generateReview(extraPrompt) {
77
- try {
78
- await this.checkForLatestVersion();
79
- await this.loadContextFiles();
80
- if (this.options.files) {
81
- if (this.chatHistory.length === 0) {
82
- this.addUserPrompt(`${(0, prompt_utils_1.generateReviewPrompt)(this.options, this.contextFiles)}`);
83
- this.addAssistantResponse('What would you like to do?');
84
- }
85
- this.addUserPrompt(`${this.options.prompt || 'Please provide a code review.'}\n\n${extraPrompt || ''}`);
86
- }
87
- else {
88
- if (this.chatHistory.length === 0) {
89
- this.addUserPrompt(await this.getGitDiffPrompt());
90
- this.addAssistantResponse('What would you like to do?');
91
- }
92
- this.addUserPrompt(`${this.options.prompt || 'Please provide a code review.'}\n\n${extraPrompt || ''}`);
93
- }
94
- const responseStream = await this.gpt.streamText({
95
- prompt: this.prompt,
96
- messages: this.chatHistory,
97
- });
98
- this.handleResponseStream(responseStream);
99
- }
100
- catch (error) {
101
- this.handleError(error);
102
- }
103
- }
104
- handleError(error) {
105
- let errorMessage = error.message || 'An error occurred.';
106
- const errorNumber = error.response?.status || 'unknown';
107
- switch (errorNumber) {
108
- case 400:
109
- errorMessage = 'Invalid model or prompt size too large. Try specifying fewer files.';
110
- break;
111
- case 403:
112
- errorMessage = 'Inactive subscription or usage limit reached';
113
- break;
114
- case 429:
115
- errorMessage = 'Rate limit error';
116
- break;
117
- case 500:
118
- errorMessage = 'Internal server error';
119
- break;
120
- }
121
- const statusMessage = error.response?.data?.statusMessage;
122
- console.error(colors_1.default.red(`\nError (${errorNumber}) while submitting the prompt to the AI API\n\n${statusMessage}\n`));
123
- this.isProcessing = false;
124
- }
125
- async finalizeResponse() {
126
- this.addAssistantResponse(this.responseString);
127
- this.isProcessing = false;
128
- await this.handleUserAction(this.responseString);
129
- }
130
- }
131
- exports.default = ReviewManager;