@dxos/client-services 0.8.3 → 0.8.4-main.05e74ebcff

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 (263) hide show
  1. package/LICENSE +102 -5
  2. package/README.md +1 -1
  3. package/dist/lib/browser/chunk-QCWEHHJW.mjs +24 -0
  4. package/dist/lib/browser/chunk-QCWEHHJW.mjs.map +7 -0
  5. package/dist/lib/browser/{chunk-LBG3C332.mjs → chunk-U2YFOK57.mjs} +3848 -5128
  6. package/dist/lib/browser/chunk-U2YFOK57.mjs.map +7 -0
  7. package/dist/lib/browser/chunk-XJRPB3GA.mjs +22 -0
  8. package/dist/lib/browser/chunk-XJRPB3GA.mjs.map +7 -0
  9. package/dist/lib/browser/index.mjs +454 -148
  10. package/dist/lib/browser/index.mjs.map +4 -4
  11. package/dist/lib/browser/meta.json +1 -1
  12. package/dist/lib/browser/packlets/diagnostics/browser-diagnostics-broadcast.mjs +88 -0
  13. package/dist/lib/browser/packlets/diagnostics/browser-diagnostics-broadcast.mjs.map +7 -0
  14. package/dist/lib/browser/packlets/diagnostics/diagnostics-broadcast.mjs +11 -0
  15. package/dist/lib/browser/packlets/diagnostics/diagnostics-broadcast.mjs.map +7 -0
  16. package/dist/lib/browser/packlets/locks/browser.mjs +86 -0
  17. package/dist/lib/browser/packlets/locks/browser.mjs.map +7 -0
  18. package/dist/lib/browser/packlets/locks/node.mjs +48 -0
  19. package/dist/lib/browser/packlets/locks/node.mjs.map +7 -0
  20. package/dist/lib/browser/testing/index.mjs +40 -41
  21. package/dist/lib/browser/testing/index.mjs.map +3 -3
  22. package/dist/lib/node-esm/chunk-2DT3MZRL.mjs +22 -0
  23. package/dist/lib/node-esm/chunk-2DT3MZRL.mjs.map +7 -0
  24. package/dist/lib/node-esm/chunk-2SZHAWBN.mjs +24 -0
  25. package/dist/lib/node-esm/chunk-2SZHAWBN.mjs.map +7 -0
  26. package/dist/lib/node-esm/{chunk-SKGQLRKS.mjs → chunk-OMK2O7UD.mjs} +3247 -4395
  27. package/dist/lib/node-esm/chunk-OMK2O7UD.mjs.map +7 -0
  28. package/dist/lib/node-esm/index.mjs +454 -148
  29. package/dist/lib/node-esm/index.mjs.map +4 -4
  30. package/dist/lib/node-esm/meta.json +1 -1
  31. package/dist/lib/node-esm/packlets/diagnostics/browser-diagnostics-broadcast.mjs +88 -0
  32. package/dist/lib/node-esm/packlets/diagnostics/browser-diagnostics-broadcast.mjs.map +7 -0
  33. package/dist/lib/node-esm/packlets/diagnostics/diagnostics-broadcast.mjs +11 -0
  34. package/dist/lib/node-esm/packlets/diagnostics/diagnostics-broadcast.mjs.map +7 -0
  35. package/dist/lib/node-esm/packlets/locks/browser.mjs +86 -0
  36. package/dist/lib/node-esm/packlets/locks/browser.mjs.map +7 -0
  37. package/dist/lib/node-esm/packlets/locks/node.mjs +48 -0
  38. package/dist/lib/node-esm/packlets/locks/node.mjs.map +7 -0
  39. package/dist/lib/node-esm/testing/index.mjs +40 -41
  40. package/dist/lib/node-esm/testing/index.mjs.map +3 -3
  41. package/dist/types/src/index.d.ts +1 -0
  42. package/dist/types/src/index.d.ts.map +1 -1
  43. package/dist/types/src/packlets/agents/edge-agent-manager.d.ts +3 -2
  44. package/dist/types/src/packlets/agents/edge-agent-manager.d.ts.map +1 -1
  45. package/dist/types/src/packlets/agents/edge-agent-service.d.ts +3 -2
  46. package/dist/types/src/packlets/agents/edge-agent-service.d.ts.map +1 -1
  47. package/dist/types/src/packlets/devices/devices-service.d.ts.map +1 -1
  48. package/dist/types/src/packlets/devtools/devtools.d.ts +20 -20
  49. package/dist/types/src/packlets/devtools/devtools.d.ts.map +1 -1
  50. package/dist/types/src/packlets/devtools/feeds.d.ts +1 -1
  51. package/dist/types/src/packlets/devtools/feeds.d.ts.map +1 -1
  52. package/dist/types/src/packlets/devtools/keys.d.ts.map +1 -1
  53. package/dist/types/src/packlets/devtools/metadata.d.ts.map +1 -1
  54. package/dist/types/src/packlets/devtools/network.d.ts +1 -1
  55. package/dist/types/src/packlets/devtools/network.d.ts.map +1 -1
  56. package/dist/types/src/packlets/devtools/spaces.d.ts.map +1 -1
  57. package/dist/types/src/packlets/diagnostics/browser-diagnostics-broadcast.d.ts +1 -1
  58. package/dist/types/src/packlets/diagnostics/browser-diagnostics-broadcast.d.ts.map +1 -1
  59. package/dist/types/src/packlets/diagnostics/diagnostics-broadcast.d.ts +1 -1
  60. package/dist/types/src/packlets/diagnostics/diagnostics-broadcast.d.ts.map +1 -1
  61. package/dist/types/src/packlets/diagnostics/diagnostics-collector.d.ts.map +1 -1
  62. package/dist/types/src/packlets/diagnostics/diagnostics.d.ts +3 -4
  63. package/dist/types/src/packlets/diagnostics/diagnostics.d.ts.map +1 -1
  64. package/dist/types/src/packlets/diagnostics/index.d.ts +1 -1
  65. package/dist/types/src/packlets/diagnostics/index.d.ts.map +1 -1
  66. package/dist/types/src/packlets/identity/authenticator.d.ts +2 -2
  67. package/dist/types/src/packlets/identity/authenticator.d.ts.map +1 -1
  68. package/dist/types/src/packlets/identity/contacts-service.d.ts +1 -1
  69. package/dist/types/src/packlets/identity/contacts-service.d.ts.map +1 -1
  70. package/dist/types/src/packlets/identity/identity-manager.d.ts +7 -7
  71. package/dist/types/src/packlets/identity/identity-manager.d.ts.map +1 -1
  72. package/dist/types/src/packlets/identity/identity-recovery-manager.d.ts +8 -7
  73. package/dist/types/src/packlets/identity/identity-recovery-manager.d.ts.map +1 -1
  74. package/dist/types/src/packlets/identity/identity-service.d.ts +6 -10
  75. package/dist/types/src/packlets/identity/identity-service.d.ts.map +1 -1
  76. package/dist/types/src/packlets/identity/identity.d.ts +9 -12
  77. package/dist/types/src/packlets/identity/identity.d.ts.map +1 -1
  78. package/dist/types/src/packlets/invitations/device-invitation-protocol.d.ts +6 -5
  79. package/dist/types/src/packlets/invitations/device-invitation-protocol.d.ts.map +1 -1
  80. package/dist/types/src/packlets/invitations/edge-invitation-handler.d.ts +2 -2
  81. package/dist/types/src/packlets/invitations/edge-invitation-handler.d.ts.map +1 -1
  82. package/dist/types/src/packlets/invitations/index.d.ts +1 -1
  83. package/dist/types/src/packlets/invitations/index.d.ts.map +1 -1
  84. package/dist/types/src/packlets/invitations/invitation-guest-extenstion.d.ts.map +1 -1
  85. package/dist/types/src/packlets/invitations/invitation-host-extension.d.ts.map +1 -1
  86. package/dist/types/src/packlets/invitations/invitation-protocol.d.ts +8 -5
  87. package/dist/types/src/packlets/invitations/invitation-protocol.d.ts.map +1 -1
  88. package/dist/types/src/packlets/invitations/invitation-state.d.ts.map +1 -1
  89. package/dist/types/src/packlets/invitations/invitation-topology.d.ts.map +1 -1
  90. package/dist/types/src/packlets/invitations/invitations-handler.d.ts +4 -4
  91. package/dist/types/src/packlets/invitations/invitations-handler.d.ts.map +1 -1
  92. package/dist/types/src/packlets/invitations/invitations-manager.d.ts +3 -3
  93. package/dist/types/src/packlets/invitations/invitations-manager.d.ts.map +1 -1
  94. package/dist/types/src/packlets/invitations/invitations-service.d.ts +4 -4
  95. package/dist/types/src/packlets/invitations/invitations-service.d.ts.map +1 -1
  96. package/dist/types/src/packlets/invitations/space-invitation-protocol.d.ts +5 -4
  97. package/dist/types/src/packlets/invitations/space-invitation-protocol.d.ts.map +1 -1
  98. package/dist/types/src/packlets/invitations/utils.d.ts.map +1 -1
  99. package/dist/types/src/packlets/locks/browser.d.ts.map +1 -1
  100. package/dist/types/src/packlets/locks/index.d.ts +2 -2
  101. package/dist/types/src/packlets/locks/index.d.ts.map +1 -1
  102. package/dist/types/src/packlets/locks/node.d.ts.map +1 -1
  103. package/dist/types/src/packlets/logging/logging-service.d.ts +5 -1
  104. package/dist/types/src/packlets/logging/logging-service.d.ts.map +1 -1
  105. package/dist/types/src/packlets/network/network-service.d.ts +7 -6
  106. package/dist/types/src/packlets/network/network-service.d.ts.map +1 -1
  107. package/dist/types/src/packlets/services/client-rpc-server.d.ts +5 -5
  108. package/dist/types/src/packlets/services/client-rpc-server.d.ts.map +1 -1
  109. package/dist/types/src/packlets/services/feed-syncer.d.ts +59 -0
  110. package/dist/types/src/packlets/services/feed-syncer.d.ts.map +1 -0
  111. package/dist/types/src/packlets/services/feed-syncer.test.d.ts +2 -0
  112. package/dist/types/src/packlets/services/feed-syncer.test.d.ts.map +1 -0
  113. package/dist/types/src/packlets/services/platform.d.ts.map +1 -1
  114. package/dist/types/src/packlets/services/service-context.d.ts +14 -10
  115. package/dist/types/src/packlets/services/service-context.d.ts.map +1 -1
  116. package/dist/types/src/packlets/services/service-host.d.ts +21 -8
  117. package/dist/types/src/packlets/services/service-host.d.ts.map +1 -1
  118. package/dist/types/src/packlets/services/service-registry.d.ts.map +1 -1
  119. package/dist/types/src/packlets/services/util.d.ts.map +1 -1
  120. package/dist/types/src/packlets/space-export/archive-format.d.ts +9 -0
  121. package/dist/types/src/packlets/space-export/archive-format.d.ts.map +1 -0
  122. package/dist/types/src/packlets/space-export/index.d.ts +4 -1
  123. package/dist/types/src/packlets/space-export/index.d.ts.map +1 -1
  124. package/dist/types/src/packlets/space-export/serialized-space-reader.d.ts +23 -0
  125. package/dist/types/src/packlets/space-export/serialized-space-reader.d.ts.map +1 -0
  126. package/dist/types/src/packlets/space-export/serialized-space-writer.d.ts +36 -0
  127. package/dist/types/src/packlets/space-export/serialized-space-writer.d.ts.map +1 -0
  128. package/dist/types/src/packlets/space-export/space-archive-reader.d.ts +9 -1
  129. package/dist/types/src/packlets/space-export/space-archive-reader.d.ts.map +1 -1
  130. package/dist/types/src/packlets/space-export/space-archive-writer.d.ts +8 -2
  131. package/dist/types/src/packlets/space-export/space-archive-writer.d.ts.map +1 -1
  132. package/dist/types/src/packlets/space-export/space-archive.test.d.ts +2 -0
  133. package/dist/types/src/packlets/space-export/space-archive.test.d.ts.map +1 -0
  134. package/dist/types/src/packlets/spaces/automerge-space-state.d.ts +1 -1
  135. package/dist/types/src/packlets/spaces/automerge-space-state.d.ts.map +1 -1
  136. package/dist/types/src/packlets/spaces/data-space-manager.d.ts +31 -20
  137. package/dist/types/src/packlets/spaces/data-space-manager.d.ts.map +1 -1
  138. package/dist/types/src/packlets/spaces/data-space.d.ts +30 -13
  139. package/dist/types/src/packlets/spaces/data-space.d.ts.map +1 -1
  140. package/dist/types/src/packlets/spaces/edge-feed-replicator.d.ts +2 -2
  141. package/dist/types/src/packlets/spaces/edge-feed-replicator.d.ts.map +1 -1
  142. package/dist/types/src/packlets/spaces/epoch-migrations.d.ts.map +1 -1
  143. package/dist/types/src/packlets/spaces/genesis.d.ts +2 -1
  144. package/dist/types/src/packlets/spaces/genesis.d.ts.map +1 -1
  145. package/dist/types/src/packlets/spaces/notarization-plugin.d.ts +6 -9
  146. package/dist/types/src/packlets/spaces/notarization-plugin.d.ts.map +1 -1
  147. package/dist/types/src/packlets/spaces/spaces-service.d.ts +11 -8
  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/storage/profile-archive.d.ts.map +1 -1
  151. package/dist/types/src/packlets/storage/storage.d.ts.map +1 -1
  152. package/dist/types/src/packlets/storage/util.d.ts.map +1 -1
  153. package/dist/types/src/packlets/system/system-service.d.ts +2 -2
  154. package/dist/types/src/packlets/system/system-service.d.ts.map +1 -1
  155. package/dist/types/src/packlets/testing/credential-utils.d.ts.map +1 -1
  156. package/dist/types/src/packlets/testing/invitation-utils.d.ts +6 -3
  157. package/dist/types/src/packlets/testing/invitation-utils.d.ts.map +1 -1
  158. package/dist/types/src/packlets/testing/test-builder.d.ts +8 -7
  159. package/dist/types/src/packlets/testing/test-builder.d.ts.map +1 -1
  160. package/dist/types/src/packlets/worker/worker-runtime.d.ts +41 -4
  161. package/dist/types/src/packlets/worker/worker-runtime.d.ts.map +1 -1
  162. package/dist/types/src/packlets/worker/worker-session.d.ts +2 -4
  163. package/dist/types/src/packlets/worker/worker-session.d.ts.map +1 -1
  164. package/dist/types/src/testing/setup.d.ts.map +1 -1
  165. package/dist/types/src/version.d.ts +1 -1
  166. package/dist/types/src/version.d.ts.map +1 -1
  167. package/dist/types/tsconfig.tsbuildinfo +1 -1
  168. package/package.json +73 -56
  169. package/src/index.ts +1 -0
  170. package/src/packlets/agents/edge-agent-manager.ts +10 -7
  171. package/src/packlets/agents/edge-agent-service.ts +17 -5
  172. package/src/packlets/devices/devices-service.test.ts +3 -3
  173. package/src/packlets/devices/devices-service.ts +2 -2
  174. package/src/packlets/devtools/devtools.ts +29 -29
  175. package/src/packlets/devtools/feeds.ts +2 -2
  176. package/src/packlets/devtools/network.ts +1 -1
  177. package/src/packlets/diagnostics/browser-diagnostics-broadcast.ts +1 -1
  178. package/src/packlets/diagnostics/diagnostics-broadcast.ts +1 -1
  179. package/src/packlets/diagnostics/diagnostics-collector.ts +1 -1
  180. package/src/packlets/diagnostics/diagnostics.ts +2 -3
  181. package/src/packlets/diagnostics/index.ts +1 -1
  182. package/src/packlets/identity/authenticator.node.test.ts +1 -1
  183. package/src/packlets/identity/authenticator.ts +3 -3
  184. package/src/packlets/identity/contacts-service.ts +2 -2
  185. package/src/packlets/identity/identity-manager.test.ts +8 -8
  186. package/src/packlets/identity/identity-manager.ts +25 -24
  187. package/src/packlets/identity/identity-recovery-manager.ts +22 -18
  188. package/src/packlets/identity/identity-service.test.ts +8 -28
  189. package/src/packlets/identity/identity-service.ts +13 -80
  190. package/src/packlets/identity/identity.test.ts +11 -11
  191. package/src/packlets/identity/identity.ts +17 -39
  192. package/src/packlets/invitations/device-invitation-protocol.test.ts +4 -4
  193. package/src/packlets/invitations/device-invitation-protocol.ts +8 -6
  194. package/src/packlets/invitations/edge-invitation-handler.ts +10 -6
  195. package/src/packlets/invitations/index.ts +1 -1
  196. package/src/packlets/invitations/invitation-guest-extenstion.ts +7 -5
  197. package/src/packlets/invitations/invitation-host-extension.ts +15 -16
  198. package/src/packlets/invitations/invitation-protocol.ts +8 -5
  199. package/src/packlets/invitations/invitation-state.ts +1 -15
  200. package/src/packlets/invitations/invitations-handler.test.ts +301 -292
  201. package/src/packlets/invitations/invitations-handler.ts +77 -25
  202. package/src/packlets/invitations/invitations-manager.ts +43 -18
  203. package/src/packlets/invitations/invitations-service.ts +10 -10
  204. package/src/packlets/invitations/space-invitation-protocol.test.ts +26 -25
  205. package/src/packlets/invitations/space-invitation-protocol.ts +13 -17
  206. package/src/packlets/invitations/utils.ts +1 -1
  207. package/src/packlets/locks/browser.ts +1 -1
  208. package/src/packlets/locks/index.ts +2 -2
  209. package/src/packlets/logging/logging-service.ts +22 -17
  210. package/src/packlets/logging/logging.test.ts +1 -1
  211. package/src/packlets/network/network-service.test.ts +3 -3
  212. package/src/packlets/network/network-service.ts +12 -10
  213. package/src/packlets/services/client-rpc-server.ts +20 -17
  214. package/src/packlets/services/feed-syncer.test.ts +340 -0
  215. package/src/packlets/services/feed-syncer.ts +377 -0
  216. package/src/packlets/services/platform.ts +7 -1
  217. package/src/packlets/services/service-context.test.ts +4 -3
  218. package/src/packlets/services/service-context.ts +160 -67
  219. package/src/packlets/services/service-host.test.ts +10 -9
  220. package/src/packlets/services/service-host.ts +88 -49
  221. package/src/packlets/services/service-registry.test.ts +1 -1
  222. package/src/packlets/space-export/archive-format.ts +42 -0
  223. package/src/packlets/space-export/index.ts +4 -1
  224. package/src/packlets/space-export/serialized-space-reader.ts +111 -0
  225. package/src/packlets/space-export/serialized-space-writer.ts +252 -0
  226. package/src/packlets/space-export/space-archive-reader.ts +65 -4
  227. package/src/packlets/space-export/space-archive-writer.ts +44 -6
  228. package/src/packlets/space-export/space-archive.test.ts +461 -0
  229. package/src/packlets/space-export/tar.test.ts +1 -1
  230. package/src/packlets/spaces/automerge-space-state.ts +1 -1
  231. package/src/packlets/spaces/data-space-manager.test.ts +79 -13
  232. package/src/packlets/spaces/data-space-manager.ts +134 -129
  233. package/src/packlets/spaces/data-space.ts +71 -42
  234. package/src/packlets/spaces/edge-feed-replicator.test.ts +4 -4
  235. package/src/packlets/spaces/edge-feed-replicator.ts +13 -11
  236. package/src/packlets/spaces/epoch-migrations.ts +6 -5
  237. package/src/packlets/spaces/genesis.ts +6 -1
  238. package/src/packlets/spaces/notarization-plugin.test.ts +3 -3
  239. package/src/packlets/spaces/notarization-plugin.ts +13 -12
  240. package/src/packlets/spaces/spaces-service.test.ts +20 -12
  241. package/src/packlets/spaces/spaces-service.ts +140 -38
  242. package/src/packlets/storage/profile-archive.ts +1 -1
  243. package/src/packlets/storage/storage.ts +7 -8
  244. package/src/packlets/system/system-service.test.ts +1 -1
  245. package/src/packlets/system/system-service.ts +4 -4
  246. package/src/packlets/testing/invitation-utils.ts +11 -7
  247. package/src/packlets/testing/test-builder.ts +39 -13
  248. package/src/packlets/worker/worker-runtime.ts +189 -17
  249. package/src/packlets/worker/worker-session.ts +15 -21
  250. package/src/version.ts +1 -5
  251. package/README.yml +0 -5
  252. package/dist/lib/browser/chunk-LBG3C332.mjs.map +0 -7
  253. package/dist/lib/node/chunk-LMGLGOUU.cjs +0 -9311
  254. package/dist/lib/node/chunk-LMGLGOUU.cjs.map +0 -7
  255. package/dist/lib/node/index.cjs +0 -437
  256. package/dist/lib/node/index.cjs.map +0 -7
  257. package/dist/lib/node/meta.json +0 -1
  258. package/dist/lib/node/testing/index.cjs +0 -452
  259. package/dist/lib/node/testing/index.cjs.map +0 -7
  260. package/dist/lib/node-esm/chunk-SKGQLRKS.mjs.map +0 -7
  261. package/dist/types/src/packlets/identity/default-space-state-machine.d.ts +0 -19
  262. package/dist/types/src/packlets/identity/default-space-state-machine.d.ts.map +0 -1
  263. package/src/packlets/identity/default-space-state-machine.ts +0 -44
@@ -1,6 +1,5 @@
1
1
  import "@dxos/node-std/globals";
2
2
  import {
3
- ClientRpcServer,
4
3
  ClientServicesHost,
5
4
  DataSpace,
6
5
  DataSpaceManager,
@@ -17,89 +16,339 @@ import {
17
16
  InvitationsHandler,
18
17
  InvitationsManager,
19
18
  InvitationsServiceImpl,
20
- Lock,
21
19
  ServiceContext,
22
20
  ServiceRegistry,
21
+ SpaceArchiveWriter,
23
22
  SpaceInvitationProtocol,
24
23
  SpacesServiceImpl,
25
24
  TrustedKeySetAuthVerifier,
25
+ buildDatabaseDirectoryFromObjects,
26
26
  createAdmissionKeypair,
27
27
  createAuthProvider,
28
- createCollectDiagnosticsBroadcastHandler,
29
- createCollectDiagnosticsBroadcastSender,
30
28
  createDiagnostics,
31
29
  createLevel,
32
30
  createStorageObjects,
33
- decodeProfileArchive,
34
- encodeProfileArchive,
35
- exportProfileData,
31
+ detectSpaceArchiveFormat,
32
+ diagnostics_exports,
33
+ extractSpaceArchive,
36
34
  getNetworkPeers,
37
- importProfileData,
38
- isLocked,
35
+ locks_exports,
36
+ objJsonToObjectStructure,
37
+ objectStructureToObjJson,
38
+ orderObjJsonFields,
39
+ readSerializedSpaceArchive,
39
40
  subscribeToFeedBlocks,
40
41
  subscribeToFeeds,
41
42
  subscribeToNetworkStatus,
42
43
  subscribeToNetworkTopics,
43
44
  subscribeToSignal,
44
45
  subscribeToSpaces,
45
- subscribeToSwarmInfo
46
- } from "./chunk-LBG3C332.mjs";
46
+ subscribeToSwarmInfo,
47
+ writeSerializedSpaceArchive
48
+ } from "./chunk-U2YFOK57.mjs";
49
+ import "./chunk-XJRPB3GA.mjs";
50
+ import {
51
+ __export,
52
+ __reExport
53
+ } from "./chunk-QCWEHHJW.mjs";
47
54
 
48
- // packages/sdk/client-services/src/packlets/worker/worker-runtime.ts
55
+ // src/index.ts
56
+ var index_exports = {};
57
+ __export(index_exports, {
58
+ ClientRpcServer: () => ClientRpcServer,
59
+ ClientServicesHost: () => ClientServicesHost,
60
+ DataSpace: () => DataSpace,
61
+ DataSpaceManager: () => DataSpaceManager,
62
+ DeviceInvitationProtocol: () => DeviceInvitationProtocol,
63
+ DevtoolsHostEvents: () => DevtoolsHostEvents,
64
+ DevtoolsServiceImpl: () => DevtoolsServiceImpl,
65
+ DiagnosticsCollector: () => DiagnosticsCollector,
66
+ EdgeAgentManager: () => EdgeAgentManager,
67
+ EdgeAgentServiceImpl: () => EdgeAgentServiceImpl,
68
+ EdgeFeedReplicator: () => EdgeFeedReplicator,
69
+ Identity: () => Identity,
70
+ IdentityManager: () => IdentityManager,
71
+ IdentityServiceImpl: () => IdentityServiceImpl,
72
+ InvitationsHandler: () => InvitationsHandler,
73
+ InvitationsManager: () => InvitationsManager,
74
+ InvitationsServiceImpl: () => InvitationsServiceImpl,
75
+ ServiceContext: () => ServiceContext,
76
+ ServiceRegistry: () => ServiceRegistry,
77
+ SpaceArchiveWriter: () => SpaceArchiveWriter,
78
+ SpaceInvitationProtocol: () => SpaceInvitationProtocol,
79
+ SpacesServiceImpl: () => SpacesServiceImpl,
80
+ TrustedKeySetAuthVerifier: () => TrustedKeySetAuthVerifier,
81
+ WorkerRuntime: () => WorkerRuntime,
82
+ WorkerSession: () => WorkerSession,
83
+ buildDatabaseDirectoryFromObjects: () => buildDatabaseDirectoryFromObjects,
84
+ createAdmissionKeypair: () => createAdmissionKeypair,
85
+ createAuthProvider: () => createAuthProvider,
86
+ createDiagnostics: () => createDiagnostics,
87
+ createLevel: () => createLevel,
88
+ createStorageObjects: () => createStorageObjects,
89
+ decodeProfileArchive: () => decodeProfileArchive,
90
+ detectSpaceArchiveFormat: () => detectSpaceArchiveFormat,
91
+ encodeProfileArchive: () => encodeProfileArchive,
92
+ exportProfileData: () => exportProfileData,
93
+ extractSpaceArchive: () => extractSpaceArchive,
94
+ getNetworkPeers: () => getNetworkPeers,
95
+ importProfileData: () => importProfileData,
96
+ objJsonToObjectStructure: () => objJsonToObjectStructure,
97
+ objectStructureToObjJson: () => objectStructureToObjJson,
98
+ orderObjJsonFields: () => orderObjJsonFields,
99
+ readSerializedSpaceArchive: () => readSerializedSpaceArchive,
100
+ subscribeToFeedBlocks: () => subscribeToFeedBlocks,
101
+ subscribeToFeeds: () => subscribeToFeeds,
102
+ subscribeToNetworkStatus: () => subscribeToNetworkStatus,
103
+ subscribeToNetworkTopics: () => subscribeToNetworkTopics,
104
+ subscribeToSignal: () => subscribeToSignal,
105
+ subscribeToSpaces: () => subscribeToSpaces,
106
+ subscribeToSwarmInfo: () => subscribeToSwarmInfo,
107
+ writeSerializedSpaceArchive: () => writeSerializedSpaceArchive
108
+ });
109
+ __reExport(index_exports, diagnostics_exports);
110
+ __reExport(index_exports, locks_exports);
111
+
112
+ // src/packlets/services/client-rpc-server.ts
113
+ import { Stream } from "@dxos/codec-protobuf";
114
+ import { raise } from "@dxos/debug";
115
+ import { RpcPeer, parseMethodName } from "@dxos/rpc";
116
+ import { MapCounter, trace } from "@dxos/tracing";
117
+ function _ts_decorate(decorators, target, key, desc) {
118
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
119
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
120
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
121
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
122
+ }
123
+ var ClientRpcServer = class {
124
+ _serviceRegistry;
125
+ _rpcPeer;
126
+ _handlerCache = /* @__PURE__ */ new Map();
127
+ _handleCall;
128
+ _handleStream;
129
+ _callMetrics = new MapCounter();
130
+ get _services() {
131
+ return Object.keys(this._serviceRegistry.services);
132
+ }
133
+ constructor(params) {
134
+ const { serviceRegistry, handleCall, handleStream, ...rpcOptions } = params;
135
+ this._handleCall = handleCall;
136
+ this._handleStream = handleStream;
137
+ this._serviceRegistry = serviceRegistry;
138
+ this._rpcPeer = new RpcPeer({
139
+ ...rpcOptions,
140
+ callHandler: (method, params2, options) => {
141
+ const [serviceName, methodName] = parseMethodName(method);
142
+ const handler = (method2, params3, handlerOptions) => this._getServiceHandler(serviceName).call(method2, params3, handlerOptions);
143
+ this._callMetrics.inc(`${serviceName}.${methodName} request`);
144
+ if (this._handleCall) {
145
+ return this._handleCall(methodName, params2, handler, options);
146
+ } else {
147
+ return handler(methodName, params2, options);
148
+ }
149
+ },
150
+ streamHandler: (method, params2, options) => {
151
+ const [serviceName, methodName] = parseMethodName(method);
152
+ const handler = (method2, params3, handlerOptions) => this._getServiceHandler(serviceName).callStream(method2, params3, handlerOptions);
153
+ this._callMetrics.inc(`${serviceName}.${methodName} request stream`);
154
+ if (this._handleStream) {
155
+ return Stream.map(Stream.unwrapPromise(this._handleStream(methodName, params2, handler, options)), (data) => {
156
+ this._callMetrics.inc(`${serviceName}.${methodName} response stream`);
157
+ return data;
158
+ });
159
+ } else {
160
+ return handler(methodName, params2, options);
161
+ }
162
+ }
163
+ });
164
+ }
165
+ async open() {
166
+ await this._rpcPeer.open();
167
+ }
168
+ async close() {
169
+ await this._rpcPeer.close();
170
+ }
171
+ _getServiceHandler(serviceName) {
172
+ if (!this._handlerCache.has(serviceName)) {
173
+ const [key, descriptor] = Object.entries(this._serviceRegistry.descriptors).find(([key2, descriptor2]) => descriptor2.name === serviceName) ?? raise(new Error(`Service not available: ${serviceName}`));
174
+ const service = this._serviceRegistry.services[key];
175
+ if (!service) {
176
+ throw new Error(`Service not available: ${serviceName}`);
177
+ }
178
+ this._handlerCache.set(serviceName, descriptor.createServer(service));
179
+ }
180
+ return this._handlerCache.get(serviceName);
181
+ }
182
+ };
183
+ _ts_decorate([
184
+ trace.metricsCounter()
185
+ ], ClientRpcServer.prototype, "_callMetrics", void 0);
186
+ _ts_decorate([
187
+ trace.info()
188
+ ], ClientRpcServer.prototype, "_services", null);
189
+ ClientRpcServer = _ts_decorate([
190
+ trace.resource()
191
+ ], ClientRpcServer);
192
+
193
+ // src/packlets/storage/profile-archive.ts
194
+ import { cbor } from "@automerge/automerge-repo";
195
+ import { invariant } from "@dxos/invariant";
196
+ import { log } from "@dxos/log";
197
+ import { ProfileArchiveEntryType } from "@dxos/protocols";
198
+ import { arrayToBuffer } from "@dxos/util";
199
+ var __dxlog_file = "/__w/dxos/dxos/packages/sdk/client-services/src/packlets/storage/profile-archive.ts";
200
+ var encodeProfileArchive = (profile) => cbor.encode(profile);
201
+ var decodeProfileArchive = (data) => cbor.decode(data);
202
+ var exportProfileData = async ({ storage, level }) => {
203
+ const archive = {
204
+ storage: [],
205
+ meta: {
206
+ timestamp: (/* @__PURE__ */ new Date()).toISOString()
207
+ }
208
+ };
209
+ {
210
+ const directory = await storage.createDirectory();
211
+ const files = await directory.list();
212
+ log.info("begin exporting files", {
213
+ count: files.length
214
+ }, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 21, S: void 0 });
215
+ for (const filename of files) {
216
+ const file = await directory.getOrCreateFile(filename);
217
+ const { size } = await file.stat();
218
+ const data = await file.read(0, size);
219
+ archive.storage.push({
220
+ type: ProfileArchiveEntryType.FILE,
221
+ key: filename,
222
+ value: data
223
+ });
224
+ }
225
+ log.info("done exporting files", {
226
+ count: files.length
227
+ }, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 34, S: void 0 });
228
+ }
229
+ {
230
+ log.info("begin exporting kv pairs", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 39, S: void 0 });
231
+ const iter = await level.iterator({
232
+ keyEncoding: "binary",
233
+ valueEncoding: "binary"
234
+ });
235
+ let count = 0;
236
+ for await (const [key, value] of iter) {
237
+ archive.storage.push({
238
+ type: ProfileArchiveEntryType.KEY_VALUE,
239
+ key,
240
+ value
241
+ });
242
+ count++;
243
+ }
244
+ log.info("done exporting kv pairs", {
245
+ count
246
+ }, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 53, S: void 0 });
247
+ }
248
+ return archive;
249
+ };
250
+ var importProfileData = async ({ storage, level }, archive) => {
251
+ let batch = level.batch();
252
+ let count = 0;
253
+ for (const entry of archive.storage) {
254
+ switch (entry.type) {
255
+ case ProfileArchiveEntryType.FILE: {
256
+ const directory = await storage.createDirectory();
257
+ invariant(typeof entry.key === "string", "Invalid key type", { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 67, S: void 0, A: ["typeof entry.key === 'string'", "'Invalid key type'"] });
258
+ const file = await directory.getOrCreateFile(entry.key);
259
+ invariant(entry.value instanceof Uint8Array, "Invalid value type", { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 69, S: void 0, A: ["entry.value instanceof Uint8Array", "'Invalid value type'"] });
260
+ await file.write(0, arrayToBuffer(entry.value));
261
+ await file.close();
262
+ break;
263
+ }
264
+ case ProfileArchiveEntryType.KEY_VALUE: {
265
+ invariant(entry.key instanceof Uint8Array, "Invalid key type", { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 76, S: void 0, A: ["entry.key instanceof Uint8Array", "'Invalid key type'"] });
266
+ invariant(entry.value instanceof Uint8Array, "Invalid value type", { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 77, S: void 0, A: ["entry.value instanceof Uint8Array", "'Invalid value type'"] });
267
+ batch.put(entry.key, entry.value, {
268
+ keyEncoding: "binary",
269
+ valueEncoding: "binary"
270
+ });
271
+ break;
272
+ }
273
+ default:
274
+ throw new Error(`Invalid entry type: ${entry.type}`);
275
+ }
276
+ if (++count % 1e3 === 0) {
277
+ await batch.write();
278
+ batch = level.batch();
279
+ log.info("importing", {
280
+ count,
281
+ total: archive.storage.length,
282
+ progress: `${(count / archive.storage.length * 100).toFixed()}%`
283
+ }, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 91, S: void 0 });
284
+ }
285
+ }
286
+ log.info("committing changes..", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 98, S: void 0 });
287
+ await batch.write();
288
+ };
289
+
290
+ // src/packlets/worker/worker-runtime.ts
291
+ import * as Reactivity from "@effect/experimental/Reactivity";
292
+ import * as Effect from "effect/Effect";
293
+ import * as Layer from "effect/Layer";
294
+ import * as ManagedRuntime from "effect/ManagedRuntime";
49
295
  import { Trigger as Trigger2 } from "@dxos/async";
50
296
  import { DEFAULT_WORKER_BROADCAST_CHANNEL } from "@dxos/client-protocol";
51
297
  import { Context } from "@dxos/context";
52
- import { invariant as invariant2 } from "@dxos/invariant";
53
- import { log as log2 } from "@dxos/log";
298
+ import { invariant as invariant3 } from "@dxos/invariant";
299
+ import { log as log3 } from "@dxos/log";
54
300
  import { MemorySignalManager, MemorySignalManagerContext, WebsocketSignalManager, setIdentityTags } from "@dxos/messaging";
55
301
  import { RtcTransportProxyFactory } from "@dxos/network-manager";
302
+ import * as OpfsWorker from "@dxos/sql-sqlite/OpfsWorker";
303
+ import * as SqlExport from "@dxos/sql-sqlite/SqlExport";
304
+ import * as SqliteClient from "@dxos/sql-sqlite/SqliteClient";
305
+ import * as SqlTransaction from "@dxos/sql-sqlite/SqlTransaction";
56
306
 
57
- // packages/sdk/client-services/src/packlets/worker/worker-session.ts
58
- import { asyncTimeout, Trigger } from "@dxos/async";
59
- import { iframeServiceBundle, PROXY_CONNECTION_TIMEOUT, workerServiceBundle } from "@dxos/client-protocol";
60
- import { invariant } from "@dxos/invariant";
61
- import { log, logInfo } from "@dxos/log";
307
+ // src/packlets/worker/worker-session.ts
308
+ import { Trigger, asyncTimeout } from "@dxos/async";
309
+ import { PROXY_CONNECTION_TIMEOUT, iframeServiceBundle, workerServiceBundle } from "@dxos/client-protocol";
310
+ import { invariant as invariant2 } from "@dxos/invariant";
311
+ import { log as log2, logInfo } from "@dxos/log";
62
312
  import { createProtoRpcPeer } from "@dxos/rpc";
63
313
  import { Callback } from "@dxos/util";
64
- function _ts_decorate(decorators, target, key, desc) {
314
+ var __dxlog_file2 = "/__w/dxos/dxos/packages/sdk/client-services/src/packlets/worker/worker-session.ts";
315
+ function _ts_decorate2(decorators, target, key, desc) {
65
316
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
66
317
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
67
318
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
68
319
  return c > 3 && r && Object.defineProperty(target, key, r), r;
69
320
  }
70
- var __dxlog_file = "/home/runner/work/dxos/dxos/packages/sdk/client-services/src/packlets/worker/worker-session.ts";
71
321
  var WorkerSession = class {
322
+ _clientRpc;
323
+ _shellClientRpc;
324
+ _iframeRpc;
325
+ _startTrigger = new Trigger();
326
+ _serviceHost;
327
+ onClose = new Callback();
328
+ origin;
329
+ lockKey;
330
+ bridgeService;
72
331
  constructor({ serviceHost, systemPort, appPort, shellPort, readySignal }) {
73
- this._startTrigger = new Trigger();
74
- this.onClose = new Callback();
75
- invariant(serviceHost, void 0, {
76
- F: __dxlog_file,
77
- L: 54,
78
- S: this,
79
- A: [
80
- "serviceHost",
81
- ""
82
- ]
83
- });
332
+ invariant2(serviceHost, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 30, S: this, A: ["serviceHost", ""] });
84
333
  this._serviceHost = serviceHost;
85
334
  const middleware = {
86
- handleCall: async (method, params, handler) => {
335
+ handleCall: async (method, params, handler, options) => {
87
336
  const error = await readySignal.wait({
88
337
  timeout: PROXY_CONNECTION_TIMEOUT
89
338
  });
90
339
  if (error) {
91
340
  throw error;
92
341
  }
93
- return handler(method, params);
342
+ return handler(method, params, options);
94
343
  },
95
- handleStream: async (method, params, handler) => {
344
+ handleStream: async (method, params, handler, options) => {
96
345
  const error = await readySignal.wait({
97
346
  timeout: PROXY_CONNECTION_TIMEOUT
98
347
  });
99
348
  if (error) {
100
349
  throw error;
101
350
  }
102
- return handler(method, params);
351
+ return handler(method, params, options);
103
352
  }
104
353
  };
105
354
  this._clientRpc = new ClientRpcServer({
@@ -120,8 +369,6 @@ var WorkerSession = class {
120
369
  start: async (request) => {
121
370
  this.origin = request.origin;
122
371
  this.lockKey = request.lockKey;
123
- this.observabilityGroup = request.observabilityGroup;
124
- this.signalTelemetryEnabled = request.signalTelemetryEnabled;
125
372
  this._startTrigger.wake();
126
373
  },
127
374
  stop: async () => {
@@ -129,12 +376,7 @@ var WorkerSession = class {
129
376
  try {
130
377
  await this.close();
131
378
  } catch (err) {
132
- log.catch(err, void 0, {
133
- F: __dxlog_file,
134
- L: 108,
135
- S: this,
136
- C: (f, a) => f(...a)
137
- });
379
+ log2.catch(err, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 77, S: this });
138
380
  }
139
381
  });
140
382
  }
@@ -146,12 +388,7 @@ var WorkerSession = class {
146
388
  this.bridgeService = this._iframeRpc.rpc.BridgeService;
147
389
  }
148
390
  async open() {
149
- log.info("opening...", void 0, {
150
- F: __dxlog_file,
151
- L: 122,
152
- S: this,
153
- C: (f, a) => f(...a)
154
- });
391
+ log2("opening...", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 89, S: this });
155
392
  await Promise.all([
156
393
  this._clientRpc.open(),
157
394
  this._iframeRpc.open(),
@@ -163,51 +400,26 @@ var WorkerSession = class {
163
400
  if (this.lockKey) {
164
401
  void this._afterLockReleases(this.lockKey, () => this.close());
165
402
  }
166
- log.info("opened", void 0, {
167
- F: __dxlog_file,
168
- L: 133,
169
- S: this,
170
- C: (f, a) => f(...a)
171
- });
403
+ log2("opened", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 103, S: this });
172
404
  }
173
405
  async close() {
174
- log.info("closing...", void 0, {
175
- F: __dxlog_file,
176
- L: 137,
177
- S: this,
178
- C: (f, a) => f(...a)
179
- });
406
+ log2.debug("closing...", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 106, S: this });
180
407
  try {
181
408
  await this.onClose.callIfSet();
182
409
  } catch (err) {
183
- log.catch(err, void 0, {
184
- F: __dxlog_file,
185
- L: 141,
186
- S: this,
187
- C: (f, a) => f(...a)
188
- });
410
+ log2.catch(err, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 110, S: this });
189
411
  }
190
412
  await Promise.all([
191
413
  this._clientRpc.close(),
192
414
  this._iframeRpc.close()
193
415
  ]);
194
- log.info("closed", void 0, {
195
- F: __dxlog_file,
196
- L: 145,
197
- S: this,
198
- C: (f, a) => f(...a)
199
- });
416
+ log2.debug("closed", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 116, S: this });
200
417
  }
201
418
  async _maybeOpenShell() {
202
419
  try {
203
420
  this._shellClientRpc && await asyncTimeout(this._shellClientRpc.open(), 1e3);
204
421
  } catch {
205
- log.info("No shell connected.", void 0, {
206
- F: __dxlog_file,
207
- L: 152,
208
- S: this,
209
- C: (f, a) => f(...a)
210
- });
422
+ log2.info("No shell connected.", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 122, S: this });
211
423
  }
212
424
  }
213
425
  _afterLockReleases(lockKey, callback) {
@@ -215,74 +427,101 @@ var WorkerSession = class {
215
427
  }).then(callback);
216
428
  }
217
429
  };
218
- _ts_decorate([
430
+ _ts_decorate2([
219
431
  logInfo
220
432
  ], WorkerSession.prototype, "origin", void 0);
221
- _ts_decorate([
433
+ _ts_decorate2([
222
434
  logInfo
223
435
  ], WorkerSession.prototype, "lockKey", void 0);
224
436
 
225
- // packages/sdk/client-services/src/packlets/worker/worker-runtime.ts
226
- var __dxlog_file2 = "/home/runner/work/dxos/dxos/packages/sdk/client-services/src/packlets/worker/worker-runtime.ts";
437
+ // src/packlets/worker/worker-runtime.ts
438
+ var __dxlog_file3 = "/__w/dxos/dxos/packages/sdk/client-services/src/packlets/worker/worker-runtime.ts";
227
439
  var WorkerRuntime = class {
228
- constructor({ channel = DEFAULT_WORKER_BROADCAST_CHANNEL, configProvider, acquireLock, releaseLock, onStop }) {
229
- this._transportFactory = new RtcTransportProxyFactory();
230
- this._ready = new Trigger2();
231
- this._sessions = /* @__PURE__ */ new Set();
232
- this._signalMetadataTags = {
233
- runtime: "worker-runtime"
234
- };
235
- this._signalTelemetryEnabled = false;
440
+ _configProvider;
441
+ _acquireLock;
442
+ _releaseLock;
443
+ _onStop;
444
+ _transportFactory = new RtcTransportProxyFactory();
445
+ _ready = new Trigger2();
446
+ _sessions = /* @__PURE__ */ new Set();
447
+ _clientServices;
448
+ _channel;
449
+ _automaticallyConnectWebrtc;
450
+ _livenessLock = new WebLockWrapper(`@dxos/client-services/WorkerRuntime/${crypto.randomUUID()}`);
451
+ _broadcastChannel;
452
+ _sessionForNetworking;
453
+ _config;
454
+ _signalMetadataTags = {
455
+ runtime: "worker-runtime"
456
+ };
457
+ _signalTelemetryEnabled = false;
458
+ _runtime;
459
+ constructor({ channel = DEFAULT_WORKER_BROADCAST_CHANNEL, configProvider, acquireLock, releaseLock, onStop, automaticallyConnectWebrtc = true, sqliteLayer }) {
236
460
  this._configProvider = configProvider;
237
461
  this._acquireLock = acquireLock;
238
462
  this._releaseLock = releaseLock;
239
463
  this._onStop = onStop;
240
464
  this._channel = channel;
465
+ if (sqliteLayer) {
466
+ log3.warn("Using testing SQLite layer", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 52, S: this });
467
+ }
468
+ this._runtime = ManagedRuntime.make(SqlTransaction.layer.pipe(Layer.provideMerge(sqliteLayer ?? LocalSqliteOpfsLayer), Layer.provideMerge(Reactivity.layer)).pipe(Layer.orDie));
241
469
  this._clientServices = new ClientServicesHost({
242
470
  callbacks: {
243
471
  onReset: async () => this.stop()
472
+ },
473
+ runtime: this._runtime.runtimeEffect,
474
+ runtimeProps: {
475
+ // Auto-activate spaces that were previously active after leader changeover.
476
+ autoActivateSpaces: true
244
477
  }
245
478
  });
479
+ this._automaticallyConnectWebrtc = automaticallyConnectWebrtc;
246
480
  }
247
481
  get host() {
248
482
  return this._clientServices;
249
483
  }
484
+ get livenessLockKey() {
485
+ return this._livenessLock.key;
486
+ }
250
487
  async start() {
251
- log2("starting...", void 0, {
252
- F: __dxlog_file2,
253
- L: 84,
254
- S: this,
255
- C: (f, a) => f(...a)
256
- });
488
+ log3("starting...", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 74, S: this });
257
489
  try {
490
+ log3("worker-runtime: acquiring liveness lock (background)", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 76, S: this });
491
+ void this._livenessLock.acquire();
492
+ log3("worker-runtime: broadcasting stop to displace previous worker", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 79, S: this });
258
493
  this._broadcastChannel = new BroadcastChannel(this._channel);
259
494
  this._broadcastChannel.postMessage({
260
495
  action: "stop"
261
496
  });
262
497
  this._broadcastChannel.onmessage = async (event) => {
263
498
  if (event.data?.action === "stop") {
499
+ log3("worker-runtime: received stop broadcast", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 86, S: this });
264
500
  await this.stop();
265
501
  }
266
502
  };
503
+ log3("worker-runtime: acquiring storage lock", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 90, S: this });
267
504
  await this._acquireLock();
505
+ log3("worker-runtime: storage lock acquired, resolving config", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 92, S: this });
268
506
  this._config = await this._configProvider();
507
+ log3("worker-runtime: config resolved", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 94, S: this });
508
+ this._signalTelemetryEnabled = this._config.get("runtime.client.signalTelemetryEnabled") ?? false;
509
+ const observabilityGroup = this._config.get("runtime.client.observabilityGroup");
510
+ if (observabilityGroup) {
511
+ this._signalMetadataTags.group = observabilityGroup;
512
+ }
269
513
  const signals = this._config.get("runtime.services.signaling");
514
+ log3("worker-runtime: initializing client services host", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 101, S: this });
270
515
  this._clientServices.initialize({
271
516
  config: this._config,
272
517
  signalManager: this._config.get("runtime.client.edgeFeatures")?.signaling ? void 0 : signals ? new WebsocketSignalManager(signals, () => this._signalTelemetryEnabled ? this._signalMetadataTags : {}) : new MemorySignalManager(new MemorySignalManagerContext()),
273
518
  transportFactory: this._transportFactory
274
519
  });
275
- await this._clientServices.open(new Context(void 0, {
276
- F: __dxlog_file2,
277
- L: 107
278
- }));
520
+ log3("worker-runtime: client services host initialized, opening", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 107, S: this });
521
+ await this._clientServices.open(new Context(void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 108 }));
522
+ log3("worker-runtime: client services host opened, signalling ready", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 109, S: this });
279
523
  this._ready.wake(void 0);
280
- log2("started", void 0, {
281
- F: __dxlog_file2,
282
- L: 109,
283
- S: this,
284
- C: (f, a) => f(...a)
285
- });
524
+ log3("started", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 111, S: this });
286
525
  setIdentityTags({
287
526
  identityService: this._clientServices.services.IdentityService,
288
527
  devicesService: this._clientServices.services.DevicesService,
@@ -292,25 +531,43 @@ var WorkerRuntime = class {
292
531
  });
293
532
  } catch (err) {
294
533
  this._ready.wake(err);
295
- log2.error("starting", err, {
296
- F: __dxlog_file2,
297
- L: 119,
298
- S: this,
299
- C: (f, a) => f(...a)
300
- });
534
+ log3.error("starting", err, { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 121, S: this });
301
535
  }
302
536
  }
303
537
  async stop() {
304
538
  this._releaseLock();
305
539
  this._broadcastChannel?.close();
306
540
  this._broadcastChannel = void 0;
307
- await this._clientServices.close();
541
+ await this._clientServices.close(Context.default(void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 129 }));
542
+ await this._runtime.dispose();
308
543
  await this._onStop?.();
544
+ await this._livenessLock.release();
545
+ }
546
+ /**
547
+ * Update signaling telemetry tags from a client-supplied config overlay.
548
+ *
549
+ * The worker services outlive individual client connections, so the first client seeds the
550
+ * worker's core config (storage, signaling, edge features). For fields that can legitimately
551
+ * differ per tab — `observabilityGroup` and `signalTelemetryEnabled` — this method lets later
552
+ * connections refresh the signal metadata the worker attaches to its signaling requests
553
+ * (last-writer-wins, matching the pre-DX-930 per-session RPC behaviour).
554
+ */
555
+ updateSignalMetadata(config) {
556
+ const observabilityGroup = config.get("runtime.client.observabilityGroup");
557
+ if (observabilityGroup) {
558
+ this._signalMetadataTags.group = observabilityGroup;
559
+ } else {
560
+ delete this._signalMetadataTags.group;
561
+ }
562
+ const signalTelemetryEnabled = config.get("runtime.client.signalTelemetryEnabled");
563
+ if (signalTelemetryEnabled !== void 0) {
564
+ this._signalTelemetryEnabled = signalTelemetryEnabled;
565
+ }
309
566
  }
310
567
  /**
311
568
  * Create a new session.
312
569
  */
313
- async createSession({ appPort, systemPort, shellPort }) {
570
+ async createSession({ appPort, systemPort, shellPort, onClose }) {
314
571
  const session = new WorkerSession({
315
572
  serviceHost: this._clientServices,
316
573
  appPort,
@@ -323,37 +580,38 @@ var WorkerRuntime = class {
323
580
  if (this._sessions.size === 0) {
324
581
  await this.stop();
325
582
  } else {
326
- this._reconnectWebrtc();
583
+ if (this._automaticallyConnectWebrtc) {
584
+ this._reconnectWebrtc();
585
+ }
327
586
  }
587
+ await onClose?.();
328
588
  });
329
589
  await session.open();
330
- invariant2(!this._signalMetadataTags.origin || this._signalMetadataTags.origin === session.origin, `worker origin changed from ${this._signalMetadataTags.origin} to ${session.origin}?`, {
331
- F: __dxlog_file2,
332
- L: 157,
333
- S: this,
334
- A: [
335
- "!this._signalMetadataTags.origin || this._signalMetadataTags.origin === session.origin",
336
- "`worker origin changed from ${this._signalMetadataTags.origin} to ${session.origin}?`"
337
- ]
338
- });
339
- if (session.observabilityGroup) {
340
- this._signalMetadataTags.group = session.observabilityGroup;
341
- }
342
- this._signalTelemetryEnabled = session.signalTelemetryEnabled ?? false;
590
+ invariant3(!this._signalMetadataTags.origin || this._signalMetadataTags.origin === session.origin, `worker origin changed from ${this._signalMetadataTags.origin} to ${session.origin}?`, { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 181, S: this, A: ["!this._signalMetadataTags.origin || this._signalMetadataTags.origin === session.origin", "`worker origin changed from ${this._signalMetadataTags.origin} to ${session.origin}?`"] });
343
591
  this._signalMetadataTags.origin = session.origin;
344
592
  this._sessions.add(session);
345
- this._reconnectWebrtc();
593
+ if (this._automaticallyConnectWebrtc) {
594
+ this._reconnectWebrtc();
595
+ }
596
+ return session;
597
+ }
598
+ /**
599
+ * Connects the WebRTC bridge to the specified session.
600
+ * If no session is provided, disconnects the WebRTC bridge.
601
+ *
602
+ * Called automatically if `automaticallyConnectWebrtc` is true.
603
+ *
604
+ * @param session The session to connect the WebRTC bridge to.
605
+ */
606
+ connectWebrtcBridge(session) {
607
+ this._sessionForNetworking = session;
608
+ this._transportFactory.setBridgeService(session?.bridgeService);
346
609
  }
347
610
  /**
348
611
  * Selects one of the existing session for WebRTC networking.
349
612
  */
350
613
  _reconnectWebrtc() {
351
- log2("reconnecting webrtc...", void 0, {
352
- F: __dxlog_file2,
353
- L: 175,
354
- S: this,
355
- C: (f, a) => f(...a)
356
- });
614
+ log3("reconnecting webrtc...", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 203, S: this });
357
615
  if (this._sessionForNetworking) {
358
616
  if (!this._sessions.has(this._sessionForNetworking)) {
359
617
  this._sessionForNetworking = void 0;
@@ -361,15 +619,58 @@ var WorkerRuntime = class {
361
619
  }
362
620
  if (!this._sessionForNetworking) {
363
621
  const selected = Array.from(this._sessions).find((session) => session.bridgeService);
364
- if (selected) {
365
- this._sessionForNetworking = selected;
366
- this._transportFactory.setBridgeService(selected.bridgeService);
367
- } else {
368
- this._transportFactory.setBridgeService(void 0);
369
- }
622
+ this.connectWebrtcBridge(selected);
370
623
  }
371
624
  }
372
625
  };
626
+ var DB_NAME = "DXOS";
627
+ var SqlExportLayer = Layer.effect(SqlExport.SqlExport, Effect.gen(function* () {
628
+ const sql = yield* SqliteClient.SqliteClient;
629
+ return {
630
+ export: sql.export
631
+ };
632
+ }));
633
+ var LocalSqliteOpfsLayer = Layer.unwrapScoped(Effect.gen(function* () {
634
+ const { port1: clientPort, port2: serverPort } = new MessageChannel();
635
+ clientPort.start();
636
+ serverPort.start();
637
+ yield* Effect.addFinalizer(() => Effect.sync(() => {
638
+ clientPort.close();
639
+ serverPort.close();
640
+ }));
641
+ yield* Effect.forkScoped(OpfsWorker.run({
642
+ port: serverPort,
643
+ dbName: DB_NAME
644
+ }));
645
+ return SqlExportLayer.pipe(Layer.provideMerge(SqliteClient.layer({
646
+ worker: Effect.succeed(clientPort)
647
+ })));
648
+ }));
649
+ var WebLockWrapper = class {
650
+ #key;
651
+ #release;
652
+ constructor(key) {
653
+ this.#key = key;
654
+ }
655
+ get key() {
656
+ return this.#key;
657
+ }
658
+ acquire(options = {}) {
659
+ return navigator.locks.request(this.#key, options, async () => {
660
+ await new Promise((resolve) => {
661
+ this.#release = resolve;
662
+ });
663
+ this.#release = void 0;
664
+ });
665
+ }
666
+ release() {
667
+ this.#release?.();
668
+ this.#release = void 0;
669
+ }
670
+ [Symbol.dispose]() {
671
+ this.release();
672
+ }
673
+ };
373
674
  export {
374
675
  ClientRpcServer,
375
676
  ClientServicesHost,
@@ -388,33 +689,38 @@ export {
388
689
  InvitationsHandler,
389
690
  InvitationsManager,
390
691
  InvitationsServiceImpl,
391
- Lock,
392
692
  ServiceContext,
393
693
  ServiceRegistry,
694
+ SpaceArchiveWriter,
394
695
  SpaceInvitationProtocol,
395
696
  SpacesServiceImpl,
396
697
  TrustedKeySetAuthVerifier,
397
698
  WorkerRuntime,
398
699
  WorkerSession,
700
+ buildDatabaseDirectoryFromObjects,
399
701
  createAdmissionKeypair,
400
702
  createAuthProvider,
401
- createCollectDiagnosticsBroadcastHandler,
402
- createCollectDiagnosticsBroadcastSender,
403
703
  createDiagnostics,
404
704
  createLevel,
405
705
  createStorageObjects,
406
706
  decodeProfileArchive,
707
+ detectSpaceArchiveFormat,
407
708
  encodeProfileArchive,
408
709
  exportProfileData,
710
+ extractSpaceArchive,
409
711
  getNetworkPeers,
410
712
  importProfileData,
411
- isLocked,
713
+ objJsonToObjectStructure,
714
+ objectStructureToObjJson,
715
+ orderObjJsonFields,
716
+ readSerializedSpaceArchive,
412
717
  subscribeToFeedBlocks,
413
718
  subscribeToFeeds,
414
719
  subscribeToNetworkStatus,
415
720
  subscribeToNetworkTopics,
416
721
  subscribeToSignal,
417
722
  subscribeToSpaces,
418
- subscribeToSwarmInfo
723
+ subscribeToSwarmInfo,
724
+ writeSerializedSpaceArchive
419
725
  };
420
726
  //# sourceMappingURL=index.mjs.map