@gracefultools/astrid-sdk 0.3.1 → 0.3.3
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/config/index.d.ts +108 -37
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +135 -40
- package/dist/config/index.js.map +1 -1
- package/dist/executors/claude.js +5 -0
- package/dist/executors/claude.js.map +1 -1
- package/dist/executors/gemini.d.ts.map +1 -1
- package/dist/executors/gemini.js +34 -8
- package/dist/executors/gemini.js.map +1 -1
- package/dist/executors/openai.d.ts +3 -10
- package/dist/executors/openai.d.ts.map +1 -1
- package/dist/executors/openai.js +154 -80
- package/dist/executors/openai.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -2
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/executors/gemini.js
CHANGED
|
@@ -272,14 +272,18 @@ Create an implementation plan for: "${taskTitle}"
|
|
|
272
272
|
${taskDescription ? `\nDetails: ${taskDescription}` : ''}
|
|
273
273
|
|
|
274
274
|
## How to Work
|
|
275
|
-
You have access to
|
|
276
|
-
- glob_files: Find files by pattern (e.g., "**/*.
|
|
277
|
-
- grep_search: Search for text in files
|
|
278
|
-
- read_file: Read a specific file's contents
|
|
275
|
+
You have access to function calling tools. You MUST use these tools to explore the codebase:
|
|
276
|
+
- glob_files(pattern): Find files by pattern (e.g., "**/*.ts", "**/*.swift")
|
|
277
|
+
- grep_search(pattern, file_pattern): Search for text in files
|
|
278
|
+
- read_file(file_path): Read a specific file's contents
|
|
279
279
|
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
280
|
+
CRITICAL: You must use ACTUAL FUNCTION CALLS, not text descriptions of what you want to do.
|
|
281
|
+
Do NOT write code blocks or text saying "I will call X" - actually invoke the function.
|
|
282
|
+
|
|
283
|
+
WORKFLOW:
|
|
284
|
+
1. FIRST: Call glob_files or grep_search to explore the codebase (REQUIRED)
|
|
285
|
+
2. THEN: Call read_file on relevant files you find
|
|
286
|
+
3. FINALLY: After at least 2-3 tool calls, output your plan as JSON
|
|
283
287
|
|
|
284
288
|
## Final Output Format
|
|
285
289
|
After exploring, respond with a JSON block:
|
|
@@ -337,6 +341,17 @@ RULES:
|
|
|
337
341
|
if (jsonMatch) {
|
|
338
342
|
try {
|
|
339
343
|
const plan = JSON.parse(jsonMatch[1]);
|
|
344
|
+
// Validate plan has at least 1 file
|
|
345
|
+
if (!plan.files || plan.files.length === 0) {
|
|
346
|
+
log('warn', 'Plan has no files, asking model to explore more', {});
|
|
347
|
+
contents.push({
|
|
348
|
+
role: 'user',
|
|
349
|
+
parts: [{
|
|
350
|
+
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.'
|
|
351
|
+
}]
|
|
352
|
+
});
|
|
353
|
+
continue;
|
|
354
|
+
}
|
|
340
355
|
return {
|
|
341
356
|
success: true,
|
|
342
357
|
plan,
|
|
@@ -351,11 +366,22 @@ RULES:
|
|
|
351
366
|
log('warn', 'Failed to parse plan JSON', {});
|
|
352
367
|
}
|
|
353
368
|
}
|
|
369
|
+
// Model output text but no JSON plan - check if it's first iteration
|
|
370
|
+
if (i === 0) {
|
|
371
|
+
log('warn', 'First iteration had no function calls - prompting model to use tools', {});
|
|
372
|
+
contents.push({
|
|
373
|
+
role: 'user',
|
|
374
|
+
parts: [{
|
|
375
|
+
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.'
|
|
376
|
+
}]
|
|
377
|
+
});
|
|
378
|
+
continue;
|
|
379
|
+
}
|
|
354
380
|
}
|
|
355
381
|
if (candidate.finishReason === 'STOP') {
|
|
356
382
|
contents.push({
|
|
357
383
|
role: 'user',
|
|
358
|
-
parts: [{ text: 'Please provide the implementation plan as a JSON block.' }]
|
|
384
|
+
parts: [{ text: 'Please provide the implementation plan as a JSON block with at least one file to modify.' }]
|
|
359
385
|
});
|
|
360
386
|
}
|
|
361
387
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gemini.js","sourceRoot":"","sources":["../../src/executors/gemini.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"gemini.js","sourceRoot":"","sources":["../../src/executors/gemini.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,24 +1,17 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* OpenAI Agent Executor
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
* Provides similar capabilities to Claude Agent SDK but using GPT models.
|
|
4
|
+
* Thin wrapper around OpenAI API that uses config-driven behavior.
|
|
6
5
|
*/
|
|
7
6
|
import type { ImplementationPlan, ExecutionResult, PlanningResult, Logger, ProgressCallback } from '../types/index.js';
|
|
8
7
|
export interface OpenAIExecutorConfig {
|
|
9
|
-
/** Path to the cloned repository */
|
|
10
8
|
repoPath: string;
|
|
11
|
-
/** OpenAI API key */
|
|
12
9
|
apiKey: string;
|
|
13
|
-
/** Model to use */
|
|
14
10
|
model?: string;
|
|
15
|
-
/** Maximum iterations for tool use loop */
|
|
16
11
|
maxIterations?: number;
|
|
17
|
-
/** Logger function */
|
|
18
12
|
logger?: Logger;
|
|
19
|
-
/** Callback for progress updates */
|
|
20
13
|
onProgress?: ProgressCallback;
|
|
21
14
|
}
|
|
22
|
-
export declare function planWithOpenAI(taskTitle: string, taskDescription: string | null,
|
|
23
|
-
export declare function executeWithOpenAI(plan: ImplementationPlan, taskTitle: string, taskDescription: string | null,
|
|
15
|
+
export declare function planWithOpenAI(taskTitle: string, taskDescription: string | null, executorConfig: OpenAIExecutorConfig): Promise<PlanningResult>;
|
|
16
|
+
export declare function executeWithOpenAI(plan: ImplementationPlan, taskTitle: string, taskDescription: string | null, executorConfig: OpenAIExecutorConfig): Promise<ExecutionResult>;
|
|
24
17
|
//# sourceMappingURL=openai.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openai.d.ts","sourceRoot":"","sources":["../../src/executors/openai.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"openai.d.ts","sourceRoot":"","sources":["../../src/executors/openai.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,OAAO,KAAK,EACV,kBAAkB,EAClB,eAAe,EACf,cAAc,EACd,MAAM,EACN,gBAAgB,EACjB,MAAM,mBAAmB,CAAA;AAgB1B,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,UAAU,CAAC,EAAE,gBAAgB,CAAA;CAC9B;AAyUD,wBAAsB,cAAc,CAClC,SAAS,EAAE,MAAM,EACjB,eAAe,EAAE,MAAM,GAAG,IAAI,EAC9B,cAAc,EAAE,oBAAoB,GACnC,OAAO,CAAC,cAAc,CAAC,CA0IzB;AAMD,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,kBAAkB,EACxB,SAAS,EAAE,MAAM,EACjB,eAAe,EAAE,MAAM,GAAG,IAAI,EAC9B,cAAc,EAAE,oBAAoB,GACnC,OAAO,CAAC,eAAe,CAAC,CA+J1B"}
|
package/dist/executors/openai.js
CHANGED
|
@@ -2,8 +2,7 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* OpenAI Agent Executor
|
|
4
4
|
*
|
|
5
|
-
*
|
|
6
|
-
* Provides similar capabilities to Claude Agent SDK but using GPT models.
|
|
5
|
+
* Thin wrapper around OpenAI API that uses config-driven behavior.
|
|
7
6
|
*/
|
|
8
7
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
9
8
|
if (k2 === undefined) k2 = k;
|
|
@@ -46,6 +45,7 @@ const path = __importStar(require("path"));
|
|
|
46
45
|
const child_process_1 = require("child_process");
|
|
47
46
|
const glob_1 = require("glob");
|
|
48
47
|
const agent_config_js_1 = require("../utils/agent-config.js");
|
|
48
|
+
const index_js_1 = require("../config/index.js");
|
|
49
49
|
// ============================================================================
|
|
50
50
|
// TOOL DEFINITIONS
|
|
51
51
|
// ============================================================================
|
|
@@ -58,7 +58,7 @@ const TOOLS = [
|
|
|
58
58
|
parameters: {
|
|
59
59
|
type: 'object',
|
|
60
60
|
properties: {
|
|
61
|
-
file_path: { type: 'string', description: 'Path to the file
|
|
61
|
+
file_path: { type: 'string', description: 'Path to the file' }
|
|
62
62
|
},
|
|
63
63
|
required: ['file_path']
|
|
64
64
|
}
|
|
@@ -68,7 +68,7 @@ const TOOLS = [
|
|
|
68
68
|
type: 'function',
|
|
69
69
|
function: {
|
|
70
70
|
name: 'write_file',
|
|
71
|
-
description: 'Write content to a file
|
|
71
|
+
description: 'Write content to a file',
|
|
72
72
|
parameters: {
|
|
73
73
|
type: 'object',
|
|
74
74
|
properties: {
|
|
@@ -88,7 +88,7 @@ const TOOLS = [
|
|
|
88
88
|
type: 'object',
|
|
89
89
|
properties: {
|
|
90
90
|
file_path: { type: 'string', description: 'Path to the file' },
|
|
91
|
-
old_string: { type: 'string', description: 'String to find
|
|
91
|
+
old_string: { type: 'string', description: 'String to find' },
|
|
92
92
|
new_string: { type: 'string', description: 'Replacement string' }
|
|
93
93
|
},
|
|
94
94
|
required: ['file_path', 'old_string', 'new_string']
|
|
@@ -99,11 +99,11 @@ const TOOLS = [
|
|
|
99
99
|
type: 'function',
|
|
100
100
|
function: {
|
|
101
101
|
name: 'run_bash',
|
|
102
|
-
description: 'Run a bash command
|
|
102
|
+
description: 'Run a bash command',
|
|
103
103
|
parameters: {
|
|
104
104
|
type: 'object',
|
|
105
105
|
properties: {
|
|
106
|
-
command: { type: 'string', description: 'The bash command
|
|
106
|
+
command: { type: 'string', description: 'The bash command' }
|
|
107
107
|
},
|
|
108
108
|
required: ['command']
|
|
109
109
|
}
|
|
@@ -117,7 +117,7 @@ const TOOLS = [
|
|
|
117
117
|
parameters: {
|
|
118
118
|
type: 'object',
|
|
119
119
|
properties: {
|
|
120
|
-
pattern: { type: 'string', description: 'Glob pattern
|
|
120
|
+
pattern: { type: 'string', description: 'Glob pattern' }
|
|
121
121
|
},
|
|
122
122
|
required: ['pattern']
|
|
123
123
|
}
|
|
@@ -132,7 +132,7 @@ const TOOLS = [
|
|
|
132
132
|
type: 'object',
|
|
133
133
|
properties: {
|
|
134
134
|
pattern: { type: 'string', description: 'Search pattern' },
|
|
135
|
-
file_pattern: { type: 'string', description: 'Optional glob pattern
|
|
135
|
+
file_pattern: { type: 'string', description: 'Optional glob pattern' }
|
|
136
136
|
},
|
|
137
137
|
required: ['pattern']
|
|
138
138
|
}
|
|
@@ -147,15 +147,15 @@ const TOOLS = [
|
|
|
147
147
|
type: 'object',
|
|
148
148
|
properties: {
|
|
149
149
|
commit_message: { type: 'string', description: 'Git commit message' },
|
|
150
|
-
pr_title: { type: 'string', description: '
|
|
151
|
-
pr_description: { type: 'string', description: '
|
|
150
|
+
pr_title: { type: 'string', description: 'PR title' },
|
|
151
|
+
pr_description: { type: 'string', description: 'PR description' }
|
|
152
152
|
},
|
|
153
153
|
required: ['commit_message', 'pr_title', 'pr_description']
|
|
154
154
|
}
|
|
155
155
|
}
|
|
156
156
|
}
|
|
157
157
|
];
|
|
158
|
-
async function executeTool(name, args, repoPath) {
|
|
158
|
+
async function executeTool(name, args, repoPath, config) {
|
|
159
159
|
try {
|
|
160
160
|
switch (name) {
|
|
161
161
|
case 'read_file': {
|
|
@@ -199,9 +199,8 @@ async function executeTool(name, args, repoPath) {
|
|
|
199
199
|
}
|
|
200
200
|
case 'run_bash': {
|
|
201
201
|
const command = args.command;
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
return { success: false, result: 'Error: Dangerous command blocked' };
|
|
202
|
+
if ((0, index_js_1.isBlockedCommand)(command, config)) {
|
|
203
|
+
return { success: false, result: 'Error: Command blocked by safety policy' };
|
|
205
204
|
}
|
|
206
205
|
try {
|
|
207
206
|
const output = (0, child_process_1.execSync)(command, {
|
|
@@ -220,13 +219,16 @@ async function executeTool(name, args, repoPath) {
|
|
|
220
219
|
case 'glob_files': {
|
|
221
220
|
const pattern = args.pattern;
|
|
222
221
|
const files = await (0, glob_1.glob)(pattern, { cwd: repoPath, nodir: true });
|
|
223
|
-
return {
|
|
222
|
+
return {
|
|
223
|
+
success: true,
|
|
224
|
+
result: files.slice(0, config.validation.maxGlobResults).join('\n') || '(no matches)'
|
|
225
|
+
};
|
|
224
226
|
}
|
|
225
227
|
case 'grep_search': {
|
|
226
228
|
const pattern = args.pattern;
|
|
227
229
|
const filePattern = args.file_pattern || '.';
|
|
228
230
|
try {
|
|
229
|
-
const output = (0, child_process_1.execSync)(`grep -rn "${pattern.replace(/"/g, '\\"')}" ${filePattern} | head
|
|
231
|
+
const output = (0, child_process_1.execSync)(`grep -rn "${pattern.replace(/"/g, '\\"')}" ${filePattern} | head -${config.validation.maxGlobResults}`, { cwd: repoPath, encoding: 'utf-8', timeout: 30000 });
|
|
230
232
|
return { success: true, result: output || '(no matches)' };
|
|
231
233
|
}
|
|
232
234
|
catch {
|
|
@@ -243,31 +245,57 @@ async function executeTool(name, args, repoPath) {
|
|
|
243
245
|
return { success: false, result: `Error: ${error instanceof Error ? error.message : String(error)}` };
|
|
244
246
|
}
|
|
245
247
|
}
|
|
246
|
-
async function callOpenAI(messages, apiKey, model) {
|
|
247
|
-
const
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
248
|
+
async function callOpenAI(messages, apiKey, model, config) {
|
|
249
|
+
const { maxRetries, initialBackoffMs, maxBackoffMs, backoffMultiplier, apiTimeoutMs } = config.retry;
|
|
250
|
+
let lastError = null;
|
|
251
|
+
for (let attempt = 0; attempt < maxRetries; attempt++) {
|
|
252
|
+
const controller = new AbortController();
|
|
253
|
+
const timeoutId = setTimeout(() => controller.abort(), apiTimeoutMs);
|
|
254
|
+
try {
|
|
255
|
+
const response = await fetch('https://api.openai.com/v1/chat/completions', {
|
|
256
|
+
method: 'POST',
|
|
257
|
+
headers: {
|
|
258
|
+
'Content-Type': 'application/json',
|
|
259
|
+
'Authorization': `Bearer ${apiKey}`
|
|
260
|
+
},
|
|
261
|
+
signal: controller.signal,
|
|
262
|
+
body: JSON.stringify({
|
|
263
|
+
model,
|
|
264
|
+
messages,
|
|
265
|
+
tools: TOOLS,
|
|
266
|
+
tool_choice: 'auto',
|
|
267
|
+
max_tokens: config.agent.modelParameters.execution.maxTokens,
|
|
268
|
+
temperature: config.agent.modelParameters.execution.temperature
|
|
269
|
+
})
|
|
270
|
+
});
|
|
271
|
+
clearTimeout(timeoutId);
|
|
272
|
+
if (response.ok) {
|
|
273
|
+
return response.json();
|
|
274
|
+
}
|
|
275
|
+
const errorText = await response.text();
|
|
276
|
+
if (response.status === 429 && attempt < maxRetries - 1) {
|
|
277
|
+
const waitTime = Math.min(initialBackoffMs * Math.pow(backoffMultiplier, attempt), maxBackoffMs);
|
|
278
|
+
await new Promise(resolve => setTimeout(resolve, waitTime));
|
|
279
|
+
continue;
|
|
280
|
+
}
|
|
281
|
+
lastError = new Error(`OpenAI API error (${response.status}): ${errorText.substring(0, 200)}`);
|
|
282
|
+
break;
|
|
283
|
+
}
|
|
284
|
+
catch (fetchError) {
|
|
285
|
+
clearTimeout(timeoutId);
|
|
286
|
+
lastError = fetchError instanceof Error ? fetchError : new Error(String(fetchError));
|
|
287
|
+
if (attempt < maxRetries - 1) {
|
|
288
|
+
await new Promise(resolve => setTimeout(resolve, initialBackoffMs));
|
|
289
|
+
continue;
|
|
290
|
+
}
|
|
291
|
+
}
|
|
264
292
|
}
|
|
265
|
-
|
|
293
|
+
throw lastError || new Error('OpenAI API call failed');
|
|
266
294
|
}
|
|
267
|
-
async function loadAstridMd(repoPath) {
|
|
295
|
+
async function loadAstridMd(repoPath, maxLength) {
|
|
268
296
|
try {
|
|
269
297
|
const content = await fs.readFile(path.join(repoPath, 'ASTRID.md'), 'utf-8');
|
|
270
|
-
return content.length >
|
|
298
|
+
return content.length > maxLength ? content.substring(0, maxLength) + '\n\n[truncated...]' : content;
|
|
271
299
|
}
|
|
272
300
|
catch {
|
|
273
301
|
return null;
|
|
@@ -276,25 +304,34 @@ async function loadAstridMd(repoPath) {
|
|
|
276
304
|
// ============================================================================
|
|
277
305
|
// PLANNING
|
|
278
306
|
// ============================================================================
|
|
279
|
-
async function planWithOpenAI(taskTitle, taskDescription,
|
|
280
|
-
const log =
|
|
281
|
-
const onProgress =
|
|
282
|
-
const model =
|
|
283
|
-
log('info', 'Starting OpenAI planning', { repoPath:
|
|
307
|
+
async function planWithOpenAI(taskTitle, taskDescription, executorConfig) {
|
|
308
|
+
const log = executorConfig.logger || (() => { });
|
|
309
|
+
const onProgress = executorConfig.onProgress || (() => { });
|
|
310
|
+
const model = executorConfig.model || agent_config_js_1.DEFAULT_MODELS.openai;
|
|
311
|
+
log('info', 'Starting OpenAI planning', { repoPath: executorConfig.repoPath, taskTitle });
|
|
284
312
|
onProgress('Initializing OpenAI for planning...');
|
|
285
|
-
|
|
313
|
+
// Load config
|
|
314
|
+
const config = await (0, index_js_1.loadAstridConfig)(executorConfig.repoPath);
|
|
315
|
+
const platform = (0, index_js_1.detectPlatform)(config, taskTitle, taskDescription || '');
|
|
316
|
+
const initialPattern = (0, index_js_1.getInitialGlobPattern)(config, platform);
|
|
317
|
+
const astridMd = await loadAstridMd(executorConfig.repoPath, config.validation.contextTruncationLength);
|
|
318
|
+
const structurePrompt = (0, index_js_1.generateStructurePrompt)(config);
|
|
319
|
+
const platformHints = (0, index_js_1.generatePlatformHints)(platform);
|
|
286
320
|
const systemPrompt = `You are an AI coding assistant analyzing a codebase to create an implementation plan.
|
|
287
321
|
|
|
322
|
+
${structurePrompt}
|
|
323
|
+
${platformHints}
|
|
288
324
|
${astridMd ? `## Project Context\n${astridMd}\n` : ''}
|
|
325
|
+
${config.customInstructions ? `## Custom Instructions\n${config.customInstructions}\n` : ''}
|
|
289
326
|
|
|
290
327
|
## Your Task
|
|
291
|
-
|
|
328
|
+
Create an implementation plan for: "${taskTitle}"
|
|
292
329
|
${taskDescription ? `\nDetails: ${taskDescription}` : ''}
|
|
293
330
|
|
|
294
331
|
## Instructions
|
|
295
332
|
1. Use glob_files and grep_search to explore the codebase
|
|
296
333
|
2. Use read_file to examine relevant files
|
|
297
|
-
3. Create a focused implementation plan
|
|
334
|
+
3. Create a focused implementation plan (max ${config.validation.maxFilesPerPlan} files)
|
|
298
335
|
|
|
299
336
|
When ready, respond with ONLY a JSON block:
|
|
300
337
|
\`\`\`json
|
|
@@ -307,18 +344,23 @@ When ready, respond with ONLY a JSON block:
|
|
|
307
344
|
}
|
|
308
345
|
\`\`\`
|
|
309
346
|
|
|
310
|
-
RULES: Maximum
|
|
347
|
+
RULES: Maximum ${config.validation.maxFilesPerPlan} files, be SURGICAL.`;
|
|
311
348
|
const messages = [
|
|
312
349
|
{ role: 'system', content: systemPrompt },
|
|
313
|
-
{ role: 'user', content: `
|
|
350
|
+
{ role: 'user', content: `Start by calling glob_files with pattern "${initialPattern}" to find relevant files, then create an implementation plan for: ${taskTitle}` }
|
|
314
351
|
];
|
|
315
352
|
let totalInputTokens = 0;
|
|
316
353
|
let totalOutputTokens = 0;
|
|
317
|
-
const maxIterations =
|
|
354
|
+
const maxIterations = executorConfig.maxIterations || config.agent.maxPlanningIterations;
|
|
355
|
+
const timeoutMs = config.agent.planningTimeoutMinutes * 60 * 1000;
|
|
356
|
+
const startTime = Date.now();
|
|
318
357
|
try {
|
|
319
358
|
for (let i = 0; i < maxIterations; i++) {
|
|
359
|
+
if (Date.now() - startTime > timeoutMs) {
|
|
360
|
+
return { success: false, error: `Planning timed out after ${config.agent.planningTimeoutMinutes} minutes` };
|
|
361
|
+
}
|
|
320
362
|
onProgress(`Planning iteration ${i + 1}...`);
|
|
321
|
-
const response = await callOpenAI(messages,
|
|
363
|
+
const response = await callOpenAI(messages, executorConfig.apiKey, model, config);
|
|
322
364
|
totalInputTokens += response.usage.prompt_tokens;
|
|
323
365
|
totalOutputTokens += response.usage.completion_tokens;
|
|
324
366
|
const choice = response.choices[0];
|
|
@@ -332,10 +374,10 @@ RULES: Maximum 5 files, be SURGICAL.`;
|
|
|
332
374
|
for (const toolCall of assistantMessage.tool_calls) {
|
|
333
375
|
const args = JSON.parse(toolCall.function.arguments);
|
|
334
376
|
onProgress(`Using tool: ${toolCall.function.name}`);
|
|
335
|
-
const result = await executeTool(toolCall.function.name, args,
|
|
377
|
+
const result = await executeTool(toolCall.function.name, args, executorConfig.repoPath, config);
|
|
336
378
|
messages.push({
|
|
337
379
|
role: 'tool',
|
|
338
|
-
content: result.result.substring(0,
|
|
380
|
+
content: result.result.substring(0, config.validation.contextTruncationLength),
|
|
339
381
|
tool_call_id: toolCall.id
|
|
340
382
|
});
|
|
341
383
|
}
|
|
@@ -346,6 +388,13 @@ RULES: Maximum 5 files, be SURGICAL.`;
|
|
|
346
388
|
if (jsonMatch) {
|
|
347
389
|
try {
|
|
348
390
|
const plan = JSON.parse(jsonMatch[1]);
|
|
391
|
+
if (!plan.files || plan.files.length === 0) {
|
|
392
|
+
messages.push({
|
|
393
|
+
role: 'user',
|
|
394
|
+
content: 'Your plan has no files. You MUST use glob_files and read_file first, then provide a plan with specific files. Please call glob_files now.'
|
|
395
|
+
});
|
|
396
|
+
continue;
|
|
397
|
+
}
|
|
349
398
|
return {
|
|
350
399
|
success: true,
|
|
351
400
|
plan,
|
|
@@ -360,12 +409,19 @@ RULES: Maximum 5 files, be SURGICAL.`;
|
|
|
360
409
|
log('warn', 'Failed to parse plan JSON', {});
|
|
361
410
|
}
|
|
362
411
|
}
|
|
412
|
+
if (i === 0) {
|
|
413
|
+
messages.push({
|
|
414
|
+
role: 'user',
|
|
415
|
+
content: 'You must use the tools to explore the codebase. Please call glob_files with an appropriate pattern.'
|
|
416
|
+
});
|
|
417
|
+
continue;
|
|
418
|
+
}
|
|
363
419
|
}
|
|
364
420
|
if (choice.finish_reason === 'stop') {
|
|
365
|
-
messages.push({ role: 'user', content: 'Please provide the implementation plan as a JSON block.' });
|
|
421
|
+
messages.push({ role: 'user', content: 'Please provide the implementation plan as a JSON block with at least one file.' });
|
|
366
422
|
}
|
|
367
423
|
}
|
|
368
|
-
return { success: false, error: 'Max iterations reached
|
|
424
|
+
return { success: false, error: 'Max iterations reached' };
|
|
369
425
|
}
|
|
370
426
|
catch (error) {
|
|
371
427
|
return { success: false, error: error instanceof Error ? error.message : String(error) };
|
|
@@ -374,16 +430,24 @@ RULES: Maximum 5 files, be SURGICAL.`;
|
|
|
374
430
|
// ============================================================================
|
|
375
431
|
// EXECUTION
|
|
376
432
|
// ============================================================================
|
|
377
|
-
async function executeWithOpenAI(plan, taskTitle, taskDescription,
|
|
378
|
-
const log =
|
|
379
|
-
const onProgress =
|
|
380
|
-
const model =
|
|
381
|
-
log('info', 'Starting OpenAI execution', { repoPath:
|
|
433
|
+
async function executeWithOpenAI(plan, taskTitle, taskDescription, executorConfig) {
|
|
434
|
+
const log = executorConfig.logger || (() => { });
|
|
435
|
+
const onProgress = executorConfig.onProgress || (() => { });
|
|
436
|
+
const model = executorConfig.model || agent_config_js_1.DEFAULT_MODELS.openai;
|
|
437
|
+
log('info', 'Starting OpenAI execution', { repoPath: executorConfig.repoPath, filesInPlan: plan.files.length });
|
|
382
438
|
onProgress('Initializing OpenAI agent...');
|
|
383
|
-
|
|
439
|
+
// Load config
|
|
440
|
+
const config = await (0, index_js_1.loadAstridConfig)(executorConfig.repoPath);
|
|
441
|
+
const platform = (0, index_js_1.detectPlatform)(config, taskTitle, taskDescription || '');
|
|
442
|
+
const astridMd = await loadAstridMd(executorConfig.repoPath, config.validation.contextTruncationLength);
|
|
443
|
+
const structurePrompt = (0, index_js_1.generateStructurePrompt)(config);
|
|
444
|
+
const platformHints = (0, index_js_1.generatePlatformHints)(platform);
|
|
384
445
|
const systemPrompt = `You are an AI coding assistant implementing changes to a codebase.
|
|
385
446
|
|
|
447
|
+
${structurePrompt}
|
|
448
|
+
${platformHints}
|
|
386
449
|
${astridMd ? `## Project Context\n${astridMd}\n` : ''}
|
|
450
|
+
${config.customInstructions ? `## Custom Instructions\n${config.customInstructions}\n` : ''}
|
|
387
451
|
|
|
388
452
|
## Task
|
|
389
453
|
Implement: "${taskTitle}"
|
|
@@ -393,14 +457,14 @@ ${taskDescription ? `\nDetails: ${taskDescription}` : ''}
|
|
|
393
457
|
${JSON.stringify(plan, null, 2)}
|
|
394
458
|
|
|
395
459
|
## Instructions
|
|
396
|
-
1. Read the files
|
|
397
|
-
2. Make the necessary changes
|
|
460
|
+
1. Read the files in the plan
|
|
461
|
+
2. Make the necessary changes
|
|
398
462
|
3. Run tests if available
|
|
399
|
-
4.
|
|
463
|
+
4. Call task_complete when done
|
|
400
464
|
|
|
401
465
|
## Rules
|
|
402
|
-
- Follow the
|
|
403
|
-
- Make minimal
|
|
466
|
+
- Follow the plan exactly
|
|
467
|
+
- Make minimal changes
|
|
404
468
|
- Test your changes`;
|
|
405
469
|
const messages = [
|
|
406
470
|
{ role: 'system', content: systemPrompt },
|
|
@@ -409,11 +473,29 @@ ${JSON.stringify(plan, null, 2)}
|
|
|
409
473
|
const fileChanges = new Map();
|
|
410
474
|
let totalInputTokens = 0;
|
|
411
475
|
let totalOutputTokens = 0;
|
|
412
|
-
const maxIterations =
|
|
476
|
+
const maxIterations = executorConfig.maxIterations || config.agent.maxExecutionIterations;
|
|
477
|
+
const timeoutMs = config.agent.executionTimeoutMinutes * 60 * 1000;
|
|
478
|
+
const startTime = Date.now();
|
|
413
479
|
try {
|
|
414
480
|
for (let i = 0; i < maxIterations; i++) {
|
|
481
|
+
if (Date.now() - startTime > timeoutMs) {
|
|
482
|
+
const files = Array.from(fileChanges.entries()).map(([p, c]) => ({ path: p, ...c }));
|
|
483
|
+
return {
|
|
484
|
+
success: files.length > 0,
|
|
485
|
+
files,
|
|
486
|
+
commitMessage: `feat: ${taskTitle}`,
|
|
487
|
+
prTitle: `feat: ${taskTitle}`,
|
|
488
|
+
prDescription: taskDescription || taskTitle,
|
|
489
|
+
error: `Execution timed out after ${config.agent.executionTimeoutMinutes} minutes`,
|
|
490
|
+
usage: {
|
|
491
|
+
inputTokens: totalInputTokens,
|
|
492
|
+
outputTokens: totalOutputTokens,
|
|
493
|
+
costUSD: (totalInputTokens * 0.0025 + totalOutputTokens * 0.01) / 1000
|
|
494
|
+
}
|
|
495
|
+
};
|
|
496
|
+
}
|
|
415
497
|
onProgress(`Implementation iteration ${i + 1}...`);
|
|
416
|
-
const response = await callOpenAI(messages,
|
|
498
|
+
const response = await callOpenAI(messages, executorConfig.apiKey, model, config);
|
|
417
499
|
totalInputTokens += response.usage.prompt_tokens;
|
|
418
500
|
totalOutputTokens += response.usage.completion_tokens;
|
|
419
501
|
const choice = response.choices[0];
|
|
@@ -429,11 +511,7 @@ ${JSON.stringify(plan, null, 2)}
|
|
|
429
511
|
const toolName = toolCall.function.name;
|
|
430
512
|
onProgress(`Using tool: ${toolName}`);
|
|
431
513
|
if (toolName === 'task_complete') {
|
|
432
|
-
const files = Array.from(fileChanges.entries()).map(([p,
|
|
433
|
-
path: p,
|
|
434
|
-
content: change.content,
|
|
435
|
-
action: change.action
|
|
436
|
-
}));
|
|
514
|
+
const files = Array.from(fileChanges.entries()).map(([p, c]) => ({ path: p, ...c }));
|
|
437
515
|
return {
|
|
438
516
|
success: true,
|
|
439
517
|
files,
|
|
@@ -447,7 +525,7 @@ ${JSON.stringify(plan, null, 2)}
|
|
|
447
525
|
}
|
|
448
526
|
};
|
|
449
527
|
}
|
|
450
|
-
const result = await executeTool(toolName, args,
|
|
528
|
+
const result = await executeTool(toolName, args, executorConfig.repoPath, config);
|
|
451
529
|
if (result.fileChange) {
|
|
452
530
|
fileChanges.set(result.fileChange.path, {
|
|
453
531
|
content: result.fileChange.content,
|
|
@@ -456,7 +534,7 @@ ${JSON.stringify(plan, null, 2)}
|
|
|
456
534
|
}
|
|
457
535
|
messages.push({
|
|
458
536
|
role: 'tool',
|
|
459
|
-
content: result.result.substring(0,
|
|
537
|
+
content: result.result.substring(0, config.validation.contextTruncationLength),
|
|
460
538
|
tool_call_id: toolCall.id
|
|
461
539
|
});
|
|
462
540
|
}
|
|
@@ -465,15 +543,11 @@ ${JSON.stringify(plan, null, 2)}
|
|
|
465
543
|
if (choice.finish_reason === 'stop') {
|
|
466
544
|
messages.push({
|
|
467
545
|
role: 'user',
|
|
468
|
-
content: 'Please call task_complete to finalize
|
|
546
|
+
content: 'Please call task_complete to finalize.'
|
|
469
547
|
});
|
|
470
548
|
}
|
|
471
549
|
}
|
|
472
|
-
const files = Array.from(fileChanges.entries()).map(([p,
|
|
473
|
-
path: p,
|
|
474
|
-
content: change.content,
|
|
475
|
-
action: change.action
|
|
476
|
-
}));
|
|
550
|
+
const files = Array.from(fileChanges.entries()).map(([p, c]) => ({ path: p, ...c }));
|
|
477
551
|
return {
|
|
478
552
|
success: files.length > 0,
|
|
479
553
|
files,
|