@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.
- package/CHANGELOG.md +92 -3
- package/README.md +117 -46
- package/dist/ai/claude.d.ts +38 -0
- package/dist/ai/claude.d.ts.map +1 -0
- package/dist/ai/claude.js +169 -0
- package/dist/ai/claude.js.map +1 -0
- package/dist/ai/codex.d.ts +38 -0
- package/dist/ai/codex.d.ts.map +1 -0
- package/dist/ai/codex.js +169 -0
- package/dist/ai/codex.js.map +1 -0
- package/dist/ai/factory.d.ts +48 -0
- package/dist/ai/factory.d.ts.map +1 -0
- package/dist/ai/factory.js +95 -0
- package/dist/ai/factory.js.map +1 -0
- package/dist/ai/index.d.ts +12 -0
- package/dist/ai/index.d.ts.map +1 -0
- package/dist/ai/index.js +29 -0
- package/dist/ai/index.js.map +1 -0
- package/dist/ai/provider.d.ts +70 -0
- package/dist/ai/provider.d.ts.map +1 -0
- package/dist/ai/provider.js +31 -0
- package/dist/ai/provider.js.map +1 -0
- package/dist/ai/subagent-caller.d.ts +90 -0
- package/dist/ai/subagent-caller.d.ts.map +1 -0
- package/dist/ai/subagent-caller.js +280 -0
- package/dist/ai/subagent-caller.js.map +1 -0
- package/dist/ai/types.d.ts +70 -0
- package/dist/ai/types.d.ts.map +1 -0
- package/dist/ai/types.js +5 -0
- package/dist/ai/types.js.map +1 -0
- package/dist/cli/commands/design.d.ts +47 -0
- package/dist/cli/commands/design.d.ts.map +1 -0
- package/dist/cli/commands/design.js +268 -0
- package/dist/cli/commands/design.js.map +1 -0
- package/dist/cli/commands/server.d.ts +9 -0
- package/dist/cli/commands/server.d.ts.map +1 -0
- package/dist/cli/commands/server.js +65 -0
- package/dist/cli/commands/server.js.map +1 -0
- package/dist/cli/commands/ship/pipeline.d.ts.map +1 -1
- package/dist/cli/commands/ship/pipeline.js +8 -1
- package/dist/cli/commands/ship/pipeline.js.map +1 -1
- package/dist/cli/commands/ship/publisher.d.ts +9 -1
- package/dist/cli/commands/ship/publisher.d.ts.map +1 -1
- package/dist/cli/commands/ship/publisher.js +149 -6
- package/dist/cli/commands/ship/publisher.js.map +1 -1
- package/dist/cli/design-contract-loader.d.ts +15 -0
- package/dist/cli/design-contract-loader.d.ts.map +1 -0
- package/dist/cli/design-contract-loader.js +175 -0
- package/dist/cli/design-contract-loader.js.map +1 -0
- package/dist/cli/design-contract-schema.d.ts +11 -0
- package/dist/cli/design-contract-schema.d.ts.map +1 -0
- package/dist/cli/design-contract-schema.js +75 -0
- package/dist/cli/design-contract-schema.js.map +1 -0
- package/dist/cli/design-handoff-builder.d.ts +15 -0
- package/dist/cli/design-handoff-builder.d.ts.map +1 -0
- package/dist/cli/design-handoff-builder.js +345 -0
- package/dist/cli/design-handoff-builder.js.map +1 -0
- package/dist/cli/design-scope-resolver.d.ts +8 -0
- package/dist/cli/design-scope-resolver.d.ts.map +1 -0
- package/dist/cli/design-scope-resolver.js +712 -0
- package/dist/cli/design-scope-resolver.js.map +1 -0
- package/dist/cli/design-verification-builder.d.ts +8 -0
- package/dist/cli/design-verification-builder.d.ts.map +1 -0
- package/dist/cli/design-verification-builder.js +369 -0
- package/dist/cli/design-verification-builder.js.map +1 -0
- package/dist/cli/index.js +2 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/cli-new/commands/server.d.ts +13 -0
- package/dist/cli-new/commands/server.d.ts.map +1 -0
- package/dist/cli-new/commands/server.js +90 -0
- package/dist/cli-new/commands/server.js.map +1 -0
- package/dist/generator/ai-overview.d.ts +51 -0
- package/dist/generator/ai-overview.d.ts.map +1 -0
- package/dist/generator/ai-overview.js +160 -0
- package/dist/generator/ai-overview.js.map +1 -0
- package/dist/infrastructure/storage/StorageFactory.d.ts +12 -5
- package/dist/infrastructure/storage/StorageFactory.d.ts.map +1 -1
- package/dist/infrastructure/storage/StorageFactory.js +55 -14
- package/dist/infrastructure/storage/StorageFactory.js.map +1 -1
- package/dist/infrastructure/storage/adapters/Neo4jStorage.d.ts +41 -0
- package/dist/infrastructure/storage/adapters/Neo4jStorage.d.ts.map +1 -0
- package/dist/infrastructure/storage/adapters/Neo4jStorage.js +162 -0
- package/dist/infrastructure/storage/adapters/Neo4jStorage.js.map +1 -0
- package/dist/interface/types/design-contract.d.ts +68 -0
- package/dist/interface/types/design-contract.d.ts.map +1 -0
- package/dist/interface/types/design-contract.js +7 -0
- package/dist/interface/types/design-contract.js.map +1 -0
- package/dist/interface/types/design-handoff.d.ts +68 -0
- package/dist/interface/types/design-handoff.d.ts.map +1 -0
- package/dist/interface/types/design-handoff.js +4 -0
- package/dist/interface/types/design-handoff.js.map +1 -0
- package/dist/interface/types/design-mapping.d.ts +51 -0
- package/dist/interface/types/design-mapping.d.ts.map +1 -0
- package/dist/interface/types/design-mapping.js +4 -0
- package/dist/interface/types/design-mapping.js.map +1 -0
- package/dist/interface/types/design-verification.d.ts +49 -0
- package/dist/interface/types/design-verification.d.ts.map +1 -0
- package/dist/interface/types/design-verification.js +4 -0
- package/dist/interface/types/design-verification.js.map +1 -0
- package/dist/interface/types/index.d.ts +4 -0
- package/dist/interface/types/index.d.ts.map +1 -1
- package/dist/orchestrator/ai-feed-generator.d.ts +210 -0
- package/dist/orchestrator/ai-feed-generator.d.ts.map +1 -0
- package/dist/orchestrator/ai-feed-generator.js +377 -0
- package/dist/orchestrator/ai-feed-generator.js.map +1 -0
- package/docs/ai-guide/COMMANDS.md +73 -0
- package/docs/ai-guide/OUTPUT.md +415 -0
- package/docs/ai-guide/PATTERNS.md +14 -4
- package/docs/ai-guide/PROMPTS.md +12 -6
- package/docs/archive/test-report-symbol-search.md +384 -0
- package/docs/archive/test-scenario-4-complexity-analysis.md +460 -0
- package/docs/archive/test_report_scenario5.md +615 -0
- package/docs/archive/test_scenario_3_impact_analysis_report.md +520 -0
- package/docs/product-specs/DESIGN_CONTRACT_TEMPLATE.md +79 -0
- package/docs/product-specs/README.md +2 -1
- package/docs/rules/engineering-with-codex-openai.md +6 -2
- package/docs/rules/validation.md +9 -6
- package/package.json +1 -1
- package/scripts/experiments/arcadedb-http-smoke.mjs +90 -0
- 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"}
|