genaicode 0.9.3 → 0.9.4
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.
- package/dist/ai-service/anthropic.js +4 -1
- package/dist/ai-service/anthropic.js.map +1 -1
- package/dist/ai-service/common.js +1 -1
- package/dist/ai-service/common.js.map +1 -1
- package/dist/files/cache-file.d.ts +4 -1
- package/dist/files/cache-file.js.map +1 -1
- package/dist/files/file-id-utils.d.ts +7 -0
- package/dist/files/file-id-utils.js +25 -0
- package/dist/files/file-id-utils.js.map +1 -0
- package/dist/files/read-files.js +8 -8
- package/dist/files/read-files.js.map +1 -1
- package/dist/files/source-code-tree.js +3 -3
- package/dist/files/source-code-tree.js.map +1 -1
- package/dist/files/source-code-types.d.ts +21 -3
- package/dist/files/summary-cache.d.ts +3 -2
- package/dist/files/summary-cache.js +1 -1
- package/dist/files/summary-cache.js.map +1 -1
- package/dist/main/common/content-bus-types.d.ts +1 -1
- package/dist/main/common/content-bus.js +1 -1
- package/dist/main/common/content-bus.js.map +1 -1
- package/dist/main/ui/frontend/assets/{index-CSR1NiB_.js → index-COR2Vhaf.js} +226 -187
- package/dist/main/ui/frontend/index.html +1 -1
- package/dist/prompt/ai-service-fallback.js +5 -1
- package/dist/prompt/ai-service-fallback.js.map +1 -1
- package/dist/prompt/function-calling.js +4 -1
- package/dist/prompt/function-calling.js.map +1 -1
- package/dist/prompt/function-defs/ask-question.d.ts +1 -0
- package/dist/prompt/function-defs/ask-question.js +25 -0
- package/dist/prompt/function-defs/ask-question.js.map +1 -1
- package/dist/prompt/function-defs/context-compression.d.ts +25 -5
- package/dist/prompt/function-defs/context-compression.js +23 -8
- package/dist/prompt/function-defs/context-compression.js.map +1 -1
- package/dist/prompt/function-defs/extract-file-fragments.d.ts +27 -0
- package/dist/prompt/function-defs/extract-file-fragments.js +36 -0
- package/dist/prompt/function-defs/extract-file-fragments.js.map +1 -0
- package/dist/prompt/steps/step-ask-question/handlers/code-generation.js +1 -0
- package/dist/prompt/steps/step-ask-question/handlers/code-generation.js.map +1 -1
- package/dist/prompt/steps/step-ask-question/handlers/file-request-utils.d.ts +47 -0
- package/dist/prompt/steps/step-ask-question/handlers/file-request-utils.js +114 -0
- package/dist/prompt/steps/step-ask-question/handlers/file-request-utils.js.map +1 -0
- package/dist/prompt/steps/step-ask-question/handlers/handle-code-generation.d.ts +4 -0
- package/dist/prompt/steps/step-ask-question/handlers/handle-code-generation.js +167 -0
- package/dist/prompt/steps/step-ask-question/handlers/handle-code-generation.js.map +1 -0
- package/dist/prompt/steps/step-ask-question/handlers/handle-confirm-code-generation.d.ts +2 -0
- package/dist/prompt/steps/step-ask-question/handlers/handle-confirm-code-generation.js +34 -0
- package/dist/prompt/steps/step-ask-question/handlers/handle-confirm-code-generation.js.map +1 -0
- package/dist/prompt/steps/step-ask-question/handlers/handle-context-optimization.d.ts +2 -0
- package/dist/prompt/steps/step-ask-question/handlers/handle-context-optimization.js +32 -0
- package/dist/prompt/steps/step-ask-question/handlers/handle-context-optimization.js.map +1 -0
- package/dist/prompt/steps/step-ask-question/handlers/handle-create-file.js +1 -1
- package/dist/prompt/steps/step-ask-question/handlers/handle-create-file.js.map +1 -1
- package/dist/prompt/steps/step-ask-question/handlers/handle-lint.d.ts +6 -0
- package/dist/prompt/steps/step-ask-question/handlers/handle-lint.js +103 -0
- package/dist/prompt/steps/step-ask-question/handlers/handle-lint.js.map +1 -0
- package/dist/prompt/steps/step-ask-question/handlers/handle-perform-analysis.js +2 -5
- package/dist/prompt/steps/step-ask-question/handlers/handle-perform-analysis.js.map +1 -1
- package/dist/prompt/steps/step-ask-question/handlers/handle-reasoning-inference.js +1 -3
- package/dist/prompt/steps/step-ask-question/handlers/handle-reasoning-inference.js.map +1 -1
- package/dist/prompt/steps/step-ask-question/handlers/handle-remove-files-from-context.d.ts +2 -0
- package/dist/prompt/steps/step-ask-question/handlers/handle-remove-files-from-context.js +86 -0
- package/dist/prompt/steps/step-ask-question/handlers/handle-remove-files-from-context.js.map +1 -0
- package/dist/prompt/steps/step-ask-question/handlers/handle-request-files-content.d.ts +8 -0
- package/dist/prompt/steps/step-ask-question/handlers/handle-request-files-content.js +134 -0
- package/dist/prompt/steps/step-ask-question/handlers/handle-request-files-content.js.map +1 -0
- package/dist/prompt/steps/step-ask-question/handlers/handle-request-files-fragments.d.ts +8 -0
- package/dist/prompt/steps/step-ask-question/handlers/handle-request-files-fragments.js +171 -0
- package/dist/prompt/steps/step-ask-question/handlers/handle-request-files-fragments.js.map +1 -0
- package/dist/prompt/steps/step-ask-question/handlers/handle-request-permissions.d.ts +2 -0
- package/dist/prompt/steps/step-ask-question/handlers/handle-request-permissions.js +69 -0
- package/dist/prompt/steps/step-ask-question/handlers/handle-request-permissions.js.map +1 -0
- package/dist/prompt/steps/step-ask-question/handlers/handle-update-file.js +2 -2
- package/dist/prompt/steps/step-ask-question/handlers/handle-update-file.js.map +1 -1
- package/dist/prompt/steps/step-ask-question/handlers/request-files-content.js +7 -3
- package/dist/prompt/steps/step-ask-question/handlers/request-files-content.js.map +1 -1
- package/dist/prompt/steps/step-ask-question/step-ask-question-types.d.ts +7 -1
- package/dist/prompt/steps/step-ask-question/step-ask-question.js +15 -11
- package/dist/prompt/steps/step-ask-question/step-ask-question.js.map +1 -1
- package/dist/prompt/steps/step-codegen-planning.js +1 -3
- package/dist/prompt/steps/step-codegen-planning.js.map +1 -1
- package/dist/prompt/steps/step-context-compression.d.ts +1 -1
- package/dist/prompt/steps/step-context-compression.js +130 -34
- package/dist/prompt/steps/step-context-compression.js.map +1 -1
- package/dist/prompt/steps/step-context-optimization.js +7 -68
- package/dist/prompt/steps/step-context-optimization.js.map +1 -1
- package/dist/prompt/steps/step-generate-codegen-summary.js +1 -3
- package/dist/prompt/steps/step-generate-codegen-summary.js.map +1 -1
- package/dist/prompt/steps/step-history-update.js +1 -3
- package/dist/prompt/steps/step-history-update.js.map +1 -1
- package/dist/prompt/steps/step-process-file-updates.js +0 -3
- package/dist/prompt/steps/step-process-file-updates.js.map +1 -1
- package/dist/prompt/steps/step-summarization.d.ts +2 -1
- package/dist/prompt/steps/step-summarization.js +6 -5
- package/dist/prompt/steps/step-summarization.js.map +1 -1
- package/dist/prompt/steps/step-verify-patch.js +1 -3
- package/dist/prompt/steps/step-verify-patch.js.map +1 -1
- package/dist/prompt/systemprompt.js +1 -0
- package/dist/prompt/systemprompt.js.map +1 -1
- package/package.json +4 -4
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
import { putAssistantMessage, putSystemMessage, putUserMessage } from '../../../../main/common/content-bus.js';
|
|
2
|
+
import { askUserForConfirmation, askUserForConfirmationWithAnswer } from '../../../../main/common/user-actions.js';
|
|
3
|
+
import { getFunctionDefs } from '../../../function-calling.js';
|
|
4
|
+
import { CODEGEN_SUMMARY_PROMPT } from '../../../static-prompts.js';
|
|
5
|
+
import { executeStepCodegenPlanning } from '../../step-codegen-planning.js';
|
|
6
|
+
import { generateCodegenSummary } from '../../step-generate-codegen-summary.js';
|
|
7
|
+
import { processFileUpdates } from '../../step-process-file-updates.js';
|
|
8
|
+
import { StepResult } from '../../steps-types.js';
|
|
9
|
+
import { updateFiles } from '../../../../files/update-files.js';
|
|
10
|
+
import { executeStepContextCompression } from '../../step-context-compression.js';
|
|
11
|
+
export const CODEGEN_SUMMARY_GENERATED_MESSAGE = 'Codegen summary is generated. Would you like to proceed with the code changes?';
|
|
12
|
+
export const CODEGEN_SUMMARY_APPROVED = 'Accept codegen summary and continue';
|
|
13
|
+
export async function handleCodeGeneration({ generateContentFn, generateImageFn, waitIfPaused, prompt, options, }) {
|
|
14
|
+
const planningResult = await executeStepCodegenPlanning(generateContentFn, prompt, options);
|
|
15
|
+
if (planningResult === StepResult.BREAK) {
|
|
16
|
+
return {
|
|
17
|
+
breakLoop: true,
|
|
18
|
+
items: [],
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
// Ask user to confirm the planning result
|
|
22
|
+
const planningConfirmation = await askUserForConfirmationWithAnswer(CODEGEN_SUMMARY_PROMPT, 'Accept plan', 'Reject plan', true, options);
|
|
23
|
+
if (!planningConfirmation.confirmed) {
|
|
24
|
+
// User rejected the planning, return to conversation
|
|
25
|
+
return {
|
|
26
|
+
breakLoop: false,
|
|
27
|
+
items: [
|
|
28
|
+
{
|
|
29
|
+
assistant: {
|
|
30
|
+
type: 'assistant',
|
|
31
|
+
text: CODEGEN_SUMMARY_PROMPT,
|
|
32
|
+
functionCalls: [],
|
|
33
|
+
},
|
|
34
|
+
user: {
|
|
35
|
+
type: 'user',
|
|
36
|
+
text: planningConfirmation.answer || 'Planning rejected. Returning to conversation.',
|
|
37
|
+
},
|
|
38
|
+
},
|
|
39
|
+
],
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
// Add user's planning confirmation answer to prompt history
|
|
43
|
+
const assistantItem = {
|
|
44
|
+
type: 'assistant',
|
|
45
|
+
text: CODEGEN_SUMMARY_PROMPT,
|
|
46
|
+
};
|
|
47
|
+
putAssistantMessage(assistantItem.text, undefined, undefined, undefined, assistantItem);
|
|
48
|
+
prompt.push(assistantItem);
|
|
49
|
+
const userItem = {
|
|
50
|
+
type: 'user',
|
|
51
|
+
text: 'Accept planning and continue.' + (planningConfirmation.answer ? `\n\n${planningConfirmation.answer}` : ''),
|
|
52
|
+
};
|
|
53
|
+
putUserMessage(userItem.text, undefined, undefined, undefined, userItem);
|
|
54
|
+
prompt.push(userItem);
|
|
55
|
+
try {
|
|
56
|
+
// First step: Generate and validate codegen summary
|
|
57
|
+
const { codegenSummaryRequest, baseResult } = await generateCodegenSummary(generateContentFn, prompt, getFunctionDefs(), options);
|
|
58
|
+
// Ask user to confirm the codegen summary
|
|
59
|
+
const codegenSummaryConfirmation = await askUserForConfirmationWithAnswer(CODEGEN_SUMMARY_GENERATED_MESSAGE, 'Accept codegen summary', 'Reject codegen summary', true, options);
|
|
60
|
+
if (!codegenSummaryConfirmation.confirmed) {
|
|
61
|
+
// User rejected the codegen summary, return to conversation
|
|
62
|
+
return {
|
|
63
|
+
breakLoop: false,
|
|
64
|
+
items: [
|
|
65
|
+
{
|
|
66
|
+
assistant: {
|
|
67
|
+
type: 'assistant',
|
|
68
|
+
text: CODEGEN_SUMMARY_GENERATED_MESSAGE,
|
|
69
|
+
},
|
|
70
|
+
user: {
|
|
71
|
+
type: 'user',
|
|
72
|
+
text: codegenSummaryConfirmation.answer || 'Codegen summary rejected. Returning to conversation.',
|
|
73
|
+
},
|
|
74
|
+
},
|
|
75
|
+
],
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
putAssistantMessage(CODEGEN_SUMMARY_GENERATED_MESSAGE);
|
|
79
|
+
putUserMessage(codegenSummaryConfirmation.answer || CODEGEN_SUMMARY_APPROVED);
|
|
80
|
+
prompt.push({
|
|
81
|
+
type: 'assistant',
|
|
82
|
+
text: CODEGEN_SUMMARY_GENERATED_MESSAGE,
|
|
83
|
+
}, {
|
|
84
|
+
type: 'user',
|
|
85
|
+
text: codegenSummaryConfirmation.answer || CODEGEN_SUMMARY_APPROVED,
|
|
86
|
+
});
|
|
87
|
+
// Second step: Process file updates
|
|
88
|
+
const updateResults = await processFileUpdates(generateContentFn, prompt, getFunctionDefs(), options, codegenSummaryRequest, waitIfPaused, generateImageFn);
|
|
89
|
+
const functionCalls = [...baseResult, ...updateResults];
|
|
90
|
+
const confirmApply = await askUserForConfirmationWithAnswer('Code changes are generated, now what?', 'Apply code changes', 'Reject code changes', true, options);
|
|
91
|
+
putAssistantMessage('Code changes are generated, now what?');
|
|
92
|
+
if (confirmApply.confirmed) {
|
|
93
|
+
putUserMessage(confirmApply.answer || 'Apply code changes.');
|
|
94
|
+
prompt.push({
|
|
95
|
+
type: 'assistant',
|
|
96
|
+
text: 'Code changes are generated, now what?',
|
|
97
|
+
}, {
|
|
98
|
+
type: 'user',
|
|
99
|
+
text: 'Apply code changes. ' + confirmApply.answer,
|
|
100
|
+
});
|
|
101
|
+
putSystemMessage('Applying code changes...');
|
|
102
|
+
if (options.dryRun) {
|
|
103
|
+
putSystemMessage('Dry run mode, not updating files');
|
|
104
|
+
}
|
|
105
|
+
else {
|
|
106
|
+
// Apply the code changes
|
|
107
|
+
await updateFiles(functionCalls.filter((call) => call.name !== 'explanation' && call.name !== 'getSourceCode' && call.name !== 'codegenSummary'), options);
|
|
108
|
+
putSystemMessage('Code changes applied successfully');
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
else {
|
|
112
|
+
putUserMessage(confirmApply.answer || 'Reject code changes.');
|
|
113
|
+
putSystemMessage('Rejecting code changes...');
|
|
114
|
+
prompt.push({
|
|
115
|
+
type: 'assistant',
|
|
116
|
+
text: 'Code changes are generated, now what?',
|
|
117
|
+
}, {
|
|
118
|
+
type: 'user',
|
|
119
|
+
text: 'Reject code changes. ' + confirmApply.answer,
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
if (!(await askUserForConfirmation('Code generation completed, do you want to continue conversation?', false, options, 'Continue conversation', 'End conversation')).confirmed) {
|
|
123
|
+
return {
|
|
124
|
+
breakLoop: true,
|
|
125
|
+
stepResult: functionCalls,
|
|
126
|
+
items: [],
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
putSystemMessage('Continuing conversation...');
|
|
130
|
+
const compressionResult = await executeStepContextCompression(generateContentFn, prompt, options);
|
|
131
|
+
prompt.push({
|
|
132
|
+
type: 'assistant',
|
|
133
|
+
text: `Code generation completed, changes ${confirmApply.confirmed ? 'were accepted and applied' : 'changes were rejected and not applied'}. Should we continue the conversation?`,
|
|
134
|
+
}, {
|
|
135
|
+
type: 'user',
|
|
136
|
+
text: 'Thank you for doing the code generation, now lets continue the conversation.',
|
|
137
|
+
});
|
|
138
|
+
return {
|
|
139
|
+
breakLoop: compressionResult !== StepResult.CONTINUE,
|
|
140
|
+
stepResult: functionCalls,
|
|
141
|
+
items: [],
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
catch (error) {
|
|
145
|
+
putSystemMessage(`Error during code generation: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
146
|
+
const tryAgainConfirm = await askUserForConfirmation('An error occurred during code generation. Would you like to try again or continue the conversation?', false, options, 'Try again', 'Continue conversation');
|
|
147
|
+
return {
|
|
148
|
+
breakLoop: !tryAgainConfirm.confirmed,
|
|
149
|
+
items: [
|
|
150
|
+
{
|
|
151
|
+
assistant: {
|
|
152
|
+
type: 'assistant',
|
|
153
|
+
text: 'An error occurred during code generation. Would you like to try again or continue the conversation?',
|
|
154
|
+
functionCalls: [],
|
|
155
|
+
},
|
|
156
|
+
user: {
|
|
157
|
+
type: 'user',
|
|
158
|
+
text: tryAgainConfirm.confirmed
|
|
159
|
+
? 'Lets continue the conversation'
|
|
160
|
+
: 'Error occurred during code generation.',
|
|
161
|
+
},
|
|
162
|
+
},
|
|
163
|
+
],
|
|
164
|
+
};
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
//# sourceMappingURL=handle-code-generation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handle-code-generation.js","sourceRoot":"","sources":["../../../../../src/prompt/steps/step-ask-question/handlers/handle-code-generation.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { putSystemMessage } from '../../../../main/common/content-bus.js';
|
|
2
|
+
import { askUserForConfirmationWithAnswer } from '../../../../main/common/user-actions.js';
|
|
3
|
+
export async function handleConfirmCodeGeneration({ askQuestionCall, options, }) {
|
|
4
|
+
const userConfirmation = await askUserForConfirmationWithAnswer('The assistant is ready to start code generation. Do you want to proceed?', 'Start code generation', 'Continue conversation', true, options);
|
|
5
|
+
if (userConfirmation.confirmed) {
|
|
6
|
+
putSystemMessage('Proceeding with code generation.');
|
|
7
|
+
return {
|
|
8
|
+
breakLoop: true,
|
|
9
|
+
executeCodegen: true,
|
|
10
|
+
items: [
|
|
11
|
+
{
|
|
12
|
+
assistant: { type: 'assistant', text: askQuestionCall.args?.message ?? '', functionCalls: [] },
|
|
13
|
+
user: { type: 'user', text: userConfirmation.answer || 'Confirmed. Proceed with code generation.' },
|
|
14
|
+
},
|
|
15
|
+
],
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
else {
|
|
19
|
+
putSystemMessage('Declined. Continuing the conversation.');
|
|
20
|
+
return {
|
|
21
|
+
breakLoop: false,
|
|
22
|
+
items: [
|
|
23
|
+
{
|
|
24
|
+
assistant: { type: 'assistant', text: askQuestionCall.args?.message ?? '' },
|
|
25
|
+
user: {
|
|
26
|
+
type: 'user',
|
|
27
|
+
text: userConfirmation.answer || 'Declined. Please continue the conversation.',
|
|
28
|
+
},
|
|
29
|
+
},
|
|
30
|
+
],
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=handle-confirm-code-generation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handle-confirm-code-generation.js","sourceRoot":"","sources":["../../../../../src/prompt/steps/step-ask-question/handlers/handle-confirm-code-generation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,wCAAwC,CAAC;AAC1E,OAAO,EAAE,gCAAgC,EAAE,MAAM,yCAAyC,CAAC;AAG3F,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAAC,EAChD,eAAe,EACf,OAAO,GACY;IACnB,MAAM,gBAAgB,GAAG,MAAM,gCAAgC,CAC7D,0EAA0E,EAC1E,uBAAuB,EACvB,uBAAuB,EACvB,IAAI,EACJ,OAAO,CACR,CAAC;IACF,IAAI,gBAAgB,CAAC,SAAS,EAAE,CAAC;QAC/B,gBAAgB,CAAC,kCAAkC,CAAC,CAAC;QACrD,OAAO;YACL,SAAS,EAAE,IAAI;YACf,cAAc,EAAE,IAAI;YACpB,KAAK,EAAE;gBACL;oBACE,SAAS,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,eAAe,CAAC,IAAI,EAAE,OAAO,IAAI,EAAE,EAAE,aAAa,EAAE,EAAE,EAAE;oBAC9F,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,gBAAgB,CAAC,MAAM,IAAI,0CAA0C,EAAE;iBACpG;aACF;SACF,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,gBAAgB,CAAC,wCAAwC,CAAC,CAAC;QAC3D,OAAO;YACL,SAAS,EAAE,KAAK;YAChB,KAAK,EAAE;gBACL;oBACE,SAAS,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,eAAe,CAAC,IAAI,EAAE,OAAO,IAAI,EAAE,EAAE;oBAC3E,IAAI,EAAE;wBACJ,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,gBAAgB,CAAC,MAAM,IAAI,6CAA6C;qBAC/E;iBACF;aACF;SACF,CAAC;IACJ,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { refreshFiles } from '../../../../files/find-files.js';
|
|
2
|
+
import { putSystemMessage } from '../../../../main/common/content-bus.js';
|
|
3
|
+
import { askUserForConfirmation } from '../../../../main/common/user-actions.js';
|
|
4
|
+
import { executeStepContextOptimization } from '../../step-context-optimization.js';
|
|
5
|
+
export async function handleContextOptimization({ askQuestionCall, prompt, options, generateContentFn, }) {
|
|
6
|
+
const userConfirmation = await askUserForConfirmation('The assistant suggests optimizing the context to reduce token usage, cost, and latency. Do you want to proceed?', false, options);
|
|
7
|
+
const user = {
|
|
8
|
+
type: 'user',
|
|
9
|
+
text: userConfirmation ? 'Context optimization applied.' : 'Context optimization not applied.',
|
|
10
|
+
};
|
|
11
|
+
const assistant = {
|
|
12
|
+
type: 'assistant',
|
|
13
|
+
text: askQuestionCall.args?.message ?? '',
|
|
14
|
+
};
|
|
15
|
+
if (userConfirmation.confirmed) {
|
|
16
|
+
// the request may be caused be an appearance of a new file, so lets refresh
|
|
17
|
+
refreshFiles();
|
|
18
|
+
// Execute context optimization step
|
|
19
|
+
putSystemMessage('Executing context optimization step.');
|
|
20
|
+
await executeStepContextOptimization(generateContentFn, [...prompt, assistant, user], options);
|
|
21
|
+
}
|
|
22
|
+
return {
|
|
23
|
+
breakLoop: false,
|
|
24
|
+
items: [
|
|
25
|
+
{
|
|
26
|
+
assistant,
|
|
27
|
+
user,
|
|
28
|
+
},
|
|
29
|
+
],
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=handle-context-optimization.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handle-context-optimization.js","sourceRoot":"","sources":["../../../../../src/prompt/steps/step-ask-question/handlers/handle-context-optimization.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,wCAAwC,CAAC;AAC1E,OAAO,EAAE,sBAAsB,EAAE,MAAM,yCAAyC,CAAC;AACjF,OAAO,EAAE,8BAA8B,EAAE,MAAM,oCAAoC,CAAC;AAGpF,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAAC,EAC9C,eAAe,EACf,MAAM,EACN,OAAO,EACP,iBAAiB,GACE;IACnB,MAAM,gBAAgB,GAAG,MAAM,sBAAsB,CACnD,iHAAiH,EACjH,KAAK,EACL,OAAO,CACR,CAAC;IAEF,MAAM,IAAI,GAAa;QACrB,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,gBAAgB,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC,CAAC,mCAAmC;KAC/F,CAAC;IAEF,MAAM,SAAS,GAAkB;QAC/B,IAAI,EAAE,WAAW;QACjB,IAAI,EAAE,eAAe,CAAC,IAAI,EAAE,OAAO,IAAI,EAAE;KAC1C,CAAC;IAEF,IAAI,gBAAgB,CAAC,SAAS,EAAE,CAAC;QAC/B,4EAA4E;QAC5E,YAAY,EAAE,CAAC;QAEf,oCAAoC;QACpC,gBAAgB,CAAC,sCAAsC,CAAC,CAAC;QACzD,MAAM,8BAA8B,CAAC,iBAAiB,EAAE,CAAC,GAAG,MAAM,EAAE,SAAS,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;IACjG,CAAC;IAED,OAAO;QACL,SAAS,EAAE,KAAK;QAChB,KAAK,EAAE;YACL;gBACE,SAAS;gBACT,IAAI;aACL;SACF;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -29,7 +29,7 @@ export const handleCreateFile = async ({ askQuestionCall, options, prompt, gener
|
|
|
29
29
|
if (generateConfirmation.answer) {
|
|
30
30
|
putUserMessage(generateConfirmation.answer);
|
|
31
31
|
}
|
|
32
|
-
putSystemMessage('Content generation started.'
|
|
32
|
+
putSystemMessage('Content generation started.');
|
|
33
33
|
const [createFileCall] = (await generateContentFn([
|
|
34
34
|
...prompt,
|
|
35
35
|
{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handle-create-file.js","sourceRoot":"","sources":["../../../../../src/prompt/steps/step-ask-question/handlers/handle-create-file.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,IAAI,iBAAiB,EAAE,MAAM,4DAA4D,CAAC;AAE3G,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAE/D,OAAO,EAAE,SAAS,EAAE,MAAM,wCAAwC,CAAC;AACnE,OAAO,EAAE,gCAAgC,EAAE,MAAM,yCAAyC,CAAC;AAC3F,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,wCAAwC,CAAC;AAC1F,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAE/D,MAAM,CAAC,MAAM,gBAAgB,GAAkB,KAAK,EAAE,EACpD,eAAe,EACf,OAAO,EACP,MAAM,EACN,iBAAiB,GAClB,EAAyB,EAAE;IAC1B,gBAAgB,CAAC,0BAA0B,EAAE,eAAe,CAAC,CAAC;IAE9D,+EAA+E;IAC/E,MAAM,oBAAoB,GAAG,MAAM,gCAAgC,CACjE,2GAA2G,EAC3G,kBAAkB,EAClB,2BAA2B,EAC3B,KAAK,EACL,OAAO,CACR,CAAC;IAEF,IAAI,CAAC,oBAAoB,CAAC,SAAS,EAAE,CAAC;QACpC,OAAO;YACL,SAAS,EAAE,KAAK;YAChB,KAAK,EAAE;gBACL;oBACE,SAAS,EAAE;wBACT,IAAI,EAAE,WAAW;wBACjB,IAAI,EAAE,eAAe,CAAC,IAAK,CAAC,OAAO;qBACpC;oBACD,IAAI,EAAE;wBACJ,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,0BAA0B,GAAG,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,oBAAoB,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;qBAC1G;iBACF;aACF;SACF,CAAC;IACJ,CAAC;IAED,IAAI,oBAAoB,CAAC,MAAM,EAAE,CAAC;QAChC,cAAc,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;IAC9C,CAAC;IAED,gBAAgB,CAAC,6BAA6B,
|
|
1
|
+
{"version":3,"file":"handle-create-file.js","sourceRoot":"","sources":["../../../../../src/prompt/steps/step-ask-question/handlers/handle-create-file.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { ActionHandlerProps, ActionResult } from '../step-ask-question-types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Handles the lint action by executing the lint command and processing its results.
|
|
4
|
+
* If the lint command fails, it will ask for user confirmation to continue with code generation.
|
|
5
|
+
*/
|
|
6
|
+
export declare function handleLint({ askQuestionCall }: ActionHandlerProps): Promise<ActionResult>;
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import { exec } from 'child_process';
|
|
2
|
+
import { promisify } from 'util';
|
|
3
|
+
import { putSystemMessage } from '../../../../main/common/content-bus.js';
|
|
4
|
+
import { rcConfig } from '../../../../main/config.js';
|
|
5
|
+
const execPromise = promisify(exec);
|
|
6
|
+
/**
|
|
7
|
+
* Handles the lint action by executing the lint command and processing its results.
|
|
8
|
+
* If the lint command fails, it will ask for user confirmation to continue with code generation.
|
|
9
|
+
*/
|
|
10
|
+
export async function handleLint({ askQuestionCall }) {
|
|
11
|
+
if (!rcConfig.lintCommand) {
|
|
12
|
+
return {
|
|
13
|
+
breakLoop: false,
|
|
14
|
+
items: [
|
|
15
|
+
{
|
|
16
|
+
assistant: {
|
|
17
|
+
type: 'assistant',
|
|
18
|
+
text: askQuestionCall.args?.message ?? '',
|
|
19
|
+
functionCalls: [{ name: 'lint', id: askQuestionCall.id + '_lint' }],
|
|
20
|
+
},
|
|
21
|
+
user: {
|
|
22
|
+
type: 'user',
|
|
23
|
+
text: 'Lint command not configured. Skipping lint check.',
|
|
24
|
+
functionResponses: [
|
|
25
|
+
{
|
|
26
|
+
name: 'lint',
|
|
27
|
+
call_id: askQuestionCall.id + '_lint',
|
|
28
|
+
content: JSON.stringify({ error: 'Lint command not configured' }),
|
|
29
|
+
},
|
|
30
|
+
],
|
|
31
|
+
},
|
|
32
|
+
},
|
|
33
|
+
],
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
let lintResult;
|
|
37
|
+
try {
|
|
38
|
+
putSystemMessage(`Executing lint command: ${rcConfig.lintCommand}`);
|
|
39
|
+
await execPromise(rcConfig.lintCommand, { cwd: rcConfig.rootDir });
|
|
40
|
+
lintResult = {
|
|
41
|
+
success: true,
|
|
42
|
+
};
|
|
43
|
+
return {
|
|
44
|
+
breakLoop: false,
|
|
45
|
+
lintResult,
|
|
46
|
+
items: [
|
|
47
|
+
{
|
|
48
|
+
assistant: {
|
|
49
|
+
type: 'assistant',
|
|
50
|
+
text: askQuestionCall.args?.message ?? '',
|
|
51
|
+
functionCalls: [{ name: 'lint', id: askQuestionCall.id + '_lint' }],
|
|
52
|
+
},
|
|
53
|
+
user: {
|
|
54
|
+
type: 'user',
|
|
55
|
+
text: 'Lint command executed successfully, no issues found.',
|
|
56
|
+
functionResponses: [
|
|
57
|
+
{
|
|
58
|
+
name: 'lint',
|
|
59
|
+
call_id: askQuestionCall.id + '_lint',
|
|
60
|
+
content: JSON.stringify(lintResult),
|
|
61
|
+
},
|
|
62
|
+
],
|
|
63
|
+
},
|
|
64
|
+
},
|
|
65
|
+
],
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
catch (error) {
|
|
69
|
+
const { stdout, stderr } = error;
|
|
70
|
+
lintResult = {
|
|
71
|
+
success: false,
|
|
72
|
+
stdout,
|
|
73
|
+
stderr,
|
|
74
|
+
};
|
|
75
|
+
// User confirmed to continue despite lint errors
|
|
76
|
+
return {
|
|
77
|
+
breakLoop: false,
|
|
78
|
+
lintResult,
|
|
79
|
+
items: [
|
|
80
|
+
{
|
|
81
|
+
assistant: {
|
|
82
|
+
type: 'assistant',
|
|
83
|
+
text: askQuestionCall.args?.message ?? '',
|
|
84
|
+
functionCalls: [{ name: 'lint', id: askQuestionCall.id + '_lint' }],
|
|
85
|
+
},
|
|
86
|
+
user: {
|
|
87
|
+
type: 'user',
|
|
88
|
+
text: 'Lint command failed, please analyze the output.',
|
|
89
|
+
data: { stdout, stderr },
|
|
90
|
+
functionResponses: [
|
|
91
|
+
{
|
|
92
|
+
name: 'lint',
|
|
93
|
+
call_id: askQuestionCall.id + '_lint',
|
|
94
|
+
content: JSON.stringify(lintResult),
|
|
95
|
+
},
|
|
96
|
+
],
|
|
97
|
+
},
|
|
98
|
+
},
|
|
99
|
+
],
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
//# sourceMappingURL=handle-lint.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handle-lint.js","sourceRoot":"","sources":["../../../../../src/prompt/steps/step-ask-question/handlers/handle-lint.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,6 @@ import { ModelType } from '../../../../ai-service/common-types.js';
|
|
|
2
2
|
import { putAssistantMessage, putSystemMessage } from '../../../../main/common/content-bus.js';
|
|
3
3
|
import { performAnalysis } from '../../../function-defs/perform-analysis.js';
|
|
4
4
|
import { analysisResult } from '../../../function-defs/analysis-result.js';
|
|
5
|
-
import { validateAndRecoverSingleResult } from '../../step-validate-recover.js';
|
|
6
5
|
import { askUserForInput } from '../../../../main/common/user-actions.js';
|
|
7
6
|
/**
|
|
8
7
|
* Handles the performAnalysis action by executing analysis with enhanced context
|
|
@@ -76,8 +75,7 @@ async function getPerformAnalysisCall(generateContentFn, prompt, functionDefs, o
|
|
|
76
75
|
ModelType.CHEAP,
|
|
77
76
|
options,
|
|
78
77
|
];
|
|
79
|
-
|
|
80
|
-
performAnalysisResult = await validateAndRecoverSingleResult(performAnalysisRequest, performAnalysisResult, generateContentFn);
|
|
78
|
+
const performAnalysisResult = await generateContentFn(...performAnalysisRequest);
|
|
81
79
|
return performAnalysisResult.find((call) => call.name === 'performAnalysis');
|
|
82
80
|
}
|
|
83
81
|
/**
|
|
@@ -92,8 +90,7 @@ async function executeAnalysis(generateContentFn, prompt, functionDefs, options)
|
|
|
92
90
|
ModelType.DEFAULT,
|
|
93
91
|
options,
|
|
94
92
|
];
|
|
95
|
-
|
|
96
|
-
analysisResult = await validateAndRecoverSingleResult(analysisRequest, analysisResult, generateContentFn);
|
|
93
|
+
const analysisResult = await generateContentFn(...analysisRequest);
|
|
97
94
|
return analysisResult.find((call) => call.name === 'analysisResult');
|
|
98
95
|
}
|
|
99
96
|
//# sourceMappingURL=handle-perform-analysis.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handle-perform-analysis.js","sourceRoot":"","sources":["../../../../../src/prompt/steps/step-ask-question/handlers/handle-perform-analysis.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAE,MAAM,wCAAwC,CAAC;AAOnE,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,wCAAwC,CAAC;AAC/F,OAAO,EAAE,eAAe,EAAE,MAAM,4CAA4C,CAAC;AAC7E,OAAO,EAAE,cAAc,EAAE,MAAM,2CAA2C,CAAC;
|
|
1
|
+
{"version":3,"file":"handle-perform-analysis.js","sourceRoot":"","sources":["../../../../../src/prompt/steps/step-ask-question/handlers/handle-perform-analysis.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { ModelType } from '../../../../ai-service/common-types.js';
|
|
2
2
|
import { putSystemMessage } from '../../../../main/common/content-bus.js';
|
|
3
3
|
import { getFunctionDefs } from '../../../function-calling.js';
|
|
4
|
-
import { validateAndRecoverSingleResult } from '../../step-validate-recover.js';
|
|
5
4
|
import { getContextSourceCode } from '../../../../files/source-code-utils.js';
|
|
6
5
|
/**
|
|
7
6
|
* Handler for the reasoningInference action.
|
|
@@ -25,8 +24,7 @@ export async function handleReasoningInference({ askQuestionCall, prompt, genera
|
|
|
25
24
|
ModelType.CHEAP,
|
|
26
25
|
options,
|
|
27
26
|
];
|
|
28
|
-
const
|
|
29
|
-
const [reasoningInferenceCall] = (await validateAndRecoverSingleResult(request, result, generateContentFn));
|
|
27
|
+
const [reasoningInferenceCall] = (await generateContentFn(...request));
|
|
30
28
|
if (!reasoningInferenceCall?.args?.prompt) {
|
|
31
29
|
putSystemMessage('Failed to get valid reasoningInference request');
|
|
32
30
|
prompt.push({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handle-reasoning-inference.js","sourceRoot":"","sources":["../../../../../src/prompt/steps/step-ask-question/handlers/handle-reasoning-inference.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,wCAAwC,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,wCAAwC,CAAC;AAC1E,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"handle-reasoning-inference.js","sourceRoot":"","sources":["../../../../../src/prompt/steps/step-ask-question/handlers/handle-reasoning-inference.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { ModelType } from '../../../../ai-service/common-types.js';
|
|
2
|
+
import { putSystemMessage } from '../../../../main/common/content-bus.js';
|
|
3
|
+
import { getFunctionDefs } from '../../../function-calling.js';
|
|
4
|
+
export async function handleRemoveFilesFromContext({ askQuestionCall, generateContentFn, prompt, options, }) {
|
|
5
|
+
const [removeFilesFromContextCall] = (await generateContentFn([
|
|
6
|
+
...prompt,
|
|
7
|
+
{
|
|
8
|
+
type: 'assistant',
|
|
9
|
+
text: askQuestionCall.args?.message ?? '',
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
type: 'user',
|
|
13
|
+
text: 'Yes, you can request the removal of files from context.',
|
|
14
|
+
},
|
|
15
|
+
], getFunctionDefs(), 'removeFilesFromContext', 0.7, ModelType.CHEAP, options));
|
|
16
|
+
if (!removeFilesFromContextCall) {
|
|
17
|
+
return {
|
|
18
|
+
breakLoop: true,
|
|
19
|
+
items: [],
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
const filesToRemove = removeFilesFromContextCall.args?.filePaths ?? [];
|
|
23
|
+
let userText = '';
|
|
24
|
+
if (filesToRemove.length > 0) {
|
|
25
|
+
removeFileContentsFromPrompt(prompt, filesToRemove);
|
|
26
|
+
putSystemMessage('Context reduction applied', filesToRemove);
|
|
27
|
+
userText = 'Context reduction applied';
|
|
28
|
+
}
|
|
29
|
+
else {
|
|
30
|
+
putSystemMessage('No specific files were provided for context reduction. The context remains unchanged.');
|
|
31
|
+
userText = 'No specific files were provided for context reduction. The context remains unchanged.';
|
|
32
|
+
}
|
|
33
|
+
prompt.push({
|
|
34
|
+
type: 'assistant',
|
|
35
|
+
text: askQuestionCall.args?.message ?? '',
|
|
36
|
+
functionCalls: [removeFilesFromContextCall],
|
|
37
|
+
}, {
|
|
38
|
+
type: 'user',
|
|
39
|
+
text: userText,
|
|
40
|
+
functionResponses: [
|
|
41
|
+
{ name: 'removeFilesFromContext', call_id: removeFilesFromContextCall.id, content: undefined },
|
|
42
|
+
],
|
|
43
|
+
});
|
|
44
|
+
return {
|
|
45
|
+
breakLoop: false,
|
|
46
|
+
items: [],
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
function removeFileContentsFromPrompt(prompt, filesToRemove) {
|
|
50
|
+
// Find all source code responses in the prompt history
|
|
51
|
+
const sourceCodeResponses = prompt.filter((item) => item.type === 'user' && item.functionResponses?.some((fr) => fr.name === 'getSourceCode'));
|
|
52
|
+
if (sourceCodeResponses.length === 0) {
|
|
53
|
+
console.warn('No source code responses found in prompt history');
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
sourceCodeResponses.forEach((response) => {
|
|
57
|
+
const sourceCodeResponse = response.functionResponses?.find((fr) => fr.name === 'getSourceCode');
|
|
58
|
+
if (!sourceCodeResponse || !sourceCodeResponse.content) {
|
|
59
|
+
console.warn('Skipping invalid source code response');
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
try {
|
|
63
|
+
const contentObj = JSON.parse(sourceCodeResponse.content);
|
|
64
|
+
let modifiedFiles = 0;
|
|
65
|
+
filesToRemove.forEach((file) => {
|
|
66
|
+
if (contentObj[file] && 'content' in contentObj[file]) {
|
|
67
|
+
contentObj[file].content = null;
|
|
68
|
+
modifiedFiles++;
|
|
69
|
+
}
|
|
70
|
+
else if (contentObj[file] && 'fragments' in contentObj[file]) {
|
|
71
|
+
delete contentObj[file].fragments;
|
|
72
|
+
modifiedFiles++;
|
|
73
|
+
}
|
|
74
|
+
});
|
|
75
|
+
// Only update if files were actually modified
|
|
76
|
+
if (modifiedFiles > 0) {
|
|
77
|
+
sourceCodeResponse.content = JSON.stringify(contentObj);
|
|
78
|
+
console.log(`Removed content from ${modifiedFiles} files in source code response`);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
catch (error) {
|
|
82
|
+
console.error('Error processing source code response:', error);
|
|
83
|
+
}
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=handle-remove-files-from-context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handle-remove-files-from-context.js","sourceRoot":"","sources":["../../../../../src/prompt/steps/step-ask-question/handlers/handle-remove-files-from-context.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { GenerateContentFunction } from '../../../../ai-service/common-types.js';
|
|
2
|
+
import { PromptItem } from '../../../../ai-service/common-types.js';
|
|
3
|
+
import { FunctionCall } from '../../../../ai-service/common-types.js';
|
|
4
|
+
import { ModelType } from '../../../../ai-service/common-types.js';
|
|
5
|
+
import { CodegenOptions } from '../../../../main/codegen-types.js';
|
|
6
|
+
import { ActionHandlerProps, ActionResult, AskQuestionCall, RequestFilesContentArgs } from '../step-ask-question-types.js';
|
|
7
|
+
export declare function handleRequestFilesContent({ askQuestionCall, options, prompt, generateContentFn, }: ActionHandlerProps): Promise<ActionResult>;
|
|
8
|
+
export declare function generateRequestFilesContentCall(generateContentFn: GenerateContentFunction, prompt: PromptItem[], askQuestionCall: AskQuestionCall, options: CodegenOptions, modelType: ModelType): Promise<FunctionCall<RequestFilesContentArgs> | undefined>;
|