@camaradesuk/git-worktree-tools 1.2.1 → 1.4.0

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 (346) hide show
  1. package/README.md +323 -16
  2. package/dist/api/clean.d.ts +65 -0
  3. package/dist/api/clean.d.ts.map +1 -0
  4. package/dist/api/clean.js +209 -0
  5. package/dist/api/clean.js.map +1 -0
  6. package/dist/api/create.d.ts +88 -0
  7. package/dist/api/create.d.ts.map +1 -0
  8. package/dist/api/create.js +370 -0
  9. package/dist/api/create.js.map +1 -0
  10. package/dist/api/index.d.ts +15 -0
  11. package/dist/api/index.d.ts.map +1 -0
  12. package/dist/api/index.js +19 -0
  13. package/dist/api/index.js.map +1 -0
  14. package/dist/api/list.d.ts +74 -0
  15. package/dist/api/list.d.ts.map +1 -0
  16. package/dist/api/list.js +80 -0
  17. package/dist/api/list.js.map +1 -0
  18. package/dist/api/state.d.ts +43 -0
  19. package/dist/api/state.d.ts.map +1 -0
  20. package/dist/api/state.js +70 -0
  21. package/dist/api/state.js.map +1 -0
  22. package/dist/cli/cleanpr.js +171 -28
  23. package/dist/cli/cleanpr.js.map +1 -1
  24. package/dist/cli/cleanpr.test.js +460 -7
  25. package/dist/cli/cleanpr.test.js.map +1 -1
  26. package/dist/cli/lswt.js +8 -1
  27. package/dist/cli/lswt.js.map +1 -1
  28. package/dist/cli/lswt.test.js +2 -0
  29. package/dist/cli/lswt.test.js.map +1 -1
  30. package/dist/cli/newpr.js +189 -28
  31. package/dist/cli/newpr.js.map +1 -1
  32. package/dist/cli/newpr.test.js +350 -0
  33. package/dist/cli/newpr.test.js.map +1 -1
  34. package/dist/cli/wtconfig.d.ts +14 -0
  35. package/dist/cli/wtconfig.d.ts.map +1 -0
  36. package/dist/cli/wtconfig.js +948 -0
  37. package/dist/cli/wtconfig.js.map +1 -0
  38. package/dist/cli/wtconfig.test.d.ts +5 -0
  39. package/dist/cli/wtconfig.test.d.ts.map +1 -0
  40. package/dist/cli/wtconfig.test.js +1281 -0
  41. package/dist/cli/wtconfig.test.js.map +1 -0
  42. package/dist/cli/wtlink.js +5 -0
  43. package/dist/cli/wtlink.js.map +1 -1
  44. package/dist/cli/wtstate.d.ts +8 -0
  45. package/dist/cli/wtstate.d.ts.map +1 -0
  46. package/dist/cli/wtstate.js +83 -0
  47. package/dist/cli/wtstate.js.map +1 -0
  48. package/dist/cli/wtstate.test.d.ts +5 -0
  49. package/dist/cli/wtstate.test.d.ts.map +1 -0
  50. package/dist/cli/wtstate.test.js +193 -0
  51. package/dist/cli/wtstate.test.js.map +1 -0
  52. package/dist/e2e/cleanpr/cleanpr.e2e.test.d.ts +2 -0
  53. package/dist/e2e/cleanpr/cleanpr.e2e.test.d.ts.map +1 -0
  54. package/dist/e2e/cleanpr/cleanpr.e2e.test.js +326 -0
  55. package/dist/e2e/cleanpr/cleanpr.e2e.test.js.map +1 -0
  56. package/dist/e2e/helpers/cli-runner.d.ts +103 -0
  57. package/dist/e2e/helpers/cli-runner.d.ts.map +1 -0
  58. package/dist/e2e/helpers/cli-runner.js +200 -0
  59. package/dist/e2e/helpers/cli-runner.js.map +1 -0
  60. package/dist/e2e/helpers/gh-mock.d.ts +87 -0
  61. package/dist/e2e/helpers/gh-mock.d.ts.map +1 -0
  62. package/dist/e2e/helpers/gh-mock.js +384 -0
  63. package/dist/e2e/helpers/gh-mock.js.map +1 -0
  64. package/dist/e2e/helpers/index.d.ts +12 -0
  65. package/dist/e2e/helpers/index.d.ts.map +1 -0
  66. package/dist/e2e/helpers/index.js +16 -0
  67. package/dist/e2e/helpers/index.js.map +1 -0
  68. package/dist/e2e/helpers/pty-wrapper.d.ts +118 -0
  69. package/dist/e2e/helpers/pty-wrapper.d.ts.map +1 -0
  70. package/dist/e2e/helpers/pty-wrapper.js +276 -0
  71. package/dist/e2e/helpers/pty-wrapper.js.map +1 -0
  72. package/dist/e2e/helpers/scenario-harness.d.ts +55 -0
  73. package/dist/e2e/helpers/scenario-harness.d.ts.map +1 -0
  74. package/dist/e2e/helpers/scenario-harness.js +360 -0
  75. package/dist/e2e/helpers/scenario-harness.js.map +1 -0
  76. package/dist/e2e/helpers/test-context.d.ts +120 -0
  77. package/dist/e2e/helpers/test-context.d.ts.map +1 -0
  78. package/dist/e2e/helpers/test-context.js +263 -0
  79. package/dist/e2e/helpers/test-context.js.map +1 -0
  80. package/dist/e2e/lswt/lswt.e2e.test.d.ts +2 -0
  81. package/dist/e2e/lswt/lswt.e2e.test.d.ts.map +1 -0
  82. package/dist/e2e/lswt/lswt.e2e.test.js +328 -0
  83. package/dist/e2e/lswt/lswt.e2e.test.js.map +1 -0
  84. package/dist/e2e/newpr/newpr.e2e.test.d.ts +2 -0
  85. package/dist/e2e/newpr/newpr.e2e.test.d.ts.map +1 -0
  86. package/dist/e2e/newpr/newpr.e2e.test.js +286 -0
  87. package/dist/e2e/newpr/newpr.e2e.test.js.map +1 -0
  88. package/dist/e2e/newpr/scenarios.e2e.test.d.ts +2 -0
  89. package/dist/e2e/newpr/scenarios.e2e.test.d.ts.map +1 -0
  90. package/dist/e2e/newpr/scenarios.e2e.test.js +426 -0
  91. package/dist/e2e/newpr/scenarios.e2e.test.js.map +1 -0
  92. package/dist/e2e/workflows/pr-lifecycle.e2e.test.d.ts +2 -0
  93. package/dist/e2e/workflows/pr-lifecycle.e2e.test.d.ts.map +1 -0
  94. package/dist/e2e/workflows/pr-lifecycle.e2e.test.js +298 -0
  95. package/dist/e2e/workflows/pr-lifecycle.e2e.test.js.map +1 -0
  96. package/dist/e2e/wtlink/wtlink.e2e.test.d.ts +2 -0
  97. package/dist/e2e/wtlink/wtlink.e2e.test.d.ts.map +1 -0
  98. package/dist/e2e/wtlink/wtlink.e2e.test.js +364 -0
  99. package/dist/e2e/wtlink/wtlink.e2e.test.js.map +1 -0
  100. package/dist/index.d.ts +15 -1
  101. package/dist/index.d.ts.map +1 -1
  102. package/dist/index.js +14 -0
  103. package/dist/index.js.map +1 -1
  104. package/dist/lib/ai/base-provider.d.ts +58 -0
  105. package/dist/lib/ai/base-provider.d.ts.map +1 -0
  106. package/dist/lib/ai/base-provider.js +246 -0
  107. package/dist/lib/ai/base-provider.js.map +1 -0
  108. package/dist/lib/ai/base-provider.test.d.ts +7 -0
  109. package/dist/lib/ai/base-provider.test.d.ts.map +1 -0
  110. package/dist/lib/ai/base-provider.test.js +320 -0
  111. package/dist/lib/ai/base-provider.test.js.map +1 -0
  112. package/dist/lib/ai/cli-provider.d.ts +87 -0
  113. package/dist/lib/ai/cli-provider.d.ts.map +1 -0
  114. package/dist/lib/ai/cli-provider.js +280 -0
  115. package/dist/lib/ai/cli-provider.js.map +1 -0
  116. package/dist/lib/ai/cli-provider.test.d.ts +5 -0
  117. package/dist/lib/ai/cli-provider.test.d.ts.map +1 -0
  118. package/dist/lib/ai/cli-provider.test.js +462 -0
  119. package/dist/lib/ai/cli-provider.test.js.map +1 -0
  120. package/dist/lib/ai/fallback-provider.d.ts +20 -0
  121. package/dist/lib/ai/fallback-provider.d.ts.map +1 -0
  122. package/dist/lib/ai/fallback-provider.js +125 -0
  123. package/dist/lib/ai/fallback-provider.js.map +1 -0
  124. package/dist/lib/ai/fallback-provider.test.d.ts +7 -0
  125. package/dist/lib/ai/fallback-provider.test.d.ts.map +1 -0
  126. package/dist/lib/ai/fallback-provider.test.js +165 -0
  127. package/dist/lib/ai/fallback-provider.test.js.map +1 -0
  128. package/dist/lib/ai/generation-service.d.ts +44 -0
  129. package/dist/lib/ai/generation-service.d.ts.map +1 -0
  130. package/dist/lib/ai/generation-service.js +107 -0
  131. package/dist/lib/ai/generation-service.js.map +1 -0
  132. package/dist/lib/ai/generation-service.test.d.ts +7 -0
  133. package/dist/lib/ai/generation-service.test.d.ts.map +1 -0
  134. package/dist/lib/ai/generation-service.test.js +213 -0
  135. package/dist/lib/ai/generation-service.test.js.map +1 -0
  136. package/dist/lib/ai/index.d.ts +19 -0
  137. package/dist/lib/ai/index.d.ts.map +1 -0
  138. package/dist/lib/ai/index.js +22 -0
  139. package/dist/lib/ai/index.js.map +1 -0
  140. package/dist/lib/ai/provider-manager.d.ts +109 -0
  141. package/dist/lib/ai/provider-manager.d.ts.map +1 -0
  142. package/dist/lib/ai/provider-manager.js +270 -0
  143. package/dist/lib/ai/provider-manager.js.map +1 -0
  144. package/dist/lib/ai/provider-manager.test.d.ts +5 -0
  145. package/dist/lib/ai/provider-manager.test.d.ts.map +1 -0
  146. package/dist/lib/ai/provider-manager.test.js +312 -0
  147. package/dist/lib/ai/provider-manager.test.js.map +1 -0
  148. package/dist/lib/ai/types.d.ts +166 -0
  149. package/dist/lib/ai/types.d.ts.map +1 -0
  150. package/dist/lib/ai/types.js +19 -0
  151. package/dist/lib/ai/types.js.map +1 -0
  152. package/dist/lib/cleanpr/args.d.ts.map +1 -1
  153. package/dist/lib/cleanpr/args.js +18 -0
  154. package/dist/lib/cleanpr/args.js.map +1 -1
  155. package/dist/lib/cleanpr/args.test.js +88 -11
  156. package/dist/lib/cleanpr/args.test.js.map +1 -1
  157. package/dist/lib/cleanpr/cleanup.d.ts +2 -0
  158. package/dist/lib/cleanpr/cleanup.d.ts.map +1 -1
  159. package/dist/lib/cleanpr/cleanup.js +30 -2
  160. package/dist/lib/cleanpr/cleanup.js.map +1 -1
  161. package/dist/lib/cleanpr/cleanup.test.js +37 -5
  162. package/dist/lib/cleanpr/cleanup.test.js.map +1 -1
  163. package/dist/lib/cleanpr/types.d.ts +10 -0
  164. package/dist/lib/cleanpr/types.d.ts.map +1 -1
  165. package/dist/lib/cleanpr/worktree-info.test.js +72 -1
  166. package/dist/lib/cleanpr/worktree-info.test.js.map +1 -1
  167. package/dist/lib/config.d.ts +176 -1
  168. package/dist/lib/config.d.ts.map +1 -1
  169. package/dist/lib/config.js +130 -2
  170. package/dist/lib/config.js.map +1 -1
  171. package/dist/lib/config.test.js +406 -2
  172. package/dist/lib/config.test.js.map +1 -1
  173. package/dist/lib/git.test.js +58 -0
  174. package/dist/lib/git.test.js.map +1 -1
  175. package/dist/lib/github.test.js +20 -0
  176. package/dist/lib/github.test.js.map +1 -1
  177. package/dist/lib/hooks/executor.d.ts +35 -0
  178. package/dist/lib/hooks/executor.d.ts.map +1 -0
  179. package/dist/lib/hooks/executor.js +401 -0
  180. package/dist/lib/hooks/executor.js.map +1 -0
  181. package/dist/lib/hooks/executor.test.d.ts +5 -0
  182. package/dist/lib/hooks/executor.test.d.ts.map +1 -0
  183. package/dist/lib/hooks/executor.test.js +648 -0
  184. package/dist/lib/hooks/executor.test.js.map +1 -0
  185. package/dist/lib/hooks/index.d.ts +25 -0
  186. package/dist/lib/hooks/index.d.ts.map +1 -0
  187. package/dist/lib/hooks/index.js +26 -0
  188. package/dist/lib/hooks/index.js.map +1 -0
  189. package/dist/lib/hooks/templates.d.ts +74 -0
  190. package/dist/lib/hooks/templates.d.ts.map +1 -0
  191. package/dist/lib/hooks/templates.js +270 -0
  192. package/dist/lib/hooks/templates.js.map +1 -0
  193. package/dist/lib/hooks/templates.test.d.ts +5 -0
  194. package/dist/lib/hooks/templates.test.d.ts.map +1 -0
  195. package/dist/lib/hooks/templates.test.js +163 -0
  196. package/dist/lib/hooks/templates.test.js.map +1 -0
  197. package/dist/lib/hooks/types.d.ts +161 -0
  198. package/dist/lib/hooks/types.d.ts.map +1 -0
  199. package/dist/lib/hooks/types.js +73 -0
  200. package/dist/lib/hooks/types.js.map +1 -0
  201. package/dist/lib/hooks/types.test.d.ts +5 -0
  202. package/dist/lib/hooks/types.test.d.ts.map +1 -0
  203. package/dist/lib/hooks/types.test.js +132 -0
  204. package/dist/lib/hooks/types.test.js.map +1 -0
  205. package/dist/lib/json-output.d.ts +172 -0
  206. package/dist/lib/json-output.d.ts.map +1 -0
  207. package/dist/lib/json-output.js +134 -0
  208. package/dist/lib/json-output.js.map +1 -0
  209. package/dist/lib/json-output.test.d.ts +5 -0
  210. package/dist/lib/json-output.test.d.ts.map +1 -0
  211. package/dist/lib/json-output.test.js +259 -0
  212. package/dist/lib/json-output.test.js.map +1 -0
  213. package/dist/lib/lswt/action-executors.d.ts +32 -0
  214. package/dist/lib/lswt/action-executors.d.ts.map +1 -0
  215. package/dist/lib/lswt/action-executors.js +489 -0
  216. package/dist/lib/lswt/action-executors.js.map +1 -0
  217. package/dist/lib/lswt/action-executors.test.d.ts +2 -0
  218. package/dist/lib/lswt/action-executors.test.d.ts.map +1 -0
  219. package/dist/lib/lswt/action-executors.test.js +755 -0
  220. package/dist/lib/lswt/action-executors.test.js.map +1 -0
  221. package/dist/lib/lswt/actions.d.ts +25 -0
  222. package/dist/lib/lswt/actions.d.ts.map +1 -0
  223. package/dist/lib/lswt/actions.js +187 -0
  224. package/dist/lib/lswt/actions.js.map +1 -0
  225. package/dist/lib/lswt/actions.test.d.ts +2 -0
  226. package/dist/lib/lswt/actions.test.d.ts.map +1 -0
  227. package/dist/lib/lswt/actions.test.js +359 -0
  228. package/dist/lib/lswt/actions.test.js.map +1 -0
  229. package/dist/lib/lswt/args.d.ts.map +1 -1
  230. package/dist/lib/lswt/args.js +44 -8
  231. package/dist/lib/lswt/args.js.map +1 -1
  232. package/dist/lib/lswt/args.test.js +70 -10
  233. package/dist/lib/lswt/args.test.js.map +1 -1
  234. package/dist/lib/lswt/environment.d.ts +43 -0
  235. package/dist/lib/lswt/environment.d.ts.map +1 -0
  236. package/dist/lib/lswt/environment.js +143 -0
  237. package/dist/lib/lswt/environment.js.map +1 -0
  238. package/dist/lib/lswt/environment.test.d.ts +2 -0
  239. package/dist/lib/lswt/environment.test.d.ts.map +1 -0
  240. package/dist/lib/lswt/environment.test.js +339 -0
  241. package/dist/lib/lswt/environment.test.js.map +1 -0
  242. package/dist/lib/lswt/formatters.d.ts.map +1 -1
  243. package/dist/lib/lswt/formatters.js +1 -0
  244. package/dist/lib/lswt/formatters.js.map +1 -1
  245. package/dist/lib/lswt/formatters.test.js +26 -0
  246. package/dist/lib/lswt/formatters.test.js.map +1 -1
  247. package/dist/lib/lswt/index.d.ts +7 -2
  248. package/dist/lib/lswt/index.d.ts.map +1 -1
  249. package/dist/lib/lswt/index.js +7 -0
  250. package/dist/lib/lswt/index.js.map +1 -1
  251. package/dist/lib/lswt/interactive.d.ts +24 -0
  252. package/dist/lib/lswt/interactive.d.ts.map +1 -0
  253. package/dist/lib/lswt/interactive.js +245 -0
  254. package/dist/lib/lswt/interactive.js.map +1 -0
  255. package/dist/lib/lswt/interactive.test.d.ts +2 -0
  256. package/dist/lib/lswt/interactive.test.d.ts.map +1 -0
  257. package/dist/lib/lswt/interactive.test.js +383 -0
  258. package/dist/lib/lswt/interactive.test.js.map +1 -0
  259. package/dist/lib/lswt/types.d.ts +52 -1
  260. package/dist/lib/lswt/types.d.ts.map +1 -1
  261. package/dist/lib/lswt/worktree-info.d.ts +8 -1
  262. package/dist/lib/lswt/worktree-info.d.ts.map +1 -1
  263. package/dist/lib/lswt/worktree-info.js +14 -4
  264. package/dist/lib/lswt/worktree-info.js.map +1 -1
  265. package/dist/lib/lswt/worktree-info.test.js +153 -16
  266. package/dist/lib/lswt/worktree-info.test.js.map +1 -1
  267. package/dist/lib/newpr/action-deps.d.ts +15 -0
  268. package/dist/lib/newpr/action-deps.d.ts.map +1 -0
  269. package/dist/lib/newpr/action-deps.js +22 -0
  270. package/dist/lib/newpr/action-deps.js.map +1 -0
  271. package/dist/lib/newpr/args.d.ts.map +1 -1
  272. package/dist/lib/newpr/args.js +56 -0
  273. package/dist/lib/newpr/args.js.map +1 -1
  274. package/dist/lib/newpr/hook-runner.d.ts +80 -0
  275. package/dist/lib/newpr/hook-runner.d.ts.map +1 -0
  276. package/dist/lib/newpr/hook-runner.js +182 -0
  277. package/dist/lib/newpr/hook-runner.js.map +1 -0
  278. package/dist/lib/newpr/hook-runner.test.d.ts +7 -0
  279. package/dist/lib/newpr/hook-runner.test.d.ts.map +1 -0
  280. package/dist/lib/newpr/hook-runner.test.js +301 -0
  281. package/dist/lib/newpr/hook-runner.test.js.map +1 -0
  282. package/dist/lib/newpr/index.d.ts +3 -0
  283. package/dist/lib/newpr/index.d.ts.map +1 -1
  284. package/dist/lib/newpr/index.js +3 -0
  285. package/dist/lib/newpr/index.js.map +1 -1
  286. package/dist/lib/newpr/types.d.ts +9 -0
  287. package/dist/lib/newpr/types.d.ts.map +1 -1
  288. package/dist/lib/prompts.test.js +208 -1
  289. package/dist/lib/prompts.test.js.map +1 -1
  290. package/dist/lib/wtconfig/config-manager.d.ts +72 -0
  291. package/dist/lib/wtconfig/config-manager.d.ts.map +1 -0
  292. package/dist/lib/wtconfig/config-manager.js +408 -0
  293. package/dist/lib/wtconfig/config-manager.js.map +1 -0
  294. package/dist/lib/wtconfig/config-manager.test.d.ts +5 -0
  295. package/dist/lib/wtconfig/config-manager.test.d.ts.map +1 -0
  296. package/dist/lib/wtconfig/config-manager.test.js +501 -0
  297. package/dist/lib/wtconfig/config-manager.test.js.map +1 -0
  298. package/dist/lib/wtconfig/environment.d.ts +23 -0
  299. package/dist/lib/wtconfig/environment.d.ts.map +1 -0
  300. package/dist/lib/wtconfig/environment.js +238 -0
  301. package/dist/lib/wtconfig/environment.js.map +1 -0
  302. package/dist/lib/wtconfig/environment.test.d.ts +5 -0
  303. package/dist/lib/wtconfig/environment.test.d.ts.map +1 -0
  304. package/dist/lib/wtconfig/environment.test.js +246 -0
  305. package/dist/lib/wtconfig/environment.test.js.map +1 -0
  306. package/dist/lib/wtconfig/index.d.ts +7 -0
  307. package/dist/lib/wtconfig/index.d.ts.map +1 -0
  308. package/dist/lib/wtconfig/index.js +8 -0
  309. package/dist/lib/wtconfig/index.js.map +1 -0
  310. package/dist/lib/wtconfig/types.d.ts +97 -0
  311. package/dist/lib/wtconfig/types.d.ts.map +1 -0
  312. package/dist/lib/wtconfig/types.js +5 -0
  313. package/dist/lib/wtconfig/types.js.map +1 -0
  314. package/dist/lib/wtstate/analyze.d.ts +13 -0
  315. package/dist/lib/wtstate/analyze.d.ts.map +1 -0
  316. package/dist/lib/wtstate/analyze.js +165 -0
  317. package/dist/lib/wtstate/analyze.js.map +1 -0
  318. package/dist/lib/wtstate/analyze.test.d.ts +5 -0
  319. package/dist/lib/wtstate/analyze.test.d.ts.map +1 -0
  320. package/dist/lib/wtstate/analyze.test.js +282 -0
  321. package/dist/lib/wtstate/analyze.test.js.map +1 -0
  322. package/dist/lib/wtstate/args.d.ts +17 -0
  323. package/dist/lib/wtstate/args.d.ts.map +1 -0
  324. package/dist/lib/wtstate/args.js +91 -0
  325. package/dist/lib/wtstate/args.js.map +1 -0
  326. package/dist/lib/wtstate/args.test.d.ts +5 -0
  327. package/dist/lib/wtstate/args.test.d.ts.map +1 -0
  328. package/dist/lib/wtstate/args.test.js +120 -0
  329. package/dist/lib/wtstate/args.test.js.map +1 -0
  330. package/dist/lib/wtstate/index.d.ts +7 -0
  331. package/dist/lib/wtstate/index.d.ts.map +1 -0
  332. package/dist/lib/wtstate/index.js +8 -0
  333. package/dist/lib/wtstate/index.js.map +1 -0
  334. package/dist/lib/wtstate/types.d.ts +64 -0
  335. package/dist/lib/wtstate/types.d.ts.map +1 -0
  336. package/dist/lib/wtstate/types.js +5 -0
  337. package/dist/lib/wtstate/types.js.map +1 -0
  338. package/dist/mcp/server.d.ts +14 -0
  339. package/dist/mcp/server.d.ts.map +1 -0
  340. package/dist/mcp/server.js +339 -0
  341. package/dist/mcp/server.js.map +1 -0
  342. package/dist/mcp/server.test.d.ts +9 -0
  343. package/dist/mcp/server.test.d.ts.map +1 -0
  344. package/dist/mcp/server.test.js +390 -0
  345. package/dist/mcp/server.test.js.map +1 -0
  346. package/package.json +8 -2
@@ -0,0 +1,87 @@
1
+ /**
2
+ * CLI-based AI Providers
3
+ *
4
+ * Providers that use command-line AI tools (Claude Code, Gemini CLI, etc.)
5
+ */
6
+ import type { AIGenerationResult } from './types.js';
7
+ import { BaseAIProvider } from './base-provider.js';
8
+ /**
9
+ * Claude Code CLI provider
10
+ *
11
+ * Uses the `claude` command-line tool for generation.
12
+ */
13
+ export declare class ClaudeProvider extends BaseAIProvider {
14
+ readonly name = "claude";
15
+ private model;
16
+ constructor(model?: string);
17
+ /**
18
+ * Static availability check for lazy initialization
19
+ * Avoids creating a provider instance just to check availability.
20
+ */
21
+ static checkAvailability(): Promise<boolean>;
22
+ isAvailable(): Promise<boolean>;
23
+ protected generate(prompt: string): Promise<AIGenerationResult>;
24
+ }
25
+ /**
26
+ * Gemini CLI provider
27
+ *
28
+ * Uses the `gemini` command-line tool for generation.
29
+ */
30
+ export declare class GeminiProvider extends BaseAIProvider {
31
+ readonly name = "gemini";
32
+ private model;
33
+ constructor(model?: string);
34
+ /**
35
+ * Static availability check for lazy initialization
36
+ */
37
+ static checkAvailability(): Promise<boolean>;
38
+ isAvailable(): Promise<boolean>;
39
+ protected generate(prompt: string): Promise<AIGenerationResult>;
40
+ }
41
+ /**
42
+ * Ollama local AI provider
43
+ *
44
+ * Uses the local Ollama server for generation.
45
+ */
46
+ export declare class OllamaProvider extends BaseAIProvider {
47
+ readonly name = "ollama";
48
+ private model;
49
+ private host;
50
+ constructor(model?: string, host?: string);
51
+ /**
52
+ * Static availability check for lazy initialization
53
+ */
54
+ static checkAvailability(host?: string): Promise<boolean>;
55
+ isAvailable(): Promise<boolean>;
56
+ protected generate(prompt: string): Promise<AIGenerationResult>;
57
+ }
58
+ /**
59
+ * OpenAI API provider
60
+ *
61
+ * Uses the OpenAI API via curl (no SDK dependency).
62
+ */
63
+ export declare class OpenAIProvider extends BaseAIProvider {
64
+ readonly name = "openai";
65
+ private model;
66
+ private apiKeyEnv;
67
+ constructor(model?: string, apiKeyEnv?: string);
68
+ /**
69
+ * Static availability check for lazy initialization
70
+ */
71
+ static checkAvailability(apiKeyEnv?: string): Promise<boolean>;
72
+ isAvailable(): Promise<boolean>;
73
+ protected generate(prompt: string): Promise<AIGenerationResult>;
74
+ }
75
+ /**
76
+ * Custom script provider
77
+ *
78
+ * Runs a user-defined script for generation.
79
+ */
80
+ export declare class ScriptProvider extends BaseAIProvider {
81
+ readonly name = "script";
82
+ private scriptPath;
83
+ constructor(scriptPath: string);
84
+ isAvailable(): Promise<boolean>;
85
+ protected generate(prompt: string): Promise<AIGenerationResult>;
86
+ }
87
+ //# sourceMappingURL=cli-provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-provider.d.ts","sourceRoot":"","sources":["../../../src/lib/ai/cli-provider.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AACrD,OAAO,EAAE,cAAc,EAA0C,MAAM,oBAAoB,CAAC;AAwC5F;;;;GAIG;AACH,qBAAa,cAAe,SAAQ,cAAc;IAChD,QAAQ,CAAC,IAAI,YAAY;IACzB,OAAO,CAAC,KAAK,CAAS;gBAEV,KAAK,SAA6B;IAK9C;;;OAGG;IACH,MAAM,CAAC,iBAAiB,IAAI,OAAO,CAAC,OAAO,CAAC;IAItC,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;cAIrB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;CAWtE;AAED;;;;GAIG;AACH,qBAAa,cAAe,SAAQ,cAAc;IAChD,QAAQ,CAAC,IAAI,YAAY;IACzB,OAAO,CAAC,KAAK,CAAS;gBAEV,KAAK,SAAqB;IAKtC;;OAEG;IACH,MAAM,CAAC,iBAAiB,IAAI,OAAO,CAAC,OAAO,CAAC;IAItC,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;cAIrB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;CAUtE;AAED;;;;GAIG;AACH,qBAAa,cAAe,SAAQ,cAAc;IAChD,QAAQ,CAAC,IAAI,YAAY;IACzB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,IAAI,CAAS;gBAET,KAAK,SAAkB,EAAE,IAAI,SAA2B;IAMpE;;OAEG;IACH,MAAM,CAAC,iBAAiB,CAAC,IAAI,SAA2B,GAAG,OAAO,CAAC,OAAO,CAAC;IAarE,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;cAIrB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;CA0CtE;AAED;;;;GAIG;AACH,qBAAa,cAAe,SAAQ,cAAc;IAChD,QAAQ,CAAC,IAAI,YAAY;IACzB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,SAAS,CAAS;gBAEd,KAAK,SAAW,EAAE,SAAS,SAAmB;IAM1D;;OAEG;IACH,MAAM,CAAC,iBAAiB,CAAC,SAAS,SAAmB,GAAG,OAAO,CAAC,OAAO,CAAC;IAIlE,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;cAIrB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;CAoDtE;AAED;;;;GAIG;AACH,qBAAa,cAAe,SAAQ,cAAc;IAChD,QAAQ,CAAC,IAAI,YAAY;IACzB,OAAO,CAAC,UAAU,CAAS;gBAEf,UAAU,EAAE,MAAM;IAKxB,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;cAUrB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;CAUtE"}
@@ -0,0 +1,280 @@
1
+ /**
2
+ * CLI-based AI Providers
3
+ *
4
+ * Providers that use command-line AI tools (Claude Code, Gemini CLI, etc.)
5
+ */
6
+ import { spawnSync } from 'child_process';
7
+ import { BaseAIProvider, createSuccessResult, createErrorResult } from './base-provider.js';
8
+ /**
9
+ * Check if a command exists in PATH
10
+ */
11
+ function commandExists(cmd) {
12
+ try {
13
+ const result = spawnSync(process.platform === 'win32' ? 'where' : 'which', [cmd], {
14
+ stdio: ['pipe', 'pipe', 'pipe'],
15
+ encoding: 'utf-8',
16
+ });
17
+ return result.status === 0;
18
+ }
19
+ catch {
20
+ return false;
21
+ }
22
+ }
23
+ /**
24
+ * Execute a CLI command and capture output
25
+ */
26
+ function execCommand(cmd, args, input) {
27
+ const result = spawnSync(cmd, args, {
28
+ input,
29
+ encoding: 'utf-8',
30
+ stdio: ['pipe', 'pipe', 'pipe'],
31
+ maxBuffer: 1024 * 1024 * 10, // 10MB
32
+ timeout: 60000, // 60 seconds
33
+ });
34
+ if (result.error) {
35
+ throw result.error;
36
+ }
37
+ if (result.status !== 0) {
38
+ throw new Error(result.stderr || `Command failed with exit code ${result.status}`);
39
+ }
40
+ return result.stdout;
41
+ }
42
+ /**
43
+ * Claude Code CLI provider
44
+ *
45
+ * Uses the `claude` command-line tool for generation.
46
+ */
47
+ export class ClaudeProvider extends BaseAIProvider {
48
+ name = 'claude';
49
+ model;
50
+ constructor(model = 'claude-sonnet-4-20250514') {
51
+ super();
52
+ this.model = model;
53
+ }
54
+ /**
55
+ * Static availability check for lazy initialization
56
+ * Avoids creating a provider instance just to check availability.
57
+ */
58
+ static checkAvailability() {
59
+ return Promise.resolve(commandExists('claude'));
60
+ }
61
+ async isAvailable() {
62
+ return ClaudeProvider.checkAvailability();
63
+ }
64
+ async generate(prompt) {
65
+ try {
66
+ // Use claude CLI with the prompt
67
+ // The claude CLI accepts prompts via stdin or as an argument
68
+ const output = execCommand('claude', ['-p', prompt, '--model', this.model]);
69
+ return createSuccessResult(output.trim(), this.name);
70
+ }
71
+ catch (error) {
72
+ const message = error instanceof Error ? error.message : String(error);
73
+ return createErrorResult(`Claude CLI error: ${message}`, this.name);
74
+ }
75
+ }
76
+ }
77
+ /**
78
+ * Gemini CLI provider
79
+ *
80
+ * Uses the `gemini` command-line tool for generation.
81
+ */
82
+ export class GeminiProvider extends BaseAIProvider {
83
+ name = 'gemini';
84
+ model;
85
+ constructor(model = 'gemini-2.0-flash') {
86
+ super();
87
+ this.model = model;
88
+ }
89
+ /**
90
+ * Static availability check for lazy initialization
91
+ */
92
+ static checkAvailability() {
93
+ return Promise.resolve(commandExists('gemini'));
94
+ }
95
+ async isAvailable() {
96
+ return GeminiProvider.checkAvailability();
97
+ }
98
+ async generate(prompt) {
99
+ try {
100
+ // Use gemini CLI with the prompt
101
+ const output = execCommand('gemini', ['prompt', prompt, '--model', this.model]);
102
+ return createSuccessResult(output.trim(), this.name);
103
+ }
104
+ catch (error) {
105
+ const message = error instanceof Error ? error.message : String(error);
106
+ return createErrorResult(`Gemini CLI error: ${message}`, this.name);
107
+ }
108
+ }
109
+ }
110
+ /**
111
+ * Ollama local AI provider
112
+ *
113
+ * Uses the local Ollama server for generation.
114
+ */
115
+ export class OllamaProvider extends BaseAIProvider {
116
+ name = 'ollama';
117
+ model;
118
+ host;
119
+ constructor(model = 'codellama:13b', host = 'http://localhost:11434') {
120
+ super();
121
+ this.model = model;
122
+ this.host = host;
123
+ }
124
+ /**
125
+ * Static availability check for lazy initialization
126
+ */
127
+ static checkAvailability(host = 'http://localhost:11434') {
128
+ try {
129
+ // Check if Ollama server is running
130
+ const result = spawnSync('curl', ['-s', `${host}/api/tags`], {
131
+ encoding: 'utf-8',
132
+ timeout: 5000,
133
+ });
134
+ return Promise.resolve(result.status === 0);
135
+ }
136
+ catch {
137
+ return Promise.resolve(false);
138
+ }
139
+ }
140
+ async isAvailable() {
141
+ return OllamaProvider.checkAvailability(this.host);
142
+ }
143
+ async generate(prompt) {
144
+ try {
145
+ // Use curl to call Ollama API
146
+ const payload = JSON.stringify({
147
+ model: this.model,
148
+ prompt,
149
+ stream: false,
150
+ });
151
+ const result = spawnSync('curl', [
152
+ '-s',
153
+ '-X',
154
+ 'POST',
155
+ `${this.host}/api/generate`,
156
+ '-d',
157
+ payload,
158
+ '-H',
159
+ 'Content-Type: application/json',
160
+ ], {
161
+ encoding: 'utf-8',
162
+ timeout: 120000, // 2 minutes for local models
163
+ });
164
+ if (result.status !== 0) {
165
+ throw new Error(result.stderr || 'Ollama API request failed');
166
+ }
167
+ const response = JSON.parse(result.stdout);
168
+ if (response.response) {
169
+ return createSuccessResult(response.response.trim(), this.name);
170
+ }
171
+ throw new Error('Invalid Ollama response');
172
+ }
173
+ catch (error) {
174
+ const message = error instanceof Error ? error.message : String(error);
175
+ return createErrorResult(`Ollama error: ${message}`, this.name);
176
+ }
177
+ }
178
+ }
179
+ /**
180
+ * OpenAI API provider
181
+ *
182
+ * Uses the OpenAI API via curl (no SDK dependency).
183
+ */
184
+ export class OpenAIProvider extends BaseAIProvider {
185
+ name = 'openai';
186
+ model;
187
+ apiKeyEnv;
188
+ constructor(model = 'gpt-4o', apiKeyEnv = 'OPENAI_API_KEY') {
189
+ super();
190
+ this.model = model;
191
+ this.apiKeyEnv = apiKeyEnv;
192
+ }
193
+ /**
194
+ * Static availability check for lazy initialization
195
+ */
196
+ static checkAvailability(apiKeyEnv = 'OPENAI_API_KEY') {
197
+ return Promise.resolve(!!process.env[apiKeyEnv]);
198
+ }
199
+ async isAvailable() {
200
+ return OpenAIProvider.checkAvailability(this.apiKeyEnv);
201
+ }
202
+ async generate(prompt) {
203
+ const apiKey = process.env[this.apiKeyEnv];
204
+ if (!apiKey) {
205
+ return createErrorResult(`OpenAI API key not found in ${this.apiKeyEnv}`, this.name);
206
+ }
207
+ try {
208
+ const payload = JSON.stringify({
209
+ model: this.model,
210
+ messages: [{ role: 'user', content: prompt }],
211
+ max_tokens: 2000,
212
+ });
213
+ const result = spawnSync('curl', [
214
+ '-s',
215
+ '-X',
216
+ 'POST',
217
+ 'https://api.openai.com/v1/chat/completions',
218
+ '-H',
219
+ 'Content-Type: application/json',
220
+ '-H',
221
+ `Authorization: Bearer ${apiKey}`,
222
+ '-d',
223
+ payload,
224
+ ], {
225
+ encoding: 'utf-8',
226
+ timeout: 60000,
227
+ });
228
+ if (result.status !== 0) {
229
+ throw new Error(result.stderr || 'OpenAI API request failed');
230
+ }
231
+ const response = JSON.parse(result.stdout);
232
+ if (response.choices && response.choices[0]?.message?.content) {
233
+ return createSuccessResult(response.choices[0].message.content.trim(), this.name);
234
+ }
235
+ if (response.error) {
236
+ throw new Error(response.error.message || 'OpenAI API error');
237
+ }
238
+ throw new Error('Invalid OpenAI response');
239
+ }
240
+ catch (error) {
241
+ const message = error instanceof Error ? error.message : String(error);
242
+ return createErrorResult(`OpenAI error: ${message}`, this.name);
243
+ }
244
+ }
245
+ }
246
+ /**
247
+ * Custom script provider
248
+ *
249
+ * Runs a user-defined script for generation.
250
+ */
251
+ export class ScriptProvider extends BaseAIProvider {
252
+ name = 'script';
253
+ scriptPath;
254
+ constructor(scriptPath) {
255
+ super();
256
+ this.scriptPath = scriptPath;
257
+ }
258
+ async isAvailable() {
259
+ try {
260
+ // Check if script exists and is executable
261
+ const result = spawnSync('test', ['-x', this.scriptPath]);
262
+ return result.status === 0;
263
+ }
264
+ catch {
265
+ return false;
266
+ }
267
+ }
268
+ async generate(prompt) {
269
+ try {
270
+ // Run the script with prompt as stdin
271
+ const output = execCommand('node', [this.scriptPath], prompt);
272
+ return createSuccessResult(output.trim(), this.name);
273
+ }
274
+ catch (error) {
275
+ const message = error instanceof Error ? error.message : String(error);
276
+ return createErrorResult(`Script error: ${message}`, this.name);
277
+ }
278
+ }
279
+ }
280
+ //# sourceMappingURL=cli-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-provider.js","sourceRoot":"","sources":["../../../src/lib/ai/cli-provider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * CLI Provider Tests
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=cli-provider.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-provider.test.d.ts","sourceRoot":"","sources":["../../../src/lib/ai/cli-provider.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}