aidevo 1.0.0-beta.1

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 (110) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +431 -0
  3. package/dist/cli/commands/dashboard.d.ts +2 -0
  4. package/dist/cli/commands/dashboard.d.ts.map +1 -0
  5. package/dist/cli/commands/dashboard.js +70 -0
  6. package/dist/cli/commands/dashboard.js.map +1 -0
  7. package/dist/cli/commands/init.d.ts +2 -0
  8. package/dist/cli/commands/init.d.ts.map +1 -0
  9. package/dist/cli/commands/init.js +362 -0
  10. package/dist/cli/commands/init.js.map +1 -0
  11. package/dist/cli/commands/log.d.ts +2 -0
  12. package/dist/cli/commands/log.d.ts.map +1 -0
  13. package/dist/cli/commands/log.js +438 -0
  14. package/dist/cli/commands/log.js.map +1 -0
  15. package/dist/cli/commands/migrate.d.ts +2 -0
  16. package/dist/cli/commands/migrate.d.ts.map +1 -0
  17. package/dist/cli/commands/migrate.js +183 -0
  18. package/dist/cli/commands/migrate.js.map +1 -0
  19. package/dist/cli/commands/reindex.d.ts +10 -0
  20. package/dist/cli/commands/reindex.d.ts.map +1 -0
  21. package/dist/cli/commands/reindex.js +94 -0
  22. package/dist/cli/commands/reindex.js.map +1 -0
  23. package/dist/cli/commands/report.d.ts +2 -0
  24. package/dist/cli/commands/report.d.ts.map +1 -0
  25. package/dist/cli/commands/report.js +219 -0
  26. package/dist/cli/commands/report.js.map +1 -0
  27. package/dist/cli/commands/rules.d.ts +2 -0
  28. package/dist/cli/commands/rules.d.ts.map +1 -0
  29. package/dist/cli/commands/rules.js +143 -0
  30. package/dist/cli/commands/rules.js.map +1 -0
  31. package/dist/cli/commands/start.d.ts +2 -0
  32. package/dist/cli/commands/start.d.ts.map +1 -0
  33. package/dist/cli/commands/start.js +173 -0
  34. package/dist/cli/commands/start.js.map +1 -0
  35. package/dist/cli/commands/status.d.ts +2 -0
  36. package/dist/cli/commands/status.d.ts.map +1 -0
  37. package/dist/cli/commands/status.js +74 -0
  38. package/dist/cli/commands/status.js.map +1 -0
  39. package/dist/cli/commands/update.d.ts +2 -0
  40. package/dist/cli/commands/update.d.ts.map +1 -0
  41. package/dist/cli/commands/update.js +146 -0
  42. package/dist/cli/commands/update.js.map +1 -0
  43. package/dist/cli/index.d.ts +3 -0
  44. package/dist/cli/index.d.ts.map +1 -0
  45. package/dist/cli/index.js +85 -0
  46. package/dist/cli/index.js.map +1 -0
  47. package/dist/mcp/server.d.ts +10 -0
  48. package/dist/mcp/server.d.ts.map +1 -0
  49. package/dist/mcp/server.js +632 -0
  50. package/dist/mcp/server.js.map +1 -0
  51. package/dist/schemas/run-json.d.ts +252 -0
  52. package/dist/schemas/run-json.d.ts.map +1 -0
  53. package/dist/schemas/run-json.js +22 -0
  54. package/dist/schemas/run-json.js.map +1 -0
  55. package/dist/server/api.d.ts +24 -0
  56. package/dist/server/api.d.ts.map +1 -0
  57. package/dist/server/api.js +196 -0
  58. package/dist/server/api.js.map +1 -0
  59. package/dist/server/index.d.ts +2 -0
  60. package/dist/server/index.d.ts.map +1 -0
  61. package/dist/server/index.js +166 -0
  62. package/dist/server/index.js.map +1 -0
  63. package/dist/utils/display.d.ts +12 -0
  64. package/dist/utils/display.d.ts.map +1 -0
  65. package/dist/utils/display.js +52 -0
  66. package/dist/utils/display.js.map +1 -0
  67. package/dist/utils/fs.d.ts +9 -0
  68. package/dist/utils/fs.d.ts.map +1 -0
  69. package/dist/utils/fs.js +43 -0
  70. package/dist/utils/fs.js.map +1 -0
  71. package/dist/utils/git.d.ts +4 -0
  72. package/dist/utils/git.d.ts.map +1 -0
  73. package/dist/utils/git.js +18 -0
  74. package/dist/utils/git.js.map +1 -0
  75. package/dist/utils/paths.d.ts +25 -0
  76. package/dist/utils/paths.d.ts.map +1 -0
  77. package/dist/utils/paths.js +45 -0
  78. package/dist/utils/paths.js.map +1 -0
  79. package/dist/utils/rules.d.ts +44 -0
  80. package/dist/utils/rules.d.ts.map +1 -0
  81. package/dist/utils/rules.js +208 -0
  82. package/dist/utils/rules.js.map +1 -0
  83. package/dist/utils/run-data.d.ts +37 -0
  84. package/dist/utils/run-data.d.ts.map +1 -0
  85. package/dist/utils/run-data.js +353 -0
  86. package/dist/utils/run-data.js.map +1 -0
  87. package/dist/utils/tokens.d.ts +26 -0
  88. package/dist/utils/tokens.d.ts.map +1 -0
  89. package/dist/utils/tokens.js +173 -0
  90. package/dist/utils/tokens.js.map +1 -0
  91. package/package.json +48 -0
  92. package/src/assets/skills/audit.md +98 -0
  93. package/src/assets/skills/bug-fixer.md +48 -0
  94. package/src/assets/skills/code-generator.md +82 -0
  95. package/src/assets/skills/commit-code.md +67 -0
  96. package/src/assets/skills/dashboard-generator.md +65 -0
  97. package/src/assets/skills/dev-flower.md +85 -0
  98. package/src/assets/skills/deviation-recorder.md +89 -0
  99. package/src/assets/skills/docx-to-markdown.md +69 -0
  100. package/src/assets/skills/mcp-reviewer.md +43 -0
  101. package/src/assets/skills/requirement-analyzer.md +103 -0
  102. package/src/assets/skills/rules-evolver.md +48 -0
  103. package/src/assets/skills/self-reviewer.md +53 -0
  104. package/src/assets/skills/task-splitter.md +58 -0
  105. package/src/assets/skills/workflow-orchestrator.md +204 -0
  106. package/src/assets/templates/demo-run.json +910 -0
  107. package/src/assets/templates/run.json +63 -0
  108. package/src/dashboard/assets/index-BMygHuaU.js +111 -0
  109. package/src/dashboard/assets/index-BW0UZ6Es.css +1 -0
  110. package/src/dashboard/index.html +13 -0
@@ -0,0 +1,173 @@
1
+ import { resolve } from 'node:path';
2
+ import { getBranchName, getDevName, isGitRepo } from '../../utils/git.js';
3
+ import { runDir, branchDir, configPath } from '../../utils/paths.js';
4
+ import { ensureDir, fileExists, readJson, readText, writeJson, writeText, } from '../../utils/fs.js';
5
+ import { bold, green, cyan, yellow, red, dim } from '../../utils/display.js';
6
+ import { buildRuleViews, loadRegistry } from '../../utils/rules.js';
7
+ export async function start() {
8
+ const projectRoot = process.cwd();
9
+ if (!fileExists(configPath(projectRoot))) {
10
+ console.log(red('\n AIDevOS not initialized. Run `npx aidevo init` first.\n'));
11
+ return;
12
+ }
13
+ if (!isGitRepo()) {
14
+ console.log(red('\n Not a git repository. AIDevOS requires git.\n'));
15
+ return;
16
+ }
17
+ const branch = getBranchName();
18
+ const dev = getDevName();
19
+ const devDir = runDir(projectRoot, branch, dev);
20
+ const bDir = branchDir(projectRoot, branch);
21
+ const runJsonPath = resolve(devDir, 'run.json');
22
+ console.log(`\n ${bold('AIDevOS')} - New Development Run\n`);
23
+ if (fileExists(runJsonPath)) {
24
+ const data = readJson(runJsonPath);
25
+ console.log(yellow(' Run already exists:\n'));
26
+ console.log(` Run ID: ${cyan(data.meta?.runId || branch)}`);
27
+ console.log(` Developer: ${data.meta?.developer || dev}`);
28
+ console.log(` Status: ${data.meta?.status || 'unknown'}`);
29
+ console.log(` Started: ${data.meta?.startTime || '-'}\n`);
30
+ return;
31
+ }
32
+ const config = readJson(configPath(projectRoot));
33
+ const now = new Date().toISOString();
34
+ // AI model: --model flag > config.json > empty
35
+ let aiModel = '';
36
+ const modelIdx = process.argv.indexOf('--model');
37
+ if (modelIdx !== -1 && process.argv[modelIdx + 1]) {
38
+ aiModel = process.argv[modelIdx + 1];
39
+ }
40
+ else if (config.aiModel) {
41
+ aiModel = config.aiModel;
42
+ }
43
+ const runData = {
44
+ meta: {
45
+ schemaVersion: '2.0',
46
+ runId: branch,
47
+ project: config.project || '',
48
+ developer: dev,
49
+ branch,
50
+ aiModel,
51
+ aiTool: config.aiTool || '',
52
+ startTime: now,
53
+ endTime: null,
54
+ status: 'running',
55
+ prdPhases: [],
56
+ },
57
+ summary: {
58
+ totalTasks: 0,
59
+ completedTasks: 0,
60
+ bugCount: 0,
61
+ deviationCount: 0,
62
+ reviewCount: 0,
63
+ reviewPassCount: 0,
64
+ reviewFailCount: 0,
65
+ rulesSedimented: 0,
66
+ prdPhaseCount: 0,
67
+ filesChanged: 0,
68
+ linesAdded: 0,
69
+ linesRemoved: 0,
70
+ },
71
+ workflow: [],
72
+ tasks: [],
73
+ bugs: [],
74
+ deviations: [],
75
+ reviews: [],
76
+ files: [],
77
+ metrics: {
78
+ aiDeviationRate: 0,
79
+ bugRate: 0,
80
+ reviewPassRate: 0,
81
+ rulesSedimentedCount: 0,
82
+ totalDevelopmentTimeSeconds: 0,
83
+ actualWorkSeconds: 0,
84
+ nodeTimeBreakdown: {},
85
+ efficiencyMultiplier: 0,
86
+ },
87
+ timeline: [],
88
+ events: [],
89
+ rules: [],
90
+ context: {
91
+ currentPrdPhase: null,
92
+ currentTaskId: null,
93
+ currentStage: null,
94
+ lastUpdated: now,
95
+ },
96
+ cost: {
97
+ totalTokens: 0,
98
+ estimatedManualHours: 0,
99
+ actualHours: 0,
100
+ tokenBreakdown: [],
101
+ },
102
+ highlights: [],
103
+ };
104
+ // Ensure branch-level directory and developer directory
105
+ ensureDir(bDir);
106
+ ensureDir(devDir);
107
+ // Create run.json in developer directory
108
+ writeJson(runJsonPath, runData);
109
+ // Create shared PRD at branch level (if not already exists)
110
+ const prdPath = resolve(bDir, 'prd.md');
111
+ if (!fileExists(prdPath)) {
112
+ writeText(prdPath, '# PRD\n\nPlace your product requirements here.\n');
113
+ }
114
+ // Create shared analysis.md at branch level (if not already exists)
115
+ const analysisPath = resolve(bDir, 'analysis.md');
116
+ if (!fileExists(analysisPath)) {
117
+ writeText(analysisPath, '');
118
+ }
119
+ // Initialize requirement.json at branch level (if not already exists)
120
+ const reqPath = resolve(bDir, 'requirement.json');
121
+ if (!fileExists(reqPath)) {
122
+ writeJson(reqPath, {
123
+ branch,
124
+ title: '',
125
+ summary: '',
126
+ prdPhases: [],
127
+ modules: [],
128
+ highlights: [],
129
+ developers: [],
130
+ totals: { tasks: 0, completedTasks: 0, bugs: 0, deviations: 0, linesAdded: 0, linesRemoved: 0, totalTokens: 0 },
131
+ createdAt: now,
132
+ updatedAt: now,
133
+ });
134
+ }
135
+ const safeBranch = branch.replace(/\//g, '-');
136
+ // Ensure .gitignore contains rules/*.md (auto-generated views)
137
+ ensureGitignoreEntry(projectRoot, '.aidevos/rules/*.md');
138
+ // Auto-rebuild rule views from registry so AI has fresh rules
139
+ try {
140
+ const registry = loadRegistry(projectRoot);
141
+ if (registry.length > 0) {
142
+ const count = buildRuleViews(projectRoot);
143
+ console.log(dim(` ✓ Rules views rebuilt (${registry.length} rules → ${count} files)`));
144
+ }
145
+ }
146
+ catch { /* best-effort */ }
147
+ console.log(` Run ID: ${cyan(branch)}`);
148
+ console.log(` Developer: ${dev}`);
149
+ console.log(` Branch: ${branch}`);
150
+ if (aiModel) {
151
+ console.log(` AI Model: ${aiModel}`);
152
+ }
153
+ console.log('');
154
+ console.log(green(' ✓ Created') +
155
+ ` .aidevos/runs/${safeBranch}/${dev}/run.json\n`);
156
+ console.log(` Shared PRD: .aidevos/runs/${safeBranch}/prd.md`);
157
+ console.log(`\n Next: Place your PRD in the branch directory, then run ${cyan('/workflow')}\n`);
158
+ }
159
+ function ensureGitignoreEntry(projectRoot, entry) {
160
+ const gitignorePath = resolve(projectRoot, '.gitignore');
161
+ let content = '';
162
+ if (fileExists(gitignorePath)) {
163
+ content = readText(gitignorePath);
164
+ }
165
+ // Check if entry already present
166
+ const lines = content.split('\n');
167
+ if (lines.some((l) => l.trim() === entry))
168
+ return;
169
+ // Append with a comment
170
+ const append = content.endsWith('\n') || content === '' ? '' : '\n';
171
+ writeText(gitignorePath, content + append + `# Auto-generated rule views (source of truth: .aidevos/rules.json)\n${entry}\n`);
172
+ }
173
+ //# sourceMappingURL=start.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"start.js","sourceRoot":"","sources":["../../../src/cli/commands/start.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function status(): Promise<void>;
2
+ //# sourceMappingURL=status.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/status.ts"],"names":[],"mappings":"AAgBA,wBAAsB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAkF5C"}
@@ -0,0 +1,74 @@
1
+ import { resolve } from 'node:path';
2
+ import { getBranchName, getDevName, isGitRepo } 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 AIDevOS not initialized. Run `npx aidevo init` first.\n'));
10
+ return;
11
+ }
12
+ if (!isGitRepo()) {
13
+ console.log(red('\n Not a git repository. AIDevOS requires git.\n'));
14
+ return;
15
+ }
16
+ const branch = getBranchName();
17
+ const dev = getDevName();
18
+ const dir = runDir(projectRoot, branch, dev);
19
+ const runJsonPath = resolve(dir, 'run.json');
20
+ if (!fileExists(runJsonPath)) {
21
+ console.log(red('\n No active run found. Run `aidevo start` first.\n'));
22
+ return;
23
+ }
24
+ const data = readJson(runJsonPath);
25
+ const meta = data.meta || {};
26
+ const summary = data.summary || {};
27
+ const context = data.context || {};
28
+ const bugs = data.bugs || [];
29
+ const statusColor = meta.status === 'completed'
30
+ ? green
31
+ : meta.status === 'running'
32
+ ? blue
33
+ : yellow;
34
+ const startTime = meta.startTime ? new Date(meta.startTime).getTime() : 0;
35
+ const endTime = meta.endTime
36
+ ? new Date(meta.endTime).getTime()
37
+ : Date.now();
38
+ const elapsed = startTime ? formatDuration(endTime - startTime) : '-';
39
+ const stage = context.currentStage || '-';
40
+ const phase = context.currentPrdPhase ? ` (${context.currentPrdPhase})` : '';
41
+ const openBugs = bugs.filter((b) => b.status === 'open').length;
42
+ const fixedBugs = bugs.filter((b) => b.status === 'fixed').length;
43
+ console.log(`
44
+ ${bold('AI Development Status')}
45
+
46
+ Run ID: ${cyan(meta.runId || branch)}
47
+ Developer: ${meta.developer || dev}
48
+ Status: ${statusColor(meta.status || 'unknown')}
49
+ Current Stage: ${stage}${phase}
50
+ Started: ${meta.startTime ? formatDate(meta.startTime) : '-'}
51
+
52
+ ${section('Tasks')}
53
+ Completed: ${summary.completedTasks || 0} / ${summary.totalTasks || 0}
54
+
55
+ ${section('Bugs')}
56
+ Open: ${openBugs}
57
+ Fixed: ${fixedBugs}
58
+
59
+ ${section('Deviations')}
60
+ Detected: ${summary.deviationCount || 0}
61
+ Rules Sedimented: ${summary.rulesSedimented || 0}
62
+
63
+ ${section('Reviews')}
64
+ Pass: ${summary.reviewPassCount || 0}
65
+ Fail: ${summary.reviewFailCount || 0}
66
+
67
+ ${section('Files Changed')}
68
+ ${summary.filesChanged || 0} files
69
+
70
+ ${section('Development Time')}
71
+ ${elapsed}
72
+ `);
73
+ }
74
+ //# sourceMappingURL=status.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.js","sourceRoot":"","sources":["../../../src/cli/commands/status.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function update(): Promise<void>;
2
+ //# sourceMappingURL=update.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/update.ts"],"names":[],"mappings":"AA8CA,wBAAsB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAwI5C"}
@@ -0,0 +1,146 @@
1
+ import { resolve } from 'node:path';
2
+ import { existsSync, readdirSync, statSync } from 'node:fs';
3
+ import { SKILLS_DIR } from '../../utils/paths.js';
4
+ import { ensureDir, writeText, readText, fileExists, } from '../../utils/fs.js';
5
+ import { bold, green, cyan, dim, yellow } from '../../utils/display.js';
6
+ import * as readline from 'node:readline/promises';
7
+ import { stdin, stdout } from 'node:process';
8
+ const ALL_SKILLS = [
9
+ 'workflow-orchestrator',
10
+ 'requirement-analyzer',
11
+ 'task-splitter',
12
+ 'code-generator',
13
+ 'self-reviewer',
14
+ 'bug-fixer',
15
+ 'deviation-recorder',
16
+ 'dashboard-generator',
17
+ 'commit-code',
18
+ 'docx-to-markdown',
19
+ 'mcp-reviewer',
20
+ 'rules-evolver',
21
+ 'dev-flower',
22
+ 'audit',
23
+ ];
24
+ const QUICK_COMMANDS = [
25
+ { name: 'workflow', skill: 'workflow-orchestrator' },
26
+ { name: 'audit', skill: 'audit' },
27
+ { name: 'deviation', skill: 'deviation-recorder' },
28
+ { name: 'self-reviewer', skill: 'self-reviewer' },
29
+ { name: 'bug-fixer', skill: 'bug-fixer' },
30
+ { name: 'rules-evolver', skill: 'rules-evolver' },
31
+ ];
32
+ export async function update() {
33
+ const projectRoot = process.cwd();
34
+ const aidevos = resolve(projectRoot, '.aidevos');
35
+ const configPath = resolve(aidevos, 'config.json');
36
+ console.log(`\n ${bold('AIDevOS')} - Update Skills\n`);
37
+ // Check if initialized
38
+ if (!fileExists(configPath)) {
39
+ console.log(yellow(' AIDevOS is not initialized in this project.'));
40
+ console.log(dim(' Run `aidevo init` first.\n'));
41
+ return;
42
+ }
43
+ // Read config
44
+ const config = JSON.parse(readText(configPath));
45
+ const tool = config.aiTool;
46
+ console.log(` Project: ${cyan(config.project)}`);
47
+ console.log(` AI Tool: ${cyan(tool)}`);
48
+ console.log('');
49
+ // Detect which skills/commands exist
50
+ const skillsDir = resolve(aidevos, 'skills');
51
+ const existingSkills = [];
52
+ if (existsSync(skillsDir)) {
53
+ existingSkills.push(...readdirSync(skillsDir).filter((f) => statSync(resolve(skillsDir, f)).isDirectory()));
54
+ }
55
+ const existingCommands = [];
56
+ if (tool === 'claude-code') {
57
+ const cmdDir = resolve(projectRoot, '.claude', 'commands');
58
+ if (existsSync(cmdDir)) {
59
+ existingCommands.push(...readdirSync(cmdDir)
60
+ .filter((f) => f.endsWith('.md'))
61
+ .map((f) => f.replace('.md', '')));
62
+ }
63
+ }
64
+ else {
65
+ const skillsDir = resolve(projectRoot, '.cursor', 'skills');
66
+ if (existsSync(skillsDir)) {
67
+ existingCommands.push(...readdirSync(skillsDir).filter((f) => statSync(resolve(skillsDir, f)).isDirectory()));
68
+ }
69
+ }
70
+ console.log(` Found ${existingSkills.length} skills in .aidevos/skills/`);
71
+ console.log(` Found ${existingCommands.length} quick commands in ${tool === 'claude-code' ? '.claude/commands/' : '.cursor/skills/'}`);
72
+ console.log('');
73
+ // Ask confirmation
74
+ const rl = readline.createInterface({ input: stdin, output: stdout });
75
+ console.log(' This will update all skills to the latest version.');
76
+ console.log(dim(' Old versions will be backed up to .aidevos/skills-backup/\n'));
77
+ const answer = (await rl.question(' Continue? (y/N) > ')).trim().toLowerCase();
78
+ rl.close();
79
+ if (answer !== 'y' && answer !== 'yes') {
80
+ console.log(yellow('\n Update cancelled.\n'));
81
+ return;
82
+ }
83
+ console.log('');
84
+ // Backup existing skills
85
+ if (existingSkills.length > 0) {
86
+ const timestamp = new Date().toISOString().replace(/[:.]/g, '-').split('T')[0];
87
+ const backupDir = resolve(aidevos, `skills-backup-${timestamp}`);
88
+ ensureDir(backupDir);
89
+ for (const skill of existingSkills) {
90
+ const src = resolve(skillsDir, skill);
91
+ const dest = resolve(backupDir, skill);
92
+ if (existsSync(resolve(src, 'SKILL.md'))) {
93
+ ensureDir(dest);
94
+ writeText(resolve(dest, 'SKILL.md'), readText(resolve(src, 'SKILL.md')));
95
+ }
96
+ }
97
+ console.log(green(' ✓ Backed up') + ` old skills to skills-backup-${timestamp}/`);
98
+ }
99
+ // Update all skills to .aidevos/skills/
100
+ let updatedCount = 0;
101
+ for (const skill of ALL_SKILLS) {
102
+ const src = resolve(SKILLS_DIR, `${skill}.md`);
103
+ const destDir = resolve(aidevos, 'skills', skill);
104
+ const destFile = resolve(destDir, 'SKILL.md');
105
+ if (fileExists(src)) {
106
+ ensureDir(destDir);
107
+ writeText(destFile, readText(src));
108
+ updatedCount++;
109
+ }
110
+ }
111
+ console.log(green(' ✓ Updated') + ` ${updatedCount} skills in .aidevos/skills/`);
112
+ // Update quick commands
113
+ let commandsUpdated = 0;
114
+ if (tool === 'claude-code') {
115
+ const cmdDir = resolve(projectRoot, '.claude', 'commands');
116
+ ensureDir(cmdDir);
117
+ for (const cmd of QUICK_COMMANDS) {
118
+ const src = resolve(SKILLS_DIR, `${cmd.skill}.md`);
119
+ const dest = resolve(cmdDir, `${cmd.name}.md`);
120
+ if (fileExists(src)) {
121
+ writeText(dest, readText(src));
122
+ commandsUpdated++;
123
+ }
124
+ }
125
+ console.log(green(' ✓ Updated') + ` ${commandsUpdated} commands in .claude/commands/`);
126
+ }
127
+ else {
128
+ for (const cmd of QUICK_COMMANDS) {
129
+ const src = resolve(SKILLS_DIR, `${cmd.skill}.md`);
130
+ const destDir = resolve(projectRoot, '.cursor', 'skills', cmd.name);
131
+ const destFile = resolve(destDir, 'SKILL.md');
132
+ if (fileExists(src)) {
133
+ ensureDir(destDir);
134
+ writeText(destFile, readText(src));
135
+ commandsUpdated++;
136
+ }
137
+ }
138
+ console.log(green(' ✓ Updated') + ` ${commandsUpdated} commands in .cursor/skills/`);
139
+ }
140
+ console.log(`
141
+ ${green('✓ Done!')} All skills have been updated to the latest version.
142
+
143
+ ${dim('Note: If you have customized any skills, check the backup directory.')}
144
+ `);
145
+ }
146
+ //# sourceMappingURL=update.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update.js","sourceRoot":"","sources":["../../../src/cli/commands/update.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":""}
@@ -0,0 +1,85 @@
1
+ #!/usr/bin/env node
2
+ import { argv } from 'node:process';
3
+ const command = argv[2];
4
+ async function main() {
5
+ switch (command) {
6
+ case 'init': {
7
+ const { init } = await import('./commands/init.js');
8
+ await init();
9
+ break;
10
+ }
11
+ case 'start': {
12
+ const { start } = await import('./commands/start.js');
13
+ await start();
14
+ break;
15
+ }
16
+ case 'dashboard': {
17
+ const { dashboard } = await import('./commands/dashboard.js');
18
+ await dashboard();
19
+ break;
20
+ }
21
+ case 'status': {
22
+ const { status } = await import('./commands/status.js');
23
+ await status();
24
+ break;
25
+ }
26
+ case 'log': {
27
+ const { log } = await import('./commands/log.js');
28
+ await log();
29
+ break;
30
+ }
31
+ case 'update': {
32
+ const { update } = await import('./commands/update.js');
33
+ await update();
34
+ break;
35
+ }
36
+ case 'migrate': {
37
+ const { migrate } = await import('./commands/migrate.js');
38
+ await migrate();
39
+ break;
40
+ }
41
+ case 'reindex': {
42
+ const { reindex } = await import('./commands/reindex.js');
43
+ await reindex();
44
+ break;
45
+ }
46
+ case 'report': {
47
+ const { report } = await import('./commands/report.js');
48
+ await report();
49
+ break;
50
+ }
51
+ case 'rules': {
52
+ const { rules } = await import('./commands/rules.js');
53
+ await rules();
54
+ break;
55
+ }
56
+ case 'mcp': {
57
+ const { startMcpServer } = await import('../mcp/server.js');
58
+ startMcpServer();
59
+ return; // Don't exit — MCP server runs until stdin closes
60
+ }
61
+ default: {
62
+ console.log(`
63
+ AIDevo - AI Development Observability Platform
64
+
65
+ Usage:
66
+ aidevo init Initialize AIDevo in current project
67
+ aidevo start Create a new development run
68
+ aidevo mcp Start MCP server (stdio mode, for AI tools)
69
+ aidevo log Write structured data to run.json
70
+ aidevo dashboard Launch the visualization dashboard
71
+ aidevo status Show current run status
72
+ aidevo update Update all skills to latest version
73
+ aidevo migrate Migrate old run.json data to new schema
74
+ aidevo reindex Rebuild project-level index from all runs
75
+ aidevo report Generate performance report data
76
+ aidevo rules Manage project rules registry (build/dedupe/merge)
77
+ `);
78
+ }
79
+ }
80
+ }
81
+ main().catch((err) => {
82
+ console.error(err);
83
+ process.exit(1);
84
+ });
85
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAEpC,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AAExB,KAAK,UAAU,IAAI;IACjB,QAAQ,OAAO,EAAE,CAAC;QAChB,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;YACpD,MAAM,IAAI,EAAE,CAAC;YACb,MAAM;QACR,CAAC;QACD,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,qBAAqB,CAAC,CAAC;YACtD,MAAM,KAAK,EAAE,CAAC;YACd,MAAM;QACR,CAAC;QACD,KAAK,WAAW,CAAC,CAAC,CAAC;YACjB,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,yBAAyB,CAAC,CAAC;YAC9D,MAAM,SAAS,EAAE,CAAC;YAClB,MAAM;QACR,CAAC;QACD,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,sBAAsB,CAAC,CAAC;YACxD,MAAM,MAAM,EAAE,CAAC;YACf,MAAM;QACR,CAAC;QACD,KAAK,KAAK,CAAC,CAAC,CAAC;YACX,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,CAAC;YAClD,MAAM,GAAG,EAAE,CAAC;YACZ,MAAM;QACR,CAAC;QACD,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,sBAAsB,CAAC,CAAC;YACxD,MAAM,MAAM,EAAE,CAAC;YACf,MAAM;QACR,CAAC;QACD,KAAK,SAAS,CAAC,CAAC,CAAC;YACf,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,MAAM,CAAC,uBAAuB,CAAC,CAAC;YAC1D,MAAM,OAAO,EAAE,CAAC;YAChB,MAAM;QACR,CAAC;QACD,KAAK,SAAS,CAAC,CAAC,CAAC;YACf,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,MAAM,CAAC,uBAAuB,CAAC,CAAC;YAC1D,MAAM,OAAO,EAAE,CAAC;YAChB,MAAM;QACR,CAAC;QACD,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,sBAAsB,CAAC,CAAC;YACxD,MAAM,MAAM,EAAE,CAAC;YACf,MAAM;QACR,CAAC;QACD,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,qBAAqB,CAAC,CAAC;YACtD,MAAM,KAAK,EAAE,CAAC;YACd,MAAM;QACR,CAAC;QACD,KAAK,KAAK,CAAC,CAAC,CAAC;YACX,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;YAC5D,cAAc,EAAE,CAAC;YACjB,OAAO,CAAC,kDAAkD;QAC5D,CAAC;QACD,OAAO,CAAC,CAAC,CAAC;YACR,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;CAejB,CAAC,CAAC;QACC,CAAC;IACH,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IACnB,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACnB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * AIDevOS MCP Server
3
+ *
4
+ * Implements MCP (Model Context Protocol) over stdio using JSON-RPC 2.0.
5
+ * Zero dependencies — raw stdin/stdout processing.
6
+ *
7
+ * Provides tools for AI agents to silently collect development data.
8
+ */
9
+ export declare function startMcpServer(): void;
10
+ //# sourceMappingURL=server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAspBH,wBAAgB,cAAc,IAAI,IAAI,CA8CrC"}