genaicode 0.10.0 → 0.10.2
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/ai-studio.js +69 -70
- package/dist/ai-service/ai-studio.js.map +1 -1
- package/dist/ai-service/common-types.d.ts +1 -0
- package/dist/ai-service/common.js +3 -0
- package/dist/ai-service/common.js.map +1 -1
- package/dist/help-docs/genaicode-help-document.d.ts +1 -1
- package/dist/help-docs/genaicode-help-document.js +1 -0
- package/dist/help-docs/genaicode-help-document.js.map +1 -1
- package/dist/main/common/user-actions.d.ts +1 -1
- package/dist/main/config-types.d.ts +1 -0
- package/dist/main/config.js +8 -1
- package/dist/main/config.js.map +1 -1
- package/dist/main/ui/common/api-types.d.ts +25 -0
- package/dist/main/ui/frontend/assets/index-DWyCD84H.js +2015 -0
- package/dist/main/ui/frontend/index.html +1 -1
- package/dist/prompt/function-calling-validate.d.ts +2 -1
- package/dist/prompt/function-calling-validate.js +2 -2
- package/dist/prompt/function-calling-validate.js.map +1 -1
- package/dist/prompt/function-calling.js +5 -2
- 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 +33 -1
- package/dist/prompt/function-defs/ask-question.js.map +1 -1
- package/dist/prompt/function-defs/compound-action-list.d.ts +7 -0
- package/dist/prompt/function-defs/compound-action-list.js +38 -0
- package/dist/prompt/function-defs/compound-action-list.js.map +1 -0
- package/dist/prompt/function-defs/compound-action.d.ts +2 -0
- package/dist/prompt/function-defs/compound-action.js +43 -0
- package/dist/prompt/function-defs/compound-action.js.map +1 -0
- package/dist/prompt/function-defs/conversation-graph.d.ts +6 -6
- package/dist/prompt/limits.js +1 -1
- package/dist/prompt/steps/step-ask-question/handlers/handle-compound-action.d.ts +20 -0
- package/dist/prompt/steps/step-ask-question/handlers/handle-compound-action.js +253 -0
- package/dist/prompt/steps/step-ask-question/handlers/handle-compound-action.js.map +1 -0
- package/dist/prompt/steps/step-ask-question/handlers/handle-conversation-graph.d.ts +6 -7
- package/dist/prompt/steps/step-ask-question/handlers/handle-conversation-graph.js +406 -178
- package/dist/prompt/steps/step-ask-question/handlers/handle-conversation-graph.js.map +1 -1
- package/dist/prompt/steps/step-ask-question/handlers/handle-explore-external-directories.js +4 -1
- package/dist/prompt/steps/step-ask-question/handlers/handle-explore-external-directories.js.map +1 -1
- package/dist/prompt/steps/step-ask-question/handlers/handle-read-external-files.js +5 -0
- package/dist/prompt/steps/step-ask-question/handlers/handle-read-external-files.js.map +1 -1
- package/dist/prompt/steps/step-ask-question/handlers/handle-request-git-context.d.ts +3 -0
- package/dist/prompt/steps/step-ask-question/handlers/handle-request-git-context.js +184 -0
- package/dist/prompt/steps/step-ask-question/handlers/handle-request-git-context.js.map +1 -0
- package/dist/prompt/steps/step-ask-question/handlers/handle-update-file.js +8 -12
- package/dist/prompt/steps/step-ask-question/handlers/handle-update-file.js.map +1 -1
- package/dist/prompt/steps/step-ask-question/step-ask-question-types.d.ts +25 -1
- package/dist/prompt/steps/step-ask-question/step-ask-question.d.ts +2 -0
- package/dist/prompt/steps/step-ask-question/step-ask-question.js +2 -0
- package/dist/prompt/steps/step-ask-question/step-ask-question.js.map +1 -1
- package/dist/prompt/steps/step-validate-recover.js +3 -3
- package/dist/prompt/steps/step-validate-recover.js.map +1 -1
- package/dist/prompt/systemprompt.d.ts +1 -1
- package/dist/prompt/systemprompt.js +7 -2
- package/dist/prompt/systemprompt.js.map +1 -1
- package/package.json +4 -3
- package/dist/main/ui/frontend/assets/index-BlVGo0E6.js +0 -1902
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { FunctionCallingConfigMode, GoogleGenAI, HarmBlockThreshold, HarmCategory, } from '@google/genai';
|
|
2
2
|
import assert from 'node:assert';
|
|
3
3
|
import { printTokenUsageAndCost } from './common.js';
|
|
4
4
|
import { ModelType } from './common-types.js';
|
|
@@ -68,40 +68,41 @@ export const generateContent = async function generateContent(prompt, config, op
|
|
|
68
68
|
});
|
|
69
69
|
const req = {
|
|
70
70
|
contents: messages,
|
|
71
|
+
model: '',
|
|
72
|
+
config: {},
|
|
71
73
|
};
|
|
72
74
|
if (functionDefs.length > 0) {
|
|
73
|
-
req.tools = [
|
|
75
|
+
req.config.tools = [
|
|
74
76
|
{
|
|
75
77
|
functionDeclarations: functionDefs,
|
|
76
78
|
},
|
|
77
79
|
];
|
|
78
80
|
}
|
|
79
81
|
if (expectedResponseType.functionCall !== false) {
|
|
80
|
-
req.toolConfig = {
|
|
82
|
+
req.config.toolConfig = {
|
|
81
83
|
functionCallingConfig: {
|
|
82
|
-
mode:
|
|
84
|
+
mode: FunctionCallingConfigMode.ANY,
|
|
83
85
|
...(requiredFunctionName ? { allowedFunctionNames: [requiredFunctionName] } : {}),
|
|
84
86
|
},
|
|
85
87
|
};
|
|
86
88
|
}
|
|
87
89
|
else if (expectedResponseType.functionCall === false) {
|
|
88
|
-
req.toolConfig = {
|
|
90
|
+
req.config.toolConfig = {
|
|
89
91
|
functionCallingConfig: {
|
|
90
|
-
mode:
|
|
92
|
+
mode: FunctionCallingConfigMode.NONE,
|
|
91
93
|
allowedFunctionNames: [],
|
|
92
94
|
},
|
|
93
95
|
};
|
|
94
96
|
}
|
|
95
|
-
const
|
|
96
|
-
const result = await model.generateContent(req, {
|
|
97
|
-
signal: abortController?.signal,
|
|
98
|
-
});
|
|
97
|
+
const result = await modelGenerateContent(modelType, temperature, prompt.find((item) => item.type === 'systemPrompt')?.systemPrompt, options.geminiBlockNone, req);
|
|
99
98
|
// Print token usage
|
|
100
|
-
const usageMetadata = result.
|
|
99
|
+
const usageMetadata = result.usageMetadata;
|
|
101
100
|
const usage = {
|
|
102
101
|
inputTokens: usageMetadata.promptTokenCount,
|
|
103
102
|
outputTokens: usageMetadata.candidatesTokenCount,
|
|
104
103
|
totalTokens: usageMetadata.totalTokenCount,
|
|
104
|
+
thinkingTokens: usageMetadata.thoughtsTokenCount,
|
|
105
|
+
cacheReadTokens: usageMetadata.cachedContentTokenCount,
|
|
105
106
|
};
|
|
106
107
|
printTokenUsageAndCost({
|
|
107
108
|
aiService: 'ai-studio',
|
|
@@ -110,15 +111,15 @@ export const generateContent = async function generateContent(prompt, config, op
|
|
|
110
111
|
outputCostPerToken: 0.000375 / 1000,
|
|
111
112
|
modelType,
|
|
112
113
|
});
|
|
113
|
-
if (result.
|
|
114
|
+
if (result.promptFeedback) {
|
|
114
115
|
console.log('Prompt feedback:');
|
|
115
|
-
console.log(JSON.stringify(result.
|
|
116
|
+
console.log(JSON.stringify(result.promptFeedback, null, 2));
|
|
116
117
|
}
|
|
117
|
-
if (!result.
|
|
118
|
+
if (!result.candidates?.length) {
|
|
118
119
|
console.log('Response:', result);
|
|
119
120
|
throw new Error('No candidates found');
|
|
120
121
|
}
|
|
121
|
-
const functionCalls = result.
|
|
122
|
+
const functionCalls = result.candidates
|
|
122
123
|
.map((candidate) => candidate.content?.parts?.map((part) => part.functionCall))
|
|
123
124
|
.flat()
|
|
124
125
|
.filter((functionCall) => !!functionCall)
|
|
@@ -141,16 +142,16 @@ export const generateContent = async function generateContent(prompt, config, op
|
|
|
141
142
|
// Handle reasoning model special case
|
|
142
143
|
if (modelType === ModelType.REASONING) {
|
|
143
144
|
// Add the reasoning text if available
|
|
144
|
-
if (result.
|
|
145
|
+
if (result.candidates[0].content?.parts?.length === 2) {
|
|
145
146
|
resultParts.push({
|
|
146
147
|
type: 'text',
|
|
147
|
-
text: result.
|
|
148
|
+
text: result.candidates[0].content?.parts.slice(-2)[0].text ?? '',
|
|
148
149
|
});
|
|
149
150
|
}
|
|
150
151
|
// Add the response text
|
|
151
152
|
resultParts.push({
|
|
152
153
|
type: 'text',
|
|
153
|
-
text: result.
|
|
154
|
+
text: result.candidates[0].content?.parts?.slice(-1)[0].text ?? '',
|
|
154
155
|
});
|
|
155
156
|
// Add the special function call for reasoning inference response
|
|
156
157
|
resultParts.push({
|
|
@@ -158,23 +159,21 @@ export const generateContent = async function generateContent(prompt, config, op
|
|
|
158
159
|
functionCall: {
|
|
159
160
|
name: 'reasoningInferenceResponse',
|
|
160
161
|
args: {
|
|
161
|
-
reasoning: result.
|
|
162
|
-
? result.
|
|
162
|
+
reasoning: result.candidates[0].content?.parts?.length === 2
|
|
163
|
+
? result.candidates[0].content?.parts.slice(-2)[0].text
|
|
163
164
|
: undefined,
|
|
164
|
-
response: result.
|
|
165
|
+
response: result.candidates[0].content?.parts?.slice(-1)[0].text,
|
|
165
166
|
},
|
|
166
167
|
},
|
|
167
168
|
});
|
|
168
169
|
}
|
|
169
170
|
// Handle text response if no function calls were returned
|
|
170
171
|
if (functionCalls.length === 0) {
|
|
171
|
-
const textResponse = result.
|
|
172
|
+
const textResponse = result.candidates
|
|
172
173
|
.map((candidate) => candidate.content?.parts?.map((part) => part.text))
|
|
173
174
|
.flat()
|
|
174
175
|
.filter((text) => !!text)[0] ??
|
|
175
|
-
result.
|
|
176
|
-
// @ts-expect-error: FinishReason type does not have this error
|
|
177
|
-
candidate.finishReason === 'MALFORMED_FUNCTION_CALL' ? candidate.finishMessage : '')[0];
|
|
176
|
+
result.candidates.map((candidate) => candidate.finishReason === 'MALFORMED_FUNCTION_CALL' ? candidate.finishMessage : '')[0];
|
|
178
177
|
if (textResponse) {
|
|
179
178
|
resultParts.push({
|
|
180
179
|
type: 'text',
|
|
@@ -206,10 +205,10 @@ export const generateContent = async function generateContent(prompt, config, op
|
|
|
206
205
|
}
|
|
207
206
|
return resultParts;
|
|
208
207
|
};
|
|
209
|
-
function
|
|
208
|
+
function modelGenerateContent(modelType, temperature, systemPrompt, geminiBlockNone, { contents, config }) {
|
|
210
209
|
const serviceConfig = getServiceConfig('ai-studio');
|
|
211
210
|
assert(serviceConfig.apiKey, 'API key not configured, use API_KEY environment variable');
|
|
212
|
-
const genAI = new
|
|
211
|
+
const genAI = new GoogleGenAI({ apiKey: serviceConfig.apiKey });
|
|
213
212
|
// Determine the model name based on model type
|
|
214
213
|
const model = (() => {
|
|
215
214
|
switch (modelType) {
|
|
@@ -229,52 +228,54 @@ function getModel(modelType, temperature, systemPrompt, geminiBlockNone) {
|
|
|
229
228
|
if (modelSystemInstruction?.length) {
|
|
230
229
|
effectiveSystemPrompt += `\n${modelSystemInstruction.join('\n')}`;
|
|
231
230
|
}
|
|
232
|
-
|
|
233
|
-
maxOutputTokens: outputTokenLimit,
|
|
234
|
-
temperature,
|
|
235
|
-
topP: 0.95,
|
|
236
|
-
};
|
|
237
|
-
return genAI.getGenerativeModel({
|
|
231
|
+
return genAI.models.generateContent({
|
|
238
232
|
model,
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
{
|
|
246
|
-
category: HarmCategory.HARM_CATEGORY_DANGEROUS_CONTENT,
|
|
247
|
-
threshold: geminiBlockNone ? HarmBlockThreshold.BLOCK_NONE : HarmBlockThreshold.BLOCK_LOW_AND_ABOVE,
|
|
248
|
-
},
|
|
249
|
-
{
|
|
250
|
-
category: HarmCategory.HARM_CATEGORY_SEXUALLY_EXPLICIT,
|
|
251
|
-
threshold: geminiBlockNone ? HarmBlockThreshold.BLOCK_NONE : HarmBlockThreshold.BLOCK_LOW_AND_ABOVE,
|
|
252
|
-
},
|
|
253
|
-
{
|
|
254
|
-
category: HarmCategory.HARM_CATEGORY_HARASSMENT,
|
|
255
|
-
threshold: geminiBlockNone ? HarmBlockThreshold.BLOCK_NONE : HarmBlockThreshold.BLOCK_LOW_AND_ABOVE,
|
|
256
|
-
},
|
|
257
|
-
],
|
|
258
|
-
...(effectiveSystemPrompt
|
|
259
|
-
? {
|
|
260
|
-
systemInstruction: {
|
|
261
|
-
role: 'system',
|
|
262
|
-
parts: [
|
|
263
|
-
{
|
|
264
|
-
text: effectiveSystemPrompt,
|
|
265
|
-
},
|
|
266
|
-
],
|
|
233
|
+
config: {
|
|
234
|
+
abortSignal: abortController?.signal,
|
|
235
|
+
safetySettings: [
|
|
236
|
+
{
|
|
237
|
+
category: HarmCategory.HARM_CATEGORY_HATE_SPEECH,
|
|
238
|
+
threshold: geminiBlockNone ? HarmBlockThreshold.BLOCK_NONE : HarmBlockThreshold.BLOCK_LOW_AND_ABOVE,
|
|
267
239
|
},
|
|
268
|
-
|
|
269
|
-
|
|
240
|
+
{
|
|
241
|
+
category: HarmCategory.HARM_CATEGORY_DANGEROUS_CONTENT,
|
|
242
|
+
threshold: geminiBlockNone ? HarmBlockThreshold.BLOCK_NONE : HarmBlockThreshold.BLOCK_LOW_AND_ABOVE,
|
|
243
|
+
},
|
|
244
|
+
{
|
|
245
|
+
category: HarmCategory.HARM_CATEGORY_SEXUALLY_EXPLICIT,
|
|
246
|
+
threshold: geminiBlockNone ? HarmBlockThreshold.BLOCK_NONE : HarmBlockThreshold.BLOCK_LOW_AND_ABOVE,
|
|
247
|
+
},
|
|
248
|
+
{
|
|
249
|
+
category: HarmCategory.HARM_CATEGORY_HARASSMENT,
|
|
250
|
+
threshold: geminiBlockNone ? HarmBlockThreshold.BLOCK_NONE : HarmBlockThreshold.BLOCK_LOW_AND_ABOVE,
|
|
251
|
+
},
|
|
252
|
+
],
|
|
253
|
+
...Object.assign({
|
|
254
|
+
maxOutputTokens: outputTokenLimit,
|
|
255
|
+
temperature,
|
|
256
|
+
topP: 0.95,
|
|
257
|
+
}, config),
|
|
258
|
+
...(effectiveSystemPrompt
|
|
259
|
+
? {
|
|
260
|
+
systemInstruction: {
|
|
261
|
+
role: 'system',
|
|
262
|
+
parts: [
|
|
263
|
+
{
|
|
264
|
+
text: effectiveSystemPrompt,
|
|
265
|
+
},
|
|
266
|
+
],
|
|
267
|
+
},
|
|
268
|
+
}
|
|
269
|
+
: {}),
|
|
270
|
+
},
|
|
271
|
+
contents,
|
|
270
272
|
});
|
|
271
273
|
}
|
|
272
274
|
async function recoverFunctionCall(textResponse, functionCalls, functionDef) {
|
|
273
275
|
console.log('Recovering function call');
|
|
274
|
-
// @ts-expect-error: "object" !== "OBJECT"
|
|
275
276
|
const schema = functionDef.parameters;
|
|
276
|
-
const result = await
|
|
277
|
-
0.2, 'Your role is read the text below and if possible, return it in the desired format.', undefined
|
|
277
|
+
const result = await modelGenerateContent(ModelType.DEFAULT, // Always use default model for recovery attempts
|
|
278
|
+
0.2, 'Your role is read the text below and if possible, return it in the desired format.', undefined, {
|
|
278
279
|
contents: [
|
|
279
280
|
{
|
|
280
281
|
role: 'user',
|
|
@@ -285,15 +286,13 @@ async function recoverFunctionCall(textResponse, functionCalls, functionDef) {
|
|
|
285
286
|
],
|
|
286
287
|
},
|
|
287
288
|
],
|
|
288
|
-
|
|
289
|
+
config: {
|
|
289
290
|
responseMimeType: 'application/json',
|
|
290
291
|
responseSchema: schema,
|
|
291
292
|
},
|
|
292
|
-
}, {
|
|
293
|
-
signal: abortController?.signal,
|
|
294
293
|
});
|
|
295
294
|
try {
|
|
296
|
-
const parsed = JSON.parse(result.
|
|
295
|
+
const parsed = JSON.parse(result.text);
|
|
297
296
|
const functionCall = enableVertexUnescape
|
|
298
297
|
? unescapeFunctionCall({ name: functionDef.name, args: parsed })
|
|
299
298
|
: { name: functionDef.name, args: parsed };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai-studio.js","sourceRoot":"","sources":["../../src/ai-service/ai-studio.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,
|
|
1
|
+
{"version":3,"file":"ai-studio.js","sourceRoot":"","sources":["../../src/ai-service/ai-studio.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,6 +14,9 @@ export function printTokenUsageAndCost(costInfo) {
|
|
|
14
14
|
if (usage.cacheReadTokens) {
|
|
15
15
|
console.log(' - Cache read tokens: ', usage.cacheReadTokens);
|
|
16
16
|
}
|
|
17
|
+
if (usage.thinkingTokens) {
|
|
18
|
+
console.log(' - Thinking tokens: ', usage.thinkingTokens);
|
|
19
|
+
}
|
|
17
20
|
console.log(' - Output tokens: ', usage.outputTokens ?? 0);
|
|
18
21
|
console.log(' - Total tokens: ', usage.totalTokens ?? 0);
|
|
19
22
|
// Calculate cost multiplier based on model type
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"common.js","sourceRoot":"","sources":["../../src/ai-service/common.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AAC/D,OAAO,EAA6B,SAAS,EAAc,MAAM,mBAAmB,CAAC;AAUrF;;;GAGG;AACH,MAAM,UAAU,sBAAsB,CAAC,QAAkB;IACvD,MAAM,EAAE,KAAK,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,SAAS,EAAE,GAAG,QAAQ,CAAC;IAE7E,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAC5B,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,KAAK,CAAC,WAAW,IAAI,CAAC,CAAC,CAAC;IAC1D,IAAI,KAAK,CAAC,iBAAiB,EAAE,CAAC;QAC5B,OAAO,CAAC,GAAG,CAAC,2BAA2B,EAAE,KAAK,CAAC,iBAAiB,CAAC,CAAC;IACpE,CAAC;IACD,IAAI,KAAK,CAAC,eAAe,EAAE,CAAC;QAC1B,OAAO,CAAC,GAAG,CAAC,yBAAyB,EAAE,KAAK,CAAC,eAAe,CAAC,CAAC;IAChE,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,qBAAqB,EAAE,KAAK,CAAC,YAAY,IAAI,CAAC,CAAC,CAAC;IAC5D,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,KAAK,CAAC,WAAW,IAAI,CAAC,CAAC,CAAC;IAE1D,gDAAgD;IAChD,MAAM,cAAc,GAAG,CAAC,GAAG,EAAE;QAC3B,QAAQ,SAAS,EAAE,CAAC;YAClB,KAAK,SAAS,CAAC,KAAK;gBAClB,OAAO,GAAG,CAAC;YACb,KAAK,SAAS,CAAC,SAAS;gBACtB,OAAO,CAAC,CAAC,CAAC,sCAAsC;YAClD;gBACE,OAAO,GAAG,CAAC;QACf,CAAC;IACH,CAAC,CAAC,EAAE,CAAC;IAEL,MAAM,SAAS,GACb,CAAC,CAAC,KAAK,CAAC,WAAW,IAAI,CAAC,CAAC,GAAG,iBAAiB;QAC3C,CAAC,KAAK,CAAC,iBAAiB,IAAI,CAAC,CAAC,GAAG,iBAAiB,GAAG,IAAI;QACzD,CAAC,KAAK,CAAC,eAAe,IAAI,CAAC,CAAC,GAAG,iBAAiB,GAAG,GAAG,CAAC;QACzD,cAAc,CAAC;IACjB,MAAM,UAAU,GAAG,CAAC,KAAK,CAAC,YAAY,IAAI,CAAC,CAAC,GAAG,kBAAkB,GAAG,cAAc,CAAC;IACnF,MAAM,SAAS,GAAG,SAAS,GAAG,UAAU,CAAC;IAEzC,OAAO,CAAC,GAAG,CAAC,sBAAsB,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IAElE,WAAW,CACT,SAAS,EACT,CAAC,KAAK,CAAC,WAAW,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,YAAY,IAAI,CAAC,CAAC,EACpD,KAAK,CAAC,YAAY,IAAI,CAAC,EACvB,QAAQ,CAAC,SAAS,EAClB,SAAS,CACV,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,aAA6B,EAAE,YAA2B;IAC7F,MAAM,oBAAoB,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC/G,IAAI,oBAAoB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpC,OAAO,CAAC,IAAI,CAAC,yBAAyB,GAAG,oBAAoB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACrG,CAAC;IAED,OAAO,aAAa,CAAC;AACvB,CAAC"}
|
|
1
|
+
{"version":3,"file":"common.js","sourceRoot":"","sources":["../../src/ai-service/common.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const GENAICODE_HELP_DOCUMENT = "# GenAIcode Help Documentation\n\n## Overview\n\nGenAIcode is an AI-powered code generation and management tool designed to streamline software development. It leverages various AI services (Vertex AI, AI Studio, OpenAI, Anthropic) to generate, modify, and analyze code. The tool supports both interactive CLI and web UI modes, offering features like code generation, image processing, and context optimization.\n\n## Quick Start\n\n1. Installation:\n ```bash\n npm install -g genaicode\n ```\n\n2. Basic Usage:\n ```bash\n genaicode \"Your prompt here\"\n ```\n\n3. UI Mode:\n ```bash\n genaicode --ui\n ```\n\n## Core Features\n\n### AI Services Integration\n\n- **Supported Services**:\n - Vertex AI (with Gemini Pro)\n - OpenAI (GPT-4)\n - Anthropic (Claude)\n - AI Studio\n - Custom Plugin Services\n\n- **Service Auto-detection**: Automatically detects available AI services based on environment configuration\n- **Fallback Mechanism**: Handles service failures with automatic fallback options\n- **Model Configuration**: Supports per-service model configuration via .genaicoderc\n\n### Interaction Modes\n\n1. **UI Mode**:\n - Web-based interface\n - Real-time updates\n - Visual diff viewing\n - Progress tracking\n - File operation preview\n\n2. **Interactive CLI**:\n - Command-line interface\n - Step-by-step guidance\n - Task file support\n - Operation control\n\n### File Operations\n\n- Create/Update/Delete files\n- Move files\n- Create directories\n- Patch files\n- Context-aware operations\n- Safety checks and validation\n\n### Image Processing\n\n- **Generation**: Create images using AI services\n- **Analysis**: Vision model support for image context\n- **Manipulation**:\n - Background removal\n - Image splitting\n - Resizing\n - Format conversion\n\n### Context Management\n\n- Smart context optimization\n- History tracking and summarization\n- Token usage optimization\n- Conversation continuation\n- Cache management\n\n## Configuration\n\n### .genaicoderc Options\n\n```json\n{\n \"rootDir\": \".\",\n \"ignorePaths\": [\"node_modules\", \"dist\"],\n \"lintCommand\": \"npm run lint\",\n \"importantContext\": {\n \"systemPrompt\": [],\n \"files\": []\n },\n \"plugins\": [],\n \"modelOverrides\": {\n \"aiStudio\": {\n \"default\": \"gemini-pro\",\n \"cheap\": \"gemini-pro-vision\"\n }\n }\n}\n```\n\n### CLI Options\n\n- `--verbose-prompt`: Enable detailed prompt logging\n- `--dry-run`: Simulate operations without making changes\n- `--temperature`: Control AI response randomness\n- `--vision`: Enable image analysis\n- `--imagen`: Enable image generation\n- `--cheap`: Use cost-optimized models\n- `--ui`: Launch web interface\n- `--ui-port`: Specify UI port\n- `--content-mask`: Filter context\n- `--disable-cache`: Disable caching\n- `--disable-history`: Disable history tracking\n\n## Plugin System\n\n### Types of Plugins\n\n1. **AI Service Plugins**:\n - Custom AI service integration\n - Model configuration\n - Response handling\n\n2. **Action Handlers**:\n - Custom operations\n - User interaction\n - File processing\n\n3. **Operation Extensions**:\n - File operations\n - Image processing\n - Analysis tools\n\n### Creating Plugins\n\nBasic plugin structure:\n```typescript\nexport default {\n name: \"my-plugin\",\n aiServices?: {\n [key: string]: {\n generateContent: GenerateContentFunction;\n serviceConfig: ServiceConfig;\n }\n },\n operations?: {\n [key: string]: Operation;\n },\n actionHandlers?: {\n [key: string]: {\n handler: ActionHandler;\n description: string;\n }\n }\n}\n```\n\n## Best Practices\n\n1. **Code Generation**:\n - Provide clear, specific prompts\n - Review generated code before applying\n - Use appropriate temperature settings\n - Leverage context optimization\n\n2. **File Management**:\n - Use absolute paths\n - Verify file operations\n - Handle dependencies properly\n - Maintain consistent structure\n\n3. **Context Optimization**:\n - Keep relevant files in context\n - Remove unnecessary content\n - Use content masking when needed\n - Monitor token usage\n\n4. **Error Handling**:\n - Check operation results\n - Handle service failures\n - Validate generated code\n - Use appropriate fallback options\n\n## Troubleshooting\n\n### Common Issues\n\n1. **AI Service Connection**:\n - Verify API keys\n - Check service availability\n - Confirm network connection\n - Review rate limits\n\n2. **File Operations**:\n - Check file permissions\n - Verify paths\n - Review operation logs\n - Confirm file existence\n\n3. **Context Problems**:\n - Monitor token usage\n - Review context optimization\n - Check file inclusion\n - Verify content masks\n\n4. **Plugin Issues**:\n - Validate plugin structure\n - Check compatibility\n - Review error logs\n - Update dependencies\n\n### Getting Help\n\n- Use the `--help` command\n- Check documentation\n- Review error messages\n- Contact support\n\n## Advanced Topics\n\n### Custom Actions\n\nCreating custom actions:\n```typescript\nexport const myCustomAction: ActionHandler = async (props) => {\n // Implementation\n};\n```\n\n### Hook System\n\nAvailable hooks:\n- Pre/post operation\n- Generate content\n- Planning\n- Context optimization\n\n### Project Profiles\n\nSupported frameworks:\n- JavaScript/TypeScript\n- Python\n- Java\n- Go\n- React\n\n## Security Considerations\n\n1. **API Keys**:\n - Secure storage\n - Regular rotation\n - Access control\n - Environment variables\n\n2. **File Operations**:\n - Permission checks\n - Path validation\n - Content verification\n - Operation logging\n\n3. **Plugin Security**:\n - Source verification\n - Dependency scanning\n - Permission management\n - Code review\n\n## Updates and Maintenance\n\n- Regular updates\n- Security patches\n- Feature additions\n- Bug fixes\n- Documentation updates\n\n## Support\n\nFor additional help:\n- GitHub Issues\n- Documentation\n- Community Forums\n- Support Channels\n";
|
|
1
|
+
export declare const GENAICODE_HELP_DOCUMENT = "# GenAIcode Help Documentation\n\n## Overview\n\nGenAIcode is an AI-powered code generation and management tool designed to streamline software development. It leverages various AI services (Vertex AI, AI Studio, OpenAI, Anthropic) to generate, modify, and analyze code. The tool supports both interactive CLI and web UI modes, offering features like code generation, image processing, and context optimization.\n\n## Quick Start\n\n1. Installation:\n ```bash\n npm install -g genaicode\n ```\n\n2. Basic Usage:\n ```bash\n genaicode \"Your prompt here\"\n ```\n\n3. UI Mode:\n ```bash\n genaicode --ui\n ```\n\n## Core Features\n\n### AI Services Integration\n\n- **Supported Services**:\n - Vertex AI (with Gemini Pro)\n - OpenAI (GPT-4)\n - Anthropic (Claude)\n - AI Studio\n - Custom Plugin Services\n\n- **Service Auto-detection**: Automatically detects available AI services based on environment configuration\n- **Fallback Mechanism**: Handles service failures with automatic fallback options\n- **Model Configuration**: Supports per-service model configuration via .genaicoderc\n\n### Interaction Modes\n\n1. **UI Mode**:\n - Web-based interface\n - Real-time updates\n - Visual diff viewing\n - Progress tracking\n - File operation preview\n\n2. **Interactive CLI**:\n - Command-line interface\n - Step-by-step guidance\n - Task file support\n - Operation control\n\n### File Operations\n\n- Create/Update/Delete files\n- Move files\n- Create directories\n- Patch files\n- Context-aware operations\n- Safety checks and validation\n\n### Image Processing\n\n- **Generation**: Create images using AI services\n- **Analysis**: Vision model support for image context\n- **Manipulation**:\n - Background removal\n - Image splitting\n - Resizing\n - Format conversion\n\n### Context Management\n\n- Smart context optimization\n- History tracking and summarization\n- Token usage optimization\n- Conversation continuation\n- Cache management\n\n## Configuration\n\n### .genaicoderc Options\n\n```json\n{\n \"rootDir\": \".\",\n \"ignorePaths\": [\"node_modules\", \"dist\"],\n \"lintCommand\": \"npm run lint\",\n \"importantContext\": {\n \"systemPrompt\": [],\n \"files\": []\n },\n \"plugins\": [],\n \"modelOverrides\": {\n \"aiStudio\": {\n \"default\": \"gemini-pro\",\n \"cheap\": \"gemini-pro-vision\"\n }\n }\n}\n```\n\n### CLI Options\n\n- `--verbose-prompt`: Enable detailed prompt logging\n- `--dry-run`: Simulate operations without making changes\n- `--temperature`: Control AI response randomness\n- `--vision`: Enable image analysis\n- `--imagen`: Enable image generation\n- `--cheap`: Use cost-optimized models\n- `--ui`: Launch web interface\n- `--ui-port`: Specify UI port\n- `--content-mask`: Filter context\n- `--disable-cache`: Disable caching\n- `--disable-history`: Disable history tracking\n\n## Plugin System\n\n### Types of Plugins\n\n1. **AI Service Plugins**:\n - Custom AI service integration\n - Model configuration\n - Response handling\n\n2. **Action Handlers**:\n - Custom operations\n - User interaction\n - File processing\n - Git context retrieval (`requestGitContext` for commits, file changes, blame)\n\n3. **Operation Extensions**:\n - File operations\n - Image processing\n - Analysis tools\n\n### Creating Plugins\n\nBasic plugin structure:\n```typescript\nexport default {\n name: \"my-plugin\",\n aiServices?: {\n [key: string]: {\n generateContent: GenerateContentFunction;\n serviceConfig: ServiceConfig;\n }\n },\n operations?: {\n [key: string]: Operation;\n },\n actionHandlers?: {\n [key: string]: {\n handler: ActionHandler;\n description: string;\n }\n }\n}\n```\n\n## Best Practices\n\n1. **Code Generation**:\n - Provide clear, specific prompts\n - Review generated code before applying\n - Use appropriate temperature settings\n - Leverage context optimization\n\n2. **File Management**:\n - Use absolute paths\n - Verify file operations\n - Handle dependencies properly\n - Maintain consistent structure\n\n3. **Context Optimization**:\n - Keep relevant files in context\n - Remove unnecessary content\n - Use content masking when needed\n - Monitor token usage\n\n4. **Error Handling**:\n - Check operation results\n - Handle service failures\n - Validate generated code\n - Use appropriate fallback options\n\n## Troubleshooting\n\n### Common Issues\n\n1. **AI Service Connection**:\n - Verify API keys\n - Check service availability\n - Confirm network connection\n - Review rate limits\n\n2. **File Operations**:\n - Check file permissions\n - Verify paths\n - Review operation logs\n - Confirm file existence\n\n3. **Context Problems**:\n - Monitor token usage\n - Review context optimization\n - Check file inclusion\n - Verify content masks\n\n4. **Plugin Issues**:\n - Validate plugin structure\n - Check compatibility\n - Review error logs\n - Update dependencies\n\n### Getting Help\n\n- Use the `--help` command\n- Check documentation\n- Review error messages\n- Contact support\n\n## Advanced Topics\n\n### Custom Actions\n\nCreating custom actions:\n```typescript\nexport const myCustomAction: ActionHandler = async (props) => {\n // Implementation\n};\n```\n\n### Hook System\n\nAvailable hooks:\n- Pre/post operation\n- Generate content\n- Planning\n- Context optimization\n\n### Project Profiles\n\nSupported frameworks:\n- JavaScript/TypeScript\n- Python\n- Java\n- Go\n- React\n\n## Security Considerations\n\n1. **API Keys**:\n - Secure storage\n - Regular rotation\n - Access control\n - Environment variables\n\n2. **File Operations**:\n - Permission checks\n - Path validation\n - Content verification\n - Operation logging\n\n3. **Plugin Security**:\n - Source verification\n - Dependency scanning\n - Permission management\n - Code review\n\n## Updates and Maintenance\n\n- Regular updates\n- Security patches\n- Feature additions\n- Bug fixes\n- Documentation updates\n\n## Support\n\nFor additional help:\n- GitHub Issues\n- Documentation\n- Community Forums\n- Support Channels\n";
|
|
@@ -128,6 +128,7 @@ GenAIcode is an AI-powered code generation and management tool designed to strea
|
|
|
128
128
|
- Custom operations
|
|
129
129
|
- User interaction
|
|
130
130
|
- File processing
|
|
131
|
+
- Git context retrieval (\`requestGitContext\` for commits, file changes, blame)
|
|
131
132
|
|
|
132
133
|
3. **Operation Extensions**:
|
|
133
134
|
- File operations
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"genaicode-help-document.js","sourceRoot":"","sources":["../../src/help-docs/genaicode-help-document.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,uBAAuB,GAAG
|
|
1
|
+
{"version":3,"file":"genaicode-help-document.js","sourceRoot":"","sources":["../../src/help-docs/genaicode-help-document.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,uBAAuB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6RtC,CAAC"}
|
|
@@ -6,7 +6,7 @@ export type InputHandlerResponse = {
|
|
|
6
6
|
options?: CodegenOptions;
|
|
7
7
|
};
|
|
8
8
|
type InputHandler = (prompt: string, message: string) => Promise<InputHandlerResponse>;
|
|
9
|
-
type ConfirmHandlerResponse = {
|
|
9
|
+
export type ConfirmHandlerResponse = {
|
|
10
10
|
confirmed: boolean | undefined;
|
|
11
11
|
options?: CodegenOptions;
|
|
12
12
|
answer?: string;
|
package/dist/main/config.js
CHANGED
|
@@ -1,11 +1,18 @@
|
|
|
1
|
+
import path from 'path';
|
|
2
|
+
import simpleGit from 'simple-git';
|
|
1
3
|
import { findRcFile, parseRcFile, CODEGENRC_FILENAME } from './config-lib.js';
|
|
2
4
|
import { loadPlugins } from './plugin-loader.js';
|
|
3
|
-
import path from 'path';
|
|
4
5
|
import { DEFAULT_EXTENSIONS, DEFAULT_IGNORE_PATHS } from '../project-profiles/index.js';
|
|
5
6
|
import { SCHEMA_VIRTUAL_FILE_NAME } from './config-schema.js';
|
|
6
7
|
// Read and parse the configuration
|
|
7
8
|
const rcFilePath = await findRcFile();
|
|
8
9
|
export const rcConfig = parseRcFile(rcFilePath);
|
|
10
|
+
if (typeof rcConfig.featuresEnabled === 'undefined') {
|
|
11
|
+
rcConfig.featuresEnabled = {};
|
|
12
|
+
}
|
|
13
|
+
if (typeof rcConfig.featuresEnabled?.gitContext === 'undefined') {
|
|
14
|
+
rcConfig.featuresEnabled.gitContext = await simpleGit(rcConfig.rootDir).checkIsRepo();
|
|
15
|
+
}
|
|
9
16
|
export const rcConfigSchemaFilePath = path.join(rcConfig.rootDir, SCHEMA_VIRTUAL_FILE_NAME);
|
|
10
17
|
await loadPlugins(rcConfig);
|
|
11
18
|
export const sourceExtensions = rcConfig.extensions ?? [...DEFAULT_EXTENSIONS.JS];
|
package/dist/main/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/main/config.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/main/config.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,SAAS,MAAM,YAAY,CAAC;AAEnC,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAC9E,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACxF,OAAO,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAE9D,mCAAmC;AACnC,MAAM,UAAU,GAAW,MAAM,UAAU,EAAE,CAAC;AAC9C,MAAM,CAAC,MAAM,QAAQ,GAAa,WAAW,CAAC,UAAU,CAAC,CAAC;AAE1D,IAAI,OAAO,QAAQ,CAAC,eAAe,KAAK,WAAW,EAAE,CAAC;IACpD,QAAQ,CAAC,eAAe,GAAG,EAAE,CAAC;AAChC,CAAC;AAED,IAAI,OAAO,QAAQ,CAAC,eAAe,EAAE,UAAU,KAAK,WAAW,EAAE,CAAC;IAChE,QAAQ,CAAC,eAAe,CAAC,UAAU,GAAG,MAAM,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC;AACxF,CAAC;AAED,MAAM,CAAC,MAAM,sBAAsB,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,wBAAwB,CAAC,CAAC;AAE5F,MAAM,WAAW,CAAC,QAAQ,CAAC,CAAC;AAE5B,MAAM,CAAC,MAAM,gBAAgB,GAAa,QAAQ,CAAC,UAAU,IAAI,CAAC,GAAG,kBAAkB,CAAC,EAAE,CAAC,CAAC;AAE5F,2EAA2E;AAC3E,MAAM,CAAC,MAAM,sBAAsB,GAAa,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;AAE3F,MAAM,CAAC,MAAM,WAAW,GAAa,QAAQ,CAAC,WAAW,IAAI,CAAC,GAAG,oBAAoB,CAAC,EAAE,CAAC,CAAC;AAE1F,MAAM,CAAC,MAAM,gBAAgB,GAAqB,uBAAuB,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;AAErG,2GAA2G;AAC3G,MAAM,CAAC,MAAM,cAAc,GAAmB,QAAQ,CAAC,cAAc,IAAI,EAAE,CAAC;AAE5E,SAAS,uBAAuB,CAAC,OAAqC;IACpE,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,EAAE,YAAY,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;IACzC,CAAC;IAED,iDAAiD;IACjD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC;IAClC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC;QACxC,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IACjC,CAAC;IAED,OAAO;QACL,YAAY,EAAE,OAAO,CAAC,YAAY,IAAI,EAAE;QACxC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;KACjE,CAAC;AACJ,CAAC;AAED,OAAO,CAAC,GAAG,CAAC,gCAAgC,EAAE,QAAQ,CAAC,CAAC;AACxD,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;AAC3C,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,gBAAgB,CAAC,CAAC;AACpD,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,cAAc,CAAC,CAAC"}
|
|
@@ -72,3 +72,28 @@ export interface ServiceConfigUpdate<T extends AiServiceType = AiServiceType> {
|
|
|
72
72
|
serviceType: T;
|
|
73
73
|
config: ServiceConfig<T>;
|
|
74
74
|
}
|
|
75
|
+
/**
|
|
76
|
+
* Represents a node in the conversation graph.
|
|
77
|
+
*/
|
|
78
|
+
export interface ConversationGraphNode {
|
|
79
|
+
id: string;
|
|
80
|
+
actionType: string;
|
|
81
|
+
instruction: string;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Represents an edge connecting two nodes in the conversation graph.
|
|
85
|
+
*/
|
|
86
|
+
export interface ConversationGraphEdge {
|
|
87
|
+
sourceNode: string;
|
|
88
|
+
targetNode: string;
|
|
89
|
+
instruction: string;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Represents the current state of the conversation graph sent to the frontend.
|
|
93
|
+
*/
|
|
94
|
+
export interface ConversationGraphState {
|
|
95
|
+
nodes: ConversationGraphNode[];
|
|
96
|
+
edges: ConversationGraphEdge[];
|
|
97
|
+
currentNodeId: string | null;
|
|
98
|
+
isActive: boolean;
|
|
99
|
+
}
|