@mycodemap/mycodemap 0.1.1 → 0.2.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 (243) hide show
  1. package/CHANGELOG.md +78 -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/index.js +22 -1
  19. package/dist/cli/index.js.map +1 -1
  20. package/dist/cli-new/commands/export.d.ts +15 -0
  21. package/dist/cli-new/commands/export.d.ts.map +1 -0
  22. package/dist/cli-new/commands/export.js +107 -0
  23. package/dist/cli-new/commands/export.js.map +1 -0
  24. package/dist/cli-new/commands/query.d.ts +14 -0
  25. package/dist/cli-new/commands/query.d.ts.map +1 -0
  26. package/dist/cli-new/commands/query.js +120 -0
  27. package/dist/cli-new/commands/query.js.map +1 -0
  28. package/dist/cli-new/commands/server.d.ts +13 -0
  29. package/dist/cli-new/commands/server.d.ts.map +1 -0
  30. package/dist/cli-new/commands/server.js +94 -0
  31. package/dist/cli-new/commands/server.js.map +1 -0
  32. package/dist/cli-new/index.d.ts +11 -0
  33. package/dist/cli-new/index.d.ts.map +1 -0
  34. package/dist/cli-new/index.js +63 -0
  35. package/dist/cli-new/index.js.map +1 -0
  36. package/dist/cli-new/types/index.d.ts +88 -0
  37. package/dist/cli-new/types/index.d.ts.map +1 -0
  38. package/dist/cli-new/types/index.js +7 -0
  39. package/dist/cli-new/types/index.js.map +1 -0
  40. package/dist/domain/entities/CodeGraph.d.ts +134 -0
  41. package/dist/domain/entities/CodeGraph.d.ts.map +1 -0
  42. package/dist/domain/entities/CodeGraph.js +316 -0
  43. package/dist/domain/entities/CodeGraph.js.map +1 -0
  44. package/dist/domain/entities/Dependency.d.ts +78 -0
  45. package/dist/domain/entities/Dependency.d.ts.map +1 -0
  46. package/dist/domain/entities/Dependency.js +132 -0
  47. package/dist/domain/entities/Dependency.js.map +1 -0
  48. package/dist/domain/entities/Module.d.ts +75 -0
  49. package/dist/domain/entities/Module.d.ts.map +1 -0
  50. package/dist/domain/entities/Module.js +151 -0
  51. package/dist/domain/entities/Module.js.map +1 -0
  52. package/dist/domain/entities/Project.d.ts +50 -0
  53. package/dist/domain/entities/Project.d.ts.map +1 -0
  54. package/dist/domain/entities/Project.js +99 -0
  55. package/dist/domain/entities/Project.js.map +1 -0
  56. package/dist/domain/entities/Symbol.d.ts +75 -0
  57. package/dist/domain/entities/Symbol.d.ts.map +1 -0
  58. package/dist/domain/entities/Symbol.js +130 -0
  59. package/dist/domain/entities/Symbol.js.map +1 -0
  60. package/dist/domain/events/DomainEvent.d.ts +76 -0
  61. package/dist/domain/events/DomainEvent.d.ts.map +1 -0
  62. package/dist/domain/events/DomainEvent.js +153 -0
  63. package/dist/domain/events/DomainEvent.js.map +1 -0
  64. package/dist/domain/index.d.ts +10 -0
  65. package/dist/domain/index.d.ts.map +1 -0
  66. package/dist/domain/index.js +18 -0
  67. package/dist/domain/index.js.map +1 -0
  68. package/dist/domain/repositories/CodeGraphRepository.d.ts +58 -0
  69. package/dist/domain/repositories/CodeGraphRepository.d.ts.map +1 -0
  70. package/dist/domain/repositories/CodeGraphRepository.js +37 -0
  71. package/dist/domain/repositories/CodeGraphRepository.js.map +1 -0
  72. package/dist/domain/services/CodeGraphBuilder.d.ts +50 -0
  73. package/dist/domain/services/CodeGraphBuilder.d.ts.map +1 -0
  74. package/dist/domain/services/CodeGraphBuilder.js +121 -0
  75. package/dist/domain/services/CodeGraphBuilder.js.map +1 -0
  76. package/dist/infrastructure/parser/implementations/GoParser.d.ts +25 -0
  77. package/dist/infrastructure/parser/implementations/GoParser.d.ts.map +1 -0
  78. package/dist/infrastructure/parser/implementations/GoParser.js +158 -0
  79. package/dist/infrastructure/parser/implementations/GoParser.js.map +1 -0
  80. package/dist/infrastructure/parser/implementations/PythonParser.d.ts +30 -0
  81. package/dist/infrastructure/parser/implementations/PythonParser.d.ts.map +1 -0
  82. package/dist/infrastructure/parser/implementations/PythonParser.js +201 -0
  83. package/dist/infrastructure/parser/implementations/PythonParser.js.map +1 -0
  84. package/dist/infrastructure/parser/implementations/TypeScriptParser.d.ts +63 -0
  85. package/dist/infrastructure/parser/implementations/TypeScriptParser.d.ts.map +1 -0
  86. package/dist/infrastructure/parser/implementations/TypeScriptParser.js +420 -0
  87. package/dist/infrastructure/parser/implementations/TypeScriptParser.js.map +1 -0
  88. package/dist/infrastructure/parser/index.d.ts +13 -0
  89. package/dist/infrastructure/parser/index.d.ts.map +1 -0
  90. package/dist/infrastructure/parser/index.js +32 -0
  91. package/dist/infrastructure/parser/index.js.map +1 -0
  92. package/dist/infrastructure/parser/interfaces/ParserBase.d.ts +124 -0
  93. package/dist/infrastructure/parser/interfaces/ParserBase.d.ts.map +1 -0
  94. package/dist/infrastructure/parser/interfaces/ParserBase.js +200 -0
  95. package/dist/infrastructure/parser/interfaces/ParserBase.js.map +1 -0
  96. package/dist/infrastructure/parser/registry/ParserRegistry.d.ts +68 -0
  97. package/dist/infrastructure/parser/registry/ParserRegistry.d.ts.map +1 -0
  98. package/dist/infrastructure/parser/registry/ParserRegistry.js +116 -0
  99. package/dist/infrastructure/parser/registry/ParserRegistry.js.map +1 -0
  100. package/dist/infrastructure/repositories/CodeGraphRepositoryImpl.d.ts +44 -0
  101. package/dist/infrastructure/repositories/CodeGraphRepositoryImpl.d.ts.map +1 -0
  102. package/dist/infrastructure/repositories/CodeGraphRepositoryImpl.js +129 -0
  103. package/dist/infrastructure/repositories/CodeGraphRepositoryImpl.js.map +1 -0
  104. package/dist/infrastructure/repositories/index.d.ts +3 -0
  105. package/dist/infrastructure/repositories/index.d.ts.map +1 -0
  106. package/dist/infrastructure/repositories/index.js +7 -0
  107. package/dist/infrastructure/repositories/index.js.map +1 -0
  108. package/dist/infrastructure/storage/StorageFactory.d.ts +53 -0
  109. package/dist/infrastructure/storage/StorageFactory.d.ts.map +1 -0
  110. package/dist/infrastructure/storage/StorageFactory.js +150 -0
  111. package/dist/infrastructure/storage/StorageFactory.js.map +1 -0
  112. package/dist/infrastructure/storage/adapters/FileSystemStorage.d.ts +52 -0
  113. package/dist/infrastructure/storage/adapters/FileSystemStorage.d.ts.map +1 -0
  114. package/dist/infrastructure/storage/adapters/FileSystemStorage.js +315 -0
  115. package/dist/infrastructure/storage/adapters/FileSystemStorage.js.map +1 -0
  116. package/dist/infrastructure/storage/adapters/KuzuDBStorage.d.ts +52 -0
  117. package/dist/infrastructure/storage/adapters/KuzuDBStorage.d.ts.map +1 -0
  118. package/dist/infrastructure/storage/adapters/KuzuDBStorage.js +235 -0
  119. package/dist/infrastructure/storage/adapters/KuzuDBStorage.js.map +1 -0
  120. package/dist/infrastructure/storage/adapters/MemoryStorage.d.ts +37 -0
  121. package/dist/infrastructure/storage/adapters/MemoryStorage.d.ts.map +1 -0
  122. package/dist/infrastructure/storage/adapters/MemoryStorage.js +229 -0
  123. package/dist/infrastructure/storage/adapters/MemoryStorage.js.map +1 -0
  124. package/dist/infrastructure/storage/adapters/Neo4jStorage.d.ts +49 -0
  125. package/dist/infrastructure/storage/adapters/Neo4jStorage.d.ts.map +1 -0
  126. package/dist/infrastructure/storage/adapters/Neo4jStorage.js +222 -0
  127. package/dist/infrastructure/storage/adapters/Neo4jStorage.js.map +1 -0
  128. package/dist/infrastructure/storage/index.d.ts +6 -0
  129. package/dist/infrastructure/storage/index.d.ts.map +1 -0
  130. package/dist/infrastructure/storage/index.js +13 -0
  131. package/dist/infrastructure/storage/index.js.map +1 -0
  132. package/dist/infrastructure/storage/interfaces/StorageBase.d.ts +76 -0
  133. package/dist/infrastructure/storage/interfaces/StorageBase.d.ts.map +1 -0
  134. package/dist/infrastructure/storage/interfaces/StorageBase.js +116 -0
  135. package/dist/infrastructure/storage/interfaces/StorageBase.js.map +1 -0
  136. package/dist/interface/config/index.d.ts +102 -0
  137. package/dist/interface/config/index.d.ts.map +1 -0
  138. package/dist/interface/config/index.js +7 -0
  139. package/dist/interface/config/index.js.map +1 -0
  140. package/dist/interface/types/index.d.ts +425 -0
  141. package/dist/interface/types/index.d.ts.map +1 -0
  142. package/dist/interface/types/index.js +8 -0
  143. package/dist/interface/types/index.js.map +1 -0
  144. package/dist/interface/types/parser.d.ts +103 -0
  145. package/dist/interface/types/parser.d.ts.map +1 -0
  146. package/dist/interface/types/parser.js +7 -0
  147. package/dist/interface/types/parser.js.map +1 -0
  148. package/dist/interface/types/storage.d.ts +98 -0
  149. package/dist/interface/types/storage.d.ts.map +1 -0
  150. package/dist/interface/types/storage.js +7 -0
  151. package/dist/interface/types/storage.js.map +1 -0
  152. package/dist/orchestrator/test-linker.js +1 -1
  153. package/dist/orchestrator/test-linker.js.map +1 -1
  154. package/dist/server/CodeMapServer.d.ts +51 -0
  155. package/dist/server/CodeMapServer.d.ts.map +1 -0
  156. package/dist/server/CodeMapServer.js +146 -0
  157. package/dist/server/CodeMapServer.js.map +1 -0
  158. package/dist/server/handlers/AnalysisHandler.d.ts +82 -0
  159. package/dist/server/handlers/AnalysisHandler.d.ts.map +1 -0
  160. package/dist/server/handlers/AnalysisHandler.js +196 -0
  161. package/dist/server/handlers/AnalysisHandler.js.map +1 -0
  162. package/dist/server/handlers/QueryHandler.d.ts +57 -0
  163. package/dist/server/handlers/QueryHandler.d.ts.map +1 -0
  164. package/dist/server/handlers/QueryHandler.js +260 -0
  165. package/dist/server/handlers/QueryHandler.js.map +1 -0
  166. package/dist/server/index.d.ts +7 -0
  167. package/dist/server/index.d.ts.map +1 -0
  168. package/dist/server/index.js +13 -0
  169. package/dist/server/index.js.map +1 -0
  170. package/dist/server/routes/api.d.ts +8 -0
  171. package/dist/server/routes/api.d.ts.map +1 -0
  172. package/dist/server/routes/api.js +372 -0
  173. package/dist/server/routes/api.js.map +1 -0
  174. package/dist/server/types/index.d.ts +171 -0
  175. package/dist/server/types/index.d.ts.map +1 -0
  176. package/dist/server/types/index.js +7 -0
  177. package/dist/server/types/index.js.map +1 -0
  178. package/dist/types/index.d.ts +6 -372
  179. package/dist/types/index.d.ts.map +1 -1
  180. package/dist/types/index.js +9 -3
  181. package/dist/types/index.js.map +1 -1
  182. package/docs/AI_ASSISTANT_SETUP.md +68 -0
  183. package/docs/PUBLISHING.md +162 -0
  184. package/docs/README.md +37 -0
  185. package/docs/SETUP_GUIDE.md +91 -5
  186. package/docs/ai-guide/COMMANDS.md +369 -0
  187. package/docs/ai-guide/INTEGRATION.md +513 -0
  188. package/docs/ai-guide/OUTPUT.md +465 -0
  189. package/docs/ai-guide/PATTERNS.md +409 -0
  190. package/docs/ai-guide/PROMPTS.md +414 -0
  191. package/docs/ai-guide/QUICKSTART.md +114 -0
  192. package/docs/ai-guide/README.md +66 -0
  193. package/docs/archive/AI_INTEGRATION_GUIDE_ARCHIVED.md +7 -1
  194. package/docs/archive/ARCHIVE.md +39 -0
  195. package/docs/archive/MYCLAUDE_GUIDE.md +305 -0
  196. package/docs/archive/PUBLISH_NPM_DESIGN_V1.md +6 -0
  197. package/docs/archive/PUBLISH_NPM_DESIGN_V2.md +6 -0
  198. package/docs/archive/README.md +29 -0
  199. package/docs/archive/TASK_DESIGN_COVERAGE_REPORT.md +6 -0
  200. package/docs/archive/TEST_SUMMARY.md +140 -0
  201. package/docs/archive/comprehensive_test_report.md +337 -0
  202. package/docs/{CI_GATEWAY_DESIGN.md → archive/design-docs/CI_GATEWAY_DESIGN.md} +6 -0
  203. package/docs/{PUBLISH_NPM_DESIGN_FINAL.md → archive/design-docs/PUBLISH_NPM_DESIGN_FINAL.md} +7 -1
  204. package/docs/{REFACTOR_ARCHITECTURE_OVERVIEW.md → archive/design-docs/REFACTOR_ARCHITECTURE_OVERVIEW.md} +8 -2
  205. package/docs/{REFACTOR_CONFIDENCE_DESIGN.md → archive/design-docs/REFACTOR_CONFIDENCE_DESIGN.md} +6 -0
  206. package/docs/{REFACTOR_GIT_ANALYZER_DESIGN.md → archive/design-docs/REFACTOR_GIT_ANALYZER_DESIGN.md} +8 -2
  207. package/docs/{REFACTOR_ORCHESTRATOR_DESIGN.md → archive/design-docs/REFACTOR_ORCHESTRATOR_DESIGN.md} +6 -0
  208. package/docs/{REFACTOR_RESULT_FUSION_DESIGN.md → archive/design-docs/REFACTOR_RESULT_FUSION_DESIGN.md} +6 -0
  209. package/docs/{REFACTOR_TEST_LINKER_DESIGN.md → archive/design-docs/REFACTOR_TEST_LINKER_DESIGN.md} +6 -0
  210. package/docs/archive/myclaude.md +1084 -0
  211. package/docs/archive/plans/2026-03-14-go-language-support-design.md +92 -0
  212. package/docs/{REFACTOR_REQUIREMENTS.md → archive/product-specs/REFACTOR_REQUIREMENTS.md} +11 -5
  213. package/docs/archive/scenario-2-deps-analysis.md +353 -0
  214. package/docs/archive/test-report-symbol-search.md +384 -0
  215. package/docs/archive/test-scenario-4-complexity-analysis.md +460 -0
  216. package/docs/archive/test_report_scenario5.md +615 -0
  217. package/docs/archive/test_scenario_3_impact_analysis_report.md +520 -0
  218. package/docs/design-docs/README.md +26 -0
  219. package/docs/exec-plans/MVP3-IMPLEMENTATION-ROADMAP.md +524 -0
  220. package/docs/exec-plans/README.md +29 -0
  221. package/docs/exec-plans/active/.gitkeep +0 -0
  222. package/docs/exec-plans/completed/.gitkeep +0 -0
  223. package/docs/{plans/POST_TASK_PLAN.md → exec-plans/completed/2026-03-03-post-task-plan.md} +9 -3
  224. package/docs/exec-plans/completed/harness-engineering-rollout.md +184 -0
  225. package/docs/exec-plans/tech-debt/.gitkeep +0 -0
  226. package/docs/exec-plans/tech-debt/2026-03-15-lint-guardrail-gap.md +30 -0
  227. package/docs/generated/README.md +19 -0
  228. package/docs/product-specs/MVP3-ARCHITECTURE-COMPARISON.md +504 -0
  229. package/docs/product-specs/MVP3-ARCHITECTURE-REDESIGN-PRD.md +322 -0
  230. package/docs/product-specs/MVP3-ARCHITECTURE-REDESIGN-TECH-PRD.md +1374 -0
  231. package/docs/product-specs/README.md +22 -0
  232. package/docs/references/README.md +15 -0
  233. package/docs/references/tmp.md +527 -0
  234. package/docs/rules/README.md +16 -0
  235. package/docs/rules/architecture-guardrails.md +349 -0
  236. package/docs/rules/code-quality-redlines.md +321 -0
  237. package/docs/rules/deployment.md +23 -0
  238. package/docs/rules/engineering-with-codex-openai.md +202 -0
  239. package/docs/rules/testing.md +73 -0
  240. package/docs/rules/validation.md +39 -0
  241. package/package.json +19 -6
  242. package/docs/OMC_TEAM_DEBUG_REPORT.md +0 -285
  243. /package/docs/{plans/archive → exec-plans/completed}/2026-03-03-deps-path-extension-fix.md +0 -0
@@ -0,0 +1,235 @@
1
+ // [META] since:2026-03 | owner:architecture-team | stable:false
2
+ // [WHY] KùzuDB storage adapter - graph database backend for large projects
3
+ // ============================================
4
+ // KùzuDB 存储适配器 - 适用于大型项目的图数据库后端
5
+ // ============================================
6
+ import { join } from 'path';
7
+ import { StorageBase, StorageError } from '../interfaces/StorageBase.js';
8
+ /**
9
+ * KùzuDB 存储适配器(可选依赖)
10
+ *
11
+ * 安装:npm install kuzu
12
+ *
13
+ * 特点:
14
+ * - 嵌入式图数据库
15
+ * - 高性能图查询
16
+ * - 适合大型项目(>1000文件)
17
+ * - 支持复杂关系分析
18
+ *
19
+ * TODO-DEBT [L1] [日期:2026-03-17] [作者:AI] [原因:MVP阶段暂不实现完整功能]
20
+ * 问题:目前使用内存 fallback 实现
21
+ * 风险:无法持久化到 KùzuDB
22
+ * 偿还计划:V1.0 实现完整 KùzuDB 集成
23
+ */
24
+ export class KuzuDBStorage extends StorageBase {
25
+ type = 'kuzudb';
26
+ /** KùzuDB 数据库实例 */
27
+ db = null;
28
+ /** 连接实例 */
29
+ conn = null;
30
+ /** 内存 fallback */
31
+ memoryGraph = this.createEmptyGraph();
32
+ /** 存储配置 */
33
+ dbConfig;
34
+ constructor(config) {
35
+ super();
36
+ this.dbConfig = config;
37
+ }
38
+ // ============================================
39
+ // 生命周期管理
40
+ // ============================================
41
+ async doInitialize() {
42
+ try {
43
+ // 动态导入 kuzu 以避免未安装时的错误
44
+ // @ts-expect-error kuzu is optional dependency
45
+ const kuzu = await import('kuzu');
46
+ const dbPath = this.dbConfig.databasePath
47
+ ? join(this.projectPath, this.dbConfig.databasePath)
48
+ : join(this.projectPath, '.codemap', 'kuzudb');
49
+ this.db = new kuzu.Database(dbPath);
50
+ this.conn = new kuzu.Connection(this.db);
51
+ // 初始化 schema
52
+ await this.initializeSchema();
53
+ }
54
+ catch {
55
+ // 如果 kuzu 未安装,回退到内存模式
56
+ // eslint-disable-next-line no-console
57
+ console.warn('KùzuDB not available, falling back to memory mode');
58
+ this.memoryGraph = this.createEmptyGraph();
59
+ }
60
+ }
61
+ async doClose() {
62
+ if (this.conn && typeof this.conn.close === 'function') {
63
+ await this.conn.close();
64
+ }
65
+ this.db = null;
66
+ this.conn = null;
67
+ }
68
+ // ============================================
69
+ // 项目级别操作
70
+ // ============================================
71
+ async saveCodeGraph(graph) {
72
+ this.ensureInitialized();
73
+ if (!this.db) {
74
+ // Fallback 到内存
75
+ this.memoryGraph = {
76
+ project: { ...graph.project },
77
+ modules: [...graph.modules],
78
+ symbols: [...graph.symbols],
79
+ dependencies: [...graph.dependencies],
80
+ };
81
+ return;
82
+ }
83
+ // TODO: 实现 KùzuDB 持久化
84
+ throw new StorageError('KùzuDB persistence not yet implemented', 'NOT_IMPLEMENTED');
85
+ }
86
+ async loadCodeGraph() {
87
+ this.ensureInitialized();
88
+ if (!this.db) {
89
+ return {
90
+ project: { ...this.memoryGraph.project },
91
+ modules: [...this.memoryGraph.modules],
92
+ symbols: [...this.memoryGraph.symbols],
93
+ dependencies: [...this.memoryGraph.dependencies],
94
+ };
95
+ }
96
+ // TODO: 实现从 KùzuDB 加载
97
+ throw new StorageError('KùzuDB loading not yet implemented', 'NOT_IMPLEMENTED');
98
+ }
99
+ async deleteProject() {
100
+ this.ensureInitialized();
101
+ this.memoryGraph = this.createEmptyGraph();
102
+ // TODO: 删除 KùzuDB 数据
103
+ }
104
+ // ============================================
105
+ // 增量更新
106
+ // ============================================
107
+ async updateModule(module) {
108
+ this.ensureInitialized();
109
+ if (!this.db) {
110
+ const index = this.memoryGraph.modules.findIndex(m => m.id === module.id);
111
+ if (index >= 0) {
112
+ this.memoryGraph.modules[index] = { ...module };
113
+ }
114
+ else {
115
+ this.memoryGraph.modules.push({ ...module });
116
+ }
117
+ return;
118
+ }
119
+ // TODO: 实现 KùzuDB 更新
120
+ }
121
+ async deleteModule(moduleId) {
122
+ this.ensureInitialized();
123
+ if (!this.db) {
124
+ this.memoryGraph.modules = this.memoryGraph.modules.filter(m => m.id !== moduleId);
125
+ this.memoryGraph.symbols = this.memoryGraph.symbols.filter(s => s.moduleId !== moduleId);
126
+ this.memoryGraph.dependencies = this.memoryGraph.dependencies.filter(d => d.sourceId !== moduleId && d.targetId !== moduleId);
127
+ return;
128
+ }
129
+ // TODO: 实现 KùzuDB 删除
130
+ }
131
+ // ============================================
132
+ // 查询操作
133
+ // ============================================
134
+ async findModuleById(id) {
135
+ this.ensureInitialized();
136
+ if (!this.db) {
137
+ return this.memoryGraph.modules.find(m => m.id === id) ?? null;
138
+ }
139
+ // TODO: 实现 KùzuDB 查询
140
+ return null;
141
+ }
142
+ async findModulesByPath(path) {
143
+ this.ensureInitialized();
144
+ if (!this.db) {
145
+ return this.memoryGraph.modules.filter(m => m.path.includes(path));
146
+ }
147
+ return [];
148
+ }
149
+ async findSymbolByName(name) {
150
+ this.ensureInitialized();
151
+ if (!this.db) {
152
+ return this.memoryGraph.symbols.filter(s => s.name.includes(name));
153
+ }
154
+ return [];
155
+ }
156
+ async findSymbolById(id) {
157
+ this.ensureInitialized();
158
+ if (!this.db) {
159
+ return this.memoryGraph.symbols.find(s => s.id === id) ?? null;
160
+ }
161
+ return null;
162
+ }
163
+ async findDependencies(moduleId) {
164
+ this.ensureInitialized();
165
+ if (!this.db) {
166
+ return this.memoryGraph.dependencies.filter(d => d.sourceId === moduleId);
167
+ }
168
+ return [];
169
+ }
170
+ async findDependents(moduleId) {
171
+ this.ensureInitialized();
172
+ if (!this.db) {
173
+ return this.memoryGraph.dependencies.filter(d => d.targetId === moduleId);
174
+ }
175
+ return [];
176
+ }
177
+ async findCallers(_functionId) {
178
+ this.ensureInitialized();
179
+ return []; // TODO
180
+ }
181
+ async findCallees(_functionId) {
182
+ this.ensureInitialized();
183
+ return []; // TODO
184
+ }
185
+ // ============================================
186
+ // 分析操作
187
+ // ============================================
188
+ async detectCycles() {
189
+ this.ensureInitialized();
190
+ return []; // TODO
191
+ }
192
+ async calculateImpact(moduleId, depth) {
193
+ this.ensureInitialized();
194
+ return {
195
+ rootModule: moduleId,
196
+ affectedModules: [],
197
+ depth,
198
+ };
199
+ }
200
+ async getStatistics() {
201
+ this.ensureInitialized();
202
+ return {
203
+ totalModules: this.memoryGraph.modules.length,
204
+ totalSymbols: this.memoryGraph.symbols.length,
205
+ totalDependencies: this.memoryGraph.dependencies.length,
206
+ totalLines: this.memoryGraph.modules.reduce((sum, m) => sum + m.stats.lines, 0),
207
+ averageComplexity: 0,
208
+ };
209
+ }
210
+ // ============================================
211
+ // 私有方法
212
+ // ============================================
213
+ async initializeSchema() {
214
+ // TODO: 创建 KùzuDB schema
215
+ // CREATE NODE TABLE Module(...)
216
+ // CREATE NODE TABLE Symbol(...)
217
+ // CREATE REL TABLE DependsOn(...)
218
+ // CREATE REL TABLE Calls(...)
219
+ }
220
+ createEmptyGraph() {
221
+ return {
222
+ project: {
223
+ id: '',
224
+ name: '',
225
+ rootPath: this.projectPath ?? '',
226
+ createdAt: new Date(),
227
+ updatedAt: new Date(),
228
+ },
229
+ modules: [],
230
+ symbols: [],
231
+ dependencies: [],
232
+ };
233
+ }
234
+ }
235
+ //# sourceMappingURL=KuzuDBStorage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"KuzuDBStorage.js","sourceRoot":"","sources":["../../../../src/infrastructure/storage/adapters/KuzuDBStorage.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ import type { Cycle, ImpactResult, ProjectStatistics } from '../../../interface/types/storage.js';
2
+ import type { CodeGraph, Module, Symbol, Dependency } from '../../../interface/types/index.js';
3
+ import { StorageBase } from '../interfaces/StorageBase.js';
4
+ /**
5
+ * 内存存储适配器
6
+ *
7
+ * 特点:
8
+ * - 纯内存存储,无持久化
9
+ * - 速度最快
10
+ * - 进程结束数据丢失
11
+ * - 适合单元测试和临时分析
12
+ */
13
+ export declare class MemoryStorage extends StorageBase {
14
+ readonly type: "memory";
15
+ /** 内存中的代码图 */
16
+ private graph;
17
+ protected doInitialize(): Promise<void>;
18
+ protected doClose(): Promise<void>;
19
+ saveCodeGraph(graph: CodeGraph): Promise<void>;
20
+ loadCodeGraph(): Promise<CodeGraph>;
21
+ deleteProject(): Promise<void>;
22
+ updateModule(module: Module): Promise<void>;
23
+ deleteModule(moduleId: string): Promise<void>;
24
+ findModuleById(id: string): Promise<Module | null>;
25
+ findModulesByPath(path: string): Promise<Module[]>;
26
+ findSymbolByName(name: string): Promise<Symbol[]>;
27
+ findSymbolById(id: string): Promise<Symbol | null>;
28
+ findDependencies(moduleId: string): Promise<Dependency[]>;
29
+ findDependents(moduleId: string): Promise<Dependency[]>;
30
+ findCallers(functionId: string): Promise<Symbol[]>;
31
+ findCallees(functionId: string): Promise<Symbol[]>;
32
+ detectCycles(): Promise<Cycle[]>;
33
+ calculateImpact(moduleId: string, depth: number): Promise<ImpactResult>;
34
+ getStatistics(): Promise<ProjectStatistics>;
35
+ private createEmptyGraph;
36
+ }
37
+ //# sourceMappingURL=MemoryStorage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MemoryStorage.d.ts","sourceRoot":"","sources":["../../../../src/infrastructure/storage/adapters/MemoryStorage.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACV,KAAK,EACL,YAAY,EACZ,iBAAiB,EAClB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,KAAK,EACV,SAAS,EACT,MAAM,EACN,MAAM,EACN,UAAU,EACX,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAgB,MAAM,8BAA8B,CAAC;AAEzE;;;;;;;;GAQG;AACH,qBAAa,aAAc,SAAQ,WAAW;IAC5C,QAAQ,CAAC,IAAI,EAAG,QAAQ,CAAU;IAElC,cAAc;IACd,OAAO,CAAC,KAAK,CAAsC;cAMnC,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;cAK7B,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IASlC,aAAa,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAU9C,aAAa,IAAI,OAAO,CAAC,SAAS,CAAC;IAUnC,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAS9B,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAW3C,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAc7C,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAKlD,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAKlD,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAKjD,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAKlD,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAKzD,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAKvD,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAmBlD,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAuBlD,YAAY,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;IA2ChC,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAoCvE,aAAa,IAAI,OAAO,CAAC,iBAAiB,CAAC;IAkBjD,OAAO,CAAC,gBAAgB;CAczB"}
@@ -0,0 +1,229 @@
1
+ // [META] since:2026-03 | owner:architecture-team | stable:true
2
+ // [WHY] Memory storage adapter - in-memory storage for testing and lightweight usage
3
+ // ============================================
4
+ // 内存存储适配器 - 用于测试和轻量级场景的内存存储
5
+ // ============================================
6
+ import { StorageBase } from '../interfaces/StorageBase.js';
7
+ /**
8
+ * 内存存储适配器
9
+ *
10
+ * 特点:
11
+ * - 纯内存存储,无持久化
12
+ * - 速度最快
13
+ * - 进程结束数据丢失
14
+ * - 适合单元测试和临时分析
15
+ */
16
+ export class MemoryStorage extends StorageBase {
17
+ type = 'memory';
18
+ /** 内存中的代码图 */
19
+ graph = this.createEmptyGraph();
20
+ // ============================================
21
+ // 生命周期管理
22
+ // ============================================
23
+ async doInitialize() {
24
+ // 内存存储无需特殊初始化
25
+ this.graph = this.createEmptyGraph();
26
+ }
27
+ async doClose() {
28
+ // 清理内存
29
+ this.graph = this.createEmptyGraph();
30
+ }
31
+ // ============================================
32
+ // 项目级别操作
33
+ // ============================================
34
+ async saveCodeGraph(graph) {
35
+ this.ensureInitialized();
36
+ this.graph = {
37
+ project: { ...graph.project },
38
+ modules: [...graph.modules],
39
+ symbols: [...graph.symbols],
40
+ dependencies: [...graph.dependencies],
41
+ };
42
+ }
43
+ async loadCodeGraph() {
44
+ this.ensureInitialized();
45
+ return {
46
+ project: { ...this.graph.project },
47
+ modules: [...this.graph.modules],
48
+ symbols: [...this.graph.symbols],
49
+ dependencies: [...this.graph.dependencies],
50
+ };
51
+ }
52
+ async deleteProject() {
53
+ this.ensureInitialized();
54
+ this.graph = this.createEmptyGraph();
55
+ }
56
+ // ============================================
57
+ // 增量更新
58
+ // ============================================
59
+ async updateModule(module) {
60
+ this.ensureInitialized();
61
+ const index = this.graph.modules.findIndex(m => m.id === module.id);
62
+ if (index >= 0) {
63
+ this.graph.modules[index] = { ...module };
64
+ }
65
+ else {
66
+ this.graph.modules.push({ ...module });
67
+ }
68
+ }
69
+ async deleteModule(moduleId) {
70
+ this.ensureInitialized();
71
+ this.graph.modules = this.graph.modules.filter(m => m.id !== moduleId);
72
+ this.graph.symbols = this.graph.symbols.filter(s => s.moduleId !== moduleId);
73
+ this.graph.dependencies = this.graph.dependencies.filter(d => d.sourceId !== moduleId && d.targetId !== moduleId);
74
+ }
75
+ // ============================================
76
+ // 查询操作
77
+ // ============================================
78
+ async findModuleById(id) {
79
+ this.ensureInitialized();
80
+ return this.graph.modules.find(m => m.id === id) ?? null;
81
+ }
82
+ async findModulesByPath(path) {
83
+ this.ensureInitialized();
84
+ return this.graph.modules.filter(m => m.path.includes(path));
85
+ }
86
+ async findSymbolByName(name) {
87
+ this.ensureInitialized();
88
+ return this.graph.symbols.filter(s => s.name.includes(name));
89
+ }
90
+ async findSymbolById(id) {
91
+ this.ensureInitialized();
92
+ return this.graph.symbols.find(s => s.id === id) ?? null;
93
+ }
94
+ async findDependencies(moduleId) {
95
+ this.ensureInitialized();
96
+ return this.graph.dependencies.filter(d => d.sourceId === moduleId);
97
+ }
98
+ async findDependents(moduleId) {
99
+ this.ensureInitialized();
100
+ return this.graph.dependencies.filter(d => d.targetId === moduleId);
101
+ }
102
+ async findCallers(functionId) {
103
+ this.ensureInitialized();
104
+ const callerIds = new Set();
105
+ for (const dep of this.graph.dependencies) {
106
+ if (dep.targetId === functionId && dep.type === 'call') {
107
+ callerIds.add(dep.sourceId);
108
+ }
109
+ }
110
+ const results = [];
111
+ for (const id of callerIds) {
112
+ const symbol = this.graph.symbols.find(s => s.id === id);
113
+ if (symbol)
114
+ results.push(symbol);
115
+ }
116
+ return results;
117
+ }
118
+ async findCallees(functionId) {
119
+ this.ensureInitialized();
120
+ const calleeIds = new Set();
121
+ for (const dep of this.graph.dependencies) {
122
+ if (dep.sourceId === functionId && dep.type === 'call') {
123
+ calleeIds.add(dep.targetId);
124
+ }
125
+ }
126
+ const results = [];
127
+ for (const id of calleeIds) {
128
+ const symbol = this.graph.symbols.find(s => s.id === id);
129
+ if (symbol)
130
+ results.push(symbol);
131
+ }
132
+ return results;
133
+ }
134
+ // ============================================
135
+ // 分析操作
136
+ // ============================================
137
+ async detectCycles() {
138
+ this.ensureInitialized();
139
+ const cycles = [];
140
+ const visited = new Set();
141
+ const inStack = new Set();
142
+ const dfs = (nodeId, path) => {
143
+ if (inStack.has(nodeId)) {
144
+ const cycleStart = path.indexOf(nodeId);
145
+ const cycleModules = path.slice(cycleStart);
146
+ cycles.push({
147
+ modules: cycleModules,
148
+ length: cycleModules.length,
149
+ });
150
+ return;
151
+ }
152
+ if (visited.has(nodeId)) {
153
+ return;
154
+ }
155
+ visited.add(nodeId);
156
+ inStack.add(nodeId);
157
+ for (const dep of this.graph.dependencies) {
158
+ if (dep.sourceId === nodeId) {
159
+ dfs(dep.targetId, [...path, nodeId]);
160
+ }
161
+ }
162
+ inStack.delete(nodeId);
163
+ };
164
+ for (const module of this.graph.modules) {
165
+ if (!visited.has(module.id)) {
166
+ dfs(module.id, []);
167
+ }
168
+ }
169
+ return cycles;
170
+ }
171
+ async calculateImpact(moduleId, depth) {
172
+ this.ensureInitialized();
173
+ const affectedModules = [];
174
+ const visited = new Set();
175
+ const queue = [{ id: moduleId, level: 0 }];
176
+ while (queue.length > 0) {
177
+ const { id, level } = queue.shift();
178
+ if (visited.has(id) || level > depth) {
179
+ continue;
180
+ }
181
+ visited.add(id);
182
+ if (level > 0) {
183
+ const module = this.graph.modules.find(m => m.id === id);
184
+ if (module) {
185
+ affectedModules.push({ ...module });
186
+ }
187
+ }
188
+ for (const dep of this.graph.dependencies) {
189
+ if (dep.targetId === id && !visited.has(dep.sourceId)) {
190
+ queue.push({ id: dep.sourceId, level: level + 1 });
191
+ }
192
+ }
193
+ }
194
+ return {
195
+ rootModule: moduleId,
196
+ affectedModules,
197
+ depth,
198
+ };
199
+ }
200
+ async getStatistics() {
201
+ this.ensureInitialized();
202
+ const totalLines = this.graph.modules.reduce((sum, m) => sum + m.stats.lines, 0);
203
+ return {
204
+ totalModules: this.graph.modules.length,
205
+ totalSymbols: this.graph.symbols.length,
206
+ totalDependencies: this.graph.dependencies.length,
207
+ totalLines,
208
+ averageComplexity: 0,
209
+ };
210
+ }
211
+ // ============================================
212
+ // 私有方法
213
+ // ============================================
214
+ createEmptyGraph() {
215
+ return {
216
+ project: {
217
+ id: '',
218
+ name: '',
219
+ rootPath: this.projectPath ?? '',
220
+ createdAt: new Date(),
221
+ updatedAt: new Date(),
222
+ },
223
+ modules: [],
224
+ symbols: [],
225
+ dependencies: [],
226
+ };
227
+ }
228
+ }
229
+ //# sourceMappingURL=MemoryStorage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MemoryStorage.js","sourceRoot":"","sources":["../../../../src/infrastructure/storage/adapters/MemoryStorage.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,49 @@
1
+ import type { StorageConfig, Cycle, ImpactResult, ProjectStatistics } from '../../../interface/types/storage.js';
2
+ import type { CodeGraph, Module, Symbol, Dependency } from '../../../interface/types/index.js';
3
+ import { StorageBase } from '../interfaces/StorageBase.js';
4
+ /**
5
+ * Neo4j 存储适配器(可选依赖)
6
+ *
7
+ * 安装:npm install neo4j-driver
8
+ *
9
+ * 特点:
10
+ * - 企业级图数据库
11
+ * - Cypher 查询语言
12
+ * - 分布式部署支持
13
+ * - 适合团队协作场景
14
+ *
15
+ * TODO-DEBT [L1] [日期:2026-03-17] [作者:AI] [原因:MVP阶段暂不实现完整功能]
16
+ * 问题:目前使用内存 fallback 实现
17
+ * 风险:无法连接真实 Neo4j 实例
18
+ * 偿还计划:V1.0 实现完整 Neo4j 集成
19
+ */
20
+ export declare class Neo4jStorage extends StorageBase {
21
+ readonly type: "neo4j";
22
+ /** Neo4j 驱动 */
23
+ private driver;
24
+ /** 内存 fallback */
25
+ private memoryGraph;
26
+ /** 存储配置 */
27
+ private dbConfig;
28
+ constructor(config: StorageConfig);
29
+ protected doInitialize(): Promise<void>;
30
+ protected doClose(): Promise<void>;
31
+ saveCodeGraph(graph: CodeGraph): Promise<void>;
32
+ loadCodeGraph(): Promise<CodeGraph>;
33
+ deleteProject(): Promise<void>;
34
+ updateModule(module: Module): Promise<void>;
35
+ deleteModule(moduleId: string): Promise<void>;
36
+ findModuleById(id: string): Promise<Module | null>;
37
+ findModulesByPath(path: string): Promise<Module[]>;
38
+ findSymbolByName(name: string): Promise<Symbol[]>;
39
+ findSymbolById(id: string): Promise<Symbol | null>;
40
+ findDependencies(moduleId: string): Promise<Dependency[]>;
41
+ findDependents(moduleId: string): Promise<Dependency[]>;
42
+ findCallers(_functionId: string): Promise<Symbol[]>;
43
+ findCallees(_functionId: string): Promise<Symbol[]>;
44
+ detectCycles(): Promise<Cycle[]>;
45
+ calculateImpact(moduleId: string, depth: number): Promise<ImpactResult>;
46
+ getStatistics(): Promise<ProjectStatistics>;
47
+ private createEmptyGraph;
48
+ }
49
+ //# sourceMappingURL=Neo4jStorage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Neo4jStorage.d.ts","sourceRoot":"","sources":["../../../../src/infrastructure/storage/adapters/Neo4jStorage.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACV,aAAa,EACb,KAAK,EACL,YAAY,EACZ,iBAAiB,EAClB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,KAAK,EACV,SAAS,EACT,MAAM,EACN,MAAM,EACN,UAAU,EACX,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAgB,MAAM,8BAA8B,CAAC;AAEzE;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,YAAa,SAAQ,WAAW;IAC3C,QAAQ,CAAC,IAAI,EAAG,OAAO,CAAU;IAEjC,eAAe;IACf,OAAO,CAAC,MAAM,CAAiB;IAE/B,kBAAkB;IAClB,OAAO,CAAC,WAAW,CAAsC;IAEzD,WAAW;IACX,OAAO,CAAC,QAAQ,CAAgB;gBAEpB,MAAM,EAAE,aAAa;cASjB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;cAuB7B,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAWlC,aAAa,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAoB9C,aAAa,IAAI,OAAO,CAAC,SAAS,CAAC;IAmBnC,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAU9B,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAgB3C,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAmB7C,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAUlD,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAUlD,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAUjD,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAUlD,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAUzD,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAUvD,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAKnD,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IASnD,YAAY,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;IAKhC,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IASvE,aAAa,IAAI,OAAO,CAAC,iBAAiB,CAAC;IAgBjD,OAAO,CAAC,gBAAgB;CAczB"}