@mycodemap/mycodemap 0.1.0 → 0.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 (64) hide show
  1. package/CHANGELOG.md +86 -6
  2. package/README.md +172 -80
  3. package/dist/cli/commands/cycles.d.ts.map +1 -1
  4. package/dist/cli/commands/cycles.js +2 -0
  5. package/dist/cli/commands/cycles.js.map +1 -1
  6. package/dist/cli/commands/init.d.ts.map +1 -1
  7. package/dist/cli/commands/init.js +3 -1
  8. package/dist/cli/commands/init.js.map +1 -1
  9. package/dist/cli/commands/logs.d.ts +5 -0
  10. package/dist/cli/commands/logs.d.ts.map +1 -0
  11. package/dist/cli/commands/logs.js +189 -0
  12. package/dist/cli/commands/logs.js.map +1 -0
  13. package/dist/cli/commands/report.d.ts +12 -0
  14. package/dist/cli/commands/report.d.ts.map +1 -0
  15. package/dist/cli/commands/report.js +158 -0
  16. package/dist/cli/commands/report.js.map +1 -0
  17. package/dist/cli/commands/watch-foreground.d.ts.map +1 -1
  18. package/dist/cli/commands/watch-foreground.js +2 -0
  19. package/dist/cli/commands/watch-foreground.js.map +1 -1
  20. package/dist/cli/commands/watch.d.ts.map +1 -1
  21. package/dist/cli/commands/watch.js +2 -0
  22. package/dist/cli/commands/watch.js.map +1 -1
  23. package/dist/cli/first-run-guide.d.ts +23 -0
  24. package/dist/cli/first-run-guide.d.ts.map +1 -0
  25. package/dist/cli/first-run-guide.js +83 -0
  26. package/dist/cli/first-run-guide.js.map +1 -0
  27. package/dist/cli/index.js +63 -0
  28. package/dist/cli/index.js.map +1 -1
  29. package/dist/cli/platform-check.d.ts +21 -0
  30. package/dist/cli/platform-check.d.ts.map +1 -0
  31. package/dist/cli/platform-check.js +94 -0
  32. package/dist/cli/platform-check.js.map +1 -0
  33. package/dist/cli/tree-sitter-check.d.ts +35 -0
  34. package/dist/cli/tree-sitter-check.d.ts.map +1 -0
  35. package/dist/cli/tree-sitter-check.js +133 -0
  36. package/dist/cli/tree-sitter-check.js.map +1 -0
  37. package/dist/cli/utils/sanitize.d.ts +54 -0
  38. package/dist/cli/utils/sanitize.d.ts.map +1 -0
  39. package/dist/cli/utils/sanitize.js +131 -0
  40. package/dist/cli/utils/sanitize.js.map +1 -0
  41. package/docs/AI_ASSISTANT_SETUP.md +743 -0
  42. package/docs/CI_GATEWAY_DESIGN.md +784 -0
  43. package/docs/OMC_TEAM_DEBUG_REPORT.md +285 -0
  44. package/docs/PUBLISH_NPM_DESIGN_FINAL.md +485 -0
  45. package/docs/REFACTOR_ARCHITECTURE_OVERVIEW.md +552 -0
  46. package/docs/REFACTOR_CONFIDENCE_DESIGN.md +244 -0
  47. package/docs/REFACTOR_GIT_ANALYZER_DESIGN.md +785 -0
  48. package/docs/REFACTOR_ORCHESTRATOR_DESIGN.md +1065 -0
  49. package/docs/REFACTOR_REQUIREMENTS.md +970 -0
  50. package/docs/REFACTOR_RESULT_FUSION_DESIGN.md +315 -0
  51. package/docs/REFACTOR_TEST_LINKER_DESIGN.md +311 -0
  52. package/docs/SETUP_GUIDE.md +407 -0
  53. package/docs/archive/AI_INTEGRATION_GUIDE_ARCHIVED.md +385 -0
  54. package/docs/archive/PUBLISH_NPM_DESIGN_V1.md +1693 -0
  55. package/docs/archive/PUBLISH_NPM_DESIGN_V2.md +390 -0
  56. package/docs/archive/TASK_DESIGN_COVERAGE_REPORT.md +314 -0
  57. package/docs/plans/POST_TASK_PLAN.md +129 -0
  58. package/docs/plans/archive/2026-03-03-deps-path-extension-fix.md +186 -0
  59. package/examples/README.md +61 -0
  60. package/examples/claude/codemap-skill.md +94 -0
  61. package/examples/codex/codemap-agent.md +66 -0
  62. package/examples/copilot/copilot-instructions.md +24 -0
  63. package/examples/kimi/codemap-skill.md +92 -0
  64. package/package.json +5 -3
@@ -0,0 +1,485 @@
1
+ # MyCodeMap NPM 发布最终设计方案(Merged V3)
2
+
3
+ > 版本:3.0(Final)
4
+ > 日期:2026-03-04
5
+ > 来源:合并 `docs/archive/PUBLISH_NPM_DESIGN_V1.md` + `docs/archive/PUBLISH_NPM_DESIGN_V2.md`
6
+
7
+ ---
8
+
9
+ ## 1. 目标与范围
10
+
11
+ - [证据] 目标是把当前 `codemap` 项目发布为可被外部项目直接使用的 npm 包,并建立可持续的发布流程。当前项目是 CLI + 库混合包(`package.json:2`, `package.json:7`, `src/cli/index.ts:1`)。
12
+ - [观点] 本方案采用“先发布闭环、后功能增强”的两阶段策略,避免一次性改动过大导致回归。
13
+
14
+ ### 1.1 非目标(本次不做)
15
+
16
+ - [观点] 不在 P0 引入大范围新功能(如 `report`、`logs` 新命令、平台首启引导)。
17
+ - [推论] 这些内容可在 P1 增强中实现,避免与品牌/发布改造耦合。
18
+
19
+ ---
20
+
21
+ ## 2. 前置条件(DoD 前先定义)
22
+
23
+ ### 2.1 目标
24
+
25
+ - [观点] 产出可发布、可验证、可回滚的 npm 包(scoped)。
26
+
27
+ ### 2.2 限制条件
28
+
29
+ - [证据] 现有代码大量硬编码 `.codemap` 和 `codemap.json`(例如 `src/cli/commands/query.ts:320`, `src/orchestrator/workflow/ci-executor.ts:405-406`)。
30
+ - [证据] 当前仓库缺失 `LICENSE` 与 schema 文件(`ls LICENSE` 失败;`rg --files -g "*schema*.json"` 无结果)。
31
+ - [证据] 当前 `npm pack --dry-run --json` 实测包内缺失 `LICENSE`/`codemap.config.schema.json`/`CHANGELOG.md`。
32
+
33
+ ### 2.3 验收标准
34
+
35
+ - [观点] P0 验收以“发布闭环可跑通”为准:构建、测试、打包内容、发布流程、安装验证全部通过。
36
+ - [观点] P1 验收以“可观测性增强”与“用户反馈链路”通过为准。
37
+
38
+ ### 2.4 依赖关系
39
+
40
+ - [证据] npm 包内容控制遵循 `files`/`.npmignore` 规则(https://docs.npmjs.com/cli/v11/configuring-npm/package-json/)。
41
+ - [证据] scoped 包首次公开发布需 `--access public`(https://docs.npmjs.com/creating-and-publishing-scoped-public-packages)。
42
+ - [证据] 推荐使用 OIDC Trusted Publishing(https://docs.npmjs.com/trusted-publishers/)。
43
+
44
+ ---
45
+
46
+ ## 3. 关键评审结论(对两份方案的合并决策)
47
+
48
+ ### 3.1 包命名与发布方式
49
+
50
+ - [证据] V1 使用 `mycodemap`(`docs/archive/PUBLISH_NPM_DESIGN_V1.md:159`),V2 使用 `@mycodemap/mycodemap`(`docs/archive/PUBLISH_NPM_DESIGN_V2.md:42`)。
51
+ - [观点] 采用 `@mycodemap/mycodemap` 作为最终包名(避免命名冲突、便于品牌命名空间)。
52
+ - [证据] scope 可避免同名冲突,且 scoped 包默认非公开,首次需 `--access public`(https://docs.npmjs.com/about-scopes, https://docs.npmjs.com/cli/v8/commands/npm-publish/)。
53
+
54
+ ### 3.2 兼容策略(必须保留迁移窗口)
55
+
56
+ - [证据] 当前运行时日志环境变量是 `CODEMAP_*`(`src/cli/runtime-logger.ts:140-144`)。
57
+ - [观点] 采用“双前缀兼容一版”:`MYCODEMAP_*` 优先,`CODEMAP_*` 兜底并输出 deprecation 提示。
58
+
59
+ ### 3.3 改名范围控制
60
+
61
+ - [证据] 代码中 `.codemap` 与 `codemap.json` 引用分布广(例如 `src/cli/index.ts:39`, `src/cli/commands/deps.ts:45`, `src/orchestrator/adapters/codemap-adapter.ts:56`)。
62
+ - [观点] P0 只改“入口命名 + 兼容层 + 默认输出目录策略”,不做全量硬替换;避免一次性回归。
63
+
64
+ ### 3.4 发布安全基线
65
+
66
+ - [证据] npm 官方将 OIDC trusted publishing 作为推荐安全路径(https://docs.npmjs.com/trusted-publishers/)。
67
+ - [证据] trusted publishing 下可自动生成 provenance(https://docs.npmjs.com/trusted-publishers/)。
68
+ - [观点] P0 发布 workflow 默认使用 OIDC;token 方案仅作 fallback。
69
+
70
+ ---
71
+
72
+ ## 4. 最终方案(两阶段)
73
+
74
+ ## Phase P0:发布闭环(必须先完成)
75
+
76
+ ### P0-1 package.json 目标形态
77
+
78
+ ```json
79
+ {
80
+ "name": "@mycodemap/mycodemap",
81
+ "version": "0.1.0",
82
+ "type": "module",
83
+ "main": "./dist/index.js",
84
+ "exports": {
85
+ ".": "./dist/index.js",
86
+ "./package.json": "./package.json"
87
+ },
88
+ "bin": {
89
+ "mycodemap": "./dist/cli/index.js",
90
+ "codemap": "./dist/cli/index.js"
91
+ },
92
+ "files": [
93
+ "dist/",
94
+ "README.md",
95
+ "LICENSE",
96
+ "CHANGELOG.md",
97
+ "mycodemap.config.schema.json"
98
+ ],
99
+ "engines": {
100
+ "node": ">=18.0.0"
101
+ },
102
+ "publishConfig": {
103
+ "access": "public",
104
+ "registry": "https://registry.npmjs.org/"
105
+ }
106
+ }
107
+ ```
108
+
109
+ - [证据] `exports` 对新包推荐,且与 `main` 可并存(https://nodejs.org/api/packages.html#package-entry-points)。
110
+ - [证据] `files` 白名单是发布内容主控制项,根 `.npmignore` 不覆盖 `files`(https://docs.npmjs.com/cli/v11/configuring-npm/package-json/)。
111
+ - [观点] 保留 `codemap` bin 作为兼容别名 1 个小版本,降低现有脚本断裂风险。
112
+
113
+ ### P0-2 配置/目录兼容策略
114
+
115
+ - [观点] 新默认:`mycodemap.config.json` + `.mycodemap/`。
116
+ - [观点] 读取策略:优先新命名,回退旧命名;发现旧命名时输出迁移提示。
117
+ - [观点] `codemap.json` 在 P0 保持文件名不变(仅目录可迁移),避免横向影响 orchestrator/query 流程。
118
+ - [证据] 当前 `codemap.json` 被多模块强依赖(`src/generator/index.ts:292`, `src/cli/commands/query.ts:320`, `src/orchestrator/workflow/ci-executor.ts:406`)。
119
+
120
+ ### P0-3 环境变量兼容策略
121
+
122
+ - [观点] 新增解析:
123
+ - `MYCODEMAP_RUNTIME_LOG_*`(新)
124
+ - `CODEMAP_RUNTIME_LOG_*`(旧,低优先级)
125
+ - [证据] 现实现只识别旧前缀(`src/cli/runtime-logger.ts:140-144`)。
126
+
127
+ ### P0-4 发布工作流(OIDC 优先)
128
+
129
+ - [观点] 新增 `.github/workflows/publish.yml`(tag 触发)。
130
+ - [证据] GitHub Actions 需 `id-token: write` 才能 OIDC 发布(https://docs.npmjs.com/trusted-publishers/)。
131
+ - [证据] 若使用 provenance,首次 scoped 公共发布命令为 `npm publish --provenance --access public`(https://docs.npmjs.com/generating-provenance-statements/)。
132
+
133
+ 建议 workflow(简化):
134
+
135
+ ```yaml
136
+ name: Publish
137
+ on:
138
+ push:
139
+ tags: ["v*"]
140
+ permissions:
141
+ id-token: write
142
+ contents: read
143
+ jobs:
144
+ publish:
145
+ runs-on: ubuntu-latest
146
+ steps:
147
+ - uses: actions/checkout@v4
148
+ - uses: actions/setup-node@v4
149
+ with:
150
+ node-version: 24
151
+ registry-url: https://registry.npmjs.org
152
+ - run: npm ci
153
+ - run: npm test
154
+ - run: npm run build
155
+ - run: npm publish --access public
156
+ ```
157
+
158
+ - [证据] trusted publishing 自动 provenance(公有仓库 + 公共包)可不显式加 `--provenance`(https://docs.npmjs.com/trusted-publishers/)。
159
+ - [假设] 若仓库/权限未满足 trusted publishing 条件,则暂用 granular token fallback。
160
+
161
+ ### P0-5 预测试(强制)
162
+
163
+ - [证据] 实际失败案例:当前 `npm pack --dry-run --json` 缺失 `LICENSE`、schema、`CHANGELOG.md`。
164
+ - [观点] 在 CI 与本地都加“打包内容断言”:
165
+ 1. `npm pack --dry-run --json > pack.json`
166
+ 2. 断言包含:`dist/`、`README.md`、`LICENSE`、`CHANGELOG.md`、`mycodemap.config.schema.json`
167
+
168
+ ---
169
+
170
+ ## Phase P1:增强功能(发布后迭代)
171
+
172
+ - [观点] 新增 `report` / `logs` 命令。
173
+ - [观点] 平台检测与首次使用引导。
174
+ - [观点] 进一步品牌统一:评估 `codemap.json` 是否迁移到 `mycodemap.json`(若迁移需双写 + 弃用周期)。
175
+ - [证据] V1 中该类功能较完整但代码片段质量不稳定(如 `docs/archive/PUBLISH_NPM_DESIGN_V1.md:1005-1015` 结构风险),应在实现阶段重新设计而非直接复制。
176
+
177
+ ### P1-1 功能范围冻结(合并自 V1/V2)
178
+
179
+ | 模块 | 目标能力 | 输入/输出 | 验收标准 |
180
+ |---|---|---|---|
181
+ | `report` 命令 | 采集诊断信息并脱敏导出 | 输入:`--output`、`--days`;输出:`mycodemap-report-*.json` | 报告生成成功,敏感值被脱敏,大小限制生效 |
182
+ | `logs` 命令 | 日志列表/导出/清理 | 输入:`logs`/`logs export`/`logs clear`;输出:终端提示 + zip | 可列出日志、可导出、可清理且不影响主流程 |
183
+ | 平台检测 | 启动时识别平台支持级别 | 输入:`os/arch/node`;输出:提示文案 | 不阻断已支持平台;不支持平台给出明确错误 |
184
+ | tree-sitter 按需检测 | 仅在需要 AST 的命令执行检测 | 输入:命令上下文;输出:错误提示/继续执行 | `init/query` 不触发检测;`generate/complexity/watch` 触发 |
185
+ | 首次运行引导 | 无配置时输出快速开始指南 | 输入:cwd 状态;输出:欢迎与下一步命令 | 首次展示,后续不重复打扰 |
186
+ | 迁移提示 | 检测旧配置与旧前缀 | 输入:`codemap.config.json`、`CODEMAP_*` | 输出 deprecation 提示且仍可运行 |
187
+
188
+ ### P1-2 P1 实施约束
189
+
190
+ - [观点] P1 必须建立在 P0 已发布成功之上,不允许并行推进导致发布路径不稳定。
191
+ - [观点] P1 中任何新增命令都要附带测试(单测 + CLI 冒烟)。
192
+ - [证据] 项目测试框架为 Vitest(`vitest.config.ts:7`),P1 测试必须使用 Vitest 语法,不能使用 Jest 示例片段。
193
+
194
+ ---
195
+
196
+ ## 5. 文件改动清单(P0)
197
+
198
+ ### 必改
199
+
200
+ - `package.json`
201
+ - `src/cli/index.ts`
202
+ - `src/cli/commands/init.ts`
203
+ - `src/cli/runtime-logger.ts`
204
+ - `src/cli/commands/{generate,watch,query,deps,cycles,complexity,impact,analyze}.ts`(统一输出目录读取逻辑)
205
+ - `src/orchestrator/adapters/codemap-adapter.ts`
206
+ - `src/orchestrator/workflow/{config.ts,workflow-persistence.ts,workflow-orchestrator.ts,templates.ts,ci-executor.ts}`
207
+ - `.github/workflows/ci-gateway.yml`(命令名迁移)
208
+ - `.githooks/pre-commit`
209
+ - `scripts/hooks/pre-commit`
210
+ - `README.md`
211
+
212
+ ### 新增
213
+
214
+ - `LICENSE`
215
+ - `CHANGELOG.md`
216
+ - `mycodemap.config.schema.json`
217
+ - `.github/workflows/publish.yml`
218
+
219
+ ---
220
+
221
+ ## 6. 原子化实施步骤(每步 <= 1 天)
222
+
223
+ 1. [观点] **Step A:发布元数据与缺失文件补齐**(`package.json` + `LICENSE` + `CHANGELOG` + schema)。
224
+ 2. [观点] **Step B:CLI 命名与配置兼容层**(`mycodemap` 主命令 + `codemap` 兼容)。
225
+ 3. [观点] **Step C:输出目录统一入口**(新增路径解析工具,替换分散硬编码)。
226
+ 4. [观点] **Step D:环境变量双前缀兼容**(新前缀优先 + 弃用告警)。
227
+ 5. [观点] **Step E:CI 与发布 workflow 更新**(CI 命令迁移 + publish.yml)。
228
+ 6. [观点] **Step F:回归测试 + 打包验证 + npx 安装验证**。
229
+
230
+ ---
231
+
232
+ ## 7. 测试与验证计划
233
+
234
+ ### 7.1 本地验证
235
+
236
+ ```bash
237
+ npm run build
238
+ npm test
239
+ npm run typecheck
240
+ npm run lint
241
+ npm pack --dry-run --json
242
+ ```
243
+
244
+ ### 7.2 安装验证
245
+
246
+ ```bash
247
+ # 本地临时安装包
248
+ npm pack
249
+ npm i -g ./mycodemap-*.tgz
250
+ mycodemap --version
251
+ codemap --version
252
+ ```
253
+
254
+ ### 7.3 CI 验证
255
+
256
+ - [观点] CI 必须包含:测试、类型、lint、打包内容断言、命令冒烟测试。
257
+
258
+ ---
259
+
260
+ ## 8. 失败场景与回滚
261
+
262
+ ### 失败场景 A(已发生)
263
+
264
+ - [证据] `npm pack --dry-run --json` 缺失发布必需文件,导致发布包不完整。
265
+ - [观点] 处置:在发布前 gate 中强制检查 tarball 清单,不通过即阻断发布。
266
+
267
+ ### 失败场景 B
268
+
269
+ - [假设] 全量替换 `.codemap` -> `.mycodemap` 导致旧脚本失效。
270
+ - [观点] 处置:P0 保留兼容读取;发布说明明确迁移窗口;下个小版本再移除旧路径。
271
+
272
+ ### 回滚策略
273
+
274
+ - [观点] 若发布后发现严重问题:
275
+ 1. 立即发布修复补丁版本(不建议 unpublish);
276
+ 2. README/CHANGELOG 标明受影响版本与规避方案;
277
+ 3. 必要时 `npm deprecate` 问题版本。
278
+
279
+ ---
280
+
281
+ ## 9. 风险矩阵(合并版)
282
+
283
+ | 风险 | 概率 | 影响 | 缓解 |
284
+ |---|---|---|---|
285
+ | 一次性全量改名导致回归 | 中 | 高 | 分阶段 + 兼容层 |
286
+ | 包内容缺失 | 中 | 高 | `npm pack --dry-run --json` gate |
287
+ | scoped 首次发布权限错误 | 中 | 中 | 首次强制 `--access public` |
288
+ | CI token 泄漏 | 低 | 高 | OIDC trusted publishing |
289
+ | 旧用户迁移成本 | 中 | 中 | 双命令/双前缀兼容 + 弃用提示 |
290
+
291
+ ---
292
+
293
+ ## 10. 最终 DoD
294
+
295
+ - [ ] `@mycodemap/mycodemap` 成功发布并可 `npx` 运行
296
+ - [ ] `mycodemap --version` 与 `codemap --version` 均可用(兼容窗口)
297
+ - [ ] 新旧配置/目录/环境变量兼容策略按设计生效
298
+ - [ ] CI 发布流程可重复执行(含失败阻断)
299
+ - [ ] 文档(README/CHANGELOG/迁移说明)完整
300
+
301
+ ---
302
+
303
+ ## 11. 证据索引
304
+
305
+ ### 11.1 本地代码证据
306
+
307
+ - `package.json:2`
308
+ - `package.json:7`
309
+ - `package.json:10`
310
+ - `src/cli/index.ts:25`
311
+ - `src/cli/index.ts:39`
312
+ - `src/cli/commands/init.ts:8`
313
+ - `src/cli/runtime-logger.ts:140`
314
+ - `src/generator/index.ts:292`
315
+ - `src/cli/commands/query.ts:320`
316
+ - `src/orchestrator/workflow/ci-executor.ts:405`
317
+ - `.github/workflows/ci-gateway.yml:33`
318
+ - `.githooks/pre-commit:55`
319
+
320
+ ### 11.2 官方最佳实践证据
321
+
322
+ - npm package.json(`name`/`files`/`.npmignore` 规则)
323
+ https://docs.npmjs.com/cli/v11/configuring-npm/package-json/
324
+ - npm publish(scoped 默认 access 与 `--access public`)
325
+ https://docs.npmjs.com/cli/v8/commands/npm-publish/
326
+ - Scoped public package 发布指南
327
+ https://docs.npmjs.com/creating-and-publishing-scoped-public-packages
328
+ - Trusted publishing(OIDC)
329
+ https://docs.npmjs.com/trusted-publishers/
330
+ - Provenance 生成与校验
331
+ https://docs.npmjs.com/generating-provenance-statements/
332
+ - Node package entry points(`exports` 推荐)
333
+ https://nodejs.org/api/packages.html#package-entry-points
334
+
335
+ ---
336
+
337
+ ## 12. 文档同步检查
338
+
339
+ - [观点] 本方案已作为实施基线文档;在代码实施完成后需同步检查:
340
+ - `README.md`
341
+ - `AGENTS.md`
342
+ - `CLAUDE.md`
343
+ - `docs/` 中与发布流程相关文档
344
+
345
+ ---
346
+
347
+ ## 13. 实施执行附录(Runbook)
348
+
349
+ > 目标:把 P0/P1 变成可直接执行的“操作清单 + 验收门禁”。
350
+
351
+ ### 13.1 P0 执行清单(发布闭环)
352
+
353
+ #### Step A(元数据与发布文件)
354
+
355
+ - 修改文件:`package.json`、新增 `LICENSE`、`CHANGELOG.md`、`mycodemap.config.schema.json`。
356
+ - 完成定义:
357
+ 1. `npm pack --dry-run --json` 包含 `LICENSE`、`CHANGELOG.md`、schema;
358
+ 2. `name`/`bin`/`publishConfig` 与第 4 节一致。
359
+ - 验证命令:
360
+
361
+ ```bash
362
+ npm run build
363
+ npm pack --dry-run --json > /tmp/pack.json
364
+ ```
365
+
366
+ #### Step B(CLI 命名与配置兼容)
367
+
368
+ - 修改文件:`src/cli/index.ts`、`src/cli/commands/init.ts`。
369
+ - 完成定义:
370
+ 1. 主命令文案为 `mycodemap`;
371
+ 2. 兼容 `codemap` 别名;
372
+ 3. `init` 生成新配置名并能识别旧配置。
373
+ - 验证命令:
374
+
375
+ ```bash
376
+ node dist/cli/index.js --help
377
+ node dist/cli/index.js init -y
378
+ ```
379
+
380
+ #### Step C(路径兼容层)
381
+
382
+ - 修改文件:`src/cli/commands/*`、`src/orchestrator/**` 涉及输出目录读取处。
383
+ - 实施策略:
384
+ - 优先读 `.mycodemap`,不存在则回退 `.codemap`;
385
+ - P0 保持 `codemap.json` 文件名不变。
386
+ - 验证命令:
387
+
388
+ ```bash
389
+ node dist/cli/index.js generate
390
+ node dist/cli/index.js query -S "initCommand" -j
391
+ ```
392
+
393
+ #### Step D(环境变量双前缀兼容)
394
+
395
+ - 修改文件:`src/cli/runtime-logger.ts`。
396
+ - 实施策略:
397
+ - `MYCODEMAP_RUNTIME_LOG_*` 优先;
398
+ - 旧前缀兜底;
399
+ - 使用旧前缀时打印 deprecation。
400
+ - 验证命令:
401
+
402
+ ```bash
403
+ MYCODEMAP_RUNTIME_LOG_ENABLED=true node dist/cli/index.js --version
404
+ CODEMAP_RUNTIME_LOG_ENABLED=true node dist/cli/index.js --version
405
+ ```
406
+
407
+ #### Step E(CI 与发布流程)
408
+
409
+ - 修改文件:`.github/workflows/ci-gateway.yml`、新增 `.github/workflows/publish.yml`、`.githooks/pre-commit`、`scripts/hooks/pre-commit`。
410
+ - 完成定义:
411
+ 1. CI 使用新命令名;
412
+ 2. publish workflow 支持 OIDC trusted publishing;
413
+ 3. pre-commit 生成命令不引用过期命令名。
414
+
415
+ #### Step F(发布前总验收)
416
+
417
+ - 必跑:
418
+
419
+ ```bash
420
+ npm test
421
+ npm run typecheck
422
+ npm run lint
423
+ npm pack --dry-run --json
424
+ ```
425
+
426
+ - 冒烟:
427
+
428
+ ```bash
429
+ npm pack
430
+ npm i -g ./mycodemap-*.tgz
431
+ mycodemap --version
432
+ codemap --version
433
+ ```
434
+
435
+ ### 13.2 P1 执行清单(增强功能)
436
+
437
+ #### Step P1-A:`report` 命令
438
+
439
+ - 新增:`src/cli/commands/report.ts`、`src/cli/utils/sanitize.ts`。
440
+ - 要求:脱敏路径/环境变量;支持 `--yes`;限制报告大小。
441
+ - 测试:`src/cli/commands/__tests__/report.test.ts`、`src/cli/__tests__/sanitize.test.ts`。
442
+
443
+ #### Step P1-B:`logs` 命令
444
+
445
+ - 新增:`src/cli/commands/logs.ts`(`list/export/clear`)。
446
+ - 要求:错误不影响 CLI 主流程;导出可附 Issue。
447
+
448
+ #### Step P1-C:平台与依赖检测
449
+
450
+ - 新增:`src/cli/platform-check.ts`、`src/cli/tree-sitter-check.ts`、`src/cli/first-run-guide.ts`。
451
+ - 要求:按需检测,避免全部命令开销;提示文案明确可执行。
452
+
453
+ #### Step P1-D:文档与迁移说明
454
+
455
+ - 修改:`README.md`、`AGENTS.md`、`CLAUDE.md`(如存在)、相关设计文档索引。
456
+ - 要求:包含旧命令/旧前缀/旧目录的迁移说明与截止版本。
457
+
458
+ ### 13.3 阶段门禁(必须满足)
459
+
460
+ | 阶段 | 阻断条件 |
461
+ |---|---|
462
+ | P0 | `npm pack --dry-run --json` 缺文件;`mycodemap` 命令不可用;CI 不通过 |
463
+ | P1 | 新命令无测试;脱敏逻辑不完整;文档未同步 |
464
+
465
+ ---
466
+
467
+ ## 14. V1/V2 覆盖矩阵与归档
468
+
469
+ ### 14.1 覆盖矩阵(证明 V3 可替代 V1/V2)
470
+
471
+ | 旧文档主题 | 覆盖位置(V3) | 状态 |
472
+ |---|---|---|
473
+ | 包命名、package.json、发布参数 | 第 3 节 + 第 4 节 + 第 13.1 Step A | 已覆盖 |
474
+ | `.npmignore` / `files` 发布内容策略 | 第 2.4 节 + 第 4 节(P0-1)+ 第 13.1 Step A/F | 已覆盖 |
475
+ | 目录/配置名迁移(`.codemap`、config) | 第 4 节(P0-2)+ 第 13.1 Step B/C | 已覆盖 |
476
+ | 环境变量迁移 | 第 3.2 节 + 第 4 节(P0-3)+ 第 13.1 Step D | 已覆盖 |
477
+ | CI/CD 与发布流程 | 第 4 节(P0-4)+ 第 13.1 Step E/F | 已覆盖 |
478
+ | 风险、失败场景、回滚 | 第 8 节 + 第 9 节 + 第 13.3 节 | 已覆盖 |
479
+ | report/logs/平台检测增强 | 第 4(P1)+ 第 13.2 节 | 已覆盖 |
480
+ | 验收标准(DoD) | 第 10 节 + 第 13.3 节 | 已覆盖 |
481
+
482
+ ### 14.2 归档策略
483
+
484
+ - [观点] `docs/archive/PUBLISH_NPM_DESIGN_V1.md` 与 `docs/archive/PUBLISH_NPM_DESIGN_V2.md` 为历史参考,不再作为实施基线。
485
+ - [观点] `docs/PUBLISH_NPM_DESIGN_FINAL.md` 作为唯一实施设计文档。