@undefineds.co/xpod 0.1.7 → 0.2.0

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 (350) hide show
  1. package/README.md +164 -3
  2. package/config/cli.json +9 -71
  3. package/config/cloud.json +34 -7
  4. package/config/local.json +6 -2
  5. package/config/resolver.json +11 -49
  6. package/config/runtime-open.json +22 -0
  7. package/config/xpod.base.json +32 -0
  8. package/config/xpod.cluster.json +2 -44
  9. package/config/xpod.json +5 -2
  10. package/dist/agents/AgentExecutorFactory.js +1 -1
  11. package/dist/agents/AgentExecutorFactory.js.map +1 -1
  12. package/dist/agents/AgentManager.js +1 -1
  13. package/dist/agents/AgentManager.js.map +1 -1
  14. package/dist/agents/config/agent-meta-schema.d.ts +7 -7
  15. package/dist/agents/config/agent-meta-schema.js +1 -1
  16. package/dist/agents/config/agent-meta-schema.js.map +1 -1
  17. package/dist/agents/config/resolve.js +1 -1
  18. package/dist/agents/config/resolve.js.map +1 -1
  19. package/dist/agents/schema/agent-config.d.ts +18 -18
  20. package/dist/agents/schema/agent-config.js +1 -1
  21. package/dist/agents/schema/agent-config.js.map +1 -1
  22. package/dist/agents/schema/tables.d.ts +8 -8
  23. package/dist/agents/schema/tables.js +1 -1
  24. package/dist/agents/schema/tables.js.map +1 -1
  25. package/dist/ai/schema/config.d.ts +7 -7
  26. package/dist/ai/schema/config.js +1 -1
  27. package/dist/ai/schema/config.js.map +1 -1
  28. package/dist/ai/schema/model.d.ts +13 -13
  29. package/dist/ai/schema/model.js +1 -1
  30. package/dist/ai/schema/model.js.map +1 -1
  31. package/dist/ai/schema/provider.d.ts +7 -7
  32. package/dist/ai/schema/provider.js +1 -1
  33. package/dist/ai/schema/provider.js.map +1 -1
  34. package/dist/ai/schema/vector-store.d.ts +17 -17
  35. package/dist/ai/schema/vector-store.js +1 -1
  36. package/dist/ai/schema/vector-store.js.map +1 -1
  37. package/dist/ai/service/CredentialReaderImpl.js +1 -1
  38. package/dist/ai/service/CredentialReaderImpl.js.map +1 -1
  39. package/dist/ai/service/DefaultAiConfigService.js.map +1 -1
  40. package/dist/api/ApiServer.d.ts +3 -1
  41. package/dist/api/ApiServer.js +14 -1
  42. package/dist/api/ApiServer.js.map +1 -1
  43. package/dist/api/auth/AuthContext.d.ts +12 -1
  44. package/dist/api/auth/AuthContext.js +18 -1
  45. package/dist/api/auth/AuthContext.js.map +1 -1
  46. package/dist/api/auth/ClientCredentialsAuthenticator.d.ts +0 -1
  47. package/dist/api/auth/ClientCredentialsAuthenticator.js.map +1 -1
  48. package/dist/api/auth/ServiceTokenAuthenticator.d.ts +18 -0
  49. package/dist/api/auth/ServiceTokenAuthenticator.js +50 -0
  50. package/dist/api/auth/ServiceTokenAuthenticator.js.map +1 -0
  51. package/dist/api/auth/index.d.ts +1 -0
  52. package/dist/api/auth/index.js +1 -0
  53. package/dist/api/auth/index.js.map +1 -1
  54. package/dist/api/chatkit/ai-provider.d.ts +0 -10
  55. package/dist/api/chatkit/ai-provider.js +11 -120
  56. package/dist/api/chatkit/ai-provider.js.map +1 -1
  57. package/dist/api/chatkit/default-agent.js +11 -8
  58. package/dist/api/chatkit/default-agent.js.map +1 -1
  59. package/dist/api/chatkit/pod-store.d.ts +6 -0
  60. package/dist/api/chatkit/pod-store.js +103 -36
  61. package/dist/api/chatkit/pod-store.js.map +1 -1
  62. package/dist/api/chatkit/schema.d.ts +32 -26
  63. package/dist/api/chatkit/schema.js +16 -8
  64. package/dist/api/chatkit/schema.js.map +1 -1
  65. package/dist/api/container/business-token.d.ts +9 -0
  66. package/dist/api/container/business-token.js +32 -0
  67. package/dist/api/container/business-token.js.map +1 -0
  68. package/dist/api/container/cloud.js +36 -12
  69. package/dist/api/container/cloud.js.map +1 -1
  70. package/dist/api/container/common.js +13 -5
  71. package/dist/api/container/common.js.map +1 -1
  72. package/dist/api/container/index.js +94 -14
  73. package/dist/api/container/index.js.map +1 -1
  74. package/dist/api/container/local.js +2 -1
  75. package/dist/api/container/local.js.map +1 -1
  76. package/dist/api/container/routes.js +81 -9
  77. package/dist/api/container/routes.js.map +1 -1
  78. package/dist/api/container/types.d.ts +8 -6
  79. package/dist/api/container/types.js.map +1 -1
  80. package/dist/api/handlers/AdminHandler.js +9 -9
  81. package/dist/api/handlers/AdminHandler.js.map +1 -1
  82. package/dist/api/handlers/ApiKeyHandler.js +0 -6
  83. package/dist/api/handlers/ApiKeyHandler.js.map +1 -1
  84. package/dist/api/handlers/EdgeNodeSignalHandler.d.ts +17 -0
  85. package/dist/api/handlers/EdgeNodeSignalHandler.js +171 -0
  86. package/dist/api/handlers/EdgeNodeSignalHandler.js.map +1 -0
  87. package/dist/api/handlers/PodManagementHandler.d.ts +5 -4
  88. package/dist/api/handlers/PodManagementHandler.js +11 -10
  89. package/dist/api/handlers/PodManagementHandler.js.map +1 -1
  90. package/dist/api/handlers/ProvisionHandler.d.ts +42 -0
  91. package/dist/api/handlers/ProvisionHandler.js +161 -0
  92. package/dist/api/handlers/ProvisionHandler.js.map +1 -0
  93. package/dist/api/handlers/QuotaHandler.d.ts +7 -7
  94. package/dist/api/handlers/QuotaHandler.js +143 -73
  95. package/dist/api/handlers/QuotaHandler.js.map +1 -1
  96. package/dist/api/handlers/SubdomainClientHandler.js +2 -2
  97. package/dist/api/handlers/SubdomainClientHandler.js.map +1 -1
  98. package/dist/api/handlers/SubdomainHandler.js +13 -8
  99. package/dist/api/handlers/SubdomainHandler.js.map +1 -1
  100. package/dist/api/handlers/UsageHandler.d.ts +14 -0
  101. package/dist/api/handlers/UsageHandler.js +123 -0
  102. package/dist/api/handlers/UsageHandler.js.map +1 -0
  103. package/dist/api/handlers/index.d.ts +3 -1
  104. package/dist/api/handlers/index.js +3 -1
  105. package/dist/api/handlers/index.js.map +1 -1
  106. package/dist/api/main.js +18 -0
  107. package/dist/api/main.js.map +1 -1
  108. package/dist/api/middleware/OpenAuthMiddleware.d.ts +12 -0
  109. package/dist/api/middleware/OpenAuthMiddleware.js +27 -0
  110. package/dist/api/middleware/OpenAuthMiddleware.js.map +1 -0
  111. package/dist/api/runtime.d.ts +15 -0
  112. package/dist/api/runtime.js +125 -0
  113. package/dist/api/runtime.js.map +1 -0
  114. package/dist/api/service/VectorStoreService.js +1 -1
  115. package/dist/api/service/VectorStoreService.js.map +1 -1
  116. package/dist/api/service/VercelChatService.d.ts +16 -7
  117. package/dist/api/service/VercelChatService.js +98 -178
  118. package/dist/api/service/VercelChatService.js.map +1 -1
  119. package/dist/api/store/DrizzleClientCredentialsStore.d.ts +6 -11
  120. package/dist/api/store/DrizzleClientCredentialsStore.js +9 -39
  121. package/dist/api/store/DrizzleClientCredentialsStore.js.map +1 -1
  122. package/dist/authorization/AuthModeSelector.d.ts +10 -0
  123. package/dist/authorization/AuthModeSelector.js +27 -0
  124. package/dist/authorization/AuthModeSelector.js.map +1 -0
  125. package/dist/authorization/AuthModeSelector.jsonld +81 -0
  126. package/dist/cli/commands/account.d.ts +6 -0
  127. package/dist/cli/commands/account.js +119 -0
  128. package/dist/cli/commands/account.js.map +1 -0
  129. package/dist/cli/commands/auth.js +20 -29
  130. package/dist/cli/commands/auth.js.map +1 -1
  131. package/dist/cli/commands/backup.d.ts +15 -0
  132. package/dist/cli/commands/backup.js +286 -0
  133. package/dist/cli/commands/backup.js.map +1 -0
  134. package/dist/cli/commands/config.d.ts +34 -3
  135. package/dist/cli/commands/config.js +195 -258
  136. package/dist/cli/commands/config.js.map +1 -1
  137. package/dist/cli/commands/doctor.d.ts +6 -0
  138. package/dist/cli/commands/doctor.js +94 -0
  139. package/dist/cli/commands/doctor.js.map +1 -0
  140. package/dist/cli/commands/pod.d.ts +6 -0
  141. package/dist/cli/commands/pod.js +124 -0
  142. package/dist/cli/commands/pod.js.map +1 -0
  143. package/dist/cli/commands/start.js +28 -5
  144. package/dist/cli/commands/start.js.map +1 -1
  145. package/dist/cli/index.js +9 -0
  146. package/dist/cli/index.js.map +1 -1
  147. package/dist/cli/lib/credentials-store.d.ts +17 -0
  148. package/dist/cli/lib/credentials-store.js +73 -0
  149. package/dist/cli/lib/credentials-store.js.map +1 -0
  150. package/dist/cli/lib/css-account.d.ts +17 -0
  151. package/dist/cli/lib/css-account.js +56 -0
  152. package/dist/cli/lib/css-account.js.map +1 -1
  153. package/dist/cli/lib/pod-thread-store.d.ts +57 -0
  154. package/dist/cli/lib/pod-thread-store.js +310 -0
  155. package/dist/cli/lib/pod-thread-store.js.map +1 -0
  156. package/dist/cli/lib/solid-auth.d.ts +20 -0
  157. package/dist/cli/lib/solid-auth.js +70 -0
  158. package/dist/cli/lib/solid-auth.js.map +1 -0
  159. package/dist/components/components.jsonld +5 -8
  160. package/dist/components/context.jsonld +114 -244
  161. package/dist/credential/schema/tables.d.ts +14 -14
  162. package/dist/credential/schema/tables.js +1 -1
  163. package/dist/credential/schema/tables.js.map +1 -1
  164. package/dist/edge/EdgeNodeAgent.js +2 -2
  165. package/dist/edge/EdgeNodeAgent.js.map +1 -1
  166. package/dist/edge/EdgeNodeDnsCoordinator.d.ts +1 -7
  167. package/dist/edge/EdgeNodeDnsCoordinator.js +31 -41
  168. package/dist/edge/EdgeNodeDnsCoordinator.js.map +1 -1
  169. package/dist/edge/EdgeNodeDnsCoordinator.jsonld +1 -27
  170. package/dist/edge/EdgeNodeModeDetector.d.ts +1 -1
  171. package/dist/edge/EdgeNodeModeDetector.js +9 -11
  172. package/dist/edge/EdgeNodeModeDetector.js.map +1 -1
  173. package/dist/http/ClusterIngressRouter.js +3 -3
  174. package/dist/http/ClusterIngressRouter.js.map +1 -1
  175. package/dist/http/ClusterWebSocketConfigurator.js +2 -2
  176. package/dist/http/ClusterWebSocketConfigurator.js.map +1 -1
  177. package/dist/http/PodRoutingHttpHandler.js +2 -2
  178. package/dist/http/PodRoutingHttpHandler.js.map +1 -1
  179. package/dist/http/cluster/PodMigrationHttpHandler.d.ts +1 -1
  180. package/dist/http/cluster/PodMigrationHttpHandler.js +1 -1
  181. package/dist/http/cluster/PodMigrationHttpHandler.js.map +1 -1
  182. package/dist/identity/drizzle/EdgeNodeRepository.d.ts +37 -4
  183. package/dist/identity/drizzle/EdgeNodeRepository.js +120 -128
  184. package/dist/identity/drizzle/EdgeNodeRepository.js.map +1 -1
  185. package/dist/identity/drizzle/ServiceTokenRepository.d.ts +52 -0
  186. package/dist/identity/drizzle/ServiceTokenRepository.js +142 -0
  187. package/dist/identity/drizzle/ServiceTokenRepository.js.map +1 -0
  188. package/dist/identity/drizzle/db.d.ts +9 -0
  189. package/dist/identity/drizzle/db.js +235 -3
  190. package/dist/identity/drizzle/db.js.map +1 -1
  191. package/dist/identity/drizzle/schema.pg.d.ts +5 -0
  192. package/dist/identity/drizzle/schema.pg.js +49 -20
  193. package/dist/identity/drizzle/schema.pg.js.map +1 -1
  194. package/dist/identity/drizzle/schema.sqlite.d.ts +332 -57
  195. package/dist/identity/drizzle/schema.sqlite.js +48 -18
  196. package/dist/identity/drizzle/schema.sqlite.js.map +1 -1
  197. package/dist/identity/oidc/AutoDetectIdentityProviderHandler.js +6 -4
  198. package/dist/identity/oidc/AutoDetectIdentityProviderHandler.js.map +1 -1
  199. package/dist/index.d.ts +6 -9
  200. package/dist/index.js +12 -14
  201. package/dist/index.js.map +1 -1
  202. package/dist/main.js +25 -8
  203. package/dist/main.js.map +1 -1
  204. package/dist/provision/ProvisionCodeCodec.d.ts +39 -0
  205. package/dist/provision/ProvisionCodeCodec.js +65 -0
  206. package/dist/provision/ProvisionCodeCodec.js.map +1 -0
  207. package/dist/provision/ProvisionCodeCodec.jsonld +47 -0
  208. package/dist/provision/ProvisionPodCreator.d.ts +20 -0
  209. package/dist/provision/ProvisionPodCreator.js +84 -0
  210. package/dist/provision/ProvisionPodCreator.js.map +1 -0
  211. package/dist/provision/ProvisionPodCreator.jsonld +118 -0
  212. package/dist/quota/DrizzleQuotaService.d.ts +17 -3
  213. package/dist/quota/DrizzleQuotaService.js +108 -8
  214. package/dist/quota/DrizzleQuotaService.js.map +1 -1
  215. package/dist/quota/DrizzleQuotaService.jsonld +33 -22
  216. package/dist/quota/NoopQuotaService.d.ts +7 -1
  217. package/dist/quota/NoopQuotaService.js +12 -0
  218. package/dist/quota/NoopQuotaService.js.map +1 -1
  219. package/dist/quota/NoopQuotaService.jsonld +24 -0
  220. package/dist/quota/QuotaService.d.ts +17 -0
  221. package/dist/quota/QuotaService.js +5 -0
  222. package/dist/quota/QuotaService.js.map +1 -1
  223. package/dist/quota/QuotaService.jsonld +50 -0
  224. package/dist/runtime/Proxy.d.ts +22 -4
  225. package/dist/runtime/Proxy.js +154 -35
  226. package/dist/runtime/Proxy.js.map +1 -1
  227. package/dist/runtime/XpodRuntime.d.ts +49 -0
  228. package/dist/runtime/XpodRuntime.js +374 -0
  229. package/dist/runtime/XpodRuntime.js.map +1 -0
  230. package/dist/runtime/env-utils.d.ts +2 -0
  231. package/dist/runtime/env-utils.js +55 -0
  232. package/dist/runtime/env-utils.js.map +1 -0
  233. package/dist/runtime/index.d.ts +4 -0
  234. package/dist/runtime/index.js +8 -1
  235. package/dist/runtime/index.js.map +1 -1
  236. package/dist/runtime/socket-fetch.d.ts +1 -0
  237. package/dist/runtime/socket-fetch.js +72 -0
  238. package/dist/runtime/socket-fetch.js.map +1 -0
  239. package/dist/runtime/socket-http.d.ts +1 -0
  240. package/dist/runtime/socket-http.js +142 -0
  241. package/dist/runtime/socket-http.js.map +1 -0
  242. package/dist/runtime/socket-utils.d.ts +2 -0
  243. package/dist/runtime/socket-utils.js +34 -0
  244. package/dist/runtime/socket-utils.js.map +1 -0
  245. package/dist/service/{EdgeNodeHeartbeatService.d.ts → EdgeNodeSignalClient.d.ts} +3 -3
  246. package/dist/service/{EdgeNodeHeartbeatService.js → EdgeNodeSignalClient.js} +4 -4
  247. package/dist/service/EdgeNodeSignalClient.js.map +1 -0
  248. package/dist/service/PodMigrationService.d.ts +1 -2
  249. package/dist/service/PodMigrationService.js +1 -2
  250. package/dist/service/PodMigrationService.js.map +1 -1
  251. package/dist/storage/SparqlUpdateResourceStore.js +1 -1
  252. package/dist/storage/SparqlUpdateResourceStore.js.map +1 -1
  253. package/dist/storage/accessors/MinioDataAccessor.d.ts +6 -0
  254. package/dist/storage/accessors/MinioDataAccessor.js +10 -0
  255. package/dist/storage/accessors/MinioDataAccessor.js.map +1 -1
  256. package/dist/storage/accessors/MinioDataAccessor.jsonld +4 -0
  257. package/dist/storage/accessors/MixDataAccessor.d.ts +2 -1
  258. package/dist/storage/accessors/MixDataAccessor.js +12 -1
  259. package/dist/storage/accessors/MixDataAccessor.js.map +1 -1
  260. package/dist/storage/accessors/MixDataAccessor.jsonld +19 -0
  261. package/dist/storage/locking/UrlAwareRedisLocker.d.ts +18 -0
  262. package/dist/storage/locking/UrlAwareRedisLocker.js +60 -0
  263. package/dist/storage/locking/UrlAwareRedisLocker.js.map +1 -0
  264. package/dist/storage/locking/UrlAwareRedisLocker.jsonld +123 -0
  265. package/dist/storage/quota/UsageRepository.d.ts +41 -8
  266. package/dist/storage/quota/UsageRepository.js +252 -50
  267. package/dist/storage/quota/UsageRepository.js.map +1 -1
  268. package/dist/storage/sparql/ComunicaQuintEngine.d.ts +9 -0
  269. package/dist/storage/sparql/ComunicaQuintEngine.js +50 -9
  270. package/dist/storage/sparql/ComunicaQuintEngine.js.map +1 -1
  271. package/dist/storage/sparql/QueryOptimizer.js +13 -1
  272. package/dist/storage/sparql/QueryOptimizer.js.map +1 -1
  273. package/dist/storage/sparql/QuintQuerySource.d.ts +14 -0
  274. package/dist/storage/sparql/QuintQuerySource.js +152 -1
  275. package/dist/storage/sparql/QuintQuerySource.js.map +1 -1
  276. package/dist/storage/sparql/SubgraphQueryEngine.d.ts +1 -0
  277. package/dist/storage/sparql/SubgraphQueryEngine.js +6 -2
  278. package/dist/storage/sparql/SubgraphQueryEngine.js.map +1 -1
  279. package/dist/storage/sparql/SubgraphQueryEngine.jsonld +4 -0
  280. package/dist/subdomain/SubdomainClient.d.ts +3 -3
  281. package/dist/subdomain/SubdomainClient.js +1 -1
  282. package/dist/subdomain/SubdomainClient.js.map +1 -1
  283. package/dist/subdomain/SubdomainService.d.ts +15 -16
  284. package/dist/subdomain/SubdomainService.js +80 -54
  285. package/dist/subdomain/SubdomainService.js.map +1 -1
  286. package/dist/subdomain/SubdomainService.jsonld +22 -26
  287. package/dist/supervisor/Supervisor.d.ts +7 -2
  288. package/dist/supervisor/Supervisor.js +33 -1
  289. package/dist/supervisor/Supervisor.js.map +1 -1
  290. package/dist/task/DrizzleTaskQueue.d.ts +1 -1
  291. package/dist/task/DrizzleTaskQueue.js +1 -1
  292. package/dist/task/DrizzleTaskQueue.js.map +1 -1
  293. package/dist/task/schema.d.ts +10 -10
  294. package/dist/task/schema.js +1 -1
  295. package/dist/task/schema.js.map +1 -1
  296. package/dist/test-utils/index.d.ts +4 -0
  297. package/dist/test-utils/index.js +8 -0
  298. package/dist/test-utils/index.js.map +1 -0
  299. package/dist/test-utils/no-auth-xpod.d.ts +11 -0
  300. package/dist/test-utils/no-auth-xpod.js +25 -0
  301. package/dist/test-utils/no-auth-xpod.js.map +1 -0
  302. package/dist/test-utils/seed-pod.d.ts +5 -0
  303. package/dist/test-utils/seed-pod.js +61 -0
  304. package/dist/test-utils/seed-pod.js.map +1 -0
  305. package/package.json +38 -10
  306. package/templates/identity/account/create-pod.html.ejs +110 -0
  307. package/templates/main.html.ejs +10 -0
  308. package/dist/api/handlers/DevHandler.d.ts +0 -18
  309. package/dist/api/handlers/DevHandler.js +0 -276
  310. package/dist/api/handlers/DevHandler.js.map +0 -1
  311. package/dist/api/handlers/SignalHandler.d.ts +0 -13
  312. package/dist/api/handlers/SignalHandler.js +0 -122
  313. package/dist/api/handlers/SignalHandler.js.map +0 -1
  314. package/dist/gateway/Proxy.d.ts +0 -24
  315. package/dist/gateway/Proxy.js +0 -209
  316. package/dist/gateway/Proxy.js.map +0 -1
  317. package/dist/gateway/Supervisor.d.ts +0 -2
  318. package/dist/gateway/Supervisor.js +0 -7
  319. package/dist/gateway/Supervisor.js.map +0 -1
  320. package/dist/gateway/port-finder.d.ts +0 -4
  321. package/dist/gateway/port-finder.js +0 -15
  322. package/dist/gateway/port-finder.js.map +0 -1
  323. package/dist/gateway/types.d.ts +0 -1
  324. package/dist/gateway/types.js +0 -3
  325. package/dist/gateway/types.js.map +0 -1
  326. package/dist/http/SignalInterceptHttpHandler.d.ts +0 -24
  327. package/dist/http/SignalInterceptHttpHandler.js +0 -47
  328. package/dist/http/SignalInterceptHttpHandler.js.map +0 -1
  329. package/dist/http/SignalInterceptHttpHandler.jsonld +0 -103
  330. package/dist/http/admin/EdgeNodeSignalHttpHandler.d.ts +0 -71
  331. package/dist/http/admin/EdgeNodeSignalHttpHandler.js +0 -674
  332. package/dist/http/admin/EdgeNodeSignalHttpHandler.js.map +0 -1
  333. package/dist/http/admin/EdgeNodeSignalHttpHandler.jsonld +0 -406
  334. package/dist/http/cluster/PodMigrationHttpHandler.jsonld +0 -169
  335. package/dist/quota/DefaultQuotaService.d.ts +0 -16
  336. package/dist/quota/DefaultQuotaService.js +0 -37
  337. package/dist/quota/DefaultQuotaService.js.map +0 -1
  338. package/dist/quota/DefaultQuotaService.jsonld +0 -85
  339. package/dist/service/EdgeNodeHeartbeatService.js.map +0 -1
  340. package/dist/service/PodMigrationService.jsonld +0 -76
  341. package/dist/storage/MigratableDataAccessor.d.ts +0 -63
  342. package/dist/storage/MigratableDataAccessor.js +0 -11
  343. package/dist/storage/MigratableDataAccessor.js.map +0 -1
  344. package/dist/storage/MigratableDataAccessor.jsonld +0 -60
  345. package/dist/storage/accessors/TieredMinioDataAccessor.d.ts +0 -150
  346. package/dist/storage/accessors/TieredMinioDataAccessor.js +0 -582
  347. package/dist/storage/accessors/TieredMinioDataAccessor.js.map +0 -1
  348. package/dist/storage/accessors/TieredMinioDataAccessor.jsonld +0 -333
  349. package/static/app/assets/index.css +0 -1
  350. package/static/app/assets/main.js +0 -11
package/README.md CHANGED
@@ -12,13 +12,31 @@ This is achieved through **Pods** (Personal Online Data stores)—portable web c
12
12
 
13
13
  ## Installation
14
14
 
15
- Ensure you have [Node.js](https://nodejs.org/) and [Yarn](https://yarnpkg.com/) installed:
15
+ Ensure you have [Node.js 22.x LTS](https://nodejs.org/) and [Yarn](https://yarnpkg.com/) installed:
16
16
 
17
17
  ```bash
18
18
  yarn install
19
19
  yarn build
20
20
  ```
21
21
 
22
+ > **Node runtime note**
23
+ > Xpod currently targets Node 22 (`>=22 <23`). `.nvmrc` only declares the version; it does not force non-interactive runners to switch automatically.
24
+ > AI/Codex runtimes, IDE background tasks, CI shells, or tmux panes may still start with the wrong `node` on `PATH`.
25
+ >
26
+ > Before running installs, local startup, or integration tests, run:
27
+ >
28
+ > ```bash
29
+ > nvm use
30
+ > yarn check:abi
31
+ > ```
32
+ >
33
+ > If you hit `better-sqlite3` / `NODE_MODULE_VERSION` errors, reinstall native dependencies under the same Node major:
34
+ >
35
+ > ```bash
36
+ > nvm use
37
+ > yarn install --force --ignore-engines
38
+ > ```
39
+
22
40
 
23
41
  ## Single-File Build & Local npm Release
24
42
 
@@ -66,6 +84,102 @@ Visit [http://localhost:3000/](http://localhost:3000/) after startup.
66
84
 
67
85
  See [docs/deployment-modes.md](docs/deployment-modes.md) for detailed profile comparison and cloud-edge coordination.
68
86
 
87
+ ## Library Mode for Tests
88
+
89
+ If you want to start the full Xpod stack inside your test process, you can import it as a library instead of spawning the CLI.
90
+
91
+ ```ts
92
+ import { startXpodRuntime } from '@undefineds.co/xpod/runtime';
93
+
94
+ const runtime = await startXpodRuntime({
95
+ mode: 'local',
96
+ open: true,
97
+ transport: 'socket',
98
+ });
99
+
100
+ const res = await runtime.fetch('/service/status');
101
+ console.log(await res.json());
102
+
103
+ await runtime.stop();
104
+ ```
105
+
106
+ For the lightest test setup, use the test helper export:
107
+
108
+ ```ts
109
+ import { startNoAuthXpod } from '@undefineds.co/xpod/test-utils';
110
+
111
+ const xpod = await startNoAuthXpod();
112
+ console.log(xpod.baseUrl);
113
+ await xpod.stop();
114
+ ```
115
+
116
+ Notes:
117
+ - In socket mode, the logical base URL is `http://localhost/`, but real traffic goes through a Unix socket.
118
+ - This mode is ideal for CI and integration tests that should avoid external port conflicts.
119
+ - Docker/full integration tests should still use real service startup.
120
+
121
+ ### Using Xpod from a downstream project
122
+
123
+ Install Xpod as a dev dependency in your test project:
124
+
125
+ ```bash
126
+ yarn add -D @undefineds.co/xpod
127
+ ```
128
+
129
+ Important for downstream CI / agent runners:
130
+ - Run the parent toolchain with Node 22 as well. If Codex, IDE tasks, or other AI runtimes are launched under Node 23, they may ignore your directory-level `nvm` hook and still load the wrong native ABI.
131
+ - The package ships `yarn check:abi`; use it before startup when debugging local environment issues.
132
+
133
+ Recommended entry points:
134
+ - `@undefineds.co/xpod` — CSS/components main entry
135
+ - `@undefineds.co/xpod/runtime` — in-process runtime API (`startXpodRuntime`)
136
+ - `@undefineds.co/xpod/test-utils` — lightest no-auth helper (`startNoAuthXpod`)
137
+
138
+ A minimal `vitest` example in a downstream repo:
139
+
140
+ ```ts
141
+ import { afterAll, beforeAll, describe, expect, it } from 'vitest';
142
+ import { startNoAuthXpod } from '@undefineds.co/xpod/test-utils';
143
+
144
+ let xpod: Awaited<ReturnType<typeof startNoAuthXpod>>;
145
+
146
+ afterAll(async() => {
147
+ await xpod?.stop();
148
+ });
149
+
150
+ beforeAll(async() => {
151
+ xpod = await startNoAuthXpod();
152
+ }, 60_000);
153
+
154
+ describe('xpod integration', () => {
155
+ it('starts in-process', async() => {
156
+ const response = await fetch(new URL('/service/status', xpod.baseUrl));
157
+ expect(response.ok).toBe(true);
158
+ });
159
+ });
160
+ ```
161
+
162
+ If you need more control in a downstream repo, use `startXpodRuntime` directly:
163
+
164
+ ```ts
165
+ import { startXpodRuntime } from '@undefineds.co/xpod/runtime';
166
+
167
+ const runtime = await startXpodRuntime({
168
+ mode: 'local',
169
+ open: true,
170
+ transport: 'socket',
171
+ runtimeRoot: './.test-data/xpod-runtime',
172
+ });
173
+
174
+ // use runtime.baseUrl / runtime.fetch / runtime.sockets here
175
+ await runtime.stop();
176
+ ```
177
+
178
+ Typical downstream use cases:
179
+ - Use `startNoAuthXpod()` for CI-friendly integration tests that only need an open local stack.
180
+ - Use `startXpodRuntime()` when you need auth mode, custom storage paths, or explicit runtime options.
181
+ - Keep Docker/cluster tests on real services; use library mode for local/lite test paths.
182
+
69
183
  ## Single-File Packaging
70
184
 
71
185
  Build a self-extracting single-file launcher:
@@ -132,6 +246,45 @@ Xpod introduces a robust distributed architecture on top of standard Solid proto
132
246
  - **Control Plane (The Cloud)**: The Xpod Server acts as a coordinator, providing DNS, TLS certificates, and Tunneling services. It ensures your Agent is discoverable and reachable from the global internet.
133
247
  - **Data Plane (The Edge)**: Your Local Xpod holds the actual data and runs the Agents. It connects to the Cloud for reachability but executes Skills locally, ensuring data never leaves your physical control.
134
248
 
249
+ ### 7. Dual-Process Architecture (CSS + API Server)
250
+
251
+ Xpod runs as two cooperating processes behind a single gateway:
252
+
253
+ | Process | Port | Responsibility |
254
+ |---------|------|----------------|
255
+ | **CSS** (Solid Server) | 3000 | LDP resource access, OIDC auth, SPARQL, WebSocket notifications |
256
+ | **API Server** | 3001 | Node management, heartbeat/DNS sync, quota, API Keys, AI chat |
257
+
258
+ - **CSS** handles everything related to the Solid protocol — it's the kernel of the Pod file system.
259
+ - **API Server** handles management APIs that don't belong in the Solid request chain.
260
+ - Both share the same PostgreSQL database (server mode) or SQLite (local mode).
261
+
262
+ **Auth methods**: Solid Token (DPoP/Bearer), API Key (`sk-*`), Node Token (`XpodNode nodeId:token`).
263
+
264
+ **API Server routes**:
265
+
266
+ | Route | Description | Mode |
267
+ |-------|-------------|------|
268
+ | `POST /v1/signal` | Edge node heartbeat → health check → DNS sync | Shared |
269
+ | `/v1/nodes/*` | Node CRUD | Shared |
270
+ | `/v1/keys/*` | API Key management | Shared |
271
+ | `/v1/chat/completions` | OpenAI-compatible chat (SSE streaming) | Shared |
272
+ | `/v1/responses` | OpenAI Responses API | Shared |
273
+ | `/v1/messages` | Anthropic/OpenAI Threads compatible | Shared |
274
+ | `/v1/models` | List available models | Shared |
275
+ | `POST /v1/chatkit` | ChatKit protocol endpoint (streaming) | Shared |
276
+ | `/v1/chatkit/threads/*` | ChatKit REST API (threads CRUD, items) | Shared |
277
+ | `/v1/subdomains/*` | Subdomain allocation | Cloud |
278
+ | `/v1/ddns/*` | Dynamic DNS management | Cloud |
279
+ | `/v1/webid-profile/*` | WebID Profile hosting | Cloud |
280
+ | `/provision/nodes` | SP registration | Cloud |
281
+ | `/provision/pods` | Pod creation (SP callback) | Local |
282
+ | `/admin/*` | Local config & restart | Local |
283
+
284
+ Key components:
285
+ - `EdgeNodeSignalHandler` (API Server) — receives heartbeats, triggers health checks and DNS synchronization
286
+ - `EdgeNodeSignalClient` (local/edge) — sends periodic heartbeats with system metrics, network info, and tunnel status
287
+
135
288
  ## Privacy & Compliance (GDPR)
136
289
 
137
290
  Xpod is designed for the post-GDPR world, where **Data Sovereignty** is paramount.
@@ -149,18 +302,26 @@ Xpod is designed for the post-GDPR world, where **Data Sovereignty** is paramoun
149
302
  - [x] Sidecar API: SPARQL (`/-/sparql`)
150
303
  - [x] Sidecar API: Vector (`/-/vector`)
151
304
  - [x] Cloud-Edge Cluster Architecture
152
- - [ ] Sidecar API: Chat Completions (`/-/chat/completions`)
153
- - [ ] Sidecar API: Responses (`/-/responses`)
305
+ - [x] API Server (dual-process architecture, separated from CSS)
306
+ - [x] Multi-Auth: Solid Token / API Key / Node Token
307
+ - [x] Edge Node Heartbeat + Health Check + DNS Sync
308
+ - [x] SP Provision & Pod Management
309
+ - [x] AI API: Chat Completions, Responses, Messages, Models (OpenAI-compatible, SSE streaming)
310
+ - [x] ChatKit API (conversation management)
311
+ - [x] Subdomain & DDNS Management
154
312
  - [ ] Sidecar API: Terminal (`/-/terminal`)
313
+ - [ ] Rate Limiting
155
314
  - [ ] Attribute-Based Access Control (ABAC)
156
315
  - [ ] Feature Store (Federated Learning)
157
316
 
158
317
  ## Documentation
159
318
 
160
319
  - [docs/COMPONENTS.md](docs/COMPONENTS.md) - Components.js reference and configuration patterns
320
+ - [docs/api-service-design.md](docs/api-service-design.md) - API Server architecture, routes, and auth design
161
321
  - [docs/deployment-modes.md](docs/deployment-modes.md) - Deployment profiles (local, cloud)
162
322
  - [docs/admin-guide.md](docs/admin-guide.md) - Admin initialization, roles, and reserved names
163
323
  - [docs/edge-cluster-architecture.md](docs/edge-cluster-architecture.md) - Cloud-edge coordination and routing
324
+ - [docs/edge-node-deployment-modes.md](docs/edge-node-deployment-modes.md) - Edge node deployment scenarios
164
325
  - [docs/sidecar-api.md](docs/sidecar-api.md) - Sidecar API pattern (`/-/{service}`)
165
326
  - [docs/sparql-support.md](docs/sparql-support.md) - SPARQL 1.1 support details
166
327
  - [docs/vector-api-server-guide.md](docs/vector-api-server-guide.md) - Vector search API guide
package/config/cli.json CHANGED
@@ -10,7 +10,7 @@
10
10
  "@type": "YargsCliExtractor",
11
11
  "parameters": [
12
12
  {
13
- "comment": "=== Visible CLI parameters ===",
13
+ "comment": "=== Visible CLI parameters (核心模式开关) ===",
14
14
  "@type": "YargsParameter",
15
15
  "name": "edition",
16
16
  "options": {
@@ -20,18 +20,19 @@
20
20
  },
21
21
  {
22
22
  "@type": "YargsParameter",
23
- "name": "edgeNodesEnabled",
23
+ "name": "authMode",
24
24
  "options": {
25
- "type": "boolean",
26
- "describe": "Enable edge node registry and routing."
25
+ "type": "string",
26
+ "describe": "Authorization mode: acp, acl, or allow-all",
27
+ "hidden": true
27
28
  }
28
29
  },
29
30
  {
30
31
  "@type": "YargsParameter",
31
- "name": "edgeAgentEnabled",
32
+ "name": "edgeNodesEnabled",
32
33
  "options": {
33
34
  "type": "boolean",
34
- "describe": "Enable local edge agent functionality."
35
+ "describe": "Enable edge node registry and routing."
35
36
  }
36
37
  },
37
38
  {
@@ -51,14 +52,6 @@
51
52
  "hidden": true
52
53
  }
53
54
  },
54
- {
55
- "@type": "YargsParameter",
56
- "name": "identityTablePrefix",
57
- "options": {
58
- "type": "string",
59
- "hidden": true
60
- }
61
- },
62
55
  {
63
56
  "@type": "YargsParameter",
64
57
  "name": "usageDbUrl",
@@ -99,22 +92,6 @@
99
92
  "hidden": true
100
93
  }
101
94
  },
102
- {
103
- "@type": "YargsParameter",
104
- "name": "cachePath",
105
- "options": {
106
- "type": "string",
107
- "hidden": true
108
- }
109
- },
110
- {
111
- "@type": "YargsParameter",
112
- "name": "cacheMaxSize",
113
- "options": {
114
- "type": "string",
115
- "hidden": true
116
- }
117
- },
118
95
  {
119
96
  "@type": "YargsParameter",
120
97
  "name": "redisClient",
@@ -173,14 +150,6 @@
173
150
  },
174
151
  {
175
152
  "comment": "=== Hidden: Business Features ===",
176
- "@type": "YargsParameter",
177
- "name": "signalEndpoint",
178
- "options": {
179
- "type": "string",
180
- "hidden": true
181
- }
182
- },
183
- {
184
153
  "@type": "YargsParameter",
185
154
  "name": "clusterIngressDomain",
186
155
  "options": {
@@ -196,14 +165,6 @@
196
165
  "hidden": true
197
166
  }
198
167
  },
199
- {
200
- "@type": "YargsParameter",
201
- "name": "dnsRootDomain",
202
- "options": {
203
- "type": "string",
204
- "hidden": true
205
- }
206
- },
207
168
  {
208
169
  "@type": "YargsParameter",
209
170
  "name": "dnsRecordTtl",
@@ -244,14 +205,6 @@
244
205
  "hidden": true
245
206
  }
246
207
  },
247
- {
248
- "@type": "YargsParameter",
249
- "name": "tunnelEntrypoints",
250
- "options": {
251
- "type": "string",
252
- "hidden": true
253
- }
254
- },
255
208
  {
256
209
  "@type": "YargsParameter",
257
210
  "name": "edgeHealthProbesEnabled",
@@ -308,22 +261,6 @@
308
261
  "hidden": true
309
262
  }
310
263
  },
311
- {
312
- "@type": "YargsParameter",
313
- "name": "nodeToken",
314
- "options": {
315
- "type": "string",
316
- "hidden": true
317
- }
318
- },
319
- {
320
- "@type": "YargsParameter",
321
- "name": "nodePublicAddress",
322
- "options": {
323
- "type": "string",
324
- "hidden": true
325
- }
326
- },
327
264
  {
328
265
  "@type": "YargsParameter",
329
266
  "name": "nodeHeartbeatInterval",
@@ -344,9 +281,10 @@
344
281
  {
345
282
  "comment": "=== Hidden: IdP/SP Separation ===",
346
283
  "@type": "YargsParameter",
347
- "name": "baseDomain",
284
+ "name": "baseStorageDomain",
348
285
  "options": {
349
286
  "type": "string",
287
+ "describe": "Root domain for edge/SP node DNS records (e.g. undefineds.site)",
350
288
  "hidden": true
351
289
  }
352
290
  },
package/config/cloud.json CHANGED
@@ -18,7 +18,7 @@
18
18
  "overrideParameters": {
19
19
  "@type": "WrappedExpiringReadWriteLocker",
20
20
  "locker": {
21
- "@type": "RedisLocker",
21
+ "@type": "UrlAwareRedisLocker",
22
22
  "redisClient": {
23
23
  "@id": "urn:solid-server:default:variable:redisClient",
24
24
  "@type": "Variable"
@@ -83,12 +83,11 @@
83
83
  ]
84
84
  },
85
85
  {
86
- "comment": "Default quota limits (in-memory overrides)",
86
+ "comment": "Quota service backed by identity DB, falls back to env defaults then unlimited",
87
87
  "@id": "urn:undefineds:xpod:QuotaService",
88
- "@type": "DefaultQuotaService",
89
- "DefaultQuotaService:_options_defaultAccountQuotaBytes": {
90
- "@type": "Literal",
91
- "value": 10737418240
88
+ "@type": "DrizzleQuotaService",
89
+ "DrizzleQuotaService:_options_identityDbUrl": {
90
+ "@id": "urn:solid-server:default:variable:identityDbUrl"
92
91
  }
93
92
  },
94
93
  {
@@ -126,7 +125,8 @@
126
125
  },
127
126
  "unstructuredDataAccessor": {
128
127
  "@id": "urn:undefineds:xpod:RemoteDataAccessor"
129
- }
128
+ },
129
+ "presignedRedirectEnabled": true
130
130
  },
131
131
  {
132
132
  "comment": "PgQuintStore instance for QuintStoreSparqlDataAccessor (PostgreSQL backend).",
@@ -511,6 +511,33 @@
511
511
  }
512
512
  ]
513
513
  }
514
+ },
515
+ {
516
+ "comment": "Override PodCreator with ProvisionPodCreator to support remote SP pod creation via provisionCode",
517
+ "@type": "Override",
518
+ "overrideInstance": {
519
+ "@id": "urn:solid-server:default:PodCreator"
520
+ },
521
+ "overrideParameters": {
522
+ "@type": "ProvisionPodCreator",
523
+ "baseUrl": { "@id": "urn:solid-server:default:variable:baseUrl" },
524
+ "identifierGenerator": { "@id": "urn:solid-server:default:IdentifierGenerator" },
525
+ "relativeWebIdPath": "/profile/card#me",
526
+ "webIdStore": { "@id": "urn:solid-server:default:WebIdStore" },
527
+ "podStore": { "@id": "urn:solid-server:default:PodStore" }
528
+ }
529
+ },
530
+ {
531
+ "comment": "Override create-pod template to pass provisionCode from sessionStorage into POST settings",
532
+ "@type": "Override",
533
+ "overrideInstance": {
534
+ "@id": "urn:solid-server:default:CreatePodHtml"
535
+ },
536
+ "overrideParameters": {
537
+ "@type": "HtmlViewEntry",
538
+ "filePath": "./templates/identity/account/create-pod.html.ejs",
539
+ "route": { "@id": "urn:solid-server:default:AccountPodRoute" }
540
+ }
514
541
  }
515
542
  ]
516
543
  }
package/config/local.json CHANGED
@@ -12,9 +12,13 @@
12
12
  ],
13
13
  "@graph": [
14
14
  {
15
- "comment": "Disable quota for local profile",
15
+ "comment": "Quota service backed by identity DB, no env defaults = unlimited",
16
16
  "@id": "urn:undefineds:xpod:QuotaService",
17
- "@type": "NoopQuotaService"
17
+ "@type": "DrizzleQuotaService",
18
+ "DrizzleQuotaService:_options_identityDbUrl": {
19
+ "@id": "urn:solid-server:default:variable:identityDbUrl",
20
+ "@type": "Variable"
21
+ }
18
22
  },
19
23
  {
20
24
  "comment": "定义 idpUrl 变量(外部 IdP 基础 URL),设置后启用 SP 模式",
@@ -10,7 +10,7 @@
10
10
  "@type": "CombinedShorthandResolver",
11
11
  "resolvers": [
12
12
  {
13
- "comment": "=== CLI Parameters (KeyExtractor, from Yargs args dict) ===",
13
+ "comment": "=== CLI Parameters (核心模式开关) ===",
14
14
  "CombinedShorthandResolver:_resolvers_key": "urn:solid-server:default:variable:edition",
15
15
  "CombinedShorthandResolver:_resolvers_value": {
16
16
  "@type": "KeyExtractor",
@@ -19,18 +19,18 @@
19
19
  }
20
20
  },
21
21
  {
22
- "CombinedShorthandResolver:_resolvers_key": "urn:solid-server:default:variable:edgeNodesEnabled",
22
+ "CombinedShorthandResolver:_resolvers_key": "urn:solid-server:default:variable:authMode",
23
23
  "CombinedShorthandResolver:_resolvers_value": {
24
24
  "@type": "KeyExtractor",
25
- "key": "edgeNodesEnabled",
26
- "defaultValue": "false"
25
+ "key": "authMode",
26
+ "defaultValue": "acp"
27
27
  }
28
28
  },
29
29
  {
30
- "CombinedShorthandResolver:_resolvers_key": "urn:solid-server:default:variable:edgeAgentEnabled",
30
+ "CombinedShorthandResolver:_resolvers_key": "urn:solid-server:default:variable:edgeNodesEnabled",
31
31
  "CombinedShorthandResolver:_resolvers_value": {
32
32
  "@type": "KeyExtractor",
33
- "key": "edgeAgentEnabled",
33
+ "key": "edgeNodesEnabled",
34
34
  "defaultValue": "false"
35
35
  }
36
36
  },
@@ -44,7 +44,7 @@
44
44
  },
45
45
 
46
46
  {
47
- "comment": "=== Data Layer (KeyExtractor, hidden CLI params with CSS_ prefix) ===",
47
+ "comment": "=== Data Layer ===",
48
48
  "CombinedShorthandResolver:_resolvers_key": "urn:solid-server:default:variable:identityDbUrl",
49
49
  "CombinedShorthandResolver:_resolvers_value": {
50
50
  "@type": "KeyExtractor",
@@ -147,15 +147,7 @@
147
147
  },
148
148
 
149
149
  {
150
- "comment": "=== Xpod Business Features (KeyExtractor, CSS_ prefix via Yargs) ===",
151
- "CombinedShorthandResolver:_resolvers_key": "urn:solid-server:default:variable:signalEndpoint",
152
- "CombinedShorthandResolver:_resolvers_value": {
153
- "@type": "KeyExtractor",
154
- "key": "signalEndpoint",
155
- "defaultValue": ""
156
- }
157
- },
158
- {
150
+ "comment": "=== Business Features ===",
159
151
  "CombinedShorthandResolver:_resolvers_key": "urn:solid-server:default:variable:clusterIngressDomain",
160
152
  "CombinedShorthandResolver:_resolvers_value": {
161
153
  "@type": "KeyExtractor",
@@ -171,13 +163,6 @@
171
163
  "defaultValue": ""
172
164
  }
173
165
  },
174
- {
175
- "CombinedShorthandResolver:_resolvers_key": "urn:solid-server:default:variable:dnsRootDomain",
176
- "CombinedShorthandResolver:_resolvers_value": {
177
- "@type": "KeyExtractor",
178
- "key": "dnsRootDomain"
179
- }
180
- },
181
166
  {
182
167
  "CombinedShorthandResolver:_resolvers_key": "urn:solid-server:default:variable:dnsRecordTtl",
183
168
  "CombinedShorthandResolver:_resolvers_value": {
@@ -218,14 +203,6 @@
218
203
  "defaultValue": "0"
219
204
  }
220
205
  },
221
- {
222
- "CombinedShorthandResolver:_resolvers_key": "urn:solid-server:default:variable:tunnelEntrypoints",
223
- "CombinedShorthandResolver:_resolvers_value": {
224
- "@type": "KeyExtractor",
225
- "key": "tunnelEntrypoints",
226
- "defaultValue": ""
227
- }
228
- },
229
206
  {
230
207
  "CombinedShorthandResolver:_resolvers_key": "urn:solid-server:default:variable:edgeHealthProbesEnabled",
231
208
  "CombinedShorthandResolver:_resolvers_value": {
@@ -284,22 +261,6 @@
284
261
  "defaultValue": ""
285
262
  }
286
263
  },
287
- {
288
- "CombinedShorthandResolver:_resolvers_key": "urn:solid-server:default:variable:nodeToken",
289
- "CombinedShorthandResolver:_resolvers_value": {
290
- "@type": "KeyExtractor",
291
- "key": "nodeToken",
292
- "defaultValue": ""
293
- }
294
- },
295
- {
296
- "CombinedShorthandResolver:_resolvers_key": "urn:solid-server:default:variable:nodePublicAddress",
297
- "CombinedShorthandResolver:_resolvers_value": {
298
- "@type": "KeyExtractor",
299
- "key": "nodePublicAddress",
300
- "defaultValue": ""
301
- }
302
- },
303
264
  {
304
265
  "CombinedShorthandResolver:_resolvers_key": "urn:solid-server:default:variable:nodeHeartbeatInterval",
305
266
  "CombinedShorthandResolver:_resolvers_value": {
@@ -316,12 +277,13 @@
316
277
  "defaultValue": "false"
317
278
  }
318
279
  },
280
+
319
281
  {
320
282
  "comment": "=== IdP/SP Separation Parameters ===",
321
- "CombinedShorthandResolver:_resolvers_key": "urn:solid-server:default:variable:baseDomain",
283
+ "CombinedShorthandResolver:_resolvers_key": "urn:solid-server:default:variable:baseStorageDomain",
322
284
  "CombinedShorthandResolver:_resolvers_value": {
323
285
  "@type": "KeyExtractor",
324
- "key": "baseDomain",
286
+ "key": "baseStorageDomain",
325
287
  "defaultValue": ""
326
288
  }
327
289
  },
@@ -0,0 +1,22 @@
1
+ {
2
+ "@context": [
3
+ "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^8.0.0/components/context.jsonld",
4
+ "https://linkedsoftwaredependencies.org/bundles/npm/asynchronous-handlers/^1.0.0/components/context.jsonld"
5
+ ],
6
+ "@graph": [
7
+ {
8
+ "comment": "Runtime-only override: disable auth resource handler in allow-all mode.",
9
+ "@type": "Override",
10
+ "overrideInstance": {
11
+ "@id": "urn:solid-server:default:AuthResourceHttpHandler"
12
+ },
13
+ "overrideParameters": {
14
+ "@type": "StaticThrowHandler",
15
+ "onlyHandle": false,
16
+ "factory": {
17
+ "@id": "urn:solid-server:default:UnsupportedErrorFactory"
18
+ }
19
+ }
20
+ }
21
+ ]
22
+ }
@@ -19,6 +19,38 @@
19
19
  "@id": "urn:solid-server:default:variable:edgeNodesEnabled",
20
20
  "@type": "Variable"
21
21
  },
22
+ {
23
+ "comment": "ACP permission reader clone for auth mode switching.",
24
+ "@id": "urn:undefineds:xpod:AcpPermissionReader",
25
+ "@type": "CachedHandler",
26
+ "fields": [
27
+ "credentials",
28
+ "requestedModes"
29
+ ],
30
+ "source": {
31
+ "@id": "urn:solid-server:default:AuxiliaryReader"
32
+ }
33
+ },
34
+ {
35
+ "comment": "Override default permission reader so tests can switch auth mode with a parameter.",
36
+ "@type": "Override",
37
+ "overrideInstance": {
38
+ "@id": "urn:solid-server:default:PermissionReader"
39
+ },
40
+ "overrideParameters": {
41
+ "@type": "AuthModeSelector",
42
+ "authMode": {
43
+ "@id": "urn:solid-server:default:variable:authMode",
44
+ "@type": "Variable"
45
+ },
46
+ "acpReader": {
47
+ "@id": "urn:undefineds:xpod:AcpPermissionReader"
48
+ },
49
+ "aclReader": {
50
+ "@id": "urn:undefineds:xpod:AcpPermissionReader"
51
+ }
52
+ }
53
+ },
22
54
  {
23
55
  "comment": "An accessor for a Quadstore",
24
56
  "@type": "QuadstoreSparqlDataAccessor",