@omaikit/agents 0.1.1 → 0.1.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.
Files changed (49) hide show
  1. package/dist/ai-provider/openai.d.ts +1 -1
  2. package/dist/ai-provider/openai.d.ts.map +1 -1
  3. package/dist/ai-provider/openai.js +53 -41
  4. package/dist/ai-provider/openai.js.map +1 -1
  5. package/dist/ai-provider/provider.d.ts +7 -1
  6. package/dist/ai-provider/provider.d.ts.map +1 -1
  7. package/dist/coder/coder.d.ts +0 -16
  8. package/dist/coder/coder.d.ts.map +1 -1
  9. package/dist/coder/coder.js +36 -235
  10. package/dist/coder/coder.js.map +1 -1
  11. package/dist/coder/prompt-templates.d.ts.map +1 -1
  12. package/dist/coder/prompt-templates.js +15 -1
  13. package/dist/coder/prompt-templates.js.map +1 -1
  14. package/dist/manager/manager.js +1 -1
  15. package/dist/manager/manager.js.map +1 -1
  16. package/dist/memory/memory-store.d.ts +2 -0
  17. package/dist/memory/memory-store.d.ts.map +1 -1
  18. package/dist/memory/memory-store.js +27 -0
  19. package/dist/memory/memory-store.js.map +1 -1
  20. package/dist/tools/apply-patch.d.ts.map +1 -1
  21. package/dist/tools/apply-patch.js +76 -86
  22. package/dist/tools/apply-patch.js.map +1 -1
  23. package/dist/tools/default-registry.d.ts.map +1 -1
  24. package/dist/tools/default-registry.js +6 -2
  25. package/dist/tools/default-registry.js.map +1 -1
  26. package/dist/tools/edit-file.d.ts +4 -0
  27. package/dist/tools/edit-file.d.ts.map +1 -0
  28. package/dist/tools/edit-file.js +95 -0
  29. package/dist/tools/edit-file.js.map +1 -0
  30. package/dist/tools/index.d.ts +3 -2
  31. package/dist/tools/index.d.ts.map +1 -1
  32. package/dist/tools/index.js +3 -2
  33. package/dist/tools/index.js.map +1 -1
  34. package/dist/tools/list-files.d.ts +4 -0
  35. package/dist/tools/list-files.d.ts.map +1 -0
  36. package/dist/tools/list-files.js +38 -0
  37. package/dist/tools/list-files.js.map +1 -0
  38. package/dist/tools/read-file.d.ts +4 -0
  39. package/dist/tools/read-file.d.ts.map +1 -0
  40. package/dist/tools/read-file.js +39 -0
  41. package/dist/tools/read-file.js.map +1 -0
  42. package/dist/tools/registry.d.ts.map +1 -1
  43. package/dist/tools/registry.js +1 -0
  44. package/dist/tools/registry.js.map +1 -1
  45. package/dist/tools/search.js +1 -1
  46. package/dist/tools/search.js.map +1 -1
  47. package/dist/tools/types.d.ts +1 -0
  48. package/dist/tools/types.d.ts.map +1 -1
  49. package/package.json +2 -2
@@ -5,7 +5,7 @@ export declare class OpenAIProvider implements AIProvider {
5
5
  constructor(apiKey?: string);
6
6
  init(config?: Record<string, unknown>): Promise<void>;
7
7
  generate(prompt: string, options?: AIProviderOptions): Promise<string>;
8
- generateCodex(prompt: string, options?: AIProviderOptions): Promise<string>;
8
+ generateCode(prompt: string, options?: AIProviderOptions): Promise<any>;
9
9
  private formatToolsForResponses;
10
10
  complete(prompt: string): Promise<string>;
11
11
  onProgress(_callback: (chunk: string) => void): void;
@@ -1 +1 @@
1
- {"version":3,"file":"openai.d.ts","sourceRoot":"","sources":["../../src/ai-provider/openai.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAK3D,qBAAa,cAAe,YAAW,UAAU;IAC/C,OAAO,CAAC,MAAM,CAAC,CAAS;IACxB,OAAO,CAAC,MAAM,CAAuB;gBAEzB,MAAM,CAAC,EAAE,MAAM;IAIrB,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAYrD,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC;IAgGtE,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC;IAgFjF,OAAO,CAAC,uBAAuB;IAUzB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAI/C,UAAU,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI;IAI9C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAI5B,OAAO,CAAC,YAAY;IAUpB,OAAO,CAAC,gBAAgB;CA4CzB"}
1
+ {"version":3,"file":"openai.d.ts","sourceRoot":"","sources":["../../src/ai-provider/openai.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAO3D,qBAAa,cAAe,YAAW,UAAU;IAC/C,OAAO,CAAC,MAAM,CAAC,CAAS;IACxB,OAAO,CAAC,MAAM,CAAuB;gBAEzB,MAAM,CAAC,EAAE,MAAM;IAIrB,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAYrD,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC;IAmGtE,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,GAAG,CAAC;IAqG7E,OAAO,CAAC,uBAAuB;IAiBzB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAI/C,UAAU,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI;IAI9C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAI5B,OAAO,CAAC,YAAY;IAUpB,OAAO,CAAC,gBAAgB;CAkCzB"}
@@ -75,6 +75,9 @@ export class OpenAIProvider {
75
75
  }
76
76
  const args = parseToolArgs(rawArgs);
77
77
  const result = await options.toolRegistry.call(toolName, args, options.toolContext ?? {});
78
+ if (options?.onToolCall) {
79
+ options.onToolCall({ name: toolName, arguments: args, result });
80
+ }
78
81
  messages.push({
79
82
  role: 'tool',
80
83
  tool_call_id: toolCall.id,
@@ -101,7 +104,7 @@ export class OpenAIProvider {
101
104
  throw new Error(`OpenAI API error: ${message}`);
102
105
  }
103
106
  }
104
- async generateCodex(prompt, options) {
107
+ async generateCode(prompt, options) {
105
108
  if (!this.client) {
106
109
  if (!this.apiKey)
107
110
  return `OPENAI_ECHO:\n${prompt}`;
@@ -115,7 +118,7 @@ export class OpenAIProvider {
115
118
  const tools = this.resolveTools(options);
116
119
  const maxToolCalls = options?.maxToolCalls ?? 3;
117
120
  let previousResponseId = null;
118
- let input = prompt;
121
+ let input = [{ role: 'user', content: prompt }];
119
122
  let lastContent = '';
120
123
  for (let i = 0; i <= maxToolCalls; i += 1) {
121
124
  const response = await this.client.responses.create({
@@ -143,9 +146,13 @@ export class OpenAIProvider {
143
146
  lastContent = collected;
144
147
  }
145
148
  }
149
+ if (lastContent && options?.onTextResponse) {
150
+ options.onTextResponse(lastContent);
151
+ }
152
+ // console.log('Extracted tool calls:', toolCalls);
146
153
  const toolCalls = this.extractToolCalls(response);
147
154
  if (toolCalls.length === 0) {
148
- return lastContent;
155
+ continue;
149
156
  }
150
157
  if (!options?.toolRegistry) {
151
158
  throw new Error('Tool calls requested but no tool registry provided');
@@ -153,28 +160,41 @@ export class OpenAIProvider {
153
160
  const toolOutputs = [];
154
161
  for (const toolCall of toolCalls) {
155
162
  let type = 'function_call_output';
156
- if (toolCall.name === 'apply_patch') {
157
- type = 'apply_patch_output';
163
+ let args = parseToolArgs(toolCall.arguments);
164
+ if (toolCall.name === 'apply_patch_call') {
165
+ type = 'apply_patch_call_output';
166
+ args = toolCall.arguments;
167
+ }
168
+ const result = await options.toolRegistry.call(toolCall.name, args, options.toolContext ?? {});
169
+ if (options?.onToolCall) {
170
+ options.onToolCall({ name: toolCall.name, arguments: args, result });
158
171
  }
159
- const result = await options.toolRegistry.call(toolCall.name, parseToolArgs(toolCall.arguments), options.toolContext ?? {});
160
172
  toolOutputs.push({
161
173
  type,
162
174
  call_id: toolCall.call_id,
163
175
  output: JSON.stringify(result),
176
+ status: result.ok ? 'completed' : 'incomplete',
164
177
  });
178
+ // console.log('Tool called:', toolCall.name, args, result);
165
179
  }
166
180
  input = [{ role: 'user', content: prompt }, ...toolOutputs];
167
181
  }
168
182
  return lastContent;
169
183
  }
170
184
  formatToolsForResponses(tools) {
171
- return tools.map((tool) => ({
172
- type: 'function',
173
- name: tool.name,
174
- description: tool.description,
175
- parameters: tool.parameters,
176
- strict: false,
177
- }));
185
+ return tools.map((tool) => {
186
+ if (tool.type && ['web_search', 'apply_patch'].includes(tool.type)) {
187
+ const type = tool.type;
188
+ return { type };
189
+ }
190
+ return {
191
+ type: 'function',
192
+ name: tool.name,
193
+ description: tool.description,
194
+ parameters: tool.parameters,
195
+ strict: false,
196
+ };
197
+ });
178
198
  }
179
199
  async complete(prompt) {
180
200
  return this.generate(prompt);
@@ -201,33 +221,25 @@ export class OpenAIProvider {
201
221
  return toolCalls;
202
222
  }
203
223
  for (const item of output) {
204
- if (item?.tool_calls && Array.isArray(item.tool_calls)) {
205
- for (const toolCall of item.tool_calls) {
206
- if (toolCall?.name) {
207
- toolCalls.push({
208
- id: toolCall.id || toolCall.tool_call_id || `tool_${toolCalls.length + 1}`,
209
- name: toolCall.name,
210
- arguments: toolCall.arguments || '{}',
211
- call_id: toolCall.call_id || toolCall.id || `tool_${toolCalls.length + 1}`,
212
- });
213
- }
214
- }
215
- }
216
- if (item?.type === 'tool_call' && item?.name) {
217
- toolCalls.push({
218
- id: item.id || item.tool_call_id || `tool_${toolCalls.length + 1}`,
219
- name: item.name,
220
- arguments: item.arguments || '{}',
221
- call_id: item.call_id || item.id || `tool_${toolCalls.length + 1}`,
222
- });
223
- }
224
- if (item?.type === 'function_call' && item?.name) {
225
- toolCalls.push({
226
- id: item.id || `tool_${toolCalls.length + 1}`,
227
- name: item.name,
228
- arguments: item.arguments || '{}',
229
- call_id: item.call_id || `call_${toolCalls.length + 1}`,
230
- });
224
+ switch (item?.type) {
225
+ case 'function_call':
226
+ toolCalls.push({
227
+ id: item.id || `tool_${toolCalls.length + 1}`,
228
+ name: item.name,
229
+ arguments: item.arguments || '{}',
230
+ call_id: item.call_id || `call_${toolCalls.length + 1}`,
231
+ });
232
+ break;
233
+ case 'apply_patch_call':
234
+ toolCalls.push({
235
+ id: item.id || `tool_${toolCalls.length + 1}`,
236
+ name: 'apply_patch_call',
237
+ arguments: item.operation || {},
238
+ call_id: item.call_id || `call_${toolCalls.length + 1}`,
239
+ });
240
+ break;
241
+ default:
242
+ break;
231
243
  }
232
244
  }
233
245
  return toolCalls;
@@ -235,7 +247,7 @@ export class OpenAIProvider {
235
247
  }
236
248
  function parseToolArgs(rawArgs) {
237
249
  try {
238
- const parsed = JSON.parse(rawArgs);
250
+ const parsed = typeof rawArgs === 'string' ? JSON.parse(rawArgs) : rawArgs;
239
251
  if (parsed && typeof parsed === 'object') {
240
252
  return parsed;
241
253
  }
@@ -1 +1 @@
1
- {"version":3,"file":"openai.js","sourceRoot":"","sources":["../../src/ai-provider/openai.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"openai.js","sourceRoot":"","sources":["../../src/ai-provider/openai.ts"],"names":[],"mappings":"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"}
@@ -6,6 +6,12 @@ export interface AIProviderOptions {
6
6
  maxTokens?: number;
7
7
  temperature?: number;
8
8
  onProgress?: (chunk: string) => void;
9
+ onToolCall?: (event: {
10
+ name: string;
11
+ arguments: Record<string, unknown>;
12
+ result: unknown;
13
+ }) => void;
14
+ onTextResponse?: (text: string) => void;
9
15
  tools?: ToolDefinition[];
10
16
  toolRegistry?: ToolRegistry;
11
17
  toolContext?: ToolContext;
@@ -17,7 +23,7 @@ export interface AIProviderOptions {
17
23
  export interface AIProvider {
18
24
  init?(config?: Record<string, unknown>): Promise<void> | void;
19
25
  generate(prompt: string, options?: AIProviderOptions): Promise<string>;
20
- generateCode?(prompt: string, options?: AIProviderOptions): Promise<string>;
26
+ generateCode?(prompt: string, options?: AIProviderOptions): Promise<any>;
21
27
  close?(): Promise<void> | void;
22
28
  complete?(prompt: string): Promise<string>;
23
29
  onProgress?(callback: (chunk: string) => void): void;
@@ -1 +1 @@
1
- {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../src/ai-provider/provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,MAAM,WAAW,iBAAiB;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,KAAK,CAAC,EAAE,cAAc,EAAE,CAAC;IACzB,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IAChD,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAC9D,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACvE,YAAY,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC5E,KAAK,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAC/B,QAAQ,CAAC,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC3C,UAAU,CAAC,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI,CAAC;CACtD"}
1
+ {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../src/ai-provider/provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,MAAM,WAAW,iBAAiB;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE;QACnB,IAAI,EAAE,MAAM,CAAC;QACb,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACnC,MAAM,EAAE,OAAO,CAAC;KACjB,KAAK,IAAI,CAAC;IACX,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,KAAK,CAAC,EAAE,cAAc,EAAE,CAAC;IACzB,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IAChD,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAC9D,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACvE,YAAY,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IACzE,KAAK,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAC/B,QAAQ,CAAC,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC3C,UAAU,CAAC,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI,CAAC;CACtD"}
@@ -31,8 +31,6 @@ export interface CoderAgentOutput extends AgentOutput {
31
31
  export declare class CoderAgent extends Agent {
32
32
  name: string;
33
33
  private promptTemplates;
34
- private codeParser;
35
- private codeWriter;
36
34
  private provider?;
37
35
  private memoryStore;
38
36
  private cfg;
@@ -54,25 +52,11 @@ export declare class CoderAgent extends Agent {
54
52
  * Validate input structure
55
53
  */
56
54
  private validateInput;
57
- /**
58
- * Determine target programming language
59
- */
60
- private determineLanguage;
61
- private normalizeLanguage;
62
55
  /**
63
56
  * Call LLM to generate code
64
57
  */
65
58
  private callLLM;
66
- /**
67
- * Generate mock code for demonstration
68
- */
69
- private getMockGeneratedCode;
70
- /**
71
- * Convert string to PascalCase
72
- */
73
- private toPascalCase;
74
59
  private buildReuseSection;
75
- private withTimeout;
76
60
  private buildToolContext;
77
61
  }
78
62
  //# sourceMappingURL=coder.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"coder.d.ts","sourceRoot":"","sources":["../../src/coder/coder.ts"],"names":[],"mappings":"AACA;;;GAGG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACxD,OAAO,KAAK,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AACjC,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAWnC,MAAM,WAAW,eAAgB,SAAQ,UAAU;IACjD,IAAI,EAAE,IAAI,CAAC;IACX,cAAc,EAAE,GAAG,CAAC;IACpB,IAAI,EAAE,GAAG,CAAC;IACV,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,gBAAiB,SAAQ,WAAW;IACnD,MAAM,EAAE,cAAc,CAAC;IACvB,QAAQ,EAAE;QACR,UAAU,EAAE,MAAM,CAAC;QACnB,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;QACxB,UAAU,CAAC,EAAE;YACX,KAAK,EAAE,MAAM,CAAC;YACd,MAAM,EAAE,MAAM,CAAC;YACf,KAAK,EAAE,MAAM,CAAC;SACf,CAAC;KACH,CAAC;CACH;AAED,qBAAa,UAAW,SAAQ,KAAK;IAC5B,IAAI,SAAW;IAEtB,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,QAAQ,CAAC,CAAa;IAC9B,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,GAAG,CAAgB;gBAEf,MAAM,CAAC,EAAE,MAAM;IASrB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAS3B;;OAEG;IACG,OAAO,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,gBAAgB,CAAC;IA0GhE;;OAEG;IACG,QAAQ,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC;IAwEjD;;OAEG;IACH,SAAS,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO;IAK9B;;OAEG;IACH,OAAO,CAAC,aAAa;IAYrB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAoCzB,OAAO,CAAC,iBAAiB;IAYzB;;OAEG;YACW,OAAO;IA2CrB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAoH5B;;OAEG;IACH,OAAO,CAAC,YAAY;IAOpB,OAAO,CAAC,iBAAiB;YA6BX,WAAW;IAgBzB,OAAO,CAAC,gBAAgB;CAazB"}
1
+ {"version":3,"file":"coder.d.ts","sourceRoot":"","sources":["../../src/coder/coder.ts"],"names":[],"mappings":"AACA;;;GAGG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACxD,OAAO,KAAK,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AACjC,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AASnC,MAAM,WAAW,eAAgB,SAAQ,UAAU;IACjD,IAAI,EAAE,IAAI,CAAC;IACX,cAAc,EAAE,GAAG,CAAC;IACpB,IAAI,EAAE,GAAG,CAAC;IACV,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,gBAAiB,SAAQ,WAAW;IACnD,MAAM,EAAE,cAAc,CAAC;IACvB,QAAQ,EAAE;QACR,UAAU,EAAE,MAAM,CAAC;QACnB,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;QACxB,UAAU,CAAC,EAAE;YACX,KAAK,EAAE,MAAM,CAAC;YACd,MAAM,EAAE,MAAM,CAAC;YACf,KAAK,EAAE,MAAM,CAAC;SACf,CAAC;KACH,CAAC;CACH;AAED,qBAAa,UAAW,SAAQ,KAAK;IAC5B,IAAI,SAAW;IAEtB,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,QAAQ,CAAC,CAAa;IAC9B,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,GAAG,CAAgB;gBAEf,MAAM,CAAC,EAAE,MAAM;IAOrB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAQ3B;;OAEG;IACG,OAAO,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAwGhE;;OAEG;IACG,QAAQ,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC;IAwEjD;;OAEG;IACH,SAAS,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO;IAK9B;;OAEG;IACH,OAAO,CAAC,aAAa;IAYrB;;OAEG;YACW,OAAO;IAqCrB,OAAO,CAAC,iBAAiB;IA6BzB,OAAO,CAAC,gBAAgB;CAazB"}
@@ -5,8 +5,6 @@
5
5
  */
6
6
  import { Agent } from '../agent.js';
7
7
  import { PromptTemplates } from './prompt-templates.js';
8
- import { CodeParser } from './code-parser.js';
9
- import { CodeWriter } from '@omaikit/analysis';
10
8
  import { createProvider } from '../ai-provider/factory.js';
11
9
  import { createDefaultToolRegistry } from '../tools/default-registry.js';
12
10
  import { MemoryStore } from '../memory/memory-store.js';
@@ -14,23 +12,18 @@ import { loadConfig } from '@omaikit/config';
14
12
  export class CoderAgent extends Agent {
15
13
  name = 'Coder';
16
14
  promptTemplates;
17
- codeParser;
18
- codeWriter;
19
15
  provider;
20
16
  memoryStore;
21
17
  cfg;
22
18
  constructor(logger) {
23
19
  super(logger);
24
20
  this.promptTemplates = new PromptTemplates();
25
- this.codeParser = new CodeParser();
26
- this.codeWriter = new CodeWriter();
27
21
  this.memoryStore = new MemoryStore();
28
22
  this.cfg = loadConfig();
29
23
  }
30
24
  async init() {
31
25
  try {
32
26
  this.provider = createProvider();
33
- this.logger.info('Coder initialized');
34
27
  }
35
28
  catch (error) {
36
29
  this.logger.warn('Could not initialize Coder, using mock mode');
@@ -63,7 +56,6 @@ export class CoderAgent extends Agent {
63
56
  await this.beforeExecute(input);
64
57
  // Validate input
65
58
  this.validateInput(input);
66
- const fallbackLanguage = this.determineLanguage(input);
67
59
  // Generate prompt
68
60
  const prompt = await this.promptTemplates.generatePrompt(input.task, input.projectContext, input.plan);
69
61
  const recentMemory = await this.memoryStore.readRecent(this.name, 3);
@@ -79,33 +71,33 @@ export class CoderAgent extends Agent {
79
71
  output.result.prompt = finalPrompt;
80
72
  // Call LLM via AIProvider (would be injected)
81
73
  // For now, return mock response
82
- const llmResponse = await this.callLLM(finalPrompt, input, fallbackLanguage);
83
- await this.memoryStore.append(this.name, {
84
- timestamp: new Date().toISOString(),
85
- prompt: finalPrompt,
86
- response: llmResponse,
87
- taskId: input.task.id,
88
- });
89
- // Parse generated code
90
- const files = await this.codeParser.parse(llmResponse, {
91
- taskTitle: input.task.title,
92
- projectContext: input.projectContext,
93
- fallbackLanguage,
94
- });
95
- this.logger.info('Code parsed', { fileCount: files.length });
96
- const projectRoot = input.projectContext?.project?.rootPath || process.cwd();
97
- const writtenPaths = await this.codeWriter.writeFiles(files, projectRoot);
74
+ const { response: llmResponse, toolCalls } = await this.callLLM(finalPrompt, input);
75
+ const timestamp = new Date().toISOString();
76
+ const memoryEntries = [];
77
+ for (const toolCall of toolCalls) {
78
+ memoryEntries.push({
79
+ timestamp,
80
+ prompt: finalPrompt,
81
+ response: JSON.stringify(toolCall),
82
+ taskId: input.task.id,
83
+ metadata: { type: 'tool_call', tool: toolCall.name },
84
+ });
85
+ }
86
+ if (llmResponse && llmResponse.trim().length > 0) {
87
+ memoryEntries.push({
88
+ timestamp,
89
+ prompt: finalPrompt,
90
+ response: llmResponse,
91
+ taskId: input.task.id,
92
+ metadata: { type: 'text_response' },
93
+ });
94
+ }
95
+ await this.memoryStore.appendManyUnique(this.name, memoryEntries);
98
96
  // Prepare output
99
- output.result.files = files;
100
97
  output.result.metadata = {
101
98
  generatedAt: new Date().toISOString(),
102
- model: 'mock-model',
99
+ model: this.cfg.coderModel,
103
100
  };
104
- output.metadata.filesGenerated = files.length;
105
- output.metadata.writtenPaths = writtenPaths;
106
- output.metadata.totalLOC = files.reduce((sum, f) => sum + (f.content.split('\n').length || 0), 0);
107
- output.metadata.syntaxErrors = 0;
108
- output.metadata.lintingIssues = 0;
109
101
  await this.afterExecute(output);
110
102
  }
111
103
  catch (error) {
@@ -115,13 +107,6 @@ export class CoderAgent extends Agent {
115
107
  code: 'CODER_ERROR',
116
108
  message: error.message,
117
109
  };
118
- await this.memoryStore.append(this.name, {
119
- timestamp: new Date().toISOString(),
120
- prompt: output.result.prompt || '',
121
- response: output.error.message,
122
- taskId: input.task.id,
123
- metadata: { status: 'failed' },
124
- });
125
110
  }
126
111
  output.metadata.durationMs = Date.now() - startTime;
127
112
  return output;
@@ -215,71 +200,17 @@ export class CoderAgent extends Agent {
215
200
  throw new Error('Task must have id and title');
216
201
  }
217
202
  }
218
- /**
219
- * Determine target programming language
220
- */
221
- determineLanguage(input) {
222
- const candidates = [];
223
- const addCandidate = (value) => {
224
- if (typeof value === 'string') {
225
- candidates.push(value);
226
- }
227
- };
228
- const analysisLanguages = input.projectContext?.analysis?.languages;
229
- if (Array.isArray(analysisLanguages)) {
230
- analysisLanguages.forEach((lang) => addCandidate(lang));
231
- }
232
- const metadataLanguages = input.projectContext?.metadata?.languages;
233
- if (Array.isArray(metadataLanguages)) {
234
- metadataLanguages.forEach((lang) => addCandidate(lang));
235
- }
236
- const techStack = input.plan?.techStack;
237
- if (Array.isArray(techStack)) {
238
- techStack.forEach((entry) => addCandidate(entry));
239
- }
240
- const projectType = input.plan?.projectType;
241
- addCandidate(projectType);
242
- for (const candidate of candidates) {
243
- const normalized = this.normalizeLanguage(candidate);
244
- if (normalized) {
245
- return normalized;
246
- }
247
- }
248
- return 'typescript';
249
- }
250
- normalizeLanguage(value) {
251
- const normalized = value.toLowerCase();
252
- if (normalized.includes('golang') || normalized === 'go')
253
- return 'go';
254
- if (normalized.includes('typescript'))
255
- return 'typescript';
256
- if (normalized.includes('javascript'))
257
- return 'javascript';
258
- if (normalized.includes('python'))
259
- return 'python';
260
- if (normalized.includes('rust'))
261
- return 'rust';
262
- if (normalized.includes('c#') || normalized.includes('csharp'))
263
- return 'csharp';
264
- if (normalized.includes('php'))
265
- return 'php';
266
- return null;
267
- }
268
203
  /**
269
204
  * Call LLM to generate code
270
205
  */
271
- async callLLM(prompt, input, fallbackLanguage) {
272
- if (process.env.VITEST !== undefined) {
273
- await new Promise((resolve) => setTimeout(resolve, 10));
274
- return this.getMockGeneratedCode(fallbackLanguage, input.task);
275
- }
276
- if (!this.provider) {
277
- await new Promise((resolve) => setTimeout(resolve, 100));
278
- return this.getMockGeneratedCode(fallbackLanguage, input.task);
279
- }
206
+ async callLLM(prompt, input) {
207
+ const toolCalls = [];
280
208
  const toolRegistry = createDefaultToolRegistry();
281
209
  const toolContext = this.buildToolContext(input);
282
- if (!this.provider.generateCode) {
210
+ if (!this.provider) {
211
+ this.init();
212
+ }
213
+ if (!this.provider || !this.provider.generateCode) {
283
214
  throw new Error('AI provider does not support Codex responses API');
284
215
  }
285
216
  const response = await this.provider.generateCode(prompt, {
@@ -291,134 +222,15 @@ export class CoderAgent extends Agent {
291
222
  toolContext,
292
223
  toolChoice: 'auto',
293
224
  maxToolCalls: 3,
294
- });
295
- if (typeof response === 'string' &&
296
- (response.startsWith('OPENAI_ECHO') || response.startsWith('ANTHROPIC_ECHO'))) {
297
- return this.getMockGeneratedCode(fallbackLanguage, input.task);
298
- }
299
- return response;
300
- }
301
- /**
302
- * Generate mock code for demonstration
303
- */
304
- getMockGeneratedCode(language, task) {
305
- const taskName = task.title.toLowerCase().replace(/\s+/g, '_');
306
- switch (language) {
307
- case 'python':
308
- return `
309
- """
310
- Generated module for: ${task.title}
311
- """
312
-
313
- import logging
314
- from typing import Any
315
-
316
- logger = logging.getLogger(__name__)
317
-
318
- def ${taskName}() -> Any:
319
- """${task.description}"""
320
- try:
321
- logger.info("Executing ${taskName}")
322
- # Implementation goes here
323
- return None
324
- except Exception as e:
325
- logger.error(f"Error in ${taskName}: {e}")
326
- raise
327
- `;
328
- case 'go':
329
- return `
330
- package main
331
-
332
- import (
333
- "fmt"
334
- "log"
335
- )
336
-
337
- // ${task.title}
338
- func ${this.toPascalCase(taskName)}() error {
339
- log.Println("Executing ${taskName}")
340
- // Implementation goes here
341
- return nil
342
- }
343
- `;
344
- case 'rust':
345
- return `
346
- //! Generated module for: ${task.title}
347
-
348
- use log::{info, error};
349
-
350
- /// ${task.description}
351
- pub async fn ${taskName}() -> Result<(), Box<dyn std::error::Error>> {
352
- info!("Executing ${taskName}");
353
- // Implementation goes here
354
- Ok(())
355
- }
356
- `;
357
- case 'csharp':
358
- return `
359
- using System;
360
- using System.Logging;
361
-
362
- namespace Generated
363
- {
364
- /// <summary>
365
- /// ${task.title}
366
- /// </summary>
367
- public class ${this.toPascalCase(taskName)}
368
- {
369
- private static readonly ILogger Logger = LoggerFactory.CreateLogger<${this.toPascalCase(taskName)}>();
370
-
371
- public static void Execute()
372
- {
373
- try
374
- {
375
- Logger.LogInformation("Executing ${taskName}");
376
- // Implementation goes here
377
- }
378
- catch (Exception ex)
379
- {
380
- Logger.LogError(ex, "Error in ${taskName}");
381
- throw;
225
+ onToolCall: (event) => toolCalls.push(event),
226
+ onTextResponse: (text) => {
227
+ this.logger.info('[Coder] Answered: \n' + text);
382
228
  }
229
+ });
230
+ if (typeof response !== 'string') {
231
+ return { response: JSON.stringify(response ?? ''), toolCalls };
383
232
  }
384
- }
385
- }
386
- `;
387
- case 'typescript':
388
- default:
389
- return `
390
- /**
391
- * ${task.title}
392
- *
393
- * ${task.description}
394
- */
395
-
396
- import { Logger } from './logger';
397
-
398
- const logger = new Logger('${taskName}');
399
-
400
- export async function ${taskName}(): Promise<void> {
401
- try {
402
- logger.info('Executing ${taskName}');
403
- // Implementation goes here
404
- } catch (error) {
405
- logger.error('Error in ${taskName}', { error });
406
- throw error;
407
- }
408
- }
409
-
410
- export default ${taskName};
411
- `;
412
- }
413
- }
414
- /**
415
- * Convert string to PascalCase
416
- */
417
- toPascalCase(str) {
418
- return str
419
- .split('_')
420
- .map((word) => word.charAt(0).toUpperCase() + word.slice(1))
421
- .join('');
233
+ return { response, toolCalls };
422
234
  }
423
235
  buildReuseSection(input) {
424
236
  const rawSources = [
@@ -448,17 +260,6 @@ export default ${taskName};
448
260
  }
449
261
  return normalized.map((item) => `- ${item}`).join('\n');
450
262
  }
451
- async withTimeout(promise, timeoutMs) {
452
- let timeoutId;
453
- const timeoutPromise = new Promise((resolve) => {
454
- timeoutId = setTimeout(() => resolve(null), timeoutMs);
455
- });
456
- const result = await Promise.race([promise, timeoutPromise]);
457
- if (timeoutId) {
458
- clearTimeout(timeoutId);
459
- }
460
- return result;
461
- }
462
263
  buildToolContext(input) {
463
264
  const rootPath = input.projectContext?.root ||
464
265
  input.projectContext?.rootPath ||