genaicode 0.1.1 → 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 (146) hide show
  1. package/README.md +3 -1
  2. package/bin/genaicode.cjs +7 -0
  3. package/dist/ai-service/ai-studio.d.ts +2 -1
  4. package/dist/ai-service/ai-studio.js +5 -5
  5. package/dist/ai-service/ai-studio.js.map +1 -1
  6. package/dist/ai-service/anthropic.d.ts +2 -1
  7. package/dist/ai-service/anthropic.js +6 -4
  8. package/dist/ai-service/anthropic.js.map +1 -1
  9. package/dist/ai-service/chat-gpt.js +2 -1
  10. package/dist/ai-service/chat-gpt.js.map +1 -1
  11. package/dist/ai-service/common.d.ts +4 -3
  12. package/dist/ai-service/common.js.map +1 -1
  13. package/dist/ai-service/dall-e.js +3 -2
  14. package/dist/ai-service/dall-e.js.map +1 -1
  15. package/dist/ai-service/vertex-ai-claude.js +2 -1
  16. package/dist/ai-service/vertex-ai-claude.js.map +1 -1
  17. package/dist/ai-service/vertex-ai-imagen.js +3 -0
  18. package/dist/ai-service/vertex-ai-imagen.js.map +1 -1
  19. package/dist/ai-service/vertex-ai.d.ts +3 -3
  20. package/dist/ai-service/vertex-ai.js +18 -23
  21. package/dist/ai-service/vertex-ai.js.map +1 -1
  22. package/dist/cli/cli-options.js +2 -2
  23. package/dist/cli/cli-options.js.map +1 -1
  24. package/dist/cli/cli-params.d.ts +4 -3
  25. package/dist/cli/cli-params.js +11 -5
  26. package/dist/cli/cli-params.js.map +1 -1
  27. package/dist/cli/validate-cli-params.js +2 -1
  28. package/dist/cli/validate-cli-params.js.map +1 -1
  29. package/dist/files/read-files.d.ts +6 -1
  30. package/dist/files/read-files.js +13 -8
  31. package/dist/files/read-files.js.map +1 -1
  32. package/dist/files/read-files.test.js +5 -6
  33. package/dist/files/read-files.test.js.map +1 -1
  34. package/dist/files/update-files.d.ts +2 -1
  35. package/dist/files/update-files.js +6 -6
  36. package/dist/files/update-files.js.map +1 -1
  37. package/dist/main/codegen-interactive-utils.d.ts +8 -0
  38. package/dist/main/codegen-interactive-utils.js +148 -0
  39. package/dist/main/codegen-interactive-utils.js.map +1 -0
  40. package/dist/main/codegen-interactive.d.ts +2 -0
  41. package/dist/main/codegen-interactive.js +68 -0
  42. package/dist/main/codegen-interactive.js.map +1 -0
  43. package/dist/main/codegen-types.d.ts +28 -0
  44. package/dist/main/codegen-types.js +2 -0
  45. package/dist/main/codegen-types.js.map +1 -0
  46. package/dist/main/codegen.d.ts +2 -0
  47. package/dist/main/codegen.js +88 -25
  48. package/dist/main/codegen.js.map +1 -1
  49. package/dist/main/codegen.test.js +36 -22
  50. package/dist/main/codegen.test.js.map +1 -1
  51. package/dist/main/config-lib.d.ts +8 -0
  52. package/dist/main/config-lib.js.map +1 -1
  53. package/dist/main/config.d.ts +2 -1
  54. package/dist/main/config.js +12 -0
  55. package/dist/main/config.js.map +1 -1
  56. package/dist/main/interactive/codegen-interactive.d.ts +2 -0
  57. package/dist/main/interactive/codegen-interactive.js +55 -0
  58. package/dist/main/interactive/codegen-interactive.js.map +1 -0
  59. package/dist/main/interactive/codegen-interactive.test.d.ts +4 -0
  60. package/dist/main/interactive/codegen-interactive.test.js +77 -0
  61. package/dist/main/interactive/codegen-interactive.test.js.map +1 -0
  62. package/dist/main/interactive/codegen-worker.d.ts +3 -0
  63. package/dist/main/interactive/codegen-worker.js +47 -0
  64. package/dist/main/interactive/codegen-worker.js.map +1 -0
  65. package/dist/main/interactive/common.d.ts +5 -0
  66. package/dist/main/interactive/common.js +51 -0
  67. package/dist/main/interactive/common.js.map +1 -0
  68. package/dist/main/interactive/configure.d.ts +2 -0
  69. package/dist/main/interactive/configure.js +99 -0
  70. package/dist/main/interactive/configure.js.map +1 -0
  71. package/dist/main/interactive/error-handling.d.ts +4 -0
  72. package/dist/main/interactive/error-handling.js +49 -0
  73. package/dist/main/interactive/error-handling.js.map +1 -0
  74. package/dist/main/interactive/help.d.ts +1 -0
  75. package/dist/main/interactive/help.js +22 -0
  76. package/dist/main/interactive/help.js.map +1 -0
  77. package/dist/main/interactive/process-comments.d.ts +2 -0
  78. package/dist/main/interactive/process-comments.js +39 -0
  79. package/dist/main/interactive/process-comments.js.map +1 -0
  80. package/dist/main/interactive/select-ai-service.d.ts +2 -0
  81. package/dist/main/interactive/select-ai-service.js +27 -0
  82. package/dist/main/interactive/select-ai-service.js.map +1 -0
  83. package/dist/main/interactive/task-file.d.ts +2 -0
  84. package/dist/main/interactive/task-file.js +28 -0
  85. package/dist/main/interactive/task-file.js.map +1 -0
  86. package/dist/main/interactive/text-prompt.d.ts +2 -0
  87. package/dist/main/interactive/text-prompt.js +18 -0
  88. package/dist/main/interactive/text-prompt.js.map +1 -0
  89. package/dist/main/interactive/user-interrupt.d.ts +1 -0
  90. package/dist/main/interactive/user-interrupt.js +36 -0
  91. package/dist/main/interactive/user-interrupt.js.map +1 -0
  92. package/dist/main/interactive/worker-script.d.ts +1 -0
  93. package/dist/main/interactive/worker-script.js +24 -0
  94. package/dist/main/interactive/worker-script.js.map +1 -0
  95. package/dist/main/interactive/worker.d.ts +2 -0
  96. package/dist/main/interactive/worker.js +55 -0
  97. package/dist/main/interactive/worker.js.map +1 -0
  98. package/dist/prompt/function-calling-validate.d.ts +1 -1
  99. package/dist/prompt/function-calling-validate.js +21 -15
  100. package/dist/prompt/function-calling-validate.js.map +1 -1
  101. package/dist/prompt/function-defs/ask-question.d.ts +35 -1
  102. package/dist/prompt/function-defs/ask-question.js +36 -1
  103. package/dist/prompt/function-defs/ask-question.js.map +1 -1
  104. package/dist/prompt/function-defs/codegen-summary.d.ts +5 -5
  105. package/dist/prompt/function-defs/codegen-summary.js +8 -8
  106. package/dist/prompt/function-defs/codegen-summary.js.map +1 -1
  107. package/dist/prompt/function-defs/generate-image.d.ts +8 -15
  108. package/dist/prompt/function-defs/generate-image.js +8 -15
  109. package/dist/prompt/function-defs/generate-image.js.map +1 -1
  110. package/dist/prompt/limits.js +2 -2
  111. package/dist/prompt/limits.test.js +5 -5
  112. package/dist/prompt/prompt-codegen.d.ts +7 -2
  113. package/dist/prompt/prompt-codegen.js +26 -17
  114. package/dist/prompt/prompt-codegen.js.map +1 -1
  115. package/dist/prompt/prompt-codegen.test.js +11 -7
  116. package/dist/prompt/prompt-codegen.test.js.map +1 -1
  117. package/dist/prompt/prompt-service-ask-question.test.js +14 -18
  118. package/dist/prompt/prompt-service-ask-question.test.js.map +1 -1
  119. package/dist/prompt/prompt-service.d.ts +20 -5
  120. package/dist/prompt/prompt-service.js +35 -150
  121. package/dist/prompt/prompt-service.js.map +1 -1
  122. package/dist/prompt/prompt-service.test.js +42 -22
  123. package/dist/prompt/prompt-service.test.js.map +1 -1
  124. package/dist/prompt/steps/step-ask-question.d.ts +6 -0
  125. package/dist/prompt/steps/step-ask-question.js +82 -0
  126. package/dist/prompt/steps/step-ask-question.js.map +1 -0
  127. package/dist/prompt/steps/step-generate-image.d.ts +2 -0
  128. package/dist/prompt/steps/step-generate-image.js +29 -0
  129. package/dist/prompt/steps/step-generate-image.js.map +1 -0
  130. package/dist/prompt/steps/step-validate-recover.d.ts +13 -0
  131. package/dist/prompt/steps/step-validate-recover.js +51 -0
  132. package/dist/prompt/steps/step-validate-recover.js.map +1 -0
  133. package/dist/prompt/steps/step-verify-patch.d.ts +7 -0
  134. package/dist/prompt/steps/step-verify-patch.js +41 -0
  135. package/dist/prompt/steps/step-verify-patch.js.map +1 -0
  136. package/dist/prompt/steps/steps-types.d.ts +4 -0
  137. package/dist/prompt/steps/steps-types.js +6 -0
  138. package/dist/prompt/steps/steps-types.js.map +1 -0
  139. package/dist/prompt/systemprompt.d.ts +2 -1
  140. package/dist/prompt/systemprompt.js +11 -7
  141. package/dist/prompt/systemprompt.js.map +1 -1
  142. package/dist/prompt/systemprompt.test.d.ts +1 -0
  143. package/dist/prompt/systemprompt.test.js +4 -5
  144. package/dist/prompt/systemprompt.test.js.map +1 -1
  145. package/package.json +4 -3
  146. package/bin/vertex-monkey-patch.cjs +0 -33
@@ -1,6 +1,8 @@
1
1
  import { describe, it, expect, beforeEach, vi } from 'vitest';
2
2
  import { promptService } from './prompt-service.js';
3
+ import * as aiStudio from '../ai-service/ai-studio.js';
3
4
  import * as vertexAi from '../ai-service/vertex-ai.js';
5
+ import * as vertexAiClaude from '../ai-service/vertex-ai-claude.js';
4
6
  import * as chatGpt from '../ai-service/chat-gpt.js';
5
7
  import * as anthropic from '../ai-service/anthropic.js';
6
8
  import * as cliParams from '../cli/cli-params.js';
@@ -10,6 +12,9 @@ import mime from 'mime-types';
10
12
  import { getImageAssets } from '../files/read-files.js';
11
13
  import '../files/find-files.js';
12
14
  import * as dalleService from '../ai-service/dall-e.js';
15
+ import * as vertexAiImagen from '../ai-service/vertex-ai-imagen.js';
16
+ import { getCodeGenPrompt } from './prompt-codegen.js';
17
+ vi.mock('../ai-service/vertex-ai-claude.js', () => ({ generateContent: vi.fn() }));
13
18
  vi.mock('../ai-service/vertex-ai.js', () => ({ generateContent: vi.fn() }));
14
19
  vi.mock('../ai-service/chat-gpt.js', () => ({ generateContent: vi.fn() }));
15
20
  vi.mock('../ai-service/anthropic.js', () => ({ generateContent: vi.fn() }));
@@ -34,6 +39,7 @@ vi.mock('fs');
34
39
  vi.mock('diff');
35
40
  vi.mock('mime-types');
36
41
  vi.mock('../ai-service/dall-e.js', () => ({ generateImage: vi.fn() }));
42
+ vi.mock('../ai-service/vertex-ai-imagen.js', () => ({ generateImage: vi.fn() }));
37
43
  // Mock find-files module
38
44
  vi.mock('../files/find-files.js', () => ({
39
45
  getSourceFiles: () => [],
@@ -50,7 +56,19 @@ vi.mock('../main/config.js', () => ({
50
56
  rootDir: '.',
51
57
  extensions: ['.js', '.ts', '.tsx', '.jsx'],
52
58
  },
59
+ importantContext: {},
53
60
  }));
61
+ const GENERATE_CONTENT_FNS = {
62
+ 'vertex-ai-claude': vertexAiClaude.generateContent,
63
+ 'vertex-ai': vertexAi.generateContent,
64
+ 'ai-studio': aiStudio.generateContent,
65
+ anthropic: anthropic.generateContent,
66
+ 'chat-gpt': chatGpt.generateContent,
67
+ };
68
+ const GENERATE_IMAGE_FNS = {
69
+ 'dall-e': dalleService.generateImage,
70
+ 'vertex-ai': vertexAiImagen.generateImage,
71
+ };
54
72
  describe('promptService', () => {
55
73
  beforeEach(() => {
56
74
  vi.resetAllMocks();
@@ -68,7 +86,7 @@ describe('promptService', () => {
68
86
  { name: 'updateFile', args: { filePath: 'test.js', newContent: 'console.log("Hello");' } },
69
87
  ];
70
88
  vi.mocked(vertexAi.generateContent).mockResolvedValueOnce(mockFunctionCalls);
71
- const result = await promptService(vertexAi.generateContent, undefined);
89
+ const result = await promptService(GENERATE_CONTENT_FNS, GENERATE_IMAGE_FNS, getCodeGenPrompt({ askQuestion: false, aiService: 'vertex-ai' }));
72
90
  expect(result).toEqual(mockFunctionCalls);
73
91
  expect(vertexAi.generateContent).toHaveBeenCalled();
74
92
  });
@@ -76,7 +94,7 @@ describe('promptService', () => {
76
94
  vi.mocked(cliParams).chatGpt = true;
77
95
  const mockFunctionCalls = [{ name: 'createFile', args: { filePath: 'new.js', newContent: 'const x = 5;' } }];
78
96
  vi.mocked(chatGpt.generateContent).mockResolvedValueOnce(mockFunctionCalls);
79
- const result = await promptService(chatGpt.generateContent, undefined);
97
+ const result = await promptService(GENERATE_CONTENT_FNS, GENERATE_IMAGE_FNS, getCodeGenPrompt({ askQuestion: false, aiService: 'chat-gpt' }));
80
98
  expect(result).toEqual(mockFunctionCalls);
81
99
  expect(chatGpt.generateContent).toHaveBeenCalled();
82
100
  });
@@ -84,7 +102,7 @@ describe('promptService', () => {
84
102
  vi.mocked(cliParams).anthropic = true;
85
103
  const mockFunctionCalls = [{ name: 'deleteFile', args: { filePath: 'obsolete.js' } }];
86
104
  vi.mocked(anthropic.generateContent).mockResolvedValueOnce(mockFunctionCalls);
87
- const result = await promptService(anthropic.generateContent, undefined);
105
+ const result = await promptService(GENERATE_CONTENT_FNS, GENERATE_IMAGE_FNS, getCodeGenPrompt({ askQuestion: false, aiService: 'anthropic' }));
88
106
  expect(result).toEqual(mockFunctionCalls);
89
107
  expect(anthropic.generateContent).toHaveBeenCalled();
90
108
  });
@@ -95,7 +113,7 @@ describe('promptService', () => {
95
113
  { name: 'updateFile', args: { filePath: 'test.js', newContent: 'console.log("Dry run");' } },
96
114
  ];
97
115
  vi.mocked(vertexAi.generateContent).mockResolvedValueOnce(mockFunctionCalls);
98
- const result = await promptService(vertexAi.generateContent, undefined);
116
+ const result = await promptService(GENERATE_CONTENT_FNS, GENERATE_IMAGE_FNS, getCodeGenPrompt({ askQuestion: false, aiService: 'vertex-ai' }));
99
117
  expect(result).toEqual(mockFunctionCalls);
100
118
  expect(vertexAi.generateContent).toHaveBeenCalled();
101
119
  });
@@ -139,7 +157,7 @@ describe('promptService', () => {
139
157
  vi.mocked(fs.readFileSync).mockReturnValue('Original content');
140
158
  // Mock diff.applyPatch to fail for the invalid patch
141
159
  vi.mocked(diff.applyPatch).mockReturnValue(false);
142
- const result = await promptService(vertexAi.generateContent, undefined);
160
+ const result = await promptService(GENERATE_CONTENT_FNS, GENERATE_IMAGE_FNS, getCodeGenPrompt({ askQuestion: false, aiService: 'vertex-ai' }));
143
161
  expect(vertexAi.generateContent).toHaveBeenCalledTimes(3);
144
162
  expect(fs.readFileSync).toHaveBeenCalledWith('test.js', 'utf-8');
145
163
  expect(diff.applyPatch).toHaveBeenCalledWith('Original content', 'invalid patch');
@@ -157,7 +175,7 @@ describe('promptService', () => {
157
175
  ];
158
176
  vi.mocked(getImageAssets).mockReturnValue(mockImageAssets);
159
177
  vi.mocked(chatGpt.generateContent).mockResolvedValueOnce(mockFunctionCalls);
160
- await promptService(chatGpt.generateContent, undefined);
178
+ await promptService(GENERATE_CONTENT_FNS, GENERATE_IMAGE_FNS, getCodeGenPrompt({ askQuestion: false, aiService: 'chat-gpt', vision: true }));
161
179
  expect(chatGpt.generateContent).toHaveBeenCalled();
162
180
  const calls = vi.mocked(chatGpt.generateContent).mock.calls[0];
163
181
  expect(calls[0]).toEqual(expect.arrayContaining([
@@ -207,7 +225,7 @@ describe('promptService', () => {
207
225
  vi.mocked(chatGpt.generateContent).mockResolvedValueOnce(mockUpdateCall);
208
226
  vi.mocked(fs.readFileSync).mockImplementation((path) => `mock-base64-data-for-${path}`);
209
227
  vi.mocked(mime.lookup).mockImplementation((path) => (path.endsWith('.png') ? 'image/png' : 'image/jpeg'));
210
- await promptService(chatGpt.generateContent, undefined);
228
+ await promptService(GENERATE_CONTENT_FNS, GENERATE_IMAGE_FNS, getCodeGenPrompt({ askQuestion: false, aiService: 'chat-gpt', vision: true }));
211
229
  expect(chatGpt.generateContent).toHaveBeenCalledTimes(2);
212
230
  const secondCall = vi.mocked(chatGpt.generateContent).mock.calls[1];
213
231
  expect(secondCall[0]).toEqual(expect.arrayContaining([
@@ -236,7 +254,7 @@ describe('promptService', () => {
236
254
  { name: 'updateFile', args: { filePath: 'test.js', newContent: 'console.log("No vision test");' } },
237
255
  ];
238
256
  vi.mocked(chatGpt.generateContent).mockResolvedValueOnce(mockFunctionCalls);
239
- await promptService(chatGpt.generateContent, undefined);
257
+ await promptService(GENERATE_CONTENT_FNS, GENERATE_IMAGE_FNS, getCodeGenPrompt({ askQuestion: false, aiService: 'chat-gpt' }));
240
258
  expect(chatGpt.generateContent).toHaveBeenCalled();
241
259
  const calls = vi.mocked(chatGpt.generateContent).mock.calls[0];
242
260
  expect(calls[0]).not.toEqual(expect.arrayContaining([
@@ -269,7 +287,7 @@ describe('promptService', () => {
269
287
  ];
270
288
  vi.mocked(vertexAi.generateContent).mockResolvedValueOnce(mockCodegenSummary);
271
289
  vi.mocked(vertexAi.generateContent).mockResolvedValueOnce(mockUpdateCall);
272
- await promptService(vertexAi.generateContent, undefined);
290
+ await promptService(GENERATE_CONTENT_FNS, GENERATE_IMAGE_FNS, getCodeGenPrompt({ askQuestion: false, aiService: 'vertex-ai' }));
273
291
  expect(vertexAi.generateContent).toHaveBeenCalledTimes(2);
274
292
  const firstCall = vi.mocked(vertexAi.generateContent).mock.calls[0];
275
293
  expect(firstCall[0]).toEqual(expect.arrayContaining([
@@ -308,7 +326,7 @@ describe('promptService', () => {
308
326
  ];
309
327
  vi.mocked(vertexAi.generateContent).mockResolvedValueOnce(mockCodegenSummary);
310
328
  vi.mocked(vertexAi.generateContent).mockResolvedValueOnce(mockUpdateCall);
311
- await promptService(vertexAi.generateContent, undefined);
329
+ await promptService(GENERATE_CONTENT_FNS, GENERATE_IMAGE_FNS, getCodeGenPrompt({ askQuestion: false, aiService: 'vertex-ai' }));
312
330
  expect(vertexAi.generateContent).toHaveBeenCalledTimes(2);
313
331
  const firstCall = vi.mocked(vertexAi.generateContent).mock.calls[0];
314
332
  expect(firstCall[0]).not.toEqual(expect.arrayContaining([
@@ -330,7 +348,7 @@ describe('promptService', () => {
330
348
  {
331
349
  name: 'codegenSummary',
332
350
  args: {
333
- fileUpdates: [{ path: 'test.js', updateToolName: 'updateFile' }],
351
+ fileUpdates: [{ path: '/path/to/generated/image.png', updateToolName: 'generateImage' }],
334
352
  contextPaths: [],
335
353
  explanation: 'Mock summary with image generation',
336
354
  },
@@ -342,7 +360,8 @@ describe('promptService', () => {
342
360
  args: {
343
361
  prompt: 'A test image',
344
362
  filePath: '/path/to/generated/image.png',
345
- size: { width: 256, height: 256 },
363
+ width: 256,
364
+ height: 256,
346
365
  },
347
366
  },
348
367
  ];
@@ -359,7 +378,7 @@ describe('promptService', () => {
359
378
  vi.mocked(vertexAi.generateContent).mockResolvedValueOnce(mockCodegenSummary);
360
379
  vi.mocked(vertexAi.generateContent).mockResolvedValueOnce(mockGenerateImageCall);
361
380
  vi.mocked(dalleService.generateImage).mockResolvedValue('https://example.com/generated-image.png');
362
- const result = await promptService(vertexAi.generateContent, dalleService.generateImage);
381
+ const result = await promptService(GENERATE_CONTENT_FNS, GENERATE_IMAGE_FNS, getCodeGenPrompt({ askQuestion: false, aiService: 'vertex-ai', imagen: 'dall-e' }));
363
382
  expect(vertexAi.generateContent).toHaveBeenCalledTimes(2);
364
383
  expect(dalleService.generateImage).toHaveBeenCalledWith('A test image', undefined, { width: 256, height: 256 }, false);
365
384
  expect(result).toEqual(expect.arrayContaining(mockDownloadFileCall));
@@ -371,7 +390,7 @@ describe('promptService', () => {
371
390
  {
372
391
  name: 'codegenSummary',
373
392
  args: {
374
- fileUpdates: [{ path: 'test.js', updateToolName: 'updateFile' }],
393
+ fileUpdates: [{ path: '/path/to/generated/image.png', updateToolName: 'generateImage' }],
375
394
  contextPaths: [],
376
395
  explanation: 'Mock summary with image generation failure',
377
396
  },
@@ -383,14 +402,15 @@ describe('promptService', () => {
383
402
  args: {
384
403
  prompt: 'A test image',
385
404
  filePath: '/path/to/generated/image.png',
386
- size: { width: 256, height: 256 },
405
+ width: 256,
406
+ height: 256,
387
407
  },
388
408
  },
389
409
  ];
390
410
  vi.mocked(vertexAi.generateContent).mockResolvedValueOnce(mockCodegenSummary);
391
411
  vi.mocked(vertexAi.generateContent).mockResolvedValueOnce(mockGenerateImageCall);
392
412
  vi.mocked(dalleService.generateImage).mockRejectedValue(new Error('Image generation failed'));
393
- const result = await promptService(vertexAi.generateContent, dalleService.generateImage);
413
+ const result = await promptService(GENERATE_CONTENT_FNS, GENERATE_IMAGE_FNS, getCodeGenPrompt({ askQuestion: false, aiService: 'vertex-ai', imagen: 'dall-e' }));
394
414
  expect(vertexAi.generateContent).toHaveBeenCalledTimes(2);
395
415
  expect(dalleService.generateImage).toHaveBeenCalledWith('A test image', undefined, { width: 256, height: 256 }, false);
396
416
  expect(result).toEqual(expect.arrayContaining([
@@ -414,7 +434,7 @@ describe('promptService', () => {
414
434
  },
415
435
  ];
416
436
  vi.mocked(vertexAi.generateContent).mockResolvedValueOnce(mockUnexpectedResponse);
417
- const result = await promptService(vertexAi.generateContent, undefined);
437
+ const result = await promptService(GENERATE_CONTENT_FNS, GENERATE_IMAGE_FNS, getCodeGenPrompt({ askQuestion: false, aiService: 'vertex-ai' }));
418
438
  expect(vertexAi.generateContent).toHaveBeenCalledTimes(1);
419
439
  expect(result).toEqual(mockUnexpectedResponse);
420
440
  });
@@ -425,7 +445,7 @@ describe('promptService', () => {
425
445
  {
426
446
  name: 'codegenSummary',
427
447
  args: {
428
- files: [{ path: 'test.js', updateToolName: 'patchFile' }],
448
+ files: [{ path: 'test.js', updateToolName: 'updateFile' }],
429
449
  contextPaths: [],
430
450
  explanation: 'Mock summary',
431
451
  },
@@ -435,7 +455,7 @@ describe('promptService', () => {
435
455
  {
436
456
  name: 'codegenSummary',
437
457
  args: {
438
- fileUpdates: [{ path: 'test.js', updateToolName: 'patchFile' }],
458
+ fileUpdates: [{ path: 'test.js', updateToolName: 'updateFile' }],
439
459
  contextPaths: [],
440
460
  explanation: 'Mock summary',
441
461
  },
@@ -453,7 +473,7 @@ describe('promptService', () => {
453
473
  },
454
474
  },
455
475
  ]);
456
- const result = await promptService(vertexAi.generateContent, undefined);
476
+ const result = await promptService(GENERATE_CONTENT_FNS, GENERATE_IMAGE_FNS, getCodeGenPrompt({ askQuestion: false, aiService: 'vertex-ai' }));
457
477
  expect(vertexAi.generateContent).toHaveBeenCalledTimes(3);
458
478
  expect(result).toEqual([
459
479
  {
@@ -486,7 +506,7 @@ describe('promptService', () => {
486
506
  ])
487
507
  .mockResolvedValueOnce(mockInvalidCall)
488
508
  .mockResolvedValueOnce(mockInvalidCall); // Second call also returns invalid result
489
- await expect(promptService(vertexAi.generateContent, undefined)).rejects.toThrow('Recovery failed');
509
+ await expect(promptService(GENERATE_CONTENT_FNS, GENERATE_IMAGE_FNS, getCodeGenPrompt({ askQuestion: false, aiService: 'vertex-ai' }))).rejects.toThrow('Recovery failed');
490
510
  expect(vertexAi.generateContent).toHaveBeenCalledTimes(3);
491
511
  });
492
512
  it('should not attempt recovery for multiple valid function calls', async () => {
@@ -502,7 +522,7 @@ describe('promptService', () => {
502
522
  },
503
523
  ];
504
524
  vi.mocked(vertexAi.generateContent).mockResolvedValueOnce(mockValidCalls);
505
- const result = await promptService(vertexAi.generateContent, undefined);
525
+ const result = await promptService(GENERATE_CONTENT_FNS, GENERATE_IMAGE_FNS, getCodeGenPrompt({ askQuestion: false, aiService: 'vertex-ai' }));
506
526
  expect(vertexAi.generateContent).toHaveBeenCalledTimes(1);
507
527
  expect(result).toEqual(mockValidCalls);
508
528
  });
@@ -1 +1 @@
1
- {"version":3,"file":"prompt-service.test.js","sourceRoot":"","sources":["../../src/prompt/prompt-service.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,KAAK,QAAQ,MAAM,4BAA4B,CAAC;AACvD,OAAO,KAAK,OAAO,MAAM,2BAA2B,CAAC;AACrD,OAAO,KAAK,SAAS,MAAM,4BAA4B,CAAC;AACxD,OAAO,KAAK,SAAS,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,IAAI,MAAM,YAAY,CAAC;AAC9B,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,wBAAwB,CAAC;AAChC,OAAO,KAAK,YAAY,MAAM,yBAAyB,CAAC;AAExD,EAAE,CAAC,IAAI,CAAC,4BAA4B,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,eAAe,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AAC5E,EAAE,CAAC,IAAI,CAAC,2BAA2B,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,eAAe,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AAC3E,EAAE,CAAC,IAAI,CAAC,4BAA4B,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,eAAe,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AAC5E,EAAE,CAAC,IAAI,CAAC,sBAAsB,EAAE,GAAG,EAAE,CAAC,CAAC;IACrC,mBAAmB,EAAE,KAAK;IAC1B,gBAAgB,EAAE,KAAK;IACvB,cAAc,EAAE,KAAK;IACrB,cAAc,EAAE,KAAK;IACrB,eAAe,EAAE,KAAK;IACtB,eAAe,EAAE,KAAK;IACtB,oBAAoB,EAAE,KAAK;IAC3B,aAAa,EAAE,KAAK;IACpB,aAAa,EAAE,KAAK;IACpB,0BAA0B,EAAE,KAAK;IACjC,MAAM,EAAE,KAAK;IACb,MAAM,EAAE,KAAK;IACb,WAAW,EAAE,GAAG;IAChB,KAAK,EAAE,KAAK;IACZ,WAAW,EAAE,KAAK;CACnB,CAAC,CAAC,CAAC;AACJ,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACd,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAChB,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AACtB,EAAE,CAAC,IAAI,CAAC,yBAAyB,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,aAAa,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AAEvE,yBAAyB;AACzB,EAAE,CAAC,IAAI,CAAC,wBAAwB,EAAE,GAAG,EAAE,CAAC,CAAC;IACvC,cAAc,EAAE,GAAG,EAAE,CAAC,EAAE;IACxB,kBAAkB,EAAE,GAAG,EAAE,CAAC,EAAE;CAC7B,CAAC,CAAC,CAAC;AAEJ,yBAAyB;AACzB,EAAE,CAAC,IAAI,CAAC,wBAAwB,EAAE,GAAG,EAAE,CAAC,CAAC;IACvC,aAAa,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC;IACzB,cAAc,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;CAClC,CAAC,CAAC,CAAC;AAEJ,EAAE,CAAC,IAAI,CAAC,mBAAmB,EAAE,GAAG,EAAE,CAAC,CAAC;IAClC,OAAO,EAAE,kBAAkB;IAC3B,QAAQ,EAAE;QACR,OAAO,EAAE,GAAG;QACZ,UAAU,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC;KAC3C;CACF,CAAC,CAAC,CAAC;AAEJ,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;IAC7B,UAAU,CAAC,GAAG,EAAE;QACd,EAAE,CAAC,aAAa,EAAE,CAAC;QACnB,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,GAAG,KAAK,CAAC;QACvC,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,OAAO,GAAG,KAAK,CAAC;QACrC,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,QAAQ,GAAG,KAAK,CAAC;QACtC,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,MAAM,GAAG,KAAK,CAAC;QACpC,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,MAAM,GAAG,KAAK,CAAC;QACpC,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,MAAM,GAAG,SAAS,CAAC;QACxC,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,0BAA0B,GAAG,KAAK,CAAC;IAC1D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yEAAyE,EAAE,KAAK,IAAI,EAAE;QACvF,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrC,MAAM,iBAAiB,GAAG;YACxB,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,uBAAuB,EAAE,EAAE;SAC3F,CAAC;QACF,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,qBAAqB,CAAC,iBAAiB,CAAC,CAAC;QAE7E,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,QAAQ,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC;QAExE,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;QAC1C,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,gBAAgB,EAAE,CAAC;IACtD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uEAAuE,EAAE,KAAK,IAAI,EAAE;QACrF,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC;QACpC,MAAM,iBAAiB,GAAG,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,cAAc,EAAE,EAAE,CAAC,CAAC;QAC7G,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,qBAAqB,CAAC,iBAAiB,CAAC,CAAC;QAE5E,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,OAAO,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC;QAEvE,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;QAC1C,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,gBAAgB,EAAE,CAAC;IACrD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yEAAyE,EAAE,KAAK,IAAI,EAAE;QACvF,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,GAAG,IAAI,CAAC;QACtC,MAAM,iBAAiB,GAAG,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,aAAa,EAAE,EAAE,CAAC,CAAC;QACtF,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC,qBAAqB,CAAC,iBAAiB,CAAC,CAAC;QAE9E,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,SAAS,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC;QAEzE,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;QAC1C,MAAM,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC,gBAAgB,EAAE,CAAC;IACvD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yCAAyC,EAAE,KAAK,IAAI,EAAE;QACvD,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrC,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC;QACnC,MAAM,iBAAiB,GAAG;YACxB,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,yBAAyB,EAAE,EAAE;SAC7F,CAAC;QACF,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,qBAAqB,CAAC,iBAAiB,CAAC,CAAC;QAE7E,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,QAAQ,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC;QAExE,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;QAC1C,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,gBAAgB,EAAE,CAAC;IACtD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2EAA2E,EAAE,KAAK,IAAI,EAAE;QACzF,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrC,MAAM,kBAAkB,GAAG;YACzB;gBACE,IAAI,EAAE,gBAAgB;gBACtB,IAAI,EAAE;oBACJ,WAAW,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,cAAc,EAAE,WAAW,EAAE,CAAC;oBAC/D,YAAY,EAAE,EAAE;oBAChB,WAAW,EAAE,cAAc;iBAC5B;aACF;SACF,CAAC;QACF,MAAM,oBAAoB,GAAG;YAC3B;gBACE,IAAI,EAAE,WAAW;gBACjB,IAAI,EAAE;oBACJ,QAAQ,EAAE,SAAS;oBACnB,KAAK,EAAE,eAAe;iBACvB;aACF;SACF,CAAC;QACF,MAAM,mBAAmB,GAAG;YAC1B;gBACE,IAAI,EAAE,YAAY;gBAClB,IAAI,EAAE;oBACJ,QAAQ,EAAE,SAAS;oBACnB,UAAU,EAAE,iCAAiC;iBAC9C;aACF;SACF,CAAC;QAEF,oDAAoD;QACpD,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,qBAAqB,CAAC,kBAAkB,CAAC,CAAC;QAC9E,kDAAkD;QAClD,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,qBAAqB,CAAC,oBAAoB,CAAC,CAAC;QAChF,uDAAuD;QACvD,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,qBAAqB,CAAC,mBAAmB,CAAC,CAAC;QAE/E,8CAA8C;QAC9C,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,eAAe,CAAC,kBAAkB,CAAC,CAAC;QAE/D,qDAAqD;QACrD,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAElD,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,QAAQ,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC;QAExE,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;QAC1D,MAAM,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,oBAAoB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QACjE,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,oBAAoB,CAAC,kBAAkB,EAAE,eAAe,CAAC,CAAC;QAClF,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sDAAsD,EAAE,KAAK,IAAI,EAAE;QACpE,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC;QACpC,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC;QACnC,MAAM,eAAe,GAAG;YACtB,qBAAqB,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,WAAW,EAAE;YACzE,qBAAqB,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,WAAW,EAAE;SAC1E,CAAC;QACF,MAAM,iBAAiB,GAAG;YACxB,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,6BAA6B,EAAE,EAAE;SACjG,CAAC;QAEF,EAAE,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,eAAe,CAAC,eAAe,CAAC,CAAC;QAC3D,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,qBAAqB,CAAC,iBAAiB,CAAC,CAAC;QAE5E,MAAM,aAAa,CAAC,OAAO,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC;QAExD,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,gBAAgB,EAAE,CAAC;QACnD,MAAM,KAAK,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC/D,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CACtB,MAAM,CAAC,eAAe,CAAC;YACrB,MAAM,CAAC,gBAAgB,CAAC;gBACtB,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,MAAM,CAAC,gBAAgB,CAAC,sEAAsE,CAAC;aACtG,CAAC;YACF,MAAM,CAAC,gBAAgB,CAAC;gBACtB,IAAI,EAAE,WAAW;gBACjB,IAAI,EAAE,MAAM,CAAC,gBAAgB,CAAC,qDAAqD,CAAC;aACrF,CAAC;YACF,MAAM,CAAC,gBAAgB,CAAC;gBACtB,IAAI,EAAE,MAAM;gBACZ,iBAAiB,EAAE,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,EAAE,CAAC;aAC1F,CAAC;SACH,CAAC,CACH,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2EAA2E,EAAE,KAAK,IAAI,EAAE;QACzF,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC;QACpC,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC;QACnC,MAAM,kBAAkB,GAAG;YACzB;gBACE,IAAI,EAAE,gBAAgB;gBACtB,IAAI,EAAE;oBACJ,WAAW,EAAE;wBACX;4BACE,IAAI,EAAE,SAAS;4BACf,cAAc,EAAE,YAAY;4BAC5B,kBAAkB,EAAE,CAAC,qBAAqB,EAAE,qBAAqB,CAAC;yBACnE;qBACF;oBACD,YAAY,EAAE,EAAE;oBAChB,WAAW,EAAE,cAAc;iBAC5B;aACF;SACF,CAAC;QACF,MAAM,cAAc,GAAG;YACrB;gBACE,IAAI,EAAE,YAAY;gBAClB,IAAI,EAAE;oBACJ,QAAQ,EAAE,SAAS;oBACnB,UAAU,EAAE,qCAAqC;iBAClD;aACF;SACF,CAAC;QAEF,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,qBAAqB,CAAC,kBAAkB,CAAC,CAAC;QAC7E,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,qBAAqB,CAAC,cAAc,CAAC,CAAC;QAEzE,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,kBAAkB,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,wBAAwB,IAAI,EAAE,CAAC,CAAC;QACxF,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,kBAAkB,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC;QAE1G,MAAM,aAAa,CAAC,OAAO,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC;QAExD,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;QACzD,MAAM,UAAU,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACpE,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAC3B,MAAM,CAAC,eAAe,CAAC;YACrB,MAAM,CAAC,gBAAgB,CAAC;gBACtB,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,MAAM,CAAC,gBAAgB,CAAC,wCAAwC,CAAC;gBACvE,MAAM,EAAE;oBACN;wBACE,IAAI,EAAE,qBAAqB;wBAC3B,SAAS,EAAE,0CAA0C;wBACrD,SAAS,EAAE,WAAW;qBACvB;oBACD;wBACE,IAAI,EAAE,qBAAqB;wBAC3B,SAAS,EAAE,0CAA0C;wBACrD,SAAS,EAAE,YAAY;qBACxB;iBACF;aACF,CAAC;SACH,CAAC,CACH,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2DAA2D,EAAE,KAAK,IAAI,EAAE;QACzE,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC;QACpC,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,MAAM,GAAG,KAAK,CAAC;QACpC,MAAM,iBAAiB,GAAG;YACxB,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,gCAAgC,EAAE,EAAE;SACpG,CAAC;QAEF,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,qBAAqB,CAAC,iBAAiB,CAAC,CAAC;QAE5E,MAAM,aAAa,CAAC,OAAO,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC;QAExD,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,gBAAgB,EAAE,CAAC;QACnD,MAAM,KAAK,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC/D,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAC1B,MAAM,CAAC,eAAe,CAAC;YACrB,MAAM,CAAC,gBAAgB,CAAC;gBACtB,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,MAAM,CAAC,gBAAgB,CAAC,sEAAsE,CAAC;aACtG,CAAC;SACH,CAAC,CACH,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oCAAoC,EAAE,KAAK,IAAI,EAAE;QAClD,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrC,MAAM,kBAAkB,GAAG;YACzB;gBACE,IAAI,EAAE,gBAAgB;gBACtB,IAAI,EAAE;oBACJ,WAAW,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,cAAc,EAAE,YAAY,EAAE,CAAC;oBAChE,YAAY,EAAE,CAAC,aAAa,EAAE,aAAa,CAAC;oBAC5C,WAAW,EAAE,2BAA2B;iBACzC;aACF;SACF,CAAC;QACF,MAAM,cAAc,GAAG;YACrB;gBACE,IAAI,EAAE,YAAY;gBAClB,IAAI,EAAE;oBACJ,QAAQ,EAAE,SAAS;oBACnB,UAAU,EAAE,sCAAsC;iBACnD;aACF;SACF,CAAC;QAEF,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,qBAAqB,CAAC,kBAAkB,CAAC,CAAC;QAC9E,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,qBAAqB,CAAC,cAAc,CAAC,CAAC;QAE1E,MAAM,aAAa,CAAC,QAAQ,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC;QAEzD,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;QAC1D,MAAM,SAAS,GAAG,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACpE,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAC1B,MAAM,CAAC,eAAe,CAAC;YACrB,MAAM,CAAC,gBAAgB,CAAC;gBACtB,IAAI,EAAE,MAAM;gBACZ,iBAAiB,EAAE;oBACjB,MAAM,CAAC,gBAAgB,CAAC;wBACtB,IAAI,EAAE,eAAe;wBACrB,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC;qBAC5B,CAAC;iBACH;aACF,CAAC;SACH,CAAC,CACH,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+CAA+C,EAAE,KAAK,IAAI,EAAE;QAC7D,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrC,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,0BAA0B,GAAG,IAAI,CAAC;QACvD,MAAM,kBAAkB,GAAG;YACzB;gBACE,IAAI,EAAE,gBAAgB;gBACtB,IAAI,EAAE;oBACJ,WAAW,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,cAAc,EAAE,YAAY,EAAE,CAAC;oBAChE,YAAY,EAAE,CAAC,aAAa,EAAE,aAAa,CAAC;oBAC5C,WAAW,EAAE,2CAA2C;iBACzD;aACF;SACF,CAAC;QACF,MAAM,cAAc,GAAG;YACrB;gBACE,IAAI,EAAE,YAAY;gBAClB,IAAI,EAAE;oBACJ,QAAQ,EAAE,SAAS;oBACnB,UAAU,EAAE,sDAAsD;iBACnE;aACF;SACF,CAAC;QAEF,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,qBAAqB,CAAC,kBAAkB,CAAC,CAAC;QAC9E,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,qBAAqB,CAAC,cAAc,CAAC,CAAC;QAE1E,MAAM,aAAa,CAAC,QAAQ,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC;QAEzD,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;QAC1D,MAAM,SAAS,GAAG,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACpE,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAC9B,MAAM,CAAC,eAAe,CAAC;YACrB,MAAM,CAAC,gBAAgB,CAAC;gBACtB,IAAI,EAAE,MAAM;gBACZ,iBAAiB,EAAE;oBACjB,MAAM,CAAC,gBAAgB,CAAC;wBACtB,IAAI,EAAE,eAAe;wBACrB,OAAO,EAAE,MAAM,CAAC,gBAAgB,CAAC,aAAa,CAAC;qBAChD,CAAC;iBACH;aACF,CAAC;SACH,CAAC,CACH,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yCAAyC,EAAE,KAAK,IAAI,EAAE;QACvD,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrC,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,MAAM,GAAG,QAAQ,CAAC;QACvC,MAAM,kBAAkB,GAAG;YACzB;gBACE,IAAI,EAAE,gBAAgB;gBACtB,IAAI,EAAE;oBACJ,WAAW,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,cAAc,EAAE,YAAY,EAAE,CAAC;oBAChE,YAAY,EAAE,EAAE;oBAChB,WAAW,EAAE,oCAAoC;iBAClD;aACF;SACF,CAAC;QACF,MAAM,qBAAqB,GAAG;YAC5B;gBACE,IAAI,EAAE,eAAe;gBACrB,IAAI,EAAE;oBACJ,MAAM,EAAE,cAAc;oBACtB,QAAQ,EAAE,8BAA8B;oBACxC,IAAI,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE;iBAClC;aACF;SACF,CAAC;QACF,MAAM,oBAAoB,GAAG;YAC3B;gBACE,IAAI,EAAE,cAAc;gBACpB,IAAI,EAAE;oBACJ,QAAQ,EAAE,8BAA8B;oBACxC,WAAW,EAAE,6BAA6B;oBAC1C,WAAW,EAAE,yCAAyC;iBACvD;aACF;SACF,CAAC;QAEF,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,qBAAqB,CAAC,kBAAkB,CAAC,CAAC;QAC9E,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,qBAAqB,CAAC,qBAAqB,CAAC,CAAC;QACjF,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC,iBAAiB,CAAC,yCAAyC,CAAC,CAAC;QAEnG,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,QAAQ,CAAC,eAAe,EAAE,YAAY,CAAC,aAAa,CAAC,CAAC;QAEzF,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;QAC1D,MAAM,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC,oBAAoB,CACrD,cAAc,EACd,SAAS,EACT,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,EAC3B,KAAK,CACN,CAAC;QACF,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,eAAe,CAAC,oBAAoB,CAAC,CAAC,CAAC;IACvE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wCAAwC,EAAE,KAAK,IAAI,EAAE;QACtD,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrC,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,MAAM,GAAG,QAAQ,CAAC;QACvC,MAAM,kBAAkB,GAAG;YACzB;gBACE,IAAI,EAAE,gBAAgB;gBACtB,IAAI,EAAE;oBACJ,WAAW,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,cAAc,EAAE,YAAY,EAAE,CAAC;oBAChE,YAAY,EAAE,EAAE;oBAChB,WAAW,EAAE,4CAA4C;iBAC1D;aACF;SACF,CAAC;QACF,MAAM,qBAAqB,GAAG;YAC5B;gBACE,IAAI,EAAE,eAAe;gBACrB,IAAI,EAAE;oBACJ,MAAM,EAAE,cAAc;oBACtB,QAAQ,EAAE,8BAA8B;oBACxC,IAAI,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE;iBAClC;aACF;SACF,CAAC;QAEF,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,qBAAqB,CAAC,kBAAkB,CAAC,CAAC;QAC9E,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,qBAAqB,CAAC,qBAAqB,CAAC,CAAC;QACjF,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC,iBAAiB,CAAC,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC,CAAC;QAE9F,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,QAAQ,CAAC,eAAe,EAAE,YAAY,CAAC,aAAa,CAAC,CAAC;QAEzF,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;QAC1D,MAAM,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC,oBAAoB,CACrD,cAAc,EACd,SAAS,EACT,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,EAC3B,KAAK,CACN,CAAC;QACF,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CACpB,MAAM,CAAC,eAAe,CAAC;YACrB,MAAM,CAAC,gBAAgB,CAAC;gBACtB,IAAI,EAAE,aAAa;gBACnB,IAAI,EAAE;oBACJ,IAAI,EAAE,MAAM,CAAC,gBAAgB,CAAC,mDAAmD,CAAC;iBACnF;aACF,CAAC;SACH,CAAC,CACH,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2DAA2D,EAAE,KAAK,IAAI,EAAE;QACzE,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrC,MAAM,sBAAsB,GAAG;YAC7B;gBACE,IAAI,EAAE,YAAY;gBAClB,IAAI,EAAE;oBACJ,QAAQ,EAAE,SAAS;oBACnB,UAAU,EAAE,qCAAqC;iBAClD;aACF;SACF,CAAC;QAEF,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,qBAAqB,CAAC,sBAAsB,CAAC,CAAC;QAElF,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,QAAQ,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC;QAExE,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;QAC1D,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,gCAAgC,EAAE,GAAG,EAAE;QAC9C,EAAE,CAAC,2DAA2D,EAAE,KAAK,IAAI,EAAE;YACzE,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,QAAQ,GAAG,IAAI,CAAC;YACrC,MAAM,eAAe,GAAG;gBACtB;oBACE,IAAI,EAAE,gBAAgB;oBACtB,IAAI,EAAE;wBACJ,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,cAAc,EAAE,WAAW,EAAE,CAAC;wBACzD,YAAY,EAAE,EAAE;wBAChB,WAAW,EAAE,cAAc;qBAC5B;iBACF;aACF,CAAC;YACF,MAAM,aAAa,GAAG;gBACpB;oBACE,IAAI,EAAE,gBAAgB;oBACtB,IAAI,EAAE;wBACJ,WAAW,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,cAAc,EAAE,WAAW,EAAE,CAAC;wBAC/D,YAAY,EAAE,EAAE;wBAChB,WAAW,EAAE,cAAc;qBAC5B;iBACF;aACF,CAAC;YAEF,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC;iBAChC,qBAAqB,CAAC,eAAe,CAAC;iBACtC,qBAAqB,CAAC,aAAa,CAAC;iBACpC,qBAAqB,CAAC;gBACrB;oBACE,IAAI,EAAE,YAAY;oBAClB,IAAI,EAAE;wBACJ,QAAQ,EAAE,SAAS;wBACnB,UAAU,EAAE,qCAAqC;qBAClD;iBACF;aACF,CAAC,CAAC;YAEL,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,QAAQ,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC;YAExE,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;YAC1D,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;gBACrB;oBACE,IAAI,EAAE;wBACJ,QAAQ,EAAE,SAAS;wBACnB,UAAU,EAAE,qCAAqC;qBAClD;oBACD,IAAI,EAAE,YAAY;iBACnB;aACF,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;YACnD,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,QAAQ,GAAG,IAAI,CAAC;YACrC,MAAM,eAAe,GAAG;gBACtB;oBACE,IAAI,EAAE,YAAY;oBAClB,IAAI,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,yBAAyB,EAAE;iBACrE;aACF,CAAC;YAEF,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC;iBAChC,qBAAqB,CAAC;gBACrB;oBACE,IAAI,EAAE,gBAAgB;oBACtB,IAAI,EAAE;wBACJ,WAAW,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,cAAc,EAAE,WAAW,EAAE,CAAC;wBAC/D,YAAY,EAAE,EAAE;wBAChB,WAAW,EAAE,cAAc;qBAC5B;iBACF;aACF,CAAC;iBACD,qBAAqB,CAAC,eAAe,CAAC;iBACtC,qBAAqB,CAAC,eAAe,CAAC,CAAC,CAAC,0CAA0C;YAErF,MAAM,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;YAEpG,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;QAC5D,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,+DAA+D,EAAE,KAAK,IAAI,EAAE;YAC7E,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,QAAQ,GAAG,IAAI,CAAC;YACrC,MAAM,cAAc,GAAG;gBACrB;oBACE,IAAI,EAAE,YAAY;oBAClB,IAAI,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,wBAAwB,EAAE;iBACrE;gBACD;oBACE,IAAI,EAAE,YAAY;oBAClB,IAAI,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,wBAAwB,EAAE;iBACrE;aACF,CAAC;YAEF,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,qBAAqB,CAAC,cAAc,CAAC,CAAC;YAE1E,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,QAAQ,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC;YAExE,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;YAC1D,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"prompt-service.test.js","sourceRoot":"","sources":["../../src/prompt/prompt-service.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { FunctionCall, FunctionDef, PromptItem } from '../../ai-service/common.js';
2
+ import { StepResult } from './steps-types.js';
3
+ import { CodegenOptions } from '../../main/codegen-types.js';
4
+ export declare function executeStepAskQuestion(generateContentFn: (prompt: PromptItem[], functionDefs: FunctionDef[], requiredFunctionName: string, temperature: number, cheap: boolean, options: CodegenOptions) => Promise<FunctionCall[]>, prompt: PromptItem[], functionDefs: FunctionDef[], temperature: number, cheap: boolean, messages: {
5
+ contextSourceCode: (paths: string[]) => string;
6
+ }, options: CodegenOptions): Promise<StepResult>;
@@ -0,0 +1,82 @@
1
+ import { input, confirm } from '@inquirer/prompts';
2
+ import { StepResult } from './steps-types.js';
3
+ export async function executeStepAskQuestion(generateContentFn, prompt, functionDefs, temperature, cheap, messages, options) {
4
+ console.log('Allowing the assistant to ask a question...');
5
+ const questionAsked = false;
6
+ while (!questionAsked) {
7
+ const askQuestionResult = await generateContentFn(prompt, functionDefs, 'askQuestion', temperature, cheap, options);
8
+ const askQuestionCall = askQuestionResult.find((call) => call.name === 'askQuestion');
9
+ if (askQuestionCall) {
10
+ console.log('Assistant asks:', askQuestionCall.args);
11
+ if (askQuestionCall.args?.stopCodegen) {
12
+ console.log('Assistant requested to stop code generation. Exiting...');
13
+ return StepResult.BREAK;
14
+ }
15
+ else if (!askQuestionCall.args?.shouldPrompt) {
16
+ console.log('Proceeding with code generation.');
17
+ break;
18
+ }
19
+ const fileContentRequested = (askQuestionCall.args?.requestFilesContent?.length ?? 0) > 0;
20
+ const permissionsRequested = Object.entries(askQuestionCall.args?.requestPermissions ?? {}).filter(([, enabled]) => enabled).length > 0;
21
+ const userAnswer = askQuestionCall.args?.shouldPrompt
22
+ ? fileContentRequested
23
+ ? (await confirm({
24
+ message: 'The assistant is requesting file contents. Do you want to provide them?',
25
+ default: true,
26
+ }))
27
+ ? 'Providing requested files content.'
28
+ : 'Request for file contents denied.'
29
+ : permissionsRequested
30
+ ? (await confirm({
31
+ message: 'The assistant is requesting additional permissions. Do you want to grant them?',
32
+ default: false,
33
+ }))
34
+ ? 'Permissions granted.'
35
+ : 'Permission request denied.'
36
+ : await input({ message: 'Your answer' })
37
+ : "Let's proceed with code generation.";
38
+ if (permissionsRequested &&
39
+ askQuestionCall.args?.requestPermissions &&
40
+ userAnswer === 'Permission request denied.') {
41
+ if (askQuestionCall.args?.requestPermissions.enableImagen) {
42
+ options.imagen = options.aiService === 'chat-gpt' ? 'dall-e' : 'vertex-ai';
43
+ }
44
+ if (askQuestionCall.args?.requestPermissions.enableVision) {
45
+ options.vision = true;
46
+ }
47
+ if (askQuestionCall.args?.requestPermissions.allowDirectoryCreate) {
48
+ options.allowDirectoryCreate = true;
49
+ }
50
+ if (askQuestionCall.args?.requestPermissions.allowFileCreate) {
51
+ options.allowFileCreate = true;
52
+ }
53
+ if (askQuestionCall.args?.requestPermissions.allowFileDelete) {
54
+ options.allowFileDelete = true;
55
+ }
56
+ if (askQuestionCall.args?.requestPermissions.allowFileMove) {
57
+ options.allowFileMove = true;
58
+ }
59
+ }
60
+ prompt.push({ type: 'assistant', functionCalls: [askQuestionCall] }, {
61
+ type: 'user',
62
+ text: userAnswer,
63
+ functionResponses: [
64
+ {
65
+ name: 'askQuestion',
66
+ call_id: askQuestionCall.id,
67
+ content: fileContentRequested && userAnswer === 'Providing requested files content.'
68
+ ? messages.contextSourceCode(askQuestionCall.args.requestFilesContent)
69
+ : undefined,
70
+ },
71
+ ],
72
+ });
73
+ console.log('The question was answered', userAnswer);
74
+ }
75
+ else {
76
+ console.log('Assistant did not ask a question. Proceeding with code generation.');
77
+ break;
78
+ }
79
+ }
80
+ return StepResult.CONTINUE;
81
+ }
82
+ //# sourceMappingURL=step-ask-question.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"step-ask-question.js","sourceRoot":"","sources":["../../../src/prompt/steps/step-ask-question.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { FunctionCall, GenerateImageFunction } from '../../ai-service/common.js';
2
+ export declare function executeStepGenerateImage(generateImageFn: GenerateImageFunction, generateImageCall: FunctionCall): Promise<FunctionCall>;
@@ -0,0 +1,29 @@
1
+ import assert from 'node:assert';
2
+ export async function executeStepGenerateImage(generateImageFn, generateImageCall) {
3
+ assert(!!generateImageFn, 'Image generation requested, but an image generation service was not provided');
4
+ console.log('Processing image generation request:', generateImageCall.args);
5
+ try {
6
+ const { prompt: imagePrompt, filePath, contextImagePath, width, height, cheap, } = generateImageCall.args;
7
+ const generatedImageUrl = await generateImageFn(imagePrompt, contextImagePath, { width, height }, cheap === true);
8
+ // Add a downloadFile call to the result to ensure the generated image is tracked
9
+ return {
10
+ name: 'downloadFile',
11
+ args: {
12
+ filePath: filePath,
13
+ downloadUrl: generatedImageUrl,
14
+ explanation: `Downloading generated image`,
15
+ },
16
+ };
17
+ }
18
+ catch (error) {
19
+ console.error('Error generating image:', error);
20
+ // Add an explanation about the failed image generation
21
+ return {
22
+ name: 'explanation',
23
+ args: {
24
+ text: `Failed to generate image: ${error.message}`,
25
+ },
26
+ };
27
+ }
28
+ }
29
+ //# sourceMappingURL=step-generate-image.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"step-generate-image.js","sourceRoot":"","sources":["../../../src/prompt/steps/step-generate-image.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAC;AAGjC,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,eAAsC,EACtC,iBAA+B;IAE/B,MAAM,CAAC,CAAC,CAAC,eAAe,EAAE,8EAA8E,CAAC,CAAC;IAE1G,OAAO,CAAC,GAAG,CAAC,sCAAsC,EAAE,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAE5E,IAAI,CAAC;QACH,MAAM,EACJ,MAAM,EAAE,WAAW,EACnB,QAAQ,EACR,gBAAgB,EAChB,KAAK,EACL,MAAM,EACN,KAAK,GACN,GAAG,iBAAiB,CAAC,IAOrB,CAAC;QACF,MAAM,iBAAiB,GAAG,MAAM,eAAe,CAAC,WAAW,EAAE,gBAAgB,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,KAAK,KAAK,IAAI,CAAC,CAAC;QAElH,iFAAiF;QACjF,OAAO;YACL,IAAI,EAAE,cAAc;YACpB,IAAI,EAAE;gBACJ,QAAQ,EAAE,QAAQ;gBAClB,WAAW,EAAE,iBAAiB;gBAC9B,WAAW,EAAE,6BAA6B;aAC3C;SACF,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,yBAAyB,EAAE,KAAK,CAAC,CAAC;QAChD,uDAAuD;QACvD,OAAO;YACL,IAAI,EAAE,aAAa;YACnB,IAAI,EAAE;gBACJ,IAAI,EAAE,6BAA8B,KAAe,CAAC,OAAO,EAAE;aAC9D;SACF,CAAC;IACJ,CAAC;AACH,CAAC"}
@@ -0,0 +1,13 @@
1
+ import { PromptItem, FunctionDef, FunctionCall, GenerateContentFunction } from '../../ai-service/common.js';
2
+ import { CodegenOptions } from '../../main/codegen-types.js';
3
+ export declare function validateAndRecoverSingleResult([prompt, functionDefs, requiredFunctionName, temperature, cheap, options]: [
4
+ PromptItem[],
5
+ FunctionDef[],
6
+ string,
7
+ number,
8
+ boolean,
9
+ CodegenOptions
10
+ ], result: FunctionCall[], messages: {
11
+ invalidFunctionCall: string;
12
+ partialPromptTemplate: (path: string) => string;
13
+ }, generateContentFn: GenerateContentFunction): Promise<FunctionCall[]>;
@@ -0,0 +1,51 @@
1
+ import assert from 'node:assert';
2
+ import { validateFunctionCall } from '../function-calling-validate.js';
3
+ export async function validateAndRecoverSingleResult([prompt, functionDefs, requiredFunctionName, temperature, cheap, options], result, messages, generateContentFn) {
4
+ if (result.length > 1) {
5
+ // quite unexpected
6
+ return result;
7
+ }
8
+ let call = result[0];
9
+ const validatorError = validateFunctionCall(call, requiredFunctionName);
10
+ if (validatorError) {
11
+ console.log('Invalid function call', call, validatorError);
12
+ if (!call) {
13
+ call = { name: requiredFunctionName };
14
+ if (requiredFunctionName === 'patchFile') {
15
+ console.log('Switching patchFile to updateFile');
16
+ requiredFunctionName = 'updateFile';
17
+ }
18
+ }
19
+ prompt.push({ type: 'assistant', functionCalls: [call] }, {
20
+ type: 'user',
21
+ text: messages.invalidFunctionCall,
22
+ functionResponses: [
23
+ {
24
+ name: call.name,
25
+ call_id: call.id,
26
+ content: JSON.stringify({ args: call.args, error: validatorError }),
27
+ isError: true,
28
+ },
29
+ ],
30
+ });
31
+ console.log('Trying to recover...');
32
+ if (cheap) {
33
+ console.log('Disabling --cheap for recovery.');
34
+ }
35
+ result = await generateContentFn(prompt, functionDefs, requiredFunctionName, temperature, false, options);
36
+ console.log('Recover result:', result);
37
+ if (result?.length === 1) {
38
+ const recoveryError = validateFunctionCall(result[0], requiredFunctionName);
39
+ assert(!recoveryError, 'Recovery failed');
40
+ console.log('Recovery was successful');
41
+ }
42
+ else if (result?.length === 0) {
43
+ throw new Error('Did not receive any function calls unexpectedly.');
44
+ }
45
+ else {
46
+ console.log('Unexpected number of function calls', result);
47
+ }
48
+ }
49
+ return result;
50
+ }
51
+ //# sourceMappingURL=step-validate-recover.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"step-validate-recover.js","sourceRoot":"","sources":["../../../src/prompt/steps/step-validate-recover.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAC;AAEjC,OAAO,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AAGvE,MAAM,CAAC,KAAK,UAAU,8BAA8B,CAClD,CAAC,MAAM,EAAE,YAAY,EAAE,oBAAoB,EAAE,WAAW,EAAE,KAAK,EAAE,OAAO,CAOvE,EACD,MAAsB,EACtB,QAGC,EACD,iBAA0C;IAE1C,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,mBAAmB;QACnB,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,IAAI,IAAI,GAA6B,MAAM,CAAC,CAAC,CAAC,CAAC;IAC/C,MAAM,cAAc,GAAG,oBAAoB,CAAC,IAAI,EAAE,oBAAoB,CAAC,CAAC;IACxE,IAAI,cAAc,EAAE,CAAC;QACnB,OAAO,CAAC,GAAG,CAAC,uBAAuB,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;QAC3D,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,IAAI,GAAG,EAAE,IAAI,EAAE,oBAAoB,EAAE,CAAC;YACtC,IAAI,oBAAoB,KAAK,WAAW,EAAE,CAAC;gBACzC,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;gBACjD,oBAAoB,GAAG,YAAY,CAAC;YACtC,CAAC;QACH,CAAC;QAED,MAAM,CAAC,IAAI,CACT,EAAE,IAAI,EAAE,WAAW,EAAE,aAAa,EAAE,CAAC,IAAI,CAAC,EAAE,EAC5C;YACE,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,QAAQ,CAAC,mBAAmB;YAClC,iBAAiB,EAAE;gBACjB;oBACE,IAAI,EAAE,IAAI,CAAC,IAAI;oBACf,OAAO,EAAE,IAAI,CAAC,EAAE;oBAChB,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC;oBACnE,OAAO,EAAE,IAAI;iBACd;aACF;SACF,CACF,CAAC;QAEF,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;QACpC,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;QACjD,CAAC;QACD,MAAM,GAAG,MAAM,iBAAiB,CAAC,MAAM,EAAE,YAAY,EAAE,oBAAoB,EAAE,WAAW,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;QAC1G,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC;QAEvC,IAAI,MAAM,EAAE,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,MAAM,aAAa,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,oBAAoB,CAAC,CAAC;YAC5E,MAAM,CAAC,CAAC,aAAa,EAAE,iBAAiB,CAAC,CAAC;YAC1C,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;QACzC,CAAC;aAAM,IAAI,MAAM,EAAE,MAAM,KAAK,CAAC,EAAE,CAAC;YAChC,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;QACtE,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,qCAAqC,EAAE,MAAM,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { PromptItem, FunctionDef, FunctionCall, GenerateContentFunction } from '../../ai-service/common.js';
2
+ import { PromptMessages } from '../prompt-service.js';
3
+ import { CodegenOptions } from '../../main/codegen-types.js';
4
+ export declare function executeStepVerifyPatch({ filePath, patch }: {
5
+ filePath: string;
6
+ patch: string;
7
+ }, generateContentFn: GenerateContentFunction, prompt: PromptItem[], functionDefs: FunctionDef[], temperature: number, cheap: boolean, messages: PromptMessages, options: CodegenOptions): Promise<FunctionCall[]>;
@@ -0,0 +1,41 @@
1
+ import fs from 'fs';
2
+ import * as diff from 'diff';
3
+ import { validateAndRecoverSingleResult } from './step-validate-recover.js';
4
+ export async function executeStepVerifyPatch({ filePath, patch }, generateContentFn, prompt, functionDefs, temperature, cheap, messages, options) {
5
+ console.log('Verification of patch for file:', filePath);
6
+ let updatedContent = false;
7
+ const currentContent = fs.readFileSync(filePath, 'utf-8');
8
+ try {
9
+ updatedContent = diff.applyPatch(currentContent, patch);
10
+ }
11
+ catch (e) {
12
+ console.log('Error when applying patch', e);
13
+ }
14
+ if (!updatedContent) {
15
+ console.log(`Patch could not be applied for ${filePath}. Retrying without patchFile function.`);
16
+ // Rerun content generation without patchFile function
17
+ const partialRequest = [
18
+ prompt,
19
+ functionDefs,
20
+ 'updateFile',
21
+ temperature,
22
+ cheap,
23
+ options,
24
+ ];
25
+ let partialResult = await generateContentFn(...partialRequest);
26
+ partialResult = await validateAndRecoverSingleResult(partialRequest, partialResult, messages, generateContentFn);
27
+ const getSourceCodeCall = partialResult.find((call) => call.name === 'getSourceCode');
28
+ if (getSourceCodeCall) {
29
+ throw new Error('Unexpected getSourceCode: ' + JSON.stringify(getSourceCodeCall));
30
+ }
31
+ if (partialResult.find((call) => call.name === 'patchFile')) {
32
+ throw new Error('Unexpected patchFile in retry response');
33
+ }
34
+ return partialResult;
35
+ }
36
+ else {
37
+ console.log('Patch verified successfully');
38
+ return [{ name: 'patchFile', args: { filePath, patch } }];
39
+ }
40
+ }
41
+ //# sourceMappingURL=step-verify-patch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"step-verify-patch.js","sourceRoot":"","sources":["../../../src/prompt/steps/step-verify-patch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAE7B,OAAO,EAAE,8BAA8B,EAAE,MAAM,4BAA4B,CAAC;AAI5E,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,EAAE,QAAQ,EAAE,KAAK,EAAuC,EACxD,iBAA0C,EAC1C,MAAoB,EACpB,YAA2B,EAC3B,WAAmB,EACnB,KAAc,EACd,QAAwB,EACxB,OAAuB;IAEvB,OAAO,CAAC,GAAG,CAAC,iCAAiC,EAAE,QAAQ,CAAC,CAAC;IAEzD,IAAI,cAAc,GAAqB,KAAK,CAAC;IAC7C,MAAM,cAAc,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAE1D,IAAI,CAAC;QACH,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;IAC1D,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,CAAC,GAAG,CAAC,2BAA2B,EAAE,CAAC,CAAC,CAAC;IAC9C,CAAC;IAED,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,OAAO,CAAC,GAAG,CAAC,kCAAkC,QAAQ,wCAAwC,CAAC,CAAC;QAEhG,sDAAsD;QACtD,MAAM,cAAc,GAA2E;YAC7F,MAAM;YACN,YAAY;YACZ,YAAY;YACZ,WAAW;YACX,KAAK;YACL,OAAO;SACR,CAAC;QACF,IAAI,aAAa,GAAG,MAAM,iBAAiB,CAAC,GAAG,cAAc,CAAC,CAAC;QAE/D,aAAa,GAAG,MAAM,8BAA8B,CAAC,cAAc,EAAE,aAAa,EAAE,QAAQ,EAAE,iBAAiB,CAAC,CAAC;QAEjH,MAAM,iBAAiB,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,eAAe,CAAC,CAAC;QACtF,IAAI,iBAAiB,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,4BAA4B,GAAG,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC,CAAC;QACpF,CAAC;QACD,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,WAAW,CAAC,EAAE,CAAC;YAC5D,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;QAC5D,CAAC;QAED,OAAO,aAAa,CAAC;IACvB,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;QAC3C,OAAO,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;IAC5D,CAAC;AACH,CAAC"}
@@ -0,0 +1,4 @@
1
+ export declare enum StepResult {
2
+ CONTINUE = 0,
3
+ BREAK = 1
4
+ }
@@ -0,0 +1,6 @@
1
+ export var StepResult;
2
+ (function (StepResult) {
3
+ StepResult[StepResult["CONTINUE"] = 0] = "CONTINUE";
4
+ StepResult[StepResult["BREAK"] = 1] = "BREAK";
5
+ })(StepResult || (StepResult = {}));
6
+ //# sourceMappingURL=steps-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"steps-types.js","sourceRoot":"","sources":["../../../src/prompt/steps/steps-types.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,UAGX;AAHD,WAAY,UAAU;IACpB,mDAAQ,CAAA;IACR,6CAAK,CAAA;AACP,CAAC,EAHW,UAAU,KAAV,UAAU,QAGrB"}
@@ -1,2 +1,3 @@
1
+ import { CodegenOptions } from '../main/codegen-types.js';
1
2
  /** Generates a system prompt */
2
- export declare function getSystemPrompt(): string;
3
+ export declare function getSystemPrompt({ verbose, askQuestion, interactive }: CodegenOptions): string;