@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
@@ -1,40 +0,0 @@
1
- /**
2
- * SimpleSparqlExecutor - 绕过 Comunica 执行简单 SPARQL UPDATE
3
- *
4
- * 针对 Pod 创建场景优化:
5
- * - 直接解析 INSERT DATA / DELETE DATA
6
- * - 不经过 Comunica 的复杂查询计划
7
- * - 批量执行,减少事务开销
8
- */
9
- import type { QuintStore } from '../quint/types';
10
- /**
11
- * 简单的 SPARQL UPDATE 解析器
12
- * 只处理 INSERT DATA / DELETE DATA 的简单形式
13
- */
14
- export declare class SimpleSparqlExecutor {
15
- private readonly store;
16
- constructor(store: QuintStore);
17
- /**
18
- * 尝试执行简单的 SPARQL UPDATE
19
- * @returns true 如果成功执行,false 如果不支持该查询格式
20
- */
21
- tryExecute(query: string): Promise<boolean>;
22
- /**
23
- * 解析简单的 SPARQL UPDATE
24
- * 支持的格式:
25
- * - INSERT DATA { GRAPH <uri> { ... } }
26
- * - DELETE DATA { GRAPH <uri> { ... } }
27
- * - INSERT DATA { ... }
28
- * - DELETE DATA { ... }
29
- */
30
- private parseSimpleUpdate;
31
- /**
32
- * 从代码块解析三元组
33
- * 简单实现,只处理基本格式
34
- */
35
- private parseQuadsFromBlock;
36
- /**
37
- * 解析 Turtle 格式的三元组(简化版)
38
- */
39
- private parseTriples;
40
- }
@@ -1,131 +0,0 @@
1
- "use strict";
2
- /**
3
- * SimpleSparqlExecutor - 绕过 Comunica 执行简单 SPARQL UPDATE
4
- *
5
- * 针对 Pod 创建场景优化:
6
- * - 直接解析 INSERT DATA / DELETE DATA
7
- * - 不经过 Comunica 的复杂查询计划
8
- * - 批量执行,减少事务开销
9
- */
10
- Object.defineProperty(exports, "__esModule", { value: true });
11
- exports.SimpleSparqlExecutor = void 0;
12
- /**
13
- * 简单的 SPARQL UPDATE 解析器
14
- * 只处理 INSERT DATA / DELETE DATA 的简单形式
15
- */
16
- class SimpleSparqlExecutor {
17
- constructor(store) {
18
- this.store = store;
19
- }
20
- /**
21
- * 尝试执行简单的 SPARQL UPDATE
22
- * @returns true 如果成功执行,false 如果不支持该查询格式
23
- */
24
- async tryExecute(query) {
25
- const pattern = this.parseSimpleUpdate(query);
26
- if (!pattern) {
27
- return false; // 不支持,让调用方使用 Comunica
28
- }
29
- if (pattern.type === 'insert') {
30
- await this.store.multiPut(pattern.quads);
31
- }
32
- else {
33
- // 逐条删除(因为 QuintStore 没有 multiDel 方法)
34
- for (const q of pattern.quads) {
35
- await this.store.del({
36
- graph: q.graph,
37
- subject: q.subject,
38
- predicate: q.predicate,
39
- object: q.object,
40
- });
41
- }
42
- }
43
- return true;
44
- }
45
- /**
46
- * 解析简单的 SPARQL UPDATE
47
- * 支持的格式:
48
- * - INSERT DATA { GRAPH <uri> { ... } }
49
- * - DELETE DATA { GRAPH <uri> { ... } }
50
- * - INSERT DATA { ... }
51
- * - DELETE DATA { ... }
52
- */
53
- parseSimpleUpdate(query) {
54
- const trimmed = query.trim();
55
- // 检查是否是 INSERT DATA
56
- const insertMatch = trimmed.match(/^INSERT\s+DATA\s*\{/i);
57
- if (insertMatch) {
58
- const quads = this.parseQuadsFromBlock(trimmed, 'INSERT DATA');
59
- if (quads) {
60
- return { type: 'insert', quads };
61
- }
62
- }
63
- // 检查是否是 DELETE DATA
64
- const deleteMatch = trimmed.match(/^DELETE\s+DATA\s*\{/i);
65
- if (deleteMatch) {
66
- const quads = this.parseQuadsFromBlock(trimmed, 'DELETE DATA');
67
- if (quads) {
68
- return { type: 'delete', quads };
69
- }
70
- }
71
- return null; // 不支持
72
- }
73
- /**
74
- * 从代码块解析三元组
75
- * 简单实现,只处理基本格式
76
- */
77
- parseQuadsFromBlock(query, prefix) {
78
- // 提取大括号内的内容
79
- const blockStart = query.indexOf('{');
80
- const blockEnd = query.lastIndexOf('}');
81
- if (blockStart === -1 || blockEnd === -1 || blockEnd <= blockStart) {
82
- return null;
83
- }
84
- let content = query.slice(blockStart + 1, blockEnd).trim();
85
- // 检查是否有 GRAPH 块
86
- const graphMatch = content.match(/GRAPH\s*<([^>]+)>\s*\{/);
87
- if (graphMatch) {
88
- const graphUri = graphMatch[1];
89
- const graphBlockStart = content.indexOf('{', content.indexOf('GRAPH'));
90
- const graphBlockEnd = content.indexOf('}', graphBlockStart);
91
- if (graphBlockStart === -1 || graphBlockEnd === -1) {
92
- return null;
93
- }
94
- content = content.slice(graphBlockStart + 1, graphBlockEnd).trim();
95
- // 解析三元组并添加 graph
96
- const triples = this.parseTriples(content);
97
- if (!triples)
98
- return null;
99
- const { DataFactory } = require('n3');
100
- const { namedNode } = DataFactory;
101
- return triples.map(t => ({
102
- ...t,
103
- graph: namedNode(graphUri),
104
- }));
105
- }
106
- // 没有 GRAPH,使用默认图
107
- return this.parseTriples(content);
108
- }
109
- /**
110
- * 解析 Turtle 格式的三元组(简化版)
111
- */
112
- parseTriples(content) {
113
- // 简化实现:使用 N3 Parser
114
- try {
115
- const { Parser, DataFactory } = require('n3');
116
- const { defaultGraph } = DataFactory;
117
- const parser = new Parser();
118
- const quads = parser.parse(content);
119
- // 为没有 graph 的 quad 添加默认图
120
- return quads.map((q) => ({
121
- ...q,
122
- graph: q.graph || defaultGraph(),
123
- }));
124
- }
125
- catch (error) {
126
- return null;
127
- }
128
- }
129
- }
130
- exports.SimpleSparqlExecutor = SimpleSparqlExecutor;
131
- //# sourceMappingURL=SimpleSparqlExecutor.js.map
@@ -1,114 +0,0 @@
1
- /**
2
- * VectorIndexingListener - 向量索引监听器
3
- *
4
- * 监听资源变更事件,自动触发向量索引更新。
5
- *
6
- * 工作流程:
7
- * 1. 收到资源变更事件
8
- * 2. 检查资源是否在某个 VectorStore 的 scope 内
9
- * 3. 如果是,读取资源内容,生成 embedding,存入向量库
10
- */
11
- import type { ResourceChangeEvent, ResourceChangeListener } from '../ObservableResourceStore';
12
- import type { VectorStore } from '../vector/VectorStore';
13
- import type { EmbeddingService } from '../../ai/service/EmbeddingService';
14
- import type { SparqlEngine } from '../sparql/SubgraphQueryEngine';
15
- import type { ResourceStore } from '@solid/community-server';
16
- /**
17
- * VectorStore 定义(从 RDF 读取)
18
- */
19
- export interface VectorStoreDefinition {
20
- /** VectorStore resource */
21
- resource: string;
22
- /** 索引范围(Container resource) */
23
- scope: string;
24
- /** embedding 模型 */
25
- model: string;
26
- /** 状态 */
27
- status: 'active' | 'paused';
28
- /** 分块大小 */
29
- chunkSize?: number;
30
- /** 分块重叠 */
31
- chunkOverlap?: number;
32
- }
33
- export interface VectorIndexingListenerOptions {
34
- /** SPARQL 引擎(用于查询 VectorStore 定义和 AI 凭据) */
35
- sparqlEngine: SparqlEngine;
36
- /** 向量存储 */
37
- vectorStore: VectorStore;
38
- /** Embedding 服务 */
39
- embeddingService: EmbeddingService;
40
- /** 资源存储(用于读取资源内容) */
41
- resourceStore: ResourceStore;
42
- /** 默认 embedding 模型 */
43
- defaultModel?: string;
44
- /** 支持的文件扩展名 */
45
- supportedExtensions?: string[];
46
- }
47
- /**
48
- * VectorIndexingListener - 自动向量索引
49
- */
50
- export declare class VectorIndexingListener implements ResourceChangeListener {
51
- protected readonly logger: import("global-logger-factory").Logger<unknown>;
52
- private readonly sparqlEngine;
53
- private readonly vectorStore;
54
- private readonly embeddingService;
55
- private readonly resourceStore;
56
- private readonly defaultModel;
57
- private readonly supportedExtensions;
58
- private vectorStoreCache;
59
- private cacheExpiry;
60
- private readonly cacheTtlMs;
61
- constructor(options: VectorIndexingListenerOptions);
62
- /**
63
- * 处理资源变更事件
64
- */
65
- onResourceChanged(event: ResourceChangeEvent): Promise<void>;
66
- /**
67
- * 处理删除操作
68
- */
69
- private handleDelete;
70
- /**
71
- * 处理创建或更新操作
72
- */
73
- private handleCreateOrUpdate;
74
- /**
75
- * 查找覆盖指定路径的 VectorStore
76
- */
77
- private findVectorStoresForPath;
78
- /**
79
- * 获取 Pod 的所有 VectorStore 定义
80
- */
81
- private getVectorStoreDefinitions;
82
- /**
83
- * 获取 AI 凭据
84
- */
85
- private getAiCredential;
86
- /**
87
- * 读取资源内容
88
- */
89
- private getResourceContent;
90
- /**
91
- * 检查是否为支持的文件类型
92
- */
93
- private isSupportedFile;
94
- /**
95
- * 获取文件扩展名
96
- */
97
- private getExtension;
98
- /**
99
- * 从路径提取 Pod base URL
100
- */
101
- private getPodBaseUrl;
102
- /**
103
- * 解析相对资源引用
104
- */
105
- private resolveResource;
106
- /**
107
- * 将路径转换为向量 ID(使用 hash)
108
- */
109
- private pathToVectorId;
110
- /**
111
- * 清除缓存
112
- */
113
- clearCache(): void;
114
- }
@@ -1,346 +0,0 @@
1
- "use strict";
2
- /**
3
- * VectorIndexingListener - 向量索引监听器
4
- *
5
- * 监听资源变更事件,自动触发向量索引更新。
6
- *
7
- * 工作流程:
8
- * 1. 收到资源变更事件
9
- * 2. 检查资源是否在某个 VectorStore 的 scope 内
10
- * 3. 如果是,读取资源内容,生成 embedding,存入向量库
11
- */
12
- Object.defineProperty(exports, "__esModule", { value: true });
13
- exports.VectorIndexingListener = void 0;
14
- const global_logger_factory_1 = require("global-logger-factory");
15
- const models_1 = require("@undefineds.co/models");
16
- /**
17
- * VectorIndexingListener - 自动向量索引
18
- */
19
- class VectorIndexingListener {
20
- constructor(options) {
21
- this.logger = (0, global_logger_factory_1.getLoggerFor)(this);
22
- // 缓存 VectorStore 定义,避免频繁查询
23
- this.vectorStoreCache = new Map();
24
- this.cacheExpiry = 0;
25
- this.cacheTtlMs = 60000; // 1 分钟缓存
26
- this.sparqlEngine = options.sparqlEngine;
27
- this.vectorStore = options.vectorStore;
28
- this.embeddingService = options.embeddingService;
29
- this.resourceStore = options.resourceStore;
30
- this.defaultModel = options.defaultModel ?? 'text-embedding-004';
31
- this.supportedExtensions = new Set(options.supportedExtensions ?? ['.txt', '.md', '.html', '.json', '.ttl', '.jsonld']);
32
- }
33
- /**
34
- * 处理资源变更事件
35
- */
36
- async onResourceChanged(event) {
37
- const { path, action, isContainer } = event;
38
- // 跳过容器变更
39
- if (isContainer) {
40
- this.logger.debug(`Skipping container: ${path}`);
41
- return;
42
- }
43
- // 检查文件扩展名
44
- if (!this.isSupportedFile(path)) {
45
- this.logger.debug(`Skipping unsupported file type: ${path}`);
46
- return;
47
- }
48
- // 获取 Pod base URL
49
- const podBaseUrl = this.getPodBaseUrl(path);
50
- if (!podBaseUrl) {
51
- this.logger.debug(`Cannot determine pod base URL for: ${path}`);
52
- return;
53
- }
54
- // 如果是 VectorStore 配置文件或 Credential 配置文件更新,清除缓存
55
- if (path.includes('vector-stores') || path.includes('credentials')) {
56
- this.logger.debug(`Configuration file updated, clearing cache for ${podBaseUrl}`);
57
- this.vectorStoreCache.delete(podBaseUrl);
58
- // 配置文件本身不需要索引,直接返回
59
- return;
60
- }
61
- try {
62
- // 查找覆盖此路径的 VectorStore
63
- const vectorStores = await this.findVectorStoresForPath(path, podBaseUrl);
64
- if (vectorStores.length === 0) {
65
- this.logger.debug(`No VectorStore configured for: ${path}`);
66
- return;
67
- }
68
- this.logger.info(`Processing ${action} for ${path}, matched ${vectorStores.length} VectorStore(s)`);
69
- // 根据 action 执行索引操作
70
- if (action === 'delete') {
71
- await this.handleDelete(path, vectorStores);
72
- }
73
- else {
74
- await this.handleCreateOrUpdate(path, podBaseUrl, vectorStores);
75
- }
76
- }
77
- catch (error) {
78
- this.logger.error(`Failed to process ${action} for ${path}: ${error}`);
79
- }
80
- }
81
- /**
82
- * 处理删除操作
83
- */
84
- async handleDelete(path, vectorStores) {
85
- const vectorId = this.pathToVectorId(path);
86
- for (const vs of vectorStores) {
87
- try {
88
- await this.vectorStore.deleteVector(vs.model, vectorId);
89
- this.logger.info(`Deleted vector for ${path} from model ${vs.model}`);
90
- }
91
- catch (error) {
92
- this.logger.error(`Failed to delete vector for ${path}: ${error}`);
93
- }
94
- }
95
- }
96
- /**
97
- * 处理创建或更新操作
98
- */
99
- async handleCreateOrUpdate(path, podBaseUrl, vectorStores) {
100
- // 读取资源内容
101
- const content = await this.getResourceContent(path);
102
- if (!content || content.trim().length === 0) {
103
- this.logger.debug(`Empty content for ${path}, skipping`);
104
- return;
105
- }
106
- // 获取 AI 凭据
107
- const credential = await this.getAiCredential(podBaseUrl);
108
- if (!credential) {
109
- this.logger.warn(`No AI credential found for ${podBaseUrl}, skipping indexing`);
110
- return;
111
- }
112
- // 为每个 VectorStore 生成 embedding 并存储
113
- // 注意:如果多个 VectorStore 使用相同的 model,只需要生成一次 embedding
114
- const modelEmbeddings = new Map();
115
- for (const vs of vectorStores) {
116
- if (vs.status !== 'active') {
117
- this.logger.debug(`VectorStore ${vs.resource} is ${vs.status}, skipping`);
118
- continue;
119
- }
120
- const model = vs.model || this.defaultModel;
121
- try {
122
- // 检查是否已经生成过这个 model 的 embedding
123
- let embedding = modelEmbeddings.get(model);
124
- if (!embedding) {
125
- embedding = await this.embeddingService.embed(content, credential, model);
126
- modelEmbeddings.set(model, embedding);
127
- }
128
- // 确保向量表存在
129
- await this.vectorStore.ensureVectorTable(model);
130
- // 存储向量
131
- const vectorId = this.pathToVectorId(path);
132
- await this.vectorStore.upsertVector(model, vectorId, embedding);
133
- this.logger.info(`Indexed ${path} to model ${model}, vectorId=${vectorId}`);
134
- }
135
- catch (error) {
136
- this.logger.error(`Failed to index ${path} to model ${model}: ${error}`);
137
- }
138
- }
139
- }
140
- /**
141
- * 查找覆盖指定路径的 VectorStore
142
- */
143
- async findVectorStoresForPath(path, podBaseUrl) {
144
- const allStores = await this.getVectorStoreDefinitions(podBaseUrl);
145
- return allStores.filter((vs) => {
146
- // 检查 path 是否在 scope 内
147
- const scope = vs.scope.endsWith('/') ? vs.scope : `${vs.scope}/`;
148
- return path.startsWith(scope);
149
- });
150
- }
151
- /**
152
- * 获取 Pod 的所有 VectorStore 定义
153
- */
154
- async getVectorStoreDefinitions(podBaseUrl) {
155
- // 检查缓存
156
- if (Date.now() < this.cacheExpiry && this.vectorStoreCache.has(podBaseUrl)) {
157
- return this.vectorStoreCache.get(podBaseUrl);
158
- }
159
- try {
160
- // 使用 undefineds.co/ns# 命名空间,与 drizzle-solid schema 一致
161
- const query = `
162
- PREFIX udfs: <https://undefineds.co/ns#>
163
- SELECT ?vs ?scope ?model ?status ?chunkSize ?chunkOverlap WHERE {
164
- ?vs a udfs:VectorStore ;
165
- udfs:container ?scope .
166
- OPTIONAL { ?vs udfs:chunkingStrategy ?model }
167
- OPTIONAL { ?vs udfs:status ?status }
168
- OPTIONAL { ?vs udfs:chunkSize ?chunkSize }
169
- OPTIONAL { ?vs udfs:chunkOverlap ?chunkOverlap }
170
- }
171
- `;
172
- const bindingsStream = await this.sparqlEngine.queryBindings(query, podBaseUrl);
173
- const definitions = [];
174
- for await (const binding of bindingsStream) {
175
- const vs = binding.get('vs');
176
- const scope = binding.get('scope');
177
- const model = binding.get('model');
178
- const status = binding.get('status');
179
- const chunkSize = binding.get('chunkSize');
180
- const chunkOverlap = binding.get('chunkOverlap');
181
- if (vs && scope) {
182
- definitions.push({
183
- resource: vs.value,
184
- scope: this.resolveResource(scope.value, podBaseUrl),
185
- model: model?.value || this.defaultModel,
186
- status: status?.value || 'active',
187
- chunkSize: chunkSize ? parseInt(chunkSize.value, 10) : undefined,
188
- chunkOverlap: chunkOverlap ? parseInt(chunkOverlap.value, 10) : undefined,
189
- });
190
- }
191
- }
192
- // 更新缓存
193
- this.vectorStoreCache.set(podBaseUrl, definitions);
194
- this.cacheExpiry = Date.now() + this.cacheTtlMs;
195
- this.logger.debug(`Found ${definitions.length} VectorStore(s) for ${podBaseUrl}`);
196
- return definitions;
197
- }
198
- catch (error) {
199
- this.logger.error(`Failed to query VectorStore definitions: ${error}`);
200
- return [];
201
- }
202
- }
203
- /**
204
- * 获取 AI 凭据
205
- */
206
- async getAiCredential(podBaseUrl) {
207
- try {
208
- // Credential -> Provider 关联,从 Provider 获取 baseUrl 和 proxyUrl
209
- const query = `
210
- PREFIX cred: <${models_1.UDFS.NAMESPACE}>
211
- PREFIX ai: <${models_1.UDFS.NAMESPACE}>
212
- SELECT ?apiKey ?baseUrl ?provider ?proxyUrl WHERE {
213
- ?cred a cred:Credential ;
214
- cred:service "ai" ;
215
- cred:status "active" ;
216
- cred:apiKey ?apiKey .
217
- OPTIONAL { ?cred cred:provider ?provider }
218
- OPTIONAL {
219
- ?cred cred:provider ?provider .
220
- ?provider ai:baseUrl ?baseUrl .
221
- }
222
- OPTIONAL {
223
- ?cred cred:provider ?provider .
224
- ?provider ai:proxyUrl ?proxyUrl .
225
- }
226
- } LIMIT 1
227
- `;
228
- const bindingsStream = await this.sparqlEngine.queryBindings(query, podBaseUrl);
229
- for await (const binding of bindingsStream) {
230
- const apiKey = binding.get('apiKey');
231
- const baseUrl = binding.get('baseUrl');
232
- const provider = binding.get('provider');
233
- const proxyUrl = binding.get('proxyUrl');
234
- if (apiKey) {
235
- const providerName = (0, models_1.normalizeAIConfigProviderId)(provider?.value || 'google') || 'google';
236
- return {
237
- apiKey: apiKey.value,
238
- baseUrl: baseUrl?.value,
239
- provider: providerName,
240
- proxyUrl: proxyUrl?.value,
241
- };
242
- }
243
- }
244
- return null;
245
- }
246
- catch (error) {
247
- this.logger.error(`Failed to query AI credential: ${error}`);
248
- return null;
249
- }
250
- }
251
- /**
252
- * 读取资源内容
253
- */
254
- async getResourceContent(path) {
255
- try {
256
- const preferences = {
257
- type: { 'text/plain': 1, 'text/markdown': 0.9, 'text/turtle': 0.8, '*/*': 0.1 },
258
- };
259
- const representation = await this.resourceStore.getRepresentation({ path }, preferences);
260
- const chunks = [];
261
- for await (const chunk of representation.data) {
262
- chunks.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk));
263
- }
264
- return Buffer.concat(chunks).toString('utf-8');
265
- }
266
- catch (error) {
267
- this.logger.error(`Failed to read resource ${path}: ${error}`);
268
- return null;
269
- }
270
- }
271
- /**
272
- * 检查是否为支持的文件类型
273
- */
274
- isSupportedFile(path) {
275
- const ext = this.getExtension(path);
276
- return this.supportedExtensions.has(ext);
277
- }
278
- /**
279
- * 获取文件扩展名
280
- */
281
- getExtension(path) {
282
- const lastDot = path.lastIndexOf('.');
283
- if (lastDot === -1)
284
- return '';
285
- return path.slice(lastDot).toLowerCase();
286
- }
287
- /**
288
- * 从路径提取 Pod base URL
289
- */
290
- getPodBaseUrl(path) {
291
- // 假设路径格式为 /username/... 或 https://pod.example.com/username/...
292
- try {
293
- const url = new URL(path, 'http://localhost');
294
- const parts = url.pathname.split('/').filter(Boolean);
295
- if (parts.length > 0) {
296
- return `${url.origin}/${parts[0]}/`;
297
- }
298
- }
299
- catch {
300
- // 相对路径
301
- const parts = path.split('/').filter(Boolean);
302
- if (parts.length > 0) {
303
- return `/${parts[0]}/`;
304
- }
305
- }
306
- return null;
307
- }
308
- /**
309
- * 解析相对资源引用
310
- */
311
- resolveResource(resource, baseUrl) {
312
- if (resource.startsWith('http://') || resource.startsWith('https://')) {
313
- return resource;
314
- }
315
- if (resource.startsWith('/')) {
316
- try {
317
- const base = new URL(baseUrl);
318
- return `${base.origin}${resource}`;
319
- }
320
- catch {
321
- return resource;
322
- }
323
- }
324
- return `${baseUrl}${resource}`;
325
- }
326
- /**
327
- * 将路径转换为向量 ID(使用 hash)
328
- */
329
- pathToVectorId(path) {
330
- let hash = 2166136261; // FNV offset basis
331
- for (let i = 0; i < path.length; i++) {
332
- hash ^= path.charCodeAt(i);
333
- hash = Math.imul(hash, 16777619); // FNV prime
334
- }
335
- return Math.abs(hash);
336
- }
337
- /**
338
- * 清除缓存
339
- */
340
- clearCache() {
341
- this.vectorStoreCache.clear();
342
- this.cacheExpiry = 0;
343
- }
344
- }
345
- exports.VectorIndexingListener = VectorIndexingListener;
346
- //# sourceMappingURL=VectorIndexingListener.js.map