@dxos/client-services 0.10.0 → 0.11.1

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 (304) hide show
  1. package/dist/lib/chunk-client-services-layer.mjs +11425 -0
  2. package/dist/lib/chunk-client-services-layer.mjs.map +1 -0
  3. package/dist/lib/chunk-decorate.mjs +9 -0
  4. package/dist/lib/index.mjs +731 -0
  5. package/dist/lib/index.mjs.map +1 -0
  6. package/dist/lib/packlets/diagnostics/browser-diagnostics-broadcast.mjs +72 -0
  7. package/dist/lib/packlets/diagnostics/browser-diagnostics-broadcast.mjs.map +1 -0
  8. package/dist/lib/packlets/diagnostics/diagnostics-broadcast.mjs +14 -0
  9. package/dist/lib/packlets/diagnostics/diagnostics-broadcast.mjs.map +1 -0
  10. package/dist/lib/packlets/locks/browser.mjs +105 -0
  11. package/dist/lib/packlets/locks/browser.mjs.map +1 -0
  12. package/dist/lib/packlets/locks/node.mjs +53 -0
  13. package/dist/lib/packlets/locks/node.mjs.map +1 -0
  14. package/dist/lib/testing.mjs +570 -0
  15. package/dist/lib/testing.mjs.map +1 -0
  16. package/dist/types/src/index.d.ts +2 -0
  17. package/dist/types/src/index.d.ts.map +1 -1
  18. package/dist/types/src/packlets/agents/edge-agent-manager.d.ts +21 -4
  19. package/dist/types/src/packlets/agents/edge-agent-manager.d.ts.map +1 -1
  20. package/dist/types/src/packlets/agents/edge-agent-service.d.ts +8 -7
  21. package/dist/types/src/packlets/agents/edge-agent-service.d.ts.map +1 -1
  22. package/dist/types/src/packlets/devices/devices-service.d.ts +7 -5
  23. package/dist/types/src/packlets/devices/devices-service.d.ts.map +1 -1
  24. package/dist/types/src/packlets/devtools/devtools.d.ts +30 -29
  25. package/dist/types/src/packlets/devtools/devtools.d.ts.map +1 -1
  26. package/dist/types/src/packlets/devtools/feeds.d.ts +1 -1
  27. package/dist/types/src/packlets/devtools/feeds.d.ts.map +1 -1
  28. package/dist/types/src/packlets/devtools/network.d.ts +2 -1
  29. package/dist/types/src/packlets/devtools/network.d.ts.map +1 -1
  30. package/dist/types/src/packlets/devtools/spaces.d.ts.map +1 -1
  31. package/dist/types/src/packlets/diagnostics/diagnostics-broadcast.d.ts +2 -2
  32. package/dist/types/src/packlets/diagnostics/diagnostics-broadcast.d.ts.map +1 -1
  33. package/dist/types/src/packlets/diagnostics/diagnostics-collector.d.ts.map +1 -1
  34. package/dist/types/src/packlets/diagnostics/diagnostics.d.ts +1 -8
  35. package/dist/types/src/packlets/diagnostics/diagnostics.d.ts.map +1 -1
  36. package/dist/types/src/packlets/identity/authenticator.d.ts +1 -1
  37. package/dist/types/src/packlets/identity/authenticator.d.ts.map +1 -1
  38. package/dist/types/src/packlets/identity/contacts-service.d.ts +9 -6
  39. package/dist/types/src/packlets/identity/contacts-service.d.ts.map +1 -1
  40. package/dist/types/src/packlets/identity/identity-manager.d.ts +32 -3
  41. package/dist/types/src/packlets/identity/identity-manager.d.ts.map +1 -1
  42. package/dist/types/src/packlets/identity/identity-recovery-manager.d.ts +23 -4
  43. package/dist/types/src/packlets/identity/identity-recovery-manager.d.ts.map +1 -1
  44. package/dist/types/src/packlets/identity/identity-service.d.ts +15 -20
  45. package/dist/types/src/packlets/identity/identity-service.d.ts.map +1 -1
  46. package/dist/types/src/packlets/identity/identity.d.ts +2 -2
  47. package/dist/types/src/packlets/identity/identity.d.ts.map +1 -1
  48. package/dist/types/src/packlets/invitations/edge-invitation-handler.d.ts.map +1 -1
  49. package/dist/types/src/packlets/invitations/invitations-handler.d.ts +17 -0
  50. package/dist/types/src/packlets/invitations/invitations-handler.d.ts.map +1 -1
  51. package/dist/types/src/packlets/invitations/invitations-manager.d.ts +25 -4
  52. package/dist/types/src/packlets/invitations/invitations-manager.d.ts.map +1 -1
  53. package/dist/types/src/packlets/invitations/invitations-service.d.ts +11 -11
  54. package/dist/types/src/packlets/invitations/invitations-service.d.ts.map +1 -1
  55. package/dist/types/src/packlets/logging/logging-service.d.ts +14 -12
  56. package/dist/types/src/packlets/logging/logging-service.d.ts.map +1 -1
  57. package/dist/types/src/packlets/metadata/index.d.ts +3 -0
  58. package/dist/types/src/packlets/metadata/index.d.ts.map +1 -0
  59. package/dist/types/src/packlets/metadata/metadata-store.d.ts +107 -0
  60. package/dist/types/src/packlets/metadata/metadata-store.d.ts.map +1 -0
  61. package/dist/types/src/packlets/metadata/metadata-store.test.d.ts +2 -0
  62. package/dist/types/src/packlets/metadata/metadata-store.test.d.ts.map +1 -0
  63. package/dist/types/src/packlets/metadata/sqlite-metadata-store.d.ts +65 -0
  64. package/dist/types/src/packlets/metadata/sqlite-metadata-store.d.ts.map +1 -0
  65. package/dist/types/src/packlets/network/network-service.d.ts +15 -14
  66. package/dist/types/src/packlets/network/network-service.d.ts.map +1 -1
  67. package/dist/types/src/packlets/pipeline/codec.d.ts +11 -0
  68. package/dist/types/src/packlets/pipeline/codec.d.ts.map +1 -0
  69. package/dist/types/src/packlets/pipeline/feeds.d.ts +7 -0
  70. package/dist/types/src/packlets/pipeline/feeds.d.ts.map +1 -0
  71. package/dist/types/src/packlets/pipeline/index.d.ts +5 -0
  72. package/dist/types/src/packlets/pipeline/index.d.ts.map +1 -0
  73. package/dist/types/src/packlets/pipeline/message-selector.d.ts +11 -0
  74. package/dist/types/src/packlets/pipeline/message-selector.d.ts.map +1 -0
  75. package/dist/types/src/packlets/pipeline/pipeline-stress.test.d.ts +2 -0
  76. package/dist/types/src/packlets/pipeline/pipeline-stress.test.d.ts.map +1 -0
  77. package/dist/types/src/packlets/pipeline/pipeline.d.ts +131 -0
  78. package/dist/types/src/packlets/pipeline/pipeline.d.ts.map +1 -0
  79. package/dist/types/src/packlets/pipeline/pipeline.test.d.ts +2 -0
  80. package/dist/types/src/packlets/pipeline/pipeline.test.d.ts.map +1 -0
  81. package/dist/types/src/packlets/pipeline/testing/index.d.ts +2 -0
  82. package/dist/types/src/packlets/pipeline/testing/index.d.ts.map +1 -0
  83. package/dist/types/src/packlets/pipeline/testing/test-feed-builder.d.ts +9 -0
  84. package/dist/types/src/packlets/pipeline/testing/test-feed-builder.d.ts.map +1 -0
  85. package/dist/types/src/packlets/pipeline/timeframe-clock.d.ts +31 -0
  86. package/dist/types/src/packlets/pipeline/timeframe-clock.d.ts.map +1 -0
  87. package/dist/types/src/packlets/services/client-services-layer.d.ts +21 -0
  88. package/dist/types/src/packlets/services/client-services-layer.d.ts.map +1 -0
  89. package/dist/types/src/packlets/services/cross-device-space-synchronizer.d.ts +28 -0
  90. package/dist/types/src/packlets/services/cross-device-space-synchronizer.d.ts.map +1 -0
  91. package/dist/types/src/packlets/services/effect-rpc.test.d.ts +2 -0
  92. package/dist/types/src/packlets/services/effect-rpc.test.d.ts.map +1 -0
  93. package/dist/types/src/packlets/services/feed-syncer.d.ts +22 -2
  94. package/dist/types/src/packlets/services/feed-syncer.d.ts.map +1 -1
  95. package/dist/types/src/packlets/services/index.d.ts +2 -2
  96. package/dist/types/src/packlets/services/index.d.ts.map +1 -1
  97. package/dist/types/src/packlets/services/platform.d.ts.map +1 -1
  98. package/dist/types/src/packlets/services/service-context.d.ts +38 -57
  99. package/dist/types/src/packlets/services/service-context.d.ts.map +1 -1
  100. package/dist/types/src/packlets/services/service-host.d.ts +82 -31
  101. package/dist/types/src/packlets/services/service-host.d.ts.map +1 -1
  102. package/dist/types/src/packlets/services/sqlite-storage.d.ts +29 -0
  103. package/dist/types/src/packlets/services/sqlite-storage.d.ts.map +1 -1
  104. package/dist/types/src/packlets/services/sqlite-storage.test.d.ts +2 -0
  105. package/dist/types/src/packlets/services/sqlite-storage.test.d.ts.map +1 -0
  106. package/dist/types/src/packlets/space/admission-discovery-extension.d.ts +30 -0
  107. package/dist/types/src/packlets/space/admission-discovery-extension.d.ts.map +1 -0
  108. package/dist/types/src/packlets/space/auth.d.ts +24 -0
  109. package/dist/types/src/packlets/space/auth.d.ts.map +1 -0
  110. package/dist/types/src/packlets/space/control-pipeline.d.ts +46 -0
  111. package/dist/types/src/packlets/space/control-pipeline.d.ts.map +1 -0
  112. package/dist/types/src/packlets/space/control-pipeline.test.d.ts +2 -0
  113. package/dist/types/src/packlets/space/control-pipeline.test.d.ts.map +1 -0
  114. package/dist/types/src/packlets/space/index.d.ts +6 -0
  115. package/dist/types/src/packlets/space/index.d.ts.map +1 -0
  116. package/dist/types/src/packlets/space/replication.browser.test.d.ts +2 -0
  117. package/dist/types/src/packlets/space/replication.browser.test.d.ts.map +1 -0
  118. package/dist/types/src/packlets/space/space-manager.browser.test.d.ts +2 -0
  119. package/dist/types/src/packlets/space/space-manager.browser.test.d.ts.map +1 -0
  120. package/dist/types/src/packlets/space/space-manager.d.ts +72 -0
  121. package/dist/types/src/packlets/space/space-manager.d.ts.map +1 -0
  122. package/dist/types/src/packlets/space/space-protocol.browser.test.d.ts +2 -0
  123. package/dist/types/src/packlets/space/space-protocol.browser.test.d.ts.map +1 -0
  124. package/dist/types/src/packlets/space/space-protocol.d.ts +99 -0
  125. package/dist/types/src/packlets/space/space-protocol.d.ts.map +1 -0
  126. package/dist/types/src/packlets/space/space-protocol.test.d.ts +2 -0
  127. package/dist/types/src/packlets/space/space-protocol.test.d.ts.map +1 -0
  128. package/dist/types/src/packlets/space/space.d.ts +65 -0
  129. package/dist/types/src/packlets/space/space.d.ts.map +1 -0
  130. package/dist/types/src/packlets/space/space.test.d.ts +2 -0
  131. package/dist/types/src/packlets/space/space.test.d.ts.map +1 -0
  132. package/dist/types/src/packlets/space/testing/change-metadata.d.ts +8 -0
  133. package/dist/types/src/packlets/space/testing/change-metadata.d.ts.map +1 -0
  134. package/dist/types/src/packlets/space/testing/index.d.ts +4 -0
  135. package/dist/types/src/packlets/space/testing/index.d.ts.map +1 -0
  136. package/dist/types/src/packlets/space/testing/test-agent-builder.d.ts +62 -0
  137. package/dist/types/src/packlets/space/testing/test-agent-builder.d.ts.map +1 -0
  138. package/dist/types/src/packlets/space-export/serialized-space-reader.d.ts +1 -1
  139. package/dist/types/src/packlets/space-export/serialized-space-reader.d.ts.map +1 -1
  140. package/dist/types/src/packlets/space-export/serialized-space-writer.d.ts.map +1 -1
  141. package/dist/types/src/packlets/spaces/data-space-manager.d.ts +40 -7
  142. package/dist/types/src/packlets/spaces/data-space-manager.d.ts.map +1 -1
  143. package/dist/types/src/packlets/spaces/data-space.d.ts +3 -1
  144. package/dist/types/src/packlets/spaces/data-space.d.ts.map +1 -1
  145. package/dist/types/src/packlets/spaces/genesis.d.ts +1 -1
  146. package/dist/types/src/packlets/spaces/genesis.d.ts.map +1 -1
  147. package/dist/types/src/packlets/spaces/spaces-service.d.ts +25 -23
  148. package/dist/types/src/packlets/spaces/spaces-service.d.ts.map +1 -1
  149. package/dist/types/src/packlets/storage/level.d.ts.map +1 -1
  150. package/dist/types/src/packlets/system/system-service.d.ts +18 -18
  151. package/dist/types/src/packlets/system/system-service.d.ts.map +1 -1
  152. package/dist/types/src/packlets/testing/invitation-utils.d.ts +1 -1
  153. package/dist/types/src/packlets/testing/invitation-utils.d.ts.map +1 -1
  154. package/dist/types/src/packlets/testing/test-builder.d.ts +7 -6
  155. package/dist/types/src/packlets/testing/test-builder.d.ts.map +1 -1
  156. package/dist/types/src/packlets/worker/worker-runtime.d.ts +41 -58
  157. package/dist/types/src/packlets/worker/worker-runtime.d.ts.map +1 -1
  158. package/dist/types/src/packlets/worker/worker-session.d.ts +21 -8
  159. package/dist/types/src/packlets/worker/worker-session.d.ts.map +1 -1
  160. package/dist/types/src/testing/index.d.ts +1 -0
  161. package/dist/types/src/testing/index.d.ts.map +1 -1
  162. package/dist/types/src/version.d.ts +1 -1
  163. package/dist/types/tsconfig.tsbuildinfo +1 -1
  164. package/package.json +52 -48
  165. package/src/index.ts +2 -0
  166. package/src/packlets/agents/edge-agent-manager.ts +56 -15
  167. package/src/packlets/agents/edge-agent-service.ts +25 -15
  168. package/src/packlets/devices/devices-service.test.ts +20 -19
  169. package/src/packlets/devices/devices-service.ts +17 -17
  170. package/src/packlets/devtools/devtools.ts +133 -75
  171. package/src/packlets/devtools/feeds.ts +2 -1
  172. package/src/packlets/devtools/network.ts +42 -12
  173. package/src/packlets/devtools/spaces.ts +1 -1
  174. package/src/packlets/diagnostics/diagnostics-broadcast.ts +4 -2
  175. package/src/packlets/diagnostics/diagnostics-collector.ts +5 -18
  176. package/src/packlets/diagnostics/diagnostics.ts +0 -11
  177. package/src/packlets/identity/authenticator.ts +2 -1
  178. package/src/packlets/identity/contacts-service.ts +46 -37
  179. package/src/packlets/identity/identity-manager.test.ts +3 -1
  180. package/src/packlets/identity/identity-manager.ts +73 -5
  181. package/src/packlets/identity/identity-recovery-manager.ts +56 -7
  182. package/src/packlets/identity/identity-service.test.ts +27 -18
  183. package/src/packlets/identity/identity-service.ts +114 -71
  184. package/src/packlets/identity/identity.test.ts +4 -9
  185. package/src/packlets/identity/identity.ts +1 -2
  186. package/src/packlets/invitations/edge-invitation-handler.ts +0 -1
  187. package/src/packlets/invitations/invitations-handler.ts +39 -3
  188. package/src/packlets/invitations/invitations-manager.ts +52 -4
  189. package/src/packlets/invitations/invitations-service.ts +54 -28
  190. package/src/packlets/logging/logging-service.ts +41 -29
  191. package/src/packlets/logging/logging.test.ts +28 -15
  192. package/src/packlets/metadata/index.ts +6 -0
  193. package/src/packlets/metadata/metadata-store.test.ts +49 -0
  194. package/src/packlets/metadata/metadata-store.ts +446 -0
  195. package/src/packlets/metadata/sqlite-metadata-store.ts +409 -0
  196. package/src/packlets/network/network-service.test.ts +19 -12
  197. package/src/packlets/network/network-service.ts +96 -29
  198. package/src/packlets/pipeline/codec.ts +18 -0
  199. package/src/packlets/pipeline/feeds.ts +22 -0
  200. package/src/packlets/pipeline/index.ts +8 -0
  201. package/src/packlets/pipeline/message-selector.ts +35 -0
  202. package/src/packlets/pipeline/pipeline-stress.test.ts +230 -0
  203. package/src/packlets/pipeline/pipeline.test.ts +140 -0
  204. package/src/packlets/pipeline/pipeline.ts +439 -0
  205. package/src/packlets/pipeline/testing/index.ts +5 -0
  206. package/src/packlets/pipeline/testing/test-feed-builder.ts +19 -0
  207. package/src/packlets/pipeline/timeframe-clock.ts +81 -0
  208. package/src/packlets/services/client-services-layer.ts +186 -0
  209. package/src/packlets/services/cross-device-space-synchronizer.ts +132 -0
  210. package/src/packlets/services/effect-rpc.test.ts +314 -0
  211. package/src/packlets/services/feed-syncer.ts +57 -3
  212. package/src/packlets/services/index.ts +2 -2
  213. package/src/packlets/services/platform.ts +0 -6
  214. package/src/packlets/services/service-context.ts +219 -522
  215. package/src/packlets/services/service-host.test.ts +34 -11
  216. package/src/packlets/services/service-host.ts +693 -213
  217. package/src/packlets/services/spec.md +106 -0
  218. package/src/packlets/services/sqlite-storage.test.ts +48 -0
  219. package/src/packlets/services/sqlite-storage.ts +117 -20
  220. package/src/packlets/space/admission-discovery-extension.ts +91 -0
  221. package/src/packlets/space/auth.ts +92 -0
  222. package/src/packlets/space/control-pipeline.test.ts +165 -0
  223. package/src/packlets/space/control-pipeline.ts +229 -0
  224. package/src/packlets/space/index.ts +9 -0
  225. package/src/packlets/space/replication.browser.test.ts +58 -0
  226. package/src/packlets/space/space-manager.browser.test.ts +40 -0
  227. package/src/packlets/space/space-manager.ts +224 -0
  228. package/src/packlets/space/space-protocol.browser.test.ts +129 -0
  229. package/src/packlets/space/space-protocol.test.ts +158 -0
  230. package/src/packlets/space/space-protocol.ts +308 -0
  231. package/src/packlets/space/space.test.ts +181 -0
  232. package/src/packlets/space/space.ts +196 -0
  233. package/src/packlets/space/testing/change-metadata.ts +27 -0
  234. package/src/packlets/space/testing/index.ts +7 -0
  235. package/src/packlets/space/testing/test-agent-builder.ts +252 -0
  236. package/src/packlets/space-export/serialized-space-reader.ts +3 -1
  237. package/src/packlets/space-export/serialized-space-writer.ts +53 -30
  238. package/src/packlets/space-export/space-archive.test.ts +30 -0
  239. package/src/packlets/spaces/data-space-manager.test.ts +1 -1
  240. package/src/packlets/spaces/data-space-manager.ts +148 -33
  241. package/src/packlets/spaces/data-space.ts +29 -18
  242. package/src/packlets/spaces/edge-feed-replicator.test.ts +1 -1
  243. package/src/packlets/spaces/genesis.ts +1 -1
  244. package/src/packlets/spaces/spaces-service.test.ts +35 -22
  245. package/src/packlets/spaces/spaces-service.ts +259 -180
  246. package/src/packlets/storage/level.ts +3 -1
  247. package/src/packlets/system/system-service.test.ts +31 -13
  248. package/src/packlets/system/system-service.ts +65 -37
  249. package/src/packlets/testing/invitation-utils.ts +3 -3
  250. package/src/packlets/testing/test-builder.ts +35 -20
  251. package/src/packlets/worker/worker-runtime.ts +222 -260
  252. package/src/packlets/worker/worker-session.ts +108 -91
  253. package/src/testing/index.ts +1 -0
  254. package/src/version.ts +1 -1
  255. package/dist/lib/browser/chunk-QCWEHHJW.mjs +0 -24
  256. package/dist/lib/browser/chunk-QCWEHHJW.mjs.map +0 -7
  257. package/dist/lib/browser/chunk-XJRPB3GA.mjs +0 -22
  258. package/dist/lib/browser/chunk-XJRPB3GA.mjs.map +0 -7
  259. package/dist/lib/browser/chunk-XU5R2BMF.mjs +0 -8837
  260. package/dist/lib/browser/chunk-XU5R2BMF.mjs.map +0 -7
  261. package/dist/lib/browser/index.mjs +0 -876
  262. package/dist/lib/browser/index.mjs.map +0 -7
  263. package/dist/lib/browser/meta.json +0 -1
  264. package/dist/lib/browser/packlets/diagnostics/browser-diagnostics-broadcast.mjs +0 -88
  265. package/dist/lib/browser/packlets/diagnostics/browser-diagnostics-broadcast.mjs.map +0 -7
  266. package/dist/lib/browser/packlets/diagnostics/diagnostics-broadcast.mjs +0 -11
  267. package/dist/lib/browser/packlets/diagnostics/diagnostics-broadcast.mjs.map +0 -7
  268. package/dist/lib/browser/packlets/locks/browser.mjs +0 -86
  269. package/dist/lib/browser/packlets/locks/browser.mjs.map +0 -7
  270. package/dist/lib/browser/packlets/locks/node.mjs +0 -48
  271. package/dist/lib/browser/packlets/locks/node.mjs.map +0 -7
  272. package/dist/lib/browser/testing/index.mjs +0 -436
  273. package/dist/lib/browser/testing/index.mjs.map +0 -7
  274. package/dist/lib/node-esm/chunk-2DT3MZRL.mjs +0 -22
  275. package/dist/lib/node-esm/chunk-2DT3MZRL.mjs.map +0 -7
  276. package/dist/lib/node-esm/chunk-2SZHAWBN.mjs +0 -24
  277. package/dist/lib/node-esm/chunk-2SZHAWBN.mjs.map +0 -7
  278. package/dist/lib/node-esm/chunk-H5YTUD35.mjs +0 -8837
  279. package/dist/lib/node-esm/chunk-H5YTUD35.mjs.map +0 -7
  280. package/dist/lib/node-esm/index.mjs +0 -876
  281. package/dist/lib/node-esm/index.mjs.map +0 -7
  282. package/dist/lib/node-esm/meta.json +0 -1
  283. package/dist/lib/node-esm/packlets/diagnostics/browser-diagnostics-broadcast.mjs +0 -88
  284. package/dist/lib/node-esm/packlets/diagnostics/browser-diagnostics-broadcast.mjs.map +0 -7
  285. package/dist/lib/node-esm/packlets/diagnostics/diagnostics-broadcast.mjs +0 -11
  286. package/dist/lib/node-esm/packlets/diagnostics/diagnostics-broadcast.mjs.map +0 -7
  287. package/dist/lib/node-esm/packlets/locks/browser.mjs +0 -86
  288. package/dist/lib/node-esm/packlets/locks/browser.mjs.map +0 -7
  289. package/dist/lib/node-esm/packlets/locks/node.mjs +0 -48
  290. package/dist/lib/node-esm/packlets/locks/node.mjs.map +0 -7
  291. package/dist/lib/node-esm/testing/index.mjs +0 -436
  292. package/dist/lib/node-esm/testing/index.mjs.map +0 -7
  293. package/dist/types/src/packlets/services/client-rpc-server.d.ts +0 -24
  294. package/dist/types/src/packlets/services/client-rpc-server.d.ts.map +0 -1
  295. package/dist/types/src/packlets/services/service-registry.d.ts +0 -15
  296. package/dist/types/src/packlets/services/service-registry.d.ts.map +0 -1
  297. package/dist/types/src/packlets/services/service-registry.test.d.ts +0 -2
  298. package/dist/types/src/packlets/services/service-registry.test.d.ts.map +0 -1
  299. package/dist/types/src/testing/setup.d.ts +0 -3
  300. package/dist/types/src/testing/setup.d.ts.map +0 -1
  301. package/src/packlets/services/client-rpc-server.ts +0 -111
  302. package/src/packlets/services/service-registry.test.ts +0 -78
  303. package/src/packlets/services/service-registry.ts +0 -36
  304. package/src/testing/setup.ts +0 -11
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pipeline-stress.test.d.ts","sourceRoot":"","sources":["../../../../../src/packlets/pipeline/pipeline-stress.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,131 @@
1
+ import { Event } from '@dxos/async';
2
+ import { Context } from '@dxos/context';
3
+ import { type FeedWrapper, type FeedWriter } from '@dxos/feed-store';
4
+ import { PublicKey } from '@dxos/keys';
5
+ import { type FeedMessageBlock } from '@dxos/protocols';
6
+ import type { FeedMessage } from '@dxos/protocols/proto/dxos/echo/feed';
7
+ import { Timeframe } from '@dxos/timeframe';
8
+ import { ComplexMap } from '@dxos/util';
9
+ import { TimeframeClock } from './timeframe-clock';
10
+ export type WaitUntilReachedTargetProps = {
11
+ /**
12
+ * For cancellation.
13
+ */
14
+ ctx?: Context;
15
+ timeout?: number;
16
+ /**
17
+ * @default true
18
+ */
19
+ breakOnStall?: boolean;
20
+ };
21
+ /**
22
+ * External state accessor.
23
+ */
24
+ export declare class PipelineState {
25
+ private _feeds;
26
+ private _timeframeClock;
27
+ get timeframeUpdate(): Event<Timeframe>;
28
+ readonly stalled: Event<void>;
29
+ /**
30
+ * Target timeframe we are waiting to reach.
31
+ */
32
+ private _targetTimeframe;
33
+ constructor(_feeds: ComplexMap<PublicKey, FeedWrapper<FeedMessage>>, _timeframeClock: TimeframeClock);
34
+ /**
35
+ * Latest theoretical timeframe based on the last mutation in each feed.
36
+ * NOTE: This might never be reached if the mutation dependencies
37
+ */
38
+ get endTimeframe(): Timeframe;
39
+ get startTimeframe(): Timeframe;
40
+ get timeframe(): Timeframe;
41
+ get pendingTimeframe(): Timeframe;
42
+ get targetTimeframe(): Timeframe;
43
+ get reachedTarget(): boolean;
44
+ get feeds(): FeedWrapper<FeedMessage>[];
45
+ waitUntilTimeframe(target: Timeframe): Promise<void>;
46
+ setTargetTimeframe(target: Timeframe): void;
47
+ /**
48
+ * Wait until the pipeline processes all messages in the feed and reaches the target timeframe if that is set.
49
+ *
50
+ * This function will resolve immediately if the pipeline is stalled.
51
+ *
52
+ * @param timeout Timeout in milliseconds to specify the maximum wait time.
53
+ */
54
+ waitUntilReachedTargetTimeframe({ ctx, timeout, breakOnStall }?: WaitUntilReachedTargetProps): Promise<void>;
55
+ }
56
+ export interface PipelineAccessor {
57
+ state: PipelineState;
58
+ writer: FeedWriter<FeedMessage.Payload>;
59
+ }
60
+ /**
61
+ * A multi-reader pipeline that operates on feeds.
62
+ * Might have a single writable feed.
63
+ * Has a timeframe clock to handle message ordering.
64
+ *
65
+ * NOTE:
66
+ * - Feeds passed in must have value encoding consistent with the type expected by the iterator/writer.
67
+ *
68
+ * # Usage examples
69
+ *
70
+ * ## Create a new space.
71
+ *
72
+ * 1. Generate space key, genesis feed key.
73
+ * 2. Create and open pipeline reading from {}.
74
+ * 3. Create and add the writable genesis feed.
75
+ * 4. Write the initial sequence of control and credential messages.
76
+ *
77
+ * ## Load an existing space from storage
78
+ *
79
+ * 1. Load space key, genesis feed key, get starting timeframe from saved snapshot.
80
+ * 2. Create and open pipeline reading from the initial timeframe.
81
+ * 3. Open and add the genesis feed.
82
+ * 4. Once the writable feed is added, the pipeline becomes writable.
83
+ *
84
+ * ## Join an existing space created by another agent/device.
85
+ *
86
+ * 1. Get the space key, genesis feed key from another agent.
87
+ * 2. (optionally) Download the snapshot from another agent.
88
+ * 3. Create and open pipeline.
89
+ * 4. Generate the writable feed key.
90
+ * 5. Wait for the writable feed to be added.
91
+ */
92
+ export declare class Pipeline implements PipelineAccessor {
93
+ private readonly _timeframeClock;
94
+ private readonly _feeds;
95
+ private readonly _state;
96
+ private readonly _processingTrigger;
97
+ private readonly _pauseTrigger;
98
+ private readonly _downloads;
99
+ private _feedSetIterator?;
100
+ private _writer;
101
+ private _isStopping;
102
+ private _isStarted;
103
+ private _isBeingConsumed;
104
+ private _isPaused;
105
+ get state(): PipelineState;
106
+ get writer(): FeedWriter<FeedMessage.Payload>;
107
+ hasFeed(feedKey: PublicKey): boolean;
108
+ getFeeds(): FeedWrapper<FeedMessage>[];
109
+ addFeed(feed: FeedWrapper<FeedMessage>): Promise<void>;
110
+ setWriteFeed(feed: FeedWrapper<FeedMessage>): void;
111
+ start(): Promise<void>;
112
+ stop(): Promise<void>;
113
+ /**
114
+ * @param timeframe Timeframe of already processed messages.
115
+ * The pipeline will start processing messages AFTER this timeframe.
116
+ */
117
+ setCursor(timeframe: Timeframe): Promise<void>;
118
+ /**
119
+ * Calling pause while processing will cause a deadlock.
120
+ */
121
+ pause(): Promise<void>;
122
+ unpause(): Promise<void>;
123
+ /**
124
+ * Starts to iterate over the ordered messages from the added feeds.
125
+ * Updates the timeframe clock after the message has bee processed.
126
+ */
127
+ consume(): AsyncIterable<FeedMessageBlock>;
128
+ private _setFeedDownloadState;
129
+ private _initIterator;
130
+ }
131
+ //# sourceMappingURL=pipeline.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../../../../../src/packlets/pipeline/pipeline.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=pipeline.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pipeline.test.d.ts","sourceRoot":"","sources":["../../../../../src/packlets/pipeline/pipeline.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export * from './test-feed-builder';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/packlets/pipeline/testing/index.ts"],"names":[],"mappings":"AAIA,cAAc,qBAAqB,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { TestBuilder } from '@dxos/feed-store/testing';
2
+ import type { FeedMessage } from '@dxos/protocols/proto/dxos/echo/feed';
3
+ /**
4
+ * Builder with default encoder and generator.
5
+ */
6
+ export declare class TestFeedBuilder extends TestBuilder<FeedMessage> {
7
+ constructor();
8
+ }
9
+ //# sourceMappingURL=test-feed-builder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-feed-builder.d.ts","sourceRoot":"","sources":["../../../../../../src/packlets/pipeline/testing/test-feed-builder.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sCAAsC,CAAC;AAIxE;;GAEG;AACH,qBAAa,eAAgB,SAAQ,WAAW,CAAC,WAAW,CAAC;IAC3D,cAIC;CACF"}
@@ -0,0 +1,31 @@
1
+ import { Event } from '@dxos/async';
2
+ import { type FeedIndex } from '@dxos/feed-store';
3
+ import { type PublicKey } from '@dxos/keys';
4
+ import { Timeframe } from '@dxos/timeframe';
5
+ export declare const mapTimeframeToFeedIndexes: (timeframe: Timeframe) => FeedIndex[];
6
+ export declare const mapFeedIndexesToTimeframe: (indexes: FeedIndex[]) => Timeframe;
7
+ export declare const startAfter: (timeframe: Timeframe) => FeedIndex[];
8
+ /**
9
+ * Keeps state of the last timeframe that was processed by ECHO.
10
+ */
11
+ export declare class TimeframeClock {
12
+ private _timeframe;
13
+ readonly update: Event<Timeframe>;
14
+ private _pendingTimeframe;
15
+ constructor(_timeframe?: Timeframe);
16
+ /**
17
+ * Timeframe that was processed by ECHO.
18
+ */
19
+ get timeframe(): Timeframe;
20
+ /**
21
+ * Timeframe that is currently being processed by ECHO.
22
+ * Will be equal to `timeframe` after the processing is complete.
23
+ */
24
+ get pendingTimeframe(): Timeframe;
25
+ setTimeframe(timeframe: Timeframe): void;
26
+ updatePendingTimeframe(key: PublicKey, seq: number): void;
27
+ updateTimeframe(): void;
28
+ hasGaps(timeframe: Timeframe): boolean;
29
+ waitUntilReached(target: Timeframe): Promise<void>;
30
+ }
31
+ //# sourceMappingURL=timeframe-clock.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timeframe-clock.d.ts","sourceRoot":"","sources":["../../../../../src/packlets/pipeline/timeframe-clock.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEpC,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,eAAO,MAAM,yBAAyB,cAAe,SAAS,KAAG,SAAS,EACN,CAAC;AAErE,eAAO,MAAM,yBAAyB,YAAa,SAAS,EAAE,KAAG,SACK,CAAC;AAEvE,eAAO,MAAM,UAAU,cAAe,SAAS,KAAG,SAAS,EACoB,CAAC;AAEhF;;GAEG;AACH,qBAAa,cAAc;IAKb,OAAO,CAAC,UAAU;IAJ9B,QAAQ,CAAC,MAAM,mBAA0B;IAEzC,OAAO,CAAC,iBAAiB,CAAY;IAErC,YAAoB,UAAU,YAAkB,EAE/C;IAED;;OAEG;IACH,IAAI,SAAS,cAEZ;IAED;;;OAGG;IACH,IAAI,gBAAgB,cAEnB;IAED,YAAY,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI,CAIvC;IAED,sBAAsB,CAAC,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAExD;IAED,eAAe,IAAI,IAAI,CAGtB;IAED,OAAO,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,CAGrC;IAGK,gBAAgB,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAWvD;CACF"}
@@ -0,0 +1,21 @@
1
+ import * as Layer from 'effect/Layer';
2
+ import { EchoHostService } from '@dxos/echo-host';
3
+ import { KeyringApiService } from '@dxos/keyring';
4
+ import { SignalManagerService } from '@dxos/messaging';
5
+ import { SwarmNetworkManagerService } from '@dxos/network-manager';
6
+ import { ContactsService, DataService, DevicesService, EdgeAgentService, FeedService, IdentityService, InvitationsService, NetworkService, QueryService, SpacesService } from '@dxos/protocols/rpc';
7
+ import { IdentityManagerService } from '../identity';
8
+ import { EdgeIdentityRecoveryManagerService } from '../identity/identity-recovery-manager';
9
+ import { InvitationsManagerService } from '../invitations';
10
+ import { SpaceManagerService } from '../space';
11
+ import { ClientServicesHostService } from './service-host';
12
+ /**
13
+ * Union of every client RPC service tag resolved from the stack.
14
+ */
15
+ export type ClientServicesRpcContext = IdentityService.Tag | ContactsService.Tag | InvitationsService.Tag | DevicesService.Tag | SpacesService.Tag | NetworkService.Tag | EdgeAgentService.Tag | DataService.Tag | QueryService.Tag | FeedService.Tag;
16
+ /**
17
+ * Composes every client RPC service handler on top of the component tags exposed by the stack.
18
+ * Each handler keeps its own tag so callers resolve them individually from the stack runtime.
19
+ */
20
+ export declare const ClientServicesRpcLayer: Layer.Layer<ClientServicesRpcContext, never, EchoHostService | IdentityManagerService | SpaceManagerService | InvitationsManagerService | EdgeIdentityRecoveryManagerService | KeyringApiService | SwarmNetworkManagerService | SignalManagerService | ClientServicesHostService>;
21
+ //# sourceMappingURL=client-services-layer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client-services-layer.d.ts","sourceRoot":"","sources":["../../../../../src/packlets/services/client-services-layer.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAGtC,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAElD,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAC;AACnE,OAAO,EACL,eAAe,EACf,WAAW,EACX,cAAc,EACd,gBAAgB,EAChB,WAAW,EACX,eAAe,EACf,kBAAkB,EAClB,cAAc,EACd,YAAY,EACZ,aAAa,EACd,MAAM,qBAAqB,CAAC;AAI7B,OAAO,EAAE,sBAAsB,EAAuB,MAAM,aAAa,CAAC;AAE1E,OAAO,EAAE,kCAAkC,EAAE,MAAM,uCAAuC,CAAC;AAC3F,OAAO,EAAE,yBAAyB,EAA0B,MAAM,gBAAgB,CAAC;AAEnF,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAE/C,OAAO,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAS3D;;GAEG;AACH,MAAM,MAAM,wBAAwB,GAChC,eAAe,CAAC,GAAG,GACnB,eAAe,CAAC,GAAG,GACnB,kBAAkB,CAAC,GAAG,GACtB,cAAc,CAAC,GAAG,GAClB,aAAa,CAAC,GAAG,GACjB,cAAc,CAAC,GAAG,GAClB,gBAAgB,CAAC,GAAG,GACpB,WAAW,CAAC,GAAG,GACf,YAAY,CAAC,GAAG,GAChB,WAAW,CAAC,GAAG,CAAC;AAqGpB;;;GAGG;AACH,eAAO,MAAM,sBAAsB,EAAE,KAAK,CAAC,KAAK,CAC9C,wBAAwB,EACxB,KAAK,EACH,eAAe,GACf,sBAAsB,GACtB,mBAAmB,GACnB,yBAAyB,GACzB,kCAAkC,GAClC,iBAAiB,GACjB,0BAA0B,GAC1B,oBAAoB,GACpB,yBAAyB,CAY5B,CAAC"}
@@ -0,0 +1,28 @@
1
+ import * as EffectContext from 'effect/Context';
2
+ import * as Layer from 'effect/Layer';
3
+ import { type Lifecycle } from '@dxos/context';
4
+ import { type CredentialProcessor } from '@dxos/credentials';
5
+ import { type Identity } from '../identity';
6
+ import { DataSpaceManager, DataSpaceManagerService } from '../spaces';
7
+ /**
8
+ * Replicates cross-device space membership and deletion credentials from the halo space.
9
+ */
10
+ export interface CrossDeviceSpaceSynchronizer extends CredentialProcessor, Lifecycle {
11
+ setIdentity(identity: Identity): void;
12
+ }
13
+ declare const CrossDeviceSpaceSynchronizerService_base: EffectContext.TagClass<CrossDeviceSpaceSynchronizerService, "@dxos/client-services/CrossDeviceSpaceSynchronizer", CrossDeviceSpaceSynchronizer>;
14
+ /**
15
+ * Effect service tag for {@link CrossDeviceSpaceSynchronizer}.
16
+ */
17
+ export declare class CrossDeviceSpaceSynchronizerService extends CrossDeviceSpaceSynchronizerService_base {
18
+ }
19
+ /**
20
+ * Creates a dormant {@link CrossDeviceSpaceSynchronizer} bound to the given data space manager.
21
+ */
22
+ export declare const createCrossDeviceSpaceSynchronizer: (dataSpaceManager: DataSpaceManager) => CrossDeviceSpaceSynchronizer;
23
+ /**
24
+ * Effect Layer constructing a dormant {@link CrossDeviceSpaceSynchronizer}.
25
+ */
26
+ export declare const CrossDeviceSpaceSynchronizerLayer: Layer.Layer<CrossDeviceSpaceSynchronizerService, never, DataSpaceManagerService>;
27
+ export {};
28
+ //# sourceMappingURL=cross-device-space-synchronizer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cross-device-space-synchronizer.d.ts","sourceRoot":"","sources":["../../../../../src/packlets/services/cross-device-space-synchronizer.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,aAAa,MAAM,gBAAgB,CAAC;AAEhD,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAEtC,OAAO,EAAgB,KAAK,SAAS,EAAY,MAAM,eAAe,CAAC;AACvE,OAAO,EAAE,KAAK,mBAAmB,EAA0B,MAAM,mBAAmB,CAAC;AAKrF,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,WAAW,CAAC;AAEtE;;GAEG;AACH,MAAM,WAAW,4BAA6B,SAAQ,mBAAmB,EAAE,SAAS;IAClF,WAAW,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAC;CACvC;;AAED;;GAEG;AACH,qBAAa,mCAAoC,SAAQ,wCAEa;CAAG;AAmFzE;;GAEG;AACH,eAAO,MAAM,kCAAkC,qBAAsB,gBAAgB,KAAG,4BAChC,CAAC;AAEzD;;GAEG;AACH,eAAO,MAAM,iCAAiC,EAAE,KAAK,CAAC,KAAK,CACzD,mCAAmC,EACnC,KAAK,EACL,uBAAuB,CAOxB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=effect-rpc.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"effect-rpc.test.d.ts","sourceRoot":"","sources":["../../../../../src/packlets/services/effect-rpc.test.ts"],"names":[],"mappings":""}
@@ -1,6 +1,9 @@
1
- import type * as SqlClient from '@effect/sql/SqlClient';
1
+ import * as SqlClient from '@effect/sql/SqlClient';
2
+ import * as EffectContext from 'effect/Context';
3
+ import * as Layer from 'effect/Layer';
2
4
  import { Context, Resource } from '@dxos/context';
3
- import { type EdgeConnection } from '@dxos/edge-client';
5
+ import { EchoHostService } from '@dxos/echo-host';
6
+ import { type EdgeConnection, EdgeConnectionService } from '@dxos/edge-client';
4
7
  import { RuntimeProvider } from '@dxos/effect';
5
8
  import { type FeedStore } from '@dxos/feed';
6
9
  import { SpaceId } from '@dxos/keys';
@@ -48,6 +51,14 @@ export type FeedSyncerOptions = {
48
51
  */
49
52
  syncRpcTimeoutMs?: number;
50
53
  };
54
+ declare const FeedSyncerService_base: EffectContext.TagClass<FeedSyncerService, "@dxos/client-services/FeedSyncer", FeedSyncer | undefined>;
55
+ /**
56
+ * Effect service tag for {@link FeedSyncer}.
57
+ *
58
+ * undefined if not initialized.
59
+ */
60
+ export declare class FeedSyncerService extends FeedSyncerService_base {
61
+ }
51
62
  export declare class FeedSyncer extends Resource {
52
63
  #private;
53
64
  constructor(options: FeedSyncerOptions);
@@ -72,4 +83,13 @@ export declare class FeedSyncer extends Resource {
72
83
  shouldPull?: boolean;
73
84
  }): Promise<void>;
74
85
  }
86
+ export type FeedSyncerLayerOptions = Pick<FeedSyncerOptions, 'peerId' | 'syncNamespaces' | 'messageBlocksLimit' | 'syncConcurrency' | 'pollingInterval' | 'pollRequestThrottleMs' | 'backgroundSync' | 'syncRpcTimeoutMs'>;
87
+ /**
88
+ * Effect Layer constructing a {@link FeedSyncer} from ambient SQL, echo host, and edge services.
89
+ *
90
+ * The feed store is sourced from the {@link EchoHostService} (breaking the EchoHost <-> FeedSyncer
91
+ * cycle). Only included when an edge connection is configured, so it resolves the edge tag directly.
92
+ */
93
+ export declare const FeedSyncerLayer: (options: FeedSyncerLayerOptions) => Layer.Layer<FeedSyncerService, never, SqlClient.SqlClient | SqlTransaction.SqlTransaction | EchoHostService | EdgeConnectionService>;
94
+ export {};
75
95
  //# sourceMappingURL=feed-syncer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"feed-syncer.d.ts","sourceRoot":"","sources":["../../../../../src/packlets/services/feed-syncer.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,KAAK,SAAS,MAAM,uBAAuB,CAAC;AAMxD,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,KAAK,cAAc,EAAiB,MAAM,mBAAmB,CAAC;AACvE,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,KAAK,SAAS,EAAc,MAAM,YAAY,CAAC;AAExD,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAMrC,OAAO,KAAK,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,4CAA4C,CAAC;AAC5G,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAavD,MAAM,MAAM,iBAAiB,GAAG;IAC9B,OAAO,EAAE,eAAe,CAAC,eAAe,CAAC,SAAS,CAAC,SAAS,GAAG,cAAc,CAAC,cAAc,CAAC,CAAC;IAC9F,SAAS,EAAE,SAAS,CAAC;IACrB,UAAU,EAAE,cAAc,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,OAAO,EAAE,CAAC;IAE7B;;OAEG;IACH,cAAc,EAAE,MAAM,EAAE,CAAC;IAEzB;;;OAGG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAE5B;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB;;;OAGG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAE/B;;;;OAIG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B,CAAC;AAEF,qBAAa,UAAW,SAAQ,QAAQ;;IAsBtC,YAAY,OAAO,EAAE,iBAAiB,EAkBrC;IAED,UAAyB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CA0E9C;IAED,UAAyB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAK/C;IAED;;OAEG;IACH,YAAY,IAAI,IAAI,CAwBnB;IAED;;;OAGG;IACG,YAAY,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAmD5F;IAED;;OAEG;IACG,YAAY,CAChB,GAAG,EAAE,OAAO,EACZ,EACE,OAAO,EACP,WAAW,EACX,UAAiB,EACjB,UAAiB,EAClB,EAAE;QACD,OAAO,EAAE,OAAO,CAAC;QACjB,WAAW,EAAE,MAAM,CAAC;QACpB,UAAU,CAAC,EAAE,OAAO,CAAC;QACrB,UAAU,CAAC,EAAE,OAAO,CAAC;KACtB,GACA,OAAO,CAAC,IAAI,CAAC,CAuCf;CAwLF"}
1
+ {"version":3,"file":"feed-syncer.d.ts","sourceRoot":"","sources":["../../../../../src/packlets/services/feed-syncer.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,SAAS,MAAM,uBAAuB,CAAC;AAEnD,OAAO,KAAK,aAAa,MAAM,gBAAgB,CAAC;AAEhD,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAItC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,KAAK,cAAc,EAAE,qBAAqB,EAAiB,MAAM,mBAAmB,CAAC;AAC9F,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,KAAK,SAAS,EAAc,MAAM,YAAY,CAAC;AAExD,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAMrC,OAAO,KAAK,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,4CAA4C,CAAC;AAC5G,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAavD,MAAM,MAAM,iBAAiB,GAAG;IAC9B,OAAO,EAAE,eAAe,CAAC,eAAe,CAAC,SAAS,CAAC,SAAS,GAAG,cAAc,CAAC,cAAc,CAAC,CAAC;IAC9F,SAAS,EAAE,SAAS,CAAC;IACrB,UAAU,EAAE,cAAc,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,OAAO,EAAE,CAAC;IAE7B;;OAEG;IACH,cAAc,EAAE,MAAM,EAAE,CAAC;IAEzB;;;OAGG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAE5B;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB;;;OAGG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAE/B;;;;OAIG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B,CAAC;;AAEF;;;;GAIG;AACH,qBAAa,iBAAkB,SAAQ,sBAGpC;CAAG;AAEN,qBAAa,UAAW,SAAQ,QAAQ;;IAsBtC,YAAY,OAAO,EAAE,iBAAiB,EAkBrC;IAED,UAAyB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CA0E9C;IAED,UAAyB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAK/C;IAED;;OAEG;IACH,YAAY,IAAI,IAAI,CAwBnB;IAED;;;OAGG;IACG,YAAY,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAmD5F;IAED;;OAEG;IACG,YAAY,CAChB,GAAG,EAAE,OAAO,EACZ,EACE,OAAO,EACP,WAAW,EACX,UAAiB,EACjB,UAAiB,EAClB,EAAE;QACD,OAAO,EAAE,OAAO,CAAC;QACjB,WAAW,EAAE,MAAM,CAAC;QACpB,UAAU,CAAC,EAAE,OAAO,CAAC;QACrB,UAAU,CAAC,EAAE,OAAO,CAAC;KACtB,GACA,OAAO,CAAC,IAAI,CAAC,CAuCf;CAwLF;AAED,MAAM,MAAM,sBAAsB,GAAG,IAAI,CACvC,iBAAiB,EACf,QAAQ,GACR,gBAAgB,GAChB,oBAAoB,GACpB,iBAAiB,GACjB,iBAAiB,GACjB,uBAAuB,GACvB,gBAAgB,GAChB,kBAAkB,CACrB,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,eAAe,YACjB,sBAAsB,KAC9B,KAAK,CAAC,KAAK,CACZ,iBAAiB,EACjB,KAAK,EACL,SAAS,CAAC,SAAS,GAAG,cAAc,CAAC,cAAc,GAAG,eAAe,GAAG,qBAAqB,CAgB5F,CAAC"}
@@ -1,6 +1,6 @@
1
- export * from './client-rpc-server';
1
+ export * from './client-services-layer';
2
+ export * from './cross-device-space-synchronizer';
2
3
  export * from './feed-syncer';
3
4
  export * from './service-context';
4
5
  export * from './service-host';
5
- export * from './service-registry';
6
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/packlets/services/index.ts"],"names":[],"mappings":"AAIA,cAAc,qBAAqB,CAAC;AACpC,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/packlets/services/index.ts"],"names":[],"mappings":"AAIA,cAAc,yBAAyB,CAAC;AACxC,cAAc,mCAAmC,CAAC;AAClD,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"platform.d.ts","sourceRoot":"","sources":["../../../../../src/packlets/services/platform.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,QAAQ,EAAE,MAAM,4CAA4C,CAAC;AAEtE,eAAO,MAAM,WAAW,QAAO,QAmC9B,CAAC"}
1
+ {"version":3,"file":"platform.d.ts","sourceRoot":"","sources":["../../../../../src/packlets/services/platform.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,QAAQ,EAAE,MAAM,4CAA4C,CAAC;AAEtE,eAAO,MAAM,WAAW,QAAO,QA6B9B,CAAC"}
@@ -1,71 +1,52 @@
1
1
  import * as SqlClient from '@effect/sql/SqlClient';
2
- import { Trigger } from '@dxos/async';
3
- import { Context, Resource } from '@dxos/context';
4
- import { EchoHost, SpaceManager, SqliteMetadataStore } from '@dxos/echo-host';
5
- import type { EdgeConnection, EdgeHttpClient } from '@dxos/edge-client';
6
- import { RuntimeProvider } from '@dxos/effect';
7
- import { FeedStore } from '@dxos/feed-store';
8
- import { SqliteKeyring } from '@dxos/keyring';
9
- import { type SignalManager } from '@dxos/messaging';
10
- import { type SwarmNetworkManager } from '@dxos/network-manager';
11
- import { Invitation } from '@dxos/protocols/proto/dxos/client/services';
2
+ import type * as SqlError from '@effect/sql/SqlError';
3
+ import * as EffectContext from 'effect/Context';
4
+ import * as Effect from 'effect/Effect';
5
+ import * as Layer from 'effect/Layer';
6
+ import { EchoHostService } from '@dxos/echo-host';
7
+ import { type EdgeConnection, type EdgeHttpClient } from '@dxos/edge-client';
8
+ import { FeedStoreService } from '@dxos/feed-store';
9
+ import { KeyringApiService } from '@dxos/keyring';
10
+ import { SignalManagerService } from '@dxos/messaging';
11
+ import { SwarmNetworkManagerService } from '@dxos/network-manager';
12
12
  import { type Runtime } from '@dxos/protocols/proto/dxos/config';
13
- import type { FeedMessage } from '@dxos/protocols/proto/dxos/echo/feed';
14
- import { type ProfileDocument } from '@dxos/protocols/proto/dxos/halo/credentials';
15
13
  import { SqlTransaction } from '@dxos/sql-sqlite';
16
- import { SqliteBlobStore } from '@dxos/teleport-extension-object-sync';
14
+ import { BlobStoreApiService } from '@dxos/teleport-extension-object-sync';
15
+ import { EdgeAgentManagerService } from '../agents';
16
+ import { type IdentityManagerProps, IdentityManagerService, IdentityProviderService } from '../identity';
17
+ import { EdgeIdentityRecoveryManagerService } from '../identity/identity-recovery-manager';
18
+ import { type InvitationConnectionProps, InvitationsHandlerService, InvitationsManagerService } from '../invitations';
19
+ import { IMetadataStoreService } from '../metadata';
20
+ import { SpaceManagerService } from '../space';
21
+ import { type DataSpaceManagerRuntimeProps, DataSpaceManagerService, SigningContextProviderService } from '../spaces';
22
+ import { CrossDeviceSpaceSynchronizerService } from './cross-device-space-synchronizer';
17
23
  type SqlTransactionTag = SqlTransaction.SqlTransaction;
18
- import { EdgeAgentManager } from '../agents';
19
- import { type CreateIdentityOptions, type Identity, IdentityManager, type IdentityManagerProps } from '../identity';
20
- import { EdgeIdentityRecoveryManager } from '../identity/identity-recovery-manager';
21
- import { type InvitationConnectionProps, type InvitationProtocol, InvitationsHandler, InvitationsManager } from '../invitations';
22
- import { DataSpaceManager, type DataSpaceManagerRuntimeProps } from '../spaces';
23
24
  export type ServiceContextRuntimeProps = Pick<IdentityManagerProps, 'devicePresenceOfflineTimeout' | 'devicePresenceAnnounceInterval'> & DataSpaceManagerRuntimeProps & {
24
25
  invitationConnectionDefaultProps?: InvitationConnectionProps;
25
26
  disableP2pReplication?: boolean;
26
27
  enableVectorIndexing?: boolean;
27
28
  };
29
+ declare const StorageMigrationService_base: EffectContext.TagClass<StorageMigrationService, "@dxos/client-services/StorageMigration", Effect.Effect<void, SqlError.SqlError, SqlClient.SqlClient | SqlTransaction.SqlTransaction>>;
28
30
  /**
29
- * Shared backend for all client services.
31
+ * Combined storage migration effect gathered from the concrete SQLite stores.
32
+ * Run by {@link ClientServicesHost} during open (storage migration stage).
30
33
  */
31
- export declare class ServiceContext extends Resource {
32
- readonly networkManager: SwarmNetworkManager;
33
- readonly signalManager: SignalManager;
34
- private readonly _edgeConnection;
35
- private readonly _edgeHttpClient;
36
- private readonly _runtime;
37
- readonly _runtimeProps?: ServiceContextRuntimeProps | undefined;
38
- private readonly _edgeFeatures?;
39
- private readonly _edgeIdentityUpdateMutex;
40
- readonly initialized: Trigger<void>;
41
- readonly metadataStore: SqliteMetadataStore;
42
- readonly blobStore: SqliteBlobStore;
43
- readonly feedStore: FeedStore<FeedMessage>;
44
- readonly keyring: SqliteKeyring;
45
- readonly spaceManager: SpaceManager;
46
- readonly identityManager: IdentityManager;
47
- readonly recoveryManager: EdgeIdentityRecoveryManager;
48
- readonly invitations: InvitationsHandler;
49
- readonly invitationsManager: InvitationsManager;
50
- readonly echoHost: EchoHost;
51
- private readonly _meshReplicator?;
52
- private readonly _echoEdgeReplicator?;
53
- private readonly _feedSyncer?;
54
- private readonly _feedStorage;
55
- dataSpaceManager?: DataSpaceManager;
56
- edgeAgentManager?: EdgeAgentManager;
57
- private readonly _handlerFactories;
58
- private _deviceSpaceSync?;
59
- constructor(networkManager: SwarmNetworkManager, signalManager: SignalManager, _edgeConnection: EdgeConnection | undefined, _edgeHttpClient: EdgeHttpClient | undefined, _runtime: RuntimeProvider.RuntimeProvider<SqlClient.SqlClient | SqlTransactionTag>, _runtimeProps?: ServiceContextRuntimeProps | undefined, _edgeFeatures?: Runtime.Client.EdgeFeatures | undefined);
60
- protected _open(ctx: Context): Promise<void>;
61
- protected _close(ctx: Context): Promise<void>;
62
- createIdentity(params?: CreateIdentityOptions, ctx?: Context): Promise<Identity>;
63
- getInvitationHandler(invitation: Partial<Invitation> & Pick<Invitation, 'kind'>): InvitationProtocol;
64
- broadcastProfileUpdate(profile: ProfileDocument | undefined): Promise<void>;
65
- private _acceptIdentity;
66
- private _checkStorageVersion;
67
- private _initialize;
68
- private _setNetworkIdentity;
34
+ export declare class StorageMigrationService extends StorageMigrationService_base {
69
35
  }
36
+ export type ServiceContextLayerOptions = ServiceContextRuntimeProps & {
37
+ edgeFeatures?: Runtime.Client.EdgeFeatures;
38
+ edgeConnection?: EdgeConnection;
39
+ edgeHttpClient?: EdgeHttpClient;
40
+ };
41
+ /**
42
+ * Component tags the composed stack exposes so {@link ClientServicesHost} and the client RPC service
43
+ * layers can depend on each component directly.
44
+ */
45
+ export type ServiceContextStackContext = EchoHostService | IdentityManagerService | IdentityProviderService | SpaceManagerService | InvitationsManagerService | InvitationsHandlerService | EdgeIdentityRecoveryManagerService | KeyringApiService | DataSpaceManagerService | EdgeAgentManagerService | CrossDeviceSpaceSynchronizerService | SigningContextProviderService | IMetadataStoreService | BlobStoreApiService | FeedStoreService | StorageMigrationService;
46
+ /**
47
+ * Effect Layer composing the dormant client-stack components, constructed before identity is ready.
48
+ * {@link ClientServicesHost} resolves these tags and drives their lifecycle.
49
+ */
50
+ export declare const ServiceContextLayer: (options: ServiceContextLayerOptions) => Layer.Layer<ServiceContextStackContext, never, SwarmNetworkManagerService | SignalManagerService | SqlClient.SqlClient | SqlTransactionTag>;
70
51
  export {};
71
52
  //# sourceMappingURL=service-context.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"service-context.d.ts","sourceRoot":"","sources":["../../../../../src/packlets/services/service-context.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"service-context.d.ts","sourceRoot":"","sources":["../../../../../src/packlets/services/service-context.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,SAAS,MAAM,uBAAuB,CAAC;AACnD,OAAO,KAAK,KAAK,QAAQ,MAAM,sBAAsB,CAAC;AACtD,OAAO,KAAK,aAAa,MAAM,gBAAgB,CAAC;AAChD,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAEtC,OAAO,EAIL,eAAe,EAEhB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,KAAK,cAAc,EAEnB,KAAK,cAAc,EAEpB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAoC,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACtF,OAAO,EAAE,iBAAiB,EAAqC,MAAM,eAAe,CAAC;AACrF,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAC;AAEnE,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,mCAAmC,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAyC,MAAM,sCAAsC,CAAC;AAElH,OAAO,EAAyB,uBAAuB,EAAE,MAAM,WAAW,CAAC;AAC3E,OAAO,EAEL,KAAK,oBAAoB,EACzB,sBAAsB,EACtB,uBAAuB,EAExB,MAAM,aAAa,CAAC;AACrB,OAAO,EAEL,kCAAkC,EACnC,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EACL,KAAK,yBAAyB,EAE9B,yBAAyB,EAEzB,yBAAyB,EAC1B,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,qBAAqB,EAAiD,MAAM,aAAa,CAAC;AAEnG,OAAO,EAAqB,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAClE,OAAO,EAEL,KAAK,4BAA4B,EACjC,uBAAuB,EAEvB,6BAA6B,EAC9B,MAAM,WAAW,CAAC;AACnB,OAAO,EAEL,mCAAmC,EACpC,MAAM,mCAAmC,CAAC;AAK3C,KAAK,iBAAiB,GAAG,cAAc,CAAC,cAAc,CAAC;AAEvD,MAAM,MAAM,0BAA0B,GAAG,IAAI,CAC3C,oBAAoB,EACpB,8BAA8B,GAAG,gCAAgC,CAClE,GACC,4BAA4B,GAAG;IAC7B,gCAAgC,CAAC,EAAE,yBAAyB,CAAC;IAC7D,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAChC,CAAC;;AAEJ;;;GAGG;AACH,qBAAa,uBAAwB,SAAQ,4BAG1C;CAAG;AAEN,MAAM,MAAM,0BAA0B,GAAG,0BAA0B,GAAG;IACpE,YAAY,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC;IAC3C,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,cAAc,CAAC,EAAE,cAAc,CAAC;CACjC,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,0BAA0B,GAClC,eAAe,GACf,sBAAsB,GACtB,uBAAuB,GACvB,mBAAmB,GACnB,yBAAyB,GACzB,yBAAyB,GACzB,kCAAkC,GAClC,iBAAiB,GACjB,uBAAuB,GACvB,uBAAuB,GACvB,mCAAmC,GACnC,6BAA6B,GAC7B,qBAAqB,GACrB,mBAAmB,GACnB,gBAAgB,GAChB,uBAAuB,CAAC;AAE5B;;;GAGG;AACH,eAAO,MAAM,mBAAmB,YACrB,0BAA0B,KAClC,KAAK,CAAC,KAAK,CACZ,0BAA0B,EAC1B,KAAK,EACL,0BAA0B,GAAG,oBAAoB,GAAG,SAAS,CAAC,SAAS,GAAG,iBAAiB,CAuD5F,CAAC"}
@@ -1,14 +1,30 @@
1
1
  import * as SqlClient from '@effect/sql/SqlClient';
2
- import { type ClientServices } from '@dxos/client-protocol';
2
+ import * as EffectContext from 'effect/Context';
3
+ import * as Layer from 'effect/Layer';
4
+ import { Trigger } from '@dxos/async';
5
+ import { type ClientServicesHandlers } from '@dxos/client-protocol';
3
6
  import { type Config } from '@dxos/config';
4
7
  import { Context } from '@dxos/context';
8
+ import { type EchoHost } from '@dxos/echo-host';
9
+ import { type EdgeConnection } from '@dxos/edge-client';
5
10
  import { RuntimeProvider } from '@dxos/effect';
11
+ import { type FeedStore } from '@dxos/feed-store';
12
+ import { type KeyringApi } from '@dxos/keyring';
6
13
  import { type SignalManager } from '@dxos/messaging';
7
- import { type TransportFactory } from '@dxos/network-manager';
14
+ import { SwarmNetworkManager, type TransportFactory } from '@dxos/network-manager';
15
+ import { Invitation } from '@dxos/protocols/proto/dxos/client/services';
16
+ import { type ProfileDocument } from '@dxos/protocols/proto/dxos/halo/credentials';
8
17
  import * as SqlExport from '@dxos/sql-sqlite/SqlExport';
9
18
  import type * as SqlTransaction from '@dxos/sql-sqlite/SqlTransaction';
10
- import { ServiceContext, type ServiceContextRuntimeProps } from './service-context';
11
- import { ServiceRegistry } from './service-registry';
19
+ import { type BlobStoreApi } from '@dxos/teleport-extension-object-sync';
20
+ import { type EdgeAgentManager } from '../agents';
21
+ import { type CreateIdentityOptions, type Identity, type IdentityManager } from '../identity';
22
+ import { type EdgeIdentityRecoveryManager } from '../identity/identity-recovery-manager';
23
+ import { type InvitationProtocol, type InvitationsHandler, type InvitationsManager } from '../invitations';
24
+ import { type IMetadataStore } from '../metadata';
25
+ import { type SpaceManager } from '../space';
26
+ import { type DataSpaceManager } from '../spaces';
27
+ import { type ServiceContextRuntimeProps } from './service-context';
12
28
  export type ClientServicesHostProps = {
13
29
  /**
14
30
  * Can be omitted if `initialize` is later called.
@@ -31,36 +47,41 @@ export type InitializeOptions = {
31
47
  signalManager?: SignalManager;
32
48
  connectionLog?: boolean;
33
49
  };
50
+ export type ServiceContext = ClientServicesHost;
34
51
  /**
35
- * Remote service implementation.
52
+ * Shared backend for all client services.
53
+ *
54
+ * Owns the full client stack and its lifecycle: it builds the layer-composed components (keyring,
55
+ * feed store, echo host, identity/space managers, …) plus the client RPC handlers, then drives the
56
+ * open sequence (migrate → identity → network → space initialization) and teardown. It reads or
57
+ * creates the identity, propagates it outward (`_setNetworkIdentity`), and opens the identity-bound
58
+ * services once an identity is available (`_initialize`). The host provides itself into the stack
59
+ * (via {@link ClientServicesHostService}) so the RPC handler layers can resolve the orchestration
60
+ * entry points they need without a separate `ServiceContext` service.
36
61
  */
37
62
  export declare class ClientServicesHost {
38
- private readonly _resourceLock?;
39
- private readonly _serviceRegistry;
40
- private readonly _systemService;
41
- private readonly _loggingService;
42
- private readonly _statusUpdate;
43
- private _config?;
44
- private _signalManager?;
45
- private _networkManager?;
46
- private _callbacks?;
47
- private _devtoolsProxy?;
48
- private _edgeConnection?;
49
- private _edgeHttpClient?;
50
- private _serviceContext;
51
- private readonly _runtime;
52
- private readonly _runtimeProps;
53
- private diagnosticsBroadcastHandler;
54
- private _opening;
55
- private _open;
56
- private _resetting;
63
+ #private;
57
64
  constructor({ config, transportFactory, signalManager, lockKey, callbacks, runtime, runtimeProps }: ClientServicesHostProps);
58
65
  get isOpen(): boolean;
59
66
  get config(): Config | undefined;
60
- get context(): ServiceContext;
61
- get serviceRegistry(): ServiceRegistry<ClientServices>;
62
- get descriptors(): import("@dxos/rpc").ServiceBundle<ClientServices>;
63
- get services(): Partial<ClientServices>;
67
+ get context(): ClientServicesHost;
68
+ get services(): Partial<ClientServicesHandlers>;
69
+ get initialized(): Trigger<void>;
70
+ get identityManager(): IdentityManager;
71
+ get spaceManager(): SpaceManager;
72
+ get metadataStore(): IMetadataStore;
73
+ get blobStore(): BlobStoreApi;
74
+ get recoveryManager(): EdgeIdentityRecoveryManager;
75
+ get keyring(): KeyringApi;
76
+ get feedStore(): FeedStore<any>;
77
+ get echoHost(): EchoHost;
78
+ get invitations(): InvitationsHandler;
79
+ get invitationsManager(): InvitationsManager;
80
+ get networkManager(): SwarmNetworkManager;
81
+ get signalManager(): SignalManager;
82
+ get dataSpaceManager(): DataSpaceManager | undefined;
83
+ get edgeAgentManager(): EdgeAgentManager | undefined;
84
+ get edgeConnection(): EdgeConnection | undefined;
64
85
  /**
65
86
  * Debugging util.
66
87
  */
@@ -75,9 +96,39 @@ export declare class ClientServicesHost {
75
96
  * Can only be called once.
76
97
  */
77
98
  initialize({ config, ...options }: InitializeOptions): void;
78
- open(ctx: Context): Promise<void>;
79
- close(ctx: Context): Promise<void>;
99
+ open(ctx?: Context): Promise<void>;
100
+ close(ctx?: Context): Promise<void>;
80
101
  reset(): Promise<void>;
81
- private _createIdentity;
102
+ createIdentity(params?: CreateIdentityOptions, ctx?: Context): Promise<Identity>;
103
+ getInvitationHandler(invitation: Partial<Invitation> & Pick<Invitation, 'kind'>): InvitationProtocol;
104
+ broadcastProfileUpdate(profile: ProfileDocument | undefined): Promise<void>;
105
+ /**
106
+ * Resolves the {@link DataSpaceManager} once identity-bound services have opened (`initialized`).
107
+ */
108
+ whenDataSpaceManagerReady(): Promise<DataSpaceManager>;
109
+ /**
110
+ * Resolves the {@link EdgeAgentManager} once identity-bound services have opened (`initialized`).
111
+ */
112
+ whenEdgeAgentManagerReady(): Promise<EdgeAgentManager>;
113
+ private _acceptIdentity;
114
+ private _checkStorageVersion;
115
+ private _initialize;
116
+ private _setNetworkIdentity;
117
+ private _openStack;
118
+ private _closeStack;
82
119
  }
120
+ declare const ClientServicesHostService_base: EffectContext.TagClass<ClientServicesHostService, "@dxos/client-services/ClientServicesHost", ClientServicesHost>;
121
+ /**
122
+ * Context tag for the {@link ClientServicesHost}. The host provides itself under this tag when it
123
+ * builds its component stack, so client RPC handler layers can resolve the orchestration entry
124
+ * points (`createIdentity`, readiness gates, …) they need.
125
+ */
126
+ export declare class ClientServicesHostService extends ClientServicesHostService_base {
127
+ }
128
+ /**
129
+ * Layer that constructs a {@link ClientServicesHost} from its props and exposes it under
130
+ * {@link ClientServicesHostService}. Host lifecycle (`open` / `close`) stays caller-driven.
131
+ */
132
+ export declare const layerClientServicesHost: (props: ClientServicesHostProps) => Layer.Layer<ClientServicesHostService>;
133
+ export {};
83
134
  //# sourceMappingURL=service-host.d.ts.map