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,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;
@@ -1,163 +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 cli_highlight_1 = __importDefault(require("cli-highlight"));
7
- const copy_paste_1 = __importDefault(require("copy-paste"));
8
- const child_process_1 = require("child_process");
9
- const prompts_1 = require("@inquirer/prompts");
10
- const cloving_gpt_1 = __importDefault(require("../cloving_gpt"));
11
- const prompt_utils_1 = require("../utils/prompt_utils");
12
- const string_utils_1 = require("../utils/string_utils");
13
- const config_utils_1 = require("../utils/config_utils");
14
- /**
15
- * ShellManager class for handling shell script generation and execution.
16
- */
17
- class ShellManager {
18
- /**
19
- * Creates an instance of ShellManager.
20
- * @param {ClovingGPTOptions} options - The options for ClovingGPT.
21
- */
22
- constructor(options) {
23
- this.options = options;
24
- this.chatHistory = [];
25
- options.silent = (0, config_utils_1.getConfig)(options).globalSilent || false;
26
- this.gpt = new cloving_gpt_1.default(options);
27
- }
28
- /**
29
- * Generates a prompt to explain a shell script.
30
- * @param {string} prompt - The original shell script prompt.
31
- * @returns {string} The prompt for explaining the shell script.
32
- * @private
33
- */
34
- generateExplainShellPrompt(prompt) {
35
- return `${prompt}
36
-
37
- # Task
38
-
39
- Please briefly explain how this shell script works.`;
40
- }
41
- /**
42
- * Generates a shell script based on the given prompt.
43
- * @param {string} prompt - The user's prompt for generating a shell script.
44
- * @returns {Promise<string>} A promise that resolves to the generated shell script.
45
- * @private
46
- */
47
- async generateShell(prompt) {
48
- if (this.chatHistory.length === 0) {
49
- const systemPrompt = (0, prompt_utils_1.generateShellPrompt)();
50
- this.chatHistory.push({ role: 'user', content: systemPrompt });
51
- this.chatHistory.push({ role: 'assistant', content: 'What would you like to do?' });
52
- }
53
- this.chatHistory.push({ role: 'user', content: prompt });
54
- return await this.gpt.generateText({ prompt, messages: this.chatHistory });
55
- }
56
- /**
57
- * Displays the generated shell script with syntax highlighting.
58
- * @param {string} rawShellCommand - The raw shell command to display.
59
- * @private
60
- */
61
- displayGeneratedShell(rawShellCommand) {
62
- const generatedShell = (0, string_utils_1.extractMarkdown)(rawShellCommand);
63
- const generatedShellWithoutShebang = generatedShell.replace(/^#!.*?\s/, '');
64
- console.log((0, cli_highlight_1.default)(generatedShellWithoutShebang));
65
- }
66
- /**
67
- * Handles user actions after generating a shell script.
68
- * @param {string} response - The generated shell script.
69
- * @param {string} prompt - The original user prompt.
70
- * @returns {Promise<void>}
71
- * @private
72
- */
73
- async handleUserAction(response, prompt) {
74
- let { exec } = this.options;
75
- this.chatHistory.push({ role: 'assistant', content: response });
76
- const generatedShell = (0, string_utils_1.extractMarkdown)(response);
77
- const generatedShellWithoutShebang = generatedShell.replace(/^#!.*?\s/, '');
78
- if (exec) {
79
- (0, child_process_1.execSync)(generatedShellWithoutShebang, { stdio: 'inherit' });
80
- return;
81
- }
82
- const action = await (0, prompts_1.select)({
83
- message: 'What would you like to do?',
84
- choices: [
85
- { name: 'Execute', value: 'execute' },
86
- { name: 'Revise', value: 'revise' },
87
- { name: 'Explain', value: 'explain' },
88
- { name: 'Copy to Clipboard', value: 'copy' },
89
- { name: 'Cancel', value: 'cancel' },
90
- ],
91
- });
92
- switch (action) {
93
- case 'execute':
94
- (0, child_process_1.execSync)(generatedShellWithoutShebang, { stdio: 'inherit' });
95
- break;
96
- case 'revise':
97
- const newPrompt = await (0, prompts_1.input)({
98
- message: 'How would you like to modify the output:',
99
- });
100
- const newRawShellCommand = await this.generateShell(newPrompt);
101
- this.displayGeneratedShell(newRawShellCommand);
102
- await this.handleUserAction(newRawShellCommand, newPrompt);
103
- break;
104
- case 'explain':
105
- const explainPrompt = this.generateExplainShellPrompt(generatedShellWithoutShebang);
106
- this.chatHistory.push({ role: 'user', content: explainPrompt });
107
- const explainShellCommand = await this.gpt.generateText({
108
- prompt: explainPrompt,
109
- messages: this.chatHistory,
110
- });
111
- console.log((0, cli_highlight_1.default)(explainShellCommand, { language: 'markdown' }));
112
- break;
113
- case 'copy':
114
- copy_paste_1.default.copy(generatedShellWithoutShebang, (err) => {
115
- if (err) {
116
- console.error('Error: Unable to copy to clipboard.', err);
117
- }
118
- else {
119
- console.log('Script copied to clipboard.');
120
- }
121
- });
122
- break;
123
- case 'cancel':
124
- console.log('Operation cancelled.');
125
- break;
126
- }
127
- }
128
- /**
129
- * Generates a shell script based on user input and handles subsequent user actions.
130
- *
131
- * This method is the main entry point for generating and interacting with shell scripts.
132
- * It performs the following steps:
133
- * 1. Obtains a user prompt (either from options or by asking the user).
134
- * 2. Generates a shell script based on the prompt.
135
- * 3. Displays the generated script with syntax highlighting.
136
- * 4. Handles user actions (execute, revise, explain, copy, or cancel) for the generated script.
137
- *
138
- * @returns {Promise<void>} A promise that resolves when the generation and handling process is complete.
139
- * @throws {Error} If there's an issue during the shell script generation process.
140
- * @public
141
- *
142
- * @example
143
- * const shellManager = new ShellManager(options);
144
- * await shellManager.generateAndHandleShell();
145
- */
146
- async generateAndHandleShell() {
147
- let { prompt: userPrompt } = this.options;
148
- try {
149
- if (!userPrompt) {
150
- userPrompt = await (0, prompts_1.input)({
151
- message: 'What would you like to do: ',
152
- });
153
- }
154
- const rawShellCommand = await this.generateShell(userPrompt);
155
- this.displayGeneratedShell(rawShellCommand);
156
- await this.handleUserAction(rawShellCommand, userPrompt);
157
- }
158
- catch (error) {
159
- console.error('Could not generate shell script', error);
160
- }
161
- }
162
- }
163
- exports.default = ShellManager;