@omaikit/agents 0.1.2 → 0.1.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.
Files changed (131) hide show
  1. package/README.md +17 -0
  2. package/dist/ai-provider/openai.d.ts +2 -2
  3. package/dist/ai-provider/openai.d.ts.map +1 -1
  4. package/dist/ai-provider/openai.js +74 -135
  5. package/dist/ai-provider/openai.js.map +1 -1
  6. package/dist/ai-provider/provider.d.ts +8 -1
  7. package/dist/ai-provider/provider.d.ts.map +1 -1
  8. package/dist/analysis/cache-manager.d.ts +9 -0
  9. package/dist/analysis/cache-manager.d.ts.map +1 -0
  10. package/dist/analysis/cache-manager.js +33 -0
  11. package/dist/analysis/cache-manager.js.map +1 -0
  12. package/dist/analysis/context-writer.d.ts +29 -0
  13. package/dist/analysis/context-writer.d.ts.map +1 -0
  14. package/dist/analysis/context-writer.js +168 -0
  15. package/dist/analysis/context-writer.js.map +1 -0
  16. package/dist/analysis/index.d.ts +5 -0
  17. package/dist/analysis/index.d.ts.map +1 -0
  18. package/dist/analysis/index.js +5 -0
  19. package/dist/analysis/index.js.map +1 -0
  20. package/dist/analysis/plan-writer.d.ts +11 -0
  21. package/dist/analysis/plan-writer.d.ts.map +1 -0
  22. package/dist/analysis/plan-writer.js +87 -0
  23. package/dist/analysis/plan-writer.js.map +1 -0
  24. package/dist/analysis/test-writer.d.ts +9 -0
  25. package/dist/analysis/test-writer.d.ts.map +1 -0
  26. package/dist/analysis/test-writer.js +42 -0
  27. package/dist/analysis/test-writer.js.map +1 -0
  28. package/dist/coder/coder.d.ts +0 -16
  29. package/dist/coder/coder.d.ts.map +1 -1
  30. package/dist/coder/coder.js +35 -245
  31. package/dist/coder/coder.js.map +1 -1
  32. package/dist/coder/prompt-templates.d.ts +1 -1
  33. package/dist/coder/prompt-templates.d.ts.map +1 -1
  34. package/dist/coder/prompt-templates.js +25 -46
  35. package/dist/coder/prompt-templates.js.map +1 -1
  36. package/dist/index.d.ts +1 -1
  37. package/dist/index.d.ts.map +1 -1
  38. package/dist/index.js +1 -1
  39. package/dist/index.js.map +1 -1
  40. package/dist/manager/manager.d.ts.map +1 -1
  41. package/dist/manager/manager.js +5 -16
  42. package/dist/manager/manager.js.map +1 -1
  43. package/dist/memory/memory-store.d.ts +2 -0
  44. package/dist/memory/memory-store.d.ts.map +1 -1
  45. package/dist/memory/memory-store.js +27 -0
  46. package/dist/memory/memory-store.js.map +1 -1
  47. package/dist/planner/clarification-handler.d.ts.map +1 -1
  48. package/dist/planner/clarification-handler.js +2 -12
  49. package/dist/planner/clarification-handler.js.map +1 -1
  50. package/dist/planner/plan-parser.d.ts.map +1 -1
  51. package/dist/planner/plan-parser.js +33 -31
  52. package/dist/planner/plan-parser.js.map +1 -1
  53. package/dist/planner/planner.d.ts +3 -7
  54. package/dist/planner/planner.d.ts.map +1 -1
  55. package/dist/planner/planner.js +77 -230
  56. package/dist/planner/planner.js.map +1 -1
  57. package/dist/planner/prompt-templates.d.ts +4 -2
  58. package/dist/planner/prompt-templates.d.ts.map +1 -1
  59. package/dist/planner/prompt-templates.js +38 -137
  60. package/dist/planner/prompt-templates.js.map +1 -1
  61. package/dist/tester/prompt-templates.d.ts.map +1 -1
  62. package/dist/tester/prompt-templates.js +14 -21
  63. package/dist/tester/prompt-templates.js.map +1 -1
  64. package/dist/tools/apply-patch.d.ts.map +1 -1
  65. package/dist/tools/apply-patch.js +76 -86
  66. package/dist/tools/apply-patch.js.map +1 -1
  67. package/dist/tools/default-registry.d.ts.map +1 -1
  68. package/dist/tools/default-registry.js +6 -2
  69. package/dist/tools/default-registry.js.map +1 -1
  70. package/dist/tools/edit-file.d.ts +4 -0
  71. package/dist/tools/edit-file.d.ts.map +1 -0
  72. package/dist/tools/edit-file.js +95 -0
  73. package/dist/tools/edit-file.js.map +1 -0
  74. package/dist/tools/index.d.ts +3 -2
  75. package/dist/tools/index.d.ts.map +1 -1
  76. package/dist/tools/index.js +3 -2
  77. package/dist/tools/index.js.map +1 -1
  78. package/dist/tools/list-files.d.ts +4 -0
  79. package/dist/tools/list-files.d.ts.map +1 -0
  80. package/dist/tools/list-files.js +45 -0
  81. package/dist/tools/list-files.js.map +1 -0
  82. package/dist/tools/read-file.d.ts +4 -0
  83. package/dist/tools/read-file.d.ts.map +1 -0
  84. package/dist/tools/read-file.js +39 -0
  85. package/dist/tools/read-file.js.map +1 -0
  86. package/dist/tools/registry.d.ts.map +1 -1
  87. package/dist/tools/registry.js +1 -0
  88. package/dist/tools/registry.js.map +1 -1
  89. package/dist/tools/search.js +1 -1
  90. package/dist/tools/search.js.map +1 -1
  91. package/dist/tools/types.d.ts +1 -0
  92. package/dist/tools/types.d.ts.map +1 -1
  93. package/dist/tools/utils.d.ts.map +1 -1
  94. package/dist/tools/utils.js +34 -3
  95. package/dist/tools/utils.js.map +1 -1
  96. package/dist/utils/cache-manager.d.ts +9 -0
  97. package/dist/utils/cache-manager.d.ts.map +1 -0
  98. package/dist/utils/cache-manager.js +33 -0
  99. package/dist/utils/cache-manager.js.map +1 -0
  100. package/dist/utils/context-writer.d.ts +29 -0
  101. package/dist/utils/context-writer.d.ts.map +1 -0
  102. package/dist/utils/context-writer.js +168 -0
  103. package/dist/utils/context-writer.js.map +1 -0
  104. package/dist/utils/index.d.ts +7 -0
  105. package/dist/utils/index.d.ts.map +1 -0
  106. package/dist/utils/index.js +7 -0
  107. package/dist/utils/index.js.map +1 -0
  108. package/dist/utils/plan-writer.d.ts +17 -0
  109. package/dist/utils/plan-writer.d.ts.map +1 -0
  110. package/dist/utils/plan-writer.js +175 -0
  111. package/dist/utils/plan-writer.js.map +1 -0
  112. package/dist/utils/prompt.d.ts +3 -0
  113. package/dist/utils/prompt.d.ts.map +1 -0
  114. package/dist/utils/prompt.js +55 -0
  115. package/dist/utils/prompt.js.map +1 -0
  116. package/dist/utils/test-writer.d.ts +9 -0
  117. package/dist/utils/test-writer.d.ts.map +1 -0
  118. package/dist/utils/test-writer.js +42 -0
  119. package/dist/utils/test-writer.js.map +1 -0
  120. package/package.json +3 -3
  121. package/prompts/coder/task.md +59 -0
  122. package/prompts/manager/context.md +11 -0
  123. package/prompts/planner/clarification.md +12 -0
  124. package/prompts/planner/clarification.questions.md +10 -0
  125. package/prompts/planner/optimize.md +75 -0
  126. package/prompts/planner/plan-milestones.md +73 -0
  127. package/prompts/planner/repair.md +6 -0
  128. package/prompts/planner/summary.md +22 -0
  129. package/prompts/planner/system.md +4 -0
  130. package/prompts/planner/tasks.md +82 -0
  131. package/prompts/tester/prompt.md +19 -0
@@ -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,49 +56,26 @@ 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
- const recentMemory = await this.memoryStore.readRecent(this.name, 3);
70
- const memoryContext = this.memoryStore.formatRecent(recentMemory);
71
- const reuseSection = this.buildReuseSection(input);
72
61
  const finalPrompt = [
73
- prompt,
74
- memoryContext ? `## Recent Agent Memory\n${memoryContext}` : '',
75
- reuseSection ? `## Reuse Opportunities\n${reuseSection}` : '',
62
+ prompt
76
63
  ]
77
64
  .filter(Boolean)
78
65
  .join('\n\n');
79
66
  output.result.prompt = finalPrompt;
80
- // Call LLM via AIProvider (would be injected)
81
- // 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,
67
+ const { toolCalls } = await this.callLLM(finalPrompt, input);
68
+ output.result.files = toolCalls.map((call) => {
69
+ const args = call.arguments;
70
+ return {
71
+ path: args.path || 'unknown',
72
+ content: String(args.diff || ''),
73
+ };
94
74
  });
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);
98
- // Prepare output
99
- output.result.files = files;
100
75
  output.result.metadata = {
101
76
  generatedAt: new Date().toISOString(),
102
- model: 'mock-model',
77
+ model: this.cfg.coderModel,
103
78
  };
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
79
  await this.afterExecute(output);
110
80
  }
111
81
  catch (error) {
@@ -115,13 +85,6 @@ export class CoderAgent extends Agent {
115
85
  code: 'CODER_ERROR',
116
86
  message: error.message,
117
87
  };
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
88
  }
126
89
  output.metadata.durationMs = Date.now() - startTime;
127
90
  return output;
@@ -215,74 +178,20 @@ export class CoderAgent extends Agent {
215
178
  throw new Error('Task must have id and title');
216
179
  }
217
180
  }
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
181
  /**
269
182
  * Call LLM to generate code
270
183
  */
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
- }
184
+ async callLLM(prompt, input) {
185
+ const toolCalls = [];
280
186
  const toolRegistry = createDefaultToolRegistry();
281
187
  const toolContext = this.buildToolContext(input);
282
- if (!this.provider.generateCode) {
188
+ if (!this.provider) {
189
+ await this.init();
190
+ }
191
+ if (!this.provider) {
283
192
  throw new Error('AI provider does not support Codex responses API');
284
193
  }
285
- const response = await this.provider.generateCode(prompt, {
194
+ const response = await this.provider.generate(prompt, {
286
195
  model: this.cfg.coderModel,
287
196
  maxTokens: undefined,
288
197
  temperature: undefined,
@@ -290,135 +199,27 @@ export class CoderAgent extends Agent {
290
199
  toolRegistry,
291
200
  toolContext,
292
201
  toolChoice: 'auto',
293
- maxToolCalls: 3,
202
+ maxToolCalls: 8,
203
+ onToolCall: (event) => {
204
+ if (event.name === 'apply_patch_call') {
205
+ toolCalls.push(event);
206
+ }
207
+ },
208
+ onTextResponse: (text) => {
209
+ this.logger.info(text + '\n');
210
+ },
294
211
  });
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;
382
- }
212
+ if (typeof response !== 'string') {
213
+ return { response: JSON.stringify(response ?? ''), toolCalls };
383
214
  }
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('');
215
+ this.memoryStore.append(this.name, {
216
+ timestamp: new Date().toISOString(),
217
+ prompt,
218
+ response,
219
+ taskId: input.task.id,
220
+ metadata: { type: 'llm_response' },
221
+ });
222
+ return { response, toolCalls };
422
223
  }
423
224
  buildReuseSection(input) {
424
225
  const rawSources = [
@@ -448,17 +249,6 @@ export default ${taskName};
448
249
  }
449
250
  return normalized.map((item) => `- ${item}`).join('\n');
450
251
  }
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
252
  buildToolContext(input) {
463
253
  const rootPath = input.projectContext?.root ||
464
254
  input.projectContext?.rootPath ||
@@ -1 +1 @@
1
- {"version":3,"file":"coder.js","sourceRoot":"","sources":["../../src/coder/coder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"coder.js","sourceRoot":"","sources":["../../src/coder/coder.ts"],"names":[],"mappings":"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"}
@@ -7,7 +7,7 @@ export declare class PromptTemplates {
7
7
  * Generate a prompt for code generation
8
8
  */
9
9
  generatePrompt(task: Task, projectContext: any, plan: any): Promise<string>;
10
- private getBasePrompt;
11
10
  private formatContextSummary;
11
+ private formatRiskFactors;
12
12
  }
13
13
  //# sourceMappingURL=prompt-templates.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"prompt-templates.d.ts","sourceRoot":"","sources":["../../src/coder/prompt-templates.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAE5C,qBAAa,eAAe;IAC1B;;OAEG;IACG,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,cAAc,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC;IAuCjF,OAAO,CAAC,aAAa;IAQrB,OAAO,CAAC,oBAAoB;CA0B7B"}
1
+ {"version":3,"file":"prompt-templates.d.ts","sourceRoot":"","sources":["../../src/coder/prompt-templates.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAG5C,qBAAa,eAAe;IAC1B;;OAEG;IACG,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,cAAc,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC;IAcjF,OAAO,CAAC,oBAAoB;IA6B5B,OAAO,CAAC,iBAAiB;CAQ1B"}
@@ -1,55 +1,24 @@
1
1
  /**
2
2
  * Code Generation Prompt Templates
3
3
  */
4
+ import { readPrompt } from '../utils/prompt.js';
4
5
  export class PromptTemplates {
5
6
  /**
6
7
  * Generate a prompt for code generation
7
8
  */
8
9
  async generatePrompt(task, projectContext, plan) {
9
- const basePrompt = this.getBasePrompt();
10
- const contextSummary = this.formatContextSummary(projectContext, plan);
11
- return `
12
- ${basePrompt}
13
-
14
- ## Task Details
15
- Title: ${task.title}
16
- Description: ${task.description}
17
- Type: ${task.type}
18
- Estimated Effort: ${task.estimatedEffort} hours
19
-
20
- ## Acceptance Criteria
21
- ${task.acceptanceCriteria.map((c) => `- ${c}`).join('\n')}
22
-
23
- ## Project Context (from .omaikit/context.json)
24
- ${contextSummary}
25
-
26
- ## Standards
27
- - PSR-12
28
- - PSR-4
29
- - SOLID
30
- - KISS
31
- - DRY
32
- - Clean Code principles
33
-
34
- ## Requirements
35
- 1. Write production-ready code with proper error handling
36
- 2. Include logging statements for debugging
37
- 3. Add clear documentation where needed
38
- 4. Keep functions small and focused
39
- 5. Keep the code testable and maintainable
40
-
41
- ## Output Format
42
- Provide the generated code as a single response with file paths and content.
43
- `;
10
+ const contextSummary = this.formatContextSummary(projectContext, plan, task);
11
+ const acceptanceCriteria = task.acceptanceCriteria.map((c) => `- ${c}`).join('\n');
12
+ return readPrompt('coder.task', {
13
+ taskTitle: task.title,
14
+ taskDescription: task.description,
15
+ taskType: task.type,
16
+ taskEffort: String(task.estimatedEffort),
17
+ acceptanceCriteria,
18
+ contextSummary,
19
+ });
44
20
  }
45
- getBasePrompt() {
46
- return `You are a senior software engineer generating production-ready code that:
47
- - Follows PSR-12 and PSR-4
48
- - Applies SOLID, KISS, DRY, and Clean Code principles
49
- - Matches the existing project conventions from context
50
- - Uses structured logging (or the project's logger)`;
51
- }
52
- formatContextSummary(projectContext, plan) {
21
+ formatContextSummary(projectContext, plan, task) {
53
22
  const project = projectContext?.project ?? projectContext;
54
23
  const analysis = projectContext?.analysis ?? {};
55
24
  const name = project?.name || 'Unknown project';
@@ -58,8 +27,6 @@ Provide the generated code as a single response with file paths and content.
58
27
  ? `Description: ${project.description}`
59
28
  : 'Description: (none)';
60
29
  const languages = Array.isArray(analysis.languages) ? analysis.languages.join(', ') : 'unknown';
61
- const fileCount = typeof analysis.fileCount === 'number' ? analysis.fileCount : 'unknown';
62
- const totalLOC = typeof analysis.totalLOC === 'number' ? analysis.totalLOC : 'unknown';
63
30
  const dependencies = Array.isArray(analysis.dependencies)
64
31
  ? analysis.dependencies.slice(0, 12).join(', ')
65
32
  : 'unknown';
@@ -70,9 +37,21 @@ Provide the generated code as a single response with file paths and content.
70
37
  description,
71
38
  planTitle,
72
39
  `Languages: ${languages}`,
73
- `Files: ${fileCount}, LOC: ${totalLOC}`,
74
40
  `Dependencies (sample): ${dependencies}`,
41
+ `Target Module: ${task.targetModule || 'unknown'}`,
42
+ `Affected Modules: ${Array.isArray(task.inputDependencies) ? task.inputDependencies.join(', ') : 'unknown'}`,
43
+ `Suggested Approach: ${task.suggestedApproach || 'none'}`,
44
+ `Technical Notes: ${task.technicalNotes || 'none'}`,
45
+ `Risk Factors: ${this.formatRiskFactors(task.riskFactors)}`,
75
46
  ].join('\n');
76
47
  }
48
+ formatRiskFactors(riskFactors) {
49
+ if (!riskFactors || riskFactors.length === 0) {
50
+ return 'None';
51
+ }
52
+ return riskFactors.map((rf, idx) => {
53
+ return `\n${idx + 1}. Description: ${rf.description}\n Likelihood: ${rf.likelihood}\n Impact: ${rf.impact}\n Mitigation: ${rf.mitigation}`;
54
+ }).join('\n');
55
+ }
77
56
  }
78
57
  //# sourceMappingURL=prompt-templates.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"prompt-templates.js","sourceRoot":"","sources":["../../src/coder/prompt-templates.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,MAAM,OAAO,eAAe;IAC1B;;OAEG;IACH,KAAK,CAAC,cAAc,CAAC,IAAU,EAAE,cAAmB,EAAE,IAAS;QAC7D,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QACxC,MAAM,cAAc,GAAG,IAAI,CAAC,oBAAoB,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;QAEvE,OAAO;EACT,UAAU;;;SAGH,IAAI,CAAC,KAAK;eACJ,IAAI,CAAC,WAAW;QACvB,IAAI,CAAC,IAAI;oBACG,IAAI,CAAC,eAAe;;;EAGtC,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;;;EAGvD,cAAc;;;;;;;;;;;;;;;;;;;CAmBf,CAAC;IACA,CAAC;IAEO,aAAa;QACnB,OAAO;;;;oDAIyC,CAAC;IACnD,CAAC;IAEO,oBAAoB,CAAC,cAAmB,EAAE,IAAS;QACzD,MAAM,OAAO,GAAG,cAAc,EAAE,OAAO,IAAI,cAAc,CAAC;QAC1D,MAAM,QAAQ,GAAG,cAAc,EAAE,QAAQ,IAAI,EAAE,CAAC;QAChD,MAAM,IAAI,GAAG,OAAO,EAAE,IAAI,IAAI,iBAAiB,CAAC;QAChD,MAAM,QAAQ,GAAG,OAAO,EAAE,QAAQ,IAAI,cAAc,CAAC;QACrD,MAAM,WAAW,GAAG,OAAO,EAAE,WAAW;YACtC,CAAC,CAAC,gBAAgB,OAAO,CAAC,WAAW,EAAE;YACvC,CAAC,CAAC,qBAAqB,CAAC;QAC1B,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAChG,MAAM,SAAS,GAAG,OAAO,QAAQ,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;QAC1F,MAAM,QAAQ,GAAG,OAAO,QAAQ,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;QACvF,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC;YACvD,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;YAC/C,CAAC,CAAC,SAAS,CAAC;QACd,MAAM,SAAS,GAAG,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC;QAEvE,OAAO;YACL,YAAY,IAAI,EAAE;YAClB,SAAS,QAAQ,EAAE;YACnB,WAAW;YACX,SAAS;YACT,cAAc,SAAS,EAAE;YACzB,UAAU,SAAS,UAAU,QAAQ,EAAE;YACvC,0BAA0B,YAAY,EAAE;SACzC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACf,CAAC;CACF"}
1
+ {"version":3,"file":"prompt-templates.js","sourceRoot":"","sources":["../../src/coder/prompt-templates.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -7,7 +7,7 @@ export * from './logger.js';
7
7
  export * from './errors.js';
8
8
  export * from './ai-provider/factory.js';
9
9
  export * from './tools/index.js';
10
- export * from './utils/json.js';
10
+ export * from './utils/index.js';
11
11
  export { Planner } from './planner/planner.js';
12
12
  export { CoderAgent } from './coder/coder.js';
13
13
  export { TesterAgent, TesterAgentInput, TesterAgentOutput } from './tester/tester.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,uBAAuB,CAAC;AACtC,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACnF,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,uBAAuB,CAAC;AACtC,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AAExB,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACnF,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC"}
package/dist/index.js CHANGED
@@ -7,7 +7,7 @@ export * from './logger.js';
7
7
  export * from './errors.js';
8
8
  export * from './ai-provider/factory.js';
9
9
  export * from './tools/index.js';
10
- export * from './utils/json.js';
10
+ export * from './utils/index.js';
11
11
  export { Planner } from './planner/planner.js';
12
12
  export { CoderAgent } from './coder/coder.js';
13
13
  export { TesterAgent } from './tester/tester.js';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,uBAAuB,CAAC;AACtC,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAuC,MAAM,iBAAiB,CAAC;AACnF,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,uBAAuB,CAAC;AACtC,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AAExB,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAuC,MAAM,iBAAiB,CAAC;AACnF,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/manager/manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AACjC,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACxD,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAEnC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAUjD,MAAM,WAAW,iBAAkB,SAAQ,UAAU;IACnD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,cAAc,GAAG,SAAS,CAAC;CACrC;AAED,qBAAa,YAAa,SAAQ,KAAK;IAC9B,IAAI,SAAa;IAExB,OAAO,CAAC,YAAY,CAAe;IACnC,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;IAS3B,QAAQ,IAAI,YAAY;IAIxB,cAAc,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,WAAW;IAQxC,OAAO,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,WAAW,CAAC;IAmCvD,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;YAa7D,uBAAuB;YAMvB,eAAe;IA2C7B,OAAO,CAAC,kBAAkB;IAgB1B,OAAO,CAAC,gBAAgB;YAIV,gBAAgB;IAa9B,OAAO,CAAC,SAAS;CAGlB"}
1
+ {"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/manager/manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AACjC,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACxD,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAEnC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAWjD,MAAM,WAAW,iBAAkB,SAAQ,UAAU;IACnD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,cAAc,GAAG,SAAS,CAAC;CACrC;AAED,qBAAa,YAAa,SAAQ,KAAK;IAC9B,IAAI,SAAa;IAExB,OAAO,CAAC,YAAY,CAAe;IACnC,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,QAAQ,IAAI,YAAY;IAIxB,cAAc,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,WAAW;IAQxC,OAAO,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,WAAW,CAAC;IAmCvD,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;YAa7D,uBAAuB;YAMvB,eAAe;IA2C7B,OAAO,CAAC,kBAAkB;IAK1B,OAAO,CAAC,gBAAgB;YAIV,gBAAgB;IAa9B,OAAO,CAAC,SAAS;CAGlB"}
@@ -1,12 +1,13 @@
1
1
  import { Agent } from '../agent.js';
2
2
  import { createDefaultToolRegistry } from '../tools/default-registry.js';
3
3
  import { createProvider } from '../ai-provider/factory.js';
4
- import { ContextWriter } from '@omaikit/analysis';
4
+ import { ContextWriter } from '../utils/context-writer.js';
5
5
  import { MemoryStore } from '../memory/memory-store.js';
6
6
  import * as fs from 'fs';
7
7
  import * as path from 'path';
8
8
  import { loadConfig } from '@omaikit/config';
9
9
  import { parseJsonFromText } from '../utils/json.js';
10
+ import { readPrompt } from '../utils/prompt.js';
10
11
  export class ManagerAgent extends Agent {
11
12
  name = 'Manager';
12
13
  toolRegistry;
@@ -22,7 +23,6 @@ export class ManagerAgent extends Agent {
22
23
  async init() {
23
24
  try {
24
25
  this.provider = await createProvider();
25
- this.logger.info('Manager initialized');
26
26
  }
27
27
  catch (error) {
28
28
  this.logger.warn('Could not initialize AI provider, manager is offline');
@@ -103,7 +103,7 @@ export class ManagerAgent extends Agent {
103
103
  toolRegistry: this.toolRegistry,
104
104
  toolContext,
105
105
  toolChoice: 'auto',
106
- maxToolCalls: 8,
106
+ maxToolCalls: 3,
107
107
  });
108
108
  await this.memoryStore.append(this.name, {
109
109
  timestamp: new Date().toISOString(),
@@ -120,19 +120,8 @@ export class ManagerAgent extends Agent {
120
120
  return this.parseContextJson(response);
121
121
  }
122
122
  buildContextPrompt(rootPath, description) {
123
- return [
124
- 'You are the Manager agent. Analyze the current project using tools and produce a context.json payload.',
125
- 'Use tools to read key files (package.json, README, config files) and search the repo for languages, frameworks, and dependencies.',
126
- 'Return ONLY a JSON object with this exact schema:',
127
- '{',
128
- ' "project": { "name": string, "rootPath": string, "description"?: string },',
129
- ' "analysis": { "languages": string[], "fileCount": number, "totalLOC": number, "dependencies": string[] },',
130
- ' "generatedAt": string',
131
- '}',
132
- description ? `User request: ${description}` : 'User request: (none)',
133
- `Project root: ${rootPath}`,
134
- 'If unsure, infer from files and keep values conservative. Do not include extra keys. Return raw JSON only.',
135
- ].join('\n');
123
+ const descriptionLine = description ? `User request: ${description}` : 'User request: (none)';
124
+ return readPrompt('manager.context', { descriptionLine, rootPath });
136
125
  }
137
126
  parseContextJson(response) {
138
127
  return parseJsonFromText(response);