@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.
- package/README.md +3 -0
- package/config/cli.json +88 -0
- package/config/cloud.json +32 -1
- package/config/components-ignore.json +3 -0
- package/config/extensions.local.initializer.json +44 -0
- package/config/resolver.json +86 -0
- package/config/xpod.base.json +4 -0
- package/dist/agents/AgentExecutorFactory.d.ts +3 -3
- package/dist/agents/AgentExecutorFactory.js +28 -15
- package/dist/agents/AgentExecutorFactory.js.map +1 -1
- package/dist/agents/BaseAgentExecutor.d.ts +2 -1
- package/dist/agents/BaseAgentExecutor.js +1 -0
- package/dist/agents/BaseAgentExecutor.js.map +1 -1
- package/dist/agents/ClaudeExecutor.d.ts +3 -1
- package/dist/agents/ClaudeExecutor.js +18 -12
- package/dist/agents/ClaudeExecutor.js.map +1 -1
- package/dist/agents/config/resolve.js +0 -21
- package/dist/agents/config/resolve.js.map +1 -1
- package/dist/agents/config/types.d.ts +2 -7
- package/dist/agents/config/types.js +2 -1
- package/dist/agents/config/types.js.map +1 -1
- package/dist/agents/types.d.ts +18 -0
- package/dist/agents/types.js.map +1 -1
- package/dist/ai/schema/types.d.ts +2 -1
- package/dist/ai/schema/types.js +1 -0
- package/dist/ai/schema/types.js.map +1 -1
- package/dist/ai/service/CredentialReader.d.ts +3 -1
- package/dist/ai/service/CredentialReader.js.map +1 -1
- package/dist/ai/service/CredentialReaderImpl.d.ts +3 -1
- package/dist/ai/service/CredentialReaderImpl.js +24 -2
- package/dist/ai/service/CredentialReaderImpl.js.map +1 -1
- package/dist/ai/service/EmbeddingServiceImpl.js +13 -2
- package/dist/ai/service/EmbeddingServiceImpl.js.map +1 -1
- package/dist/ai/service/ProviderRegistry.d.ts +4 -0
- package/dist/ai/service/ProviderRegistry.js.map +1 -1
- package/dist/ai/service/ProviderRegistry.jsonld +4 -0
- package/dist/ai/service/ProviderRegistryImpl.d.ts +4 -1
- package/dist/ai/service/ProviderRegistryImpl.js +26 -4
- package/dist/ai/service/ProviderRegistryImpl.js.map +1 -1
- package/dist/ai/service/ProviderRegistryImpl.jsonld +12 -0
- package/dist/ai/service/defaultEmbeddingProfile.d.ts +5 -0
- package/dist/ai/service/defaultEmbeddingProfile.js +31 -0
- package/dist/ai/service/defaultEmbeddingProfile.js.map +1 -0
- package/dist/ai/service/index.d.ts +1 -0
- package/dist/ai/service/index.js +1 -0
- package/dist/ai/service/index.js.map +1 -1
- package/dist/ai/service/types.d.ts +1 -0
- package/dist/ai/service/types.js.map +1 -1
- package/dist/api/ApiServer.js +17 -2
- package/dist/api/ApiServer.js.map +1 -1
- package/dist/api/ai-gateway/AiGatewayService.d.ts +106 -0
- package/dist/api/ai-gateway/AiGatewayService.js +527 -0
- package/dist/api/ai-gateway/AiGatewayService.js.map +1 -0
- package/dist/api/ai-gateway/auth/AiConnectionInvocationKeyIssuer.d.ts +38 -0
- package/dist/api/ai-gateway/auth/AiConnectionInvocationKeyIssuer.js +128 -0
- package/dist/api/ai-gateway/auth/AiConnectionInvocationKeyIssuer.js.map +1 -0
- package/dist/api/ai-gateway/auth/ClientCredentialsInternalPodAccessTokenProvider.d.ts +25 -0
- package/dist/api/ai-gateway/auth/ClientCredentialsInternalPodAccessTokenProvider.js +91 -0
- package/dist/api/ai-gateway/auth/ClientCredentialsInternalPodAccessTokenProvider.js.map +1 -0
- package/dist/api/ai-gateway/auth/GatewayApiKey.d.ts +28 -0
- package/dist/api/ai-gateway/auth/GatewayApiKey.js +162 -0
- package/dist/api/ai-gateway/auth/GatewayApiKey.js.map +1 -0
- package/dist/api/ai-gateway/auth/GatewayApiKeyAuthenticator.d.ts +56 -0
- package/dist/api/ai-gateway/auth/GatewayApiKeyAuthenticator.js +143 -0
- package/dist/api/ai-gateway/auth/GatewayApiKeyAuthenticator.js.map +1 -0
- package/dist/api/ai-gateway/auth/GatewayKeyLocatorCodec.d.ts +26 -0
- package/dist/api/ai-gateway/auth/GatewayKeyLocatorCodec.js +97 -0
- package/dist/api/ai-gateway/auth/GatewayKeyLocatorCodec.js.map +1 -0
- package/dist/api/ai-gateway/auth/GatewayPrincipal.d.ts +20 -0
- package/dist/api/ai-gateway/auth/GatewayPrincipal.js +37 -0
- package/dist/api/ai-gateway/auth/GatewayPrincipal.js.map +1 -0
- package/dist/api/ai-gateway/auth/InvocationTokenCodec.d.ts +41 -0
- package/dist/api/ai-gateway/auth/InvocationTokenCodec.js +221 -0
- package/dist/api/ai-gateway/auth/InvocationTokenCodec.js.map +1 -0
- package/dist/api/ai-gateway/auth/PodGatewayAccessKeyRepository.d.ts +54 -0
- package/dist/api/ai-gateway/auth/PodGatewayAccessKeyRepository.js +152 -0
- package/dist/api/ai-gateway/auth/PodGatewayAccessKeyRepository.js.map +1 -0
- package/dist/api/ai-gateway/connect/index.d.ts +367 -0
- package/dist/api/ai-gateway/connect/index.js +1061 -0
- package/dist/api/ai-gateway/connect/index.js.map +1 -0
- package/dist/api/ai-gateway/credentials/CloudKmsWrapper.d.ts +40 -0
- package/dist/api/ai-gateway/credentials/CloudKmsWrapper.js +59 -0
- package/dist/api/ai-gateway/credentials/CloudKmsWrapper.js.map +1 -0
- package/dist/api/ai-gateway/credentials/CredentialVault.d.ts +14 -0
- package/dist/api/ai-gateway/credentials/CredentialVault.js +11 -0
- package/dist/api/ai-gateway/credentials/CredentialVault.js.map +1 -0
- package/dist/api/ai-gateway/credentials/KeyWrapper.d.ts +27 -0
- package/dist/api/ai-gateway/credentials/KeyWrapper.js +3 -0
- package/dist/api/ai-gateway/credentials/KeyWrapper.js.map +1 -0
- package/dist/api/ai-gateway/credentials/LocalKeychainWrapper.d.ts +27 -0
- package/dist/api/ai-gateway/credentials/LocalKeychainWrapper.js +145 -0
- package/dist/api/ai-gateway/credentials/LocalKeychainWrapper.js.map +1 -0
- package/dist/api/ai-gateway/credentials/SecretCellCredentialVault.d.ts +13 -0
- package/dist/api/ai-gateway/credentials/SecretCellCredentialVault.js +133 -0
- package/dist/api/ai-gateway/credentials/SecretCellCredentialVault.js.map +1 -0
- package/dist/api/ai-gateway/credentials/SecretCellKeyWrapper.d.ts +23 -0
- package/dist/api/ai-gateway/credentials/SecretCellKeyWrapper.js +62 -0
- package/dist/api/ai-gateway/credentials/SecretCellKeyWrapper.js.map +1 -0
- package/dist/api/ai-gateway/credentials/WebCryptoCredentialVault.d.ts +23 -0
- package/dist/api/ai-gateway/credentials/WebCryptoCredentialVault.js +173 -0
- package/dist/api/ai-gateway/credentials/WebCryptoCredentialVault.js.map +1 -0
- package/dist/api/ai-gateway/errors.d.ts +21 -0
- package/dist/api/ai-gateway/errors.js +50 -0
- package/dist/api/ai-gateway/errors.js.map +1 -0
- package/dist/api/ai-gateway/protocol/ChatCompletionsFrontend.d.ts +6 -0
- package/dist/api/ai-gateway/protocol/ChatCompletionsFrontend.js +111 -0
- package/dist/api/ai-gateway/protocol/ChatCompletionsFrontend.js.map +1 -0
- package/dist/api/ai-gateway/protocol/MessagesFrontend.d.ts +6 -0
- package/dist/api/ai-gateway/protocol/MessagesFrontend.js +99 -0
- package/dist/api/ai-gateway/protocol/MessagesFrontend.js.map +1 -0
- package/dist/api/ai-gateway/protocol/ResponsesFrontend.d.ts +6 -0
- package/dist/api/ai-gateway/protocol/ResponsesFrontend.js +232 -0
- package/dist/api/ai-gateway/protocol/ResponsesFrontend.js.map +1 -0
- package/dist/api/ai-gateway/protocol/index.d.ts +3 -0
- package/dist/api/ai-gateway/protocol/index.js +10 -0
- package/dist/api/ai-gateway/protocol/index.js.map +1 -0
- package/dist/api/ai-gateway/providers/AnthropicRuntimeAdapter.d.ts +7 -0
- package/dist/api/ai-gateway/providers/AnthropicRuntimeAdapter.js +37 -0
- package/dist/api/ai-gateway/providers/AnthropicRuntimeAdapter.js.map +1 -0
- package/dist/api/ai-gateway/providers/BailianRuntimeAdapter.d.ts +9 -0
- package/dist/api/ai-gateway/providers/BailianRuntimeAdapter.js +127 -0
- package/dist/api/ai-gateway/providers/BailianRuntimeAdapter.js.map +1 -0
- package/dist/api/ai-gateway/providers/DeepSeekRuntimeAdapter.d.ts +8 -0
- package/dist/api/ai-gateway/providers/DeepSeekRuntimeAdapter.js +47 -0
- package/dist/api/ai-gateway/providers/DeepSeekRuntimeAdapter.js.map +1 -0
- package/dist/api/ai-gateway/providers/KimiRuntimeAdapter.d.ts +8 -0
- package/dist/api/ai-gateway/providers/KimiRuntimeAdapter.js +57 -0
- package/dist/api/ai-gateway/providers/KimiRuntimeAdapter.js.map +1 -0
- package/dist/api/ai-gateway/providers/OpenAiCompatibleRuntimeAdapter.d.ts +1 -0
- package/dist/api/ai-gateway/providers/OpenAiCompatibleRuntimeAdapter.js +6 -0
- package/dist/api/ai-gateway/providers/OpenAiCompatibleRuntimeAdapter.js.map +1 -0
- package/dist/api/ai-gateway/providers/OpenAiRuntimeAdapter.d.ts +13 -0
- package/dist/api/ai-gateway/providers/OpenAiRuntimeAdapter.js +34 -0
- package/dist/api/ai-gateway/providers/OpenAiRuntimeAdapter.js.map +1 -0
- package/dist/api/ai-gateway/providers/ProviderRegistry.d.ts +68 -0
- package/dist/api/ai-gateway/providers/ProviderRegistry.js +288 -0
- package/dist/api/ai-gateway/providers/ProviderRegistry.js.map +1 -0
- package/dist/api/ai-gateway/providers/ProviderRuntimeAdapter.d.ts +88 -0
- package/dist/api/ai-gateway/providers/ProviderRuntimeAdapter.js +645 -0
- package/dist/api/ai-gateway/providers/ProviderRuntimeAdapter.js.map +1 -0
- package/dist/api/ai-gateway/providers/ProviderRuntimeRegistry.d.ts +13 -0
- package/dist/api/ai-gateway/providers/ProviderRuntimeRegistry.js +48 -0
- package/dist/api/ai-gateway/providers/ProviderRuntimeRegistry.js.map +1 -0
- package/dist/api/ai-gateway/providers/index.d.ts +9 -0
- package/dist/api/ai-gateway/providers/index.js +26 -0
- package/dist/api/ai-gateway/providers/index.js.map +1 -0
- package/dist/api/ai-gateway/quota/AnthropicQuotaAdapter.d.ts +5 -0
- package/dist/api/ai-gateway/quota/AnthropicQuotaAdapter.js +21 -0
- package/dist/api/ai-gateway/quota/AnthropicQuotaAdapter.js.map +1 -0
- package/dist/api/ai-gateway/quota/BailianQuotaAdapter.d.ts +5 -0
- package/dist/api/ai-gateway/quota/BailianQuotaAdapter.js +21 -0
- package/dist/api/ai-gateway/quota/BailianQuotaAdapter.js.map +1 -0
- package/dist/api/ai-gateway/quota/DeepSeekQuotaAdapter.d.ts +10 -0
- package/dist/api/ai-gateway/quota/DeepSeekQuotaAdapter.js +83 -0
- package/dist/api/ai-gateway/quota/DeepSeekQuotaAdapter.js.map +1 -0
- package/dist/api/ai-gateway/quota/KimiQuotaAdapter.d.ts +10 -0
- package/dist/api/ai-gateway/quota/KimiQuotaAdapter.js +70 -0
- package/dist/api/ai-gateway/quota/KimiQuotaAdapter.js.map +1 -0
- package/dist/api/ai-gateway/quota/OpenAiQuotaAdapter.d.ts +5 -0
- package/dist/api/ai-gateway/quota/OpenAiQuotaAdapter.js +21 -0
- package/dist/api/ai-gateway/quota/OpenAiQuotaAdapter.js.map +1 -0
- package/dist/api/ai-gateway/quota/ProviderQuotaAdapter.d.ts +214 -0
- package/dist/api/ai-gateway/quota/ProviderQuotaAdapter.js +511 -0
- package/dist/api/ai-gateway/quota/ProviderQuotaAdapter.js.map +1 -0
- package/dist/api/ai-gateway/quota/index.d.ts +6 -0
- package/dist/api/ai-gateway/quota/index.js +23 -0
- package/dist/api/ai-gateway/quota/index.js.map +1 -0
- package/dist/api/ai-gateway/routing/InMemorySessionAffinityStore.d.ts +26 -0
- package/dist/api/ai-gateway/routing/InMemorySessionAffinityStore.js +67 -0
- package/dist/api/ai-gateway/routing/InMemorySessionAffinityStore.js.map +1 -0
- package/dist/api/ai-gateway/routing/ModelRouter.d.ts +84 -0
- package/dist/api/ai-gateway/routing/ModelRouter.js +274 -0
- package/dist/api/ai-gateway/routing/ModelRouter.js.map +1 -0
- package/dist/api/ai-gateway/routing/RedisSessionAffinityStore.d.ts +39 -0
- package/dist/api/ai-gateway/routing/RedisSessionAffinityStore.js +122 -0
- package/dist/api/ai-gateway/routing/RedisSessionAffinityStore.js.map +1 -0
- package/dist/api/ai-gateway/routing/SessionAffinityStore.d.ts +49 -0
- package/dist/api/ai-gateway/routing/SessionAffinityStore.js +66 -0
- package/dist/api/ai-gateway/routing/SessionAffinityStore.js.map +1 -0
- package/dist/api/ai-gateway/service-access/AiConnectionServiceAccess.d.ts +25 -0
- package/dist/api/ai-gateway/service-access/AiConnectionServiceAccess.js +50 -0
- package/dist/api/ai-gateway/service-access/AiConnectionServiceAccess.js.map +1 -0
- package/dist/api/ai-gateway/types.d.ts +112 -0
- package/dist/api/ai-gateway/types.js +305 -0
- package/dist/api/ai-gateway/types.js.map +1 -0
- package/dist/api/auth/AuthContext.d.ts +18 -3
- package/dist/api/auth/AuthContext.js +13 -2
- package/dist/api/auth/AuthContext.js.map +1 -1
- package/dist/api/auth/Authenticator.d.ts +3 -0
- package/dist/api/auth/Authenticator.js.map +1 -1
- package/dist/api/auth/ClientCredentialsAuthenticator.d.ts +2 -6
- package/dist/api/auth/ClientCredentialsAuthenticator.js +12 -30
- package/dist/api/auth/ClientCredentialsAuthenticator.js.map +1 -1
- package/dist/api/auth/SolidTokenAuthenticator.d.ts +2 -0
- package/dist/api/auth/SolidTokenAuthenticator.js +88 -2
- package/dist/api/auth/SolidTokenAuthenticator.js.map +1 -1
- package/dist/api/auth/TokenIdentity.d.ts +6 -0
- package/dist/api/auth/TokenIdentity.js +31 -0
- package/dist/api/auth/TokenIdentity.js.map +1 -0
- package/dist/api/chatkit/ai-provider.d.ts +9 -23
- package/dist/api/chatkit/ai-provider.js +30 -153
- package/dist/api/chatkit/ai-provider.js.map +1 -1
- package/dist/api/chatkit/default-agent.d.ts +24 -15
- package/dist/api/chatkit/default-agent.js +24 -83
- package/dist/api/chatkit/default-agent.js.map +1 -1
- package/dist/api/chatkit/index.d.ts +2 -1
- package/dist/api/chatkit/index.js +3 -1
- package/dist/api/chatkit/index.js.map +1 -1
- package/dist/api/chatkit/pod-store.d.ts +13 -1
- package/dist/api/chatkit/pod-store.js +127 -7
- package/dist/api/chatkit/pod-store.js.map +1 -1
- package/dist/api/chatkit/runtime/AcpAgentRuntime.d.ts +0 -1
- package/dist/api/chatkit/runtime/AcpAgentRuntime.js +14 -51
- package/dist/api/chatkit/runtime/AcpAgentRuntime.js.map +1 -1
- package/dist/api/chatkit/runtime/AcpRunner.js +2 -1
- package/dist/api/chatkit/runtime/AcpRunner.js.map +1 -1
- package/dist/api/chatkit/runtime/CodexRuntimeProjector.d.ts +15 -1
- package/dist/api/chatkit/runtime/CodexRuntimeProjector.js +52 -34
- package/dist/api/chatkit/runtime/CodexRuntimeProjector.js.map +1 -1
- package/dist/api/chatkit/service.d.ts +8 -1
- package/dist/api/chatkit/service.js +46 -5
- package/dist/api/chatkit/service.js.map +1 -1
- package/dist/api/chatkit/store.d.ts +23 -1
- package/dist/api/chatkit/store.js +56 -0
- package/dist/api/chatkit/store.js.map +1 -1
- package/dist/api/chatkit/types.d.ts +1 -0
- package/dist/api/chatkit/types.js.map +1 -1
- package/dist/api/container/common.js +286 -13
- package/dist/api/container/common.js.map +1 -1
- package/dist/api/container/index.js +126 -6
- package/dist/api/container/index.js.map +1 -1
- package/dist/api/container/local.js +50 -6
- package/dist/api/container/local.js.map +1 -1
- package/dist/api/container/rdf.d.ts +15 -0
- package/dist/api/container/rdf.js +90 -0
- package/dist/api/container/rdf.js.map +1 -0
- package/dist/api/container/routes.js +151 -11
- package/dist/api/container/routes.js.map +1 -1
- package/dist/api/container/types.d.ts +96 -0
- package/dist/api/container/types.js.map +1 -1
- package/dist/api/handlers/AdminHandler.d.ts +25 -2
- package/dist/api/handlers/AdminHandler.js +60 -10
- package/dist/api/handlers/AdminHandler.js.map +1 -1
- package/dist/api/handlers/AiClientConfigurationHandler.d.ts +7 -0
- package/dist/api/handlers/AiClientConfigurationHandler.js +202 -0
- package/dist/api/handlers/AiClientConfigurationHandler.js.map +1 -0
- package/dist/api/handlers/AiGatewayHandler.d.ts +23 -0
- package/dist/api/handlers/AiGatewayHandler.js +231 -0
- package/dist/api/handlers/AiGatewayHandler.js.map +1 -0
- package/dist/api/handlers/AiGatewayManagementHandler.d.ts +24 -0
- package/dist/api/handlers/AiGatewayManagementHandler.js +503 -0
- package/dist/api/handlers/AiGatewayManagementHandler.js.map +1 -0
- package/dist/api/handlers/ChatHandler.d.ts +11 -12
- package/dist/api/handlers/ChatHandler.js +12 -219
- package/dist/api/handlers/ChatHandler.js.map +1 -1
- package/dist/api/handlers/DashboardHandler.js +22 -116
- package/dist/api/handlers/DashboardHandler.js.map +1 -1
- package/dist/api/handlers/NetworkSettingsHandler.d.ts +97 -0
- package/dist/api/handlers/NetworkSettingsHandler.js +511 -0
- package/dist/api/handlers/NetworkSettingsHandler.js.map +1 -0
- package/dist/api/handlers/PodSettingsHandler.d.ts +79 -0
- package/dist/api/handlers/PodSettingsHandler.js +162 -0
- package/dist/api/handlers/PodSettingsHandler.js.map +1 -0
- package/dist/api/handlers/ProvisionHandler.d.ts +3 -1
- package/dist/api/handlers/ProvisionHandler.js +22 -87
- package/dist/api/handlers/ProvisionHandler.js.map +1 -1
- package/dist/api/handlers/RdfStatsHandler.d.ts +6 -0
- package/dist/api/handlers/RdfStatsHandler.js +85 -0
- package/dist/api/handlers/RdfStatsHandler.js.map +1 -0
- package/dist/api/handlers/SettingsHandler.d.ts +5 -0
- package/dist/api/handlers/SettingsHandler.js +13 -0
- package/dist/api/handlers/SettingsHandler.js.map +1 -0
- package/dist/api/handlers/StaticSpaHandler.d.ts +8 -0
- package/dist/api/handlers/StaticSpaHandler.js +102 -0
- package/dist/api/handlers/StaticSpaHandler.js.map +1 -0
- package/dist/api/handlers/index.d.ts +1 -0
- package/dist/api/handlers/index.js +1 -0
- package/dist/api/handlers/index.js.map +1 -1
- package/dist/api/http/readBoundedJsonBody.d.ts +14 -0
- package/dist/api/http/readBoundedJsonBody.js +58 -0
- package/dist/api/http/readBoundedJsonBody.js.map +1 -0
- package/dist/api/middleware/AuthMiddleware.d.ts +1 -0
- package/dist/api/middleware/AuthMiddleware.js +33 -4
- package/dist/api/middleware/AuthMiddleware.js.map +1 -1
- package/dist/api/runs/AgentRuntimeTypes.d.ts +18 -3
- package/dist/api/runs/AgentRuntimeTypes.js +61 -0
- package/dist/api/runs/AgentRuntimeTypes.js.map +1 -1
- package/dist/api/runs/InngestRunExecutionBackend.d.ts +28 -3
- package/dist/api/runs/InngestRunExecutionBackend.js +26 -3
- package/dist/api/runs/InngestRunExecutionBackend.js.map +1 -1
- package/dist/api/runs/ManagedRunWorker.d.ts +4 -1
- package/dist/api/runs/ManagedRunWorker.js +39 -8
- package/dist/api/runs/ManagedRunWorker.js.map +1 -1
- package/dist/api/runs/PiAgentRuntimeDriver.d.ts +5 -1
- package/dist/api/runs/PiAgentRuntimeDriver.js +94 -57
- package/dist/api/runs/PiAgentRuntimeDriver.js.map +1 -1
- package/dist/api/runs/RdfRunContextRetriever.d.ts +46 -0
- package/dist/api/runs/RdfRunContextRetriever.js +277 -0
- package/dist/api/runs/RdfRunContextRetriever.js.map +1 -0
- package/dist/api/runs/RunExecutionBackend.d.ts +38 -0
- package/dist/api/runs/RunExecutionBackend.js.map +1 -1
- package/dist/api/runs/RunStateCenter.d.ts +18 -3
- package/dist/api/runs/RunStateCenter.js +85 -24
- package/dist/api/runs/RunStateCenter.js.map +1 -1
- package/dist/api/runtime.js +163 -3
- package/dist/api/runtime.js.map +1 -1
- package/dist/api/service/AiClientConfigurationService.d.ts +97 -0
- package/dist/api/service/AiClientConfigurationService.js +379 -0
- package/dist/api/service/AiClientConfigurationService.js.map +1 -0
- package/dist/api/service/RdfBenchmarkReportCatalog.d.ts +86 -0
- package/dist/api/service/RdfBenchmarkReportCatalog.js +349 -0
- package/dist/api/service/RdfBenchmarkReportCatalog.js.map +1 -0
- package/dist/api/service/RdfBenchmarkReportGate.d.ts +78 -0
- package/dist/api/service/RdfBenchmarkReportGate.js +197 -0
- package/dist/api/service/RdfBenchmarkReportGate.js.map +1 -0
- package/dist/api/service/RdfSearchIndexingService.d.ts +113 -0
- package/dist/api/service/RdfSearchIndexingService.js +272 -0
- package/dist/api/service/RdfSearchIndexingService.js.map +1 -0
- package/dist/api/service/RdfSearchIndexingSolidFsSyncer.d.ts +27 -0
- package/dist/api/service/RdfSearchIndexingSolidFsSyncer.js +90 -0
- package/dist/api/service/RdfSearchIndexingSolidFsSyncer.js.map +1 -0
- package/dist/api/service/RdfStorageStatsService.d.ts +31 -0
- package/dist/api/service/RdfStorageStatsService.js +97 -0
- package/dist/api/service/RdfStorageStatsService.js.map +1 -0
- package/dist/api/service/VectorStoreService.d.ts +2 -0
- package/dist/api/service/VectorStoreService.js +70 -2
- package/dist/api/service/VectorStoreService.js.map +1 -1
- package/dist/api/service/VercelChatService.d.ts +27 -38
- package/dist/api/service/VercelChatService.js +153 -505
- package/dist/api/service/VercelChatService.js.map +1 -1
- package/dist/api/service/provider-http-transport.d.ts +21 -0
- package/dist/api/service/provider-http-transport.js +108 -2
- package/dist/api/service/provider-http-transport.js.map +1 -1
- package/dist/api/service/provider-registry.d.ts +5 -7
- package/dist/api/service/provider-registry.js +81 -64
- package/dist/api/service/provider-registry.js.map +1 -1
- package/dist/api/tasks/InngestTaskScheduler.d.ts +44 -4
- package/dist/api/tasks/TaskMaterializer.d.ts +10 -1
- package/dist/api/tasks/TaskMaterializer.js +39 -4
- package/dist/api/tasks/TaskMaterializer.js.map +1 -1
- package/dist/api/tasks/TaskService.d.ts +5 -1
- package/dist/api/tasks/TaskService.js +3 -0
- package/dist/api/tasks/TaskService.js.map +1 -1
- package/dist/cli/commands/obj.d.ts +9 -0
- package/dist/cli/commands/obj.js +74 -3
- package/dist/cli/commands/obj.js.map +1 -1
- package/dist/cli/commands/rdf.d.ts +9 -0
- package/dist/cli/commands/rdf.js +66 -1
- package/dist/cli/commands/rdf.js.map +1 -1
- package/dist/cli/commands/start.js +3 -0
- package/dist/cli/commands/start.js.map +1 -1
- package/dist/cli/lib/solid-auth.d.ts +3 -3
- package/dist/cli/lib/solid-auth.js +4 -4
- package/dist/cli/lib/solid-auth.js.map +1 -1
- package/dist/components/components.jsonld +16 -0
- package/dist/components/context.jsonld +815 -28
- package/dist/document/Chunker.jsonld +110 -0
- package/dist/document/{DocumentParser.d.ts → DocumentReader.d.ts} +23 -11
- package/dist/document/{DocumentParser.js → DocumentReader.js} +2 -2
- package/dist/document/DocumentReader.js.map +1 -0
- package/dist/document/DocumentReader.jsonld +82 -0
- package/dist/document/HeadingChunker.jsonld +41 -0
- package/dist/document/{JinaDocumentParser.d.ts → JinaReader.d.ts} +7 -7
- package/dist/document/{JinaDocumentParser.js → JinaReader.js} +12 -12
- package/dist/document/JinaReader.js.map +1 -0
- package/dist/document/JinaReader.jsonld +133 -0
- package/dist/document/L0SourceSummary.d.ts +103 -0
- package/dist/document/L0SourceSummary.js +157 -0
- package/dist/document/L0SourceSummary.js.map +1 -0
- package/dist/document/L0SourceSummary.jsonld +326 -0
- package/dist/document/PaddleOcrReader.d.ts +40 -0
- package/dist/document/PaddleOcrReader.js +53 -0
- package/dist/document/PaddleOcrReader.js.map +1 -0
- package/dist/document/PaddleOcrReader.jsonld +234 -0
- package/dist/document/ReaderAiConfig.d.ts +50 -0
- package/dist/document/ReaderAiConfig.js +109 -0
- package/dist/document/ReaderAiConfig.js.map +1 -0
- package/dist/document/ReaderAiConfig.jsonld +185 -0
- package/dist/document/ReaderPolicy.d.ts +89 -0
- package/dist/document/ReaderPolicy.js +158 -0
- package/dist/document/ReaderPolicy.js.map +1 -0
- package/dist/document/ReaderPolicy.jsonld +218 -0
- package/dist/document/index.d.ts +6 -2
- package/dist/document/index.js +6 -2
- package/dist/document/index.js.map +1 -1
- package/dist/edge/DdnsManager.d.ts +1 -1
- package/dist/edge/DdnsManager.js.map +1 -1
- package/dist/edge/EdgeNodeAgent.d.ts +4 -0
- package/dist/edge/EdgeNodeAgent.js +6 -0
- package/dist/edge/EdgeNodeAgent.js.map +1 -1
- package/dist/edge/EdgeNodeAgent.jsonld +8 -0
- package/dist/edge/EdgeNodeAgentInitializer.d.ts +16 -0
- package/dist/edge/EdgeNodeAgentInitializer.js +51 -0
- package/dist/edge/EdgeNodeAgentInitializer.js.map +1 -1
- package/dist/edge/EdgeNodeAgentInitializer.jsonld +250 -0
- package/dist/edge/EdgeNodeCertificateCapabilityBridge.d.ts +34 -0
- package/dist/edge/EdgeNodeCertificateCapabilityBridge.js +111 -0
- package/dist/edge/EdgeNodeCertificateCapabilityBridge.js.map +1 -0
- package/dist/edge/acme/AcmeCertificateManager.d.ts +14 -1
- package/dist/edge/acme/AcmeCertificateManager.js +67 -7
- package/dist/edge/acme/AcmeCertificateManager.js.map +1 -1
- package/dist/edge/acme/AcmeCertificateManager.jsonld +22 -2
- package/dist/edge/acme/ClusterCertificateManager.d.ts +12 -0
- package/dist/edge/acme/ClusterCertificateManager.js +38 -0
- package/dist/edge/acme/ClusterCertificateManager.js.map +1 -1
- package/dist/extensions/ExtensionRuntime.d.ts +17 -0
- package/dist/extensions/ExtensionRuntime.js +171 -0
- package/dist/extensions/ExtensionRuntime.js.map +1 -0
- package/dist/extensions/PodCredentialResolver.d.ts +23 -0
- package/dist/extensions/PodCredentialResolver.js +139 -0
- package/dist/extensions/PodCredentialResolver.js.map +1 -0
- package/dist/extensions/index.d.ts +3 -0
- package/dist/extensions/index.js +20 -0
- package/dist/extensions/index.js.map +1 -0
- package/dist/extensions/types.d.ts +73 -0
- package/dist/extensions/types.js +3 -0
- package/dist/extensions/types.js.map +1 -0
- package/dist/http/SubgraphSparqlHttpHandler.d.ts +20 -1
- package/dist/http/SubgraphSparqlHttpHandler.js +324 -43
- package/dist/http/SubgraphSparqlHttpHandler.js.map +1 -1
- package/dist/http/SubgraphSparqlHttpHandler.jsonld +87 -0
- package/dist/identity/drizzle/EdgeNodeRepository.js +3 -2
- package/dist/identity/drizzle/EdgeNodeRepository.js.map +1 -1
- package/dist/identity/drizzle/schema.pg.js +1 -1
- package/dist/identity/drizzle/schema.pg.js.map +1 -1
- package/dist/identity/drizzle/schema.sqlite.js +1 -1
- package/dist/identity/drizzle/schema.sqlite.js.map +1 -1
- package/dist/identity/oidc/ScopedPickWebIdHandler.js +5 -5
- package/dist/identity/oidc/ScopedPickWebIdHandler.js.map +1 -1
- package/dist/index.d.ts +12 -2
- package/dist/index.js +13 -1
- package/dist/index.js.map +1 -1
- package/dist/main.js +3 -0
- package/dist/main.js.map +1 -1
- package/dist/provision/LocalProvisionState.d.ts +28 -0
- package/dist/provision/LocalProvisionState.js +124 -0
- package/dist/provision/LocalProvisionState.js.map +1 -0
- package/dist/provision/ProvisionCodeCodec.d.ts +7 -3
- package/dist/provision/ProvisionCodeCodec.js +10 -3
- package/dist/provision/ProvisionCodeCodec.js.map +1 -1
- package/dist/provision/ProvisionPodCreator.d.ts +15 -1
- package/dist/provision/ProvisionPodCreator.js +68 -1
- package/dist/provision/ProvisionPodCreator.js.map +1 -1
- package/dist/provision/ProvisionPodCreator.jsonld +31 -0
- package/dist/provision/ServiceAccessTokenCodec.d.ts +45 -0
- package/dist/provision/ServiceAccessTokenCodec.js +86 -0
- package/dist/provision/ServiceAccessTokenCodec.js.map +1 -0
- package/dist/runtime/GatewayAdminProxyAuth.d.ts +29 -0
- package/dist/runtime/GatewayAdminProxyAuth.js +108 -0
- package/dist/runtime/GatewayAdminProxyAuth.js.map +1 -0
- package/dist/runtime/Proxy.d.ts +10 -0
- package/dist/runtime/Proxy.js +64 -6
- package/dist/runtime/Proxy.js.map +1 -1
- package/dist/runtime/XpodRuntime.js +1 -0
- package/dist/runtime/XpodRuntime.js.map +1 -1
- package/dist/runtime/bootstrap.d.ts +1 -0
- package/dist/runtime/bootstrap.js +29 -0
- package/dist/runtime/bootstrap.js.map +1 -1
- package/dist/runtime/css-process.d.ts +1 -0
- package/dist/runtime/css-process.js +1 -0
- package/dist/runtime/css-process.js.map +1 -1
- package/dist/runtime/index.d.ts +1 -0
- package/dist/runtime/index.js +3 -1
- package/dist/runtime/index.js.map +1 -1
- package/dist/runtime/lifecycle.d.ts +3 -1
- package/dist/runtime/lifecycle.js +3 -1
- package/dist/runtime/lifecycle.js.map +1 -1
- package/dist/runtime/runner/node/NodeGatewayRuntimeRunner.js +2 -0
- package/dist/runtime/runner/node/NodeGatewayRuntimeRunner.js.map +1 -1
- package/dist/runtime/runner/types.d.ts +3 -0
- package/dist/runtime/runner/types.js.map +1 -1
- package/dist/runtime/runtime-types.d.ts +2 -0
- package/dist/runtime/runtime-types.js.map +1 -1
- package/dist/runtime/safe-env.d.ts +15 -0
- package/dist/runtime/safe-env.js +109 -0
- package/dist/runtime/safe-env.js.map +1 -0
- package/dist/security/index.d.ts +1 -0
- package/dist/security/index.js +18 -0
- package/dist/security/index.js.map +1 -0
- package/dist/security/secret-cell/DeploymentRootKeyProvider.d.ts +17 -0
- package/dist/security/secret-cell/DeploymentRootKeyProvider.js +61 -0
- package/dist/security/secret-cell/DeploymentRootKeyProvider.js.map +1 -0
- package/dist/security/secret-cell/DeploymentRootKeyProvider.jsonld +124 -0
- package/dist/security/secret-cell/SecretCellVault.d.ts +55 -0
- package/dist/security/secret-cell/SecretCellVault.js +242 -0
- package/dist/security/secret-cell/SecretCellVault.js.map +1 -0
- package/dist/security/secret-cell/SecretCellVault.jsonld +207 -0
- package/dist/security/secret-cell/index.d.ts +2 -0
- package/dist/security/secret-cell/index.js +11 -0
- package/dist/security/secret-cell/index.js.map +1 -0
- package/dist/solidfs/CompositeSolidFsSyncer.d.ts +18 -0
- package/dist/solidfs/CompositeSolidFsSyncer.js +32 -0
- package/dist/solidfs/CompositeSolidFsSyncer.js.map +1 -0
- package/dist/solidfs/LocalSolidFS.js +25 -1
- package/dist/solidfs/LocalSolidFS.js.map +1 -1
- package/dist/solidfs/RdfIndexSolidFsSyncer.d.ts +41 -2
- package/dist/solidfs/RdfIndexSolidFsSyncer.js +331 -21
- package/dist/solidfs/RdfIndexSolidFsSyncer.js.map +1 -1
- package/dist/solidfs/SolidFsMetaNotes.d.ts +25 -0
- package/dist/solidfs/SolidFsMetaNotes.js +103 -0
- package/dist/solidfs/SolidFsMetaNotes.js.map +1 -0
- package/dist/solidfs/SolidFsSyncJournal.d.ts +2 -2
- package/dist/solidfs/SolidFsSyncJournal.js +9 -4
- package/dist/solidfs/SolidFsSyncJournal.js.map +1 -1
- package/dist/solidfs/SolidFsSyncJournal.jsonld +119 -0
- package/dist/solidfs/WorkspacePrompt.d.ts +13 -0
- package/dist/solidfs/WorkspacePrompt.js +42 -0
- package/dist/solidfs/WorkspacePrompt.js.map +1 -0
- package/dist/solidfs/index.d.ts +3 -0
- package/dist/solidfs/index.js +3 -0
- package/dist/solidfs/index.js.map +1 -1
- package/dist/solidfs/types.d.ts +12 -2
- package/dist/solidfs/types.js.map +1 -1
- package/dist/storage/accessors/MixDataAccessor.d.ts +36 -4
- package/dist/storage/accessors/MixDataAccessor.js +222 -23
- package/dist/storage/accessors/MixDataAccessor.js.map +1 -1
- package/dist/storage/accessors/MixDataAccessor.jsonld +89 -0
- package/dist/storage/accessors/SolidRdfDataAccessor.d.ts +6 -1
- package/dist/storage/accessors/SolidRdfDataAccessor.js +35 -0
- package/dist/storage/accessors/SolidRdfDataAccessor.js.map +1 -1
- package/dist/storage/accessors/SolidRdfDataAccessor.jsonld +20 -0
- package/dist/storage/database/PostgresPoolManager.d.ts +1 -0
- package/dist/storage/database/PostgresPoolManager.js +2 -2
- package/dist/storage/database/PostgresPoolManager.js.map +1 -1
- package/dist/storage/locking/UrlAwareRedisLocker.d.ts +2 -0
- package/dist/storage/locking/UrlAwareRedisLocker.js +65 -0
- package/dist/storage/locking/UrlAwareRedisLocker.js.map +1 -1
- package/dist/storage/locking/UrlAwareRedisLocker.jsonld +19 -0
- package/dist/storage/rdf/PostgresRdfEngine.d.ts +286 -9
- package/dist/storage/rdf/PostgresRdfEngine.js +10773 -2084
- package/dist/storage/rdf/PostgresRdfEngine.js.map +1 -1
- package/dist/storage/rdf/PostgresRdfEngine.jsonld +1693 -89
- package/dist/storage/rdf/PostgresRdfSqlExecutor.d.ts +24 -0
- package/dist/storage/rdf/PostgresRdfSqlExecutor.js +131 -0
- package/dist/storage/rdf/PostgresRdfSqlExecutor.js.map +1 -0
- package/dist/storage/rdf/PostgresRdfTextIndex.d.ts +54 -0
- package/dist/storage/rdf/PostgresRdfTextIndex.js +1255 -0
- package/dist/storage/rdf/PostgresRdfTextIndex.js.map +1 -0
- package/dist/storage/rdf/PostgresRdfTextIndex.jsonld +487 -0
- package/dist/storage/rdf/PostgresRdfVectorIndex.d.ts +46 -0
- package/dist/storage/rdf/PostgresRdfVectorIndex.js +1165 -0
- package/dist/storage/rdf/PostgresRdfVectorIndex.js.map +1 -0
- package/dist/storage/rdf/PostgresRdfVectorIndex.jsonld +423 -0
- package/dist/storage/rdf/Rdf3xIndex.d.ts +14 -1
- package/dist/storage/rdf/Rdf3xIndex.js +286 -2
- package/dist/storage/rdf/Rdf3xIndex.js.map +1 -1
- package/dist/storage/rdf/Rdf3xIndex.jsonld +36 -0
- package/dist/storage/rdf/Rdf3xSchema.d.ts +5 -1
- package/dist/storage/rdf/Rdf3xSchema.js +17 -3
- package/dist/storage/rdf/Rdf3xSchema.js.map +1 -1
- package/dist/storage/rdf/RdfAccessScope.d.ts +22 -0
- package/dist/storage/rdf/RdfAccessScope.js +345 -0
- package/dist/storage/rdf/RdfAccessScope.js.map +1 -0
- package/dist/storage/rdf/RdfAccessScope.jsonld +45 -0
- package/dist/storage/rdf/RdfFusionRankPlan.d.ts +2 -0
- package/dist/storage/rdf/RdfFusionRankPlan.js +186 -0
- package/dist/storage/rdf/RdfFusionRankPlan.js.map +1 -0
- package/dist/storage/rdf/RdfJoinShape.d.ts +8 -0
- package/dist/storage/rdf/RdfJoinShape.js +31 -0
- package/dist/storage/rdf/RdfJoinShape.js.map +1 -0
- package/dist/storage/rdf/RdfQuadIndex.d.ts +5 -2
- package/dist/storage/rdf/RdfQuadIndex.js +94 -6
- package/dist/storage/rdf/RdfQuadIndex.js.map +1 -1
- package/dist/storage/rdf/RdfQuadIndex.jsonld +12 -0
- package/dist/storage/rdf/RdfQueryExecutor.d.ts +3 -4
- package/dist/storage/rdf/RdfQueryExecutor.js +235 -8
- package/dist/storage/rdf/RdfQueryExecutor.js.map +1 -1
- package/dist/storage/rdf/RdfSearchSourceFilter.d.ts +10 -0
- package/dist/storage/rdf/RdfSearchSourceFilter.js +83 -0
- package/dist/storage/rdf/RdfSearchSourceFilter.js.map +1 -0
- package/dist/storage/rdf/RdfSparqlAdapter.d.ts +27 -1
- package/dist/storage/rdf/RdfSparqlAdapter.js +265 -3
- package/dist/storage/rdf/RdfSparqlAdapter.js.map +1 -1
- package/dist/storage/rdf/RdfSparqlAdapter.jsonld +8 -0
- package/dist/storage/rdf/RdfTermDictionary.d.ts +7 -1
- package/dist/storage/rdf/RdfTermDictionary.js +139 -0
- package/dist/storage/rdf/RdfTermDictionary.js.map +1 -1
- package/dist/storage/rdf/RdfTermDictionary.jsonld +4 -0
- package/dist/storage/rdf/RdfTextIndex.d.ts +45 -2
- package/dist/storage/rdf/RdfTextIndex.js +810 -114
- package/dist/storage/rdf/RdfTextIndex.js.map +1 -1
- package/dist/storage/rdf/RdfTextIndex.jsonld +193 -0
- package/dist/storage/rdf/RdfTextProjection.d.ts +10 -0
- package/dist/storage/rdf/RdfTextProjection.js +258 -0
- package/dist/storage/rdf/RdfTextProjection.js.map +1 -0
- package/dist/storage/rdf/RdfVectorIndex.d.ts +30 -2
- package/dist/storage/rdf/RdfVectorIndex.js +461 -38
- package/dist/storage/rdf/RdfVectorIndex.js.map +1 -1
- package/dist/storage/rdf/RdfVectorIndex.jsonld +163 -0
- package/dist/storage/rdf/SolidRdfEngine.d.ts +12 -9
- package/dist/storage/rdf/SolidRdfEngine.js +48 -22
- package/dist/storage/rdf/SolidRdfEngine.js.map +1 -1
- package/dist/storage/rdf/SolidRdfEngine.jsonld +33 -43
- package/dist/storage/rdf/SolidRdfSparqlEngine.d.ts +19 -8
- package/dist/storage/rdf/SolidRdfSparqlEngine.js +674 -44
- package/dist/storage/rdf/SolidRdfSparqlEngine.js.map +1 -1
- package/dist/storage/rdf/SolidRdfSparqlEngine.jsonld +51 -0
- package/dist/storage/rdf/index.d.ts +9 -5
- package/dist/storage/rdf/index.js +42 -1
- package/dist/storage/rdf/index.js.map +1 -1
- package/dist/storage/rdf/models-benchmark.d.ts +264 -2
- package/dist/storage/rdf/models-benchmark.js +4207 -155
- package/dist/storage/rdf/models-benchmark.js.map +1 -1
- package/dist/storage/rdf/types.d.ts +833 -4
- package/dist/storage/rdf/types.js.map +1 -1
- package/dist/storage/rdf/types.jsonld +348 -0
- package/dist/storage/sparql/CompatibilitySparqlEngine.d.ts +14 -13
- package/dist/storage/sparql/CompatibilitySparqlEngine.js +24 -24
- package/dist/storage/sparql/CompatibilitySparqlEngine.js.map +1 -1
- package/dist/storage/sparql/CompatibilitySparqlEngineImpl.d.ts +14 -13
- package/dist/storage/sparql/CompatibilitySparqlEngineImpl.js +30 -18
- package/dist/storage/sparql/CompatibilitySparqlEngineImpl.js.map +1 -1
- package/dist/storage/sparql/SubgraphQueryEngine.d.ts +21 -12
- package/dist/storage/sparql/SubgraphQueryEngine.js +12 -12
- package/dist/storage/sparql/SubgraphQueryEngine.js.map +1 -1
- package/dist/terminal/sandbox/MacOSSandbox.js +2 -1
- package/dist/terminal/sandbox/MacOSSandbox.js.map +1 -1
- package/dist/terminal/sandbox/index.js +2 -1
- package/dist/terminal/sandbox/index.js.map +1 -1
- package/dist/test-utils/no-auth-xpod.js +3 -0
- package/dist/test-utils/no-auth-xpod.js.map +1 -1
- package/dist/tunnel/LocalTunnelProvider.d.ts +3 -0
- package/dist/tunnel/LocalTunnelProvider.js +17 -1
- package/dist/tunnel/LocalTunnelProvider.js.map +1 -1
- package/dist/tunnel/LocalTunnelProvider.jsonld +23 -0
- package/dist/tunnel/SakuraFrpTunnelProvider.d.ts +3 -0
- package/dist/tunnel/SakuraFrpTunnelProvider.js +18 -2
- package/dist/tunnel/SakuraFrpTunnelProvider.js.map +1 -1
- package/dist/tunnel/TunnelProfiles.d.ts +22 -0
- package/dist/tunnel/TunnelProfiles.js +208 -0
- package/dist/tunnel/TunnelProfiles.js.map +1 -0
- package/dist/tunnel/index.d.ts +2 -0
- package/dist/tunnel/index.js +4 -1
- package/dist/tunnel/index.js.map +1 -1
- package/dist/util/identifiers/ClusterIdentifierStrategy.d.ts +3 -0
- package/dist/util/identifiers/ClusterIdentifierStrategy.js +18 -2
- package/dist/util/identifiers/ClusterIdentifierStrategy.js.map +1 -1
- package/dist/util/identifiers/ClusterIdentifierStrategy.jsonld +5 -1
- package/node_modules/@undefineds.co/ai-connection/dist/AiClientConfigurationSection.d.ts +55 -0
- package/node_modules/@undefineds.co/ai-connection/dist/AiClientConfigurationSection.js +167 -0
- package/node_modules/@undefineds.co/ai-connection/dist/AiConnectionHeader.d.ts +3 -0
- package/node_modules/@undefineds.co/ai-connection/dist/AiConnectionHeader.js +8 -0
- package/node_modules/@undefineds.co/ai-connection/dist/AiConnectionList.d.ts +4 -0
- package/node_modules/@undefineds.co/ai-connection/dist/AiConnectionList.js +36 -0
- package/node_modules/@undefineds.co/ai-connection/dist/AiConnectionMain.d.ts +4 -0
- package/node_modules/@undefineds.co/ai-connection/dist/AiConnectionMain.js +37 -0
- package/node_modules/@undefineds.co/ai-connection/dist/AiConnectionMainHeader.d.ts +3 -0
- package/node_modules/@undefineds.co/ai-connection/dist/AiConnectionMainHeader.js +7 -0
- package/node_modules/@undefineds.co/ai-connection/dist/AiConnectionPanel.d.ts +14 -0
- package/node_modules/@undefineds.co/ai-connection/dist/AiConnectionPanel.js +333 -0
- package/node_modules/@undefineds.co/ai-connection/dist/AiProviderCard.d.ts +22 -0
- package/node_modules/@undefineds.co/ai-connection/dist/AiProviderCard.js +43 -0
- package/node_modules/@undefineds.co/ai-connection/dist/AiQuotaCard.d.ts +8 -0
- package/node_modules/@undefineds.co/ai-connection/dist/AiQuotaCard.js +6 -0
- package/node_modules/@undefineds.co/ai-connection/dist/ai-connection-client.d.ts +120 -0
- package/node_modules/@undefineds.co/ai-connection/dist/ai-connection-client.js +414 -0
- package/node_modules/@undefineds.co/ai-connection/dist/client-config/base-adapter.d.ts +32 -0
- package/node_modules/@undefineds.co/ai-connection/dist/client-config/base-adapter.js +212 -0
- package/node_modules/@undefineds.co/ai-connection/dist/client-config/codex.d.ts +14 -0
- package/node_modules/@undefineds.co/ai-connection/dist/client-config/codex.js +90 -0
- package/node_modules/@undefineds.co/ai-connection/dist/client-config/index.cjs +668 -0
- package/node_modules/@undefineds.co/ai-connection/dist/client-config/index.d.ts +6 -0
- package/node_modules/@undefineds.co/ai-connection/dist/client-config/index.js +6 -0
- package/node_modules/@undefineds.co/ai-connection/dist/client-config/json-env-adapter.d.ts +21 -0
- package/node_modules/@undefineds.co/ai-connection/dist/client-config/json-env-adapter.js +82 -0
- package/node_modules/@undefineds.co/ai-connection/dist/client-config/pi.d.ts +13 -0
- package/node_modules/@undefineds.co/ai-connection/dist/client-config/pi.js +83 -0
- package/node_modules/@undefineds.co/ai-connection/dist/client-config/transaction.d.ts +17 -0
- package/node_modules/@undefineds.co/ai-connection/dist/client-config/transaction.js +153 -0
- package/node_modules/@undefineds.co/ai-connection/dist/client-config/types.d.ts +40 -0
- package/node_modules/@undefineds.co/ai-connection/dist/client-config/types.js +1 -0
- package/node_modules/@undefineds.co/ai-connection/dist/controller.d.ts +42 -0
- package/node_modules/@undefineds.co/ai-connection/dist/controller.js +289 -0
- package/node_modules/@undefineds.co/ai-connection/dist/index.d.ts +16 -0
- package/node_modules/@undefineds.co/ai-connection/dist/index.js +41 -0
- package/node_modules/@undefineds.co/ai-connection/dist/manifest.d.ts +1 -0
- package/node_modules/@undefineds.co/ai-connection/dist/manifest.js +18 -0
- package/node_modules/@undefineds.co/ai-connection/dist/service-access.d.ts +3 -0
- package/node_modules/@undefineds.co/ai-connection/dist/service-access.js +133 -0
- package/node_modules/@undefineds.co/ai-connection/package.json +50 -0
- package/node_modules/@undefineds.co/extension-sdk/README.md +299 -0
- package/node_modules/@undefineds.co/extension-sdk/dist/index.d.ts +5 -0
- package/node_modules/@undefineds.co/extension-sdk/dist/index.js +5 -0
- package/node_modules/@undefineds.co/extension-sdk/dist/layout.d.ts +16 -0
- package/node_modules/@undefineds.co/extension-sdk/dist/layout.js +36 -0
- package/node_modules/@undefineds.co/extension-sdk/dist/manifest.d.ts +27 -0
- package/node_modules/@undefineds.co/extension-sdk/dist/manifest.js +79 -0
- package/node_modules/@undefineds.co/extension-sdk/dist/react/app-layout.d.ts +7 -0
- package/node_modules/@undefineds.co/extension-sdk/dist/react/app-layout.js +8 -0
- package/node_modules/@undefineds.co/extension-sdk/dist/react/auth-boundary.d.ts +27 -0
- package/node_modules/@undefineds.co/extension-sdk/dist/react/auth-boundary.js +49 -0
- package/node_modules/@undefineds.co/extension-sdk/dist/react/layout-context.d.ts +11 -0
- package/node_modules/@undefineds.co/extension-sdk/dist/react/layout-context.js +9 -0
- package/node_modules/@undefineds.co/extension-sdk/dist/react/workspace-layout.d.ts +38 -0
- package/node_modules/@undefineds.co/extension-sdk/dist/react/workspace-layout.js +132 -0
- package/node_modules/@undefineds.co/extension-sdk/dist/react.d.ts +12 -0
- package/node_modules/@undefineds.co/extension-sdk/dist/react.js +19 -0
- package/node_modules/@undefineds.co/extension-sdk/dist/testing.d.ts +7 -0
- package/node_modules/@undefineds.co/extension-sdk/dist/testing.js +27 -0
- package/node_modules/@undefineds.co/extension-sdk/dist/web.d.ts +225 -0
- package/node_modules/@undefineds.co/extension-sdk/dist/web.js +142 -0
- package/node_modules/@undefineds.co/extension-sdk/package.json +49 -0
- package/node_modules/@undefineds.co/shared-ui/dist/badge.d.ts +8 -0
- package/node_modules/@undefineds.co/shared-ui/dist/badge.js +17 -0
- package/node_modules/@undefineds.co/shared-ui/dist/button.d.ts +10 -0
- package/node_modules/@undefineds.co/shared-ui/dist/button.js +30 -0
- package/node_modules/@undefineds.co/shared-ui/dist/card.d.ts +7 -0
- package/node_modules/@undefineds.co/shared-ui/dist/card.js +15 -0
- package/node_modules/@undefineds.co/shared-ui/dist/index.d.ts +6 -0
- package/node_modules/@undefineds.co/shared-ui/dist/index.js +6 -0
- package/node_modules/@undefineds.co/shared-ui/dist/input.d.ts +4 -0
- package/node_modules/@undefineds.co/shared-ui/dist/input.js +5 -0
- package/node_modules/@undefineds.co/shared-ui/dist/theme.css +121 -0
- package/node_modules/@undefineds.co/shared-ui/dist/utils.d.ts +2 -0
- package/node_modules/@undefineds.co/shared-ui/dist/utils.js +5 -0
- package/node_modules/@undefineds.co/shared-ui/dist/workspace.d.ts +23 -0
- package/node_modules/@undefineds.co/shared-ui/dist/workspace.js +38 -0
- package/node_modules/@undefineds.co/shared-ui/package.json +39 -0
- package/node_modules/@undefineds.co/solid-sdk/dist/index.d.ts +3 -0
- package/node_modules/@undefineds.co/solid-sdk/dist/index.js +3 -0
- package/node_modules/@undefineds.co/solid-sdk/dist/pod-runtime.d.ts +45 -0
- package/node_modules/@undefineds.co/solid-sdk/dist/pod-runtime.js +147 -0
- package/node_modules/@undefineds.co/solid-sdk/dist/react.d.ts +15 -0
- package/node_modules/@undefineds.co/solid-sdk/dist/react.js +15 -0
- package/node_modules/@undefineds.co/solid-sdk/dist/session.d.ts +42 -0
- package/node_modules/@undefineds.co/solid-sdk/dist/session.js +127 -0
- package/node_modules/@undefineds.co/solid-sdk/package.json +45 -0
- package/package.json +32 -12
- package/static/app/assets/index-BoYHJ6si.js +230 -0
- package/static/app/assets/inrupt-smoke.js +2 -2
- package/static/app/assets/main.css +1 -1
- package/static/app/assets/main.js +9 -9
- package/static/dashboard/assets/NetworkPage-Brt79fuQ.js +2 -0
- package/static/dashboard/assets/PaneListHeader-57nvMwH6.js +1 -0
- package/static/dashboard/assets/PodPage-CM6do1vB.js +2 -0
- package/static/dashboard/assets/ServicesPage-BUNxGJRz.js +1 -0
- package/static/dashboard/assets/card-B9Zjf_2p.js +1 -0
- package/static/dashboard/assets/dashboard-8C6o666W.js +305 -0
- package/static/dashboard/assets/dashboard-CSdewNeA.css +1 -0
- package/static/dashboard/assets/database-DPh9wDY9.js +1 -0
- package/static/dashboard/assets/external-link-VbMQvVMz.js +1 -0
- package/static/dashboard/assets/index-RfiFckzb.js +51 -0
- package/static/dashboard/assets/refresh-cw-BxVxNxNr.js +1 -0
- package/static/dashboard/assets/services-status-context-DKmJ7ISr.js +1 -0
- package/static/dashboard/dashboard.html +2 -2
- package/static/settings/assets/ModelsPage-D_IH7AH3.js +1 -0
- package/static/settings/assets/PaneListHeader-Bgaze006.js +1 -0
- package/static/settings/assets/PodPage-Cy1VNObw.js +2 -0
- package/static/settings/assets/ServicesPage-BsFaxVWC.js +1 -0
- package/static/settings/assets/SettingsPage-UafNWE_p.js +48 -0
- package/static/settings/assets/card-B_bXSIn-.js +1 -0
- package/static/settings/assets/services-status-context-DiX-AbrP.js +1 -0
- package/static/settings/assets/settings-B30oMfZq.js +305 -0
- package/static/settings/assets/settings-CSdewNeA.css +1 -0
- package/static/settings/assets/workspace-layout-Dv1Yn9Ci.js +1 -0
- package/static/settings/auth.html +21 -0
- package/static/settings/reachability.html +221 -0
- package/static/settings/reachability.svg +7 -0
- package/static/settings/reachability.webmanifest +18 -0
- package/static/settings/settings.html +13 -0
- package/static/settings/signal-pod.html +293 -0
- package/static/settings/vite.svg +1 -0
- package/dist/api/service/ai-gateway-transport.d.ts +0 -25
- package/dist/api/service/ai-gateway-transport.js +0 -136
- package/dist/api/service/ai-gateway-transport.js.map +0 -1
- package/dist/api/service/chat-protocol-adapters.d.ts +0 -5
- package/dist/api/service/chat-protocol-adapters.js +0 -146
- package/dist/api/service/chat-protocol-adapters.js.map +0 -1
- package/dist/api/service/chat-routing.d.ts +0 -8
- package/dist/api/service/chat-routing.js +0 -16
- package/dist/api/service/chat-routing.js.map +0 -1
- package/dist/api/service/platform-ai-config.d.ts +0 -10
- package/dist/api/service/platform-ai-config.js +0 -76
- package/dist/api/service/platform-ai-config.js.map +0 -1
- package/dist/document/DocumentParser.js.map +0 -1
- package/dist/document/JinaDocumentParser.js.map +0 -1
- package/static/app/assets/index-C1yksyT4.js +0 -171
- package/static/dashboard/assets/dashboard-BssaVKTn.css +0 -1
- package/static/dashboard/assets/dashboard-Ckuadl3C.js +0 -54
|
@@ -39,6 +39,10 @@
|
|
|
39
39
|
"requireElement": "RdfSparqlAdapter",
|
|
40
40
|
"parameters": [],
|
|
41
41
|
"memberFields": [
|
|
42
|
+
{
|
|
43
|
+
"@id": "undefineds:dist/storage/rdf/RdfSparqlAdapter.jsonld#RdfSparqlAdapter__member_assertServerOwnedNativeQuery",
|
|
44
|
+
"memberFieldName": "assertServerOwnedNativeQuery"
|
|
45
|
+
},
|
|
42
46
|
{
|
|
43
47
|
"@id": "undefineds:dist/storage/rdf/RdfSparqlAdapter.jsonld#RdfSparqlAdapter__member_compile",
|
|
44
48
|
"memberFieldName": "compile"
|
|
@@ -359,6 +363,10 @@
|
|
|
359
363
|
"@id": "undefineds:dist/storage/rdf/RdfSparqlAdapter.jsonld#RdfSparqlAdapter__member_compileFilter",
|
|
360
364
|
"memberFieldName": "compileFilter"
|
|
361
365
|
},
|
|
366
|
+
{
|
|
367
|
+
"@id": "undefineds:dist/storage/rdf/RdfSparqlAdapter.jsonld#RdfSparqlAdapter__member_compileDisjunctiveFilterBranches",
|
|
368
|
+
"memberFieldName": "compileDisjunctiveFilterBranches"
|
|
369
|
+
},
|
|
362
370
|
{
|
|
363
371
|
"@id": "undefineds:dist/storage/rdf/RdfSparqlAdapter.jsonld#RdfSparqlAdapter__member_compileOrFilter",
|
|
364
372
|
"memberFieldName": "compileOrFilter"
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import type { Term } from '@rdfjs/types';
|
|
2
2
|
import type { SqliteDatabase } from '../SqliteRuntime';
|
|
3
|
-
import type { RdfTermKind } from './types';
|
|
3
|
+
import type { RdfTermKind, RdfTermRewriteInput, RdfTermRewriteResult } from './types';
|
|
4
|
+
interface RdfTermRewriteOptions {
|
|
5
|
+
useTransaction?: boolean;
|
|
6
|
+
}
|
|
4
7
|
export declare const RDF_TERM_VALUE_HEAD_LENGTH = 256;
|
|
5
8
|
export declare class RdfTermDictionary {
|
|
6
9
|
private readonly db;
|
|
@@ -17,6 +20,7 @@ export declare class RdfTermDictionary {
|
|
|
17
20
|
idsByNormalizedTextSuffix(kind: RdfTermKind | RdfTermKind[], suffix: string): number[];
|
|
18
21
|
idsByNormalizedTextRegex(kind: RdfTermKind | RdfTermKind[], pattern: string, flags?: string): number[];
|
|
19
22
|
count(): number;
|
|
23
|
+
rewriteNamedNodePrefix(input: RdfTermRewriteInput, options?: RdfTermRewriteOptions): RdfTermRewriteResult;
|
|
20
24
|
private findId;
|
|
21
25
|
private toIdentity;
|
|
22
26
|
private identity;
|
|
@@ -33,3 +37,5 @@ export declare class RdfTermDictionary {
|
|
|
33
37
|
private rowToTerm;
|
|
34
38
|
}
|
|
35
39
|
export declare function rdfTermValueHead(value: string): string;
|
|
40
|
+
export declare function matchesRewriteBoundary(value: string, oldPrefix: string): boolean;
|
|
41
|
+
export {};
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.RdfTermDictionary = exports.RDF_TERM_VALUE_HEAD_LENGTH = void 0;
|
|
4
4
|
exports.rdfTermValueHead = rdfTermValueHead;
|
|
5
|
+
exports.matchesRewriteBoundary = matchesRewriteBoundary;
|
|
5
6
|
const node_crypto_1 = require("node:crypto");
|
|
6
7
|
const n3_1 = require("n3");
|
|
7
8
|
const RdfTermSemantics_1 = require("./RdfTermSemantics");
|
|
@@ -190,6 +191,124 @@ class RdfTermDictionary {
|
|
|
190
191
|
const row = this.db.prepare('SELECT COUNT(*) AS count FROM rdf_terms').get();
|
|
191
192
|
return row?.count ?? 0;
|
|
192
193
|
}
|
|
194
|
+
rewriteNamedNodePrefix(input, options) {
|
|
195
|
+
if (!input.oldPrefix || !input.newPrefix || input.oldPrefix === input.newPrefix) {
|
|
196
|
+
return emptyRewriteResult();
|
|
197
|
+
}
|
|
198
|
+
const rows = this.db
|
|
199
|
+
.prepare(`
|
|
200
|
+
SELECT id, value
|
|
201
|
+
FROM rdf_terms
|
|
202
|
+
WHERE kind = 'iri'
|
|
203
|
+
AND value LIKE ? ESCAPE '\\'
|
|
204
|
+
ORDER BY id
|
|
205
|
+
`)
|
|
206
|
+
.all(`${escapeLikePattern(input.oldPrefix)}%`)
|
|
207
|
+
.filter((row) => matchesRewriteBoundary(row.value, input.oldPrefix));
|
|
208
|
+
const skippedTerms = [];
|
|
209
|
+
let rewrittenTerms = 0;
|
|
210
|
+
const affectedQuadKeys = new Set();
|
|
211
|
+
const update = this.db.prepare(`
|
|
212
|
+
UPDATE rdf_terms
|
|
213
|
+
SET value = ?,
|
|
214
|
+
value_head = ?,
|
|
215
|
+
hash = ?,
|
|
216
|
+
normalized_text = ?
|
|
217
|
+
WHERE id = ?
|
|
218
|
+
`);
|
|
219
|
+
const hashConflict = this.db.prepare('SELECT * FROM rdf_terms WHERE hash = ? AND id <> ?');
|
|
220
|
+
const termUsages = this.db.prepare(`
|
|
221
|
+
SELECT
|
|
222
|
+
quad.graph_id,
|
|
223
|
+
quad.subject_id,
|
|
224
|
+
quad.predicate_id,
|
|
225
|
+
quad.object_id,
|
|
226
|
+
graph.value AS graph_value
|
|
227
|
+
FROM rdf_quads quad
|
|
228
|
+
JOIN rdf_terms graph ON graph.id = quad.graph_id
|
|
229
|
+
WHERE quad.graph_id = ?
|
|
230
|
+
OR quad.subject_id = ?
|
|
231
|
+
OR quad.predicate_id = ?
|
|
232
|
+
OR quad.object_id = ?
|
|
233
|
+
`);
|
|
234
|
+
const runRewrite = () => {
|
|
235
|
+
if (input.scope !== 'safe_projection' || input.mode !== 'safe') {
|
|
236
|
+
// The local file-backed engine only has a proven contract for safe projection
|
|
237
|
+
// rewrites. Other scopes/modes are deliberately reported as skipped instead
|
|
238
|
+
// of mutating the global term dictionary with incomplete semantics.
|
|
239
|
+
for (const row of rows) {
|
|
240
|
+
skippedTerms.push({
|
|
241
|
+
id: row.id,
|
|
242
|
+
value: row.value,
|
|
243
|
+
reason: 'outside_scope',
|
|
244
|
+
});
|
|
245
|
+
}
|
|
246
|
+
return;
|
|
247
|
+
}
|
|
248
|
+
const candidates = rows.map((row) => ({
|
|
249
|
+
row,
|
|
250
|
+
usages: termUsages.all(row.id, row.id, row.id, row.id),
|
|
251
|
+
}));
|
|
252
|
+
for (const candidate of candidates) {
|
|
253
|
+
const { row, usages } = candidate;
|
|
254
|
+
if (usages.length === 0) {
|
|
255
|
+
skippedTerms.push({
|
|
256
|
+
id: row.id,
|
|
257
|
+
value: row.value,
|
|
258
|
+
reason: 'outside_scope',
|
|
259
|
+
});
|
|
260
|
+
continue;
|
|
261
|
+
}
|
|
262
|
+
if (usages.some((usage) => !matchesRewriteBoundary(usage.graph_value, input.oldPrefix))) {
|
|
263
|
+
skippedTerms.push({
|
|
264
|
+
id: row.id,
|
|
265
|
+
value: row.value,
|
|
266
|
+
reason: 'mixed_usage',
|
|
267
|
+
});
|
|
268
|
+
continue;
|
|
269
|
+
}
|
|
270
|
+
const nextValue = `${input.newPrefix}${row.value.slice(input.oldPrefix.length)}`;
|
|
271
|
+
const identity = this.identity('iri', nextValue, null, null, nextValue, null);
|
|
272
|
+
const targetId = this.findId(identity);
|
|
273
|
+
if (targetId !== undefined && targetId !== row.id) {
|
|
274
|
+
skippedTerms.push({
|
|
275
|
+
id: row.id,
|
|
276
|
+
value: row.value,
|
|
277
|
+
reason: 'collision_conflict',
|
|
278
|
+
});
|
|
279
|
+
continue;
|
|
280
|
+
}
|
|
281
|
+
if (hashConflict.get(identity.hash, row.id)) {
|
|
282
|
+
skippedTerms.push({
|
|
283
|
+
id: row.id,
|
|
284
|
+
value: row.value,
|
|
285
|
+
reason: 'collision_conflict',
|
|
286
|
+
});
|
|
287
|
+
continue;
|
|
288
|
+
}
|
|
289
|
+
update.run(identity.value, identity.valueHead, identity.hash, identity.normalizedText, row.id);
|
|
290
|
+
for (const usage of usages) {
|
|
291
|
+
affectedQuadKeys.add(affectedQuadKey(usage));
|
|
292
|
+
}
|
|
293
|
+
rewrittenTerms++;
|
|
294
|
+
}
|
|
295
|
+
};
|
|
296
|
+
if (options?.useTransaction === false) {
|
|
297
|
+
runRewrite();
|
|
298
|
+
}
|
|
299
|
+
else {
|
|
300
|
+
this.db.transaction(runRewrite)();
|
|
301
|
+
}
|
|
302
|
+
this.termCache.clear();
|
|
303
|
+
this.idCache.clear();
|
|
304
|
+
return {
|
|
305
|
+
matchedTerms: rows.length,
|
|
306
|
+
rewrittenTerms,
|
|
307
|
+
remappedTerms: 0,
|
|
308
|
+
skippedTerms,
|
|
309
|
+
affectedQuads: affectedQuadKeys.size,
|
|
310
|
+
};
|
|
311
|
+
}
|
|
193
312
|
findId(identity) {
|
|
194
313
|
const rows = this.db
|
|
195
314
|
.prepare('SELECT * FROM rdf_terms WHERE hash = ?')
|
|
@@ -414,10 +533,30 @@ exports.RdfTermDictionary = RdfTermDictionary;
|
|
|
414
533
|
function rdfTermValueHead(value) {
|
|
415
534
|
return value.slice(0, exports.RDF_TERM_VALUE_HEAD_LENGTH);
|
|
416
535
|
}
|
|
536
|
+
function matchesRewriteBoundary(value, oldPrefix) {
|
|
537
|
+
if (!oldPrefix) {
|
|
538
|
+
return false;
|
|
539
|
+
}
|
|
540
|
+
return value === oldPrefix
|
|
541
|
+
|| value.startsWith(`${oldPrefix}#`)
|
|
542
|
+
|| (oldPrefix.endsWith('/') && value.startsWith(oldPrefix));
|
|
543
|
+
}
|
|
417
544
|
function normalizeSearchText(value) {
|
|
418
545
|
return value.toLowerCase();
|
|
419
546
|
}
|
|
420
547
|
function escapeLikePattern(value) {
|
|
421
548
|
return value.replace(/[\\%_]/g, (match) => `\\${match}`);
|
|
422
549
|
}
|
|
550
|
+
function emptyRewriteResult() {
|
|
551
|
+
return {
|
|
552
|
+
matchedTerms: 0,
|
|
553
|
+
rewrittenTerms: 0,
|
|
554
|
+
remappedTerms: 0,
|
|
555
|
+
skippedTerms: [],
|
|
556
|
+
affectedQuads: 0,
|
|
557
|
+
};
|
|
558
|
+
}
|
|
559
|
+
function affectedQuadKey(row) {
|
|
560
|
+
return `${row.graph_id}\u001f${row.subject_id}\u001f${row.predicate_id}\u001f${row.object_id}`;
|
|
561
|
+
}
|
|
423
562
|
//# sourceMappingURL=RdfTermDictionary.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RdfTermDictionary.js","sourceRoot":"","sources":["../../../src/storage/rdf/RdfTermDictionary.ts"],"names":[],"mappings":"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","sourcesContent":["import { createHash } from 'node:crypto';\nimport { DataFactory } from 'n3';\nimport type { Term } from '@rdfjs/types';\nimport type { SqliteDatabase } from '../SqliteRuntime';\nimport type { RdfTermKind, RdfTermRow } from './types';\nimport { isRdfNumericDatatype, rdfNumericValue } from './RdfTermSemantics';\n\ninterface RdfTermIdentity {\n kind: RdfTermKind;\n value: string;\n valueHead: string;\n datatypeId: number | null;\n lang: string | null;\n normalizedText: string | null;\n numericValue: number | null;\n hash: string;\n}\n\nexport const RDF_TERM_VALUE_HEAD_LENGTH = 256;\n\nconst XSD_STRING = 'http://www.w3.org/2001/XMLSchema#string';\nconst RDF_LANG_STRING = 'http://www.w3.org/1999/02/22-rdf-syntax-ns#langString';\n\nexport class RdfTermDictionary {\n private readonly termCache = new Map<string, number>();\n private readonly idCache = new Map<number, Term>();\n\n public constructor(private readonly db: SqliteDatabase) {}\n\n public initialize(): void {\n this.ensureSafeTermTableSchema();\n this.dropUnsafeRawTextIndexes();\n this.ensureValueHeadColumn();\n this.ensureNumericValueColumn();\n this.db.exec(`\n CREATE UNIQUE INDEX IF NOT EXISTS rdf_terms_identity_hash ON rdf_terms (hash);\n CREATE INDEX IF NOT EXISTS rdf_terms_kind_value_head ON rdf_terms (kind, value_head);\n CREATE INDEX IF NOT EXISTS rdf_terms_kind_datatype ON rdf_terms (kind, datatype_id);\n CREATE INDEX IF NOT EXISTS rdf_terms_kind_lang ON rdf_terms (kind, lang);\n CREATE INDEX IF NOT EXISTS rdf_terms_kind_numeric_value ON rdf_terms (kind, numeric_value);\n `);\n this.backfillNumericValues();\n }\n\n public getOrCreate(term: Term): number {\n const identity = this.toIdentity(term);\n const cacheKey = this.identityCacheKey(identity);\n const cached = this.termCache.get(cacheKey);\n if (cached !== undefined) {\n return cached;\n }\n\n const existing = this.findId(identity);\n if (existing !== undefined) {\n this.termCache.set(cacheKey, existing);\n return existing;\n }\n\n const stmt = this.db.prepare(`\n INSERT INTO rdf_terms (kind, value, value_head, datatype_id, lang, hash, normalized_text, numeric_value)\n VALUES (?, ?, ?, ?, ?, ?, ?, ?)\n `);\n let result;\n try {\n result = stmt.run(\n identity.kind,\n identity.value,\n identity.valueHead,\n identity.datatypeId,\n identity.lang,\n identity.hash,\n identity.normalizedText,\n identity.numericValue,\n );\n } catch (error) {\n const raced = this.findId(identity);\n if (raced !== undefined) {\n this.termCache.set(cacheKey, raced);\n return raced;\n }\n throw error;\n }\n const id = Number(result.lastInsertRowid);\n this.termCache.set(cacheKey, id);\n this.idCache.set(id, term);\n return id;\n }\n\n public find(term: Term): number | undefined {\n const identity = this.toIdentity(term);\n const cacheKey = this.identityCacheKey(identity);\n const cached = this.termCache.get(cacheKey);\n if (cached !== undefined) {\n return cached;\n }\n\n const id = this.findId(identity);\n if (id !== undefined) {\n this.termCache.set(cacheKey, id);\n }\n return id;\n }\n\n public termForId(id: number): Term {\n const cached = this.idCache.get(id);\n if (cached) {\n return cached;\n }\n\n const row = this.db\n .prepare<RdfTermRow>('SELECT * FROM rdf_terms WHERE id = ?')\n .get(id);\n if (!row) {\n throw new Error(`RDF term not found: ${id}`);\n }\n\n const term = this.rowToTerm(row);\n this.idCache.set(id, term);\n return term;\n }\n\n public rowsForIds(ids: number[]): Map<number, Term> {\n const uniqueIds = Array.from(new Set(ids));\n const result = new Map<number, Term>();\n const missing: number[] = [];\n\n for (const id of uniqueIds) {\n const cached = this.idCache.get(id);\n if (cached) {\n result.set(id, cached);\n } else {\n missing.push(id);\n }\n }\n\n if (missing.length === 0) {\n return result;\n }\n\n const placeholders = missing.map(() => '?').join(', ');\n const rows = this.db\n .prepare<RdfTermRow>(`SELECT * FROM rdf_terms WHERE id IN (${placeholders})`)\n .all(...missing);\n\n for (const row of rows) {\n const term = this.rowToTerm(row);\n this.idCache.set(row.id, term);\n result.set(row.id, term);\n }\n\n return result;\n }\n\n public idsByValuePrefix(kind: RdfTermKind | RdfTermKind[], prefix: string): number[] {\n const kinds = Array.isArray(kind) ? kind : [kind];\n if (kinds.length === 0) {\n return [];\n }\n const rows = this.db\n .prepare<{ id: number; value: string }>(`\n SELECT id, value FROM rdf_terms\n WHERE kind IN (${kinds.map(() => '?').join(', ')})\n AND value_head >= ?\n AND value_head < ?\n AND value >= ?\n AND value < ?\n `)\n .all(...kinds, rdfTermValueHead(prefix), `${rdfTermValueHead(prefix)}\\uffff`, prefix, `${prefix}\\uffff`);\n return rows\n .filter((row) => row.value.startsWith(prefix))\n .map((row) => row.id);\n }\n\n public idsByNormalizedTextContains(kind: RdfTermKind | RdfTermKind[], text: string): number[] {\n const kinds = Array.isArray(kind) ? kind : [kind];\n if (kinds.length === 0) {\n return [];\n }\n const needle = normalizeSearchText(text);\n const rows = this.db\n .prepare<{ id: number; value: string }>(`\n SELECT id, value FROM rdf_terms\n WHERE kind IN (${kinds.map(() => '?').join(', ')})\n AND normalized_text LIKE ? ESCAPE '\\\\'\n `)\n .all(...kinds, `%${escapeLikePattern(needle)}%`);\n return rows\n .filter((row) => row.value.includes(text))\n .map((row) => row.id);\n }\n\n public idsByNormalizedTextSuffix(kind: RdfTermKind | RdfTermKind[], suffix: string): number[] {\n const kinds = Array.isArray(kind) ? kind : [kind];\n if (kinds.length === 0) {\n return [];\n }\n const needle = normalizeSearchText(suffix);\n const rows = this.db\n .prepare<{ id: number; value: string }>(`\n SELECT id, value FROM rdf_terms\n WHERE kind IN (${kinds.map(() => '?').join(', ')})\n AND normalized_text LIKE ? ESCAPE '\\\\'\n `)\n .all(...kinds, `%${escapeLikePattern(needle)}`);\n return rows\n .filter((row) => row.value.endsWith(suffix))\n .map((row) => row.id);\n }\n\n public idsByNormalizedTextRegex(kind: RdfTermKind | RdfTermKind[], pattern: string, flags?: string): number[] {\n const kinds = Array.isArray(kind) ? kind : [kind];\n if (kinds.length === 0) {\n return [];\n }\n const rows = this.db\n .prepare<RdfTermRow>(`\n SELECT * FROM rdf_terms\n WHERE kind IN (${kinds.map(() => '?').join(', ')})\n AND normalized_text IS NOT NULL\n `)\n .all(...kinds);\n const regex = new RegExp(pattern, flags);\n return rows\n .filter((row) => regex.test(row.value))\n .map((row) => row.id);\n }\n\n public count(): number {\n const row = this.db.prepare<{ count: number }>('SELECT COUNT(*) AS count FROM rdf_terms').get();\n return row?.count ?? 0;\n }\n\n private findId(identity: RdfTermIdentity): number | undefined {\n const rows = this.db\n .prepare<RdfTermRow>('SELECT * FROM rdf_terms WHERE hash = ?')\n .all(identity.hash);\n return rows.find((row) => this.rowMatchesIdentity(row, identity))?.id;\n }\n\n private toIdentity(term: Term): RdfTermIdentity {\n switch (term.termType) {\n case 'NamedNode':\n return this.identity('iri', term.value, null, null, term.value, null);\n case 'BlankNode':\n return this.identity('blank', term.value, null, null, term.value, null);\n case 'DefaultGraph':\n return this.identity('default_graph', '', null, null, null, null);\n case 'Literal': {\n const datatypeValue = term.datatype?.value || XSD_STRING;\n const datatypeId = datatypeValue === XSD_STRING && !term.language\n ? null\n : this.getOrCreate(DataFactory.namedNode(datatypeValue));\n return this.identity(\n 'literal',\n term.value,\n datatypeId,\n term.language || null,\n term.value,\n this.numericValueForLiteral(term.value, datatypeValue),\n );\n }\n case 'Variable':\n throw new Error(`Variables cannot be indexed as RDF terms: ${term.value}`);\n case 'Quad':\n throw new Error('Nested RDF-star quads are not supported by the first SolidRdfEngine index');\n default: {\n const exhaustive: never = term;\n throw new Error(`Unsupported RDF term: ${String(exhaustive)}`);\n }\n }\n }\n\n private identity(\n kind: RdfTermKind,\n value: string,\n datatypeId: number | null,\n lang: string | null,\n normalizedText: string | null,\n numericValue: number | null,\n ): RdfTermIdentity {\n const hash = createHash('sha256')\n .update(kind)\n .update('\\0')\n .update(value)\n .update('\\0')\n .update(String(datatypeId ?? ''))\n .update('\\0')\n .update(lang ?? '')\n .digest('hex');\n return {\n kind,\n value,\n valueHead: rdfTermValueHead(value),\n datatypeId,\n lang,\n normalizedText: normalizedText ? normalizedText.toLowerCase() : null,\n numericValue,\n hash,\n };\n }\n\n private numericValueForLiteral(value: string, datatypeValue: string): number | null {\n if (!isRdfNumericDatatype(datatypeValue)) {\n return null;\n }\n const numeric = rdfNumericValue(value);\n return Number.isFinite(numeric) ? numeric : null;\n }\n\n private ensureSafeTermTableSchema(): void {\n const table = this.db\n .prepare<{ sql: string | null }>(\"SELECT sql FROM sqlite_schema WHERE type = 'table' AND name = 'rdf_terms'\")\n .get();\n if (!table) {\n this.createSafeTermTable('rdf_terms');\n return;\n }\n\n const columns = this.termTableColumns();\n const hasRawUniqueConstraint = table.sql?.includes('UNIQUE (kind, value, datatype_id, lang)') ?? false;\n if (!hasRawUniqueConstraint && columns.has('value_head') && columns.has('numeric_value')) {\n return;\n }\n\n const foreignKeys = this.db.prepare<{ foreign_keys: number }>('PRAGMA foreign_keys').get()?.foreign_keys ?? 0;\n this.db.exec('PRAGMA foreign_keys = OFF;');\n try {\n this.db.transaction(() => {\n this.db.exec('DROP TABLE IF EXISTS rdf_terms_next;');\n this.createSafeTermTable('rdf_terms_next');\n this.db.exec(`\n INSERT INTO rdf_terms_next (\n id,\n kind,\n value,\n value_head,\n datatype_id,\n lang,\n hash,\n normalized_text,\n numeric_value,\n created_at\n )\n SELECT\n id,\n kind,\n value,\n substr(value, 1, ${RDF_TERM_VALUE_HEAD_LENGTH}),\n datatype_id,\n lang,\n hash,\n normalized_text,\n ${columns.has('numeric_value') ? 'numeric_value' : 'NULL'},\n created_at\n FROM rdf_terms;\n `);\n this.db.exec(`\n DROP TABLE rdf_terms;\n ALTER TABLE rdf_terms_next RENAME TO rdf_terms;\n `);\n })();\n } finally {\n if (foreignKeys) {\n this.db.exec('PRAGMA foreign_keys = ON;');\n }\n }\n }\n\n private createSafeTermTable(name: string): void {\n this.db.exec(`\n CREATE TABLE IF NOT EXISTS ${name} (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n kind TEXT NOT NULL,\n value TEXT NOT NULL,\n value_head TEXT NOT NULL,\n datatype_id INTEGER,\n lang TEXT,\n hash TEXT NOT NULL,\n normalized_text TEXT,\n numeric_value REAL,\n created_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now'))\n );\n `);\n }\n\n private dropUnsafeRawTextIndexes(): void {\n this.db.exec(`\n DROP INDEX IF EXISTS rdf_terms_hash;\n DROP INDEX IF EXISTS rdf_terms_kind_value;\n DROP INDEX IF EXISTS rdf_terms_normalized_text;\n `);\n }\n\n private ensureValueHeadColumn(): void {\n const columns = this.termTableColumns();\n if (!columns.has('value_head')) {\n this.db.exec('ALTER TABLE rdf_terms ADD COLUMN value_head TEXT;');\n }\n this.db.exec(`\n UPDATE rdf_terms\n SET value_head = substr(value, 1, ${RDF_TERM_VALUE_HEAD_LENGTH})\n WHERE value_head IS NULL;\n `);\n }\n\n private ensureNumericValueColumn(): void {\n const columns = this.termTableColumns();\n if (columns.has('numeric_value')) {\n return;\n }\n this.db.exec('ALTER TABLE rdf_terms ADD COLUMN numeric_value REAL;');\n }\n\n private backfillNumericValues(): void {\n const rows = this.db.prepare<RdfTermRow>(`\n SELECT literal.*\n FROM rdf_terms literal\n JOIN rdf_terms datatype ON datatype.id = literal.datatype_id\n WHERE literal.kind = 'literal'\n AND literal.numeric_value IS NULL\n AND datatype.kind = 'iri'\n `).all();\n const update = this.db.prepare('UPDATE rdf_terms SET numeric_value = ? WHERE id = ?');\n for (const row of rows) {\n const datatype = this.termForId(row.datatype_id as number);\n if (datatype.termType !== 'NamedNode') {\n continue;\n }\n const numericValue = this.numericValueForLiteral(row.value, datatype.value);\n if (numericValue !== null) {\n update.run(numericValue, row.id);\n }\n }\n }\n\n private identityCacheKey(identity: RdfTermIdentity): string {\n return [\n identity.kind,\n identity.value,\n identity.datatypeId ?? '',\n identity.lang ?? '',\n ].join('\\u001f');\n }\n\n private rowMatchesIdentity(row: RdfTermRow, identity: RdfTermIdentity): boolean {\n return row.kind === identity.kind\n && row.value === identity.value\n && row.datatype_id === identity.datatypeId\n && row.lang === identity.lang;\n }\n\n private termTableColumns(): Set<string> {\n return new Set(this.db.prepare<{ name: string }>('PRAGMA table_info(rdf_terms)').all().map((column) => column.name));\n }\n\n private rowToTerm(row: RdfTermRow): Term {\n switch (row.kind) {\n case 'iri':\n return DataFactory.namedNode(row.value);\n case 'blank':\n return DataFactory.blankNode(row.value);\n case 'default_graph':\n return DataFactory.defaultGraph();\n case 'literal': {\n if (row.lang) {\n return DataFactory.literal(row.value, row.lang);\n }\n if (row.datatype_id) {\n const datatype = this.termForId(row.datatype_id);\n if (datatype.termType === 'NamedNode' && datatype.value !== XSD_STRING && datatype.value !== RDF_LANG_STRING) {\n return DataFactory.literal(row.value, datatype);\n }\n }\n return DataFactory.literal(row.value);\n }\n default:\n throw new Error(`Unsupported RDF term kind in dictionary row: ${(row as RdfTermRow).kind}`);\n }\n }\n}\n\nexport function rdfTermValueHead(value: string): string {\n return value.slice(0, RDF_TERM_VALUE_HEAD_LENGTH);\n}\n\nfunction normalizeSearchText(value: string): string {\n return value.toLowerCase();\n}\n\nfunction escapeLikePattern(value: string): string {\n return value.replace(/[\\\\%_]/g, (match) => `\\\\${match}`);\n}\n"]}
|
|
1
|
+
{"version":3,"file":"RdfTermDictionary.js","sourceRoot":"","sources":["../../../src/storage/rdf/RdfTermDictionary.ts"],"names":[],"mappings":"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","sourcesContent":["import { createHash } from 'node:crypto';\nimport { DataFactory } from 'n3';\nimport type { Term } from '@rdfjs/types';\nimport type { SqliteDatabase } from '../SqliteRuntime';\nimport type { RdfTermKind, RdfTermRewriteInput, RdfTermRewriteResult, RdfTermRow } from './types';\nimport { isRdfNumericDatatype, rdfNumericValue } from './RdfTermSemantics';\n\ninterface RdfTermIdentity {\n kind: RdfTermKind;\n value: string;\n valueHead: string;\n datatypeId: number | null;\n lang: string | null;\n normalizedText: string | null;\n numericValue: number | null;\n hash: string;\n}\n\ninterface RdfTermRewriteOptions {\n useTransaction?: boolean;\n}\n\ninterface RdfTermUsageRow {\n graph_id: number;\n subject_id: number;\n predicate_id: number;\n object_id: number;\n graph_value: string;\n}\n\ninterface RdfTermRewriteCandidate {\n row: Pick<RdfTermRow, 'id' | 'value'>;\n usages: RdfTermUsageRow[];\n}\n\nexport const RDF_TERM_VALUE_HEAD_LENGTH = 256;\n\nconst XSD_STRING = 'http://www.w3.org/2001/XMLSchema#string';\nconst RDF_LANG_STRING = 'http://www.w3.org/1999/02/22-rdf-syntax-ns#langString';\n\nexport class RdfTermDictionary {\n private readonly termCache = new Map<string, number>();\n private readonly idCache = new Map<number, Term>();\n\n public constructor(private readonly db: SqliteDatabase) {}\n\n public initialize(): void {\n this.ensureSafeTermTableSchema();\n this.dropUnsafeRawTextIndexes();\n this.ensureValueHeadColumn();\n this.ensureNumericValueColumn();\n this.db.exec(`\n CREATE UNIQUE INDEX IF NOT EXISTS rdf_terms_identity_hash ON rdf_terms (hash);\n CREATE INDEX IF NOT EXISTS rdf_terms_kind_value_head ON rdf_terms (kind, value_head);\n CREATE INDEX IF NOT EXISTS rdf_terms_kind_datatype ON rdf_terms (kind, datatype_id);\n CREATE INDEX IF NOT EXISTS rdf_terms_kind_lang ON rdf_terms (kind, lang);\n CREATE INDEX IF NOT EXISTS rdf_terms_kind_numeric_value ON rdf_terms (kind, numeric_value);\n `);\n this.backfillNumericValues();\n }\n\n public getOrCreate(term: Term): number {\n const identity = this.toIdentity(term);\n const cacheKey = this.identityCacheKey(identity);\n const cached = this.termCache.get(cacheKey);\n if (cached !== undefined) {\n return cached;\n }\n\n const existing = this.findId(identity);\n if (existing !== undefined) {\n this.termCache.set(cacheKey, existing);\n return existing;\n }\n\n const stmt = this.db.prepare(`\n INSERT INTO rdf_terms (kind, value, value_head, datatype_id, lang, hash, normalized_text, numeric_value)\n VALUES (?, ?, ?, ?, ?, ?, ?, ?)\n `);\n let result;\n try {\n result = stmt.run(\n identity.kind,\n identity.value,\n identity.valueHead,\n identity.datatypeId,\n identity.lang,\n identity.hash,\n identity.normalizedText,\n identity.numericValue,\n );\n } catch (error) {\n const raced = this.findId(identity);\n if (raced !== undefined) {\n this.termCache.set(cacheKey, raced);\n return raced;\n }\n throw error;\n }\n const id = Number(result.lastInsertRowid);\n this.termCache.set(cacheKey, id);\n this.idCache.set(id, term);\n return id;\n }\n\n public find(term: Term): number | undefined {\n const identity = this.toIdentity(term);\n const cacheKey = this.identityCacheKey(identity);\n const cached = this.termCache.get(cacheKey);\n if (cached !== undefined) {\n return cached;\n }\n\n const id = this.findId(identity);\n if (id !== undefined) {\n this.termCache.set(cacheKey, id);\n }\n return id;\n }\n\n public termForId(id: number): Term {\n const cached = this.idCache.get(id);\n if (cached) {\n return cached;\n }\n\n const row = this.db\n .prepare<RdfTermRow>('SELECT * FROM rdf_terms WHERE id = ?')\n .get(id);\n if (!row) {\n throw new Error(`RDF term not found: ${id}`);\n }\n\n const term = this.rowToTerm(row);\n this.idCache.set(id, term);\n return term;\n }\n\n public rowsForIds(ids: number[]): Map<number, Term> {\n const uniqueIds = Array.from(new Set(ids));\n const result = new Map<number, Term>();\n const missing: number[] = [];\n\n for (const id of uniqueIds) {\n const cached = this.idCache.get(id);\n if (cached) {\n result.set(id, cached);\n } else {\n missing.push(id);\n }\n }\n\n if (missing.length === 0) {\n return result;\n }\n\n const placeholders = missing.map(() => '?').join(', ');\n const rows = this.db\n .prepare<RdfTermRow>(`SELECT * FROM rdf_terms WHERE id IN (${placeholders})`)\n .all(...missing);\n\n for (const row of rows) {\n const term = this.rowToTerm(row);\n this.idCache.set(row.id, term);\n result.set(row.id, term);\n }\n\n return result;\n }\n\n public idsByValuePrefix(kind: RdfTermKind | RdfTermKind[], prefix: string): number[] {\n const kinds = Array.isArray(kind) ? kind : [kind];\n if (kinds.length === 0) {\n return [];\n }\n const rows = this.db\n .prepare<{ id: number; value: string }>(`\n SELECT id, value FROM rdf_terms\n WHERE kind IN (${kinds.map(() => '?').join(', ')})\n AND value_head >= ?\n AND value_head < ?\n AND value >= ?\n AND value < ?\n `)\n .all(...kinds, rdfTermValueHead(prefix), `${rdfTermValueHead(prefix)}\\uffff`, prefix, `${prefix}\\uffff`);\n return rows\n .filter((row) => row.value.startsWith(prefix))\n .map((row) => row.id);\n }\n\n public idsByNormalizedTextContains(kind: RdfTermKind | RdfTermKind[], text: string): number[] {\n const kinds = Array.isArray(kind) ? kind : [kind];\n if (kinds.length === 0) {\n return [];\n }\n const needle = normalizeSearchText(text);\n const rows = this.db\n .prepare<{ id: number; value: string }>(`\n SELECT id, value FROM rdf_terms\n WHERE kind IN (${kinds.map(() => '?').join(', ')})\n AND normalized_text LIKE ? ESCAPE '\\\\'\n `)\n .all(...kinds, `%${escapeLikePattern(needle)}%`);\n return rows\n .filter((row) => row.value.includes(text))\n .map((row) => row.id);\n }\n\n public idsByNormalizedTextSuffix(kind: RdfTermKind | RdfTermKind[], suffix: string): number[] {\n const kinds = Array.isArray(kind) ? kind : [kind];\n if (kinds.length === 0) {\n return [];\n }\n const needle = normalizeSearchText(suffix);\n const rows = this.db\n .prepare<{ id: number; value: string }>(`\n SELECT id, value FROM rdf_terms\n WHERE kind IN (${kinds.map(() => '?').join(', ')})\n AND normalized_text LIKE ? ESCAPE '\\\\'\n `)\n .all(...kinds, `%${escapeLikePattern(needle)}`);\n return rows\n .filter((row) => row.value.endsWith(suffix))\n .map((row) => row.id);\n }\n\n public idsByNormalizedTextRegex(kind: RdfTermKind | RdfTermKind[], pattern: string, flags?: string): number[] {\n const kinds = Array.isArray(kind) ? kind : [kind];\n if (kinds.length === 0) {\n return [];\n }\n const rows = this.db\n .prepare<RdfTermRow>(`\n SELECT * FROM rdf_terms\n WHERE kind IN (${kinds.map(() => '?').join(', ')})\n AND normalized_text IS NOT NULL\n `)\n .all(...kinds);\n const regex = new RegExp(pattern, flags);\n return rows\n .filter((row) => regex.test(row.value))\n .map((row) => row.id);\n }\n\n public count(): number {\n const row = this.db.prepare<{ count: number }>('SELECT COUNT(*) AS count FROM rdf_terms').get();\n return row?.count ?? 0;\n }\n\n public rewriteNamedNodePrefix(input: RdfTermRewriteInput, options?: RdfTermRewriteOptions): RdfTermRewriteResult {\n if (!input.oldPrefix || !input.newPrefix || input.oldPrefix === input.newPrefix) {\n return emptyRewriteResult();\n }\n\n const rows = this.db\n .prepare<Pick<RdfTermRow, 'id' | 'value'>>(`\n SELECT id, value\n FROM rdf_terms\n WHERE kind = 'iri'\n AND value LIKE ? ESCAPE '\\\\'\n ORDER BY id\n `)\n .all(`${escapeLikePattern(input.oldPrefix)}%`)\n .filter((row) => matchesRewriteBoundary(row.value, input.oldPrefix));\n\n const skippedTerms: RdfTermRewriteResult['skippedTerms'] = [];\n let rewrittenTerms = 0;\n const affectedQuadKeys = new Set<string>();\n\n const update = this.db.prepare(`\n UPDATE rdf_terms\n SET value = ?,\n value_head = ?,\n hash = ?,\n normalized_text = ?\n WHERE id = ?\n `);\n const hashConflict = this.db.prepare<RdfTermRow>('SELECT * FROM rdf_terms WHERE hash = ? AND id <> ?');\n const termUsages = this.db.prepare<RdfTermUsageRow>(`\n SELECT\n quad.graph_id,\n quad.subject_id,\n quad.predicate_id,\n quad.object_id,\n graph.value AS graph_value\n FROM rdf_quads quad\n JOIN rdf_terms graph ON graph.id = quad.graph_id\n WHERE quad.graph_id = ?\n OR quad.subject_id = ?\n OR quad.predicate_id = ?\n OR quad.object_id = ?\n `);\n\n const runRewrite = (): void => {\n if (input.scope !== 'safe_projection' || input.mode !== 'safe') {\n // The local file-backed engine only has a proven contract for safe projection\n // rewrites. Other scopes/modes are deliberately reported as skipped instead\n // of mutating the global term dictionary with incomplete semantics.\n for (const row of rows) {\n skippedTerms.push({\n id: row.id,\n value: row.value,\n reason: 'outside_scope',\n });\n }\n return;\n }\n\n const candidates: RdfTermRewriteCandidate[] = rows.map((row) => ({\n row,\n usages: termUsages.all(row.id, row.id, row.id, row.id),\n }));\n\n for (const candidate of candidates) {\n const { row, usages } = candidate;\n if (usages.length === 0) {\n skippedTerms.push({\n id: row.id,\n value: row.value,\n reason: 'outside_scope',\n });\n continue;\n }\n if (usages.some((usage) => !matchesRewriteBoundary(usage.graph_value, input.oldPrefix))) {\n skippedTerms.push({\n id: row.id,\n value: row.value,\n reason: 'mixed_usage',\n });\n continue;\n }\n\n const nextValue = `${input.newPrefix}${row.value.slice(input.oldPrefix.length)}`;\n const identity = this.identity('iri', nextValue, null, null, nextValue, null);\n const targetId = this.findId(identity);\n if (targetId !== undefined && targetId !== row.id) {\n skippedTerms.push({\n id: row.id,\n value: row.value,\n reason: 'collision_conflict',\n });\n continue;\n }\n if (hashConflict.get(identity.hash, row.id)) {\n skippedTerms.push({\n id: row.id,\n value: row.value,\n reason: 'collision_conflict',\n });\n continue;\n }\n\n update.run(\n identity.value,\n identity.valueHead,\n identity.hash,\n identity.normalizedText,\n row.id,\n );\n for (const usage of usages) {\n affectedQuadKeys.add(affectedQuadKey(usage));\n }\n rewrittenTerms++;\n }\n };\n\n if (options?.useTransaction === false) {\n runRewrite();\n } else {\n this.db.transaction(runRewrite)();\n }\n\n this.termCache.clear();\n this.idCache.clear();\n\n return {\n matchedTerms: rows.length,\n rewrittenTerms,\n remappedTerms: 0,\n skippedTerms,\n affectedQuads: affectedQuadKeys.size,\n };\n }\n\n private findId(identity: RdfTermIdentity): number | undefined {\n const rows = this.db\n .prepare<RdfTermRow>('SELECT * FROM rdf_terms WHERE hash = ?')\n .all(identity.hash);\n return rows.find((row) => this.rowMatchesIdentity(row, identity))?.id;\n }\n\n private toIdentity(term: Term): RdfTermIdentity {\n switch (term.termType) {\n case 'NamedNode':\n return this.identity('iri', term.value, null, null, term.value, null);\n case 'BlankNode':\n return this.identity('blank', term.value, null, null, term.value, null);\n case 'DefaultGraph':\n return this.identity('default_graph', '', null, null, null, null);\n case 'Literal': {\n const datatypeValue = term.datatype?.value || XSD_STRING;\n const datatypeId = datatypeValue === XSD_STRING && !term.language\n ? null\n : this.getOrCreate(DataFactory.namedNode(datatypeValue));\n return this.identity(\n 'literal',\n term.value,\n datatypeId,\n term.language || null,\n term.value,\n this.numericValueForLiteral(term.value, datatypeValue),\n );\n }\n case 'Variable':\n throw new Error(`Variables cannot be indexed as RDF terms: ${term.value}`);\n case 'Quad':\n throw new Error('Nested RDF-star quads are not supported by the first SolidRdfEngine index');\n default: {\n const exhaustive: never = term;\n throw new Error(`Unsupported RDF term: ${String(exhaustive)}`);\n }\n }\n }\n\n private identity(\n kind: RdfTermKind,\n value: string,\n datatypeId: number | null,\n lang: string | null,\n normalizedText: string | null,\n numericValue: number | null,\n ): RdfTermIdentity {\n const hash = createHash('sha256')\n .update(kind)\n .update('\\0')\n .update(value)\n .update('\\0')\n .update(String(datatypeId ?? ''))\n .update('\\0')\n .update(lang ?? '')\n .digest('hex');\n return {\n kind,\n value,\n valueHead: rdfTermValueHead(value),\n datatypeId,\n lang,\n normalizedText: normalizedText ? normalizedText.toLowerCase() : null,\n numericValue,\n hash,\n };\n }\n\n private numericValueForLiteral(value: string, datatypeValue: string): number | null {\n if (!isRdfNumericDatatype(datatypeValue)) {\n return null;\n }\n const numeric = rdfNumericValue(value);\n return Number.isFinite(numeric) ? numeric : null;\n }\n\n private ensureSafeTermTableSchema(): void {\n const table = this.db\n .prepare<{ sql: string | null }>(\"SELECT sql FROM sqlite_schema WHERE type = 'table' AND name = 'rdf_terms'\")\n .get();\n if (!table) {\n this.createSafeTermTable('rdf_terms');\n return;\n }\n\n const columns = this.termTableColumns();\n const hasRawUniqueConstraint = table.sql?.includes('UNIQUE (kind, value, datatype_id, lang)') ?? false;\n if (!hasRawUniqueConstraint && columns.has('value_head') && columns.has('numeric_value')) {\n return;\n }\n\n const foreignKeys = this.db.prepare<{ foreign_keys: number }>('PRAGMA foreign_keys').get()?.foreign_keys ?? 0;\n this.db.exec('PRAGMA foreign_keys = OFF;');\n try {\n this.db.transaction(() => {\n this.db.exec('DROP TABLE IF EXISTS rdf_terms_next;');\n this.createSafeTermTable('rdf_terms_next');\n this.db.exec(`\n INSERT INTO rdf_terms_next (\n id,\n kind,\n value,\n value_head,\n datatype_id,\n lang,\n hash,\n normalized_text,\n numeric_value,\n created_at\n )\n SELECT\n id,\n kind,\n value,\n substr(value, 1, ${RDF_TERM_VALUE_HEAD_LENGTH}),\n datatype_id,\n lang,\n hash,\n normalized_text,\n ${columns.has('numeric_value') ? 'numeric_value' : 'NULL'},\n created_at\n FROM rdf_terms;\n `);\n this.db.exec(`\n DROP TABLE rdf_terms;\n ALTER TABLE rdf_terms_next RENAME TO rdf_terms;\n `);\n })();\n } finally {\n if (foreignKeys) {\n this.db.exec('PRAGMA foreign_keys = ON;');\n }\n }\n }\n\n private createSafeTermTable(name: string): void {\n this.db.exec(`\n CREATE TABLE IF NOT EXISTS ${name} (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n kind TEXT NOT NULL,\n value TEXT NOT NULL,\n value_head TEXT NOT NULL,\n datatype_id INTEGER,\n lang TEXT,\n hash TEXT NOT NULL,\n normalized_text TEXT,\n numeric_value REAL,\n created_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now'))\n );\n `);\n }\n\n private dropUnsafeRawTextIndexes(): void {\n this.db.exec(`\n DROP INDEX IF EXISTS rdf_terms_hash;\n DROP INDEX IF EXISTS rdf_terms_kind_value;\n DROP INDEX IF EXISTS rdf_terms_normalized_text;\n `);\n }\n\n private ensureValueHeadColumn(): void {\n const columns = this.termTableColumns();\n if (!columns.has('value_head')) {\n this.db.exec('ALTER TABLE rdf_terms ADD COLUMN value_head TEXT;');\n }\n this.db.exec(`\n UPDATE rdf_terms\n SET value_head = substr(value, 1, ${RDF_TERM_VALUE_HEAD_LENGTH})\n WHERE value_head IS NULL;\n `);\n }\n\n private ensureNumericValueColumn(): void {\n const columns = this.termTableColumns();\n if (columns.has('numeric_value')) {\n return;\n }\n this.db.exec('ALTER TABLE rdf_terms ADD COLUMN numeric_value REAL;');\n }\n\n private backfillNumericValues(): void {\n const rows = this.db.prepare<RdfTermRow>(`\n SELECT literal.*\n FROM rdf_terms literal\n JOIN rdf_terms datatype ON datatype.id = literal.datatype_id\n WHERE literal.kind = 'literal'\n AND literal.numeric_value IS NULL\n AND datatype.kind = 'iri'\n `).all();\n const update = this.db.prepare('UPDATE rdf_terms SET numeric_value = ? WHERE id = ?');\n for (const row of rows) {\n const datatype = this.termForId(row.datatype_id as number);\n if (datatype.termType !== 'NamedNode') {\n continue;\n }\n const numericValue = this.numericValueForLiteral(row.value, datatype.value);\n if (numericValue !== null) {\n update.run(numericValue, row.id);\n }\n }\n }\n\n private identityCacheKey(identity: RdfTermIdentity): string {\n return [\n identity.kind,\n identity.value,\n identity.datatypeId ?? '',\n identity.lang ?? '',\n ].join('\\u001f');\n }\n\n private rowMatchesIdentity(row: RdfTermRow, identity: RdfTermIdentity): boolean {\n return row.kind === identity.kind\n && row.value === identity.value\n && row.datatype_id === identity.datatypeId\n && row.lang === identity.lang;\n }\n\n private termTableColumns(): Set<string> {\n return new Set(this.db.prepare<{ name: string }>('PRAGMA table_info(rdf_terms)').all().map((column) => column.name));\n }\n\n private rowToTerm(row: RdfTermRow): Term {\n switch (row.kind) {\n case 'iri':\n return DataFactory.namedNode(row.value);\n case 'blank':\n return DataFactory.blankNode(row.value);\n case 'default_graph':\n return DataFactory.defaultGraph();\n case 'literal': {\n if (row.lang) {\n return DataFactory.literal(row.value, row.lang);\n }\n if (row.datatype_id) {\n const datatype = this.termForId(row.datatype_id);\n if (datatype.termType === 'NamedNode' && datatype.value !== XSD_STRING && datatype.value !== RDF_LANG_STRING) {\n return DataFactory.literal(row.value, datatype);\n }\n }\n return DataFactory.literal(row.value);\n }\n default:\n throw new Error(`Unsupported RDF term kind in dictionary row: ${(row as RdfTermRow).kind}`);\n }\n }\n}\n\nexport function rdfTermValueHead(value: string): string {\n return value.slice(0, RDF_TERM_VALUE_HEAD_LENGTH);\n}\n\nexport function matchesRewriteBoundary(value: string, oldPrefix: string): boolean {\n if (!oldPrefix) {\n return false;\n }\n return value === oldPrefix\n || value.startsWith(`${oldPrefix}#`)\n || (oldPrefix.endsWith('/') && value.startsWith(oldPrefix));\n}\n\nfunction normalizeSearchText(value: string): string {\n return value.toLowerCase();\n}\n\nfunction escapeLikePattern(value: string): string {\n return value.replace(/[\\\\%_]/g, (match) => `\\\\${match}`);\n}\n\nfunction emptyRewriteResult(): RdfTermRewriteResult {\n return {\n matchedTerms: 0,\n rewrittenTerms: 0,\n remappedTerms: 0,\n skippedTerms: [],\n affectedQuads: 0,\n };\n}\n\nfunction affectedQuadKey(row: Pick<RdfTermUsageRow, 'graph_id' | 'subject_id' | 'predicate_id' | 'object_id'>): string {\n return `${row.graph_id}\\u001f${row.subject_id}\\u001f${row.predicate_id}\\u001f${row.object_id}`;\n}\n"]}
|
|
@@ -71,6 +71,10 @@
|
|
|
71
71
|
"@id": "undefineds:dist/storage/rdf/RdfTermDictionary.jsonld#RdfTermDictionary__member_count",
|
|
72
72
|
"memberFieldName": "count"
|
|
73
73
|
},
|
|
74
|
+
{
|
|
75
|
+
"@id": "undefineds:dist/storage/rdf/RdfTermDictionary.jsonld#RdfTermDictionary__member_rewriteNamedNodePrefix",
|
|
76
|
+
"memberFieldName": "rewriteNamedNodePrefix"
|
|
77
|
+
},
|
|
74
78
|
{
|
|
75
79
|
"@id": "undefineds:dist/storage/rdf/RdfTermDictionary.jsonld#RdfTermDictionary__member_findId",
|
|
76
80
|
"memberFieldName": "findId"
|
|
@@ -1,5 +1,7 @@
|
|
|
1
|
-
import type { RdfTextChunkInput, RdfTextIndexOptions, RdfTextIndexStats, RdfSearchCardinalityEstimate, RdfTextSearchOptions, RdfTextSearchResult, RdfTextSourceInput, RdfTextTermDocumentFrequency } from './types';
|
|
2
|
-
export declare
|
|
1
|
+
import type { RdfTextChunkInput, RdfTextChunkRow, RdfTextIndexOptions, RdfTextIndexSyncLike, RdfTextRebuildStatus, RdfTextRebuildStatusInput, RdfTextSearchOrder, RdfTextIndexStats, RdfSearchCardinalityEstimate, RdfTextSearchOptions, RdfTextSearchResult, RdfTextSourceMetadata, RdfTextSourceInput, RdfTextTermDocumentFrequency, RdfTextRetrievalKind } from './types';
|
|
2
|
+
export declare const RDF_TEXT_TERM_MAX_INDEX_LENGTH = 256;
|
|
3
|
+
export declare const RDF_TEXT_SCHEMA_VERSION = 2;
|
|
4
|
+
export declare class RdfTextIndex implements RdfTextIndexSyncLike {
|
|
3
5
|
private readonly options;
|
|
4
6
|
private readonly sqliteRuntime;
|
|
5
7
|
private db;
|
|
@@ -7,17 +9,58 @@ export declare class RdfTextIndex {
|
|
|
7
9
|
open(): void;
|
|
8
10
|
close(): void;
|
|
9
11
|
clear(): void;
|
|
12
|
+
schemaVersion(): number;
|
|
13
|
+
sourceMetadata(source: string): RdfTextSourceMetadata | undefined;
|
|
14
|
+
recordRebuildStatus(input: RdfTextRebuildStatusInput): void;
|
|
15
|
+
rebuildStatus(source: string): RdfTextRebuildStatus | undefined;
|
|
10
16
|
indexText(source: RdfTextSourceInput, text: string, chunks?: RdfTextChunkInput[]): void;
|
|
17
|
+
moveSource(oldSource: string, next: RdfTextSourceInput): number;
|
|
11
18
|
deleteSource(source: string): number;
|
|
12
19
|
search(options: RdfTextSearchOptions): RdfTextSearchResult[];
|
|
13
20
|
estimateSearchCardinality(options: RdfTextSearchOptions): RdfSearchCardinalityEstimate;
|
|
14
21
|
stats(): RdfTextIndexStats;
|
|
15
22
|
termDocumentFrequency(limit?: number): RdfTextTermDocumentFrequency[];
|
|
16
23
|
private initializeSchema;
|
|
24
|
+
private ensureSourceKeyColumn;
|
|
25
|
+
private ensureChunkRetrievalColumns;
|
|
26
|
+
private ensureEntityProvenanceColumns;
|
|
17
27
|
private backfillTermPostings;
|
|
18
28
|
private upsertSource;
|
|
19
29
|
private chunkText;
|
|
20
30
|
private estimateDatabaseBytes;
|
|
21
31
|
private toSearchResult;
|
|
32
|
+
private entitiesForChunks;
|
|
33
|
+
private entitiesForChunk;
|
|
22
34
|
private requireDb;
|
|
23
35
|
}
|
|
36
|
+
export declare function chunkRdfTextSource(source: RdfTextSourceInput, text: string): RdfTextChunkInput[];
|
|
37
|
+
export declare function deterministicRdfTextChunkKey(source: string, ordinal: number): string;
|
|
38
|
+
export declare function rdfTextSha256(value: string): string;
|
|
39
|
+
export declare function normalizeRdfText(value: string): string;
|
|
40
|
+
export declare function normalizedRdfTextTokenCount(value: string): number;
|
|
41
|
+
export declare function tokenizeNormalizedRdfText(value: string): string[];
|
|
42
|
+
export declare function rdfTextTermOccurrences(normalizedText: string): Map<string, number>;
|
|
43
|
+
export declare function rdfTextOccurrenceCount(haystack: string, needle: string): number;
|
|
44
|
+
export declare function applyRdfTextResultWindow(rows: number, offset: number | undefined, limit: number | undefined): number;
|
|
45
|
+
export declare function compareRdfTextSearchHits(left: {
|
|
46
|
+
row: RdfTextChunkRow;
|
|
47
|
+
score: number;
|
|
48
|
+
}, right: {
|
|
49
|
+
row: RdfTextChunkRow;
|
|
50
|
+
score: number;
|
|
51
|
+
}, orderBy: RdfTextSearchOrder[] | undefined): number;
|
|
52
|
+
export declare function normalizeRdfTextPerSourceLimit(limit: number | undefined): number | undefined;
|
|
53
|
+
export declare function escapeRdfTextLikePattern(value: string): string;
|
|
54
|
+
export declare function parseRdfTextPath(value: string | null): string[];
|
|
55
|
+
export declare function normalizeRdfTextRetrievalKind(value: string | null | undefined): RdfTextRetrievalKind;
|
|
56
|
+
export declare function rdfTextIndexBudgetSkip(maxSourceBytes: number | undefined, text: string): {
|
|
57
|
+
reason: string;
|
|
58
|
+
message: string;
|
|
59
|
+
} | undefined;
|
|
60
|
+
export declare function rdfTextIndexChunkCap(maxChunksPerSource: number | undefined, chunks: RdfTextChunkInput[]): {
|
|
61
|
+
chunks: RdfTextChunkInput[];
|
|
62
|
+
capped?: {
|
|
63
|
+
reason: string;
|
|
64
|
+
message: string;
|
|
65
|
+
};
|
|
66
|
+
};
|