@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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RdfTextIndex.js","sourceRoot":"","sources":["../../../src/storage/rdf/RdfTextIndex.ts"],"names":[],"mappings":";;;AAAA,6CAAyC;AACzC,qCAAgD;AAChD,yCAA6C;AAC7C,kEAA+D;AAC/D,oDAAkG;AAsClG,MAAM,8BAA8B,GAAG,GAAG,CAAC;AAE3C,MAAa,YAAY;IAIvB,YAAoC,OAA4B;QAA5B,YAAO,GAAP,OAAO,CAAqB;QAH/C,kBAAa,GAAG,IAAA,mCAAmB,GAAE,CAAC;QAC/C,OAAE,GAA0B,IAAI,CAAC;IAE0B,CAAC;IAE7D,IAAI;QACT,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;YACZ,OAAO;QACT,CAAC;QAED,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YACrC,MAAM,GAAG,GAAG,IAAA,mBAAO,EAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACvC,IAAI,CAAC,IAAA,oBAAU,EAAC,GAAG,CAAC,EAAE,CAAC;gBACrB,IAAA,mBAAS,EAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACtC,CAAC;QACH,CAAC;QAED,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC7D,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC1B,CAAC;IAEM,KAAK;QACV,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC;QACjB,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC;IACjB,CAAC;IAEM,KAAK;QACV,IAAI,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,wFAAwF,CAAC,CAAC;IAClH,CAAC;IAEM,SAAS,CAAC,MAA0B,EAAE,IAAY,EAAE,MAA4B;QACrF,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAC5B,MAAM,aAAa,GAAG,MAAM,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAC7D,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC;YACjC,GAAG,MAAM;YACT,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,IAAI,CAAC;SAC9C,CAAC,CAAC;QACH,MAAM,WAAW,GAAG,EAAE,CAAC,OAAO,CAAC;;;;;;;;;;;;;;;;KAgB9B,CAAC,CAAC;QACH,MAAM,UAAU,GAAG,EAAE,CAAC,OAAO,CAAC;;;;;;;;;KAS7B,CAAC,CAAC;QAEH,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE;YAClB,EAAE,CAAC,OAAO,CAAC,gDAAgD,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAC3E,EAAE,CAAC,OAAO,CAAC,iDAAiD,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAC5E,KAAK,MAAM,KAAK,IAAI,aAAa,EAAE,CAAC;gBAClC,MAAM,cAAc,GAAG,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gBACpD,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,CAC5B,QAAQ,EACR,KAAK,CAAC,QAAQ,EACd,KAAK,CAAC,OAAO,EACb,KAAK,CAAC,KAAK,EACX,KAAK,CAAC,OAAO,IAAI,IAAI,EACrB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,EAChC,KAAK,CAAC,OAAO,EACb,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,SAAS,EACf,cAAc,EACd,oBAAoB,CAAC,cAAc,CAAC,CACrC,CAAC;gBACF,qBAAqB,CAAC,UAAU,EAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,EAAE,cAAc,CAAC,CAAC;YAC9F,CAAC;QACH,CAAC,CAAC,EAAE,CAAC;IACP,CAAC;IAEM,YAAY,CAAC,MAAc;QAChC,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAC5B,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,CAAiB,kDAAkD,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACvG,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,OAAO,CAAC,CAAC;QACX,CAAC;QAED,OAAO,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE;YACzB,EAAE,CAAC,OAAO,CAAC,gDAAgD,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACzE,MAAM,aAAa,GAAG,EAAE,CAAC,OAAO,CAAC,iDAAiD,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC;YACxG,EAAE,CAAC,OAAO,CAAC,2CAA2C,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACpE,OAAO,aAAa,CAAC;QACvB,CAAC,CAAC,EAAE,CAAC;IACP,CAAC;IAEM,MAAM,CAAC,OAA6B;QACzC,MAAM,KAAK,GAAG,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC3C,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,SAAS,GAAG,wBAAwB,CAAC,KAAK,CAAC,CAAC;QAClD,MAAM,MAAM,GAAc,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;QAChD,MAAM,UAAU,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QAEnC,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;YACtB,UAAU,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;YACxC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACjC,CAAC;QACD,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACnB,UAAU,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;YACrC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC9B,CAAC;QACD,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;YACzB,UAAU,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC;YAC5D,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,GAAG,OAAO,CAAC,YAAY,QAAQ,CAAC,CAAC;QACrE,CAAC;QAED,MAAM,GAAG,GAAG;;;;;;;;;;;;;;;;;;;;;;;cAuBF,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC;;KAEjC,CAAC;QAEF,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,OAAO,CAAkB,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC;QAC3E,MAAM,OAAO,GAAG,IAAI;aACjB,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,eAAe,CAAC,GAAG,CAAC,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;aAC3E,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC;aACpC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,qBAAqB,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;aAC1E,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAClE,OAAO,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,EAAE,OAAO,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;IAC7H,CAAC;IAEM,yBAAyB,CAAC,OAA6B;QAC5D,MAAM,KAAK,GAAG,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC3C,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO;gBACL,IAAI,EAAE,CAAC;gBACP,MAAM,EAAE,sBAAsB;gBAC9B,WAAW,EAAE,sBAAsB;aACpC,CAAC;QACJ,CAAC;QAED,MAAM,SAAS,GAAG,wBAAwB,CAAC,KAAK,CAAC,CAAC;QAClD,MAAM,MAAM,GAAc,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;QAChD,MAAM,UAAU,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QAEnC,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;YACtB,UAAU,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;YACxC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACjC,CAAC;QACD,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACnB,UAAU,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;YACrC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC9B,CAAC;QACD,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;YACzB,UAAU,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC;YAC5D,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,GAAG,OAAO,CAAC,YAAY,QAAQ,CAAC,CAAC;QACrE,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,OAAO,CAAoB;;;;cAI/C,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC;KACjC,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,EAAE,KAAK,IAAI,CAAC,CAAC;QAE9B,OAAO;YACL,IAAI,EAAE,iBAAiB,CAAC,IAAI,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC;YAC5D,MAAM,EAAE,SAAS,CAAC,WAAW;YAC7B,WAAW,EAAE,SAAS,CAAC,WAAW;SACnC,CAAC;IACJ,CAAC;IAEM,KAAK;QACV,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAC5B,OAAO;YACL,WAAW,EAAE,EAAE,CAAC,OAAO,CAAoB,gDAAgD,CAAC,CAAC,GAAG,EAAE,EAAE,KAAK,IAAI,CAAC;YAC9G,UAAU,EAAE,EAAE,CAAC,OAAO,CAAoB,+CAA+C,CAAC,CAAC,GAAG,EAAE,EAAE,KAAK,IAAI,CAAC;YAC5G,aAAa,EAAE,IAAI,CAAC,qBAAqB,EAAE;YAC3C,qBAAqB,EAAE,IAAI,CAAC,qBAAqB,EAAE;SACpD,CAAC;IACJ,CAAC;IAEM,qBAAqB,CAAC,KAAK,GAAG,GAAG;QACtC,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,OAAO,CAA0B;;;;;;;;;;KAU9D,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;QAE3B,OAAO,IAAI;aACR,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YACb,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,WAAW,EAAE,GAAG,CAAC,YAAY;YAC7B,UAAU,EAAE,GAAG,CAAC,WAAW;YAC3B,gBAAgB,EAAE,GAAG,CAAC,iBAAiB;SACxC,CAAC,CAAC,CAAC;IACR,CAAC;IAEO,gBAAgB;QACtB,IAAI,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oDAgC0B,8BAA8B;;;;;;;;;;;;;wDAa1B,8BAA8B;;;;;;KAMjF,CAAC,CAAC;QACH,IAAI,CAAC,oBAAoB,EAAE,CAAC;IAC9B,CAAC;IAEO,oBAAoB;QAC1B,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAC5B,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAIpB;;;;;KAKF,CAAC,CAAC,GAAG,EAAE,CAAC;QACT,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtB,OAAO;QACT,CAAC;QAED,MAAM,UAAU,GAAG,EAAE,CAAC,OAAO,CAAC;;;;;;;;;KAS7B,CAAC,CAAC;QACH,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE;YAClB,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;gBACvB,qBAAqB,CAAC,UAAU,EAAE,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,eAAe,CAAC,CAAC;YAChF,CAAC;QACH,CAAC,CAAC,EAAE,CAAC;IACP,CAAC;IAEO,YAAY,CAAC,MAA0B;QAC7C,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAC5B,EAAE,CAAC,OAAO,CAAC;;;;;;;;;;;;;;;;;;;KAmBV,CAAC,CAAC,GAAG,CACJ,MAAM,CAAC,MAAM,EACb,MAAM,CAAC,SAAS,EAChB,MAAM,CAAC,SAAS,IAAI,IAAI,EACxB,MAAM,CAAC,WAAW,IAAI,IAAI,EAC1B,MAAM,CAAC,aAAa,IAAI,IAAI,EAC5B,MAAM,CAAC,UAAU,IAAI,IAAI,CAC1B,CAAC;QAEF,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,CAAmB,iDAAiD,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC/G,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,MAAM,IAAI,KAAK,CAAC,qCAAqC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;QACxE,CAAC;QACD,OAAO,GAAG,CAAC,EAAE,CAAC;IAChB,CAAC;IAEO,SAAS,CAAC,MAA0B,EAAE,IAAY;QACxD,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,IAAI,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC;YAC7B,MAAM,OAAO,GAAG,IAAI,+BAAc,EAAE,CAAC;YACrC,OAAO,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;iBACxC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;iBAClD,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;gBACtB,QAAQ,EAAE,qBAAqB,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC;gBACrD,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,SAAS;gBACnC,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,WAAW,EAAE,KAAK,CAAC,WAAW;gBAC9B,SAAS,EAAE,KAAK,CAAC,SAAS;aAC3B,CAAC,CAAC,CAAC;QACR,CAAC;QAED,OAAO,cAAc,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC7C,CAAC;IAEO,qBAAqB;QAC3B,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAC5B,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,EAAE,CAAC,OAAO,CAAyB,mBAAmB,CAAC,CAAC,GAAG,EAAE,EAAE,UAAU,IAAI,CAAC,CAAC;YACjG,MAAM,QAAQ,GAAG,EAAE,CAAC,OAAO,CAAwB,kBAAkB,CAAC,CAAC,GAAG,EAAE,EAAE,SAAS,IAAI,CAAC,CAAC;YAC7F,OAAO,SAAS,GAAG,QAAQ,CAAC;QAC9B,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,CAAC,CAAC;QACX,CAAC;IACH,CAAC;IAEO,cAAc,CAAC,GAAoB,EAAE,KAAa;QACxD,OAAO;YACL,MAAM,EAAE,GAAG,CAAC,MAAM;YAClB,SAAS,EAAE,GAAG,CAAC,SAAS;YACxB,SAAS,EAAE,GAAG,CAAC,UAAU,IAAI,SAAS;YACtC,WAAW,EAAE,GAAG,CAAC,YAAY,IAAI,SAAS;YAC1C,aAAa,EAAE,GAAG,CAAC,cAAc,IAAI,SAAS;YAC9C,UAAU,EAAE,GAAG,CAAC,WAAW,IAAI,SAAS;YACxC,QAAQ,EAAE,GAAG,CAAC,SAAS;YACvB,OAAO,EAAE,GAAG,CAAC,OAAO;YACpB,KAAK,EAAE,GAAG,CAAC,KAAK;YAChB,OAAO,EAAE,GAAG,CAAC,OAAO,IAAI,SAAS;YACjC,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;YACzB,OAAO,EAAE,GAAG,CAAC,OAAO;YACpB,WAAW,EAAE,GAAG,CAAC,YAAY;YAC7B,SAAS,EAAE,GAAG,CAAC,UAAU;YACzB,KAAK;SACN,CAAC;IACJ,CAAC;IAEO,SAAS;QACf,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;QAC9C,CAAC;QACD,OAAO,IAAI,CAAC,EAAE,CAAC;IACjB,CAAC;CACF;AAtaD,oCAsaC;AAED,SAAS,gBAAgB,CAAC,MAA0B;IAClD,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC/E,IAAI,WAAW,KAAK,eAAe,IAAI,WAAW,KAAK,iBAAiB,EAAE,CAAC;QACzE,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,IAAI,GAAG,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,MAAM,CAAC;IAC/C,OAAO,CAAC,KAAK,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,IAAA,mBAAO,EAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;AAC9E,CAAC;AAED,SAAS,cAAc,CAAC,MAAc,EAAE,IAAY;IAClD,MAAM,MAAM,GAAwB,EAAE,CAAC;IACvC,MAAM,gBAAgB,GAAG,oCAAoC,CAAC;IAC9D,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,KAA6B,CAAC;IAElC,OAAO,CAAC,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QACtD,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC;QACxB,OAAO,GAAG,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;QACpE,KAAK,GAAG,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IACxC,CAAC;IAED,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IAClE,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC7C,OAAO,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAClC,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,UAAU,CAAC,MAAc,EAAE,IAAY;IAC9C,MAAM,MAAM,GAAwB,EAAE,CAAC;IACvC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAClC,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,IAAI,OAAO,GAAG,CAAC,CAAC;IAEhB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,KAAK,GAAG,MAAM,CAAC;QACrB,MAAM,GAAG,GAAG,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC;QAChC,OAAO,GAAG,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;QACpE,MAAM,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/D,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,cAAc,CACrB,MAA2B,EAC3B,MAAc,EACd,OAAe,EACf,IAAY,EACZ,KAAa,EACb,GAAW;IAEX,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IAC9C,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,MAAM,CAAC,IAAI,CAAC;QACV,QAAQ,EAAE,qBAAqB,CAAC,MAAM,EAAE,OAAO,CAAC;QAChD,OAAO;QACP,KAAK,EAAE,CAAC;QACR,IAAI,EAAE,EAAE;QACR,OAAO;QACP,WAAW,EAAE,KAAK;QAClB,SAAS,EAAE,GAAG;KACf,CAAC,CAAC;IACH,OAAO,OAAO,GAAG,CAAC,CAAC;AACrB,CAAC;AAED,SAAS,qBAAqB,CAAC,MAAc,EAAE,OAAe;IAC5D,OAAO,IAAA,wBAAU,EAAC,QAAQ,CAAC;SACxB,MAAM,CAAC,MAAM,CAAC;SACd,MAAM,CAAC,IAAI,CAAC;SACZ,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;SACvB,MAAM,CAAC,KAAK,CAAC;SACb,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAClB,CAAC;AAED,SAAS,MAAM,CAAC,KAAa;IAC3B,OAAO,IAAA,wBAAU,EAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC1D,CAAC;AAED,SAAS,aAAa,CAAC,KAAa;IAClC,OAAO,KAAK,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;AACzD,CAAC;AAED,SAAS,oBAAoB,CAAC,KAAa;IACzC,OAAO,sBAAsB,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC;AAC9C,CAAC;AAED,SAAS,sBAAsB,CAAC,KAAa;IAC3C,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AACvD,CAAC;AAED,SAAS,qBAAqB,CAC5B,UAA2B,EAC3B,QAAgB,EAChB,OAAe,EACf,cAAsB;IAEtB,KAAK,MAAM,CAAC,IAAI,EAAE,WAAW,CAAC,IAAI,eAAe,CAAC,cAAc,CAAC,EAAE,CAAC;QAClE,IAAI,IAAI,CAAC,MAAM,GAAG,8BAA8B,EAAE,CAAC;YACjD,SAAS;QACX,CAAC;QACD,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;IACvD,CAAC;AACH,CAAC;AAED,SAAS,eAAe,CAAC,cAAsB;IAC7C,MAAM,KAAK,GAAG,IAAI,GAAG,EAAkB,CAAC;IACxC,KAAK,MAAM,IAAI,IAAI,sBAAsB,CAAC,cAAc,CAAC,EAAE,CAAC;QAC1D,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9C,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,wBAAwB,CAAC,KAAa;IAC7C,MAAM,KAAK,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC,CAAC;SACtD,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,IAAI,8BAA8B,CAAC,CAAC;IACnE,MAAM,eAAe,GAAG,0CAA0C,CAAC;IACnE,MAAM,aAAa,GAAG,IAAI,iBAAiB,CAAC,KAAK,CAAC,GAAG,CAAC;IACtD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO;YACL,GAAG,EAAE,eAAe;YACpB,MAAM,EAAE,CAAC,aAAa,CAAC;YACvB,WAAW,EAAE,sBAAsB;SACpC,CAAC;IACJ,CAAC;IAED,OAAO;QACL,GAAG,EAAE;;;;YAIG,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;;;;WAIjB,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC;;;;;YAKpB,eAAe;KACtB;QACD,MAAM,EAAE;YACN,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAClE,KAAK,CAAC,MAAM;YACZ,aAAa;SACd;QACD,WAAW,EAAE,mBAAmB;KACjC,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CAAC,QAAgB,EAAE,MAAc;IACvD,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,CAAC,CAAC;IACX,CAAC;IAED,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,OAAO,IAAI,EAAE,CAAC;QACZ,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC/C,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;YACjB,MAAM;QACR,CAAC;QACD,KAAK,EAAE,CAAC;QACR,MAAM,GAAG,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC;IACjC,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,iBAAiB,CAAC,IAAY,EAAE,MAA0B,EAAE,KAAyB;IAC5F,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,IAAI,CAAC,CAAC,CAAC;IACvC,IAAI,IAAI,IAAI,KAAK,EAAE,CAAC;QAClB,OAAO,CAAC,CAAC;IACX,CAAC;IACD,MAAM,SAAS,GAAG,IAAI,GAAG,KAAK,CAAC;IAC/B,OAAO,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;AACnF,CAAC;AAED,SAAS,qBAAqB,CAC5B,IAA6C,EAC7C,KAA8C,EAC9C,OAAyC;IAEzC,MAAM,KAAK,GAAG,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAgB,EAAE,SAAS,EAAE,MAAe,EAAE,CAAC,CAAC;IACpG,KAAK,MAAM,KAAK,IAAI,KAAK,EAAE,CAAC;QAC1B,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACtD,MAAM,UAAU,GAAG,sBAAsB,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;QACpE,IAAI,UAAU,KAAK,CAAC,EAAE,CAAC;YACrB,OAAO,UAAU,GAAG,SAAS,CAAC;QAChC,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,SAAS,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC;AAC1F,CAAC;AAED,SAAS,sBAAsB,CAC7B,IAA6C,EAC7C,KAA8C,EAC9C,KAAkC;IAElC,QAAQ,KAAK,EAAE,CAAC;QACd,KAAK,OAAO;YACV,OAAO,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;QAClC,KAAK,QAAQ;YACX,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACzD,KAAK,WAAW;YACd,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC;QAC/E,KAAK,SAAS;YACZ,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC;QAC9C,KAAK,aAAa;YAChB,OAAO,IAAI,CAAC,GAAG,CAAC,YAAY,GAAG,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC;QACxD,KAAK,WAAW;YACd,OAAO,IAAI,CAAC,GAAG,CAAC,UAAU,GAAG,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC;QACpD,OAAO,CAAC,CAAC,CAAC;YACR,MAAM,UAAU,GAAU,KAAK,CAAC;YAChC,MAAM,IAAI,KAAK,CAAC,4CAA4C,UAAU,EAAE,CAAC,CAAC;QAC5E,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAa;IACtC,OAAO,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,EAAE,CAAC,CAAC;AAC3D,CAAC;AAED,SAAS,SAAS,CAAC,KAAoB;IACrC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACjC,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAkB,EAAE,CAAC,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACxG,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC","sourcesContent":["import { createHash } from 'node:crypto';\nimport { existsSync, mkdirSync } from 'node:fs';\nimport { dirname, extname } from 'node:path';\nimport { HeadingChunker } from '../../document/HeadingChunker';\nimport { createSqliteRuntime, type SqliteDatabase, type SqliteStatement } from '../SqliteRuntime';\nimport type {\n RdfTextChunkInput,\n RdfTextChunkRow,\n RdfTextIndexOptions,\n RdfTextSearchOrder,\n RdfTextIndexStats,\n RdfSearchCardinalityEstimate,\n RdfTextSearchOptions,\n RdfTextSearchResult,\n RdfTextSourceInput,\n RdfTextTermDocumentFrequency,\n} from './types';\n\ninterface RdfTextSourceRow {\n id: number;\n source: string;\n workspace: string;\n local_path: string | null;\n content_type: string | null;\n source_version: string | null;\n source_hash: string | null;\n updated_at: string;\n}\n\ninterface RdfTextTermFrequencyRow {\n term: string;\n source_count: number;\n chunk_count: number;\n total_occurrences: number;\n}\n\ninterface TextSearchPredicate {\n sql: string;\n params: unknown[];\n indexChoice: 'text-normalized-scan' | 'text-term-posting';\n}\n\nconst RDF_TEXT_TERM_MAX_INDEX_LENGTH = 256;\n\nexport class RdfTextIndex {\n private readonly sqliteRuntime = createSqliteRuntime();\n private db: SqliteDatabase | null = null;\n\n public constructor(private readonly options: RdfTextIndexOptions) {}\n\n public open(): void {\n if (this.db) {\n return;\n }\n\n if (this.options.path !== ':memory:') {\n const dir = dirname(this.options.path);\n if (!existsSync(dir)) {\n mkdirSync(dir, { recursive: true });\n }\n }\n\n this.db = this.sqliteRuntime.openDatabase(this.options.path);\n this.initializeSchema();\n }\n\n public close(): void {\n this.db?.close();\n this.db = null;\n }\n\n public clear(): void {\n this.requireDb().exec('DELETE FROM rdf_text_terms; DELETE FROM rdf_text_chunks; DELETE FROM rdf_text_sources;');\n }\n\n public indexText(source: RdfTextSourceInput, text: string, chunks?: RdfTextChunkInput[]): void {\n const db = this.requireDb();\n const indexedChunks = chunks ?? this.chunkText(source, text);\n const sourceId = this.upsertSource({\n ...source,\n sourceHash: source.sourceHash ?? sha256(text),\n });\n const insertChunk = db.prepare(`\n INSERT INTO rdf_text_chunks (\n source_id,\n chunk_key,\n ordinal,\n level,\n heading,\n path,\n content,\n start_offset,\n end_offset,\n normalized_text,\n token_count,\n updated_at\n )\n VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, strftime('%Y-%m-%dT%H:%M:%fZ', 'now'))\n `);\n const insertTerm = db.prepare(`\n INSERT INTO rdf_text_terms (\n term,\n source_id,\n chunk_id,\n occurrences,\n updated_at\n )\n VALUES (?, ?, ?, ?, strftime('%Y-%m-%dT%H:%M:%fZ', 'now'))\n `);\n\n db.transaction(() => {\n db.prepare('DELETE FROM rdf_text_terms WHERE source_id = ?').run(sourceId);\n db.prepare('DELETE FROM rdf_text_chunks WHERE source_id = ?').run(sourceId);\n for (const chunk of indexedChunks) {\n const normalizedText = normalizeText(chunk.content);\n const result = insertChunk.run(\n sourceId,\n chunk.chunkKey,\n chunk.ordinal,\n chunk.level,\n chunk.heading || null,\n JSON.stringify(chunk.path ?? []),\n chunk.content,\n chunk.startOffset,\n chunk.endOffset,\n normalizedText,\n tokenCountNormalized(normalizedText),\n );\n insertTermOccurrences(insertTerm, sourceId, Number(result.lastInsertRowid), normalizedText);\n }\n })();\n }\n\n public deleteSource(source: string): number {\n const db = this.requireDb();\n const row = db.prepare<{ id: number }>('SELECT id FROM rdf_text_sources WHERE source = ?').get(source);\n if (!row) {\n return 0;\n }\n\n return db.transaction(() => {\n db.prepare('DELETE FROM rdf_text_terms WHERE source_id = ?').run(row.id);\n const deletedChunks = db.prepare('DELETE FROM rdf_text_chunks WHERE source_id = ?').run(row.id).changes;\n db.prepare('DELETE FROM rdf_text_sources WHERE id = ?').run(row.id);\n return deletedChunks;\n })();\n }\n\n public search(options: RdfTextSearchOptions): RdfTextSearchResult[] {\n const query = normalizeText(options.query);\n if (!query) {\n return [];\n }\n\n const predicate = buildTextSearchPredicate(query);\n const params: unknown[] = [...predicate.params];\n const conditions = [predicate.sql];\n\n if (options.workspace) {\n conditions.push('source.workspace = ?');\n params.push(options.workspace);\n }\n if (options.source) {\n conditions.push('source.source = ?');\n params.push(options.source);\n }\n if (options.sourcePrefix) {\n conditions.push('source.source >= ? AND source.source < ?');\n params.push(options.sourcePrefix, `${options.sourcePrefix}\\uffff`);\n }\n\n const sql = `\n SELECT\n chunk.id,\n chunk.source_id,\n source.source,\n source.workspace,\n source.local_path,\n source.content_type,\n source.source_version,\n source.source_hash,\n chunk.chunk_key,\n chunk.ordinal,\n chunk.level,\n chunk.heading,\n chunk.path,\n chunk.content,\n chunk.start_offset,\n chunk.end_offset,\n chunk.normalized_text,\n chunk.token_count,\n chunk.updated_at\n FROM rdf_text_chunks chunk\n JOIN rdf_text_sources source ON source.id = chunk.source_id\n WHERE ${conditions.join(' AND ')}\n ORDER BY chunk.source_id ASC, chunk.ordinal ASC\n `;\n\n const rows = this.requireDb().prepare<RdfTextChunkRow>(sql).all(...params);\n const results = rows\n .map((row) => ({ row, score: occurrenceCount(row.normalized_text, query) }))\n .filter((result) => result.score > 0)\n .sort((left, right) => compareTextSearchHits(left, right, options.orderBy))\n .map((result) => this.toSearchResult(result.row, result.score));\n return results.slice(options.offset ?? 0, options.limit === undefined ? undefined : (options.offset ?? 0) + options.limit);\n }\n\n public estimateSearchCardinality(options: RdfTextSearchOptions): RdfSearchCardinalityEstimate {\n const query = normalizeText(options.query);\n if (!query) {\n return {\n rows: 0,\n source: 'text-normalized-scan',\n indexChoice: 'text-normalized-scan',\n };\n }\n\n const predicate = buildTextSearchPredicate(query);\n const params: unknown[] = [...predicate.params];\n const conditions = [predicate.sql];\n\n if (options.workspace) {\n conditions.push('source.workspace = ?');\n params.push(options.workspace);\n }\n if (options.source) {\n conditions.push('source.source = ?');\n params.push(options.source);\n }\n if (options.sourcePrefix) {\n conditions.push('source.source >= ? AND source.source < ?');\n params.push(options.sourcePrefix, `${options.sourcePrefix}\\uffff`);\n }\n\n const rows = this.requireDb().prepare<{ count: number }>(`\n SELECT COUNT(*) AS count\n FROM rdf_text_chunks chunk\n JOIN rdf_text_sources source ON source.id = chunk.source_id\n WHERE ${conditions.join(' AND ')}\n `).get(...params)?.count ?? 0;\n\n return {\n rows: applyResultWindow(rows, options.offset, options.limit),\n source: predicate.indexChoice,\n indexChoice: predicate.indexChoice,\n };\n }\n\n public stats(): RdfTextIndexStats {\n const db = this.requireDb();\n return {\n sourceCount: db.prepare<{ count: number }>('SELECT COUNT(*) AS count FROM rdf_text_sources').get()?.count ?? 0,\n chunkCount: db.prepare<{ count: number }>('SELECT COUNT(*) AS count FROM rdf_text_chunks').get()?.count ?? 0,\n databaseBytes: this.estimateDatabaseBytes(),\n termDocumentFrequency: this.termDocumentFrequency(),\n };\n }\n\n public termDocumentFrequency(limit = 100): RdfTextTermDocumentFrequency[] {\n const rows = this.requireDb().prepare<RdfTextTermFrequencyRow>(`\n SELECT\n term,\n COUNT(DISTINCT source_id) AS source_count,\n COUNT(*) AS chunk_count,\n COALESCE(SUM(occurrences), 0) AS total_occurrences\n FROM rdf_text_terms\n GROUP BY term\n ORDER BY source_count DESC, chunk_count DESC, total_occurrences DESC, term ASC\n LIMIT ?\n `).all(Math.max(0, limit));\n\n return rows\n .map((row) => ({\n term: row.term,\n sourceCount: row.source_count,\n chunkCount: row.chunk_count,\n totalOccurrences: row.total_occurrences,\n }));\n }\n\n private initializeSchema(): void {\n this.requireDb().exec(`\n CREATE TABLE IF NOT EXISTS rdf_text_sources (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n source TEXT NOT NULL UNIQUE,\n workspace TEXT NOT NULL,\n local_path TEXT,\n content_type TEXT,\n source_version TEXT,\n source_hash TEXT,\n updated_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now'))\n );\n\n CREATE TABLE IF NOT EXISTS rdf_text_chunks (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n source_id INTEGER NOT NULL,\n chunk_key TEXT NOT NULL,\n ordinal INTEGER NOT NULL,\n level INTEGER NOT NULL,\n heading TEXT,\n path TEXT,\n content TEXT NOT NULL,\n start_offset INTEGER NOT NULL,\n end_offset INTEGER NOT NULL,\n normalized_text TEXT NOT NULL,\n token_count INTEGER NOT NULL,\n updated_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now')),\n UNIQUE (source_id, chunk_key),\n FOREIGN KEY (source_id) REFERENCES rdf_text_sources(id)\n );\n\n CREATE TABLE IF NOT EXISTS rdf_text_terms (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n term TEXT NOT NULL CHECK (length(term) <= ${RDF_TEXT_TERM_MAX_INDEX_LENGTH}),\n source_id INTEGER NOT NULL,\n chunk_id INTEGER NOT NULL,\n occurrences INTEGER NOT NULL,\n updated_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now')),\n UNIQUE (term, chunk_id),\n FOREIGN KEY (source_id) REFERENCES rdf_text_sources(id),\n FOREIGN KEY (chunk_id) REFERENCES rdf_text_chunks(id)\n );\n\n CREATE INDEX IF NOT EXISTS rdf_text_sources_workspace ON rdf_text_sources(workspace);\n CREATE INDEX IF NOT EXISTS rdf_text_sources_source ON rdf_text_sources(source);\n CREATE INDEX IF NOT EXISTS rdf_text_chunks_source ON rdf_text_chunks(source_id, ordinal);\n DELETE FROM rdf_text_terms WHERE length(term) > ${RDF_TEXT_TERM_MAX_INDEX_LENGTH};\n CREATE INDEX IF NOT EXISTS rdf_text_terms_term ON rdf_text_terms(term);\n CREATE INDEX IF NOT EXISTS rdf_text_terms_source_term ON rdf_text_terms(source_id, term);\n CREATE INDEX IF NOT EXISTS rdf_text_terms_chunk ON rdf_text_terms(chunk_id);\n\n DROP INDEX IF EXISTS rdf_text_chunks_normalized;\n `);\n this.backfillTermPostings();\n }\n\n private backfillTermPostings(): void {\n const db = this.requireDb();\n const rows = db.prepare<{\n id: number;\n source_id: number;\n normalized_text: string;\n }>(`\n SELECT chunk.id, chunk.source_id, chunk.normalized_text\n FROM rdf_text_chunks chunk\n LEFT JOIN rdf_text_terms term ON term.chunk_id = chunk.id\n WHERE term.chunk_id IS NULL AND chunk.normalized_text <> ''\n `).all();\n if (rows.length === 0) {\n return;\n }\n\n const insertTerm = db.prepare(`\n INSERT INTO rdf_text_terms (\n term,\n source_id,\n chunk_id,\n occurrences,\n updated_at\n )\n VALUES (?, ?, ?, ?, strftime('%Y-%m-%dT%H:%M:%fZ', 'now'))\n `);\n db.transaction(() => {\n for (const row of rows) {\n insertTermOccurrences(insertTerm, row.source_id, row.id, row.normalized_text);\n }\n })();\n }\n\n private upsertSource(source: RdfTextSourceInput): number {\n const db = this.requireDb();\n db.prepare(`\n INSERT INTO rdf_text_sources (\n source,\n workspace,\n local_path,\n content_type,\n source_version,\n source_hash,\n updated_at\n )\n VALUES (?, ?, ?, ?, ?, ?, strftime('%Y-%m-%dT%H:%M:%fZ', 'now'))\n ON CONFLICT (source)\n DO UPDATE SET\n workspace = excluded.workspace,\n local_path = excluded.local_path,\n content_type = excluded.content_type,\n source_version = excluded.source_version,\n source_hash = excluded.source_hash,\n updated_at = excluded.updated_at\n `).run(\n source.source,\n source.workspace,\n source.localPath ?? null,\n source.contentType ?? null,\n source.sourceVersion ?? null,\n source.sourceHash ?? null,\n );\n\n const row = db.prepare<RdfTextSourceRow>('SELECT * FROM rdf_text_sources WHERE source = ?').get(source.source);\n if (!row) {\n throw new Error(`Failed to upsert RDF text source: ${source.source}`);\n }\n return row.id;\n }\n\n private chunkText(source: RdfTextSourceInput, text: string): RdfTextChunkInput[] {\n if (!text) {\n return [];\n }\n if (isMarkdownSource(source)) {\n const chunker = new HeadingChunker();\n return chunker.flatten(chunker.chunk(text))\n .filter((chunk) => chunk.content.trim().length > 0)\n .map((chunk, index) => ({\n chunkKey: deterministicChunkKey(source.source, index),\n ordinal: index,\n level: chunk.level,\n heading: chunk.heading || undefined,\n path: chunk.path,\n content: chunk.content,\n startOffset: chunk.startOffset,\n endOffset: chunk.endOffset,\n }));\n }\n\n return chunkPlainText(source.source, text);\n }\n\n private estimateDatabaseBytes(): number {\n const db = this.requireDb();\n try {\n const pageCount = db.prepare<{ page_count: number }>('PRAGMA page_count').get()?.page_count ?? 0;\n const pageSize = db.prepare<{ page_size: number }>('PRAGMA page_size').get()?.page_size ?? 0;\n return pageCount * pageSize;\n } catch {\n return 0;\n }\n }\n\n private toSearchResult(row: RdfTextChunkRow, score: number): RdfTextSearchResult {\n return {\n source: row.source,\n workspace: row.workspace,\n localPath: row.local_path ?? undefined,\n contentType: row.content_type ?? undefined,\n sourceVersion: row.source_version ?? undefined,\n sourceHash: row.source_hash ?? undefined,\n chunkKey: row.chunk_key,\n ordinal: row.ordinal,\n level: row.level,\n heading: row.heading ?? undefined,\n path: parsePath(row.path),\n content: row.content,\n startOffset: row.start_offset,\n endOffset: row.end_offset,\n score,\n };\n }\n\n private requireDb(): SqliteDatabase {\n if (!this.db) {\n throw new Error('RdfTextIndex is not open');\n }\n return this.db;\n }\n}\n\nfunction isMarkdownSource(source: RdfTextSourceInput): boolean {\n const contentType = source.contentType?.split(';', 1)[0]?.trim().toLowerCase();\n if (contentType === 'text/markdown' || contentType === 'text/x-markdown') {\n return true;\n }\n const path = source.localPath ?? source.source;\n return ['.md', '.markdown', '.mdown'].includes(extname(path).toLowerCase());\n}\n\nfunction chunkPlainText(source: string, text: string): RdfTextChunkInput[] {\n const chunks: RdfTextChunkInput[] = [];\n const paragraphPattern = /[^\\S\\r\\n]*(?:\\r?\\n){2,}[^\\S\\r\\n]*/g;\n let ordinal = 0;\n let start = 0;\n let match: RegExpExecArray | null;\n\n while ((match = paragraphPattern.exec(text)) !== null) {\n const end = match.index;\n ordinal = pushPlainChunk(chunks, source, ordinal, text, start, end);\n start = match.index + match[0].length;\n }\n\n pushPlainChunk(chunks, source, ordinal, text, start, text.length);\n if (chunks.length <= 1 && /\\r?\\n/.test(text)) {\n return chunkLines(source, text);\n }\n return chunks;\n}\n\nfunction chunkLines(source: string, text: string): RdfTextChunkInput[] {\n const chunks: RdfTextChunkInput[] = [];\n const lines = text.split(/\\r?\\n/);\n let offset = 0;\n let ordinal = 0;\n\n for (const line of lines) {\n const start = offset;\n const end = start + line.length;\n ordinal = pushPlainChunk(chunks, source, ordinal, text, start, end);\n offset = end + (text.slice(end, end + 2) === '\\r\\n' ? 2 : 1);\n }\n\n return chunks;\n}\n\nfunction pushPlainChunk(\n chunks: RdfTextChunkInput[],\n source: string,\n ordinal: number,\n text: string,\n start: number,\n end: number,\n): number {\n const content = text.slice(start, end).trim();\n if (!content) {\n return ordinal;\n }\n\n chunks.push({\n chunkKey: deterministicChunkKey(source, ordinal),\n ordinal,\n level: 0,\n path: [],\n content,\n startOffset: start,\n endOffset: end,\n });\n return ordinal + 1;\n}\n\nfunction deterministicChunkKey(source: string, ordinal: number): string {\n return createHash('sha256')\n .update(source)\n .update('\\0')\n .update(String(ordinal))\n .digest('hex')\n .slice(0, 24);\n}\n\nfunction sha256(value: string): string {\n return createHash('sha256').update(value).digest('hex');\n}\n\nfunction normalizeText(value: string): string {\n return value.toLowerCase().replace(/\\s+/g, ' ').trim();\n}\n\nfunction tokenCountNormalized(value: string): number {\n return tokenizeNormalizedText(value).length;\n}\n\nfunction tokenizeNormalizedText(value: string): string[] {\n return value ? value.split(' ').filter(Boolean) : [];\n}\n\nfunction insertTermOccurrences(\n insertTerm: SqliteStatement,\n sourceId: number,\n chunkId: number,\n normalizedText: string,\n): void {\n for (const [term, occurrences] of termOccurrences(normalizedText)) {\n if (term.length > RDF_TEXT_TERM_MAX_INDEX_LENGTH) {\n continue;\n }\n insertTerm.run(term, sourceId, chunkId, occurrences);\n }\n}\n\nfunction termOccurrences(normalizedText: string): Map<string, number> {\n const terms = new Map<string, number>();\n for (const term of tokenizeNormalizedText(normalizedText)) {\n terms.set(term, (terms.get(term) ?? 0) + 1);\n }\n return terms;\n}\n\nfunction buildTextSearchPredicate(query: string): TextSearchPredicate {\n const terms = [...new Set(tokenizeNormalizedText(query))]\n .filter((term) => term.length <= RDF_TEXT_TERM_MAX_INDEX_LENGTH);\n const phraseCondition = \"chunk.normalized_text LIKE ? ESCAPE '\\\\'\";\n const phrasePattern = `%${escapeLikePattern(query)}%`;\n if (terms.length === 0) {\n return {\n sql: phraseCondition,\n params: [phrasePattern],\n indexChoice: 'text-normalized-scan',\n };\n }\n\n return {\n sql: `\n chunk.id IN (\n SELECT candidate.chunk_id\n FROM (\n ${terms.map(() => `\n SELECT term.chunk_id, ? AS query_term\n FROM rdf_text_terms term\n WHERE term.term LIKE ? ESCAPE '\\\\'\n `).join(' UNION ALL ')}\n ) candidate\n GROUP BY candidate.chunk_id\n HAVING COUNT(DISTINCT candidate.query_term) = ?\n )\n AND ${phraseCondition}\n `,\n params: [\n ...terms.flatMap((term) => [term, `%${escapeLikePattern(term)}%`]),\n terms.length,\n phrasePattern,\n ],\n indexChoice: 'text-term-posting',\n };\n}\n\nfunction occurrenceCount(haystack: string, needle: string): number {\n if (!needle) {\n return 0;\n }\n\n let count = 0;\n let offset = 0;\n while (true) {\n const index = haystack.indexOf(needle, offset);\n if (index === -1) {\n break;\n }\n count++;\n offset = index + needle.length;\n }\n return count;\n}\n\nfunction applyResultWindow(rows: number, offset: number | undefined, limit: number | undefined): number {\n const start = Math.max(0, offset ?? 0);\n if (rows <= start) {\n return 0;\n }\n const remaining = rows - start;\n return limit === undefined ? remaining : Math.min(remaining, Math.max(0, limit));\n}\n\nfunction compareTextSearchHits(\n left: { row: RdfTextChunkRow; score: number },\n right: { row: RdfTextChunkRow; score: number },\n orderBy: RdfTextSearchOrder[] | undefined,\n): number {\n const order = orderBy?.length ? orderBy : [{ field: 'score' as const, direction: 'desc' as const }];\n for (const entry of order) {\n const direction = entry.direction === 'desc' ? -1 : 1;\n const comparison = compareTextSearchField(left, right, entry.field);\n if (comparison !== 0) {\n return comparison * direction;\n }\n }\n return left.row.source_id - right.row.source_id || left.row.ordinal - right.row.ordinal;\n}\n\nfunction compareTextSearchField(\n left: { row: RdfTextChunkRow; score: number },\n right: { row: RdfTextChunkRow; score: number },\n field: RdfTextSearchOrder['field'],\n): number {\n switch (field) {\n case 'score':\n return left.score - right.score;\n case 'source':\n return left.row.source.localeCompare(right.row.source);\n case 'localPath':\n return (left.row.local_path ?? '').localeCompare(right.row.local_path ?? '');\n case 'ordinal':\n return left.row.ordinal - right.row.ordinal;\n case 'startOffset':\n return left.row.start_offset - right.row.start_offset;\n case 'endOffset':\n return left.row.end_offset - right.row.end_offset;\n default: {\n const exhaustive: never = field;\n throw new Error(`Unsupported RDF text search order field: ${exhaustive}`);\n }\n }\n}\n\nfunction escapeLikePattern(value: string): string {\n return value.replace(/[\\\\%_]/g, (match) => `\\\\${match}`);\n}\n\nfunction parsePath(value: string | null): string[] {\n if (!value) {\n return [];\n }\n try {\n const parsed = JSON.parse(value);\n return Array.isArray(parsed) ? parsed.filter((item): item is string => typeof item === 'string') : [];\n } catch {\n return [];\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"RdfTextIndex.js","sourceRoot":"","sources":["../../../src/storage/rdf/RdfTextIndex.ts"],"names":[],"mappings":";;;AA26BA,gDAwBC;AA+GD,oEAOC;AAID,sCAEC;AA+BD,4CAEC;AAID,kEAEC;AAID,8DA2CC;AA0BD,wDAMC;AA0CD,wDAgBC;AAID,4DAOC;AAID,4DAcC;AAmED,wEAKC;AA2BD,4DAEC;AAID,4CAUC;AAID,sEAUC;AAED,wDAgBC;AAED,oDAkBC;AAn7CD,6CAAyC;AACzC,qCAAgD;AAChD,yCAA6C;AAC7C,kEAA+D;AAC/D,oDAAkG;AAoBlG,mEAAuE;AAiD1D,QAAA,8BAA8B,GAAG,GAAG,CAAC;AACrC,QAAA,uBAAuB,GAAG,CAAC,CAAC;AAEzC,MAAa,YAAY;IAIvB,YAAoC,OAA4B;QAA5B,YAAO,GAAP,OAAO,CAAqB;QAH/C,kBAAa,GAAG,IAAA,mCAAmB,GAAE,CAAC;QAC/C,OAAE,GAA0B,IAAI,CAAC;IAE0B,CAAC;IAE7D,IAAI;QACT,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;YACZ,OAAO;QACT,CAAC;QAED,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YACrC,MAAM,GAAG,GAAG,IAAA,mBAAO,EAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACvC,IAAI,CAAC,IAAA,oBAAU,EAAC,GAAG,CAAC,EAAE,CAAC;gBACrB,IAAA,mBAAS,EAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACtC,CAAC;QACH,CAAC;QAED,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC7D,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC1B,CAAC;IAEM,KAAK;QACV,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC;QACjB,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC;IACjB,CAAC;IAEM,KAAK;QACV,IAAI,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,4JAA4J,CAAC,CAAC;IACtL,CAAC;IAEM,aAAa;QAClB,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,EAAE;aACzB,OAAO,CAAoB,kEAAkE,CAAC;aAC9F,GAAG,EAAE,CAAC;QACT,OAAO,MAAM,CAAC,GAAG,EAAE,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC;IAEM,cAAc,CAAC,MAAc;QAClC,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,EAAE;aACzB,OAAO,CAAmB,iDAAiD,CAAC;aAC5E,GAAG,CAAC,MAAM,CAAC,CAAC;QACf,OAAO,GAAG,CAAC,CAAC,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACtD,CAAC;IAEM,mBAAmB,CAAC,KAAgC;QACzD,IAAI,CAAC,SAAS,EAAE,CAAC,OAAO,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;KAyBxB,CAAC,CAAC,GAAG,CACJ,KAAK,CAAC,MAAM,EACZ,KAAK,CAAC,SAAS,EACf,KAAK,CAAC,SAAS,IAAI,IAAI,EACvB,KAAK,CAAC,WAAW,IAAI,IAAI,EACzB,KAAK,CAAC,aAAa,IAAI,IAAI,EAC3B,KAAK,CAAC,UAAU,IAAI,IAAI,EACxB,KAAK,CAAC,MAAM,EACZ,KAAK,CAAC,MAAM,IAAI,IAAI,EACpB,KAAK,CAAC,OAAO,IAAI,IAAI,CACtB,CAAC;IACJ,CAAC;IAEM,aAAa,CAAC,MAAc;QACjC,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,EAAE;aACzB,OAAO,CAA0B,wDAAwD,CAAC;aAC1F,GAAG,CAAC,MAAM,CAAC,CAAC;QACf,OAAO,GAAG,CAAC,CAAC,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACrD,CAAC;IAEM,SAAS,CAAC,MAA0B,EAAE,IAAY,EAAE,MAA4B;QACrF,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAC5B,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC;QACrD,MAAM,UAAU,GAAG,sBAAsB,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;QAC7E,IAAI,UAAU,EAAE,CAAC;YACf,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACjC,IAAI,CAAC,mBAAmB,CAAC;gBACvB,GAAG,MAAM;gBACT,UAAU;gBACV,MAAM,EAAE,SAAS;gBACjB,MAAM,EAAE,UAAU,CAAC,MAAM;gBACzB,OAAO,EAAE,UAAU,CAAC,OAAO;aAC5B,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QACD,MAAM,QAAQ,GAAG,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,MAAM,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;QAC/G,MAAM,aAAa,GAAG,QAAQ,CAAC,MAAM,CAAC;QACtC,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC;YACjC,GAAG,MAAM;YACT,UAAU;SACX,CAAC,CAAC;QACH,MAAM,WAAW,GAAG,EAAE,CAAC,OAAO,CAAC;;;;;;;;;;;;;;;;;KAiB9B,CAAC,CAAC;QACH,MAAM,UAAU,GAAG,EAAE,CAAC,OAAO,CAAC;;;;;;;;;KAS7B,CAAC,CAAC;QACH,MAAM,YAAY,GAAG,EAAE,CAAC,OAAO,CAAC;;;;;;;;;;;;;;;KAe/B,CAAC,CAAC;QAEH,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE;YAClB,EAAE,CAAC,OAAO,CAAC,mDAAmD,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAC9E,EAAE,CAAC,OAAO,CAAC,gDAAgD,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAC3E,EAAE,CAAC,OAAO,CAAC,iDAAiD,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAC5E,KAAK,MAAM,KAAK,IAAI,aAAa,EAAE,CAAC;gBAClC,MAAM,cAAc,GAAG,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gBACpD,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,CAC5B,QAAQ,EACR,KAAK,CAAC,QAAQ,EACd,KAAK,CAAC,aAAa,IAAI,YAAY,EACnC,KAAK,CAAC,OAAO,EACb,KAAK,CAAC,KAAK,EACX,KAAK,CAAC,OAAO,IAAI,IAAI,EACrB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,EAChC,KAAK,CAAC,OAAO,EACb,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,SAAS,EACf,cAAc,EACd,oBAAoB,CAAC,cAAc,CAAC,CACrC,CAAC;gBACF,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;gBAC/C,qBAAqB,CAAC,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,cAAc,CAAC,CAAC;gBACrE,oBAAoB,CAAC,YAAY,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;YACxE,CAAC;QACH,CAAC,CAAC,EAAE,CAAC;QACL,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;YACpB,IAAI,CAAC,mBAAmB,CAAC;gBACvB,GAAG,MAAM;gBACT,UAAU;gBACV,MAAM,EAAE,QAAQ;gBAChB,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM;gBAC9B,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,OAAO;aACjC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAEM,UAAU,CAAC,SAAiB,EAAE,IAAwB;QAC3D,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAC5B,IAAI,YAAY,GAAG,CAAC,CAAC;QACrB,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE;YAClB,MAAM,MAAM,GAAG,EAAE,CAAC,OAAO,CAAmB,iDAAiD,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YAC9G,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,OAAO;YACT,CAAC;YAED,MAAM,UAAU,GAAG,EAAE;iBAClB,OAAO,CAAoB,mEAAmE,CAAC;iBAC/F,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,KAAK,IAAI,CAAC,CAAC;YAC9B,MAAM,SAAS,GAAG,EAAE,CAAC,OAAO,CAAmB,iDAAiD,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACnH,IAAI,SAAS,IAAI,SAAS,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,EAAE,CAAC;gBAC5C,EAAE,CAAC,OAAO,CAAC,mDAAmD,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;gBAClF,EAAE,CAAC,OAAO,CAAC,gDAAgD,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;gBAC/E,EAAE,CAAC,OAAO,CAAC,iDAAiD,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;gBAChF,EAAE,CAAC,OAAO,CAAC,2CAA2C,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;YAC5E,CAAC;YAED,EAAE,CAAC,OAAO,CAAC;;;;;;;;;;;;OAYV,CAAC,CAAC,GAAG,CACJ,IAAI,CAAC,SAAS,IAAI,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,MAAM,EACpD,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,SAAS,IAAI,IAAI,EACtB,IAAI,CAAC,WAAW,IAAI,IAAI,EACxB,IAAI,CAAC,aAAa,IAAI,IAAI,EAC1B,IAAI,CAAC,UAAU,IAAI,IAAI,EACvB,MAAM,CAAC,EAAE,CACV,CAAC;YACF,EAAE,CAAC,OAAO,CAAC;;;;;;;;;;;OAWV,CAAC,CAAC,GAAG,CACJ,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,SAAS,IAAI,IAAI,EACtB,IAAI,CAAC,WAAW,IAAI,IAAI,EACxB,IAAI,CAAC,aAAa,IAAI,IAAI,EAC1B,IAAI,CAAC,UAAU,IAAI,IAAI,EACvB,SAAS,CACV,CAAC;YACF,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;QACzC,CAAC,CAAC,EAAE,CAAC;QACL,OAAO,YAAY,CAAC;IACtB,CAAC;IAEM,YAAY,CAAC,MAAc;QAChC,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAC5B,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,CAAiB,kDAAkD,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACvG,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,OAAO,CAAC,CAAC;QACX,CAAC;QAED,OAAO,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE;YACzB,EAAE,CAAC,OAAO,CAAC,mDAAmD,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC5E,EAAE,CAAC,OAAO,CAAC,gDAAgD,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACzE,MAAM,aAAa,GAAG,EAAE,CAAC,OAAO,CAAC,iDAAiD,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC;YACxG,EAAE,CAAC,OAAO,CAAC,2CAA2C,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACpE,OAAO,aAAa,CAAC;QACvB,CAAC,CAAC,EAAE,CAAC;IACP,CAAC;IAEM,MAAM,CAAC,OAA6B;QACzC,MAAM,KAAK,GAAG,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC3C,MAAM,YAAY,GAAG,qBAAqB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC7D,IAAI,CAAC,KAAK,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxC,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACtE,MAAM,MAAM,GAAc,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACjE,MAAM,UAAU,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QAC3D,wBAAwB,CAAC,YAAY,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;QAE3D,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;YACtB,UAAU,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;YACxC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACjC,CAAC;QACD,IAAA,oDAA4B,EAAC,OAAO,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;QAE1D,MAAM,eAAe,GAAG,KAAK;YAC3B,CAAC,CAAC;;;;;;OAMD;YACD,CAAC,CAAC,GAAG,CAAC;QACR,MAAM,OAAO,GAAG,uBAAuB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACzD,MAAM,MAAM,GAAG,sBAAsB,CAAC,OAAO,CAAC,CAAC;QAC/C,MAAM,cAAc,GAAG,8BAA8B,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QAC9E,MAAM,GAAG,GAAG,cAAc,KAAK,SAAS;YACtC,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;YAuBI,eAAe;;;gBAGX,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC;mBACrB,OAAO;UAChB,MAAM,CAAC,GAAG;OACb;YACD,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;cAwBM,eAAe;;;kBAGX,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC;;;;;;;yBAOjB,6BAA6B,CAAC,OAAO,CAAC,OAAO,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mBA6BpD,6BAA6B,CAAC,OAAO,CAAC,OAAO,CAAC;UACvD,MAAM,CAAC,GAAG;OACb,CAAC;QAEJ,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,iBAAiB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACjF,MAAM,eAAe,GAAG,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC;QAC7E,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,OAAO,CAAmB,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,WAAW,EAAE,GAAG,MAAM,EAAE,GAAG,eAAe,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;QAClI,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;QACnE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IACnG,CAAC;IAEM,yBAAyB,CAAC,OAA6B;QAC5D,MAAM,KAAK,GAAG,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC3C,MAAM,YAAY,GAAG,qBAAqB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC7D,IAAI,CAAC,KAAK,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxC,OAAO;gBACL,IAAI,EAAE,CAAC;gBACP,MAAM,EAAE,sBAAsB;gBAC9B,WAAW,EAAE,sBAAsB;aACpC,CAAC;QACJ,CAAC;QAED,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACtE,MAAM,MAAM,GAAc,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACjE,MAAM,UAAU,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QAC3D,wBAAwB,CAAC,YAAY,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;QAE3D,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;YACtB,UAAU,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;YACxC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACjC,CAAC;QACD,IAAA,oDAA4B,EAAC,OAAO,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;QAE1D,MAAM,cAAc,GAAG,8BAA8B,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QAC9E,MAAM,IAAI,GAAG,cAAc,KAAK,SAAS;YACvC,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,OAAO,CAAoB;;;;gBAIpC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC;OACjC,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,EAAE,KAAK,IAAI,CAAC;YAC7B,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,OAAO,CAAoB;;;;;;kBAMlC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC;;;OAGnC,CAAC,CAAC,GAAG,CAAC,cAAc,EAAE,cAAc,EAAE,GAAG,MAAM,CAAC,EAAE,KAAK,IAAI,CAAC,CAAC;QAEhE,OAAO;YACL,IAAI,EAAE,iBAAiB,CAAC,IAAI,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC;YAC5D,MAAM,EAAE,SAAS,EAAE,WAAW,IAAI,mBAAmB;YACrD,WAAW,EAAE,SAAS,EAAE,WAAW,IAAI,qBAAqB;SAC7D,CAAC;IACJ,CAAC;IAEM,KAAK;QACV,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAC5B,OAAO;YACL,WAAW,EAAE,EAAE,CAAC,OAAO,CAAoB,gDAAgD,CAAC,CAAC,GAAG,EAAE,EAAE,KAAK,IAAI,CAAC;YAC9G,UAAU,EAAE,EAAE,CAAC,OAAO,CAAoB,+CAA+C,CAAC,CAAC,GAAG,EAAE,EAAE,KAAK,IAAI,CAAC;YAC5G,kBAAkB,EAAE,EAAE,CAAC,OAAO,CAAoB,iDAAiD,CAAC,CAAC,GAAG,EAAE,EAAE,KAAK,IAAI,CAAC;YACtH,aAAa,EAAE,IAAI,CAAC,qBAAqB,EAAE;YAC3C,qBAAqB,EAAE,IAAI,CAAC,qBAAqB,EAAE;SACpD,CAAC;IACJ,CAAC;IAEM,qBAAqB,CAAC,KAAK,GAAG,GAAG;QACtC,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,OAAO,CAA0B;;;;;;;;;;KAU9D,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;QAE3B,OAAO,IAAI;aACR,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YACb,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,WAAW,EAAE,GAAG,CAAC,YAAY;YAC7B,UAAU,EAAE,GAAG,CAAC,WAAW;YAC3B,gBAAgB,EAAE,GAAG,CAAC,iBAAiB;SACxC,CAAC,CAAC,CAAC;IACR,CAAC;IAEO,gBAAgB;QACtB,IAAI,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oDAoD0B,sCAA8B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wDAgC1B,sCAA8B;;;;;;;;;;;mCAWnD,+BAAuB;;KAErD,CAAC,CAAC;QACH,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC7B,IAAI,CAAC,2BAA2B,EAAE,CAAC;QACnC,IAAI,CAAC,6BAA6B,EAAE,CAAC;QACrC,IAAI,CAAC,oBAAoB,EAAE,CAAC;IAC9B,CAAC;IAEO,qBAAqB;QAC3B,MAAM,OAAO,GAAG,IAAI,GAAG,CACrB,IAAI,CAAC,SAAS,EAAE;aACb,OAAO,CAAmB,qCAAqC,CAAC;aAChE,GAAG,EAAE;aACL,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAChC,CAAC;QACF,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC;YAC/B,IAAI,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,0DAA0D,CAAC,CAAC;QACpF,CAAC;QACD,IAAI,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,2EAA2E,CAAC,CAAC;IACrG,CAAC;IAEO,2BAA2B;QACjC,MAAM,OAAO,GAAG,IAAI,GAAG,CACrB,IAAI,CAAC,SAAS,EAAE;aACb,OAAO,CAAmB,oCAAoC,CAAC;aAC/D,GAAG,EAAE;aACL,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAChC,CAAC;QACF,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,EAAE,CAAC;YACnC,IAAI,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,2FAA2F,CAAC,CAAC;QACrH,CAAC;IACH,CAAC;IAEO,6BAA6B;QACnC,MAAM,OAAO,GAAG,IAAI,GAAG,CACrB,IAAI,CAAC,SAAS,EAAE;aACb,OAAO,CAAmB,sCAAsC,CAAC;aACjE,GAAG,EAAE;aACL,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAChC,CAAC;QACF,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI;YACzB,CAAC,OAAO,EAAE,MAAM,CAAC;YACjB,CAAC,UAAU,EAAE,MAAM,CAAC;YACpB,CAAC,UAAU,EAAE,MAAM,CAAC;YACpB,CAAC,aAAa,EAAE,MAAM,CAAC;SACf,EAAE,CAAC;YACX,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBACvB,IAAI,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,4CAA4C,IAAI,IAAI,IAAI,GAAG,CAAC,CAAC;YACrF,CAAC;QACH,CAAC;IACH,CAAC;IAEO,oBAAoB;QAC1B,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAC5B,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAIpB;;;;;KAKF,CAAC,CAAC,GAAG,EAAE,CAAC;QACT,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtB,OAAO;QACT,CAAC;QAED,MAAM,UAAU,GAAG,EAAE,CAAC,OAAO,CAAC;;;;;;;;;KAS7B,CAAC,CAAC;QACH,MAAM,YAAY,GAAG,EAAE,CAAC,OAAO,CAAC;;;;;;;;;;;;;;;KAe/B,CAAC,CAAC;QACH,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE;YAClB,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;gBACvB,qBAAqB,CAAC,UAAU,EAAE,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,eAAe,CAAC,CAAC;YAChF,CAAC;QACH,CAAC,CAAC,EAAE,CAAC;IACP,CAAC;IAEO,YAAY,CAAC,MAA0B;QAC7C,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAC5B,EAAE,CAAC,OAAO,CAAC;;;;;;;;;;;;;;;;;;;;;KAqBV,CAAC,CAAC,GAAG,CACJ,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,MAAM,EACjC,MAAM,CAAC,MAAM,EACb,MAAM,CAAC,SAAS,EAChB,MAAM,CAAC,SAAS,IAAI,IAAI,EACxB,MAAM,CAAC,WAAW,IAAI,IAAI,EAC1B,MAAM,CAAC,aAAa,IAAI,IAAI,EAC5B,MAAM,CAAC,UAAU,IAAI,IAAI,CAC1B,CAAC;QAEF,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,CAAmB,iDAAiD,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC/G,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,MAAM,IAAI,KAAK,CAAC,qCAAqC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;QACxE,CAAC;QACD,OAAO,GAAG,CAAC,EAAE,CAAC;IAChB,CAAC;IAEO,SAAS,CAAC,MAA0B,EAAE,IAAY;QACxD,OAAO,kBAAkB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC1C,CAAC;IAEO,qBAAqB;QAC3B,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAC5B,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,EAAE,CAAC,OAAO,CAAyB,mBAAmB,CAAC,CAAC,GAAG,EAAE,EAAE,UAAU,IAAI,CAAC,CAAC;YACjG,MAAM,QAAQ,GAAG,EAAE,CAAC,OAAO,CAAwB,kBAAkB,CAAC,CAAC,GAAG,EAAE,EAAE,SAAS,IAAI,CAAC,CAAC;YAC7F,OAAO,SAAS,GAAG,QAAQ,CAAC;QAC9B,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,CAAC,CAAC;QACX,CAAC;IACH,CAAC;IAEO,cAAc,CACpB,GAAoB,EACpB,eAAuB,EACvB,KAAa,EACb,QAAgC;QAEhC,OAAO;YACL,MAAM,EAAE,GAAG,CAAC,MAAM;YAClB,SAAS,EAAE,GAAG,CAAC,SAAS;YACxB,SAAS,EAAE,GAAG,CAAC,UAAU,IAAI,SAAS;YACtC,WAAW,EAAE,GAAG,CAAC,YAAY,IAAI,SAAS;YAC1C,aAAa,EAAE,GAAG,CAAC,cAAc,IAAI,SAAS;YAC9C,UAAU,EAAE,GAAG,CAAC,WAAW,IAAI,SAAS;YACxC,SAAS,EAAE,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,MAAM;YACvC,QAAQ,EAAE,GAAG,CAAC,SAAS;YACvB,iBAAiB,EAAE,GAAG,CAAC,SAAS;YAChC,aAAa,EAAE,6BAA6B,CAAC,GAAG,CAAC,cAAc,CAAC;YAChE,OAAO,EAAE,GAAG,CAAC,OAAO;YACpB,KAAK,EAAE,GAAG,CAAC,KAAK;YAChB,OAAO,EAAE,GAAG,CAAC,OAAO,IAAI,SAAS;YACjC,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;YACzB,OAAO,EAAE,GAAG,CAAC,OAAO;YACpB,WAAW,EAAE,GAAG,CAAC,YAAY;YAC7B,SAAS,EAAE,GAAG,CAAC,UAAU;YACzB,eAAe,EAAE,mBAAmB,CAAC,GAAG,EAAE,eAAe,EAAE,KAAK,CAAC;YACjE,KAAK;YACL,QAAQ;SACT,CAAC;IACJ,CAAC;IAEO,iBAAiB,CAAC,QAAkB;QAC1C,MAAM,SAAS,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;QACzC,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAkC,CAAC;QAC3D,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3B,OAAO,QAAQ,CAAC;QAClB,CAAC;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,OAAO,CAAmB;;;2BAGjC,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;;KAEzD,CAAC,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,CAAC;QACrB,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,MAAM,OAAO,GAAG,GAAG,CAAC,QAAQ,CAAC;YAC7B,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;gBAC1B,SAAS;YACX,CAAC;YACD,MAAM,aAAa,GAAG,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YAClD,aAAa,CAAC,IAAI,CAAC;gBACjB,MAAM,EAAE,GAAG,CAAC,MAAM;gBAClB,SAAS,EAAE,GAAG,CAAC,SAAS,IAAI,SAAS;gBACrC,KAAK,EAAE,GAAG,CAAC,KAAK,IAAI,SAAS;gBAC7B,KAAK,EAAE,GAAG,CAAC,KAAK,IAAI,SAAS;gBAC7B,QAAQ,EAAE,GAAG,CAAC,QAAQ,IAAI,SAAS;gBACnC,QAAQ,EAAE,GAAG,CAAC,QAAQ,IAAI,SAAS;gBACnC,UAAU,EAAE,GAAG,CAAC,WAAW,IAAI,SAAS;gBACxC,WAAW,EAAE,GAAG,CAAC,WAAW;aAC7B,CAAC,CAAC;YACH,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;QACvC,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAEO,gBAAgB,CAAC,OAAe;QACtC,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,OAAO,CAAmB;;;;;KAKvD,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAChB,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YACxB,MAAM,EAAE,GAAG,CAAC,MAAM;YAClB,SAAS,EAAE,GAAG,CAAC,SAAS,IAAI,SAAS;YACrC,KAAK,EAAE,GAAG,CAAC,KAAK,IAAI,SAAS;YAC7B,KAAK,EAAE,GAAG,CAAC,KAAK,IAAI,SAAS;YAC7B,QAAQ,EAAE,GAAG,CAAC,QAAQ,IAAI,SAAS;YACnC,QAAQ,EAAE,GAAG,CAAC,QAAQ,IAAI,SAAS;YACnC,UAAU,EAAE,GAAG,CAAC,WAAW,IAAI,SAAS;YACxC,WAAW,EAAE,GAAG,CAAC,WAAW;SAC7B,CAAC,CAAC,CAAC;IACN,CAAC;IAEO,SAAS;QACf,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;QAC9C,CAAC;QACD,OAAO,IAAI,CAAC,EAAE,CAAC;IACjB,CAAC;CACF;AAj0BD,oCAi0BC;AAED,SAAS,qBAAqB,CAAC,GAAqB;IAClD,OAAO;QACL,SAAS,EAAE,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,MAAM;QACvC,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,SAAS,EAAE,GAAG,CAAC,SAAS;QACxB,SAAS,EAAE,GAAG,CAAC,UAAU,IAAI,SAAS;QACtC,WAAW,EAAE,GAAG,CAAC,YAAY,IAAI,SAAS;QAC1C,aAAa,EAAE,GAAG,CAAC,cAAc,IAAI,SAAS;QAC9C,UAAU,EAAE,GAAG,CAAC,WAAW,IAAI,SAAS;QACxC,SAAS,EAAE,GAAG,CAAC,UAAU;KAC1B,CAAC;AACJ,CAAC;AAED,SAAS,oBAAoB,CAAC,GAA4B;IACxD,OAAO;QACL,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,SAAS,EAAE,GAAG,CAAC,SAAS;QACxB,SAAS,EAAE,GAAG,CAAC,UAAU,IAAI,SAAS;QACtC,WAAW,EAAE,GAAG,CAAC,YAAY,IAAI,SAAS;QAC1C,aAAa,EAAE,GAAG,CAAC,cAAc,IAAI,SAAS;QAC9C,UAAU,EAAE,GAAG,CAAC,WAAW,IAAI,SAAS;QACxC,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,MAAM,EAAE,GAAG,CAAC,MAAM,IAAI,SAAS;QAC/B,OAAO,EAAE,GAAG,CAAC,OAAO,IAAI,SAAS;QACjC,SAAS,EAAE,GAAG,CAAC,UAAU;KAC1B,CAAC;AACJ,CAAC;AAED,SAAgB,kBAAkB,CAAC,MAA0B,EAAE,IAAY;IACzE,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,IAAI,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3B,OAAO,eAAe,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACvC,CAAC;IACD,IAAI,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC;QAC7B,MAAM,OAAO,GAAG,IAAI,+BAAc,EAAE,CAAC;QACrC,OAAO,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;aACxC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;aAClD,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;YACtB,QAAQ,EAAE,qBAAqB,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC;YACrD,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,SAAS;YACnC,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,WAAW,EAAE,KAAK,CAAC,WAAW;YAC9B,SAAS,EAAE,KAAK,CAAC,SAAS;SAC3B,CAAC,CAAC,CAAC;IACR,CAAC;IAED,OAAO,cAAc,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AAC7C,CAAC;AAED,SAAS,cAAc,CAAC,MAA0B;IAChD,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC/E,OAAO,WAAW,KAAK,iBAAiB;QACtC,MAAM,CAAC,SAAS,EAAE,QAAQ,CAAC,GAAG,CAAC,KAAK,IAAI;QACxC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AAChC,CAAC;AAED,SAAS,eAAe,CAAC,MAA0B,EAAE,IAAY;IAC/D,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAC5B,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,MAAM,IAAI,GAAG,eAAe,CAAC,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC;IAChE,OAAO,CAAC;YACN,QAAQ,EAAE,qBAAqB,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;YACjD,aAAa,EAAE,aAAa;YAC5B,OAAO,EAAE,CAAC;YACV,KAAK,EAAE,CAAC;YACR,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;YAC9B,IAAI;YACJ,OAAO;YACP,WAAW,EAAE,CAAC;YACd,SAAS,EAAE,IAAI,CAAC,MAAM;SACvB,CAAC,CAAC;AACL,CAAC;AAED,SAAS,gBAAgB,CAAC,MAA0B;IAClD,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC/E,IAAI,WAAW,KAAK,eAAe,IAAI,WAAW,KAAK,iBAAiB,EAAE,CAAC;QACzE,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,IAAI,GAAG,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,MAAM,CAAC;IAC/C,OAAO,CAAC,KAAK,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,IAAA,mBAAO,EAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;AAC9E,CAAC;AAED,SAAS,eAAe,CAAC,KAAa;IACpC,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IACpE,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AACpE,CAAC;AAED,SAAS,eAAe,CAAC,KAAa;IACpC,IAAI,CAAC;QACH,OAAO,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC;IACjC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,SAAS,cAAc,CAAC,MAAc,EAAE,IAAY;IAClD,MAAM,MAAM,GAAwB,EAAE,CAAC;IACvC,MAAM,gBAAgB,GAAG,oCAAoC,CAAC;IAC9D,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,KAA6B,CAAC;IAElC,OAAO,CAAC,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QACtD,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC;QACxB,OAAO,GAAG,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;QACpE,KAAK,GAAG,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IACxC,CAAC;IAED,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IAClE,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC7C,OAAO,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAClC,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,UAAU,CAAC,MAAc,EAAE,IAAY;IAC9C,MAAM,MAAM,GAAwB,EAAE,CAAC;IACvC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAClC,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,IAAI,OAAO,GAAG,CAAC,CAAC;IAEhB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,KAAK,GAAG,MAAM,CAAC;QACrB,MAAM,GAAG,GAAG,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC;QAChC,OAAO,GAAG,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;QACpE,MAAM,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/D,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,cAAc,CACrB,MAA2B,EAC3B,MAAc,EACd,OAAe,EACf,IAAY,EACZ,KAAa,EACb,GAAW;IAEX,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IAC9C,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,MAAM,CAAC,IAAI,CAAC;QACV,QAAQ,EAAE,qBAAqB,CAAC,MAAM,EAAE,OAAO,CAAC;QAChD,OAAO;QACP,KAAK,EAAE,CAAC;QACR,IAAI,EAAE,EAAE;QACR,OAAO;QACP,WAAW,EAAE,KAAK;QAClB,SAAS,EAAE,GAAG;KACf,CAAC,CAAC;IACH,OAAO,OAAO,GAAG,CAAC,CAAC;AACrB,CAAC;AAED,SAAgB,4BAA4B,CAAC,MAAc,EAAE,OAAe;IAC1E,OAAO,IAAA,wBAAU,EAAC,QAAQ,CAAC;SACxB,MAAM,CAAC,MAAM,CAAC;SACd,MAAM,CAAC,IAAI,CAAC;SACZ,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;SACvB,MAAM,CAAC,KAAK,CAAC;SACb,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAClB,CAAC;AAED,MAAM,qBAAqB,GAAG,4BAA4B,CAAC;AAE3D,SAAgB,aAAa,CAAC,KAAa;IACzC,OAAO,IAAA,wBAAU,EAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC1D,CAAC;AAED,MAAM,MAAM,GAAG,aAAa,CAAC;AAE7B,SAAS,mBAAmB,CAC1B,GAAyD,EACzD,eAAuB,EACvB,KAAa;IAEb,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,OAAO;YACL,UAAU,EAAE,MAAM;YAClB,SAAS,EAAE,0BAA0B;YACrC,eAAe;YACf,eAAe,EAAE,CAAC;YAClB,YAAY,EAAE,CAAC;YACf,KAAK;SACN,CAAC;IACJ,CAAC;IACD,MAAM,eAAe,GAAG,eAAe,CAAC,GAAG,CAAC,eAAe,EAAE,eAAe,CAAC,CAAC;IAC9E,MAAM,YAAY,GAAG,aAAa,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1F,OAAO;QACL,UAAU,EAAE,MAAM;QAClB,SAAS,EAAE,0BAA0B;QACrC,eAAe;QACf,eAAe;QACf,YAAY;QACZ,KAAK;KACN,CAAC;AACJ,CAAC;AAED,SAAgB,gBAAgB,CAAC,KAAa;IAC5C,OAAO,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;AAC3E,CAAC;AAED,MAAM,aAAa,GAAG,gBAAgB,CAAC;AAEvC,SAAgB,2BAA2B,CAAC,KAAa;IACvD,OAAO,sBAAsB,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC;AAC9C,CAAC;AAED,MAAM,oBAAoB,GAAG,2BAA2B,CAAC;AAEzD,SAAgB,yBAAyB,CAAC,KAAa;IACrD,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,IAAI,GAAG,EAAE,CAAC;IACd,IAAI,GAAG,GAAG,EAAE,CAAC;IAEb,MAAM,SAAS,GAAG,GAAS,EAAE;QAC3B,IAAI,IAAI,EAAE,CAAC;YACT,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACjB,IAAI,GAAG,EAAE,CAAC;QACZ,CAAC;IACH,CAAC,CAAC;IACF,MAAM,QAAQ,GAAG,GAAS,EAAE;QAC1B,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,OAAO;QACT,CAAC;QACD,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC9B,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACvB,CAAC;aAAM,CAAC;YACN,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;gBACzD,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;YACnD,CAAC;QACH,CAAC;QACD,GAAG,GAAG,EAAE,CAAC;IACX,CAAC,CAAC;IAEF,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACrC,IAAI,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC;YACxB,SAAS,EAAE,CAAC;YACZ,GAAG,IAAI,IAAI,CAAC;YACZ,SAAS;QACX,CAAC;QACD,IAAI,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC;YAC7B,QAAQ,EAAE,CAAC;YACX,IAAI,IAAI,IAAI,CAAC;YACb,SAAS;QACX,CAAC;QACD,SAAS,EAAE,CAAC;QACZ,QAAQ,EAAE,CAAC;IACb,CAAC;IACD,SAAS,EAAE,CAAC;IACZ,QAAQ,EAAE,CAAC;IACX,OAAO,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAC/B,CAAC;AAED,MAAM,sBAAsB,GAAG,yBAAyB,CAAC;AAEzD,SAAS,aAAa,CAAC,IAAY;IACjC,OAAO,2EAA2E,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAChG,CAAC;AAED,SAAS,kBAAkB,CAAC,IAAY;IACtC,OAAO,iCAAiC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACtD,CAAC;AAED,SAAS,qBAAqB,CAC5B,UAA2B,EAC3B,QAAgB,EAChB,OAAe,EACf,cAAsB;IAEtB,KAAK,MAAM,CAAC,IAAI,EAAE,WAAW,CAAC,IAAI,eAAe,CAAC,cAAc,CAAC,EAAE,CAAC;QAClE,IAAI,IAAI,CAAC,MAAM,GAAG,sCAA8B,EAAE,CAAC;YACjD,SAAS;QACX,CAAC;QACD,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;IACvD,CAAC;AACH,CAAC;AAED,SAAgB,sBAAsB,CAAC,cAAsB;IAC3D,MAAM,KAAK,GAAG,IAAI,GAAG,EAAkB,CAAC;IACxC,KAAK,MAAM,IAAI,IAAI,sBAAsB,CAAC,cAAc,CAAC,EAAE,CAAC;QAC1D,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9C,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,eAAe,GAAG,sBAAsB,CAAC;AAE/C,SAAS,wBAAwB,CAAC,KAAa;IAC7C,MAAM,KAAK,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC,CAAC;SACtD,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,IAAI,sCAA8B,CAAC,CAAC;IACnE,MAAM,eAAe,GAAG,0CAA0C,CAAC;IACnE,MAAM,aAAa,GAAG,IAAI,iBAAiB,CAAC,KAAK,CAAC,GAAG,CAAC;IACtD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO;YACL,GAAG,EAAE,eAAe;YACpB,MAAM,EAAE,CAAC,aAAa,CAAC;YACvB,WAAW,EAAE,sBAAsB;SACpC,CAAC;IACJ,CAAC;IAED,OAAO;QACL,GAAG,EAAE;;;;YAIG,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;;;;WAIjB,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC;;;;;YAKpB,eAAe;KACtB;QACD,MAAM,EAAE;YACN,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACxC,KAAK,CAAC,MAAM;YACZ,aAAa;SACd;QACD,WAAW,EAAE,mBAAmB;KACjC,CAAC;AACJ,CAAC;AAED,SAAgB,sBAAsB,CAAC,QAAgB,EAAE,MAAc;IACrE,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,CAAC,CAAC;IACX,CAAC;IAED,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,OAAO,IAAI,EAAE,CAAC;QACZ,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC/C,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;YACjB,MAAM;QACR,CAAC;QACD,KAAK,EAAE,CAAC;QACR,MAAM,GAAG,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC;IACjC,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,eAAe,GAAG,sBAAsB,CAAC;AAE/C,SAAgB,wBAAwB,CAAC,IAAY,EAAE,MAA0B,EAAE,KAAyB;IAC1G,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,IAAI,CAAC,CAAC,CAAC;IACvC,IAAI,IAAI,IAAI,KAAK,EAAE,CAAC;QAClB,OAAO,CAAC,CAAC;IACX,CAAC;IACD,MAAM,SAAS,GAAG,IAAI,GAAG,KAAK,CAAC;IAC/B,OAAO,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;AACnF,CAAC;AAED,MAAM,iBAAiB,GAAG,wBAAwB,CAAC;AAEnD,SAAgB,wBAAwB,CACtC,IAA6C,EAC7C,KAA8C,EAC9C,OAAyC;IAEzC,MAAM,KAAK,GAAG,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAgB,EAAE,SAAS,EAAE,MAAe,EAAE,CAAC,CAAC;IACpG,KAAK,MAAM,KAAK,IAAI,KAAK,EAAE,CAAC;QAC1B,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACtD,MAAM,UAAU,GAAG,sBAAsB,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;QACpE,IAAI,UAAU,KAAK,CAAC,EAAE,CAAC;YACrB,OAAO,UAAU,GAAG,SAAS,CAAC;QAChC,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,SAAS,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC;AAC1F,CAAC;AAED,MAAM,qBAAqB,GAAG,wBAAwB,CAAC;AAEvD,SAAS,uBAAuB,CAAC,OAAyC;IACxE,MAAM,KAAK,GAAG,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAgB,EAAE,SAAS,EAAE,MAAe,EAAE,CAAC,CAAC;IACpG,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,0BAA0B,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,SAAS,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACtI,CAAC;AAED,SAAS,0BAA0B,CAAC,KAAkC;IACpE,QAAQ,KAAK,EAAE,CAAC;QACd,KAAK,OAAO;YACV,OAAO,OAAO,CAAC;QACjB,KAAK,QAAQ;YACX,OAAO,eAAe,CAAC;QACzB,KAAK,WAAW;YACd,OAAO,mCAAmC,CAAC;QAC7C,KAAK,SAAS;YACZ,OAAO,eAAe,CAAC;QACzB,KAAK,aAAa;YAChB,OAAO,oBAAoB,CAAC;QAC9B,KAAK,WAAW;YACd,OAAO,kBAAkB,CAAC;QAC5B,OAAO,CAAC,CAAC,CAAC;YACR,MAAM,UAAU,GAAU,KAAK,CAAC;YAChC,MAAM,IAAI,KAAK,CAAC,4CAA4C,UAAU,EAAE,CAAC,CAAC;QAC5E,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,6BAA6B,CAAC,OAAyC;IAC9E,MAAM,KAAK,GAAG,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAgB,EAAE,SAAS,EAAE,MAAe,EAAE,CAAC,CAAC;IACpG,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,gCAAgC,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,SAAS,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC5I,CAAC;AAED,SAAS,gCAAgC,CAAC,KAAkC;IAC1E,QAAQ,KAAK,EAAE,CAAC;QACd,KAAK,OAAO;YACV,OAAO,OAAO,CAAC;QACjB,KAAK,QAAQ;YACX,OAAO,QAAQ,CAAC;QAClB,KAAK,WAAW;YACd,OAAO,4BAA4B,CAAC;QACtC,KAAK,SAAS;YACZ,OAAO,SAAS,CAAC;QACnB,KAAK,aAAa;YAChB,OAAO,cAAc,CAAC;QACxB,KAAK,WAAW;YACd,OAAO,YAAY,CAAC;QACtB,OAAO,CAAC,CAAC,CAAC;YACR,MAAM,UAAU,GAAU,KAAK,CAAC;YAChC,MAAM,IAAI,KAAK,CAAC,4CAA4C,UAAU,EAAE,CAAC,CAAC;QAC5E,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,sBAAsB,CAAC,OAA6B;IAC3D,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;IAChD,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QAChC,OAAO,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,mBAAmB,EAAE,MAAM,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;IAC/F,CAAC;IACD,OAAO;QACL,GAAG,EAAE,kBAAkB;QACvB,MAAM,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;KAC7C,CAAC;AACJ,CAAC;AAED,SAAgB,8BAA8B,CAAC,KAAyB;IACtE,IAAI,KAAK,KAAK,SAAS,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACnD,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;AACxC,CAAC;AAED,SAAS,sBAAsB,CAC7B,IAA6C,EAC7C,KAA8C,EAC9C,KAAkC;IAElC,QAAQ,KAAK,EAAE,CAAC;QACd,KAAK,OAAO;YACV,OAAO,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;QAClC,KAAK,QAAQ;YACX,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACzD,KAAK,WAAW;YACd,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC;QAC/E,KAAK,SAAS;YACZ,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC;QAC9C,KAAK,aAAa;YAChB,OAAO,IAAI,CAAC,GAAG,CAAC,YAAY,GAAG,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC;QACxD,KAAK,WAAW;YACd,OAAO,IAAI,CAAC,GAAG,CAAC,UAAU,GAAG,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC;QACpD,OAAO,CAAC,CAAC,CAAC;YACR,MAAM,UAAU,GAAU,KAAK,CAAC;YAChC,MAAM,IAAI,KAAK,CAAC,4CAA4C,UAAU,EAAE,CAAC,CAAC;QAC5E,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAgB,wBAAwB,CAAC,KAAa;IACpD,OAAO,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,EAAE,CAAC,CAAC;AAC3D,CAAC;AAED,MAAM,iBAAiB,GAAG,wBAAwB,CAAC;AAEnD,SAAgB,gBAAgB,CAAC,KAAoB;IACnD,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACjC,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAkB,EAAE,CAAC,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACxG,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,MAAM,SAAS,GAAG,gBAAgB,CAAC;AAEnC,SAAgB,6BAA6B,CAAC,KAAgC;IAC5E,QAAQ,KAAK,EAAE,CAAC;QACd,KAAK,aAAa,CAAC;QACnB,KAAK,aAAa,CAAC;QACnB,KAAK,aAAa,CAAC;QACnB,KAAK,YAAY;YACf,OAAO,KAAK,CAAC;QACf;YACE,OAAO,YAAY,CAAC;IACxB,CAAC;AACH,CAAC;AAED,SAAgB,sBAAsB,CACpC,cAAkC,EAClC,IAAY;IAEZ,IAAI,cAAc,KAAK,SAAS,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;QACrE,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC;IACzD,MAAM,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IAC5C,IAAI,WAAW,IAAI,QAAQ,EAAE,CAAC;QAC5B,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO;QACL,MAAM,EAAE,gBAAgB;QACxB,OAAO,EAAE,kBAAkB,WAAW,6BAA6B,QAAQ,EAAE;KAC9E,CAAC;AACJ,CAAC;AAED,SAAgB,oBAAoB,CAClC,kBAAsC,EACtC,MAA2B;IAE3B,IAAI,kBAAkB,KAAK,SAAS,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC;QAC7E,OAAO,EAAE,MAAM,EAAE,CAAC;IACpB,CAAC;IACD,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC;IAC9D,IAAI,MAAM,CAAC,MAAM,IAAI,SAAS,EAAE,CAAC;QAC/B,OAAO,EAAE,MAAM,EAAE,CAAC;IACpB,CAAC;IACD,OAAO;QACL,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC;QAClC,MAAM,EAAE;YACN,MAAM,EAAE,oBAAoB;YAC5B,OAAO,EAAE,mBAAmB,MAAM,CAAC,MAAM,kCAAkC,SAAS,EAAE;SACvF;KACF,CAAC;AACJ,CAAC;AAED,SAAS,wBAAwB,CAAC,QAAkB,EAAE,UAAoB,EAAE,MAAiB;IAC3F,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO;IACT,CAAC;IACD,UAAU,CAAC,IAAI,CAAC;;;;gCAIc,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;;;;GAI/D,CAAC,CAAC;IACH,MAAM,CAAC,IAAI,CAAC,GAAG,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;AAC5C,CAAC;AAED,SAAS,oBAAoB,CAC3B,YAA6B,EAC7B,QAAgB,EAChB,OAAe,EACf,QAAmD;IAEnD,KAAK,MAAM,MAAM,IAAI,uBAAuB,CAAC,QAAQ,CAAC,EAAE,CAAC;QACvD,YAAY,CAAC,GAAG,CACd,MAAM,CAAC,MAAM,EACb,QAAQ,EACR,OAAO,EACP,MAAM,CAAC,SAAS,IAAI,IAAI,EACxB,MAAM,CAAC,KAAK,IAAI,IAAI,EACpB,MAAM,CAAC,KAAK,IAAI,IAAI,EACpB,MAAM,CAAC,QAAQ,IAAI,IAAI,EACvB,MAAM,CAAC,QAAQ,IAAI,IAAI,EACvB,MAAM,CAAC,UAAU,IAAI,IAAI,EACzB,MAAM,CAAC,WAAW,CACnB,CAAC;IACJ,CAAC;AACH,CAAC;AAED,SAAS,qBAAqB,CAAC,QAA8B;IAC3D,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AAC9F,CAAC;AAED,SAAS,uBAAuB,CAAC,QAAmD;IAClF,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAgC,CAAC;IACzD,KAAK,MAAM,MAAM,IAAI,QAAQ,IAAI,EAAE,EAAE,CAAC;QACpC,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QACjC,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,SAAS;QACX,CAAC;QACD,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,SAAS,CAAC;QACxD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,SAAS,CAAC;QAChD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;QAC3B,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,SAAS,CAAC;QACtD,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,SAAS,CAAC;QACtD,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,EAAE,IAAI,EAAE,IAAI,SAAS,CAAC;QAC1D,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,EAAE,SAAS,IAAI,EAAE,EAAE,KAAK,IAAI,EAAE,EAAE,KAAK,IAAI,EAAE,EAAE,QAAQ,IAAI,EAAE,EAAE,QAAQ,IAAI,EAAE,EAAE,UAAU,IAAI,EAAE,CAAC,CAAC,CAAC;QAC/H,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACnC,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,IAAI,CAAC,CAAC,CAAC,CAAC;QACrE,IAAI,QAAQ,EAAE,CAAC;YACb,QAAQ,CAAC,WAAW,IAAI,WAAW,CAAC;QACtC,CAAC;aAAM,CAAC;YACN,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,CAAC,CAAC;QAC3G,CAAC;IACH,CAAC;IACD,OAAO,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,SAAS,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC;AACrN,CAAC","sourcesContent":["import { createHash } from 'node:crypto';\nimport { existsSync, mkdirSync } from 'node:fs';\nimport { dirname, extname } from 'node:path';\nimport { HeadingChunker } from '../../document/HeadingChunker';\nimport { createSqliteRuntime, type SqliteDatabase, type SqliteStatement } from '../SqliteRuntime';\nimport type {\n RdfTextChunkInput,\n RdfTextChunkRow,\n RdfTextEntityMention,\n RdfTextIndexOptions,\n RdfTextIndexSyncLike,\n RdfTextRebuildStatus,\n RdfTextRebuildStatusInput,\n RdfTextSearchOrder,\n RdfTextIndexStats,\n RdfSearchCardinalityEstimate,\n RdfTextSearchOptions,\n RdfTextSearchResult,\n RdfTextScoreComponents,\n RdfTextSourceMetadata,\n RdfTextSourceInput,\n RdfTextTermDocumentFrequency,\n RdfTextRetrievalKind,\n} from './types';\nimport { appendRdfSearchSourceFilters } from './RdfSearchSourceFilter';\n\ninterface RdfTextSourceRow {\n id: number;\n source_key: string | null;\n source: string;\n workspace: string;\n local_path: string | null;\n content_type: string | null;\n source_version: string | null;\n source_hash: string | null;\n updated_at: string;\n}\n\ninterface RdfTextRebuildStatusRow extends RdfTextSourceRow {\n status: RdfTextRebuildStatus['status'];\n reason: string | null;\n message: string | null;\n}\n\ninterface RdfTextTermFrequencyRow {\n term: string;\n source_count: number;\n chunk_count: number;\n total_occurrences: number;\n}\n\ninterface RdfTextEntityRow {\n chunk_id?: number;\n entity: string;\n predicate: string | null;\n label: string | null;\n value: string | null;\n datatype: string | null;\n language: string | null;\n policy_role: string | null;\n occurrences: number;\n}\n\ninterface RdfTextSearchRow extends RdfTextChunkRow {\n score: number;\n}\n\ninterface TextSearchPredicate {\n sql: string;\n params: unknown[];\n indexChoice: 'text-normalized-scan' | 'text-term-posting';\n}\n\nexport const RDF_TEXT_TERM_MAX_INDEX_LENGTH = 256;\nexport const RDF_TEXT_SCHEMA_VERSION = 2;\n\nexport class RdfTextIndex implements RdfTextIndexSyncLike {\n private readonly sqliteRuntime = createSqliteRuntime();\n private db: SqliteDatabase | null = null;\n\n public constructor(private readonly options: RdfTextIndexOptions) {}\n\n public open(): void {\n if (this.db) {\n return;\n }\n\n if (this.options.path !== ':memory:') {\n const dir = dirname(this.options.path);\n if (!existsSync(dir)) {\n mkdirSync(dir, { recursive: true });\n }\n }\n\n this.db = this.sqliteRuntime.openDatabase(this.options.path);\n this.initializeSchema();\n }\n\n public close(): void {\n this.db?.close();\n this.db = null;\n }\n\n public clear(): void {\n this.requireDb().exec('DELETE FROM rdf_text_rebuild_status; DELETE FROM rdf_text_entities; DELETE FROM rdf_text_terms; DELETE FROM rdf_text_chunks; DELETE FROM rdf_text_sources;');\n }\n\n public schemaVersion(): number {\n const row = this.requireDb()\n .prepare<{ value: string }>(\"SELECT value FROM rdf_text_metadata WHERE key = 'schema_version'\")\n .get();\n return Number(row?.value ?? 0) || 0;\n }\n\n public sourceMetadata(source: string): RdfTextSourceMetadata | undefined {\n const row = this.requireDb()\n .prepare<RdfTextSourceRow>('SELECT * FROM rdf_text_sources WHERE source = ?')\n .get(source);\n return row ? rdfTextSourceMetadata(row) : undefined;\n }\n\n public recordRebuildStatus(input: RdfTextRebuildStatusInput): void {\n this.requireDb().prepare(`\n INSERT INTO rdf_text_rebuild_status (\n source,\n workspace,\n local_path,\n content_type,\n source_version,\n source_hash,\n status,\n reason,\n message,\n updated_at\n )\n VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, strftime('%Y-%m-%dT%H:%M:%fZ', 'now'))\n ON CONFLICT (source)\n DO UPDATE SET\n workspace = excluded.workspace,\n local_path = excluded.local_path,\n content_type = excluded.content_type,\n source_version = excluded.source_version,\n source_hash = excluded.source_hash,\n status = excluded.status,\n reason = excluded.reason,\n message = excluded.message,\n updated_at = excluded.updated_at\n `).run(\n input.source,\n input.workspace,\n input.localPath ?? null,\n input.contentType ?? null,\n input.sourceVersion ?? null,\n input.sourceHash ?? null,\n input.status,\n input.reason ?? null,\n input.message ?? null,\n );\n }\n\n public rebuildStatus(source: string): RdfTextRebuildStatus | undefined {\n const row = this.requireDb()\n .prepare<RdfTextRebuildStatusRow>('SELECT * FROM rdf_text_rebuild_status WHERE source = ?')\n .get(source);\n return row ? rdfTextRebuildStatus(row) : undefined;\n }\n\n public indexText(source: RdfTextSourceInput, text: string, chunks?: RdfTextChunkInput[]): void {\n const db = this.requireDb();\n const sourceHash = source.sourceHash ?? sha256(text);\n const budgetSkip = rdfTextIndexBudgetSkip(this.options.maxSourceBytes, text);\n if (budgetSkip) {\n this.deleteSource(source.source);\n this.recordRebuildStatus({\n ...source,\n sourceHash,\n status: 'skipped',\n reason: budgetSkip.reason,\n message: budgetSkip.message,\n });\n return;\n }\n const chunkCap = rdfTextIndexChunkCap(this.options.maxChunksPerSource, chunks ?? this.chunkText(source, text));\n const indexedChunks = chunkCap.chunks;\n const sourceId = this.upsertSource({\n ...source,\n sourceHash,\n });\n const insertChunk = db.prepare(`\n INSERT INTO rdf_text_chunks (\n source_id,\n chunk_key,\n retrieval_kind,\n ordinal,\n level,\n heading,\n path,\n content,\n start_offset,\n end_offset,\n normalized_text,\n token_count,\n updated_at\n )\n VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, strftime('%Y-%m-%dT%H:%M:%fZ', 'now'))\n `);\n const insertTerm = db.prepare(`\n INSERT INTO rdf_text_terms (\n term,\n source_id,\n chunk_id,\n occurrences,\n updated_at\n )\n VALUES (?, ?, ?, ?, strftime('%Y-%m-%dT%H:%M:%fZ', 'now'))\n `);\n const insertEntity = db.prepare(`\n INSERT INTO rdf_text_entities (\n entity,\n source_id,\n chunk_id,\n predicate,\n label,\n value,\n datatype,\n language,\n policy_role,\n occurrences,\n updated_at\n )\n VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, strftime('%Y-%m-%dT%H:%M:%fZ', 'now'))\n `);\n\n db.transaction(() => {\n db.prepare('DELETE FROM rdf_text_entities WHERE source_id = ?').run(sourceId);\n db.prepare('DELETE FROM rdf_text_terms WHERE source_id = ?').run(sourceId);\n db.prepare('DELETE FROM rdf_text_chunks WHERE source_id = ?').run(sourceId);\n for (const chunk of indexedChunks) {\n const normalizedText = normalizeText(chunk.content);\n const result = insertChunk.run(\n sourceId,\n chunk.chunkKey,\n chunk.retrievalKind ?? 'file-chunk',\n chunk.ordinal,\n chunk.level,\n chunk.heading || null,\n JSON.stringify(chunk.path ?? []),\n chunk.content,\n chunk.startOffset,\n chunk.endOffset,\n normalizedText,\n tokenCountNormalized(normalizedText),\n );\n const chunkId = Number(result.lastInsertRowid);\n insertTermOccurrences(insertTerm, sourceId, chunkId, normalizedText);\n insertEntityMentions(insertEntity, sourceId, chunkId, chunk.entities);\n }\n })();\n if (chunkCap.capped) {\n this.recordRebuildStatus({\n ...source,\n sourceHash,\n status: 'capped',\n reason: chunkCap.capped.reason,\n message: chunkCap.capped.message,\n });\n }\n }\n\n public moveSource(oldSource: string, next: RdfTextSourceInput): number {\n const db = this.requireDb();\n let affectedRows = 0;\n db.transaction(() => {\n const oldRow = db.prepare<RdfTextSourceRow>('SELECT * FROM rdf_text_sources WHERE source = ?').get(oldSource);\n if (!oldRow) {\n return;\n }\n\n const chunkCount = db\n .prepare<{ count: number }>('SELECT COUNT(*) AS count FROM rdf_text_chunks WHERE source_id = ?')\n .get(oldRow.id)?.count ?? 0;\n const targetRow = db.prepare<RdfTextSourceRow>('SELECT * FROM rdf_text_sources WHERE source = ?').get(next.source);\n if (targetRow && targetRow.id !== oldRow.id) {\n db.prepare('DELETE FROM rdf_text_entities WHERE source_id = ?').run(targetRow.id);\n db.prepare('DELETE FROM rdf_text_terms WHERE source_id = ?').run(targetRow.id);\n db.prepare('DELETE FROM rdf_text_chunks WHERE source_id = ?').run(targetRow.id);\n db.prepare('DELETE FROM rdf_text_sources WHERE id = ?').run(targetRow.id);\n }\n\n db.prepare(`\n UPDATE rdf_text_sources\n SET\n source_key = ?,\n source = ?,\n workspace = ?,\n local_path = ?,\n content_type = ?,\n source_version = ?,\n source_hash = ?,\n updated_at = strftime('%Y-%m-%dT%H:%M:%fZ', 'now')\n WHERE id = ?\n `).run(\n next.sourceKey ?? oldRow.source_key ?? oldRow.source,\n next.source,\n next.workspace,\n next.localPath ?? null,\n next.contentType ?? null,\n next.sourceVersion ?? null,\n next.sourceHash ?? null,\n oldRow.id,\n );\n db.prepare(`\n UPDATE rdf_text_rebuild_status\n SET\n source = ?,\n workspace = ?,\n local_path = ?,\n content_type = ?,\n source_version = ?,\n source_hash = ?,\n updated_at = strftime('%Y-%m-%dT%H:%M:%fZ', 'now')\n WHERE source = ?\n `).run(\n next.source,\n next.workspace,\n next.localPath ?? null,\n next.contentType ?? null,\n next.sourceVersion ?? null,\n next.sourceHash ?? null,\n oldSource,\n );\n affectedRows = Math.max(chunkCount, 1);\n })();\n return affectedRows;\n }\n\n public deleteSource(source: string): number {\n const db = this.requireDb();\n const row = db.prepare<{ id: number }>('SELECT id FROM rdf_text_sources WHERE source = ?').get(source);\n if (!row) {\n return 0;\n }\n\n return db.transaction(() => {\n db.prepare('DELETE FROM rdf_text_entities WHERE source_id = ?').run(row.id);\n db.prepare('DELETE FROM rdf_text_terms WHERE source_id = ?').run(row.id);\n const deletedChunks = db.prepare('DELETE FROM rdf_text_chunks WHERE source_id = ?').run(row.id).changes;\n db.prepare('DELETE FROM rdf_text_sources WHERE id = ?').run(row.id);\n return deletedChunks;\n })();\n }\n\n public search(options: RdfTextSearchOptions): RdfTextSearchResult[] {\n const query = normalizeText(options.query);\n const entityFilter = normalizeEntityFilter(options.entities);\n if (!query && entityFilter.length === 0) {\n return [];\n }\n\n const predicate = query ? buildTextSearchPredicate(query) : undefined;\n const params: unknown[] = predicate ? [...predicate.params] : [];\n const conditions = predicate ? [predicate.sql] : ['1 = 1'];\n appendEntitySearchFilter(entityFilter, conditions, params);\n\n if (options.workspace) {\n conditions.push('source.workspace = ?');\n params.push(options.workspace);\n }\n appendRdfSearchSourceFilters(options, conditions, params);\n\n const scoreExpression = query\n ? `\n CAST((length(chunk.normalized_text) - length(replace(chunk.normalized_text, ?, ''))) / length(?) AS INTEGER)\n + CASE\n WHEN lower(COALESCE(chunk.heading, '')) LIKE ? ESCAPE '\\\\' THEN 100\n ELSE 0\n END\n `\n : '1';\n const orderBy = sqliteTextSearchOrderBy(options.orderBy);\n const window = sqliteTextSearchWindow(options);\n const perSourceLimit = normalizeRdfTextPerSourceLimit(options.perSourceLimit);\n const sql = perSourceLimit === undefined\n ? `\n SELECT\n chunk.id,\n chunk.source_id,\n source.source_key,\n source.source,\n source.workspace,\n source.local_path,\n source.content_type,\n source.source_version,\n source.source_hash,\n chunk.chunk_key,\n chunk.retrieval_kind,\n chunk.ordinal,\n chunk.level,\n chunk.heading,\n chunk.path,\n chunk.content,\n chunk.start_offset,\n chunk.end_offset,\n chunk.normalized_text,\n chunk.token_count,\n chunk.updated_at,\n ${scoreExpression} AS score\n FROM rdf_text_chunks chunk\n JOIN rdf_text_sources source ON source.id = chunk.source_id\n WHERE ${conditions.join(' AND ')}\n ORDER BY ${orderBy}, chunk.source_id ASC, chunk.ordinal ASC\n ${window.sql}\n `\n : `\n WITH matched AS (\n SELECT\n chunk.id,\n chunk.source_id,\n source.source_key,\n source.source,\n source.workspace,\n source.local_path,\n source.content_type,\n source.source_version,\n source.source_hash,\n chunk.chunk_key,\n chunk.retrieval_kind,\n chunk.ordinal,\n chunk.level,\n chunk.heading,\n chunk.path,\n chunk.content,\n chunk.start_offset,\n chunk.end_offset,\n chunk.normalized_text,\n chunk.token_count,\n chunk.updated_at,\n ${scoreExpression} AS score\n FROM rdf_text_chunks chunk\n JOIN rdf_text_sources source ON source.id = chunk.source_id\n WHERE ${conditions.join(' AND ')}\n ),\n ranked AS (\n SELECT\n matched.*,\n ROW_NUMBER() OVER (\n PARTITION BY source\n ORDER BY ${sqliteTextSearchResultOrderBy(options.orderBy)}, source_id ASC, ordinal ASC\n ) AS source_rank\n FROM matched\n )\n SELECT\n id,\n source_id,\n source_key,\n source,\n workspace,\n local_path,\n content_type,\n source_version,\n source_hash,\n chunk_key,\n retrieval_kind,\n ordinal,\n level,\n heading,\n path,\n content,\n start_offset,\n end_offset,\n normalized_text,\n token_count,\n updated_at,\n score\n FROM ranked\n WHERE source_rank <= ?\n ORDER BY ${sqliteTextSearchResultOrderBy(options.orderBy)}, source_id ASC, ordinal ASC\n ${window.sql}\n `;\n\n const scoreParams = query ? [query, query, `%${escapeLikePattern(query)}%`] : [];\n const perSourceParams = perSourceLimit === undefined ? [] : [perSourceLimit];\n const rows = this.requireDb().prepare<RdfTextSearchRow>(sql).all(...scoreParams, ...params, ...perSourceParams, ...window.params);\n const entities = this.entitiesForChunks(rows.map((row) => row.id));\n return rows.map((row) => this.toSearchResult(row, query, row.score, entities.get(row.id) ?? []));\n }\n\n public estimateSearchCardinality(options: RdfTextSearchOptions): RdfSearchCardinalityEstimate {\n const query = normalizeText(options.query);\n const entityFilter = normalizeEntityFilter(options.entities);\n if (!query && entityFilter.length === 0) {\n return {\n rows: 0,\n source: 'text-normalized-scan',\n indexChoice: 'text-normalized-scan',\n };\n }\n\n const predicate = query ? buildTextSearchPredicate(query) : undefined;\n const params: unknown[] = predicate ? [...predicate.params] : [];\n const conditions = predicate ? [predicate.sql] : ['1 = 1'];\n appendEntitySearchFilter(entityFilter, conditions, params);\n\n if (options.workspace) {\n conditions.push('source.workspace = ?');\n params.push(options.workspace);\n }\n appendRdfSearchSourceFilters(options, conditions, params);\n\n const perSourceLimit = normalizeRdfTextPerSourceLimit(options.perSourceLimit);\n const rows = perSourceLimit === undefined\n ? this.requireDb().prepare<{ count: number }>(`\n SELECT COUNT(*) AS count\n FROM rdf_text_chunks chunk\n JOIN rdf_text_sources source ON source.id = chunk.source_id\n WHERE ${conditions.join(' AND ')}\n `).get(...params)?.count ?? 0\n : this.requireDb().prepare<{ count: number }>(`\n SELECT COALESCE(SUM(CASE WHEN source_count > ? THEN ? ELSE source_count END), 0) AS count\n FROM (\n SELECT chunk.source_id, COUNT(*) AS source_count\n FROM rdf_text_chunks chunk\n JOIN rdf_text_sources source ON source.id = chunk.source_id\n WHERE ${conditions.join(' AND ')}\n GROUP BY chunk.source_id\n )\n `).get(perSourceLimit, perSourceLimit, ...params)?.count ?? 0;\n\n return {\n rows: applyResultWindow(rows, options.offset, options.limit),\n source: predicate?.indexChoice ?? 'text-term-posting',\n indexChoice: predicate?.indexChoice ?? 'text-entity-posting',\n };\n }\n\n public stats(): RdfTextIndexStats {\n const db = this.requireDb();\n return {\n sourceCount: db.prepare<{ count: number }>('SELECT COUNT(*) AS count FROM rdf_text_sources').get()?.count ?? 0,\n chunkCount: db.prepare<{ count: number }>('SELECT COUNT(*) AS count FROM rdf_text_chunks').get()?.count ?? 0,\n entityMentionCount: db.prepare<{ count: number }>('SELECT COUNT(*) AS count FROM rdf_text_entities').get()?.count ?? 0,\n databaseBytes: this.estimateDatabaseBytes(),\n termDocumentFrequency: this.termDocumentFrequency(),\n };\n }\n\n public termDocumentFrequency(limit = 100): RdfTextTermDocumentFrequency[] {\n const rows = this.requireDb().prepare<RdfTextTermFrequencyRow>(`\n SELECT\n term,\n COUNT(DISTINCT source_id) AS source_count,\n COUNT(*) AS chunk_count,\n COALESCE(SUM(occurrences), 0) AS total_occurrences\n FROM rdf_text_terms\n GROUP BY term\n ORDER BY source_count DESC, chunk_count DESC, total_occurrences DESC, term ASC\n LIMIT ?\n `).all(Math.max(0, limit));\n\n return rows\n .map((row) => ({\n term: row.term,\n sourceCount: row.source_count,\n chunkCount: row.chunk_count,\n totalOccurrences: row.total_occurrences,\n }));\n }\n\n private initializeSchema(): void {\n this.requireDb().exec(`\n CREATE TABLE IF NOT EXISTS rdf_text_metadata (\n key TEXT PRIMARY KEY,\n value TEXT NOT NULL\n );\n\n CREATE TABLE IF NOT EXISTS rdf_text_sources (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n source_key TEXT,\n source TEXT NOT NULL UNIQUE,\n workspace TEXT NOT NULL,\n local_path TEXT,\n content_type TEXT,\n source_version TEXT,\n source_hash TEXT,\n updated_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now'))\n );\n\n CREATE TABLE IF NOT EXISTS rdf_text_rebuild_status (\n source TEXT PRIMARY KEY,\n workspace TEXT NOT NULL,\n local_path TEXT,\n content_type TEXT,\n source_version TEXT,\n source_hash TEXT,\n status TEXT NOT NULL,\n reason TEXT,\n message TEXT,\n updated_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now'))\n );\n\n CREATE TABLE IF NOT EXISTS rdf_text_chunks (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n source_id INTEGER NOT NULL,\n chunk_key TEXT NOT NULL,\n retrieval_kind TEXT NOT NULL DEFAULT 'file-chunk',\n ordinal INTEGER NOT NULL,\n level INTEGER NOT NULL,\n heading TEXT,\n path TEXT,\n content TEXT NOT NULL,\n start_offset INTEGER NOT NULL,\n end_offset INTEGER NOT NULL,\n normalized_text TEXT NOT NULL,\n token_count INTEGER NOT NULL,\n updated_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now')),\n UNIQUE (source_id, chunk_key),\n FOREIGN KEY (source_id) REFERENCES rdf_text_sources(id)\n );\n\n CREATE TABLE IF NOT EXISTS rdf_text_terms (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n term TEXT NOT NULL CHECK (length(term) <= ${RDF_TEXT_TERM_MAX_INDEX_LENGTH}),\n source_id INTEGER NOT NULL,\n chunk_id INTEGER NOT NULL,\n occurrences INTEGER NOT NULL,\n updated_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now')),\n UNIQUE (term, chunk_id),\n FOREIGN KEY (source_id) REFERENCES rdf_text_sources(id),\n FOREIGN KEY (chunk_id) REFERENCES rdf_text_chunks(id)\n );\n\n CREATE TABLE IF NOT EXISTS rdf_text_entities (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n entity TEXT NOT NULL,\n source_id INTEGER NOT NULL,\n chunk_id INTEGER NOT NULL,\n predicate TEXT,\n label TEXT,\n value TEXT,\n datatype TEXT,\n language TEXT,\n policy_role TEXT,\n occurrences INTEGER NOT NULL DEFAULT 1,\n updated_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now')),\n FOREIGN KEY (source_id) REFERENCES rdf_text_sources(id),\n FOREIGN KEY (chunk_id) REFERENCES rdf_text_chunks(id)\n );\n\n CREATE INDEX IF NOT EXISTS rdf_text_sources_workspace ON rdf_text_sources(workspace);\n CREATE INDEX IF NOT EXISTS rdf_text_sources_source ON rdf_text_sources(source);\n CREATE INDEX IF NOT EXISTS rdf_text_sources_local_path ON rdf_text_sources(local_path);\n CREATE INDEX IF NOT EXISTS rdf_text_sources_workspace_local_path ON rdf_text_sources(workspace, local_path);\n CREATE INDEX IF NOT EXISTS rdf_text_chunks_source ON rdf_text_chunks(source_id, ordinal);\n DELETE FROM rdf_text_terms WHERE length(term) > ${RDF_TEXT_TERM_MAX_INDEX_LENGTH};\n CREATE INDEX IF NOT EXISTS rdf_text_terms_term ON rdf_text_terms(term);\n CREATE INDEX IF NOT EXISTS rdf_text_terms_source_term ON rdf_text_terms(source_id, term);\n CREATE INDEX IF NOT EXISTS rdf_text_terms_chunk ON rdf_text_terms(chunk_id);\n CREATE INDEX IF NOT EXISTS rdf_text_entities_entity ON rdf_text_entities(entity);\n CREATE INDEX IF NOT EXISTS rdf_text_entities_source_entity ON rdf_text_entities(source_id, entity);\n CREATE INDEX IF NOT EXISTS rdf_text_entities_chunk ON rdf_text_entities(chunk_id);\n\n DROP INDEX IF EXISTS rdf_text_chunks_normalized;\n\n INSERT INTO rdf_text_metadata (key, value)\n VALUES ('schema_version', '${RDF_TEXT_SCHEMA_VERSION}')\n ON CONFLICT (key) DO UPDATE SET value = excluded.value;\n `);\n this.ensureSourceKeyColumn();\n this.ensureChunkRetrievalColumns();\n this.ensureEntityProvenanceColumns();\n this.backfillTermPostings();\n }\n\n private ensureSourceKeyColumn(): void {\n const columns = new Set(\n this.requireDb()\n .prepare<{ name: string }>('PRAGMA table_info(rdf_text_sources)')\n .all()\n .map((column) => column.name),\n );\n if (!columns.has('source_key')) {\n this.requireDb().exec('ALTER TABLE rdf_text_sources ADD COLUMN source_key TEXT;');\n }\n this.requireDb().exec('UPDATE rdf_text_sources SET source_key = source WHERE source_key IS NULL;');\n }\n\n private ensureChunkRetrievalColumns(): void {\n const columns = new Set(\n this.requireDb()\n .prepare<{ name: string }>('PRAGMA table_info(rdf_text_chunks)')\n .all()\n .map((column) => column.name),\n );\n if (!columns.has('retrieval_kind')) {\n this.requireDb().exec(\"ALTER TABLE rdf_text_chunks ADD COLUMN retrieval_kind TEXT NOT NULL DEFAULT 'file-chunk';\");\n }\n }\n\n private ensureEntityProvenanceColumns(): void {\n const columns = new Set(\n this.requireDb()\n .prepare<{ name: string }>('PRAGMA table_info(rdf_text_entities)')\n .all()\n .map((column) => column.name),\n );\n for (const [name, type] of [\n ['value', 'TEXT'],\n ['datatype', 'TEXT'],\n ['language', 'TEXT'],\n ['policy_role', 'TEXT'],\n ] as const) {\n if (!columns.has(name)) {\n this.requireDb().exec(`ALTER TABLE rdf_text_entities ADD COLUMN ${name} ${type};`);\n }\n }\n }\n\n private backfillTermPostings(): void {\n const db = this.requireDb();\n const rows = db.prepare<{\n id: number;\n source_id: number;\n normalized_text: string;\n }>(`\n SELECT chunk.id, chunk.source_id, chunk.normalized_text\n FROM rdf_text_chunks chunk\n LEFT JOIN rdf_text_terms term ON term.chunk_id = chunk.id\n WHERE term.chunk_id IS NULL AND chunk.normalized_text <> ''\n `).all();\n if (rows.length === 0) {\n return;\n }\n\n const insertTerm = db.prepare(`\n INSERT INTO rdf_text_terms (\n term,\n source_id,\n chunk_id,\n occurrences,\n updated_at\n )\n VALUES (?, ?, ?, ?, strftime('%Y-%m-%dT%H:%M:%fZ', 'now'))\n `);\n const insertEntity = db.prepare(`\n INSERT INTO rdf_text_entities (\n entity,\n source_id,\n chunk_id,\n predicate,\n label,\n value,\n datatype,\n language,\n policy_role,\n occurrences,\n updated_at\n )\n VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, strftime('%Y-%m-%dT%H:%M:%fZ', 'now'))\n `);\n db.transaction(() => {\n for (const row of rows) {\n insertTermOccurrences(insertTerm, row.source_id, row.id, row.normalized_text);\n }\n })();\n }\n\n private upsertSource(source: RdfTextSourceInput): number {\n const db = this.requireDb();\n db.prepare(`\n INSERT INTO rdf_text_sources (\n source_key,\n source,\n workspace,\n local_path,\n content_type,\n source_version,\n source_hash,\n updated_at\n )\n VALUES (?, ?, ?, ?, ?, ?, ?, strftime('%Y-%m-%dT%H:%M:%fZ', 'now'))\n ON CONFLICT (source)\n DO UPDATE SET\n source_key = excluded.source_key,\n workspace = excluded.workspace,\n local_path = excluded.local_path,\n content_type = excluded.content_type,\n source_version = excluded.source_version,\n source_hash = excluded.source_hash,\n updated_at = excluded.updated_at\n `).run(\n source.sourceKey ?? source.source,\n source.source,\n source.workspace,\n source.localPath ?? null,\n source.contentType ?? null,\n source.sourceVersion ?? null,\n source.sourceHash ?? null,\n );\n\n const row = db.prepare<RdfTextSourceRow>('SELECT * FROM rdf_text_sources WHERE source = ?').get(source.source);\n if (!row) {\n throw new Error(`Failed to upsert RDF text source: ${source.source}`);\n }\n return row.id;\n }\n\n private chunkText(source: RdfTextSourceInput, text: string): RdfTextChunkInput[] {\n return chunkRdfTextSource(source, text);\n }\n\n private estimateDatabaseBytes(): number {\n const db = this.requireDb();\n try {\n const pageCount = db.prepare<{ page_count: number }>('PRAGMA page_count').get()?.page_count ?? 0;\n const pageSize = db.prepare<{ page_size: number }>('PRAGMA page_size').get()?.page_size ?? 0;\n return pageCount * pageSize;\n } catch {\n return 0;\n }\n }\n\n private toSearchResult(\n row: RdfTextChunkRow,\n normalizedQuery: string,\n score: number,\n entities: RdfTextEntityMention[],\n ): RdfTextSearchResult {\n return {\n source: row.source,\n workspace: row.workspace,\n localPath: row.local_path ?? undefined,\n contentType: row.content_type ?? undefined,\n sourceVersion: row.source_version ?? undefined,\n sourceHash: row.source_hash ?? undefined,\n sourceKey: row.source_key ?? row.source,\n chunkKey: row.chunk_key,\n retrievalPointKey: row.chunk_key,\n retrievalKind: normalizeRdfTextRetrievalKind(row.retrieval_kind),\n ordinal: row.ordinal,\n level: row.level,\n heading: row.heading ?? undefined,\n path: parsePath(row.path),\n content: row.content,\n startOffset: row.start_offset,\n endOffset: row.end_offset,\n scoreComponents: textScoreComponents(row, normalizedQuery, score),\n score,\n entities,\n };\n }\n\n private entitiesForChunks(chunkIds: number[]): Map<number, RdfTextEntityMention[]> {\n const uniqueIds = [...new Set(chunkIds)];\n const mentions = new Map<number, RdfTextEntityMention[]>();\n if (uniqueIds.length === 0) {\n return mentions;\n }\n const rows = this.requireDb().prepare<RdfTextEntityRow>(`\n SELECT chunk_id, entity, predicate, label, value, datatype, language, policy_role, occurrences\n FROM rdf_text_entities\n WHERE chunk_id IN (${uniqueIds.map(() => '?').join(', ')})\n ORDER BY chunk_id ASC, entity ASC, predicate ASC, label ASC\n `).all(...uniqueIds);\n for (const row of rows) {\n const chunkId = row.chunk_id;\n if (chunkId === undefined) {\n continue;\n }\n const chunkMentions = mentions.get(chunkId) ?? [];\n chunkMentions.push({\n entity: row.entity,\n predicate: row.predicate ?? undefined,\n label: row.label ?? undefined,\n value: row.value ?? undefined,\n datatype: row.datatype ?? undefined,\n language: row.language ?? undefined,\n policyRole: row.policy_role ?? undefined,\n occurrences: row.occurrences,\n });\n mentions.set(chunkId, chunkMentions);\n }\n return mentions;\n }\n\n private entitiesForChunk(chunkId: number): RdfTextEntityMention[] {\n const rows = this.requireDb().prepare<RdfTextEntityRow>(`\n SELECT entity, predicate, label, value, datatype, language, policy_role, occurrences\n FROM rdf_text_entities\n WHERE chunk_id = ?\n ORDER BY entity ASC, predicate ASC, label ASC\n `).all(chunkId);\n return rows.map((row) => ({\n entity: row.entity,\n predicate: row.predicate ?? undefined,\n label: row.label ?? undefined,\n value: row.value ?? undefined,\n datatype: row.datatype ?? undefined,\n language: row.language ?? undefined,\n policyRole: row.policy_role ?? undefined,\n occurrences: row.occurrences,\n }));\n }\n\n private requireDb(): SqliteDatabase {\n if (!this.db) {\n throw new Error('RdfTextIndex is not open');\n }\n return this.db;\n }\n}\n\nfunction rdfTextSourceMetadata(row: RdfTextSourceRow): RdfTextSourceMetadata {\n return {\n sourceKey: row.source_key ?? row.source,\n source: row.source,\n workspace: row.workspace,\n localPath: row.local_path ?? undefined,\n contentType: row.content_type ?? undefined,\n sourceVersion: row.source_version ?? undefined,\n sourceHash: row.source_hash ?? undefined,\n updatedAt: row.updated_at,\n };\n}\n\nfunction rdfTextRebuildStatus(row: RdfTextRebuildStatusRow): RdfTextRebuildStatus {\n return {\n source: row.source,\n workspace: row.workspace,\n localPath: row.local_path ?? undefined,\n contentType: row.content_type ?? undefined,\n sourceVersion: row.source_version ?? undefined,\n sourceHash: row.source_hash ?? undefined,\n status: row.status,\n reason: row.reason ?? undefined,\n message: row.message ?? undefined,\n updatedAt: row.updated_at,\n };\n}\n\nexport function chunkRdfTextSource(source: RdfTextSourceInput, text: string): RdfTextChunkInput[] {\n if (!text) {\n return [];\n }\n if (isFolderSource(source)) {\n return chunkFolderCard(source, text);\n }\n if (isMarkdownSource(source)) {\n const chunker = new HeadingChunker();\n return chunker.flatten(chunker.chunk(text))\n .filter((chunk) => chunk.content.trim().length > 0)\n .map((chunk, index) => ({\n chunkKey: deterministicChunkKey(source.source, index),\n ordinal: index,\n level: chunk.level,\n heading: chunk.heading || undefined,\n path: chunk.path,\n content: chunk.content,\n startOffset: chunk.startOffset,\n endOffset: chunk.endOffset,\n }));\n }\n\n return chunkPlainText(source.source, text);\n}\n\nfunction isFolderSource(source: RdfTextSourceInput): boolean {\n const contentType = source.contentType?.split(';', 1)[0]?.trim().toLowerCase();\n return contentType === 'inode/directory' ||\n source.localPath?.endsWith('/') === true ||\n source.source.endsWith('/');\n}\n\nfunction chunkFolderCard(source: RdfTextSourceInput, text: string): RdfTextChunkInput[] {\n const content = text.trim();\n if (!content) {\n return [];\n }\n const path = folderPathParts(source.localPath ?? source.source);\n return [{\n chunkKey: deterministicChunkKey(source.source, 0),\n retrievalKind: 'folder-card',\n ordinal: 0,\n level: 0,\n heading: path[path.length - 1],\n path,\n content,\n startOffset: 0,\n endOffset: text.length,\n }];\n}\n\nfunction isMarkdownSource(source: RdfTextSourceInput): boolean {\n const contentType = source.contentType?.split(';', 1)[0]?.trim().toLowerCase();\n if (contentType === 'text/markdown' || contentType === 'text/x-markdown') {\n return true;\n }\n const path = source.localPath ?? source.source;\n return ['.md', '.markdown', '.mdown'].includes(extname(path).toLowerCase());\n}\n\nfunction folderPathParts(value: string): string[] {\n const path = value.includes('://') ? safeUrlPathname(value) : value;\n return path.split('/').map((part) => part.trim()).filter(Boolean);\n}\n\nfunction safeUrlPathname(value: string): string {\n try {\n return new URL(value).pathname;\n } catch {\n return value;\n }\n}\n\nfunction chunkPlainText(source: string, text: string): RdfTextChunkInput[] {\n const chunks: RdfTextChunkInput[] = [];\n const paragraphPattern = /[^\\S\\r\\n]*(?:\\r?\\n){2,}[^\\S\\r\\n]*/g;\n let ordinal = 0;\n let start = 0;\n let match: RegExpExecArray | null;\n\n while ((match = paragraphPattern.exec(text)) !== null) {\n const end = match.index;\n ordinal = pushPlainChunk(chunks, source, ordinal, text, start, end);\n start = match.index + match[0].length;\n }\n\n pushPlainChunk(chunks, source, ordinal, text, start, text.length);\n if (chunks.length <= 1 && /\\r?\\n/.test(text)) {\n return chunkLines(source, text);\n }\n return chunks;\n}\n\nfunction chunkLines(source: string, text: string): RdfTextChunkInput[] {\n const chunks: RdfTextChunkInput[] = [];\n const lines = text.split(/\\r?\\n/);\n let offset = 0;\n let ordinal = 0;\n\n for (const line of lines) {\n const start = offset;\n const end = start + line.length;\n ordinal = pushPlainChunk(chunks, source, ordinal, text, start, end);\n offset = end + (text.slice(end, end + 2) === '\\r\\n' ? 2 : 1);\n }\n\n return chunks;\n}\n\nfunction pushPlainChunk(\n chunks: RdfTextChunkInput[],\n source: string,\n ordinal: number,\n text: string,\n start: number,\n end: number,\n): number {\n const content = text.slice(start, end).trim();\n if (!content) {\n return ordinal;\n }\n\n chunks.push({\n chunkKey: deterministicChunkKey(source, ordinal),\n ordinal,\n level: 0,\n path: [],\n content,\n startOffset: start,\n endOffset: end,\n });\n return ordinal + 1;\n}\n\nexport function deterministicRdfTextChunkKey(source: string, ordinal: number): string {\n return createHash('sha256')\n .update(source)\n .update('\\0')\n .update(String(ordinal))\n .digest('hex')\n .slice(0, 24);\n}\n\nconst deterministicChunkKey = deterministicRdfTextChunkKey;\n\nexport function rdfTextSha256(value: string): string {\n return createHash('sha256').update(value).digest('hex');\n}\n\nconst sha256 = rdfTextSha256;\n\nfunction textScoreComponents(\n row: Pick<RdfTextChunkRow, 'normalized_text' | 'heading'>,\n normalizedQuery: string,\n score: number,\n): RdfTextScoreComponents {\n if (!normalizedQuery) {\n return {\n sourceType: 'text',\n algorithm: 'occurrence-heading-boost',\n normalizedQuery,\n occurrenceScore: 1,\n headingBoost: 0,\n score,\n };\n }\n const occurrenceScore = occurrenceCount(row.normalized_text, normalizedQuery);\n const headingBoost = normalizeText(row.heading ?? '').includes(normalizedQuery) ? 100 : 0;\n return {\n sourceType: 'text',\n algorithm: 'occurrence-heading-boost',\n normalizedQuery,\n occurrenceScore,\n headingBoost,\n score,\n };\n}\n\nexport function normalizeRdfText(value: string): string {\n return value.normalize('NFKC').toLowerCase().replace(/\\s+/g, ' ').trim();\n}\n\nconst normalizeText = normalizeRdfText;\n\nexport function normalizedRdfTextTokenCount(value: string): number {\n return tokenizeNormalizedText(value).length;\n}\n\nconst tokenCountNormalized = normalizedRdfTextTokenCount;\n\nexport function tokenizeNormalizedRdfText(value: string): string[] {\n const terms: string[] = [];\n let word = '';\n let cjk = '';\n\n const flushWord = (): void => {\n if (word) {\n terms.push(word);\n word = '';\n }\n };\n const flushCjk = (): void => {\n if (!cjk) {\n return;\n }\n const chars = Array.from(cjk);\n if (chars.length === 1) {\n terms.push(chars[0]);\n } else {\n for (let index = 0; index < chars.length - 1; index += 1) {\n terms.push(`${chars[index]}${chars[index + 1]}`);\n }\n }\n cjk = '';\n };\n\n for (const char of Array.from(value)) {\n if (isCjkTextChar(char)) {\n flushWord();\n cjk += char;\n continue;\n }\n if (isRdfTextTokenChar(char)) {\n flushCjk();\n word += char;\n continue;\n }\n flushWord();\n flushCjk();\n }\n flushWord();\n flushCjk();\n return terms.filter(Boolean);\n}\n\nconst tokenizeNormalizedText = tokenizeNormalizedRdfText;\n\nfunction isCjkTextChar(char: string): boolean {\n return /\\p{Script=Han}|\\p{Script=Hiragana}|\\p{Script=Katakana}|\\p{Script=Hangul}/u.test(char);\n}\n\nfunction isRdfTextTokenChar(char: string): boolean {\n return /[\\p{Letter}\\p{Mark}\\p{Number}]/u.test(char);\n}\n\nfunction insertTermOccurrences(\n insertTerm: SqliteStatement,\n sourceId: number,\n chunkId: number,\n normalizedText: string,\n): void {\n for (const [term, occurrences] of termOccurrences(normalizedText)) {\n if (term.length > RDF_TEXT_TERM_MAX_INDEX_LENGTH) {\n continue;\n }\n insertTerm.run(term, sourceId, chunkId, occurrences);\n }\n}\n\nexport function rdfTextTermOccurrences(normalizedText: string): Map<string, number> {\n const terms = new Map<string, number>();\n for (const term of tokenizeNormalizedText(normalizedText)) {\n terms.set(term, (terms.get(term) ?? 0) + 1);\n }\n return terms;\n}\n\nconst termOccurrences = rdfTextTermOccurrences;\n\nfunction buildTextSearchPredicate(query: string): TextSearchPredicate {\n const terms = [...new Set(tokenizeNormalizedText(query))]\n .filter((term) => term.length <= RDF_TEXT_TERM_MAX_INDEX_LENGTH);\n const phraseCondition = \"chunk.normalized_text LIKE ? ESCAPE '\\\\'\";\n const phrasePattern = `%${escapeLikePattern(query)}%`;\n if (terms.length === 0) {\n return {\n sql: phraseCondition,\n params: [phrasePattern],\n indexChoice: 'text-normalized-scan',\n };\n }\n\n return {\n sql: `\n chunk.id IN (\n SELECT candidate.chunk_id\n FROM (\n ${terms.map(() => `\n SELECT term.chunk_id, ? AS query_term\n FROM rdf_text_terms term\n WHERE term.term = ?\n `).join(' UNION ALL ')}\n ) candidate\n GROUP BY candidate.chunk_id\n HAVING COUNT(DISTINCT candidate.query_term) = ?\n )\n AND ${phraseCondition}\n `,\n params: [\n ...terms.flatMap((term) => [term, term]),\n terms.length,\n phrasePattern,\n ],\n indexChoice: 'text-term-posting',\n };\n}\n\nexport function rdfTextOccurrenceCount(haystack: string, needle: string): number {\n if (!needle) {\n return 0;\n }\n\n let count = 0;\n let offset = 0;\n while (true) {\n const index = haystack.indexOf(needle, offset);\n if (index === -1) {\n break;\n }\n count++;\n offset = index + needle.length;\n }\n return count;\n}\n\nconst occurrenceCount = rdfTextOccurrenceCount;\n\nexport function applyRdfTextResultWindow(rows: number, offset: number | undefined, limit: number | undefined): number {\n const start = Math.max(0, offset ?? 0);\n if (rows <= start) {\n return 0;\n }\n const remaining = rows - start;\n return limit === undefined ? remaining : Math.min(remaining, Math.max(0, limit));\n}\n\nconst applyResultWindow = applyRdfTextResultWindow;\n\nexport function compareRdfTextSearchHits(\n left: { row: RdfTextChunkRow; score: number },\n right: { row: RdfTextChunkRow; score: number },\n orderBy: RdfTextSearchOrder[] | undefined,\n): number {\n const order = orderBy?.length ? orderBy : [{ field: 'score' as const, direction: 'desc' as const }];\n for (const entry of order) {\n const direction = entry.direction === 'desc' ? -1 : 1;\n const comparison = compareTextSearchField(left, right, entry.field);\n if (comparison !== 0) {\n return comparison * direction;\n }\n }\n return left.row.source_id - right.row.source_id || left.row.ordinal - right.row.ordinal;\n}\n\nconst compareTextSearchHits = compareRdfTextSearchHits;\n\nfunction sqliteTextSearchOrderBy(orderBy: RdfTextSearchOrder[] | undefined): string {\n const order = orderBy?.length ? orderBy : [{ field: 'score' as const, direction: 'desc' as const }];\n return order.map((entry) => `${sqliteTextSearchOrderField(entry.field)} ${entry.direction === 'desc' ? 'DESC' : 'ASC'}`).join(', ');\n}\n\nfunction sqliteTextSearchOrderField(field: RdfTextSearchOrder['field']): string {\n switch (field) {\n case 'score':\n return 'score';\n case 'source':\n return 'source.source';\n case 'localPath':\n return 'COALESCE(source.local_path, \\'\\')';\n case 'ordinal':\n return 'chunk.ordinal';\n case 'startOffset':\n return 'chunk.start_offset';\n case 'endOffset':\n return 'chunk.end_offset';\n default: {\n const exhaustive: never = field;\n throw new Error(`Unsupported RDF text search order field: ${exhaustive}`);\n }\n }\n}\n\nfunction sqliteTextSearchResultOrderBy(orderBy: RdfTextSearchOrder[] | undefined): string {\n const order = orderBy?.length ? orderBy : [{ field: 'score' as const, direction: 'desc' as const }];\n return order.map((entry) => `${sqliteTextSearchResultOrderField(entry.field)} ${entry.direction === 'desc' ? 'DESC' : 'ASC'}`).join(', ');\n}\n\nfunction sqliteTextSearchResultOrderField(field: RdfTextSearchOrder['field']): string {\n switch (field) {\n case 'score':\n return 'score';\n case 'source':\n return 'source';\n case 'localPath':\n return 'COALESCE(local_path, \\'\\')';\n case 'ordinal':\n return 'ordinal';\n case 'startOffset':\n return 'start_offset';\n case 'endOffset':\n return 'end_offset';\n default: {\n const exhaustive: never = field;\n throw new Error(`Unsupported RDF text search order field: ${exhaustive}`);\n }\n }\n}\n\nfunction sqliteTextSearchWindow(options: RdfTextSearchOptions): { sql: string; params: unknown[] } {\n const offset = Math.max(0, options.offset ?? 0);\n if (options.limit === undefined) {\n return offset > 0 ? { sql: 'LIMIT -1 OFFSET ?', params: [offset] } : { sql: '', params: [] };\n }\n return {\n sql: 'LIMIT ? OFFSET ?',\n params: [Math.max(0, options.limit), offset],\n };\n}\n\nexport function normalizeRdfTextPerSourceLimit(limit: number | undefined): number | undefined {\n if (limit === undefined || !Number.isFinite(limit)) {\n return undefined;\n }\n return Math.max(0, Math.trunc(limit));\n}\n\nfunction compareTextSearchField(\n left: { row: RdfTextChunkRow; score: number },\n right: { row: RdfTextChunkRow; score: number },\n field: RdfTextSearchOrder['field'],\n): number {\n switch (field) {\n case 'score':\n return left.score - right.score;\n case 'source':\n return left.row.source.localeCompare(right.row.source);\n case 'localPath':\n return (left.row.local_path ?? '').localeCompare(right.row.local_path ?? '');\n case 'ordinal':\n return left.row.ordinal - right.row.ordinal;\n case 'startOffset':\n return left.row.start_offset - right.row.start_offset;\n case 'endOffset':\n return left.row.end_offset - right.row.end_offset;\n default: {\n const exhaustive: never = field;\n throw new Error(`Unsupported RDF text search order field: ${exhaustive}`);\n }\n }\n}\n\nexport function escapeRdfTextLikePattern(value: string): string {\n return value.replace(/[\\\\%_]/g, (match) => `\\\\${match}`);\n}\n\nconst escapeLikePattern = escapeRdfTextLikePattern;\n\nexport function parseRdfTextPath(value: string | null): string[] {\n if (!value) {\n return [];\n }\n try {\n const parsed = JSON.parse(value);\n return Array.isArray(parsed) ? parsed.filter((item): item is string => typeof item === 'string') : [];\n } catch {\n return [];\n }\n}\n\nconst parsePath = parseRdfTextPath;\n\nexport function normalizeRdfTextRetrievalKind(value: string | null | undefined): RdfTextRetrievalKind {\n switch (value) {\n case 'entity-card':\n case 'field-chunk':\n case 'folder-card':\n case 'file-chunk':\n return value;\n default:\n return 'file-chunk';\n }\n}\n\nexport function rdfTextIndexBudgetSkip(\n maxSourceBytes: number | undefined,\n text: string,\n): { reason: string; message: string } | undefined {\n if (maxSourceBytes === undefined || !Number.isFinite(maxSourceBytes)) {\n return undefined;\n }\n const maxBytes = Math.max(0, Math.trunc(maxSourceBytes));\n const sourceBytes = Buffer.byteLength(text);\n if (sourceBytes <= maxBytes) {\n return undefined;\n }\n return {\n reason: 'maxSourceBytes',\n message: `source text is ${sourceBytes} bytes; maxSourceBytes is ${maxBytes}`,\n };\n}\n\nexport function rdfTextIndexChunkCap(\n maxChunksPerSource: number | undefined,\n chunks: RdfTextChunkInput[],\n): { chunks: RdfTextChunkInput[]; capped?: { reason: string; message: string } } {\n if (maxChunksPerSource === undefined || !Number.isFinite(maxChunksPerSource)) {\n return { chunks };\n }\n const maxChunks = Math.max(0, Math.trunc(maxChunksPerSource));\n if (chunks.length <= maxChunks) {\n return { chunks };\n }\n return {\n chunks: chunks.slice(0, maxChunks),\n capped: {\n reason: 'maxChunksPerSource',\n message: `source produced ${chunks.length} chunks; maxChunksPerSource is ${maxChunks}`,\n },\n };\n}\n\nfunction appendEntitySearchFilter(entities: string[], conditions: string[], params: unknown[]): void {\n if (entities.length === 0) {\n return;\n }\n conditions.push(`\n chunk.id IN (\n SELECT entity.chunk_id\n FROM rdf_text_entities entity\n WHERE entity.entity IN (${entities.map(() => '?').join(', ')})\n GROUP BY entity.chunk_id\n HAVING COUNT(DISTINCT entity.entity) = ?\n )\n `);\n params.push(...entities, entities.length);\n}\n\nfunction insertEntityMentions(\n insertEntity: SqliteStatement,\n sourceId: number,\n chunkId: number,\n entities: RdfTextChunkInput['entities'] | undefined,\n): void {\n for (const entity of normalizeEntityMentions(entities)) {\n insertEntity.run(\n entity.entity,\n sourceId,\n chunkId,\n entity.predicate ?? null,\n entity.label ?? null,\n entity.value ?? null,\n entity.datatype ?? null,\n entity.language ?? null,\n entity.policyRole ?? null,\n entity.occurrences,\n );\n }\n}\n\nfunction normalizeEntityFilter(entities: string[] | undefined): string[] {\n return [...new Set((entities ?? []).map((entity) => entity.trim()).filter(Boolean))].sort();\n}\n\nfunction normalizeEntityMentions(entities: RdfTextChunkInput['entities'] | undefined): RdfTextEntityMention[] {\n const mentions = new Map<string, RdfTextEntityMention>();\n for (const entity of entities ?? []) {\n const iri = entity.entity.trim();\n if (!iri) {\n continue;\n }\n const predicate = entity.predicate?.trim() || undefined;\n const label = entity.label?.trim() || undefined;\n const value = entity.value;\n const datatype = entity.datatype?.trim() || undefined;\n const language = entity.language?.trim() || undefined;\n const policyRole = entity.policyRole?.trim() || undefined;\n const key = JSON.stringify([iri, predicate ?? '', label ?? '', value ?? '', datatype ?? '', language ?? '', policyRole ?? '']);\n const existing = mentions.get(key);\n const occurrences = Math.max(1, Math.trunc(entity.occurrences ?? 1));\n if (existing) {\n existing.occurrences += occurrences;\n } else {\n mentions.set(key, { entity: iri, predicate, label, value, datatype, language, policyRole, occurrences });\n }\n }\n return [...mentions.values()].sort((left, right) => left.entity.localeCompare(right.entity) || (left.predicate ?? '').localeCompare(right.predicate ?? '') || (left.label ?? '').localeCompare(right.label ?? ''));\n}\n"]}
|
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
{
|
|
2
|
+
"@context": [
|
|
3
|
+
"https://linkedsoftwaredependencies.org/bundles/npm/@undefineds.co/xpod/^0.0.0/components/context.jsonld"
|
|
4
|
+
],
|
|
5
|
+
"@id": "npmd:@undefineds.co/xpod",
|
|
6
|
+
"components": [
|
|
7
|
+
{
|
|
8
|
+
"@id": "undefineds:dist/storage/rdf/RdfTextIndex.jsonld#RdfTextIndex",
|
|
9
|
+
"@type": "Class",
|
|
10
|
+
"requireElement": "RdfTextIndex",
|
|
11
|
+
"extends": [
|
|
12
|
+
"undefineds:dist/storage/rdf/types.jsonld#RdfTextIndexSyncLike"
|
|
13
|
+
],
|
|
14
|
+
"parameters": [
|
|
15
|
+
{
|
|
16
|
+
"@id": "undefineds:dist/storage/rdf/RdfTextIndex.jsonld#RdfTextIndex_options_path",
|
|
17
|
+
"range": "xsd:string"
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"@id": "undefineds:dist/storage/rdf/RdfTextIndex.jsonld#RdfTextIndex_options_maxSourceBytes",
|
|
21
|
+
"range": {
|
|
22
|
+
"@type": "ParameterRangeUnion",
|
|
23
|
+
"parameterRangeElements": [
|
|
24
|
+
"xsd:number",
|
|
25
|
+
{
|
|
26
|
+
"@type": "ParameterRangeUndefined"
|
|
27
|
+
}
|
|
28
|
+
]
|
|
29
|
+
}
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
"@id": "undefineds:dist/storage/rdf/RdfTextIndex.jsonld#RdfTextIndex_options_maxChunksPerSource",
|
|
33
|
+
"range": {
|
|
34
|
+
"@type": "ParameterRangeUnion",
|
|
35
|
+
"parameterRangeElements": [
|
|
36
|
+
"xsd:number",
|
|
37
|
+
{
|
|
38
|
+
"@type": "ParameterRangeUndefined"
|
|
39
|
+
}
|
|
40
|
+
]
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
],
|
|
44
|
+
"memberFields": [
|
|
45
|
+
{
|
|
46
|
+
"@id": "undefineds:dist/storage/rdf/RdfTextIndex.jsonld#RdfTextIndex__member_options",
|
|
47
|
+
"memberFieldName": "options"
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
"@id": "undefineds:dist/storage/rdf/RdfTextIndex.jsonld#RdfTextIndex__member_sqliteRuntime",
|
|
51
|
+
"memberFieldName": "sqliteRuntime"
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
"@id": "undefineds:dist/storage/rdf/RdfTextIndex.jsonld#RdfTextIndex__member_db",
|
|
55
|
+
"memberFieldName": "db"
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
"@id": "undefineds:dist/storage/rdf/RdfTextIndex.jsonld#RdfTextIndex__member_constructor",
|
|
59
|
+
"memberFieldName": "constructor"
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
"@id": "undefineds:dist/storage/rdf/RdfTextIndex.jsonld#RdfTextIndex__member_open",
|
|
63
|
+
"memberFieldName": "open"
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
"@id": "undefineds:dist/storage/rdf/RdfTextIndex.jsonld#RdfTextIndex__member_close",
|
|
67
|
+
"memberFieldName": "close"
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
"@id": "undefineds:dist/storage/rdf/RdfTextIndex.jsonld#RdfTextIndex__member_clear",
|
|
71
|
+
"memberFieldName": "clear"
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
"@id": "undefineds:dist/storage/rdf/RdfTextIndex.jsonld#RdfTextIndex__member_schemaVersion",
|
|
75
|
+
"memberFieldName": "schemaVersion"
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
"@id": "undefineds:dist/storage/rdf/RdfTextIndex.jsonld#RdfTextIndex__member_sourceMetadata",
|
|
79
|
+
"memberFieldName": "sourceMetadata"
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
"@id": "undefineds:dist/storage/rdf/RdfTextIndex.jsonld#RdfTextIndex__member_recordRebuildStatus",
|
|
83
|
+
"memberFieldName": "recordRebuildStatus"
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
"@id": "undefineds:dist/storage/rdf/RdfTextIndex.jsonld#RdfTextIndex__member_rebuildStatus",
|
|
87
|
+
"memberFieldName": "rebuildStatus"
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
"@id": "undefineds:dist/storage/rdf/RdfTextIndex.jsonld#RdfTextIndex__member_indexText",
|
|
91
|
+
"memberFieldName": "indexText"
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
"@id": "undefineds:dist/storage/rdf/RdfTextIndex.jsonld#RdfTextIndex__member_moveSource",
|
|
95
|
+
"memberFieldName": "moveSource"
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
"@id": "undefineds:dist/storage/rdf/RdfTextIndex.jsonld#RdfTextIndex__member_deleteSource",
|
|
99
|
+
"memberFieldName": "deleteSource"
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
"@id": "undefineds:dist/storage/rdf/RdfTextIndex.jsonld#RdfTextIndex__member_search",
|
|
103
|
+
"memberFieldName": "search"
|
|
104
|
+
},
|
|
105
|
+
{
|
|
106
|
+
"@id": "undefineds:dist/storage/rdf/RdfTextIndex.jsonld#RdfTextIndex__member_estimateSearchCardinality",
|
|
107
|
+
"memberFieldName": "estimateSearchCardinality"
|
|
108
|
+
},
|
|
109
|
+
{
|
|
110
|
+
"@id": "undefineds:dist/storage/rdf/RdfTextIndex.jsonld#RdfTextIndex__member_stats",
|
|
111
|
+
"memberFieldName": "stats"
|
|
112
|
+
},
|
|
113
|
+
{
|
|
114
|
+
"@id": "undefineds:dist/storage/rdf/RdfTextIndex.jsonld#RdfTextIndex__member_termDocumentFrequency",
|
|
115
|
+
"memberFieldName": "termDocumentFrequency"
|
|
116
|
+
},
|
|
117
|
+
{
|
|
118
|
+
"@id": "undefineds:dist/storage/rdf/RdfTextIndex.jsonld#RdfTextIndex__member_initializeSchema",
|
|
119
|
+
"memberFieldName": "initializeSchema"
|
|
120
|
+
},
|
|
121
|
+
{
|
|
122
|
+
"@id": "undefineds:dist/storage/rdf/RdfTextIndex.jsonld#RdfTextIndex__member_ensureSourceKeyColumn",
|
|
123
|
+
"memberFieldName": "ensureSourceKeyColumn"
|
|
124
|
+
},
|
|
125
|
+
{
|
|
126
|
+
"@id": "undefineds:dist/storage/rdf/RdfTextIndex.jsonld#RdfTextIndex__member_ensureChunkRetrievalColumns",
|
|
127
|
+
"memberFieldName": "ensureChunkRetrievalColumns"
|
|
128
|
+
},
|
|
129
|
+
{
|
|
130
|
+
"@id": "undefineds:dist/storage/rdf/RdfTextIndex.jsonld#RdfTextIndex__member_ensureEntityProvenanceColumns",
|
|
131
|
+
"memberFieldName": "ensureEntityProvenanceColumns"
|
|
132
|
+
},
|
|
133
|
+
{
|
|
134
|
+
"@id": "undefineds:dist/storage/rdf/RdfTextIndex.jsonld#RdfTextIndex__member_backfillTermPostings",
|
|
135
|
+
"memberFieldName": "backfillTermPostings"
|
|
136
|
+
},
|
|
137
|
+
{
|
|
138
|
+
"@id": "undefineds:dist/storage/rdf/RdfTextIndex.jsonld#RdfTextIndex__member_upsertSource",
|
|
139
|
+
"memberFieldName": "upsertSource"
|
|
140
|
+
},
|
|
141
|
+
{
|
|
142
|
+
"@id": "undefineds:dist/storage/rdf/RdfTextIndex.jsonld#RdfTextIndex__member_chunkText",
|
|
143
|
+
"memberFieldName": "chunkText"
|
|
144
|
+
},
|
|
145
|
+
{
|
|
146
|
+
"@id": "undefineds:dist/storage/rdf/RdfTextIndex.jsonld#RdfTextIndex__member_estimateDatabaseBytes",
|
|
147
|
+
"memberFieldName": "estimateDatabaseBytes"
|
|
148
|
+
},
|
|
149
|
+
{
|
|
150
|
+
"@id": "undefineds:dist/storage/rdf/RdfTextIndex.jsonld#RdfTextIndex__member_toSearchResult",
|
|
151
|
+
"memberFieldName": "toSearchResult"
|
|
152
|
+
},
|
|
153
|
+
{
|
|
154
|
+
"@id": "undefineds:dist/storage/rdf/RdfTextIndex.jsonld#RdfTextIndex__member_entitiesForChunks",
|
|
155
|
+
"memberFieldName": "entitiesForChunks"
|
|
156
|
+
},
|
|
157
|
+
{
|
|
158
|
+
"@id": "undefineds:dist/storage/rdf/RdfTextIndex.jsonld#RdfTextIndex__member_entitiesForChunk",
|
|
159
|
+
"memberFieldName": "entitiesForChunk"
|
|
160
|
+
},
|
|
161
|
+
{
|
|
162
|
+
"@id": "undefineds:dist/storage/rdf/RdfTextIndex.jsonld#RdfTextIndex__member_requireDb",
|
|
163
|
+
"memberFieldName": "requireDb"
|
|
164
|
+
}
|
|
165
|
+
],
|
|
166
|
+
"constructorArguments": [
|
|
167
|
+
{
|
|
168
|
+
"@id": "undefineds:dist/storage/rdf/RdfTextIndex.jsonld#RdfTextIndex_options__constructorArgument",
|
|
169
|
+
"fields": [
|
|
170
|
+
{
|
|
171
|
+
"keyRaw": "path",
|
|
172
|
+
"value": {
|
|
173
|
+
"@id": "undefineds:dist/storage/rdf/RdfTextIndex.jsonld#RdfTextIndex_options_path"
|
|
174
|
+
}
|
|
175
|
+
},
|
|
176
|
+
{
|
|
177
|
+
"keyRaw": "maxSourceBytes",
|
|
178
|
+
"value": {
|
|
179
|
+
"@id": "undefineds:dist/storage/rdf/RdfTextIndex.jsonld#RdfTextIndex_options_maxSourceBytes"
|
|
180
|
+
}
|
|
181
|
+
},
|
|
182
|
+
{
|
|
183
|
+
"keyRaw": "maxChunksPerSource",
|
|
184
|
+
"value": {
|
|
185
|
+
"@id": "undefineds:dist/storage/rdf/RdfTextIndex.jsonld#RdfTextIndex_options_maxChunksPerSource"
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
]
|
|
189
|
+
}
|
|
190
|
+
]
|
|
191
|
+
}
|
|
192
|
+
]
|
|
193
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { Quad } from '@rdfjs/types';
|
|
2
|
+
import type { RdfTextChunkInput, RdfTextSourceInput } from './types';
|
|
3
|
+
export type TextIndexPolicyRole = 'searchableText' | 'displayOnlyText' | 'sensitiveText' | 'structured' | 'relation' | 'system';
|
|
4
|
+
export declare function rdfTextIndexPolicyRole(predicate: string): TextIndexPolicyRole;
|
|
5
|
+
export declare function createRdfEntityTextChunks(source: RdfTextSourceInput, quads: Quad[], options?: RdfEntityTextProjectionOptions): RdfTextChunkInput[];
|
|
6
|
+
export declare function createRdfEntityTextChunksFromText(source: RdfTextSourceInput, text: string, options?: RdfEntityTextProjectionOptions): Promise<RdfTextChunkInput[]>;
|
|
7
|
+
export interface RdfEntityTextProjectionOptions {
|
|
8
|
+
maxFieldBytes?: number;
|
|
9
|
+
}
|
|
10
|
+
export declare function parseRdfTextProjectionQuads(source: RdfTextSourceInput, text: string): Promise<Quad[]>;
|