genaicode 0.2.1 → 0.3.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 (174) hide show
  1. package/README.md +2 -0
  2. package/bin/genaicode-dev.js +2 -1
  3. package/bin/genaicode.cjs +4 -4
  4. package/dist/ai-service/ai-studio.js +8 -2
  5. package/dist/ai-service/ai-studio.js.map +1 -1
  6. package/dist/ai-service/anthropic.js +21 -8
  7. package/dist/ai-service/anthropic.js.map +1 -1
  8. package/dist/ai-service/chat-gpt.js +21 -10
  9. package/dist/ai-service/chat-gpt.js.map +1 -1
  10. package/dist/ai-service/common.d.ts +9 -5
  11. package/dist/ai-service/common.js +6 -4
  12. package/dist/ai-service/common.js.map +1 -1
  13. package/dist/ai-service/common.test.js +3 -3
  14. package/dist/ai-service/common.test.js.map +1 -1
  15. package/dist/ai-service/vertex-ai-claude.js +5 -4
  16. package/dist/ai-service/vertex-ai-claude.js.map +1 -1
  17. package/dist/ai-service/vertex-ai.js +11 -2
  18. package/dist/ai-service/vertex-ai.js.map +1 -1
  19. package/dist/cli/cli-params.d.ts +2 -0
  20. package/dist/cli/cli-params.js +14 -2
  21. package/dist/cli/cli-params.js.map +1 -1
  22. package/dist/cli/validate-cli-params.js +3 -1
  23. package/dist/cli/validate-cli-params.js.map +1 -1
  24. package/dist/files/find-files.d.ts +1 -0
  25. package/dist/files/find-files.js +7 -2
  26. package/dist/files/find-files.js.map +1 -1
  27. package/dist/files/read-files.d.ts +2 -2
  28. package/dist/files/read-files.js +2 -2
  29. package/dist/files/read-files.js.map +1 -1
  30. package/dist/files/read-files.test.js +1 -1
  31. package/dist/files/read-files.test.js.map +1 -1
  32. package/dist/main/codegen-types.d.ts +13 -0
  33. package/dist/main/codegen.d.ts +2 -2
  34. package/dist/main/codegen.js +86 -52
  35. package/dist/main/codegen.js.map +1 -1
  36. package/dist/main/codegen.test.js +7 -4
  37. package/dist/main/codegen.test.js.map +1 -1
  38. package/dist/main/common/content-bus-types.d.ts +16 -0
  39. package/dist/main/common/content-bus-types.js +7 -0
  40. package/dist/main/common/content-bus-types.js.map +1 -0
  41. package/dist/main/common/content-bus.d.ts +9 -0
  42. package/dist/main/common/content-bus.js +25 -0
  43. package/dist/main/common/content-bus.js.map +1 -0
  44. package/dist/main/common/cost-collector.d.ts +15 -0
  45. package/dist/main/common/cost-collector.js +24 -0
  46. package/dist/main/common/cost-collector.js.map +1 -0
  47. package/dist/main/common/user-actions.d.ts +7 -0
  48. package/dist/main/common/user-actions.js +15 -0
  49. package/dist/main/common/user-actions.js.map +1 -0
  50. package/dist/main/config-lib.d.ts +19 -0
  51. package/dist/main/config-lib.js.map +1 -1
  52. package/dist/main/config.d.ts +2 -1
  53. package/dist/main/config.js +3 -0
  54. package/dist/main/config.js.map +1 -1
  55. package/dist/main/interactive/codegen-interactive.js +8 -2
  56. package/dist/main/interactive/codegen-interactive.js.map +1 -1
  57. package/dist/main/interactive/codegen-worker.d.ts +1 -1
  58. package/dist/main/interactive/codegen-worker.js +5 -2
  59. package/dist/main/interactive/codegen-worker.js.map +1 -1
  60. package/dist/main/interactive/task-file.js +9 -2
  61. package/dist/main/interactive/task-file.js.map +1 -1
  62. package/dist/main/interactive/user-action-handlers.d.ts +1 -0
  63. package/dist/main/interactive/user-action-handlers.js +13 -0
  64. package/dist/main/interactive/user-action-handlers.js.map +1 -0
  65. package/dist/main/interactive/user-interrupt.js +1 -1
  66. package/dist/main/interactive/user-interrupt.js.map +1 -1
  67. package/dist/main/ui/backend/api-utils.d.ts +2 -0
  68. package/dist/main/ui/backend/api-utils.js +18 -0
  69. package/dist/main/ui/backend/api-utils.js.map +1 -0
  70. package/dist/main/ui/backend/api.d.ts +2 -0
  71. package/dist/main/ui/backend/api.js +186 -0
  72. package/dist/main/ui/backend/api.js.map +1 -0
  73. package/dist/main/ui/backend/server.d.ts +2 -0
  74. package/dist/main/ui/backend/server.js +81 -0
  75. package/dist/main/ui/backend/server.js.map +1 -0
  76. package/dist/main/ui/backend/service.d.ts +47 -0
  77. package/dist/main/ui/backend/service.js +161 -0
  78. package/dist/main/ui/backend/service.js.map +1 -0
  79. package/dist/main/ui/codegen-ui.d.ts +2 -0
  80. package/dist/main/ui/codegen-ui.js +13 -0
  81. package/dist/main/ui/codegen-ui.js.map +1 -0
  82. package/dist/main/ui/frontend/assets/index-D9wcaSJU.js +598 -0
  83. package/dist/main/ui/frontend/assets/index-S_ocA1xG.css +1 -0
  84. package/dist/main/ui/frontend/assets/logo-BGHkG1-J.png +0 -0
  85. package/dist/main/ui/frontend/assets/logo-dark-KAsU1C78.png +0 -0
  86. package/dist/main/ui/frontend/assets/press-start-2p-cyrillic-400-normal-oElOGqNf.woff2 +0 -0
  87. package/dist/main/ui/frontend/assets/press-start-2p-cyrillic-ext-400-normal-COIQET2s.woff2 +0 -0
  88. package/dist/main/ui/frontend/assets/press-start-2p-greek-400-normal-DUIT0YPZ.woff2 +0 -0
  89. package/dist/main/ui/frontend/assets/press-start-2p-latin-400-normal-BKfmdmKK.woff +0 -0
  90. package/dist/main/ui/frontend/assets/press-start-2p-latin-400-normal-xj9lRvVs.woff2 +0 -0
  91. package/dist/main/ui/frontend/assets/press-start-2p-latin-ext-400-normal-B18ub5-k.woff +0 -0
  92. package/dist/main/ui/frontend/assets/press-start-2p-latin-ext-400-normal-DDIa4im3.woff2 +0 -0
  93. package/dist/main/ui/frontend/index.html +16 -0
  94. package/dist/main/ui/user-action-handlers.d.ts +2 -0
  95. package/dist/main/ui/user-action-handlers.js +9 -0
  96. package/dist/main/ui/user-action-handlers.js.map +1 -0
  97. package/dist/prompt/ai-service-fallback.d.ts +3 -0
  98. package/dist/prompt/ai-service-fallback.js +79 -0
  99. package/dist/prompt/ai-service-fallback.js.map +1 -0
  100. package/dist/prompt/function-calling.js +3 -1
  101. package/dist/prompt/function-calling.js.map +1 -1
  102. package/dist/prompt/function-defs/ask-question.d.ts +13 -13
  103. package/dist/prompt/function-defs/ask-question.js +13 -14
  104. package/dist/prompt/function-defs/ask-question.js.map +1 -1
  105. package/dist/prompt/function-defs/codegen-summary.d.ts +23 -21
  106. package/dist/prompt/function-defs/codegen-summary.js +28 -28
  107. package/dist/prompt/function-defs/codegen-summary.js.map +1 -1
  108. package/dist/prompt/function-defs/create-file.d.ts +4 -4
  109. package/dist/prompt/function-defs/create-file.js +4 -4
  110. package/dist/prompt/function-defs/create-file.js.map +1 -1
  111. package/dist/prompt/function-defs/delete-file.d.ts +4 -4
  112. package/dist/prompt/function-defs/delete-file.js +4 -4
  113. package/dist/prompt/function-defs/delete-file.js.map +1 -1
  114. package/dist/prompt/function-defs/generate-image.d.ts +4 -4
  115. package/dist/prompt/function-defs/generate-image.js +4 -4
  116. package/dist/prompt/function-defs/generate-image.js.map +1 -1
  117. package/dist/prompt/function-defs/get-source-code.d.ts +1 -1
  118. package/dist/prompt/function-defs/get-source-code.js +2 -1
  119. package/dist/prompt/function-defs/get-source-code.js.map +1 -1
  120. package/dist/prompt/function-defs/move-file.d.ts +4 -4
  121. package/dist/prompt/function-defs/move-file.js +4 -4
  122. package/dist/prompt/function-defs/move-file.js.map +1 -1
  123. package/dist/prompt/function-defs/optimize-context.d.ts +41 -0
  124. package/dist/prompt/function-defs/optimize-context.js +42 -0
  125. package/dist/prompt/function-defs/optimize-context.js.map +1 -0
  126. package/dist/prompt/function-defs/patch-file.d.ts +4 -4
  127. package/dist/prompt/function-defs/patch-file.js +4 -4
  128. package/dist/prompt/function-defs/patch-file.js.map +1 -1
  129. package/dist/prompt/function-defs/update-file.d.ts +4 -4
  130. package/dist/prompt/function-defs/update-file.js +4 -4
  131. package/dist/prompt/function-defs/update-file.js.map +1 -1
  132. package/dist/prompt/limits.d.ts +3 -3
  133. package/dist/prompt/limits.js +10 -8
  134. package/dist/prompt/limits.js.map +1 -1
  135. package/dist/prompt/limits.test.js +6 -6
  136. package/dist/prompt/limits.test.js.map +1 -1
  137. package/dist/prompt/prompt-codegen.js +38 -23
  138. package/dist/prompt/prompt-codegen.js.map +1 -1
  139. package/dist/prompt/prompt-codegen.test.js +2 -2
  140. package/dist/prompt/prompt-codegen.test.js.map +1 -1
  141. package/dist/prompt/prompt-service-ask-question.test.js +12 -5
  142. package/dist/prompt/prompt-service-ask-question.test.js.map +1 -1
  143. package/dist/prompt/prompt-service.d.ts +3 -9
  144. package/dist/prompt/prompt-service.js +30 -7
  145. package/dist/prompt/prompt-service.js.map +1 -1
  146. package/dist/prompt/prompt-service.test.js +40 -25
  147. package/dist/prompt/prompt-service.test.js.map +1 -1
  148. package/dist/prompt/steps/step-ask-question.d.ts +1 -1
  149. package/dist/prompt/steps/step-ask-question.js +34 -17
  150. package/dist/prompt/steps/step-ask-question.js.map +1 -1
  151. package/dist/prompt/steps/step-context-optimization.d.ts +6 -0
  152. package/dist/prompt/steps/step-context-optimization.js +146 -0
  153. package/dist/prompt/steps/step-context-optimization.js.map +1 -0
  154. package/dist/prompt/systemprompt.d.ts +1 -1
  155. package/dist/prompt/systemprompt.js +82 -32
  156. package/dist/prompt/systemprompt.js.map +1 -1
  157. package/dist/prompt/systemprompt.test.js +5 -8
  158. package/dist/prompt/systemprompt.test.js.map +1 -1
  159. package/dist/prompt/token-estimator.d.ts +8 -0
  160. package/dist/prompt/token-estimator.js +31 -0
  161. package/dist/prompt/token-estimator.js.map +1 -0
  162. package/package.json +24 -4
  163. package/dist/main/codegen-interactive-utils.d.ts +0 -8
  164. package/dist/main/codegen-interactive-utils.js +0 -148
  165. package/dist/main/codegen-interactive-utils.js.map +0 -1
  166. package/dist/main/codegen-interactive.d.ts +0 -2
  167. package/dist/main/codegen-interactive.js +0 -68
  168. package/dist/main/codegen-interactive.js.map +0 -1
  169. package/dist/main/interactive/worker-script.d.ts +0 -1
  170. package/dist/main/interactive/worker-script.js +0 -24
  171. package/dist/main/interactive/worker-script.js.map +0 -1
  172. package/dist/main/interactive/worker.d.ts +0 -2
  173. package/dist/main/interactive/worker.js +0 -55
  174. package/dist/main/interactive/worker.js.map +0 -1
@@ -37,7 +37,7 @@ describe('getCodeGenPrompt', () => {
37
37
  vi.mocked(cliParams).allowFileDelete = false;
38
38
  vi.mocked(cliParams).allowDirectoryCreate = false;
39
39
  vi.mocked(cliParams).allowFileMove = false;
40
- vi.spyOn(limits, 'verifyCodegenPromptLimit').mockImplementation(() => { });
40
+ vi.spyOn(limits, 'verifyCodegenPromptLimit').mockImplementation(() => 0); // Return 0 instead of void
41
41
  const prompt = getCodeGenPrompt({
42
42
  considerAllFiles: true,
43
43
  aiService: 'vertex-ai',
@@ -55,7 +55,7 @@ describe('getCodeGenPrompt', () => {
55
55
  describe('getLintFixPrompt', () => {
56
56
  beforeEach(() => {
57
57
  vi.mocked(cliParams).verbosePrompt = false;
58
- vi.spyOn(limits, 'verifyCodegenPromptLimit').mockImplementation(() => { });
58
+ vi.spyOn(limits, 'verifyCodegenPromptLimit').mockImplementation(() => 0); // Return 0 instead of void
59
59
  });
60
60
  it('should generate a lint fix prompt with provided command, stdout, and stderr', () => {
61
61
  const command = 'eslint --fix';
@@ -1 +1 @@
1
- {"version":3,"file":"prompt-codegen.test.js","sourceRoot":"","sources":["../../src/prompt/prompt-codegen.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"prompt-codegen.test.js","sourceRoot":"","sources":["../../src/prompt/prompt-codegen.test.ts"],"names":[],"mappings":"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"}
@@ -7,6 +7,7 @@ import '../cli/cli-params.js';
7
7
  import '../files/read-files.js';
8
8
  import '../files/find-files.js';
9
9
  import { getCodeGenPrompt } from './prompt-codegen.js';
10
+ import { registerUserActionHandlers } from '../main/interactive/user-action-handlers.js';
10
11
  vi.mock('../ai-service/vertex-ai.js', () => ({ generateContent: vi.fn() }));
11
12
  vi.mock('@inquirer/prompts', () => ({
12
13
  input: vi.fn(),
@@ -52,6 +53,7 @@ describe('promptService with askQuestion', () => {
52
53
  beforeEach(() => {
53
54
  vi.resetAllMocks();
54
55
  console.log = vi.fn();
56
+ registerUserActionHandlers();
55
57
  });
56
58
  afterEach(() => {
57
59
  vi.clearAllMocks();
@@ -94,11 +96,16 @@ describe('promptService with askQuestion', () => {
94
96
  .mockResolvedValueOnce(mockAskQuestionCall2)
95
97
  .mockResolvedValueOnce(mockCodegenSummary);
96
98
  vi.mocked(prompts.input).mockImplementationOnce(() => CancelablePromise.resolve('Yes'));
97
- await promptService(GENERATE_CONTENT_FNS, GENERATE_IMAGE_FNS, getCodeGenPrompt({ aiService: 'vertex-ai', interactive: true, askQuestion: true }));
99
+ await promptService(GENERATE_CONTENT_FNS, GENERATE_IMAGE_FNS, getCodeGenPrompt({
100
+ aiService: 'vertex-ai',
101
+ disableContextOptimization: true,
102
+ interactive: true,
103
+ askQuestion: true,
104
+ }));
98
105
  expect(vertexAi.generateContent).toHaveBeenCalledTimes(3);
99
106
  expect(prompts.input).toHaveBeenCalledWith({ message: 'Your answer' });
100
107
  expect(console.log).toHaveBeenCalledWith('Assistant asks:', expect.any(Object));
101
- expect(console.log).toHaveBeenCalledWith('The question was answered');
108
+ expect(console.log).toHaveBeenCalledWith('Proceeding with code generation.', undefined);
102
109
  });
103
110
  it('should stop code generation when askQuestion returns stopCodegen: true', async () => {
104
111
  const mockAskQuestionCall = [
@@ -113,10 +120,10 @@ describe('promptService with askQuestion', () => {
113
120
  },
114
121
  ];
115
122
  vi.mocked(vertexAi.generateContent).mockResolvedValueOnce(mockAskQuestionCall);
116
- const result = await promptService(GENERATE_CONTENT_FNS, GENERATE_IMAGE_FNS, getCodeGenPrompt({ aiService: 'vertex-ai', interactive: true }));
123
+ const result = await promptService(GENERATE_CONTENT_FNS, GENERATE_IMAGE_FNS, getCodeGenPrompt({ aiService: 'vertex-ai', disableContextOptimization: true, interactive: true }));
117
124
  expect(vertexAi.generateContent).toHaveBeenCalledTimes(1);
118
125
  expect(result).toEqual([]);
119
- expect(console.log).toHaveBeenCalledWith('Assistant requested to stop code generation. Exiting...');
126
+ expect(console.log).toHaveBeenCalledWith('Assistant requested to stop code generation. Exiting...', undefined);
120
127
  });
121
128
  it('should proceed with code generation when askQuestion returns shouldPrompt: false', async () => {
122
129
  const mockAskQuestionCall = [];
@@ -133,7 +140,7 @@ describe('promptService with askQuestion', () => {
133
140
  vi.mocked(vertexAi.generateContent)
134
141
  .mockResolvedValueOnce(mockAskQuestionCall)
135
142
  .mockResolvedValueOnce(mockCodegenSummary);
136
- await promptService(GENERATE_CONTENT_FNS, GENERATE_IMAGE_FNS, getCodeGenPrompt({ aiService: 'vertex-ai', interactive: true }));
143
+ await promptService(GENERATE_CONTENT_FNS, GENERATE_IMAGE_FNS, getCodeGenPrompt({ aiService: 'vertex-ai', disableContextOptimization: true, interactive: true }));
137
144
  expect(vertexAi.generateContent).toHaveBeenCalledTimes(2);
138
145
  expect(prompts.input).not.toHaveBeenCalled();
139
146
  expect(console.log).toHaveBeenCalledWith('Assistant did not ask a question. Proceeding with code generation.');
@@ -1 +1 @@
1
- {"version":3,"file":"prompt-service-ask-question.test.js","sourceRoot":"","sources":["../../src/prompt/prompt-service-ask-question.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"prompt-service-ask-question.test.js","sourceRoot":"","sources":["../../src/prompt/prompt-service-ask-question.test.ts"],"names":[],"mappings":"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"}
@@ -1,14 +1,8 @@
1
- import { FunctionCall, GenerateContentFunction } from '../ai-service/common.js';
1
+ import { FunctionCall, GenerateContentFunction, GenerateImageFunction } from '../ai-service/common.js';
2
2
  import { AiServiceType, ImagenType } from '../main/codegen-types.js';
3
- interface GenerateImageFunction {
4
- (prompt: string, contextImagePath: string | undefined, size: {
5
- width: number;
6
- height: number;
7
- }, cheap: boolean): Promise<string>;
8
- }
9
3
  import { CodegenPrompt } from './prompt-codegen.js';
10
4
  /** A function that communicates with model using */
11
- export declare function promptService(generateContentFns: Record<AiServiceType, GenerateContentFunction>, generateImageFns: Record<ImagenType, GenerateImageFunction>, codegenPrompt: CodegenPrompt): Promise<FunctionCall[]>;
5
+ export declare function promptService(generateContentFns: Record<AiServiceType, GenerateContentFunction>, generateImageFns: Record<ImagenType, GenerateImageFunction>, codegenPrompt: CodegenPrompt, waitIfPaused?: () => Promise<void>): Promise<FunctionCall[]>;
12
6
  export type PromptMessages = ReturnType<typeof prepareMessages>;
13
7
  /**
14
8
  * Function to prepare messages for AI services
@@ -20,7 +14,7 @@ declare function prepareMessages(codegen: CodegenPrompt): {
20
14
  requestImageAssets: string;
21
15
  prompt: string;
22
16
  sourceCode: string;
23
- contextSourceCode: (paths: string[]) => string;
17
+ contextSourceCode: (paths: string[], pathsOnly?: boolean) => string;
24
18
  imageAssets: string;
25
19
  partialPromptTemplate(path: string): string;
26
20
  invalidFunctionCall: string;
@@ -9,11 +9,16 @@ import { executeStepAskQuestion } from './steps/step-ask-question.js';
9
9
  import { validateAndRecoverSingleResult } from './steps/step-validate-recover.js';
10
10
  import { executeStepVerifyPatch } from './steps/step-verify-patch.js';
11
11
  import { executeStepGenerateImage } from './steps/step-generate-image.js';
12
+ import { executeStepContextOptimization } from './steps/step-context-optimization.js';
12
13
  import { StepResult } from './steps/steps-types.js';
14
+ import { putSystemMessage } from '../main/common/content-bus.js';
15
+ import { handleAiServiceFallback } from './ai-service-fallback.js';
13
16
  /** A function that communicates with model using */
14
- export async function promptService(generateContentFns, generateImageFns, codegenPrompt) {
17
+ export async function promptService(generateContentFns, generateImageFns, codegenPrompt, waitIfPaused = () => Promise.resolve()) {
15
18
  const messages = prepareMessages(codegenPrompt);
16
- const generateContentFn = (...args) => generateContentFns[codegenPrompt.options.aiService](...args);
19
+ const generateContentFn = async (...args) => {
20
+ return await handleAiServiceFallback(generateContentFns, codegenPrompt.options.aiService, codegenPrompt.options, ...args);
21
+ };
17
22
  const generateImageFn = (...args) => {
18
23
  assert(codegenPrompt.options.imagen, 'imagen value must be provided');
19
24
  return generateImageFns[codegenPrompt.options.imagen](...args);
@@ -36,9 +41,24 @@ export async function promptService(generateContentFns, generateImageFns, codege
36
41
  prompt.push({ type: 'assistant', text: messages.requestImageAssets, functionCalls: [{ name: 'getImageAssets' }] }, { type: 'user', functionResponses: [{ name: 'getImageAssets', content: messages.imageAssets }] });
37
42
  }
38
43
  prompt.slice(-1)[0].text = messages.prompt;
44
+ // Add uploaded images to the prompt if available
45
+ if (codegenPrompt.options.images && codegenPrompt.options.images.length > 0 && codegenPrompt.options.vision) {
46
+ prompt.slice(-1)[0].images = codegenPrompt.options.images.map((img) => ({
47
+ base64url: img.base64url,
48
+ mediaType: img.mediaType,
49
+ }));
50
+ }
51
+ // Execute the context optimization step
52
+ if (!codegenPrompt.options.disableContextOptimization) {
53
+ const sourceCode = JSON.parse(messages.sourceCode);
54
+ const optimizationResult = await executeStepContextOptimization(generateContentFn, prompt, sourceCode, codegenPrompt.options);
55
+ if (optimizationResult === StepResult.BREAK) {
56
+ return [];
57
+ }
58
+ }
39
59
  // Execute the ask question step
40
60
  if (codegenPrompt.options.askQuestion !== false &&
41
- codegenPrompt.options.interactive &&
61
+ (codegenPrompt.options.interactive || codegenPrompt.options.ui) &&
42
62
  (await executeStepAskQuestion(generateContentFn, prompt, functionDefs, codegenPrompt.options.temperature ?? 0.7, codegenPrompt.options.cheap ?? false, messages, codegenPrompt.options)) === StepResult.BREAK) {
43
63
  return [];
44
64
  }
@@ -57,7 +77,7 @@ export async function promptService(generateContentFns, generateImageFns, codege
57
77
  let codegenSummaryRequest = baseResult.find((call) => call.name === 'codegenSummary');
58
78
  if (codegenSummaryRequest) {
59
79
  // Second stage: for each file request the actual code updates
60
- console.log('Received codegen summary, will collect partial updates', codegenSummaryRequest.args);
80
+ putSystemMessage('Received codegen summary, will collect partial updates', codegenSummaryRequest.args);
61
81
  baseResult = await validateAndRecoverSingleResult(baseRequest, baseResult, messages, generateContentFn);
62
82
  codegenSummaryRequest = baseResult.find((call) => call.name === 'codegenSummary');
63
83
  // Sometimes the result happens to be a string
@@ -85,13 +105,15 @@ export async function promptService(generateContentFns, generateImageFns, codege
85
105
  });
86
106
  const result = [];
87
107
  for (const file of codegenSummaryRequest.args.fileUpdates) {
88
- console.log('Collecting partial update for: ' + file.path + ' using tool: ' + file.updateToolName);
108
+ putSystemMessage('Collecting partial update for: ' + file.path + ' using tool: ' + file.updateToolName, file);
89
109
  console.log('- Prompt:', file.prompt);
90
110
  console.log('- Temperature', file.temperature);
91
111
  console.log('- Cheap', file.cheap);
92
112
  if (codegenPrompt.options.vision) {
93
113
  console.log('- Context image assets', file.contextImageAssets);
94
114
  }
115
+ // Check if execution is paused before proceeding
116
+ await waitIfPaused();
95
117
  // this is needed, otherwise we will get an error
96
118
  if (prompt.slice(-1)[0].type === 'user') {
97
119
  prompt.slice(-1)[0].text = file.prompt ?? messages.partialPromptTemplate(file.path);
@@ -115,6 +137,7 @@ export async function promptService(generateContentFns, generateImageFns, codege
115
137
  codegenPrompt.options,
116
138
  ];
117
139
  let partialResult = await generateContentFn(...partialRequest);
140
+ putSystemMessage('Received partial update', partialResult);
118
141
  // Validate if function call is compliant with the schema
119
142
  partialResult = await validateAndRecoverSingleResult(partialRequest, partialResult, messages, generateContentFn);
120
143
  // Handle image generation requests
@@ -138,7 +161,7 @@ export async function promptService(generateContentFns, generateImageFns, codege
138
161
  }
139
162
  else {
140
163
  // This is unexpected, if happens probably means no code updates.
141
- console.log('Did not receive codegen summary, returning result.');
164
+ putSystemMessage('Did not receive codegen summary, returning result.');
142
165
  return baseResult;
143
166
  }
144
167
  }
@@ -154,7 +177,7 @@ function prepareMessages(codegen) {
154
177
  prompt: codegen.prompt +
155
178
  '\n Start from generating codegen summary, this summary will be used as a context to generate updates, so make sure that it contains useful information.',
156
179
  sourceCode: JSON.stringify(getSourceCode({ taskFile: codegen.options.taskFile }, codegen.options)),
157
- contextSourceCode: (paths) => JSON.stringify(getSourceCode({ filterPaths: paths, taskFile: codegen.options.taskFile, forceAll: true }, codegen.options)),
180
+ contextSourceCode: (paths, pathsOnly = false) => JSON.stringify(Object.fromEntries(Object.entries(getSourceCode({ filterPaths: paths, taskFile: codegen.options.taskFile, forceAll: true }, codegen.options)).filter(([path]) => !pathsOnly || paths.includes(path)))),
158
181
  imageAssets: JSON.stringify(getImageAssets()),
159
182
  partialPromptTemplate(path) {
160
183
  return `Thank you for providing the summary, now suggest changes for the \`${path}\` file using appropriate tools.`;
@@ -1 +1 @@
1
- {"version":3,"file":"prompt-service.js","sourceRoot":"","sources":["../../src/prompt/prompt-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"prompt-service.js","sourceRoot":"","sources":["../../src/prompt/prompt-service.ts"],"names":[],"mappings":"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"}
@@ -28,7 +28,7 @@ vi.mock('../cli/cli-params.js', () => ({
28
28
  allowDirectoryCreate: false,
29
29
  allowFileMove: false,
30
30
  verbosePrompt: false,
31
- disableContextOptimization: false,
31
+ disableContextOptimization: true,
32
32
  vision: false,
33
33
  imagen: false,
34
34
  temperature: 0.7,
@@ -86,7 +86,7 @@ describe('promptService', () => {
86
86
  { name: 'updateFile', args: { filePath: 'test.js', newContent: 'console.log("Hello");' } },
87
87
  ];
88
88
  vi.mocked(vertexAi.generateContent).mockResolvedValueOnce(mockFunctionCalls);
89
- const result = await promptService(GENERATE_CONTENT_FNS, GENERATE_IMAGE_FNS, getCodeGenPrompt({ askQuestion: false, aiService: 'vertex-ai' }));
89
+ const result = await promptService(GENERATE_CONTENT_FNS, GENERATE_IMAGE_FNS, getCodeGenPrompt({ askQuestion: false, disableContextOptimization: true, aiService: 'vertex-ai' }));
90
90
  expect(result).toEqual(mockFunctionCalls);
91
91
  expect(vertexAi.generateContent).toHaveBeenCalled();
92
92
  });
@@ -94,7 +94,7 @@ describe('promptService', () => {
94
94
  vi.mocked(cliParams).chatGpt = true;
95
95
  const mockFunctionCalls = [{ name: 'createFile', args: { filePath: 'new.js', newContent: 'const x = 5;' } }];
96
96
  vi.mocked(chatGpt.generateContent).mockResolvedValueOnce(mockFunctionCalls);
97
- const result = await promptService(GENERATE_CONTENT_FNS, GENERATE_IMAGE_FNS, getCodeGenPrompt({ askQuestion: false, aiService: 'chat-gpt' }));
97
+ const result = await promptService(GENERATE_CONTENT_FNS, GENERATE_IMAGE_FNS, getCodeGenPrompt({ askQuestion: false, disableContextOptimization: true, aiService: 'chat-gpt' }));
98
98
  expect(result).toEqual(mockFunctionCalls);
99
99
  expect(chatGpt.generateContent).toHaveBeenCalled();
100
100
  });
@@ -102,7 +102,7 @@ describe('promptService', () => {
102
102
  vi.mocked(cliParams).anthropic = true;
103
103
  const mockFunctionCalls = [{ name: 'deleteFile', args: { filePath: 'obsolete.js' } }];
104
104
  vi.mocked(anthropic.generateContent).mockResolvedValueOnce(mockFunctionCalls);
105
- const result = await promptService(GENERATE_CONTENT_FNS, GENERATE_IMAGE_FNS, getCodeGenPrompt({ askQuestion: false, aiService: 'anthropic' }));
105
+ const result = await promptService(GENERATE_CONTENT_FNS, GENERATE_IMAGE_FNS, getCodeGenPrompt({ askQuestion: false, disableContextOptimization: true, aiService: 'anthropic' }));
106
106
  expect(result).toEqual(mockFunctionCalls);
107
107
  expect(anthropic.generateContent).toHaveBeenCalled();
108
108
  });
@@ -113,7 +113,7 @@ describe('promptService', () => {
113
113
  { name: 'updateFile', args: { filePath: 'test.js', newContent: 'console.log("Dry run");' } },
114
114
  ];
115
115
  vi.mocked(vertexAi.generateContent).mockResolvedValueOnce(mockFunctionCalls);
116
- const result = await promptService(GENERATE_CONTENT_FNS, GENERATE_IMAGE_FNS, getCodeGenPrompt({ askQuestion: false, aiService: 'vertex-ai' }));
116
+ const result = await promptService(GENERATE_CONTENT_FNS, GENERATE_IMAGE_FNS, getCodeGenPrompt({ askQuestion: false, disableContextOptimization: true, aiService: 'vertex-ai' }));
117
117
  expect(result).toEqual(mockFunctionCalls);
118
118
  expect(vertexAi.generateContent).toHaveBeenCalled();
119
119
  });
@@ -123,7 +123,7 @@ describe('promptService', () => {
123
123
  {
124
124
  name: 'codegenSummary',
125
125
  args: {
126
- fileUpdates: [{ path: 'test.js', updateToolName: 'patchFile' }],
126
+ fileUpdates: [{ path: 'test.js', updateToolName: 'patchFile', prompt: 'Generate file' }],
127
127
  contextPaths: [],
128
128
  explanation: 'Mock summary',
129
129
  },
@@ -157,7 +157,7 @@ describe('promptService', () => {
157
157
  vi.mocked(fs.readFileSync).mockReturnValue('Original content');
158
158
  // Mock diff.applyPatch to fail for the invalid patch
159
159
  vi.mocked(diff.applyPatch).mockReturnValue(false);
160
- const result = await promptService(GENERATE_CONTENT_FNS, GENERATE_IMAGE_FNS, getCodeGenPrompt({ askQuestion: false, aiService: 'vertex-ai' }));
160
+ const result = await promptService(GENERATE_CONTENT_FNS, GENERATE_IMAGE_FNS, getCodeGenPrompt({ askQuestion: false, disableContextOptimization: true, aiService: 'vertex-ai' }));
161
161
  expect(vertexAi.generateContent).toHaveBeenCalledTimes(3);
162
162
  expect(fs.readFileSync).toHaveBeenCalledWith('test.js', 'utf-8');
163
163
  expect(diff.applyPatch).toHaveBeenCalledWith('Original content', 'invalid patch');
@@ -175,7 +175,7 @@ describe('promptService', () => {
175
175
  ];
176
176
  vi.mocked(getImageAssets).mockReturnValue(mockImageAssets);
177
177
  vi.mocked(chatGpt.generateContent).mockResolvedValueOnce(mockFunctionCalls);
178
- await promptService(GENERATE_CONTENT_FNS, GENERATE_IMAGE_FNS, getCodeGenPrompt({ askQuestion: false, aiService: 'chat-gpt', vision: true }));
178
+ await promptService(GENERATE_CONTENT_FNS, GENERATE_IMAGE_FNS, getCodeGenPrompt({ askQuestion: false, disableContextOptimization: true, aiService: 'chat-gpt', vision: true }));
179
179
  expect(chatGpt.generateContent).toHaveBeenCalled();
180
180
  const calls = vi.mocked(chatGpt.generateContent).mock.calls[0];
181
181
  expect(calls[0]).toEqual(expect.arrayContaining([
@@ -205,6 +205,7 @@ describe('promptService', () => {
205
205
  path: 'test.js',
206
206
  updateToolName: 'updateFile',
207
207
  contextImageAssets: ['/path/to/image1.png', '/path/to/image2.jpg'],
208
+ prompt: 'Generate file update',
208
209
  },
209
210
  ],
210
211
  contextPaths: [],
@@ -225,13 +226,13 @@ describe('promptService', () => {
225
226
  vi.mocked(chatGpt.generateContent).mockResolvedValueOnce(mockUpdateCall);
226
227
  vi.mocked(fs.readFileSync).mockImplementation((path) => `mock-base64-data-for-${path}`);
227
228
  vi.mocked(mime.lookup).mockImplementation((path) => (path.endsWith('.png') ? 'image/png' : 'image/jpeg'));
228
- await promptService(GENERATE_CONTENT_FNS, GENERATE_IMAGE_FNS, getCodeGenPrompt({ askQuestion: false, aiService: 'chat-gpt', vision: true }));
229
+ await promptService(GENERATE_CONTENT_FNS, GENERATE_IMAGE_FNS, getCodeGenPrompt({ askQuestion: false, disableContextOptimization: true, aiService: 'chat-gpt', vision: true }));
229
230
  expect(chatGpt.generateContent).toHaveBeenCalledTimes(2);
230
231
  const secondCall = vi.mocked(chatGpt.generateContent).mock.calls[1];
231
232
  expect(secondCall[0]).toEqual(expect.arrayContaining([
232
233
  expect.objectContaining({
233
234
  type: 'user',
234
- text: expect.stringContaining('suggest changes for the `test.js` file'),
235
+ text: expect.stringContaining('Generate file update'),
235
236
  images: [
236
237
  {
237
238
  path: '/path/to/image1.png',
@@ -254,7 +255,7 @@ describe('promptService', () => {
254
255
  { name: 'updateFile', args: { filePath: 'test.js', newContent: 'console.log("No vision test");' } },
255
256
  ];
256
257
  vi.mocked(chatGpt.generateContent).mockResolvedValueOnce(mockFunctionCalls);
257
- await promptService(GENERATE_CONTENT_FNS, GENERATE_IMAGE_FNS, getCodeGenPrompt({ askQuestion: false, aiService: 'chat-gpt' }));
258
+ await promptService(GENERATE_CONTENT_FNS, GENERATE_IMAGE_FNS, getCodeGenPrompt({ askQuestion: false, disableContextOptimization: true, aiService: 'chat-gpt' }));
258
259
  expect(chatGpt.generateContent).toHaveBeenCalled();
259
260
  const calls = vi.mocked(chatGpt.generateContent).mock.calls[0];
260
261
  expect(calls[0]).not.toEqual(expect.arrayContaining([
@@ -270,7 +271,7 @@ describe('promptService', () => {
270
271
  {
271
272
  name: 'codegenSummary',
272
273
  args: {
273
- fileUpdates: [{ path: 'test.js', updateToolName: 'updateFile' }],
274
+ fileUpdates: [{ path: 'test.js', updateToolName: 'updateFile', prompt: 'Generate file' }],
274
275
  contextPaths: ['context1.js', 'context2.js'],
275
276
  explanation: 'Mock summary with context',
276
277
  },
@@ -287,7 +288,7 @@ describe('promptService', () => {
287
288
  ];
288
289
  vi.mocked(vertexAi.generateContent).mockResolvedValueOnce(mockCodegenSummary);
289
290
  vi.mocked(vertexAi.generateContent).mockResolvedValueOnce(mockUpdateCall);
290
- await promptService(GENERATE_CONTENT_FNS, GENERATE_IMAGE_FNS, getCodeGenPrompt({ askQuestion: false, aiService: 'vertex-ai' }));
291
+ await promptService(GENERATE_CONTENT_FNS, GENERATE_IMAGE_FNS, getCodeGenPrompt({ askQuestion: false, disableContextOptimization: true, aiService: 'vertex-ai' }));
291
292
  expect(vertexAi.generateContent).toHaveBeenCalledTimes(2);
292
293
  const firstCall = vi.mocked(vertexAi.generateContent).mock.calls[0];
293
294
  expect(firstCall[0]).toEqual(expect.arrayContaining([
@@ -309,7 +310,7 @@ describe('promptService', () => {
309
310
  {
310
311
  name: 'codegenSummary',
311
312
  args: {
312
- fileUpdates: [{ path: 'test.js', updateToolName: 'updateFile' }],
313
+ fileUpdates: [{ path: 'test.js', updateToolName: 'updateFile', prompt: 'Generate file' }],
313
314
  contextPaths: ['context1.js', 'context2.js'],
314
315
  explanation: 'Mock summary without context optimization',
315
316
  },
@@ -326,7 +327,7 @@ describe('promptService', () => {
326
327
  ];
327
328
  vi.mocked(vertexAi.generateContent).mockResolvedValueOnce(mockCodegenSummary);
328
329
  vi.mocked(vertexAi.generateContent).mockResolvedValueOnce(mockUpdateCall);
329
- await promptService(GENERATE_CONTENT_FNS, GENERATE_IMAGE_FNS, getCodeGenPrompt({ askQuestion: false, aiService: 'vertex-ai' }));
330
+ await promptService(GENERATE_CONTENT_FNS, GENERATE_IMAGE_FNS, getCodeGenPrompt({ askQuestion: false, disableContextOptimization: true, aiService: 'vertex-ai' }));
330
331
  expect(vertexAi.generateContent).toHaveBeenCalledTimes(2);
331
332
  const firstCall = vi.mocked(vertexAi.generateContent).mock.calls[0];
332
333
  expect(firstCall[0]).not.toEqual(expect.arrayContaining([
@@ -348,7 +349,9 @@ describe('promptService', () => {
348
349
  {
349
350
  name: 'codegenSummary',
350
351
  args: {
351
- fileUpdates: [{ path: '/path/to/generated/image.png', updateToolName: 'generateImage' }],
352
+ fileUpdates: [
353
+ { path: '/path/to/generated/image.png', updateToolName: 'generateImage', prompt: 'Generate file' },
354
+ ],
352
355
  contextPaths: [],
353
356
  explanation: 'Mock summary with image generation',
354
357
  },
@@ -378,7 +381,12 @@ describe('promptService', () => {
378
381
  vi.mocked(vertexAi.generateContent).mockResolvedValueOnce(mockCodegenSummary);
379
382
  vi.mocked(vertexAi.generateContent).mockResolvedValueOnce(mockGenerateImageCall);
380
383
  vi.mocked(dalleService.generateImage).mockResolvedValue('https://example.com/generated-image.png');
381
- const result = await promptService(GENERATE_CONTENT_FNS, GENERATE_IMAGE_FNS, getCodeGenPrompt({ askQuestion: false, aiService: 'vertex-ai', imagen: 'dall-e' }));
384
+ const result = await promptService(GENERATE_CONTENT_FNS, GENERATE_IMAGE_FNS, getCodeGenPrompt({
385
+ askQuestion: false,
386
+ disableContextOptimization: true,
387
+ aiService: 'vertex-ai',
388
+ imagen: 'dall-e',
389
+ }));
382
390
  expect(vertexAi.generateContent).toHaveBeenCalledTimes(2);
383
391
  expect(dalleService.generateImage).toHaveBeenCalledWith('A test image', undefined, { width: 256, height: 256 }, false);
384
392
  expect(result).toEqual(expect.arrayContaining(mockDownloadFileCall));
@@ -390,7 +398,9 @@ describe('promptService', () => {
390
398
  {
391
399
  name: 'codegenSummary',
392
400
  args: {
393
- fileUpdates: [{ path: '/path/to/generated/image.png', updateToolName: 'generateImage' }],
401
+ fileUpdates: [
402
+ { path: '/path/to/generated/image.png', updateToolName: 'generateImage', prompt: 'Generate file' },
403
+ ],
394
404
  contextPaths: [],
395
405
  explanation: 'Mock summary with image generation failure',
396
406
  },
@@ -410,7 +420,12 @@ describe('promptService', () => {
410
420
  vi.mocked(vertexAi.generateContent).mockResolvedValueOnce(mockCodegenSummary);
411
421
  vi.mocked(vertexAi.generateContent).mockResolvedValueOnce(mockGenerateImageCall);
412
422
  vi.mocked(dalleService.generateImage).mockRejectedValue(new Error('Image generation failed'));
413
- const result = await promptService(GENERATE_CONTENT_FNS, GENERATE_IMAGE_FNS, getCodeGenPrompt({ askQuestion: false, aiService: 'vertex-ai', imagen: 'dall-e' }));
423
+ const result = await promptService(GENERATE_CONTENT_FNS, GENERATE_IMAGE_FNS, getCodeGenPrompt({
424
+ askQuestion: false,
425
+ disableContextOptimization: true,
426
+ aiService: 'vertex-ai',
427
+ imagen: 'dall-e',
428
+ }));
414
429
  expect(vertexAi.generateContent).toHaveBeenCalledTimes(2);
415
430
  expect(dalleService.generateImage).toHaveBeenCalledWith('A test image', undefined, { width: 256, height: 256 }, false);
416
431
  expect(result).toEqual(expect.arrayContaining([
@@ -434,7 +449,7 @@ describe('promptService', () => {
434
449
  },
435
450
  ];
436
451
  vi.mocked(vertexAi.generateContent).mockResolvedValueOnce(mockUnexpectedResponse);
437
- const result = await promptService(GENERATE_CONTENT_FNS, GENERATE_IMAGE_FNS, getCodeGenPrompt({ askQuestion: false, aiService: 'vertex-ai' }));
452
+ const result = await promptService(GENERATE_CONTENT_FNS, GENERATE_IMAGE_FNS, getCodeGenPrompt({ askQuestion: false, disableContextOptimization: true, aiService: 'vertex-ai' }));
438
453
  expect(vertexAi.generateContent).toHaveBeenCalledTimes(1);
439
454
  expect(result).toEqual(mockUnexpectedResponse);
440
455
  });
@@ -455,7 +470,7 @@ describe('promptService', () => {
455
470
  {
456
471
  name: 'codegenSummary',
457
472
  args: {
458
- fileUpdates: [{ path: 'test.js', updateToolName: 'updateFile' }],
473
+ fileUpdates: [{ path: 'test.js', updateToolName: 'updateFile', prompt: 'Generate file' }],
459
474
  contextPaths: [],
460
475
  explanation: 'Mock summary',
461
476
  },
@@ -473,7 +488,7 @@ describe('promptService', () => {
473
488
  },
474
489
  },
475
490
  ]);
476
- const result = await promptService(GENERATE_CONTENT_FNS, GENERATE_IMAGE_FNS, getCodeGenPrompt({ askQuestion: false, aiService: 'vertex-ai' }));
491
+ const result = await promptService(GENERATE_CONTENT_FNS, GENERATE_IMAGE_FNS, getCodeGenPrompt({ askQuestion: false, disableContextOptimization: true, aiService: 'vertex-ai' }));
477
492
  expect(vertexAi.generateContent).toHaveBeenCalledTimes(3);
478
493
  expect(result).toEqual([
479
494
  {
@@ -498,7 +513,7 @@ describe('promptService', () => {
498
513
  {
499
514
  name: 'codegenSummary',
500
515
  args: {
501
- fileUpdates: [{ path: 'test.js', updateToolName: 'patchFile' }],
516
+ fileUpdates: [{ path: 'test.js', updateToolName: 'patchFile', prompt: 'Generate file' }],
502
517
  contextPaths: [],
503
518
  explanation: 'Mock summary',
504
519
  },
@@ -506,7 +521,7 @@ describe('promptService', () => {
506
521
  ])
507
522
  .mockResolvedValueOnce(mockInvalidCall)
508
523
  .mockResolvedValueOnce(mockInvalidCall); // Second call also returns invalid result
509
- await expect(promptService(GENERATE_CONTENT_FNS, GENERATE_IMAGE_FNS, getCodeGenPrompt({ askQuestion: false, aiService: 'vertex-ai' }))).rejects.toThrow('Recovery failed');
524
+ await expect(promptService(GENERATE_CONTENT_FNS, GENERATE_IMAGE_FNS, getCodeGenPrompt({ askQuestion: false, disableContextOptimization: true, aiService: 'vertex-ai' }))).rejects.toThrow('Recovery failed');
510
525
  expect(vertexAi.generateContent).toHaveBeenCalledTimes(3);
511
526
  });
512
527
  it('should not attempt recovery for multiple valid function calls', async () => {
@@ -522,7 +537,7 @@ describe('promptService', () => {
522
537
  },
523
538
  ];
524
539
  vi.mocked(vertexAi.generateContent).mockResolvedValueOnce(mockValidCalls);
525
- const result = await promptService(GENERATE_CONTENT_FNS, GENERATE_IMAGE_FNS, getCodeGenPrompt({ askQuestion: false, aiService: 'vertex-ai' }));
540
+ const result = await promptService(GENERATE_CONTENT_FNS, GENERATE_IMAGE_FNS, getCodeGenPrompt({ askQuestion: false, disableContextOptimization: true, aiService: 'vertex-ai' }));
526
541
  expect(vertexAi.generateContent).toHaveBeenCalledTimes(1);
527
542
  expect(result).toEqual(mockValidCalls);
528
543
  });