@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,8 +5,26 @@ 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 RdfTextIndex_1 = require("./RdfTextIndex");
9
10
  const PG_NATIVE_FTS_BACKEND_VERSION = 1;
11
+ const PG_RDF_TEXT_SCHEMA_LOCK_KEY = 2026072901;
12
+ const PG_RDF_TEXT_DOMAIN_TABLES = [
13
+ 'rdf_text_metadata',
14
+ 'rdf_text_sources',
15
+ 'rdf_text_rebuild_status',
16
+ 'rdf_text_chunks',
17
+ 'rdf_text_terms',
18
+ 'rdf_text_entities',
19
+ ];
20
+ const PG_RDF_TEXT_REQUIRED_COLUMNS = {
21
+ rdf_text_metadata: ['key', 'value'],
22
+ rdf_text_sources: ['id', 'source_key', 'source', 'workspace', 'local_path', 'content_type', 'source_version', 'source_hash', 'updated_at'],
23
+ rdf_text_rebuild_status: ['source', 'workspace', 'local_path', 'content_type', 'source_version', 'source_hash', 'status', 'reason', 'message', 'updated_at'],
24
+ rdf_text_chunks: ['id', 'source_id', 'chunk_key', 'retrieval_kind', 'ordinal', 'level', 'heading', 'path', 'content', 'start_offset', 'end_offset', 'normalized_text', 'token_count', 'updated_at'],
25
+ rdf_text_terms: ['id', 'term', 'source_id', 'chunk_id', 'occurrences', 'updated_at'],
26
+ rdf_text_entities: ['id', 'entity', 'source_id', 'chunk_id', 'predicate', 'label', 'value', 'datatype', 'language', 'policy_role', 'occurrences', 'updated_at'],
27
+ };
10
28
  class PostgresRdfTextIndex {
11
29
  constructor(options = {}) {
12
30
  this.executor = null;
@@ -50,7 +68,10 @@ class PostgresRdfTextIndex {
50
68
  await this.requireExecutor().exec('DELETE FROM rdf_text_rebuild_status; DELETE FROM rdf_text_entities; DELETE FROM rdf_text_terms; DELETE FROM rdf_text_chunks; DELETE FROM rdf_text_sources;');
51
69
  }
52
70
  async schemaVersion() {
53
- const row = await this.requireExecutor()
71
+ return await this.readSchemaVersion(this.requireExecutor());
72
+ }
73
+ async readSchemaVersion(executor) {
74
+ const row = await executor
54
75
  .query("SELECT value FROM rdf_text_metadata WHERE key = 'schema_version'");
55
76
  return Number(row[0]?.value ?? 0) || 0;
56
77
  }
@@ -59,6 +80,34 @@ class PostgresRdfTextIndex {
59
80
  .query('SELECT * FROM rdf_text_sources WHERE source = $1', [source]);
60
81
  return rows[0] ? rdfTextSourceMetadata(rows[0]) : undefined;
61
82
  }
83
+ async listSources(options = {}) {
84
+ const conditions = [];
85
+ const params = [];
86
+ if (options.workspace) {
87
+ params.push(options.workspace);
88
+ conditions.push(`workspace = $${params.length}`);
89
+ }
90
+ if (options.sourcePrefix) {
91
+ params.push(options.sourcePrefix);
92
+ conditions.push(`source >= $${params.length}`);
93
+ params.push(`${options.sourcePrefix}\uffff`);
94
+ conditions.push(`source < $${params.length}`);
95
+ }
96
+ params.push(normalizeSourceListLimit(options.limit));
97
+ const limitPlaceholder = `$${params.length}`;
98
+ params.push(normalizeSourceListOffset(options.offset));
99
+ const offsetPlaceholder = `$${params.length}`;
100
+ const where = conditions.length > 0 ? `WHERE ${conditions.join(' AND ')}` : '';
101
+ const rows = await this.requireExecutor().query(`
102
+ SELECT *
103
+ FROM rdf_text_sources
104
+ ${where}
105
+ ORDER BY source ASC
106
+ LIMIT ${limitPlaceholder}
107
+ OFFSET ${offsetPlaceholder}
108
+ `, params);
109
+ return rows.map(rdfTextSourceMetadata);
110
+ }
62
111
  async recordRebuildStatus(input) {
63
112
  await this.requireExecutor().exec(`
64
113
  INSERT INTO rdf_text_rebuild_status (
@@ -191,6 +240,10 @@ class PostgresRdfTextIndex {
191
240
  return 0;
192
241
  }
193
242
  const oldId = Number(oldRow.id);
243
+ const sourceKey = oldRow.source_key;
244
+ if (next.sourceKey && next.sourceKey !== sourceKey) {
245
+ throw new Error(`RDF text source key mismatch for source ${oldSource}: expected ${sourceKey}, got ${next.sourceKey}`);
246
+ }
194
247
  const countRows = await tx.query('SELECT COUNT(*) AS count FROM rdf_text_chunks WHERE source_id = $1', [oldId]);
195
248
  const targetRows = await tx.query('SELECT * FROM rdf_text_sources WHERE source = $1', [next.source]);
196
249
  const targetRow = targetRows[0];
@@ -214,13 +267,13 @@ class PostgresRdfTextIndex {
214
267
  updated_at = now()
215
268
  WHERE id = $8
216
269
  `, [
217
- next.sourceKey ?? oldRow.source_key ?? oldRow.source,
270
+ sourceKey,
218
271
  next.source,
219
272
  next.workspace,
220
273
  next.localPath ?? null,
221
274
  next.contentType ?? null,
222
275
  next.sourceVersion ?? null,
223
- next.sourceHash ?? null,
276
+ next.sourceHash ?? oldRow.source_hash ?? null,
224
277
  oldId,
225
278
  ]);
226
279
  await tx.exec(`
@@ -240,7 +293,7 @@ class PostgresRdfTextIndex {
240
293
  next.localPath ?? null,
241
294
  next.contentType ?? null,
242
295
  next.sourceVersion ?? null,
243
- next.sourceHash ?? null,
296
+ next.sourceHash ?? oldRow.source_hash ?? null,
244
297
  oldSource,
245
298
  ]);
246
299
  return Math.max(Number(countRows[0]?.count ?? 0), 1);
@@ -391,6 +444,39 @@ class PostgresRdfTextIndex {
391
444
  const entities = await this.entitiesForChunks(normalizedRows.map((result) => result.row.id));
392
445
  return normalizedRows.map((result) => toSearchResult(result.row, query, result.score, entities.get(result.row.id) ?? []));
393
446
  }
447
+ async listSourceChunks(sourceKey) {
448
+ const rows = await this.requireExecutor().query(`
449
+ SELECT
450
+ chunk.id,
451
+ chunk.source_id,
452
+ source.source_key,
453
+ source.source,
454
+ source.workspace,
455
+ source.local_path,
456
+ source.content_type,
457
+ source.source_version,
458
+ source.source_hash,
459
+ chunk.chunk_key,
460
+ chunk.retrieval_kind,
461
+ chunk.ordinal,
462
+ chunk.level,
463
+ chunk.heading,
464
+ chunk.path,
465
+ chunk.content,
466
+ chunk.start_offset,
467
+ chunk.end_offset,
468
+ chunk.normalized_text,
469
+ chunk.token_count,
470
+ 0 AS score
471
+ FROM rdf_text_chunks chunk
472
+ JOIN rdf_text_sources source ON source.id = chunk.source_id
473
+ WHERE source.source_key = $1 OR source.source = $1
474
+ ORDER BY source.source ASC, chunk.ordinal ASC, chunk.chunk_key ASC
475
+ `, [sourceKey]);
476
+ const normalizedRows = rows.map((row) => normalizeTextChunkRow(row));
477
+ const entities = await this.entitiesForChunks(normalizedRows.map((row) => row.id));
478
+ return normalizedRows.map((row) => toSearchResult(row, '', 0, entities.get(row.id) ?? []));
479
+ }
394
480
  async estimateSearchCardinality(options) {
395
481
  const query = (0, RdfTextIndex_1.normalizeRdfText)(options.query);
396
482
  const entityFilter = normalizeEntityFilter(options.entities);
@@ -628,15 +714,24 @@ class PostgresRdfTextIndex {
628
714
  await this.initializeSchema();
629
715
  }
630
716
  async initializeSchema() {
631
- await this.requireExecutor().exec(`
632
- CREATE TABLE IF NOT EXISTS rdf_text_metadata (
717
+ await this.requireExecutor().transaction(async (executor) => {
718
+ await executor.exec('SELECT pg_advisory_xact_lock($1)', [PG_RDF_TEXT_SCHEMA_LOCK_KEY]);
719
+ if (await (0, PostgresRdfSchemaValidation_1.pgHasAnyDomainTable)(executor, PG_RDF_TEXT_DOMAIN_TABLES)) {
720
+ await this.validateSchema(executor);
721
+ if (this.nativeFtsEnabled()) {
722
+ await this.validateNativeFtsSchema(executor);
723
+ }
724
+ return;
725
+ }
726
+ await executor.exec(`
727
+ CREATE TABLE rdf_text_metadata (
633
728
  key TEXT PRIMARY KEY,
634
729
  value TEXT NOT NULL
635
730
  );
636
731
 
637
- CREATE TABLE IF NOT EXISTS rdf_text_sources (
732
+ CREATE TABLE rdf_text_sources (
638
733
  id BIGSERIAL PRIMARY KEY,
639
- source_key TEXT,
734
+ source_key TEXT NOT NULL UNIQUE,
640
735
  source TEXT NOT NULL UNIQUE,
641
736
  workspace TEXT NOT NULL,
642
737
  local_path TEXT,
@@ -646,7 +741,7 @@ class PostgresRdfTextIndex {
646
741
  updated_at TIMESTAMPTZ NOT NULL DEFAULT now()
647
742
  );
648
743
 
649
- CREATE TABLE IF NOT EXISTS rdf_text_rebuild_status (
744
+ CREATE TABLE rdf_text_rebuild_status (
650
745
  source TEXT PRIMARY KEY,
651
746
  workspace TEXT NOT NULL,
652
747
  local_path TEXT,
@@ -659,7 +754,7 @@ class PostgresRdfTextIndex {
659
754
  updated_at TIMESTAMPTZ NOT NULL DEFAULT now()
660
755
  );
661
756
 
662
- CREATE TABLE IF NOT EXISTS rdf_text_chunks (
757
+ CREATE TABLE rdf_text_chunks (
663
758
  id BIGSERIAL PRIMARY KEY,
664
759
  source_id BIGINT NOT NULL REFERENCES rdf_text_sources(id) ON DELETE CASCADE,
665
760
  chunk_key TEXT NOT NULL,
@@ -677,7 +772,7 @@ class PostgresRdfTextIndex {
677
772
  UNIQUE (source_id, chunk_key)
678
773
  );
679
774
 
680
- CREATE TABLE IF NOT EXISTS rdf_text_terms (
775
+ CREATE TABLE rdf_text_terms (
681
776
  id BIGSERIAL PRIMARY KEY,
682
777
  term TEXT NOT NULL CHECK (length(term) <= ${RdfTextIndex_1.RDF_TEXT_TERM_MAX_INDEX_LENGTH}),
683
778
  source_id BIGINT NOT NULL REFERENCES rdf_text_sources(id) ON DELETE CASCADE,
@@ -687,7 +782,7 @@ class PostgresRdfTextIndex {
687
782
  UNIQUE (term, chunk_id)
688
783
  );
689
784
 
690
- CREATE TABLE IF NOT EXISTS rdf_text_entities (
785
+ CREATE TABLE rdf_text_entities (
691
786
  id BIGSERIAL PRIMARY KEY,
692
787
  entity TEXT NOT NULL,
693
788
  source_id BIGINT NOT NULL REFERENCES rdf_text_sources(id) ON DELETE CASCADE,
@@ -702,40 +797,29 @@ class PostgresRdfTextIndex {
702
797
  updated_at TIMESTAMPTZ NOT NULL DEFAULT now()
703
798
  );
704
799
 
705
- ALTER TABLE rdf_text_sources ADD COLUMN IF NOT EXISTS source_key TEXT;
706
- UPDATE rdf_text_sources SET source_key = source WHERE source_key IS NULL;
707
- ALTER TABLE rdf_text_chunks ADD COLUMN IF NOT EXISTS retrieval_kind TEXT NOT NULL DEFAULT 'file-chunk';
708
- ALTER TABLE rdf_text_entities ADD COLUMN IF NOT EXISTS value TEXT;
709
- ALTER TABLE rdf_text_entities ADD COLUMN IF NOT EXISTS datatype TEXT;
710
- ALTER TABLE rdf_text_entities ADD COLUMN IF NOT EXISTS language TEXT;
711
- ALTER TABLE rdf_text_entities ADD COLUMN IF NOT EXISTS policy_role TEXT;
712
-
713
- CREATE INDEX IF NOT EXISTS rdf_text_sources_workspace ON rdf_text_sources(workspace);
714
- CREATE INDEX IF NOT EXISTS rdf_text_sources_source ON rdf_text_sources(source);
715
- CREATE INDEX IF NOT EXISTS rdf_text_sources_local_path ON rdf_text_sources(local_path);
716
- CREATE INDEX IF NOT EXISTS rdf_text_sources_workspace_local_path ON rdf_text_sources(workspace, local_path);
717
- CREATE INDEX IF NOT EXISTS rdf_text_chunks_source ON rdf_text_chunks(source_id, ordinal);
718
- DELETE FROM rdf_text_terms WHERE length(term) > ${RdfTextIndex_1.RDF_TEXT_TERM_MAX_INDEX_LENGTH};
719
- CREATE INDEX IF NOT EXISTS rdf_text_terms_term ON rdf_text_terms(term);
720
- CREATE INDEX IF NOT EXISTS rdf_text_terms_source_term ON rdf_text_terms(source_id, term);
721
- CREATE INDEX IF NOT EXISTS rdf_text_terms_chunk ON rdf_text_terms(chunk_id);
722
- CREATE INDEX IF NOT EXISTS rdf_text_entities_entity ON rdf_text_entities(entity);
723
- CREATE INDEX IF NOT EXISTS rdf_text_entities_source_entity ON rdf_text_entities(source_id, entity);
724
- CREATE INDEX IF NOT EXISTS rdf_text_entities_chunk ON rdf_text_entities(chunk_id);
800
+ CREATE INDEX rdf_text_sources_workspace ON rdf_text_sources(workspace);
801
+ CREATE INDEX rdf_text_sources_source ON rdf_text_sources(source);
802
+ CREATE INDEX rdf_text_sources_local_path ON rdf_text_sources(local_path);
803
+ CREATE INDEX rdf_text_sources_workspace_local_path ON rdf_text_sources(workspace, local_path);
804
+ CREATE INDEX rdf_text_chunks_source ON rdf_text_chunks(source_id, ordinal);
805
+ CREATE INDEX rdf_text_terms_term ON rdf_text_terms(term);
806
+ CREATE INDEX rdf_text_terms_source_term ON rdf_text_terms(source_id, term);
807
+ CREATE INDEX rdf_text_terms_chunk ON rdf_text_terms(chunk_id);
808
+ CREATE INDEX rdf_text_entities_entity ON rdf_text_entities(entity);
809
+ CREATE INDEX rdf_text_entities_source_entity ON rdf_text_entities(source_id, entity);
810
+ CREATE INDEX rdf_text_entities_chunk ON rdf_text_entities(chunk_id);
725
811
 
726
812
  INSERT INTO rdf_text_metadata (key, value)
727
- VALUES ('schema_version', '${RdfTextIndex_1.RDF_TEXT_SCHEMA_VERSION}')
728
- ON CONFLICT (key) DO UPDATE SET value = EXCLUDED.value;
729
- `);
730
- await this.backfillTermPostings();
731
- if (this.nativeFtsEnabled()) {
732
- await this.initializeNativeFtsSchema();
733
- await this.backfillNativeFtsRows();
734
- }
813
+ VALUES ('schema_version', '${RdfTextIndex_1.RDF_TEXT_SCHEMA_VERSION}');
814
+ `);
815
+ if (this.nativeFtsEnabled()) {
816
+ await this.initializeNativeFtsSchema(executor);
817
+ }
818
+ });
735
819
  }
736
- async initializeNativeFtsSchema() {
737
- await this.requireExecutor().exec(`
738
- CREATE TABLE IF NOT EXISTS rdf_text_fts_pg (
820
+ async initializeNativeFtsSchema(executor) {
821
+ await executor.exec(`
822
+ CREATE TABLE rdf_text_fts_pg (
739
823
  chunk_id BIGINT PRIMARY KEY REFERENCES rdf_text_chunks(id) ON DELETE CASCADE,
740
824
  backend_version INTEGER NOT NULL,
741
825
  config REGCONFIG NOT NULL,
@@ -744,48 +828,26 @@ class PostgresRdfTextIndex {
744
828
  updated_at TIMESTAMPTZ NOT NULL DEFAULT now()
745
829
  );
746
830
 
747
- CREATE INDEX IF NOT EXISTS rdf_text_fts_pg_vector_gin
831
+ CREATE INDEX rdf_text_fts_pg_vector_gin
748
832
  ON rdf_text_fts_pg USING GIN (fts_vector);
749
833
 
750
- CREATE INDEX IF NOT EXISTS rdf_text_fts_pg_config
834
+ CREATE INDEX rdf_text_fts_pg_config
751
835
  ON rdf_text_fts_pg (backend_version, config);
752
836
  `);
753
837
  }
754
- async backfillTermPostings() {
755
- const rows = await this.requireExecutor().query(`
756
- SELECT chunk.id, chunk.source_id, chunk.normalized_text
757
- FROM rdf_text_chunks chunk
758
- LEFT JOIN rdf_text_terms term ON term.chunk_id = chunk.id
759
- WHERE term.chunk_id IS NULL AND chunk.normalized_text <> ''
760
- `);
761
- if (rows.length === 0) {
762
- return;
838
+ async validateSchema(executor = this.requireExecutor()) {
839
+ for (const table of PG_RDF_TEXT_DOMAIN_TABLES) {
840
+ await (0, PostgresRdfSchemaValidation_1.assertPgRequiredColumns)(executor, table, PG_RDF_TEXT_REQUIRED_COLUMNS[table], 'text');
763
841
  }
764
- await this.requireExecutor().transaction(async (tx) => {
765
- for (const row of rows) {
766
- await insertTermOccurrences(tx, Number(row.source_id), Number(row.id), row.normalized_text);
767
- }
768
- });
769
- }
770
- async backfillNativeFtsRows() {
771
- const rows = await this.requireExecutor().query(`
772
- SELECT chunk.id, chunk.heading, chunk.path, chunk.content
773
- FROM rdf_text_chunks chunk
774
- LEFT JOIN rdf_text_fts_pg fts ON fts.chunk_id = chunk.id
775
- WHERE fts.chunk_id IS NULL OR fts.backend_version <> $1
776
- `, [PG_NATIVE_FTS_BACKEND_VERSION]);
777
- if (rows.length === 0) {
778
- return;
842
+ const version = await this.readSchemaVersion(executor);
843
+ if (version !== RdfTextIndex_1.RDF_TEXT_SCHEMA_VERSION) {
844
+ throw new Error(`Unsupported PostgreSQL RDF text index schema version: expected ${RdfTextIndex_1.RDF_TEXT_SCHEMA_VERSION}, got ${version}`);
779
845
  }
780
- await this.requireExecutor().transaction(async (tx) => {
781
- for (const row of rows) {
782
- await upsertNativeFtsProjection(tx, Number(row.id), {
783
- heading: row.heading ?? undefined,
784
- path: (0, RdfTextIndex_1.parseRdfTextPath)(row.path),
785
- content: row.content,
786
- });
787
- }
788
- });
846
+ await (0, PostgresRdfSchemaValidation_1.assertPgNotNullColumn)(executor, 'rdf_text_sources', 'source_key', 'text');
847
+ await (0, PostgresRdfSchemaValidation_1.assertPgUniqueColumn)(executor, 'rdf_text_sources', 'source_key', 'text');
848
+ }
849
+ async validateNativeFtsSchema(executor = this.requireExecutor()) {
850
+ await (0, PostgresRdfSchemaValidation_1.assertPgRequiredColumns)(executor, 'rdf_text_fts_pg', ['chunk_id', 'backend_version', 'config', 'projection_hash', 'fts_vector', 'updated_at'], 'text');
789
851
  }
790
852
  nativeFtsEnabled() {
791
853
  return this.options.textSearchBackend === 'pg-native-fts' || this.options.textSearchBackend === 'auto';
@@ -794,6 +856,11 @@ class PostgresRdfTextIndex {
794
856
  return this.nativeFtsEnabled() && Boolean(query) && !containsNoSpaceCjk(query);
795
857
  }
796
858
  async upsertSource(tx, source) {
859
+ const existing = await tx.query('SELECT * FROM rdf_text_sources WHERE source = $1', [source.source]);
860
+ if (existing[0] && source.sourceKey && existing[0].source_key !== source.sourceKey) {
861
+ throw new Error(`RDF text source key mismatch for source ${source.source}: expected ${existing[0].source_key}, got ${source.sourceKey}`);
862
+ }
863
+ const sourceKey = existing[0]?.source_key ?? source.sourceKey ?? source.source;
797
864
  const rows = await tx.query(`
798
865
  INSERT INTO rdf_text_sources (
799
866
  source_key,
@@ -808,7 +875,6 @@ class PostgresRdfTextIndex {
808
875
  VALUES ($1, $2, $3, $4, $5, $6, $7, now())
809
876
  ON CONFLICT (source)
810
877
  DO UPDATE SET
811
- source_key = EXCLUDED.source_key,
812
878
  workspace = EXCLUDED.workspace,
813
879
  local_path = EXCLUDED.local_path,
814
880
  content_type = EXCLUDED.content_type,
@@ -817,7 +883,7 @@ class PostgresRdfTextIndex {
817
883
  updated_at = EXCLUDED.updated_at
818
884
  RETURNING id
819
885
  `, [
820
- source.sourceKey ?? source.source,
886
+ sourceKey,
821
887
  source.source,
822
888
  source.workspace,
823
889
  source.localPath ?? null,
@@ -1226,6 +1292,18 @@ function rdfTextSourceMetadata(row) {
1226
1292
  updatedAt: row.updated_at,
1227
1293
  };
1228
1294
  }
1295
+ function normalizeSourceListLimit(value) {
1296
+ if (!value || !Number.isFinite(value) || value <= 0) {
1297
+ return 1_000;
1298
+ }
1299
+ return Math.min(Math.floor(value), 10_000);
1300
+ }
1301
+ function normalizeSourceListOffset(value) {
1302
+ if (!value || !Number.isFinite(value) || value <= 0) {
1303
+ return 0;
1304
+ }
1305
+ return Math.floor(value);
1306
+ }
1229
1307
  function rdfTextRebuildStatus(row) {
1230
1308
  return {
1231
1309
  source: row.source,
@@ -300,10 +300,18 @@
300
300
  "@id": "undefineds:dist/storage/rdf/PostgresRdfTextIndex.jsonld#PostgresRdfTextIndex__member_schemaVersion",
301
301
  "memberFieldName": "schemaVersion"
302
302
  },
303
+ {
304
+ "@id": "undefineds:dist/storage/rdf/PostgresRdfTextIndex.jsonld#PostgresRdfTextIndex__member_readSchemaVersion",
305
+ "memberFieldName": "readSchemaVersion"
306
+ },
303
307
  {
304
308
  "@id": "undefineds:dist/storage/rdf/PostgresRdfTextIndex.jsonld#PostgresRdfTextIndex__member_sourceMetadata",
305
309
  "memberFieldName": "sourceMetadata"
306
310
  },
311
+ {
312
+ "@id": "undefineds:dist/storage/rdf/PostgresRdfTextIndex.jsonld#PostgresRdfTextIndex__member_listSources",
313
+ "memberFieldName": "listSources"
314
+ },
307
315
  {
308
316
  "@id": "undefineds:dist/storage/rdf/PostgresRdfTextIndex.jsonld#PostgresRdfTextIndex__member_recordRebuildStatus",
309
317
  "memberFieldName": "recordRebuildStatus"
@@ -328,6 +336,10 @@
328
336
  "@id": "undefineds:dist/storage/rdf/PostgresRdfTextIndex.jsonld#PostgresRdfTextIndex__member_search",
329
337
  "memberFieldName": "search"
330
338
  },
339
+ {
340
+ "@id": "undefineds:dist/storage/rdf/PostgresRdfTextIndex.jsonld#PostgresRdfTextIndex__member_listSourceChunks",
341
+ "memberFieldName": "listSourceChunks"
342
+ },
331
343
  {
332
344
  "@id": "undefineds:dist/storage/rdf/PostgresRdfTextIndex.jsonld#PostgresRdfTextIndex__member_estimateSearchCardinality",
333
345
  "memberFieldName": "estimateSearchCardinality"
@@ -361,12 +373,12 @@
361
373
  "memberFieldName": "initializeNativeFtsSchema"
362
374
  },
363
375
  {
364
- "@id": "undefineds:dist/storage/rdf/PostgresRdfTextIndex.jsonld#PostgresRdfTextIndex__member_backfillTermPostings",
365
- "memberFieldName": "backfillTermPostings"
376
+ "@id": "undefineds:dist/storage/rdf/PostgresRdfTextIndex.jsonld#PostgresRdfTextIndex__member_validateSchema",
377
+ "memberFieldName": "validateSchema"
366
378
  },
367
379
  {
368
- "@id": "undefineds:dist/storage/rdf/PostgresRdfTextIndex.jsonld#PostgresRdfTextIndex__member_backfillNativeFtsRows",
369
- "memberFieldName": "backfillNativeFtsRows"
380
+ "@id": "undefineds:dist/storage/rdf/PostgresRdfTextIndex.jsonld#PostgresRdfTextIndex__member_validateNativeFtsSchema",
381
+ "memberFieldName": "validateNativeFtsSchema"
370
382
  },
371
383
  {
372
384
  "@id": "undefineds:dist/storage/rdf/PostgresRdfTextIndex.jsonld#PostgresRdfTextIndex__member_nativeFtsEnabled",
@@ -25,8 +25,11 @@ export declare class PostgresRdfVectorIndex implements RdfVectorIndexLike {
25
25
  open(): Promise<void>;
26
26
  close(): Promise<void>;
27
27
  clear(): Promise<void>;
28
+ schemaVersion(): Promise<number>;
29
+ private readSchemaVersion;
28
30
  indexVector(source: RdfVectorSourceInput, chunks: RdfVectorChunkInput[]): Promise<void>;
29
31
  deleteSource(source: string): Promise<number>;
32
+ moveSource(oldSource: string, next: RdfVectorSourceInput): Promise<number>;
30
33
  search(options: RdfVectorSearchOptions): Promise<RdfVectorSearchResult[]>;
31
34
  summaryLifecycle(options?: RdfVectorSummaryLifecycleOptions): Promise<RdfVectorSummaryLifecycleEntry[]>;
32
35
  estimateSearchCardinality(options: RdfVectorSearchOptions): Promise<RdfSearchCardinalityEstimate>;
@@ -34,12 +37,8 @@ export declare class PostgresRdfVectorIndex implements RdfVectorIndexLike {
34
37
  modelDistribution(): Promise<RdfVectorModelDistribution[]>;
35
38
  private openInternal;
36
39
  private initializeSchema;
37
- private ensurePgVectorColumn;
40
+ private validateSchema;
38
41
  private ensurePgVectorSearchIndex;
39
- private ensureSourceKeyColumn;
40
- private ensureVectorIdentityColumns;
41
- private ensureVectorChunkIdentityUniqueConstraint;
42
- private backfillVectorComponents;
43
42
  private upsertSource;
44
43
  private estimateDatabaseBytes;
45
44
  private requireExecutor;