@noyrax/5d-database-plugin 0.1.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 (369) hide show
  1. package/ADR_VORSCHLAEGE.md +247 -0
  2. package/CHROMADB_SETUP.md +69 -0
  3. package/IMPROVEMENT_ROADMAP.md +435 -0
  4. package/INSTALLATION_READINESS.md +150 -0
  5. package/KNOWN_ISSUES.md +210 -0
  6. package/LICENSE +21 -0
  7. package/MCP_SERVER_SETUP.md +359 -0
  8. package/MCP_SERVER_TEST_REPORT.md +206 -0
  9. package/NOYRAX_INTEGRATION.md +224 -0
  10. package/QUICK_START.md +316 -0
  11. package/README.md +240 -0
  12. package/SETUP_NEW_PROJECT.md +260 -0
  13. package/SYSTEM_ANALYSIS_REPORT.md +341 -0
  14. package/out/api/adr-api.d.ts +22 -0
  15. package/out/api/adr-api.d.ts.map +1 -0
  16. package/out/api/adr-api.js +38 -0
  17. package/out/api/adr-api.js.map +1 -0
  18. package/out/api/bootstrap-api.d.ts +43 -0
  19. package/out/api/bootstrap-api.d.ts.map +1 -0
  20. package/out/api/bootstrap-api.js +88 -0
  21. package/out/api/bootstrap-api.js.map +1 -0
  22. package/out/api/change-api.d.ts +30 -0
  23. package/out/api/change-api.d.ts.map +1 -0
  24. package/out/api/change-api.js +54 -0
  25. package/out/api/change-api.js.map +1 -0
  26. package/out/api/context-builder.d.ts +81 -0
  27. package/out/api/context-builder.d.ts.map +1 -0
  28. package/out/api/context-builder.js +288 -0
  29. package/out/api/context-builder.js.map +1 -0
  30. package/out/api/cross-dimension-api.d.ts +43 -0
  31. package/out/api/cross-dimension-api.d.ts.map +1 -0
  32. package/out/api/cross-dimension-api.js +55 -0
  33. package/out/api/cross-dimension-api.js.map +1 -0
  34. package/out/api/dependency-api.d.ts +26 -0
  35. package/out/api/dependency-api.d.ts.map +1 -0
  36. package/out/api/dependency-api.js +46 -0
  37. package/out/api/dependency-api.js.map +1 -0
  38. package/out/api/learning-path-api.d.ts +49 -0
  39. package/out/api/learning-path-api.d.ts.map +1 -0
  40. package/out/api/learning-path-api.js +174 -0
  41. package/out/api/learning-path-api.js.map +1 -0
  42. package/out/api/module-api.d.ts +26 -0
  43. package/out/api/module-api.d.ts.map +1 -0
  44. package/out/api/module-api.js +46 -0
  45. package/out/api/module-api.js.map +1 -0
  46. package/out/api/search-api.d.ts +64 -0
  47. package/out/api/search-api.d.ts.map +1 -0
  48. package/out/api/search-api.js +235 -0
  49. package/out/api/search-api.js.map +1 -0
  50. package/out/api/self-explanation-api.d.ts +71 -0
  51. package/out/api/self-explanation-api.d.ts.map +1 -0
  52. package/out/api/self-explanation-api.js +153 -0
  53. package/out/api/self-explanation-api.js.map +1 -0
  54. package/out/api/semantic-search-api.d.ts +64 -0
  55. package/out/api/semantic-search-api.d.ts.map +1 -0
  56. package/out/api/semantic-search-api.js +205 -0
  57. package/out/api/semantic-search-api.js.map +1 -0
  58. package/out/api/symbol-api.d.ts +22 -0
  59. package/out/api/symbol-api.d.ts.map +1 -0
  60. package/out/api/symbol-api.js +38 -0
  61. package/out/api/symbol-api.js.map +1 -0
  62. package/out/api/vector-api.d.ts +26 -0
  63. package/out/api/vector-api.d.ts.map +1 -0
  64. package/out/api/vector-api.js +49 -0
  65. package/out/api/vector-api.js.map +1 -0
  66. package/out/cli/embedding-cli.d.ts +3 -0
  67. package/out/cli/embedding-cli.d.ts.map +1 -0
  68. package/out/cli/embedding-cli.js +151 -0
  69. package/out/cli/embedding-cli.js.map +1 -0
  70. package/out/cli/ingest-cli.d.ts +3 -0
  71. package/out/cli/ingest-cli.d.ts.map +1 -0
  72. package/out/cli/ingest-cli.js +145 -0
  73. package/out/cli/ingest-cli.js.map +1 -0
  74. package/out/cli/mcp-server-cli.d.ts +3 -0
  75. package/out/cli/mcp-server-cli.d.ts.map +1 -0
  76. package/out/cli/mcp-server-cli.js +159 -0
  77. package/out/cli/mcp-server-cli.js.map +1 -0
  78. package/out/cli/query-cli.d.ts +3 -0
  79. package/out/cli/query-cli.d.ts.map +1 -0
  80. package/out/cli/query-cli.js +217 -0
  81. package/out/cli/query-cli.js.map +1 -0
  82. package/out/cli/semantic-search-cli.d.ts +3 -0
  83. package/out/cli/semantic-search-cli.d.ts.map +1 -0
  84. package/out/cli/semantic-search-cli.js +196 -0
  85. package/out/cli/semantic-search-cli.js.map +1 -0
  86. package/out/cli/test-chromadb.d.ts +3 -0
  87. package/out/cli/test-chromadb.d.ts.map +1 -0
  88. package/out/cli/test-chromadb.js +204 -0
  89. package/out/cli/test-chromadb.js.map +1 -0
  90. package/out/cli/test-v-dimension.d.ts +3 -0
  91. package/out/cli/test-v-dimension.d.ts.map +1 -0
  92. package/out/cli/test-v-dimension.js +330 -0
  93. package/out/cli/test-v-dimension.js.map +1 -0
  94. package/out/cli/tool-cli.d.ts +3 -0
  95. package/out/cli/tool-cli.d.ts.map +1 -0
  96. package/out/cli/tool-cli.js +237 -0
  97. package/out/cli/tool-cli.js.map +1 -0
  98. package/out/cli/verify-openai-key.d.ts +3 -0
  99. package/out/cli/verify-openai-key.d.ts.map +1 -0
  100. package/out/cli/verify-openai-key.js +141 -0
  101. package/out/cli/verify-openai-key.js.map +1 -0
  102. package/out/cli/verify-vss-status.d.ts +3 -0
  103. package/out/cli/verify-vss-status.d.ts.map +1 -0
  104. package/out/cli/verify-vss-status.js +185 -0
  105. package/out/cli/verify-vss-status.js.map +1 -0
  106. package/out/core/chromadb-vector-database.d.ts +52 -0
  107. package/out/core/chromadb-vector-database.d.ts.map +1 -0
  108. package/out/core/chromadb-vector-database.js +276 -0
  109. package/out/core/chromadb-vector-database.js.map +1 -0
  110. package/out/core/docs-path-resolver.d.ts +43 -0
  111. package/out/core/docs-path-resolver.d.ts.map +1 -0
  112. package/out/core/docs-path-resolver.js +137 -0
  113. package/out/core/docs-path-resolver.js.map +1 -0
  114. package/out/core/id-mapper.d.ts +68 -0
  115. package/out/core/id-mapper.d.ts.map +1 -0
  116. package/out/core/id-mapper.js +132 -0
  117. package/out/core/id-mapper.js.map +1 -0
  118. package/out/core/migration-manager.d.ts +75 -0
  119. package/out/core/migration-manager.d.ts.map +1 -0
  120. package/out/core/migration-manager.js +212 -0
  121. package/out/core/migration-manager.js.map +1 -0
  122. package/out/core/multi-db-manager.d.ts +84 -0
  123. package/out/core/multi-db-manager.d.ts.map +1 -0
  124. package/out/core/multi-db-manager.js +206 -0
  125. package/out/core/multi-db-manager.js.map +1 -0
  126. package/out/core/transaction-manager.d.ts +69 -0
  127. package/out/core/transaction-manager.d.ts.map +1 -0
  128. package/out/core/transaction-manager.js +138 -0
  129. package/out/core/transaction-manager.js.map +1 -0
  130. package/out/core/vector-database-factory.d.ts +25 -0
  131. package/out/core/vector-database-factory.d.ts.map +1 -0
  132. package/out/core/vector-database-factory.js +82 -0
  133. package/out/core/vector-database-factory.js.map +1 -0
  134. package/out/core/vector-database-interface.d.ts +50 -0
  135. package/out/core/vector-database-interface.d.ts.map +1 -0
  136. package/out/core/vector-database-interface.js +3 -0
  137. package/out/core/vector-database-interface.js.map +1 -0
  138. package/out/core/vss-loader.d.ts +29 -0
  139. package/out/core/vss-loader.d.ts.map +1 -0
  140. package/out/core/vss-loader.js +150 -0
  141. package/out/core/vss-loader.js.map +1 -0
  142. package/out/core/vss-manager.d.ts +81 -0
  143. package/out/core/vss-manager.d.ts.map +1 -0
  144. package/out/core/vss-manager.js +323 -0
  145. package/out/core/vss-manager.js.map +1 -0
  146. package/out/core/vss-vector-database.d.ts +71 -0
  147. package/out/core/vss-vector-database.d.ts.map +1 -0
  148. package/out/core/vss-vector-database.js +284 -0
  149. package/out/core/vss-vector-database.js.map +1 -0
  150. package/out/embedding/embedding-generator.d.ts +45 -0
  151. package/out/embedding/embedding-generator.d.ts.map +1 -0
  152. package/out/embedding/embedding-generator.js +143 -0
  153. package/out/embedding/embedding-generator.js.map +1 -0
  154. package/out/embedding/embedding-pipeline.d.ts +42 -0
  155. package/out/embedding/embedding-pipeline.d.ts.map +1 -0
  156. package/out/embedding/embedding-pipeline.js +290 -0
  157. package/out/embedding/embedding-pipeline.js.map +1 -0
  158. package/out/extension.d.ts +10 -0
  159. package/out/extension.d.ts.map +1 -0
  160. package/out/extension.js +164 -0
  161. package/out/extension.js.map +1 -0
  162. package/out/ingestors/adr-ingestor.d.ts +41 -0
  163. package/out/ingestors/adr-ingestor.d.ts.map +1 -0
  164. package/out/ingestors/adr-ingestor.js +329 -0
  165. package/out/ingestors/adr-ingestor.js.map +1 -0
  166. package/out/ingestors/base-ingestor.d.ts +30 -0
  167. package/out/ingestors/base-ingestor.d.ts.map +1 -0
  168. package/out/ingestors/base-ingestor.js +3 -0
  169. package/out/ingestors/base-ingestor.js.map +1 -0
  170. package/out/ingestors/change-ingestor.d.ts +36 -0
  171. package/out/ingestors/change-ingestor.d.ts.map +1 -0
  172. package/out/ingestors/change-ingestor.js +216 -0
  173. package/out/ingestors/change-ingestor.js.map +1 -0
  174. package/out/ingestors/dependency-ingestor.d.ts +32 -0
  175. package/out/ingestors/dependency-ingestor.d.ts.map +1 -0
  176. package/out/ingestors/dependency-ingestor.js +194 -0
  177. package/out/ingestors/dependency-ingestor.js.map +1 -0
  178. package/out/ingestors/module-ingestor.d.ts +27 -0
  179. package/out/ingestors/module-ingestor.d.ts.map +1 -0
  180. package/out/ingestors/module-ingestor.js +137 -0
  181. package/out/ingestors/module-ingestor.js.map +1 -0
  182. package/out/ingestors/symbol-ingestor.d.ts +26 -0
  183. package/out/ingestors/symbol-ingestor.d.ts.map +1 -0
  184. package/out/ingestors/symbol-ingestor.js +183 -0
  185. package/out/ingestors/symbol-ingestor.js.map +1 -0
  186. package/out/mcp/resources/adrs.d.ts +13 -0
  187. package/out/mcp/resources/adrs.d.ts.map +1 -0
  188. package/out/mcp/resources/adrs.js +26 -0
  189. package/out/mcp/resources/adrs.js.map +1 -0
  190. package/out/mcp/resources/changes.d.ts +13 -0
  191. package/out/mcp/resources/changes.d.ts.map +1 -0
  192. package/out/mcp/resources/changes.js +26 -0
  193. package/out/mcp/resources/changes.js.map +1 -0
  194. package/out/mcp/resources/dependencies.d.ts +13 -0
  195. package/out/mcp/resources/dependencies.d.ts.map +1 -0
  196. package/out/mcp/resources/dependencies.js +26 -0
  197. package/out/mcp/resources/dependencies.js.map +1 -0
  198. package/out/mcp/resources/modules.d.ts +13 -0
  199. package/out/mcp/resources/modules.d.ts.map +1 -0
  200. package/out/mcp/resources/modules.js +26 -0
  201. package/out/mcp/resources/modules.js.map +1 -0
  202. package/out/mcp/resources/symbols.d.ts +13 -0
  203. package/out/mcp/resources/symbols.d.ts.map +1 -0
  204. package/out/mcp/resources/symbols.js +26 -0
  205. package/out/mcp/resources/symbols.js.map +1 -0
  206. package/out/mcp/server.d.ts +29 -0
  207. package/out/mcp/server.d.ts.map +1 -0
  208. package/out/mcp/server.js +300 -0
  209. package/out/mcp/server.js.map +1 -0
  210. package/out/mcp/tools/architecture-mining.d.ts +46 -0
  211. package/out/mcp/tools/architecture-mining.d.ts.map +1 -0
  212. package/out/mcp/tools/architecture-mining.js +272 -0
  213. package/out/mcp/tools/architecture-mining.js.map +1 -0
  214. package/out/mcp/tools/bootstrap.d.ts +9 -0
  215. package/out/mcp/tools/bootstrap.d.ts.map +1 -0
  216. package/out/mcp/tools/bootstrap.js +14 -0
  217. package/out/mcp/tools/bootstrap.js.map +1 -0
  218. package/out/mcp/tools/cross-analysis.d.ts +18 -0
  219. package/out/mcp/tools/cross-analysis.d.ts.map +1 -0
  220. package/out/mcp/tools/cross-analysis.js +23 -0
  221. package/out/mcp/tools/cross-analysis.js.map +1 -0
  222. package/out/mcp/tools/gap-analysis.d.ts +34 -0
  223. package/out/mcp/tools/gap-analysis.d.ts.map +1 -0
  224. package/out/mcp/tools/gap-analysis.js +106 -0
  225. package/out/mcp/tools/gap-analysis.js.map +1 -0
  226. package/out/mcp/tools/learning-path.d.ts +10 -0
  227. package/out/mcp/tools/learning-path.d.ts.map +1 -0
  228. package/out/mcp/tools/learning-path.js +18 -0
  229. package/out/mcp/tools/learning-path.js.map +1 -0
  230. package/out/mcp/tools/query-dependencies.d.ts +18 -0
  231. package/out/mcp/tools/query-dependencies.d.ts.map +1 -0
  232. package/out/mcp/tools/query-dependencies.js +31 -0
  233. package/out/mcp/tools/query-dependencies.js.map +1 -0
  234. package/out/mcp/tools/query-modules.d.ts +17 -0
  235. package/out/mcp/tools/query-modules.d.ts.map +1 -0
  236. package/out/mcp/tools/query-modules.js +22 -0
  237. package/out/mcp/tools/query-modules.js.map +1 -0
  238. package/out/mcp/tools/query-symbols.d.ts +18 -0
  239. package/out/mcp/tools/query-symbols.d.ts.map +1 -0
  240. package/out/mcp/tools/query-symbols.js +32 -0
  241. package/out/mcp/tools/query-symbols.js.map +1 -0
  242. package/out/mcp/tools/semantic-discovery.d.ts +12 -0
  243. package/out/mcp/tools/semantic-discovery.d.ts.map +1 -0
  244. package/out/mcp/tools/semantic-discovery.js +35 -0
  245. package/out/mcp/tools/semantic-discovery.js.map +1 -0
  246. package/out/mcp/tools/system-explanation.d.ts +9 -0
  247. package/out/mcp/tools/system-explanation.d.ts.map +1 -0
  248. package/out/mcp/tools/system-explanation.js +14 -0
  249. package/out/mcp/tools/system-explanation.js.map +1 -0
  250. package/out/mcp/types.d.ts +19 -0
  251. package/out/mcp/types.d.ts.map +1 -0
  252. package/out/mcp/types.js +6 -0
  253. package/out/mcp/types.js.map +1 -0
  254. package/out/models/adr.d.ts +26 -0
  255. package/out/models/adr.d.ts.map +1 -0
  256. package/out/models/adr.js +3 -0
  257. package/out/models/adr.js.map +1 -0
  258. package/out/models/change.d.ts +42 -0
  259. package/out/models/change.d.ts.map +1 -0
  260. package/out/models/change.js +3 -0
  261. package/out/models/change.js.map +1 -0
  262. package/out/models/dependency.d.ts +37 -0
  263. package/out/models/dependency.d.ts.map +1 -0
  264. package/out/models/dependency.js +3 -0
  265. package/out/models/dependency.js.map +1 -0
  266. package/out/models/entity-reference.d.ts +20 -0
  267. package/out/models/entity-reference.d.ts.map +1 -0
  268. package/out/models/entity-reference.js +19 -0
  269. package/out/models/entity-reference.js.map +1 -0
  270. package/out/models/module.d.ts +26 -0
  271. package/out/models/module.d.ts.map +1 -0
  272. package/out/models/module.js +3 -0
  273. package/out/models/module.js.map +1 -0
  274. package/out/models/symbol.d.ts +31 -0
  275. package/out/models/symbol.d.ts.map +1 -0
  276. package/out/models/symbol.js +3 -0
  277. package/out/models/symbol.js.map +1 -0
  278. package/out/repositories/adr-repository.d.ts +41 -0
  279. package/out/repositories/adr-repository.d.ts.map +1 -0
  280. package/out/repositories/adr-repository.js +128 -0
  281. package/out/repositories/adr-repository.js.map +1 -0
  282. package/out/repositories/base-repository.d.ts +86 -0
  283. package/out/repositories/base-repository.d.ts.map +1 -0
  284. package/out/repositories/base-repository.js +66 -0
  285. package/out/repositories/base-repository.js.map +1 -0
  286. package/out/repositories/change-repository.d.ts +40 -0
  287. package/out/repositories/change-repository.d.ts.map +1 -0
  288. package/out/repositories/change-repository.js +150 -0
  289. package/out/repositories/change-repository.js.map +1 -0
  290. package/out/repositories/dependency-repository.d.ts +40 -0
  291. package/out/repositories/dependency-repository.d.ts.map +1 -0
  292. package/out/repositories/dependency-repository.js +129 -0
  293. package/out/repositories/dependency-repository.js.map +1 -0
  294. package/out/repositories/embedding-repository.d.ts +64 -0
  295. package/out/repositories/embedding-repository.d.ts.map +1 -0
  296. package/out/repositories/embedding-repository.js +126 -0
  297. package/out/repositories/embedding-repository.js.map +1 -0
  298. package/out/repositories/importance-repository.d.ts +63 -0
  299. package/out/repositories/importance-repository.d.ts.map +1 -0
  300. package/out/repositories/importance-repository.js +117 -0
  301. package/out/repositories/importance-repository.js.map +1 -0
  302. package/out/repositories/module-repository.d.ts +37 -0
  303. package/out/repositories/module-repository.d.ts.map +1 -0
  304. package/out/repositories/module-repository.js +122 -0
  305. package/out/repositories/module-repository.js.map +1 -0
  306. package/out/repositories/navigation-repository.d.ts +117 -0
  307. package/out/repositories/navigation-repository.d.ts.map +1 -0
  308. package/out/repositories/navigation-repository.js +211 -0
  309. package/out/repositories/navigation-repository.js.map +1 -0
  310. package/out/repositories/symbol-repository.d.ts +37 -0
  311. package/out/repositories/symbol-repository.d.ts.map +1 -0
  312. package/out/repositories/symbol-repository.js +136 -0
  313. package/out/repositories/symbol-repository.js.map +1 -0
  314. package/out/services/cross-dimension-linker.d.ts +45 -0
  315. package/out/services/cross-dimension-linker.d.ts.map +1 -0
  316. package/out/services/cross-dimension-linker.js +98 -0
  317. package/out/services/cross-dimension-linker.js.map +1 -0
  318. package/out/services/importance-scorer.d.ts +47 -0
  319. package/out/services/importance-scorer.d.ts.map +1 -0
  320. package/out/services/importance-scorer.js +188 -0
  321. package/out/services/importance-scorer.js.map +1 -0
  322. package/out/services/ingestion-orchestrator.d.ts +49 -0
  323. package/out/services/ingestion-orchestrator.d.ts.map +1 -0
  324. package/out/services/ingestion-orchestrator.js +140 -0
  325. package/out/services/ingestion-orchestrator.js.map +1 -0
  326. package/out/services/navigation-builder.d.ts +29 -0
  327. package/out/services/navigation-builder.d.ts.map +1 -0
  328. package/out/services/navigation-builder.js +229 -0
  329. package/out/services/navigation-builder.js.map +1 -0
  330. package/out/services/system-model-builder.d.ts +40 -0
  331. package/out/services/system-model-builder.d.ts.map +1 -0
  332. package/out/services/system-model-builder.js +88 -0
  333. package/out/services/system-model-builder.js.map +1 -0
  334. package/out/ui/commands.d.ts +9 -0
  335. package/out/ui/commands.d.ts.map +1 -0
  336. package/out/ui/commands.js +123 -0
  337. package/out/ui/commands.js.map +1 -0
  338. package/out/ui/database-explorer.d.ts +27 -0
  339. package/out/ui/database-explorer.d.ts.map +1 -0
  340. package/out/ui/database-explorer.js +169 -0
  341. package/out/ui/database-explorer.js.map +1 -0
  342. package/out/ui/detail-view-provider.d.ts +86 -0
  343. package/out/ui/detail-view-provider.d.ts.map +1 -0
  344. package/out/ui/detail-view-provider.js +1037 -0
  345. package/out/ui/detail-view-provider.js.map +1 -0
  346. package/out/ui/search-provider.d.ts +30 -0
  347. package/out/ui/search-provider.d.ts.map +1 -0
  348. package/out/ui/search-provider.js +240 -0
  349. package/out/ui/search-provider.js.map +1 -0
  350. package/out/ui/status-provider.d.ts +17 -0
  351. package/out/ui/status-provider.d.ts.map +1 -0
  352. package/out/ui/status-provider.js +76 -0
  353. package/out/ui/status-provider.js.map +1 -0
  354. package/out/validators/consistency-validator.d.ts +37 -0
  355. package/out/validators/consistency-validator.d.ts.map +1 -0
  356. package/out/validators/consistency-validator.js +93 -0
  357. package/out/validators/consistency-validator.js.map +1 -0
  358. package/out/validators/integrity-validator.d.ts +45 -0
  359. package/out/validators/integrity-validator.d.ts.map +1 -0
  360. package/out/validators/integrity-validator.js +115 -0
  361. package/out/validators/integrity-validator.js.map +1 -0
  362. package/package.json +173 -0
  363. package/schemas/sqlite/001_initial_modules.sql +39 -0
  364. package/schemas/sqlite/002_initial_symbols.sql +46 -0
  365. package/schemas/sqlite/003_initial_dependencies.sql +51 -0
  366. package/schemas/sqlite/004_initial_adrs.sql +41 -0
  367. package/schemas/sqlite/005_initial_changes.sql +54 -0
  368. package/schemas/sqlite/006_initial_ingestion.sql +34 -0
  369. package/schemas/sqlite/006_vectors_schema.sql +73 -0
@@ -0,0 +1,329 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.AdrIngestor = void 0;
37
+ const fs = __importStar(require("fs"));
38
+ const path = __importStar(require("path"));
39
+ const crypto = __importStar(require("crypto"));
40
+ const uuid_1 = require("uuid");
41
+ const adr_repository_1 = require("../repositories/adr-repository");
42
+ /**
43
+ * Ingests ADRs from docs/adr/*.md (W-Dimension)
44
+ */
45
+ class AdrIngestor {
46
+ constructor(dbManager) {
47
+ this.dbManager = dbManager;
48
+ }
49
+ getDimension() {
50
+ return 'W';
51
+ }
52
+ async ingestFull(workspaceRoot, pluginId, docsPath) {
53
+ if (!docsPath) {
54
+ console.warn('[AdrIngestor] ingestFull: docsPath not provided, skipping ADR ingestion');
55
+ return;
56
+ }
57
+ const adrDir = path.join(docsPath, 'adr');
58
+ if (!fs.existsSync(adrDir)) {
59
+ console.warn(`[AdrIngestor] ingestFull: ADR directory not found: ${adrDir}`);
60
+ return;
61
+ }
62
+ const db = await this.dbManager.getDatabase('W');
63
+ const repository = new adr_repository_1.AdrRepository(db);
64
+ const files = fs.readdirSync(adrDir)
65
+ .filter(file => file.endsWith('.md'))
66
+ .sort();
67
+ console.log(`[AdrIngestor] ingestFull: Found ${files.length} ADR files in ${adrDir}`);
68
+ let ingested = 0;
69
+ let errors = 0;
70
+ for (const file of files) {
71
+ try {
72
+ const filePath = path.join(adrDir, file);
73
+ await this.ingestAdrFile(filePath, file, workspaceRoot, pluginId, repository);
74
+ ingested++;
75
+ }
76
+ catch (error) {
77
+ errors++;
78
+ const errorMsg = error instanceof Error ? error.message : String(error);
79
+ console.error(`[AdrIngestor] ingestFull: Failed to ingest ADR file ${file}: ${errorMsg}`);
80
+ }
81
+ }
82
+ console.log(`[AdrIngestor] ingestFull: Completed - ${ingested} ingested, ${errors} errors`);
83
+ }
84
+ async ingestIncremental(workspaceRoot, pluginId, docsPath) {
85
+ if (!docsPath) {
86
+ console.warn('[AdrIngestor] ingestIncremental: docsPath not provided, skipping ADR ingestion');
87
+ return;
88
+ }
89
+ const adrDir = path.join(docsPath, 'adr');
90
+ if (!fs.existsSync(adrDir)) {
91
+ console.warn(`[AdrIngestor] ingestIncremental: ADR directory not found: ${adrDir}`);
92
+ return;
93
+ }
94
+ const db = await this.dbManager.getDatabase('W');
95
+ const repository = new adr_repository_1.AdrRepository(db);
96
+ const files = fs.readdirSync(adrDir)
97
+ .filter(file => file.endsWith('.md'))
98
+ .sort();
99
+ console.log(`[AdrIngestor] ingestIncremental: Found ${files.length} ADR files in ${adrDir}`);
100
+ let ingested = 0;
101
+ let skipped = 0;
102
+ let errors = 0;
103
+ for (const file of files) {
104
+ try {
105
+ const filePath = path.join(adrDir, file);
106
+ const adrNumber = this.extractAdrNumber(file);
107
+ const existing = await repository.getByAdrNumber(adrNumber, pluginId);
108
+ const content = fs.readFileSync(filePath, 'utf-8');
109
+ const contentHash = this.computeContentHash(content);
110
+ if (existing && existing.content_hash === contentHash) {
111
+ // Content unchanged, but still update file mappings (they might have changed in extractFileMappings logic)
112
+ const fileMappings = this.extractFileMappings(content, workspaceRoot);
113
+ const existingMappings = await repository.getAdrFileMappings(existing.id);
114
+ const existingPaths = new Set(existingMappings.map(m => m.file_path));
115
+ const newPaths = new Set(fileMappings);
116
+ // Check if mappings need update
117
+ const mappingsChanged = fileMappings.length !== existingMappings.length ||
118
+ !fileMappings.every(p => existingPaths.has(p)) ||
119
+ !Array.from(existingPaths).every(p => newPaths.has(p));
120
+ if (mappingsChanged) {
121
+ // Delete old mappings and recreate
122
+ for (const mapping of existingMappings) {
123
+ await repository.deleteAdrFileMapping(mapping.id);
124
+ }
125
+ for (const filePath of fileMappings) {
126
+ try {
127
+ await repository.createAdrFileMapping({
128
+ id: (0, uuid_1.v4)(),
129
+ adr_id: existing.id,
130
+ file_path: filePath
131
+ });
132
+ }
133
+ catch (error) {
134
+ const errorMsg = error instanceof Error ? error.message : String(error);
135
+ if (!errorMsg.includes('UNIQUE constraint')) {
136
+ console.warn(`[AdrIngestor] Failed to create file mapping for ADR-${adrNumber}, file: ${filePath}: ${errorMsg}`);
137
+ }
138
+ }
139
+ }
140
+ console.log(`[AdrIngestor] Updated file mappings for ADR-${adrNumber} (${fileMappings.length} mappings)`);
141
+ ingested++;
142
+ }
143
+ else {
144
+ skipped++;
145
+ }
146
+ continue;
147
+ }
148
+ await this.ingestAdrFile(filePath, file, workspaceRoot, pluginId, repository);
149
+ ingested++;
150
+ }
151
+ catch (error) {
152
+ errors++;
153
+ const errorMsg = error instanceof Error ? error.message : String(error);
154
+ console.error(`[AdrIngestor] ingestIncremental: Failed to ingest ADR file ${file}: ${errorMsg}`);
155
+ }
156
+ }
157
+ console.log(`[AdrIngestor] ingestIncremental: Completed - ${ingested} ingested, ${skipped} skipped, ${errors} errors`);
158
+ }
159
+ /**
160
+ * Ingests a single ADR file.
161
+ */
162
+ async ingestAdrFile(filePath, fileName, workspaceRoot, pluginId, repository) {
163
+ const content = fs.readFileSync(filePath, 'utf-8');
164
+ const contentHash = this.computeContentHash(content);
165
+ const adrNumber = this.extractAdrNumber(fileName);
166
+ const title = this.extractTitle(content);
167
+ if (!adrNumber) {
168
+ throw new Error(`Failed to extract ADR number from filename: ${fileName}`);
169
+ }
170
+ const existing = await repository.getByAdrNumber(adrNumber, pluginId);
171
+ const now = new Date();
172
+ const adr = {
173
+ id: existing?.id || (0, uuid_1.v4)(),
174
+ plugin_id: pluginId,
175
+ adr_number: adrNumber,
176
+ title: title,
177
+ file_name: fileName,
178
+ content_markdown: content,
179
+ content_hash: contentHash,
180
+ deleted_at: null,
181
+ created_at: existing?.created_at || now,
182
+ updated_at: now
183
+ };
184
+ if (existing) {
185
+ await repository.update(adr);
186
+ console.log(`[AdrIngestor] Updated ADR-${adrNumber}: ${title}`);
187
+ // Delete existing file mappings before recreating (to handle removed/changed paths)
188
+ const existingMappings = await repository.getAdrFileMappings(adr.id);
189
+ for (const mapping of existingMappings) {
190
+ await repository.deleteAdrFileMapping(mapping.id);
191
+ }
192
+ }
193
+ else {
194
+ await repository.create(adr);
195
+ console.log(`[AdrIngestor] Created ADR-${adrNumber}: ${title}`);
196
+ }
197
+ const fileMappings = this.extractFileMappings(content, workspaceRoot);
198
+ let mappingCount = 0;
199
+ for (const filePath of fileMappings) {
200
+ try {
201
+ await repository.createAdrFileMapping({
202
+ id: (0, uuid_1.v4)(),
203
+ adr_id: adr.id,
204
+ file_path: filePath
205
+ });
206
+ mappingCount++;
207
+ }
208
+ catch (error) {
209
+ // Ignore duplicate mapping errors
210
+ const errorMsg = error instanceof Error ? error.message : String(error);
211
+ if (!errorMsg.includes('UNIQUE constraint')) {
212
+ console.warn(`[AdrIngestor] Failed to create file mapping for ADR-${adrNumber}, file: ${filePath}: ${errorMsg}`);
213
+ }
214
+ }
215
+ }
216
+ if (mappingCount > 0) {
217
+ console.log(`[AdrIngestor] Created ${mappingCount} file mapping(s) for ADR-${adrNumber}`);
218
+ }
219
+ }
220
+ /**
221
+ * Extracts ADR number from file name (e.g., "020-api-doc-tiefe.md" -> "020").
222
+ */
223
+ extractAdrNumber(fileName) {
224
+ const match = fileName.match(/^(\d+)-/);
225
+ return match ? match[1] : fileName.replace('.md', '');
226
+ }
227
+ /**
228
+ * Extracts title from ADR content (first # heading).
229
+ */
230
+ extractTitle(content) {
231
+ const match = content.match(/^#\s+(.+)$/m);
232
+ return match ? match[1].trim() : 'Untitled ADR';
233
+ }
234
+ /**
235
+ * Extracts file path references from ADR content.
236
+ * Looks for patterns like `src/path/file.ts`, `5d-database-plugin/src/path/file.ts`, or `[file.ts](src/path/file.ts)`.
237
+ * Normalizes paths to match database format by checking which format exists in the database.
238
+ */
239
+ extractFileMappings(content, workspaceRoot) {
240
+ const filePaths = [];
241
+ // Pattern 1: Backtick patterns: `src/path/file.ts` or `5d-database-plugin/src/path/file.ts`
242
+ // Match group 1: full path including extension
243
+ const backtickPattern = /`([^`]+\.(?:ts|js|tsx|jsx|py|json|yaml|yml|md))`/g;
244
+ let match;
245
+ while ((match = backtickPattern.exec(content)) !== null) {
246
+ const filePath = match[1];
247
+ if (filePath && !filePath.startsWith('http') && !filePath.startsWith('mailto:') && !filePath.startsWith('#')) {
248
+ let normalizedPath = filePath.trim().replace(/\\/g, '/');
249
+ const finalPath = this.normalizeFilePath(normalizedPath, workspaceRoot);
250
+ if (finalPath) {
251
+ filePaths.push(finalPath);
252
+ }
253
+ }
254
+ }
255
+ // Pattern 2: Markdown link patterns: [file.ts](src/path/file.ts) or [file.ts](5d-database-plugin/src/path/file.ts)
256
+ // Match group 2: URL/path (the actual file path)
257
+ const linkPattern = /\[([^\]]+)\]\(([^)]+\.(?:ts|js|tsx|jsx|py|json|yaml|yml|md))\)/g;
258
+ while ((match = linkPattern.exec(content)) !== null) {
259
+ const filePath = match[2]; // Use the URL part, not the link text
260
+ if (filePath && !filePath.startsWith('http') && !filePath.startsWith('mailto:') && !filePath.startsWith('#')) {
261
+ let normalizedPath = filePath.trim().replace(/\\/g, '/');
262
+ const finalPath = this.normalizeFilePath(normalizedPath, workspaceRoot);
263
+ if (finalPath) {
264
+ filePaths.push(finalPath);
265
+ }
266
+ }
267
+ }
268
+ // Pattern 3: Direct path patterns in code blocks or text: src/path/file.ts or 5d-database-plugin/src/path/file.ts
269
+ // This is more permissive and catches paths that might be in code examples
270
+ const directPathPattern = /(?:5d-database-plugin\/)?src\/[^\s\)`]+\.(?:ts|js|tsx|jsx|py)/g;
271
+ while ((match = directPathPattern.exec(content)) !== null) {
272
+ const filePath = match[0];
273
+ if (filePath && !filePath.startsWith('http') && !filePath.startsWith('mailto:') && !filePath.startsWith('#')) {
274
+ let normalizedPath = filePath.trim().replace(/\\/g, '/');
275
+ const finalPath = this.normalizeFilePath(normalizedPath, workspaceRoot);
276
+ if (finalPath) {
277
+ filePaths.push(finalPath);
278
+ }
279
+ }
280
+ }
281
+ // Remove duplicates and return
282
+ return [...new Set(filePaths)];
283
+ }
284
+ /**
285
+ * Normalizes a file path to match database format.
286
+ * Checks if file exists with/without plugin prefix and returns the correct format.
287
+ */
288
+ normalizeFilePath(filePath, workspaceRoot) {
289
+ if (!filePath || filePath.length < 3) {
290
+ return null;
291
+ }
292
+ // Normalize path: ensure forward slashes, remove leading/trailing whitespace
293
+ let normalizedPath = filePath.trim().replace(/\\/g, '/');
294
+ // If path starts with src/ and doesn't have plugin prefix, try to find the correct format
295
+ if (normalizedPath.startsWith('src/') && !normalizedPath.startsWith('5d-database-plugin/')) {
296
+ const withPrefix = `5d-database-plugin/${normalizedPath}`;
297
+ const fullPathWithPrefix = path.join(workspaceRoot, withPrefix);
298
+ const fullPathWithoutPrefix = path.join(workspaceRoot, normalizedPath);
299
+ // Check which file actually exists
300
+ if (fs.existsSync(fullPathWithPrefix)) {
301
+ return withPrefix;
302
+ }
303
+ else if (fs.existsSync(fullPathWithoutPrefix)) {
304
+ return normalizedPath;
305
+ }
306
+ else {
307
+ // File doesn't exist, but try both variants in database
308
+ // Return the one with prefix (most common case)
309
+ return withPrefix;
310
+ }
311
+ }
312
+ // If path already has plugin prefix, check if it exists
313
+ if (normalizedPath.startsWith('5d-database-plugin/')) {
314
+ const fullPath = path.join(workspaceRoot, normalizedPath);
315
+ if (fs.existsSync(fullPath)) {
316
+ return normalizedPath;
317
+ }
318
+ }
319
+ return normalizedPath;
320
+ }
321
+ /**
322
+ * Computes SHA256 hash of content.
323
+ */
324
+ computeContentHash(content) {
325
+ return crypto.createHash('sha256').update(content).digest('hex');
326
+ }
327
+ }
328
+ exports.AdrIngestor = AdrIngestor;
329
+ //# sourceMappingURL=adr-ingestor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adr-ingestor.js","sourceRoot":"","sources":["../../src/ingestors/adr-ingestor.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uCAAyB;AACzB,2CAA6B;AAC7B,+CAAiC;AACjC,+BAAoC;AAIpC,mEAA+D;AAG/D;;GAEG;AACH,MAAa,WAAW;IAGpB,YAAY,SAAyB;QACjC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC/B,CAAC;IAEM,YAAY;QACf,OAAO,GAAG,CAAC;IACf,CAAC;IAEM,KAAK,CAAC,UAAU,CAAC,aAAqB,EAAE,QAAgB,EAAE,QAAgB;QAC7E,IAAI,CAAC,QAAQ,EAAE,CAAC;YACZ,OAAO,CAAC,IAAI,CAAC,yEAAyE,CAAC,CAAC;YACxF,OAAO;QACX,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAE1C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YACzB,OAAO,CAAC,IAAI,CAAC,sDAAsD,MAAM,EAAE,CAAC,CAAC;YAC7E,OAAO;QACX,CAAC;QAED,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACjD,MAAM,UAAU,GAAG,IAAI,8BAAa,CAAC,EAAE,CAAC,CAAC;QAEzC,MAAM,KAAK,GAAG,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC;aAC/B,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;aACpC,IAAI,EAAE,CAAC;QAEZ,OAAO,CAAC,GAAG,CAAC,mCAAmC,KAAK,CAAC,MAAM,iBAAiB,MAAM,EAAE,CAAC,CAAC;QAEtF,IAAI,QAAQ,GAAG,CAAC,CAAC;QACjB,IAAI,MAAM,GAAG,CAAC,CAAC;QAEf,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACvB,IAAI,CAAC;gBACD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;gBACzC,MAAM,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;gBAC9E,QAAQ,EAAE,CAAC;YACf,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACb,MAAM,EAAE,CAAC;gBACT,MAAM,QAAQ,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBACxE,OAAO,CAAC,KAAK,CAAC,uDAAuD,IAAI,KAAK,QAAQ,EAAE,CAAC,CAAC;YAC9F,CAAC;QACL,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,yCAAyC,QAAQ,cAAc,MAAM,SAAS,CAAC,CAAC;IAChG,CAAC;IAEM,KAAK,CAAC,iBAAiB,CAAC,aAAqB,EAAE,QAAgB,EAAE,QAAgB;QACpF,IAAI,CAAC,QAAQ,EAAE,CAAC;YACZ,OAAO,CAAC,IAAI,CAAC,gFAAgF,CAAC,CAAC;YAC/F,OAAO;QACX,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAE1C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YACzB,OAAO,CAAC,IAAI,CAAC,6DAA6D,MAAM,EAAE,CAAC,CAAC;YACpF,OAAO;QACX,CAAC;QAED,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACjD,MAAM,UAAU,GAAG,IAAI,8BAAa,CAAC,EAAE,CAAC,CAAC;QAEzC,MAAM,KAAK,GAAG,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC;aAC/B,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;aACpC,IAAI,EAAE,CAAC;QAEZ,OAAO,CAAC,GAAG,CAAC,0CAA0C,KAAK,CAAC,MAAM,iBAAiB,MAAM,EAAE,CAAC,CAAC;QAE7F,IAAI,QAAQ,GAAG,CAAC,CAAC;QACjB,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,IAAI,MAAM,GAAG,CAAC,CAAC;QAEf,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACvB,IAAI,CAAC;gBACD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;gBACzC,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;gBAE9C,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,cAAc,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;gBACtE,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;gBACnD,MAAM,WAAW,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;gBAErD,IAAI,QAAQ,IAAI,QAAQ,CAAC,YAAY,KAAK,WAAW,EAAE,CAAC;oBACpD,2GAA2G;oBAC3G,MAAM,YAAY,GAAG,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;oBACtE,MAAM,gBAAgB,GAAG,MAAM,UAAU,CAAC,kBAAkB,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;oBAC1E,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;oBACtE,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,YAAY,CAAC,CAAC;oBAEvC,gCAAgC;oBAChC,MAAM,eAAe,GAAG,YAAY,CAAC,MAAM,KAAK,gBAAgB,CAAC,MAAM;wBACnE,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;wBAC9C,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;oBAE3D,IAAI,eAAe,EAAE,CAAC;wBAClB,mCAAmC;wBACnC,KAAK,MAAM,OAAO,IAAI,gBAAgB,EAAE,CAAC;4BACrC,MAAM,UAAU,CAAC,oBAAoB,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;wBACtD,CAAC;wBACD,KAAK,MAAM,QAAQ,IAAI,YAAY,EAAE,CAAC;4BAClC,IAAI,CAAC;gCACD,MAAM,UAAU,CAAC,oBAAoB,CAAC;oCAClC,EAAE,EAAE,IAAA,SAAM,GAAE;oCACZ,MAAM,EAAE,QAAQ,CAAC,EAAE;oCACnB,SAAS,EAAE,QAAQ;iCACtB,CAAC,CAAC;4BACP,CAAC;4BAAC,OAAO,KAAK,EAAE,CAAC;gCACb,MAAM,QAAQ,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gCACxE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,CAAC;oCAC1C,OAAO,CAAC,IAAI,CAAC,uDAAuD,SAAS,WAAW,QAAQ,KAAK,QAAQ,EAAE,CAAC,CAAC;gCACrH,CAAC;4BACL,CAAC;wBACL,CAAC;wBACD,OAAO,CAAC,GAAG,CAAC,+CAA+C,SAAS,KAAK,YAAY,CAAC,MAAM,YAAY,CAAC,CAAC;wBAC1G,QAAQ,EAAE,CAAC;oBACf,CAAC;yBAAM,CAAC;wBACJ,OAAO,EAAE,CAAC;oBACd,CAAC;oBACD,SAAS;gBACb,CAAC;gBAED,MAAM,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;gBAC9E,QAAQ,EAAE,CAAC;YACf,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACb,MAAM,EAAE,CAAC;gBACT,MAAM,QAAQ,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBACxE,OAAO,CAAC,KAAK,CAAC,8DAA8D,IAAI,KAAK,QAAQ,EAAE,CAAC,CAAC;YACrG,CAAC;QACL,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,gDAAgD,QAAQ,cAAc,OAAO,aAAa,MAAM,SAAS,CAAC,CAAC;IAC3H,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,aAAa,CACvB,QAAgB,EAChB,QAAgB,EAChB,aAAqB,EACrB,QAAgB,EAChB,UAAyB;QAEzB,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACnD,MAAM,WAAW,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;QACrD,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QAClD,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QAEzC,IAAI,CAAC,SAAS,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,+CAA+C,QAAQ,EAAE,CAAC,CAAC;QAC/E,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,cAAc,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QACtE,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;QAEvB,MAAM,GAAG,GAAQ;YACb,EAAE,EAAE,QAAQ,EAAE,EAAE,IAAI,IAAA,SAAM,GAAE;YAC5B,SAAS,EAAE,QAAQ;YACnB,UAAU,EAAE,SAAS;YACrB,KAAK,EAAE,KAAK;YACZ,SAAS,EAAE,QAAQ;YACnB,gBAAgB,EAAE,OAAO;YACzB,YAAY,EAAE,WAAW;YACzB,UAAU,EAAE,IAAI;YAChB,UAAU,EAAE,QAAQ,EAAE,UAAU,IAAI,GAAG;YACvC,UAAU,EAAE,GAAG;SAClB,CAAC;QAEF,IAAI,QAAQ,EAAE,CAAC;YACX,MAAM,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC7B,OAAO,CAAC,GAAG,CAAC,6BAA6B,SAAS,KAAK,KAAK,EAAE,CAAC,CAAC;YAEhE,oFAAoF;YACpF,MAAM,gBAAgB,GAAG,MAAM,UAAU,CAAC,kBAAkB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACrE,KAAK,MAAM,OAAO,IAAI,gBAAgB,EAAE,CAAC;gBACrC,MAAM,UAAU,CAAC,oBAAoB,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YACtD,CAAC;QACL,CAAC;aAAM,CAAC;YACJ,MAAM,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC7B,OAAO,CAAC,GAAG,CAAC,6BAA6B,SAAS,KAAK,KAAK,EAAE,CAAC,CAAC;QACpE,CAAC;QAED,MAAM,YAAY,GAAG,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;QACtE,IAAI,YAAY,GAAG,CAAC,CAAC;QACrB,KAAK,MAAM,QAAQ,IAAI,YAAY,EAAE,CAAC;YAClC,IAAI,CAAC;gBACD,MAAM,UAAU,CAAC,oBAAoB,CAAC;oBAClC,EAAE,EAAE,IAAA,SAAM,GAAE;oBACZ,MAAM,EAAE,GAAG,CAAC,EAAE;oBACd,SAAS,EAAE,QAAQ;iBACtB,CAAC,CAAC;gBACH,YAAY,EAAE,CAAC;YACnB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACb,kCAAkC;gBAClC,MAAM,QAAQ,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBACxE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,CAAC;oBAC1C,OAAO,CAAC,IAAI,CAAC,uDAAuD,SAAS,WAAW,QAAQ,KAAK,QAAQ,EAAE,CAAC,CAAC;gBACrH,CAAC;YACL,CAAC;QACL,CAAC;QACD,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;YACnB,OAAO,CAAC,GAAG,CAAC,yBAAyB,YAAY,4BAA4B,SAAS,EAAE,CAAC,CAAC;QAC9F,CAAC;IACL,CAAC;IAED;;OAEG;IACK,gBAAgB,CAAC,QAAgB;QACrC,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACxC,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAC1D,CAAC;IAED;;OAEG;IACK,YAAY,CAAC,OAAe;QAChC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QAC3C,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC;IACpD,CAAC;IAED;;;;OAIG;IACK,mBAAmB,CAAC,OAAe,EAAE,aAAqB;QAC9D,MAAM,SAAS,GAAa,EAAE,CAAC;QAE/B,4FAA4F;QAC5F,+CAA+C;QAC/C,MAAM,eAAe,GAAG,mDAAmD,CAAC;QAC5E,IAAI,KAAK,CAAC;QACV,OAAO,CAAC,KAAK,GAAG,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YACtD,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACtB,IAAI,QAAQ,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC3G,IAAI,cAAc,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;gBACzD,MAAM,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC,cAAc,EAAE,aAAa,CAAC,CAAC;gBACxE,IAAI,SAAS,EAAE,CAAC;oBACZ,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBAC9B,CAAC;YACL,CAAC;QACT,CAAC;QAED,mHAAmH;QACnH,iDAAiD;QACjD,MAAM,WAAW,GAAG,iEAAiE,CAAC;QACtF,OAAO,CAAC,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YAClD,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,sCAAsC;YAC7D,IAAI,QAAQ,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC3G,IAAI,cAAc,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;gBACzD,MAAM,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC,cAAc,EAAE,aAAa,CAAC,CAAC;gBACxE,IAAI,SAAS,EAAE,CAAC;oBACZ,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBAC9B,CAAC;YACL,CAAC;QACT,CAAC;QAED,kHAAkH;QAClH,2EAA2E;QAC3E,MAAM,iBAAiB,GAAG,gEAAgE,CAAC;QAC3F,OAAO,CAAC,KAAK,GAAG,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YACxD,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACtB,IAAI,QAAQ,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC3G,IAAI,cAAc,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;gBACzD,MAAM,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC,cAAc,EAAE,aAAa,CAAC,CAAC;gBACxE,IAAI,SAAS,EAAE,CAAC;oBACZ,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBAC9B,CAAC;YACL,CAAC;QACT,CAAC;QAED,+BAA+B;QAC/B,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC;IACnC,CAAC;IAED;;;OAGG;IACK,iBAAiB,CAAC,QAAgB,EAAE,aAAqB;QAC7D,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACnC,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,6EAA6E;QAC7E,IAAI,cAAc,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAEzD,0FAA0F;QAC1F,IAAI,cAAc,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,qBAAqB,CAAC,EAAE,CAAC;YACzF,MAAM,UAAU,GAAG,sBAAsB,cAAc,EAAE,CAAC;YAC1D,MAAM,kBAAkB,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;YAChE,MAAM,qBAAqB,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC;YAEvE,mCAAmC;YACnC,IAAI,EAAE,CAAC,UAAU,CAAC,kBAAkB,CAAC,EAAE,CAAC;gBACpC,OAAO,UAAU,CAAC;YACtB,CAAC;iBAAM,IAAI,EAAE,CAAC,UAAU,CAAC,qBAAqB,CAAC,EAAE,CAAC;gBAC9C,OAAO,cAAc,CAAC;YAC1B,CAAC;iBAAM,CAAC;gBACJ,wDAAwD;gBACxD,gDAAgD;gBAChD,OAAO,UAAU,CAAC;YACtB,CAAC;QACL,CAAC;QAED,wDAAwD;QACxD,IAAI,cAAc,CAAC,UAAU,CAAC,qBAAqB,CAAC,EAAE,CAAC;YACnD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC;YAC1D,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC1B,OAAO,cAAc,CAAC;YAC1B,CAAC;QACL,CAAC;QAED,OAAO,cAAc,CAAC;IAC1B,CAAC;IAED;;OAEG;IACK,kBAAkB,CAAC,OAAe;QACtC,OAAO,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACrE,CAAC;CACJ;AAvUD,kCAuUC"}
@@ -0,0 +1,30 @@
1
+ import { Dimension } from '../core/multi-db-manager';
2
+ /**
3
+ * Base interface for all ingestion modules.
4
+ * Each dimension has its own ingestor that reads from specific documentation files.
5
+ */
6
+ export interface BaseIngestor {
7
+ /**
8
+ * Gets the dimension this ingestor handles.
9
+ */
10
+ getDimension(): Dimension;
11
+ /**
12
+ * Performs a full ingestion of all data for this dimension.
13
+ *
14
+ * @param workspaceRoot The workspace root directory
15
+ * @param pluginId The plugin ID
16
+ * @param docsPath The path to the docs directory
17
+ * @returns Promise that resolves when ingestion is complete
18
+ */
19
+ ingestFull(workspaceRoot: string, pluginId: string, docsPath: string): Promise<void>;
20
+ /**
21
+ * Performs an incremental ingestion, only processing changed files.
22
+ *
23
+ * @param workspaceRoot The workspace root directory
24
+ * @param pluginId The plugin ID
25
+ * @param docsPath The path to the docs directory
26
+ * @returns Promise that resolves when ingestion is complete
27
+ */
28
+ ingestIncremental(workspaceRoot: string, pluginId: string, docsPath: string): Promise<void>;
29
+ }
30
+ //# sourceMappingURL=base-ingestor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-ingestor.d.ts","sourceRoot":"","sources":["../../src/ingestors/base-ingestor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAErD;;;GAGG;AACH,MAAM,WAAW,YAAY;IACzB;;OAEG;IACH,YAAY,IAAI,SAAS,CAAC;IAE1B;;;;;;;OAOG;IACH,UAAU,CAAC,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAErF;;;;;;;OAOG;IACH,iBAAiB,CAAC,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/F"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=base-ingestor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-ingestor.js","sourceRoot":"","sources":["../../src/ingestors/base-ingestor.ts"],"names":[],"mappings":""}
@@ -0,0 +1,36 @@
1
+ import { BaseIngestor } from './base-ingestor';
2
+ import { Dimension } from '../core/multi-db-manager';
3
+ import { MultiDbManager } from '../core/multi-db-manager';
4
+ /**
5
+ * Ingests change reports from docs/system/CHANGE_REPORT.md (T-Dimension)
6
+ * Changes are immutable - always creates new entries
7
+ */
8
+ export declare class ChangeIngestor implements BaseIngestor {
9
+ private dbManager;
10
+ constructor(dbManager: MultiDbManager);
11
+ getDimension(): Dimension;
12
+ ingestFull(workspaceRoot: string, pluginId: string, docsPath: string): Promise<void>;
13
+ ingestIncremental(workspaceRoot: string, pluginId: string, docsPath: string): Promise<void>;
14
+ /**
15
+ * Parses and ingests a change report.
16
+ */
17
+ private parseAndIngestChangeReport;
18
+ /**
19
+ * Parses change report header.
20
+ * Supports both English and German labels.
21
+ */
22
+ private parseChangeReport;
23
+ /**
24
+ * Parses symbol changes from change report.
25
+ */
26
+ private parseSymbolChanges;
27
+ /**
28
+ * Parses dependency changes from change report.
29
+ */
30
+ private parseDependencyChanges;
31
+ /**
32
+ * Extracts file path from context lines.
33
+ */
34
+ private extractFilePath;
35
+ }
36
+ //# sourceMappingURL=change-ingestor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"change-ingestor.d.ts","sourceRoot":"","sources":["../../src/ingestors/change-ingestor.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAI1D;;;GAGG;AACH,qBAAa,cAAe,YAAW,YAAY;IAC/C,OAAO,CAAC,SAAS,CAAiB;gBAEtB,SAAS,EAAE,cAAc;IAI9B,YAAY,IAAI,SAAS;IAInB,UAAU,CAAC,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAkBpF,iBAAiB,CAAC,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA2BxG;;OAEG;YACW,0BAA0B;IAyBxC;;;OAGG;IACH,OAAO,CAAC,iBAAiB;IAiCzB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAoC1B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAkC9B;;OAEG;IACH,OAAO,CAAC,eAAe;CAW1B"}
@@ -0,0 +1,216 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.ChangeIngestor = void 0;
37
+ const fs = __importStar(require("fs"));
38
+ const path = __importStar(require("path"));
39
+ const uuid_1 = require("uuid");
40
+ const change_repository_1 = require("../repositories/change-repository");
41
+ /**
42
+ * Ingests change reports from docs/system/CHANGE_REPORT.md (T-Dimension)
43
+ * Changes are immutable - always creates new entries
44
+ */
45
+ class ChangeIngestor {
46
+ constructor(dbManager) {
47
+ this.dbManager = dbManager;
48
+ }
49
+ getDimension() {
50
+ return 'T';
51
+ }
52
+ async ingestFull(workspaceRoot, pluginId, docsPath) {
53
+ if (!docsPath) {
54
+ return;
55
+ }
56
+ const changeFile = path.join(docsPath, 'system', 'CHANGE_REPORT.md');
57
+ if (!fs.existsSync(changeFile)) {
58
+ return;
59
+ }
60
+ const db = await this.dbManager.getDatabase('T');
61
+ const repository = new change_repository_1.ChangeRepository(db);
62
+ const content = fs.readFileSync(changeFile, 'utf-8');
63
+ await this.parseAndIngestChangeReport(content, pluginId, repository);
64
+ }
65
+ async ingestIncremental(workspaceRoot, pluginId, docsPath) {
66
+ if (!docsPath) {
67
+ return;
68
+ }
69
+ const changeFile = path.join(docsPath, 'system', 'CHANGE_REPORT.md');
70
+ if (!fs.existsSync(changeFile)) {
71
+ return;
72
+ }
73
+ const db = await this.dbManager.getDatabase('T');
74
+ const repository = new change_repository_1.ChangeRepository(db);
75
+ const latest = await repository.getLatest(pluginId);
76
+ const content = fs.readFileSync(changeFile, 'utf-8');
77
+ if (latest) {
78
+ const latestTimestamp = latest.created_at.toISOString();
79
+ if (content.includes(latestTimestamp)) {
80
+ return;
81
+ }
82
+ }
83
+ await this.parseAndIngestChangeReport(content, pluginId, repository);
84
+ }
85
+ /**
86
+ * Parses and ingests a change report.
87
+ */
88
+ async parseAndIngestChangeReport(content, pluginId, repository) {
89
+ const report = this.parseChangeReport(content, pluginId);
90
+ await repository.create(report);
91
+ const symbolChanges = this.parseSymbolChanges(content);
92
+ for (const change of symbolChanges) {
93
+ await repository.createSymbolChange({
94
+ ...change,
95
+ report_id: report.id
96
+ });
97
+ }
98
+ const dependencyChanges = this.parseDependencyChanges(content);
99
+ for (const change of dependencyChanges) {
100
+ await repository.createDependencyChange({
101
+ ...change,
102
+ report_id: report.id
103
+ });
104
+ }
105
+ }
106
+ /**
107
+ * Parses change report header.
108
+ * Supports both English and German labels.
109
+ */
110
+ parseChangeReport(content, pluginId) {
111
+ // Run Type / Letzter Lauf
112
+ const runTypeMatch = content.match(/(?:Run Type|Letzter Lauf):\s*(\w+)/i);
113
+ // Parsed Files / Geparste Dateien
114
+ const parsedFilesMatch = content.match(/(?:Parsed Files|Geparste Dateien):\s*(\d+)/i);
115
+ // Skipped Files / Übersprungene Dateien
116
+ const skippedFilesMatch = content.match(/(?:Skipped Files|Übersprungene Dateien):\s*(\d+)/i);
117
+ // Total Dependencies / Gesamt: X Dependencies
118
+ const totalDepsMatch = content.match(/(?:Total Dependencies:\s*(\d+)|Gesamt:\s*(\d+)\s+Dependencies)/i);
119
+ const totalDeps = totalDepsMatch?.[1] || totalDepsMatch?.[2] || '0';
120
+ // Validation Errors / Validierungsfehler / Fehler
121
+ const validationErrorsMatch = content.match(/(?:Validation Errors|Validierungsfehler|Fehler):\s*(\d+)/i);
122
+ // Validation Warnings / Validierungswarnungen / Warnungen
123
+ const validationWarningsMatch = content.match(/(?:Validation Warnings|Validierungswarnungen|Warnungen):\s*(\d+)/i);
124
+ return {
125
+ id: (0, uuid_1.v4)(),
126
+ plugin_id: pluginId,
127
+ run_type: (runTypeMatch?.[1]?.toLowerCase() === 'incremental' ? 'incremental' : 'full'),
128
+ parsed_files: parseInt(parsedFilesMatch?.[1] || '0', 10),
129
+ skipped_files: parseInt(skippedFilesMatch?.[1] || '0', 10),
130
+ total_dependencies: parseInt(totalDeps, 10),
131
+ validation_errors: parseInt(validationErrorsMatch?.[1] || '0', 10),
132
+ validation_warnings: parseInt(validationWarningsMatch?.[1] || '0', 10),
133
+ created_at: new Date()
134
+ };
135
+ }
136
+ /**
137
+ * Parses symbol changes from change report.
138
+ */
139
+ parseSymbolChanges(content) {
140
+ const changes = [];
141
+ const lines = content.split('\n');
142
+ let inSymbolChangesSection = false;
143
+ for (let i = 0; i < lines.length; i++) {
144
+ const line = lines[i].trim();
145
+ if (line.includes('Symbol Changes') || line.includes('## Symbol Changes')) {
146
+ inSymbolChangesSection = true;
147
+ continue;
148
+ }
149
+ if (inSymbolChangesSection && (line.startsWith('##') || line.startsWith('# '))) {
150
+ break;
151
+ }
152
+ if (inSymbolChangesSection && line.match(/^[-*]\s*(added|removed|changed):/i)) {
153
+ const match = line.match(/^[-*]\s*(\w+):\s*(.+?)\s+\((\w+)\)/i);
154
+ if (match) {
155
+ changes.push({
156
+ id: (0, uuid_1.v4)(),
157
+ change_type: match[1].toLowerCase(),
158
+ file_path: this.extractFilePath(lines, i),
159
+ symbol_name: match[2],
160
+ symbol_kind: match[3],
161
+ old_signature: null,
162
+ new_signature: null
163
+ });
164
+ }
165
+ }
166
+ }
167
+ return changes;
168
+ }
169
+ /**
170
+ * Parses dependency changes from change report.
171
+ */
172
+ parseDependencyChanges(content) {
173
+ const changes = [];
174
+ const lines = content.split('\n');
175
+ let inDependencyChangesSection = false;
176
+ for (let i = 0; i < lines.length; i++) {
177
+ const line = lines[i].trim();
178
+ if (line.includes('Dependency Changes') || line.includes('## Dependency Changes')) {
179
+ inDependencyChangesSection = true;
180
+ continue;
181
+ }
182
+ if (inDependencyChangesSection && (line.startsWith('##') || line.startsWith('# '))) {
183
+ break;
184
+ }
185
+ if (inDependencyChangesSection && line.match(/^[-*]\s*(added|removed):/i)) {
186
+ const match = line.match(/^[-*]\s*(\w+):\s*(.+?)\s+->\s+(.+?)\s+\[(\w+)\]/i);
187
+ if (match) {
188
+ changes.push({
189
+ id: (0, uuid_1.v4)(),
190
+ change_type: match[1].toLowerCase(),
191
+ from_module: match[2].trim(),
192
+ to_module: match[3].trim(),
193
+ dependency_type: match[4]
194
+ });
195
+ }
196
+ }
197
+ }
198
+ return changes;
199
+ }
200
+ /**
201
+ * Extracts file path from context lines.
202
+ */
203
+ extractFilePath(lines, currentIndex) {
204
+ for (let i = currentIndex - 5; i <= currentIndex; i++) {
205
+ if (i >= 0 && i < lines.length) {
206
+ const match = lines[i].match(/`([^`]+\.(ts|js|tsx|jsx|py))`/);
207
+ if (match) {
208
+ return match[1];
209
+ }
210
+ }
211
+ }
212
+ return 'unknown';
213
+ }
214
+ }
215
+ exports.ChangeIngestor = ChangeIngestor;
216
+ //# sourceMappingURL=change-ingestor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"change-ingestor.js","sourceRoot":"","sources":["../../src/ingestors/change-ingestor.ts"],"names":[],"mappings":"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"}