@undefineds.co/xpod 0.3.57 → 0.3.61

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 (779) hide show
  1. package/README.md +3 -0
  2. package/config/cli.json +88 -0
  3. package/config/cloud.json +32 -1
  4. package/config/components-ignore.json +3 -0
  5. package/config/extensions.local.initializer.json +44 -0
  6. package/config/resolver.json +86 -0
  7. package/config/xpod.base.json +4 -0
  8. package/dist/agents/AgentExecutorFactory.d.ts +3 -3
  9. package/dist/agents/AgentExecutorFactory.js +28 -15
  10. package/dist/agents/AgentExecutorFactory.js.map +1 -1
  11. package/dist/agents/BaseAgentExecutor.d.ts +2 -1
  12. package/dist/agents/BaseAgentExecutor.js +1 -0
  13. package/dist/agents/BaseAgentExecutor.js.map +1 -1
  14. package/dist/agents/ClaudeExecutor.d.ts +3 -1
  15. package/dist/agents/ClaudeExecutor.js +18 -12
  16. package/dist/agents/ClaudeExecutor.js.map +1 -1
  17. package/dist/agents/config/resolve.js +0 -21
  18. package/dist/agents/config/resolve.js.map +1 -1
  19. package/dist/agents/config/types.d.ts +2 -7
  20. package/dist/agents/config/types.js +2 -1
  21. package/dist/agents/config/types.js.map +1 -1
  22. package/dist/agents/types.d.ts +18 -0
  23. package/dist/agents/types.js.map +1 -1
  24. package/dist/ai/schema/types.d.ts +2 -1
  25. package/dist/ai/schema/types.js +1 -0
  26. package/dist/ai/schema/types.js.map +1 -1
  27. package/dist/ai/service/CredentialReader.d.ts +3 -1
  28. package/dist/ai/service/CredentialReader.js.map +1 -1
  29. package/dist/ai/service/CredentialReaderImpl.d.ts +3 -1
  30. package/dist/ai/service/CredentialReaderImpl.js +24 -2
  31. package/dist/ai/service/CredentialReaderImpl.js.map +1 -1
  32. package/dist/ai/service/EmbeddingServiceImpl.js +13 -2
  33. package/dist/ai/service/EmbeddingServiceImpl.js.map +1 -1
  34. package/dist/ai/service/ProviderRegistry.d.ts +4 -0
  35. package/dist/ai/service/ProviderRegistry.js.map +1 -1
  36. package/dist/ai/service/ProviderRegistry.jsonld +4 -0
  37. package/dist/ai/service/ProviderRegistryImpl.d.ts +4 -1
  38. package/dist/ai/service/ProviderRegistryImpl.js +26 -4
  39. package/dist/ai/service/ProviderRegistryImpl.js.map +1 -1
  40. package/dist/ai/service/ProviderRegistryImpl.jsonld +12 -0
  41. package/dist/ai/service/defaultEmbeddingProfile.d.ts +5 -0
  42. package/dist/ai/service/defaultEmbeddingProfile.js +31 -0
  43. package/dist/ai/service/defaultEmbeddingProfile.js.map +1 -0
  44. package/dist/ai/service/index.d.ts +1 -0
  45. package/dist/ai/service/index.js +1 -0
  46. package/dist/ai/service/index.js.map +1 -1
  47. package/dist/ai/service/types.d.ts +1 -0
  48. package/dist/ai/service/types.js.map +1 -1
  49. package/dist/api/ApiServer.js +17 -2
  50. package/dist/api/ApiServer.js.map +1 -1
  51. package/dist/api/ai-gateway/AiGatewayService.d.ts +106 -0
  52. package/dist/api/ai-gateway/AiGatewayService.js +527 -0
  53. package/dist/api/ai-gateway/AiGatewayService.js.map +1 -0
  54. package/dist/api/ai-gateway/auth/AiConnectionInvocationKeyIssuer.d.ts +38 -0
  55. package/dist/api/ai-gateway/auth/AiConnectionInvocationKeyIssuer.js +128 -0
  56. package/dist/api/ai-gateway/auth/AiConnectionInvocationKeyIssuer.js.map +1 -0
  57. package/dist/api/ai-gateway/auth/ClientCredentialsInternalPodAccessTokenProvider.d.ts +25 -0
  58. package/dist/api/ai-gateway/auth/ClientCredentialsInternalPodAccessTokenProvider.js +91 -0
  59. package/dist/api/ai-gateway/auth/ClientCredentialsInternalPodAccessTokenProvider.js.map +1 -0
  60. package/dist/api/ai-gateway/auth/GatewayApiKey.d.ts +28 -0
  61. package/dist/api/ai-gateway/auth/GatewayApiKey.js +162 -0
  62. package/dist/api/ai-gateway/auth/GatewayApiKey.js.map +1 -0
  63. package/dist/api/ai-gateway/auth/GatewayApiKeyAuthenticator.d.ts +56 -0
  64. package/dist/api/ai-gateway/auth/GatewayApiKeyAuthenticator.js +143 -0
  65. package/dist/api/ai-gateway/auth/GatewayApiKeyAuthenticator.js.map +1 -0
  66. package/dist/api/ai-gateway/auth/GatewayKeyLocatorCodec.d.ts +26 -0
  67. package/dist/api/ai-gateway/auth/GatewayKeyLocatorCodec.js +97 -0
  68. package/dist/api/ai-gateway/auth/GatewayKeyLocatorCodec.js.map +1 -0
  69. package/dist/api/ai-gateway/auth/GatewayPrincipal.d.ts +20 -0
  70. package/dist/api/ai-gateway/auth/GatewayPrincipal.js +37 -0
  71. package/dist/api/ai-gateway/auth/GatewayPrincipal.js.map +1 -0
  72. package/dist/api/ai-gateway/auth/InvocationTokenCodec.d.ts +41 -0
  73. package/dist/api/ai-gateway/auth/InvocationTokenCodec.js +221 -0
  74. package/dist/api/ai-gateway/auth/InvocationTokenCodec.js.map +1 -0
  75. package/dist/api/ai-gateway/auth/PodGatewayAccessKeyRepository.d.ts +54 -0
  76. package/dist/api/ai-gateway/auth/PodGatewayAccessKeyRepository.js +152 -0
  77. package/dist/api/ai-gateway/auth/PodGatewayAccessKeyRepository.js.map +1 -0
  78. package/dist/api/ai-gateway/connect/index.d.ts +367 -0
  79. package/dist/api/ai-gateway/connect/index.js +1061 -0
  80. package/dist/api/ai-gateway/connect/index.js.map +1 -0
  81. package/dist/api/ai-gateway/credentials/CloudKmsWrapper.d.ts +40 -0
  82. package/dist/api/ai-gateway/credentials/CloudKmsWrapper.js +59 -0
  83. package/dist/api/ai-gateway/credentials/CloudKmsWrapper.js.map +1 -0
  84. package/dist/api/ai-gateway/credentials/CredentialVault.d.ts +14 -0
  85. package/dist/api/ai-gateway/credentials/CredentialVault.js +11 -0
  86. package/dist/api/ai-gateway/credentials/CredentialVault.js.map +1 -0
  87. package/dist/api/ai-gateway/credentials/KeyWrapper.d.ts +27 -0
  88. package/dist/api/ai-gateway/credentials/KeyWrapper.js +3 -0
  89. package/dist/api/ai-gateway/credentials/KeyWrapper.js.map +1 -0
  90. package/dist/api/ai-gateway/credentials/LocalKeychainWrapper.d.ts +27 -0
  91. package/dist/api/ai-gateway/credentials/LocalKeychainWrapper.js +145 -0
  92. package/dist/api/ai-gateway/credentials/LocalKeychainWrapper.js.map +1 -0
  93. package/dist/api/ai-gateway/credentials/SecretCellCredentialVault.d.ts +13 -0
  94. package/dist/api/ai-gateway/credentials/SecretCellCredentialVault.js +133 -0
  95. package/dist/api/ai-gateway/credentials/SecretCellCredentialVault.js.map +1 -0
  96. package/dist/api/ai-gateway/credentials/SecretCellKeyWrapper.d.ts +23 -0
  97. package/dist/api/ai-gateway/credentials/SecretCellKeyWrapper.js +62 -0
  98. package/dist/api/ai-gateway/credentials/SecretCellKeyWrapper.js.map +1 -0
  99. package/dist/api/ai-gateway/credentials/WebCryptoCredentialVault.d.ts +23 -0
  100. package/dist/api/ai-gateway/credentials/WebCryptoCredentialVault.js +173 -0
  101. package/dist/api/ai-gateway/credentials/WebCryptoCredentialVault.js.map +1 -0
  102. package/dist/api/ai-gateway/errors.d.ts +21 -0
  103. package/dist/api/ai-gateway/errors.js +50 -0
  104. package/dist/api/ai-gateway/errors.js.map +1 -0
  105. package/dist/api/ai-gateway/protocol/ChatCompletionsFrontend.d.ts +6 -0
  106. package/dist/api/ai-gateway/protocol/ChatCompletionsFrontend.js +111 -0
  107. package/dist/api/ai-gateway/protocol/ChatCompletionsFrontend.js.map +1 -0
  108. package/dist/api/ai-gateway/protocol/MessagesFrontend.d.ts +6 -0
  109. package/dist/api/ai-gateway/protocol/MessagesFrontend.js +99 -0
  110. package/dist/api/ai-gateway/protocol/MessagesFrontend.js.map +1 -0
  111. package/dist/api/ai-gateway/protocol/ResponsesFrontend.d.ts +6 -0
  112. package/dist/api/ai-gateway/protocol/ResponsesFrontend.js +232 -0
  113. package/dist/api/ai-gateway/protocol/ResponsesFrontend.js.map +1 -0
  114. package/dist/api/ai-gateway/protocol/index.d.ts +3 -0
  115. package/dist/api/ai-gateway/protocol/index.js +10 -0
  116. package/dist/api/ai-gateway/protocol/index.js.map +1 -0
  117. package/dist/api/ai-gateway/providers/AnthropicRuntimeAdapter.d.ts +7 -0
  118. package/dist/api/ai-gateway/providers/AnthropicRuntimeAdapter.js +37 -0
  119. package/dist/api/ai-gateway/providers/AnthropicRuntimeAdapter.js.map +1 -0
  120. package/dist/api/ai-gateway/providers/BailianRuntimeAdapter.d.ts +9 -0
  121. package/dist/api/ai-gateway/providers/BailianRuntimeAdapter.js +127 -0
  122. package/dist/api/ai-gateway/providers/BailianRuntimeAdapter.js.map +1 -0
  123. package/dist/api/ai-gateway/providers/DeepSeekRuntimeAdapter.d.ts +8 -0
  124. package/dist/api/ai-gateway/providers/DeepSeekRuntimeAdapter.js +47 -0
  125. package/dist/api/ai-gateway/providers/DeepSeekRuntimeAdapter.js.map +1 -0
  126. package/dist/api/ai-gateway/providers/KimiRuntimeAdapter.d.ts +8 -0
  127. package/dist/api/ai-gateway/providers/KimiRuntimeAdapter.js +57 -0
  128. package/dist/api/ai-gateway/providers/KimiRuntimeAdapter.js.map +1 -0
  129. package/dist/api/ai-gateway/providers/OpenAiCompatibleRuntimeAdapter.d.ts +1 -0
  130. package/dist/api/ai-gateway/providers/OpenAiCompatibleRuntimeAdapter.js +6 -0
  131. package/dist/api/ai-gateway/providers/OpenAiCompatibleRuntimeAdapter.js.map +1 -0
  132. package/dist/api/ai-gateway/providers/OpenAiRuntimeAdapter.d.ts +13 -0
  133. package/dist/api/ai-gateway/providers/OpenAiRuntimeAdapter.js +34 -0
  134. package/dist/api/ai-gateway/providers/OpenAiRuntimeAdapter.js.map +1 -0
  135. package/dist/api/ai-gateway/providers/ProviderRegistry.d.ts +68 -0
  136. package/dist/api/ai-gateway/providers/ProviderRegistry.js +288 -0
  137. package/dist/api/ai-gateway/providers/ProviderRegistry.js.map +1 -0
  138. package/dist/api/ai-gateway/providers/ProviderRuntimeAdapter.d.ts +88 -0
  139. package/dist/api/ai-gateway/providers/ProviderRuntimeAdapter.js +645 -0
  140. package/dist/api/ai-gateway/providers/ProviderRuntimeAdapter.js.map +1 -0
  141. package/dist/api/ai-gateway/providers/ProviderRuntimeRegistry.d.ts +13 -0
  142. package/dist/api/ai-gateway/providers/ProviderRuntimeRegistry.js +48 -0
  143. package/dist/api/ai-gateway/providers/ProviderRuntimeRegistry.js.map +1 -0
  144. package/dist/api/ai-gateway/providers/index.d.ts +9 -0
  145. package/dist/api/ai-gateway/providers/index.js +26 -0
  146. package/dist/api/ai-gateway/providers/index.js.map +1 -0
  147. package/dist/api/ai-gateway/quota/AnthropicQuotaAdapter.d.ts +5 -0
  148. package/dist/api/ai-gateway/quota/AnthropicQuotaAdapter.js +21 -0
  149. package/dist/api/ai-gateway/quota/AnthropicQuotaAdapter.js.map +1 -0
  150. package/dist/api/ai-gateway/quota/BailianQuotaAdapter.d.ts +5 -0
  151. package/dist/api/ai-gateway/quota/BailianQuotaAdapter.js +21 -0
  152. package/dist/api/ai-gateway/quota/BailianQuotaAdapter.js.map +1 -0
  153. package/dist/api/ai-gateway/quota/DeepSeekQuotaAdapter.d.ts +10 -0
  154. package/dist/api/ai-gateway/quota/DeepSeekQuotaAdapter.js +83 -0
  155. package/dist/api/ai-gateway/quota/DeepSeekQuotaAdapter.js.map +1 -0
  156. package/dist/api/ai-gateway/quota/KimiQuotaAdapter.d.ts +10 -0
  157. package/dist/api/ai-gateway/quota/KimiQuotaAdapter.js +70 -0
  158. package/dist/api/ai-gateway/quota/KimiQuotaAdapter.js.map +1 -0
  159. package/dist/api/ai-gateway/quota/OpenAiQuotaAdapter.d.ts +5 -0
  160. package/dist/api/ai-gateway/quota/OpenAiQuotaAdapter.js +21 -0
  161. package/dist/api/ai-gateway/quota/OpenAiQuotaAdapter.js.map +1 -0
  162. package/dist/api/ai-gateway/quota/ProviderQuotaAdapter.d.ts +214 -0
  163. package/dist/api/ai-gateway/quota/ProviderQuotaAdapter.js +511 -0
  164. package/dist/api/ai-gateway/quota/ProviderQuotaAdapter.js.map +1 -0
  165. package/dist/api/ai-gateway/quota/index.d.ts +6 -0
  166. package/dist/api/ai-gateway/quota/index.js +23 -0
  167. package/dist/api/ai-gateway/quota/index.js.map +1 -0
  168. package/dist/api/ai-gateway/routing/InMemorySessionAffinityStore.d.ts +26 -0
  169. package/dist/api/ai-gateway/routing/InMemorySessionAffinityStore.js +67 -0
  170. package/dist/api/ai-gateway/routing/InMemorySessionAffinityStore.js.map +1 -0
  171. package/dist/api/ai-gateway/routing/ModelRouter.d.ts +84 -0
  172. package/dist/api/ai-gateway/routing/ModelRouter.js +274 -0
  173. package/dist/api/ai-gateway/routing/ModelRouter.js.map +1 -0
  174. package/dist/api/ai-gateway/routing/RedisSessionAffinityStore.d.ts +39 -0
  175. package/dist/api/ai-gateway/routing/RedisSessionAffinityStore.js +122 -0
  176. package/dist/api/ai-gateway/routing/RedisSessionAffinityStore.js.map +1 -0
  177. package/dist/api/ai-gateway/routing/SessionAffinityStore.d.ts +49 -0
  178. package/dist/api/ai-gateway/routing/SessionAffinityStore.js +66 -0
  179. package/dist/api/ai-gateway/routing/SessionAffinityStore.js.map +1 -0
  180. package/dist/api/ai-gateway/service-access/AiConnectionServiceAccess.d.ts +25 -0
  181. package/dist/api/ai-gateway/service-access/AiConnectionServiceAccess.js +50 -0
  182. package/dist/api/ai-gateway/service-access/AiConnectionServiceAccess.js.map +1 -0
  183. package/dist/api/ai-gateway/types.d.ts +112 -0
  184. package/dist/api/ai-gateway/types.js +305 -0
  185. package/dist/api/ai-gateway/types.js.map +1 -0
  186. package/dist/api/auth/AuthContext.d.ts +18 -3
  187. package/dist/api/auth/AuthContext.js +13 -2
  188. package/dist/api/auth/AuthContext.js.map +1 -1
  189. package/dist/api/auth/Authenticator.d.ts +3 -0
  190. package/dist/api/auth/Authenticator.js.map +1 -1
  191. package/dist/api/auth/ClientCredentialsAuthenticator.d.ts +2 -6
  192. package/dist/api/auth/ClientCredentialsAuthenticator.js +12 -30
  193. package/dist/api/auth/ClientCredentialsAuthenticator.js.map +1 -1
  194. package/dist/api/auth/SolidTokenAuthenticator.d.ts +2 -0
  195. package/dist/api/auth/SolidTokenAuthenticator.js +88 -2
  196. package/dist/api/auth/SolidTokenAuthenticator.js.map +1 -1
  197. package/dist/api/auth/TokenIdentity.d.ts +6 -0
  198. package/dist/api/auth/TokenIdentity.js +31 -0
  199. package/dist/api/auth/TokenIdentity.js.map +1 -0
  200. package/dist/api/chatkit/ai-provider.d.ts +9 -23
  201. package/dist/api/chatkit/ai-provider.js +30 -153
  202. package/dist/api/chatkit/ai-provider.js.map +1 -1
  203. package/dist/api/chatkit/default-agent.d.ts +24 -15
  204. package/dist/api/chatkit/default-agent.js +24 -83
  205. package/dist/api/chatkit/default-agent.js.map +1 -1
  206. package/dist/api/chatkit/index.d.ts +2 -1
  207. package/dist/api/chatkit/index.js +3 -1
  208. package/dist/api/chatkit/index.js.map +1 -1
  209. package/dist/api/chatkit/pod-store.d.ts +13 -1
  210. package/dist/api/chatkit/pod-store.js +127 -7
  211. package/dist/api/chatkit/pod-store.js.map +1 -1
  212. package/dist/api/chatkit/runtime/AcpAgentRuntime.d.ts +0 -1
  213. package/dist/api/chatkit/runtime/AcpAgentRuntime.js +14 -51
  214. package/dist/api/chatkit/runtime/AcpAgentRuntime.js.map +1 -1
  215. package/dist/api/chatkit/runtime/AcpRunner.js +2 -1
  216. package/dist/api/chatkit/runtime/AcpRunner.js.map +1 -1
  217. package/dist/api/chatkit/runtime/CodexRuntimeProjector.d.ts +15 -1
  218. package/dist/api/chatkit/runtime/CodexRuntimeProjector.js +52 -34
  219. package/dist/api/chatkit/runtime/CodexRuntimeProjector.js.map +1 -1
  220. package/dist/api/chatkit/service.d.ts +8 -1
  221. package/dist/api/chatkit/service.js +46 -5
  222. package/dist/api/chatkit/service.js.map +1 -1
  223. package/dist/api/chatkit/store.d.ts +23 -1
  224. package/dist/api/chatkit/store.js +56 -0
  225. package/dist/api/chatkit/store.js.map +1 -1
  226. package/dist/api/chatkit/types.d.ts +1 -0
  227. package/dist/api/chatkit/types.js.map +1 -1
  228. package/dist/api/container/common.js +286 -13
  229. package/dist/api/container/common.js.map +1 -1
  230. package/dist/api/container/index.js +126 -6
  231. package/dist/api/container/index.js.map +1 -1
  232. package/dist/api/container/local.js +50 -6
  233. package/dist/api/container/local.js.map +1 -1
  234. package/dist/api/container/rdf.d.ts +15 -0
  235. package/dist/api/container/rdf.js +90 -0
  236. package/dist/api/container/rdf.js.map +1 -0
  237. package/dist/api/container/routes.js +151 -11
  238. package/dist/api/container/routes.js.map +1 -1
  239. package/dist/api/container/types.d.ts +96 -0
  240. package/dist/api/container/types.js.map +1 -1
  241. package/dist/api/handlers/AdminHandler.d.ts +25 -2
  242. package/dist/api/handlers/AdminHandler.js +60 -10
  243. package/dist/api/handlers/AdminHandler.js.map +1 -1
  244. package/dist/api/handlers/AiClientConfigurationHandler.d.ts +7 -0
  245. package/dist/api/handlers/AiClientConfigurationHandler.js +202 -0
  246. package/dist/api/handlers/AiClientConfigurationHandler.js.map +1 -0
  247. package/dist/api/handlers/AiGatewayHandler.d.ts +23 -0
  248. package/dist/api/handlers/AiGatewayHandler.js +231 -0
  249. package/dist/api/handlers/AiGatewayHandler.js.map +1 -0
  250. package/dist/api/handlers/AiGatewayManagementHandler.d.ts +24 -0
  251. package/dist/api/handlers/AiGatewayManagementHandler.js +503 -0
  252. package/dist/api/handlers/AiGatewayManagementHandler.js.map +1 -0
  253. package/dist/api/handlers/ChatHandler.d.ts +11 -12
  254. package/dist/api/handlers/ChatHandler.js +12 -219
  255. package/dist/api/handlers/ChatHandler.js.map +1 -1
  256. package/dist/api/handlers/DashboardHandler.js +22 -116
  257. package/dist/api/handlers/DashboardHandler.js.map +1 -1
  258. package/dist/api/handlers/NetworkSettingsHandler.d.ts +97 -0
  259. package/dist/api/handlers/NetworkSettingsHandler.js +511 -0
  260. package/dist/api/handlers/NetworkSettingsHandler.js.map +1 -0
  261. package/dist/api/handlers/PodSettingsHandler.d.ts +79 -0
  262. package/dist/api/handlers/PodSettingsHandler.js +162 -0
  263. package/dist/api/handlers/PodSettingsHandler.js.map +1 -0
  264. package/dist/api/handlers/ProvisionHandler.d.ts +3 -1
  265. package/dist/api/handlers/ProvisionHandler.js +22 -87
  266. package/dist/api/handlers/ProvisionHandler.js.map +1 -1
  267. package/dist/api/handlers/RdfStatsHandler.d.ts +6 -0
  268. package/dist/api/handlers/RdfStatsHandler.js +85 -0
  269. package/dist/api/handlers/RdfStatsHandler.js.map +1 -0
  270. package/dist/api/handlers/SettingsHandler.d.ts +5 -0
  271. package/dist/api/handlers/SettingsHandler.js +13 -0
  272. package/dist/api/handlers/SettingsHandler.js.map +1 -0
  273. package/dist/api/handlers/StaticSpaHandler.d.ts +8 -0
  274. package/dist/api/handlers/StaticSpaHandler.js +102 -0
  275. package/dist/api/handlers/StaticSpaHandler.js.map +1 -0
  276. package/dist/api/handlers/index.d.ts +1 -0
  277. package/dist/api/handlers/index.js +1 -0
  278. package/dist/api/handlers/index.js.map +1 -1
  279. package/dist/api/http/readBoundedJsonBody.d.ts +14 -0
  280. package/dist/api/http/readBoundedJsonBody.js +58 -0
  281. package/dist/api/http/readBoundedJsonBody.js.map +1 -0
  282. package/dist/api/middleware/AuthMiddleware.d.ts +1 -0
  283. package/dist/api/middleware/AuthMiddleware.js +33 -4
  284. package/dist/api/middleware/AuthMiddleware.js.map +1 -1
  285. package/dist/api/runs/AgentRuntimeTypes.d.ts +18 -3
  286. package/dist/api/runs/AgentRuntimeTypes.js +61 -0
  287. package/dist/api/runs/AgentRuntimeTypes.js.map +1 -1
  288. package/dist/api/runs/InngestRunExecutionBackend.d.ts +28 -3
  289. package/dist/api/runs/InngestRunExecutionBackend.js +26 -3
  290. package/dist/api/runs/InngestRunExecutionBackend.js.map +1 -1
  291. package/dist/api/runs/ManagedRunWorker.d.ts +4 -1
  292. package/dist/api/runs/ManagedRunWorker.js +39 -8
  293. package/dist/api/runs/ManagedRunWorker.js.map +1 -1
  294. package/dist/api/runs/PiAgentRuntimeDriver.d.ts +5 -1
  295. package/dist/api/runs/PiAgentRuntimeDriver.js +94 -57
  296. package/dist/api/runs/PiAgentRuntimeDriver.js.map +1 -1
  297. package/dist/api/runs/RdfRunContextRetriever.d.ts +46 -0
  298. package/dist/api/runs/RdfRunContextRetriever.js +277 -0
  299. package/dist/api/runs/RdfRunContextRetriever.js.map +1 -0
  300. package/dist/api/runs/RunExecutionBackend.d.ts +38 -0
  301. package/dist/api/runs/RunExecutionBackend.js.map +1 -1
  302. package/dist/api/runs/RunStateCenter.d.ts +18 -3
  303. package/dist/api/runs/RunStateCenter.js +85 -24
  304. package/dist/api/runs/RunStateCenter.js.map +1 -1
  305. package/dist/api/runtime.js +163 -3
  306. package/dist/api/runtime.js.map +1 -1
  307. package/dist/api/service/AiClientConfigurationService.d.ts +97 -0
  308. package/dist/api/service/AiClientConfigurationService.js +379 -0
  309. package/dist/api/service/AiClientConfigurationService.js.map +1 -0
  310. package/dist/api/service/RdfBenchmarkReportCatalog.d.ts +86 -0
  311. package/dist/api/service/RdfBenchmarkReportCatalog.js +349 -0
  312. package/dist/api/service/RdfBenchmarkReportCatalog.js.map +1 -0
  313. package/dist/api/service/RdfBenchmarkReportGate.d.ts +78 -0
  314. package/dist/api/service/RdfBenchmarkReportGate.js +197 -0
  315. package/dist/api/service/RdfBenchmarkReportGate.js.map +1 -0
  316. package/dist/api/service/RdfSearchIndexingService.d.ts +113 -0
  317. package/dist/api/service/RdfSearchIndexingService.js +272 -0
  318. package/dist/api/service/RdfSearchIndexingService.js.map +1 -0
  319. package/dist/api/service/RdfSearchIndexingSolidFsSyncer.d.ts +27 -0
  320. package/dist/api/service/RdfSearchIndexingSolidFsSyncer.js +90 -0
  321. package/dist/api/service/RdfSearchIndexingSolidFsSyncer.js.map +1 -0
  322. package/dist/api/service/RdfStorageStatsService.d.ts +31 -0
  323. package/dist/api/service/RdfStorageStatsService.js +97 -0
  324. package/dist/api/service/RdfStorageStatsService.js.map +1 -0
  325. package/dist/api/service/VectorStoreService.d.ts +2 -0
  326. package/dist/api/service/VectorStoreService.js +70 -2
  327. package/dist/api/service/VectorStoreService.js.map +1 -1
  328. package/dist/api/service/VercelChatService.d.ts +27 -38
  329. package/dist/api/service/VercelChatService.js +153 -505
  330. package/dist/api/service/VercelChatService.js.map +1 -1
  331. package/dist/api/service/provider-http-transport.d.ts +21 -0
  332. package/dist/api/service/provider-http-transport.js +108 -2
  333. package/dist/api/service/provider-http-transport.js.map +1 -1
  334. package/dist/api/service/provider-registry.d.ts +5 -7
  335. package/dist/api/service/provider-registry.js +81 -64
  336. package/dist/api/service/provider-registry.js.map +1 -1
  337. package/dist/api/tasks/InngestTaskScheduler.d.ts +44 -4
  338. package/dist/api/tasks/TaskMaterializer.d.ts +10 -1
  339. package/dist/api/tasks/TaskMaterializer.js +39 -4
  340. package/dist/api/tasks/TaskMaterializer.js.map +1 -1
  341. package/dist/api/tasks/TaskService.d.ts +5 -1
  342. package/dist/api/tasks/TaskService.js +3 -0
  343. package/dist/api/tasks/TaskService.js.map +1 -1
  344. package/dist/cli/commands/obj.d.ts +9 -0
  345. package/dist/cli/commands/obj.js +74 -3
  346. package/dist/cli/commands/obj.js.map +1 -1
  347. package/dist/cli/commands/rdf.d.ts +9 -0
  348. package/dist/cli/commands/rdf.js +66 -1
  349. package/dist/cli/commands/rdf.js.map +1 -1
  350. package/dist/cli/commands/start.js +3 -0
  351. package/dist/cli/commands/start.js.map +1 -1
  352. package/dist/cli/lib/solid-auth.d.ts +3 -3
  353. package/dist/cli/lib/solid-auth.js +4 -4
  354. package/dist/cli/lib/solid-auth.js.map +1 -1
  355. package/dist/components/components.jsonld +16 -0
  356. package/dist/components/context.jsonld +815 -28
  357. package/dist/document/Chunker.jsonld +110 -0
  358. package/dist/document/{DocumentParser.d.ts → DocumentReader.d.ts} +23 -11
  359. package/dist/document/{DocumentParser.js → DocumentReader.js} +2 -2
  360. package/dist/document/DocumentReader.js.map +1 -0
  361. package/dist/document/DocumentReader.jsonld +82 -0
  362. package/dist/document/HeadingChunker.jsonld +41 -0
  363. package/dist/document/{JinaDocumentParser.d.ts → JinaReader.d.ts} +7 -7
  364. package/dist/document/{JinaDocumentParser.js → JinaReader.js} +12 -12
  365. package/dist/document/JinaReader.js.map +1 -0
  366. package/dist/document/JinaReader.jsonld +133 -0
  367. package/dist/document/L0SourceSummary.d.ts +103 -0
  368. package/dist/document/L0SourceSummary.js +157 -0
  369. package/dist/document/L0SourceSummary.js.map +1 -0
  370. package/dist/document/L0SourceSummary.jsonld +326 -0
  371. package/dist/document/PaddleOcrReader.d.ts +40 -0
  372. package/dist/document/PaddleOcrReader.js +53 -0
  373. package/dist/document/PaddleOcrReader.js.map +1 -0
  374. package/dist/document/PaddleOcrReader.jsonld +234 -0
  375. package/dist/document/ReaderAiConfig.d.ts +50 -0
  376. package/dist/document/ReaderAiConfig.js +109 -0
  377. package/dist/document/ReaderAiConfig.js.map +1 -0
  378. package/dist/document/ReaderAiConfig.jsonld +185 -0
  379. package/dist/document/ReaderPolicy.d.ts +89 -0
  380. package/dist/document/ReaderPolicy.js +158 -0
  381. package/dist/document/ReaderPolicy.js.map +1 -0
  382. package/dist/document/ReaderPolicy.jsonld +218 -0
  383. package/dist/document/index.d.ts +6 -2
  384. package/dist/document/index.js +6 -2
  385. package/dist/document/index.js.map +1 -1
  386. package/dist/edge/DdnsManager.d.ts +1 -1
  387. package/dist/edge/DdnsManager.js.map +1 -1
  388. package/dist/edge/EdgeNodeAgent.d.ts +4 -0
  389. package/dist/edge/EdgeNodeAgent.js +6 -0
  390. package/dist/edge/EdgeNodeAgent.js.map +1 -1
  391. package/dist/edge/EdgeNodeAgent.jsonld +8 -0
  392. package/dist/edge/EdgeNodeAgentInitializer.d.ts +16 -0
  393. package/dist/edge/EdgeNodeAgentInitializer.js +51 -0
  394. package/dist/edge/EdgeNodeAgentInitializer.js.map +1 -1
  395. package/dist/edge/EdgeNodeAgentInitializer.jsonld +250 -0
  396. package/dist/edge/EdgeNodeCertificateCapabilityBridge.d.ts +34 -0
  397. package/dist/edge/EdgeNodeCertificateCapabilityBridge.js +111 -0
  398. package/dist/edge/EdgeNodeCertificateCapabilityBridge.js.map +1 -0
  399. package/dist/edge/acme/AcmeCertificateManager.d.ts +14 -1
  400. package/dist/edge/acme/AcmeCertificateManager.js +67 -7
  401. package/dist/edge/acme/AcmeCertificateManager.js.map +1 -1
  402. package/dist/edge/acme/AcmeCertificateManager.jsonld +22 -2
  403. package/dist/edge/acme/ClusterCertificateManager.d.ts +12 -0
  404. package/dist/edge/acme/ClusterCertificateManager.js +38 -0
  405. package/dist/edge/acme/ClusterCertificateManager.js.map +1 -1
  406. package/dist/extensions/ExtensionRuntime.d.ts +17 -0
  407. package/dist/extensions/ExtensionRuntime.js +171 -0
  408. package/dist/extensions/ExtensionRuntime.js.map +1 -0
  409. package/dist/extensions/PodCredentialResolver.d.ts +23 -0
  410. package/dist/extensions/PodCredentialResolver.js +139 -0
  411. package/dist/extensions/PodCredentialResolver.js.map +1 -0
  412. package/dist/extensions/index.d.ts +3 -0
  413. package/dist/extensions/index.js +20 -0
  414. package/dist/extensions/index.js.map +1 -0
  415. package/dist/extensions/types.d.ts +73 -0
  416. package/dist/extensions/types.js +3 -0
  417. package/dist/extensions/types.js.map +1 -0
  418. package/dist/http/SubgraphSparqlHttpHandler.d.ts +20 -1
  419. package/dist/http/SubgraphSparqlHttpHandler.js +324 -43
  420. package/dist/http/SubgraphSparqlHttpHandler.js.map +1 -1
  421. package/dist/http/SubgraphSparqlHttpHandler.jsonld +87 -0
  422. package/dist/identity/drizzle/EdgeNodeRepository.js +3 -2
  423. package/dist/identity/drizzle/EdgeNodeRepository.js.map +1 -1
  424. package/dist/identity/drizzle/schema.pg.js +1 -1
  425. package/dist/identity/drizzle/schema.pg.js.map +1 -1
  426. package/dist/identity/drizzle/schema.sqlite.js +1 -1
  427. package/dist/identity/drizzle/schema.sqlite.js.map +1 -1
  428. package/dist/identity/oidc/ScopedPickWebIdHandler.js +5 -5
  429. package/dist/identity/oidc/ScopedPickWebIdHandler.js.map +1 -1
  430. package/dist/index.d.ts +12 -2
  431. package/dist/index.js +13 -1
  432. package/dist/index.js.map +1 -1
  433. package/dist/main.js +3 -0
  434. package/dist/main.js.map +1 -1
  435. package/dist/provision/LocalProvisionState.d.ts +28 -0
  436. package/dist/provision/LocalProvisionState.js +124 -0
  437. package/dist/provision/LocalProvisionState.js.map +1 -0
  438. package/dist/provision/ProvisionCodeCodec.d.ts +7 -3
  439. package/dist/provision/ProvisionCodeCodec.js +10 -3
  440. package/dist/provision/ProvisionCodeCodec.js.map +1 -1
  441. package/dist/provision/ProvisionPodCreator.d.ts +15 -1
  442. package/dist/provision/ProvisionPodCreator.js +68 -1
  443. package/dist/provision/ProvisionPodCreator.js.map +1 -1
  444. package/dist/provision/ProvisionPodCreator.jsonld +31 -0
  445. package/dist/provision/ServiceAccessTokenCodec.d.ts +45 -0
  446. package/dist/provision/ServiceAccessTokenCodec.js +86 -0
  447. package/dist/provision/ServiceAccessTokenCodec.js.map +1 -0
  448. package/dist/runtime/GatewayAdminProxyAuth.d.ts +29 -0
  449. package/dist/runtime/GatewayAdminProxyAuth.js +108 -0
  450. package/dist/runtime/GatewayAdminProxyAuth.js.map +1 -0
  451. package/dist/runtime/Proxy.d.ts +10 -0
  452. package/dist/runtime/Proxy.js +64 -6
  453. package/dist/runtime/Proxy.js.map +1 -1
  454. package/dist/runtime/XpodRuntime.js +1 -0
  455. package/dist/runtime/XpodRuntime.js.map +1 -1
  456. package/dist/runtime/bootstrap.d.ts +1 -0
  457. package/dist/runtime/bootstrap.js +29 -0
  458. package/dist/runtime/bootstrap.js.map +1 -1
  459. package/dist/runtime/css-process.d.ts +1 -0
  460. package/dist/runtime/css-process.js +1 -0
  461. package/dist/runtime/css-process.js.map +1 -1
  462. package/dist/runtime/index.d.ts +1 -0
  463. package/dist/runtime/index.js +3 -1
  464. package/dist/runtime/index.js.map +1 -1
  465. package/dist/runtime/lifecycle.d.ts +3 -1
  466. package/dist/runtime/lifecycle.js +3 -1
  467. package/dist/runtime/lifecycle.js.map +1 -1
  468. package/dist/runtime/runner/node/NodeGatewayRuntimeRunner.js +2 -0
  469. package/dist/runtime/runner/node/NodeGatewayRuntimeRunner.js.map +1 -1
  470. package/dist/runtime/runner/types.d.ts +3 -0
  471. package/dist/runtime/runner/types.js.map +1 -1
  472. package/dist/runtime/runtime-types.d.ts +2 -0
  473. package/dist/runtime/runtime-types.js.map +1 -1
  474. package/dist/runtime/safe-env.d.ts +15 -0
  475. package/dist/runtime/safe-env.js +109 -0
  476. package/dist/runtime/safe-env.js.map +1 -0
  477. package/dist/security/index.d.ts +1 -0
  478. package/dist/security/index.js +18 -0
  479. package/dist/security/index.js.map +1 -0
  480. package/dist/security/secret-cell/DeploymentRootKeyProvider.d.ts +17 -0
  481. package/dist/security/secret-cell/DeploymentRootKeyProvider.js +61 -0
  482. package/dist/security/secret-cell/DeploymentRootKeyProvider.js.map +1 -0
  483. package/dist/security/secret-cell/DeploymentRootKeyProvider.jsonld +124 -0
  484. package/dist/security/secret-cell/SecretCellVault.d.ts +55 -0
  485. package/dist/security/secret-cell/SecretCellVault.js +242 -0
  486. package/dist/security/secret-cell/SecretCellVault.js.map +1 -0
  487. package/dist/security/secret-cell/SecretCellVault.jsonld +207 -0
  488. package/dist/security/secret-cell/index.d.ts +2 -0
  489. package/dist/security/secret-cell/index.js +11 -0
  490. package/dist/security/secret-cell/index.js.map +1 -0
  491. package/dist/solidfs/CompositeSolidFsSyncer.d.ts +18 -0
  492. package/dist/solidfs/CompositeSolidFsSyncer.js +32 -0
  493. package/dist/solidfs/CompositeSolidFsSyncer.js.map +1 -0
  494. package/dist/solidfs/LocalSolidFS.js +25 -1
  495. package/dist/solidfs/LocalSolidFS.js.map +1 -1
  496. package/dist/solidfs/RdfIndexSolidFsSyncer.d.ts +41 -2
  497. package/dist/solidfs/RdfIndexSolidFsSyncer.js +331 -21
  498. package/dist/solidfs/RdfIndexSolidFsSyncer.js.map +1 -1
  499. package/dist/solidfs/SolidFsMetaNotes.d.ts +25 -0
  500. package/dist/solidfs/SolidFsMetaNotes.js +103 -0
  501. package/dist/solidfs/SolidFsMetaNotes.js.map +1 -0
  502. package/dist/solidfs/SolidFsSyncJournal.d.ts +2 -2
  503. package/dist/solidfs/SolidFsSyncJournal.js +9 -4
  504. package/dist/solidfs/SolidFsSyncJournal.js.map +1 -1
  505. package/dist/solidfs/SolidFsSyncJournal.jsonld +119 -0
  506. package/dist/solidfs/WorkspacePrompt.d.ts +13 -0
  507. package/dist/solidfs/WorkspacePrompt.js +42 -0
  508. package/dist/solidfs/WorkspacePrompt.js.map +1 -0
  509. package/dist/solidfs/index.d.ts +3 -0
  510. package/dist/solidfs/index.js +3 -0
  511. package/dist/solidfs/index.js.map +1 -1
  512. package/dist/solidfs/types.d.ts +12 -2
  513. package/dist/solidfs/types.js.map +1 -1
  514. package/dist/storage/accessors/MixDataAccessor.d.ts +36 -4
  515. package/dist/storage/accessors/MixDataAccessor.js +222 -23
  516. package/dist/storage/accessors/MixDataAccessor.js.map +1 -1
  517. package/dist/storage/accessors/MixDataAccessor.jsonld +89 -0
  518. package/dist/storage/accessors/SolidRdfDataAccessor.d.ts +6 -1
  519. package/dist/storage/accessors/SolidRdfDataAccessor.js +35 -0
  520. package/dist/storage/accessors/SolidRdfDataAccessor.js.map +1 -1
  521. package/dist/storage/accessors/SolidRdfDataAccessor.jsonld +20 -0
  522. package/dist/storage/database/PostgresPoolManager.d.ts +1 -0
  523. package/dist/storage/database/PostgresPoolManager.js +2 -2
  524. package/dist/storage/database/PostgresPoolManager.js.map +1 -1
  525. package/dist/storage/locking/UrlAwareRedisLocker.d.ts +2 -0
  526. package/dist/storage/locking/UrlAwareRedisLocker.js +65 -0
  527. package/dist/storage/locking/UrlAwareRedisLocker.js.map +1 -1
  528. package/dist/storage/locking/UrlAwareRedisLocker.jsonld +19 -0
  529. package/dist/storage/rdf/PostgresRdfEngine.d.ts +286 -9
  530. package/dist/storage/rdf/PostgresRdfEngine.js +10773 -2084
  531. package/dist/storage/rdf/PostgresRdfEngine.js.map +1 -1
  532. package/dist/storage/rdf/PostgresRdfEngine.jsonld +1693 -89
  533. package/dist/storage/rdf/PostgresRdfSqlExecutor.d.ts +24 -0
  534. package/dist/storage/rdf/PostgresRdfSqlExecutor.js +131 -0
  535. package/dist/storage/rdf/PostgresRdfSqlExecutor.js.map +1 -0
  536. package/dist/storage/rdf/PostgresRdfTextIndex.d.ts +54 -0
  537. package/dist/storage/rdf/PostgresRdfTextIndex.js +1255 -0
  538. package/dist/storage/rdf/PostgresRdfTextIndex.js.map +1 -0
  539. package/dist/storage/rdf/PostgresRdfTextIndex.jsonld +487 -0
  540. package/dist/storage/rdf/PostgresRdfVectorIndex.d.ts +46 -0
  541. package/dist/storage/rdf/PostgresRdfVectorIndex.js +1165 -0
  542. package/dist/storage/rdf/PostgresRdfVectorIndex.js.map +1 -0
  543. package/dist/storage/rdf/PostgresRdfVectorIndex.jsonld +423 -0
  544. package/dist/storage/rdf/Rdf3xIndex.d.ts +14 -1
  545. package/dist/storage/rdf/Rdf3xIndex.js +286 -2
  546. package/dist/storage/rdf/Rdf3xIndex.js.map +1 -1
  547. package/dist/storage/rdf/Rdf3xIndex.jsonld +36 -0
  548. package/dist/storage/rdf/Rdf3xSchema.d.ts +5 -1
  549. package/dist/storage/rdf/Rdf3xSchema.js +17 -3
  550. package/dist/storage/rdf/Rdf3xSchema.js.map +1 -1
  551. package/dist/storage/rdf/RdfAccessScope.d.ts +22 -0
  552. package/dist/storage/rdf/RdfAccessScope.js +345 -0
  553. package/dist/storage/rdf/RdfAccessScope.js.map +1 -0
  554. package/dist/storage/rdf/RdfAccessScope.jsonld +45 -0
  555. package/dist/storage/rdf/RdfFusionRankPlan.d.ts +2 -0
  556. package/dist/storage/rdf/RdfFusionRankPlan.js +186 -0
  557. package/dist/storage/rdf/RdfFusionRankPlan.js.map +1 -0
  558. package/dist/storage/rdf/RdfJoinShape.d.ts +8 -0
  559. package/dist/storage/rdf/RdfJoinShape.js +31 -0
  560. package/dist/storage/rdf/RdfJoinShape.js.map +1 -0
  561. package/dist/storage/rdf/RdfQuadIndex.d.ts +5 -2
  562. package/dist/storage/rdf/RdfQuadIndex.js +94 -6
  563. package/dist/storage/rdf/RdfQuadIndex.js.map +1 -1
  564. package/dist/storage/rdf/RdfQuadIndex.jsonld +12 -0
  565. package/dist/storage/rdf/RdfQueryExecutor.d.ts +3 -4
  566. package/dist/storage/rdf/RdfQueryExecutor.js +235 -8
  567. package/dist/storage/rdf/RdfQueryExecutor.js.map +1 -1
  568. package/dist/storage/rdf/RdfSearchSourceFilter.d.ts +10 -0
  569. package/dist/storage/rdf/RdfSearchSourceFilter.js +83 -0
  570. package/dist/storage/rdf/RdfSearchSourceFilter.js.map +1 -0
  571. package/dist/storage/rdf/RdfSparqlAdapter.d.ts +27 -1
  572. package/dist/storage/rdf/RdfSparqlAdapter.js +265 -3
  573. package/dist/storage/rdf/RdfSparqlAdapter.js.map +1 -1
  574. package/dist/storage/rdf/RdfSparqlAdapter.jsonld +8 -0
  575. package/dist/storage/rdf/RdfTermDictionary.d.ts +7 -1
  576. package/dist/storage/rdf/RdfTermDictionary.js +139 -0
  577. package/dist/storage/rdf/RdfTermDictionary.js.map +1 -1
  578. package/dist/storage/rdf/RdfTermDictionary.jsonld +4 -0
  579. package/dist/storage/rdf/RdfTextIndex.d.ts +45 -2
  580. package/dist/storage/rdf/RdfTextIndex.js +810 -114
  581. package/dist/storage/rdf/RdfTextIndex.js.map +1 -1
  582. package/dist/storage/rdf/RdfTextIndex.jsonld +193 -0
  583. package/dist/storage/rdf/RdfTextProjection.d.ts +10 -0
  584. package/dist/storage/rdf/RdfTextProjection.js +258 -0
  585. package/dist/storage/rdf/RdfTextProjection.js.map +1 -0
  586. package/dist/storage/rdf/RdfVectorIndex.d.ts +30 -2
  587. package/dist/storage/rdf/RdfVectorIndex.js +461 -38
  588. package/dist/storage/rdf/RdfVectorIndex.js.map +1 -1
  589. package/dist/storage/rdf/RdfVectorIndex.jsonld +163 -0
  590. package/dist/storage/rdf/SolidRdfEngine.d.ts +12 -9
  591. package/dist/storage/rdf/SolidRdfEngine.js +48 -22
  592. package/dist/storage/rdf/SolidRdfEngine.js.map +1 -1
  593. package/dist/storage/rdf/SolidRdfEngine.jsonld +33 -43
  594. package/dist/storage/rdf/SolidRdfSparqlEngine.d.ts +19 -8
  595. package/dist/storage/rdf/SolidRdfSparqlEngine.js +674 -44
  596. package/dist/storage/rdf/SolidRdfSparqlEngine.js.map +1 -1
  597. package/dist/storage/rdf/SolidRdfSparqlEngine.jsonld +51 -0
  598. package/dist/storage/rdf/index.d.ts +9 -5
  599. package/dist/storage/rdf/index.js +42 -1
  600. package/dist/storage/rdf/index.js.map +1 -1
  601. package/dist/storage/rdf/models-benchmark.d.ts +264 -2
  602. package/dist/storage/rdf/models-benchmark.js +4207 -155
  603. package/dist/storage/rdf/models-benchmark.js.map +1 -1
  604. package/dist/storage/rdf/types.d.ts +833 -4
  605. package/dist/storage/rdf/types.js.map +1 -1
  606. package/dist/storage/rdf/types.jsonld +348 -0
  607. package/dist/storage/sparql/CompatibilitySparqlEngine.d.ts +14 -13
  608. package/dist/storage/sparql/CompatibilitySparqlEngine.js +24 -24
  609. package/dist/storage/sparql/CompatibilitySparqlEngine.js.map +1 -1
  610. package/dist/storage/sparql/CompatibilitySparqlEngineImpl.d.ts +14 -13
  611. package/dist/storage/sparql/CompatibilitySparqlEngineImpl.js +30 -18
  612. package/dist/storage/sparql/CompatibilitySparqlEngineImpl.js.map +1 -1
  613. package/dist/storage/sparql/SubgraphQueryEngine.d.ts +21 -12
  614. package/dist/storage/sparql/SubgraphQueryEngine.js +12 -12
  615. package/dist/storage/sparql/SubgraphQueryEngine.js.map +1 -1
  616. package/dist/terminal/sandbox/MacOSSandbox.js +2 -1
  617. package/dist/terminal/sandbox/MacOSSandbox.js.map +1 -1
  618. package/dist/terminal/sandbox/index.js +2 -1
  619. package/dist/terminal/sandbox/index.js.map +1 -1
  620. package/dist/test-utils/no-auth-xpod.js +3 -0
  621. package/dist/test-utils/no-auth-xpod.js.map +1 -1
  622. package/dist/tunnel/LocalTunnelProvider.d.ts +3 -0
  623. package/dist/tunnel/LocalTunnelProvider.js +17 -1
  624. package/dist/tunnel/LocalTunnelProvider.js.map +1 -1
  625. package/dist/tunnel/LocalTunnelProvider.jsonld +23 -0
  626. package/dist/tunnel/SakuraFrpTunnelProvider.d.ts +3 -0
  627. package/dist/tunnel/SakuraFrpTunnelProvider.js +18 -2
  628. package/dist/tunnel/SakuraFrpTunnelProvider.js.map +1 -1
  629. package/dist/tunnel/TunnelProfiles.d.ts +22 -0
  630. package/dist/tunnel/TunnelProfiles.js +208 -0
  631. package/dist/tunnel/TunnelProfiles.js.map +1 -0
  632. package/dist/tunnel/index.d.ts +2 -0
  633. package/dist/tunnel/index.js +4 -1
  634. package/dist/tunnel/index.js.map +1 -1
  635. package/dist/util/identifiers/ClusterIdentifierStrategy.d.ts +3 -0
  636. package/dist/util/identifiers/ClusterIdentifierStrategy.js +18 -2
  637. package/dist/util/identifiers/ClusterIdentifierStrategy.js.map +1 -1
  638. package/dist/util/identifiers/ClusterIdentifierStrategy.jsonld +5 -1
  639. package/node_modules/@undefineds.co/ai-connection/dist/AiClientConfigurationSection.d.ts +55 -0
  640. package/node_modules/@undefineds.co/ai-connection/dist/AiClientConfigurationSection.js +167 -0
  641. package/node_modules/@undefineds.co/ai-connection/dist/AiConnectionHeader.d.ts +3 -0
  642. package/node_modules/@undefineds.co/ai-connection/dist/AiConnectionHeader.js +8 -0
  643. package/node_modules/@undefineds.co/ai-connection/dist/AiConnectionList.d.ts +4 -0
  644. package/node_modules/@undefineds.co/ai-connection/dist/AiConnectionList.js +36 -0
  645. package/node_modules/@undefineds.co/ai-connection/dist/AiConnectionMain.d.ts +4 -0
  646. package/node_modules/@undefineds.co/ai-connection/dist/AiConnectionMain.js +37 -0
  647. package/node_modules/@undefineds.co/ai-connection/dist/AiConnectionMainHeader.d.ts +3 -0
  648. package/node_modules/@undefineds.co/ai-connection/dist/AiConnectionMainHeader.js +7 -0
  649. package/node_modules/@undefineds.co/ai-connection/dist/AiConnectionPanel.d.ts +14 -0
  650. package/node_modules/@undefineds.co/ai-connection/dist/AiConnectionPanel.js +333 -0
  651. package/node_modules/@undefineds.co/ai-connection/dist/AiProviderCard.d.ts +22 -0
  652. package/node_modules/@undefineds.co/ai-connection/dist/AiProviderCard.js +43 -0
  653. package/node_modules/@undefineds.co/ai-connection/dist/AiQuotaCard.d.ts +8 -0
  654. package/node_modules/@undefineds.co/ai-connection/dist/AiQuotaCard.js +6 -0
  655. package/node_modules/@undefineds.co/ai-connection/dist/ai-connection-client.d.ts +120 -0
  656. package/node_modules/@undefineds.co/ai-connection/dist/ai-connection-client.js +414 -0
  657. package/node_modules/@undefineds.co/ai-connection/dist/client-config/base-adapter.d.ts +32 -0
  658. package/node_modules/@undefineds.co/ai-connection/dist/client-config/base-adapter.js +212 -0
  659. package/node_modules/@undefineds.co/ai-connection/dist/client-config/codex.d.ts +14 -0
  660. package/node_modules/@undefineds.co/ai-connection/dist/client-config/codex.js +90 -0
  661. package/node_modules/@undefineds.co/ai-connection/dist/client-config/index.cjs +668 -0
  662. package/node_modules/@undefineds.co/ai-connection/dist/client-config/index.d.ts +6 -0
  663. package/node_modules/@undefineds.co/ai-connection/dist/client-config/index.js +6 -0
  664. package/node_modules/@undefineds.co/ai-connection/dist/client-config/json-env-adapter.d.ts +21 -0
  665. package/node_modules/@undefineds.co/ai-connection/dist/client-config/json-env-adapter.js +82 -0
  666. package/node_modules/@undefineds.co/ai-connection/dist/client-config/pi.d.ts +13 -0
  667. package/node_modules/@undefineds.co/ai-connection/dist/client-config/pi.js +83 -0
  668. package/node_modules/@undefineds.co/ai-connection/dist/client-config/transaction.d.ts +17 -0
  669. package/node_modules/@undefineds.co/ai-connection/dist/client-config/transaction.js +153 -0
  670. package/node_modules/@undefineds.co/ai-connection/dist/client-config/types.d.ts +40 -0
  671. package/node_modules/@undefineds.co/ai-connection/dist/client-config/types.js +1 -0
  672. package/node_modules/@undefineds.co/ai-connection/dist/controller.d.ts +42 -0
  673. package/node_modules/@undefineds.co/ai-connection/dist/controller.js +289 -0
  674. package/node_modules/@undefineds.co/ai-connection/dist/index.d.ts +16 -0
  675. package/node_modules/@undefineds.co/ai-connection/dist/index.js +41 -0
  676. package/node_modules/@undefineds.co/ai-connection/dist/manifest.d.ts +1 -0
  677. package/node_modules/@undefineds.co/ai-connection/dist/manifest.js +18 -0
  678. package/node_modules/@undefineds.co/ai-connection/dist/service-access.d.ts +3 -0
  679. package/node_modules/@undefineds.co/ai-connection/dist/service-access.js +133 -0
  680. package/node_modules/@undefineds.co/ai-connection/package.json +50 -0
  681. package/node_modules/@undefineds.co/extension-sdk/README.md +299 -0
  682. package/node_modules/@undefineds.co/extension-sdk/dist/index.d.ts +5 -0
  683. package/node_modules/@undefineds.co/extension-sdk/dist/index.js +5 -0
  684. package/node_modules/@undefineds.co/extension-sdk/dist/layout.d.ts +16 -0
  685. package/node_modules/@undefineds.co/extension-sdk/dist/layout.js +36 -0
  686. package/node_modules/@undefineds.co/extension-sdk/dist/manifest.d.ts +27 -0
  687. package/node_modules/@undefineds.co/extension-sdk/dist/manifest.js +79 -0
  688. package/node_modules/@undefineds.co/extension-sdk/dist/react/app-layout.d.ts +7 -0
  689. package/node_modules/@undefineds.co/extension-sdk/dist/react/app-layout.js +8 -0
  690. package/node_modules/@undefineds.co/extension-sdk/dist/react/auth-boundary.d.ts +27 -0
  691. package/node_modules/@undefineds.co/extension-sdk/dist/react/auth-boundary.js +49 -0
  692. package/node_modules/@undefineds.co/extension-sdk/dist/react/layout-context.d.ts +11 -0
  693. package/node_modules/@undefineds.co/extension-sdk/dist/react/layout-context.js +9 -0
  694. package/node_modules/@undefineds.co/extension-sdk/dist/react/workspace-layout.d.ts +38 -0
  695. package/node_modules/@undefineds.co/extension-sdk/dist/react/workspace-layout.js +132 -0
  696. package/node_modules/@undefineds.co/extension-sdk/dist/react.d.ts +12 -0
  697. package/node_modules/@undefineds.co/extension-sdk/dist/react.js +19 -0
  698. package/node_modules/@undefineds.co/extension-sdk/dist/testing.d.ts +7 -0
  699. package/node_modules/@undefineds.co/extension-sdk/dist/testing.js +27 -0
  700. package/node_modules/@undefineds.co/extension-sdk/dist/web.d.ts +225 -0
  701. package/node_modules/@undefineds.co/extension-sdk/dist/web.js +142 -0
  702. package/node_modules/@undefineds.co/extension-sdk/package.json +49 -0
  703. package/node_modules/@undefineds.co/shared-ui/dist/badge.d.ts +8 -0
  704. package/node_modules/@undefineds.co/shared-ui/dist/badge.js +17 -0
  705. package/node_modules/@undefineds.co/shared-ui/dist/button.d.ts +10 -0
  706. package/node_modules/@undefineds.co/shared-ui/dist/button.js +30 -0
  707. package/node_modules/@undefineds.co/shared-ui/dist/card.d.ts +7 -0
  708. package/node_modules/@undefineds.co/shared-ui/dist/card.js +15 -0
  709. package/node_modules/@undefineds.co/shared-ui/dist/index.d.ts +6 -0
  710. package/node_modules/@undefineds.co/shared-ui/dist/index.js +6 -0
  711. package/node_modules/@undefineds.co/shared-ui/dist/input.d.ts +4 -0
  712. package/node_modules/@undefineds.co/shared-ui/dist/input.js +5 -0
  713. package/node_modules/@undefineds.co/shared-ui/dist/theme.css +121 -0
  714. package/node_modules/@undefineds.co/shared-ui/dist/utils.d.ts +2 -0
  715. package/node_modules/@undefineds.co/shared-ui/dist/utils.js +5 -0
  716. package/node_modules/@undefineds.co/shared-ui/dist/workspace.d.ts +23 -0
  717. package/node_modules/@undefineds.co/shared-ui/dist/workspace.js +38 -0
  718. package/node_modules/@undefineds.co/shared-ui/package.json +39 -0
  719. package/node_modules/@undefineds.co/solid-sdk/dist/index.d.ts +3 -0
  720. package/node_modules/@undefineds.co/solid-sdk/dist/index.js +3 -0
  721. package/node_modules/@undefineds.co/solid-sdk/dist/pod-runtime.d.ts +45 -0
  722. package/node_modules/@undefineds.co/solid-sdk/dist/pod-runtime.js +147 -0
  723. package/node_modules/@undefineds.co/solid-sdk/dist/react.d.ts +15 -0
  724. package/node_modules/@undefineds.co/solid-sdk/dist/react.js +15 -0
  725. package/node_modules/@undefineds.co/solid-sdk/dist/session.d.ts +42 -0
  726. package/node_modules/@undefineds.co/solid-sdk/dist/session.js +127 -0
  727. package/node_modules/@undefineds.co/solid-sdk/package.json +45 -0
  728. package/package.json +32 -12
  729. package/static/app/assets/index-BoYHJ6si.js +230 -0
  730. package/static/app/assets/inrupt-smoke.js +2 -2
  731. package/static/app/assets/main.css +1 -1
  732. package/static/app/assets/main.js +9 -9
  733. package/static/dashboard/assets/NetworkPage-Brt79fuQ.js +2 -0
  734. package/static/dashboard/assets/PaneListHeader-57nvMwH6.js +1 -0
  735. package/static/dashboard/assets/PodPage-CM6do1vB.js +2 -0
  736. package/static/dashboard/assets/ServicesPage-BUNxGJRz.js +1 -0
  737. package/static/dashboard/assets/card-B9Zjf_2p.js +1 -0
  738. package/static/dashboard/assets/dashboard-8C6o666W.js +305 -0
  739. package/static/dashboard/assets/dashboard-CSdewNeA.css +1 -0
  740. package/static/dashboard/assets/database-DPh9wDY9.js +1 -0
  741. package/static/dashboard/assets/external-link-VbMQvVMz.js +1 -0
  742. package/static/dashboard/assets/index-RfiFckzb.js +51 -0
  743. package/static/dashboard/assets/refresh-cw-BxVxNxNr.js +1 -0
  744. package/static/dashboard/assets/services-status-context-DKmJ7ISr.js +1 -0
  745. package/static/dashboard/dashboard.html +2 -2
  746. package/static/settings/assets/ModelsPage-D_IH7AH3.js +1 -0
  747. package/static/settings/assets/PaneListHeader-Bgaze006.js +1 -0
  748. package/static/settings/assets/PodPage-Cy1VNObw.js +2 -0
  749. package/static/settings/assets/ServicesPage-BsFaxVWC.js +1 -0
  750. package/static/settings/assets/SettingsPage-UafNWE_p.js +48 -0
  751. package/static/settings/assets/card-B_bXSIn-.js +1 -0
  752. package/static/settings/assets/services-status-context-DiX-AbrP.js +1 -0
  753. package/static/settings/assets/settings-B30oMfZq.js +305 -0
  754. package/static/settings/assets/settings-CSdewNeA.css +1 -0
  755. package/static/settings/assets/workspace-layout-Dv1Yn9Ci.js +1 -0
  756. package/static/settings/auth.html +21 -0
  757. package/static/settings/reachability.html +221 -0
  758. package/static/settings/reachability.svg +7 -0
  759. package/static/settings/reachability.webmanifest +18 -0
  760. package/static/settings/settings.html +13 -0
  761. package/static/settings/signal-pod.html +293 -0
  762. package/static/settings/vite.svg +1 -0
  763. package/dist/api/service/ai-gateway-transport.d.ts +0 -25
  764. package/dist/api/service/ai-gateway-transport.js +0 -136
  765. package/dist/api/service/ai-gateway-transport.js.map +0 -1
  766. package/dist/api/service/chat-protocol-adapters.d.ts +0 -5
  767. package/dist/api/service/chat-protocol-adapters.js +0 -146
  768. package/dist/api/service/chat-protocol-adapters.js.map +0 -1
  769. package/dist/api/service/chat-routing.d.ts +0 -8
  770. package/dist/api/service/chat-routing.js +0 -16
  771. package/dist/api/service/chat-routing.js.map +0 -1
  772. package/dist/api/service/platform-ai-config.d.ts +0 -10
  773. package/dist/api/service/platform-ai-config.js +0 -76
  774. package/dist/api/service/platform-ai-config.js.map +0 -1
  775. package/dist/document/DocumentParser.js.map +0 -1
  776. package/dist/document/JinaDocumentParser.js.map +0 -1
  777. package/static/app/assets/index-C1yksyT4.js +0 -171
  778. package/static/dashboard/assets/dashboard-BssaVKTn.css +0 -1
  779. package/static/dashboard/assets/dashboard-Ckuadl3C.js +0 -54
@@ -1 +1 @@
1
- {"version":3,"file":"RdfVectorIndex.js","sourceRoot":"","sources":["../../../src/storage/rdf/RdfVectorIndex.ts"],"names":[],"mappings":"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","sourcesContent":["import { existsSync, mkdirSync } from 'node:fs';\nimport { dirname } from 'node:path';\nimport { createSqliteRuntime, type SqliteDatabase } from '../SqliteRuntime';\nimport type {\n RdfVectorChunkInput,\n RdfVectorChunkRow,\n RdfVectorDistanceMetric,\n RdfSearchCardinalityEstimate,\n RdfVectorIndexOptions,\n RdfVectorIndexStats,\n RdfVectorModelDistribution,\n RdfVectorSearchOrder,\n RdfVectorSearchOptions,\n RdfVectorSearchResult,\n RdfVectorSourceInput,\n} from './types';\n\ninterface RdfVectorSourceRow {\n id: number;\n source: string;\n workspace: string;\n local_path: string | null;\n content_type: string | null;\n source_version: string | null;\n source_hash: string | null;\n updated_at: string;\n}\n\ninterface RdfVectorScoredChunkRow extends RdfVectorChunkRow {\n dot_product: number;\n vector_score: number;\n vector_distance: number | null;\n vector_distance_squared: number | null;\n}\n\nexport class RdfVectorIndex {\n private readonly sqliteRuntime = createSqliteRuntime();\n private db: SqliteDatabase | null = null;\n\n public constructor(private readonly options: RdfVectorIndexOptions) {}\n\n public open(): void {\n if (this.db) {\n return;\n }\n\n if (this.options.path !== ':memory:') {\n const dir = dirname(this.options.path);\n if (!existsSync(dir)) {\n mkdirSync(dir, { recursive: true });\n }\n }\n\n this.db = this.sqliteRuntime.openDatabase(this.options.path);\n this.initializeSchema();\n }\n\n public close(): void {\n this.db?.close();\n this.db = null;\n }\n\n public clear(): void {\n this.requireDb().exec('DELETE FROM rdf_vector_components; DELETE FROM rdf_vector_chunks; DELETE FROM rdf_vector_sources;');\n }\n\n public indexVector(source: RdfVectorSourceInput, chunks: RdfVectorChunkInput[]): void {\n const db = this.requireDb();\n const sourceId = this.upsertSource(source);\n const insertChunk = db.prepare(`\n INSERT INTO rdf_vector_chunks (\n source_id,\n chunk_key,\n ordinal,\n level,\n heading,\n path,\n content,\n start_offset,\n end_offset,\n embedding_json,\n dimensions,\n magnitude,\n model,\n updated_at\n )\n VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, strftime('%Y-%m-%dT%H:%M:%fZ', 'now'))\n `);\n const insertComponent = db.prepare(`\n INSERT INTO rdf_vector_components (\n chunk_id,\n dimension,\n value,\n updated_at\n )\n VALUES (?, ?, ?, strftime('%Y-%m-%dT%H:%M:%fZ', 'now'))\n `);\n\n db.transaction(() => {\n db.prepare(`\n DELETE FROM rdf_vector_components\n WHERE chunk_id IN (\n SELECT id FROM rdf_vector_chunks WHERE source_id = ?\n )\n `).run(sourceId);\n db.prepare('DELETE FROM rdf_vector_chunks WHERE source_id = ?').run(sourceId);\n for (const chunk of chunks) {\n const embedding = normalizeEmbedding(chunk.embedding);\n const result = insertChunk.run(\n sourceId,\n chunk.chunkKey,\n chunk.ordinal,\n chunk.level,\n chunk.heading || null,\n JSON.stringify(chunk.path ?? []),\n chunk.content,\n chunk.startOffset,\n chunk.endOffset,\n JSON.stringify(embedding),\n embedding.length,\n vectorMagnitude(embedding),\n chunk.model ?? '',\n );\n insertVectorComponents(insertComponent, Number(result.lastInsertRowid), embedding);\n }\n })();\n }\n\n public deleteSource(source: string): number {\n const db = this.requireDb();\n const row = db.prepare<{ id: number }>('SELECT id FROM rdf_vector_sources WHERE source = ?').get(source);\n if (!row) {\n return 0;\n }\n\n return db.transaction(() => {\n db.prepare(`\n DELETE FROM rdf_vector_components\n WHERE chunk_id IN (\n SELECT id FROM rdf_vector_chunks WHERE source_id = ?\n )\n `).run(row.id);\n const deletedChunks = db.prepare('DELETE FROM rdf_vector_chunks WHERE source_id = ?').run(row.id).changes;\n db.prepare('DELETE FROM rdf_vector_sources WHERE id = ?').run(row.id);\n return deletedChunks;\n })();\n }\n\n public search(options: RdfVectorSearchOptions): RdfVectorSearchResult[] {\n const embedding = normalizeEmbedding(options.embedding);\n if (embedding.length === 0) {\n return [];\n }\n\n const metric = options.metric ?? this.options.defaultMetric ?? 'cosine';\n if (metric === 'cosine' && vectorMagnitude(embedding) === 0) {\n return [];\n }\n const scoredQuery = buildVectorScoredRowsQuery(embedding, metric, options);\n return this.requireDb()\n .prepare<RdfVectorScoredChunkRow>(scoredQuery.sql)\n .all(...scoredQuery.params)\n .map((row) => {\n const rowEmbedding = parseEmbedding(row.embedding_json);\n const distance = scoredVectorDistance(row, metric);\n return this.toSearchResult(row, rowEmbedding, vectorScore(distance, metric), distance);\n });\n }\n\n public estimateSearchCardinality(options: RdfVectorSearchOptions): RdfSearchCardinalityEstimate {\n const embedding = normalizeEmbedding(options.embedding);\n if (embedding.length === 0) {\n return {\n rows: 0,\n source: 'vector-candidate-count',\n indexChoice: 'vector-candidate-count',\n };\n }\n\n const metric = options.metric ?? this.options.defaultMetric ?? 'cosine';\n if (metric === 'cosine' && vectorMagnitude(embedding) === 0) {\n return {\n rows: 0,\n source: 'vector-candidate-count',\n indexChoice: 'vector-candidate-count',\n };\n }\n\n if (options.threshold !== undefined) {\n const countQuery = buildVectorScoredCountQuery(embedding, metric, options);\n const rows = this.requireDb().prepare<{ count: number }>(countQuery.sql).get(...countQuery.params)?.count ?? 0;\n return {\n rows: applyResultWindow(rows, options.offset, options.limit),\n source: 'vector-component-score',\n indexChoice: 'vector-component-score',\n };\n }\n\n const params: unknown[] = [embedding.length];\n const conditions = ['chunk.dimensions = ?'];\n\n if (options.workspace) {\n conditions.push('source.workspace = ?');\n params.push(options.workspace);\n }\n if (options.source) {\n conditions.push('source.source = ?');\n params.push(options.source);\n }\n if (options.sourcePrefix) {\n conditions.push('source.source >= ? AND source.source < ?');\n params.push(options.sourcePrefix, `${options.sourcePrefix}\\uffff`);\n }\n if (options.model !== undefined) {\n conditions.push('chunk.model = ?');\n params.push(options.model);\n }\n\n const rows = this.requireDb().prepare<{ count: number }>(`\n SELECT COUNT(*) AS count\n FROM rdf_vector_chunks chunk\n JOIN rdf_vector_sources source ON source.id = chunk.source_id\n WHERE ${conditions.join(' AND ')}\n `).get(...params)?.count ?? 0;\n\n return {\n rows: applyResultWindow(rows, options.offset, options.limit),\n source: 'vector-candidate-count',\n indexChoice: 'vector-candidate-count',\n };\n }\n\n public stats(): RdfVectorIndexStats {\n const db = this.requireDb();\n return {\n sourceCount: db.prepare<{ count: number }>('SELECT COUNT(*) AS count FROM rdf_vector_sources').get()?.count ?? 0,\n chunkCount: db.prepare<{ count: number }>('SELECT COUNT(*) AS count FROM rdf_vector_chunks').get()?.count ?? 0,\n componentCount: db.prepare<{ count: number }>('SELECT COUNT(*) AS count FROM rdf_vector_components').get()?.count ?? 0,\n databaseBytes: this.estimateDatabaseBytes(),\n modelDistribution: this.modelDistribution(),\n };\n }\n\n public modelDistribution(): RdfVectorModelDistribution[] {\n const rows = this.requireDb().prepare<{\n model: string;\n dimensions: number;\n source_count: number;\n chunk_count: number;\n min_magnitude: number | null;\n max_magnitude: number | null;\n average_magnitude: number | null;\n }>(`\n SELECT\n chunk.model,\n chunk.dimensions,\n COUNT(DISTINCT chunk.source_id) AS source_count,\n COUNT(*) AS chunk_count,\n MIN(chunk.magnitude) AS min_magnitude,\n MAX(chunk.magnitude) AS max_magnitude,\n AVG(chunk.magnitude) AS average_magnitude\n FROM rdf_vector_chunks chunk\n GROUP BY chunk.model, chunk.dimensions\n ORDER BY chunk_count DESC, source_count DESC, chunk.model ASC, chunk.dimensions ASC\n `).all();\n\n return rows.map((row) => ({\n model: row.model,\n dimensions: row.dimensions,\n sourceCount: row.source_count,\n chunkCount: row.chunk_count,\n minMagnitude: row.min_magnitude ?? 0,\n maxMagnitude: row.max_magnitude ?? 0,\n averageMagnitude: row.average_magnitude ?? 0,\n }));\n }\n\n private initializeSchema(): void {\n this.requireDb().exec(`\n CREATE TABLE IF NOT EXISTS rdf_vector_sources (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n source TEXT NOT NULL UNIQUE,\n workspace TEXT NOT NULL,\n local_path TEXT,\n content_type TEXT,\n source_version TEXT,\n source_hash TEXT,\n updated_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now'))\n );\n\n CREATE TABLE IF NOT EXISTS rdf_vector_chunks (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n source_id INTEGER NOT NULL,\n chunk_key TEXT NOT NULL,\n ordinal INTEGER NOT NULL,\n level INTEGER NOT NULL,\n heading TEXT,\n path TEXT,\n content TEXT NOT NULL,\n start_offset INTEGER NOT NULL,\n end_offset INTEGER NOT NULL,\n embedding_json TEXT NOT NULL,\n dimensions INTEGER NOT NULL,\n magnitude REAL NOT NULL,\n model TEXT NOT NULL,\n updated_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now')),\n UNIQUE (source_id, chunk_key),\n FOREIGN KEY (source_id) REFERENCES rdf_vector_sources(id)\n );\n\n CREATE TABLE IF NOT EXISTS rdf_vector_components (\n chunk_id INTEGER NOT NULL,\n dimension INTEGER NOT NULL,\n value REAL NOT NULL,\n updated_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now')),\n PRIMARY KEY (chunk_id, dimension),\n FOREIGN KEY (chunk_id) REFERENCES rdf_vector_chunks(id)\n );\n\n CREATE INDEX IF NOT EXISTS rdf_vector_sources_workspace ON rdf_vector_sources(workspace);\n CREATE INDEX IF NOT EXISTS rdf_vector_sources_source ON rdf_vector_sources(source);\n CREATE INDEX IF NOT EXISTS rdf_vector_chunks_source ON rdf_vector_chunks(source_id, ordinal);\n CREATE INDEX IF NOT EXISTS rdf_vector_chunks_model_dimensions ON rdf_vector_chunks(model, dimensions);\n CREATE INDEX IF NOT EXISTS rdf_vector_components_dimension ON rdf_vector_components(dimension, chunk_id);\n `);\n this.backfillVectorComponents();\n }\n\n private backfillVectorComponents(): void {\n const db = this.requireDb();\n const rows = db.prepare<{\n id: number;\n dimensions: number;\n embedding_json: string;\n component_count: number;\n }>(`\n SELECT\n chunk.id,\n chunk.dimensions,\n chunk.embedding_json,\n COUNT(component.dimension) AS component_count\n FROM rdf_vector_chunks chunk\n LEFT JOIN rdf_vector_components component ON component.chunk_id = chunk.id\n WHERE chunk.dimensions > 0\n GROUP BY chunk.id\n HAVING component_count <> chunk.dimensions\n `).all();\n if (rows.length === 0) {\n return;\n }\n\n const deleteComponents = db.prepare('DELETE FROM rdf_vector_components WHERE chunk_id = ?');\n const insertComponent = db.prepare(`\n INSERT INTO rdf_vector_components (\n chunk_id,\n dimension,\n value,\n updated_at\n )\n VALUES (?, ?, ?, strftime('%Y-%m-%dT%H:%M:%fZ', 'now'))\n `);\n db.transaction(() => {\n for (const row of rows) {\n deleteComponents.run(row.id);\n insertVectorComponents(insertComponent, row.id, parseEmbedding(row.embedding_json));\n }\n })();\n }\n\n private upsertSource(source: RdfVectorSourceInput): number {\n const db = this.requireDb();\n db.prepare(`\n INSERT INTO rdf_vector_sources (\n source,\n workspace,\n local_path,\n content_type,\n source_version,\n source_hash,\n updated_at\n )\n VALUES (?, ?, ?, ?, ?, ?, strftime('%Y-%m-%dT%H:%M:%fZ', 'now'))\n ON CONFLICT (source)\n DO UPDATE SET\n workspace = excluded.workspace,\n local_path = excluded.local_path,\n content_type = excluded.content_type,\n source_version = excluded.source_version,\n source_hash = excluded.source_hash,\n updated_at = excluded.updated_at\n `).run(\n source.source,\n source.workspace,\n source.localPath ?? null,\n source.contentType ?? null,\n source.sourceVersion ?? null,\n source.sourceHash ?? null,\n );\n\n const row = db.prepare<RdfVectorSourceRow>('SELECT * FROM rdf_vector_sources WHERE source = ?').get(source.source);\n if (!row) {\n throw new Error(`Failed to upsert RDF vector source: ${source.source}`);\n }\n return row.id;\n }\n\n private estimateDatabaseBytes(): number {\n const db = this.requireDb();\n try {\n const pageCount = db.prepare<{ page_count: number }>('PRAGMA page_count').get()?.page_count ?? 0;\n const pageSize = db.prepare<{ page_size: number }>('PRAGMA page_size').get()?.page_size ?? 0;\n return pageCount * pageSize;\n } catch {\n return 0;\n }\n }\n\n private toSearchResult(\n row: RdfVectorChunkRow,\n embedding: number[],\n score: number,\n distance: number,\n ): RdfVectorSearchResult {\n return {\n source: row.source,\n workspace: row.workspace,\n localPath: row.local_path ?? undefined,\n contentType: row.content_type ?? undefined,\n sourceVersion: row.source_version ?? undefined,\n sourceHash: row.source_hash ?? undefined,\n chunkKey: row.chunk_key,\n ordinal: row.ordinal,\n level: row.level,\n heading: row.heading ?? undefined,\n path: parsePath(row.path),\n content: row.content,\n startOffset: row.start_offset,\n endOffset: row.end_offset,\n embedding,\n model: row.model || undefined,\n score,\n distance,\n };\n }\n\n private requireDb(): SqliteDatabase {\n if (!this.db) {\n throw new Error('RdfVectorIndex is not open');\n }\n return this.db;\n }\n}\n\nfunction normalizeEmbedding(embedding: number[]): number[] {\n return embedding.filter((value) => Number.isFinite(value));\n}\n\nfunction parseEmbedding(value: string): number[] {\n try {\n const parsed = JSON.parse(value);\n return Array.isArray(parsed) ? normalizeEmbedding(parsed) : [];\n } catch {\n return [];\n }\n}\n\nfunction vectorMagnitude(embedding: number[]): number {\n return Math.sqrt(embedding.reduce((sum, value) => sum + value * value, 0));\n}\n\nfunction vectorScore(distance: number, metric: RdfVectorDistanceMetric): number {\n if (!Number.isFinite(distance)) {\n return Number.NEGATIVE_INFINITY;\n }\n if (metric === 'cosine') {\n return 1 - distance;\n }\n return -distance;\n}\n\nfunction scoredVectorDistance(row: RdfVectorScoredChunkRow, metric: RdfVectorDistanceMetric): number {\n if (metric === 'euclidean') {\n const squared = row.vector_distance_squared ?? Number.POSITIVE_INFINITY;\n const stableSquared = Math.abs(squared) < 1e-12 ? 0 : squared;\n return Math.sqrt(Math.max(0, stableSquared));\n }\n return row.vector_distance ?? Number.POSITIVE_INFINITY;\n}\n\nfunction dotProduct(left: number[], right: number[]): number {\n let sum = 0;\n for (let index = 0; index < left.length; index++) {\n sum += left[index] * right[index];\n }\n return sum;\n}\n\nfunction insertVectorComponents(insertComponent: { run(...params: unknown[]): unknown }, chunkId: number, embedding: number[]): void {\n for (let dimension = 0; dimension < embedding.length; dimension++) {\n insertComponent.run(chunkId, dimension, embedding[dimension]);\n }\n}\n\nfunction parsePath(value: string | null): string[] {\n if (!value) {\n return [];\n }\n try {\n const parsed = JSON.parse(value);\n return Array.isArray(parsed) ? parsed.filter((item): item is string => typeof item === 'string') : [];\n } catch {\n return [];\n }\n}\n\nfunction buildVectorScoredRowsQuery(\n embedding: number[],\n metric: RdfVectorDistanceMetric,\n options: RdfVectorSearchOptions,\n): { sql: string; params: unknown[] } {\n const scored = buildVectorScoredBaseQuery(embedding, metric, options);\n const orderBy = buildVectorOrderClause(metric, options.orderBy);\n const window = buildVectorWindowClause(options.limit, options.offset);\n return {\n sql: `\n ${scored.withSql}\n SELECT\n scored.*,\n scored.dot_product AS dot_product,\n ${vectorScoreSql(metric, scored.queryMagnitude)} AS vector_score,\n ${vectorDistanceSql(metric, scored.queryMagnitude)} AS vector_distance,\n ${vectorSquaredDistanceSql(scored.queryMagnitude)} AS vector_distance_squared\n FROM scored\n ${scored.thresholdWhere}\n ORDER BY ${orderBy}\n ${window.sql}\n `,\n params: [...scored.params, ...window.params],\n };\n}\n\nfunction buildVectorScoredCountQuery(\n embedding: number[],\n metric: RdfVectorDistanceMetric,\n options: RdfVectorSearchOptions,\n): { sql: string; params: unknown[] } {\n const scored = buildVectorScoredBaseQuery(embedding, metric, options);\n return {\n sql: `\n ${scored.withSql}\n SELECT COUNT(*) AS count\n FROM scored\n ${scored.thresholdWhere}\n `,\n params: scored.params,\n };\n}\n\nfunction buildVectorScoredBaseQuery(\n embedding: number[],\n metric: RdfVectorDistanceMetric,\n options: RdfVectorSearchOptions,\n): {\n withSql: string;\n params: unknown[];\n thresholdWhere: string;\n queryMagnitude: number;\n} {\n const queryMagnitude = vectorMagnitude(embedding);\n const vectorValues = embedding.map(() => '(?, ?)').join(', ');\n const vectorParams = embedding.flatMap((value, dimension) => [dimension, value]);\n const conditions = ['chunk.dimensions = ?'];\n const params: unknown[] = [...vectorParams, embedding.length];\n\n if (metric === 'cosine') {\n conditions.push('chunk.magnitude > 0');\n }\n if (options.workspace) {\n conditions.push('source.workspace = ?');\n params.push(options.workspace);\n }\n if (options.source) {\n conditions.push('source.source = ?');\n params.push(options.source);\n }\n if (options.sourcePrefix) {\n conditions.push('source.source >= ? AND source.source < ?');\n params.push(options.sourcePrefix, `${options.sourcePrefix}\\uffff`);\n }\n if (options.model !== undefined) {\n conditions.push('chunk.model = ?');\n params.push(options.model);\n }\n\n const thresholdWhere = options.threshold === undefined\n ? ''\n : `WHERE ${vectorThresholdSql(metric, queryMagnitude, options.threshold)}`;\n\n return {\n withSql: `\n WITH query_vector(dimension, value) AS (\n VALUES ${vectorValues}\n ),\n scored AS (\n SELECT\n chunk.id,\n chunk.source_id,\n source.source,\n source.workspace,\n source.local_path,\n source.content_type,\n source.source_version,\n source.source_hash,\n chunk.chunk_key,\n chunk.ordinal,\n chunk.level,\n chunk.heading,\n chunk.path,\n chunk.content,\n chunk.start_offset,\n chunk.end_offset,\n chunk.embedding_json,\n chunk.dimensions,\n chunk.magnitude,\n chunk.model,\n chunk.updated_at,\n SUM(component.value * query_vector.value) AS dot_product\n FROM rdf_vector_chunks chunk\n JOIN rdf_vector_sources source ON source.id = chunk.source_id\n JOIN rdf_vector_components component ON component.chunk_id = chunk.id\n JOIN query_vector ON query_vector.dimension = component.dimension\n WHERE ${conditions.join(' AND ')}\n GROUP BY chunk.id\n HAVING COUNT(component.dimension) = ${sqlInteger(embedding.length)}\n )\n `,\n params,\n thresholdWhere,\n queryMagnitude,\n };\n}\n\nfunction buildVectorOrderClause(\n metric: RdfVectorDistanceMetric,\n orderBy: RdfVectorSearchOrder[] | undefined,\n): string {\n const order = orderBy?.length ? orderBy : [{ field: 'score' as const, direction: 'desc' as const }];\n const entries = order.map((entry) => `${vectorOrderExpression(metric, entry.field)} ${entry.direction === 'desc' ? 'DESC' : 'ASC'}`);\n return [...entries, 'source_id ASC', 'ordinal ASC'].join(', ');\n}\n\nfunction vectorOrderExpression(metric: RdfVectorDistanceMetric, field: RdfVectorSearchOrder['field']): string {\n switch (field) {\n case 'score':\n return 'vector_score';\n case 'distance':\n return metric === 'euclidean' ? 'vector_distance_squared' : 'vector_distance';\n case 'source':\n return 'source';\n case 'localPath':\n return \"COALESCE(local_path, '')\";\n case 'ordinal':\n return 'ordinal';\n case 'startOffset':\n return 'start_offset';\n case 'endOffset':\n return 'end_offset';\n default: {\n const exhaustive: never = field;\n throw new Error(`Unsupported RDF vector search order field: ${exhaustive}`);\n }\n }\n}\n\nfunction buildVectorWindowClause(limit: number | undefined, offset: number | undefined): { sql: string; params: unknown[] } {\n const hasLimit = limit !== undefined;\n const hasOffset = offset !== undefined;\n if (!hasLimit && !hasOffset) {\n return { sql: '', params: [] };\n }\n if (hasLimit) {\n const params: unknown[] = [Math.max(0, limit)];\n if (hasOffset) {\n params.push(Math.max(0, offset));\n return { sql: 'LIMIT ? OFFSET ?', params };\n }\n return { sql: 'LIMIT ?', params };\n }\n return { sql: 'LIMIT -1 OFFSET ?', params: [Math.max(0, offset ?? 0)] };\n}\n\nfunction vectorScoreSql(metric: RdfVectorDistanceMetric, queryMagnitude: number): string {\n switch (metric) {\n case 'cosine':\n return `dot_product / (${sqlNumber(queryMagnitude)} * magnitude)`;\n case 'dot':\n return 'dot_product';\n case 'euclidean':\n return `-(${vectorSquaredDistanceSql(queryMagnitude)})`;\n default: {\n const exhaustive: never = metric;\n throw new Error(`Unsupported RDF vector distance metric: ${exhaustive}`);\n }\n }\n}\n\nfunction vectorDistanceSql(metric: RdfVectorDistanceMetric, queryMagnitude: number): string {\n switch (metric) {\n case 'cosine':\n return `1 - (${vectorScoreSql(metric, queryMagnitude)})`;\n case 'dot':\n return '-dot_product';\n case 'euclidean':\n return 'NULL';\n default: {\n const exhaustive: never = metric;\n throw new Error(`Unsupported RDF vector distance metric: ${exhaustive}`);\n }\n }\n}\n\nfunction vectorSquaredDistanceSql(queryMagnitude: number): string {\n return `(${sqlNumber(queryMagnitude * queryMagnitude)} + magnitude * magnitude - 2 * dot_product)`;\n}\n\nfunction vectorThresholdSql(metric: RdfVectorDistanceMetric, queryMagnitude: number, threshold: number): string {\n if (!Number.isFinite(threshold)) {\n return threshold === Number.NEGATIVE_INFINITY ? '1 = 1' : '1 = 0';\n }\n\n switch (metric) {\n case 'cosine':\n case 'dot':\n return `${vectorScoreSql(metric, queryMagnitude)} >= ${sqlNumber(threshold)}`;\n case 'euclidean':\n return threshold <= 0\n ? `${vectorSquaredDistanceSql(queryMagnitude)} <= ${sqlNumber(threshold * threshold)}`\n : '1 = 0';\n default: {\n const exhaustive: never = metric;\n throw new Error(`Unsupported RDF vector distance metric: ${exhaustive}`);\n }\n }\n}\n\nfunction applyResultWindow(rows: number, offset: number | undefined, limit: number | undefined): number {\n const start = Math.max(0, offset ?? 0);\n if (rows <= start) {\n return 0;\n }\n const remaining = rows - start;\n return limit === undefined ? remaining : Math.min(remaining, Math.max(0, limit));\n}\n\nfunction sqlInteger(value: number): string {\n if (!Number.isSafeInteger(value) || value < 0) {\n throw new Error(`Invalid RDF vector SQL integer: ${value}`);\n }\n return String(value);\n}\n\nfunction sqlNumber(value: number): string {\n if (!Number.isFinite(value)) {\n throw new Error(`Invalid RDF vector SQL number: ${value}`);\n }\n return String(value);\n}\n"]}
1
+ {"version":3,"file":"RdfVectorIndex.js","sourceRoot":"","sources":["../../../src/storage/rdf/RdfVectorIndex.ts"],"names":[],"mappings":"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","sourcesContent":["import { existsSync, mkdirSync } from 'node:fs';\nimport { dirname } from 'node:path';\nimport { createSqliteRuntime, type SqliteDatabase } from '../SqliteRuntime';\nimport type {\n RdfVectorChunkInput,\n RdfVectorChunkRow,\n RdfVectorDistanceMetric,\n RdfSearchCardinalityEstimate,\n RdfVectorIndexOptions,\n RdfVectorIndexSyncLike,\n RdfVectorIndexStats,\n RdfVectorModelDistribution,\n RdfVectorSearchOrder,\n RdfVectorSearchOptions,\n RdfVectorSearchResult,\n RdfVectorSourceInput,\n RdfVectorScoreComponents,\n RdfVectorSummaryLifecycleEntry,\n RdfVectorSummaryLifecycleOptions,\n RdfVectorSummaryMetadata,\n} from './types';\nimport { appendRdfSearchSourceFilters } from './RdfSearchSourceFilter';\n\ninterface RdfVectorSourceRow {\n id: number;\n source_key: string;\n source: string;\n workspace: string;\n local_path: string | null;\n content_type: string | null;\n source_version: string | null;\n source_hash: string | null;\n updated_at: string;\n}\n\nexport interface RdfVectorScoredChunkRow extends RdfVectorChunkRow {\n dot_product: number;\n vector_score: number;\n vector_distance: number | null;\n vector_distance_squared: number | null;\n}\n\nexport class RdfVectorIndex implements RdfVectorIndexSyncLike {\n private readonly sqliteRuntime = createSqliteRuntime();\n private db: SqliteDatabase | null = null;\n\n public constructor(private readonly options: RdfVectorIndexOptions) {}\n\n public open(): void {\n if (this.db) {\n return;\n }\n\n if (this.options.path !== ':memory:') {\n const dir = dirname(this.options.path);\n if (!existsSync(dir)) {\n mkdirSync(dir, { recursive: true });\n }\n }\n\n this.db = this.sqliteRuntime.openDatabase(this.options.path);\n this.initializeSchema();\n }\n\n public close(): void {\n this.db?.close();\n this.db = null;\n }\n\n public clear(): void {\n this.requireDb().exec('DELETE FROM rdf_vector_components; DELETE FROM rdf_vector_chunks; DELETE FROM rdf_vector_sources;');\n }\n\n public indexVector(source: RdfVectorSourceInput, chunks: RdfVectorChunkInput[]): void {\n const db = this.requireDb();\n const sourceId = this.upsertSource(source);\n const insertChunk = db.prepare(`\n INSERT INTO rdf_vector_chunks (\n source_id,\n chunk_key,\n ordinal,\n level,\n heading,\n path,\n content,\n start_offset,\n end_offset,\n embedding_json,\n summary_metadata,\n dimensions,\n magnitude,\n provider,\n model,\n model_version,\n input_kind,\n input_hash,\n projection_policy_version,\n updated_at\n )\n VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, strftime('%Y-%m-%dT%H:%M:%fZ', 'now'))\n `);\n const insertComponent = db.prepare(`\n INSERT INTO rdf_vector_components (\n chunk_id,\n dimension,\n value,\n updated_at\n )\n VALUES (?, ?, ?, strftime('%Y-%m-%dT%H:%M:%fZ', 'now'))\n `);\n\n db.transaction(() => {\n if (chunks.length === 0) {\n db.prepare(`\n DELETE FROM rdf_vector_components\n WHERE chunk_id IN (\n SELECT id FROM rdf_vector_chunks WHERE source_id = ?\n )\n `).run(sourceId);\n db.prepare('DELETE FROM rdf_vector_chunks WHERE source_id = ?').run(sourceId);\n return;\n }\n const deleteComponents = db.prepare(`\n DELETE FROM rdf_vector_components\n WHERE chunk_id IN (\n SELECT id FROM rdf_vector_chunks\n WHERE source_id = ?\n AND provider = ?\n AND model = ?\n AND model_version = ?\n AND input_kind = ?\n AND projection_policy_version = ?\n )\n `);\n const deleteChunks = db.prepare(`\n DELETE FROM rdf_vector_chunks\n WHERE source_id = ?\n AND provider = ?\n AND model = ?\n AND model_version = ?\n AND input_kind = ?\n AND projection_policy_version = ?\n `);\n const deletedIdentities = new Set<string>();\n for (const chunk of chunks) {\n const identity = normalizeVectorIdentity(chunk);\n const identityKey = vectorIdentityKey(identity);\n if (!deletedIdentities.has(identityKey)) {\n deleteComponents.run(\n sourceId,\n identity.provider,\n identity.model,\n identity.modelVersion,\n identity.inputKind,\n identity.projectionPolicyVersion,\n );\n deleteChunks.run(\n sourceId,\n identity.provider,\n identity.model,\n identity.modelVersion,\n identity.inputKind,\n identity.projectionPolicyVersion,\n );\n deletedIdentities.add(identityKey);\n }\n const embedding = normalizeEmbedding(chunk.embedding);\n const result = insertChunk.run(\n sourceId,\n chunk.chunkKey,\n chunk.ordinal,\n chunk.level,\n chunk.heading || null,\n JSON.stringify(chunk.path ?? []),\n chunk.content,\n chunk.startOffset,\n chunk.endOffset,\n JSON.stringify(embedding),\n chunk.summaryMetadata ? JSON.stringify(chunk.summaryMetadata) : null,\n embedding.length,\n vectorMagnitude(embedding),\n identity.provider,\n identity.model,\n identity.modelVersion,\n identity.inputKind,\n chunk.inputHash ?? '',\n identity.projectionPolicyVersion,\n );\n insertVectorComponents(insertComponent, Number(result.lastInsertRowid), embedding);\n }\n })();\n }\n\n public deleteSource(source: string): number {\n const db = this.requireDb();\n const row = db.prepare<{ id: number }>('SELECT id FROM rdf_vector_sources WHERE source = ?').get(source);\n if (!row) {\n return 0;\n }\n\n return db.transaction(() => {\n db.prepare(`\n DELETE FROM rdf_vector_components\n WHERE chunk_id IN (\n SELECT id FROM rdf_vector_chunks WHERE source_id = ?\n )\n `).run(row.id);\n const deletedChunks = db.prepare('DELETE FROM rdf_vector_chunks WHERE source_id = ?').run(row.id).changes;\n db.prepare('DELETE FROM rdf_vector_sources WHERE id = ?').run(row.id);\n return deletedChunks;\n })();\n }\n\n public search(options: RdfVectorSearchOptions): RdfVectorSearchResult[] {\n const embedding = normalizeEmbedding(options.embedding);\n if (embedding.length === 0) {\n return [];\n }\n\n const metric = options.metric ?? this.options.defaultMetric ?? 'cosine';\n if (metric === 'cosine' && vectorMagnitude(embedding) === 0) {\n return [];\n }\n const scoredQuery = buildVectorScoredRowsQuery(embedding, metric, options);\n return this.requireDb()\n .prepare<RdfVectorScoredChunkRow>(scoredQuery.sql)\n .all(...scoredQuery.params)\n .map((row) => {\n const rowEmbedding = parseEmbedding(row.embedding_json);\n const distance = scoredVectorDistance(row, metric);\n return this.toSearchResult(row, rowEmbedding, metric, vectorMagnitude(embedding), vectorScore(distance, metric), distance);\n });\n }\n\n public summaryLifecycle(options: RdfVectorSummaryLifecycleOptions = {}): RdfVectorSummaryLifecycleEntry[] {\n const params: unknown[] = [];\n const conditions = ['chunk.summary_metadata IS NOT NULL'];\n if (options.workspace) {\n conditions.push('source.workspace = ?');\n params.push(options.workspace);\n }\n appendRdfSearchSourceFilters(options, conditions, params);\n appendVectorIdentityFilters(options, conditions, params);\n\n const limitSql = options.limit === undefined ? '' : 'LIMIT ?';\n if (options.limit !== undefined) {\n params.push(Math.max(0, options.limit));\n }\n\n const rows = this.requireDb().prepare<RdfVectorChunkRow>(`\n SELECT\n chunk.id,\n chunk.source_id,\n source.source_key,\n source.source,\n source.workspace,\n source.local_path,\n source.content_type,\n source.source_version,\n source.source_hash,\n chunk.chunk_key,\n chunk.ordinal,\n chunk.level,\n chunk.heading,\n chunk.path,\n chunk.content,\n chunk.start_offset,\n chunk.end_offset,\n chunk.embedding_json,\n chunk.summary_metadata,\n chunk.dimensions,\n chunk.magnitude,\n chunk.provider,\n chunk.model,\n chunk.model_version,\n chunk.input_kind,\n chunk.input_hash,\n chunk.projection_policy_version,\n chunk.updated_at\n FROM rdf_vector_chunks chunk\n JOIN rdf_vector_sources source ON source.id = chunk.source_id\n WHERE ${conditions.join(' AND ')}\n ORDER BY source.source ASC, chunk.ordinal ASC, chunk.chunk_key ASC\n ${limitSql}\n `).all(...params);\n\n return rows.flatMap((row) => {\n const entry = toSummaryLifecycleEntry(row);\n return entry ? [entry] : [];\n });\n }\n\n public estimateSearchCardinality(options: RdfVectorSearchOptions): RdfSearchCardinalityEstimate {\n const embedding = normalizeEmbedding(options.embedding);\n if (embedding.length === 0) {\n return {\n rows: 0,\n source: 'vector-candidate-count',\n indexChoice: 'vector-candidate-count',\n };\n }\n\n const metric = options.metric ?? this.options.defaultMetric ?? 'cosine';\n if (metric === 'cosine' && vectorMagnitude(embedding) === 0) {\n return {\n rows: 0,\n source: 'vector-candidate-count',\n indexChoice: 'vector-candidate-count',\n };\n }\n\n if (options.threshold !== undefined) {\n const countQuery = buildVectorScoredCountQuery(embedding, metric, options);\n const rows = this.requireDb().prepare<{ count: number }>(countQuery.sql).get(...countQuery.params)?.count ?? 0;\n return {\n rows: applyResultWindow(rows, options.offset, options.limit),\n source: 'vector-component-score',\n indexChoice: 'vector-component-score',\n };\n }\n\n const params: unknown[] = [embedding.length];\n const conditions = ['chunk.dimensions = ?'];\n\n if (options.workspace) {\n conditions.push('source.workspace = ?');\n params.push(options.workspace);\n }\n appendRdfSearchSourceFilters(options, conditions, params);\n appendVectorIdentityFilters(options, conditions, params);\n\n const rows = this.requireDb().prepare<{ count: number }>(`\n SELECT COUNT(*) AS count\n FROM rdf_vector_chunks chunk\n JOIN rdf_vector_sources source ON source.id = chunk.source_id\n WHERE ${conditions.join(' AND ')}\n `).get(...params)?.count ?? 0;\n\n return {\n rows: applyResultWindow(rows, options.offset, options.limit),\n source: 'vector-candidate-count',\n indexChoice: 'vector-candidate-count',\n };\n }\n\n public stats(): RdfVectorIndexStats {\n const db = this.requireDb();\n return {\n sourceCount: db.prepare<{ count: number }>('SELECT COUNT(*) AS count FROM rdf_vector_sources').get()?.count ?? 0,\n chunkCount: db.prepare<{ count: number }>('SELECT COUNT(*) AS count FROM rdf_vector_chunks').get()?.count ?? 0,\n componentCount: db.prepare<{ count: number }>('SELECT COUNT(*) AS count FROM rdf_vector_components').get()?.count ?? 0,\n databaseBytes: this.estimateDatabaseBytes(),\n modelDistribution: this.modelDistribution(),\n };\n }\n\n public modelDistribution(): RdfVectorModelDistribution[] {\n const rows = this.requireDb().prepare<{\n provider: string;\n model: string;\n model_version: string;\n input_kind: string;\n projection_policy_version: string;\n dimensions: number;\n source_count: number;\n chunk_count: number;\n min_magnitude: number | null;\n max_magnitude: number | null;\n average_magnitude: number | null;\n }>(`\n SELECT\n chunk.provider,\n chunk.model,\n chunk.model_version,\n chunk.input_kind,\n chunk.projection_policy_version,\n chunk.dimensions,\n COUNT(DISTINCT chunk.source_id) AS source_count,\n COUNT(*) AS chunk_count,\n MIN(chunk.magnitude) AS min_magnitude,\n MAX(chunk.magnitude) AS max_magnitude,\n AVG(chunk.magnitude) AS average_magnitude\n FROM rdf_vector_chunks chunk\n GROUP BY chunk.provider, chunk.model, chunk.model_version, chunk.input_kind, chunk.projection_policy_version, chunk.dimensions\n ORDER BY chunk_count DESC, source_count DESC, chunk.provider ASC, chunk.model ASC, chunk.model_version ASC, chunk.input_kind ASC, chunk.projection_policy_version ASC, chunk.dimensions ASC\n `).all();\n\n return rows.map((row) => ({\n provider: row.provider || undefined,\n model: row.model,\n modelVersion: row.model_version || undefined,\n inputKind: row.input_kind || undefined,\n projectionPolicyVersion: row.projection_policy_version || undefined,\n dimensions: row.dimensions,\n sourceCount: row.source_count,\n chunkCount: row.chunk_count,\n minMagnitude: row.min_magnitude ?? 0,\n maxMagnitude: row.max_magnitude ?? 0,\n averageMagnitude: row.average_magnitude ?? 0,\n }));\n }\n\n private initializeSchema(): void {\n this.requireDb().exec(`\n CREATE TABLE IF NOT EXISTS rdf_vector_sources (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n source_key TEXT,\n source TEXT NOT NULL UNIQUE,\n workspace TEXT NOT NULL,\n local_path TEXT,\n content_type TEXT,\n source_version TEXT,\n source_hash TEXT,\n updated_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now'))\n );\n\n CREATE TABLE IF NOT EXISTS rdf_vector_chunks (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n source_id INTEGER NOT NULL,\n chunk_key TEXT NOT NULL,\n ordinal INTEGER NOT NULL,\n level INTEGER NOT NULL,\n heading TEXT,\n path TEXT,\n content TEXT NOT NULL,\n start_offset INTEGER NOT NULL,\n end_offset INTEGER NOT NULL,\n embedding_json TEXT NOT NULL,\n summary_metadata TEXT,\n dimensions INTEGER NOT NULL,\n magnitude REAL NOT NULL,\n provider TEXT NOT NULL DEFAULT '',\n model TEXT NOT NULL,\n model_version TEXT NOT NULL DEFAULT '',\n input_kind TEXT NOT NULL DEFAULT '',\n input_hash TEXT NOT NULL DEFAULT '',\n projection_policy_version TEXT NOT NULL DEFAULT '',\n updated_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now')),\n UNIQUE (\n source_id,\n chunk_key,\n provider,\n model,\n model_version,\n input_kind,\n projection_policy_version,\n input_hash\n ),\n FOREIGN KEY (source_id) REFERENCES rdf_vector_sources(id)\n );\n\n CREATE TABLE IF NOT EXISTS rdf_vector_components (\n chunk_id INTEGER NOT NULL,\n dimension INTEGER NOT NULL,\n value REAL NOT NULL,\n updated_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now')),\n PRIMARY KEY (chunk_id, dimension),\n FOREIGN KEY (chunk_id) REFERENCES rdf_vector_chunks(id)\n );\n\n CREATE INDEX IF NOT EXISTS rdf_vector_sources_workspace ON rdf_vector_sources(workspace);\n CREATE INDEX IF NOT EXISTS rdf_vector_sources_source ON rdf_vector_sources(source);\n CREATE INDEX IF NOT EXISTS rdf_vector_chunks_source ON rdf_vector_chunks(source_id, ordinal);\n CREATE INDEX IF NOT EXISTS rdf_vector_components_dimension ON rdf_vector_components(dimension, chunk_id);\n `);\n this.ensureSourceKeyColumn();\n this.ensureVectorIdentityColumns();\n this.backfillVectorComponents();\n }\n\n private ensureSourceKeyColumn(): void {\n const db = this.requireDb();\n const columns = db.prepare<{ name: string }>('PRAGMA table_info(rdf_vector_sources)').all();\n if (!columns.some((column) => column.name === 'source_key')) {\n db.exec('ALTER TABLE rdf_vector_sources ADD COLUMN source_key TEXT');\n }\n db.exec('UPDATE rdf_vector_sources SET source_key = source WHERE source_key IS NULL OR source_key = \\'\\';');\n }\n\n private ensureVectorIdentityColumns(): void {\n const db = this.requireDb();\n const columns = db.prepare<{ name: string }>('PRAGMA table_info(rdf_vector_chunks)').all();\n const names = new Set(columns.map((column) => column.name));\n for (const [name, definition] of [\n ['provider', 'TEXT NOT NULL DEFAULT \\'\\''],\n ['model_version', 'TEXT NOT NULL DEFAULT \\'\\''],\n ['input_kind', 'TEXT NOT NULL DEFAULT \\'\\''],\n ['input_hash', 'TEXT NOT NULL DEFAULT \\'\\''],\n ['projection_policy_version', 'TEXT NOT NULL DEFAULT \\'\\''],\n ['summary_metadata', 'TEXT'],\n ] as const) {\n if (!names.has(name)) {\n db.exec(`ALTER TABLE rdf_vector_chunks ADD COLUMN ${name} ${definition}`);\n }\n }\n db.exec(`\n UPDATE rdf_vector_chunks\n SET\n provider = COALESCE(provider, ''),\n model_version = COALESCE(model_version, ''),\n input_kind = COALESCE(input_kind, ''),\n input_hash = COALESCE(input_hash, ''),\n projection_policy_version = COALESCE(projection_policy_version, '')\n `);\n this.ensureVectorChunkIdentityUniqueConstraint();\n db.exec(`\n CREATE INDEX IF NOT EXISTS rdf_vector_chunks_model_dimensions\n ON rdf_vector_chunks(provider, model, model_version, input_kind, projection_policy_version, dimensions)\n `);\n }\n\n private ensureVectorChunkIdentityUniqueConstraint(): void {\n const db = this.requireDb();\n const indexes = db.prepare<{ name: string; unique: number }>('PRAGMA index_list(rdf_vector_chunks)').all();\n const hasLegacyUnique = indexes.some((index) => {\n if (!index.unique) {\n return false;\n }\n const columns = db.prepare<{ name: string }>(`PRAGMA index_info(${sqliteStringLiteral(index.name)})`).all();\n return columns.map((column) => column.name).join(',') === 'source_id,chunk_key';\n });\n if (!hasLegacyUnique) {\n return;\n }\n\n db.exec(`\n ALTER TABLE rdf_vector_components RENAME TO rdf_vector_components_legacy_unique;\n ALTER TABLE rdf_vector_chunks RENAME TO rdf_vector_chunks_legacy_unique;\n\n CREATE TABLE rdf_vector_chunks (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n source_id INTEGER NOT NULL,\n chunk_key TEXT NOT NULL,\n ordinal INTEGER NOT NULL,\n level INTEGER NOT NULL,\n heading TEXT,\n path TEXT,\n content TEXT NOT NULL,\n start_offset INTEGER NOT NULL,\n end_offset INTEGER NOT NULL,\n embedding_json TEXT NOT NULL,\n summary_metadata TEXT,\n dimensions INTEGER NOT NULL,\n magnitude REAL NOT NULL,\n provider TEXT NOT NULL DEFAULT '',\n model TEXT NOT NULL,\n model_version TEXT NOT NULL DEFAULT '',\n input_kind TEXT NOT NULL DEFAULT '',\n input_hash TEXT NOT NULL DEFAULT '',\n projection_policy_version TEXT NOT NULL DEFAULT '',\n updated_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now')),\n UNIQUE (\n source_id,\n chunk_key,\n provider,\n model,\n model_version,\n input_kind,\n projection_policy_version,\n input_hash\n ),\n FOREIGN KEY (source_id) REFERENCES rdf_vector_sources(id)\n );\n\n CREATE TABLE rdf_vector_components (\n chunk_id INTEGER NOT NULL,\n dimension INTEGER NOT NULL,\n value REAL NOT NULL,\n updated_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now')),\n PRIMARY KEY (chunk_id, dimension),\n FOREIGN KEY (chunk_id) REFERENCES rdf_vector_chunks(id)\n );\n\n INSERT INTO rdf_vector_chunks (\n id,\n source_id,\n chunk_key,\n ordinal,\n level,\n heading,\n path,\n content,\n start_offset,\n end_offset,\n embedding_json,\n summary_metadata,\n dimensions,\n magnitude,\n provider,\n model,\n model_version,\n input_kind,\n input_hash,\n projection_policy_version,\n updated_at\n )\n SELECT\n id,\n source_id,\n chunk_key,\n ordinal,\n level,\n heading,\n path,\n content,\n start_offset,\n end_offset,\n embedding_json,\n NULL AS summary_metadata,\n dimensions,\n magnitude,\n COALESCE(provider, ''),\n model,\n COALESCE(model_version, ''),\n COALESCE(input_kind, ''),\n COALESCE(input_hash, ''),\n COALESCE(projection_policy_version, ''),\n updated_at\n FROM rdf_vector_chunks_legacy_unique;\n\n INSERT INTO rdf_vector_components (\n chunk_id,\n dimension,\n value,\n updated_at\n )\n SELECT\n chunk_id,\n dimension,\n value,\n updated_at\n FROM rdf_vector_components_legacy_unique;\n\n DROP TABLE rdf_vector_components_legacy_unique;\n DROP TABLE rdf_vector_chunks_legacy_unique;\n CREATE INDEX IF NOT EXISTS rdf_vector_chunks_source ON rdf_vector_chunks(source_id, ordinal);\n CREATE INDEX IF NOT EXISTS rdf_vector_components_dimension ON rdf_vector_components(dimension, chunk_id);\n `);\n }\n\n private backfillVectorComponents(): void {\n const db = this.requireDb();\n const rows = db.prepare<{\n id: number;\n dimensions: number;\n embedding_json: string;\n component_count: number;\n }>(`\n SELECT\n chunk.id,\n chunk.dimensions,\n chunk.embedding_json,\n COUNT(component.dimension) AS component_count\n FROM rdf_vector_chunks chunk\n LEFT JOIN rdf_vector_components component ON component.chunk_id = chunk.id\n WHERE chunk.dimensions > 0\n GROUP BY chunk.id\n HAVING component_count <> chunk.dimensions\n `).all();\n if (rows.length === 0) {\n return;\n }\n\n const deleteComponents = db.prepare('DELETE FROM rdf_vector_components WHERE chunk_id = ?');\n const insertComponent = db.prepare(`\n INSERT INTO rdf_vector_components (\n chunk_id,\n dimension,\n value,\n updated_at\n )\n VALUES (?, ?, ?, strftime('%Y-%m-%dT%H:%M:%fZ', 'now'))\n `);\n db.transaction(() => {\n for (const row of rows) {\n deleteComponents.run(row.id);\n insertVectorComponents(insertComponent, row.id, parseEmbedding(row.embedding_json));\n }\n })();\n }\n\n private upsertSource(source: RdfVectorSourceInput): number {\n const db = this.requireDb();\n db.prepare(`\n INSERT INTO rdf_vector_sources (\n source_key,\n source,\n workspace,\n local_path,\n content_type,\n source_version,\n source_hash,\n updated_at\n )\n VALUES (?, ?, ?, ?, ?, ?, ?, strftime('%Y-%m-%dT%H:%M:%fZ', 'now'))\n ON CONFLICT (source)\n DO UPDATE SET\n source_key = COALESCE(excluded.source_key, rdf_vector_sources.source_key, excluded.source),\n workspace = excluded.workspace,\n local_path = excluded.local_path,\n content_type = excluded.content_type,\n source_version = excluded.source_version,\n source_hash = excluded.source_hash,\n updated_at = excluded.updated_at\n `).run(\n source.sourceKey ?? source.source,\n source.source,\n source.workspace,\n source.localPath ?? null,\n source.contentType ?? null,\n source.sourceVersion ?? null,\n source.sourceHash ?? null,\n );\n\n const row = db.prepare<RdfVectorSourceRow>('SELECT * FROM rdf_vector_sources WHERE source = ?').get(source.source);\n if (!row) {\n throw new Error(`Failed to upsert RDF vector source: ${source.source}`);\n }\n return row.id;\n }\n\n private estimateDatabaseBytes(): number {\n const db = this.requireDb();\n try {\n const pageCount = db.prepare<{ page_count: number }>('PRAGMA page_count').get()?.page_count ?? 0;\n const pageSize = db.prepare<{ page_size: number }>('PRAGMA page_size').get()?.page_size ?? 0;\n return pageCount * pageSize;\n } catch {\n return 0;\n }\n }\n\n private toSearchResult(\n row: RdfVectorScoredChunkRow,\n embedding: number[],\n metric: RdfVectorDistanceMetric,\n queryMagnitude: number,\n score: number,\n distance: number,\n ): RdfVectorSearchResult {\n return {\n source: row.source,\n workspace: row.workspace,\n localPath: row.local_path ?? undefined,\n contentType: row.content_type ?? undefined,\n sourceVersion: row.source_version ?? undefined,\n sourceHash: row.source_hash ?? undefined,\n sourceKey: row.source_key || row.source,\n chunkKey: row.chunk_key,\n retrievalPointKey: row.chunk_key,\n ordinal: row.ordinal,\n level: row.level,\n heading: row.heading ?? undefined,\n path: parsePath(row.path),\n content: row.content,\n startOffset: row.start_offset,\n endOffset: row.end_offset,\n embedding,\n provider: row.provider || undefined,\n model: row.model || undefined,\n modelVersion: row.model_version || undefined,\n inputKind: row.input_kind || undefined,\n inputHash: row.input_hash || undefined,\n projectionPolicyVersion: row.projection_policy_version || undefined,\n summaryMetadata: parseSummaryMetadata(row.summary_metadata),\n scoreComponents: vectorScoreComponents(row, metric, queryMagnitude, score, distance),\n score,\n distance,\n };\n }\n\n private requireDb(): SqliteDatabase {\n if (!this.db) {\n throw new Error('RdfVectorIndex is not open');\n }\n return this.db;\n }\n}\n\nexport function vectorScoreComponents(\n row: Pick<RdfVectorScoredChunkRow, 'dimensions' | 'dot_product' | 'magnitude' | 'vector_distance_squared'>,\n metric: RdfVectorDistanceMetric,\n queryMagnitude: number,\n score: number,\n distance: number,\n backend?: 'component' | 'pg-vector',\n): RdfVectorScoreComponents {\n const distanceSquared = row.vector_distance_squared ?? undefined;\n return {\n sourceType: 'vector',\n ...(backend ? { backend } : {}),\n metric,\n dimensions: row.dimensions,\n score,\n distance,\n dotProduct: row.dot_product,\n queryMagnitude,\n candidateMagnitude: row.magnitude,\n ...(distanceSquared !== undefined ? { distanceSquared } : {}),\n };\n}\n\nexport function normalizeEmbedding(embedding: number[]): number[] {\n return embedding.filter((value) => Number.isFinite(value));\n}\n\nexport function parseEmbedding(value: string): number[] {\n try {\n const parsed = JSON.parse(value);\n return Array.isArray(parsed) ? normalizeEmbedding(parsed) : [];\n } catch {\n return [];\n }\n}\n\nexport function vectorMagnitude(embedding: number[]): number {\n return Math.sqrt(embedding.reduce((sum, value) => sum + value * value, 0));\n}\n\nexport function vectorScore(distance: number, metric: RdfVectorDistanceMetric): number {\n if (!Number.isFinite(distance)) {\n return Number.NEGATIVE_INFINITY;\n }\n if (metric === 'cosine') {\n return 1 - distance;\n }\n return -distance;\n}\n\nexport function scoredVectorDistance(row: RdfVectorScoredChunkRow, metric: RdfVectorDistanceMetric): number {\n if (metric === 'euclidean') {\n const squared = row.vector_distance_squared ?? Number.POSITIVE_INFINITY;\n const stableSquared = Math.abs(squared) < 1e-12 ? 0 : squared;\n return Math.sqrt(Math.max(0, stableSquared));\n }\n return row.vector_distance ?? Number.POSITIVE_INFINITY;\n}\n\nfunction dotProduct(left: number[], right: number[]): number {\n let sum = 0;\n for (let index = 0; index < left.length; index++) {\n sum += left[index] * right[index];\n }\n return sum;\n}\n\nexport function insertVectorComponents(insertComponent: { run(...params: unknown[]): unknown }, chunkId: number, embedding: number[]): void {\n for (let dimension = 0; dimension < embedding.length; dimension++) {\n insertComponent.run(chunkId, dimension, embedding[dimension]);\n }\n}\n\nexport function parsePath(value: string | null): string[] {\n if (!value) {\n return [];\n }\n try {\n const parsed = JSON.parse(value);\n return Array.isArray(parsed) ? parsed.filter((item): item is string => typeof item === 'string') : [];\n } catch {\n return [];\n }\n}\n\nexport function parseSummaryMetadata(value: string | null): RdfVectorSummaryMetadata | undefined {\n if (!value) {\n return undefined;\n }\n try {\n const parsed = JSON.parse(value);\n if (\n !parsed ||\n parsed.status !== 'summarized' ||\n typeof parsed.provider !== 'string' ||\n typeof parsed.model !== 'string' ||\n typeof parsed.promptVersion !== 'string' ||\n typeof parsed.originalChars !== 'number' ||\n typeof parsed.summaryChars !== 'number' ||\n typeof parsed.rounds !== 'number'\n ) {\n return undefined;\n }\n return {\n status: 'summarized',\n provider: parsed.provider,\n model: parsed.model,\n promptVersion: parsed.promptVersion,\n ...(typeof parsed.sourceHash === 'string' ? { sourceHash: parsed.sourceHash } : {}),\n originalChars: parsed.originalChars,\n summaryChars: parsed.summaryChars,\n rounds: parsed.rounds,\n };\n } catch {\n return undefined;\n }\n}\n\ninterface NormalizedVectorIdentity {\n provider: string;\n model: string;\n modelVersion: string;\n inputKind: string;\n projectionPolicyVersion: string;\n}\n\nfunction normalizeVectorIdentity(chunk: RdfVectorChunkInput): NormalizedVectorIdentity {\n return {\n provider: chunk.provider ?? '',\n model: chunk.model ?? '',\n modelVersion: chunk.modelVersion ?? '',\n inputKind: chunk.inputKind ?? '',\n projectionPolicyVersion: chunk.projectionPolicyVersion ?? '',\n };\n}\n\nfunction vectorIdentityKey(identity: NormalizedVectorIdentity): string {\n return [\n identity.provider,\n identity.model,\n identity.modelVersion,\n identity.inputKind,\n identity.projectionPolicyVersion,\n ].join('\\u0000');\n}\n\nfunction sqliteStringLiteral(value: string): string {\n return `'${value.replace(/'/g, '\\'\\'')}'`;\n}\n\nfunction appendVectorIdentityFilters(\n options: RdfVectorSearchOptions | RdfVectorSummaryLifecycleOptions,\n conditions: string[],\n params: unknown[],\n): void {\n if (options.provider !== undefined) {\n conditions.push('chunk.provider = ?');\n params.push(options.provider);\n }\n if (options.model !== undefined) {\n conditions.push('chunk.model = ?');\n params.push(options.model);\n }\n if (options.modelVersion !== undefined) {\n conditions.push('chunk.model_version = ?');\n params.push(options.modelVersion);\n }\n if (options.inputKind !== undefined) {\n conditions.push('chunk.input_kind = ?');\n params.push(options.inputKind);\n }\n if (options.inputHash !== undefined) {\n conditions.push('chunk.input_hash = ?');\n params.push(options.inputHash);\n }\n if (options.projectionPolicyVersion !== undefined) {\n conditions.push('chunk.projection_policy_version = ?');\n params.push(options.projectionPolicyVersion);\n }\n}\n\nfunction toSummaryLifecycleEntry(row: RdfVectorChunkRow): RdfVectorSummaryLifecycleEntry | undefined {\n const summaryMetadata = parseSummaryMetadata(row.summary_metadata);\n if (!summaryMetadata) {\n return undefined;\n }\n\n return {\n source: row.source,\n workspace: row.workspace,\n localPath: row.local_path ?? undefined,\n contentType: row.content_type ?? undefined,\n sourceVersion: row.source_version ?? undefined,\n sourceHash: row.source_hash ?? undefined,\n sourceKey: row.source_key || row.source,\n chunkKey: row.chunk_key,\n retrievalPointKey: row.chunk_key,\n ordinal: row.ordinal,\n level: row.level,\n heading: row.heading ?? undefined,\n path: parsePath(row.path),\n content: row.content,\n startOffset: row.start_offset,\n endOffset: row.end_offset,\n provider: row.provider || undefined,\n model: row.model || undefined,\n modelVersion: row.model_version || undefined,\n inputKind: row.input_kind || undefined,\n inputHash: row.input_hash || undefined,\n projectionPolicyVersion: row.projection_policy_version || undefined,\n summaryMetadata,\n updatedAt: row.updated_at,\n };\n}\n\nfunction buildVectorScoredRowsQuery(\n embedding: number[],\n metric: RdfVectorDistanceMetric,\n options: RdfVectorSearchOptions,\n): { sql: string; params: unknown[] } {\n const scored = buildVectorScoredBaseQuery(embedding, metric, options);\n const orderBy = buildVectorOrderClause(metric, options.orderBy);\n const window = buildVectorWindowClause(options.limit, options.offset);\n return {\n sql: `\n ${scored.withSql}\n SELECT\n scored.*,\n scored.dot_product AS dot_product,\n ${vectorScoreSql(metric, scored.queryMagnitude)} AS vector_score,\n ${vectorDistanceSql(metric, scored.queryMagnitude)} AS vector_distance,\n ${vectorSquaredDistanceSql(scored.queryMagnitude)} AS vector_distance_squared\n FROM scored\n ${scored.thresholdWhere}\n ORDER BY ${orderBy}\n ${window.sql}\n `,\n params: [...scored.params, ...window.params],\n };\n}\n\nfunction buildVectorScoredCountQuery(\n embedding: number[],\n metric: RdfVectorDistanceMetric,\n options: RdfVectorSearchOptions,\n): { sql: string; params: unknown[] } {\n const scored = buildVectorScoredBaseQuery(embedding, metric, options);\n return {\n sql: `\n ${scored.withSql}\n SELECT COUNT(*) AS count\n FROM scored\n ${scored.thresholdWhere}\n `,\n params: scored.params,\n };\n}\n\nfunction buildVectorScoredBaseQuery(\n embedding: number[],\n metric: RdfVectorDistanceMetric,\n options: RdfVectorSearchOptions,\n): {\n withSql: string;\n params: unknown[];\n thresholdWhere: string;\n queryMagnitude: number;\n} {\n const queryMagnitude = vectorMagnitude(embedding);\n const vectorValues = embedding.map(() => '(?, ?)').join(', ');\n const vectorParams = embedding.flatMap((value, dimension) => [dimension, value]);\n const conditions = ['chunk.dimensions = ?'];\n const params: unknown[] = [...vectorParams, embedding.length];\n\n if (metric === 'cosine') {\n conditions.push('chunk.magnitude > 0');\n }\n if (options.workspace) {\n conditions.push('source.workspace = ?');\n params.push(options.workspace);\n }\n appendRdfSearchSourceFilters(options, conditions, params);\n appendVectorIdentityFilters(options, conditions, params);\n\n const thresholdWhere = options.threshold === undefined\n ? ''\n : `WHERE ${vectorThresholdSql(metric, queryMagnitude, options.threshold)}`;\n\n return {\n withSql: `\n WITH query_vector(dimension, value) AS (\n VALUES ${vectorValues}\n ),\n scored AS (\n SELECT\n chunk.id,\n chunk.source_id,\n source.source_key,\n source.source,\n source.workspace,\n source.local_path,\n source.content_type,\n source.source_version,\n source.source_hash,\n chunk.chunk_key,\n chunk.ordinal,\n chunk.level,\n chunk.heading,\n chunk.path,\n chunk.content,\n chunk.start_offset,\n chunk.end_offset,\n chunk.embedding_json,\n chunk.summary_metadata,\n chunk.dimensions,\n chunk.magnitude,\n chunk.provider,\n chunk.model,\n chunk.model_version,\n chunk.input_kind,\n chunk.input_hash,\n chunk.projection_policy_version,\n chunk.updated_at,\n SUM(component.value * query_vector.value) AS dot_product\n FROM rdf_vector_chunks chunk\n JOIN rdf_vector_sources source ON source.id = chunk.source_id\n JOIN rdf_vector_components component ON component.chunk_id = chunk.id\n JOIN query_vector ON query_vector.dimension = component.dimension\n WHERE ${conditions.join(' AND ')}\n GROUP BY chunk.id\n HAVING COUNT(component.dimension) = ${sqlInteger(embedding.length)}\n )\n `,\n params,\n thresholdWhere,\n queryMagnitude,\n };\n}\n\nexport function buildVectorOrderClause(\n metric: RdfVectorDistanceMetric,\n orderBy: RdfVectorSearchOrder[] | undefined,\n): string {\n const order = orderBy?.length ? orderBy : [{ field: 'score' as const, direction: 'desc' as const }];\n const entries = order.map((entry) => `${vectorOrderExpression(metric, entry.field)} ${entry.direction === 'desc' ? 'DESC' : 'ASC'}`);\n return [...entries, 'source_id ASC', 'ordinal ASC'].join(', ');\n}\n\nfunction vectorOrderExpression(metric: RdfVectorDistanceMetric, field: RdfVectorSearchOrder['field']): string {\n switch (field) {\n case 'score':\n return 'vector_score';\n case 'distance':\n return metric === 'euclidean' ? 'vector_distance_squared' : 'vector_distance';\n case 'source':\n return 'source';\n case 'localPath':\n return \"COALESCE(local_path, '')\";\n case 'ordinal':\n return 'ordinal';\n case 'startOffset':\n return 'start_offset';\n case 'endOffset':\n return 'end_offset';\n default: {\n const exhaustive: never = field;\n throw new Error(`Unsupported RDF vector search order field: ${exhaustive}`);\n }\n }\n}\n\nfunction buildVectorWindowClause(limit: number | undefined, offset: number | undefined): { sql: string; params: unknown[] } {\n const hasLimit = limit !== undefined;\n const hasOffset = offset !== undefined;\n if (!hasLimit && !hasOffset) {\n return { sql: '', params: [] };\n }\n if (hasLimit) {\n const params: unknown[] = [Math.max(0, limit)];\n if (hasOffset) {\n params.push(Math.max(0, offset));\n return { sql: 'LIMIT ? OFFSET ?', params };\n }\n return { sql: 'LIMIT ?', params };\n }\n return { sql: 'LIMIT -1 OFFSET ?', params: [Math.max(0, offset ?? 0)] };\n}\n\nexport function vectorScoreSql(metric: RdfVectorDistanceMetric, queryMagnitude: number): string {\n switch (metric) {\n case 'cosine':\n return `dot_product / (${sqlNumber(queryMagnitude)} * magnitude)`;\n case 'dot':\n return 'dot_product';\n case 'euclidean':\n return `-(${vectorSquaredDistanceSql(queryMagnitude)})`;\n default: {\n const exhaustive: never = metric;\n throw new Error(`Unsupported RDF vector distance metric: ${exhaustive}`);\n }\n }\n}\n\nexport function vectorDistanceSql(metric: RdfVectorDistanceMetric, queryMagnitude: number): string {\n switch (metric) {\n case 'cosine':\n return `1 - (${vectorScoreSql(metric, queryMagnitude)})`;\n case 'dot':\n return '-dot_product';\n case 'euclidean':\n return 'NULL';\n default: {\n const exhaustive: never = metric;\n throw new Error(`Unsupported RDF vector distance metric: ${exhaustive}`);\n }\n }\n}\n\nexport function vectorSquaredDistanceSql(queryMagnitude: number): string {\n return `(${sqlNumber(queryMagnitude * queryMagnitude)} + magnitude * magnitude - 2 * dot_product)`;\n}\n\nexport function vectorThresholdSql(metric: RdfVectorDistanceMetric, queryMagnitude: number, threshold: number): string {\n if (!Number.isFinite(threshold)) {\n return threshold === Number.NEGATIVE_INFINITY ? '1 = 1' : '1 = 0';\n }\n\n switch (metric) {\n case 'cosine':\n case 'dot':\n return `${vectorScoreSql(metric, queryMagnitude)} >= ${sqlNumber(threshold)}`;\n case 'euclidean':\n return threshold <= 0\n ? `${vectorSquaredDistanceSql(queryMagnitude)} <= ${sqlNumber(threshold * threshold)}`\n : '1 = 0';\n default: {\n const exhaustive: never = metric;\n throw new Error(`Unsupported RDF vector distance metric: ${exhaustive}`);\n }\n }\n}\n\nexport function applyResultWindow(rows: number, offset: number | undefined, limit: number | undefined): number {\n const start = Math.max(0, offset ?? 0);\n if (rows <= start) {\n return 0;\n }\n const remaining = rows - start;\n return limit === undefined ? remaining : Math.min(remaining, Math.max(0, limit));\n}\n\nfunction sqlInteger(value: number): string {\n if (!Number.isSafeInteger(value) || value < 0) {\n throw new Error(`Invalid RDF vector SQL integer: ${value}`);\n }\n return String(value);\n}\n\nexport function sqlNumber(value: number): string {\n if (!Number.isFinite(value)) {\n throw new Error(`Invalid RDF vector SQL number: ${value}`);\n }\n return String(value);\n}\n"]}
@@ -0,0 +1,163 @@
1
+ {
2
+ "@context": [
3
+ "https://linkedsoftwaredependencies.org/bundles/npm/@undefineds.co/xpod/^0.0.0/components/context.jsonld"
4
+ ],
5
+ "@id": "npmd:@undefineds.co/xpod",
6
+ "components": [
7
+ {
8
+ "@id": "undefineds:dist/storage/rdf/RdfVectorIndex.jsonld#RdfVectorIndex",
9
+ "@type": "Class",
10
+ "requireElement": "RdfVectorIndex",
11
+ "extends": [
12
+ "undefineds:dist/storage/rdf/types.jsonld#RdfVectorIndexSyncLike"
13
+ ],
14
+ "parameters": [
15
+ {
16
+ "@id": "undefineds:dist/storage/rdf/RdfVectorIndex.jsonld#RdfVectorIndex_options_path",
17
+ "range": "xsd:string"
18
+ },
19
+ {
20
+ "@id": "undefineds:dist/storage/rdf/RdfVectorIndex.jsonld#RdfVectorIndex_options_defaultMetric",
21
+ "range": {
22
+ "@type": "ParameterRangeUnion",
23
+ "parameterRangeElements": [
24
+ {
25
+ "@type": "ParameterRangeUnion",
26
+ "parameterRangeElements": [
27
+ {
28
+ "@type": "ParameterRangeLiteral",
29
+ "parameterRangeValueLiteral": "cosine"
30
+ },
31
+ {
32
+ "@type": "ParameterRangeLiteral",
33
+ "parameterRangeValueLiteral": "dot"
34
+ },
35
+ {
36
+ "@type": "ParameterRangeLiteral",
37
+ "parameterRangeValueLiteral": "euclidean"
38
+ }
39
+ ]
40
+ },
41
+ {
42
+ "@type": "ParameterRangeUndefined"
43
+ }
44
+ ]
45
+ }
46
+ }
47
+ ],
48
+ "memberFields": [
49
+ {
50
+ "@id": "undefineds:dist/storage/rdf/RdfVectorIndex.jsonld#RdfVectorIndex__member_options",
51
+ "memberFieldName": "options"
52
+ },
53
+ {
54
+ "@id": "undefineds:dist/storage/rdf/RdfVectorIndex.jsonld#RdfVectorIndex__member_sqliteRuntime",
55
+ "memberFieldName": "sqliteRuntime"
56
+ },
57
+ {
58
+ "@id": "undefineds:dist/storage/rdf/RdfVectorIndex.jsonld#RdfVectorIndex__member_db",
59
+ "memberFieldName": "db"
60
+ },
61
+ {
62
+ "@id": "undefineds:dist/storage/rdf/RdfVectorIndex.jsonld#RdfVectorIndex__member_constructor",
63
+ "memberFieldName": "constructor"
64
+ },
65
+ {
66
+ "@id": "undefineds:dist/storage/rdf/RdfVectorIndex.jsonld#RdfVectorIndex__member_open",
67
+ "memberFieldName": "open"
68
+ },
69
+ {
70
+ "@id": "undefineds:dist/storage/rdf/RdfVectorIndex.jsonld#RdfVectorIndex__member_close",
71
+ "memberFieldName": "close"
72
+ },
73
+ {
74
+ "@id": "undefineds:dist/storage/rdf/RdfVectorIndex.jsonld#RdfVectorIndex__member_clear",
75
+ "memberFieldName": "clear"
76
+ },
77
+ {
78
+ "@id": "undefineds:dist/storage/rdf/RdfVectorIndex.jsonld#RdfVectorIndex__member_indexVector",
79
+ "memberFieldName": "indexVector"
80
+ },
81
+ {
82
+ "@id": "undefineds:dist/storage/rdf/RdfVectorIndex.jsonld#RdfVectorIndex__member_deleteSource",
83
+ "memberFieldName": "deleteSource"
84
+ },
85
+ {
86
+ "@id": "undefineds:dist/storage/rdf/RdfVectorIndex.jsonld#RdfVectorIndex__member_search",
87
+ "memberFieldName": "search"
88
+ },
89
+ {
90
+ "@id": "undefineds:dist/storage/rdf/RdfVectorIndex.jsonld#RdfVectorIndex__member_summaryLifecycle",
91
+ "memberFieldName": "summaryLifecycle"
92
+ },
93
+ {
94
+ "@id": "undefineds:dist/storage/rdf/RdfVectorIndex.jsonld#RdfVectorIndex__member_estimateSearchCardinality",
95
+ "memberFieldName": "estimateSearchCardinality"
96
+ },
97
+ {
98
+ "@id": "undefineds:dist/storage/rdf/RdfVectorIndex.jsonld#RdfVectorIndex__member_stats",
99
+ "memberFieldName": "stats"
100
+ },
101
+ {
102
+ "@id": "undefineds:dist/storage/rdf/RdfVectorIndex.jsonld#RdfVectorIndex__member_modelDistribution",
103
+ "memberFieldName": "modelDistribution"
104
+ },
105
+ {
106
+ "@id": "undefineds:dist/storage/rdf/RdfVectorIndex.jsonld#RdfVectorIndex__member_initializeSchema",
107
+ "memberFieldName": "initializeSchema"
108
+ },
109
+ {
110
+ "@id": "undefineds:dist/storage/rdf/RdfVectorIndex.jsonld#RdfVectorIndex__member_ensureSourceKeyColumn",
111
+ "memberFieldName": "ensureSourceKeyColumn"
112
+ },
113
+ {
114
+ "@id": "undefineds:dist/storage/rdf/RdfVectorIndex.jsonld#RdfVectorIndex__member_ensureVectorIdentityColumns",
115
+ "memberFieldName": "ensureVectorIdentityColumns"
116
+ },
117
+ {
118
+ "@id": "undefineds:dist/storage/rdf/RdfVectorIndex.jsonld#RdfVectorIndex__member_ensureVectorChunkIdentityUniqueConstraint",
119
+ "memberFieldName": "ensureVectorChunkIdentityUniqueConstraint"
120
+ },
121
+ {
122
+ "@id": "undefineds:dist/storage/rdf/RdfVectorIndex.jsonld#RdfVectorIndex__member_backfillVectorComponents",
123
+ "memberFieldName": "backfillVectorComponents"
124
+ },
125
+ {
126
+ "@id": "undefineds:dist/storage/rdf/RdfVectorIndex.jsonld#RdfVectorIndex__member_upsertSource",
127
+ "memberFieldName": "upsertSource"
128
+ },
129
+ {
130
+ "@id": "undefineds:dist/storage/rdf/RdfVectorIndex.jsonld#RdfVectorIndex__member_estimateDatabaseBytes",
131
+ "memberFieldName": "estimateDatabaseBytes"
132
+ },
133
+ {
134
+ "@id": "undefineds:dist/storage/rdf/RdfVectorIndex.jsonld#RdfVectorIndex__member_toSearchResult",
135
+ "memberFieldName": "toSearchResult"
136
+ },
137
+ {
138
+ "@id": "undefineds:dist/storage/rdf/RdfVectorIndex.jsonld#RdfVectorIndex__member_requireDb",
139
+ "memberFieldName": "requireDb"
140
+ }
141
+ ],
142
+ "constructorArguments": [
143
+ {
144
+ "@id": "undefineds:dist/storage/rdf/RdfVectorIndex.jsonld#RdfVectorIndex_options__constructorArgument",
145
+ "fields": [
146
+ {
147
+ "keyRaw": "path",
148
+ "value": {
149
+ "@id": "undefineds:dist/storage/rdf/RdfVectorIndex.jsonld#RdfVectorIndex_options_path"
150
+ }
151
+ },
152
+ {
153
+ "keyRaw": "defaultMetric",
154
+ "value": {
155
+ "@id": "undefineds:dist/storage/rdf/RdfVectorIndex.jsonld#RdfVectorIndex_options_defaultMetric"
156
+ }
157
+ }
158
+ ]
159
+ }
160
+ ]
161
+ }
162
+ ]
163
+ }
@@ -1,16 +1,16 @@
1
1
  import type { Quad } from '@rdfjs/types';
2
2
  import type { QuintPattern, QuintStore } from '../quint/types';
3
- import type { Rdf3xShadowJoinResult, Rdf3xShadowScanResult, Rdf3xIndexOptions, RdfDerivedIndexProfile, RdfDerivedIndexRefreshResult, RdfEngineStorageStats, RdfIndexPutOptions, RdfPatternQuery, RdfQuadJoinOptions, RdfQuadJoinPattern, RdfQuadIndexOptions, RdfQuadIndexScanResult, RdfSourceInput, RdfShadowScanResult, RdfTextChunkInput, RdfTextIndexOptions, RdfTextSearchOptions, RdfTextSearchResult, RdfTextSourceInput, RdfVectorChunkInput, RdfVectorIndexOptions, RdfVectorSearchOptions, RdfVectorSearchResult, RdfVectorSourceInput, RdfEngineLike } from './types';
3
+ import type { Rdf3xShadowJoinResult, Rdf3xShadowScanResult, Rdf3xIndexOptions, RdfDerivedIndexProfile, RdfDerivedIndexRefreshOptions, RdfDerivedIndexRefreshResult, RdfEngineStorageStats, RdfIndexPutOptions, RdfPatternQuery, RdfQuadJoinOptions, RdfQuadJoinPattern, RdfQuadIndexOptions, RdfQuadIndexScanResult, RdfSourceInput, RdfShadowScanResult, RdfTextChunkInput, RdfTextIndexOptions, RdfTextIndexSyncLike, RdfTextSearchOptions, RdfTextSearchResult, RdfTextSourceInput, RdfTermRewriteInput, RdfTermRewriteResult, RdfVectorChunkInput, RdfVectorIndexOptions, RdfVectorIndexSyncLike, RdfVectorSearchOptions, RdfVectorSearchResult, RdfVectorSourceInput, RdfEngineLike, RdfStorageStatsOptions } from './types';
4
4
  import { RdfQuadIndex } from './RdfQuadIndex';
5
5
  import { Rdf3xIndex } from './Rdf3xIndex';
6
- import { RdfTextIndex } from './RdfTextIndex';
7
- import { RdfVectorIndex } from './RdfVectorIndex';
8
6
  import type { RdfQuery, RdfQueryResult } from './types';
7
+ type RdfTextIndexInput = RdfTextIndexSyncLike | RdfTextIndexOptions;
8
+ type RdfVectorIndexInput = RdfVectorIndexSyncLike | RdfVectorIndexOptions;
9
9
  export interface SolidRdfEngineOptions {
10
10
  index: RdfQuadIndex | RdfQuadIndexOptions;
11
11
  derivedIndexProfile?: RdfDerivedIndexProfile;
12
- textIndex?: RdfTextIndex | RdfTextIndexOptions;
13
- vectorIndex?: RdfVectorIndex | RdfVectorIndexOptions;
12
+ textIndex?: RdfTextIndexInput;
13
+ vectorIndex?: RdfVectorIndexInput;
14
14
  rdf3xIndex?: Rdf3xIndex | Rdf3xIndexOptions;
15
15
  rdf3xPrimary?: boolean;
16
16
  compatibilityStore?: QuintStore;
@@ -18,8 +18,8 @@ export interface SolidRdfEngineOptions {
18
18
  }
19
19
  export declare class SolidRdfEngine implements RdfEngineLike {
20
20
  readonly index: RdfQuadIndex;
21
- readonly textIndex?: RdfTextIndex;
22
- readonly vectorIndex?: RdfVectorIndex;
21
+ readonly textIndex?: RdfTextIndexSyncLike;
22
+ readonly vectorIndex?: RdfVectorIndexSyncLike;
23
23
  readonly rdf3xIndex?: Rdf3xIndex;
24
24
  readonly derivedIndexProfile: RdfDerivedIndexProfile;
25
25
  private readonly ownsIndex;
@@ -35,14 +35,16 @@ export declare class SolidRdfEngine implements RdfEngineLike {
35
35
  put(quads: Quad | Quad[], options?: RdfIndexPutOptions): void;
36
36
  replaceSource(quads: Quad[], source: RdfSourceInput): void;
37
37
  deleteSource(source: string): number;
38
+ moveSource(oldSource: string, next: RdfSourceInput): number;
38
39
  delete(pattern: QuintPattern): number;
39
40
  applyDelta(deletes: QuintPattern[], inserts: Quad[], options?: RdfIndexPutOptions): {
40
41
  deletedRows: number;
41
42
  insertedRows: number;
42
43
  };
44
+ rewriteTerms(input: RdfTermRewriteInput): RdfTermRewriteResult;
43
45
  scan(query: RdfPatternQuery): RdfQuadIndexScanResult;
44
46
  query(query: RdfQuery): RdfQueryResult;
45
- refreshDerivedIndexes(): RdfDerivedIndexRefreshResult;
47
+ refreshDerivedIndexes(options?: RdfDerivedIndexRefreshOptions): RdfDerivedIndexRefreshResult;
46
48
  indexTextSource(source: RdfTextSourceInput, text: string, chunks?: RdfTextChunkInput[]): void;
47
49
  deleteTextSource(source: string): number;
48
50
  searchText(options: RdfTextSearchOptions | string): RdfTextSearchResult[];
@@ -53,10 +55,11 @@ export declare class SolidRdfEngine implements RdfEngineLike {
53
55
  shadowRdf3xScan(query: RdfPatternQuery): Rdf3xShadowScanResult;
54
56
  shadowRdf3xJoin(patterns: RdfQuadJoinPattern[], options?: RdfQuadJoinOptions): Rdf3xShadowJoinResult;
55
57
  supportsPrimary(query: RdfPatternQuery): boolean;
56
- storageStats(): RdfEngineStorageStats;
58
+ storageStats(_options?: RdfStorageStatsOptions): RdfEngineStorageStats;
57
59
  private requireTextIndex;
58
60
  private requireVectorIndex;
59
61
  private requireRdf3xIndex;
60
62
  private isRdf3xPrimaryReady;
61
63
  private refreshRdf3xDerivedIndex;
62
64
  }
65
+ export {};
@@ -22,25 +22,25 @@ class SolidRdfEngine {
22
22
  this.index = new RdfQuadIndex_1.RdfQuadIndex(options.index);
23
23
  this.ownsIndex = true;
24
24
  }
25
- if (options.textIndex instanceof RdfTextIndex_1.RdfTextIndex) {
26
- this.textIndex = options.textIndex;
27
- this.ownsTextIndex = false;
28
- }
29
- else if (isRdfTextIndexOptions(options.textIndex)) {
25
+ if (isRdfTextIndexOptions(options.textIndex)) {
30
26
  this.textIndex = new RdfTextIndex_1.RdfTextIndex(options.textIndex);
31
27
  this.ownsTextIndex = true;
32
28
  }
33
- else {
29
+ else if (isRdfTextIndexLike(options.textIndex)) {
30
+ this.textIndex = options.textIndex;
34
31
  this.ownsTextIndex = false;
35
32
  }
36
- if (options.vectorIndex instanceof RdfVectorIndex_1.RdfVectorIndex) {
37
- this.vectorIndex = options.vectorIndex;
38
- this.ownsVectorIndex = false;
33
+ else {
34
+ this.ownsTextIndex = false;
39
35
  }
40
- else if (isRdfVectorIndexOptions(options.vectorIndex)) {
36
+ if (isRdfVectorIndexOptions(options.vectorIndex)) {
41
37
  this.vectorIndex = new RdfVectorIndex_1.RdfVectorIndex(options.vectorIndex);
42
38
  this.ownsVectorIndex = true;
43
39
  }
40
+ else if (isRdfVectorIndexLike(options.vectorIndex)) {
41
+ this.vectorIndex = options.vectorIndex;
42
+ this.ownsVectorIndex = false;
43
+ }
44
44
  else {
45
45
  this.ownsVectorIndex = false;
46
46
  }
@@ -114,12 +114,18 @@ class SolidRdfEngine {
114
114
  deleteSource(source) {
115
115
  return this.index.deleteSource(source);
116
116
  }
117
+ moveSource(oldSource, next) {
118
+ return this.index.moveSource(oldSource, next);
119
+ }
117
120
  delete(pattern) {
118
121
  return this.index.delete(pattern);
119
122
  }
120
123
  applyDelta(deletes, inserts, options) {
121
124
  return this.index.applyDelta(deletes, inserts, options);
122
125
  }
126
+ rewriteTerms(input) {
127
+ return this.index.rewriteTerms(input);
128
+ }
123
129
  scan(query) {
124
130
  return this.index.scan(query.pattern, query.options);
125
131
  }
@@ -131,9 +137,9 @@ class SolidRdfEngine {
131
137
  }
132
138
  return result;
133
139
  }
134
- refreshDerivedIndexes() {
140
+ refreshDerivedIndexes(options) {
135
141
  const factsDataVersion = this.index.dataVersion();
136
- const rdf3x = this.refreshRdf3xDerivedIndex(factsDataVersion);
142
+ const rdf3x = this.refreshRdf3xDerivedIndex(factsDataVersion, options?.mode === 'full');
137
143
  return {
138
144
  derivedIndexProfile: this.derivedIndexProfile,
139
145
  factsDataVersion,
@@ -214,13 +220,21 @@ class SolidRdfEngine {
214
220
  return false;
215
221
  }
216
222
  }
217
- storageStats() {
223
+ storageStats(_options) {
218
224
  const facts = this.index.stats();
219
225
  const rdf3x = this.rdf3xIndex
220
- ? {
221
- stats: this.rdf3xIndex.stats(),
222
- syncedWithFacts: this.rdf3xIndex.isSyncedWithCurrentQuads(),
223
- }
226
+ ? (() => {
227
+ const stats = this.rdf3xIndex.stats();
228
+ const factsDataVersion = this.index.dataVersion();
229
+ return {
230
+ stats,
231
+ factsDataVersion,
232
+ rdf3xFactsDataVersion: stats.factsDataVersion,
233
+ refreshLag: Math.max(0, factsDataVersion - stats.factsDataVersion),
234
+ syncedWithFacts: stats.factsDataVersion === factsDataVersion,
235
+ pendingSources: 0,
236
+ };
237
+ })()
224
238
  : undefined;
225
239
  const factsBytes = facts.databaseBytes;
226
240
  const derivedBytes = rdf3x?.stats.databaseBytes ?? 0;
@@ -257,14 +271,14 @@ class SolidRdfEngine {
257
271
  isRdf3xPrimaryReady() {
258
272
  return Boolean(this.rdf3xPrimary && this.rdf3xIndex?.isSyncedWithCurrentQuads());
259
273
  }
260
- refreshRdf3xDerivedIndex(factsDataVersion = this.index.dataVersion()) {
274
+ refreshRdf3xDerivedIndex(factsDataVersion = this.index.dataVersion(), force = false) {
261
275
  if (!this.rdf3xIndex) {
262
276
  return undefined;
263
277
  }
264
278
  const dataVersion = factsDataVersion;
265
279
  const rdf3xIndex = this.rdf3xIndex;
266
280
  const previousFactsDataVersion = rdf3xIndex.factsDataVersion();
267
- if (previousFactsDataVersion === dataVersion) {
281
+ if (!force && previousFactsDataVersion === dataVersion) {
268
282
  return {
269
283
  refreshed: false,
270
284
  previousFactsDataVersion,
@@ -272,7 +286,7 @@ class SolidRdfEngine {
272
286
  syncedWithFacts: true,
273
287
  };
274
288
  }
275
- const rebuild = rdf3xIndex.rebuildFromCurrentQuads();
289
+ const rebuild = rdf3xIndex.rebuildFromCurrentQuads({ mode: force ? 'full' : 'auto' });
276
290
  return {
277
291
  refreshed: true,
278
292
  previousFactsDataVersion,
@@ -284,10 +298,22 @@ class SolidRdfEngine {
284
298
  }
285
299
  exports.SolidRdfEngine = SolidRdfEngine;
286
300
  function isRdfTextIndexOptions(input) {
287
- return input !== undefined && !(input instanceof RdfTextIndex_1.RdfTextIndex) && typeof input.path === 'string';
301
+ return input !== undefined && typeof input.path === 'string'
302
+ && !isRdfTextIndexLike(input);
303
+ }
304
+ function isRdfTextIndexLike(input) {
305
+ return input !== undefined
306
+ && typeof input.indexText === 'function'
307
+ && typeof input.search === 'function';
288
308
  }
289
309
  function isRdfVectorIndexOptions(input) {
290
- return input !== undefined && !(input instanceof RdfVectorIndex_1.RdfVectorIndex) && typeof input.path === 'string';
310
+ return input !== undefined && typeof input.path === 'string'
311
+ && !isRdfVectorIndexLike(input);
312
+ }
313
+ function isRdfVectorIndexLike(input) {
314
+ return input !== undefined
315
+ && typeof input.indexVector === 'function'
316
+ && typeof input.search === 'function';
291
317
  }
292
318
  function isRdf3xIndexOptions(input) {
293
319
  return input !== undefined && !(input instanceof Rdf3xIndex_1.Rdf3xIndex) && typeof input.path === 'string';