@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 @@
|
|
|
1
|
+
{"version":3,"file":"pod-store.js","sourceRoot":"","sources":["../../../src/api/chatkit/pod-store.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Pod-based ChatKit Store\n *\n * 将 ChatKit 数据存储到 Solid Pod。\n *\n * 存储结构:\n * /.data/chat/{chatId}/\n * index.ttl\n * #this # Chat (meeting:LongChat)\n * #{threadId} # Thread (sioc:Thread)\n * {yyyy}/{MM}/{dd}/messages.ttl # Messages (meeting:Message)\n */\n\nimport { Session } from '@inrupt/solid-client-authn-node';\nimport { drizzle, eq, and } from '@undefineds.co/drizzle-solid';\nimport { getLoggerFor } from 'global-logger-factory';\nimport type { ChatKitStore, StoreContext } from './store';\nimport type {\n ThreadMetadata,\n ThreadItem,\n Attachment,\n Page,\n StoreItemType,\n UserMessageItem,\n AssistantMessageItem,\n ThreadStatus,\n} from './types';\nimport { generateId, nowTimestamp } from './types';\nimport {\n Chat,\n Thread,\n Message,\n MessageRole,\n MessageStatus,\n type ChatRecord,\n type ThreadRecord,\n type MessageRecord,\n} from './schema';\nimport type { AuthContext } from '../auth/AuthContext';\nimport { isSolidAuth } from '../auth/AuthContext';\nimport { Provider } from '../../ai/schema/provider';\nimport { Credential } from '../../credential/schema/tables';\nimport { ServiceType, CredentialStatus } from '../../credential/schema/types';\n\nconst schema = {\n chat: Chat,\n thread: Thread,\n message: Message,\n provider: Provider,\n credential: Credential,\n};\n\nexport interface PodChatKitStoreOptions {\n tokenEndpoint: string;\n}\n\n/**\n * Pod-based ChatKit Store implementation\n *\n * 数据模型映射:\n * - ChatKit thread = Thread (sioc:Thread)\n * - ChatKit thread item = Message (meeting:Message)\n * - Chat (meeting:LongChat) 是容器/Agent,通过 metadata.chat_id 暴露\n *\n * 每个 Thread 属于一个 Chat 容器。默认使用 'default' Chat。\n */\nexport class PodChatKitStore implements ChatKitStore<StoreContext> {\n private readonly logger = getLoggerFor(this);\n private readonly tokenEndpoint: string;\n\n /** 默认 Chat 容器 ID */\n private static readonly DEFAULT_CHAT_ID = 'default';\n\n public constructor(options: PodChatKitStoreOptions) {\n this.tokenEndpoint = options.tokenEndpoint;\n }\n\n // =========================================================================\n // Private Helpers\n // =========================================================================\n\n /**\n * 获取认证后的 drizzle 实例 (缓存到 context 中)\n */\n private async getDb(context: StoreContext) {\n // Check if we already have a cached db in context\n if ((context as any)._cachedDb) {\n return (context as any)._cachedDb;\n }\n\n const auth = context.auth as AuthContext | undefined;\n\n if (!auth || !isSolidAuth(auth) || !auth.clientId || !auth.clientSecret) {\n this.logger.warn('No valid client credentials in context, cannot access Pod');\n return null;\n }\n\n const session = new Session();\n try {\n await session.login({\n oidcIssuer: new URL(this.tokenEndpoint).origin,\n clientId: auth.clientId,\n clientSecret: auth.clientSecret,\n });\n\n if (!session.info.isLoggedIn || !session.info.webId) {\n throw new Error('Login failed');\n }\n\n const db = drizzle(\n { fetch: session.fetch, info: { webId: session.info.webId, isLoggedIn: true } } as any,\n { schema },\n );\n\n // 初始化表(创建容器、资源)\n this.logger.info(`Initializing tables for Pod: ${session.info.webId}`);\n try {\n await db.init([Chat, Thread, Message]);\n this.logger.info('Tables initialized successfully');\n } catch (initError) {\n this.logger.error(`Failed to init tables: ${initError}`);\n // 继续执行,可能容器已存在\n }\n\n // Cache both db and session.fetch in context for reuse\n (context as any)._cachedDb = db;\n (context as any)._cachedFetch = session.fetch;\n (context as any)._cachedWebId = session.info.webId;\n\n return db;\n } catch (error) {\n this.logger.error(`Failed to get Pod db: ${error}`);\n return null;\n }\n }\n\n /**\n * 从 context 获取 webId\n */\n private getWebId(context: StoreContext): string | undefined {\n const auth = context.auth as AuthContext | undefined;\n if (auth && isSolidAuth(auth)) {\n return auth.webId;\n }\n return undefined;\n }\n\n /**\n * 将 ThreadStatus 对象转为字符串\n */\n private statusToString(status: ThreadStatus): string {\n return status.type;\n }\n\n /**\n * 将字符串转为 ThreadStatus 对象\n */\n private stringToStatus(status: string | null | undefined): ThreadStatus {\n switch (status) {\n case 'locked':\n return { type: 'locked' };\n case 'closed':\n return { type: 'closed' };\n default:\n return { type: 'active' };\n }\n }\n\n /**\n * 从 ThreadMetadata.metadata 中获取 chat_id,如果没有则返回默认值\n */\n private getChatIdFromMetadata(metadata?: Record<string, unknown>): string {\n if (metadata && typeof metadata.chat_id === 'string') {\n return metadata.chat_id;\n }\n return PodChatKitStore.DEFAULT_CHAT_ID;\n }\n\n /**\n * 确保 Chat 容器存在,如果不存在则创建\n */\n private async ensureChat(chatId: string, context: StoreContext): Promise<void> {\n const db = await this.getDb(context);\n if (!db) {\n throw new Error('Cannot access Pod: invalid credentials');\n }\n\n const webId = this.getWebId(context);\n\n // 检查是否存在\n const existing = await db.query.chat.findFirst({\n where: eq(Chat.id, chatId),\n });\n\n if (!existing) {\n // 创建 Chat 容器\n const now = new Date().toISOString();\n await db.insert(Chat).values({\n id: chatId,\n title: chatId === PodChatKitStore.DEFAULT_CHAT_ID ? 'Default Chat' : chatId,\n author: webId || null,\n status: 'active',\n createdAt: now,\n updatedAt: now,\n });\n this.logger.info(`Created Chat container: ${chatId}`);\n }\n }\n\n /**\n * 将 ThreadRecord 转为 ThreadMetadata\n * 包含 metadata.chat_id 暴露 Chat 容器 ID\n */\n private threadRecordToMetadata(record: ThreadRecord): ThreadMetadata {\n const chatId = this.extractChatId(record.chatId);\n\n return {\n id: record.id,\n title: record.title || undefined,\n status: this.stringToStatus(record.status),\n created_at: record.createdAt ? Math.floor(new Date(record.createdAt).getTime() / 1000) : nowTimestamp(),\n updated_at: record.updatedAt ? Math.floor(new Date(record.updatedAt).getTime() / 1000) : nowTimestamp(),\n metadata: {\n chat_id: chatId,\n },\n };\n }\n\n /**\n * 将 MessageRecord 转为 ThreadItem\n * thread_id 返回 Message 所属的 Thread ID\n */\n private messageRecordToItem(record: MessageRecord, threadId: string): ThreadItem {\n const createdAt = record.createdAt ? Math.floor(new Date(record.createdAt).getTime() / 1000) : nowTimestamp();\n\n if (record.role === MessageRole.USER) {\n return {\n id: record.id,\n thread_id: threadId,\n type: 'user_message',\n content: [{ type: 'input_text', text: record.content || '' }],\n created_at: createdAt,\n } as UserMessageItem;\n } else {\n return {\n id: record.id,\n thread_id: threadId,\n type: 'assistant_message',\n content: [{ type: 'output_text', text: record.content || '' }],\n status: (record.status as 'in_progress' | 'completed' | 'incomplete') || 'completed',\n created_at: createdAt,\n } as AssistantMessageItem;\n }\n }\n\n /**\n * 从 Thread 获取 chatId(提取纯 ID)\n */\n private extractChatId(chatIdOrUri: string | null | undefined): string {\n if (!chatIdOrUri) return PodChatKitStore.DEFAULT_CHAT_ID;\n\n if (chatIdOrUri.includes('#')) {\n // 从 URI 中提取,如 http://.../.data/chat/default/index.ttl#this -> default\n const match = chatIdOrUri.match(/\\.data\\/chat\\/([^/]+)\\/index\\.ttl#this/);\n if (match) {\n return match[1];\n }\n }\n return chatIdOrUri;\n }\n\n /**\n * 获取 Thread 的 chatId\n * 先从缓存获取,如果没有再查询数据库\n */\n private async getThreadChatId(threadId: string, context: StoreContext): Promise<string> {\n // 先检查缓存\n const cached = this.getCachedThreadChatId(context, threadId);\n if (cached) {\n return cached;\n }\n\n const db = await this.getDb(context);\n if (!db) {\n throw new Error('Cannot access Pod: invalid credentials');\n }\n\n const thread = await db.query.thread.findFirst({\n where: eq(Thread.id, threadId),\n });\n\n if (!thread) {\n // 如果找不到 Thread,返回默认 chatId\n this.logger.warn(`Thread not found in DB, using default chatId: ${threadId}`);\n return PodChatKitStore.DEFAULT_CHAT_ID;\n }\n\n const chatId = this.extractChatId(thread.chatId);\n // 缓存结果\n this.cacheThreadChatId(context, threadId, chatId);\n return chatId;\n }\n\n /**\n * 缓存 Thread -> chatId 映射\n */\n private cacheThreadChatId(context: StoreContext, threadId: string, chatId: string): void {\n if (!(context as any)._threadChatIdCache) {\n (context as any)._threadChatIdCache = new Map<string, string>();\n }\n (context as any)._threadChatIdCache.set(threadId, chatId);\n }\n\n /**\n * 从缓存获取 Thread 的 chatId\n */\n private getCachedThreadChatId(context: StoreContext, threadId: string): string | undefined {\n const cache = (context as any)._threadChatIdCache as Map<string, string> | undefined;\n return cache?.get(threadId);\n }\n\n /**\n * 缓存完整的 Thread metadata\n */\n private cacheThreadMetadata(context: StoreContext, thread: ThreadMetadata): void {\n if (!(context as any)._threadMetadataCache) {\n (context as any)._threadMetadataCache = new Map<string, ThreadMetadata>();\n }\n (context as any)._threadMetadataCache.set(thread.id, thread);\n }\n\n /**\n * 从缓存获取 Thread metadata\n */\n private getCachedThreadMetadata(context: StoreContext, threadId: string): ThreadMetadata | undefined {\n const cache = (context as any)._threadMetadataCache as Map<string, ThreadMetadata> | undefined;\n return cache?.get(threadId);\n }\n\n // =========================================================================\n // ID Generation\n // =========================================================================\n\n generateThreadId(_context: StoreContext): string {\n return generateId('thread');\n }\n\n generateItemId(itemType: StoreItemType, _thread: ThreadMetadata, _context: StoreContext): string {\n return generateId(itemType.replace('_', '-'));\n }\n\n // =========================================================================\n // Thread Operations (ChatKit thread = our Thread)\n // =========================================================================\n\n async loadThread(threadId: string, context: StoreContext): Promise<ThreadMetadata> {\n // 先从缓存获取\n const cached = this.getCachedThreadMetadata(context, threadId);\n if (cached) {\n return cached;\n }\n\n const db = await this.getDb(context);\n if (!db) {\n throw new Error('Cannot access Pod: invalid credentials');\n }\n\n const thread = await db.query.thread.findFirst({\n where: eq(Thread.id, threadId),\n });\n\n if (!thread) {\n throw new Error(`Thread not found: ${threadId}`);\n }\n\n const metadata = this.threadRecordToMetadata(thread);\n // 缓存结果\n this.cacheThreadMetadata(context, metadata);\n return metadata;\n }\n\n async saveThread(thread: ThreadMetadata, context: StoreContext): Promise<void> {\n const db = await this.getDb(context);\n if (!db) {\n throw new Error('Cannot access Pod: invalid credentials');\n }\n\n const now = new Date().toISOString();\n\n // 从 metadata 获取 chat_id\n const chatId = this.getChatIdFromMetadata(thread.metadata);\n\n // 确保 Chat 容器存在\n await this.ensureChat(chatId, context);\n\n // 缓存 Thread -> chatId 映射,避免后续查询\n this.cacheThreadChatId(context, thread.id, chatId);\n\n // 检查 Thread 是否存在\n const existing = await db.query.thread.findFirst({\n where: eq(Thread.id, thread.id),\n });\n\n if (existing) {\n // Update\n await db.update(Thread).set({\n title: thread.title || null,\n status: this.statusToString(thread.status),\n updatedAt: now,\n }).where(eq(Thread.id, thread.id));\n } else {\n // Insert\n await db.insert(Thread).values({\n id: thread.id,\n chatId, // 关联到 Chat 容器\n title: thread.title || null,\n status: this.statusToString(thread.status),\n createdAt: new Date(thread.created_at * 1000).toISOString(),\n updatedAt: now,\n });\n }\n\n // 缓存完整的 Thread metadata,确保 metadata.chat_id 包含正确的值\n const threadMetadata: ThreadMetadata = {\n ...thread,\n metadata: { ...thread.metadata, chat_id: chatId },\n };\n this.cacheThreadMetadata(context, threadMetadata);\n }\n\n async loadThreads(\n limit: number,\n after: string | undefined,\n order: string,\n context: StoreContext,\n ): Promise<Page<ThreadMetadata>> {\n const db = await this.getDb(context);\n if (!db) {\n return { data: [], has_more: false };\n }\n\n try {\n const threads = await db.select().from(Thread) as ThreadRecord[];\n\n // 排序\n threads.sort((a: ThreadRecord, b: ThreadRecord) => {\n const aTime = a.createdAt ? new Date(a.createdAt).getTime() : 0;\n const bTime = b.createdAt ? new Date(b.createdAt).getTime() : 0;\n return order === 'desc' ? bTime - aTime : aTime - bTime;\n });\n\n // 分页\n let startIndex = 0;\n if (after) {\n const afterIndex = threads.findIndex((t: ThreadRecord) => t.id === after);\n if (afterIndex !== -1) {\n startIndex = afterIndex + 1;\n }\n }\n\n const slice = threads.slice(startIndex, startIndex + limit);\n const hasMore = startIndex + limit < threads.length;\n\n return {\n data: slice.map((t: ThreadRecord) => this.threadRecordToMetadata(t)),\n has_more: hasMore,\n after: slice.length > 0 ? slice[slice.length - 1].id : undefined,\n };\n } catch (error) {\n this.logger.error(`Failed to load threads: ${error}`);\n return { data: [], has_more: false };\n }\n }\n\n async deleteThread(threadId: string, context: StoreContext): Promise<void> {\n const db = await this.getDb(context);\n if (!db) {\n throw new Error('Cannot access Pod: invalid credentials');\n }\n\n // 尝试从缓存获取 chatId\n let chatId = this.getCachedThreadChatId(context, threadId);\n\n // 如果缓存没有,尝试从数据库查询\n if (!chatId) {\n try {\n const thread = await db.query.thread.findFirst({\n where: eq(Thread.id, threadId),\n });\n if (thread) {\n chatId = this.extractChatId(thread.chatId);\n }\n } catch (err: any) {\n // 忽略查询错误,继续尝试删除\n this.logger.debug(`Ignoring thread query error during delete: ${err.message}`);\n }\n }\n\n // 删除关联到此 Thread 的消息\n try {\n await db.delete(Message).where(eq(Message.threadId, threadId));\n } catch (err: any) {\n if (!err.message?.includes('404') && !err.message?.includes('Could not retrieve') && !err.message?.includes('Parse error')) {\n throw err;\n }\n this.logger.debug(`Ignoring delete message error: ${err.message}`);\n }\n\n // 删除 Thread\n try {\n await db.delete(Thread).where(eq(Thread.id, threadId));\n } catch (err: any) {\n if (!err.message?.includes('404') && !err.message?.includes('Could not retrieve') && !err.message?.includes('Parse error')) {\n throw err;\n }\n this.logger.debug(`Ignoring delete thread error: ${err.message}`);\n }\n\n // 清除缓存\n const metadataCache = (context as any)._threadMetadataCache as Map<string, ThreadMetadata> | undefined;\n const chatIdCache = (context as any)._threadChatIdCache as Map<string, string> | undefined;\n metadataCache?.delete(threadId);\n chatIdCache?.delete(threadId);\n }\n\n // =========================================================================\n // Thread Item Operations (ChatKit items = our Messages)\n // =========================================================================\n\n async loadThreadItems(\n threadId: string,\n after: string | undefined,\n limit: number,\n order: string,\n context: StoreContext,\n ): Promise<Page<ThreadItem>> {\n const db = await this.getDb(context);\n if (!db) {\n return { data: [], has_more: false };\n }\n\n try {\n // 按 threadId 查询 Message\n const messages = await db.select().from(Message).where(\n eq(Message.threadId, threadId),\n ) as MessageRecord[];\n\n // 排序\n messages.sort((a: MessageRecord, b: MessageRecord) => {\n const aTime = a.createdAt ? new Date(a.createdAt).getTime() : 0;\n const bTime = b.createdAt ? new Date(b.createdAt).getTime() : 0;\n return order === 'desc' ? bTime - aTime : aTime - bTime;\n });\n\n // 分页\n let startIndex = 0;\n if (after) {\n const afterIndex = messages.findIndex((m: MessageRecord) => m.id === after);\n if (afterIndex !== -1) {\n startIndex = afterIndex + 1;\n }\n }\n\n const slice = messages.slice(startIndex, startIndex + limit);\n const hasMore = startIndex + limit < messages.length;\n\n return {\n data: slice.map((m: MessageRecord) => this.messageRecordToItem(m, threadId)),\n has_more: hasMore,\n after: slice.length > 0 ? slice[slice.length - 1].id : undefined,\n };\n } catch (error) {\n this.logger.error(`Failed to load thread items: ${error}`);\n return { data: [], has_more: false };\n }\n }\n\n async addThreadItem(threadId: string, item: ThreadItem, context: StoreContext): Promise<void> {\n const db = await this.getDb(context);\n if (!db) {\n throw new Error('Cannot access Pod: invalid credentials');\n }\n\n // 从 Thread 获取 chatId\n const chatId = await this.getThreadChatId(threadId, context);\n\n const webId = this.getWebId(context);\n let content = '';\n let role: string = MessageRole.USER;\n let status: string | null = null;\n\n if (item.type === 'user_message') {\n const userItem = item as UserMessageItem;\n content = userItem.content\n .filter((c) => c.type === 'input_text')\n .map((c) => (c as any).text)\n .join('\\n');\n role = MessageRole.USER;\n } else if (item.type === 'assistant_message') {\n const assistantItem = item as AssistantMessageItem;\n content = assistantItem.content\n .filter((c) => c.type === 'output_text')\n .map((c) => c.text)\n .join('\\n');\n role = MessageRole.ASSISTANT;\n status = assistantItem.status || MessageStatus.COMPLETED;\n } else {\n // 其他类型暂时存储为 JSON\n content = JSON.stringify(item);\n role = MessageRole.SYSTEM;\n }\n\n const messageRecord = {\n id: item.id,\n chatId, // 用于路径构建\n threadId, // 关联到 Thread\n maker: role === MessageRole.USER ? webId : null,\n role,\n content,\n status,\n createdAt: new Date(item.created_at * 1000).toISOString(),\n };\n\n await db.insert(Message).values(messageRecord);\n\n // Track this ID to avoid cache timing issues in saveItem\n this.recentlyCreatedIds.add(messageRecord.id);\n }\n\n // Track recently created message IDs to avoid SELECT cache timing issues\n private recentlyCreatedIds = new Set<string>();\n\n async saveItem(threadId: string, item: ThreadItem, context: StoreContext): Promise<void> {\n const db = await this.getDb(context);\n if (!db) {\n throw new Error('Cannot access Pod: invalid credentials');\n }\n\n // 从 Thread 获取 chatId(用于构建资源路径)\n const chatId = await this.getThreadChatId(threadId, context);\n\n // 准备更新数据\n let content = '';\n let status: string | null = null;\n\n if (item.type === 'user_message') {\n const userItem = item as UserMessageItem;\n content = userItem.content\n .filter((c) => c.type === 'input_text')\n .map((c) => (c as any).text)\n .join('\\n');\n } else if (item.type === 'assistant_message') {\n const assistantItem = item as AssistantMessageItem;\n content = assistantItem.content\n .filter((c) => c.type === 'output_text')\n .map((c) => c.text)\n .join('\\n');\n status = assistantItem.status || MessageStatus.COMPLETED;\n }\n\n // 获取 createdAt 用于计算资源路径(与 drizzle-solid 模板填充保持一致)\n const createdAt = item.created_at ? new Date(item.created_at * 1000).toISOString() : undefined;\n\n // 如果是最近创建的消息,使用直接 PATCH 更新(避免 drizzle-solid UPDATE 的 bug)\n const wasRecentlyCreated = this.recentlyCreatedIds.has(item.id);\n if (wasRecentlyCreated) {\n this.recentlyCreatedIds.delete(item.id);\n await this.directPatchMessage(context, chatId, item.id, content, status, createdAt);\n return;\n }\n\n // 对于非最近创建的消息,使用普通流程\n const existingItems = await db.select().from(Message).where(\n eq(Message.id, item.id),\n ) as MessageRecord[];\n const existing = existingItems.length > 0 ? existingItems[0] : null;\n\n if (existing) {\n // 使用直接 PATCH 更新\n const existingCreatedAt = existing.createdAt\n ? (existing.createdAt instanceof Date ? existing.createdAt.toISOString() : String(existing.createdAt))\n : undefined;\n await this.directPatchMessage(context, chatId, item.id, content, status, existingCreatedAt);\n } else {\n // Create new record\n await this.addThreadItem(threadId, item, context);\n }\n }\n\n /**\n * 直接使用 SPARQL UPDATE PATCH 更新消息内容\n * 避免 drizzle-solid UPDATE 的 bug\n */\n private async directPatchMessage(\n context: StoreContext,\n chatId: string,\n messageId: string,\n content: string,\n status: string | null,\n createdAt?: string\n ): Promise<void> {\n // 使用缓存的 fetch 和 webId(由 getDb 时创建的 session)\n const cachedFetch = (context as any)._cachedFetch as typeof fetch | undefined;\n const cachedWebId = (context as any)._cachedWebId as string | undefined;\n\n if (!cachedFetch || !cachedWebId) {\n throw new Error('No cached session for direct PATCH - call getDb first');\n }\n\n // 构建资源 URL 和 subject URI\n // Template: {chatId}/{yyyy}/{MM}/{dd}/messages.ttl#{id}\n // 使用 createdAt 时间来计算日期,与 drizzle-solid 的模板填充逻辑保持一致\n const dateForPath = createdAt ? new Date(createdAt) : new Date();\n const yyyy = dateForPath.getUTCFullYear();\n const mm = String(dateForPath.getUTCMonth() + 1).padStart(2, '0');\n const dd = String(dateForPath.getUTCDate()).padStart(2, '0');\n\n const podBaseUrl = cachedWebId.replace('/profile/card#me', '');\n const resourceUrl = `${podBaseUrl}/.data/chat/${chatId}/${yyyy}/${mm}/${dd}/messages.ttl`;\n const subjectUri = `${resourceUrl}#${messageId}`;\n\n // 构建 SPARQL UPDATE:删除旧值,插入新值\n const deletePatterns: string[] = [];\n const insertTriples: string[] = [];\n\n // 转义特殊字符\n const escapeForSparql = (value: string): string => {\n const hasQuotes = value.includes('\"');\n const hasNewlines = value.includes('\\n') || value.includes('\\r');\n\n if (hasQuotes || hasNewlines) {\n // 使用三引号\n let escaped = value;\n escaped = escaped.replace(/\"\"\"/g, '\"\\\\\"\\\\\"\"');\n if (escaped.endsWith('\"')) {\n const match = escaped.match(/\"*$/);\n const trailingQuotes = match ? match[0].length : 0;\n if (trailingQuotes > 0) {\n escaped = escaped.slice(0, -trailingQuotes) + '\\\\\"'.repeat(trailingQuotes);\n }\n }\n return `\"\"\"${escaped}\"\"\"`;\n }\n return `\"${value.replace(/\\\\/g, '\\\\\\\\').replace(/\"/g, '\\\\\"')}\"`;\n };\n\n // Content 更新\n deletePatterns.push(`<${subjectUri}> <http://rdfs.org/sioc/ns#content> ?oldContent .`);\n insertTriples.push(`<${subjectUri}> <http://rdfs.org/sioc/ns#content> ${escapeForSparql(content)} .`);\n\n // Status 更新\n if (status) {\n deletePatterns.push(`<${subjectUri}> <https://undefineds.co/ns#status> ?oldStatus .`);\n insertTriples.push(`<${subjectUri}> <https://undefineds.co/ns#status> \"${status}\" .`);\n }\n\n const sparql = `\nDELETE { ${deletePatterns.join(' ')} }\nINSERT { ${insertTriples.join(' ')} }\nWHERE { ${deletePatterns.join(' ')} }\n `.trim();\n\n const response = await cachedFetch(resourceUrl, {\n method: 'PATCH',\n headers: { 'Content-Type': 'application/sparql-update' },\n body: sparql,\n });\n\n if (!response.ok) {\n const text = await response.text().catch(() => '');\n throw new Error(`Direct PATCH failed: ${response.status} ${response.statusText} - ${text}`);\n }\n }\n\n async loadItem(threadId: string, itemId: string, context: StoreContext): Promise<ThreadItem> {\n const db = await this.getDb(context);\n if (!db) {\n throw new Error('Cannot access Pod: invalid credentials');\n }\n\n const messages = await db.select().from(Message).where(\n and(\n eq(Message.id, itemId),\n eq(Message.threadId, threadId),\n ),\n ) as MessageRecord[];\n\n if (messages.length === 0) {\n throw new Error(`Item not found: ${itemId}`);\n }\n\n return this.messageRecordToItem(messages[0], threadId);\n }\n\n async deleteThreadItem(threadId: string, itemId: string, context: StoreContext): Promise<void> {\n const db = await this.getDb(context);\n if (!db) {\n throw new Error('Cannot access Pod: invalid credentials');\n }\n\n await db.delete(Message).where(\n and(\n eq(Message.id, itemId),\n eq(Message.threadId, threadId),\n ),\n );\n }\n\n // =========================================================================\n // Attachment Operations (存 Pod 文件)\n // =========================================================================\n\n async saveAttachment(attachment: Attachment, _context: StoreContext): Promise<void> {\n this.logger.info(`Attachment saved: ${attachment.id} (${attachment.name})`);\n }\n\n async loadAttachment(attachmentId: string, _context: StoreContext): Promise<Attachment> {\n throw new Error(`Attachment not found: ${attachmentId}`);\n }\n\n async deleteAttachment(attachmentId: string, _context: StoreContext): Promise<void> {\n this.logger.info(`Attachment deleted: ${attachmentId}`);\n }\n\n // =========================================================================\n // AI Config Operations (复用 Session 缓存)\n // =========================================================================\n\n /**\n * AI 配置结果\n */\n public static readonly AiConfigResult = class {\n providerId!: string;\n baseUrl!: string;\n proxyUrl?: string;\n apiKey!: string;\n credentialId!: string;\n };\n\n /**\n * 从 Pod 获取 AI 配置(Provider + Credential)\n * 复用已缓存的 Session,避免重复登录\n */\n async getAiConfig(context: StoreContext): Promise<{\n providerId: string;\n baseUrl: string;\n proxyUrl?: string;\n apiKey: string;\n credentialId: string;\n } | undefined> {\n const db = await this.getDb(context);\n if (!db) {\n return undefined;\n }\n\n try {\n // 查询活跃的 AI 凭据\n const credentials = await db.select()\n .from(Credential)\n .where(and(\n eq(Credential.service, ServiceType.AI),\n eq(Credential.status, CredentialStatus.ACTIVE),\n ));\n\n if (credentials.length === 0) {\n return undefined;\n }\n\n // 遍历凭据,找到有效的 Provider\n for (const cred of credentials) {\n if (!cred.provider) continue;\n\n // 从 URI 提取 provider ID\n const providerId = this.extractProviderId(cred.provider);\n\n // 查询 Provider\n const providers = await db.select()\n .from(Provider)\n .where(eq(Provider.id, providerId));\n\n const provider = providers[0];\n if (!provider) continue;\n\n const baseUrl = cred.baseUrl || provider.baseUrl;\n if (!baseUrl) continue;\n\n this.logger.debug(`Using credential ${cred.id} with provider ${provider.id}`);\n\n return {\n providerId: provider.id,\n baseUrl,\n proxyUrl: cred.proxyUrl || provider.proxyUrl || undefined,\n apiKey: cred.apiKey!,\n credentialId: cred.id,\n };\n }\n\n return undefined;\n } catch (error) {\n this.logger.warn(`Failed to read AI config from Pod: ${error}`);\n return undefined;\n }\n }\n\n /**\n * 更新凭据状态(如 429 限流)\n * 复用已缓存的 Session\n */\n async updateCredentialStatus(\n context: StoreContext,\n credentialId: string,\n status: CredentialStatus,\n options?: { rateLimitResetAt?: Date; incrementFailCount?: boolean },\n ): Promise<void> {\n const db = await this.getDb(context);\n if (!db) {\n this.logger.debug('Cannot update credential status: no db available');\n return;\n }\n\n try {\n const updateData: Record<string, any> = { status };\n\n if (options?.rateLimitResetAt) {\n updateData.rateLimitResetAt = options.rateLimitResetAt;\n }\n\n // 如果需要递增 failCount,先查询当前值\n if (options?.incrementFailCount) {\n const credentials = await db.select()\n .from(Credential)\n .where(eq(Credential.id, credentialId));\n\n const currentCred = credentials[0];\n if (currentCred) {\n updateData.failCount = (currentCred.failCount ?? 0) + 1;\n }\n }\n\n await db.update(Credential)\n .set(updateData)\n .where(eq(Credential.id, credentialId));\n\n this.logger.info(`Credential ${credentialId} status updated to ${status}`);\n } catch (error) {\n this.logger.error(`Failed to update credential ${credentialId}: ${error}`);\n }\n }\n\n /**\n * 记录凭据使用成功(重置 failCount,更新 lastUsedAt)\n */\n async recordCredentialSuccess(context: StoreContext, credentialId: string): Promise<void> {\n const db = await this.getDb(context);\n if (!db) {\n return;\n }\n\n try {\n await db.update(Credential)\n .set({\n lastUsedAt: new Date(),\n failCount: 0,\n status: CredentialStatus.ACTIVE,\n rateLimitResetAt: undefined,\n })\n .where(eq(Credential.id, credentialId));\n } catch (error) {\n this.logger.debug(`Failed to record credential success: ${error}`);\n }\n }\n\n /**\n * 从 provider URI 提取 ID\n * e.g., \"http://localhost:3000/test/settings/ai/providers.ttl#google\" -> \"google\"\n */\n private extractProviderId(providerUri: string): string {\n const hash = providerUri.lastIndexOf('#');\n if (hash >= 0) {\n return providerUri.slice(hash + 1);\n }\n return providerUri;\n }\n}\n"]}
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ChatKit Pod Schema
|
|
3
|
+
*
|
|
4
|
+
* 数据模型对齐:
|
|
5
|
+
* - Chat (meeting:LongChat) - 对话容器(微信中间栏)
|
|
6
|
+
* - Thread (sioc:Thread) - ChatKit thread,作为 Chat 的 fragment
|
|
7
|
+
* - Message (meeting:Message) - ChatKit item,放在 Chat 下
|
|
8
|
+
*
|
|
9
|
+
* 存储结构:
|
|
10
|
+
* /.data/chat/{chatId}/
|
|
11
|
+
* index.ttl
|
|
12
|
+
* #this # Chat 元数据
|
|
13
|
+
* #{threadId} # Thread (fragment, ChatKit thread)
|
|
14
|
+
* {yyyy}/{MM}/{dd}/messages.ttl
|
|
15
|
+
* #{msgId} # Message (ChatKit item)
|
|
16
|
+
*
|
|
17
|
+
* 映射关系:
|
|
18
|
+
* - 微信中间栏 Chat 列表 → Chat
|
|
19
|
+
* - ChatKit Thread → Thread (Chat 的 fragment)
|
|
20
|
+
* - ChatKit ThreadItem → Message
|
|
21
|
+
*
|
|
22
|
+
* 注意:Agent 配置(model, systemPrompt)不在 Chat 中,应该在单独的 Agent 表中
|
|
23
|
+
*
|
|
24
|
+
* RDF 示例:
|
|
25
|
+
* ```turtle
|
|
26
|
+
* # /.data/chat/workspace-1/index.ttl
|
|
27
|
+
* @prefix meeting: <http://www.w3.org/ns/pim/meeting#> .
|
|
28
|
+
* @prefix sioc: <http://rdfs.org/sioc/ns#> .
|
|
29
|
+
* @prefix dc: <http://purl.org/dc/terms/> .
|
|
30
|
+
* @prefix foaf: <http://xmlns.com/foaf/0.1/> .
|
|
31
|
+
* @prefix udfs: <https://undefineds.co/ns#> .
|
|
32
|
+
*
|
|
33
|
+
* <#this> a meeting:LongChat ;
|
|
34
|
+
* dc:title "工作区" ;
|
|
35
|
+
* dc:author <https://user.pod/profile/card#me> ;
|
|
36
|
+
* udfs:status "active" .
|
|
37
|
+
*
|
|
38
|
+
* <#thread-1> a sioc:Thread ;
|
|
39
|
+
* sioc:has_parent <#this> ;
|
|
40
|
+
* dc:title "关于代码重构的讨论" ;
|
|
41
|
+
* udfs:status "active" ;
|
|
42
|
+
* dc:created "2024-01-15T10:00:00Z"^^xsd:dateTime .
|
|
43
|
+
*
|
|
44
|
+
* # /.data/chat/workspace-1/2024/01/15/messages.ttl
|
|
45
|
+
* <#msg-1> a meeting:Message ;
|
|
46
|
+
* sioc:has_container <../../../index.ttl#thread-1> ;
|
|
47
|
+
* foaf:maker <https://user.pod/profile/card#me> ;
|
|
48
|
+
* udfs:role "user" ;
|
|
49
|
+
* sioc:content "Hello" ;
|
|
50
|
+
* dc:created "2024-01-15T10:00:00Z"^^xsd:dateTime .
|
|
51
|
+
*
|
|
52
|
+
* <#msg-2> a meeting:Message ;
|
|
53
|
+
* sioc:has_container <../../../index.ttl#thread-1> ;
|
|
54
|
+
* foaf:maker </.data/agents/claude.ttl#this> ;
|
|
55
|
+
* udfs:role "assistant" ;
|
|
56
|
+
* sioc:content "Hi there!" ;
|
|
57
|
+
* udfs:status "completed" ;
|
|
58
|
+
* dc:created "2024-01-15T10:00:01Z"^^xsd:dateTime .
|
|
59
|
+
* ```
|
|
60
|
+
*/
|
|
61
|
+
/**
|
|
62
|
+
* Chat - 对话容器
|
|
63
|
+
*
|
|
64
|
+
* 对应微信中间栏的 Chat 列表,可以是群聊或私聊
|
|
65
|
+
*
|
|
66
|
+
* 注意:Agent 配置(model, systemPrompt)不在这里,应该在单独的 Agent 表中
|
|
67
|
+
*
|
|
68
|
+
* 存储位置: /.data/chat/{chatId}/index.ttl#this
|
|
69
|
+
*/
|
|
70
|
+
export declare const Chat: import("@undefineds.co/drizzle-solid/dist/core/schema").PodTableWithColumns<import("@undefineds.co/drizzle-solid/dist/core/schema").ResolvedColumns<{
|
|
71
|
+
id: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"string", null, true, false>;
|
|
72
|
+
title: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"string", null, false, false>;
|
|
73
|
+
author: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"uri", null, false, false>;
|
|
74
|
+
participants: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"array", "uri", false, false>;
|
|
75
|
+
status: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"string", null, false, false>;
|
|
76
|
+
createdAt: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"datetime", null, false, false>;
|
|
77
|
+
updatedAt: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"datetime", null, false, false>;
|
|
78
|
+
}>>;
|
|
79
|
+
/**
|
|
80
|
+
* Thread - ChatKit 的 thread(对话线程)
|
|
81
|
+
*
|
|
82
|
+
* 作为 Chat 的 fragment,与 Chat 元数据存储在同一文件。
|
|
83
|
+
* 对应 ChatKit 的 Thread 概念,是一次完整的对话。
|
|
84
|
+
*
|
|
85
|
+
* 存储位置: /.data/chat/{chatId}/index.ttl#{id}
|
|
86
|
+
*/
|
|
87
|
+
export declare const Thread: import("@undefineds.co/drizzle-solid/dist/core/schema").PodTableWithColumns<import("@undefineds.co/drizzle-solid/dist/core/schema").ResolvedColumns<{
|
|
88
|
+
id: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"string", null, true, false>;
|
|
89
|
+
chatId: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"uri", null, false, false>;
|
|
90
|
+
title: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"string", null, false, false>;
|
|
91
|
+
status: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"string", null, false, false>;
|
|
92
|
+
createdAt: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"datetime", null, false, false>;
|
|
93
|
+
updatedAt: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"datetime", null, false, false>;
|
|
94
|
+
}>>;
|
|
95
|
+
/**
|
|
96
|
+
* Message - ChatKit 的 ThreadItem(单条消息)
|
|
97
|
+
*
|
|
98
|
+
* 放在 Chat 下,通过 threadId 关联到 Thread。
|
|
99
|
+
* 对应 ChatKit 的 ThreadItem 概念。
|
|
100
|
+
*
|
|
101
|
+
* 存储位置: /.data/chat/{chatId}/{yyyy}/{MM}/{dd}/messages.ttl#{id}
|
|
102
|
+
*/
|
|
103
|
+
export declare const Message: import("@undefineds.co/drizzle-solid/dist/core/schema").PodTableWithColumns<import("@undefineds.co/drizzle-solid/dist/core/schema").ResolvedColumns<{
|
|
104
|
+
id: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"string", null, true, false>;
|
|
105
|
+
chatId: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"string", null, false, false>;
|
|
106
|
+
threadId: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"string", null, false, false>;
|
|
107
|
+
maker: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"uri", null, false, false>;
|
|
108
|
+
role: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"string", null, false, false>;
|
|
109
|
+
content: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"string", null, false, false>;
|
|
110
|
+
status: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"string", null, false, false>;
|
|
111
|
+
createdAt: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"datetime", null, false, false>;
|
|
112
|
+
}>>;
|
|
113
|
+
export type ChatRecord = typeof Chat.$inferSelect;
|
|
114
|
+
export type ThreadRecord = typeof Thread.$inferSelect;
|
|
115
|
+
export type MessageRecord = typeof Message.$inferSelect;
|
|
116
|
+
export declare const ChatStatus: {
|
|
117
|
+
readonly ACTIVE: "active";
|
|
118
|
+
readonly ARCHIVED: "archived";
|
|
119
|
+
readonly DELETED: "deleted";
|
|
120
|
+
};
|
|
121
|
+
export type ChatStatusType = (typeof ChatStatus)[keyof typeof ChatStatus];
|
|
122
|
+
export declare const ThreadStatus: {
|
|
123
|
+
readonly ACTIVE: "active";
|
|
124
|
+
readonly LOCKED: "locked";
|
|
125
|
+
readonly CLOSED: "closed";
|
|
126
|
+
};
|
|
127
|
+
export type ThreadStatusType = (typeof ThreadStatus)[keyof typeof ThreadStatus];
|
|
128
|
+
export declare const MessageRole: {
|
|
129
|
+
readonly USER: "user";
|
|
130
|
+
readonly ASSISTANT: "assistant";
|
|
131
|
+
readonly SYSTEM: "system";
|
|
132
|
+
};
|
|
133
|
+
export type MessageRoleType = (typeof MessageRole)[keyof typeof MessageRole];
|
|
134
|
+
export declare const MessageStatus: {
|
|
135
|
+
readonly IN_PROGRESS: "in_progress";
|
|
136
|
+
readonly COMPLETED: "completed";
|
|
137
|
+
readonly INCOMPLETE: "incomplete";
|
|
138
|
+
};
|
|
139
|
+
export type MessageStatusType = (typeof MessageStatus)[keyof typeof MessageStatus];
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* ChatKit Pod Schema
|
|
4
|
+
*
|
|
5
|
+
* 数据模型对齐:
|
|
6
|
+
* - Chat (meeting:LongChat) - 对话容器(微信中间栏)
|
|
7
|
+
* - Thread (sioc:Thread) - ChatKit thread,作为 Chat 的 fragment
|
|
8
|
+
* - Message (meeting:Message) - ChatKit item,放在 Chat 下
|
|
9
|
+
*
|
|
10
|
+
* 存储结构:
|
|
11
|
+
* /.data/chat/{chatId}/
|
|
12
|
+
* index.ttl
|
|
13
|
+
* #this # Chat 元数据
|
|
14
|
+
* #{threadId} # Thread (fragment, ChatKit thread)
|
|
15
|
+
* {yyyy}/{MM}/{dd}/messages.ttl
|
|
16
|
+
* #{msgId} # Message (ChatKit item)
|
|
17
|
+
*
|
|
18
|
+
* 映射关系:
|
|
19
|
+
* - 微信中间栏 Chat 列表 → Chat
|
|
20
|
+
* - ChatKit Thread → Thread (Chat 的 fragment)
|
|
21
|
+
* - ChatKit ThreadItem → Message
|
|
22
|
+
*
|
|
23
|
+
* 注意:Agent 配置(model, systemPrompt)不在 Chat 中,应该在单独的 Agent 表中
|
|
24
|
+
*
|
|
25
|
+
* RDF 示例:
|
|
26
|
+
* ```turtle
|
|
27
|
+
* # /.data/chat/workspace-1/index.ttl
|
|
28
|
+
* @prefix meeting: <http://www.w3.org/ns/pim/meeting#> .
|
|
29
|
+
* @prefix sioc: <http://rdfs.org/sioc/ns#> .
|
|
30
|
+
* @prefix dc: <http://purl.org/dc/terms/> .
|
|
31
|
+
* @prefix foaf: <http://xmlns.com/foaf/0.1/> .
|
|
32
|
+
* @prefix udfs: <https://undefineds.co/ns#> .
|
|
33
|
+
*
|
|
34
|
+
* <#this> a meeting:LongChat ;
|
|
35
|
+
* dc:title "工作区" ;
|
|
36
|
+
* dc:author <https://user.pod/profile/card#me> ;
|
|
37
|
+
* udfs:status "active" .
|
|
38
|
+
*
|
|
39
|
+
* <#thread-1> a sioc:Thread ;
|
|
40
|
+
* sioc:has_parent <#this> ;
|
|
41
|
+
* dc:title "关于代码重构的讨论" ;
|
|
42
|
+
* udfs:status "active" ;
|
|
43
|
+
* dc:created "2024-01-15T10:00:00Z"^^xsd:dateTime .
|
|
44
|
+
*
|
|
45
|
+
* # /.data/chat/workspace-1/2024/01/15/messages.ttl
|
|
46
|
+
* <#msg-1> a meeting:Message ;
|
|
47
|
+
* sioc:has_container <../../../index.ttl#thread-1> ;
|
|
48
|
+
* foaf:maker <https://user.pod/profile/card#me> ;
|
|
49
|
+
* udfs:role "user" ;
|
|
50
|
+
* sioc:content "Hello" ;
|
|
51
|
+
* dc:created "2024-01-15T10:00:00Z"^^xsd:dateTime .
|
|
52
|
+
*
|
|
53
|
+
* <#msg-2> a meeting:Message ;
|
|
54
|
+
* sioc:has_container <../../../index.ttl#thread-1> ;
|
|
55
|
+
* foaf:maker </.data/agents/claude.ttl#this> ;
|
|
56
|
+
* udfs:role "assistant" ;
|
|
57
|
+
* sioc:content "Hi there!" ;
|
|
58
|
+
* udfs:status "completed" ;
|
|
59
|
+
* dc:created "2024-01-15T10:00:01Z"^^xsd:dateTime .
|
|
60
|
+
* ```
|
|
61
|
+
*/
|
|
62
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
63
|
+
exports.MessageStatus = exports.MessageRole = exports.ThreadStatus = exports.ChatStatus = exports.Message = exports.Thread = exports.Chat = void 0;
|
|
64
|
+
const drizzle_solid_1 = require("@undefineds.co/drizzle-solid");
|
|
65
|
+
const vocab_1 = require("../../vocab");
|
|
66
|
+
const vocab_2 = require("../../vocab");
|
|
67
|
+
// ============================================================================
|
|
68
|
+
// Chat Schema (meeting:LongChat) - 对话容器
|
|
69
|
+
// ============================================================================
|
|
70
|
+
/**
|
|
71
|
+
* Chat - 对话容器
|
|
72
|
+
*
|
|
73
|
+
* 对应微信中间栏的 Chat 列表,可以是群聊或私聊
|
|
74
|
+
*
|
|
75
|
+
* 注意:Agent 配置(model, systemPrompt)不在这里,应该在单独的 Agent 表中
|
|
76
|
+
*
|
|
77
|
+
* 存储位置: /.data/chat/{chatId}/index.ttl#this
|
|
78
|
+
*/
|
|
79
|
+
exports.Chat = (0, drizzle_solid_1.podTable)('Chat', {
|
|
80
|
+
id: (0, drizzle_solid_1.string)('id').primaryKey(),
|
|
81
|
+
title: (0, drizzle_solid_1.string)('title'),
|
|
82
|
+
author: (0, drizzle_solid_1.uri)('author'),
|
|
83
|
+
participants: (0, drizzle_solid_1.uri)('participants').array(),
|
|
84
|
+
status: (0, drizzle_solid_1.string)('status'),
|
|
85
|
+
createdAt: (0, drizzle_solid_1.datetime)('createdAt'),
|
|
86
|
+
updatedAt: (0, drizzle_solid_1.datetime)('updatedAt'),
|
|
87
|
+
}, {
|
|
88
|
+
base: '/.data/chat/',
|
|
89
|
+
type: vocab_1.Meeting.LongChat,
|
|
90
|
+
namespace: vocab_2.UDFS_NAMESPACE,
|
|
91
|
+
subjectTemplate: '{id}/index.ttl#this',
|
|
92
|
+
sparqlEndpoint: '/.data/chat/-/sparql',
|
|
93
|
+
});
|
|
94
|
+
// ============================================================================
|
|
95
|
+
// Thread Schema (sioc:Thread) - ChatKit thread
|
|
96
|
+
// ============================================================================
|
|
97
|
+
/**
|
|
98
|
+
* Thread - ChatKit 的 thread(对话线程)
|
|
99
|
+
*
|
|
100
|
+
* 作为 Chat 的 fragment,与 Chat 元数据存储在同一文件。
|
|
101
|
+
* 对应 ChatKit 的 Thread 概念,是一次完整的对话。
|
|
102
|
+
*
|
|
103
|
+
* 存储位置: /.data/chat/{chatId}/index.ttl#{id}
|
|
104
|
+
*/
|
|
105
|
+
exports.Thread = (0, drizzle_solid_1.podTable)('Thread', {
|
|
106
|
+
id: (0, drizzle_solid_1.string)('id').primaryKey(),
|
|
107
|
+
chatId: (0, drizzle_solid_1.uri)('chatId').predicate(vocab_1.SIOC.has_parent).reference(exports.Chat),
|
|
108
|
+
title: (0, drizzle_solid_1.string)('title'),
|
|
109
|
+
status: (0, drizzle_solid_1.string)('status'),
|
|
110
|
+
createdAt: (0, drizzle_solid_1.datetime)('createdAt'),
|
|
111
|
+
updatedAt: (0, drizzle_solid_1.datetime)('updatedAt'),
|
|
112
|
+
}, {
|
|
113
|
+
base: '/.data/chat/',
|
|
114
|
+
type: vocab_1.SIOC.Thread,
|
|
115
|
+
namespace: vocab_2.UDFS_NAMESPACE,
|
|
116
|
+
subjectTemplate: '{chatId}/index.ttl#{id}',
|
|
117
|
+
sparqlEndpoint: '/.data/chat/-/sparql',
|
|
118
|
+
});
|
|
119
|
+
// ============================================================================
|
|
120
|
+
// Message Schema (meeting:Message) - ChatKit item
|
|
121
|
+
// ============================================================================
|
|
122
|
+
/**
|
|
123
|
+
* Message - ChatKit 的 ThreadItem(单条消息)
|
|
124
|
+
*
|
|
125
|
+
* 放在 Chat 下,通过 threadId 关联到 Thread。
|
|
126
|
+
* 对应 ChatKit 的 ThreadItem 概念。
|
|
127
|
+
*
|
|
128
|
+
* 存储位置: /.data/chat/{chatId}/{yyyy}/{MM}/{dd}/messages.ttl#{id}
|
|
129
|
+
*/
|
|
130
|
+
exports.Message = (0, drizzle_solid_1.podTable)('Message', {
|
|
131
|
+
id: (0, drizzle_solid_1.string)('id').primaryKey(),
|
|
132
|
+
// chatId 用于路径构建
|
|
133
|
+
chatId: (0, drizzle_solid_1.string)('chatId'),
|
|
134
|
+
// threadId 关联到 Thread (ChatKit thread) - 使用简单字符串便于查询
|
|
135
|
+
threadId: (0, drizzle_solid_1.string)('threadId'),
|
|
136
|
+
maker: (0, drizzle_solid_1.uri)('maker').predicate(vocab_1.FOAF.maker),
|
|
137
|
+
role: (0, drizzle_solid_1.string)('role'),
|
|
138
|
+
content: (0, drizzle_solid_1.string)('content').predicate(vocab_1.SIOC.content),
|
|
139
|
+
status: (0, drizzle_solid_1.string)('status'),
|
|
140
|
+
createdAt: (0, drizzle_solid_1.datetime)('createdAt'),
|
|
141
|
+
}, {
|
|
142
|
+
base: '/.data/chat/',
|
|
143
|
+
type: vocab_1.Meeting.Message,
|
|
144
|
+
namespace: vocab_2.UDFS_NAMESPACE,
|
|
145
|
+
subjectTemplate: '{chatId}/{yyyy}/{MM}/{dd}/messages.ttl#{id}',
|
|
146
|
+
sparqlEndpoint: '/.data/chat/-/sparql',
|
|
147
|
+
});
|
|
148
|
+
exports.ChatStatus = {
|
|
149
|
+
ACTIVE: 'active',
|
|
150
|
+
ARCHIVED: 'archived',
|
|
151
|
+
DELETED: 'deleted',
|
|
152
|
+
};
|
|
153
|
+
exports.ThreadStatus = {
|
|
154
|
+
ACTIVE: 'active',
|
|
155
|
+
LOCKED: 'locked',
|
|
156
|
+
CLOSED: 'closed',
|
|
157
|
+
};
|
|
158
|
+
exports.MessageRole = {
|
|
159
|
+
USER: 'user',
|
|
160
|
+
ASSISTANT: 'assistant',
|
|
161
|
+
SYSTEM: 'system',
|
|
162
|
+
};
|
|
163
|
+
exports.MessageStatus = {
|
|
164
|
+
IN_PROGRESS: 'in_progress',
|
|
165
|
+
COMPLETED: 'completed',
|
|
166
|
+
INCOMPLETE: 'incomplete',
|
|
167
|
+
};
|
|
168
|
+
//# sourceMappingURL=schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../src/api/chatkit/schema.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * ChatKit Pod Schema\n *\n * 数据模型对齐:\n * - Chat (meeting:LongChat) - 对话容器(微信中间栏)\n * - Thread (sioc:Thread) - ChatKit thread,作为 Chat 的 fragment\n * - Message (meeting:Message) - ChatKit item,放在 Chat 下\n *\n * 存储结构:\n * /.data/chat/{chatId}/\n * index.ttl\n * #this # Chat 元数据\n * #{threadId} # Thread (fragment, ChatKit thread)\n * {yyyy}/{MM}/{dd}/messages.ttl\n * #{msgId} # Message (ChatKit item)\n *\n * 映射关系:\n * - 微信中间栏 Chat 列表 → Chat\n * - ChatKit Thread → Thread (Chat 的 fragment)\n * - ChatKit ThreadItem → Message\n *\n * 注意:Agent 配置(model, systemPrompt)不在 Chat 中,应该在单独的 Agent 表中\n *\n * RDF 示例:\n * ```turtle\n * # /.data/chat/workspace-1/index.ttl\n * @prefix meeting: <http://www.w3.org/ns/pim/meeting#> .\n * @prefix sioc: <http://rdfs.org/sioc/ns#> .\n * @prefix dc: <http://purl.org/dc/terms/> .\n * @prefix foaf: <http://xmlns.com/foaf/0.1/> .\n * @prefix udfs: <https://undefineds.co/ns#> .\n *\n * <#this> a meeting:LongChat ;\n * dc:title \"工作区\" ;\n * dc:author <https://user.pod/profile/card#me> ;\n * udfs:status \"active\" .\n *\n * <#thread-1> a sioc:Thread ;\n * sioc:has_parent <#this> ;\n * dc:title \"关于代码重构的讨论\" ;\n * udfs:status \"active\" ;\n * dc:created \"2024-01-15T10:00:00Z\"^^xsd:dateTime .\n *\n * # /.data/chat/workspace-1/2024/01/15/messages.ttl\n * <#msg-1> a meeting:Message ;\n * sioc:has_container <../../../index.ttl#thread-1> ;\n * foaf:maker <https://user.pod/profile/card#me> ;\n * udfs:role \"user\" ;\n * sioc:content \"Hello\" ;\n * dc:created \"2024-01-15T10:00:00Z\"^^xsd:dateTime .\n *\n * <#msg-2> a meeting:Message ;\n * sioc:has_container <../../../index.ttl#thread-1> ;\n * foaf:maker </.data/agents/claude.ttl#this> ;\n * udfs:role \"assistant\" ;\n * sioc:content \"Hi there!\" ;\n * udfs:status \"completed\" ;\n * dc:created \"2024-01-15T10:00:01Z\"^^xsd:dateTime .\n * ```\n */\n\nimport { podTable, string, datetime, uri } from '@undefineds.co/drizzle-solid';\nimport { Meeting, SIOC, FOAF } from '../../vocab';\nimport { UDFS_NAMESPACE } from '../../vocab';\n\n// ============================================================================\n// Chat Schema (meeting:LongChat) - 对话容器\n// ============================================================================\n\n/**\n * Chat - 对话容器\n *\n * 对应微信中间栏的 Chat 列表,可以是群聊或私聊\n *\n * 注意:Agent 配置(model, systemPrompt)不在这里,应该在单独的 Agent 表中\n *\n * 存储位置: /.data/chat/{chatId}/index.ttl#this\n */\nexport const Chat = podTable(\n 'Chat',\n {\n id: string('id').primaryKey(),\n title: string('title'),\n author: uri('author'),\n participants: uri('participants').array(),\n status: string('status'),\n createdAt: datetime('createdAt'),\n updatedAt: datetime('updatedAt'),\n },\n {\n base: '/.data/chat/',\n type: Meeting.LongChat,\n namespace: UDFS_NAMESPACE,\n subjectTemplate: '{id}/index.ttl#this',\n sparqlEndpoint: '/.data/chat/-/sparql',\n },\n);\n\n// ============================================================================\n// Thread Schema (sioc:Thread) - ChatKit thread\n// ============================================================================\n\n/**\n * Thread - ChatKit 的 thread(对话线程)\n *\n * 作为 Chat 的 fragment,与 Chat 元数据存储在同一文件。\n * 对应 ChatKit 的 Thread 概念,是一次完整的对话。\n *\n * 存储位置: /.data/chat/{chatId}/index.ttl#{id}\n */\nexport const Thread = podTable(\n 'Thread',\n {\n id: string('id').primaryKey(),\n chatId: uri('chatId').predicate(SIOC.has_parent).reference(Chat),\n title: string('title'),\n status: string('status'),\n createdAt: datetime('createdAt'),\n updatedAt: datetime('updatedAt'),\n },\n {\n base: '/.data/chat/',\n type: SIOC.Thread,\n namespace: UDFS_NAMESPACE,\n subjectTemplate: '{chatId}/index.ttl#{id}',\n sparqlEndpoint: '/.data/chat/-/sparql',\n },\n);\n\n// ============================================================================\n// Message Schema (meeting:Message) - ChatKit item\n// ============================================================================\n\n/**\n * Message - ChatKit 的 ThreadItem(单条消息)\n *\n * 放在 Chat 下,通过 threadId 关联到 Thread。\n * 对应 ChatKit 的 ThreadItem 概念。\n *\n * 存储位置: /.data/chat/{chatId}/{yyyy}/{MM}/{dd}/messages.ttl#{id}\n */\nexport const Message = podTable(\n 'Message',\n {\n id: string('id').primaryKey(),\n // chatId 用于路径构建\n chatId: string('chatId'),\n // threadId 关联到 Thread (ChatKit thread) - 使用简单字符串便于查询\n threadId: string('threadId'),\n maker: uri('maker').predicate(FOAF.maker),\n role: string('role'),\n content: string('content').predicate(SIOC.content),\n status: string('status'),\n createdAt: datetime('createdAt'),\n },\n {\n base: '/.data/chat/',\n type: Meeting.Message,\n namespace: UDFS_NAMESPACE,\n subjectTemplate: '{chatId}/{yyyy}/{MM}/{dd}/messages.ttl#{id}',\n sparqlEndpoint: '/.data/chat/-/sparql',\n },\n);\n\n// ============================================================================\n// Types\n// ============================================================================\n\nexport type ChatRecord = typeof Chat.$inferSelect;\nexport type ThreadRecord = typeof Thread.$inferSelect;\nexport type MessageRecord = typeof Message.$inferSelect;\n\nexport const ChatStatus = {\n ACTIVE: 'active',\n ARCHIVED: 'archived',\n DELETED: 'deleted',\n} as const;\n\nexport type ChatStatusType = (typeof ChatStatus)[keyof typeof ChatStatus];\n\nexport const ThreadStatus = {\n ACTIVE: 'active',\n LOCKED: 'locked',\n CLOSED: 'closed',\n} as const;\n\nexport type ThreadStatusType = (typeof ThreadStatus)[keyof typeof ThreadStatus];\n\nexport const MessageRole = {\n USER: 'user',\n ASSISTANT: 'assistant',\n SYSTEM: 'system',\n} as const;\n\nexport type MessageRoleType = (typeof MessageRole)[keyof typeof MessageRole];\n\nexport const MessageStatus = {\n IN_PROGRESS: 'in_progress',\n COMPLETED: 'completed',\n INCOMPLETE: 'incomplete',\n} as const;\n\nexport type MessageStatusType = (typeof MessageStatus)[keyof typeof MessageStatus];\n"]}
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ChatKit Service
|
|
3
|
+
*
|
|
4
|
+
* Core service for handling ChatKit protocol requests.
|
|
5
|
+
* Based on https://github.com/openai/chatkit-python/blob/main/chatkit/server.py
|
|
6
|
+
*/
|
|
7
|
+
import type { ChatKitStore, StoreContext } from './store';
|
|
8
|
+
/**
|
|
9
|
+
* AI Provider interface for generating responses
|
|
10
|
+
*/
|
|
11
|
+
export interface AiProvider {
|
|
12
|
+
/**
|
|
13
|
+
* Stream a response for the given messages
|
|
14
|
+
* Returns an async iterator of text chunks
|
|
15
|
+
*/
|
|
16
|
+
streamResponse(messages: Array<{
|
|
17
|
+
role: 'system' | 'user' | 'assistant';
|
|
18
|
+
content: string;
|
|
19
|
+
}>, options?: {
|
|
20
|
+
model?: string;
|
|
21
|
+
temperature?: number;
|
|
22
|
+
maxTokens?: number;
|
|
23
|
+
context?: unknown;
|
|
24
|
+
}): AsyncIterable<string>;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* ChatKit Service Options
|
|
28
|
+
*/
|
|
29
|
+
export interface ChatKitServiceOptions<TContext = StoreContext> {
|
|
30
|
+
store: ChatKitStore<TContext>;
|
|
31
|
+
aiProvider: AiProvider;
|
|
32
|
+
systemPrompt?: string;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Streaming result wrapper
|
|
36
|
+
*/
|
|
37
|
+
export interface StreamingResult {
|
|
38
|
+
type: 'streaming';
|
|
39
|
+
stream(): AsyncIterable<Uint8Array>;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Non-streaming result wrapper
|
|
43
|
+
*/
|
|
44
|
+
export interface NonStreamingResult {
|
|
45
|
+
type: 'non_streaming';
|
|
46
|
+
json: string;
|
|
47
|
+
}
|
|
48
|
+
export type ChatKitResult = StreamingResult | NonStreamingResult;
|
|
49
|
+
/**
|
|
50
|
+
* ChatKit Service
|
|
51
|
+
*/
|
|
52
|
+
export declare class ChatKitService<TContext = StoreContext> {
|
|
53
|
+
private readonly logger;
|
|
54
|
+
private readonly store;
|
|
55
|
+
private readonly aiProvider;
|
|
56
|
+
private readonly systemPrompt;
|
|
57
|
+
constructor(options: ChatKitServiceOptions<TContext>);
|
|
58
|
+
/**
|
|
59
|
+
* Process a ChatKit request
|
|
60
|
+
*/
|
|
61
|
+
process(requestBody: string | Buffer, context: TContext): Promise<ChatKitResult>;
|
|
62
|
+
/**
|
|
63
|
+
* Convert streaming events to SSE bytes
|
|
64
|
+
*/
|
|
65
|
+
private processStreamingAsBytes;
|
|
66
|
+
/**
|
|
67
|
+
* Process streaming requests
|
|
68
|
+
*/
|
|
69
|
+
private processStreaming;
|
|
70
|
+
/**
|
|
71
|
+
* Process non-streaming requests
|
|
72
|
+
*/
|
|
73
|
+
private processNonStreaming;
|
|
74
|
+
/**
|
|
75
|
+
* Handle threads.create - Create a new thread and optionally respond to initial message
|
|
76
|
+
*/
|
|
77
|
+
private handleThreadsCreate;
|
|
78
|
+
/**
|
|
79
|
+
* Handle threads.add_user_message - Add a user message and respond
|
|
80
|
+
*/
|
|
81
|
+
private handleThreadsAddUserMessage;
|
|
82
|
+
/**
|
|
83
|
+
* Handle threads.add_client_tool_output - Handle tool output (not fully implemented)
|
|
84
|
+
*/
|
|
85
|
+
private handleThreadsAddClientToolOutput;
|
|
86
|
+
/**
|
|
87
|
+
* Handle threads.retry_after_item - Retry generation after a specific item
|
|
88
|
+
*/
|
|
89
|
+
private handleThreadsRetryAfterItem;
|
|
90
|
+
/**
|
|
91
|
+
* Handle threads.custom_action - Handle custom widget actions (not fully implemented)
|
|
92
|
+
*/
|
|
93
|
+
private handleThreadsCustomAction;
|
|
94
|
+
/**
|
|
95
|
+
* Handle threads.get_by_id
|
|
96
|
+
*/
|
|
97
|
+
private handleThreadsGetById;
|
|
98
|
+
/**
|
|
99
|
+
* Handle threads.list
|
|
100
|
+
*/
|
|
101
|
+
private handleThreadsList;
|
|
102
|
+
/**
|
|
103
|
+
* Handle items.list
|
|
104
|
+
*/
|
|
105
|
+
private handleItemsList;
|
|
106
|
+
/**
|
|
107
|
+
* Handle items.feedback (acknowledge only for now)
|
|
108
|
+
*/
|
|
109
|
+
private handleItemsFeedback;
|
|
110
|
+
/**
|
|
111
|
+
* Handle attachments.create
|
|
112
|
+
*/
|
|
113
|
+
private handleAttachmentsCreate;
|
|
114
|
+
/**
|
|
115
|
+
* Handle attachments.delete
|
|
116
|
+
*/
|
|
117
|
+
private handleAttachmentsDelete;
|
|
118
|
+
/**
|
|
119
|
+
* Handle threads.update
|
|
120
|
+
*/
|
|
121
|
+
private handleThreadsUpdate;
|
|
122
|
+
/**
|
|
123
|
+
* Handle threads.delete
|
|
124
|
+
*/
|
|
125
|
+
private handleThreadsDelete;
|
|
126
|
+
/**
|
|
127
|
+
* Generate AI response for a user message
|
|
128
|
+
* This is the main response generation logic
|
|
129
|
+
*/
|
|
130
|
+
private respond;
|
|
131
|
+
/**
|
|
132
|
+
* Build conversation history from thread items
|
|
133
|
+
*/
|
|
134
|
+
private buildConversationHistory;
|
|
135
|
+
/**
|
|
136
|
+
* Create a user message item
|
|
137
|
+
*/
|
|
138
|
+
private createUserMessage;
|
|
139
|
+
/**
|
|
140
|
+
* Generate a title for the thread based on the first exchange
|
|
141
|
+
*/
|
|
142
|
+
private generateThreadTitle;
|
|
143
|
+
}
|