genaicode 0.0.37 → 0.2.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 (312) hide show
  1. package/README.md +3 -1
  2. package/bin/genaicode-dev.js +11 -0
  3. package/bin/genaicode.cjs +15 -1
  4. package/dist/ai-service/ai-studio.d.ts +6 -0
  5. package/dist/ai-service/ai-studio.js +135 -0
  6. package/dist/ai-service/ai-studio.js.map +1 -0
  7. package/dist/ai-service/anthropic.d.ts +6 -0
  8. package/dist/ai-service/anthropic.js +135 -0
  9. package/dist/ai-service/anthropic.js.map +1 -0
  10. package/dist/ai-service/chat-gpt.d.ts +5 -0
  11. package/dist/ai-service/chat-gpt.js +132 -0
  12. package/dist/ai-service/chat-gpt.js.map +1 -0
  13. package/dist/ai-service/common.d.ts +58 -0
  14. package/dist/ai-service/common.js +38 -0
  15. package/dist/ai-service/common.js.map +1 -0
  16. package/dist/ai-service/common.test.d.ts +1 -0
  17. package/dist/ai-service/common.test.js +85 -0
  18. package/dist/ai-service/common.test.js.map +1 -0
  19. package/dist/ai-service/dall-e.d.ts +14 -0
  20. package/dist/ai-service/dall-e.js +48 -0
  21. package/dist/ai-service/dall-e.js.map +1 -0
  22. package/dist/ai-service/vertex-ai-claude.d.ts +5 -0
  23. package/dist/ai-service/vertex-ai-claude.js +94 -0
  24. package/dist/ai-service/vertex-ai-claude.js.map +1 -0
  25. package/dist/ai-service/vertex-ai-imagen.d.ts +14 -0
  26. package/dist/ai-service/vertex-ai-imagen.js +77 -0
  27. package/dist/ai-service/vertex-ai-imagen.js.map +1 -0
  28. package/dist/ai-service/vertex-ai.d.ts +7 -0
  29. package/dist/ai-service/vertex-ai.js +142 -0
  30. package/dist/ai-service/vertex-ai.js.map +1 -0
  31. package/dist/cli/cli-options.d.ts +10 -0
  32. package/dist/cli/cli-options.js +124 -0
  33. package/dist/cli/cli-options.js.map +1 -0
  34. package/dist/cli/cli-options.test.d.ts +1 -0
  35. package/dist/cli/cli-options.test.js +34 -0
  36. package/dist/cli/cli-options.test.js.map +1 -0
  37. package/dist/cli/cli-params.d.ts +30 -0
  38. package/dist/cli/cli-params.js +109 -0
  39. package/dist/cli/cli-params.js.map +1 -0
  40. package/dist/cli/cli-params.test.d.ts +1 -0
  41. package/dist/cli/cli-params.test.js +38 -0
  42. package/dist/cli/cli-params.test.js.map +1 -0
  43. package/dist/cli/service-autodetect.d.ts +2 -0
  44. package/dist/cli/service-autodetect.js +17 -0
  45. package/dist/cli/service-autodetect.js.map +1 -0
  46. package/dist/cli/service-autodetect.test.d.ts +1 -0
  47. package/dist/cli/service-autodetect.test.js +38 -0
  48. package/dist/cli/service-autodetect.test.js.map +1 -0
  49. package/dist/cli/validate-cli-params.d.ts +18 -0
  50. package/dist/cli/validate-cli-params.js +129 -0
  51. package/dist/cli/validate-cli-params.js.map +1 -0
  52. package/dist/cli/validate-cli-params.test.d.ts +1 -0
  53. package/dist/cli/validate-cli-params.test.js +106 -0
  54. package/dist/cli/validate-cli-params.test.js.map +1 -0
  55. package/dist/files/file-utils.d.ts +2 -0
  56. package/dist/files/file-utils.js +7 -0
  57. package/dist/files/file-utils.js.map +1 -0
  58. package/dist/files/file-utils.test.d.ts +1 -0
  59. package/dist/files/file-utils.test.js +18 -0
  60. package/dist/files/file-utils.test.js.map +1 -0
  61. package/dist/files/find-files.d.ts +8 -0
  62. package/dist/files/find-files.js +76 -0
  63. package/dist/files/find-files.js.map +1 -0
  64. package/dist/files/read-files.d.ts +18 -0
  65. package/dist/files/read-files.js +66 -0
  66. package/dist/files/read-files.js.map +1 -0
  67. package/dist/files/read-files.test.d.ts +1 -0
  68. package/dist/files/read-files.test.js +88 -0
  69. package/dist/files/read-files.test.js.map +1 -0
  70. package/dist/files/temp-buffer.d.ts +2 -0
  71. package/dist/files/temp-buffer.js +12 -0
  72. package/dist/files/temp-buffer.js.map +1 -0
  73. package/dist/files/update-files.d.ts +6 -0
  74. package/dist/files/update-files.js +197 -0
  75. package/dist/files/update-files.js.map +1 -0
  76. package/dist/images/ensure-alpha.d.ts +1 -0
  77. package/dist/images/ensure-alpha.js +5 -0
  78. package/dist/images/ensure-alpha.js.map +1 -0
  79. package/dist/images/imgly-remove-background.d.ts +2 -0
  80. package/dist/images/imgly-remove-background.js +21 -0
  81. package/dist/images/imgly-remove-background.js.map +1 -0
  82. package/dist/images/resize-image.d.ts +19 -0
  83. package/dist/images/resize-image.js +22 -0
  84. package/dist/images/resize-image.js.map +1 -0
  85. package/dist/images/split-image.d.ts +18 -0
  86. package/dist/images/split-image.js +25 -0
  87. package/dist/images/split-image.js.map +1 -0
  88. package/dist/main/codegen-interactive-utils.d.ts +8 -0
  89. package/dist/main/codegen-interactive-utils.js +148 -0
  90. package/dist/main/codegen-interactive-utils.js.map +1 -0
  91. package/dist/main/codegen-interactive.d.ts +2 -0
  92. package/dist/main/codegen-interactive.js +68 -0
  93. package/dist/main/codegen-interactive.js.map +1 -0
  94. package/dist/main/codegen-types.d.ts +28 -0
  95. package/dist/main/codegen-types.js +2 -0
  96. package/dist/main/codegen-types.js.map +1 -0
  97. package/dist/main/codegen.d.ts +4 -0
  98. package/dist/main/codegen.js +164 -0
  99. package/dist/main/codegen.js.map +1 -0
  100. package/dist/main/codegen.test.d.ts +2 -0
  101. package/dist/main/codegen.test.js +273 -0
  102. package/dist/main/codegen.test.js.map +1 -0
  103. package/dist/main/config-lib.d.ts +16 -0
  104. package/dist/main/config-lib.js +28 -0
  105. package/dist/main/config-lib.js.map +1 -0
  106. package/dist/main/config-lib.test.d.ts +1 -0
  107. package/dist/main/config-lib.test.js +64 -0
  108. package/dist/main/config-lib.test.js.map +1 -0
  109. package/dist/main/config.d.ts +6 -0
  110. package/{src → dist}/main/config.js +28 -22
  111. package/dist/main/config.js.map +1 -0
  112. package/dist/main/interactive/codegen-interactive.d.ts +2 -0
  113. package/dist/main/interactive/codegen-interactive.js +55 -0
  114. package/dist/main/interactive/codegen-interactive.js.map +1 -0
  115. package/dist/main/interactive/codegen-interactive.test.d.ts +4 -0
  116. package/dist/main/interactive/codegen-interactive.test.js +77 -0
  117. package/dist/main/interactive/codegen-interactive.test.js.map +1 -0
  118. package/dist/main/interactive/codegen-worker.d.ts +3 -0
  119. package/dist/main/interactive/codegen-worker.js +47 -0
  120. package/dist/main/interactive/codegen-worker.js.map +1 -0
  121. package/dist/main/interactive/common.d.ts +5 -0
  122. package/dist/main/interactive/common.js +51 -0
  123. package/dist/main/interactive/common.js.map +1 -0
  124. package/dist/main/interactive/configure.d.ts +2 -0
  125. package/dist/main/interactive/configure.js +99 -0
  126. package/dist/main/interactive/configure.js.map +1 -0
  127. package/dist/main/interactive/error-handling.d.ts +4 -0
  128. package/dist/main/interactive/error-handling.js +49 -0
  129. package/dist/main/interactive/error-handling.js.map +1 -0
  130. package/dist/main/interactive/help.d.ts +1 -0
  131. package/dist/main/interactive/help.js +22 -0
  132. package/dist/main/interactive/help.js.map +1 -0
  133. package/dist/main/interactive/process-comments.d.ts +2 -0
  134. package/dist/main/interactive/process-comments.js +39 -0
  135. package/dist/main/interactive/process-comments.js.map +1 -0
  136. package/dist/main/interactive/select-ai-service.d.ts +2 -0
  137. package/dist/main/interactive/select-ai-service.js +27 -0
  138. package/dist/main/interactive/select-ai-service.js.map +1 -0
  139. package/dist/main/interactive/task-file.d.ts +2 -0
  140. package/dist/main/interactive/task-file.js +28 -0
  141. package/dist/main/interactive/task-file.js.map +1 -0
  142. package/dist/main/interactive/text-prompt.d.ts +2 -0
  143. package/dist/main/interactive/text-prompt.js +18 -0
  144. package/dist/main/interactive/text-prompt.js.map +1 -0
  145. package/dist/main/interactive/user-interrupt.d.ts +1 -0
  146. package/dist/main/interactive/user-interrupt.js +36 -0
  147. package/dist/main/interactive/user-interrupt.js.map +1 -0
  148. package/dist/main/interactive/worker-script.d.ts +1 -0
  149. package/dist/main/interactive/worker-script.js +24 -0
  150. package/dist/main/interactive/worker-script.js.map +1 -0
  151. package/dist/main/interactive/worker.d.ts +2 -0
  152. package/dist/main/interactive/worker.js +55 -0
  153. package/dist/main/interactive/worker.js.map +1 -0
  154. package/dist/prompt/function-calling-validate.d.ts +3 -0
  155. package/dist/prompt/function-calling-validate.js +33 -0
  156. package/dist/prompt/function-calling-validate.js.map +1 -0
  157. package/dist/prompt/function-calling.d.ts +5 -0
  158. package/{src → dist}/prompt/function-calling.js +25 -24
  159. package/dist/prompt/function-calling.js.map +1 -0
  160. package/dist/prompt/function-defs/ask-question.d.ts +65 -0
  161. package/dist/prompt/function-defs/ask-question.js +67 -0
  162. package/dist/prompt/function-defs/ask-question.js.map +1 -0
  163. package/dist/prompt/function-defs/codegen-summary.d.ts +63 -0
  164. package/dist/prompt/function-defs/codegen-summary.js +80 -0
  165. package/dist/prompt/function-defs/codegen-summary.js.map +1 -0
  166. package/dist/prompt/function-defs/create-directory.d.ts +21 -0
  167. package/dist/prompt/function-defs/create-directory.js +22 -0
  168. package/dist/prompt/function-defs/create-directory.js.map +1 -0
  169. package/dist/prompt/function-defs/create-file.d.ts +25 -0
  170. package/dist/prompt/function-defs/create-file.js +26 -0
  171. package/dist/prompt/function-defs/create-file.js.map +1 -0
  172. package/dist/prompt/function-defs/delete-file.d.ts +21 -0
  173. package/dist/prompt/function-defs/delete-file.js +22 -0
  174. package/dist/prompt/function-defs/delete-file.js.map +1 -0
  175. package/dist/prompt/function-defs/download-file.d.ts +25 -0
  176. package/dist/prompt/function-defs/download-file.js +26 -0
  177. package/dist/prompt/function-defs/download-file.js.map +1 -0
  178. package/dist/prompt/function-defs/explanation.d.ts +17 -0
  179. package/dist/prompt/function-defs/explanation.js +18 -0
  180. package/dist/prompt/function-defs/explanation.js.map +1 -0
  181. package/dist/prompt/function-defs/generate-image.d.ts +41 -0
  182. package/dist/prompt/function-defs/generate-image.js +42 -0
  183. package/dist/prompt/function-defs/generate-image.js.map +1 -0
  184. package/dist/prompt/function-defs/get-image-assets.d.ts +20 -0
  185. package/dist/prompt/function-defs/get-image-assets.js +21 -0
  186. package/dist/prompt/function-defs/get-image-assets.js.map +1 -0
  187. package/dist/prompt/function-defs/get-source-code.d.ts +20 -0
  188. package/dist/prompt/function-defs/get-source-code.js +21 -0
  189. package/dist/prompt/function-defs/get-source-code.js.map +1 -0
  190. package/dist/prompt/function-defs/imgly-remove-background.d.ts +25 -0
  191. package/dist/prompt/function-defs/imgly-remove-background.js +26 -0
  192. package/dist/prompt/function-defs/imgly-remove-background.js.map +1 -0
  193. package/dist/prompt/function-defs/move-file.d.ts +25 -0
  194. package/dist/prompt/function-defs/move-file.js +26 -0
  195. package/dist/prompt/function-defs/move-file.js.map +1 -0
  196. package/dist/prompt/function-defs/patch-file.d.ts +25 -0
  197. package/dist/prompt/function-defs/patch-file.js +39 -0
  198. package/dist/prompt/function-defs/patch-file.js.map +1 -0
  199. package/dist/prompt/function-defs/resize-image.d.ts +36 -0
  200. package/dist/prompt/function-defs/resize-image.js +37 -0
  201. package/dist/prompt/function-defs/resize-image.js.map +1 -0
  202. package/dist/prompt/function-defs/split-image.d.ts +57 -0
  203. package/dist/prompt/function-defs/split-image.js +46 -0
  204. package/dist/prompt/function-defs/split-image.js.map +1 -0
  205. package/dist/prompt/function-defs/update-file.d.ts +25 -0
  206. package/dist/prompt/function-defs/update-file.js +26 -0
  207. package/dist/prompt/function-defs/update-file.js.map +1 -0
  208. package/dist/prompt/limits.d.ts +3 -0
  209. package/dist/prompt/limits.js +19 -0
  210. package/dist/prompt/limits.js.map +1 -0
  211. package/dist/prompt/limits.test.d.ts +1 -0
  212. package/dist/prompt/limits.test.js +35 -0
  213. package/dist/prompt/limits.test.js.map +1 -0
  214. package/dist/prompt/prompt-codegen.d.ts +9 -0
  215. package/dist/prompt/prompt-codegen.js +90 -0
  216. package/dist/prompt/prompt-codegen.js.map +1 -0
  217. package/dist/prompt/prompt-codegen.test.d.ts +1 -0
  218. package/dist/prompt/prompt-codegen.test.js +98 -0
  219. package/dist/prompt/prompt-codegen.test.js.map +1 -0
  220. package/dist/prompt/prompt-consts.d.ts +1 -0
  221. package/{src → dist}/prompt/prompt-consts.js +1 -0
  222. package/dist/prompt/prompt-consts.js.map +1 -0
  223. package/dist/prompt/prompt-service-ask-question.test.d.ts +3 -0
  224. package/dist/prompt/prompt-service-ask-question.test.js +142 -0
  225. package/dist/prompt/prompt-service-ask-question.test.js.map +1 -0
  226. package/dist/prompt/prompt-service.d.ts +28 -0
  227. package/dist/prompt/prompt-service.js +163 -0
  228. package/dist/prompt/prompt-service.js.map +1 -0
  229. package/dist/prompt/prompt-service.test.d.ts +1 -0
  230. package/dist/prompt/prompt-service.test.js +531 -0
  231. package/dist/prompt/prompt-service.test.js.map +1 -0
  232. package/dist/prompt/steps/step-ask-question.d.ts +6 -0
  233. package/dist/prompt/steps/step-ask-question.js +82 -0
  234. package/dist/prompt/steps/step-ask-question.js.map +1 -0
  235. package/dist/prompt/steps/step-generate-image.d.ts +2 -0
  236. package/dist/prompt/steps/step-generate-image.js +29 -0
  237. package/dist/prompt/steps/step-generate-image.js.map +1 -0
  238. package/dist/prompt/steps/step-validate-recover.d.ts +13 -0
  239. package/dist/prompt/steps/step-validate-recover.js +51 -0
  240. package/dist/prompt/steps/step-validate-recover.js.map +1 -0
  241. package/dist/prompt/steps/step-verify-patch.d.ts +7 -0
  242. package/dist/prompt/steps/step-verify-patch.js +41 -0
  243. package/dist/prompt/steps/step-verify-patch.js.map +1 -0
  244. package/dist/prompt/steps/steps-types.d.ts +4 -0
  245. package/dist/prompt/steps/steps-types.js +6 -0
  246. package/dist/prompt/steps/steps-types.js.map +1 -0
  247. package/dist/prompt/systemprompt.d.ts +3 -0
  248. package/dist/prompt/systemprompt.js +47 -0
  249. package/dist/prompt/systemprompt.js.map +1 -0
  250. package/dist/prompt/systemprompt.test.d.ts +3 -0
  251. package/dist/prompt/systemprompt.test.js +46 -0
  252. package/dist/prompt/systemprompt.test.js.map +1 -0
  253. package/package.json +15 -5
  254. package/bin/genaicode.js +0 -5
  255. package/bin/vertex-monkey-patch.cjs +0 -33
  256. package/src/ai-service/anthropic.js +0 -126
  257. package/src/ai-service/chat-gpt.js +0 -126
  258. package/src/ai-service/common.js +0 -49
  259. package/src/ai-service/common.test.js +0 -107
  260. package/src/ai-service/dall-e.js +0 -50
  261. package/src/ai-service/vertex-ai-claude.js +0 -99
  262. package/src/ai-service/vertex-ai-imagen.js +0 -78
  263. package/src/ai-service/vertex-ai.js +0 -156
  264. package/src/cli/cli-options.js +0 -132
  265. package/src/cli/cli-options.test.js +0 -50
  266. package/src/cli/cli-params.js +0 -114
  267. package/src/cli/cli-params.test.js +0 -43
  268. package/src/cli/service-autodetect.js +0 -11
  269. package/src/cli/service-autodetect.test.js +0 -43
  270. package/src/cli/validate-cli-params.js +0 -137
  271. package/src/cli/validate-cli-params.test.js +0 -134
  272. package/src/files/file-utils.js +0 -7
  273. package/src/files/file-utils.test.js +0 -21
  274. package/src/files/find-files.js +0 -86
  275. package/src/files/read-files.js +0 -65
  276. package/src/files/read-files.test.js +0 -103
  277. package/src/files/temp-buffer.js +0 -13
  278. package/src/files/update-files.js +0 -205
  279. package/src/images/ensure-alpha.js +0 -5
  280. package/src/images/imgly-remove-background.js +0 -23
  281. package/src/images/resize-image.js +0 -23
  282. package/src/images/split-image.js +0 -26
  283. package/src/main/codegen.js +0 -120
  284. package/src/main/codegen.test.js +0 -335
  285. package/src/main/config-lib.js +0 -33
  286. package/src/main/config-lib.test.js +0 -80
  287. package/src/prompt/function-calling-validate.js +0 -25
  288. package/src/prompt/function-defs/ask-question.js +0 -33
  289. package/src/prompt/function-defs/codegen-summary.js +0 -87
  290. package/src/prompt/function-defs/create-directory.js +0 -21
  291. package/src/prompt/function-defs/create-file.js +0 -26
  292. package/src/prompt/function-defs/delete-file.js +0 -21
  293. package/src/prompt/function-defs/download-file.js +0 -25
  294. package/src/prompt/function-defs/explanation.js +0 -17
  295. package/src/prompt/function-defs/generate-image.js +0 -51
  296. package/src/prompt/function-defs/get-image-assets.js +0 -21
  297. package/src/prompt/function-defs/get-source-code.js +0 -21
  298. package/src/prompt/function-defs/imgly-remove-background.js +0 -25
  299. package/src/prompt/function-defs/move-file.js +0 -25
  300. package/src/prompt/function-defs/patch-file.js +0 -39
  301. package/src/prompt/function-defs/resize-image.js +0 -36
  302. package/src/prompt/function-defs/split-image.js +0 -45
  303. package/src/prompt/function-defs/update-file.js +0 -26
  304. package/src/prompt/limits.js +0 -23
  305. package/src/prompt/limits.test.js +0 -40
  306. package/src/prompt/prompt-codegen.js +0 -106
  307. package/src/prompt/prompt-codegen.test.js +0 -116
  308. package/src/prompt/prompt-service-ask-question.test.js +0 -163
  309. package/src/prompt/prompt-service.js +0 -335
  310. package/src/prompt/prompt-service.test.js +0 -602
  311. package/src/prompt/systemprompt.js +0 -39
  312. package/src/prompt/systemprompt.test.js +0 -64
@@ -0,0 +1,124 @@
1
+ const cliOptions = [
2
+ {
3
+ name: '--help',
4
+ description: 'Display this help message.',
5
+ },
6
+ {
7
+ name: '--dry-run',
8
+ description: 'Run the codegen script without updating the source code.',
9
+ },
10
+ {
11
+ name: '--consider-all-files',
12
+ description: "Consider all files for code generation, even if they don't contain the @" + 'CODEGEN comments.',
13
+ },
14
+ {
15
+ name: '--allow-file-create',
16
+ description: 'Allow the codegen script to create new files.',
17
+ },
18
+ {
19
+ name: '--allow-file-delete',
20
+ description: 'Allow the codegen script to delete files.',
21
+ },
22
+ {
23
+ name: '--allow-directory-create',
24
+ description: 'Allow codegen script to create directories.',
25
+ },
26
+ {
27
+ name: '--allow-file-move',
28
+ description: 'Allow the codegen script to move files.',
29
+ },
30
+ {
31
+ name: '--chat-gpt',
32
+ description: "Use the OpenAI model for code generation instead of Vertex AI with Google's Gemini Pro model.",
33
+ },
34
+ {
35
+ name: '--anthropic',
36
+ description: "Use Anthropic's Claude model for code generation.",
37
+ },
38
+ {
39
+ name: '--vertex-ai',
40
+ description: "Use Vertex AI with Google's Gemini Pro model for code generation (default if no AI model is specified).",
41
+ },
42
+ {
43
+ name: '--vertex-ai-claude',
44
+ description: 'Use Claude via Vertex AI for code generation.',
45
+ },
46
+ {
47
+ name: '--explicit-prompt=<prompt>',
48
+ description: 'An explicit prompt to use for code generation.',
49
+ },
50
+ {
51
+ name: '--task-file=<file>',
52
+ description: 'Specifies a file with a task description for code generation.',
53
+ },
54
+ {
55
+ name: '--dependency-tree',
56
+ description: 'Limit the scope of codegen only to files marked with @' + 'CODEGEN and their dependencies.',
57
+ },
58
+ {
59
+ name: '--verbose-prompt',
60
+ description: 'Print the prompt used for code generation.',
61
+ },
62
+ {
63
+ name: '--require-explanations',
64
+ description: 'Require explanations for all code generation operations.',
65
+ },
66
+ {
67
+ name: '--disable-context-optimization',
68
+ description: 'Disable the optimization that uses context paths for more efficient code generation.',
69
+ },
70
+ {
71
+ name: '--gemini-block-none',
72
+ description: 'Disable safety settings for Gemini Pro model (requires whitelisted Cloud project).',
73
+ },
74
+ {
75
+ name: '--disable-initial-lint',
76
+ description: 'Skip the initial lint check before running the code generation process.',
77
+ },
78
+ {
79
+ name: '--temperature=<value>',
80
+ description: 'Set the temperature parameter for the AI model (default: 0.7).',
81
+ },
82
+ {
83
+ name: '--vision',
84
+ description: 'Enable vision capabilities for processing image inputs. This option allows the tool to analyze and generate code based on image content when used with compatible AI models.',
85
+ },
86
+ {
87
+ name: '--imagen=<service>',
88
+ description: 'Enable image generation functionality and specify the service to use (either "vertex-ai" or "dall-e").',
89
+ },
90
+ {
91
+ name: '--cheap',
92
+ description: 'Switch to cheaper models in AI services for content and image generation.',
93
+ },
94
+ {
95
+ name: '--content-mask=<path>',
96
+ description: 'Apply a content mask to limit the initial source code files included in the request. The value should be a prefix of the path relative to rootDir.',
97
+ },
98
+ {
99
+ name: '--ignore-pattern=<pattern>',
100
+ description: 'Specify a pattern of files to ignore during the initial source code fetching.',
101
+ },
102
+ {
103
+ name: '--disable-cache',
104
+ description: 'Disable caching for the application.',
105
+ },
106
+ {
107
+ name: '--disable-ask-question',
108
+ description: 'Disable the question-asking feature. By default, the assistant can ask questions for clarification during the code generation process.',
109
+ },
110
+ ];
111
+ /**
112
+ * Print the help message with all available CLI options
113
+ */
114
+ export function printHelpMessage() {
115
+ console.log('GenAIcode - AI-powered code generation tool');
116
+ console.log('\nUsage: npx genaicode [options]');
117
+ console.log('\nOptions:');
118
+ cliOptions.forEach((option) => {
119
+ console.log(` ${option.name.padEnd(30)} ${option.description}`);
120
+ });
121
+ console.log('\nFor more information, please refer to the project home page: https://github.com/gtanczyk/genaicode/');
122
+ }
123
+ export { cliOptions };
124
+ //# sourceMappingURL=cli-options.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-options.js","sourceRoot":"","sources":["../../src/cli/cli-options.ts"],"names":[],"mappings":"AAMA,MAAM,UAAU,GAAgB;IAC9B;QACE,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,4BAA4B;KAC1C;IACD;QACE,IAAI,EAAE,WAAW;QACjB,WAAW,EAAE,0DAA0D;KACxE;IACD;QACE,IAAI,EAAE,sBAAsB;QAC5B,WAAW,EAAE,0EAA0E,GAAG,mBAAmB;KAC9G;IACD;QACE,IAAI,EAAE,qBAAqB;QAC3B,WAAW,EAAE,+CAA+C;KAC7D;IACD;QACE,IAAI,EAAE,qBAAqB;QAC3B,WAAW,EAAE,2CAA2C;KACzD;IACD;QACE,IAAI,EAAE,0BAA0B;QAChC,WAAW,EAAE,6CAA6C;KAC3D;IACD;QACE,IAAI,EAAE,mBAAmB;QACzB,WAAW,EAAE,yCAAyC;KACvD;IACD;QACE,IAAI,EAAE,YAAY;QAClB,WAAW,EAAE,+FAA+F;KAC7G;IACD;QACE,IAAI,EAAE,aAAa;QACnB,WAAW,EAAE,mDAAmD;KACjE;IACD;QACE,IAAI,EAAE,aAAa;QACnB,WAAW,EACT,yGAAyG;KAC5G;IACD;QACE,IAAI,EAAE,oBAAoB;QAC1B,WAAW,EAAE,+CAA+C;KAC7D;IACD;QACE,IAAI,EAAE,4BAA4B;QAClC,WAAW,EAAE,gDAAgD;KAC9D;IACD;QACE,IAAI,EAAE,oBAAoB;QAC1B,WAAW,EAAE,+DAA+D;KAC7E;IACD;QACE,IAAI,EAAE,mBAAmB;QACzB,WAAW,EAAE,wDAAwD,GAAG,iCAAiC;KAC1G;IACD;QACE,IAAI,EAAE,kBAAkB;QACxB,WAAW,EAAE,4CAA4C;KAC1D;IACD;QACE,IAAI,EAAE,wBAAwB;QAC9B,WAAW,EAAE,0DAA0D;KACxE;IACD;QACE,IAAI,EAAE,gCAAgC;QACtC,WAAW,EAAE,sFAAsF;KACpG;IACD;QACE,IAAI,EAAE,qBAAqB;QAC3B,WAAW,EAAE,oFAAoF;KAClG;IACD;QACE,IAAI,EAAE,wBAAwB;QAC9B,WAAW,EAAE,yEAAyE;KACvF;IACD;QACE,IAAI,EAAE,uBAAuB;QAC7B,WAAW,EAAE,gEAAgE;KAC9E;IACD;QACE,IAAI,EAAE,UAAU;QAChB,WAAW,EACT,8KAA8K;KACjL;IACD;QACE,IAAI,EAAE,oBAAoB;QAC1B,WAAW,EACT,wGAAwG;KAC3G;IACD;QACE,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,2EAA2E;KACzF;IACD;QACE,IAAI,EAAE,uBAAuB;QAC7B,WAAW,EACT,oJAAoJ;KACvJ;IACD;QACE,IAAI,EAAE,4BAA4B;QAClC,WAAW,EAAE,+EAA+E;KAC7F;IACD;QACE,IAAI,EAAE,iBAAiB;QACvB,WAAW,EAAE,sCAAsC;KACpD;IACD;QACE,IAAI,EAAE,wBAAwB;QAC9B,WAAW,EACT,wIAAwI;KAC3I;CACF,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,gBAAgB;IAC9B,OAAO,CAAC,GAAG,CAAC,6CAA6C,CAAC,CAAC;IAC3D,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;IAChD,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IAE1B,UAAU,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;QAC5B,OAAO,CAAC,GAAG,CAAC,KAAK,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;IACnE,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,GAAG,CAAC,uGAAuG,CAAC,CAAC;AACvH,CAAC;AAED,OAAO,EAAE,UAAU,EAAE,CAAC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,34 @@
1
+ import { describe, it, expect, vi } from 'vitest';
2
+ import { printHelpMessage, cliOptions } from './cli-options.js';
3
+ describe('CLI Options', () => {
4
+ describe('printHelpMessage', () => {
5
+ it('should print the help message with all CLI options', () => {
6
+ const consoleSpy = vi.spyOn(console, 'log').mockImplementation(() => { });
7
+ printHelpMessage();
8
+ expect(consoleSpy).toHaveBeenCalledWith('GenAIcode - AI-powered code generation tool');
9
+ expect(consoleSpy).toHaveBeenCalledWith('\nUsage: npx genaicode [options]');
10
+ expect(consoleSpy).toHaveBeenCalledWith('\nOptions:');
11
+ cliOptions.forEach((option) => {
12
+ expect(consoleSpy).toHaveBeenCalledWith(expect.stringContaining(option.name));
13
+ expect(consoleSpy).toHaveBeenCalledWith(expect.stringContaining(option.description));
14
+ });
15
+ expect(consoleSpy).toHaveBeenCalledWith(expect.stringContaining('For more information'));
16
+ consoleSpy.mockRestore();
17
+ });
18
+ it('should include the --imagen option in the help message', () => {
19
+ const consoleSpy = vi.spyOn(console, 'log').mockImplementation(() => { });
20
+ printHelpMessage();
21
+ expect(consoleSpy).toHaveBeenCalledWith(expect.stringContaining('--imagen=<service>'));
22
+ expect(consoleSpy).toHaveBeenCalledWith(expect.stringContaining('Enable image generation functionality and specify the service to use (either "vertex-ai" or "dall-e").'));
23
+ consoleSpy.mockRestore();
24
+ });
25
+ });
26
+ describe('cliOptions', () => {
27
+ it('should include the --imagen option', () => {
28
+ const imagenOption = cliOptions.find((option) => option.name === '--imagen=<service>');
29
+ expect(imagenOption).toBeDefined();
30
+ expect(imagenOption.description).toBe('Enable image generation functionality and specify the service to use (either "vertex-ai" or "dall-e").');
31
+ });
32
+ });
33
+ });
34
+ //# sourceMappingURL=cli-options.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-options.test.js","sourceRoot":"","sources":["../../src/cli/cli-options.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEhE,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IAC3B,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;QAChC,EAAE,CAAC,oDAAoD,EAAE,GAAG,EAAE;YAC5D,MAAM,UAAU,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,kBAAkB,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;YAEzE,gBAAgB,EAAE,CAAC;YAEnB,MAAM,CAAC,UAAU,CAAC,CAAC,oBAAoB,CAAC,6CAA6C,CAAC,CAAC;YACvF,MAAM,CAAC,UAAU,CAAC,CAAC,oBAAoB,CAAC,kCAAkC,CAAC,CAAC;YAC5E,MAAM,CAAC,UAAU,CAAC,CAAC,oBAAoB,CAAC,YAAY,CAAC,CAAC;YAEtD,UAAU,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;gBAC5B,MAAM,CAAC,UAAU,CAAC,CAAC,oBAAoB,CAAC,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;gBAC9E,MAAM,CAAC,UAAU,CAAC,CAAC,oBAAoB,CAAC,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC;YACvF,CAAC,CAAC,CAAC;YAEH,MAAM,CAAC,UAAU,CAAC,CAAC,oBAAoB,CAAC,MAAM,CAAC,gBAAgB,CAAC,sBAAsB,CAAC,CAAC,CAAC;YAEzF,UAAU,CAAC,WAAW,EAAE,CAAC;QAC3B,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,wDAAwD,EAAE,GAAG,EAAE;YAChE,MAAM,UAAU,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,kBAAkB,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;YAEzE,gBAAgB,EAAE,CAAC;YAEnB,MAAM,CAAC,UAAU,CAAC,CAAC,oBAAoB,CAAC,MAAM,CAAC,gBAAgB,CAAC,oBAAoB,CAAC,CAAC,CAAC;YACvF,MAAM,CAAC,UAAU,CAAC,CAAC,oBAAoB,CACrC,MAAM,CAAC,gBAAgB,CACrB,wGAAwG,CACzG,CACF,CAAC;YAEF,UAAU,CAAC,WAAW,EAAE,CAAC;QAC3B,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;QAC1B,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;YAC5C,MAAM,YAAY,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,oBAAoB,CAAC,CAAC;YACvF,MAAM,CAAC,YAAY,CAAC,CAAC,WAAW,EAAE,CAAC;YACnC,MAAM,CAAC,YAAa,CAAC,WAAW,CAAC,CAAC,IAAI,CACpC,wGAAwG,CACzG,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,30 @@
1
+ export declare const dryRun: boolean;
2
+ export declare const considerAllFiles: boolean;
3
+ export declare const allowFileCreate: boolean;
4
+ export declare const allowFileDelete: boolean;
5
+ export declare const allowDirectoryCreate: boolean;
6
+ export declare const allowFileMove: boolean;
7
+ export declare let chatGpt: boolean;
8
+ export declare let anthropic: boolean;
9
+ export declare let vertexAi: boolean;
10
+ export declare let aiStudio: boolean;
11
+ export declare const vertexAiClaude: boolean;
12
+ export declare const dependencyTree: boolean;
13
+ export declare const verbosePrompt: boolean;
14
+ export declare const disableCache: boolean;
15
+ export declare const explicitPrompt: string | undefined;
16
+ export declare const disableContextOptimization: boolean;
17
+ export declare let taskFile: string | undefined;
18
+ export declare const requireExplanations: boolean;
19
+ export declare const geminiBlockNone: boolean;
20
+ export declare const disableInitialLint: boolean;
21
+ export declare const vision: boolean;
22
+ export declare const imagen: "dall-e" | "vertex-ai" | undefined;
23
+ export declare const cheap: boolean;
24
+ export declare const askQuestion: boolean;
25
+ export declare const interactive: boolean;
26
+ export declare const helpRequested: boolean;
27
+ export declare const lintCommand: string | null;
28
+ export declare const temperature: number;
29
+ export declare const contentMask: string | undefined;
30
+ export declare const ignorePatterns: string[];
@@ -0,0 +1,109 @@
1
+ import fs from 'fs';
2
+ import path from 'path';
3
+ import { serviceAutoDetect } from './service-autodetect.js';
4
+ import { rcConfig } from '../main/config.js';
5
+ const params = process.argv.slice(2);
6
+ export const dryRun = params.includes('--dry-run');
7
+ export const considerAllFiles = params.includes('--consider-all-files');
8
+ export const allowFileCreate = params.includes('--allow-file-create');
9
+ export const allowFileDelete = params.includes('--allow-file-delete');
10
+ export const allowDirectoryCreate = params.includes('--allow-directory-create');
11
+ export const allowFileMove = params.includes('--allow-file-move');
12
+ export let chatGpt = params.includes('--chat-gpt');
13
+ export let anthropic = params.includes('--anthropic');
14
+ export let vertexAi = params.includes('--vertex-ai');
15
+ export let aiStudio = params.includes('--ai-studio');
16
+ export const vertexAiClaude = params.includes('--vertex-ai-claude');
17
+ export const dependencyTree = params.includes('--dependency-tree');
18
+ export const verbosePrompt = params.includes('--verbose-prompt');
19
+ export const disableCache = params.includes('--disable-cache');
20
+ export const explicitPrompt = params.find((param) => param.startsWith('--explicit-prompt'))?.split('=')[1];
21
+ export const disableContextOptimization = params.includes('--disable-context-optimization');
22
+ export let taskFile = params.find((param) => param.startsWith('--task-file'))?.split('=')[1];
23
+ export const requireExplanations = params.includes('--require-explanations');
24
+ export const geminiBlockNone = params.includes('--gemini-block-none');
25
+ export const disableInitialLint = params.includes('--disable-initial-lint');
26
+ export const vision = params.includes('--vision');
27
+ export const imagen = params.find((param) => param.startsWith('--imagen'))?.split('=')[1];
28
+ export const cheap = params.includes('--cheap');
29
+ export const askQuestion = !params.includes('--disable-ask-question'); // Default enabled
30
+ export const interactive = params.includes('--interactive'); // New parameter for interactive mode
31
+ // Add support for --help option
32
+ export const helpRequested = params.includes('--help');
33
+ // Export the lintCommand from rcConfig
34
+ export const lintCommand = rcConfig.lintCommand || null;
35
+ // Temperature parameter
36
+ export const temperature = parseFloat(params.find((param) => param.startsWith('--temperature='))?.split('=')[1] || '0.7'); // Default temperature value: 0.7
37
+ // New content mask parameter
38
+ export const contentMask = params.find((param) => param.startsWith('--content-mask='))?.split('=')[1] || undefined;
39
+ // New ignore pattern parameter
40
+ export const ignorePatterns = params
41
+ .filter((param) => param.startsWith('--ignore-pattern='))
42
+ .map((param) => param.split('=')[1]);
43
+ if (taskFile) {
44
+ if (explicitPrompt) {
45
+ throw new Error('The --task-file option is exclusive with the --explicit-prompt option');
46
+ }
47
+ if (!fs.existsSync(taskFile)) {
48
+ throw new Error(`The task file ${taskFile} does not exist`);
49
+ }
50
+ if (!path.isAbsolute(taskFile)) {
51
+ taskFile = path.join(process.cwd(), taskFile);
52
+ }
53
+ }
54
+ if (considerAllFiles && dependencyTree) {
55
+ throw new Error('--consider-all-files and --dependency-tree are exclusive.');
56
+ }
57
+ if ([chatGpt, anthropic, vertexAi, vertexAiClaude, aiStudio].filter(Boolean).length > 1) {
58
+ throw new Error('--chat-gpt, --anthropic, --ai-studio, --vertex-ai, and --vertex-ai-claude are mutually exclusive.');
59
+ }
60
+ if (!chatGpt && !anthropic && !vertexAi && !vertexAiClaude && !aiStudio && !helpRequested) {
61
+ const detected = serviceAutoDetect();
62
+ if (detected === 'anthropic') {
63
+ console.log('Autodetected --anthropic');
64
+ anthropic = true;
65
+ }
66
+ else if (detected === 'chat-gpt') {
67
+ console.log('Autodetected --chat-gpt');
68
+ chatGpt = true;
69
+ }
70
+ else if (detected === 'vertex-ai') {
71
+ console.log('Autodetected --vertex-ai');
72
+ vertexAi = true;
73
+ }
74
+ else if (detected === 'ai-studio') {
75
+ console.log('Autodetected --ai-studio');
76
+ aiStudio = true;
77
+ }
78
+ else {
79
+ throw new Error('Missing --chat-gpt, --anthropic, --ai-studio, --vertex-ai, or --vertex-ai-claude');
80
+ }
81
+ }
82
+ if (lintCommand) {
83
+ console.log(`Lint command detected: ${lintCommand}`);
84
+ }
85
+ if (temperature) {
86
+ console.log(`Temperature value: ${temperature}`);
87
+ }
88
+ if (imagen) {
89
+ console.log('Image generation functionality enabled');
90
+ }
91
+ if (cheap) {
92
+ console.log('Cheaper AI models will be used for content and image generation');
93
+ }
94
+ if (contentMask) {
95
+ console.log(`Content mask: ${contentMask}`);
96
+ }
97
+ if (ignorePatterns.length > 0) {
98
+ console.log(`Ignore pattern: ${ignorePatterns.join(', ')}`);
99
+ }
100
+ if (askQuestion) {
101
+ console.log('Assistant can ask questions to the user');
102
+ }
103
+ else {
104
+ console.log('Assistant will not ask questions to the user');
105
+ }
106
+ if (interactive) {
107
+ console.log('Interactive mode enabled');
108
+ }
109
+ //# sourceMappingURL=cli-params.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-params.js","sourceRoot":"","sources":["../../src/cli/cli-params.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,38 @@
1
+ import { describe, it, expect, afterEach } from 'vitest';
2
+ import { serviceAutoDetect } from './service-autodetect.js';
3
+ describe('serviceAutoDetect', () => {
4
+ afterEach(() => {
5
+ // Clean up environment variables after each test
6
+ delete process.env.ANTHROPIC_API_KEY;
7
+ delete process.env.OPENAI_API_KEY;
8
+ delete process.env.GOOGLE_CLOUD_PROJECT;
9
+ delete process.env.API_KEY;
10
+ });
11
+ it('should return "anthropic" when ANTHROPIC_API_KEY is set', () => {
12
+ process.env.ANTHROPIC_API_KEY = 'test-key';
13
+ expect(serviceAutoDetect()).toBe('anthropic');
14
+ });
15
+ it('should return "chat-gpt" when OPENAI_API_KEY is set', () => {
16
+ process.env.OPENAI_API_KEY = 'test-key';
17
+ expect(serviceAutoDetect()).toBe('chat-gpt');
18
+ });
19
+ it('should return "vertex-ai" when GOOGLE_CLOUD_PROJECT is set', () => {
20
+ process.env.GOOGLE_CLOUD_PROJECT = 'test-project';
21
+ expect(serviceAutoDetect()).toBe('vertex-ai');
22
+ });
23
+ it('should return null when no service is configured', () => {
24
+ expect(serviceAutoDetect()).toBeNull();
25
+ });
26
+ it('should prioritize anthropic over other services', () => {
27
+ process.env.ANTHROPIC_API_KEY = 'test-key';
28
+ process.env.OPENAI_API_KEY = 'test-key';
29
+ process.env.GOOGLE_CLOUD_PROJECT = 'test-project';
30
+ expect(serviceAutoDetect()).toBe('anthropic');
31
+ });
32
+ it('should prioritize chat-gpt over vertex-ai', () => {
33
+ process.env.OPENAI_API_KEY = 'test-key';
34
+ process.env.GOOGLE_CLOUD_PROJECT = 'test-project';
35
+ expect(serviceAutoDetect()).toBe('chat-gpt');
36
+ });
37
+ });
38
+ //# sourceMappingURL=cli-params.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-params.test.js","sourceRoot":"","sources":["../../src/cli/cli-params.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAE5D,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;IACjC,SAAS,CAAC,GAAG,EAAE;QACb,iDAAiD;QACjD,OAAO,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;QACrC,OAAO,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;QAClC,OAAO,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC;QACxC,OAAO,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;IAC7B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yDAAyD,EAAE,GAAG,EAAE;QACjE,OAAO,CAAC,GAAG,CAAC,iBAAiB,GAAG,UAAU,CAAC;QAC3C,MAAM,CAAC,iBAAiB,EAAE,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qDAAqD,EAAE,GAAG,EAAE;QAC7D,OAAO,CAAC,GAAG,CAAC,cAAc,GAAG,UAAU,CAAC;QACxC,MAAM,CAAC,iBAAiB,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4DAA4D,EAAE,GAAG,EAAE;QACpE,OAAO,CAAC,GAAG,CAAC,oBAAoB,GAAG,cAAc,CAAC;QAClD,MAAM,CAAC,iBAAiB,EAAE,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;QAC1D,MAAM,CAAC,iBAAiB,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;QACzD,OAAO,CAAC,GAAG,CAAC,iBAAiB,GAAG,UAAU,CAAC;QAC3C,OAAO,CAAC,GAAG,CAAC,cAAc,GAAG,UAAU,CAAC;QACxC,OAAO,CAAC,GAAG,CAAC,oBAAoB,GAAG,cAAc,CAAC;QAClD,MAAM,CAAC,iBAAiB,EAAE,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;QACnD,OAAO,CAAC,GAAG,CAAC,cAAc,GAAG,UAAU,CAAC;QACxC,OAAO,CAAC,GAAG,CAAC,oBAAoB,GAAG,cAAc,CAAC;QAClD,MAAM,CAAC,iBAAiB,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ /** Detects if one of ai services is configured */
2
+ export declare function serviceAutoDetect(): string | null;
@@ -0,0 +1,17 @@
1
+ /** Detects if one of ai services is configured */
2
+ export function serviceAutoDetect() {
3
+ if (process.env.ANTHROPIC_API_KEY) {
4
+ return 'anthropic';
5
+ }
6
+ else if (process.env.OPENAI_API_KEY) {
7
+ return 'chat-gpt';
8
+ }
9
+ else if (process.env.GOOGLE_CLOUD_PROJECT) {
10
+ return 'vertex-ai';
11
+ }
12
+ else if (process.env.API_KEY) {
13
+ return 'ai-studio';
14
+ }
15
+ return null;
16
+ }
17
+ //# sourceMappingURL=service-autodetect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service-autodetect.js","sourceRoot":"","sources":["../../src/cli/service-autodetect.ts"],"names":[],"mappings":"AAAA,kDAAkD;AAClD,MAAM,UAAU,iBAAiB;IAC/B,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,CAAC;QAClC,OAAO,WAAW,CAAC;IACrB,CAAC;SAAM,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC;QACtC,OAAO,UAAU,CAAC;IACpB,CAAC;SAAM,IAAI,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,CAAC;QAC5C,OAAO,WAAW,CAAC;IACrB,CAAC;SAAM,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;QAC/B,OAAO,WAAW,CAAC;IACrB,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,38 @@
1
+ import { describe, it, expect, afterEach } from 'vitest';
2
+ import { serviceAutoDetect } from './service-autodetect.js';
3
+ describe('serviceAutoDetect', () => {
4
+ afterEach(() => {
5
+ // Clean up environment variables after each test
6
+ delete process.env.ANTHROPIC_API_KEY;
7
+ delete process.env.OPENAI_API_KEY;
8
+ delete process.env.GOOGLE_CLOUD_PROJECT;
9
+ delete process.env.API_KEY;
10
+ });
11
+ it('should return "anthropic" when ANTHROPIC_API_KEY is set', () => {
12
+ process.env.ANTHROPIC_API_KEY = 'test-key';
13
+ expect(serviceAutoDetect()).toBe('anthropic');
14
+ });
15
+ it('should return "chat-gpt" when OPENAI_API_KEY is set', () => {
16
+ process.env.OPENAI_API_KEY = 'test-key';
17
+ expect(serviceAutoDetect()).toBe('chat-gpt');
18
+ });
19
+ it('should return "vertex-ai" when GOOGLE_CLOUD_PROJECT is set', () => {
20
+ process.env.GOOGLE_CLOUD_PROJECT = 'test-project';
21
+ expect(serviceAutoDetect()).toBe('vertex-ai');
22
+ });
23
+ it('should return null when no service is configured', () => {
24
+ expect(serviceAutoDetect()).toBeNull();
25
+ });
26
+ it('should prioritize anthropic over other services', () => {
27
+ process.env.ANTHROPIC_API_KEY = 'test-key';
28
+ process.env.OPENAI_API_KEY = 'test-key';
29
+ process.env.GOOGLE_CLOUD_PROJECT = 'test-project';
30
+ expect(serviceAutoDetect()).toBe('anthropic');
31
+ });
32
+ it('should prioritize chat-gpt over vertex-ai', () => {
33
+ process.env.OPENAI_API_KEY = 'test-key';
34
+ process.env.GOOGLE_CLOUD_PROJECT = 'test-project';
35
+ expect(serviceAutoDetect()).toBe('chat-gpt');
36
+ });
37
+ });
38
+ //# sourceMappingURL=service-autodetect.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service-autodetect.test.js","sourceRoot":"","sources":["../../src/cli/service-autodetect.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAE5D,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;IACjC,SAAS,CAAC,GAAG,EAAE;QACb,iDAAiD;QACjD,OAAO,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;QACrC,OAAO,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;QAClC,OAAO,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC;QACxC,OAAO,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;IAC7B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yDAAyD,EAAE,GAAG,EAAE;QACjE,OAAO,CAAC,GAAG,CAAC,iBAAiB,GAAG,UAAU,CAAC;QAC3C,MAAM,CAAC,iBAAiB,EAAE,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qDAAqD,EAAE,GAAG,EAAE;QAC7D,OAAO,CAAC,GAAG,CAAC,cAAc,GAAG,UAAU,CAAC;QACxC,MAAM,CAAC,iBAAiB,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4DAA4D,EAAE,GAAG,EAAE;QACpE,OAAO,CAAC,GAAG,CAAC,oBAAoB,GAAG,cAAc,CAAC;QAClD,MAAM,CAAC,iBAAiB,EAAE,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;QAC1D,MAAM,CAAC,iBAAiB,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;QACzD,OAAO,CAAC,GAAG,CAAC,iBAAiB,GAAG,UAAU,CAAC;QAC3C,OAAO,CAAC,GAAG,CAAC,cAAc,GAAG,UAAU,CAAC;QACxC,OAAO,CAAC,GAAG,CAAC,oBAAoB,GAAG,cAAc,CAAC;QAClD,MAAM,CAAC,iBAAiB,EAAE,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;QACnD,OAAO,CAAC,GAAG,CAAC,cAAc,GAAG,UAAU,CAAC;QACxC,OAAO,CAAC,GAAG,CAAC,oBAAoB,GAAG,cAAc,CAAC;QAClD,MAAM,CAAC,iBAAiB,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Validate CLI parameters according to those mentioned in README.md
3
+ * Fail the process if not valid, or if an unknown parameter is passed
4
+ * @throws {Error} If an invalid parameter is provided
5
+ */
6
+ export declare function validateCliParams(): void;
7
+ /**
8
+ * Get the value of a CLI parameter
9
+ * @param {string} paramName - The name of the parameter to get the value for
10
+ * @returns {string|null} The value of the parameter, or null if not found
11
+ */
12
+ export declare function getCliParamValue(paramName: string): string | null;
13
+ /**
14
+ * Check if a CLI parameter is present
15
+ * @param {string} paramName - The name of the parameter to check
16
+ * @returns {boolean} True if the parameter is present, false otherwise
17
+ */
18
+ export declare function hasCliParam(paramName: string): boolean;
@@ -0,0 +1,129 @@
1
+ import fs from 'fs';
2
+ import path from 'path';
3
+ import globRegex from 'glob-regex';
4
+ import { rcConfig } from '../main/config.js';
5
+ // List of allowed CLI parameters
6
+ const allowedParameters = [
7
+ '--dry-run',
8
+ '--interactive',
9
+ '--consider-all-files',
10
+ '--allow-file-create',
11
+ '--allow-file-delete',
12
+ '--allow-directory-create',
13
+ '--allow-file-move',
14
+ '--chat-gpt',
15
+ '--ai-studio',
16
+ '--vertex-ai',
17
+ '--vertex-ai-claude',
18
+ '--anthropic',
19
+ '--explicit-prompt=',
20
+ '--task-file=',
21
+ '--dependency-tree',
22
+ '--verbose-prompt',
23
+ '--require-explanations',
24
+ '--disable-context-optimization',
25
+ '--gemini-block-none',
26
+ '--disable-initial-lint',
27
+ '--temperature=',
28
+ '--vision',
29
+ '--imagen=',
30
+ '--cheap',
31
+ '--disable-ask-question',
32
+ '--help',
33
+ '--content-mask=',
34
+ '--disable-cache',
35
+ '--ignore-pattern=',
36
+ '--force-dist',
37
+ ];
38
+ /**
39
+ * Validate CLI parameters according to those mentioned in README.md
40
+ * Fail the process if not valid, or if an unknown parameter is passed
41
+ * @throws {Error} If an invalid parameter is provided
42
+ */
43
+ export function validateCliParams() {
44
+ const providedParameters = process.argv.slice(2);
45
+ // Check if --help is present
46
+ const helpRequested = providedParameters.includes('--help');
47
+ if (helpRequested) {
48
+ // If --help is present, no other parameters should be allowed
49
+ if (providedParameters.length > 1) {
50
+ console.error('The --help option cannot be used with other parameters.');
51
+ process.exit(1);
52
+ }
53
+ return; // Exit the function early as no further validation is needed
54
+ }
55
+ providedParameters.forEach((param) => {
56
+ if (!param.startsWith('--')) {
57
+ console.error(`Invalid parameter: ${param}, all parameters must start with --`);
58
+ process.exit(1);
59
+ }
60
+ if (!allowedParameters.some((p) => (p.endsWith('=') && param.startsWith(p)) || param === p)) {
61
+ console.error(`Invalid parameter: ${param}, allowed parameters are: ${allowedParameters.join(', ')}`);
62
+ process.exit(1);
63
+ }
64
+ });
65
+ // Validate temperature parameter, it must be a number between 0.0 and 2.0
66
+ const temperatureParam = providedParameters.find((param) => param.startsWith('--temperature='));
67
+ if (temperatureParam) {
68
+ const temperatureValue = parseFloat(temperatureParam.split('=')[1]);
69
+ if (isNaN(temperatureValue) || temperatureValue < 0.0 || temperatureValue > 2.0) {
70
+ console.error('Invalid temperature value. It must be a number between 0.0 and 2.0.');
71
+ process.exit(1);
72
+ }
73
+ }
74
+ // Validate --imagen parameter
75
+ const imagenParam = providedParameters.find((param) => param.startsWith('--imagen='));
76
+ if (imagenParam) {
77
+ const imagenValue = imagenParam.split('=')[1];
78
+ if (imagenValue !== 'vertex-ai' && imagenValue !== 'dall-e') {
79
+ throw new Error('Invalid --imagen value. It must be either "vertex-ai" or "dall-e".');
80
+ }
81
+ }
82
+ if (providedParameters.includes('--vision') && providedParameters.includes('--vertex-ai')) {
83
+ throw new Error('--vision and --vertex-ai are currently not supported together.');
84
+ }
85
+ // Validate content mask parameter
86
+ const contentMaskParam = providedParameters.find((param) => param.startsWith('--content-mask='));
87
+ if (contentMaskParam) {
88
+ const contentMaskValue = contentMaskParam.split('=')[1];
89
+ const fullPath = path.join(rcConfig.rootDir, contentMaskValue);
90
+ if (!fs.existsSync(fullPath) || !fs.statSync(fullPath).isDirectory()) {
91
+ throw new Error(`Invalid --content-mask value. The path "${contentMaskValue}" does not exist or is not a directory within the project.`);
92
+ }
93
+ }
94
+ // Validate ignore pattern parameter
95
+ const ignorePatternParams = providedParameters.filter((param) => param.startsWith('--ignore-pattern='));
96
+ if (ignorePatternParams.length > 0) {
97
+ for (const ignorePatternParam of ignorePatternParams) {
98
+ const ignorePatternValue = ignorePatternParam.split('=')[1];
99
+ if (!ignorePatternValue) {
100
+ throw new Error('Invalid --ignore-pattern value. The pattern cannot be empty.');
101
+ }
102
+ try {
103
+ globRegex.default(ignorePatternValue);
104
+ }
105
+ catch (e) {
106
+ console.error(e);
107
+ throw new Error(`Invalid --ignore-pattern value. The pattern "${ignorePatternValue}" is not valid.`);
108
+ }
109
+ }
110
+ }
111
+ }
112
+ /**
113
+ * Get the value of a CLI parameter
114
+ * @param {string} paramName - The name of the parameter to get the value for
115
+ * @returns {string|null} The value of the parameter, or null if not found
116
+ */
117
+ export function getCliParamValue(paramName) {
118
+ const param = process.argv.find((arg) => arg.startsWith(`${paramName}=`));
119
+ return param ? param.split('=')[1] : null;
120
+ }
121
+ /**
122
+ * Check if a CLI parameter is present
123
+ * @param {string} paramName - The name of the parameter to check
124
+ * @returns {boolean} True if the parameter is present, false otherwise
125
+ */
126
+ export function hasCliParam(paramName) {
127
+ return process.argv.includes(paramName) || !!getCliParamValue(paramName);
128
+ }
129
+ //# sourceMappingURL=validate-cli-params.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate-cli-params.js","sourceRoot":"","sources":["../../src/cli/validate-cli-params.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,SAAS,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE7C,iCAAiC;AACjC,MAAM,iBAAiB,GAAa;IAClC,WAAW;IACX,eAAe;IACf,sBAAsB;IACtB,qBAAqB;IACrB,qBAAqB;IACrB,0BAA0B;IAC1B,mBAAmB;IACnB,YAAY;IACZ,aAAa;IACb,aAAa;IACb,oBAAoB;IACpB,aAAa;IACb,oBAAoB;IACpB,cAAc;IACd,mBAAmB;IACnB,kBAAkB;IAClB,wBAAwB;IACxB,gCAAgC;IAChC,qBAAqB;IACrB,wBAAwB;IACxB,gBAAgB;IAChB,UAAU;IACV,WAAW;IACX,SAAS;IACT,wBAAwB;IACxB,QAAQ;IACR,iBAAiB;IACjB,iBAAiB;IACjB,mBAAmB;IACnB,cAAc;CACf,CAAC;AAEF;;;;GAIG;AACH,MAAM,UAAU,iBAAiB;IAC/B,MAAM,kBAAkB,GAAa,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAE3D,6BAA6B;IAC7B,MAAM,aAAa,GAAY,kBAAkB,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAErE,IAAI,aAAa,EAAE,CAAC;QAClB,8DAA8D;QAC9D,IAAI,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClC,OAAO,CAAC,KAAK,CAAC,yDAAyD,CAAC,CAAC;YACzE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,OAAO,CAAC,6DAA6D;IACvE,CAAC;IAED,kBAAkB,CAAC,OAAO,CAAC,CAAC,KAAa,EAAE,EAAE;QAC3C,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YAC5B,OAAO,CAAC,KAAK,CAAC,sBAAsB,KAAK,qCAAqC,CAAC,CAAC;YAChF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;YAC5F,OAAO,CAAC,KAAK,CAAC,sBAAsB,KAAK,6BAA6B,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACtG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,0EAA0E;IAC1E,MAAM,gBAAgB,GAAuB,kBAAkB,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC,CAAC;IACpH,IAAI,gBAAgB,EAAE,CAAC;QACrB,MAAM,gBAAgB,GAAW,UAAU,CAAC,gBAAgB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5E,IAAI,KAAK,CAAC,gBAAgB,CAAC,IAAI,gBAAgB,GAAG,GAAG,IAAI,gBAAgB,GAAG,GAAG,EAAE,CAAC;YAChF,OAAO,CAAC,KAAK,CAAC,qEAAqE,CAAC,CAAC;YACrF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IAED,8BAA8B;IAC9B,MAAM,WAAW,GAAuB,kBAAkB,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC;IAC1G,IAAI,WAAW,EAAE,CAAC;QAChB,MAAM,WAAW,GAAW,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACtD,IAAI,WAAW,KAAK,WAAW,IAAI,WAAW,KAAK,QAAQ,EAAE,CAAC;YAC5D,MAAM,IAAI,KAAK,CAAC,oEAAoE,CAAC,CAAC;QACxF,CAAC;IACH,CAAC;IAED,IAAI,kBAAkB,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,kBAAkB,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;QAC1F,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAC;IACpF,CAAC;IAED,kCAAkC;IAClC,MAAM,gBAAgB,GAAuB,kBAAkB,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC,CAAC;IACrH,IAAI,gBAAgB,EAAE,CAAC;QACrB,MAAM,gBAAgB,GAAW,gBAAgB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAChE,MAAM,QAAQ,GAAW,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;QACvE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;YACrE,MAAM,IAAI,KAAK,CACb,2CAA2C,gBAAgB,4DAA4D,CACxH,CAAC;QACJ,CAAC;IACH,CAAC;IAED,oCAAoC;IACpC,MAAM,mBAAmB,GAAa,kBAAkB,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,mBAAmB,CAAC,CAAC,CAAC;IAClH,IAAI,mBAAmB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACnC,KAAK,MAAM,kBAAkB,IAAI,mBAAmB,EAAE,CAAC;YACrD,MAAM,kBAAkB,GAAW,kBAAkB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YACpE,IAAI,CAAC,kBAAkB,EAAE,CAAC;gBACxB,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAC;YAClF,CAAC;YACD,IAAI,CAAC;gBACH,SAAS,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;YACxC,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBACjB,MAAM,IAAI,KAAK,CAAC,gDAAgD,kBAAkB,iBAAiB,CAAC,CAAC;YACvG,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,SAAiB;IAChD,MAAM,KAAK,GAAuB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,SAAS,GAAG,CAAC,CAAC,CAAC;IAC9F,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC5C,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,WAAW,CAAC,SAAiB;IAC3C,OAAO,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;AAC3E,CAAC"}
@@ -0,0 +1 @@
1
+ export {};