@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.
Files changed (970) hide show
  1. package/LICENSE +22 -0
  2. package/README.md +146 -0
  3. package/components/components.jsonld +72 -0
  4. package/components/context.jsonld +1635 -0
  5. package/config/bun.json +90 -0
  6. package/config/cli.json +260 -0
  7. package/config/cloud.json +469 -0
  8. package/config/extensions.local.initializer.json +23 -0
  9. package/config/local.json +261 -0
  10. package/config/logging/configurable.json +18 -0
  11. package/config/main.json +200 -0
  12. package/config/main.vanilla.json +6 -0
  13. package/config/resolver.json +347 -0
  14. package/config/search.json +66 -0
  15. package/config/seed.dev.json +29 -0
  16. package/config/seeds/admin.example.json +11 -0
  17. package/config/seeds/test.json +11 -0
  18. package/config/terminal.json +22 -0
  19. package/config/vector.json +35 -0
  20. package/config/xpod.base.json +155 -0
  21. package/config/xpod.cluster.json +419 -0
  22. package/config/xpod.json +233 -0
  23. package/dist/agents/AgentExecutorFactory.d.ts +67 -0
  24. package/dist/agents/AgentExecutorFactory.js +193 -0
  25. package/dist/agents/AgentExecutorFactory.js.map +1 -0
  26. package/dist/agents/AgentManager.d.ts +114 -0
  27. package/dist/agents/AgentManager.js +289 -0
  28. package/dist/agents/AgentManager.js.map +1 -0
  29. package/dist/agents/BaseAgentExecutor.d.ts +67 -0
  30. package/dist/agents/BaseAgentExecutor.js +101 -0
  31. package/dist/agents/BaseAgentExecutor.js.map +1 -0
  32. package/dist/agents/ClaudeExecutor.d.ts +63 -0
  33. package/dist/agents/ClaudeExecutor.js +335 -0
  34. package/dist/agents/ClaudeExecutor.js.map +1 -0
  35. package/dist/agents/CodeBuddyExecutor.d.ts +54 -0
  36. package/dist/agents/CodeBuddyExecutor.js +273 -0
  37. package/dist/agents/CodeBuddyExecutor.js.map +1 -0
  38. package/dist/agents/IndexAgent.d.ts +70 -0
  39. package/dist/agents/IndexAgent.js +417 -0
  40. package/dist/agents/IndexAgent.js.map +1 -0
  41. package/dist/agents/index.d.ts +22 -0
  42. package/dist/agents/index.js +48 -0
  43. package/dist/agents/index.js.map +1 -0
  44. package/dist/agents/schema/agent-config.d.ts +58 -0
  45. package/dist/agents/schema/agent-config.js +74 -0
  46. package/dist/agents/schema/agent-config.js.map +1 -0
  47. package/dist/agents/schema/tables.d.ts +46 -0
  48. package/dist/agents/schema/tables.js +64 -0
  49. package/dist/agents/schema/tables.js.map +1 -0
  50. package/dist/agents/types.d.ts +266 -0
  51. package/dist/agents/types.js +9 -0
  52. package/dist/agents/types.js.map +1 -0
  53. package/dist/ai/index.d.ts +5 -0
  54. package/dist/ai/index.js +22 -0
  55. package/dist/ai/index.js.map +1 -0
  56. package/dist/ai/schema/config.d.ts +27 -0
  57. package/dist/ai/schema/config.js +36 -0
  58. package/dist/ai/schema/config.js.map +1 -0
  59. package/dist/ai/schema/index.d.ts +8 -0
  60. package/dist/ai/schema/index.js +27 -0
  61. package/dist/ai/schema/index.js.map +1 -0
  62. package/dist/ai/schema/model.d.ts +40 -0
  63. package/dist/ai/schema/model.js +60 -0
  64. package/dist/ai/schema/model.js.map +1 -0
  65. package/dist/ai/schema/provider.d.ts +21 -0
  66. package/dist/ai/schema/provider.js +30 -0
  67. package/dist/ai/schema/provider.js.map +1 -0
  68. package/dist/ai/schema/types.d.ts +52 -0
  69. package/dist/ai/schema/types.js +62 -0
  70. package/dist/ai/schema/types.js.map +1 -0
  71. package/dist/ai/schema/vector-store.d.ts +53 -0
  72. package/dist/ai/schema/vector-store.js +65 -0
  73. package/dist/ai/schema/vector-store.js.map +1 -0
  74. package/dist/ai/service/CredentialReader.d.ts +7 -0
  75. package/dist/ai/service/CredentialReader.js +10 -0
  76. package/dist/ai/service/CredentialReader.js.map +1 -0
  77. package/dist/ai/service/CredentialReaderImpl.d.ts +6 -0
  78. package/dist/ai/service/CredentialReaderImpl.js +55 -0
  79. package/dist/ai/service/CredentialReaderImpl.js.map +1 -0
  80. package/dist/ai/service/EmbeddingService.d.ts +8 -0
  81. package/dist/ai/service/EmbeddingService.js +10 -0
  82. package/dist/ai/service/EmbeddingService.js.map +1 -0
  83. package/dist/ai/service/EmbeddingServiceImpl.d.ts +11 -0
  84. package/dist/ai/service/EmbeddingServiceImpl.js +73 -0
  85. package/dist/ai/service/EmbeddingServiceImpl.js.map +1 -0
  86. package/dist/ai/service/ProviderRegistry.d.ts +26 -0
  87. package/dist/ai/service/ProviderRegistry.js +10 -0
  88. package/dist/ai/service/ProviderRegistry.js.map +1 -0
  89. package/dist/ai/service/ProviderRegistryImpl.d.ts +14 -0
  90. package/dist/ai/service/ProviderRegistryImpl.js +112 -0
  91. package/dist/ai/service/ProviderRegistryImpl.js.map +1 -0
  92. package/dist/ai/service/index.d.ts +10 -0
  93. package/dist/ai/service/index.js +29 -0
  94. package/dist/ai/service/index.js.map +1 -0
  95. package/dist/ai/service/types.d.ts +12 -0
  96. package/dist/ai/service/types.js +6 -0
  97. package/dist/ai/service/types.js.map +1 -0
  98. package/dist/api/ApiServer.d.ts +77 -0
  99. package/dist/api/ApiServer.js +191 -0
  100. package/dist/api/ApiServer.js.map +1 -0
  101. package/dist/api/auth/AuthContext.d.ts +41 -0
  102. package/dist/api/auth/AuthContext.js +44 -0
  103. package/dist/api/auth/AuthContext.js.map +1 -0
  104. package/dist/api/auth/Authenticator.d.ts +23 -0
  105. package/dist/api/auth/Authenticator.js +3 -0
  106. package/dist/api/auth/Authenticator.js.map +1 -0
  107. package/dist/api/auth/ClientCredentialsAuthenticator.d.ts +56 -0
  108. package/dist/api/auth/ClientCredentialsAuthenticator.js +191 -0
  109. package/dist/api/auth/ClientCredentialsAuthenticator.js.map +1 -0
  110. package/dist/api/auth/MultiAuthenticator.d.ts +15 -0
  111. package/dist/api/auth/MultiAuthenticator.js +36 -0
  112. package/dist/api/auth/MultiAuthenticator.js.map +1 -0
  113. package/dist/api/auth/NodeTokenAuthenticator.d.ts +21 -0
  114. package/dist/api/auth/NodeTokenAuthenticator.js +124 -0
  115. package/dist/api/auth/NodeTokenAuthenticator.js.map +1 -0
  116. package/dist/api/auth/SolidTokenAuthenticator.d.ts +27 -0
  117. package/dist/api/auth/SolidTokenAuthenticator.js +144 -0
  118. package/dist/api/auth/SolidTokenAuthenticator.js.map +1 -0
  119. package/dist/api/auth/index.d.ts +5 -0
  120. package/dist/api/auth/index.js +23 -0
  121. package/dist/api/auth/index.js.map +1 -0
  122. package/dist/api/chatkit/ai-provider.d.ts +44 -0
  123. package/dist/api/chatkit/ai-provider.js +157 -0
  124. package/dist/api/chatkit/ai-provider.js.map +1 -0
  125. package/dist/api/chatkit/index.d.ts +11 -0
  126. package/dist/api/chatkit/index.js +44 -0
  127. package/dist/api/chatkit/index.js.map +1 -0
  128. package/dist/api/chatkit/pod-store.d.ts +154 -0
  129. package/dist/api/chatkit/pod-store.js +794 -0
  130. package/dist/api/chatkit/pod-store.js.map +1 -0
  131. package/dist/api/chatkit/schema.d.ts +139 -0
  132. package/dist/api/chatkit/schema.js +168 -0
  133. package/dist/api/chatkit/schema.js.map +1 -0
  134. package/dist/api/chatkit/service.d.ts +143 -0
  135. package/dist/api/chatkit/service.js +442 -0
  136. package/dist/api/chatkit/service.js.map +1 -0
  137. package/dist/api/chatkit/store.d.ts +63 -0
  138. package/dist/api/chatkit/store.js +178 -0
  139. package/dist/api/chatkit/store.js.map +1 -0
  140. package/dist/api/chatkit/types.d.ts +461 -0
  141. package/dist/api/chatkit/types.js +50 -0
  142. package/dist/api/chatkit/types.js.map +1 -0
  143. package/dist/api/container/cloud.d.ts +12 -0
  144. package/dist/api/container/cloud.js +97 -0
  145. package/dist/api/container/cloud.js.map +1 -0
  146. package/dist/api/container/common.d.ts +11 -0
  147. package/dist/api/container/common.js +82 -0
  148. package/dist/api/container/common.js.map +1 -0
  149. package/dist/api/container/index.d.ts +16 -0
  150. package/dist/api/container/index.js +90 -0
  151. package/dist/api/container/index.js.map +1 -0
  152. package/dist/api/container/local.d.ts +13 -0
  153. package/dist/api/container/local.js +197 -0
  154. package/dist/api/container/local.js.map +1 -0
  155. package/dist/api/container/routes.d.ts +11 -0
  156. package/dist/api/container/routes.js +129 -0
  157. package/dist/api/container/routes.js.map +1 -0
  158. package/dist/api/container/types.d.ts +92 -0
  159. package/dist/api/container/types.js +8 -0
  160. package/dist/api/container/types.js.map +1 -0
  161. package/dist/api/handlers/AdminHandler.d.ts +6 -0
  162. package/dist/api/handlers/AdminHandler.js +330 -0
  163. package/dist/api/handlers/AdminHandler.js.map +1 -0
  164. package/dist/api/handlers/ApiKeyHandler.d.ts +15 -0
  165. package/dist/api/handlers/ApiKeyHandler.js +159 -0
  166. package/dist/api/handlers/ApiKeyHandler.js.map +1 -0
  167. package/dist/api/handlers/ChatHandler.d.ts +60 -0
  168. package/dist/api/handlers/ChatHandler.js +230 -0
  169. package/dist/api/handlers/ChatHandler.js.map +1 -0
  170. package/dist/api/handlers/ChatKitHandler.d.ts +18 -0
  171. package/dist/api/handlers/ChatKitHandler.js +151 -0
  172. package/dist/api/handlers/ChatKitHandler.js.map +1 -0
  173. package/dist/api/handlers/DashboardHandler.d.ts +14 -0
  174. package/dist/api/handlers/DashboardHandler.js +117 -0
  175. package/dist/api/handlers/DashboardHandler.js.map +1 -0
  176. package/dist/api/handlers/DdnsHandler.d.ts +19 -0
  177. package/dist/api/handlers/DdnsHandler.js +306 -0
  178. package/dist/api/handlers/DdnsHandler.js.map +1 -0
  179. package/dist/api/handlers/DevHandler.d.ts +18 -0
  180. package/dist/api/handlers/DevHandler.js +276 -0
  181. package/dist/api/handlers/DevHandler.js.map +1 -0
  182. package/dist/api/handlers/NodeHandler.d.ts +16 -0
  183. package/dist/api/handlers/NodeHandler.js +190 -0
  184. package/dist/api/handlers/NodeHandler.js.map +1 -0
  185. package/dist/api/handlers/PodManagementHandler.d.ts +39 -0
  186. package/dist/api/handlers/PodManagementHandler.js +294 -0
  187. package/dist/api/handlers/PodManagementHandler.js.map +1 -0
  188. package/dist/api/handlers/QuotaHandler.d.ts +21 -0
  189. package/dist/api/handlers/QuotaHandler.js +209 -0
  190. package/dist/api/handlers/QuotaHandler.js.map +1 -0
  191. package/dist/api/handlers/SignalHandler.d.ts +13 -0
  192. package/dist/api/handlers/SignalHandler.js +122 -0
  193. package/dist/api/handlers/SignalHandler.js.map +1 -0
  194. package/dist/api/handlers/SubdomainClientHandler.d.ts +24 -0
  195. package/dist/api/handlers/SubdomainClientHandler.js +169 -0
  196. package/dist/api/handlers/SubdomainClientHandler.js.map +1 -0
  197. package/dist/api/handlers/SubdomainHandler.d.ts +17 -0
  198. package/dist/api/handlers/SubdomainHandler.js +312 -0
  199. package/dist/api/handlers/SubdomainHandler.js.map +1 -0
  200. package/dist/api/handlers/VectorHandler.d.ts +15 -0
  201. package/dist/api/handlers/VectorHandler.js +293 -0
  202. package/dist/api/handlers/VectorHandler.js.map +1 -0
  203. package/dist/api/handlers/VectorStoreHandler.d.ts +20 -0
  204. package/dist/api/handlers/VectorStoreHandler.js +348 -0
  205. package/dist/api/handlers/VectorStoreHandler.js.map +1 -0
  206. package/dist/api/handlers/VectorStoreWebhookHandler.d.ts +74 -0
  207. package/dist/api/handlers/VectorStoreWebhookHandler.js +121 -0
  208. package/dist/api/handlers/VectorStoreWebhookHandler.js.map +1 -0
  209. package/dist/api/handlers/WebIdProfileHandler.d.ts +14 -0
  210. package/dist/api/handlers/WebIdProfileHandler.js +204 -0
  211. package/dist/api/handlers/WebIdProfileHandler.js.map +1 -0
  212. package/dist/api/handlers/index.d.ts +11 -0
  213. package/dist/api/handlers/index.js +28 -0
  214. package/dist/api/handlers/index.js.map +1 -0
  215. package/dist/api/index.d.ts +12 -0
  216. package/dist/api/index.js +29 -0
  217. package/dist/api/index.js.map +1 -0
  218. package/dist/api/main.d.ts +14 -0
  219. package/dist/api/main.js +106 -0
  220. package/dist/api/main.js.map +1 -0
  221. package/dist/api/middleware/AuthMiddleware.d.ts +35 -0
  222. package/dist/api/middleware/AuthMiddleware.js +51 -0
  223. package/dist/api/middleware/AuthMiddleware.js.map +1 -0
  224. package/dist/api/middleware/index.d.ts +1 -0
  225. package/dist/api/middleware/index.js +18 -0
  226. package/dist/api/middleware/index.js.map +1 -0
  227. package/dist/api/models/model-provider.schema.d.ts +12 -0
  228. package/dist/api/models/model-provider.schema.js +21 -0
  229. package/dist/api/models/model-provider.schema.js.map +1 -0
  230. package/dist/api/models/namespaces.d.ts +9 -0
  231. package/dist/api/models/namespaces.js +34 -0
  232. package/dist/api/models/namespaces.js.map +1 -0
  233. package/dist/api/service/InternalPodService.d.ts +19 -0
  234. package/dist/api/service/InternalPodService.js +82 -0
  235. package/dist/api/service/InternalPodService.js.map +1 -0
  236. package/dist/api/service/VectorService.d.ts +156 -0
  237. package/dist/api/service/VectorService.js +202 -0
  238. package/dist/api/service/VectorService.js.map +1 -0
  239. package/dist/api/service/VectorStoreService.d.ts +262 -0
  240. package/dist/api/service/VectorStoreService.js +985 -0
  241. package/dist/api/service/VectorStoreService.js.map +1 -0
  242. package/dist/api/service/VercelChatService.d.ts +28 -0
  243. package/dist/api/service/VercelChatService.js +289 -0
  244. package/dist/api/service/VercelChatService.js.map +1 -0
  245. package/dist/api/store/DrizzleClientCredentialsStore.d.ts +56 -0
  246. package/dist/api/store/DrizzleClientCredentialsStore.js +145 -0
  247. package/dist/api/store/DrizzleClientCredentialsStore.js.map +1 -0
  248. package/dist/api/store/index.d.ts +1 -0
  249. package/dist/api/store/index.js +18 -0
  250. package/dist/api/store/index.js.map +1 -0
  251. package/dist/components/components.jsonld +88 -0
  252. package/dist/components/context.jsonld +1962 -0
  253. package/dist/credential/index.d.ts +1 -0
  254. package/dist/credential/index.js +18 -0
  255. package/dist/credential/index.js.map +1 -0
  256. package/dist/credential/schema/index.d.ts +2 -0
  257. package/dist/credential/schema/index.js +19 -0
  258. package/dist/credential/schema/index.js.map +1 -0
  259. package/dist/credential/schema/tables.d.ts +31 -0
  260. package/dist/credential/schema/tables.js +42 -0
  261. package/dist/credential/schema/tables.js.map +1 -0
  262. package/dist/credential/schema/types.d.ts +20 -0
  263. package/dist/credential/schema/types.js +26 -0
  264. package/dist/credential/schema/types.js.map +1 -0
  265. package/dist/dns/DnsProvider.d.ts +46 -0
  266. package/dist/dns/DnsProvider.js +3 -0
  267. package/dist/dns/DnsProvider.js.map +1 -0
  268. package/dist/dns/DnsProvider.jsonld +161 -0
  269. package/dist/dns/cloudflare/CloudflareDnsProvider.d.ts +51 -0
  270. package/dist/dns/cloudflare/CloudflareDnsProvider.js +227 -0
  271. package/dist/dns/cloudflare/CloudflareDnsProvider.js.map +1 -0
  272. package/dist/dns/cloudflare/index.d.ts +1 -0
  273. package/dist/dns/cloudflare/index.js +18 -0
  274. package/dist/dns/cloudflare/index.js.map +1 -0
  275. package/dist/dns/tencent/TencentDnsProvider.d.ts +42 -0
  276. package/dist/dns/tencent/TencentDnsProvider.js +221 -0
  277. package/dist/dns/tencent/TencentDnsProvider.js.map +1 -0
  278. package/dist/dns/tencent/TencentDnsProvider.jsonld +239 -0
  279. package/dist/document/Chunker.d.ts +64 -0
  280. package/dist/document/Chunker.js +8 -0
  281. package/dist/document/Chunker.js.map +1 -0
  282. package/dist/document/DocumentParser.d.ts +58 -0
  283. package/dist/document/DocumentParser.js +8 -0
  284. package/dist/document/DocumentParser.js.map +1 -0
  285. package/dist/document/HeadingChunker.d.ts +34 -0
  286. package/dist/document/HeadingChunker.js +182 -0
  287. package/dist/document/HeadingChunker.js.map +1 -0
  288. package/dist/document/JinaDocumentParser.d.ts +40 -0
  289. package/dist/document/JinaDocumentParser.js +129 -0
  290. package/dist/document/JinaDocumentParser.js.map +1 -0
  291. package/dist/document/index.d.ts +7 -0
  292. package/dist/document/index.js +26 -0
  293. package/dist/document/index.js.map +1 -0
  294. package/dist/edge/DdnsManager.d.ts +53 -0
  295. package/dist/edge/DdnsManager.js +153 -0
  296. package/dist/edge/DdnsManager.js.map +1 -0
  297. package/dist/edge/Dns01CertificateProvisioner.d.ts +27 -0
  298. package/dist/edge/Dns01CertificateProvisioner.js +160 -0
  299. package/dist/edge/Dns01CertificateProvisioner.js.map +1 -0
  300. package/dist/edge/Dns01CertificateProvisioner.jsonld +148 -0
  301. package/dist/edge/EdgeNodeAgent.d.ts +56 -0
  302. package/dist/edge/EdgeNodeAgent.js +230 -0
  303. package/dist/edge/EdgeNodeAgent.js.map +1 -0
  304. package/dist/edge/EdgeNodeAgent.jsonld +89 -0
  305. package/dist/edge/EdgeNodeAgentInitializer.d.ts +25 -0
  306. package/dist/edge/EdgeNodeAgentInitializer.js +64 -0
  307. package/dist/edge/EdgeNodeAgentInitializer.js.map +1 -0
  308. package/dist/edge/EdgeNodeCapabilityDetector.d.ts +98 -0
  309. package/dist/edge/EdgeNodeCapabilityDetector.js +425 -0
  310. package/dist/edge/EdgeNodeCapabilityDetector.js.map +1 -0
  311. package/dist/edge/EdgeNodeCertificateProvisioner.d.ts +3 -0
  312. package/dist/edge/EdgeNodeCertificateProvisioner.js +3 -0
  313. package/dist/edge/EdgeNodeCertificateProvisioner.js.map +1 -0
  314. package/dist/edge/EdgeNodeCertificateProvisioner.jsonld +21 -0
  315. package/dist/edge/EdgeNodeDnsCoordinator.d.ts +38 -0
  316. package/dist/edge/EdgeNodeDnsCoordinator.js +201 -0
  317. package/dist/edge/EdgeNodeDnsCoordinator.js.map +1 -0
  318. package/dist/edge/EdgeNodeDnsCoordinator.jsonld +212 -0
  319. package/dist/edge/EdgeNodeHealthProbeService.d.ts +25 -0
  320. package/dist/edge/EdgeNodeHealthProbeService.js +208 -0
  321. package/dist/edge/EdgeNodeHealthProbeService.js.map +1 -0
  322. package/dist/edge/EdgeNodeHealthProbeService.jsonld +176 -0
  323. package/dist/edge/EdgeNodeModeDetector.d.ts +50 -0
  324. package/dist/edge/EdgeNodeModeDetector.js +194 -0
  325. package/dist/edge/EdgeNodeModeDetector.js.map +1 -0
  326. package/dist/edge/EdgeNodeModeDetector.jsonld +114 -0
  327. package/dist/edge/EdgeNodeTunnelManager.d.ts +23 -0
  328. package/dist/edge/EdgeNodeTunnelManager.js +99 -0
  329. package/dist/edge/EdgeNodeTunnelManager.js.map +1 -0
  330. package/dist/edge/EdgeNodeTunnelManager.jsonld +128 -0
  331. package/dist/edge/FrpTunnelManager.d.ts +30 -0
  332. package/dist/edge/FrpTunnelManager.js +151 -0
  333. package/dist/edge/FrpTunnelManager.js.map +1 -0
  334. package/dist/edge/FrpTunnelManager.jsonld +192 -0
  335. package/dist/edge/LocalNetworkManager.d.ts +41 -0
  336. package/dist/edge/LocalNetworkManager.js +115 -0
  337. package/dist/edge/LocalNetworkManager.js.map +1 -0
  338. package/dist/edge/acme/AcmeCertificateManager.d.ts +65 -0
  339. package/dist/edge/acme/AcmeCertificateManager.js +233 -0
  340. package/dist/edge/acme/AcmeCertificateManager.js.map +1 -0
  341. package/dist/edge/acme/AcmeCertificateManager.jsonld +373 -0
  342. package/dist/edge/acme/ClusterCertificateManager.d.ts +40 -0
  343. package/dist/edge/acme/ClusterCertificateManager.js +184 -0
  344. package/dist/edge/acme/ClusterCertificateManager.js.map +1 -0
  345. package/dist/edge/acme/DnsChallengeClient.d.ts +15 -0
  346. package/dist/edge/acme/DnsChallengeClient.js +40 -0
  347. package/dist/edge/acme/DnsChallengeClient.js.map +1 -0
  348. package/dist/edge/acme/utils.d.ts +4 -0
  349. package/dist/edge/acme/utils.js +17 -0
  350. package/dist/edge/acme/utils.js.map +1 -0
  351. package/dist/edge/frp/FrpRelay.d.ts +11 -0
  352. package/dist/edge/frp/FrpRelay.js +29 -0
  353. package/dist/edge/frp/FrpRelay.js.map +1 -0
  354. package/dist/edge/frp/FrpcProcessManager.d.ts +51 -0
  355. package/dist/edge/frp/FrpcProcessManager.js +174 -0
  356. package/dist/edge/frp/FrpcProcessManager.js.map +1 -0
  357. package/dist/edge/interfaces/EdgeNodeTunnelManager.d.ts +6 -0
  358. package/dist/edge/interfaces/EdgeNodeTunnelManager.js +3 -0
  359. package/dist/edge/interfaces/EdgeNodeTunnelManager.js.map +1 -0
  360. package/dist/edge/interfaces/EdgeNodeTunnelManager.jsonld +21 -0
  361. package/dist/embedding/CredentialReader.d.ts +7 -0
  362. package/dist/embedding/CredentialReader.js +10 -0
  363. package/dist/embedding/CredentialReader.js.map +1 -0
  364. package/dist/embedding/CredentialReader.jsonld +22 -0
  365. package/dist/embedding/CredentialReaderImpl.d.ts +6 -0
  366. package/dist/embedding/CredentialReaderImpl.js +55 -0
  367. package/dist/embedding/CredentialReaderImpl.js.map +1 -0
  368. package/dist/embedding/CredentialReaderImpl.jsonld +31 -0
  369. package/dist/embedding/EmbeddingService.d.ts +8 -0
  370. package/dist/embedding/EmbeddingService.js +10 -0
  371. package/dist/embedding/EmbeddingService.js.map +1 -0
  372. package/dist/embedding/EmbeddingService.jsonld +26 -0
  373. package/dist/embedding/EmbeddingServiceImpl.d.ts +11 -0
  374. package/dist/embedding/EmbeddingServiceImpl.js +73 -0
  375. package/dist/embedding/EmbeddingServiceImpl.js.map +1 -0
  376. package/dist/embedding/EmbeddingServiceImpl.jsonld +53 -0
  377. package/dist/embedding/ProviderRegistry.d.ts +26 -0
  378. package/dist/embedding/ProviderRegistry.js +10 -0
  379. package/dist/embedding/ProviderRegistry.js.map +1 -0
  380. package/dist/embedding/ProviderRegistry.jsonld +30 -0
  381. package/dist/embedding/ProviderRegistryImpl.d.ts +14 -0
  382. package/dist/embedding/ProviderRegistryImpl.js +112 -0
  383. package/dist/embedding/ProviderRegistryImpl.js.map +1 -0
  384. package/dist/embedding/ProviderRegistryImpl.jsonld +40 -0
  385. package/dist/embedding/index.d.ts +5 -0
  386. package/dist/embedding/index.js +22 -0
  387. package/dist/embedding/index.js.map +1 -0
  388. package/dist/embedding/schema/index.d.ts +1 -0
  389. package/dist/embedding/schema/index.js +18 -0
  390. package/dist/embedding/schema/index.js.map +1 -0
  391. package/dist/embedding/schema/tables.d.ts +70 -0
  392. package/dist/embedding/schema/tables.js +102 -0
  393. package/dist/embedding/schema/tables.js.map +1 -0
  394. package/dist/embedding/types.d.ts +12 -0
  395. package/dist/embedding/types.js +6 -0
  396. package/dist/embedding/types.js.map +1 -0
  397. package/dist/gateway/port-finder.d.ts +4 -0
  398. package/dist/gateway/port-finder.js +15 -0
  399. package/dist/gateway/port-finder.js.map +1 -0
  400. package/dist/gateway/proxy.d.ts +22 -0
  401. package/dist/gateway/proxy.js +149 -0
  402. package/dist/gateway/proxy.js.map +1 -0
  403. package/dist/gateway/supervisor.d.ts +2 -0
  404. package/dist/gateway/supervisor.js +7 -0
  405. package/dist/gateway/supervisor.js.map +1 -0
  406. package/dist/gateway/types.d.ts +1 -0
  407. package/dist/gateway/types.js +3 -0
  408. package/dist/gateway/types.js.map +1 -0
  409. package/dist/http/AppStaticAssetHandler.d.ts +8 -0
  410. package/dist/http/AppStaticAssetHandler.js +27 -0
  411. package/dist/http/AppStaticAssetHandler.js.map +1 -0
  412. package/dist/http/AppStaticAssetHandler.jsonld +26 -0
  413. package/dist/http/ClusterIngressRouter.d.ts +93 -0
  414. package/dist/http/ClusterIngressRouter.js +355 -0
  415. package/dist/http/ClusterIngressRouter.js.map +1 -0
  416. package/dist/http/ClusterIngressRouter.jsonld +227 -0
  417. package/dist/http/ClusterWebSocketConfigurator.d.ts +59 -0
  418. package/dist/http/ClusterWebSocketConfigurator.js +226 -0
  419. package/dist/http/ClusterWebSocketConfigurator.js.map +1 -0
  420. package/dist/http/ClusterWebSocketConfigurator.jsonld +145 -0
  421. package/dist/http/EdgeNodeDirectDebugHttpHandler.d.ts +25 -0
  422. package/dist/http/EdgeNodeDirectDebugHttpHandler.js +126 -0
  423. package/dist/http/EdgeNodeDirectDebugHttpHandler.js.map +1 -0
  424. package/dist/http/EdgeNodeDirectDebugHttpHandler.jsonld +151 -0
  425. package/dist/http/EdgeNodeProxyHttpHandler.d.ts +28 -0
  426. package/dist/http/EdgeNodeProxyHttpHandler.js +190 -0
  427. package/dist/http/EdgeNodeProxyHttpHandler.js.map +1 -0
  428. package/dist/http/EdgeNodeProxyHttpHandler.jsonld +162 -0
  429. package/dist/http/PodRoutingHttpHandler.d.ts +64 -0
  430. package/dist/http/PodRoutingHttpHandler.js +233 -0
  431. package/dist/http/PodRoutingHttpHandler.js.map +1 -0
  432. package/dist/http/PodRoutingHttpHandler.jsonld +171 -0
  433. package/dist/http/RequestIdHttpHandler.d.ts +15 -0
  434. package/dist/http/RequestIdHttpHandler.js +59 -0
  435. package/dist/http/RequestIdHttpHandler.js.map +1 -0
  436. package/dist/http/RouterHttpHandler.d.ts +21 -0
  437. package/dist/http/RouterHttpHandler.js +49 -0
  438. package/dist/http/RouterHttpHandler.js.map +1 -0
  439. package/dist/http/RouterHttpHandler.jsonld +80 -0
  440. package/dist/http/RouterHttpRoute.d.ts +6 -0
  441. package/dist/http/RouterHttpRoute.js +11 -0
  442. package/dist/http/RouterHttpRoute.js.map +1 -0
  443. package/dist/http/RouterHttpRoute.jsonld +48 -0
  444. package/dist/http/SignalInterceptHttpHandler.d.ts +24 -0
  445. package/dist/http/SignalInterceptHttpHandler.js +47 -0
  446. package/dist/http/SignalInterceptHttpHandler.js.map +1 -0
  447. package/dist/http/SignalInterceptHttpHandler.jsonld +103 -0
  448. package/dist/http/SubgraphSparqlHttpHandler.d.ts +70 -0
  449. package/dist/http/SubgraphSparqlHttpHandler.js +640 -0
  450. package/dist/http/SubgraphSparqlHttpHandler.js.map +1 -0
  451. package/dist/http/SubgraphSparqlHttpHandler.jsonld +363 -0
  452. package/dist/http/TracingHandler.d.ts +19 -0
  453. package/dist/http/TracingHandler.js +60 -0
  454. package/dist/http/TracingHandler.js.map +1 -0
  455. package/dist/http/TracingHandler.jsonld +37 -0
  456. package/dist/http/admin/EdgeNodeAdminHttpHandler.d.ts +45 -0
  457. package/dist/http/admin/EdgeNodeAdminHttpHandler.js +292 -0
  458. package/dist/http/admin/EdgeNodeAdminHttpHandler.js.map +1 -0
  459. package/dist/http/admin/EdgeNodeCertificateHttpHandler.d.ts +33 -0
  460. package/dist/http/admin/EdgeNodeCertificateHttpHandler.js +172 -0
  461. package/dist/http/admin/EdgeNodeCertificateHttpHandler.js.map +1 -0
  462. package/dist/http/admin/EdgeNodeCertificateHttpHandler.jsonld +182 -0
  463. package/dist/http/admin/EdgeNodeSignalHttpHandler.d.ts +71 -0
  464. package/dist/http/admin/EdgeNodeSignalHttpHandler.js +674 -0
  465. package/dist/http/admin/EdgeNodeSignalHttpHandler.js.map +1 -0
  466. package/dist/http/admin/EdgeNodeSignalHttpHandler.jsonld +406 -0
  467. package/dist/http/cluster/PodMigrationHttpHandler.d.ts +52 -0
  468. package/dist/http/cluster/PodMigrationHttpHandler.js +208 -0
  469. package/dist/http/cluster/PodMigrationHttpHandler.js.map +1 -0
  470. package/dist/http/cluster/PodMigrationHttpHandler.jsonld +169 -0
  471. package/dist/http/quota/QuotaAdminHttpHandler.d.ts +34 -0
  472. package/dist/http/quota/QuotaAdminHttpHandler.js +241 -0
  473. package/dist/http/quota/QuotaAdminHttpHandler.js.map +1 -0
  474. package/dist/http/quota/QuotaAdminHttpHandler.jsonld +171 -0
  475. package/dist/http/search/SearchHttpHandler.d.ts +59 -0
  476. package/dist/http/search/SearchHttpHandler.js +312 -0
  477. package/dist/http/search/SearchHttpHandler.js.map +1 -0
  478. package/dist/http/search/index.d.ts +1 -0
  479. package/dist/http/search/index.js +18 -0
  480. package/dist/http/search/index.js.map +1 -0
  481. package/dist/http/terminal/TerminalHttpHandler.d.ts +45 -0
  482. package/dist/http/terminal/TerminalHttpHandler.js +306 -0
  483. package/dist/http/terminal/TerminalHttpHandler.js.map +1 -0
  484. package/dist/http/terminal/TerminalHttpHandler.jsonld +232 -0
  485. package/dist/http/terminal/index.d.ts +1 -0
  486. package/dist/http/terminal/index.js +18 -0
  487. package/dist/http/terminal/index.js.map +1 -0
  488. package/dist/http/vector/VectorHttpHandler.d.ts +42 -0
  489. package/dist/http/vector/VectorHttpHandler.js +301 -0
  490. package/dist/http/vector/VectorHttpHandler.js.map +1 -0
  491. package/dist/http/vector/VectorHttpHandler.jsonld +157 -0
  492. package/dist/http/vector/index.d.ts +1 -0
  493. package/dist/http/vector/index.js +18 -0
  494. package/dist/http/vector/index.js.map +1 -0
  495. package/dist/ice/IceServerProvider.d.ts +85 -0
  496. package/dist/ice/IceServerProvider.js +122 -0
  497. package/dist/ice/IceServerProvider.js.map +1 -0
  498. package/dist/ice/index.d.ts +8 -0
  499. package/dist/ice/index.js +25 -0
  500. package/dist/ice/index.js.map +1 -0
  501. package/dist/identity/CenterNodeRegistrationService.d.ts +102 -0
  502. package/dist/identity/CenterNodeRegistrationService.js +266 -0
  503. package/dist/identity/CenterNodeRegistrationService.js.map +1 -0
  504. package/dist/identity/CenterNodeRegistrationService.jsonld +251 -0
  505. package/dist/identity/ReactAppViewHandler.d.ts +31 -0
  506. package/dist/identity/ReactAppViewHandler.js +79 -0
  507. package/dist/identity/ReactAppViewHandler.js.map +1 -0
  508. package/dist/identity/ReactAppViewHandler.jsonld +99 -0
  509. package/dist/identity/drizzle/AccountRepository.d.ts +31 -0
  510. package/dist/identity/drizzle/AccountRepository.js +130 -0
  511. package/dist/identity/drizzle/AccountRepository.js.map +1 -0
  512. package/dist/identity/drizzle/AccountRoleRepository.d.ts +23 -0
  513. package/dist/identity/drizzle/AccountRoleRepository.js +233 -0
  514. package/dist/identity/drizzle/AccountRoleRepository.js.map +1 -0
  515. package/dist/identity/drizzle/DdnsRepository.d.ts +87 -0
  516. package/dist/identity/drizzle/DdnsRepository.js +284 -0
  517. package/dist/identity/drizzle/DdnsRepository.js.map +1 -0
  518. package/dist/identity/drizzle/DrizzleIndexedStorage.d.ts +26 -0
  519. package/dist/identity/drizzle/DrizzleIndexedStorage.js +159 -0
  520. package/dist/identity/drizzle/DrizzleIndexedStorage.js.map +1 -0
  521. package/dist/identity/drizzle/DrizzleIndexedStorage.jsonld +130 -0
  522. package/dist/identity/drizzle/EdgeNodeRepository.d.ts +155 -0
  523. package/dist/identity/drizzle/EdgeNodeRepository.js +555 -0
  524. package/dist/identity/drizzle/EdgeNodeRepository.js.map +1 -0
  525. package/dist/identity/drizzle/PodLookupRepository.d.ts +59 -0
  526. package/dist/identity/drizzle/PodLookupRepository.js +153 -0
  527. package/dist/identity/drizzle/PodLookupRepository.js.map +1 -0
  528. package/dist/identity/drizzle/WebIdProfileRepository.d.ts +58 -0
  529. package/dist/identity/drizzle/WebIdProfileRepository.js +157 -0
  530. package/dist/identity/drizzle/WebIdProfileRepository.js.map +1 -0
  531. package/dist/identity/drizzle/db.d.ts +60 -0
  532. package/dist/identity/drizzle/db.js +269 -0
  533. package/dist/identity/drizzle/db.js.map +1 -0
  534. package/dist/identity/drizzle/schema.d.ts +1 -0
  535. package/dist/identity/drizzle/schema.js +20 -0
  536. package/dist/identity/drizzle/schema.js.map +1 -0
  537. package/dist/identity/drizzle/schema.pg.d.ts +20 -0
  538. package/dist/identity/drizzle/schema.pg.js +103 -0
  539. package/dist/identity/drizzle/schema.pg.js.map +1 -0
  540. package/dist/identity/drizzle/schema.sqlite.d.ts +872 -0
  541. package/dist/identity/drizzle/schema.sqlite.js +100 -0
  542. package/dist/identity/drizzle/schema.sqlite.js.map +1 -0
  543. package/dist/identity/oidc/AutoDetectIdentityProviderHandler.d.ts +43 -0
  544. package/dist/identity/oidc/AutoDetectIdentityProviderHandler.js +92 -0
  545. package/dist/identity/oidc/AutoDetectIdentityProviderHandler.js.map +1 -0
  546. package/dist/identity/oidc/AutoDetectIdentityProviderHandler.jsonld +122 -0
  547. package/dist/identity/oidc/AutoDetectOidcHandler.d.ts +55 -0
  548. package/dist/identity/oidc/AutoDetectOidcHandler.js +137 -0
  549. package/dist/identity/oidc/AutoDetectOidcHandler.js.map +1 -0
  550. package/dist/identity/oidc/AutoDetectOidcHandler.jsonld +138 -0
  551. package/dist/identity/oidc/DisabledIdentityProviderHandler.d.ts +51 -0
  552. package/dist/identity/oidc/DisabledIdentityProviderHandler.js +104 -0
  553. package/dist/identity/oidc/DisabledIdentityProviderHandler.js.map +1 -0
  554. package/dist/identity/oidc/DisabledIdentityProviderHandler.jsonld +111 -0
  555. package/dist/identity/oidc/DisabledOidcHandler.d.ts +55 -0
  556. package/dist/identity/oidc/DisabledOidcHandler.js +132 -0
  557. package/dist/identity/oidc/DisabledOidcHandler.js.map +1 -0
  558. package/dist/identity/oidc/DisabledOidcHandler.jsonld +157 -0
  559. package/dist/index.d.ts +80 -0
  560. package/dist/index.js +155 -0
  561. package/dist/index.js.map +1 -0
  562. package/dist/legacy/DrizzleClientCredentialsStore.d.ts +51 -0
  563. package/dist/legacy/DrizzleClientCredentialsStore.js +142 -0
  564. package/dist/legacy/DrizzleClientCredentialsStore.js.map +1 -0
  565. package/dist/legacy/DrizzleIndexedStorage.d.ts +26 -0
  566. package/dist/legacy/DrizzleIndexedStorage.js +159 -0
  567. package/dist/legacy/DrizzleIndexedStorage.js.map +1 -0
  568. package/dist/legacy/DrizzleQuotaService.d.ts +16 -0
  569. package/dist/legacy/DrizzleQuotaService.js +37 -0
  570. package/dist/legacy/DrizzleQuotaService.js.map +1 -0
  571. package/dist/libs/backends/index.d.ts +6 -0
  572. package/dist/libs/backends/index.js +31 -0
  573. package/dist/libs/backends/index.js.map +1 -0
  574. package/dist/libs/backends/sqlup.d.ts +44 -0
  575. package/dist/libs/backends/sqlup.js +437 -0
  576. package/dist/libs/backends/sqlup.js.map +1 -0
  577. package/dist/logging/ConfigurableLoggerFactory.d.ts +24 -0
  578. package/dist/logging/ConfigurableLoggerFactory.js +77 -0
  579. package/dist/logging/ConfigurableLoggerFactory.js.map +1 -0
  580. package/dist/logging/ConfigurableLoggerFactory.jsonld +169 -0
  581. package/dist/logging/LogContext.d.ts +5 -0
  582. package/dist/logging/LogContext.js +6 -0
  583. package/dist/logging/LogContext.js.map +1 -0
  584. package/dist/main.d.ts +2 -0
  585. package/dist/main.js +148 -0
  586. package/dist/main.js.map +1 -0
  587. package/dist/network/LocalNetworkDetector.d.ts +65 -0
  588. package/dist/network/LocalNetworkDetector.js +185 -0
  589. package/dist/network/LocalNetworkDetector.js.map +1 -0
  590. package/dist/network/index.d.ts +4 -0
  591. package/dist/network/index.js +21 -0
  592. package/dist/network/index.js.map +1 -0
  593. package/dist/pods/ReservedSuffixIdentifierGenerator.d.ts +13 -0
  594. package/dist/pods/ReservedSuffixIdentifierGenerator.js +26 -0
  595. package/dist/pods/ReservedSuffixIdentifierGenerator.js.map +1 -0
  596. package/dist/pods/ReservedSuffixIdentifierGenerator.jsonld +75 -0
  597. package/dist/quota/DefaultQuotaService.d.ts +16 -0
  598. package/dist/quota/DefaultQuotaService.js +37 -0
  599. package/dist/quota/DefaultQuotaService.js.map +1 -0
  600. package/dist/quota/DefaultQuotaService.jsonld +85 -0
  601. package/dist/quota/DrizzleQuotaService.d.ts +16 -0
  602. package/dist/quota/DrizzleQuotaService.js +37 -0
  603. package/dist/quota/DrizzleQuotaService.js.map +1 -0
  604. package/dist/quota/DrizzleQuotaService.jsonld +87 -0
  605. package/dist/quota/NoopQuotaService.d.ts +7 -0
  606. package/dist/quota/NoopQuotaService.js +15 -0
  607. package/dist/quota/NoopQuotaService.js.map +1 -0
  608. package/dist/quota/NoopQuotaService.jsonld +36 -0
  609. package/dist/quota/QuotaService.d.ts +6 -0
  610. package/dist/quota/QuotaService.js +3 -0
  611. package/dist/quota/QuotaService.js.map +1 -0
  612. package/dist/quota/QuotaService.jsonld +33 -0
  613. package/dist/sdk/SignalingClientAdapter.d.ts +38 -0
  614. package/dist/sdk/SignalingClientAdapter.js +99 -0
  615. package/dist/sdk/SignalingClientAdapter.js.map +1 -0
  616. package/dist/sdk/createFetch.d.ts +23 -0
  617. package/dist/sdk/createFetch.js +258 -0
  618. package/dist/sdk/createFetch.js.map +1 -0
  619. package/dist/sdk/index.d.ts +29 -0
  620. package/dist/sdk/index.js +34 -0
  621. package/dist/sdk/index.js.map +1 -0
  622. package/dist/sdk/xpodFetch.d.ts +112 -0
  623. package/dist/sdk/xpodFetch.js +251 -0
  624. package/dist/sdk/xpodFetch.js.map +1 -0
  625. package/dist/service/EdgeNodeCertificateService.d.ts +45 -0
  626. package/dist/service/EdgeNodeCertificateService.js +164 -0
  627. package/dist/service/EdgeNodeCertificateService.js.map +1 -0
  628. package/dist/service/EdgeNodeCertificateService.jsonld +216 -0
  629. package/dist/service/EdgeNodeHeartbeatService.d.ts +68 -0
  630. package/dist/service/EdgeNodeHeartbeatService.js +262 -0
  631. package/dist/service/EdgeNodeHeartbeatService.js.map +1 -0
  632. package/dist/service/PodMigrationService.d.ts +43 -0
  633. package/dist/service/PodMigrationService.js +72 -0
  634. package/dist/service/PodMigrationService.js.map +1 -0
  635. package/dist/service/PodMigrationService.jsonld +76 -0
  636. package/dist/signaling/SignalingClient.d.ts +142 -0
  637. package/dist/signaling/SignalingClient.js +305 -0
  638. package/dist/signaling/SignalingClient.js.map +1 -0
  639. package/dist/signaling/SignalingService.d.ts +104 -0
  640. package/dist/signaling/SignalingService.js +440 -0
  641. package/dist/signaling/SignalingService.js.map +1 -0
  642. package/dist/signaling/index.d.ts +11 -0
  643. package/dist/signaling/index.js +28 -0
  644. package/dist/signaling/index.js.map +1 -0
  645. package/dist/signaling/types.d.ts +237 -0
  646. package/dist/signaling/types.js +18 -0
  647. package/dist/signaling/types.js.map +1 -0
  648. package/dist/storage/DrizzleCompat.d.ts +15 -0
  649. package/dist/storage/DrizzleCompat.js +60 -0
  650. package/dist/storage/DrizzleCompat.js.map +1 -0
  651. package/dist/storage/LockingResourceStore.d.ts +8 -0
  652. package/dist/storage/LockingResourceStore.js +68 -0
  653. package/dist/storage/LockingResourceStore.js.map +1 -0
  654. package/dist/storage/MigratableDataAccessor.d.ts +63 -0
  655. package/dist/storage/MigratableDataAccessor.js +11 -0
  656. package/dist/storage/MigratableDataAccessor.js.map +1 -0
  657. package/dist/storage/MigratableDataAccessor.jsonld +60 -0
  658. package/dist/storage/ObservableResourceStore.d.ts +89 -0
  659. package/dist/storage/ObservableResourceStore.js +125 -0
  660. package/dist/storage/ObservableResourceStore.js.map +1 -0
  661. package/dist/storage/RepresentationPartialConvertingStore.d.ts +22 -0
  662. package/dist/storage/RepresentationPartialConvertingStore.js +94 -0
  663. package/dist/storage/RepresentationPartialConvertingStore.js.map +1 -0
  664. package/dist/storage/RepresentationPartialConvertingStore.jsonld +332 -0
  665. package/dist/storage/SparqlUpdateResourceStore.d.ts +30 -0
  666. package/dist/storage/SparqlUpdateResourceStore.js +292 -0
  667. package/dist/storage/SparqlUpdateResourceStore.js.map +1 -0
  668. package/dist/storage/SparqlUpdateResourceStore.jsonld +112 -0
  669. package/dist/storage/SqliteCompat.d.ts +60 -0
  670. package/dist/storage/SqliteCompat.js +158 -0
  671. package/dist/storage/SqliteCompat.js.map +1 -0
  672. package/dist/storage/accessors/MinioDataAccessor.d.ts +127 -0
  673. package/dist/storage/accessors/MinioDataAccessor.js +249 -0
  674. package/dist/storage/accessors/MinioDataAccessor.js.map +1 -0
  675. package/dist/storage/accessors/MinioDataAccessor.jsonld +138 -0
  676. package/dist/storage/accessors/MixDataAccessor.d.ts +43 -0
  677. package/dist/storage/accessors/MixDataAccessor.js +130 -0
  678. package/dist/storage/accessors/MixDataAccessor.js.map +1 -0
  679. package/dist/storage/accessors/MixDataAccessor.jsonld +101 -0
  680. package/dist/storage/accessors/QuadstoreSparqlDataAccessor.d.ts +146 -0
  681. package/dist/storage/accessors/QuadstoreSparqlDataAccessor.js +415 -0
  682. package/dist/storage/accessors/QuadstoreSparqlDataAccessor.js.map +1 -0
  683. package/dist/storage/accessors/QuadstoreSparqlDataAccessor.jsonld +180 -0
  684. package/dist/storage/accessors/QuintStoreSparqlDataAccessor.d.ts +95 -0
  685. package/dist/storage/accessors/QuintStoreSparqlDataAccessor.js +376 -0
  686. package/dist/storage/accessors/QuintStoreSparqlDataAccessor.js.map +1 -0
  687. package/dist/storage/accessors/QuintStoreSparqlDataAccessor.jsonld +168 -0
  688. package/dist/storage/accessors/TieredMinioDataAccessor.d.ts +150 -0
  689. package/dist/storage/accessors/TieredMinioDataAccessor.js +582 -0
  690. package/dist/storage/accessors/TieredMinioDataAccessor.js.map +1 -0
  691. package/dist/storage/accessors/TieredMinioDataAccessor.jsonld +333 -0
  692. package/dist/storage/database/PostgresPoolManager.d.ts +56 -0
  693. package/dist/storage/database/PostgresPoolManager.js +117 -0
  694. package/dist/storage/database/PostgresPoolManager.js.map +1 -0
  695. package/dist/storage/keyvalue/PostgresKeyValueStorage.d.ts +34 -0
  696. package/dist/storage/keyvalue/PostgresKeyValueStorage.js +146 -0
  697. package/dist/storage/keyvalue/PostgresKeyValueStorage.js.map +1 -0
  698. package/dist/storage/keyvalue/PostgresKeyValueStorage.jsonld +192 -0
  699. package/dist/storage/keyvalue/RedisKeyValueStorage.d.ts +30 -0
  700. package/dist/storage/keyvalue/RedisKeyValueStorage.js +133 -0
  701. package/dist/storage/keyvalue/RedisKeyValueStorage.js.map +1 -0
  702. package/dist/storage/keyvalue/RedisKeyValueStorage.jsonld +237 -0
  703. package/dist/storage/keyvalue/SqliteKeyValueStorage.d.ts +30 -0
  704. package/dist/storage/keyvalue/SqliteKeyValueStorage.js +164 -0
  705. package/dist/storage/keyvalue/SqliteKeyValueStorage.js.map +1 -0
  706. package/dist/storage/keyvalue/SqliteKeyValueStorage.jsonld +167 -0
  707. package/dist/storage/quint/BaseQuintStore.d.ts +80 -0
  708. package/dist/storage/quint/BaseQuintStore.js +535 -0
  709. package/dist/storage/quint/BaseQuintStore.js.map +1 -0
  710. package/dist/storage/quint/BaseQuintStore.jsonld +175 -0
  711. package/dist/storage/quint/PgQuintStore.d.ts +61 -0
  712. package/dist/storage/quint/PgQuintStore.drizzle.d.ts +45 -0
  713. package/dist/storage/quint/PgQuintStore.drizzle.js +327 -0
  714. package/dist/storage/quint/PgQuintStore.drizzle.js.map +1 -0
  715. package/dist/storage/quint/PgQuintStore.js +275 -0
  716. package/dist/storage/quint/PgQuintStore.js.map +1 -0
  717. package/dist/storage/quint/PgQuintStore.jsonld +258 -0
  718. package/dist/storage/quint/SqliteQuintStore.d.ts +55 -0
  719. package/dist/storage/quint/SqliteQuintStore.js +630 -0
  720. package/dist/storage/quint/SqliteQuintStore.js.map +1 -0
  721. package/dist/storage/quint/SqliteQuintStore.jsonld +157 -0
  722. package/dist/storage/quint/index.d.ts +11 -0
  723. package/dist/storage/quint/index.js +30 -0
  724. package/dist/storage/quint/index.js.map +1 -0
  725. package/dist/storage/quint/schema.d.ts +82 -0
  726. package/dist/storage/quint/schema.js +33 -0
  727. package/dist/storage/quint/schema.js.map +1 -0
  728. package/dist/storage/quint/serialization.d.ts +56 -0
  729. package/dist/storage/quint/serialization.js +198 -0
  730. package/dist/storage/quint/serialization.js.map +1 -0
  731. package/dist/storage/quint/types.d.ts +152 -0
  732. package/dist/storage/quint/types.js +27 -0
  733. package/dist/storage/quint/types.js.map +1 -0
  734. package/dist/storage/quint/types.jsonld +78 -0
  735. package/dist/storage/quota/PerAccountQuotaStrategy.d.ts +19 -0
  736. package/dist/storage/quota/PerAccountQuotaStrategy.js +63 -0
  737. package/dist/storage/quota/PerAccountQuotaStrategy.js.map +1 -0
  738. package/dist/storage/quota/PerAccountQuotaStrategy.jsonld +113 -0
  739. package/dist/storage/quota/UsageRepository.d.ts +46 -0
  740. package/dist/storage/quota/UsageRepository.js +278 -0
  741. package/dist/storage/quota/UsageRepository.js.map +1 -0
  742. package/dist/storage/quota/UsageTrackingStore.d.ts +37 -0
  743. package/dist/storage/quota/UsageTrackingStore.js +355 -0
  744. package/dist/storage/quota/UsageTrackingStore.js.map +1 -0
  745. package/dist/storage/quota/UsageTrackingStore.jsonld +193 -0
  746. package/dist/storage/sparql/AlgebraUtils.d.ts +48 -0
  747. package/dist/storage/sparql/AlgebraUtils.js +118 -0
  748. package/dist/storage/sparql/AlgebraUtils.js.map +1 -0
  749. package/dist/storage/sparql/ComunicaOptimizedEngine.d.ts +59 -0
  750. package/dist/storage/sparql/ComunicaOptimizedEngine.js +254 -0
  751. package/dist/storage/sparql/ComunicaOptimizedEngine.js.map +1 -0
  752. package/dist/storage/sparql/ComunicaQuintEngine.d.ts +134 -0
  753. package/dist/storage/sparql/ComunicaQuintEngine.js +727 -0
  754. package/dist/storage/sparql/ComunicaQuintEngine.js.map +1 -0
  755. package/dist/storage/sparql/ExpressionEvaluator.d.ts +54 -0
  756. package/dist/storage/sparql/ExpressionEvaluator.js +340 -0
  757. package/dist/storage/sparql/ExpressionEvaluator.js.map +1 -0
  758. package/dist/storage/sparql/FilterPushdownExtractor.d.ts +74 -0
  759. package/dist/storage/sparql/FilterPushdownExtractor.js +409 -0
  760. package/dist/storage/sparql/FilterPushdownExtractor.js.map +1 -0
  761. package/dist/storage/sparql/OptimizedQuadstoreEngine.d.ts +65 -0
  762. package/dist/storage/sparql/OptimizedQuadstoreEngine.js +327 -0
  763. package/dist/storage/sparql/OptimizedQuadstoreEngine.js.map +1 -0
  764. package/dist/storage/sparql/OptimizedQuadstoreSource.d.ts +46 -0
  765. package/dist/storage/sparql/OptimizedQuadstoreSource.js +118 -0
  766. package/dist/storage/sparql/OptimizedQuadstoreSource.js.map +1 -0
  767. package/dist/storage/sparql/PatternBuilder.d.ts +41 -0
  768. package/dist/storage/sparql/PatternBuilder.js +118 -0
  769. package/dist/storage/sparql/PatternBuilder.js.map +1 -0
  770. package/dist/storage/sparql/QueryOptimizer.d.ts +125 -0
  771. package/dist/storage/sparql/QueryOptimizer.js +363 -0
  772. package/dist/storage/sparql/QueryOptimizer.js.map +1 -0
  773. package/dist/storage/sparql/QuintEngine.d.ts +92 -0
  774. package/dist/storage/sparql/QuintEngine.js +150 -0
  775. package/dist/storage/sparql/QuintEngine.js.map +1 -0
  776. package/dist/storage/sparql/QuintQuerySource.d.ts +227 -0
  777. package/dist/storage/sparql/QuintQuerySource.js +918 -0
  778. package/dist/storage/sparql/QuintQuerySource.js.map +1 -0
  779. package/dist/storage/sparql/SimpleSparqlExecutor.d.ts +40 -0
  780. package/dist/storage/sparql/SimpleSparqlExecutor.js +131 -0
  781. package/dist/storage/sparql/SimpleSparqlExecutor.js.map +1 -0
  782. package/dist/storage/sparql/SubgraphQueryEngine.d.ts +74 -0
  783. package/dist/storage/sparql/SubgraphQueryEngine.js +248 -0
  784. package/dist/storage/sparql/SubgraphQueryEngine.js.map +1 -0
  785. package/dist/storage/sparql/SubgraphQueryEngine.jsonld +250 -0
  786. package/dist/storage/vector/PostgresVectorStore.d.ts +46 -0
  787. package/dist/storage/vector/PostgresVectorStore.js +291 -0
  788. package/dist/storage/vector/PostgresVectorStore.js.map +1 -0
  789. package/dist/storage/vector/PostgresVectorStore.jsonld +142 -0
  790. package/dist/storage/vector/SqliteVectorStore.d.ts +44 -0
  791. package/dist/storage/vector/SqliteVectorStore.js +282 -0
  792. package/dist/storage/vector/SqliteVectorStore.js.map +1 -0
  793. package/dist/storage/vector/SqliteVectorStore.jsonld +137 -0
  794. package/dist/storage/vector/VectorIndexingListener.d.ts +114 -0
  795. package/dist/storage/vector/VectorIndexingListener.js +351 -0
  796. package/dist/storage/vector/VectorIndexingListener.js.map +1 -0
  797. package/dist/storage/vector/VectorStore.d.ts +42 -0
  798. package/dist/storage/vector/VectorStore.js +50 -0
  799. package/dist/storage/vector/VectorStore.js.map +1 -0
  800. package/dist/storage/vector/VectorStore.jsonld +87 -0
  801. package/dist/storage/vector/VectorStoreInit.d.ts +28 -0
  802. package/dist/storage/vector/VectorStoreInit.js +104 -0
  803. package/dist/storage/vector/VectorStoreInit.js.map +1 -0
  804. package/dist/storage/vector/index.d.ts +5 -0
  805. package/dist/storage/vector/index.js +22 -0
  806. package/dist/storage/vector/index.js.map +1 -0
  807. package/dist/storage/vector/types.d.ts +39 -0
  808. package/dist/storage/vector/types.js +8 -0
  809. package/dist/storage/vector/types.js.map +1 -0
  810. package/dist/subdomain/SubdomainClient.d.ts +156 -0
  811. package/dist/subdomain/SubdomainClient.js +220 -0
  812. package/dist/subdomain/SubdomainClient.js.map +1 -0
  813. package/dist/subdomain/SubdomainService.d.ts +114 -0
  814. package/dist/subdomain/SubdomainService.js +212 -0
  815. package/dist/subdomain/SubdomainService.js.map +1 -0
  816. package/dist/subdomain/SubdomainService.jsonld +261 -0
  817. package/dist/subdomain/index.d.ts +2 -0
  818. package/dist/subdomain/index.js +9 -0
  819. package/dist/subdomain/index.js.map +1 -0
  820. package/dist/supervisor/Supervisor.d.ts +20 -0
  821. package/dist/supervisor/Supervisor.js +174 -0
  822. package/dist/supervisor/Supervisor.js.map +1 -0
  823. package/dist/supervisor/index.d.ts +2 -0
  824. package/dist/supervisor/index.js +6 -0
  825. package/dist/supervisor/index.js.map +1 -0
  826. package/dist/supervisor/types.d.ts +19 -0
  827. package/dist/supervisor/types.js +3 -0
  828. package/dist/supervisor/types.js.map +1 -0
  829. package/dist/task/DrizzleTaskQueue.d.ts +60 -0
  830. package/dist/task/DrizzleTaskQueue.js +171 -0
  831. package/dist/task/DrizzleTaskQueue.js.map +1 -0
  832. package/dist/task/TaskExecutor.d.ts +82 -0
  833. package/dist/task/TaskExecutor.js +198 -0
  834. package/dist/task/TaskExecutor.js.map +1 -0
  835. package/dist/task/index.d.ts +10 -0
  836. package/dist/task/index.js +20 -0
  837. package/dist/task/index.js.map +1 -0
  838. package/dist/task/schema.d.ts +53 -0
  839. package/dist/task/schema.js +71 -0
  840. package/dist/task/schema.js.map +1 -0
  841. package/dist/task/types.d.ts +186 -0
  842. package/dist/task/types.js +12 -0
  843. package/dist/task/types.js.map +1 -0
  844. package/dist/terminal/AclPermissionService.d.ts +28 -0
  845. package/dist/terminal/AclPermissionService.js +141 -0
  846. package/dist/terminal/AclPermissionService.js.map +1 -0
  847. package/dist/terminal/BubblewrapSandbox.d.ts +51 -0
  848. package/dist/terminal/BubblewrapSandbox.js +147 -0
  849. package/dist/terminal/BubblewrapSandbox.js.map +1 -0
  850. package/dist/terminal/TerminalSession.d.ts +33 -0
  851. package/dist/terminal/TerminalSession.js +164 -0
  852. package/dist/terminal/TerminalSession.js.map +1 -0
  853. package/dist/terminal/TerminalSessionManager.d.ts +69 -0
  854. package/dist/terminal/TerminalSessionManager.js +196 -0
  855. package/dist/terminal/TerminalSessionManager.js.map +1 -0
  856. package/dist/terminal/index.d.ts +5 -0
  857. package/dist/terminal/index.js +22 -0
  858. package/dist/terminal/index.js.map +1 -0
  859. package/dist/terminal/sandbox/BubblewrapSandbox.d.ts +8 -0
  860. package/dist/terminal/sandbox/BubblewrapSandbox.js +105 -0
  861. package/dist/terminal/sandbox/BubblewrapSandbox.js.map +1 -0
  862. package/dist/terminal/sandbox/MacOSSandbox.d.ts +19 -0
  863. package/dist/terminal/sandbox/MacOSSandbox.js +120 -0
  864. package/dist/terminal/sandbox/MacOSSandbox.js.map +1 -0
  865. package/dist/terminal/sandbox/index.d.ts +29 -0
  866. package/dist/terminal/sandbox/index.js +113 -0
  867. package/dist/terminal/sandbox/index.js.map +1 -0
  868. package/dist/terminal/sandbox/types.d.ts +38 -0
  869. package/dist/terminal/sandbox/types.js +3 -0
  870. package/dist/terminal/sandbox/types.js.map +1 -0
  871. package/dist/terminal/types.d.ts +80 -0
  872. package/dist/terminal/types.js +16 -0
  873. package/dist/terminal/types.js.map +1 -0
  874. package/dist/tunnel/CloudflareTunnelProvider.d.ts +120 -0
  875. package/dist/tunnel/CloudflareTunnelProvider.js +376 -0
  876. package/dist/tunnel/CloudflareTunnelProvider.js.map +1 -0
  877. package/dist/tunnel/CloudflareTunnelProvider.jsonld +204 -0
  878. package/dist/tunnel/LocalTunnelProvider.d.ts +85 -0
  879. package/dist/tunnel/LocalTunnelProvider.js +295 -0
  880. package/dist/tunnel/LocalTunnelProvider.js.map +1 -0
  881. package/dist/tunnel/LocalTunnelProvider.jsonld +142 -0
  882. package/dist/tunnel/SakuraFrpTunnelProvider.d.ts +59 -0
  883. package/dist/tunnel/SakuraFrpTunnelProvider.js +207 -0
  884. package/dist/tunnel/SakuraFrpTunnelProvider.js.map +1 -0
  885. package/dist/tunnel/TunnelProvider.d.ts +91 -0
  886. package/dist/tunnel/TunnelProvider.js +10 -0
  887. package/dist/tunnel/TunnelProvider.js.map +1 -0
  888. package/dist/tunnel/TunnelProvider.jsonld +144 -0
  889. package/dist/tunnel/index.d.ts +3 -0
  890. package/dist/tunnel/index.js +8 -0
  891. package/dist/tunnel/index.js.map +1 -0
  892. package/dist/util/LockContext.d.ts +3 -0
  893. package/dist/util/LockContext.js +6 -0
  894. package/dist/util/LockContext.js.map +1 -0
  895. package/dist/util/ResourceStoreFetch.d.ts +11 -0
  896. package/dist/util/ResourceStoreFetch.js +147 -0
  897. package/dist/util/ResourceStoreFetch.js.map +1 -0
  898. package/dist/util/database/DatabaseMaintenance.d.ts +23 -0
  899. package/dist/util/database/DatabaseMaintenance.js +82 -0
  900. package/dist/util/database/DatabaseMaintenance.js.map +1 -0
  901. package/dist/util/identifiers/ClusterIdentifierStrategy.d.ts +23 -0
  902. package/dist/util/identifiers/ClusterIdentifierStrategy.js +73 -0
  903. package/dist/util/identifiers/ClusterIdentifierStrategy.js.map +1 -0
  904. package/dist/util/identifiers/ClusterIdentifierStrategy.jsonld +90 -0
  905. package/dist/util/identifiers/MultiDomainIdentifierStrategy.d.ts +40 -0
  906. package/dist/util/identifiers/MultiDomainIdentifierStrategy.js +73 -0
  907. package/dist/util/identifiers/MultiDomainIdentifierStrategy.js.map +1 -0
  908. package/dist/util/identifiers/MultiDomainIdentifierStrategy.jsonld +90 -0
  909. package/dist/util/identifiers/PathBasedPodIdentifierStrategy.d.ts +78 -0
  910. package/dist/util/identifiers/PathBasedPodIdentifierStrategy.js +182 -0
  911. package/dist/util/identifiers/PathBasedPodIdentifierStrategy.js.map +1 -0
  912. package/dist/util/identifiers/PathBasedPodIdentifierStrategy.jsonld +88 -0
  913. package/dist/util/identifiers/SubdomainPodIdentifierStrategy.d.ts +68 -0
  914. package/dist/util/identifiers/SubdomainPodIdentifierStrategy.js +149 -0
  915. package/dist/util/identifiers/SubdomainPodIdentifierStrategy.js.map +1 -0
  916. package/dist/util/identifiers/SubdomainPodIdentifierStrategy.jsonld +84 -0
  917. package/dist/util/locking/DebugRedisLocker.d.ts +8 -0
  918. package/dist/util/locking/DebugRedisLocker.js +33 -0
  919. package/dist/util/locking/DebugRedisLocker.js.map +1 -0
  920. package/dist/util/logger.d.ts +13 -0
  921. package/dist/util/logger.js +36 -0
  922. package/dist/util/logger.js.map +1 -0
  923. package/dist/util/stream/BandwidthThrottleTransform.d.ts +8 -0
  924. package/dist/util/stream/BandwidthThrottleTransform.js +55 -0
  925. package/dist/util/stream/BandwidthThrottleTransform.js.map +1 -0
  926. package/dist/vocab/external.d.ts +216 -0
  927. package/dist/vocab/external.js +276 -0
  928. package/dist/vocab/external.js.map +1 -0
  929. package/dist/vocab/index.d.ts +26 -0
  930. package/dist/vocab/index.js +46 -0
  931. package/dist/vocab/index.js.map +1 -0
  932. package/dist/vocab/udfs.d.ts +184 -0
  933. package/dist/vocab/udfs.js +217 -0
  934. package/dist/vocab/udfs.js.map +1 -0
  935. package/dist/webrtc/WebRTCClient.d.ts +109 -0
  936. package/dist/webrtc/WebRTCClient.js +344 -0
  937. package/dist/webrtc/WebRTCClient.js.map +1 -0
  938. package/dist/webrtc/WebRTCPeerManager.d.ts +112 -0
  939. package/dist/webrtc/WebRTCPeerManager.js +289 -0
  940. package/dist/webrtc/WebRTCPeerManager.js.map +1 -0
  941. package/dist/webrtc/WeriftPeerConnectionFactory.d.ts +13 -0
  942. package/dist/webrtc/WeriftPeerConnectionFactory.js +255 -0
  943. package/dist/webrtc/WeriftPeerConnectionFactory.js.map +1 -0
  944. package/dist/webrtc/index.d.ts +13 -0
  945. package/dist/webrtc/index.js +30 -0
  946. package/dist/webrtc/index.js.map +1 -0
  947. package/dist/webrtc/types.d.ts +169 -0
  948. package/dist/webrtc/types.js +6 -0
  949. package/dist/webrtc/types.js.map +1 -0
  950. package/dist/xpod.single.cjs +826 -0
  951. package/dist/xpod.single.cjs.map +7 -0
  952. package/package.json +173 -0
  953. package/static/app/assets/index.css +1 -0
  954. package/static/app/assets/main.js +11 -0
  955. package/static/app/auth.html +21 -0
  956. package/static/app/index.html +14 -0
  957. package/static/app/vite.svg +1 -0
  958. package/static/dashboard/assets/dashboard-G96F8267.js +52 -0
  959. package/static/dashboard/assets/dashboard-PJyGDppf.css +1 -0
  960. package/static/dashboard/auth.html +21 -0
  961. package/static/dashboard/index.html +13 -0
  962. package/static/dashboard/vite.svg +1 -0
  963. package/static/landing/index.html +165 -0
  964. package/templates/identity/index.html.ejs +12 -0
  965. package/templates/identity/login.html.ejs +49 -0
  966. package/templates/identity/oidc/consent.html.ejs +103 -0
  967. package/templates/identity/password/forgot.html.ejs +49 -0
  968. package/templates/identity/password/login.html.ejs +58 -0
  969. package/templates/identity/password/register.html.ejs +65 -0
  970. 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
+ }