@gracefultools/astrid-sdk 0.7.16 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (115) hide show
  1. package/README.md +127 -341
  2. package/dist/channel/channel.d.ts +33 -0
  3. package/dist/channel/channel.d.ts.map +1 -0
  4. package/dist/channel/channel.js +90 -0
  5. package/dist/channel/channel.js.map +1 -0
  6. package/dist/channel/index.d.ts +13 -0
  7. package/dist/channel/index.d.ts.map +1 -0
  8. package/dist/channel/index.js +23 -0
  9. package/dist/channel/index.js.map +1 -0
  10. package/dist/channel/message-formatter.d.ts +14 -0
  11. package/dist/channel/message-formatter.d.ts.map +1 -0
  12. package/dist/channel/message-formatter.js +71 -0
  13. package/dist/channel/message-formatter.js.map +1 -0
  14. package/dist/channel/oauth-client.d.ts +15 -0
  15. package/dist/channel/oauth-client.d.ts.map +1 -0
  16. package/dist/channel/oauth-client.js +45 -0
  17. package/dist/channel/oauth-client.js.map +1 -0
  18. package/dist/channel/rest-client.d.ts +16 -0
  19. package/dist/channel/rest-client.d.ts.map +1 -0
  20. package/dist/channel/rest-client.js +66 -0
  21. package/dist/channel/rest-client.js.map +1 -0
  22. package/dist/channel/session-mapper.d.ts +14 -0
  23. package/dist/channel/session-mapper.d.ts.map +1 -0
  24. package/dist/channel/session-mapper.js +37 -0
  25. package/dist/channel/session-mapper.js.map +1 -0
  26. package/dist/channel/sse-client.d.ts +31 -0
  27. package/dist/channel/sse-client.d.ts.map +1 -0
  28. package/dist/channel/sse-client.js +171 -0
  29. package/dist/channel/sse-client.js.map +1 -0
  30. package/dist/channel/types.d.ts +65 -0
  31. package/dist/channel/types.d.ts.map +1 -0
  32. package/dist/channel/types.js +3 -0
  33. package/dist/channel/types.js.map +1 -0
  34. package/dist/config/agent-workflow.js +7 -7
  35. package/dist/index.d.ts +1 -8
  36. package/dist/index.d.ts.map +1 -1
  37. package/dist/index.js +16 -30
  38. package/dist/index.js.map +1 -1
  39. package/dist/types/index.d.ts +1 -1
  40. package/dist/types/index.d.ts.map +1 -1
  41. package/dist/utils/agent-config.d.ts.map +1 -1
  42. package/dist/utils/agent-config.js +14 -0
  43. package/dist/utils/agent-config.js.map +1 -1
  44. package/openclaw.plugin.json +25 -0
  45. package/package.json +66 -77
  46. package/templates/.astrid.config.json +60 -60
  47. package/templates/ASTRID.template.md +74 -74
  48. package/dist/bin/cli.d.ts +0 -14
  49. package/dist/bin/cli.d.ts.map +0 -1
  50. package/dist/bin/cli.js +0 -1610
  51. package/dist/bin/cli.js.map +0 -1
  52. package/dist/executors/claude.d.ts +0 -65
  53. package/dist/executors/claude.d.ts.map +0 -1
  54. package/dist/executors/claude.js +0 -838
  55. package/dist/executors/claude.js.map +0 -1
  56. package/dist/executors/gemini.d.ts +0 -23
  57. package/dist/executors/gemini.d.ts.map +0 -1
  58. package/dist/executors/gemini.js +0 -558
  59. package/dist/executors/gemini.js.map +0 -1
  60. package/dist/executors/openai.d.ts +0 -17
  61. package/dist/executors/openai.d.ts.map +0 -1
  62. package/dist/executors/openai.js +0 -614
  63. package/dist/executors/openai.js.map +0 -1
  64. package/dist/executors/shared/index.d.ts +0 -9
  65. package/dist/executors/shared/index.d.ts.map +0 -1
  66. package/dist/executors/shared/index.js +0 -21
  67. package/dist/executors/shared/index.js.map +0 -1
  68. package/dist/executors/shared/tool-executor.d.ts +0 -52
  69. package/dist/executors/shared/tool-executor.d.ts.map +0 -1
  70. package/dist/executors/shared/tool-executor.js +0 -262
  71. package/dist/executors/shared/tool-executor.js.map +0 -1
  72. package/dist/executors/shared/tool-schemas.d.ts +0 -61
  73. package/dist/executors/shared/tool-schemas.d.ts.map +0 -1
  74. package/dist/executors/shared/tool-schemas.js +0 -135
  75. package/dist/executors/shared/tool-schemas.js.map +0 -1
  76. package/dist/executors/terminal-base.d.ts +0 -207
  77. package/dist/executors/terminal-base.d.ts.map +0 -1
  78. package/dist/executors/terminal-base.js +0 -552
  79. package/dist/executors/terminal-base.js.map +0 -1
  80. package/dist/executors/terminal-claude.d.ts +0 -116
  81. package/dist/executors/terminal-claude.d.ts.map +0 -1
  82. package/dist/executors/terminal-claude.js +0 -700
  83. package/dist/executors/terminal-claude.js.map +0 -1
  84. package/dist/executors/terminal-executors.test.d.ts +0 -8
  85. package/dist/executors/terminal-executors.test.d.ts.map +0 -1
  86. package/dist/executors/terminal-executors.test.js +0 -469
  87. package/dist/executors/terminal-executors.test.js.map +0 -1
  88. package/dist/executors/terminal-gemini.d.ts +0 -50
  89. package/dist/executors/terminal-gemini.d.ts.map +0 -1
  90. package/dist/executors/terminal-gemini.js +0 -401
  91. package/dist/executors/terminal-gemini.js.map +0 -1
  92. package/dist/executors/terminal-openai.d.ts +0 -50
  93. package/dist/executors/terminal-openai.d.ts.map +0 -1
  94. package/dist/executors/terminal-openai.js +0 -405
  95. package/dist/executors/terminal-openai.js.map +0 -1
  96. package/dist/server/astrid-client.d.ts +0 -77
  97. package/dist/server/astrid-client.d.ts.map +0 -1
  98. package/dist/server/astrid-client.js +0 -125
  99. package/dist/server/astrid-client.js.map +0 -1
  100. package/dist/server/index.d.ts +0 -38
  101. package/dist/server/index.d.ts.map +0 -1
  102. package/dist/server/index.js +0 -408
  103. package/dist/server/index.js.map +0 -1
  104. package/dist/server/repo-manager.d.ts +0 -41
  105. package/dist/server/repo-manager.d.ts.map +0 -1
  106. package/dist/server/repo-manager.js +0 -177
  107. package/dist/server/repo-manager.js.map +0 -1
  108. package/dist/server/session-manager.d.ts +0 -93
  109. package/dist/server/session-manager.d.ts.map +0 -1
  110. package/dist/server/session-manager.js +0 -217
  111. package/dist/server/session-manager.js.map +0 -1
  112. package/dist/server/webhook-signature.d.ts +0 -23
  113. package/dist/server/webhook-signature.d.ts.map +0 -1
  114. package/dist/server/webhook-signature.js +0 -74
  115. package/dist/server/webhook-signature.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"claude.js","sourceRoot":"","sources":["../../src/executors/claude.ts"],"names":[],"mappings":"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"}
@@ -1,23 +0,0 @@
1
- /**
2
- * Gemini Agent Executor
3
- *
4
- * Executes code implementation using Google's Gemini API with function calling.
5
- */
6
- import type { ImplementationPlan, ExecutionResult, PlanningResult, Logger, ProgressCallback } from '../types/index.js';
7
- export interface GeminiExecutorConfig {
8
- /** Path to the cloned repository */
9
- repoPath: string;
10
- /** Gemini API key */
11
- apiKey: string;
12
- /** Model to use */
13
- model?: string;
14
- /** Maximum iterations for tool use loop */
15
- maxIterations?: number;
16
- /** Logger function */
17
- logger?: Logger;
18
- /** Callback for progress updates */
19
- onProgress?: ProgressCallback;
20
- }
21
- export declare function planWithGemini(taskTitle: string, taskDescription: string | null, config: GeminiExecutorConfig): Promise<PlanningResult>;
22
- export declare function executeWithGemini(plan: ImplementationPlan, taskTitle: string, taskDescription: string | null, config: GeminiExecutorConfig): Promise<ExecutionResult>;
23
- //# sourceMappingURL=gemini.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"gemini.d.ts","sourceRoot":"","sources":["../../src/executors/gemini.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,OAAO,KAAK,EACV,kBAAkB,EAClB,eAAe,EACf,cAAc,EACd,MAAM,EACN,gBAAgB,EACjB,MAAM,mBAAmB,CAAA;AAc1B,MAAM,WAAW,oBAAoB;IACnC,oCAAoC;IACpC,QAAQ,EAAE,MAAM,CAAA;IAChB,qBAAqB;IACrB,MAAM,EAAE,MAAM,CAAA;IACd,mBAAmB;IACnB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,2CAA2C;IAC3C,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,sBAAsB;IACtB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,oCAAoC;IACpC,UAAU,CAAC,EAAE,gBAAgB,CAAA;CAC9B;AA0RD,wBAAsB,cAAc,CAClC,SAAS,EAAE,MAAM,EACjB,eAAe,EAAE,MAAM,GAAG,IAAI,EAC9B,MAAM,EAAE,oBAAoB,GAC3B,OAAO,CAAC,cAAc,CAAC,CA6JzB;AAMD,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,kBAAkB,EACxB,SAAS,EAAE,MAAM,EACjB,eAAe,EAAE,MAAM,GAAG,IAAI,EAC9B,MAAM,EAAE,oBAAoB,GAC3B,OAAO,CAAC,eAAe,CAAC,CAiK1B"}
@@ -1,558 +0,0 @@
1
- "use strict";
2
- /**
3
- * Gemini Agent Executor
4
- *
5
- * Executes code implementation using Google's Gemini API with function calling.
6
- */
7
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
8
- if (k2 === undefined) k2 = k;
9
- var desc = Object.getOwnPropertyDescriptor(m, k);
10
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
11
- desc = { enumerable: true, get: function() { return m[k]; } };
12
- }
13
- Object.defineProperty(o, k2, desc);
14
- }) : (function(o, m, k, k2) {
15
- if (k2 === undefined) k2 = k;
16
- o[k2] = m[k];
17
- }));
18
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
19
- Object.defineProperty(o, "default", { enumerable: true, value: v });
20
- }) : function(o, v) {
21
- o["default"] = v;
22
- });
23
- var __importStar = (this && this.__importStar) || (function () {
24
- var ownKeys = function(o) {
25
- ownKeys = Object.getOwnPropertyNames || function (o) {
26
- var ar = [];
27
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
28
- return ar;
29
- };
30
- return ownKeys(o);
31
- };
32
- return function (mod) {
33
- if (mod && mod.__esModule) return mod;
34
- var result = {};
35
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
36
- __setModuleDefault(result, mod);
37
- return result;
38
- };
39
- })();
40
- Object.defineProperty(exports, "__esModule", { value: true });
41
- exports.planWithGemini = planWithGemini;
42
- exports.executeWithGemini = executeWithGemini;
43
- const fs = __importStar(require("fs/promises"));
44
- const path = __importStar(require("path"));
45
- const child_process_1 = require("child_process");
46
- const glob_1 = require("glob");
47
- const agent_config_js_1 = require("../utils/agent-config.js");
48
- // ============================================================================
49
- // TOOL DEFINITIONS
50
- // ============================================================================
51
- const TOOL_DECLARATIONS = [
52
- {
53
- name: 'read_file',
54
- description: 'Read the contents of a file',
55
- parameters: {
56
- type: 'object',
57
- properties: {
58
- file_path: { type: 'string', description: 'Path to the file' }
59
- },
60
- required: ['file_path']
61
- }
62
- },
63
- {
64
- name: 'write_file',
65
- description: 'Write content to a file (creates or overwrites)',
66
- parameters: {
67
- type: 'object',
68
- properties: {
69
- file_path: { type: 'string', description: 'Path to the file' },
70
- content: { type: 'string', description: 'Content to write' }
71
- },
72
- required: ['file_path', 'content']
73
- }
74
- },
75
- {
76
- name: 'edit_file',
77
- description: 'Edit a file by replacing old_string with new_string',
78
- parameters: {
79
- type: 'object',
80
- properties: {
81
- file_path: { type: 'string', description: 'Path to the file' },
82
- old_string: { type: 'string', description: 'String to find' },
83
- new_string: { type: 'string', description: 'Replacement string' }
84
- },
85
- required: ['file_path', 'old_string', 'new_string']
86
- }
87
- },
88
- {
89
- name: 'run_bash',
90
- description: 'Run a bash command',
91
- parameters: {
92
- type: 'object',
93
- properties: {
94
- command: { type: 'string', description: 'The bash command' }
95
- },
96
- required: ['command']
97
- }
98
- },
99
- {
100
- name: 'glob_files',
101
- description: 'Find files matching a glob pattern',
102
- parameters: {
103
- type: 'object',
104
- properties: {
105
- pattern: { type: 'string', description: 'Glob pattern' }
106
- },
107
- required: ['pattern']
108
- }
109
- },
110
- {
111
- name: 'grep_search',
112
- description: 'Search for a pattern in files',
113
- parameters: {
114
- type: 'object',
115
- properties: {
116
- pattern: { type: 'string', description: 'Search pattern' },
117
- file_pattern: { type: 'string', description: 'Optional glob pattern' }
118
- },
119
- required: ['pattern']
120
- }
121
- },
122
- {
123
- name: 'task_complete',
124
- description: 'Signal task completion',
125
- parameters: {
126
- type: 'object',
127
- properties: {
128
- commit_message: { type: 'string', description: 'Git commit message' },
129
- pr_title: { type: 'string', description: 'PR title' },
130
- pr_description: { type: 'string', description: 'PR description' }
131
- },
132
- required: ['commit_message', 'pr_title', 'pr_description']
133
- }
134
- }
135
- ];
136
- async function executeTool(name, args, repoPath) {
137
- try {
138
- switch (name) {
139
- case 'read_file': {
140
- const filePath = path.join(repoPath, args.file_path);
141
- const content = await fs.readFile(filePath, 'utf-8');
142
- return { success: true, result: content };
143
- }
144
- case 'write_file': {
145
- const filePath = path.join(repoPath, args.file_path);
146
- const content = args.content;
147
- let action = 'create';
148
- try {
149
- await fs.access(filePath);
150
- action = 'modify';
151
- }
152
- catch {
153
- await fs.mkdir(path.dirname(filePath), { recursive: true });
154
- }
155
- await fs.writeFile(filePath, content, 'utf-8');
156
- return {
157
- success: true,
158
- result: `File ${action === 'create' ? 'created' : 'updated'}: ${args.file_path}`,
159
- fileChange: { path: args.file_path, content, action }
160
- };
161
- }
162
- case 'edit_file': {
163
- const filePath = path.join(repoPath, args.file_path);
164
- const oldContent = await fs.readFile(filePath, 'utf-8');
165
- const oldString = args.old_string;
166
- const newString = args.new_string;
167
- if (!oldContent.includes(oldString)) {
168
- return { success: false, result: `Error: Could not find string in file` };
169
- }
170
- const newContent = oldContent.replace(oldString, newString);
171
- await fs.writeFile(filePath, newContent, 'utf-8');
172
- return {
173
- success: true,
174
- result: `File edited: ${args.file_path}`,
175
- fileChange: { path: args.file_path, content: newContent, action: 'modify' }
176
- };
177
- }
178
- case 'run_bash': {
179
- const command = args.command;
180
- const dangerous = ['rm -rf /', 'sudo', '> /dev/', 'mkfs', 'dd if='];
181
- if (dangerous.some(d => command.includes(d))) {
182
- return { success: false, result: 'Error: Dangerous command blocked' };
183
- }
184
- try {
185
- const output = (0, child_process_1.execSync)(command, {
186
- cwd: repoPath,
187
- encoding: 'utf-8',
188
- timeout: 60000,
189
- maxBuffer: 1024 * 1024
190
- });
191
- return { success: true, result: output || '(no output)' };
192
- }
193
- catch (error) {
194
- const err = error;
195
- return { success: false, result: `Error: ${err.stderr || err.message}` };
196
- }
197
- }
198
- case 'glob_files': {
199
- const pattern = args.pattern;
200
- const files = await (0, glob_1.glob)(pattern, { cwd: repoPath, nodir: true });
201
- return { success: true, result: files.slice(0, 100).join('\n') || '(no matches)' };
202
- }
203
- case 'grep_search': {
204
- const pattern = args.pattern;
205
- const filePattern = args.file_pattern || '.';
206
- try {
207
- const output = (0, child_process_1.execSync)(`grep -rn "${pattern.replace(/"/g, '\\"')}" ${filePattern} | head -50`, { cwd: repoPath, encoding: 'utf-8', timeout: 30000 });
208
- return { success: true, result: output || '(no matches)' };
209
- }
210
- catch {
211
- return { success: true, result: '(no matches)' };
212
- }
213
- }
214
- case 'task_complete':
215
- return { success: true, result: 'Task marked complete' };
216
- default:
217
- return { success: false, result: `Unknown tool: ${name}` };
218
- }
219
- }
220
- catch (error) {
221
- return { success: false, result: `Error: ${error instanceof Error ? error.message : String(error)}` };
222
- }
223
- }
224
- async function callGemini(contents, systemInstruction, apiKey, model) {
225
- const url = `https://generativelanguage.googleapis.com/v1beta/models/${model}:generateContent?key=${apiKey}`;
226
- const response = await fetch(url, {
227
- method: 'POST',
228
- headers: { 'Content-Type': 'application/json' },
229
- body: JSON.stringify({
230
- systemInstruction: { parts: [{ text: systemInstruction }] },
231
- contents,
232
- tools: [{ functionDeclarations: TOOL_DECLARATIONS }],
233
- toolConfig: {
234
- functionCallingConfig: {
235
- mode: 'AUTO'
236
- }
237
- },
238
- generationConfig: { maxOutputTokens: 8192, temperature: 0.2 }
239
- })
240
- });
241
- if (!response.ok) {
242
- const error = await response.text();
243
- throw new Error(`Gemini API error: ${error}`);
244
- }
245
- return response.json();
246
- }
247
- async function loadAstridMd(repoPath, maxLength = 16000) {
248
- try {
249
- const content = await fs.readFile(path.join(repoPath, 'ASTRID.md'), 'utf-8');
250
- return content.length > maxLength ? content.substring(0, maxLength) + '\n\n[truncated...]' : content;
251
- }
252
- catch {
253
- // Try README.md as fallback
254
- try {
255
- const content = await fs.readFile(path.join(repoPath, 'README.md'), 'utf-8');
256
- const truncated = content.length > maxLength / 2
257
- ? content.substring(0, maxLength / 2) + '\n\n[README.md truncated...]'
258
- : content;
259
- return `## Project Context (from README.md)\n\n${truncated}`;
260
- }
261
- catch {
262
- return null;
263
- }
264
- }
265
- }
266
- // ============================================================================
267
- // PLANNING
268
- // ============================================================================
269
- async function planWithGemini(taskTitle, taskDescription, config) {
270
- const log = config.logger || (() => { });
271
- const onProgress = config.onProgress || (() => { });
272
- const model = config.model || agent_config_js_1.DEFAULT_MODELS.gemini;
273
- log('info', 'Starting Gemini planning', { repoPath: config.repoPath, taskTitle });
274
- onProgress('Initializing Gemini for planning...');
275
- const astridMd = await loadAstridMd(config.repoPath);
276
- const systemInstruction = `You are an expert software engineer with access to tools for exploring codebases.
277
-
278
- ${astridMd ? `## Project Context\n${astridMd}\n` : ''}
279
-
280
- ## Your Task
281
- Create an implementation plan for: "${taskTitle}"
282
- ${taskDescription ? `\nDetails: ${taskDescription}` : ''}
283
-
284
- ## EXPLORATION WORKFLOW (MANDATORY)
285
-
286
- You MUST follow this workflow:
287
-
288
- ### Step 1: Understand Project Structure
289
- - Call glob_files with patterns like "**/*.ts" or "**/*.tsx"
290
- - Call read_file on package.json and config files
291
-
292
- ### Step 2: Find Relevant Code
293
- - Call grep_search to find related terms, functions, or patterns
294
- - Call read_file on files that are likely to need changes
295
- - Read adjacent files to understand context and patterns
296
-
297
- ### Step 3: Create Precise Plan
298
- After reading at least 3-5 relevant files, create a surgical plan.
299
-
300
- CRITICAL: You must use ACTUAL FUNCTION CALLS, not text descriptions.
301
- Do NOT write text saying "I will call X" - actually invoke the function.
302
-
303
- ## Final Output Format
304
- After exploring, respond with a JSON block:
305
- \`\`\`json
306
- {
307
- "summary": "Brief summary of what needs to be done",
308
- "approach": "High-level approach with technical details",
309
- "files": [
310
- {"path": "path/to/file.ts", "purpose": "Why this file needs changes", "changes": "Specific changes"}
311
- ],
312
- "estimatedComplexity": "simple|medium|complex",
313
- "considerations": ["Edge case 1", "Testing requirement"]
314
- }
315
- \`\`\`
316
-
317
- RULES:
318
- - You MUST call tools first to explore - don't guess file paths
319
- - Include SPECIFIC file paths you discovered
320
- - Be SURGICAL: only list files that MUST change
321
- - Follow existing patterns in the codebase`;
322
- const contents = [
323
- { role: 'user', parts: [{ text: `Start by calling glob_files to find relevant files, then create an implementation plan for: ${taskTitle}` }] }
324
- ];
325
- let totalInputTokens = 0;
326
- let totalOutputTokens = 0;
327
- const maxIterations = config.maxIterations || 20;
328
- try {
329
- for (let i = 0; i < maxIterations; i++) {
330
- onProgress(`Planning iteration ${i + 1}...`);
331
- const response = await callGemini(contents, systemInstruction, config.apiKey, model);
332
- totalInputTokens += response.usageMetadata?.promptTokenCount || 0;
333
- totalOutputTokens += response.usageMetadata?.candidatesTokenCount || 0;
334
- const candidate = response.candidates[0];
335
- if (!candidate) {
336
- return { success: false, error: 'No response from Gemini' };
337
- }
338
- contents.push({ role: 'model', parts: candidate.content.parts });
339
- const functionCalls = candidate.content.parts.filter(p => p.functionCall);
340
- if (functionCalls.length > 0) {
341
- const functionResponses = [];
342
- for (const part of functionCalls) {
343
- if (!part.functionCall)
344
- continue;
345
- const { name, args } = part.functionCall;
346
- onProgress(`Using tool: ${name}`);
347
- const result = await executeTool(name, args, config.repoPath);
348
- functionResponses.push({
349
- functionResponse: { name, response: { result: result.result.substring(0, 10000) } }
350
- });
351
- }
352
- contents.push({ role: 'user', parts: functionResponses });
353
- continue;
354
- }
355
- const textPart = candidate.content.parts.find(p => p.text);
356
- if (textPart?.text) {
357
- const jsonMatch = textPart.text.match(/```json\s*([\s\S]*?)\s*```/);
358
- if (jsonMatch) {
359
- try {
360
- const plan = JSON.parse(jsonMatch[1]);
361
- // Validate plan has at least 1 file
362
- if (!plan.files || plan.files.length === 0) {
363
- log('warn', 'Plan has no files, asking model to explore more', {});
364
- contents.push({
365
- role: 'user',
366
- parts: [{
367
- text: 'Your plan has no files to modify. This is not valid. You MUST use the glob_files and read_file tools to explore the codebase first, then provide a plan with specific files to modify. Please call glob_files now to find relevant files.'
368
- }]
369
- });
370
- continue;
371
- }
372
- return {
373
- success: true,
374
- plan,
375
- usage: {
376
- inputTokens: totalInputTokens,
377
- outputTokens: totalOutputTokens,
378
- costUSD: (totalInputTokens * 0.00125 + totalOutputTokens * 0.005) / 1000
379
- }
380
- };
381
- }
382
- catch {
383
- log('warn', 'Failed to parse plan JSON', {});
384
- }
385
- }
386
- // Model output text but no JSON plan - check if it's first iteration
387
- if (i === 0) {
388
- log('warn', 'First iteration had no function calls - prompting model to use tools', {});
389
- contents.push({
390
- role: 'user',
391
- parts: [{
392
- text: 'You must use the function calling tools to explore the codebase. Please call glob_files with an appropriate pattern to find relevant files. Do not describe what you will do - actually invoke the function.'
393
- }]
394
- });
395
- continue;
396
- }
397
- }
398
- if (candidate.finishReason === 'STOP') {
399
- contents.push({
400
- role: 'user',
401
- parts: [{ text: 'Please provide the implementation plan as a JSON block with at least one file to modify.' }]
402
- });
403
- }
404
- }
405
- return { success: false, error: 'Max iterations reached' };
406
- }
407
- catch (error) {
408
- return { success: false, error: error instanceof Error ? error.message : String(error) };
409
- }
410
- }
411
- // ============================================================================
412
- // EXECUTION
413
- // ============================================================================
414
- async function executeWithGemini(plan, taskTitle, taskDescription, config) {
415
- const log = config.logger || (() => { });
416
- const onProgress = config.onProgress || (() => { });
417
- const model = config.model || agent_config_js_1.DEFAULT_MODELS.gemini;
418
- log('info', 'Starting Gemini execution', { repoPath: config.repoPath, filesInPlan: plan.files.length });
419
- onProgress('Initializing Gemini agent...');
420
- const astridMd = await loadAstridMd(config.repoPath);
421
- const systemInstruction = `You are an expert software engineer implementing changes.
422
-
423
- ${astridMd ? `## Project Context\n${astridMd}\n` : ''}
424
-
425
- ## Task
426
- Implement: "${taskTitle}"
427
- ${taskDescription ? `\nDetails: ${taskDescription}` : ''}
428
-
429
- ## Implementation Plan
430
- ${JSON.stringify(plan, null, 2)}
431
-
432
- ## IMPLEMENTATION WORKFLOW (MANDATORY)
433
-
434
- ### Step 1: Verify Understanding
435
- - Read the files in the plan to confirm your approach
436
- - Check import paths and dependencies
437
-
438
- ### Step 2: Implement Changes
439
- - Make changes one file at a time
440
- - Follow existing code style and patterns
441
- - Write complete, production-ready code (no TODOs)
442
-
443
- ### Step 3: Verify Changes
444
- - After making changes, run "npm run build" or tests via run_bash
445
- - If build/tests fail, FIX the issues before continuing
446
-
447
- ### Step 4: Complete
448
- - Call task_complete with good commit message and PR description
449
-
450
- ## Rules
451
- - Follow the plan exactly
452
- - Write complete code - no placeholders
453
- - Test your changes before completing
454
- - Handle edge cases properly`;
455
- const contents = [
456
- { role: 'user', parts: [{ text: 'Please implement the changes according to the plan.' }] }
457
- ];
458
- const fileChanges = new Map();
459
- let totalInputTokens = 0;
460
- let totalOutputTokens = 0;
461
- const maxIterations = config.maxIterations || 50;
462
- try {
463
- for (let i = 0; i < maxIterations; i++) {
464
- onProgress(`Implementation iteration ${i + 1}...`);
465
- const response = await callGemini(contents, systemInstruction, config.apiKey, model);
466
- totalInputTokens += response.usageMetadata?.promptTokenCount || 0;
467
- totalOutputTokens += response.usageMetadata?.candidatesTokenCount || 0;
468
- const candidate = response.candidates[0];
469
- if (!candidate) {
470
- return {
471
- success: false,
472
- files: [],
473
- commitMessage: '',
474
- prTitle: '',
475
- prDescription: '',
476
- error: 'No response from Gemini'
477
- };
478
- }
479
- contents.push({ role: 'model', parts: candidate.content.parts });
480
- const functionCalls = candidate.content.parts.filter(p => p.functionCall);
481
- if (functionCalls.length > 0) {
482
- const functionResponses = [];
483
- for (const part of functionCalls) {
484
- if (!part.functionCall)
485
- continue;
486
- const { name, args } = part.functionCall;
487
- onProgress(`Using tool: ${name}`);
488
- if (name === 'task_complete') {
489
- const files = Array.from(fileChanges.entries()).map(([p, change]) => ({
490
- path: p,
491
- content: change.content,
492
- action: change.action
493
- }));
494
- return {
495
- success: true,
496
- files,
497
- commitMessage: args.commit_message || `feat: ${taskTitle}`,
498
- prTitle: args.pr_title || `feat: ${taskTitle}`,
499
- prDescription: args.pr_description || taskDescription || taskTitle,
500
- usage: {
501
- inputTokens: totalInputTokens,
502
- outputTokens: totalOutputTokens,
503
- costUSD: (totalInputTokens * 0.00125 + totalOutputTokens * 0.005) / 1000
504
- }
505
- };
506
- }
507
- const result = await executeTool(name, args, config.repoPath);
508
- if (result.fileChange) {
509
- fileChanges.set(result.fileChange.path, {
510
- content: result.fileChange.content,
511
- action: result.fileChange.action
512
- });
513
- }
514
- functionResponses.push({
515
- functionResponse: { name, response: { result: result.result.substring(0, 10000) } }
516
- });
517
- }
518
- contents.push({ role: 'user', parts: functionResponses });
519
- continue;
520
- }
521
- if (candidate.finishReason === 'STOP') {
522
- contents.push({
523
- role: 'user',
524
- parts: [{ text: 'Please call task_complete to finalize.' }]
525
- });
526
- }
527
- }
528
- const files = Array.from(fileChanges.entries()).map(([p, change]) => ({
529
- path: p,
530
- content: change.content,
531
- action: change.action
532
- }));
533
- return {
534
- success: files.length > 0,
535
- files,
536
- commitMessage: `feat: ${taskTitle}`,
537
- prTitle: `feat: ${taskTitle}`,
538
- prDescription: taskDescription || taskTitle,
539
- error: 'Max iterations reached',
540
- usage: {
541
- inputTokens: totalInputTokens,
542
- outputTokens: totalOutputTokens,
543
- costUSD: (totalInputTokens * 0.00125 + totalOutputTokens * 0.005) / 1000
544
- }
545
- };
546
- }
547
- catch (error) {
548
- return {
549
- success: false,
550
- files: [],
551
- commitMessage: '',
552
- prTitle: '',
553
- prDescription: '',
554
- error: error instanceof Error ? error.message : String(error)
555
- };
556
- }
557
- }
558
- //# sourceMappingURL=gemini.js.map