@undefineds.co/xpod 0.4.17 → 0.4.19

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 (801) hide show
  1. package/config/components-ignore.json +8 -13
  2. package/config/xpod.base.json +3 -0
  3. package/dist/api/ai-gateway/pod/HostedPodRoute.d.ts +7 -0
  4. package/dist/api/ai-gateway/pod/HostedPodRoute.js +68 -1
  5. package/dist/api/chatkit/pod-store.js +14 -0
  6. package/dist/api/container/common.js +6 -3
  7. package/dist/api/container/routes.js +9 -6
  8. package/dist/api/handlers/AgentWakeHandler.d.ts +10 -0
  9. package/dist/api/handlers/AgentWakeHandler.js +62 -0
  10. package/dist/api/handlers/AiGatewayManagementHandler.js +43 -0
  11. package/dist/api/handlers/MatrixHandler.d.ts +3 -0
  12. package/dist/api/handlers/MatrixHandler.js +120 -105
  13. package/dist/api/handlers/NetworkSettingsHandler.d.ts +1 -31
  14. package/dist/api/handlers/NetworkSettingsHandler.js +3 -76
  15. package/dist/api/handlers/PodAccessFailureResponse.d.ts +1 -2
  16. package/dist/api/handlers/PodAccessFailureResponse.js +5 -4
  17. package/dist/api/handlers/ReachabilityHandler.js +0 -5
  18. package/dist/api/handlers/readBoundedRequestBody.d.ts +3 -0
  19. package/dist/api/handlers/readBoundedRequestBody.js +37 -0
  20. package/dist/api/matrix/MatrixError.d.ts +6 -0
  21. package/dist/api/matrix/MatrixError.js +14 -0
  22. package/dist/api/matrix/MatrixEventJournal.d.ts +39 -0
  23. package/dist/api/matrix/MatrixEventJournal.js +169 -0
  24. package/dist/api/matrix/MatrixPodResolver.d.ts +12 -0
  25. package/dist/api/matrix/MatrixPodResolver.js +61 -0
  26. package/dist/api/matrix/PodMatrixStore.d.ts +58 -12
  27. package/dist/api/matrix/PodMatrixStore.js +527 -204
  28. package/dist/api/matrix/types.d.ts +15 -0
  29. package/dist/api/reconciler/AgentWakeRuntimeService.d.ts +66 -0
  30. package/dist/api/reconciler/AgentWakeRuntimeService.js +79 -0
  31. package/dist/api/reconciler/AgentWakeRuntimeService.jsonld +173 -0
  32. package/dist/api/reconciler/ServerGroupReconcilerService.d.ts +3 -0
  33. package/dist/api/reconciler/ServerGroupReconcilerService.js +12 -4
  34. package/dist/api/reconciler/ServerGroupReconcilerService.jsonld +8 -0
  35. package/dist/api/reconciler/WakeAgentQueue.d.ts +32 -2
  36. package/dist/api/reconciler/WakeAgentQueue.js +183 -66
  37. package/dist/api/reconciler/WakeAgentQueue.jsonld +152 -6
  38. package/dist/api/reconciler/coordination.d.ts +5 -0
  39. package/dist/api/reconciler/coordination.js +1 -1
  40. package/dist/api/reconciler/coordination.jsonld +20 -0
  41. package/dist/api/reconciler/index.d.ts +1 -0
  42. package/dist/api/reconciler/index.js +1 -0
  43. package/dist/api/runs/store.d.ts +4 -0
  44. package/dist/api/runtime.js +21 -44
  45. package/dist/cli/commands/start.d.ts +18 -11
  46. package/dist/cli/commands/start.js +49 -44
  47. package/dist/cli/commands/stop.js +1 -7
  48. package/dist/components/components.jsonld +1 -1
  49. package/dist/components/context.jsonld +66 -61
  50. package/dist/dns/cloudflare/CloudflareDnsProvider.d.ts +1 -10
  51. package/dist/dns/cloudflare/CloudflareDnsProvider.js +28 -59
  52. package/dist/edge/EdgeNodeAgent.d.ts +0 -5
  53. package/dist/edge/EdgeNodeAgent.js +0 -8
  54. package/dist/edge/acme/AcmeCertificateManager.d.ts +0 -24
  55. package/dist/edge/acme/AcmeCertificateManager.js +7 -75
  56. package/dist/edge/acme/AcmeCertificateManager.jsonld +0 -24
  57. package/dist/edge/frp/FrpcProcessManager.d.ts +0 -16
  58. package/dist/edge/frp/FrpcProcessManager.js +13 -73
  59. package/dist/edge/reachability/ManagedClientFetch.d.ts +0 -2
  60. package/dist/edge/reachability/ManagedClientFetch.js +12 -24
  61. package/dist/edge/reachability/ManagedClientFetch.jsonld +0 -4
  62. package/dist/edge/reachability/ManagedRouteSelector.d.ts +0 -2
  63. package/dist/edge/reachability/ManagedRouteSelector.js +13 -7
  64. package/dist/edge/reachability/ManagedRouteSelector.jsonld +0 -4
  65. package/dist/edge/reachability/P2PDataPlane.d.ts +4 -67
  66. package/dist/edge/reachability/P2PDataPlane.js +15 -156
  67. package/dist/edge/reachability/P2PDataPlane.jsonld +0 -64
  68. package/dist/edge/reachability/P2PSignalingClient.d.ts +0 -2
  69. package/dist/edge/reachability/P2PSignalingClient.js +0 -1
  70. package/dist/edge/reachability/P2PSignalingClient.jsonld +0 -4
  71. package/dist/edge/reachability/ReachabilitySessionService.d.ts +0 -19
  72. package/dist/edge/reachability/ReachabilitySessionService.js +52 -122
  73. package/dist/edge/reachability/ReachabilitySessionService.jsonld +0 -26
  74. package/dist/edge/reachability/TcpP2PDataPlaneTransport.d.ts +4 -28
  75. package/dist/edge/reachability/TcpP2PDataPlaneTransport.js +32 -540
  76. package/dist/edge/reachability/TcpP2PDataPlaneTransport.jsonld +0 -51
  77. package/dist/edge/reachability/TcpP2PSignalingSession.d.ts +0 -7
  78. package/dist/edge/reachability/TcpP2PSignalingSession.js +1 -25
  79. package/dist/edge/reachability/TcpP2PSignalingSession.jsonld +0 -12
  80. package/dist/edge/reachability/index.d.ts +0 -1
  81. package/dist/edge/reachability/index.js +0 -1
  82. package/dist/edge/reachability/types.d.ts +0 -8
  83. package/dist/edge/reachability/types.jsonld +0 -8
  84. package/dist/identity/ValidatingIdentityProviderHttpHandler.d.ts +32 -1
  85. package/dist/identity/ValidatingIdentityProviderHttpHandler.js +53 -1
  86. package/dist/identity/ValidatingIdentityProviderHttpHandler.jsonld +53 -0
  87. package/dist/identity/drizzle/EdgeNodeRepository.d.ts +0 -12
  88. package/dist/identity/drizzle/EdgeNodeRepository.js +0 -37
  89. package/dist/identity/drizzle/PodLookupRepository.js +5 -4
  90. package/dist/identity/drizzle/db.d.ts +0 -8
  91. package/dist/identity/drizzle/db.js +0 -17
  92. package/dist/runtime/GatewayAdminProxyAuth.d.ts +2 -2
  93. package/dist/runtime/Proxy.js +2 -5
  94. package/dist/runtime/css-process.d.ts +3 -3
  95. package/dist/runtime/index.d.ts +1 -7
  96. package/dist/runtime/index.js +1 -21
  97. package/dist/runtime/port-finder.d.ts +3 -27
  98. package/dist/runtime/port-finder.js +22 -52
  99. package/dist/runtime/safe-env.d.ts +1 -1
  100. package/dist/runtime/user-env.d.ts +2 -2
  101. package/dist/supervisor/Supervisor.d.ts +3 -26
  102. package/dist/supervisor/Supervisor.js +23 -130
  103. package/dist/supervisor/types.d.ts +1 -14
  104. package/dist/test-utils/local-managed-client-p2p-e2e-smoke.js +0 -15
  105. package/dist/tunnel/LocalTunnelProvider.d.ts +0 -7
  106. package/dist/tunnel/LocalTunnelProvider.js +3 -11
  107. package/dist/tunnel/LocalTunnelProvider.jsonld +0 -39
  108. package/dist/tunnel/NgrokTunnelProvider.d.ts +0 -2
  109. package/dist/tunnel/NgrokTunnelProvider.js +1 -3
  110. package/dist/tunnel/NgrokTunnelProvider.jsonld +0 -39
  111. package/dist/tunnel/SakuraFrpTunnelProvider.d.ts +1 -3
  112. package/dist/tunnel/SakuraFrpTunnelProvider.js +3 -7
  113. package/dist/tunnel/TunnelLifecycle.d.ts +1 -9
  114. package/dist/tunnel/TunnelLifecycle.js +3 -24
  115. package/dist/tunnel/TunnelProviderCatalog.d.ts +0 -32
  116. package/dist/tunnel/TunnelProviderCatalog.js +0 -43
  117. package/node_modules/@solid/access-token-verifier/node_modules/n3/browser/n3.min.js +1 -0
  118. package/node_modules/@solid/community-server/node_modules/n3/browser/n3.min.js +1 -0
  119. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/aggregates.d.ts +19 -0
  120. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/ast-to-sparql.d.ts +66 -0
  121. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/compile-time-types.d.ts +40 -0
  122. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/comunica-patch.d.ts +2 -0
  123. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/conflict-resolution.d.ts +110 -0
  124. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/discovery/composite-discovery.d.ts +18 -0
  125. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/discovery/index.d.ts +7 -0
  126. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/discovery/interop-discovery.d.ts +36 -0
  127. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/discovery/interop-tables.d.ts +37 -0
  128. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/discovery/interop-types.d.ts +36 -0
  129. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/discovery/provider-cache.d.ts +99 -0
  130. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/discovery/typeindex-discovery.d.ts +32 -0
  131. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/discovery/types.d.ts +132 -0
  132. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/exact-records.d.ts +21 -0
  133. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/execution/index.d.ts +14 -0
  134. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/execution/ldp-executor.d.ts +76 -0
  135. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/execution/ldp-strategy.d.ts +53 -0
  136. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/execution/pod-executor-types.d.ts +9 -0
  137. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/execution/pod-executor.d.ts +73 -0
  138. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/execution/sparql-strategy.d.ts +31 -0
  139. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/execution/strategy-factory.d.ts +42 -0
  140. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/execution/types.d.ts +85 -0
  141. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/expressions.d.ts +40 -0
  142. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/federated/executor.d.ts +98 -0
  143. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/federated/index.d.ts +3 -0
  144. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/federated/types.d.ts +69 -0
  145. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/notifications/channels/base-channel.d.ts +29 -0
  146. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/notifications/channels/index.d.ts +4 -0
  147. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/notifications/channels/sse-channel.d.ts +50 -0
  148. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/notifications/channels/websocket-channel.d.ts +16 -0
  149. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/notifications/index.d.ts +3 -0
  150. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/notifications/notifications-client.d.ts +88 -0
  151. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/notifications/types.d.ts +228 -0
  152. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/order-by.d.ts +9 -0
  153. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/pod-database.d.ts +548 -0
  154. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/pod-dialect.d.ts +324 -0
  155. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/pod-discovery.d.ts +20 -0
  156. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/pod-session.d.ts +52 -0
  157. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/profile-manager.d.ts +90 -0
  158. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/query-builders/default-id-template.d.ts +10 -0
  159. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/query-builders/delete-query-builder.d.ts +31 -0
  160. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/query-builders/helpers.d.ts +11 -0
  161. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/query-builders/index.d.ts +7 -0
  162. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/query-builders/insert-query-builder.d.ts +37 -0
  163. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/query-builders/select-query-builder.d.ts +150 -0
  164. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/query-builders/types.d.ts +40 -0
  165. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/query-builders/update-query-builder.d.ts +34 -0
  166. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/query-conditions.d.ts +60 -0
  167. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/query-where-policy.d.ts +8 -0
  168. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/rdf-constants.d.ts +16 -0
  169. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/rdf-schema-parser.d.ts +34 -0
  170. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/repository.d.ts +78 -0
  171. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/resource-reference.d.ts +31 -0
  172. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/resource-resolver/base-resolver.d.ts +141 -0
  173. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/resource-resolver/document-resolver.d.ts +36 -0
  174. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/resource-resolver/factory.d.ts +27 -0
  175. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/resource-resolver/fragment-resolver.d.ts +34 -0
  176. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/resource-resolver/index.d.ts +11 -0
  177. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/resource-resolver/types.d.ts +57 -0
  178. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/runtime/pod-runtime.d.ts +60 -0
  179. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/schema/columns.d.ts +74 -0
  180. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/schema/defs.d.ts +101 -0
  181. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/schema/factories.d.ts +29 -0
  182. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/schema/index.d.ts +9 -0
  183. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/schema/pod-table.d.ts +118 -0
  184. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/schema/relations.d.ts +26 -0
  185. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/schema/solid-schema.d.ts +22 -0
  186. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/schema/types.d.ts +45 -0
  187. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/schema/utils.d.ts +15 -0
  188. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/select-plan.d.ts +50 -0
  189. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/services/pod-services.d.ts +43 -0
  190. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/shape/generator.d.ts +12 -0
  191. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/shape/index.d.ts +4 -0
  192. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/shape/manager.d.ts +45 -0
  193. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/shape/shacl-parser.d.ts +19 -0
  194. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/shape/shacl.d.ts +11 -0
  195. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/shape/types.d.ts +149 -0
  196. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/shape/validator.d.ts +11 -0
  197. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/solid-n3-client.d.ts +86 -0
  198. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/sparql/builder/expression-builder.d.ts +56 -0
  199. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/sparql/builder/select-builder.d.ts +44 -0
  200. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/sparql/builder/update-builder.d.ts +33 -0
  201. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/sparql/helpers.d.ts +19 -0
  202. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/sparql/types.d.ts +10 -0
  203. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/sparql-engine.d.ts +16 -0
  204. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/sparql-executor.d.ts +40 -0
  205. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/subject/index.d.ts +29 -0
  206. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/subject/resolver.d.ts +116 -0
  207. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/subject/types.d.ts +97 -0
  208. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/triple/builder.d.ts +86 -0
  209. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/triple/handlers/array.d.ts +23 -0
  210. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/triple/handlers/default.d.ts +20 -0
  211. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/triple/handlers/index.d.ts +35 -0
  212. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/triple/handlers/inline.d.ts +35 -0
  213. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/triple/handlers/inverse.d.ts +26 -0
  214. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/triple/handlers/uri.d.ts +28 -0
  215. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/triple/index.d.ts +9 -0
  216. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/triple/types.d.ts +156 -0
  217. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/typeindex-manager.d.ts +130 -0
  218. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/types.d.ts +57 -0
  219. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/uri/index.d.ts +8 -0
  220. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/uri/resolver.d.ts +153 -0
  221. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/uri/types.d.ts +154 -0
  222. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/utils/debug-logger.d.ts +19 -0
  223. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/utils/origin-auth.d.ts +28 -0
  224. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/utils/pod-root.d.ts +15 -0
  225. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/zod-integration.d.ts +97 -0
  226. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/driver.d.ts +60 -0
  227. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/index.d.ts +31 -0
  228. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/pod.d.ts +140 -0
  229. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/solid.d.ts +21 -0
  230. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/test-utils/real-test-helpers.d.ts +5 -0
  231. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/types/sparql-types.d.ts +27 -0
  232. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/utils/find-by-iri.d.ts +11 -0
  233. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/utils/helpers.d.ts +17 -0
  234. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/utils/namespace.d.ts +4 -0
  235. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/utils/rdf-helpers.d.ts +17 -0
  236. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/utils/rdf-validation.d.ts +27 -0
  237. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/utils/thing-operations.d.ts +28 -0
  238. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/utils/webid-resolver.d.ts +23 -0
  239. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/index.ts +4 -0
  240. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/locales/index.ts +1 -0
  241. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/mini/index.ts +3 -0
  242. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v3/ZodError.ts +330 -0
  243. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v3/benchmarks/datetime.ts +58 -0
  244. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v3/benchmarks/discriminatedUnion.ts +80 -0
  245. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v3/benchmarks/index.ts +59 -0
  246. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v3/benchmarks/ipv4.ts +57 -0
  247. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v3/benchmarks/object.ts +69 -0
  248. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v3/benchmarks/primitives.ts +162 -0
  249. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v3/benchmarks/realworld.ts +63 -0
  250. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v3/benchmarks/string.ts +55 -0
  251. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v3/benchmarks/union.ts +80 -0
  252. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v3/errors.ts +13 -0
  253. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v3/external.ts +6 -0
  254. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v3/helpers/enumUtil.ts +17 -0
  255. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v3/helpers/errorUtil.ts +8 -0
  256. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v3/helpers/parseUtil.ts +176 -0
  257. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v3/helpers/partialUtil.ts +34 -0
  258. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v3/helpers/typeAliases.ts +2 -0
  259. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v3/helpers/util.ts +224 -0
  260. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v3/index.ts +4 -0
  261. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v3/locales/en.ts +124 -0
  262. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v3/standard-schema.ts +113 -0
  263. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v3/tests/Mocker.ts +54 -0
  264. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v3/tests/all-errors.test.ts +157 -0
  265. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v3/tests/anyunknown.test.ts +28 -0
  266. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v3/tests/array.test.ts +71 -0
  267. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v3/tests/async-parsing.test.ts +388 -0
  268. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v3/tests/async-refinements.test.ts +46 -0
  269. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v3/tests/base.test.ts +29 -0
  270. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v3/tests/bigint.test.ts +55 -0
  271. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v3/tests/branded.test.ts +53 -0
  272. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v3/tests/catch.test.ts +220 -0
  273. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v3/tests/coerce.test.ts +133 -0
  274. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v3/tests/complex.test.ts +70 -0
  275. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v3/tests/custom.test.ts +31 -0
  276. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v3/tests/date.test.ts +32 -0
  277. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v3/tests/deepmasking.test.ts +186 -0
  278. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v3/tests/default.test.ts +112 -0
  279. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v3/tests/description.test.ts +33 -0
  280. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v3/tests/discriminated-unions.test.ts +315 -0
  281. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v3/tests/enum.test.ts +80 -0
  282. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v3/tests/error.test.ts +551 -0
  283. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v3/tests/firstparty.test.ts +87 -0
  284. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v3/tests/firstpartyschematypes.test.ts +21 -0
  285. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v3/tests/function.test.ts +261 -0
  286. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v3/tests/generics.test.ts +48 -0
  287. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v3/tests/instanceof.test.ts +37 -0
  288. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v3/tests/intersection.test.ts +110 -0
  289. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v3/tests/language-server.source.ts +76 -0
  290. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v3/tests/language-server.test.ts +207 -0
  291. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v3/tests/literal.test.ts +36 -0
  292. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v3/tests/map.test.ts +110 -0
  293. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v3/tests/masking.test.ts +4 -0
  294. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v3/tests/mocker.test.ts +19 -0
  295. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v3/tests/nan.test.ts +24 -0
  296. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v3/tests/nativeEnum.test.ts +87 -0
  297. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v3/tests/nullable.test.ts +42 -0
  298. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v3/tests/number.test.ts +176 -0
  299. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v3/tests/object-augmentation.test.ts +29 -0
  300. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v3/tests/object-in-es5-env.test.ts +29 -0
  301. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v3/tests/object.test.ts +434 -0
  302. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v3/tests/optional.test.ts +42 -0
  303. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v3/tests/parseUtil.test.ts +23 -0
  304. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v3/tests/parser.test.ts +41 -0
  305. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v3/tests/partials.test.ts +243 -0
  306. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v3/tests/pickomit.test.ts +111 -0
  307. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v3/tests/pipeline.test.ts +29 -0
  308. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v3/tests/preprocess.test.ts +186 -0
  309. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v3/tests/primitive.test.ts +440 -0
  310. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v3/tests/promise.test.ts +90 -0
  311. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v3/tests/readonly.test.ts +194 -0
  312. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v3/tests/record.test.ts +171 -0
  313. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v3/tests/recursive.test.ts +197 -0
  314. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v3/tests/refine.test.ts +313 -0
  315. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v3/tests/safeparse.test.ts +27 -0
  316. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v3/tests/set.test.ts +142 -0
  317. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v3/tests/standard-schema.test.ts +83 -0
  318. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v3/tests/string.test.ts +916 -0
  319. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v3/tests/transformer.test.ts +233 -0
  320. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v3/tests/tuple.test.ts +90 -0
  321. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v3/tests/unions.test.ts +57 -0
  322. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v3/tests/validations.test.ts +133 -0
  323. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v3/tests/void.test.ts +15 -0
  324. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v3/types.ts +5138 -0
  325. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/classic/checks.ts +32 -0
  326. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/classic/coerce.ts +27 -0
  327. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/classic/compat.ts +70 -0
  328. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/classic/errors.ts +82 -0
  329. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/classic/external.ts +52 -0
  330. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/classic/from-json-schema.ts +659 -0
  331. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/classic/index.ts +5 -0
  332. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/classic/iso.ts +90 -0
  333. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/classic/parse.ts +82 -0
  334. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/classic/schemas.ts +2672 -0
  335. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/classic/tests/anyunknown.test.ts +26 -0
  336. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/classic/tests/apply.test.ts +59 -0
  337. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/classic/tests/array.test.ts +264 -0
  338. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/classic/tests/assignability.test.ts +216 -0
  339. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/classic/tests/async-parsing.test.ts +381 -0
  340. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/classic/tests/async-refinements.test.ts +68 -0
  341. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/classic/tests/base.test.ts +7 -0
  342. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/classic/tests/bigint.test.ts +54 -0
  343. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/classic/tests/brand.test.ts +106 -0
  344. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/classic/tests/catch.test.ts +326 -0
  345. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/classic/tests/coalesce.test.ts +20 -0
  346. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/classic/tests/codec-examples.test.ts +573 -0
  347. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/classic/tests/codec.test.ts +703 -0
  348. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/classic/tests/coerce.test.ts +160 -0
  349. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/classic/tests/continuability.test.ts +374 -0
  350. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/classic/tests/custom.test.ts +40 -0
  351. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/classic/tests/date.test.ts +62 -0
  352. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/classic/tests/datetime.test.ts +302 -0
  353. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/classic/tests/default.test.ts +409 -0
  354. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/classic/tests/describe-meta-checks.test.ts +27 -0
  355. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/classic/tests/description.test.ts +32 -0
  356. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/classic/tests/detached-methods.test.ts +197 -0
  357. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/classic/tests/discriminated-unions.test.ts +694 -0
  358. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/classic/tests/enum.test.ts +285 -0
  359. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/classic/tests/error-utils.test.ts +807 -0
  360. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/classic/tests/error.test.ts +711 -0
  361. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/classic/tests/file.test.ts +96 -0
  362. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/classic/tests/firstparty.test.ts +179 -0
  363. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/classic/tests/fix-json-issue.test.ts +26 -0
  364. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/classic/tests/from-json-schema.test.ts +895 -0
  365. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/classic/tests/function.test.ts +360 -0
  366. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/classic/tests/generics.test.ts +72 -0
  367. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/classic/tests/global-config.test.ts +39 -0
  368. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/classic/tests/hash.test.ts +68 -0
  369. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/classic/tests/index.test.ts +939 -0
  370. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/classic/tests/instanceof.test.ts +60 -0
  371. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/classic/tests/intersection.test.ts +198 -0
  372. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/classic/tests/jitless-allows-eval.test.ts +46 -0
  373. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/classic/tests/json.test.ts +109 -0
  374. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/classic/tests/lazy.test.ts +227 -0
  375. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/classic/tests/literal.test.ts +117 -0
  376. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/classic/tests/locales_ka.test.ts +29 -0
  377. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/classic/tests/locales_ro.test.ts +24 -0
  378. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/classic/tests/map.test.ts +330 -0
  379. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/classic/tests/nan.test.ts +21 -0
  380. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/classic/tests/nested-refine.test.ts +168 -0
  381. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/classic/tests/nonoptional.test.ts +101 -0
  382. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/classic/tests/nullable.test.ts +22 -0
  383. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/classic/tests/number.test.ts +325 -0
  384. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/classic/tests/object.test.ts +717 -0
  385. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/classic/tests/optional.test.ts +333 -0
  386. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/classic/tests/partial.test.ts +450 -0
  387. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/classic/tests/pickomit.test.ts +211 -0
  388. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/classic/tests/pipe.test.ts +101 -0
  389. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/classic/tests/prefault.test.ts +74 -0
  390. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/classic/tests/preprocess-types.test.ts +26 -0
  391. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/classic/tests/preprocess.test.ts +351 -0
  392. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/classic/tests/primitive.test.ts +175 -0
  393. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/classic/tests/promise.test.ts +81 -0
  394. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/classic/tests/prototypes.test.ts +23 -0
  395. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/classic/tests/readonly.test.ts +252 -0
  396. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/classic/tests/record.test.ts +717 -0
  397. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/classic/tests/recursive-types.test.ts +631 -0
  398. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/classic/tests/refine.test.ts +633 -0
  399. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/classic/tests/registries.test.ts +243 -0
  400. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/classic/tests/set.test.ts +181 -0
  401. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/classic/tests/standard-schema.test.ts +134 -0
  402. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/classic/tests/string-formats.test.ts +125 -0
  403. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/classic/tests/string.test.ts +1224 -0
  404. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/classic/tests/stringbool.test.ts +106 -0
  405. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/classic/tests/template-literal.test.ts +771 -0
  406. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/classic/tests/to-json-schema-methods.test.ts +438 -0
  407. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/classic/tests/to-json-schema.test.ts +3125 -0
  408. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/classic/tests/transform.test.ts +378 -0
  409. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/classic/tests/tuple.test.ts +496 -0
  410. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/classic/tests/union.test.ts +273 -0
  411. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/classic/tests/url.test.ts +13 -0
  412. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/classic/tests/validations.test.ts +283 -0
  413. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/classic/tests/void.test.ts +12 -0
  414. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/core/api.ts +1823 -0
  415. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/core/checks.ts +1293 -0
  416. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/core/config.ts +15 -0
  417. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/core/core.ts +153 -0
  418. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/core/doc.ts +44 -0
  419. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/core/errors.ts +455 -0
  420. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/core/index.ts +16 -0
  421. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/core/json-schema-generator.ts +126 -0
  422. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/core/json-schema-processors.ts +666 -0
  423. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/core/json-schema.ts +147 -0
  424. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/core/parse.ts +195 -0
  425. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/core/regexes.ts +190 -0
  426. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/core/registries.ts +105 -0
  427. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/core/schemas.ts +4730 -0
  428. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/core/standard-schema.ts +159 -0
  429. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/core/tests/extend.test.ts +59 -0
  430. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/core/tests/index.test.ts +46 -0
  431. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/core/tests/locales/be.test.ts +124 -0
  432. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/core/tests/locales/el.test.ts +215 -0
  433. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/core/tests/locales/en.test.ts +22 -0
  434. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/core/tests/locales/es.test.ts +181 -0
  435. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/core/tests/locales/fr.test.ts +72 -0
  436. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/core/tests/locales/he.test.ts +379 -0
  437. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/core/tests/locales/hr.test.ts +163 -0
  438. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/core/tests/locales/nl.test.ts +46 -0
  439. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/core/tests/locales/ru.test.ts +128 -0
  440. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/core/tests/locales/tr.test.ts +69 -0
  441. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/core/tests/locales/uz.test.ts +105 -0
  442. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/core/tests/record-constructor.test.ts +125 -0
  443. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/core/tests/recursive-tuples.test.ts +45 -0
  444. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/core/to-json-schema.ts +622 -0
  445. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/core/util.ts +983 -0
  446. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/core/versions.ts +5 -0
  447. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/core/zsf.ts +323 -0
  448. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/index.ts +4 -0
  449. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/locales/ar.ts +115 -0
  450. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/locales/az.ts +111 -0
  451. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/locales/be.ts +176 -0
  452. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/locales/bg.ts +128 -0
  453. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/locales/ca.ts +116 -0
  454. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/locales/cs.ts +118 -0
  455. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/locales/da.ts +123 -0
  456. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/locales/de.ts +116 -0
  457. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/locales/el.ts +121 -0
  458. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/locales/en.ts +123 -0
  459. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/locales/eo.ts +118 -0
  460. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/locales/es.ts +141 -0
  461. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/locales/fa.ts +126 -0
  462. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/locales/fi.ts +121 -0
  463. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/locales/fr-CA.ts +116 -0
  464. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/locales/fr.ts +132 -0
  465. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/locales/he.ts +246 -0
  466. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/locales/hr.ts +131 -0
  467. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/locales/hu.ts +117 -0
  468. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/locales/hy.ts +164 -0
  469. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/locales/id.ts +115 -0
  470. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/locales/index.ts +52 -0
  471. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/locales/is.ts +119 -0
  472. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/locales/it.ts +116 -0
  473. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/locales/ja.ts +114 -0
  474. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/locales/ka.ts +123 -0
  475. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/locales/kh.ts +7 -0
  476. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/locales/km.ts +119 -0
  477. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/locales/ko.ts +121 -0
  478. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/locales/lt.ts +239 -0
  479. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/locales/mk.ts +118 -0
  480. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/locales/ms.ts +115 -0
  481. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/locales/nl.ts +121 -0
  482. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/locales/no.ts +116 -0
  483. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/locales/ota.ts +117 -0
  484. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/locales/pl.ts +118 -0
  485. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/locales/ps.ts +126 -0
  486. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/locales/pt.ts +116 -0
  487. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/locales/ro.ts +129 -0
  488. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/locales/ru.ts +176 -0
  489. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/locales/sl.ts +118 -0
  490. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/locales/sv.ts +119 -0
  491. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/locales/ta.ts +118 -0
  492. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/locales/th.ts +119 -0
  493. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/locales/tr.ts +111 -0
  494. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/locales/ua.ts +7 -0
  495. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/locales/uk.ts +117 -0
  496. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/locales/ur.ts +119 -0
  497. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/locales/uz.ts +117 -0
  498. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/locales/vi.ts +117 -0
  499. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/locales/yo.ts +124 -0
  500. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/locales/zh-CN.ts +116 -0
  501. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/locales/zh-TW.ts +115 -0
  502. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/mini/checks.ts +32 -0
  503. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/mini/coerce.ts +27 -0
  504. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/mini/external.ts +41 -0
  505. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/mini/index.ts +3 -0
  506. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/mini/iso.ts +66 -0
  507. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/mini/parse.ts +14 -0
  508. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/mini/schemas.ts +1947 -0
  509. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/mini/tests/apply.test.ts +24 -0
  510. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/mini/tests/assignability.test.ts +129 -0
  511. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/mini/tests/brand.test.ts +94 -0
  512. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/mini/tests/checks.test.ts +144 -0
  513. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/mini/tests/codec.test.ts +548 -0
  514. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/mini/tests/computed.test.ts +36 -0
  515. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/mini/tests/error.test.ts +22 -0
  516. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/mini/tests/functions.test.ts +5 -0
  517. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/mini/tests/index.test.ts +993 -0
  518. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/mini/tests/number.test.ts +95 -0
  519. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/mini/tests/object.test.ts +227 -0
  520. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/mini/tests/prototypes.test.ts +43 -0
  521. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/mini/tests/recursive-types.test.ts +325 -0
  522. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/mini/tests/standard-schema.test.ts +50 -0
  523. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4/mini/tests/string.test.ts +352 -0
  524. package/node_modules/@undefineds.co/drizzle-solid/node_modules/zod/src/v4-mini/index.ts +3 -0
  525. package/node_modules/@undefineds.co/models/node_modules/n3/browser/n3.min.js +1 -0
  526. package/node_modules/@undefineds.co/solid-sdk/dist/access-route.cjs +87 -9
  527. package/node_modules/@undefineds.co/solid-sdk/dist/access-route.d.ts +31 -3
  528. package/node_modules/@undefineds.co/solid-sdk/dist/access-route.js +156 -14
  529. package/node_modules/@undefineds.co/solid-sdk/dist/index.cjs +86 -8
  530. package/node_modules/jose/dist/browser/index.js +30 -0
  531. package/node_modules/jose/dist/browser/jwe/compact/decrypt.js +27 -0
  532. package/node_modules/jose/dist/browser/jwe/compact/encrypt.js +26 -0
  533. package/node_modules/jose/dist/browser/jwe/flattened/decrypt.js +161 -0
  534. package/node_modules/jose/dist/browser/jwe/flattened/encrypt.js +153 -0
  535. package/node_modules/jose/dist/browser/jwe/general/decrypt.js +31 -0
  536. package/node_modules/jose/dist/browser/jwe/general/encrypt.js +174 -0
  537. package/node_modules/jose/dist/browser/jwk/embedded.js +17 -0
  538. package/node_modules/jose/dist/browser/jwk/thumbprint.js +53 -0
  539. package/node_modules/jose/dist/browser/jwks/local.js +124 -0
  540. package/node_modules/jose/dist/browser/jwks/remote.js +139 -0
  541. package/node_modules/jose/dist/browser/jws/compact/sign.js +17 -0
  542. package/node_modules/jose/dist/browser/jws/compact/verify.js +21 -0
  543. package/node_modules/jose/dist/browser/jws/flattened/sign.js +81 -0
  544. package/node_modules/jose/dist/browser/jws/flattened/verify.js +122 -0
  545. package/node_modules/jose/dist/browser/jws/general/sign.js +67 -0
  546. package/node_modules/jose/dist/browser/jws/general/verify.js +24 -0
  547. package/node_modules/jose/dist/browser/jwt/decrypt.js +23 -0
  548. package/node_modules/jose/dist/browser/jwt/encrypt.js +68 -0
  549. package/node_modules/jose/dist/browser/jwt/produce.js +75 -0
  550. package/node_modules/jose/dist/browser/jwt/sign.js +20 -0
  551. package/node_modules/jose/dist/browser/jwt/unsecured.js +32 -0
  552. package/node_modules/jose/dist/browser/jwt/verify.js +15 -0
  553. package/node_modules/jose/dist/browser/key/export.js +12 -0
  554. package/node_modules/jose/dist/browser/key/generate_key_pair.js +4 -0
  555. package/node_modules/jose/dist/browser/key/generate_secret.js +4 -0
  556. package/node_modules/jose/dist/browser/key/import.js +45 -0
  557. package/node_modules/jose/dist/browser/lib/aesgcmkw.js +16 -0
  558. package/node_modules/jose/dist/browser/lib/buffer_utils.js +51 -0
  559. package/node_modules/jose/dist/browser/lib/cek.js +20 -0
  560. package/node_modules/jose/dist/browser/lib/check_iv_length.js +8 -0
  561. package/node_modules/jose/dist/browser/lib/check_key_type.js +77 -0
  562. package/node_modules/jose/dist/browser/lib/check_p2s.js +6 -0
  563. package/node_modules/jose/dist/browser/lib/crypto_key.js +157 -0
  564. package/node_modules/jose/dist/browser/lib/decrypt_key_management.js +129 -0
  565. package/node_modules/jose/dist/browser/lib/encrypt_key_management.js +89 -0
  566. package/node_modules/jose/dist/browser/lib/epoch.js +1 -0
  567. package/node_modules/jose/dist/browser/lib/format_pem.js +4 -0
  568. package/node_modules/jose/dist/browser/lib/invalid_key_input.js +31 -0
  569. package/node_modules/jose/dist/browser/lib/is_disjoint.js +22 -0
  570. package/node_modules/jose/dist/browser/lib/is_jwk.js +13 -0
  571. package/node_modules/jose/dist/browser/lib/is_object.js +16 -0
  572. package/node_modules/jose/dist/browser/lib/iv.js +20 -0
  573. package/node_modules/jose/dist/browser/lib/jwt_claims_set.js +104 -0
  574. package/node_modules/jose/dist/browser/lib/private_symbols.js +1 -0
  575. package/node_modules/jose/dist/browser/lib/secs.js +55 -0
  576. package/node_modules/jose/dist/browser/lib/validate_algorithms.js +11 -0
  577. package/node_modules/jose/dist/browser/lib/validate_crit.js +34 -0
  578. package/node_modules/jose/dist/browser/package.json +1 -0
  579. package/node_modules/jose/dist/browser/runtime/aeskw.js +32 -0
  580. package/node_modules/jose/dist/browser/runtime/asn1.js +205 -0
  581. package/node_modules/jose/dist/browser/runtime/base64url.js +37 -0
  582. package/node_modules/jose/dist/browser/runtime/bogus.js +6 -0
  583. package/node_modules/jose/dist/browser/runtime/check_cek_length.js +8 -0
  584. package/node_modules/jose/dist/browser/runtime/check_key_length.js +8 -0
  585. package/node_modules/jose/dist/browser/runtime/decrypt.js +91 -0
  586. package/node_modules/jose/dist/browser/runtime/digest.js +6 -0
  587. package/node_modules/jose/dist/browser/runtime/ecdhes.js +47 -0
  588. package/node_modules/jose/dist/browser/runtime/encrypt.js +76 -0
  589. package/node_modules/jose/dist/browser/runtime/fetch_jwks.js +34 -0
  590. package/node_modules/jose/dist/browser/runtime/generate.js +143 -0
  591. package/node_modules/jose/dist/browser/runtime/get_sign_verify_key.js +24 -0
  592. package/node_modules/jose/dist/browser/runtime/is_key_like.js +8 -0
  593. package/node_modules/jose/dist/browser/runtime/jwk_to_key.js +104 -0
  594. package/node_modules/jose/dist/browser/runtime/key_to_jwk.js +21 -0
  595. package/node_modules/jose/dist/browser/runtime/normalize_key.js +68 -0
  596. package/node_modules/jose/dist/browser/runtime/pbes2kw.js +51 -0
  597. package/node_modules/jose/dist/browser/runtime/random.js +2 -0
  598. package/node_modules/jose/dist/browser/runtime/rsaes.js +37 -0
  599. package/node_modules/jose/dist/browser/runtime/runtime.js +1 -0
  600. package/node_modules/jose/dist/browser/runtime/sign.js +11 -0
  601. package/node_modules/jose/dist/browser/runtime/subtle_dsa.js +28 -0
  602. package/node_modules/jose/dist/browser/runtime/subtle_rsaes.js +12 -0
  603. package/node_modules/jose/dist/browser/runtime/timing_safe_equal.js +19 -0
  604. package/node_modules/jose/dist/browser/runtime/verify.js +16 -0
  605. package/node_modules/jose/dist/browser/runtime/webcrypto.js +2 -0
  606. package/node_modules/jose/dist/browser/util/base64url.js +3 -0
  607. package/node_modules/jose/dist/browser/util/decode_jwt.js +32 -0
  608. package/node_modules/jose/dist/browser/util/decode_protected_header.js +34 -0
  609. package/node_modules/jose/dist/browser/util/errors.js +114 -0
  610. package/node_modules/jose/dist/browser/util/runtime.js +2 -0
  611. package/node_modules/openid-client/node_modules/jose/dist/browser/index.js +32 -0
  612. package/node_modules/openid-client/node_modules/jose/dist/browser/jwe/compact/decrypt.js +27 -0
  613. package/node_modules/openid-client/node_modules/jose/dist/browser/jwe/compact/encrypt.js +26 -0
  614. package/node_modules/openid-client/node_modules/jose/dist/browser/jwe/flattened/decrypt.js +166 -0
  615. package/node_modules/openid-client/node_modules/jose/dist/browser/jwe/flattened/encrypt.js +175 -0
  616. package/node_modules/openid-client/node_modules/jose/dist/browser/jwe/general/decrypt.js +31 -0
  617. package/node_modules/openid-client/node_modules/jose/dist/browser/jwe/general/encrypt.js +178 -0
  618. package/node_modules/openid-client/node_modules/jose/dist/browser/jwk/embedded.js +17 -0
  619. package/node_modules/openid-client/node_modules/jose/dist/browser/jwk/thumbprint.js +53 -0
  620. package/node_modules/openid-client/node_modules/jose/dist/browser/jwks/local.js +116 -0
  621. package/node_modules/openid-client/node_modules/jose/dist/browser/jwks/remote.js +76 -0
  622. package/node_modules/openid-client/node_modules/jose/dist/browser/jws/compact/sign.js +17 -0
  623. package/node_modules/openid-client/node_modules/jose/dist/browser/jws/compact/verify.js +21 -0
  624. package/node_modules/openid-client/node_modules/jose/dist/browser/jws/flattened/sign.js +81 -0
  625. package/node_modules/openid-client/node_modules/jose/dist/browser/jws/flattened/verify.js +115 -0
  626. package/node_modules/openid-client/node_modules/jose/dist/browser/jws/general/sign.js +67 -0
  627. package/node_modules/openid-client/node_modules/jose/dist/browser/jws/general/verify.js +24 -0
  628. package/node_modules/openid-client/node_modules/jose/dist/browser/jwt/decrypt.js +23 -0
  629. package/node_modules/openid-client/node_modules/jose/dist/browser/jwt/encrypt.js +68 -0
  630. package/node_modules/openid-client/node_modules/jose/dist/browser/jwt/produce.js +54 -0
  631. package/node_modules/openid-client/node_modules/jose/dist/browser/jwt/sign.js +21 -0
  632. package/node_modules/openid-client/node_modules/jose/dist/browser/jwt/unsecured.js +32 -0
  633. package/node_modules/openid-client/node_modules/jose/dist/browser/jwt/verify.js +16 -0
  634. package/node_modules/openid-client/node_modules/jose/dist/browser/key/export.js +12 -0
  635. package/node_modules/openid-client/node_modules/jose/dist/browser/key/generate_key_pair.js +4 -0
  636. package/node_modules/openid-client/node_modules/jose/dist/browser/key/generate_secret.js +4 -0
  637. package/node_modules/openid-client/node_modules/jose/dist/browser/key/import.js +50 -0
  638. package/node_modules/openid-client/node_modules/jose/dist/browser/lib/aesgcmkw.js +14 -0
  639. package/node_modules/openid-client/node_modules/jose/dist/browser/lib/buffer_utils.js +51 -0
  640. package/node_modules/openid-client/node_modules/jose/dist/browser/lib/cek.js +20 -0
  641. package/node_modules/openid-client/node_modules/jose/dist/browser/lib/check_iv_length.js +8 -0
  642. package/node_modules/openid-client/node_modules/jose/dist/browser/lib/check_key_type.js +45 -0
  643. package/node_modules/openid-client/node_modules/jose/dist/browser/lib/check_p2s.js +6 -0
  644. package/node_modules/openid-client/node_modules/jose/dist/browser/lib/crypto_key.js +152 -0
  645. package/node_modules/openid-client/node_modules/jose/dist/browser/lib/decrypt_key_management.js +127 -0
  646. package/node_modules/openid-client/node_modules/jose/dist/browser/lib/encrypt_key_management.js +87 -0
  647. package/node_modules/openid-client/node_modules/jose/dist/browser/lib/epoch.js +1 -0
  648. package/node_modules/openid-client/node_modules/jose/dist/browser/lib/format_pem.js +4 -0
  649. package/node_modules/openid-client/node_modules/jose/dist/browser/lib/invalid_key_input.js +30 -0
  650. package/node_modules/openid-client/node_modules/jose/dist/browser/lib/is_disjoint.js +22 -0
  651. package/node_modules/openid-client/node_modules/jose/dist/browser/lib/is_object.js +16 -0
  652. package/node_modules/openid-client/node_modules/jose/dist/browser/lib/iv.js +20 -0
  653. package/node_modules/openid-client/node_modules/jose/dist/browser/lib/jwt_claims_set.js +102 -0
  654. package/node_modules/openid-client/node_modules/jose/dist/browser/lib/secs.js +44 -0
  655. package/node_modules/openid-client/node_modules/jose/dist/browser/lib/validate_algorithms.js +11 -0
  656. package/node_modules/openid-client/node_modules/jose/dist/browser/lib/validate_crit.js +34 -0
  657. package/node_modules/openid-client/node_modules/jose/dist/browser/package.json +1 -0
  658. package/node_modules/openid-client/node_modules/jose/dist/browser/runtime/aeskw.js +32 -0
  659. package/node_modules/openid-client/node_modules/jose/dist/browser/runtime/asn1.js +202 -0
  660. package/node_modules/openid-client/node_modules/jose/dist/browser/runtime/base64url.js +37 -0
  661. package/node_modules/openid-client/node_modules/jose/dist/browser/runtime/bogus.js +6 -0
  662. package/node_modules/openid-client/node_modules/jose/dist/browser/runtime/check_cek_length.js +8 -0
  663. package/node_modules/openid-client/node_modules/jose/dist/browser/runtime/check_key_length.js +8 -0
  664. package/node_modules/openid-client/node_modules/jose/dist/browser/runtime/decrypt.js +85 -0
  665. package/node_modules/openid-client/node_modules/jose/dist/browser/runtime/digest.js +6 -0
  666. package/node_modules/openid-client/node_modules/jose/dist/browser/runtime/ecdhes.js +46 -0
  667. package/node_modules/openid-client/node_modules/jose/dist/browser/runtime/encrypt.js +68 -0
  668. package/node_modules/openid-client/node_modules/jose/dist/browser/runtime/fetch_jwks.js +34 -0
  669. package/node_modules/openid-client/node_modules/jose/dist/browser/runtime/generate.js +141 -0
  670. package/node_modules/openid-client/node_modules/jose/dist/browser/runtime/get_sign_verify_key.js +17 -0
  671. package/node_modules/openid-client/node_modules/jose/dist/browser/runtime/is_key_like.js +5 -0
  672. package/node_modules/openid-client/node_modules/jose/dist/browser/runtime/jwk_to_key.js +143 -0
  673. package/node_modules/openid-client/node_modules/jose/dist/browser/runtime/key_to_jwk.js +21 -0
  674. package/node_modules/openid-client/node_modules/jose/dist/browser/runtime/pbes2kw.js +51 -0
  675. package/node_modules/openid-client/node_modules/jose/dist/browser/runtime/random.js +2 -0
  676. package/node_modules/openid-client/node_modules/jose/dist/browser/runtime/rsaes.js +37 -0
  677. package/node_modules/openid-client/node_modules/jose/dist/browser/runtime/runtime.js +1 -0
  678. package/node_modules/openid-client/node_modules/jose/dist/browser/runtime/sign.js +11 -0
  679. package/node_modules/openid-client/node_modules/jose/dist/browser/runtime/subtle_dsa.js +26 -0
  680. package/node_modules/openid-client/node_modules/jose/dist/browser/runtime/subtle_rsaes.js +12 -0
  681. package/node_modules/openid-client/node_modules/jose/dist/browser/runtime/timing_safe_equal.js +19 -0
  682. package/node_modules/openid-client/node_modules/jose/dist/browser/runtime/verify.js +16 -0
  683. package/node_modules/openid-client/node_modules/jose/dist/browser/runtime/webcrypto.js +2 -0
  684. package/node_modules/openid-client/node_modules/jose/dist/browser/runtime/zlib.js +7 -0
  685. package/node_modules/openid-client/node_modules/jose/dist/browser/util/base64url.js +3 -0
  686. package/node_modules/openid-client/node_modules/jose/dist/browser/util/decode_jwt.js +32 -0
  687. package/node_modules/openid-client/node_modules/jose/dist/browser/util/decode_protected_header.js +34 -0
  688. package/node_modules/openid-client/node_modules/jose/dist/browser/util/errors.js +158 -0
  689. package/node_modules/openid-client/node_modules/jose/dist/browser/util/runtime.js +2 -0
  690. package/package.json +2 -3
  691. package/static/app/assets/main.css +1 -1
  692. package/static/app/assets/main.js +13 -12
  693. package/static/dashboard/assets/{AiConfigContext-BedwuLTE.js → AiConfigContext-B5QP7ow2.js} +1 -1
  694. package/static/dashboard/assets/{AiConfigPage-hNTayf8G.js → AiConfigPage-C_TdlUjq.js} +1 -1
  695. package/static/dashboard/assets/{DocumentProcessingPanel-BSb_vOj7.js → DocumentProcessingPanel-CormNOdI.js} +1 -1
  696. package/static/dashboard/assets/{IndexLifecyclePanel-DAHx-PBG.js → IndexLifecyclePanel-S9wNNyHO.js} +1 -1
  697. package/static/dashboard/assets/{IndexSubjectPanel-Bv97-ouZ.js → IndexSubjectPanel-CofZT1oE.js} +1 -1
  698. package/static/dashboard/assets/{ModelAssignmentsPanel-CEJZs9At.js → ModelAssignmentsPanel-9tgOjj-y.js} +1 -1
  699. package/static/dashboard/assets/{ModelsPage-DkBVXmKT.js → ModelsPage-DZ46VnUh.js} +3 -3
  700. package/static/dashboard/assets/NetworkPage-TwbIWASf.js +2 -0
  701. package/static/dashboard/assets/{PaneListHeader-ByqK_C6i.js → PaneListHeader-BtVnyutC.js} +1 -1
  702. package/static/dashboard/assets/{SearchIndexingPanel-M-WYaQP3.js → SearchIndexingPanel-BCq_YMOP.js} +1 -1
  703. package/static/dashboard/assets/{StatusSubjectPanel-DPegcFpA.js → StatusSubjectPanel-DsUKTysU.js} +1 -1
  704. package/static/dashboard/assets/{StatusWorkspace-CPIkjO9S.js → StatusWorkspace-CaVJBRqI.js} +1 -1
  705. package/static/dashboard/assets/{SystemSettingsPage-LyXmd6uP.js → SystemSettingsPage-DRWfPjtu.js} +1 -1
  706. package/static/dashboard/assets/{SystemSettingsSubjectPanel-CYHqNIn2.js → SystemSettingsSubjectPanel-CgDP7Ii2.js} +1 -1
  707. package/static/dashboard/assets/{XpodAiConnectionsPodStore-DXNERI2-.js → XpodAiConnectionsPodStore-C9tHqutw.js} +1 -1
  708. package/static/dashboard/assets/{activity-BwRbcTha.js → activity-tgjewO88.js} +1 -1
  709. package/static/dashboard/assets/{badge-BbRb9MsQ.js → badge-Czun47II.js} +1 -1
  710. package/static/dashboard/assets/{collection-runtime-BRfZD5oS.js → collection-runtime-DnYlU23-.js} +1 -1
  711. package/static/dashboard/assets/{dashboard-D2ozrATv.js → dashboard-CF8SbVSR.js} +106 -106
  712. package/static/dashboard/assets/dashboard-DvuM3VTP.css +1 -0
  713. package/static/dashboard/assets/{dialog-BbRbILBP.js → dialog-D-Yc_lg-.js} +1 -1
  714. package/static/dashboard/assets/{download-SIHe8Y5t.js → download-vFuOkjCi.js} +1 -1
  715. package/static/dashboard/assets/{external-link-CiYw5Q4U.js → external-link-Cg_VIecD.js} +1 -1
  716. package/static/dashboard/assets/{index-DC1jRaVA.js → index-0au0WwkE.js} +1 -1
  717. package/static/dashboard/assets/{index-CExLoewO.js → index-IXCNeEwi.js} +1 -1
  718. package/static/dashboard/assets/{index-CTgU8YW1.js → index-YDcVky3o.js} +1 -1
  719. package/static/dashboard/assets/{key-round-nKtxP6pb.js → key-round-9n1xgLbG.js} +1 -1
  720. package/static/dashboard/assets/{rotate-ccw-CQm5hHMN.js → rotate-ccw-DJ6s86DW.js} +1 -1
  721. package/static/dashboard/assets/{skeleton-TKyLbiPs.js → skeleton-Dg9HePtI.js} +1 -1
  722. package/static/dashboard/assets/{waypoints-BQS9t0ky.js → waypoints-uxc_qOzk.js} +1 -1
  723. package/static/dashboard/assets/{workspace-layout-Csbbr3vZ.js → workspace-layout-BNtAXhPW.js} +1 -1
  724. package/static/dashboard/dashboard.html +2 -2
  725. package/static/settings/assets/{AiConfigContext-eLRkXFtH.js → AiConfigContext-y6ha7pGs.js} +1 -1
  726. package/static/settings/assets/AiConfigPage-CIcIWdXA.js +1 -0
  727. package/static/settings/assets/{DocumentProcessingPanel-CH-HBRzQ.js → DocumentProcessingPanel-Oa_cxMcn.js} +1 -1
  728. package/static/settings/assets/{IndexLifecyclePanel-ChEMn9D8.js → IndexLifecyclePanel-DlrnI0Kh.js} +1 -1
  729. package/static/settings/assets/{IndexSubjectPanel-DT0c11VQ.js → IndexSubjectPanel-Dhsl0W32.js} +1 -1
  730. package/static/settings/assets/{ModelAssignmentsPanel-T59L_wOk.js → ModelAssignmentsPanel-CHoiRZeL.js} +1 -1
  731. package/static/settings/assets/{ModelsPage-m_SP4PdE.js → ModelsPage-CuNW1hGX.js} +3 -3
  732. package/static/settings/assets/NetworkPage-BBD2Lc_P.js +2 -0
  733. package/static/settings/assets/{PaneListHeader-Da5jZFvG.js → PaneListHeader-C81adSBX.js} +1 -1
  734. package/static/settings/assets/{SearchIndexingPanel-DQQd3-Jw.js → SearchIndexingPanel-Dc4QKWd0.js} +1 -1
  735. package/static/settings/assets/{StatusSubjectPanel-Upqqlvon.js → StatusSubjectPanel-DuxOvqzS.js} +1 -1
  736. package/static/settings/assets/StatusWorkspace-DeD3zi3G.js +1 -0
  737. package/static/settings/assets/SystemSettingsPage-8sHOaPb8.js +1 -0
  738. package/static/settings/assets/{SystemSettingsSubjectPanel-BOm7tUH1.js → SystemSettingsSubjectPanel-B1JXut7S.js} +1 -1
  739. package/static/settings/assets/{XpodAiConnectionsPodStore-nFgD_usD.js → XpodAiConnectionsPodStore-G0ClZksP.js} +2 -2
  740. package/static/settings/assets/{activity-CWy1W2W0.js → activity-DT8pzOea.js} +1 -1
  741. package/static/settings/assets/auth-callback-1BlsOtMG.js +1 -0
  742. package/static/settings/assets/{badge-v30yFaaj.js → badge-CvKRjSY2.js} +1 -1
  743. package/static/settings/assets/{collection-runtime-B7oomxic.js → collection-runtime-C6ZAp2cM.js} +1 -1
  744. package/static/settings/assets/{dialog-BAe7moyL.js → dialog-LFluK7Nx.js} +1 -1
  745. package/static/settings/assets/{download-C3Dzb60R.js → download-CZJeqUm1.js} +1 -1
  746. package/static/settings/assets/{external-link-DnkJGKNc.js → external-link-BsDft3Oe.js} +1 -1
  747. package/static/settings/assets/global-DvuM3VTP.css +1 -0
  748. package/static/settings/assets/{global-B_WO-aYY.js → global-cmKEraT4.js} +106 -106
  749. package/static/settings/assets/{index-B51ot_m_.js → index-BMPlaRWG.js} +1 -1
  750. package/static/settings/assets/{index-DbqRFton.js → index-BiqSFOS1.js} +1 -1
  751. package/static/settings/assets/{index-CHBQVfuZ.js → index-XRgmPBKw.js} +1 -1
  752. package/static/settings/assets/{index-browser-DzhsXZHm.js → index-browser-B0slhJKc.js} +1 -1
  753. package/static/settings/assets/{key-round-DoDbsLae.js → key-round-D1XsWbN_.js} +1 -1
  754. package/static/settings/assets/{rotate-ccw-DNR_R3oT.js → rotate-ccw-CEe0P0fY.js} +1 -1
  755. package/static/settings/assets/settings-DfjkqEJ8.js +1 -0
  756. package/static/settings/assets/{skeleton-BjHhu9qI.js → skeleton-DA404w6m.js} +1 -1
  757. package/static/settings/assets/{waypoints-BXNph9Fd.js → waypoints-DJDWc4S9.js} +1 -1
  758. package/static/settings/assets/{workspace-layout-TZ7fteel.js → workspace-layout-K38jT4OV.js} +1 -1
  759. package/static/settings/auth-callback.html +3 -3
  760. package/static/settings/settings.html +3 -3
  761. package/dist/api/background-service-supervisor.d.ts +0 -63
  762. package/dist/api/background-service-supervisor.js +0 -144
  763. package/dist/api/network/EndpointReachabilityProbe.d.ts +0 -40
  764. package/dist/api/network/EndpointReachabilityProbe.js +0 -129
  765. package/dist/edge/acme/CertificateRenewalScheduler.d.ts +0 -67
  766. package/dist/edge/acme/CertificateRenewalScheduler.js +0 -116
  767. package/dist/edge/reachability/P2PDataPlaneCrypto.d.ts +0 -42
  768. package/dist/edge/reachability/P2PDataPlaneCrypto.js +0 -113
  769. package/dist/edge/reachability/P2PDataPlaneCrypto.jsonld +0 -69
  770. package/dist/edge/reachability/RouteValidation.d.ts +0 -29
  771. package/dist/edge/reachability/RouteValidation.js +0 -58
  772. package/dist/runtime/ingress-occupant.d.ts +0 -39
  773. package/dist/runtime/ingress-occupant.js +0 -111
  774. package/dist/runtime/ingress-port.d.ts +0 -89
  775. package/dist/runtime/ingress-port.js +0 -165
  776. package/dist/runtime/port-reservations.d.ts +0 -86
  777. package/dist/runtime/port-reservations.js +0 -183
  778. package/dist/tunnel/TunnelClientManager.d.ts +0 -73
  779. package/dist/tunnel/TunnelClientManager.js +0 -181
  780. package/dist/tunnel/TunnelClientResolver.d.ts +0 -56
  781. package/dist/tunnel/TunnelClientResolver.js +0 -135
  782. package/dist/tunnel/TunnelDeclaredOrigin.d.ts +0 -78
  783. package/dist/tunnel/TunnelDeclaredOrigin.js +0 -185
  784. package/node_modules/@undefineds.co/extensions/dist-cjs/adapters/langchain.js +0 -49
  785. package/node_modules/@undefineds.co/extensions/dist-cjs/adapters/llamaindex.js +0 -54
  786. package/node_modules/@undefineds.co/extensions/dist-cjs/index.js +0 -22
  787. package/node_modules/@undefineds.co/extensions/dist-cjs/package.json +0 -3
  788. package/node_modules/@undefineds.co/extensions/dist-cjs/paddleocr.js +0 -304
  789. package/node_modules/@undefineds.co/extensions/dist-cjs/reader.js +0 -44
  790. package/node_modules/@undefineds.co/extensions/dist-cjs/registry.js +0 -99
  791. package/node_modules/@undefineds.co/extensions/dist-cjs/types.js +0 -2
  792. package/node_modules/openid-client/types/index.d.ts +0 -623
  793. package/static/dashboard/assets/NetworkPage-BDqKgRZQ.js +0 -2
  794. package/static/dashboard/assets/dashboard-rk080mvG.css +0 -1
  795. package/static/settings/assets/AiConfigPage-BMO-ytdK.js +0 -1
  796. package/static/settings/assets/NetworkPage-D50kdbEu.js +0 -2
  797. package/static/settings/assets/StatusWorkspace-CPB49bGd.js +0 -1
  798. package/static/settings/assets/SystemSettingsPage-C0wrxcNw.js +0 -1
  799. package/static/settings/assets/auth-callback-HhgEuohz.js +0 -1
  800. package/static/settings/assets/global-rk080mvG.css +0 -1
  801. package/static/settings/assets/settings-BOznrBjy.js +0 -1
@@ -7,28 +7,46 @@ const drizzle_solid_1 = require("@undefineds.co/drizzle-solid");
7
7
  const models_1 = require("@undefineds.co/models");
8
8
  const reconciler_1 = require("../reconciler");
9
9
  const protocol_metadata_1 = require("../protocol-metadata");
10
+ const MatrixError_1 = require("./MatrixError");
11
+ const MatrixEventJournal_1 = require("./MatrixEventJournal");
12
+ const WakeAgentQueue_1 = require("../reconciler/WakeAgentQueue");
10
13
  const AuthContext_1 = require("../auth/AuthContext");
11
14
  const schema = {
12
15
  chat: models_1.chatResource,
13
16
  thread: models_1.threadResource,
14
17
  message: models_1.messageResource,
18
+ run: models_1.runResource,
19
+ runStep: models_1.runStepResource,
20
+ delivery: models_1.deliveryResource,
15
21
  };
16
22
  class PodMatrixStore {
17
23
  constructor(options) {
18
24
  this.logger = (0, global_logger_factory_1.getLoggerFor)(this);
19
25
  this.serverName = options.serverName;
26
+ this.podAccess = options.podAccess;
27
+ this.journal = options.journal ?? new MatrixEventJournal_1.InMemoryMatrixEventJournal();
20
28
  this.serverGroupReconcilerService = options.serverGroupReconcilerService;
21
29
  }
22
30
  async getAccount(context) {
23
31
  const matrixUserId = this.getMatrixUserId(context);
24
32
  return {
25
33
  userId: matrixUserId,
26
- deviceId: this.deviceIdFromUserId(context.webId),
34
+ deviceId: this.deviceId(context),
27
35
  displayName: this.displayNameFromUserId(matrixUserId),
28
36
  };
29
37
  }
30
38
  async createRoom(input, context) {
31
39
  const db = await this.getDb(context);
40
+ for (const state of input.initial_state ?? []) {
41
+ if (['m.room.create', 'm.room.member', 'm.room.encryption'].includes(state.type)) {
42
+ throw new MatrixError_1.MatrixError(400, 'M_BAD_JSON', 'Unsupported initial state event');
43
+ }
44
+ if (state.type === 'co.undefineds.agents')
45
+ this.validateAgentGrants(state.content ?? {});
46
+ }
47
+ if (input.creation_content?.['m.federate'] === true || (input.creation_content?.room_version && input.creation_content.room_version !== '11')) {
48
+ throw new MatrixError_1.MatrixError(400, 'M_UNSUPPORTED_ROOM_VERSION', 'Only non-federated room version 11 is supported');
49
+ }
32
50
  const sender = this.getMatrixUserId(context);
33
51
  const now = Date.now();
34
52
  const roomId = this.generateRoomId(context);
@@ -44,6 +62,7 @@ class PodMatrixStore {
44
62
  status: 'active',
45
63
  participants: [context.webId],
46
64
  metadata: (0, protocol_metadata_1.withProtocolMetadata)({
65
+ '@id': `${this.chatIri(roomId, context)}/metadata`,
47
66
  protocol: 'matrix',
48
67
  ...coordination,
49
68
  }, 'matrix', {
@@ -61,10 +80,11 @@ class PodMatrixStore {
61
80
  });
62
81
  await db.insert(models_1.threadResource).values({
63
82
  id: threadId,
64
- parent: this.chatParentRefFromRoomId(roomId),
83
+ parent: this.chatIri(roomId, context),
65
84
  title: input.name ?? roomId,
66
85
  status: 'active',
67
86
  metadata: (0, protocol_metadata_1.withProtocolMetadata)({
87
+ '@id': `${this.threadIri(roomId, context)}/metadata`,
68
88
  protocol: 'matrix',
69
89
  commandKind: 'chat',
70
90
  surface_id: this.surfaceIdFromRoomId(roomId),
@@ -148,82 +168,134 @@ class PodMatrixStore {
148
168
  async joinRoom(roomIdOrAlias, context) {
149
169
  const db = await this.getDb(context);
150
170
  const roomId = await this.resolveRoomId(db, roomIdOrAlias);
151
- await this.ensureRoomExists(db, roomId);
171
+ const room = await this.roomSource(db, roomId);
152
172
  const sender = this.getMatrixUserId(context);
153
173
  const existing = await this.findLatestStateEvent(db, roomId, 'm.room.member', sender, context);
154
- if (existing?.content.membership !== 'join') {
155
- await this.appendMembershipEvent(db, roomId, sender, 'join', context);
174
+ if (existing?.content.membership === 'join')
175
+ return { roomId };
176
+ if (existing?.content.membership !== 'invite' && room.author !== context.webId) {
177
+ throw new MatrixError_1.MatrixError(403, 'M_FORBIDDEN', 'An invitation is required');
156
178
  }
179
+ if (existing?.content.membership === 'ban')
180
+ throw new MatrixError_1.MatrixError(403, 'M_FORBIDDEN', 'Banned from room');
181
+ await this.appendMembershipEvent(db, roomId, sender, 'join', context);
157
182
  return { roomId };
158
183
  }
159
184
  async inviteUser(roomId, userId, context) {
160
185
  const db = await this.getDb(context);
161
- await this.ensureRoomExists(db, roomId);
186
+ await this.requireRoomOwner(db, roomId, context);
187
+ if (!/^@[^:]+:.+$/u.test(userId))
188
+ throw new MatrixError_1.MatrixError(400, 'M_BAD_JSON', 'Invalid Matrix user id');
162
189
  await this.appendMembershipEvent(db, roomId, userId, 'invite', context);
163
190
  }
164
191
  async leaveRoom(roomId, context) {
165
192
  const db = await this.getDb(context);
166
- await this.ensureRoomExists(db, roomId);
193
+ await this.requireJoined(db, roomId, context);
167
194
  await this.appendMembershipEvent(db, roomId, this.getMatrixUserId(context), 'leave', context);
168
195
  }
169
196
  async sendEvent(roomId, eventType, txnId, content, context) {
170
197
  const db = await this.getDb(context);
171
- await this.ensureRoomExists(db, roomId);
172
- const existing = await this.findEventByTxnId(db, roomId, txnId, context);
173
- if (existing) {
198
+ await this.requireJoined(db, roomId, context);
199
+ if (eventType !== 'm.room.message')
200
+ throw new MatrixError_1.MatrixError(400, 'M_UNRECOGNIZED', 'Only m.room.message timeline events are supported');
201
+ await this.authorizeTargets(db, roomId, content, context);
202
+ const reservation = await this.journal.reserveTransaction(this.scope(context), JSON.stringify([this.deviceId(context), roomId, eventType, txnId]), {
203
+ eventId: this.generateEventId(context), createdAt: Date.now(), contentHash: this.hash(this.canonicalJson(['user', context.webId, eventType, content])),
204
+ });
205
+ if (reservation.contentHash !== this.hash(this.canonicalJson(['user', context.webId, eventType, content]))) {
206
+ throw new MatrixError_1.MatrixError(409, 'M_CONFLICT', 'Transaction already reserved with different content');
207
+ }
208
+ const source = await db.findById(models_1.messageResource, this.messageResourceIdFromEvent(roomId, reservation.eventId, reservation.createdAt));
209
+ if (source) {
210
+ const existing = this.eventSourceToRecord(source, roomId, context);
211
+ if (reservation.contentHash !== this.hash(this.canonicalJson(['user', existing.senderWebId, existing.type, existing.content]))) {
212
+ throw new MatrixError_1.MatrixError(409, 'M_CONFLICT', 'Stored event no longer matches its receipt');
213
+ }
214
+ existing.depth = await this.journal.registerEvent(this.scope(context), roomId, existing.eventId);
215
+ await this.reconcileEvent(db, existing, context);
174
216
  return existing;
175
217
  }
176
- const sender = this.getMatrixUserId(context);
177
- const event = await this.appendEvent(db, {
178
- roomId,
179
- type: eventType,
180
- sender,
181
- txnId,
182
- originServerTs: Date.now(),
183
- content,
184
- }, context);
185
- return event;
218
+ return this.appendEvent(db, { roomId, type: eventType, sender: this.getMatrixUserId(context), txnId,
219
+ eventId: reservation.eventId, originServerTs: reservation.createdAt, content }, context);
186
220
  }
187
221
  async setState(roomId, eventType, stateKey, content, context) {
188
222
  const db = await this.getDb(context);
189
- await this.ensureRoomExists(db, roomId);
190
- return this.appendEvent(db, {
191
- roomId,
192
- type: eventType,
193
- sender: this.getMatrixUserId(context),
194
- stateKey,
195
- originServerTs: Date.now(),
196
- content,
197
- }, context);
223
+ await this.requireJoined(db, roomId, context);
224
+ await this.requireRoomOwner(db, roomId, context);
225
+ if (['m.room.create', 'm.room.member', 'm.room.encryption'].includes(eventType)) {
226
+ throw new MatrixError_1.MatrixError(403, 'M_FORBIDDEN', 'Use membership operations; immutable/encrypted state is unsupported');
227
+ }
228
+ if (eventType === 'co.undefineds.agents')
229
+ this.validateAgentGrants(content);
230
+ return this.appendEvent(db, { roomId, type: eventType, sender: this.getMatrixUserId(context), stateKey,
231
+ originServerTs: Date.now(), content }, context);
198
232
  }
199
233
  async sync(context, options = {}) {
234
+ const deadline = Date.now() + Math.min(Math.max(options.timeout ?? 0, 0), 30_000);
235
+ let result;
236
+ // First pass indexes native Pod writes; the second reads a committed journal watermark.
237
+ await this.syncOnce(context, options);
238
+ do {
239
+ result = await this.syncOnce(context, options);
240
+ if (Object.values(result.rooms.join).some(room => room.timeline.events.length)
241
+ || Object.keys(result.rooms.invite ?? {}).length || Date.now() >= deadline || options.signal?.aborted)
242
+ return result;
243
+ await new Promise((resolve) => {
244
+ const done = () => { clearTimeout(timer); options.signal?.removeEventListener('abort', done); resolve(); };
245
+ const timer = setTimeout(done, Math.min(500, Math.max(0, deadline - Date.now())));
246
+ options.signal?.addEventListener('abort', done, { once: true });
247
+ });
248
+ } while (!options.signal?.aborted);
249
+ return result;
250
+ }
251
+ async syncOnce(context, options) {
200
252
  const db = await this.getDb(context);
201
- const rooms = await this.listJoinedRoomRecords(db, context);
202
- const sinceTs = this.parseSyncToken(options.since);
203
- const limit = options.limit && options.limit > 0 ? options.limit : 50;
253
+ const since = this.parseSyncToken(options.since);
254
+ const snapshot = await this.journal.getHighWatermark(this.scope(context));
255
+ const limit = Math.min(Math.max(options.limit ?? 50, 1), 1000);
204
256
  const join = {};
205
- for (const room of rooms) {
206
- const events = await this.listEvents(db, room.roomId, context, {
207
- sinceTs,
208
- limit,
209
- });
210
- join[room.roomId] = {
211
- state: {
212
- events: events.filter((event) => event.stateKey !== undefined).map((event) => this.toClientEvent(event)),
213
- },
214
- timeline: {
215
- events: events.map((event) => this.toClientEvent(event)),
216
- limited: false,
217
- },
218
- 'co.undefineds.coordination': {
219
- reconcilerOwner: room.reconcilerOwner,
220
- },
221
- };
257
+ const invite = {};
258
+ const leave = {};
259
+ const batches = [];
260
+ for (const room of await this.listRooms(db)) {
261
+ const events = (await this.listEvents(db, room.roomId, context)).filter(e => e.depth <= snapshot);
262
+ const membership = this.latestState(events, 'm.room.member', this.getMatrixUserId(context));
263
+ if (membership?.content.membership === 'invite') {
264
+ if ((membership.depth ?? 0) > since)
265
+ invite[room.roomId] = { invite_state: { events: [this.toClientEvent(membership)] } };
266
+ continue;
267
+ }
268
+ if (membership?.content.membership === 'leave' || membership?.content.membership === 'ban') {
269
+ if ((membership.depth ?? 0) > since)
270
+ leave[room.roomId] = { timeline: { events: [this.toClientEvent(membership)], limited: false } };
271
+ continue;
272
+ }
273
+ if (membership?.content.membership !== 'join' && room.creator !== context.webId)
274
+ continue;
275
+ batches.push({ room, events });
222
276
  }
223
- return {
224
- next_batch: this.encodeSyncToken(Date.now()),
225
- rooms: { join },
226
- };
277
+ const candidates = batches.flatMap(b => b.events).filter(e => (e.depth ?? 0) > since)
278
+ .sort((a, b) => (a.depth ?? 0) - (b.depth ?? 0));
279
+ const selected = candidates.slice(0, limit);
280
+ const ids = new Set(selected.map(e => e.eventId));
281
+ for (const { room, events } of batches) {
282
+ const page = events.filter(e => ids.has(e.eventId));
283
+ const state = new Map();
284
+ const firstSequence = page[0]?.depth ?? since;
285
+ // State at the start of this timeline; events in the timeline apply after it.
286
+ for (const event of events)
287
+ if (event.stateKey !== undefined && (event.depth ?? 0) < firstSequence)
288
+ state.set(JSON.stringify([event.type, event.stateKey]), event);
289
+ join[room.roomId] = { state: { events: [...state.values()].map(e => this.toClientEvent(e)) },
290
+ timeline: { events: page.map(e => this.toClientEvent(e)), limited: candidates.length > selected.length,
291
+ ...(page.length ? { prev_batch: this.encodeSyncToken((page[0].depth ?? 1) - 1) } : {}) },
292
+ 'co.undefineds.coordination': { reconcilerOwner: room.reconcilerOwner } };
293
+ }
294
+ const transitionPositions = [...Object.values(invite).flatMap(r => r.invite_state.events), ...Object.values(leave).flatMap(r => r.timeline.events)];
295
+ // When a joined timeline has backlog, do not advance past its last delivered event.
296
+ const next = selected.length ? selected[selected.length - 1].depth : since;
297
+ const high = candidates.length === 0 && transitionPositions.length ? snapshot : next;
298
+ return { next_batch: this.encodeSyncToken(high), rooms: { join, invite, leave } };
227
299
  }
228
300
  async listJoinedRooms(context) {
229
301
  const db = await this.getDb(context);
@@ -231,7 +303,7 @@ class PodMatrixStore {
231
303
  }
232
304
  async getMembers(roomId, context) {
233
305
  const db = await this.getDb(context);
234
- await this.ensureRoomExists(db, roomId);
306
+ await this.requireJoined(db, roomId, context);
235
307
  const events = await this.listEvents(db, roomId, context, { newestFirst: true });
236
308
  const latestByStateKey = new Map();
237
309
  for (const event of events) {
@@ -246,36 +318,34 @@ class PodMatrixStore {
246
318
  }
247
319
  async listMessages(roomId, context, options = {}) {
248
320
  const db = await this.getDb(context);
249
- await this.ensureRoomExists(db, roomId);
250
- const limit = options.limit && options.limit > 0 ? options.limit : 50;
251
- const fromTs = this.parseSyncToken(options.from);
321
+ await this.requireJoined(db, roomId, context);
322
+ await this.listEvents(db, roomId, context);
323
+ const snapshot = await this.journal.getHighWatermark(this.scope(context));
324
+ const all = (await this.listEvents(db, roomId, context)).filter(e => e.depth <= snapshot);
252
325
  const forward = options.dir === 'f';
253
- const events = await this.listEvents(db, roomId, context, {
254
- sinceTs: forward && fromTs > 0 ? fromTs : undefined,
255
- beforeOrAtTs: !forward && fromTs > 0 ? fromTs : undefined,
256
- limit,
257
- newestFirst: !forward,
258
- });
259
- const chunk = events.slice(0, limit).map((event) => this.toClientEvent(event));
260
- return {
261
- chunk,
262
- start: options.from,
263
- end: this.encodeSyncToken(chunk.length ? chunk[chunk.length - 1].origin_server_ts : Date.now()),
264
- };
326
+ const from = options.from ? this.parseSyncToken(options.from) : (forward ? 0 : Number.MAX_SAFE_INTEGER);
327
+ const events = all.filter(e => forward ? e.depth > from : e.depth <= from);
328
+ if (!forward)
329
+ events.reverse();
330
+ const page = events.slice(0, Math.min(Math.max(options.limit ?? 50, 1), 1000));
331
+ const boundary = page.length ? page[page.length - 1].depth - (forward ? 0 : 1) : (forward ? from : 0);
332
+ return { chunk: page.map(e => this.toClientEvent(e)), start: options.from, end: this.encodeSyncToken(boundary) };
265
333
  }
266
334
  async getEvent(roomId, eventId, context) {
267
335
  const db = await this.getDb(context);
336
+ await this.requireJoined(db, roomId, context);
268
337
  const event = await this.findEventById(db, roomId, eventId, context);
269
338
  if (!event) {
270
- throw new Error(`Matrix event not found: ${eventId}`);
339
+ throw new MatrixError_1.MatrixError(404, 'M_NOT_FOUND', 'Event not found');
271
340
  }
272
341
  return this.toClientEvent(event);
273
342
  }
274
343
  async getState(roomId, eventType, stateKey, context) {
275
344
  const db = await this.getDb(context);
345
+ await this.requireJoined(db, roomId, context);
276
346
  const event = await this.findLatestStateEvent(db, roomId, eventType, stateKey, context);
277
347
  if (!event) {
278
- throw new Error(`Matrix state not found: ${eventType}/${stateKey}`);
348
+ throw new MatrixError_1.MatrixError(404, 'M_NOT_FOUND', 'State not found');
279
349
  }
280
350
  return event.content;
281
351
  }
@@ -284,11 +354,16 @@ class PodMatrixStore {
284
354
  return context._matrixDb;
285
355
  }
286
356
  const auth = context.auth;
287
- if (!auth || !(0, AuthContext_1.isSolidAuth)(auth) || !auth.accessToken || !auth.webId) {
288
- throw new Error('Matrix API requires Solid access-token authentication');
357
+ if (!auth || !(0, AuthContext_1.isSolidAuth)(auth) || !auth.webId) {
358
+ throw new MatrixError_1.MatrixError(401, 'M_UNKNOWN_TOKEN', 'Solid authentication is required');
289
359
  }
360
+ const podFetch = this.podAccess
361
+ ? await this.podAccess.getPodFetch(context.webId, { auth, podBaseUrl: context.podUrl })
362
+ : undefined;
363
+ if (!podFetch)
364
+ throw new MatrixError_1.MatrixError(403, 'M_FORBIDDEN', 'Grant Pod interface access before using Matrix');
290
365
  const db = (0, drizzle_solid_1.drizzle)({
291
- fetch: this.createAccessTokenFetch(auth.accessToken, auth.tokenType),
366
+ fetch: podFetch,
292
367
  info: {
293
368
  webId: auth.webId,
294
369
  isLoggedIn: true,
@@ -298,29 +373,13 @@ class PodMatrixStore {
298
373
  schema,
299
374
  podUrl: context.podUrl,
300
375
  });
301
- await db.init(models_1.chatResource, models_1.threadResource, models_1.messageResource);
376
+ await db.init(models_1.chatResource, models_1.threadResource, models_1.runResource, models_1.runStepResource, models_1.deliveryResource, models_1.messageResource);
302
377
  context._matrixDb = db;
303
378
  return db;
304
379
  }
305
- createAccessTokenFetch(accessToken, tokenType) {
306
- const scheme = tokenType ?? 'Bearer';
307
- return async (input, init) => {
308
- const headers = new Headers(init?.headers);
309
- if (!headers.has('Authorization')) {
310
- headers.set('Authorization', `${scheme} ${accessToken}`);
311
- }
312
- return fetch(input, { ...init, headers });
313
- };
314
- }
315
- async ensureRoomExists(db, roomId) {
316
- const room = await db.findById(models_1.chatResource, this.chatResourceIdFromRoomId(roomId));
317
- if (!room) {
318
- throw new Error(`Matrix room not found: ${roomId}`);
319
- }
320
- }
321
380
  async appendEvent(db, input, context) {
322
- const eventId = this.generateEventId(context);
323
- const depth = await this.nextEventDepth(db, input.roomId, context);
381
+ const eventId = input.eventId ?? this.generateEventId(context);
382
+ const depth = 0;
324
383
  const originIso = new Date(input.originServerTs).toISOString();
325
384
  const needsRoomMetadata = input.reconcilerOwner === undefined
326
385
  || (input.type === 'm.room.message' && this.serverGroupReconcilerService !== undefined);
@@ -329,7 +388,7 @@ class PodMatrixStore {
329
388
  const reconcilerOwner = input.reconcilerOwner ?? this.reconcilerOwnerFromRoomMetadata(roomMetadata);
330
389
  const coordination = (0, reconciler_1.reconcilerCoordinationMetadata)(reconcilerOwner);
331
390
  const messageResourceId = this.messageResourceIdFromEvent(input.roomId, eventId, input.originServerTs);
332
- const thread = this.resolveDataResourceUriFromId(this.threadResourceIdFromRoomId(input.roomId), context);
391
+ const thread = this.threadIri(input.roomId, context);
333
392
  const contentText = this.messageContentFromMatrixEvent(input.type, input.content);
334
393
  const mentions = this.mentionsFromMatrixContent(input.content);
335
394
  const routeTargetAgent = this.routeTargetAgentFromMatrixContent(input.content);
@@ -338,9 +397,11 @@ class PodMatrixStore {
338
397
  roomId: input.roomId,
339
398
  type: input.type,
340
399
  sender: input.sender,
341
- senderWebId: context.webId,
400
+ senderWebId: input.maker ?? context.webId,
342
401
  originServerTs: input.originServerTs,
343
402
  depth,
403
+ role: input.role ?? (input.type === 'm.room.message' ? models_1.MessageRole.USER : models_1.MessageRole.SYSTEM),
404
+ resourceId: messageResourceId,
344
405
  txnId: input.txnId ?? undefined,
345
406
  stateKey: input.stateKey ?? undefined,
346
407
  content: input.content,
@@ -348,16 +409,18 @@ class PodMatrixStore {
348
409
  };
349
410
  await db.insert(models_1.messageResource).values({
350
411
  id: messageResourceId,
351
- parent: this.resolveDataResourceUriFromId(this.messageParentResourceIdFromRoomId(input.roomId), context),
352
- chat: this.chatResourceIdFromRoomId(input.roomId),
412
+ parent: this.chatIri(input.roomId, context),
413
+ chat: this.chatIri(input.roomId, context),
353
414
  thread,
354
- maker: context.webId,
355
- role: input.type === 'm.room.message' ? models_1.MessageRole.USER : models_1.MessageRole.SYSTEM,
415
+ maker: input.maker ?? context.webId,
416
+ role: input.role ?? (input.type === 'm.room.message' ? models_1.MessageRole.USER : models_1.MessageRole.SYSTEM),
356
417
  content: contentText,
357
418
  status: models_1.MessageStatus.SENT,
358
419
  mentions,
359
420
  routeTargetAgent: routeTargetAgent ?? null,
421
+ replyTo: typeof input.content['co.undefineds.replyTo'] === 'string' ? input.content['co.undefineds.replyTo'] : null,
360
422
  metadata: (0, protocol_metadata_1.withProtocolMetadata)({
423
+ '@id': `${models_1.messageResource.buildIri(this.scope(context), { id: messageResourceId })}/metadata`,
361
424
  protocol: 'matrix',
362
425
  commandKind: 'chat',
363
426
  surface_id: this.surfaceIdFromRoomId(input.roomId),
@@ -367,7 +430,7 @@ class PodMatrixStore {
367
430
  roomId: input.roomId,
368
431
  eventType: input.type,
369
432
  sender: input.sender,
370
- senderWebId: context.webId,
433
+ senderWebId: input.maker ?? context.webId,
371
434
  originServerTs: input.originServerTs,
372
435
  depth,
373
436
  txnId: input.txnId ?? null,
@@ -377,17 +440,9 @@ class PodMatrixStore {
377
440
  createdAt: originIso,
378
441
  updatedAt: originIso,
379
442
  });
380
- await this.reconcileGroupUserMessage({
381
- thread,
382
- triggerMessage: this.resolveDataResourceUriFromId(messageResourceId, context),
383
- actor: context.webId,
384
- role: input.type === 'm.room.message' ? models_1.MessageRole.USER : models_1.MessageRole.SYSTEM,
385
- content: contentText,
386
- reconcilerOwner,
387
- mentions,
388
- routeTargetAgent,
389
- participants: roomContext?.participants,
390
- });
443
+ record.depth = await this.journal.registerEvent(this.scope(context), input.roomId, eventId);
444
+ if (record.role === models_1.MessageRole.USER)
445
+ await this.reconcileEvent(db, record, context);
391
446
  return record;
392
447
  }
393
448
  async appendMembershipEvent(db, roomId, memberUserId, membership, context, options = {}) {
@@ -417,7 +472,7 @@ class PodMatrixStore {
417
472
  const joined = [];
418
473
  for (const room of rooms) {
419
474
  const membership = await this.findLatestStateEvent(db, room.roomId, 'm.room.member', matrixUserId, context);
420
- if (!membership || membership.content.membership === 'join' || membership.content.membership === 'invite') {
475
+ if (membership?.content.membership === 'join' || (!membership && room.creator === context.webId)) {
421
476
  joined.push(room);
422
477
  }
423
478
  }
@@ -430,61 +485,51 @@ class PodMatrixStore {
430
485
  const rooms = await this.listRooms(db);
431
486
  const room = rooms.find((candidate) => candidate.canonicalAlias === roomIdOrAlias);
432
487
  if (!room) {
433
- throw new Error(`Matrix room alias not found: ${roomIdOrAlias}`);
488
+ throw new MatrixError_1.MatrixError(404, 'M_NOT_FOUND', 'Room alias not found');
434
489
  }
435
490
  return room.roomId;
436
491
  }
437
492
  async listEvents(db, roomId, context, options = {}) {
438
- const conditions = [
439
- (0, drizzle_solid_1.eq)(models_1.messageResource.thread, this.resolveDataResourceUriFromId(this.threadResourceIdFromRoomId(roomId), context)),
440
- options.sinceTs !== undefined ? (0, drizzle_solid_1.gt)(models_1.messageResource.createdAt, new Date(options.sinceTs).toISOString()) : undefined,
441
- options.beforeOrAtTs !== undefined ? (0, drizzle_solid_1.lte)(models_1.messageResource.createdAt, new Date(options.beforeOrAtTs).toISOString()) : undefined,
442
- ];
443
- let query = db.select().from(models_1.messageResource).where((0, drizzle_solid_1.and)(...conditions));
444
- query = options.newestFirst
445
- ? query.orderBy((0, drizzle_solid_1.desc)(models_1.messageResource.createdAt))
446
- : query.orderBy((0, drizzle_solid_1.asc)(models_1.messageResource.createdAt));
447
- if (options.limit && options.limit > 0) {
448
- query = query.limit(options.limit);
449
- }
450
- const events = await query;
451
- return events.map((event) => this.eventSourceToRecord(event));
452
- }
453
- async findEventByTxnId(db, roomId, txnId, context) {
454
- const records = await this.listEvents(db, roomId, context);
455
- return records.find((record) => record.txnId === txnId);
493
+ const sources = await db.select().from(models_1.messageResource)
494
+ .where((0, drizzle_solid_1.eq)(models_1.messageResource.thread, this.threadIri(roomId, context)));
495
+ sources.sort((a, b) => (this.isoToMillis(a.createdAt) ?? 0) - (this.isoToMillis(b.createdAt) ?? 0) || a.id.localeCompare(b.id));
496
+ const events = [];
497
+ for (const source of sources) {
498
+ const event = this.eventSourceToRecord(source, roomId, context);
499
+ event.depth = await this.journal.registerEvent(this.scope(context), roomId, event.eventId);
500
+ events.push(event);
501
+ }
502
+ events.sort((a, b) => a.depth - b.depth);
503
+ return options.newestFirst ? events.reverse() : events;
456
504
  }
457
505
  async findEventById(db, roomId, eventId, context) {
458
506
  const records = await this.listEvents(db, roomId, context);
459
507
  return records.find((record) => record.eventId === eventId);
460
508
  }
461
- async nextEventDepth(db, roomId, context) {
462
- const records = await this.listEvents(db, roomId, context);
463
- return records.reduce((max, record) => Math.max(max, record.depth ?? 0), 0) + 1;
464
- }
465
509
  async findLatestStateEvent(db, roomId, eventType, stateKey, context) {
466
510
  const records = await this.listEvents(db, roomId, context, { newestFirst: true });
467
511
  return records.find((record) => record.type === eventType && (record.stateKey ?? '') === stateKey);
468
512
  }
469
- eventSourceToRecord(source) {
513
+ eventSourceToRecord(source, roomId, context) {
470
514
  const metadata = this.parseJsonObject(source.metadata) ?? {};
471
515
  const matrix = (0, protocol_metadata_1.getProtocolMetadata)(metadata, 'matrix') ?? {};
472
516
  const content = this.parseJsonObject(matrix.content)
473
517
  ?? this.parseJsonObject(metadata.content)
474
- ?? this.parseJsonObject(source.content)
475
- ?? {};
518
+ ?? { msgtype: 'm.text', body: typeof source.content === 'string' ? source.content : JSON.stringify(source.content ?? '') };
476
519
  const unsigned = this.parseJsonObject(matrix.unsigned)
477
520
  ?? this.parseJsonObject(metadata.unsigned);
478
521
  const stateKey = this.stringValue(matrix.stateKey ?? matrix.state_key ?? metadata.stateKey);
479
522
  const txnId = this.stringValue(matrix.txnId ?? matrix.txn_id ?? metadata.txnId);
480
523
  return {
481
- eventId: this.stringValue(matrix.eventId ?? matrix.event_id ?? metadata.eventId) ?? source.id,
482
- roomId: this.stringValue(matrix.roomId ?? matrix.room_id ?? metadata.roomId) ?? '',
524
+ eventId: this.stringValue(matrix.eventId ?? matrix.event_id ?? metadata.eventId) ?? `$${this.hash(source.id)}:${this.getServerName(context)}`,
525
+ roomId: this.stringValue(matrix.roomId ?? matrix.room_id ?? metadata.roomId) ?? roomId,
483
526
  type: this.stringValue(matrix.eventType ?? matrix.event_type ?? metadata.eventType) ?? 'm.room.message',
484
- sender: this.stringValue(matrix.sender ?? metadata.sender) ?? '',
527
+ sender: this.stringValue(matrix.sender ?? metadata.sender) ?? this.getMatrixUserId({ ...context, webId: source.maker ?? context.webId }),
485
528
  senderWebId: this.stringValue(matrix.senderWebId ?? matrix.sender_web_id ?? metadata.senderWebId) ?? source.maker ?? undefined,
486
529
  originServerTs: this.numberValue(matrix.originServerTs ?? matrix.origin_server_ts ?? metadata.originServerTs) ?? this.isoToMillis(source.createdAt) ?? Date.now(),
487
530
  depth: this.numberValue(matrix.depth ?? metadata.depth),
531
+ role: source.role,
532
+ resourceId: source.id,
488
533
  txnId: txnId ?? undefined,
489
534
  content,
490
535
  stateKey: stateKey ?? undefined,
@@ -525,6 +570,329 @@ class PodMatrixStore {
525
570
  ...(event.unsigned ? { unsigned: event.unsigned } : {}),
526
571
  };
527
572
  }
573
+ scope(context) {
574
+ if (!context.podUrl)
575
+ throw new MatrixError_1.MatrixError(400, 'M_BAD_JSON', 'A resolved Pod URL is required');
576
+ return context.podUrl;
577
+ }
578
+ hash(value) { return (0, node_crypto_1.createHash)('sha256').update(value).digest('hex'); }
579
+ canonicalJson(value) {
580
+ if (Array.isArray(value))
581
+ return `[${value.map(item => this.canonicalJson(item)).join(',')}]`;
582
+ if (value && typeof value === 'object')
583
+ return `{${Object.entries(value).filter(([, v]) => v !== undefined).sort(([a], [b]) => a.localeCompare(b)).map(([k, v]) => `${JSON.stringify(k)}:${this.canonicalJson(v)}`).join(',')}}`;
584
+ return JSON.stringify(value) ?? 'null';
585
+ }
586
+ chatIri(roomId, context) {
587
+ return models_1.chatResource.buildIri(this.scope(context), { id: this.surfaceIdFromRoomId(roomId) });
588
+ }
589
+ threadIri(roomId, context) {
590
+ return models_1.threadResource.buildIri(this.scope(context), { id: 'thread', parent: this.chatIri(roomId, context) });
591
+ }
592
+ async roomSource(db, roomId) {
593
+ const room = await db.findById(models_1.chatResource, this.chatResourceIdFromRoomId(roomId));
594
+ if (!room)
595
+ throw new MatrixError_1.MatrixError(404, 'M_NOT_FOUND', 'Room not found');
596
+ return room;
597
+ }
598
+ async requireRoomOwner(db, roomId, context) {
599
+ if ((await this.roomSource(db, roomId)).author !== context.webId)
600
+ throw new MatrixError_1.MatrixError(403, 'M_FORBIDDEN', 'Room owner authority is required');
601
+ }
602
+ async requireJoined(db, roomId, context, events) {
603
+ const room = await this.roomSource(db, roomId);
604
+ const state = events ? this.latestState(events, 'm.room.member', this.getMatrixUserId(context)) : await this.findLatestStateEvent(db, roomId, 'm.room.member', this.getMatrixUserId(context), context);
605
+ if (state?.content.membership === 'join' || (!state && room.author === context.webId))
606
+ return;
607
+ throw new MatrixError_1.MatrixError(403, 'M_FORBIDDEN', 'Join the room before accessing its timeline');
608
+ }
609
+ latestState(events, type, key) {
610
+ return [...events].reverse().find(e => e.type === type && e.stateKey === key);
611
+ }
612
+ validateAgentGrants(content) {
613
+ if (!Array.isArray(content.agents) || content.agents.length > 32)
614
+ throw new MatrixError_1.MatrixError(400, 'M_BAD_JSON', 'agents must be an array of at most 32 grants');
615
+ const uri = (value) => {
616
+ if (typeof value !== 'string')
617
+ return false;
618
+ try {
619
+ const url = new URL(value);
620
+ return ['http:', 'https:'].includes(url.protocol) && !url.username && !url.password;
621
+ }
622
+ catch {
623
+ return false;
624
+ }
625
+ };
626
+ const grants = [];
627
+ for (const value of content.agents) {
628
+ const grant = value;
629
+ if (!grant || !uri(grant.agent) || !uri(grant.executor) || !uri(grant.workspace)
630
+ || !Array.isArray(grant.allowedActors) || !grant.allowedActors.every(uri)
631
+ || !Array.isArray(grant.handoffTo) || !grant.handoffTo.every(uri)
632
+ || grant.allowedActors.length > 32 || grant.handoffTo.length > 32
633
+ || grants.some(g => g.agent === grant.agent))
634
+ throw new MatrixError_1.MatrixError(400, 'M_BAD_JSON', 'Invalid or duplicate agent grant');
635
+ grants.push(grant);
636
+ }
637
+ if (grants.some(g => g.handoffTo.some(target => !grants.some(candidate => candidate.agent === target)))) {
638
+ throw new MatrixError_1.MatrixError(400, 'M_BAD_JSON', 'Handoff targets must be registered agents');
639
+ }
640
+ return grants;
641
+ }
642
+ async agentGrants(db, roomId, context, events) {
643
+ const state = events ? this.latestState(events, 'co.undefineds.agents', '') : await this.findLatestStateEvent(db, roomId, 'co.undefineds.agents', '', context);
644
+ return state ? this.validateAgentGrants(state.content) : [];
645
+ }
646
+ async authorizeTargets(db, roomId, content, context, events) {
647
+ const target = this.routeTargetAgentFromMatrixContent(content);
648
+ const targets = target ? [target] : this.mentionsFromMatrixContent(content);
649
+ if (!targets.length)
650
+ return [];
651
+ const grants = await this.agentGrants(db, roomId, context, events);
652
+ if (targets.some(agent => !grants.some(g => g.agent === agent && g.allowedActors.includes(context.webId)))) {
653
+ throw new MatrixError_1.MatrixError(403, 'M_FORBIDDEN', 'Agent execution is not granted to this actor');
654
+ }
655
+ return targets;
656
+ }
657
+ async reconcileEvent(db, event, context, events) {
658
+ if (!this.serverGroupReconcilerService || event.type !== 'm.room.message' || event.role !== models_1.MessageRole.USER)
659
+ return;
660
+ const actor = event.senderWebId;
661
+ if (!actor)
662
+ return;
663
+ const receipt = await this.journal.findReservation(this.scope(context), event.eventId);
664
+ if (!receipt || receipt.contentHash !== this.hash(this.canonicalJson(['user', actor, event.type, event.content])))
665
+ return;
666
+ const targets = await this.authorizeTargets(db, event.roomId, event.content, { ...context, webId: actor }, events);
667
+ const pending = [];
668
+ for (const target of targets)
669
+ if (await this.ensureDelivery(db, event, target, context))
670
+ pending.push(target);
671
+ if (!pending.length)
672
+ return;
673
+ const room = await this.roomSource(db, event.roomId);
674
+ await this.reconcileGroupUserMessage({ thread: this.threadIri(event.roomId, context),
675
+ triggerMessage: models_1.messageResource.buildIri(this.scope(context), { id: event.resourceId }), actor, role: 'user',
676
+ content: typeof event.content.body === 'string' ? event.content.body : '', createdAt: new Date(event.originServerTs).toISOString(),
677
+ reconcilerOwner: this.reconcilerOwnerFromRoomMetadata(this.parseJsonObject(room.metadata)),
678
+ mentions: pending, participants: pending });
679
+ }
680
+ /** Runtime principals must have both Pod access and an explicit room execution grant. */
681
+ async authorize(roomId, agent, context) {
682
+ const db = await this.getDb(context);
683
+ const events = await this.listEvents(db, roomId, context);
684
+ await this.requireJoined(db, roomId, context, events);
685
+ const grant = (await this.agentGrants(db, roomId, context, events)).find(g => g.agent === agent && g.executor === context.webId);
686
+ if (!grant)
687
+ throw new MatrixError_1.MatrixError(403, 'M_FORBIDDEN', 'No execution grant for this agent');
688
+ return { thread: this.threadIri(roomId, context) };
689
+ }
690
+ /** Rebuild operational work from Pod facts after an interrupted write or queue restart. */
691
+ async recover(roomId, context) {
692
+ const db = await this.getDb(context);
693
+ const events = await this.listEvents(db, roomId, context);
694
+ await this.requireJoined(db, roomId, context, events);
695
+ for (const event of events) {
696
+ if (event.role === models_1.MessageRole.USER) {
697
+ try {
698
+ await this.reconcileEvent(db, event, context, events);
699
+ }
700
+ catch (error) {
701
+ if (!(error instanceof MatrixError_1.MatrixError && error.status === 403))
702
+ throw error;
703
+ }
704
+ }
705
+ if (event.role === models_1.MessageRole.ASSISTANT)
706
+ await this.reconcileHandoff(db, event, context, events);
707
+ }
708
+ }
709
+ async loadInput(roomId, job, context) {
710
+ const db = await this.getDb(context);
711
+ const events = await this.listEvents(db, roomId, context);
712
+ await this.requireJoined(db, roomId, context, events);
713
+ if (!(await this.agentGrants(db, roomId, context, events)).some(g => g.agent === job.agent && g.executor === context.webId)) {
714
+ throw new MatrixError_1.MatrixError(403, 'M_FORBIDDEN', 'No execution grant for this agent');
715
+ }
716
+ const event = events.find(e => models_1.messageResource.buildIri(this.scope(context), { id: e.resourceId }) === job.triggerMessage);
717
+ if (!event)
718
+ throw new MatrixError_1.MatrixError(404, 'M_NOT_FOUND', 'Trigger message not found');
719
+ const grant = (await this.agentGrants(db, roomId, context, events)).find(g => g.agent === job.agent);
720
+ await this.validateTrigger(db, event, job, context, events);
721
+ const values = { id: job.id, thread: job.thread, createdAt: job.createdAt };
722
+ const delivery = await db.findById(models_1.deliveryResource, models_1.deliveryResource.buildId(values));
723
+ const previous = await db.findById(models_1.runResource, models_1.runResource.buildId(values));
724
+ if (['completed', 'failed', 'cancelled'].includes(delivery?.status) || this.runAttempts(previous) >= 3) {
725
+ throw new MatrixError_1.MatrixError(409, 'M_CONFLICT', 'Execution is terminal or its retry budget is exhausted');
726
+ }
727
+ const run = await this.materializeRun(db, roomId, job, context, 'running', undefined, undefined, grant.workspace);
728
+ return { content: typeof event.content.body === 'string' ? event.content.body : '', thread: job.thread,
729
+ triggerMessage: job.triggerMessage, agent: job.agent, workspace: grant.workspace, run,
730
+ history: events.filter(e => e.type === 'm.room.message').slice(-50).map(e => ({ role: e.role, body: e.content.body, eventId: e.eventId })) };
731
+ }
732
+ async commitResult(roomId, job, result, context) {
733
+ const db = await this.getDb(context);
734
+ const events = await this.listEvents(db, roomId, context);
735
+ await this.requireJoined(db, roomId, context, events);
736
+ if (!(await this.agentGrants(db, roomId, context, events)).some(g => g.agent === job.agent && g.executor === context.webId)) {
737
+ throw new MatrixError_1.MatrixError(403, 'M_FORBIDDEN', 'No execution grant for this agent');
738
+ }
739
+ const grant = (await this.agentGrants(db, roomId, context, events)).find(g => g.agent === job.agent);
740
+ const trigger = events.find(e => models_1.messageResource.buildIri(this.scope(context), { id: e.resourceId }) === job.triggerMessage);
741
+ if (!trigger)
742
+ throw new MatrixError_1.MatrixError(404, 'M_NOT_FOUND', 'Trigger message not found');
743
+ await this.validateTrigger(db, trigger, job, context, events);
744
+ const prior = trigger.role === models_1.MessageRole.ASSISTANT
745
+ ? this.parseJsonObject(trigger.content['co.undefineds.execution']) : undefined;
746
+ const hops = typeof prior?.hops === 'number' ? prior.hops + 1 : 1;
747
+ if (result.handoffTo && (!grant.handoffTo.includes(result.handoffTo) || hops >= 8)) {
748
+ throw new MatrixError_1.MatrixError(403, 'M_FORBIDDEN', 'Handoff is not granted or its hop limit was reached');
749
+ }
750
+ const content = { msgtype: 'm.text', body: result.body, 'co.undefineds.replyTo': job.triggerMessage,
751
+ 'm.relates_to': { 'm.in_reply_to': { event_id: trigger.eventId } },
752
+ 'co.undefineds.execution': { jobId: job.id, agent: job.agent, hops, handoffTo: result.handoffTo,
753
+ root: prior?.root ?? job.triggerMessage, evidence: result.evidence ?? [] } };
754
+ const contentHash = this.hash(this.canonicalJson(['assistant', job.agent, 'm.room.message', content]));
755
+ const key = JSON.stringify(['wake-result', job.id]);
756
+ const reservation = await this.journal.reserveTransaction(this.scope(context), key, {
757
+ eventId: `$${this.hash(key)}:${this.getServerName(context)}`, createdAt: Date.now(), contentHash
758
+ });
759
+ if (reservation.contentHash !== contentHash)
760
+ throw new MatrixError_1.MatrixError(409, 'M_CONFLICT', 'A different result was already reserved for this wake');
761
+ let output = events.find(e => e.eventId === reservation.eventId);
762
+ if (!output) {
763
+ output = await this.appendEvent(db, { roomId, type: 'm.room.message', sender: this.getMatrixUserId({ ...context, webId: job.agent }),
764
+ maker: job.agent, role: models_1.MessageRole.ASSISTANT, eventId: reservation.eventId, originServerTs: reservation.createdAt, content }, context);
765
+ }
766
+ else if (this.hash(this.canonicalJson(['assistant', job.agent, output.type, output.content])) !== reservation.contentHash) {
767
+ throw new MatrixError_1.MatrixError(409, 'M_CONFLICT', 'Stored result no longer matches its receipt');
768
+ }
769
+ const run = await this.materializeRun(db, roomId, job, context, 'completed', output.eventId, undefined, grant.workspace);
770
+ const deliveryId = models_1.deliveryResource.buildId({ id: job.id, thread: job.thread, createdAt: job.createdAt });
771
+ await db.updateById(models_1.deliveryResource, deliveryId, { status: 'completed', completedAt: new Date().toISOString() });
772
+ await this.reconcileHandoff(db, output, context, events);
773
+ return { eventId: output.eventId, run };
774
+ }
775
+ async validateTrigger(db, event, job, context, events) {
776
+ const receipt = await this.journal.findReservation(this.scope(context), event.eventId);
777
+ let valid = false;
778
+ if (event.role === models_1.MessageRole.USER && event.senderWebId) {
779
+ valid = receipt?.contentHash === this.hash(this.canonicalJson(['user', event.senderWebId, event.type, event.content]));
780
+ if (valid)
781
+ valid = (await this.authorizeTargets(db, event.roomId, event.content, { ...context, webId: event.senderWebId }, events)).includes(job.agent);
782
+ }
783
+ else if (event.role === models_1.MessageRole.ASSISTANT) {
784
+ const execution = this.parseJsonObject(event.content['co.undefineds.execution']);
785
+ if (execution && typeof execution.agent === 'string' && execution.handoffTo === job.agent &&
786
+ typeof execution.hops === 'number' && execution.hops < 8) {
787
+ valid = receipt?.contentHash === this.hash(this.canonicalJson(['assistant', execution.agent, event.type, event.content]));
788
+ if (valid)
789
+ valid = (await this.agentGrants(db, event.roomId, context, events)).some(g => g.agent === execution.agent && g.handoffTo.includes(job.agent));
790
+ }
791
+ }
792
+ if (!valid || job.thread !== this.threadIri(event.roomId, context)) {
793
+ throw new MatrixError_1.MatrixError(403, 'M_FORBIDDEN', 'Trigger receipt or current execution authorization is invalid');
794
+ }
795
+ }
796
+ async recordFailure(roomId, job, failure, context) {
797
+ const db = await this.getDb(context);
798
+ const values = { id: job.id, thread: job.thread, createdAt: job.createdAt };
799
+ const existing = await db.findById(models_1.runResource, models_1.runResource.buildId(values));
800
+ const terminal = !failure.retry || this.runAttempts(existing) >= 3;
801
+ if (existing?.status === 'completed')
802
+ return;
803
+ await this.materializeRun(db, roomId, job, context, terminal ? 'failed' : 'queued', undefined, failure.error);
804
+ await db.updateById(models_1.deliveryResource, models_1.deliveryResource.buildId(values), {
805
+ status: terminal ? 'failed' : 'pending', updatedAt: new Date().toISOString(),
806
+ ...(terminal ? { completedAt: new Date().toISOString() } : {}),
807
+ });
808
+ }
809
+ runAttempts(row) {
810
+ const metadata = this.parseJsonObject(row?.metadata);
811
+ const protocols = this.parseJsonObject(metadata?.protocols);
812
+ const matrix = this.parseJsonObject(protocols?.matrix);
813
+ return typeof matrix?.attempts === 'number' ? matrix.attempts : 0;
814
+ }
815
+ async reconcileHandoff(db, event, context, events) {
816
+ const execution = this.parseJsonObject(event.content['co.undefineds.execution']);
817
+ if (!execution?.handoffTo || typeof execution.agent !== 'string' || typeof execution.handoffTo !== 'string'
818
+ || typeof execution.hops !== 'number' || execution.hops >= 8 || !this.serverGroupReconcilerService)
819
+ return;
820
+ const receipt = await this.journal.findReservation(this.scope(context), event.eventId);
821
+ if (!receipt || receipt.contentHash !== this.hash(this.canonicalJson(['assistant', execution.agent, event.type, event.content])))
822
+ return;
823
+ const grants = await this.agentGrants(db, event.roomId, context, events);
824
+ if (!grants.some(g => g.agent === execution.agent && g.handoffTo.includes(execution.handoffTo)))
825
+ return;
826
+ if (!await this.ensureDelivery(db, event, execution.handoffTo, context))
827
+ return;
828
+ // Only output with an API-issued receipt can trigger a handoff; direct Pod writes cannot.
829
+ await this.serverGroupReconcilerService.reconcileThreadMessage({ thread: this.threadIri(event.roomId, context),
830
+ triggerMessage: models_1.messageResource.buildIri(this.scope(context), { id: event.resourceId }), actor: execution.agent,
831
+ role: 'user', createdAt: new Date(event.originServerTs).toISOString(), reconcilerOwner: 'server', routeTargetAgent: execution.handoffTo, participants: grants.map(g => g.agent) });
832
+ }
833
+ async ensureDelivery(db, event, agent, context) {
834
+ const thread = this.threadIri(event.roomId, context);
835
+ const triggerMessage = models_1.messageResource.buildIri(this.scope(context), { id: event.resourceId });
836
+ const jobId = (0, WakeAgentQueue_1.sharedWakeAgentJobId)({ thread, triggerMessage, agent });
837
+ const createdAt = new Date(event.originServerTs).toISOString();
838
+ const id = models_1.deliveryResource.buildId({ id: jobId, thread, createdAt });
839
+ const existing = await db.findById(models_1.deliveryResource, id);
840
+ if (existing?.status === 'completed' || existing?.status === 'cancelled' || existing?.status === 'failed')
841
+ return false;
842
+ // Complete a write interrupted after the result Message but before Run/Delivery ACK.
843
+ const resultEventId = `$${this.hash(JSON.stringify(['wake-result', jobId]))}:${this.getServerName(context)}`;
844
+ const receipt = await this.journal.findReservation(this.scope(context), resultEventId);
845
+ if (receipt) {
846
+ const source = await db.findById(models_1.messageResource, this.messageResourceIdFromEvent(event.roomId, resultEventId, receipt.createdAt));
847
+ if (source) {
848
+ const output = this.eventSourceToRecord(source, event.roomId, context);
849
+ if (receipt.contentHash === this.hash(this.canonicalJson(['assistant', agent, output.type, output.content]))) {
850
+ await this.materializeRun(db, event.roomId, { id: jobId, thread, triggerMessage, agent, createdAt, status: 'completed', reason: 'mention' }, context, 'completed', resultEventId);
851
+ await db.updateById(models_1.deliveryResource, id, { status: 'completed', completedAt: new Date().toISOString() });
852
+ return false;
853
+ }
854
+ }
855
+ }
856
+ const run = await db.findById(models_1.runResource, models_1.runResource.buildId({ id: jobId, thread, createdAt }));
857
+ if (this.runAttempts(run) >= 3) {
858
+ const active = await this.serverGroupReconcilerService?.getQueue().listQueued(thread, agent);
859
+ if (active?.some(job => job.id === jobId && job.status === 'leased' && Date.parse(job.leaseExpiresAt ?? '') > Date.now()))
860
+ return false;
861
+ if (!run.leaseExpiresAt || Date.parse(run.leaseExpiresAt) <= Date.now()) {
862
+ await this.recordFailure(event.roomId, { id: jobId, thread, triggerMessage, agent, createdAt, status: 'failed', reason: 'mention' }, { retry: false, error: 'Execution lease exhausted its retry budget' }, context);
863
+ }
864
+ return false;
865
+ }
866
+ if (!existing)
867
+ await db.insert(models_1.deliveryResource).values({ id, thread, chat: this.chatIri(event.roomId, context),
868
+ source: triggerMessage, object: triggerMessage, target: agent, actor: event.senderWebId,
869
+ kind: event.role === models_1.MessageRole.ASSISTANT ? 'runtime_followup' : 'mention_dispatch', status: 'pending',
870
+ createdAt, updatedAt: createdAt });
871
+ return true;
872
+ }
873
+ async materializeRun(db, roomId, job, context, status, eventId, error, workspace) {
874
+ const runWorkspace = workspace ?? (await this.agentGrants(db, roomId, context)).find(g => g.agent === job.agent)?.workspace;
875
+ const values = { id: job.id, thread: job.thread, createdAt: job.createdAt };
876
+ const id = models_1.runResource.buildId(values);
877
+ const iri = models_1.runResource.buildIri(this.scope(context), values);
878
+ const existing = await db.findById(models_1.runResource, id);
879
+ if (existing?.status === 'completed')
880
+ return iri;
881
+ const now = new Date().toISOString();
882
+ const row = { id, thread: job.thread, input: job.triggerMessage, delivery: models_1.deliveryResource.buildIri(this.scope(context), values), workspace: runWorkspace, runner: 'external', status,
883
+ leaseOwner: job.leaseOwner, leaseExpiresAt: job.leaseExpiresAt, createdAt: job.createdAt, updatedAt: now,
884
+ ...(['completed', 'failed'].includes(status) ? { completedAt: now } : { startedAt: now }),
885
+ metadata: { '@id': `${iri}/metadata`, protocols: { matrix: { roomId, jobId: job.id, eventId, fencingToken: job.fencingToken, attempts: this.runAttempts(existing) + (status === 'running' ? 1 : 0), error } } } };
886
+ if (existing)
887
+ await db.updateById(models_1.runResource, id, row);
888
+ else
889
+ await db.insert(models_1.runResource).values(row);
890
+ const stepId = models_1.runStepResource.buildId({ id: `${job.id}-${status}`, run: iri, createdAt: now });
891
+ if (!await db.findById(models_1.runStepResource, stepId))
892
+ await db.insert(models_1.runStepResource).values({ id: stepId, run: iri,
893
+ stepType: status === 'running' ? 'run.started' : `run.${status}`, createdAt: now, payload: { '@id': `${models_1.runStepResource.buildIri(this.scope(context), { id: stepId })}/payload`, agent: job.agent, eventId } });
894
+ return iri;
895
+ }
528
896
  parseJsonObject(value) {
529
897
  if (!value) {
530
898
  return undefined;
@@ -575,6 +943,7 @@ class PodMatrixStore {
575
943
  actor: input.actor,
576
944
  role: 'user',
577
945
  content: input.content,
946
+ createdAt: input.createdAt,
578
947
  reconcilerOwner: input.reconcilerOwner,
579
948
  mentions: input.mentions,
580
949
  routeTargetAgent: input.routeTargetAgent,
@@ -583,6 +952,7 @@ class PodMatrixStore {
583
952
  }
584
953
  catch (error) {
585
954
  this.logger.warn(`Failed to enqueue Matrix group Reconciler wake: ${error}`);
955
+ throw new MatrixError_1.MatrixError(503, 'M_UNKNOWN', 'Message stored; wake delivery pending. Retry the same transaction.');
586
956
  }
587
957
  }
588
958
  messageContentFromMatrixEvent(eventType, content) {
@@ -606,7 +976,7 @@ class PodMatrixStore {
606
976
  }
607
977
  getMatrixUserId(context) {
608
978
  const serverName = this.getServerName(context);
609
- const localpart = this.localpartFromUserId(context.webId);
979
+ const localpart = `u_${this.hash(context.webId)}`;
610
980
  return `@${localpart}:${serverName}`;
611
981
  }
612
982
  getServerName(context) {
@@ -620,16 +990,6 @@ class PodMatrixStore {
620
990
  return 'localhost';
621
991
  }
622
992
  }
623
- localpartFromUserId(userId) {
624
- try {
625
- const url = new URL(userId);
626
- const withoutHash = `${url.pathname}${url.hash}`.replace(/^\/+/, '');
627
- return this.slug(withoutHash || url.host);
628
- }
629
- catch {
630
- return this.slug(userId);
631
- }
632
- }
633
993
  displayNameFromUserId(matrixUserId) {
634
994
  return matrixUserId.replace(/^@/, '').split(':')[0] || matrixUserId;
635
995
  }
@@ -639,67 +999,26 @@ class PodMatrixStore {
639
999
  generateEventId(context) {
640
1000
  return `$${this.randomId(24)}:${this.getServerName(context)}`;
641
1001
  }
642
- deviceIdFromUserId(userId) {
643
- return `XPOD${(0, node_crypto_1.createHash)('sha256').update(userId).digest('hex').slice(0, 12).toUpperCase()}`;
1002
+ deviceId(context) {
1003
+ const auth = context.auth;
1004
+ return `XPOD${this.hash(JSON.stringify([context.webId, auth?.type === 'solid' ? auth.clientId ?? auth.gatewayKeyId ?? 'solid' : 'solid'])).slice(0, 24).toUpperCase()}`;
644
1005
  }
645
1006
  randomId(size) {
646
1007
  return (0, node_crypto_1.randomBytes)(size).toString('base64url');
647
1008
  }
648
- slug(value) {
649
- return value.toLowerCase().replace(/[^a-z0-9._=-]+/g, '_').replace(/^_+|_+$/g, '') || 'user';
650
- }
651
1009
  surfaceIdFromRoomId(roomId) {
652
1010
  return `matrix-${(0, node_crypto_1.createHash)('sha256').update(roomId).digest('hex').slice(0, 16)}`;
653
1011
  }
654
1012
  chatResourceIdFromRoomId(roomId) {
655
- return `${this.surfaceIdFromRoomId(roomId)}/index.ttl#this`;
656
- }
657
- messageParentResourceIdFromRoomId(roomId) {
658
- return `chat/${this.surfaceIdFromRoomId(roomId)}/index.ttl#this`;
1013
+ return models_1.chatResource.buildId({ id: this.surfaceIdFromRoomId(roomId) });
659
1014
  }
660
1015
  threadResourceIdFromRoomId(roomId) {
661
- return `chat/${this.surfaceIdFromRoomId(roomId)}/index.ttl#thread`;
662
- }
663
- chatParentRefFromRoomId(roomId) {
664
- return `/.data/chat/${this.chatResourceIdFromRoomId(roomId)}`;
1016
+ return models_1.threadResource.buildId({ id: 'thread', parent: models_1.chatResource.buildIri('https://layout.invalid/', { id: this.surfaceIdFromRoomId(roomId) }) });
665
1017
  }
666
1018
  messageResourceIdFromEvent(roomId, eventId, ts) {
667
- const { yyyy, MM, dd } = this.dateParts(ts);
668
- return `chat/${this.surfaceIdFromRoomId(roomId)}/${yyyy}/${MM}/${dd}/messages.ttl#${this.slug(eventId)}`;
669
- }
670
- resolveDataResourceUriFromId(resourceId, context) {
671
- const podBaseUrl = context.podUrl ?? this.derivePodBaseUrl(context.webId);
672
- if (!podBaseUrl) {
673
- return resourceId;
674
- }
675
- return `${podBaseUrl.replace(/\/$/, '')}/.data/${resourceId}`;
676
- }
677
- derivePodBaseUrl(webId) {
678
- if (!webId) {
679
- return undefined;
680
- }
681
- try {
682
- const url = new URL(webId);
683
- url.hash = '';
684
- url.search = '';
685
- const normalizedPath = url.pathname.replace(/\/+$/, '');
686
- if (!normalizedPath.endsWith('/profile/card')) {
687
- return url.origin;
688
- }
689
- url.pathname = normalizedPath.slice(0, -'/profile/card'.length) || '/';
690
- return url.toString().replace(/\/$/, '');
691
- }
692
- catch {
693
- return undefined;
694
- }
695
- }
696
- dateParts(value) {
697
- const date = new Date(value);
698
- return {
699
- yyyy: String(date.getUTCFullYear()),
700
- MM: String(date.getUTCMonth() + 1).padStart(2, '0'),
701
- dd: String(date.getUTCDate()).padStart(2, '0'),
702
- };
1019
+ return models_1.messageResource.buildId({ id: this.hash(eventId),
1020
+ parent: models_1.chatResource.buildIri('https://layout.invalid/', { id: this.surfaceIdFromRoomId(roomId) }),
1021
+ createdAt: new Date(ts).toISOString() });
703
1022
  }
704
1023
  isoToMillis(value) {
705
1024
  if (!value) {
@@ -710,14 +1029,18 @@ class PodMatrixStore {
710
1029
  return Number.isFinite(time) ? time : undefined;
711
1030
  }
712
1031
  encodeSyncToken(ts) {
713
- return `s${Math.max(0, Math.floor(ts))}`;
1032
+ return `v2_${Math.max(0, Math.floor(ts))}`;
714
1033
  }
715
1034
  parseSyncToken(token) {
716
1035
  if (!token) {
717
1036
  return 0;
718
1037
  }
719
- const parsed = Number(token.replace(/^s/, ''));
720
- return Number.isFinite(parsed) ? parsed : 0;
1038
+ if (!/^v2_\d+$/u.test(token))
1039
+ throw new MatrixError_1.MatrixError(400, 'M_UNKNOWN_POS', 'Cursor version changed; start a fresh sync');
1040
+ const parsed = Number(token.slice(3));
1041
+ if (!Number.isSafeInteger(parsed))
1042
+ throw new MatrixError_1.MatrixError(400, 'M_UNKNOWN_POS', 'Invalid cursor');
1043
+ return parsed;
721
1044
  }
722
1045
  }
723
1046
  exports.PodMatrixStore = PodMatrixStore;