@undefineds.co/xpod 0.3.75 → 0.4.0-rc.140

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 (362) hide show
  1. package/bin/xpod.js +43 -8
  2. package/config/bun.json +45 -48
  3. package/config/cloud.json +13 -90
  4. package/config/components-ignore.json +0 -1
  5. package/config/local.json +111 -63
  6. package/config/resolver.json +4 -2
  7. package/config/terminal.json +4 -1
  8. package/config/xpod.base.json +16 -8
  9. package/config/xpod.json +51 -54
  10. package/dist/acceptance/PublicCloudSemanticConformance.d.ts +4 -0
  11. package/dist/acceptance/PublicCloudSemanticConformance.js +214 -0
  12. package/dist/acceptance/QleverSearchConformance.d.ts +39 -0
  13. package/dist/acceptance/QleverSearchConformance.js +686 -0
  14. package/dist/acceptance/QleverSemanticConformance.d.ts +3 -0
  15. package/dist/acceptance/QleverSemanticConformance.js +178 -0
  16. package/dist/acceptance/RdfSemanticConformance.d.ts +114 -0
  17. package/dist/acceptance/RdfSemanticConformance.js +307 -0
  18. package/dist/acceptance/run-installed-qlever-conformance.d.ts +12 -0
  19. package/dist/acceptance/run-installed-qlever-conformance.js +87 -0
  20. package/dist/acceptance/run-installed-rdf-conformance.d.ts +12 -0
  21. package/dist/acceptance/run-installed-rdf-conformance.js +88 -0
  22. package/dist/ai/service/EmbeddingProviderError.d.ts +7 -0
  23. package/dist/ai/service/EmbeddingProviderError.js +42 -0
  24. package/dist/api/ai-gateway/connect/index.js +5 -2
  25. package/dist/api/auth/AuthContext.d.ts +5 -0
  26. package/dist/api/auth/AuthContext.js +10 -0
  27. package/dist/api/container/common.js +20 -1
  28. package/dist/api/container/rdf.d.ts +1 -0
  29. package/dist/api/container/rdf.js +43 -4
  30. package/dist/api/container/types.d.ts +4 -0
  31. package/dist/api/runs/InngestRunExecutionBackend.d.ts +2 -2
  32. package/dist/api/runs/PiAgentRuntimeDriver.d.ts +2 -0
  33. package/dist/api/runs/PiAgentRuntimeDriver.js +1 -0
  34. package/dist/api/runs/RdfRunContextRetriever.d.ts +8 -0
  35. package/dist/api/runs/RdfRunContextRetriever.js +23 -1
  36. package/dist/api/runtime.js +20 -6
  37. package/dist/api/service/RdfSearchIndexingService.d.ts +37 -3
  38. package/dist/api/service/RdfSearchIndexingService.js +130 -18
  39. package/dist/api/service/RdfSearchIndexingSolidFsSyncer.d.ts +8 -0
  40. package/dist/api/service/RdfSearchIndexingSolidFsSyncer.js +102 -15
  41. package/dist/api/service/RdfSearchReconciliationWorker.d.ts +76 -0
  42. package/dist/api/service/RdfSearchReconciliationWorker.js +294 -0
  43. package/dist/api/tasks/InngestTaskScheduler.d.ts +4 -4
  44. package/dist/components/components.jsonld +9 -12
  45. package/dist/components/context.jsonld +227 -348
  46. package/dist/document/MarkdownRetrievalPointProjector.d.ts +33 -0
  47. package/dist/document/MarkdownRetrievalPointProjector.js +196 -0
  48. package/dist/document/MarkdownRetrievalPointProjector.jsonld +135 -0
  49. package/dist/document/ReaderMaterialization.d.ts +34 -0
  50. package/dist/document/ReaderMaterialization.js +3 -0
  51. package/dist/document/ReaderMaterialization.jsonld +151 -0
  52. package/dist/document/ReaderMaterializationRepository.d.ts +27 -0
  53. package/dist/document/ReaderMaterializationRepository.js +400 -0
  54. package/dist/document/ReaderMaterializationRepository.jsonld +84 -0
  55. package/dist/document/index.d.ts +3 -1
  56. package/dist/document/index.js +3 -1
  57. package/dist/http/SubgraphSparqlHttpHandler.js +34 -54
  58. package/dist/http/search/SearchHttpHandler.js +14 -12
  59. package/dist/http/terminal/TerminalHttpHandler.d.ts +3 -0
  60. package/dist/http/terminal/TerminalHttpHandler.js +1 -0
  61. package/dist/http/terminal/TerminalHttpHandler.jsonld +11 -0
  62. package/dist/identity/drizzle/DrizzleIndexedStorage.js +19 -39
  63. package/dist/identity/drizzle/db.d.ts +1 -0
  64. package/dist/identity/drizzle/db.js +35 -0
  65. package/dist/index.d.ts +9 -17
  66. package/dist/index.js +14 -22
  67. package/dist/provision/ProvisionPodCreator.d.ts +1 -1
  68. package/dist/provision/ProvisionPodCreator.js +4 -3
  69. package/dist/search/RdfSearchIntentSink.d.ts +17 -0
  70. package/dist/search/RdfSearchIntentSink.js +46 -0
  71. package/dist/search/RdfSearchIntentSink.jsonld +47 -0
  72. package/dist/search/RdfSearchReconciliationRepository.d.ts +81 -0
  73. package/dist/search/RdfSearchReconciliationRepository.js +771 -0
  74. package/dist/solidfs/LocalRdfAuthorityRecoveryInitializer.d.ts +15 -0
  75. package/dist/solidfs/LocalRdfAuthorityRecoveryInitializer.js +48 -0
  76. package/dist/solidfs/LocalRdfAuthorityRecoveryInitializer.jsonld +99 -0
  77. package/dist/solidfs/RdfIndexSolidFsSyncer.js +22 -4
  78. package/dist/solidfs/SolidFsSyncJournal.d.ts +7 -1
  79. package/dist/solidfs/SolidFsSyncJournal.js +20 -5
  80. package/dist/solidfs/SolidFsSyncJournal.jsonld +43 -0
  81. package/dist/solidfs/index.d.ts +1 -0
  82. package/dist/solidfs/index.js +1 -0
  83. package/dist/storage/SparqlUpdateResourceStore.js +3 -3
  84. package/dist/storage/accessors/MixDataAccessor.d.ts +21 -29
  85. package/dist/storage/accessors/MixDataAccessor.js +182 -399
  86. package/dist/storage/accessors/MixDataAccessor.jsonld +109 -87
  87. package/dist/storage/accessors/SolidRdfDataAccessor.d.ts +12 -8
  88. package/dist/storage/accessors/SolidRdfDataAccessor.js +189 -59
  89. package/dist/storage/accessors/SolidRdfDataAccessor.jsonld +14 -29
  90. package/dist/storage/rdf/LocalQleverNativeSparqlClient.d.ts +55 -0
  91. package/dist/storage/rdf/LocalQleverNativeSparqlClient.js +519 -0
  92. package/dist/storage/rdf/LocalQleverNativeSparqlClient.jsonld +314 -0
  93. package/dist/storage/rdf/PostgresRdfEngine.d.ts +3 -1
  94. package/dist/storage/rdf/PostgresRdfEngine.js +111 -74
  95. package/dist/storage/rdf/PostgresRdfEngine.jsonld +12 -22
  96. package/dist/storage/rdf/PostgresRdfSchemaValidation.d.ts +8 -0
  97. package/dist/storage/rdf/PostgresRdfSchemaValidation.js +82 -0
  98. package/dist/storage/rdf/PostgresRdfTextIndex.d.ts +6 -3
  99. package/dist/storage/rdf/PostgresRdfTextIndex.js +158 -80
  100. package/dist/storage/rdf/PostgresRdfTextIndex.jsonld +16 -4
  101. package/dist/storage/rdf/PostgresRdfVectorIndex.d.ts +4 -5
  102. package/dist/storage/rdf/PostgresRdfVectorIndex.js +124 -120
  103. package/dist/storage/rdf/PostgresRdfVectorIndex.jsonld +14 -18
  104. package/dist/storage/rdf/QleverSparqlEngine.d.ts +35 -0
  105. package/dist/storage/rdf/QleverSparqlEngine.js +185 -0
  106. package/dist/storage/rdf/QleverSparqlEngine.jsonld +70 -0
  107. package/dist/storage/rdf/Rdf3xIndex.js +20 -16
  108. package/dist/storage/rdf/RdfAccessScope.d.ts +4 -0
  109. package/dist/storage/rdf/RdfAccessScope.js +74 -9
  110. package/dist/storage/rdf/RdfAccessScope.jsonld +16 -0
  111. package/dist/storage/rdf/RdfEngineRdfJsSource.d.ts +14 -0
  112. package/dist/storage/rdf/RdfEngineRdfJsSource.js +179 -0
  113. package/dist/storage/rdf/RdfQuadIndex.d.ts +13 -14
  114. package/dist/storage/rdf/RdfQuadIndex.js +286 -99
  115. package/dist/storage/rdf/RdfQuadIndex.jsonld +10 -22
  116. package/dist/storage/rdf/RdfQueryExecutor.js +10 -4
  117. package/dist/storage/rdf/RdfQuerySparqlEngine.d.ts +33 -0
  118. package/dist/storage/rdf/RdfQuerySparqlEngine.js +215 -0
  119. package/dist/storage/rdf/RdfQuerySparqlEngine.jsonld +78 -0
  120. package/dist/storage/rdf/RdfSparqlAdapter.d.ts +0 -4
  121. package/dist/storage/rdf/RdfSparqlAdapter.js +75 -173
  122. package/dist/storage/rdf/RdfSparqlBoundary.d.ts +37 -0
  123. package/dist/storage/rdf/RdfSparqlBoundary.js +247 -0
  124. package/dist/storage/rdf/RdfSparqlSerialization.d.ts +3 -0
  125. package/dist/storage/rdf/RdfSparqlSerialization.js +19 -0
  126. package/dist/storage/rdf/RdfSqliteConnection.d.ts +7 -0
  127. package/dist/storage/rdf/RdfSqliteConnection.js +23 -0
  128. package/dist/storage/rdf/RdfTermDictionary.d.ts +0 -8
  129. package/dist/storage/rdf/RdfTermDictionary.js +0 -136
  130. package/dist/storage/rdf/RdfTermDictionary.jsonld +0 -32
  131. package/dist/storage/rdf/RdfTermSemantics.d.ts +6 -0
  132. package/dist/storage/rdf/RdfTermSemantics.js +29 -0
  133. package/dist/storage/rdf/RdfTextIndex.d.ts +5 -6
  134. package/dist/storage/rdf/RdfTextIndex.js +187 -115
  135. package/dist/storage/rdf/RdfTextIndex.jsonld +10 -14
  136. package/dist/storage/rdf/RdfVectorIndex.d.ts +4 -4
  137. package/dist/storage/rdf/RdfVectorIndex.js +156 -233
  138. package/dist/storage/rdf/RdfVectorIndex.jsonld +10 -14
  139. package/dist/storage/rdf/SolidRdfEngine.d.ts +16 -21
  140. package/dist/storage/rdf/SolidRdfEngine.js +28 -308
  141. package/dist/storage/rdf/SolidRdfEngine.jsonld +26 -148
  142. package/dist/storage/rdf/XpodComunicaQueryEngine.d.ts +10 -0
  143. package/dist/storage/rdf/XpodComunicaQueryEngine.js +72 -0
  144. package/dist/storage/rdf/index.d.ts +7 -6
  145. package/dist/storage/rdf/index.js +17 -12
  146. package/dist/storage/rdf/models-benchmark.d.ts +5 -1
  147. package/dist/storage/rdf/models-benchmark.js +17 -19
  148. package/dist/storage/rdf/types.d.ts +68 -6
  149. package/dist/storage/rdf/types.jsonld +69 -0
  150. package/dist/storage/sparql/SubgraphQueryEngine.d.ts +13 -7
  151. package/dist/storage/sparql/SubgraphQueryEngine.js +6 -6
  152. package/dist/storage/vector/index.d.ts +0 -1
  153. package/dist/storage/vector/index.js +0 -1
  154. package/dist/terminal/AclPermissionService.d.ts +4 -5
  155. package/dist/terminal/AclPermissionService.js +55 -75
  156. package/dist/terminal/TerminalSessionManager.d.ts +3 -2
  157. package/dist/terminal/TerminalSessionManager.js +3 -3
  158. package/node_modules/@undefineds.co/drizzle-solid/dist/core/execution/ldp-executor.d.ts +1 -0
  159. package/node_modules/@undefineds.co/drizzle-solid/dist/core/execution/ldp-executor.d.ts.map +1 -1
  160. package/node_modules/@undefineds.co/drizzle-solid/dist/core/execution/ldp-executor.js +29 -26
  161. package/node_modules/@undefineds.co/drizzle-solid/dist/core/execution/ldp-executor.js.map +1 -1
  162. package/node_modules/@undefineds.co/drizzle-solid/dist/core/execution/sparql-strategy.d.ts.map +1 -1
  163. package/node_modules/@undefineds.co/drizzle-solid/dist/core/execution/sparql-strategy.js +9 -4
  164. package/node_modules/@undefineds.co/drizzle-solid/dist/core/execution/sparql-strategy.js.map +1 -1
  165. package/node_modules/@undefineds.co/drizzle-solid/dist/core/notifications/notifications-client.d.ts +1 -0
  166. package/node_modules/@undefineds.co/drizzle-solid/dist/core/notifications/notifications-client.d.ts.map +1 -1
  167. package/node_modules/@undefineds.co/drizzle-solid/dist/core/notifications/notifications-client.js +6 -3
  168. package/node_modules/@undefineds.co/drizzle-solid/dist/core/notifications/notifications-client.js.map +1 -1
  169. package/node_modules/@undefineds.co/drizzle-solid/dist/core/pod-database.js +3 -3
  170. package/node_modules/@undefineds.co/drizzle-solid/dist/core/pod-database.js.map +1 -1
  171. package/node_modules/@undefineds.co/drizzle-solid/dist/core/query-builders/select-query-builder.d.ts +6 -0
  172. package/node_modules/@undefineds.co/drizzle-solid/dist/core/query-builders/select-query-builder.d.ts.map +1 -1
  173. package/node_modules/@undefineds.co/drizzle-solid/dist/core/query-builders/select-query-builder.js +13 -3
  174. package/node_modules/@undefineds.co/drizzle-solid/dist/core/query-builders/select-query-builder.js.map +1 -1
  175. package/node_modules/@undefineds.co/drizzle-solid/dist/core/query-where-policy.d.ts +1 -0
  176. package/node_modules/@undefineds.co/drizzle-solid/dist/core/query-where-policy.d.ts.map +1 -1
  177. package/node_modules/@undefineds.co/drizzle-solid/dist/core/query-where-policy.js +31 -0
  178. package/node_modules/@undefineds.co/drizzle-solid/dist/core/query-where-policy.js.map +1 -1
  179. package/node_modules/@undefineds.co/drizzle-solid/dist/core/sparql/builder/expression-builder.d.ts.map +1 -1
  180. package/node_modules/@undefineds.co/drizzle-solid/dist/core/sparql/builder/expression-builder.js +5 -0
  181. package/node_modules/@undefineds.co/drizzle-solid/dist/core/sparql/builder/expression-builder.js.map +1 -1
  182. package/node_modules/@undefineds.co/drizzle-solid/dist/core/sparql-executor.d.ts +1 -0
  183. package/node_modules/@undefineds.co/drizzle-solid/dist/core/sparql-executor.d.ts.map +1 -1
  184. package/node_modules/@undefineds.co/drizzle-solid/dist/core/sparql-executor.js +45 -0
  185. package/node_modules/@undefineds.co/drizzle-solid/dist/core/sparql-executor.js.map +1 -1
  186. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/execution/ldp-executor.d.ts +1 -0
  187. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/execution/ldp-executor.d.ts.map +1 -1
  188. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/execution/ldp-executor.js +29 -26
  189. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/execution/ldp-executor.js.map +1 -1
  190. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/execution/sparql-strategy.d.ts.map +1 -1
  191. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/execution/sparql-strategy.js +9 -4
  192. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/execution/sparql-strategy.js.map +1 -1
  193. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/notifications/notifications-client.d.ts +1 -0
  194. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/notifications/notifications-client.d.ts.map +1 -1
  195. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/notifications/notifications-client.js +6 -3
  196. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/notifications/notifications-client.js.map +1 -1
  197. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/pod-database.js +3 -3
  198. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/pod-database.js.map +1 -1
  199. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/query-builders/select-query-builder.d.ts +6 -0
  200. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/query-builders/select-query-builder.d.ts.map +1 -1
  201. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/query-builders/select-query-builder.js +14 -4
  202. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/query-builders/select-query-builder.js.map +1 -1
  203. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/query-where-policy.d.ts +1 -0
  204. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/query-where-policy.d.ts.map +1 -1
  205. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/query-where-policy.js +30 -0
  206. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/query-where-policy.js.map +1 -1
  207. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/sparql/builder/expression-builder.d.ts.map +1 -1
  208. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/sparql/builder/expression-builder.js +5 -0
  209. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/sparql/builder/expression-builder.js.map +1 -1
  210. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/sparql-executor.d.ts +1 -0
  211. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/sparql-executor.d.ts.map +1 -1
  212. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/sparql-executor.js +45 -0
  213. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/sparql-executor.js.map +1 -1
  214. package/node_modules/@undefineds.co/drizzle-solid/package.json +5 -4
  215. package/package.json +22 -8
  216. package/static/app/assets/{index-36TJKN-3.js → index-BikOyGPu.js} +34 -34
  217. package/static/app/assets/inrupt-smoke.js +2 -2
  218. package/static/app/assets/main.css +1 -1
  219. package/static/app/assets/main.js +11 -11
  220. package/static/auth-callback/assets/{AiConfigContext-BvBdu_A3.js → AiConfigContext-iQ74JmRZ.js} +1 -1
  221. package/static/auth-callback/assets/{AiConfigPage-BpDw4jco.js → AiConfigPage-BBDKE1gJ.js} +1 -1
  222. package/static/auth-callback/assets/{DocumentProcessingPanel-BmZ_jzRr.js → DocumentProcessingPanel-D9NntIEK.js} +1 -1
  223. package/static/auth-callback/assets/{IndexLifecyclePanel-BfQBjN4z.js → IndexLifecyclePanel-BG07yBdA.js} +1 -1
  224. package/static/auth-callback/assets/{IndexSubjectPanel-BlsnatPt.js → IndexSubjectPanel-B-bUnU3G.js} +1 -1
  225. package/static/auth-callback/assets/{ModelAssignmentsPanel-KA6Mdndz.js → ModelAssignmentsPanel-C7I-Nqy-.js} +1 -1
  226. package/static/auth-callback/assets/{ModelsPage-C7jymyIY.js → ModelsPage-C2hxyrmI.js} +1 -1
  227. package/static/auth-callback/assets/{NetworkPage-k2ShktNm.js → NetworkPage-IGIc2q1Y.js} +1 -1
  228. package/static/auth-callback/assets/{PaneListHeader-mLMe_dvU.js → PaneListHeader-CebuPl_g.js} +1 -1
  229. package/static/auth-callback/assets/{SearchIndexingPanel-CqV9um_t.js → SearchIndexingPanel-6HnZSg00.js} +1 -1
  230. package/static/auth-callback/assets/{StatusSubjectPanel-BgMBTbr2.js → StatusSubjectPanel-votxBkr5.js} +1 -1
  231. package/static/auth-callback/assets/{StatusWorkspace-zbSyhdG2.js → StatusWorkspace-Cksl61zX.js} +1 -1
  232. package/static/auth-callback/assets/{SystemSettingsPage-CtW79nW6.js → SystemSettingsPage-CKZFUaZT.js} +1 -1
  233. package/static/auth-callback/assets/{SystemSettingsSubjectPanel-ZOPKYUtZ.js → SystemSettingsSubjectPanel-pzfUcCf4.js} +1 -1
  234. package/static/auth-callback/assets/{activity-BQ-CQE3O.js → activity-DQL6kZHZ.js} +1 -1
  235. package/static/auth-callback/assets/auth-callback-B_s8Ye5Z.css +1 -0
  236. package/static/auth-callback/assets/{auth-callback-Htr_CB_g.js → auth-callback-BxQMd_Mc.js} +39 -39
  237. package/static/auth-callback/assets/{badge-D5SGTJeO.js → badge-DvW4LUHH.js} +1 -1
  238. package/static/auth-callback/assets/{download-DK183Ldo.js → download-Cx_uaCR1.js} +1 -1
  239. package/static/auth-callback/assets/{external-link-LDHy_4bn.js → external-link-D6L6ExH1.js} +1 -1
  240. package/static/auth-callback/assets/{index-BWrvgHqK.js → index-BAS_hxGu.js} +1 -1
  241. package/static/auth-callback/assets/{index-2WmlePQ9.js → index-BmBjpCoD.js} +1 -1
  242. package/static/auth-callback/assets/{index-browser-DUd4E4-x.js → index-browser-pdn4D3M4.js} +1 -1
  243. package/static/auth-callback/assets/{key-round-ibX79Kr-.js → key-round-BTBzOggq.js} +1 -1
  244. package/static/auth-callback/assets/{rotate-ccw-B2_VMaiX.js → rotate-ccw-eV7Cx8sB.js} +1 -1
  245. package/static/auth-callback/assets/{skeleton-F4nrpycc.js → skeleton-Bg4GYgBM.js} +1 -1
  246. package/static/auth-callback/assets/{waypoints-DImIq93f.js → waypoints-CJbydf0B.js} +1 -1
  247. package/static/auth-callback/assets/{workspace-layout-IVCSYU21.js → workspace-layout-C6Hh8Xf-.js} +1 -1
  248. package/static/auth-callback/auth-callback.html +2 -2
  249. package/static/dashboard/assets/{AiConfigContext-cjjfYTo9.js → AiConfigContext-BkJj28vK.js} +1 -1
  250. package/static/dashboard/assets/{AiConfigPage-CO0DSD_j.js → AiConfigPage-Cs9B4uyp.js} +1 -1
  251. package/static/dashboard/assets/{DocumentProcessingPanel-DMGnH8Oj.js → DocumentProcessingPanel-BBWmM7mS.js} +1 -1
  252. package/static/dashboard/assets/{IndexLifecyclePanel-DSkIOCL5.js → IndexLifecyclePanel-D5xGTT_i.js} +1 -1
  253. package/static/dashboard/assets/{IndexSubjectPanel-qWN_DbAp.js → IndexSubjectPanel-d-mjDthn.js} +1 -1
  254. package/static/dashboard/assets/{ModelAssignmentsPanel-DCf83uM3.js → ModelAssignmentsPanel-C-OLNbqf.js} +1 -1
  255. package/static/dashboard/assets/{ModelsPage-CMnvSrl5.js → ModelsPage-CBrLjuUn.js} +1 -1
  256. package/static/dashboard/assets/{NetworkPage-C8Gkwclb.js → NetworkPage-BlYk8L1z.js} +1 -1
  257. package/static/dashboard/assets/{PaneListHeader-BtU_8cDK.js → PaneListHeader-A5oZJQC0.js} +1 -1
  258. package/static/dashboard/assets/{SearchIndexingPanel-DEn12pNU.js → SearchIndexingPanel-Bs1j8ZP2.js} +1 -1
  259. package/static/dashboard/assets/{StatusSubjectPanel-B1_ILg2d.js → StatusSubjectPanel-Qao3orvi.js} +1 -1
  260. package/static/dashboard/assets/{StatusWorkspace-BG6nMNCo.js → StatusWorkspace-rDM0yDtk.js} +1 -1
  261. package/static/dashboard/assets/{SystemSettingsPage-BnWYIXaM.js → SystemSettingsPage-FPRPkKaR.js} +1 -1
  262. package/static/dashboard/assets/{SystemSettingsSubjectPanel-C_mYVPWb.js → SystemSettingsSubjectPanel-CjlJAxnX.js} +1 -1
  263. package/static/dashboard/assets/{activity-DYJ7PdRl.js → activity-CJ5K6hYC.js} +1 -1
  264. package/static/dashboard/assets/{badge-BIaZco1P.js → badge-L-NMOi1P.js} +1 -1
  265. package/static/dashboard/assets/dashboard-B_s8Ye5Z.css +1 -0
  266. package/static/dashboard/assets/{dashboard-Dl40_MEa.js → dashboard-DyjAyYxx.js} +34 -34
  267. package/static/dashboard/assets/{download-By16k9VK.js → download-Bi4u5K5B.js} +1 -1
  268. package/static/dashboard/assets/{external-link-B92xOG_d.js → external-link-jmhLDfvT.js} +1 -1
  269. package/static/dashboard/assets/{index-BajZpJ48.js → index-BoaGJBxf.js} +1 -1
  270. package/static/dashboard/assets/{index-wsVPom_x.js → index-C22TAEi4.js} +1 -1
  271. package/static/dashboard/assets/{key-round-Clo5FOwA.js → key-round-Dk1VmMrn.js} +1 -1
  272. package/static/dashboard/assets/{rotate-ccw-smWSfi1L.js → rotate-ccw-DIfLsSwi.js} +1 -1
  273. package/static/dashboard/assets/{skeleton-BrTaGeJw.js → skeleton-BGPJMHb-.js} +1 -1
  274. package/static/dashboard/assets/{waypoints-DGPQInE7.js → waypoints-CY53egpu.js} +1 -1
  275. package/static/dashboard/assets/{workspace-layout-CPU4XRmb.js → workspace-layout-CoHkcx70.js} +1 -1
  276. package/static/dashboard/dashboard.html +2 -2
  277. package/static/settings/assets/{AiConfigContext-CT29_OyW.js → AiConfigContext-BcEPlEJe.js} +1 -1
  278. package/static/settings/assets/{AiConfigPage-WIE95S28.js → AiConfigPage-D-t3ZUhg.js} +1 -1
  279. package/static/settings/assets/{DocumentProcessingPanel-KG8Sq999.js → DocumentProcessingPanel-m2SasiMO.js} +1 -1
  280. package/static/settings/assets/{IndexLifecyclePanel-iKvtHDXY.js → IndexLifecyclePanel-BNmAvx8V.js} +1 -1
  281. package/static/settings/assets/{IndexSubjectPanel-BQdSCkk4.js → IndexSubjectPanel-C5-L2AcW.js} +1 -1
  282. package/static/settings/assets/{ModelAssignmentsPanel-P8QcVB0F.js → ModelAssignmentsPanel-Cfpkf02Y.js} +1 -1
  283. package/static/settings/assets/{ModelsPage-UZkZGqor.js → ModelsPage-DZrACwVN.js} +1 -1
  284. package/static/settings/assets/{NetworkPage-Dcpcvg15.js → NetworkPage-BlrGGfqL.js} +1 -1
  285. package/static/settings/assets/{PaneListHeader--gHtZws5.js → PaneListHeader-C3TCs1RI.js} +1 -1
  286. package/static/settings/assets/{SearchIndexingPanel-DdgJSJYQ.js → SearchIndexingPanel-Cyp3CUzX.js} +1 -1
  287. package/static/settings/assets/{StatusSubjectPanel-UOxp_XVL.js → StatusSubjectPanel-gRkb8WEX.js} +1 -1
  288. package/static/settings/assets/{StatusWorkspace-CPNXuD12.js → StatusWorkspace-Dptx4Ec2.js} +1 -1
  289. package/static/settings/assets/{SystemSettingsPage-B6ySeVPw.js → SystemSettingsPage-BWgGUQbs.js} +1 -1
  290. package/static/settings/assets/{SystemSettingsSubjectPanel-I7zWmpiI.js → SystemSettingsSubjectPanel-VflUvpgC.js} +1 -1
  291. package/static/settings/assets/{activity-CFhmzahP.js → activity-D7iNhTkQ.js} +1 -1
  292. package/static/settings/assets/{badge-BBdUc5B-.js → badge-DO0r_RT4.js} +1 -1
  293. package/static/settings/assets/{download-WJE9-yxQ.js → download-CsJlNSbd.js} +1 -1
  294. package/static/settings/assets/{external-link-RKoYyCp_.js → external-link-BCR7SHme.js} +1 -1
  295. package/static/settings/assets/{index-Bq2o0Bif.js → index-Cgq16ekN.js} +1 -1
  296. package/static/settings/assets/{index-DvxneI5O.js → index-SrhQvcrU.js} +1 -1
  297. package/static/settings/assets/{index-browser-Qmo6EsFT.js → index-browser-THpcMCnz.js} +1 -1
  298. package/static/settings/assets/{key-round-r-D9sQUK.js → key-round-Dd3jk1BT.js} +1 -1
  299. package/static/settings/assets/{rotate-ccw-D3IIhbPH.js → rotate-ccw-tiL14i1d.js} +1 -1
  300. package/static/settings/assets/settings-B_s8Ye5Z.css +1 -0
  301. package/static/settings/assets/{settings-D8oDBXWg.js → settings-CVLDPejo.js} +34 -34
  302. package/static/settings/assets/{skeleton-DrL4RQuw.js → skeleton-DBxLuNgU.js} +1 -1
  303. package/static/settings/assets/{waypoints-C5sRhpJw.js → waypoints-DS3e3hv7.js} +1 -1
  304. package/static/settings/assets/{workspace-layout-B4ALmWsM.js → workspace-layout-mucrxyTK.js} +1 -1
  305. package/static/settings/settings.html +2 -2
  306. package/config/search.json +0 -66
  307. package/dist/document/HeadingChunker.jsonld +0 -41
  308. package/dist/security/secret-cell/DeploymentRootKeyProvider.jsonld +0 -124
  309. package/dist/security/secret-cell/SecretCellVault.jsonld +0 -207
  310. package/dist/storage/PostgresDerivedIndexJournal.d.ts +0 -47
  311. package/dist/storage/PostgresDerivedIndexJournal.js +0 -408
  312. package/dist/storage/PostgresDerivedIndexJournal.jsonld +0 -303
  313. package/dist/storage/RdfDerivedIndexingListener.d.ts +0 -32
  314. package/dist/storage/RdfDerivedIndexingListener.js +0 -135
  315. package/dist/storage/RdfDerivedIndexingListener.jsonld +0 -228
  316. package/dist/storage/accessors/QuadstoreSparqlDataAccessor.d.ts +0 -148
  317. package/dist/storage/accessors/QuadstoreSparqlDataAccessor.js +0 -436
  318. package/dist/storage/accessors/QuadstoreSparqlDataAccessor.jsonld +0 -172
  319. package/dist/storage/accessors/QuintStoreSparqlDataAccessor.d.ts +0 -102
  320. package/dist/storage/accessors/QuintStoreSparqlDataAccessor.js +0 -474
  321. package/dist/storage/accessors/QuintStoreSparqlDataAccessor.jsonld +0 -192
  322. package/dist/storage/rdf/RdfSparqlAdapter.jsonld +0 -486
  323. package/dist/storage/rdf/ShadowRdfQuintStore.d.ts +0 -59
  324. package/dist/storage/rdf/ShadowRdfQuintStore.js +0 -216
  325. package/dist/storage/rdf/ShadowRdfQuintStore.jsonld +0 -312
  326. package/dist/storage/rdf/SolidRdfSparqlEngine.d.ts +0 -107
  327. package/dist/storage/rdf/SolidRdfSparqlEngine.js +0 -1117
  328. package/dist/storage/rdf/SolidRdfSparqlEngine.jsonld +0 -312
  329. package/dist/storage/sparql/AlgebraUtils.d.ts +0 -48
  330. package/dist/storage/sparql/AlgebraUtils.js +0 -118
  331. package/dist/storage/sparql/CompatibilitySparqlEngine.d.ts +0 -37
  332. package/dist/storage/sparql/CompatibilitySparqlEngine.js +0 -96
  333. package/dist/storage/sparql/CompatibilitySparqlEngine.jsonld +0 -123
  334. package/dist/storage/sparql/CompatibilitySparqlEngineImpl.d.ts +0 -36
  335. package/dist/storage/sparql/CompatibilitySparqlEngineImpl.js +0 -124
  336. package/dist/storage/sparql/ComunicaOptimizedEngine.d.ts +0 -59
  337. package/dist/storage/sparql/ComunicaOptimizedEngine.js +0 -254
  338. package/dist/storage/sparql/ComunicaQuintEngine.d.ts +0 -143
  339. package/dist/storage/sparql/ComunicaQuintEngine.js +0 -781
  340. package/dist/storage/sparql/ExpressionEvaluator.d.ts +0 -54
  341. package/dist/storage/sparql/ExpressionEvaluator.js +0 -340
  342. package/dist/storage/sparql/FilterPushdownExtractor.d.ts +0 -74
  343. package/dist/storage/sparql/FilterPushdownExtractor.js +0 -421
  344. package/dist/storage/sparql/OptimizedQuadstoreEngine.d.ts +0 -65
  345. package/dist/storage/sparql/OptimizedQuadstoreEngine.js +0 -327
  346. package/dist/storage/sparql/OptimizedQuadstoreSource.d.ts +0 -46
  347. package/dist/storage/sparql/OptimizedQuadstoreSource.js +0 -118
  348. package/dist/storage/sparql/PatternBuilder.d.ts +0 -41
  349. package/dist/storage/sparql/PatternBuilder.js +0 -118
  350. package/dist/storage/sparql/QueryOptimizer.d.ts +0 -125
  351. package/dist/storage/sparql/QueryOptimizer.js +0 -375
  352. package/dist/storage/sparql/QuintEngine.d.ts +0 -92
  353. package/dist/storage/sparql/QuintEngine.js +0 -150
  354. package/dist/storage/sparql/QuintQuerySource.d.ts +0 -241
  355. package/dist/storage/sparql/QuintQuerySource.js +0 -1069
  356. package/dist/storage/sparql/SimpleSparqlExecutor.d.ts +0 -40
  357. package/dist/storage/sparql/SimpleSparqlExecutor.js +0 -131
  358. package/dist/storage/vector/VectorIndexingListener.d.ts +0 -114
  359. package/dist/storage/vector/VectorIndexingListener.js +0 -346
  360. package/static/auth-callback/assets/auth-callback-rWdEQY5f.css +0 -1
  361. package/static/dashboard/assets/dashboard-rWdEQY5f.css +0 -1
  362. package/static/settings/assets/settings-rWdEQY5f.css +0 -1
@@ -18,13 +18,29 @@ exports.normalizeRdfTextRetrievalKind = normalizeRdfTextRetrievalKind;
18
18
  exports.rdfTextIndexBudgetSkip = rdfTextIndexBudgetSkip;
19
19
  exports.rdfTextIndexChunkCap = rdfTextIndexChunkCap;
20
20
  const node_crypto_1 = require("node:crypto");
21
- const node_fs_1 = require("node:fs");
22
21
  const node_path_1 = require("node:path");
23
- const HeadingChunker_1 = require("../../document/HeadingChunker");
22
+ const MarkdownRetrievalPointProjector_1 = require("../../document/MarkdownRetrievalPointProjector");
24
23
  const SqliteRuntime_1 = require("../SqliteRuntime");
25
24
  const RdfSearchSourceFilter_1 = require("./RdfSearchSourceFilter");
25
+ const RdfSqliteConnection_1 = require("./RdfSqliteConnection");
26
26
  exports.RDF_TEXT_TERM_MAX_INDEX_LENGTH = 256;
27
- exports.RDF_TEXT_SCHEMA_VERSION = 2;
27
+ exports.RDF_TEXT_SCHEMA_VERSION = 3;
28
+ const RDF_TEXT_DOMAIN_TABLES = [
29
+ 'rdf_text_metadata',
30
+ 'rdf_text_sources',
31
+ 'rdf_text_rebuild_status',
32
+ 'rdf_text_chunks',
33
+ 'rdf_text_terms',
34
+ 'rdf_text_entities',
35
+ ];
36
+ const RDF_TEXT_REQUIRED_COLUMNS = {
37
+ rdf_text_metadata: ['key', 'value'],
38
+ rdf_text_sources: ['id', 'source_key', 'source', 'workspace', 'local_path', 'content_type', 'source_version', 'source_hash', 'updated_at'],
39
+ rdf_text_rebuild_status: ['source', 'workspace', 'local_path', 'content_type', 'source_version', 'source_hash', 'status', 'reason', 'message', 'updated_at'],
40
+ rdf_text_chunks: ['id', 'source_id', 'chunk_key', 'retrieval_kind', 'ordinal', 'level', 'heading', 'path', 'content', 'start_offset', 'end_offset', 'normalized_text', 'token_count', 'updated_at'],
41
+ rdf_text_terms: ['id', 'term', 'source_id', 'chunk_id', 'occurrences', 'updated_at'],
42
+ rdf_text_entities: ['id', 'entity', 'source_id', 'chunk_id', 'predicate', 'label', 'value', 'datatype', 'language', 'policy_role', 'occurrences', 'updated_at'],
43
+ };
28
44
  class RdfTextIndex {
29
45
  constructor(options) {
30
46
  this.options = options;
@@ -35,13 +51,7 @@ class RdfTextIndex {
35
51
  if (this.db) {
36
52
  return;
37
53
  }
38
- if (this.options.path !== ':memory:') {
39
- const dir = (0, node_path_1.dirname)(this.options.path);
40
- if (!(0, node_fs_1.existsSync)(dir)) {
41
- (0, node_fs_1.mkdirSync)(dir, { recursive: true });
42
- }
43
- }
44
- this.db = this.sqliteRuntime.openDatabase(this.options.path);
54
+ this.db = (0, RdfSqliteConnection_1.openRdfSqliteDatabase)(this.sqliteRuntime, this.options.path);
45
55
  this.initializeSchema();
46
56
  }
47
57
  close() {
@@ -63,6 +73,34 @@ class RdfTextIndex {
63
73
  .get(source);
64
74
  return row ? rdfTextSourceMetadata(row) : undefined;
65
75
  }
76
+ listSources(options = {}) {
77
+ const db = this.requireDb();
78
+ const conditions = [];
79
+ const params = [];
80
+ if (options.workspace) {
81
+ conditions.push('workspace = ?');
82
+ params.push(options.workspace);
83
+ }
84
+ if (options.sourcePrefix) {
85
+ conditions.push('source >= ? AND source < ?');
86
+ params.push(options.sourcePrefix, `${options.sourcePrefix}\uffff`);
87
+ }
88
+ const limit = normalizeSourceListLimit(options.limit);
89
+ const offset = normalizeSourceListOffset(options.offset);
90
+ params.push(limit, offset);
91
+ const where = conditions.length > 0 ? `WHERE ${conditions.join(' AND ')}` : '';
92
+ const rows = db
93
+ .prepare(`
94
+ SELECT *
95
+ FROM rdf_text_sources
96
+ ${where}
97
+ ORDER BY source ASC
98
+ LIMIT ?
99
+ OFFSET ?
100
+ `)
101
+ .all(...params);
102
+ return rows.map(rdfTextSourceMetadata);
103
+ }
66
104
  recordRebuildStatus(input) {
67
105
  this.requireDb().prepare(`
68
106
  INSERT INTO rdf_text_rebuild_status (
@@ -192,6 +230,10 @@ class RdfTextIndex {
192
230
  if (!oldRow) {
193
231
  return;
194
232
  }
233
+ const sourceKey = oldRow.source_key;
234
+ if (next.sourceKey && next.sourceKey !== sourceKey) {
235
+ throw new Error(`RDF text source key mismatch for source ${oldSource}: expected ${sourceKey}, got ${next.sourceKey}`);
236
+ }
195
237
  const chunkCount = db
196
238
  .prepare('SELECT COUNT(*) AS count FROM rdf_text_chunks WHERE source_id = ?')
197
239
  .get(oldRow.id)?.count ?? 0;
@@ -214,7 +256,7 @@ class RdfTextIndex {
214
256
  source_hash = ?,
215
257
  updated_at = strftime('%Y-%m-%dT%H:%M:%fZ', 'now')
216
258
  WHERE id = ?
217
- `).run(next.sourceKey ?? oldRow.source_key ?? oldRow.source, next.source, next.workspace, next.localPath ?? null, next.contentType ?? null, next.sourceVersion ?? null, next.sourceHash ?? null, oldRow.id);
259
+ `).run(sourceKey, next.source, next.workspace, next.localPath ?? null, next.contentType ?? null, next.sourceVersion ?? null, next.sourceHash ?? oldRow.source_hash ?? null, oldRow.id);
218
260
  db.prepare(`
219
261
  UPDATE rdf_text_rebuild_status
220
262
  SET
@@ -226,7 +268,7 @@ class RdfTextIndex {
226
268
  source_hash = ?,
227
269
  updated_at = strftime('%Y-%m-%dT%H:%M:%fZ', 'now')
228
270
  WHERE source = ?
229
- `).run(next.source, next.workspace, next.localPath ?? null, next.contentType ?? null, next.sourceVersion ?? null, next.sourceHash ?? null, oldSource);
271
+ `).run(next.source, next.workspace, next.localPath ?? null, next.contentType ?? null, next.sourceVersion ?? null, next.sourceHash ?? oldRow.source_hash ?? null, oldSource);
230
272
  affectedRows = Math.max(chunkCount, 1);
231
273
  })();
232
274
  return affectedRows;
@@ -245,6 +287,38 @@ class RdfTextIndex {
245
287
  return deletedChunks;
246
288
  })();
247
289
  }
290
+ listSourceChunks(sourceKey) {
291
+ const rows = this.requireDb().prepare(`
292
+ SELECT
293
+ chunk.id,
294
+ chunk.source_id,
295
+ source.source_key,
296
+ source.source,
297
+ source.workspace,
298
+ source.local_path,
299
+ source.content_type,
300
+ source.source_version,
301
+ source.source_hash,
302
+ chunk.chunk_key,
303
+ chunk.retrieval_kind,
304
+ chunk.ordinal,
305
+ chunk.level,
306
+ chunk.heading,
307
+ chunk.path,
308
+ chunk.content,
309
+ chunk.start_offset,
310
+ chunk.end_offset,
311
+ chunk.normalized_text,
312
+ chunk.token_count,
313
+ chunk.updated_at
314
+ FROM rdf_text_chunks chunk
315
+ JOIN rdf_text_sources source ON source.id = chunk.source_id
316
+ WHERE source.source_key = ? OR source.source = ?
317
+ ORDER BY source.source ASC, chunk.ordinal ASC, chunk.chunk_key ASC
318
+ `).all(sourceKey, sourceKey);
319
+ const entitiesByChunk = this.entitiesForChunks(rows.map((row) => row.id));
320
+ return rows.map((row) => this.toSearchResult(row, '', 0, entitiesByChunk.get(row.id) ?? []));
321
+ }
248
322
  search(options) {
249
323
  const query = normalizeText(options.query);
250
324
  const entityFilter = normalizeEntityFilter(options.entities);
@@ -449,15 +523,20 @@ class RdfTextIndex {
449
523
  }));
450
524
  }
451
525
  initializeSchema() {
452
- this.requireDb().exec(`
453
- CREATE TABLE IF NOT EXISTS rdf_text_metadata (
526
+ const db = this.requireDb();
527
+ if (hasAnyTable(db, RDF_TEXT_DOMAIN_TABLES)) {
528
+ this.validateSchema();
529
+ return;
530
+ }
531
+ db.exec(`
532
+ CREATE TABLE rdf_text_metadata (
454
533
  key TEXT PRIMARY KEY,
455
534
  value TEXT NOT NULL
456
535
  );
457
536
 
458
- CREATE TABLE IF NOT EXISTS rdf_text_sources (
537
+ CREATE TABLE rdf_text_sources (
459
538
  id INTEGER PRIMARY KEY AUTOINCREMENT,
460
- source_key TEXT,
539
+ source_key TEXT NOT NULL UNIQUE,
461
540
  source TEXT NOT NULL UNIQUE,
462
541
  workspace TEXT NOT NULL,
463
542
  local_path TEXT,
@@ -467,7 +546,7 @@ class RdfTextIndex {
467
546
  updated_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now'))
468
547
  );
469
548
 
470
- CREATE TABLE IF NOT EXISTS rdf_text_rebuild_status (
549
+ CREATE TABLE rdf_text_rebuild_status (
471
550
  source TEXT PRIMARY KEY,
472
551
  workspace TEXT NOT NULL,
473
552
  local_path TEXT,
@@ -480,7 +559,7 @@ class RdfTextIndex {
480
559
  updated_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now'))
481
560
  );
482
561
 
483
- CREATE TABLE IF NOT EXISTS rdf_text_chunks (
562
+ CREATE TABLE rdf_text_chunks (
484
563
  id INTEGER PRIMARY KEY AUTOINCREMENT,
485
564
  source_id INTEGER NOT NULL,
486
565
  chunk_key TEXT NOT NULL,
@@ -499,7 +578,7 @@ class RdfTextIndex {
499
578
  FOREIGN KEY (source_id) REFERENCES rdf_text_sources(id)
500
579
  );
501
580
 
502
- CREATE TABLE IF NOT EXISTS rdf_text_terms (
581
+ CREATE TABLE rdf_text_terms (
503
582
  id INTEGER PRIMARY KEY AUTOINCREMENT,
504
583
  term TEXT NOT NULL CHECK (length(term) <= ${exports.RDF_TEXT_TERM_MAX_INDEX_LENGTH}),
505
584
  source_id INTEGER NOT NULL,
@@ -511,7 +590,7 @@ class RdfTextIndex {
511
590
  FOREIGN KEY (chunk_id) REFERENCES rdf_text_chunks(id)
512
591
  );
513
592
 
514
- CREATE TABLE IF NOT EXISTS rdf_text_entities (
593
+ CREATE TABLE rdf_text_entities (
515
594
  id INTEGER PRIMARY KEY AUTOINCREMENT,
516
595
  entity TEXT NOT NULL,
517
596
  source_id INTEGER NOT NULL,
@@ -533,7 +612,6 @@ class RdfTextIndex {
533
612
  CREATE INDEX IF NOT EXISTS rdf_text_sources_local_path ON rdf_text_sources(local_path);
534
613
  CREATE INDEX IF NOT EXISTS rdf_text_sources_workspace_local_path ON rdf_text_sources(workspace, local_path);
535
614
  CREATE INDEX IF NOT EXISTS rdf_text_chunks_source ON rdf_text_chunks(source_id, ordinal);
536
- DELETE FROM rdf_text_terms WHERE length(term) > ${exports.RDF_TEXT_TERM_MAX_INDEX_LENGTH};
537
615
  CREATE INDEX IF NOT EXISTS rdf_text_terms_term ON rdf_text_terms(term);
538
616
  CREATE INDEX IF NOT EXISTS rdf_text_terms_source_term ON rdf_text_terms(source_id, term);
539
617
  CREATE INDEX IF NOT EXISTS rdf_text_terms_chunk ON rdf_text_terms(chunk_id);
@@ -544,94 +622,31 @@ class RdfTextIndex {
544
622
  DROP INDEX IF EXISTS rdf_text_chunks_normalized;
545
623
 
546
624
  INSERT INTO rdf_text_metadata (key, value)
547
- VALUES ('schema_version', '${exports.RDF_TEXT_SCHEMA_VERSION}')
548
- ON CONFLICT (key) DO UPDATE SET value = excluded.value;
625
+ VALUES ('schema_version', '${exports.RDF_TEXT_SCHEMA_VERSION}');
549
626
  `);
550
- this.ensureSourceKeyColumn();
551
- this.ensureChunkRetrievalColumns();
552
- this.ensureEntityProvenanceColumns();
553
- this.backfillTermPostings();
554
- }
555
- ensureSourceKeyColumn() {
556
- const columns = new Set(this.requireDb()
557
- .prepare('PRAGMA table_info(rdf_text_sources)')
558
- .all()
559
- .map((column) => column.name));
560
- if (!columns.has('source_key')) {
561
- this.requireDb().exec('ALTER TABLE rdf_text_sources ADD COLUMN source_key TEXT;');
562
- }
563
- this.requireDb().exec('UPDATE rdf_text_sources SET source_key = source WHERE source_key IS NULL;');
564
- }
565
- ensureChunkRetrievalColumns() {
566
- const columns = new Set(this.requireDb()
567
- .prepare('PRAGMA table_info(rdf_text_chunks)')
568
- .all()
569
- .map((column) => column.name));
570
- if (!columns.has('retrieval_kind')) {
571
- this.requireDb().exec("ALTER TABLE rdf_text_chunks ADD COLUMN retrieval_kind TEXT NOT NULL DEFAULT 'file-chunk';");
572
- }
573
627
  }
574
- ensureEntityProvenanceColumns() {
575
- const columns = new Set(this.requireDb()
576
- .prepare('PRAGMA table_info(rdf_text_entities)')
577
- .all()
578
- .map((column) => column.name));
579
- for (const [name, type] of [
580
- ['value', 'TEXT'],
581
- ['datatype', 'TEXT'],
582
- ['language', 'TEXT'],
583
- ['policy_role', 'TEXT'],
584
- ]) {
585
- if (!columns.has(name)) {
586
- this.requireDb().exec(`ALTER TABLE rdf_text_entities ADD COLUMN ${name} ${type};`);
628
+ validateSchema() {
629
+ const db = this.requireDb();
630
+ for (const table of RDF_TEXT_DOMAIN_TABLES) {
631
+ if (!hasTable(db, table)) {
632
+ throw new Error(`Unsupported RDF text index schema: missing table ${table}`);
587
633
  }
634
+ assertRequiredColumns(db, table, RDF_TEXT_REQUIRED_COLUMNS[table]);
588
635
  }
589
- }
590
- backfillTermPostings() {
591
- const db = this.requireDb();
592
- const rows = db.prepare(`
593
- SELECT chunk.id, chunk.source_id, chunk.normalized_text
594
- FROM rdf_text_chunks chunk
595
- LEFT JOIN rdf_text_terms term ON term.chunk_id = chunk.id
596
- WHERE term.chunk_id IS NULL AND chunk.normalized_text <> ''
597
- `).all();
598
- if (rows.length === 0) {
599
- return;
636
+ const version = this.schemaVersion();
637
+ if (version !== exports.RDF_TEXT_SCHEMA_VERSION) {
638
+ throw new Error(`Unsupported RDF text index schema version: expected ${exports.RDF_TEXT_SCHEMA_VERSION}, got ${version}`);
600
639
  }
601
- const insertTerm = db.prepare(`
602
- INSERT INTO rdf_text_terms (
603
- term,
604
- source_id,
605
- chunk_id,
606
- occurrences,
607
- updated_at
608
- )
609
- VALUES (?, ?, ?, ?, strftime('%Y-%m-%dT%H:%M:%fZ', 'now'))
610
- `);
611
- const insertEntity = db.prepare(`
612
- INSERT INTO rdf_text_entities (
613
- entity,
614
- source_id,
615
- chunk_id,
616
- predicate,
617
- label,
618
- value,
619
- datatype,
620
- language,
621
- policy_role,
622
- occurrences,
623
- updated_at
624
- )
625
- VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, strftime('%Y-%m-%dT%H:%M:%fZ', 'now'))
626
- `);
627
- db.transaction(() => {
628
- for (const row of rows) {
629
- insertTermOccurrences(insertTerm, row.source_id, row.id, row.normalized_text);
630
- }
631
- })();
640
+ assertNotNullColumn(db, 'rdf_text_sources', 'source_key');
641
+ assertUniqueColumn(db, 'rdf_text_sources', 'source_key');
632
642
  }
633
643
  upsertSource(source) {
634
644
  const db = this.requireDb();
645
+ const existing = db.prepare('SELECT * FROM rdf_text_sources WHERE source = ?').get(source.source);
646
+ if (existing && source.sourceKey && existing.source_key !== source.sourceKey) {
647
+ throw new Error(`RDF text source key mismatch for source ${source.source}: expected ${existing.source_key}, got ${source.sourceKey}`);
648
+ }
649
+ const sourceKey = existing?.source_key ?? source.sourceKey ?? source.source;
635
650
  db.prepare(`
636
651
  INSERT INTO rdf_text_sources (
637
652
  source_key,
@@ -646,14 +661,13 @@ class RdfTextIndex {
646
661
  VALUES (?, ?, ?, ?, ?, ?, ?, strftime('%Y-%m-%dT%H:%M:%fZ', 'now'))
647
662
  ON CONFLICT (source)
648
663
  DO UPDATE SET
649
- source_key = excluded.source_key,
650
664
  workspace = excluded.workspace,
651
665
  local_path = excluded.local_path,
652
666
  content_type = excluded.content_type,
653
667
  source_version = excluded.source_version,
654
668
  source_hash = excluded.source_hash,
655
669
  updated_at = excluded.updated_at
656
- `).run(source.sourceKey ?? source.source, source.source, source.workspace, source.localPath ?? null, source.contentType ?? null, source.sourceVersion ?? null, source.sourceHash ?? null);
670
+ `).run(sourceKey, source.source, source.workspace, source.localPath ?? null, source.contentType ?? null, source.sourceVersion ?? null, source.sourceHash ?? null);
657
671
  const row = db.prepare('SELECT * FROM rdf_text_sources WHERE source = ?').get(source.source);
658
672
  if (!row) {
659
673
  throw new Error(`Failed to upsert RDF text source: ${source.source}`);
@@ -768,6 +782,18 @@ function rdfTextSourceMetadata(row) {
768
782
  updatedAt: row.updated_at,
769
783
  };
770
784
  }
785
+ function normalizeSourceListLimit(value) {
786
+ if (!value || !Number.isFinite(value) || value <= 0) {
787
+ return 1_000;
788
+ }
789
+ return Math.min(Math.floor(value), 10_000);
790
+ }
791
+ function normalizeSourceListOffset(value) {
792
+ if (!value || !Number.isFinite(value) || value <= 0) {
793
+ return 0;
794
+ }
795
+ return Math.floor(value);
796
+ }
771
797
  function rdfTextRebuildStatus(row) {
772
798
  return {
773
799
  source: row.source,
@@ -782,6 +808,46 @@ function rdfTextRebuildStatus(row) {
782
808
  updatedAt: row.updated_at,
783
809
  };
784
810
  }
811
+ function hasAnyTable(db, tables) {
812
+ return tables.some((table) => hasTable(db, table));
813
+ }
814
+ function hasTable(db, table) {
815
+ return db.prepare("SELECT name FROM sqlite_master WHERE type = 'table' AND name = ?").get(table) != null;
816
+ }
817
+ function assertRequiredColumns(db, table, requiredColumns) {
818
+ const columns = new Set(db.prepare(`PRAGMA table_info(${table})`)
819
+ .all()
820
+ .map((column) => column.name));
821
+ for (const column of requiredColumns) {
822
+ if (!columns.has(column)) {
823
+ throw new Error(`Unsupported RDF text index schema: missing column ${table}.${column}`);
824
+ }
825
+ }
826
+ }
827
+ function assertNotNullColumn(db, table, column) {
828
+ const row = db.prepare(`PRAGMA table_info(${quoteSqliteIdentifier(table)})`)
829
+ .all()
830
+ .find((entry) => entry.name === column);
831
+ if (!row || row.notnull !== 1) {
832
+ throw new Error(`Unsupported RDF text index schema: column ${table}.${column} must be NOT NULL`);
833
+ }
834
+ }
835
+ function assertUniqueColumn(db, table, column) {
836
+ const indexes = db.prepare(`PRAGMA index_list(${quoteSqliteIdentifier(table)})`).all();
837
+ for (const index of indexes) {
838
+ if (index.unique !== 1) {
839
+ continue;
840
+ }
841
+ const columns = db.prepare(`PRAGMA index_info(${quoteSqliteIdentifier(index.name)})`).all();
842
+ if (columns.length === 1 && columns[0].name === column) {
843
+ return;
844
+ }
845
+ }
846
+ throw new Error(`Unsupported RDF text index schema: column ${table}.${column} must be UNIQUE`);
847
+ }
848
+ function quoteSqliteIdentifier(value) {
849
+ return `"${value.replace(/"/g, '""')}"`;
850
+ }
785
851
  function chunkRdfTextSource(source, text) {
786
852
  if (!text) {
787
853
  return [];
@@ -790,18 +856,24 @@ function chunkRdfTextSource(source, text) {
790
856
  return chunkFolderCard(source, text);
791
857
  }
792
858
  if (isMarkdownSource(source)) {
793
- const chunker = new HeadingChunker_1.HeadingChunker();
794
- return chunker.flatten(chunker.chunk(text))
795
- .filter((chunk) => chunk.content.trim().length > 0)
796
- .map((chunk, index) => ({
797
- chunkKey: deterministicChunkKey(source.source, index),
798
- ordinal: index,
799
- level: chunk.level,
800
- heading: chunk.heading || undefined,
801
- path: chunk.path,
802
- content: chunk.content,
803
- startOffset: chunk.startOffset,
804
- endOffset: chunk.endOffset,
859
+ const projector = new MarkdownRetrievalPointProjector_1.MarkdownRetrievalPointProjector();
860
+ return projector.project({
861
+ sourceKey: source.sourceKey ?? source.source,
862
+ sourceUri: source.source,
863
+ representationHash: sha256(text),
864
+ markdown: text,
865
+ }).map((point) => ({
866
+ chunkKey: point.chunkKey,
867
+ retrievalPointKey: point.retrievalPointKey,
868
+ retrievalKind: point.retrievalKind,
869
+ chunkPolicyVersion: point.chunkPolicyVersion,
870
+ ordinal: point.ordinal,
871
+ level: point.level,
872
+ heading: point.heading,
873
+ path: point.path,
874
+ content: point.content,
875
+ startOffset: point.startOffset,
876
+ endOffset: point.endOffset,
805
877
  }));
806
878
  }
807
879
  return chunkPlainText(source.source, text);
@@ -78,6 +78,10 @@
78
78
  "@id": "undefineds:dist/storage/rdf/RdfTextIndex.jsonld#RdfTextIndex__member_sourceMetadata",
79
79
  "memberFieldName": "sourceMetadata"
80
80
  },
81
+ {
82
+ "@id": "undefineds:dist/storage/rdf/RdfTextIndex.jsonld#RdfTextIndex__member_listSources",
83
+ "memberFieldName": "listSources"
84
+ },
81
85
  {
82
86
  "@id": "undefineds:dist/storage/rdf/RdfTextIndex.jsonld#RdfTextIndex__member_recordRebuildStatus",
83
87
  "memberFieldName": "recordRebuildStatus"
@@ -98,6 +102,10 @@
98
102
  "@id": "undefineds:dist/storage/rdf/RdfTextIndex.jsonld#RdfTextIndex__member_deleteSource",
99
103
  "memberFieldName": "deleteSource"
100
104
  },
105
+ {
106
+ "@id": "undefineds:dist/storage/rdf/RdfTextIndex.jsonld#RdfTextIndex__member_listSourceChunks",
107
+ "memberFieldName": "listSourceChunks"
108
+ },
101
109
  {
102
110
  "@id": "undefineds:dist/storage/rdf/RdfTextIndex.jsonld#RdfTextIndex__member_search",
103
111
  "memberFieldName": "search"
@@ -119,20 +127,8 @@
119
127
  "memberFieldName": "initializeSchema"
120
128
  },
121
129
  {
122
- "@id": "undefineds:dist/storage/rdf/RdfTextIndex.jsonld#RdfTextIndex__member_ensureSourceKeyColumn",
123
- "memberFieldName": "ensureSourceKeyColumn"
124
- },
125
- {
126
- "@id": "undefineds:dist/storage/rdf/RdfTextIndex.jsonld#RdfTextIndex__member_ensureChunkRetrievalColumns",
127
- "memberFieldName": "ensureChunkRetrievalColumns"
128
- },
129
- {
130
- "@id": "undefineds:dist/storage/rdf/RdfTextIndex.jsonld#RdfTextIndex__member_ensureEntityProvenanceColumns",
131
- "memberFieldName": "ensureEntityProvenanceColumns"
132
- },
133
- {
134
- "@id": "undefineds:dist/storage/rdf/RdfTextIndex.jsonld#RdfTextIndex__member_backfillTermPostings",
135
- "memberFieldName": "backfillTermPostings"
130
+ "@id": "undefineds:dist/storage/rdf/RdfTextIndex.jsonld#RdfTextIndex__member_validateSchema",
131
+ "memberFieldName": "validateSchema"
136
132
  },
137
133
  {
138
134
  "@id": "undefineds:dist/storage/rdf/RdfTextIndex.jsonld#RdfTextIndex__member_upsertSource",
@@ -1,4 +1,5 @@
1
1
  import type { RdfVectorChunkInput, RdfVectorChunkRow, RdfVectorDistanceMetric, RdfSearchCardinalityEstimate, RdfVectorIndexOptions, RdfVectorIndexSyncLike, RdfVectorIndexStats, RdfVectorModelDistribution, RdfVectorSearchOrder, RdfVectorSearchOptions, RdfVectorSearchResult, RdfVectorSourceInput, RdfVectorScoreComponents, RdfVectorSummaryLifecycleEntry, RdfVectorSummaryLifecycleOptions, RdfVectorSummaryMetadata } from './types';
2
+ export declare const RDF_VECTOR_SCHEMA_VERSION = 2;
2
3
  export interface RdfVectorScoredChunkRow extends RdfVectorChunkRow {
3
4
  dot_product: number;
4
5
  vector_score: number;
@@ -13,18 +14,17 @@ export declare class RdfVectorIndex implements RdfVectorIndexSyncLike {
13
14
  open(): void;
14
15
  close(): void;
15
16
  clear(): void;
17
+ schemaVersion(): number;
16
18
  indexVector(source: RdfVectorSourceInput, chunks: RdfVectorChunkInput[]): void;
17
19
  deleteSource(source: string): number;
20
+ moveSource(oldSource: string, next: RdfVectorSourceInput): number;
18
21
  search(options: RdfVectorSearchOptions): RdfVectorSearchResult[];
19
22
  summaryLifecycle(options?: RdfVectorSummaryLifecycleOptions): RdfVectorSummaryLifecycleEntry[];
20
23
  estimateSearchCardinality(options: RdfVectorSearchOptions): RdfSearchCardinalityEstimate;
21
24
  stats(): RdfVectorIndexStats;
22
25
  modelDistribution(): RdfVectorModelDistribution[];
23
26
  private initializeSchema;
24
- private ensureSourceKeyColumn;
25
- private ensureVectorIdentityColumns;
26
- private ensureVectorChunkIdentityUniqueConstraint;
27
- private backfillVectorComponents;
27
+ private validateSchema;
28
28
  private upsertSource;
29
29
  private estimateDatabaseBytes;
30
30
  private toSearchResult;