@undefineds.co/xpod 0.2.34 → 0.2.36

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 (302) hide show
  1. package/dist/agents/schema/agent-config.js +1 -1
  2. package/dist/agents/schema/agent-config.js.map +1 -1
  3. package/dist/agents/schema/create-agent-schema.js +17 -16
  4. package/dist/agents/schema/create-agent-schema.js.map +1 -1
  5. package/dist/agents/schema/tables.js +1 -1
  6. package/dist/agents/schema/tables.js.map +1 -1
  7. package/dist/ai/schema/config.js +1 -1
  8. package/dist/ai/schema/config.js.map +1 -1
  9. package/dist/ai/schema/model.js +2 -2
  10. package/dist/ai/schema/model.js.map +1 -1
  11. package/dist/ai/schema/provider.js +1 -1
  12. package/dist/ai/schema/provider.js.map +1 -1
  13. package/dist/ai/schema/vector-store.js +2 -2
  14. package/dist/ai/schema/vector-store.js.map +1 -1
  15. package/dist/api/container/local.js +1 -5
  16. package/dist/api/container/local.js.map +1 -1
  17. package/dist/api/container/routes.js +16 -1
  18. package/dist/api/container/routes.js.map +1 -1
  19. package/dist/api/handlers/PodManagementHandler.d.ts +8 -0
  20. package/dist/api/handlers/PodManagementHandler.js +5 -3
  21. package/dist/api/handlers/PodManagementHandler.js.map +1 -1
  22. package/dist/api/handlers/WebIdProfileHandler.js +64 -6
  23. package/dist/api/handlers/WebIdProfileHandler.js.map +1 -1
  24. package/dist/api/runtime.js +11 -6
  25. package/dist/api/runtime.js.map +1 -1
  26. package/dist/components/components.jsonld +1 -0
  27. package/dist/components/context.jsonld +36 -0
  28. package/dist/credential/schema/tables.js +3 -3
  29. package/dist/credential/schema/tables.js.map +1 -1
  30. package/dist/edge/LocalNetworkManager.d.ts +2 -7
  31. package/dist/edge/LocalNetworkManager.js +7 -34
  32. package/dist/edge/LocalNetworkManager.js.map +1 -1
  33. package/dist/index.d.ts +2 -1
  34. package/dist/index.js +3 -1
  35. package/dist/index.js.map +1 -1
  36. package/dist/provision/LocalPodProvisioningService.d.ts +34 -0
  37. package/dist/provision/LocalPodProvisioningService.js +294 -0
  38. package/dist/provision/LocalPodProvisioningService.js.map +1 -0
  39. package/dist/provision/LocalPodProvisioningService.jsonld +142 -0
  40. package/dist/provision/ProvisionPodCreator.js +3 -4
  41. package/dist/provision/ProvisionPodCreator.js.map +1 -1
  42. package/dist/tunnel/LocalTunnelProvider.d.ts +2 -2
  43. package/dist/tunnel/LocalTunnelProvider.js +12 -14
  44. package/dist/tunnel/LocalTunnelProvider.js.map +1 -1
  45. package/dist/tunnel/TunnelProvider.d.ts +2 -0
  46. package/dist/tunnel/TunnelProvider.js.map +1 -1
  47. package/dist/tunnel/TunnelProvider.jsonld +4 -0
  48. package/package.json +2 -2
  49. package/node_modules/@undefineds.co/models/README.md +0 -578
  50. package/node_modules/@undefineds.co/models/dist/_drizzle-solid/columns.d.ts +0 -37
  51. package/node_modules/@undefineds.co/models/dist/_drizzle-solid/columns.js +0 -1
  52. package/node_modules/@undefineds.co/models/dist/_drizzle-solid/pod-table.d.ts +0 -3
  53. package/node_modules/@undefineds.co/models/dist/_drizzle-solid/pod-table.js +0 -1
  54. package/node_modules/@undefineds.co/models/dist/_drizzle-solid/types.d.ts +0 -40
  55. package/node_modules/@undefineds.co/models/dist/_drizzle-solid/types.js +0 -1
  56. package/node_modules/@undefineds.co/models/dist/agent.providers.d.ts +0 -13
  57. package/node_modules/@undefineds.co/models/dist/agent.providers.js +0 -69
  58. package/node_modules/@undefineds.co/models/dist/agent.repository.d.ts +0 -85
  59. package/node_modules/@undefineds.co/models/dist/agent.repository.js +0 -7
  60. package/node_modules/@undefineds.co/models/dist/agent.schema.d.ts +0 -1
  61. package/node_modules/@undefineds.co/models/dist/agent.schema.js +0 -1
  62. package/node_modules/@undefineds.co/models/dist/ai-config/index.d.ts +0 -61
  63. package/node_modules/@undefineds.co/models/dist/ai-config/index.js +0 -294
  64. package/node_modules/@undefineds.co/models/dist/ai-config.d.ts +0 -1
  65. package/node_modules/@undefineds.co/models/dist/ai-config.js +0 -1
  66. package/node_modules/@undefineds.co/models/dist/ai-model.schema.d.ts +0 -1
  67. package/node_modules/@undefineds.co/models/dist/ai-model.schema.js +0 -1
  68. package/node_modules/@undefineds.co/models/dist/ai-provider.schema.d.ts +0 -1
  69. package/node_modules/@undefineds.co/models/dist/ai-provider.schema.js +0 -1
  70. package/node_modules/@undefineds.co/models/dist/approval.schema.d.ts +0 -1
  71. package/node_modules/@undefineds.co/models/dist/approval.schema.js +0 -1
  72. package/node_modules/@undefineds.co/models/dist/audit.schema.d.ts +0 -1
  73. package/node_modules/@undefineds.co/models/dist/audit.schema.js +0 -1
  74. package/node_modules/@undefineds.co/models/dist/chat.repository.d.ts +0 -61
  75. package/node_modules/@undefineds.co/models/dist/chat.repository.js +0 -8
  76. package/node_modules/@undefineds.co/models/dist/chat.schema.d.ts +0 -1
  77. package/node_modules/@undefineds.co/models/dist/chat.schema.js +0 -1
  78. package/node_modules/@undefineds.co/models/dist/chat.utils.d.ts +0 -3
  79. package/node_modules/@undefineds.co/models/dist/chat.utils.js +0 -30
  80. package/node_modules/@undefineds.co/models/dist/contact.repository.d.ts +0 -85
  81. package/node_modules/@undefineds.co/models/dist/contact.repository.js +0 -8
  82. package/node_modules/@undefineds.co/models/dist/contact.schema.d.ts +0 -1
  83. package/node_modules/@undefineds.co/models/dist/contact.schema.js +0 -1
  84. package/node_modules/@undefineds.co/models/dist/core/agent-provider.schema.d.ts +0 -1
  85. package/node_modules/@undefineds.co/models/dist/core/agent-provider.schema.js +0 -1
  86. package/node_modules/@undefineds.co/models/dist/core/agent-status.schema.d.ts +0 -12
  87. package/node_modules/@undefineds.co/models/dist/core/agent-status.schema.js +0 -18
  88. package/node_modules/@undefineds.co/models/dist/core/agent.schema.d.ts +0 -72
  89. package/node_modules/@undefineds.co/models/dist/core/agent.schema.js +0 -38
  90. package/node_modules/@undefineds.co/models/dist/core/ai-config.schema.d.ts +0 -11
  91. package/node_modules/@undefineds.co/models/dist/core/ai-config.schema.js +0 -18
  92. package/node_modules/@undefineds.co/models/dist/core/ai-model.schema.d.ts +0 -15
  93. package/node_modules/@undefineds.co/models/dist/core/ai-model.schema.js +0 -21
  94. package/node_modules/@undefineds.co/models/dist/core/ai-provider.schema.d.ts +0 -16
  95. package/node_modules/@undefineds.co/models/dist/core/ai-provider.schema.js +0 -28
  96. package/node_modules/@undefineds.co/models/dist/core/approval.schema.d.ts +0 -21
  97. package/node_modules/@undefineds.co/models/dist/core/approval.schema.js +0 -33
  98. package/node_modules/@undefineds.co/models/dist/core/audit.schema.d.ts +0 -17
  99. package/node_modules/@undefineds.co/models/dist/core/audit.schema.js +0 -29
  100. package/node_modules/@undefineds.co/models/dist/core/chat.schema.d.ts +0 -36
  101. package/node_modules/@undefineds.co/models/dist/core/chat.schema.js +0 -45
  102. package/node_modules/@undefineds.co/models/dist/core/contact.schema.d.ts +0 -47
  103. package/node_modules/@undefineds.co/models/dist/core/contact.schema.js +0 -59
  104. package/node_modules/@undefineds.co/models/dist/core/credential.schema.d.ts +0 -56
  105. package/node_modules/@undefineds.co/models/dist/core/credential.schema.js +0 -40
  106. package/node_modules/@undefineds.co/models/dist/core/extension/extension.schema.d.ts +0 -4
  107. package/node_modules/@undefineds.co/models/dist/core/extension/extension.schema.js +0 -11
  108. package/node_modules/@undefineds.co/models/dist/core/extension/index.d.ts +0 -1
  109. package/node_modules/@undefineds.co/models/dist/core/extension/index.js +0 -1
  110. package/node_modules/@undefineds.co/models/dist/core/extension.d.ts +0 -1
  111. package/node_modules/@undefineds.co/models/dist/core/extension.js +0 -1
  112. package/node_modules/@undefineds.co/models/dist/core/favorite/favorite.schema.d.ts +0 -24
  113. package/node_modules/@undefineds.co/models/dist/core/favorite/favorite.schema.js +0 -34
  114. package/node_modules/@undefineds.co/models/dist/core/favorite/index.d.ts +0 -1
  115. package/node_modules/@undefineds.co/models/dist/core/favorite/index.js +0 -1
  116. package/node_modules/@undefineds.co/models/dist/core/file/file.schema.d.ts +0 -39
  117. package/node_modules/@undefineds.co/models/dist/core/file/file.schema.js +0 -51
  118. package/node_modules/@undefineds.co/models/dist/core/file/index.d.ts +0 -1
  119. package/node_modules/@undefineds.co/models/dist/core/file/index.js +0 -1
  120. package/node_modules/@undefineds.co/models/dist/core/file.d.ts +0 -1
  121. package/node_modules/@undefineds.co/models/dist/core/file.js +0 -1
  122. package/node_modules/@undefineds.co/models/dist/core/grant.schema.d.ts +0 -16
  123. package/node_modules/@undefineds.co/models/dist/core/grant.schema.js +0 -29
  124. package/node_modules/@undefineds.co/models/dist/core/import/import-job.schema.d.ts +0 -5
  125. package/node_modules/@undefineds.co/models/dist/core/import/import-job.schema.js +0 -5
  126. package/node_modules/@undefineds.co/models/dist/core/import/index.d.ts +0 -1
  127. package/node_modules/@undefineds.co/models/dist/core/import/index.js +0 -1
  128. package/node_modules/@undefineds.co/models/dist/core/import.d.ts +0 -1
  129. package/node_modules/@undefineds.co/models/dist/core/import.js +0 -1
  130. package/node_modules/@undefineds.co/models/dist/core/inbox-notification.schema.d.ts +0 -9
  131. package/node_modules/@undefineds.co/models/dist/core/inbox-notification.schema.js +0 -16
  132. package/node_modules/@undefineds.co/models/dist/core/index.d.ts +0 -31
  133. package/node_modules/@undefineds.co/models/dist/core/index.js +0 -32
  134. package/node_modules/@undefineds.co/models/dist/core/knowledge/index.d.ts +0 -1
  135. package/node_modules/@undefineds.co/models/dist/core/knowledge/index.js +0 -1
  136. package/node_modules/@undefineds.co/models/dist/core/knowledge/knowledge-folder.schema.d.ts +0 -7
  137. package/node_modules/@undefineds.co/models/dist/core/knowledge/knowledge-folder.schema.js +0 -6
  138. package/node_modules/@undefineds.co/models/dist/core/knowledge.d.ts +0 -1
  139. package/node_modules/@undefineds.co/models/dist/core/knowledge.js +0 -1
  140. package/node_modules/@undefineds.co/models/dist/core/message.schema.d.ts +0 -33
  141. package/node_modules/@undefineds.co/models/dist/core/message.schema.js +0 -49
  142. package/node_modules/@undefineds.co/models/dist/core/namespaces.d.ts +0 -176
  143. package/node_modules/@undefineds.co/models/dist/core/namespaces.js +0 -289
  144. package/node_modules/@undefineds.co/models/dist/core/profile.d.ts +0 -16
  145. package/node_modules/@undefineds.co/models/dist/core/profile.js +0 -19
  146. package/node_modules/@undefineds.co/models/dist/core/schema.d.ts +0 -304
  147. package/node_modules/@undefineds.co/models/dist/core/schema.js +0 -46
  148. package/node_modules/@undefineds.co/models/dist/core/session/index.d.ts +0 -1
  149. package/node_modules/@undefineds.co/models/dist/core/session/index.js +0 -1
  150. package/node_modules/@undefineds.co/models/dist/core/session/session.schema.d.ts +0 -6
  151. package/node_modules/@undefineds.co/models/dist/core/session/session.schema.js +0 -6
  152. package/node_modules/@undefineds.co/models/dist/core/session.d.ts +0 -1
  153. package/node_modules/@undefineds.co/models/dist/core/session.js +0 -1
  154. package/node_modules/@undefineds.co/models/dist/core/settings/index.d.ts +0 -1
  155. package/node_modules/@undefineds.co/models/dist/core/settings/index.js +0 -1
  156. package/node_modules/@undefineds.co/models/dist/core/settings/settings.schema.d.ts +0 -49
  157. package/node_modules/@undefineds.co/models/dist/core/settings/settings.schema.js +0 -63
  158. package/node_modules/@undefineds.co/models/dist/core/settings.d.ts +0 -1
  159. package/node_modules/@undefineds.co/models/dist/core/settings.js +0 -1
  160. package/node_modules/@undefineds.co/models/dist/core/thread.schema.d.ts +0 -28
  161. package/node_modules/@undefineds.co/models/dist/core/thread.schema.js +0 -36
  162. package/node_modules/@undefineds.co/models/dist/core/types/collaboration-blocks.d.ts +0 -52
  163. package/node_modules/@undefineds.co/models/dist/core/types/collaboration-blocks.js +0 -7
  164. package/node_modules/@undefineds.co/models/dist/core/types/message-block.d.ts +0 -270
  165. package/node_modules/@undefineds.co/models/dist/core/types/message-block.js +0 -125
  166. package/node_modules/@undefineds.co/models/dist/core/vector-store.schema.d.ts +0 -25
  167. package/node_modules/@undefineds.co/models/dist/core/vector-store.schema.js +0 -35
  168. package/node_modules/@undefineds.co/models/dist/core/vocab/_namespaces.d.ts +0 -1
  169. package/node_modules/@undefineds.co/models/dist/core/vocab/_namespaces.js +0 -3
  170. package/node_modules/@undefineds.co/models/dist/core/vocab/chat.vocab.d.ts +0 -16
  171. package/node_modules/@undefineds.co/models/dist/core/vocab/chat.vocab.js +0 -22
  172. package/node_modules/@undefineds.co/models/dist/core/vocab/contact.vocab.d.ts +0 -21
  173. package/node_modules/@undefineds.co/models/dist/core/vocab/contact.vocab.js +0 -22
  174. package/node_modules/@undefineds.co/models/dist/core/vocab/index.d.ts +0 -6
  175. package/node_modules/@undefineds.co/models/dist/core/vocab/index.js +0 -6
  176. package/node_modules/@undefineds.co/models/dist/core/vocab/message.vocab.d.ts +0 -20
  177. package/node_modules/@undefineds.co/models/dist/core/vocab/message.vocab.js +0 -24
  178. package/node_modules/@undefineds.co/models/dist/core/vocab/sidecar.vocab.d.ts +0 -46
  179. package/node_modules/@undefineds.co/models/dist/core/vocab/sidecar.vocab.js +0 -47
  180. package/node_modules/@undefineds.co/models/dist/core/vocab/thread.vocab.d.ts +0 -11
  181. package/node_modules/@undefineds.co/models/dist/core/vocab/thread.vocab.js +0 -14
  182. package/node_modules/@undefineds.co/models/dist/core/vocab/workspace.vocab.d.ts +0 -12
  183. package/node_modules/@undefineds.co/models/dist/core/vocab/workspace.vocab.js +0 -13
  184. package/node_modules/@undefineds.co/models/dist/core/vocab.d.ts +0 -1
  185. package/node_modules/@undefineds.co/models/dist/core/vocab.js +0 -1
  186. package/node_modules/@undefineds.co/models/dist/core/workspace.schema.d.ts +0 -35
  187. package/node_modules/@undefineds.co/models/dist/core/workspace.schema.js +0 -106
  188. package/node_modules/@undefineds.co/models/dist/core.d.ts +0 -1
  189. package/node_modules/@undefineds.co/models/dist/core.js +0 -1
  190. package/node_modules/@undefineds.co/models/dist/credential.schema.d.ts +0 -1
  191. package/node_modules/@undefineds.co/models/dist/credential.schema.js +0 -1
  192. package/node_modules/@undefineds.co/models/dist/discovery/index.d.ts +0 -31
  193. package/node_modules/@undefineds.co/models/dist/discovery/index.js +0 -147
  194. package/node_modules/@undefineds.co/models/dist/discovery/models.json +0 -2623
  195. package/node_modules/@undefineds.co/models/dist/discovery/providers.json +0 -156
  196. package/node_modules/@undefineds.co/models/dist/discovery/types.d.ts +0 -103
  197. package/node_modules/@undefineds.co/models/dist/discovery/types.js +0 -12
  198. package/node_modules/@undefineds.co/models/dist/discovery/vercel.d.ts +0 -25
  199. package/node_modules/@undefineds.co/models/dist/discovery/vercel.js +0 -95
  200. package/node_modules/@undefineds.co/models/dist/discovery.d.ts +0 -1
  201. package/node_modules/@undefineds.co/models/dist/discovery.js +0 -1
  202. package/node_modules/@undefineds.co/models/dist/extension/extension.schema.d.ts +0 -1
  203. package/node_modules/@undefineds.co/models/dist/extension/extension.schema.js +0 -1
  204. package/node_modules/@undefineds.co/models/dist/extension/index.d.ts +0 -1
  205. package/node_modules/@undefineds.co/models/dist/extension/index.js +0 -1
  206. package/node_modules/@undefineds.co/models/dist/extension.d.ts +0 -1
  207. package/node_modules/@undefineds.co/models/dist/extension.js +0 -1
  208. package/node_modules/@undefineds.co/models/dist/favorite/favorite.schema.d.ts +0 -1
  209. package/node_modules/@undefineds.co/models/dist/favorite/favorite.schema.js +0 -1
  210. package/node_modules/@undefineds.co/models/dist/favorite/index.d.ts +0 -2
  211. package/node_modules/@undefineds.co/models/dist/favorite/index.js +0 -7
  212. package/node_modules/@undefineds.co/models/dist/favorite/starred-sync.d.ts +0 -66
  213. package/node_modules/@undefineds.co/models/dist/favorite/starred-sync.js +0 -156
  214. package/node_modules/@undefineds.co/models/dist/favorite.d.ts +0 -1
  215. package/node_modules/@undefineds.co/models/dist/favorite.js +0 -1
  216. package/node_modules/@undefineds.co/models/dist/file/file.schema.d.ts +0 -1
  217. package/node_modules/@undefineds.co/models/dist/file/file.schema.js +0 -1
  218. package/node_modules/@undefineds.co/models/dist/file/index.d.ts +0 -1
  219. package/node_modules/@undefineds.co/models/dist/file/index.js +0 -1
  220. package/node_modules/@undefineds.co/models/dist/file.d.ts +0 -1
  221. package/node_modules/@undefineds.co/models/dist/file.js +0 -1
  222. package/node_modules/@undefineds.co/models/dist/fixtures/contracts-chat-contact.d.ts +0 -13
  223. package/node_modules/@undefineds.co/models/dist/fixtures/contracts-chat-contact.js +0 -76
  224. package/node_modules/@undefineds.co/models/dist/grant.schema.d.ts +0 -1
  225. package/node_modules/@undefineds.co/models/dist/grant.schema.js +0 -1
  226. package/node_modules/@undefineds.co/models/dist/import/import-job.schema.d.ts +0 -5
  227. package/node_modules/@undefineds.co/models/dist/import/import-job.schema.js +0 -5
  228. package/node_modules/@undefineds.co/models/dist/import/index.d.ts +0 -1
  229. package/node_modules/@undefineds.co/models/dist/import/index.js +0 -1
  230. package/node_modules/@undefineds.co/models/dist/import.d.ts +0 -1
  231. package/node_modules/@undefineds.co/models/dist/import.js +0 -1
  232. package/node_modules/@undefineds.co/models/dist/inbox-notification.schema.d.ts +0 -1
  233. package/node_modules/@undefineds.co/models/dist/inbox-notification.schema.js +0 -1
  234. package/node_modules/@undefineds.co/models/dist/index.d.ts +0 -41
  235. package/node_modules/@undefineds.co/models/dist/index.js +0 -83
  236. package/node_modules/@undefineds.co/models/dist/knowledge/index.d.ts +0 -1
  237. package/node_modules/@undefineds.co/models/dist/knowledge/index.js +0 -1
  238. package/node_modules/@undefineds.co/models/dist/knowledge/knowledge-folder.schema.d.ts +0 -1
  239. package/node_modules/@undefineds.co/models/dist/knowledge/knowledge-folder.schema.js +0 -1
  240. package/node_modules/@undefineds.co/models/dist/knowledge.d.ts +0 -1
  241. package/node_modules/@undefineds.co/models/dist/knowledge.js +0 -1
  242. package/node_modules/@undefineds.co/models/dist/message.repository.d.ts +0 -81
  243. package/node_modules/@undefineds.co/models/dist/message.repository.js +0 -8
  244. package/node_modules/@undefineds.co/models/dist/message.schema.d.ts +0 -1
  245. package/node_modules/@undefineds.co/models/dist/message.schema.js +0 -1
  246. package/node_modules/@undefineds.co/models/dist/namespaces.d.ts +0 -1
  247. package/node_modules/@undefineds.co/models/dist/namespaces.js +0 -1
  248. package/node_modules/@undefineds.co/models/dist/profile.d.ts +0 -1
  249. package/node_modules/@undefineds.co/models/dist/profile.js +0 -1
  250. package/node_modules/@undefineds.co/models/dist/repository.d.ts +0 -59
  251. package/node_modules/@undefineds.co/models/dist/repository.js +0 -186
  252. package/node_modules/@undefineds.co/models/dist/schema.d.ts +0 -1
  253. package/node_modules/@undefineds.co/models/dist/schema.js +0 -1
  254. package/node_modules/@undefineds.co/models/dist/session/index.d.ts +0 -1
  255. package/node_modules/@undefineds.co/models/dist/session/index.js +0 -1
  256. package/node_modules/@undefineds.co/models/dist/session/session.schema.d.ts +0 -1
  257. package/node_modules/@undefineds.co/models/dist/session/session.schema.js +0 -1
  258. package/node_modules/@undefineds.co/models/dist/session.d.ts +0 -1
  259. package/node_modules/@undefineds.co/models/dist/session.js +0 -1
  260. package/node_modules/@undefineds.co/models/dist/settings/index.d.ts +0 -1
  261. package/node_modules/@undefineds.co/models/dist/settings/index.js +0 -1
  262. package/node_modules/@undefineds.co/models/dist/settings/settings.schema.d.ts +0 -1
  263. package/node_modules/@undefineds.co/models/dist/settings/settings.schema.js +0 -1
  264. package/node_modules/@undefineds.co/models/dist/settings.d.ts +0 -1
  265. package/node_modules/@undefineds.co/models/dist/settings.js +0 -1
  266. package/node_modules/@undefineds.co/models/dist/sidecar/index.d.ts +0 -2
  267. package/node_modules/@undefineds.co/models/dist/sidecar/index.js +0 -2
  268. package/node_modules/@undefineds.co/models/dist/sidecar/persistence-mapping.d.ts +0 -51
  269. package/node_modules/@undefineds.co/models/dist/sidecar/persistence-mapping.js +0 -44
  270. package/node_modules/@undefineds.co/models/dist/sidecar/sidecar-events.d.ts +0 -632
  271. package/node_modules/@undefineds.co/models/dist/sidecar/sidecar-events.js +0 -133
  272. package/node_modules/@undefineds.co/models/dist/thread.repository.d.ts +0 -41
  273. package/node_modules/@undefineds.co/models/dist/thread.repository.js +0 -8
  274. package/node_modules/@undefineds.co/models/dist/thread.schema.d.ts +0 -1
  275. package/node_modules/@undefineds.co/models/dist/thread.schema.js +0 -1
  276. package/node_modules/@undefineds.co/models/dist/types/collaboration-blocks.d.ts +0 -52
  277. package/node_modules/@undefineds.co/models/dist/types/collaboration-blocks.js +0 -7
  278. package/node_modules/@undefineds.co/models/dist/types/message-block.d.ts +0 -270
  279. package/node_modules/@undefineds.co/models/dist/types/message-block.js +0 -125
  280. package/node_modules/@undefineds.co/models/dist/vocab/_namespaces.d.ts +0 -1
  281. package/node_modules/@undefineds.co/models/dist/vocab/_namespaces.js +0 -3
  282. package/node_modules/@undefineds.co/models/dist/vocab/chat.vocab.d.ts +0 -16
  283. package/node_modules/@undefineds.co/models/dist/vocab/chat.vocab.js +0 -22
  284. package/node_modules/@undefineds.co/models/dist/vocab/contact.vocab.d.ts +0 -21
  285. package/node_modules/@undefineds.co/models/dist/vocab/contact.vocab.js +0 -22
  286. package/node_modules/@undefineds.co/models/dist/vocab/index.d.ts +0 -6
  287. package/node_modules/@undefineds.co/models/dist/vocab/index.js +0 -6
  288. package/node_modules/@undefineds.co/models/dist/vocab/message.vocab.d.ts +0 -20
  289. package/node_modules/@undefineds.co/models/dist/vocab/message.vocab.js +0 -24
  290. package/node_modules/@undefineds.co/models/dist/vocab/sidecar.vocab.d.ts +0 -46
  291. package/node_modules/@undefineds.co/models/dist/vocab/sidecar.vocab.js +0 -47
  292. package/node_modules/@undefineds.co/models/dist/vocab/thread.vocab.d.ts +0 -11
  293. package/node_modules/@undefineds.co/models/dist/vocab/thread.vocab.js +0 -14
  294. package/node_modules/@undefineds.co/models/dist/vocab/workspace.vocab.d.ts +0 -12
  295. package/node_modules/@undefineds.co/models/dist/vocab/workspace.vocab.js +0 -13
  296. package/node_modules/@undefineds.co/models/dist/vocab.d.ts +0 -1
  297. package/node_modules/@undefineds.co/models/dist/vocab.js +0 -1
  298. package/node_modules/@undefineds.co/models/dist/workspace.repository.d.ts +0 -45
  299. package/node_modules/@undefineds.co/models/dist/workspace.repository.js +0 -8
  300. package/node_modules/@undefineds.co/models/dist/workspace.schema.d.ts +0 -1
  301. package/node_modules/@undefineds.co/models/dist/workspace.schema.js +0 -1
  302. package/node_modules/@undefineds.co/models/package.json +0 -67
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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","sourcesContent":["import './runtime/configure-drizzle-solid';\nimport { RepresentationPartialConvertingStore } from './storage/RepresentationPartialConvertingStore';\nimport { MinioDataAccessor } from './storage/accessors/MinioDataAccessor';\nimport { QuadstoreSparqlDataAccessor } from './storage/accessors/QuadstoreSparqlDataAccessor';\nimport { QuintStoreSparqlDataAccessor } from './storage/accessors/QuintStoreSparqlDataAccessor';\nimport { MixDataAccessor } from './storage/accessors/MixDataAccessor';\nimport { ConfigurableLoggerFactory } from './logging/ConfigurableLoggerFactory';\nimport { SubgraphQueryEngine, QuadstoreSparqlEngine, QuintstoreSparqlEngine } from './storage/sparql/SubgraphQueryEngine';\nexport type { SparqlEngine } from './storage/sparql/SubgraphQueryEngine';\nimport { SubgraphSparqlHttpHandler } from './http/SubgraphSparqlHttpHandler';\nimport { QuotaAdminHttpHandler } from './http/quota/QuotaAdminHttpHandler';\nimport { SparqlUpdateResourceStore } from './storage/SparqlUpdateResourceStore';\nimport { ClusterIngressRouter } from './http/ClusterIngressRouter';\nimport { ClusterWebSocketConfigurator } from './http/ClusterWebSocketConfigurator';\nimport { EdgeNodeDirectDebugHttpHandler } from './http/EdgeNodeDirectDebugHttpHandler';\nimport { EdgeNodeProxyHttpHandler } from './http/EdgeNodeProxyHttpHandler';\nimport { RouterHttpHandler } from './http/RouterHttpHandler';\nimport { RouterHttpRoute } from './http/RouterHttpRoute';\nimport { TracingHandler } from './http/TracingHandler';\nimport { TerminalHttpHandler } from './http/terminal/TerminalHttpHandler';\nimport { EdgeNodeCertificateHttpHandler } from './http/admin/EdgeNodeCertificateHttpHandler';\nimport { ReservedSuffixIdentifierGenerator } from './pods/ReservedSuffixIdentifierGenerator';\nimport { DrizzleIndexedStorage } from './identity/drizzle/DrizzleIndexedStorage';\nimport { WebIdProfileRepository } from './identity/drizzle/WebIdProfileRepository';\nimport { PostgresKeyValueStorage } from './storage/keyvalue/PostgresKeyValueStorage';\nimport { RedisKeyValueStorage } from './storage/keyvalue/RedisKeyValueStorage';\nimport { SqliteKeyValueStorage } from './storage/keyvalue/SqliteKeyValueStorage';\nimport { DrizzleQuotaService } from './quota/DrizzleQuotaService';\nimport { NoopQuotaService } from './quota/NoopQuotaService';\nimport { HttpEntitlementProvider, NoopEntitlementProvider } from './quota/EntitlementProvider';\nimport { PerAccountQuotaStrategy } from './storage/quota/PerAccountQuotaStrategy';\nimport { TencentDnsProvider } from './dns/tencent/TencentDnsProvider';\nimport { EdgeNodeDnsCoordinator } from './edge/EdgeNodeDnsCoordinator';\nimport { Dns01CertificateProvisioner } from './edge/Dns01CertificateProvisioner';\nimport { SimpleEdgeNodeTunnelManager, NoopEdgeNodeTunnelManager } from './edge/EdgeNodeTunnelManager';\nimport { FrpTunnelManager } from './edge/FrpTunnelManager';\nimport { AcmeCertificateManager } from './edge/acme/AcmeCertificateManager';\nimport { EdgeNodeHealthProbeService } from './edge/EdgeNodeHealthProbeService';\nimport { EdgeNodeAgent } from './edge/EdgeNodeAgent';\nimport { EdgeNodeCertificateService } from './service/EdgeNodeCertificateService';\nimport { createBandwidthThrottleTransform } from './util/stream/BandwidthThrottleTransform';\nimport { UsageTrackingStore } from './storage/quota/UsageTrackingStore';\nimport { EdgeNodeModeDetector } from './edge/EdgeNodeModeDetector';\nimport { ClusterIdentifierStrategy } from './util/identifiers/ClusterIdentifierStrategy';\nimport { CenterNodeRegistrationService } from './identity/CenterNodeRegistrationService';\nimport { PodRoutingHttpHandler } from './http/PodRoutingHttpHandler';\nimport { ReactAppViewHandler } from './identity/ReactAppViewHandler';\nimport { SqliteQuintStore } from './storage/quint/SqliteQuintStore';\nimport { PgQuintStore } from './storage/quint/PgQuintStore';\nimport { BaseQuintStore } from './storage/quint/BaseQuintStore';\nimport { QuintStore } from './storage/quint/types';\nimport type { EdgeNodeCertificateProvisioner } from './edge/EdgeNodeCertificateProvisioner';\n// Vector components\nimport { SqliteVectorStore, PostgresVectorStore } from './storage/vector/index';\nimport { VectorHttpHandler } from './http/vector/VectorHttpHandler';\nimport { ProviderRegistry } from './ai/service/ProviderRegistry';\nimport { ProviderRegistryImpl } from './ai/service/ProviderRegistryImpl';\nimport { EmbeddingService } from './ai/service/EmbeddingService';\nimport { EmbeddingServiceImpl } from './ai/service/EmbeddingServiceImpl';\nimport { CredentialReader } from './ai/service/CredentialReader';\nimport { CredentialReaderImpl } from './ai/service/CredentialReaderImpl';\nimport { VectorStore } from './storage/vector/VectorStore';\n// Tunnel and Subdomain components\nimport { CloudflareTunnelProvider } from './tunnel/CloudflareTunnelProvider';\nimport { LocalTunnelProvider } from './tunnel/LocalTunnelProvider';\nimport { SubdomainService } from './subdomain/SubdomainService';\nimport { UrlAwareRedisLocker } from './storage/locking/UrlAwareRedisLocker';\n// IdP/SP separation components\nimport { MultiDomainIdentifierStrategy } from './util/identifiers/MultiDomainIdentifierStrategy';\nimport { SubdomainPodIdentifierStrategy } from './util/identifiers/SubdomainPodIdentifierStrategy';\nimport { DisabledOidcHandler } from './identity/oidc/DisabledOidcHandler';\nimport { DisabledIdentityProviderHandler } from './identity/oidc/DisabledIdentityProviderHandler';\nimport { AutoDetectOidcHandler } from './identity/oidc/AutoDetectOidcHandler';\nimport { AutoDetectIdentityProviderHandler } from './identity/oidc/AutoDetectIdentityProviderHandler';\nimport { LoopbackClientIdAdapterFactory } from './identity/oidc/LoopbackClientIdAdapterFactory';\n// Provision components\nimport { ProvisionPodCreator } from './provision/ProvisionPodCreator';\nimport { ProvisionCodeCodec } from './provision/ProvisionCodeCodec';\n// Authorization components\nimport { AuthModeSelector } from './authorization/AuthModeSelector';\nexport type {\n DnsProvider,\n ListDnsRecordsInput,\n ListableDnsProvider,\n DeleteDnsRecordInput,\n DnsRecordSummary,\n UpsertDnsRecordInput,\n} from './dns/DnsProvider';\nexport type { EdgeNodeCertificateProvisioner } from './edge/EdgeNodeCertificateProvisioner';\nexport type { EdgeNodeTunnelManager } from './edge/interfaces/EdgeNodeTunnelManager';\nexport type { QuotaService, AccountQuota } from './quota/QuotaService';\nexport type { EntitlementProvider, AccountEntitlement } from './quota/EntitlementProvider';\n// Tunnel and Subdomain types\nexport type {\n TunnelProvider,\n TunnelConfig,\n TunnelSetupOptions,\n TunnelStatus,\n} from './tunnel/TunnelProvider';\nexport type {\n SubdomainRegistration,\n ConnectivityResult,\n SubdomainServiceOptions,\n} from './subdomain/SubdomainService';\n// Export the new AppStaticAssetHandler\nexport { AppStaticAssetHandler } from './http/AppStaticAssetHandler';\n\nexport { \n RepresentationPartialConvertingStore,\n MinioDataAccessor, \n QuadstoreSparqlDataAccessor,\n QuintStoreSparqlDataAccessor,\n MixDataAccessor,\n ConfigurableLoggerFactory,\n SparqlUpdateResourceStore,\n SubgraphQueryEngine,\n QuadstoreSparqlEngine,\n QuintstoreSparqlEngine,\n SubgraphSparqlHttpHandler,\n QuotaAdminHttpHandler,\n ClusterIngressRouter,\n ClusterWebSocketConfigurator,\n EdgeNodeDirectDebugHttpHandler,\n EdgeNodeProxyHttpHandler,\n RouterHttpHandler,\n RouterHttpRoute,\n TracingHandler,\n EdgeNodeCertificateHttpHandler,\n TerminalHttpHandler,\n ReservedSuffixIdentifierGenerator,\n DrizzleIndexedStorage,\n WebIdProfileRepository,\n PostgresKeyValueStorage,\n RedisKeyValueStorage,\n SqliteKeyValueStorage,\n DrizzleQuotaService,\n NoopQuotaService,\n HttpEntitlementProvider,\n NoopEntitlementProvider,\n PerAccountQuotaStrategy,\n TencentDnsProvider,\n EdgeNodeDnsCoordinator,\n Dns01CertificateProvisioner,\n SimpleEdgeNodeTunnelManager,\n NoopEdgeNodeTunnelManager,\n FrpTunnelManager,\n EdgeNodeHealthProbeService,\n EdgeNodeAgent,\n EdgeNodeCertificateService,\n AcmeCertificateManager,\n EdgeNodeModeDetector,\n ClusterIdentifierStrategy,\n UsageTrackingStore,\n CenterNodeRegistrationService,\n PodRoutingHttpHandler,\n ReactAppViewHandler,\n // Quint exports\n QuintStore,\n SqliteQuintStore,\n PgQuintStore,\n BaseQuintStore,\n // Vector exports\n VectorStore,\n SqliteVectorStore,\n PostgresVectorStore,\n VectorHttpHandler,\n // Embedding exports\n ProviderRegistry,\n ProviderRegistryImpl,\n EmbeddingService,\n EmbeddingServiceImpl,\n CredentialReader,\n CredentialReaderImpl,\n // Tunnel and Subdomain exports\n CloudflareTunnelProvider,\n LocalTunnelProvider,\n SubdomainService,\n // IdP/SP separation exports\n MultiDomainIdentifierStrategy,\n SubdomainPodIdentifierStrategy,\n DisabledOidcHandler,\n DisabledIdentityProviderHandler,\n AutoDetectOidcHandler,\n AutoDetectIdentityProviderHandler,\n LoopbackClientIdAdapterFactory,\n UrlAwareRedisLocker,\n // Provision exports\n ProvisionPodCreator,\n ProvisionCodeCodec,\n // Authorization exports\n AuthModeSelector,\n};\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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","sourcesContent":["import './runtime/configure-drizzle-solid';\nimport { RepresentationPartialConvertingStore } from './storage/RepresentationPartialConvertingStore';\nimport { MinioDataAccessor } from './storage/accessors/MinioDataAccessor';\nimport { QuadstoreSparqlDataAccessor } from './storage/accessors/QuadstoreSparqlDataAccessor';\nimport { QuintStoreSparqlDataAccessor } from './storage/accessors/QuintStoreSparqlDataAccessor';\nimport { MixDataAccessor } from './storage/accessors/MixDataAccessor';\nimport { ConfigurableLoggerFactory } from './logging/ConfigurableLoggerFactory';\nimport { SubgraphQueryEngine, QuadstoreSparqlEngine, QuintstoreSparqlEngine } from './storage/sparql/SubgraphQueryEngine';\nexport type { SparqlEngine } from './storage/sparql/SubgraphQueryEngine';\nimport { SubgraphSparqlHttpHandler } from './http/SubgraphSparqlHttpHandler';\nimport { QuotaAdminHttpHandler } from './http/quota/QuotaAdminHttpHandler';\nimport { SparqlUpdateResourceStore } from './storage/SparqlUpdateResourceStore';\nimport { ClusterIngressRouter } from './http/ClusterIngressRouter';\nimport { ClusterWebSocketConfigurator } from './http/ClusterWebSocketConfigurator';\nimport { EdgeNodeDirectDebugHttpHandler } from './http/EdgeNodeDirectDebugHttpHandler';\nimport { EdgeNodeProxyHttpHandler } from './http/EdgeNodeProxyHttpHandler';\nimport { RouterHttpHandler } from './http/RouterHttpHandler';\nimport { RouterHttpRoute } from './http/RouterHttpRoute';\nimport { TracingHandler } from './http/TracingHandler';\nimport { TerminalHttpHandler } from './http/terminal/TerminalHttpHandler';\nimport { EdgeNodeCertificateHttpHandler } from './http/admin/EdgeNodeCertificateHttpHandler';\nimport { ReservedSuffixIdentifierGenerator } from './pods/ReservedSuffixIdentifierGenerator';\nimport { DrizzleIndexedStorage } from './identity/drizzle/DrizzleIndexedStorage';\nimport { WebIdProfileRepository } from './identity/drizzle/WebIdProfileRepository';\nimport { PostgresKeyValueStorage } from './storage/keyvalue/PostgresKeyValueStorage';\nimport { RedisKeyValueStorage } from './storage/keyvalue/RedisKeyValueStorage';\nimport { SqliteKeyValueStorage } from './storage/keyvalue/SqliteKeyValueStorage';\nimport { DrizzleQuotaService } from './quota/DrizzleQuotaService';\nimport { NoopQuotaService } from './quota/NoopQuotaService';\nimport { HttpEntitlementProvider, NoopEntitlementProvider } from './quota/EntitlementProvider';\nimport { PerAccountQuotaStrategy } from './storage/quota/PerAccountQuotaStrategy';\nimport { TencentDnsProvider } from './dns/tencent/TencentDnsProvider';\nimport { EdgeNodeDnsCoordinator } from './edge/EdgeNodeDnsCoordinator';\nimport { Dns01CertificateProvisioner } from './edge/Dns01CertificateProvisioner';\nimport { SimpleEdgeNodeTunnelManager, NoopEdgeNodeTunnelManager } from './edge/EdgeNodeTunnelManager';\nimport { FrpTunnelManager } from './edge/FrpTunnelManager';\nimport { AcmeCertificateManager } from './edge/acme/AcmeCertificateManager';\nimport { EdgeNodeHealthProbeService } from './edge/EdgeNodeHealthProbeService';\nimport { EdgeNodeAgent } from './edge/EdgeNodeAgent';\nimport { EdgeNodeCertificateService } from './service/EdgeNodeCertificateService';\nimport { createBandwidthThrottleTransform } from './util/stream/BandwidthThrottleTransform';\nimport { UsageTrackingStore } from './storage/quota/UsageTrackingStore';\nimport { EdgeNodeModeDetector } from './edge/EdgeNodeModeDetector';\nimport { ClusterIdentifierStrategy } from './util/identifiers/ClusterIdentifierStrategy';\nimport { CenterNodeRegistrationService } from './identity/CenterNodeRegistrationService';\nimport { PodRoutingHttpHandler } from './http/PodRoutingHttpHandler';\nimport { ReactAppViewHandler } from './identity/ReactAppViewHandler';\nimport { SqliteQuintStore } from './storage/quint/SqliteQuintStore';\nimport { PgQuintStore } from './storage/quint/PgQuintStore';\nimport { BaseQuintStore } from './storage/quint/BaseQuintStore';\nimport { QuintStore } from './storage/quint/types';\nimport type { EdgeNodeCertificateProvisioner } from './edge/EdgeNodeCertificateProvisioner';\n// Vector components\nimport { SqliteVectorStore, PostgresVectorStore } from './storage/vector/index';\nimport { VectorHttpHandler } from './http/vector/VectorHttpHandler';\nimport { ProviderRegistry } from './ai/service/ProviderRegistry';\nimport { ProviderRegistryImpl } from './ai/service/ProviderRegistryImpl';\nimport { EmbeddingService } from './ai/service/EmbeddingService';\nimport { EmbeddingServiceImpl } from './ai/service/EmbeddingServiceImpl';\nimport { CredentialReader } from './ai/service/CredentialReader';\nimport { CredentialReaderImpl } from './ai/service/CredentialReaderImpl';\nimport { VectorStore } from './storage/vector/VectorStore';\n// Tunnel and Subdomain components\nimport { CloudflareTunnelProvider } from './tunnel/CloudflareTunnelProvider';\nimport { LocalTunnelProvider } from './tunnel/LocalTunnelProvider';\nimport { SubdomainService } from './subdomain/SubdomainService';\nimport { UrlAwareRedisLocker } from './storage/locking/UrlAwareRedisLocker';\n// IdP/SP separation components\nimport { MultiDomainIdentifierStrategy } from './util/identifiers/MultiDomainIdentifierStrategy';\nimport { SubdomainPodIdentifierStrategy } from './util/identifiers/SubdomainPodIdentifierStrategy';\nimport { DisabledOidcHandler } from './identity/oidc/DisabledOidcHandler';\nimport { DisabledIdentityProviderHandler } from './identity/oidc/DisabledIdentityProviderHandler';\nimport { AutoDetectOidcHandler } from './identity/oidc/AutoDetectOidcHandler';\nimport { AutoDetectIdentityProviderHandler } from './identity/oidc/AutoDetectIdentityProviderHandler';\nimport { LoopbackClientIdAdapterFactory } from './identity/oidc/LoopbackClientIdAdapterFactory';\n// Provision components\nimport { ProvisionPodCreator } from './provision/ProvisionPodCreator';\nimport { ProvisionCodeCodec } from './provision/ProvisionCodeCodec';\nimport { LocalPodProvisioningService } from './provision/LocalPodProvisioningService';\n// Authorization components\nimport { AuthModeSelector } from './authorization/AuthModeSelector';\nexport type {\n DnsProvider,\n ListDnsRecordsInput,\n ListableDnsProvider,\n DeleteDnsRecordInput,\n DnsRecordSummary,\n UpsertDnsRecordInput,\n} from './dns/DnsProvider';\nexport type { EdgeNodeCertificateProvisioner } from './edge/EdgeNodeCertificateProvisioner';\nexport type { EdgeNodeTunnelManager } from './edge/interfaces/EdgeNodeTunnelManager';\nexport type { QuotaService, AccountQuota } from './quota/QuotaService';\nexport type { EntitlementProvider, AccountEntitlement } from './quota/EntitlementProvider';\n// Tunnel and Subdomain types\nexport type {\n TunnelProvider,\n TunnelConfig,\n TunnelSetupOptions,\n TunnelStatus,\n} from './tunnel/TunnelProvider';\nexport type {\n SubdomainRegistration,\n ConnectivityResult,\n SubdomainServiceOptions,\n} from './subdomain/SubdomainService';\n// Export the new AppStaticAssetHandler\nexport { AppStaticAssetHandler } from './http/AppStaticAssetHandler';\n\nexport { \n RepresentationPartialConvertingStore,\n MinioDataAccessor, \n QuadstoreSparqlDataAccessor,\n QuintStoreSparqlDataAccessor,\n MixDataAccessor,\n ConfigurableLoggerFactory,\n SparqlUpdateResourceStore,\n SubgraphQueryEngine,\n QuadstoreSparqlEngine,\n QuintstoreSparqlEngine,\n SubgraphSparqlHttpHandler,\n QuotaAdminHttpHandler,\n ClusterIngressRouter,\n ClusterWebSocketConfigurator,\n EdgeNodeDirectDebugHttpHandler,\n EdgeNodeProxyHttpHandler,\n RouterHttpHandler,\n RouterHttpRoute,\n TracingHandler,\n EdgeNodeCertificateHttpHandler,\n TerminalHttpHandler,\n ReservedSuffixIdentifierGenerator,\n DrizzleIndexedStorage,\n WebIdProfileRepository,\n PostgresKeyValueStorage,\n RedisKeyValueStorage,\n SqliteKeyValueStorage,\n DrizzleQuotaService,\n NoopQuotaService,\n HttpEntitlementProvider,\n NoopEntitlementProvider,\n PerAccountQuotaStrategy,\n TencentDnsProvider,\n EdgeNodeDnsCoordinator,\n Dns01CertificateProvisioner,\n SimpleEdgeNodeTunnelManager,\n NoopEdgeNodeTunnelManager,\n FrpTunnelManager,\n EdgeNodeHealthProbeService,\n EdgeNodeAgent,\n EdgeNodeCertificateService,\n AcmeCertificateManager,\n EdgeNodeModeDetector,\n ClusterIdentifierStrategy,\n UsageTrackingStore,\n CenterNodeRegistrationService,\n PodRoutingHttpHandler,\n ReactAppViewHandler,\n // Quint exports\n QuintStore,\n SqliteQuintStore,\n PgQuintStore,\n BaseQuintStore,\n // Vector exports\n VectorStore,\n SqliteVectorStore,\n PostgresVectorStore,\n VectorHttpHandler,\n // Embedding exports\n ProviderRegistry,\n ProviderRegistryImpl,\n EmbeddingService,\n EmbeddingServiceImpl,\n CredentialReader,\n CredentialReaderImpl,\n // Tunnel and Subdomain exports\n CloudflareTunnelProvider,\n LocalTunnelProvider,\n SubdomainService,\n // IdP/SP separation exports\n MultiDomainIdentifierStrategy,\n SubdomainPodIdentifierStrategy,\n DisabledOidcHandler,\n DisabledIdentityProviderHandler,\n AutoDetectOidcHandler,\n AutoDetectIdentityProviderHandler,\n LoopbackClientIdAdapterFactory,\n UrlAwareRedisLocker,\n // Provision exports\n ProvisionPodCreator,\n ProvisionCodeCodec,\n LocalPodProvisioningService,\n // Authorization exports\n AuthModeSelector,\n};\n"]}
@@ -0,0 +1,34 @@
1
+ export interface LocalPodProvisioningInput {
2
+ podName: string;
3
+ webId?: string;
4
+ initialResources?: Record<string, string>;
5
+ }
6
+ export interface LocalPodProvisioningResult {
7
+ podUrl: string;
8
+ accountId: string;
9
+ podId: string;
10
+ }
11
+ export interface LocalPodProvisioningServiceOptions {
12
+ baseUrl: string;
13
+ rootDir: string;
14
+ sparqlEndpoint: string;
15
+ identityDbUrl: string;
16
+ oidcIssuer?: string;
17
+ }
18
+ export declare class LocalPodProvisioningService {
19
+ private readonly logger;
20
+ private readonly baseUrl;
21
+ private readonly rootDir;
22
+ private readonly sparqlDbPath;
23
+ private readonly identityDbPath;
24
+ private readonly oidcIssuer?;
25
+ private readonly sqliteRuntime;
26
+ constructor(options: LocalPodProvisioningServiceOptions);
27
+ createPod(input: LocalPodProvisioningInput): Promise<LocalPodProvisioningResult>;
28
+ private createPodFiles;
29
+ private writeQuints;
30
+ private buildPodQuads;
31
+ private addRootAcrQuads;
32
+ private addPublicReadAcrQuads;
33
+ private writeIdentityIndexes;
34
+ }
@@ -0,0 +1,294 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.LocalPodProvisioningService = void 0;
7
+ const node_crypto_1 = require("node:crypto");
8
+ const node_fs_1 = require("node:fs");
9
+ const node_path_1 = __importDefault(require("node:path"));
10
+ const n3_1 = require("n3");
11
+ const global_logger_factory_1 = require("global-logger-factory");
12
+ const serialization_1 = require("../storage/quint/serialization");
13
+ const SqliteRuntime_1 = require("../storage/SqliteRuntime");
14
+ const RDF = 'http://www.w3.org/1999/02/22-rdf-syntax-ns#';
15
+ const LDP = 'http://www.w3.org/ns/ldp#';
16
+ const DCT = 'http://purl.org/dc/terms/';
17
+ const MA = 'http://www.w3.org/ns/ma-ont#';
18
+ const PIM = 'http://www.w3.org/ns/pim/space#';
19
+ const FOAF = 'http://xmlns.com/foaf/0.1/';
20
+ const SOLID = 'http://www.w3.org/ns/solid/terms#';
21
+ const ACL = 'http://www.w3.org/ns/auth/acl#';
22
+ const ACP = 'http://www.w3.org/ns/solid/acp#';
23
+ const { blankNode, literal, namedNode, quad } = n3_1.DataFactory;
24
+ function ensureTrailingSlash(url) {
25
+ return url.endsWith('/') ? url : `${url}/`;
26
+ }
27
+ function stripSqlitePrefix(value, label) {
28
+ if (value.startsWith('sqlite:')) {
29
+ return value.slice('sqlite:'.length);
30
+ }
31
+ if (value === ':memory:') {
32
+ return value;
33
+ }
34
+ if (/^[a-z][a-z0-9+.-]*:/iu.test(value)) {
35
+ throw new Error(`${label} must be a sqlite URL for local Pod provisioning: ${value}`);
36
+ }
37
+ return value;
38
+ }
39
+ function stableUuid(input) {
40
+ const hex = (0, node_crypto_1.createHash)('sha256').update(input).digest('hex').slice(0, 32);
41
+ return [
42
+ hex.slice(0, 8),
43
+ hex.slice(8, 12),
44
+ `4${hex.slice(13, 16)}`,
45
+ `${((Number.parseInt(hex.slice(16, 18), 16) & 0x3f) | 0x80).toString(16).padStart(2, '0')}${hex.slice(18, 20)}`,
46
+ hex.slice(20, 32),
47
+ ].join('-');
48
+ }
49
+ function inferIssuerFromWebId(webId) {
50
+ if (!webId) {
51
+ return undefined;
52
+ }
53
+ try {
54
+ const url = new URL(webId);
55
+ return `${url.origin}/`;
56
+ }
57
+ catch {
58
+ return undefined;
59
+ }
60
+ }
61
+ function buildWebIdFromIssuer(oidcIssuer, podName) {
62
+ if (!oidcIssuer) {
63
+ return undefined;
64
+ }
65
+ return new URL(`${encodeURIComponent(podName)}/profile/card#me`, ensureTrailingSlash(oidcIssuer)).toString();
66
+ }
67
+ function createQuintsTable(db) {
68
+ db.exec(`
69
+ CREATE TABLE IF NOT EXISTS quints (
70
+ graph TEXT NOT NULL,
71
+ subject TEXT NOT NULL,
72
+ predicate TEXT NOT NULL,
73
+ object TEXT NOT NULL,
74
+ vector TEXT,
75
+ PRIMARY KEY (graph, subject, predicate, object)
76
+ );
77
+
78
+ CREATE INDEX IF NOT EXISTS idx_spog ON quints (subject, predicate, object, graph);
79
+ CREATE INDEX IF NOT EXISTS idx_ogsp ON quints (object, graph, subject, predicate);
80
+ CREATE INDEX IF NOT EXISTS idx_gspo ON quints (graph, subject, predicate, object);
81
+ CREATE INDEX IF NOT EXISTS idx_sopg ON quints (subject, object, predicate, graph);
82
+ CREATE INDEX IF NOT EXISTS idx_pogs ON quints (predicate, object, graph, subject);
83
+ CREATE INDEX IF NOT EXISTS idx_gpos ON quints (graph, predicate, object, subject);
84
+ `);
85
+ }
86
+ function createInternalKvTable(db) {
87
+ db.exec(`
88
+ CREATE TABLE IF NOT EXISTS internal_kv (
89
+ key TEXT PRIMARY KEY,
90
+ value TEXT NOT NULL,
91
+ updated_at TEXT NOT NULL DEFAULT (datetime('now'))
92
+ );
93
+ `);
94
+ }
95
+ function meta(resource) {
96
+ return `meta:${resource}`;
97
+ }
98
+ function iri(base, relative) {
99
+ return new URL(relative, base).toString();
100
+ }
101
+ class LocalPodProvisioningService {
102
+ constructor(options) {
103
+ this.logger = (0, global_logger_factory_1.getLoggerFor)(this);
104
+ this.sqliteRuntime = (0, SqliteRuntime_1.getSqliteRuntime)();
105
+ this.baseUrl = ensureTrailingSlash(options.baseUrl);
106
+ this.rootDir = options.rootDir;
107
+ this.sparqlDbPath = stripSqlitePrefix(options.sparqlEndpoint, 'sparqlEndpoint');
108
+ this.identityDbPath = stripSqlitePrefix(options.identityDbUrl, 'identityDbUrl');
109
+ this.oidcIssuer = options.oidcIssuer ? ensureTrailingSlash(options.oidcIssuer) : undefined;
110
+ }
111
+ async createPod(input) {
112
+ const podUrl = ensureTrailingSlash(new URL(`${encodeURIComponent(input.podName)}/`, this.baseUrl).toString());
113
+ const webId = input.webId ?? buildWebIdFromIssuer(this.oidcIssuer, input.podName) ?? `${podUrl}profile/card#me`;
114
+ const oidcIssuer = this.oidcIssuer ?? inferIssuerFromWebId(webId) ?? this.baseUrl;
115
+ const accountId = stableUuid(`account:${podUrl}:${webId}`);
116
+ const podId = stableUuid(`pod:${podUrl}:${webId}`);
117
+ const ownerId = stableUuid(`owner:${podId}:${webId}`);
118
+ const webIdLinkId = stableUuid(`webIdLink:${accountId}:${webId}`);
119
+ await this.createPodFiles(input.podName, input.initialResources);
120
+ this.writeQuints({ podUrl, webId, oidcIssuer });
121
+ this.writeIdentityIndexes({ accountId, podId, ownerId, webIdLinkId, podUrl, webId });
122
+ this.logger.info(`Provisioned local pod ${podUrl} for ${webId}`);
123
+ return { podUrl, accountId, podId };
124
+ }
125
+ async createPodFiles(podName, initialResources) {
126
+ const podPath = node_path_1.default.join(this.rootDir, podName);
127
+ await node_fs_1.promises.mkdir(node_path_1.default.join(podPath, 'profile'), { recursive: true });
128
+ if (!initialResources) {
129
+ return;
130
+ }
131
+ for (const [filename, content] of Object.entries(initialResources)) {
132
+ const normalized = node_path_1.default.normalize(filename);
133
+ if (normalized.startsWith('..') || node_path_1.default.isAbsolute(normalized)) {
134
+ throw new Error(`Invalid initial resource path: ${filename}`);
135
+ }
136
+ const filePath = node_path_1.default.join(podPath, normalized);
137
+ await node_fs_1.promises.mkdir(node_path_1.default.dirname(filePath), { recursive: true });
138
+ await node_fs_1.promises.writeFile(filePath, content, 'utf8');
139
+ }
140
+ }
141
+ writeQuints(input) {
142
+ const db = this.sqliteRuntime.openDatabase(this.sparqlDbPath);
143
+ try {
144
+ createQuintsTable(db);
145
+ const rows = this.buildPodQuads(input).map((entry) => {
146
+ const row = (0, serialization_1.quadToRow)(entry);
147
+ return [row.graph, row.subject, row.predicate, row.object, row.vector];
148
+ });
149
+ const insert = db.prepare(`
150
+ INSERT OR IGNORE INTO quints (graph, subject, predicate, object, vector)
151
+ VALUES (?, ?, ?, ?, ?)
152
+ `);
153
+ db.transaction(() => {
154
+ for (const row of rows) {
155
+ insert.run(...row);
156
+ }
157
+ })();
158
+ }
159
+ finally {
160
+ db.close();
161
+ }
162
+ }
163
+ buildPodQuads({ podUrl, webId, oidcIssuer }) {
164
+ const now = new Date().toISOString();
165
+ const root = this.baseUrl;
166
+ const profileUrl = iri(podUrl, 'profile/');
167
+ const cardUrl = iri(podUrl, 'profile/card');
168
+ const rootAcrUrl = iri(podUrl, '.acr');
169
+ const cardAcrUrl = iri(podUrl, 'profile/card.acr');
170
+ const rootGraph = namedNode(root);
171
+ const podGraph = namedNode(podUrl);
172
+ const profileGraph = namedNode(profileUrl);
173
+ const cardGraph = namedNode(cardUrl);
174
+ const rootAcrGraph = namedNode(rootAcrUrl);
175
+ const cardAcrGraph = namedNode(cardAcrUrl);
176
+ const out = [];
177
+ const add = (graph, subject, predicate, object) => {
178
+ out.push(quad(namedNode(subject), namedNode(predicate), namedNode(object), namedNode(graph)));
179
+ };
180
+ const addLiteral = (graph, subject, predicate, value) => {
181
+ out.push(quad(namedNode(subject), namedNode(predicate), literal(value), namedNode(graph)));
182
+ };
183
+ const addDate = (graph, subject) => {
184
+ out.push(quad(namedNode(subject), namedNode(`${DCT}modified`), literal(now, namedNode('http://www.w3.org/2001/XMLSchema#dateTime')), namedNode(graph)));
185
+ };
186
+ const addContainerMeta = (resource, storage = false) => {
187
+ const graph = meta(resource);
188
+ addDate(graph, resource);
189
+ add(graph, resource, `${RDF}type`, `${LDP}Resource`);
190
+ add(graph, resource, `${RDF}type`, `${LDP}Container`);
191
+ add(graph, resource, `${RDF}type`, `${LDP}BasicContainer`);
192
+ if (storage) {
193
+ add(graph, resource, `${RDF}type`, `${PIM}Storage`);
194
+ }
195
+ addLiteral(graph, resource, `${MA}format`, 'internal/quads');
196
+ };
197
+ const addDocumentMeta = (resource) => {
198
+ const graph = meta(resource);
199
+ addDate(graph, resource);
200
+ add(graph, resource, `${RDF}type`, `${LDP}Resource`);
201
+ };
202
+ out.push(quad(namedNode(root), namedNode(`${LDP}contains`), namedNode(podUrl), rootGraph));
203
+ out.push(quad(namedNode(podUrl), namedNode(`${LDP}contains`), namedNode(rootAcrUrl), podGraph));
204
+ out.push(quad(namedNode(podUrl), namedNode(`${LDP}contains`), namedNode(profileUrl), podGraph));
205
+ out.push(quad(namedNode(profileUrl), namedNode(`${LDP}contains`), namedNode(cardUrl), profileGraph));
206
+ out.push(quad(namedNode(profileUrl), namedNode(`${LDP}contains`), namedNode(cardAcrUrl), profileGraph));
207
+ addContainerMeta(root);
208
+ addContainerMeta(podUrl, true);
209
+ addContainerMeta(profileUrl);
210
+ addDocumentMeta(rootAcrUrl);
211
+ addDocumentMeta(cardUrl);
212
+ addDocumentMeta(cardAcrUrl);
213
+ out.push(quad(namedNode(cardUrl), namedNode(`${RDF}type`), namedNode(`${FOAF}PersonalProfileDocument`), cardGraph));
214
+ out.push(quad(namedNode(cardUrl), namedNode(`${FOAF}maker`), namedNode(webId), cardGraph));
215
+ out.push(quad(namedNode(cardUrl), namedNode(`${FOAF}primaryTopic`), namedNode(webId), cardGraph));
216
+ out.push(quad(namedNode(webId), namedNode(`${RDF}type`), namedNode(`${FOAF}Person`), cardGraph));
217
+ out.push(quad(namedNode(webId), namedNode(`${SOLID}oidcIssuer`), namedNode(oidcIssuer), cardGraph));
218
+ this.addRootAcrQuads(out, rootAcrGraph, rootAcrUrl, podUrl, webId);
219
+ this.addPublicReadAcrQuads(out, cardAcrGraph, cardAcrUrl, cardUrl);
220
+ return out;
221
+ }
222
+ addRootAcrQuads(out, graph, acrUrl, podUrl, webId) {
223
+ const root = namedNode(`${acrUrl}#root`);
224
+ const publicRead = namedNode(`${acrUrl}#publicReadAccess`);
225
+ const fullOwner = namedNode(`${acrUrl}#fullOwnerAccess`);
226
+ const publicPolicy = blankNode(`public-policy-${stableUuid(acrUrl)}`);
227
+ const publicMatcher = blankNode(`public-matcher-${stableUuid(acrUrl)}`);
228
+ const ownerPolicy = blankNode(`owner-policy-${stableUuid(acrUrl)}`);
229
+ const ownerMatcher = blankNode(`owner-matcher-${stableUuid(acrUrl)}`);
230
+ out.push(quad(root, namedNode(`${RDF}type`), namedNode(`${ACP}AccessControlResource`), graph), quad(root, namedNode(`${ACP}resource`), namedNode(podUrl), graph), quad(root, namedNode(`${ACP}accessControl`), publicRead, graph), quad(root, namedNode(`${ACP}accessControl`), fullOwner, graph), quad(root, namedNode(`${ACP}memberAccessControl`), fullOwner, graph), quad(publicRead, namedNode(`${RDF}type`), namedNode(`${ACP}AccessControl`), graph), quad(publicRead, namedNode(`${ACP}apply`), publicPolicy, graph), quad(publicPolicy, namedNode(`${RDF}type`), namedNode(`${ACP}Policy`), graph), quad(publicPolicy, namedNode(`${ACP}allow`), namedNode(`${ACL}Read`), graph), quad(publicPolicy, namedNode(`${ACP}anyOf`), publicMatcher, graph), quad(publicMatcher, namedNode(`${RDF}type`), namedNode(`${ACP}Matcher`), graph), quad(publicMatcher, namedNode(`${ACP}agent`), namedNode(`${ACP}PublicAgent`), graph), quad(fullOwner, namedNode(`${RDF}type`), namedNode(`${ACP}AccessControl`), graph), quad(fullOwner, namedNode(`${ACP}apply`), ownerPolicy, graph), quad(ownerPolicy, namedNode(`${RDF}type`), namedNode(`${ACP}Policy`), graph), quad(ownerPolicy, namedNode(`${ACP}allow`), namedNode(`${ACL}Read`), graph), quad(ownerPolicy, namedNode(`${ACP}allow`), namedNode(`${ACL}Write`), graph), quad(ownerPolicy, namedNode(`${ACP}allow`), namedNode(`${ACL}Control`), graph), quad(ownerPolicy, namedNode(`${ACP}anyOf`), ownerMatcher, graph), quad(ownerMatcher, namedNode(`${RDF}type`), namedNode(`${ACP}Matcher`), graph), quad(ownerMatcher, namedNode(`${ACP}agent`), namedNode(webId), graph));
231
+ }
232
+ addPublicReadAcrQuads(out, graph, acrUrl, resourceUrl) {
233
+ const card = namedNode(`${acrUrl}#card`);
234
+ const publicRead = namedNode(`${acrUrl}#publicReadAccess`);
235
+ const policy = blankNode(`card-policy-${stableUuid(acrUrl)}`);
236
+ const matcher = blankNode(`card-matcher-${stableUuid(acrUrl)}`);
237
+ out.push(quad(card, namedNode(`${RDF}type`), namedNode(`${ACP}AccessControlResource`), graph), quad(card, namedNode(`${ACP}resource`), namedNode(resourceUrl), graph), quad(card, namedNode(`${ACP}accessControl`), publicRead, graph), quad(publicRead, namedNode(`${RDF}type`), namedNode(`${ACP}AccessControl`), graph), quad(publicRead, namedNode(`${ACP}apply`), policy, graph), quad(policy, namedNode(`${RDF}type`), namedNode(`${ACP}Policy`), graph), quad(policy, namedNode(`${ACP}allow`), namedNode(`${ACL}Read`), graph), quad(policy, namedNode(`${ACP}anyOf`), matcher, graph), quad(matcher, namedNode(`${RDF}type`), namedNode(`${ACP}Matcher`), graph), quad(matcher, namedNode(`${ACP}agent`), namedNode(`${ACP}PublicAgent`), graph));
238
+ }
239
+ writeIdentityIndexes(input) {
240
+ const db = this.sqliteRuntime.openDatabase(this.identityDbPath);
241
+ try {
242
+ createInternalKvTable(db);
243
+ const account = {
244
+ linkedLoginsCount: 1,
245
+ id: input.accountId,
246
+ '**pod**': {
247
+ [input.podId]: {
248
+ baseUrl: input.podUrl,
249
+ accountId: input.accountId,
250
+ id: input.podId,
251
+ '**owner**': {
252
+ [input.ownerId]: {
253
+ podId: input.podId,
254
+ webId: input.webId,
255
+ visible: false,
256
+ id: input.ownerId,
257
+ },
258
+ },
259
+ },
260
+ },
261
+ '**webIdLink**': {
262
+ [input.webIdLinkId]: {
263
+ webId: input.webId,
264
+ accountId: input.accountId,
265
+ id: input.webIdLinkId,
266
+ },
267
+ },
268
+ };
269
+ const rows = [
270
+ [`accounts/data/${input.accountId}`, JSON.stringify(account)],
271
+ [`accounts/index/pod/${input.podId}`, JSON.stringify([input.accountId])],
272
+ [`accounts/index/pod/baseUrl/${encodeURIComponent(input.podUrl)}`, JSON.stringify([input.accountId])],
273
+ [`accounts/index/owner/${input.ownerId}`, JSON.stringify([input.accountId])],
274
+ [`accounts/index/webIdLink/${input.webIdLinkId}`, JSON.stringify([input.accountId])],
275
+ [`accounts/index/webIdLink/webId/${encodeURIComponent(input.webId)}`, JSON.stringify([input.accountId])],
276
+ ];
277
+ const insert = db.prepare(`
278
+ INSERT INTO internal_kv (key, value, updated_at)
279
+ VALUES (?, ?, datetime('now'))
280
+ ON CONFLICT (key) DO UPDATE SET value = excluded.value, updated_at = datetime('now')
281
+ `);
282
+ db.transaction(() => {
283
+ for (const row of rows) {
284
+ insert.run(...row);
285
+ }
286
+ })();
287
+ }
288
+ finally {
289
+ db.close();
290
+ }
291
+ }
292
+ }
293
+ exports.LocalPodProvisioningService = LocalPodProvisioningService;
294
+ //# sourceMappingURL=LocalPodProvisioningService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LocalPodProvisioningService.js","sourceRoot":"","sources":["../../src/provision/LocalPodProvisioningService.ts"],"names":[],"mappings":"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","sourcesContent":["import { createHash } from 'node:crypto';\nimport { promises as fs } from 'node:fs';\nimport path from 'node:path';\nimport { DataFactory } from 'n3';\nimport type { Quad } from '@rdfjs/types';\nimport { getLoggerFor } from 'global-logger-factory';\nimport { quadToRow } from '../storage/quint/serialization';\nimport { getSqliteRuntime, type SqliteDatabase } from '../storage/SqliteRuntime';\n\nconst RDF = 'http://www.w3.org/1999/02/22-rdf-syntax-ns#';\nconst LDP = 'http://www.w3.org/ns/ldp#';\nconst DCT = 'http://purl.org/dc/terms/';\nconst MA = 'http://www.w3.org/ns/ma-ont#';\nconst PIM = 'http://www.w3.org/ns/pim/space#';\nconst FOAF = 'http://xmlns.com/foaf/0.1/';\nconst SOLID = 'http://www.w3.org/ns/solid/terms#';\nconst ACL = 'http://www.w3.org/ns/auth/acl#';\nconst ACP = 'http://www.w3.org/ns/solid/acp#';\n\nconst { blankNode, literal, namedNode, quad } = DataFactory;\n\nexport interface LocalPodProvisioningInput {\n podName: string;\n webId?: string;\n initialResources?: Record<string, string>;\n}\n\nexport interface LocalPodProvisioningResult {\n podUrl: string;\n accountId: string;\n podId: string;\n}\n\nexport interface LocalPodProvisioningServiceOptions {\n baseUrl: string;\n rootDir: string;\n sparqlEndpoint: string;\n identityDbUrl: string;\n oidcIssuer?: string;\n}\n\nfunction ensureTrailingSlash(url: string): string {\n return url.endsWith('/') ? url : `${url}/`;\n}\n\nfunction stripSqlitePrefix(value: string, label: string): string {\n if (value.startsWith('sqlite:')) {\n return value.slice('sqlite:'.length);\n }\n if (value === ':memory:') {\n return value;\n }\n if (/^[a-z][a-z0-9+.-]*:/iu.test(value)) {\n throw new Error(`${label} must be a sqlite URL for local Pod provisioning: ${value}`);\n }\n return value;\n}\n\nfunction stableUuid(input: string): string {\n const hex = createHash('sha256').update(input).digest('hex').slice(0, 32);\n return [\n hex.slice(0, 8),\n hex.slice(8, 12),\n `4${hex.slice(13, 16)}`,\n `${((Number.parseInt(hex.slice(16, 18), 16) & 0x3f) | 0x80).toString(16).padStart(2, '0')}${hex.slice(18, 20)}`,\n hex.slice(20, 32),\n ].join('-');\n}\n\nfunction inferIssuerFromWebId(webId: string | undefined): string | undefined {\n if (!webId) {\n return undefined;\n }\n try {\n const url = new URL(webId);\n return `${url.origin}/`;\n } catch {\n return undefined;\n }\n}\n\nfunction buildWebIdFromIssuer(oidcIssuer: string | undefined, podName: string): string | undefined {\n if (!oidcIssuer) {\n return undefined;\n }\n return new URL(`${encodeURIComponent(podName)}/profile/card#me`, ensureTrailingSlash(oidcIssuer)).toString();\n}\n\nfunction createQuintsTable(db: SqliteDatabase): void {\n db.exec(`\n CREATE TABLE IF NOT EXISTS quints (\n graph TEXT NOT NULL,\n subject TEXT NOT NULL,\n predicate TEXT NOT NULL,\n object TEXT NOT NULL,\n vector TEXT,\n PRIMARY KEY (graph, subject, predicate, object)\n );\n\n CREATE INDEX IF NOT EXISTS idx_spog ON quints (subject, predicate, object, graph);\n CREATE INDEX IF NOT EXISTS idx_ogsp ON quints (object, graph, subject, predicate);\n CREATE INDEX IF NOT EXISTS idx_gspo ON quints (graph, subject, predicate, object);\n CREATE INDEX IF NOT EXISTS idx_sopg ON quints (subject, object, predicate, graph);\n CREATE INDEX IF NOT EXISTS idx_pogs ON quints (predicate, object, graph, subject);\n CREATE INDEX IF NOT EXISTS idx_gpos ON quints (graph, predicate, object, subject);\n `);\n}\n\nfunction createInternalKvTable(db: SqliteDatabase): void {\n db.exec(`\n CREATE TABLE IF NOT EXISTS internal_kv (\n key TEXT PRIMARY KEY,\n value TEXT NOT NULL,\n updated_at TEXT NOT NULL DEFAULT (datetime('now'))\n );\n `);\n}\n\nfunction meta(resource: string): string {\n return `meta:${resource}`;\n}\n\nfunction iri(base: string, relative: string): string {\n return new URL(relative, base).toString();\n}\n\nexport class LocalPodProvisioningService {\n private readonly logger = getLoggerFor(this);\n private readonly baseUrl: string;\n private readonly rootDir: string;\n private readonly sparqlDbPath: string;\n private readonly identityDbPath: string;\n private readonly oidcIssuer?: string;\n private readonly sqliteRuntime = getSqliteRuntime();\n\n public constructor(options: LocalPodProvisioningServiceOptions) {\n this.baseUrl = ensureTrailingSlash(options.baseUrl);\n this.rootDir = options.rootDir;\n this.sparqlDbPath = stripSqlitePrefix(options.sparqlEndpoint, 'sparqlEndpoint');\n this.identityDbPath = stripSqlitePrefix(options.identityDbUrl, 'identityDbUrl');\n this.oidcIssuer = options.oidcIssuer ? ensureTrailingSlash(options.oidcIssuer) : undefined;\n }\n\n public async createPod(input: LocalPodProvisioningInput): Promise<LocalPodProvisioningResult> {\n const podUrl = ensureTrailingSlash(new URL(`${encodeURIComponent(input.podName)}/`, this.baseUrl).toString());\n const webId = input.webId ?? buildWebIdFromIssuer(this.oidcIssuer, input.podName) ?? `${podUrl}profile/card#me`;\n const oidcIssuer = this.oidcIssuer ?? inferIssuerFromWebId(webId) ?? this.baseUrl;\n const accountId = stableUuid(`account:${podUrl}:${webId}`);\n const podId = stableUuid(`pod:${podUrl}:${webId}`);\n const ownerId = stableUuid(`owner:${podId}:${webId}`);\n const webIdLinkId = stableUuid(`webIdLink:${accountId}:${webId}`);\n\n await this.createPodFiles(input.podName, input.initialResources);\n this.writeQuints({ podUrl, webId, oidcIssuer });\n this.writeIdentityIndexes({ accountId, podId, ownerId, webIdLinkId, podUrl, webId });\n\n this.logger.info(`Provisioned local pod ${podUrl} for ${webId}`);\n return { podUrl, accountId, podId };\n }\n\n private async createPodFiles(podName: string, initialResources?: Record<string, string>): Promise<void> {\n const podPath = path.join(this.rootDir, podName);\n await fs.mkdir(path.join(podPath, 'profile'), { recursive: true });\n\n if (!initialResources) {\n return;\n }\n\n for (const [filename, content] of Object.entries(initialResources)) {\n const normalized = path.normalize(filename);\n if (normalized.startsWith('..') || path.isAbsolute(normalized)) {\n throw new Error(`Invalid initial resource path: ${filename}`);\n }\n const filePath = path.join(podPath, normalized);\n await fs.mkdir(path.dirname(filePath), { recursive: true });\n await fs.writeFile(filePath, content, 'utf8');\n }\n }\n\n private writeQuints(input: { podUrl: string; webId: string; oidcIssuer: string }): void {\n const db = this.sqliteRuntime.openDatabase(this.sparqlDbPath);\n try {\n createQuintsTable(db);\n const rows = this.buildPodQuads(input).map((entry) => {\n const row = quadToRow(entry);\n return [row.graph, row.subject, row.predicate, row.object, row.vector] as const;\n });\n const insert = db.prepare(`\n INSERT OR IGNORE INTO quints (graph, subject, predicate, object, vector)\n VALUES (?, ?, ?, ?, ?)\n `);\n\n db.transaction(() => {\n for (const row of rows) {\n insert.run(...row);\n }\n })();\n } finally {\n db.close();\n }\n }\n\n private buildPodQuads({ podUrl, webId, oidcIssuer }: { podUrl: string; webId: string; oidcIssuer: string }): Quad[] {\n const now = new Date().toISOString();\n const root = this.baseUrl;\n const profileUrl = iri(podUrl, 'profile/');\n const cardUrl = iri(podUrl, 'profile/card');\n const rootAcrUrl = iri(podUrl, '.acr');\n const cardAcrUrl = iri(podUrl, 'profile/card.acr');\n const rootGraph = namedNode(root);\n const podGraph = namedNode(podUrl);\n const profileGraph = namedNode(profileUrl);\n const cardGraph = namedNode(cardUrl);\n const rootAcrGraph = namedNode(rootAcrUrl);\n const cardAcrGraph = namedNode(cardAcrUrl);\n const out: Quad[] = [];\n\n const add = (graph: string, subject: string, predicate: string, object: string): void => {\n out.push(quad(namedNode(subject), namedNode(predicate), namedNode(object), namedNode(graph)));\n };\n const addLiteral = (graph: string, subject: string, predicate: string, value: string): void => {\n out.push(quad(namedNode(subject), namedNode(predicate), literal(value), namedNode(graph)));\n };\n const addDate = (graph: string, subject: string): void => {\n out.push(quad(namedNode(subject), namedNode(`${DCT}modified`), literal(now, namedNode('http://www.w3.org/2001/XMLSchema#dateTime')), namedNode(graph)));\n };\n const addContainerMeta = (resource: string, storage = false): void => {\n const graph = meta(resource);\n addDate(graph, resource);\n add(graph, resource, `${RDF}type`, `${LDP}Resource`);\n add(graph, resource, `${RDF}type`, `${LDP}Container`);\n add(graph, resource, `${RDF}type`, `${LDP}BasicContainer`);\n if (storage) {\n add(graph, resource, `${RDF}type`, `${PIM}Storage`);\n }\n addLiteral(graph, resource, `${MA}format`, 'internal/quads');\n };\n const addDocumentMeta = (resource: string): void => {\n const graph = meta(resource);\n addDate(graph, resource);\n add(graph, resource, `${RDF}type`, `${LDP}Resource`);\n };\n\n out.push(quad(namedNode(root), namedNode(`${LDP}contains`), namedNode(podUrl), rootGraph));\n out.push(quad(namedNode(podUrl), namedNode(`${LDP}contains`), namedNode(rootAcrUrl), podGraph));\n out.push(quad(namedNode(podUrl), namedNode(`${LDP}contains`), namedNode(profileUrl), podGraph));\n out.push(quad(namedNode(profileUrl), namedNode(`${LDP}contains`), namedNode(cardUrl), profileGraph));\n out.push(quad(namedNode(profileUrl), namedNode(`${LDP}contains`), namedNode(cardAcrUrl), profileGraph));\n\n addContainerMeta(root);\n addContainerMeta(podUrl, true);\n addContainerMeta(profileUrl);\n addDocumentMeta(rootAcrUrl);\n addDocumentMeta(cardUrl);\n addDocumentMeta(cardAcrUrl);\n\n out.push(quad(namedNode(cardUrl), namedNode(`${RDF}type`), namedNode(`${FOAF}PersonalProfileDocument`), cardGraph));\n out.push(quad(namedNode(cardUrl), namedNode(`${FOAF}maker`), namedNode(webId), cardGraph));\n out.push(quad(namedNode(cardUrl), namedNode(`${FOAF}primaryTopic`), namedNode(webId), cardGraph));\n out.push(quad(namedNode(webId), namedNode(`${RDF}type`), namedNode(`${FOAF}Person`), cardGraph));\n out.push(quad(namedNode(webId), namedNode(`${SOLID}oidcIssuer`), namedNode(oidcIssuer), cardGraph));\n\n this.addRootAcrQuads(out, rootAcrGraph, rootAcrUrl, podUrl, webId);\n this.addPublicReadAcrQuads(out, cardAcrGraph, cardAcrUrl, cardUrl);\n\n return out;\n }\n\n private addRootAcrQuads(out: Quad[], graph: ReturnType<typeof namedNode>, acrUrl: string, podUrl: string, webId: string): void {\n const root = namedNode(`${acrUrl}#root`);\n const publicRead = namedNode(`${acrUrl}#publicReadAccess`);\n const fullOwner = namedNode(`${acrUrl}#fullOwnerAccess`);\n const publicPolicy = blankNode(`public-policy-${stableUuid(acrUrl)}`);\n const publicMatcher = blankNode(`public-matcher-${stableUuid(acrUrl)}`);\n const ownerPolicy = blankNode(`owner-policy-${stableUuid(acrUrl)}`);\n const ownerMatcher = blankNode(`owner-matcher-${stableUuid(acrUrl)}`);\n\n out.push(\n quad(root, namedNode(`${RDF}type`), namedNode(`${ACP}AccessControlResource`), graph),\n quad(root, namedNode(`${ACP}resource`), namedNode(podUrl), graph),\n quad(root, namedNode(`${ACP}accessControl`), publicRead, graph),\n quad(root, namedNode(`${ACP}accessControl`), fullOwner, graph),\n quad(root, namedNode(`${ACP}memberAccessControl`), fullOwner, graph),\n quad(publicRead, namedNode(`${RDF}type`), namedNode(`${ACP}AccessControl`), graph),\n quad(publicRead, namedNode(`${ACP}apply`), publicPolicy, graph),\n quad(publicPolicy, namedNode(`${RDF}type`), namedNode(`${ACP}Policy`), graph),\n quad(publicPolicy, namedNode(`${ACP}allow`), namedNode(`${ACL}Read`), graph),\n quad(publicPolicy, namedNode(`${ACP}anyOf`), publicMatcher, graph),\n quad(publicMatcher, namedNode(`${RDF}type`), namedNode(`${ACP}Matcher`), graph),\n quad(publicMatcher, namedNode(`${ACP}agent`), namedNode(`${ACP}PublicAgent`), graph),\n quad(fullOwner, namedNode(`${RDF}type`), namedNode(`${ACP}AccessControl`), graph),\n quad(fullOwner, namedNode(`${ACP}apply`), ownerPolicy, graph),\n quad(ownerPolicy, namedNode(`${RDF}type`), namedNode(`${ACP}Policy`), graph),\n quad(ownerPolicy, namedNode(`${ACP}allow`), namedNode(`${ACL}Read`), graph),\n quad(ownerPolicy, namedNode(`${ACP}allow`), namedNode(`${ACL}Write`), graph),\n quad(ownerPolicy, namedNode(`${ACP}allow`), namedNode(`${ACL}Control`), graph),\n quad(ownerPolicy, namedNode(`${ACP}anyOf`), ownerMatcher, graph),\n quad(ownerMatcher, namedNode(`${RDF}type`), namedNode(`${ACP}Matcher`), graph),\n quad(ownerMatcher, namedNode(`${ACP}agent`), namedNode(webId), graph),\n );\n }\n\n private addPublicReadAcrQuads(out: Quad[], graph: ReturnType<typeof namedNode>, acrUrl: string, resourceUrl: string): void {\n const card = namedNode(`${acrUrl}#card`);\n const publicRead = namedNode(`${acrUrl}#publicReadAccess`);\n const policy = blankNode(`card-policy-${stableUuid(acrUrl)}`);\n const matcher = blankNode(`card-matcher-${stableUuid(acrUrl)}`);\n\n out.push(\n quad(card, namedNode(`${RDF}type`), namedNode(`${ACP}AccessControlResource`), graph),\n quad(card, namedNode(`${ACP}resource`), namedNode(resourceUrl), graph),\n quad(card, namedNode(`${ACP}accessControl`), publicRead, graph),\n quad(publicRead, namedNode(`${RDF}type`), namedNode(`${ACP}AccessControl`), graph),\n quad(publicRead, namedNode(`${ACP}apply`), policy, graph),\n quad(policy, namedNode(`${RDF}type`), namedNode(`${ACP}Policy`), graph),\n quad(policy, namedNode(`${ACP}allow`), namedNode(`${ACL}Read`), graph),\n quad(policy, namedNode(`${ACP}anyOf`), matcher, graph),\n quad(matcher, namedNode(`${RDF}type`), namedNode(`${ACP}Matcher`), graph),\n quad(matcher, namedNode(`${ACP}agent`), namedNode(`${ACP}PublicAgent`), graph),\n );\n }\n\n private writeIdentityIndexes(input: {\n accountId: string;\n podId: string;\n ownerId: string;\n webIdLinkId: string;\n podUrl: string;\n webId: string;\n }): void {\n const db = this.sqliteRuntime.openDatabase(this.identityDbPath);\n try {\n createInternalKvTable(db);\n const account = {\n linkedLoginsCount: 1,\n id: input.accountId,\n '**pod**': {\n [input.podId]: {\n baseUrl: input.podUrl,\n accountId: input.accountId,\n id: input.podId,\n '**owner**': {\n [input.ownerId]: {\n podId: input.podId,\n webId: input.webId,\n visible: false,\n id: input.ownerId,\n },\n },\n },\n },\n '**webIdLink**': {\n [input.webIdLinkId]: {\n webId: input.webId,\n accountId: input.accountId,\n id: input.webIdLinkId,\n },\n },\n };\n\n const rows: Array<[string, string]> = [\n [`accounts/data/${input.accountId}`, JSON.stringify(account)],\n [`accounts/index/pod/${input.podId}`, JSON.stringify([input.accountId])],\n [`accounts/index/pod/baseUrl/${encodeURIComponent(input.podUrl)}`, JSON.stringify([input.accountId])],\n [`accounts/index/owner/${input.ownerId}`, JSON.stringify([input.accountId])],\n [`accounts/index/webIdLink/${input.webIdLinkId}`, JSON.stringify([input.accountId])],\n [`accounts/index/webIdLink/webId/${encodeURIComponent(input.webId)}`, JSON.stringify([input.accountId])],\n ];\n const insert = db.prepare(`\n INSERT INTO internal_kv (key, value, updated_at)\n VALUES (?, ?, datetime('now'))\n ON CONFLICT (key) DO UPDATE SET value = excluded.value, updated_at = datetime('now')\n `);\n\n db.transaction(() => {\n for (const row of rows) {\n insert.run(...row);\n }\n })();\n } finally {\n db.close();\n }\n }\n}\n"]}
@@ -0,0 +1,142 @@
1
+ {
2
+ "@context": [
3
+ "https://linkedsoftwaredependencies.org/bundles/npm/@undefineds.co/xpod/^0.0.0/components/context.jsonld"
4
+ ],
5
+ "@id": "npmd:@undefineds.co/xpod",
6
+ "components": [
7
+ {
8
+ "@id": "undefineds:dist/provision/LocalPodProvisioningService.jsonld#LocalPodProvisioningService",
9
+ "@type": "Class",
10
+ "requireElement": "LocalPodProvisioningService",
11
+ "parameters": [
12
+ {
13
+ "@id": "undefineds:dist/provision/LocalPodProvisioningService.jsonld#LocalPodProvisioningService_options_baseUrl",
14
+ "range": "xsd:string"
15
+ },
16
+ {
17
+ "@id": "undefineds:dist/provision/LocalPodProvisioningService.jsonld#LocalPodProvisioningService_options_rootDir",
18
+ "range": "xsd:string"
19
+ },
20
+ {
21
+ "@id": "undefineds:dist/provision/LocalPodProvisioningService.jsonld#LocalPodProvisioningService_options_sparqlEndpoint",
22
+ "range": "xsd:string"
23
+ },
24
+ {
25
+ "@id": "undefineds:dist/provision/LocalPodProvisioningService.jsonld#LocalPodProvisioningService_options_identityDbUrl",
26
+ "range": "xsd:string"
27
+ },
28
+ {
29
+ "@id": "undefineds:dist/provision/LocalPodProvisioningService.jsonld#LocalPodProvisioningService_options_oidcIssuer",
30
+ "range": {
31
+ "@type": "ParameterRangeUnion",
32
+ "parameterRangeElements": [
33
+ "xsd:string",
34
+ {
35
+ "@type": "ParameterRangeUndefined"
36
+ }
37
+ ]
38
+ }
39
+ }
40
+ ],
41
+ "memberFields": [
42
+ {
43
+ "@id": "undefineds:dist/provision/LocalPodProvisioningService.jsonld#LocalPodProvisioningService__member_logger",
44
+ "memberFieldName": "logger"
45
+ },
46
+ {
47
+ "@id": "undefineds:dist/provision/LocalPodProvisioningService.jsonld#LocalPodProvisioningService__member_baseUrl",
48
+ "memberFieldName": "baseUrl"
49
+ },
50
+ {
51
+ "@id": "undefineds:dist/provision/LocalPodProvisioningService.jsonld#LocalPodProvisioningService__member_rootDir",
52
+ "memberFieldName": "rootDir"
53
+ },
54
+ {
55
+ "@id": "undefineds:dist/provision/LocalPodProvisioningService.jsonld#LocalPodProvisioningService__member_sparqlDbPath",
56
+ "memberFieldName": "sparqlDbPath"
57
+ },
58
+ {
59
+ "@id": "undefineds:dist/provision/LocalPodProvisioningService.jsonld#LocalPodProvisioningService__member_identityDbPath",
60
+ "memberFieldName": "identityDbPath"
61
+ },
62
+ {
63
+ "@id": "undefineds:dist/provision/LocalPodProvisioningService.jsonld#LocalPodProvisioningService__member_oidcIssuer",
64
+ "memberFieldName": "oidcIssuer"
65
+ },
66
+ {
67
+ "@id": "undefineds:dist/provision/LocalPodProvisioningService.jsonld#LocalPodProvisioningService__member_sqliteRuntime",
68
+ "memberFieldName": "sqliteRuntime"
69
+ },
70
+ {
71
+ "@id": "undefineds:dist/provision/LocalPodProvisioningService.jsonld#LocalPodProvisioningService__member_constructor",
72
+ "memberFieldName": "constructor"
73
+ },
74
+ {
75
+ "@id": "undefineds:dist/provision/LocalPodProvisioningService.jsonld#LocalPodProvisioningService__member_createPod",
76
+ "memberFieldName": "createPod"
77
+ },
78
+ {
79
+ "@id": "undefineds:dist/provision/LocalPodProvisioningService.jsonld#LocalPodProvisioningService__member_createPodFiles",
80
+ "memberFieldName": "createPodFiles"
81
+ },
82
+ {
83
+ "@id": "undefineds:dist/provision/LocalPodProvisioningService.jsonld#LocalPodProvisioningService__member_writeQuints",
84
+ "memberFieldName": "writeQuints"
85
+ },
86
+ {
87
+ "@id": "undefineds:dist/provision/LocalPodProvisioningService.jsonld#LocalPodProvisioningService__member_buildPodQuads",
88
+ "memberFieldName": "buildPodQuads"
89
+ },
90
+ {
91
+ "@id": "undefineds:dist/provision/LocalPodProvisioningService.jsonld#LocalPodProvisioningService__member_addRootAcrQuads",
92
+ "memberFieldName": "addRootAcrQuads"
93
+ },
94
+ {
95
+ "@id": "undefineds:dist/provision/LocalPodProvisioningService.jsonld#LocalPodProvisioningService__member_addPublicReadAcrQuads",
96
+ "memberFieldName": "addPublicReadAcrQuads"
97
+ },
98
+ {
99
+ "@id": "undefineds:dist/provision/LocalPodProvisioningService.jsonld#LocalPodProvisioningService__member_writeIdentityIndexes",
100
+ "memberFieldName": "writeIdentityIndexes"
101
+ }
102
+ ],
103
+ "constructorArguments": [
104
+ {
105
+ "@id": "undefineds:dist/provision/LocalPodProvisioningService.jsonld#LocalPodProvisioningService_options__constructorArgument",
106
+ "fields": [
107
+ {
108
+ "keyRaw": "baseUrl",
109
+ "value": {
110
+ "@id": "undefineds:dist/provision/LocalPodProvisioningService.jsonld#LocalPodProvisioningService_options_baseUrl"
111
+ }
112
+ },
113
+ {
114
+ "keyRaw": "rootDir",
115
+ "value": {
116
+ "@id": "undefineds:dist/provision/LocalPodProvisioningService.jsonld#LocalPodProvisioningService_options_rootDir"
117
+ }
118
+ },
119
+ {
120
+ "keyRaw": "sparqlEndpoint",
121
+ "value": {
122
+ "@id": "undefineds:dist/provision/LocalPodProvisioningService.jsonld#LocalPodProvisioningService_options_sparqlEndpoint"
123
+ }
124
+ },
125
+ {
126
+ "keyRaw": "identityDbUrl",
127
+ "value": {
128
+ "@id": "undefineds:dist/provision/LocalPodProvisioningService.jsonld#LocalPodProvisioningService_options_identityDbUrl"
129
+ }
130
+ },
131
+ {
132
+ "keyRaw": "oidcIssuer",
133
+ "value": {
134
+ "@id": "undefineds:dist/provision/LocalPodProvisioningService.jsonld#LocalPodProvisioningService_options_oidcIssuer"
135
+ }
136
+ }
137
+ ]
138
+ }
139
+ ]
140
+ }
141
+ ]
142
+ }
@@ -50,6 +50,7 @@ class ProvisionPodCreator extends community_server_1.BasePodCreator {
50
50
  if (!podName) {
51
51
  throw new Error('Pod name is required for remote provisioning');
52
52
  }
53
+ const webId = input.webId ?? `${this.baseUrl}${podName}/profile/card#me`;
53
54
  // 2. 回调 SP 创建 Pod
54
55
  const callbackUrl = `${payload.spUrl.replace(/\/$/, '')}/provision/pods`;
55
56
  const spResponse = await fetch(callbackUrl, {
@@ -58,7 +59,7 @@ class ProvisionPodCreator extends community_server_1.BasePodCreator {
58
59
  'Content-Type': 'application/json',
59
60
  'Authorization': `Bearer ${payload.serviceToken}`,
60
61
  },
61
- body: JSON.stringify({ podName }),
62
+ body: JSON.stringify({ podName, webId }),
62
63
  });
63
64
  if (!spResponse.ok) {
64
65
  const errBody = await spResponse.text();
@@ -72,9 +73,7 @@ class ProvisionPodCreator extends community_server_1.BasePodCreator {
72
73
  : payload.spUrl.replace(/\/$/, '');
73
74
  const canonicalStorageUrl = `${storageBase}/${podName}/`;
74
75
  const podUrl = spResult.podUrl || canonicalStorageUrl;
75
- // 3. 生成 WebID(指向 Cloud,storage 指向 SP)
76
- const webId = input.webId ?? `${this.baseUrl}${podName}/profile/card#me`;
77
- // 4. 链接 WebID 到账户 + 在本地 PodStore 记录
76
+ // 3. 链接 WebID 到账户 + 在本地 PodStore 记录
78
77
  // base.path 必须在 Cloud 的 identifier space 内(CSS PodStore 会检查),
79
78
  // 所以用 Cloud 本地路径;真实的 SP storage URL 通过 podUrl 返回。
80
79
  const localBase = this.identifierGenerator.generate(podName);