@undefineds.co/xpod 0.1.0-local.202602081751
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/LICENSE +22 -0
- package/README.md +146 -0
- package/components/components.jsonld +72 -0
- package/components/context.jsonld +1635 -0
- package/config/bun.json +90 -0
- package/config/cli.json +260 -0
- package/config/cloud.json +469 -0
- package/config/extensions.local.initializer.json +23 -0
- package/config/local.json +261 -0
- package/config/logging/configurable.json +18 -0
- package/config/main.json +200 -0
- package/config/main.vanilla.json +6 -0
- package/config/resolver.json +347 -0
- package/config/search.json +66 -0
- package/config/seed.dev.json +29 -0
- package/config/seeds/admin.example.json +11 -0
- package/config/seeds/test.json +11 -0
- package/config/terminal.json +22 -0
- package/config/vector.json +35 -0
- package/config/xpod.base.json +155 -0
- package/config/xpod.cluster.json +419 -0
- package/config/xpod.json +233 -0
- package/dist/agents/AgentExecutorFactory.d.ts +67 -0
- package/dist/agents/AgentExecutorFactory.js +193 -0
- package/dist/agents/AgentExecutorFactory.js.map +1 -0
- package/dist/agents/AgentManager.d.ts +114 -0
- package/dist/agents/AgentManager.js +289 -0
- package/dist/agents/AgentManager.js.map +1 -0
- package/dist/agents/BaseAgentExecutor.d.ts +67 -0
- package/dist/agents/BaseAgentExecutor.js +101 -0
- package/dist/agents/BaseAgentExecutor.js.map +1 -0
- package/dist/agents/ClaudeExecutor.d.ts +63 -0
- package/dist/agents/ClaudeExecutor.js +335 -0
- package/dist/agents/ClaudeExecutor.js.map +1 -0
- package/dist/agents/CodeBuddyExecutor.d.ts +54 -0
- package/dist/agents/CodeBuddyExecutor.js +273 -0
- package/dist/agents/CodeBuddyExecutor.js.map +1 -0
- package/dist/agents/IndexAgent.d.ts +70 -0
- package/dist/agents/IndexAgent.js +417 -0
- package/dist/agents/IndexAgent.js.map +1 -0
- package/dist/agents/index.d.ts +22 -0
- package/dist/agents/index.js +48 -0
- package/dist/agents/index.js.map +1 -0
- package/dist/agents/schema/agent-config.d.ts +58 -0
- package/dist/agents/schema/agent-config.js +74 -0
- package/dist/agents/schema/agent-config.js.map +1 -0
- package/dist/agents/schema/tables.d.ts +46 -0
- package/dist/agents/schema/tables.js +64 -0
- package/dist/agents/schema/tables.js.map +1 -0
- package/dist/agents/types.d.ts +266 -0
- package/dist/agents/types.js +9 -0
- package/dist/agents/types.js.map +1 -0
- package/dist/ai/index.d.ts +5 -0
- package/dist/ai/index.js +22 -0
- package/dist/ai/index.js.map +1 -0
- package/dist/ai/schema/config.d.ts +27 -0
- package/dist/ai/schema/config.js +36 -0
- package/dist/ai/schema/config.js.map +1 -0
- package/dist/ai/schema/index.d.ts +8 -0
- package/dist/ai/schema/index.js +27 -0
- package/dist/ai/schema/index.js.map +1 -0
- package/dist/ai/schema/model.d.ts +40 -0
- package/dist/ai/schema/model.js +60 -0
- package/dist/ai/schema/model.js.map +1 -0
- package/dist/ai/schema/provider.d.ts +21 -0
- package/dist/ai/schema/provider.js +30 -0
- package/dist/ai/schema/provider.js.map +1 -0
- package/dist/ai/schema/types.d.ts +52 -0
- package/dist/ai/schema/types.js +62 -0
- package/dist/ai/schema/types.js.map +1 -0
- package/dist/ai/schema/vector-store.d.ts +53 -0
- package/dist/ai/schema/vector-store.js +65 -0
- package/dist/ai/schema/vector-store.js.map +1 -0
- package/dist/ai/service/CredentialReader.d.ts +7 -0
- package/dist/ai/service/CredentialReader.js +10 -0
- package/dist/ai/service/CredentialReader.js.map +1 -0
- package/dist/ai/service/CredentialReaderImpl.d.ts +6 -0
- package/dist/ai/service/CredentialReaderImpl.js +55 -0
- package/dist/ai/service/CredentialReaderImpl.js.map +1 -0
- package/dist/ai/service/EmbeddingService.d.ts +8 -0
- package/dist/ai/service/EmbeddingService.js +10 -0
- package/dist/ai/service/EmbeddingService.js.map +1 -0
- package/dist/ai/service/EmbeddingServiceImpl.d.ts +11 -0
- package/dist/ai/service/EmbeddingServiceImpl.js +73 -0
- package/dist/ai/service/EmbeddingServiceImpl.js.map +1 -0
- package/dist/ai/service/ProviderRegistry.d.ts +26 -0
- package/dist/ai/service/ProviderRegistry.js +10 -0
- package/dist/ai/service/ProviderRegistry.js.map +1 -0
- package/dist/ai/service/ProviderRegistryImpl.d.ts +14 -0
- package/dist/ai/service/ProviderRegistryImpl.js +112 -0
- package/dist/ai/service/ProviderRegistryImpl.js.map +1 -0
- package/dist/ai/service/index.d.ts +10 -0
- package/dist/ai/service/index.js +29 -0
- package/dist/ai/service/index.js.map +1 -0
- package/dist/ai/service/types.d.ts +12 -0
- package/dist/ai/service/types.js +6 -0
- package/dist/ai/service/types.js.map +1 -0
- package/dist/api/ApiServer.d.ts +77 -0
- package/dist/api/ApiServer.js +191 -0
- package/dist/api/ApiServer.js.map +1 -0
- package/dist/api/auth/AuthContext.d.ts +41 -0
- package/dist/api/auth/AuthContext.js +44 -0
- package/dist/api/auth/AuthContext.js.map +1 -0
- package/dist/api/auth/Authenticator.d.ts +23 -0
- package/dist/api/auth/Authenticator.js +3 -0
- package/dist/api/auth/Authenticator.js.map +1 -0
- package/dist/api/auth/ClientCredentialsAuthenticator.d.ts +56 -0
- package/dist/api/auth/ClientCredentialsAuthenticator.js +191 -0
- package/dist/api/auth/ClientCredentialsAuthenticator.js.map +1 -0
- package/dist/api/auth/MultiAuthenticator.d.ts +15 -0
- package/dist/api/auth/MultiAuthenticator.js +36 -0
- package/dist/api/auth/MultiAuthenticator.js.map +1 -0
- package/dist/api/auth/NodeTokenAuthenticator.d.ts +21 -0
- package/dist/api/auth/NodeTokenAuthenticator.js +124 -0
- package/dist/api/auth/NodeTokenAuthenticator.js.map +1 -0
- package/dist/api/auth/SolidTokenAuthenticator.d.ts +27 -0
- package/dist/api/auth/SolidTokenAuthenticator.js +144 -0
- package/dist/api/auth/SolidTokenAuthenticator.js.map +1 -0
- package/dist/api/auth/index.d.ts +5 -0
- package/dist/api/auth/index.js +23 -0
- package/dist/api/auth/index.js.map +1 -0
- package/dist/api/chatkit/ai-provider.d.ts +44 -0
- package/dist/api/chatkit/ai-provider.js +157 -0
- package/dist/api/chatkit/ai-provider.js.map +1 -0
- package/dist/api/chatkit/index.d.ts +11 -0
- package/dist/api/chatkit/index.js +44 -0
- package/dist/api/chatkit/index.js.map +1 -0
- package/dist/api/chatkit/pod-store.d.ts +154 -0
- package/dist/api/chatkit/pod-store.js +794 -0
- package/dist/api/chatkit/pod-store.js.map +1 -0
- package/dist/api/chatkit/schema.d.ts +139 -0
- package/dist/api/chatkit/schema.js +168 -0
- package/dist/api/chatkit/schema.js.map +1 -0
- package/dist/api/chatkit/service.d.ts +143 -0
- package/dist/api/chatkit/service.js +442 -0
- package/dist/api/chatkit/service.js.map +1 -0
- package/dist/api/chatkit/store.d.ts +63 -0
- package/dist/api/chatkit/store.js +178 -0
- package/dist/api/chatkit/store.js.map +1 -0
- package/dist/api/chatkit/types.d.ts +461 -0
- package/dist/api/chatkit/types.js +50 -0
- package/dist/api/chatkit/types.js.map +1 -0
- package/dist/api/container/cloud.d.ts +12 -0
- package/dist/api/container/cloud.js +97 -0
- package/dist/api/container/cloud.js.map +1 -0
- package/dist/api/container/common.d.ts +11 -0
- package/dist/api/container/common.js +82 -0
- package/dist/api/container/common.js.map +1 -0
- package/dist/api/container/index.d.ts +16 -0
- package/dist/api/container/index.js +90 -0
- package/dist/api/container/index.js.map +1 -0
- package/dist/api/container/local.d.ts +13 -0
- package/dist/api/container/local.js +197 -0
- package/dist/api/container/local.js.map +1 -0
- package/dist/api/container/routes.d.ts +11 -0
- package/dist/api/container/routes.js +129 -0
- package/dist/api/container/routes.js.map +1 -0
- package/dist/api/container/types.d.ts +92 -0
- package/dist/api/container/types.js +8 -0
- package/dist/api/container/types.js.map +1 -0
- package/dist/api/handlers/AdminHandler.d.ts +6 -0
- package/dist/api/handlers/AdminHandler.js +330 -0
- package/dist/api/handlers/AdminHandler.js.map +1 -0
- package/dist/api/handlers/ApiKeyHandler.d.ts +15 -0
- package/dist/api/handlers/ApiKeyHandler.js +159 -0
- package/dist/api/handlers/ApiKeyHandler.js.map +1 -0
- package/dist/api/handlers/ChatHandler.d.ts +60 -0
- package/dist/api/handlers/ChatHandler.js +230 -0
- package/dist/api/handlers/ChatHandler.js.map +1 -0
- package/dist/api/handlers/ChatKitHandler.d.ts +18 -0
- package/dist/api/handlers/ChatKitHandler.js +151 -0
- package/dist/api/handlers/ChatKitHandler.js.map +1 -0
- package/dist/api/handlers/DashboardHandler.d.ts +14 -0
- package/dist/api/handlers/DashboardHandler.js +117 -0
- package/dist/api/handlers/DashboardHandler.js.map +1 -0
- package/dist/api/handlers/DdnsHandler.d.ts +19 -0
- package/dist/api/handlers/DdnsHandler.js +306 -0
- package/dist/api/handlers/DdnsHandler.js.map +1 -0
- package/dist/api/handlers/DevHandler.d.ts +18 -0
- package/dist/api/handlers/DevHandler.js +276 -0
- package/dist/api/handlers/DevHandler.js.map +1 -0
- package/dist/api/handlers/NodeHandler.d.ts +16 -0
- package/dist/api/handlers/NodeHandler.js +190 -0
- package/dist/api/handlers/NodeHandler.js.map +1 -0
- package/dist/api/handlers/PodManagementHandler.d.ts +39 -0
- package/dist/api/handlers/PodManagementHandler.js +294 -0
- package/dist/api/handlers/PodManagementHandler.js.map +1 -0
- package/dist/api/handlers/QuotaHandler.d.ts +21 -0
- package/dist/api/handlers/QuotaHandler.js +209 -0
- package/dist/api/handlers/QuotaHandler.js.map +1 -0
- package/dist/api/handlers/SignalHandler.d.ts +13 -0
- package/dist/api/handlers/SignalHandler.js +122 -0
- package/dist/api/handlers/SignalHandler.js.map +1 -0
- package/dist/api/handlers/SubdomainClientHandler.d.ts +24 -0
- package/dist/api/handlers/SubdomainClientHandler.js +169 -0
- package/dist/api/handlers/SubdomainClientHandler.js.map +1 -0
- package/dist/api/handlers/SubdomainHandler.d.ts +17 -0
- package/dist/api/handlers/SubdomainHandler.js +312 -0
- package/dist/api/handlers/SubdomainHandler.js.map +1 -0
- package/dist/api/handlers/VectorHandler.d.ts +15 -0
- package/dist/api/handlers/VectorHandler.js +293 -0
- package/dist/api/handlers/VectorHandler.js.map +1 -0
- package/dist/api/handlers/VectorStoreHandler.d.ts +20 -0
- package/dist/api/handlers/VectorStoreHandler.js +348 -0
- package/dist/api/handlers/VectorStoreHandler.js.map +1 -0
- package/dist/api/handlers/VectorStoreWebhookHandler.d.ts +74 -0
- package/dist/api/handlers/VectorStoreWebhookHandler.js +121 -0
- package/dist/api/handlers/VectorStoreWebhookHandler.js.map +1 -0
- package/dist/api/handlers/WebIdProfileHandler.d.ts +14 -0
- package/dist/api/handlers/WebIdProfileHandler.js +204 -0
- package/dist/api/handlers/WebIdProfileHandler.js.map +1 -0
- package/dist/api/handlers/index.d.ts +11 -0
- package/dist/api/handlers/index.js +28 -0
- package/dist/api/handlers/index.js.map +1 -0
- package/dist/api/index.d.ts +12 -0
- package/dist/api/index.js +29 -0
- package/dist/api/index.js.map +1 -0
- package/dist/api/main.d.ts +14 -0
- package/dist/api/main.js +106 -0
- package/dist/api/main.js.map +1 -0
- package/dist/api/middleware/AuthMiddleware.d.ts +35 -0
- package/dist/api/middleware/AuthMiddleware.js +51 -0
- package/dist/api/middleware/AuthMiddleware.js.map +1 -0
- package/dist/api/middleware/index.d.ts +1 -0
- package/dist/api/middleware/index.js +18 -0
- package/dist/api/middleware/index.js.map +1 -0
- package/dist/api/models/model-provider.schema.d.ts +12 -0
- package/dist/api/models/model-provider.schema.js +21 -0
- package/dist/api/models/model-provider.schema.js.map +1 -0
- package/dist/api/models/namespaces.d.ts +9 -0
- package/dist/api/models/namespaces.js +34 -0
- package/dist/api/models/namespaces.js.map +1 -0
- package/dist/api/service/InternalPodService.d.ts +19 -0
- package/dist/api/service/InternalPodService.js +82 -0
- package/dist/api/service/InternalPodService.js.map +1 -0
- package/dist/api/service/VectorService.d.ts +156 -0
- package/dist/api/service/VectorService.js +202 -0
- package/dist/api/service/VectorService.js.map +1 -0
- package/dist/api/service/VectorStoreService.d.ts +262 -0
- package/dist/api/service/VectorStoreService.js +985 -0
- package/dist/api/service/VectorStoreService.js.map +1 -0
- package/dist/api/service/VercelChatService.d.ts +28 -0
- package/dist/api/service/VercelChatService.js +289 -0
- package/dist/api/service/VercelChatService.js.map +1 -0
- package/dist/api/store/DrizzleClientCredentialsStore.d.ts +56 -0
- package/dist/api/store/DrizzleClientCredentialsStore.js +145 -0
- package/dist/api/store/DrizzleClientCredentialsStore.js.map +1 -0
- package/dist/api/store/index.d.ts +1 -0
- package/dist/api/store/index.js +18 -0
- package/dist/api/store/index.js.map +1 -0
- package/dist/components/components.jsonld +88 -0
- package/dist/components/context.jsonld +1962 -0
- package/dist/credential/index.d.ts +1 -0
- package/dist/credential/index.js +18 -0
- package/dist/credential/index.js.map +1 -0
- package/dist/credential/schema/index.d.ts +2 -0
- package/dist/credential/schema/index.js +19 -0
- package/dist/credential/schema/index.js.map +1 -0
- package/dist/credential/schema/tables.d.ts +31 -0
- package/dist/credential/schema/tables.js +42 -0
- package/dist/credential/schema/tables.js.map +1 -0
- package/dist/credential/schema/types.d.ts +20 -0
- package/dist/credential/schema/types.js +26 -0
- package/dist/credential/schema/types.js.map +1 -0
- package/dist/dns/DnsProvider.d.ts +46 -0
- package/dist/dns/DnsProvider.js +3 -0
- package/dist/dns/DnsProvider.js.map +1 -0
- package/dist/dns/DnsProvider.jsonld +161 -0
- package/dist/dns/cloudflare/CloudflareDnsProvider.d.ts +51 -0
- package/dist/dns/cloudflare/CloudflareDnsProvider.js +227 -0
- package/dist/dns/cloudflare/CloudflareDnsProvider.js.map +1 -0
- package/dist/dns/cloudflare/index.d.ts +1 -0
- package/dist/dns/cloudflare/index.js +18 -0
- package/dist/dns/cloudflare/index.js.map +1 -0
- package/dist/dns/tencent/TencentDnsProvider.d.ts +42 -0
- package/dist/dns/tencent/TencentDnsProvider.js +221 -0
- package/dist/dns/tencent/TencentDnsProvider.js.map +1 -0
- package/dist/dns/tencent/TencentDnsProvider.jsonld +239 -0
- package/dist/document/Chunker.d.ts +64 -0
- package/dist/document/Chunker.js +8 -0
- package/dist/document/Chunker.js.map +1 -0
- package/dist/document/DocumentParser.d.ts +58 -0
- package/dist/document/DocumentParser.js +8 -0
- package/dist/document/DocumentParser.js.map +1 -0
- package/dist/document/HeadingChunker.d.ts +34 -0
- package/dist/document/HeadingChunker.js +182 -0
- package/dist/document/HeadingChunker.js.map +1 -0
- package/dist/document/JinaDocumentParser.d.ts +40 -0
- package/dist/document/JinaDocumentParser.js +129 -0
- package/dist/document/JinaDocumentParser.js.map +1 -0
- package/dist/document/index.d.ts +7 -0
- package/dist/document/index.js +26 -0
- package/dist/document/index.js.map +1 -0
- package/dist/edge/DdnsManager.d.ts +53 -0
- package/dist/edge/DdnsManager.js +153 -0
- package/dist/edge/DdnsManager.js.map +1 -0
- package/dist/edge/Dns01CertificateProvisioner.d.ts +27 -0
- package/dist/edge/Dns01CertificateProvisioner.js +160 -0
- package/dist/edge/Dns01CertificateProvisioner.js.map +1 -0
- package/dist/edge/Dns01CertificateProvisioner.jsonld +148 -0
- package/dist/edge/EdgeNodeAgent.d.ts +56 -0
- package/dist/edge/EdgeNodeAgent.js +230 -0
- package/dist/edge/EdgeNodeAgent.js.map +1 -0
- package/dist/edge/EdgeNodeAgent.jsonld +89 -0
- package/dist/edge/EdgeNodeAgentInitializer.d.ts +25 -0
- package/dist/edge/EdgeNodeAgentInitializer.js +64 -0
- package/dist/edge/EdgeNodeAgentInitializer.js.map +1 -0
- package/dist/edge/EdgeNodeCapabilityDetector.d.ts +98 -0
- package/dist/edge/EdgeNodeCapabilityDetector.js +425 -0
- package/dist/edge/EdgeNodeCapabilityDetector.js.map +1 -0
- package/dist/edge/EdgeNodeCertificateProvisioner.d.ts +3 -0
- package/dist/edge/EdgeNodeCertificateProvisioner.js +3 -0
- package/dist/edge/EdgeNodeCertificateProvisioner.js.map +1 -0
- package/dist/edge/EdgeNodeCertificateProvisioner.jsonld +21 -0
- package/dist/edge/EdgeNodeDnsCoordinator.d.ts +38 -0
- package/dist/edge/EdgeNodeDnsCoordinator.js +201 -0
- package/dist/edge/EdgeNodeDnsCoordinator.js.map +1 -0
- package/dist/edge/EdgeNodeDnsCoordinator.jsonld +212 -0
- package/dist/edge/EdgeNodeHealthProbeService.d.ts +25 -0
- package/dist/edge/EdgeNodeHealthProbeService.js +208 -0
- package/dist/edge/EdgeNodeHealthProbeService.js.map +1 -0
- package/dist/edge/EdgeNodeHealthProbeService.jsonld +176 -0
- package/dist/edge/EdgeNodeModeDetector.d.ts +50 -0
- package/dist/edge/EdgeNodeModeDetector.js +194 -0
- package/dist/edge/EdgeNodeModeDetector.js.map +1 -0
- package/dist/edge/EdgeNodeModeDetector.jsonld +114 -0
- package/dist/edge/EdgeNodeTunnelManager.d.ts +23 -0
- package/dist/edge/EdgeNodeTunnelManager.js +99 -0
- package/dist/edge/EdgeNodeTunnelManager.js.map +1 -0
- package/dist/edge/EdgeNodeTunnelManager.jsonld +128 -0
- package/dist/edge/FrpTunnelManager.d.ts +30 -0
- package/dist/edge/FrpTunnelManager.js +151 -0
- package/dist/edge/FrpTunnelManager.js.map +1 -0
- package/dist/edge/FrpTunnelManager.jsonld +192 -0
- package/dist/edge/LocalNetworkManager.d.ts +41 -0
- package/dist/edge/LocalNetworkManager.js +115 -0
- package/dist/edge/LocalNetworkManager.js.map +1 -0
- package/dist/edge/acme/AcmeCertificateManager.d.ts +65 -0
- package/dist/edge/acme/AcmeCertificateManager.js +233 -0
- package/dist/edge/acme/AcmeCertificateManager.js.map +1 -0
- package/dist/edge/acme/AcmeCertificateManager.jsonld +373 -0
- package/dist/edge/acme/ClusterCertificateManager.d.ts +40 -0
- package/dist/edge/acme/ClusterCertificateManager.js +184 -0
- package/dist/edge/acme/ClusterCertificateManager.js.map +1 -0
- package/dist/edge/acme/DnsChallengeClient.d.ts +15 -0
- package/dist/edge/acme/DnsChallengeClient.js +40 -0
- package/dist/edge/acme/DnsChallengeClient.js.map +1 -0
- package/dist/edge/acme/utils.d.ts +4 -0
- package/dist/edge/acme/utils.js +17 -0
- package/dist/edge/acme/utils.js.map +1 -0
- package/dist/edge/frp/FrpRelay.d.ts +11 -0
- package/dist/edge/frp/FrpRelay.js +29 -0
- package/dist/edge/frp/FrpRelay.js.map +1 -0
- package/dist/edge/frp/FrpcProcessManager.d.ts +51 -0
- package/dist/edge/frp/FrpcProcessManager.js +174 -0
- package/dist/edge/frp/FrpcProcessManager.js.map +1 -0
- package/dist/edge/interfaces/EdgeNodeTunnelManager.d.ts +6 -0
- package/dist/edge/interfaces/EdgeNodeTunnelManager.js +3 -0
- package/dist/edge/interfaces/EdgeNodeTunnelManager.js.map +1 -0
- package/dist/edge/interfaces/EdgeNodeTunnelManager.jsonld +21 -0
- package/dist/embedding/CredentialReader.d.ts +7 -0
- package/dist/embedding/CredentialReader.js +10 -0
- package/dist/embedding/CredentialReader.js.map +1 -0
- package/dist/embedding/CredentialReader.jsonld +22 -0
- package/dist/embedding/CredentialReaderImpl.d.ts +6 -0
- package/dist/embedding/CredentialReaderImpl.js +55 -0
- package/dist/embedding/CredentialReaderImpl.js.map +1 -0
- package/dist/embedding/CredentialReaderImpl.jsonld +31 -0
- package/dist/embedding/EmbeddingService.d.ts +8 -0
- package/dist/embedding/EmbeddingService.js +10 -0
- package/dist/embedding/EmbeddingService.js.map +1 -0
- package/dist/embedding/EmbeddingService.jsonld +26 -0
- package/dist/embedding/EmbeddingServiceImpl.d.ts +11 -0
- package/dist/embedding/EmbeddingServiceImpl.js +73 -0
- package/dist/embedding/EmbeddingServiceImpl.js.map +1 -0
- package/dist/embedding/EmbeddingServiceImpl.jsonld +53 -0
- package/dist/embedding/ProviderRegistry.d.ts +26 -0
- package/dist/embedding/ProviderRegistry.js +10 -0
- package/dist/embedding/ProviderRegistry.js.map +1 -0
- package/dist/embedding/ProviderRegistry.jsonld +30 -0
- package/dist/embedding/ProviderRegistryImpl.d.ts +14 -0
- package/dist/embedding/ProviderRegistryImpl.js +112 -0
- package/dist/embedding/ProviderRegistryImpl.js.map +1 -0
- package/dist/embedding/ProviderRegistryImpl.jsonld +40 -0
- package/dist/embedding/index.d.ts +5 -0
- package/dist/embedding/index.js +22 -0
- package/dist/embedding/index.js.map +1 -0
- package/dist/embedding/schema/index.d.ts +1 -0
- package/dist/embedding/schema/index.js +18 -0
- package/dist/embedding/schema/index.js.map +1 -0
- package/dist/embedding/schema/tables.d.ts +70 -0
- package/dist/embedding/schema/tables.js +102 -0
- package/dist/embedding/schema/tables.js.map +1 -0
- package/dist/embedding/types.d.ts +12 -0
- package/dist/embedding/types.js +6 -0
- package/dist/embedding/types.js.map +1 -0
- package/dist/gateway/port-finder.d.ts +4 -0
- package/dist/gateway/port-finder.js +15 -0
- package/dist/gateway/port-finder.js.map +1 -0
- package/dist/gateway/proxy.d.ts +22 -0
- package/dist/gateway/proxy.js +149 -0
- package/dist/gateway/proxy.js.map +1 -0
- package/dist/gateway/supervisor.d.ts +2 -0
- package/dist/gateway/supervisor.js +7 -0
- package/dist/gateway/supervisor.js.map +1 -0
- package/dist/gateway/types.d.ts +1 -0
- package/dist/gateway/types.js +3 -0
- package/dist/gateway/types.js.map +1 -0
- package/dist/http/AppStaticAssetHandler.d.ts +8 -0
- package/dist/http/AppStaticAssetHandler.js +27 -0
- package/dist/http/AppStaticAssetHandler.js.map +1 -0
- package/dist/http/AppStaticAssetHandler.jsonld +26 -0
- package/dist/http/ClusterIngressRouter.d.ts +93 -0
- package/dist/http/ClusterIngressRouter.js +355 -0
- package/dist/http/ClusterIngressRouter.js.map +1 -0
- package/dist/http/ClusterIngressRouter.jsonld +227 -0
- package/dist/http/ClusterWebSocketConfigurator.d.ts +59 -0
- package/dist/http/ClusterWebSocketConfigurator.js +226 -0
- package/dist/http/ClusterWebSocketConfigurator.js.map +1 -0
- package/dist/http/ClusterWebSocketConfigurator.jsonld +145 -0
- package/dist/http/EdgeNodeDirectDebugHttpHandler.d.ts +25 -0
- package/dist/http/EdgeNodeDirectDebugHttpHandler.js +126 -0
- package/dist/http/EdgeNodeDirectDebugHttpHandler.js.map +1 -0
- package/dist/http/EdgeNodeDirectDebugHttpHandler.jsonld +151 -0
- package/dist/http/EdgeNodeProxyHttpHandler.d.ts +28 -0
- package/dist/http/EdgeNodeProxyHttpHandler.js +190 -0
- package/dist/http/EdgeNodeProxyHttpHandler.js.map +1 -0
- package/dist/http/EdgeNodeProxyHttpHandler.jsonld +162 -0
- package/dist/http/PodRoutingHttpHandler.d.ts +64 -0
- package/dist/http/PodRoutingHttpHandler.js +233 -0
- package/dist/http/PodRoutingHttpHandler.js.map +1 -0
- package/dist/http/PodRoutingHttpHandler.jsonld +171 -0
- package/dist/http/RequestIdHttpHandler.d.ts +15 -0
- package/dist/http/RequestIdHttpHandler.js +59 -0
- package/dist/http/RequestIdHttpHandler.js.map +1 -0
- package/dist/http/RouterHttpHandler.d.ts +21 -0
- package/dist/http/RouterHttpHandler.js +49 -0
- package/dist/http/RouterHttpHandler.js.map +1 -0
- package/dist/http/RouterHttpHandler.jsonld +80 -0
- package/dist/http/RouterHttpRoute.d.ts +6 -0
- package/dist/http/RouterHttpRoute.js +11 -0
- package/dist/http/RouterHttpRoute.js.map +1 -0
- package/dist/http/RouterHttpRoute.jsonld +48 -0
- package/dist/http/SignalInterceptHttpHandler.d.ts +24 -0
- package/dist/http/SignalInterceptHttpHandler.js +47 -0
- package/dist/http/SignalInterceptHttpHandler.js.map +1 -0
- package/dist/http/SignalInterceptHttpHandler.jsonld +103 -0
- package/dist/http/SubgraphSparqlHttpHandler.d.ts +70 -0
- package/dist/http/SubgraphSparqlHttpHandler.js +640 -0
- package/dist/http/SubgraphSparqlHttpHandler.js.map +1 -0
- package/dist/http/SubgraphSparqlHttpHandler.jsonld +363 -0
- package/dist/http/TracingHandler.d.ts +19 -0
- package/dist/http/TracingHandler.js +60 -0
- package/dist/http/TracingHandler.js.map +1 -0
- package/dist/http/TracingHandler.jsonld +37 -0
- package/dist/http/admin/EdgeNodeAdminHttpHandler.d.ts +45 -0
- package/dist/http/admin/EdgeNodeAdminHttpHandler.js +292 -0
- package/dist/http/admin/EdgeNodeAdminHttpHandler.js.map +1 -0
- package/dist/http/admin/EdgeNodeCertificateHttpHandler.d.ts +33 -0
- package/dist/http/admin/EdgeNodeCertificateHttpHandler.js +172 -0
- package/dist/http/admin/EdgeNodeCertificateHttpHandler.js.map +1 -0
- package/dist/http/admin/EdgeNodeCertificateHttpHandler.jsonld +182 -0
- package/dist/http/admin/EdgeNodeSignalHttpHandler.d.ts +71 -0
- package/dist/http/admin/EdgeNodeSignalHttpHandler.js +674 -0
- package/dist/http/admin/EdgeNodeSignalHttpHandler.js.map +1 -0
- package/dist/http/admin/EdgeNodeSignalHttpHandler.jsonld +406 -0
- package/dist/http/cluster/PodMigrationHttpHandler.d.ts +52 -0
- package/dist/http/cluster/PodMigrationHttpHandler.js +208 -0
- package/dist/http/cluster/PodMigrationHttpHandler.js.map +1 -0
- package/dist/http/cluster/PodMigrationHttpHandler.jsonld +169 -0
- package/dist/http/quota/QuotaAdminHttpHandler.d.ts +34 -0
- package/dist/http/quota/QuotaAdminHttpHandler.js +241 -0
- package/dist/http/quota/QuotaAdminHttpHandler.js.map +1 -0
- package/dist/http/quota/QuotaAdminHttpHandler.jsonld +171 -0
- package/dist/http/search/SearchHttpHandler.d.ts +59 -0
- package/dist/http/search/SearchHttpHandler.js +312 -0
- package/dist/http/search/SearchHttpHandler.js.map +1 -0
- package/dist/http/search/index.d.ts +1 -0
- package/dist/http/search/index.js +18 -0
- package/dist/http/search/index.js.map +1 -0
- package/dist/http/terminal/TerminalHttpHandler.d.ts +45 -0
- package/dist/http/terminal/TerminalHttpHandler.js +306 -0
- package/dist/http/terminal/TerminalHttpHandler.js.map +1 -0
- package/dist/http/terminal/TerminalHttpHandler.jsonld +232 -0
- package/dist/http/terminal/index.d.ts +1 -0
- package/dist/http/terminal/index.js +18 -0
- package/dist/http/terminal/index.js.map +1 -0
- package/dist/http/vector/VectorHttpHandler.d.ts +42 -0
- package/dist/http/vector/VectorHttpHandler.js +301 -0
- package/dist/http/vector/VectorHttpHandler.js.map +1 -0
- package/dist/http/vector/VectorHttpHandler.jsonld +157 -0
- package/dist/http/vector/index.d.ts +1 -0
- package/dist/http/vector/index.js +18 -0
- package/dist/http/vector/index.js.map +1 -0
- package/dist/ice/IceServerProvider.d.ts +85 -0
- package/dist/ice/IceServerProvider.js +122 -0
- package/dist/ice/IceServerProvider.js.map +1 -0
- package/dist/ice/index.d.ts +8 -0
- package/dist/ice/index.js +25 -0
- package/dist/ice/index.js.map +1 -0
- package/dist/identity/CenterNodeRegistrationService.d.ts +102 -0
- package/dist/identity/CenterNodeRegistrationService.js +266 -0
- package/dist/identity/CenterNodeRegistrationService.js.map +1 -0
- package/dist/identity/CenterNodeRegistrationService.jsonld +251 -0
- package/dist/identity/ReactAppViewHandler.d.ts +31 -0
- package/dist/identity/ReactAppViewHandler.js +79 -0
- package/dist/identity/ReactAppViewHandler.js.map +1 -0
- package/dist/identity/ReactAppViewHandler.jsonld +99 -0
- package/dist/identity/drizzle/AccountRepository.d.ts +31 -0
- package/dist/identity/drizzle/AccountRepository.js +130 -0
- package/dist/identity/drizzle/AccountRepository.js.map +1 -0
- package/dist/identity/drizzle/AccountRoleRepository.d.ts +23 -0
- package/dist/identity/drizzle/AccountRoleRepository.js +233 -0
- package/dist/identity/drizzle/AccountRoleRepository.js.map +1 -0
- package/dist/identity/drizzle/DdnsRepository.d.ts +87 -0
- package/dist/identity/drizzle/DdnsRepository.js +284 -0
- package/dist/identity/drizzle/DdnsRepository.js.map +1 -0
- package/dist/identity/drizzle/DrizzleIndexedStorage.d.ts +26 -0
- package/dist/identity/drizzle/DrizzleIndexedStorage.js +159 -0
- package/dist/identity/drizzle/DrizzleIndexedStorage.js.map +1 -0
- package/dist/identity/drizzle/DrizzleIndexedStorage.jsonld +130 -0
- package/dist/identity/drizzle/EdgeNodeRepository.d.ts +155 -0
- package/dist/identity/drizzle/EdgeNodeRepository.js +555 -0
- package/dist/identity/drizzle/EdgeNodeRepository.js.map +1 -0
- package/dist/identity/drizzle/PodLookupRepository.d.ts +59 -0
- package/dist/identity/drizzle/PodLookupRepository.js +153 -0
- package/dist/identity/drizzle/PodLookupRepository.js.map +1 -0
- package/dist/identity/drizzle/WebIdProfileRepository.d.ts +58 -0
- package/dist/identity/drizzle/WebIdProfileRepository.js +157 -0
- package/dist/identity/drizzle/WebIdProfileRepository.js.map +1 -0
- package/dist/identity/drizzle/db.d.ts +60 -0
- package/dist/identity/drizzle/db.js +269 -0
- package/dist/identity/drizzle/db.js.map +1 -0
- package/dist/identity/drizzle/schema.d.ts +1 -0
- package/dist/identity/drizzle/schema.js +20 -0
- package/dist/identity/drizzle/schema.js.map +1 -0
- package/dist/identity/drizzle/schema.pg.d.ts +20 -0
- package/dist/identity/drizzle/schema.pg.js +103 -0
- package/dist/identity/drizzle/schema.pg.js.map +1 -0
- package/dist/identity/drizzle/schema.sqlite.d.ts +872 -0
- package/dist/identity/drizzle/schema.sqlite.js +100 -0
- package/dist/identity/drizzle/schema.sqlite.js.map +1 -0
- package/dist/identity/oidc/AutoDetectIdentityProviderHandler.d.ts +43 -0
- package/dist/identity/oidc/AutoDetectIdentityProviderHandler.js +92 -0
- package/dist/identity/oidc/AutoDetectIdentityProviderHandler.js.map +1 -0
- package/dist/identity/oidc/AutoDetectIdentityProviderHandler.jsonld +122 -0
- package/dist/identity/oidc/AutoDetectOidcHandler.d.ts +55 -0
- package/dist/identity/oidc/AutoDetectOidcHandler.js +137 -0
- package/dist/identity/oidc/AutoDetectOidcHandler.js.map +1 -0
- package/dist/identity/oidc/AutoDetectOidcHandler.jsonld +138 -0
- package/dist/identity/oidc/DisabledIdentityProviderHandler.d.ts +51 -0
- package/dist/identity/oidc/DisabledIdentityProviderHandler.js +104 -0
- package/dist/identity/oidc/DisabledIdentityProviderHandler.js.map +1 -0
- package/dist/identity/oidc/DisabledIdentityProviderHandler.jsonld +111 -0
- package/dist/identity/oidc/DisabledOidcHandler.d.ts +55 -0
- package/dist/identity/oidc/DisabledOidcHandler.js +132 -0
- package/dist/identity/oidc/DisabledOidcHandler.js.map +1 -0
- package/dist/identity/oidc/DisabledOidcHandler.jsonld +157 -0
- package/dist/index.d.ts +80 -0
- package/dist/index.js +155 -0
- package/dist/index.js.map +1 -0
- package/dist/legacy/DrizzleClientCredentialsStore.d.ts +51 -0
- package/dist/legacy/DrizzleClientCredentialsStore.js +142 -0
- package/dist/legacy/DrizzleClientCredentialsStore.js.map +1 -0
- package/dist/legacy/DrizzleIndexedStorage.d.ts +26 -0
- package/dist/legacy/DrizzleIndexedStorage.js +159 -0
- package/dist/legacy/DrizzleIndexedStorage.js.map +1 -0
- package/dist/legacy/DrizzleQuotaService.d.ts +16 -0
- package/dist/legacy/DrizzleQuotaService.js +37 -0
- package/dist/legacy/DrizzleQuotaService.js.map +1 -0
- package/dist/libs/backends/index.d.ts +6 -0
- package/dist/libs/backends/index.js +31 -0
- package/dist/libs/backends/index.js.map +1 -0
- package/dist/libs/backends/sqlup.d.ts +44 -0
- package/dist/libs/backends/sqlup.js +437 -0
- package/dist/libs/backends/sqlup.js.map +1 -0
- package/dist/logging/ConfigurableLoggerFactory.d.ts +24 -0
- package/dist/logging/ConfigurableLoggerFactory.js +77 -0
- package/dist/logging/ConfigurableLoggerFactory.js.map +1 -0
- package/dist/logging/ConfigurableLoggerFactory.jsonld +169 -0
- package/dist/logging/LogContext.d.ts +5 -0
- package/dist/logging/LogContext.js +6 -0
- package/dist/logging/LogContext.js.map +1 -0
- package/dist/main.d.ts +2 -0
- package/dist/main.js +148 -0
- package/dist/main.js.map +1 -0
- package/dist/network/LocalNetworkDetector.d.ts +65 -0
- package/dist/network/LocalNetworkDetector.js +185 -0
- package/dist/network/LocalNetworkDetector.js.map +1 -0
- package/dist/network/index.d.ts +4 -0
- package/dist/network/index.js +21 -0
- package/dist/network/index.js.map +1 -0
- package/dist/pods/ReservedSuffixIdentifierGenerator.d.ts +13 -0
- package/dist/pods/ReservedSuffixIdentifierGenerator.js +26 -0
- package/dist/pods/ReservedSuffixIdentifierGenerator.js.map +1 -0
- package/dist/pods/ReservedSuffixIdentifierGenerator.jsonld +75 -0
- package/dist/quota/DefaultQuotaService.d.ts +16 -0
- package/dist/quota/DefaultQuotaService.js +37 -0
- package/dist/quota/DefaultQuotaService.js.map +1 -0
- package/dist/quota/DefaultQuotaService.jsonld +85 -0
- package/dist/quota/DrizzleQuotaService.d.ts +16 -0
- package/dist/quota/DrizzleQuotaService.js +37 -0
- package/dist/quota/DrizzleQuotaService.js.map +1 -0
- package/dist/quota/DrizzleQuotaService.jsonld +87 -0
- package/dist/quota/NoopQuotaService.d.ts +7 -0
- package/dist/quota/NoopQuotaService.js +15 -0
- package/dist/quota/NoopQuotaService.js.map +1 -0
- package/dist/quota/NoopQuotaService.jsonld +36 -0
- package/dist/quota/QuotaService.d.ts +6 -0
- package/dist/quota/QuotaService.js +3 -0
- package/dist/quota/QuotaService.js.map +1 -0
- package/dist/quota/QuotaService.jsonld +33 -0
- package/dist/sdk/SignalingClientAdapter.d.ts +38 -0
- package/dist/sdk/SignalingClientAdapter.js +99 -0
- package/dist/sdk/SignalingClientAdapter.js.map +1 -0
- package/dist/sdk/createFetch.d.ts +23 -0
- package/dist/sdk/createFetch.js +258 -0
- package/dist/sdk/createFetch.js.map +1 -0
- package/dist/sdk/index.d.ts +29 -0
- package/dist/sdk/index.js +34 -0
- package/dist/sdk/index.js.map +1 -0
- package/dist/sdk/xpodFetch.d.ts +112 -0
- package/dist/sdk/xpodFetch.js +251 -0
- package/dist/sdk/xpodFetch.js.map +1 -0
- package/dist/service/EdgeNodeCertificateService.d.ts +45 -0
- package/dist/service/EdgeNodeCertificateService.js +164 -0
- package/dist/service/EdgeNodeCertificateService.js.map +1 -0
- package/dist/service/EdgeNodeCertificateService.jsonld +216 -0
- package/dist/service/EdgeNodeHeartbeatService.d.ts +68 -0
- package/dist/service/EdgeNodeHeartbeatService.js +262 -0
- package/dist/service/EdgeNodeHeartbeatService.js.map +1 -0
- package/dist/service/PodMigrationService.d.ts +43 -0
- package/dist/service/PodMigrationService.js +72 -0
- package/dist/service/PodMigrationService.js.map +1 -0
- package/dist/service/PodMigrationService.jsonld +76 -0
- package/dist/signaling/SignalingClient.d.ts +142 -0
- package/dist/signaling/SignalingClient.js +305 -0
- package/dist/signaling/SignalingClient.js.map +1 -0
- package/dist/signaling/SignalingService.d.ts +104 -0
- package/dist/signaling/SignalingService.js +440 -0
- package/dist/signaling/SignalingService.js.map +1 -0
- package/dist/signaling/index.d.ts +11 -0
- package/dist/signaling/index.js +28 -0
- package/dist/signaling/index.js.map +1 -0
- package/dist/signaling/types.d.ts +237 -0
- package/dist/signaling/types.js +18 -0
- package/dist/signaling/types.js.map +1 -0
- package/dist/storage/DrizzleCompat.d.ts +15 -0
- package/dist/storage/DrizzleCompat.js +60 -0
- package/dist/storage/DrizzleCompat.js.map +1 -0
- package/dist/storage/LockingResourceStore.d.ts +8 -0
- package/dist/storage/LockingResourceStore.js +68 -0
- package/dist/storage/LockingResourceStore.js.map +1 -0
- package/dist/storage/MigratableDataAccessor.d.ts +63 -0
- package/dist/storage/MigratableDataAccessor.js +11 -0
- package/dist/storage/MigratableDataAccessor.js.map +1 -0
- package/dist/storage/MigratableDataAccessor.jsonld +60 -0
- package/dist/storage/ObservableResourceStore.d.ts +89 -0
- package/dist/storage/ObservableResourceStore.js +125 -0
- package/dist/storage/ObservableResourceStore.js.map +1 -0
- package/dist/storage/RepresentationPartialConvertingStore.d.ts +22 -0
- package/dist/storage/RepresentationPartialConvertingStore.js +94 -0
- package/dist/storage/RepresentationPartialConvertingStore.js.map +1 -0
- package/dist/storage/RepresentationPartialConvertingStore.jsonld +332 -0
- package/dist/storage/SparqlUpdateResourceStore.d.ts +30 -0
- package/dist/storage/SparqlUpdateResourceStore.js +292 -0
- package/dist/storage/SparqlUpdateResourceStore.js.map +1 -0
- package/dist/storage/SparqlUpdateResourceStore.jsonld +112 -0
- package/dist/storage/SqliteCompat.d.ts +60 -0
- package/dist/storage/SqliteCompat.js +158 -0
- package/dist/storage/SqliteCompat.js.map +1 -0
- package/dist/storage/accessors/MinioDataAccessor.d.ts +127 -0
- package/dist/storage/accessors/MinioDataAccessor.js +249 -0
- package/dist/storage/accessors/MinioDataAccessor.js.map +1 -0
- package/dist/storage/accessors/MinioDataAccessor.jsonld +138 -0
- package/dist/storage/accessors/MixDataAccessor.d.ts +43 -0
- package/dist/storage/accessors/MixDataAccessor.js +130 -0
- package/dist/storage/accessors/MixDataAccessor.js.map +1 -0
- package/dist/storage/accessors/MixDataAccessor.jsonld +101 -0
- package/dist/storage/accessors/QuadstoreSparqlDataAccessor.d.ts +146 -0
- package/dist/storage/accessors/QuadstoreSparqlDataAccessor.js +415 -0
- package/dist/storage/accessors/QuadstoreSparqlDataAccessor.js.map +1 -0
- package/dist/storage/accessors/QuadstoreSparqlDataAccessor.jsonld +180 -0
- package/dist/storage/accessors/QuintStoreSparqlDataAccessor.d.ts +95 -0
- package/dist/storage/accessors/QuintStoreSparqlDataAccessor.js +376 -0
- package/dist/storage/accessors/QuintStoreSparqlDataAccessor.js.map +1 -0
- package/dist/storage/accessors/QuintStoreSparqlDataAccessor.jsonld +168 -0
- package/dist/storage/accessors/TieredMinioDataAccessor.d.ts +150 -0
- package/dist/storage/accessors/TieredMinioDataAccessor.js +582 -0
- package/dist/storage/accessors/TieredMinioDataAccessor.js.map +1 -0
- package/dist/storage/accessors/TieredMinioDataAccessor.jsonld +333 -0
- package/dist/storage/database/PostgresPoolManager.d.ts +56 -0
- package/dist/storage/database/PostgresPoolManager.js +117 -0
- package/dist/storage/database/PostgresPoolManager.js.map +1 -0
- package/dist/storage/keyvalue/PostgresKeyValueStorage.d.ts +34 -0
- package/dist/storage/keyvalue/PostgresKeyValueStorage.js +146 -0
- package/dist/storage/keyvalue/PostgresKeyValueStorage.js.map +1 -0
- package/dist/storage/keyvalue/PostgresKeyValueStorage.jsonld +192 -0
- package/dist/storage/keyvalue/RedisKeyValueStorage.d.ts +30 -0
- package/dist/storage/keyvalue/RedisKeyValueStorage.js +133 -0
- package/dist/storage/keyvalue/RedisKeyValueStorage.js.map +1 -0
- package/dist/storage/keyvalue/RedisKeyValueStorage.jsonld +237 -0
- package/dist/storage/keyvalue/SqliteKeyValueStorage.d.ts +30 -0
- package/dist/storage/keyvalue/SqliteKeyValueStorage.js +164 -0
- package/dist/storage/keyvalue/SqliteKeyValueStorage.js.map +1 -0
- package/dist/storage/keyvalue/SqliteKeyValueStorage.jsonld +167 -0
- package/dist/storage/quint/BaseQuintStore.d.ts +80 -0
- package/dist/storage/quint/BaseQuintStore.js +535 -0
- package/dist/storage/quint/BaseQuintStore.js.map +1 -0
- package/dist/storage/quint/BaseQuintStore.jsonld +175 -0
- package/dist/storage/quint/PgQuintStore.d.ts +61 -0
- package/dist/storage/quint/PgQuintStore.drizzle.d.ts +45 -0
- package/dist/storage/quint/PgQuintStore.drizzle.js +327 -0
- package/dist/storage/quint/PgQuintStore.drizzle.js.map +1 -0
- package/dist/storage/quint/PgQuintStore.js +275 -0
- package/dist/storage/quint/PgQuintStore.js.map +1 -0
- package/dist/storage/quint/PgQuintStore.jsonld +258 -0
- package/dist/storage/quint/SqliteQuintStore.d.ts +55 -0
- package/dist/storage/quint/SqliteQuintStore.js +630 -0
- package/dist/storage/quint/SqliteQuintStore.js.map +1 -0
- package/dist/storage/quint/SqliteQuintStore.jsonld +157 -0
- package/dist/storage/quint/index.d.ts +11 -0
- package/dist/storage/quint/index.js +30 -0
- package/dist/storage/quint/index.js.map +1 -0
- package/dist/storage/quint/schema.d.ts +82 -0
- package/dist/storage/quint/schema.js +33 -0
- package/dist/storage/quint/schema.js.map +1 -0
- package/dist/storage/quint/serialization.d.ts +56 -0
- package/dist/storage/quint/serialization.js +198 -0
- package/dist/storage/quint/serialization.js.map +1 -0
- package/dist/storage/quint/types.d.ts +152 -0
- package/dist/storage/quint/types.js +27 -0
- package/dist/storage/quint/types.js.map +1 -0
- package/dist/storage/quint/types.jsonld +78 -0
- package/dist/storage/quota/PerAccountQuotaStrategy.d.ts +19 -0
- package/dist/storage/quota/PerAccountQuotaStrategy.js +63 -0
- package/dist/storage/quota/PerAccountQuotaStrategy.js.map +1 -0
- package/dist/storage/quota/PerAccountQuotaStrategy.jsonld +113 -0
- package/dist/storage/quota/UsageRepository.d.ts +46 -0
- package/dist/storage/quota/UsageRepository.js +278 -0
- package/dist/storage/quota/UsageRepository.js.map +1 -0
- package/dist/storage/quota/UsageTrackingStore.d.ts +37 -0
- package/dist/storage/quota/UsageTrackingStore.js +355 -0
- package/dist/storage/quota/UsageTrackingStore.js.map +1 -0
- package/dist/storage/quota/UsageTrackingStore.jsonld +193 -0
- package/dist/storage/sparql/AlgebraUtils.d.ts +48 -0
- package/dist/storage/sparql/AlgebraUtils.js +118 -0
- package/dist/storage/sparql/AlgebraUtils.js.map +1 -0
- package/dist/storage/sparql/ComunicaOptimizedEngine.d.ts +59 -0
- package/dist/storage/sparql/ComunicaOptimizedEngine.js +254 -0
- package/dist/storage/sparql/ComunicaOptimizedEngine.js.map +1 -0
- package/dist/storage/sparql/ComunicaQuintEngine.d.ts +134 -0
- package/dist/storage/sparql/ComunicaQuintEngine.js +727 -0
- package/dist/storage/sparql/ComunicaQuintEngine.js.map +1 -0
- package/dist/storage/sparql/ExpressionEvaluator.d.ts +54 -0
- package/dist/storage/sparql/ExpressionEvaluator.js +340 -0
- package/dist/storage/sparql/ExpressionEvaluator.js.map +1 -0
- package/dist/storage/sparql/FilterPushdownExtractor.d.ts +74 -0
- package/dist/storage/sparql/FilterPushdownExtractor.js +409 -0
- package/dist/storage/sparql/FilterPushdownExtractor.js.map +1 -0
- package/dist/storage/sparql/OptimizedQuadstoreEngine.d.ts +65 -0
- package/dist/storage/sparql/OptimizedQuadstoreEngine.js +327 -0
- package/dist/storage/sparql/OptimizedQuadstoreEngine.js.map +1 -0
- package/dist/storage/sparql/OptimizedQuadstoreSource.d.ts +46 -0
- package/dist/storage/sparql/OptimizedQuadstoreSource.js +118 -0
- package/dist/storage/sparql/OptimizedQuadstoreSource.js.map +1 -0
- package/dist/storage/sparql/PatternBuilder.d.ts +41 -0
- package/dist/storage/sparql/PatternBuilder.js +118 -0
- package/dist/storage/sparql/PatternBuilder.js.map +1 -0
- package/dist/storage/sparql/QueryOptimizer.d.ts +125 -0
- package/dist/storage/sparql/QueryOptimizer.js +363 -0
- package/dist/storage/sparql/QueryOptimizer.js.map +1 -0
- package/dist/storage/sparql/QuintEngine.d.ts +92 -0
- package/dist/storage/sparql/QuintEngine.js +150 -0
- package/dist/storage/sparql/QuintEngine.js.map +1 -0
- package/dist/storage/sparql/QuintQuerySource.d.ts +227 -0
- package/dist/storage/sparql/QuintQuerySource.js +918 -0
- package/dist/storage/sparql/QuintQuerySource.js.map +1 -0
- package/dist/storage/sparql/SimpleSparqlExecutor.d.ts +40 -0
- package/dist/storage/sparql/SimpleSparqlExecutor.js +131 -0
- package/dist/storage/sparql/SimpleSparqlExecutor.js.map +1 -0
- package/dist/storage/sparql/SubgraphQueryEngine.d.ts +74 -0
- package/dist/storage/sparql/SubgraphQueryEngine.js +248 -0
- package/dist/storage/sparql/SubgraphQueryEngine.js.map +1 -0
- package/dist/storage/sparql/SubgraphQueryEngine.jsonld +250 -0
- package/dist/storage/vector/PostgresVectorStore.d.ts +46 -0
- package/dist/storage/vector/PostgresVectorStore.js +291 -0
- package/dist/storage/vector/PostgresVectorStore.js.map +1 -0
- package/dist/storage/vector/PostgresVectorStore.jsonld +142 -0
- package/dist/storage/vector/SqliteVectorStore.d.ts +44 -0
- package/dist/storage/vector/SqliteVectorStore.js +282 -0
- package/dist/storage/vector/SqliteVectorStore.js.map +1 -0
- package/dist/storage/vector/SqliteVectorStore.jsonld +137 -0
- package/dist/storage/vector/VectorIndexingListener.d.ts +114 -0
- package/dist/storage/vector/VectorIndexingListener.js +351 -0
- package/dist/storage/vector/VectorIndexingListener.js.map +1 -0
- package/dist/storage/vector/VectorStore.d.ts +42 -0
- package/dist/storage/vector/VectorStore.js +50 -0
- package/dist/storage/vector/VectorStore.js.map +1 -0
- package/dist/storage/vector/VectorStore.jsonld +87 -0
- package/dist/storage/vector/VectorStoreInit.d.ts +28 -0
- package/dist/storage/vector/VectorStoreInit.js +104 -0
- package/dist/storage/vector/VectorStoreInit.js.map +1 -0
- package/dist/storage/vector/index.d.ts +5 -0
- package/dist/storage/vector/index.js +22 -0
- package/dist/storage/vector/index.js.map +1 -0
- package/dist/storage/vector/types.d.ts +39 -0
- package/dist/storage/vector/types.js +8 -0
- package/dist/storage/vector/types.js.map +1 -0
- package/dist/subdomain/SubdomainClient.d.ts +156 -0
- package/dist/subdomain/SubdomainClient.js +220 -0
- package/dist/subdomain/SubdomainClient.js.map +1 -0
- package/dist/subdomain/SubdomainService.d.ts +114 -0
- package/dist/subdomain/SubdomainService.js +212 -0
- package/dist/subdomain/SubdomainService.js.map +1 -0
- package/dist/subdomain/SubdomainService.jsonld +261 -0
- package/dist/subdomain/index.d.ts +2 -0
- package/dist/subdomain/index.js +9 -0
- package/dist/subdomain/index.js.map +1 -0
- package/dist/supervisor/Supervisor.d.ts +20 -0
- package/dist/supervisor/Supervisor.js +174 -0
- package/dist/supervisor/Supervisor.js.map +1 -0
- package/dist/supervisor/index.d.ts +2 -0
- package/dist/supervisor/index.js +6 -0
- package/dist/supervisor/index.js.map +1 -0
- package/dist/supervisor/types.d.ts +19 -0
- package/dist/supervisor/types.js +3 -0
- package/dist/supervisor/types.js.map +1 -0
- package/dist/task/DrizzleTaskQueue.d.ts +60 -0
- package/dist/task/DrizzleTaskQueue.js +171 -0
- package/dist/task/DrizzleTaskQueue.js.map +1 -0
- package/dist/task/TaskExecutor.d.ts +82 -0
- package/dist/task/TaskExecutor.js +198 -0
- package/dist/task/TaskExecutor.js.map +1 -0
- package/dist/task/index.d.ts +10 -0
- package/dist/task/index.js +20 -0
- package/dist/task/index.js.map +1 -0
- package/dist/task/schema.d.ts +53 -0
- package/dist/task/schema.js +71 -0
- package/dist/task/schema.js.map +1 -0
- package/dist/task/types.d.ts +186 -0
- package/dist/task/types.js +12 -0
- package/dist/task/types.js.map +1 -0
- package/dist/terminal/AclPermissionService.d.ts +28 -0
- package/dist/terminal/AclPermissionService.js +141 -0
- package/dist/terminal/AclPermissionService.js.map +1 -0
- package/dist/terminal/BubblewrapSandbox.d.ts +51 -0
- package/dist/terminal/BubblewrapSandbox.js +147 -0
- package/dist/terminal/BubblewrapSandbox.js.map +1 -0
- package/dist/terminal/TerminalSession.d.ts +33 -0
- package/dist/terminal/TerminalSession.js +164 -0
- package/dist/terminal/TerminalSession.js.map +1 -0
- package/dist/terminal/TerminalSessionManager.d.ts +69 -0
- package/dist/terminal/TerminalSessionManager.js +196 -0
- package/dist/terminal/TerminalSessionManager.js.map +1 -0
- package/dist/terminal/index.d.ts +5 -0
- package/dist/terminal/index.js +22 -0
- package/dist/terminal/index.js.map +1 -0
- package/dist/terminal/sandbox/BubblewrapSandbox.d.ts +8 -0
- package/dist/terminal/sandbox/BubblewrapSandbox.js +105 -0
- package/dist/terminal/sandbox/BubblewrapSandbox.js.map +1 -0
- package/dist/terminal/sandbox/MacOSSandbox.d.ts +19 -0
- package/dist/terminal/sandbox/MacOSSandbox.js +120 -0
- package/dist/terminal/sandbox/MacOSSandbox.js.map +1 -0
- package/dist/terminal/sandbox/index.d.ts +29 -0
- package/dist/terminal/sandbox/index.js +113 -0
- package/dist/terminal/sandbox/index.js.map +1 -0
- package/dist/terminal/sandbox/types.d.ts +38 -0
- package/dist/terminal/sandbox/types.js +3 -0
- package/dist/terminal/sandbox/types.js.map +1 -0
- package/dist/terminal/types.d.ts +80 -0
- package/dist/terminal/types.js +16 -0
- package/dist/terminal/types.js.map +1 -0
- package/dist/tunnel/CloudflareTunnelProvider.d.ts +120 -0
- package/dist/tunnel/CloudflareTunnelProvider.js +376 -0
- package/dist/tunnel/CloudflareTunnelProvider.js.map +1 -0
- package/dist/tunnel/CloudflareTunnelProvider.jsonld +204 -0
- package/dist/tunnel/LocalTunnelProvider.d.ts +85 -0
- package/dist/tunnel/LocalTunnelProvider.js +295 -0
- package/dist/tunnel/LocalTunnelProvider.js.map +1 -0
- package/dist/tunnel/LocalTunnelProvider.jsonld +142 -0
- package/dist/tunnel/SakuraFrpTunnelProvider.d.ts +59 -0
- package/dist/tunnel/SakuraFrpTunnelProvider.js +207 -0
- package/dist/tunnel/SakuraFrpTunnelProvider.js.map +1 -0
- package/dist/tunnel/TunnelProvider.d.ts +91 -0
- package/dist/tunnel/TunnelProvider.js +10 -0
- package/dist/tunnel/TunnelProvider.js.map +1 -0
- package/dist/tunnel/TunnelProvider.jsonld +144 -0
- package/dist/tunnel/index.d.ts +3 -0
- package/dist/tunnel/index.js +8 -0
- package/dist/tunnel/index.js.map +1 -0
- package/dist/util/LockContext.d.ts +3 -0
- package/dist/util/LockContext.js +6 -0
- package/dist/util/LockContext.js.map +1 -0
- package/dist/util/ResourceStoreFetch.d.ts +11 -0
- package/dist/util/ResourceStoreFetch.js +147 -0
- package/dist/util/ResourceStoreFetch.js.map +1 -0
- package/dist/util/database/DatabaseMaintenance.d.ts +23 -0
- package/dist/util/database/DatabaseMaintenance.js +82 -0
- package/dist/util/database/DatabaseMaintenance.js.map +1 -0
- package/dist/util/identifiers/ClusterIdentifierStrategy.d.ts +23 -0
- package/dist/util/identifiers/ClusterIdentifierStrategy.js +73 -0
- package/dist/util/identifiers/ClusterIdentifierStrategy.js.map +1 -0
- package/dist/util/identifiers/ClusterIdentifierStrategy.jsonld +90 -0
- package/dist/util/identifiers/MultiDomainIdentifierStrategy.d.ts +40 -0
- package/dist/util/identifiers/MultiDomainIdentifierStrategy.js +73 -0
- package/dist/util/identifiers/MultiDomainIdentifierStrategy.js.map +1 -0
- package/dist/util/identifiers/MultiDomainIdentifierStrategy.jsonld +90 -0
- package/dist/util/identifiers/PathBasedPodIdentifierStrategy.d.ts +78 -0
- package/dist/util/identifiers/PathBasedPodIdentifierStrategy.js +182 -0
- package/dist/util/identifiers/PathBasedPodIdentifierStrategy.js.map +1 -0
- package/dist/util/identifiers/PathBasedPodIdentifierStrategy.jsonld +88 -0
- package/dist/util/identifiers/SubdomainPodIdentifierStrategy.d.ts +68 -0
- package/dist/util/identifiers/SubdomainPodIdentifierStrategy.js +149 -0
- package/dist/util/identifiers/SubdomainPodIdentifierStrategy.js.map +1 -0
- package/dist/util/identifiers/SubdomainPodIdentifierStrategy.jsonld +84 -0
- package/dist/util/locking/DebugRedisLocker.d.ts +8 -0
- package/dist/util/locking/DebugRedisLocker.js +33 -0
- package/dist/util/locking/DebugRedisLocker.js.map +1 -0
- package/dist/util/logger.d.ts +13 -0
- package/dist/util/logger.js +36 -0
- package/dist/util/logger.js.map +1 -0
- package/dist/util/stream/BandwidthThrottleTransform.d.ts +8 -0
- package/dist/util/stream/BandwidthThrottleTransform.js +55 -0
- package/dist/util/stream/BandwidthThrottleTransform.js.map +1 -0
- package/dist/vocab/external.d.ts +216 -0
- package/dist/vocab/external.js +276 -0
- package/dist/vocab/external.js.map +1 -0
- package/dist/vocab/index.d.ts +26 -0
- package/dist/vocab/index.js +46 -0
- package/dist/vocab/index.js.map +1 -0
- package/dist/vocab/udfs.d.ts +184 -0
- package/dist/vocab/udfs.js +217 -0
- package/dist/vocab/udfs.js.map +1 -0
- package/dist/webrtc/WebRTCClient.d.ts +109 -0
- package/dist/webrtc/WebRTCClient.js +344 -0
- package/dist/webrtc/WebRTCClient.js.map +1 -0
- package/dist/webrtc/WebRTCPeerManager.d.ts +112 -0
- package/dist/webrtc/WebRTCPeerManager.js +289 -0
- package/dist/webrtc/WebRTCPeerManager.js.map +1 -0
- package/dist/webrtc/WeriftPeerConnectionFactory.d.ts +13 -0
- package/dist/webrtc/WeriftPeerConnectionFactory.js +255 -0
- package/dist/webrtc/WeriftPeerConnectionFactory.js.map +1 -0
- package/dist/webrtc/index.d.ts +13 -0
- package/dist/webrtc/index.js +30 -0
- package/dist/webrtc/index.js.map +1 -0
- package/dist/webrtc/types.d.ts +169 -0
- package/dist/webrtc/types.js +6 -0
- package/dist/webrtc/types.js.map +1 -0
- package/dist/xpod.single.cjs +826 -0
- package/dist/xpod.single.cjs.map +7 -0
- package/package.json +173 -0
- package/static/app/assets/index.css +1 -0
- package/static/app/assets/main.js +11 -0
- package/static/app/auth.html +21 -0
- package/static/app/index.html +14 -0
- package/static/app/vite.svg +1 -0
- package/static/dashboard/assets/dashboard-G96F8267.js +52 -0
- package/static/dashboard/assets/dashboard-PJyGDppf.css +1 -0
- package/static/dashboard/auth.html +21 -0
- package/static/dashboard/index.html +13 -0
- package/static/dashboard/vite.svg +1 -0
- package/static/landing/index.html +165 -0
- package/templates/identity/index.html.ejs +12 -0
- package/templates/identity/login.html.ejs +49 -0
- package/templates/identity/oidc/consent.html.ejs +103 -0
- package/templates/identity/password/forgot.html.ejs +49 -0
- package/templates/identity/password/login.html.ejs +58 -0
- package/templates/identity/password/register.html.ejs +65 -0
- package/templates/main.html.ejs +1 -0
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
type NamespaceObject = ((term: string) => string) & {
|
|
2
|
+
prefix: string;
|
|
3
|
+
uri: string;
|
|
4
|
+
NAMESPACE: string;
|
|
5
|
+
term: (name: string) => string;
|
|
6
|
+
} & Record<string, string>;
|
|
7
|
+
export declare const DCTerms: NamespaceObject;
|
|
8
|
+
export declare const LINQ: NamespaceObject;
|
|
9
|
+
export {};
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Copied from linx/packages/models/src/namespaces.ts
|
|
3
|
+
// TODO: Centralize this in a shared package (@udfs/vocab or @linx/models)
|
|
4
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
+
exports.LINQ = exports.DCTerms = void 0;
|
|
6
|
+
const ABSOLUTE_IRI = /^[a-zA-Z][a-zA-Z\d+.-]*:/;
|
|
7
|
+
const createNamespace = (prefix, baseUri, terms) => {
|
|
8
|
+
const builder = ((term) => ABSOLUTE_IRI.test(term) ? term : `${baseUri}${term}`);
|
|
9
|
+
builder.prefix = prefix;
|
|
10
|
+
builder.uri = baseUri;
|
|
11
|
+
builder.NAMESPACE = baseUri;
|
|
12
|
+
builder.term = (name) => builder(name);
|
|
13
|
+
Object.entries(terms).forEach(([key, local]) => {
|
|
14
|
+
Object.defineProperty(builder, key, {
|
|
15
|
+
value: builder(local),
|
|
16
|
+
enumerable: true,
|
|
17
|
+
});
|
|
18
|
+
});
|
|
19
|
+
return builder;
|
|
20
|
+
};
|
|
21
|
+
exports.DCTerms = createNamespace('dc', 'http://purl.org/dc/terms/', {
|
|
22
|
+
modified: 'modified',
|
|
23
|
+
created: 'created',
|
|
24
|
+
});
|
|
25
|
+
exports.LINQ = createNamespace('linx', 'https://linx.ai/ns#', {
|
|
26
|
+
provider: 'provider',
|
|
27
|
+
status: 'status',
|
|
28
|
+
apiKey: 'apiKey',
|
|
29
|
+
baseUrl: 'baseUrl',
|
|
30
|
+
proxy: 'proxy',
|
|
31
|
+
aiModels: 'aiModels',
|
|
32
|
+
ModelProvider: 'ModelProvider',
|
|
33
|
+
});
|
|
34
|
+
//# sourceMappingURL=namespaces.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"namespaces.js","sourceRoot":"","sources":["../../../src/api/models/namespaces.ts"],"names":[],"mappings":";AAAA,qDAAqD;AACrD,0EAA0E;;;AAS1E,MAAM,YAAY,GAAG,0BAA0B,CAAA;AAE/C,MAAM,eAAe,GAAG,CAAC,MAAc,EAAE,OAAe,EAAE,KAA6B,EAAmB,EAAE;IAC1G,MAAM,OAAO,GAAG,CAAC,CAAC,IAAY,EAAE,EAAE,CAChC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,OAAO,GAAG,IAAI,EAAE,CAAoB,CAAA;IAC1E,OAAO,CAAC,MAAM,GAAG,MAAM,CAAA;IACvB,OAAO,CAAC,GAAG,GAAG,OAAO,CAAA;IACrB,OAAO,CAAC,SAAS,GAAG,OAAO,CAAA;IAC3B,OAAO,CAAC,IAAI,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;IAC9C,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;QAC7C,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,GAAG,EAAE;YAClC,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC;YACrB,UAAU,EAAE,IAAI;SACjB,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IACF,OAAO,OAAO,CAAA;AAChB,CAAC,CAAA;AAEY,QAAA,OAAO,GAAG,eAAe,CAAC,IAAI,EAAE,2BAA2B,EAAE;IACxE,QAAQ,EAAE,UAAU;IACpB,OAAO,EAAE,SAAS;CACnB,CAAC,CAAA;AAEW,QAAA,IAAI,GAAG,eAAe,CAAC,MAAM,EAAE,qBAAqB,EAAE;IACjE,QAAQ,EAAE,UAAU;IACpB,MAAM,EAAE,QAAQ;IAChB,MAAM,EAAE,QAAQ;IAChB,OAAO,EAAE,SAAS;IAClB,KAAK,EAAE,OAAO;IACd,QAAQ,EAAE,UAAU;IACpB,aAAa,EAAE,eAAe;CAC/B,CAAC,CAAA","sourcesContent":["// Copied from linx/packages/models/src/namespaces.ts\n// TODO: Centralize this in a shared package (@udfs/vocab or @linx/models)\n\ntype NamespaceObject = ((term: string) => string) & {\n prefix: string\n uri: string\n NAMESPACE: string\n term: (name: string) => string\n} & Record<string, string>\n\nconst ABSOLUTE_IRI = /^[a-zA-Z][a-zA-Z\\d+.-]*:/\n\nconst createNamespace = (prefix: string, baseUri: string, terms: Record<string, string>): NamespaceObject => {\n const builder = ((term: string) =>\n ABSOLUTE_IRI.test(term) ? term : `${baseUri}${term}`) as NamespaceObject\n builder.prefix = prefix\n builder.uri = baseUri\n builder.NAMESPACE = baseUri\n builder.term = (name: string) => builder(name)\n Object.entries(terms).forEach(([key, local]) => {\n Object.defineProperty(builder, key, {\n value: builder(local),\n enumerable: true,\n })\n })\n return builder\n}\n\nexport const DCTerms = createNamespace('dc', 'http://purl.org/dc/terms/', {\n modified: 'modified',\n created: 'created',\n})\n\nexport const LINQ = createNamespace('linx', 'https://linx.ai/ns#', {\n provider: 'provider',\n status: 'status',\n apiKey: 'apiKey',\n baseUrl: 'baseUrl',\n proxy: 'proxy',\n aiModels: 'aiModels',\n ModelProvider: 'ModelProvider',\n})\n"]}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { ClientCredentialsStore } from '../auth/ClientCredentialsAuthenticator';
|
|
2
|
+
import { type AuthContext } from '../auth/AuthContext';
|
|
3
|
+
export interface InternalPodServiceOptions {
|
|
4
|
+
tokenEndpoint: string;
|
|
5
|
+
apiKeyStore: ClientCredentialsStore;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Service for accessing user Pod data from the backend.
|
|
9
|
+
* Dynamically logs in using the caller's API Key (Client Credentials).
|
|
10
|
+
*/
|
|
11
|
+
export declare class InternalPodService {
|
|
12
|
+
private readonly options;
|
|
13
|
+
private readonly logger;
|
|
14
|
+
constructor(options: InternalPodServiceOptions);
|
|
15
|
+
/**
|
|
16
|
+
* Retrieves AI model provider configuration from a user's Pod
|
|
17
|
+
*/
|
|
18
|
+
getAiConfig(webId: string, auth: AuthContext): Promise<any>;
|
|
19
|
+
}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.InternalPodService = void 0;
|
|
4
|
+
const solid_client_authn_node_1 = require("@inrupt/solid-client-authn-node");
|
|
5
|
+
const drizzle_solid_1 = require("drizzle-solid");
|
|
6
|
+
const global_logger_factory_1 = require("global-logger-factory");
|
|
7
|
+
const model_provider_schema_1 = require("../models/model-provider.schema");
|
|
8
|
+
const AuthContext_1 = require("../auth/AuthContext");
|
|
9
|
+
/**
|
|
10
|
+
* Service for accessing user Pod data from the backend.
|
|
11
|
+
* Dynamically logs in using the caller's API Key (Client Credentials).
|
|
12
|
+
*/
|
|
13
|
+
class InternalPodService {
|
|
14
|
+
constructor(options) {
|
|
15
|
+
this.options = options;
|
|
16
|
+
this.logger = (0, global_logger_factory_1.getLoggerFor)(this);
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Retrieves AI model provider configuration from a user's Pod
|
|
20
|
+
*/
|
|
21
|
+
async getAiConfig(webId, auth) {
|
|
22
|
+
let fetcher;
|
|
23
|
+
if ((0, AuthContext_1.isSolidAuth)(auth) && auth.clientId) {
|
|
24
|
+
// API Key Mode: The caller provided a Client ID.
|
|
25
|
+
// We look up the secret and create a session for THIS client.
|
|
26
|
+
this.logger.debug(`Resolving session for client ${auth.clientId} to access ${webId}`);
|
|
27
|
+
const creds = await this.options.apiKeyStore.findByClientId(auth.clientId);
|
|
28
|
+
if (!creds) {
|
|
29
|
+
this.logger.warn(`No credentials found for client ${auth.clientId}`);
|
|
30
|
+
return undefined;
|
|
31
|
+
}
|
|
32
|
+
// Create a fresh session for this request/client
|
|
33
|
+
// TODO: Consider caching sessions to avoid login round-trip on every request
|
|
34
|
+
const session = new solid_client_authn_node_1.Session();
|
|
35
|
+
try {
|
|
36
|
+
await session.login({
|
|
37
|
+
oidcIssuer: new URL(this.options.tokenEndpoint).origin,
|
|
38
|
+
clientId: creds.clientId,
|
|
39
|
+
clientSecret: creds.clientSecret,
|
|
40
|
+
});
|
|
41
|
+
if (!session.info.isLoggedIn) {
|
|
42
|
+
throw new Error('Login returned false');
|
|
43
|
+
}
|
|
44
|
+
fetcher = session.fetch;
|
|
45
|
+
}
|
|
46
|
+
catch (error) {
|
|
47
|
+
this.logger.error(`Failed to login as client ${auth.clientId}: ${error}`);
|
|
48
|
+
return undefined;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
// Solid Token Mode: We cannot reuse the DPoP token for a different URL.
|
|
53
|
+
// For now, we return undefined, falling back to system defaults.
|
|
54
|
+
this.logger.debug('Solid Token auth detected; skipping Pod config fetch (DPoP limitation).');
|
|
55
|
+
return undefined;
|
|
56
|
+
}
|
|
57
|
+
// Use drizzle-solid with our authenticated session
|
|
58
|
+
const db = (0, drizzle_solid_1.drizzle)({ fetch: fetcher, info: { webId, isLoggedIn: true } });
|
|
59
|
+
try {
|
|
60
|
+
const providers = await db.select()
|
|
61
|
+
.from(model_provider_schema_1.modelProviderTable)
|
|
62
|
+
.where((0, drizzle_solid_1.eq)(model_provider_schema_1.modelProviderTable.enabled, true)); // Cast to any to bypass TS error
|
|
63
|
+
console.log(`[InternalPodService] Found ${providers.length} enabled providers:`, providers.map(p => ({ id: p.id, proxy: p.proxy, baseUrl: p.baseUrl })));
|
|
64
|
+
if (providers.length === 0) {
|
|
65
|
+
return undefined;
|
|
66
|
+
}
|
|
67
|
+
// Prefer provider with proxy configured (for external APIs like Google)
|
|
68
|
+
const withProxy = providers.find(p => p.proxy);
|
|
69
|
+
if (withProxy) {
|
|
70
|
+
console.log(`[InternalPodService] Using provider with proxy: ${withProxy.id}`);
|
|
71
|
+
return withProxy;
|
|
72
|
+
}
|
|
73
|
+
return providers[0];
|
|
74
|
+
}
|
|
75
|
+
catch (error) {
|
|
76
|
+
this.logger.warn(`Failed to read AI config from Pod for ${webId}: ${error}`);
|
|
77
|
+
return undefined;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
exports.InternalPodService = InternalPodService;
|
|
82
|
+
//# sourceMappingURL=InternalPodService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InternalPodService.js","sourceRoot":"","sources":["../../../src/api/service/InternalPodService.ts"],"names":[],"mappings":"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","sourcesContent":["import { Session } from '@inrupt/solid-client-authn-node';\nimport { drizzle, eq } from 'drizzle-solid';\nimport { getLoggerFor } from 'global-logger-factory';\nimport { modelProviderTable } from '../models/model-provider.schema';\nimport type { ClientCredentialsStore } from '../auth/ClientCredentialsAuthenticator';\nimport { isSolidAuth, type AuthContext } from '../auth/AuthContext';\n\nexport interface InternalPodServiceOptions {\n tokenEndpoint: string;\n apiKeyStore: ClientCredentialsStore;\n}\n\n/**\n * Service for accessing user Pod data from the backend.\n * Dynamically logs in using the caller's API Key (Client Credentials).\n */\nexport class InternalPodService {\n private readonly logger = getLoggerFor(this);\n\n public constructor(private readonly options: InternalPodServiceOptions) {}\n\n /**\n * Retrieves AI model provider configuration from a user's Pod\n */\n public async getAiConfig(webId: string, auth: AuthContext): Promise<any> {\n let fetcher: typeof fetch;\n\n if (isSolidAuth(auth) && auth.clientId) {\n // API Key Mode: The caller provided a Client ID.\n // We look up the secret and create a session for THIS client.\n this.logger.debug(`Resolving session for client ${auth.clientId} to access ${webId}`);\n \n const creds = await this.options.apiKeyStore.findByClientId(auth.clientId);\n if (!creds) {\n this.logger.warn(`No credentials found for client ${auth.clientId}`);\n return undefined;\n }\n\n // Create a fresh session for this request/client\n // TODO: Consider caching sessions to avoid login round-trip on every request\n const session = new Session();\n try {\n await session.login({\n oidcIssuer: new URL(this.options.tokenEndpoint).origin,\n clientId: creds.clientId,\n clientSecret: creds.clientSecret,\n });\n \n if (!session.info.isLoggedIn) {\n throw new Error('Login returned false');\n }\n fetcher = session.fetch;\n } catch (error) {\n this.logger.error(`Failed to login as client ${auth.clientId}: ${error}`);\n return undefined;\n }\n } else {\n // Solid Token Mode: We cannot reuse the DPoP token for a different URL.\n // For now, we return undefined, falling back to system defaults.\n this.logger.debug('Solid Token auth detected; skipping Pod config fetch (DPoP limitation).');\n return undefined;\n }\n\n // Use drizzle-solid with our authenticated session\n const db = drizzle({ fetch: fetcher, info: { webId, isLoggedIn: true } } as any);\n\n try {\n const providers = await db.select()\n .from(modelProviderTable)\n .where(eq((modelProviderTable as any).enabled, true)); // Cast to any to bypass TS error\n\n console.log(`[InternalPodService] Found ${providers.length} enabled providers:`, providers.map(p => ({ id: p.id, proxy: p.proxy, baseUrl: p.baseUrl })));\n\n if (providers.length === 0) {\n return undefined;\n }\n\n // Prefer provider with proxy configured (for external APIs like Google)\n const withProxy = providers.find(p => p.proxy);\n if (withProxy) {\n console.log(`[InternalPodService] Using provider with proxy: ${withProxy.id}`);\n return withProxy;\n }\n\n return providers[0];\n } catch (error) {\n this.logger.warn(`Failed to read AI config from Pod for ${webId}: ${error}`);\n return undefined;\n }\n }\n}\n"]}
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
import type { PodChatKitStore } from '../chatkit/pod-store';
|
|
2
|
+
import type { AuthContext } from '../auth/AuthContext';
|
|
3
|
+
import type { EmbeddingService } from '../../ai/service/EmbeddingService';
|
|
4
|
+
/**
|
|
5
|
+
* Vector upsert request
|
|
6
|
+
*/
|
|
7
|
+
export interface VectorUpsertRequest {
|
|
8
|
+
/** Embedding model name */
|
|
9
|
+
model: string;
|
|
10
|
+
/** Vectors to upsert */
|
|
11
|
+
vectors: Array<{
|
|
12
|
+
/** Resource URI */
|
|
13
|
+
subject: string;
|
|
14
|
+
/** Semantic aspect (type, chunk, property) */
|
|
15
|
+
aspect: string;
|
|
16
|
+
/** Vector data */
|
|
17
|
+
vector: number[];
|
|
18
|
+
}>;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Vector search request
|
|
22
|
+
*/
|
|
23
|
+
export interface VectorSearchRequest {
|
|
24
|
+
/** Embedding model name */
|
|
25
|
+
model: string;
|
|
26
|
+
/** Query text (will be converted to vector) */
|
|
27
|
+
query?: string;
|
|
28
|
+
/** Pre-computed query vector */
|
|
29
|
+
vector?: number[];
|
|
30
|
+
/** Max results */
|
|
31
|
+
limit?: number;
|
|
32
|
+
/** Similarity threshold (0-1) */
|
|
33
|
+
threshold?: number;
|
|
34
|
+
/** Filter conditions */
|
|
35
|
+
filter?: {
|
|
36
|
+
subject?: {
|
|
37
|
+
$eq?: string;
|
|
38
|
+
$startsWith?: string;
|
|
39
|
+
$in?: string[];
|
|
40
|
+
};
|
|
41
|
+
aspect?: {
|
|
42
|
+
$eq?: string;
|
|
43
|
+
$startsWith?: string;
|
|
44
|
+
$in?: string[];
|
|
45
|
+
};
|
|
46
|
+
};
|
|
47
|
+
/** Deduplicate by subject */
|
|
48
|
+
distinctSubject?: boolean;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Vector search result
|
|
52
|
+
*/
|
|
53
|
+
export interface VectorSearchResult {
|
|
54
|
+
subject: string;
|
|
55
|
+
aspect: string;
|
|
56
|
+
score: number;
|
|
57
|
+
distance: number;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Vector delete request
|
|
61
|
+
*/
|
|
62
|
+
export interface VectorDeleteRequest {
|
|
63
|
+
/** Embedding model name */
|
|
64
|
+
model: string;
|
|
65
|
+
/** Filter conditions (at least one field required) */
|
|
66
|
+
filter: {
|
|
67
|
+
subject?: {
|
|
68
|
+
$eq?: string;
|
|
69
|
+
$startsWith?: string;
|
|
70
|
+
};
|
|
71
|
+
aspect?: {
|
|
72
|
+
$eq?: string;
|
|
73
|
+
$startsWith?: string;
|
|
74
|
+
};
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Vector status response
|
|
79
|
+
*/
|
|
80
|
+
export interface VectorStatusResponse {
|
|
81
|
+
byModel: Array<{
|
|
82
|
+
model: string;
|
|
83
|
+
count: number;
|
|
84
|
+
}>;
|
|
85
|
+
totalCount: number;
|
|
86
|
+
}
|
|
87
|
+
export interface VectorServiceOptions {
|
|
88
|
+
/** CSS base URL for vector API */
|
|
89
|
+
cssBaseUrl: string;
|
|
90
|
+
/** Pod store for getting AI credentials */
|
|
91
|
+
store: PodChatKitStore;
|
|
92
|
+
/** Embedding service for generating vectors */
|
|
93
|
+
embeddingService: EmbeddingService;
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* VectorService - API Server 的向量服务
|
|
97
|
+
*
|
|
98
|
+
* 负责:
|
|
99
|
+
* 1. 从 Pod 读取 AI 凭据
|
|
100
|
+
* 2. 调用 EmbeddingService 生成向量
|
|
101
|
+
* 3. 调用 CSS 的 /-/vector/* 端点存储/搜索向量
|
|
102
|
+
*/
|
|
103
|
+
export declare class VectorService {
|
|
104
|
+
private readonly logger;
|
|
105
|
+
private readonly cssBaseUrl;
|
|
106
|
+
private readonly store;
|
|
107
|
+
private readonly embeddingService;
|
|
108
|
+
constructor(options: VectorServiceOptions);
|
|
109
|
+
/**
|
|
110
|
+
* Upsert vectors to CSS vector store
|
|
111
|
+
*/
|
|
112
|
+
upsert(request: VectorUpsertRequest, auth: AuthContext, accessToken: string): Promise<{
|
|
113
|
+
upserted: number;
|
|
114
|
+
errors: string[];
|
|
115
|
+
took_ms: number;
|
|
116
|
+
}>;
|
|
117
|
+
/**
|
|
118
|
+
* Search vectors in CSS vector store
|
|
119
|
+
*/
|
|
120
|
+
search(request: VectorSearchRequest, auth: AuthContext, accessToken: string): Promise<{
|
|
121
|
+
results: VectorSearchResult[];
|
|
122
|
+
model: string;
|
|
123
|
+
took_ms: number;
|
|
124
|
+
}>;
|
|
125
|
+
/**
|
|
126
|
+
* Delete vectors from CSS vector store
|
|
127
|
+
*/
|
|
128
|
+
delete(request: VectorDeleteRequest, auth: AuthContext, accessToken: string): Promise<{
|
|
129
|
+
deleted: number;
|
|
130
|
+
errors: string[];
|
|
131
|
+
took_ms: number;
|
|
132
|
+
}>;
|
|
133
|
+
/**
|
|
134
|
+
* Get vector store status
|
|
135
|
+
*/
|
|
136
|
+
status(accessToken: string): Promise<VectorStatusResponse>;
|
|
137
|
+
/**
|
|
138
|
+
* Generate embedding for text
|
|
139
|
+
*/
|
|
140
|
+
embed(text: string, model: string, auth: AuthContext): Promise<number[]>;
|
|
141
|
+
/**
|
|
142
|
+
* Generate embeddings for multiple texts
|
|
143
|
+
*/
|
|
144
|
+
embedBatch(texts: string[], model: string, auth: AuthContext): Promise<number[][]>;
|
|
145
|
+
/**
|
|
146
|
+
* Create a StoreContext from AuthContext for Pod operations
|
|
147
|
+
*/
|
|
148
|
+
private createStoreContext;
|
|
149
|
+
private getAiCredential;
|
|
150
|
+
private callCssVectorApi;
|
|
151
|
+
/**
|
|
152
|
+
* Hash subject + aspect to numeric ID
|
|
153
|
+
* Uses FNV-1a hash for good distribution
|
|
154
|
+
*/
|
|
155
|
+
private hashSubjectAspect;
|
|
156
|
+
}
|
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.VectorService = void 0;
|
|
4
|
+
const global_logger_factory_1 = require("global-logger-factory");
|
|
5
|
+
const AuthContext_1 = require("../auth/AuthContext");
|
|
6
|
+
/**
|
|
7
|
+
* VectorService - API Server 的向量服务
|
|
8
|
+
*
|
|
9
|
+
* 负责:
|
|
10
|
+
* 1. 从 Pod 读取 AI 凭据
|
|
11
|
+
* 2. 调用 EmbeddingService 生成向量
|
|
12
|
+
* 3. 调用 CSS 的 /-/vector/* 端点存储/搜索向量
|
|
13
|
+
*/
|
|
14
|
+
class VectorService {
|
|
15
|
+
constructor(options) {
|
|
16
|
+
this.logger = (0, global_logger_factory_1.getLoggerFor)(this);
|
|
17
|
+
this.cssBaseUrl = options.cssBaseUrl.replace(/\/$/, '');
|
|
18
|
+
this.store = options.store;
|
|
19
|
+
this.embeddingService = options.embeddingService;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Upsert vectors to CSS vector store
|
|
23
|
+
*/
|
|
24
|
+
async upsert(request, auth, accessToken) {
|
|
25
|
+
const startTime = Date.now();
|
|
26
|
+
const userId = (0, AuthContext_1.getWebId)(auth) ?? (0, AuthContext_1.getAccountId)(auth) ?? 'anonymous';
|
|
27
|
+
this.logger.info(`Vector upsert request from ${userId}, model: ${request.model}, count: ${request.vectors.length}`);
|
|
28
|
+
// Convert subject+aspect to numeric IDs using hash
|
|
29
|
+
const vectorsWithIds = request.vectors.map((v) => ({
|
|
30
|
+
id: this.hashSubjectAspect(v.subject, v.aspect),
|
|
31
|
+
vector: v.vector,
|
|
32
|
+
}));
|
|
33
|
+
// Call CSS vector API
|
|
34
|
+
const response = await this.callCssVectorApi('upsert', accessToken, {
|
|
35
|
+
model: request.model,
|
|
36
|
+
vectors: vectorsWithIds,
|
|
37
|
+
});
|
|
38
|
+
return {
|
|
39
|
+
upserted: response.upserted ?? 0,
|
|
40
|
+
errors: response.errors ?? [],
|
|
41
|
+
took_ms: Date.now() - startTime,
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Search vectors in CSS vector store
|
|
46
|
+
*/
|
|
47
|
+
async search(request, auth, accessToken) {
|
|
48
|
+
const startTime = Date.now();
|
|
49
|
+
const userId = (0, AuthContext_1.getWebId)(auth) ?? (0, AuthContext_1.getAccountId)(auth) ?? 'anonymous';
|
|
50
|
+
this.logger.info(`Vector search request from ${userId}, model: ${request.model}`);
|
|
51
|
+
let queryVector = request.vector;
|
|
52
|
+
// If query text provided, generate embedding
|
|
53
|
+
if (request.query && !queryVector) {
|
|
54
|
+
const credential = await this.getAiCredential(auth);
|
|
55
|
+
if (!credential) {
|
|
56
|
+
throw new Error('No AI credential found for embedding generation');
|
|
57
|
+
}
|
|
58
|
+
queryVector = await this.embeddingService.embed(request.query, credential, request.model);
|
|
59
|
+
}
|
|
60
|
+
if (!queryVector) {
|
|
61
|
+
throw new Error('Either query or vector must be provided');
|
|
62
|
+
}
|
|
63
|
+
// Call CSS vector API
|
|
64
|
+
const response = await this.callCssVectorApi('search', accessToken, {
|
|
65
|
+
model: request.model,
|
|
66
|
+
vector: queryVector,
|
|
67
|
+
limit: request.limit ?? 10,
|
|
68
|
+
threshold: request.threshold,
|
|
69
|
+
excludeIds: undefined, // TODO: implement filter to excludeIds conversion
|
|
70
|
+
});
|
|
71
|
+
// Map numeric IDs back to subject+aspect (requires metadata storage)
|
|
72
|
+
// For now, return IDs as subjects (external API Server should maintain mapping)
|
|
73
|
+
const results = (response.results ?? []).map((r) => ({
|
|
74
|
+
subject: String(r.id), // Placeholder - actual mapping should be done by caller
|
|
75
|
+
aspect: '',
|
|
76
|
+
score: r.score,
|
|
77
|
+
distance: r.distance,
|
|
78
|
+
}));
|
|
79
|
+
return {
|
|
80
|
+
results,
|
|
81
|
+
model: request.model,
|
|
82
|
+
took_ms: Date.now() - startTime,
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Delete vectors from CSS vector store
|
|
87
|
+
*/
|
|
88
|
+
async delete(request, auth, accessToken) {
|
|
89
|
+
const startTime = Date.now();
|
|
90
|
+
const userId = (0, AuthContext_1.getWebId)(auth) ?? (0, AuthContext_1.getAccountId)(auth) ?? 'anonymous';
|
|
91
|
+
this.logger.info(`Vector delete request from ${userId}, model: ${request.model}`);
|
|
92
|
+
// Convert filter to IDs (simplified - actual implementation needs metadata lookup)
|
|
93
|
+
const ids = [];
|
|
94
|
+
if (request.filter.subject?.$eq && request.filter.aspect?.$eq) {
|
|
95
|
+
ids.push(this.hashSubjectAspect(request.filter.subject.$eq, request.filter.aspect.$eq));
|
|
96
|
+
}
|
|
97
|
+
if (ids.length === 0) {
|
|
98
|
+
return { deleted: 0, errors: ['No matching vectors found'], took_ms: Date.now() - startTime };
|
|
99
|
+
}
|
|
100
|
+
// Call CSS vector API
|
|
101
|
+
const response = await this.callCssVectorApi('delete', accessToken, {
|
|
102
|
+
model: request.model,
|
|
103
|
+
ids,
|
|
104
|
+
});
|
|
105
|
+
return {
|
|
106
|
+
deleted: response.deleted ?? 0,
|
|
107
|
+
errors: response.errors ?? [],
|
|
108
|
+
took_ms: Date.now() - startTime,
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Get vector store status
|
|
113
|
+
*/
|
|
114
|
+
async status(accessToken) {
|
|
115
|
+
const response = await this.callCssVectorApi('status', accessToken, undefined, 'GET');
|
|
116
|
+
return {
|
|
117
|
+
byModel: response.byModel ?? [],
|
|
118
|
+
totalCount: response.totalCount ?? 0,
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Generate embedding for text
|
|
123
|
+
*/
|
|
124
|
+
async embed(text, model, auth) {
|
|
125
|
+
const credential = await this.getAiCredential(auth);
|
|
126
|
+
if (!credential) {
|
|
127
|
+
throw new Error('No AI credential found for embedding generation');
|
|
128
|
+
}
|
|
129
|
+
return this.embeddingService.embed(text, credential, model);
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Generate embeddings for multiple texts
|
|
133
|
+
*/
|
|
134
|
+
async embedBatch(texts, model, auth) {
|
|
135
|
+
const credential = await this.getAiCredential(auth);
|
|
136
|
+
if (!credential) {
|
|
137
|
+
throw new Error('No AI credential found for embedding generation');
|
|
138
|
+
}
|
|
139
|
+
return this.embeddingService.embedBatch(texts, credential, model);
|
|
140
|
+
}
|
|
141
|
+
// ============================================
|
|
142
|
+
// Private methods
|
|
143
|
+
// ============================================
|
|
144
|
+
/**
|
|
145
|
+
* Create a StoreContext from AuthContext for Pod operations
|
|
146
|
+
*/
|
|
147
|
+
createStoreContext(auth) {
|
|
148
|
+
return {
|
|
149
|
+
userId: (0, AuthContext_1.getWebId)(auth) ?? (0, AuthContext_1.getAccountId)(auth) ?? 'anonymous',
|
|
150
|
+
auth,
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
async getAiCredential(auth) {
|
|
154
|
+
const context = this.createStoreContext(auth);
|
|
155
|
+
const config = await this.store.getAiConfig(context);
|
|
156
|
+
if (!config) {
|
|
157
|
+
return undefined;
|
|
158
|
+
}
|
|
159
|
+
return {
|
|
160
|
+
provider: config.providerId,
|
|
161
|
+
apiKey: config.apiKey,
|
|
162
|
+
baseUrl: config.baseUrl,
|
|
163
|
+
proxyUrl: config.proxyUrl,
|
|
164
|
+
};
|
|
165
|
+
}
|
|
166
|
+
async callCssVectorApi(action, accessToken, body, method = 'POST') {
|
|
167
|
+
const url = `${this.cssBaseUrl}/-/vector/${action}`;
|
|
168
|
+
const options = {
|
|
169
|
+
method,
|
|
170
|
+
headers: {
|
|
171
|
+
'Authorization': `Bearer ${accessToken}`,
|
|
172
|
+
'Content-Type': 'application/json',
|
|
173
|
+
},
|
|
174
|
+
};
|
|
175
|
+
if (body && method !== 'GET') {
|
|
176
|
+
options.body = JSON.stringify(body);
|
|
177
|
+
}
|
|
178
|
+
this.logger.debug(`Calling CSS vector API: ${method} ${url}`);
|
|
179
|
+
const response = await fetch(url, options);
|
|
180
|
+
if (!response.ok) {
|
|
181
|
+
const errorText = await response.text();
|
|
182
|
+
this.logger.error(`CSS vector API error: ${response.status} ${errorText}`);
|
|
183
|
+
throw new Error(`CSS vector API error: ${response.status} ${response.statusText}`);
|
|
184
|
+
}
|
|
185
|
+
return response.json();
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* Hash subject + aspect to numeric ID
|
|
189
|
+
* Uses FNV-1a hash for good distribution
|
|
190
|
+
*/
|
|
191
|
+
hashSubjectAspect(subject, aspect) {
|
|
192
|
+
const str = `${subject}|${aspect}`;
|
|
193
|
+
let hash = 2166136261; // FNV offset basis
|
|
194
|
+
for (let i = 0; i < str.length; i++) {
|
|
195
|
+
hash ^= str.charCodeAt(i);
|
|
196
|
+
hash = Math.imul(hash, 16777619); // FNV prime
|
|
197
|
+
}
|
|
198
|
+
return Math.abs(hash);
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
exports.VectorService = VectorService;
|
|
202
|
+
//# sourceMappingURL=VectorService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VectorService.js","sourceRoot":"","sources":["../../../src/api/service/VectorService.ts"],"names":[],"mappings":"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","sourcesContent":["import { getLoggerFor } from 'global-logger-factory';\nimport type { PodChatKitStore } from '../chatkit/pod-store';\nimport type { StoreContext } from '../chatkit/store';\nimport type { AuthContext } from '../auth/AuthContext';\nimport { getWebId, getAccountId } from '../auth/AuthContext';\nimport type { EmbeddingService } from '../../ai/service/EmbeddingService';\nimport type { AiCredential } from '../../ai/service/types';\n\n/**\n * Vector upsert request\n */\nexport interface VectorUpsertRequest {\n /** Embedding model name */\n model: string;\n /** Vectors to upsert */\n vectors: Array<{\n /** Resource URI */\n subject: string;\n /** Semantic aspect (type, chunk, property) */\n aspect: string;\n /** Vector data */\n vector: number[];\n }>;\n}\n\n/**\n * Vector search request\n */\nexport interface VectorSearchRequest {\n /** Embedding model name */\n model: string;\n /** Query text (will be converted to vector) */\n query?: string;\n /** Pre-computed query vector */\n vector?: number[];\n /** Max results */\n limit?: number;\n /** Similarity threshold (0-1) */\n threshold?: number;\n /** Filter conditions */\n filter?: {\n subject?: { $eq?: string; $startsWith?: string; $in?: string[] };\n aspect?: { $eq?: string; $startsWith?: string; $in?: string[] };\n };\n /** Deduplicate by subject */\n distinctSubject?: boolean;\n}\n\n/**\n * Vector search result\n */\nexport interface VectorSearchResult {\n subject: string;\n aspect: string;\n score: number;\n distance: number;\n}\n\n/**\n * Vector delete request\n */\nexport interface VectorDeleteRequest {\n /** Embedding model name */\n model: string;\n /** Filter conditions (at least one field required) */\n filter: {\n subject?: { $eq?: string; $startsWith?: string };\n aspect?: { $eq?: string; $startsWith?: string };\n };\n}\n\n/**\n * Vector status response\n */\nexport interface VectorStatusResponse {\n byModel: Array<{ model: string; count: number }>;\n totalCount: number;\n}\n\nexport interface VectorServiceOptions {\n /** CSS base URL for vector API */\n cssBaseUrl: string;\n /** Pod store for getting AI credentials */\n store: PodChatKitStore;\n /** Embedding service for generating vectors */\n embeddingService: EmbeddingService;\n}\n\n/**\n * VectorService - API Server 的向量服务\n *\n * 负责:\n * 1. 从 Pod 读取 AI 凭据\n * 2. 调用 EmbeddingService 生成向量\n * 3. 调用 CSS 的 /-/vector/* 端点存储/搜索向量\n */\nexport class VectorService {\n private readonly logger = getLoggerFor(this);\n private readonly cssBaseUrl: string;\n private readonly store: PodChatKitStore;\n private readonly embeddingService: EmbeddingService;\n\n public constructor(options: VectorServiceOptions) {\n this.cssBaseUrl = options.cssBaseUrl.replace(/\\/$/, '');\n this.store = options.store;\n this.embeddingService = options.embeddingService;\n }\n\n /**\n * Upsert vectors to CSS vector store\n */\n public async upsert(\n request: VectorUpsertRequest,\n auth: AuthContext,\n accessToken: string,\n ): Promise<{ upserted: number; errors: string[]; took_ms: number }> {\n const startTime = Date.now();\n const userId = getWebId(auth) ?? getAccountId(auth) ?? 'anonymous';\n\n this.logger.info(`Vector upsert request from ${userId}, model: ${request.model}, count: ${request.vectors.length}`);\n\n // Convert subject+aspect to numeric IDs using hash\n const vectorsWithIds = request.vectors.map((v) => ({\n id: this.hashSubjectAspect(v.subject, v.aspect),\n vector: v.vector,\n }));\n\n // Call CSS vector API\n const response = await this.callCssVectorApi('upsert', accessToken, {\n model: request.model,\n vectors: vectorsWithIds,\n });\n\n return {\n upserted: response.upserted ?? 0,\n errors: response.errors ?? [],\n took_ms: Date.now() - startTime,\n };\n }\n\n /**\n * Search vectors in CSS vector store\n */\n public async search(\n request: VectorSearchRequest,\n auth: AuthContext,\n accessToken: string,\n ): Promise<{ results: VectorSearchResult[]; model: string; took_ms: number }> {\n const startTime = Date.now();\n const userId = getWebId(auth) ?? getAccountId(auth) ?? 'anonymous';\n\n this.logger.info(`Vector search request from ${userId}, model: ${request.model}`);\n\n let queryVector = request.vector;\n\n // If query text provided, generate embedding\n if (request.query && !queryVector) {\n const credential = await this.getAiCredential(auth);\n if (!credential) {\n throw new Error('No AI credential found for embedding generation');\n }\n queryVector = await this.embeddingService.embed(request.query, credential, request.model);\n }\n\n if (!queryVector) {\n throw new Error('Either query or vector must be provided');\n }\n\n // Call CSS vector API\n const response = await this.callCssVectorApi('search', accessToken, {\n model: request.model,\n vector: queryVector,\n limit: request.limit ?? 10,\n threshold: request.threshold,\n excludeIds: undefined, // TODO: implement filter to excludeIds conversion\n });\n\n // Map numeric IDs back to subject+aspect (requires metadata storage)\n // For now, return IDs as subjects (external API Server should maintain mapping)\n const results: VectorSearchResult[] = (response.results ?? []).map((r: any) => ({\n subject: String(r.id), // Placeholder - actual mapping should be done by caller\n aspect: '',\n score: r.score,\n distance: r.distance,\n }));\n\n return {\n results,\n model: request.model,\n took_ms: Date.now() - startTime,\n };\n }\n\n /**\n * Delete vectors from CSS vector store\n */\n public async delete(\n request: VectorDeleteRequest,\n auth: AuthContext,\n accessToken: string,\n ): Promise<{ deleted: number; errors: string[]; took_ms: number }> {\n const startTime = Date.now();\n const userId = getWebId(auth) ?? getAccountId(auth) ?? 'anonymous';\n\n this.logger.info(`Vector delete request from ${userId}, model: ${request.model}`);\n\n // Convert filter to IDs (simplified - actual implementation needs metadata lookup)\n const ids: number[] = [];\n\n if (request.filter.subject?.$eq && request.filter.aspect?.$eq) {\n ids.push(this.hashSubjectAspect(request.filter.subject.$eq, request.filter.aspect.$eq));\n }\n\n if (ids.length === 0) {\n return { deleted: 0, errors: ['No matching vectors found'], took_ms: Date.now() - startTime };\n }\n\n // Call CSS vector API\n const response = await this.callCssVectorApi('delete', accessToken, {\n model: request.model,\n ids,\n });\n\n return {\n deleted: response.deleted ?? 0,\n errors: response.errors ?? [],\n took_ms: Date.now() - startTime,\n };\n }\n\n /**\n * Get vector store status\n */\n public async status(accessToken: string): Promise<VectorStatusResponse> {\n const response = await this.callCssVectorApi('status', accessToken, undefined, 'GET');\n return {\n byModel: response.byModel ?? [],\n totalCount: response.totalCount ?? 0,\n };\n }\n\n /**\n * Generate embedding for text\n */\n public async embed(\n text: string,\n model: string,\n auth: AuthContext,\n ): Promise<number[]> {\n const credential = await this.getAiCredential(auth);\n\n if (!credential) {\n throw new Error('No AI credential found for embedding generation');\n }\n\n return this.embeddingService.embed(text, credential, model);\n }\n\n /**\n * Generate embeddings for multiple texts\n */\n public async embedBatch(\n texts: string[],\n model: string,\n auth: AuthContext,\n ): Promise<number[][]> {\n const credential = await this.getAiCredential(auth);\n\n if (!credential) {\n throw new Error('No AI credential found for embedding generation');\n }\n\n return this.embeddingService.embedBatch(texts, credential, model);\n }\n\n // ============================================\n // Private methods\n // ============================================\n\n /**\n * Create a StoreContext from AuthContext for Pod operations\n */\n private createStoreContext(auth: AuthContext): StoreContext {\n return {\n userId: getWebId(auth) ?? getAccountId(auth) ?? 'anonymous',\n auth,\n };\n }\n\n private async getAiCredential(auth: AuthContext): Promise<AiCredential | undefined> {\n const context = this.createStoreContext(auth);\n const config = await this.store.getAiConfig(context);\n if (!config) {\n return undefined;\n }\n return {\n provider: config.providerId,\n apiKey: config.apiKey,\n baseUrl: config.baseUrl,\n proxyUrl: config.proxyUrl,\n };\n }\n\n private async callCssVectorApi(\n action: string,\n accessToken: string,\n body?: unknown,\n method: 'GET' | 'POST' | 'DELETE' = 'POST',\n ): Promise<any> {\n const url = `${this.cssBaseUrl}/-/vector/${action}`;\n\n const options: RequestInit = {\n method,\n headers: {\n 'Authorization': `Bearer ${accessToken}`,\n 'Content-Type': 'application/json',\n },\n };\n\n if (body && method !== 'GET') {\n options.body = JSON.stringify(body);\n }\n\n this.logger.debug(`Calling CSS vector API: ${method} ${url}`);\n\n const response = await fetch(url, options);\n\n if (!response.ok) {\n const errorText = await response.text();\n this.logger.error(`CSS vector API error: ${response.status} ${errorText}`);\n throw new Error(`CSS vector API error: ${response.status} ${response.statusText}`);\n }\n\n return response.json();\n }\n\n /**\n * Hash subject + aspect to numeric ID\n * Uses FNV-1a hash for good distribution\n */\n private hashSubjectAspect(subject: string, aspect: string): number {\n const str = `${subject}|${aspect}`;\n let hash = 2166136261; // FNV offset basis\n for (let i = 0; i < str.length; i++) {\n hash ^= str.charCodeAt(i);\n hash = Math.imul(hash, 16777619); // FNV prime\n }\n return Math.abs(hash);\n }\n}\n"]}
|