@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,122 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ModuleRepository = void 0;
4
+ const base_repository_1 = require("./base-repository");
5
+ /**
6
+ * Repository for X-Dimension: Modules
7
+ */
8
+ class ModuleRepository extends base_repository_1.BaseRepositoryImpl {
9
+ constructor(db) {
10
+ super(db, 'X');
11
+ }
12
+ async create(module) {
13
+ await this.execute(`INSERT INTO modules (id, plugin_id, file_path, content_hash, content_markdown, deleted_at, created_at, updated_at)
14
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?)`, [
15
+ module.id,
16
+ module.plugin_id,
17
+ module.file_path,
18
+ module.content_hash,
19
+ module.content_markdown,
20
+ module.deleted_at,
21
+ module.created_at,
22
+ module.updated_at
23
+ ]);
24
+ return module;
25
+ }
26
+ async getById(id, pluginId) {
27
+ const row = await this.queryOne(`SELECT * FROM modules WHERE id = ? AND plugin_id = ?`, [id, pluginId]);
28
+ if (!row) {
29
+ return null;
30
+ }
31
+ return this.mapRowToModule(row);
32
+ }
33
+ async getByFilePath(filePath, pluginId) {
34
+ const row = await this.queryOne(`SELECT * FROM modules WHERE file_path = ? AND plugin_id = ?`, [filePath, pluginId]);
35
+ if (!row) {
36
+ return null;
37
+ }
38
+ return this.mapRowToModule(row);
39
+ }
40
+ async update(module) {
41
+ await this.execute(`UPDATE modules
42
+ SET file_path = ?, content_hash = ?, content_markdown = ?, deleted_at = ?, updated_at = ?
43
+ WHERE id = ? AND plugin_id = ?`, [
44
+ module.file_path,
45
+ module.content_hash,
46
+ module.content_markdown,
47
+ module.deleted_at,
48
+ module.updated_at,
49
+ module.id,
50
+ module.plugin_id
51
+ ]);
52
+ return module;
53
+ }
54
+ async delete(id, pluginId) {
55
+ await this.execute(`UPDATE modules SET deleted_at = CURRENT_TIMESTAMP WHERE id = ? AND plugin_id = ?`, [id, pluginId]);
56
+ }
57
+ async getAll(pluginId) {
58
+ const rows = await this.queryAll(`SELECT * FROM modules WHERE plugin_id = ? AND deleted_at IS NULL ORDER BY file_path`, [pluginId]);
59
+ return rows.map(row => this.mapRowToModule(row));
60
+ }
61
+ async exists(id, pluginId) {
62
+ const row = await this.queryOne(`SELECT COUNT(*) as count FROM modules WHERE id = ? AND plugin_id = ?`, [id, pluginId]);
63
+ return row !== null && row.count > 0;
64
+ }
65
+ /**
66
+ * Gets a module by file path.
67
+ */
68
+ async findByFilePath(filePath, pluginId) {
69
+ return this.getByFilePath(filePath, pluginId);
70
+ }
71
+ /**
72
+ * Gets modules by content hash (for change detection).
73
+ */
74
+ async findByContentHash(contentHash, pluginId) {
75
+ const rows = await this.queryAll(`SELECT * FROM modules WHERE content_hash = ? AND plugin_id = ? AND deleted_at IS NULL`, [contentHash, pluginId]);
76
+ return rows.map(row => this.mapRowToModule(row));
77
+ }
78
+ /**
79
+ * Creates a module symbol association.
80
+ */
81
+ async createModuleSymbol(moduleSymbol) {
82
+ await this.execute(`INSERT INTO module_symbols (id, module_id, symbol_external_id, symbol_name, symbol_kind)
83
+ VALUES (?, ?, ?, ?, ?)`, [
84
+ moduleSymbol.id,
85
+ moduleSymbol.module_id,
86
+ moduleSymbol.symbol_external_id,
87
+ moduleSymbol.symbol_name,
88
+ moduleSymbol.symbol_kind
89
+ ]);
90
+ return moduleSymbol;
91
+ }
92
+ /**
93
+ * Gets all symbols for a module.
94
+ */
95
+ async getModuleSymbols(moduleId) {
96
+ const rows = await this.queryAll(`SELECT * FROM module_symbols WHERE module_id = ?`, [moduleId]);
97
+ return rows.map(row => ({
98
+ id: row.id,
99
+ module_id: row.module_id,
100
+ symbol_external_id: row.symbol_external_id,
101
+ symbol_name: row.symbol_name,
102
+ symbol_kind: row.symbol_kind
103
+ }));
104
+ }
105
+ /**
106
+ * Maps a database row to a Module object.
107
+ */
108
+ mapRowToModule(row) {
109
+ return {
110
+ id: row.id,
111
+ plugin_id: row.plugin_id,
112
+ file_path: row.file_path,
113
+ content_hash: row.content_hash,
114
+ content_markdown: row.content_markdown,
115
+ deleted_at: row.deleted_at ? new Date(row.deleted_at) : null,
116
+ created_at: new Date(row.created_at),
117
+ updated_at: new Date(row.updated_at)
118
+ };
119
+ }
120
+ }
121
+ exports.ModuleRepository = ModuleRepository;
122
+ //# sourceMappingURL=module-repository.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"module-repository.js","sourceRoot":"","sources":["../../src/repositories/module-repository.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,117 @@
1
+ import * as sqlite3 from 'sqlite3';
2
+ import { BaseRepositoryImpl } from './base-repository';
3
+ /**
4
+ * Navigation metadata model for V-Dimension
5
+ */
6
+ export interface NavigationMetadata {
7
+ id: string;
8
+ plugin_id: string;
9
+ dimension: 'X' | 'Y' | 'Z' | 'W' | 'T';
10
+ entity_id: string;
11
+ is_entry_point: boolean;
12
+ cluster_id: string | null;
13
+ related_adrs: string;
14
+ importance_rank: number | null;
15
+ created_at: Date;
16
+ }
17
+ /**
18
+ * Entry point model for V-Dimension
19
+ */
20
+ export interface EntryPoint {
21
+ id: string;
22
+ plugin_id: string;
23
+ dimension: 'X' | 'Y' | 'Z' | 'W' | 'T';
24
+ entity_id: string;
25
+ priority: number;
26
+ reason: string | null;
27
+ created_at: Date;
28
+ }
29
+ /**
30
+ * Repository for V-Dimension: Navigation Metadata
31
+ */
32
+ export declare class NavigationRepository extends BaseRepositoryImpl<NavigationMetadata> {
33
+ constructor(db: sqlite3.Database);
34
+ /**
35
+ * Creates or updates navigation metadata.
36
+ */
37
+ upsert(metadata: NavigationMetadata): Promise<void>;
38
+ /**
39
+ * Gets navigation metadata for an entity.
40
+ */
41
+ getByEntity(dimension: 'X' | 'Y' | 'Z' | 'W' | 'T', entityId: string, pluginId: string): Promise<NavigationMetadata | null>;
42
+ /**
43
+ * Gets all entry points for a dimension.
44
+ */
45
+ getEntryPoints(dimension: 'X' | 'Y' | 'Z' | 'W' | 'T', pluginId: string): Promise<NavigationMetadata[]>;
46
+ /**
47
+ * Creates a new navigation metadata.
48
+ */
49
+ create(metadata: NavigationMetadata): Promise<NavigationMetadata>;
50
+ /**
51
+ * Gets navigation metadata by ID.
52
+ */
53
+ getById(id: string, pluginId: string): Promise<NavigationMetadata | null>;
54
+ /**
55
+ * Updates an existing navigation metadata.
56
+ */
57
+ update(metadata: NavigationMetadata): Promise<NavigationMetadata>;
58
+ /**
59
+ * Deletes navigation metadata.
60
+ */
61
+ delete(id: string, pluginId: string): Promise<void>;
62
+ /**
63
+ * Gets all navigation metadata for a plugin.
64
+ */
65
+ getAll(pluginId: string): Promise<NavigationMetadata[]>;
66
+ /**
67
+ * Checks if navigation metadata exists.
68
+ */
69
+ exists(id: string, pluginId: string): Promise<boolean>;
70
+ /**
71
+ * Maps a database row to a NavigationMetadata object.
72
+ */
73
+ private mapRowToMetadata;
74
+ }
75
+ /**
76
+ * Repository for V-Dimension: Entry Points (manual overrides)
77
+ */
78
+ export declare class EntryPointRepository extends BaseRepositoryImpl<EntryPoint> {
79
+ constructor(db: sqlite3.Database);
80
+ /**
81
+ * Creates or updates an entry point.
82
+ */
83
+ upsert(entryPoint: EntryPoint): Promise<void>;
84
+ /**
85
+ * Gets all entry points for a dimension.
86
+ */
87
+ getAllByDimension(dimension: 'X' | 'Y' | 'Z' | 'W' | 'T', pluginId: string): Promise<EntryPoint[]>;
88
+ /**
89
+ * Creates a new entry point.
90
+ */
91
+ create(entryPoint: EntryPoint): Promise<EntryPoint>;
92
+ /**
93
+ * Gets an entry point by ID.
94
+ */
95
+ getById(id: string, pluginId: string): Promise<EntryPoint | null>;
96
+ /**
97
+ * Updates an existing entry point.
98
+ */
99
+ update(entryPoint: EntryPoint): Promise<EntryPoint>;
100
+ /**
101
+ * Deletes an entry point.
102
+ */
103
+ delete(id: string, pluginId: string): Promise<void>;
104
+ /**
105
+ * Gets all entry points for a plugin.
106
+ */
107
+ getAll(pluginId: string): Promise<EntryPoint[]>;
108
+ /**
109
+ * Checks if an entry point exists.
110
+ */
111
+ exists(id: string, pluginId: string): Promise<boolean>;
112
+ /**
113
+ * Maps a database row to an EntryPoint object.
114
+ */
115
+ private mapRowToEntryPoint;
116
+ }
117
+ //# sourceMappingURL=navigation-repository.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"navigation-repository.d.ts","sourceRoot":"","sources":["../../src/repositories/navigation-repository.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,211 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.EntryPointRepository = exports.NavigationRepository = void 0;
4
+ const base_repository_1 = require("./base-repository");
5
+ /**
6
+ * Repository for V-Dimension: Navigation Metadata
7
+ */
8
+ class NavigationRepository extends base_repository_1.BaseRepositoryImpl {
9
+ constructor(db) {
10
+ super(db, 'V');
11
+ }
12
+ /**
13
+ * Creates or updates navigation metadata.
14
+ */
15
+ async upsert(metadata) {
16
+ await this.execute(`INSERT INTO navigation_metadata (id, plugin_id, dimension, entity_id, is_entry_point, cluster_id, related_adrs, importance_rank, created_at)
17
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)
18
+ ON CONFLICT(plugin_id, dimension, entity_id)
19
+ DO UPDATE SET
20
+ is_entry_point = excluded.is_entry_point,
21
+ cluster_id = excluded.cluster_id,
22
+ related_adrs = excluded.related_adrs,
23
+ importance_rank = excluded.importance_rank`, [
24
+ metadata.id,
25
+ metadata.plugin_id,
26
+ metadata.dimension,
27
+ metadata.entity_id,
28
+ metadata.is_entry_point ? 1 : 0,
29
+ metadata.cluster_id,
30
+ metadata.related_adrs,
31
+ metadata.importance_rank,
32
+ metadata.created_at
33
+ ]);
34
+ }
35
+ /**
36
+ * Gets navigation metadata for an entity.
37
+ */
38
+ async getByEntity(dimension, entityId, pluginId) {
39
+ const row = await this.queryOne(`SELECT * FROM navigation_metadata
40
+ WHERE dimension = ? AND entity_id = ? AND plugin_id = ?`, [dimension, entityId, pluginId]);
41
+ if (!row) {
42
+ return null;
43
+ }
44
+ return this.mapRowToMetadata(row);
45
+ }
46
+ /**
47
+ * Gets all entry points for a dimension.
48
+ */
49
+ async getEntryPoints(dimension, pluginId) {
50
+ const rows = await this.queryAll(`SELECT * FROM navigation_metadata
51
+ WHERE dimension = ? AND plugin_id = ? AND is_entry_point = 1
52
+ ORDER BY importance_rank ASC NULLS LAST`, [dimension, pluginId]);
53
+ return rows.map(row => this.mapRowToMetadata(row));
54
+ }
55
+ /**
56
+ * Creates a new navigation metadata.
57
+ */
58
+ async create(metadata) {
59
+ await this.upsert(metadata);
60
+ return metadata;
61
+ }
62
+ /**
63
+ * Gets navigation metadata by ID.
64
+ */
65
+ async getById(id, pluginId) {
66
+ const row = await this.queryOne(`SELECT * FROM navigation_metadata WHERE id = ? AND plugin_id = ?`, [id, pluginId]);
67
+ if (!row) {
68
+ return null;
69
+ }
70
+ return this.mapRowToMetadata(row);
71
+ }
72
+ /**
73
+ * Updates an existing navigation metadata.
74
+ */
75
+ async update(metadata) {
76
+ await this.upsert(metadata);
77
+ return metadata;
78
+ }
79
+ /**
80
+ * Deletes navigation metadata.
81
+ */
82
+ async delete(id, pluginId) {
83
+ await this.execute(`DELETE FROM navigation_metadata WHERE id = ? AND plugin_id = ?`, [id, pluginId]);
84
+ }
85
+ /**
86
+ * Gets all navigation metadata for a plugin.
87
+ */
88
+ async getAll(pluginId) {
89
+ const rows = await this.queryAll(`SELECT * FROM navigation_metadata WHERE plugin_id = ? ORDER BY created_at DESC`, [pluginId]);
90
+ return rows.map(row => this.mapRowToMetadata(row));
91
+ }
92
+ /**
93
+ * Checks if navigation metadata exists.
94
+ */
95
+ async exists(id, pluginId) {
96
+ const row = await this.queryOne(`SELECT COUNT(*) as count FROM navigation_metadata WHERE id = ? AND plugin_id = ?`, [id, pluginId]);
97
+ return row !== null && row.count > 0;
98
+ }
99
+ /**
100
+ * Maps a database row to a NavigationMetadata object.
101
+ */
102
+ mapRowToMetadata(row) {
103
+ return {
104
+ id: row.id,
105
+ plugin_id: row.plugin_id,
106
+ dimension: row.dimension,
107
+ entity_id: row.entity_id,
108
+ is_entry_point: row.is_entry_point === 1,
109
+ cluster_id: row.cluster_id,
110
+ related_adrs: row.related_adrs,
111
+ importance_rank: row.importance_rank,
112
+ created_at: new Date(row.created_at)
113
+ };
114
+ }
115
+ }
116
+ exports.NavigationRepository = NavigationRepository;
117
+ /**
118
+ * Repository for V-Dimension: Entry Points (manual overrides)
119
+ */
120
+ class EntryPointRepository extends base_repository_1.BaseRepositoryImpl {
121
+ constructor(db) {
122
+ super(db, 'V');
123
+ }
124
+ /**
125
+ * Creates or updates an entry point.
126
+ */
127
+ async upsert(entryPoint) {
128
+ await this.execute(`INSERT INTO entry_points (id, plugin_id, dimension, entity_id, priority, reason, created_at)
129
+ VALUES (?, ?, ?, ?, ?, ?, ?)
130
+ ON CONFLICT(plugin_id, dimension, entity_id)
131
+ DO UPDATE SET
132
+ priority = excluded.priority,
133
+ reason = excluded.reason`, [
134
+ entryPoint.id,
135
+ entryPoint.plugin_id,
136
+ entryPoint.dimension,
137
+ entryPoint.entity_id,
138
+ entryPoint.priority,
139
+ entryPoint.reason,
140
+ entryPoint.created_at
141
+ ]);
142
+ }
143
+ /**
144
+ * Gets all entry points for a dimension.
145
+ */
146
+ async getAllByDimension(dimension, pluginId) {
147
+ const rows = await this.queryAll(`SELECT * FROM entry_points
148
+ WHERE dimension = ? AND plugin_id = ?
149
+ ORDER BY priority DESC`, [dimension, pluginId]);
150
+ return rows.map(row => this.mapRowToEntryPoint(row));
151
+ }
152
+ /**
153
+ * Creates a new entry point.
154
+ */
155
+ async create(entryPoint) {
156
+ await this.upsert(entryPoint);
157
+ return entryPoint;
158
+ }
159
+ /**
160
+ * Gets an entry point by ID.
161
+ */
162
+ async getById(id, pluginId) {
163
+ const row = await this.queryOne(`SELECT * FROM entry_points WHERE id = ? AND plugin_id = ?`, [id, pluginId]);
164
+ if (!row) {
165
+ return null;
166
+ }
167
+ return this.mapRowToEntryPoint(row);
168
+ }
169
+ /**
170
+ * Updates an existing entry point.
171
+ */
172
+ async update(entryPoint) {
173
+ await this.upsert(entryPoint);
174
+ return entryPoint;
175
+ }
176
+ /**
177
+ * Deletes an entry point.
178
+ */
179
+ async delete(id, pluginId) {
180
+ await this.execute(`DELETE FROM entry_points WHERE id = ? AND plugin_id = ?`, [id, pluginId]);
181
+ }
182
+ /**
183
+ * Gets all entry points for a plugin.
184
+ */
185
+ async getAll(pluginId) {
186
+ return this.getAllByDimension('X', pluginId); // Default to X-dimension
187
+ }
188
+ /**
189
+ * Checks if an entry point exists.
190
+ */
191
+ async exists(id, pluginId) {
192
+ const row = await this.queryOne(`SELECT COUNT(*) as count FROM entry_points WHERE id = ? AND plugin_id = ?`, [id, pluginId]);
193
+ return row !== null && row.count > 0;
194
+ }
195
+ /**
196
+ * Maps a database row to an EntryPoint object.
197
+ */
198
+ mapRowToEntryPoint(row) {
199
+ return {
200
+ id: row.id,
201
+ plugin_id: row.plugin_id,
202
+ dimension: row.dimension,
203
+ entity_id: row.entity_id,
204
+ priority: row.priority,
205
+ reason: row.reason,
206
+ created_at: new Date(row.created_at)
207
+ };
208
+ }
209
+ }
210
+ exports.EntryPointRepository = EntryPointRepository;
211
+ //# sourceMappingURL=navigation-repository.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"navigation-repository.js","sourceRoot":"","sources":["../../src/repositories/navigation-repository.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ import * as sqlite3 from 'sqlite3';
2
+ import { BaseRepositoryImpl } from './base-repository';
3
+ import { Symbol, SymbolDependency } from '../models/symbol';
4
+ /**
5
+ * Repository for Y-Dimension: Symbols
6
+ */
7
+ export declare class SymbolRepository extends BaseRepositoryImpl<Symbol> {
8
+ constructor(db: sqlite3.Database);
9
+ create(symbol: Symbol): Promise<Symbol>;
10
+ getById(id: string, pluginId: string): Promise<Symbol | null>;
11
+ getBySymbolId(symbolId: string, pluginId: string): Promise<Symbol | null>;
12
+ update(symbol: Symbol): Promise<Symbol>;
13
+ delete(id: string, pluginId: string): Promise<void>;
14
+ getAll(pluginId: string): Promise<Symbol[]>;
15
+ exists(id: string, pluginId: string): Promise<boolean>;
16
+ /**
17
+ * Gets symbols by file path.
18
+ */
19
+ findByPath(path: string, pluginId: string): Promise<Symbol[]>;
20
+ /**
21
+ * Gets symbols by signature hash (for change detection).
22
+ */
23
+ findBySignatureHash(signatureHash: string, pluginId: string): Promise<Symbol[]>;
24
+ /**
25
+ * Creates a symbol dependency.
26
+ */
27
+ createSymbolDependency(dependency: SymbolDependency): Promise<SymbolDependency>;
28
+ /**
29
+ * Gets all dependencies for a symbol.
30
+ */
31
+ getSymbolDependencies(symbolId: string): Promise<SymbolDependency[]>;
32
+ /**
33
+ * Maps a database row to a Symbol object.
34
+ */
35
+ private mapRowToSymbol;
36
+ }
37
+ //# sourceMappingURL=symbol-repository.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"symbol-repository.d.ts","sourceRoot":"","sources":["../../src/repositories/symbol-repository.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,SAAS,CAAC;AACnC,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAG5D;;GAEG;AACH,qBAAa,gBAAiB,SAAQ,kBAAkB,CAAC,MAAM,CAAC;gBAChD,EAAE,EAAE,OAAO,CAAC,QAAQ;IAInB,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAsBvC,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAa7D,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAazE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAqBvC,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOnD,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAS3C,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAQnE;;OAEG;IACU,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAS1E;;OAEG;IACU,mBAAmB,CAAC,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAS5F;;OAEG;IACU,sBAAsB,CAAC,UAAU,EAAE,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAgB5F;;OAEG;IACU,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAgBjF;;OAEG;IACH,OAAO,CAAC,cAAc;CAgBzB"}
@@ -0,0 +1,136 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SymbolRepository = void 0;
4
+ const base_repository_1 = require("./base-repository");
5
+ /**
6
+ * Repository for Y-Dimension: Symbols
7
+ */
8
+ class SymbolRepository extends base_repository_1.BaseRepositoryImpl {
9
+ constructor(db) {
10
+ super(db, 'Y');
11
+ }
12
+ async create(symbol) {
13
+ await this.execute(`INSERT INTO symbols (id, plugin_id, symbol_id, path, kind, name, signature_json, signature_hash, summary, deleted_at, created_at, updated_at)
14
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`, [
15
+ symbol.id,
16
+ symbol.plugin_id,
17
+ symbol.symbol_id,
18
+ symbol.path,
19
+ symbol.kind,
20
+ symbol.name,
21
+ symbol.signature_json,
22
+ symbol.signature_hash,
23
+ symbol.summary,
24
+ symbol.deleted_at,
25
+ symbol.created_at,
26
+ symbol.updated_at
27
+ ]);
28
+ return symbol;
29
+ }
30
+ async getById(id, pluginId) {
31
+ const row = await this.queryOne(`SELECT * FROM symbols WHERE id = ? AND plugin_id = ?`, [id, pluginId]);
32
+ if (!row) {
33
+ return null;
34
+ }
35
+ return this.mapRowToSymbol(row);
36
+ }
37
+ async getBySymbolId(symbolId, pluginId) {
38
+ const row = await this.queryOne(`SELECT * FROM symbols WHERE symbol_id = ? AND plugin_id = ?`, [symbolId, pluginId]);
39
+ if (!row) {
40
+ return null;
41
+ }
42
+ return this.mapRowToSymbol(row);
43
+ }
44
+ async update(symbol) {
45
+ await this.execute(`UPDATE symbols
46
+ SET path = ?, kind = ?, name = ?, signature_json = ?, signature_hash = ?, summary = ?, deleted_at = ?, updated_at = ?
47
+ WHERE id = ? AND plugin_id = ?`, [
48
+ symbol.path,
49
+ symbol.kind,
50
+ symbol.name,
51
+ symbol.signature_json,
52
+ symbol.signature_hash,
53
+ symbol.summary,
54
+ symbol.deleted_at,
55
+ symbol.updated_at,
56
+ symbol.id,
57
+ symbol.plugin_id
58
+ ]);
59
+ return symbol;
60
+ }
61
+ async delete(id, pluginId) {
62
+ await this.execute(`UPDATE symbols SET deleted_at = CURRENT_TIMESTAMP WHERE id = ? AND plugin_id = ?`, [id, pluginId]);
63
+ }
64
+ async getAll(pluginId) {
65
+ const rows = await this.queryAll(`SELECT * FROM symbols WHERE plugin_id = ? AND deleted_at IS NULL ORDER BY path, name`, [pluginId]);
66
+ return rows.map(row => this.mapRowToSymbol(row));
67
+ }
68
+ async exists(id, pluginId) {
69
+ const row = await this.queryOne(`SELECT COUNT(*) as count FROM symbols WHERE id = ? AND plugin_id = ?`, [id, pluginId]);
70
+ return row !== null && row.count > 0;
71
+ }
72
+ /**
73
+ * Gets symbols by file path.
74
+ */
75
+ async findByPath(path, pluginId) {
76
+ const rows = await this.queryAll(`SELECT * FROM symbols WHERE path = ? AND plugin_id = ? AND deleted_at IS NULL`, [path, pluginId]);
77
+ return rows.map(row => this.mapRowToSymbol(row));
78
+ }
79
+ /**
80
+ * Gets symbols by signature hash (for change detection).
81
+ */
82
+ async findBySignatureHash(signatureHash, pluginId) {
83
+ const rows = await this.queryAll(`SELECT * FROM symbols WHERE signature_hash = ? AND plugin_id = ? AND deleted_at IS NULL`, [signatureHash, pluginId]);
84
+ return rows.map(row => this.mapRowToSymbol(row));
85
+ }
86
+ /**
87
+ * Creates a symbol dependency.
88
+ */
89
+ async createSymbolDependency(dependency) {
90
+ await this.execute(`INSERT INTO symbol_dependencies (id, symbol_id, dependency_module, dependency_symbols_json, is_type_only, is_reexport)
91
+ VALUES (?, ?, ?, ?, ?, ?)`, [
92
+ dependency.id,
93
+ dependency.symbol_id,
94
+ dependency.dependency_module,
95
+ dependency.dependency_symbols_json,
96
+ dependency.is_type_only ? 1 : 0,
97
+ dependency.is_reexport ? 1 : 0
98
+ ]);
99
+ return dependency;
100
+ }
101
+ /**
102
+ * Gets all dependencies for a symbol.
103
+ */
104
+ async getSymbolDependencies(symbolId) {
105
+ const rows = await this.queryAll(`SELECT * FROM symbol_dependencies WHERE symbol_id = ?`, [symbolId]);
106
+ return rows.map(row => ({
107
+ id: row.id,
108
+ symbol_id: row.symbol_id,
109
+ dependency_module: row.dependency_module,
110
+ dependency_symbols_json: row.dependency_symbols_json,
111
+ is_type_only: row.is_type_only === 1,
112
+ is_reexport: row.is_reexport === 1
113
+ }));
114
+ }
115
+ /**
116
+ * Maps a database row to a Symbol object.
117
+ */
118
+ mapRowToSymbol(row) {
119
+ return {
120
+ id: row.id,
121
+ plugin_id: row.plugin_id,
122
+ symbol_id: row.symbol_id,
123
+ path: row.path,
124
+ kind: row.kind,
125
+ name: row.name,
126
+ signature_json: row.signature_json,
127
+ signature_hash: row.signature_hash,
128
+ summary: row.summary,
129
+ deleted_at: row.deleted_at ? new Date(row.deleted_at) : null,
130
+ created_at: new Date(row.created_at),
131
+ updated_at: new Date(row.updated_at)
132
+ };
133
+ }
134
+ }
135
+ exports.SymbolRepository = SymbolRepository;
136
+ //# sourceMappingURL=symbol-repository.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"symbol-repository.js","sourceRoot":"","sources":["../../src/repositories/symbol-repository.ts"],"names":[],"mappings":"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"}