@dxos/client-services 0.8.4-main.a4bbb77 → 0.8.4-main.abd8ff62ef

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