@dxos/client-services 0.8.4-main.ae835ea → 0.8.4-main.bc2380dfbc

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 (230) 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-KPYVJG6G.mjs → chunk-TUCJORVO.mjs} +2153 -3654
  6. package/dist/lib/browser/chunk-TUCJORVO.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 +424 -137
  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 +28 -29
  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-BBBSS6UL.mjs → chunk-IQLAKNSR.mjs} +2099 -3469
  27. package/dist/lib/node-esm/chunk-IQLAKNSR.mjs.map +7 -0
  28. package/dist/lib/node-esm/index.mjs +424 -137
  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 +28 -29
  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 +2 -1
  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 +2 -2
  49. package/dist/types/src/packlets/devtools/devtools.d.ts.map +1 -1
  50. package/dist/types/src/packlets/devtools/feeds.d.ts.map +1 -1
  51. package/dist/types/src/packlets/devtools/keys.d.ts.map +1 -1
  52. package/dist/types/src/packlets/devtools/metadata.d.ts.map +1 -1
  53. package/dist/types/src/packlets/devtools/network.d.ts.map +1 -1
  54. package/dist/types/src/packlets/devtools/spaces.d.ts.map +1 -1
  55. package/dist/types/src/packlets/diagnostics/browser-diagnostics-broadcast.d.ts.map +1 -1
  56. package/dist/types/src/packlets/diagnostics/diagnostics-broadcast.d.ts.map +1 -1
  57. package/dist/types/src/packlets/diagnostics/diagnostics-collector.d.ts.map +1 -1
  58. package/dist/types/src/packlets/diagnostics/diagnostics.d.ts +2 -3
  59. package/dist/types/src/packlets/diagnostics/diagnostics.d.ts.map +1 -1
  60. package/dist/types/src/packlets/diagnostics/index.d.ts +1 -1
  61. package/dist/types/src/packlets/diagnostics/index.d.ts.map +1 -1
  62. package/dist/types/src/packlets/identity/authenticator.d.ts +2 -2
  63. package/dist/types/src/packlets/identity/authenticator.d.ts.map +1 -1
  64. package/dist/types/src/packlets/identity/contacts-service.d.ts.map +1 -1
  65. package/dist/types/src/packlets/identity/identity-manager.d.ts +6 -6
  66. package/dist/types/src/packlets/identity/identity-manager.d.ts.map +1 -1
  67. package/dist/types/src/packlets/identity/identity-recovery-manager.d.ts +8 -7
  68. package/dist/types/src/packlets/identity/identity-recovery-manager.d.ts.map +1 -1
  69. package/dist/types/src/packlets/identity/identity-service.d.ts +6 -10
  70. package/dist/types/src/packlets/identity/identity-service.d.ts.map +1 -1
  71. package/dist/types/src/packlets/identity/identity.d.ts +8 -11
  72. package/dist/types/src/packlets/identity/identity.d.ts.map +1 -1
  73. package/dist/types/src/packlets/invitations/device-invitation-protocol.d.ts +6 -5
  74. package/dist/types/src/packlets/invitations/device-invitation-protocol.d.ts.map +1 -1
  75. package/dist/types/src/packlets/invitations/edge-invitation-handler.d.ts +1 -1
  76. package/dist/types/src/packlets/invitations/edge-invitation-handler.d.ts.map +1 -1
  77. package/dist/types/src/packlets/invitations/invitation-guest-extenstion.d.ts.map +1 -1
  78. package/dist/types/src/packlets/invitations/invitation-host-extension.d.ts.map +1 -1
  79. package/dist/types/src/packlets/invitations/invitation-protocol.d.ts +7 -4
  80. package/dist/types/src/packlets/invitations/invitation-protocol.d.ts.map +1 -1
  81. package/dist/types/src/packlets/invitations/invitation-state.d.ts.map +1 -1
  82. package/dist/types/src/packlets/invitations/invitation-topology.d.ts.map +1 -1
  83. package/dist/types/src/packlets/invitations/invitations-handler.d.ts +4 -4
  84. package/dist/types/src/packlets/invitations/invitations-handler.d.ts.map +1 -1
  85. package/dist/types/src/packlets/invitations/invitations-manager.d.ts +3 -3
  86. package/dist/types/src/packlets/invitations/invitations-manager.d.ts.map +1 -1
  87. package/dist/types/src/packlets/invitations/invitations-service.d.ts +3 -3
  88. package/dist/types/src/packlets/invitations/invitations-service.d.ts.map +1 -1
  89. package/dist/types/src/packlets/invitations/space-invitation-protocol.d.ts +4 -3
  90. package/dist/types/src/packlets/invitations/space-invitation-protocol.d.ts.map +1 -1
  91. package/dist/types/src/packlets/invitations/utils.d.ts.map +1 -1
  92. package/dist/types/src/packlets/locks/browser.d.ts.map +1 -1
  93. package/dist/types/src/packlets/locks/index.d.ts +1 -1
  94. package/dist/types/src/packlets/locks/index.d.ts.map +1 -1
  95. package/dist/types/src/packlets/locks/node.d.ts.map +1 -1
  96. package/dist/types/src/packlets/logging/logging-service.d.ts +4 -0
  97. package/dist/types/src/packlets/logging/logging-service.d.ts.map +1 -1
  98. package/dist/types/src/packlets/network/network-service.d.ts +5 -4
  99. package/dist/types/src/packlets/network/network-service.d.ts.map +1 -1
  100. package/dist/types/src/packlets/services/client-rpc-server.d.ts +5 -5
  101. package/dist/types/src/packlets/services/client-rpc-server.d.ts.map +1 -1
  102. package/dist/types/src/packlets/services/feed-syncer.d.ts +59 -0
  103. package/dist/types/src/packlets/services/feed-syncer.d.ts.map +1 -0
  104. package/dist/types/src/packlets/services/feed-syncer.test.d.ts +2 -0
  105. package/dist/types/src/packlets/services/feed-syncer.test.d.ts.map +1 -0
  106. package/dist/types/src/packlets/services/platform.d.ts.map +1 -1
  107. package/dist/types/src/packlets/services/service-context.d.ts +13 -9
  108. package/dist/types/src/packlets/services/service-context.d.ts.map +1 -1
  109. package/dist/types/src/packlets/services/service-host.d.ts +20 -7
  110. package/dist/types/src/packlets/services/service-host.d.ts.map +1 -1
  111. package/dist/types/src/packlets/services/service-registry.d.ts.map +1 -1
  112. package/dist/types/src/packlets/services/util.d.ts.map +1 -1
  113. package/dist/types/src/packlets/space-export/archive-format.d.ts +9 -0
  114. package/dist/types/src/packlets/space-export/archive-format.d.ts.map +1 -0
  115. package/dist/types/src/packlets/space-export/index.d.ts +4 -1
  116. package/dist/types/src/packlets/space-export/index.d.ts.map +1 -1
  117. package/dist/types/src/packlets/space-export/serialized-space-reader.d.ts +23 -0
  118. package/dist/types/src/packlets/space-export/serialized-space-reader.d.ts.map +1 -0
  119. package/dist/types/src/packlets/space-export/serialized-space-writer.d.ts +36 -0
  120. package/dist/types/src/packlets/space-export/serialized-space-writer.d.ts.map +1 -0
  121. package/dist/types/src/packlets/space-export/space-archive-reader.d.ts +9 -1
  122. package/dist/types/src/packlets/space-export/space-archive-reader.d.ts.map +1 -1
  123. package/dist/types/src/packlets/space-export/space-archive-writer.d.ts +7 -1
  124. package/dist/types/src/packlets/space-export/space-archive-writer.d.ts.map +1 -1
  125. package/dist/types/src/packlets/space-export/space-archive.test.d.ts +2 -0
  126. package/dist/types/src/packlets/space-export/space-archive.test.d.ts.map +1 -0
  127. package/dist/types/src/packlets/spaces/automerge-space-state.d.ts.map +1 -1
  128. package/dist/types/src/packlets/spaces/data-space-manager.d.ts +30 -19
  129. package/dist/types/src/packlets/spaces/data-space-manager.d.ts.map +1 -1
  130. package/dist/types/src/packlets/spaces/data-space.d.ts +26 -9
  131. package/dist/types/src/packlets/spaces/data-space.d.ts.map +1 -1
  132. package/dist/types/src/packlets/spaces/edge-feed-replicator.d.ts +2 -2
  133. package/dist/types/src/packlets/spaces/edge-feed-replicator.d.ts.map +1 -1
  134. package/dist/types/src/packlets/spaces/epoch-migrations.d.ts.map +1 -1
  135. package/dist/types/src/packlets/spaces/genesis.d.ts +2 -1
  136. package/dist/types/src/packlets/spaces/genesis.d.ts.map +1 -1
  137. package/dist/types/src/packlets/spaces/notarization-plugin.d.ts +6 -9
  138. package/dist/types/src/packlets/spaces/notarization-plugin.d.ts.map +1 -1
  139. package/dist/types/src/packlets/spaces/spaces-service.d.ts +10 -7
  140. package/dist/types/src/packlets/spaces/spaces-service.d.ts.map +1 -1
  141. package/dist/types/src/packlets/storage/level.d.ts.map +1 -1
  142. package/dist/types/src/packlets/storage/profile-archive.d.ts.map +1 -1
  143. package/dist/types/src/packlets/storage/storage.d.ts.map +1 -1
  144. package/dist/types/src/packlets/storage/util.d.ts.map +1 -1
  145. package/dist/types/src/packlets/system/system-service.d.ts +1 -1
  146. package/dist/types/src/packlets/system/system-service.d.ts.map +1 -1
  147. package/dist/types/src/packlets/testing/credential-utils.d.ts.map +1 -1
  148. package/dist/types/src/packlets/testing/invitation-utils.d.ts +6 -3
  149. package/dist/types/src/packlets/testing/invitation-utils.d.ts.map +1 -1
  150. package/dist/types/src/packlets/testing/test-builder.d.ts +6 -5
  151. package/dist/types/src/packlets/testing/test-builder.d.ts.map +1 -1
  152. package/dist/types/src/packlets/worker/worker-runtime.d.ts +41 -4
  153. package/dist/types/src/packlets/worker/worker-runtime.d.ts.map +1 -1
  154. package/dist/types/src/packlets/worker/worker-session.d.ts +2 -4
  155. package/dist/types/src/packlets/worker/worker-session.d.ts.map +1 -1
  156. package/dist/types/src/testing/setup.d.ts.map +1 -1
  157. package/dist/types/src/version.d.ts +1 -1
  158. package/dist/types/src/version.d.ts.map +1 -1
  159. package/dist/types/tsconfig.tsbuildinfo +1 -1
  160. package/package.json +71 -56
  161. package/src/index.ts +1 -0
  162. package/src/packlets/agents/edge-agent-manager.ts +8 -5
  163. package/src/packlets/agents/edge-agent-service.ts +4 -2
  164. package/src/packlets/devices/devices-service.test.ts +0 -1
  165. package/src/packlets/devtools/devtools.ts +2 -3
  166. package/src/packlets/diagnostics/diagnostics.ts +1 -2
  167. package/src/packlets/diagnostics/index.ts +1 -1
  168. package/src/packlets/identity/authenticator.ts +2 -2
  169. package/src/packlets/identity/contacts-service.ts +0 -1
  170. package/src/packlets/identity/identity-manager.test.ts +5 -5
  171. package/src/packlets/identity/identity-manager.ts +23 -22
  172. package/src/packlets/identity/identity-recovery-manager.ts +22 -18
  173. package/src/packlets/identity/identity-service.test.ts +6 -27
  174. package/src/packlets/identity/identity-service.ts +13 -81
  175. package/src/packlets/identity/identity.test.ts +2 -2
  176. package/src/packlets/identity/identity.ts +11 -34
  177. package/src/packlets/invitations/device-invitation-protocol.ts +8 -7
  178. package/src/packlets/invitations/edge-invitation-handler.ts +9 -5
  179. package/src/packlets/invitations/invitation-guest-extenstion.ts +6 -4
  180. package/src/packlets/invitations/invitation-host-extension.ts +13 -14
  181. package/src/packlets/invitations/invitation-protocol.ts +7 -4
  182. package/src/packlets/invitations/invitation-state.ts +1 -15
  183. package/src/packlets/invitations/invitations-handler.test.ts +4 -5
  184. package/src/packlets/invitations/invitations-handler.ts +74 -22
  185. package/src/packlets/invitations/invitations-manager.ts +40 -15
  186. package/src/packlets/invitations/invitations-service.ts +9 -9
  187. package/src/packlets/invitations/space-invitation-protocol.test.ts +17 -16
  188. package/src/packlets/invitations/space-invitation-protocol.ts +11 -16
  189. package/src/packlets/locks/index.ts +1 -1
  190. package/src/packlets/logging/logging-service.ts +20 -16
  191. package/src/packlets/network/network-service.test.ts +0 -1
  192. package/src/packlets/network/network-service.ts +10 -8
  193. package/src/packlets/services/client-rpc-server.ts +19 -16
  194. package/src/packlets/services/feed-syncer.test.ts +340 -0
  195. package/src/packlets/services/feed-syncer.ts +377 -0
  196. package/src/packlets/services/platform.ts +7 -1
  197. package/src/packlets/services/service-context.test.ts +3 -2
  198. package/src/packlets/services/service-context.ts +153 -61
  199. package/src/packlets/services/service-host.test.ts +8 -8
  200. package/src/packlets/services/service-host.ts +70 -40
  201. package/src/packlets/services/service-registry.test.ts +0 -1
  202. package/src/packlets/space-export/archive-format.ts +42 -0
  203. package/src/packlets/space-export/index.ts +4 -1
  204. package/src/packlets/space-export/serialized-space-reader.ts +111 -0
  205. package/src/packlets/space-export/serialized-space-writer.ts +252 -0
  206. package/src/packlets/space-export/space-archive-reader.ts +64 -3
  207. package/src/packlets/space-export/space-archive-writer.ts +41 -3
  208. package/src/packlets/space-export/space-archive.test.ts +461 -0
  209. package/src/packlets/spaces/data-space-manager.test.ts +79 -13
  210. package/src/packlets/spaces/data-space-manager.ts +108 -120
  211. package/src/packlets/spaces/data-space.ts +64 -36
  212. package/src/packlets/spaces/edge-feed-replicator.test.ts +1 -1
  213. package/src/packlets/spaces/edge-feed-replicator.ts +11 -9
  214. package/src/packlets/spaces/epoch-migrations.ts +6 -5
  215. package/src/packlets/spaces/genesis.ts +6 -1
  216. package/src/packlets/spaces/notarization-plugin.test.ts +2 -2
  217. package/src/packlets/spaces/notarization-plugin.ts +10 -9
  218. package/src/packlets/spaces/spaces-service.test.ts +18 -11
  219. package/src/packlets/spaces/spaces-service.ts +124 -24
  220. package/src/packlets/storage/storage.ts +4 -4
  221. package/src/packlets/testing/invitation-utils.ts +10 -6
  222. package/src/packlets/testing/test-builder.ts +36 -10
  223. package/src/packlets/worker/worker-runtime.ts +188 -17
  224. package/src/packlets/worker/worker-session.ts +12 -18
  225. package/src/version.ts +1 -1
  226. package/dist/lib/browser/chunk-KPYVJG6G.mjs.map +0 -7
  227. package/dist/lib/node-esm/chunk-BBBSS6UL.mjs.map +0 -7
  228. package/dist/types/src/packlets/identity/default-space-state-machine.d.ts +0 -19
  229. package/dist/types/src/packlets/identity/default-space-state-machine.d.ts.map +0 -1
  230. 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,57 +16,308 @@ 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-KPYVJG6G.mjs";
46
+ subscribeToSwarmInfo,
47
+ writeSerializedSpaceArchive
48
+ } from "./chunk-TUCJORVO.mjs";
49
+ import "./chunk-XJRPB3GA.mjs";
50
+ import {
51
+ __export,
52
+ __reExport
53
+ } from "./chunk-QCWEHHJW.mjs";
54
+
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
+ };
47
289
 
48
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
307
  // src/packlets/worker/worker-session.ts
58
308
  import { Trigger, asyncTimeout } from "@dxos/async";
59
309
  import { PROXY_CONNECTION_TIMEOUT, iframeServiceBundle, workerServiceBundle } from "@dxos/client-protocol";
60
- import { invariant } from "@dxos/invariant";
61
- import { log, logInfo } from "@dxos/log";
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 = "/__w/dxos/dxos/packages/sdk/client-services/src/packlets/worker/worker-session.ts";
71
321
  var WorkerSession = class {
72
322
  _clientRpc;
73
323
  _shellClientRpc;
@@ -76,40 +326,29 @@ var WorkerSession = class {
76
326
  _serviceHost;
77
327
  onClose = new Callback();
78
328
  origin;
79
- // TODO(nf): factor out?
80
- observabilityGroup;
81
- signalTelemetryEnabled;
82
329
  lockKey;
83
330
  bridgeService;
84
331
  constructor({ serviceHost, systemPort, appPort, shellPort, readySignal }) {
85
- invariant(serviceHost, void 0, {
86
- F: __dxlog_file,
87
- L: 54,
88
- S: this,
89
- A: [
90
- "serviceHost",
91
- ""
92
- ]
93
- });
332
+ invariant2(serviceHost, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 30, S: this, A: ["serviceHost", ""] });
94
333
  this._serviceHost = serviceHost;
95
334
  const middleware = {
96
- handleCall: async (method, params, handler) => {
335
+ handleCall: async (method, params, handler, options) => {
97
336
  const error = await readySignal.wait({
98
337
  timeout: PROXY_CONNECTION_TIMEOUT
99
338
  });
100
339
  if (error) {
101
340
  throw error;
102
341
  }
103
- return handler(method, params);
342
+ return handler(method, params, options);
104
343
  },
105
- handleStream: async (method, params, handler) => {
344
+ handleStream: async (method, params, handler, options) => {
106
345
  const error = await readySignal.wait({
107
346
  timeout: PROXY_CONNECTION_TIMEOUT
108
347
  });
109
348
  if (error) {
110
349
  throw error;
111
350
  }
112
- return handler(method, params);
351
+ return handler(method, params, options);
113
352
  }
114
353
  };
115
354
  this._clientRpc = new ClientRpcServer({
@@ -130,8 +369,6 @@ var WorkerSession = class {
130
369
  start: async (request) => {
131
370
  this.origin = request.origin;
132
371
  this.lockKey = request.lockKey;
133
- this.observabilityGroup = request.observabilityGroup;
134
- this.signalTelemetryEnabled = request.signalTelemetryEnabled;
135
372
  this._startTrigger.wake();
136
373
  },
137
374
  stop: async () => {
@@ -139,12 +376,7 @@ var WorkerSession = class {
139
376
  try {
140
377
  await this.close();
141
378
  } catch (err) {
142
- log.catch(err, void 0, {
143
- F: __dxlog_file,
144
- L: 108,
145
- S: this,
146
- C: (f, a) => f(...a)
147
- });
379
+ log2.catch(err, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 77, S: this });
148
380
  }
149
381
  });
150
382
  }
@@ -156,12 +388,7 @@ var WorkerSession = class {
156
388
  this.bridgeService = this._iframeRpc.rpc.BridgeService;
157
389
  }
158
390
  async open() {
159
- log.info("opening...", void 0, {
160
- F: __dxlog_file,
161
- L: 122,
162
- S: this,
163
- C: (f, a) => f(...a)
164
- });
391
+ log2("opening...", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 89, S: this });
165
392
  await Promise.all([
166
393
  this._clientRpc.open(),
167
394
  this._iframeRpc.open(),
@@ -173,51 +400,26 @@ var WorkerSession = class {
173
400
  if (this.lockKey) {
174
401
  void this._afterLockReleases(this.lockKey, () => this.close());
175
402
  }
176
- log.info("opened", void 0, {
177
- F: __dxlog_file,
178
- L: 133,
179
- S: this,
180
- C: (f, a) => f(...a)
181
- });
403
+ log2("opened", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 103, S: this });
182
404
  }
183
405
  async close() {
184
- log.info("closing...", void 0, {
185
- F: __dxlog_file,
186
- L: 137,
187
- S: this,
188
- C: (f, a) => f(...a)
189
- });
406
+ log2.debug("closing...", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 106, S: this });
190
407
  try {
191
408
  await this.onClose.callIfSet();
192
409
  } catch (err) {
193
- log.catch(err, void 0, {
194
- F: __dxlog_file,
195
- L: 141,
196
- S: this,
197
- C: (f, a) => f(...a)
198
- });
410
+ log2.catch(err, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 110, S: this });
199
411
  }
200
412
  await Promise.all([
201
413
  this._clientRpc.close(),
202
414
  this._iframeRpc.close()
203
415
  ]);
204
- log.info("closed", void 0, {
205
- F: __dxlog_file,
206
- L: 145,
207
- S: this,
208
- C: (f, a) => f(...a)
209
- });
416
+ log2.debug("closed", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 116, S: this });
210
417
  }
211
418
  async _maybeOpenShell() {
212
419
  try {
213
420
  this._shellClientRpc && await asyncTimeout(this._shellClientRpc.open(), 1e3);
214
421
  } catch {
215
- log.info("No shell connected.", void 0, {
216
- F: __dxlog_file,
217
- L: 152,
218
- S: this,
219
- C: (f, a) => f(...a)
220
- });
422
+ log2.info("No shell connected.", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 122, S: this });
221
423
  }
222
424
  }
223
425
  _afterLockReleases(lockKey, callback) {
@@ -225,15 +427,15 @@ var WorkerSession = class {
225
427
  }).then(callback);
226
428
  }
227
429
  };
228
- _ts_decorate([
430
+ _ts_decorate2([
229
431
  logInfo
230
432
  ], WorkerSession.prototype, "origin", void 0);
231
- _ts_decorate([
433
+ _ts_decorate2([
232
434
  logInfo
233
435
  ], WorkerSession.prototype, "lockKey", void 0);
234
436
 
235
437
  // src/packlets/worker/worker-runtime.ts
236
- var __dxlog_file2 = "/__w/dxos/dxos/packages/sdk/client-services/src/packlets/worker/worker-runtime.ts";
438
+ var __dxlog_file3 = "/__w/dxos/dxos/packages/sdk/client-services/src/packlets/worker/worker-runtime.ts";
237
439
  var WorkerRuntime = class {
238
440
  _configProvider;
239
441
  _acquireLock;
@@ -244,6 +446,8 @@ var WorkerRuntime = class {
244
446
  _sessions = /* @__PURE__ */ new Set();
245
447
  _clientServices;
246
448
  _channel;
449
+ _automaticallyConnectWebrtc;
450
+ _livenessLock = new WebLockWrapper(`@dxos/client-services/WorkerRuntime/${crypto.randomUUID()}`);
247
451
  _broadcastChannel;
248
452
  _sessionForNetworking;
249
453
  _config;
@@ -251,57 +455,73 @@ var WorkerRuntime = class {
251
455
  runtime: "worker-runtime"
252
456
  };
253
457
  _signalTelemetryEnabled = false;
254
- constructor({ channel = DEFAULT_WORKER_BROADCAST_CHANNEL, configProvider, acquireLock, releaseLock, onStop }) {
458
+ _runtime;
459
+ constructor({ channel = DEFAULT_WORKER_BROADCAST_CHANNEL, configProvider, acquireLock, releaseLock, onStop, automaticallyConnectWebrtc = true, sqliteLayer }) {
255
460
  this._configProvider = configProvider;
256
461
  this._acquireLock = acquireLock;
257
462
  this._releaseLock = releaseLock;
258
463
  this._onStop = onStop;
259
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));
260
469
  this._clientServices = new ClientServicesHost({
261
470
  callbacks: {
262
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
263
477
  }
264
478
  });
479
+ this._automaticallyConnectWebrtc = automaticallyConnectWebrtc;
265
480
  }
266
481
  get host() {
267
482
  return this._clientServices;
268
483
  }
484
+ get livenessLockKey() {
485
+ return this._livenessLock.key;
486
+ }
269
487
  async start() {
270
- log2("starting...", void 0, {
271
- F: __dxlog_file2,
272
- L: 85,
273
- S: this,
274
- C: (f, a) => f(...a)
275
- });
488
+ log3("starting...", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 74, S: this });
276
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 });
277
493
  this._broadcastChannel = new BroadcastChannel(this._channel);
278
494
  this._broadcastChannel.postMessage({
279
495
  action: "stop"
280
496
  });
281
497
  this._broadcastChannel.onmessage = async (event) => {
282
498
  if (event.data?.action === "stop") {
499
+ log3("worker-runtime: received stop broadcast", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 86, S: this });
283
500
  await this.stop();
284
501
  }
285
502
  };
503
+ log3("worker-runtime: acquiring storage lock", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 90, S: this });
286
504
  await this._acquireLock();
505
+ log3("worker-runtime: storage lock acquired, resolving config", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 92, S: this });
287
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
+ }
288
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 });
289
515
  this._clientServices.initialize({
290
516
  config: this._config,
291
517
  signalManager: this._config.get("runtime.client.edgeFeatures")?.signaling ? void 0 : signals ? new WebsocketSignalManager(signals, () => this._signalTelemetryEnabled ? this._signalMetadataTags : {}) : new MemorySignalManager(new MemorySignalManagerContext()),
292
518
  transportFactory: this._transportFactory
293
519
  });
294
- await this._clientServices.open(new Context(void 0, {
295
- F: __dxlog_file2,
296
- L: 108
297
- }));
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 });
298
523
  this._ready.wake(void 0);
299
- log2("started", void 0, {
300
- F: __dxlog_file2,
301
- L: 110,
302
- S: this,
303
- C: (f, a) => f(...a)
304
- });
524
+ log3("started", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 111, S: this });
305
525
  setIdentityTags({
306
526
  identityService: this._clientServices.services.IdentityService,
307
527
  devicesService: this._clientServices.services.DevicesService,
@@ -311,25 +531,43 @@ var WorkerRuntime = class {
311
531
  });
312
532
  } catch (err) {
313
533
  this._ready.wake(err);
314
- log2.error("starting", err, {
315
- F: __dxlog_file2,
316
- L: 120,
317
- S: this,
318
- C: (f, a) => f(...a)
319
- });
534
+ log3.error("starting", err, { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 121, S: this });
320
535
  }
321
536
  }
322
537
  async stop() {
323
538
  this._releaseLock();
324
539
  this._broadcastChannel?.close();
325
540
  this._broadcastChannel = void 0;
326
- 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();
327
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
+ }
328
566
  }
329
567
  /**
330
568
  * Create a new session.
331
569
  */
332
- async createSession({ appPort, systemPort, shellPort }) {
570
+ async createSession({ appPort, systemPort, shellPort, onClose }) {
333
571
  const session = new WorkerSession({
334
572
  serviceHost: this._clientServices,
335
573
  appPort,
@@ -342,37 +580,38 @@ var WorkerRuntime = class {
342
580
  if (this._sessions.size === 0) {
343
581
  await this.stop();
344
582
  } else {
345
- this._reconnectWebrtc();
583
+ if (this._automaticallyConnectWebrtc) {
584
+ this._reconnectWebrtc();
585
+ }
346
586
  }
587
+ await onClose?.();
347
588
  });
348
589
  await session.open();
349
- invariant2(!this._signalMetadataTags.origin || this._signalMetadataTags.origin === session.origin, `worker origin changed from ${this._signalMetadataTags.origin} to ${session.origin}?`, {
350
- F: __dxlog_file2,
351
- L: 158,
352
- S: this,
353
- A: [
354
- "!this._signalMetadataTags.origin || this._signalMetadataTags.origin === session.origin",
355
- "`worker origin changed from ${this._signalMetadataTags.origin} to ${session.origin}?`"
356
- ]
357
- });
358
- if (session.observabilityGroup) {
359
- this._signalMetadataTags.group = session.observabilityGroup;
360
- }
361
- 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}?`"] });
362
591
  this._signalMetadataTags.origin = session.origin;
363
592
  this._sessions.add(session);
364
- 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);
365
609
  }
366
610
  /**
367
611
  * Selects one of the existing session for WebRTC networking.
368
612
  */
369
613
  _reconnectWebrtc() {
370
- log2("reconnecting webrtc...", void 0, {
371
- F: __dxlog_file2,
372
- L: 176,
373
- S: this,
374
- C: (f, a) => f(...a)
375
- });
614
+ log3("reconnecting webrtc...", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 203, S: this });
376
615
  if (this._sessionForNetworking) {
377
616
  if (!this._sessions.has(this._sessionForNetworking)) {
378
617
  this._sessionForNetworking = void 0;
@@ -380,15 +619,58 @@ var WorkerRuntime = class {
380
619
  }
381
620
  if (!this._sessionForNetworking) {
382
621
  const selected = Array.from(this._sessions).find((session) => session.bridgeService);
383
- if (selected) {
384
- this._sessionForNetworking = selected;
385
- this._transportFactory.setBridgeService(selected.bridgeService);
386
- } else {
387
- this._transportFactory.setBridgeService(void 0);
388
- }
622
+ this.connectWebrtcBridge(selected);
389
623
  }
390
624
  }
391
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
+ };
392
674
  export {
393
675
  ClientRpcServer,
394
676
  ClientServicesHost,
@@ -407,33 +689,38 @@ export {
407
689
  InvitationsHandler,
408
690
  InvitationsManager,
409
691
  InvitationsServiceImpl,
410
- Lock,
411
692
  ServiceContext,
412
693
  ServiceRegistry,
694
+ SpaceArchiveWriter,
413
695
  SpaceInvitationProtocol,
414
696
  SpacesServiceImpl,
415
697
  TrustedKeySetAuthVerifier,
416
698
  WorkerRuntime,
417
699
  WorkerSession,
700
+ buildDatabaseDirectoryFromObjects,
418
701
  createAdmissionKeypair,
419
702
  createAuthProvider,
420
- createCollectDiagnosticsBroadcastHandler,
421
- createCollectDiagnosticsBroadcastSender,
422
703
  createDiagnostics,
423
704
  createLevel,
424
705
  createStorageObjects,
425
706
  decodeProfileArchive,
707
+ detectSpaceArchiveFormat,
426
708
  encodeProfileArchive,
427
709
  exportProfileData,
710
+ extractSpaceArchive,
428
711
  getNetworkPeers,
429
712
  importProfileData,
430
- isLocked,
713
+ objJsonToObjectStructure,
714
+ objectStructureToObjJson,
715
+ orderObjJsonFields,
716
+ readSerializedSpaceArchive,
431
717
  subscribeToFeedBlocks,
432
718
  subscribeToFeeds,
433
719
  subscribeToNetworkStatus,
434
720
  subscribeToNetworkTopics,
435
721
  subscribeToSignal,
436
722
  subscribeToSpaces,
437
- subscribeToSwarmInfo
723
+ subscribeToSwarmInfo,
724
+ writeSerializedSpaceArchive
438
725
  };
439
726
  //# sourceMappingURL=index.mjs.map