ai-dev-analytics 1.0.4 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +25 -17
- package/README.zh-CN.md +25 -17
- package/dist/cli/commands/build.d.ts +2 -0
- package/dist/cli/commands/build.d.ts.map +1 -0
- package/dist/cli/commands/build.js +61 -0
- package/dist/cli/commands/build.js.map +1 -0
- package/dist/cli/commands/dashboard.js +1 -1
- package/dist/cli/commands/dashboard.js.map +1 -1
- package/dist/cli/commands/import.d.ts +2 -0
- package/dist/cli/commands/import.d.ts.map +1 -0
- package/dist/cli/commands/import.js +28 -0
- package/dist/cli/commands/import.js.map +1 -0
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +113 -249
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/merge.d.ts +2 -0
- package/dist/cli/commands/merge.d.ts.map +1 -0
- package/dist/cli/commands/merge.js +47 -0
- package/dist/cli/commands/merge.js.map +1 -0
- package/dist/cli/commands/migrate-dir.d.ts +2 -0
- package/dist/cli/commands/migrate-dir.d.ts.map +1 -0
- package/dist/cli/commands/migrate-dir.js +85 -0
- package/dist/cli/commands/migrate-dir.js.map +1 -0
- package/dist/cli/commands/migrate.js +5 -5
- package/dist/cli/commands/migrate.js.map +1 -1
- package/dist/cli/commands/report.js +1 -1
- package/dist/cli/commands/report.js.map +1 -1
- package/dist/cli/commands/rules.d.ts +5 -0
- package/dist/cli/commands/rules.d.ts.map +1 -1
- package/dist/cli/commands/rules.js +143 -38
- package/dist/cli/commands/rules.js.map +1 -1
- package/dist/cli/commands/skills.d.ts +7 -0
- package/dist/cli/commands/skills.d.ts.map +1 -0
- package/dist/cli/commands/skills.js +180 -0
- package/dist/cli/commands/skills.js.map +1 -0
- package/dist/cli/commands/start.js +4 -4
- 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 +14 -7
- package/dist/cli/commands/update.js.map +1 -1
- package/dist/cli/index.js +30 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/server/api.js +2 -2
- package/dist/server/api.js.map +1 -1
- package/dist/server/index.js +1 -1
- package/dist/server/index.js.map +1 -1
- package/dist/utils/ai-build.d.ts +19 -0
- package/dist/utils/ai-build.d.ts.map +1 -0
- package/dist/utils/ai-build.js +278 -0
- package/dist/utils/ai-build.js.map +1 -0
- package/dist/utils/fs.d.ts +9 -0
- package/dist/utils/fs.d.ts.map +1 -1
- package/dist/utils/fs.js +31 -0
- package/dist/utils/fs.js.map +1 -1
- package/dist/utils/guide.d.ts +5 -4
- package/dist/utils/guide.d.ts.map +1 -1
- package/dist/utils/guide.js +78 -11
- package/dist/utils/guide.js.map +1 -1
- package/dist/utils/import.d.ts +27 -0
- package/dist/utils/import.d.ts.map +1 -0
- package/dist/utils/import.js +298 -0
- package/dist/utils/import.js.map +1 -0
- package/dist/utils/paths.d.ts +2 -2
- package/dist/utils/paths.d.ts.map +1 -1
- package/dist/utils/paths.js +8 -8
- package/dist/utils/paths.js.map +1 -1
- package/dist/utils/rules.d.ts +6 -1
- package/dist/utils/rules.d.ts.map +1 -1
- package/dist/utils/rules.js +126 -6
- package/dist/utils/rules.js.map +1 -1
- package/dist/utils/run-data.d.ts +1 -1
- package/dist/utils/run-data.js +4 -4
- package/dist/utils/run-data.js.map +1 -1
- package/dist/utils/skills.d.ts +37 -0
- package/dist/utils/skills.d.ts.map +1 -0
- package/dist/utils/skills.js +228 -0
- package/dist/utils/skills.js.map +1 -0
- package/package.json +1 -1
- package/src/assets/skills/audit.md +6 -6
- package/src/assets/skills/bug-fixer.md +4 -4
- package/src/assets/skills/code-generator.md +4 -4
- package/src/assets/skills/dashboard-generator.md +2 -2
- package/src/assets/skills/dev-flower.md +3 -3
- package/src/assets/skills/deviation-recorder.md +7 -7
- package/src/assets/skills/mcp-reviewer.md +2 -2
- package/src/assets/skills/requirement-analyzer.md +4 -4
- package/src/assets/skills/rules-evolver.md +7 -7
- package/src/assets/skills/self-reviewer.md +4 -4
- package/src/assets/skills/task-splitter.md +5 -5
- package/src/assets/skills/workflow-orchestrator.md +11 -11
- package/src/assets/templates/demo-run.json +7 -7
|
@@ -0,0 +1,298 @@
|
|
|
1
|
+
import { readdirSync, statSync } from 'node:fs';
|
|
2
|
+
import { homedir } from 'node:os';
|
|
3
|
+
import { dirname, resolve } from 'node:path';
|
|
4
|
+
import { ensureDir, fileExists, readJson, readText, writeJson } from './fs.js';
|
|
5
|
+
import { configPath } from './paths.js';
|
|
6
|
+
import { ensureBuildGitignore } from './ai-build.js';
|
|
7
|
+
import { importRulesFromViews, loadRegistry, saveRegistry, fingerprint, nextRuleId } from './rules.js';
|
|
8
|
+
import { importSkillsFromViews, loadSkillRegistry, saveSkillRegistry, skillFingerprint, nextSkillId } from './skills.js';
|
|
9
|
+
const TOOL_SOURCES = [
|
|
10
|
+
{ tool: 'claude-code', path: (projectRoot) => resolve(projectRoot, '.mcp.json'), format: 'json' },
|
|
11
|
+
{ tool: 'cursor', path: (projectRoot) => resolve(projectRoot, '.cursor', 'mcp.json'), format: 'json' },
|
|
12
|
+
{ tool: 'vscode-copilot', path: (projectRoot) => resolve(projectRoot, '.vscode', 'mcp.json'), format: 'json' },
|
|
13
|
+
{ tool: 'lingma', path: (projectRoot) => resolve(projectRoot, '.lingma', 'mcp.json'), format: 'json' },
|
|
14
|
+
{ tool: 'codex', path: (projectRoot) => resolve(projectRoot, '.aida', 'codex', 'config.toml'), format: 'toml' },
|
|
15
|
+
];
|
|
16
|
+
function toolConfigSnapshotPath(projectRoot) {
|
|
17
|
+
return resolve(projectRoot, '.aida', 'tool-configs.json');
|
|
18
|
+
}
|
|
19
|
+
function walkMarkdownFiles(rootDir) {
|
|
20
|
+
if (!fileExists(rootDir))
|
|
21
|
+
return [];
|
|
22
|
+
const result = [];
|
|
23
|
+
const stack = [rootDir];
|
|
24
|
+
while (stack.length > 0) {
|
|
25
|
+
const current = stack.pop();
|
|
26
|
+
for (const name of readdirSync(current)) {
|
|
27
|
+
const full = resolve(current, name);
|
|
28
|
+
const stat = statSync(full);
|
|
29
|
+
if (stat.isDirectory()) {
|
|
30
|
+
stack.push(full);
|
|
31
|
+
}
|
|
32
|
+
else if (name.endsWith('.md')) {
|
|
33
|
+
result.push(full);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
return result.sort();
|
|
38
|
+
}
|
|
39
|
+
function parseMarkdownRuleCandidates(raw) {
|
|
40
|
+
const results = [];
|
|
41
|
+
for (const line of raw.split('\n')) {
|
|
42
|
+
const trimmed = line.trim();
|
|
43
|
+
if (!trimmed || trimmed.startsWith('#') || trimmed.startsWith('```') || trimmed.startsWith('>'))
|
|
44
|
+
continue;
|
|
45
|
+
const generatedMatch = trimmed.match(/^-\s+\[(?:RULE-\d+)\](?:\s+\[[A-Z]+\])?\s+(.+)$/);
|
|
46
|
+
if (generatedMatch) {
|
|
47
|
+
results.push(generatedMatch[1].trim());
|
|
48
|
+
continue;
|
|
49
|
+
}
|
|
50
|
+
const bulletMatch = trimmed.match(/^[-*]\s+(.+)$/);
|
|
51
|
+
if (bulletMatch) {
|
|
52
|
+
results.push(bulletMatch[1].trim());
|
|
53
|
+
continue;
|
|
54
|
+
}
|
|
55
|
+
const orderedMatch = trimmed.match(/^\d+\.\s+(.+)$/);
|
|
56
|
+
if (orderedMatch) {
|
|
57
|
+
results.push(orderedMatch[1].trim());
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
return results.filter((item) => item.length > 0);
|
|
61
|
+
}
|
|
62
|
+
function mergeImportedRules(projectRoot, contents, tool) {
|
|
63
|
+
const existing = loadRegistry(projectRoot);
|
|
64
|
+
const byFingerprint = new Set(existing.map((entry) => entry.fingerprint));
|
|
65
|
+
const merged = [...existing];
|
|
66
|
+
let imported = 0;
|
|
67
|
+
for (const content of contents) {
|
|
68
|
+
const fp = fingerprint(content);
|
|
69
|
+
if (byFingerprint.has(fp))
|
|
70
|
+
continue;
|
|
71
|
+
merged.push({
|
|
72
|
+
id: nextRuleId(merged),
|
|
73
|
+
category: 'general',
|
|
74
|
+
content,
|
|
75
|
+
fingerprint: fp,
|
|
76
|
+
source: {
|
|
77
|
+
branch: `import:${tool}`,
|
|
78
|
+
deviation: null,
|
|
79
|
+
author: 'import',
|
|
80
|
+
},
|
|
81
|
+
createdAt: new Date().toISOString(),
|
|
82
|
+
status: 'active',
|
|
83
|
+
});
|
|
84
|
+
byFingerprint.add(fp);
|
|
85
|
+
imported++;
|
|
86
|
+
}
|
|
87
|
+
if (imported > 0) {
|
|
88
|
+
saveRegistry(projectRoot, merged);
|
|
89
|
+
}
|
|
90
|
+
return { total: merged.length, imported };
|
|
91
|
+
}
|
|
92
|
+
function mergeImportedSkills(projectRoot, entries, tool) {
|
|
93
|
+
const existing = loadSkillRegistry(projectRoot);
|
|
94
|
+
const byName = new Map(existing.map((entry) => [entry.name, entry]));
|
|
95
|
+
const byFingerprint = new Set(existing.map((entry) => entry.fingerprint));
|
|
96
|
+
const merged = [...existing];
|
|
97
|
+
let imported = 0;
|
|
98
|
+
for (const item of entries) {
|
|
99
|
+
const fp = skillFingerprint(item.content);
|
|
100
|
+
const existingByName = byName.get(item.name);
|
|
101
|
+
if (existingByName) {
|
|
102
|
+
existingByName.content = item.content;
|
|
103
|
+
existingByName.fingerprint = fp;
|
|
104
|
+
existingByName.updatedAt = new Date().toISOString();
|
|
105
|
+
existingByName.status = 'active';
|
|
106
|
+
existingByName.source = {
|
|
107
|
+
kind: 'local',
|
|
108
|
+
path: item.sourcePath,
|
|
109
|
+
};
|
|
110
|
+
imported++;
|
|
111
|
+
byFingerprint.add(fp);
|
|
112
|
+
continue;
|
|
113
|
+
}
|
|
114
|
+
if (byFingerprint.has(fp))
|
|
115
|
+
continue;
|
|
116
|
+
const entry = {
|
|
117
|
+
id: nextSkillId(merged),
|
|
118
|
+
name: item.name,
|
|
119
|
+
content: item.content,
|
|
120
|
+
fingerprint: fp,
|
|
121
|
+
source: {
|
|
122
|
+
kind: 'local',
|
|
123
|
+
path: item.sourcePath,
|
|
124
|
+
},
|
|
125
|
+
updatedAt: new Date().toISOString(),
|
|
126
|
+
status: 'active',
|
|
127
|
+
};
|
|
128
|
+
merged.push(entry);
|
|
129
|
+
byName.set(entry.name, entry);
|
|
130
|
+
byFingerprint.add(fp);
|
|
131
|
+
imported++;
|
|
132
|
+
}
|
|
133
|
+
if (imported > 0) {
|
|
134
|
+
saveSkillRegistry(projectRoot, merged);
|
|
135
|
+
}
|
|
136
|
+
return { total: merged.length, imported };
|
|
137
|
+
}
|
|
138
|
+
export function detectImportableTools(projectRoot, tools) {
|
|
139
|
+
return tools.filter((tool) => {
|
|
140
|
+
switch (tool) {
|
|
141
|
+
case 'claude-code':
|
|
142
|
+
return fileExists(resolve(projectRoot, 'CLAUDE.md'))
|
|
143
|
+
|| fileExists(resolve(projectRoot, '.claude', 'commands'))
|
|
144
|
+
|| fileExists(resolve(projectRoot, '.mcp.json'));
|
|
145
|
+
case 'cursor':
|
|
146
|
+
return fileExists(resolve(projectRoot, '.cursor', 'rules'))
|
|
147
|
+
|| fileExists(resolve(projectRoot, '.cursor', 'skills'))
|
|
148
|
+
|| fileExists(resolve(projectRoot, '.cursor', 'mcp.json'));
|
|
149
|
+
case 'lingma':
|
|
150
|
+
return fileExists(resolve(projectRoot, '.lingma', 'rules'))
|
|
151
|
+
|| fileExists(resolve(projectRoot, '.lingma', 'mcp.json'));
|
|
152
|
+
case 'codex':
|
|
153
|
+
return fileExists(resolve(projectRoot, 'AGENTS.md'))
|
|
154
|
+
|| fileExists(resolve(process.env.HOME || homedir(), '.codex', 'config.toml'));
|
|
155
|
+
case 'vscode-copilot':
|
|
156
|
+
return fileExists(resolve(projectRoot, '.vscode', 'mcp.json'));
|
|
157
|
+
case 'windsurf':
|
|
158
|
+
return false;
|
|
159
|
+
}
|
|
160
|
+
});
|
|
161
|
+
}
|
|
162
|
+
export function importFromTool(projectRoot, tool) {
|
|
163
|
+
const ruleContents = [];
|
|
164
|
+
const skills = [];
|
|
165
|
+
switch (tool) {
|
|
166
|
+
case 'claude-code': {
|
|
167
|
+
const claude = resolve(projectRoot, 'CLAUDE.md');
|
|
168
|
+
if (fileExists(claude)) {
|
|
169
|
+
ruleContents.push(...parseMarkdownRuleCandidates(readText(claude)));
|
|
170
|
+
}
|
|
171
|
+
const commandDir = resolve(projectRoot, '.claude', 'commands');
|
|
172
|
+
for (const file of walkMarkdownFiles(commandDir)) {
|
|
173
|
+
const name = file.split('/').pop().replace(/\.md$/, '');
|
|
174
|
+
skills.push({
|
|
175
|
+
name,
|
|
176
|
+
content: readText(file),
|
|
177
|
+
sourcePath: file.replace(`${projectRoot}/`, ''),
|
|
178
|
+
});
|
|
179
|
+
}
|
|
180
|
+
break;
|
|
181
|
+
}
|
|
182
|
+
case 'cursor': {
|
|
183
|
+
const rulesDir = resolve(projectRoot, '.cursor', 'rules');
|
|
184
|
+
for (const file of walkMarkdownFiles(rulesDir)) {
|
|
185
|
+
ruleContents.push(...parseMarkdownRuleCandidates(readText(file)));
|
|
186
|
+
}
|
|
187
|
+
const skillsDir = resolve(projectRoot, '.cursor', 'skills');
|
|
188
|
+
for (const file of walkMarkdownFiles(skillsDir).filter((path) => path.endsWith('SKILL.md'))) {
|
|
189
|
+
const parts = file.split('/');
|
|
190
|
+
const name = parts[parts.length - 2];
|
|
191
|
+
skills.push({
|
|
192
|
+
name,
|
|
193
|
+
content: readText(file),
|
|
194
|
+
sourcePath: file.replace(`${projectRoot}/`, ''),
|
|
195
|
+
});
|
|
196
|
+
}
|
|
197
|
+
break;
|
|
198
|
+
}
|
|
199
|
+
case 'lingma': {
|
|
200
|
+
const rulesDir = resolve(projectRoot, '.lingma', 'rules');
|
|
201
|
+
for (const file of walkMarkdownFiles(rulesDir)) {
|
|
202
|
+
ruleContents.push(...parseMarkdownRuleCandidates(readText(file)));
|
|
203
|
+
}
|
|
204
|
+
break;
|
|
205
|
+
}
|
|
206
|
+
case 'codex': {
|
|
207
|
+
const agents = resolve(projectRoot, 'AGENTS.md');
|
|
208
|
+
if (fileExists(agents)) {
|
|
209
|
+
ruleContents.push(...parseMarkdownRuleCandidates(readText(agents)));
|
|
210
|
+
}
|
|
211
|
+
break;
|
|
212
|
+
}
|
|
213
|
+
case 'vscode-copilot':
|
|
214
|
+
case 'windsurf':
|
|
215
|
+
break;
|
|
216
|
+
}
|
|
217
|
+
const rulesResult = mergeImportedRules(projectRoot, [...new Set(ruleContents)], tool);
|
|
218
|
+
const skillResult = mergeImportedSkills(projectRoot, skills, tool);
|
|
219
|
+
return { rulesImported: rulesResult.imported, skillsImported: skillResult.imported };
|
|
220
|
+
}
|
|
221
|
+
function readStructured(filePath) {
|
|
222
|
+
if (!fileExists(filePath))
|
|
223
|
+
return null;
|
|
224
|
+
if (filePath.endsWith('.json')) {
|
|
225
|
+
try {
|
|
226
|
+
return readJson(filePath);
|
|
227
|
+
}
|
|
228
|
+
catch {
|
|
229
|
+
return readText(filePath);
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
return readText(filePath);
|
|
233
|
+
}
|
|
234
|
+
export function importExistingToolConfigs(projectRoot) {
|
|
235
|
+
const snapshots = [];
|
|
236
|
+
for (const source of TOOL_SOURCES) {
|
|
237
|
+
const path = source.path(projectRoot);
|
|
238
|
+
if (!fileExists(path))
|
|
239
|
+
continue;
|
|
240
|
+
snapshots.push({
|
|
241
|
+
tool: source.tool,
|
|
242
|
+
path: path.replace(`${projectRoot}/`, ''),
|
|
243
|
+
format: source.format,
|
|
244
|
+
content: readStructured(path),
|
|
245
|
+
});
|
|
246
|
+
}
|
|
247
|
+
const home = process.env.HOME || homedir();
|
|
248
|
+
const codexGlobalPath = resolve(home, '.codex', 'config.toml');
|
|
249
|
+
if (fileExists(codexGlobalPath)) {
|
|
250
|
+
snapshots.push({
|
|
251
|
+
tool: 'codex',
|
|
252
|
+
path: codexGlobalPath,
|
|
253
|
+
format: 'toml',
|
|
254
|
+
content: readText(codexGlobalPath),
|
|
255
|
+
});
|
|
256
|
+
}
|
|
257
|
+
const tools = [...new Set(snapshots.map((item) => item.tool))];
|
|
258
|
+
const snapshotPath = toolConfigSnapshotPath(projectRoot);
|
|
259
|
+
ensureDir(dirname(snapshotPath));
|
|
260
|
+
writeJson(snapshotPath, {
|
|
261
|
+
importedAt: new Date().toISOString(),
|
|
262
|
+
tools,
|
|
263
|
+
snapshots,
|
|
264
|
+
});
|
|
265
|
+
return { tools, snapshots, snapshotPath };
|
|
266
|
+
}
|
|
267
|
+
export function mergeConfiguredTools(projectRoot, tools) {
|
|
268
|
+
if (!fileExists(configPath(projectRoot)))
|
|
269
|
+
return tools;
|
|
270
|
+
const config = readJson(configPath(projectRoot));
|
|
271
|
+
const existing = Array.isArray(config.aiTools)
|
|
272
|
+
? config.aiTools
|
|
273
|
+
: config.aiTool
|
|
274
|
+
? [config.aiTool]
|
|
275
|
+
: [];
|
|
276
|
+
const merged = [...new Set([...existing, ...tools])];
|
|
277
|
+
config.aiTools = merged;
|
|
278
|
+
if (!config.aiTool && merged.length === 1) {
|
|
279
|
+
config.aiTool = merged[0];
|
|
280
|
+
}
|
|
281
|
+
writeJson(configPath(projectRoot), config);
|
|
282
|
+
return merged;
|
|
283
|
+
}
|
|
284
|
+
export function importProjectSources(projectRoot) {
|
|
285
|
+
const rules = importRulesFromViews(projectRoot);
|
|
286
|
+
const skills = importSkillsFromViews(projectRoot);
|
|
287
|
+
const toolConfigs = importExistingToolConfigs(projectRoot);
|
|
288
|
+
const tools = mergeConfiguredTools(projectRoot, toolConfigs.tools);
|
|
289
|
+
const gitignoreAdded = ensureBuildGitignore(projectRoot, tools);
|
|
290
|
+
return {
|
|
291
|
+
rulesImported: rules.imported,
|
|
292
|
+
skillsImported: skills.imported,
|
|
293
|
+
tools,
|
|
294
|
+
snapshotPath: toolConfigs.snapshotPath,
|
|
295
|
+
gitignoreAdded,
|
|
296
|
+
};
|
|
297
|
+
}
|
|
298
|
+
//# sourceMappingURL=import.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"import.js","sourceRoot":"","sources":["../../src/utils/import.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/paths.d.ts
CHANGED
|
@@ -8,8 +8,8 @@ export declare const SKILLS_DIR: string;
|
|
|
8
8
|
export declare const TEMPLATES_DIR: string;
|
|
9
9
|
/** Dashboard HTML file */
|
|
10
10
|
export declare const DASHBOARD_FILE: string;
|
|
11
|
-
/** .
|
|
12
|
-
export declare function
|
|
11
|
+
/** .aida directory in user's project */
|
|
12
|
+
export declare function aidaDir(projectRoot?: string): string;
|
|
13
13
|
/** Runs directory */
|
|
14
14
|
export declare function runsDir(projectRoot?: string): string;
|
|
15
15
|
/** Run data directory for a specific branch + developer */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../src/utils/paths.ts"],"names":[],"mappings":"AAMA,2BAA2B;AAC3B,eAAO,MAAM,YAAY,QAAiC,CAAC;AAE3D,+BAA+B;AAC/B,eAAO,MAAM,UAAU,QAAyC,CAAC;AAEjE,0BAA0B;AAC1B,eAAO,MAAM,UAAU,QAAgC,CAAC;AAExD,6BAA6B;AAC7B,eAAO,MAAM,aAAa,QAAmC,CAAC;AAE9D,0BAA0B;AAC1B,eAAO,MAAM,cAAc,QAA0D,CAAC;AAEtF,
|
|
1
|
+
{"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../src/utils/paths.ts"],"names":[],"mappings":"AAMA,2BAA2B;AAC3B,eAAO,MAAM,YAAY,QAAiC,CAAC;AAE3D,+BAA+B;AAC/B,eAAO,MAAM,UAAU,QAAyC,CAAC;AAEjE,0BAA0B;AAC1B,eAAO,MAAM,UAAU,QAAgC,CAAC;AAExD,6BAA6B;AAC7B,eAAO,MAAM,aAAa,QAAmC,CAAC;AAE9D,0BAA0B;AAC1B,eAAO,MAAM,cAAc,QAA0D,CAAC;AAEtF,wCAAwC;AACxC,wBAAgB,OAAO,CAAC,WAAW,GAAE,MAAsB,GAAG,MAAM,CAEnE;AAED,qBAAqB;AACrB,wBAAgB,OAAO,CAAC,WAAW,GAAE,MAAsB,GAAG,MAAM,CAEnE;AAED,2DAA2D;AAC3D,wBAAgB,MAAM,CACpB,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,GACd,MAAM,CAGR;AAED,sEAAsE;AACtE,wBAAgB,SAAS,CACvB,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,GACjB,MAAM,CAGR;AAED,yCAAyC;AACzC,wBAAgB,eAAe,CAC7B,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,GACjB,MAAM,CAER;AAED,oCAAoC;AACpC,wBAAgB,SAAS,CAAC,WAAW,GAAE,MAAsB,GAAG,MAAM,CAErE;AAED,uBAAuB;AACvB,wBAAgB,UAAU,CAAC,WAAW,GAAE,MAAsB,GAAG,MAAM,CAEtE"}
|
package/dist/utils/paths.js
CHANGED
|
@@ -12,23 +12,23 @@ export const SKILLS_DIR = resolve(ASSETS_DIR, 'skills');
|
|
|
12
12
|
export const TEMPLATES_DIR = resolve(ASSETS_DIR, 'templates');
|
|
13
13
|
/** Dashboard HTML file */
|
|
14
14
|
export const DASHBOARD_FILE = resolve(PACKAGE_ROOT, 'src', 'dashboard', 'index.html');
|
|
15
|
-
/** .
|
|
16
|
-
export function
|
|
17
|
-
return resolve(projectRoot, '.
|
|
15
|
+
/** .aida directory in user's project */
|
|
16
|
+
export function aidaDir(projectRoot = process.cwd()) {
|
|
17
|
+
return resolve(projectRoot, '.aida');
|
|
18
18
|
}
|
|
19
19
|
/** Runs directory */
|
|
20
20
|
export function runsDir(projectRoot = process.cwd()) {
|
|
21
|
-
return resolve(projectRoot, '.
|
|
21
|
+
return resolve(projectRoot, '.aida', 'runs');
|
|
22
22
|
}
|
|
23
23
|
/** Run data directory for a specific branch + developer */
|
|
24
24
|
export function runDir(projectRoot, branchName, devName) {
|
|
25
25
|
const safeBranch = branchName.replace(/\//g, '-');
|
|
26
|
-
return resolve(projectRoot, '.
|
|
26
|
+
return resolve(projectRoot, '.aida', 'runs', safeBranch, devName);
|
|
27
27
|
}
|
|
28
28
|
/** Branch-level directory (shared PRD, analysis, requirement.json) */
|
|
29
29
|
export function branchDir(projectRoot, branchName) {
|
|
30
30
|
const safeBranch = branchName.replace(/\//g, '-');
|
|
31
|
-
return resolve(projectRoot, '.
|
|
31
|
+
return resolve(projectRoot, '.aida', 'runs', safeBranch);
|
|
32
32
|
}
|
|
33
33
|
/** Branch-level requirement.json path */
|
|
34
34
|
export function requirementPath(projectRoot, branchName) {
|
|
@@ -36,10 +36,10 @@ export function requirementPath(projectRoot, branchName) {
|
|
|
36
36
|
}
|
|
37
37
|
/** Project-level index.json path */
|
|
38
38
|
export function indexPath(projectRoot = process.cwd()) {
|
|
39
|
-
return resolve(projectRoot, '.
|
|
39
|
+
return resolve(projectRoot, '.aida', 'index.json');
|
|
40
40
|
}
|
|
41
41
|
/** Config file path */
|
|
42
42
|
export function configPath(projectRoot = process.cwd()) {
|
|
43
|
-
return resolve(projectRoot, '.
|
|
43
|
+
return resolve(projectRoot, '.aida', 'config.json');
|
|
44
44
|
}
|
|
45
45
|
//# sourceMappingURL=paths.js.map
|
package/dist/utils/paths.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/utils/paths.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AAEtC,2BAA2B;AAC3B,MAAM,CAAC,MAAM,YAAY,GAAG,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAE3D,+BAA+B;AAC/B,MAAM,CAAC,MAAM,UAAU,GAAG,OAAO,CAAC,YAAY,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;AAEjE,0BAA0B;AAC1B,MAAM,CAAC,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;AAExD,6BAA6B;AAC7B,MAAM,CAAC,MAAM,aAAa,GAAG,OAAO,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;AAE9D,0BAA0B;AAC1B,MAAM,CAAC,MAAM,cAAc,GAAG,OAAO,CAAC,YAAY,EAAE,KAAK,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC;AAEtF,
|
|
1
|
+
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/utils/paths.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AAEtC,2BAA2B;AAC3B,MAAM,CAAC,MAAM,YAAY,GAAG,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAE3D,+BAA+B;AAC/B,MAAM,CAAC,MAAM,UAAU,GAAG,OAAO,CAAC,YAAY,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;AAEjE,0BAA0B;AAC1B,MAAM,CAAC,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;AAExD,6BAA6B;AAC7B,MAAM,CAAC,MAAM,aAAa,GAAG,OAAO,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;AAE9D,0BAA0B;AAC1B,MAAM,CAAC,MAAM,cAAc,GAAG,OAAO,CAAC,YAAY,EAAE,KAAK,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC;AAEtF,wCAAwC;AACxC,MAAM,UAAU,OAAO,CAAC,cAAsB,OAAO,CAAC,GAAG,EAAE;IACzD,OAAO,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;AACvC,CAAC;AAED,qBAAqB;AACrB,MAAM,UAAU,OAAO,CAAC,cAAsB,OAAO,CAAC,GAAG,EAAE;IACzD,OAAO,OAAO,CAAC,WAAW,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;AAC/C,CAAC;AAED,2DAA2D;AAC3D,MAAM,UAAU,MAAM,CACpB,WAAmB,EACnB,UAAkB,EAClB,OAAe;IAEf,MAAM,UAAU,GAAG,UAAU,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAClD,OAAO,OAAO,CAAC,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;AACpE,CAAC;AAED,sEAAsE;AACtE,MAAM,UAAU,SAAS,CACvB,WAAmB,EACnB,UAAkB;IAElB,MAAM,UAAU,GAAG,UAAU,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAClD,OAAO,OAAO,CAAC,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;AAC3D,CAAC;AAED,yCAAyC;AACzC,MAAM,UAAU,eAAe,CAC7B,WAAmB,EACnB,UAAkB;IAElB,OAAO,OAAO,CAAC,SAAS,CAAC,WAAW,EAAE,UAAU,CAAC,EAAE,kBAAkB,CAAC,CAAC;AACzE,CAAC;AAED,oCAAoC;AACpC,MAAM,UAAU,SAAS,CAAC,cAAsB,OAAO,CAAC,GAAG,EAAE;IAC3D,OAAO,OAAO,CAAC,WAAW,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC;AACrD,CAAC;AAED,uBAAuB;AACvB,MAAM,UAAU,UAAU,CAAC,cAAsB,OAAO,CAAC,GAAG,EAAE;IAC5D,OAAO,OAAO,CAAC,WAAW,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC;AACtD,CAAC"}
|
package/dist/utils/rules.d.ts
CHANGED
|
@@ -4,6 +4,11 @@ export declare function rulesViewDir(projectRoot: string): string;
|
|
|
4
4
|
export declare function fingerprint(content: string): string;
|
|
5
5
|
export declare function loadRegistry(projectRoot: string): RuleRegistryEntry[];
|
|
6
6
|
export declare function saveRegistry(projectRoot: string, entries: RuleRegistryEntry[]): void;
|
|
7
|
+
export declare function importRulesFromViews(projectRoot: string): {
|
|
8
|
+
entries: RuleRegistryEntry[];
|
|
9
|
+
imported: number;
|
|
10
|
+
};
|
|
11
|
+
export declare function bootstrapRuleRegistry(projectRoot: string): RuleRegistryEntry[];
|
|
7
12
|
export declare function nextRuleId(entries: RuleRegistryEntry[]): string;
|
|
8
13
|
/**
|
|
9
14
|
* Add a rule to the registry. Returns the entry if added, or the existing entry if duplicate.
|
|
@@ -20,7 +25,7 @@ export declare function addRule(projectRoot: string, opts: {
|
|
|
20
25
|
isDuplicate: boolean;
|
|
21
26
|
};
|
|
22
27
|
/**
|
|
23
|
-
* Rebuild all .
|
|
28
|
+
* Rebuild all .aida/rules/*.md from rules.json.
|
|
24
29
|
* Returns the number of categories written.
|
|
25
30
|
*/
|
|
26
31
|
export declare function buildRuleViews(projectRoot: string): number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rules.d.ts","sourceRoot":"","sources":["../../src/utils/rules.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAKhE,wBAAgB,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAExD;AAED,wBAAgB,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAExD;AAYD,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEnD;AAID,wBAAgB,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,iBAAiB,EAAE,CASrE;AAED,wBAAgB,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,EAAE,GAAG,IAAI,CAEpF;AAED,wBAAgB,UAAU,CAAC,OAAO,EAAE,iBAAiB,EAAE,GAAG,MAAM,CAS/D;AAED;;GAEG;AACH,wBAAgB,OAAO,CACrB,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE;IACJ,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,iBAAiB,CAAC,QAAQ,CAAC,CAAC;CACtC,GACA;IAAE,KAAK,EAAE,iBAAiB,CAAC;IAAC,WAAW,EAAE,OAAO,CAAA;CAAE,CA2BpD;AAID;;;GAGG;AACH,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CA0D1D;AAoBD;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,IAAI,EAAE,iBAAiB,EAAE,EACzB,QAAQ,EAAE,iBAAiB,EAAE,GAC5B;IAAE,MAAM,EAAE,iBAAiB,EAAE,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAgBhD;AAID;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,iBAAiB,EAAE,GAC3B;IAAE,CAAC,EAAE,iBAAiB,CAAC;IAAC,CAAC,EAAE,iBAAiB,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,EAAE,CAsCtE"}
|
|
1
|
+
{"version":3,"file":"rules.d.ts","sourceRoot":"","sources":["../../src/utils/rules.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAKhE,wBAAgB,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAExD;AAED,wBAAgB,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAExD;AAYD,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEnD;AAID,wBAAgB,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,iBAAiB,EAAE,CASrE;AAED,wBAAgB,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,EAAE,GAAG,IAAI,CAEpF;AAgED,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,iBAAiB,EAAE,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAkE5G;AAED,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,MAAM,GAAG,iBAAiB,EAAE,CAI9E;AAED,wBAAgB,UAAU,CAAC,OAAO,EAAE,iBAAiB,EAAE,GAAG,MAAM,CAS/D;AAED;;GAEG;AACH,wBAAgB,OAAO,CACrB,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE;IACJ,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,iBAAiB,CAAC,QAAQ,CAAC,CAAC;CACtC,GACA;IAAE,KAAK,EAAE,iBAAiB,CAAC;IAAC,WAAW,EAAE,OAAO,CAAA;CAAE,CA2BpD;AAID;;;GAGG;AACH,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CA0D1D;AAoBD;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,IAAI,EAAE,iBAAiB,EAAE,EACzB,QAAQ,EAAE,iBAAiB,EAAE,GAC5B;IAAE,MAAM,EAAE,iBAAiB,EAAE,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAgBhD;AAID;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,iBAAiB,EAAE,GAC3B;IAAE,CAAC,EAAE,iBAAiB,CAAC;IAAC,CAAC,EAAE,iBAAiB,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,EAAE,CAsCtE"}
|
package/dist/utils/rules.js
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { createHash } from 'node:crypto';
|
|
2
2
|
import { resolve } from 'node:path';
|
|
3
|
-
import { fileExists, readJson, writeJson, writeText, ensureDir } from './fs.js';
|
|
4
|
-
import {
|
|
3
|
+
import { fileExists, readJson, writeJson, writeText, ensureDir, readText } from './fs.js';
|
|
4
|
+
import { aidaDir } from './paths.js';
|
|
5
5
|
// ─── Paths ────────────────────────────────────────────────
|
|
6
6
|
export function registryPath(projectRoot) {
|
|
7
|
-
return resolve(
|
|
7
|
+
return resolve(aidaDir(projectRoot), 'rules.json');
|
|
8
8
|
}
|
|
9
9
|
export function rulesViewDir(projectRoot) {
|
|
10
|
-
return resolve(
|
|
10
|
+
return resolve(aidaDir(projectRoot), 'rules');
|
|
11
11
|
}
|
|
12
12
|
// ─── Fingerprint ──────────────────────────────────────────
|
|
13
13
|
function normalize(content) {
|
|
@@ -36,6 +36,126 @@ export function loadRegistry(projectRoot) {
|
|
|
36
36
|
export function saveRegistry(projectRoot, entries) {
|
|
37
37
|
writeJson(registryPath(projectRoot), entries);
|
|
38
38
|
}
|
|
39
|
+
function categoryFromTitle(title) {
|
|
40
|
+
const normalized = title.trim().toLowerCase();
|
|
41
|
+
const mapping = {
|
|
42
|
+
component: 'component',
|
|
43
|
+
api: 'api',
|
|
44
|
+
style: 'style',
|
|
45
|
+
i18n: 'i18n',
|
|
46
|
+
architecture: 'architecture',
|
|
47
|
+
'state management': 'state-management',
|
|
48
|
+
routing: 'routing',
|
|
49
|
+
testing: 'testing',
|
|
50
|
+
process: 'process',
|
|
51
|
+
general: 'general',
|
|
52
|
+
};
|
|
53
|
+
return mapping[normalized] || 'general';
|
|
54
|
+
}
|
|
55
|
+
function parseRuleLines(raw, categoryHint) {
|
|
56
|
+
const lines = raw.split('\n');
|
|
57
|
+
const parsed = [];
|
|
58
|
+
let currentCategory = categoryHint || 'general';
|
|
59
|
+
for (const line of lines) {
|
|
60
|
+
const headingMatch = line.match(/^##\s+(.+?)\s*$/);
|
|
61
|
+
if (headingMatch) {
|
|
62
|
+
currentCategory = categoryFromTitle(headingMatch[1].replace(/\s+Rules$/, ''));
|
|
63
|
+
continue;
|
|
64
|
+
}
|
|
65
|
+
const ruleMatch = line.match(/^- \[(RULE-\d+)\](?: \[([A-Z]+)\])?\s+(.+)$/);
|
|
66
|
+
if (ruleMatch) {
|
|
67
|
+
const status = ruleMatch[2]?.toLowerCase() === 'pending'
|
|
68
|
+
? 'pending'
|
|
69
|
+
: ruleMatch[2]?.toLowerCase() === 'conflict'
|
|
70
|
+
? 'conflict'
|
|
71
|
+
: 'active';
|
|
72
|
+
parsed.push({
|
|
73
|
+
id: ruleMatch[1],
|
|
74
|
+
category: currentCategory,
|
|
75
|
+
content: ruleMatch[3].trim(),
|
|
76
|
+
status,
|
|
77
|
+
});
|
|
78
|
+
continue;
|
|
79
|
+
}
|
|
80
|
+
const fallbackMatch = line.match(/^- (.+)$/);
|
|
81
|
+
if (fallbackMatch && !line.startsWith('<!--')) {
|
|
82
|
+
parsed.push({
|
|
83
|
+
id: '',
|
|
84
|
+
category: currentCategory,
|
|
85
|
+
content: fallbackMatch[1].trim(),
|
|
86
|
+
status: 'active',
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
return parsed.filter((entry) => entry.content.length > 0);
|
|
91
|
+
}
|
|
92
|
+
export function importRulesFromViews(projectRoot) {
|
|
93
|
+
const existing = loadRegistry(projectRoot);
|
|
94
|
+
const byFingerprint = new Map(existing.map((entry) => [entry.fingerprint, entry]));
|
|
95
|
+
const byId = new Map(existing.map((entry) => [entry.id, entry]));
|
|
96
|
+
const viewDir = rulesViewDir(projectRoot);
|
|
97
|
+
const now = new Date().toISOString();
|
|
98
|
+
const parsed = [];
|
|
99
|
+
const categoryFiles = ['component', 'api', 'style', 'i18n', 'architecture', 'state-management', 'routing', 'testing', 'process', 'general']
|
|
100
|
+
.map((category) => ({ category, path: resolve(viewDir, `${category}.md`) }))
|
|
101
|
+
.filter((entry) => fileExists(entry.path));
|
|
102
|
+
if (categoryFiles.length > 0) {
|
|
103
|
+
for (const file of categoryFiles) {
|
|
104
|
+
parsed.push(...parseRuleLines(readText(file.path), file.category));
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
else {
|
|
108
|
+
const allPath = resolve(viewDir, '_all.md');
|
|
109
|
+
if (fileExists(allPath)) {
|
|
110
|
+
parsed.push(...parseRuleLines(readText(allPath)));
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
let imported = 0;
|
|
114
|
+
const merged = [...existing];
|
|
115
|
+
for (const item of parsed) {
|
|
116
|
+
const fp = fingerprint(item.content);
|
|
117
|
+
const existingByFingerprint = byFingerprint.get(fp);
|
|
118
|
+
if (existingByFingerprint)
|
|
119
|
+
continue;
|
|
120
|
+
const existingById = item.id ? byId.get(item.id) : undefined;
|
|
121
|
+
if (existingById) {
|
|
122
|
+
existingById.category = item.category;
|
|
123
|
+
existingById.content = item.content;
|
|
124
|
+
existingById.fingerprint = fp;
|
|
125
|
+
existingById.status = item.status;
|
|
126
|
+
imported++;
|
|
127
|
+
byFingerprint.set(fp, existingById);
|
|
128
|
+
continue;
|
|
129
|
+
}
|
|
130
|
+
const entry = {
|
|
131
|
+
id: item.id || nextRuleId(merged),
|
|
132
|
+
category: item.category,
|
|
133
|
+
content: item.content,
|
|
134
|
+
fingerprint: fp,
|
|
135
|
+
source: {
|
|
136
|
+
branch: 'imported',
|
|
137
|
+
deviation: null,
|
|
138
|
+
author: 'import',
|
|
139
|
+
},
|
|
140
|
+
createdAt: now,
|
|
141
|
+
status: item.status,
|
|
142
|
+
};
|
|
143
|
+
merged.push(entry);
|
|
144
|
+
byFingerprint.set(fp, entry);
|
|
145
|
+
byId.set(entry.id, entry);
|
|
146
|
+
imported++;
|
|
147
|
+
}
|
|
148
|
+
if (imported > 0 || existing.length === 0) {
|
|
149
|
+
saveRegistry(projectRoot, merged);
|
|
150
|
+
}
|
|
151
|
+
return { entries: merged, imported };
|
|
152
|
+
}
|
|
153
|
+
export function bootstrapRuleRegistry(projectRoot) {
|
|
154
|
+
const existing = loadRegistry(projectRoot);
|
|
155
|
+
if (existing.length > 0)
|
|
156
|
+
return existing;
|
|
157
|
+
return importRulesFromViews(projectRoot).entries;
|
|
158
|
+
}
|
|
39
159
|
export function nextRuleId(entries) {
|
|
40
160
|
const nums = entries
|
|
41
161
|
.map((e) => {
|
|
@@ -76,11 +196,11 @@ export function addRule(projectRoot, opts) {
|
|
|
76
196
|
}
|
|
77
197
|
// ─── Build Views ──────────────────────────────────────────
|
|
78
198
|
/**
|
|
79
|
-
* Rebuild all .
|
|
199
|
+
* Rebuild all .aida/rules/*.md from rules.json.
|
|
80
200
|
* Returns the number of categories written.
|
|
81
201
|
*/
|
|
82
202
|
export function buildRuleViews(projectRoot) {
|
|
83
|
-
const entries =
|
|
203
|
+
const entries = bootstrapRuleRegistry(projectRoot);
|
|
84
204
|
const viewDir = rulesViewDir(projectRoot);
|
|
85
205
|
ensureDir(viewDir);
|
|
86
206
|
// Group by category
|
package/dist/utils/rules.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rules.js","sourceRoot":"","sources":["../../src/utils/rules.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"rules.js","sourceRoot":"","sources":["../../src/utils/rules.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/run-data.d.ts
CHANGED
|
@@ -28,7 +28,7 @@ export declare function loadRunJson(projectRoot: string): {
|
|
|
28
28
|
export declare function createInitialRunData(branch: string, dev: string, config: Record<string, any>): RunData;
|
|
29
29
|
/**
|
|
30
30
|
* Ensure run.json exists (lazy init).
|
|
31
|
-
* Creates .
|
|
31
|
+
* Creates .aida/, config.json, run.json, branch-level files if missing.
|
|
32
32
|
*/
|
|
33
33
|
export declare function ensureRunJson(projectRoot: string): {
|
|
34
34
|
path: string;
|