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,197 @@
1
+ import fs from 'fs';
2
+ import path from 'path';
3
+ import assert from 'node:assert';
4
+ import * as diff from 'diff';
5
+ import { getSourceFiles } from './find-files.js';
6
+ import { isAncestorDirectory } from './file-utils.js';
7
+ import { rcConfig } from '../main/config.js';
8
+ import { getTempBuffer } from './temp-buffer.js';
9
+ import { imglyRemoveBackground } from '../images/imgly-remove-background.js';
10
+ import { splitImage } from '../images/split-image.js';
11
+ import { resizeImageFile } from '../images/resize-image.js';
12
+ /**
13
+ * @param functionCalls Result of the code generation, a map of file paths to new content
14
+ */
15
+ export async function updateFiles(functionCalls, options) {
16
+ const { allowDirectoryCreate, allowFileCreate, allowFileDelete, allowFileMove } = options;
17
+ for (const { name, args } of functionCalls) {
18
+ let { filePath, newContent, source, destination, inputFilePath, outputFilePath } = args;
19
+ const { patch, parts, size } = args;
20
+ // Check if filePath is absolute, if not use rootDir as baseline
21
+ if (name !== 'moveFile' && name !== 'imglyRemoveBackground' && name !== 'splitImage') {
22
+ assert(filePath);
23
+ filePath = path.isAbsolute(filePath) ? filePath : path.join(rcConfig.rootDir, filePath);
24
+ }
25
+ else if (name === 'moveFile') {
26
+ assert(source);
27
+ source = path.isAbsolute(source) ? source : path.join(rcConfig.rootDir, source);
28
+ assert(destination);
29
+ destination = path.isAbsolute(destination) ? destination : path.join(rcConfig.rootDir, destination);
30
+ }
31
+ else if (name === 'imglyRemoveBackground' || name === 'splitImage') {
32
+ assert(inputFilePath);
33
+ inputFilePath = path.isAbsolute(inputFilePath) ? inputFilePath : path.join(rcConfig.rootDir, inputFilePath);
34
+ if (name === 'imglyRemoveBackground') {
35
+ assert(outputFilePath);
36
+ outputFilePath = path.isAbsolute(outputFilePath) ? outputFilePath : path.join(rcConfig.rootDir, outputFilePath);
37
+ }
38
+ else if (name === 'splitImage') {
39
+ parts?.forEach((part) => (part.outputFilePath = part.outputFilePath
40
+ ? path.isAbsolute(part.outputFilePath)
41
+ ? part.outputFilePath
42
+ : path.join(rcConfig.rootDir, part.outputFilePath)
43
+ : undefined));
44
+ }
45
+ }
46
+ // ignore files which are not located inside project directory (sourceFiles)
47
+ if ((name !== 'moveFile' && name !== 'imglyRemoveBackground' && name !== 'splitImage' && !isProjectPath(filePath)) ||
48
+ (name === 'moveFile' && (!isProjectPath(source) || !isProjectPath(destination))) ||
49
+ (name === 'imglyRemoveBackground' && (!isProjectPath(inputFilePath) || !isProjectPath(outputFilePath))) ||
50
+ (name === 'splitImage' &&
51
+ (!isProjectPath(inputFilePath) ||
52
+ parts.some((part) => part.outputFilePath && !isProjectPath(part.outputFilePath))))) {
53
+ console.log(`Skipping file: ${filePath || source || inputFilePath}`);
54
+ throw new Error(`File ${filePath || source || inputFilePath} is not located inside project directory, something is wrong?`);
55
+ }
56
+ if (name === 'deleteFile') {
57
+ assert(filePath);
58
+ assert(allowFileDelete, 'File delete option was not enabled');
59
+ console.log(`Removing file: ${filePath}`);
60
+ fs.unlinkSync(filePath);
61
+ }
62
+ else if (name === 'createDirectory') {
63
+ assert(filePath);
64
+ assert(allowDirectoryCreate, 'Directory create option was not enabled');
65
+ console.log(`Creating directory: ${filePath}`);
66
+ fs.mkdirSync(filePath, { recursive: true });
67
+ }
68
+ else if (name === 'updateFile' || name === 'createFile' || name === 'patchFile') {
69
+ assert(filePath);
70
+ if (name === 'patchFile') {
71
+ assert(patch);
72
+ console.log(`Applying a patch: ${filePath} content`);
73
+ newContent = diff.applyPatch(fs.readFileSync(filePath, 'utf-8'), patch) || '';
74
+ assert(!!newContent, 'Patch was not successful');
75
+ }
76
+ assert(!!newContent, 'newContent must not be empty');
77
+ if (name === 'createFile') {
78
+ console.log(`Creating file: ${filePath}`);
79
+ assert(allowFileCreate, 'File create option was not enabled');
80
+ assert(!fs.existsSync(filePath), 'File already exists');
81
+ if (allowDirectoryCreate) {
82
+ fs.mkdirSync(path.dirname(filePath), { recursive: true });
83
+ }
84
+ }
85
+ else {
86
+ console.log(`Updating file: ${filePath}`);
87
+ assert(fs.existsSync(filePath), 'File does not exist');
88
+ }
89
+ fs.writeFileSync(filePath, options.aiService === 'vertex-ai' || options.aiService === 'ai-studio'
90
+ ? // Fixing a problem caused by vertex function calling. Possibly not a good fix
91
+ newContent.replace(/\\n/g, '\n').replace(/\\'/g, "'")
92
+ : newContent, 'utf-8');
93
+ }
94
+ else if (name === 'moveFile') {
95
+ console.log(`Moving file from ${source} to ${destination}`);
96
+ assert(source);
97
+ assert(destination);
98
+ assert(fs.existsSync(source), 'Source file does not exist');
99
+ assert(!fs.existsSync(destination), 'Destination file already exists');
100
+ assert(allowFileMove, 'File move option was not enabled');
101
+ if (allowDirectoryCreate) {
102
+ fs.mkdirSync(path.dirname(destination), { recursive: true });
103
+ }
104
+ fs.renameSync(source, destination);
105
+ }
106
+ else if (name === 'downloadFile') {
107
+ console.log(`Downloading image: ${filePath}`);
108
+ assert(filePath);
109
+ assert(fs.existsSync(filePath) || allowFileCreate, 'File create option was not enabled and file does not exist');
110
+ if (allowDirectoryCreate) {
111
+ fs.mkdirSync(path.dirname(filePath), { recursive: true });
112
+ }
113
+ try {
114
+ const downloadUrl = args?.downloadUrl;
115
+ assert(downloadUrl, 'image url is not empty');
116
+ if (downloadUrl.startsWith('temp://')) {
117
+ assert(getTempBuffer(downloadUrl), 'Temp buffer not present but expected');
118
+ fs.writeFileSync(filePath, getTempBuffer(downloadUrl));
119
+ }
120
+ else {
121
+ const imageResponse = await fetch(downloadUrl);
122
+ const arrayBuffer = await imageResponse.arrayBuffer();
123
+ const buffer = Buffer.from(arrayBuffer);
124
+ fs.writeFileSync(filePath, buffer);
125
+ }
126
+ console.log(`Image download and saved to: ${filePath}`);
127
+ }
128
+ catch (error) {
129
+ console.error('Failed to download image:', error);
130
+ throw error;
131
+ }
132
+ }
133
+ else if (name === 'imglyRemoveBackground') {
134
+ console.log(`Removing background from image: ${inputFilePath}`);
135
+ assert(inputFilePath);
136
+ assert(outputFilePath);
137
+ assert(fs.existsSync(inputFilePath), 'Input file does not exist');
138
+ assert(allowFileCreate || fs.existsSync(outputFilePath), 'File create option was not enabled and output file does not exist');
139
+ if (allowDirectoryCreate) {
140
+ fs.mkdirSync(path.dirname(outputFilePath), { recursive: true });
141
+ }
142
+ try {
143
+ await imglyRemoveBackground(inputFilePath, outputFilePath);
144
+ console.log(`Background removed and image saved to: ${outputFilePath}`);
145
+ }
146
+ catch (error) {
147
+ console.error('Failed to remove background', error);
148
+ throw error;
149
+ }
150
+ }
151
+ else if (name === 'splitImage') {
152
+ console.log(`Splitting image: ${inputFilePath}`, parts);
153
+ assert(inputFilePath);
154
+ assert(fs.existsSync(inputFilePath), 'Input file does not exist');
155
+ assert(Array.isArray(parts) && parts.length > 0, 'Parts array must not be empty');
156
+ for (const part of parts) {
157
+ assert(part.outputFilePath);
158
+ assert(allowFileCreate || fs.existsSync(part.outputFilePath), 'File create option was not enabled and output file does not exist');
159
+ if (allowDirectoryCreate) {
160
+ fs.mkdirSync(path.dirname(part.outputFilePath), { recursive: true });
161
+ }
162
+ }
163
+ try {
164
+ await splitImage(inputFilePath, parts.map((part) => ({ outputFilePath: part.outputFilePath, rect: part.rect })));
165
+ console.log(`Image split successfully`);
166
+ }
167
+ catch (error) {
168
+ console.error('Failed to split image', error);
169
+ throw error;
170
+ }
171
+ }
172
+ else if (name === 'resizeImage') {
173
+ console.log(`Resizing image: ${filePath}`, size);
174
+ assert(filePath);
175
+ assert(size);
176
+ assert(size.width);
177
+ assert(size.height);
178
+ assert(fs.existsSync(filePath), 'Input file does not exist');
179
+ try {
180
+ await resizeImageFile(filePath, { width: size.width, height: size.height });
181
+ console.log(`Image resized successfully`);
182
+ }
183
+ catch (error) {
184
+ console.error('Failed to resize image', error);
185
+ throw error;
186
+ }
187
+ }
188
+ }
189
+ }
190
+ function isProjectPath(filePath) {
191
+ const sourceFiles = getSourceFiles();
192
+ return (isAncestorDirectory(rcConfig.rootDir, filePath) ||
193
+ sourceFiles.includes(filePath) ||
194
+ !sourceFiles.some((sourceFile) => path.dirname(filePath) === path.dirname(sourceFile) ||
195
+ isAncestorDirectory(path.dirname(sourceFile), path.dirname(filePath))));
196
+ }
197
+ //# sourceMappingURL=update-files.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update-files.js","sourceRoot":"","sources":["../../src/files/update-files.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export declare function ensureAlpha(image: string | Buffer): Promise<Buffer>;
@@ -0,0 +1,5 @@
1
+ import sharp from 'sharp';
2
+ export async function ensureAlpha(image) {
3
+ return sharp(image).ensureAlpha().toBuffer();
4
+ }
5
+ //# sourceMappingURL=ensure-alpha.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ensure-alpha.js","sourceRoot":"","sources":["../../src/images/ensure-alpha.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,KAAsB;IACtD,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE,CAAC;AAC/C,CAAC"}
@@ -0,0 +1,2 @@
1
+ /** Converts white color to transparency on a image and saves to destination path */
2
+ export declare function imglyRemoveBackground(inputFilePath: string, outputFilePath: string): Promise<string>;
@@ -0,0 +1,21 @@
1
+ import fs from 'fs';
2
+ import { createRequire } from 'node:module';
3
+ import { removeBackground } from '@imgly/background-removal-node';
4
+ /** Converts white color to transparency on a image and saves to destination path */
5
+ export async function imglyRemoveBackground(inputFilePath, outputFilePath) {
6
+ try {
7
+ console.log(`Removing background for image: ${inputFilePath}`);
8
+ const publicPath = 'file://' + createRequire(import.meta.url).resolve('@imgly/background-removal-node');
9
+ const blob = await removeBackground(inputFilePath, {
10
+ publicPath,
11
+ });
12
+ fs.writeFileSync(outputFilePath, Buffer.from(await blob.arrayBuffer()));
13
+ console.log(`Background removed successfully. Saved to: ${outputFilePath}`);
14
+ return outputFilePath;
15
+ }
16
+ catch (error) {
17
+ console.error('Error removing background:', error);
18
+ throw error;
19
+ }
20
+ }
21
+ //# sourceMappingURL=imgly-remove-background.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"imgly-remove-background.js","sourceRoot":"","sources":["../../src/images/imgly-remove-background.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAElE,oFAAoF;AACpF,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,aAAqB,EAAE,cAAsB;IACvF,IAAI,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,kCAAkC,aAAa,EAAE,CAAC,CAAC;QAE/D,MAAM,UAAU,GAAG,SAAS,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,gCAAgC,CAAC,CAAC;QACxG,MAAM,IAAI,GAAS,MAAM,gBAAgB,CAAC,aAAa,EAAE;YACvD,UAAU;SACX,CAAC,CAAC;QACH,EAAE,CAAC,aAAa,CAAC,cAAc,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;QAExE,OAAO,CAAC,GAAG,CAAC,8CAA8C,cAAc,EAAE,CAAC,CAAC;QAC5E,OAAO,cAAc,CAAC;IACxB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,4BAA4B,EAAE,KAAK,CAAC,CAAC;QACnD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC"}
@@ -0,0 +1,19 @@
1
+ interface ImageSize {
2
+ width: number;
3
+ height: number;
4
+ }
5
+ /**
6
+ * Resize an image buffer to the desired size
7
+ * @param {Buffer} input - The input image buffer
8
+ * @param {ImageSize} size - The desired size of the image
9
+ * @returns {Promise<Buffer>} - The resized image buffer
10
+ */
11
+ export declare function resizeImageBuffer(input: Buffer, size: ImageSize): Promise<Buffer>;
12
+ /**
13
+ * Resize an image file to the desired size and save it back to the same file
14
+ * @param {string} filePath - The path of the image file to resize
15
+ * @param {ImageSize} size - The desired size of the image
16
+ * @returns {Promise<void>}
17
+ */
18
+ export declare function resizeImageFile(filePath: string, size: ImageSize): Promise<void>;
19
+ export {};
@@ -0,0 +1,22 @@
1
+ import sharp from 'sharp';
2
+ import fs from 'fs';
3
+ /**
4
+ * Resize an image buffer to the desired size
5
+ * @param {Buffer} input - The input image buffer
6
+ * @param {ImageSize} size - The desired size of the image
7
+ * @returns {Promise<Buffer>} - The resized image buffer
8
+ */
9
+ export async function resizeImageBuffer(input, size) {
10
+ return await sharp(input).resize(size.width, size.height).toBuffer();
11
+ }
12
+ /**
13
+ * Resize an image file to the desired size and save it back to the same file
14
+ * @param {string} filePath - The path of the image file to resize
15
+ * @param {ImageSize} size - The desired size of the image
16
+ * @returns {Promise<void>}
17
+ */
18
+ export async function resizeImageFile(filePath, size) {
19
+ const buffer = await resizeImageBuffer(await fs.promises.readFile(filePath), size);
20
+ await fs.promises.writeFile(filePath, buffer);
21
+ }
22
+ //# sourceMappingURL=resize-image.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resize-image.js","sourceRoot":"","sources":["../../src/images/resize-image.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,MAAM,IAAI,CAAC;AAOpB;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,KAAa,EAAE,IAAe;IACpE,OAAO,MAAM,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC;AACvE,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,QAAgB,EAAE,IAAe;IACrE,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,CAAC;IACnF,MAAM,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;AAChD,CAAC"}
@@ -0,0 +1,18 @@
1
+ interface Rect {
2
+ x: number;
3
+ y: number;
4
+ width: number;
5
+ height: number;
6
+ }
7
+ interface Part {
8
+ rect: Rect;
9
+ outputFilePath: string;
10
+ }
11
+ /**
12
+ * This function opens the input file, and splits its into parts, extracting parts of the input image, and saving to outputFilePaths
13
+ *
14
+ * @param {string} inputFilePath
15
+ * @param {Part[]} parts
16
+ */
17
+ export declare function splitImage(inputFilePath: string, parts: Part[]): Promise<void>;
18
+ export {};
@@ -0,0 +1,25 @@
1
+ import sharp from 'sharp';
2
+ /**
3
+ * This function opens the input file, and splits its into parts, extracting parts of the input image, and saving to outputFilePaths
4
+ *
5
+ * @param {string} inputFilePath
6
+ * @param {Part[]} parts
7
+ */
8
+ export async function splitImage(inputFilePath, parts) {
9
+ try {
10
+ // Process each part
11
+ for (const part of parts) {
12
+ const { rect, outputFilePath } = part;
13
+ const { x, y, width, height } = rect;
14
+ // Extract the specified rectangle from the input image
15
+ console.log('Extracting', rect, outputFilePath);
16
+ await sharp(inputFilePath).extract({ left: x, top: y, width, height }).toFile(outputFilePath);
17
+ }
18
+ console.log('Image splitting completed successfully.');
19
+ }
20
+ catch (error) {
21
+ console.error('Error splitting image:', error);
22
+ throw error;
23
+ }
24
+ }
25
+ //# sourceMappingURL=split-image.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"split-image.js","sourceRoot":"","sources":["../../src/images/split-image.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAc1B;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,aAAqB,EAAE,KAAa;IACnE,IAAI,CAAC;QACH,oBAAoB;QACpB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,EAAE,IAAI,EAAE,cAAc,EAAE,GAAG,IAAI,CAAC;YACtC,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;YAErC,uDAAuD;YACvD,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;YAChD,MAAM,KAAK,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;QAChG,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC;IACzD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,wBAAwB,EAAE,KAAK,CAAC,CAAC;QAC/C,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { AiServiceType, CodegenOptions } from './codegen-types.js';
2
+ export declare const displayWelcome: () => void;
3
+ type UserAction = 'text_prompt' | 'task_file' | 'process_comments' | 'select_ai_service' | 'configure' | 'help' | 'exit';
4
+ export declare const getUserAction: () => Promise<UserAction>;
5
+ export declare const getUserOptions: (options: CodegenOptions) => Promise<CodegenOptions>;
6
+ export declare const checkForCodegenComments: () => boolean;
7
+ export declare const selectAiService: (defaultAiService: AiServiceType | undefined) => Promise<AiServiceType>;
8
+ export {};
@@ -0,0 +1,148 @@
1
+ import fs from 'fs';
2
+ import { select, checkbox, Separator, input, confirm } from '@inquirer/prompts';
3
+ import { getSourceFiles } from '../files/find-files.js';
4
+ import { CODEGEN_TRIGGER } from '../prompt/prompt-consts.js';
5
+ import { createRequire } from 'module';
6
+ const require = createRequire(import.meta.url);
7
+ const packageJson = require('../../package.json');
8
+ // Function to display the welcome message
9
+ export const displayWelcome = () => {
10
+ console.log(`Welcome to Genaicode v${packageJson.version}`);
11
+ };
12
+ // Function to get user action
13
+ export const getUserAction = async () => {
14
+ const choices = [
15
+ { name: 'Enter a text prompt', value: 'text_prompt' },
16
+ { name: 'Select a task file', value: 'task_file' },
17
+ { name: `Process ${CODEGEN_TRIGGER} comments`, value: 'process_comments' },
18
+ new Separator(),
19
+ { name: 'Select AI service', value: 'select_ai_service' },
20
+ { name: 'Configuration', value: 'configure' },
21
+ { name: 'Print help', value: 'help' },
22
+ new Separator(),
23
+ { name: 'Exit', value: 'exit' },
24
+ ];
25
+ const action = await select({
26
+ message: 'What would you like to do?',
27
+ pageSize: choices.length,
28
+ choices,
29
+ });
30
+ return action;
31
+ };
32
+ // Function to get user options
33
+ export const getUserOptions = async (options) => {
34
+ const updatedOptions = { ...options };
35
+ // General options
36
+ const generalOptions = await checkbox({
37
+ message: 'Select general options:',
38
+ choices: [
39
+ { name: 'Consider all files', value: 'considerAllFiles', checked: options.considerAllFiles },
40
+ { name: 'Dry run', value: 'dryRun', checked: options.dryRun },
41
+ { name: 'Verbose', value: 'verbose', checked: options.verbose },
42
+ { name: 'Require explanations', value: 'requireExplanations', checked: options.requireExplanations },
43
+ { name: 'Disable initial lint', value: 'disableInitialLint', checked: options.disableInitialLint },
44
+ { name: 'Ask questions', value: 'askQuestion', checked: options.askQuestion },
45
+ { name: 'Disable cache', value: 'disableCache', checked: options.disableCache },
46
+ ],
47
+ });
48
+ updatedOptions.considerAllFiles = generalOptions.includes('considerAllFiles');
49
+ updatedOptions.dryRun = generalOptions.includes('dryRun');
50
+ updatedOptions.verbose = generalOptions.includes('verbose');
51
+ updatedOptions.requireExplanations = generalOptions.includes('requireExplanations');
52
+ updatedOptions.disableInitialLint = generalOptions.includes('disableInitialLint');
53
+ updatedOptions.askQuestion = generalOptions.includes('askQuestion');
54
+ updatedOptions.disableCache = generalOptions.includes('disableCache');
55
+ // File operation options
56
+ const fileOptions = await checkbox({
57
+ message: 'Select file operation options:',
58
+ choices: [
59
+ { name: 'Allow file creation', value: 'allowFileCreate', checked: options.allowFileCreate },
60
+ { name: 'Allow file deletion', value: 'allowFileDelete', checked: options.allowFileDelete },
61
+ { name: 'Allow directory creation', value: 'allowDirectoryCreate', checked: options.allowDirectoryCreate },
62
+ { name: 'Allow file moving', value: 'allowFileMove', checked: options.allowFileMove },
63
+ ],
64
+ });
65
+ updatedOptions.allowFileCreate = fileOptions.includes('allowFileCreate');
66
+ updatedOptions.allowFileDelete = fileOptions.includes('allowFileDelete');
67
+ updatedOptions.allowDirectoryCreate = fileOptions.includes('allowDirectoryCreate');
68
+ updatedOptions.allowFileMove = fileOptions.includes('allowFileMove');
69
+ // AI model options
70
+ updatedOptions.disableContextOptimization = await confirm({
71
+ message: 'Disable context optimization?',
72
+ default: options.disableContextOptimization || false,
73
+ });
74
+ updatedOptions.temperature = parseFloat(await input({
75
+ message: 'Enter temperature (0.0 - 2.0):',
76
+ default: options.temperature?.toString() || '0.7',
77
+ validate: (value) => {
78
+ const num = parseFloat(value);
79
+ return (num >= 0 && num <= 2) || 'Please enter a number between 0 and 2';
80
+ },
81
+ }));
82
+ updatedOptions.cheap = await confirm({
83
+ message: 'Use cheaper, faster model?',
84
+ default: options.cheap || false,
85
+ });
86
+ updatedOptions.geminiBlockNone = await confirm({
87
+ message: 'Disable safety settings for Gemini Pro model?',
88
+ default: options.geminiBlockNone || false,
89
+ });
90
+ // Vision and image generation options
91
+ updatedOptions.vision = await confirm({
92
+ message: 'Enable vision capabilities?',
93
+ default: options.vision || false,
94
+ });
95
+ if (await confirm({ message: 'Enable image generation?', default: !!options.imagen })) {
96
+ updatedOptions.imagen = await select({
97
+ message: 'Select image generation service:',
98
+ choices: [
99
+ { name: 'Vertex AI', value: 'vertex-ai' },
100
+ { name: 'DALL-E', value: 'dall-e' },
101
+ ],
102
+ default: options.imagen || 'vertex-ai',
103
+ });
104
+ }
105
+ else {
106
+ updatedOptions.imagen = undefined;
107
+ }
108
+ // Content mask and ignore patterns
109
+ updatedOptions.contentMask = await input({
110
+ message: 'Enter content mask (prefix of path relative to rootDir):',
111
+ default: options.contentMask || '',
112
+ });
113
+ const ignorePatterns = await input({
114
+ message: 'Enter ignore patterns (comma-separated):',
115
+ default: options.ignorePatterns?.join(',') || '',
116
+ });
117
+ updatedOptions.ignorePatterns = ignorePatterns ? ignorePatterns.split(',').map(p => p.trim()) : undefined;
118
+ return updatedOptions;
119
+ };
120
+ // Function to check for CODEGEN comments in source files
121
+ export const checkForCodegenComments = () => {
122
+ const sourceFiles = getSourceFiles();
123
+ for (const file of sourceFiles) {
124
+ const content = fs.readFileSync(file, 'utf-8');
125
+ if (content.includes(CODEGEN_TRIGGER)) {
126
+ return true;
127
+ }
128
+ }
129
+ return false;
130
+ };
131
+ // Function to select AI service
132
+ export const selectAiService = async (defaultAiService) => {
133
+ const choices = [
134
+ { name: 'Vertex AI (Gemini)', value: 'vertex-ai' },
135
+ { name: 'AI Studio (Gemini)', value: 'ai-studio' },
136
+ { name: 'ChatGPT', value: 'chat-gpt' },
137
+ { name: 'Anthropic Claude', value: 'anthropic' },
138
+ { name: 'Claude via Vertex AI', value: 'vertex-ai-claude' },
139
+ ];
140
+ const selectedAiService = await select({
141
+ message: 'Select the AI model you want to use:',
142
+ pageSize: choices.length,
143
+ choices: choices.map((choice) => ({ ...choice, checked: defaultAiService === choice.value })),
144
+ default: defaultAiService,
145
+ });
146
+ return selectedAiService;
147
+ };
148
+ //# sourceMappingURL=codegen-interactive-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codegen-interactive-utils.js","sourceRoot":"","sources":["../../src/main/codegen-interactive-utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { CodegenOptions } from './codegen-types.js';
2
+ export declare const runInteractiveMode: (options: CodegenOptions) => Promise<void>;
@@ -0,0 +1,68 @@
1
+ import { input } from '@inquirer/prompts';
2
+ import fileSelector from 'inquirer-file-selector';
3
+ import { runCodegenIteration } from './codegen.js';
4
+ import { CODEGEN_TRIGGER } from '../prompt/prompt-consts.js';
5
+ import { displayWelcome, getUserAction, getUserOptions, checkForCodegenComments, selectAiService, } from './codegen-interactive-utils.js';
6
+ import { rcConfig } from './config.js';
7
+ import { printHelpMessage } from '../cli/cli-options.js';
8
+ // Main function for interactive mode
9
+ export const runInteractiveMode = async (options) => {
10
+ displayWelcome();
11
+ const runNext = true;
12
+ while (runNext) {
13
+ const action = await getUserAction();
14
+ if (action === 'exit') {
15
+ console.log('Exiting Genaicode Interactive Mode. Goodbye!');
16
+ break;
17
+ }
18
+ switch (action) {
19
+ case 'process_comments':
20
+ await runProcessComments(options);
21
+ break;
22
+ case 'text_prompt':
23
+ await runTextPrompt(options);
24
+ break;
25
+ case 'task_file':
26
+ await runTaskFile(options);
27
+ break;
28
+ case 'select_ai_service':
29
+ options.aiService = await selectAiService(options.aiService);
30
+ console.log(`Selected AI service: ${options.aiService}`);
31
+ break;
32
+ case 'configure':
33
+ options = await getUserOptions(options);
34
+ break;
35
+ case 'help':
36
+ printHelpMessage();
37
+ break;
38
+ }
39
+ console.log('Task completed. Returning to main menu...\n');
40
+ }
41
+ };
42
+ async function runProcessComments(options) {
43
+ const hasCodegenComments = checkForCodegenComments();
44
+ if (!hasCodegenComments) {
45
+ console.warn(`Warning: No ${CODEGEN_TRIGGER} comments found in the source code.`);
46
+ }
47
+ console.log(`Processing ${CODEGEN_TRIGGER} comments...`);
48
+ await runCodegenIteration({ ...options, considerAllFiles: false });
49
+ }
50
+ async function runTextPrompt(options) {
51
+ const prompt = await input({ message: 'Enter your text prompt:' });
52
+ console.log(`Executing prompt: ${prompt}`);
53
+ await runCodegenIteration({ ...options, explicitPrompt: prompt });
54
+ }
55
+ async function runTaskFile(options) {
56
+ const taskFile = await fileSelector({
57
+ message: 'Select task file:',
58
+ path: rcConfig.rootDir,
59
+ });
60
+ if (taskFile) {
61
+ console.log(`Selected task file: ${taskFile}`);
62
+ await runCodegenIteration({ ...options, taskFile });
63
+ }
64
+ else {
65
+ console.log('No task file selected.');
66
+ }
67
+ }
68
+ //# sourceMappingURL=codegen-interactive.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codegen-interactive.js","sourceRoot":"","sources":["../../src/main/codegen-interactive.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ export type AiServiceType = 'vertex-ai' | 'ai-studio' | 'vertex-ai-claude' | 'chat-gpt' | 'anthropic';
2
+ export type ImagenType = 'vertex-ai' | 'dall-e';
3
+ export interface CodegenOptions {
4
+ explicitPrompt?: string;
5
+ taskFile?: string;
6
+ considerAllFiles?: boolean;
7
+ allowFileCreate?: boolean;
8
+ allowFileDelete?: boolean;
9
+ allowDirectoryCreate?: boolean;
10
+ allowFileMove?: boolean;
11
+ vision?: boolean;
12
+ imagen?: ImagenType;
13
+ aiService: AiServiceType;
14
+ disableContextOptimization?: boolean;
15
+ temperature?: number;
16
+ cheap?: boolean;
17
+ dryRun?: boolean;
18
+ verbose?: boolean;
19
+ requireExplanations?: boolean;
20
+ geminiBlockNone?: boolean;
21
+ disableInitialLint?: boolean;
22
+ contentMask?: string;
23
+ ignorePatterns?: string[];
24
+ askQuestion?: boolean;
25
+ interactive?: boolean;
26
+ disableCache?: boolean;
27
+ dependencyTree?: boolean;
28
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=codegen-types.js.map