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
@@ -1,39 +1,45 @@
1
1
  import { findRcFile, parseRcFile } from './config-lib.js';
2
-
2
+ import path from 'path';
3
3
  // Default extensions if not specified in .genaicoderc
4
4
  const DEFAULT_EXTENSIONS = [
5
- '.md',
6
- '.js',
7
- '.ts',
8
- '.tsx',
9
- '.css',
10
- '.scss',
11
- '.py',
12
- '.go',
13
- '.c',
14
- '.h',
15
- '.cpp',
16
- '.txt',
17
- '.html',
18
- '.txt',
19
- '.json',
5
+ '.md',
6
+ '.js',
7
+ '.ts',
8
+ '.tsx',
9
+ '.css',
10
+ '.scss',
11
+ '.py',
12
+ '.go',
13
+ '.c',
14
+ '.h',
15
+ '.cpp',
16
+ '.txt',
17
+ '.html',
18
+ '.txt',
19
+ '.json',
20
20
  ];
21
-
22
21
  // A list of paths that are ignored by default
23
22
  const DEFAULT_IGNORE_PATHS = ['node_modules', 'build', 'dist', 'package-lock.json', 'coverage'];
24
-
25
23
  // Read and parse the configuration
26
24
  const rcFilePath = findRcFile();
27
25
  export const rcConfig = parseRcFile(rcFilePath);
28
-
29
26
  // Use extensions from .genaicoderc if available, otherwise use default
30
27
  export const sourceExtensions = rcConfig.extensions || DEFAULT_EXTENSIONS;
31
-
32
28
  // Image extensions (driven by ai service limitations)
33
29
  export const IMAGE_ASSET_EXTENSIONS = ['.png', '.jpg', '.jpeg', '.gif', '.webp'];
34
-
35
30
  // Export ignore paths
36
31
  export const ignorePaths = rcConfig.ignorePaths ?? DEFAULT_IGNORE_PATHS;
37
-
32
+ // Process and export important context
33
+ export const importantContext = processImportantContext(rcConfig.importantContext);
34
+ function processImportantContext(context) {
35
+ if (!context)
36
+ return { textPrompts: [], files: [] };
37
+ return {
38
+ textPrompts: context.textPrompts || [],
39
+ files: (context.files || []).map((file) => path.resolve(rcConfig.rootDir, file)),
40
+ };
41
+ }
38
42
  console.log('Detected codegen configuration', rcConfig);
39
43
  console.log('Root dir:', rcConfig.rootDir);
44
+ console.log('Important context:', importantContext);
45
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/main/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,WAAW,EAA8B,MAAM,iBAAiB,CAAC;AACtF,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,sDAAsD;AACtD,MAAM,kBAAkB,GAAa;IACnC,KAAK;IACL,KAAK;IACL,KAAK;IACL,MAAM;IACN,MAAM;IACN,OAAO;IACP,KAAK;IACL,KAAK;IACL,IAAI;IACJ,IAAI;IACJ,MAAM;IACN,MAAM;IACN,OAAO;IACP,MAAM;IACN,OAAO;CACR,CAAC;AAEF,8CAA8C;AAC9C,MAAM,oBAAoB,GAAa,CAAC,cAAc,EAAE,OAAO,EAAE,MAAM,EAAE,mBAAmB,EAAE,UAAU,CAAC,CAAC;AAE1G,mCAAmC;AACnC,MAAM,UAAU,GAAW,UAAU,EAAE,CAAC;AACxC,MAAM,CAAC,MAAM,QAAQ,GAAa,WAAW,CAAC,UAAU,CAAC,CAAC;AAE1D,uEAAuE;AACvE,MAAM,CAAC,MAAM,gBAAgB,GAAa,QAAQ,CAAC,UAAU,IAAI,kBAAkB,CAAC;AAEpF,sDAAsD;AACtD,MAAM,CAAC,MAAM,sBAAsB,GAAa,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;AAE3F,sBAAsB;AACtB,MAAM,CAAC,MAAM,WAAW,GAAa,QAAQ,CAAC,WAAW,IAAI,oBAAoB,CAAC;AAElF,uCAAuC;AACvC,MAAM,CAAC,MAAM,gBAAgB,GAAqB,uBAAuB,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;AAErG,SAAS,uBAAuB,CAAC,OAAqC;IACpE,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,WAAW,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;IAEpD,OAAO;QACL,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,EAAE;QACtC,KAAK,EAAE,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;KACjF,CAAC;AACJ,CAAC;AAED,OAAO,CAAC,GAAG,CAAC,gCAAgC,EAAE,QAAQ,CAAC,CAAC;AACxD,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;AAC3C,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,gBAAgB,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { CodegenOptions } from '../codegen-types.js';
2
+ export declare const runInteractiveMode: (options: CodegenOptions) => Promise<void>;
@@ -0,0 +1,55 @@
1
+ import { displayWelcome, getUserAction } from './common.js';
2
+ import { runTextPrompt } from './text-prompt.js';
3
+ import { runTaskFile } from './task-file.js';
4
+ import { selectAiService } from './select-ai-service.js';
5
+ import { getUserOptions } from './configure.js';
6
+ import { printHelpMessage } from '../../cli/cli-options.js';
7
+ import { runProcessComments } from './process-comments.js';
8
+ import { handleError } from './error-handling.js';
9
+ // Main function for interactive mode
10
+ export const runInteractiveMode = async (options) => {
11
+ displayWelcome();
12
+ const nextRun = true;
13
+ while (nextRun) {
14
+ try {
15
+ const action = await getUserAction();
16
+ if (action === 'exit') {
17
+ console.log('Exiting Genaicode Interactive Mode. Goodbye!');
18
+ break;
19
+ }
20
+ await handleUserAction(action, options);
21
+ console.log('Task completed. Returning to main menu...\n');
22
+ }
23
+ catch (error) {
24
+ await handleError(error);
25
+ }
26
+ }
27
+ };
28
+ const handleUserAction = async (action, options) => {
29
+ switch (action) {
30
+ case 'process_comments':
31
+ await runProcessComments(options);
32
+ break;
33
+ case 'text_prompt':
34
+ await runTextPrompt(options);
35
+ break;
36
+ case 'task_file':
37
+ runTaskFile(options);
38
+ break;
39
+ case 'select_ai_service':
40
+ options.aiService = await selectAiService(options.aiService);
41
+ break;
42
+ case 'configure':
43
+ Object.assign(options, await getUserOptions(options));
44
+ break;
45
+ case 'help':
46
+ printHelpMessage();
47
+ break;
48
+ case 'main_menu':
49
+ // Do nothing, just return to main menu
50
+ break;
51
+ default:
52
+ console.log('Invalid action. Returning to main menu.');
53
+ }
54
+ };
55
+ //# sourceMappingURL=codegen-interactive.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codegen-interactive.js","sourceRoot":"","sources":["../../../src/main/interactive/codegen-interactive.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,aAAa,EAAc,MAAM,aAAa,CAAC;AACxE,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAE5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAElD,qCAAqC;AACrC,MAAM,CAAC,MAAM,kBAAkB,GAAG,KAAK,EAAE,OAAuB,EAAiB,EAAE;IACjF,cAAc,EAAE,CAAC;IAEjB,MAAM,OAAO,GAAG,IAAI,CAAC;IACrB,OAAO,OAAO,EAAE,CAAC;QACf,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,aAAa,EAAE,CAAC;YAErC,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;gBACtB,OAAO,CAAC,GAAG,CAAC,8CAA8C,CAAC,CAAC;gBAC5D,MAAM;YACR,CAAC;YAED,MAAM,gBAAgB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YAExC,OAAO,CAAC,GAAG,CAAC,6CAA6C,CAAC,CAAC;QAC7D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,WAAW,CAAC,KAAK,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,gBAAgB,GAAG,KAAK,EAAE,MAAkB,EAAE,OAAuB,EAAiB,EAAE;IAC5F,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,kBAAkB;YACrB,MAAM,kBAAkB,CAAC,OAAO,CAAC,CAAC;YAClC,MAAM;QACR,KAAK,aAAa;YAChB,MAAM,aAAa,CAAC,OAAO,CAAC,CAAC;YAC7B,MAAM;QACR,KAAK,WAAW;YACd,WAAW,CAAC,OAAO,CAAC,CAAC;YACrB,MAAM;QACR,KAAK,mBAAmB;YACtB,OAAO,CAAC,SAAS,GAAG,MAAM,eAAe,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YAC7D,MAAM;QACR,KAAK,WAAW;YACd,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC;YACtD,MAAM;QACR,KAAK,MAAM;YACT,gBAAgB,EAAE,CAAC;YACnB,MAAM;QACR,KAAK,WAAW;YACd,uCAAuC;YACvC,MAAM;QACR;YACE,OAAO,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC;IAC3D,CAAC;AACH,CAAC,CAAC"}
@@ -0,0 +1,4 @@
1
+ import '../../cli/cli-params.js';
2
+ import '../../files/read-files.js';
3
+ import '../../files/find-files.js';
4
+ import '../config.js';
@@ -0,0 +1,77 @@
1
+ import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
2
+ import * as common from './common.js';
3
+ import * as textPrompt from './text-prompt.js';
4
+ import * as taskFile from './task-file.js';
5
+ import * as processComments from './process-comments.js';
6
+ import * as selectAiService from './select-ai-service.js';
7
+ import * as configure from './configure.js';
8
+ import * as help from '../../cli/cli-options.js';
9
+ import '../../cli/cli-params.js';
10
+ import '../../files/read-files.js';
11
+ import '../../files/find-files.js';
12
+ import '../config.js';
13
+ import { runInteractiveMode } from './codegen-interactive.js';
14
+ // Mock all imported modules
15
+ vi.mock('../../cli/cli-params.js', () => ({
16
+ requireExplanations: false,
17
+ }));
18
+ vi.mock('../config.js', () => ({ rcConfig: {}, sourceExtensions: [] }));
19
+ vi.mock('./common');
20
+ vi.mock('../../files/find-files.js', () => ({}));
21
+ vi.mock('../../files/read-files.js', () => ({}));
22
+ vi.mock('./text-prompt');
23
+ vi.mock('./task-file');
24
+ vi.mock('./process-comments');
25
+ vi.mock('./select-ai-service');
26
+ vi.mock('./configure');
27
+ vi.mock('../../cli/cli-options');
28
+ vi.mock('./codegen-worker.js');
29
+ describe('runInteractiveMode', () => {
30
+ const mockOptions = { aiService: 'vertex-ai' };
31
+ beforeEach(() => {
32
+ vi.resetAllMocks();
33
+ // Mock console.log to prevent output during tests
34
+ vi.spyOn(console, 'log').mockImplementation(() => { });
35
+ });
36
+ afterEach(() => {
37
+ vi.restoreAllMocks();
38
+ });
39
+ it('should handle text prompt action', async () => {
40
+ vi.spyOn(common, 'getUserAction').mockResolvedValueOnce('text_prompt').mockResolvedValueOnce('exit');
41
+ await runInteractiveMode(mockOptions);
42
+ expect(textPrompt.runTextPrompt).toBeCalled();
43
+ });
44
+ it('should handle task file action', async () => {
45
+ vi.spyOn(common, 'getUserAction').mockResolvedValueOnce('task_file').mockResolvedValueOnce('exit');
46
+ await runInteractiveMode(mockOptions);
47
+ expect(taskFile.runTaskFile).toBeCalled();
48
+ });
49
+ it('should handle process comments action', async () => {
50
+ vi.spyOn(common, 'getUserAction').mockResolvedValueOnce('process_comments').mockResolvedValueOnce('exit');
51
+ await runInteractiveMode(mockOptions);
52
+ expect(processComments.runProcessComments).toBeCalled();
53
+ });
54
+ it('should handle select AI service action', async () => {
55
+ vi.spyOn(common, 'getUserAction').mockResolvedValueOnce('select_ai_service').mockResolvedValueOnce('exit');
56
+ vi.spyOn(selectAiService, 'selectAiService').mockResolvedValueOnce('chat-gpt');
57
+ await runInteractiveMode(mockOptions);
58
+ expect(selectAiService.selectAiService).toHaveBeenCalledWith('vertex-ai');
59
+ });
60
+ it('should handle configure action', async () => {
61
+ vi.spyOn(common, 'getUserAction').mockResolvedValueOnce('configure').mockResolvedValueOnce('exit');
62
+ vi.spyOn(configure, 'getUserOptions').mockResolvedValueOnce({ ...mockOptions, dryRun: true });
63
+ await runInteractiveMode(mockOptions);
64
+ expect(configure.getUserOptions).toHaveBeenCalledWith(mockOptions);
65
+ });
66
+ it('should handle help action', async () => {
67
+ vi.spyOn(common, 'getUserAction').mockResolvedValueOnce('help').mockResolvedValueOnce('exit');
68
+ await runInteractiveMode(mockOptions);
69
+ expect(help.printHelpMessage).toHaveBeenCalled();
70
+ });
71
+ it('should handle exit action', async () => {
72
+ vi.spyOn(common, 'getUserAction').mockResolvedValueOnce('exit');
73
+ await runInteractiveMode(mockOptions);
74
+ expect(console.log).toHaveBeenCalledWith('Exiting Genaicode Interactive Mode. Goodbye!');
75
+ });
76
+ });
77
+ //# sourceMappingURL=codegen-interactive.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codegen-interactive.test.js","sourceRoot":"","sources":["../../../src/main/interactive/codegen-interactive.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { CodegenOptions } from '../codegen-types.js';
2
+ export declare let abortController: AbortController | null;
3
+ export declare const runCodegenWorker: (options: CodegenOptions) => Promise<void>;
@@ -0,0 +1,47 @@
1
+ import { setMaxListeners } from 'events';
2
+ import { runCodegenIteration } from '../codegen.js';
3
+ import { handleUserInterrupt } from './user-interrupt.js';
4
+ export let abortController = null;
5
+ // Wrapper function to run codegen in the same process
6
+ export const runCodegenWorker = async (options) => {
7
+ console.log('Starting operation...');
8
+ abortController = new AbortController();
9
+ setMaxListeners(Infinity, abortController.signal);
10
+ const removeInterruptHandler = createInterruptHandler(abortController);
11
+ try {
12
+ // Set up user interrupt handling
13
+ await Promise.race([runCodegenIteration(options, abortController.signal), handleUserInterrupt(abortController)]);
14
+ }
15
+ catch (error) {
16
+ if (error instanceof Error) {
17
+ if (error.name === 'AbortError') {
18
+ console.log('Operation was aborted.');
19
+ }
20
+ else {
21
+ console.error(`Error:`, error);
22
+ }
23
+ }
24
+ else {
25
+ console.log('Unknown error occurred', error);
26
+ }
27
+ }
28
+ finally {
29
+ removeInterruptHandler();
30
+ abortController = null;
31
+ console.log('Cleanup complete.');
32
+ }
33
+ };
34
+ // Utility function to handle interruptions with AbortSignal
35
+ const createInterruptHandler = (abortController) => {
36
+ const handleInterrupt = () => {
37
+ console.log('Interrupt signal received. Aborting operation...');
38
+ abortController.abort();
39
+ };
40
+ process.on('SIGINT', handleInterrupt);
41
+ process.on('SIGTERM', handleInterrupt);
42
+ return () => {
43
+ process.off('SIGINT', handleInterrupt);
44
+ process.off('SIGTERM', handleInterrupt);
45
+ };
46
+ };
47
+ //# sourceMappingURL=codegen-worker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codegen-worker.js","sourceRoot":"","sources":["../../../src/main/interactive/codegen-worker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AAEzC,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAE1D,MAAM,CAAC,IAAI,eAAe,GAA2B,IAAI,CAAC;AAE1D,sDAAsD;AACtD,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,EAAE,OAAuB,EAAiB,EAAE;IAC/E,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;IACrC,eAAe,GAAG,IAAI,eAAe,EAAE,CAAC;IACxC,eAAe,CAAC,QAAQ,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC;IAClD,MAAM,sBAAsB,GAAG,sBAAsB,CAAC,eAAe,CAAC,CAAC;IAEvE,IAAI,CAAC;QACH,iCAAiC;QACjC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,mBAAmB,CAAC,OAAO,EAAE,eAAe,CAAC,MAAM,CAAC,EAAE,mBAAmB,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;IACnH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;YAC3B,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;gBAChC,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;YACxC,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;YACjC,CAAC;QACH,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,wBAAwB,EAAE,KAAK,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;YAAS,CAAC;QACT,sBAAsB,EAAE,CAAC;QACzB,eAAe,GAAG,IAAI,CAAC;QACvB,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;IACnC,CAAC;AACH,CAAC,CAAC;AAEF,4DAA4D;AAC5D,MAAM,sBAAsB,GAAG,CAAC,eAAgC,EAAE,EAAE;IAClE,MAAM,eAAe,GAAG,GAAG,EAAE;QAC3B,OAAO,CAAC,GAAG,CAAC,kDAAkD,CAAC,CAAC;QAChE,eAAe,CAAC,KAAK,EAAE,CAAC;IAC1B,CAAC,CAAC;IAEF,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC;IACtC,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;IAEvC,OAAO,GAAG,EAAE;QACV,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC;QACvC,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;IAC1C,CAAC,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,5 @@
1
+ export declare const displayWelcome: () => void;
2
+ export type UserAction = 'text_prompt' | 'task_file' | 'process_comments' | 'select_ai_service' | 'configure' | 'help' | 'exit' | 're_run' | 'main_menu' | 'interrupt';
3
+ export declare const getUserAction: () => Promise<UserAction>;
4
+ export declare const handleCodegenError: (error: Error) => Promise<UserAction>;
5
+ export declare const confirmAction: (message: string) => Promise<boolean>;
@@ -0,0 +1,51 @@
1
+ import { select, Separator } from '@inquirer/prompts';
2
+ import { createRequire } from 'module';
3
+ import { CODEGEN_TRIGGER } from '../../prompt/prompt-consts.js';
4
+ const require = createRequire(import.meta.url);
5
+ const packageJson = require('../../../package.json');
6
+ export const displayWelcome = () => {
7
+ console.log(`Welcome to Genaicode v${packageJson.version}`);
8
+ };
9
+ const getUserActionChoices = () => [
10
+ { name: 'Enter a text prompt', value: 'text_prompt' },
11
+ { name: 'Select a task file', value: 'task_file' },
12
+ { name: `Process ${CODEGEN_TRIGGER} comments`, value: 'process_comments' },
13
+ new Separator(),
14
+ { name: 'Select AI service', value: 'select_ai_service' },
15
+ { name: 'Configuration', value: 'configure' },
16
+ { name: 'Print help', value: 'help' },
17
+ new Separator(),
18
+ { name: 'Exit', value: 'exit' },
19
+ ];
20
+ export const getUserAction = async () => {
21
+ const choices = getUserActionChoices();
22
+ return await select({
23
+ message: 'What would you like to do?',
24
+ pageSize: choices.length,
25
+ choices,
26
+ });
27
+ };
28
+ export const handleCodegenError = async (error) => {
29
+ console.error('An error occurred during code generation:');
30
+ console.error(error.message);
31
+ const choices = [
32
+ { name: 'Re-run the operation', value: 're_run' },
33
+ { name: 'Return to main menu', value: 'main_menu' },
34
+ ];
35
+ return await select({
36
+ message: 'How would you like to proceed?',
37
+ pageSize: choices.length,
38
+ choices,
39
+ });
40
+ };
41
+ export const confirmAction = async (message) => {
42
+ const choices = [
43
+ { name: 'Yes', value: true },
44
+ { name: 'No, return to main menu', value: false },
45
+ ];
46
+ return await select({
47
+ message,
48
+ choices,
49
+ });
50
+ };
51
+ //# sourceMappingURL=common.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common.js","sourceRoot":"","sources":["../../../src/main/interactive/common.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AACvC,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAEhE,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,WAAW,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAAC;AAErD,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,EAAE;IACjC,OAAO,CAAC,GAAG,CAAC,yBAAyB,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC;AAC9D,CAAC,CAAC;AAcF,MAAM,oBAAoB,GAAG,GAAG,EAAE,CAChC;IACE,EAAE,IAAI,EAAE,qBAAqB,EAAE,KAAK,EAAE,aAAa,EAAE;IACrD,EAAE,IAAI,EAAE,oBAAoB,EAAE,KAAK,EAAE,WAAW,EAAE;IAClD,EAAE,IAAI,EAAE,WAAW,eAAe,WAAW,EAAE,KAAK,EAAE,kBAAkB,EAAE;IAC1E,IAAI,SAAS,EAAE;IACf,EAAE,IAAI,EAAE,mBAAmB,EAAE,KAAK,EAAE,mBAAmB,EAAE;IACzD,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,WAAW,EAAE;IAC7C,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE;IACrC,IAAI,SAAS,EAAE;IACf,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE;CACvB,CAAC;AAEb,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,IAAyB,EAAE;IAC3D,MAAM,OAAO,GAAG,oBAAoB,EAAE,CAAC;IACvC,OAAO,MAAM,MAAM,CAAa;QAC9B,OAAO,EAAE,4BAA4B;QACrC,QAAQ,EAAE,OAAO,CAAC,MAAM;QACxB,OAAO;KACR,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG,KAAK,EAAE,KAAY,EAAuB,EAAE;IAC5E,OAAO,CAAC,KAAK,CAAC,2CAA2C,CAAC,CAAC;IAC3D,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAE7B,MAAM,OAAO,GAAG;QACd,EAAE,IAAI,EAAE,sBAAsB,EAAE,KAAK,EAAE,QAAQ,EAAE;QACjD,EAAE,IAAI,EAAE,qBAAqB,EAAE,KAAK,EAAE,WAAW,EAAE;KAC3C,CAAC;IAEX,OAAO,MAAM,MAAM,CAAa;QAC9B,OAAO,EAAE,gCAAgC;QACzC,QAAQ,EAAE,OAAO,CAAC,MAAM;QACxB,OAAO;KACR,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,EAAE,OAAe,EAAoB,EAAE;IACvE,MAAM,OAAO,GAAG;QACd,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE;QAC5B,EAAE,IAAI,EAAE,yBAAyB,EAAE,KAAK,EAAE,KAAK,EAAE;KAClD,CAAC;IAEF,OAAO,MAAM,MAAM,CAAU;QAC3B,OAAO;QACP,OAAO;KACR,CAAC,CAAC;AACL,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { CodegenOptions } from '../codegen-types.js';
2
+ export declare const getUserOptions: (options: CodegenOptions) => Promise<CodegenOptions>;
@@ -0,0 +1,99 @@
1
+ import { checkbox, confirm, input, select } from '@inquirer/prompts';
2
+ export const getUserOptions = async (options) => {
3
+ const updatedOptions = { ...options };
4
+ await configureGeneralOptions(updatedOptions);
5
+ await configureFileOperationOptions(updatedOptions);
6
+ await configureAIModelOptions(updatedOptions);
7
+ await configureVisionAndImageOptions(updatedOptions);
8
+ await configureContentMaskAndIgnorePatterns(updatedOptions);
9
+ return updatedOptions;
10
+ };
11
+ const configureGeneralOptions = async (options) => {
12
+ const generalOptions = await checkbox({
13
+ message: 'Select general options:',
14
+ choices: [
15
+ { name: 'Consider all files', value: 'considerAllFiles', checked: options.considerAllFiles },
16
+ { name: 'Dry run', value: 'dryRun', checked: options.dryRun },
17
+ { name: 'Verbose', value: 'verbose', checked: options.verbose },
18
+ { name: 'Require explanations', value: 'requireExplanations', checked: options.requireExplanations },
19
+ { name: 'Disable initial lint', value: 'disableInitialLint', checked: options.disableInitialLint },
20
+ { name: 'Ask questions', value: 'askQuestion', checked: options.askQuestion },
21
+ { name: 'Disable cache', value: 'disableCache', checked: options.disableCache },
22
+ ],
23
+ });
24
+ options.considerAllFiles = generalOptions.includes('considerAllFiles');
25
+ options.dryRun = generalOptions.includes('dryRun');
26
+ options.verbose = generalOptions.includes('verbose');
27
+ options.requireExplanations = generalOptions.includes('requireExplanations');
28
+ options.disableInitialLint = generalOptions.includes('disableInitialLint');
29
+ options.askQuestion = generalOptions.includes('askQuestion');
30
+ options.disableCache = generalOptions.includes('disableCache');
31
+ };
32
+ const configureFileOperationOptions = async (options) => {
33
+ const fileOptions = await checkbox({
34
+ message: 'Select file operation options:',
35
+ choices: [
36
+ { name: 'Allow file creation', value: 'allowFileCreate', checked: options.allowFileCreate },
37
+ { name: 'Allow file deletion', value: 'allowFileDelete', checked: options.allowFileDelete },
38
+ { name: 'Allow directory creation', value: 'allowDirectoryCreate', checked: options.allowDirectoryCreate },
39
+ { name: 'Allow file moving', value: 'allowFileMove', checked: options.allowFileMove },
40
+ ],
41
+ });
42
+ options.allowFileCreate = fileOptions.includes('allowFileCreate');
43
+ options.allowFileDelete = fileOptions.includes('allowFileDelete');
44
+ options.allowDirectoryCreate = fileOptions.includes('allowDirectoryCreate');
45
+ options.allowFileMove = fileOptions.includes('allowFileMove');
46
+ };
47
+ const configureAIModelOptions = async (options) => {
48
+ options.disableContextOptimization = await confirm({
49
+ message: 'Disable context optimization?',
50
+ default: options.disableContextOptimization || false,
51
+ });
52
+ options.temperature = parseFloat(await input({
53
+ message: 'Enter temperature (0.0 - 2.0):',
54
+ default: options.temperature?.toString() || '0.7',
55
+ validate: (value) => {
56
+ const num = parseFloat(value);
57
+ return (num >= 0 && num <= 2) || 'Please enter a number between 0 and 2';
58
+ },
59
+ }));
60
+ options.cheap = await confirm({
61
+ message: 'Use cheaper, faster model?',
62
+ default: options.cheap || false,
63
+ });
64
+ options.geminiBlockNone = await confirm({
65
+ message: 'Disable safety settings for Gemini Pro model?',
66
+ default: options.geminiBlockNone || false,
67
+ });
68
+ };
69
+ const configureVisionAndImageOptions = async (options) => {
70
+ options.vision = await confirm({
71
+ message: 'Enable vision capabilities?',
72
+ default: options.vision || false,
73
+ });
74
+ if (await confirm({ message: 'Enable image generation?', default: !!options.imagen })) {
75
+ options.imagen = await select({
76
+ message: 'Select image generation service:',
77
+ choices: [
78
+ { name: 'Vertex AI', value: 'vertex-ai' },
79
+ { name: 'DALL-E', value: 'dall-e' },
80
+ ],
81
+ default: options.imagen || 'vertex-ai',
82
+ });
83
+ }
84
+ else {
85
+ options.imagen = undefined;
86
+ }
87
+ };
88
+ const configureContentMaskAndIgnorePatterns = async (options) => {
89
+ options.contentMask = await input({
90
+ message: 'Enter content mask (prefix of path relative to rootDir):',
91
+ default: options.contentMask || '',
92
+ });
93
+ const ignorePatterns = await input({
94
+ message: 'Enter ignore patterns (comma-separated):',
95
+ default: options.ignorePatterns?.join(',') || '',
96
+ });
97
+ options.ignorePatterns = ignorePatterns ? ignorePatterns.split(',').map((p) => p.trim()) : undefined;
98
+ };
99
+ //# sourceMappingURL=configure.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configure.js","sourceRoot":"","sources":["../../../src/main/interactive/configure.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export declare function handleError(error: unknown): Promise<void>;
2
+ export declare class CodegenError extends Error {
3
+ constructor(message: string);
4
+ }
@@ -0,0 +1,49 @@
1
+ import { handleCodegenError } from './common.js';
2
+ export async function handleError(error) {
3
+ console.error('An error occurred:');
4
+ if (error instanceof Error) {
5
+ console.error(error.message);
6
+ if (error.stack) {
7
+ console.error('Stack trace:');
8
+ console.error(error.stack);
9
+ }
10
+ }
11
+ else {
12
+ console.error(String(error));
13
+ }
14
+ let action;
15
+ if (isCodegenError(error)) {
16
+ action = await handleCodegenError(error);
17
+ }
18
+ else {
19
+ action = await handleGeneralError();
20
+ }
21
+ handleErrorAction(action);
22
+ }
23
+ function isCodegenError(error) {
24
+ return error instanceof Error && error.name === 'CodegenError';
25
+ }
26
+ async function handleGeneralError() {
27
+ console.log('An unexpected error occurred. Returning to main menu.');
28
+ return 'main_menu';
29
+ }
30
+ function handleErrorAction(action) {
31
+ switch (action) {
32
+ case 're_run':
33
+ console.log('Re-running the last operation...');
34
+ // Logic to re-run the last operation should be implemented here
35
+ break;
36
+ case 'main_menu':
37
+ console.log('Returning to main menu...');
38
+ break;
39
+ default:
40
+ console.log('Invalid action. Returning to main menu...');
41
+ }
42
+ }
43
+ export class CodegenError extends Error {
44
+ constructor(message) {
45
+ super(message);
46
+ this.name = 'CodegenError';
47
+ }
48
+ }
49
+ //# sourceMappingURL=error-handling.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error-handling.js","sourceRoot":"","sources":["../../../src/main/interactive/error-handling.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAE7D,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,KAAc;IAC9C,OAAO,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;IAEpC,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;QAC3B,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC7B,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;YAChB,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;YAC9B,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IAC/B,CAAC;IAED,IAAI,MAAkB,CAAC;IAEvB,IAAI,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1B,MAAM,GAAG,MAAM,kBAAkB,CAAC,KAAK,CAAC,CAAC;IAC3C,CAAC;SAAM,CAAC;QACN,MAAM,GAAG,MAAM,kBAAkB,EAAE,CAAC;IACtC,CAAC;IAED,iBAAiB,CAAC,MAAM,CAAC,CAAC;AAC5B,CAAC;AAED,SAAS,cAAc,CAAC,KAAc;IACpC,OAAO,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,CAAC;AACjE,CAAC;AAED,KAAK,UAAU,kBAAkB;IAC/B,OAAO,CAAC,GAAG,CAAC,uDAAuD,CAAC,CAAC;IACrE,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,SAAS,iBAAiB,CAAC,MAAkB;IAC3C,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,QAAQ;YACX,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;YAChD,gEAAgE;YAChE,MAAM;QACR,KAAK,WAAW;YACd,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;YACzC,MAAM;QACR;YACE,OAAO,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAC;IAC7D,CAAC;AACH,CAAC;AAED,MAAM,OAAO,YAAa,SAAQ,KAAK;IACrC,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;IAC7B,CAAC;CACF"}
@@ -0,0 +1 @@
1
+ export declare function displayHelp(): void;
@@ -0,0 +1,22 @@
1
+ import { printHelpMessage } from '../../cli/cli-options.js';
2
+ import { CODEGEN_TRIGGER } from '../../prompt/prompt-consts.js';
3
+ export function displayHelp() {
4
+ console.log('Genaicode Interactive Mode Help');
5
+ console.log('===============================');
6
+ console.log('This interactive mode allows you to use Genaicode with various options.');
7
+ console.log('Here are the available actions:');
8
+ console.log('');
9
+ console.log('1. Enter a text prompt: Provide a custom prompt for code generation.');
10
+ console.log('2. Select a task file: Choose a file containing a task description.');
11
+ console.log(`3. Process ${CODEGEN_TRIGGER} comments: Analyze and process ${CODEGEN_TRIGGER} comments in your codebase.`);
12
+ console.log('4. Select AI service: Choose the AI model for code generation.');
13
+ console.log('5. Configuration: Modify various options for code generation.');
14
+ console.log('6. Print help: Display this help message.');
15
+ console.log('7. Exit: Quit the interactive mode.');
16
+ console.log('');
17
+ console.log('For more detailed information about CLI options, see below:');
18
+ console.log('');
19
+ // Print the CLI help message
20
+ printHelpMessage();
21
+ }
22
+ //# sourceMappingURL=help.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"help.js","sourceRoot":"","sources":["../../../src/main/interactive/help.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAEhE,MAAM,UAAU,WAAW;IACzB,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;IAC/C,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;IAC/C,OAAO,CAAC,GAAG,CAAC,yEAAyE,CAAC,CAAC;IACvF,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;IAC/C,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,sEAAsE,CAAC,CAAC;IACpF,OAAO,CAAC,GAAG,CAAC,qEAAqE,CAAC,CAAC;IACnF,OAAO,CAAC,GAAG,CACT,cAAc,eAAe,kCAAkC,eAAe,6BAA6B,CAC5G,CAAC;IACF,OAAO,CAAC,GAAG,CAAC,gEAAgE,CAAC,CAAC;IAC9E,OAAO,CAAC,GAAG,CAAC,+DAA+D,CAAC,CAAC;IAC7E,OAAO,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAC;IACzD,OAAO,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC;IACnD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,6DAA6D,CAAC,CAAC;IAC3E,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,6BAA6B;IAC7B,gBAAgB,EAAE,CAAC;AACrB,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { CodegenOptions } from '../codegen-types.js';
2
+ export declare function runProcessComments(options: CodegenOptions): Promise<void>;
@@ -0,0 +1,39 @@
1
+ import fs from 'fs';
2
+ import { getSourceFiles } from '../../files/find-files.js';
3
+ import { CODEGEN_TRIGGER } from '../../prompt/prompt-consts.js';
4
+ import { runCodegenWorker } from './codegen-worker.js';
5
+ // Function to check for CODEGEN comments in source files
6
+ const checkForCodegenComments = () => {
7
+ try {
8
+ const sourceFiles = getSourceFiles();
9
+ return sourceFiles.some((file) => {
10
+ try {
11
+ const content = fs.readFileSync(file, 'utf-8');
12
+ return content.includes(CODEGEN_TRIGGER);
13
+ }
14
+ catch (error) {
15
+ console.error(`Error reading file ${file}:`, error);
16
+ return false;
17
+ }
18
+ });
19
+ }
20
+ catch (error) {
21
+ console.error('Error getting source files:', error);
22
+ return false;
23
+ }
24
+ };
25
+ export async function runProcessComments(options) {
26
+ try {
27
+ const hasCodegenComments = checkForCodegenComments();
28
+ if (!hasCodegenComments) {
29
+ console.warn(`Warning: No ${CODEGEN_TRIGGER} comments found in the source code.`);
30
+ }
31
+ console.log(`Processing ${CODEGEN_TRIGGER} comments...`);
32
+ await runCodegenWorker(options);
33
+ }
34
+ catch (error) {
35
+ console.error('Error in runProcessComments:', error);
36
+ return Promise.reject(error);
37
+ }
38
+ }
39
+ //# sourceMappingURL=process-comments.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"process-comments.js","sourceRoot":"","sources":["../../../src/main/interactive/process-comments.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAEhE,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAEvD,yDAAyD;AACzD,MAAM,uBAAuB,GAAG,GAAY,EAAE;IAC5C,IAAI,CAAC;QACH,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;QACrC,OAAO,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;YAC/B,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;gBAC/C,OAAO,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;YAC3C,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,KAAK,CAAC,sBAAsB,IAAI,GAAG,EAAE,KAAK,CAAC,CAAC;gBACpD,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,6BAA6B,EAAE,KAAK,CAAC,CAAC;QACpD,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,OAAuB;IAC9D,IAAI,CAAC;QACH,MAAM,kBAAkB,GAAG,uBAAuB,EAAE,CAAC;QACrD,IAAI,CAAC,kBAAkB,EAAE,CAAC;YACxB,OAAO,CAAC,IAAI,CAAC,eAAe,eAAe,qCAAqC,CAAC,CAAC;QACpF,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,cAAc,eAAe,cAAc,CAAC,CAAC;QAEzD,MAAM,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAClC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,8BAA8B,EAAE,KAAK,CAAC,CAAC;QACrD,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC/B,CAAC;AACH,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { AiServiceType } from '../codegen-types.js';
2
+ export declare const selectAiService: (defaultAiService: AiServiceType | undefined) => Promise<AiServiceType>;