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.
Files changed (57) hide show
  1. package/dist/ai-service/ai-studio.js +69 -70
  2. package/dist/ai-service/ai-studio.js.map +1 -1
  3. package/dist/ai-service/common-types.d.ts +1 -0
  4. package/dist/ai-service/common.js +3 -0
  5. package/dist/ai-service/common.js.map +1 -1
  6. package/dist/help-docs/genaicode-help-document.d.ts +1 -1
  7. package/dist/help-docs/genaicode-help-document.js +1 -0
  8. package/dist/help-docs/genaicode-help-document.js.map +1 -1
  9. package/dist/main/common/user-actions.d.ts +1 -1
  10. package/dist/main/config-types.d.ts +1 -0
  11. package/dist/main/config.js +8 -1
  12. package/dist/main/config.js.map +1 -1
  13. package/dist/main/ui/common/api-types.d.ts +25 -0
  14. package/dist/main/ui/frontend/assets/index-DWyCD84H.js +2015 -0
  15. package/dist/main/ui/frontend/index.html +1 -1
  16. package/dist/prompt/function-calling-validate.d.ts +2 -1
  17. package/dist/prompt/function-calling-validate.js +2 -2
  18. package/dist/prompt/function-calling-validate.js.map +1 -1
  19. package/dist/prompt/function-calling.js +5 -2
  20. package/dist/prompt/function-calling.js.map +1 -1
  21. package/dist/prompt/function-defs/ask-question.d.ts +1 -0
  22. package/dist/prompt/function-defs/ask-question.js +33 -1
  23. package/dist/prompt/function-defs/ask-question.js.map +1 -1
  24. package/dist/prompt/function-defs/compound-action-list.d.ts +7 -0
  25. package/dist/prompt/function-defs/compound-action-list.js +38 -0
  26. package/dist/prompt/function-defs/compound-action-list.js.map +1 -0
  27. package/dist/prompt/function-defs/compound-action.d.ts +2 -0
  28. package/dist/prompt/function-defs/compound-action.js +43 -0
  29. package/dist/prompt/function-defs/compound-action.js.map +1 -0
  30. package/dist/prompt/function-defs/conversation-graph.d.ts +6 -6
  31. package/dist/prompt/limits.js +1 -1
  32. package/dist/prompt/steps/step-ask-question/handlers/handle-compound-action.d.ts +20 -0
  33. package/dist/prompt/steps/step-ask-question/handlers/handle-compound-action.js +253 -0
  34. package/dist/prompt/steps/step-ask-question/handlers/handle-compound-action.js.map +1 -0
  35. package/dist/prompt/steps/step-ask-question/handlers/handle-conversation-graph.d.ts +6 -7
  36. package/dist/prompt/steps/step-ask-question/handlers/handle-conversation-graph.js +406 -178
  37. package/dist/prompt/steps/step-ask-question/handlers/handle-conversation-graph.js.map +1 -1
  38. package/dist/prompt/steps/step-ask-question/handlers/handle-explore-external-directories.js +4 -1
  39. package/dist/prompt/steps/step-ask-question/handlers/handle-explore-external-directories.js.map +1 -1
  40. package/dist/prompt/steps/step-ask-question/handlers/handle-read-external-files.js +5 -0
  41. package/dist/prompt/steps/step-ask-question/handlers/handle-read-external-files.js.map +1 -1
  42. package/dist/prompt/steps/step-ask-question/handlers/handle-request-git-context.d.ts +3 -0
  43. package/dist/prompt/steps/step-ask-question/handlers/handle-request-git-context.js +184 -0
  44. package/dist/prompt/steps/step-ask-question/handlers/handle-request-git-context.js.map +1 -0
  45. package/dist/prompt/steps/step-ask-question/handlers/handle-update-file.js +8 -12
  46. package/dist/prompt/steps/step-ask-question/handlers/handle-update-file.js.map +1 -1
  47. package/dist/prompt/steps/step-ask-question/step-ask-question-types.d.ts +25 -1
  48. package/dist/prompt/steps/step-ask-question/step-ask-question.d.ts +2 -0
  49. package/dist/prompt/steps/step-ask-question/step-ask-question.js +2 -0
  50. package/dist/prompt/steps/step-ask-question/step-ask-question.js.map +1 -1
  51. package/dist/prompt/steps/step-validate-recover.js +3 -3
  52. package/dist/prompt/steps/step-validate-recover.js.map +1 -1
  53. package/dist/prompt/systemprompt.d.ts +1 -1
  54. package/dist/prompt/systemprompt.js +7 -2
  55. package/dist/prompt/systemprompt.js.map +1 -1
  56. package/package.json +4 -3
  57. package/dist/main/ui/frontend/assets/index-BlVGo0E6.js +0 -1902
@@ -1,4 +1,4 @@
1
- import { FunctionCallingMode, GoogleGenerativeAI, HarmBlockThreshold, HarmCategory, } from '@google/generative-ai';
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: FunctionCallingMode.ANY,
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: FunctionCallingMode.NONE,
92
+ mode: FunctionCallingConfigMode.NONE,
91
93
  allowedFunctionNames: [],
92
94
  },
93
95
  };
94
96
  }
95
- const model = getModel(modelType, temperature, prompt.find((item) => item.type === 'systemPrompt')?.systemPrompt, options.geminiBlockNone);
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.response.usageMetadata;
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.response.promptFeedback) {
114
+ if (result.promptFeedback) {
114
115
  console.log('Prompt feedback:');
115
- console.log(JSON.stringify(result.response.promptFeedback, null, 2));
116
+ console.log(JSON.stringify(result.promptFeedback, null, 2));
116
117
  }
117
- if (!result.response.candidates?.length) {
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.response.candidates
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.response.candidates[0].content?.parts.length === 2) {
145
+ if (result.candidates[0].content?.parts?.length === 2) {
145
146
  resultParts.push({
146
147
  type: 'text',
147
- text: result.response.candidates[0].content?.parts.slice(-2)[0].text ?? '',
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.response.candidates[0].content?.parts.slice(-1)[0].text ?? '',
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.response.candidates[0].content?.parts.length === 2
162
- ? result.response.candidates[0].content?.parts.slice(-2)[0].text
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.response.candidates[0].content?.parts.slice(-1)[0].text,
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.response.candidates
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.response.candidates.map((candidate) =>
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 getModel(modelType, temperature, systemPrompt, geminiBlockNone) {
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 GoogleGenerativeAI(serviceConfig.apiKey);
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
- const generationConfig = {
233
- maxOutputTokens: outputTokenLimit,
234
- temperature,
235
- topP: 0.95,
236
- };
237
- return genAI.getGenerativeModel({
231
+ return genAI.models.generateContent({
238
232
  model,
239
- generationConfig,
240
- safetySettings: [
241
- {
242
- category: HarmCategory.HARM_CATEGORY_HATE_SPEECH,
243
- threshold: geminiBlockNone ? HarmBlockThreshold.BLOCK_NONE : HarmBlockThreshold.BLOCK_LOW_AND_ABOVE,
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 getModel(ModelType.DEFAULT, // Always use default model for recovery attempts
277
- 0.2, 'Your role is read the text below and if possible, return it in the desired format.', undefined).generateContent({
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
- generationConfig: {
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.response.text());
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":"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"}
1
+ {"version":3,"file":"ai-studio.js","sourceRoot":"","sources":["../../src/ai-service/ai-studio.ts"],"names":[],"mappings":"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"}
@@ -12,6 +12,7 @@ export interface TokenUsage {
12
12
  totalTokens: number | undefined | null;
13
13
  cacheCreateTokens?: number | null;
14
14
  cacheReadTokens?: number | null;
15
+ thinkingTokens?: number | null;
15
16
  }
16
17
  export interface FunctionDef {
17
18
  name: string;
@@ -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":"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"}
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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4RtC,CAAC"}
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;
@@ -53,5 +53,6 @@ export interface RcConfig {
53
53
  plugins?: string[];
54
54
  featuresEnabled?: {
55
55
  appContext?: boolean;
56
+ gitContext?: boolean;
56
57
  };
57
58
  }
@@ -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];
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/main/config.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAC9E,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,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,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"}
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
+ }