@undefineds.co/xpod 0.3.74 → 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 (363) 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 +21 -8
  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/runtime/css-process.js +0 -1
  70. package/dist/search/RdfSearchIntentSink.d.ts +17 -0
  71. package/dist/search/RdfSearchIntentSink.js +46 -0
  72. package/dist/search/RdfSearchIntentSink.jsonld +47 -0
  73. package/dist/search/RdfSearchReconciliationRepository.d.ts +81 -0
  74. package/dist/search/RdfSearchReconciliationRepository.js +771 -0
  75. package/dist/solidfs/LocalRdfAuthorityRecoveryInitializer.d.ts +15 -0
  76. package/dist/solidfs/LocalRdfAuthorityRecoveryInitializer.js +48 -0
  77. package/dist/solidfs/LocalRdfAuthorityRecoveryInitializer.jsonld +99 -0
  78. package/dist/solidfs/RdfIndexSolidFsSyncer.js +22 -4
  79. package/dist/solidfs/SolidFsSyncJournal.d.ts +7 -1
  80. package/dist/solidfs/SolidFsSyncJournal.js +20 -5
  81. package/dist/solidfs/SolidFsSyncJournal.jsonld +43 -0
  82. package/dist/solidfs/index.d.ts +1 -0
  83. package/dist/solidfs/index.js +1 -0
  84. package/dist/storage/SparqlUpdateResourceStore.js +3 -3
  85. package/dist/storage/accessors/MixDataAccessor.d.ts +21 -29
  86. package/dist/storage/accessors/MixDataAccessor.js +182 -399
  87. package/dist/storage/accessors/MixDataAccessor.jsonld +109 -87
  88. package/dist/storage/accessors/SolidRdfDataAccessor.d.ts +12 -8
  89. package/dist/storage/accessors/SolidRdfDataAccessor.js +189 -59
  90. package/dist/storage/accessors/SolidRdfDataAccessor.jsonld +14 -29
  91. package/dist/storage/rdf/LocalQleverNativeSparqlClient.d.ts +55 -0
  92. package/dist/storage/rdf/LocalQleverNativeSparqlClient.js +519 -0
  93. package/dist/storage/rdf/LocalQleverNativeSparqlClient.jsonld +314 -0
  94. package/dist/storage/rdf/PostgresRdfEngine.d.ts +3 -1
  95. package/dist/storage/rdf/PostgresRdfEngine.js +111 -74
  96. package/dist/storage/rdf/PostgresRdfEngine.jsonld +12 -22
  97. package/dist/storage/rdf/PostgresRdfSchemaValidation.d.ts +8 -0
  98. package/dist/storage/rdf/PostgresRdfSchemaValidation.js +82 -0
  99. package/dist/storage/rdf/PostgresRdfTextIndex.d.ts +6 -3
  100. package/dist/storage/rdf/PostgresRdfTextIndex.js +158 -80
  101. package/dist/storage/rdf/PostgresRdfTextIndex.jsonld +16 -4
  102. package/dist/storage/rdf/PostgresRdfVectorIndex.d.ts +4 -5
  103. package/dist/storage/rdf/PostgresRdfVectorIndex.js +124 -120
  104. package/dist/storage/rdf/PostgresRdfVectorIndex.jsonld +14 -18
  105. package/dist/storage/rdf/QleverSparqlEngine.d.ts +35 -0
  106. package/dist/storage/rdf/QleverSparqlEngine.js +185 -0
  107. package/dist/storage/rdf/QleverSparqlEngine.jsonld +70 -0
  108. package/dist/storage/rdf/Rdf3xIndex.js +20 -16
  109. package/dist/storage/rdf/RdfAccessScope.d.ts +4 -0
  110. package/dist/storage/rdf/RdfAccessScope.js +74 -9
  111. package/dist/storage/rdf/RdfAccessScope.jsonld +16 -0
  112. package/dist/storage/rdf/RdfEngineRdfJsSource.d.ts +14 -0
  113. package/dist/storage/rdf/RdfEngineRdfJsSource.js +179 -0
  114. package/dist/storage/rdf/RdfQuadIndex.d.ts +13 -14
  115. package/dist/storage/rdf/RdfQuadIndex.js +286 -99
  116. package/dist/storage/rdf/RdfQuadIndex.jsonld +10 -22
  117. package/dist/storage/rdf/RdfQueryExecutor.js +10 -4
  118. package/dist/storage/rdf/RdfQuerySparqlEngine.d.ts +33 -0
  119. package/dist/storage/rdf/RdfQuerySparqlEngine.js +215 -0
  120. package/dist/storage/rdf/RdfQuerySparqlEngine.jsonld +78 -0
  121. package/dist/storage/rdf/RdfSparqlAdapter.d.ts +0 -4
  122. package/dist/storage/rdf/RdfSparqlAdapter.js +75 -173
  123. package/dist/storage/rdf/RdfSparqlBoundary.d.ts +37 -0
  124. package/dist/storage/rdf/RdfSparqlBoundary.js +247 -0
  125. package/dist/storage/rdf/RdfSparqlSerialization.d.ts +3 -0
  126. package/dist/storage/rdf/RdfSparqlSerialization.js +19 -0
  127. package/dist/storage/rdf/RdfSqliteConnection.d.ts +7 -0
  128. package/dist/storage/rdf/RdfSqliteConnection.js +23 -0
  129. package/dist/storage/rdf/RdfTermDictionary.d.ts +0 -8
  130. package/dist/storage/rdf/RdfTermDictionary.js +0 -136
  131. package/dist/storage/rdf/RdfTermDictionary.jsonld +0 -32
  132. package/dist/storage/rdf/RdfTermSemantics.d.ts +6 -0
  133. package/dist/storage/rdf/RdfTermSemantics.js +29 -0
  134. package/dist/storage/rdf/RdfTextIndex.d.ts +5 -6
  135. package/dist/storage/rdf/RdfTextIndex.js +187 -115
  136. package/dist/storage/rdf/RdfTextIndex.jsonld +10 -14
  137. package/dist/storage/rdf/RdfVectorIndex.d.ts +4 -4
  138. package/dist/storage/rdf/RdfVectorIndex.js +156 -233
  139. package/dist/storage/rdf/RdfVectorIndex.jsonld +10 -14
  140. package/dist/storage/rdf/SolidRdfEngine.d.ts +16 -21
  141. package/dist/storage/rdf/SolidRdfEngine.js +28 -308
  142. package/dist/storage/rdf/SolidRdfEngine.jsonld +26 -148
  143. package/dist/storage/rdf/XpodComunicaQueryEngine.d.ts +10 -0
  144. package/dist/storage/rdf/XpodComunicaQueryEngine.js +72 -0
  145. package/dist/storage/rdf/index.d.ts +7 -6
  146. package/dist/storage/rdf/index.js +17 -12
  147. package/dist/storage/rdf/models-benchmark.d.ts +5 -1
  148. package/dist/storage/rdf/models-benchmark.js +17 -19
  149. package/dist/storage/rdf/types.d.ts +68 -6
  150. package/dist/storage/rdf/types.jsonld +69 -0
  151. package/dist/storage/sparql/SubgraphQueryEngine.d.ts +13 -7
  152. package/dist/storage/sparql/SubgraphQueryEngine.js +6 -6
  153. package/dist/storage/vector/index.d.ts +0 -1
  154. package/dist/storage/vector/index.js +0 -1
  155. package/dist/terminal/AclPermissionService.d.ts +4 -5
  156. package/dist/terminal/AclPermissionService.js +55 -75
  157. package/dist/terminal/TerminalSessionManager.d.ts +3 -2
  158. package/dist/terminal/TerminalSessionManager.js +3 -3
  159. package/node_modules/@undefineds.co/drizzle-solid/dist/core/execution/ldp-executor.d.ts +1 -0
  160. package/node_modules/@undefineds.co/drizzle-solid/dist/core/execution/ldp-executor.d.ts.map +1 -1
  161. package/node_modules/@undefineds.co/drizzle-solid/dist/core/execution/ldp-executor.js +29 -26
  162. package/node_modules/@undefineds.co/drizzle-solid/dist/core/execution/ldp-executor.js.map +1 -1
  163. package/node_modules/@undefineds.co/drizzle-solid/dist/core/execution/sparql-strategy.d.ts.map +1 -1
  164. package/node_modules/@undefineds.co/drizzle-solid/dist/core/execution/sparql-strategy.js +9 -4
  165. package/node_modules/@undefineds.co/drizzle-solid/dist/core/execution/sparql-strategy.js.map +1 -1
  166. package/node_modules/@undefineds.co/drizzle-solid/dist/core/notifications/notifications-client.d.ts +1 -0
  167. package/node_modules/@undefineds.co/drizzle-solid/dist/core/notifications/notifications-client.d.ts.map +1 -1
  168. package/node_modules/@undefineds.co/drizzle-solid/dist/core/notifications/notifications-client.js +6 -3
  169. package/node_modules/@undefineds.co/drizzle-solid/dist/core/notifications/notifications-client.js.map +1 -1
  170. package/node_modules/@undefineds.co/drizzle-solid/dist/core/pod-database.js +3 -3
  171. package/node_modules/@undefineds.co/drizzle-solid/dist/core/pod-database.js.map +1 -1
  172. package/node_modules/@undefineds.co/drizzle-solid/dist/core/query-builders/select-query-builder.d.ts +6 -0
  173. package/node_modules/@undefineds.co/drizzle-solid/dist/core/query-builders/select-query-builder.d.ts.map +1 -1
  174. package/node_modules/@undefineds.co/drizzle-solid/dist/core/query-builders/select-query-builder.js +13 -3
  175. package/node_modules/@undefineds.co/drizzle-solid/dist/core/query-builders/select-query-builder.js.map +1 -1
  176. package/node_modules/@undefineds.co/drizzle-solid/dist/core/query-where-policy.d.ts +1 -0
  177. package/node_modules/@undefineds.co/drizzle-solid/dist/core/query-where-policy.d.ts.map +1 -1
  178. package/node_modules/@undefineds.co/drizzle-solid/dist/core/query-where-policy.js +31 -0
  179. package/node_modules/@undefineds.co/drizzle-solid/dist/core/query-where-policy.js.map +1 -1
  180. package/node_modules/@undefineds.co/drizzle-solid/dist/core/sparql/builder/expression-builder.d.ts.map +1 -1
  181. package/node_modules/@undefineds.co/drizzle-solid/dist/core/sparql/builder/expression-builder.js +5 -0
  182. package/node_modules/@undefineds.co/drizzle-solid/dist/core/sparql/builder/expression-builder.js.map +1 -1
  183. package/node_modules/@undefineds.co/drizzle-solid/dist/core/sparql-executor.d.ts +1 -0
  184. package/node_modules/@undefineds.co/drizzle-solid/dist/core/sparql-executor.d.ts.map +1 -1
  185. package/node_modules/@undefineds.co/drizzle-solid/dist/core/sparql-executor.js +45 -0
  186. package/node_modules/@undefineds.co/drizzle-solid/dist/core/sparql-executor.js.map +1 -1
  187. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/execution/ldp-executor.d.ts +1 -0
  188. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/execution/ldp-executor.d.ts.map +1 -1
  189. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/execution/ldp-executor.js +29 -26
  190. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/execution/ldp-executor.js.map +1 -1
  191. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/execution/sparql-strategy.d.ts.map +1 -1
  192. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/execution/sparql-strategy.js +9 -4
  193. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/execution/sparql-strategy.js.map +1 -1
  194. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/notifications/notifications-client.d.ts +1 -0
  195. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/notifications/notifications-client.d.ts.map +1 -1
  196. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/notifications/notifications-client.js +6 -3
  197. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/notifications/notifications-client.js.map +1 -1
  198. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/pod-database.js +3 -3
  199. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/pod-database.js.map +1 -1
  200. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/query-builders/select-query-builder.d.ts +6 -0
  201. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/query-builders/select-query-builder.d.ts.map +1 -1
  202. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/query-builders/select-query-builder.js +14 -4
  203. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/query-builders/select-query-builder.js.map +1 -1
  204. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/query-where-policy.d.ts +1 -0
  205. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/query-where-policy.d.ts.map +1 -1
  206. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/query-where-policy.js +30 -0
  207. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/query-where-policy.js.map +1 -1
  208. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/sparql/builder/expression-builder.d.ts.map +1 -1
  209. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/sparql/builder/expression-builder.js +5 -0
  210. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/sparql/builder/expression-builder.js.map +1 -1
  211. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/sparql-executor.d.ts +1 -0
  212. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/sparql-executor.d.ts.map +1 -1
  213. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/sparql-executor.js +45 -0
  214. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/sparql-executor.js.map +1 -1
  215. package/node_modules/@undefineds.co/drizzle-solid/package.json +5 -4
  216. package/package.json +19 -8
  217. package/static/app/assets/{index-36TJKN-3.js → index-BikOyGPu.js} +34 -34
  218. package/static/app/assets/inrupt-smoke.js +2 -2
  219. package/static/app/assets/main.css +1 -1
  220. package/static/app/assets/main.js +11 -11
  221. package/static/auth-callback/assets/{AiConfigContext-DNfRNaZQ.js → AiConfigContext-iQ74JmRZ.js} +1 -1
  222. package/static/auth-callback/assets/{AiConfigPage-BBiTOm3o.js → AiConfigPage-BBDKE1gJ.js} +1 -1
  223. package/static/auth-callback/assets/{DocumentProcessingPanel-BzpEwqKT.js → DocumentProcessingPanel-D9NntIEK.js} +1 -1
  224. package/static/auth-callback/assets/{IndexLifecyclePanel-CvXMwooQ.js → IndexLifecyclePanel-BG07yBdA.js} +1 -1
  225. package/static/auth-callback/assets/{IndexSubjectPanel-CayA221L.js → IndexSubjectPanel-B-bUnU3G.js} +1 -1
  226. package/static/auth-callback/assets/{ModelAssignmentsPanel-Iew2QgtR.js → ModelAssignmentsPanel-C7I-Nqy-.js} +1 -1
  227. package/static/auth-callback/assets/{ModelsPage-CTJKAUA3.js → ModelsPage-C2hxyrmI.js} +1 -1
  228. package/static/auth-callback/assets/{NetworkPage--8ZCjIHB.js → NetworkPage-IGIc2q1Y.js} +1 -1
  229. package/static/auth-callback/assets/{PaneListHeader-BT-OGKL7.js → PaneListHeader-CebuPl_g.js} +1 -1
  230. package/static/auth-callback/assets/{SearchIndexingPanel-CFjjk1-C.js → SearchIndexingPanel-6HnZSg00.js} +1 -1
  231. package/static/auth-callback/assets/{StatusSubjectPanel-DAN5Ej9q.js → StatusSubjectPanel-votxBkr5.js} +1 -1
  232. package/static/auth-callback/assets/{StatusWorkspace-CEgmKJcX.js → StatusWorkspace-Cksl61zX.js} +1 -1
  233. package/static/auth-callback/assets/{SystemSettingsPage-Bk0TB4RU.js → SystemSettingsPage-CKZFUaZT.js} +1 -1
  234. package/static/auth-callback/assets/{SystemSettingsSubjectPanel-CKl8ukiz.js → SystemSettingsSubjectPanel-pzfUcCf4.js} +1 -1
  235. package/static/auth-callback/assets/{activity-BOtct9Ie.js → activity-DQL6kZHZ.js} +1 -1
  236. package/static/auth-callback/assets/auth-callback-B_s8Ye5Z.css +1 -0
  237. package/static/auth-callback/assets/{auth-callback-ai6OMe6C.js → auth-callback-BxQMd_Mc.js} +39 -39
  238. package/static/auth-callback/assets/{badge-DGSg5wio.js → badge-DvW4LUHH.js} +1 -1
  239. package/static/auth-callback/assets/{download-4eVPmxQ_.js → download-Cx_uaCR1.js} +1 -1
  240. package/static/auth-callback/assets/{external-link-BlD92fAM.js → external-link-D6L6ExH1.js} +1 -1
  241. package/static/auth-callback/assets/{index-FrugCRsJ.js → index-BAS_hxGu.js} +1 -1
  242. package/static/auth-callback/assets/{index-7ppych8q.js → index-BmBjpCoD.js} +1 -1
  243. package/static/auth-callback/assets/{index-browser-dwpJ2mdT.js → index-browser-pdn4D3M4.js} +1 -1
  244. package/static/auth-callback/assets/{key-round-BFOQbNNp.js → key-round-BTBzOggq.js} +1 -1
  245. package/static/auth-callback/assets/{rotate-ccw-BySVgaAP.js → rotate-ccw-eV7Cx8sB.js} +1 -1
  246. package/static/auth-callback/assets/{skeleton-CgcxPTqc.js → skeleton-Bg4GYgBM.js} +1 -1
  247. package/static/auth-callback/assets/{waypoints-DM902DhB.js → waypoints-CJbydf0B.js} +1 -1
  248. package/static/auth-callback/assets/{workspace-layout-DlZlN49Q.js → workspace-layout-C6Hh8Xf-.js} +1 -1
  249. package/static/auth-callback/auth-callback.html +2 -2
  250. package/static/dashboard/assets/{AiConfigContext-VnWI7bOR.js → AiConfigContext-BkJj28vK.js} +1 -1
  251. package/static/dashboard/assets/{AiConfigPage-Dn3oxXcA.js → AiConfigPage-Cs9B4uyp.js} +1 -1
  252. package/static/dashboard/assets/{DocumentProcessingPanel-CAF1uLi3.js → DocumentProcessingPanel-BBWmM7mS.js} +1 -1
  253. package/static/dashboard/assets/{IndexLifecyclePanel-D9zVZwu8.js → IndexLifecyclePanel-D5xGTT_i.js} +1 -1
  254. package/static/dashboard/assets/{IndexSubjectPanel-_JCGwJmO.js → IndexSubjectPanel-d-mjDthn.js} +1 -1
  255. package/static/dashboard/assets/{ModelAssignmentsPanel-DtlxQxFa.js → ModelAssignmentsPanel-C-OLNbqf.js} +1 -1
  256. package/static/dashboard/assets/{ModelsPage-CCNTpXM5.js → ModelsPage-CBrLjuUn.js} +1 -1
  257. package/static/dashboard/assets/{NetworkPage-BAKv9unq.js → NetworkPage-BlYk8L1z.js} +1 -1
  258. package/static/dashboard/assets/{PaneListHeader-Dr1jq2Ii.js → PaneListHeader-A5oZJQC0.js} +1 -1
  259. package/static/dashboard/assets/{SearchIndexingPanel-BW0pPrQB.js → SearchIndexingPanel-Bs1j8ZP2.js} +1 -1
  260. package/static/dashboard/assets/{StatusSubjectPanel-c9iebk4M.js → StatusSubjectPanel-Qao3orvi.js} +1 -1
  261. package/static/dashboard/assets/{StatusWorkspace-KZ7zrrmB.js → StatusWorkspace-rDM0yDtk.js} +1 -1
  262. package/static/dashboard/assets/{SystemSettingsPage-fVSfJMi9.js → SystemSettingsPage-FPRPkKaR.js} +1 -1
  263. package/static/dashboard/assets/{SystemSettingsSubjectPanel-DUSxcVT8.js → SystemSettingsSubjectPanel-CjlJAxnX.js} +1 -1
  264. package/static/dashboard/assets/{activity-Dg4XxJA8.js → activity-CJ5K6hYC.js} +1 -1
  265. package/static/dashboard/assets/{badge-OHMG7sYk.js → badge-L-NMOi1P.js} +1 -1
  266. package/static/dashboard/assets/dashboard-B_s8Ye5Z.css +1 -0
  267. package/static/dashboard/assets/{dashboard-UuQZ5g0B.js → dashboard-DyjAyYxx.js} +34 -34
  268. package/static/dashboard/assets/{download-CkbQhuL2.js → download-Bi4u5K5B.js} +1 -1
  269. package/static/dashboard/assets/{external-link-C15frgwD.js → external-link-jmhLDfvT.js} +1 -1
  270. package/static/dashboard/assets/{index-BiU8tNWd.js → index-BoaGJBxf.js} +1 -1
  271. package/static/dashboard/assets/{index-JUkJUI4K.js → index-C22TAEi4.js} +1 -1
  272. package/static/dashboard/assets/{key-round-BVREfX5D.js → key-round-Dk1VmMrn.js} +1 -1
  273. package/static/dashboard/assets/{rotate-ccw-cPEquKE_.js → rotate-ccw-DIfLsSwi.js} +1 -1
  274. package/static/dashboard/assets/{skeleton-BPM2LdA5.js → skeleton-BGPJMHb-.js} +1 -1
  275. package/static/dashboard/assets/{waypoints-Cd3kODMk.js → waypoints-CY53egpu.js} +1 -1
  276. package/static/dashboard/assets/{workspace-layout-BP3gLLXb.js → workspace-layout-CoHkcx70.js} +1 -1
  277. package/static/dashboard/dashboard.html +2 -2
  278. package/static/settings/assets/{AiConfigContext-B-D3riwG.js → AiConfigContext-BcEPlEJe.js} +1 -1
  279. package/static/settings/assets/{AiConfigPage-CAYT-CgT.js → AiConfigPage-D-t3ZUhg.js} +1 -1
  280. package/static/settings/assets/{DocumentProcessingPanel-D__vS86O.js → DocumentProcessingPanel-m2SasiMO.js} +1 -1
  281. package/static/settings/assets/{IndexLifecyclePanel-CuYEAG62.js → IndexLifecyclePanel-BNmAvx8V.js} +1 -1
  282. package/static/settings/assets/{IndexSubjectPanel-Do71gQQC.js → IndexSubjectPanel-C5-L2AcW.js} +1 -1
  283. package/static/settings/assets/{ModelAssignmentsPanel-Cn3kSze7.js → ModelAssignmentsPanel-Cfpkf02Y.js} +1 -1
  284. package/static/settings/assets/{ModelsPage-BKO0ARYt.js → ModelsPage-DZrACwVN.js} +1 -1
  285. package/static/settings/assets/{NetworkPage-XPYrdyVd.js → NetworkPage-BlrGGfqL.js} +1 -1
  286. package/static/settings/assets/{PaneListHeader-BAiQcCss.js → PaneListHeader-C3TCs1RI.js} +1 -1
  287. package/static/settings/assets/{SearchIndexingPanel-Bx3Fco0x.js → SearchIndexingPanel-Cyp3CUzX.js} +1 -1
  288. package/static/settings/assets/{StatusSubjectPanel-BzKzXmSL.js → StatusSubjectPanel-gRkb8WEX.js} +1 -1
  289. package/static/settings/assets/{StatusWorkspace-NjLpo9xp.js → StatusWorkspace-Dptx4Ec2.js} +1 -1
  290. package/static/settings/assets/{SystemSettingsPage-CclI_Lpv.js → SystemSettingsPage-BWgGUQbs.js} +1 -1
  291. package/static/settings/assets/{SystemSettingsSubjectPanel-CMnSE-8N.js → SystemSettingsSubjectPanel-VflUvpgC.js} +1 -1
  292. package/static/settings/assets/{activity-DYpNPFzG.js → activity-D7iNhTkQ.js} +1 -1
  293. package/static/settings/assets/{badge-C7Vhmg28.js → badge-DO0r_RT4.js} +1 -1
  294. package/static/settings/assets/{download-DdXcAiwj.js → download-CsJlNSbd.js} +1 -1
  295. package/static/settings/assets/{external-link-D7thdQae.js → external-link-BCR7SHme.js} +1 -1
  296. package/static/settings/assets/{index-CwBKvDQZ.js → index-Cgq16ekN.js} +1 -1
  297. package/static/settings/assets/{index-BnYbrf5s.js → index-SrhQvcrU.js} +1 -1
  298. package/static/settings/assets/{index-browser-DYzi1DO1.js → index-browser-THpcMCnz.js} +1 -1
  299. package/static/settings/assets/{key-round-BXErodZA.js → key-round-Dd3jk1BT.js} +1 -1
  300. package/static/settings/assets/{rotate-ccw-DPyOBmDD.js → rotate-ccw-tiL14i1d.js} +1 -1
  301. package/static/settings/assets/settings-B_s8Ye5Z.css +1 -0
  302. package/static/settings/assets/{settings-BGpEf8nx.js → settings-CVLDPejo.js} +34 -34
  303. package/static/settings/assets/{skeleton-S9l3JIr9.js → skeleton-DBxLuNgU.js} +1 -1
  304. package/static/settings/assets/{waypoints-C5By7zWc.js → waypoints-DS3e3hv7.js} +1 -1
  305. package/static/settings/assets/{workspace-layout-Bb6RVAEx.js → workspace-layout-mucrxyTK.js} +1 -1
  306. package/static/settings/settings.html +2 -2
  307. package/config/search.json +0 -66
  308. package/dist/document/HeadingChunker.jsonld +0 -41
  309. package/dist/security/secret-cell/DeploymentRootKeyProvider.jsonld +0 -124
  310. package/dist/security/secret-cell/SecretCellVault.jsonld +0 -207
  311. package/dist/storage/PostgresDerivedIndexJournal.d.ts +0 -47
  312. package/dist/storage/PostgresDerivedIndexJournal.js +0 -408
  313. package/dist/storage/PostgresDerivedIndexJournal.jsonld +0 -303
  314. package/dist/storage/RdfDerivedIndexingListener.d.ts +0 -32
  315. package/dist/storage/RdfDerivedIndexingListener.js +0 -135
  316. package/dist/storage/RdfDerivedIndexingListener.jsonld +0 -228
  317. package/dist/storage/accessors/QuadstoreSparqlDataAccessor.d.ts +0 -148
  318. package/dist/storage/accessors/QuadstoreSparqlDataAccessor.js +0 -436
  319. package/dist/storage/accessors/QuadstoreSparqlDataAccessor.jsonld +0 -172
  320. package/dist/storage/accessors/QuintStoreSparqlDataAccessor.d.ts +0 -102
  321. package/dist/storage/accessors/QuintStoreSparqlDataAccessor.js +0 -474
  322. package/dist/storage/accessors/QuintStoreSparqlDataAccessor.jsonld +0 -192
  323. package/dist/storage/rdf/RdfSparqlAdapter.jsonld +0 -486
  324. package/dist/storage/rdf/ShadowRdfQuintStore.d.ts +0 -59
  325. package/dist/storage/rdf/ShadowRdfQuintStore.js +0 -216
  326. package/dist/storage/rdf/ShadowRdfQuintStore.jsonld +0 -312
  327. package/dist/storage/rdf/SolidRdfSparqlEngine.d.ts +0 -107
  328. package/dist/storage/rdf/SolidRdfSparqlEngine.js +0 -1117
  329. package/dist/storage/rdf/SolidRdfSparqlEngine.jsonld +0 -312
  330. package/dist/storage/sparql/AlgebraUtils.d.ts +0 -48
  331. package/dist/storage/sparql/AlgebraUtils.js +0 -118
  332. package/dist/storage/sparql/CompatibilitySparqlEngine.d.ts +0 -37
  333. package/dist/storage/sparql/CompatibilitySparqlEngine.js +0 -96
  334. package/dist/storage/sparql/CompatibilitySparqlEngine.jsonld +0 -123
  335. package/dist/storage/sparql/CompatibilitySparqlEngineImpl.d.ts +0 -36
  336. package/dist/storage/sparql/CompatibilitySparqlEngineImpl.js +0 -124
  337. package/dist/storage/sparql/ComunicaOptimizedEngine.d.ts +0 -59
  338. package/dist/storage/sparql/ComunicaOptimizedEngine.js +0 -254
  339. package/dist/storage/sparql/ComunicaQuintEngine.d.ts +0 -143
  340. package/dist/storage/sparql/ComunicaQuintEngine.js +0 -781
  341. package/dist/storage/sparql/ExpressionEvaluator.d.ts +0 -54
  342. package/dist/storage/sparql/ExpressionEvaluator.js +0 -340
  343. package/dist/storage/sparql/FilterPushdownExtractor.d.ts +0 -74
  344. package/dist/storage/sparql/FilterPushdownExtractor.js +0 -421
  345. package/dist/storage/sparql/OptimizedQuadstoreEngine.d.ts +0 -65
  346. package/dist/storage/sparql/OptimizedQuadstoreEngine.js +0 -327
  347. package/dist/storage/sparql/OptimizedQuadstoreSource.d.ts +0 -46
  348. package/dist/storage/sparql/OptimizedQuadstoreSource.js +0 -118
  349. package/dist/storage/sparql/PatternBuilder.d.ts +0 -41
  350. package/dist/storage/sparql/PatternBuilder.js +0 -118
  351. package/dist/storage/sparql/QueryOptimizer.d.ts +0 -125
  352. package/dist/storage/sparql/QueryOptimizer.js +0 -375
  353. package/dist/storage/sparql/QuintEngine.d.ts +0 -92
  354. package/dist/storage/sparql/QuintEngine.js +0 -150
  355. package/dist/storage/sparql/QuintQuerySource.d.ts +0 -241
  356. package/dist/storage/sparql/QuintQuerySource.js +0 -1069
  357. package/dist/storage/sparql/SimpleSparqlExecutor.d.ts +0 -40
  358. package/dist/storage/sparql/SimpleSparqlExecutor.js +0 -131
  359. package/dist/storage/vector/VectorIndexingListener.d.ts +0 -114
  360. package/dist/storage/vector/VectorIndexingListener.js +0 -346
  361. package/static/auth-callback/assets/auth-callback-rWdEQY5f.css +0 -1
  362. package/static/dashboard/assets/dashboard-rWdEQY5f.css +0 -1
  363. package/static/settings/assets/settings-rWdEQY5f.css +0 -1
@@ -1,9 +1,10 @@
1
1
  import type { EmbeddingService } from '../../ai/service';
2
2
  import type { RdfEngineLike, RdfTextChunkInput, RdfTextSourceInput, RdfVectorSourceInput } from '../../storage/rdf/types';
3
3
  import type { StoreContext } from '../chatkit/store';
4
- export type RdfVectorIndexingSkippedReason = 'rdf_engine_unavailable' | 'vector_index_unavailable' | 'ai_config_unavailable' | 'embedding_model_unavailable' | 'embedding_provider_failed';
4
+ import { type EmbeddingProviderFailureCategory } from '../../ai/service/EmbeddingProviderError';
5
+ export type RdfVectorIndexingSkippedReason = 'rdf_engine_unavailable' | 'vector_index_unavailable' | 'ai_config_unavailable' | 'embedding_model_unavailable' | 'text_source_unavailable' | EmbeddingProviderFailureCategory;
5
6
  export interface RdfSearchIndexingServiceOptions {
6
- rdfEngine?: Pick<RdfEngineLike, 'indexVectorSource' | 'deleteVectorSource'>;
7
+ rdfEngine?: Pick<RdfEngineLike, 'indexVectorSource' | 'deleteVectorSource' | 'listTextSourceChunks'>;
7
8
  store: {
8
9
  getAiConfig(context: StoreContext): Promise<RdfSearchAiConfig | undefined> | RdfSearchAiConfig | undefined;
9
10
  };
@@ -26,7 +27,8 @@ export interface RdfSearchAiConfig {
26
27
  credentialId: string;
27
28
  }
28
29
  export interface IndexRdfVectorSourceInput {
29
- context: StoreContext;
30
+ context?: StoreContext;
31
+ embeddingConfig?: RdfSearchAiConfig;
30
32
  source: RdfTextSourceInput & RdfVectorSourceInput;
31
33
  text?: string;
32
34
  chunks?: RdfTextChunkInput[];
@@ -34,17 +36,44 @@ export interface IndexRdfVectorSourceInput {
34
36
  export interface DeleteRdfVectorSourceInput {
35
37
  source: string;
36
38
  }
39
+ export interface RebuildRdfVectorSourceInput {
40
+ context?: StoreContext;
41
+ embeddingConfig?: RdfSearchAiConfig;
42
+ sourceKey: string;
43
+ }
37
44
  export type RdfVectorIndexingResult = {
38
45
  status: 'indexed';
39
46
  source: string;
47
+ sourceHash?: string;
48
+ sourceVersion?: string;
49
+ providerId?: string;
40
50
  model?: string;
51
+ modelVersion?: string;
52
+ configFingerprint?: string;
41
53
  chunkCount: number;
42
54
  skippedInputs?: RdfSkippedEmbeddingInput[];
43
55
  summarizedInputs?: RdfSummarizedEmbeddingInput[];
44
56
  } | {
45
57
  status: 'skipped';
46
58
  source: string;
59
+ sourceHash?: string;
60
+ sourceVersion?: string;
47
61
  reason: RdfVectorIndexingSkippedReason;
62
+ providerId?: string;
63
+ model?: string;
64
+ modelVersion?: string;
65
+ configFingerprint?: string;
66
+ message?: string;
67
+ } | {
68
+ status: 'retryable';
69
+ source: string;
70
+ sourceHash?: string;
71
+ sourceVersion?: string;
72
+ reason: EmbeddingProviderFailureCategory;
73
+ providerId: string;
74
+ model: string;
75
+ modelVersion?: string;
76
+ configFingerprint: string;
48
77
  message?: string;
49
78
  };
50
79
  export interface RdfVectorDeleteResult {
@@ -88,6 +117,9 @@ export interface RdfSummarizedEmbeddingInput {
88
117
  summaryChars: number;
89
118
  rounds: number;
90
119
  }
120
+ export declare const DEFAULT_RDF_VECTOR_MODEL_VERSION = "unversioned";
121
+ export declare const DEFAULT_RDF_VECTOR_PROJECTION_POLICY_VERSION = "rdf-vector-projection-v1";
122
+ export declare function normalizeRdfVectorModelVersion(value: string | undefined): string;
91
123
  /**
92
124
  * Product-level bridge from Pod-owned AI credentials to the RDF vector index.
93
125
  *
@@ -98,6 +130,7 @@ export interface RdfSummarizedEmbeddingInput {
98
130
  export declare class RdfSearchIndexingService {
99
131
  private readonly options;
100
132
  constructor(options: RdfSearchIndexingServiceOptions);
133
+ rebuildVectorSource(input: RebuildRdfVectorSourceInput): Promise<RdfVectorIndexingResult>;
101
134
  indexVectorSource(input: IndexRdfVectorSourceInput): Promise<RdfVectorIndexingResult>;
102
135
  deleteVectorSource(input: DeleteRdfVectorSourceInput): Promise<RdfVectorDeleteResult>;
103
136
  private sourceWithHash;
@@ -110,4 +143,5 @@ export declare class RdfSearchIndexingService {
110
143
  private summarizeEmbeddingInput;
111
144
  private skippedEmbeddingInput;
112
145
  private indexedResult;
146
+ private skippedResult;
113
147
  }
@@ -1,11 +1,17 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.RdfSearchIndexingService = void 0;
3
+ exports.RdfSearchIndexingService = exports.DEFAULT_RDF_VECTOR_PROJECTION_POLICY_VERSION = exports.DEFAULT_RDF_VECTOR_MODEL_VERSION = void 0;
4
+ exports.normalizeRdfVectorModelVersion = normalizeRdfVectorModelVersion;
4
5
  const node_crypto_1 = require("node:crypto");
5
6
  const RdfTextIndex_1 = require("../../storage/rdf/RdfTextIndex");
7
+ const EmbeddingProviderError_1 = require("../../ai/service/EmbeddingProviderError");
6
8
  const DEFAULT_EMBEDDING_INPUT_KINDS = ['semantic'];
7
- const DEFAULT_PROJECTION_POLICY_VERSION = 'rdf-vector-projection-v1';
9
+ exports.DEFAULT_RDF_VECTOR_MODEL_VERSION = 'unversioned';
10
+ exports.DEFAULT_RDF_VECTOR_PROJECTION_POLICY_VERSION = 'rdf-vector-projection-v1';
8
11
  const DEFAULT_SUMMARY_PROMPT_VERSION = 'rdf-embedding-summary-v1';
12
+ function normalizeRdfVectorModelVersion(value) {
13
+ return value?.trim() || exports.DEFAULT_RDF_VECTOR_MODEL_VERSION;
14
+ }
9
15
  /**
10
16
  * Product-level bridge from Pod-owned AI credentials to the RDF vector index.
11
17
  *
@@ -17,6 +23,48 @@ class RdfSearchIndexingService {
17
23
  constructor(options) {
18
24
  this.options = options;
19
25
  }
26
+ async rebuildVectorSource(input) {
27
+ if (!this.options.rdfEngine) {
28
+ return { status: 'skipped', source: input.sourceKey, reason: 'rdf_engine_unavailable' };
29
+ }
30
+ if (!this.options.rdfEngine.listTextSourceChunks) {
31
+ return { status: 'skipped', source: input.sourceKey, reason: 'vector_index_unavailable' };
32
+ }
33
+ const chunks = await this.options.rdfEngine.listTextSourceChunks(input.sourceKey);
34
+ if (chunks.length === 0) {
35
+ if (this.options.rdfEngine.deleteVectorSource) {
36
+ await this.options.rdfEngine.deleteVectorSource(input.sourceKey);
37
+ }
38
+ return { status: 'skipped', source: input.sourceKey, reason: 'text_source_unavailable' };
39
+ }
40
+ const first = chunks[0];
41
+ return this.indexVectorSource({
42
+ context: input.context,
43
+ embeddingConfig: input.embeddingConfig,
44
+ source: {
45
+ sourceKey: first.sourceKey,
46
+ source: first.source,
47
+ workspace: first.workspace,
48
+ localPath: first.localPath,
49
+ contentType: first.contentType,
50
+ sourceVersion: first.sourceVersion,
51
+ sourceHash: first.sourceHash,
52
+ },
53
+ chunks: chunks.map((chunk) => ({
54
+ chunkKey: chunk.retrievalPointKey,
55
+ retrievalPointKey: chunk.retrievalPointKey,
56
+ retrievalKind: chunk.retrievalKind,
57
+ ordinal: chunk.ordinal,
58
+ level: chunk.level,
59
+ heading: chunk.heading,
60
+ path: chunk.path,
61
+ content: chunk.content,
62
+ startOffset: chunk.startOffset,
63
+ endOffset: chunk.endOffset,
64
+ entities: chunk.entities,
65
+ })),
66
+ });
67
+ }
20
68
  async indexVectorSource(input) {
21
69
  if (!this.options.rdfEngine) {
22
70
  return { status: 'skipped', source: input.source.source, reason: 'rdf_engine_unavailable' };
@@ -28,20 +76,22 @@ class RdfSearchIndexingService {
28
76
  const textChunks = this.textChunks(source, input);
29
77
  if (textChunks.length === 0) {
30
78
  await this.options.rdfEngine.indexVectorSource(source, []);
31
- return { status: 'indexed', source: source.source, chunkCount: 0 };
79
+ return this.indexedResult(source, undefined, 0, [], []);
32
80
  }
33
81
  const { accepted: embeddingInputs, skipped: skippedInputs, summarized: summarizedInputs } = await this.resolveEmbeddingInputBudget(source, this.embeddingInputs(source, textChunks));
34
82
  if (embeddingInputs.length === 0) {
35
83
  await this.options.rdfEngine.indexVectorSource(source, []);
36
- return this.indexedResult(source.source, undefined, 0, skippedInputs, summarizedInputs);
84
+ return this.indexedResult(source, undefined, 0, skippedInputs, summarizedInputs);
37
85
  }
38
- const config = await this.options.store.getAiConfig(input.context);
86
+ const config = input.embeddingConfig ?? (input.context ? await this.options.store.getAiConfig(input.context) : undefined);
39
87
  if (!config?.apiKey) {
40
- return { status: 'skipped', source: source.source, reason: 'ai_config_unavailable' };
88
+ return this.skippedResult(source, 'ai_config_unavailable');
41
89
  }
42
90
  if (!config.embeddingModel) {
43
- return { status: 'skipped', source: source.source, reason: 'embedding_model_unavailable' };
91
+ return this.skippedResult(source, 'embedding_model_unavailable');
44
92
  }
93
+ const embeddingModel = config.embeddingModel;
94
+ const embeddingModelVersion = normalizeRdfVectorModelVersion(config.embeddingModelVersion);
45
95
  const contents = embeddingInputs.map((embeddingInput) => embeddingInput.content);
46
96
  let embeddings;
47
97
  try {
@@ -50,13 +100,42 @@ class RdfSearchIndexingService {
50
100
  apiKey: config.apiKey,
51
101
  baseUrl: config.baseUrl,
52
102
  proxyUrl: config.proxyUrl,
53
- }, config.embeddingModel);
103
+ }, embeddingModel);
54
104
  }
55
105
  catch (error) {
106
+ const failure = (0, EmbeddingProviderError_1.classifyEmbeddingProviderFailure)(error);
107
+ if (!failure.retryable) {
108
+ return {
109
+ status: 'skipped',
110
+ source: source.source,
111
+ ...(source.sourceHash ? { sourceHash: source.sourceHash } : {}),
112
+ ...(source.sourceVersion ? { sourceVersion: source.sourceVersion } : {}),
113
+ reason: failure.category,
114
+ providerId: config.providerId,
115
+ model: embeddingModel,
116
+ modelVersion: embeddingModelVersion,
117
+ configFingerprint: embeddingConfigFingerprint({
118
+ ...config,
119
+ embeddingModel,
120
+ embeddingModelVersion,
121
+ }),
122
+ message: error instanceof Error ? error.message : String(error),
123
+ };
124
+ }
56
125
  return {
57
- status: 'skipped',
126
+ status: 'retryable',
58
127
  source: source.source,
59
- reason: 'embedding_provider_failed',
128
+ ...(source.sourceHash ? { sourceHash: source.sourceHash } : {}),
129
+ ...(source.sourceVersion ? { sourceVersion: source.sourceVersion } : {}),
130
+ reason: failure.category,
131
+ providerId: config.providerId,
132
+ model: embeddingModel,
133
+ modelVersion: embeddingModelVersion,
134
+ configFingerprint: embeddingConfigFingerprint({
135
+ ...config,
136
+ embeddingModel,
137
+ embeddingModelVersion,
138
+ }),
60
139
  message: error instanceof Error ? error.message : String(error),
61
140
  };
62
141
  }
@@ -70,8 +149,8 @@ class RdfSearchIndexingService {
70
149
  level: chunk.level,
71
150
  embedding: embeddings[index],
72
151
  provider: config.providerId,
73
- model: config.embeddingModel,
74
- modelVersion: config.embeddingModelVersion,
152
+ model: embeddingModel,
153
+ modelVersion: embeddingModelVersion,
75
154
  inputKind: kind,
76
155
  inputHash,
77
156
  projectionPolicyVersion,
@@ -82,7 +161,16 @@ class RdfSearchIndexingService {
82
161
  endOffset: chunk.endOffset,
83
162
  summaryMetadata,
84
163
  })));
85
- return this.indexedResult(source.source, config.embeddingModel, embeddingInputs.length, skippedInputs, summarizedInputs);
164
+ return this.indexedResult(source, {
165
+ providerId: config.providerId,
166
+ model: embeddingModel,
167
+ modelVersion: embeddingModelVersion,
168
+ configFingerprint: embeddingConfigFingerprint({
169
+ ...config,
170
+ embeddingModel,
171
+ embeddingModelVersion,
172
+ }),
173
+ }, embeddingInputs.length, skippedInputs, summarizedInputs);
86
174
  }
87
175
  async deleteVectorSource(input) {
88
176
  if (!this.options.rdfEngine) {
@@ -114,7 +202,7 @@ class RdfSearchIndexingService {
114
202
  }
115
203
  return {
116
204
  ...source,
117
- sourceHash: (0, node_crypto_1.createHash)('sha256').update(text).digest('hex'),
205
+ sourceHash: `sha256:${(0, node_crypto_1.createHash)('sha256').update(text).digest('hex')}`,
118
206
  };
119
207
  }
120
208
  textChunks(source, input) {
@@ -149,7 +237,7 @@ class RdfSearchIndexingService {
149
237
  return [...new Set(configured)];
150
238
  }
151
239
  projectionPolicyVersion() {
152
- return this.options.projectionPolicyVersion ?? DEFAULT_PROJECTION_POLICY_VERSION;
240
+ return this.options.projectionPolicyVersion ?? exports.DEFAULT_RDF_VECTOR_PROJECTION_POLICY_VERSION;
153
241
  }
154
242
  embeddingInputContent(source, chunk, kind) {
155
243
  if (kind === 'semantic') {
@@ -257,16 +345,40 @@ class RdfSearchIndexingService {
257
345
  ...(message ? { message } : {}),
258
346
  };
259
347
  }
260
- indexedResult(source, model, chunkCount, skippedInputs, summarizedInputs = []) {
348
+ indexedResult(source, profile, chunkCount, skippedInputs, summarizedInputs = []) {
261
349
  return {
262
350
  status: 'indexed',
263
- source,
264
- ...(model ? { model } : {}),
351
+ source: source.source,
352
+ ...(source.sourceHash ? { sourceHash: source.sourceHash } : {}),
353
+ ...(source.sourceVersion ? { sourceVersion: source.sourceVersion } : {}),
354
+ ...(profile?.providerId ? { providerId: profile.providerId } : {}),
355
+ ...(profile?.model ? { model: profile.model } : {}),
356
+ ...(profile?.modelVersion ? { modelVersion: profile.modelVersion } : {}),
357
+ ...(profile?.configFingerprint ? { configFingerprint: profile.configFingerprint } : {}),
265
358
  chunkCount,
266
359
  ...(skippedInputs.length > 0 ? { skippedInputs } : {}),
267
360
  ...(summarizedInputs.length > 0 ? { summarizedInputs } : {}),
268
361
  };
269
362
  }
363
+ skippedResult(source, reason) {
364
+ return {
365
+ status: 'skipped',
366
+ source: source.source,
367
+ ...(source.sourceHash ? { sourceHash: source.sourceHash } : {}),
368
+ ...(source.sourceVersion ? { sourceVersion: source.sourceVersion } : {}),
369
+ reason,
370
+ };
371
+ }
270
372
  }
271
373
  exports.RdfSearchIndexingService = RdfSearchIndexingService;
374
+ function embeddingConfigFingerprint(input) {
375
+ return `sha256:${(0, node_crypto_1.createHash)('sha256')
376
+ .update([
377
+ input.providerId,
378
+ input.embeddingModel,
379
+ normalizeRdfVectorModelVersion(input.embeddingModelVersion),
380
+ input.credentialId,
381
+ ].join('\0'))
382
+ .digest('hex')}`;
383
+ }
272
384
  //# sourceMappingURL=RdfSearchIndexingService.js.map
@@ -1,5 +1,6 @@
1
1
  import type { SolidFsChange, SolidFsManifest, SolidFsPrepareInput, SolidFsSyncer } from '../../solidfs';
2
2
  import type { RdfSearchIndexingService, RdfVectorDeleteResult, RdfVectorIndexingResult } from './RdfSearchIndexingService';
3
+ import type { RdfSearchReconciliationRepository } from '../../search/RdfSearchReconciliationRepository';
3
4
  export interface RdfSearchIndexingSolidFsSyncerOptions {
4
5
  service: RdfSearchIndexingService;
5
6
  /**
@@ -9,6 +10,9 @@ export interface RdfSearchIndexingSolidFsSyncerOptions {
9
10
  failOnError?: boolean;
10
11
  onError?: (error: unknown, input: RdfSearchIndexingSolidFsSyncerErrorInput) => void;
11
12
  onResult?: (result: RdfVectorIndexingResult | RdfVectorDeleteResult) => void;
13
+ reconciliationRepository?: Pick<RdfSearchReconciliationRepository, 'upsertRetryable' | 'upsertBlockedConfig' | 'waitForConfig' | 'upsertApplied' | 'deleteSource'>;
14
+ now?: () => number;
15
+ retryDelayMs?: number;
12
16
  }
13
17
  export interface RdfSearchIndexingSolidFsSyncerErrorInput {
14
18
  change: SolidFsChange;
@@ -20,8 +24,12 @@ export declare class RdfSearchIndexingSolidFsSyncer implements SolidFsSyncer {
20
24
  private readonly failOnError;
21
25
  private readonly onError?;
22
26
  private readonly onResult?;
27
+ private readonly reconciliationRepository?;
28
+ private readonly now;
29
+ private readonly retryDelayMs;
23
30
  constructor(options: RdfSearchIndexingSolidFsSyncerOptions);
24
31
  shouldTrack(input: SolidFsPrepareInput): boolean;
25
32
  shouldTrackPath(relativePath: string): boolean;
26
33
  sync(change: SolidFsChange, workspace: SolidFsManifest, context?: unknown): Promise<void>;
34
+ private recordReconciliationResult;
27
35
  }
@@ -1,19 +1,23 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
2
  Object.defineProperty(exports, "__esModule", { value: true });
6
3
  exports.RdfSearchIndexingSolidFsSyncer = void 0;
7
- const promises_1 = require("node:fs/promises");
8
- const node_path_1 = __importDefault(require("node:path"));
9
4
  const solidfs_1 = require("../../solidfs");
10
5
  const RdfContentTypes_1 = require("../../storage/rdf/RdfContentTypes");
6
+ const BLOCKED_CONFIG_FAILURES = new Set([
7
+ 'embedding_authentication_failed',
8
+ 'embedding_authorization_failed',
9
+ 'embedding_model_invalid',
10
+ 'embedding_request_invalid',
11
+ ]);
11
12
  class RdfSearchIndexingSolidFsSyncer {
12
13
  constructor(options) {
13
14
  this.service = options.service;
14
15
  this.failOnError = options.failOnError === true;
15
16
  this.onError = options.onError;
16
17
  this.onResult = options.onResult;
18
+ this.reconciliationRepository = options.reconciliationRepository;
19
+ this.now = options.now ?? Date.now;
20
+ this.retryDelayMs = options.retryDelayMs ?? 60_000;
17
21
  }
18
22
  shouldTrack(input) {
19
23
  try {
@@ -38,21 +42,15 @@ class RdfSearchIndexingSolidFsSyncer {
38
42
  try {
39
43
  if (change.type === 'deleted') {
40
44
  const result = await this.service.deleteVectorSource({ source });
45
+ await this.reconciliationRepository?.deleteSource(source);
41
46
  this.onResult?.(result);
42
47
  return;
43
48
  }
44
- const text = await (0, promises_1.readFile)(change.sourcePath, 'utf8');
45
- const result = await this.service.indexVectorSource({
49
+ const result = await this.service.rebuildVectorSource({
46
50
  context,
47
- source: {
48
- source,
49
- workspace: workspace.workspace,
50
- localPath: change.path.split(node_path_1.default.sep).join('/'),
51
- contentType: change.contentType,
52
- sourceVersion: change.sourceVersion,
53
- },
54
- text,
51
+ sourceKey: source,
55
52
  });
53
+ await this.recordReconciliationResult(result, source, workspace.workspace);
56
54
  this.onResult?.(result);
57
55
  }
58
56
  catch (error) {
@@ -62,8 +60,97 @@ class RdfSearchIndexingSolidFsSyncer {
62
60
  }
63
61
  }
64
62
  }
63
+ async recordReconciliationResult(result, source, podRoot) {
64
+ const identity = {
65
+ sourceHash: result.sourceHash,
66
+ sourceVersion: result.sourceVersion,
67
+ };
68
+ if (result.status !== 'skipped') {
69
+ if (result.status !== 'retryable') {
70
+ if (hasAppliedEmbeddingProfile(result)) {
71
+ await this.reconciliationRepository?.upsertApplied({
72
+ sourceKey: source,
73
+ sourceUri: source,
74
+ podRoot,
75
+ providerId: result.providerId,
76
+ model: result.model,
77
+ modelVersion: result.modelVersion,
78
+ configFingerprint: result.configFingerprint,
79
+ sourceHash: identity.sourceHash,
80
+ sourceVersion: identity.sourceVersion,
81
+ reason: 'source-indexed',
82
+ });
83
+ }
84
+ else {
85
+ await this.reconciliationRepository?.deleteSource(source);
86
+ }
87
+ return;
88
+ }
89
+ await this.reconciliationRepository?.upsertRetryable({
90
+ sourceKey: source,
91
+ sourceUri: source,
92
+ podRoot,
93
+ providerId: result.providerId,
94
+ model: result.model,
95
+ modelVersion: result.modelVersion,
96
+ configFingerprint: result.configFingerprint,
97
+ sourceHash: identity.sourceHash,
98
+ sourceVersion: identity.sourceVersion,
99
+ reason: result.reason,
100
+ failureCategory: result.reason,
101
+ nextAttemptAt: new Date(this.now() + this.retryDelayMs),
102
+ });
103
+ return;
104
+ }
105
+ if (result.reason === 'text_source_unavailable') {
106
+ await this.reconciliationRepository?.deleteSource(source);
107
+ return;
108
+ }
109
+ if (BLOCKED_CONFIG_FAILURES.has(result.reason)) {
110
+ if (!hasBlockedEmbeddingProfile(result)) {
111
+ return;
112
+ }
113
+ await this.reconciliationRepository?.upsertBlockedConfig({
114
+ sourceKey: source,
115
+ sourceUri: source,
116
+ podRoot,
117
+ providerId: result.providerId,
118
+ model: result.model,
119
+ modelVersion: result.modelVersion,
120
+ configFingerprint: result.configFingerprint,
121
+ sourceHash: identity.sourceHash,
122
+ sourceVersion: identity.sourceVersion,
123
+ reason: result.reason,
124
+ failureCategory: result.reason,
125
+ });
126
+ return;
127
+ }
128
+ if (result.reason !== 'ai_config_unavailable' && result.reason !== 'embedding_model_unavailable') {
129
+ return;
130
+ }
131
+ await this.reconciliationRepository?.waitForConfig({
132
+ sourceKey: source,
133
+ sourceUri: source,
134
+ podRoot,
135
+ sourceHash: identity.sourceHash,
136
+ sourceVersion: identity.sourceVersion,
137
+ reason: result.reason,
138
+ failureCategory: result.reason,
139
+ });
140
+ }
65
141
  }
66
142
  exports.RdfSearchIndexingSolidFsSyncer = RdfSearchIndexingSolidFsSyncer;
143
+ function hasBlockedEmbeddingProfile(result) {
144
+ return typeof result.providerId === 'string'
145
+ && typeof result.model === 'string'
146
+ && typeof result.configFingerprint === 'string';
147
+ }
148
+ function hasAppliedEmbeddingProfile(result) {
149
+ return result.status === 'indexed'
150
+ && typeof result.providerId === 'string'
151
+ && typeof result.model === 'string'
152
+ && typeof result.configFingerprint === 'string';
153
+ }
67
154
  function isSearchIndexableChange(change) {
68
155
  return (0, RdfContentTypes_1.isLineAddressableRdf)(change.contentType, change.path)
69
156
  || isTextContentType(change.contentType)
@@ -0,0 +1,76 @@
1
+ import type { RdfEngineLike } from '../../storage/rdf';
2
+ import type { StoreContext } from '../chatkit/store';
3
+ import type { RunAuthContextRegistry } from '../runs/RunAuthContextRegistry';
4
+ import { type RdfSearchIndexingService } from './RdfSearchIndexingService';
5
+ import type { RdfSearchReconciliationRepository } from '../../search/RdfSearchReconciliationRepository';
6
+ export interface RdfSearchReconciliationWorkerOptions {
7
+ repository: RdfSearchReconciliationRepository;
8
+ indexingService?: RdfSearchIndexingService;
9
+ contextRegistry: RunAuthContextRegistry;
10
+ store?: {
11
+ getAiConfig(context: StoreContext): Promise<RdfSearchEmbeddingConfig | undefined> | RdfSearchEmbeddingConfig | undefined;
12
+ };
13
+ rdfEngine?: Pick<RdfEngineLike, 'listTextSources'>;
14
+ workerId?: string;
15
+ now?: () => number;
16
+ leaseDurationMs?: number;
17
+ maxBatchSize?: number;
18
+ intervalMs?: number;
19
+ reconcileIntervalMs?: number;
20
+ retryBaseDelayMs?: number;
21
+ retryMaxDelayMs?: number;
22
+ sourcePageSize?: number;
23
+ onError?: (error: unknown, input: RdfSearchReconciliationWorkerErrorInput) => void;
24
+ }
25
+ export interface RdfSearchEmbeddingConfig {
26
+ providerId: string;
27
+ baseUrl: string;
28
+ proxyUrl?: string;
29
+ defaultModel?: string;
30
+ embeddingModel?: string;
31
+ embeddingModelVersion?: string;
32
+ apiKey: string;
33
+ credentialId: string;
34
+ }
35
+ export interface RdfSearchReconciliationDrainResult {
36
+ processed: number;
37
+ }
38
+ export interface RdfSearchRememberedContextReconciliationResult {
39
+ contexts: number;
40
+ sources: number;
41
+ }
42
+ export interface RdfSearchReconciliationWorkerErrorInput {
43
+ phase: 'tick' | 'drain' | 'reconcile';
44
+ sourceKey?: string;
45
+ sourceUri?: string;
46
+ }
47
+ export declare class RdfSearchReconciliationWorker {
48
+ private readonly repository;
49
+ private readonly indexingService?;
50
+ private readonly contextRegistry;
51
+ private readonly store?;
52
+ private readonly rdfEngine?;
53
+ private readonly workerId;
54
+ private readonly now;
55
+ private readonly leaseDurationMs;
56
+ private readonly maxBatchSize;
57
+ private readonly intervalMs;
58
+ private readonly reconcileIntervalMs;
59
+ private readonly retryBaseDelayMs;
60
+ private readonly retryMaxDelayMs;
61
+ private readonly sourcePageSize;
62
+ private readonly onError?;
63
+ private timer;
64
+ private running;
65
+ constructor(options: RdfSearchReconciliationWorkerOptions);
66
+ start(): void;
67
+ stop(): void;
68
+ drain(): Promise<RdfSearchReconciliationDrainResult>;
69
+ reconcileRememberedContexts(): Promise<RdfSearchRememberedContextReconciliationResult>;
70
+ private process;
71
+ private recordResult;
72
+ private contextForSource;
73
+ private desiredProfile;
74
+ private nextAttemptAt;
75
+ private reportError;
76
+ }