@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
@@ -5,7 +5,21 @@ const pglite_1 = require("@electric-sql/pglite");
5
5
  const PostgresPoolManager_1 = require("../database/PostgresPoolManager");
6
6
  const RdfSearchSourceFilter_1 = require("./RdfSearchSourceFilter");
7
7
  const PostgresRdfSqlExecutor_1 = require("./PostgresRdfSqlExecutor");
8
+ const PostgresRdfSchemaValidation_1 = require("./PostgresRdfSchemaValidation");
8
9
  const RdfVectorIndex_1 = require("./RdfVectorIndex");
10
+ const PG_RDF_VECTOR_SCHEMA_LOCK_KEY = 2026072902;
11
+ const PG_RDF_VECTOR_DOMAIN_TABLES = [
12
+ 'rdf_vector_metadata',
13
+ 'rdf_vector_sources',
14
+ 'rdf_vector_chunks',
15
+ 'rdf_vector_components',
16
+ ];
17
+ const PG_RDF_VECTOR_REQUIRED_COLUMNS = {
18
+ rdf_vector_metadata: ['key', 'value'],
19
+ rdf_vector_sources: ['id', 'source_key', 'source', 'workspace', 'local_path', 'content_type', 'source_version', 'source_hash', 'updated_at'],
20
+ rdf_vector_chunks: ['id', 'source_id', 'chunk_key', 'ordinal', 'level', 'heading', 'path', 'content', 'start_offset', 'end_offset', 'embedding_json', 'summary_metadata', 'dimensions', 'magnitude', 'provider', 'model', 'model_version', 'input_kind', 'input_hash', 'projection_policy_version', 'updated_at'],
21
+ rdf_vector_components: ['chunk_id', 'dimension', 'value', 'updated_at'],
22
+ };
9
23
  class PostgresRdfVectorIndex {
10
24
  constructor(options = {}) {
11
25
  this.executor = null;
@@ -48,6 +62,14 @@ class PostgresRdfVectorIndex {
48
62
  async clear() {
49
63
  await this.requireExecutor().exec('DELETE FROM rdf_vector_components; DELETE FROM rdf_vector_chunks; DELETE FROM rdf_vector_sources;');
50
64
  }
65
+ async schemaVersion() {
66
+ return await this.readSchemaVersion(this.requireExecutor());
67
+ }
68
+ async readSchemaVersion(executor) {
69
+ const row = await executor
70
+ .query("SELECT value FROM rdf_vector_metadata WHERE key = 'schema_version'");
71
+ return Number(row[0]?.value ?? 0) || 0;
72
+ }
51
73
  async indexVector(source, chunks) {
52
74
  const executor = this.requireExecutor();
53
75
  await executor.transaction(async (tx) => {
@@ -190,6 +212,58 @@ class PostgresRdfVectorIndex {
190
212
  return Number(deletedRows[0]?.count ?? 0);
191
213
  });
192
214
  }
215
+ async moveSource(oldSource, next) {
216
+ const executor = this.requireExecutor();
217
+ return await executor.transaction(async (tx) => {
218
+ const oldRows = await tx.query('SELECT * FROM rdf_vector_sources WHERE source = $1', [oldSource]);
219
+ const oldRow = oldRows[0];
220
+ if (!oldRow) {
221
+ return 0;
222
+ }
223
+ const oldId = Number(oldRow.id);
224
+ const sourceKey = oldRow.source_key;
225
+ if (next.sourceKey && next.sourceKey !== sourceKey) {
226
+ throw new Error(`RDF vector source key mismatch for source ${oldSource}: expected ${sourceKey}, got ${next.sourceKey}`);
227
+ }
228
+ const countRows = await tx.query('SELECT COUNT(*) AS count FROM rdf_vector_chunks WHERE source_id = $1', [oldId]);
229
+ const targetRows = await tx.query('SELECT * FROM rdf_vector_sources WHERE source = $1', [next.source]);
230
+ const targetRow = targetRows[0];
231
+ if (targetRow && Number(targetRow.id) !== oldId) {
232
+ const targetId = Number(targetRow.id);
233
+ await tx.exec(`
234
+ DELETE FROM rdf_vector_components
235
+ WHERE chunk_id IN (
236
+ SELECT id FROM rdf_vector_chunks WHERE source_id = $1
237
+ )
238
+ `, [targetId]);
239
+ await tx.exec('DELETE FROM rdf_vector_chunks WHERE source_id = $1', [targetId]);
240
+ await tx.exec('DELETE FROM rdf_vector_sources WHERE id = $1', [targetId]);
241
+ }
242
+ await tx.exec(`
243
+ UPDATE rdf_vector_sources
244
+ SET
245
+ source_key = $1,
246
+ source = $2,
247
+ workspace = $3,
248
+ local_path = $4,
249
+ content_type = $5,
250
+ source_version = $6,
251
+ source_hash = $7,
252
+ updated_at = now()
253
+ WHERE id = $8
254
+ `, [
255
+ sourceKey,
256
+ next.source,
257
+ next.workspace,
258
+ next.localPath ?? null,
259
+ next.contentType ?? null,
260
+ next.sourceVersion ?? null,
261
+ next.sourceHash ?? oldRow.source_hash ?? null,
262
+ oldId,
263
+ ]);
264
+ return Math.max(Number(countRows[0]?.count ?? 0), 1);
265
+ });
266
+ }
193
267
  async search(options) {
194
268
  const embedding = (0, RdfVectorIndex_1.normalizeEmbedding)(options.embedding);
195
269
  if (embedding.length === 0) {
@@ -380,13 +454,25 @@ class PostgresRdfVectorIndex {
380
454
  await this.initializeSchema();
381
455
  }
382
456
  async initializeSchema() {
383
- if (this.usesPgVectorBackend()) {
384
- await this.requireExecutor().exec('CREATE EXTENSION IF NOT EXISTS vector');
385
- }
386
- await this.requireExecutor().exec(`
387
- CREATE TABLE IF NOT EXISTS rdf_vector_sources (
457
+ await this.requireExecutor().transaction(async (executor) => {
458
+ await executor.exec('SELECT pg_advisory_xact_lock($1)', [PG_RDF_VECTOR_SCHEMA_LOCK_KEY]);
459
+ if (await (0, PostgresRdfSchemaValidation_1.pgHasAnyDomainTable)(executor, PG_RDF_VECTOR_DOMAIN_TABLES)) {
460
+ await this.validateSchema(executor);
461
+ return;
462
+ }
463
+ const embeddingVectorColumnSql = this.usesPgVectorBackend() ? 'embedding_vector vector,' : '';
464
+ if (this.usesPgVectorBackend()) {
465
+ await executor.exec('CREATE EXTENSION IF NOT EXISTS vector');
466
+ }
467
+ await executor.exec(`
468
+ CREATE TABLE rdf_vector_metadata (
469
+ key TEXT PRIMARY KEY,
470
+ value TEXT NOT NULL
471
+ );
472
+
473
+ CREATE TABLE rdf_vector_sources (
388
474
  id BIGSERIAL PRIMARY KEY,
389
- source_key TEXT,
475
+ source_key TEXT NOT NULL UNIQUE,
390
476
  source TEXT NOT NULL UNIQUE,
391
477
  workspace TEXT NOT NULL,
392
478
  local_path TEXT,
@@ -396,7 +482,7 @@ class PostgresRdfVectorIndex {
396
482
  updated_at TIMESTAMPTZ NOT NULL DEFAULT now()
397
483
  );
398
484
 
399
- CREATE TABLE IF NOT EXISTS rdf_vector_chunks (
485
+ CREATE TABLE rdf_vector_chunks (
400
486
  id BIGSERIAL PRIMARY KEY,
401
487
  source_id BIGINT NOT NULL REFERENCES rdf_vector_sources(id) ON DELETE CASCADE,
402
488
  chunk_key TEXT NOT NULL,
@@ -417,6 +503,7 @@ class PostgresRdfVectorIndex {
417
503
  input_kind TEXT NOT NULL DEFAULT '',
418
504
  input_hash TEXT NOT NULL DEFAULT '',
419
505
  projection_policy_version TEXT NOT NULL DEFAULT '',
506
+ ${embeddingVectorColumnSql}
420
507
  updated_at TIMESTAMPTZ NOT NULL DEFAULT now(),
421
508
  UNIQUE (
422
509
  source_id,
@@ -430,7 +517,7 @@ class PostgresRdfVectorIndex {
430
517
  )
431
518
  );
432
519
 
433
- CREATE TABLE IF NOT EXISTS rdf_vector_components (
520
+ CREATE TABLE rdf_vector_components (
434
521
  chunk_id BIGINT NOT NULL REFERENCES rdf_vector_chunks(id) ON DELETE CASCADE,
435
522
  dimension INTEGER NOT NULL,
436
523
  value DOUBLE PRECISION NOT NULL,
@@ -438,28 +525,31 @@ class PostgresRdfVectorIndex {
438
525
  PRIMARY KEY (chunk_id, dimension)
439
526
  );
440
527
 
441
- CREATE INDEX IF NOT EXISTS rdf_vector_sources_workspace ON rdf_vector_sources(workspace);
442
- CREATE INDEX IF NOT EXISTS rdf_vector_sources_source ON rdf_vector_sources(source);
443
- CREATE INDEX IF NOT EXISTS rdf_vector_chunks_source ON rdf_vector_chunks(source_id, ordinal);
444
- CREATE INDEX IF NOT EXISTS rdf_vector_components_dimension ON rdf_vector_components(dimension, chunk_id);
445
- `);
446
- await this.ensureSourceKeyColumn();
447
- await this.ensureVectorIdentityColumns();
448
- if (this.usesPgVectorBackend()) {
449
- await this.ensurePgVectorColumn();
528
+ CREATE INDEX rdf_vector_sources_workspace ON rdf_vector_sources(workspace);
529
+ CREATE INDEX rdf_vector_sources_source ON rdf_vector_sources(source);
530
+ CREATE INDEX rdf_vector_chunks_source ON rdf_vector_chunks(source_id, ordinal);
531
+ CREATE INDEX rdf_vector_components_dimension ON rdf_vector_components(dimension, chunk_id);
532
+ CREATE INDEX rdf_vector_chunks_model_dimensions
533
+ ON rdf_vector_chunks(provider, model, model_version, input_kind, projection_policy_version, dimensions);
534
+
535
+ INSERT INTO rdf_vector_metadata (key, value)
536
+ VALUES ('schema_version', '${RdfVectorIndex_1.RDF_VECTOR_SCHEMA_VERSION}');
537
+ `);
538
+ });
539
+ }
540
+ async validateSchema(executor = this.requireExecutor()) {
541
+ for (const table of PG_RDF_VECTOR_DOMAIN_TABLES) {
542
+ await (0, PostgresRdfSchemaValidation_1.assertPgRequiredColumns)(executor, table, PG_RDF_VECTOR_REQUIRED_COLUMNS[table], 'vector');
450
543
  }
451
- else {
452
- await this.backfillVectorComponents();
544
+ const version = await this.readSchemaVersion(executor);
545
+ if (version !== RdfVectorIndex_1.RDF_VECTOR_SCHEMA_VERSION) {
546
+ throw new Error(`Unsupported PostgreSQL RDF vector index schema version: expected ${RdfVectorIndex_1.RDF_VECTOR_SCHEMA_VERSION}, got ${version}`);
547
+ }
548
+ await (0, PostgresRdfSchemaValidation_1.assertPgNotNullColumn)(executor, 'rdf_vector_sources', 'source_key', 'vector');
549
+ await (0, PostgresRdfSchemaValidation_1.assertPgUniqueColumn)(executor, 'rdf_vector_sources', 'source_key', 'vector');
550
+ if (this.usesPgVectorBackend()) {
551
+ await (0, PostgresRdfSchemaValidation_1.assertPgColumnType)(executor, 'rdf_vector_chunks', 'embedding_vector', 'vector', 'vector');
453
552
  }
454
- }
455
- async ensurePgVectorColumn() {
456
- await this.requireExecutor().exec('ALTER TABLE rdf_vector_chunks ADD COLUMN IF NOT EXISTS embedding_vector vector');
457
- await this.requireExecutor().exec(`
458
- UPDATE rdf_vector_chunks
459
- SET embedding_vector = embedding_json::vector
460
- WHERE embedding_vector IS NULL
461
- AND embedding_json IS NOT NULL
462
- `);
463
553
  }
464
554
  async ensurePgVectorSearchIndex(dimensions, metric) {
465
555
  if (!this.usesPgVectorBackend()) {
@@ -480,97 +570,12 @@ class PostgresRdfVectorIndex {
480
570
  `);
481
571
  this.ensuredPgVectorIndexes.add(key);
482
572
  }
483
- async ensureSourceKeyColumn() {
484
- await this.requireExecutor().exec('ALTER TABLE rdf_vector_sources ADD COLUMN IF NOT EXISTS source_key TEXT');
485
- await this.requireExecutor().exec('UPDATE rdf_vector_sources SET source_key = source WHERE source_key IS NULL OR source_key = \'\'');
486
- }
487
- async ensureVectorIdentityColumns() {
488
- await this.requireExecutor().exec(`
489
- ALTER TABLE rdf_vector_chunks ADD COLUMN IF NOT EXISTS provider TEXT NOT NULL DEFAULT '';
490
- ALTER TABLE rdf_vector_chunks ADD COLUMN IF NOT EXISTS model_version TEXT NOT NULL DEFAULT '';
491
- ALTER TABLE rdf_vector_chunks ADD COLUMN IF NOT EXISTS input_kind TEXT NOT NULL DEFAULT '';
492
- ALTER TABLE rdf_vector_chunks ADD COLUMN IF NOT EXISTS input_hash TEXT NOT NULL DEFAULT '';
493
- ALTER TABLE rdf_vector_chunks ADD COLUMN IF NOT EXISTS projection_policy_version TEXT NOT NULL DEFAULT '';
494
- ALTER TABLE rdf_vector_chunks ADD COLUMN IF NOT EXISTS summary_metadata TEXT;
495
- UPDATE rdf_vector_chunks
496
- SET
497
- provider = COALESCE(provider, ''),
498
- model_version = COALESCE(model_version, ''),
499
- input_kind = COALESCE(input_kind, ''),
500
- input_hash = COALESCE(input_hash, ''),
501
- projection_policy_version = COALESCE(projection_policy_version, '');
502
- `);
503
- await this.ensureVectorChunkIdentityUniqueConstraint();
504
- await this.requireExecutor().exec(`
505
- CREATE INDEX IF NOT EXISTS rdf_vector_chunks_model_dimensions
506
- ON rdf_vector_chunks(provider, model, model_version, input_kind, projection_policy_version, dimensions);
507
- `);
508
- }
509
- async ensureVectorChunkIdentityUniqueConstraint() {
510
- const rows = await this.requireExecutor().query(`
511
- SELECT
512
- constraint_info.conname,
513
- string_agg(attribute.attname, ',' ORDER BY constraint_key.ordinality) AS columns
514
- FROM pg_constraint constraint_info
515
- JOIN unnest(constraint_info.conkey) WITH ORDINALITY AS constraint_key(attnum, ordinality) ON TRUE
516
- JOIN pg_attribute attribute
517
- ON attribute.attrelid = constraint_info.conrelid
518
- AND attribute.attnum = constraint_key.attnum
519
- WHERE constraint_info.conrelid = 'rdf_vector_chunks'::regclass
520
- AND constraint_info.contype = 'u'
521
- GROUP BY constraint_info.conname
522
- `);
523
- let hasIdentityUnique = false;
524
- for (const row of rows) {
525
- if (row.columns === 'source_id,chunk_key') {
526
- await this.requireExecutor().exec(`ALTER TABLE rdf_vector_chunks DROP CONSTRAINT ${quotePgIdentifier(row.conname)}`);
527
- }
528
- else if (row.columns === 'source_id,chunk_key,provider,model,model_version,input_kind,projection_policy_version,input_hash') {
529
- hasIdentityUnique = true;
530
- }
531
- }
532
- if (hasIdentityUnique) {
533
- return;
534
- }
535
- await this.requireExecutor().exec(`
536
- CREATE UNIQUE INDEX IF NOT EXISTS rdf_vector_chunks_identity_unique
537
- ON rdf_vector_chunks (
538
- source_id,
539
- chunk_key,
540
- provider,
541
- model,
542
- model_version,
543
- input_kind,
544
- projection_policy_version,
545
- input_hash
546
- )
547
- `);
548
- }
549
- async backfillVectorComponents() {
550
- const rows = await this.requireExecutor().query(`
551
- SELECT
552
- chunk.id,
553
- chunk.dimensions,
554
- chunk.embedding_json,
555
- COUNT(component.dimension) AS component_count
556
- FROM rdf_vector_chunks chunk
557
- LEFT JOIN rdf_vector_components component ON component.chunk_id = chunk.id
558
- WHERE chunk.dimensions > 0
559
- GROUP BY chunk.id
560
- HAVING COUNT(component.dimension) <> chunk.dimensions
561
- `);
562
- if (rows.length === 0) {
563
- return;
564
- }
565
- await this.requireExecutor().transaction(async (tx) => {
566
- for (const row of rows) {
567
- const chunkId = Number(row.id);
568
- await tx.exec('DELETE FROM rdf_vector_components WHERE chunk_id = $1', [chunkId]);
569
- await insertVectorComponents(tx, chunkId, (0, RdfVectorIndex_1.parseEmbedding)(row.embedding_json));
570
- }
571
- });
572
- }
573
573
  async upsertSource(tx, source) {
574
+ const existing = await tx.query('SELECT * FROM rdf_vector_sources WHERE source = $1', [source.source]);
575
+ if (existing[0] && source.sourceKey && existing[0].source_key !== source.sourceKey) {
576
+ throw new Error(`RDF vector source key mismatch for source ${source.source}: expected ${existing[0].source_key}, got ${source.sourceKey}`);
577
+ }
578
+ const sourceKey = existing[0]?.source_key ?? source.sourceKey ?? source.source;
574
579
  const rows = await tx.query(`
575
580
  INSERT INTO rdf_vector_sources (
576
581
  source_key,
@@ -585,7 +590,6 @@ class PostgresRdfVectorIndex {
585
590
  VALUES ($1, $2, $3, $4, $5, $6, $7, now())
586
591
  ON CONFLICT (source)
587
592
  DO UPDATE SET
588
- source_key = COALESCE(EXCLUDED.source_key, rdf_vector_sources.source_key, EXCLUDED.source),
589
593
  workspace = EXCLUDED.workspace,
590
594
  local_path = EXCLUDED.local_path,
591
595
  content_type = EXCLUDED.content_type,
@@ -594,7 +598,7 @@ class PostgresRdfVectorIndex {
594
598
  updated_at = EXCLUDED.updated_at
595
599
  RETURNING id
596
600
  `, [
597
- source.sourceKey ?? source.source,
601
+ sourceKey,
598
602
  source.source,
599
603
  source.workspace,
600
604
  source.localPath ?? null,
@@ -291,6 +291,14 @@
291
291
  "@id": "undefineds:dist/storage/rdf/PostgresRdfVectorIndex.jsonld#PostgresRdfVectorIndex__member_clear",
292
292
  "memberFieldName": "clear"
293
293
  },
294
+ {
295
+ "@id": "undefineds:dist/storage/rdf/PostgresRdfVectorIndex.jsonld#PostgresRdfVectorIndex__member_schemaVersion",
296
+ "memberFieldName": "schemaVersion"
297
+ },
298
+ {
299
+ "@id": "undefineds:dist/storage/rdf/PostgresRdfVectorIndex.jsonld#PostgresRdfVectorIndex__member_readSchemaVersion",
300
+ "memberFieldName": "readSchemaVersion"
301
+ },
294
302
  {
295
303
  "@id": "undefineds:dist/storage/rdf/PostgresRdfVectorIndex.jsonld#PostgresRdfVectorIndex__member_indexVector",
296
304
  "memberFieldName": "indexVector"
@@ -299,6 +307,10 @@
299
307
  "@id": "undefineds:dist/storage/rdf/PostgresRdfVectorIndex.jsonld#PostgresRdfVectorIndex__member_deleteSource",
300
308
  "memberFieldName": "deleteSource"
301
309
  },
310
+ {
311
+ "@id": "undefineds:dist/storage/rdf/PostgresRdfVectorIndex.jsonld#PostgresRdfVectorIndex__member_moveSource",
312
+ "memberFieldName": "moveSource"
313
+ },
302
314
  {
303
315
  "@id": "undefineds:dist/storage/rdf/PostgresRdfVectorIndex.jsonld#PostgresRdfVectorIndex__member_search",
304
316
  "memberFieldName": "search"
@@ -328,29 +340,13 @@
328
340
  "memberFieldName": "initializeSchema"
329
341
  },
330
342
  {
331
- "@id": "undefineds:dist/storage/rdf/PostgresRdfVectorIndex.jsonld#PostgresRdfVectorIndex__member_ensurePgVectorColumn",
332
- "memberFieldName": "ensurePgVectorColumn"
343
+ "@id": "undefineds:dist/storage/rdf/PostgresRdfVectorIndex.jsonld#PostgresRdfVectorIndex__member_validateSchema",
344
+ "memberFieldName": "validateSchema"
333
345
  },
334
346
  {
335
347
  "@id": "undefineds:dist/storage/rdf/PostgresRdfVectorIndex.jsonld#PostgresRdfVectorIndex__member_ensurePgVectorSearchIndex",
336
348
  "memberFieldName": "ensurePgVectorSearchIndex"
337
349
  },
338
- {
339
- "@id": "undefineds:dist/storage/rdf/PostgresRdfVectorIndex.jsonld#PostgresRdfVectorIndex__member_ensureSourceKeyColumn",
340
- "memberFieldName": "ensureSourceKeyColumn"
341
- },
342
- {
343
- "@id": "undefineds:dist/storage/rdf/PostgresRdfVectorIndex.jsonld#PostgresRdfVectorIndex__member_ensureVectorIdentityColumns",
344
- "memberFieldName": "ensureVectorIdentityColumns"
345
- },
346
- {
347
- "@id": "undefineds:dist/storage/rdf/PostgresRdfVectorIndex.jsonld#PostgresRdfVectorIndex__member_ensureVectorChunkIdentityUniqueConstraint",
348
- "memberFieldName": "ensureVectorChunkIdentityUniqueConstraint"
349
- },
350
- {
351
- "@id": "undefineds:dist/storage/rdf/PostgresRdfVectorIndex.jsonld#PostgresRdfVectorIndex__member_backfillVectorComponents",
352
- "memberFieldName": "backfillVectorComponents"
353
- },
354
350
  {
355
351
  "@id": "undefineds:dist/storage/rdf/PostgresRdfVectorIndex.jsonld#PostgresRdfVectorIndex__member_upsertSource",
356
352
  "memberFieldName": "upsertSource"
@@ -0,0 +1,35 @@
1
+ import type { AsyncIterator } from 'asynciterator';
2
+ import type { Quad, Term, Variable } from '@rdfjs/types';
3
+ import type { SparqlEngine, SparqlQueryOptions, SparqlVoidOptions } from '../sparql/SubgraphQueryEngine';
4
+ import type { RdfAccessScope } from './RdfAccessScope';
5
+ import type { RdfEngineLike } from './types';
6
+ type QleverBindingsStream = AsyncIterator<QleverBindings> & {
7
+ metadata(): Promise<{
8
+ variables: Variable[];
9
+ }>;
10
+ };
11
+ /**
12
+ * Thin CSS SparqlEngine adapter over the shared native QLever envelope.
13
+ *
14
+ * It performs product-boundary validation and result decoding only. It has no
15
+ * alternate evaluator, planner, update compiler, or secondary execution path.
16
+ */
17
+ export declare class QleverSparqlEngine implements SparqlEngine {
18
+ private readonly rdfEngine;
19
+ constructor(rdfEngine: RdfEngineLike);
20
+ queryBindings(query: string, basePath: string, accessScope?: RdfAccessScope, options?: SparqlQueryOptions): Promise<QleverBindingsStream>;
21
+ queryBoolean(query: string, basePath: string, accessScope?: RdfAccessScope, options?: SparqlQueryOptions): Promise<boolean>;
22
+ queryQuads(query: string, basePath: string, accessScope?: RdfAccessScope, options?: SparqlQueryOptions): Promise<AsyncIterator<Quad>>;
23
+ queryVoid(_query: string, _basePath: string, _accessScope?: RdfAccessScope, _options?: SparqlVoidOptions): Promise<void>;
24
+ constructGraph(graph: string, basePath: string, accessScope?: RdfAccessScope): Promise<AsyncIterator<Quad>>;
25
+ listGraphs(basePath: string, accessScope?: RdfAccessScope): Promise<Set<string>>;
26
+ close(): Promise<void>;
27
+ private execute;
28
+ }
29
+ declare class QleverBindings extends Map<Variable, Term> {
30
+ private readonly byName;
31
+ constructor(entries: [Variable, Term][]);
32
+ get(key: string | Variable): Term | undefined;
33
+ has(key: string | Variable): boolean;
34
+ }
35
+ export {};
@@ -0,0 +1,185 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.QleverSparqlEngine = void 0;
4
+ const asynciterator_1 = require("asynciterator");
5
+ const n3_1 = require("n3");
6
+ const rdf_data_factory_1 = require("rdf-data-factory");
7
+ const RdfSparqlBoundary_1 = require("./RdfSparqlBoundary");
8
+ const RdfSparqlSerialization_1 = require("./RdfSparqlSerialization");
9
+ const rdfDataFactory = new rdf_data_factory_1.DataFactory();
10
+ const XPOD_RDF_STATUS_CANCELLED = 3;
11
+ /**
12
+ * Thin CSS SparqlEngine adapter over the shared native QLever envelope.
13
+ *
14
+ * It performs product-boundary validation and result decoding only. It has no
15
+ * alternate evaluator, planner, update compiler, or secondary execution path.
16
+ */
17
+ class QleverSparqlEngine {
18
+ constructor(rdfEngine) {
19
+ this.rdfEngine = rdfEngine;
20
+ if (typeof rdfEngine.sparqlQuery !== 'function') {
21
+ throw new Error('QleverSparqlEngine requires an RdfEngine with native SPARQL support');
22
+ }
23
+ }
24
+ async queryBindings(query, basePath, accessScope, options) {
25
+ const result = await this.execute(query, basePath, 'queryBindings', 'application/sparql-results+json', accessScope, options);
26
+ const payload = parseSparqlJson(result);
27
+ if (!payload.results) {
28
+ throw new RdfSparqlBoundary_1.NativeSparqlExecutionError('QLever SELECT result does not contain bindings');
29
+ }
30
+ const variables = payload.head?.vars ?? inferVariableNames(payload.results.bindings ?? []);
31
+ const rows = (payload.results.bindings ?? []).map((row) => toBindings(row, variables));
32
+ const iterator = new asynciterator_1.ArrayIterator(rows);
33
+ iterator.metadata = async () => ({
34
+ variables: variables.map((name) => rdfDataFactory.variable(name)),
35
+ });
36
+ return iterator;
37
+ }
38
+ async queryBoolean(query, basePath, accessScope, options) {
39
+ const result = await this.execute(query, basePath, 'queryBoolean', 'application/sparql-results+json', accessScope, options);
40
+ const payload = parseSparqlJson(result);
41
+ if (typeof payload.boolean !== 'boolean') {
42
+ throw new RdfSparqlBoundary_1.NativeSparqlExecutionError('QLever ASK result does not contain a boolean');
43
+ }
44
+ return payload.boolean;
45
+ }
46
+ async queryQuads(query, basePath, accessScope, options) {
47
+ const result = await this.execute(query, basePath, 'queryQuads', 'application/n-quads', accessScope, options);
48
+ return new asynciterator_1.ArrayIterator(parseGraph(result));
49
+ }
50
+ async queryVoid(_query, _basePath, _accessScope, _options) {
51
+ throw new RdfSparqlBoundary_1.UnsupportedSparqlQueryError('Direct SPARQL UPDATE execution is disabled; use the Pod update authority prepared-delta path', {
52
+ code: 'rdf.sparql.update_authority_required',
53
+ capability: 'sparql.update.authority',
54
+ hint: 'Send the update through the Pod SPARQL HTTP endpoint so the authority can prepare and atomically commit source-file changes.',
55
+ });
56
+ }
57
+ async constructGraph(graph, basePath, accessScope) {
58
+ return this.queryQuads(`CONSTRUCT { ?s ?p ?o } WHERE { GRAPH ${(0, RdfSparqlSerialization_1.serializeSparqlIri)(graph)} { ?s ?p ?o } }`, basePath, accessScope);
59
+ }
60
+ async listGraphs(basePath, accessScope) {
61
+ const stream = await this.queryBindings('SELECT DISTINCT ?g WHERE { GRAPH ?g { ?s ?p ?o } }', basePath, accessScope);
62
+ const graphs = new Set();
63
+ for await (const binding of stream) {
64
+ const graph = binding.get('g');
65
+ if (graph?.termType === 'NamedNode') {
66
+ graphs.add(graph.value);
67
+ }
68
+ }
69
+ return graphs;
70
+ }
71
+ async close() {
72
+ await this.rdfEngine.close();
73
+ }
74
+ async execute(query, basePath, operation, acceptMediaType, accessScope, options) {
75
+ (0, RdfSparqlBoundary_1.assertServerOwnedNativeSparqlQuery)(query, basePath);
76
+ const result = await this.rdfEngine.sparqlQuery(query, {
77
+ basePath,
78
+ operation,
79
+ acceptMediaType,
80
+ ...(accessScope ? { accessScope } : {}),
81
+ ...(options?.sourceUri === undefined ? {} : { sourceUri: options.sourceUri }),
82
+ ...(options?.defaultDataset === undefined ? {} : { defaultDataset: options.defaultDataset }),
83
+ ...(options?.timeoutMs === undefined ? {} : { timeoutMs: options.timeoutMs }),
84
+ ...(options?.signal ? { signal: options.signal } : {}),
85
+ });
86
+ if (result.status === 'ok') {
87
+ return result;
88
+ }
89
+ if (result.status === 'unsupported') {
90
+ throw new RdfSparqlBoundary_1.UnsupportedSparqlQueryError(result.error || 'QLever reported the SPARQL query as unsupported', { capability: 'sparql.qlever' });
91
+ }
92
+ if (options?.timeoutMs !== undefined && result.queryStatus === XPOD_RDF_STATUS_CANCELLED) {
93
+ throw new RdfSparqlBoundary_1.NativeSparqlTimeoutError(options.timeoutMs, result.error);
94
+ }
95
+ throw new RdfSparqlBoundary_1.NativeSparqlExecutionError(result.error || 'QLever returned an error result');
96
+ }
97
+ }
98
+ exports.QleverSparqlEngine = QleverSparqlEngine;
99
+ function parseSparqlJson(result) {
100
+ try {
101
+ return JSON.parse(result.body);
102
+ }
103
+ catch (error) {
104
+ throw new RdfSparqlBoundary_1.NativeSparqlExecutionError(`QLever returned invalid SPARQL JSON: ${error instanceof Error ? error.message : String(error)}`);
105
+ }
106
+ }
107
+ function parseGraph(result) {
108
+ const mediaType = result.mediaType.toLowerCase();
109
+ try {
110
+ return new n3_1.Parser({
111
+ format: mediaType.includes('n-quads')
112
+ ? 'N-Quads'
113
+ : mediaType.includes('turtle')
114
+ ? 'Turtle'
115
+ : 'N-Triples',
116
+ }).parse(result.body);
117
+ }
118
+ catch (error) {
119
+ throw new RdfSparqlBoundary_1.NativeSparqlExecutionError(`QLever returned an invalid graph result: ${error instanceof Error ? error.message : String(error)}`);
120
+ }
121
+ }
122
+ function toBindings(row, variables) {
123
+ const entries = [];
124
+ for (const variable of variables) {
125
+ const term = sparqlJsonTerm(row[variable]);
126
+ if (term) {
127
+ entries.push([rdfDataFactory.variable(variable), term]);
128
+ }
129
+ }
130
+ return new QleverBindings(entries);
131
+ }
132
+ function inferVariableNames(rows) {
133
+ const names = new Set();
134
+ for (const row of rows) {
135
+ for (const name of Object.keys(row)) {
136
+ names.add(name);
137
+ }
138
+ }
139
+ return [...names];
140
+ }
141
+ function sparqlJsonTerm(value) {
142
+ if (!value || typeof value !== 'object') {
143
+ return undefined;
144
+ }
145
+ const term = value;
146
+ if (typeof term.value !== 'string') {
147
+ return undefined;
148
+ }
149
+ if (term.type === 'uri') {
150
+ return rdfDataFactory.namedNode(term.value);
151
+ }
152
+ if (term.type === 'bnode') {
153
+ return rdfDataFactory.blankNode(term.value);
154
+ }
155
+ if (term.type === 'literal' || term.type === 'typed-literal') {
156
+ if (term['xml:lang']) {
157
+ return rdfDataFactory.literal(term.value, term['xml:lang']);
158
+ }
159
+ if (term.datatype) {
160
+ return rdfDataFactory.literal(term.value, rdfDataFactory.namedNode(term.datatype));
161
+ }
162
+ return rdfDataFactory.literal(term.value);
163
+ }
164
+ return undefined;
165
+ }
166
+ class QleverBindings extends Map {
167
+ constructor(entries) {
168
+ super(entries);
169
+ this.byName = new Map();
170
+ for (const [variable, term] of entries) {
171
+ this.byName.set(variable.value, term);
172
+ }
173
+ }
174
+ get(key) {
175
+ return typeof key === 'string'
176
+ ? this.byName.get(key)
177
+ : this.byName.get(key.value) ?? super.get(key);
178
+ }
179
+ has(key) {
180
+ return typeof key === 'string'
181
+ ? this.byName.has(key)
182
+ : this.byName.has(key.value) || super.has(key);
183
+ }
184
+ }
185
+ //# sourceMappingURL=QleverSparqlEngine.js.map
@@ -0,0 +1,70 @@
1
+ {
2
+ "@context": [
3
+ "https://linkedsoftwaredependencies.org/bundles/npm/@undefineds.co/xpod/^0.0.0/components/context.jsonld"
4
+ ],
5
+ "@id": "npmd:@undefineds.co/xpod",
6
+ "components": [
7
+ {
8
+ "@id": "undefineds:dist/storage/rdf/QleverSparqlEngine.jsonld#QleverSparqlEngine",
9
+ "@type": "Class",
10
+ "requireElement": "QleverSparqlEngine",
11
+ "extends": [
12
+ "undefineds:dist/storage/sparql/SubgraphQueryEngine.jsonld#SparqlEngine"
13
+ ],
14
+ "comment": "Thin CSS SparqlEngine adapter over the shared native QLever envelope. It performs product-boundary validation and result decoding only. It has no alternate evaluator, planner, update compiler, or secondary execution path.",
15
+ "parameters": [
16
+ {
17
+ "@id": "undefineds:dist/storage/rdf/QleverSparqlEngine.jsonld#QleverSparqlEngine_rdfEngine",
18
+ "range": "undefineds:dist/storage/rdf/types.jsonld#RdfEngineLike"
19
+ }
20
+ ],
21
+ "memberFields": [
22
+ {
23
+ "@id": "undefineds:dist/storage/rdf/QleverSparqlEngine.jsonld#QleverSparqlEngine__member_rdfEngine",
24
+ "memberFieldName": "rdfEngine"
25
+ },
26
+ {
27
+ "@id": "undefineds:dist/storage/rdf/QleverSparqlEngine.jsonld#QleverSparqlEngine__member_constructor",
28
+ "memberFieldName": "constructor"
29
+ },
30
+ {
31
+ "@id": "undefineds:dist/storage/rdf/QleverSparqlEngine.jsonld#QleverSparqlEngine__member_queryBindings",
32
+ "memberFieldName": "queryBindings"
33
+ },
34
+ {
35
+ "@id": "undefineds:dist/storage/rdf/QleverSparqlEngine.jsonld#QleverSparqlEngine__member_queryBoolean",
36
+ "memberFieldName": "queryBoolean"
37
+ },
38
+ {
39
+ "@id": "undefineds:dist/storage/rdf/QleverSparqlEngine.jsonld#QleverSparqlEngine__member_queryQuads",
40
+ "memberFieldName": "queryQuads"
41
+ },
42
+ {
43
+ "@id": "undefineds:dist/storage/rdf/QleverSparqlEngine.jsonld#QleverSparqlEngine__member_queryVoid",
44
+ "memberFieldName": "queryVoid"
45
+ },
46
+ {
47
+ "@id": "undefineds:dist/storage/rdf/QleverSparqlEngine.jsonld#QleverSparqlEngine__member_constructGraph",
48
+ "memberFieldName": "constructGraph"
49
+ },
50
+ {
51
+ "@id": "undefineds:dist/storage/rdf/QleverSparqlEngine.jsonld#QleverSparqlEngine__member_listGraphs",
52
+ "memberFieldName": "listGraphs"
53
+ },
54
+ {
55
+ "@id": "undefineds:dist/storage/rdf/QleverSparqlEngine.jsonld#QleverSparqlEngine__member_close",
56
+ "memberFieldName": "close"
57
+ },
58
+ {
59
+ "@id": "undefineds:dist/storage/rdf/QleverSparqlEngine.jsonld#QleverSparqlEngine__member_execute",
60
+ "memberFieldName": "execute"
61
+ }
62
+ ],
63
+ "constructorArguments": [
64
+ {
65
+ "@id": "undefineds:dist/storage/rdf/QleverSparqlEngine.jsonld#QleverSparqlEngine_rdfEngine"
66
+ }
67
+ ]
68
+ }
69
+ ]
70
+ }