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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (230) hide show
  1. package/LICENSE +102 -5
  2. package/README.md +1 -1
  3. package/dist/lib/browser/chunk-QCWEHHJW.mjs +24 -0
  4. package/dist/lib/browser/chunk-QCWEHHJW.mjs.map +7 -0
  5. package/dist/lib/browser/{chunk-KPYVJG6G.mjs → chunk-TUCJORVO.mjs} +2153 -3654
  6. package/dist/lib/browser/chunk-TUCJORVO.mjs.map +7 -0
  7. package/dist/lib/browser/chunk-XJRPB3GA.mjs +22 -0
  8. package/dist/lib/browser/chunk-XJRPB3GA.mjs.map +7 -0
  9. package/dist/lib/browser/index.mjs +424 -137
  10. package/dist/lib/browser/index.mjs.map +4 -4
  11. package/dist/lib/browser/meta.json +1 -1
  12. package/dist/lib/browser/packlets/diagnostics/browser-diagnostics-broadcast.mjs +88 -0
  13. package/dist/lib/browser/packlets/diagnostics/browser-diagnostics-broadcast.mjs.map +7 -0
  14. package/dist/lib/browser/packlets/diagnostics/diagnostics-broadcast.mjs +11 -0
  15. package/dist/lib/browser/packlets/diagnostics/diagnostics-broadcast.mjs.map +7 -0
  16. package/dist/lib/browser/packlets/locks/browser.mjs +86 -0
  17. package/dist/lib/browser/packlets/locks/browser.mjs.map +7 -0
  18. package/dist/lib/browser/packlets/locks/node.mjs +48 -0
  19. package/dist/lib/browser/packlets/locks/node.mjs.map +7 -0
  20. package/dist/lib/browser/testing/index.mjs +28 -29
  21. package/dist/lib/browser/testing/index.mjs.map +3 -3
  22. package/dist/lib/node-esm/chunk-2DT3MZRL.mjs +22 -0
  23. package/dist/lib/node-esm/chunk-2DT3MZRL.mjs.map +7 -0
  24. package/dist/lib/node-esm/chunk-2SZHAWBN.mjs +24 -0
  25. package/dist/lib/node-esm/chunk-2SZHAWBN.mjs.map +7 -0
  26. package/dist/lib/node-esm/{chunk-BBBSS6UL.mjs → chunk-IQLAKNSR.mjs} +2099 -3469
  27. package/dist/lib/node-esm/chunk-IQLAKNSR.mjs.map +7 -0
  28. package/dist/lib/node-esm/index.mjs +424 -137
  29. package/dist/lib/node-esm/index.mjs.map +4 -4
  30. package/dist/lib/node-esm/meta.json +1 -1
  31. package/dist/lib/node-esm/packlets/diagnostics/browser-diagnostics-broadcast.mjs +88 -0
  32. package/dist/lib/node-esm/packlets/diagnostics/browser-diagnostics-broadcast.mjs.map +7 -0
  33. package/dist/lib/node-esm/packlets/diagnostics/diagnostics-broadcast.mjs +11 -0
  34. package/dist/lib/node-esm/packlets/diagnostics/diagnostics-broadcast.mjs.map +7 -0
  35. package/dist/lib/node-esm/packlets/locks/browser.mjs +86 -0
  36. package/dist/lib/node-esm/packlets/locks/browser.mjs.map +7 -0
  37. package/dist/lib/node-esm/packlets/locks/node.mjs +48 -0
  38. package/dist/lib/node-esm/packlets/locks/node.mjs.map +7 -0
  39. package/dist/lib/node-esm/testing/index.mjs +28 -29
  40. package/dist/lib/node-esm/testing/index.mjs.map +3 -3
  41. package/dist/types/src/index.d.ts +1 -0
  42. package/dist/types/src/index.d.ts.map +1 -1
  43. package/dist/types/src/packlets/agents/edge-agent-manager.d.ts +3 -2
  44. package/dist/types/src/packlets/agents/edge-agent-manager.d.ts.map +1 -1
  45. package/dist/types/src/packlets/agents/edge-agent-service.d.ts +2 -1
  46. package/dist/types/src/packlets/agents/edge-agent-service.d.ts.map +1 -1
  47. package/dist/types/src/packlets/devices/devices-service.d.ts.map +1 -1
  48. package/dist/types/src/packlets/devtools/devtools.d.ts +2 -2
  49. package/dist/types/src/packlets/devtools/devtools.d.ts.map +1 -1
  50. package/dist/types/src/packlets/devtools/feeds.d.ts.map +1 -1
  51. package/dist/types/src/packlets/devtools/keys.d.ts.map +1 -1
  52. package/dist/types/src/packlets/devtools/metadata.d.ts.map +1 -1
  53. package/dist/types/src/packlets/devtools/network.d.ts.map +1 -1
  54. package/dist/types/src/packlets/devtools/spaces.d.ts.map +1 -1
  55. package/dist/types/src/packlets/diagnostics/browser-diagnostics-broadcast.d.ts.map +1 -1
  56. package/dist/types/src/packlets/diagnostics/diagnostics-broadcast.d.ts.map +1 -1
  57. package/dist/types/src/packlets/diagnostics/diagnostics-collector.d.ts.map +1 -1
  58. package/dist/types/src/packlets/diagnostics/diagnostics.d.ts +2 -3
  59. package/dist/types/src/packlets/diagnostics/diagnostics.d.ts.map +1 -1
  60. package/dist/types/src/packlets/diagnostics/index.d.ts +1 -1
  61. package/dist/types/src/packlets/diagnostics/index.d.ts.map +1 -1
  62. package/dist/types/src/packlets/identity/authenticator.d.ts +2 -2
  63. package/dist/types/src/packlets/identity/authenticator.d.ts.map +1 -1
  64. package/dist/types/src/packlets/identity/contacts-service.d.ts.map +1 -1
  65. package/dist/types/src/packlets/identity/identity-manager.d.ts +6 -6
  66. package/dist/types/src/packlets/identity/identity-manager.d.ts.map +1 -1
  67. package/dist/types/src/packlets/identity/identity-recovery-manager.d.ts +8 -7
  68. package/dist/types/src/packlets/identity/identity-recovery-manager.d.ts.map +1 -1
  69. package/dist/types/src/packlets/identity/identity-service.d.ts +6 -10
  70. package/dist/types/src/packlets/identity/identity-service.d.ts.map +1 -1
  71. package/dist/types/src/packlets/identity/identity.d.ts +8 -11
  72. package/dist/types/src/packlets/identity/identity.d.ts.map +1 -1
  73. package/dist/types/src/packlets/invitations/device-invitation-protocol.d.ts +6 -5
  74. package/dist/types/src/packlets/invitations/device-invitation-protocol.d.ts.map +1 -1
  75. package/dist/types/src/packlets/invitations/edge-invitation-handler.d.ts +1 -1
  76. package/dist/types/src/packlets/invitations/edge-invitation-handler.d.ts.map +1 -1
  77. package/dist/types/src/packlets/invitations/invitation-guest-extenstion.d.ts.map +1 -1
  78. package/dist/types/src/packlets/invitations/invitation-host-extension.d.ts.map +1 -1
  79. package/dist/types/src/packlets/invitations/invitation-protocol.d.ts +7 -4
  80. package/dist/types/src/packlets/invitations/invitation-protocol.d.ts.map +1 -1
  81. package/dist/types/src/packlets/invitations/invitation-state.d.ts.map +1 -1
  82. package/dist/types/src/packlets/invitations/invitation-topology.d.ts.map +1 -1
  83. package/dist/types/src/packlets/invitations/invitations-handler.d.ts +4 -4
  84. package/dist/types/src/packlets/invitations/invitations-handler.d.ts.map +1 -1
  85. package/dist/types/src/packlets/invitations/invitations-manager.d.ts +3 -3
  86. package/dist/types/src/packlets/invitations/invitations-manager.d.ts.map +1 -1
  87. package/dist/types/src/packlets/invitations/invitations-service.d.ts +3 -3
  88. package/dist/types/src/packlets/invitations/invitations-service.d.ts.map +1 -1
  89. package/dist/types/src/packlets/invitations/space-invitation-protocol.d.ts +4 -3
  90. package/dist/types/src/packlets/invitations/space-invitation-protocol.d.ts.map +1 -1
  91. package/dist/types/src/packlets/invitations/utils.d.ts.map +1 -1
  92. package/dist/types/src/packlets/locks/browser.d.ts.map +1 -1
  93. package/dist/types/src/packlets/locks/index.d.ts +1 -1
  94. package/dist/types/src/packlets/locks/index.d.ts.map +1 -1
  95. package/dist/types/src/packlets/locks/node.d.ts.map +1 -1
  96. package/dist/types/src/packlets/logging/logging-service.d.ts +4 -0
  97. package/dist/types/src/packlets/logging/logging-service.d.ts.map +1 -1
  98. package/dist/types/src/packlets/network/network-service.d.ts +5 -4
  99. package/dist/types/src/packlets/network/network-service.d.ts.map +1 -1
  100. package/dist/types/src/packlets/services/client-rpc-server.d.ts +5 -5
  101. package/dist/types/src/packlets/services/client-rpc-server.d.ts.map +1 -1
  102. package/dist/types/src/packlets/services/feed-syncer.d.ts +59 -0
  103. package/dist/types/src/packlets/services/feed-syncer.d.ts.map +1 -0
  104. package/dist/types/src/packlets/services/feed-syncer.test.d.ts +2 -0
  105. package/dist/types/src/packlets/services/feed-syncer.test.d.ts.map +1 -0
  106. package/dist/types/src/packlets/services/platform.d.ts.map +1 -1
  107. package/dist/types/src/packlets/services/service-context.d.ts +13 -9
  108. package/dist/types/src/packlets/services/service-context.d.ts.map +1 -1
  109. package/dist/types/src/packlets/services/service-host.d.ts +20 -7
  110. package/dist/types/src/packlets/services/service-host.d.ts.map +1 -1
  111. package/dist/types/src/packlets/services/service-registry.d.ts.map +1 -1
  112. package/dist/types/src/packlets/services/util.d.ts.map +1 -1
  113. package/dist/types/src/packlets/space-export/archive-format.d.ts +9 -0
  114. package/dist/types/src/packlets/space-export/archive-format.d.ts.map +1 -0
  115. package/dist/types/src/packlets/space-export/index.d.ts +4 -1
  116. package/dist/types/src/packlets/space-export/index.d.ts.map +1 -1
  117. package/dist/types/src/packlets/space-export/serialized-space-reader.d.ts +23 -0
  118. package/dist/types/src/packlets/space-export/serialized-space-reader.d.ts.map +1 -0
  119. package/dist/types/src/packlets/space-export/serialized-space-writer.d.ts +36 -0
  120. package/dist/types/src/packlets/space-export/serialized-space-writer.d.ts.map +1 -0
  121. package/dist/types/src/packlets/space-export/space-archive-reader.d.ts +9 -1
  122. package/dist/types/src/packlets/space-export/space-archive-reader.d.ts.map +1 -1
  123. package/dist/types/src/packlets/space-export/space-archive-writer.d.ts +7 -1
  124. package/dist/types/src/packlets/space-export/space-archive-writer.d.ts.map +1 -1
  125. package/dist/types/src/packlets/space-export/space-archive.test.d.ts +2 -0
  126. package/dist/types/src/packlets/space-export/space-archive.test.d.ts.map +1 -0
  127. package/dist/types/src/packlets/spaces/automerge-space-state.d.ts.map +1 -1
  128. package/dist/types/src/packlets/spaces/data-space-manager.d.ts +30 -19
  129. package/dist/types/src/packlets/spaces/data-space-manager.d.ts.map +1 -1
  130. package/dist/types/src/packlets/spaces/data-space.d.ts +26 -9
  131. package/dist/types/src/packlets/spaces/data-space.d.ts.map +1 -1
  132. package/dist/types/src/packlets/spaces/edge-feed-replicator.d.ts +2 -2
  133. package/dist/types/src/packlets/spaces/edge-feed-replicator.d.ts.map +1 -1
  134. package/dist/types/src/packlets/spaces/epoch-migrations.d.ts.map +1 -1
  135. package/dist/types/src/packlets/spaces/genesis.d.ts +2 -1
  136. package/dist/types/src/packlets/spaces/genesis.d.ts.map +1 -1
  137. package/dist/types/src/packlets/spaces/notarization-plugin.d.ts +6 -9
  138. package/dist/types/src/packlets/spaces/notarization-plugin.d.ts.map +1 -1
  139. package/dist/types/src/packlets/spaces/spaces-service.d.ts +10 -7
  140. package/dist/types/src/packlets/spaces/spaces-service.d.ts.map +1 -1
  141. package/dist/types/src/packlets/storage/level.d.ts.map +1 -1
  142. package/dist/types/src/packlets/storage/profile-archive.d.ts.map +1 -1
  143. package/dist/types/src/packlets/storage/storage.d.ts.map +1 -1
  144. package/dist/types/src/packlets/storage/util.d.ts.map +1 -1
  145. package/dist/types/src/packlets/system/system-service.d.ts +1 -1
  146. package/dist/types/src/packlets/system/system-service.d.ts.map +1 -1
  147. package/dist/types/src/packlets/testing/credential-utils.d.ts.map +1 -1
  148. package/dist/types/src/packlets/testing/invitation-utils.d.ts +6 -3
  149. package/dist/types/src/packlets/testing/invitation-utils.d.ts.map +1 -1
  150. package/dist/types/src/packlets/testing/test-builder.d.ts +6 -5
  151. package/dist/types/src/packlets/testing/test-builder.d.ts.map +1 -1
  152. package/dist/types/src/packlets/worker/worker-runtime.d.ts +41 -4
  153. package/dist/types/src/packlets/worker/worker-runtime.d.ts.map +1 -1
  154. package/dist/types/src/packlets/worker/worker-session.d.ts +2 -4
  155. package/dist/types/src/packlets/worker/worker-session.d.ts.map +1 -1
  156. package/dist/types/src/testing/setup.d.ts.map +1 -1
  157. package/dist/types/src/version.d.ts +1 -1
  158. package/dist/types/src/version.d.ts.map +1 -1
  159. package/dist/types/tsconfig.tsbuildinfo +1 -1
  160. package/package.json +71 -56
  161. package/src/index.ts +1 -0
  162. package/src/packlets/agents/edge-agent-manager.ts +8 -5
  163. package/src/packlets/agents/edge-agent-service.ts +4 -2
  164. package/src/packlets/devices/devices-service.test.ts +0 -1
  165. package/src/packlets/devtools/devtools.ts +2 -3
  166. package/src/packlets/diagnostics/diagnostics.ts +1 -2
  167. package/src/packlets/diagnostics/index.ts +1 -1
  168. package/src/packlets/identity/authenticator.ts +2 -2
  169. package/src/packlets/identity/contacts-service.ts +0 -1
  170. package/src/packlets/identity/identity-manager.test.ts +5 -5
  171. package/src/packlets/identity/identity-manager.ts +23 -22
  172. package/src/packlets/identity/identity-recovery-manager.ts +22 -18
  173. package/src/packlets/identity/identity-service.test.ts +6 -27
  174. package/src/packlets/identity/identity-service.ts +13 -81
  175. package/src/packlets/identity/identity.test.ts +2 -2
  176. package/src/packlets/identity/identity.ts +11 -34
  177. package/src/packlets/invitations/device-invitation-protocol.ts +8 -7
  178. package/src/packlets/invitations/edge-invitation-handler.ts +9 -5
  179. package/src/packlets/invitations/invitation-guest-extenstion.ts +6 -4
  180. package/src/packlets/invitations/invitation-host-extension.ts +13 -14
  181. package/src/packlets/invitations/invitation-protocol.ts +7 -4
  182. package/src/packlets/invitations/invitation-state.ts +1 -15
  183. package/src/packlets/invitations/invitations-handler.test.ts +4 -5
  184. package/src/packlets/invitations/invitations-handler.ts +74 -22
  185. package/src/packlets/invitations/invitations-manager.ts +40 -15
  186. package/src/packlets/invitations/invitations-service.ts +9 -9
  187. package/src/packlets/invitations/space-invitation-protocol.test.ts +17 -16
  188. package/src/packlets/invitations/space-invitation-protocol.ts +11 -16
  189. package/src/packlets/locks/index.ts +1 -1
  190. package/src/packlets/logging/logging-service.ts +20 -16
  191. package/src/packlets/network/network-service.test.ts +0 -1
  192. package/src/packlets/network/network-service.ts +10 -8
  193. package/src/packlets/services/client-rpc-server.ts +19 -16
  194. package/src/packlets/services/feed-syncer.test.ts +340 -0
  195. package/src/packlets/services/feed-syncer.ts +377 -0
  196. package/src/packlets/services/platform.ts +7 -1
  197. package/src/packlets/services/service-context.test.ts +3 -2
  198. package/src/packlets/services/service-context.ts +153 -61
  199. package/src/packlets/services/service-host.test.ts +8 -8
  200. package/src/packlets/services/service-host.ts +70 -40
  201. package/src/packlets/services/service-registry.test.ts +0 -1
  202. package/src/packlets/space-export/archive-format.ts +42 -0
  203. package/src/packlets/space-export/index.ts +4 -1
  204. package/src/packlets/space-export/serialized-space-reader.ts +111 -0
  205. package/src/packlets/space-export/serialized-space-writer.ts +252 -0
  206. package/src/packlets/space-export/space-archive-reader.ts +64 -3
  207. package/src/packlets/space-export/space-archive-writer.ts +41 -3
  208. package/src/packlets/space-export/space-archive.test.ts +461 -0
  209. package/src/packlets/spaces/data-space-manager.test.ts +79 -13
  210. package/src/packlets/spaces/data-space-manager.ts +108 -120
  211. package/src/packlets/spaces/data-space.ts +64 -36
  212. package/src/packlets/spaces/edge-feed-replicator.test.ts +1 -1
  213. package/src/packlets/spaces/edge-feed-replicator.ts +11 -9
  214. package/src/packlets/spaces/epoch-migrations.ts +6 -5
  215. package/src/packlets/spaces/genesis.ts +6 -1
  216. package/src/packlets/spaces/notarization-plugin.test.ts +2 -2
  217. package/src/packlets/spaces/notarization-plugin.ts +10 -9
  218. package/src/packlets/spaces/spaces-service.test.ts +18 -11
  219. package/src/packlets/spaces/spaces-service.ts +124 -24
  220. package/src/packlets/storage/storage.ts +4 -4
  221. package/src/packlets/testing/invitation-utils.ts +10 -6
  222. package/src/packlets/testing/test-builder.ts +36 -10
  223. package/src/packlets/worker/worker-runtime.ts +188 -17
  224. package/src/packlets/worker/worker-session.ts +12 -18
  225. package/src/version.ts +1 -1
  226. package/dist/lib/browser/chunk-KPYVJG6G.mjs.map +0 -7
  227. package/dist/lib/node-esm/chunk-BBBSS6UL.mjs.map +0 -7
  228. package/dist/types/src/packlets/identity/default-space-state-machine.d.ts +0 -19
  229. package/dist/types/src/packlets/identity/default-space-state-machine.d.ts.map +0 -1
  230. package/src/packlets/identity/default-space-state-machine.ts +0 -44
@@ -0,0 +1,88 @@
1
+ import "@dxos/node-std/globals";
2
+ import "../../chunk-QCWEHHJW.mjs";
3
+
4
+ // src/packlets/diagnostics/browser-diagnostics-broadcast.ts
5
+ import { Trigger } from "@dxos/async";
6
+ import { log } from "@dxos/log";
7
+ var __dxlog_file = "/__w/dxos/dxos/packages/sdk/client-services/src/packlets/diagnostics/browser-diagnostics-broadcast.ts";
8
+ var CHANNEL_NAME = "dxos.diagnostics.broadcast";
9
+ var createCollectDiagnosticsBroadcastSender = () => {
10
+ return {
11
+ broadcastDiagnosticsRequest: async () => {
12
+ let expectedResponse = "probe-ack";
13
+ let channel;
14
+ try {
15
+ const trigger = new Trigger();
16
+ channel = new BroadcastChannel(CHANNEL_NAME);
17
+ channel.onmessage = (msg) => {
18
+ if (expectedResponse === msg.data.type) {
19
+ trigger.wake(msg.data);
20
+ }
21
+ };
22
+ channel.postMessage({
23
+ type: "probe"
24
+ });
25
+ await trigger.wait({
26
+ timeout: 200
27
+ });
28
+ expectedResponse = "receive-diagnostics";
29
+ trigger.reset();
30
+ channel.postMessage({
31
+ type: "request-diagnostics"
32
+ });
33
+ const diagnostics = await trigger.wait({
34
+ timeout: 5e3
35
+ });
36
+ return diagnostics.payload;
37
+ } catch (e) {
38
+ const errorDescription = e instanceof Error ? e.message : JSON.stringify(e);
39
+ return {
40
+ expectedResponse,
41
+ errorDescription
42
+ };
43
+ } finally {
44
+ safeClose(channel);
45
+ }
46
+ }
47
+ };
48
+ };
49
+ var createCollectDiagnosticsBroadcastHandler = (systemService) => {
50
+ let channel;
51
+ return {
52
+ start: () => {
53
+ channel = new BroadcastChannel(CHANNEL_NAME);
54
+ channel.onmessage = async (message) => {
55
+ try {
56
+ if (message.data.type === "probe") {
57
+ channel?.postMessage({
58
+ type: "probe-ack"
59
+ });
60
+ } else if (message.data.type === "request-diagnostics") {
61
+ const diagnostics = await systemService.getDiagnostics({});
62
+ channel?.postMessage({
63
+ type: "receive-diagnostics",
64
+ payload: diagnostics
65
+ });
66
+ }
67
+ } catch (error) {
68
+ log.catch(error, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 73, S: void 0 });
69
+ }
70
+ };
71
+ },
72
+ stop: () => {
73
+ safeClose(channel);
74
+ channel = void 0;
75
+ }
76
+ };
77
+ };
78
+ var safeClose = (channel) => {
79
+ try {
80
+ channel?.close();
81
+ } catch (e) {
82
+ }
83
+ };
84
+ export {
85
+ createCollectDiagnosticsBroadcastHandler,
86
+ createCollectDiagnosticsBroadcastSender
87
+ };
88
+ //# sourceMappingURL=browser-diagnostics-broadcast.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/packlets/diagnostics/browser-diagnostics-broadcast.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport { Trigger } from '@dxos/async';\nimport { log } from '@dxos/log';\nimport { type SystemService } from '@dxos/protocols/proto/dxos/client/services';\n\nimport {\n type CollectDiagnosticsBroadcastHandler,\n type CollectDiagnosticsBroadcastSender,\n} from './diagnostics-collector';\n\nconst CHANNEL_NAME = 'dxos.diagnostics.broadcast';\n\nenum MessageType {\n PROBE = 'probe',\n PROBE_ACK = 'probe-ack',\n REQUEST_DIAGNOSTICS = 'request-diagnostics',\n RECEIVE_DIAGNOSTICS = 'receive-diagnostics',\n}\n\ninterface Message {\n type: MessageType;\n payload?: any;\n}\n\nexport const createCollectDiagnosticsBroadcastSender = (): CollectDiagnosticsBroadcastSender => {\n return {\n broadcastDiagnosticsRequest: async () => {\n let expectedResponse = MessageType.PROBE_ACK;\n let channel: BroadcastChannel | undefined;\n try {\n const trigger = new Trigger<Message>();\n channel = new BroadcastChannel(CHANNEL_NAME);\n channel.onmessage = (msg) => {\n if (expectedResponse === msg.data.type) {\n trigger.wake(msg.data);\n }\n };\n channel.postMessage({ type: MessageType.PROBE });\n await trigger.wait({ timeout: 200 });\n expectedResponse = MessageType.RECEIVE_DIAGNOSTICS;\n trigger.reset();\n channel.postMessage({ type: MessageType.REQUEST_DIAGNOSTICS });\n const diagnostics = await trigger.wait({ timeout: 5000 });\n return diagnostics.payload;\n } catch (e) {\n const errorDescription = e instanceof Error ? e.message : JSON.stringify(e);\n return { expectedResponse, errorDescription };\n } finally {\n safeClose(channel);\n }\n },\n };\n};\n\nexport const createCollectDiagnosticsBroadcastHandler = (\n systemService: SystemService,\n): CollectDiagnosticsBroadcastHandler => {\n let channel: BroadcastChannel | undefined;\n return {\n start: () => {\n channel = new BroadcastChannel(CHANNEL_NAME);\n channel.onmessage = async (message) => {\n try {\n if (message.data.type === MessageType.PROBE) {\n channel?.postMessage({ type: MessageType.PROBE_ACK });\n } else if (message.data.type === MessageType.REQUEST_DIAGNOSTICS) {\n const diagnostics = await systemService.getDiagnostics({});\n channel?.postMessage({\n type: MessageType.RECEIVE_DIAGNOSTICS,\n payload: diagnostics,\n });\n }\n } catch (error) {\n log.catch(error);\n }\n };\n },\n stop: () => {\n safeClose(channel);\n channel = undefined;\n },\n };\n};\n\nconst safeClose = (channel?: BroadcastChannel) => {\n try {\n channel?.close();\n } catch (e) {\n // ignored\n }\n};\n"],
5
+ "mappings": ";;;;AAIA,SAASA,eAAe;AACxB,SAASC,WAAW;AAQpB,IAAA,eAAMC;;IAgBFC,0CAA6B,MAAA;;iCAEvBC,YAAAA;AACJ,UAAI,mBAAA;UACF;UACAA;AACAA,cAAAA,UAAQC,IAAY,QAACC;kBACfC,IAAAA,iBAAqBD,YAAa;gBACpCE,YAAY,CAACF,QAAIG;AACnB,cAAA,qBAAA,IAAA,KAAA,MAAA;AACF,oBAAA,KAAA,IAAA,IAAA;UACAL;;AAA8C,gBAAA,YAAA;UAC9C,MAAMI;;AAA4B,cAAA,QAAA,KAAA;UAClCD,SAAAA;QACAC,CAAAA;AACAJ,2BAAmB;gBAAO,MAAA;AAAkC,gBAAA,YAAA;UAC5D,MAAMM;;AAAiD,cAAA,cAAA,MAAA,QAAA,KAAA;UACvD,SAAOA;QACP,CAAA;AACA,eAAMC,YAAAA;eACN,GAAO;cAAEJ,mBAAAA,aAAAA,QAAAA,EAAAA,UAAAA,KAAAA,UAAAA,CAAAA;eAAkBI;UAAiB;UAC9C;QACEC;MACF,UAAA;AACF,kBAAA,OAAA;MACF;IACA;EAEF;;AAIE,IAAO,2CAAA,CAAA,kBAAA;MACLC;;WAEET,MAAAA;gBACM,IAAA,iBAAA,YAAA;cACF,YAAYK,OAAKK,YAAI;;sBACQ,KAAA,SAAA,SAAA;AAAwB,qBAAA,YAAA;cAC9C,MAAIC;YACT,CAAA;qBACAX,QAASY,KAAAA,SAAY,uBAAA;kBACnBF,cAAI,MAAA,cAAA,eAAA,CAAA,CAAA;qBACJG,YAASP;cACX,MAAA;cACF,SAAA;YACA,CAAOQ;UACPC;QACF,SAAA,OAAA;AACF,cAAA,MAAA,OAAA,QAAA,EAAA,YAAA,YAAA,GAAA,cAAA,GAAA,IAAA,GAAA,OAAA,CAAA;QACF;MACAC;;UAEEhB,MAAAA;AACF,gBAAA,OAAA;AACF,gBAAA;IACA;EAEF;;gBAEaiB,CAAAA,YAAAA;AACX,MAAE;AACA,aAAU,MAAA;EACZ,SAAA,GAAA;;;",
6
+ "names": ["Trigger", "log", "CHANNEL_NAME", "broadcastDiagnosticsRequest", "channel", "onmessage", "msg", "expectedResponse", "trigger", "data", "diagnostics", "errorDescription", "safeClose", "start", "type", "message", "postMessage", "payload", "error", "log", "stop", "close"]
7
+ }
@@ -0,0 +1,11 @@
1
+ import "@dxos/node-std/globals";
2
+ import {
3
+ createCollectDiagnosticsBroadcastHandler,
4
+ createCollectDiagnosticsBroadcastSender
5
+ } from "../../chunk-XJRPB3GA.mjs";
6
+ import "../../chunk-QCWEHHJW.mjs";
7
+ export {
8
+ createCollectDiagnosticsBroadcastHandler,
9
+ createCollectDiagnosticsBroadcastSender
10
+ };
11
+ //# sourceMappingURL=diagnostics-broadcast.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": [],
4
+ "sourcesContent": [],
5
+ "mappings": "",
6
+ "names": []
7
+ }
@@ -0,0 +1,86 @@
1
+ import "@dxos/node-std/globals";
2
+ import "../../chunk-QCWEHHJW.mjs";
3
+
4
+ // src/packlets/locks/browser.ts
5
+ import { Trigger, asyncTimeout } from "@dxos/async";
6
+ import { RESOURCE_LOCK_TIMEOUT } from "@dxos/client-protocol";
7
+ import { log, logInfo } from "@dxos/log";
8
+ var __dxlog_file = "/__w/dxos/dxos/packages/sdk/client-services/src/packlets/locks/browser.ts";
9
+ function _ts_decorate(decorators, target, key, desc) {
10
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
11
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
12
+ 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;
13
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
14
+ }
15
+ var Lock = class {
16
+ _broadcastChannel = new BroadcastChannel("vault-resource-lock");
17
+ _lockKey;
18
+ _onAcquire;
19
+ _onRelease;
20
+ _releaseTrigger = new Trigger();
21
+ constructor({ lockKey, onAcquire, onRelease }) {
22
+ this._lockKey = lockKey;
23
+ this._onAcquire = onAcquire;
24
+ this._onRelease = onRelease;
25
+ this._broadcastChannel.onmessage = this._onMessage.bind(this);
26
+ }
27
+ get lockKey() {
28
+ return this._lockKey;
29
+ }
30
+ async acquire() {
31
+ this._broadcastChannel.postMessage({
32
+ message: "acquiring"
33
+ });
34
+ try {
35
+ log("aquiring lock...", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 39, S: this });
36
+ await asyncTimeout(this._requestLock(), RESOURCE_LOCK_TIMEOUT);
37
+ log("acquired lock", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 41, S: this });
38
+ } catch {
39
+ log("stealing lock...", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 43, S: this });
40
+ await this._requestLock(true);
41
+ log("stolen lock", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 45, S: this });
42
+ }
43
+ }
44
+ async release() {
45
+ this._releaseTrigger.wake();
46
+ }
47
+ _onMessage(event) {
48
+ if (event.data.message === "acquiring") {
49
+ this._releaseTrigger.wake();
50
+ }
51
+ }
52
+ async _requestLock(steal = false) {
53
+ log("requesting lock...", {
54
+ steal
55
+ }, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 57, S: this });
56
+ const acquired = new Trigger();
57
+ void navigator.locks.request(this._lockKey, {
58
+ steal
59
+ }, async () => {
60
+ await this._onAcquire?.();
61
+ acquired.wake();
62
+ this._releaseTrigger = new Trigger();
63
+ await this._releaseTrigger.wait();
64
+ log("releasing lock...", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 68, S: this });
65
+ await this._onRelease?.();
66
+ log("released lock", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 70, S: this });
67
+ }).catch(async () => {
68
+ await this._onRelease?.();
69
+ });
70
+ await acquired.wait();
71
+ log("recieved lock", {
72
+ steal
73
+ }, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 75, S: this });
74
+ }
75
+ };
76
+ _ts_decorate([
77
+ logInfo
78
+ ], Lock.prototype, "lockKey", null);
79
+ var isLocked = (lockPath) => {
80
+ throw new Error("Not implemented");
81
+ };
82
+ export {
83
+ Lock,
84
+ isLocked
85
+ };
86
+ //# sourceMappingURL=browser.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/packlets/locks/browser.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { Trigger, asyncTimeout } from '@dxos/async';\nimport { RESOURCE_LOCK_TIMEOUT } from '@dxos/client-protocol';\nimport { log, logInfo } from '@dxos/log';\n\nimport { type ResourceLock, type ResourceLockOptions } from './resource-lock';\n\nenum Message {\n ACQUIRING = 'acquiring',\n}\n\n// TODO(mykola): Factor out.\n// TODO(burdon): Extend to support locking for web and NodeJS (use npm lockfile). Use to lock agents.\nexport class Lock implements ResourceLock {\n private readonly _broadcastChannel = new BroadcastChannel('vault-resource-lock');\n private readonly _lockKey: string;\n private readonly _onAcquire: ResourceLockOptions['onAcquire'];\n private readonly _onRelease: ResourceLockOptions['onRelease'];\n private _releaseTrigger = new Trigger();\n\n constructor({ lockKey, onAcquire, onRelease }: ResourceLockOptions) {\n this._lockKey = lockKey;\n this._onAcquire = onAcquire;\n this._onRelease = onRelease;\n this._broadcastChannel.onmessage = this._onMessage.bind(this);\n }\n\n @logInfo\n get lockKey() {\n return this._lockKey;\n }\n\n async acquire(): Promise<void> {\n this._broadcastChannel.postMessage({\n message: Message.ACQUIRING,\n });\n\n try {\n log('aquiring lock...');\n await asyncTimeout(this._requestLock(), RESOURCE_LOCK_TIMEOUT);\n log('acquired lock');\n } catch {\n log('stealing lock...');\n await this._requestLock(true);\n log('stolen lock');\n }\n }\n\n async release(): Promise<void> {\n this._releaseTrigger.wake();\n }\n\n private _onMessage(event: MessageEvent<any>): void {\n if (event.data.message === Message.ACQUIRING) {\n this._releaseTrigger.wake();\n }\n }\n\n private async _requestLock(steal = false): Promise<void> {\n log('requesting lock...', { steal });\n const acquired = new Trigger();\n\n void navigator.locks\n .request(this._lockKey, { steal }, async () => {\n await this._onAcquire?.();\n acquired.wake();\n this._releaseTrigger = new Trigger();\n await this._releaseTrigger.wait();\n log('releasing lock...');\n await this._onRelease?.();\n log('released lock');\n })\n .catch(async () => {\n await this._onRelease?.();\n });\n\n await acquired.wait();\n log('recieved lock', { steal });\n }\n}\n\n// TODO(mykola): Implement.\nexport const isLocked = (lockPath: string) => {\n throw new Error('Not implemented');\n};\n"],
5
+ "mappings": ";;;;AAKA,SAASA,SAAAA,oBAA6B;AACtC,SAASC,6BAAoB;AAI7B,SAAKC,KAAAA,eAAAA;;;;;;;AAVL;AAiBmBC,IAAAA,OAAAA,MAAAA;EACAC,oBAAiB,IAAA,iBAAA,qBAAA;EACjBC;EACAC;EACTC;EAER,kBAAcC,IAAO,QAAEC;cAChBL,EAAAA,SAAWI,WAAAA,UAAAA,GAAAA;AAChB,SAAKH,WAAU;AACf,SAAKC,aAAaI;AAClB,SAAKP,aAAAA;AACP,SAAA,kBAAA,YAAA,KAAA,WAAA,KAAA,IAAA;EAEA;MAEE,UAAO;AACT,WAAA,KAAA;EAEA;QACE,UAAKA;SACHQ,kBAAO,YAAA;MACT,SAAA;IAEA,CAAA;QACEC;AACA,UAAA,oBAAuB,QAACC,EAAAA,YAAgBC,YAAAA,GAAAA,cAAAA,GAAAA,IAAAA,GAAAA,KAAAA,CAAAA;AACxCF,YAAI,aAAA,KAAA,aAAA,GAAA,qBAAA;AACJ,UAAA,iBAAM,QAAA,EAAA,YAAA,YAAA,GAAA,cAAA,GAAA,IAAA,GAAA,KAAA,CAAA;YACF;AACJ,UAAA,oBAAuB,QAAC,EAAA,YAAA,YAAA,GAAA,cAAA,GAAA,IAAA,GAAA,KAAA,CAAA;AACxBA,YAAI,KAAA,aAAA,IAAA;AACN,UAAA,eAAA,QAAA,EAAA,YAAA,YAAA,GAAA,cAAA,GAAA,IAAA,GAAA,KAAA,CAAA;IACF;EAEA;QACE,UAAKL;AACP,SAAA,gBAAA,KAAA;EAEQQ;aACFC,OAAU;QACZ,MAAKT,KAAAA,YAAgBU,aAAI;AAC3B,WAAA,gBAAA,KAAA;IACF;EAEA;QACEL,aAAI,QAAA,OAAsB;QAAEM,sBAAAA;MAAM;IAClC,GAAA,EAAA,YAAMC,YAAeC,GAAAA,cAAAA,GAAAA,IAAAA,GAAAA,KAAAA,CAAAA;AAErB,UAAKC,WAAUC,IACZC,QAAQ;SAAiBL,UAAAA,MAAAA,QAAAA,KAAAA,UAAAA;MAAS;mBAC3B;AACNC,YAAAA,KAASF,aAAI;AACb,eAAKV,KAAAA;AACL,WAAA,kBAAWA,IAAgBiB,QAAI;AAC/BZ,YAAI,KAAA,gBAAA,KAAA;AACJ,UAAA,qBAAqB,QAAA,EAAA,YAAA,YAAA,GAAA,cAAA,GAAA,IAAA,GAAA,KAAA,CAAA;AACrBA,YAAI,KAAA,aAAA;AAELa,UAAK,iBAAC,QAAA,EAAA,YAAA,YAAA,GAAA,cAAA,GAAA,IAAA,GAAA,KAAA,CAAA;aACL,YAAWnB;AACb,YAAA,KAAA,aAAA;IAEF,CAAA;AACAM,UAAI,SAAA,KAAA;QAAmBM,iBAAAA;MAAM;IAC/B,GAAA,EAAA,YAAA,YAAA,GAAA,cAAA,GAAA,IAAA,GAAA,KAAA,CAAA;EACF;;;;AAEA,GAAA,KAAA,WAAA,WAA2B,IAAA;AAEzB,IAAM,WAAU,CAAA,aAAA;AAChB,QAAA,IAAA,MAAA,iBAAA;;",
6
+ "names": ["RESOURCE_LOCK_TIMEOUT", "log", "Message", "_broadcastChannel", "_lockKey", "_onAcquire", "_onRelease", "_releaseTrigger", "lockKey", "onAcquire", "onRelease", "message", "log", "_requestLock", "RESOURCE_LOCK_TIMEOUT", "_onMessage", "event", "wake", "steal", "acquired", "Trigger", "navigator", "locks", "request", "wait", "catch"]
7
+ }
@@ -0,0 +1,48 @@
1
+ import "@dxos/node-std/globals";
2
+ import "../../chunk-QCWEHHJW.mjs";
3
+
4
+ // src/packlets/locks/node.ts
5
+ import { invariant } from "@dxos/invariant";
6
+ import { LockFile } from "@dxos/lock-file";
7
+ import { log, logInfo } from "@dxos/log";
8
+ var __dxlog_file = "/__w/dxos/dxos/packages/sdk/client-services/src/packlets/locks/node.ts";
9
+ function _ts_decorate(decorators, target, key, desc) {
10
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
11
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
12
+ 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;
13
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
14
+ }
15
+ var Lock = class {
16
+ _lockPath;
17
+ _onAcquire;
18
+ _onRelease;
19
+ _fileHandle;
20
+ constructor({ lockKey: lockPath, onAcquire, onRelease }) {
21
+ this._lockPath = lockPath;
22
+ this._onAcquire = onAcquire;
23
+ this._onRelease = onRelease;
24
+ }
25
+ get lockKey() {
26
+ return this._lockPath;
27
+ }
28
+ async acquire() {
29
+ log("acquiring lock...", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 28, S: this });
30
+ this._fileHandle = await LockFile.acquire(this._lockPath);
31
+ await this._onAcquire?.();
32
+ log("acquired lock", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 31, S: this });
33
+ }
34
+ async release() {
35
+ await this._onRelease?.();
36
+ invariant(this._fileHandle, "Lock is not acquired", { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 35, S: this, A: ["this._fileHandle", "'Lock is not acquired'"] });
37
+ await LockFile.release(this._fileHandle);
38
+ }
39
+ };
40
+ _ts_decorate([
41
+ logInfo
42
+ ], Lock.prototype, "lockKey", null);
43
+ var isLocked = (lockPath) => LockFile.isLocked(lockPath);
44
+ export {
45
+ Lock,
46
+ isLocked
47
+ };
48
+ //# sourceMappingURL=node.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/packlets/locks/node.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { type FileHandle } from 'node:fs/promises';\n\nimport { invariant } from '@dxos/invariant';\nimport { LockFile } from '@dxos/lock-file';\nimport { log, logInfo } from '@dxos/log';\n\nimport { type ResourceLock, type ResourceLockOptions } from './resource-lock';\n\n// TODO(mykola): Factor out.\nexport class Lock implements ResourceLock {\n private readonly _lockPath: string;\n private readonly _onAcquire: ResourceLockOptions['onAcquire'];\n private readonly _onRelease: ResourceLockOptions['onRelease'];\n private _fileHandle?: FileHandle;\n\n constructor({ lockKey: lockPath, onAcquire, onRelease }: ResourceLockOptions) {\n this._lockPath = lockPath;\n this._onAcquire = onAcquire;\n this._onRelease = onRelease;\n }\n\n @logInfo\n get lockKey() {\n return this._lockPath;\n }\n\n async acquire(): Promise<void> {\n log('acquiring lock...');\n this._fileHandle = await LockFile.acquire(this._lockPath);\n\n await this._onAcquire?.();\n\n log('acquired lock');\n }\n\n async release(): Promise<void> {\n await this._onRelease?.();\n invariant(this._fileHandle, 'Lock is not acquired');\n await LockFile.release(this._fileHandle);\n }\n}\n\nexport const isLocked = (lockPath: string) => LockFile.isLocked(lockPath);\n"],
5
+ "mappings": ";;;;AAOA,SAASA,iBAAgB;AACzB,SAASC,gBAAY;AAIrB,SAAA,KAAA,eAA4B;AAZ5B,IAAE,eAAA;;;;;;AAMF;AAQmBC,IAAAA,OAAAA,MAAkB;EAClBC;EACAC;EACTC;EAER;cACOH,EAAAA,SAAYI,UAAAA,WAAAA,UAAAA,GAAAA;AACjB,SAAKH,YAAU;AACf,SAAKC,aAAaG;AACpB,SAAA,aAAA;EAEA;MAEE,UAAO;AACT,WAAA,KAAA;EAEA;QACEN,UAAI;AACJ,QAAI,qBAAe,QAAMD,EAAAA,YAAiB,YAAKE,GAAS,cAAA,GAAA,IAAA,GAAA,KAAA,CAAA;AAExD,SAAA,cAAWC,MAAU,SAAA,QAAA,KAAA,SAAA;AAErBF,UAAI,KAAA,aAAA;AACN,QAAA,iBAAA,QAAA,EAAA,YAAA,YAAA,GAAA,cAAA,GAAA,IAAA,GAAA,KAAA,CAAA;EAEA;QACE,UAAWG;AACXI,UAAAA,KAAU,aAAKH;AACf,cAAML,KAASS,aAAaJ,wBAAW,EAAA,YAAA,YAAA,GAAA,cAAA,GAAA,IAAA,GAAA,MAAA,GAAA,CAAA,oBAAA,wBAAA,EAAA,CAAA;AACzC,UAAA,SAAA,QAAA,KAAA,WAAA;EACF;;;;AAEA,GAAA,KAAO,WAAMK,WAAYJ,IAAAA;;",
6
+ "names": ["LockFile", "log", "_lockPath", "_onAcquire", "_onRelease", "_fileHandle", "lockPath", "onRelease", "invariant", "release", "isLocked"]
7
+ }
@@ -6,7 +6,9 @@ import {
6
6
  InvitationsManager,
7
7
  ServiceContext,
8
8
  SpaceInvitationProtocol
9
- } from "../chunk-KPYVJG6G.mjs";
9
+ } from "../chunk-TUCJORVO.mjs";
10
+ import "../chunk-XJRPB3GA.mjs";
11
+ import "../chunk-QCWEHHJW.mjs";
10
12
 
11
13
  // src/packlets/testing/credential-utils.ts
12
14
  import { createCredential } from "@dxos/credentials";
@@ -27,13 +29,14 @@ var createMockCredential = async ({ signer, issuer }) => createCredential({
27
29
  // src/packlets/testing/invitation-utils.ts
28
30
  import { Trigger } from "@dxos/async";
29
31
  import { InvitationEncoder } from "@dxos/client-protocol";
32
+ import { Context } from "@dxos/context";
30
33
  import { invariant } from "@dxos/invariant";
31
34
  import { Invitation } from "@dxos/protocols/proto/dxos/client/services";
32
35
  var __dxlog_file = "/__w/dxos/dxos/packages/sdk/client-services/src/packlets/testing/invitation-utils.ts";
33
36
  var sanitizeInvitation = (invitation) => {
34
37
  return InvitationEncoder.decode(InvitationEncoder.encode(invitation));
35
38
  };
36
- var performInvitation = ({ host, guest, options, hooks, guestDeviceProfile, codeInputDelay }) => {
39
+ var performInvitation = ({ host, guest, guestDeviceProfile, options, hooks, codeInputDelay }) => {
37
40
  let guestError = false;
38
41
  let guestConnected = false;
39
42
  let wereConnected = false;
@@ -63,15 +66,7 @@ var performInvitation = ({ host, guest, options, hooks, guestDeviceProfile, code
63
66
  if (hooks?.guest?.onConnecting?.(guestObservable)) {
64
67
  break;
65
68
  }
66
- invariant(hostInvitation.swarmKey.equals(guestInvitation.swarmKey), void 0, {
67
- F: __dxlog_file,
68
- L: 95,
69
- S: void 0,
70
- A: [
71
- "hostInvitation.swarmKey!.equals(guestInvitation.swarmKey!)",
72
- ""
73
- ]
74
- });
69
+ invariant(hostInvitation.swarmKey.equals(guestInvitation.swarmKey), void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 51, S: void 0, A: ["hostInvitation.swarmKey.equals(guestInvitation.swarmKey)", ""] });
75
70
  break;
76
71
  }
77
72
  case Invitation.State.CONNECTED: {
@@ -202,7 +197,7 @@ var createInvitation = async (host, options) => {
202
197
  ...options ?? {}
203
198
  };
204
199
  if (host instanceof ServiceContext) {
205
- return host.invitationsManager.createInvitation({
200
+ return host.invitationsManager.createInvitation(new Context(void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 194 }), {
206
201
  kind: Invitation.Kind.SPACE,
207
202
  ...options
208
203
  });
@@ -212,7 +207,7 @@ var createInvitation = async (host, options) => {
212
207
  var acceptInvitation = (guest, invitation, guestDeviceProfile) => {
213
208
  invitation = sanitizeInvitation(invitation);
214
209
  if (guest instanceof ServiceContext) {
215
- return guest.invitationsManager.acceptInvitation({
210
+ return guest.invitationsManager.acceptInvitation(new Context(void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 204 }), {
216
211
  invitation,
217
212
  deviceProfile: guestDeviceProfile
218
213
  });
@@ -221,7 +216,10 @@ var acceptInvitation = (guest, invitation, guestDeviceProfile) => {
221
216
  };
222
217
 
223
218
  // src/packlets/testing/test-builder.ts
224
- import { Context } from "@dxos/context";
219
+ import * as Reactivity from "@effect/experimental/Reactivity";
220
+ import * as Layer from "effect/Layer";
221
+ import * as ManagedRuntime from "effect/ManagedRuntime";
222
+ import { Context as Context2 } from "@dxos/context";
225
223
  import { CredentialGenerator, createCredentialSignerWithChain } from "@dxos/credentials";
226
224
  import { failUndefined } from "@dxos/debug";
227
225
  import { EchoHost, MeshEchoReplicator, MetadataStore, SpaceManager, valueEncoding } from "@dxos/echo-pipeline";
@@ -232,13 +230,16 @@ import { MemorySignalManager, MemorySignalManagerContext } from "@dxos/messaging
232
230
  import { MemoryTransportFactory, SwarmNetworkManager } from "@dxos/network-manager";
233
231
  import { Invitation as Invitation2 } from "@dxos/protocols/proto/dxos/client/services";
234
232
  import { StorageType, createStorage } from "@dxos/random-access-storage";
233
+ import { layerMemory as sqliteLayerMemory } from "@dxos/sql-sqlite/platform";
234
+ import * as SqlTransaction from "@dxos/sql-sqlite/SqlTransaction";
235
235
  import { BlobStore } from "@dxos/teleport-extension-object-sync";
236
236
  var __dxlog_file2 = "/__w/dxos/dxos/packages/sdk/client-services/src/packlets/testing/test-builder.ts";
237
237
  var createServiceHost = (config, signalManagerContext) => {
238
238
  return new ClientServicesHost({
239
239
  config,
240
240
  signalManager: new MemorySignalManager(signalManagerContext),
241
- transportFactory: MemoryTransportFactory
241
+ transportFactory: MemoryTransportFactory,
242
+ runtime: ManagedRuntime.make(SqlTransaction.layer.pipe(Layer.provideMerge(sqliteLayerMemory), Layer.provideMerge(Reactivity.layer)).pipe(Layer.orDie)).runtimeEffect
242
243
  });
243
244
  };
244
245
  var createServiceContext = async ({ signalManagerFactory = async () => {
@@ -246,7 +247,7 @@ var createServiceContext = async ({ signalManagerFactory = async () => {
246
247
  return new MemorySignalManager(signalContext);
247
248
  }, storage = createStorage({
248
249
  type: StorageType.RAM
249
- }), runtimeParams } = {}) => {
250
+ }), runtimeProps } = {}) => {
250
251
  const signalManager = await signalManagerFactory();
251
252
  const networkManager = new SwarmNetworkManager({
252
253
  signalManager,
@@ -254,13 +255,14 @@ var createServiceContext = async ({ signalManagerFactory = async () => {
254
255
  });
255
256
  const level = createTestLevel();
256
257
  await level.open();
257
- return new ServiceContext(storage, level, networkManager, signalManager, void 0, void 0, {
258
- invitationConnectionDefaultParams: {
258
+ const runtime = ManagedRuntime.make(SqlTransaction.layer.pipe(Layer.provideMerge(sqliteLayerMemory), Layer.provideMerge(Reactivity.layer)).pipe(Layer.orDie)).runtimeEffect;
259
+ return new ServiceContext(storage, level, networkManager, signalManager, void 0, void 0, runtime, {
260
+ invitationConnectionDefaultProps: {
259
261
  teleport: {
260
262
  controlHeartbeatInterval: 200
261
263
  }
262
264
  },
263
- ...runtimeParams
265
+ ...runtimeProps
264
266
  });
265
267
  };
266
268
  var createPeers = async (numPeers, signalManagerFactory) => {
@@ -272,10 +274,7 @@ var createPeers = async (numPeers, signalManagerFactory) => {
272
274
  const peer = await createServiceContext({
273
275
  signalManagerFactory
274
276
  });
275
- await peer.open(new Context(void 0, {
276
- F: __dxlog_file2,
277
- L: 70
278
- }));
277
+ await peer.open(new Context2(void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 67 }));
279
278
  return peer;
280
279
  }));
281
280
  };
@@ -285,10 +284,7 @@ var createIdentity = async (peer) => {
285
284
  };
286
285
  var TestBuilder = class {
287
286
  signalContext = new MemorySignalManagerContext();
288
- _ctx = new Context(void 0, {
289
- F: __dxlog_file2,
290
- L: 83
291
- });
287
+ _ctx = new Context2(void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 77 });
292
288
  createPeer(peerOptions) {
293
289
  const peer = new TestPeer(this.signalContext, peerOptions);
294
290
  this._ctx.onDispose(async () => peer.destroy());
@@ -302,6 +298,7 @@ var TestPeer = class {
302
298
  _signalContext;
303
299
  _opts;
304
300
  _props = {};
301
+ _runtime = ManagedRuntime.make(SqlTransaction.layer.pipe(Layer.provideMerge(sqliteLayerMemory), Layer.provideMerge(Reactivity.layer)).pipe(Layer.orDie));
305
302
  constructor(_signalContext, _opts = {
306
303
  dataStore: StorageType.RAM
307
304
  }) {
@@ -358,7 +355,8 @@ var TestPeer = class {
358
355
  }
359
356
  get echoHost() {
360
357
  return this._props.echoHost ??= new EchoHost({
361
- kv: this.level
358
+ kv: this.level,
359
+ runtime: this._runtime.runtimeEffect
362
360
  });
363
361
  }
364
362
  get meshEchoReplicator() {
@@ -376,7 +374,7 @@ var TestPeer = class {
376
374
  edgeConnection: void 0,
377
375
  meshReplicator: this.meshEchoReplicator,
378
376
  echoEdgeReplicator: void 0,
379
- runtimeParams: this._opts.dataSpaceParams
377
+ runtimeProps: this._opts.dataSpaceProps
380
378
  });
381
379
  }
382
380
  get invitationsManager() {
@@ -398,6 +396,7 @@ var TestPeer = class {
398
396
  async destroy() {
399
397
  await this.level.close();
400
398
  await this.storage.reset();
399
+ await this._runtime.dispose();
401
400
  }
402
401
  };
403
402
  var createSigningContext = async (keyring) => {