@dxos/client-services 0.14.0 → 0.16.0

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 (57) hide show
  1. package/dist/lib/chunk-client-services-stack.mjs +799 -573
  2. package/dist/lib/chunk-client-services-stack.mjs.map +1 -1
  3. package/dist/lib/index.mjs +139 -131
  4. package/dist/lib/index.mjs.map +1 -1
  5. package/dist/lib/testing.mjs +1 -1
  6. package/dist/lib/testing.mjs.map +1 -1
  7. package/dist/types/src/Events.d.ts +2 -0
  8. package/dist/types/src/Events.d.ts.map +1 -1
  9. package/dist/types/src/internal/blobs/blob-replication.d.ts +28 -0
  10. package/dist/types/src/internal/blobs/blob-replication.d.ts.map +1 -0
  11. package/dist/types/src/internal/blobs/blob-store-service.d.ts +10 -0
  12. package/dist/types/src/internal/blobs/blob-store-service.d.ts.map +1 -0
  13. package/dist/types/src/internal/blobs/blob-store-service.test.d.ts +2 -0
  14. package/dist/types/src/internal/blobs/blob-store-service.test.d.ts.map +1 -0
  15. package/dist/types/src/internal/blobs/index.d.ts +4 -0
  16. package/dist/types/src/internal/blobs/index.d.ts.map +1 -0
  17. package/dist/types/src/internal/blobs/local-blob-store.d.ts +21 -0
  18. package/dist/types/src/internal/blobs/local-blob-store.d.ts.map +1 -0
  19. package/dist/types/src/internal/blobs/local-blob-store.test.d.ts +2 -0
  20. package/dist/types/src/internal/blobs/local-blob-store.test.d.ts.map +1 -0
  21. package/dist/types/src/internal/services/layer-specs.d.ts +6 -0
  22. package/dist/types/src/internal/services/layer-specs.d.ts.map +1 -1
  23. package/dist/types/src/internal/services/service-stack.d.ts.map +1 -1
  24. package/dist/types/src/internal/space-export/serialized-space-writer.d.ts +4 -1
  25. package/dist/types/src/internal/space-export/serialized-space-writer.d.ts.map +1 -1
  26. package/dist/types/src/internal/spaces/spaces-service.d.ts.map +1 -1
  27. package/dist/types/src/internal/storage/index.d.ts +1 -0
  28. package/dist/types/src/internal/storage/index.d.ts.map +1 -1
  29. package/dist/types/src/internal/storage/storage-watchdog.d.ts +17 -0
  30. package/dist/types/src/internal/storage/storage-watchdog.d.ts.map +1 -0
  31. package/dist/types/src/internal/storage/storage-watchdog.test.d.ts +2 -0
  32. package/dist/types/src/internal/storage/storage-watchdog.test.d.ts.map +1 -0
  33. package/dist/types/src/internal/worker/worker-runtime.d.ts.map +1 -1
  34. package/dist/types/src/migrations/blobs/index.d.ts +10 -0
  35. package/dist/types/src/migrations/blobs/index.d.ts.map +1 -0
  36. package/dist/types/src/version.d.ts +1 -1
  37. package/dist/types/tsconfig.tsbuildinfo +1 -1
  38. package/package.json +43 -42
  39. package/src/Events.ts +3 -0
  40. package/src/internal/blobs/blob-replication.ts +80 -0
  41. package/src/internal/blobs/blob-store-service.test.ts +76 -0
  42. package/src/internal/blobs/blob-store-service.ts +45 -0
  43. package/src/internal/blobs/index.ts +7 -0
  44. package/src/internal/blobs/local-blob-store.test.ts +53 -0
  45. package/src/internal/blobs/local-blob-store.ts +89 -0
  46. package/src/internal/services/layer-specs.ts +55 -0
  47. package/src/internal/services/service-stack.ts +2 -0
  48. package/src/internal/space-export/serialized-space-writer.ts +16 -9
  49. package/src/internal/spaces/spaces-service.ts +44 -6
  50. package/src/internal/storage/index.ts +1 -0
  51. package/src/internal/storage/storage-watchdog.test.ts +46 -0
  52. package/src/internal/storage/storage-watchdog.ts +58 -0
  53. package/src/internal/worker/worker-runtime.ts +2 -0
  54. package/src/migrations/blobs/0001_init.sql +17 -0
  55. package/src/migrations/blobs/index.ts +18 -0
  56. package/src/migrations/migrations.test.ts +3 -0
  57. package/src/version.ts +1 -1
@@ -1,4 +1,4 @@
1
- import { $ as SigningContextProviderSpec, $n as SqliteMetadataStoreLayer, $t as createAdmissionKeypair, A as IdentityProviderSpec, An as DevtoolsServiceImpl, At as SpaceArchiveWriter, B as KeyringSpec, Bn as SpaceManagerLayer, Bt as DataSpaceManagerLayer, C as FeedServiceSpec, Cn as Replication_exports, Ct as CrossDeviceSpaceSynchronizerLayer, D as HypercoreStoreSpec, Dn as DevtoolsHostEvents, Dt as SystemServiceLayer, E as HypercoreStorageDirectorySpec, En as PlatformInfo_exports, Et as SystemServiceImpl, F as InvitationFactoriesSpec, Fn as subscribeToSignal, Ft as buildDatabaseDirectoryFromObjects, G as MetadataStoreSpec, Gn as SpaceProtocol, Gt as TransportFactoryService, H as LoggingServiceSpec, Hn as AuthStatus, Ht as createSigningContextProvider, I as InvitationsHandlerSpec, In as subscribeToSwarmInfo, It as objJsonToObjectStructure, J as NetworkServiceSpec, Jn as CredentialServerExtension, Jt as InvitationsServiceImpl, K as NetworkLifecycleSpec, Kn as SpaceProtocolSession, Kt as InvitationsManager, L as InvitationsManagerSpec, Ln as subscribeToFeedBlocks, Lt as readSerializedSpaceArchive, M as IdentityServiceSpec, Mn as getNetworkPeers, Mt as objectStructureToObjJson, N as InboxServiceRegistrationSpec, Nn as subscribeToNetworkStatus, Nt as orderObjJsonFields, O as IdentityLifecycleSpec, On as DevtoolsHostLayer, Ot as SpacesServiceImpl, P as InboxServiceSpec, Pn as subscribeToNetworkTopics, Pt as writeSerializedSpaceArchive, Q as SignalManagerSpec, Qn as SqliteMetadataStore, Qt as InvitationsHandlerService, R as InvitationsServiceRegistrationSpec, Rn as subscribeToFeeds, Rt as detectSpaceArchiveFormat, S as FeedServiceRegistrationSpec, Sn as Identity_exports, St as FeedSyncerService, T as HypercoreFactorySpec, Tn as createDiagnosticsFromRouter, Tr as __exportAll, Tt as createCrossDeviceSpaceSynchronizer, U as MeshReplicatorRegistrationSpec, Un as MOCK_AUTH_PROVIDER, Ut as remainingLifetimeSeconds, V as LoggingServiceRegistrationSpec, Vn as SpaceManagerService, Vt as SigningContextProviderLayer, W as MeshReplicatorSpec, Wn as MOCK_AUTH_VERIFIER, Wt as DataSpace, X as QueryServiceSpec, Xt as InvitationsHandler, Y as QueryServiceRegistrationSpec, Yn as Space, Yt as InvitationsServiceLayer, Z as RpcRouterSpec, Zn as AuthExtension, Zt as InvitationsHandlerLayer, _ as EdgeAgentServiceSpec, _n as identityProviderFromManager, _r as Reset, _t as registerReplicator, a as ContactsServiceSpec, an as tryAcquireBeforeContextDisposed, at as SqliteStorageSpec, b as EdgeSubductionReplicatorRegistrationSpec, bn as ContactsServiceImpl, bt as FeedSyncer, c as DataServiceSpec, cn as InboxServiceLayer, cr as EdgeAgentServiceLayer, ct as StorageMigrationSpec, d as DevicesServiceSpec, dn as IdentityServiceLayer, dr as EdgeAgentManager, dt as SystemServiceSpec, en as InvitationFactoriesLayer, er as IMetadataStoreService, et as SpaceManagerSpec, f as DevtoolsHostRegistrationSpec, fr as EdgeAgentManagerLayer, ft as TransportFactorySpec, g as EdgeAgentServiceRegistrationSpec, gn as IdentityManagerLayer, gr as Opening, gt as identityProviderLayer, h as EdgeAgentManagerSpec, hn as IdentityManager, hr as Events_exports, ht as echoHostLayer, i as ContactsServiceRegistrationSpec, in as toSpaceMemberRole, ir as Auth_exports, it as SqlServiceSpec, j as IdentityServiceRegistrationSpec, jn as subscribeToSpaces, jt as extractSpaceArchive, k as IdentityManagerSpec, kn as DevtoolsHostService, kt as SpacesServiceLayer, l as DataSpaceManagerSpec, ln as InboxUnavailableError, lr as Readiness_exports, lt as SwarmNetworkManagerSpec, m as EchoHostSpec, mn as wipeSqliteStorage, mr as Closing, mt as StorageMigrationService, n as layerClientServices, nn as computeExpirationTime, nr as hasInvitationExpired, nt as SpacesServiceSpec, o as CrossDeviceSpaceSynchronizerSpec, on as DeviceInvitationProtocol, or as invitations_exports, ot as StackReadinessSpec, p as DevtoolsHostSpec, pn as SqliteStorage_exports, pr as EdgeAgentManagerService, pt as clientServiceSpecs, q as NetworkServiceRegistrationSpec, qn as CredentialRetrieverExtension, qt as InvitationsManagerLayer, r as runtimePropsFromConfig, rn as stateToString, rr as CredentialsDocument_exports, rt as SqlServiceRegistrationSpec, s as DataServiceRegistrationSpec, sn as InboxServiceImpl, sr as EdgeAgentServiceImpl, st as StorageLifecycleSpec, t as enableNetworking, tn as SpaceInvitationProtocol, tr as MetadataStore, tt as SpacesServiceRegistrationSpec, u as DevicesServiceRegistrationSpec, un as IdentityServiceImpl, ut as SystemServiceRegistrationSpec, v as EdgeClientsSpec, vn as IdentityLifecycleLayer, vr as StackOpened, vt as storageLifecycleLayer, w as FeedSyncerSpec, wn as createDiagnostics, wr as identity_exports, wt as CrossDeviceSpaceSynchronizerService, x as EdgeSubductionReplicatorSpec, xn as ContactsServiceLayer, xr as spaces_exports, xt as FeedSyncerLayer, y as EdgeIdentityRecoverySpec, yr as WipingStorage, yt as storageMigrationLayer, z as InvitationsServiceSpec, zn as SpaceManager, zt as DataSpaceManager } from "./chunk-client-services-stack.mjs";
1
+ import { $ as QueryServiceRegistrationSpec, $n as SpaceProtocolSession, $t as InvitationsManager, A as HypercoreStoreSpec, An as Replication_exports, At as createCrossDeviceSpaceSynchronizer, B as InvitationsManagerSpec, Bn as subscribeToNetworkStatus, Bt as orderObjJsonFields, C as EdgeSubductionReplicatorRegistrationSpec, Cn as IdentityManagerLayer, Cr as Opening, Ct as storageLifecycleLayer, D as FeedSyncerSpec, Dn as ContactsServiceImpl, Dr as WipingStorage, Dt as FeedSyncerService, E as FeedServiceSpec, Er as StorageStuck, Et as FeedSyncerLayer, F as IdentityServiceSpec, Fn as DevtoolsHostLayer, Ft as SpacesServiceLayer, G as LoggingServiceRegistrationSpec, Gn as subscribeToFeeds, Gt as detectSpaceArchiveFormat, H as InvitationsServiceSpec, Hn as subscribeToSignal, Ht as buildDatabaseDirectoryFromObjects, I as InboxServiceRegistrationSpec, In as DevtoolsHostService, It as SpaceArchiveWriter, J as MeshReplicatorSpec, Jn as SpaceManagerService, Jt as SigningContextProviderLayer, K as LoggingServiceSpec, Kn as SpaceManager, Kt as DataSpaceManager, L as InboxServiceSpec, Ln as DevtoolsServiceImpl, Lt as extractSpaceArchive, M as IdentityManagerSpec, Mn as createDiagnosticsFromRouter, Mr as identity_exports, Mt as SystemServiceLayer, N as IdentityProviderSpec, Nn as PlatformInfo_exports, Nr as __exportAll, Nt as storageWatchdogLayer, O as HypercoreFactorySpec, On as ContactsServiceLayer, Ot as CrossDeviceSpaceSynchronizerLayer, P as IdentityServiceRegistrationSpec, Pn as DevtoolsHostEvents, Pt as SpacesServiceImpl, Q as NetworkServiceSpec, Qn as SpaceProtocol, Qt as TransportFactoryService, R as InvitationFactoriesSpec, Rn as subscribeToSpaces, Rt as collectFeedMessages, S as EdgeIdentityRecoverySpec, Sn as IdentityManager, Sr as Events_exports, St as registerReplicator, T as FeedServiceRegistrationSpec, Tn as IdentityLifecycleLayer, Tr as StackOpened, Tt as FeedSyncer, U as KeyringSpec, Un as subscribeToSwarmInfo, Ut as objJsonToObjectStructure, V as InvitationsServiceRegistrationSpec, Vn as subscribeToNetworkTopics, Vt as writeSerializedSpaceArchive, W as LocalBlobStoreSpec, Wn as subscribeToFeedBlocks, Wt as readSerializedSpaceArchive, X as NetworkLifecycleSpec, Xn as MOCK_AUTH_PROVIDER, Xt as remainingLifetimeSeconds, Y as MetadataStoreSpec, Yn as AuthStatus, Yt as createSigningContextProvider, Z as NetworkServiceRegistrationSpec, Zn as MOCK_AUTH_VERIFIER, Zt as DataSpace, _ as EchoHostSpec, _n as IdentityServiceImpl, _t as TransportFactorySpec, a as BlobStoreServiceRegistrationSpec, an as InvitationsHandlerService, ar as SqliteMetadataStore, at as SpacesServiceRegistrationSpec, b as EdgeAgentServiceSpec, bn as SqliteStorage_exports, br as EdgeAgentManagerService, bt as echoHostLayer, c as ContactsServiceSpec, cn as SpaceInvitationProtocol, cr as MetadataStore, ct as SqlServiceSpec, d as DataServiceSpec, dn as toSpaceMemberRole, dr as Auth_exports, dt as StorageLifecycleSpec, en as InvitationsManagerLayer, er as CredentialRetrieverExtension, et as QueryServiceSpec, f as DataSpaceManagerSpec, fn as tryAcquireBeforeContextDisposed, ft as StorageMigrationSpec, g as DevtoolsHostSpec, gn as InboxUnavailableError, gr as Readiness_exports, gt as SystemServiceSpec, h as DevtoolsHostRegistrationSpec, hn as InboxServiceLayer, hr as EdgeAgentServiceLayer, ht as SystemServiceRegistrationSpec, i as BlobReplicationSpec, in as InvitationsHandlerLayer, ir as AuthExtension, it as SpaceManagerSpec, j as IdentityLifecycleSpec, jn as createDiagnostics, jt as SystemServiceImpl, k as HypercoreStorageDirectorySpec, kn as Identity_exports, kr as spaces_exports, kt as CrossDeviceSpaceSynchronizerService, l as CrossDeviceSpaceSynchronizerSpec, ln as computeExpirationTime, lr as hasInvitationExpired, lt as SqliteStorageSpec, m as DevicesServiceSpec, mn as InboxServiceImpl, mr as EdgeAgentServiceImpl, mt as SwarmNetworkManagerSpec, n as layerClientServices, nn as InvitationsServiceLayer, nr as Space, nt as SignalManagerSpec, o as BlobStoreServiceSpec, on as createAdmissionKeypair, or as SqliteMetadataStoreLayer, ot as SpacesServiceSpec, p as DevicesServiceRegistrationSpec, pn as DeviceInvitationProtocol, pr as invitations_exports, pt as StorageWatchdogSpec, q as MeshReplicatorRegistrationSpec, qn as SpaceManagerLayer, qt as DataSpaceManagerLayer, r as runtimePropsFromConfig, rn as InvitationsHandler, rt as SigningContextProviderSpec, s as ContactsServiceRegistrationSpec, sn as InvitationFactoriesLayer, sr as IMetadataStoreService, st as SqlServiceRegistrationSpec, t as enableNetworking, tn as InvitationsServiceImpl, tr as CredentialServerExtension, tt as RpcRouterSpec, u as DataServiceRegistrationSpec, un as stateToString, ur as CredentialsDocument_exports, ut as StackReadinessSpec, v as EdgeAgentManagerSpec, vn as IdentityServiceLayer, vr as EdgeAgentManager, vt as clientServiceSpecs, w as EdgeSubductionReplicatorSpec, wn as identityProviderFromManager, wr as Reset, wt as storageMigrationLayer, x as EdgeClientsSpec, xn as wipeSqliteStorage, xr as Closing, xt as identityProviderLayer, y as EdgeAgentServiceRegistrationSpec, yr as EdgeAgentManagerLayer, yt as StorageMigrationService, z as InvitationsHandlerSpec, zn as getNetworkPeers, zt as objectStructureToObjJson } from "./chunk-client-services-stack.mjs";
2
2
  import * as Context from "effect/Context";
3
3
  import * as Effect from "effect/Effect";
4
4
  import * as Layer from "effect/Layer";
@@ -113,123 +113,6 @@ var Metadata_exports = /* @__PURE__ */ __exportAll({
113
113
  hasInvitationExpired: () => hasInvitationExpired
114
114
  });
115
115
  //#endregion
116
- //#region src/ServiceStack.ts
117
- var ServiceStack_exports = /* @__PURE__ */ __exportAll({
118
- ContactsServiceRegistrationSpec: () => ContactsServiceRegistrationSpec,
119
- ContactsServiceSpec: () => ContactsServiceSpec,
120
- CrossDeviceSpaceSynchronizerLayer: () => CrossDeviceSpaceSynchronizerLayer,
121
- CrossDeviceSpaceSynchronizerService: () => CrossDeviceSpaceSynchronizerService,
122
- CrossDeviceSpaceSynchronizerSpec: () => CrossDeviceSpaceSynchronizerSpec,
123
- DataServiceRegistrationSpec: () => DataServiceRegistrationSpec,
124
- DataServiceSpec: () => DataServiceSpec,
125
- DataSpaceManagerSpec: () => DataSpaceManagerSpec,
126
- DevicesServiceRegistrationSpec: () => DevicesServiceRegistrationSpec,
127
- DevicesServiceSpec: () => DevicesServiceSpec,
128
- DevtoolsHostRegistrationSpec: () => DevtoolsHostRegistrationSpec,
129
- DevtoolsHostSpec: () => DevtoolsHostSpec,
130
- EchoHostSpec: () => EchoHostSpec,
131
- EdgeAgentManagerSpec: () => EdgeAgentManagerSpec,
132
- EdgeAgentServiceRegistrationSpec: () => EdgeAgentServiceRegistrationSpec,
133
- EdgeAgentServiceSpec: () => EdgeAgentServiceSpec,
134
- EdgeClientsSpec: () => EdgeClientsSpec,
135
- EdgeIdentityRecoverySpec: () => EdgeIdentityRecoverySpec,
136
- EdgeSubductionReplicatorRegistrationSpec: () => EdgeSubductionReplicatorRegistrationSpec,
137
- EdgeSubductionReplicatorSpec: () => EdgeSubductionReplicatorSpec,
138
- FeedServiceRegistrationSpec: () => FeedServiceRegistrationSpec,
139
- FeedServiceSpec: () => FeedServiceSpec,
140
- FeedSyncer: () => FeedSyncer,
141
- FeedSyncerLayer: () => FeedSyncerLayer,
142
- FeedSyncerService: () => FeedSyncerService,
143
- FeedSyncerSpec: () => FeedSyncerSpec,
144
- HypercoreFactorySpec: () => HypercoreFactorySpec,
145
- HypercoreStorageDirectorySpec: () => HypercoreStorageDirectorySpec,
146
- HypercoreStoreSpec: () => HypercoreStoreSpec,
147
- IdentityLifecycleSpec: () => IdentityLifecycleSpec,
148
- IdentityManagerSpec: () => IdentityManagerSpec,
149
- IdentityProviderSpec: () => IdentityProviderSpec,
150
- IdentityServiceRegistrationSpec: () => IdentityServiceRegistrationSpec,
151
- IdentityServiceSpec: () => IdentityServiceSpec,
152
- InboxServiceRegistrationSpec: () => InboxServiceRegistrationSpec,
153
- InboxServiceSpec: () => InboxServiceSpec,
154
- InvitationFactoriesSpec: () => InvitationFactoriesSpec,
155
- InvitationsHandlerSpec: () => InvitationsHandlerSpec,
156
- InvitationsManagerSpec: () => InvitationsManagerSpec,
157
- InvitationsServiceRegistrationSpec: () => InvitationsServiceRegistrationSpec,
158
- InvitationsServiceSpec: () => InvitationsServiceSpec,
159
- KeyringSpec: () => KeyringSpec,
160
- LoggingServiceRegistrationSpec: () => LoggingServiceRegistrationSpec,
161
- LoggingServiceSpec: () => LoggingServiceSpec,
162
- MeshReplicatorRegistrationSpec: () => MeshReplicatorRegistrationSpec,
163
- MeshReplicatorSpec: () => MeshReplicatorSpec,
164
- MetadataStoreSpec: () => MetadataStoreSpec,
165
- NetworkLifecycleSpec: () => NetworkLifecycleSpec,
166
- NetworkServiceRegistrationSpec: () => NetworkServiceRegistrationSpec,
167
- NetworkServiceSpec: () => NetworkServiceSpec,
168
- QueryServiceRegistrationSpec: () => QueryServiceRegistrationSpec,
169
- QueryServiceSpec: () => QueryServiceSpec,
170
- RpcRouterSpec: () => RpcRouterSpec,
171
- SignalManagerSpec: () => SignalManagerSpec,
172
- SigningContextProviderSpec: () => SigningContextProviderSpec,
173
- SpaceManagerSpec: () => SpaceManagerSpec,
174
- SpacesServiceRegistrationSpec: () => SpacesServiceRegistrationSpec,
175
- SpacesServiceSpec: () => SpacesServiceSpec,
176
- SqlServiceRegistrationSpec: () => SqlServiceRegistrationSpec,
177
- SqlServiceSpec: () => SqlServiceSpec,
178
- SqliteStorageSpec: () => SqliteStorageSpec,
179
- StackReadinessSpec: () => StackReadinessSpec,
180
- StorageLifecycleSpec: () => StorageLifecycleSpec,
181
- StorageMigrationService: () => StorageMigrationService,
182
- StorageMigrationSpec: () => StorageMigrationSpec,
183
- SwarmNetworkManagerSpec: () => SwarmNetworkManagerSpec,
184
- SystemServiceRegistrationSpec: () => SystemServiceRegistrationSpec,
185
- SystemServiceSpec: () => SystemServiceSpec,
186
- TransportFactoryService: () => TransportFactoryService,
187
- TransportFactorySpec: () => TransportFactorySpec,
188
- clientServiceSpecs: () => clientServiceSpecs,
189
- createCrossDeviceSpaceSynchronizer: () => createCrossDeviceSpaceSynchronizer,
190
- echoHostLayer: () => echoHostLayer,
191
- enableNetworking: () => enableNetworking,
192
- identityProviderLayer: () => identityProviderLayer,
193
- layerClientServices: () => layerClientServices,
194
- registerReplicator: () => registerReplicator,
195
- runtimePropsFromConfig: () => runtimePropsFromConfig,
196
- storageLifecycleLayer: () => storageLifecycleLayer,
197
- storageMigrationLayer: () => storageMigrationLayer
198
- });
199
- //#endregion
200
- //#region src/Spaces.ts
201
- var Spaces_exports = /* @__PURE__ */ __exportAll({
202
- AuthExtension: () => AuthExtension,
203
- AuthStatus: () => AuthStatus,
204
- CredentialRetrieverExtension: () => CredentialRetrieverExtension,
205
- CredentialServerExtension: () => CredentialServerExtension,
206
- DataSpace: () => DataSpace,
207
- DataSpaceManager: () => DataSpaceManager,
208
- DataSpaceManagerLayer: () => DataSpaceManagerLayer,
209
- MOCK_AUTH_PROVIDER: () => MOCK_AUTH_PROVIDER,
210
- MOCK_AUTH_VERIFIER: () => MOCK_AUTH_VERIFIER,
211
- SigningContextProviderLayer: () => SigningContextProviderLayer,
212
- Space: () => Space,
213
- SpaceArchiveWriter: () => SpaceArchiveWriter,
214
- SpaceManager: () => SpaceManager,
215
- SpaceManagerLayer: () => SpaceManagerLayer,
216
- SpaceManagerService: () => SpaceManagerService,
217
- SpaceProtocol: () => SpaceProtocol,
218
- SpaceProtocolSession: () => SpaceProtocolSession,
219
- SpacesServiceImpl: () => SpacesServiceImpl,
220
- SpacesServiceLayer: () => SpacesServiceLayer,
221
- buildDatabaseDirectoryFromObjects: () => buildDatabaseDirectoryFromObjects,
222
- createSigningContextProvider: () => createSigningContextProvider,
223
- detectSpaceArchiveFormat: () => detectSpaceArchiveFormat,
224
- extractSpaceArchive: () => extractSpaceArchive,
225
- objJsonToObjectStructure: () => objJsonToObjectStructure,
226
- objectStructureToObjJson: () => objectStructureToObjJson,
227
- orderObjJsonFields: () => orderObjJsonFields,
228
- readSerializedSpaceArchive: () => readSerializedSpaceArchive,
229
- remainingLifetimeSeconds: () => remainingLifetimeSeconds,
230
- writeSerializedSpaceArchive: () => writeSerializedSpaceArchive
231
- });
232
- //#endregion
233
116
  //#region src/internal/storage/util.ts
234
117
  var getRootPath = (config) => {
235
118
  const { dataRoot = isNode() ? DX_DATA : "dxos/storage" } = config ?? {};
@@ -397,6 +280,129 @@ var getSqliteProfileEntries = (archive) => {
397
280
  return entries;
398
281
  };
399
282
  //#endregion
283
+ //#region src/ServiceStack.ts
284
+ var ServiceStack_exports = /* @__PURE__ */ __exportAll({
285
+ BlobReplicationSpec: () => BlobReplicationSpec,
286
+ BlobStoreServiceRegistrationSpec: () => BlobStoreServiceRegistrationSpec,
287
+ BlobStoreServiceSpec: () => BlobStoreServiceSpec,
288
+ ContactsServiceRegistrationSpec: () => ContactsServiceRegistrationSpec,
289
+ ContactsServiceSpec: () => ContactsServiceSpec,
290
+ CrossDeviceSpaceSynchronizerLayer: () => CrossDeviceSpaceSynchronizerLayer,
291
+ CrossDeviceSpaceSynchronizerService: () => CrossDeviceSpaceSynchronizerService,
292
+ CrossDeviceSpaceSynchronizerSpec: () => CrossDeviceSpaceSynchronizerSpec,
293
+ DataServiceRegistrationSpec: () => DataServiceRegistrationSpec,
294
+ DataServiceSpec: () => DataServiceSpec,
295
+ DataSpaceManagerSpec: () => DataSpaceManagerSpec,
296
+ DevicesServiceRegistrationSpec: () => DevicesServiceRegistrationSpec,
297
+ DevicesServiceSpec: () => DevicesServiceSpec,
298
+ DevtoolsHostRegistrationSpec: () => DevtoolsHostRegistrationSpec,
299
+ DevtoolsHostSpec: () => DevtoolsHostSpec,
300
+ EchoHostSpec: () => EchoHostSpec,
301
+ EdgeAgentManagerSpec: () => EdgeAgentManagerSpec,
302
+ EdgeAgentServiceRegistrationSpec: () => EdgeAgentServiceRegistrationSpec,
303
+ EdgeAgentServiceSpec: () => EdgeAgentServiceSpec,
304
+ EdgeClientsSpec: () => EdgeClientsSpec,
305
+ EdgeIdentityRecoverySpec: () => EdgeIdentityRecoverySpec,
306
+ EdgeSubductionReplicatorRegistrationSpec: () => EdgeSubductionReplicatorRegistrationSpec,
307
+ EdgeSubductionReplicatorSpec: () => EdgeSubductionReplicatorSpec,
308
+ FeedServiceRegistrationSpec: () => FeedServiceRegistrationSpec,
309
+ FeedServiceSpec: () => FeedServiceSpec,
310
+ FeedSyncer: () => FeedSyncer,
311
+ FeedSyncerLayer: () => FeedSyncerLayer,
312
+ FeedSyncerService: () => FeedSyncerService,
313
+ FeedSyncerSpec: () => FeedSyncerSpec,
314
+ HypercoreFactorySpec: () => HypercoreFactorySpec,
315
+ HypercoreStorageDirectorySpec: () => HypercoreStorageDirectorySpec,
316
+ HypercoreStoreSpec: () => HypercoreStoreSpec,
317
+ IdentityLifecycleSpec: () => IdentityLifecycleSpec,
318
+ IdentityManagerSpec: () => IdentityManagerSpec,
319
+ IdentityProviderSpec: () => IdentityProviderSpec,
320
+ IdentityServiceRegistrationSpec: () => IdentityServiceRegistrationSpec,
321
+ IdentityServiceSpec: () => IdentityServiceSpec,
322
+ InboxServiceRegistrationSpec: () => InboxServiceRegistrationSpec,
323
+ InboxServiceSpec: () => InboxServiceSpec,
324
+ InvitationFactoriesSpec: () => InvitationFactoriesSpec,
325
+ InvitationsHandlerSpec: () => InvitationsHandlerSpec,
326
+ InvitationsManagerSpec: () => InvitationsManagerSpec,
327
+ InvitationsServiceRegistrationSpec: () => InvitationsServiceRegistrationSpec,
328
+ InvitationsServiceSpec: () => InvitationsServiceSpec,
329
+ KeyringSpec: () => KeyringSpec,
330
+ LocalBlobStoreSpec: () => LocalBlobStoreSpec,
331
+ LoggingServiceRegistrationSpec: () => LoggingServiceRegistrationSpec,
332
+ LoggingServiceSpec: () => LoggingServiceSpec,
333
+ MeshReplicatorRegistrationSpec: () => MeshReplicatorRegistrationSpec,
334
+ MeshReplicatorSpec: () => MeshReplicatorSpec,
335
+ MetadataStoreSpec: () => MetadataStoreSpec,
336
+ NetworkLifecycleSpec: () => NetworkLifecycleSpec,
337
+ NetworkServiceRegistrationSpec: () => NetworkServiceRegistrationSpec,
338
+ NetworkServiceSpec: () => NetworkServiceSpec,
339
+ QueryServiceRegistrationSpec: () => QueryServiceRegistrationSpec,
340
+ QueryServiceSpec: () => QueryServiceSpec,
341
+ RpcRouterSpec: () => RpcRouterSpec,
342
+ SignalManagerSpec: () => SignalManagerSpec,
343
+ SigningContextProviderSpec: () => SigningContextProviderSpec,
344
+ SpaceManagerSpec: () => SpaceManagerSpec,
345
+ SpacesServiceRegistrationSpec: () => SpacesServiceRegistrationSpec,
346
+ SpacesServiceSpec: () => SpacesServiceSpec,
347
+ SqlServiceRegistrationSpec: () => SqlServiceRegistrationSpec,
348
+ SqlServiceSpec: () => SqlServiceSpec,
349
+ SqliteStorageSpec: () => SqliteStorageSpec,
350
+ StackReadinessSpec: () => StackReadinessSpec,
351
+ StorageLifecycleSpec: () => StorageLifecycleSpec,
352
+ StorageMigrationService: () => StorageMigrationService,
353
+ StorageMigrationSpec: () => StorageMigrationSpec,
354
+ StorageWatchdogSpec: () => StorageWatchdogSpec,
355
+ SwarmNetworkManagerSpec: () => SwarmNetworkManagerSpec,
356
+ SystemServiceRegistrationSpec: () => SystemServiceRegistrationSpec,
357
+ SystemServiceSpec: () => SystemServiceSpec,
358
+ TransportFactoryService: () => TransportFactoryService,
359
+ TransportFactorySpec: () => TransportFactorySpec,
360
+ clientServiceSpecs: () => clientServiceSpecs,
361
+ createCrossDeviceSpaceSynchronizer: () => createCrossDeviceSpaceSynchronizer,
362
+ echoHostLayer: () => echoHostLayer,
363
+ enableNetworking: () => enableNetworking,
364
+ identityProviderLayer: () => identityProviderLayer,
365
+ layerClientServices: () => layerClientServices,
366
+ registerReplicator: () => registerReplicator,
367
+ runtimePropsFromConfig: () => runtimePropsFromConfig,
368
+ storageLifecycleLayer: () => storageLifecycleLayer,
369
+ storageMigrationLayer: () => storageMigrationLayer
370
+ });
371
+ //#endregion
372
+ //#region src/Spaces.ts
373
+ var Spaces_exports = /* @__PURE__ */ __exportAll({
374
+ AuthExtension: () => AuthExtension,
375
+ AuthStatus: () => AuthStatus,
376
+ CredentialRetrieverExtension: () => CredentialRetrieverExtension,
377
+ CredentialServerExtension: () => CredentialServerExtension,
378
+ DataSpace: () => DataSpace,
379
+ DataSpaceManager: () => DataSpaceManager,
380
+ DataSpaceManagerLayer: () => DataSpaceManagerLayer,
381
+ MOCK_AUTH_PROVIDER: () => MOCK_AUTH_PROVIDER,
382
+ MOCK_AUTH_VERIFIER: () => MOCK_AUTH_VERIFIER,
383
+ SigningContextProviderLayer: () => SigningContextProviderLayer,
384
+ Space: () => Space,
385
+ SpaceArchiveWriter: () => SpaceArchiveWriter,
386
+ SpaceManager: () => SpaceManager,
387
+ SpaceManagerLayer: () => SpaceManagerLayer,
388
+ SpaceManagerService: () => SpaceManagerService,
389
+ SpaceProtocol: () => SpaceProtocol,
390
+ SpaceProtocolSession: () => SpaceProtocolSession,
391
+ SpacesServiceImpl: () => SpacesServiceImpl,
392
+ SpacesServiceLayer: () => SpacesServiceLayer,
393
+ buildDatabaseDirectoryFromObjects: () => buildDatabaseDirectoryFromObjects,
394
+ collectFeedMessages: () => collectFeedMessages,
395
+ createSigningContextProvider: () => createSigningContextProvider,
396
+ detectSpaceArchiveFormat: () => detectSpaceArchiveFormat,
397
+ extractSpaceArchive: () => extractSpaceArchive,
398
+ objJsonToObjectStructure: () => objJsonToObjectStructure,
399
+ objectStructureToObjJson: () => objectStructureToObjJson,
400
+ orderObjJsonFields: () => orderObjJsonFields,
401
+ readSerializedSpaceArchive: () => readSerializedSpaceArchive,
402
+ remainingLifetimeSeconds: () => remainingLifetimeSeconds,
403
+ writeSerializedSpaceArchive: () => writeSerializedSpaceArchive
404
+ });
405
+ //#endregion
400
406
  //#region src/Storage.ts
401
407
  var Storage_exports = /* @__PURE__ */ __exportAll({
402
408
  OPFS_SQLITE_DB_FILENAME: () => OPFS_SQLITE_DB_FILENAME,
@@ -407,7 +413,8 @@ var Storage_exports = /* @__PURE__ */ __exportAll({
407
413
  exportProfileData: () => exportProfileData,
408
414
  getSqliteProfileEntries: () => getSqliteProfileEntries,
409
415
  importProfileData: () => importProfileData,
410
- isValidSqliteDatabase: () => isValidSqliteDatabase
416
+ isValidSqliteDatabase: () => isValidSqliteDatabase,
417
+ storageWatchdogLayer: () => storageWatchdogLayer
411
418
  });
412
419
  //#endregion
413
420
  //#region src/System.ts
@@ -482,6 +489,7 @@ var makeWorkerRuntime = ({ configProvider, requestShutdown = Effect.void, automa
482
489
  /** Wipes persisted storage over a SQLite layer of its own, since the stack's is gone by the time a reset gets here. */
483
490
  yield* Hook.on(WipingStorage, () => wipeSqliteStorage.pipe(Effect.provide(sqlite), Effect.orDie));
484
491
  yield* Hook.on(Reset, () => requestShutdown);
492
+ yield* Hook.on(StorageStuck, () => requestShutdown);
485
493
  yield* Hook.on(SessionClosed, Effect.fn("WorkerRuntime.onSessionClosed")(function* ({ session }) {
486
494
  sessions.delete(session);
487
495
  if (sessions.size === 0) yield* requestShutdown;
@@ -491,7 +499,7 @@ var makeWorkerRuntime = ({ configProvider, requestShutdown = Effect.void, automa
491
499
  log("starting...", void 0, {
492
500
  "~LogMeta": "~LogMeta",
493
501
  F: __dxlog_file,
494
- L: 185,
502
+ L: 187,
495
503
  S: this
496
504
  });
497
505
  const config = yield* configProvider;
@@ -500,7 +508,7 @@ var makeWorkerRuntime = ({ configProvider, requestShutdown = Effect.void, automa
500
508
  log("worker-runtime: building client services stack", void 0, {
501
509
  "~LogMeta": "~LogMeta",
502
510
  F: __dxlog_file,
503
- L: 192,
511
+ L: 194,
504
512
  S: this
505
513
  });
506
514
  const stackContext = yield* Layer.build(layerClientServices({
@@ -514,7 +522,7 @@ var makeWorkerRuntime = ({ configProvider, requestShutdown = Effect.void, automa
514
522
  log("worker-runtime: stack built, opening", void 0, {
515
523
  "~LogMeta": "~LogMeta",
516
524
  F: __dxlog_file,
517
- L: 215,
525
+ L: 217,
518
526
  S: this
519
527
  });
520
528
  yield* Effect.gen(function* () {
@@ -524,14 +532,14 @@ var makeWorkerRuntime = ({ configProvider, requestShutdown = Effect.void, automa
524
532
  log("worker-runtime: stack opened, signalling ready", void 0, {
525
533
  "~LogMeta": "~LogMeta",
526
534
  F: __dxlog_file,
527
- L: 221,
535
+ L: 223,
528
536
  S: this
529
537
  });
530
538
  ready.wake(void 0);
531
539
  log("started", void 0, {
532
540
  "~LogMeta": "~LogMeta",
533
541
  F: __dxlog_file,
534
- L: 223,
542
+ L: 225,
535
543
  S: this
536
544
  });
537
545
  const [identityService, devicesService] = yield* Effect.all([makeInProcessClient(IdentityService.Rpcs, yield* built.getServiceResolver().resolve(IdentityService.Tag, {}).pipe(Scope.provide(stackScope))), makeInProcessClient(DevicesService.Rpcs, yield* built.getServiceResolver().resolve(DevicesService.Tag, {}).pipe(Scope.provide(stackScope)))]);
@@ -545,7 +553,7 @@ var makeWorkerRuntime = ({ configProvider, requestShutdown = Effect.void, automa
545
553
  log.info("worker-runtime: boot complete, scheduling networking start", { delay: EDGE_NETWORKING_START_DELAY }, {
546
554
  "~LogMeta": "~LogMeta",
547
555
  F: __dxlog_file,
548
- L: 249,
556
+ L: 251,
549
557
  S: this
550
558
  });
551
559
  const networkingFiber = yield* Effect.forkDetach(Effect.gen(function* () {
@@ -553,7 +561,7 @@ var makeWorkerRuntime = ({ configProvider, requestShutdown = Effect.void, automa
553
561
  log("worker-runtime: starting networking", void 0, {
554
562
  "~LogMeta": "~LogMeta",
555
563
  F: __dxlog_file,
556
- L: 255,
564
+ L: 257,
557
565
  S: this
558
566
  });
559
567
  yield* enableNetworking;
@@ -569,7 +577,7 @@ var makeWorkerRuntime = ({ configProvider, requestShutdown = Effect.void, automa
569
577
  log.error("starting", error, {
570
578
  "~LogMeta": "~LogMeta",
571
579
  F: __dxlog_file,
572
- L: 269,
580
+ L: 271,
573
581
  S: this
574
582
  });
575
583
  yield* closeStack;
@@ -579,7 +587,7 @@ var makeWorkerRuntime = ({ configProvider, requestShutdown = Effect.void, automa
579
587
  log("opening session...", void 0, {
580
588
  "~LogMeta": "~LogMeta",
581
589
  F: __dxlog_file,
582
- L: 281,
590
+ L: 283,
583
591
  S: this
584
592
  });
585
593
  const rtcService = yield* makeRtcServiceClientOverProtocol(systemProtocol);
@@ -592,14 +600,14 @@ var makeWorkerRuntime = ({ configProvider, requestShutdown = Effect.void, automa
592
600
  yield* Effect.addFinalizer(() => Hook.emit(SessionClosed, { session }).pipe(Effect.provideService(Hook.Controller, controller), Effect.catchCause((cause) => Effect.sync(() => log.catch(cause, void 0, {
593
601
  "~LogMeta": "~LogMeta",
594
602
  F: __dxlog_file,
595
- L: 308,
603
+ L: 310,
596
604
  S: this
597
605
  })))));
598
606
  if (automaticallyConnectWebrtc) yield* reconnectWebrtc;
599
607
  log("session opened", void 0, {
600
608
  "~LogMeta": "~LogMeta",
601
609
  F: __dxlog_file,
602
- L: 316,
610
+ L: 318,
603
611
  S: this
604
612
  });
605
613
  return session;
@@ -609,7 +617,7 @@ var makeWorkerRuntime = ({ configProvider, requestShutdown = Effect.void, automa
609
617
  invariant(stack, "worker runtime not started", {
610
618
  "~LogMeta": "~LogMeta",
611
619
  F: __dxlog_file,
612
- L: 322,
620
+ L: 324,
613
621
  S: this,
614
622
  A: ["stack", "'worker runtime not started'"]
615
623
  });
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":[],"sources":["../../src/Agents.ts","../../src/Devtools.ts","../../src/internal/diagnostics/diagnostics-collector.ts","../../src/Diagnostics.ts","../../src/IdentityManager.ts","../../src/Invitations.ts","../../src/Metadata.ts","../../src/ServiceStack.ts","../../src/Spaces.ts","../../src/internal/storage/util.ts","../../src/internal/storage/storage.ts","../../src/internal/storage/profile-archive.ts","../../src/internal/storage/profile-archive-sqlite.ts","../../src/Storage.ts","../../src/System.ts","../../src/internal/worker/events.ts","../../src/internal/worker/worker-runtime.ts","../../src/WorkerRuntime.ts"],"sourcesContent":["//\n// Copyright 2026 DXOS.org\n//\n\n// @import-as-namespace\n\nexport * from './internal/agents/index.ts';\n","//\n// Copyright 2026 DXOS.org\n//\n\n// @import-as-namespace\n\nexport * from './internal/devtools/index.ts';\n","//\n// Copyright 2024 DXOS.org\n//\n\nimport { type ClientServicesProvider } from '@dxos/client-protocol';\nimport { type Config } from '@dxos/config';\nimport { SystemService } from '@dxos/protocols/rpc';\nimport { type JsonKeyOptions, jsonKeyReplacer } from '@dxos/util';\n\nconst GET_DIAGNOSTICS_RPC_TIMEOUT = 10_000;\n\nexport class DiagnosticsCollector {\n public static async collect(\n config: Config | Config[] = [],\n services: ClientServicesProvider | null = null,\n options: JsonKeyOptions = {},\n ): Promise<any> {\n const serviceDiagnostics = await services?.services?.SystemService?.getDiagnostics(\n {\n keys: options.humanize\n ? SystemService.KeyOption.enums.HUMANIZE\n : options.truncate\n ? SystemService.KeyOption.enums.TRUNCATE\n : undefined,\n },\n { timeout: GET_DIAGNOSTICS_RPC_TIMEOUT },\n );\n\n const clientDiagnostics = {\n config,\n };\n\n const diagnostics = { client: clientDiagnostics, services: serviceDiagnostics ?? undefined };\n\n return JSON.parse(JSON.stringify(diagnostics, jsonKeyReplacer(options)));\n }\n}\n","//\n// Copyright 2026 DXOS.org\n//\n\n// @import-as-namespace\n\nexport * from './internal/diagnostics/index.ts';\n","//\n// Copyright 2026 DXOS.org\n//\n\n// @import-as-namespace\n\nexport * from './internal/identity/index.ts';\n","//\n// Copyright 2026 DXOS.org\n//\n\n// @import-as-namespace\n\nexport * from './internal/invitations/index.ts';\n","//\n// Copyright 2026 DXOS.org\n//\n\n// @import-as-namespace\n\nexport * from './internal/metadata/index.ts';\n","//\n// Copyright 2026 DXOS.org\n//\n\n// @import-as-namespace\n\nexport * from './internal/services/index.ts';\n","//\n// Copyright 2026 DXOS.org\n//\n\n// @import-as-namespace\n\n// The space subsystem is one namespace: `internal/space` is the transport-level space and its\n// manager, `internal/spaces` the data spaces above it, and `internal/space-export` their archive\n// format. Separate facades produced sibling names a reader cannot tell apart.\nexport * from './internal/space/index.ts';\nexport * from './internal/spaces/index.ts';\nexport * from './internal/space-export/index.ts';\n","//\n// Copyright 2024 DXOS.org\n//\n\nimport { DX_DATA } from '@dxos/client-protocol';\nimport { type Runtime_Client_Storage, Runtime_Client_Storage_StorageDriver } from '@dxos/protocols/buf/dxos/config_pb';\nimport { isNode } from '@dxos/util';\n\nexport const getRootPath = (config: Runtime_Client_Storage) => {\n const { dataRoot = isNode() ? DX_DATA : 'dxos/storage' } = config ?? {};\n return `${dataRoot}/`;\n};\n\nexport const isPersistent = (config: Runtime_Client_Storage) => {\n const { persistent = false } = config ?? {};\n return (\n (config.dataStore !== undefined && config.dataStore !== Runtime_Client_Storage_StorageDriver.RAM) || persistent\n );\n};\n","//\n// Copyright 2023 DXOS.org\n//\n\nimport { InvalidConfigError } from '@dxos/protocols';\nimport {\n type Runtime_Client_Storage,\n Runtime_Client_Storage_StorageDriver as StorageDriver,\n} from '@dxos/protocols/buf/dxos/config_pb';\nimport { StorageType, createStorage } from '@dxos/random-access-storage';\n\nimport { getRootPath } from './util.ts';\n\n// TODO(burdon): Factor out.\nexport const createStorageObjects = (config: Runtime_Client_Storage) => {\n const { persistent = false, keyStore, dataStore } = config ?? {};\n if (persistent && dataStore === StorageDriver.RAM) {\n throw new InvalidConfigError({ message: 'RAM storage cannot be used in persistent mode.' });\n }\n if (!persistent && dataStore !== undefined && dataStore !== StorageDriver.RAM) {\n throw new InvalidConfigError({ message: 'Cannot use a persistent storage in not persistent mode.' });\n }\n if (persistent && keyStore === StorageDriver.RAM) {\n throw new InvalidConfigError({ message: 'RAM key storage cannot be used in persistent mode.' });\n }\n if (!persistent && keyStore !== StorageDriver.RAM && keyStore !== undefined) {\n throw new InvalidConfigError({ message: 'Cannot use a persistent key storage in not persistent mode.' });\n }\n\n return {\n storage: createStorage({\n type: persistent ? toStorageType(dataStore) : StorageType.RAM,\n root: getRootPath(config),\n }),\n };\n};\n\nconst toStorageType = (type: StorageDriver | undefined): StorageType | undefined => {\n switch (type) {\n case undefined:\n return undefined;\n case StorageDriver.RAM:\n return StorageType.RAM;\n case StorageDriver.CHROME:\n return StorageType.CHROME;\n case StorageDriver.FIREFOX:\n return StorageType.FIREFOX;\n case StorageDriver.IDB:\n return StorageType.IDB;\n case StorageDriver.NODE:\n return StorageType.NODE;\n case StorageDriver.WEBFS:\n return StorageType.WEBFS;\n default:\n throw new Error(`Invalid storage type: ${StorageDriver[type]}`);\n }\n};\n","//\n// Copyright 2024 DXOS.org\n//\n\nimport { cbor } from '@automerge/automerge-repo';\n\nimport { invariant } from '@dxos/invariant';\nimport { log } from '@dxos/log';\nimport { type ProfileArchive, ProfileArchiveEntryType } from '@dxos/protocols';\nimport type { Storage } from '@dxos/random-access-storage';\nimport { arrayToBuffer } from '@dxos/util';\n\nexport const encodeProfileArchive = (profile: ProfileArchive): Uint8Array => cbor.encode(profile);\n\nexport const decodeProfileArchive = (data: Uint8Array): ProfileArchive => cbor.decode(data);\n\nexport const exportProfileData = async ({ storage }: { storage: Storage }): Promise<ProfileArchive> => {\n const archive: ProfileArchive = { storage: [], meta: { timestamp: new Date().toISOString() } };\n\n const directory = await storage.createDirectory();\n const files = await directory.list();\n\n log.info('begin exporting files', { count: files.length });\n for (const filename of files) {\n const file = await directory.getOrCreateFile(filename);\n const { size } = await file.stat();\n const data = await file.read(0, size);\n archive.storage.push({\n type: ProfileArchiveEntryType.FILE,\n key: filename,\n value: data,\n });\n }\n log.info('done exporting files', { count: files.length });\n\n return archive;\n};\n\nexport const importProfileData = async ({ storage }: { storage: Storage }, archive: ProfileArchive): Promise<void> => {\n for (const entry of archive.storage) {\n switch (entry.type) {\n case ProfileArchiveEntryType.FILE: {\n const directory = await storage.createDirectory();\n invariant(typeof entry.key === 'string', 'Invalid key type');\n const file = await directory.getOrCreateFile(entry.key);\n invariant(entry.value instanceof Uint8Array, 'Invalid value type');\n await file.write(0, arrayToBuffer(entry.value));\n await file.close();\n break;\n }\n case ProfileArchiveEntryType.KEY_VALUE:\n // Legacy LevelDB key/value entries are no longer supported (LevelDB was removed).\n log.warn('Skipping legacy KEY_VALUE entry (LevelDB storage removed)', { key: entry.key });\n break;\n case ProfileArchiveEntryType.SQLITE_DATABASE:\n log.warn('Skipping SQLITE_DATABASE entry (import via OPFS recovery API)', { key: entry.key });\n break;\n default:\n throw new Error(`Invalid entry type: ${entry.type}`);\n }\n }\n\n log.info('done importing files');\n};\n","//\n// Copyright 2026 DXOS.org\n//\n\nimport { type ProfileArchive, ProfileArchiveEntryType } from '@dxos/protocols';\n\n/** Default OPFS SQLite database name used by Composer recovery and the OPFS worker. */\nexport const OPFS_SQLITE_DB_FILENAME = 'DXOS' as const;\n\nconst SQLITE_MAGIC = new TextEncoder().encode('SQLite format 3\\u0000');\n\n/**\n * Returns true when `bytes` begins with the SQLite 3 file header.\n */\nexport const isValidSqliteDatabase = (bytes: Uint8Array): boolean => {\n if (bytes.byteLength < SQLITE_MAGIC.byteLength) {\n return false;\n }\n for (let index = 0; index < SQLITE_MAGIC.byteLength; index++) {\n if (bytes[index] !== SQLITE_MAGIC[index]) {\n return false;\n }\n }\n return true;\n};\n\nconst coerceToUint8Array = (value: unknown): Uint8Array | undefined => {\n if (value instanceof Uint8Array) {\n return value;\n }\n if (value instanceof ArrayBuffer) {\n return new Uint8Array(value);\n }\n if (Array.isArray(value)) {\n return new Uint8Array(value);\n }\n return undefined;\n};\n\nexport type SqliteProfileEntry = {\n opfsFilename: string;\n database: Uint8Array;\n};\n\nexport type CreateSqliteProfileArchiveOptions = {\n /** Host where the export was created (stored in archive meta). */\n origin?: string;\n};\n\n/**\n * Build a profile archive containing a single validated SQLITE_DATABASE entry.\n */\nexport const createSqliteProfileArchive = (\n opfsFilename: string,\n database: Uint8Array,\n options?: CreateSqliteProfileArchiveOptions,\n): ProfileArchive => {\n if (!isValidSqliteDatabase(database)) {\n throw new Error('Invalid SQLite database (missing SQLite format 3 header)');\n }\n\n return {\n meta: {\n timestamp: new Date().toISOString(),\n ...(options?.origin ? { origin: options.origin } : {}),\n },\n storage: [\n {\n type: ProfileArchiveEntryType.SQLITE_DATABASE,\n key: opfsFilename,\n value: database,\n },\n ],\n };\n};\n\n/**\n * Extract validated SQLITE_DATABASE entries from a profile archive.\n */\nexport const getSqliteProfileEntries = (archive: ProfileArchive): SqliteProfileEntry[] => {\n const entries: SqliteProfileEntry[] = [];\n\n for (const entry of archive.storage) {\n if (entry.type !== ProfileArchiveEntryType.SQLITE_DATABASE) {\n continue;\n }\n if (typeof entry.key !== 'string') {\n continue;\n }\n\n const database = coerceToUint8Array(entry.value);\n if (!database || !isValidSqliteDatabase(database)) {\n continue;\n }\n\n entries.push({ opfsFilename: entry.key, database });\n }\n\n return entries;\n};\n","//\n// Copyright 2026 DXOS.org\n//\n\n// @import-as-namespace\n\nexport * from './internal/storage/index.ts';\n","//\n// Copyright 2026 DXOS.org\n//\n\n// @import-as-namespace\n\nexport * from './internal/system/index.ts';\n","//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Hook from '@dxos/effect/Hook';\n\nimport { type WorkerSession } from './worker-runtime.ts';\n\n/** A tab session has closed, whether by the tab, the client, or its liveness lock releasing. */\nexport const SessionClosed = Hook.make<{ session: WorkerSession }>()('client-services/worker/SessionClosed');\n","//\n// Copyright 2022 DXOS.org\n//\n\nimport * as Cause from 'effect/Cause';\nimport * as Context from 'effect/Context';\nimport * as Effect from 'effect/Effect';\nimport * as Exit from 'effect/Exit';\nimport * as Fiber from 'effect/Fiber';\nimport * as Layer from 'effect/Layer';\nimport * as Reactivity from 'effect/reactivity/Reactivity';\nimport type * as RpcClient from 'effect/rpc/RpcClient';\nimport * as RpcServer from 'effect/rpc/RpcServer';\nimport * as Scope from 'effect/Scope';\nimport type * as SqlClient from 'effect/sql/SqlClient';\n\nimport { Trigger } from '@dxos/async';\nimport { PROXY_CONNECTION_TIMEOUT, makeRtcServiceClientOverProtocol } from '@dxos/client-protocol';\nimport { LayerStack } from '@dxos/compute-runtime';\nimport { type Config, ConfigService } from '@dxos/config';\nimport * as Hook from '@dxos/effect/Hook';\nimport { invariant } from '@dxos/invariant';\nimport { log } from '@dxos/log';\nimport { MemorySignalManager, MemorySignalManagerContext, setIdentityTags } from '@dxos/messaging';\nimport { RtcTransportProxyFactory } from '@dxos/network-manager';\nimport { WorkerRuntimeStartError, makeInProcessClient } from '@dxos/protocols';\nimport { DevicesService, IdentityService, type RTCService } from '@dxos/protocols/rpc';\nimport { RpcRouter } from '@dxos/rpc';\nimport * as SqlExport from '@dxos/sql-sqlite/SqlExport';\nimport * as SqliteClient from '@dxos/sql-sqlite/SqliteClient';\n\nimport * as Events from '../../Events.ts';\nimport * as SqliteStorage from '../../SqliteStorage.ts';\nimport { enableNetworking, layerClientServices } from '../services/index.ts';\nimport { SessionClosed } from './events.ts';\n\n// Session transports are effect-rpc protocol layers handed over by the worker framework: appProtocol\n// serves the client services; systemProtocol carries the reverse-direction\n// RTCService (worker→tab).\nexport type CreateSessionProps = {\n /** Forward-direction (tab→worker) protocol over which the worker serves the client services. */\n appProtocol: RpcServer.Protocol['Service'];\n /** Reverse-direction (worker→tab) protocol serving the tab's WebRTC `RTCService`; the worker is the client. */\n systemProtocol: RpcClient.Protocol['Service'];\n};\n\n/** A tab connection within the worker; it lives as long as the scope `createSession` ran in. */\nexport interface WorkerSession {\n /** The tab's WebRTC service, which the worker's network stack proxies through. */\n readonly rtcService: RTCService.Client;\n}\n\n/**\n * Grace period between \"worker booted\" and the first edge dial. wa-sqlite runs in-process on this\n * thread, so the dial, its auth-header request, and the replication behind it contend with the boot\n * RPCs the tab is waiting on — on a document-heavy profile the session handshake loses that race and\n * the client reports a connect timeout. Yielding lets the queued handshake drain first; replication\n * then proceeds behind a live session. The stack exposes the capability; the embedder decides the timing.\n */\nconst EDGE_NETWORKING_START_DELAY = '300 millis';\n\nexport type WorkerRuntimeOptions = {\n configProvider: Effect.Effect<Config>;\n /** The runtime wants to terminate (its last session closed, or a reset finished); the embedder closes its scope. */\n requestShutdown?: Effect.Effect<void>;\n /**\n * @default true\n */\n automaticallyConnectWebrtc?: boolean;\n\n /**\n * Optional SQLite layer for Effect. Defaults to LocalSqliteOpfsLayer.\n * For testing in Node.js, use `layerMemory` from `@dxos/sql-sqlite/Platform`.\n */\n sqliteLayer?: Layer.Layer<SqlClient.SqlClient | SqlExport.SqlExport, unknown>;\n\n /**\n * Shared context for the in-memory signal manager used when edge signaling is off; tests pass one\n * so several runtimes can see each other.\n */\n memorySignalManagerContext?: MemorySignalManagerContext;\n};\n\n/**\n * Effect service surface for the dedicated-worker runtime.\n *\n * Manages connections from proxies (in tabs): tabs make requests to the client services stack, and\n * provide a WebRTC gateway. The runtime lives as long as the scope it was made in.\n */\nexport interface WorkerRuntimeService {\n /** The running stack; resolve a tag through it to reach a component or RPC handler. */\n readonly stack: () => LayerStack.LayerStack;\n /** Open a tab session over the supplied effect-rpc protocols for the life of the scope, registered for WebRTC bridging. */\n readonly createSession: (props: CreateSessionProps) => Effect.Effect<WorkerSession, never, Scope.Scope>;\n /** Route WebRTC through the given session (or disconnect when `undefined`). */\n readonly connectWebrtc: (session: WorkerSession | undefined) => Effect.Effect<void>;\n}\n\n/**\n * Context tag for the dedicated-worker runtime service. Provided by {@link layerWorkerRuntime}.\n */\nexport class WorkerRuntime extends Context.Service<WorkerRuntime, WorkerRuntimeService>()(\n '@dxos/client-services/WorkerRuntime',\n) {}\n\n/**\n * Builds and opens the worker runtime: {@link layerClientServices} over the worker's SQLite layer.\n * A startup error rejects the readiness gate, closes the stack and fails the effect, so the worker\n * reports it instead of advertising `ready`. Closing the scope tears everything down.\n */\nexport const makeWorkerRuntime = ({\n configProvider,\n requestShutdown = Effect.void,\n automaticallyConnectWebrtc = true,\n sqliteLayer,\n memorySignalManagerContext,\n}: WorkerRuntimeOptions): Effect.Effect<WorkerRuntimeService, WorkerRuntimeStartError, Scope.Scope> =>\n Effect.gen(function* () {\n // Held so effects that outlive this construction — a session finalizer, which the framework runs\n // when it closes a session scope — still reach the controller.\n const controller = yield* Hook.Controller;\n const transportFactory = new RtcTransportProxyFactory();\n const ready = new Trigger<Error | undefined>();\n const sessions = new Set<WorkerSession>();\n const signalMetadataTags: any = {\n runtime: 'worker-runtime',\n origin: typeof location !== 'undefined' ? location.origin : 'unknown',\n };\n const scope = yield* Effect.scope;\n\n let sessionForNetworking: WorkerSession | undefined;\n /** Owns the built stack; a reset closes it early, otherwise it closes with the runtime scope. */\n const stackScope = yield* Scope.fork(scope);\n let stack: LayerStack.LayerStack | undefined;\n\n if (sqliteLayer) {\n log.warn('Using testing SQLite layer');\n }\n\n const sqlite = (sqliteLayer ?? LocalSqliteOpfsLayer).pipe(Layer.provideMerge(Reactivity.layer), Layer.orDie);\n\n const closeStack = Effect.gen(function* () {\n stack = undefined;\n yield* Scope.close(stackScope, Exit.void);\n });\n\n const connectRtc = (session: WorkerSession | undefined): void => {\n sessionForNetworking = session;\n transportFactory.setRtcService(session?.rtcService);\n };\n\n // Selects one of the existing sessions for WebRTC networking.\n const reconnectWebrtc = Effect.sync(() => {\n log('reconnecting webrtc...');\n // Drop the current session if it has since closed.\n if (sessionForNetworking && !sessions.has(sessionForNetworking)) {\n sessionForNetworking = undefined;\n }\n if (!sessionForNetworking) {\n connectRtc(Array.from(sessions).find((session) => session.rtcService));\n }\n });\n\n // The runtime's own subscriptions: the reset chain and session bookkeeping.\n yield* Hook.on(Events.Closing, () => closeStack);\n /** Wipes persisted storage over a SQLite layer of its own, since the stack's is gone by the time a reset gets here. */\n yield* Hook.on(Events.WipingStorage, () =>\n SqliteStorage.wipeSqliteStorage.pipe(Effect.provide(sqlite), Effect.orDie),\n );\n yield* Hook.on(Events.Reset, () => requestShutdown);\n yield* Hook.on(\n SessionClosed,\n Effect.fn('WorkerRuntime.onSessionClosed')(function* ({ session }) {\n sessions.delete(session);\n if (sessions.size === 0) {\n // Terminate the worker when all sessions are closed.\n yield* requestShutdown;\n } else if (automaticallyConnectWebrtc) {\n yield* reconnectWebrtc;\n }\n }),\n );\n\n yield* Effect.gen(function* () {\n log('starting...');\n const config = yield* configProvider;\n const observabilityGroup = config.get('runtime.client.observabilityGroup');\n if (observabilityGroup) {\n signalMetadataTags.group = observabilityGroup;\n }\n\n log('worker-runtime: building client services stack');\n // Building the layer also builds its eager specs, so the rpc registrations are in place before\n // the events below run.\n const stackContext = yield* Layer.build(\n layerClientServices({\n // The dial is driven below once boot has drained, not on stack open.\n autoConnect: false,\n // Auto-activate spaces that were previously active after leader changeover.\n runtimeProps: { autoActivateSpaces: true },\n // Edge signaling is created by the platform layer from the edge connection; otherwise fall\n // back to an in-memory manager (KUBE `WebsocketSignalManager` removed).\n signalManager: config.get('runtime.client.edgeFeatures')?.signaling\n ? undefined\n : new MemorySignalManager(memorySignalManagerContext ?? new MemorySignalManagerContext()),\n transportFactory,\n }).pipe(\n Layer.provide(sqlite),\n Layer.provide(Layer.succeed(ConfigService, config)),\n Layer.provide(Layer.succeed(Hook.Controller, controller)),\n ),\n ).pipe(Scope.provide(stackScope));\n const built = Context.get(stackContext, LayerStack.Service);\n stack = built;\n log('worker-runtime: stack built, opening');\n // `StackOpened` resolves once every handler the cascade triggered has run.\n yield* Effect.gen(function* () {\n yield* Hook.emit(Events.Opening, undefined);\n yield* Hook.emit(Events.StackOpened, undefined);\n }).pipe(Effect.provideService(Hook.Controller, controller));\n log('worker-runtime: stack opened, signalling ready');\n ready.wake(undefined);\n log('started');\n\n // Bridge the identity/devices Handlers to the effect-rpc client surface in-process.\n const [identityService, devicesService] = yield* Effect.all([\n makeInProcessClient(\n IdentityService.Rpcs,\n yield* built.getServiceResolver().resolve(IdentityService.Tag, {}).pipe(Scope.provide(stackScope)),\n ),\n makeInProcessClient(\n DevicesService.Rpcs,\n yield* built.getServiceResolver().resolve(DevicesService.Tag, {}).pipe(Scope.provide(stackScope)),\n ),\n ]);\n setIdentityTags({\n identityService,\n devicesService,\n setTag: (key: string, value: string) => {\n signalMetadataTags[key] = value;\n },\n });\n\n // Boot is done: outbound traffic can no longer starve the session handshake the tab is\n // waiting on. Anchored here rather than in the stack so the gate opens only after the whole\n // worker start sequence has drained, not just the stack open. The grace period yields the\n // thread so any RPC already queued behind this turn is served before the dial and its\n // auth-header request start competing for it.\n log.info('worker-runtime: boot complete, scheduling networking start', {\n delay: EDGE_NETWORKING_START_DELAY,\n });\n const networkingFiber = yield* Effect.forkDetach(\n Effect.gen(function* () {\n yield* Effect.sleep(EDGE_NETWORKING_START_DELAY);\n log('worker-runtime: starting networking');\n yield* enableNetworking;\n }).pipe(Effect.provideService(Hook.Controller, controller)),\n );\n yield* Effect.addFinalizer(() => Fiber.interrupt(networkingFiber));\n }).pipe(\n Effect.catchCause((cause) =>\n Effect.gen(function* () {\n const squashed = Cause.squash(cause);\n const error = new WorkerRuntimeStartError({\n message: squashed instanceof Error ? squashed.message : String(squashed),\n cause: squashed,\n });\n ready.wake(error);\n log.error('starting', error);\n yield* closeStack;\n return yield* Effect.fail(error);\n }),\n ),\n );\n\n const createSession = ({\n appProtocol,\n systemProtocol,\n }: CreateSessionProps): Effect.Effect<WorkerSession, never, Scope.Scope> =>\n Effect.gen(function* () {\n log('opening session...');\n const rtcService = yield* makeRtcServiceClientOverProtocol(systemProtocol);\n\n // Serve once the runtime is ready; the handlers come from the stack's tags.\n const error = yield* Effect.promise(() => ready.wait({ timeout: PROXY_CONNECTION_TIMEOUT }));\n if (error || !stack) {\n return yield* Effect.die(error ?? new Error('worker runtime stack is not available'));\n }\n // Every service registered itself with the stack's router; the session only attaches its\n // transport, so adding a service never touches this code.\n const router = yield* stack\n .getServiceResolver()\n .resolve(RpcRouter.RpcRouter, {})\n .pipe(Effect.orDie, Effect.scoped);\n yield* Layer.build(\n RpcRouter.layerTransport.pipe(\n Layer.provide(Layer.succeed(RpcServer.Protocol, appProtocol)),\n Layer.provide(Layer.succeed(RpcRouter.RpcRouter, router)),\n ),\n );\n\n const session: WorkerSession = { rtcService };\n sessions.add(session);\n yield* Effect.addFinalizer(() =>\n Hook.emit(SessionClosed, { session }).pipe(\n Effect.provideService(Hook.Controller, controller),\n // A subscriber failing must not keep the transport open.\n Effect.catchCause((cause) => Effect.sync(() => log.catch(cause))),\n ),\n );\n\n if (automaticallyConnectWebrtc) {\n yield* reconnectWebrtc;\n }\n\n log('session opened');\n return session;\n });\n\n return {\n stack: () => {\n invariant(stack, 'worker runtime not started');\n return stack;\n },\n createSession,\n connectWebrtc: (session) => Effect.sync(() => connectRtc(session)),\n } satisfies WorkerRuntimeService;\n }).pipe(Effect.provide(Hook.controllerLayer));\n\n/**\n * Layer providing the {@link WorkerRuntime} service; the runtime lives as long as the layer.\n */\nexport const layerWorkerRuntime = (\n options: WorkerRuntimeOptions,\n): Layer.Layer<WorkerRuntime, WorkerRuntimeStartError> => Layer.effect(WorkerRuntime, makeWorkerRuntime(options));\n\nconst DB_NAME = 'DXOS';\n\n/**\n * SqlExport layer that wraps SqliteClient to provide export functionality.\n */\nconst SqlExportLayer: Layer.Layer<SqlExport.SqlExport, never, SqliteClient.SqliteClient> = Layer.effect(\n SqlExport.SqlExport,\n Effect.gen(function* () {\n const sql = yield* SqliteClient.SqliteClient;\n return {\n export: sql.export,\n } satisfies SqlExport.Service;\n }),\n);\n\n/**\n * Local SQLite layer for the worker.\n * Uses in-process OPFS via {@link SqliteClient.layerOpfs} (no MessagePort).\n * NOTE: Only usable within a worker.\n */\nconst LocalSqliteOpfsLayer = SqlExportLayer.pipe(\n Layer.provideMerge(SqliteClient.layerOpfs({ dbName: DB_NAME })),\n Layer.provideMerge(Reactivity.layer),\n);\n","//\n// Copyright 2026 DXOS.org\n//\n\n// @import-as-namespace\n\nexport * from './internal/worker/index.ts';\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","names":["StorageDriver","__dxlog_file","Events.Closing","Events.WipingStorage","Events.Reset","Events.StorageStuck","Events.Opening","Events.StackOpened"],"sources":["../../src/Agents.ts","../../src/Devtools.ts","../../src/internal/diagnostics/diagnostics-collector.ts","../../src/Diagnostics.ts","../../src/IdentityManager.ts","../../src/Invitations.ts","../../src/Metadata.ts","../../src/internal/storage/util.ts","../../src/internal/storage/storage.ts","../../src/internal/storage/profile-archive.ts","../../src/internal/storage/profile-archive-sqlite.ts","../../src/ServiceStack.ts","../../src/Spaces.ts","../../src/Storage.ts","../../src/System.ts","../../src/internal/worker/events.ts","../../src/internal/worker/worker-runtime.ts","../../src/WorkerRuntime.ts"],"sourcesContent":["//\n// Copyright 2026 DXOS.org\n//\n\n// @import-as-namespace\n\nexport * from './internal/agents/index.ts';\n","//\n// Copyright 2026 DXOS.org\n//\n\n// @import-as-namespace\n\nexport * from './internal/devtools/index.ts';\n","//\n// Copyright 2024 DXOS.org\n//\n\nimport { type ClientServicesProvider } from '@dxos/client-protocol';\nimport { type Config } from '@dxos/config';\nimport { SystemService } from '@dxos/protocols/rpc';\nimport { type JsonKeyOptions, jsonKeyReplacer } from '@dxos/util';\n\nconst GET_DIAGNOSTICS_RPC_TIMEOUT = 10_000;\n\nexport class DiagnosticsCollector {\n public static async collect(\n config: Config | Config[] = [],\n services: ClientServicesProvider | null = null,\n options: JsonKeyOptions = {},\n ): Promise<any> {\n const serviceDiagnostics = await services?.services?.SystemService?.getDiagnostics(\n {\n keys: options.humanize\n ? SystemService.KeyOption.enums.HUMANIZE\n : options.truncate\n ? SystemService.KeyOption.enums.TRUNCATE\n : undefined,\n },\n { timeout: GET_DIAGNOSTICS_RPC_TIMEOUT },\n );\n\n const clientDiagnostics = {\n config,\n };\n\n const diagnostics = { client: clientDiagnostics, services: serviceDiagnostics ?? undefined };\n\n return JSON.parse(JSON.stringify(diagnostics, jsonKeyReplacer(options)));\n }\n}\n","//\n// Copyright 2026 DXOS.org\n//\n\n// @import-as-namespace\n\nexport * from './internal/diagnostics/index.ts';\n","//\n// Copyright 2026 DXOS.org\n//\n\n// @import-as-namespace\n\nexport * from './internal/identity/index.ts';\n","//\n// Copyright 2026 DXOS.org\n//\n\n// @import-as-namespace\n\nexport * from './internal/invitations/index.ts';\n","//\n// Copyright 2026 DXOS.org\n//\n\n// @import-as-namespace\n\nexport * from './internal/metadata/index.ts';\n","//\n// Copyright 2024 DXOS.org\n//\n\nimport { DX_DATA } from '@dxos/client-protocol';\nimport { type Runtime_Client_Storage, Runtime_Client_Storage_StorageDriver } from '@dxos/protocols/buf/dxos/config_pb';\nimport { isNode } from '@dxos/util';\n\nexport const getRootPath = (config: Runtime_Client_Storage) => {\n const { dataRoot = isNode() ? DX_DATA : 'dxos/storage' } = config ?? {};\n return `${dataRoot}/`;\n};\n\nexport const isPersistent = (config: Runtime_Client_Storage) => {\n const { persistent = false } = config ?? {};\n return (\n (config.dataStore !== undefined && config.dataStore !== Runtime_Client_Storage_StorageDriver.RAM) || persistent\n );\n};\n","//\n// Copyright 2023 DXOS.org\n//\n\nimport { InvalidConfigError } from '@dxos/protocols';\nimport {\n type Runtime_Client_Storage,\n Runtime_Client_Storage_StorageDriver as StorageDriver,\n} from '@dxos/protocols/buf/dxos/config_pb';\nimport { StorageType, createStorage } from '@dxos/random-access-storage';\n\nimport { getRootPath } from './util.ts';\n\n// TODO(burdon): Factor out.\nexport const createStorageObjects = (config: Runtime_Client_Storage) => {\n const { persistent = false, keyStore, dataStore } = config ?? {};\n if (persistent && dataStore === StorageDriver.RAM) {\n throw new InvalidConfigError({ message: 'RAM storage cannot be used in persistent mode.' });\n }\n if (!persistent && dataStore !== undefined && dataStore !== StorageDriver.RAM) {\n throw new InvalidConfigError({ message: 'Cannot use a persistent storage in not persistent mode.' });\n }\n if (persistent && keyStore === StorageDriver.RAM) {\n throw new InvalidConfigError({ message: 'RAM key storage cannot be used in persistent mode.' });\n }\n if (!persistent && keyStore !== StorageDriver.RAM && keyStore !== undefined) {\n throw new InvalidConfigError({ message: 'Cannot use a persistent key storage in not persistent mode.' });\n }\n\n return {\n storage: createStorage({\n type: persistent ? toStorageType(dataStore) : StorageType.RAM,\n root: getRootPath(config),\n }),\n };\n};\n\nconst toStorageType = (type: StorageDriver | undefined): StorageType | undefined => {\n switch (type) {\n case undefined:\n return undefined;\n case StorageDriver.RAM:\n return StorageType.RAM;\n case StorageDriver.CHROME:\n return StorageType.CHROME;\n case StorageDriver.FIREFOX:\n return StorageType.FIREFOX;\n case StorageDriver.IDB:\n return StorageType.IDB;\n case StorageDriver.NODE:\n return StorageType.NODE;\n case StorageDriver.WEBFS:\n return StorageType.WEBFS;\n default:\n throw new Error(`Invalid storage type: ${StorageDriver[type]}`);\n }\n};\n","//\n// Copyright 2024 DXOS.org\n//\n\nimport { cbor } from '@automerge/automerge-repo';\n\nimport { invariant } from '@dxos/invariant';\nimport { log } from '@dxos/log';\nimport { type ProfileArchive, ProfileArchiveEntryType } from '@dxos/protocols';\nimport type { Storage } from '@dxos/random-access-storage';\nimport { arrayToBuffer } from '@dxos/util';\n\nexport const encodeProfileArchive = (profile: ProfileArchive): Uint8Array => cbor.encode(profile);\n\nexport const decodeProfileArchive = (data: Uint8Array): ProfileArchive => cbor.decode(data);\n\nexport const exportProfileData = async ({ storage }: { storage: Storage }): Promise<ProfileArchive> => {\n const archive: ProfileArchive = { storage: [], meta: { timestamp: new Date().toISOString() } };\n\n const directory = await storage.createDirectory();\n const files = await directory.list();\n\n log.info('begin exporting files', { count: files.length });\n for (const filename of files) {\n const file = await directory.getOrCreateFile(filename);\n const { size } = await file.stat();\n const data = await file.read(0, size);\n archive.storage.push({\n type: ProfileArchiveEntryType.FILE,\n key: filename,\n value: data,\n });\n }\n log.info('done exporting files', { count: files.length });\n\n return archive;\n};\n\nexport const importProfileData = async ({ storage }: { storage: Storage }, archive: ProfileArchive): Promise<void> => {\n for (const entry of archive.storage) {\n switch (entry.type) {\n case ProfileArchiveEntryType.FILE: {\n const directory = await storage.createDirectory();\n invariant(typeof entry.key === 'string', 'Invalid key type');\n const file = await directory.getOrCreateFile(entry.key);\n invariant(entry.value instanceof Uint8Array, 'Invalid value type');\n await file.write(0, arrayToBuffer(entry.value));\n await file.close();\n break;\n }\n case ProfileArchiveEntryType.KEY_VALUE:\n // Legacy LevelDB key/value entries are no longer supported (LevelDB was removed).\n log.warn('Skipping legacy KEY_VALUE entry (LevelDB storage removed)', { key: entry.key });\n break;\n case ProfileArchiveEntryType.SQLITE_DATABASE:\n log.warn('Skipping SQLITE_DATABASE entry (import via OPFS recovery API)', { key: entry.key });\n break;\n default:\n throw new Error(`Invalid entry type: ${entry.type}`);\n }\n }\n\n log.info('done importing files');\n};\n","//\n// Copyright 2026 DXOS.org\n//\n\nimport { type ProfileArchive, ProfileArchiveEntryType } from '@dxos/protocols';\n\n/** Default OPFS SQLite database name used by Composer recovery and the OPFS worker. */\nexport const OPFS_SQLITE_DB_FILENAME = 'DXOS' as const;\n\nconst SQLITE_MAGIC = new TextEncoder().encode('SQLite format 3\\u0000');\n\n/**\n * Returns true when `bytes` begins with the SQLite 3 file header.\n */\nexport const isValidSqliteDatabase = (bytes: Uint8Array): boolean => {\n if (bytes.byteLength < SQLITE_MAGIC.byteLength) {\n return false;\n }\n for (let index = 0; index < SQLITE_MAGIC.byteLength; index++) {\n if (bytes[index] !== SQLITE_MAGIC[index]) {\n return false;\n }\n }\n return true;\n};\n\nconst coerceToUint8Array = (value: unknown): Uint8Array | undefined => {\n if (value instanceof Uint8Array) {\n return value;\n }\n if (value instanceof ArrayBuffer) {\n return new Uint8Array(value);\n }\n if (Array.isArray(value)) {\n return new Uint8Array(value);\n }\n return undefined;\n};\n\nexport type SqliteProfileEntry = {\n opfsFilename: string;\n database: Uint8Array;\n};\n\nexport type CreateSqliteProfileArchiveOptions = {\n /** Host where the export was created (stored in archive meta). */\n origin?: string;\n};\n\n/**\n * Build a profile archive containing a single validated SQLITE_DATABASE entry.\n */\nexport const createSqliteProfileArchive = (\n opfsFilename: string,\n database: Uint8Array,\n options?: CreateSqliteProfileArchiveOptions,\n): ProfileArchive => {\n if (!isValidSqliteDatabase(database)) {\n throw new Error('Invalid SQLite database (missing SQLite format 3 header)');\n }\n\n return {\n meta: {\n timestamp: new Date().toISOString(),\n ...(options?.origin ? { origin: options.origin } : {}),\n },\n storage: [\n {\n type: ProfileArchiveEntryType.SQLITE_DATABASE,\n key: opfsFilename,\n value: database,\n },\n ],\n };\n};\n\n/**\n * Extract validated SQLITE_DATABASE entries from a profile archive.\n */\nexport const getSqliteProfileEntries = (archive: ProfileArchive): SqliteProfileEntry[] => {\n const entries: SqliteProfileEntry[] = [];\n\n for (const entry of archive.storage) {\n if (entry.type !== ProfileArchiveEntryType.SQLITE_DATABASE) {\n continue;\n }\n if (typeof entry.key !== 'string') {\n continue;\n }\n\n const database = coerceToUint8Array(entry.value);\n if (!database || !isValidSqliteDatabase(database)) {\n continue;\n }\n\n entries.push({ opfsFilename: entry.key, database });\n }\n\n return entries;\n};\n","//\n// Copyright 2026 DXOS.org\n//\n\n// @import-as-namespace\n\nexport * from './internal/services/index.ts';\n","//\n// Copyright 2026 DXOS.org\n//\n\n// @import-as-namespace\n\n// The space subsystem is one namespace: `internal/space` is the transport-level space and its\n// manager, `internal/spaces` the data spaces above it, and `internal/space-export` their archive\n// format. Separate facades produced sibling names a reader cannot tell apart.\nexport * from './internal/space/index.ts';\nexport * from './internal/spaces/index.ts';\nexport * from './internal/space-export/index.ts';\n","//\n// Copyright 2026 DXOS.org\n//\n\n// @import-as-namespace\n\nexport * from './internal/storage/index.ts';\n","//\n// Copyright 2026 DXOS.org\n//\n\n// @import-as-namespace\n\nexport * from './internal/system/index.ts';\n","//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Hook from '@dxos/effect/Hook';\n\nimport { type WorkerSession } from './worker-runtime.ts';\n\n/** A tab session has closed, whether by the tab, the client, or its liveness lock releasing. */\nexport const SessionClosed = Hook.make<{ session: WorkerSession }>()('client-services/worker/SessionClosed');\n","//\n// Copyright 2022 DXOS.org\n//\n\nimport * as Cause from 'effect/Cause';\nimport * as Context from 'effect/Context';\nimport * as Effect from 'effect/Effect';\nimport * as Exit from 'effect/Exit';\nimport * as Fiber from 'effect/Fiber';\nimport * as Layer from 'effect/Layer';\nimport * as Reactivity from 'effect/reactivity/Reactivity';\nimport type * as RpcClient from 'effect/rpc/RpcClient';\nimport * as RpcServer from 'effect/rpc/RpcServer';\nimport * as Scope from 'effect/Scope';\nimport type * as SqlClient from 'effect/sql/SqlClient';\n\nimport { Trigger } from '@dxos/async';\nimport { PROXY_CONNECTION_TIMEOUT, makeRtcServiceClientOverProtocol } from '@dxos/client-protocol';\nimport { LayerStack } from '@dxos/compute-runtime';\nimport { type Config, ConfigService } from '@dxos/config';\nimport * as Hook from '@dxos/effect/Hook';\nimport { invariant } from '@dxos/invariant';\nimport { log } from '@dxos/log';\nimport { MemorySignalManager, MemorySignalManagerContext, setIdentityTags } from '@dxos/messaging';\nimport { RtcTransportProxyFactory } from '@dxos/network-manager';\nimport { WorkerRuntimeStartError, makeInProcessClient } from '@dxos/protocols';\nimport { DevicesService, IdentityService, type RTCService } from '@dxos/protocols/rpc';\nimport { RpcRouter } from '@dxos/rpc';\nimport * as SqlExport from '@dxos/sql-sqlite/SqlExport';\nimport * as SqliteClient from '@dxos/sql-sqlite/SqliteClient';\n\nimport * as Events from '../../Events.ts';\nimport * as SqliteStorage from '../../SqliteStorage.ts';\nimport { enableNetworking, layerClientServices } from '../services/index.ts';\nimport { SessionClosed } from './events.ts';\n\n// Session transports are effect-rpc protocol layers handed over by the worker framework: appProtocol\n// serves the client services; systemProtocol carries the reverse-direction\n// RTCService (worker→tab).\nexport type CreateSessionProps = {\n /** Forward-direction (tab→worker) protocol over which the worker serves the client services. */\n appProtocol: RpcServer.Protocol['Service'];\n /** Reverse-direction (worker→tab) protocol serving the tab's WebRTC `RTCService`; the worker is the client. */\n systemProtocol: RpcClient.Protocol['Service'];\n};\n\n/** A tab connection within the worker; it lives as long as the scope `createSession` ran in. */\nexport interface WorkerSession {\n /** The tab's WebRTC service, which the worker's network stack proxies through. */\n readonly rtcService: RTCService.Client;\n}\n\n/**\n * Grace period between \"worker booted\" and the first edge dial. wa-sqlite runs in-process on this\n * thread, so the dial, its auth-header request, and the replication behind it contend with the boot\n * RPCs the tab is waiting on — on a document-heavy profile the session handshake loses that race and\n * the client reports a connect timeout. Yielding lets the queued handshake drain first; replication\n * then proceeds behind a live session. The stack exposes the capability; the embedder decides the timing.\n */\nconst EDGE_NETWORKING_START_DELAY = '300 millis';\n\nexport type WorkerRuntimeOptions = {\n configProvider: Effect.Effect<Config>;\n /** The runtime wants to terminate (its last session closed, or a reset finished); the embedder closes its scope. */\n requestShutdown?: Effect.Effect<void>;\n /**\n * @default true\n */\n automaticallyConnectWebrtc?: boolean;\n\n /**\n * Optional SQLite layer for Effect. Defaults to LocalSqliteOpfsLayer.\n * For testing in Node.js, use `layerMemory` from `@dxos/sql-sqlite/Platform`.\n */\n sqliteLayer?: Layer.Layer<SqlClient.SqlClient | SqlExport.SqlExport, unknown>;\n\n /**\n * Shared context for the in-memory signal manager used when edge signaling is off; tests pass one\n * so several runtimes can see each other.\n */\n memorySignalManagerContext?: MemorySignalManagerContext;\n};\n\n/**\n * Effect service surface for the dedicated-worker runtime.\n *\n * Manages connections from proxies (in tabs): tabs make requests to the client services stack, and\n * provide a WebRTC gateway. The runtime lives as long as the scope it was made in.\n */\nexport interface WorkerRuntimeService {\n /** The running stack; resolve a tag through it to reach a component or RPC handler. */\n readonly stack: () => LayerStack.LayerStack;\n /** Open a tab session over the supplied effect-rpc protocols for the life of the scope, registered for WebRTC bridging. */\n readonly createSession: (props: CreateSessionProps) => Effect.Effect<WorkerSession, never, Scope.Scope>;\n /** Route WebRTC through the given session (or disconnect when `undefined`). */\n readonly connectWebrtc: (session: WorkerSession | undefined) => Effect.Effect<void>;\n}\n\n/**\n * Context tag for the dedicated-worker runtime service. Provided by {@link layerWorkerRuntime}.\n */\nexport class WorkerRuntime extends Context.Service<WorkerRuntime, WorkerRuntimeService>()(\n '@dxos/client-services/WorkerRuntime',\n) {}\n\n/**\n * Builds and opens the worker runtime: {@link layerClientServices} over the worker's SQLite layer.\n * A startup error rejects the readiness gate, closes the stack and fails the effect, so the worker\n * reports it instead of advertising `ready`. Closing the scope tears everything down.\n */\nexport const makeWorkerRuntime = ({\n configProvider,\n requestShutdown = Effect.void,\n automaticallyConnectWebrtc = true,\n sqliteLayer,\n memorySignalManagerContext,\n}: WorkerRuntimeOptions): Effect.Effect<WorkerRuntimeService, WorkerRuntimeStartError, Scope.Scope> =>\n Effect.gen(function* () {\n // Held so effects that outlive this construction — a session finalizer, which the framework runs\n // when it closes a session scope — still reach the controller.\n const controller = yield* Hook.Controller;\n const transportFactory = new RtcTransportProxyFactory();\n const ready = new Trigger<Error | undefined>();\n const sessions = new Set<WorkerSession>();\n const signalMetadataTags: any = {\n runtime: 'worker-runtime',\n origin: typeof location !== 'undefined' ? location.origin : 'unknown',\n };\n const scope = yield* Effect.scope;\n\n let sessionForNetworking: WorkerSession | undefined;\n /** Owns the built stack; a reset closes it early, otherwise it closes with the runtime scope. */\n const stackScope = yield* Scope.fork(scope);\n let stack: LayerStack.LayerStack | undefined;\n\n if (sqliteLayer) {\n log.warn('Using testing SQLite layer');\n }\n\n const sqlite = (sqliteLayer ?? LocalSqliteOpfsLayer).pipe(Layer.provideMerge(Reactivity.layer), Layer.orDie);\n\n const closeStack = Effect.gen(function* () {\n stack = undefined;\n yield* Scope.close(stackScope, Exit.void);\n });\n\n const connectRtc = (session: WorkerSession | undefined): void => {\n sessionForNetworking = session;\n transportFactory.setRtcService(session?.rtcService);\n };\n\n // Selects one of the existing sessions for WebRTC networking.\n const reconnectWebrtc = Effect.sync(() => {\n log('reconnecting webrtc...');\n // Drop the current session if it has since closed.\n if (sessionForNetworking && !sessions.has(sessionForNetworking)) {\n sessionForNetworking = undefined;\n }\n if (!sessionForNetworking) {\n connectRtc(Array.from(sessions).find((session) => session.rtcService));\n }\n });\n\n // The runtime's own subscriptions: the reset chain and session bookkeeping.\n yield* Hook.on(Events.Closing, () => closeStack);\n /** Wipes persisted storage over a SQLite layer of its own, since the stack's is gone by the time a reset gets here. */\n yield* Hook.on(Events.WipingStorage, () =>\n SqliteStorage.wipeSqliteStorage.pipe(Effect.provide(sqlite), Effect.orDie),\n );\n yield* Hook.on(Events.Reset, () => requestShutdown);\n // The tabs hold every change this process has not saved, and reconnect to a replacement with them.\n yield* Hook.on(Events.StorageStuck, () => requestShutdown);\n yield* Hook.on(\n SessionClosed,\n Effect.fn('WorkerRuntime.onSessionClosed')(function* ({ session }) {\n sessions.delete(session);\n if (sessions.size === 0) {\n // Terminate the worker when all sessions are closed.\n yield* requestShutdown;\n } else if (automaticallyConnectWebrtc) {\n yield* reconnectWebrtc;\n }\n }),\n );\n\n yield* Effect.gen(function* () {\n log('starting...');\n const config = yield* configProvider;\n const observabilityGroup = config.get('runtime.client.observabilityGroup');\n if (observabilityGroup) {\n signalMetadataTags.group = observabilityGroup;\n }\n\n log('worker-runtime: building client services stack');\n // Building the layer also builds its eager specs, so the rpc registrations are in place before\n // the events below run.\n const stackContext = yield* Layer.build(\n layerClientServices({\n // The dial is driven below once boot has drained, not on stack open.\n autoConnect: false,\n // Auto-activate spaces that were previously active after leader changeover.\n runtimeProps: { autoActivateSpaces: true },\n // Edge signaling is created by the platform layer from the edge connection; otherwise fall\n // back to an in-memory manager (KUBE `WebsocketSignalManager` removed).\n signalManager: config.get('runtime.client.edgeFeatures')?.signaling\n ? undefined\n : new MemorySignalManager(memorySignalManagerContext ?? new MemorySignalManagerContext()),\n transportFactory,\n }).pipe(\n Layer.provide(sqlite),\n Layer.provide(Layer.succeed(ConfigService, config)),\n Layer.provide(Layer.succeed(Hook.Controller, controller)),\n ),\n ).pipe(Scope.provide(stackScope));\n const built = Context.get(stackContext, LayerStack.Service);\n stack = built;\n log('worker-runtime: stack built, opening');\n // `StackOpened` resolves once every handler the cascade triggered has run.\n yield* Effect.gen(function* () {\n yield* Hook.emit(Events.Opening, undefined);\n yield* Hook.emit(Events.StackOpened, undefined);\n }).pipe(Effect.provideService(Hook.Controller, controller));\n log('worker-runtime: stack opened, signalling ready');\n ready.wake(undefined);\n log('started');\n\n // Bridge the identity/devices Handlers to the effect-rpc client surface in-process.\n const [identityService, devicesService] = yield* Effect.all([\n makeInProcessClient(\n IdentityService.Rpcs,\n yield* built.getServiceResolver().resolve(IdentityService.Tag, {}).pipe(Scope.provide(stackScope)),\n ),\n makeInProcessClient(\n DevicesService.Rpcs,\n yield* built.getServiceResolver().resolve(DevicesService.Tag, {}).pipe(Scope.provide(stackScope)),\n ),\n ]);\n setIdentityTags({\n identityService,\n devicesService,\n setTag: (key: string, value: string) => {\n signalMetadataTags[key] = value;\n },\n });\n\n // Boot is done: outbound traffic can no longer starve the session handshake the tab is\n // waiting on. Anchored here rather than in the stack so the gate opens only after the whole\n // worker start sequence has drained, not just the stack open. The grace period yields the\n // thread so any RPC already queued behind this turn is served before the dial and its\n // auth-header request start competing for it.\n log.info('worker-runtime: boot complete, scheduling networking start', {\n delay: EDGE_NETWORKING_START_DELAY,\n });\n const networkingFiber = yield* Effect.forkDetach(\n Effect.gen(function* () {\n yield* Effect.sleep(EDGE_NETWORKING_START_DELAY);\n log('worker-runtime: starting networking');\n yield* enableNetworking;\n }).pipe(Effect.provideService(Hook.Controller, controller)),\n );\n yield* Effect.addFinalizer(() => Fiber.interrupt(networkingFiber));\n }).pipe(\n Effect.catchCause((cause) =>\n Effect.gen(function* () {\n const squashed = Cause.squash(cause);\n const error = new WorkerRuntimeStartError({\n message: squashed instanceof Error ? squashed.message : String(squashed),\n cause: squashed,\n });\n ready.wake(error);\n log.error('starting', error);\n yield* closeStack;\n return yield* Effect.fail(error);\n }),\n ),\n );\n\n const createSession = ({\n appProtocol,\n systemProtocol,\n }: CreateSessionProps): Effect.Effect<WorkerSession, never, Scope.Scope> =>\n Effect.gen(function* () {\n log('opening session...');\n const rtcService = yield* makeRtcServiceClientOverProtocol(systemProtocol);\n\n // Serve once the runtime is ready; the handlers come from the stack's tags.\n const error = yield* Effect.promise(() => ready.wait({ timeout: PROXY_CONNECTION_TIMEOUT }));\n if (error || !stack) {\n return yield* Effect.die(error ?? new Error('worker runtime stack is not available'));\n }\n // Every service registered itself with the stack's router; the session only attaches its\n // transport, so adding a service never touches this code.\n const router = yield* stack\n .getServiceResolver()\n .resolve(RpcRouter.RpcRouter, {})\n .pipe(Effect.orDie, Effect.scoped);\n yield* Layer.build(\n RpcRouter.layerTransport.pipe(\n Layer.provide(Layer.succeed(RpcServer.Protocol, appProtocol)),\n Layer.provide(Layer.succeed(RpcRouter.RpcRouter, router)),\n ),\n );\n\n const session: WorkerSession = { rtcService };\n sessions.add(session);\n yield* Effect.addFinalizer(() =>\n Hook.emit(SessionClosed, { session }).pipe(\n Effect.provideService(Hook.Controller, controller),\n // A subscriber failing must not keep the transport open.\n Effect.catchCause((cause) => Effect.sync(() => log.catch(cause))),\n ),\n );\n\n if (automaticallyConnectWebrtc) {\n yield* reconnectWebrtc;\n }\n\n log('session opened');\n return session;\n });\n\n return {\n stack: () => {\n invariant(stack, 'worker runtime not started');\n return stack;\n },\n createSession,\n connectWebrtc: (session) => Effect.sync(() => connectRtc(session)),\n } satisfies WorkerRuntimeService;\n }).pipe(Effect.provide(Hook.controllerLayer));\n\n/**\n * Layer providing the {@link WorkerRuntime} service; the runtime lives as long as the layer.\n */\nexport const layerWorkerRuntime = (\n options: WorkerRuntimeOptions,\n): Layer.Layer<WorkerRuntime, WorkerRuntimeStartError> => Layer.effect(WorkerRuntime, makeWorkerRuntime(options));\n\nconst DB_NAME = 'DXOS';\n\n/**\n * SqlExport layer that wraps SqliteClient to provide export functionality.\n */\nconst SqlExportLayer: Layer.Layer<SqlExport.SqlExport, never, SqliteClient.SqliteClient> = Layer.effect(\n SqlExport.SqlExport,\n Effect.gen(function* () {\n const sql = yield* SqliteClient.SqliteClient;\n return {\n export: sql.export,\n } satisfies SqlExport.Service;\n }),\n);\n\n/**\n * Local SQLite layer for the worker.\n * Uses in-process OPFS via {@link SqliteClient.layerOpfs} (no MessagePort).\n * NOTE: Only usable within a worker.\n */\nconst LocalSqliteOpfsLayer = SqlExportLayer.pipe(\n Layer.provideMerge(SqliteClient.layerOpfs({ dbName: DB_NAME })),\n Layer.provideMerge(Reactivity.layer),\n);\n","//\n// Copyright 2026 DXOS.org\n//\n\n// @import-as-namespace\n\nexport * from './internal/worker/index.ts';\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { Cr as ManagerService, Gn as SpaceProtocol, Kt as InvitationsManager, Qn as SqliteMetadataStore, Qt as InvitationsHandlerService, Sr as LifecycleService, Un as MOCK_AUTH_PROVIDER, Vn as SpaceManagerService, Wn as MOCK_AUTH_VERIFIER, Xn as valueEncoding, Xt as InvitationsHandler, ar as ManagerService$1, br as ManagerService$2, er as IMetadataStoreService, fn as SqliteStorage, gr as Opening, mn as wipeSqliteStorage, mr as Closing, n as layerClientServices, pr as EdgeAgentManagerService, tn as SpaceInvitationProtocol, tr as MetadataStore, ur as StackReadinessService, vr as StackOpened, yn as EdgeIdentityRecoveryManagerService, yr as WipingStorage, zn as SpaceManager, zt as DataSpaceManager } from "./chunk-client-services-stack.mjs";
1
+ import { $t as InvitationsManager, Ar as LifecycleService, Cr as Opening, Dr as WipingStorage, En as EdgeIdentityRecoveryManagerService, Jn as SpaceManagerService, Kn as SpaceManager, Kt as DataSpaceManager, Or as ManagerService$2, Qn as SpaceProtocol, Tr as StackOpened, Xn as MOCK_AUTH_PROVIDER, Zn as MOCK_AUTH_VERIFIER, _r as StackReadinessService, an as InvitationsHandlerService, ar as SqliteMetadataStore, br as EdgeAgentManagerService, cn as SpaceInvitationProtocol, cr as MetadataStore, fr as ManagerService$1, jr as ManagerService, n as layerClientServices, rn as InvitationsHandler, rr as valueEncoding, sr as IMetadataStoreService, xn as wipeSqliteStorage, xr as Closing, yn as SqliteStorage } from "./chunk-client-services-stack.mjs";
2
2
  import { create } from "@bufbuild/protobuf";
3
3
  import * as EffectContext from "effect/Context";
4
4
  import * as Effect from "effect/Effect";