genaicode 0.6.1 → 0.8.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 (261) hide show
  1. package/README.md +0 -2
  2. package/dist/ai-service/ai-studio.js +7 -1
  3. package/dist/ai-service/ai-studio.js.map +1 -1
  4. package/dist/ai-service/anthropic.js +49 -19
  5. package/dist/ai-service/anthropic.js.map +1 -1
  6. package/dist/ai-service/chat-gpt.js +28 -11
  7. package/dist/ai-service/chat-gpt.js.map +1 -1
  8. package/dist/ai-service/common.d.ts +5 -4
  9. package/dist/ai-service/common.js +3 -4
  10. package/dist/ai-service/common.js.map +1 -1
  11. package/dist/ai-service/common.test.js +1 -1
  12. package/dist/ai-service/vertex-ai-claude.js +1 -1
  13. package/dist/ai-service/vertex-ai-claude.js.map +1 -1
  14. package/dist/ai-service/vertex-ai.js +7 -1
  15. package/dist/ai-service/vertex-ai.js.map +1 -1
  16. package/dist/cli/cli-options.js +0 -12
  17. package/dist/cli/cli-options.js.map +1 -1
  18. package/dist/cli/cli-params.d.ts +1 -4
  19. package/dist/cli/cli-params.js +1 -10
  20. package/dist/cli/cli-params.js.map +1 -1
  21. package/dist/cli/validate-cli-params.js +1 -7
  22. package/dist/cli/validate-cli-params.js.map +1 -1
  23. package/dist/cli/validate-cli-params.test.js +1 -1
  24. package/dist/cli/validate-cli-params.test.js.map +1 -1
  25. package/dist/eval/codegen-summary.test.d.ts +1 -0
  26. package/dist/eval/codegen-summary.test.js +93 -0
  27. package/dist/eval/codegen-summary.test.js.map +1 -0
  28. package/dist/eval/current-prompt-plugin.d.ts +3 -0
  29. package/dist/eval/current-prompt-plugin.js +10 -0
  30. package/dist/eval/current-prompt-plugin.js.map +1 -0
  31. package/dist/eval/data/current-prompt.d.ts +34 -0
  32. package/dist/eval/data/current-prompt.js +59 -0
  33. package/dist/eval/data/current-prompt.js.map +1 -0
  34. package/dist/eval/data/prompt-assistant-image.d.ts +49 -0
  35. package/dist/eval/data/prompt-assistant-image.js +67 -0
  36. package/dist/eval/data/prompt-assistant-image.js.map +1 -0
  37. package/dist/eval/data/prompt3.d.ts +34 -0
  38. package/dist/eval/data/prompt3.js +71 -0
  39. package/dist/eval/data/prompt3.js.map +1 -0
  40. package/dist/eval/prompt-debug.test.d.ts +1 -0
  41. package/dist/eval/prompt-debug.test.js +76 -0
  42. package/dist/eval/prompt-debug.test.js.map +1 -0
  43. package/dist/eval/prompt2.d.ts +34 -0
  44. package/dist/eval/prompt2.js +125 -0
  45. package/dist/eval/prompt2.js.map +1 -0
  46. package/dist/files/read-files.d.ts +29 -6
  47. package/dist/files/read-files.js +31 -10
  48. package/dist/files/read-files.js.map +1 -1
  49. package/dist/files/read-files.test.js +15 -9
  50. package/dist/files/read-files.test.js.map +1 -1
  51. package/dist/files/source-code-tree.d.ts +17 -0
  52. package/dist/files/source-code-tree.js +70 -0
  53. package/dist/files/source-code-tree.js.map +1 -0
  54. package/dist/main/codegen-types.d.ts +8 -5
  55. package/dist/main/codegen.ai-services.test.d.ts +3 -0
  56. package/dist/main/codegen.ai-services.test.js +198 -0
  57. package/dist/main/codegen.ai-services.test.js.map +1 -0
  58. package/dist/main/codegen.cli-options.test.d.ts +3 -0
  59. package/dist/main/codegen.cli-options.test.js +171 -0
  60. package/dist/main/codegen.cli-options.test.js.map +1 -0
  61. package/dist/main/codegen.image-generation.test.d.ts +3 -0
  62. package/dist/main/codegen.image-generation.test.js +187 -0
  63. package/dist/main/codegen.image-generation.test.js.map +1 -0
  64. package/dist/main/codegen.js +2 -5
  65. package/dist/main/codegen.js.map +1 -1
  66. package/dist/main/codegen.test-utils.d.ts +81 -0
  67. package/dist/main/codegen.test-utils.js +88 -0
  68. package/dist/main/codegen.test-utils.js.map +1 -0
  69. package/dist/main/codegen.test.js +47 -28
  70. package/dist/main/codegen.test.js.map +1 -1
  71. package/dist/main/common/content-bus-types.d.ts +6 -0
  72. package/dist/main/common/content-bus.d.ts +2 -2
  73. package/dist/main/common/content-bus.js +3 -1
  74. package/dist/main/common/content-bus.js.map +1 -1
  75. package/dist/main/common/user-actions.d.ts +8 -2
  76. package/dist/main/common/user-actions.js.map +1 -1
  77. package/dist/main/config-lib.js +20 -2
  78. package/dist/main/config-lib.js.map +1 -1
  79. package/dist/main/config.js +4 -28
  80. package/dist/main/config.js.map +1 -1
  81. package/dist/main/interactive/codegen-interactive.js +0 -4
  82. package/dist/main/interactive/codegen-interactive.js.map +1 -1
  83. package/dist/main/interactive/codegen-interactive.test.js +1 -7
  84. package/dist/main/interactive/codegen-interactive.test.js.map +1 -1
  85. package/dist/main/interactive/common.d.ts +1 -1
  86. package/dist/main/interactive/common.js +0 -2
  87. package/dist/main/interactive/common.js.map +1 -1
  88. package/dist/main/interactive/configure.js +0 -2
  89. package/dist/main/interactive/configure.js.map +1 -1
  90. package/dist/main/interactive/help.js +0 -2
  91. package/dist/main/interactive/help.js.map +1 -1
  92. package/dist/main/interactive/task-file.js +1 -1
  93. package/dist/main/interactive/task-file.js.map +1 -1
  94. package/dist/main/interactive/text-prompt.js +1 -1
  95. package/dist/main/interactive/text-prompt.js.map +1 -1
  96. package/dist/main/interactive/user-action-handlers.js +4 -2
  97. package/dist/main/interactive/user-action-handlers.js.map +1 -1
  98. package/dist/main/plugin-loader.d.ts +7 -1
  99. package/dist/main/plugin-loader.js +61 -0
  100. package/dist/main/plugin-loader.js.map +1 -1
  101. package/dist/main/ui/backend/api.js +9 -3
  102. package/dist/main/ui/backend/api.js.map +1 -1
  103. package/dist/main/ui/backend/service.d.ts +2 -1
  104. package/dist/main/ui/backend/service.js +6 -3
  105. package/dist/main/ui/backend/service.js.map +1 -1
  106. package/dist/main/ui/frontend/assets/index-QOcNx5ac.js +812 -0
  107. package/dist/main/ui/frontend/index.html +1 -1
  108. package/dist/main/ui/user-action-handlers.js +1 -1
  109. package/dist/main/ui/user-action-handlers.js.map +1 -1
  110. package/dist/project-profiles/detection.d.ts +40 -0
  111. package/dist/project-profiles/detection.js +131 -0
  112. package/dist/project-profiles/detection.js.map +1 -0
  113. package/dist/project-profiles/index.d.ts +35 -0
  114. package/dist/project-profiles/index.js +72 -0
  115. package/dist/project-profiles/index.js.map +1 -0
  116. package/dist/project-profiles/profiles/golang.d.ts +65 -0
  117. package/dist/project-profiles/profiles/golang.js +208 -0
  118. package/dist/project-profiles/profiles/golang.js.map +1 -0
  119. package/dist/project-profiles/profiles/java-maven.d.ts +80 -0
  120. package/dist/project-profiles/profiles/java-maven.js +165 -0
  121. package/dist/project-profiles/profiles/java-maven.js.map +1 -0
  122. package/dist/project-profiles/profiles/javascript-npm.d.ts +40 -0
  123. package/dist/project-profiles/profiles/javascript-npm.js +118 -0
  124. package/dist/project-profiles/profiles/javascript-npm.js.map +1 -0
  125. package/dist/project-profiles/profiles/javascript-react.d.ts +46 -0
  126. package/dist/project-profiles/profiles/javascript-react.js +147 -0
  127. package/dist/project-profiles/profiles/javascript-react.js.map +1 -0
  128. package/dist/project-profiles/profiles/python-django.d.ts +58 -0
  129. package/dist/project-profiles/profiles/python-django.js +200 -0
  130. package/dist/project-profiles/profiles/python-django.js.map +1 -0
  131. package/dist/project-profiles/types.d.ts +122 -0
  132. package/dist/project-profiles/types.js +77 -0
  133. package/dist/project-profiles/types.js.map +1 -0
  134. package/dist/prompt/function-calling.js +8 -3
  135. package/dist/prompt/function-calling.js.map +1 -1
  136. package/dist/prompt/function-defs/ask-question.d.ts +5 -0
  137. package/dist/prompt/function-defs/ask-question.js +140 -60
  138. package/dist/prompt/function-defs/ask-question.js.map +1 -1
  139. package/dist/prompt/function-defs/codegen-planning.d.ts +8 -0
  140. package/dist/prompt/function-defs/codegen-planning.js +50 -0
  141. package/dist/prompt/function-defs/codegen-planning.js.map +1 -0
  142. package/dist/prompt/function-defs/codegen-summary.js +2 -2
  143. package/dist/prompt/function-defs/codegen-summary.js.map +1 -1
  144. package/dist/prompt/function-defs/get-source-code.js +32 -2
  145. package/dist/prompt/function-defs/get-source-code.js.map +1 -1
  146. package/dist/prompt/function-defs/optimize-context.js +35 -12
  147. package/dist/prompt/function-defs/optimize-context.js.map +1 -1
  148. package/dist/prompt/function-defs/set-summaries.js +20 -1
  149. package/dist/prompt/function-defs/set-summaries.js.map +1 -1
  150. package/dist/prompt/limits.js +2 -2
  151. package/dist/prompt/limits.js.map +1 -1
  152. package/dist/prompt/limits.test.js +3 -3
  153. package/dist/prompt/limits.test.js.map +1 -1
  154. package/dist/prompt/prompt-codegen.js +7 -79
  155. package/dist/prompt/prompt-codegen.js.map +1 -1
  156. package/dist/prompt/prompt-codegen.test.js +8 -14
  157. package/dist/prompt/prompt-codegen.test.js.map +1 -1
  158. package/dist/prompt/prompt-service-ask-question.test.js +27 -80
  159. package/dist/prompt/prompt-service-ask-question.test.js.map +1 -1
  160. package/dist/prompt/prompt-service.ai-services.test.d.ts +1 -0
  161. package/dist/prompt/prompt-service.ai-services.test.js +149 -0
  162. package/dist/prompt/prompt-service.ai-services.test.js.map +1 -0
  163. package/dist/prompt/prompt-service.context-optimization.test.d.ts +1 -0
  164. package/dist/prompt/prompt-service.context-optimization.test.js +212 -0
  165. package/dist/prompt/prompt-service.context-optimization.test.js.map +1 -0
  166. package/dist/prompt/prompt-service.image-handling.test.d.ts +1 -0
  167. package/dist/prompt/prompt-service.image-handling.test.js +212 -0
  168. package/dist/prompt/prompt-service.image-handling.test.js.map +1 -0
  169. package/dist/prompt/prompt-service.js +41 -127
  170. package/dist/prompt/prompt-service.js.map +1 -1
  171. package/dist/prompt/prompt-service.test-utils.d.ts +66 -0
  172. package/dist/prompt/prompt-service.test-utils.js +169 -0
  173. package/dist/prompt/prompt-service.test-utils.js.map +1 -0
  174. package/dist/prompt/prompt-service.test.js +96 -20
  175. package/dist/prompt/prompt-service.test.js.map +1 -1
  176. package/dist/prompt/prompt-service.validation-recovery.test.d.ts +1 -0
  177. package/dist/prompt/prompt-service.validation-recovery.test.js +263 -0
  178. package/dist/prompt/prompt-service.validation-recovery.test.js.map +1 -0
  179. package/dist/prompt/static-prompts.d.ts +16 -0
  180. package/dist/prompt/static-prompts.js +22 -0
  181. package/dist/prompt/static-prompts.js.map +1 -0
  182. package/dist/prompt/steps/step-ask-question/handlers/cancel-code-generation.js +1 -3
  183. package/dist/prompt/steps/step-ask-question/handlers/cancel-code-generation.js.map +1 -1
  184. package/dist/prompt/steps/step-ask-question/handlers/code-generation.d.ts +2 -0
  185. package/dist/prompt/steps/step-ask-question/handlers/code-generation.js +58 -0
  186. package/dist/prompt/steps/step-ask-question/handlers/code-generation.js.map +1 -0
  187. package/dist/prompt/steps/step-ask-question/handlers/confirm-code-generation.d.ts +1 -1
  188. package/dist/prompt/steps/step-ask-question/handlers/confirm-code-generation.js +8 -7
  189. package/dist/prompt/steps/step-ask-question/handlers/confirm-code-generation.js.map +1 -1
  190. package/dist/prompt/steps/step-ask-question/handlers/context-optimization.js +6 -6
  191. package/dist/prompt/steps/step-ask-question/handlers/context-optimization.js.map +1 -1
  192. package/dist/prompt/steps/step-ask-question/handlers/default-action.js +1 -4
  193. package/dist/prompt/steps/step-ask-question/handlers/default-action.js.map +1 -1
  194. package/dist/prompt/steps/step-ask-question/handlers/handle-request-answer-with-image.d.ts +2 -0
  195. package/dist/prompt/steps/step-ask-question/handlers/handle-request-answer-with-image.js +86 -0
  196. package/dist/prompt/steps/step-ask-question/handlers/handle-request-answer-with-image.js.map +1 -0
  197. package/dist/prompt/steps/step-ask-question/handlers/handle-send-message-with-image.d.ts +2 -0
  198. package/dist/prompt/steps/step-ask-question/handlers/handle-send-message-with-image.js +97 -0
  199. package/dist/prompt/steps/step-ask-question/handlers/handle-send-message-with-image.js.map +1 -0
  200. package/dist/prompt/steps/step-ask-question/handlers/handle-send-message.d.ts +2 -0
  201. package/dist/prompt/steps/step-ask-question/handlers/handle-send-message.js +20 -0
  202. package/dist/prompt/steps/step-ask-question/handlers/handle-send-message.js.map +1 -0
  203. package/dist/prompt/steps/step-ask-question/handlers/handler-utils.d.ts +0 -0
  204. package/dist/prompt/steps/step-ask-question/handlers/handler-utils.js +2 -0
  205. package/dist/prompt/steps/step-ask-question/handlers/handler-utils.js.map +1 -0
  206. package/dist/prompt/steps/step-ask-question/handlers/remove-files-from-context.d.ts +1 -1
  207. package/dist/prompt/steps/step-ask-question/handlers/remove-files-from-context.js +57 -15
  208. package/dist/prompt/steps/step-ask-question/handlers/remove-files-from-context.js.map +1 -1
  209. package/dist/prompt/steps/step-ask-question/handlers/request-files-content.d.ts +1 -1
  210. package/dist/prompt/steps/step-ask-question/handlers/request-files-content.js +109 -12
  211. package/dist/prompt/steps/step-ask-question/handlers/request-files-content.js.map +1 -1
  212. package/dist/prompt/steps/step-ask-question/handlers/request-permissions.d.ts +1 -1
  213. package/dist/prompt/steps/step-ask-question/handlers/request-permissions.js +48 -26
  214. package/dist/prompt/steps/step-ask-question/handlers/request-permissions.js.map +1 -1
  215. package/dist/prompt/steps/step-ask-question/handlers/start-code-generation.js +1 -1
  216. package/dist/prompt/steps/step-ask-question/handlers/start-code-generation.js.map +1 -1
  217. package/dist/prompt/steps/step-ask-question/step-ask-question-reflect.js +1 -0
  218. package/dist/prompt/steps/step-ask-question/step-ask-question-reflect.js.map +1 -1
  219. package/dist/prompt/steps/step-ask-question/step-ask-question-types.d.ts +25 -21
  220. package/dist/prompt/steps/step-ask-question/step-ask-question.d.ts +2 -5
  221. package/dist/prompt/steps/step-ask-question/step-ask-question.js +36 -33
  222. package/dist/prompt/steps/step-ask-question/step-ask-question.js.map +1 -1
  223. package/dist/prompt/steps/step-codegen-planning.d.ts +10 -0
  224. package/dist/prompt/steps/step-codegen-planning.js +69 -0
  225. package/dist/prompt/steps/step-codegen-planning.js.map +1 -0
  226. package/dist/prompt/steps/step-codegen-summary.d.ts +7 -0
  227. package/dist/prompt/steps/step-codegen-summary.js +106 -0
  228. package/dist/prompt/steps/step-codegen-summary.js.map +1 -0
  229. package/dist/prompt/steps/step-codegen-summary.test.d.ts +1 -0
  230. package/dist/prompt/steps/step-codegen-summary.test.js +136 -0
  231. package/dist/prompt/steps/step-codegen-summary.test.js.map +1 -0
  232. package/dist/prompt/steps/step-context-optimization.js +243 -126
  233. package/dist/prompt/steps/step-context-optimization.js.map +1 -1
  234. package/dist/prompt/steps/step-context-optimization.test.d.ts +2 -0
  235. package/dist/prompt/steps/step-context-optimization.test.js +475 -0
  236. package/dist/prompt/steps/step-context-optimization.test.js.map +1 -0
  237. package/dist/prompt/steps/step-ensure-context.d.ts +15 -0
  238. package/dist/prompt/steps/step-ensure-context.js +102 -0
  239. package/dist/prompt/steps/step-ensure-context.js.map +1 -0
  240. package/dist/prompt/steps/step-ensure-context.test.d.ts +1 -0
  241. package/dist/prompt/steps/step-ensure-context.test.js +242 -0
  242. package/dist/prompt/steps/step-ensure-context.test.js.map +1 -0
  243. package/dist/prompt/steps/step-generate-image.d.ts +8 -1
  244. package/dist/prompt/steps/step-generate-image.js +1 -0
  245. package/dist/prompt/steps/step-generate-image.js.map +1 -1
  246. package/dist/prompt/steps/step-summarization.d.ts +2 -2
  247. package/dist/prompt/steps/step-summarization.js +45 -9
  248. package/dist/prompt/steps/step-summarization.js.map +1 -1
  249. package/dist/prompt/steps/step-validate-recover.js +24 -15
  250. package/dist/prompt/steps/step-validate-recover.js.map +1 -1
  251. package/dist/prompt/steps/steps-types.d.ts +2 -0
  252. package/dist/prompt/steps/steps-types.js.map +1 -1
  253. package/dist/prompt/systemprompt.d.ts +2 -2
  254. package/dist/prompt/systemprompt.js +74 -176
  255. package/dist/prompt/systemprompt.js.map +1 -1
  256. package/dist/prompt/systemprompt.test.js +4 -5
  257. package/dist/prompt/systemprompt.test.js.map +1 -1
  258. package/dist/vite-genaicode/vite-genaicode-plugin.js +0 -2
  259. package/dist/vite-genaicode/vite-genaicode-plugin.js.map +1 -1
  260. package/package.json +6 -2
  261. package/dist/main/ui/frontend/assets/index-Dk_qaEQg.js +0 -782
@@ -0,0 +1,69 @@
1
+ import { getFunctionDefs } from '../function-calling.js';
2
+ import { putSystemMessage } from '../../main/common/content-bus.js';
3
+ import { validateAndRecoverSingleResult } from './step-validate-recover.js';
4
+ import { StepResult } from './steps-types.js';
5
+ import { CODEGEN_SUMMARY_PROMPT } from '../static-prompts.js';
6
+ export const PLANNING_PROMPT = `Please analyze the conversation so far and help plan the implementation:
7
+
8
+ 1. Review the conversation history and requirements
9
+ 2. Thoughtfully analyze the problem
10
+ 3. Create a step-by-step implementation plan
11
+ 4. List all files that will be affected during implementation
12
+
13
+ Remember to:
14
+ - Consider both direct and indirect dependencies
15
+ - Think about how changes in one file might affect others
16
+ - Include all necessary file paths
17
+ - Explain your reasoning for each step
18
+ - Consider edge cases and potential issues
19
+
20
+ Output the plan using \`codegenPlanning\` function provding all the required fields.`;
21
+ /**
22
+ * Execute the codegen planning step
23
+ * This step analyzes the conversation and produces a detailed implementation plan
24
+ * before proceeding with actual code generation
25
+ */
26
+ export async function executeStepCodegenPlanning(generateContentFn, prompt, options) {
27
+ putSystemMessage('Starting codegen planning phase...');
28
+ // Add the planning prompt to the conversation
29
+ if (prompt.slice(-1)[0].type === 'user') {
30
+ prompt.slice(-1)[0].text += '\n\\n' + PLANNING_PROMPT;
31
+ }
32
+ else {
33
+ prompt.push({ type: 'user', text: PLANNING_PROMPT });
34
+ }
35
+ const planningRequest = [
36
+ prompt,
37
+ getFunctionDefs(),
38
+ 'codegenPlanning',
39
+ options.temperature ?? 0.7,
40
+ options.cheap ?? true,
41
+ options,
42
+ ];
43
+ try {
44
+ let planningResult = await generateContentFn(...planningRequest);
45
+ planningResult = await validateAndRecoverSingleResult(planningRequest, planningResult, generateContentFn);
46
+ const codegenPlanningRequest = planningResult.find((call) => call.name === 'codegenPlanning');
47
+ if (codegenPlanningRequest) {
48
+ putSystemMessage('Planning phase completed successfully', codegenPlanningRequest);
49
+ // Store the planning response in conversation history
50
+ prompt.push({ type: 'assistant', functionCalls: planningResult });
51
+ prompt.push({
52
+ type: 'user',
53
+ functionResponses: planningResult.map((call) => ({ name: call.name, call_id: call.id })),
54
+ text: CODEGEN_SUMMARY_PROMPT,
55
+ cache: true,
56
+ });
57
+ return StepResult.CONTINUE;
58
+ }
59
+ else {
60
+ putSystemMessage('Did not receive codegen planning result');
61
+ return StepResult.BREAK;
62
+ }
63
+ }
64
+ catch (error) {
65
+ putSystemMessage('Error during planning phase: ' + error.message);
66
+ return StepResult.BREAK;
67
+ }
68
+ }
69
+ //# sourceMappingURL=step-codegen-planning.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"step-codegen-planning.js","sourceRoot":"","sources":["../../../src/prompt/steps/step-codegen-planning.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAAE,8BAA8B,EAAE,MAAM,4BAA4B,CAAC;AAC5E,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAE9D,MAAM,CAAC,MAAM,eAAe,GAAG;;;;;;;;;;;;;;qFAcsD,CAAC;AAEtF;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAC9C,iBAA0C,EAC1C,MAAoB,EACpB,OAAuB;IAEvB,gBAAgB,CAAC,oCAAoC,CAAC,CAAC;IAEvD,8CAA8C;IAC9C,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QACxC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,OAAO,GAAG,eAAe,CAAC;IACxD,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC,CAAC;IACvD,CAAC;IAED,MAAM,eAAe,GAA2E;QAC9F,MAAM;QACN,eAAe,EAAE;QACjB,iBAAiB;QACjB,OAAO,CAAC,WAAW,IAAI,GAAG;QAC1B,OAAO,CAAC,KAAK,IAAI,IAAI;QACrB,OAAO;KACR,CAAC;IAEF,IAAI,CAAC;QACH,IAAI,cAAc,GAAG,MAAM,iBAAiB,CAAC,GAAG,eAAe,CAAC,CAAC;QACjE,cAAc,GAAG,MAAM,8BAA8B,CAAC,eAAe,EAAE,cAAc,EAAE,iBAAiB,CAAC,CAAC;QAE1G,MAAM,sBAAsB,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,iBAAiB,CAAC,CAAC;QAE9F,IAAI,sBAAsB,EAAE,CAAC;YAC3B,gBAAgB,CAAC,uCAAuC,EAAE,sBAAsB,CAAC,CAAC;YAElF,sDAAsD;YACtD,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,aAAa,EAAE,cAAc,EAAE,CAAC,CAAC;YAClE,MAAM,CAAC,IAAI,CAAC;gBACV,IAAI,EAAE,MAAM;gBACZ,iBAAiB,EAAE,cAAc,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;gBACxF,IAAI,EAAE,sBAAsB;gBAC5B,KAAK,EAAE,IAAI;aACZ,CAAC,CAAC;YAEH,OAAO,UAAU,CAAC,QAAQ,CAAC;QAC7B,CAAC;aAAM,CAAC;YACN,gBAAgB,CAAC,yCAAyC,CAAC,CAAC;YAC5D,OAAO,UAAU,CAAC,KAAK,CAAC;QAC1B,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,gBAAgB,CAAC,+BAA+B,GAAI,KAAe,CAAC,OAAO,CAAC,CAAC;QAC7E,OAAO,UAAU,CAAC,KAAK,CAAC;IAC1B,CAAC;AACH,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { FunctionCall, FunctionDef, GenerateContentFunction, GenerateImageFunction, PromptItem } from '../../ai-service/common.js';
2
+ import { CodegenOptions } from '../../main/codegen-types.js';
3
+ /**
4
+ * Executes the codegen summary step.
5
+ * This step generates a summary of the planned code changes and processes each file update.
6
+ */
7
+ export declare function executeStepCodegenSummary(generateContentFn: GenerateContentFunction, prompt: PromptItem[], functionDefs: FunctionDef[], options: CodegenOptions, waitIfPaused?: () => Promise<void>, generateImageFn?: GenerateImageFunction): Promise<FunctionCall[]>;
@@ -0,0 +1,106 @@
1
+ import assert from 'node:assert';
2
+ import fs from 'fs';
3
+ import mime from 'mime-types';
4
+ import { validateAndRecoverSingleResult } from './step-validate-recover.js';
5
+ import { putSystemMessage } from '../../main/common/content-bus.js';
6
+ import { executeStepGenerateImage } from './step-generate-image.js';
7
+ import { executeStepVerifyPatch } from './step-verify-patch.js';
8
+ import { getPartialPromptTemplate } from '../static-prompts.js';
9
+ import { executeStepEnsureContext } from './step-ensure-context.js';
10
+ import { StepResult } from './steps-types.js';
11
+ /**
12
+ * Executes the codegen summary step.
13
+ * This step generates a summary of the planned code changes and processes each file update.
14
+ */
15
+ export async function executeStepCodegenSummary(generateContentFn, prompt, functionDefs, options, waitIfPaused = () => Promise.resolve(), generateImageFn) {
16
+ const baseRequest = [
17
+ prompt,
18
+ functionDefs,
19
+ 'codegenSummary',
20
+ options.temperature ?? 0.7,
21
+ options.cheap ?? false,
22
+ options,
23
+ ];
24
+ let baseResult = await generateContentFn(...baseRequest);
25
+ let codegenSummaryRequest = baseResult.find((call) => call.name === 'codegenSummary');
26
+ if (codegenSummaryRequest) {
27
+ // Second stage: for each file request the actual code updates
28
+ baseResult = await validateAndRecoverSingleResult(baseRequest, baseResult, generateContentFn);
29
+ codegenSummaryRequest = baseResult.find((call) => call.name === 'codegenSummary');
30
+ putSystemMessage('Received codegen summary, will collect partial updates', codegenSummaryRequest);
31
+ // Sometimes the result happens to be a string
32
+ assert(Array.isArray(codegenSummaryRequest?.args?.fileUpdates), 'fileUpdates is not an array');
33
+ assert(Array.isArray(codegenSummaryRequest?.args.contextPaths), 'contextPaths is not an array');
34
+ // Ensure all necessary files are in context
35
+ const contextResult = await executeStepEnsureContext(prompt, codegenSummaryRequest, options);
36
+ if (contextResult === StepResult.BREAK) {
37
+ return baseResult;
38
+ }
39
+ // Store the first stage response entirely in conversation history
40
+ prompt.push({ type: 'assistant', functionCalls: baseResult });
41
+ prompt.push({
42
+ type: 'user',
43
+ functionResponses: baseResult.map((call) => ({ name: call.name, call_id: call.id })),
44
+ cache: true,
45
+ });
46
+ const result = [];
47
+ for (const file of codegenSummaryRequest.args.fileUpdates) {
48
+ putSystemMessage('Collecting partial update for: ' + file.filePath + ' using tool: ' + file.updateToolName, file);
49
+ // Check if execution is paused before proceeding
50
+ await waitIfPaused();
51
+ // this is needed, otherwise we will get an error
52
+ if (prompt.slice(-1)[0].type === 'user') {
53
+ prompt.slice(-1)[0].text = file.prompt ?? getPartialPromptTemplate(file.filePath);
54
+ }
55
+ else {
56
+ prompt.push({ type: 'user', text: file.prompt ?? getPartialPromptTemplate(file.filePath) });
57
+ }
58
+ if (options.vision && file.contextImageAssets) {
59
+ prompt.slice(-1)[0].images = file.contextImageAssets.map((path) => ({
60
+ path,
61
+ base64url: fs.readFileSync(path, 'base64'),
62
+ mediaType: mime.lookup(path) || '',
63
+ }));
64
+ }
65
+ const partialRequest = [
66
+ prompt,
67
+ functionDefs,
68
+ file.updateToolName,
69
+ file.temperature ?? options.temperature,
70
+ file.cheap === true,
71
+ options,
72
+ ];
73
+ let partialResult = await generateContentFn(...partialRequest);
74
+ // Validate if function call is compliant with the schema
75
+ partialResult = await validateAndRecoverSingleResult(partialRequest, partialResult, generateContentFn);
76
+ putSystemMessage('Received partial update', partialResult);
77
+ // Handle image generation requests
78
+ const generateImageCall = partialResult.find((call) => call.name === 'generateImage');
79
+ if (generateImageCall && generateImageFn) {
80
+ partialResult.push(await executeStepGenerateImage(generateImageFn, generateImageCall));
81
+ }
82
+ else if (generateImageCall) {
83
+ console.warn('Image generation requested but generateImageFn not provided');
84
+ }
85
+ // Verify if patchFile is one of the functions called, and test if patch is valid and can be applied successfully
86
+ const patchFileCall = partialResult.find((call) => call.name === 'patchFile');
87
+ if (patchFileCall) {
88
+ partialResult = await executeStepVerifyPatch(patchFileCall.args, generateContentFn, prompt, functionDefs, file.temperature ?? options.temperature, file.cheap === true, options);
89
+ }
90
+ // add the code gen result to the context, as the subsequent code gen may depend on the result
91
+ prompt.push({ type: 'assistant', functionCalls: partialResult }, {
92
+ type: 'user',
93
+ text: 'Update applied.',
94
+ functionResponses: partialResult.map((call) => ({ name: call.name, call_id: call.id })),
95
+ });
96
+ result.push(...partialResult);
97
+ }
98
+ return result;
99
+ }
100
+ else {
101
+ // This is unexpected, if happens probably means no code updates.
102
+ putSystemMessage('Did not receive codegen summary, returning result.');
103
+ return baseResult;
104
+ }
105
+ }
106
+ //# sourceMappingURL=step-codegen-summary.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"step-codegen-summary.js","sourceRoot":"","sources":["../../../src/prompt/steps/step-codegen-summary.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,136 @@
1
+ import { describe, it, expect, vi, beforeEach } from 'vitest';
2
+ import { executeStepCodegenSummary } from './step-codegen-summary.js';
3
+ import { getSourceCode } from '../../files/read-files.js';
4
+ vi.mock('../../files/find-files.js', () => ({
5
+ refreshFiles: vi.fn(),
6
+ }));
7
+ vi.mock('../../files/read-files.js', () => ({
8
+ getSourceCode: vi.fn(),
9
+ }));
10
+ vi.mock('../../main/config.js', () => ({
11
+ rootDir: '/test',
12
+ rcConfig: {
13
+ rootDir: '/test',
14
+ extensions: ['.js', '.ts', '.tsx', '.jsx'],
15
+ },
16
+ importantContext: {},
17
+ }));
18
+ describe('executeStepCodegenSummary', () => {
19
+ const mockGenerateContentFn = vi.fn();
20
+ const mockWaitIfPaused = vi.fn();
21
+ // Mock data
22
+ const mockPrompt = [{ type: 'user', text: 'test prompt' }];
23
+ const mockFunctionDefs = [
24
+ {
25
+ name: 'codegenSummary',
26
+ description: 'Function for generating codegen summary',
27
+ parameters: {
28
+ type: 'object',
29
+ properties: {
30
+ explanation: { type: 'string', description: 'Explanation of changes' },
31
+ fileUpdates: { type: 'array', description: 'List of file updates' },
32
+ contextPaths: { type: 'array', description: 'List of context paths' },
33
+ },
34
+ required: ['explanation', 'fileUpdates', 'contextPaths'],
35
+ },
36
+ },
37
+ ];
38
+ const mockOptions = {
39
+ aiService: 'vertex-ai',
40
+ temperature: 0.7,
41
+ askQuestion: false,
42
+ };
43
+ beforeEach(() => {
44
+ vi.clearAllMocks();
45
+ mockWaitIfPaused.mockResolvedValue(undefined);
46
+ vi.mocked(getSourceCode).mockReturnValue({});
47
+ });
48
+ it('should handle successful codegen summary generation', async () => {
49
+ const mockCodegenSummary = {
50
+ name: 'codegenSummary',
51
+ args: {
52
+ explanation: 'Test explanation',
53
+ fileUpdates: [
54
+ {
55
+ filePath: '/test/path.ts',
56
+ updateToolName: 'updateFile',
57
+ prompt: 'Update test file',
58
+ },
59
+ ],
60
+ contextPaths: ['/test/context.ts'],
61
+ },
62
+ };
63
+ const mockUpdateResult = {
64
+ name: 'updateFile',
65
+ args: {
66
+ filePath: '/test/path.ts',
67
+ newContent: 'updated content',
68
+ explanation: 'Updated file',
69
+ },
70
+ };
71
+ mockGenerateContentFn.mockResolvedValueOnce([mockCodegenSummary]).mockResolvedValueOnce([mockUpdateResult]);
72
+ const result = await executeStepCodegenSummary(mockGenerateContentFn, mockPrompt, mockFunctionDefs, mockOptions, mockWaitIfPaused);
73
+ expect(result).toHaveLength(1);
74
+ expect(result[0]).toEqual(mockUpdateResult);
75
+ expect(mockGenerateContentFn).toHaveBeenCalledTimes(2);
76
+ });
77
+ it('should handle validation and recovery of invalid codegen summary', async () => {
78
+ const invalidCodegenSummary = {
79
+ name: 'codegenSummary',
80
+ args: {
81
+ // Missing required fields
82
+ },
83
+ };
84
+ const validCodegenSummary = {
85
+ name: 'codegenSummary',
86
+ args: {
87
+ explanation: 'Recovered explanation',
88
+ fileUpdates: [],
89
+ contextPaths: [],
90
+ },
91
+ };
92
+ mockGenerateContentFn.mockResolvedValueOnce([invalidCodegenSummary]).mockResolvedValueOnce([validCodegenSummary]);
93
+ const result = await executeStepCodegenSummary(mockGenerateContentFn, mockPrompt, mockFunctionDefs, mockOptions, mockWaitIfPaused);
94
+ expect(result).toHaveLength(0);
95
+ expect(mockGenerateContentFn).toHaveBeenCalledTimes(2);
96
+ });
97
+ it('should handle errors in generate content function', async () => {
98
+ mockGenerateContentFn.mockRejectedValueOnce(new Error('Test error'));
99
+ await expect(executeStepCodegenSummary(mockGenerateContentFn, mockPrompt, mockFunctionDefs, mockOptions, mockWaitIfPaused)).rejects.toThrow('Test error');
100
+ });
101
+ it('should handle no codegen summary in response', async () => {
102
+ mockGenerateContentFn.mockResolvedValueOnce([
103
+ {
104
+ name: 'explanation',
105
+ args: { text: 'No changes needed' },
106
+ },
107
+ ]);
108
+ const result = await executeStepCodegenSummary(mockGenerateContentFn, mockPrompt, mockFunctionDefs, mockOptions, mockWaitIfPaused);
109
+ expect(result).toHaveLength(1);
110
+ expect(result[0].name).toBe('explanation');
111
+ });
112
+ it('should respect waitIfPaused during file updates', async () => {
113
+ const mockCodegenSummary = {
114
+ name: 'codegenSummary',
115
+ args: {
116
+ explanation: 'Test pause handling',
117
+ fileUpdates: [
118
+ { filePath: '/test/file1.ts', updateToolName: 'updateFile', prompt: 'Update 1' },
119
+ { filePath: '/test/file2.ts', updateToolName: 'updateFile', prompt: 'Update 2' },
120
+ ],
121
+ contextPaths: [],
122
+ },
123
+ };
124
+ mockGenerateContentFn
125
+ .mockResolvedValueOnce([mockCodegenSummary])
126
+ .mockResolvedValueOnce([
127
+ { name: 'updateFile', args: { filePath: '/test/file1.ts', newContent: 'test', explanation: 'test' } },
128
+ ])
129
+ .mockResolvedValueOnce([
130
+ { name: 'updateFile', args: { filePath: '/test/file2.ts', newContent: 'test', explanation: 'test' } },
131
+ ]);
132
+ await executeStepCodegenSummary(mockGenerateContentFn, mockPrompt, mockFunctionDefs, mockOptions, mockWaitIfPaused);
133
+ expect(mockWaitIfPaused).toHaveBeenCalledTimes(2);
134
+ });
135
+ });
136
+ //# sourceMappingURL=step-codegen-summary.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"step-codegen-summary.test.js","sourceRoot":"","sources":["../../../src/prompt/steps/step-codegen-summary.test.ts"],"names":[],"mappings":"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"}