ai-dev-analytics 1.0.4 → 1.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (99) hide show
  1. package/README.md +28 -17
  2. package/README.zh-CN.md +28 -17
  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 +46 -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 +62 -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 +110 -312
  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 +6 -0
  21. package/dist/cli/commands/migrate-dir.d.ts.map +1 -0
  22. package/dist/cli/commands/migrate-dir.js +98 -0
  23. package/dist/cli/commands/migrate-dir.js.map +1 -0
  24. package/dist/cli/commands/migrate-legacy.d.ts +2 -0
  25. package/dist/cli/commands/migrate-legacy.d.ts.map +1 -0
  26. package/dist/cli/commands/migrate-legacy.js +95 -0
  27. package/dist/cli/commands/migrate-legacy.js.map +1 -0
  28. package/dist/cli/commands/migrate.js +5 -5
  29. package/dist/cli/commands/migrate.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 +143 -38
  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.js +4 -4
  41. package/dist/cli/commands/start.js.map +1 -1
  42. package/dist/cli/commands/update.d.ts.map +1 -1
  43. package/dist/cli/commands/update.js +14 -7
  44. package/dist/cli/commands/update.js.map +1 -1
  45. package/dist/cli/index.js +36 -0
  46. package/dist/cli/index.js.map +1 -1
  47. package/dist/server/api.js +2 -2
  48. package/dist/server/api.js.map +1 -1
  49. package/dist/server/index.js +1 -1
  50. package/dist/server/index.js.map +1 -1
  51. package/dist/utils/ai-build.d.ts +19 -0
  52. package/dist/utils/ai-build.d.ts.map +1 -0
  53. package/dist/utils/ai-build.js +278 -0
  54. package/dist/utils/ai-build.js.map +1 -0
  55. package/dist/utils/fs.d.ts +9 -0
  56. package/dist/utils/fs.d.ts.map +1 -1
  57. package/dist/utils/fs.js +31 -0
  58. package/dist/utils/fs.js.map +1 -1
  59. package/dist/utils/guide.d.ts +5 -4
  60. package/dist/utils/guide.d.ts.map +1 -1
  61. package/dist/utils/guide.js +80 -13
  62. package/dist/utils/guide.js.map +1 -1
  63. package/dist/utils/import.d.ts +38 -0
  64. package/dist/utils/import.d.ts.map +1 -0
  65. package/dist/utils/import.js +308 -0
  66. package/dist/utils/import.js.map +1 -0
  67. package/dist/utils/paths.d.ts +2 -2
  68. package/dist/utils/paths.d.ts.map +1 -1
  69. package/dist/utils/paths.js +8 -8
  70. package/dist/utils/paths.js.map +1 -1
  71. package/dist/utils/prompt.d.ts +15 -0
  72. package/dist/utils/prompt.d.ts.map +1 -0
  73. package/dist/utils/prompt.js +193 -0
  74. package/dist/utils/prompt.js.map +1 -0
  75. package/dist/utils/rules.d.ts +6 -1
  76. package/dist/utils/rules.d.ts.map +1 -1
  77. package/dist/utils/rules.js +126 -6
  78. package/dist/utils/rules.js.map +1 -1
  79. package/dist/utils/run-data.d.ts +1 -1
  80. package/dist/utils/run-data.js +4 -4
  81. package/dist/utils/run-data.js.map +1 -1
  82. package/dist/utils/skills.d.ts +37 -0
  83. package/dist/utils/skills.d.ts.map +1 -0
  84. package/dist/utils/skills.js +228 -0
  85. package/dist/utils/skills.js.map +1 -0
  86. package/package.json +1 -1
  87. package/src/assets/skills/audit.md +6 -6
  88. package/src/assets/skills/bug-fixer.md +4 -4
  89. package/src/assets/skills/code-generator.md +4 -4
  90. package/src/assets/skills/dashboard-generator.md +2 -2
  91. package/src/assets/skills/dev-flower.md +3 -3
  92. package/src/assets/skills/deviation-recorder.md +7 -7
  93. package/src/assets/skills/mcp-reviewer.md +2 -2
  94. package/src/assets/skills/requirement-analyzer.md +4 -4
  95. package/src/assets/skills/rules-evolver.md +7 -7
  96. package/src/assets/skills/self-reviewer.md +4 -4
  97. package/src/assets/skills/task-splitter.md +5 -5
  98. package/src/assets/skills/workflow-orchestrator.md +11 -11
  99. package/src/assets/templates/demo-run.json +7 -7
package/README.md CHANGED
@@ -14,16 +14,16 @@ One line to integrate. Zero workflow changes.
14
14
  { "mcpServers": { "aida": { "command": "npx", "args": ["-y", "ai-dev-analytics", "mcp"] } } }
15
15
  ```
16
16
 
17
- [![npm version](https://img.shields.io/badge/npm-v1.0.0-0066ff)](https://www.npmjs.com/package/ai-dev-analytics)
17
+ [![npm version](https://img.shields.io/badge/npm-v1.1.1-0066ff)](https://www.npmjs.com/package/ai-dev-analytics)
18
18
  [![license](https://img.shields.io/github/license/LWTlong/ai-dev-analytics?color=%23333)](./LICENSE)
19
19
  [![node](https://img.shields.io/node/v/ai-dev-analytics?color=%23339933)](https://nodejs.org)
20
- [![tests](https://img.shields.io/badge/tests-82%20passed-brightgreen)](#testing)
20
+ [![tests](https://img.shields.io/badge/tests-passing-brightgreen)](#testing)
21
21
  [![Live Demo](https://img.shields.io/badge/🎯_Live_Demo-Interactive_Dashboard-FF4B4B)](https://lwtlong.github.io/ai-dev-analytics/)
22
22
  [![ai-dev-analytics MCP server](https://glama.ai/mcp/servers/LWTlong/ai-dev-analytics/badges/score.svg)](https://glama.ai/mcp/servers/LWTlong/ai-dev-analytics)
23
23
 
24
24
  [![ai-dev-analytics MCP server](https://glama.ai/mcp/servers/LWTlong/ai-dev-analytics/badges/card.svg)](https://glama.ai/mcp/servers/LWTlong/ai-dev-analytics)
25
25
 
26
- [One-Line Setup](#-30-second-setup) · [Data-Driven Loop](#-the-data-driven-loop) · [Dashboard](#-the-dashboard) · [SOP Workflow](#-standardized-ai-development-workflow) · [Data for Reports](#-data-sedimentation--performance-reports) · [中文文档](./README.zh-CN.md)
26
+ [One-Line Setup](#-30-second-setup) · [Data-Driven Loop](#-the-data-driven-loop) · [Dashboard](#-the-dashboard) · [SOP Workflow](#-standardized-ai-development-workflow) · [Data for Reports](#-data-sedimentation--performance-reports) · [Commands](./COMMANDS.md) · [Docs](./docs/INDEX.md) · [中文文档](./README.zh-CN.md)
27
27
 
28
28
  </div>
29
29
 
@@ -60,7 +60,7 @@ Vibe Coding Session
60
60
  "9 deviations → 56% hallucination, 44% rule-missing"
61
61
 
62
62
  Deviation patterns identified → AI suggests rules → user confirms → sedimented
63
- .aidevos/rules/ ← your AI's growing knowledge base
63
+ .aida/rules/ ← your AI's growing knowledge base
64
64
 
65
65
  AI reads rules next session → same mistakes eliminated
66
66
 
@@ -86,7 +86,7 @@ Vibe Coding Session
86
86
 
87
87
  ![Deviation & Rule Trend](https://raw.githubusercontent.com/LWTlong/ai-dev-analytics/main/docs/deviation-rule-trend.png)
88
88
 
89
- The `.aidevos/rules/` directory is your **project-specific AI knowledge base**. It grows with every run. The more you use AI, the smarter it gets at *your* project.
89
+ The `.aida/rules/` directory is your **project-specific AI knowledge base**. It grows with every run. The more you use AI, the smarter it gets at *your* project.
90
90
 
91
91
  ---
92
92
 
@@ -119,7 +119,15 @@ Run `npx ai-dev-analytics dashboard` to see **your own project's data** in secon
119
119
 
120
120
  ### 🔒 100% Local. Zero External Requests.
121
121
 
122
- AIDA writes JSON files to `.aidevos/` in your project directory. **The codebase contains zero HTTP calls to external services** — no telemetry, no cloud sync, no analytics, no tracking. Zero runtime dependencies. Your code and data never leave your machine. Period.
122
+ AIDA writes JSON files to `.aida/` in your project directory. **The codebase contains zero HTTP calls to external services** — no telemetry, no cloud sync, no analytics, no tracking. Zero runtime dependencies. Your code and data never leave your machine. Period.
123
+
124
+ ## Command Reference
125
+
126
+ Detailed CLI usage, command behavior, supported AI tools, merge/import/build flow, and migration notes are documented in [COMMANDS.md](./COMMANDS.md).
127
+
128
+ ## Documentation
129
+
130
+ For public documentation navigation, schema references, workflow notes, and dashboard-related docs, see [docs/INDEX.md](./docs/INDEX.md).
123
131
 
124
132
  ---
125
133
 
@@ -248,7 +256,7 @@ Quarter: Complete development record — exportable, analyzable, presentable
248
256
  | **Team Leader Report** | Per-developer stats, deviation hotspots, which modules need better rules, team-wide AI maturity |
249
257
  | **Project Handover** | Full development history — someone new can see exactly what happened, what rules exist, and why |
250
258
 
251
- All data is structured JSON in `.aidevos/`. No vendor lock-in. Export it, query it, pipe it into any reporting tool. Run `aida report` to generate a summary at any time.
259
+ All data is structured JSON in `.aida/`. No vendor lock-in. Export it, query it, pipe it into any reporting tool. Run `aida report` to generate a summary at any time.
252
260
 
253
261
  ---
254
262
 
@@ -257,9 +265,9 @@ All data is structured JSON in `.aidevos/`. No vendor lock-in. Export it, query
257
265
  ```mermaid
258
266
  flowchart LR
259
267
  A["Your AI Tool\nClaude Code / Cursor"] -->|Vibe Coding| B{"AIDA MCP Server\n10 Tools"}
260
- B -->|Silent Data Collection| C[".aidevos/run.json"]
268
+ B -->|Silent Data Collection| C[".aida/run.json"]
261
269
  C -->|Visualization| D["Dashboard\nlocalhost:2375"]
262
- C -->|Pattern Analysis| E[".aidevos/rules/"]
270
+ C -->|Pattern Analysis| E[".aida/rules/"]
263
271
  E -->|AI Reads Rules| A
264
272
  ```
265
273
 
@@ -289,10 +297,10 @@ All data is local JSON. No database, no cloud.
289
297
 
290
298
  | Level | File | What it contains |
291
299
  |-------|------|-----------------|
292
- | **Run** | `.aidevos/runs/{branch}/{dev}/run.json` | Every task, bug, deviation, review, file change |
293
- | **Branch** | `.aidevos/runs/{branch}/requirement.json` | Aggregated stats per requirement |
294
- | **Project** | `.aidevos/index.json` | Cross-branch overview for team leads |
295
- | **Rules** | `.aidevos/rules/` | Sedimented project rules — your AI's growing knowledge base |
300
+ | **Run** | `.aida/runs/{branch}/{dev}/run.json` | Every task, bug, deviation, review, file change |
301
+ | **Branch** | `.aida/runs/{branch}/requirement.json` | Aggregated stats per requirement |
302
+ | **Project** | `.aida/index.json` | Cross-branch overview for team leads |
303
+ | **Rules** | `.aida/rules/` | Sedimented project rules — your AI's growing knowledge base |
296
304
 
297
305
  All structured JSON — ready for export, analysis, or feeding into reports.
298
306
 
@@ -337,6 +345,7 @@ Every step produces structured data. Every deviation can become a rule. The SOP
337
345
 
338
346
  ```bash
339
347
  aida init # Interactive project setup
348
+ aida migrate-legacy # Upgrade legacy .aidevos project in one command
340
349
  aida start # Create a new development run
341
350
  aida status # Show current run status
342
351
  aida dashboard # Launch dashboard (default port 2375)
@@ -352,6 +361,8 @@ aida update # Update skills to latest version
352
361
  aida migrate # Migrate old data to current schema
353
362
  ```
354
363
 
364
+ `aida init` and `aida build` now use interactive multi-select prompts in TTY terminals, with automatic fallback to comma-separated numeric input in non-interactive environments.
365
+
355
366
  </details>
356
367
 
357
368
  <details>
@@ -380,16 +391,16 @@ Rules are the compounding asset of AIDA. Here's how they work in a team setting.
380
391
  ### Architecture
381
392
 
382
393
  ```
383
- .aidevos/rules.json ← source of truth, committed to git
394
+ .aida/rules.json ← source of truth, committed to git
384
395
 
385
396
  aida rules build
386
397
 
387
- .aidevos/rules/*.md ← auto-generated views, gitignored
398
+ .aida/rules/*.md ← auto-generated views, gitignored
388
399
 
389
400
  AI reads rules next session
390
401
  ```
391
402
 
392
- `aida init` automatically adds `.aidevos/rules/*.md` to your `.gitignore`. Never edit the `.md` files manually — they are always regenerated from `rules.json`.
403
+ `aida init` automatically adds `.aida/rules/*.md` to your `.gitignore`. Never edit the `.md` files manually — they are always regenerated from `rules.json`.
393
404
 
394
405
  ### Daily workflow
395
406
 
@@ -408,7 +419,7 @@ When two developers add rules on separate branches and merge, `rules.json` may g
408
419
  # After git merge produces a conflict in rules.json:
409
420
  aida rules merge # fingerprint union — no duplicates, no lost rules
410
421
  aida rules build # rebuild .md views
411
- git add .aidevos/rules.json
422
+ git add .aida/rules.json
412
423
  git commit -m "merge: resolve rules conflict"
413
424
  ```
414
425
 
package/README.zh-CN.md CHANGED
@@ -14,16 +14,16 @@
14
14
  { "mcpServers": { "aida": { "command": "npx", "args": ["-y", "ai-dev-analytics", "mcp"] } } }
15
15
  ```
16
16
 
17
- [![npm version](https://img.shields.io/badge/npm-v1.0.0-0066ff)](https://www.npmjs.com/package/ai-dev-analytics)
17
+ [![npm version](https://img.shields.io/badge/npm-v1.1.1-0066ff)](https://www.npmjs.com/package/ai-dev-analytics)
18
18
  [![license](https://img.shields.io/github/license/LWTlong/ai-dev-analytics?color=%23333)](./LICENSE)
19
19
  [![node](https://img.shields.io/node/v/ai-dev-analytics?color=%23339933)](https://nodejs.org)
20
- [![tests](https://img.shields.io/badge/tests-82%20passed-brightgreen)](#测试)
20
+ [![tests](https://img.shields.io/badge/tests-passing-brightgreen)](#测试)
21
21
  [![在线 Demo](https://img.shields.io/badge/🎯_在线Demo-交互式看板-FF4B4B)](https://lwtlong.github.io/ai-dev-analytics/)
22
22
  [![ai-dev-analytics MCP server](https://glama.ai/mcp/servers/LWTlong/ai-dev-analytics/badges/score.svg)](https://glama.ai/mcp/servers/LWTlong/ai-dev-analytics)
23
23
 
24
24
  [![ai-dev-analytics MCP server](https://glama.ai/mcp/servers/LWTlong/ai-dev-analytics/badges/card.svg)](https://glama.ai/mcp/servers/LWTlong/ai-dev-analytics)
25
25
 
26
- [一行接入](#-30-秒上手) · [数据驱动闭环](#-数据驱动闭环) · [数据看板](#-数据看板) · [SOP 流程](#-标准化-ai-开发流程) · [数据沉淀](#-数据沉淀与绩效汇报) · [English](./README.md)
26
+ [一行接入](#-30-秒上手) · [数据驱动闭环](#-数据驱动闭环) · [数据看板](#-数据看板) · [SOP 流程](#-标准化-ai-开发流程) · [数据沉淀](#-数据沉淀与绩效汇报) · [命令文档](./COMMANDS.md) · [文档导航](./docs/INDEX.md) · [English](./README.md)
27
27
 
28
28
  </div>
29
29
 
@@ -60,7 +60,7 @@ Vibe Coding 过程
60
60
  "9 个偏差 → 56% 幻觉, 44% 规则缺失"
61
61
 
62
62
  发现偏差规律 → AI 建议沉淀规则 → 用户确认 → 写入规则库
63
- .aidevos/rules/ ← 你的 AI 知识库在成长
63
+ .aida/rules/ ← 你的 AI 知识库在成长
64
64
 
65
65
  AI 下次读取规则 → 同样的错误被消除
66
66
 
@@ -86,7 +86,7 @@ Vibe Coding 过程
86
86
 
87
87
  ![偏差与规则趋势](https://raw.githubusercontent.com/LWTlong/ai-dev-analytics/main/docs/deviation-rule-trend.png)
88
88
 
89
- `.aidevos/rules/` 目录就是你的**项目专属 AI 知识库**。用 AI 写得越多,它对*你的项目*就越懂。
89
+ `.aida/rules/` 目录就是你的**项目专属 AI 知识库**。用 AI 写得越多,它对*你的项目*就越懂。
90
90
 
91
91
  ---
92
92
 
@@ -119,7 +119,15 @@ AIDA 全方位采集 AI 辅助开发的每个维度,转化为交互式图表
119
119
 
120
120
  ### 🔒 100% 本地。零外部请求。
121
121
 
122
- AIDA 只往项目里的 `.aidevos/` 目录写 JSON 文件。**整个代码库不包含任何外部 HTTP 请求** —— 不发遥测、不上传云端、不请求分析服务、不做任何追踪。零运行时依赖。你的代码和数据绝不会离开你的电脑。
122
+ AIDA 只往项目里的 `.aida/` 目录写 JSON 文件。**整个代码库不包含任何外部 HTTP 请求** —— 不发遥测、不上传云端、不请求分析服务、不做任何追踪。零运行时依赖。你的代码和数据绝不会离开你的电脑。
123
+
124
+ ## 命令文档
125
+
126
+ 详细 CLI 用法、命令行为、支持的 AI 工具、merge/import/build 流程、迁移说明,见 [COMMANDS.md](./COMMANDS.md)。
127
+
128
+ ## 文档导航
129
+
130
+ 公开文档导航、schema 参考、工作流说明、看板相关文档,见 [docs/INDEX.md](./docs/INDEX.md)。
123
131
 
124
132
  ---
125
133
 
@@ -248,7 +256,7 @@ AIDA 不只是可视化 —— 它**沉淀数据**。每次运行都积累结构
248
256
  | **团队 Leader 报告** | 各开发者数据、偏差热点、哪个模块需要更好的规则、团队 AI 成熟度 |
249
257
  | **项目交接** | 完整开发历史 —— 接手的人能看到做了什么、有什么规则、为什么有这些规则 |
250
258
 
251
- 所有数据都是 `.aidevos/` 里的结构化 JSON。没有厂商锁定。随时导出、查询、接入任何报表工具。运行 `aida report` 随时生成汇总。
259
+ 所有数据都是 `.aida/` 里的结构化 JSON。没有厂商锁定。随时导出、查询、接入任何报表工具。运行 `aida report` 随时生成汇总。
252
260
 
253
261
  ---
254
262
 
@@ -257,9 +265,9 @@ AIDA 不只是可视化 —— 它**沉淀数据**。每次运行都积累结构
257
265
  ```mermaid
258
266
  flowchart LR
259
267
  A["你的 AI 工具\nClaude Code / Cursor"] -->|Vibe Coding| B{"AIDA MCP Server\n10 个工具"}
260
- B -->|静默采集| C[".aidevos/run.json"]
268
+ B -->|静默采集| C[".aida/run.json"]
261
269
  C -->|可视化| D["数据看板\nlocalhost:2375"]
262
- C -->|模式分析| E[".aidevos/rules/"]
270
+ C -->|模式分析| E[".aida/rules/"]
263
271
  E -->|AI 读取规则| A
264
272
  ```
265
273
 
@@ -289,10 +297,10 @@ AI 工具在工作时自动调用 MCP 工具。你不需要手动操作 ——
289
297
 
290
298
  | 层级 | 文件 | 内容 |
291
299
  |------|------|------|
292
- | **运行** | `.aidevos/runs/{分支}/{开发者}/run.json` | 每个任务、Bug、偏差、审查、文件变更 |
293
- | **分支** | `.aidevos/runs/{分支}/requirement.json` | 分支聚合统计 |
294
- | **项目** | `.aidevos/index.json` | 跨分支总览 |
295
- | **规则** | `.aidevos/rules/` | 沉淀的项目规则 —— AI 持续增长的知识库 |
300
+ | **运行** | `.aida/runs/{分支}/{开发者}/run.json` | 每个任务、Bug、偏差、审查、文件变更 |
301
+ | **分支** | `.aida/runs/{分支}/requirement.json` | 分支聚合统计 |
302
+ | **项目** | `.aida/index.json` | 跨分支总览 |
303
+ | **规则** | `.aida/rules/` | 沉淀的项目规则 —— AI 持续增长的知识库 |
296
304
 
297
305
  全是结构化 JSON —— 随时可导出、可分析、可生成汇报。
298
306
 
@@ -337,6 +345,7 @@ PRD 接入 → 需求分析 → 任务拆分
337
345
 
338
346
  ```bash
339
347
  aida init # 交互式初始化
348
+ aida migrate-legacy # 一条命令升级旧 .aidevos 项目
340
349
  aida start # 创建新的开发运行
341
350
  aida status # 查看当前运行状态
342
351
  aida dashboard # 启动数据看板(默认端口 2375)
@@ -352,6 +361,8 @@ aida update # 更新 Skills 到最新版本
352
361
  aida migrate # 迁移旧数据到当前 schema
353
362
  ```
354
363
 
364
+ `aida init` 和 `aida build` 现在在 TTY 终端中使用真正的多选交互;在非交互环境里会自动回退为逗号分隔数字输入,便于脚本和 CI 使用。
365
+
355
366
  </details>
356
367
 
357
368
  <details>
@@ -380,16 +391,16 @@ AIDA 使用 [Model Context Protocol](https://modelcontextprotocol.io/) —— AI
380
391
  ### 架构设计
381
392
 
382
393
  ```
383
- .aidevos/rules.json ← 唯一数据源,提交到 git
394
+ .aida/rules.json ← 唯一数据源,提交到 git
384
395
 
385
396
  aida rules build
386
397
 
387
- .aidevos/rules/*.md ← 自动生成的视图文件,加入 gitignore
398
+ .aida/rules/*.md ← 自动生成的视图文件,加入 gitignore
388
399
 
389
400
  AI 下次读取规则
390
401
  ```
391
402
 
392
- `aida init` 会自动将 `.aidevos/rules/*.md` 写入 `.gitignore`。不要手动编辑 `.md` 文件——它们始终由 `rules.json` 重新生成。
403
+ `aida init` 会自动将 `.aida/rules/*.md` 写入 `.gitignore`。不要手动编辑 `.md` 文件——它们始终由 `rules.json` 重新生成。
393
404
 
394
405
  ### 日常流程
395
406
 
@@ -408,7 +419,7 @@ aida rules build # 从更新后的 rules.json 重新生成本地规则视图
408
419
  # git merge 在 rules.json 产生冲突后执行:
409
420
  aida rules merge # 按 fingerprint 做并集——不丢规则,不产生重复
410
421
  aida rules build # 重建 .md 视图
411
- git add .aidevos/rules.json
422
+ git add .aida/rules.json
412
423
  git commit -m "merge: resolve rules conflict"
413
424
  ```
414
425
 
@@ -0,0 +1,2 @@
1
+ export declare function build(): Promise<void>;
2
+ //# sourceMappingURL=build.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/build.ts"],"names":[],"mappings":"AAqBA,wBAAsB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAoC3C"}
@@ -0,0 +1,46 @@
1
+ import { green, red, yellow } from '../../utils/display.js';
2
+ import { buildProjectArtifacts, readConfiguredTools } from '../../utils/ai-build.js';
3
+ import { configPath } from '../../utils/paths.js';
4
+ import { fileExists } from '../../utils/fs.js';
5
+ import { promptMultiSelect } from '../../utils/prompt.js';
6
+ function requestedTools() {
7
+ return process.argv.slice(3);
8
+ }
9
+ async function selectTools(configured) {
10
+ const requested = requestedTools();
11
+ if (requested.length > 0)
12
+ return requested;
13
+ const selected = await promptMultiSelect('Select AI tools to build:', configured.map((tool) => ({ value: tool, label: tool })), { required: false });
14
+ return selected.length > 0 ? selected : configured;
15
+ }
16
+ export async function build() {
17
+ const projectRoot = process.cwd();
18
+ if (!fileExists(configPath(projectRoot))) {
19
+ console.log(red('\n AIDA not initialized. Run `npx aida init` first.\n'));
20
+ return;
21
+ }
22
+ const configured = readConfiguredTools(projectRoot);
23
+ if (configured.length === 0) {
24
+ console.log(yellow('\n No AI tools configured in .aida/config.json.\n'));
25
+ return;
26
+ }
27
+ const targets = await selectTools(configured);
28
+ const result = buildProjectArtifacts(projectRoot, targets);
29
+ console.log(green('\n ✓ AIDA build completed') +
30
+ `: ${result.ruleViews} rule views, ${result.skillViews} skill views, ${result.commandFiles} tool command files\n`);
31
+ if (result.tools.length > 0) {
32
+ console.log(` Targets: ${result.tools.join(', ')}`);
33
+ }
34
+ if (result.mcpFiles.length > 0) {
35
+ console.log(` MCP: ${result.mcpFiles.join(', ')}`);
36
+ }
37
+ if (result.tools.includes('codex')) {
38
+ console.log(' Codex: global ~/.codex/config.toml has been updated for the aida MCP server');
39
+ }
40
+ console.log(` Tool config snapshot: ${result.toolConfigSnapshot}`);
41
+ if (result.gitignoreAdded.length > 0) {
42
+ console.log(` .gitignore: added ${result.gitignoreAdded.join(', ')}`);
43
+ }
44
+ console.log('');
45
+ }
46
+ //# sourceMappingURL=build.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build.js","sourceRoot":"","sources":["../../../src/cli/commands/build.ts"],"names":[],"mappings":"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"}
@@ -10,7 +10,7 @@ function loadDemoData(projectRoot) {
10
10
  const demoPath = resolve(ASSETS_DIR, 'templates', 'demo-run.json');
11
11
  if (!existsSync(demoPath))
12
12
  return;
13
- const demoDir = resolve(projectRoot, '.aidevos', 'runs', 'demo-feature', 'demo-dev');
13
+ const demoDir = resolve(projectRoot, '.aida', 'runs', 'demo-feature', 'demo-dev');
14
14
  ensureDir(demoDir);
15
15
  const data = readJson(demoPath);
16
16
  writeJson(resolve(demoDir, 'run.json'), data);
@@ -1 +1 @@
1
- {"version":3,"file":"dashboard.js","sourceRoot":"","sources":["../../../src/cli/commands/dashboard.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dashboard.js","sourceRoot":"","sources":["../../../src/cli/commands/dashboard.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function importSources(): Promise<void>;
2
+ //# sourceMappingURL=import.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"import.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/import.ts"],"names":[],"mappings":"AAeA,wBAAsB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CA8DnD"}
@@ -0,0 +1,62 @@
1
+ import { green, red, yellow } from '../../utils/display.js';
2
+ import { configPath } from '../../utils/paths.js';
3
+ import { fileExists } from '../../utils/fs.js';
4
+ import { importProjectSources, importProjectSourcesWithBaseline } from '../../utils/import.js';
5
+ import { buildProjectArtifacts } from '../../utils/ai-build.js';
6
+ function requestedBaseline() {
7
+ const value = process.argv[3]?.trim();
8
+ if (!value)
9
+ return null;
10
+ if (['claude-code', 'cursor', 'vscode-copilot', 'windsurf', 'lingma', 'codex'].includes(value)) {
11
+ return value;
12
+ }
13
+ return 'invalid';
14
+ }
15
+ export async function importSources() {
16
+ const projectRoot = process.cwd();
17
+ if (!fileExists(configPath(projectRoot))) {
18
+ console.log(red('\n AIDA not initialized. Run `npx aida init` first.\n'));
19
+ return;
20
+ }
21
+ const baseline = requestedBaseline();
22
+ if (baseline === 'invalid') {
23
+ console.log(red(`\n Unknown baseline tool: ${process.argv[3]?.trim()}\n`));
24
+ return;
25
+ }
26
+ if (baseline) {
27
+ const imported = importProjectSourcesWithBaseline(projectRoot, baseline);
28
+ const result = buildProjectArtifacts(projectRoot, imported.tools);
29
+ console.log(green('\n ✓ Existing project sources imported') +
30
+ `: ${imported.rulesImported} rules, ${imported.skillsImported} skills\n`);
31
+ console.log(` Baseline: ${baseline}`);
32
+ console.log(` Baseline imported: ${imported.baseline.rulesImported} rules, ${imported.baseline.skillsImported} skills`);
33
+ if (imported.tools.length === 0) {
34
+ console.log(yellow(' No existing AI tool configs were discovered.\n'));
35
+ return;
36
+ }
37
+ console.log(` Tools: ${imported.tools.join(', ')}`);
38
+ console.log(` Tool config snapshot: ${imported.snapshotPath}`);
39
+ console.log(` Rebuilt: ${result.ruleViews} rule views, ${result.skillViews} skill views, ${result.commandFiles} tool command files`);
40
+ if (imported.gitignoreAdded.length > 0) {
41
+ console.log(` .gitignore: added ${imported.gitignoreAdded.join(', ')}`);
42
+ }
43
+ console.log('');
44
+ return;
45
+ }
46
+ const imported = importProjectSources(projectRoot);
47
+ const result = buildProjectArtifacts(projectRoot, imported.tools);
48
+ console.log(green('\n ✓ Existing project sources imported') +
49
+ `: ${imported.rulesImported} rules, ${imported.skillsImported} skills\n`);
50
+ if (imported.tools.length === 0) {
51
+ console.log(yellow(' No existing AI tool configs were discovered.\n'));
52
+ return;
53
+ }
54
+ console.log(` Tools: ${imported.tools.join(', ')}`);
55
+ console.log(` Tool config snapshot: ${imported.snapshotPath}`);
56
+ console.log(` Rebuilt: ${result.ruleViews} rule views, ${result.skillViews} skill views, ${result.commandFiles} tool command files`);
57
+ if (imported.gitignoreAdded.length > 0) {
58
+ console.log(` .gitignore: added ${imported.gitignoreAdded.join(', ')}`);
59
+ }
60
+ console.log('');
61
+ }
62
+ //# sourceMappingURL=import.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"import.js","sourceRoot":"","sources":["../../../src/cli/commands/import.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"AAmLA,wBAAsB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CA4V1C"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"AA+GA,wBAAsB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAwO1C"}