ai-dev-analytics 1.0.3 → 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.
Files changed (113) hide show
  1. package/README.md +73 -13
  2. package/README.zh-CN.md +73 -13
  3. package/dist/cli/commands/build.d.ts +2 -0
  4. package/dist/cli/commands/build.d.ts.map +1 -0
  5. package/dist/cli/commands/build.js +61 -0
  6. package/dist/cli/commands/build.js.map +1 -0
  7. package/dist/cli/commands/dashboard.js +1 -1
  8. package/dist/cli/commands/dashboard.js.map +1 -1
  9. package/dist/cli/commands/import.d.ts +2 -0
  10. package/dist/cli/commands/import.d.ts.map +1 -0
  11. package/dist/cli/commands/import.js +28 -0
  12. package/dist/cli/commands/import.js.map +1 -0
  13. package/dist/cli/commands/init.d.ts.map +1 -1
  14. package/dist/cli/commands/init.js +167 -183
  15. package/dist/cli/commands/init.js.map +1 -1
  16. package/dist/cli/commands/merge.d.ts +2 -0
  17. package/dist/cli/commands/merge.d.ts.map +1 -0
  18. package/dist/cli/commands/merge.js +47 -0
  19. package/dist/cli/commands/merge.js.map +1 -0
  20. package/dist/cli/commands/migrate-dir.d.ts +2 -0
  21. package/dist/cli/commands/migrate-dir.d.ts.map +1 -0
  22. package/dist/cli/commands/migrate-dir.js +85 -0
  23. package/dist/cli/commands/migrate-dir.js.map +1 -0
  24. package/dist/cli/commands/migrate.js +5 -5
  25. package/dist/cli/commands/migrate.js.map +1 -1
  26. package/dist/cli/commands/reindex.d.ts +4 -0
  27. package/dist/cli/commands/reindex.d.ts.map +1 -1
  28. package/dist/cli/commands/reindex.js +48 -3
  29. package/dist/cli/commands/reindex.js.map +1 -1
  30. package/dist/cli/commands/report.js +1 -1
  31. package/dist/cli/commands/report.js.map +1 -1
  32. package/dist/cli/commands/rules.d.ts +5 -0
  33. package/dist/cli/commands/rules.d.ts.map +1 -1
  34. package/dist/cli/commands/rules.js +146 -39
  35. package/dist/cli/commands/rules.js.map +1 -1
  36. package/dist/cli/commands/skills.d.ts +7 -0
  37. package/dist/cli/commands/skills.d.ts.map +1 -0
  38. package/dist/cli/commands/skills.js +180 -0
  39. package/dist/cli/commands/skills.js.map +1 -0
  40. package/dist/cli/commands/start.d.ts.map +1 -1
  41. package/dist/cli/commands/start.js +5 -9
  42. package/dist/cli/commands/start.js.map +1 -1
  43. package/dist/cli/commands/status.d.ts.map +1 -1
  44. package/dist/cli/commands/status.js +1 -5
  45. package/dist/cli/commands/status.js.map +1 -1
  46. package/dist/cli/commands/update.d.ts.map +1 -1
  47. package/dist/cli/commands/update.js +26 -5
  48. package/dist/cli/commands/update.js.map +1 -1
  49. package/dist/cli/index.js +30 -0
  50. package/dist/cli/index.js.map +1 -1
  51. package/dist/mcp/server.d.ts.map +1 -1
  52. package/dist/mcp/server.js +86 -57
  53. package/dist/mcp/server.js.map +1 -1
  54. package/dist/server/api.js +2 -2
  55. package/dist/server/api.js.map +1 -1
  56. package/dist/server/index.js +1 -1
  57. package/dist/server/index.js.map +1 -1
  58. package/dist/utils/ai-build.d.ts +19 -0
  59. package/dist/utils/ai-build.d.ts.map +1 -0
  60. package/dist/utils/ai-build.js +278 -0
  61. package/dist/utils/ai-build.js.map +1 -0
  62. package/dist/utils/fs.d.ts +18 -0
  63. package/dist/utils/fs.d.ts.map +1 -1
  64. package/dist/utils/fs.js +70 -0
  65. package/dist/utils/fs.js.map +1 -1
  66. package/dist/utils/git.d.ts +10 -1
  67. package/dist/utils/git.d.ts.map +1 -1
  68. package/dist/utils/git.js +76 -8
  69. package/dist/utils/git.js.map +1 -1
  70. package/dist/utils/guide.d.ts +21 -4
  71. package/dist/utils/guide.d.ts.map +1 -1
  72. package/dist/utils/guide.js +168 -16
  73. package/dist/utils/guide.js.map +1 -1
  74. package/dist/utils/import.d.ts +27 -0
  75. package/dist/utils/import.d.ts.map +1 -0
  76. package/dist/utils/import.js +298 -0
  77. package/dist/utils/import.js.map +1 -0
  78. package/dist/utils/paths.d.ts +2 -2
  79. package/dist/utils/paths.d.ts.map +1 -1
  80. package/dist/utils/paths.js +8 -8
  81. package/dist/utils/paths.js.map +1 -1
  82. package/dist/utils/rules.d.ts +6 -1
  83. package/dist/utils/rules.d.ts.map +1 -1
  84. package/dist/utils/rules.js +126 -6
  85. package/dist/utils/rules.js.map +1 -1
  86. package/dist/utils/run-data.d.ts +2 -2
  87. package/dist/utils/run-data.d.ts.map +1 -1
  88. package/dist/utils/run-data.js +6 -11
  89. package/dist/utils/run-data.js.map +1 -1
  90. package/dist/utils/skills.d.ts +37 -0
  91. package/dist/utils/skills.d.ts.map +1 -0
  92. package/dist/utils/skills.js +228 -0
  93. package/dist/utils/skills.js.map +1 -0
  94. package/package.json +1 -1
  95. package/src/assets/skills/audit.md +6 -6
  96. package/src/assets/skills/bug-fixer.md +4 -4
  97. package/src/assets/skills/code-generator.md +4 -4
  98. package/src/assets/skills/dashboard-generator.md +2 -2
  99. package/src/assets/skills/dev-flower.md +3 -3
  100. package/src/assets/skills/deviation-recorder.md +7 -7
  101. package/src/assets/skills/mcp-reviewer.md +2 -2
  102. package/src/assets/skills/requirement-analyzer.md +4 -4
  103. package/src/assets/skills/rules-evolver.md +7 -7
  104. package/src/assets/skills/self-reviewer.md +4 -4
  105. package/src/assets/skills/task-splitter.md +5 -5
  106. package/src/assets/skills/workflow-orchestrator.md +11 -11
  107. package/src/assets/templates/demo-run.json +7 -7
  108. package/src/dashboard/assets/index-B8QcPcg7.css +1 -0
  109. package/src/dashboard/assets/{index-E4BP-QJG.js → index-DcAl6lhS.js} +1 -1
  110. package/src/dashboard/demo/run.en.json +1169 -0
  111. package/src/dashboard/demo/run.zh.json +1169 -0
  112. package/src/dashboard/index.html +2 -2
  113. package/src/dashboard/assets/index-CwXn3nJb.css +0 -1
@@ -0,0 +1,278 @@
1
+ import { dirname, resolve } from 'node:path';
2
+ import { homedir } from 'node:os';
3
+ import { buildRuleViews } from './rules.js';
4
+ import { bootstrapSkillRegistry, buildSkillViews, getSkillContent } from './skills.js';
5
+ import { ensureGuide, updateGuide, updateGuideReferences } from './guide.js';
6
+ import { configPath } from './paths.js';
7
+ import { ensureDir, fileExists, readJson, readText, writeJson, writeText } from './fs.js';
8
+ export const QUICK_COMMANDS = [
9
+ { name: 'workflow', skill: 'workflow-orchestrator' },
10
+ { name: 'audit', skill: 'audit' },
11
+ { name: 'deviation', skill: 'deviation-recorder' },
12
+ { name: 'self-reviewer', skill: 'self-reviewer' },
13
+ { name: 'bug-fixer', skill: 'bug-fixer' },
14
+ { name: 'rules-evolver', skill: 'rules-evolver' },
15
+ ];
16
+ const MCP_SERVER_ENTRY = {
17
+ command: 'npx',
18
+ args: ['-y', 'ai-dev-analytics', 'mcp'],
19
+ };
20
+ const MCP_CONFIG_JSON = JSON.stringify({
21
+ mcpServers: {
22
+ aida: MCP_SERVER_ENTRY,
23
+ },
24
+ }, null, 2);
25
+ const CODEX_CONFIG_TOML = `[mcp_servers.aida]
26
+ command = "npx"
27
+ args = ["-y", "ai-dev-analytics", "mcp"]
28
+ `;
29
+ export function readConfiguredTools(projectRoot) {
30
+ if (!fileExists(configPath(projectRoot)))
31
+ return [];
32
+ const config = readJson(configPath(projectRoot));
33
+ if (Array.isArray(config.aiTools) && config.aiTools.length > 0) {
34
+ return [...new Set(config.aiTools)];
35
+ }
36
+ return config.aiTool ? [config.aiTool] : [];
37
+ }
38
+ export function normalizeRequestedTools(projectRoot, requested = []) {
39
+ const configured = readConfiguredTools(projectRoot);
40
+ if (requested.length === 0 || requested.includes('all'))
41
+ return configured;
42
+ const valid = new Set(['claude-code', 'cursor', 'vscode-copilot', 'windsurf', 'lingma', 'codex']);
43
+ return requested.filter((tool) => valid.has(tool));
44
+ }
45
+ function writeJsonMerge(filePath) {
46
+ if (fileExists(filePath)) {
47
+ try {
48
+ const existing = JSON.parse(readText(filePath));
49
+ existing.mcpServers = existing.mcpServers || {};
50
+ existing.mcpServers.aida = MCP_SERVER_ENTRY;
51
+ writeText(filePath, JSON.stringify(existing, null, 2) + '\n');
52
+ return;
53
+ }
54
+ catch {
55
+ // Fall through to overwrite invalid JSON.
56
+ }
57
+ }
58
+ writeText(filePath, MCP_CONFIG_JSON + '\n');
59
+ }
60
+ function mergeCodexToml(raw) {
61
+ const trimmed = raw.trim();
62
+ const block = CODEX_CONFIG_TOML.trim();
63
+ const pattern = /\[mcp_servers\.aida\][\s\S]*?(?=\n\[|$)/m;
64
+ if (!trimmed)
65
+ return `${block}\n`;
66
+ if (pattern.test(trimmed)) {
67
+ return `${trimmed.replace(pattern, block).trim()}\n`;
68
+ }
69
+ return `${trimmed}\n\n${block}\n`;
70
+ }
71
+ function syncCodexGlobalConfig() {
72
+ const home = process.env.HOME || homedir();
73
+ const codexDir = resolve(home, '.codex');
74
+ const codexConfigPath = resolve(codexDir, 'config.toml');
75
+ ensureDir(dirname(codexConfigPath));
76
+ const existing = fileExists(codexConfigPath) ? readText(codexConfigPath) : '';
77
+ writeText(codexConfigPath, mergeCodexToml(existing));
78
+ return codexConfigPath;
79
+ }
80
+ function toolConfigSnapshotPath(projectRoot) {
81
+ return resolve(projectRoot, '.aida', 'tool-configs.json');
82
+ }
83
+ function readJsonIfExists(filePath) {
84
+ if (!fileExists(filePath))
85
+ return null;
86
+ try {
87
+ return JSON.parse(readText(filePath));
88
+ }
89
+ catch {
90
+ return readText(filePath);
91
+ }
92
+ }
93
+ function writeToolConfigSnapshot(projectRoot, tools, codexGlobalPath) {
94
+ const snapshots = [];
95
+ if (tools.includes('claude-code')) {
96
+ snapshots.push({
97
+ tool: 'claude-code',
98
+ path: '.mcp.json',
99
+ format: 'json',
100
+ content: readJsonIfExists(resolve(projectRoot, '.mcp.json')),
101
+ });
102
+ }
103
+ if (tools.includes('cursor')) {
104
+ snapshots.push({
105
+ tool: 'cursor',
106
+ path: '.cursor/mcp.json',
107
+ format: 'json',
108
+ content: readJsonIfExists(resolve(projectRoot, '.cursor', 'mcp.json')),
109
+ });
110
+ }
111
+ if (tools.includes('vscode-copilot')) {
112
+ snapshots.push({
113
+ tool: 'vscode-copilot',
114
+ path: '.vscode/mcp.json',
115
+ format: 'json',
116
+ content: readJsonIfExists(resolve(projectRoot, '.vscode', 'mcp.json')),
117
+ });
118
+ }
119
+ if (tools.includes('lingma')) {
120
+ snapshots.push({
121
+ tool: 'lingma',
122
+ path: '.lingma/mcp.json',
123
+ format: 'json',
124
+ content: readJsonIfExists(resolve(projectRoot, '.lingma', 'mcp.json')),
125
+ });
126
+ }
127
+ if (tools.includes('codex')) {
128
+ snapshots.push({
129
+ tool: 'codex',
130
+ path: '.aida/codex/config.toml',
131
+ format: 'toml',
132
+ content: fileExists(resolve(projectRoot, '.aida', 'codex', 'config.toml'))
133
+ ? readText(resolve(projectRoot, '.aida', 'codex', 'config.toml'))
134
+ : '',
135
+ });
136
+ if (codexGlobalPath) {
137
+ snapshots.push({
138
+ tool: 'codex',
139
+ path: codexGlobalPath,
140
+ format: 'toml',
141
+ content: readText(codexGlobalPath),
142
+ });
143
+ }
144
+ }
145
+ writeJson(toolConfigSnapshotPath(projectRoot), {
146
+ generatedAt: new Date().toISOString(),
147
+ tools,
148
+ snapshots,
149
+ });
150
+ return toolConfigSnapshotPath(projectRoot);
151
+ }
152
+ export function writeMcpConfig(projectRoot, tools) {
153
+ const written = [];
154
+ for (const tool of tools) {
155
+ switch (tool) {
156
+ case 'claude-code':
157
+ writeJsonMerge(resolve(projectRoot, '.mcp.json'));
158
+ written.push('.mcp.json');
159
+ break;
160
+ case 'cursor': {
161
+ const dir = resolve(projectRoot, '.cursor');
162
+ ensureDir(dir);
163
+ writeJsonMerge(resolve(dir, 'mcp.json'));
164
+ written.push('.cursor/mcp.json');
165
+ break;
166
+ }
167
+ case 'vscode-copilot': {
168
+ const dir = resolve(projectRoot, '.vscode');
169
+ ensureDir(dir);
170
+ writeJsonMerge(resolve(dir, 'mcp.json'));
171
+ written.push('.vscode/mcp.json');
172
+ break;
173
+ }
174
+ case 'lingma': {
175
+ const dir = resolve(projectRoot, '.lingma');
176
+ ensureDir(dir);
177
+ writeJsonMerge(resolve(dir, 'mcp.json'));
178
+ written.push('.lingma/mcp.json');
179
+ break;
180
+ }
181
+ case 'codex': {
182
+ const dir = resolve(projectRoot, '.aida', 'codex');
183
+ ensureDir(dir);
184
+ writeText(resolve(dir, 'config.toml'), CODEX_CONFIG_TOML);
185
+ const globalPath = syncCodexGlobalConfig();
186
+ written.push(`.aida/codex/config.toml (synced to ${globalPath})`);
187
+ break;
188
+ }
189
+ case 'windsurf':
190
+ written.push('(windsurf: manual config needed)');
191
+ break;
192
+ }
193
+ }
194
+ return written;
195
+ }
196
+ function buildClaudeCommands(projectRoot) {
197
+ const dir = resolve(projectRoot, '.claude', 'commands');
198
+ ensureDir(dir);
199
+ let written = 0;
200
+ for (const cmd of QUICK_COMMANDS) {
201
+ const content = getSkillContent(projectRoot, cmd.skill);
202
+ if (!content)
203
+ continue;
204
+ writeText(resolve(dir, `${cmd.name}.md`), content);
205
+ written++;
206
+ }
207
+ return written;
208
+ }
209
+ function buildCursorCommands(projectRoot) {
210
+ let written = 0;
211
+ for (const cmd of QUICK_COMMANDS) {
212
+ const content = getSkillContent(projectRoot, cmd.skill);
213
+ if (!content)
214
+ continue;
215
+ const dir = resolve(projectRoot, '.cursor', 'skills', cmd.name);
216
+ ensureDir(dir);
217
+ writeText(resolve(dir, 'SKILL.md'), content);
218
+ written++;
219
+ }
220
+ return written;
221
+ }
222
+ export function ensureBuildGitignore(projectRoot, tools) {
223
+ const gitignorePath = resolve(projectRoot, '.gitignore');
224
+ const existing = fileExists(gitignorePath) ? readText(gitignorePath) : '';
225
+ const entries = [
226
+ '.aida/rules/*.md',
227
+ '.aida/skills/*/SKILL.md',
228
+ '.aida/index.json',
229
+ '.aida/tool-configs.json',
230
+ ];
231
+ if (tools.includes('claude-code')) {
232
+ entries.push('.mcp.json', '.claude/commands/*.md');
233
+ }
234
+ if (tools.includes('cursor')) {
235
+ entries.push('.cursor/mcp.json', '.cursor/skills/', '.cursor/rules/aidevos/');
236
+ }
237
+ if (tools.includes('vscode-copilot')) {
238
+ entries.push('.vscode/mcp.json');
239
+ }
240
+ if (tools.includes('lingma')) {
241
+ entries.push('.lingma/mcp.json', '.lingma/rules/');
242
+ }
243
+ if (tools.includes('codex')) {
244
+ entries.push('.aida/codex/config.toml');
245
+ }
246
+ const toAdd = entries.filter((entry) => !existing.includes(entry));
247
+ if (toAdd.length > 0) {
248
+ writeText(gitignorePath, existing.trimEnd() + '\n\n# AIDA - generated local AI tool artifacts\n' + toAdd.join('\n') + '\n');
249
+ }
250
+ return toAdd;
251
+ }
252
+ export function buildProjectArtifacts(projectRoot, requestedTools = []) {
253
+ const tools = normalizeRequestedTools(projectRoot, requestedTools);
254
+ bootstrapSkillRegistry(projectRoot);
255
+ const ruleViews = buildRuleViews(projectRoot);
256
+ const skillViews = buildSkillViews(projectRoot);
257
+ const mcpFiles = writeMcpConfig(projectRoot, tools);
258
+ let commandFiles = 0;
259
+ if (tools.includes('claude-code'))
260
+ commandFiles += buildClaudeCommands(projectRoot);
261
+ if (tools.includes('cursor'))
262
+ commandFiles += buildCursorCommands(projectRoot);
263
+ ensureGuide(projectRoot);
264
+ updateGuide(projectRoot);
265
+ updateGuideReferences(projectRoot, tools);
266
+ const toolConfigSnapshot = writeToolConfigSnapshot(projectRoot, tools);
267
+ const gitignoreAdded = ensureBuildGitignore(projectRoot, tools);
268
+ return {
269
+ tools,
270
+ ruleViews,
271
+ skillViews,
272
+ mcpFiles,
273
+ commandFiles,
274
+ gitignoreAdded,
275
+ toolConfigSnapshot,
276
+ };
277
+ }
278
+ //# sourceMappingURL=ai-build.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ai-build.js","sourceRoot":"","sources":["../../src/utils/ai-build.ts"],"names":[],"mappings":"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"}
@@ -6,4 +6,22 @@ export declare function readText(filePath: string): string;
6
6
  export declare function writeText(filePath: string, content: string): void;
7
7
  export declare function getProjectName(): string;
8
8
  export declare function listDirs(dir: string): string[];
9
+ /**
10
+ * Extract ours/theirs sections from a file with git conflict markers.
11
+ * Handles standard format and diff3 format (with ||||||| base section).
12
+ * Returns null if no conflict markers found.
13
+ */
14
+ export declare function extractConflictSections(raw: string): {
15
+ ours: string;
16
+ theirs: string;
17
+ } | null;
18
+ /**
19
+ * Parse one side of a JSON merge-conflict section into a normalized array payload.
20
+ * Supports:
21
+ * - full arrays: `[{}, {}]`
22
+ * - single objects: `{}`
23
+ * - empty object / null / empty string => `[]`
24
+ * - array fragments extracted from inside a larger array: `{...}, {...}`
25
+ */
26
+ export declare function parseConflictJsonArray<T = Record<string, unknown>>(raw: string): T[];
9
27
  //# sourceMappingURL=fs.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"fs.d.ts","sourceRoot":"","sources":["../../src/utils/fs.ts"],"names":[],"mappings":"AAUA,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAI3C;AAED,wBAAgB,QAAQ,CAAC,CAAC,GAAG,OAAO,EAAE,QAAQ,EAAE,MAAM,GAAG,CAAC,CAGzD;AAED,wBAAgB,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,IAAI,CAE/D;AAED,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAEpD;AAED,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEjD;AAED,wBAAgB,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAEjE;AAED,wBAAgB,cAAc,IAAI,MAAM,CAUvC;AAED,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAM9C"}
1
+ {"version":3,"file":"fs.d.ts","sourceRoot":"","sources":["../../src/utils/fs.ts"],"names":[],"mappings":"AAUA,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAI3C;AAED,wBAAgB,QAAQ,CAAC,CAAC,GAAG,OAAO,EAAE,QAAQ,EAAE,MAAM,GAAG,CAAC,CAGzD;AAED,wBAAgB,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,IAAI,CAE/D;AAED,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAEpD;AAED,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEjD;AAED,wBAAgB,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAEjE;AAED,wBAAgB,cAAc,IAAI,MAAM,CAUvC;AAED,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAM9C;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CACrC,GAAG,EAAE,MAAM,GACV;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CA6BzC;AAED;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,EAAE,CAoBpF"}
package/dist/utils/fs.js CHANGED
@@ -40,4 +40,74 @@ export function listDirs(dir) {
40
40
  return statSync(full).isDirectory();
41
41
  });
42
42
  }
43
+ /**
44
+ * Extract ours/theirs sections from a file with git conflict markers.
45
+ * Handles standard format and diff3 format (with ||||||| base section).
46
+ * Returns null if no conflict markers found.
47
+ */
48
+ export function extractConflictSections(raw) {
49
+ const lines = raw.split('\n');
50
+ let state = 'before';
51
+ let hasConflict = false;
52
+ const oursLines = [];
53
+ const theirsLines = [];
54
+ for (const line of lines) {
55
+ if (line.startsWith('<<<<<<<')) {
56
+ hasConflict = true;
57
+ state = 'ours';
58
+ }
59
+ else if (line.startsWith('|||||||')) {
60
+ state = 'base'; // diff3 base section — skip
61
+ }
62
+ else if (line.startsWith('=======')) {
63
+ state = 'theirs';
64
+ }
65
+ else if (line.startsWith('>>>>>>>')) {
66
+ state = 'before'; // reset after conflict block
67
+ }
68
+ else {
69
+ if (state === 'ours')
70
+ oursLines.push(line);
71
+ else if (state === 'theirs')
72
+ theirsLines.push(line);
73
+ }
74
+ }
75
+ if (!hasConflict)
76
+ return null;
77
+ return {
78
+ ours: oursLines.join('\n').trim(),
79
+ theirs: theirsLines.join('\n').trim(),
80
+ };
81
+ }
82
+ /**
83
+ * Parse one side of a JSON merge-conflict section into a normalized array payload.
84
+ * Supports:
85
+ * - full arrays: `[{}, {}]`
86
+ * - single objects: `{}`
87
+ * - empty object / null / empty string => `[]`
88
+ * - array fragments extracted from inside a larger array: `{...}, {...}`
89
+ */
90
+ export function parseConflictJsonArray(raw) {
91
+ const trimmed = raw.trim();
92
+ if (!trimmed || trimmed === 'null' || trimmed === '{}')
93
+ return [];
94
+ try {
95
+ const parsed = JSON.parse(trimmed);
96
+ if (Array.isArray(parsed))
97
+ return parsed;
98
+ if (parsed && typeof parsed === 'object') {
99
+ return Object.keys(parsed).length === 0 ? [] : [parsed];
100
+ }
101
+ }
102
+ catch {
103
+ // Fall through to fragment parsing.
104
+ }
105
+ try {
106
+ const parsed = JSON.parse(`[${trimmed}]`);
107
+ return Array.isArray(parsed) ? parsed : [];
108
+ }
109
+ catch {
110
+ return [];
111
+ }
112
+ }
43
113
  //# sourceMappingURL=fs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"fs.js","sourceRoot":"","sources":["../../src/utils/fs.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,SAAS,EACT,YAAY,EACZ,aAAa,EACb,WAAW,EACX,QAAQ,GACT,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAE9C,MAAM,UAAU,SAAS,CAAC,GAAW;IACnC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACrB,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACtC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,QAAQ,CAAc,QAAgB;IACpD,MAAM,OAAO,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAChD,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAM,CAAC;AAClC,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,QAAgB,EAAE,IAAa;IACvD,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,OAAO,CAAC,CAAC;AACzE,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,QAAgB;IACzC,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC;AAC9B,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,QAAgB;IACvC,OAAO,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,QAAgB,EAAE,OAAe;IACzD,aAAa,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,cAAc;IAC5B,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,QAAQ,CAClB,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,cAAc,CAAC,CACvC,CAAC;QACF,IAAI,GAAG,CAAC,IAAI;YAAE,OAAO,GAAG,CAAC,IAAI,CAAC;IAChC,CAAC;IAAC,MAAM,CAAC;QACP,qBAAqB;IACvB,CAAC;IACD,OAAO,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;AACjC,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,GAAW;IAClC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,EAAE,CAAC;IAChC,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;QACtC,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAChC,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;IACtC,CAAC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"fs.js","sourceRoot":"","sources":["../../src/utils/fs.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,13 @@
1
+ export declare function isGitRepo(): boolean;
2
+ export declare function isSvnRepo(): boolean;
3
+ /**
4
+ * Get the current branch / working copy name.
5
+ * Priority: git → svn → AIDA_BRANCH env → "main"
6
+ */
1
7
  export declare function getBranchName(): string;
8
+ /**
9
+ * Get the current developer name.
10
+ * Priority: git config user.name → svn Last Changed Author → AIDA_DEV env → OS username
11
+ */
2
12
  export declare function getDevName(): string;
3
- export declare function isGitRepo(): boolean;
4
13
  //# sourceMappingURL=git.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"git.d.ts","sourceRoot":"","sources":["../../src/utils/git.ts"],"names":[],"mappings":"AAEA,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAED,wBAAgB,UAAU,IAAI,MAAM,CAGnC;AAED,wBAAgB,SAAS,IAAI,OAAO,CAOnC"}
1
+ {"version":3,"file":"git.d.ts","sourceRoot":"","sources":["../../src/utils/git.ts"],"names":[],"mappings":"AAKA,wBAAgB,SAAS,IAAI,OAAO,CAOnC;AAID,wBAAgB,SAAS,IAAI,OAAO,CAOnC;AAsBD;;;GAGG;AACH,wBAAgB,aAAa,IAAI,MAAM,CAWtC;AAED;;;GAGG;AACH,wBAAgB,UAAU,IAAI,MAAM,CAiBnC"}
package/dist/utils/git.js CHANGED
@@ -1,18 +1,86 @@
1
1
  import { execSync } from 'node:child_process';
2
- export function getBranchName() {
3
- return execSync('git branch --show-current', { encoding: 'utf-8' }).trim();
4
- }
5
- export function getDevName() {
6
- const name = execSync('git config user.name', { encoding: 'utf-8' }).trim();
7
- return name.toLowerCase().replace(/\s+/g, '-');
8
- }
2
+ import { userInfo } from 'node:os';
3
+ // ─── Git ─────────────────────────────────────────────────
9
4
  export function isGitRepo() {
10
5
  try {
11
- execSync('git rev-parse --is-inside-work-tree', { encoding: 'utf-8' });
6
+ execSync('git rev-parse --is-inside-work-tree', { encoding: 'utf-8', stdio: 'pipe' });
12
7
  return true;
13
8
  }
14
9
  catch {
15
10
  return false;
16
11
  }
17
12
  }
13
+ // ─── SVN ─────────────────────────────────────────────────
14
+ export function isSvnRepo() {
15
+ try {
16
+ execSync('svn info', { encoding: 'utf-8', stdio: 'pipe' });
17
+ return true;
18
+ }
19
+ catch {
20
+ return false;
21
+ }
22
+ }
23
+ function getSvnBranchName() {
24
+ try {
25
+ const info = execSync('svn info', { encoding: 'utf-8', stdio: 'pipe' });
26
+ const urlMatch = info.match(/^URL:\s*(.+)$/m);
27
+ if (urlMatch) {
28
+ const url = urlMatch[1].trim();
29
+ // branches/feature-x → feature-x
30
+ const branchMatch = url.match(/\/branches\/([^/]+)/);
31
+ if (branchMatch)
32
+ return branchMatch[1];
33
+ // trunk → trunk
34
+ if (/\/trunk(\/|$)/.test(url))
35
+ return 'trunk';
36
+ // fall back to last path segment
37
+ return url.split('/').filter(Boolean).pop() || 'main';
38
+ }
39
+ }
40
+ catch { /* ignore */ }
41
+ return 'main';
42
+ }
43
+ // ─── VCS-agnostic ────────────────────────────────────────
44
+ /**
45
+ * Get the current branch / working copy name.
46
+ * Priority: git → svn → AIDA_BRANCH env → "main"
47
+ */
48
+ export function getBranchName() {
49
+ try {
50
+ const name = execSync('git branch --show-current', { encoding: 'utf-8', stdio: 'pipe' }).trim();
51
+ if (name)
52
+ return name;
53
+ }
54
+ catch { /* fall through */ }
55
+ try {
56
+ if (isSvnRepo())
57
+ return getSvnBranchName();
58
+ }
59
+ catch { /* fall through */ }
60
+ return process.env.AIDA_BRANCH || 'main';
61
+ }
62
+ /**
63
+ * Get the current developer name.
64
+ * Priority: git config user.name → svn Last Changed Author → AIDA_DEV env → OS username
65
+ */
66
+ export function getDevName() {
67
+ try {
68
+ const name = execSync('git config user.name', { encoding: 'utf-8', stdio: 'pipe' }).trim();
69
+ if (name)
70
+ return name.toLowerCase().replace(/\s+/g, '-');
71
+ }
72
+ catch { /* fall through */ }
73
+ try {
74
+ const info = execSync('svn info', { encoding: 'utf-8', stdio: 'pipe' });
75
+ const authorMatch = info.match(/^Last Changed Author:\s*(.+)$/m);
76
+ if (authorMatch) {
77
+ const name = authorMatch[1].trim();
78
+ if (name)
79
+ return name.toLowerCase().replace(/\s+/g, '-');
80
+ }
81
+ }
82
+ catch { /* fall through */ }
83
+ const osUser = process.env.AIDA_DEV || userInfo().username;
84
+ return osUser.toLowerCase().replace(/\s+/g, '-');
85
+ }
18
86
  //# sourceMappingURL=git.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"git.js","sourceRoot":"","sources":["../../src/utils/git.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAE9C,MAAM,UAAU,aAAa;IAC3B,OAAO,QAAQ,CAAC,2BAA2B,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;AAC7E,CAAC;AAED,MAAM,UAAU,UAAU;IACxB,MAAM,IAAI,GAAG,QAAQ,CAAC,sBAAsB,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAC5E,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AACjD,CAAC;AAED,MAAM,UAAU,SAAS;IACvB,IAAI,CAAC;QACH,QAAQ,CAAC,qCAAqC,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;QACvE,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"git.js","sourceRoot":"","sources":["../../src/utils/git.ts"],"names":[],"mappings":"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"}
@@ -2,17 +2,34 @@
2
2
  * AIDA Guide — ensures data collection and rule sedimentation guidance
3
3
  * is written to AI tool instruction files.
4
4
  *
5
- * Single source of truth: .aidevos/aida-guide.md
6
- * References: CLAUDE.md (Claude Code) / .cursor/rules/ (Cursor)
5
+ * Single source of truth: .aida/aida-guide.md
6
+ * References: CLAUDE.md (Claude Code) / AGENTS.md (Codex) / .cursor/rules/ (Cursor)
7
7
  */
8
8
  export declare function guidePath(projectRoot: string): string;
9
9
  /**
10
- * Write .aidevos/aida-guide.md if it doesn't exist.
10
+ * Write .aida/aida-guide.md if it doesn't exist.
11
11
  */
12
12
  export declare function ensureGuide(projectRoot: string): void;
13
13
  /**
14
- * Add guide reference to AI tool instruction files.
14
+ * Always overwrite .aida/aida-guide.md with the latest template content.
15
+ * Called by `aida rules build` to keep the guide in sync with the package version.
16
+ */
17
+ export declare function updateGuide(projectRoot: string): void;
18
+ /**
19
+ * Add guide reference to AI tool instruction files (create-if-not-exists).
15
20
  * Called by init (with explicit tool list) or ensureRunJson (auto-detect).
16
21
  */
17
22
  export declare function syncGuideReference(projectRoot: string, tools?: string[]): void;
23
+ /**
24
+ * Update guide content in all detected AI tool instruction files with latest template.
25
+ * Called by `aida rules build` — always overwrites so content stays in sync.
26
+ */
27
+ export declare function updateGuideReferences(projectRoot: string, tools?: string[]): void;
28
+ /**
29
+ * Ensure the AIDA guide reference sits near the top of CLAUDE.md with up-to-date content.
30
+ * Moves the section if it's buried lower in the file, and updates stale content.
31
+ * Called by `aida rules build` so the AI always encounters it first.
32
+ */
33
+ export declare function ensureGuideAtTop(projectRoot: string): void;
34
+ export declare function ensureCodexGuideAtTop(projectRoot: string): void;
18
35
  //# sourceMappingURL=guide.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"guide.d.ts","sourceRoot":"","sources":["../../src/utils/guide.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAwIH,wBAAgB,SAAS,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAErD;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAKrD;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAe9E"}
1
+ {"version":3,"file":"guide.d.ts","sourceRoot":"","sources":["../../src/utils/guide.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AA0JH,wBAAgB,SAAS,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAErD;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAKrD;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAGrD;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAkB9E;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAwBjF;AAmCD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAqC1D;AAED,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAgC/D"}