@mycodemap/mycodemap 0.4.2 → 0.5.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 (120) hide show
  1. package/CHANGELOG.md +92 -3
  2. package/README.md +117 -46
  3. package/dist/ai/claude.d.ts +38 -0
  4. package/dist/ai/claude.d.ts.map +1 -0
  5. package/dist/ai/claude.js +169 -0
  6. package/dist/ai/claude.js.map +1 -0
  7. package/dist/ai/codex.d.ts +38 -0
  8. package/dist/ai/codex.d.ts.map +1 -0
  9. package/dist/ai/codex.js +169 -0
  10. package/dist/ai/codex.js.map +1 -0
  11. package/dist/ai/factory.d.ts +48 -0
  12. package/dist/ai/factory.d.ts.map +1 -0
  13. package/dist/ai/factory.js +95 -0
  14. package/dist/ai/factory.js.map +1 -0
  15. package/dist/ai/index.d.ts +12 -0
  16. package/dist/ai/index.d.ts.map +1 -0
  17. package/dist/ai/index.js +29 -0
  18. package/dist/ai/index.js.map +1 -0
  19. package/dist/ai/provider.d.ts +70 -0
  20. package/dist/ai/provider.d.ts.map +1 -0
  21. package/dist/ai/provider.js +31 -0
  22. package/dist/ai/provider.js.map +1 -0
  23. package/dist/ai/subagent-caller.d.ts +90 -0
  24. package/dist/ai/subagent-caller.d.ts.map +1 -0
  25. package/dist/ai/subagent-caller.js +280 -0
  26. package/dist/ai/subagent-caller.js.map +1 -0
  27. package/dist/ai/types.d.ts +70 -0
  28. package/dist/ai/types.d.ts.map +1 -0
  29. package/dist/ai/types.js +5 -0
  30. package/dist/ai/types.js.map +1 -0
  31. package/dist/cli/commands/design.d.ts +47 -0
  32. package/dist/cli/commands/design.d.ts.map +1 -0
  33. package/dist/cli/commands/design.js +268 -0
  34. package/dist/cli/commands/design.js.map +1 -0
  35. package/dist/cli/commands/server.d.ts +9 -0
  36. package/dist/cli/commands/server.d.ts.map +1 -0
  37. package/dist/cli/commands/server.js +65 -0
  38. package/dist/cli/commands/server.js.map +1 -0
  39. package/dist/cli/commands/ship/pipeline.d.ts.map +1 -1
  40. package/dist/cli/commands/ship/pipeline.js +8 -1
  41. package/dist/cli/commands/ship/pipeline.js.map +1 -1
  42. package/dist/cli/commands/ship/publisher.d.ts +9 -1
  43. package/dist/cli/commands/ship/publisher.d.ts.map +1 -1
  44. package/dist/cli/commands/ship/publisher.js +149 -6
  45. package/dist/cli/commands/ship/publisher.js.map +1 -1
  46. package/dist/cli/design-contract-loader.d.ts +15 -0
  47. package/dist/cli/design-contract-loader.d.ts.map +1 -0
  48. package/dist/cli/design-contract-loader.js +175 -0
  49. package/dist/cli/design-contract-loader.js.map +1 -0
  50. package/dist/cli/design-contract-schema.d.ts +11 -0
  51. package/dist/cli/design-contract-schema.d.ts.map +1 -0
  52. package/dist/cli/design-contract-schema.js +75 -0
  53. package/dist/cli/design-contract-schema.js.map +1 -0
  54. package/dist/cli/design-handoff-builder.d.ts +15 -0
  55. package/dist/cli/design-handoff-builder.d.ts.map +1 -0
  56. package/dist/cli/design-handoff-builder.js +345 -0
  57. package/dist/cli/design-handoff-builder.js.map +1 -0
  58. package/dist/cli/design-scope-resolver.d.ts +8 -0
  59. package/dist/cli/design-scope-resolver.d.ts.map +1 -0
  60. package/dist/cli/design-scope-resolver.js +712 -0
  61. package/dist/cli/design-scope-resolver.js.map +1 -0
  62. package/dist/cli/design-verification-builder.d.ts +8 -0
  63. package/dist/cli/design-verification-builder.d.ts.map +1 -0
  64. package/dist/cli/design-verification-builder.js +369 -0
  65. package/dist/cli/design-verification-builder.js.map +1 -0
  66. package/dist/cli/index.js +2 -0
  67. package/dist/cli/index.js.map +1 -1
  68. package/dist/cli-new/commands/server.d.ts +13 -0
  69. package/dist/cli-new/commands/server.d.ts.map +1 -0
  70. package/dist/cli-new/commands/server.js +90 -0
  71. package/dist/cli-new/commands/server.js.map +1 -0
  72. package/dist/generator/ai-overview.d.ts +51 -0
  73. package/dist/generator/ai-overview.d.ts.map +1 -0
  74. package/dist/generator/ai-overview.js +160 -0
  75. package/dist/generator/ai-overview.js.map +1 -0
  76. package/dist/infrastructure/storage/StorageFactory.d.ts +12 -5
  77. package/dist/infrastructure/storage/StorageFactory.d.ts.map +1 -1
  78. package/dist/infrastructure/storage/StorageFactory.js +55 -14
  79. package/dist/infrastructure/storage/StorageFactory.js.map +1 -1
  80. package/dist/infrastructure/storage/adapters/Neo4jStorage.d.ts +41 -0
  81. package/dist/infrastructure/storage/adapters/Neo4jStorage.d.ts.map +1 -0
  82. package/dist/infrastructure/storage/adapters/Neo4jStorage.js +162 -0
  83. package/dist/infrastructure/storage/adapters/Neo4jStorage.js.map +1 -0
  84. package/dist/interface/types/design-contract.d.ts +68 -0
  85. package/dist/interface/types/design-contract.d.ts.map +1 -0
  86. package/dist/interface/types/design-contract.js +7 -0
  87. package/dist/interface/types/design-contract.js.map +1 -0
  88. package/dist/interface/types/design-handoff.d.ts +68 -0
  89. package/dist/interface/types/design-handoff.d.ts.map +1 -0
  90. package/dist/interface/types/design-handoff.js +4 -0
  91. package/dist/interface/types/design-handoff.js.map +1 -0
  92. package/dist/interface/types/design-mapping.d.ts +51 -0
  93. package/dist/interface/types/design-mapping.d.ts.map +1 -0
  94. package/dist/interface/types/design-mapping.js +4 -0
  95. package/dist/interface/types/design-mapping.js.map +1 -0
  96. package/dist/interface/types/design-verification.d.ts +49 -0
  97. package/dist/interface/types/design-verification.d.ts.map +1 -0
  98. package/dist/interface/types/design-verification.js +4 -0
  99. package/dist/interface/types/design-verification.js.map +1 -0
  100. package/dist/interface/types/index.d.ts +4 -0
  101. package/dist/interface/types/index.d.ts.map +1 -1
  102. package/dist/orchestrator/ai-feed-generator.d.ts +210 -0
  103. package/dist/orchestrator/ai-feed-generator.d.ts.map +1 -0
  104. package/dist/orchestrator/ai-feed-generator.js +377 -0
  105. package/dist/orchestrator/ai-feed-generator.js.map +1 -0
  106. package/docs/ai-guide/COMMANDS.md +73 -0
  107. package/docs/ai-guide/OUTPUT.md +415 -0
  108. package/docs/ai-guide/PATTERNS.md +14 -4
  109. package/docs/ai-guide/PROMPTS.md +12 -6
  110. package/docs/archive/test-report-symbol-search.md +384 -0
  111. package/docs/archive/test-scenario-4-complexity-analysis.md +460 -0
  112. package/docs/archive/test_report_scenario5.md +615 -0
  113. package/docs/archive/test_scenario_3_impact_analysis_report.md +520 -0
  114. package/docs/product-specs/DESIGN_CONTRACT_TEMPLATE.md +79 -0
  115. package/docs/product-specs/README.md +2 -1
  116. package/docs/rules/engineering-with-codex-openai.md +6 -2
  117. package/docs/rules/validation.md +9 -6
  118. package/package.json +1 -1
  119. package/scripts/experiments/arcadedb-http-smoke.mjs +90 -0
  120. package/scripts/validate-docs.js +247 -0
package/CHANGELOG.md CHANGED
@@ -2,16 +2,105 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file.
4
4
 
5
+ ## [0.5.0] - 2026-04-15 - Design Contract Surface
6
+
7
+ ### 🏗️ v1.4 Milestone: Design-to-Code Mapping & Handoff Package
8
+
9
+ v1.4 milestone 完成,新增完整的 design contract 公共 CLI 表面,支持人类设计到 AI 执行的标准化 handoff。
10
+
11
+ #### Phase 17: Design Contract Validation
12
+ - **feature**: 发布 `design validate` 命令,校验 `mycodemap.design.md` 必填 sections
13
+ - **feature**: 返回结构化 diagnostics(missing-section、duplicate-section、empty-section 等)
14
+
15
+ #### Phase 18: Design-to-Code Mapping
16
+ - **feature**: 发布 `design map` 命令,将 design contract 解析为 candidate code scope
17
+ - **feature**: 支持 `no-candidates`、`over-broad-scope`、`high-risk-scope` 自动阻断
18
+
19
+ #### Phase 19: Handoff Package & Human Gates
20
+ - **feature**: 发布 `design handoff` 命令,生成 reviewer / AI agent 共用的 handoff artifact
21
+ - **feature**: 输出 `readyForExecution`、`approvals`、`assumptions`、`openQuestions`
22
+
23
+ #### Phase 20: Design Drift Verification
24
+ - **feature**: 发布 `design verify` 命令,基于 reviewed handoff truth 做 checklist / drift 检查
25
+ - **feature**: `needs-review` 保持零退出码,仅 blocker diagnostics 返回非零 exit code
26
+
27
+ ### 🚀 New Features
28
+
29
+ - **design**: 新增 design contract 四阶段 CLI 命令(validate / map / handoff / verify)
30
+ - **docs**: 同步 AI_GUIDE.md、README.md 和 docs/ai-guide 中的 design 类型定义与 workflow 命令
31
+ - **ci**: 更新文档一致性校验脚本,覆盖 design contract 测试与 fixture
32
+
33
+ ### 🐛 Bug Fixes
34
+
35
+ - **storage**: 修复 `kuzu` 可选依赖在 CI typecheck 中的模块缺失错误
36
+ - **publish**: 移除 GitHub Actions 中不稳定的 `npm install -g npm@latest` 步骤
37
+
5
38
  ## [0.4.2] - 2026-03-25 - Test Infrastructure Fix
6
39
 
40
+ ### 🏗️ v1.3 Milestone: Kùzu-only Convergence & High-Signal Debt Cleanup
41
+
42
+ v1.3 milestone 完成,核心产品面收敛为 Kùzu-only,清偿多项技术债务。
43
+
44
+ #### Phase 13: Storage Backend Convergence
45
+ - **refactor**: 移除 neo4j 运行时表面 (`8957fca`)
46
+ - **docs**: 同步 kuzu-only public contract (`d07524e`)
47
+
48
+ #### Phase 14: CLI Surface & Documentation Alignment
49
+ - **refactor**: 收口 analyze 和 server 过渡差距 (`4a756d7`)
50
+ - **docs**: 移除 workflow 过渡性 public 措辞 (`e5b9560`)
51
+
52
+ #### Phase 15: Analysis Intent & Workflow Runtime
53
+ - **feature**: 发布 public intent contract 和 outputs (`f4abfa6`)
54
+ - **refactor**: 对齐 workflow 运行时编排核心 (`ddd1c80`)
55
+ - **bugfix**: 扩展 quality 和回归测试覆盖 (`5eb38f7`)
56
+
57
+ #### Phase 16: Core Debt Cleanup & Final Guardrails
58
+ - **refactor**: 实现 plugin 真实 reload 生命周期 (`3a5fbc6`)
59
+ - **refactor**: 收口 parser index 和 resolution 债务 (`f64432a`)
60
+ - **refactor**: 使 analysis write paths 显式化 (`27458cd`)
61
+ - **docs**: 同步 kuzu-only 和 docs gate contract (`a4c8e12`)
62
+
63
+ #### Milestone Archive
64
+ - **docs**: 归档 v1.0 CI 和 docs phases (`7d474df`)
65
+ - **docs**: 归档 v1.0 analyze 和 workflow phases (`b3e43e4`)
66
+ - **docs**: 归档 v1.0 kickoff 和 cli cleanup (`bb80e4b`)
67
+ - **docs**: 归档 v1.1 plugin rollout phases (`35cfd60`)
68
+ - **docs**: 归档 v1.1 docs 和 v1.2 activation (`0aed09c`)
69
+ - **docs**: 归档 v1.2 backend validation (`a27bfb0`)
70
+ - **docs**: 完成 v1.3 milestone 关闭 (`ccb7d12`)
71
+
72
+ ### 🚀 New Features
73
+
74
+ - **storage**: 新增 adapter parity 和 validation (`b051dd8`)
75
+ - **storage**: 接入 generate export 和共享 helpers (`f625596`)
76
+ - **analyze**: 发布 public intent contract 和标准化输出 (`f4abfa6`)
77
+ - **plugins**: 新增 runtime config 和 diagnostics surface (`74d7905`)
78
+ - **workflow**: 扩展 quality 和回归测试覆盖 (`5eb38f7`)
79
+ - **claude**: 引入完整的 GSD (Get Shit Done) workflow agents 和命令 (`ef537e2`)
80
+ - **claude/gstack**: 新增 Docker 配置和 agent 定义 (`b83c000`)
81
+ - **claude/gstack**: 新增 GitHub Actions workflows (`7ef301b`)
82
+
7
83
  ### 🐛 Bug Fixes
8
84
 
9
- - **test**: 修复 validate-docs 测试缺少 product-specs 文件的问题
85
+ - **test**: 修复 validate-docs 测试缺少 product-specs 文件的问题 (`20d4293`)
86
+ - **hooks**: 解决 vitest 跨 node_modules 布局的查找问题 (`d53a5ac`)
87
+ - **hooks**: 添加本地 vitest entry 回退 (`d6542b5`)
88
+ - **adapter**: 增加 method signature 测试超时 (`4e97ca5`)
10
89
 
11
90
  ### 📚 Documentation
12
91
 
13
- - **docs**: 同步 MVP3 产品规格文档基线
14
- - **docs**: 完成 v1.3 milestone 归档
92
+ - **docs**: 同步 MVP3 产品规格文档基线 (`0c75108`)
93
+ - **docs**: 完成 v1.3 milestone 归档 (`ccb7d12`)
94
+ - **ai-guide**: 新增 ship troubleshooting section (`b7fe6d4`)
95
+ - **guardrails**: 同步 hooks 和 validation 文档 (`38b1964`)
96
+ - **planning**: 添加当前状态和 codebase map (`0bbd4ac`)
97
+
98
+ ### 🔧 Maintenance
99
+
100
+ - **config**: 同步所有 AI 文档到 v0.4.2 (`43c7b17`)
101
+ - **config**: 版本升级到 v0.4.2 (`d1f55c6`)
102
+ - **config**: vitest 添加 lcov coverage reporter (`a4da751`)
103
+ - **tooling**: checkpoint milestone metadata (`851ecf6`)
15
104
 
16
105
  ## [0.4.1] - 2026-03-23 - Ship Workflow Fixes
17
106
 
package/README.md CHANGED
@@ -7,7 +7,7 @@ CodeMap 是一个面向 TypeScript/JavaScript/Go 项目的 AI-first 代码地图
7
7
  ## 特性
8
8
 
9
9
  - **AI-first 代码地图** - 生成 `AI_MAP.md`、`CONTEXT.md`、`codemap.json` 等 AI/Agent 可直接消费的上下文
10
- - **核心分析命令** - 提供 `generate`、`query`、`deps`、`impact`、`complexity`、`cycles`、`analyze`、`export`、`ci`
10
+ - **核心分析命令** - 提供 `generate`、`query`、`deps`、`impact`、`complexity`、`cycles`、`analyze`、`design`、`export`、`ci`
11
11
  - **机器可读优先** - 结构化输出是产品基线;当前 CLI 过渡期仍主要通过 `--json` 暴露机器可读结果
12
12
  - **分层架构 (MVP3)** - 保持 `Interface → Infrastructure → Domain → Server → CLI` 的明确边界
13
13
  - **双层解析模式** - 提供 `fast`(快速正则)和 `smart`(TypeScript AST)两种解析模式
@@ -25,7 +25,7 @@ CodeMap 是一个面向 TypeScript/JavaScript/Go 项目的 AI-first 代码地图
25
25
  | 输出契约 | 目标是机器可读优先;`当前 CLI 现实` 是多数命令通过 `--json` 提供结构化结果,`analyze` 额外支持 `--output-mode machine|human` |
26
26
  | 架构边界 | `Server Layer` 是内部架构层,不等于公共 `mycodemap server` 命令 |
27
27
 
28
- 当前公共 CLI 聚焦 `init`、`generate`、`query`、`deps`、`cycles`、`complexity`、`impact`、`analyze`、`ci`、`workflow`、`export`、`ship`;`server`、`watch`、`report`、`logs` 已从 public CLI 移除,并在调用时给出迁移提示。
28
+ 当前公共 CLI 聚焦 `init`、`generate`、`query`、`deps`、`cycles`、`complexity`、`impact`、`analyze`、`design`、`ci`、`workflow`、`export`、`ship`;`server`、`watch`、`report`、`logs` 已从 public CLI 移除,并在调用时给出迁移提示。
29
29
 
30
30
  ## 安装
31
31
 
@@ -73,6 +73,13 @@ mycodemap impact -f src/cli/index.ts -j
73
73
 
74
74
  # analyze 额外支持显式 machine/human 模式
75
75
  mycodemap analyze -i read -t src/cli/index.ts --output-mode human
76
+
77
+ # 人类设计先落成 design contract,再交给 AI/Agent 消费
78
+ cp docs/product-specs/DESIGN_CONTRACT_TEMPLATE.md mycodemap.design.md
79
+ mycodemap design validate mycodemap.design.md --json
80
+ mycodemap design map mycodemap.design.md --json
81
+ mycodemap design handoff mycodemap.design.md --json
82
+ mycodemap design verify mycodemap.design.md --json
76
83
  ```
77
84
 
78
85
  生成后,将 `.mycodemap/AI_MAP.md` 的内容提供给 AI 助手即可让其快速理解你的项目结构;需要结构化结果继续处理时,优先使用 JSON / machine 模式。
@@ -284,6 +291,39 @@ mycodemap export json -o ./out # 指定输出路径
284
291
 
285
292
  > 内置模板(`refactoring` / `bugfix` / `feature` / `hotfix`)共享同一 4 阶段顺序,只通过不同的阶段阈值和适用场景调整体验。
286
293
 
294
+ ## 设计契约输入面
295
+
296
+ `design` 是给“人类负责设计、AI 负责执行”协作链路准备的正式输入面。
297
+ 先把设计写成 `mycodemap.design.md`,再用 CLI 校验必填 sections、空段、重复 heading 和未知 heading。
298
+
299
+ ```bash
300
+ # 从 canonical template 起步
301
+ cp docs/product-specs/DESIGN_CONTRACT_TEMPLATE.md mycodemap.design.md
302
+
303
+ # 使用默认文件名校验
304
+ mycodemap design validate mycodemap.design.md --json
305
+
306
+ # 校验通过后生成 candidate scope
307
+ mycodemap design map mycodemap.design.md --json
308
+
309
+ # 把 scope 打包成 handoff artifact,供 reviewer / AI agent 消费
310
+ mycodemap design handoff mycodemap.design.md --json
311
+
312
+ # 基于 reviewed handoff truth 做 verification / drift 检查
313
+ mycodemap design verify mycodemap.design.md --json
314
+
315
+ # 也可以显式传入其他路径
316
+ mycodemap design validate docs/designs/login.design.md
317
+ ```
318
+
319
+ 必填 sections:
320
+ - `## Goal`
321
+ - `## Constraints`
322
+ - `## Acceptance Criteria`
323
+ - `## Non-Goals`
324
+
325
+ > 建议最小工作流:`design validate → design map → design handoff → design verify`。`design map --json` 会返回 `summary`、`candidates`、`diagnostics` 与 `unknowns`;`design handoff --json` 会继续返回 `readyForExecution`、`approvals`、`assumptions` 与 `openQuestions`,默认 artifact 路径为 `.mycodemap/handoffs/{stem}.handoff.md|json`;`design verify --json` 会返回 `checklist`、`drift`、`diagnostics` 与 `readyForExecution`,其中 review-needed 不会直接变成非零退出,只有 blocker diagnostics 才会阻断。
326
+
287
327
  ### 工作流 CLI 命令
288
328
 
289
329
  ```bash
@@ -632,6 +672,37 @@ cp examples/codex/codemap-agent.md .agents/skills/codemap/SKILL.md
632
672
 
633
673
  ## 新增 CLI 命令
634
674
 
675
+ ### `mycodemap design`
676
+
677
+ 校验、映射并验证 human-authored design contract,默认读取仓库根目录的 `mycodemap.design.md`。
678
+
679
+ ```bash
680
+ # validate: 使用默认路径校验
681
+ mycodemap design validate mycodemap.design.md --json
682
+
683
+ # validate: 显式指定文件
684
+ mycodemap design validate docs/designs/login.design.md
685
+
686
+ # map: 生成 candidate code scope
687
+ mycodemap design map mycodemap.design.md --json
688
+
689
+ # handoff: 生成 reviewer + agent 共用的 handoff package
690
+ mycodemap design handoff mycodemap.design.md --json
691
+
692
+ # verify: 基于 reviewed handoff truth 做 checklist / drift 校验
693
+ mycodemap design verify mycodemap.design.md --json
694
+ ```
695
+
696
+ | 选项 | 说明 |
697
+ |------|------|
698
+ | `-j, --json` | 输出纯 JSON diagnostics,适合 AI/CI 消费 |
699
+
700
+ > canonical 模板位于 `docs/product-specs/DESIGN_CONTRACT_TEMPLATE.md`。
701
+ > 缺失必填 section、重复 section、空 section 或未知 heading 时,CLI 会返回结构化 diagnostics,而不是继续猜测设计意图。
702
+ > `design map` 会基于 design contract 返回 `candidates`、`diagnostics` 与 `unknowns`;若命中 `no-candidates`、`over-broad-scope` 或 `high-risk-scope`,命令会直接阻断。
703
+ > `design handoff` 会基于 validated design contract + mapping truth 返回 `readyForExecution`、`approvals`、`assumptions`、`openQuestions`;human mode 默认写出 `.mycodemap/handoffs/{stem}.handoff.md|json`。
704
+ > `design verify` 会把 `Acceptance Criteria` 固定映射为 `checklist`,并输出 `drift` / `diagnostics`;当结果只是 `needs-review` 时保持零退出码,只有 `ok=false` 或 blocker diagnostics 才返回非零 exit code。
705
+
635
706
  ### `mycodemap analyze`
636
707
 
637
708
  统一分析入口,当前公共契约只暴露四个 intent,并统一返回结构化输出:
@@ -682,50 +753,6 @@ mycodemap analyze -i link -t src/index.ts --structured --json
682
753
  >
683
754
  > legacy 兼容映射:`search → find`、`impact/complexity → read`、`dependency/reference → link`、`overview/documentation → show`;`refactor` 会返回 `E0001_INVALID_INTENT`。
684
755
 
685
- ### `mycodemap ci`
686
-
687
- CI Gateway - 代码质量门禁工具:
688
-
689
- ```bash
690
- # 验证工作区是否干净(ship 的发布前检查也复用这条规则)
691
- mycodemap ci check-working-tree
692
-
693
- # 验证当前分支是否允许执行发布前检查
694
- mycodemap ci check-branch
695
- mycodemap ci check-branch --allow main,release/*
696
-
697
- # 运行发布前脚本集合(docs/typecheck/lint/test/build/pack)
698
- mycodemap ci check-scripts
699
-
700
- # 验证提交格式([TAG] scope: message)
701
- mycodemap ci check-commits
702
- mycodemap ci check-commits -c 5
703
- mycodemap ci check-commits -r origin/main..HEAD
704
-
705
- # 验证文件头注释([META], [WHY])
706
- mycodemap ci check-headers
707
- mycodemap ci check-headers -d src/domain
708
- mycodemap ci check-headers -f "src/index.ts,src/cli/index.ts"
709
-
710
- # 评估变更风险
711
- mycodemap ci assess-risk
712
- mycodemap ci assess-risk -t 0.5
713
-
714
- # 验证文档同步(含 analyze generated block 校验)
715
- mycodemap ci check-docs-sync
716
-
717
- # 验证输出契约
718
- mycodemap ci check-output-contract
719
-
720
- # 检查提交文件数量(限制 10 个文件)
721
- mycodemap ci check-commit-size
722
- mycodemap ci check-commit-size -m 15
723
- ```
724
-
725
- > `mycodemap ship` 的 CHECK 阶段现在复用 `ci check-working-tree`、`ci check-branch`、`ci check-scripts` 作为 must-pass 事实源,而不是重复实现这些检查。
726
- > `mycodemap ci check-headers -d <dir>` 与 `generate` / `analyze` 共享同一套 `.gitignore` 感知排除模块;若仓库没有 `.gitignore`,则回退到默认 `exclude` 列表。
727
-
728
- 支持的提交 TAG 类型:`[REFACTOR]`, `[TEST]`, `[DOCS]`, `[FEAT]`, `[FIX]`, `[CHORE]`, `[PERF]`, `[SECURITY]`, `[BREAKING]`, `[HOTFIX]`, `[MIGRATION]`, `[WIP]`
729
756
 
730
757
  ## 贡献指南
731
758
 
@@ -816,3 +843,47 @@ DELETE 删除代码/文件
816
843
  ## 许可证
817
844
 
818
845
  [MIT](LICENSE)
846
+ ### `mycodemap ci`
847
+
848
+ CI Gateway - 代码质量门禁工具:
849
+
850
+ ```bash
851
+ # 验证工作区是否干净(ship 的发布前检查也复用这条规则)
852
+ mycodemap ci check-working-tree
853
+
854
+ # 验证当前分支是否允许执行发布前检查
855
+ mycodemap ci check-branch
856
+ mycodemap ci check-branch --allow main,release/*
857
+
858
+ # 运行发布前脚本集合(docs/typecheck/lint/test/build/pack)
859
+ mycodemap ci check-scripts
860
+
861
+ # 验证提交格式([TAG] scope: message)
862
+ mycodemap ci check-commits
863
+ mycodemap ci check-commits -c 5
864
+ mycodemap ci check-commits -r origin/main..HEAD
865
+
866
+ # 验证文件头注释([META], [WHY])
867
+ mycodemap ci check-headers
868
+ mycodemap ci check-headers -d src/domain
869
+ mycodemap ci check-headers -f "src/index.ts,src/cli/index.ts"
870
+
871
+ # 评估变更风险
872
+ mycodemap ci assess-risk
873
+ mycodemap ci assess-risk -t 0.5
874
+
875
+ # 验证文档同步(含 analyze generated block 校验)
876
+ mycodemap ci check-docs-sync
877
+
878
+ # 验证输出契约
879
+ mycodemap ci check-output-contract
880
+
881
+ # 检查提交文件数量(限制 10 个文件)
882
+ mycodemap ci check-commit-size
883
+ mycodemap ci check-commit-size -m 15
884
+ ```
885
+
886
+ > `mycodemap ship` 的 CHECK 阶段现在复用 `ci check-working-tree`、`ci check-branch`、`ci check-scripts` 作为 must-pass 事实源,而不是重复实现这些检查。
887
+ > `mycodemap ci check-headers -d <dir>` 与 `generate` / `analyze` 共享同一套 `.gitignore` 感知排除模块;若仓库没有 `.gitignore`,则回退到默认 `exclude` 列表。
888
+
889
+ 支持的提交 TAG 类型:`[REFACTOR]`, `[TEST]`, `[DOCS]`, `[FEAT]`, `[FIX]`, `[CHORE]`, `[PERF]`, `[SECURITY]`, `[BREAKING]`, `[HOTFIX]`, `[MIGRATION]`, `[WIP]`
@@ -0,0 +1,38 @@
1
+ import { AIProvider, type AIProviderConfig, type AIResponse } from './provider.js';
2
+ import type { CodeMap } from '../types/index.js';
3
+ /**
4
+ * Claude Provider 配置
5
+ */
6
+ export interface ClaudeProviderConfig extends AIProviderConfig {
7
+ /** CLI 路径,默认 claude */
8
+ cliPath?: string;
9
+ }
10
+ /**
11
+ * Claude Provider - 通过 CLI 调用 Claude
12
+ */
13
+ export declare class ClaudeProvider extends AIProvider {
14
+ readonly name: "claude";
15
+ private cliPath;
16
+ constructor(config?: ClaudeProviderConfig);
17
+ /**
18
+ * 执行 AI 推理
19
+ */
20
+ execute(prompt: string, context?: CodeMap): Promise<AIResponse>;
21
+ /**
22
+ * 检查 Claude CLI 是否可用
23
+ */
24
+ isAvailable(): Promise<boolean>;
25
+ /**
26
+ * 构建提示词
27
+ */
28
+ private buildPrompt;
29
+ /**
30
+ * 总结 CodeMap 上下文
31
+ */
32
+ private summarizeContext;
33
+ /**
34
+ * 解析 Claude CLI JSON 响应
35
+ */
36
+ private parseResponse;
37
+ }
38
+ //# sourceMappingURL=claude.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude.d.ts","sourceRoot":"","sources":["../../src/ai/claude.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,UAAU,EAAE,KAAK,gBAAgB,EAAE,KAAK,UAAU,EAAE,MAAM,eAAe,CAAC;AACnF,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAWjD;;GAEG;AACH,MAAM,WAAW,oBAAqB,SAAQ,gBAAgB;IAC5D,uBAAuB;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,qBAAa,cAAe,SAAQ,UAAU;IAC5C,SAAgB,IAAI,EAAG,QAAQ,CAAU;IACzC,OAAO,CAAC,OAAO,CAAS;gBAEZ,MAAM,GAAE,oBAAyB;IAK7C;;OAEG;IACG,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC;IAoErE;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAsBrC;;OAEG;IACH,OAAO,CAAC,WAAW;IAWnB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAsCxB;;OAEG;IACH,OAAO,CAAC,aAAa;CA6BtB"}
@@ -0,0 +1,169 @@
1
+ // ============================================
2
+ // Claude CLI Provider 实现
3
+ // ============================================
4
+ import { spawn } from 'child_process';
5
+ import { AIProvider } from './provider.js';
6
+ /**
7
+ * Claude Provider - 通过 CLI 调用 Claude
8
+ */
9
+ export class ClaudeProvider extends AIProvider {
10
+ name = 'claude';
11
+ cliPath;
12
+ constructor(config = {}) {
13
+ super(config);
14
+ this.cliPath = config.cliPath || 'claude';
15
+ }
16
+ /**
17
+ * 执行 AI 推理
18
+ */
19
+ async execute(prompt, context) {
20
+ const timeout = this.config.timeout || 60000;
21
+ // 构建包含上下文的完整提示词
22
+ const fullPrompt = this.buildPrompt(prompt, context);
23
+ return new Promise((resolve, reject) => {
24
+ const args = [
25
+ '-p',
26
+ '--output-format', 'json',
27
+ '--dangerously-skip-permissions'
28
+ ];
29
+ let stdout = '';
30
+ let stderr = '';
31
+ let killed = false;
32
+ const proc = spawn(this.cliPath, args, {
33
+ stdio: ['pipe', 'pipe', 'pipe'],
34
+ timeout
35
+ });
36
+ // 超时处理
37
+ const timeoutId = setTimeout(() => {
38
+ killed = true;
39
+ proc.kill('SIGTERM');
40
+ reject(new Error(`Claude 执行超时(${timeout / 1000}秒)`));
41
+ }, timeout);
42
+ proc.stdout.on('data', (data) => {
43
+ stdout += data.toString();
44
+ });
45
+ proc.stderr.on('data', (data) => {
46
+ stderr += data.toString();
47
+ });
48
+ proc.on('close', (code) => {
49
+ clearTimeout(timeoutId);
50
+ if (killed)
51
+ return;
52
+ if (code !== 0 && code !== null) {
53
+ reject(new Error(`Claude CLI 错误: ${stderr || `exit code ${code}`}`));
54
+ return;
55
+ }
56
+ try {
57
+ const response = this.parseResponse(stdout);
58
+ resolve(response);
59
+ }
60
+ catch (error) {
61
+ reject(new Error(`解析 Claude 响应失败: ${error instanceof Error ? error.message : String(error)}`));
62
+ }
63
+ });
64
+ proc.on('error', (error) => {
65
+ clearTimeout(timeoutId);
66
+ if (!killed) {
67
+ reject(new Error(`Claude CLI 执行失败: ${error.message}`));
68
+ }
69
+ });
70
+ // 发送提示词
71
+ proc.stdin.write(fullPrompt);
72
+ proc.stdin.end();
73
+ });
74
+ }
75
+ /**
76
+ * 检查 Claude CLI 是否可用
77
+ */
78
+ async isAvailable() {
79
+ return new Promise((resolve) => {
80
+ const proc = spawn(this.cliPath, ['--version'], {
81
+ stdio: 'ignore'
82
+ });
83
+ proc.on('close', (code) => {
84
+ resolve(code === 0);
85
+ });
86
+ proc.on('error', () => {
87
+ resolve(false);
88
+ });
89
+ // 2 秒超时
90
+ setTimeout(() => {
91
+ proc.kill();
92
+ resolve(false);
93
+ }, 2000);
94
+ });
95
+ }
96
+ /**
97
+ * 构建提示词
98
+ */
99
+ buildPrompt(prompt, context) {
100
+ let fullPrompt = prompt;
101
+ if (context) {
102
+ const contextInfo = this.summarizeContext(context);
103
+ fullPrompt = `${contextInfo}\n\n---\n\n${prompt}`;
104
+ }
105
+ return fullPrompt;
106
+ }
107
+ /**
108
+ * 总结 CodeMap 上下文
109
+ */
110
+ summarizeContext(codeMap) {
111
+ const lines = [];
112
+ lines.push('# Project Context');
113
+ lines.push('');
114
+ lines.push(`Project: ${codeMap.project.name}`);
115
+ lines.push(`Total Files: ${codeMap.summary.totalFiles}`);
116
+ lines.push(`Total Modules: ${codeMap.summary.totalModules}`);
117
+ lines.push('');
118
+ // 入口点
119
+ const entryPoints = codeMap.modules.filter(m => {
120
+ const basename = require('path').basename(m.path);
121
+ return basename === 'index.ts' || basename === 'main.ts' || basename === 'app.ts';
122
+ });
123
+ if (entryPoints.length > 0) {
124
+ lines.push('## Entry Points');
125
+ for (const ep of entryPoints.slice(0, 5)) {
126
+ lines.push(`- ${ep.path}`);
127
+ }
128
+ lines.push('');
129
+ }
130
+ // 模块列表
131
+ lines.push('## Modules');
132
+ for (const mod of codeMap.modules.slice(0, 20)) {
133
+ const exports = mod.exports.map(e => e.name).join(', ');
134
+ lines.push(`- ${mod.path}: ${exports || '(no exports)'}`);
135
+ }
136
+ if (codeMap.modules.length > 20) {
137
+ lines.push(`- ... and ${codeMap.modules.length - 20} more`);
138
+ }
139
+ return lines.join('\n');
140
+ }
141
+ /**
142
+ * 解析 Claude CLI JSON 响应
143
+ */
144
+ parseResponse(stdout) {
145
+ // Claude 可能输出多行 JSON,需要找到有效的 JSON
146
+ const lines = stdout.trim().split('\n');
147
+ let jsonStr = '';
148
+ // 从后往前找有效的 JSON 对象
149
+ for (let i = lines.length - 1; i >= 0; i--) {
150
+ const line = lines[i].trim();
151
+ if (line.startsWith('{') && line.endsWith('}')) {
152
+ jsonStr = line;
153
+ break;
154
+ }
155
+ }
156
+ if (!jsonStr) {
157
+ // 如果没有 JSON,直接返回原始输出
158
+ return { content: stdout.trim() };
159
+ }
160
+ const parsed = JSON.parse(jsonStr);
161
+ if (parsed.error) {
162
+ throw new Error(parsed.error);
163
+ }
164
+ return {
165
+ content: parsed.result || stdout.trim()
166
+ };
167
+ }
168
+ }
169
+ //# sourceMappingURL=claude.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude.js","sourceRoot":"","sources":["../../src/ai/claude.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ import { AIProvider, type AIProviderConfig, type AIResponse } from './provider.js';
2
+ import type { CodeMap } from '../types/index.js';
3
+ /**
4
+ * Codex Provider 配置
5
+ */
6
+ export interface CodexProviderConfig extends AIProviderConfig {
7
+ /** CLI 路径,默认 codex */
8
+ cliPath?: string;
9
+ }
10
+ /**
11
+ * Codex Provider - 通过 CLI 调用 Codex
12
+ */
13
+ export declare class CodexProvider extends AIProvider {
14
+ readonly name: "codex";
15
+ private cliPath;
16
+ constructor(config?: CodexProviderConfig);
17
+ /**
18
+ * 执行 AI 推理
19
+ */
20
+ execute(prompt: string, context?: CodeMap): Promise<AIResponse>;
21
+ /**
22
+ * 检查 Codex CLI 是否可用
23
+ */
24
+ isAvailable(): Promise<boolean>;
25
+ /**
26
+ * 构建提示词
27
+ */
28
+ private buildPrompt;
29
+ /**
30
+ * 总结 CodeMap 上下文
31
+ */
32
+ private summarizeContext;
33
+ /**
34
+ * 解析 Codex CLI JSON 响应
35
+ */
36
+ private parseResponse;
37
+ }
38
+ //# sourceMappingURL=codex.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codex.d.ts","sourceRoot":"","sources":["../../src/ai/codex.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,UAAU,EAAE,KAAK,gBAAgB,EAAE,KAAK,UAAU,EAAE,MAAM,eAAe,CAAC;AACnF,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAEjD;;GAEG;AACH,MAAM,WAAW,mBAAoB,SAAQ,gBAAgB;IAC3D,sBAAsB;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,qBAAa,aAAc,SAAQ,UAAU;IAC3C,SAAgB,IAAI,EAAG,OAAO,CAAU;IACxC,OAAO,CAAC,OAAO,CAAS;gBAEZ,MAAM,GAAE,mBAAwB;IAK5C;;OAEG;IACG,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC;IAiErE;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAsBrC;;OAEG;IACH,OAAO,CAAC,WAAW;IAWnB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAsCxB;;OAEG;IACH,OAAO,CAAC,aAAa;CA4BtB"}