aided-dev 1.0.0
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 +615 -0
- package/bin/aidev.js +11 -0
- package/dist/agent-creator/creator.d.ts +22 -0
- package/dist/agent-creator/creator.js +393 -0
- package/dist/agent-creator/index.d.ts +1 -0
- package/dist/agent-creator/index.js +1 -0
- package/dist/bmad/index.d.ts +1 -0
- package/dist/bmad/index.js +1 -0
- package/dist/bmad/loader.d.ts +68 -0
- package/dist/bmad/loader.js +482 -0
- package/dist/cli.d.ts +1 -0
- package/dist/cli.js +257 -0
- package/dist/config.d.ts +23 -0
- package/dist/config.js +48 -0
- package/dist/discovery/detector.d.ts +12 -0
- package/dist/discovery/detector.js +272 -0
- package/dist/discovery/documents.d.ts +25 -0
- package/dist/discovery/documents.js +154 -0
- package/dist/discovery/index.d.ts +2 -0
- package/dist/discovery/index.js +2 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.js +5 -0
- package/dist/orchestrator/index.d.ts +3 -0
- package/dist/orchestrator/index.js +3 -0
- package/dist/orchestrator/orchestrator.d.ts +40 -0
- package/dist/orchestrator/orchestrator.js +386 -0
- package/dist/orchestrator/planner.d.ts +44 -0
- package/dist/orchestrator/planner.js +355 -0
- package/dist/postinstall.d.ts +1 -0
- package/dist/postinstall.js +49 -0
- package/package.json +70 -0
|
@@ -0,0 +1,355 @@
|
|
|
1
|
+
export const AGENT_CAPABILITIES = {
|
|
2
|
+
analyst: {
|
|
3
|
+
name: 'Mary (Analyst)',
|
|
4
|
+
capabilities: [
|
|
5
|
+
'Requirements gathering and analysis',
|
|
6
|
+
'Creating Product Requirements Documents (PRD)',
|
|
7
|
+
'Market research and competitive analysis',
|
|
8
|
+
'User story creation',
|
|
9
|
+
'Business analysis',
|
|
10
|
+
'Stakeholder requirements elicitation',
|
|
11
|
+
],
|
|
12
|
+
bestFor: ['new_feature', 'analysis', 'architecture'],
|
|
13
|
+
},
|
|
14
|
+
architect: {
|
|
15
|
+
name: 'Winston (Architect)',
|
|
16
|
+
capabilities: [
|
|
17
|
+
'System architecture design',
|
|
18
|
+
'Technical design documents',
|
|
19
|
+
'API design and specifications',
|
|
20
|
+
'Database schema design',
|
|
21
|
+
'Technology stack selection',
|
|
22
|
+
'Design patterns and best practices',
|
|
23
|
+
'Code structure planning',
|
|
24
|
+
],
|
|
25
|
+
bestFor: ['new_feature', 'architecture', 'refactor'],
|
|
26
|
+
},
|
|
27
|
+
dev: {
|
|
28
|
+
name: 'Amelia (Developer)',
|
|
29
|
+
capabilities: [
|
|
30
|
+
'Code implementation',
|
|
31
|
+
'Bug fixing',
|
|
32
|
+
'Code refactoring',
|
|
33
|
+
'Feature development',
|
|
34
|
+
'API implementation',
|
|
35
|
+
'Integration development',
|
|
36
|
+
'Performance optimization',
|
|
37
|
+
],
|
|
38
|
+
bestFor: ['new_feature', 'bug_fix', 'refactor', 'general'],
|
|
39
|
+
},
|
|
40
|
+
tea: {
|
|
41
|
+
name: 'Murat (Test Architect)',
|
|
42
|
+
capabilities: [
|
|
43
|
+
'Test strategy design',
|
|
44
|
+
'Unit test creation',
|
|
45
|
+
'Integration test creation',
|
|
46
|
+
'E2E test creation',
|
|
47
|
+
'Test coverage analysis',
|
|
48
|
+
'Quality assurance',
|
|
49
|
+
],
|
|
50
|
+
bestFor: ['testing', 'new_feature', 'bug_fix'],
|
|
51
|
+
},
|
|
52
|
+
pm: {
|
|
53
|
+
name: 'PM (Product Manager)',
|
|
54
|
+
capabilities: [
|
|
55
|
+
'Product roadmap planning',
|
|
56
|
+
'Feature prioritization',
|
|
57
|
+
'Sprint planning',
|
|
58
|
+
'Release management',
|
|
59
|
+
'Stakeholder communication',
|
|
60
|
+
],
|
|
61
|
+
bestFor: ['new_feature', 'analysis'],
|
|
62
|
+
},
|
|
63
|
+
'tech-writer': {
|
|
64
|
+
name: 'Tech Writer',
|
|
65
|
+
capabilities: [
|
|
66
|
+
'API documentation',
|
|
67
|
+
'User guides',
|
|
68
|
+
'Technical specifications',
|
|
69
|
+
'README files',
|
|
70
|
+
'Code comments and JSDoc',
|
|
71
|
+
],
|
|
72
|
+
bestFor: ['documentation'],
|
|
73
|
+
},
|
|
74
|
+
'ux-designer': {
|
|
75
|
+
name: 'UX Designer',
|
|
76
|
+
capabilities: [
|
|
77
|
+
'User interface design',
|
|
78
|
+
'User experience flows',
|
|
79
|
+
'Wireframes and mockups',
|
|
80
|
+
'Usability analysis',
|
|
81
|
+
],
|
|
82
|
+
bestFor: ['new_feature', 'analysis'],
|
|
83
|
+
},
|
|
84
|
+
sm: {
|
|
85
|
+
name: 'SM (Scrum Master)',
|
|
86
|
+
capabilities: [
|
|
87
|
+
'Process facilitation',
|
|
88
|
+
'Workflow optimization',
|
|
89
|
+
'Team coordination',
|
|
90
|
+
'Agile practices',
|
|
91
|
+
],
|
|
92
|
+
bestFor: ['analysis', 'general'],
|
|
93
|
+
},
|
|
94
|
+
};
|
|
95
|
+
export class TaskPlanner {
|
|
96
|
+
client;
|
|
97
|
+
model;
|
|
98
|
+
availableAgents;
|
|
99
|
+
constructor(client, model, availableAgents) {
|
|
100
|
+
this.client = client;
|
|
101
|
+
this.model = model;
|
|
102
|
+
this.availableAgents = availableAgents;
|
|
103
|
+
}
|
|
104
|
+
async createPlan(task, context) {
|
|
105
|
+
const agentDescriptions = this.buildAgentDescriptions();
|
|
106
|
+
const plannerPrompt = `You are an AI orchestration planner. Your job is to analyze a development task and create an execution plan that determines which AI agents to use and in what order.
|
|
107
|
+
|
|
108
|
+
## Available Agents
|
|
109
|
+
|
|
110
|
+
${agentDescriptions}
|
|
111
|
+
|
|
112
|
+
## Task Analysis Guidelines
|
|
113
|
+
|
|
114
|
+
1. **Identify Task Type**: Determine what kind of task this is:
|
|
115
|
+
- new_feature: Building something new
|
|
116
|
+
- bug_fix: Fixing an issue
|
|
117
|
+
- refactor: Improving existing code
|
|
118
|
+
- documentation: Writing docs
|
|
119
|
+
- testing: Creating tests
|
|
120
|
+
- code_review: Reviewing code
|
|
121
|
+
- architecture: Designing systems
|
|
122
|
+
- analysis: Research/investigation
|
|
123
|
+
- general: Other tasks
|
|
124
|
+
|
|
125
|
+
2. **Select Agents**: Choose agents based on the task:
|
|
126
|
+
- Simple bug fixes may only need: dev
|
|
127
|
+
- New features typically need: analyst → architect → dev → tea
|
|
128
|
+
- Documentation tasks need: tech-writer (or dev if code-focused)
|
|
129
|
+
- Testing tasks need: tea
|
|
130
|
+
- Refactoring needs: architect → dev
|
|
131
|
+
- Not every task needs all agents!
|
|
132
|
+
|
|
133
|
+
3. **Determine Order**: Agents should be called in logical order based on dependencies.
|
|
134
|
+
|
|
135
|
+
4. **Set Priorities**:
|
|
136
|
+
- required: Must complete for task success
|
|
137
|
+
- recommended: Improves quality but not essential
|
|
138
|
+
- optional: Nice to have
|
|
139
|
+
|
|
140
|
+
## Context
|
|
141
|
+
|
|
142
|
+
${context.stack ? `Project Stack: ${context.stack.language}${context.stack.framework ? ` / ${context.stack.framework}` : ''}` : 'Stack: Unknown'}
|
|
143
|
+
Has Project Documentation: ${context.hasProjectDocs ? 'Yes' : 'No'}
|
|
144
|
+
Existing Codebase: ${context.existingCode ? 'Yes (brownfield)' : 'No (greenfield)'}
|
|
145
|
+
|
|
146
|
+
## Output Format
|
|
147
|
+
|
|
148
|
+
Respond with a JSON object (and nothing else) in this exact format:
|
|
149
|
+
{
|
|
150
|
+
"taskType": "new_feature|bug_fix|refactor|documentation|testing|code_review|architecture|analysis|general",
|
|
151
|
+
"summary": "One sentence summary of what needs to be done",
|
|
152
|
+
"estimatedComplexity": "simple|moderate|complex",
|
|
153
|
+
"reasoning": "Brief explanation of why these agents were selected",
|
|
154
|
+
"steps": [
|
|
155
|
+
{
|
|
156
|
+
"agent": "agent_key",
|
|
157
|
+
"action": "Brief action description",
|
|
158
|
+
"description": "What this agent will do",
|
|
159
|
+
"dependsOn": ["previous_step_outputKey"],
|
|
160
|
+
"outputKey": "unique_key_for_this_step",
|
|
161
|
+
"priority": "required|recommended|optional"
|
|
162
|
+
}
|
|
163
|
+
]
|
|
164
|
+
}`;
|
|
165
|
+
const response = await this.client.messages.create({
|
|
166
|
+
model: this.model,
|
|
167
|
+
max_tokens: 2048,
|
|
168
|
+
system: plannerPrompt,
|
|
169
|
+
messages: [
|
|
170
|
+
{
|
|
171
|
+
role: 'user',
|
|
172
|
+
content: `Create an execution plan for this task:\n\n${task}`,
|
|
173
|
+
},
|
|
174
|
+
],
|
|
175
|
+
});
|
|
176
|
+
const responseText = response.content
|
|
177
|
+
.filter((block) => block.type === 'text')
|
|
178
|
+
.map((block) => block.text)
|
|
179
|
+
.join('\n');
|
|
180
|
+
try {
|
|
181
|
+
const jsonMatch = responseText.match(/\{[\s\S]*\}/);
|
|
182
|
+
if (!jsonMatch) {
|
|
183
|
+
throw new Error('No JSON found in response');
|
|
184
|
+
}
|
|
185
|
+
const parsed = JSON.parse(jsonMatch[0]);
|
|
186
|
+
const validSteps = parsed.steps.filter((step) => this.availableAgents.has(step.agent) || AGENT_CAPABILITIES[step.agent]);
|
|
187
|
+
return {
|
|
188
|
+
task,
|
|
189
|
+
taskType: parsed.taskType || 'general',
|
|
190
|
+
summary: parsed.summary || task,
|
|
191
|
+
steps: validSteps,
|
|
192
|
+
estimatedComplexity: parsed.estimatedComplexity || 'moderate',
|
|
193
|
+
reasoning: parsed.reasoning || '',
|
|
194
|
+
};
|
|
195
|
+
}
|
|
196
|
+
catch (error) {
|
|
197
|
+
return this.createDefaultPlan(task, context);
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
buildAgentDescriptions() {
|
|
201
|
+
const descriptions = [];
|
|
202
|
+
for (const [key, info] of Object.entries(AGENT_CAPABILITIES)) {
|
|
203
|
+
const isAvailable = this.availableAgents.has(key);
|
|
204
|
+
const status = isAvailable ? '✓' : '○';
|
|
205
|
+
descriptions.push(`### ${status} ${info.name} (key: "${key}")
|
|
206
|
+
Capabilities: ${info.capabilities.join(', ')}
|
|
207
|
+
Best for: ${info.bestFor.join(', ')}`);
|
|
208
|
+
}
|
|
209
|
+
return descriptions.join('\n\n');
|
|
210
|
+
}
|
|
211
|
+
createDefaultPlan(task, context) {
|
|
212
|
+
const taskLower = task.toLowerCase();
|
|
213
|
+
let taskType = 'general';
|
|
214
|
+
let steps = [];
|
|
215
|
+
if (taskLower.includes('fix') || taskLower.includes('bug') || taskLower.includes('issue')) {
|
|
216
|
+
taskType = 'bug_fix';
|
|
217
|
+
steps = [
|
|
218
|
+
{
|
|
219
|
+
agent: 'dev',
|
|
220
|
+
action: 'Fix bug',
|
|
221
|
+
description: 'Analyze and fix the reported issue',
|
|
222
|
+
dependsOn: [],
|
|
223
|
+
outputKey: 'fix',
|
|
224
|
+
priority: 'required',
|
|
225
|
+
},
|
|
226
|
+
{
|
|
227
|
+
agent: 'tea',
|
|
228
|
+
action: 'Add tests',
|
|
229
|
+
description: 'Add tests to prevent regression',
|
|
230
|
+
dependsOn: ['fix'],
|
|
231
|
+
outputKey: 'tests',
|
|
232
|
+
priority: 'recommended',
|
|
233
|
+
},
|
|
234
|
+
];
|
|
235
|
+
}
|
|
236
|
+
else if (taskLower.includes('test')) {
|
|
237
|
+
taskType = 'testing';
|
|
238
|
+
steps = [
|
|
239
|
+
{
|
|
240
|
+
agent: 'tea',
|
|
241
|
+
action: 'Create tests',
|
|
242
|
+
description: 'Design and implement test suite',
|
|
243
|
+
dependsOn: [],
|
|
244
|
+
outputKey: 'tests',
|
|
245
|
+
priority: 'required',
|
|
246
|
+
},
|
|
247
|
+
];
|
|
248
|
+
}
|
|
249
|
+
else if (taskLower.includes('document') || taskLower.includes('readme') || taskLower.includes('docs')) {
|
|
250
|
+
taskType = 'documentation';
|
|
251
|
+
steps = [
|
|
252
|
+
{
|
|
253
|
+
agent: 'dev',
|
|
254
|
+
action: 'Create documentation',
|
|
255
|
+
description: 'Write technical documentation',
|
|
256
|
+
dependsOn: [],
|
|
257
|
+
outputKey: 'docs',
|
|
258
|
+
priority: 'required',
|
|
259
|
+
},
|
|
260
|
+
];
|
|
261
|
+
}
|
|
262
|
+
else if (taskLower.includes('refactor') || taskLower.includes('clean') || taskLower.includes('improve')) {
|
|
263
|
+
taskType = 'refactor';
|
|
264
|
+
steps = [
|
|
265
|
+
{
|
|
266
|
+
agent: 'architect',
|
|
267
|
+
action: 'Design refactor',
|
|
268
|
+
description: 'Plan the refactoring approach',
|
|
269
|
+
dependsOn: [],
|
|
270
|
+
outputKey: 'design',
|
|
271
|
+
priority: 'required',
|
|
272
|
+
},
|
|
273
|
+
{
|
|
274
|
+
agent: 'dev',
|
|
275
|
+
action: 'Implement refactor',
|
|
276
|
+
description: 'Execute the refactoring',
|
|
277
|
+
dependsOn: ['design'],
|
|
278
|
+
outputKey: 'implementation',
|
|
279
|
+
priority: 'required',
|
|
280
|
+
},
|
|
281
|
+
];
|
|
282
|
+
}
|
|
283
|
+
else {
|
|
284
|
+
taskType = 'new_feature';
|
|
285
|
+
steps = [
|
|
286
|
+
{
|
|
287
|
+
agent: 'analyst',
|
|
288
|
+
action: 'Create PRD',
|
|
289
|
+
description: 'Analyze requirements and create PRD',
|
|
290
|
+
dependsOn: [],
|
|
291
|
+
outputKey: 'prd',
|
|
292
|
+
priority: 'required',
|
|
293
|
+
},
|
|
294
|
+
{
|
|
295
|
+
agent: 'architect',
|
|
296
|
+
action: 'Design architecture',
|
|
297
|
+
description: 'Design technical architecture',
|
|
298
|
+
dependsOn: ['prd'],
|
|
299
|
+
outputKey: 'architecture',
|
|
300
|
+
priority: 'required',
|
|
301
|
+
},
|
|
302
|
+
{
|
|
303
|
+
agent: 'dev',
|
|
304
|
+
action: 'Implement',
|
|
305
|
+
description: 'Write the code',
|
|
306
|
+
dependsOn: ['architecture'],
|
|
307
|
+
outputKey: 'implementation',
|
|
308
|
+
priority: 'required',
|
|
309
|
+
},
|
|
310
|
+
{
|
|
311
|
+
agent: 'tea',
|
|
312
|
+
action: 'Create tests',
|
|
313
|
+
description: 'Generate test suite',
|
|
314
|
+
dependsOn: ['implementation'],
|
|
315
|
+
outputKey: 'tests',
|
|
316
|
+
priority: 'recommended',
|
|
317
|
+
},
|
|
318
|
+
];
|
|
319
|
+
}
|
|
320
|
+
return {
|
|
321
|
+
task,
|
|
322
|
+
taskType,
|
|
323
|
+
summary: task,
|
|
324
|
+
steps,
|
|
325
|
+
estimatedComplexity: 'moderate',
|
|
326
|
+
reasoning: 'Default plan based on task keywords',
|
|
327
|
+
};
|
|
328
|
+
}
|
|
329
|
+
validatePlan(plan) {
|
|
330
|
+
const errors = [];
|
|
331
|
+
const outputKeys = new Set();
|
|
332
|
+
for (const step of plan.steps) {
|
|
333
|
+
if (!this.availableAgents.has(step.agent) && !AGENT_CAPABILITIES[step.agent]) {
|
|
334
|
+
errors.push(`Agent '${step.agent}' is not available`);
|
|
335
|
+
}
|
|
336
|
+
for (const dep of step.dependsOn) {
|
|
337
|
+
if (!outputKeys.has(dep)) {
|
|
338
|
+
const depIndex = plan.steps.findIndex((s) => s.outputKey === dep);
|
|
339
|
+
const currentIndex = plan.steps.indexOf(step);
|
|
340
|
+
if (depIndex === -1) {
|
|
341
|
+
errors.push(`Step '${step.outputKey}' depends on '${dep}' which doesn't exist`);
|
|
342
|
+
}
|
|
343
|
+
else if (depIndex >= currentIndex) {
|
|
344
|
+
errors.push(`Step '${step.outputKey}' depends on '${dep}' which comes later`);
|
|
345
|
+
}
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
outputKeys.add(step.outputKey);
|
|
349
|
+
}
|
|
350
|
+
return {
|
|
351
|
+
valid: errors.length === 0,
|
|
352
|
+
errors,
|
|
353
|
+
};
|
|
354
|
+
}
|
|
355
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import * as p from '@clack/prompts';
|
|
2
|
+
import chalk from 'chalk';
|
|
3
|
+
import { setApiKey, hasApiKey, getConfigPath } from './config.js';
|
|
4
|
+
async function main() {
|
|
5
|
+
if (process.env.CI || process.env.CONTINUOUS_INTEGRATION) {
|
|
6
|
+
return;
|
|
7
|
+
}
|
|
8
|
+
if (hasApiKey()) {
|
|
9
|
+
return;
|
|
10
|
+
}
|
|
11
|
+
console.log('');
|
|
12
|
+
p.intro(chalk.bgCyan.black(' aidev - AI Development Team Orchestrator '));
|
|
13
|
+
console.log('');
|
|
14
|
+
console.log(chalk.dim('Welcome to aidev! To get started, you need an Anthropic API key.'));
|
|
15
|
+
console.log(chalk.dim('Get one at: https://console.anthropic.com/settings/keys'));
|
|
16
|
+
console.log('');
|
|
17
|
+
const apiKey = await p.text({
|
|
18
|
+
message: 'Enter your Anthropic API key:',
|
|
19
|
+
placeholder: 'sk-ant-...',
|
|
20
|
+
validate: (value) => {
|
|
21
|
+
if (!value) {
|
|
22
|
+
return 'API key is required. You can also set ANTHROPIC_API_KEY environment variable.';
|
|
23
|
+
}
|
|
24
|
+
if (!value.startsWith('sk-ant-')) {
|
|
25
|
+
return 'Invalid API key format. Should start with sk-ant-';
|
|
26
|
+
}
|
|
27
|
+
return undefined;
|
|
28
|
+
},
|
|
29
|
+
});
|
|
30
|
+
if (p.isCancel(apiKey)) {
|
|
31
|
+
console.log('');
|
|
32
|
+
console.log(chalk.yellow('Setup cancelled. You can set the API key later:'));
|
|
33
|
+
console.log(chalk.dim(' - Set ANTHROPIC_API_KEY environment variable, or'));
|
|
34
|
+
console.log(chalk.dim(' - Run: aidev config --api-key <your-key>'));
|
|
35
|
+
console.log('');
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
setApiKey(apiKey);
|
|
39
|
+
console.log('');
|
|
40
|
+
console.log(chalk.green('API key saved successfully!'));
|
|
41
|
+
console.log(chalk.dim(`Config location: ${getConfigPath()}`));
|
|
42
|
+
console.log('');
|
|
43
|
+
p.outro(chalk.green('You\'re all set! Run `aidev --help` to get started.'));
|
|
44
|
+
}
|
|
45
|
+
main().catch((error) => {
|
|
46
|
+
if (process.env.DEBUG) {
|
|
47
|
+
console.error('Postinstall error:', error);
|
|
48
|
+
}
|
|
49
|
+
});
|
package/package.json
ADDED
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "aided-dev",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "AI Development Team Orchestrator - BMAD-METHOD integration for automated code generation",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"ai",
|
|
7
|
+
"development",
|
|
8
|
+
"orchestrator",
|
|
9
|
+
"bmad",
|
|
10
|
+
"claude",
|
|
11
|
+
"anthropic",
|
|
12
|
+
"code-generation",
|
|
13
|
+
"agents"
|
|
14
|
+
],
|
|
15
|
+
"repository": {
|
|
16
|
+
"type": "git",
|
|
17
|
+
"url": "git+https://github.com/shikharsworks/aided.git"
|
|
18
|
+
},
|
|
19
|
+
"homepage": "https://github.com/shikharsworks/aided#readme",
|
|
20
|
+
"bugs": {
|
|
21
|
+
"url": "https://github.com/shikharsworks/aided/issues"
|
|
22
|
+
},
|
|
23
|
+
"license": "MIT",
|
|
24
|
+
"author": "Shikhar Tiwari",
|
|
25
|
+
"type": "module",
|
|
26
|
+
"main": "dist/index.js",
|
|
27
|
+
"types": "dist/index.d.ts",
|
|
28
|
+
"bin": {
|
|
29
|
+
"aidev": "bin/aidev.js"
|
|
30
|
+
},
|
|
31
|
+
"files": [
|
|
32
|
+
"dist",
|
|
33
|
+
"bin",
|
|
34
|
+
"README.md"
|
|
35
|
+
],
|
|
36
|
+
"scripts": {
|
|
37
|
+
"build": "tsc",
|
|
38
|
+
"dev": "tsc --watch",
|
|
39
|
+
"start": "node bin/aidev.js",
|
|
40
|
+
"postinstall": "node dist/postinstall.js 2>/dev/null || true",
|
|
41
|
+
"lint": "eslint src --ext .ts",
|
|
42
|
+
"format": "prettier --write \"src/**/*.ts\"",
|
|
43
|
+
"prepublishOnly": "npm run build"
|
|
44
|
+
},
|
|
45
|
+
"dependencies": {
|
|
46
|
+
"@anthropic-ai/sdk": "^0.52.0",
|
|
47
|
+
"@clack/prompts": "^0.11.0",
|
|
48
|
+
"bmad-method": "^4.44.3",
|
|
49
|
+
"chalk": "^5.3.0",
|
|
50
|
+
"commander": "^14.0.0",
|
|
51
|
+
"conf": "^13.0.0",
|
|
52
|
+
"fs-extra": "^11.3.0",
|
|
53
|
+
"glob": "^11.0.3",
|
|
54
|
+
"js-yaml": "^4.1.0",
|
|
55
|
+
"ora": "^8.0.0",
|
|
56
|
+
"zod": "^3.23.0"
|
|
57
|
+
},
|
|
58
|
+
"devDependencies": {
|
|
59
|
+
"@types/fs-extra": "^11.0.4",
|
|
60
|
+
"@types/js-yaml": "^4.0.9",
|
|
61
|
+
"@types/node": "^22.0.0",
|
|
62
|
+
"typescript": "^5.5.0"
|
|
63
|
+
},
|
|
64
|
+
"engines": {
|
|
65
|
+
"node": ">=20.0.0"
|
|
66
|
+
},
|
|
67
|
+
"publishConfig": {
|
|
68
|
+
"access": "public"
|
|
69
|
+
}
|
|
70
|
+
}
|