didev 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.
Files changed (112) hide show
  1. package/README.md +378 -0
  2. package/dist/agents/analyst.d.ts +21 -0
  3. package/dist/agents/analyst.d.ts.map +1 -0
  4. package/dist/agents/analyst.js +69 -0
  5. package/dist/agents/analyst.js.map +1 -0
  6. package/dist/agents/architect.d.ts +21 -0
  7. package/dist/agents/architect.d.ts.map +1 -0
  8. package/dist/agents/architect.js +85 -0
  9. package/dist/agents/architect.js.map +1 -0
  10. package/dist/agents/base-agent.d.ts +56 -0
  11. package/dist/agents/base-agent.d.ts.map +1 -0
  12. package/dist/agents/base-agent.js +263 -0
  13. package/dist/agents/base-agent.js.map +1 -0
  14. package/dist/agents/developer.d.ts +21 -0
  15. package/dist/agents/developer.d.ts.map +1 -0
  16. package/dist/agents/developer.js +87 -0
  17. package/dist/agents/developer.js.map +1 -0
  18. package/dist/agents/orchestrator.d.ts +23 -0
  19. package/dist/agents/orchestrator.d.ts.map +1 -0
  20. package/dist/agents/orchestrator.js +287 -0
  21. package/dist/agents/orchestrator.js.map +1 -0
  22. package/dist/agents/reviewer.d.ts +15 -0
  23. package/dist/agents/reviewer.d.ts.map +1 -0
  24. package/dist/agents/reviewer.js +65 -0
  25. package/dist/agents/reviewer.js.map +1 -0
  26. package/dist/agents/tester.d.ts +15 -0
  27. package/dist/agents/tester.d.ts.map +1 -0
  28. package/dist/agents/tester.js +64 -0
  29. package/dist/agents/tester.js.map +1 -0
  30. package/dist/bmad/method.d.ts +6 -0
  31. package/dist/bmad/method.d.ts.map +1 -0
  32. package/dist/bmad/method.js +221 -0
  33. package/dist/bmad/method.js.map +1 -0
  34. package/dist/cli/commands/agent.d.ts +10 -0
  35. package/dist/cli/commands/agent.d.ts.map +1 -0
  36. package/dist/cli/commands/agent.js +28 -0
  37. package/dist/cli/commands/agent.js.map +1 -0
  38. package/dist/cli/commands/chat.d.ts +6 -0
  39. package/dist/cli/commands/chat.d.ts.map +1 -0
  40. package/dist/cli/commands/chat.js +556 -0
  41. package/dist/cli/commands/chat.js.map +1 -0
  42. package/dist/cli/commands/config.d.ts +3 -0
  43. package/dist/cli/commands/config.d.ts.map +1 -0
  44. package/dist/cli/commands/config.js +65 -0
  45. package/dist/cli/commands/config.js.map +1 -0
  46. package/dist/cli/commands/init.d.ts +8 -0
  47. package/dist/cli/commands/init.d.ts.map +1 -0
  48. package/dist/cli/commands/init.js +204 -0
  49. package/dist/cli/commands/init.js.map +1 -0
  50. package/dist/cli/commands/mcp.d.ts +5 -0
  51. package/dist/cli/commands/mcp.d.ts.map +1 -0
  52. package/dist/cli/commands/mcp.js +836 -0
  53. package/dist/cli/commands/mcp.js.map +1 -0
  54. package/dist/cli/commands/refactor.d.ts +8 -0
  55. package/dist/cli/commands/refactor.d.ts.map +1 -0
  56. package/dist/cli/commands/refactor.js +161 -0
  57. package/dist/cli/commands/refactor.js.map +1 -0
  58. package/dist/cli/commands/review.d.ts +9 -0
  59. package/dist/cli/commands/review.d.ts.map +1 -0
  60. package/dist/cli/commands/review.js +138 -0
  61. package/dist/cli/commands/review.js.map +1 -0
  62. package/dist/core/api.d.ts +73 -0
  63. package/dist/core/api.d.ts.map +1 -0
  64. package/dist/core/api.js +206 -0
  65. package/dist/core/api.js.map +1 -0
  66. package/dist/core/config.d.ts +42 -0
  67. package/dist/core/config.d.ts.map +1 -0
  68. package/dist/core/config.js +180 -0
  69. package/dist/core/config.js.map +1 -0
  70. package/dist/core/context.d.ts +33 -0
  71. package/dist/core/context.d.ts.map +1 -0
  72. package/dist/core/context.js +235 -0
  73. package/dist/core/context.js.map +1 -0
  74. package/dist/core/file-manager.d.ts +20 -0
  75. package/dist/core/file-manager.d.ts.map +1 -0
  76. package/dist/core/file-manager.js +133 -0
  77. package/dist/core/file-manager.js.map +1 -0
  78. package/dist/core/mcp.d.ts +31 -0
  79. package/dist/core/mcp.d.ts.map +1 -0
  80. package/dist/core/mcp.js +112 -0
  81. package/dist/core/mcp.js.map +1 -0
  82. package/dist/core/session.d.ts +16 -0
  83. package/dist/core/session.d.ts.map +1 -0
  84. package/dist/core/session.js +60 -0
  85. package/dist/core/session.js.map +1 -0
  86. package/dist/index.d.ts +3 -0
  87. package/dist/index.d.ts.map +1 -0
  88. package/dist/index.js +237 -0
  89. package/dist/index.js.map +1 -0
  90. package/dist/utils/banner.d.ts +2 -0
  91. package/dist/utils/banner.d.ts.map +1 -0
  92. package/dist/utils/banner.js +50 -0
  93. package/dist/utils/banner.js.map +1 -0
  94. package/dist/utils/git.d.ts +9 -0
  95. package/dist/utils/git.d.ts.map +1 -0
  96. package/dist/utils/git.js +49 -0
  97. package/dist/utils/git.js.map +1 -0
  98. package/dist/utils/logger.d.ts +42 -0
  99. package/dist/utils/logger.d.ts.map +1 -0
  100. package/dist/utils/logger.js +98 -0
  101. package/dist/utils/logger.js.map +1 -0
  102. package/dist/utils/resilience.d.ts +17 -0
  103. package/dist/utils/resilience.d.ts.map +1 -0
  104. package/dist/utils/resilience.js +41 -0
  105. package/dist/utils/resilience.js.map +1 -0
  106. package/dist/utils/token-counter.d.ts +7 -0
  107. package/dist/utils/token-counter.d.ts.map +1 -0
  108. package/dist/utils/token-counter.js +20 -0
  109. package/dist/utils/token-counter.js.map +1 -0
  110. package/package.json +62 -0
  111. package/scripts/postinstall.mjs +54 -0
  112. package/scripts/setup-path.sh +42 -0
@@ -0,0 +1,221 @@
1
+ import { readFile, writeFile, mkdir, access, readdir } from 'fs/promises';
2
+ import { join } from 'path';
3
+ import yaml from 'js-yaml';
4
+ import inquirer from 'inquirer';
5
+ import { logger } from '../utils/logger.js';
6
+ import { loadConfig, getApiKey } from '../core/config.js';
7
+ import { initClient } from '../core/api.js';
8
+ import { collectProjectContext, contextToSystemPrompt } from '../core/context.js';
9
+ async function exists(p) {
10
+ try {
11
+ await access(p);
12
+ return true;
13
+ }
14
+ catch {
15
+ return false;
16
+ }
17
+ }
18
+ async function readYaml(path) {
19
+ try {
20
+ const text = await readFile(path, 'utf-8');
21
+ return yaml.load(text);
22
+ }
23
+ catch {
24
+ return null;
25
+ }
26
+ }
27
+ async function writeYaml(path, data) {
28
+ await writeFile(path, yaml.dump(data, { indent: 2 }), 'utf-8');
29
+ }
30
+ function bmadDir(rootDir = process.cwd()) {
31
+ return join(rootDir, '.didev', 'bmad');
32
+ }
33
+ export async function runBmadInit(rootDir = process.cwd()) {
34
+ logger.banner('BMad Method', 'Behavior-Motivated Agile Development');
35
+ await mkdir(join(bmadDir(rootDir), 'epics'), { recursive: true });
36
+ await mkdir(join(bmadDir(rootDir), 'stories'), { recursive: true });
37
+ await mkdir(join(bmadDir(rootDir), 'architecture'), { recursive: true });
38
+ await mkdir(join(bmadDir(rootDir), 'templates'), { recursive: true });
39
+ const indexPath = join(bmadDir(rootDir), 'index.yaml');
40
+ if (!await exists(indexPath)) {
41
+ await writeYaml(indexPath, {
42
+ project: '',
43
+ epics: [],
44
+ currentStory: null,
45
+ createdAt: new Date().toISOString(),
46
+ });
47
+ }
48
+ logger.success('BMad initialized in .didev/bmad/');
49
+ logger.dim('Next: didev bmad epic — create your first epic');
50
+ }
51
+ export async function runBmadEpic(rootDir = process.cwd()) {
52
+ const config = await loadConfig(rootDir);
53
+ const apiKey = await getApiKey(config);
54
+ if (!apiKey) {
55
+ logger.error('API key not set');
56
+ return;
57
+ }
58
+ const { title, description } = await inquirer.prompt([
59
+ { type: 'input', name: 'title', message: 'Epic title:', validate: (v) => v.length > 3 },
60
+ { type: 'input', name: 'description', message: 'Epic description:' },
61
+ ]);
62
+ const client = initClient({ apiKey, baseUrl: config.api.baseUrl, model: config.api.model });
63
+ const projectCtx = await collectProjectContext(rootDir);
64
+ const spinner = logger.spinner('Generating epic breakdown...').start();
65
+ const response = await client.chat([
66
+ {
67
+ role: 'system',
68
+ content: `You are a Product Manager using BMad Method. ${contextToSystemPrompt(projectCtx)}`,
69
+ },
70
+ {
71
+ role: 'user',
72
+ content: `Create a detailed epic breakdown for: "${title}"\n\nDescription: ${description}\n\nProvide:
73
+ 1. Refined epic description
74
+ 2. List of 3-7 user stories (title only)
75
+ 3. Technical considerations
76
+ 4. Definition of Done
77
+
78
+ Format as YAML.`,
79
+ },
80
+ ]);
81
+ spinner.stop();
82
+ const epicId = `EPIC-${String(Date.now()).slice(-4)}`;
83
+ const epic = {
84
+ id: epicId,
85
+ title,
86
+ description,
87
+ status: 'active',
88
+ stories: [],
89
+ createdAt: new Date().toISOString(),
90
+ };
91
+ const epicPath = join(bmadDir(rootDir), 'epics', `${epicId}.yaml`);
92
+ await mkdir(join(bmadDir(rootDir), 'epics'), { recursive: true });
93
+ await writeYaml(epicPath, { ...epic, aiBreakdown: response.content });
94
+ logger.success(`Epic created: ${epicId}`);
95
+ logger.newline();
96
+ console.log(response.content);
97
+ }
98
+ export async function runBmadStory(rootDir = process.cwd()) {
99
+ const config = await loadConfig(rootDir);
100
+ const apiKey = await getApiKey(config);
101
+ if (!apiKey) {
102
+ logger.error('API key not set');
103
+ return;
104
+ }
105
+ // List epics
106
+ const epicsDir = join(bmadDir(rootDir), 'epics');
107
+ let epicFiles = [];
108
+ try {
109
+ epicFiles = (await readdir(epicsDir)).filter(f => f.endsWith('.yaml'));
110
+ }
111
+ catch { /* empty */ }
112
+ if (epicFiles.length === 0) {
113
+ logger.warn('No epics found. Run: didev bmad epic');
114
+ return;
115
+ }
116
+ const epics = [];
117
+ for (const f of epicFiles) {
118
+ const e = await readYaml(join(epicsDir, f));
119
+ if (e)
120
+ epics.push(e);
121
+ }
122
+ const { epicId, storyTitle, asA, iWant, soThat } = await inquirer.prompt([
123
+ {
124
+ type: 'list',
125
+ name: 'epicId',
126
+ message: 'Select epic:',
127
+ choices: epics.map(e => ({ name: `${e.id}: ${e.title}`, value: e.id })),
128
+ },
129
+ { type: 'input', name: 'storyTitle', message: 'Story title:' },
130
+ { type: 'input', name: 'asA', message: 'As a:', default: 'user' },
131
+ { type: 'input', name: 'iWant', message: 'I want:' },
132
+ { type: 'input', name: 'soThat', message: 'So that:' },
133
+ ]);
134
+ const client = initClient({ apiKey, baseUrl: config.api.baseUrl, model: config.api.model });
135
+ const projectCtx = await collectProjectContext(rootDir);
136
+ const spinner = logger.spinner('Generating story details...').start();
137
+ const response = await client.chat([
138
+ {
139
+ role: 'system',
140
+ content: `You are a Product Manager using BMad Method. ${contextToSystemPrompt(projectCtx)}
141
+
142
+ Generate detailed acceptance criteria and BDD scenarios for a user story.`,
143
+ },
144
+ {
145
+ role: 'user',
146
+ content: `User Story: "${storyTitle}"
147
+ As a ${asA}, I want ${iWant}, so that ${soThat}.
148
+
149
+ Generate:
150
+ 1. 5-8 detailed Acceptance Criteria (Given/When/Then format)
151
+ 2. Technical tasks breakdown (dev tasks)
152
+ 3. Test scenarios
153
+ 4. Any edge cases to consider`,
154
+ },
155
+ ]);
156
+ spinner.stop();
157
+ const storyId = `STORY-${String(Date.now()).slice(-4)}`;
158
+ const story = {
159
+ id: storyId,
160
+ epicId,
161
+ title: storyTitle,
162
+ asA,
163
+ iWant,
164
+ soThat,
165
+ acceptanceCriteria: [],
166
+ tasks: [],
167
+ status: 'backlog',
168
+ createdAt: new Date().toISOString(),
169
+ };
170
+ await mkdir(join(bmadDir(rootDir), 'stories'), { recursive: true });
171
+ await writeYaml(join(bmadDir(rootDir), 'stories', `${storyId}.yaml`), {
172
+ ...story,
173
+ aiDetails: response.content,
174
+ });
175
+ logger.success(`Story created: ${storyId}`);
176
+ logger.newline();
177
+ console.log(response.content);
178
+ logger.newline();
179
+ logger.dim(`Next: didev bmad implement --story ${storyId}`);
180
+ }
181
+ export async function runBmadImplement(storyId, rootDir = process.cwd()) {
182
+ let story = null;
183
+ if (storyId) {
184
+ story = await readYaml(join(bmadDir(rootDir), 'stories', `${storyId}.yaml`));
185
+ }
186
+ else {
187
+ // Find first in-progress or backlog story
188
+ const storiesDir = join(bmadDir(rootDir), 'stories');
189
+ try {
190
+ const files = await readdir(storiesDir);
191
+ for (const f of files) {
192
+ const s = await readYaml(join(storiesDir, f));
193
+ if (s && (s.status === 'in-progress' || s.status === 'backlog')) {
194
+ story = s;
195
+ break;
196
+ }
197
+ }
198
+ }
199
+ catch { /* empty */ }
200
+ }
201
+ if (!story) {
202
+ logger.warn('No story to implement. Create one with: didev bmad story');
203
+ return;
204
+ }
205
+ logger.info(`Implementing: ${story.id} — ${story.title}`);
206
+ const { runOrchestration } = await import('../agents/orchestrator.js');
207
+ await runOrchestration({
208
+ task: `[BMad Story ${story.id}] ${story.title}
209
+ As a ${story.asA}, I want ${story.iWant}, so that ${story.soThat}.`,
210
+ mode: 'full',
211
+ rootDir,
212
+ });
213
+ // Mark story as in-progress
214
+ story.status = 'in-progress';
215
+ await writeYaml(join(bmadDir(rootDir), 'stories', `${story.id}.yaml`), story);
216
+ }
217
+ export async function runBmadReview(rootDir = process.cwd()) {
218
+ const { runReview } = await import('../cli/commands/review.js');
219
+ await runReview({ all: false, pr: false, save: true });
220
+ }
221
+ //# sourceMappingURL=method.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"method.js","sourceRoot":"","sources":["../../src/bmad/method.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import type { AgentFamily, OrchestrationMode } from '../../agents/orchestrator.js';
2
+ export interface AgentCommandOptions {
3
+ type?: AgentFamily;
4
+ model?: string;
5
+ mode?: OrchestrationMode;
6
+ skip?: string;
7
+ orchestrate?: boolean;
8
+ }
9
+ export declare function runAgentCommand(task: string | undefined, options: AgentCommandOptions): Promise<void>;
10
+ //# sourceMappingURL=agent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/agent.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAEnF,MAAM,WAAW,mBAAmB;IAClC,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,iBAAiB,CAAC;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,wBAAsB,eAAe,CACnC,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC,IAAI,CAAC,CA2Bf"}
@@ -0,0 +1,28 @@
1
+ import { logger } from '../../utils/logger.js';
2
+ import { runOrchestration } from '../../agents/orchestrator.js';
3
+ export async function runAgentCommand(task, options) {
4
+ if (!task && !options.orchestrate) {
5
+ logger.error('Please provide a task. Example: didev agent "Add user authentication"');
6
+ logger.dim('Or use --orchestrate for interactive task input');
7
+ process.exit(1);
8
+ }
9
+ if (!task) {
10
+ const inquirer = await import('inquirer');
11
+ const { taskInput } = await inquirer.default.prompt([{
12
+ type: 'input',
13
+ name: 'taskInput',
14
+ message: 'Describe the task for the agent family:',
15
+ validate: (v) => v.trim().length > 5 || 'Please describe the task in more detail',
16
+ }]);
17
+ task = taskInput;
18
+ }
19
+ const skipAgents = options.skip?.split(',').map(s => s.trim()) ?? [];
20
+ await runOrchestration({
21
+ task: task,
22
+ family: options.type ?? 'auto',
23
+ mode: options.mode ?? 'full',
24
+ model: options.model,
25
+ skipAgents: skipAgents.length > 0 ? skipAgents : undefined,
26
+ });
27
+ }
28
+ //# sourceMappingURL=agent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent.js","sourceRoot":"","sources":["../../../src/cli/commands/agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAWhE,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,IAAwB,EACxB,OAA4B;IAE5B,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;QAClC,MAAM,CAAC,KAAK,CAAC,uEAAuE,CAAC,CAAC;QACtF,MAAM,CAAC,GAAG,CAAC,iDAAiD,CAAC,CAAC;QAC9D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC;QAC1C,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;gBACnD,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,WAAW;gBACjB,OAAO,EAAE,yCAAyC;gBAClD,QAAQ,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,IAAI,yCAAyC;aAC1F,CAAC,CAAC,CAAC;QACJ,IAAI,GAAG,SAAmB,CAAC;IAC7B,CAAC;IAED,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC;IAErE,MAAM,gBAAgB,CAAC;QACrB,IAAI,EAAE,IAAK;QACX,MAAM,EAAE,OAAO,CAAC,IAAI,IAAI,MAAM;QAC9B,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,MAAM;QAC5B,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,UAAU,EAAE,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS;KAC3D,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,6 @@
1
+ export interface ChatOptions {
2
+ model?: string;
3
+ file?: string;
4
+ }
5
+ export declare function runChat(options?: ChatOptions): Promise<void>;
6
+ //# sourceMappingURL=chat.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/chat.ts"],"names":[],"mappings":"AAgBA,MAAM,WAAW,WAAW;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAqOD,wBAAsB,OAAO,CAAC,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAqVtE"}