@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
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{c as e}from"./dashboard-8C6o666W.js";const c=[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]],a=e("refresh-cw",c);export{a as R};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as i}from"./dashboard-8C6o666W.js";const n="/api/admin";async function l(t={}){try{const e=await fetch(`${n}/status`,{signal:t.signal});if(e.ok)return await e.json()}catch(e){console.error("Failed to get admin status:",e)}return null}async function u(t={}){try{const e=await fetch(`${n}/config`,{signal:t.signal});if(e.ok)return await e.json()}catch(e){console.error("Failed to get admin config:",e)}return null}async function h(t,e={}){try{const a=t?"?baseUrl="+encodeURIComponent(t):"",r=await fetch(n+"/public-ip"+a,{signal:e.signal});if(r.ok)return await r.json()}catch(a){console.error("Failed to get public ip check:",a)}return null}async function $(t){try{return(await fetch(`${n}/config`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({env:t})})).ok}catch(e){return console.error("Failed to update admin config:",e),!1}}async function k(){try{return(await fetch(`${n}/restart`,{method:"POST"})).ok}catch(t){return console.error("Failed to trigger restart:",t),!1}}async function g(t={}){try{const e=await fetch("/service/status",{signal:t.signal});if(e.ok)return await e.json()}catch(e){console.error("Failed to get gateway status:",e)}return null}async function v(t={}){try{const a=S(t).toString(),r=await fetch(`${n}/rdf/stats${a?`?${a}`:""}`);if(r.ok)return await r.json()}catch(e){console.error("Failed to get RDF stats:",e)}return null}function S(t){const e=new URLSearchParams;return c(e,"cacheScopeQuery",t.cacheScopeQuery),c(e,"cacheScopePrincipal",t.cacheScopePrincipal),c(e,"cacheScopeBasePath",t.cacheScopeBasePath),c(e,"cacheScopeMode",t.cacheScopeMode),c(e,"cacheScopeAuthorizationModel",t.cacheScopeAuthorizationModel),c(e,"cacheScopePermissionVersion",t.cacheScopePermissionVersion),c(e,"cacheScopeLimit",t.cacheScopeLimit),e}function c(t,e,a){a!==void 0&&a!==""&&t.set(e,String(a))}async function d(t){try{const e=new URLSearchParams;t?.limit&&e.set("limit",t.limit.toString()),t?.level&&t.level!=="all"&&e.set("level",t.level),t?.source&&t.source!=="all"&&e.set("source",t.source);const a=e.toString(),r=await fetch(`${n}/logs${a?`?${a}`:""}`);if(r.ok){const s=await r.json();return Array.isArray(s)?s:s.logs??[]}}catch(e){console.error("Failed to get logs:",e)}return[]}async function m(t){try{const e=new URLSearchParams;t?.lines&&e.set("lines",t.lines.toString());const a=e.toString(),r=await fetch(`${n}/logs/file${a?`?${a}`:""}`);if(r.ok)return await r.json()}catch(e){console.error("Failed to get log file tail:",e)}return null}async function A(){const[t,e,a,r,s,o]=await Promise.all([g(),l(),u(),f(),d({limit:200}),m({lines:120})]);return{generatedAt:new Date().toISOString(),gatewayStatus:t,adminStatus:e,sanitizedConfig:{env:a?.env??{},secrets:a?.secrets??{}},ddnsStatus:r,recentLogs:s,logFile:o}}function F(t,e){const a=new EventSource(`${n}/logs/stream`);return a.onmessage=r=>{try{const s=JSON.parse(r.data);s.logs&&t(s.logs)}catch(s){console.error("Failed to parse log data:",s)}},a.onerror=r=>{console.error("Log stream error:",r),e?.(r)},()=>{a.close()}}function y(t){return t?t.startsWith("http://")||t.startsWith("https://")?t:`https://${t}/`:""}function w(t,e,a=""){return e?.baseUrl||y(e?.fqdn)||t.CSS_BASE_URL||a}async function f(t={}){try{const e=await fetch(`${n}/ddns`,{signal:t.signal});if(e.ok)return await e.json()}catch(e){console.error("Failed to get ddns status:",e)}return null}async function b(t={}){const[e,a,r,s]=await Promise.all([g(t),l(t),u(t),f(t)]),o=await h(w(r?.env??{},s),t);return{servicesData:e,adminData:a,configData:r,ddnsData:s,publicCheck:o,checkedAt:new Date}}const p=i.createContext(null);function C(){return i.useContext(p)}export{p as S,d as a,A as b,m as c,f as d,u as e,b as f,v as g,h,$ as i,w as r,F as s,k as t,C as u};
|
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
<meta charset="UTF-8" />
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
6
6
|
<title>Xpod Dashboard</title>
|
|
7
|
-
<script type="module" crossorigin src="/dashboard/assets/dashboard-
|
|
8
|
-
<link rel="stylesheet" crossorigin href="/dashboard/assets/dashboard-
|
|
7
|
+
<script type="module" crossorigin src="/dashboard/assets/dashboard-8C6o666W.js"></script>
|
|
8
|
+
<link rel="stylesheet" crossorigin href="/dashboard/assets/dashboard-CSdewNeA.css">
|
|
9
9
|
</head>
|
|
10
10
|
<body>
|
|
11
11
|
<div id="root"></div>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as p,j as n,c as Be,B as I,I as Y,e as lt}from"./settings-B30oMfZq.js";import{C as $e,a as _e,b as De,c as Me,d as Le,B as Ke}from"./card-B_bXSIn-.js";import{T as pt}from"./workspace-layout-Dv1Yn9Ci.js";function ft(e){if(!Re(e))throw new Error("Applet layout descriptor must be an object");if(typeof e.type!="string")throw new Error("Applet layout descriptor type must be a string");switch(e.type){case"single-pane":case"two-pane":return ge(e.context),e;case"three-pane":return ge(e.context),e;default:throw new Error(`Unsupported applet layout type: ${e.type}`)}}function Re(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function ge(e){if(e!==void 0){if(!Re(e))throw new Error("Applet layout descriptor context must be an object");if("collapsible"in e&&typeof e.collapsible!="boolean")throw new Error("Applet layout descriptor context.collapsible must be a boolean");if("initiallyCollapsed"in e&&typeof e.initiallyCollapsed!="boolean")throw new Error("Applet layout descriptor context.initiallyCollapsed must be a boolean")}}const mt=ft;function yt(e,t){return ht(e,t)}function ht(e,t){const s=wt(e),i=e.createController(t);return s.type==="single-pane"?{layout:"single-pane",controller:i,element:p.createElement(s.render,{controller:i,host:t})}:s.type==="two-pane"?{layout:"two-pane",controller:i,slots:{listHeader:p.createElement(s.slots.listHeader,{controller:i,host:t}),list:p.createElement(s.slots.list,{controller:i,host:t}),mainHeader:p.createElement(s.slots.mainHeader,{controller:i,host:t}),main:p.createElement(s.slots.main,{controller:i,host:t})}}:{layout:"three-pane",controller:i,contextConfig:s.contextConfig,slots:{listHeader:p.createElement(s.slots.listHeader,{controller:i,host:t}),list:p.createElement(s.slots.list,{controller:i,host:t}),mainHeader:p.createElement(s.slots.mainHeader,{controller:i,host:t}),main:p.createElement(s.slots.main,{controller:i,host:t}),context:p.createElement(s.slots.context,{controller:i,host:t})}}}function wt(e){if("layout"in e){const t=At(e.layout),s=mt(t.descriptor),i=s.type;if(e.manifest.layout!==i)throw new Error(`Applet manifest layout ${e.manifest.layout} does not match descriptor layout ${i}`);if(i==="single-pane"){if(!("render"in t))throw new Error("Applet descriptor single-pane render must be a function");return L(t.render,"Applet descriptor single-pane render"),{type:"single-pane",render:t.render}}if(!("slots"in t))throw new Error(`Applet descriptor declares ${i} but no slots were provided`);return i==="two-pane"?(re(t.slots,"Applet descriptor two-pane"),{type:"two-pane",slots:t.slots}):(xt(t.slots,"Applet descriptor three-pane"),{type:"three-pane",contextConfig:s.context,slots:t.slots})}if(e.manifest.layout==="single-pane"){if(!("render"in e))throw new Error("Applet manifest declares single-pane but no single-pane renderer was provided");return L(e.render,"Applet single-pane render"),{type:"single-pane",render:e.render}}if(e.manifest.layout==="two-pane"&&"slots"in e)return re(e.slots,"Applet two-pane"),{type:"two-pane",slots:e.slots};throw new Error(`Applet manifest declares ${e.manifest.layout} but no supported applet layout was provided`)}function re(e,t){gt(e,t),L(e.listHeader,`${t} slot listHeader`),L(e.list,`${t} slot list`),L(e.mainHeader,`${t} slot mainHeader`),L(e.main,`${t} slot main`)}function xt(e,t){re(e,t),L(e.context,`${t} slot context`)}function gt(e,t){if(typeof e!="object"||e===null)throw new Error(`${t} slots must be an object`)}function L(e,t){if(typeof e!="function")throw new Error(`${t} must be a function`)}function At(e){if(typeof e!="object"||e===null||Array.isArray(e))throw new Error("Applet descriptor layout must be an object");if(!("descriptor"in e)||e.descriptor===void 0)throw new Error("Applet descriptor required");return e}const bt=p.createContext(null);function Ct(e){return n.jsx("nav",{className:Be("space-y-1 p-3",e.className),...e})}function Et({selected:e,className:t,onClick:s,...i}){const c=p.useContext(bt);return n.jsx("button",{type:"button","aria-current":e?"page":void 0,className:Be("flex w-full items-center rounded-md px-3 py-2 text-left text-sm hover:bg-accent aria-[current=page]:bg-accent aria-[current=page]:font-medium",t),onClick:a=>{s?.(a),c?.showMain()},...i})}const ae=["openai","anthropic","kimi","bailian","deepseek"],Te="AI Connection request failed. Please try again.";function oe(e){const t=new URL(e);if(t.protocol!=="https:"&&t.protocol!=="http:")throw new Error("Current Pod URL must use HTTP or HTTPS");return t.origin}function jt({webId:e,podBaseUrl:t,authenticatedFetch:s}){const i=oe(t),c=async(u,l,w,x={})=>{const b=await s(`${i}${u}`,{method:l,credentials:"omit",mode:"cors",headers:{accept:"application/json",...w?{"content-type":"application/json"}:{}},...w?{body:JSON.stringify(w)}:{}}),C=await Nt(b);if(!b.ok)throw new Error(vt(C,b.status,x));return C},a=u=>(de(u),`/api/ai/gateway/providers/${u}`),o=async(u,l,w,x)=>{const b=await c(`${a(u)}${l}`,w,x,{provider:u});return $t(b,u)};return{webId:e,apiBase:i,getServiceAccess(){return c("/api/applets/service-access/ai-connection","GET")},async listProviders(){const u=await c("/api/ai/connections/providers","GET");return Array.isArray(u.data)?u.data.map(Ft).filter(te):[]},async listModels(){const u=await c("/v1/models","GET");return Array.isArray(u.data)?u.data.map(It).filter(te):[]},async listGatewayKeys(){const u=await c("/api/ai/gateway/keys","GET");return Array.isArray(u.data)?u.data.map(Z).filter(te):[]},async createGatewayKey(u){const l=await c("/api/ai/gateway/keys","POST",_(u));if(typeof l.key!="string"||!l.key)throw new Error("AI Connection did not return the one-time Gateway key");const w=Z(l.record);if(!w)throw new Error("AI Connection returned an invalid Gateway key record");return{plaintext:l.key,record:w}},async revokeGatewayKey(u){const l=await c(`/api/ai/gateway/keys/${encodeURIComponent(u)}`,"DELETE");return Z(l.record)},async beginConnect(u,l){return await o(u,"/connect/begin","POST",{mode:l})},connectStatus(u,l){if(!l.attemptId)throw new Error("Connect attempt id is required");const w=new URLSearchParams({state:l.state??"",signature:l.signature??""});return o(u,`/connect/status/${encodeURIComponent(l.attemptId)}?${w}`,"GET")},completeApiKey(u,l,w,x){return o(u,"/connect/complete-api-key","POST",_({attemptId:l.attemptId,state:l.state,signature:l.signature,apiKey:w,accountLabel:x}))},pollDevice(u,l){return o(u,"/connect/poll","POST",_({attemptId:l.attemptId,state:l.state,signature:l.signature}))},async disconnect(u){const l=await c(`${a(u)}/connect`,"DELETE");return Bt(l.record)},quota(u,l=!1){return c(`${a(u)}/quota/${l?"refresh":"status"}`,l?"POST":"GET",l?{}:void 0,{provider:u})}}}function ce(e){return e instanceof Error?Ae(e.message):Ae(String(e))}function vt(e,t,s={}){const i=St(e),c=i?Q(i,s.provider):void 0;if(c)return c;const a=M(e)&&typeof e.error=="string"?e.error:void 0;if(a){const o=Q(a,s.provider);if(o)return o;if(a==="AI Connection service identity is unavailable")return a}return t===401?"Please sign in again to continue.":t===403?"AI Connection permission was denied.":t===404&&s.provider?`${se(s.provider)} connection is not configured.`:t===429?"AI Connection is rate limited. Please try again later.":t===503?"AI Connection service is unavailable.":Te}function Ae(e){const t=Q(e);if(t)return t;const s=e.split(":",1)[0]?.trim(),i=s?Q(s):void 0;return i||(e==="AI Connection service identity is unavailable"?e:e.startsWith("invalid_")?"AI Connection returned an invalid response.":Te)}function St(e){if(M(e)){if(typeof e.code=="string")return e.code;if(typeof e.errorCode=="string")return e.errorCode;if(typeof e.error=="string"&&/^[a-z][a-z0-9_:-]{0,80}$/i.test(e.error))return e.error}}function Q(e,t){switch(e.trim().toLowerCase().replace(/-/g,"_")){case"not_configured":case"notconfigured":return t?`${se(t)} connection is not configured.`:"AI provider connection is not configured.";case"unsupported":return t?`${se(t)} does not support this operation.`:"This AI Connection operation is not supported.";case"service_identity_unavailable":return"AI Connection service identity is unavailable";case"unauthorized":return"Please sign in again to continue.";case"forbidden":case"permission_denied":return"AI Connection permission was denied.";case"rate_limited":return"AI Connection is rate limited. Please try again later.";case"service_unavailable":return"AI Connection service is unavailable.";default:return}}function se(e){switch(e){case"openai":return"OpenAI";case"anthropic":return"Anthropic";case"kimi":return"Kimi";case"bailian":return"Bailian";case"deepseek":return"DeepSeek"}}async function Nt(e){const t=await e.text();if(t)try{return JSON.parse(t)}catch{throw new Error(`AI Connection returned invalid JSON (${e.status})`)}}function de(e){if(!ae.includes(e))throw new Error(`Unsupported AI provider: ${e}`)}function Z(e){if(!(!M(e)||typeof e.id!="string"||typeof e.owner!="string"||!Array.isArray(e.scopes)||!e.scopes.every(t=>typeof t=="string")||typeof e.createdAt!="string"))return _({id:e.id,owner:e.owner,scopes:e.scopes,createdAt:e.createdAt,expiresAt:N(e.expiresAt),lastUsedAt:N(e.lastUsedAt),revokedAt:N(e.revokedAt),name:N(e.name)})}function It(e){if(!M(e)||typeof e.id!="string"||kt(e.id))return;const t=V(e.provider)??V(e.providerId)??V(e.owned_by)??Pt(e.id);if(t)return _({id:e.id,provider:t,displayName:N(e.displayName)??N(e.name),contextWindow:be(e.contextWindow)??be(e.context_window),protocols:Array.isArray(e.protocols)?e.protocols.filter(s=>typeof s=="string"):void 0})}function kt(e){const t=e.toLowerCase();return t==="linx"||t==="linx-lite"||t==="undefineds/linx"||t==="undefineds/linx-lite"}function V(e){if(typeof e!="string")return;const t=e.toLowerCase();return t==="alibaba"||t==="dashscope"?"bailian":ae.includes(t)?t:void 0}function Pt(e){const t=e.split("/",1)[0];return e.includes("/")?V(t):void 0}function be(e){return typeof e=="number"&&Number.isFinite(e)?e:void 0}function Ft(e){if(!(!M(e)||typeof e.provider!="string"||!Dt(e.status)||!M(e.connect)||!Array.isArray(e.connect.modes)||!e.connect.modes.every(Ue)||typeof e.connect.configured!="boolean"))return de(e.provider),_({provider:e.provider,status:e.status,authMode:N(e.authMode),accountLabel:N(e.accountLabel),expiresAt:N(e.expiresAt),reauthRequired:typeof e.reauthRequired=="boolean"?e.reauthRequired:void 0,credentialIri:N(e.credentialIri),version:typeof e.version=="number"?e.version:void 0,connect:_({modes:[...e.connect.modes],configured:e.connect.configured,message:N(e.connect.message)})})}function Bt(e){if(!(!M(e)||typeof e.id!="string"||typeof e.credentialIri!="string"||typeof e.webId!="string"||typeof e.provider!="string"||typeof e.authMode!="string"||typeof e.status!="string"))return de(e.provider),_({id:e.id,credentialIri:e.credentialIri,webId:e.webId,provider:e.provider,authMode:e.authMode,status:e.status,accountLabel:N(e.accountLabel),expiresAt:N(e.expiresAt),version:typeof e.version=="number"?e.version:void 0,reauthRequired:typeof e.reauthRequired=="boolean"?e.reauthRequired:void 0})}function $t(e,t){if(!M(e)||!Ue(e.mode)||!_t(e.status)||e.provider!==t)throw new Error("AI Connection returned an invalid Connect response");return _({mode:e.mode,status:e.status,provider:t,attemptId:N(e.attemptId),state:N(e.state),signature:N(e.signature),expiresAt:N(e.expiresAt),authorizationUrl:ee(e.authorizationUrl),userCode:N(e.userCode),verificationUri:ee(e.verificationUri),verificationUriComplete:ee(e.verificationUriComplete),intervalSeconds:typeof e.intervalSeconds=="number"?e.intervalSeconds:void 0,apiKeyManagementSupported:typeof e.apiKeyManagementSupported=="boolean"?e.apiKeyManagementSupported:void 0,credentialId:N(e.credentialId),message:N(e.message)})}function _(e){return Object.fromEntries(Object.entries(e).filter(([,t])=>t!==void 0))}function N(e){return typeof e=="string"?e:void 0}function ee(e){if(typeof e=="string")try{const t=new URL(e);return t.protocol==="https:"||t.protocol==="http:"?t.href:void 0}catch{return}}function Ue(e){return e==="browserAssistedApiKey"||e==="deviceCodeOAuth"||e==="connectUnsupported"}function _t(e){return e==="pending"||e==="authorization_pending"||e==="slow_down"||e==="completed"||e==="expired"||e==="cancelled"||e==="unsupported"}function Dt(e){return e==="connected"||e==="disconnected"||e==="reauthRequired"}function M(e){return!!e&&typeof e=="object"&&!Array.isArray(e)}function te(e){return e!==void 0}const Ce="co.undefineds.ai-connection",Mt=new Set(["providerCredentials","providerDefinitions","gatewayAccessKeys","quotaSnapshots"]);function Ee(e,t){if(!J(e))throw new Error("invalid_descriptor");if(e.appletId!==Ce)throw new Error("invalid_applet_id");const s=e.service;if(!J(s)||typeof s.webId!="string"||typeof s.label!="string"||!Ht(s.webId))throw new Error("invalid_service");if(!Array.isArray(e.resources)||e.resources.length===0)throw new Error("invalid_empty_resources");const i=Ut(t),c=new Set,a=e.resources.map(o=>Lt(o,i,c));return{appletId:Ce,service:{webId:s.webId,label:s.label},resources:a}}function Lt(e,t,s){if(!J(e)||typeof e.id!="string"||typeof e.url!="string"||e.mediaType!=="text/turtle"||!J(e.access))throw new Error("invalid_resource");if(!Mt.has(e.id)||s.has(e.id))throw new Error("invalid_resource");Kt(e.url);let i;try{i=new URL(e.url)}catch{throw new Error("invalid_resource")}if(!Ot(i,t))throw new Error("invalid_resource");return s.add(e.id),{id:e.id,url:i.href,mediaType:"text/turtle",access:Tt(e.access)}}function Kt(e){if(/%(?![0-9a-fA-F]{2})/.test(e)||/%(?:2f|5c)/i.test(e)||e.includes("\\"))throw new Error("invalid_resource");const t=Rt(e);if(je(t))throw new Error("invalid_resource");try{const s=decodeURIComponent(t);if(s.includes("\\")||je(s))throw new Error("invalid_resource")}catch{throw new Error("invalid_resource")}}function Rt(e){const t=e.split("#",1)[0]??e;return(t.split("?",1)[0]??t).replace(/^[a-z][a-z0-9+.-]*:\/\/[^/\\?#]*/i,"")}function je(e){return e.split("/").some(t=>t==="."||t==="..")}function Tt(e){if(Object.keys(e).some(s=>s!=="read"&&s!=="append"&&s!=="write")||e.read!==!0||e.append!==!0||e.write!==!0)throw new Error("invalid_resource");return{read:!0,append:!0,write:!0}}function Ut(e){const t=new URL(e);if(t.protocol!=="http:"&&t.protocol!=="https:")throw new Error("invalid_current_pod");return t.pathname.endsWith("/")||(t.pathname=`${t.pathname}/`),t}function Ot(e,t){return(e.protocol==="http:"||e.protocol==="https:")&&e.origin===t.origin&&e.pathname.startsWith(t.pathname)}function Ht(e){try{const t=new URL(e);return t.protocol==="http:"||t.protocol==="https:"}catch{return!1}}function J(e){return!!e&&typeof e=="object"&&!Array.isArray(e)}const D=[{id:"openai",name:"OpenAI",browserMode:"browserAssistedApiKey",browserLabel:"打开官方控制台"},{id:"anthropic",name:"Anthropic",browserMode:"browserAssistedApiKey",browserLabel:"打开官方控制台"},{id:"kimi",name:"Kimi",browserMode:"deviceCodeOAuth",browserLabel:"浏览器鉴权"},{id:"bailian",name:"百炼",browserMode:"browserAssistedApiKey",browserLabel:"打开官方控制台"},{id:"deepseek",name:"DeepSeek",browserMode:"connectUnsupported",browserLabel:"浏览器鉴权不支持"}];if(D.map(e=>e.id).join(",")!==ae.join(","))throw new Error("AI Connection provider UI is out of sync with the client catalog");function qt(e){const t=e.solid.session.getSnapshot(),s=zt(t),i=e.solid.pod,a=t.status==="authenticated"&&i.status==="ready"?jt({webId:t.webId,podBaseUrl:i.current.podUrl,authenticatedFetch:e.solid.session.fetch}):null;let o="openai",u="",l={},w={},x,b=0,C,j=a?"checking":"missing",f;const g=new Set,m=()=>g.forEach(y=>y()),v={client:a,sessionStatus:s,podStatus:i.status,error:i.status==="error"?i.error:t.status==="error"&&!t.webId?t.error:void 0,login:e.solid.requireLogin,openExternal:e.navigation.openExternal,clientConfigurationBridge:e.capabilities.aiClientConfiguration,get selectedProvider(){return o},get searchQuery(){return u},get providerStates(){return l},get providerSummaries(){return w},get providerLoadError(){return x},get serviceAccessState(){return j},selectProvider(y){o!==y&&(o=y,m())},selectFirstUnconfiguredProvider(){const y=D.find(h=>l[h.id]==="unconfigured")??D[0];y&&v.selectProvider(y.id)},setSearchQuery(y){u!==y&&(u=y,m())},setProviderState(y,h){if(l[y]===h)return;b+=1,l={...l,[y]:h};const E=Wt(y,h);E&&(w={...w,[y]:E}),m()},async ensureServiceAccess(){return f||(f=(async()=>{if(!a){j="missing",m();return}if(!e.solid.permissions){j="capabilityUnavailable",m();return}if(e.solid.pod.status!=="ready"){j="missing",m();return}j="checking",m();try{const y=Ee(await a.getServiceAccess(),e.solid.pod.current.podUrl),h=await e.solid.permissions.ensureAgentAccess(y);j=h.status==="granted"?"granted":h.status,m(),h.status==="granted"&&await v.loadProviders()}catch(y){j=y instanceof Error&&y.message.startsWith("invalid_")?"invalidDescriptor":"permissionDenied",m()}finally{f=void 0}})(),f)},async revokeServiceAccess(){if(!a){j="missing",m();return}if(!e.solid.permissions){j="capabilityUnavailable",m();return}if(e.solid.pod.status!=="ready"){j="missing",m();return}j="checking",m();try{const y=Ee(await a.getServiceAccess(),e.solid.pod.current.podUrl),h=await e.solid.permissions.revokeAgentAccess(y);j=h.status==="granted"?"granted":h.status,m()}catch(y){j=y instanceof Error&&y.message.startsWith("invalid_")?"invalidDescriptor":"permissionDenied",m()}},async loadProviders(){if(a)return C||(C=(async()=>{const y=b+1;b=y,x=void 0,m();try{const h=await a.listProviders();if(y!==b)return;w=Object.fromEntries(h.map(E=>[E.provider,E])),l=Object.fromEntries(D.map(E=>[E.id,Jt(w[E.id])])),m()}catch(h){if(y!==b)return;x=Xt(h),m()}finally{C=void 0}})(),C)},subscribe(y){return g.add(y),()=>g.delete(y)}};return v}function zt(e){return e.status==="initializing"?"authenticating":e.status==="authenticated"?"authenticated":e.status==="error"&&e.webId?"expired":"anonymous"}function ue(e){return p.useSyncExternalStore(e.subscribe,()=>e.selectedProvider,()=>e.selectedProvider)}function Oe(e){return p.useSyncExternalStore(e.subscribe,()=>e.searchQuery,()=>e.searchQuery)}function Gt(e){return p.useSyncExternalStore(e.subscribe,()=>e.providerStates,()=>e.providerStates)}function Vt(e){return p.useSyncExternalStore(e.subscribe,()=>e.providerSummaries,()=>e.providerSummaries)}function He(e){return p.useSyncExternalStore(e.subscribe,()=>e.providerLoadError,()=>e.providerLoadError)}function Qt(e){return p.useSyncExternalStore(e.subscribe,()=>e.serviceAccessState,()=>e.serviceAccessState)}function Jt(e){return!e||e.status==="disconnected"?"unconfigured":e.status==="reauthRequired"?"attention":e.authMode==="browserAssistedApiKey"?"configured":"connected"}function Wt(e,t){if(t==="configured")return{provider:e,status:"connected",authMode:"browserAssistedApiKey",connect:{modes:["browserAssistedApiKey"],configured:!0}};if(t==="connected")return{provider:e,status:"connected",connect:{modes:["deviceCodeOAuth","browserAssistedApiKey"],configured:!0}};if(t!=="attention"&&t!=="loading")return{provider:e,status:"disconnected",connect:{modes:["browserAssistedApiKey"],configured:!1}}}function Xt(e){return ce(e)}function Yt({controller:e}){const t=ue(e),s=Oe(e).trim().toLocaleLowerCase(),i=Gt(e),c=He(e),a=s?D.filter(o=>o.name.toLocaleLowerCase().includes(s)):D;return n.jsxs(Ct,{"aria-label":"AI 服务",children:[a.map(o=>n.jsx(Zt,{provider:o,selected:t===o.id,state:i[o.id]??"loading",onSelect:()=>e.selectProvider(o.id)},o.id)),a.length===0?n.jsx("p",{className:"px-3 py-6 text-center text-xs text-muted-foreground",children:"没有匹配的 Provider"}):null,c?n.jsxs("p",{className:"px-3 py-2 text-xs text-destructive",children:["Provider 状态读取失败:",c]}):null]})}function Zt({provider:e,selected:t,state:s,onSelect:i}){const c=`ai-connection-provider-${e.id}-status`,a=tn(s);return n.jsxs(Et,{selected:t,"aria-label":e.name,"aria-describedby":c,onClick:i,className:"gap-3 py-2.5",children:[n.jsx("span",{"aria-hidden":"true",className:"flex h-7 w-7 shrink-0 items-center justify-center rounded-md bg-muted text-[10px] font-semibold text-muted-foreground",children:en(e.id)}),n.jsx("span",{className:"min-w-0 flex-1 truncate",children:e.name}),n.jsx("span",{id:c,role:"status","aria-live":"polite",className:"shrink-0 text-[11px] font-normal text-muted-foreground",children:a})]})}function en(e){switch(e){case"openai":return"OA";case"anthropic":return"A";case"kimi":return"K";case"bailian":return"百";case"deepseek":return"DS"}}function tn(e){switch(e){case"unconfigured":return"未设置";case"configured":return"已配置";case"connected":return"已连接";case"attention":return"需处理";default:return"读取中"}}const nn=e=>e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),qe=(...e)=>e.filter((t,s,i)=>!!t&&t.trim()!==""&&i.indexOf(t)===s).join(" ").trim();var rn={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};const sn=p.forwardRef(({color:e="currentColor",size:t=24,strokeWidth:s=2,absoluteStrokeWidth:i,className:c="",children:a,iconNode:o,...u},l)=>p.createElement("svg",{ref:l,...rn,width:t,height:t,stroke:e,strokeWidth:i?Number(s)*24/Number(t):s,className:qe("lucide",c),...u},[...o.map(([w,x])=>p.createElement(w,x)),...Array.isArray(a)?a:[a]]));const P=(e,t)=>{const s=p.forwardRef(({className:i,...c},a)=>p.createElement(sn,{ref:a,iconNode:t,className:qe(`lucide-${nn(e)}`,i),...c}));return s.displayName=`${e}`,s};const an=[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]],on=P("Check",an);const cn=[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]],dn=P("Copy",cn);const un=[["path",{d:"M15 3h6v6",key:"1q9fwt"}],["path",{d:"M10 14 21 3",key:"gplh6r"}],["path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6",key:"a6xqqp"}]],ln=P("ExternalLink",un);const pn=[["path",{d:"M2.586 17.414A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814a6.5 6.5 0 1 0-4-4z",key:"1s6t7t"}],["circle",{cx:"16.5",cy:"7.5",r:".5",fill:"currentColor",key:"w0ekpg"}]],W=P("KeyRound",pn);const fn=[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]],X=P("LoaderCircle",fn);const mn=[["path",{d:"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4",key:"1uf3rs"}],["polyline",{points:"16 17 21 12 16 7",key:"1gabdz"}],["line",{x1:"21",x2:"9",y1:"12",y2:"12",key:"1uyos4"}]],yn=P("LogOut",mn);const hn=[["path",{d:"M12 17v4",key:"1riwvh"}],["path",{d:"m15.2 4.9-.9-.4",key:"12wd2u"}],["path",{d:"m15.2 7.1-.9.4",key:"1r2vl7"}],["path",{d:"m16.9 3.2-.4-.9",key:"3zbo91"}],["path",{d:"m16.9 8.8-.4.9",key:"1qr2dn"}],["path",{d:"m19.5 2.3-.4.9",key:"1rjrkq"}],["path",{d:"m19.5 9.7-.4-.9",key:"heryx5"}],["path",{d:"m21.7 4.5-.9.4",key:"17fqt1"}],["path",{d:"m21.7 7.5-.9-.4",key:"14zyni"}],["path",{d:"M22 13v2a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h7",key:"1tnzv8"}],["path",{d:"M8 21h8",key:"1ev6f3"}],["circle",{cx:"18",cy:"6",r:"3",key:"1h7g24"}]],wn=P("MonitorCog",hn);const xn=[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]],gn=P("Plus",xn);const An=[["path",{d:"M21 12a9 9 0 0 0-9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",key:"14sxne"}],["path",{d:"M3 3v5h5",key:"1xhq8a"}],["path",{d:"M3 12a9 9 0 0 0 9 9 9.75 9.75 0 0 0 6.74-2.74L21 16",key:"1hlbsb"}],["path",{d:"M16 16h5v5",key:"ccwih5"}]],bn=P("RefreshCcw",An);const Cn=[["path",{d:"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",key:"1357e3"}],["path",{d:"M3 3v5h5",key:"1xhq8a"}]],En=P("RotateCcw",Cn);const jn=[["path",{d:"M21 12a9 9 0 1 1-9-9c2.52 0 4.93 1 6.74 2.74L21 8",key:"1p45f6"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}]],vn=P("RotateCw",jn);const Sn=[["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}],["path",{d:"m21 21-4.3-4.3",key:"1qie3q"}]],Nn=P("Search",Sn);const In=[["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6",key:"4alrt4"}],["path",{d:"M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2",key:"v07s0e"}],["line",{x1:"10",x2:"10",y1:"11",y2:"17",key:"1uufr5"}],["line",{x1:"14",x2:"14",y1:"11",y2:"17",key:"xtxkd"}]],kn=P("Trash2",In),ve=["codex","claude-code","pi","codebuddy"],K={codex:"Codex","claude-code":"Claude Code",pi:"Pi",codebuddy:"CodeBuddy"};function Pn({bridge:e,endpoint:t,createGatewayKey:s}){const[i,c]=p.useState({}),[a,o]=p.useState({}),[u,l]=p.useState({}),[w,x]=p.useState();p.useEffect(()=>{if(!e)return;let f=!0;return Promise.all(ve.map(async g=>{let m;try{m=await e.inspect(g)}catch(v){m={status:"unavailable",message:O(v)}}f&&c(v=>({...v,[g]:m}))})),()=>{f=!1}},[e]);const b=async f=>{if(e){x(f);try{const g=await e.plan({client:f,endpoint:t});o(m=>({...m,[f]:g})),l(m=>({...m,[f]:""}))}catch(g){c(m=>({...m,[f]:{status:"unavailable",message:O(g)}}))}finally{x(void 0)}}},C=async f=>{const g=a[f];if(!e||!g||!s)return;x(f);let m,v=!1;try{m=await s(f),await e.apply({client:f,planId:g.planId,gatewayKey:m.gatewayKey,...g.confirmation?.required?{confirmation:{token:g.confirmation.token,targetHash:g.confirmation.targetHash}}:{}}),v=!0;const y=await e.verify({client:f,planId:g.planId});c(h=>({...h,[f]:y})),o(h=>({...h,[f]:void 0}))}catch(y){let h=O(y);if(m&&!v)try{await m.revoke()}catch(E){h=`${h};自动撤销 Gateway Key 失败:${O(E)}。请在“高级:Gateway Keys”中手动撤销。`}c(E=>({...E,[f]:Bn(y)?{status:"failedAndRestored",message:"配置验证失败,已自动恢复原配置。"}:{status:"unavailable",message:h}}))}finally{x(void 0)}},j=async f=>{if(e){x(f);try{const g=await e.restore(f);c(m=>({...m,[f]:g}))}catch(g){c(m=>({...m,[f]:{status:"unavailable",message:O(g)}}))}finally{x(void 0)}}};return n.jsxs($e,{children:[n.jsxs(_e,{children:[n.jsxs(De,{className:"flex items-center gap-2 text-base",children:[n.jsx(wn,{className:"h-4 w-4"}),"编码客户端"]}),n.jsx(Me,{children:"AI Connection 自动管理客户端访问密钥;Provider 凭证不会离开 Pod。"})]}),n.jsx(Le,{className:"space-y-2",children:ve.map(f=>{const g=i[f]??{status:e?"notConfigured":"unavailable",message:e?void 0:"当前 Host 不支持修改本机客户端配置。"},m=a[f],v=m?.confirmation,y=u[f]??"",h=!v?.required||y===v.token;return n.jsxs("div",{className:"space-y-3 rounded-lg border p-3",children:[n.jsxs("div",{className:"flex items-center justify-between gap-3",children:[n.jsxs("div",{children:[n.jsx("div",{className:"text-sm font-medium",children:K[f]}),n.jsx("div",{className:"mt-1 text-xs text-muted-foreground",children:g.message??Se(g.status)})]}),n.jsxs("div",{className:"flex items-center gap-2",children:[n.jsx(Ke,{variant:"secondary",children:Se(g.status)}),n.jsx(I,{variant:"outline",size:"sm",disabled:!e||!!w,onClick:()=>{b(f)},children:"配置"}),n.jsx(I,{variant:"ghost",size:"icon","aria-label":`恢复 ${K[f]} 配置`,disabled:!e||g.status==="notConfigured"||!!w,onClick:()=>{j(f)},children:n.jsx(En,{className:"h-4 w-4"})})]})]}),m?n.jsxs("div",{className:"space-y-2 rounded-md border bg-muted/20 p-3",children:[n.jsx("div",{className:"text-xs font-medium",children:"将执行以下更改"}),m.changes.map(E=>n.jsxs("div",{className:"text-xs text-muted-foreground",children:[n.jsx("span",{className:"font-mono",children:E.target})," · ",Fn(E.action),E.backup?" · 创建备份":""]},`${E.target}:${E.action}`)),v?.required?n.jsxs("div",{className:"space-y-2",children:[v.message?n.jsx("div",{className:"text-xs text-muted-foreground",children:v.message}):null,n.jsx(Y,{"aria-label":`输入确认码以应用 ${K[f]} 配置`,value:y,onChange:E=>l(z=>({...z,[f]:E.target.value}))})]}):null,n.jsxs("div",{className:"flex gap-2",children:[n.jsx(I,{size:"sm","aria-label":v?.required?`确认并应用 ${K[f]} 配置`:`应用 ${K[f]} 配置`,disabled:!s||!!w||!h,onClick:()=>{C(f)},children:v?.required?"确认并应用":"应用更改"}),n.jsx(I,{variant:"ghost",size:"sm",disabled:!!w,onClick:()=>{o(E=>({...E,[f]:void 0})),l(E=>({...E,[f]:void 0}))},children:"取消"})]})]}):null]},f)})})]})}function Fn(e){switch(e){case"update":return"更新";case"delete":return"删除";default:return"创建或更新"}}function Se(e){switch(e){case"configured":return"已配置";case"drifted":return"配置已变化";case"unverifiable":return"无法验证";case"failedAndRestored":return"已恢复";case"unavailable":return"当前不可用";default:return"未配置"}}function Bn(e){return!!(e&&typeof e=="object"&&"code"in e&&e.code==="verification_failed_restored")}function O(e){return ce(e)}function $n({providerName:e,quota:t,busy:s,disabled:i=!1,onRefresh:c}){return n.jsxs("div",{className:"space-y-2",children:[n.jsxs("div",{className:"flex items-center justify-between gap-2",children:[n.jsx("div",{className:"text-sm font-medium",children:"剩余额度"}),n.jsxs(I,{variant:"ghost",size:"sm","aria-label":`刷新 ${e} 额度`,disabled:s||i,onClick:c,children:[n.jsx(bn,{className:"mr-2 h-3.5 w-3.5"}),"刷新"]})]}),t?t.status==="unsupported"?n.jsxs(n.Fragment,{children:[n.jsx("p",{className:"text-sm",children:"官方额度接口不支持"}),n.jsxs("p",{className:"text-xs text-muted-foreground",children:["来源:",t.source]})]}):t.status==="error"?n.jsx("p",{className:"text-sm text-destructive",children:"额度查询失败"}):n.jsxs("div",{className:"space-y-1 text-sm",children:[typeof t.balance=="number"?n.jsxs("div",{children:["余额:",t.balance]}):null,t.windows.map((a,o)=>n.jsxs("div",{children:[a.name?`${a.name}:`:"",typeof a.remaining=="number"?`剩余 ${a.remaining}`:"官方数据可用"]},`${String(a.name)}-${o}`)),n.jsxs("p",{className:"text-xs text-muted-foreground",children:["来源:",t.source,t.stale?" · 数据可能已过期":""]})]}):n.jsx("p",{className:"text-xs text-muted-foreground",children:"尚未检查"})]})}function _n({definition:e,status:t,accountLabel:s,attempt:i,apiKey:c,busy:a,disabled:o=!1,error:u,quota:l,models:w,onApiKeyChange:x,onBeginApiKey:b,onBeginBrowser:C,onSaveApiKey:j,onDisconnect:f,onRefreshQuota:g}){const m=i?.mode==="browserAssistedApiKey"&&i.status==="pending",v=t==="configured",y=t==="connected";return n.jsxs("div",{children:[n.jsxs("header",{className:"flex items-start justify-between gap-4 pb-5",children:[n.jsxs("div",{className:"min-w-0",children:[n.jsx("h2",{className:"text-lg font-semibold text-foreground",children:e.name}),n.jsx("p",{className:"mt-1 text-sm text-muted-foreground",children:Dn(e.id)})]}),n.jsx(Ke,{variant:y||v?"default":"secondary",children:Mn(t)})]}),n.jsxs("section",{className:"border-t border-border/60 py-5","aria-label":"当前连接",children:[n.jsxs("div",{className:"mb-4",children:[n.jsx("h3",{className:"text-sm font-medium",children:"当前连接"}),s?n.jsx("p",{className:"mt-1 text-xs text-muted-foreground",children:Ln(s)}):n.jsx("p",{className:"mt-1 text-xs text-muted-foreground",children:"Provider 凭证加密保存在当前 Pod。"})]}),i?.userCode?n.jsxs("div",{className:"mb-4 border-l-2 border-primary bg-muted/30 px-3 py-2 text-sm",children:["验证码:",n.jsx("strong",{className:"font-mono",children:i.userCode})]}):null,n.jsx("div",{className:"flex flex-wrap gap-2",children:y?n.jsxs(n.Fragment,{children:[n.jsxs(I,{variant:"outline",size:"sm",disabled:a||o,onClick:C,children:[a?n.jsx(X,{className:"mr-2 h-4 w-4 animate-spin"}):n.jsx(vn,{className:"mr-2 h-4 w-4"}),"重新连接"]}),n.jsxs(I,{variant:"ghost",size:"sm",disabled:a||o,onClick:f,children:[n.jsx(yn,{className:"mr-2 h-4 w-4"}),"断开连接"]})]}):v?n.jsxs(n.Fragment,{children:[n.jsxs(I,{variant:"outline",size:"sm","aria-label":"更新 API Key",disabled:a||o,onClick:b,children:[n.jsx(W,{className:"mr-2 h-4 w-4"}),"更新 API Key"]}),n.jsx(I,{variant:"ghost",size:"sm",disabled:a||o,onClick:f,children:"移除配置"})]}):n.jsxs(n.Fragment,{children:[n.jsxs(I,{variant:"outline",size:"sm",disabled:a||o||e.browserMode==="connectUnsupported",onClick:C,children:[a?n.jsx(X,{className:"mr-2 h-4 w-4 animate-spin"}):n.jsx(ln,{className:"mr-2 h-4 w-4"}),e.browserLabel]}),n.jsxs(I,{variant:"outline",size:"sm","aria-label":`${e.name} API Key`,disabled:a||o,onClick:b,children:[n.jsx(W,{className:"mr-2 h-4 w-4"}),"配置 API Key"]})]})}),m?n.jsxs("div",{className:"mt-4 space-y-2",children:[n.jsx(Y,{type:"password",autoComplete:"off","aria-label":`${e.name} API Key 输入`,placeholder:"从官方控制台复制 API Key",value:c,onChange:h=>x(h.target.value)}),n.jsx(I,{size:"sm","aria-label":`保存 ${e.name} API Key`,disabled:!c.trim()||a||o,onClick:j,children:"保存 API Key"})]}):null,u?n.jsx("p",{className:"mt-3 text-sm text-destructive",children:u}):null]}),n.jsx("section",{className:"border-t border-border/60 py-5",children:n.jsx($n,{providerName:e.name,quota:l,busy:a,disabled:o,onRefresh:g})}),n.jsxs("section",{className:"border-t border-border/60 py-5",children:[n.jsx("h3",{className:"text-sm font-medium",children:"可用模型"}),w.length===0?n.jsx("p",{className:"mt-2 text-xs text-muted-foreground",children:"当前身份暂无可用模型"}):n.jsx("ul",{className:"mt-3 divide-y divide-border/50 text-sm",children:w.map(h=>n.jsxs("li",{className:"flex items-center justify-between gap-4 py-2.5",children:[n.jsx("span",{children:h.displayName??h.id}),h.displayName?n.jsx("span",{className:"truncate font-mono text-xs text-muted-foreground",children:h.id}):null]},h.id))})]})]})}function Dn(e){switch(e){case"openai":return"OpenAI 模型与编码能力";case"anthropic":return"Claude 模型与编码能力";case"kimi":return"Moonshot AI 模型服务";case"bailian":return"阿里云百炼模型服务";case"deepseek":return"DeepSeek 模型服务"}}function Mn(e){switch(e){case"pending":return"连接中";case"configured":return"已配置";case"connected":return"已连接";case"disconnected":return"未设置";case"reauthRequired":return"需要重新鉴权";case"failed":return"连接失败";default:return"未检查"}}function Ln(e){const t=e.indexOf("@");if(t>0){const s=e.slice(0,t);return`${s.length>1?`${s[0]}***${s[s.length-1]}`:`${s[0]}***`}${e.slice(t)}`}return e.length<=2?`${e[0]??""}***`:`${e[0]}***${e[e.length-1]}`}const Kn={};function Rn({client:e,openExternal:t=On,clientConfigurationBridge:s,selectedProvider:i,providerSummaries:c=Kn,providerLoadError:a,serviceAccessGranted:o=!1,onProviderStateChange:u}){const[l,w]=p.useState([]),[x,b]=p.useState(!0),[C,j]=p.useState(""),[f,g]=p.useState(!1),[m,v]=p.useState(),[y,h]=p.useState(),[E,z]=p.useState({}),[We,Xe]=p.useState([]),[le,T]=p.useState({}),[pe,fe]=p.useState({}),[Ye,Ze]=p.useState({}),[et,tt]=p.useState({}),[nt,me]=p.useState({}),[ye,he]=p.useState(!1),G=p.useRef(0),B=p.useCallback((r,d)=>{z(A=>({...A,[r]:d})),u?.(r,Un(d))},[u]);p.useEffect(()=>{z(Object.fromEntries(Object.values(c).filter(qn).map(r=>[r.provider,r.status==="connected"&&r.authMode==="browserAssistedApiKey"?"configured":r.status])))},[c]),p.useEffect(()=>{let r=!0;return b(!0),e.listGatewayKeys().then(d=>{r&&w(d)}).catch(d=>{r&&h($(d))}).finally(()=>{r&&b(!1)}),e.listModels().then(d=>{r&&Xe(d)}).catch(d=>{r&&h($(d))}),()=>{r=!1,G.current+=1}},[e]);const F=(r,d)=>{Ze(A=>({...A,[r]:d}))},k=(r,d)=>{tt(A=>({...A,[r]:d}))},we=p.useCallback(async r=>{const d=r.verificationUriComplete??r.authorizationUrl??r.verificationUri;d&&await t(d)},[t]),xe=async r=>{if(o){F(r,!0),k(r);try{const d=await e.beginConnect(r,"browserAssistedApiKey");T(S=>({...S,[r]:d}));const A=ie(d.status);if(B(r,A?"pending":d.status==="completed"?"configured":"failed"),!A&&d.status!=="completed"){k(r,d.message??Ne(d.status));return}await we(d)}catch(d){B(r,"failed"),k(r,$(d))}finally{F(r,!1)}}},rt=async r=>{if(!o||r.browserMode==="connectUnsupported")return;if(r.browserMode==="browserAssistedApiKey"){await xe(r.id);return}F(r.id,!0),k(r.id);const d=G.current+1;G.current=d;try{const A=await e.beginConnect(r.id,r.browserMode);if(T(S=>({...S,[r.id]:A})),!ie(A.status)){const S=A.status==="completed";B(r.id,S?"connected":"failed"),S||k(r.id,A.message??Ne(A.status)),F(r.id,!1);return}B(r.id,"pending"),await we(A),Tn(e,r.id,A,d,G,{onAttempt:S=>T(U=>({...U,[r.id]:S})),onConnected:()=>B(r.id,"connected"),onFailed:S=>{B(r.id,"failed"),k(r.id,S)},onFinished:()=>F(r.id,!1)})}catch(A){B(r.id,"failed"),k(r.id,$(A)),F(r.id,!1)}},st=async r=>{if(!o)return;const d=pe[r.id]?.trim(),A=le[r.id];if(!(!d||!A)){F(r.id,!0),k(r.id);try{const S=await e.completeApiKey(r.id,A,d);T(U=>({...U,[r.id]:S})),fe(U=>({...U,[r.id]:""})),B(r.id,"configured")}catch(S){k(r.id,$(S)),B(r.id,"failed")}finally{F(r.id,!1)}}},it=async r=>{if(o){F(r,!0),k(r);try{await e.disconnect(r),T(d=>({...d,[r]:void 0})),me(d=>({...d,[r]:void 0})),B(r,"disconnected")}catch(d){k(r,$(d))}finally{F(r,!1)}}},at=async r=>{F(r,!0),k(r);try{const d=await e.quota(r,!0);me(A=>({...A,[r]:d}))}catch(d){k(r,$(d))}finally{F(r,!1)}},ot=async()=>{if(o){g(!0),h(void 0),v(void 0);try{const r=await e.createGatewayKey({...C.trim()?{name:C.trim()}:{}});v(r.plaintext),w(d=>[r.record,...d]),j("")}catch(r){h($(r))}finally{g(!1)}}},ct=async r=>{if(o){h(void 0);try{const d=await e.revokeGatewayKey(r);w(A=>A.map(S=>S.id===r?d??{...S,revokedAt:new Date().toISOString()}:S))}catch(d){h($(d))}}},dt=async()=>{m&&(await navigator.clipboard?.writeText(m),he(!0))},ut=p.useCallback(async r=>{if(!o)throw new Error("AI Connection service access is not granted");const d=await e.createGatewayKey({name:`AI Connection · ${K[r]}`});return w(A=>[d.record,...A.filter(S=>S.id!==d.record.id)]),{gatewayKey:d.plaintext,revoke:async()=>{await e.revokeGatewayKey(d.record.id),w(A=>A.map(S=>S.id===d.record.id?{...S,revokedAt:new Date().toISOString()}:S))}}},[e,o]);return n.jsxs("div",{className:"mx-auto w-full max-w-3xl px-6 py-6",children:[n.jsxs("section",{children:[a?n.jsxs("p",{className:"mb-4 rounded-md border border-destructive/30 px-3 py-2 text-sm text-destructive",children:["Provider 状态读取失败:",a]}):null,D.filter(r=>r.id===(i??"openai")).map(r=>n.jsx(_n,{definition:r,status:E[r.id]??"unknown",accountLabel:c[r.id]?.accountLabel,attempt:le[r.id],apiKey:pe[r.id]??"",busy:!!Ye[r.id],disabled:!o,error:et[r.id],quota:nt[r.id],models:We.filter(d=>d.provider===r.id),onApiKeyChange:d=>fe(A=>({...A,[r.id]:d})),onBeginApiKey:()=>{xe(r.id)},onBeginBrowser:()=>{rt(r)},onSaveApiKey:()=>{st(r)},onDisconnect:()=>{it(r.id)},onRefreshQuota:()=>{at(r.id)}},r.id))]}),n.jsxs("details",{className:"border-t border-border/60 py-5",children:[n.jsx("summary",{className:"cursor-pointer list-none text-sm font-medium",children:"客户端接入"}),n.jsxs("div",{className:"mt-4 space-y-6",children:[n.jsx(Pn,{bridge:s,endpoint:e.apiBase,createGatewayKey:ut}),n.jsxs("details",{className:"border-t border-border/60 pt-4",children:[n.jsx("summary",{className:"cursor-pointer text-sm font-medium text-muted-foreground",children:"高级:Gateway Keys"}),n.jsx("div",{className:"mt-3",children:n.jsxs($e,{children:[n.jsxs(_e,{children:[n.jsxs(De,{className:"flex items-center gap-2 text-base",children:[n.jsx(W,{className:"h-4 w-4"}),"Gateway Keys"]}),n.jsx(Me,{children:"编码客户端只使用 Gateway Key;新密钥明文仅在创建后显示一次。"})]}),n.jsxs(Le,{className:"space-y-4",children:[n.jsxs("div",{className:"flex gap-2",children:[n.jsx(Y,{"aria-label":"Gateway Key 名称",placeholder:"名称,例如 Codex",value:C,onChange:r=>j(r.target.value)}),n.jsxs(I,{onClick:()=>{ot()},disabled:f||!o,children:[f?n.jsx(X,{className:"mr-2 h-4 w-4 animate-spin"}):n.jsx(W,{className:"mr-2 h-4 w-4"}),"创建 Gateway Key"]})]}),m?n.jsxs("div",{className:"space-y-3 rounded-lg border border-amber-500/30 bg-amber-500/5 p-4",children:[n.jsx("p",{className:"text-sm font-medium",children:"请立即保存;关闭后无法再次查看。"}),n.jsx("code",{className:"block overflow-x-auto rounded bg-background p-3 text-xs",children:m}),n.jsxs("div",{className:"flex flex-wrap gap-2",children:[n.jsxs(I,{variant:"outline",size:"sm",onClick:()=>{dt()},children:[ye?n.jsx(on,{className:"mr-2 h-4 w-4"}):n.jsx(dn,{className:"mr-2 h-4 w-4"}),ye?"已复制":"复制"]}),n.jsx(I,{size:"sm",onClick:()=>{v(void 0),he(!1)},children:"我已保存,隐藏密钥"})]})]}):null,y?n.jsx("p",{className:"text-sm text-destructive",children:y}):null,x?n.jsxs("div",{className:"flex items-center gap-2 text-sm text-muted-foreground",children:[n.jsx(X,{className:"h-4 w-4 animate-spin"}),"正在读取 Gateway Keys"]}):l.length===0?n.jsx("p",{className:"text-sm text-muted-foreground",children:"尚未创建 Gateway Key。"}):n.jsx("div",{className:"space-y-2",children:l.map(r=>n.jsxs("div",{className:"flex items-center justify-between gap-3 rounded-lg border p-3",children:[n.jsxs("div",{className:"min-w-0",children:[n.jsx("div",{className:"truncate text-sm font-medium",children:r.name||r.id}),n.jsxs("div",{className:"mt-1 text-xs text-muted-foreground",children:[r.scopes.join(" · "),r.revokedAt?" · 已撤销":""]})]}),n.jsx(I,{variant:"ghost",size:"icon","aria-label":`撤销 ${r.name||r.id}`,disabled:!!r.revokedAt||!o,onClick:()=>{ct(r.id)},children:n.jsx(kn,{className:"h-4 w-4"})})]},r.id))})]})]})})]})]})]})]})}async function Tn(e,t,s,i,c,a){let o=s;try{for(;c.current===i&&ie(o.status);){if(await Hn(Math.max(1,o.intervalSeconds??2)*1e3),c.current!==i)return;o=await e.pollDevice(t,o),a.onAttempt(o)}o.status==="completed"?a.onConnected():c.current===i&&a.onFailed(o.message||`连接${o.status==="expired"?"已过期":"失败"}`)}catch(u){c.current===i&&a.onFailed($(u))}finally{c.current===i&&a.onFinished()}}function ie(e){return e==="pending"||e==="authorization_pending"||e==="slow_down"}function Ne(e){return e==="expired"?"连接已过期,请重新开始":e==="cancelled"?"连接已取消":e==="unsupported"?"当前 Provider 不支持此连接方式":"连接失败"}function Un(e){return e==="configured"?"configured":e==="connected"?"connected":e==="failed"||e==="reauthRequired"?"attention":e==="pending"?"loading":"unconfigured"}function On(e){window.open(e,"_blank","noopener,noreferrer")}function Hn(e){return new Promise(t=>window.setTimeout(t,e))}function $(e){return ce(e)}function qn(e){return e!==void 0}function zn({controller:e}){const t=ue(e),s=Vt(e),i=He(e),c=Qt(e),a=D.find(o=>o.id===t);if(!e.client){const o=e.sessionStatus==="expired",u=e.sessionStatus==="authenticating"||e.podStatus==="opening",l=e.error??(e.sessionStatus==="authenticated"&&e.podStatus!=="ready"?new Error("当前 Pod 尚未就绪"):void 0);return u?n.jsx("section",{"aria-label":"AI Connection",className:"space-y-3 p-6",children:n.jsx("p",{role:"status",children:"正在打开当前 Pod..."})}):l?n.jsxs("section",{"aria-label":"AI Connection",className:"space-y-3 p-6",children:[n.jsx("p",{className:"text-sm text-destructive",children:l.message}),n.jsx(I,{size:"sm",onClick:()=>{e.login()},children:"重试登录"})]}):n.jsxs("section",{"aria-label":"AI Connection",className:"space-y-3 p-6",children:[n.jsx("p",{children:o?"当前登录已过期,请重新登录后继续。":"登录后即可管理当前 Pod 的 AI 连接。"}),n.jsx(I,{size:"sm",onClick:()=>{e.login()},children:o?"重新登录":"登录"})]})}return n.jsxs("section",{role:"region","aria-label":`${a?.name??t} 详情`,children:[n.jsx("p",{className:"px-6 pt-4 text-xs text-muted-foreground",role:"status",children:Gn(c)}),n.jsx(Rn,{client:e.client,selectedProvider:t,openExternal:e.openExternal,clientConfigurationBridge:e.clientConfigurationBridge,providerSummaries:s,providerLoadError:i,serviceAccessGranted:c==="granted",onProviderStateChange:e.setProviderState})]})}function Gn(e){return e==="granted"?"服务访问已授权":e==="checking"?"服务访问检查中":"服务访问未授权"}function Vn({controller:e}){const t=Oe(e);return n.jsxs("div",{className:"flex h-full min-w-0 items-center gap-2 px-3",children:[n.jsxs("div",{className:"relative min-w-0 flex-1",children:[n.jsx(Nn,{"aria-hidden":"true",className:"pointer-events-none absolute left-2.5 top-1/2 h-3.5 w-3.5 -translate-y-1/2 text-muted-foreground"}),n.jsx(Y,{type:"search","aria-label":"搜索 Provider",placeholder:"搜索 Provider",value:t,onChange:s=>e.setSearchQuery(s.target.value),className:"h-8 border-transparent bg-muted/50 pl-8 text-xs focus-visible:bg-background"})]}),n.jsx(I,{type:"button",variant:"ghost",size:"icon",className:"h-8 w-8 shrink-0","aria-label":"添加 AI Connection",title:"添加 AI Connection",onClick:()=>e.selectFirstUnconfiguredProvider(),children:n.jsx(gn,{className:"h-4 w-4","aria-hidden":"true"})})]})}function Qn({controller:e}){const t=ue(e),s=D.find(i=>i.id===t);return n.jsx("div",{className:"flex h-full min-w-0 items-center px-4",children:n.jsx("h1",{className:"truncate text-sm font-medium text-foreground",children:s?.name??t})})}const Jn=["navigation.openExternal","aiClientConfiguration"];function Wn(e){const t=ne(e,"Extension manifest");Ie(t.extensionId,"extensionId"),R(t.name,"name"),R(t.version,"version"),R(t.sdkVersion,"sdkVersion");const s=ne(t.contributes,"contributes");if(!Array.isArray(s.applets)||s.applets.length===0)throw new Error("Extension manifest must contribute at least one Applet");const i=new Set;for(const c of s.applets){const a=ne(c,"Applet manifest"),o=Ie(a.appId,"appId");if(i.has(o))throw new Error(`Extension manifest has duplicate appId: ${o}`);if(i.add(o),R(a.name,"Applet name"),R(a.entry,"Applet entry"),!Array.isArray(a.commands))throw new Error("Applet commands must be an array");if(a.layout!=="single-pane"&&a.layout!=="two-pane")throw new Error("Applet layout must be single-pane or two-pane")}if(!Array.isArray(t.dataModels))throw new Error("Extension dataModels must be an array");if(!Array.isArray(t.hostCapabilities))throw new Error("Extension hostCapabilities must be an array");for(const c of t.hostCapabilities)if(!Jn.includes(c))throw new Error(`Extension manifest requested unknown Host capability: ${String(c)}`);return e}function ne(e,t){if(!e||typeof e!="object"||Array.isArray(e))throw new Error(`${t} must be an object`);return e}function R(e,t){if(typeof e!="string"||e.trim().length===0)throw new Error(`${t} must be a non-empty string`);return e}function Ie(e,t){const s=R(e,t);let i;try{i=new URL(s)}catch{throw new Error(`${t} must be a valid HTTPS URL`)}if(i.protocol!=="https:")throw new Error(`${t} must be a valid HTTPS URL`);return s}const ze=Wn({extensionId:"https://undefineds.co/extensions/ai-connection",name:"AI Connection",version:"0.1.0",sdkVersion:"1",contributes:{applets:[{appId:"https://undefineds.co/applets/ai-connection",name:"AI Connection",entry:".",commands:[],layout:"two-pane"}]},dataModels:[],hostCapabilities:["navigation.openExternal","aiClientConfiguration"]}),Ge=ze.contributes.applets[0],Xn={manifest:Ge,createController:qt,activate(e){e.ensureServiceAccess()},slots:{listHeader:Vn,list:Yt,mainHeader:Qn,main:zn}},Yn={manifest:ze,applets:{[Ge.appId]:Xn}};function Zn(){return Yn}const er=3e4;function Ve({podUrl:e,authenticatedFetch:t,now:s=()=>new Date}){const i=oe(e);let c,a;const o=async(x,b)=>{const C=await t(x,b);return c=await rr(C.clone()),C},u=async()=>{if(sr(c,s()))return c;if(a)return a;a=l();try{return await a}finally{a=void 0}},l=async()=>{if(!(await o(`${i}/api/applets/service-access/ai-connection`,{method:"GET",credentials:"include",headers:{accept:"application/json"}})).ok)throw new Error("AI Connection request failed. Please try again.");if(!c?.gatewayKey)throw new Error("AI Connection request failed. Please try again.");return c},w=async(x,b)=>{const C=await u(),j=new Headers(b?.headers);return j.set("Authorization",`Bearer ${C.gatewayKey}`),t(x,{...b,credentials:"omit",headers:j})};return(async(x,b)=>{if(nr(x,i))return o(x,b);const C=await w(x,b);if(C.status!==401)return ke(C);await C.arrayBuffer(),c=void 0;const j=await w(x,b);return ke(j)})}function tr({podUrl:e,authenticatedFetch:t,now:s}){const i=oe(e),c=Ve({podUrl:e,authenticatedFetch:t,now:s});return{inspect:async a=>{const o=await c(H(i,a),{method:"GET",credentials:"omit",headers:{accept:"application/json"}});return o.status===403||o.status===404||o.status===503?(await o.arrayBuffer(),Pe()):q(o)},plan:async a=>q(await c(`${H(i,a.client)}/plan`,{method:"POST",credentials:"omit",headers:{accept:"application/json","content-type":"application/json"},body:JSON.stringify({endpoint:a.endpoint})})),apply:async a=>q(await c(`${H(i,a.client)}/apply`,{method:"POST",credentials:"omit",headers:{accept:"application/json","content-type":"application/json"},body:JSON.stringify({planId:a.planId,gatewayKey:a.gatewayKey,confirmation:a.confirmation})})),verify:async a=>q(await c(`${H(i,a.client)}/verify`,{method:"POST",credentials:"omit",headers:{accept:"application/json","content-type":"application/json"},body:JSON.stringify({planId:a.planId})})),restore:async a=>{const o=await c(`${H(i,a)}/restore`,{method:"POST",credentials:"omit",headers:{accept:"application/json","content-type":"application/json"},body:JSON.stringify({})});return o.status===403||o.status===404||o.status===503?(await o.arrayBuffer(),Pe()):q(o)}}}function nr(e,t){try{return new URL(String(e),t).pathname==="/api/applets/service-access/ai-connection"}catch{return!1}}async function rr(e){if(!(!e.ok||!e.headers.get("content-type")?.includes("application/json")))try{return(await e.json()).invocation}catch{return}}function sr(e,t){if(!e?.gatewayKey)return!1;if(!e.expiresAt)return!0;const s=Date.parse(e.expiresAt);return Number.isFinite(s)&&s-t.getTime()>er}async function ke(e){return e.ok?e:e.headers.get("content-type")?.includes("application/json")?ar(e):(await e.arrayBuffer(),new Response(JSON.stringify({error:"internal_error"}),{status:e.status,statusText:e.statusText,headers:{"content-type":"application/json"}}))}function H(e,t){return`${e}/api/ai/client-configuration/${encodeURIComponent(t)}`}async function q(e){if(!e.ok)throw await ir(e);if(!e.headers.get("content-type")?.includes("application/json"))throw await e.arrayBuffer(),new Error("AI client configuration request failed. Please try again.");return await e.json()}async function ir(e){let t;try{t=e.headers.get("content-type")?.includes("application/json")?await e.json():void 0}catch{t=void 0}if(cr(t)){const s=typeof t.code=="string"?t.code:typeof t.error=="string"?t.error:void 0,i=typeof t.message=="string"?t.message:"AI client configuration request failed. Please try again.",c=new Error(i);return c.code=s,c.status=e.status,c.details=t.details,c}return await e.arrayBuffer().catch(()=>{}),new Error("AI client configuration request failed. Please try again.")}function Pe(){return{status:"unavailable",message:"Host does not support local client configuration. Use the manual setup instructions for your client."}}async function ar(e){let t;try{t=await e.clone().json()}catch{return e}return or(t)?new Response(JSON.stringify({code:t.error.code,error:t.error.message}),{status:e.status,statusText:e.statusText,headers:{"content-type":"application/json"}}):e}function or(e){if(!e||typeof e!="object"||Array.isArray(e))return!1;const t=e.error;return!!(t&&typeof t=="object"&&!Array.isArray(t)&&typeof t.code=="string"&&typeof t.message=="string"&&typeof t.status=="number")}function cr(e){return!!(e&&typeof e=="object"&&!Array.isArray(e))}const Qe=Zn(),Fe=Qe.manifest.contributes.applets[0]?.appId,Je=Fe?Qe.applets[Fe]:void 0;if(!Je)throw new Error("AI Connection extension did not contribute an applet");const dr=Je;function ur(e){const t=e.currentPod?{status:"ready",current:e.currentPod}:e.state.status==="authenticated"?{status:"opening"}:e.state.status==="error"?{status:"error",error:e.state.error}:{status:"unavailable"};return{solid:{session:{getSnapshot:e.session.getSnapshot,subscribe:e.session.subscribe,fetch:e.currentPod?Ve({podUrl:e.currentPod.podUrl,authenticatedFetch:e.fetch}):e.fetch},pod:t,permissions:{inspectAgentAccess:async s=>({status:"granted",resources:s.resources}),ensureAgentAccess:async s=>({status:"granted",resources:s.resources}),revokeAgentAccess:async s=>({status:"missing",resources:s.resources})},requireLogin:async()=>e.login(window.location.origin)},navigation:{openExternal:async s=>{window.open(s,"_blank","noopener,noreferrer")}},capabilities:{aiClientConfiguration:e.currentPod&&e.aiClientConfiguration?.available===!0&&e.aiClientConfiguration.authority==="local-filesystem"?tr({podUrl:e.currentPod.podUrl,authenticatedFetch:e.fetch}):lr}}}const lr={inspect:async()=>({status:"unavailable",message:"Host does not support local client configuration. Use the manual setup instructions for your client."}),plan:async()=>{throw new Error("Host does not support local client configuration. Use the manual setup instructions for your client.")},apply:async()=>{throw new Error("Host does not support local client configuration. Use the manual setup instructions for your client.")},verify:async()=>({status:"unavailable",message:"Host does not support local client configuration. Use the manual setup instructions for your client."}),restore:async()=>({status:"unavailable",message:"Host does not support local client configuration. Use the manual setup instructions for your client."})};function pr(e){const t=p.useMemo(()=>ur(e),[e]);return p.useMemo(()=>{const s=yt(dr,t);if(s.layout!=="two-pane")throw new Error("AI Connection applet must use a two-pane layout");return s},[t])}function hr(){const e=lt(),t=pr(e);return p.useEffect(()=>{t.controller.ensureServiceAccess()},[t.controller]),n.jsx(pt,{listHeader:t.slots.listHeader,list:t.slots.list,mainHeader:t.slots.mainHeader,main:t.slots.main,mode:"auto"})}export{hr as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{b as e,j as s}from"./settings-B30oMfZq.js";const a=[["ellipse",{cx:"12",cy:"5",rx:"9",ry:"3",key:"msslwz"}],["path",{d:"M3 5V19A9 3 0 0 0 21 19V5",key:"1wlel7"}],["path",{d:"M3 12A9 3 0 0 0 21 12",key:"mv7ke4"}]],r=e("database",a);const o=[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]],n=e("refresh-cw",o);function d({title:t}){return s.jsx("div",{className:"flex h-full items-center px-4 text-sm font-semibold text-foreground",children:t})}export{r as D,d as P,n as R};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{b as f,e as $,r as d,j as e,B as g}from"./settings-B30oMfZq.js";import{P as q,D as A,R as E}from"./PaneListHeader-Bgaze006.js";import{T as H}from"./workspace-layout-Dv1Yn9Ci.js";import{C as p,a as b,b as j,c as v,d as y,B as z}from"./card-B_bXSIn-.js";const D=[["path",{d:"M15 3h6v6",key:"1q9fwt"}],["path",{d:"M10 14 21 3",key:"gplh6r"}],["path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6",key:"a6xqqp"}]],T=f("external-link",D);const K=[["path",{d:"m10 17 5-5-5-5",key:"1bsop3"}],["path",{d:"M15 12H3",key:"6jk70r"}],["path",{d:"M15 3h4a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2h-4",key:"u53s6r"}]],V=f("log-in",K);const F=[["path",{d:"m16 17 5-5-5-5",key:"1bji2h"}],["path",{d:"M21 12H9",key:"dn1m92"}],["path",{d:"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4",key:"1uf3rs"}]],O=f("log-out",F);const G=[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]],W=f("shield-check",G);async function X({webId:t,podUrl:s,authenticatedFetch:a}){const r=new URL("/",s).origin,i=await a(`${r}/api/pod/settings/status`,{method:"GET",credentials:"include",headers:{accept:"application/json"}});if(!i.ok)throw await i.arrayBuffer(),new Error("Pod settings request failed. Please try again.");if(!i.headers.get("content-type")?.includes("application/json"))throw await i.arrayBuffer(),new Error("Pod settings request failed. Please try again.");const o=await i.json();if(o.identity?.webId!==t)throw new Error("Pod settings response does not match the current Solid session.");return o}function re({view:t="combined"}){const s=$(),[a,r]=d.useState(),[i,o]=d.useState(),[l,c]=d.useState(!1),u=d.useRef(0),I=d.useRef(void 0),N=d.useRef(!0),m=s.state.status==="authenticated"&&!!(s.webId&&s.podUrl)?`${s.webId}
|
|
2
|
+
${s.podUrl}`:void 0;d.useEffect(()=>(N.current=!0,()=>{N.current=!1,u.current+=1}),[]);const w=d.useCallback(async()=>{const P=s.webId,B=s.podUrl,L=m;if(!P||!B||!L)return;const U=u.current+1;u.current=U;const k=()=>N.current&&u.current===U&&I.current===L;c(!0),o(void 0);try{const _=await X({webId:P,podUrl:B,authenticatedFetch:s.fetch});k()&&r(_)}catch{k()&&o("Pod settings request failed. Please try again.")}finally{k()&&c(!1)}},[m,s.fetch,s.podUrl,s.webId]);d.useEffect(()=>{I.current=m,u.current+=1,r(void 0),o(void 0),c(!1),m&&w()},[m,w]);const x=d.useMemo(()=>({webId:s.webId??a?.identity.webId,podUrl:s.podUrl??a?.identity.podUrl,issuer:s.issuer}),[s.issuer,s.podUrl,s.webId,a]),R=()=>{x.podUrl&&window.open(x.podUrl,"_blank","noopener,noreferrer")},M=()=>{s.issuer&&s.login(s.issuer)};return e.jsx(H,{mode:"auto",listHeader:e.jsx(q,{title:t==="usage"?"Usage":"Pod"}),list:e.jsxs("aside",{className:"flex h-full flex-col gap-3 border-r border-border bg-muted/30 p-4",children:[t!=="usage"?e.jsx(J,{webId:x.webId,podUrl:x.podUrl,issuer:x.issuer,sessionStatus:s.state.status,onOpenPod:R,onLogout:()=>{s.logout()},onLoginAgain:M,canLoginAgain:!!s.issuer}):null,t!=="settings"?e.jsx(Q,{storage:a?.storage,loading:l&&!a}):null]}),mainHeader:e.jsx(Z,{title:t==="usage"?"Usage":"Pod",loading:l,onRefresh:w}),main:e.jsxs("section",{className:"flex min-h-full flex-col gap-4 bg-background p-6",children:[i?e.jsx("div",{role:"alert",className:"rounded-md border border-destructive/30 bg-destructive/10 px-4 py-3 text-sm text-destructive",children:i}):null,e.jsx(Y,{aiConnection:a?.aiConnection,loading:l&&!a}),e.jsxs(p,{children:[e.jsxs(b,{children:[e.jsxs(j,{className:"flex items-center gap-2 text-base",children:[e.jsx(W,{className:"h-4 w-4","aria-hidden":"true"}),"Access boundary"]}),e.jsx(v,{children:"This page reads the authenticated Solid session and current Pod only."})]}),e.jsxs(y,{className:"grid gap-3 text-sm text-muted-foreground",children:[e.jsx(n,{label:"Session",value:s.state.status}),e.jsx(n,{label:"Status generated",value:S(a?.generatedAt)})]})]})]}),className:"min-h-full"})}function J({webId:t,podUrl:s,issuer:a,sessionStatus:r,onOpenPod:i,onLogout:o,onLoginAgain:l,canLoginAgain:c}){return e.jsxs(p,{children:[e.jsxs(b,{children:[e.jsx(j,{className:"text-base",children:"Identity"}),e.jsx(v,{children:"Current Solid session"})]}),e.jsxs(y,{className:"space-y-4",children:[e.jsxs("div",{className:"space-y-3 text-sm",children:[e.jsx(n,{label:"WebID",value:t??"Not signed in"}),e.jsx(n,{label:"Pod",value:s??"Discovering"}),e.jsx(n,{label:"Issuer",value:a??"Unknown"}),e.jsx(n,{label:"Status",value:r})]}),e.jsxs("div",{className:"flex flex-wrap gap-2",children:[e.jsxs(g,{type:"button",size:"sm",variant:"outline",onClick:i,disabled:!s,children:[e.jsx(T,{className:"mr-2 h-4 w-4","aria-hidden":"true"}),"Open Pod"]}),e.jsxs(g,{type:"button",size:"sm",variant:"subtle",onClick:o,children:[e.jsx(O,{className:"mr-2 h-4 w-4","aria-hidden":"true"}),"Logout"]}),e.jsxs(g,{type:"button",size:"sm",variant:"ghost",onClick:l,disabled:!c,children:[e.jsx(V,{className:"mr-2 h-4 w-4","aria-hidden":"true"}),"Login again"]})]})]})]})}function Q({storage:t,loading:s}){const a=t?.status==="available",r=a&&t.limits.storageLimitBytes?Math.min(100,Math.round(t.usage.storageBytes/t.limits.storageLimitBytes*100)):void 0;return e.jsxs(p,{children:[e.jsxs(b,{children:[e.jsxs(j,{className:"flex items-center gap-2 text-base",children:[e.jsx(A,{className:"h-4 w-4","aria-hidden":"true"}),"Storage usage"]}),e.jsx(v,{children:s?"Refreshing usage":"Current Pod quota view"})]}),e.jsx(y,{className:"space-y-4",children:a?e.jsxs(e.Fragment,{children:[e.jsxs("div",{children:[e.jsx("div",{className:"text-2xl font-semibold text-foreground",children:h(t.usage.storageBytes)}),e.jsx("div",{className:"text-sm text-muted-foreground",children:t.limits.storageLimitBytes==null?"No storage limit":`${h(t.limits.storageLimitBytes)} limit`})]}),e.jsx("div",{className:"h-2 overflow-hidden rounded-full bg-muted","aria-label":"Storage usage meter",children:e.jsx("div",{className:"h-full bg-primary",style:{width:`${r??0}%`}})}),e.jsxs("div",{className:"grid gap-2 text-sm text-muted-foreground",children:[e.jsx(n,{label:"Ingress",value:h(t.usage.ingressBytes)}),e.jsx(n,{label:"Egress",value:h(t.usage.egressBytes)}),e.jsx(n,{label:"Bandwidth",value:t.limits.bandwidthLimitBps==null?"No limit":`${h(t.limits.bandwidthLimitBps)}/s`})]})]}):e.jsx(C,{title:t?.status==="error"?"Usage unavailable":"Usage unsupported",detail:t?.reason??"usage_not_available"})})]})}function Y({aiConnection:t,loading:s}){const a=t?.status==="available";return e.jsxs(p,{children:[e.jsx(b,{children:e.jsxs("div",{className:"flex items-center justify-between gap-3",children:[e.jsxs("div",{children:[e.jsx(j,{className:"text-base",children:"AI Connection"}),e.jsx(v,{children:"Pod-backed provider configuration status"})]}),e.jsx(z,{variant:a?"secondary":"outline",children:a?"Available":s?"Loading":"Partial"})]})}),e.jsx(y,{className:"space-y-4",children:a?e.jsxs("div",{className:"grid gap-3 text-sm",children:[e.jsx(n,{label:"Providers",value:`${t.configuredProviders} providers`}),e.jsx(n,{label:"Data container",value:t.containerUrl??"Not declared"}),e.jsx(n,{label:"Last sync",value:S(t.lastSyncAt)}),e.jsx(n,{label:"Source",value:t.source??"drizzle-solid"})]}):e.jsx(C,{title:t?.status==="error"?"AI Connection unavailable":"AI Connection unsupported",detail:t?.reason??"not_configured"})})]})}function Z({title:t,loading:s,onRefresh:a}){return e.jsxs("div",{className:"flex h-full min-w-0 items-center justify-between gap-4 px-4",children:[e.jsxs("div",{className:"min-w-0",children:[e.jsx("div",{className:"text-sm font-semibold text-foreground",children:t}),e.jsx("div",{className:"truncate text-xs text-muted-foreground",children:"Identity, storage, and applet data status"})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("a",{className:"inline-flex h-9 items-center justify-center rounded-md border border-input bg-background px-3 text-sm font-medium text-foreground hover:bg-accent",href:t==="Usage"?"/settings/pod":"/dashboard/usage",children:t==="Usage"?"Configure Pod":"View usage"}),e.jsxs(g,{type:"button",size:"sm",variant:"outline",onClick:a,disabled:s,children:[e.jsx(E,{className:"mr-2 h-4 w-4","aria-hidden":"true"}),"Refresh"]})]})]})}function n({label:t,value:s}){return e.jsxs("div",{className:"min-w-0",children:[e.jsx("div",{className:"text-xs font-medium text-muted-foreground",children:t}),e.jsx("div",{className:"break-words text-sm text-foreground",children:s??"Unknown"})]})}function C({title:t,detail:s}){return e.jsxs("div",{className:"rounded-md border border-border bg-muted/40 p-3",children:[e.jsx("div",{className:"text-sm font-medium text-foreground",children:t}),e.jsx("div",{className:"mt-1 text-xs text-muted-foreground",children:s})]})}function h(t){if(!Number.isFinite(t))return"Unknown";const s=["B","KB","MB","GB","TB"];let a=Math.max(0,t),r=0;for(;a>=1024&&r<s.length-1;)a/=1024,r+=1;return`${Number.isInteger(a)?a:a.toFixed(a>=10?1:2)} ${s[r]}`}function S(t){if(!t)return"Not observed";const s=new Date(t);return Number.isNaN(s.getTime())?"Not observed":s.toLocaleString()}export{J as IdentityCard,Q as PodUsageCard,re as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{b as j,r as n,j as e,O as R,u as k,d as y,S as C,N as L}from"./settings-B30oMfZq.js";import{f as M,S as I}from"./services-status-context-DiX-AbrP.js";import{D as P,P as D,R as _}from"./PaneListHeader-Bgaze006.js";import{T as A,u as w}from"./workspace-layout-Dv1Yn9Ci.js";const E=[["path",{d:"M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2",key:"169zse"}]],H=j("activity",E);const z=[["path",{d:"M15 12h-5",key:"r7krc0"}],["path",{d:"M15 8h-5",key:"1khuty"}],["path",{d:"M19 17V5a2 2 0 0 0-2-2H4",key:"zz82l3"}],["path",{d:"M8 21h12a2 2 0 0 0 2-2v-1a1 1 0 0 0-1-1H11a1 1 0 0 0-1 1v1a2 2 0 1 1-4 0V5a2 2 0 1 0-4 0v2a1 1 0 0 0 1 1h3",key:"1ph1d7"}]],$=j("scroll-text",z);const q=[["path",{d:"M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915",key:"1i5ecw"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]],V=j("settings",q),F=[{id:"runtime",label:"Runtime",path:"/services/runtime",description:"Xpod runtime, Solid server, AI Gateway, storage, and worker health.",icon:H},{id:"logs",label:"Logs",path:"/services/logs",description:"Runtime logs and sanitized diagnostics export.",icon:$},{id:"rdf",label:"RDF",path:"/services/rdf",description:"RDF indexing, storage stats, cache health, and slow query evidence.",icon:P},{id:"configuration",label:"Configuration",path:"/services/configuration",description:"Advanced local runtime configuration and restart-controlled changes.",icon:V}],S={supported:!1,reason:"capability_not_reported"};function K({mode:a="auto",product:s="legacy"}){const[r,i]=n.useState(null),[c,l]=n.useState(!0),[m,f]=n.useState(!1),[t,g]=n.useState(),o=n.useRef(0),d=n.useRef(null),x=n.useRef(!1),h=n.useCallback(async(u=!1)=>{const b=o.current+1;o.current=b,d.current?.abort();const p=new AbortController;d.current=p,u?l(!0):f(!0),g(void 0);try{const v=await M({signal:p.signal});x.current&&o.current===b&&!p.signal.aborted&&i(v)}catch(v){x.current&&o.current===b&&!p.signal.aborted&&!(v instanceof DOMException&&v.name==="AbortError")&&g("Services status request failed. Please try again.")}finally{x.current&&o.current===b&&!p.signal.aborted&&(l(!1),f(!1))}},[]);n.useEffect(()=>{x.current=!0,h(!0);const u=setInterval(()=>{h(!1)},1e4);return()=>{x.current=!1,o.current+=1,d.current?.abort(),d.current=null,clearInterval(u)}},[h]);const N=n.useMemo(()=>{const u=r?.adminData?.capabilities?.services;return{snapshot:r,loading:c,refreshing:m,error:t,refresh:()=>{h(!1)},restartCapability:u?.lifecycle?.restart??S,configurationWriteCapability:u?.configuration?.write??S}},[t,h,c,m,r]);return e.jsx(I.Provider,{value:N,children:e.jsx(A,{mode:a,listHeader:e.jsx(D,{title:"Services"}),list:e.jsx(W,{snapshot:r,loading:c&&!r,showSections:s==="legacy"}),mainHeader:e.jsx(T,{product:s,loading:c||m,onRefresh:N.refresh}),main:e.jsxs("section",{className:"min-h-full min-w-0 bg-background",children:[e.jsx(O,{}),t?e.jsx("div",{role:"alert",className:"mx-6 mt-6 rounded-md border border-destructive/30 bg-destructive/10 px-4 py-3 text-sm text-destructive",children:t}):null,e.jsx(R,{})]}),className:"min-h-full"})})}function O(){const a=k(),s=w(),r=n.useRef(null),i=a.pathname.replace(/\/+$/,"")||"/services";return n.useEffect(()=>{if(r.current!==i){if(r.current=i,i==="/services"){s.openList();return}s.openMain()}},[i,s]),null}function T({product:a,loading:s,onRefresh:r}){return e.jsxs("div",{className:"flex h-full min-w-0 items-center justify-between gap-4 px-4",children:[e.jsxs("div",{className:"min-w-0",children:[e.jsx("div",{className:"text-sm font-semibold text-foreground",children:"Services"}),e.jsx("div",{className:"truncate text-xs text-muted-foreground",children:"Runtime health, logs, RDF indexing, and configuration"})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[a!=="legacy"?e.jsx("a",{className:"inline-flex h-9 items-center justify-center rounded-md border border-input bg-background px-3 text-sm font-medium text-foreground hover:bg-accent",href:a==="dashboard"?"/settings/services":"/dashboard/runtime",children:a==="dashboard"?"Configure":"View runtime"}):null,e.jsxs("button",{type:"button",onClick:r,disabled:s,className:"inline-flex h-9 items-center justify-center rounded-md border border-input bg-background px-3 text-sm font-medium text-foreground transition-colors hover:bg-accent disabled:pointer-events-none disabled:opacity-50",children:[e.jsx(_,{className:y("mr-2 h-4 w-4",s&&"animate-spin"),"aria-hidden":"true"}),"Refresh"]})]})]})}function W({snapshot:a,loading:s,showSections:r}){const i=k(),c=w(),l=a?.servicesData??[],m=l.filter(t=>t.status==="running").length,f=l.length;return e.jsxs("aside",{className:"flex h-full flex-col gap-4 border-r border-border bg-muted/30 p-4",children:[e.jsxs("div",{className:"rounded-md border border-border bg-card",children:[e.jsxs("div",{className:"px-4 pt-4",children:[e.jsxs("div",{className:"flex items-center gap-2 text-base font-semibold text-foreground",children:[e.jsx(C,{className:"h-4 w-4","aria-hidden":"true"}),"Service health"]}),e.jsx("div",{className:"mt-1 text-sm text-muted-foreground",children:s?"Loading runtime status":`${m}/${f||0} services running`})]}),e.jsx("div",{className:"space-y-2 px-4 pb-4 pt-3",children:f>0?l.map(t=>e.jsxs("div",{className:"flex items-center justify-between gap-3 text-sm",children:[e.jsx("span",{className:"font-medium text-foreground",children:t.name}),e.jsx("span",{className:y("rounded-md px-2 py-0.5 text-xs font-medium",t.status==="running"?"bg-primary text-primary-foreground":"bg-muted text-muted-foreground"),children:t.status})]},t.name)):e.jsx("div",{className:"text-sm text-muted-foreground",children:s?"Waiting for status":"No service status reported"})})]}),r?e.jsx("nav",{"aria-label":"Services sections",className:"space-y-1",children:F.map(t=>{const g=t.icon,o=t.id==="runtime"&&i.pathname==="/services";return e.jsxs(L,{to:t.path,onClick:()=>c.openMain(),className:({isActive:d})=>y("flex gap-3 rounded-md px-3 py-2 text-sm transition-colors","focus:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",d||o?"bg-accent text-accent-foreground":"text-muted-foreground hover:bg-accent hover:text-accent-foreground"),children:[e.jsx(g,{className:"mt-0.5 h-4 w-4 shrink-0","aria-hidden":"true"}),e.jsxs("span",{className:"min-w-0",children:[e.jsx("span",{className:"block font-medium",children:t.label}),e.jsx("span",{className:"mt-0.5 block text-xs opacity-80",children:t.description})]})]},t.id)})}):null]})}export{K as default};
|