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

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 +19 -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
@@ -0,0 +1,686 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.QLEVER_ACCEPTANCE_GATE_ENV = void 0;
4
+ exports.qleverAcceptanceGateEnabled = qleverAcceptanceGateEnabled;
5
+ exports.requireAcceptanceEnv = requireAcceptanceEnv;
6
+ exports.createAcceptanceTempDir = createAcceptanceTempDir;
7
+ exports.runLocalSearchFusionAcceptance = runLocalSearchFusionAcceptance;
8
+ exports.createLocalNativeSearchEngine = createLocalNativeSearchEngine;
9
+ exports.createPostgresSearchEngine = createPostgresSearchEngine;
10
+ exports.runPostgresNativeSearchFusionAcceptance = runPostgresNativeSearchFusionAcceptance;
11
+ exports.runPostgresPublicSearchFusionAcceptance = runPostgresPublicSearchFusionAcceptance;
12
+ exports.runNativeSearchFusionAcceptance = runNativeSearchFusionAcceptance;
13
+ exports.runPublicSearchFusionAcceptance = runPublicSearchFusionAcceptance;
14
+ const node_crypto_1 = require("node:crypto");
15
+ const node_fs_1 = require("node:fs");
16
+ const node_path_1 = require("node:path");
17
+ const n3_1 = require("n3");
18
+ const pg_1 = require("pg");
19
+ const LocalQleverNativeSparqlClient_1 = require("../storage/rdf/LocalQleverNativeSparqlClient");
20
+ const PostgresRdfEngine_1 = require("../storage/rdf/PostgresRdfEngine");
21
+ const SolidRdfEngine_1 = require("../storage/rdf/SolidRdfEngine");
22
+ const RdfQueryExecutor_1 = require("../storage/rdf/RdfQueryExecutor");
23
+ const { namedNode, quad } = n3_1.DataFactory;
24
+ exports.QLEVER_ACCEPTANCE_GATE_ENV = 'XPOD_QLEVER_ACCEPTANCE_GATE';
25
+ function qleverAcceptanceGateEnabled() {
26
+ return process.env[exports.QLEVER_ACCEPTANCE_GATE_ENV] === '1';
27
+ }
28
+ function requireAcceptanceEnv(name) {
29
+ const value = process.env[name];
30
+ if (!value) {
31
+ throw new Error(`${name} is required when ${exports.QLEVER_ACCEPTANCE_GATE_ENV}=1`);
32
+ }
33
+ return value;
34
+ }
35
+ function createAcceptanceTempDir(name) {
36
+ const dir = (0, node_path_1.join)(process.cwd(), '.test-data', `${name}-${process.pid}`);
37
+ (0, node_fs_1.rmSync)(dir, { recursive: true, force: true });
38
+ (0, node_fs_1.mkdirSync)(dir, { recursive: true });
39
+ return dir;
40
+ }
41
+ async function runLocalSearchFusionAcceptance(engine = new SolidRdfEngine_1.SolidRdfEngine({
42
+ index: { path: ':memory:' },
43
+ textIndex: { path: ':memory:' },
44
+ vectorIndex: { path: ':memory:' },
45
+ autoOpen: true,
46
+ })) {
47
+ const oldSource = namedNode('https://pod.example/alice/projects/demo/old-card.md');
48
+ const movedSource = namedNode('https://pod.example/alice/projects/demo/moved-card.md');
49
+ const deniedSource = namedNode('https://pod.example/alice/projects/demo/private-card.md');
50
+ const docType = namedNode('https://schema.org/DigitalDocument');
51
+ const stableSourceKey = 'entity:card:fusion-stable';
52
+ const stablePointKey = 'point:intro';
53
+ try {
54
+ engine.put([
55
+ quad(movedSource, namedNode('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), docType, movedSource),
56
+ quad(deniedSource, namedNode('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), docType, deniedSource),
57
+ ]);
58
+ engine.indexTextSource({
59
+ sourceKey: stableSourceKey,
60
+ source: oldSource.value,
61
+ workspace: 'https://pod.example/alice/projects/demo/',
62
+ localPath: 'old-card.md',
63
+ contentType: 'text/markdown',
64
+ sourceHash: 'sha256:stable-card',
65
+ }, 'alpha late vector canonical card', [
66
+ {
67
+ chunkKey: stablePointKey,
68
+ retrievalPointKey: stablePointKey,
69
+ retrievalKind: 'file-chunk',
70
+ ordinal: 0,
71
+ level: 1,
72
+ content: 'alpha late vector canonical card',
73
+ startOffset: 0,
74
+ endOffset: 32,
75
+ },
76
+ ]);
77
+ const beforeVector = engine.query({
78
+ patterns: [],
79
+ textSearch: [{
80
+ query: 'alpha late',
81
+ scope: { workspace: 'https://pod.example/alice/projects/demo/' },
82
+ source: 'source',
83
+ sourceKey: 'sourceKey',
84
+ retrievalPoint: 'retrievalPointKey',
85
+ content: 'textSnippet',
86
+ }],
87
+ vectorSearch: [{
88
+ embedding: [1, 0],
89
+ vectorModel: 'acceptance-embed',
90
+ scope: { workspace: 'https://pod.example/alice/projects/demo/' },
91
+ source: 'vectorSource',
92
+ sourceKey: 'sourceKey',
93
+ retrievalPoint: 'retrievalPointKey',
94
+ content: 'vectorSnippet',
95
+ }],
96
+ select: ['sourceKey', 'retrievalPointKey'],
97
+ });
98
+ if (beforeVector.bindings.length !== 0) {
99
+ throw new Error(`late vector invariant failed: expected no fused bindings before vector indexing, got ${beforeVector.bindings.length}`);
100
+ }
101
+ engine.indexVectorSource({
102
+ sourceKey: stableSourceKey,
103
+ source: oldSource.value,
104
+ workspace: 'https://pod.example/alice/projects/demo/',
105
+ localPath: 'old-card.md',
106
+ contentType: 'text/markdown',
107
+ sourceHash: 'sha256:stable-card',
108
+ }, [{
109
+ chunkKey: stablePointKey,
110
+ ordinal: 0,
111
+ level: 1,
112
+ content: 'alpha late vector canonical card',
113
+ startOffset: 0,
114
+ endOffset: 32,
115
+ embedding: [1, 0],
116
+ model: 'acceptance-embed',
117
+ }]);
118
+ engine.indexTextSource({
119
+ sourceKey: 'entity:card:denied',
120
+ source: deniedSource.value,
121
+ workspace: 'https://pod.example/alice/projects/demo/',
122
+ localPath: 'private-card.md',
123
+ contentType: 'text/markdown',
124
+ }, 'alpha late vector canonical card', [{
125
+ chunkKey: 'point:denied',
126
+ retrievalPointKey: 'point:denied',
127
+ retrievalKind: 'file-chunk',
128
+ ordinal: 0,
129
+ level: 1,
130
+ content: 'alpha late vector canonical card',
131
+ startOffset: 0,
132
+ endOffset: 32,
133
+ }]);
134
+ engine.indexVectorSource({
135
+ sourceKey: 'entity:card:denied',
136
+ source: deniedSource.value,
137
+ workspace: 'https://pod.example/alice/projects/demo/',
138
+ localPath: 'private-card.md',
139
+ contentType: 'text/markdown',
140
+ }, [{
141
+ chunkKey: 'point:denied',
142
+ ordinal: 0,
143
+ level: 1,
144
+ content: 'alpha late vector canonical card',
145
+ startOffset: 0,
146
+ endOffset: 32,
147
+ embedding: [1, 0],
148
+ model: 'acceptance-embed',
149
+ }]);
150
+ engine.moveTextSource(oldSource.value, {
151
+ source: movedSource.value,
152
+ workspace: 'https://pod.example/alice/projects/demo/',
153
+ localPath: 'moved-card.md',
154
+ contentType: 'text/markdown',
155
+ });
156
+ engine.moveVectorSource(oldSource.value, {
157
+ source: movedSource.value,
158
+ workspace: 'https://pod.example/alice/projects/demo/',
159
+ localPath: 'moved-card.md',
160
+ contentType: 'text/markdown',
161
+ });
162
+ const result = engine.query({
163
+ textSearch: [{
164
+ query: 'alpha late',
165
+ scope: {
166
+ workspace: 'https://pod.example/alice/projects/demo/',
167
+ deniedSources: [deniedSource.value],
168
+ },
169
+ source: 'source',
170
+ sourceKey: 'sourceKey',
171
+ retrievalPoint: 'retrievalPointKey',
172
+ content: 'textSnippet',
173
+ }],
174
+ vectorSearch: [{
175
+ embedding: [1, 0],
176
+ vectorModel: 'acceptance-embed',
177
+ scope: {
178
+ workspace: 'https://pod.example/alice/projects/demo/',
179
+ deniedSources: [deniedSource.value],
180
+ },
181
+ source: 'vectorSource',
182
+ sourceKey: 'sourceKey',
183
+ retrievalPoint: 'retrievalPointKey',
184
+ content: 'vectorSnippet',
185
+ }],
186
+ patterns: [{
187
+ graph: (0, RdfQueryExecutor_1.variable)('source'),
188
+ subject: (0, RdfQueryExecutor_1.variable)('source'),
189
+ predicate: namedNode('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'),
190
+ object: docType,
191
+ }],
192
+ select: ['source', 'sourceKey', 'retrievalPointKey', 'textSnippet', 'vectorSnippet'],
193
+ orderBy: [{ variable: 'source' }],
194
+ });
195
+ return result.bindings.map((binding) => ({
196
+ source: binding.source.value,
197
+ sourceKey: binding.sourceKey.value,
198
+ retrievalPointKey: binding.retrievalPointKey.value,
199
+ textSnippet: binding.textSnippet.value,
200
+ vectorSnippet: binding.vectorSnippet.value,
201
+ }));
202
+ }
203
+ finally {
204
+ await engine.close();
205
+ }
206
+ }
207
+ function createLocalNativeSearchEngine(runtimeCommand, databasePath) {
208
+ return new SolidRdfEngine_1.SolidRdfEngine({
209
+ index: { path: databasePath },
210
+ textIndex: { path: databasePath },
211
+ vectorIndex: { path: databasePath },
212
+ nativeSparqlClient: new LocalQleverNativeSparqlClient_1.LocalQleverNativeSparqlClient({
213
+ command: runtimeCommand,
214
+ args: ['--sqlite-path', databasePath],
215
+ }),
216
+ });
217
+ }
218
+ function createPostgresSearchEngine(connectionString, nativeSparqlEnabled) {
219
+ return new PostgresRdfEngine_1.PostgresRdfEngine({
220
+ driver: 'pg',
221
+ connectionString,
222
+ nativeSparqlEnabled,
223
+ rdfAccelerationProfile: 'pg-hot-operators',
224
+ maintenanceIntervalMs: 0,
225
+ textIndex: { driver: 'pg', connectionString },
226
+ vectorIndex: { driver: 'pg', connectionString },
227
+ });
228
+ }
229
+ async function runPostgresNativeSearchFusionAcceptance(connectionString) {
230
+ const schema = `xpod_search_${process.pid}_${(0, node_crypto_1.randomUUID)().replaceAll('-', '')}`;
231
+ const admin = new pg_1.Pool({ connectionString, max: 1 });
232
+ try {
233
+ await admin.query(`CREATE SCHEMA ${quoteIdentifier(schema)}`);
234
+ return await runNativeSearchFusionAcceptance(createPostgresSearchEngine(connectionStringWithSearchPath(connectionString, schema), true));
235
+ }
236
+ finally {
237
+ await admin.query(`DROP SCHEMA IF EXISTS ${quoteIdentifier(schema)} CASCADE`);
238
+ await admin.end();
239
+ }
240
+ }
241
+ async function runPostgresPublicSearchFusionAcceptance(connectionString) {
242
+ const schema = `xpod_search_${process.pid}_${(0, node_crypto_1.randomUUID)().replaceAll('-', '')}`;
243
+ const admin = new pg_1.Pool({ connectionString, max: 1 });
244
+ try {
245
+ await admin.query(`CREATE SCHEMA ${quoteIdentifier(schema)}`);
246
+ return await runPublicSearchFusionAcceptance(createPostgresSearchEngine(connectionStringWithSearchPath(connectionString, schema), false));
247
+ }
248
+ finally {
249
+ await admin.query(`DROP SCHEMA IF EXISTS ${quoteIdentifier(schema)} CASCADE`);
250
+ await admin.end();
251
+ }
252
+ }
253
+ async function runNativeSearchFusionAcceptance(engine, options = {}) {
254
+ const fixture = searchConformanceFixture(options);
255
+ const { workspace, oldSource, movedSource, deniedSource, stableSourceKey, stablePointKey, content, } = fixture;
256
+ await engine.open();
257
+ try {
258
+ await seedSearchConformanceBase(engine, fixture);
259
+ const textOnlyBeforeVector = await nativeBindings(engine, nativeTextOnlyQuery(), {
260
+ basePath: workspace,
261
+ operation: 'queryBindings',
262
+ acceptMediaType: 'application/sparql-results+json',
263
+ accessScope: resolvedReadScope(workspace),
264
+ });
265
+ const fusedBeforeVector = await nativeBindings(engine, nativeFusedQuery(), {
266
+ basePath: workspace,
267
+ operation: 'queryBindings',
268
+ acceptMediaType: 'application/sparql-results+json',
269
+ accessScope: resolvedReadScope(workspace),
270
+ vectorQuery: vectorQuery(),
271
+ });
272
+ await requireIndexVector(engine, {
273
+ ...sourceInput(oldSource, workspace, 'old-card.md'),
274
+ sourceKey: stableSourceKey,
275
+ }, content, stablePointKey);
276
+ const fusedAfterVector = await nativeBindings(engine, nativeFusedQuery(), {
277
+ basePath: workspace,
278
+ operation: 'queryBindings',
279
+ acceptMediaType: 'application/sparql-results+json',
280
+ accessScope: resolvedReadScope(workspace, [deniedSource]),
281
+ vectorQuery: vectorQuery(),
282
+ });
283
+ const fusedAfterVectorExact = await nativeBindings(engine, nativeFusedQuery(), {
284
+ basePath: workspace,
285
+ sourceUri: oldSource,
286
+ operation: 'queryBindings',
287
+ acceptMediaType: 'application/sparql-results+json',
288
+ accessScope: resolvedReadScope(workspace, [deniedSource]),
289
+ vectorQuery: vectorQuery(),
290
+ });
291
+ if (!engine.moveSource || !engine.moveTextSource || !engine.moveVectorSource) {
292
+ throw new Error('QLever search conformance requires source, FTS, and VEC move operations');
293
+ }
294
+ await engine.moveSource(oldSource, sourceInput(movedSource, workspace, 'moved-card.md'));
295
+ await engine.moveTextSource(oldSource, sourceInput(movedSource, workspace, 'moved-card.md'));
296
+ const fusedDuringMove = await nativeBindings(engine, nativeFusedQuery(), {
297
+ basePath: workspace,
298
+ operation: 'queryBindings',
299
+ acceptMediaType: 'application/sparql-results+json',
300
+ accessScope: resolvedReadScope(workspace, [deniedSource]),
301
+ vectorQuery: vectorQuery(),
302
+ });
303
+ const fusedDuringMoveExact = await nativeBindings(engine, nativeFusedQuery(), {
304
+ basePath: workspace,
305
+ sourceUri: movedSource,
306
+ operation: 'queryBindings',
307
+ acceptMediaType: 'application/sparql-results+json',
308
+ accessScope: resolvedReadScope(workspace, [deniedSource]),
309
+ vectorQuery: vectorQuery(),
310
+ });
311
+ await engine.moveVectorSource(oldSource, sourceInput(movedSource, workspace, 'moved-card.md'));
312
+ const oldSourceAfterMove = await nativeBindings(engine, nativeFusedQuery(), {
313
+ basePath: workspace,
314
+ sourceUri: oldSource,
315
+ operation: 'queryBindings',
316
+ acceptMediaType: 'application/sparql-results+json',
317
+ accessScope: resolvedReadScope(workspace),
318
+ vectorQuery: vectorQuery(),
319
+ });
320
+ const fusedAfterMove = await nativeBindings(engine, nativeFusedQuery(), {
321
+ basePath: workspace,
322
+ sourceUri: movedSource,
323
+ operation: 'queryBindings',
324
+ acceptMediaType: 'application/sparql-results+json',
325
+ accessScope: resolvedReadScope(workspace),
326
+ vectorQuery: vectorQuery(),
327
+ });
328
+ await seedDeniedSearchConformanceSource(engine, fixture);
329
+ const denied = resolvedReadScope(workspace, [deniedSource]);
330
+ const deniedSourceResult = await nativeBindings(engine, nativeFusedQuery(), {
331
+ basePath: workspace,
332
+ sourceUri: deniedSource,
333
+ operation: 'queryBindings',
334
+ acceptMediaType: 'application/sparql-results+json',
335
+ accessScope: denied,
336
+ vectorQuery: vectorQuery(),
337
+ });
338
+ const report = {
339
+ textOnlyBeforeVector,
340
+ fusedBeforeVector,
341
+ fusedAfterVector,
342
+ fusedAfterVectorExact,
343
+ fusedDuringMove,
344
+ fusedDuringMoveExact,
345
+ fusedAfterMove,
346
+ oldSourceAfterMove,
347
+ deniedSource: deniedSourceResult,
348
+ };
349
+ assertNativeSearchInvariants(report, { content, oldSource, movedSource });
350
+ return report;
351
+ }
352
+ finally {
353
+ await engine.close();
354
+ }
355
+ }
356
+ async function runPublicSearchFusionAcceptance(engine, options = {}) {
357
+ const fixture = searchConformanceFixture(options);
358
+ const { workspace, oldSource, movedSource, deniedSource, stableSourceKey, stablePointKey, content, } = fixture;
359
+ await engine.open();
360
+ try {
361
+ await seedSearchConformanceBase(engine, fixture);
362
+ const textOnlyBeforeVector = await publicBindings(engine, publicTextOnlyQuery(workspace));
363
+ const fusedBeforeVector = await publicBindings(engine, publicFusedQuery(workspace));
364
+ await requireIndexVector(engine, {
365
+ ...sourceInput(oldSource, workspace, 'old-card.md'),
366
+ sourceKey: stableSourceKey,
367
+ }, content, stablePointKey);
368
+ const fusedAfterVector = await publicBindings(engine, publicFusedQuery(workspace, {
369
+ deniedSources: [deniedSource],
370
+ }));
371
+ const fusedAfterVectorExact = await publicBindings(engine, publicFusedQuery(workspace, {
372
+ sourceUri: oldSource,
373
+ deniedSources: [deniedSource],
374
+ }));
375
+ if (!engine.moveSource || !engine.moveTextSource || !engine.moveVectorSource) {
376
+ throw new Error('Public search conformance requires source, FTS, and VEC move operations');
377
+ }
378
+ await engine.moveSource(oldSource, sourceInput(movedSource, workspace, 'moved-card.md'));
379
+ await engine.moveTextSource(oldSource, sourceInput(movedSource, workspace, 'moved-card.md'));
380
+ const fusedDuringMove = await publicBindings(engine, publicFusedQuery(workspace, {
381
+ deniedSources: [deniedSource],
382
+ }));
383
+ const fusedDuringMoveExact = await publicBindings(engine, publicFusedQuery(workspace, {
384
+ sourceUri: movedSource,
385
+ deniedSources: [deniedSource],
386
+ }));
387
+ await engine.moveVectorSource(oldSource, sourceInput(movedSource, workspace, 'moved-card.md'));
388
+ const oldSourceAfterMove = await publicBindings(engine, publicFusedQuery(workspace, {
389
+ sourceUri: oldSource,
390
+ }));
391
+ const fusedAfterMove = await publicBindings(engine, publicFusedQuery(workspace, {
392
+ sourceUri: movedSource,
393
+ }));
394
+ await seedDeniedSearchConformanceSource(engine, fixture);
395
+ const deniedSourceResult = await publicBindings(engine, publicFusedQuery(workspace, {
396
+ sourceUri: deniedSource,
397
+ deniedSources: [deniedSource],
398
+ }));
399
+ const report = {
400
+ textOnlyBeforeVector,
401
+ fusedBeforeVector,
402
+ fusedAfterVector,
403
+ fusedAfterVectorExact,
404
+ fusedDuringMove,
405
+ fusedDuringMoveExact,
406
+ fusedAfterMove,
407
+ oldSourceAfterMove,
408
+ deniedSource: deniedSourceResult,
409
+ };
410
+ assertNativeSearchInvariants(report, { content, oldSource, movedSource });
411
+ return report;
412
+ }
413
+ finally {
414
+ await engine.close();
415
+ }
416
+ }
417
+ function searchConformanceFixture(options = {}) {
418
+ const workspace = options.workspace ?? 'https://pod.example/alice/projects/native/';
419
+ return {
420
+ workspace,
421
+ oldSource: `${workspace}old-card.md`,
422
+ movedSource: `${workspace}moved-card.md`,
423
+ decoySource: `${workspace}decoy-card.md`,
424
+ deniedSource: `${workspace}private-card.md`,
425
+ stableSourceKey: 'entity:card:fusion-stable',
426
+ stablePointKey: 'point:intro',
427
+ decoySourceKey: 'entity:card:fusion-decoy',
428
+ deniedSourceKey: 'entity:card:denied',
429
+ deniedPointKey: 'point:denied',
430
+ content: 'alpha late vector canonical card',
431
+ decoyContent: 'beta same-point different-source decoy card',
432
+ deniedContent: 'alpha late vector denied private card',
433
+ graphPredicate: namedNode('urn:xpod:qlever:search:predicate'),
434
+ graphObject: namedNode('urn:xpod:qlever:search:object'),
435
+ };
436
+ }
437
+ async function seedSearchConformanceBase(engine, fixture) {
438
+ await engine.put(quad(namedNode(fixture.oldSource), fixture.graphPredicate, fixture.graphObject, namedNode(fixture.oldSource)), {
439
+ source: sourceInput(fixture.oldSource, fixture.workspace, 'old-card.md'),
440
+ });
441
+ await engine.put(quad(namedNode(fixture.decoySource), fixture.graphPredicate, fixture.graphObject, namedNode(fixture.decoySource)), {
442
+ source: sourceInput(fixture.decoySource, fixture.workspace, 'decoy-card.md'),
443
+ });
444
+ await requireIndexText(engine, {
445
+ ...sourceInput(fixture.oldSource, fixture.workspace, 'old-card.md'),
446
+ sourceKey: fixture.stableSourceKey,
447
+ }, fixture.content, fixture.stablePointKey);
448
+ await requireIndexText(engine, {
449
+ ...sourceInput(fixture.decoySource, fixture.workspace, 'decoy-card.md'),
450
+ sourceKey: fixture.decoySourceKey,
451
+ }, fixture.decoyContent, fixture.stablePointKey);
452
+ await requireIndexVector(engine, {
453
+ ...sourceInput(fixture.decoySource, fixture.workspace, 'decoy-card.md'),
454
+ sourceKey: fixture.decoySourceKey,
455
+ }, fixture.decoyContent, fixture.stablePointKey);
456
+ }
457
+ async function seedDeniedSearchConformanceSource(engine, fixture) {
458
+ await engine.put(quad(namedNode(fixture.deniedSource), fixture.graphPredicate, fixture.graphObject, namedNode(fixture.deniedSource)), {
459
+ source: sourceInput(fixture.deniedSource, fixture.workspace, 'private-card.md'),
460
+ });
461
+ await requireIndexText(engine, {
462
+ ...sourceInput(fixture.deniedSource, fixture.workspace, 'private-card.md'),
463
+ sourceKey: fixture.deniedSourceKey,
464
+ }, fixture.deniedContent, fixture.deniedPointKey);
465
+ await requireIndexVector(engine, {
466
+ ...sourceInput(fixture.deniedSource, fixture.workspace, 'private-card.md'),
467
+ sourceKey: fixture.deniedSourceKey,
468
+ }, fixture.deniedContent, fixture.deniedPointKey);
469
+ }
470
+ function sourceInput(source, workspace, localPath) {
471
+ return {
472
+ source,
473
+ workspace,
474
+ localPath,
475
+ contentType: 'text/markdown',
476
+ sourceHash: 'sha256:stable-card',
477
+ };
478
+ }
479
+ function textChunk(content, retrievalPointKey) {
480
+ return {
481
+ chunkKey: retrievalPointKey,
482
+ retrievalPointKey,
483
+ retrievalKind: 'file-chunk',
484
+ ordinal: 0,
485
+ level: 1,
486
+ content,
487
+ startOffset: 0,
488
+ endOffset: content.length,
489
+ };
490
+ }
491
+ async function requireIndexText(engine, source, content, retrievalPointKey) {
492
+ if (!engine.indexTextSource)
493
+ throw new Error('Search conformance requires FTS indexing');
494
+ await engine.indexTextSource(source, content, [textChunk(content, retrievalPointKey)]);
495
+ }
496
+ async function requireIndexVector(engine, source, content, retrievalPointKey) {
497
+ if (!engine.indexVectorSource)
498
+ throw new Error('Search conformance requires VEC indexing');
499
+ await engine.indexVectorSource(source, [{
500
+ chunkKey: retrievalPointKey,
501
+ ordinal: 0,
502
+ level: 1,
503
+ content,
504
+ startOffset: 0,
505
+ endOffset: content.length,
506
+ embedding: [1, 0],
507
+ provider: 'xpod',
508
+ model: 'acceptance-embed',
509
+ modelVersion: '2026-08-13',
510
+ inputKind: 'entity-card',
511
+ inputHash: 'sha256:stable-card',
512
+ projectionPolicyVersion: 'policy-v1',
513
+ }]);
514
+ }
515
+ function nativeTextOnlyQuery() {
516
+ return [
517
+ 'SELECT ?retrieval WHERE {',
518
+ ' ?retrieval ql:contains-word "alpha" .',
519
+ '} ORDER BY ?retrieval',
520
+ ].join('\n');
521
+ }
522
+ function nativeFusedQuery() {
523
+ return [
524
+ 'SELECT ?retrieval ?source WHERE {',
525
+ ' ?retrieval ql:contains-word "alpha" .',
526
+ '} ORDER BY ?source ?retrieval',
527
+ ].join('\n');
528
+ }
529
+ function vectorQuery() {
530
+ return {
531
+ embedding: [1, 0],
532
+ metric: 'cosine',
533
+ provider: 'xpod',
534
+ model: 'acceptance-embed',
535
+ modelVersion: '2026-08-13',
536
+ inputKind: 'entity-card',
537
+ projectionPolicyVersion: 'policy-v1',
538
+ limit: 10,
539
+ retrievalPointVariable: '?retrieval',
540
+ resourceVariable: '?source',
541
+ };
542
+ }
543
+ function publicTextOnlyQuery(workspace) {
544
+ return {
545
+ patterns: [],
546
+ textSearch: [{
547
+ query: 'alpha',
548
+ scope: { workspace },
549
+ content: 'retrieval',
550
+ sourceKey: 'sourceKey',
551
+ retrievalPoint: 'retrievalPointKey',
552
+ }],
553
+ select: ['retrieval'],
554
+ orderBy: [{ variable: 'retrieval' }],
555
+ };
556
+ }
557
+ function publicFusedQuery(workspace, options = {}) {
558
+ const textScope = {
559
+ workspace,
560
+ ...(options.sourceUri ? { allowedSources: [options.sourceUri] } : {}),
561
+ ...(options.deniedSources ? { deniedSources: options.deniedSources } : {}),
562
+ };
563
+ const vectorScope = {
564
+ workspace,
565
+ ...(options.deniedSources ? { deniedSources: options.deniedSources } : {}),
566
+ };
567
+ return {
568
+ patterns: [],
569
+ textSearch: [{
570
+ query: 'alpha',
571
+ scope: textScope,
572
+ source: 'source',
573
+ sourceKey: 'sourceKey',
574
+ retrievalPoint: 'retrievalPointKey',
575
+ content: 'retrieval',
576
+ }],
577
+ vectorSearch: [{
578
+ embedding: [1, 0],
579
+ metric: 'cosine',
580
+ vectorProvider: 'xpod',
581
+ vectorModel: 'acceptance-embed',
582
+ vectorModelVersion: '2026-08-13',
583
+ vectorInputKind: 'entity-card',
584
+ vectorProjectionPolicyVersion: 'policy-v1',
585
+ scope: vectorScope,
586
+ source: 'vectorSource',
587
+ sourceKey: 'sourceKey',
588
+ retrievalPoint: 'retrievalPointKey',
589
+ content: 'vectorRetrieval',
590
+ }],
591
+ select: ['retrieval', 'source'],
592
+ orderBy: [
593
+ { variable: 'source' },
594
+ { variable: 'retrieval' },
595
+ ],
596
+ };
597
+ }
598
+ function resolvedReadScope(basePath, deniedSourceUrls = []) {
599
+ return {
600
+ basePath,
601
+ mode: 'read',
602
+ resolved: true,
603
+ principal: 'urn:xpod:qlever-search-reader',
604
+ version: 'qlever-search-v1',
605
+ deniedSourceUrls,
606
+ };
607
+ }
608
+ async function nativeBindings(engine, sparql, options) {
609
+ if (!engine.sparqlQuery)
610
+ throw new Error('QLever search conformance requires native SPARQL');
611
+ const result = await engine.sparqlQuery(sparql, options);
612
+ validateNativeResult(result);
613
+ const parsed = JSON.parse(result.body);
614
+ return (parsed.results?.bindings ?? [])
615
+ .map((binding) => ({
616
+ retrieval: binding.retrieval?.value ?? '',
617
+ source: binding.source?.value,
618
+ }))
619
+ .filter((row) => row.retrieval)
620
+ .sort((left, right) => rowKey(left).localeCompare(rowKey(right)));
621
+ }
622
+ async function publicBindings(engine, query) {
623
+ const result = await engine.query(query);
624
+ return result.bindings
625
+ .map(publicRow)
626
+ .filter((row) => row.retrieval)
627
+ .sort((left, right) => rowKey(left).localeCompare(rowKey(right)));
628
+ }
629
+ function publicRow(binding) {
630
+ return {
631
+ retrieval: binding.retrieval?.value ?? '',
632
+ source: binding.source?.value,
633
+ };
634
+ }
635
+ function validateNativeResult(result) {
636
+ if (result.status !== 'ok' || result.mediaType !== 'application/sparql-results+json') {
637
+ throw new Error(`QLever search query failed: ${JSON.stringify(result)}`);
638
+ }
639
+ }
640
+ function assertNativeSearchInvariants(report, expected) {
641
+ if (report.textOnlyBeforeVector.length !== 1 ||
642
+ report.textOnlyBeforeVector[0].retrieval !== expected.content ||
643
+ report.textOnlyBeforeVector[0].source !== undefined) {
644
+ throw new Error(`FTS must remain available before any matching vector row exists: ${JSON.stringify(report.textOnlyBeforeVector)}`);
645
+ }
646
+ if (report.fusedBeforeVector.length !== 0) {
647
+ throw new Error(`FTS/VEC fusion must stay empty before the matching late vector; same-point decoys are not enough: ${JSON.stringify(report.fusedBeforeVector)}`);
648
+ }
649
+ assertExactStableRows(report.fusedAfterVector, expected.content, expected.oldSource, 'Late vector fusion mismatch');
650
+ assertExactStableRows(report.fusedAfterVectorExact, expected.content, expected.oldSource, 'Late vector exact-source fusion mismatch');
651
+ assertExactStableRows(report.fusedDuringMove, expected.content, expected.movedSource, 'Stable-key fusion failed while FTS/VEC locators differed');
652
+ assertExactStableRows(report.fusedDuringMoveExact, expected.content, expected.movedSource, 'Moved exact-source scope failed while the vector locator was stale');
653
+ assertExactStableRows(report.fusedAfterMove, expected.content, expected.movedSource, 'Move-stable fusion mismatch');
654
+ if (report.oldSourceAfterMove.length !== 0) {
655
+ throw new Error(`Old source returned after move: ${JSON.stringify(report.oldSourceAfterMove)}`);
656
+ }
657
+ if (report.deniedSource.length !== 0) {
658
+ throw new Error(`Denied source leaked from native search: ${JSON.stringify(report.deniedSource)}`);
659
+ }
660
+ }
661
+ function assertExactStableRows(rows, content, source, message) {
662
+ const expected = {
663
+ retrieval: content,
664
+ source,
665
+ };
666
+ if (rows.length !== 1 ||
667
+ rows[0].retrieval !== expected.retrieval ||
668
+ rows[0].source !== expected.source) {
669
+ throw new Error(`${message}: ${JSON.stringify(rows)}`);
670
+ }
671
+ }
672
+ function rowKey(row) {
673
+ return [row.source ?? '', row.retrieval].join('\u001f');
674
+ }
675
+ function connectionStringWithSearchPath(connectionString, schema) {
676
+ const url = new URL(connectionString);
677
+ url.searchParams.set('options', `-csearch_path=${schema},public`);
678
+ return url.toString();
679
+ }
680
+ function quoteIdentifier(value) {
681
+ if (!/^[A-Za-z_][A-Za-z0-9_]*$/u.test(value)) {
682
+ throw new Error(`Unsafe PostgreSQL identifier: ${value}`);
683
+ }
684
+ return `"${value}"`;
685
+ }
686
+ //# sourceMappingURL=QleverSearchConformance.js.map
@@ -0,0 +1,3 @@
1
+ import { type LocalQleverSemanticHarnessOptions, type PostgresQleverSemanticHarnessOptions, type SemanticConformanceReport } from './RdfSemanticConformance';
2
+ export declare function runLocalQleverSemanticConformance(options: LocalQleverSemanticHarnessOptions): Promise<SemanticConformanceReport>;
3
+ export declare function runPostgresQleverSemanticConformance(options: PostgresQleverSemanticHarnessOptions): Promise<SemanticConformanceReport>;