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
@@ -2,12 +2,12 @@
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
  import { resolve } from 'node:path';
9
9
  import { fileExists, readText, writeText, ensureDir } from './fs.js';
10
- import { aidevosDir } from './paths.js';
10
+ import { aidaDir } from './paths.js';
11
11
  // ─── Guide Content ──────────────────────────────────────
12
12
  const GUIDE_FILENAME = 'aida-guide.md';
13
13
  const GUIDE_CONTENT = `# AIDA 数据采集与规则沉淀指南
@@ -17,9 +17,16 @@ const GUIDE_CONTENT = `# AIDA 数据采集与规则沉淀指南
17
17
 
18
18
  ## 零、强制前置动作(严禁跳过)
19
19
 
20
- **⚠️ 严禁跳过:每次开始任务前,必须通过 Read 工具读取本文件(\`.aidevos/aida-guide.md\`)的完整内容,并按下方规定的流程执行数据采集(\`aida_task_start\` → \`aida_log_files\` → \`aida_log_review\` → \`aida_task_done\`)。不得以任何理由跳过此流程。**
20
+ **⚠️ 你正在读取本文件(aida-guide.md)。这是强制规范,严禁跳过任何步骤。**
21
21
 
22
- 如果存在 \`.aidevos/rules/_all.md\`,同样必须在开始开发前读取,了解已沉淀的项目规则。
22
+ **开始任何开发任务前,必须按顺序完成以下两步:**
23
+
24
+ 1. **读取项目规则** → 使用 Read 工具读取 \`.aida/rules/_all.md\`,了解已沉淀的项目规则并严格遵守(文件不存在则跳过此步)
25
+ 2. **执行数据采集流程** → 严格按照第一节规定的顺序调用 MCP 工具:\`aida_task_start\` → \`aida_log_files\` → \`aida_log_review\` → \`aida_task_done\`
26
+
27
+ 不得以任何理由跳过上述步骤。
28
+
29
+ **当用户直接口述要沉淀某条项目级技术规范,或你识别到 \`rule-missing\` 类型偏差需要沉淀规则时,不要只修改本地说明文件,必须通过 AIDA MCP 的 \`aida_log_rule\` 工具写入 \`.aida/rules.json\`。**
23
30
 
24
31
  ## 一、数据采集
25
32
 
@@ -93,6 +100,14 @@ category 可选值:
93
100
  - category: 分类(可选值:component, api, style, i18n, architecture, state-management, routing, testing, process, general)
94
101
  - sourceDeviation: 关联的偏差 ID(如 DEV-01)
95
102
 
103
+ ### 用户直接口述规则
104
+
105
+ 如果用户明确口述一条应长期生效的项目级技术规范,也应按同样原则处理:
106
+ 1. 判断它是否属于项目级技术规范,而不是业务逻辑
107
+ 2. 如有歧义先确认
108
+ 3. 确认后调用 \`aida_log_rule\` 写入 \`.aida/rules.json\`
109
+ 4. 不要只把它写进某个 AI 工具自己的本地规则文件
110
+
96
111
  ### 阶段性回顾
97
112
 
98
113
  完成一轮开发(多个任务完成)后:
@@ -101,16 +116,18 @@ category 可选值:
101
116
  3. 如果有,汇总这些偏差模式并询问用户是否需要批量沉淀
102
117
  `;
103
118
  // ─── CLAUDE.md reference ────────────────────────────────
104
- const CLAUDE_MARKER = '.aidevos/aida-guide.md';
119
+ const CLAUDE_MARKER = '.aida/aida-guide.md';
105
120
  const CLAUDE_REFERENCE = `
106
-
107
121
  ## AIDA
108
122
 
109
- 本项目使用 AIDA 进行开发数据采集与规则沉淀。
110
-
111
- **⚠️ 严禁跳过:每次开始任务前,必须通过 Read 工具读取 \`.aidevos/aida-guide.md\` 的完整内容,并按其中规定的流程执行数据采集(\`aida_task_start\` → \`aida_log_files\` → \`aida_log_review\` → \`aida_task_done\`)。不得以任何理由跳过此流程。**
123
+ **⚠️ 严禁跳过:开始任何开发任务前,必须通过 Read 工具读取 \`.aida/aida-guide.md\` 的完整内容,并严格按照其中的规范执行。不得以任何理由跳过。**
124
+ **当用户直接要求沉淀规则,或你识别到需要沉淀项目级技术规范时,必须使用 AIDA MCP 的 \`aida_log_rule\` 工具写入 \`.aida/rules.json\`,不要只修改本地规则说明文件。**
125
+ `;
126
+ const CODEX_REFERENCE = `
127
+ ## AIDA
112
128
 
113
- 如果存在 \`.aidevos/rules/_all.md\`,同样必须在开始开发前读取,了解已沉淀的项目规则。
129
+ **⚠️ 严禁跳过:开始任何开发任务前,必须先读取 \`.aida/aida-guide.md\`,并严格执行其中的数据采集与规则沉淀规范。**
130
+ **当用户直接要求沉淀规则,或你识别到需要沉淀项目级技术规范时,必须调用 \`aida_log_rule\` 写入 \`.aida/rules.json\`,不要只修改 AGENTS 或其他本地说明文件。**
114
131
  `;
115
132
  // ─── Cursor rule frontmatter ────────────────────────────
116
133
  const CURSOR_FRONTMATTER = `---
@@ -128,20 +145,28 @@ globs: ['**/*']
128
145
  `;
129
146
  // ─── Public API ─────────────────────────────────────────
130
147
  export function guidePath(projectRoot) {
131
- return resolve(aidevosDir(projectRoot), GUIDE_FILENAME);
148
+ return resolve(aidaDir(projectRoot), GUIDE_FILENAME);
132
149
  }
133
150
  /**
134
- * Write .aidevos/aida-guide.md if it doesn't exist.
151
+ * Write .aida/aida-guide.md if it doesn't exist.
135
152
  */
136
153
  export function ensureGuide(projectRoot) {
137
154
  const p = guidePath(projectRoot);
138
155
  if (fileExists(p))
139
156
  return;
140
- ensureDir(aidevosDir(projectRoot));
157
+ ensureDir(aidaDir(projectRoot));
141
158
  writeText(p, GUIDE_CONTENT);
142
159
  }
143
160
  /**
144
- * Add guide reference to AI tool instruction files.
161
+ * Always overwrite .aida/aida-guide.md with the latest template content.
162
+ * Called by `aida rules build` to keep the guide in sync with the package version.
163
+ */
164
+ export function updateGuide(projectRoot) {
165
+ ensureDir(aidaDir(projectRoot));
166
+ writeText(guidePath(projectRoot), GUIDE_CONTENT);
167
+ }
168
+ /**
169
+ * Add guide reference to AI tool instruction files (create-if-not-exists).
145
170
  * Called by init (with explicit tool list) or ensureRunJson (auto-detect).
146
171
  */
147
172
  export function syncGuideReference(projectRoot, tools) {
@@ -154,12 +179,44 @@ export function syncGuideReference(projectRoot, tools) {
154
179
  case 'cursor':
155
180
  addCursorReference(projectRoot);
156
181
  break;
182
+ case 'codex':
183
+ addCodexReference(projectRoot);
184
+ break;
157
185
  case 'lingma':
158
186
  addLingmaReference(projectRoot);
159
187
  break;
160
188
  }
161
189
  }
162
190
  }
191
+ /**
192
+ * Update guide content in all detected AI tool instruction files with latest template.
193
+ * Called by `aida rules build` — always overwrites so content stays in sync.
194
+ */
195
+ export function updateGuideReferences(projectRoot, tools) {
196
+ const detected = tools || detectAiTools(projectRoot);
197
+ for (const tool of detected) {
198
+ switch (tool) {
199
+ case 'claude-code':
200
+ ensureGuideAtTop(projectRoot);
201
+ break;
202
+ case 'cursor': {
203
+ const rulesDir = resolve(projectRoot, '.cursor', 'rules', 'aidevos');
204
+ ensureDir(rulesDir);
205
+ writeText(resolve(rulesDir, 'aida-guide.md'), CURSOR_FRONTMATTER + GUIDE_CONTENT);
206
+ break;
207
+ }
208
+ case 'codex':
209
+ ensureCodexGuideAtTop(projectRoot);
210
+ break;
211
+ case 'lingma': {
212
+ const rulesDir = resolve(projectRoot, '.lingma', 'rules');
213
+ ensureDir(rulesDir);
214
+ writeText(resolve(rulesDir, 'aida-guide.md'), LINGMA_FRONTMATTER + GUIDE_CONTENT);
215
+ break;
216
+ }
217
+ }
218
+ }
219
+ }
163
220
  // ─── Internal ───────────────────────────────────────────
164
221
  function detectAiTools(projectRoot) {
165
222
  const tools = [];
@@ -167,6 +224,8 @@ function detectAiTools(projectRoot) {
167
224
  tools.push('claude-code');
168
225
  if (fileExists(resolve(projectRoot, '.cursor', 'mcp.json')))
169
226
  tools.push('cursor');
227
+ if (fileExists(resolve(projectRoot, 'AGENTS.md')))
228
+ tools.push('codex');
170
229
  if (fileExists(resolve(projectRoot, '.lingma', 'mcp.json')))
171
230
  tools.push('lingma');
172
231
  return tools;
@@ -177,12 +236,105 @@ function addClaudeReference(projectRoot) {
177
236
  const content = readText(file);
178
237
  if (content.includes(CLAUDE_MARKER))
179
238
  return;
180
- writeText(file, content + CLAUDE_REFERENCE);
239
+ writeText(file, insertAtTop(content, CLAUDE_REFERENCE.trimStart()));
181
240
  }
182
241
  else {
183
242
  writeText(file, CLAUDE_REFERENCE.trim() + '\n');
184
243
  }
185
244
  }
245
+ function addCodexReference(projectRoot) {
246
+ const file = resolve(projectRoot, 'AGENTS.md');
247
+ if (fileExists(file)) {
248
+ const content = readText(file);
249
+ if (content.includes(CLAUDE_MARKER))
250
+ return;
251
+ writeText(file, insertAtTop(content, CODEX_REFERENCE.trimStart()));
252
+ }
253
+ else {
254
+ writeText(file, CODEX_REFERENCE.trim() + '\n');
255
+ }
256
+ }
257
+ /**
258
+ * Ensure the AIDA guide reference sits near the top of CLAUDE.md with up-to-date content.
259
+ * Moves the section if it's buried lower in the file, and updates stale content.
260
+ * Called by `aida rules build` so the AI always encounters it first.
261
+ */
262
+ export function ensureGuideAtTop(projectRoot) {
263
+ if (!detectAiTools(projectRoot).includes('claude-code'))
264
+ return;
265
+ const file = resolve(projectRoot, 'CLAUDE.md');
266
+ if (!fileExists(file))
267
+ return;
268
+ const content = readText(file);
269
+ const newSection = CLAUDE_REFERENCE.trimStart();
270
+ // Not present yet — insert at top
271
+ if (!content.includes(CLAUDE_MARKER)) {
272
+ writeText(file, insertAtTop(content, newSection));
273
+ return;
274
+ }
275
+ // Find the existing ## AIDA section boundaries
276
+ const aidaStart = content.indexOf('\n## AIDA\n');
277
+ if (aidaStart === -1)
278
+ return;
279
+ const afterAida = content.indexOf('\n## ', aidaStart + 5);
280
+ const aidaEnd = afterAida !== -1 ? afterAida : content.length;
281
+ // Check if already in the first 10 lines
282
+ const lines = content.split('\n');
283
+ const markerLine = lines.findIndex((l) => l.includes(CLAUDE_MARKER));
284
+ if (markerLine >= 0 && markerLine <= 10) {
285
+ // At top already — just update the content in place
286
+ const before = content.slice(0, aidaStart);
287
+ const after = content.slice(aidaEnd);
288
+ writeText(file, (before + '\n' + newSection + after).replace(/\n{3,}/g, '\n\n'));
289
+ return;
290
+ }
291
+ // Buried — remove from current position and re-insert at top with latest content
292
+ const without = (content.slice(0, aidaStart) + content.slice(aidaEnd))
293
+ .replace(/\n{3,}/g, '\n\n')
294
+ .trim();
295
+ writeText(file, insertAtTop(without, newSection) + '\n');
296
+ }
297
+ export function ensureCodexGuideAtTop(projectRoot) {
298
+ if (!detectAiTools(projectRoot).includes('codex'))
299
+ return;
300
+ const file = resolve(projectRoot, 'AGENTS.md');
301
+ if (!fileExists(file))
302
+ return;
303
+ const content = readText(file);
304
+ const newSection = CODEX_REFERENCE.trimStart();
305
+ if (!content.includes(CLAUDE_MARKER)) {
306
+ writeText(file, insertAtTop(content, newSection));
307
+ return;
308
+ }
309
+ const aidaStart = content.indexOf('\n## AIDA\n');
310
+ if (aidaStart === -1)
311
+ return;
312
+ const afterAida = content.indexOf('\n## ', aidaStart + 5);
313
+ const aidaEnd = afterAida !== -1 ? afterAida : content.length;
314
+ const lines = content.split('\n');
315
+ const markerLine = lines.findIndex((l) => l.includes(CLAUDE_MARKER));
316
+ if (markerLine >= 0 && markerLine <= 10) {
317
+ const before = content.slice(0, aidaStart);
318
+ const after = content.slice(aidaEnd);
319
+ writeText(file, (before + '\n' + newSection + after).replace(/\n{3,}/g, '\n\n'));
320
+ return;
321
+ }
322
+ const without = (content.slice(0, aidaStart) + content.slice(aidaEnd))
323
+ .replace(/\n{3,}/g, '\n\n')
324
+ .trim();
325
+ writeText(file, insertAtTop(without, newSection) + '\n');
326
+ }
327
+ /** Insert a block right after the first heading line of a file. */
328
+ function insertAtTop(content, block) {
329
+ const trimmedBlock = block.trim();
330
+ const firstNewline = content.indexOf('\n');
331
+ if (firstNewline !== -1 && content.trimStart().startsWith('#')) {
332
+ const head = content.slice(0, firstNewline + 1);
333
+ const rest = content.slice(firstNewline + 1).replace(/^\n+/, '');
334
+ return head + '\n' + trimmedBlock + '\n\n' + rest;
335
+ }
336
+ return trimmedBlock + '\n\n' + content;
337
+ }
186
338
  function addCursorReference(projectRoot) {
187
339
  const rulesDir = resolve(projectRoot, '.cursor', 'rules', 'aidevos');
188
340
  ensureDir(rulesDir);
@@ -1 +1 @@
1
- {"version":3,"file":"guide.js","sourceRoot":"","sources":["../../src/utils/guide.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"guide.js","sourceRoot":"","sources":["../../src/utils/guide.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACrE,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAErC,2DAA2D;AAE3D,MAAM,cAAc,GAAG,eAAe,CAAC;AAEvC,MAAM,aAAa,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwGrB,CAAC;AAEF,2DAA2D;AAE3D,MAAM,aAAa,GAAG,qBAAqB,CAAC;AAE5C,MAAM,gBAAgB,GAAG;;;;;CAKxB,CAAC;AAEF,MAAM,eAAe,GAAG;;;;;CAKvB,CAAC;AAEF,2DAA2D;AAE3D,MAAM,kBAAkB,GAAG;;;;;CAK1B,CAAC;AAEF,yDAAyD;AAEzD,MAAM,kBAAkB,GAAG;;;;;CAK1B,CAAC;AAEF,2DAA2D;AAE3D,MAAM,UAAU,SAAS,CAAC,WAAmB;IAC3C,OAAO,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,cAAc,CAAC,CAAC;AACvD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,WAAmB;IAC7C,MAAM,CAAC,GAAG,SAAS,CAAC,WAAW,CAAC,CAAC;IACjC,IAAI,UAAU,CAAC,CAAC,CAAC;QAAE,OAAO;IAC1B,SAAS,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC;IAChC,SAAS,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC;AAC9B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,WAAmB;IAC7C,SAAS,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC;IAChC,SAAS,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,aAAa,CAAC,CAAC;AACnD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAC,WAAmB,EAAE,KAAgB;IACtE,MAAM,QAAQ,GAAG,KAAK,IAAI,aAAa,CAAC,WAAW,CAAC,CAAC;IACrD,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;QAC5B,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,aAAa;gBAChB,kBAAkB,CAAC,WAAW,CAAC,CAAC;gBAChC,MAAM;YACR,KAAK,QAAQ;gBACX,kBAAkB,CAAC,WAAW,CAAC,CAAC;gBAChC,MAAM;YACR,KAAK,OAAO;gBACV,iBAAiB,CAAC,WAAW,CAAC,CAAC;gBAC/B,MAAM;YACR,KAAK,QAAQ;gBACX,kBAAkB,CAAC,WAAW,CAAC,CAAC;gBAChC,MAAM;QACV,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CAAC,WAAmB,EAAE,KAAgB;IACzE,MAAM,QAAQ,GAAG,KAAK,IAAI,aAAa,CAAC,WAAW,CAAC,CAAC;IACrD,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;QAC5B,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,aAAa;gBAChB,gBAAgB,CAAC,WAAW,CAAC,CAAC;gBAC9B,MAAM;YACR,KAAK,QAAQ,CAAC,CAAC,CAAC;gBACd,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;gBACrE,SAAS,CAAC,QAAQ,CAAC,CAAC;gBACpB,SAAS,CAAC,OAAO,CAAC,QAAQ,EAAE,eAAe,CAAC,EAAE,kBAAkB,GAAG,aAAa,CAAC,CAAC;gBAClF,MAAM;YACR,CAAC;YACD,KAAK,OAAO;gBACV,qBAAqB,CAAC,WAAW,CAAC,CAAC;gBACnC,MAAM;YACR,KAAK,QAAQ,CAAC,CAAC,CAAC;gBACd,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;gBAC1D,SAAS,CAAC,QAAQ,CAAC,CAAC;gBACpB,SAAS,CAAC,OAAO,CAAC,QAAQ,EAAE,eAAe,CAAC,EAAE,kBAAkB,GAAG,aAAa,CAAC,CAAC;gBAClF,MAAM;YACR,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC;AAED,2DAA2D;AAE3D,SAAS,aAAa,CAAC,WAAmB;IACxC,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,UAAU,CAAC,OAAO,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAC7E,IAAI,UAAU,CAAC,OAAO,CAAC,WAAW,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAClF,IAAI,UAAU,CAAC,OAAO,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACvE,IAAI,UAAU,CAAC,OAAO,CAAC,WAAW,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAClF,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,kBAAkB,CAAC,WAAmB;IAC7C,MAAM,IAAI,GAAG,OAAO,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;IAC/C,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACrB,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC/B,IAAI,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC;YAAE,OAAO;QAC5C,SAAS,CAAC,IAAI,EAAE,WAAW,CAAC,OAAO,EAAE,gBAAgB,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;IACtE,CAAC;SAAM,CAAC;QACN,SAAS,CAAC,IAAI,EAAE,gBAAgB,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC;IAClD,CAAC;AACH,CAAC;AAED,SAAS,iBAAiB,CAAC,WAAmB;IAC5C,MAAM,IAAI,GAAG,OAAO,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;IAC/C,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACrB,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC/B,IAAI,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC;YAAE,OAAO;QAC5C,SAAS,CAAC,IAAI,EAAE,WAAW,CAAC,OAAO,EAAE,eAAe,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;IACrE,CAAC;SAAM,CAAC;QACN,SAAS,CAAC,IAAI,EAAE,eAAe,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC;IACjD,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,WAAmB;IAClD,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC;QAAE,OAAO;IAEhE,MAAM,IAAI,GAAG,OAAO,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;IAC/C,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO;IAE9B,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC/B,MAAM,UAAU,GAAG,gBAAgB,CAAC,SAAS,EAAE,CAAC;IAEhD,kCAAkC;IAClC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;QACrC,SAAS,CAAC,IAAI,EAAE,WAAW,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC;QAClD,OAAO;IACT,CAAC;IAED,+CAA+C;IAC/C,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;IACjD,IAAI,SAAS,KAAK,CAAC,CAAC;QAAE,OAAO;IAC7B,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,SAAS,GAAG,CAAC,CAAC,CAAC;IAC1D,MAAM,OAAO,GAAG,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;IAE9D,yCAAyC;IACzC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAClC,MAAM,UAAU,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC;IACrE,IAAI,UAAU,IAAI,CAAC,IAAI,UAAU,IAAI,EAAE,EAAE,CAAC;QACxC,oDAAoD;QACpD,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;QAC3C,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACrC,SAAS,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,IAAI,GAAG,UAAU,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC;QACjF,OAAO;IACT,CAAC;IAED,iFAAiF;IACjF,MAAM,OAAO,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;SACnE,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC;SAC1B,IAAI,EAAE,CAAC;IACV,SAAS,CAAC,IAAI,EAAE,WAAW,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,IAAI,CAAC,CAAC;AAC3D,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,WAAmB;IACvD,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;QAAE,OAAO;IAE1D,MAAM,IAAI,GAAG,OAAO,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;IAC/C,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO;IAE9B,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC/B,MAAM,UAAU,GAAG,eAAe,CAAC,SAAS,EAAE,CAAC;IAE/C,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;QACrC,SAAS,CAAC,IAAI,EAAE,WAAW,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC;QAClD,OAAO;IACT,CAAC;IAED,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;IACjD,IAAI,SAAS,KAAK,CAAC,CAAC;QAAE,OAAO;IAC7B,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,SAAS,GAAG,CAAC,CAAC,CAAC;IAC1D,MAAM,OAAO,GAAG,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;IAE9D,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAClC,MAAM,UAAU,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC;IACrE,IAAI,UAAU,IAAI,CAAC,IAAI,UAAU,IAAI,EAAE,EAAE,CAAC;QACxC,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;QAC3C,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACrC,SAAS,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,IAAI,GAAG,UAAU,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC;QACjF,OAAO;IACT,CAAC;IAED,MAAM,OAAO,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;SACnE,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC;SAC1B,IAAI,EAAE,CAAC;IACV,SAAS,CAAC,IAAI,EAAE,WAAW,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,IAAI,CAAC,CAAC;AAC3D,CAAC;AAED,mEAAmE;AACnE,SAAS,WAAW,CAAC,OAAe,EAAE,KAAa;IACjD,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAClC,MAAM,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3C,IAAI,YAAY,KAAK,CAAC,CAAC,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC/D,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,YAAY,GAAG,CAAC,CAAC,CAAC;QAChD,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QACjE,OAAO,IAAI,GAAG,IAAI,GAAG,YAAY,GAAG,MAAM,GAAG,IAAI,CAAC;IACpD,CAAC;IACD,OAAO,YAAY,GAAG,MAAM,GAAG,OAAO,CAAC;AACzC,CAAC;AAED,SAAS,kBAAkB,CAAC,WAAmB;IAC7C,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;IACrE,SAAS,CAAC,QAAQ,CAAC,CAAC;IACpB,MAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC;IAChD,IAAI,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO;IAC7B,SAAS,CAAC,IAAI,EAAE,kBAAkB,GAAG,aAAa,CAAC,CAAC;AACtD,CAAC;AAED,SAAS,kBAAkB,CAAC,WAAmB;IAC7C,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IAC1D,SAAS,CAAC,QAAQ,CAAC,CAAC;IACpB,MAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC;IAChD,IAAI,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO;IAC7B,SAAS,CAAC,IAAI,EAAE,kBAAkB,GAAG,aAAa,CAAC,CAAC;AACtD,CAAC"}
@@ -0,0 +1,27 @@
1
+ import { type AiToolChoice } from './ai-build.js';
2
+ interface ToolConfigSnapshot {
3
+ tool: AiToolChoice;
4
+ path: string;
5
+ format: 'json' | 'toml' | 'text';
6
+ content: unknown;
7
+ }
8
+ export declare function detectImportableTools(projectRoot: string, tools: AiToolChoice[]): AiToolChoice[];
9
+ export declare function importFromTool(projectRoot: string, tool: AiToolChoice): {
10
+ rulesImported: number;
11
+ skillsImported: number;
12
+ };
13
+ export declare function importExistingToolConfigs(projectRoot: string): {
14
+ tools: AiToolChoice[];
15
+ snapshots: ToolConfigSnapshot[];
16
+ snapshotPath: string;
17
+ };
18
+ export declare function mergeConfiguredTools(projectRoot: string, tools: AiToolChoice[]): AiToolChoice[];
19
+ export declare function importProjectSources(projectRoot: string): {
20
+ rulesImported: number;
21
+ skillsImported: number;
22
+ tools: AiToolChoice[];
23
+ snapshotPath: string;
24
+ gitignoreAdded: string[];
25
+ };
26
+ export {};
27
+ //# sourceMappingURL=import.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"import.d.ts","sourceRoot":"","sources":["../../src/utils/import.ts"],"names":[],"mappings":"AAKA,OAAO,EAAwB,KAAK,YAAY,EAAE,MAAM,eAAe,CAAC;AAUxE,UAAU,kBAAkB;IAC1B,IAAI,EAAE,YAAY,CAAA;IAClB,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAA;IAChC,OAAO,EAAE,OAAO,CAAA;CACjB;AAgKD,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,GAAG,YAAY,EAAE,CAuBhG;AAED,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,GAAG;IACvE,aAAa,EAAE,MAAM,CAAA;IACrB,cAAc,EAAE,MAAM,CAAA;CACvB,CA4DA;AAcD,wBAAgB,yBAAyB,CAAC,WAAW,EAAE,MAAM,GAAG;IAC9D,KAAK,EAAE,YAAY,EAAE,CAAA;IACrB,SAAS,EAAE,kBAAkB,EAAE,CAAA;IAC/B,YAAY,EAAE,MAAM,CAAA;CACrB,CAmCA;AAED,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,GAAG,YAAY,EAAE,CAe/F;AAED,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG;IACzD,aAAa,EAAE,MAAM,CAAA;IACrB,cAAc,EAAE,MAAM,CAAA;IACtB,KAAK,EAAE,YAAY,EAAE,CAAA;IACrB,YAAY,EAAE,MAAM,CAAA;IACpB,cAAc,EAAE,MAAM,EAAE,CAAA;CACzB,CAcA"}
@@ -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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"}
@@ -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
- /** .aidevos directory in user's project */
12
- export declare function aidevosDir(projectRoot?: string): string;
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 */