ai-dev-analytics 1.1.1 → 1.1.3
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 +26 -11
- package/README.zh-CN.md +26 -11
- package/dist/cli/commands/build.d.ts.map +1 -1
- package/dist/cli/commands/build.js +1 -4
- package/dist/cli/commands/build.js.map +1 -1
- package/dist/cli/commands/import.d.ts.map +1 -1
- package/dist/cli/commands/import.js +12 -4
- package/dist/cli/commands/import.js.map +1 -1
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +6 -2
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/log.d.ts.map +1 -1
- package/dist/cli/commands/log.js +4 -3
- package/dist/cli/commands/log.js.map +1 -1
- package/dist/cli/commands/memory.d.ts +2 -0
- package/dist/cli/commands/memory.d.ts.map +1 -0
- package/dist/cli/commands/memory.js +197 -0
- package/dist/cli/commands/memory.js.map +1 -0
- package/dist/cli/commands/merge.d.ts.map +1 -1
- package/dist/cli/commands/merge.js +2 -0
- package/dist/cli/commands/merge.js.map +1 -1
- package/dist/cli/commands/migrate-dir.d.ts.map +1 -1
- package/dist/cli/commands/migrate-dir.js +30 -3
- package/dist/cli/commands/migrate-dir.js.map +1 -1
- package/dist/cli/commands/migrate-legacy.d.ts.map +1 -1
- package/dist/cli/commands/migrate-legacy.js +65 -14
- package/dist/cli/commands/migrate-legacy.js.map +1 -1
- package/dist/cli/commands/rules.d.ts.map +1 -1
- package/dist/cli/commands/rules.js +12 -15
- package/dist/cli/commands/rules.js.map +1 -1
- package/dist/cli/commands/skills.d.ts.map +1 -1
- package/dist/cli/commands/skills.js +7 -7
- package/dist/cli/commands/skills.js.map +1 -1
- package/dist/cli/commands/start.d.ts.map +1 -1
- package/dist/cli/commands/start.js +9 -23
- package/dist/cli/commands/start.js.map +1 -1
- package/dist/cli/commands/update.d.ts.map +1 -1
- package/dist/cli/commands/update.js +15 -109
- package/dist/cli/commands/update.js.map +1 -1
- package/dist/cli/index.js +6 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +266 -3
- package/dist/mcp/server.js.map +1 -1
- package/dist/schemas/aida-project.d.ts +73 -0
- package/dist/schemas/aida-project.d.ts.map +1 -0
- package/dist/schemas/aida-project.js +2 -0
- package/dist/schemas/aida-project.js.map +1 -0
- package/dist/utils/ai-build.d.ts +7 -3
- package/dist/utils/ai-build.d.ts.map +1 -1
- package/dist/utils/ai-build.js +154 -49
- package/dist/utils/ai-build.js.map +1 -1
- package/dist/utils/guide.d.ts.map +1 -1
- package/dist/utils/guide.js +15 -9
- package/dist/utils/guide.js.map +1 -1
- package/dist/utils/import.d.ts +11 -9
- package/dist/utils/import.d.ts.map +1 -1
- package/dist/utils/import.js +94 -30
- package/dist/utils/import.js.map +1 -1
- package/dist/utils/memory.d.ts +49 -0
- package/dist/utils/memory.d.ts.map +1 -0
- package/dist/utils/memory.js +657 -0
- package/dist/utils/memory.js.map +1 -0
- package/dist/utils/paths.d.ts +22 -0
- package/dist/utils/paths.d.ts.map +1 -1
- package/dist/utils/paths.js +48 -1
- package/dist/utils/paths.js.map +1 -1
- package/dist/utils/rules.d.ts +5 -2
- package/dist/utils/rules.d.ts.map +1 -1
- package/dist/utils/rules.js +54 -48
- package/dist/utils/rules.js.map +1 -1
- package/dist/utils/skills.d.ts +6 -0
- package/dist/utils/skills.d.ts.map +1 -1
- package/dist/utils/skills.js +10 -3
- package/dist/utils/skills.js.map +1 -1
- package/package.json +1 -1
- package/src/assets/skills/audit.md +6 -6
- package/src/assets/skills/bug-fixer.md +3 -3
- package/src/assets/skills/code-generator.md +3 -3
- package/src/assets/skills/dev-flower.md +2 -2
- package/src/assets/skills/deviation-recorder.md +5 -5
- package/src/assets/skills/requirement-analyzer.md +2 -2
- package/src/assets/skills/rules-evolver.md +5 -5
- package/src/assets/skills/self-reviewer.md +3 -3
- package/src/assets/skills/task-splitter.md +2 -2
- package/src/assets/skills/workflow-orchestrator.md +9 -9
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
import { cyan, green, red, yellow } from '../../utils/display.js';
|
|
2
|
+
import { getBranchName } from '../../utils/git.js';
|
|
3
|
+
import { buildMemoryViews, loadModuleMemory, loadRunContext, loadRunMemoryPack, migrateLegacyMemories, rebuildCurrentBranchMemory, searchModuleMemories, updateRunContext, upsertModuleMemory } from '../../utils/memory.js';
|
|
4
|
+
import { fileExists, readText } from '../../utils/fs.js';
|
|
5
|
+
import { moduleMemoryViewPath, runContextViewPath, runMemoryPackViewPath } from '../../utils/paths.js';
|
|
6
|
+
function commandArg(index) {
|
|
7
|
+
return (process.argv[index] || '').trim();
|
|
8
|
+
}
|
|
9
|
+
function parseList(value) {
|
|
10
|
+
if (!value)
|
|
11
|
+
return [];
|
|
12
|
+
return value
|
|
13
|
+
.split(',')
|
|
14
|
+
.map((item) => item.trim())
|
|
15
|
+
.filter(Boolean);
|
|
16
|
+
}
|
|
17
|
+
function parseFlags(args) {
|
|
18
|
+
const flags = {};
|
|
19
|
+
for (let i = 0; i < args.length; i++) {
|
|
20
|
+
const current = args[i];
|
|
21
|
+
if (!current.startsWith('--'))
|
|
22
|
+
continue;
|
|
23
|
+
const next = args[i + 1];
|
|
24
|
+
if (next && !next.startsWith('--')) {
|
|
25
|
+
flags[current.slice(2)] = next;
|
|
26
|
+
i++;
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
flags[current.slice(2)] = 'true';
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
return flags;
|
|
33
|
+
}
|
|
34
|
+
function printUsage() {
|
|
35
|
+
console.log(`
|
|
36
|
+
aida memory rebuild [branch] Rebuild current branch context + module memories from run/requirement data
|
|
37
|
+
aida memory migrate-legacy Migrate contexts/memories from existing .aida/.aidevos run data
|
|
38
|
+
aida memory build Render markdown views from memory JSON source
|
|
39
|
+
aida memory search <query> Search module memory index
|
|
40
|
+
aida memory show <moduleKey> Show a module memory markdown view
|
|
41
|
+
aida memory context [branch] Show branch context markdown view
|
|
42
|
+
aida memory pack [branch] Show aggregated runtime memory pack
|
|
43
|
+
aida memory upsert <moduleKey> [--title ... --summary ... --keywords a,b]
|
|
44
|
+
aida memory context-update [branch] [--summary ... --phase ... --modules a,b]
|
|
45
|
+
`);
|
|
46
|
+
}
|
|
47
|
+
export async function memory() {
|
|
48
|
+
const projectRoot = process.cwd();
|
|
49
|
+
const action = commandArg(3);
|
|
50
|
+
switch (action) {
|
|
51
|
+
case 'rebuild': {
|
|
52
|
+
const branchName = commandArg(4) || getBranchName();
|
|
53
|
+
const result = rebuildCurrentBranchMemory(projectRoot, branchName);
|
|
54
|
+
if (!result.context) {
|
|
55
|
+
console.log(yellow(`\n No branch data found for ${branchName}\n`));
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
console.log(green('\n ✓ Rebuilt memory') + ` for ${branchName}`);
|
|
59
|
+
console.log(` Context: ${runContextViewPath(projectRoot, branchName)}`);
|
|
60
|
+
console.log(` Modules: ${result.modules.length}`);
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
case 'migrate-legacy': {
|
|
64
|
+
const result = migrateLegacyMemories(projectRoot);
|
|
65
|
+
console.log(green('\n ✓ Migrated legacy memory data'));
|
|
66
|
+
console.log(` Branches: ${result.branches}`);
|
|
67
|
+
console.log(` Contexts: ${result.contextsWritten}`);
|
|
68
|
+
console.log(` Module memories: ${result.moduleMemoriesWritten}`);
|
|
69
|
+
console.log(` Modules touched: ${result.modulesTouched.join(', ') || '-'}`);
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
case 'build': {
|
|
73
|
+
const result = buildMemoryViews(projectRoot);
|
|
74
|
+
console.log(green('\n ✓ Built memory views'));
|
|
75
|
+
console.log(` Module views: ${result.moduleViews}`);
|
|
76
|
+
console.log(` Context views: ${result.contextViews}`);
|
|
77
|
+
console.log(` Pack views: ${result.packViews}`);
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
80
|
+
case 'search': {
|
|
81
|
+
const query = process.argv.slice(4).join(' ').trim();
|
|
82
|
+
if (!query) {
|
|
83
|
+
console.log(red('\n Missing query: aida memory search <query>\n'));
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
86
|
+
const hits = searchModuleMemories(projectRoot, query);
|
|
87
|
+
if (hits.length === 0) {
|
|
88
|
+
console.log(yellow(`\n No module memory matched "${query}"\n`));
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
console.log(cyan(`\n Module memory matches for "${query}"\n`));
|
|
92
|
+
for (const hit of hits) {
|
|
93
|
+
console.log(` - ${hit.key} | ${hit.title} | ${hit.summary}`);
|
|
94
|
+
}
|
|
95
|
+
console.log('');
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
98
|
+
case 'show': {
|
|
99
|
+
const moduleKey = commandArg(4);
|
|
100
|
+
if (!moduleKey) {
|
|
101
|
+
console.log(red('\n Missing moduleKey: aida memory show <moduleKey>\n'));
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
const record = loadModuleMemory(projectRoot, moduleKey);
|
|
105
|
+
if (!record) {
|
|
106
|
+
console.log(yellow(`\n Module memory not found: ${moduleKey}\n`));
|
|
107
|
+
return;
|
|
108
|
+
}
|
|
109
|
+
const viewPath = moduleMemoryViewPath(projectRoot, record.moduleKey);
|
|
110
|
+
const output = fileExists(viewPath) ? readText(viewPath) : JSON.stringify(record, null, 2);
|
|
111
|
+
process.stdout.write(output.endsWith('\n') ? output : `${output}\n`);
|
|
112
|
+
return;
|
|
113
|
+
}
|
|
114
|
+
case 'context': {
|
|
115
|
+
const branchName = commandArg(4) || getBranchName();
|
|
116
|
+
const record = loadRunContext(projectRoot, branchName);
|
|
117
|
+
if (!record) {
|
|
118
|
+
console.log(yellow(`\n Context not found for branch: ${branchName}\n`));
|
|
119
|
+
return;
|
|
120
|
+
}
|
|
121
|
+
const viewPath = runContextViewPath(projectRoot, branchName);
|
|
122
|
+
const output = fileExists(viewPath) ? readText(viewPath) : JSON.stringify(record, null, 2);
|
|
123
|
+
process.stdout.write(output.endsWith('\n') ? output : `${output}\n`);
|
|
124
|
+
return;
|
|
125
|
+
}
|
|
126
|
+
case 'pack': {
|
|
127
|
+
const branchName = commandArg(4) || getBranchName();
|
|
128
|
+
const pack = loadRunMemoryPack(projectRoot, branchName);
|
|
129
|
+
if (!pack) {
|
|
130
|
+
console.log(yellow(`\n Memory pack not found for branch: ${branchName}\n`));
|
|
131
|
+
return;
|
|
132
|
+
}
|
|
133
|
+
const viewPath = runMemoryPackViewPath(projectRoot, branchName);
|
|
134
|
+
const output = fileExists(viewPath)
|
|
135
|
+
? readText(viewPath)
|
|
136
|
+
: JSON.stringify(pack, null, 2);
|
|
137
|
+
process.stdout.write(output.endsWith('\n') ? output : `${output}\n`);
|
|
138
|
+
return;
|
|
139
|
+
}
|
|
140
|
+
case 'upsert': {
|
|
141
|
+
const moduleKey = commandArg(4);
|
|
142
|
+
if (!moduleKey) {
|
|
143
|
+
console.log(red('\n Missing moduleKey: aida memory upsert <moduleKey> [--title ...]\n'));
|
|
144
|
+
return;
|
|
145
|
+
}
|
|
146
|
+
const flags = parseFlags(process.argv.slice(5));
|
|
147
|
+
const record = upsertModuleMemory(projectRoot, {
|
|
148
|
+
moduleKey,
|
|
149
|
+
title: flags.title,
|
|
150
|
+
summary: flags.summary,
|
|
151
|
+
keywords: parseList(flags.keywords),
|
|
152
|
+
entryFiles: parseList(flags['entry-files']),
|
|
153
|
+
relatedPaths: parseList(flags.paths),
|
|
154
|
+
dataFlow: parseList(flags['data-flow']),
|
|
155
|
+
decisions: parseList(flags.decisions),
|
|
156
|
+
constraints: parseList(flags.constraints),
|
|
157
|
+
pitfalls: parseList(flags.pitfalls),
|
|
158
|
+
relatedRules: parseList(flags.rules),
|
|
159
|
+
tickets: [{
|
|
160
|
+
ticket: flags.ticket,
|
|
161
|
+
branch: flags.branch || getBranchName(),
|
|
162
|
+
summary: flags['ticket-summary'] || flags.summary || '',
|
|
163
|
+
updatedAt: new Date().toISOString(),
|
|
164
|
+
}],
|
|
165
|
+
});
|
|
166
|
+
buildMemoryViews(projectRoot);
|
|
167
|
+
console.log(green('\n ✓ Module memory updated') + `: ${record.moduleKey}\n`);
|
|
168
|
+
return;
|
|
169
|
+
}
|
|
170
|
+
case 'context-update': {
|
|
171
|
+
const maybeBranch = commandArg(4);
|
|
172
|
+
const branchName = maybeBranch && !maybeBranch.startsWith('--') ? maybeBranch : getBranchName();
|
|
173
|
+
const flags = parseFlags(process.argv.slice(maybeBranch && !maybeBranch.startsWith('--') ? 5 : 4));
|
|
174
|
+
const record = updateRunContext(projectRoot, {
|
|
175
|
+
branch: branchName,
|
|
176
|
+
ticket: flags.ticket,
|
|
177
|
+
title: flags.title,
|
|
178
|
+
summary: flags.summary,
|
|
179
|
+
currentPhase: flags.phase,
|
|
180
|
+
modules: parseList(flags.modules),
|
|
181
|
+
completed: parseList(flags.completed),
|
|
182
|
+
inProgress: parseList(flags['in-progress']),
|
|
183
|
+
next: parseList(flags.next),
|
|
184
|
+
decisions: parseList(flags.decisions),
|
|
185
|
+
constraints: parseList(flags.constraints),
|
|
186
|
+
keyFiles: parseList(flags.files),
|
|
187
|
+
risks: parseList(flags.risks),
|
|
188
|
+
});
|
|
189
|
+
buildMemoryViews(projectRoot);
|
|
190
|
+
console.log(green('\n ✓ Branch context updated') + `: ${record.branch}\n`);
|
|
191
|
+
return;
|
|
192
|
+
}
|
|
193
|
+
default:
|
|
194
|
+
printUsage();
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
//# sourceMappingURL=memory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory.js","sourceRoot":"","sources":["../../../src/cli/commands/memory.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"merge.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/merge.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"merge.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/merge.ts"],"names":[],"mappings":"AAOA,wBAAsB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CA6C3C"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { green, red, yellow } from '../../utils/display.js';
|
|
2
2
|
import { configPath } from '../../utils/paths.js';
|
|
3
3
|
import { fileExists } from '../../utils/fs.js';
|
|
4
|
+
import { buildProjectArtifacts } from '../../utils/ai-build.js';
|
|
4
5
|
import { mergeRulesRegistry } from './rules.js';
|
|
5
6
|
import { mergeSkillsRegistry } from './skills.js';
|
|
6
7
|
export async function merge() {
|
|
@@ -39,6 +40,7 @@ export async function merge() {
|
|
|
39
40
|
console.log(yellow('\n No registry conflicts detected.\n'));
|
|
40
41
|
return;
|
|
41
42
|
}
|
|
43
|
+
buildProjectArtifacts(projectRoot);
|
|
42
44
|
console.log(green('\n ✓ Registry merge completed\n'));
|
|
43
45
|
for (const line of lines)
|
|
44
46
|
console.log(line);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"merge.js","sourceRoot":"","sources":["../../../src/cli/commands/merge.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAElD,MAAM,CAAC,KAAK,UAAU,KAAK;IACzB,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAElC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC;QACzC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,wDAAwD,CAAC,CAAC,CAAC;QAC3E,OAAO;IACT,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,kBAAkB,CAAC,WAAW,CAAC,CAAC;IACpD,MAAM,MAAM,GAAG,MAAM,mBAAmB,CAAC,WAAW,CAAC,CAAC;IAEtD,IAAI,KAAK,CAAC,MAAM,KAAK,OAAO,IAAI,MAAM,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;QAC1D,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,yFAAyF,CAAC,CAAC,CAAC;QAC5G,OAAO;IACT,CAAC;IAED,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,IAAI,KAAK,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC9B,KAAK,CAAC,IAAI,CAAC,yBAAyB,KAAK,CAAC,KAAK,WAAW,KAAK,CAAC,KAAK,OAAO,CAAC,CAAC;IAChF,CAAC;SAAM,IAAI,KAAK,CAAC,MAAM,KAAK,aAAa,EAAE,CAAC;QAC1C,KAAK,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;IAC1C,CAAC;SAAM,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QACtC,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;IACtC,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC/B,KAAK,CAAC,IAAI,CAAC,0BAA0B,MAAM,CAAC,KAAK,WAAW,MAAM,CAAC,KAAK,OAAO,CAAC,CAAC;IACnF,CAAC;SAAM,IAAI,MAAM,CAAC,MAAM,KAAK,aAAa,EAAE,CAAC;QAC3C,KAAK,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;IAC3C,CAAC;SAAM,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QACvC,KAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;IACvC,CAAC;IAED,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,MAAM,KAAK,QAAQ,CAAC;IACxE,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,uCAAuC,CAAC,CAAC,CAAC;QAC7D,OAAO;IACT,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,kCAAkC,CAAC,CAAC,CAAC;IACvD,KAAK,MAAM,IAAI,IAAI,KAAK;QAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC5C,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAClB,CAAC"}
|
|
1
|
+
{"version":3,"file":"merge.js","sourceRoot":"","sources":["../../../src/cli/commands/merge.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAElD,MAAM,CAAC,KAAK,UAAU,KAAK;IACzB,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAElC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC;QACzC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,wDAAwD,CAAC,CAAC,CAAC;QAC3E,OAAO;IACT,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,kBAAkB,CAAC,WAAW,CAAC,CAAC;IACpD,MAAM,MAAM,GAAG,MAAM,mBAAmB,CAAC,WAAW,CAAC,CAAC;IAEtD,IAAI,KAAK,CAAC,MAAM,KAAK,OAAO,IAAI,MAAM,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;QAC1D,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,yFAAyF,CAAC,CAAC,CAAC;QAC5G,OAAO;IACT,CAAC;IAED,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,IAAI,KAAK,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC9B,KAAK,CAAC,IAAI,CAAC,yBAAyB,KAAK,CAAC,KAAK,WAAW,KAAK,CAAC,KAAK,OAAO,CAAC,CAAC;IAChF,CAAC;SAAM,IAAI,KAAK,CAAC,MAAM,KAAK,aAAa,EAAE,CAAC;QAC1C,KAAK,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;IAC1C,CAAC;SAAM,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QACtC,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;IACtC,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC/B,KAAK,CAAC,IAAI,CAAC,0BAA0B,MAAM,CAAC,KAAK,WAAW,MAAM,CAAC,KAAK,OAAO,CAAC,CAAC;IACnF,CAAC;SAAM,IAAI,MAAM,CAAC,MAAM,KAAK,aAAa,EAAE,CAAC;QAC3C,KAAK,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;IAC3C,CAAC;SAAM,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QACvC,KAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;IACvC,CAAC;IAED,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,MAAM,KAAK,QAAQ,CAAC;IACxE,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,uCAAuC,CAAC,CAAC,CAAC;QAC7D,OAAO;IACT,CAAC;IAED,qBAAqB,CAAC,WAAW,CAAC,CAAC;IAEnC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,kCAAkC,CAAC,CAAC,CAAC;IACvD,KAAK,MAAM,IAAI,IAAI,KAAK;QAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC5C,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAClB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migrate-dir.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/migrate-dir.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"migrate-dir.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/migrate-dir.ts"],"names":[],"mappings":"AAqFA,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,MAAM,GAAG;IAC3D,MAAM,EAAE,UAAU,GAAG,iBAAiB,GAAG,gBAAgB,GAAG,UAAU,CAAA;IACtE,YAAY,EAAE,MAAM,CAAA;CACrB,CA8BA;AAED,wBAAsB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CA2BhD"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { readdirSync, renameSync, statSync } from 'node:fs';
|
|
1
|
+
import { readdirSync, renameSync, rmSync, statSync } from 'node:fs';
|
|
2
2
|
import { resolve, extname, basename } from 'node:path';
|
|
3
3
|
import { cyan, green, red, yellow } from '../../utils/display.js';
|
|
4
4
|
import { fileExists, readText, writeText } from '../../utils/fs.js';
|
|
@@ -51,12 +51,36 @@ function walkAndReplace(rootDir) {
|
|
|
51
51
|
}
|
|
52
52
|
return updated;
|
|
53
53
|
}
|
|
54
|
+
function normalizeLegacyToolArtifactDirs(projectRoot) {
|
|
55
|
+
let updated = 0;
|
|
56
|
+
const oldCursorRulesDir = resolve(projectRoot, '.cursor', 'rules', 'aidevos');
|
|
57
|
+
const newCursorRulesDir = resolve(projectRoot, '.cursor', 'rules', 'aida');
|
|
58
|
+
if (fileExists(oldCursorRulesDir)) {
|
|
59
|
+
if (!fileExists(newCursorRulesDir)) {
|
|
60
|
+
renameSync(oldCursorRulesDir, newCursorRulesDir);
|
|
61
|
+
updated++;
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
for (const name of readdirSync(oldCursorRulesDir)) {
|
|
65
|
+
const source = resolve(oldCursorRulesDir, name);
|
|
66
|
+
const target = resolve(newCursorRulesDir, name);
|
|
67
|
+
if (!fileExists(target)) {
|
|
68
|
+
renameSync(source, target);
|
|
69
|
+
updated++;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
rmSync(oldCursorRulesDir, { recursive: true, force: true });
|
|
73
|
+
updated++;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
return updated;
|
|
77
|
+
}
|
|
54
78
|
export function migrateLegacyDirectory(projectRoot) {
|
|
55
79
|
const oldDir = resolve(projectRoot, '.aidevos');
|
|
56
80
|
const newDir = resolve(projectRoot, '.aida');
|
|
57
81
|
if (!fileExists(oldDir)) {
|
|
58
82
|
if (fileExists(newDir)) {
|
|
59
|
-
return { status: 'already-current', updatedFiles:
|
|
83
|
+
return { status: 'already-current', updatedFiles: normalizeLegacyToolArtifactDirs(projectRoot) };
|
|
60
84
|
}
|
|
61
85
|
return { status: 'missing-legacy', updatedFiles: 0 };
|
|
62
86
|
}
|
|
@@ -72,6 +96,7 @@ export function migrateLegacyDirectory(projectRoot) {
|
|
|
72
96
|
updatedFiles++;
|
|
73
97
|
}
|
|
74
98
|
}
|
|
99
|
+
updatedFiles += normalizeLegacyToolArtifactDirs(projectRoot);
|
|
75
100
|
return { status: 'migrated', updatedFiles };
|
|
76
101
|
}
|
|
77
102
|
export async function migrateDir() {
|
|
@@ -93,6 +118,8 @@ export async function migrateDir() {
|
|
|
93
118
|
console.log(cyan('\n Migrating project directory: .aidevos -> .aida\n'));
|
|
94
119
|
console.log(green(' ✓ Directory renamed') + ': .aida');
|
|
95
120
|
console.log(green(' ✓ Updated references') + `: ${result.updatedFiles} text file(s)`);
|
|
96
|
-
console.log('\n Next step: run `aida build` to regenerate local AI tool artifacts
|
|
121
|
+
console.log('\n Next step: run `aida build` to regenerate local AI tool artifacts.');
|
|
122
|
+
console.log(' Note: if ignored AI files were already tracked by git before migration, untrack them manually.');
|
|
123
|
+
console.log(' Example: git rm --cached .mcp.json AGENTS.md CLAUDE.md\n');
|
|
97
124
|
}
|
|
98
125
|
//# sourceMappingURL=migrate-dir.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migrate-dir.js","sourceRoot":"","sources":["../../../src/cli/commands/migrate-dir.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"migrate-dir.js","sourceRoot":"","sources":["../../../src/cli/commands/migrate-dir.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migrate-legacy.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/migrate-legacy.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"migrate-legacy.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/migrate-legacy.ts"],"names":[],"mappings":"AA0EA,wBAAsB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CA8EnD"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { cyan, green, red, yellow } from '../../utils/display.js';
|
|
2
2
|
import { configPath } from '../../utils/paths.js';
|
|
3
|
-
import { fileExists } from '../../utils/fs.js';
|
|
3
|
+
import { fileExists, readJson } from '../../utils/fs.js';
|
|
4
4
|
import { buildProjectArtifacts } from '../../utils/ai-build.js';
|
|
5
5
|
import { detectImportableTools, importProjectSources, importProjectSourcesWithBaseline } from '../../utils/import.js';
|
|
6
|
-
import {
|
|
6
|
+
import { migrateLegacyMemories } from '../../utils/memory.js';
|
|
7
7
|
import { migrate } from './migrate.js';
|
|
8
8
|
import { migrateLegacyDirectory } from './migrate-dir.js';
|
|
9
9
|
function requestedBaseline() {
|
|
@@ -11,7 +11,7 @@ function requestedBaseline() {
|
|
|
11
11
|
if (!value)
|
|
12
12
|
return null;
|
|
13
13
|
const valid = new Set(['claude-code', 'cursor', 'vscode-copilot', 'windsurf', 'lingma', 'codex']);
|
|
14
|
-
return valid.has(value) ? value :
|
|
14
|
+
return valid.has(value) ? value : 'invalid';
|
|
15
15
|
}
|
|
16
16
|
function toolLabel(tool) {
|
|
17
17
|
const labels = {
|
|
@@ -24,21 +24,51 @@ function toolLabel(tool) {
|
|
|
24
24
|
};
|
|
25
25
|
return labels[tool];
|
|
26
26
|
}
|
|
27
|
+
function printManualUntrackNotice() {
|
|
28
|
+
console.log(' Note: if ignored AI files were already tracked by git before migration, untrack them manually.');
|
|
29
|
+
console.log(' Example: git rm --cached .mcp.json AGENTS.md CLAUDE.md\n');
|
|
30
|
+
}
|
|
31
|
+
function configuredToolOrder(projectRoot) {
|
|
32
|
+
if (!fileExists(configPath(projectRoot)))
|
|
33
|
+
return [];
|
|
34
|
+
try {
|
|
35
|
+
const config = readJson(configPath(projectRoot));
|
|
36
|
+
if (Array.isArray(config.aiTools) && config.aiTools.length > 0)
|
|
37
|
+
return config.aiTools;
|
|
38
|
+
return config.aiTool ? [config.aiTool] : [];
|
|
39
|
+
}
|
|
40
|
+
catch {
|
|
41
|
+
return [];
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
function chooseBaselineTool(projectRoot, importable) {
|
|
45
|
+
if (importable.length === 0)
|
|
46
|
+
return null;
|
|
47
|
+
const configured = configuredToolOrder(projectRoot);
|
|
48
|
+
for (const tool of configured) {
|
|
49
|
+
if (importable.includes(tool))
|
|
50
|
+
return tool;
|
|
51
|
+
}
|
|
52
|
+
const priority = ['claude-code', 'cursor', 'codex', 'lingma', 'vscode-copilot', 'windsurf'];
|
|
53
|
+
for (const tool of priority) {
|
|
54
|
+
if (importable.includes(tool))
|
|
55
|
+
return tool;
|
|
56
|
+
}
|
|
57
|
+
return importable[0] || null;
|
|
58
|
+
}
|
|
27
59
|
async function resolveBaselineTool(projectRoot) {
|
|
28
60
|
const requested = requestedBaseline();
|
|
29
61
|
const importable = detectImportableTools(projectRoot, ['claude-code', 'cursor', 'vscode-copilot', 'windsurf', 'lingma', 'codex']);
|
|
62
|
+
if (requested === 'invalid') {
|
|
63
|
+
throw new Error(`Unknown baseline tool: ${process.argv[3]?.trim()}`);
|
|
64
|
+
}
|
|
30
65
|
if (requested)
|
|
31
|
-
return requested;
|
|
66
|
+
return { tool: requested, autoSelected: false };
|
|
32
67
|
if (importable.length === 0)
|
|
33
|
-
return null;
|
|
68
|
+
return { tool: null, autoSelected: false };
|
|
34
69
|
if (importable.length === 1)
|
|
35
|
-
return importable[0];
|
|
36
|
-
|
|
37
|
-
value: tool,
|
|
38
|
-
label: toolLabel(tool),
|
|
39
|
-
hint: 'Use this tool as the baseline source for rules/skills import',
|
|
40
|
-
}));
|
|
41
|
-
return promptSingleSelect('Choose one baseline AI tool to import legacy rules/skills from:', options);
|
|
70
|
+
return { tool: importable[0], autoSelected: false };
|
|
71
|
+
return { tool: chooseBaselineTool(projectRoot, importable), autoSelected: true };
|
|
42
72
|
}
|
|
43
73
|
export async function migrateLegacy() {
|
|
44
74
|
const projectRoot = process.cwd();
|
|
@@ -64,15 +94,32 @@ export async function migrateLegacy() {
|
|
|
64
94
|
console.log(red('\n AIDA config.json was not found after migration.\n'));
|
|
65
95
|
return;
|
|
66
96
|
}
|
|
67
|
-
|
|
97
|
+
let baselineTool;
|
|
98
|
+
let autoSelectedBaseline = false;
|
|
99
|
+
try {
|
|
100
|
+
const resolved = await resolveBaselineTool(projectRoot);
|
|
101
|
+
baselineTool = resolved.tool;
|
|
102
|
+
autoSelectedBaseline = resolved.autoSelected;
|
|
103
|
+
}
|
|
104
|
+
catch (error) {
|
|
105
|
+
console.log(red(`\n ${error instanceof Error ? error.message : String(error)}\n`));
|
|
106
|
+
return;
|
|
107
|
+
}
|
|
68
108
|
if (baselineTool) {
|
|
69
109
|
const imported = importProjectSourcesWithBaseline(projectRoot, baselineTool);
|
|
110
|
+
await migrate();
|
|
111
|
+
const memory = migrateLegacyMemories(projectRoot);
|
|
70
112
|
const built = buildProjectArtifacts(projectRoot, imported.tools);
|
|
71
113
|
console.log(green('\n ✓ Imported baseline') + ` ${toolLabel(baselineTool)}`);
|
|
114
|
+
if (autoSelectedBaseline) {
|
|
115
|
+
console.log(` Auto-selected baseline: ${toolLabel(baselineTool)}`);
|
|
116
|
+
}
|
|
72
117
|
console.log(` Rules: ${imported.baseline.rulesImported}`);
|
|
73
118
|
console.log(` Skills: ${imported.baseline.skillsImported}`);
|
|
74
119
|
console.log(` Tool configs discovered: ${imported.tools.join(', ') || '-'}`);
|
|
75
120
|
console.log(` Tool config snapshot: ${imported.snapshotPath}`);
|
|
121
|
+
console.log(` Memory contexts: ${memory.contextsWritten}`);
|
|
122
|
+
console.log(` Module memories: ${memory.moduleMemoriesWritten}`);
|
|
76
123
|
console.log(green('\n ✓ Rebuilt artifacts') + ` ${built.tools.join(', ')}`);
|
|
77
124
|
if (built.gitignoreAdded.length > 0) {
|
|
78
125
|
console.log(` .gitignore: added ${built.gitignoreAdded.join(', ')}`);
|
|
@@ -80,16 +127,20 @@ export async function migrateLegacy() {
|
|
|
80
127
|
}
|
|
81
128
|
else {
|
|
82
129
|
const imported = importProjectSources(projectRoot);
|
|
130
|
+
await migrate();
|
|
131
|
+
const memory = migrateLegacyMemories(projectRoot);
|
|
83
132
|
const built = buildProjectArtifacts(projectRoot, imported.tools);
|
|
84
133
|
console.log(yellow('\n No baseline tool detected. Imported structured AIDA sources only.'));
|
|
85
134
|
console.log(` Tool configs discovered: ${imported.tools.join(', ') || '-'}`);
|
|
86
135
|
console.log(` Tool config snapshot: ${imported.snapshotPath}`);
|
|
136
|
+
console.log(` Memory contexts: ${memory.contextsWritten}`);
|
|
137
|
+
console.log(` Module memories: ${memory.moduleMemoriesWritten}`);
|
|
87
138
|
console.log(green('\n ✓ Rebuilt artifacts') + ` ${built.tools.join(', ')}`);
|
|
88
139
|
if (built.gitignoreAdded.length > 0) {
|
|
89
140
|
console.log(` .gitignore: added ${built.gitignoreAdded.join(', ')}`);
|
|
90
141
|
}
|
|
91
142
|
}
|
|
92
|
-
await migrate();
|
|
93
143
|
console.log(green(' ✓ Legacy migration completed\n'));
|
|
144
|
+
printManualUntrackNotice();
|
|
94
145
|
}
|
|
95
146
|
//# sourceMappingURL=migrate-legacy.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migrate-legacy.js","sourceRoot":"","sources":["../../../src/cli/commands/migrate-legacy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"migrate-legacy.js","sourceRoot":"","sources":["../../../src/cli/commands/migrate-legacy.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rules.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/rules.ts"],"names":[],"mappings":"AA8FA,wBAAsB,kBAAkB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,MAAM,EAAE,QAAQ,GAAG,aAAa,GAAG,SAAS,GAAG,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"rules.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/rules.ts"],"names":[],"mappings":"AA8FA,wBAAsB,kBAAkB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,MAAM,EAAE,QAAQ,GAAG,aAAa,GAAG,SAAS,GAAG,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAwBjK;AA4ID,wBAAsB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CA0C3C"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { configPath } from '../../utils/paths.js';
|
|
2
2
|
import { fileExists, readText, extractConflictSections, parseConflictJsonArray } from '../../utils/fs.js';
|
|
3
3
|
import { green, red, cyan, yellow, dim } from '../../utils/display.js';
|
|
4
|
-
import { addRule, bootstrapRuleRegistry, loadRegistry, saveRegistry,
|
|
4
|
+
import { addRule, bootstrapRuleRegistry, loadRegistry, saveRegistry, findSimilarRules, mergeRegistries, registryPath, } from '../../utils/rules.js';
|
|
5
|
+
import { buildProjectArtifacts } from '../../utils/ai-build.js';
|
|
5
6
|
import { updateGuide, updateGuideReferences } from '../../utils/guide.js';
|
|
6
7
|
import { RULE_CATEGORIES } from '../../schemas/run-json.js';
|
|
7
8
|
function subcommand() {
|
|
@@ -38,12 +39,12 @@ function parseContent(args) {
|
|
|
38
39
|
}
|
|
39
40
|
async function rulesBuild() {
|
|
40
41
|
const projectRoot = process.cwd();
|
|
41
|
-
const
|
|
42
|
+
const result = buildProjectArtifacts(projectRoot);
|
|
42
43
|
const entries = loadRegistry(projectRoot);
|
|
43
44
|
updateGuide(projectRoot);
|
|
44
45
|
updateGuideReferences(projectRoot);
|
|
45
|
-
console.log(green(`\n ✓ Rules
|
|
46
|
-
`: ${entries.length} rules → ${
|
|
46
|
+
console.log(green(`\n ✓ Rules rebuilt`) +
|
|
47
|
+
`: ${entries.length} rules → ${result.ruleFiles} generated tool rule files\n`);
|
|
47
48
|
}
|
|
48
49
|
async function rulesDedupe() {
|
|
49
50
|
const projectRoot = process.cwd();
|
|
@@ -85,8 +86,6 @@ export async function mergeRulesRegistry(projectRoot) {
|
|
|
85
86
|
const theirs = parseConflictJsonArray(sections.theirs);
|
|
86
87
|
const { merged, added } = mergeRegistries(ours, theirs);
|
|
87
88
|
saveRegistry(projectRoot, merged);
|
|
88
|
-
buildRuleViews(projectRoot);
|
|
89
|
-
updateGuideReferences(projectRoot);
|
|
90
89
|
return { status: 'merged', added, total: merged.length };
|
|
91
90
|
}
|
|
92
91
|
async function rulesMerge() {
|
|
@@ -108,6 +107,8 @@ async function rulesMerge() {
|
|
|
108
107
|
return;
|
|
109
108
|
}
|
|
110
109
|
if (result.status === 'merged') {
|
|
110
|
+
buildProjectArtifacts(projectRoot);
|
|
111
|
+
updateGuideReferences(projectRoot);
|
|
111
112
|
console.log(green(' ✓ Merged successfully') +
|
|
112
113
|
`: ${result.total} total rules (${result.added} new from incoming branch)\n`);
|
|
113
114
|
}
|
|
@@ -169,9 +170,7 @@ async function rulesAdd() {
|
|
|
169
170
|
author: 'manual',
|
|
170
171
|
status: 'active',
|
|
171
172
|
});
|
|
172
|
-
|
|
173
|
-
updateGuide(projectRoot);
|
|
174
|
-
updateGuideReferences(projectRoot);
|
|
173
|
+
buildProjectArtifacts(projectRoot);
|
|
175
174
|
if (isDuplicate) {
|
|
176
175
|
console.log(yellow(`\n Rule already exists: ${entry.id}\n`));
|
|
177
176
|
return;
|
|
@@ -201,9 +200,7 @@ async function rulesDelete() {
|
|
|
201
200
|
}
|
|
202
201
|
entry.status = 'deprecated';
|
|
203
202
|
saveRegistry(projectRoot, current);
|
|
204
|
-
|
|
205
|
-
updateGuide(projectRoot);
|
|
206
|
-
updateGuideReferences(projectRoot);
|
|
203
|
+
buildProjectArtifacts(projectRoot);
|
|
207
204
|
console.log(green(`\n ✓ Rule deprecated`) + `: ${ruleId}`);
|
|
208
205
|
console.log(dim(' Re-run `aida rules list` to verify status, or `aida build` to rebuild all targets.\n'));
|
|
209
206
|
}
|
|
@@ -235,15 +232,15 @@ export async function rules() {
|
|
|
235
232
|
${cyan('aida rules')} - Manage project rules registry
|
|
236
233
|
|
|
237
234
|
Subcommands:
|
|
238
|
-
add Add one rule and auto-build
|
|
239
|
-
build Rebuild
|
|
235
|
+
add Add one rule and auto-build AI tool artifacts
|
|
236
|
+
build Rebuild AI tool rule files from rules.json
|
|
240
237
|
delete Deprecate one rule by ID
|
|
241
238
|
dedupe Find potential duplicate or conflicting rules
|
|
242
239
|
merge Auto-resolve git merge conflicts in rules.json
|
|
243
240
|
list List all rules grouped by category (--json supported)
|
|
244
241
|
|
|
245
242
|
The source of truth is .aida/rules.json (committed to git).
|
|
246
|
-
|
|
243
|
+
aida build distributes generated rule files into each configured AI tool directory.
|
|
247
244
|
`);
|
|
248
245
|
}
|
|
249
246
|
}
|