@dxos/client-services 0.8.4-main.ead640a → 0.8.4-main.effb148878

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