ai-dev-analytics 2.0.0 → 2.0.2

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 (180) hide show
  1. package/README.en.md +34 -48
  2. package/README.md +52 -458
  3. package/dist/cli/commands/doctor.d.ts.map +1 -1
  4. package/dist/cli/commands/doctor.js +109 -11
  5. package/dist/cli/commands/doctor.js.map +1 -1
  6. package/dist/cli/commands/init.d.ts.map +1 -1
  7. package/dist/cli/commands/init.js +4 -0
  8. package/dist/cli/commands/init.js.map +1 -1
  9. package/dist/cli/commands/memory.d.ts.map +1 -1
  10. package/dist/cli/commands/memory.js +3 -13
  11. package/dist/cli/commands/memory.js.map +1 -1
  12. package/dist/cli/commands/merge-data.d.ts +0 -1
  13. package/dist/cli/commands/merge-data.d.ts.map +1 -1
  14. package/dist/cli/commands/merge-data.js +2 -12
  15. package/dist/cli/commands/merge-data.js.map +1 -1
  16. package/dist/cli/commands/merge.js +4 -4
  17. package/dist/cli/commands/merge.js.map +1 -1
  18. package/dist/cli/commands/rules.d.ts +0 -10
  19. package/dist/cli/commands/rules.d.ts.map +1 -1
  20. package/dist/cli/commands/rules.js +7 -33
  21. package/dist/cli/commands/rules.js.map +1 -1
  22. package/dist/cli/commands/skills.d.ts +0 -5
  23. package/dist/cli/commands/skills.d.ts.map +1 -1
  24. package/dist/cli/commands/skills.js +4 -24
  25. package/dist/cli/commands/skills.js.map +1 -1
  26. package/dist/cli/commands/sync.d.ts.map +1 -1
  27. package/dist/cli/commands/sync.js +6 -15
  28. package/dist/cli/commands/sync.js.map +1 -1
  29. package/dist/cli/index.js +25 -90
  30. package/dist/cli/index.js.map +1 -1
  31. package/dist/{schemas/run-json.d.ts → internal/runtime/schema.d.ts} +4 -18
  32. package/dist/internal/runtime/schema.d.ts.map +1 -0
  33. package/dist/{schemas/run-json.js → internal/runtime/schema.js} +5 -9
  34. package/dist/internal/runtime/schema.js.map +1 -0
  35. package/dist/{utils/run-data.d.ts → internal/runtime/state.d.ts} +7 -8
  36. package/dist/internal/runtime/state.d.ts.map +1 -0
  37. package/dist/{utils/run-data.js → internal/runtime/state.js} +11 -12
  38. package/dist/internal/runtime/state.js.map +1 -0
  39. package/dist/{utils → internal/runtime}/summary.d.ts +2 -2
  40. package/dist/internal/runtime/summary.d.ts.map +1 -0
  41. package/dist/{utils → internal/runtime}/summary.js +4 -4
  42. package/dist/internal/runtime/summary.js.map +1 -0
  43. package/dist/internal/runtime/tokens.d.ts.map +1 -0
  44. package/dist/internal/runtime/tokens.js.map +1 -0
  45. package/dist/mcp/server.js +9 -8
  46. package/dist/mcp/server.js.map +1 -1
  47. package/dist/schemas/aida-project.d.ts +4 -0
  48. package/dist/schemas/aida-project.d.ts.map +1 -1
  49. package/dist/schemas/rules.d.ts +15 -0
  50. package/dist/schemas/rules.d.ts.map +1 -0
  51. package/dist/schemas/rules.js +5 -0
  52. package/dist/schemas/rules.js.map +1 -0
  53. package/dist/services/project-build.d.ts +44 -0
  54. package/dist/services/project-build.d.ts.map +1 -0
  55. package/dist/services/project-build.js +32 -0
  56. package/dist/services/project-build.js.map +1 -0
  57. package/dist/services/project-health.d.ts +14 -0
  58. package/dist/services/project-health.d.ts.map +1 -0
  59. package/dist/services/project-health.js +19 -0
  60. package/dist/services/project-health.js.map +1 -0
  61. package/dist/services/security-audit.d.ts +59 -0
  62. package/dist/services/security-audit.d.ts.map +1 -0
  63. package/dist/services/security-audit.js +638 -0
  64. package/dist/services/security-audit.js.map +1 -0
  65. package/dist/utils/ai-build.d.ts +0 -5
  66. package/dist/utils/ai-build.d.ts.map +1 -1
  67. package/dist/utils/ai-build.js +2 -35
  68. package/dist/utils/ai-build.js.map +1 -1
  69. package/dist/utils/guide.d.ts +3 -3
  70. package/dist/utils/guide.js +6 -6
  71. package/dist/utils/import.d.ts.map +1 -1
  72. package/dist/utils/import.js +4 -15
  73. package/dist/utils/import.js.map +1 -1
  74. package/dist/utils/paths.d.ts +0 -10
  75. package/dist/utils/paths.d.ts.map +1 -1
  76. package/dist/utils/paths.js +1 -17
  77. package/dist/utils/paths.js.map +1 -1
  78. package/dist/utils/project-health.d.ts +1 -0
  79. package/dist/utils/project-health.d.ts.map +1 -1
  80. package/dist/utils/project-health.js +26 -3
  81. package/dist/utils/project-health.js.map +1 -1
  82. package/dist/utils/rules.d.ts +11 -1
  83. package/dist/utils/rules.d.ts.map +1 -1
  84. package/dist/utils/rules.js +27 -1
  85. package/dist/utils/rules.js.map +1 -1
  86. package/dist/utils/skills.d.ts +6 -10
  87. package/dist/utils/skills.d.ts.map +1 -1
  88. package/dist/utils/skills.js +23 -67
  89. package/dist/utils/skills.js.map +1 -1
  90. package/package.json +12 -14
  91. package/dist/cli/commands/build.d.ts +0 -2
  92. package/dist/cli/commands/build.d.ts.map +0 -1
  93. package/dist/cli/commands/build.js +0 -55
  94. package/dist/cli/commands/build.js.map +0 -1
  95. package/dist/cli/commands/dashboard.d.ts +0 -2
  96. package/dist/cli/commands/dashboard.d.ts.map +0 -1
  97. package/dist/cli/commands/dashboard.js +0 -70
  98. package/dist/cli/commands/dashboard.js.map +0 -1
  99. package/dist/cli/commands/import.d.ts +0 -2
  100. package/dist/cli/commands/import.d.ts.map +0 -1
  101. package/dist/cli/commands/import.js +0 -71
  102. package/dist/cli/commands/import.js.map +0 -1
  103. package/dist/cli/commands/log.d.ts +0 -2
  104. package/dist/cli/commands/log.d.ts.map +0 -1
  105. package/dist/cli/commands/log.js +0 -440
  106. package/dist/cli/commands/log.js.map +0 -1
  107. package/dist/cli/commands/migrate-dir.d.ts +0 -6
  108. package/dist/cli/commands/migrate-dir.d.ts.map +0 -1
  109. package/dist/cli/commands/migrate-dir.js +0 -125
  110. package/dist/cli/commands/migrate-dir.js.map +0 -1
  111. package/dist/cli/commands/migrate-legacy.d.ts +0 -2
  112. package/dist/cli/commands/migrate-legacy.d.ts.map +0 -1
  113. package/dist/cli/commands/migrate-legacy.js +0 -141
  114. package/dist/cli/commands/migrate-legacy.js.map +0 -1
  115. package/dist/cli/commands/migrate.d.ts +0 -2
  116. package/dist/cli/commands/migrate.d.ts.map +0 -1
  117. package/dist/cli/commands/migrate.js +0 -303
  118. package/dist/cli/commands/migrate.js.map +0 -1
  119. package/dist/cli/commands/reindex.d.ts +0 -14
  120. package/dist/cli/commands/reindex.d.ts.map +0 -1
  121. package/dist/cli/commands/reindex.js +0 -69
  122. package/dist/cli/commands/reindex.js.map +0 -1
  123. package/dist/cli/commands/report.d.ts +0 -2
  124. package/dist/cli/commands/report.d.ts.map +0 -1
  125. package/dist/cli/commands/report.js +0 -224
  126. package/dist/cli/commands/report.js.map +0 -1
  127. package/dist/cli/commands/start.d.ts +0 -2
  128. package/dist/cli/commands/start.d.ts.map +0 -1
  129. package/dist/cli/commands/start.js +0 -155
  130. package/dist/cli/commands/start.js.map +0 -1
  131. package/dist/cli/commands/status.d.ts +0 -2
  132. package/dist/cli/commands/status.d.ts.map +0 -1
  133. package/dist/cli/commands/status.js +0 -70
  134. package/dist/cli/commands/status.js.map +0 -1
  135. package/dist/cli/commands/update.d.ts +0 -2
  136. package/dist/cli/commands/update.d.ts.map +0 -1
  137. package/dist/cli/commands/update.js +0 -74
  138. package/dist/cli/commands/update.js.map +0 -1
  139. package/dist/schemas/run-json.d.ts.map +0 -1
  140. package/dist/schemas/run-json.js.map +0 -1
  141. package/dist/server/api.d.ts +0 -30
  142. package/dist/server/api.d.ts.map +0 -1
  143. package/dist/server/api.js +0 -232
  144. package/dist/server/api.js.map +0 -1
  145. package/dist/server/index.d.ts +0 -2
  146. package/dist/server/index.d.ts.map +0 -1
  147. package/dist/server/index.js +0 -228
  148. package/dist/server/index.js.map +0 -1
  149. package/dist/utils/run-data.d.ts.map +0 -1
  150. package/dist/utils/run-data.js.map +0 -1
  151. package/dist/utils/summary.d.ts.map +0 -1
  152. package/dist/utils/summary.js.map +0 -1
  153. package/dist/utils/tokens.d.ts.map +0 -1
  154. package/dist/utils/tokens.js.map +0 -1
  155. package/src/assets/skills/audit.md +0 -98
  156. package/src/assets/skills/bug-fixer.md +0 -43
  157. package/src/assets/skills/code-generator.md +0 -71
  158. package/src/assets/skills/commit-code.md +0 -67
  159. package/src/assets/skills/dashboard-generator.md +0 -65
  160. package/src/assets/skills/dev-flower.md +0 -85
  161. package/src/assets/skills/deviation-recorder.md +0 -83
  162. package/src/assets/skills/docx-to-markdown.md +0 -69
  163. package/src/assets/skills/mcp-reviewer.md +0 -38
  164. package/src/assets/skills/requirement-analyzer.md +0 -103
  165. package/src/assets/skills/rules-evolver.md +0 -47
  166. package/src/assets/skills/self-reviewer.md +0 -49
  167. package/src/assets/skills/task-splitter.md +0 -60
  168. package/src/assets/skills/workflow-orchestrator.md +0 -209
  169. package/src/assets/templates/demo-run.json +0 -910
  170. package/src/assets/templates/run.json +0 -63
  171. package/src/dashboard/assets/index-B8QcPcg7.css +0 -1
  172. package/src/dashboard/assets/index-DcAl6lhS.js +0 -111
  173. package/src/dashboard/demo/overview.json +0 -71
  174. package/src/dashboard/demo/run.en.json +0 -1169
  175. package/src/dashboard/demo/run.json +0 -2667
  176. package/src/dashboard/demo/run.zh.json +0 -1169
  177. package/src/dashboard/demo/runs.json +0 -19
  178. package/src/dashboard/index.html +0 -13
  179. /package/dist/{utils → internal/runtime}/tokens.d.ts +0 -0
  180. /package/dist/{utils → internal/runtime}/tokens.js +0 -0
@@ -1,69 +0,0 @@
1
- import { configPath, indexPath } from '../../utils/paths.js';
2
- import { fileExists, readText, writeJson, extractConflictSections } from '../../utils/fs.js';
3
- import { green, red, yellow } from '../../utils/display.js';
4
- import { rebuildSummaryIndex } from '../../utils/summary.js';
5
- /**
6
- * Core reindex logic - can be called from CLI or programmatically (e.g. dashboard startup).
7
- * Returns the number of runs indexed, or -1 on error.
8
- */
9
- export function buildIndex(projectRoot) {
10
- return rebuildSummaryIndex(projectRoot);
11
- }
12
- /**
13
- * CLI entry point for `aida reindex`
14
- *
15
- * Also auto-resolves git merge conflicts in index.json and config.json:
16
- * - index.json: rebuilt from source (requirement.json files) — authoritative
17
- * - config.json: merges aiTools as union, keeps ours for scalar fields
18
- */
19
- export async function reindex() {
20
- const projectRoot = process.cwd();
21
- if (!fileExists(configPath(projectRoot))) {
22
- console.log(red('\n AIDA not initialized. Run `npx aida init` first.\n'));
23
- return;
24
- }
25
- // Auto-resolve config.json conflict if present
26
- const cfgPath = configPath(projectRoot);
27
- const cfgRaw = readText(cfgPath);
28
- if (cfgRaw.includes('<<<<<<<') || cfgRaw.includes('>>>>>>>')) {
29
- console.log(yellow('\n Merge conflict detected in config.json. Resolving...\n'));
30
- const sections = extractConflictSections(cfgRaw);
31
- if (sections) {
32
- try {
33
- const oursConfig = JSON.parse(sections.ours || '{}');
34
- const theirsConfig = JSON.parse(sections.theirs || '{}');
35
- // Union of aiTools, keep ours for all other scalar fields
36
- const merged = { ...oursConfig };
37
- const theirTools = theirsConfig.aiTools || [];
38
- const ourTools = oursConfig.aiTools || [];
39
- merged.aiTools = [...new Set([...ourTools, ...theirTools])];
40
- writeJson(cfgPath, merged);
41
- console.log(green(' ✓ config.json resolved\n'));
42
- }
43
- catch {
44
- console.log(red(' Could not parse config.json conflict. Please resolve manually.\n'));
45
- }
46
- }
47
- else {
48
- console.log(red(' Could not parse config.json conflict markers. Please resolve manually.\n'));
49
- }
50
- }
51
- // Auto-resolve index.json conflict: just rebuild from source
52
- const idxPath = indexPath(projectRoot);
53
- if (fileExists(idxPath)) {
54
- const idxRaw = readText(idxPath);
55
- if (idxRaw.includes('<<<<<<<') || idxRaw.includes('>>>>>>>')) {
56
- console.log(yellow('\n Merge conflict detected in index.json. Rebuilding from source...\n'));
57
- const count = buildIndex(projectRoot);
58
- console.log(green(` ✓ index.json rebuilt`) + `: ${count} runs indexed (conflict resolved)\n`);
59
- return;
60
- }
61
- }
62
- const count = buildIndex(projectRoot);
63
- if (count < 0) {
64
- console.log(red('\n No runs directory found or failed to read.\n'));
65
- return;
66
- }
67
- console.log(green(`\n ✓ Index rebuilt`) + `: ${count} runs indexed\n`);
68
- }
69
- //# sourceMappingURL=reindex.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"reindex.js","sourceRoot":"","sources":["../../../src/cli/commands/reindex.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export declare function report(): Promise<void>;
2
- //# sourceMappingURL=report.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"report.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/report.ts"],"names":[],"mappings":"AA0LA,wBAAsB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAgE5C"}
@@ -1,224 +0,0 @@
1
- import { resolve } from 'node:path';
2
- import { configPath, indexPath } from '../../utils/paths.js';
3
- import { fileExists, writeText } from '../../utils/fs.js';
4
- import { green, red, cyan, yellow } from '../../utils/display.js';
5
- import { getDevName } from '../../utils/git.js';
6
- import { loadIndexData } from '../../utils/summary.js';
7
- function parseReportFlags(args) {
8
- const flags = {};
9
- for (let i = 0; i < args.length; i++) {
10
- if (args[i].startsWith('--') && i + 1 < args.length && !args[i + 1].startsWith('--')) {
11
- flags[args[i].substring(2)] = args[i + 1];
12
- i++;
13
- }
14
- }
15
- return flags;
16
- }
17
- function formatDuration(seconds) {
18
- if (seconds < 60)
19
- return `${Math.round(seconds)}s`;
20
- if (seconds < 3600)
21
- return `${Math.round(seconds / 60)}min`;
22
- const h = Math.floor(seconds / 3600);
23
- const m = Math.round((seconds % 3600) / 60);
24
- return m > 0 ? `${h}h ${m}min` : `${h}h`;
25
- }
26
- function filterByPeriod(runs, period) {
27
- if (!period)
28
- return runs;
29
- const now = new Date();
30
- let startDate;
31
- let endDate;
32
- // Support: 2026-H1, 2026-H2, 2026, 2026-Q1, etc.
33
- const yearMatch = period.match(/^(\d{4})$/);
34
- const h1Match = period.match(/^(\d{4})-H1$/i);
35
- const h2Match = period.match(/^(\d{4})-H2$/i);
36
- const qMatch = period.match(/^(\d{4})-Q(\d)$/i);
37
- if (h1Match) {
38
- const y = parseInt(h1Match[1]);
39
- startDate = new Date(`${y}-01-01T00:00:00Z`);
40
- endDate = new Date(`${y}-07-01T00:00:00Z`);
41
- }
42
- else if (h2Match) {
43
- const y = parseInt(h2Match[1]);
44
- startDate = new Date(`${y}-07-01T00:00:00Z`);
45
- endDate = new Date(`${y + 1}-01-01T00:00:00Z`);
46
- }
47
- else if (qMatch) {
48
- const y = parseInt(qMatch[1]);
49
- const q = parseInt(qMatch[2]);
50
- const startMonth = (q - 1) * 3;
51
- startDate = new Date(y, startMonth, 1);
52
- endDate = new Date(y, startMonth + 3, 1);
53
- }
54
- else if (yearMatch) {
55
- const y = parseInt(yearMatch[1]);
56
- startDate = new Date(`${y}-01-01T00:00:00Z`);
57
- endDate = new Date(`${y + 1}-01-01T00:00:00Z`);
58
- }
59
- else {
60
- return runs;
61
- }
62
- return runs.filter(r => {
63
- if (!r.startTime)
64
- return false;
65
- const t = new Date(r.startTime);
66
- return t >= startDate && t < endDate;
67
- });
68
- }
69
- function generateMyReport(runs, devName, period) {
70
- const myRuns = runs.filter(r => r.developers.some(d => d.name === devName));
71
- const lines = [];
72
- lines.push(`# ${period || 'All Time'} Report - ${devName}`);
73
- lines.push('');
74
- // Summary stats
75
- let totalTasks = 0, totalCompleted = 0, totalBugs = 0, totalDeviations = 0;
76
- let totalLinesAdded = 0, totalTokens = 0, totalWorkSeconds = 0;
77
- for (const run of myRuns) {
78
- const dev = run.developers.find(d => d.name === devName);
79
- if (!dev)
80
- continue;
81
- totalTasks += dev.tasks;
82
- totalCompleted += dev.completedTasks;
83
- totalBugs += dev.bugs;
84
- totalDeviations += dev.deviations;
85
- totalLinesAdded += dev.linesAdded;
86
- totalTokens += dev.totalTokens;
87
- totalWorkSeconds += dev.actualWorkSeconds;
88
- }
89
- lines.push('## Summary');
90
- lines.push('');
91
- lines.push(`- Requirements completed: ${myRuns.length}`);
92
- lines.push(`- Total tasks: ${totalTasks} (completed: ${totalCompleted})`);
93
- lines.push(`- Total bugs: ${totalBugs}`);
94
- lines.push(`- Total deviations: ${totalDeviations}`);
95
- lines.push(`- Code: +${totalLinesAdded} lines`);
96
- lines.push(`- AI work time: ${formatDuration(totalWorkSeconds)}`);
97
- if (totalTokens > 0)
98
- lines.push(`- Token consumption: ${(totalTokens / 1000000).toFixed(2)}M`);
99
- lines.push('');
100
- // Per-requirement breakdown
101
- lines.push('## Requirements');
102
- lines.push('');
103
- lines.push('| Requirement | Tasks | Bugs | Deviations | Lines | Status |');
104
- lines.push('|---|---|---|---|---|---|');
105
- for (const run of myRuns) {
106
- const dev = run.developers.find(d => d.name === devName);
107
- if (!dev)
108
- continue;
109
- lines.push(`| ${run.title || run.branch} | ${dev.tasks} | ${dev.bugs} | ${dev.deviations} | +${dev.linesAdded} | ${run.status} |`);
110
- }
111
- lines.push('');
112
- // Highlights
113
- const allHighlights = myRuns.flatMap(r => r.highlights || []);
114
- if (allHighlights.length > 0) {
115
- lines.push('## Highlights');
116
- lines.push('');
117
- for (const h of allHighlights) {
118
- lines.push(`- ${h.content}`);
119
- }
120
- lines.push('');
121
- }
122
- return lines.join('\n');
123
- }
124
- function generateTeamReport(runs, period) {
125
- const lines = [];
126
- lines.push(`# ${period || 'All Time'} Team Report`);
127
- lines.push('');
128
- // Collect all developers
129
- const devMap = new Map();
130
- for (const run of runs) {
131
- for (const dev of run.developers) {
132
- const existing = devMap.get(dev.name) || { tasks: 0, completed: 0, bugs: 0, deviations: 0, lines: 0, tokens: 0, workSeconds: 0, runs: 0 };
133
- existing.tasks += dev.tasks;
134
- existing.completed += dev.completedTasks;
135
- existing.bugs += dev.bugs;
136
- existing.deviations += dev.deviations;
137
- existing.lines += dev.linesAdded;
138
- existing.tokens += dev.totalTokens;
139
- existing.workSeconds += dev.actualWorkSeconds;
140
- existing.runs += 1;
141
- devMap.set(dev.name, existing);
142
- }
143
- }
144
- lines.push('## Overview');
145
- lines.push('');
146
- lines.push(`- Total requirements: ${runs.length}`);
147
- lines.push(`- Team members: ${devMap.size}`);
148
- lines.push('');
149
- lines.push('## Team Members');
150
- lines.push('');
151
- lines.push('| Developer | Requirements | Tasks | Bugs | Deviations | Lines | AI Time |');
152
- lines.push('|---|---|---|---|---|---|---|');
153
- for (const [name, stats] of devMap) {
154
- lines.push(`| ${name} | ${stats.runs} | ${stats.tasks} | ${stats.bugs} | ${stats.deviations} | +${stats.lines} | ${formatDuration(stats.workSeconds)} |`);
155
- }
156
- lines.push('');
157
- // All requirements
158
- lines.push('## Requirements');
159
- lines.push('');
160
- lines.push('| Requirement | Status | Tasks | Developers | Highlights |');
161
- lines.push('|---|---|---|---|---|');
162
- for (const run of runs) {
163
- const devNames = run.developers.map(d => d.name).join(', ');
164
- const topHighlight = run.highlights?.[0]?.content || '-';
165
- lines.push(`| ${run.title || run.branch} | ${run.status} | ${run.totals.tasks} | ${devNames} | ${topHighlight} |`);
166
- }
167
- lines.push('');
168
- return lines.join('\n');
169
- }
170
- export async function report() {
171
- const projectRoot = process.cwd();
172
- if (!fileExists(configPath(projectRoot))) {
173
- console.log(red('\n AIDA not initialized. Run `npx aida init` first.\n'));
174
- return;
175
- }
176
- const args = process.argv.slice(3);
177
- const flags = parseReportFlags(args);
178
- const scope = flags.scope || 'me';
179
- const period = flags.period || '';
180
- // Ensure index exists
181
- const idxPath = indexPath(projectRoot);
182
- if (!fileExists(idxPath)) {
183
- console.log(yellow('\n Index not found. Running reindex first...\n'));
184
- const { reindex } = await import('./reindex.js');
185
- await reindex();
186
- }
187
- if (!fileExists(idxPath)) {
188
- console.log(red('\n No data available for report.\n'));
189
- return;
190
- }
191
- const index = loadIndexData(projectRoot);
192
- if (!index) {
193
- console.log(red('\n No data available for report.\n'));
194
- return;
195
- }
196
- let runs = index.runs || [];
197
- // Filter by period
198
- if (period) {
199
- runs = filterByPeriod(runs, period);
200
- if (runs.length === 0) {
201
- console.log(yellow(`\n No runs found for period: ${period}\n`));
202
- return;
203
- }
204
- }
205
- let content;
206
- const devName = getDevName();
207
- switch (scope) {
208
- case 'me':
209
- content = generateMyReport(runs, devName, period);
210
- break;
211
- case 'team':
212
- case 'project':
213
- content = generateTeamReport(runs, period);
214
- break;
215
- default:
216
- console.log(red(`\n Invalid --scope: "${scope}". Must be one of: me, team, project\n`));
217
- return;
218
- }
219
- const outputPath = resolve(projectRoot, '.aida', `report-${scope}-${period || 'all'}.md`);
220
- writeText(outputPath, content);
221
- console.log(green('\n ✓ Report generated') + `: ${outputPath}\n`);
222
- console.log(` ${cyan('Tip')}: Use this file as input for AI to generate a performance review draft.\n`);
223
- }
224
- //# sourceMappingURL=report.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"report.js","sourceRoot":"","sources":["../../../src/cli/commands/report.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export declare function start(): Promise<void>;
2
- //# sourceMappingURL=start.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"start.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/start.ts"],"names":[],"mappings":"AAcA,wBAAsB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAsK3C"}
@@ -1,155 +0,0 @@
1
- import { resolve } from 'node:path';
2
- import { getBranchName, getDevName } from '../../utils/git.js';
3
- import { runDir, branchDir, configPath } from '../../utils/paths.js';
4
- import { ensureDir, fileExists, readJson, writeJson, writeText, } from '../../utils/fs.js';
5
- import { bold, green, cyan, yellow, red, dim } from '../../utils/display.js';
6
- import { buildProjectArtifacts, readConfiguredTools } from '../../utils/ai-build.js';
7
- export async function start() {
8
- const projectRoot = process.cwd();
9
- if (!fileExists(configPath(projectRoot))) {
10
- console.log(red('\n AIDA not initialized. Run `npx aida init` first.\n'));
11
- return;
12
- }
13
- const branch = getBranchName();
14
- const dev = getDevName();
15
- const devDir = runDir(projectRoot, branch, dev);
16
- const bDir = branchDir(projectRoot, branch);
17
- const runJsonPath = resolve(devDir, 'run.json');
18
- console.log(`\n ${bold('AIDevOS')} - New Development Run\n`);
19
- if (fileExists(runJsonPath)) {
20
- const data = readJson(runJsonPath);
21
- console.log(yellow(' Run already exists:\n'));
22
- console.log(` Run ID: ${cyan(data.meta?.runId || branch)}`);
23
- console.log(` Developer: ${data.meta?.developer || dev}`);
24
- console.log(` Status: ${data.meta?.status || 'unknown'}`);
25
- console.log(` Started: ${data.meta?.startTime || '-'}\n`);
26
- return;
27
- }
28
- const config = readJson(configPath(projectRoot));
29
- const now = new Date().toISOString();
30
- // AI model: --model flag > config.json > empty
31
- let aiModel = '';
32
- const modelIdx = process.argv.indexOf('--model');
33
- if (modelIdx !== -1 && process.argv[modelIdx + 1]) {
34
- aiModel = process.argv[modelIdx + 1];
35
- }
36
- else if (config.aiModel) {
37
- aiModel = config.aiModel;
38
- }
39
- const runData = {
40
- meta: {
41
- schemaVersion: '2.0',
42
- runId: branch,
43
- project: config.project || '',
44
- developer: dev,
45
- branch,
46
- aiModel,
47
- aiTool: config.aiTool || '',
48
- startTime: now,
49
- endTime: null,
50
- status: 'running',
51
- prdPhases: [],
52
- },
53
- summary: {
54
- totalTasks: 0,
55
- completedTasks: 0,
56
- bugCount: 0,
57
- deviationCount: 0,
58
- reviewCount: 0,
59
- reviewPassCount: 0,
60
- reviewFailCount: 0,
61
- rulesSedimented: 0,
62
- prdPhaseCount: 0,
63
- filesChanged: 0,
64
- linesAdded: 0,
65
- linesRemoved: 0,
66
- },
67
- workflow: [],
68
- tasks: [],
69
- bugs: [],
70
- deviations: [],
71
- reviews: [],
72
- files: [],
73
- metrics: {
74
- aiDeviationRate: 0,
75
- bugRate: 0,
76
- reviewPassRate: 0,
77
- rulesSedimentedCount: 0,
78
- totalDevelopmentTimeSeconds: 0,
79
- actualWorkSeconds: 0,
80
- nodeTimeBreakdown: {},
81
- efficiencyMultiplier: 0,
82
- },
83
- timeline: [],
84
- events: [],
85
- rules: [],
86
- context: {
87
- currentPrdPhase: null,
88
- currentTaskId: null,
89
- currentStage: null,
90
- lastUpdated: now,
91
- },
92
- cost: {
93
- totalTokens: 0,
94
- estimatedManualHours: 0,
95
- actualHours: 0,
96
- tokenBreakdown: [],
97
- },
98
- highlights: [],
99
- };
100
- // Ensure branch-level directory and developer directory
101
- ensureDir(bDir);
102
- ensureDir(devDir);
103
- // Create run.json in developer directory
104
- writeJson(runJsonPath, runData);
105
- // Create shared PRD at branch level (if not already exists)
106
- const prdPath = resolve(bDir, 'prd.md');
107
- if (!fileExists(prdPath)) {
108
- writeText(prdPath, '# PRD\n\nPlace your product requirements here.\n');
109
- }
110
- // Create shared analysis.md at branch level (if not already exists)
111
- const analysisPath = resolve(bDir, 'analysis.md');
112
- if (!fileExists(analysisPath)) {
113
- writeText(analysisPath, '');
114
- }
115
- // Initialize requirement.json at branch level (if not already exists)
116
- const reqPath = resolve(bDir, 'requirement.json');
117
- if (!fileExists(reqPath)) {
118
- writeJson(reqPath, {
119
- branch,
120
- title: '',
121
- summary: '',
122
- prdPhases: [],
123
- modules: [],
124
- highlights: [],
125
- developers: [],
126
- totals: { tasks: 0, completedTasks: 0, bugs: 0, deviations: 0, linesAdded: 0, linesRemoved: 0, totalTokens: 0 },
127
- createdAt: now,
128
- updatedAt: now,
129
- });
130
- }
131
- const safeBranch = branch.replace(/\//g, '-');
132
- // Best-effort rebuild so configured AI tools have fresh generated artifacts
133
- try {
134
- const tools = readConfiguredTools(projectRoot);
135
- if (tools.length > 0) {
136
- const result = buildProjectArtifacts(projectRoot, tools);
137
- if (result.ruleFiles > 0 || result.skillFiles > 0 || result.mcpFiles.length > 0) {
138
- console.log(dim(` ✓ Rebuilt AI tool artifacts (${result.ruleFiles} rule files, ${result.skillFiles} skill files)`));
139
- }
140
- }
141
- }
142
- catch { /* best-effort */ }
143
- console.log(` Run ID: ${cyan(branch)}`);
144
- console.log(` Developer: ${dev}`);
145
- console.log(` Branch: ${branch}`);
146
- if (aiModel) {
147
- console.log(` AI Model: ${aiModel}`);
148
- }
149
- console.log('');
150
- console.log(green(' ✓ Created') +
151
- ` .aida/runs/${safeBranch}/${dev}/run.json\n`);
152
- console.log(` Shared PRD: .aida/runs/${safeBranch}/prd.md`);
153
- console.log(`\n Next: Place your PRD in the branch directory, then run ${cyan('/workflow')}\n`);
154
- }
155
- //# sourceMappingURL=start.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"start.js","sourceRoot":"","sources":["../../../src/cli/commands/start.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export declare function status(): Promise<void>;
2
- //# sourceMappingURL=status.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/status.ts"],"names":[],"mappings":"AAgBA,wBAAsB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CA6E5C"}
@@ -1,70 +0,0 @@
1
- import { resolve } from 'node:path';
2
- import { getBranchName, getDevName } from '../../utils/git.js';
3
- import { runDir, configPath } from '../../utils/paths.js';
4
- import { fileExists, readJson } from '../../utils/fs.js';
5
- import { bold, green, cyan, red, yellow, blue, section, formatDuration, formatDate, } from '../../utils/display.js';
6
- export async function status() {
7
- const projectRoot = process.cwd();
8
- if (!fileExists(configPath(projectRoot))) {
9
- console.log(red('\n AIDA not initialized. Run `npx aida init` first.\n'));
10
- return;
11
- }
12
- const branch = getBranchName();
13
- const dev = getDevName();
14
- const dir = runDir(projectRoot, branch, dev);
15
- const runJsonPath = resolve(dir, 'run.json');
16
- if (!fileExists(runJsonPath)) {
17
- console.log(red('\n No active run found. Run `aida start` first.\n'));
18
- return;
19
- }
20
- const data = readJson(runJsonPath);
21
- const meta = data.meta || {};
22
- const summary = data.summary || {};
23
- const context = data.context || {};
24
- const bugs = data.bugs || [];
25
- const statusColor = meta.status === 'completed'
26
- ? green
27
- : meta.status === 'running'
28
- ? blue
29
- : yellow;
30
- const startTime = meta.startTime ? new Date(meta.startTime).getTime() : 0;
31
- const endTime = meta.endTime
32
- ? new Date(meta.endTime).getTime()
33
- : Date.now();
34
- const elapsed = startTime ? formatDuration(endTime - startTime) : '-';
35
- const stage = context.currentStage || '-';
36
- const phase = context.currentPrdPhase ? ` (${context.currentPrdPhase})` : '';
37
- const openBugs = bugs.filter((b) => b.status === 'open').length;
38
- const fixedBugs = bugs.filter((b) => b.status === 'fixed').length;
39
- console.log(`
40
- ${bold('AI Development Status')}
41
-
42
- Run ID: ${cyan(meta.runId || branch)}
43
- Developer: ${meta.developer || dev}
44
- Status: ${statusColor(meta.status || 'unknown')}
45
- Current Stage: ${stage}${phase}
46
- Started: ${meta.startTime ? formatDate(meta.startTime) : '-'}
47
-
48
- ${section('Tasks')}
49
- Completed: ${summary.completedTasks || 0} / ${summary.totalTasks || 0}
50
-
51
- ${section('Bugs')}
52
- Open: ${openBugs}
53
- Fixed: ${fixedBugs}
54
-
55
- ${section('Deviations')}
56
- Detected: ${summary.deviationCount || 0}
57
- Rules Sedimented: ${summary.rulesSedimented || 0}
58
-
59
- ${section('Reviews')}
60
- Pass: ${summary.reviewPassCount || 0}
61
- Fail: ${summary.reviewFailCount || 0}
62
-
63
- ${section('Files Changed')}
64
- ${summary.filesChanged || 0} files
65
-
66
- ${section('Development Time')}
67
- ${elapsed}
68
- `);
69
- }
70
- //# sourceMappingURL=status.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"status.js","sourceRoot":"","sources":["../../../src/cli/commands/status.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export declare function update(): Promise<void>;
2
- //# sourceMappingURL=update.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/update.ts"],"names":[],"mappings":"AAqBA,wBAAsB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAsF5C"}