@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.
- package/README.md +17 -0
- package/dist/ai-provider/openai.d.ts +2 -2
- package/dist/ai-provider/openai.d.ts.map +1 -1
- package/dist/ai-provider/openai.js +55 -136
- package/dist/ai-provider/openai.js.map +1 -1
- package/dist/ai-provider/provider.d.ts +11 -6
- package/dist/ai-provider/provider.d.ts.map +1 -1
- package/dist/analysis/cache-manager.d.ts +9 -0
- package/dist/analysis/cache-manager.d.ts.map +1 -0
- package/dist/analysis/cache-manager.js +33 -0
- package/dist/analysis/cache-manager.js.map +1 -0
- package/dist/analysis/context-writer.d.ts +29 -0
- package/dist/analysis/context-writer.d.ts.map +1 -0
- package/dist/analysis/context-writer.js +168 -0
- package/dist/analysis/context-writer.js.map +1 -0
- package/dist/analysis/index.d.ts +5 -0
- package/dist/analysis/index.d.ts.map +1 -0
- package/dist/analysis/index.js +5 -0
- package/dist/analysis/index.js.map +1 -0
- package/dist/analysis/plan-writer.d.ts +11 -0
- package/dist/analysis/plan-writer.d.ts.map +1 -0
- package/dist/analysis/plan-writer.js +87 -0
- package/dist/analysis/plan-writer.js.map +1 -0
- package/dist/analysis/test-writer.d.ts +9 -0
- package/dist/analysis/test-writer.d.ts.map +1 -0
- package/dist/analysis/test-writer.js +42 -0
- package/dist/analysis/test-writer.js.map +1 -0
- package/dist/coder/coder.d.ts +2 -1
- package/dist/coder/coder.d.ts.map +1 -1
- package/dist/coder/coder.js +37 -76
- package/dist/coder/coder.js.map +1 -1
- package/dist/coder/prompt-templates.d.ts +3 -2
- package/dist/coder/prompt-templates.d.ts.map +1 -1
- package/dist/coder/prompt-templates.js +33 -61
- package/dist/coder/prompt-templates.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/manager/manager.d.ts.map +1 -1
- package/dist/manager/manager.js +8 -35
- package/dist/manager/manager.js.map +1 -1
- package/dist/planner/clarification-handler.d.ts.map +1 -1
- package/dist/planner/clarification-handler.js +2 -12
- package/dist/planner/clarification-handler.js.map +1 -1
- package/dist/planner/plan-parser.d.ts.map +1 -1
- package/dist/planner/plan-parser.js +33 -31
- package/dist/planner/plan-parser.js.map +1 -1
- package/dist/planner/planner.d.ts +3 -7
- package/dist/planner/planner.d.ts.map +1 -1
- package/dist/planner/planner.js +81 -230
- package/dist/planner/planner.js.map +1 -1
- package/dist/planner/prompt-templates.d.ts +5 -2
- package/dist/planner/prompt-templates.d.ts.map +1 -1
- package/dist/planner/prompt-templates.js +42 -137
- package/dist/planner/prompt-templates.js.map +1 -1
- package/dist/tester/prompt-templates.d.ts.map +1 -1
- package/dist/tester/prompt-templates.js +14 -21
- package/dist/tester/prompt-templates.js.map +1 -1
- package/dist/tools/list-files.d.ts.map +1 -1
- package/dist/tools/list-files.js +8 -1
- package/dist/tools/list-files.js.map +1 -1
- package/dist/tools/registry.js +1 -1
- package/dist/tools/registry.js.map +1 -1
- package/dist/tools/utils.d.ts.map +1 -1
- package/dist/tools/utils.js +34 -3
- package/dist/tools/utils.js.map +1 -1
- package/dist/utils/cache-manager.d.ts +9 -0
- package/dist/utils/cache-manager.d.ts.map +1 -0
- package/dist/utils/cache-manager.js +33 -0
- package/dist/utils/cache-manager.js.map +1 -0
- package/dist/utils/context-writer.d.ts +29 -0
- package/dist/utils/context-writer.d.ts.map +1 -0
- package/dist/utils/context-writer.js +167 -0
- package/dist/utils/context-writer.js.map +1 -0
- package/dist/utils/index.d.ts +9 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +40 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/plan-writer.d.ts +17 -0
- package/dist/utils/plan-writer.d.ts.map +1 -0
- package/dist/utils/plan-writer.js +175 -0
- package/dist/utils/plan-writer.js.map +1 -0
- package/dist/utils/prompt.d.ts +3 -0
- package/dist/utils/prompt.d.ts.map +1 -0
- package/dist/utils/prompt.js +55 -0
- package/dist/utils/prompt.js.map +1 -0
- package/dist/utils/test-writer.d.ts +9 -0
- package/dist/utils/test-writer.d.ts.map +1 -0
- package/dist/utils/test-writer.js +42 -0
- package/dist/utils/test-writer.js.map +1 -0
- package/package.json +3 -3
- package/prompts/coder/instructions.md +42 -0
- package/prompts/coder/task.md +13 -0
- package/prompts/manager/context.md +2 -0
- package/prompts/manager/instructions.md +12 -0
- package/prompts/planner/instructions.md +74 -0
- package/prompts/planner/plan-milestones.md +30 -0
- package/prompts/planner/tasks.md +23 -0
- package/prompts/tester/prompt.md +19 -0
package/dist/planner/planner.js
CHANGED
|
@@ -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
|
-
|
|
16
|
-
|
|
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.
|
|
26
|
-
this.
|
|
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
|
-
//
|
|
58
|
-
const
|
|
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
|
-
? `${
|
|
63
|
-
:
|
|
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
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
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
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
const
|
|
79
|
-
|
|
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
|
|
130
|
+
const plan = this.planParser.parse(JSON.stringify(planFromFile));
|
|
131
131
|
const result = {
|
|
132
132
|
data: {
|
|
133
|
-
plan
|
|
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
|
-
|
|
293
|
-
|
|
294
|
-
|
|
165
|
+
getLatestPlanFile() {
|
|
166
|
+
const planDir = path.join('.omaikit', 'plans');
|
|
167
|
+
if (!fs.existsSync(planDir)) {
|
|
168
|
+
return undefined;
|
|
295
169
|
}
|
|
296
|
-
const
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
if (
|
|
303
|
-
|
|
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
|
|
319
|
-
|
|
320
|
-
|
|
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":"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"}
|
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
export declare class PromptTemplates {
|
|
2
|
-
|
|
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":"
|
|
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
|
-
|
|
3
|
-
const
|
|
4
|
-
const
|
|
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
|
|
7
|
-
return
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
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
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
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
|
-
|
|
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
|
|
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
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
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
|