@gracefultools/astrid-sdk 0.3.2 → 0.3.4

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.
@@ -1,22 +1,20 @@
1
1
  /**
2
- * Astrid Configuration Loader
2
+ * Astrid Configuration Loader (v2.0)
3
3
  *
4
4
  * Loads project-specific configuration from .astrid.config.json
5
- * This allows each repository to define its own:
6
- * - Project structure
7
- * - Platform detection patterns
8
- * - AI agent preferences
9
- * - Timeouts and limits
5
+ * Provides config-driven behavior for AI agents.
10
6
  */
11
7
  export interface ProjectStructure {
12
- /** Description of the platform/framework, e.g. "Next.js web app" */
8
+ /** User-friendly name for this part of the project */
9
+ name?: string;
10
+ /** Description of the platform/framework */
13
11
  description: string;
14
- /** Root directory for this part of the project, e.g. "." or "ios-app/" */
15
- root: string;
16
- /** File patterns to search, e.g. "**\/*.ts" */
17
- patterns: string[];
12
+ /** Root directory for this part of the project */
13
+ rootPath: string;
14
+ /** File patterns to search */
15
+ filePatterns: string[];
18
16
  /** Key directories to mention */
19
- directories?: string[];
17
+ keyDirectories?: string[];
20
18
  }
21
19
  export interface PlatformDetection {
22
20
  /** Name of the platform (e.g., "ios", "android", "web") */
@@ -28,59 +26,132 @@ export interface PlatformDetection {
28
26
  /** Hints to give the AI for this platform */
29
27
  hints?: string[];
30
28
  }
29
+ export interface AgentConfig {
30
+ /** Planning timeout in minutes */
31
+ planningTimeoutMinutes: number;
32
+ /** Execution timeout in minutes */
33
+ executionTimeoutMinutes: number;
34
+ /** Max iterations for planning */
35
+ maxPlanningIterations: number;
36
+ /** Max iterations for execution */
37
+ maxExecutionIterations: number;
38
+ /** Additional context to always include in prompts */
39
+ additionalContext?: string;
40
+ /** Model parameters per phase */
41
+ modelParameters: {
42
+ planning: {
43
+ temperature: number;
44
+ maxTokens: number;
45
+ topP?: number;
46
+ };
47
+ execution: {
48
+ temperature: number;
49
+ maxTokens: number;
50
+ topP?: number;
51
+ };
52
+ };
53
+ }
54
+ export interface ValidationConfig {
55
+ /** Maximum files per plan */
56
+ maxFilesPerPlan: number;
57
+ /** Minimum files per plan */
58
+ minFilesPerPlan: number;
59
+ /** Reject plans with no files */
60
+ rejectEmptyPlans: boolean;
61
+ /** Maximum file modification size in bytes */
62
+ maxModificationSize: number;
63
+ /** Maximum context truncation length */
64
+ contextTruncationLength: number;
65
+ /** Max glob results to return */
66
+ maxGlobResults: number;
67
+ }
68
+ export interface SafetyConfig {
69
+ /** Blocked bash command patterns */
70
+ blockedBashPatterns: string[];
71
+ /** Require plan approval before execution */
72
+ requirePlanApproval: boolean;
73
+ /** Enforce protected paths */
74
+ enforceProtectedPaths: boolean;
75
+ /** Maximum budget per task in USD */
76
+ maxBudgetPerTask: number;
77
+ /** Maximum cost per API call */
78
+ maxCostPerCall: number;
79
+ }
80
+ export interface RetryConfig {
81
+ /** Maximum retry attempts */
82
+ maxRetries: number;
83
+ /** Initial backoff in milliseconds */
84
+ initialBackoffMs: number;
85
+ /** Maximum backoff in milliseconds */
86
+ maxBackoffMs: number;
87
+ /** Backoff multiplier */
88
+ backoffMultiplier: number;
89
+ /** API timeout in milliseconds */
90
+ apiTimeoutMs: number;
91
+ }
31
92
  export interface AstridConfig {
32
- /** Schema version for forward compatibility */
93
+ /** Schema version */
33
94
  version: string;
34
95
  /** Project name */
35
96
  projectName?: string;
36
97
  /** Brief description of the project */
37
98
  description?: string;
38
- /** Project structure - defines where different parts of the codebase live */
99
+ /** Project structure */
39
100
  structure?: Record<string, ProjectStructure>;
40
- /** Platform detection rules - how to identify task types */
101
+ /** Platform detection rules */
41
102
  platforms?: PlatformDetection[];
42
- /** AI agent configuration */
43
- agent?: {
44
- /** Planning timeout in minutes (default: 10) */
45
- planningTimeoutMinutes?: number;
46
- /** Execution timeout in minutes (default: 15) */
47
- executionTimeoutMinutes?: number;
48
- /** Max iterations for planning (default: 30) */
49
- maxPlanningIterations?: number;
50
- /** Max iterations for execution (default: 50) */
51
- maxExecutionIterations?: number;
52
- /** Additional context to always include in prompts */
53
- additionalContext?: string;
54
- };
55
103
  /** Files/patterns the agent should never modify */
56
104
  protectedPaths?: string[];
57
105
  /** Custom instructions for the AI agent */
58
106
  customInstructions?: string;
107
+ /** Agent configuration */
108
+ agent?: Partial<AgentConfig>;
109
+ /** Validation rules */
110
+ validation?: Partial<ValidationConfig>;
111
+ /** Safety rules */
112
+ safety?: Partial<SafetyConfig>;
113
+ /** Retry configuration */
114
+ retry?: Partial<RetryConfig>;
115
+ }
116
+ export interface ResolvedAstridConfig extends Omit<AstridConfig, 'agent' | 'validation' | 'safety' | 'retry'> {
117
+ agent: AgentConfig;
118
+ validation: ValidationConfig;
119
+ safety: SafetyConfig;
120
+ retry: RetryConfig;
59
121
  }
60
- export declare const DEFAULT_CONFIG: AstridConfig;
122
+ export declare const DEFAULT_BLOCKED_BASH_PATTERNS: string[];
123
+ export declare const DEFAULT_PROTECTED_PATHS: string[];
124
+ export declare const CONFIG_DEFAULTS: ResolvedAstridConfig;
61
125
  /**
62
126
  * Load Astrid configuration from a repository
63
- * Looks for .astrid.config.json in the repo root
64
127
  */
65
- export declare function loadAstridConfig(repoPath: string): Promise<AstridConfig>;
128
+ export declare function loadAstridConfig(repoPath: string): Promise<ResolvedAstridConfig>;
66
129
  /**
67
130
  * Clear the cached configuration
68
131
  */
69
132
  export declare function clearConfigCache(): void;
70
133
  /**
71
- * Detect which platform a task belongs to based on title and description
134
+ * Detect which platform a task belongs to
72
135
  */
73
- export declare function detectPlatform(config: AstridConfig, taskTitle: string, taskDescription: string | null): PlatformDetection | null;
136
+ export declare function detectPlatform(config: ResolvedAstridConfig, taskTitle: string, taskDescription: string | null): PlatformDetection | null;
74
137
  /**
75
138
  * Generate project structure prompt from config
76
139
  */
77
- export declare function generateStructurePrompt(config: AstridConfig): string;
140
+ export declare function generateStructurePrompt(config: ResolvedAstridConfig): string;
78
141
  /**
79
- * Generate platform-specific hints for the AI
142
+ * Generate platform-specific hints
80
143
  */
81
144
  export declare function generatePlatformHints(platform: PlatformDetection | null): string;
82
145
  /**
83
- * Get the initial glob pattern for a task based on platform detection
146
+ * Get the initial glob pattern for a task
147
+ */
148
+ export declare function getInitialGlobPattern(config: ResolvedAstridConfig, platform: PlatformDetection | null): string;
149
+ /**
150
+ * Check if a command is blocked by safety rules
151
+ */
152
+ export declare function isBlockedCommand(command: string, config: ResolvedAstridConfig): boolean;
153
+ /**
154
+ * Check if a path is protected
84
155
  */
85
- export declare function getInitialGlobPattern(config: AstridConfig, platform: PlatformDetection | null): string;
156
+ export declare function isProtectedPath(filePath: string, config: ResolvedAstridConfig): boolean;
86
157
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AASH,MAAM,WAAW,gBAAgB;IAC/B,oEAAoE;IACpE,WAAW,EAAE,MAAM,CAAA;IACnB,0EAA0E;IAC1E,IAAI,EAAE,MAAM,CAAA;IACZ,+CAA+C;IAC/C,QAAQ,EAAE,MAAM,EAAE,CAAA;IAClB,iCAAiC;IACjC,WAAW,CAAC,EAAE,MAAM,EAAE,CAAA;CACvB;AAED,MAAM,WAAW,iBAAiB;IAChC,2DAA2D;IAC3D,IAAI,EAAE,MAAM,CAAA;IACZ,4DAA4D;IAC5D,QAAQ,EAAE,MAAM,EAAE,CAAA;IAClB,gDAAgD;IAChD,YAAY,EAAE,MAAM,EAAE,CAAA;IACtB,6CAA6C;IAC7C,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;CACjB;AAED,MAAM,WAAW,YAAY;IAC3B,+CAA+C;IAC/C,OAAO,EAAE,MAAM,CAAA;IAEf,mBAAmB;IACnB,WAAW,CAAC,EAAE,MAAM,CAAA;IAEpB,uCAAuC;IACvC,WAAW,CAAC,EAAE,MAAM,CAAA;IAEpB,6EAA6E;IAC7E,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAA;IAE5C,4DAA4D;IAC5D,SAAS,CAAC,EAAE,iBAAiB,EAAE,CAAA;IAE/B,6BAA6B;IAC7B,KAAK,CAAC,EAAE;QACN,gDAAgD;QAChD,sBAAsB,CAAC,EAAE,MAAM,CAAA;QAC/B,iDAAiD;QACjD,uBAAuB,CAAC,EAAE,MAAM,CAAA;QAChC,gDAAgD;QAChD,qBAAqB,CAAC,EAAE,MAAM,CAAA;QAC9B,iDAAiD;QACjD,sBAAsB,CAAC,EAAE,MAAM,CAAA;QAC/B,sDAAsD;QACtD,iBAAiB,CAAC,EAAE,MAAM,CAAA;KAC3B,CAAA;IAED,mDAAmD;IACnD,cAAc,CAAC,EAAE,MAAM,EAAE,CAAA;IAEzB,2CAA2C;IAC3C,kBAAkB,CAAC,EAAE,MAAM,CAAA;CAC5B;AAMD,eAAO,MAAM,cAAc,EAAE,YAQ5B,CAAA;AAQD;;;GAGG;AACH,wBAAsB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CA4B9E;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,IAAI,CAEvC;AAMD;;GAEG;AACH,wBAAgB,cAAc,CAC5B,MAAM,EAAE,YAAY,EACpB,SAAS,EAAE,MAAM,EACjB,eAAe,EAAE,MAAM,GAAG,IAAI,GAC7B,iBAAiB,GAAG,IAAI,CAiB1B;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAgBpE;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,iBAAiB,GAAG,IAAI,GAAG,MAAM,CAehF;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,YAAY,EACpB,QAAQ,EAAE,iBAAiB,GAAG,IAAI,GACjC,MAAM,CAOR"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"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"}
@@ -1,13 +1,9 @@
1
1
  "use strict";
2
2
  /**
3
- * Astrid Configuration Loader
3
+ * Astrid Configuration Loader (v2.0)
4
4
  *
5
5
  * Loads project-specific configuration from .astrid.config.json
6
- * This allows each repository to define its own:
7
- * - Project structure
8
- * - Platform detection patterns
9
- * - AI agent preferences
10
- * - Timeouts and limits
6
+ * Provides config-driven behavior for AI agents.
11
7
  */
12
8
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
13
9
  if (k2 === undefined) k2 = k;
@@ -43,60 +39,129 @@ var __importStar = (this && this.__importStar) || (function () {
43
39
  };
44
40
  })();
45
41
  Object.defineProperty(exports, "__esModule", { value: true });
46
- exports.DEFAULT_CONFIG = void 0;
42
+ exports.CONFIG_DEFAULTS = exports.DEFAULT_PROTECTED_PATHS = exports.DEFAULT_BLOCKED_BASH_PATTERNS = void 0;
47
43
  exports.loadAstridConfig = loadAstridConfig;
48
44
  exports.clearConfigCache = clearConfigCache;
49
45
  exports.detectPlatform = detectPlatform;
50
46
  exports.generateStructurePrompt = generateStructurePrompt;
51
47
  exports.generatePlatformHints = generatePlatformHints;
52
48
  exports.getInitialGlobPattern = getInitialGlobPattern;
49
+ exports.isBlockedCommand = isBlockedCommand;
50
+ exports.isProtectedPath = isProtectedPath;
53
51
  const fs = __importStar(require("fs/promises"));
54
52
  const path = __importStar(require("path"));
55
53
  // ============================================================================
56
54
  // DEFAULT CONFIGURATION
57
55
  // ============================================================================
58
- exports.DEFAULT_CONFIG = {
59
- version: '1.0',
56
+ exports.DEFAULT_BLOCKED_BASH_PATTERNS = [
57
+ 'rm -rf /',
58
+ 'rm -rf ~',
59
+ 'rm -rf *',
60
+ 'sudo',
61
+ '> /dev/',
62
+ 'mkfs',
63
+ 'dd if=',
64
+ ':(){:|:&};:',
65
+ 'chmod -R 777 /',
66
+ 'wget -O - | sh',
67
+ 'curl | sh',
68
+ ];
69
+ exports.DEFAULT_PROTECTED_PATHS = [
70
+ '.env',
71
+ '.env.local',
72
+ '.env.production',
73
+ '.env.*.local',
74
+ '*.pem',
75
+ '*.key',
76
+ '**/credentials.json',
77
+ '**/secrets.*',
78
+ '.git/**',
79
+ ];
80
+ exports.CONFIG_DEFAULTS = {
81
+ version: '2.0',
82
+ projectName: undefined,
83
+ description: undefined,
84
+ structure: {},
85
+ platforms: [],
86
+ protectedPaths: exports.DEFAULT_PROTECTED_PATHS,
87
+ customInstructions: '',
60
88
  agent: {
61
89
  planningTimeoutMinutes: 10,
62
90
  executionTimeoutMinutes: 15,
63
91
  maxPlanningIterations: 30,
64
92
  maxExecutionIterations: 50,
65
- }
93
+ additionalContext: '',
94
+ modelParameters: {
95
+ planning: { temperature: 0.7, maxTokens: 8192, topP: 1.0 },
96
+ execution: { temperature: 0.2, maxTokens: 8192, topP: 1.0 },
97
+ },
98
+ },
99
+ validation: {
100
+ maxFilesPerPlan: 5,
101
+ minFilesPerPlan: 1,
102
+ rejectEmptyPlans: true,
103
+ maxModificationSize: 60000,
104
+ contextTruncationLength: 8000,
105
+ maxGlobResults: 100,
106
+ },
107
+ safety: {
108
+ blockedBashPatterns: exports.DEFAULT_BLOCKED_BASH_PATTERNS,
109
+ requirePlanApproval: false,
110
+ enforceProtectedPaths: true,
111
+ maxBudgetPerTask: 10.0,
112
+ maxCostPerCall: 2.0,
113
+ },
114
+ retry: {
115
+ maxRetries: 3,
116
+ initialBackoffMs: 2000,
117
+ maxBackoffMs: 30000,
118
+ backoffMultiplier: 2,
119
+ apiTimeoutMs: 120000,
120
+ },
66
121
  };
67
122
  // ============================================================================
68
123
  // CONFIGURATION LOADER
69
124
  // ============================================================================
125
+ function isObject(item) {
126
+ return item !== null && typeof item === 'object' && !Array.isArray(item);
127
+ }
128
+ function deepMerge(target, source) {
129
+ const result = { ...target };
130
+ for (const key of Object.keys(source)) {
131
+ const sourceValue = source[key];
132
+ const targetValue = target[key];
133
+ if (sourceValue === undefined) {
134
+ continue;
135
+ }
136
+ if (isObject(sourceValue) && isObject(targetValue)) {
137
+ result[key] = deepMerge(targetValue, sourceValue);
138
+ }
139
+ else {
140
+ result[key] = sourceValue;
141
+ }
142
+ }
143
+ return result;
144
+ }
70
145
  let cachedConfig = null;
71
146
  /**
72
147
  * Load Astrid configuration from a repository
73
- * Looks for .astrid.config.json in the repo root
74
148
  */
75
149
  async function loadAstridConfig(repoPath) {
76
- // Return cached config if same repo
77
150
  if (cachedConfig && cachedConfig.repoPath === repoPath) {
78
151
  return cachedConfig.config;
79
152
  }
80
153
  const configPath = path.join(repoPath, '.astrid.config.json');
154
+ let userConfig = {};
81
155
  try {
82
156
  const content = await fs.readFile(configPath, 'utf-8');
83
- const userConfig = JSON.parse(content);
84
- // Merge with defaults
85
- const config = {
86
- ...exports.DEFAULT_CONFIG,
87
- ...userConfig,
88
- agent: {
89
- ...exports.DEFAULT_CONFIG.agent,
90
- ...userConfig.agent,
91
- }
92
- };
93
- cachedConfig = { config, repoPath };
94
- return config;
157
+ userConfig = JSON.parse(content);
95
158
  }
96
159
  catch {
97
160
  // Config file doesn't exist or is invalid - use defaults
98
- return exports.DEFAULT_CONFIG;
99
161
  }
162
+ const resolved = deepMerge(exports.CONFIG_DEFAULTS, userConfig);
163
+ cachedConfig = { config: resolved, repoPath };
164
+ return resolved;
100
165
  }
101
166
  /**
102
167
  * Clear the cached configuration
@@ -108,7 +173,7 @@ function clearConfigCache() {
108
173
  // HELPER FUNCTIONS
109
174
  // ============================================================================
110
175
  /**
111
- * Detect which platform a task belongs to based on title and description
176
+ * Detect which platform a task belongs to
112
177
  */
113
178
  function detectPlatform(config, taskTitle, taskDescription) {
114
179
  if (!config.platforms?.length) {
@@ -132,40 +197,70 @@ function generateStructurePrompt(config) {
132
197
  if (!config.structure || Object.keys(config.structure).length === 0) {
133
198
  return '';
134
199
  }
135
- let prompt = '## Project Structure\n';
136
- for (const [name, structure] of Object.entries(config.structure)) {
137
- prompt += `- **${name}** (${structure.description}): \`${structure.root}\``;
138
- if (structure.directories?.length) {
139
- prompt += ` - ${structure.directories.join(', ')}`;
200
+ const lines = ['## Project Structure'];
201
+ for (const [key, structure] of Object.entries(config.structure)) {
202
+ const name = structure.name || key;
203
+ lines.push(`### ${name}`);
204
+ lines.push(structure.description);
205
+ lines.push(`Root: \`${structure.rootPath}\``);
206
+ if (structure.keyDirectories?.length) {
207
+ lines.push(`Key directories: ${structure.keyDirectories.join(', ')}`);
140
208
  }
141
- prompt += '\n';
209
+ lines.push('');
142
210
  }
143
- return prompt;
211
+ return lines.join('\n');
144
212
  }
145
213
  /**
146
- * Generate platform-specific hints for the AI
214
+ * Generate platform-specific hints
147
215
  */
148
216
  function generatePlatformHints(platform) {
149
217
  if (!platform) {
150
218
  return '';
151
219
  }
152
- let hints = `\n**THIS IS A ${platform.name.toUpperCase()} TASK**\n`;
153
- hints += `- File patterns: ${platform.filePatterns.join(', ')}\n`;
220
+ const lines = [`## Platform: ${platform.name}`];
221
+ lines.push(`File patterns: ${platform.filePatterns.join(', ')}`);
154
222
  if (platform.hints?.length) {
223
+ lines.push('\nHints:');
155
224
  for (const hint of platform.hints) {
156
- hints += `- ${hint}\n`;
225
+ lines.push(`- ${hint}`);
157
226
  }
158
227
  }
159
- return hints;
228
+ return lines.join('\n');
160
229
  }
161
230
  /**
162
- * Get the initial glob pattern for a task based on platform detection
231
+ * Get the initial glob pattern for a task
163
232
  */
164
233
  function getInitialGlobPattern(config, platform) {
165
234
  if (platform?.filePatterns?.length) {
166
235
  return platform.filePatterns[0];
167
236
  }
168
- // Default to TypeScript files
169
237
  return '**/*.ts';
170
238
  }
239
+ /**
240
+ * Check if a command is blocked by safety rules
241
+ */
242
+ function isBlockedCommand(command, config) {
243
+ const normalizedCommand = command.toLowerCase();
244
+ return config.safety.blockedBashPatterns.some(pattern => normalizedCommand.includes(pattern.toLowerCase()));
245
+ }
246
+ /**
247
+ * Check if a path is protected
248
+ */
249
+ function isProtectedPath(filePath, config) {
250
+ if (!config.protectedPaths?.length)
251
+ return false;
252
+ const normalizedPath = filePath.replace(/\\/g, '/');
253
+ for (const pattern of config.protectedPaths) {
254
+ if (pattern.includes('*')) {
255
+ const regex = new RegExp('^' + pattern.replace(/\*/g, '.*').replace(/\?/g, '.') + '$');
256
+ if (regex.test(normalizedPath))
257
+ return true;
258
+ }
259
+ else {
260
+ if (normalizedPath === pattern || normalizedPath.endsWith(`/${pattern}`))
261
+ return true;
262
+ }
263
+ }
264
+ return false;
265
+ }
171
266
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"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"}
@@ -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,CA8HzB;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,12 +388,10 @@ RULES: Maximum 5 files, be SURGICAL.`;
346
388
  if (jsonMatch) {
347
389
  try {
348
390
  const plan = JSON.parse(jsonMatch[1]);
349
- // Validate plan has at least 1 file
350
391
  if (!plan.files || plan.files.length === 0) {
351
- log('warn', 'Plan has no files, asking model to explore more', {});
352
392
  messages.push({
353
393
  role: 'user',
354
- content: '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.'
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.'
355
395
  });
356
396
  continue;
357
397
  }
@@ -369,21 +409,19 @@ RULES: Maximum 5 files, be SURGICAL.`;
369
409
  log('warn', 'Failed to parse plan JSON', {});
370
410
  }
371
411
  }
372
- // Check if first iteration without tool calls
373
412
  if (i === 0) {
374
- log('warn', 'First iteration had no tool calls - prompting model to use tools', {});
375
413
  messages.push({
376
414
  role: 'user',
377
- content: 'You must use the tools to explore the codebase. Please call glob_files with an appropriate pattern to find relevant files.'
415
+ content: 'You must use the tools to explore the codebase. Please call glob_files with an appropriate pattern.'
378
416
  });
379
417
  continue;
380
418
  }
381
419
  }
382
420
  if (choice.finish_reason === 'stop') {
383
- messages.push({ role: 'user', content: 'Please provide the implementation plan as a JSON block with at least one file to modify.' });
421
+ messages.push({ role: 'user', content: 'Please provide the implementation plan as a JSON block with at least one file.' });
384
422
  }
385
423
  }
386
- return { success: false, error: 'Max iterations reached without producing a plan' };
424
+ return { success: false, error: 'Max iterations reached' };
387
425
  }
388
426
  catch (error) {
389
427
  return { success: false, error: error instanceof Error ? error.message : String(error) };
@@ -392,16 +430,24 @@ RULES: Maximum 5 files, be SURGICAL.`;
392
430
  // ============================================================================
393
431
  // EXECUTION
394
432
  // ============================================================================
395
- async function executeWithOpenAI(plan, taskTitle, taskDescription, config) {
396
- const log = config.logger || (() => { });
397
- const onProgress = config.onProgress || (() => { });
398
- const model = config.model || agent_config_js_1.DEFAULT_MODELS.openai;
399
- 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 });
400
438
  onProgress('Initializing OpenAI agent...');
401
- 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);
402
445
  const systemPrompt = `You are an AI coding assistant implementing changes to a codebase.
403
446
 
447
+ ${structurePrompt}
448
+ ${platformHints}
404
449
  ${astridMd ? `## Project Context\n${astridMd}\n` : ''}
450
+ ${config.customInstructions ? `## Custom Instructions\n${config.customInstructions}\n` : ''}
405
451
 
406
452
  ## Task
407
453
  Implement: "${taskTitle}"
@@ -411,14 +457,14 @@ ${taskDescription ? `\nDetails: ${taskDescription}` : ''}
411
457
  ${JSON.stringify(plan, null, 2)}
412
458
 
413
459
  ## Instructions
414
- 1. Read the files mentioned in the plan
415
- 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
416
462
  3. Run tests if available
417
- 4. When done, call task_complete with commit message and PR details
463
+ 4. Call task_complete when done
418
464
 
419
465
  ## Rules
420
- - Follow the implementation plan
421
- - Make minimal, surgical changes
466
+ - Follow the plan exactly
467
+ - Make minimal changes
422
468
  - Test your changes`;
423
469
  const messages = [
424
470
  { role: 'system', content: systemPrompt },
@@ -427,11 +473,29 @@ ${JSON.stringify(plan, null, 2)}
427
473
  const fileChanges = new Map();
428
474
  let totalInputTokens = 0;
429
475
  let totalOutputTokens = 0;
430
- 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();
431
479
  try {
432
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
+ }
433
497
  onProgress(`Implementation iteration ${i + 1}...`);
434
- const response = await callOpenAI(messages, config.apiKey, model);
498
+ const response = await callOpenAI(messages, executorConfig.apiKey, model, config);
435
499
  totalInputTokens += response.usage.prompt_tokens;
436
500
  totalOutputTokens += response.usage.completion_tokens;
437
501
  const choice = response.choices[0];
@@ -447,11 +511,7 @@ ${JSON.stringify(plan, null, 2)}
447
511
  const toolName = toolCall.function.name;
448
512
  onProgress(`Using tool: ${toolName}`);
449
513
  if (toolName === 'task_complete') {
450
- const files = Array.from(fileChanges.entries()).map(([p, change]) => ({
451
- path: p,
452
- content: change.content,
453
- action: change.action
454
- }));
514
+ const files = Array.from(fileChanges.entries()).map(([p, c]) => ({ path: p, ...c }));
455
515
  return {
456
516
  success: true,
457
517
  files,
@@ -465,7 +525,7 @@ ${JSON.stringify(plan, null, 2)}
465
525
  }
466
526
  };
467
527
  }
468
- const result = await executeTool(toolName, args, config.repoPath);
528
+ const result = await executeTool(toolName, args, executorConfig.repoPath, config);
469
529
  if (result.fileChange) {
470
530
  fileChanges.set(result.fileChange.path, {
471
531
  content: result.fileChange.content,
@@ -474,7 +534,7 @@ ${JSON.stringify(plan, null, 2)}
474
534
  }
475
535
  messages.push({
476
536
  role: 'tool',
477
- content: result.result.substring(0, 10000),
537
+ content: result.result.substring(0, config.validation.contextTruncationLength),
478
538
  tool_call_id: toolCall.id
479
539
  });
480
540
  }
@@ -483,15 +543,11 @@ ${JSON.stringify(plan, null, 2)}
483
543
  if (choice.finish_reason === 'stop') {
484
544
  messages.push({
485
545
  role: 'user',
486
- content: 'Please call task_complete to finalize the implementation.'
546
+ content: 'Please call task_complete to finalize.'
487
547
  });
488
548
  }
489
549
  }
490
- const files = Array.from(fileChanges.entries()).map(([p, change]) => ({
491
- path: p,
492
- content: change.content,
493
- action: change.action
494
- }));
550
+ const files = Array.from(fileChanges.entries()).map(([p, c]) => ({ path: p, ...c }));
495
551
  return {
496
552
  success: files.length > 0,
497
553
  files,
@@ -1 +1 @@
1
- {"version":3,"file":"openai.js","sourceRoot":"","sources":["../../src/executors/openai.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"openai.js","sourceRoot":"","sources":["../../src/executors/openai.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -4,7 +4,7 @@
4
4
  * AI agent SDK for automated coding tasks with Claude, OpenAI, and Gemini
5
5
  */
6
6
  export type { CodeGenerationRequest, GeneratedCode, ImplementationPlan, ExecutionResult, PlanningResult, AIService, AIAgentConfig, LogLevel, Logger, ProgressCallback, AstridTask, AstridList, PreviousTaskContext, RepositoryContextCache, } from './types/index.js';
7
- export { loadAstridConfig, clearConfigCache, detectPlatform, generateStructurePrompt, generatePlatformHints, getInitialGlobPattern, DEFAULT_CONFIG, type AstridConfig, type ProjectStructure, type PlatformDetection, } from './config/index.js';
7
+ export { loadAstridConfig, clearConfigCache, detectPlatform, generateStructurePrompt, generatePlatformHints, getInitialGlobPattern, isBlockedCommand, isProtectedPath, CONFIG_DEFAULTS, type AstridConfig, type ResolvedAstridConfig, type ProjectStructure, type PlatformDetection, type AgentConfig, type ValidationConfig, type SafetyConfig, type RetryConfig, } from './config/index.js';
8
8
  export { AI_AGENT_CONFIG, SUGGESTED_MODELS, DEFAULT_MODELS, getAgentConfig, getAgentService, getAgentModel, getAgentContextFile, isRegisteredAgent, getRegisteredAgentEmails, getAllAgentConfigs, } from './utils/agent-config.js';
9
9
  export { planWithClaude, executeWithClaude, prepareRepository, type ClaudeExecutorConfig, } from './executors/claude.js';
10
10
  export { planWithOpenAI, executeWithOpenAI, type OpenAIExecutorConfig, } from './executors/openai.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,YAAY,EACV,qBAAqB,EACrB,aAAa,EACb,kBAAkB,EAClB,eAAe,EACf,cAAc,EACd,SAAS,EACT,aAAa,EACb,QAAQ,EACR,MAAM,EACN,gBAAgB,EAChB,UAAU,EACV,UAAU,EACV,mBAAmB,EACnB,sBAAsB,GACvB,MAAM,kBAAkB,CAAA;AAGzB,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,cAAc,EACd,uBAAuB,EACvB,qBAAqB,EACrB,qBAAqB,EACrB,cAAc,EACd,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,GACvB,MAAM,mBAAmB,CAAA;AAG1B,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,cAAc,EACd,cAAc,EACd,eAAe,EACf,aAAa,EACb,mBAAmB,EACnB,iBAAiB,EACjB,wBAAwB,EACxB,kBAAkB,GACnB,MAAM,yBAAyB,CAAA;AAGhC,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,iBAAiB,EACjB,KAAK,oBAAoB,GAC1B,MAAM,uBAAuB,CAAA;AAG9B,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,KAAK,oBAAoB,GAC1B,MAAM,uBAAuB,CAAA;AAG9B,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,KAAK,oBAAoB,GAC1B,MAAM,uBAAuB,CAAA;AAG9B,OAAO,EACL,iBAAiB,EACjB,KAAK,iBAAiB,EACtB,KAAK,WAAW,EAChB,KAAK,OAAO,EACZ,KAAK,cAAc,EACnB,KAAK,cAAc,GACpB,MAAM,4BAA4B,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,YAAY,EACV,qBAAqB,EACrB,aAAa,EACb,kBAAkB,EAClB,eAAe,EACf,cAAc,EACd,SAAS,EACT,aAAa,EACb,QAAQ,EACR,MAAM,EACN,gBAAgB,EAChB,UAAU,EACV,UAAU,EACV,mBAAmB,EACnB,sBAAsB,GACvB,MAAM,kBAAkB,CAAA;AAGzB,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,cAAc,EACd,uBAAuB,EACvB,qBAAqB,EACrB,qBAAqB,EACrB,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,KAAK,YAAY,EACjB,KAAK,oBAAoB,EACzB,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACtB,KAAK,WAAW,EAChB,KAAK,gBAAgB,EACrB,KAAK,YAAY,EACjB,KAAK,WAAW,GACjB,MAAM,mBAAmB,CAAA;AAG1B,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,cAAc,EACd,cAAc,EACd,eAAe,EACf,aAAa,EACb,mBAAmB,EACnB,iBAAiB,EACjB,wBAAwB,EACxB,kBAAkB,GACnB,MAAM,yBAAyB,CAAA;AAGhC,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,iBAAiB,EACjB,KAAK,oBAAoB,GAC1B,MAAM,uBAAuB,CAAA;AAG9B,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,KAAK,oBAAoB,GAC1B,MAAM,uBAAuB,CAAA;AAG9B,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,KAAK,oBAAoB,GAC1B,MAAM,uBAAuB,CAAA;AAG9B,OAAO,EACL,iBAAiB,EACjB,KAAK,iBAAiB,EACtB,KAAK,WAAW,EAChB,KAAK,OAAO,EACZ,KAAK,cAAc,EACnB,KAAK,cAAc,GACpB,MAAM,4BAA4B,CAAA"}
package/dist/index.js CHANGED
@@ -5,7 +5,7 @@
5
5
  * AI agent SDK for automated coding tasks with Claude, OpenAI, and Gemini
6
6
  */
7
7
  Object.defineProperty(exports, "__esModule", { value: true });
8
- exports.AstridOAuthClient = exports.executeWithGemini = exports.planWithGemini = exports.executeWithOpenAI = exports.planWithOpenAI = exports.prepareRepository = exports.executeWithClaude = exports.planWithClaude = exports.getAllAgentConfigs = exports.getRegisteredAgentEmails = exports.isRegisteredAgent = exports.getAgentContextFile = exports.getAgentModel = exports.getAgentService = exports.getAgentConfig = exports.DEFAULT_MODELS = exports.SUGGESTED_MODELS = exports.AI_AGENT_CONFIG = exports.DEFAULT_CONFIG = exports.getInitialGlobPattern = exports.generatePlatformHints = exports.generateStructurePrompt = exports.detectPlatform = exports.clearConfigCache = exports.loadAstridConfig = void 0;
8
+ exports.AstridOAuthClient = exports.executeWithGemini = exports.planWithGemini = exports.executeWithOpenAI = exports.planWithOpenAI = exports.prepareRepository = exports.executeWithClaude = exports.planWithClaude = exports.getAllAgentConfigs = exports.getRegisteredAgentEmails = exports.isRegisteredAgent = exports.getAgentContextFile = exports.getAgentModel = exports.getAgentService = exports.getAgentConfig = exports.DEFAULT_MODELS = exports.SUGGESTED_MODELS = exports.AI_AGENT_CONFIG = exports.CONFIG_DEFAULTS = exports.isProtectedPath = exports.isBlockedCommand = exports.getInitialGlobPattern = exports.generatePlatformHints = exports.generateStructurePrompt = exports.detectPlatform = exports.clearConfigCache = exports.loadAstridConfig = void 0;
9
9
  // Configuration
10
10
  var index_js_1 = require("./config/index.js");
11
11
  Object.defineProperty(exports, "loadAstridConfig", { enumerable: true, get: function () { return index_js_1.loadAstridConfig; } });
@@ -14,7 +14,9 @@ Object.defineProperty(exports, "detectPlatform", { enumerable: true, get: functi
14
14
  Object.defineProperty(exports, "generateStructurePrompt", { enumerable: true, get: function () { return index_js_1.generateStructurePrompt; } });
15
15
  Object.defineProperty(exports, "generatePlatformHints", { enumerable: true, get: function () { return index_js_1.generatePlatformHints; } });
16
16
  Object.defineProperty(exports, "getInitialGlobPattern", { enumerable: true, get: function () { return index_js_1.getInitialGlobPattern; } });
17
- Object.defineProperty(exports, "DEFAULT_CONFIG", { enumerable: true, get: function () { return index_js_1.DEFAULT_CONFIG; } });
17
+ Object.defineProperty(exports, "isBlockedCommand", { enumerable: true, get: function () { return index_js_1.isBlockedCommand; } });
18
+ Object.defineProperty(exports, "isProtectedPath", { enumerable: true, get: function () { return index_js_1.isProtectedPath; } });
19
+ Object.defineProperty(exports, "CONFIG_DEFAULTS", { enumerable: true, get: function () { return index_js_1.CONFIG_DEFAULTS; } });
18
20
  // Agent Configuration
19
21
  var agent_config_js_1 = require("./utils/agent-config.js");
20
22
  Object.defineProperty(exports, "AI_AGENT_CONFIG", { enumerable: true, get: function () { return agent_config_js_1.AI_AGENT_CONFIG; } });
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAoBH,gBAAgB;AAChB,8CAW0B;AAVxB,4GAAA,gBAAgB,OAAA;AAChB,4GAAA,gBAAgB,OAAA;AAChB,0GAAA,cAAc,OAAA;AACd,mHAAA,uBAAuB,OAAA;AACvB,iHAAA,qBAAqB,OAAA;AACrB,iHAAA,qBAAqB,OAAA;AACrB,0GAAA,cAAc,OAAA;AAMhB,sBAAsB;AACtB,2DAWgC;AAV9B,kHAAA,eAAe,OAAA;AACf,mHAAA,gBAAgB,OAAA;AAChB,iHAAA,cAAc,OAAA;AACd,iHAAA,cAAc,OAAA;AACd,kHAAA,eAAe,OAAA;AACf,gHAAA,aAAa,OAAA;AACb,sHAAA,mBAAmB,OAAA;AACnB,oHAAA,iBAAiB,OAAA;AACjB,2HAAA,wBAAwB,OAAA;AACxB,qHAAA,kBAAkB,OAAA;AAGpB,kBAAkB;AAClB,mDAK8B;AAJ5B,2GAAA,cAAc,OAAA;AACd,8GAAA,iBAAiB,OAAA;AACjB,8GAAA,iBAAiB,OAAA;AAInB,kBAAkB;AAClB,mDAI8B;AAH5B,2GAAA,cAAc,OAAA;AACd,8GAAA,iBAAiB,OAAA;AAInB,kBAAkB;AAClB,mDAI8B;AAH5B,2GAAA,cAAc,OAAA;AACd,8GAAA,iBAAiB,OAAA;AAInB,sBAAsB;AACtB,8DAOmC;AANjC,oHAAA,iBAAiB,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAoBH,gBAAgB;AAChB,8CAkB0B;AAjBxB,4GAAA,gBAAgB,OAAA;AAChB,4GAAA,gBAAgB,OAAA;AAChB,0GAAA,cAAc,OAAA;AACd,mHAAA,uBAAuB,OAAA;AACvB,iHAAA,qBAAqB,OAAA;AACrB,iHAAA,qBAAqB,OAAA;AACrB,4GAAA,gBAAgB,OAAA;AAChB,2GAAA,eAAe,OAAA;AACf,2GAAA,eAAe,OAAA;AAWjB,sBAAsB;AACtB,2DAWgC;AAV9B,kHAAA,eAAe,OAAA;AACf,mHAAA,gBAAgB,OAAA;AAChB,iHAAA,cAAc,OAAA;AACd,iHAAA,cAAc,OAAA;AACd,kHAAA,eAAe,OAAA;AACf,gHAAA,aAAa,OAAA;AACb,sHAAA,mBAAmB,OAAA;AACnB,oHAAA,iBAAiB,OAAA;AACjB,2HAAA,wBAAwB,OAAA;AACxB,qHAAA,kBAAkB,OAAA;AAGpB,kBAAkB;AAClB,mDAK8B;AAJ5B,2GAAA,cAAc,OAAA;AACd,8GAAA,iBAAiB,OAAA;AACjB,8GAAA,iBAAiB,OAAA;AAInB,kBAAkB;AAClB,mDAI8B;AAH5B,2GAAA,cAAc,OAAA;AACd,8GAAA,iBAAiB,OAAA;AAInB,kBAAkB;AAClB,mDAI8B;AAH5B,2GAAA,cAAc,OAAA;AACd,8GAAA,iBAAiB,OAAA;AAInB,sBAAsB;AACtB,8DAOmC;AANjC,oHAAA,iBAAiB,OAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gracefultools/astrid-sdk",
3
- "version": "0.3.2",
3
+ "version": "0.3.4",
4
4
  "description": "AI agent SDK for automated coding tasks with Claude, OpenAI, and Gemini",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",