@tinycloud/sdk-core 3.8.0-beta.14 → 3.8.0-beta.16

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.
package/dist/index.cjs CHANGED
@@ -74,13 +74,13 @@ __export(index_exports, {
74
74
  ClientSessionSchema: () => ClientSessionSchema,
75
75
  CloudLocationResolutionError: () => CloudLocationResolutionError,
76
76
  CredentialError: () => CredentialError,
77
- DECRYPT_ACTION: () => import_sdk_services9.DECRYPT_ACTION,
78
- DECRYPT_FACT_TYPE: () => import_sdk_services9.DECRYPT_FACT_TYPE,
79
- DECRYPT_RESULT_TYPE: () => import_sdk_services9.DECRYPT_RESULT_TYPE,
77
+ DECRYPT_ACTION: () => import_sdk_services10.DECRYPT_ACTION,
78
+ DECRYPT_FACT_TYPE: () => import_sdk_services10.DECRYPT_FACT_TYPE,
79
+ DECRYPT_RESULT_TYPE: () => import_sdk_services10.DECRYPT_RESULT_TYPE,
80
80
  DEFAULT_DEFAULTS: () => DEFAULT_DEFAULTS,
81
- DEFAULT_ENCRYPTION_ALG: () => import_sdk_services9.DEFAULT_ENCRYPTION_ALG,
81
+ DEFAULT_ENCRYPTION_ALG: () => import_sdk_services10.DEFAULT_ENCRYPTION_ALG,
82
82
  DEFAULT_EXPIRY: () => DEFAULT_EXPIRY,
83
- DEFAULT_KEY_VERSION: () => import_sdk_services9.DEFAULT_KEY_VERSION,
83
+ DEFAULT_KEY_VERSION: () => import_sdk_services10.DEFAULT_KEY_VERSION,
84
84
  DEFAULT_KNOWLEDGE_ROOT: () => DEFAULT_KNOWLEDGE_ROOT,
85
85
  DEFAULT_LOCAL_NODE_PIN_STORAGE_KEY: () => DEFAULT_LOCAL_NODE_PIN_STORAGE_KEY,
86
86
  DEFAULT_LOCAL_NODE_URL: () => DEFAULT_LOCAL_NODE_URL,
@@ -95,36 +95,36 @@ __export(index_exports, {
95
95
  DEFAULT_TINYCLOUD_LOCATION_REGISTRY_URL: () => DEFAULT_TINYCLOUD_LOCATION_REGISTRY_URL,
96
96
  DELIVERY_ADMISSION_DOMAIN: () => DELIVERY_ADMISSION_DOMAIN,
97
97
  DUCKDB: () => import_bootstrap4.DUCKDB,
98
- DataVaultService: () => import_sdk_services9.DataVaultService,
99
- DatabaseHandle: () => import_sdk_services9.DatabaseHandle,
100
- DecryptTransportResponseError: () => import_sdk_services9.DecryptTransportResponseError,
98
+ DataVaultService: () => import_sdk_services10.DataVaultService,
99
+ DatabaseHandle: () => import_sdk_services10.DatabaseHandle,
100
+ DecryptTransportResponseError: () => import_sdk_services10.DecryptTransportResponseError,
101
101
  DelegationErrorCodes: () => DelegationErrorCodes,
102
102
  DelegationManager: () => DelegationManager,
103
- DuckDbAction: () => import_sdk_services9.DuckDbAction,
104
- DuckDbDatabaseHandle: () => import_sdk_services9.DuckDbDatabaseHandle,
105
- DuckDbService: () => import_sdk_services9.DuckDbService,
103
+ DuckDbAction: () => import_sdk_services10.DuckDbAction,
104
+ DuckDbDatabaseHandle: () => import_sdk_services10.DuckDbDatabaseHandle,
105
+ DuckDbService: () => import_sdk_services10.DuckDbService,
106
106
  ED25519_JCS_SIGNATURE_SUITE: () => ED25519_JCS_SIGNATURE_SUITE,
107
107
  EIP191_JCS_SIGNATURE_SUITE: () => EIP191_JCS_SIGNATURE_SUITE,
108
108
  EMAIL_CREDENTIAL_MAX_AGE_SECONDS: () => EMAIL_CREDENTIAL_MAX_AGE_SECONDS,
109
109
  EMAIL_DOMAIN_CREDENTIAL_MAX_AGE_SECONDS: () => EMAIL_DOMAIN_CREDENTIAL_MAX_AGE_SECONDS,
110
110
  ENCRYPTION: () => import_bootstrap4.ENCRYPTION,
111
111
  ENCRYPTION_MANIFEST_SPACE: () => ENCRYPTION_MANIFEST_SPACE,
112
- ENCRYPTION_NETWORK_URN_PREFIX: () => import_sdk_services9.ENCRYPTION_NETWORK_URN_PREFIX,
112
+ ENCRYPTION_NETWORK_URN_PREFIX: () => import_sdk_services10.ENCRYPTION_NETWORK_URN_PREFIX,
113
113
  ENCRYPTION_PERMISSION_SERVICE: () => ENCRYPTION_PERMISSION_SERVICE,
114
- ENCRYPTION_SERVICE: () => import_sdk_services9.ENCRYPTION_SERVICE,
115
- ENCRYPTION_SERVICE_SHORT: () => import_sdk_services9.ENCRYPTION_SERVICE_SHORT,
116
- ENVELOPE_VERSION: () => import_sdk_services9.ENVELOPE_VERSION,
114
+ ENCRYPTION_SERVICE: () => import_sdk_services10.ENCRYPTION_SERVICE,
115
+ ENCRYPTION_SERVICE_SHORT: () => import_sdk_services10.ENCRYPTION_SERVICE_SHORT,
116
+ ENVELOPE_VERSION: () => import_sdk_services10.ENVELOPE_VERSION,
117
117
  EXPIRY: () => EXPIRY,
118
- EncryptionService: () => import_sdk_services9.EncryptionService,
118
+ EncryptionService: () => import_sdk_services10.EncryptionService,
119
119
  EnsDataSchema: () => EnsDataSchema,
120
- ErrorCodes: () => import_sdk_services9.ErrorCodes,
120
+ ErrorCodes: () => import_sdk_services10.ErrorCodes,
121
121
  HOLDER_BINDING_DOMAIN: () => HOLDER_BINDING_DOMAIN,
122
122
  HOLDER_KEY_BINDING_PRESENTATION_SCHEMA: () => HOLDER_KEY_BINDING_PRESENTATION_SCHEMA,
123
123
  HOOKS: () => import_bootstrap4.HOOKS,
124
- HooksService: () => import_sdk_services9.HooksService,
124
+ HooksService: () => import_sdk_services10.HooksService,
125
125
  IdentityParseError: () => IdentityParseError,
126
126
  KV: () => import_bootstrap4.KV,
127
- KVService: () => import_sdk_services9.KVService,
127
+ KVService: () => import_sdk_services10.KVService,
128
128
  LAST_V2_CREATE_AT: () => LAST_V2_CREATE_AT,
129
129
  LAST_V2_READ_AT: () => LAST_V2_READ_AT,
130
130
  LISTEN_SQL_STATEMENT_CATALOG: () => LISTEN_SQL_STATEMENT_CATALOG,
@@ -136,7 +136,7 @@ __export(index_exports, {
136
136
  MAX_CONTENT_BYTES: () => MAX_CONTENT_BYTES,
137
137
  MAX_LEGACY_ENVELOPE_EXPIRES_AT: () => MAX_LEGACY_ENVELOPE_EXPIRES_AT,
138
138
  MAX_SEALED_SHARE_CONTENT_BYTES: () => MAX_SEALED_SHARE_CONTENT_BYTES,
139
- MAX_SECRET_SCOPE_LENGTH: () => import_sdk_services9.MAX_SECRET_SCOPE_LENGTH,
139
+ MAX_SECRET_SCOPE_LENGTH: () => import_sdk_services10.MAX_SECRET_SCOPE_LENGTH,
140
140
  MAX_SHARE_ARTIFACT_BYTES: () => MAX_SHARE_ARTIFACT_BYTES,
141
141
  MAX_SHARE_CONTENT_BYTES: () => MAX_SHARE_CONTENT_BYTES,
142
142
  ManifestValidationError: () => ManifestValidationError,
@@ -144,8 +144,8 @@ __export(index_exports, {
144
144
  MemorySenderShareRecordStorage: () => MemorySenderShareRecordStorage,
145
145
  MemoryShareCache: () => MemoryShareCache,
146
146
  NATIVE_PROJECTION_V1_DOMAIN: () => NATIVE_PROJECTION_V1_DOMAIN,
147
- NETWORK_NAME_PATTERN: () => import_sdk_services9.NETWORK_NAME_PATTERN,
148
- NetworkIdError: () => import_sdk_services9.NetworkIdError,
147
+ NETWORK_NAME_PATTERN: () => import_sdk_services10.NETWORK_NAME_PATTERN,
148
+ NetworkIdError: () => import_sdk_services10.NetworkIdError,
149
149
  NodeNotFoundError: () => NodeNotFoundError,
150
150
  NodeRegistryEntryExistsError: () => NodeRegistryEntryExistsError,
151
151
  OPENKEY_ACTION_ID_SEPARATOR: () => OPENKEY_ACTION_ID_SEPARATOR,
@@ -174,7 +174,7 @@ __export(index_exports, {
174
174
  POLICY_V2_SCHEMA: () => POLICY_V2_SCHEMA,
175
175
  PORTABLE_DELEGATION_SCHEMA: () => PORTABLE_DELEGATION_SCHEMA,
176
176
  PermissionNotInManifestError: () => PermissionNotInManifestError,
177
- PrefixedKVService: () => import_sdk_services9.PrefixedKVService,
177
+ PrefixedKVService: () => import_sdk_services10.PrefixedKVService,
178
178
  ProtocolMismatchError: () => ProtocolMismatchError,
179
179
  REGISTRY_LOOKUP_MAX_BODY_BYTES: () => REGISTRY_LOOKUP_MAX_BODY_BYTES,
180
180
  REGISTRY_NOT_FOUND_BODY: () => REGISTRY_NOT_FOUND_BODY,
@@ -189,22 +189,22 @@ __export(index_exports, {
189
189
  RegistryLookupInputError: () => RegistryLookupInputError,
190
190
  RegistryUnavailableError: () => RegistryUnavailableError,
191
191
  SECRETS_SPACE: () => SECRETS_SPACE,
192
- SECRET_NAME_RE: () => import_sdk_services9.SECRET_NAME_RE,
192
+ SECRET_NAME_RE: () => import_sdk_services10.SECRET_NAME_RE,
193
193
  SECRET_RECORDS_SCHEMA: () => import_bootstrap4.SECRET_RECORDS_SCHEMA,
194
- SECRET_SCOPE_RE: () => import_sdk_services9.SECRET_SCOPE_RE,
194
+ SECRET_SCOPE_RE: () => import_sdk_services10.SECRET_SCOPE_RE,
195
195
  SERVICE_LONG_TO_SHORT: () => SERVICE_LONG_TO_SHORT,
196
196
  SERVICE_SHORT_TO_LONG: () => SERVICE_SHORT_TO_LONG,
197
197
  SPACE: () => import_bootstrap4.SPACE,
198
198
  SQL: () => import_bootstrap4.SQL,
199
- SQLAction: () => import_sdk_services9.SQLAction,
200
- SQLService: () => import_sdk_services9.SQLService,
201
- STORAGE_FULL_MESSAGE: () => import_sdk_services9.STORAGE_FULL_MESSAGE,
202
- STORAGE_MANAGE_URL: () => import_sdk_services9.STORAGE_MANAGE_URL,
203
- STORAGE_NEARLY_FULL_RATIO: () => import_sdk_services9.STORAGE_NEARLY_FULL_RATIO,
204
- STORAGE_WRITE_TOO_LARGE_MESSAGE: () => import_sdk_services9.STORAGE_WRITE_TOO_LARGE_MESSAGE,
205
- SecretsService: () => import_sdk_services9.SecretsService,
199
+ SQLAction: () => import_sdk_services10.SQLAction,
200
+ SQLService: () => import_sdk_services10.SQLService,
201
+ STORAGE_FULL_MESSAGE: () => import_sdk_services10.STORAGE_FULL_MESSAGE,
202
+ STORAGE_MANAGE_URL: () => import_sdk_services10.STORAGE_MANAGE_URL,
203
+ STORAGE_NEARLY_FULL_RATIO: () => import_sdk_services10.STORAGE_NEARLY_FULL_RATIO,
204
+ STORAGE_WRITE_TOO_LARGE_MESSAGE: () => import_sdk_services10.STORAGE_WRITE_TOO_LARGE_MESSAGE,
205
+ SecretsService: () => import_sdk_services10.SecretsService,
206
206
  SenderShareStore: () => SenderShareStore,
207
- ServiceContext: () => import_sdk_services9.ServiceContext,
207
+ ServiceContext: () => import_sdk_services10.ServiceContext,
208
208
  SessionExpiredError: () => SessionExpiredError,
209
209
  ShareAccessError: () => ShareAccessError,
210
210
  ShareAddressedDelegationEnvelopeV2Schema: () => ShareAddressedDelegationEnvelopeV2Schema,
@@ -230,8 +230,8 @@ __export(index_exports, {
230
230
  Space: () => Space,
231
231
  SpaceErrorCodes: () => SpaceErrorCodes,
232
232
  SpaceService: () => SpaceService,
233
- StorageFullMonitor: () => import_sdk_services9.StorageFullMonitor,
234
- TC832_RESERVED_SCOPES: () => import_sdk_services9.TC832_RESERVED_SCOPES,
233
+ StorageFullMonitor: () => import_sdk_services10.StorageFullMonitor,
234
+ TC832_RESERVED_SCOPES: () => import_sdk_services10.TC832_RESERVED_SCOPES,
235
235
  TERMINAL_DELEGATION_FACT: () => TERMINAL_DELEGATION_FACT,
236
236
  TINYCLOUD_ACCOUNT_SPACE_MANIFEST: () => import_bootstrap4.TINYCLOUD_ACCOUNT_SPACE_MANIFEST,
237
237
  TINYCLOUD_AGENTS_SPACE_MANIFEST: () => import_bootstrap4.TINYCLOUD_AGENTS_SPACE_MANIFEST,
@@ -242,55 +242,55 @@ __export(index_exports, {
242
242
  TINYCLOUD_PUBLIC_SPACE_MANIFEST: () => import_bootstrap4.TINYCLOUD_PUBLIC_SPACE_MANIFEST,
243
243
  TINYCLOUD_SECRETS_BOOTSTRAP_MANIFEST: () => import_bootstrap4.TINYCLOUD_SECRETS_BOOTSTRAP_MANIFEST,
244
244
  TinyCloud: () => TinyCloud,
245
- TinyCloudDebugLogger: () => import_sdk_services9.TinyCloudDebugLogger,
245
+ TinyCloudDebugLogger: () => import_sdk_services10.TinyCloudDebugLogger,
246
246
  TranscriptRequester: () => TranscriptRequester,
247
247
  TranscriptRequesterError: () => TranscriptRequesterError,
248
248
  UnsupportedFeatureError: () => UnsupportedFeatureError,
249
249
  UnsupportedSignatureSuiteError: () => UnsupportedSignatureSuiteError,
250
250
  VAULT_PERMISSION_SERVICE: () => VAULT_PERMISSION_SERVICE,
251
- VaultHeaders: () => import_sdk_services9.VaultHeaders,
252
- VaultPublicSpaceKVActions: () => import_sdk_services9.VaultPublicSpaceKVActions,
251
+ VaultHeaders: () => import_sdk_services10.VaultHeaders,
252
+ VaultPublicSpaceKVActions: () => import_sdk_services10.VaultPublicSpaceKVActions,
253
253
  VersionCheckError: () => VersionCheckError,
254
254
  actionContains: () => actionContains,
255
255
  activateSessionWithHost: () => activateSessionWithHost,
256
256
  addressStorageKey: () => addressStorageKey,
257
257
  admitPolicyCredentialV3: () => admitPolicyCredentialV3,
258
258
  admitPolicyCredentialV4: () => admitPolicyCredentialV4,
259
- appSecretScope: () => import_sdk_services9.appSecretScope,
259
+ appSecretScope: () => import_sdk_services10.appSecretScope,
260
260
  applyPrefix: () => applyPrefix,
261
261
  assertSpaceCreationAllowed: () => assertSpaceCreationAllowed,
262
- authorizationVerdictOf: () => import_sdk_services9.authorizationVerdictOf,
262
+ authorizationVerdictOf: () => import_sdk_services10.authorizationVerdictOf,
263
263
  bootstrapEncryptionNetworkId: () => import_bootstrap4.bootstrapEncryptionNetworkId,
264
264
  bootstrapSpaceId: () => import_bootstrap4.bootstrapSpaceId,
265
265
  bootstrapSteps: () => import_bootstrap4.bootstrapSteps,
266
- buildCanonicalDecryptRequest: () => import_sdk_services9.buildCanonicalDecryptRequest,
267
- buildDecryptAttenuation: () => import_sdk_services9.buildDecryptAttenuation,
268
- buildDecryptFacts: () => import_sdk_services9.buildDecryptFacts,
269
- buildDecryptInvocation: () => import_sdk_services9.buildDecryptInvocation,
270
- buildNetworkId: () => import_sdk_services9.buildNetworkId,
266
+ buildCanonicalDecryptRequest: () => import_sdk_services10.buildCanonicalDecryptRequest,
267
+ buildDecryptAttenuation: () => import_sdk_services10.buildDecryptAttenuation,
268
+ buildDecryptFacts: () => import_sdk_services10.buildDecryptFacts,
269
+ buildDecryptInvocation: () => import_sdk_services10.buildDecryptInvocation,
270
+ buildNetworkId: () => import_sdk_services10.buildNetworkId,
271
271
  buildPolicyCredentialPresentationV3: () => buildPolicyCredentialPresentationV3,
272
272
  buildPolicyCredentialPresentationV4: () => buildPolicyCredentialPresentationV4,
273
273
  buildSpaceUri: () => buildSpaceUri,
274
274
  canonicalDigest: () => canonicalDigest,
275
275
  canonicalEmailDomain: () => import_share_envelope.canonicalEmailDomain,
276
- canonicalHashHex: () => import_sdk_services9.canonicalHashHex,
276
+ canonicalHashHex: () => import_sdk_services10.canonicalHashHex,
277
277
  canonicalLocationPayload: () => canonicalLocationPayload,
278
278
  canonicalMailbox: () => import_share_envelope.canonicalMailbox,
279
279
  canonicalOwnerSharePolicy: () => canonicalOwnerSharePolicy,
280
- canonicalSignedResponse: () => import_sdk_services9.canonicalSignedResponse,
280
+ canonicalSignedResponse: () => import_sdk_services10.canonicalSignedResponse,
281
281
  canonicalizeAddress: () => canonicalizeAddress,
282
282
  canonicalizeDid: () => canonicalizeDid,
283
283
  canonicalizeDidUrl: () => canonicalizeDidUrl,
284
- canonicalizeEncryptionJson: () => import_sdk_services9.canonicalizeEncryptionJson,
284
+ canonicalizeEncryptionJson: () => import_sdk_services10.canonicalizeEncryptionJson,
285
285
  canonicalizeNetworkId: () => canonicalizeNetworkId,
286
286
  canonicalizeRecapCaveats: () => canonicalizeRecapCaveats,
287
- canonicalizeSecretScope: () => import_sdk_services9.canonicalizeSecretScope,
287
+ canonicalizeSecretScope: () => import_sdk_services10.canonicalizeSecretScope,
288
288
  canonicalizeSignedObjectUnsigned: () => canonicalizeSignedObjectUnsigned,
289
289
  canonicalizeUnifiedPolicyCapability: () => canonicalizeUnifiedPolicyCapability,
290
- checkDecryptInvocationInput: () => import_sdk_services9.checkDecryptInvocationInput,
290
+ checkDecryptInvocationInput: () => import_sdk_services10.checkDecryptInvocationInput,
291
291
  checkNodeInfo: () => checkNodeInfo,
292
292
  classifyRegistryLookup: () => classifyRegistryLookup,
293
- clearTinyCloudDebugLogs: () => import_sdk_services9.clearTinyCloudDebugLogs,
293
+ clearTinyCloudDebugLogs: () => import_sdk_services10.clearTinyCloudDebugLogs,
294
294
  compactAttenuationContains: () => compactAttenuationContains,
295
295
  composeBootstrapSpaceManifest: () => import_bootstrap4.composeBootstrapSpaceManifest,
296
296
  composeManifestRequest: () => composeManifestRequest,
@@ -321,7 +321,7 @@ __export(index_exports, {
321
321
  createStorageReceipt: () => createStorageReceipt,
322
322
  createStoredCredentialRecord: () => createStoredCredentialRecord,
323
323
  createTranscriptRequester: () => createTranscriptRequester,
324
- createVaultCrypto: () => import_sdk_services9.createVaultCrypto,
324
+ createVaultCrypto: () => import_sdk_services10.createVaultCrypto,
325
325
  credentialEndpointPath: () => credentialEndpointPath,
326
326
  credentialError: () => credentialError,
327
327
  credentialIndexKey: () => credentialIndexKey,
@@ -329,65 +329,66 @@ __export(index_exports, {
329
329
  credentialRecordKey: () => credentialRecordKey,
330
330
  credentialRequirementDigest: () => credentialRequirementDigest,
331
331
  decodeBase64Url: () => decodeBase64Url,
332
- decryptEnvelopeWithKey: () => import_sdk_services9.decryptEnvelopeWithKey,
332
+ decryptEnvelopeWithKey: () => import_sdk_services10.decryptEnvelopeWithKey,
333
333
  decryptShareBytesAsync: () => decryptShareBytesAsync,
334
- defaultRetryPolicy: () => import_sdk_services9.defaultRetryPolicy,
334
+ defaultRetryPolicy: () => import_sdk_services10.defaultRetryPolicy,
335
335
  defaultSignStrategy: () => defaultSignStrategy,
336
336
  defaultSpaceCreationHandler: () => defaultSpaceCreationHandler,
337
337
  delegatePortablePolicySession: () => delegatePortablePolicySession,
338
338
  deriveDelegationCid: () => deriveDelegationCid,
339
339
  deriveSignedObjectMaterial: () => deriveSignedObjectMaterial,
340
- deriveSignedReceiverKey: () => import_sdk_services9.deriveSignedReceiverKey,
340
+ deriveSignedReceiverKey: () => import_sdk_services10.deriveSignedReceiverKey,
341
341
  descriptorSatisfiesRequirement: () => descriptorSatisfiesRequirement,
342
342
  didCacheKey: () => didCacheKey,
343
343
  didEquals: () => didEquals,
344
344
  diffImmutableSiweFields: () => diffImmutableSiweFields,
345
- disableTinyCloudDebug: () => import_sdk_services9.disableTinyCloudDebug,
345
+ disableTinyCloudDebug: () => import_sdk_services10.disableTinyCloudDebug,
346
346
  discoverLocalTinyCloudNode: () => discoverLocalTinyCloudNode,
347
- discoverNetwork: () => import_sdk_services9.discoverNetwork,
348
- enableTinyCloudDebug: () => import_sdk_services9.enableTinyCloudDebug,
347
+ discoverNetwork: () => import_sdk_services10.discoverNetwork,
348
+ enableTinyCloudDebug: () => import_sdk_services10.enableTinyCloudDebug,
349
349
  encodeBase64Url: () => encodeBase64Url,
350
350
  encodeInlineShareUrl: () => encodeInlineShareUrl,
351
351
  encodeShareArtifact: () => encodeShareArtifact,
352
352
  encodeShareUrl: () => encodeShareUrl,
353
353
  encryptShareBytes: () => encryptShareBytes,
354
354
  encryptShareBytesAsync: () => encryptShareBytesAsync,
355
- encryptToNetwork: () => import_sdk_services9.encryptToNetwork,
356
- encryptionBase64Decode: () => import_sdk_services9.base64Decode,
357
- encryptionBase64Encode: () => import_sdk_services9.base64Encode,
358
- encryptionError: () => import_sdk_services9.encryptionError,
359
- encryptionUtf8Decode: () => import_sdk_services9.utf8Decode,
360
- encryptionUtf8Encode: () => import_sdk_services9.utf8Encode,
361
- ensureNetworkUsableForDecrypt: () => import_sdk_services9.ensureNetworkUsableForDecrypt,
362
- err: () => import_sdk_services9.err,
355
+ encryptToNetwork: () => import_sdk_services10.encryptToNetwork,
356
+ encryptionBase64Decode: () => import_sdk_services10.base64Decode,
357
+ encryptionBase64Encode: () => import_sdk_services10.base64Encode,
358
+ encryptionError: () => import_sdk_services10.encryptionError,
359
+ encryptionUtf8Decode: () => import_sdk_services10.utf8Decode,
360
+ encryptionUtf8Encode: () => import_sdk_services10.utf8Encode,
361
+ ensureNetworkUsableForDecrypt: () => import_sdk_services10.ensureNetworkUsableForDecrypt,
362
+ err: () => import_sdk_services10.err,
363
363
  expandActionShortNames: () => expandActionShortNames,
364
+ expandDelegationPermissionEntries: () => expandDelegationPermissionEntries,
364
365
  expandPermissionEntries: () => expandPermissionEntries,
365
366
  expandPermissionEntry: () => expandPermissionEntry,
366
367
  extractImmutableSiweFields: () => extractImmutableSiweFields,
367
368
  extractRecapAttenuations: () => extractRecapAttenuations,
368
369
  fetchLocationRecord: () => fetchLocationRecord,
369
370
  fetchPeerId: () => fetchPeerId,
370
- generateRandomReceiverKey: () => import_sdk_services9.generateRandomReceiverKey,
371
+ generateRandomReceiverKey: () => import_sdk_services10.generateRandomReceiverKey,
371
372
  getPolicyRootStatusV3: () => getPolicyRootStatusV3,
372
- getTinyCloudDebugLogs: () => import_sdk_services9.getTinyCloudDebugLogs,
373
+ getTinyCloudDebugLogs: () => import_sdk_services10.getTinyCloudDebugLogs,
373
374
  hasTinyCloudManageKeyScope: () => hasTinyCloudManageKeyScope,
374
- hexDecode: () => import_sdk_services9.hexDecode,
375
- hexEncode: () => import_sdk_services9.hexEncode,
375
+ hexDecode: () => import_sdk_services10.hexDecode,
376
+ hexEncode: () => import_sdk_services10.hexEncode,
376
377
  holderBindingCanonicalBytes: () => holderBindingCanonicalBytes,
377
378
  holderBindingSigningBytes: () => holderBindingSigningBytes,
378
379
  httpResponseError: () => httpResponseError,
379
380
  httpUrlToMultiaddr: () => httpUrlToMultiaddr,
380
381
  importPortableDelegation: () => importPortableDelegation,
381
- installTinyCloudDebugGlobals: () => import_sdk_services9.installTinyCloudDebugGlobals,
382
+ installTinyCloudDebugGlobals: () => import_sdk_services10.installTinyCloudDebugGlobals,
382
383
  intersectShareCapabilities: () => intersectShareCapabilities,
383
384
  isCanonicalEmailDomain: () => import_share_envelope.isCanonicalEmailDomain,
384
385
  isCapabilitySubset: () => isCapabilitySubset,
385
386
  isDigest: () => isDigest,
386
387
  isEvmAddress: () => isEvmAddress,
387
388
  isExplicitOnlyAction: () => isExplicitOnlyAction,
388
- isNetworkId: () => import_sdk_services9.isNetworkId,
389
+ isNetworkId: () => import_sdk_services10.isNetworkId,
389
390
  isPlausibleOpenKeyActionId: () => isPlausibleOpenKeyActionId,
390
- isStorageFullError: () => import_sdk_services9.isStorageFullError,
391
+ isStorageFullError: () => import_sdk_services10.isStorageFullError,
391
392
  isV2ShareLink: () => isV2ShareLink,
392
393
  issuedCredentialEnvelopeFromVerified: () => issuedCredentialEnvelopeFromVerified,
393
394
  jcsCanonicalize: () => jcsCanonicalize,
@@ -400,36 +401,36 @@ __export(index_exports, {
400
401
  manifestAbilitiesUnion: () => manifestAbilitiesUnion,
401
402
  markDelegationTerminal: () => markDelegationTerminal,
402
403
  multiaddrToHttpUrl: () => multiaddrToHttpUrl,
403
- networkDiscoveryKey: () => import_sdk_services9.networkDiscoveryKey,
404
+ networkDiscoveryKey: () => import_sdk_services10.networkDiscoveryKey,
404
405
  normalizeDefaults: () => normalizeDefaults,
405
406
  normalizeJson: () => normalizeJson,
406
407
  normalizeShareActions: () => normalizeShareActions,
407
408
  normalizeShareRecipientTarget: () => normalizeShareRecipientTarget,
408
409
  normalizeShareResource: () => normalizeShareResource,
409
410
  normalizeUnifiedPolicyCapability: () => normalizeUnifiedPolicyCapability,
410
- ok: () => import_sdk_services9.ok,
411
- openWrappedKey: () => import_sdk_services9.openWrappedKey,
411
+ ok: () => import_sdk_services10.ok,
412
+ openWrappedKey: () => import_sdk_services10.openWrappedKey,
412
413
  parseCanonicalNetworkId: () => parseCanonicalNetworkId,
413
414
  parseCanonicalRecapResource: () => parseCanonicalRecapResource,
414
415
  parseCanonicalTinyCloudIdentity: () => parseCanonicalTinyCloudIdentity,
415
416
  parseCanonicalTinyCloudIdentityClaims: () => parseCanonicalTinyCloudIdentityClaims,
416
- parseCapabilityResource: () => import_sdk_services9.parseCapabilityResource,
417
+ parseCapabilityResource: () => import_sdk_services10.parseCapabilityResource,
417
418
  parseCompactUcanAuthorization: () => parseCompactUcanAuthorization,
418
419
  parseExpiry: () => parseExpiry,
419
- parseNetworkId: () => import_sdk_services9.parseNetworkId,
420
+ parseNetworkId: () => import_sdk_services10.parseNetworkId,
420
421
  parseNodeNativePortableDelegation: () => parseNodeNativePortableDelegation,
421
422
  parsePkhDid: () => parsePkhDid,
422
423
  parsePolicySessionUcan: () => parsePolicySessionUcan,
423
424
  parsePortableDelegation: () => parsePortableDelegation,
424
425
  parseRecapCapabilities: () => parseRecapCapabilities,
425
- parseSecretCatalogKey: () => import_sdk_services9.parseSecretCatalogKey,
426
+ parseSecretCatalogKey: () => import_sdk_services10.parseSecretCatalogKey,
426
427
  parseShareArtifact: () => parseShareArtifact,
427
428
  parseShareUrl: () => parseShareUrl,
428
429
  parseSignedCompactUcanAttenuation: () => parseSignedCompactUcanAttenuation,
429
430
  parseSignedSiweCacao: () => parseSignedSiweCacao,
430
431
  parseSpaceUri: () => parseSpaceUri,
431
- parseStorageRejection: () => import_sdk_services9.parseStorageRejection,
432
- parseStorageStatus: () => import_sdk_services9.parseStorageStatus,
432
+ parseStorageRejection: () => import_sdk_services10.parseStorageRejection,
433
+ parseStorageStatus: () => import_sdk_services10.parseStorageStatus,
433
434
  pkhDid: () => pkhDid,
434
435
  policyCidFromCanonicalBytes: () => policyCidFromCanonicalBytes,
435
436
  policyDigestHex: () => policyDigestHex,
@@ -450,8 +451,8 @@ __export(index_exports, {
450
451
  resolveManifest: () => resolveManifest,
451
452
  resolveManifestKnowledgeRoot: () => resolveManifestKnowledgeRoot,
452
453
  resolveOwnerHosts: () => resolveOwnerHosts,
453
- resolveSecretListPrefix: () => import_sdk_services9.resolveSecretListPrefix,
454
- resolveSecretPath: () => import_sdk_services9.resolveSecretPath,
454
+ resolveSecretListPrefix: () => import_sdk_services10.resolveSecretListPrefix,
455
+ resolveSecretPath: () => import_sdk_services10.resolveSecretPath,
455
456
  resolveTinyCloudHosts: () => resolveTinyCloudHosts,
456
457
  resourceCapabilitiesToAbilitiesMap: () => resourceCapabilitiesToAbilitiesMap,
457
458
  resourceCapabilitiesToSpaceAbilitiesMap: () => resourceCapabilitiesToSpaceAbilitiesMap,
@@ -459,7 +460,7 @@ __export(index_exports, {
459
460
  revokePolicyRootV3: () => revokePolicyRootV3,
460
461
  serializeJcsJson: () => serialize,
461
462
  serializePortableDelegation: () => serializePortableDelegation,
462
- serviceError: () => import_sdk_services9.serviceError,
463
+ serviceError: () => import_sdk_services10.serviceError,
463
464
  sha256Base64Url: () => sha256Base64Url,
464
465
  shareCapabilityAllows: () => shareCapabilityAllows,
465
466
  shortDeliveryLinkBodyCid: () => shortDeliveryLinkBodyCid,
@@ -470,9 +471,9 @@ __export(index_exports, {
470
471
  signPolicyCredentialPresentationV4: () => signPolicyCredentialPresentationV4,
471
472
  signShareEnvelope: () => signShareEnvelope,
472
473
  signedObjectIdFor: () => signedObjectIdFor,
473
- storageUsageState: () => import_sdk_services9.storageUsageState,
474
+ storageUsageState: () => import_sdk_services10.storageUsageState,
474
475
  submitHostDelegation: () => submitHostDelegation,
475
- tinyCloudDebugLogger: () => import_sdk_services9.tinyCloudDebugLogger,
476
+ tinyCloudDebugLogger: () => import_sdk_services10.tinyCloudDebugLogger,
476
477
  toSignedObjectError: () => toSignedObjectError,
477
478
  unauthorizedRecapCapabilities: () => unauthorizedRecapCapabilities,
478
479
  unifiedNativeProjectionHashHex: () => unifiedNativeProjectionHashHex,
@@ -484,7 +485,7 @@ __export(index_exports, {
484
485
  validateCredentialFlowDescriptor: () => validateCredentialFlowDescriptor,
485
486
  validateCredentialHolderBinding: () => validateCredentialHolderBinding,
486
487
  validateCredentialRequirement: () => validateCredentialRequirement,
487
- validateEnvelope: () => import_sdk_services9.validateEnvelope,
488
+ validateEnvelope: () => import_sdk_services10.validateEnvelope,
488
489
  validateLocationRecord: () => validateLocationRecord,
489
490
  validateLocationRecordPayload: () => validateLocationRecordPayload,
490
491
  validateManifest: () => validateManifest,
@@ -502,8 +503,8 @@ __export(index_exports, {
502
503
  validatePolicyStatusUnsigned: () => validatePolicyStatusUnsigned,
503
504
  validatePolicyUnsigned: () => validatePolicyUnsigned,
504
505
  validateUnifiedPolicyV2: () => validateUnifiedPolicyV2,
505
- validatedCapabilityOf: () => import_sdk_services9.validatedCapabilityOf,
506
- verifyDecryptResponse: () => import_sdk_services9.verifyDecryptResponse,
506
+ validatedCapabilityOf: () => import_sdk_services10.validatedCapabilityOf,
507
+ verifyDecryptResponse: () => import_sdk_services10.verifyDecryptResponse,
507
508
  verifyDidKeyEd25519Signature: () => verifyDidKeyEd25519Signature,
508
509
  verifyEip191MessageSignature: () => verifyEip191MessageSignature,
509
510
  verifyIssuedCredential: () => verifyIssuedCredential,
@@ -3947,6 +3948,7 @@ var import_sha256 = require("@noble/hashes/sha256");
3947
3948
  var import_blake3 = require("@noble/hashes/blake3");
3948
3949
  var import_ed255193 = require("@noble/curves/ed25519");
3949
3950
  var import_zod2 = require("zod");
3951
+ var import_sdk_services2 = require("@tinycloud/sdk-services");
3950
3952
 
3951
3953
  // src/http-error.ts
3952
3954
  var import_sdk_services = require("@tinycloud/sdk-services");
@@ -4215,12 +4217,9 @@ function parseKvResource(resource) {
4215
4217
  return { space, path };
4216
4218
  }
4217
4219
  function parseEncryptionResource(resource) {
4218
- if (!resource.startsWith("urn:tinycloud:encryption:")) throw new Error("encryption capability is invalid");
4219
- const rest = resource.slice("urn:tinycloud:encryption:".length);
4220
- const separator = rest.lastIndexOf(":");
4221
- const ownerDid = separator < 0 ? "" : rest.slice(0, separator);
4222
- const network = separator < 0 ? "" : rest.slice(separator + 1);
4223
- if (!ownerDid.startsWith("did:") || network.length === 0 || network.includes(":") || network.includes("/") || network.includes("%") || network.includes("?") || network.includes("#")) {
4220
+ try {
4221
+ if ((0, import_sdk_services2.parseEncryptionResource)(resource).keyPath?.endsWith("/")) throw new Error("prefix");
4222
+ } catch {
4224
4223
  throw new Error("encryption capability is invalid");
4225
4224
  }
4226
4225
  }
@@ -7768,7 +7767,8 @@ function validateEncodedShareData(data) {
7768
7767
  // src/manifest.ts
7769
7768
  var import_ms = __toESM(require("ms"), 1);
7770
7769
  var import_bootstrap2 = require("@tinycloud/bootstrap");
7771
- var import_sdk_services2 = require("@tinycloud/sdk-services");
7770
+ var import_sdk_services3 = require("@tinycloud/sdk-services");
7771
+ var import_resource = require("@tinycloud/sdk-services/encryption/resource");
7772
7772
  var DEFAULT_KNOWLEDGE_ROOT = "knowledge/index.md";
7773
7773
  var ManifestValidationError = class extends Error {
7774
7774
  constructor(message) {
@@ -7891,11 +7891,13 @@ function expandEncryptionPermissionEntry(entry) {
7891
7891
  `tinycloud.encryption entries require path to be a networkId URN (got ${JSON.stringify(entry.path)})`
7892
7892
  );
7893
7893
  }
7894
- if (entry.path.includes("/")) {
7894
+ const sharePrefix = entry.path.endsWith("/share/");
7895
+ if (entry.path.includes("/") && !sharePrefix) {
7895
7896
  throw new ManifestValidationError("named keys go in manifest.keys");
7896
7897
  }
7897
7898
  try {
7898
- (0, import_sdk_services2.parseNetworkId)(entry.path);
7899
+ const network = (0, import_sdk_services3.parseNetworkId)(sharePrefix ? entry.path.slice(0, -"/share/".length) : entry.path);
7900
+ if (sharePrefix && network.name !== "default") throw new Error("share prefix requires default network");
7899
7901
  } catch {
7900
7902
  throw new ManifestValidationError("tinycloud.encryption entries require a valid networkId URN");
7901
7903
  }
@@ -7930,6 +7932,9 @@ function expandEncryptionPermissionEntry(entry) {
7930
7932
  seen.add(a);
7931
7933
  }
7932
7934
  }
7935
+ if (sharePrefix && dedupedActions.some((action) => action !== "tinycloud.encryption/decrypt")) {
7936
+ throw new ManifestValidationError("share prefix only supports decrypt");
7937
+ }
7933
7938
  return [
7934
7939
  {
7935
7940
  service: ENCRYPTION_PERMISSION_SERVICE,
@@ -7945,6 +7950,29 @@ function expandEncryptionPermissionEntry(entry) {
7945
7950
  function expandPermissionEntries(entries) {
7946
7951
  return entries.flatMap(expandPermissionEntry);
7947
7952
  }
7953
+ function expandDelegationPermissionEntries(entries) {
7954
+ return entries.flatMap((entry) => {
7955
+ if (entry.service !== ENCRYPTION_PERMISSION_SERVICE || typeof entry.path !== "string" || !entry.path.includes("/")) {
7956
+ return expandPermissionEntry(entry);
7957
+ }
7958
+ let resource;
7959
+ try {
7960
+ resource = (0, import_resource.parseEncryptionResource)(entry.path);
7961
+ } catch {
7962
+ throw new ManifestValidationError("delegation requires a canonical exact named-key resource");
7963
+ }
7964
+ if (resource.kind !== "key" || !Array.isArray(entry.actions) || entry.actions.length === 0 || entry.actions.some((action) => action !== "decrypt" && action !== "tinycloud.encryption/decrypt")) {
7965
+ throw new ManifestValidationError("named-key delegation requires an exact key and decrypt only");
7966
+ }
7967
+ return [{
7968
+ ...entry,
7969
+ space: ENCRYPTION_MANIFEST_SPACE,
7970
+ path: `${resource.networkId}/${resource.path}`,
7971
+ actions: ["tinycloud.encryption/decrypt"],
7972
+ skipPrefix: true
7973
+ }];
7974
+ });
7975
+ }
7948
7976
  function applyPrefix(prefix, path, skipPrefix) {
7949
7977
  if (skipPrefix) {
7950
7978
  return path;
@@ -8097,13 +8125,13 @@ function validateManifestSecrets(secrets) {
8097
8125
  throw new ManifestValidationError("manifest.secrets must be an object");
8098
8126
  }
8099
8127
  for (const [name2, spec] of Object.entries(secrets)) {
8100
- if (!import_sdk_services2.SECRET_NAME_RE.test(name2)) {
8128
+ if (!import_sdk_services3.SECRET_NAME_RE.test(name2)) {
8101
8129
  throw new ManifestValidationError(
8102
- `manifest.secrets.${name2} must match ${import_sdk_services2.SECRET_NAME_RE.source}`
8130
+ `manifest.secrets.${name2} must match ${import_sdk_services3.SECRET_NAME_RE.source}`
8103
8131
  );
8104
8132
  }
8105
8133
  try {
8106
- (0, import_sdk_services2.resolveSecretPath)(
8134
+ (0, import_sdk_services3.resolveSecretPath)(
8107
8135
  secretNameFromSpec(name2, spec),
8108
8136
  { scope: secretScopeFromSpec(spec) }
8109
8137
  );
@@ -8320,7 +8348,7 @@ function secretEntriesForManifest(secrets) {
8320
8348
  const entries = [];
8321
8349
  for (const [name2, spec] of Object.entries(secrets)) {
8322
8350
  const actions = secretActionsFromSpec(name2, spec);
8323
- const secretPath = (0, import_sdk_services2.resolveSecretPath)(
8351
+ const secretPath = (0, import_sdk_services3.resolveSecretPath)(
8324
8352
  secretNameFromSpec(name2, spec),
8325
8353
  { scope: secretScopeFromSpec(spec) }
8326
8354
  );
@@ -8590,6 +8618,7 @@ function manifestAbilitiesUnion(resolved) {
8590
8618
  }
8591
8619
 
8592
8620
  // src/capabilities.ts
8621
+ var import_resource2 = require("@tinycloud/sdk-services/encryption/resource");
8593
8622
  var PermissionNotInManifestError = class extends Error {
8594
8623
  constructor(missing, granted) {
8595
8624
  super(
@@ -8641,10 +8670,9 @@ function isCapabilitySubset(requested, granted) {
8641
8670
  const grantedActions = matchingScope.flatMap(
8642
8671
  (entry) => expandActionShortNames(entry.service, entry.actions)
8643
8672
  );
8673
+ const namedKeyRequest = req.service === "tinycloud.encryption" && req.path.startsWith("urn:tinycloud:encryption:") && req.path.includes("/");
8644
8674
  const covered = requestedActions.every(
8645
- (requestedAction) => grantedActions.some(
8646
- (grantedAction) => actionContains(grantedAction, requestedAction)
8647
- )
8675
+ (requestedAction) => grantedActions.some((grantedAction) => namedKeyRequest ? grantedAction === requestedAction : actionContains(grantedAction, requestedAction))
8648
8676
  );
8649
8677
  if (!covered) {
8650
8678
  missing.push(cloneEntry(req));
@@ -8659,7 +8687,9 @@ function canonicalizeEntryScopeMatches(requested, granted) {
8659
8687
  if (normalizeSpace(requested.space ?? DEFAULT_MANIFEST_SPACE) !== normalizeSpace(granted.space ?? DEFAULT_MANIFEST_SPACE)) {
8660
8688
  return false;
8661
8689
  }
8662
- if (!pathContains2(granted.path, requested.path)) {
8690
+ const namedKeyRequest = requested.service === "tinycloud.encryption" && requested.path.startsWith("urn:tinycloud:encryption:") && requested.path.includes("/");
8691
+ const coveredPath = namedKeyRequest ? (0, import_resource2.encryptionResourceContains)(granted.path, requested.path) : pathContains2(granted.path, requested.path);
8692
+ if (!coveredPath) {
8663
8693
  return false;
8664
8694
  }
8665
8695
  if (!recapCaveatsEqual(requested.caveats, granted.caveats)) {
@@ -8771,7 +8801,7 @@ function parseRecapCapabilities(parseWasm, siwe) {
8771
8801
  var import_ed255197 = require("@noble/curves/ed25519");
8772
8802
 
8773
8803
  // src/delegations/ShareRecipientClient.ts
8774
- var import_sdk_services3 = require("@tinycloud/sdk-services");
8804
+ var import_sdk_services4 = require("@tinycloud/sdk-services");
8775
8805
  var import_ed255196 = require("@noble/curves/ed25519");
8776
8806
  var import_sha2565 = require("@noble/hashes/sha256");
8777
8807
 
@@ -9958,9 +9988,9 @@ function redactedCode(error) {
9958
9988
  if (error instanceof ShareConflict) return error.code;
9959
9989
  const code3 = error && typeof error === "object" && "code" in error ? error.code : void 0;
9960
9990
  if (typeof code3 !== "string") return "SHARE_INVALID";
9961
- if (code3 === import_sdk_services3.ErrorCodes.KV_PRECONDITION_FAILED || code3 === "412") return "SHARE_CONFLICT";
9962
- if (code3 === import_sdk_services3.ErrorCodes.NODE_BUSY || code3 === import_sdk_services3.ErrorCodes.REQUEST_TIMEOUT) return "SHARE_OFFLINE";
9963
- if (code3 === import_sdk_services3.ErrorCodes.OUTCOME_UNKNOWN) return "SHARE_WRITE_FAILED";
9991
+ if (code3 === import_sdk_services4.ErrorCodes.KV_PRECONDITION_FAILED || code3 === "412") return "SHARE_CONFLICT";
9992
+ if (code3 === import_sdk_services4.ErrorCodes.NODE_BUSY || code3 === import_sdk_services4.ErrorCodes.REQUEST_TIMEOUT) return "SHARE_OFFLINE";
9993
+ if (code3 === import_sdk_services4.ErrorCodes.OUTCOME_UNKNOWN) return "SHARE_WRITE_FAILED";
9964
9994
  if (code3 === "KV_NOT_FOUND" || code3 === "NOT_FOUND" || code3 === "404") return "SHARE_NOT_FOUND";
9965
9995
  if (code3.includes("EXPIRED") || code3 === "expired") return "SHARE_EXPIRED";
9966
9996
  if (code3.includes("REVOK")) return "SHARE_REVOKED";
@@ -10199,7 +10229,7 @@ var ShareRecipientClient = class {
10199
10229
  if (portableDelegation !== void 0 && kv !== void 0) {
10200
10230
  const result2 = await kv.put(resolvedPath, bytes2, { contentType: input.contentType ?? envelope.content.mimeType, ifMatch: input.etag });
10201
10231
  if (!result2.ok) {
10202
- if (result2.error.code === import_sdk_services3.ErrorCodes.KV_PRECONDITION_FAILED) throw new ShareConflict(resolvedPath, result2.error.meta?.etag);
10232
+ if (result2.error.code === import_sdk_services4.ErrorCodes.KV_PRECONDITION_FAILED) throw new ShareConflict(resolvedPath, result2.error.meta?.etag);
10203
10233
  throw result2.error;
10204
10234
  }
10205
10235
  return { etag: result2.data.headers.etag };
@@ -10207,7 +10237,7 @@ var ShareRecipientClient = class {
10207
10237
  if (policySession !== void 0) return this.nativeSave(envelope, policySession, resolvedPath, bytes2, input);
10208
10238
  const result = await kv.put(resolvedPath, bytes2, { contentType: input.contentType ?? envelope.content.mimeType, ifMatch: input.etag });
10209
10239
  if (!result.ok) {
10210
- if (result.error.code === import_sdk_services3.ErrorCodes.KV_PRECONDITION_FAILED) throw new ShareConflict(resolvedPath, result.error.meta?.etag);
10240
+ if (result.error.code === import_sdk_services4.ErrorCodes.KV_PRECONDITION_FAILED) throw new ShareConflict(resolvedPath, result.error.meta?.etag);
10211
10241
  throw result.error;
10212
10242
  }
10213
10243
  return { etag: result.data.headers.etag };
@@ -10291,8 +10321,8 @@ var ShareRecipientClient = class {
10291
10321
  if (this.options.createKVService !== void 0) {
10292
10322
  return this.options.createKVService({ hosts: [origin2], session, invoke, fetch: this.fetchFn });
10293
10323
  }
10294
- const context = new import_sdk_services3.ServiceContext({ hosts: [origin2], session, invoke, fetch: this.fetchFn });
10295
- const service = new import_sdk_services3.KVService({ prefix: "" });
10324
+ const context = new import_sdk_services4.ServiceContext({ hosts: [origin2], session, invoke, fetch: this.fetchFn });
10325
+ const service = new import_sdk_services4.KVService({ prefix: "" });
10296
10326
  context.registerService("kv", service);
10297
10327
  service.initialize(context);
10298
10328
  return service;
@@ -12840,14 +12870,14 @@ function markDelegationTerminal(token, key) {
12840
12870
  }
12841
12871
 
12842
12872
  // src/networkId.ts
12843
- var import_sdk_services4 = require("@tinycloud/sdk-services");
12873
+ var import_sdk_services5 = require("@tinycloud/sdk-services");
12844
12874
  function canonicalizeNetworkId(networkId) {
12845
- const parsed = (0, import_sdk_services4.parseNetworkId)(networkId);
12846
- return (0, import_sdk_services4.buildNetworkId)(canonicalizeDid(parsed.ownerDid), parsed.name);
12875
+ const parsed = (0, import_sdk_services5.parseNetworkId)(networkId);
12876
+ return (0, import_sdk_services5.buildNetworkId)(canonicalizeDid(parsed.ownerDid), parsed.name);
12847
12877
  }
12848
12878
  function parseCanonicalNetworkId(networkId) {
12849
12879
  const canonical = canonicalizeNetworkId(networkId);
12850
- return (0, import_sdk_services4.parseNetworkId)(canonical);
12880
+ return (0, import_sdk_services5.parseNetworkId)(canonical);
12851
12881
  }
12852
12882
 
12853
12883
  // src/storage.schema.ts
@@ -12955,10 +12985,10 @@ function validatePersistedSessionData(data) {
12955
12985
  }
12956
12986
 
12957
12987
  // src/TinyCloud.ts
12958
- var import_sdk_services6 = require("@tinycloud/sdk-services");
12988
+ var import_sdk_services7 = require("@tinycloud/sdk-services");
12959
12989
 
12960
12990
  // src/spaces/SpaceService.ts
12961
- var import_sdk_services5 = require("@tinycloud/sdk-services");
12991
+ var import_sdk_services6 = require("@tinycloud/sdk-services");
12962
12992
 
12963
12993
  // src/spaces/Space.ts
12964
12994
  function unavailableSecretsService() {
@@ -13393,8 +13423,8 @@ var SpaceService = class {
13393
13423
  */
13394
13424
  async list() {
13395
13425
  if (!this.session) {
13396
- return (0, import_sdk_services5.err)(
13397
- (0, import_sdk_services5.serviceError)(SpaceErrorCodes.AUTH_REQUIRED, "Authentication required", SERVICE_NAME)
13426
+ return (0, import_sdk_services6.err)(
13427
+ (0, import_sdk_services6.serviceError)(SpaceErrorCodes.AUTH_REQUIRED, "Authentication required", SERVICE_NAME)
13398
13428
  );
13399
13429
  }
13400
13430
  try {
@@ -13403,8 +13433,8 @@ var SpaceService = class {
13403
13433
  if (ownedResult.ok) {
13404
13434
  spaces.push(...ownedResult.data);
13405
13435
  } else {
13406
- const verdict = (0, import_sdk_services5.authorizationVerdictOf)(ownedResult.error);
13407
- if (verdict === "unauthenticated" || verdict === "forbidden") return (0, import_sdk_services5.err)(ownedResult.error);
13436
+ const verdict = (0, import_sdk_services6.authorizationVerdictOf)(ownedResult.error);
13437
+ if (verdict === "unauthenticated" || verdict === "forbidden") return (0, import_sdk_services6.err)(ownedResult.error);
13408
13438
  }
13409
13439
  if (this.capabilityRegistry) {
13410
13440
  const delegatedSpaces = this.discoverDelegatedSpaces();
@@ -13416,10 +13446,10 @@ var SpaceService = class {
13416
13446
  this.notifySpaceRegistered(space);
13417
13447
  }
13418
13448
  }
13419
- return (0, import_sdk_services5.ok)(uniqueSpaces);
13449
+ return (0, import_sdk_services6.ok)(uniqueSpaces);
13420
13450
  } catch (error) {
13421
- return (0, import_sdk_services5.err)(
13422
- (0, import_sdk_services5.serviceError)(
13451
+ return (0, import_sdk_services6.err)(
13452
+ (0, import_sdk_services6.serviceError)(
13423
13453
  SpaceErrorCodes.NETWORK_ERROR,
13424
13454
  `Failed to list spaces: ${String(error)}`,
13425
13455
  SERVICE_NAME,
@@ -13439,7 +13469,7 @@ var SpaceService = class {
13439
13469
  headers
13440
13470
  });
13441
13471
  if (!response.ok) {
13442
- return (0, import_sdk_services5.err)(await serviceHttpError(
13472
+ return (0, import_sdk_services6.err)(await serviceHttpError(
13443
13473
  response,
13444
13474
  SpaceErrorCodes.NETWORK_ERROR,
13445
13475
  "Failed to list owned spaces",
@@ -13449,8 +13479,8 @@ var SpaceService = class {
13449
13479
  const rawData = await response.json();
13450
13480
  const validationResult = validateServerOwnedSpacesResponse(rawData);
13451
13481
  if (!validationResult.ok) {
13452
- return (0, import_sdk_services5.err)(
13453
- (0, import_sdk_services5.serviceError)(
13482
+ return (0, import_sdk_services6.err)(
13483
+ (0, import_sdk_services6.serviceError)(
13454
13484
  SpaceErrorCodes.NETWORK_ERROR,
13455
13485
  validationResult.error.message,
13456
13486
  SERVICE_NAME,
@@ -13466,10 +13496,10 @@ var SpaceService = class {
13466
13496
  permissions: ["*"]
13467
13497
  // Full permissions for owned spaces
13468
13498
  }));
13469
- return (0, import_sdk_services5.ok)(spaces);
13499
+ return (0, import_sdk_services6.ok)(spaces);
13470
13500
  } catch (error) {
13471
- return (0, import_sdk_services5.err)(
13472
- (0, import_sdk_services5.serviceError)(
13501
+ return (0, import_sdk_services6.err)(
13502
+ (0, import_sdk_services6.serviceError)(
13473
13503
  SpaceErrorCodes.NETWORK_ERROR,
13474
13504
  `Network error listing owned spaces: ${String(error)}`,
13475
13505
  SERVICE_NAME,
@@ -13550,13 +13580,13 @@ var SpaceService = class {
13550
13580
  */
13551
13581
  async create(name2) {
13552
13582
  if (!this.session) {
13553
- return (0, import_sdk_services5.err)(
13554
- (0, import_sdk_services5.serviceError)(SpaceErrorCodes.AUTH_REQUIRED, "Authentication required", SERVICE_NAME)
13583
+ return (0, import_sdk_services6.err)(
13584
+ (0, import_sdk_services6.serviceError)(SpaceErrorCodes.AUTH_REQUIRED, "Authentication required", SERVICE_NAME)
13555
13585
  );
13556
13586
  }
13557
13587
  if (!name2 || !/^[a-zA-Z0-9_-]+$/.test(name2)) {
13558
- return (0, import_sdk_services5.err)(
13559
- (0, import_sdk_services5.serviceError)(
13588
+ return (0, import_sdk_services6.err)(
13589
+ (0, import_sdk_services6.serviceError)(
13560
13590
  SpaceErrorCodes.INVALID_NAME,
13561
13591
  "Space name must contain only alphanumeric characters, underscores, and hyphens",
13562
13592
  SERVICE_NAME
@@ -13572,14 +13602,14 @@ var SpaceService = class {
13572
13602
  });
13573
13603
  if (!response.ok) {
13574
13604
  if (response.status === 409) {
13575
- return (0, import_sdk_services5.err)(await serviceHttpError(
13605
+ return (0, import_sdk_services6.err)(await serviceHttpError(
13576
13606
  response,
13577
13607
  SpaceErrorCodes.ALREADY_EXISTS,
13578
13608
  `Space "${name2}" already exists`,
13579
13609
  SERVICE_NAME
13580
13610
  ));
13581
13611
  }
13582
- return (0, import_sdk_services5.err)(await serviceHttpError(
13612
+ return (0, import_sdk_services6.err)(await serviceHttpError(
13583
13613
  response,
13584
13614
  SpaceErrorCodes.CREATION_FAILED,
13585
13615
  "Failed to create space",
@@ -13589,8 +13619,8 @@ var SpaceService = class {
13589
13619
  const rawData = await response.json();
13590
13620
  const validationResult = validateServerCreateSpaceResponse(rawData);
13591
13621
  if (!validationResult.ok) {
13592
- return (0, import_sdk_services5.err)(
13593
- (0, import_sdk_services5.serviceError)(
13622
+ return (0, import_sdk_services6.err)(
13623
+ (0, import_sdk_services6.serviceError)(
13594
13624
  SpaceErrorCodes.CREATION_FAILED,
13595
13625
  validationResult.error.message,
13596
13626
  SERVICE_NAME,
@@ -13607,10 +13637,10 @@ var SpaceService = class {
13607
13637
  };
13608
13638
  this.infoCache.set(spaceInfo.id, { info: spaceInfo, cachedAt: Date.now() });
13609
13639
  this.notifySpaceRegistered(spaceInfo);
13610
- return (0, import_sdk_services5.ok)(spaceInfo);
13640
+ return (0, import_sdk_services6.ok)(spaceInfo);
13611
13641
  } catch (error) {
13612
- return (0, import_sdk_services5.err)(
13613
- (0, import_sdk_services5.serviceError)(
13642
+ return (0, import_sdk_services6.err)(
13643
+ (0, import_sdk_services6.serviceError)(
13614
13644
  SpaceErrorCodes.NETWORK_ERROR,
13615
13645
  `Network error creating space: ${String(error)}`,
13616
13646
  SERVICE_NAME,
@@ -13680,10 +13710,10 @@ var SpaceService = class {
13680
13710
  const spaceId = this.resolveSpaceId(nameOrUri);
13681
13711
  const cached = this.infoCache.get(spaceId);
13682
13712
  if (cached && Date.now() - cached.cachedAt < this.cacheTTL) {
13683
- return (0, import_sdk_services5.ok)(true);
13713
+ return (0, import_sdk_services6.ok)(true);
13684
13714
  }
13685
13715
  const infoResult = await this.getSpaceInfo(spaceId);
13686
- return (0, import_sdk_services5.ok)(infoResult.ok);
13716
+ return (0, import_sdk_services6.ok)(infoResult.ok);
13687
13717
  }
13688
13718
  // ===========================================================================
13689
13719
  // Space Info
@@ -13694,11 +13724,11 @@ var SpaceService = class {
13694
13724
  async getSpaceInfo(spaceId) {
13695
13725
  const cached = this.infoCache.get(spaceId);
13696
13726
  if (cached && Date.now() - cached.cachedAt < this.cacheTTL) {
13697
- return (0, import_sdk_services5.ok)(cached.info);
13727
+ return (0, import_sdk_services6.ok)(cached.info);
13698
13728
  }
13699
13729
  if (!this.session) {
13700
- return (0, import_sdk_services5.err)(
13701
- (0, import_sdk_services5.serviceError)(SpaceErrorCodes.AUTH_REQUIRED, "Authentication required", SERVICE_NAME)
13730
+ return (0, import_sdk_services6.err)(
13731
+ (0, import_sdk_services6.serviceError)(SpaceErrorCodes.AUTH_REQUIRED, "Authentication required", SERVICE_NAME)
13702
13732
  );
13703
13733
  }
13704
13734
  try {
@@ -13710,14 +13740,14 @@ var SpaceService = class {
13710
13740
  });
13711
13741
  if (!response.ok) {
13712
13742
  if (response.status === 404) {
13713
- return (0, import_sdk_services5.err)(await serviceHttpError(
13743
+ return (0, import_sdk_services6.err)(await serviceHttpError(
13714
13744
  response,
13715
13745
  SpaceErrorCodes.NOT_FOUND,
13716
13746
  `Space not found: ${spaceId}`,
13717
13747
  SERVICE_NAME
13718
13748
  ));
13719
13749
  }
13720
- return (0, import_sdk_services5.err)(await serviceHttpError(
13750
+ return (0, import_sdk_services6.err)(await serviceHttpError(
13721
13751
  response,
13722
13752
  SpaceErrorCodes.NETWORK_ERROR,
13723
13753
  "Failed to get space info",
@@ -13727,8 +13757,8 @@ var SpaceService = class {
13727
13757
  const rawData = await response.json();
13728
13758
  const validationResult = validateServerSpaceInfoResponse(rawData);
13729
13759
  if (!validationResult.ok) {
13730
- return (0, import_sdk_services5.err)(
13731
- (0, import_sdk_services5.serviceError)(
13760
+ return (0, import_sdk_services6.err)(
13761
+ (0, import_sdk_services6.serviceError)(
13732
13762
  SpaceErrorCodes.NETWORK_ERROR,
13733
13763
  validationResult.error.message,
13734
13764
  SERVICE_NAME,
@@ -13746,10 +13776,10 @@ var SpaceService = class {
13746
13776
  expiresAt: data.expiresAt ? new Date(data.expiresAt) : void 0
13747
13777
  };
13748
13778
  this.infoCache.set(spaceId, { info: spaceInfo, cachedAt: Date.now() });
13749
- return (0, import_sdk_services5.ok)(spaceInfo);
13779
+ return (0, import_sdk_services6.ok)(spaceInfo);
13750
13780
  } catch (error) {
13751
- return (0, import_sdk_services5.err)(
13752
- (0, import_sdk_services5.serviceError)(
13781
+ return (0, import_sdk_services6.err)(
13782
+ (0, import_sdk_services6.serviceError)(
13753
13783
  SpaceErrorCodes.NETWORK_ERROR,
13754
13784
  `Network error getting space info: ${String(error)}`,
13755
13785
  SERVICE_NAME,
@@ -13834,7 +13864,7 @@ var SpaceService = class {
13834
13864
  headers
13835
13865
  });
13836
13866
  if (!response.ok) {
13837
- return (0, import_sdk_services5.err)(await serviceHttpError(
13867
+ return (0, import_sdk_services6.err)(await serviceHttpError(
13838
13868
  response,
13839
13869
  SpaceErrorCodes.NETWORK_ERROR,
13840
13870
  "Failed to list delegations",
@@ -13844,8 +13874,8 @@ var SpaceService = class {
13844
13874
  const rawData = await response.json();
13845
13875
  const validationResult = validateServerDelegationsResponse(rawData);
13846
13876
  if (!validationResult.ok) {
13847
- return (0, import_sdk_services5.err)(
13848
- (0, import_sdk_services5.serviceError)(
13877
+ return (0, import_sdk_services6.err)(
13878
+ (0, import_sdk_services6.serviceError)(
13849
13879
  SpaceErrorCodes.NETWORK_ERROR,
13850
13880
  validationResult.error.message,
13851
13881
  SERVICE_NAME,
@@ -13854,10 +13884,10 @@ var SpaceService = class {
13854
13884
  );
13855
13885
  }
13856
13886
  const delegations = transformServerDelegations(validationResult.data, spaceId);
13857
- return (0, import_sdk_services5.ok)(delegations);
13887
+ return (0, import_sdk_services6.ok)(delegations);
13858
13888
  } catch (error) {
13859
- return (0, import_sdk_services5.err)(
13860
- (0, import_sdk_services5.serviceError)(
13889
+ return (0, import_sdk_services6.err)(
13890
+ (0, import_sdk_services6.serviceError)(
13861
13891
  SpaceErrorCodes.NETWORK_ERROR,
13862
13892
  `Network error listing delegations: ${String(error)}`,
13863
13893
  SERVICE_NAME
@@ -13887,7 +13917,7 @@ var SpaceService = class {
13887
13917
  headers
13888
13918
  });
13889
13919
  if (!response.ok) {
13890
- return (0, import_sdk_services5.err)(await serviceHttpError(
13920
+ return (0, import_sdk_services6.err)(await serviceHttpError(
13891
13921
  response,
13892
13922
  SpaceErrorCodes.NETWORK_ERROR,
13893
13923
  "Failed to list received delegations",
@@ -13897,8 +13927,8 @@ var SpaceService = class {
13897
13927
  const rawData = await response.json();
13898
13928
  const validationResult = validateServerDelegationsResponse(rawData);
13899
13929
  if (!validationResult.ok) {
13900
- return (0, import_sdk_services5.err)(
13901
- (0, import_sdk_services5.serviceError)(
13930
+ return (0, import_sdk_services6.err)(
13931
+ (0, import_sdk_services6.serviceError)(
13902
13932
  SpaceErrorCodes.NETWORK_ERROR,
13903
13933
  validationResult.error.message,
13904
13934
  SERVICE_NAME,
@@ -13907,10 +13937,10 @@ var SpaceService = class {
13907
13937
  );
13908
13938
  }
13909
13939
  const delegations = transformServerDelegations(validationResult.data, spaceId);
13910
- return (0, import_sdk_services5.ok)(delegations);
13940
+ return (0, import_sdk_services6.ok)(delegations);
13911
13941
  } catch (error) {
13912
- return (0, import_sdk_services5.err)(
13913
- (0, import_sdk_services5.serviceError)(
13942
+ return (0, import_sdk_services6.err)(
13943
+ (0, import_sdk_services6.serviceError)(
13914
13944
  SpaceErrorCodes.NETWORK_ERROR,
13915
13945
  `Network error listing received delegations: ${String(error)}`,
13916
13946
  SERVICE_NAME
@@ -13922,8 +13952,8 @@ var SpaceService = class {
13922
13952
  if (self.createDelegationFn) {
13923
13953
  return self.createDelegationFn({ ...params, spaceId });
13924
13954
  }
13925
- return (0, import_sdk_services5.err)(
13926
- (0, import_sdk_services5.serviceError)(
13955
+ return (0, import_sdk_services6.err)(
13956
+ (0, import_sdk_services6.serviceError)(
13927
13957
  SpaceErrorCodes.NOT_INITIALIZED,
13928
13958
  "Delegation creation requires a createDelegation function. This should be provided by the platform SDK (web-sdk or node-sdk).",
13929
13959
  SERVICE_NAME
@@ -13944,17 +13974,17 @@ var SpaceService = class {
13944
13974
  body: JSON.stringify({ cid: cid2, spaceId })
13945
13975
  });
13946
13976
  if (!response.ok) {
13947
- return (0, import_sdk_services5.err)(await serviceHttpError(
13977
+ return (0, import_sdk_services6.err)(await serviceHttpError(
13948
13978
  response,
13949
13979
  SpaceErrorCodes.NETWORK_ERROR,
13950
13980
  "Failed to revoke delegation",
13951
13981
  SERVICE_NAME
13952
13982
  ));
13953
13983
  }
13954
- return (0, import_sdk_services5.ok)(void 0);
13984
+ return (0, import_sdk_services6.ok)(void 0);
13955
13985
  } catch (error) {
13956
- return (0, import_sdk_services5.err)(
13957
- (0, import_sdk_services5.serviceError)(
13986
+ return (0, import_sdk_services6.err)(
13987
+ (0, import_sdk_services6.serviceError)(
13958
13988
  SpaceErrorCodes.NETWORK_ERROR,
13959
13989
  `Network error revoking delegation: ${String(error)}`,
13960
13990
  SERVICE_NAME
@@ -13977,18 +14007,18 @@ var SpaceService = class {
13977
14007
  if (self.sharingService) {
13978
14008
  const result = await self.sharingService.generate(params);
13979
14009
  if (!result.ok) {
13980
- return (0, import_sdk_services5.err)(
13981
- (0, import_sdk_services5.serviceError)(
14010
+ return (0, import_sdk_services6.err)(
14011
+ (0, import_sdk_services6.serviceError)(
13982
14012
  SpaceErrorCodes.NETWORK_ERROR,
13983
14013
  result.error.message || "Failed to generate share link",
13984
14014
  SERVICE_NAME
13985
14015
  )
13986
14016
  );
13987
14017
  }
13988
- return (0, import_sdk_services5.ok)(result.data);
14018
+ return (0, import_sdk_services6.ok)(result.data);
13989
14019
  }
13990
- return (0, import_sdk_services5.err)(
13991
- (0, import_sdk_services5.serviceError)(
14020
+ return (0, import_sdk_services6.err)(
14021
+ (0, import_sdk_services6.serviceError)(
13992
14022
  SpaceErrorCodes.NOT_INITIALIZED,
13993
14023
  "SharingService not configured. V2 sharing requires a SharingService instance.",
13994
14024
  SERVICE_NAME
@@ -13996,8 +14026,8 @@ var SpaceService = class {
13996
14026
  );
13997
14027
  },
13998
14028
  async list() {
13999
- return (0, import_sdk_services5.err)(
14000
- (0, import_sdk_services5.serviceError)(
14029
+ return (0, import_sdk_services6.err)(
14030
+ (0, import_sdk_services6.serviceError)(
14001
14031
  SpaceErrorCodes.NOT_INITIALIZED,
14002
14032
  "Listing share links is not supported in v2. Share links are self-contained tokens that are not tracked on the server.",
14003
14033
  SERVICE_NAME
@@ -14005,8 +14035,8 @@ var SpaceService = class {
14005
14035
  );
14006
14036
  },
14007
14037
  async revoke(token) {
14008
- return (0, import_sdk_services5.err)(
14009
- (0, import_sdk_services5.serviceError)(
14038
+ return (0, import_sdk_services6.err)(
14039
+ (0, import_sdk_services6.serviceError)(
14010
14040
  SpaceErrorCodes.NOT_INITIALIZED,
14011
14041
  "Revoking share links by token is not supported in v2. To revoke access, revoke the underlying delegation using space.delegations.revoke(cid).",
14012
14042
  SERVICE_NAME
@@ -14066,7 +14096,7 @@ var TinyCloud = class _TinyCloud {
14066
14096
  "hosts are required to initialize services. Provide them via config.hosts or initializeServices()."
14067
14097
  );
14068
14098
  }
14069
- this._serviceContext = new import_sdk_services6.ServiceContext({
14099
+ this._serviceContext = new import_sdk_services7.ServiceContext({
14070
14100
  invoke: effectiveInvoke,
14071
14101
  invokeAny: this.config.invokeAny,
14072
14102
  fetch: fetchFn ?? this.config.fetch ?? globalThis.fetch.bind(globalThis),
@@ -14075,10 +14105,10 @@ var TinyCloud = class _TinyCloud {
14075
14105
  telemetry: this.config.telemetry
14076
14106
  });
14077
14107
  const serviceConstructors = {
14078
- kv: import_sdk_services6.KVService,
14079
- sql: import_sdk_services6.SQLService,
14080
- duckdb: import_sdk_services6.DuckDbService,
14081
- hooks: import_sdk_services6.HooksService,
14108
+ kv: import_sdk_services7.KVService,
14109
+ sql: import_sdk_services7.SQLService,
14110
+ duckdb: import_sdk_services7.DuckDbService,
14111
+ hooks: import_sdk_services7.HooksService,
14082
14112
  ...this.config.services
14083
14113
  };
14084
14114
  for (const [name2, ServiceClass] of Object.entries(serviceConstructors)) {
@@ -14342,18 +14372,18 @@ var TinyCloud = class _TinyCloud {
14342
14372
  const address = this.address();
14343
14373
  const chainId = this.chainId();
14344
14374
  if (!address || !chainId) {
14345
- return (0, import_sdk_services6.err)(
14346
- (0, import_sdk_services6.serviceError)(
14347
- import_sdk_services6.ErrorCodes.AUTH_REQUIRED,
14375
+ return (0, import_sdk_services7.err)(
14376
+ (0, import_sdk_services7.serviceError)(
14377
+ import_sdk_services7.ErrorCodes.AUTH_REQUIRED,
14348
14378
  "Must be signed in to ensure public space",
14349
14379
  "public-space"
14350
14380
  )
14351
14381
  );
14352
14382
  }
14353
14383
  if (!this._serviceContext) {
14354
- return (0, import_sdk_services6.err)(
14355
- (0, import_sdk_services6.serviceError)(
14356
- import_sdk_services6.ErrorCodes.AUTH_REQUIRED,
14384
+ return (0, import_sdk_services7.err)(
14385
+ (0, import_sdk_services7.serviceError)(
14386
+ import_sdk_services7.ErrorCodes.AUTH_REQUIRED,
14357
14387
  "Services not initialized. Call initializeServices() or signIn() first.",
14358
14388
  "public-space"
14359
14389
  )
@@ -14363,9 +14393,9 @@ var TinyCloud = class _TinyCloud {
14363
14393
  try {
14364
14394
  const session = this._serviceContext.session;
14365
14395
  if (!session) {
14366
- return (0, import_sdk_services6.err)(
14367
- (0, import_sdk_services6.serviceError)(
14368
- import_sdk_services6.ErrorCodes.AUTH_REQUIRED,
14396
+ return (0, import_sdk_services7.err)(
14397
+ (0, import_sdk_services7.serviceError)(
14398
+ import_sdk_services7.ErrorCodes.AUTH_REQUIRED,
14369
14399
  "No active session",
14370
14400
  "public-space"
14371
14401
  )
@@ -14382,7 +14412,7 @@ var TinyCloud = class _TinyCloud {
14382
14412
  { method: "POST", headers, body: JSON.stringify({ spaceId }) }
14383
14413
  );
14384
14414
  if (response.ok) {
14385
- return (0, import_sdk_services6.ok)(void 0);
14415
+ return (0, import_sdk_services7.ok)(void 0);
14386
14416
  }
14387
14417
  if (response.status === 404) {
14388
14418
  const createHeaders = this._serviceContext.invoke(
@@ -14401,27 +14431,27 @@ var TinyCloud = class _TinyCloud {
14401
14431
  );
14402
14432
  if (!createResponse.ok) {
14403
14433
  if (createResponse.status === 409) {
14404
- return (0, import_sdk_services6.ok)(void 0);
14434
+ return (0, import_sdk_services7.ok)(void 0);
14405
14435
  }
14406
- return (0, import_sdk_services6.err)(await serviceHttpError(
14436
+ return (0, import_sdk_services7.err)(await serviceHttpError(
14407
14437
  createResponse,
14408
- import_sdk_services6.ErrorCodes.NETWORK_ERROR,
14438
+ import_sdk_services7.ErrorCodes.NETWORK_ERROR,
14409
14439
  "Failed to create public space",
14410
14440
  "public-space"
14411
14441
  ));
14412
14442
  }
14413
- return (0, import_sdk_services6.ok)(void 0);
14443
+ return (0, import_sdk_services7.ok)(void 0);
14414
14444
  }
14415
- return (0, import_sdk_services6.err)(await serviceHttpError(
14445
+ return (0, import_sdk_services7.err)(await serviceHttpError(
14416
14446
  response,
14417
- import_sdk_services6.ErrorCodes.NETWORK_ERROR,
14447
+ import_sdk_services7.ErrorCodes.NETWORK_ERROR,
14418
14448
  "Failed to check public space",
14419
14449
  "public-space"
14420
14450
  ));
14421
14451
  } catch (error) {
14422
- return (0, import_sdk_services6.err)(
14423
- (0, import_sdk_services6.serviceError)(
14424
- import_sdk_services6.ErrorCodes.NETWORK_ERROR,
14452
+ return (0, import_sdk_services7.err)(
14453
+ (0, import_sdk_services7.serviceError)(
14454
+ import_sdk_services7.ErrorCodes.NETWORK_ERROR,
14425
14455
  `Network error ensuring public space: ${String(error)}`,
14426
14456
  "public-space",
14427
14457
  { cause: error instanceof Error ? error : void 0 }
@@ -14454,8 +14484,8 @@ var TinyCloud = class _TinyCloud {
14454
14484
  if (!session) {
14455
14485
  throw new Error("No active session. Sign in first.");
14456
14486
  }
14457
- const publicKV = new import_sdk_services6.KVService({ prefix: "" });
14458
- const publicContext = new import_sdk_services6.ServiceContext({
14487
+ const publicKV = new import_sdk_services7.KVService({ prefix: "" });
14488
+ const publicContext = new import_sdk_services7.ServiceContext({
14459
14489
  invoke: this._serviceContext.invoke,
14460
14490
  fetch: this._serviceContext.fetch,
14461
14491
  hosts: this._serviceContext.hosts,
@@ -14488,16 +14518,16 @@ var TinyCloud = class _TinyCloud {
14488
14518
  const response = await doFetch(url, { method: "GET" });
14489
14519
  if (!response.ok) {
14490
14520
  if (response.status === 404) {
14491
- return (0, import_sdk_services6.err)(await serviceHttpError(
14521
+ return (0, import_sdk_services7.err)(await serviceHttpError(
14492
14522
  response,
14493
- import_sdk_services6.ErrorCodes.NOT_FOUND,
14523
+ import_sdk_services7.ErrorCodes.NOT_FOUND,
14494
14524
  `Key not found: ${key} in space ${spaceId}`,
14495
14525
  "public-space"
14496
14526
  ));
14497
14527
  }
14498
- return (0, import_sdk_services6.err)(await serviceHttpError(
14528
+ return (0, import_sdk_services7.err)(await serviceHttpError(
14499
14529
  response,
14500
- import_sdk_services6.ErrorCodes.NETWORK_ERROR,
14530
+ import_sdk_services7.ErrorCodes.NETWORK_ERROR,
14501
14531
  "Failed to read public space",
14502
14532
  "public-space"
14503
14533
  ));
@@ -14514,11 +14544,11 @@ var TinyCloud = class _TinyCloud {
14514
14544
  data = text3;
14515
14545
  }
14516
14546
  }
14517
- return (0, import_sdk_services6.ok)(data);
14547
+ return (0, import_sdk_services7.ok)(data);
14518
14548
  } catch (error) {
14519
- return (0, import_sdk_services6.err)(
14520
- (0, import_sdk_services6.serviceError)(
14521
- import_sdk_services6.ErrorCodes.NETWORK_ERROR,
14549
+ return (0, import_sdk_services7.err)(
14550
+ (0, import_sdk_services7.serviceError)(
14551
+ import_sdk_services7.ErrorCodes.NETWORK_ERROR,
14522
14552
  `Network error reading public space: ${String(error)}`,
14523
14553
  "public-space",
14524
14554
  { cause: error instanceof Error ? error : void 0 }
@@ -14544,7 +14574,7 @@ var TinyCloud = class _TinyCloud {
14544
14574
  };
14545
14575
 
14546
14576
  // src/account/AccountService.ts
14547
- var import_sdk_services7 = require("@tinycloud/sdk-services");
14577
+ var import_sdk_services8 = require("@tinycloud/sdk-services");
14548
14578
  var import_bootstrap3 = require("@tinycloud/bootstrap");
14549
14579
  var SERVICE_NAME2 = "account";
14550
14580
  var ACCOUNT_INDEX_DB = "account";
@@ -14592,7 +14622,7 @@ var AccountService = class {
14592
14622
  applications.push(applicationFromRecord(key, loaded.data.data));
14593
14623
  }
14594
14624
  applications.sort((a, b) => a.appId.localeCompare(b.appId));
14595
- return (0, import_sdk_services7.ok)(applications);
14625
+ return (0, import_sdk_services8.ok)(applications);
14596
14626
  },
14597
14627
  get: async (appId) => {
14598
14628
  const kvResult = this.accountKV();
@@ -14600,14 +14630,14 @@ var AccountService = class {
14600
14630
  const key = applicationKey(appId);
14601
14631
  const loaded = await kvResult.data.get(key);
14602
14632
  if (!loaded.ok) return accountErr(loaded.error);
14603
- return (0, import_sdk_services7.ok)(applicationFromRecord(key, loaded.data.data));
14633
+ return (0, import_sdk_services8.ok)(applicationFromRecord(key, loaded.data.data));
14604
14634
  },
14605
14635
  register: async (manifest, options2 = {}) => {
14606
14636
  const manifests = Array.isArray(manifest) ? manifest : [manifest];
14607
14637
  const request = composeManifestRequest(manifests);
14608
14638
  if (request.registryRecords.length === 0) {
14609
- return (0, import_sdk_services7.err)(
14610
- (0, import_sdk_services7.serviceError)(
14639
+ return (0, import_sdk_services8.err)(
14640
+ (0, import_sdk_services8.serviceError)(
14611
14641
  "INVALID_MANIFEST",
14612
14642
  "Manifest did not produce an account application registry record",
14613
14643
  SERVICE_NAME2
@@ -14641,7 +14671,7 @@ var AccountService = class {
14641
14671
  registered = applicationFromRecord(record2.key, stored);
14642
14672
  await this.upsertApplicationIndexQuietly(registered);
14643
14673
  }
14644
- return (0, import_sdk_services7.ok)(registered);
14674
+ return (0, import_sdk_services8.ok)(registered);
14645
14675
  },
14646
14676
  remove: async (appId) => {
14647
14677
  const kvResult = this.accountKV();
@@ -14649,7 +14679,7 @@ var AccountService = class {
14649
14679
  const removed = await kvResult.data.delete(applicationKey(appId));
14650
14680
  if (!removed.ok) return accountErr(removed.error);
14651
14681
  await this.deleteApplicationIndexQuietly(appId);
14652
- return (0, import_sdk_services7.ok)(void 0);
14682
+ return (0, import_sdk_services8.ok)(void 0);
14653
14683
  }
14654
14684
  };
14655
14685
  this.spaces = {
@@ -14663,7 +14693,7 @@ var AccountService = class {
14663
14693
  if (canonical.data.allRegistered && options2.refreshIndex !== false) {
14664
14694
  await this.replaceSpacesIndexQuietly(canonical.data.spaces);
14665
14695
  }
14666
- return (0, import_sdk_services7.ok)(canonical.data.spaces);
14696
+ return (0, import_sdk_services8.ok)(canonical.data.spaces);
14667
14697
  }
14668
14698
  const kvResult = this.accountKV();
14669
14699
  if (!kvResult.ok) return kvResult;
@@ -14676,14 +14706,14 @@ var AccountService = class {
14676
14706
  spaces.push(spaceFromRecord(key, loaded.data.data));
14677
14707
  }
14678
14708
  spaces.sort((a, b) => a.name.localeCompare(b.name) || a.spaceId.localeCompare(b.spaceId));
14679
- return (0, import_sdk_services7.ok)(spaces);
14709
+ return (0, import_sdk_services8.ok)(spaces);
14680
14710
  },
14681
14711
  get: async (spaceId) => {
14682
14712
  const kvResult = this.accountKV();
14683
14713
  if (!kvResult.ok) return kvResult;
14684
14714
  const loaded = await kvResult.data.get(spaceKey(spaceId));
14685
14715
  if (!loaded.ok) return accountErr(loaded.error);
14686
- return (0, import_sdk_services7.ok)(spaceFromRecord(spaceKey(spaceId), loaded.data.data));
14716
+ return (0, import_sdk_services8.ok)(spaceFromRecord(spaceKey(spaceId), loaded.data.data));
14687
14717
  },
14688
14718
  register: async (space) => {
14689
14719
  await this.config.ensureAccountSpaceHosted?.();
@@ -14694,7 +14724,7 @@ var AccountService = class {
14694
14724
  if (!written.ok) return accountErr(written.error);
14695
14725
  const registered = spaceFromRecord(spaceKey(stored.space_id), stored);
14696
14726
  await this.upsertSpaceIndexQuietly(registered);
14697
- return (0, import_sdk_services7.ok)(registered);
14727
+ return (0, import_sdk_services8.ok)(registered);
14698
14728
  },
14699
14729
  /**
14700
14730
  * Register multiple spaces in one KV batch write + one multi-row index
@@ -14707,7 +14737,7 @@ var AccountService = class {
14707
14737
  * leave the first attempt's blocks orphaned.
14708
14738
  */
14709
14739
  registerBatch: async (spaces) => {
14710
- if (spaces.length === 0) return (0, import_sdk_services7.ok)({ spaces: [] });
14740
+ if (spaces.length === 0) return (0, import_sdk_services8.ok)({ spaces: [] });
14711
14741
  await this.config.ensureAccountSpaceHosted?.();
14712
14742
  const kvResult = this.accountKV();
14713
14743
  if (!kvResult.ok) return kvResult;
@@ -14722,7 +14752,7 @@ var AccountService = class {
14722
14752
  const batchResult = await kvResult.data.batchPut(items);
14723
14753
  if (batchResult.ok) {
14724
14754
  await this.upsertSpacesIndexQuietly(registered);
14725
- return (0, import_sdk_services7.ok)({ spaces: registered });
14755
+ return (0, import_sdk_services8.ok)({ spaces: registered });
14726
14756
  }
14727
14757
  if (!isAmbiguousBatchFailure(batchResult.error)) {
14728
14758
  return accountErr(batchResult.error);
@@ -14735,8 +14765,8 @@ var AccountService = class {
14735
14765
  }
14736
14766
  }
14737
14767
  if (reconcileFailures.length > 0) {
14738
- return (0, import_sdk_services7.err)(
14739
- (0, import_sdk_services7.serviceError)(
14768
+ return (0, import_sdk_services8.err)(
14769
+ (0, import_sdk_services8.serviceError)(
14740
14770
  "KV_BATCH_RECONCILE_FAILED",
14741
14771
  `KV batch write for ${items.length} space(s) failed ambiguously (${batchResult.error.message}) and per-space reconciliation also failed for: ${reconcileFailures.join("; ")}`,
14742
14772
  SERVICE_NAME2,
@@ -14748,7 +14778,7 @@ var AccountService = class {
14748
14778
  `[AccountService] KV batch write for ${items.length} space(s) returned an ambiguous error and was reconciled via per-space fallback. Original error: ${batchResult.error.message}`
14749
14779
  );
14750
14780
  await this.upsertSpacesIndexQuietly(registered);
14751
- return (0, import_sdk_services7.ok)({ spaces: registered, recoveredFromBatchError: batchResult.error });
14781
+ return (0, import_sdk_services8.ok)({ spaces: registered, recoveredFromBatchError: batchResult.error });
14752
14782
  },
14753
14783
  /**
14754
14784
  * Register only spaces without a registry record (TC-800). Existing
@@ -14756,7 +14786,7 @@ var AccountService = class {
14756
14786
  * Bootstrap repair uses this on populated accounts.
14757
14787
  */
14758
14788
  registerMissing: async (spaces) => {
14759
- if (spaces.length === 0) return (0, import_sdk_services7.ok)([]);
14789
+ if (spaces.length === 0) return (0, import_sdk_services8.ok)([]);
14760
14790
  await this.config.ensureAccountSpaceHosted?.();
14761
14791
  const kvResult = this.accountKV();
14762
14792
  if (!kvResult.ok) return kvResult;
@@ -14772,15 +14802,15 @@ var AccountService = class {
14772
14802
  const key = keys[i];
14773
14803
  const result = byKey.get(key);
14774
14804
  if (!result) {
14775
- return (0, import_sdk_services7.err)((0, import_sdk_services7.serviceError)(
14776
- import_sdk_services7.ErrorCodes.NETWORK_ERROR,
14805
+ return (0, import_sdk_services8.err)((0, import_sdk_services8.serviceError)(
14806
+ import_sdk_services8.ErrorCodes.NETWORK_ERROR,
14777
14807
  `KV batch read omitted requested key ${JSON.stringify(key)}`,
14778
14808
  SERVICE_NAME2
14779
14809
  ));
14780
14810
  }
14781
14811
  if (result.ok) {
14782
14812
  final[i] = spaceFromRecord(key, result.data.data);
14783
- } else if (result.error.code === import_sdk_services7.ErrorCodes.KV_NOT_FOUND) {
14813
+ } else if (result.error.code === import_sdk_services8.ErrorCodes.KV_NOT_FOUND) {
14784
14814
  missing.push({ index: i, key, record: stored[i] });
14785
14815
  } else {
14786
14816
  return accountErr(result.error);
@@ -14788,21 +14818,21 @@ var AccountService = class {
14788
14818
  }
14789
14819
  const creates = await Promise.all(missing.map(async ({ index, key, record: record2 }) => {
14790
14820
  const written = await kv.put(key, record2, { ifNoneMatch: "*" });
14791
- if (written.ok) return { index, result: (0, import_sdk_services7.ok)(spaceFromRecord(key, record2)) };
14821
+ if (written.ok) return { index, result: (0, import_sdk_services8.ok)(spaceFromRecord(key, record2)) };
14792
14822
  const raced = await kv.get(key);
14793
- if (raced.ok) return { index, result: (0, import_sdk_services7.ok)(spaceFromRecord(key, raced.data.data)) };
14794
- return { index, result: (0, import_sdk_services7.err)(written.error) };
14823
+ if (raced.ok) return { index, result: (0, import_sdk_services8.ok)(spaceFromRecord(key, raced.data.data)) };
14824
+ return { index, result: (0, import_sdk_services8.err)(written.error) };
14795
14825
  }));
14796
14826
  for (const { index, result } of creates) {
14797
14827
  if (!result.ok) return accountErr(result.error);
14798
14828
  final[index] = result.data;
14799
14829
  }
14800
14830
  await this.upsertSpacesIndexQuietly(final);
14801
- return (0, import_sdk_services7.ok)(final);
14831
+ return (0, import_sdk_services8.ok)(final);
14802
14832
  },
14803
14833
  syncAccessible: async () => {
14804
14834
  const synced = await this.syncAccessibleSpaces({ tolerateStorageFull: false });
14805
- return synced.ok ? (0, import_sdk_services7.ok)(synced.data.spaces) : synced;
14835
+ return synced.ok ? (0, import_sdk_services8.ok)(synced.data.spaces) : synced;
14806
14836
  },
14807
14837
  remove: async (spaceId) => {
14808
14838
  const kvResult = this.accountKV();
@@ -14810,21 +14840,21 @@ var AccountService = class {
14810
14840
  const removed = await kvResult.data.delete(spaceKey(spaceId));
14811
14841
  if (!removed.ok) return accountErr(removed.error);
14812
14842
  await this.deleteSpaceIndexQuietly(spaceId);
14813
- return (0, import_sdk_services7.ok)(void 0);
14843
+ return (0, import_sdk_services8.ok)(void 0);
14814
14844
  }
14815
14845
  };
14816
14846
  this.delegations = {
14817
14847
  query: async (options2 = {}) => {
14818
14848
  const manager = this.config.getDelegationManager?.();
14819
14849
  if (!manager) {
14820
- return (0, import_sdk_services7.err)((0, import_sdk_services7.serviceError)(
14850
+ return (0, import_sdk_services8.err)((0, import_sdk_services8.serviceError)(
14821
14851
  "NOT_INITIALIZED",
14822
14852
  "Delegation history requires an authenticated delegation manager",
14823
14853
  SERVICE_NAME2
14824
14854
  ));
14825
14855
  }
14826
14856
  const queried = await manager.query(options2);
14827
- return queried.ok ? (0, import_sdk_services7.ok)(queried.data) : accountErr(queried.error);
14857
+ return queried.ok ? (0, import_sdk_services8.ok)(queried.data) : accountErr(queried.error);
14828
14858
  },
14829
14859
  list: async (options2 = {}) => {
14830
14860
  if (options2.preferIndex) {
@@ -14858,17 +14888,17 @@ var AccountService = class {
14858
14888
  }
14859
14889
  }
14860
14890
  delegations.sort((a, b) => a.spaceId.localeCompare(b.spaceId) || a.cid.localeCompare(b.cid));
14861
- return (0, import_sdk_services7.ok)(delegations);
14891
+ return (0, import_sdk_services8.ok)(delegations);
14862
14892
  },
14863
14893
  revoke: async (input) => {
14864
14894
  const cid2 = typeof input === "string" ? input : input.cid;
14865
14895
  const manager = this.config.getDelegationManager?.();
14866
14896
  if (manager) {
14867
14897
  const revoked2 = await manager.revoke(cid2);
14868
- return revoked2.ok ? (0, import_sdk_services7.ok)(revoked2.data) : accountErr(revoked2.error);
14898
+ return revoked2.ok ? (0, import_sdk_services8.ok)(revoked2.data) : accountErr(revoked2.error);
14869
14899
  }
14870
14900
  if (typeof input === "string") {
14871
- return (0, import_sdk_services7.err)((0, import_sdk_services7.serviceError)(
14901
+ return (0, import_sdk_services8.err)((0, import_sdk_services8.serviceError)(
14872
14902
  "NOT_INITIALIZED",
14873
14903
  "CID-only revocation requires an authenticated delegation manager",
14874
14904
  SERVICE_NAME2
@@ -14878,7 +14908,7 @@ var AccountService = class {
14878
14908
  if (!space.ok) return space;
14879
14909
  const revoked = await this.config.getSpaces().get(space.data.id).delegations.revoke(cid2);
14880
14910
  if (!revoked.ok) return accountErr(revoked.error);
14881
- return (0, import_sdk_services7.ok)(void 0);
14911
+ return (0, import_sdk_services8.ok)(void 0);
14882
14912
  }
14883
14913
  };
14884
14914
  this.index = {
@@ -14887,7 +14917,7 @@ var AccountService = class {
14887
14917
  if (!dbResult.ok) return dbResult;
14888
14918
  const schema = await this.ensureAccountIndex(dbResult.data);
14889
14919
  if (!schema.ok) return schema;
14890
- return (0, import_sdk_services7.ok)({ database: ACCOUNT_INDEX_DB });
14920
+ return (0, import_sdk_services8.ok)({ database: ACCOUNT_INDEX_DB });
14891
14921
  },
14892
14922
  rebuild: async () => {
14893
14923
  const dbResult = this.accountDb();
@@ -14969,7 +14999,7 @@ var AccountService = class {
14969
14999
  ];
14970
15000
  const rebuilt = await dbResult.data.batch(statements);
14971
15001
  if (!rebuilt.ok) return accountErr(rebuilt.error);
14972
- return (0, import_sdk_services7.ok)({
15002
+ return (0, import_sdk_services8.ok)({
14973
15003
  database: ACCOUNT_INDEX_DB,
14974
15004
  applications: applications.data.length,
14975
15005
  spaces: spaces.data.length,
@@ -14985,7 +15015,7 @@ var AccountService = class {
14985
15015
  "SELECT applications.app_id, name, description, updated_at, manifest_json, application_state.manifest_hash FROM applications LEFT JOIN application_state ON applications.app_id = application_state.app_id ORDER BY applications.app_id"
14986
15016
  );
14987
15017
  if (!queried.ok) return accountErr(queried.error);
14988
- return (0, import_sdk_services7.ok)(queried.data.rows.map(indexedApplicationFromRow));
15018
+ return (0, import_sdk_services8.ok)(queried.data.rows.map(indexedApplicationFromRow));
14989
15019
  }
14990
15020
  },
14991
15021
  spaces: {
@@ -14996,7 +15026,7 @@ var AccountService = class {
14996
15026
  "SELECT space_id, name, owner_did, type, permissions_json, status, registered_at, updated_at, expires_at FROM spaces ORDER BY name, space_id"
14997
15027
  );
14998
15028
  if (!queried.ok) return accountErr(queried.error);
14999
- return (0, import_sdk_services7.ok)(queried.data.rows.map(indexedSpaceFromRow));
15029
+ return (0, import_sdk_services8.ok)(queried.data.rows.map(indexedSpaceFromRow));
15000
15030
  }
15001
15031
  },
15002
15032
  delegations: {
@@ -15018,7 +15048,7 @@ var AccountService = class {
15018
15048
  params
15019
15049
  );
15020
15050
  if (!queried.ok) return accountErr(queried.error);
15021
- return (0, import_sdk_services7.ok)(queried.data.rows.map(indexedDelegationFromRow));
15051
+ return (0, import_sdk_services8.ok)(queried.data.rows.map(indexedDelegationFromRow));
15022
15052
  }
15023
15053
  },
15024
15054
  query: async (sql, params) => {
@@ -15026,7 +15056,7 @@ var AccountService = class {
15026
15056
  if (!dbResult.ok) return dbResult;
15027
15057
  const queried = await dbResult.data.query(sql, params);
15028
15058
  if (!queried.ok) return accountErr(queried.error);
15029
- return (0, import_sdk_services7.ok)(queried.data);
15059
+ return (0, import_sdk_services8.ok)(queried.data);
15030
15060
  },
15031
15061
  status: async () => {
15032
15062
  const dbResult = this.accountDb();
@@ -15036,11 +15066,11 @@ var AccountService = class {
15036
15066
  );
15037
15067
  if (!queried.ok) {
15038
15068
  if (isMissingIndexError(queried.error)) {
15039
- return (0, import_sdk_services7.ok)({ database: ACCOUNT_INDEX_DB, state: "missing", sources: [] });
15069
+ return (0, import_sdk_services8.ok)({ database: ACCOUNT_INDEX_DB, state: "missing", sources: [] });
15040
15070
  }
15041
15071
  return accountErr(queried.error);
15042
15072
  }
15043
- return (0, import_sdk_services7.ok)({
15073
+ return (0, import_sdk_services8.ok)({
15044
15074
  database: ACCOUNT_INDEX_DB,
15045
15075
  state: "ready",
15046
15076
  sources: queried.data.rows.map(([source, syncedAt, count]) => ({
@@ -15059,7 +15089,7 @@ var AccountService = class {
15059
15089
  if (!delegations.ok) return delegations;
15060
15090
  const spaces = await this.spaces.list();
15061
15091
  if (!spaces.ok) return spaces;
15062
- return (0, import_sdk_services7.ok)({
15092
+ return (0, import_sdk_services8.ok)({
15063
15093
  did: this.config.getDid(),
15064
15094
  host: this.config.getHost(),
15065
15095
  primarySpaceId: this.config.getPrimarySpaceId(),
@@ -15073,28 +15103,28 @@ var AccountService = class {
15073
15103
  accountKV() {
15074
15104
  const accountSpaceId = this.config.getAccountSpaceId();
15075
15105
  if (!accountSpaceId) {
15076
- return (0, import_sdk_services7.err)(
15077
- (0, import_sdk_services7.serviceError)(
15106
+ return (0, import_sdk_services8.err)(
15107
+ (0, import_sdk_services8.serviceError)(
15078
15108
  "ACCOUNT_SPACE_UNAVAILABLE",
15079
15109
  "Account space is unavailable. Sign in with a wallet-backed profile first.",
15080
15110
  SERVICE_NAME2
15081
15111
  )
15082
15112
  );
15083
15113
  }
15084
- return (0, import_sdk_services7.ok)(this.config.getSpaces().get(accountSpaceId).kv);
15114
+ return (0, import_sdk_services8.ok)(this.config.getSpaces().get(accountSpaceId).kv);
15085
15115
  }
15086
15116
  accountDb() {
15087
15117
  const db = this.config.getAccountDb?.();
15088
15118
  if (!db) {
15089
- return (0, import_sdk_services7.err)(
15090
- (0, import_sdk_services7.serviceError)(
15119
+ return (0, import_sdk_services8.err)(
15120
+ (0, import_sdk_services8.serviceError)(
15091
15121
  "ACCOUNT_INDEX_UNAVAILABLE",
15092
15122
  "Account index database is unavailable. Sign in with a wallet-backed profile first.",
15093
15123
  SERVICE_NAME2
15094
15124
  )
15095
15125
  );
15096
15126
  }
15097
- return (0, import_sdk_services7.ok)(db);
15127
+ return (0, import_sdk_services8.ok)(db);
15098
15128
  }
15099
15129
  async indexHasApplicationHash(appId, manifestHash) {
15100
15130
  const dbResult = this.accountDb();
@@ -15112,7 +15142,7 @@ var AccountService = class {
15112
15142
  }
15113
15143
  async upsertApplicationIndex(app) {
15114
15144
  const dbResult = this.accountDb();
15115
- if (!dbResult.ok) return (0, import_sdk_services7.ok)(void 0);
15145
+ if (!dbResult.ok) return (0, import_sdk_services8.ok)(void 0);
15116
15146
  const schema = await this.ensureAccountIndex(dbResult.data);
15117
15147
  if (!schema.ok) return schema;
15118
15148
  const updatedAt = app.updatedAt ?? (/* @__PURE__ */ new Date()).toISOString();
@@ -15134,14 +15164,14 @@ var AccountService = class {
15134
15164
  }
15135
15165
  ]);
15136
15166
  if (!written.ok) return accountErr(written.error);
15137
- return (0, import_sdk_services7.ok)(void 0);
15167
+ return (0, import_sdk_services8.ok)(void 0);
15138
15168
  }
15139
15169
  async deleteApplicationIndexQuietly(appId) {
15140
15170
  await ignoreIndexFailure(() => this.deleteApplicationIndex(appId));
15141
15171
  }
15142
15172
  async deleteApplicationIndex(appId) {
15143
15173
  const dbResult = this.accountDb();
15144
- if (!dbResult.ok) return (0, import_sdk_services7.ok)(void 0);
15174
+ if (!dbResult.ok) return (0, import_sdk_services8.ok)(void 0);
15145
15175
  const schema = await this.ensureAccountIndex(dbResult.data);
15146
15176
  if (!schema.ok) return schema;
15147
15177
  const deleted = await dbResult.data.batch([
@@ -15149,14 +15179,14 @@ var AccountService = class {
15149
15179
  { sql: "DELETE FROM application_state WHERE app_id = ?", params: [appId] }
15150
15180
  ]);
15151
15181
  if (!deleted.ok) return accountErr(deleted.error);
15152
- return (0, import_sdk_services7.ok)(void 0);
15182
+ return (0, import_sdk_services8.ok)(void 0);
15153
15183
  }
15154
15184
  async upsertSpaceIndexQuietly(space) {
15155
15185
  await ignoreIndexFailure(() => this.upsertSpaceIndex(space));
15156
15186
  }
15157
15187
  async upsertSpaceIndex(space) {
15158
15188
  const dbResult = this.accountDb();
15159
- if (!dbResult.ok) return (0, import_sdk_services7.ok)(void 0);
15189
+ if (!dbResult.ok) return (0, import_sdk_services8.ok)(void 0);
15160
15190
  const schema = await this.ensureAccountIndex(dbResult.data);
15161
15191
  if (!schema.ok) return schema;
15162
15192
  const updatedAt = space.updatedAt ?? (/* @__PURE__ */ new Date()).toISOString();
@@ -15177,7 +15207,7 @@ var AccountService = class {
15177
15207
  }
15178
15208
  ]);
15179
15209
  if (!written.ok) return accountErr(written.error);
15180
- return (0, import_sdk_services7.ok)(void 0);
15210
+ return (0, import_sdk_services8.ok)(void 0);
15181
15211
  }
15182
15212
  async upsertSpacesIndexQuietly(spaces) {
15183
15213
  await ignoreIndexFailure(() => this.upsertSpacesIndex(spaces));
@@ -15191,9 +15221,9 @@ var AccountService = class {
15191
15221
  * atomically: all rows or none.
15192
15222
  */
15193
15223
  async upsertSpacesIndex(spaces) {
15194
- if (spaces.length === 0) return (0, import_sdk_services7.ok)(void 0);
15224
+ if (spaces.length === 0) return (0, import_sdk_services8.ok)(void 0);
15195
15225
  const dbResult = this.accountDb();
15196
- if (!dbResult.ok) return (0, import_sdk_services7.ok)(void 0);
15226
+ if (!dbResult.ok) return (0, import_sdk_services8.ok)(void 0);
15197
15227
  const schema = await this.ensureAccountIndex(dbResult.data);
15198
15228
  if (!schema.ok) return schema;
15199
15229
  const placeholders = spaces.map(() => "(?, ?, ?, ?, ?, ?, ?, ?, ?)").join(", ");
@@ -15218,21 +15248,21 @@ var AccountService = class {
15218
15248
  }
15219
15249
  ]);
15220
15250
  if (!written.ok) return accountErr(written.error);
15221
- return (0, import_sdk_services7.ok)(void 0);
15251
+ return (0, import_sdk_services8.ok)(void 0);
15222
15252
  }
15223
15253
  async deleteSpaceIndexQuietly(spaceId) {
15224
15254
  await ignoreIndexFailure(() => this.deleteSpaceIndex(spaceId));
15225
15255
  }
15226
15256
  async deleteSpaceIndex(spaceId) {
15227
15257
  const dbResult = this.accountDb();
15228
- if (!dbResult.ok) return (0, import_sdk_services7.ok)(void 0);
15258
+ if (!dbResult.ok) return (0, import_sdk_services8.ok)(void 0);
15229
15259
  const schema = await this.ensureAccountIndex(dbResult.data);
15230
15260
  if (!schema.ok) return schema;
15231
15261
  const deleted = await dbResult.data.batch([
15232
15262
  { sql: "DELETE FROM spaces WHERE space_id = ?", params: [spaceId] }
15233
15263
  ]);
15234
15264
  if (!deleted.ok) return accountErr(deleted.error);
15235
- return (0, import_sdk_services7.ok)(void 0);
15265
+ return (0, import_sdk_services8.ok)(void 0);
15236
15266
  }
15237
15267
  /**
15238
15268
  * Register every space the session can reach and return them. With
@@ -15252,7 +15282,7 @@ var AccountService = class {
15252
15282
  spaces.push(result.data);
15253
15283
  continue;
15254
15284
  }
15255
- if (!options2.tolerateStorageFull || !(0, import_sdk_services7.isStorageFullError)(result.error)) {
15285
+ if (!options2.tolerateStorageFull || !(0, import_sdk_services8.isStorageFullError)(result.error)) {
15256
15286
  return result;
15257
15287
  }
15258
15288
  allRegistered = false;
@@ -15260,18 +15290,18 @@ var AccountService = class {
15260
15290
  const record2 = spaceRecordFromInput(space);
15261
15291
  spaces.push(spaceFromRecord(spaceKey(record2.space_id), record2));
15262
15292
  }
15263
- return (0, import_sdk_services7.ok)({ spaces, allRegistered });
15293
+ return (0, import_sdk_services8.ok)({ spaces, allRegistered });
15264
15294
  }
15265
15295
  async resolveSpace(space) {
15266
15296
  const listed = await this.config.getSpaces().list();
15267
15297
  if (!listed.ok) return accountErr(listed.error);
15268
15298
  const found = listed.data.find((candidate) => candidate.id === space || candidate.name === space);
15269
15299
  if (!found) {
15270
- return (0, import_sdk_services7.err)(
15271
- (0, import_sdk_services7.serviceError)("SPACE_NOT_FOUND", `No account space found for ${JSON.stringify(space)}`, SERVICE_NAME2)
15300
+ return (0, import_sdk_services8.err)(
15301
+ (0, import_sdk_services8.serviceError)("SPACE_NOT_FOUND", `No account space found for ${JSON.stringify(space)}`, SERVICE_NAME2)
15272
15302
  );
15273
15303
  }
15274
- return (0, import_sdk_services7.ok)(found);
15304
+ return (0, import_sdk_services8.ok)(found);
15275
15305
  }
15276
15306
  async replaceApplicationsIndexQuietly(applications) {
15277
15307
  await ignoreIndexFailure(async () => {
@@ -15413,7 +15443,7 @@ var AccountService = class {
15413
15443
  ]
15414
15444
  });
15415
15445
  if (!migrated.ok) return accountErr(migrated.error);
15416
- return (0, import_sdk_services7.ok)(void 0);
15446
+ return (0, import_sdk_services8.ok)(void 0);
15417
15447
  }
15418
15448
  };
15419
15449
  function applicationKey(appId) {
@@ -15569,17 +15599,17 @@ function mapDelegation(delegation, space, direction) {
15569
15599
  };
15570
15600
  }
15571
15601
  function accountErr(error) {
15572
- return (0, import_sdk_services7.err)((0, import_sdk_services7.serviceError)(error.code, error.message, SERVICE_NAME2, { cause: error.cause, meta: error.meta }));
15602
+ return (0, import_sdk_services8.err)((0, import_sdk_services8.serviceError)(error.code, error.message, SERVICE_NAME2, { cause: error.cause, meta: error.meta }));
15573
15603
  }
15574
15604
  function isMissingIndexError(error) {
15575
15605
  return /no such table:/i.test(error.message);
15576
15606
  }
15577
15607
  var AMBIGUOUS_WRITE_STATUSES = /* @__PURE__ */ new Set([500, 502, 503, 504, 520, 522, 524]);
15578
15608
  function isAmbiguousBatchFailure(error) {
15579
- if (error.code === import_sdk_services7.ErrorCodes.NETWORK_ERROR || error.code === import_sdk_services7.ErrorCodes.TIMEOUT) {
15609
+ if (error.code === import_sdk_services8.ErrorCodes.NETWORK_ERROR || error.code === import_sdk_services8.ErrorCodes.TIMEOUT) {
15580
15610
  return error.meta?.requestMayHaveDispatched === true;
15581
15611
  }
15582
- if (error.code === import_sdk_services7.ErrorCodes.KV_WRITE_FAILED) {
15612
+ if (error.code === import_sdk_services8.ErrorCodes.KV_WRITE_FAILED) {
15583
15613
  const status = error.meta?.status;
15584
15614
  return typeof status === "number" && AMBIGUOUS_WRITE_STATUSES.has(status);
15585
15615
  }
@@ -15593,7 +15623,7 @@ async function ignoreIndexFailure(task) {
15593
15623
  }
15594
15624
 
15595
15625
  // src/index.ts
15596
- var import_sdk_services9 = require("@tinycloud/sdk-services");
15626
+ var import_sdk_services10 = require("@tinycloud/sdk-services");
15597
15627
 
15598
15628
  // src/space.ts
15599
15629
  async function fetchPeerId(host, spaceId, signal) {
@@ -15698,7 +15728,7 @@ async function postSessionActivation(host, delegationHeader, signal) {
15698
15728
  }
15699
15729
 
15700
15730
  // src/authorization/CapabilityKeyRegistry.ts
15701
- var import_sdk_services8 = require("@tinycloud/sdk-services");
15731
+ var import_sdk_services9 = require("@tinycloud/sdk-services");
15702
15732
  var SERVICE_NAME3 = "capability-key-registry";
15703
15733
  var CapabilityKeyRegistryErrorCodes = {
15704
15734
  /** Key not found in registry */
@@ -15923,8 +15953,8 @@ var CapabilityKeyRegistry = class {
15923
15953
  revokeDelegation(cid2) {
15924
15954
  const stored = this.store.byCid.get(cid2);
15925
15955
  if (!stored || stored.length === 0) {
15926
- return (0, import_sdk_services8.err)(
15927
- (0, import_sdk_services8.serviceError)(
15956
+ return (0, import_sdk_services9.err)(
15957
+ (0, import_sdk_services9.serviceError)(
15928
15958
  CapabilityKeyRegistryErrorCodes.KEY_NOT_FOUND,
15929
15959
  `Delegation not found: ${cid2}`,
15930
15960
  SERVICE_NAME3
@@ -15944,7 +15974,7 @@ var CapabilityKeyRegistry = class {
15944
15974
  }
15945
15975
  }
15946
15976
  }
15947
- return (0, import_sdk_services8.ok)(void 0);
15977
+ return (0, import_sdk_services9.ok)(void 0);
15948
15978
  }
15949
15979
  // ===========================================================================
15950
15980
  // Search