@mycodemap/mycodemap 0.1.1 → 0.3.4

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 (328) hide show
  1. package/CHANGELOG.md +163 -0
  2. package/README.md +241 -67
  3. package/dist/cli/commands/ci.d.ts +7 -1
  4. package/dist/cli/commands/ci.d.ts.map +1 -1
  5. package/dist/cli/commands/ci.js +38 -0
  6. package/dist/cli/commands/ci.js.map +1 -1
  7. package/dist/cli/commands/export.d.ts +6 -0
  8. package/dist/cli/commands/export.d.ts.map +1 -0
  9. package/dist/cli/commands/export.js +108 -0
  10. package/dist/cli/commands/export.js.map +1 -0
  11. package/dist/cli/commands/generate.d.ts.map +1 -1
  12. package/dist/cli/commands/generate.js +96 -0
  13. package/dist/cli/commands/generate.js.map +1 -1
  14. package/dist/cli/commands/server.d.ts +9 -0
  15. package/dist/cli/commands/server.d.ts.map +1 -0
  16. package/dist/cli/commands/server.js +68 -0
  17. package/dist/cli/commands/server.js.map +1 -0
  18. package/dist/cli/commands/ship/analyzer.d.ts +26 -0
  19. package/dist/cli/commands/ship/analyzer.d.ts.map +1 -0
  20. package/dist/cli/commands/ship/analyzer.js +143 -0
  21. package/dist/cli/commands/ship/analyzer.js.map +1 -0
  22. package/dist/cli/commands/ship/checker.d.ts +20 -0
  23. package/dist/cli/commands/ship/checker.d.ts.map +1 -0
  24. package/dist/cli/commands/ship/checker.js +86 -0
  25. package/dist/cli/commands/ship/checker.js.map +1 -0
  26. package/dist/cli/commands/ship/index.d.ts +17 -0
  27. package/dist/cli/commands/ship/index.d.ts.map +1 -0
  28. package/dist/cli/commands/ship/index.js +51 -0
  29. package/dist/cli/commands/ship/index.js.map +1 -0
  30. package/dist/cli/commands/ship/monitor.d.ts +19 -0
  31. package/dist/cli/commands/ship/monitor.d.ts.map +1 -0
  32. package/dist/cli/commands/ship/monitor.js +105 -0
  33. package/dist/cli/commands/ship/monitor.js.map +1 -0
  34. package/dist/cli/commands/ship/pipeline.d.ts +23 -0
  35. package/dist/cli/commands/ship/pipeline.d.ts.map +1 -0
  36. package/dist/cli/commands/ship/pipeline.js +146 -0
  37. package/dist/cli/commands/ship/pipeline.js.map +1 -0
  38. package/dist/cli/commands/ship/publisher.d.ts +11 -0
  39. package/dist/cli/commands/ship/publisher.d.ts.map +1 -0
  40. package/dist/cli/commands/ship/publisher.js +75 -0
  41. package/dist/cli/commands/ship/publisher.js.map +1 -0
  42. package/dist/cli/commands/ship/rules/confidence-rules.d.ts +48 -0
  43. package/dist/cli/commands/ship/rules/confidence-rules.d.ts.map +1 -0
  44. package/dist/cli/commands/ship/rules/confidence-rules.js +122 -0
  45. package/dist/cli/commands/ship/rules/confidence-rules.js.map +1 -0
  46. package/dist/cli/commands/ship/rules/quality-rules.d.ts +25 -0
  47. package/dist/cli/commands/ship/rules/quality-rules.d.ts.map +1 -0
  48. package/dist/cli/commands/ship/rules/quality-rules.js +134 -0
  49. package/dist/cli/commands/ship/rules/quality-rules.js.map +1 -0
  50. package/dist/cli/commands/ship/rules/version-rules.d.ts +24 -0
  51. package/dist/cli/commands/ship/rules/version-rules.d.ts.map +1 -0
  52. package/dist/cli/commands/ship/rules/version-rules.js +75 -0
  53. package/dist/cli/commands/ship/rules/version-rules.js.map +1 -0
  54. package/dist/cli/commands/ship/versioner.d.ts +12 -0
  55. package/dist/cli/commands/ship/versioner.d.ts.map +1 -0
  56. package/dist/cli/commands/ship/versioner.js +92 -0
  57. package/dist/cli/commands/ship/versioner.js.map +1 -0
  58. package/dist/cli/index.js +31 -1
  59. package/dist/cli/index.js.map +1 -1
  60. package/dist/cli-new/commands/export.d.ts +15 -0
  61. package/dist/cli-new/commands/export.d.ts.map +1 -0
  62. package/dist/cli-new/commands/export.js +107 -0
  63. package/dist/cli-new/commands/export.js.map +1 -0
  64. package/dist/cli-new/commands/query.d.ts +14 -0
  65. package/dist/cli-new/commands/query.d.ts.map +1 -0
  66. package/dist/cli-new/commands/query.js +120 -0
  67. package/dist/cli-new/commands/query.js.map +1 -0
  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 +94 -0
  71. package/dist/cli-new/commands/server.js.map +1 -0
  72. package/dist/cli-new/index.d.ts +11 -0
  73. package/dist/cli-new/index.d.ts.map +1 -0
  74. package/dist/cli-new/index.js +63 -0
  75. package/dist/cli-new/index.js.map +1 -0
  76. package/dist/cli-new/types/index.d.ts +88 -0
  77. package/dist/cli-new/types/index.d.ts.map +1 -0
  78. package/dist/cli-new/types/index.js +7 -0
  79. package/dist/cli-new/types/index.js.map +1 -0
  80. package/dist/domain/entities/CodeGraph.d.ts +134 -0
  81. package/dist/domain/entities/CodeGraph.d.ts.map +1 -0
  82. package/dist/domain/entities/CodeGraph.js +316 -0
  83. package/dist/domain/entities/CodeGraph.js.map +1 -0
  84. package/dist/domain/entities/Dependency.d.ts +78 -0
  85. package/dist/domain/entities/Dependency.d.ts.map +1 -0
  86. package/dist/domain/entities/Dependency.js +132 -0
  87. package/dist/domain/entities/Dependency.js.map +1 -0
  88. package/dist/domain/entities/Module.d.ts +75 -0
  89. package/dist/domain/entities/Module.d.ts.map +1 -0
  90. package/dist/domain/entities/Module.js +151 -0
  91. package/dist/domain/entities/Module.js.map +1 -0
  92. package/dist/domain/entities/Project.d.ts +50 -0
  93. package/dist/domain/entities/Project.d.ts.map +1 -0
  94. package/dist/domain/entities/Project.js +99 -0
  95. package/dist/domain/entities/Project.js.map +1 -0
  96. package/dist/domain/entities/Symbol.d.ts +75 -0
  97. package/dist/domain/entities/Symbol.d.ts.map +1 -0
  98. package/dist/domain/entities/Symbol.js +130 -0
  99. package/dist/domain/entities/Symbol.js.map +1 -0
  100. package/dist/domain/events/DomainEvent.d.ts +76 -0
  101. package/dist/domain/events/DomainEvent.d.ts.map +1 -0
  102. package/dist/domain/events/DomainEvent.js +153 -0
  103. package/dist/domain/events/DomainEvent.js.map +1 -0
  104. package/dist/domain/index.d.ts +10 -0
  105. package/dist/domain/index.d.ts.map +1 -0
  106. package/dist/domain/index.js +18 -0
  107. package/dist/domain/index.js.map +1 -0
  108. package/dist/domain/repositories/CodeGraphRepository.d.ts +58 -0
  109. package/dist/domain/repositories/CodeGraphRepository.d.ts.map +1 -0
  110. package/dist/domain/repositories/CodeGraphRepository.js +37 -0
  111. package/dist/domain/repositories/CodeGraphRepository.js.map +1 -0
  112. package/dist/domain/services/CodeGraphBuilder.d.ts +50 -0
  113. package/dist/domain/services/CodeGraphBuilder.d.ts.map +1 -0
  114. package/dist/domain/services/CodeGraphBuilder.js +121 -0
  115. package/dist/domain/services/CodeGraphBuilder.js.map +1 -0
  116. package/dist/infrastructure/parser/implementations/GoParser.d.ts +25 -0
  117. package/dist/infrastructure/parser/implementations/GoParser.d.ts.map +1 -0
  118. package/dist/infrastructure/parser/implementations/GoParser.js +158 -0
  119. package/dist/infrastructure/parser/implementations/GoParser.js.map +1 -0
  120. package/dist/infrastructure/parser/implementations/PythonParser.d.ts +30 -0
  121. package/dist/infrastructure/parser/implementations/PythonParser.d.ts.map +1 -0
  122. package/dist/infrastructure/parser/implementations/PythonParser.js +201 -0
  123. package/dist/infrastructure/parser/implementations/PythonParser.js.map +1 -0
  124. package/dist/infrastructure/parser/implementations/TypeScriptParser.d.ts +63 -0
  125. package/dist/infrastructure/parser/implementations/TypeScriptParser.d.ts.map +1 -0
  126. package/dist/infrastructure/parser/implementations/TypeScriptParser.js +420 -0
  127. package/dist/infrastructure/parser/implementations/TypeScriptParser.js.map +1 -0
  128. package/dist/infrastructure/parser/index.d.ts +13 -0
  129. package/dist/infrastructure/parser/index.d.ts.map +1 -0
  130. package/dist/infrastructure/parser/index.js +32 -0
  131. package/dist/infrastructure/parser/index.js.map +1 -0
  132. package/dist/infrastructure/parser/interfaces/ParserBase.d.ts +124 -0
  133. package/dist/infrastructure/parser/interfaces/ParserBase.d.ts.map +1 -0
  134. package/dist/infrastructure/parser/interfaces/ParserBase.js +200 -0
  135. package/dist/infrastructure/parser/interfaces/ParserBase.js.map +1 -0
  136. package/dist/infrastructure/parser/registry/ParserRegistry.d.ts +68 -0
  137. package/dist/infrastructure/parser/registry/ParserRegistry.d.ts.map +1 -0
  138. package/dist/infrastructure/parser/registry/ParserRegistry.js +116 -0
  139. package/dist/infrastructure/parser/registry/ParserRegistry.js.map +1 -0
  140. package/dist/infrastructure/repositories/CodeGraphRepositoryImpl.d.ts +44 -0
  141. package/dist/infrastructure/repositories/CodeGraphRepositoryImpl.d.ts.map +1 -0
  142. package/dist/infrastructure/repositories/CodeGraphRepositoryImpl.js +129 -0
  143. package/dist/infrastructure/repositories/CodeGraphRepositoryImpl.js.map +1 -0
  144. package/dist/infrastructure/repositories/index.d.ts +3 -0
  145. package/dist/infrastructure/repositories/index.d.ts.map +1 -0
  146. package/dist/infrastructure/repositories/index.js +7 -0
  147. package/dist/infrastructure/repositories/index.js.map +1 -0
  148. package/dist/infrastructure/storage/StorageFactory.d.ts +53 -0
  149. package/dist/infrastructure/storage/StorageFactory.d.ts.map +1 -0
  150. package/dist/infrastructure/storage/StorageFactory.js +150 -0
  151. package/dist/infrastructure/storage/StorageFactory.js.map +1 -0
  152. package/dist/infrastructure/storage/adapters/FileSystemStorage.d.ts +52 -0
  153. package/dist/infrastructure/storage/adapters/FileSystemStorage.d.ts.map +1 -0
  154. package/dist/infrastructure/storage/adapters/FileSystemStorage.js +315 -0
  155. package/dist/infrastructure/storage/adapters/FileSystemStorage.js.map +1 -0
  156. package/dist/infrastructure/storage/adapters/KuzuDBStorage.d.ts +52 -0
  157. package/dist/infrastructure/storage/adapters/KuzuDBStorage.d.ts.map +1 -0
  158. package/dist/infrastructure/storage/adapters/KuzuDBStorage.js +235 -0
  159. package/dist/infrastructure/storage/adapters/KuzuDBStorage.js.map +1 -0
  160. package/dist/infrastructure/storage/adapters/MemoryStorage.d.ts +37 -0
  161. package/dist/infrastructure/storage/adapters/MemoryStorage.d.ts.map +1 -0
  162. package/dist/infrastructure/storage/adapters/MemoryStorage.js +229 -0
  163. package/dist/infrastructure/storage/adapters/MemoryStorage.js.map +1 -0
  164. package/dist/infrastructure/storage/adapters/Neo4jStorage.d.ts +49 -0
  165. package/dist/infrastructure/storage/adapters/Neo4jStorage.d.ts.map +1 -0
  166. package/dist/infrastructure/storage/adapters/Neo4jStorage.js +222 -0
  167. package/dist/infrastructure/storage/adapters/Neo4jStorage.js.map +1 -0
  168. package/dist/infrastructure/storage/index.d.ts +6 -0
  169. package/dist/infrastructure/storage/index.d.ts.map +1 -0
  170. package/dist/infrastructure/storage/index.js +13 -0
  171. package/dist/infrastructure/storage/index.js.map +1 -0
  172. package/dist/infrastructure/storage/interfaces/StorageBase.d.ts +76 -0
  173. package/dist/infrastructure/storage/interfaces/StorageBase.d.ts.map +1 -0
  174. package/dist/infrastructure/storage/interfaces/StorageBase.js +116 -0
  175. package/dist/infrastructure/storage/interfaces/StorageBase.js.map +1 -0
  176. package/dist/interface/config/index.d.ts +102 -0
  177. package/dist/interface/config/index.d.ts.map +1 -0
  178. package/dist/interface/config/index.js +7 -0
  179. package/dist/interface/config/index.js.map +1 -0
  180. package/dist/interface/types/index.d.ts +425 -0
  181. package/dist/interface/types/index.d.ts.map +1 -0
  182. package/dist/interface/types/index.js +8 -0
  183. package/dist/interface/types/index.js.map +1 -0
  184. package/dist/interface/types/parser.d.ts +103 -0
  185. package/dist/interface/types/parser.d.ts.map +1 -0
  186. package/dist/interface/types/parser.js +7 -0
  187. package/dist/interface/types/parser.js.map +1 -0
  188. package/dist/interface/types/storage.d.ts +98 -0
  189. package/dist/interface/types/storage.d.ts.map +1 -0
  190. package/dist/interface/types/storage.js +7 -0
  191. package/dist/interface/types/storage.js.map +1 -0
  192. package/dist/orchestrator/test-linker.js +1 -1
  193. package/dist/orchestrator/test-linker.js.map +1 -1
  194. package/dist/server/CodeMapServer.d.ts +51 -0
  195. package/dist/server/CodeMapServer.d.ts.map +1 -0
  196. package/dist/server/CodeMapServer.js +146 -0
  197. package/dist/server/CodeMapServer.js.map +1 -0
  198. package/dist/server/handlers/AnalysisHandler.d.ts +82 -0
  199. package/dist/server/handlers/AnalysisHandler.d.ts.map +1 -0
  200. package/dist/server/handlers/AnalysisHandler.js +196 -0
  201. package/dist/server/handlers/AnalysisHandler.js.map +1 -0
  202. package/dist/server/handlers/QueryHandler.d.ts +57 -0
  203. package/dist/server/handlers/QueryHandler.d.ts.map +1 -0
  204. package/dist/server/handlers/QueryHandler.js +260 -0
  205. package/dist/server/handlers/QueryHandler.js.map +1 -0
  206. package/dist/server/index.d.ts +7 -0
  207. package/dist/server/index.d.ts.map +1 -0
  208. package/dist/server/index.js +13 -0
  209. package/dist/server/index.js.map +1 -0
  210. package/dist/server/routes/api.d.ts +8 -0
  211. package/dist/server/routes/api.d.ts.map +1 -0
  212. package/dist/server/routes/api.js +372 -0
  213. package/dist/server/routes/api.js.map +1 -0
  214. package/dist/server/types/index.d.ts +171 -0
  215. package/dist/server/types/index.d.ts.map +1 -0
  216. package/dist/server/types/index.js +7 -0
  217. package/dist/server/types/index.js.map +1 -0
  218. package/dist/types/index.d.ts +6 -372
  219. package/dist/types/index.d.ts.map +1 -1
  220. package/dist/types/index.js +9 -3
  221. package/dist/types/index.js.map +1 -1
  222. package/docs/AI_ASSISTANT_SETUP.md +68 -0
  223. package/docs/PUBLISHING.md +472 -0
  224. package/docs/README.md +37 -0
  225. package/docs/SETUP_GUIDE.md +91 -5
  226. package/docs/ai-guide/COMMANDS.md +403 -0
  227. package/docs/ai-guide/INTEGRATION.md +513 -0
  228. package/docs/ai-guide/OUTPUT.md +465 -0
  229. package/docs/ai-guide/PATTERNS.md +409 -0
  230. package/docs/ai-guide/PROMPTS.md +414 -0
  231. package/docs/ai-guide/QUICKSTART.md +114 -0
  232. package/docs/ai-guide/README.md +66 -0
  233. package/docs/archive/AI_INTEGRATION_GUIDE_ARCHIVED.md +7 -1
  234. package/docs/archive/ARCHIVE.md +39 -0
  235. package/docs/archive/MYCLAUDE_GUIDE.md +305 -0
  236. package/docs/archive/PUBLISH_NPM_DESIGN_V1.md +6 -0
  237. package/docs/archive/PUBLISH_NPM_DESIGN_V2.md +6 -0
  238. package/docs/archive/README.md +29 -0
  239. package/docs/archive/TASK_DESIGN_COVERAGE_REPORT.md +6 -0
  240. package/docs/archive/TEST_SUMMARY.md +140 -0
  241. package/docs/archive/comprehensive_test_report.md +337 -0
  242. package/docs/{CI_GATEWAY_DESIGN.md → archive/design-docs/CI_GATEWAY_DESIGN.md} +6 -0
  243. package/docs/{PUBLISH_NPM_DESIGN_FINAL.md → archive/design-docs/PUBLISH_NPM_DESIGN_FINAL.md} +7 -1
  244. package/docs/{REFACTOR_ARCHITECTURE_OVERVIEW.md → archive/design-docs/REFACTOR_ARCHITECTURE_OVERVIEW.md} +8 -2
  245. package/docs/{REFACTOR_CONFIDENCE_DESIGN.md → archive/design-docs/REFACTOR_CONFIDENCE_DESIGN.md} +6 -0
  246. package/docs/{REFACTOR_GIT_ANALYZER_DESIGN.md → archive/design-docs/REFACTOR_GIT_ANALYZER_DESIGN.md} +8 -2
  247. package/docs/{REFACTOR_ORCHESTRATOR_DESIGN.md → archive/design-docs/REFACTOR_ORCHESTRATOR_DESIGN.md} +6 -0
  248. package/docs/{REFACTOR_RESULT_FUSION_DESIGN.md → archive/design-docs/REFACTOR_RESULT_FUSION_DESIGN.md} +6 -0
  249. package/docs/{REFACTOR_TEST_LINKER_DESIGN.md → archive/design-docs/REFACTOR_TEST_LINKER_DESIGN.md} +6 -0
  250. package/docs/archive/myclaude.md +1084 -0
  251. package/docs/archive/plans/2026-03-14-go-language-support-design.md +92 -0
  252. package/docs/{REFACTOR_REQUIREMENTS.md → archive/product-specs/REFACTOR_REQUIREMENTS.md} +11 -5
  253. package/docs/archive/scenario-2-deps-analysis.md +353 -0
  254. package/docs/design-docs/README.md +26 -0
  255. package/docs/exec-plans/MVP3-IMPLEMENTATION-ROADMAP.md +524 -0
  256. package/docs/exec-plans/README.md +29 -0
  257. package/docs/exec-plans/active/.gitkeep +0 -0
  258. package/docs/exec-plans/completed/.gitkeep +0 -0
  259. package/docs/{plans/POST_TASK_PLAN.md → exec-plans/completed/2026-03-03-post-task-plan.md} +9 -3
  260. package/docs/exec-plans/completed/harness-engineering-rollout.md +184 -0
  261. package/docs/exec-plans/tech-debt/.gitkeep +0 -0
  262. package/docs/exec-plans/tech-debt/2026-03-15-lint-guardrail-gap.md +30 -0
  263. package/docs/generated/README.md +19 -0
  264. package/docs/product-specs/MVP3-ARCHITECTURE-COMPARISON.md +504 -0
  265. package/docs/product-specs/MVP3-ARCHITECTURE-REDESIGN-PRD.md +322 -0
  266. package/docs/product-specs/MVP3-ARCHITECTURE-REDESIGN-TECH-PRD.md +1374 -0
  267. package/docs/product-specs/README.md +22 -0
  268. package/docs/references/README.md +15 -0
  269. package/docs/references/tmp.md +527 -0
  270. package/docs/rules/README.md +16 -0
  271. package/docs/rules/architecture-guardrails.md +349 -0
  272. package/docs/rules/code-quality-redlines.md +321 -0
  273. package/docs/rules/deployment.md +23 -0
  274. package/docs/rules/engineering-with-codex-openai.md +202 -0
  275. package/docs/rules/pre-release-checklist.md +426 -0
  276. package/docs/rules/testing.md +73 -0
  277. package/docs/rules/validation.md +39 -0
  278. package/package.json +26 -7
  279. package/scripts/.githooks/commit-msg +31 -0
  280. package/scripts/.githooks/pre-commit +55 -0
  281. package/scripts/benchmark.ts +209 -0
  282. package/scripts/hooks/commit-msg +24 -0
  283. package/scripts/hooks/install-hooks.sh +29 -0
  284. package/scripts/hooks/pre-commit +60 -0
  285. package/scripts/pre-release-check.js +717 -0
  286. package/scripts/release.sh +142 -0
  287. package/scripts/run-benchmark.sh +29 -0
  288. package/scripts/validate-ai-docs.js +294 -0
  289. package/scripts/validate-docs.js +238 -0
  290. package/scripts/validate-pack.js +86 -0
  291. package/dist/ai/claude.d.ts +0 -38
  292. package/dist/ai/claude.d.ts.map +0 -1
  293. package/dist/ai/claude.js +0 -169
  294. package/dist/ai/claude.js.map +0 -1
  295. package/dist/ai/codex.d.ts +0 -38
  296. package/dist/ai/codex.d.ts.map +0 -1
  297. package/dist/ai/codex.js +0 -169
  298. package/dist/ai/codex.js.map +0 -1
  299. package/dist/ai/factory.d.ts +0 -48
  300. package/dist/ai/factory.d.ts.map +0 -1
  301. package/dist/ai/factory.js +0 -95
  302. package/dist/ai/factory.js.map +0 -1
  303. package/dist/ai/index.d.ts +0 -12
  304. package/dist/ai/index.d.ts.map +0 -1
  305. package/dist/ai/index.js +0 -29
  306. package/dist/ai/index.js.map +0 -1
  307. package/dist/ai/provider.d.ts +0 -70
  308. package/dist/ai/provider.d.ts.map +0 -1
  309. package/dist/ai/provider.js +0 -31
  310. package/dist/ai/provider.js.map +0 -1
  311. package/dist/ai/subagent-caller.d.ts +0 -90
  312. package/dist/ai/subagent-caller.d.ts.map +0 -1
  313. package/dist/ai/subagent-caller.js +0 -280
  314. package/dist/ai/subagent-caller.js.map +0 -1
  315. package/dist/ai/types.d.ts +0 -70
  316. package/dist/ai/types.d.ts.map +0 -1
  317. package/dist/ai/types.js +0 -5
  318. package/dist/ai/types.js.map +0 -1
  319. package/dist/generator/ai-overview.d.ts +0 -51
  320. package/dist/generator/ai-overview.d.ts.map +0 -1
  321. package/dist/generator/ai-overview.js +0 -160
  322. package/dist/generator/ai-overview.js.map +0 -1
  323. package/dist/orchestrator/ai-feed-generator.d.ts +0 -210
  324. package/dist/orchestrator/ai-feed-generator.d.ts.map +0 -1
  325. package/dist/orchestrator/ai-feed-generator.js +0 -377
  326. package/dist/orchestrator/ai-feed-generator.js.map +0 -1
  327. package/docs/OMC_TEAM_DEBUG_REPORT.md +0 -285
  328. /package/docs/{plans/archive → exec-plans/completed}/2026-03-03-deps-path-extension-fix.md +0 -0
@@ -0,0 +1,349 @@
1
+ # 架构护栏规则
2
+
3
+ > MVP3 分层架构依赖规则与 Enforcement 策略
4
+
5
+ ## 1. 架构分层原则(MVP3)
6
+
7
+ **第一性原理**:业务逻辑必须与实现细节解耦,确保可测试性和技术栈可替换性。
8
+
9
+ CodeMap 采用 **MVP3 分层架构**,各层职责如下:
10
+
11
+ | 层级 | 目录 | 职责 | 允许依赖 |
12
+ |------|------|------|---------|
13
+ | **CLI 层** | `src/cli/` | 命令解析、用户交互、平台检查 | Server, Domain (via Interface), Interface |
14
+ | **Server 层** | `src/server/` | HTTP API 服务器、路由处理、Handler | Domain (via Interface), Interface |
15
+ | **Domain 层** | `src/domain/` | 核心业务逻辑、领域实体、领域服务、领域事件 | Interface |
16
+ | **Infrastructure 层** | `src/infrastructure/` | 技术实现:存储、解析器、仓库实现 | Domain (接口实现), Interface |
17
+ | **Interface 层** | `src/interface/` | 类型定义、契约接口、配置 | 无(纯契约定义) |
18
+
19
+ ### 分层依赖规则
20
+
21
+ ```
22
+ ┌─────────────────────────────────────────────────────────────┐
23
+ │ CLI Layer │
24
+ │ src/cli/ - 命令行接口,注册命令、参数解析、用户交互 │
25
+ ├─────────────────────────────────────────────────────────────┤
26
+ │ Server Layer │
27
+ │ src/server/ - HTTP API 服务器,RESTful 端点,Handler 处理 │
28
+ ├─────────────────────────────────────────────────────────────┤
29
+ │ Domain Layer │
30
+ │ src/domain/ - 核心业务逻辑,领域实体与服务 │
31
+ │ - entities/: Project, Module, Symbol, Dependency, CodeGraph │
32
+ │ - services/: CodeGraphBuilder │
33
+ │ - events/: DomainEvent │
34
+ │ - repositories/: 仓库接口(仅接口,非实现) │
35
+ ├─────────────────────────────────────────────────────────────┤
36
+ │ Infrastructure Layer │
37
+ │ src/infrastructure/ - 技术实现细节 │
38
+ │ - storage/: FileSystemStorage, MemoryStorage, KuzuDBStorage, Neo4jStorage
39
+ │ - parser/: TypeScriptParser, GoParser, PythonParser, ParserRegistry
40
+ │ - repositories/: CodeGraphRepositoryImpl(仓库接口实现) │
41
+ ├─────────────────────────────────────────────────────────────┤
42
+ │ Interface Layer │
43
+ │ src/interface/ - 类型定义与契约,跨层共享的接口 │
44
+ │ - types/: 核心类型定义 │
45
+ │ - config/: 配置接口 │
46
+ └─────────────────────────────────────────────────────────────┘
47
+ ```
48
+
49
+ **依赖方向**(严格自上而下):
50
+ - CLI → Server → Domain → Infrastructure → Interface
51
+ - **禁止跨层依赖**(如 Domain 层不得导入 CLI 模块)
52
+ - 同层内可以相互依赖
53
+
54
+ ---
55
+
56
+ ## 2. 与旧架构的关系
57
+
58
+ ### 2.1 历史架构(已迁移)
59
+
60
+ MVP3 之前的旧架构:
61
+ ```
62
+ src/cli/ → src/orchestrator/ → src/core/ → src/parser/
63
+
64
+ src/generator/
65
+ ```
66
+
67
+ ### 2.2 迁移映射
68
+
69
+ | 旧架构 | MVP3 新架构 | 说明 |
70
+ |--------|------------|------|
71
+ | `src/cli/` | `src/cli/` | 保留,职责不变 |
72
+ | `src/orchestrator/` | 功能分散到 Server/CLI | 适配器部分移至 Infrastructure |
73
+ | `src/core/` | `src/domain/` | 核心业务逻辑下沉到 Domain 层 |
74
+ | `src/parser/` | `src/infrastructure/parser/` | 解析器作为基础设施 |
75
+ | `src/generator/` | `src/domain/services/` | 生成逻辑作为领域服务 |
76
+ | `src/types/` | `src/interface/` | 类型定义提升为独立层 |
77
+ | 新增 | `src/server/` | MVP3 新增 HTTP API 层 |
78
+ | 新增 | `src/infrastructure/storage/` | MVP3 新增存储抽象 |
79
+ | 新增 | `src/infrastructure/repositories/` | MVP3 新增仓库实现 |
80
+
81
+ ---
82
+
83
+ ## 3. 依赖流向规则
84
+
85
+ ### 3.1 禁止的依赖方向
86
+
87
+ ```
88
+ Domain ←── 禁止 ── CLI 层不得直接依赖 Domain 具体实现(应通过 Interface)
89
+ Infrastructure ←── 禁止 ── Domain 层不得依赖 Infrastructure 具体实现
90
+ Server ←── 禁止 ── CLI 层不得直接依赖 Server 层(应通过 Interface)
91
+ Interface ←── 禁止 ── 任何层不得修改 Interface 层(只读)
92
+ ```
93
+
94
+ ### 3.2 允许的依赖方向
95
+
96
+ ```
97
+ CLI → Server → Domain → Infrastructure → Interface
98
+ CLI → Interface
99
+ Server → Interface
100
+ Domain → Interface
101
+ Infrastructure → Interface
102
+ ```
103
+
104
+ ---
105
+
106
+ ## 4. 依赖注入规范
107
+
108
+ ### 4.1 原则
109
+
110
+ - 高层模块不应依赖低层模块,两者都应依赖抽象(Interface 层契约)
111
+ - 使用构造函数注入或工厂函数注入
112
+ - 禁止在模块内部直接 `new` 高阶服务
113
+
114
+ ### 4.2 合规示例
115
+
116
+ ```typescript
117
+ // ✅ 合规:通过 Interface 层契约注入
118
+ // src/domain/services/CodeGraphBuilder.ts
119
+ import type { IStorage } from '../../interface/types/storage';
120
+ import type { IParserRegistry } from '../../interface/types/parser';
121
+
122
+ export interface CodeGraphBuilderDeps {
123
+ storage: IStorage;
124
+ parserRegistry: IParserRegistry;
125
+ }
126
+
127
+ export class CodeGraphBuilder {
128
+ constructor(private deps: CodeGraphBuilderDeps) {}
129
+
130
+ async build(files: string[]) {
131
+ const parser = this.deps.parserRegistry.getParser('typescript');
132
+ const ast = await parser.parse(files);
133
+ return this.deps.storage.save(ast);
134
+ }
135
+ }
136
+ ```
137
+
138
+ ```typescript
139
+ // ❌ 违规:直接实例化 Infrastructure 具体实现
140
+ // src/domain/services/CodeGraphBuilder.ts
141
+ import { FileSystemStorage } from '../../infrastructure/storage/FileSystemStorage';
142
+ import { TypeScriptParser } from '../../infrastructure/parser/implementations/TypeScriptParser';
143
+
144
+ export class CodeGraphBuilder {
145
+ private storage = new FileSystemStorage(); // 错误!硬编码实现
146
+ private parser = new TypeScriptParser(); // 错误!难以测试和替换
147
+ }
148
+ ```
149
+
150
+ ---
151
+
152
+ ## 5. 文件组织规范
153
+
154
+ ### 5.1 目录结构(MVP3)
155
+
156
+ ```
157
+ src/
158
+ cli/ # CLI 层
159
+ commands/ # 子命令实现
160
+ index.ts # CLI 入口
161
+ server/ # Server 层(MVP3 新增)
162
+ CodeMapServer.ts # HTTP 服务器
163
+ handlers/ # 请求处理器
164
+ routes/ # 路由定义
165
+ domain/ # Domain 层
166
+ entities/ # 领域实体
167
+ Project.ts
168
+ Module.ts
169
+ Symbol.ts
170
+ Dependency.ts
171
+ CodeGraph.ts
172
+ services/ # 领域服务
173
+ CodeGraphBuilder.ts
174
+ events/ # 领域事件
175
+ DomainEvent.ts
176
+ repositories/ # 仓库接口(仅接口)
177
+ CodeGraphRepository.ts
178
+ infrastructure/ # Infrastructure 层
179
+ storage/ # 存储适配器
180
+ FileSystemStorage.ts
181
+ MemoryStorage.ts
182
+ KuzuDBStorage.ts
183
+ Neo4jStorage.ts
184
+ StorageFactory.ts
185
+ parser/ # 解析器
186
+ interfaces/
187
+ implementations/
188
+ registry/
189
+ repositories/ # 仓库实现
190
+ CodeGraphRepositoryImpl.ts
191
+ interface/ # Interface 层
192
+ types/ # 类型定义
193
+ config/ # 配置接口
194
+ ```
195
+
196
+ ### 5.2 文件命名规范
197
+
198
+ - **实现文件**:`kebab-case.ts`(如 `code-graph-builder.ts`)
199
+ - **接口文件**:`I{PascalCase}.ts`(如 `IStorage.ts`)或 `types.ts`
200
+ - **测试文件**:`{name}.test.ts` 或 `__tests__/{name}.test.ts`
201
+ - **实体文件**:`PascalCase.ts`(如 `CodeGraph.ts`)
202
+
203
+ ---
204
+
205
+ ## 6. Enforcement 策略
206
+
207
+ ### 6.1 自动检测
208
+
209
+ 使用 `dependency-cruiser` 配置架构规则:
210
+
211
+ ```javascript
212
+ // .dependency-cruiser.js(待配置)
213
+ module.exports = {
214
+ forbidden: [
215
+ {
216
+ name: 'no-domain-in-cli',
217
+ comment: 'CLI 层不得直接依赖 Domain 层(应通过 Interface)',
218
+ severity: 'error',
219
+ from: { path: '^src/cli' },
220
+ to: { path: '^src/domain', pathNot: '^src/domain/[^/]+\.ts$' }
221
+ },
222
+ {
223
+ name: 'no-infrastructure-in-domain',
224
+ comment: 'Domain 层不得依赖 Infrastructure 层',
225
+ severity: 'error',
226
+ from: { path: '^src/domain' },
227
+ to: { path: '^src/infrastructure' }
228
+ },
229
+ {
230
+ name: 'no-server-in-cli',
231
+ comment: 'CLI 层不得依赖 Server 层',
232
+ severity: 'error',
233
+ from: { path: '^src/cli' },
234
+ to: { path: '^src/server' }
235
+ }
236
+ ]
237
+ };
238
+ ```
239
+
240
+ ### 6.2 手动检查
241
+
242
+ 使用 CodeMap CLI 检查模块依赖:
243
+
244
+ ```bash
245
+ # 检查某模块的依赖
246
+ node dist/cli/index.js deps -m "src/domain/services"
247
+
248
+ # 检查某文件的影响范围
249
+ node dist/cli/index.js impact -f "src/interface/types/index.ts"
250
+
251
+ # 检查跨层依赖(使用 analyze)
252
+ node dist/cli/index.js analyze -i dependency -t src/domain
253
+ ```
254
+
255
+ ### 6.3 CI 检查
256
+
257
+ 在 CI 中添加架构合规检查:
258
+
259
+ ```yaml
260
+ # .github/workflows/ci-gateway.yml
261
+ - name: Check architecture compliance
262
+ run: npm run check:architecture
263
+ ```
264
+
265
+ ---
266
+
267
+ ## 7. 违规处理
268
+
269
+ ### 7.1 发现违规时
270
+
271
+ 1. **暂停任务**:不得继续添加更多代码
272
+ 2. **评估影响**:使用 `impact` 命令评估影响范围
273
+ 3. **重构方案**:将直接依赖改为接口注入
274
+ 4. **验证修复**:重新运行架构检查
275
+
276
+ ### 7.2 临时例外
277
+
278
+ 若因紧急需求必须暂时违规,必须按技术债务标记:
279
+
280
+ ```typescript
281
+ // TODO-DEBT [L2] [日期:2026-03-20] [作者:AI] [原因:紧急修复]
282
+ // 问题:Domain 层临时依赖 Infrastructure 具体实现
283
+ // 风险:破坏分层架构,难以单元测试
284
+ // 偿还计划:提取接口,通过依赖注入传递
285
+ import { FileSystemStorage } from '../infrastructure/storage/FileSystemStorage';
286
+ ```
287
+
288
+ ---
289
+
290
+ ## 8. 最佳实践
291
+
292
+ ### 8.1 依赖注入模式
293
+
294
+ ```typescript
295
+ // 推荐:工厂函数模式
296
+ export function createCodeGraphBuilder(deps: Partial<CodeGraphBuilderDeps> = {}) {
297
+ return new CodeGraphBuilder({
298
+ storage: deps.storage ?? createStorage(),
299
+ parserRegistry: deps.parserRegistry ?? createParserRegistry(),
300
+ });
301
+ }
302
+
303
+ // 使用
304
+ const builder = createCodeGraphBuilder(); // 生产环境
305
+ const testBuilder = createCodeGraphBuilder({ storage: mockStorage }); // 测试环境
306
+ ```
307
+
308
+ ### 8.2 接口定义位置
309
+
310
+ - 接口定义在 **Interface 层**(`src/interface/`)
311
+ - 或定义在被依赖方的接口目录
312
+
313
+ ```typescript
314
+ // src/interface/types/storage.ts
315
+ export interface IStorage {
316
+ save(data: unknown): Promise<void>;
317
+ load(): Promise<unknown>;
318
+ }
319
+
320
+ // src/infrastructure/storage/FileSystemStorage.ts
321
+ import type { IStorage } from '../../interface/types/storage';
322
+ export class FileSystemStorage implements IStorage { ... }
323
+
324
+ // src/domain/services/CodeGraphBuilder.ts
325
+ import type { IStorage } from '../../interface/types/storage';
326
+ export class CodeGraphBuilder {
327
+ constructor(private storage: IStorage) {}
328
+ }
329
+ ```
330
+
331
+ ---
332
+
333
+ ## 9. 验证清单
334
+
335
+ 修改架构相关代码前,检查:
336
+
337
+ - [ ] 新模块的依赖方向是否符合 MVP3 分层规则
338
+ - [ ] 是否使用了依赖注入而非直接实例化
339
+ - [ ] 接口定义是否在 Interface 层
340
+ - [ ] 是否可以通过 `check:architecture` 验证
341
+
342
+ ---
343
+
344
+ ## 10. 相关文档
345
+
346
+ - `ARCHITECTURE.md` - 系统总图与模块边界
347
+ - `docs/rules/engineering-with-codex-openai.md` - 工程规则与 CI 护栏
348
+ - `docs/rules/code-quality-redlines.md` - 代码质量红线
349
+ - `docs/exec-plans/MVP3-IMPLEMENTATION-ROADMAP.md` - MVP3 重构路线图
@@ -0,0 +1,321 @@
1
+ # 代码质量红线
2
+
3
+ > 代码生成绝对禁止项清单与 Enforcement 策略
4
+
5
+ ## 1. 红线总则
6
+
7
+ 以下代码模式在 CodeMap 仓库中被视为**硬性阻断项**。AI 生成代码时必须主动避免,否则必须在可信度自评中标记风险。
8
+
9
+ **红线判定标准**:
10
+ - 可能导致安全漏洞
11
+ - 严重降低代码可维护性
12
+ - 破坏类型安全保证
13
+ - 违反架构分层原则
14
+
15
+ ## 2. 红线清单
16
+
17
+ ### 2.1 敏感信息硬编码
18
+
19
+ **禁止模式**:
20
+ ```typescript
21
+ // ❌ 绝对禁止
22
+ const API_KEY = "sk-abc123xyz";
23
+ const password = "admin123";
24
+ const secret = "my-jwt-secret";
25
+ ```
26
+
27
+ **合规模式**:
28
+ ```typescript
29
+ // ✅ 使用环境变量
30
+ const API_KEY = process.env.OPENAI_API_KEY;
31
+ if (!API_KEY) {
32
+ throw new Error('OPENAI_API_KEY is required');
33
+ }
34
+ ```
35
+
36
+ **检测方式**:
37
+ ```bash
38
+ # 正则检测敏感信息字面量
39
+ grep -rn "password.*=.*['\"]" src/ --include="*.ts"
40
+ grep -rn "secret.*=.*['\"]" src/ --include="*.ts"
41
+ grep -rn "api_key.*=.*['\"]" src/ --include="*.ts"
42
+ ```
43
+
44
+ **阻断阈值**:生产代码中出现任何明文凭证
45
+
46
+ ### 2.2 `any` 类型使用
47
+
48
+ **禁止模式**:
49
+ ```typescript
50
+ // ❌ 非边界文件禁止使用 any
51
+ function processData(data: any): any {
52
+ return data.value;
53
+ }
54
+ ```
55
+
56
+ **合规模式**:
57
+ ```typescript
58
+ // ✅ 使用具体类型或 unknown + 类型守卫
59
+ interface DataPayload {
60
+ value: string;
61
+ }
62
+
63
+ function processData(data: unknown): string {
64
+ if (typeof data === 'object' && data !== null && 'value' in data) {
65
+ return (data as DataPayload).value;
66
+ }
67
+ throw new Error('Invalid data format');
68
+ }
69
+ ```
70
+
71
+ **例外情况**(需标记 TODO-DEBT):
72
+ - 第三方库无类型定义时的临时处理
73
+ - 与遗留系统集成的边界
74
+
75
+ **检测方式**:
76
+ ```bash
77
+ # TypeScript 编译器检查
78
+ npx tsc --noImplicitAny --noEmit
79
+
80
+ # ESLint 检查
81
+ npx eslint src --rule '@typescript-eslint/no-explicit-any: error'
82
+ ```
83
+
84
+ **阻断阈值**:非边界文件出现 `any` 类型
85
+
86
+ ### 2.3 函数超过 50 行
87
+
88
+ **计算方式**:函数体实际代码行数(不含空行、注释、类型定义)
89
+
90
+ **禁止模式**:
91
+ ```typescript
92
+ // ❌ 超过 50 行的函数
93
+ function complexFunction(data: Data) {
94
+ // 行 1
95
+ // 行 2
96
+ // ... 50+ 行
97
+ // 行 51
98
+ // 行 52
99
+ }
100
+ ```
101
+
102
+ **合规模式**:
103
+ ```typescript
104
+ // ✅ 拆分为子函数
105
+ function complexFunction(data: Data) {
106
+ const validated = validateData(data);
107
+ const transformed = transformData(validated);
108
+ return persistData(transformed);
109
+ }
110
+
111
+ function validateData(data: Data): ValidatedData { ... }
112
+ function transformData(data: ValidatedData): TransformedData { ... }
113
+ function persistData(data: TransformedData): Result { ... }
114
+ ```
115
+
116
+ **检测方式**:
117
+ ```bash
118
+ # 使用 ESLint 的 max-lines-per-function 规则
119
+ npx eslint src --rule 'max-lines-per-function: [error, { max: 50, skipBlankLines: true, skipComments: true }]'
120
+ ```
121
+
122
+ **阻断阈值**:单函数超过 50 行代码
123
+
124
+ ### 2.4 未处理 Promise
125
+
126
+ **禁止模式**:
127
+ ```typescript
128
+ // ❌ 未处理的异步操作
129
+ fetchUserData(userId); // 没有 await 或 .catch()
130
+ database.query(sql); // 没有错误处理
131
+ ```
132
+
133
+ **合规模式**:
134
+ ```typescript
135
+ // ✅ 正确处理异步操作
136
+ try {
137
+ const user = await fetchUserData(userId);
138
+ } catch (error) {
139
+ logger.error('Failed to fetch user', error);
140
+ throw new UserFetchError(userId);
141
+ }
142
+
143
+ // 或显式忽略
144
+ void fetchUserData(userId).catch(() => {}); // 有意的显式忽略
145
+ ```
146
+
147
+ **检测方式**:
148
+ ```bash
149
+ # ESLint 检查
150
+ npx eslint src --rule '@typescript-eslint/no-floating-promises: error'
151
+ ```
152
+
153
+ **阻断阈值**:未使用 `await` 或未附加错误处理的 Promise
154
+
155
+ ### 2.5 `console.log` 遗留代码
156
+
157
+ **禁止模式**:
158
+ ```typescript
159
+ // ❌ 生产代码中的调试语句
160
+ console.log('Debug:', data);
161
+ console.warn('Warning');
162
+ ```
163
+
164
+ **合规模式**:
165
+ ```typescript
166
+ // ✅ 使用 runtime-logger
167
+ import { runtimeLogger } from '../cli/runtime-logger';
168
+ runtimeLogger.debug('Debug:', data);
169
+ runtimeLogger.warn('Warning');
170
+ ```
171
+
172
+ **例外情况**:
173
+ - `src/cli/runtime-logger.ts` 本身
174
+ - 临时调试代码(提交前必须删除)
175
+
176
+ **检测方式**:
177
+ ```bash
178
+ # ESLint 检查
179
+ npx eslint src --rule 'no-console: [error, { allow: ["error"] }]'
180
+ ```
181
+
182
+ **阻断阈值**:非 logger 模块出现 `console.log`
183
+
184
+ ### 2.6 未使用 Import
185
+
186
+ **禁止模式**:
187
+ ```typescript
188
+ // ❌ 导入但未使用
189
+ import { unusedFunction } from './utils';
190
+ import type { UnusedType } from './types';
191
+
192
+ export function doSomething() {
193
+ // 未使用上面的导入
194
+ }
195
+ ```
196
+
197
+ **合规模式**:
198
+ ```typescript
199
+ // ✅ 删除未使用的导入
200
+ export function doSomething() {
201
+ // 干净的代码
202
+ }
203
+ ```
204
+
205
+ **检测方式**:
206
+ ```bash
207
+ # TypeScript 检查
208
+ npx tsc --noUnusedLocals --noEmit
209
+
210
+ # ESLint 检查
211
+ npx eslint src --rule '@typescript-eslint/no-unused-vars: [error, { argsIgnorePattern: "^_" }]'
212
+ ```
213
+
214
+ **阻断阈值**:存在未使用的 import 或变量
215
+
216
+ ### 2.7 缺少文件头注释
217
+
218
+ **禁止模式**:
219
+ ```typescript
220
+ // ❌ 缺少 META 和 WHY 注释
221
+ export function analyze() { ... }
222
+ ```
223
+
224
+ **合规模式**:
225
+ ```typescript
226
+ // [META] since:2026-03 | owner:team | stable:false
227
+ // [WHY] 分析器主入口,负责协调解析和生成流程
228
+ export function analyze() { ... }
229
+ ```
230
+
231
+ **检测方式**:
232
+ ```bash
233
+ # pre-commit hook 自动检查
234
+ # 或手动检查
235
+ grep -L "\[META\]" src/**/*.ts | grep -v ".test.ts" | grep -v ".d.ts"
236
+ ```
237
+
238
+ **阻断阈值**:TS 源文件缺少 `[META]` 或 `[WHY]` 注释
239
+
240
+ ## 3. 检测自动化
241
+
242
+ ### 3.1 集成到 CI
243
+
244
+ ```yaml
245
+ # .github/workflows/ci-gateway.yml
246
+ - name: Check code quality redlines
247
+ run: |
248
+ npx eslint src \
249
+ --rule '@typescript-eslint/no-explicit-any: error' \
250
+ --rule '@typescript-eslint/no-floating-promises: error' \
251
+ --rule 'no-console: [error, { allow: ["error"] }]'
252
+ ```
253
+
254
+ ### 3.2 本地检查脚本
255
+
256
+ ```json
257
+ // package.json
258
+ {
259
+ "scripts": {
260
+ "check:redlines": "npm run check:types && npm run check:lint",
261
+ "check:types": "tsc --noImplicitAny --noUnusedLocals --noEmit",
262
+ "check:lint": "eslint src --ext .ts"
263
+ }
264
+ }
265
+ ```
266
+
267
+ ## 4. 自动修复策略
268
+
269
+ | 红线 | 自动修复 | 修复命令 |
270
+ |------|---------|---------|
271
+ | `any` 类型 | 部分可行 | 使用类型推导工具(如 TS 语言服务) |
272
+ | 未使用 import | 完全可行 | `eslint --fix` |
273
+ | `console.log` | 部分可行 | 替换为 logger 引用(需人工确认) |
274
+ | 函数长度 | 不可行 | 需人工重构 |
275
+ | 未处理 Promise | 部分可行 | 添加 `await` 或 `.catch()`(需人工确认逻辑) |
276
+ | 敏感信息 | 不可行 | 需人工替换为环境变量 |
277
+ | 缺少文件头 | 部分可行 | 使用代码片段模板 |
278
+
279
+ ## 5. 例外处理
280
+
281
+ ### 5.1 技术债务标记
282
+
283
+ 若因特殊原因必须违反红线,必须标记为技术债务:
284
+
285
+ ```typescript
286
+ // TODO-DEBT [L1] [日期:2026-03-17] [作者:AI] [原因:第三方库无类型定义]
287
+ // 问题:被迫使用 any 类型处理无类型的第三方库
288
+ // 风险:丢失类型安全
289
+ // 偿还计划:提交 PR 给第三方库添加类型定义,或使用 @types 包
290
+ function handleLegacyAPI(response: any): any {
291
+ return response.data;
292
+ }
293
+ ```
294
+
295
+ ### 5.2 边界文件例外
296
+
297
+ 以下文件类型允许适当的灵活性:
298
+ - 测试文件(`.test.ts`)
299
+ - 类型声明文件(`.d.ts`)
300
+ - 配置文件(如 `vitest.config.ts`)
301
+ - 脚本文件(`scripts/` 目录)
302
+
303
+ ## 6. 验收检查清单
304
+
305
+ 提交代码前检查:
306
+
307
+ - [ ] 无敏感信息硬编码
308
+ - [ ] 无 `any` 类型(或已标记 TODO-DEBT)
309
+ - [ ] 函数长度 <= 50 行(或已拆分为子函数)
310
+ - [ ] 所有 Promise 都有错误处理
311
+ - [ ] 无 `console.log` 遗留
312
+ - [ ] 无未使用的 import
313
+ - [ ] TS 源文件有 `[META]` 和 `[WHY]` 注释
314
+ - [ ] `npm run check:redlines` 通过
315
+
316
+ ## 7. 相关文档
317
+
318
+ - `AGENTS.md` - 任务分级与可信度自评
319
+ - `CLAUDE.md` - 执行清单与验收标准
320
+ - `docs/rules/engineering-with-codex-openai.md` - 工程规则
321
+ - `docs/rules/architecture-guardrails.md` - 架构护栏
@@ -0,0 +1,23 @@
1
+ # 发布与打包规则
2
+
3
+ ## 适用范围
4
+
5
+ 本项目当前主要交付形态是 npm 包与 CLI,而不是长期运行的服务部署。
6
+
7
+ ## 发布前检查
8
+
9
+ - 运行 `npm run build`,确保 `dist/` 产物可生成。
10
+ - 运行 `npm test`,确保核心行为未回退。
11
+ - 运行 `npm run validate-pack`,检查打包内容。
12
+ - 核对 `package.json` 中 `files`、`bin`、`exports` 是否与真实产物一致。
13
+
14
+ ## 当前事实
15
+
16
+ - CLI bin:`dist/cli/index.js`
17
+ - 库入口:`dist/index.js`
18
+ - `prepublishOnly` 已要求构建并测试
19
+
20
+ ## 禁止事项
21
+
22
+ - 不得通过跳过测试或伪造产物完成发布。
23
+ - 不得把只存在于本地的临时输出目录当成发布事实。