@omaikit/agents 0.1.3 → 0.1.5

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 (100) 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 +55 -136
  5. package/dist/ai-provider/openai.js.map +1 -1
  6. package/dist/ai-provider/provider.d.ts +11 -6
  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 +2 -1
  29. package/dist/coder/coder.d.ts.map +1 -1
  30. package/dist/coder/coder.js +37 -76
  31. package/dist/coder/coder.js.map +1 -1
  32. package/dist/coder/prompt-templates.d.ts +3 -2
  33. package/dist/coder/prompt-templates.d.ts.map +1 -1
  34. package/dist/coder/prompt-templates.js +33 -61
  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 +8 -35
  42. package/dist/manager/manager.js.map +1 -1
  43. package/dist/planner/clarification-handler.d.ts.map +1 -1
  44. package/dist/planner/clarification-handler.js +2 -12
  45. package/dist/planner/clarification-handler.js.map +1 -1
  46. package/dist/planner/plan-parser.d.ts.map +1 -1
  47. package/dist/planner/plan-parser.js +33 -31
  48. package/dist/planner/plan-parser.js.map +1 -1
  49. package/dist/planner/planner.d.ts +3 -7
  50. package/dist/planner/planner.d.ts.map +1 -1
  51. package/dist/planner/planner.js +81 -230
  52. package/dist/planner/planner.js.map +1 -1
  53. package/dist/planner/prompt-templates.d.ts +5 -2
  54. package/dist/planner/prompt-templates.d.ts.map +1 -1
  55. package/dist/planner/prompt-templates.js +42 -137
  56. package/dist/planner/prompt-templates.js.map +1 -1
  57. package/dist/tester/prompt-templates.d.ts.map +1 -1
  58. package/dist/tester/prompt-templates.js +14 -21
  59. package/dist/tester/prompt-templates.js.map +1 -1
  60. package/dist/tools/list-files.d.ts.map +1 -1
  61. package/dist/tools/list-files.js +8 -1
  62. package/dist/tools/list-files.js.map +1 -1
  63. package/dist/tools/registry.js +1 -1
  64. package/dist/tools/registry.js.map +1 -1
  65. package/dist/tools/utils.d.ts.map +1 -1
  66. package/dist/tools/utils.js +34 -3
  67. package/dist/tools/utils.js.map +1 -1
  68. package/dist/utils/cache-manager.d.ts +9 -0
  69. package/dist/utils/cache-manager.d.ts.map +1 -0
  70. package/dist/utils/cache-manager.js +33 -0
  71. package/dist/utils/cache-manager.js.map +1 -0
  72. package/dist/utils/context-writer.d.ts +29 -0
  73. package/dist/utils/context-writer.d.ts.map +1 -0
  74. package/dist/utils/context-writer.js +167 -0
  75. package/dist/utils/context-writer.js.map +1 -0
  76. package/dist/utils/index.d.ts +9 -0
  77. package/dist/utils/index.d.ts.map +1 -0
  78. package/dist/utils/index.js +40 -0
  79. package/dist/utils/index.js.map +1 -0
  80. package/dist/utils/plan-writer.d.ts +17 -0
  81. package/dist/utils/plan-writer.d.ts.map +1 -0
  82. package/dist/utils/plan-writer.js +175 -0
  83. package/dist/utils/plan-writer.js.map +1 -0
  84. package/dist/utils/prompt.d.ts +3 -0
  85. package/dist/utils/prompt.d.ts.map +1 -0
  86. package/dist/utils/prompt.js +55 -0
  87. package/dist/utils/prompt.js.map +1 -0
  88. package/dist/utils/test-writer.d.ts +9 -0
  89. package/dist/utils/test-writer.d.ts.map +1 -0
  90. package/dist/utils/test-writer.js +42 -0
  91. package/dist/utils/test-writer.js.map +1 -0
  92. package/package.json +3 -3
  93. package/prompts/coder/instructions.md +42 -0
  94. package/prompts/coder/task.md +13 -0
  95. package/prompts/manager/context.md +2 -0
  96. package/prompts/manager/instructions.md +12 -0
  97. package/prompts/planner/instructions.md +74 -0
  98. package/prompts/planner/plan-milestones.md +30 -0
  99. package/prompts/planner/tasks.md +23 -0
  100. package/prompts/tester/prompt.md +19 -0
@@ -3,17 +3,18 @@ import { Agent } from '../agent.js';
3
3
  import { createProvider } from '../ai-provider/factory.js';
4
4
  import { PromptTemplates } from './prompt-templates.js';
5
5
  import { PlanParser } from './plan-parser.js';
6
- import { PlanValidator } from './plan-validator.js';
7
- import { ClarificationHandler } from './clarification-handler.js';
8
6
  import { createDefaultToolRegistry } from '../tools/default-registry.js';
9
7
  import { MemoryStore } from '../memory/memory-store.js';
10
8
  import { loadConfig } from '@omaikit/config';
9
+ import { ContextWriter, PlanWriter } from '../utils/index.js';
10
+ import * as fs from 'fs';
11
+ import * as path from 'path';
11
12
  export class Planner extends Agent {
12
13
  name = 'Planner';
13
14
  promptTemplates;
14
15
  planParser;
15
- validator;
16
- clarificationHandler;
16
+ planWriter;
17
+ contextWriter;
17
18
  provider;
18
19
  progressCallbacks = [];
19
20
  memoryStore;
@@ -22,15 +23,14 @@ export class Planner extends Agent {
22
23
  super(logger);
23
24
  this.promptTemplates = new PromptTemplates();
24
25
  this.planParser = new PlanParser();
25
- this.validator = new PlanValidator();
26
- this.clarificationHandler = new ClarificationHandler();
26
+ this.planWriter = new PlanWriter();
27
+ this.contextWriter = new ContextWriter();
27
28
  this.memoryStore = new MemoryStore();
28
29
  this.cfg = loadConfig();
29
30
  }
30
31
  async init() {
31
32
  try {
32
33
  this.provider = await createProvider();
33
- this.logger.info('Planner initialized');
34
34
  }
35
35
  catch (error) {
36
36
  this.logger.warn('Could not initialize Planner, using mock mode');
@@ -50,96 +50,91 @@ export class Planner extends Agent {
50
50
  await this.beforeExecute(input);
51
51
  // Always initialize provider (will use real API if key is available)
52
52
  await this.init();
53
+ if (!this.provider) {
54
+ throw new Error('AI provider not initialized');
55
+ }
53
56
  // Validate input
54
57
  if (!planInput.description || planInput.description.trim().length === 0) {
55
58
  throw new Error('Description is required');
56
59
  }
57
- // Generate prompt from input
58
- const basePrompt = this.promptTemplates.generatePrompt(planInput.description, planInput.projectType, planInput.techStack);
60
+ // Intructions prompt
61
+ const instructions = this.promptTemplates.getInstructions();
62
+ // Generate prompts from input (step-by-step)
63
+ const step1Prompt = this.promptTemplates.generatePlanMilestonesPrompt(planInput.description, planInput.projectDescription, planInput.techStack);
59
64
  const recentMemory = await this.memoryStore.readRecent(this.name, 3);
60
65
  const memoryContext = this.memoryStore.formatRecent(recentMemory);
61
66
  const prompt = memoryContext
62
- ? `${basePrompt}\n\n## Recent Agent Memory\n${memoryContext}`
63
- : basePrompt;
67
+ ? `${step1Prompt}\n\n## Recent Agent Memory\n${memoryContext}`
68
+ : step1Prompt;
64
69
  this.logger.info(`Generating plan for: ${planInput.description.substring(0, 50)}...`);
65
- // Call AI provider to generate plan
66
- this.emit('progress', { status: 'generating', message: 'Calling AI provider' });
67
- // In test mode, use mock generation for speed
68
- let llmResponse;
69
- if (process.env.VITEST !== undefined) {
70
- this.logger.info('Using mock plan generation (test mode)');
71
- llmResponse = this.generateMockPlan(planInput);
70
+ this.emit('progress', { status: 'generating', message: 'Generating plan & milestones', percent: 20 });
71
+ const toolRegistry = createDefaultToolRegistry();
72
+ const toolContext = this.buildToolContext(planInput);
73
+ const step1Response = await this.provider.generate(prompt, {
74
+ model: this.cfg.plannerModel,
75
+ tools: toolRegistry.getDefinitions(),
76
+ toolRegistry,
77
+ toolContext,
78
+ toolChoice: 'auto',
79
+ maxToolCalls: 3,
80
+ instructions,
81
+ });
82
+ await this.memoryStore.append(this.name, {
83
+ timestamp: new Date().toISOString(),
84
+ prompt,
85
+ response: step1Response,
86
+ metadata: { step: 'plan_milestones' },
87
+ });
88
+ const projectContext = await this.contextWriter.readContext();
89
+ if (!projectContext) {
90
+ throw new Error('Project context file not found or invalid');
91
+ }
92
+ const planFile = this.getLatestPlanFile();
93
+ if (!planFile) {
94
+ throw new Error('Planner did not create a plan file');
72
95
  }
73
- else {
74
- if (!this.provider) {
75
- throw new Error('AI provider not initialized');
76
- }
77
- const toolRegistry = createDefaultToolRegistry();
78
- const toolContext = this.buildToolContext(planInput);
79
- llmResponse = await this.provider.generate(prompt, {
96
+ const planFromFile = await this.planWriter.readPlan(planFile);
97
+ if (!planFromFile) {
98
+ throw new Error('Plan file not found or invalid');
99
+ }
100
+ for (const m of planFromFile.milestones) {
101
+ const percent = 20 +
102
+ Math.floor(((planFromFile.milestones.indexOf(m) + 1) / planFromFile.milestones.length) * 80);
103
+ this.emit('progress', {
104
+ status: 'generating',
105
+ message: `Generating tasks for Milestone: ${m.title}`,
106
+ percent,
107
+ });
108
+ const taskPrompt = this.promptTemplates.generateTasksPrompt(projectContext, planFromFile, m);
109
+ const taskResp = await this.provider.generate(taskPrompt, {
80
110
  model: this.cfg.plannerModel,
81
111
  tools: toolRegistry.getDefinitions(),
82
112
  toolRegistry,
83
113
  toolContext,
84
114
  toolChoice: 'auto',
115
+ maxToolCalls: 3,
116
+ instructions,
117
+ });
118
+ await this.memoryStore.append(this.name, {
119
+ timestamp: new Date().toISOString(),
120
+ prompt: taskPrompt,
121
+ response: taskResp,
122
+ metadata: { step: 'tasks' },
85
123
  });
86
- if (llmResponse.startsWith('OPENAI_ECHO') || llmResponse.startsWith('ANTHROPIC_ECHO')) {
87
- this.logger.warn('Using mock plan generation (no API key configured)');
88
- llmResponse = this.generateMockPlan(planInput);
89
- }
90
- }
91
- if (this.isLikelyTruncated(llmResponse)) {
92
- if (this.provider && process.env.VITEST === undefined) {
93
- this.logger.warn('LLM response appears truncated; attempting repair');
94
- const repairPrompt = this.promptTemplates.generateRepairPrompt(llmResponse);
95
- llmResponse = await this.provider.generate(repairPrompt);
96
- }
97
- }
98
- this.emit('progress', { status: 'parsing', message: 'Parsing LLM response' });
99
- let parsedPlan;
100
- try {
101
- parsedPlan = this.planParser.parse(llmResponse);
102
- }
103
- catch (parseError) {
104
- if (this.provider && process.env.VITEST === undefined) {
105
- this.logger.warn('Plan JSON parse failed, attempting repair');
106
- const repairPrompt = this.promptTemplates.generateRepairPrompt(llmResponse);
107
- const repaired = await this.provider.generate(repairPrompt);
108
- parsedPlan = this.planParser.parse(repaired);
109
- }
110
- else {
111
- throw parseError;
112
- }
113
- }
114
- this.emit('progress', {
115
- status: 'validating',
116
- message: 'Validating plan structure',
117
- });
118
- const validationResult = this.validator.validate(parsedPlan);
119
- if (!validationResult.valid) {
120
- throw new Error(`Plan validation failed: ${validationResult.errors.join(', ')}`);
121
- }
122
- const depResult = this.validator.validateDependencies(parsedPlan.milestones.flatMap((m) => m.tasks));
123
- if (depResult.hasCycles) {
124
- throw new Error('Plan contains circular dependencies');
125
124
  }
126
125
  this.emit('progress', {
127
126
  status: 'complete',
128
127
  message: 'Plan generation complete',
128
+ percent: 100,
129
129
  });
130
- const projectContext = this.buildProjectContext(planInput);
130
+ const plan = this.planParser.parse(JSON.stringify(planFromFile));
131
131
  const result = {
132
132
  data: {
133
- plan: parsedPlan,
133
+ plan,
134
134
  projectContext,
135
135
  },
136
136
  };
137
137
  await this.afterExecute(result);
138
- await this.memoryStore.append(this.name, {
139
- timestamp: new Date().toISOString(),
140
- prompt,
141
- response: llmResponse,
142
- });
143
138
  return result;
144
139
  }
145
140
  catch (error) {
@@ -160,128 +155,6 @@ export class Planner extends Agent {
160
155
  };
161
156
  }
162
157
  }
163
- generateMockPlan(input) {
164
- // Fallback mock response when no API key is available
165
- const mockPlan = {
166
- id: `plan-${Date.now()}`,
167
- title: `Plan for: ${input.description.substring(0, 30)}`,
168
- description: input.description,
169
- clarifications: [],
170
- milestones: [
171
- {
172
- id: 'M1',
173
- title: 'Setup & Foundation',
174
- description: 'Project setup and baseline configuration',
175
- duration: 5,
176
- successCriteria: ['Project structure created', 'Tooling configured'],
177
- tasks: [
178
- {
179
- id: 'T1',
180
- title: 'Project initialization',
181
- description: 'Setup project structure and configuration',
182
- type: 'infrastructure',
183
- estimatedEffort: 3,
184
- acceptanceCriteria: [
185
- 'Repository structure is created',
186
- 'Configuration files are added',
187
- ],
188
- inputDependencies: [],
189
- outputDependencies: ['T2'],
190
- affectedModules: ['core'],
191
- status: 'planned',
192
- },
193
- {
194
- id: 'T2',
195
- title: 'Development environment',
196
- description: 'Configure development tools and dependencies',
197
- type: 'infrastructure',
198
- estimatedEffort: 2,
199
- acceptanceCriteria: ['Dependencies installed', 'Linting and formatting configured'],
200
- inputDependencies: ['T1'],
201
- outputDependencies: ['T3'],
202
- affectedModules: ['tooling'],
203
- status: 'planned',
204
- },
205
- ],
206
- },
207
- {
208
- id: 'M2',
209
- title: 'Core Development',
210
- description: 'Implement primary functionality',
211
- duration: 10,
212
- successCriteria: ['Core features implemented', 'Basic tests pass'],
213
- tasks: [
214
- {
215
- id: 'T3',
216
- title: 'Implement core features',
217
- description: 'Build main functionality',
218
- type: 'feature',
219
- estimatedEffort: 8,
220
- acceptanceCriteria: [
221
- 'Core functionality implemented',
222
- 'Endpoints/modules behave as expected',
223
- ],
224
- inputDependencies: ['T1', 'T2'],
225
- outputDependencies: [],
226
- affectedModules: ['core'],
227
- status: 'planned',
228
- },
229
- ],
230
- },
231
- ],
232
- };
233
- return JSON.stringify(mockPlan);
234
- }
235
- isLikelyTruncated(response) {
236
- const trimmed = response.trim();
237
- if (!trimmed || trimmed === '{}') {
238
- return true;
239
- }
240
- const openBraces = (trimmed.match(/{/g) || []).length;
241
- const closeBraces = (trimmed.match(/}/g) || []).length;
242
- if (openBraces === 0 || closeBraces === 0) {
243
- return true;
244
- }
245
- if (closeBraces < openBraces) {
246
- return true;
247
- }
248
- if (!trimmed.includes('milestones') && !trimmed.includes('"milestones"')) {
249
- return true;
250
- }
251
- return false;
252
- }
253
- buildProjectContext(input) {
254
- const languages = this.inferLanguages(input.techStack);
255
- return {
256
- name: input.projectName || 'omaikit-project',
257
- root: input.rootPath || process.cwd(),
258
- modules: [],
259
- dependencyGraph: { modules: {}, edges: [] },
260
- metadata: {
261
- totalLOC: 0,
262
- fileCount: 0,
263
- languages,
264
- dependencies: this.inferDependencies(input.techStack),
265
- },
266
- codePatterns: {
267
- namingConventions: {
268
- variables: 'camelCase',
269
- functions: 'camelCase',
270
- classes: 'PascalCase',
271
- constants: 'UPPER_SNAKE_CASE',
272
- files: 'kebab-case',
273
- },
274
- errorHandling: { pattern: 'try-catch', examples: [] },
275
- structuralPattern: {
276
- modulesPerFeature: 2,
277
- averageModuleSize: 'medium',
278
- organizationStyle: 'by-feature',
279
- },
280
- comments: { docstringFormat: 'jsdoc', commentCoverage: 0 },
281
- testOrganization: { colocated: true, pattern: '__tests__' },
282
- },
283
- };
284
- }
285
158
  buildToolContext(input) {
286
159
  return {
287
160
  rootPath: input.rootPath || input.projectRoot || process.cwd(),
@@ -289,45 +162,23 @@ export class Planner extends Agent {
289
162
  logger: this.logger,
290
163
  };
291
164
  }
292
- inferLanguages(techStack) {
293
- if (!Array.isArray(techStack) || techStack.length === 0) {
294
- return ['typescript'];
165
+ getLatestPlanFile() {
166
+ const planDir = path.join('.omaikit', 'plans');
167
+ if (!fs.existsSync(planDir)) {
168
+ return undefined;
295
169
  }
296
- const normalized = techStack.map((t) => t.toLowerCase());
297
- const languages = new Set();
298
- if (normalized.some((t) => t.includes('typescript') || t === 'ts'))
299
- languages.add('typescript');
300
- if (normalized.some((t) => t.includes('javascript') || t === 'js' || t.includes('node')))
301
- languages.add('javascript');
302
- if (normalized.some((t) => t.includes('python') || t === 'py'))
303
- languages.add('python');
304
- if (normalized.some((t) => t.includes('go') || t.includes('golang')))
305
- languages.add('go');
306
- if (normalized.some((t) => t.includes('rust')))
307
- languages.add('rust');
308
- if (normalized.some((t) => t.includes('c#') || t.includes('csharp')))
309
- languages.add('csharp');
310
- if (normalized.some((t) => t.includes('php')))
311
- languages.add('php');
312
- return languages.size > 0 ? Array.from(languages) : ['typescript'];
313
- }
314
- inferDependencies(techStack) {
315
- if (!Array.isArray(techStack)) {
316
- return [];
170
+ const indices = fs
171
+ .readdirSync(planDir)
172
+ .map((file) => /^P(\d+)\.json$/i.exec(file))
173
+ .filter((match) => match !== null)
174
+ .map((match) => Number.parseInt(match[1], 10))
175
+ .filter((value) => !Number.isNaN(value));
176
+ if (indices.length === 0) {
177
+ return undefined;
317
178
  }
318
- const deps = new Set();
319
- techStack.forEach((entry) => {
320
- const normalized = entry.toLowerCase();
321
- if (normalized.includes('express'))
322
- deps.add('express');
323
- if (normalized.includes('react'))
324
- deps.add('react');
325
- if (normalized.includes('nestjs'))
326
- deps.add('@nestjs/core');
327
- if (normalized.includes('prisma'))
328
- deps.add('prisma');
329
- });
330
- return Array.from(deps);
179
+ const latest = Math.max(...indices);
180
+ const planId = `P${String(latest).padStart(3, '0')}`;
181
+ return path.join('plans', `${planId}.json`);
331
182
  }
332
183
  }
333
184
  //# sourceMappingURL=planner.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"planner.js","sourceRoot":"","sources":["../../src/planner/planner.ts"],"names":[],"mappings":"AAAA,8BAA8B;AAC9B,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAGjC,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAErD,OAAO,EAAE,UAAU,EAAiB,MAAM,iBAAiB,CAAC;AAG5D,MAAM,OAAO,OAAQ,SAAQ,KAAK;IACzB,IAAI,GAAG,SAAS,CAAC;IAEhB,eAAe,CAAkB;IACjC,UAAU,CAAa;IACvB,SAAS,CAAgB;IACzB,oBAAoB,CAAuB;IAC3C,QAAQ,CAAc;IACtB,iBAAiB,GAAgC,EAAE,CAAC;IACpD,WAAW,CAAc;IACzB,GAAG,CAAgB;IAE3B,YAAY,MAAc;QACxB,KAAK,CAAC,MAAM,CAAC,CAAC;QACd,IAAI,CAAC,eAAe,GAAG,IAAI,eAAe,EAAE,CAAC;QAC7C,IAAI,CAAC,UAAU,GAAG,IAAI,UAAU,EAAE,CAAC;QACnC,IAAI,CAAC,SAAS,GAAG,IAAI,aAAa,EAAE,CAAC;QACrC,IAAI,CAAC,oBAAoB,GAAG,IAAI,oBAAoB,EAAE,CAAC;QACvD,IAAI,CAAC,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC;QACrC,IAAI,CAAC,GAAG,GAAG,UAAU,EAAE,CAAC;IAC1B,CAAC;IAED,KAAK,CAAC,IAAI;QACR,IAAI,CAAC;YACH,IAAI,CAAC,QAAQ,GAAG,MAAM,cAAc,EAAE,CAAC;YACvC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;QAC1C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAC;QACpE,CAAC;IACH,CAAC;IAED,UAAU,CAAC,QAA8B;QACvC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACxC,CAAC;IAEO,IAAI,CAAC,KAAa,EAAE,IAAS;QACnC,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC9C,QAAQ,CAAC,EAAE,KAAK,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,KAAiB;QAC7B,MAAM,SAAS,GAAG,KAAY,CAAC;QAC/B,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAEhC,qEAAqE;YACrE,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;YAElB,iBAAiB;YACjB,IAAI,CAAC,SAAS,CAAC,WAAW,IAAI,SAAS,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACxE,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;YAC7C,CAAC;YAED,6BAA6B;YAC7B,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,cAAc,CACpD,SAAS,CAAC,WAAW,EACrB,SAAS,CAAC,WAAW,EACrB,SAAS,CAAC,SAAS,CACpB,CAAC;YAEF,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;YACrE,MAAM,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;YAClE,MAAM,MAAM,GAAG,aAAa;gBAC1B,CAAC,CAAC,GAAG,UAAU,+BAA+B,aAAa,EAAE;gBAC7D,CAAC,CAAC,UAAU,CAAC;YAEf,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,wBAAwB,SAAS,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC;YAEtF,oCAAoC;YACpC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,qBAAqB,EAAE,CAAC,CAAC;YAEhF,8CAA8C;YAC9C,IAAI,WAAmB,CAAC;YACxB,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;gBACrC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC;gBAC3D,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;YACjD,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACnB,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;gBACjD,CAAC;gBAED,MAAM,YAAY,GAAG,yBAAyB,EAAE,CAAC;gBACjD,MAAM,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;gBACrD,WAAW,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE;oBACjD,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,YAAY;oBAC5B,KAAK,EAAE,YAAY,CAAC,cAAc,EAAE;oBACpC,YAAY;oBACZ,WAAW;oBACX,UAAU,EAAE,MAAM;iBACnB,CAAC,CAAC;gBAEH,IAAI,WAAW,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;oBACtF,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,oDAAoD,CAAC,CAAC;oBACvE,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;gBACjD,CAAC;YACH,CAAC;YAED,IAAI,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,EAAE,CAAC;gBACxC,IAAI,IAAI,CAAC,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;oBACtD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,mDAAmD,CAAC,CAAC;oBACtE,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,oBAAoB,CAAC,WAAW,CAAC,CAAC;oBAC5E,WAAW,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;gBAC3D,CAAC;YACH,CAAC;YAED,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,sBAAsB,EAAE,CAAC,CAAC;YAE9E,IAAI,UAAe,CAAC;YACpB,IAAI,CAAC;gBACH,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YAClD,CAAC;YAAC,OAAO,UAAU,EAAE,CAAC;gBACpB,IAAI,IAAI,CAAC,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;oBACtD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC;oBAC9D,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,oBAAoB,CAAC,WAAW,CAAC,CAAC;oBAC5E,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;oBAC5D,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;gBAC/C,CAAC;qBAAM,CAAC;oBACN,MAAM,UAAU,CAAC;gBACnB,CAAC;YACH,CAAC;YAED,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;gBACpB,MAAM,EAAE,YAAY;gBACpB,OAAO,EAAE,2BAA2B;aACrC,CAAC,CAAC;YACH,MAAM,gBAAgB,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;YAE7D,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;gBAC5B,MAAM,IAAI,KAAK,CAAC,2BAA2B,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACnF,CAAC;YAED,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,oBAAoB,CACnD,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CACnD,CAAC;YAEF,IAAI,SAAS,CAAC,SAAS,EAAE,CAAC;gBACxB,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;YACzD,CAAC;YAED,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;gBACpB,MAAM,EAAE,UAAU;gBAClB,OAAO,EAAE,0BAA0B;aACpC,CAAC,CAAC;YAEH,MAAM,cAAc,GAAG,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC;YAC3D,MAAM,MAAM,GAAgB;gBAC1B,IAAI,EAAE;oBACJ,IAAI,EAAE,UAAU;oBAChB,cAAc;iBACf;aACF,CAAC;YAEF,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;YAChC,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE;gBACvC,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACnC,MAAM;gBACN,QAAQ,EAAE,WAAW;aACtB,CAAC,CAAC;YACH,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,GAAG,GAAG,KAAc,CAAC;YAC3B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,kBAAkB,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;YACnD,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YACxB,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE;gBACvC,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACnC,MAAM,EAAE,EAAE;gBACV,QAAQ,EAAE,GAAG,CAAC,OAAO;gBACrB,QAAQ,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE;aAC/B,CAAC,CAAC;YAEH,OAAO;gBACL,KAAK,EAAE;oBACL,IAAI,EAAE,gBAAgB;oBACtB,OAAO,EAAE,GAAG,CAAC,OAAO;iBACrB;aACF,CAAC;QACJ,CAAC;IACH,CAAC;IAEO,gBAAgB,CAAC,KAAU;QACjC,sDAAsD;QACtD,MAAM,QAAQ,GAAG;YACf,EAAE,EAAE,QAAQ,IAAI,CAAC,GAAG,EAAE,EAAE;YACxB,KAAK,EAAE,aAAa,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE;YACxD,WAAW,EAAE,KAAK,CAAC,WAAW;YAC9B,cAAc,EAAE,EAAE;YAClB,UAAU,EAAE;gBACV;oBACE,EAAE,EAAE,IAAI;oBACR,KAAK,EAAE,oBAAoB;oBAC3B,WAAW,EAAE,0CAA0C;oBACvD,QAAQ,EAAE,CAAC;oBACX,eAAe,EAAE,CAAC,2BAA2B,EAAE,oBAAoB,CAAC;oBACpE,KAAK,EAAE;wBACL;4BACE,EAAE,EAAE,IAAI;4BACR,KAAK,EAAE,wBAAwB;4BAC/B,WAAW,EAAE,2CAA2C;4BACxD,IAAI,EAAE,gBAAyB;4BAC/B,eAAe,EAAE,CAAC;4BAClB,kBAAkB,EAAE;gCAClB,iCAAiC;gCACjC,+BAA+B;6BAChC;4BACD,iBAAiB,EAAE,EAAE;4BACrB,kBAAkB,EAAE,CAAC,IAAI,CAAC;4BAC1B,eAAe,EAAE,CAAC,MAAM,CAAC;4BACzB,MAAM,EAAE,SAAkB;yBAC3B;wBACD;4BACE,EAAE,EAAE,IAAI;4BACR,KAAK,EAAE,yBAAyB;4BAChC,WAAW,EAAE,8CAA8C;4BAC3D,IAAI,EAAE,gBAAyB;4BAC/B,eAAe,EAAE,CAAC;4BAClB,kBAAkB,EAAE,CAAC,wBAAwB,EAAE,mCAAmC,CAAC;4BACnF,iBAAiB,EAAE,CAAC,IAAI,CAAC;4BACzB,kBAAkB,EAAE,CAAC,IAAI,CAAC;4BAC1B,eAAe,EAAE,CAAC,SAAS,CAAC;4BAC5B,MAAM,EAAE,SAAkB;yBAC3B;qBACF;iBACF;gBACD;oBACE,EAAE,EAAE,IAAI;oBACR,KAAK,EAAE,kBAAkB;oBACzB,WAAW,EAAE,iCAAiC;oBAC9C,QAAQ,EAAE,EAAE;oBACZ,eAAe,EAAE,CAAC,2BAA2B,EAAE,kBAAkB,CAAC;oBAClE,KAAK,EAAE;wBACL;4BACE,EAAE,EAAE,IAAI;4BACR,KAAK,EAAE,yBAAyB;4BAChC,WAAW,EAAE,0BAA0B;4BACvC,IAAI,EAAE,SAAkB;4BACxB,eAAe,EAAE,CAAC;4BAClB,kBAAkB,EAAE;gCAClB,gCAAgC;gCAChC,sCAAsC;6BACvC;4BACD,iBAAiB,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC;4BAC/B,kBAAkB,EAAE,EAAE;4BACtB,eAAe,EAAE,CAAC,MAAM,CAAC;4BACzB,MAAM,EAAE,SAAkB;yBAC3B;qBACF;iBACF;aACF;SACF,CAAC;QAEF,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IAClC,CAAC;IAEO,iBAAiB,CAAC,QAAgB;QACxC,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC;QAChC,IAAI,CAAC,OAAO,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;YACjC,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,UAAU,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;QACtD,MAAM,WAAW,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;QACvD,IAAI,UAAU,KAAK,CAAC,IAAI,WAAW,KAAK,CAAC,EAAE,CAAC;YAC1C,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,WAAW,GAAG,UAAU,EAAE,CAAC;YAC7B,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;YACzE,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAEO,mBAAmB,CAAC,KAAU;QACpC,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACvD,OAAO;YACL,IAAI,EAAE,KAAK,CAAC,WAAW,IAAI,iBAAiB;YAC5C,IAAI,EAAE,KAAK,CAAC,QAAQ,IAAI,OAAO,CAAC,GAAG,EAAE;YACrC,OAAO,EAAE,EAAE;YACX,eAAe,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;YAC3C,QAAQ,EAAE;gBACR,QAAQ,EAAE,CAAC;gBACX,SAAS,EAAE,CAAC;gBACZ,SAAS;gBACT,YAAY,EAAE,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,SAAS,CAAC;aACtD;YACD,YAAY,EAAE;gBACZ,iBAAiB,EAAE;oBACjB,SAAS,EAAE,WAAW;oBACtB,SAAS,EAAE,WAAW;oBACtB,OAAO,EAAE,YAAY;oBACrB,SAAS,EAAE,kBAAkB;oBAC7B,KAAK,EAAE,YAAY;iBACpB;gBACD,aAAa,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,EAAE,EAAE;gBACrD,iBAAiB,EAAE;oBACjB,iBAAiB,EAAE,CAAC;oBACpB,iBAAiB,EAAE,QAAQ;oBAC3B,iBAAiB,EAAE,YAAY;iBAChC;gBACD,QAAQ,EAAE,EAAE,eAAe,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC,EAAE;gBAC1D,gBAAgB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE;aAC5D;SACF,CAAC;IACJ,CAAC;IAEO,gBAAgB,CAAC,KAAU;QACjC,OAAO;YACL,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,WAAW,IAAI,OAAO,CAAC,GAAG,EAAE;YAC9D,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;YAClB,MAAM,EAAE,IAAI,CAAC,MAAM;SACpB,CAAC;IACJ,CAAC;IAEO,cAAc,CAAC,SAAoB;QACzC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxD,OAAO,CAAC,YAAY,CAAC,CAAC;QACxB,CAAC;QAED,MAAM,UAAU,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;QACzD,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;QACpC,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC;YAAE,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAChG,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YACtF,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAC9B,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC;YAAE,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACxF,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YAAE,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC1F,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YAAE,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACtE,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YAAE,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC9F,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YAAE,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAEpE,OAAO,SAAS,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;IACrE,CAAC;IAEO,iBAAiB,CAAC,SAAoB;QAC5C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;YAC9B,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;QAC/B,SAAS,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;YAC1B,MAAM,UAAU,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;YACvC,IAAI,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC;gBAAE,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YACxD,IAAI,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC;gBAAE,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YACpD,IAAI,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC;gBAAE,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;YAC5D,IAAI,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC;gBAAE,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACxD,CAAC,CAAC,CAAC;QAEH,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;CACF"}
1
+ {"version":3,"file":"planner.js","sourceRoot":"","sources":["../../src/planner/planner.ts"],"names":[],"mappings":"AAAA,8BAA8B;AAC9B,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAGjC,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAErD,OAAO,EAAE,UAAU,EAAiB,MAAM,iBAAiB,CAAC;AAE5D,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACrD,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAE7B,MAAM,OAAO,OAAQ,SAAQ,KAAK;IACzB,IAAI,GAAG,SAAS,CAAC;IAEhB,eAAe,CAAkB;IACjC,UAAU,CAAa;IACvB,UAAU,CAAa;IACvB,aAAa,CAAgB;IAC7B,QAAQ,CAAc;IACtB,iBAAiB,GAAgC,EAAE,CAAC;IACpD,WAAW,CAAc;IACzB,GAAG,CAAgB;IAE3B,YAAY,MAAc;QACxB,KAAK,CAAC,MAAM,CAAC,CAAC;QACd,IAAI,CAAC,eAAe,GAAG,IAAI,eAAe,EAAE,CAAC;QAC7C,IAAI,CAAC,UAAU,GAAG,IAAI,UAAU,EAAE,CAAC;QACnC,IAAI,CAAC,UAAU,GAAG,IAAI,UAAU,EAAE,CAAC;QACnC,IAAI,CAAC,aAAa,GAAG,IAAI,aAAa,EAAE,CAAC;QACzC,IAAI,CAAC,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC;QACrC,IAAI,CAAC,GAAG,GAAG,UAAU,EAAE,CAAC;IAC1B,CAAC;IAED,KAAK,CAAC,IAAI;QACR,IAAI,CAAC;YACH,IAAI,CAAC,QAAQ,GAAG,MAAM,cAAc,EAAE,CAAC;QACzC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAC;QACpE,CAAC;IACH,CAAC;IAED,UAAU,CAAC,QAA8B;QACvC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACxC,CAAC;IAEO,IAAI,CAAC,KAAa,EAAE,IAAS;QACnC,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC9C,QAAQ,CAAC,EAAE,KAAK,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,KAAiB;QAC7B,MAAM,SAAS,GAAG,KAAY,CAAC;QAC/B,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAEhC,qEAAqE;YACrE,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;YAClB,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACnB,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;YACjD,CAAC;YAED,iBAAiB;YACjB,IAAI,CAAC,SAAS,CAAC,WAAW,IAAI,SAAS,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACxE,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;YAC7C,CAAC;YACD,qBAAqB;YACrB,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,eAAe,EAAE,CAAC;YAE5D,6CAA6C;YAC7C,MAAM,WAAW,GAAG,IAAI,CAAC,eAAe,CAAC,4BAA4B,CACnE,SAAS,CAAC,WAAW,EACrB,SAAS,CAAC,kBAAkB,EAC5B,SAAS,CAAC,SAAS,CACpB,CAAC;YAEF,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;YACrE,MAAM,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;YAClE,MAAM,MAAM,GAAG,aAAa;gBAC1B,CAAC,CAAC,GAAG,WAAW,+BAA+B,aAAa,EAAE;gBAC9D,CAAC,CAAC,WAAW,CAAC;YAEhB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,wBAAwB,SAAS,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC;YACtF,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,8BAA8B,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;YAEtG,MAAM,YAAY,GAAG,yBAAyB,EAAE,CAAC;YACjD,MAAM,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;YACrD,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE;gBACzD,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,YAAY;gBAC5B,KAAK,EAAE,YAAY,CAAC,cAAc,EAAE;gBACpC,YAAY;gBACZ,WAAW;gBACX,UAAU,EAAE,MAAM;gBAClB,YAAY,EAAE,CAAC;gBACf,YAAY;aACb,CAAC,CAAC;YACH,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE;gBACvC,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACnC,MAAM;gBACN,QAAQ,EAAE,aAAa;gBACvB,QAAQ,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE;aACtC,CAAC,CAAC;YAEH,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC;YAC9D,IAAI,CAAC,cAAc,EAAE,CAAC;gBACpB,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;YAC/D,CAAC;YAED,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC1C,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;YACxD,CAAC;YAED,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YAC9D,IAAI,CAAC,YAAY,EAAE,CAAC;gBAClB,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;YACpD,CAAC;YAED,KAAI,MAAM,CAAC,IAAI,YAAY,CAAC,UAAU,EAAE,CAAC;gBACvC,MAAM,OAAO,GACX,EAAE;oBACF,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,YAAY,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;gBAC/F,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;oBACpB,MAAM,EAAE,YAAY;oBACpB,OAAO,EAAE,mCAAmC,CAAC,CAAC,KAAK,EAAE;oBACrD,OAAO;iBACR,CAAC,CAAC;gBACH,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,mBAAmB,CAAC,cAAc,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC;gBAC7F,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,EAAE;oBACxD,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,YAAY;oBAC5B,KAAK,EAAE,YAAY,CAAC,cAAc,EAAE;oBACpC,YAAY;oBACZ,WAAW;oBACX,UAAU,EAAE,MAAM;oBAClB,YAAY,EAAE,CAAC;oBACf,YAAY;iBACb,CAAC,CAAC;gBACH,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE;oBACvC,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;oBACnC,MAAM,EAAE,UAAU;oBAClB,QAAQ,EAAE,QAAQ;oBAClB,QAAQ,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE;iBAC5B,CAAC,CAAC;YACL,CAAC;YAED,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;gBACpB,MAAM,EAAE,UAAU;gBAClB,OAAO,EAAE,0BAA0B;gBACnC,OAAO,EAAE,GAAG;aACb,CAAC,CAAC;YAEH,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC;YACjE,MAAM,MAAM,GAAgB;gBAC1B,IAAI,EAAE;oBACJ,IAAI;oBACJ,cAAc;iBACf;aACF,CAAC;YAEF,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;YAChC,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,GAAG,GAAG,KAAc,CAAC;YAC3B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,kBAAkB,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;YACnD,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YACxB,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE;gBACvC,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACnC,MAAM,EAAE,EAAE;gBACV,QAAQ,EAAE,GAAG,CAAC,OAAO;gBACrB,QAAQ,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE;aAC/B,CAAC,CAAC;YAEH,OAAO;gBACL,KAAK,EAAE;oBACL,IAAI,EAAE,gBAAgB;oBACtB,OAAO,EAAE,GAAG,CAAC,OAAO;iBACrB;aACF,CAAC;QACJ,CAAC;IACH,CAAC;IAEO,gBAAgB,CAAC,KAAU;QACjC,OAAO;YACL,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,WAAW,IAAI,OAAO,CAAC,GAAG,EAAE;YAC9D,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;YAClB,MAAM,EAAE,IAAI,CAAC,MAAM;SACpB,CAAC;IACJ,CAAC;IAEO,iBAAiB;QACvB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAC/C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YAC5B,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,MAAM,OAAO,GAAG,EAAE;aACf,WAAW,CAAC,OAAO,CAAC;aACpB,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aAC3C,MAAM,CAAC,CAAC,KAAK,EAA4B,EAAE,CAAC,KAAK,KAAK,IAAI,CAAC;aAC3D,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;aAC7C,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;QAE3C,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC;QACpC,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;QACrD,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,MAAM,OAAO,CAAC,CAAC;IAC9C,CAAC;CACF"}
@@ -1,9 +1,12 @@
1
1
  export declare class PromptTemplates {
2
- generatePrompt(description: string, projectType?: string, techStack?: string[]): string;
2
+ generatePlanMilestonesPrompt(description: string, projectType?: string, techStack?: string[]): string;
3
+ generateTasksPrompt(context: any, plan: any, milestone: any): string;
4
+ generateOptimizePrompt(fullPlan: string): string;
5
+ generateSummaryPrompt(): string;
3
6
  private getLanguageHint;
4
- private getStructureHint;
5
7
  generateClarificationPrompt(description: string, ambiguities: string[]): string;
6
8
  getSystemPrompt(): string;
7
9
  generateRepairPrompt(rawResponse: string): string;
10
+ getInstructions(): string;
8
11
  }
9
12
  //# sourceMappingURL=prompt-templates.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"prompt-templates.d.ts","sourceRoot":"","sources":["../../src/planner/prompt-templates.ts"],"names":[],"mappings":"AAAA,qBAAa,eAAe;IAC1B,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM;IA4EvF,OAAO,CAAC,eAAe;IAmBvB,OAAO,CAAC,gBAAgB;IAoDxB,2BAA2B,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,MAAM;IAe/E,eAAe,IAAI,MAAM;IAOzB,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM;CAQlD"}
1
+ {"version":3,"file":"prompt-templates.d.ts","sourceRoot":"","sources":["../../src/planner/prompt-templates.ts"],"names":[],"mappings":"AAEA,qBAAa,eAAe;IAC1B,4BAA4B,CAC1B,WAAW,EAAE,MAAM,EACnB,WAAW,CAAC,EAAE,MAAM,EACpB,SAAS,CAAC,EAAE,MAAM,EAAE,GACnB,MAAM;IAgBT,mBAAmB,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,GAAG,MAAM;IAsBpE,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAIhD,qBAAqB,IAAI,MAAM;IAI/B,OAAO,CAAC,eAAe;IAmBvB,2BAA2B,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,MAAM;IAK/E,eAAe,IAAI,MAAM;IAIzB,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM;IAIjD,eAAe,IAAI,MAAM;CAG1B"}
@@ -1,75 +1,41 @@
1
+ import { readPrompt } from '../utils/prompt.js';
1
2
  export class PromptTemplates {
2
- generatePrompt(description, projectType, techStack) {
3
- const techStackStr = techStack && techStack.length > 0 ? `Technology Stack: ${techStack.join(', ')}` : '';
4
- const projectTypeStr = projectType ? `Project Type: ${projectType}` : '';
3
+ generatePlanMilestonesPrompt(description, projectType, techStack) {
4
+ const techStackLine = techStack && techStack.length > 0 ? `Technology Stack: ${techStack.join(', ')}` : '';
5
+ const projectTypeLine = projectType ? `Project Type: ${projectType}` : '';
5
6
  const languageHint = this.getLanguageHint(projectType, techStack);
6
- const structureHint = this.getStructureHint(languageHint, projectType);
7
- return `You are an expert project planner. Generate a detailed Agile project plan for the following feature request.
8
-
9
- Feature Description: ${description}
10
-
11
- ${projectTypeStr}
12
- ${techStackStr}
13
- ${languageHint ? `Programming Language: ${languageHint}` : ''}
14
-
15
- Project Structure Guidance:
16
- ${structureHint}
17
-
18
- Generate a comprehensive plan with the following JSON structure:
19
- {
20
- "id": "P-0",
21
- "title": "Brief project title",
22
- "description": "Full description",
23
- "clarifications": [],
24
- "milestones": [
25
- {
26
- "id": "M1",
27
- "title": "Milestone name",
28
- "description": "Milestone description",
29
- "duration": 5,
30
- "successCriteria": ["Milestone success criteria"],
31
- "tasks": [
32
- {
33
- "id": "T1",
34
- "title": "Task name",
35
- "description": "Task description",
36
- "type": "feature",
37
- "estimatedEffort": 3,
38
- "acceptanceCriteria": ["Acceptance criteria"],
39
- "inputDependencies": ["T0"],
40
- "outputDependencies": ["T2"],
41
- "targetModule": "module-path",
42
- "affectedModules": ["module-path"],
43
- "suggestedApproach": "Brief implementation guidance",
44
- "technicalNotes": "Optional technical notes",
45
- "riskFactors": [
46
- {
47
- "description": "Risk description",
48
- "likelihood": "low",
49
- "impact": "medium",
50
- "mitigation": "Mitigation steps"
51
- }
52
- ],
53
- "status": "planned",
54
- "blockers": []
55
- }
56
- ]
7
+ const languageHintLine = languageHint ? `Programming Language: ${languageHint}` : '';
8
+ return readPrompt('planner.plan-milestones', {
9
+ description,
10
+ projectTypeLine,
11
+ techStackLine,
12
+ languageHintLine,
13
+ });
57
14
  }
58
- ]
59
- }
60
-
61
- Requirements:
62
- 1. Create 2-5 milestones
63
- 2. Each milestone should have 3-8 tasks
64
- 3. Effort estimates should be in hours (1-40)
65
- 4. Include realistic dependencies between tasks
66
- 5. Tasks should cover all aspects: design, implementation, testing, documentation
67
- 6. Use clear, actionable task titles
68
- 7. Ensure each task includes all required fields in the schema
69
- 8. Ensure dependency DAG is acyclic
70
- 9. Each task must reference the intended files/folders via targetModule and affectedModules using the project structure guidance
71
-
72
- Return ONLY valid JSON, no markdown or extra text.`;
15
+ generateTasksPrompt(context, plan, milestone) {
16
+ const languages = Array.isArray(context?.analysis?.languages)
17
+ ? context.analysis.languages.join(', ')
18
+ : 'unknown';
19
+ const summary = [
20
+ `Project Name: ${context?.project.name || 'Unknown project'}`,
21
+ `Project Description: ${context?.project?.description || 'No description provided.'}`,
22
+ `Project Root Path: ${context?.project?.rootPath || 'Unknown root path'}`,
23
+ `Languages Used: ${languages}`,
24
+ `Current Plan ID: ${plan?.id || 'P001'}`,
25
+ `Current Plan Title: ${plan?.title || 'No plan title provided.'}`,
26
+ `Current Plan Description: ${plan?.description || 'No plan description provided.'}`,
27
+ `Current Milestone ID: ${milestone.id || 'M001'}`,
28
+ `Current Milestone Title: ${milestone.title}`,
29
+ `Current Milestone Description: ${milestone.description || 'No description provided.'}`,
30
+ `Current Milestone Estimated Effort: ${milestone.duration || 'Not specified'} days`,
31
+ ].join('\n');
32
+ return readPrompt('planner.tasks', { summary });
33
+ }
34
+ generateOptimizePrompt(fullPlan) {
35
+ return readPrompt('planner.optimize', { fullPlan });
36
+ }
37
+ generateSummaryPrompt() {
38
+ return readPrompt('planner.summary');
73
39
  }
74
40
  getLanguageHint(projectType, techStack) {
75
41
  const entries = [projectType, ...(techStack ?? [])].filter((value) => Boolean(value));
@@ -90,79 +56,18 @@ Return ONLY valid JSON, no markdown or extra text.`;
90
56
  return 'PHP';
91
57
  return undefined;
92
58
  }
93
- getStructureHint(languageHint, projectType) {
94
- const type = (projectType || '').toLowerCase();
95
- if (languageHint === 'Go') {
96
- return `Use standard Go layout:
97
- - cmd/<app>/ (entrypoints)
98
- - internal/ (private packages)
99
- - pkg/ (public packages)
100
- - api/ (OpenAPI/protos)
101
- - configs/ (config files)
102
- - scripts/ (tooling)`;
103
- }
104
- if (languageHint === 'PHP') {
105
- return `Use PSR-4 layout:
106
- - src/ (application code)
107
- - tests/ (tests)
108
- - public/ (entrypoint)
109
- - config/ (configuration)
110
- - routes/ (routing)`;
111
- }
112
- if (type.includes('api') || type.includes('backend')) {
113
- return `Use a service-style layout:
114
- - src/
115
- - api/ (routes/controllers)
116
- - services/
117
- - repositories/
118
- - models/
119
- - middleware/
120
- - tests/
121
- - config/`;
122
- }
123
- if (type.includes('frontend') || type.includes('web')) {
124
- return `Use a web-app layout:
125
- - src/
126
- - components/
127
- - pages/ (or routes/)
128
- - hooks/ or utils/
129
- - styles/
130
- - public/
131
- - tests/`;
132
- }
133
- return `Use a standard modular layout:
134
- - src/ (core code)
135
- - tests/ (unit/integration tests)
136
- - config/ (configuration)
137
- - scripts/ (tooling)`;
138
- }
139
59
  generateClarificationPrompt(description, ambiguities) {
140
- return `Given this feature description: "${description}"
141
-
142
- I need clarification on these points:
143
- ${ambiguities.map((a) => `- ${a}`).join('\n')}
144
-
145
- Please provide brief, specific clarifications for each point. Format as JSON:
146
- {
147
- "clarifications": {
148
- "point1": "answer",
149
- "point2": "answer"
150
- }
151
- }`;
60
+ const ambiguitiesList = ambiguities.map((a) => `- ${a}`).join('\n');
61
+ return readPrompt('planner.clarification', { description, ambiguitiesList });
152
62
  }
153
63
  getSystemPrompt() {
154
- return `You are an expert Agile project planner with 10+ years of experience planning software projects.
155
- You excel at breaking down complex features into manageable tasks, identifying dependencies, and creating realistic effort estimates.
156
- You always think about the critical path and bottlenecks.
157
- You prefer generating plans in valid JSON format without any markdown formatting.`;
64
+ return readPrompt('planner.system');
158
65
  }
159
66
  generateRepairPrompt(rawResponse) {
160
- return `You are a JSON repair assistant. Fix the following malformed JSON and return ONLY valid JSON with the same schema as the planner output.
161
-
162
- Malformed JSON:
163
- ${rawResponse}
164
-
165
- Return ONLY valid JSON, no markdown or extra text.`;
67
+ return readPrompt('planner.repair', { rawResponse });
68
+ }
69
+ getInstructions() {
70
+ return readPrompt('planner.instructions');
166
71
  }
167
72
  }
168
73
  //# sourceMappingURL=prompt-templates.js.map