@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.
@@ -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 these tools - USE THEM by calling the functions (don't just write about them):
276
- - glob_files: Find files by pattern (e.g., "**/*.md", "docs/**/*")
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
- FIRST: Call glob_files or grep_search to explore the codebase.
281
- THEN: Call read_file on relevant files you find.
282
- FINALLY: After exploring, output your plan as JSON.
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":";AAAA;;;;GAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwTH,wCA0JC;AAMD,8CAyJC;AA/mBD,gDAAiC;AACjC,2CAA4B;AAC5B,iDAAwC;AACxC,+BAA2B;AAQ3B,8DAAyD;AA4BzD,+EAA+E;AAC/E,mBAAmB;AACnB,+EAA+E;AAE/E,MAAM,iBAAiB,GAAG;IACxB;QACE,IAAI,EAAE,WAAW;QACjB,WAAW,EAAE,6BAA6B;QAC1C,UAAU,EAAE;YACV,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,kBAAkB,EAAE;aAC/D;YACD,QAAQ,EAAE,CAAC,WAAW,CAAC;SACxB;KACF;IACD;QACE,IAAI,EAAE,YAAY;QAClB,WAAW,EAAE,iDAAiD;QAC9D,UAAU,EAAE;YACV,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,kBAAkB,EAAE;gBAC9D,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,kBAAkB,EAAE;aAC7D;YACD,QAAQ,EAAE,CAAC,WAAW,EAAE,SAAS,CAAC;SACnC;KACF;IACD;QACE,IAAI,EAAE,WAAW;QACjB,WAAW,EAAE,qDAAqD;QAClE,UAAU,EAAE;YACV,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,kBAAkB,EAAE;gBAC9D,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,gBAAgB,EAAE;gBAC7D,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,oBAAoB,EAAE;aAClE;YACD,QAAQ,EAAE,CAAC,WAAW,EAAE,YAAY,EAAE,YAAY,CAAC;SACpD;KACF;IACD;QACE,IAAI,EAAE,UAAU;QAChB,WAAW,EAAE,oBAAoB;QACjC,UAAU,EAAE;YACV,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,kBAAkB,EAAE;aAC7D;YACD,QAAQ,EAAE,CAAC,SAAS,CAAC;SACtB;KACF;IACD;QACE,IAAI,EAAE,YAAY;QAClB,WAAW,EAAE,oCAAoC;QACjD,UAAU,EAAE;YACV,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,cAAc,EAAE;aACzD;YACD,QAAQ,EAAE,CAAC,SAAS,CAAC;SACtB;KACF;IACD;QACE,IAAI,EAAE,aAAa;QACnB,WAAW,EAAE,+BAA+B;QAC5C,UAAU,EAAE;YACV,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,gBAAgB,EAAE;gBAC1D,YAAY,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,uBAAuB,EAAE;aACvE;YACD,QAAQ,EAAE,CAAC,SAAS,CAAC;SACtB;KACF;IACD;QACE,IAAI,EAAE,eAAe;QACrB,WAAW,EAAE,wBAAwB;QACrC,UAAU,EAAE;YACV,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,cAAc,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,oBAAoB,EAAE;gBACrE,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,UAAU,EAAE;gBACrD,cAAc,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,gBAAgB,EAAE;aAClE;YACD,QAAQ,EAAE,CAAC,gBAAgB,EAAE,UAAU,EAAE,gBAAgB,CAAC;SAC3D;KACF;CACF,CAAA;AAYD,KAAK,UAAU,WAAW,CACxB,IAAY,EACZ,IAA6B,EAC7B,QAAgB;IAEhB,IAAI,CAAC;QACH,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,WAAW,CAAC,CAAC,CAAC;gBACjB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAmB,CAAC,CAAA;gBAC9D,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;gBACpD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAA;YAC3C,CAAC;YAED,KAAK,YAAY,CAAC,CAAC,CAAC;gBAClB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAmB,CAAC,CAAA;gBAC9D,MAAM,OAAO,GAAG,IAAI,CAAC,OAAiB,CAAA;gBACtC,IAAI,MAAM,GAAwB,QAAQ,CAAA;gBAC1C,IAAI,CAAC;oBACH,MAAM,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;oBACzB,MAAM,GAAG,QAAQ,CAAA;gBACnB,CAAC;gBAAC,MAAM,CAAC;oBACP,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;gBAC7D,CAAC;gBACD,MAAM,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;gBAC9C,OAAO;oBACL,OAAO,EAAE,IAAI;oBACb,MAAM,EAAE,QAAQ,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,KAAK,IAAI,CAAC,SAAS,EAAE;oBAChF,UAAU,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,SAAmB,EAAE,OAAO,EAAE,MAAM,EAAE;iBAChE,CAAA;YACH,CAAC;YAED,KAAK,WAAW,CAAC,CAAC,CAAC;gBACjB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAmB,CAAC,CAAA;gBAC9D,MAAM,UAAU,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;gBACvD,MAAM,SAAS,GAAG,IAAI,CAAC,UAAoB,CAAA;gBAC3C,MAAM,SAAS,GAAG,IAAI,CAAC,UAAoB,CAAA;gBAC3C,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;oBACpC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,sCAAsC,EAAE,CAAA;gBAC3E,CAAC;gBACD,MAAM,UAAU,GAAG,UAAU,CAAC,OAAO,CAAC,SAAS,EAAE,SAAS,CAAC,CAAA;gBAC3D,MAAM,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,UAAU,EAAE,OAAO,CAAC,CAAA;gBACjD,OAAO;oBACL,OAAO,EAAE,IAAI;oBACb,MAAM,EAAE,gBAAgB,IAAI,CAAC,SAAS,EAAE;oBACxC,UAAU,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,SAAmB,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE;iBACtF,CAAA;YACH,CAAC;YAED,KAAK,UAAU,CAAC,CAAC,CAAC;gBAChB,MAAM,OAAO,GAAG,IAAI,CAAC,OAAiB,CAAA;gBACtC,MAAM,SAAS,GAAG,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAA;gBACnE,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;oBAC7C,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,kCAAkC,EAAE,CAAA;gBACvE,CAAC;gBACD,IAAI,CAAC;oBACH,MAAM,MAAM,GAAG,IAAA,wBAAQ,EAAC,OAAO,EAAE;wBAC/B,GAAG,EAAE,QAAQ;wBACb,QAAQ,EAAE,OAAO;wBACjB,OAAO,EAAE,KAAK;wBACd,SAAS,EAAE,IAAI,GAAG,IAAI;qBACvB,CAAC,CAAA;oBACF,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,IAAI,aAAa,EAAE,CAAA;gBAC3D,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,MAAM,GAAG,GAAG,KAA8C,CAAA;oBAC1D,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,OAAO,EAAE,EAAE,CAAA;gBAC1E,CAAC;YACH,CAAC;YAED,KAAK,YAAY,CAAC,CAAC,CAAC;gBAClB,MAAM,OAAO,GAAG,IAAI,CAAC,OAAiB,CAAA;gBACtC,MAAM,KAAK,GAAG,MAAM,IAAA,WAAI,EAAC,OAAO,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;gBACjE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,cAAc,EAAE,CAAA;YACpF,CAAC;YAED,KAAK,aAAa,CAAC,CAAC,CAAC;gBACnB,MAAM,OAAO,GAAG,IAAI,CAAC,OAAiB,CAAA;gBACtC,MAAM,WAAW,GAAI,IAAI,CAAC,YAAuB,IAAI,GAAG,CAAA;gBACxD,IAAI,CAAC;oBACH,MAAM,MAAM,GAAG,IAAA,wBAAQ,EACrB,aAAa,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,WAAW,aAAa,EACtE,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CACrD,CAAA;oBACD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,IAAI,cAAc,EAAE,CAAA;gBAC5D,CAAC;gBAAC,MAAM,CAAC;oBACP,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE,CAAA;gBAClD,CAAC;YACH,CAAC;YAED,KAAK,eAAe;gBAClB,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,sBAAsB,EAAE,CAAA;YAE1D;gBACE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,iBAAiB,IAAI,EAAE,EAAE,CAAA;QAC9D,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,CAAA;IACvG,CAAC;AACH,CAAC;AA6BD,KAAK,UAAU,UAAU,CACvB,QAAyB,EACzB,iBAAyB,EACzB,MAAc,EACd,KAAa;IAEb,MAAM,GAAG,GAAG,2DAA2D,KAAK,wBAAwB,MAAM,EAAE,CAAA;IAE5G,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;QAChC,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;QAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;YACnB,iBAAiB,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,EAAE;YAC3D,QAAQ;YACR,KAAK,EAAE,CAAC,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,CAAC;YACpD,UAAU,EAAE;gBACV,qBAAqB,EAAE;oBACrB,IAAI,EAAE,MAAM;iBACb;aACF;YACD,gBAAgB,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE;SAC9D,CAAC;KACH,CAAC,CAAA;IAEF,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;QACnC,MAAM,IAAI,KAAK,CAAC,qBAAqB,KAAK,EAAE,CAAC,CAAA;IAC/C,CAAC;IAED,OAAO,QAAQ,CAAC,IAAI,EAA6B,CAAA;AACnD,CAAC;AAED,KAAK,UAAU,YAAY,CAAC,QAAgB;IAC1C,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,EAAE,OAAO,CAAC,CAAA;QAC5E,OAAO,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,oBAAoB,CAAC,CAAC,CAAC,OAAO,CAAA;IAC5F,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAA;IACb,CAAC;AACH,CAAC;AAED,+EAA+E;AAC/E,WAAW;AACX,+EAA+E;AAExE,KAAK,UAAU,cAAc,CAClC,SAAiB,EACjB,eAA8B,EAC9B,MAA4B;IAE5B,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,IAAI,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;IACvC,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,IAAI,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;IAClD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,gCAAc,CAAC,MAAM,CAAA;IAEnD,GAAG,CAAC,MAAM,EAAE,0BAA0B,EAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAA;IACjF,UAAU,CAAC,qCAAqC,CAAC,CAAA;IAEjD,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;IAEpD,MAAM,iBAAiB,GAAG;;EAE1B,QAAQ,CAAC,CAAC,CAAC,uBAAuB,QAAQ,IAAI,CAAC,CAAC,CAAC,EAAE;;;sCAGf,SAAS;EAC7C,eAAe,CAAC,CAAC,CAAC,cAAc,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gDAgCR,CAAA;IAE9C,MAAM,QAAQ,GAAoB;QAChC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,+FAA+F,SAAS,EAAE,EAAE,CAAC,EAAE;KAChJ,CAAA;IAED,IAAI,gBAAgB,GAAG,CAAC,CAAA;IACxB,IAAI,iBAAiB,GAAG,CAAC,CAAA;IACzB,MAAM,aAAa,GAAG,MAAM,CAAC,aAAa,IAAI,EAAE,CAAA;IAEhD,IAAI,CAAC;QACH,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,EAAE,CAAC,EAAE,EAAE,CAAC;YACvC,UAAU,CAAC,sBAAsB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;YAE5C,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,QAAQ,EAAE,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;YACpF,gBAAgB,IAAI,QAAQ,CAAC,aAAa,EAAE,gBAAgB,IAAI,CAAC,CAAA;YACjE,iBAAiB,IAAI,QAAQ,CAAC,aAAa,EAAE,oBAAoB,IAAI,CAAC,CAAA;YAEtE,MAAM,SAAS,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA;YACxC,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,yBAAyB,EAAE,CAAA;YAC7D,CAAC;YAED,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAA;YAEhE,MAAM,aAAa,GAAG,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAA;YAEzE,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC7B,MAAM,iBAAiB,GAA2B,EAAE,CAAA;gBAEpD,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE,CAAC;oBACjC,IAAI,CAAC,IAAI,CAAC,YAAY;wBAAE,SAAQ;oBAChC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,YAAY,CAAA;oBACxC,UAAU,CAAC,eAAe,IAAI,EAAE,CAAC,CAAA;oBACjC,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAA;oBAC7D,iBAAiB,CAAC,IAAI,CAAC;wBACrB,gBAAgB,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE;qBACpF,CAAC,CAAA;gBACJ,CAAC;gBAED,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,iBAAiB,EAAE,CAAC,CAAA;gBACzD,SAAQ;YACV,CAAC;YAED,MAAM,QAAQ,GAAG,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;YAC1D,IAAI,QAAQ,EAAE,IAAI,EAAE,CAAC;gBACnB,MAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAA;gBACnE,IAAI,SAAS,EAAE,CAAC;oBACd,IAAI,CAAC;wBACH,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAuB,CAAA;wBAE3D,oCAAoC;wBACpC,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;4BAC3C,GAAG,CAAC,MAAM,EAAE,iDAAiD,EAAE,EAAE,CAAC,CAAA;4BAClE,QAAQ,CAAC,IAAI,CAAC;gCACZ,IAAI,EAAE,MAAM;gCACZ,KAAK,EAAE,CAAC;wCACN,IAAI,EAAE,2OAA2O;qCAClP,CAAC;6BACH,CAAC,CAAA;4BACF,SAAQ;wBACV,CAAC;wBAED,OAAO;4BACL,OAAO,EAAE,IAAI;4BACb,IAAI;4BACJ,KAAK,EAAE;gCACL,WAAW,EAAE,gBAAgB;gCAC7B,YAAY,EAAE,iBAAiB;gCAC/B,OAAO,EAAE,CAAC,gBAAgB,GAAG,OAAO,GAAG,iBAAiB,GAAG,KAAK,CAAC,GAAG,IAAI;6BACzE;yBACF,CAAA;oBACH,CAAC;oBAAC,MAAM,CAAC;wBACP,GAAG,CAAC,MAAM,EAAE,2BAA2B,EAAE,EAAE,CAAC,CAAA;oBAC9C,CAAC;gBACH,CAAC;gBAED,qEAAqE;gBACrE,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;oBACZ,GAAG,CAAC,MAAM,EAAE,sEAAsE,EAAE,EAAE,CAAC,CAAA;oBACvF,QAAQ,CAAC,IAAI,CAAC;wBACZ,IAAI,EAAE,MAAM;wBACZ,KAAK,EAAE,CAAC;gCACN,IAAI,EAAE,8MAA8M;6BACrN,CAAC;qBACH,CAAC,CAAA;oBACF,SAAQ;gBACV,CAAC;YACH,CAAC;YAED,IAAI,SAAS,CAAC,YAAY,KAAK,MAAM,EAAE,CAAC;gBACtC,QAAQ,CAAC,IAAI,CAAC;oBACZ,IAAI,EAAE,MAAM;oBACZ,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,0FAA0F,EAAE,CAAC;iBAC9G,CAAC,CAAA;YACJ,CAAC;QACH,CAAC;QAED,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,wBAAwB,EAAE,CAAA;IAC5D,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAA;IAC1F,CAAC;AACH,CAAC;AAED,+EAA+E;AAC/E,YAAY;AACZ,+EAA+E;AAExE,KAAK,UAAU,iBAAiB,CACrC,IAAwB,EACxB,SAAiB,EACjB,eAA8B,EAC9B,MAA4B;IAE5B,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,IAAI,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;IACvC,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,IAAI,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;IAClD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,gCAAc,CAAC,MAAM,CAAA;IAEnD,GAAG,CAAC,MAAM,EAAE,2BAA2B,EAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAA;IACvG,UAAU,CAAC,8BAA8B,CAAC,CAAA;IAE1C,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;IAEpD,MAAM,iBAAiB,GAAG;;EAE1B,QAAQ,CAAC,CAAC,CAAC,uBAAuB,QAAQ,IAAI,CAAC,CAAC,CAAC,EAAE;;;cAGvC,SAAS;EACrB,eAAe,CAAC,CAAC,CAAC,cAAc,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE;;;EAGtD,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;;;;;;;;;;;oBAWX,CAAA;IAElB,MAAM,QAAQ,GAAoB;QAChC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,qDAAqD,EAAE,CAAC,EAAE;KAC3F,CAAA;IAED,MAAM,WAAW,GAA6E,IAAI,GAAG,EAAE,CAAA;IACvG,IAAI,gBAAgB,GAAG,CAAC,CAAA;IACxB,IAAI,iBAAiB,GAAG,CAAC,CAAA;IACzB,MAAM,aAAa,GAAG,MAAM,CAAC,aAAa,IAAI,EAAE,CAAA;IAEhD,IAAI,CAAC;QACH,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,EAAE,CAAC,EAAE,EAAE,CAAC;YACvC,UAAU,CAAC,4BAA4B,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;YAElD,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,QAAQ,EAAE,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;YACpF,gBAAgB,IAAI,QAAQ,CAAC,aAAa,EAAE,gBAAgB,IAAI,CAAC,CAAA;YACjE,iBAAiB,IAAI,QAAQ,CAAC,aAAa,EAAE,oBAAoB,IAAI,CAAC,CAAA;YAEtE,MAAM,SAAS,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA;YACxC,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE,EAAE;oBACT,aAAa,EAAE,EAAE;oBACjB,OAAO,EAAE,EAAE;oBACX,aAAa,EAAE,EAAE;oBACjB,KAAK,EAAE,yBAAyB;iBACjC,CAAA;YACH,CAAC;YAED,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAA;YAEhE,MAAM,aAAa,GAAG,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAA;YAEzE,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC7B,MAAM,iBAAiB,GAA2B,EAAE,CAAA;gBAEpD,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE,CAAC;oBACjC,IAAI,CAAC,IAAI,CAAC,YAAY;wBAAE,SAAQ;oBAChC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,YAAY,CAAA;oBACxC,UAAU,CAAC,eAAe,IAAI,EAAE,CAAC,CAAA;oBAEjC,IAAI,IAAI,KAAK,eAAe,EAAE,CAAC;wBAC7B,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;4BACpE,IAAI,EAAE,CAAC;4BACP,OAAO,EAAE,MAAM,CAAC,OAAO;4BACvB,MAAM,EAAE,MAAM,CAAC,MAAM;yBACtB,CAAC,CAAC,CAAA;wBAEH,OAAO;4BACL,OAAO,EAAE,IAAI;4BACb,KAAK;4BACL,aAAa,EAAG,IAAI,CAAC,cAAyB,IAAI,SAAS,SAAS,EAAE;4BACtE,OAAO,EAAG,IAAI,CAAC,QAAmB,IAAI,SAAS,SAAS,EAAE;4BAC1D,aAAa,EAAG,IAAI,CAAC,cAAyB,IAAI,eAAe,IAAI,SAAS;4BAC9E,KAAK,EAAE;gCACL,WAAW,EAAE,gBAAgB;gCAC7B,YAAY,EAAE,iBAAiB;gCAC/B,OAAO,EAAE,CAAC,gBAAgB,GAAG,OAAO,GAAG,iBAAiB,GAAG,KAAK,CAAC,GAAG,IAAI;6BACzE;yBACF,CAAA;oBACH,CAAC;oBAED,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAA;oBAC7D,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;wBACtB,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE;4BACtC,OAAO,EAAE,MAAM,CAAC,UAAU,CAAC,OAAO;4BAClC,MAAM,EAAE,MAAM,CAAC,UAAU,CAAC,MAAM;yBACjC,CAAC,CAAA;oBACJ,CAAC;oBAED,iBAAiB,CAAC,IAAI,CAAC;wBACrB,gBAAgB,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE;qBACpF,CAAC,CAAA;gBACJ,CAAC;gBAED,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,iBAAiB,EAAE,CAAC,CAAA;gBACzD,SAAQ;YACV,CAAC;YAED,IAAI,SAAS,CAAC,YAAY,KAAK,MAAM,EAAE,CAAC;gBACtC,QAAQ,CAAC,IAAI,CAAC;oBACZ,IAAI,EAAE,MAAM;oBACZ,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,wCAAwC,EAAE,CAAC;iBAC5D,CAAC,CAAA;YACJ,CAAC;QACH,CAAC;QAED,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;YACpE,IAAI,EAAE,CAAC;YACP,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,MAAM,EAAE,MAAM,CAAC,MAAM;SACtB,CAAC,CAAC,CAAA;QAEH,OAAO;YACL,OAAO,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC;YACzB,KAAK;YACL,aAAa,EAAE,SAAS,SAAS,EAAE;YACnC,OAAO,EAAE,SAAS,SAAS,EAAE;YAC7B,aAAa,EAAE,eAAe,IAAI,SAAS;YAC3C,KAAK,EAAE,wBAAwB;YAC/B,KAAK,EAAE;gBACL,WAAW,EAAE,gBAAgB;gBAC7B,YAAY,EAAE,iBAAiB;gBAC/B,OAAO,EAAE,CAAC,gBAAgB,GAAG,OAAO,GAAG,iBAAiB,GAAG,KAAK,CAAC,GAAG,IAAI;aACzE;SACF,CAAA;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;YACL,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,EAAE;YACT,aAAa,EAAE,EAAE;YACjB,OAAO,EAAE,EAAE;YACX,aAAa,EAAE,EAAE;YACjB,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;SAC9D,CAAA;IACH,CAAC;AACH,CAAC"}
@@ -1,24 +1,17 @@
1
1
  /**
2
2
  * OpenAI Agent Executor
3
3
  *
4
- * Executes code implementation using OpenAI's function calling API.
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, config: OpenAIExecutorConfig): Promise<PlanningResult>;
23
- export declare function executeWithOpenAI(plan: ImplementationPlan, taskTitle: string, taskDescription: string | null, config: OpenAIExecutorConfig): Promise<ExecutionResult>;
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;;;;;GAKG;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;AAsSD,wBAAsB,cAAc,CAClC,SAAS,EAAE,MAAM,EACjB,eAAe,EAAE,MAAM,GAAG,IAAI,EAC9B,MAAM,EAAE,oBAAoB,GAC3B,OAAO,CAAC,cAAc,CAAC,CAyGzB;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,CA6I1B"}
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"}
@@ -2,8 +2,7 @@
2
2
  /**
3
3
  * OpenAI Agent Executor
4
4
  *
5
- * Executes code implementation using OpenAI's function calling API.
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 relative to repository root' }
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 (creates or overwrites)',
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 and replace' },
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 in the repository',
102
+ description: 'Run a bash command',
103
103
  parameters: {
104
104
  type: 'object',
105
105
  properties: {
106
- command: { type: 'string', description: 'The bash command to run' }
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 (e.g., "**/*.ts")' }
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 to limit search' }
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: 'Pull request title' },
151
- pr_description: { type: 'string', description: 'Pull request 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
- const dangerous = ['rm -rf /', 'sudo', '> /dev/', 'mkfs', 'dd if='];
203
- if (dangerous.some(d => command.includes(d))) {
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 { success: true, result: files.slice(0, 100).join('\n') || '(no matches)' };
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 -50`, { cwd: repoPath, encoding: 'utf-8', timeout: 30000 });
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 response = await fetch('https://api.openai.com/v1/chat/completions', {
248
- method: 'POST',
249
- headers: {
250
- 'Content-Type': 'application/json',
251
- 'Authorization': `Bearer ${apiKey}`
252
- },
253
- body: JSON.stringify({
254
- model,
255
- messages,
256
- tools: TOOLS,
257
- tool_choice: 'auto',
258
- max_tokens: 4096
259
- })
260
- });
261
- if (!response.ok) {
262
- const error = await response.text();
263
- throw new Error(`OpenAI API error: ${error}`);
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
- return response.json();
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 > 8000 ? content.substring(0, 8000) + '\n\n[truncated...]' : content;
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, config) {
280
- const log = config.logger || (() => { });
281
- const onProgress = config.onProgress || (() => { });
282
- const model = config.model || agent_config_js_1.DEFAULT_MODELS.openai;
283
- log('info', 'Starting OpenAI planning', { repoPath: config.repoPath, taskTitle });
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
- const astridMd = await loadAstridMd(config.repoPath);
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
- Analyze the codebase and create an implementation plan for: "${taskTitle}"
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 5 files, be SURGICAL.`;
347
+ RULES: Maximum ${config.validation.maxFilesPerPlan} files, be SURGICAL.`;
311
348
  const messages = [
312
349
  { role: 'system', content: systemPrompt },
313
- { role: 'user', content: `Please analyze the codebase and create an implementation plan for: ${taskTitle}` }
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 = config.maxIterations || 20;
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, config.apiKey, model);
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, config.repoPath);
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, 10000),
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 without producing a plan' };
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, config) {
378
- const log = config.logger || (() => { });
379
- const onProgress = config.onProgress || (() => { });
380
- const model = config.model || agent_config_js_1.DEFAULT_MODELS.openai;
381
- log('info', 'Starting OpenAI execution', { repoPath: config.repoPath, filesInPlan: plan.files.length });
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
- const astridMd = await loadAstridMd(config.repoPath);
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 mentioned in the plan
397
- 2. Make the necessary changes using edit_file or write_file
460
+ 1. Read the files in the plan
461
+ 2. Make the necessary changes
398
462
  3. Run tests if available
399
- 4. When done, call task_complete with commit message and PR details
463
+ 4. Call task_complete when done
400
464
 
401
465
  ## Rules
402
- - Follow the implementation plan
403
- - Make minimal, surgical changes
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 = config.maxIterations || 50;
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, config.apiKey, model);
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, change]) => ({
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, config.repoPath);
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, 10000),
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 the implementation.'
546
+ content: 'Please call task_complete to finalize.'
469
547
  });
470
548
  }
471
549
  }
472
- const files = Array.from(fileChanges.entries()).map(([p, change]) => ({
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,