@tinycloud/sdk-core 3.1.0-beta.4 → 3.1.0-beta.6

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
@@ -73,13 +73,13 @@ __export(index_exports, {
73
73
  ClientSessionSchema: () => ClientSessionSchema,
74
74
  CloudLocationResolutionError: () => CloudLocationResolutionError,
75
75
  CredentialError: () => CredentialError,
76
- DECRYPT_ACTION: () => import_sdk_services8.DECRYPT_ACTION,
77
- DECRYPT_FACT_TYPE: () => import_sdk_services8.DECRYPT_FACT_TYPE,
78
- DECRYPT_RESULT_TYPE: () => import_sdk_services8.DECRYPT_RESULT_TYPE,
76
+ DECRYPT_ACTION: () => import_sdk_services9.DECRYPT_ACTION,
77
+ DECRYPT_FACT_TYPE: () => import_sdk_services9.DECRYPT_FACT_TYPE,
78
+ DECRYPT_RESULT_TYPE: () => import_sdk_services9.DECRYPT_RESULT_TYPE,
79
79
  DEFAULT_DEFAULTS: () => DEFAULT_DEFAULTS,
80
- DEFAULT_ENCRYPTION_ALG: () => import_sdk_services8.DEFAULT_ENCRYPTION_ALG,
80
+ DEFAULT_ENCRYPTION_ALG: () => import_sdk_services9.DEFAULT_ENCRYPTION_ALG,
81
81
  DEFAULT_EXPIRY: () => DEFAULT_EXPIRY,
82
- DEFAULT_KEY_VERSION: () => import_sdk_services8.DEFAULT_KEY_VERSION,
82
+ DEFAULT_KEY_VERSION: () => import_sdk_services9.DEFAULT_KEY_VERSION,
83
83
  DEFAULT_KNOWLEDGE_ROOT: () => DEFAULT_KNOWLEDGE_ROOT,
84
84
  DEFAULT_LOCAL_NODE_PIN_STORAGE_KEY: () => DEFAULT_LOCAL_NODE_PIN_STORAGE_KEY,
85
85
  DEFAULT_LOCAL_NODE_URL: () => DEFAULT_LOCAL_NODE_URL,
@@ -90,36 +90,36 @@ __export(index_exports, {
90
90
  DEFAULT_TINYCLOUD_LOCATION_REGISTRY_URL: () => DEFAULT_TINYCLOUD_LOCATION_REGISTRY_URL,
91
91
  DELIVERY_ADMISSION_DOMAIN: () => DELIVERY_ADMISSION_DOMAIN,
92
92
  DUCKDB: () => import_bootstrap4.DUCKDB,
93
- DataVaultService: () => import_sdk_services8.DataVaultService,
94
- DatabaseHandle: () => import_sdk_services8.DatabaseHandle,
95
- DecryptTransportResponseError: () => import_sdk_services8.DecryptTransportResponseError,
93
+ DataVaultService: () => import_sdk_services9.DataVaultService,
94
+ DatabaseHandle: () => import_sdk_services9.DatabaseHandle,
95
+ DecryptTransportResponseError: () => import_sdk_services9.DecryptTransportResponseError,
96
96
  DelegationErrorCodes: () => DelegationErrorCodes,
97
97
  DelegationManager: () => DelegationManager,
98
- DuckDbAction: () => import_sdk_services8.DuckDbAction,
99
- DuckDbDatabaseHandle: () => import_sdk_services8.DuckDbDatabaseHandle,
100
- DuckDbService: () => import_sdk_services8.DuckDbService,
98
+ DuckDbAction: () => import_sdk_services9.DuckDbAction,
99
+ DuckDbDatabaseHandle: () => import_sdk_services9.DuckDbDatabaseHandle,
100
+ DuckDbService: () => import_sdk_services9.DuckDbService,
101
101
  ED25519_JCS_SIGNATURE_SUITE: () => ED25519_JCS_SIGNATURE_SUITE,
102
102
  EIP191_JCS_SIGNATURE_SUITE: () => EIP191_JCS_SIGNATURE_SUITE,
103
103
  EMAIL_CREDENTIAL_MAX_AGE_SECONDS: () => EMAIL_CREDENTIAL_MAX_AGE_SECONDS,
104
104
  EMAIL_DOMAIN_CREDENTIAL_MAX_AGE_SECONDS: () => EMAIL_DOMAIN_CREDENTIAL_MAX_AGE_SECONDS,
105
105
  ENCRYPTION: () => import_bootstrap4.ENCRYPTION,
106
106
  ENCRYPTION_MANIFEST_SPACE: () => ENCRYPTION_MANIFEST_SPACE,
107
- ENCRYPTION_NETWORK_URN_PREFIX: () => import_sdk_services8.ENCRYPTION_NETWORK_URN_PREFIX,
107
+ ENCRYPTION_NETWORK_URN_PREFIX: () => import_sdk_services9.ENCRYPTION_NETWORK_URN_PREFIX,
108
108
  ENCRYPTION_PERMISSION_SERVICE: () => ENCRYPTION_PERMISSION_SERVICE,
109
- ENCRYPTION_SERVICE: () => import_sdk_services8.ENCRYPTION_SERVICE,
110
- ENCRYPTION_SERVICE_SHORT: () => import_sdk_services8.ENCRYPTION_SERVICE_SHORT,
111
- ENVELOPE_VERSION: () => import_sdk_services8.ENVELOPE_VERSION,
109
+ ENCRYPTION_SERVICE: () => import_sdk_services9.ENCRYPTION_SERVICE,
110
+ ENCRYPTION_SERVICE_SHORT: () => import_sdk_services9.ENCRYPTION_SERVICE_SHORT,
111
+ ENVELOPE_VERSION: () => import_sdk_services9.ENVELOPE_VERSION,
112
112
  EXPIRY: () => EXPIRY,
113
- EncryptionService: () => import_sdk_services8.EncryptionService,
113
+ EncryptionService: () => import_sdk_services9.EncryptionService,
114
114
  EnsDataSchema: () => EnsDataSchema,
115
- ErrorCodes: () => import_sdk_services8.ErrorCodes,
115
+ ErrorCodes: () => import_sdk_services9.ErrorCodes,
116
116
  HOLDER_BINDING_DOMAIN: () => HOLDER_BINDING_DOMAIN,
117
117
  HOLDER_KEY_BINDING_PRESENTATION_SCHEMA: () => HOLDER_KEY_BINDING_PRESENTATION_SCHEMA,
118
118
  HOOKS: () => import_bootstrap4.HOOKS,
119
- HooksService: () => import_sdk_services8.HooksService,
119
+ HooksService: () => import_sdk_services9.HooksService,
120
120
  IdentityParseError: () => IdentityParseError,
121
121
  KV: () => import_bootstrap4.KV,
122
- KVService: () => import_sdk_services8.KVService,
122
+ KVService: () => import_sdk_services9.KVService,
123
123
  LAST_V2_CREATE_AT: () => LAST_V2_CREATE_AT,
124
124
  LAST_V2_READ_AT: () => LAST_V2_READ_AT,
125
125
  LISTEN_SQL_STATEMENT_CATALOG: () => LISTEN_SQL_STATEMENT_CATALOG,
@@ -138,8 +138,8 @@ __export(index_exports, {
138
138
  MemorySenderShareRecordStorage: () => MemorySenderShareRecordStorage,
139
139
  MemoryShareCache: () => MemoryShareCache,
140
140
  NATIVE_PROJECTION_V1_DOMAIN: () => NATIVE_PROJECTION_V1_DOMAIN,
141
- NETWORK_NAME_PATTERN: () => import_sdk_services8.NETWORK_NAME_PATTERN,
142
- NetworkIdError: () => import_sdk_services8.NetworkIdError,
141
+ NETWORK_NAME_PATTERN: () => import_sdk_services9.NETWORK_NAME_PATTERN,
142
+ NetworkIdError: () => import_sdk_services9.NetworkIdError,
143
143
  OPENKEY_ACTION_ID_SEPARATOR: () => OPENKEY_ACTION_ID_SEPARATOR,
144
144
  OWNER_NODE_BINDING_TIMEOUT_MS: () => OWNER_NODE_BINDING_TIMEOUT_MS,
145
145
  OpenKeyManageKeyError: () => OpenKeyManageKeyError,
@@ -166,7 +166,7 @@ __export(index_exports, {
166
166
  POLICY_V2_SCHEMA: () => POLICY_V2_SCHEMA,
167
167
  PORTABLE_DELEGATION_SCHEMA: () => PORTABLE_DELEGATION_SCHEMA,
168
168
  PermissionNotInManifestError: () => PermissionNotInManifestError,
169
- PrefixedKVService: () => import_sdk_services8.PrefixedKVService,
169
+ PrefixedKVService: () => import_sdk_services9.PrefixedKVService,
170
170
  ProtocolMismatchError: () => ProtocolMismatchError,
171
171
  REQUESTER_ENGINE_RETRY_ATTEMPTS: () => REQUESTER_ENGINE_RETRY_ATTEMPTS,
172
172
  REQUESTER_ENGINE_RETRY_MAX_DELAY_MS: () => REQUESTER_ENGINE_RETRY_MAX_DELAY_MS,
@@ -177,19 +177,19 @@ __export(index_exports, {
177
177
  ROOT_STATUS_RENEWAL_V1_DOMAIN: () => ROOT_STATUS_RENEWAL_V1_DOMAIN,
178
178
  ROOT_STATUS_V1_DOMAIN: () => ROOT_STATUS_V1_DOMAIN,
179
179
  SECRETS_SPACE: () => SECRETS_SPACE,
180
- SECRET_NAME_RE: () => import_sdk_services8.SECRET_NAME_RE,
180
+ SECRET_NAME_RE: () => import_sdk_services9.SECRET_NAME_RE,
181
181
  SECRET_RECORDS_SCHEMA: () => import_bootstrap4.SECRET_RECORDS_SCHEMA,
182
182
  SERVICE_LONG_TO_SHORT: () => SERVICE_LONG_TO_SHORT,
183
183
  SERVICE_SHORT_TO_LONG: () => SERVICE_SHORT_TO_LONG,
184
184
  SPACE: () => import_bootstrap4.SPACE,
185
185
  SQL: () => import_bootstrap4.SQL,
186
- SQLAction: () => import_sdk_services8.SQLAction,
187
- SQLService: () => import_sdk_services8.SQLService,
188
- STORAGE_FULL_MESSAGE: () => import_sdk_services8.STORAGE_FULL_MESSAGE,
189
- STORAGE_WRITE_TOO_LARGE_MESSAGE: () => import_sdk_services8.STORAGE_WRITE_TOO_LARGE_MESSAGE,
190
- SecretsService: () => import_sdk_services8.SecretsService,
186
+ SQLAction: () => import_sdk_services9.SQLAction,
187
+ SQLService: () => import_sdk_services9.SQLService,
188
+ STORAGE_FULL_MESSAGE: () => import_sdk_services9.STORAGE_FULL_MESSAGE,
189
+ STORAGE_WRITE_TOO_LARGE_MESSAGE: () => import_sdk_services9.STORAGE_WRITE_TOO_LARGE_MESSAGE,
190
+ SecretsService: () => import_sdk_services9.SecretsService,
191
191
  SenderShareStore: () => SenderShareStore,
192
- ServiceContext: () => import_sdk_services8.ServiceContext,
192
+ ServiceContext: () => import_sdk_services9.ServiceContext,
193
193
  SessionExpiredError: () => SessionExpiredError,
194
194
  ShareAccessError: () => ShareAccessError,
195
195
  ShareAddressedDelegationEnvelopeV2Schema: () => ShareAddressedDelegationEnvelopeV2Schema,
@@ -222,14 +222,14 @@ __export(index_exports, {
222
222
  TINYCLOUD_PUBLIC_SPACE_MANIFEST: () => import_bootstrap4.TINYCLOUD_PUBLIC_SPACE_MANIFEST,
223
223
  TINYCLOUD_SECRETS_BOOTSTRAP_MANIFEST: () => import_bootstrap4.TINYCLOUD_SECRETS_BOOTSTRAP_MANIFEST,
224
224
  TinyCloud: () => TinyCloud,
225
- TinyCloudDebugLogger: () => import_sdk_services8.TinyCloudDebugLogger,
225
+ TinyCloudDebugLogger: () => import_sdk_services9.TinyCloudDebugLogger,
226
226
  TranscriptRequester: () => TranscriptRequester,
227
227
  TranscriptRequesterError: () => TranscriptRequesterError,
228
228
  UnsupportedFeatureError: () => UnsupportedFeatureError,
229
229
  UnsupportedSignatureSuiteError: () => UnsupportedSignatureSuiteError,
230
230
  VAULT_PERMISSION_SERVICE: () => VAULT_PERMISSION_SERVICE,
231
- VaultHeaders: () => import_sdk_services8.VaultHeaders,
232
- VaultPublicSpaceKVActions: () => import_sdk_services8.VaultPublicSpaceKVActions,
231
+ VaultHeaders: () => import_sdk_services9.VaultHeaders,
232
+ VaultPublicSpaceKVActions: () => import_sdk_services9.VaultPublicSpaceKVActions,
233
233
  VersionCheckError: () => VersionCheckError,
234
234
  actionContains: () => actionContains,
235
235
  activateSessionWithHost: () => activateSessionWithHost,
@@ -237,37 +237,37 @@ __export(index_exports, {
237
237
  admitPolicyCredentialV3: () => admitPolicyCredentialV3,
238
238
  admitPolicyCredentialV4: () => admitPolicyCredentialV4,
239
239
  applyPrefix: () => applyPrefix,
240
- authorizationVerdictOf: () => import_sdk_services8.authorizationVerdictOf,
240
+ authorizationVerdictOf: () => import_sdk_services9.authorizationVerdictOf,
241
241
  bootstrapEncryptionNetworkId: () => import_bootstrap4.bootstrapEncryptionNetworkId,
242
242
  bootstrapSpaceId: () => import_bootstrap4.bootstrapSpaceId,
243
243
  bootstrapSteps: () => import_bootstrap4.bootstrapSteps,
244
- buildCanonicalDecryptRequest: () => import_sdk_services8.buildCanonicalDecryptRequest,
245
- buildDecryptAttenuation: () => import_sdk_services8.buildDecryptAttenuation,
246
- buildDecryptFacts: () => import_sdk_services8.buildDecryptFacts,
247
- buildDecryptInvocation: () => import_sdk_services8.buildDecryptInvocation,
248
- buildNetworkId: () => import_sdk_services8.buildNetworkId,
244
+ buildCanonicalDecryptRequest: () => import_sdk_services9.buildCanonicalDecryptRequest,
245
+ buildDecryptAttenuation: () => import_sdk_services9.buildDecryptAttenuation,
246
+ buildDecryptFacts: () => import_sdk_services9.buildDecryptFacts,
247
+ buildDecryptInvocation: () => import_sdk_services9.buildDecryptInvocation,
248
+ buildNetworkId: () => import_sdk_services9.buildNetworkId,
249
249
  buildPolicyCredentialPresentationV3: () => buildPolicyCredentialPresentationV3,
250
250
  buildPolicyCredentialPresentationV4: () => buildPolicyCredentialPresentationV4,
251
251
  buildSpaceUri: () => buildSpaceUri,
252
252
  canonicalDigest: () => canonicalDigest,
253
253
  canonicalEmailDomain: () => import_share_envelope.canonicalEmailDomain,
254
- canonicalHashHex: () => import_sdk_services8.canonicalHashHex,
254
+ canonicalHashHex: () => import_sdk_services9.canonicalHashHex,
255
255
  canonicalLocationPayload: () => canonicalLocationPayload,
256
256
  canonicalMailbox: () => import_share_envelope.canonicalMailbox,
257
257
  canonicalOwnerSharePolicy: () => canonicalOwnerSharePolicy,
258
- canonicalSignedResponse: () => import_sdk_services8.canonicalSignedResponse,
258
+ canonicalSignedResponse: () => import_sdk_services9.canonicalSignedResponse,
259
259
  canonicalizeAddress: () => canonicalizeAddress,
260
260
  canonicalizeDid: () => canonicalizeDid,
261
261
  canonicalizeDidUrl: () => canonicalizeDidUrl,
262
- canonicalizeEncryptionJson: () => import_sdk_services8.canonicalizeEncryptionJson,
262
+ canonicalizeEncryptionJson: () => import_sdk_services9.canonicalizeEncryptionJson,
263
263
  canonicalizeNetworkId: () => canonicalizeNetworkId,
264
264
  canonicalizeRecapCaveats: () => canonicalizeRecapCaveats,
265
- canonicalizeSecretScope: () => import_sdk_services8.canonicalizeSecretScope,
265
+ canonicalizeSecretScope: () => import_sdk_services9.canonicalizeSecretScope,
266
266
  canonicalizeSignedObjectUnsigned: () => canonicalizeSignedObjectUnsigned,
267
267
  canonicalizeUnifiedPolicyCapability: () => canonicalizeUnifiedPolicyCapability,
268
- checkDecryptInvocationInput: () => import_sdk_services8.checkDecryptInvocationInput,
268
+ checkDecryptInvocationInput: () => import_sdk_services9.checkDecryptInvocationInput,
269
269
  checkNodeInfo: () => checkNodeInfo,
270
- clearTinyCloudDebugLogs: () => import_sdk_services8.clearTinyCloudDebugLogs,
270
+ clearTinyCloudDebugLogs: () => import_sdk_services9.clearTinyCloudDebugLogs,
271
271
  compactAttenuationContains: () => compactAttenuationContains,
272
272
  composeBootstrapSpaceManifest: () => import_bootstrap4.composeBootstrapSpaceManifest,
273
273
  composeManifestRequest: () => composeManifestRequest,
@@ -296,7 +296,7 @@ __export(index_exports, {
296
296
  createStorageReceipt: () => createStorageReceipt,
297
297
  createStoredCredentialRecord: () => createStoredCredentialRecord,
298
298
  createTranscriptRequester: () => createTranscriptRequester,
299
- createVaultCrypto: () => import_sdk_services8.createVaultCrypto,
299
+ createVaultCrypto: () => import_sdk_services9.createVaultCrypto,
300
300
  credentialEndpointPath: () => credentialEndpointPath,
301
301
  credentialError: () => credentialError,
302
302
  credentialIndexKey: () => credentialIndexKey,
@@ -304,37 +304,37 @@ __export(index_exports, {
304
304
  credentialRecordKey: () => credentialRecordKey,
305
305
  credentialRequirementDigest: () => credentialRequirementDigest,
306
306
  decodeBase64Url: () => decodeBase64Url,
307
- decryptEnvelopeWithKey: () => import_sdk_services8.decryptEnvelopeWithKey,
307
+ decryptEnvelopeWithKey: () => import_sdk_services9.decryptEnvelopeWithKey,
308
308
  decryptShareBytesAsync: () => decryptShareBytesAsync,
309
- defaultRetryPolicy: () => import_sdk_services8.defaultRetryPolicy,
309
+ defaultRetryPolicy: () => import_sdk_services9.defaultRetryPolicy,
310
310
  defaultSignStrategy: () => defaultSignStrategy,
311
311
  defaultSpaceCreationHandler: () => defaultSpaceCreationHandler,
312
312
  delegatePortablePolicySession: () => delegatePortablePolicySession,
313
313
  deriveDelegationCid: () => deriveDelegationCid,
314
314
  deriveSignedObjectMaterial: () => deriveSignedObjectMaterial,
315
- deriveSignedReceiverKey: () => import_sdk_services8.deriveSignedReceiverKey,
315
+ deriveSignedReceiverKey: () => import_sdk_services9.deriveSignedReceiverKey,
316
316
  descriptorSatisfiesRequirement: () => descriptorSatisfiesRequirement,
317
317
  didCacheKey: () => didCacheKey,
318
318
  didEquals: () => didEquals,
319
319
  diffImmutableSiweFields: () => diffImmutableSiweFields,
320
- disableTinyCloudDebug: () => import_sdk_services8.disableTinyCloudDebug,
320
+ disableTinyCloudDebug: () => import_sdk_services9.disableTinyCloudDebug,
321
321
  discoverLocalTinyCloudNode: () => discoverLocalTinyCloudNode,
322
- discoverNetwork: () => import_sdk_services8.discoverNetwork,
323
- enableTinyCloudDebug: () => import_sdk_services8.enableTinyCloudDebug,
322
+ discoverNetwork: () => import_sdk_services9.discoverNetwork,
323
+ enableTinyCloudDebug: () => import_sdk_services9.enableTinyCloudDebug,
324
324
  encodeBase64Url: () => encodeBase64Url,
325
325
  encodeInlineShareUrl: () => encodeInlineShareUrl,
326
326
  encodeShareArtifact: () => encodeShareArtifact,
327
327
  encodeShareUrl: () => encodeShareUrl,
328
328
  encryptShareBytes: () => encryptShareBytes,
329
329
  encryptShareBytesAsync: () => encryptShareBytesAsync,
330
- encryptToNetwork: () => import_sdk_services8.encryptToNetwork,
331
- encryptionBase64Decode: () => import_sdk_services8.base64Decode,
332
- encryptionBase64Encode: () => import_sdk_services8.base64Encode,
333
- encryptionError: () => import_sdk_services8.encryptionError,
334
- encryptionUtf8Decode: () => import_sdk_services8.utf8Decode,
335
- encryptionUtf8Encode: () => import_sdk_services8.utf8Encode,
336
- ensureNetworkUsableForDecrypt: () => import_sdk_services8.ensureNetworkUsableForDecrypt,
337
- err: () => import_sdk_services8.err,
330
+ encryptToNetwork: () => import_sdk_services9.encryptToNetwork,
331
+ encryptionBase64Decode: () => import_sdk_services9.base64Decode,
332
+ encryptionBase64Encode: () => import_sdk_services9.base64Encode,
333
+ encryptionError: () => import_sdk_services9.encryptionError,
334
+ encryptionUtf8Decode: () => import_sdk_services9.utf8Decode,
335
+ encryptionUtf8Encode: () => import_sdk_services9.utf8Encode,
336
+ ensureNetworkUsableForDecrypt: () => import_sdk_services9.ensureNetworkUsableForDecrypt,
337
+ err: () => import_sdk_services9.err,
338
338
  expandActionShortNames: () => expandActionShortNames,
339
339
  expandPermissionEntries: () => expandPermissionEntries,
340
340
  expandPermissionEntry: () => expandPermissionEntry,
@@ -342,25 +342,26 @@ __export(index_exports, {
342
342
  extractRecapAttenuations: () => extractRecapAttenuations,
343
343
  fetchLocationRecord: () => fetchLocationRecord,
344
344
  fetchPeerId: () => fetchPeerId,
345
- generateRandomReceiverKey: () => import_sdk_services8.generateRandomReceiverKey,
345
+ generateRandomReceiverKey: () => import_sdk_services9.generateRandomReceiverKey,
346
346
  getPolicyRootStatusV3: () => getPolicyRootStatusV3,
347
- getTinyCloudDebugLogs: () => import_sdk_services8.getTinyCloudDebugLogs,
347
+ getTinyCloudDebugLogs: () => import_sdk_services9.getTinyCloudDebugLogs,
348
348
  hasTinyCloudManageKeyScope: () => hasTinyCloudManageKeyScope,
349
- hexDecode: () => import_sdk_services8.hexDecode,
350
- hexEncode: () => import_sdk_services8.hexEncode,
349
+ hexDecode: () => import_sdk_services9.hexDecode,
350
+ hexEncode: () => import_sdk_services9.hexEncode,
351
351
  holderBindingCanonicalBytes: () => holderBindingCanonicalBytes,
352
352
  holderBindingSigningBytes: () => holderBindingSigningBytes,
353
+ httpResponseError: () => httpResponseError,
353
354
  httpUrlToMultiaddr: () => httpUrlToMultiaddr,
354
355
  importPortableDelegation: () => importPortableDelegation,
355
- installTinyCloudDebugGlobals: () => import_sdk_services8.installTinyCloudDebugGlobals,
356
+ installTinyCloudDebugGlobals: () => import_sdk_services9.installTinyCloudDebugGlobals,
356
357
  intersectShareCapabilities: () => intersectShareCapabilities,
357
358
  isCanonicalEmailDomain: () => import_share_envelope.isCanonicalEmailDomain,
358
359
  isCapabilitySubset: () => isCapabilitySubset,
359
360
  isDigest: () => isDigest,
360
361
  isEvmAddress: () => isEvmAddress,
361
- isNetworkId: () => import_sdk_services8.isNetworkId,
362
+ isNetworkId: () => import_sdk_services9.isNetworkId,
362
363
  isPlausibleOpenKeyActionId: () => isPlausibleOpenKeyActionId,
363
- isStorageFullError: () => import_sdk_services8.isStorageFullError,
364
+ isStorageFullError: () => import_sdk_services9.isStorageFullError,
364
365
  isV2ShareLink: () => isV2ShareLink,
365
366
  issuedCredentialEnvelopeFromVerified: () => issuedCredentialEnvelopeFromVerified,
366
367
  jcsCanonicalize: () => jcsCanonicalize,
@@ -371,28 +372,29 @@ __export(index_exports, {
371
372
  makePublicSpaceId: () => makePublicSpaceId,
372
373
  manifestAbilitiesUnion: () => manifestAbilitiesUnion,
373
374
  multiaddrToHttpUrl: () => multiaddrToHttpUrl,
374
- networkDiscoveryKey: () => import_sdk_services8.networkDiscoveryKey,
375
+ networkDiscoveryKey: () => import_sdk_services9.networkDiscoveryKey,
375
376
  normalizeDefaults: () => normalizeDefaults,
376
377
  normalizeJson: () => normalizeJson,
377
378
  normalizeShareActions: () => normalizeShareActions,
378
379
  normalizeShareRecipientTarget: () => normalizeShareRecipientTarget,
379
380
  normalizeShareResource: () => normalizeShareResource,
380
381
  normalizeUnifiedPolicyCapability: () => normalizeUnifiedPolicyCapability,
381
- ok: () => import_sdk_services8.ok,
382
- openWrappedKey: () => import_sdk_services8.openWrappedKey,
382
+ ok: () => import_sdk_services9.ok,
383
+ openWrappedKey: () => import_sdk_services9.openWrappedKey,
383
384
  parseCanonicalNetworkId: () => parseCanonicalNetworkId,
384
385
  parseCanonicalRecapResource: () => parseCanonicalRecapResource,
385
386
  parseCanonicalTinyCloudIdentity: () => parseCanonicalTinyCloudIdentity,
386
387
  parseCanonicalTinyCloudIdentityClaims: () => parseCanonicalTinyCloudIdentityClaims,
388
+ parseCapabilityResource: () => import_sdk_services9.parseCapabilityResource,
387
389
  parseCompactUcanAuthorization: () => parseCompactUcanAuthorization,
388
390
  parseExpiry: () => parseExpiry,
389
- parseNetworkId: () => import_sdk_services8.parseNetworkId,
391
+ parseNetworkId: () => import_sdk_services9.parseNetworkId,
390
392
  parseNodeNativePortableDelegation: () => parseNodeNativePortableDelegation,
391
393
  parsePkhDid: () => parsePkhDid,
392
394
  parsePolicySessionUcan: () => parsePolicySessionUcan,
393
395
  parsePortableDelegation: () => parsePortableDelegation,
394
396
  parseRecapCapabilities: () => parseRecapCapabilities,
395
- parseSecretCatalogKey: () => import_sdk_services8.parseSecretCatalogKey,
397
+ parseSecretCatalogKey: () => import_sdk_services9.parseSecretCatalogKey,
396
398
  parseShareArtifact: () => parseShareArtifact,
397
399
  parseShareUrl: () => parseShareUrl,
398
400
  parseSpaceUri: () => parseSpaceUri,
@@ -413,8 +415,8 @@ __export(index_exports, {
413
415
  resolveCloudLocation: () => resolveCloudLocation,
414
416
  resolveManifest: () => resolveManifest,
415
417
  resolveManifestKnowledgeRoot: () => resolveManifestKnowledgeRoot,
416
- resolveSecretListPrefix: () => import_sdk_services8.resolveSecretListPrefix,
417
- resolveSecretPath: () => import_sdk_services8.resolveSecretPath,
418
+ resolveSecretListPrefix: () => import_sdk_services9.resolveSecretListPrefix,
419
+ resolveSecretPath: () => import_sdk_services9.resolveSecretPath,
418
420
  resolveTinyCloudHosts: () => resolveTinyCloudHosts,
419
421
  resourceCapabilitiesToAbilitiesMap: () => resourceCapabilitiesToAbilitiesMap,
420
422
  resourceCapabilitiesToSpaceAbilitiesMap: () => resourceCapabilitiesToSpaceAbilitiesMap,
@@ -422,7 +424,7 @@ __export(index_exports, {
422
424
  revokePolicyRootV3: () => revokePolicyRootV3,
423
425
  serializeJcsJson: () => serialize,
424
426
  serializePortableDelegation: () => serializePortableDelegation,
425
- serviceError: () => import_sdk_services8.serviceError,
427
+ serviceError: () => import_sdk_services9.serviceError,
426
428
  sha256Base64Url: () => sha256Base64Url,
427
429
  shareCapabilityAllows: () => shareCapabilityAllows,
428
430
  signCompactPolicyDescendant: () => signCompactPolicyDescendant,
@@ -433,7 +435,7 @@ __export(index_exports, {
433
435
  signShareEnvelope: () => signShareEnvelope,
434
436
  signedObjectIdFor: () => signedObjectIdFor,
435
437
  submitHostDelegation: () => submitHostDelegation,
436
- tinyCloudDebugLogger: () => import_sdk_services8.tinyCloudDebugLogger,
438
+ tinyCloudDebugLogger: () => import_sdk_services9.tinyCloudDebugLogger,
437
439
  toSignedObjectError: () => toSignedObjectError,
438
440
  unauthorizedRecapCapabilities: () => unauthorizedRecapCapabilities,
439
441
  unifiedNativeProjectionHashHex: () => unifiedNativeProjectionHashHex,
@@ -445,7 +447,7 @@ __export(index_exports, {
445
447
  validateCredentialFlowDescriptor: () => validateCredentialFlowDescriptor,
446
448
  validateCredentialHolderBinding: () => validateCredentialHolderBinding,
447
449
  validateCredentialRequirement: () => validateCredentialRequirement,
448
- validateEnvelope: () => import_sdk_services8.validateEnvelope,
450
+ validateEnvelope: () => import_sdk_services9.validateEnvelope,
449
451
  validateLocationRecord: () => validateLocationRecord,
450
452
  validateLocationRecordPayload: () => validateLocationRecordPayload,
451
453
  validateManifest: () => validateManifest,
@@ -464,7 +466,8 @@ __export(index_exports, {
464
466
  validatePolicyUnsigned: () => validatePolicyUnsigned,
465
467
  validateShareDeliveryAuthorizationV3Bytes: () => validateShareDeliveryAuthorizationV3Bytes,
466
468
  validateUnifiedPolicyV2: () => validateUnifiedPolicyV2,
467
- verifyDecryptResponse: () => import_sdk_services8.verifyDecryptResponse,
469
+ validatedCapabilityOf: () => import_sdk_services9.validatedCapabilityOf,
470
+ verifyDecryptResponse: () => import_sdk_services9.verifyDecryptResponse,
468
471
  verifyDidKeyEd25519Signature: () => verifyDidKeyEd25519Signature,
469
472
  verifyEip191MessageSignature: () => verifyEip191MessageSignature,
470
473
  verifyIssuedCredential: () => verifyIssuedCredential,
@@ -3906,6 +3909,32 @@ var import_sha256 = require("@noble/hashes/sha256");
3906
3909
  var import_blake3 = require("@noble/hashes/blake3");
3907
3910
  var import_ed255193 = require("@noble/curves/ed25519");
3908
3911
  var import_zod2 = require("zod");
3912
+
3913
+ // src/http-error.ts
3914
+ var import_sdk_services = require("@tinycloud/sdk-services");
3915
+ async function httpResponseError(response, context) {
3916
+ let body;
3917
+ try {
3918
+ body = await response.text();
3919
+ } catch {
3920
+ body = response.statusText;
3921
+ }
3922
+ body = body.trim().slice(0, 512);
3923
+ return Object.assign(new Error(`${context}: HTTP ${response.status}${body ? ` - ${body}` : ""}`), {
3924
+ status: response.status
3925
+ });
3926
+ }
3927
+ async function serviceHttpError(response, code3, context, service) {
3928
+ const failure = await httpResponseError(response, context);
3929
+ return (0, import_sdk_services.serviceError)(
3930
+ response.status === 401 || response.status === 403 ? import_sdk_services.ErrorCodes.AUTH_UNAUTHORIZED : code3,
3931
+ failure.message,
3932
+ service,
3933
+ { meta: { status: response.status } }
3934
+ );
3935
+ }
3936
+
3937
+ // src/policy/unified.ts
3909
3938
  var POLICY_V1_SCHEMA = "xyz.tinycloud.policy/policy/v1";
3910
3939
  var POLICY_CAPABILITY_V1_SCHEMA = "xyz.tinycloud.policy/capability/v1";
3911
3940
  var POLICY_ENFORCEMENT_DELEGATION_V2_SCHEMA = "xyz.tinycloud.policy/enforcement-delegation/v2";
@@ -3933,7 +3962,7 @@ async function requestPolicyChallengeV3(input) {
3933
3962
  headers: { accept: "application/json", "content-type": "application/json" },
3934
3963
  body: JSON.stringify({ policyCid: input.policyCid, recipientDid: input.recipientDid, requestedCapabilities: input.requestedCapabilities.map(normalizeUnifiedPolicyCapability) })
3935
3964
  });
3936
- if (!response.ok) throw new Error(`policy challenge rejected (${response.status})`);
3965
+ if (!response.ok) throw await httpResponseError(response, "policy challenge rejected");
3937
3966
  const value = object2(await response.json(), "policy challenge");
3938
3967
  if (typeof value.challengeId !== "string" || typeof value.nonce !== "string" || value.policyCid !== input.policyCid || value.recipientDid !== input.recipientDid)
3939
3968
  throw new Error("policy challenge binding is invalid");
@@ -3996,7 +4025,7 @@ async function getPolicyRootStatusV3(input) {
3996
4025
  redirect: "error",
3997
4026
  headers: { accept: "application/json" }
3998
4027
  });
3999
- if (!response.ok) throw new Error(`policy root status rejected (${response.status})`);
4028
+ if (!response.ok) throw await httpResponseError(response, "policy root status rejected");
4000
4029
  const value = object2(await response.json(), "policy root status");
4001
4030
  const checkpoint = object2(value.checkpoint, "policy root checkpoint");
4002
4031
  if (value.rootCid !== input.rootCid || value.state !== "active" && value.state !== "revoked" || value.state !== checkpoint.state || !verifyPolicyRootStatusCheckpointV3({ rootCid: input.rootCid, checkpoint, expectedNodeAudience: input.expectedNodeAudience, now: input.now }))
@@ -4056,7 +4085,7 @@ async function renewPolicyRootStatusV3(input) {
4056
4085
  headers: { accept: "application/json", "content-type": "application/json" },
4057
4086
  body: JSON.stringify({ rootCid: input.rootCid, renewal: { ...unsigned, signature: { suite: "Ed25519", signerDid: input.ownerDid, value: encodeBase64Url2(signature) } } })
4058
4087
  });
4059
- if (!response.ok) throw new Error(`policy root renewal rejected (${response.status})`);
4088
+ if (!response.ok) throw await httpResponseError(response, "policy root renewal rejected");
4060
4089
  return object2(await response.json(), "policy root renewal");
4061
4090
  }
4062
4091
  function rfc3339Seconds(value) {
@@ -4083,7 +4112,7 @@ async function revokePolicyRootV3(input) {
4083
4112
  headers: { accept: "application/json", "content-type": "application/json" },
4084
4113
  body: JSON.stringify({ revocation: { ...unsigned, signature: { suite: "Ed25519", signerDid: input.issuerDid, value: encodeBase64Url2(signature) } } })
4085
4114
  });
4086
- if (!response.ok) throw new Error(`policy root revocation rejected (${response.status})`);
4115
+ if (!response.ok) throw await httpResponseError(response, "policy root revocation rejected");
4087
4116
  return object2(await response.json(), "policy root revocation");
4088
4117
  }
4089
4118
  var POLICY_SESSION_FACT_KEYS = [
@@ -4352,7 +4381,7 @@ async function registerPolicyV3(input) {
4352
4381
  }
4353
4382
  );
4354
4383
  if (!bindingResponse.ok) {
4355
- throw new Error(`policy enforcer binding rejected (${bindingResponse.status})`);
4384
+ throw await httpResponseError(bindingResponse, "policy enforcer binding rejected");
4356
4385
  }
4357
4386
  const binding = exactObject(
4358
4387
  await bindingResponse.json(),
@@ -4418,7 +4447,7 @@ async function registerPolicyV3(input) {
4418
4447
  }
4419
4448
  );
4420
4449
  if (!response.ok) {
4421
- throw new Error(`policy registration rejected (${response.status})`);
4450
+ throw await httpResponseError(response, "policy registration rejected");
4422
4451
  }
4423
4452
  const receipt = exactObject(
4424
4453
  await response.json(),
@@ -5104,7 +5133,7 @@ async function admitPolicyCredentialV3(input) {
5104
5133
  requestedSessionExpiry(input.requestedExpiresAt, policy),
5105
5134
  input.signal
5106
5135
  );
5107
- if (!response.ok) throw new Error(`policy delegation rejected (${response.status})`);
5136
+ if (!response.ok) throw await httpResponseError(response, "policy delegation rejected");
5108
5137
  const value = record(await response.json(), "policy delegation");
5109
5138
  if (value.admitted !== true || typeof value.sessionCid !== "string" || typeof value.authorization !== "string") {
5110
5139
  throw new Error("policy delegation response is invalid");
@@ -5157,7 +5186,7 @@ async function admitPolicyCredentialV4(input) {
5157
5186
  requestedSessionExpiry(input.requestedExpiresAt, policy),
5158
5187
  input.signal
5159
5188
  );
5160
- if (!response.ok) throw new Error(`policy delegation rejected (${response.status})`);
5189
+ if (!response.ok) throw await httpResponseError(response, "policy delegation rejected");
5161
5190
  const value = record(await response.json(), "policy delegation");
5162
5191
  if (value.admitted !== true || typeof value.sessionCid !== "string" || typeof value.authorization !== "string") throw new Error("policy delegation response is invalid");
5163
5192
  const session = parsePolicySessionUcan(value.authorization, [
@@ -5176,7 +5205,7 @@ async function admitPolicyCredentialV4(input) {
5176
5205
  signal: input.signal,
5177
5206
  headers: { Authorization: session.authorization }
5178
5207
  });
5179
- if (!importResponse.ok) throw new Error(`delegation import rejected (${importResponse.status})`);
5208
+ if (!importResponse.ok) throw await httpResponseError(importResponse, "delegation import rejected");
5180
5209
  input.signal?.throwIfAborted();
5181
5210
  return Object.freeze({ challenge, presentation, session, delegationImported: true });
5182
5211
  }
@@ -7760,7 +7789,7 @@ function validateEncodedShareData(data) {
7760
7789
  // src/manifest.ts
7761
7790
  var import_ms = __toESM(require("ms"), 1);
7762
7791
  var import_bootstrap2 = require("@tinycloud/bootstrap");
7763
- var import_sdk_services = require("@tinycloud/sdk-services");
7792
+ var import_sdk_services2 = require("@tinycloud/sdk-services");
7764
7793
  var DEFAULT_KNOWLEDGE_ROOT = "knowledge/index.md";
7765
7794
  var ManifestValidationError = class extends Error {
7766
7795
  constructor(message) {
@@ -8031,13 +8060,13 @@ function validateManifestSecrets(secrets) {
8031
8060
  throw new ManifestValidationError("manifest.secrets must be an object");
8032
8061
  }
8033
8062
  for (const [name2, spec] of Object.entries(secrets)) {
8034
- if (!import_sdk_services.SECRET_NAME_RE.test(name2)) {
8063
+ if (!import_sdk_services2.SECRET_NAME_RE.test(name2)) {
8035
8064
  throw new ManifestValidationError(
8036
- `manifest.secrets.${name2} must match ${import_sdk_services.SECRET_NAME_RE.source}`
8065
+ `manifest.secrets.${name2} must match ${import_sdk_services2.SECRET_NAME_RE.source}`
8037
8066
  );
8038
8067
  }
8039
8068
  try {
8040
- (0, import_sdk_services.resolveSecretPath)(
8069
+ (0, import_sdk_services2.resolveSecretPath)(
8041
8070
  secretNameFromSpec(name2, spec),
8042
8071
  { scope: secretScopeFromSpec(spec) }
8043
8072
  );
@@ -8254,7 +8283,7 @@ function secretEntriesForManifest(secrets) {
8254
8283
  const entries = [];
8255
8284
  for (const [name2, spec] of Object.entries(secrets)) {
8256
8285
  const actions = secretActionsFromSpec(name2, spec);
8257
- const secretPath = (0, import_sdk_services.resolveSecretPath)(
8286
+ const secretPath = (0, import_sdk_services2.resolveSecretPath)(
8258
8287
  secretNameFromSpec(name2, spec),
8259
8288
  { scope: secretScopeFromSpec(spec) }
8260
8289
  );
@@ -8696,7 +8725,7 @@ function parseRecapCapabilities(parseWasm, siwe) {
8696
8725
  var import_ed255197 = require("@noble/curves/ed25519");
8697
8726
 
8698
8727
  // src/delegations/ShareRecipientClient.ts
8699
- var import_sdk_services2 = require("@tinycloud/sdk-services");
8728
+ var import_sdk_services3 = require("@tinycloud/sdk-services");
8700
8729
  var import_ed255196 = require("@noble/curves/ed25519");
8701
8730
  var import_sha2565 = require("@noble/hashes/sha256");
8702
8731
 
@@ -9814,7 +9843,7 @@ async function importPortableDelegation(fetchFn, host, delegation) {
9814
9843
  headers: { Authorization: parsed.delegationHeader.Authorization }
9815
9844
  });
9816
9845
  if (!response.ok)
9817
- throw new Error(`node rejected delegation import (${response.status})`);
9846
+ throw await httpResponseError(response, "node rejected delegation import");
9818
9847
  const body = await response.json().catch(() => ({}));
9819
9848
  if (body === null || typeof body !== "object" || Array.isArray(body))
9820
9849
  return {};
@@ -9883,7 +9912,7 @@ function redactedCode(error) {
9883
9912
  if (error instanceof ShareConflict) return error.code;
9884
9913
  const code3 = error && typeof error === "object" && "code" in error ? error.code : void 0;
9885
9914
  if (typeof code3 !== "string") return "SHARE_INVALID";
9886
- if (code3 === import_sdk_services2.ErrorCodes.KV_PRECONDITION_FAILED || code3 === import_sdk_services2.ErrorCodes.KV_CONFLICT || code3 === "412") return "SHARE_CONFLICT";
9915
+ if (code3 === import_sdk_services3.ErrorCodes.KV_PRECONDITION_FAILED || code3 === import_sdk_services3.ErrorCodes.KV_CONFLICT || code3 === "412") return "SHARE_CONFLICT";
9887
9916
  if (code3 === "KV_NOT_FOUND" || code3 === "NOT_FOUND" || code3 === "404") return "SHARE_NOT_FOUND";
9888
9917
  if (code3.includes("EXPIRED") || code3 === "expired") return "SHARE_EXPIRED";
9889
9918
  if (code3.includes("REVOK")) return "SHARE_REVOKED";
@@ -10122,7 +10151,7 @@ var ShareRecipientClient = class {
10122
10151
  if (portableDelegation !== void 0 && kv !== void 0) {
10123
10152
  const result2 = await kv.put(resolvedPath, bytes2, { contentType: input.contentType ?? envelope.content.mimeType, ifMatch: input.etag });
10124
10153
  if (!result2.ok) {
10125
- if (result2.error.code === import_sdk_services2.ErrorCodes.KV_PRECONDITION_FAILED || result2.error.code === import_sdk_services2.ErrorCodes.KV_CONFLICT) throw new ShareConflict(resolvedPath, result2.error.meta?.etag);
10154
+ if (result2.error.code === import_sdk_services3.ErrorCodes.KV_PRECONDITION_FAILED || result2.error.code === import_sdk_services3.ErrorCodes.KV_CONFLICT) throw new ShareConflict(resolvedPath, result2.error.meta?.etag);
10126
10155
  throw result2.error;
10127
10156
  }
10128
10157
  return { etag: result2.data.headers.etag };
@@ -10130,7 +10159,7 @@ var ShareRecipientClient = class {
10130
10159
  if (policySession !== void 0) return this.nativeSave(envelope, policySession, resolvedPath, bytes2, input);
10131
10160
  const result = await kv.put(resolvedPath, bytes2, { contentType: input.contentType ?? envelope.content.mimeType, ifMatch: input.etag });
10132
10161
  if (!result.ok) {
10133
- if (result.error.code === import_sdk_services2.ErrorCodes.KV_PRECONDITION_FAILED || result.error.code === import_sdk_services2.ErrorCodes.KV_CONFLICT) throw new ShareConflict(resolvedPath, result.error.meta?.etag);
10162
+ if (result.error.code === import_sdk_services3.ErrorCodes.KV_PRECONDITION_FAILED || result.error.code === import_sdk_services3.ErrorCodes.KV_CONFLICT) throw new ShareConflict(resolvedPath, result.error.meta?.etag);
10134
10163
  throw result.error;
10135
10164
  }
10136
10165
  return { etag: result.data.headers.etag };
@@ -10214,8 +10243,8 @@ var ShareRecipientClient = class {
10214
10243
  if (this.options.createKVService !== void 0) {
10215
10244
  return this.options.createKVService({ hosts: [origin2], session, invoke, fetch: this.fetchFn });
10216
10245
  }
10217
- const context = new import_sdk_services2.ServiceContext({ hosts: [origin2], session, invoke, fetch: this.fetchFn });
10218
- const service = new import_sdk_services2.KVService({ prefix: "" });
10246
+ const context = new import_sdk_services3.ServiceContext({ hosts: [origin2], session, invoke, fetch: this.fetchFn });
10247
+ const service = new import_sdk_services3.KVService({ prefix: "" });
10219
10248
  context.registerService("kv", service);
10220
10249
  service.initialize(context);
10221
10250
  return service;
@@ -12474,14 +12503,14 @@ var import_share_sdk = require("@tinycloud/share-sdk");
12474
12503
  var import_share_sdk2 = require("@tinycloud/share-sdk");
12475
12504
 
12476
12505
  // src/networkId.ts
12477
- var import_sdk_services3 = require("@tinycloud/sdk-services");
12506
+ var import_sdk_services4 = require("@tinycloud/sdk-services");
12478
12507
  function canonicalizeNetworkId(networkId) {
12479
- const parsed = (0, import_sdk_services3.parseNetworkId)(networkId);
12480
- return (0, import_sdk_services3.buildNetworkId)(canonicalizeDid(parsed.ownerDid), parsed.name);
12508
+ const parsed = (0, import_sdk_services4.parseNetworkId)(networkId);
12509
+ return (0, import_sdk_services4.buildNetworkId)(canonicalizeDid(parsed.ownerDid), parsed.name);
12481
12510
  }
12482
12511
  function parseCanonicalNetworkId(networkId) {
12483
12512
  const canonical = canonicalizeNetworkId(networkId);
12484
- return (0, import_sdk_services3.parseNetworkId)(canonical);
12513
+ return (0, import_sdk_services4.parseNetworkId)(canonical);
12485
12514
  }
12486
12515
 
12487
12516
  // src/storage.schema.ts
@@ -12580,10 +12609,10 @@ function validatePersistedSessionData(data) {
12580
12609
  }
12581
12610
 
12582
12611
  // src/TinyCloud.ts
12583
- var import_sdk_services5 = require("@tinycloud/sdk-services");
12612
+ var import_sdk_services6 = require("@tinycloud/sdk-services");
12584
12613
 
12585
12614
  // src/spaces/SpaceService.ts
12586
- var import_sdk_services4 = require("@tinycloud/sdk-services");
12615
+ var import_sdk_services5 = require("@tinycloud/sdk-services");
12587
12616
 
12588
12617
  // src/spaces/Space.ts
12589
12618
  function unavailableSecretsService() {
@@ -13012,8 +13041,8 @@ var SpaceService = class {
13012
13041
  */
13013
13042
  async list() {
13014
13043
  if (!this.session) {
13015
- return (0, import_sdk_services4.err)(
13016
- (0, import_sdk_services4.serviceError)(SpaceErrorCodes.AUTH_REQUIRED, "Authentication required", SERVICE_NAME)
13044
+ return (0, import_sdk_services5.err)(
13045
+ (0, import_sdk_services5.serviceError)(SpaceErrorCodes.AUTH_REQUIRED, "Authentication required", SERVICE_NAME)
13017
13046
  );
13018
13047
  }
13019
13048
  try {
@@ -13021,6 +13050,9 @@ var SpaceService = class {
13021
13050
  const ownedResult = await this.listOwnedSpaces();
13022
13051
  if (ownedResult.ok) {
13023
13052
  spaces.push(...ownedResult.data);
13053
+ } else {
13054
+ const verdict = (0, import_sdk_services5.authorizationVerdictOf)(ownedResult.error);
13055
+ if (verdict === "unauthenticated" || verdict === "forbidden") return (0, import_sdk_services5.err)(ownedResult.error);
13024
13056
  }
13025
13057
  if (this.capabilityRegistry) {
13026
13058
  const delegatedSpaces = this.discoverDelegatedSpaces();
@@ -13030,10 +13062,10 @@ var SpaceService = class {
13030
13062
  for (const space of uniqueSpaces) {
13031
13063
  this.notifySpaceRegistered(space);
13032
13064
  }
13033
- return (0, import_sdk_services4.ok)(uniqueSpaces);
13065
+ return (0, import_sdk_services5.ok)(uniqueSpaces);
13034
13066
  } catch (error) {
13035
- return (0, import_sdk_services4.err)(
13036
- (0, import_sdk_services4.serviceError)(
13067
+ return (0, import_sdk_services5.err)(
13068
+ (0, import_sdk_services5.serviceError)(
13037
13069
  SpaceErrorCodes.NETWORK_ERROR,
13038
13070
  `Failed to list spaces: ${String(error)}`,
13039
13071
  SERVICE_NAME,
@@ -13053,21 +13085,18 @@ var SpaceService = class {
13053
13085
  headers
13054
13086
  });
13055
13087
  if (!response.ok) {
13056
- const errorText = await response.text();
13057
- return (0, import_sdk_services4.err)(
13058
- (0, import_sdk_services4.serviceError)(
13059
- SpaceErrorCodes.NETWORK_ERROR,
13060
- `Failed to list owned spaces: ${response.status} - ${errorText}`,
13061
- SERVICE_NAME,
13062
- { meta: { status: response.status } }
13063
- )
13064
- );
13088
+ return (0, import_sdk_services5.err)(await serviceHttpError(
13089
+ response,
13090
+ SpaceErrorCodes.NETWORK_ERROR,
13091
+ "Failed to list owned spaces",
13092
+ SERVICE_NAME
13093
+ ));
13065
13094
  }
13066
13095
  const rawData = await response.json();
13067
13096
  const validationResult = validateServerOwnedSpacesResponse(rawData);
13068
13097
  if (!validationResult.ok) {
13069
- return (0, import_sdk_services4.err)(
13070
- (0, import_sdk_services4.serviceError)(
13098
+ return (0, import_sdk_services5.err)(
13099
+ (0, import_sdk_services5.serviceError)(
13071
13100
  SpaceErrorCodes.NETWORK_ERROR,
13072
13101
  validationResult.error.message,
13073
13102
  SERVICE_NAME,
@@ -13083,10 +13112,10 @@ var SpaceService = class {
13083
13112
  permissions: ["*"]
13084
13113
  // Full permissions for owned spaces
13085
13114
  }));
13086
- return (0, import_sdk_services4.ok)(spaces);
13115
+ return (0, import_sdk_services5.ok)(spaces);
13087
13116
  } catch (error) {
13088
- return (0, import_sdk_services4.err)(
13089
- (0, import_sdk_services4.serviceError)(
13117
+ return (0, import_sdk_services5.err)(
13118
+ (0, import_sdk_services5.serviceError)(
13090
13119
  SpaceErrorCodes.NETWORK_ERROR,
13091
13120
  `Network error listing owned spaces: ${String(error)}`,
13092
13121
  SERVICE_NAME,
@@ -13167,13 +13196,13 @@ var SpaceService = class {
13167
13196
  */
13168
13197
  async create(name2) {
13169
13198
  if (!this.session) {
13170
- return (0, import_sdk_services4.err)(
13171
- (0, import_sdk_services4.serviceError)(SpaceErrorCodes.AUTH_REQUIRED, "Authentication required", SERVICE_NAME)
13199
+ return (0, import_sdk_services5.err)(
13200
+ (0, import_sdk_services5.serviceError)(SpaceErrorCodes.AUTH_REQUIRED, "Authentication required", SERVICE_NAME)
13172
13201
  );
13173
13202
  }
13174
13203
  if (!name2 || !/^[a-zA-Z0-9_-]+$/.test(name2)) {
13175
- return (0, import_sdk_services4.err)(
13176
- (0, import_sdk_services4.serviceError)(
13204
+ return (0, import_sdk_services5.err)(
13205
+ (0, import_sdk_services5.serviceError)(
13177
13206
  SpaceErrorCodes.INVALID_NAME,
13178
13207
  "Space name must contain only alphanumeric characters, underscores, and hyphens",
13179
13208
  SERVICE_NAME
@@ -13188,30 +13217,26 @@ var SpaceService = class {
13188
13217
  body: JSON.stringify({ name: name2 })
13189
13218
  });
13190
13219
  if (!response.ok) {
13191
- const errorText = await response.text();
13192
13220
  if (response.status === 409) {
13193
- return (0, import_sdk_services4.err)(
13194
- (0, import_sdk_services4.serviceError)(
13195
- SpaceErrorCodes.ALREADY_EXISTS,
13196
- `Space "${name2}" already exists`,
13197
- SERVICE_NAME
13198
- )
13199
- );
13221
+ return (0, import_sdk_services5.err)(await serviceHttpError(
13222
+ response,
13223
+ SpaceErrorCodes.ALREADY_EXISTS,
13224
+ `Space "${name2}" already exists`,
13225
+ SERVICE_NAME
13226
+ ));
13200
13227
  }
13201
- return (0, import_sdk_services4.err)(
13202
- (0, import_sdk_services4.serviceError)(
13203
- SpaceErrorCodes.CREATION_FAILED,
13204
- `Failed to create space: ${response.status} - ${errorText}`,
13205
- SERVICE_NAME,
13206
- { meta: { status: response.status } }
13207
- )
13208
- );
13228
+ return (0, import_sdk_services5.err)(await serviceHttpError(
13229
+ response,
13230
+ SpaceErrorCodes.CREATION_FAILED,
13231
+ "Failed to create space",
13232
+ SERVICE_NAME
13233
+ ));
13209
13234
  }
13210
13235
  const rawData = await response.json();
13211
13236
  const validationResult = validateServerCreateSpaceResponse(rawData);
13212
13237
  if (!validationResult.ok) {
13213
- return (0, import_sdk_services4.err)(
13214
- (0, import_sdk_services4.serviceError)(
13238
+ return (0, import_sdk_services5.err)(
13239
+ (0, import_sdk_services5.serviceError)(
13215
13240
  SpaceErrorCodes.CREATION_FAILED,
13216
13241
  validationResult.error.message,
13217
13242
  SERVICE_NAME,
@@ -13228,10 +13253,10 @@ var SpaceService = class {
13228
13253
  };
13229
13254
  this.infoCache.set(spaceInfo.id, { info: spaceInfo, cachedAt: Date.now() });
13230
13255
  this.notifySpaceRegistered(spaceInfo);
13231
- return (0, import_sdk_services4.ok)(spaceInfo);
13256
+ return (0, import_sdk_services5.ok)(spaceInfo);
13232
13257
  } catch (error) {
13233
- return (0, import_sdk_services4.err)(
13234
- (0, import_sdk_services4.serviceError)(
13258
+ return (0, import_sdk_services5.err)(
13259
+ (0, import_sdk_services5.serviceError)(
13235
13260
  SpaceErrorCodes.NETWORK_ERROR,
13236
13261
  `Network error creating space: ${String(error)}`,
13237
13262
  SERVICE_NAME,
@@ -13301,10 +13326,10 @@ var SpaceService = class {
13301
13326
  const spaceId = this.resolveSpaceId(nameOrUri);
13302
13327
  const cached = this.infoCache.get(spaceId);
13303
13328
  if (cached && Date.now() - cached.cachedAt < this.cacheTTL) {
13304
- return (0, import_sdk_services4.ok)(true);
13329
+ return (0, import_sdk_services5.ok)(true);
13305
13330
  }
13306
13331
  const infoResult = await this.getSpaceInfo(spaceId);
13307
- return (0, import_sdk_services4.ok)(infoResult.ok);
13332
+ return (0, import_sdk_services5.ok)(infoResult.ok);
13308
13333
  }
13309
13334
  // ===========================================================================
13310
13335
  // Space Info
@@ -13315,11 +13340,11 @@ var SpaceService = class {
13315
13340
  async getSpaceInfo(spaceId) {
13316
13341
  const cached = this.infoCache.get(spaceId);
13317
13342
  if (cached && Date.now() - cached.cachedAt < this.cacheTTL) {
13318
- return (0, import_sdk_services4.ok)(cached.info);
13343
+ return (0, import_sdk_services5.ok)(cached.info);
13319
13344
  }
13320
13345
  if (!this.session) {
13321
- return (0, import_sdk_services4.err)(
13322
- (0, import_sdk_services4.serviceError)(SpaceErrorCodes.AUTH_REQUIRED, "Authentication required", SERVICE_NAME)
13346
+ return (0, import_sdk_services5.err)(
13347
+ (0, import_sdk_services5.serviceError)(SpaceErrorCodes.AUTH_REQUIRED, "Authentication required", SERVICE_NAME)
13323
13348
  );
13324
13349
  }
13325
13350
  try {
@@ -13331,24 +13356,25 @@ var SpaceService = class {
13331
13356
  });
13332
13357
  if (!response.ok) {
13333
13358
  if (response.status === 404) {
13334
- return (0, import_sdk_services4.err)(
13335
- (0, import_sdk_services4.serviceError)(SpaceErrorCodes.NOT_FOUND, `Space not found: ${spaceId}`, SERVICE_NAME)
13336
- );
13337
- }
13338
- const errorText = await response.text();
13339
- return (0, import_sdk_services4.err)(
13340
- (0, import_sdk_services4.serviceError)(
13341
- SpaceErrorCodes.NETWORK_ERROR,
13342
- `Failed to get space info: ${response.status} - ${errorText}`,
13359
+ return (0, import_sdk_services5.err)(await serviceHttpError(
13360
+ response,
13361
+ SpaceErrorCodes.NOT_FOUND,
13362
+ `Space not found: ${spaceId}`,
13343
13363
  SERVICE_NAME
13344
- )
13345
- );
13364
+ ));
13365
+ }
13366
+ return (0, import_sdk_services5.err)(await serviceHttpError(
13367
+ response,
13368
+ SpaceErrorCodes.NETWORK_ERROR,
13369
+ "Failed to get space info",
13370
+ SERVICE_NAME
13371
+ ));
13346
13372
  }
13347
13373
  const rawData = await response.json();
13348
13374
  const validationResult = validateServerSpaceInfoResponse(rawData);
13349
13375
  if (!validationResult.ok) {
13350
- return (0, import_sdk_services4.err)(
13351
- (0, import_sdk_services4.serviceError)(
13376
+ return (0, import_sdk_services5.err)(
13377
+ (0, import_sdk_services5.serviceError)(
13352
13378
  SpaceErrorCodes.NETWORK_ERROR,
13353
13379
  validationResult.error.message,
13354
13380
  SERVICE_NAME,
@@ -13366,10 +13392,10 @@ var SpaceService = class {
13366
13392
  expiresAt: data.expiresAt ? new Date(data.expiresAt) : void 0
13367
13393
  };
13368
13394
  this.infoCache.set(spaceId, { info: spaceInfo, cachedAt: Date.now() });
13369
- return (0, import_sdk_services4.ok)(spaceInfo);
13395
+ return (0, import_sdk_services5.ok)(spaceInfo);
13370
13396
  } catch (error) {
13371
- return (0, import_sdk_services4.err)(
13372
- (0, import_sdk_services4.serviceError)(
13397
+ return (0, import_sdk_services5.err)(
13398
+ (0, import_sdk_services5.serviceError)(
13373
13399
  SpaceErrorCodes.NETWORK_ERROR,
13374
13400
  `Network error getting space info: ${String(error)}`,
13375
13401
  SERVICE_NAME,
@@ -13454,20 +13480,18 @@ var SpaceService = class {
13454
13480
  headers
13455
13481
  });
13456
13482
  if (!response.ok) {
13457
- const errorText = await response.text();
13458
- return (0, import_sdk_services4.err)(
13459
- (0, import_sdk_services4.serviceError)(
13460
- SpaceErrorCodes.NETWORK_ERROR,
13461
- `Failed to list delegations: ${response.status} - ${errorText}`,
13462
- SERVICE_NAME
13463
- )
13464
- );
13483
+ return (0, import_sdk_services5.err)(await serviceHttpError(
13484
+ response,
13485
+ SpaceErrorCodes.NETWORK_ERROR,
13486
+ "Failed to list delegations",
13487
+ SERVICE_NAME
13488
+ ));
13465
13489
  }
13466
13490
  const rawData = await response.json();
13467
13491
  const validationResult = validateServerDelegationsResponse(rawData);
13468
13492
  if (!validationResult.ok) {
13469
- return (0, import_sdk_services4.err)(
13470
- (0, import_sdk_services4.serviceError)(
13493
+ return (0, import_sdk_services5.err)(
13494
+ (0, import_sdk_services5.serviceError)(
13471
13495
  SpaceErrorCodes.NETWORK_ERROR,
13472
13496
  validationResult.error.message,
13473
13497
  SERVICE_NAME,
@@ -13476,10 +13500,10 @@ var SpaceService = class {
13476
13500
  );
13477
13501
  }
13478
13502
  const delegations = transformServerDelegations(validationResult.data, spaceId);
13479
- return (0, import_sdk_services4.ok)(delegations);
13503
+ return (0, import_sdk_services5.ok)(delegations);
13480
13504
  } catch (error) {
13481
- return (0, import_sdk_services4.err)(
13482
- (0, import_sdk_services4.serviceError)(
13505
+ return (0, import_sdk_services5.err)(
13506
+ (0, import_sdk_services5.serviceError)(
13483
13507
  SpaceErrorCodes.NETWORK_ERROR,
13484
13508
  `Network error listing delegations: ${String(error)}`,
13485
13509
  SERVICE_NAME
@@ -13509,20 +13533,18 @@ var SpaceService = class {
13509
13533
  headers
13510
13534
  });
13511
13535
  if (!response.ok) {
13512
- const errorText = await response.text();
13513
- return (0, import_sdk_services4.err)(
13514
- (0, import_sdk_services4.serviceError)(
13515
- SpaceErrorCodes.NETWORK_ERROR,
13516
- `Failed to list received delegations: ${response.status} - ${errorText}`,
13517
- SERVICE_NAME
13518
- )
13519
- );
13536
+ return (0, import_sdk_services5.err)(await serviceHttpError(
13537
+ response,
13538
+ SpaceErrorCodes.NETWORK_ERROR,
13539
+ "Failed to list received delegations",
13540
+ SERVICE_NAME
13541
+ ));
13520
13542
  }
13521
13543
  const rawData = await response.json();
13522
13544
  const validationResult = validateServerDelegationsResponse(rawData);
13523
13545
  if (!validationResult.ok) {
13524
- return (0, import_sdk_services4.err)(
13525
- (0, import_sdk_services4.serviceError)(
13546
+ return (0, import_sdk_services5.err)(
13547
+ (0, import_sdk_services5.serviceError)(
13526
13548
  SpaceErrorCodes.NETWORK_ERROR,
13527
13549
  validationResult.error.message,
13528
13550
  SERVICE_NAME,
@@ -13531,10 +13553,10 @@ var SpaceService = class {
13531
13553
  );
13532
13554
  }
13533
13555
  const delegations = transformServerDelegations(validationResult.data, spaceId);
13534
- return (0, import_sdk_services4.ok)(delegations);
13556
+ return (0, import_sdk_services5.ok)(delegations);
13535
13557
  } catch (error) {
13536
- return (0, import_sdk_services4.err)(
13537
- (0, import_sdk_services4.serviceError)(
13558
+ return (0, import_sdk_services5.err)(
13559
+ (0, import_sdk_services5.serviceError)(
13538
13560
  SpaceErrorCodes.NETWORK_ERROR,
13539
13561
  `Network error listing received delegations: ${String(error)}`,
13540
13562
  SERVICE_NAME
@@ -13546,8 +13568,8 @@ var SpaceService = class {
13546
13568
  if (self.createDelegationFn) {
13547
13569
  return self.createDelegationFn({ ...params, spaceId });
13548
13570
  }
13549
- return (0, import_sdk_services4.err)(
13550
- (0, import_sdk_services4.serviceError)(
13571
+ return (0, import_sdk_services5.err)(
13572
+ (0, import_sdk_services5.serviceError)(
13551
13573
  SpaceErrorCodes.NOT_INITIALIZED,
13552
13574
  "Delegation creation requires a createDelegation function. This should be provided by the platform SDK (web-sdk or node-sdk).",
13553
13575
  SERVICE_NAME
@@ -13568,19 +13590,17 @@ var SpaceService = class {
13568
13590
  body: JSON.stringify({ cid: cid2, spaceId })
13569
13591
  });
13570
13592
  if (!response.ok) {
13571
- const errorText = await response.text();
13572
- return (0, import_sdk_services4.err)(
13573
- (0, import_sdk_services4.serviceError)(
13574
- SpaceErrorCodes.NETWORK_ERROR,
13575
- `Failed to revoke delegation: ${response.status} - ${errorText}`,
13576
- SERVICE_NAME
13577
- )
13578
- );
13593
+ return (0, import_sdk_services5.err)(await serviceHttpError(
13594
+ response,
13595
+ SpaceErrorCodes.NETWORK_ERROR,
13596
+ "Failed to revoke delegation",
13597
+ SERVICE_NAME
13598
+ ));
13579
13599
  }
13580
- return (0, import_sdk_services4.ok)(void 0);
13600
+ return (0, import_sdk_services5.ok)(void 0);
13581
13601
  } catch (error) {
13582
- return (0, import_sdk_services4.err)(
13583
- (0, import_sdk_services4.serviceError)(
13602
+ return (0, import_sdk_services5.err)(
13603
+ (0, import_sdk_services5.serviceError)(
13584
13604
  SpaceErrorCodes.NETWORK_ERROR,
13585
13605
  `Network error revoking delegation: ${String(error)}`,
13586
13606
  SERVICE_NAME
@@ -13603,18 +13623,18 @@ var SpaceService = class {
13603
13623
  if (self.sharingService) {
13604
13624
  const result = await self.sharingService.generate(params);
13605
13625
  if (!result.ok) {
13606
- return (0, import_sdk_services4.err)(
13607
- (0, import_sdk_services4.serviceError)(
13626
+ return (0, import_sdk_services5.err)(
13627
+ (0, import_sdk_services5.serviceError)(
13608
13628
  SpaceErrorCodes.NETWORK_ERROR,
13609
13629
  result.error.message || "Failed to generate share link",
13610
13630
  SERVICE_NAME
13611
13631
  )
13612
13632
  );
13613
13633
  }
13614
- return (0, import_sdk_services4.ok)(result.data);
13634
+ return (0, import_sdk_services5.ok)(result.data);
13615
13635
  }
13616
- return (0, import_sdk_services4.err)(
13617
- (0, import_sdk_services4.serviceError)(
13636
+ return (0, import_sdk_services5.err)(
13637
+ (0, import_sdk_services5.serviceError)(
13618
13638
  SpaceErrorCodes.NOT_INITIALIZED,
13619
13639
  "SharingService not configured. V2 sharing requires a SharingService instance.",
13620
13640
  SERVICE_NAME
@@ -13622,8 +13642,8 @@ var SpaceService = class {
13622
13642
  );
13623
13643
  },
13624
13644
  async list() {
13625
- return (0, import_sdk_services4.err)(
13626
- (0, import_sdk_services4.serviceError)(
13645
+ return (0, import_sdk_services5.err)(
13646
+ (0, import_sdk_services5.serviceError)(
13627
13647
  SpaceErrorCodes.NOT_INITIALIZED,
13628
13648
  "Listing share links is not supported in v2. Share links are self-contained tokens that are not tracked on the server.",
13629
13649
  SERVICE_NAME
@@ -13631,8 +13651,8 @@ var SpaceService = class {
13631
13651
  );
13632
13652
  },
13633
13653
  async revoke(token) {
13634
- return (0, import_sdk_services4.err)(
13635
- (0, import_sdk_services4.serviceError)(
13654
+ return (0, import_sdk_services5.err)(
13655
+ (0, import_sdk_services5.serviceError)(
13636
13656
  SpaceErrorCodes.NOT_INITIALIZED,
13637
13657
  "Revoking share links by token is not supported in v2. To revoke access, revoke the underlying delegation using space.delegations.revoke(cid).",
13638
13658
  SERVICE_NAME
@@ -13692,7 +13712,7 @@ var TinyCloud = class _TinyCloud {
13692
13712
  "hosts are required to initialize services. Provide them via config.hosts or initializeServices()."
13693
13713
  );
13694
13714
  }
13695
- this._serviceContext = new import_sdk_services5.ServiceContext({
13715
+ this._serviceContext = new import_sdk_services6.ServiceContext({
13696
13716
  invoke: effectiveInvoke,
13697
13717
  invokeAny: this.config.invokeAny,
13698
13718
  fetch: fetchFn ?? this.config.fetch ?? globalThis.fetch.bind(globalThis),
@@ -13701,10 +13721,10 @@ var TinyCloud = class _TinyCloud {
13701
13721
  telemetry: this.config.telemetry
13702
13722
  });
13703
13723
  const serviceConstructors = {
13704
- kv: import_sdk_services5.KVService,
13705
- sql: import_sdk_services5.SQLService,
13706
- duckdb: import_sdk_services5.DuckDbService,
13707
- hooks: import_sdk_services5.HooksService,
13724
+ kv: import_sdk_services6.KVService,
13725
+ sql: import_sdk_services6.SQLService,
13726
+ duckdb: import_sdk_services6.DuckDbService,
13727
+ hooks: import_sdk_services6.HooksService,
13708
13728
  ...this.config.services
13709
13729
  };
13710
13730
  for (const [name2, ServiceClass] of Object.entries(serviceConstructors)) {
@@ -13968,18 +13988,18 @@ var TinyCloud = class _TinyCloud {
13968
13988
  const address = this.address();
13969
13989
  const chainId = this.chainId();
13970
13990
  if (!address || !chainId) {
13971
- return (0, import_sdk_services5.err)(
13972
- (0, import_sdk_services5.serviceError)(
13973
- import_sdk_services5.ErrorCodes.AUTH_REQUIRED,
13991
+ return (0, import_sdk_services6.err)(
13992
+ (0, import_sdk_services6.serviceError)(
13993
+ import_sdk_services6.ErrorCodes.AUTH_REQUIRED,
13974
13994
  "Must be signed in to ensure public space",
13975
13995
  "public-space"
13976
13996
  )
13977
13997
  );
13978
13998
  }
13979
13999
  if (!this._serviceContext) {
13980
- return (0, import_sdk_services5.err)(
13981
- (0, import_sdk_services5.serviceError)(
13982
- import_sdk_services5.ErrorCodes.AUTH_REQUIRED,
14000
+ return (0, import_sdk_services6.err)(
14001
+ (0, import_sdk_services6.serviceError)(
14002
+ import_sdk_services6.ErrorCodes.AUTH_REQUIRED,
13983
14003
  "Services not initialized. Call initializeServices() or signIn() first.",
13984
14004
  "public-space"
13985
14005
  )
@@ -13989,9 +14009,9 @@ var TinyCloud = class _TinyCloud {
13989
14009
  try {
13990
14010
  const session = this._serviceContext.session;
13991
14011
  if (!session) {
13992
- return (0, import_sdk_services5.err)(
13993
- (0, import_sdk_services5.serviceError)(
13994
- import_sdk_services5.ErrorCodes.AUTH_REQUIRED,
14012
+ return (0, import_sdk_services6.err)(
14013
+ (0, import_sdk_services6.serviceError)(
14014
+ import_sdk_services6.ErrorCodes.AUTH_REQUIRED,
13995
14015
  "No active session",
13996
14016
  "public-space"
13997
14017
  )
@@ -14008,7 +14028,7 @@ var TinyCloud = class _TinyCloud {
14008
14028
  { method: "POST", headers, body: JSON.stringify({ spaceId }) }
14009
14029
  );
14010
14030
  if (response.ok) {
14011
- return (0, import_sdk_services5.ok)(void 0);
14031
+ return (0, import_sdk_services6.ok)(void 0);
14012
14032
  }
14013
14033
  if (response.status === 404) {
14014
14034
  const createHeaders = this._serviceContext.invoke(
@@ -14027,31 +14047,27 @@ var TinyCloud = class _TinyCloud {
14027
14047
  );
14028
14048
  if (!createResponse.ok) {
14029
14049
  if (createResponse.status === 409) {
14030
- return (0, import_sdk_services5.ok)(void 0);
14050
+ return (0, import_sdk_services6.ok)(void 0);
14031
14051
  }
14032
- const errorText2 = await createResponse.text();
14033
- return (0, import_sdk_services5.err)(
14034
- (0, import_sdk_services5.serviceError)(
14035
- import_sdk_services5.ErrorCodes.NETWORK_ERROR,
14036
- `Failed to create public space: ${createResponse.status} - ${errorText2}`,
14037
- "public-space"
14038
- )
14039
- );
14052
+ return (0, import_sdk_services6.err)(await serviceHttpError(
14053
+ createResponse,
14054
+ import_sdk_services6.ErrorCodes.NETWORK_ERROR,
14055
+ "Failed to create public space",
14056
+ "public-space"
14057
+ ));
14040
14058
  }
14041
- return (0, import_sdk_services5.ok)(void 0);
14059
+ return (0, import_sdk_services6.ok)(void 0);
14042
14060
  }
14043
- const errorText = await response.text();
14044
- return (0, import_sdk_services5.err)(
14045
- (0, import_sdk_services5.serviceError)(
14046
- import_sdk_services5.ErrorCodes.NETWORK_ERROR,
14047
- `Failed to check public space: ${response.status} - ${errorText}`,
14048
- "public-space"
14049
- )
14050
- );
14061
+ return (0, import_sdk_services6.err)(await serviceHttpError(
14062
+ response,
14063
+ import_sdk_services6.ErrorCodes.NETWORK_ERROR,
14064
+ "Failed to check public space",
14065
+ "public-space"
14066
+ ));
14051
14067
  } catch (error) {
14052
- return (0, import_sdk_services5.err)(
14053
- (0, import_sdk_services5.serviceError)(
14054
- import_sdk_services5.ErrorCodes.NETWORK_ERROR,
14068
+ return (0, import_sdk_services6.err)(
14069
+ (0, import_sdk_services6.serviceError)(
14070
+ import_sdk_services6.ErrorCodes.NETWORK_ERROR,
14055
14071
  `Network error ensuring public space: ${String(error)}`,
14056
14072
  "public-space",
14057
14073
  { cause: error instanceof Error ? error : void 0 }
@@ -14084,8 +14100,8 @@ var TinyCloud = class _TinyCloud {
14084
14100
  if (!session) {
14085
14101
  throw new Error("No active session. Sign in first.");
14086
14102
  }
14087
- const publicKV = new import_sdk_services5.KVService({ prefix: "" });
14088
- const publicContext = new import_sdk_services5.ServiceContext({
14103
+ const publicKV = new import_sdk_services6.KVService({ prefix: "" });
14104
+ const publicContext = new import_sdk_services6.ServiceContext({
14089
14105
  invoke: this._serviceContext.invoke,
14090
14106
  fetch: this._serviceContext.fetch,
14091
14107
  hosts: this._serviceContext.hosts,
@@ -14118,23 +14134,19 @@ var TinyCloud = class _TinyCloud {
14118
14134
  const response = await doFetch(url, { method: "GET" });
14119
14135
  if (!response.ok) {
14120
14136
  if (response.status === 404) {
14121
- return (0, import_sdk_services5.err)(
14122
- (0, import_sdk_services5.serviceError)(
14123
- import_sdk_services5.ErrorCodes.NOT_FOUND,
14124
- `Key not found: ${key} in space ${spaceId}`,
14125
- "public-space"
14126
- )
14127
- );
14137
+ return (0, import_sdk_services6.err)(await serviceHttpError(
14138
+ response,
14139
+ import_sdk_services6.ErrorCodes.NOT_FOUND,
14140
+ `Key not found: ${key} in space ${spaceId}`,
14141
+ "public-space"
14142
+ ));
14128
14143
  }
14129
- const errorText = await response.text();
14130
- return (0, import_sdk_services5.err)(
14131
- (0, import_sdk_services5.serviceError)(
14132
- import_sdk_services5.ErrorCodes.NETWORK_ERROR,
14133
- `Failed to read public space: ${response.status} - ${errorText}`,
14134
- "public-space",
14135
- { meta: { status: response.status } }
14136
- )
14137
- );
14144
+ return (0, import_sdk_services6.err)(await serviceHttpError(
14145
+ response,
14146
+ import_sdk_services6.ErrorCodes.NETWORK_ERROR,
14147
+ "Failed to read public space",
14148
+ "public-space"
14149
+ ));
14138
14150
  }
14139
14151
  const contentType = response.headers.get("content-type");
14140
14152
  let data;
@@ -14148,11 +14160,11 @@ var TinyCloud = class _TinyCloud {
14148
14160
  data = text2;
14149
14161
  }
14150
14162
  }
14151
- return (0, import_sdk_services5.ok)(data);
14163
+ return (0, import_sdk_services6.ok)(data);
14152
14164
  } catch (error) {
14153
- return (0, import_sdk_services5.err)(
14154
- (0, import_sdk_services5.serviceError)(
14155
- import_sdk_services5.ErrorCodes.NETWORK_ERROR,
14165
+ return (0, import_sdk_services6.err)(
14166
+ (0, import_sdk_services6.serviceError)(
14167
+ import_sdk_services6.ErrorCodes.NETWORK_ERROR,
14156
14168
  `Network error reading public space: ${String(error)}`,
14157
14169
  "public-space",
14158
14170
  { cause: error instanceof Error ? error : void 0 }
@@ -14178,7 +14190,7 @@ var TinyCloud = class _TinyCloud {
14178
14190
  };
14179
14191
 
14180
14192
  // src/account/AccountService.ts
14181
- var import_sdk_services6 = require("@tinycloud/sdk-services");
14193
+ var import_sdk_services7 = require("@tinycloud/sdk-services");
14182
14194
  var import_bootstrap3 = require("@tinycloud/bootstrap");
14183
14195
  var SERVICE_NAME2 = "account";
14184
14196
  var ACCOUNT_INDEX_DB = "account";
@@ -14226,7 +14238,7 @@ var AccountService = class {
14226
14238
  applications.push(applicationFromRecord(key, loaded.data.data));
14227
14239
  }
14228
14240
  applications.sort((a, b) => a.appId.localeCompare(b.appId));
14229
- return (0, import_sdk_services6.ok)(applications);
14241
+ return (0, import_sdk_services7.ok)(applications);
14230
14242
  },
14231
14243
  get: async (appId) => {
14232
14244
  const kvResult = this.accountKV();
@@ -14234,14 +14246,14 @@ var AccountService = class {
14234
14246
  const key = applicationKey(appId);
14235
14247
  const loaded = await kvResult.data.get(key);
14236
14248
  if (!loaded.ok) return accountErr(loaded.error);
14237
- return (0, import_sdk_services6.ok)(applicationFromRecord(key, loaded.data.data));
14249
+ return (0, import_sdk_services7.ok)(applicationFromRecord(key, loaded.data.data));
14238
14250
  },
14239
14251
  register: async (manifest, options2 = {}) => {
14240
14252
  const manifests = Array.isArray(manifest) ? manifest : [manifest];
14241
14253
  const request = composeManifestRequest(manifests);
14242
14254
  if (request.registryRecords.length === 0) {
14243
- return (0, import_sdk_services6.err)(
14244
- (0, import_sdk_services6.serviceError)(
14255
+ return (0, import_sdk_services7.err)(
14256
+ (0, import_sdk_services7.serviceError)(
14245
14257
  "INVALID_MANIFEST",
14246
14258
  "Manifest did not produce an account application registry record",
14247
14259
  SERVICE_NAME2
@@ -14275,7 +14287,7 @@ var AccountService = class {
14275
14287
  registered = applicationFromRecord(record2.key, stored);
14276
14288
  await this.upsertApplicationIndexQuietly(registered);
14277
14289
  }
14278
- return (0, import_sdk_services6.ok)(registered);
14290
+ return (0, import_sdk_services7.ok)(registered);
14279
14291
  },
14280
14292
  remove: async (appId) => {
14281
14293
  const kvResult = this.accountKV();
@@ -14283,7 +14295,7 @@ var AccountService = class {
14283
14295
  const removed = await kvResult.data.delete(applicationKey(appId));
14284
14296
  if (!removed.ok) return accountErr(removed.error);
14285
14297
  await this.deleteApplicationIndexQuietly(appId);
14286
- return (0, import_sdk_services6.ok)(void 0);
14298
+ return (0, import_sdk_services7.ok)(void 0);
14287
14299
  }
14288
14300
  };
14289
14301
  this.spaces = {
@@ -14297,7 +14309,7 @@ var AccountService = class {
14297
14309
  if (canonical.data.allRegistered && options2.refreshIndex !== false) {
14298
14310
  await this.replaceSpacesIndexQuietly(canonical.data.spaces);
14299
14311
  }
14300
- return (0, import_sdk_services6.ok)(canonical.data.spaces);
14312
+ return (0, import_sdk_services7.ok)(canonical.data.spaces);
14301
14313
  }
14302
14314
  const kvResult = this.accountKV();
14303
14315
  if (!kvResult.ok) return kvResult;
@@ -14310,14 +14322,14 @@ var AccountService = class {
14310
14322
  spaces.push(spaceFromRecord(key, loaded.data.data));
14311
14323
  }
14312
14324
  spaces.sort((a, b) => a.name.localeCompare(b.name) || a.spaceId.localeCompare(b.spaceId));
14313
- return (0, import_sdk_services6.ok)(spaces);
14325
+ return (0, import_sdk_services7.ok)(spaces);
14314
14326
  },
14315
14327
  get: async (spaceId) => {
14316
14328
  const kvResult = this.accountKV();
14317
14329
  if (!kvResult.ok) return kvResult;
14318
14330
  const loaded = await kvResult.data.get(spaceKey(spaceId));
14319
14331
  if (!loaded.ok) return accountErr(loaded.error);
14320
- return (0, import_sdk_services6.ok)(spaceFromRecord(spaceKey(spaceId), loaded.data.data));
14332
+ return (0, import_sdk_services7.ok)(spaceFromRecord(spaceKey(spaceId), loaded.data.data));
14321
14333
  },
14322
14334
  register: async (space) => {
14323
14335
  await this.config.ensureAccountSpaceHosted?.();
@@ -14328,7 +14340,7 @@ var AccountService = class {
14328
14340
  if (!written.ok) return accountErr(written.error);
14329
14341
  const registered = spaceFromRecord(spaceKey(stored.space_id), stored);
14330
14342
  await this.upsertSpaceIndexQuietly(registered);
14331
- return (0, import_sdk_services6.ok)(registered);
14343
+ return (0, import_sdk_services7.ok)(registered);
14332
14344
  },
14333
14345
  /**
14334
14346
  * Register multiple spaces in one KV batch write + one multi-row index
@@ -14341,7 +14353,7 @@ var AccountService = class {
14341
14353
  * leave the first attempt's blocks orphaned.
14342
14354
  */
14343
14355
  registerBatch: async (spaces) => {
14344
- if (spaces.length === 0) return (0, import_sdk_services6.ok)({ spaces: [] });
14356
+ if (spaces.length === 0) return (0, import_sdk_services7.ok)({ spaces: [] });
14345
14357
  await this.config.ensureAccountSpaceHosted?.();
14346
14358
  const kvResult = this.accountKV();
14347
14359
  if (!kvResult.ok) return kvResult;
@@ -14356,7 +14368,7 @@ var AccountService = class {
14356
14368
  const batchResult = await kvResult.data.batchPut(items);
14357
14369
  if (batchResult.ok) {
14358
14370
  await this.upsertSpacesIndexQuietly(registered);
14359
- return (0, import_sdk_services6.ok)({ spaces: registered });
14371
+ return (0, import_sdk_services7.ok)({ spaces: registered });
14360
14372
  }
14361
14373
  if (!isAmbiguousBatchFailure(batchResult.error)) {
14362
14374
  return accountErr(batchResult.error);
@@ -14369,8 +14381,8 @@ var AccountService = class {
14369
14381
  }
14370
14382
  }
14371
14383
  if (reconcileFailures.length > 0) {
14372
- return (0, import_sdk_services6.err)(
14373
- (0, import_sdk_services6.serviceError)(
14384
+ return (0, import_sdk_services7.err)(
14385
+ (0, import_sdk_services7.serviceError)(
14374
14386
  "KV_BATCH_RECONCILE_FAILED",
14375
14387
  `KV batch write for ${items.length} space(s) failed ambiguously (${batchResult.error.message}) and per-space reconciliation also failed for: ${reconcileFailures.join("; ")}`,
14376
14388
  SERVICE_NAME2,
@@ -14382,11 +14394,11 @@ var AccountService = class {
14382
14394
  `[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}`
14383
14395
  );
14384
14396
  await this.upsertSpacesIndexQuietly(registered);
14385
- return (0, import_sdk_services6.ok)({ spaces: registered, recoveredFromBatchError: batchResult.error });
14397
+ return (0, import_sdk_services7.ok)({ spaces: registered, recoveredFromBatchError: batchResult.error });
14386
14398
  },
14387
14399
  syncAccessible: async () => {
14388
14400
  const synced = await this.syncAccessibleSpaces({ tolerateStorageFull: false });
14389
- return synced.ok ? (0, import_sdk_services6.ok)(synced.data.spaces) : synced;
14401
+ return synced.ok ? (0, import_sdk_services7.ok)(synced.data.spaces) : synced;
14390
14402
  },
14391
14403
  remove: async (spaceId) => {
14392
14404
  const kvResult = this.accountKV();
@@ -14394,21 +14406,21 @@ var AccountService = class {
14394
14406
  const removed = await kvResult.data.delete(spaceKey(spaceId));
14395
14407
  if (!removed.ok) return accountErr(removed.error);
14396
14408
  await this.deleteSpaceIndexQuietly(spaceId);
14397
- return (0, import_sdk_services6.ok)(void 0);
14409
+ return (0, import_sdk_services7.ok)(void 0);
14398
14410
  }
14399
14411
  };
14400
14412
  this.delegations = {
14401
14413
  query: async (options2 = {}) => {
14402
14414
  const manager = this.config.getDelegationManager?.();
14403
14415
  if (!manager) {
14404
- return (0, import_sdk_services6.err)((0, import_sdk_services6.serviceError)(
14416
+ return (0, import_sdk_services7.err)((0, import_sdk_services7.serviceError)(
14405
14417
  "NOT_INITIALIZED",
14406
14418
  "Delegation history requires an authenticated delegation manager",
14407
14419
  SERVICE_NAME2
14408
14420
  ));
14409
14421
  }
14410
14422
  const queried = await manager.query(options2);
14411
- return queried.ok ? (0, import_sdk_services6.ok)(queried.data) : accountErr(queried.error);
14423
+ return queried.ok ? (0, import_sdk_services7.ok)(queried.data) : accountErr(queried.error);
14412
14424
  },
14413
14425
  list: async (options2 = {}) => {
14414
14426
  if (options2.preferIndex) {
@@ -14442,17 +14454,17 @@ var AccountService = class {
14442
14454
  }
14443
14455
  }
14444
14456
  delegations.sort((a, b) => a.spaceId.localeCompare(b.spaceId) || a.cid.localeCompare(b.cid));
14445
- return (0, import_sdk_services6.ok)(delegations);
14457
+ return (0, import_sdk_services7.ok)(delegations);
14446
14458
  },
14447
14459
  revoke: async (input) => {
14448
14460
  const cid2 = typeof input === "string" ? input : input.cid;
14449
14461
  const manager = this.config.getDelegationManager?.();
14450
14462
  if (manager) {
14451
14463
  const revoked2 = await manager.revoke(cid2);
14452
- return revoked2.ok ? (0, import_sdk_services6.ok)(revoked2.data) : accountErr(revoked2.error);
14464
+ return revoked2.ok ? (0, import_sdk_services7.ok)(revoked2.data) : accountErr(revoked2.error);
14453
14465
  }
14454
14466
  if (typeof input === "string") {
14455
- return (0, import_sdk_services6.err)((0, import_sdk_services6.serviceError)(
14467
+ return (0, import_sdk_services7.err)((0, import_sdk_services7.serviceError)(
14456
14468
  "NOT_INITIALIZED",
14457
14469
  "CID-only revocation requires an authenticated delegation manager",
14458
14470
  SERVICE_NAME2
@@ -14462,7 +14474,7 @@ var AccountService = class {
14462
14474
  if (!space.ok) return space;
14463
14475
  const revoked = await this.config.getSpaces().get(space.data.id).delegations.revoke(cid2);
14464
14476
  if (!revoked.ok) return accountErr(revoked.error);
14465
- return (0, import_sdk_services6.ok)(void 0);
14477
+ return (0, import_sdk_services7.ok)(void 0);
14466
14478
  }
14467
14479
  };
14468
14480
  this.index = {
@@ -14471,7 +14483,7 @@ var AccountService = class {
14471
14483
  if (!dbResult.ok) return dbResult;
14472
14484
  const schema = await this.ensureAccountIndex(dbResult.data);
14473
14485
  if (!schema.ok) return schema;
14474
- return (0, import_sdk_services6.ok)({ database: ACCOUNT_INDEX_DB });
14486
+ return (0, import_sdk_services7.ok)({ database: ACCOUNT_INDEX_DB });
14475
14487
  },
14476
14488
  rebuild: async () => {
14477
14489
  const dbResult = this.accountDb();
@@ -14553,7 +14565,7 @@ var AccountService = class {
14553
14565
  ];
14554
14566
  const rebuilt = await dbResult.data.batch(statements);
14555
14567
  if (!rebuilt.ok) return accountErr(rebuilt.error);
14556
- return (0, import_sdk_services6.ok)({
14568
+ return (0, import_sdk_services7.ok)({
14557
14569
  database: ACCOUNT_INDEX_DB,
14558
14570
  applications: applications.data.length,
14559
14571
  spaces: spaces.data.length,
@@ -14569,7 +14581,7 @@ var AccountService = class {
14569
14581
  "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"
14570
14582
  );
14571
14583
  if (!queried.ok) return accountErr(queried.error);
14572
- return (0, import_sdk_services6.ok)(queried.data.rows.map(indexedApplicationFromRow));
14584
+ return (0, import_sdk_services7.ok)(queried.data.rows.map(indexedApplicationFromRow));
14573
14585
  }
14574
14586
  },
14575
14587
  spaces: {
@@ -14580,7 +14592,7 @@ var AccountService = class {
14580
14592
  "SELECT space_id, name, owner_did, type, permissions_json, status, registered_at, updated_at, expires_at FROM spaces ORDER BY name, space_id"
14581
14593
  );
14582
14594
  if (!queried.ok) return accountErr(queried.error);
14583
- return (0, import_sdk_services6.ok)(queried.data.rows.map(indexedSpaceFromRow));
14595
+ return (0, import_sdk_services7.ok)(queried.data.rows.map(indexedSpaceFromRow));
14584
14596
  }
14585
14597
  },
14586
14598
  delegations: {
@@ -14602,7 +14614,7 @@ var AccountService = class {
14602
14614
  params
14603
14615
  );
14604
14616
  if (!queried.ok) return accountErr(queried.error);
14605
- return (0, import_sdk_services6.ok)(queried.data.rows.map(indexedDelegationFromRow));
14617
+ return (0, import_sdk_services7.ok)(queried.data.rows.map(indexedDelegationFromRow));
14606
14618
  }
14607
14619
  },
14608
14620
  query: async (sql, params) => {
@@ -14610,7 +14622,7 @@ var AccountService = class {
14610
14622
  if (!dbResult.ok) return dbResult;
14611
14623
  const queried = await dbResult.data.query(sql, params);
14612
14624
  if (!queried.ok) return accountErr(queried.error);
14613
- return (0, import_sdk_services6.ok)(queried.data);
14625
+ return (0, import_sdk_services7.ok)(queried.data);
14614
14626
  },
14615
14627
  status: async () => {
14616
14628
  const dbResult = this.accountDb();
@@ -14620,11 +14632,11 @@ var AccountService = class {
14620
14632
  );
14621
14633
  if (!queried.ok) {
14622
14634
  if (isMissingIndexError(queried.error)) {
14623
- return (0, import_sdk_services6.ok)({ database: ACCOUNT_INDEX_DB, state: "missing", sources: [] });
14635
+ return (0, import_sdk_services7.ok)({ database: ACCOUNT_INDEX_DB, state: "missing", sources: [] });
14624
14636
  }
14625
14637
  return accountErr(queried.error);
14626
14638
  }
14627
- return (0, import_sdk_services6.ok)({
14639
+ return (0, import_sdk_services7.ok)({
14628
14640
  database: ACCOUNT_INDEX_DB,
14629
14641
  state: "ready",
14630
14642
  sources: queried.data.rows.map(([source, syncedAt, count]) => ({
@@ -14643,7 +14655,7 @@ var AccountService = class {
14643
14655
  if (!delegations.ok) return delegations;
14644
14656
  const spaces = await this.spaces.list();
14645
14657
  if (!spaces.ok) return spaces;
14646
- return (0, import_sdk_services6.ok)({
14658
+ return (0, import_sdk_services7.ok)({
14647
14659
  did: this.config.getDid(),
14648
14660
  host: this.config.getHost(),
14649
14661
  primarySpaceId: this.config.getPrimarySpaceId(),
@@ -14657,28 +14669,28 @@ var AccountService = class {
14657
14669
  accountKV() {
14658
14670
  const accountSpaceId = this.config.getAccountSpaceId();
14659
14671
  if (!accountSpaceId) {
14660
- return (0, import_sdk_services6.err)(
14661
- (0, import_sdk_services6.serviceError)(
14672
+ return (0, import_sdk_services7.err)(
14673
+ (0, import_sdk_services7.serviceError)(
14662
14674
  "ACCOUNT_SPACE_UNAVAILABLE",
14663
14675
  "Account space is unavailable. Sign in with a wallet-backed profile first.",
14664
14676
  SERVICE_NAME2
14665
14677
  )
14666
14678
  );
14667
14679
  }
14668
- return (0, import_sdk_services6.ok)(this.config.getSpaces().get(accountSpaceId).kv);
14680
+ return (0, import_sdk_services7.ok)(this.config.getSpaces().get(accountSpaceId).kv);
14669
14681
  }
14670
14682
  accountDb() {
14671
14683
  const db = this.config.getAccountDb?.();
14672
14684
  if (!db) {
14673
- return (0, import_sdk_services6.err)(
14674
- (0, import_sdk_services6.serviceError)(
14685
+ return (0, import_sdk_services7.err)(
14686
+ (0, import_sdk_services7.serviceError)(
14675
14687
  "ACCOUNT_INDEX_UNAVAILABLE",
14676
14688
  "Account index database is unavailable. Sign in with a wallet-backed profile first.",
14677
14689
  SERVICE_NAME2
14678
14690
  )
14679
14691
  );
14680
14692
  }
14681
- return (0, import_sdk_services6.ok)(db);
14693
+ return (0, import_sdk_services7.ok)(db);
14682
14694
  }
14683
14695
  async indexHasApplicationHash(appId, manifestHash) {
14684
14696
  const dbResult = this.accountDb();
@@ -14696,7 +14708,7 @@ var AccountService = class {
14696
14708
  }
14697
14709
  async upsertApplicationIndex(app) {
14698
14710
  const dbResult = this.accountDb();
14699
- if (!dbResult.ok) return (0, import_sdk_services6.ok)(void 0);
14711
+ if (!dbResult.ok) return (0, import_sdk_services7.ok)(void 0);
14700
14712
  const schema = await this.ensureAccountIndex(dbResult.data);
14701
14713
  if (!schema.ok) return schema;
14702
14714
  const updatedAt = app.updatedAt ?? (/* @__PURE__ */ new Date()).toISOString();
@@ -14718,14 +14730,14 @@ var AccountService = class {
14718
14730
  }
14719
14731
  ]);
14720
14732
  if (!written.ok) return accountErr(written.error);
14721
- return (0, import_sdk_services6.ok)(void 0);
14733
+ return (0, import_sdk_services7.ok)(void 0);
14722
14734
  }
14723
14735
  async deleteApplicationIndexQuietly(appId) {
14724
14736
  await ignoreIndexFailure(() => this.deleteApplicationIndex(appId));
14725
14737
  }
14726
14738
  async deleteApplicationIndex(appId) {
14727
14739
  const dbResult = this.accountDb();
14728
- if (!dbResult.ok) return (0, import_sdk_services6.ok)(void 0);
14740
+ if (!dbResult.ok) return (0, import_sdk_services7.ok)(void 0);
14729
14741
  const schema = await this.ensureAccountIndex(dbResult.data);
14730
14742
  if (!schema.ok) return schema;
14731
14743
  const deleted = await dbResult.data.batch([
@@ -14733,14 +14745,14 @@ var AccountService = class {
14733
14745
  { sql: "DELETE FROM application_state WHERE app_id = ?", params: [appId] }
14734
14746
  ]);
14735
14747
  if (!deleted.ok) return accountErr(deleted.error);
14736
- return (0, import_sdk_services6.ok)(void 0);
14748
+ return (0, import_sdk_services7.ok)(void 0);
14737
14749
  }
14738
14750
  async upsertSpaceIndexQuietly(space) {
14739
14751
  await ignoreIndexFailure(() => this.upsertSpaceIndex(space));
14740
14752
  }
14741
14753
  async upsertSpaceIndex(space) {
14742
14754
  const dbResult = this.accountDb();
14743
- if (!dbResult.ok) return (0, import_sdk_services6.ok)(void 0);
14755
+ if (!dbResult.ok) return (0, import_sdk_services7.ok)(void 0);
14744
14756
  const schema = await this.ensureAccountIndex(dbResult.data);
14745
14757
  if (!schema.ok) return schema;
14746
14758
  const updatedAt = space.updatedAt ?? (/* @__PURE__ */ new Date()).toISOString();
@@ -14761,7 +14773,7 @@ var AccountService = class {
14761
14773
  }
14762
14774
  ]);
14763
14775
  if (!written.ok) return accountErr(written.error);
14764
- return (0, import_sdk_services6.ok)(void 0);
14776
+ return (0, import_sdk_services7.ok)(void 0);
14765
14777
  }
14766
14778
  async upsertSpacesIndexQuietly(spaces) {
14767
14779
  await ignoreIndexFailure(() => this.upsertSpacesIndex(spaces));
@@ -14775,9 +14787,9 @@ var AccountService = class {
14775
14787
  * atomically: all rows or none.
14776
14788
  */
14777
14789
  async upsertSpacesIndex(spaces) {
14778
- if (spaces.length === 0) return (0, import_sdk_services6.ok)(void 0);
14790
+ if (spaces.length === 0) return (0, import_sdk_services7.ok)(void 0);
14779
14791
  const dbResult = this.accountDb();
14780
- if (!dbResult.ok) return (0, import_sdk_services6.ok)(void 0);
14792
+ if (!dbResult.ok) return (0, import_sdk_services7.ok)(void 0);
14781
14793
  const schema = await this.ensureAccountIndex(dbResult.data);
14782
14794
  if (!schema.ok) return schema;
14783
14795
  const placeholders = spaces.map(() => "(?, ?, ?, ?, ?, ?, ?, ?, ?)").join(", ");
@@ -14802,21 +14814,21 @@ var AccountService = class {
14802
14814
  }
14803
14815
  ]);
14804
14816
  if (!written.ok) return accountErr(written.error);
14805
- return (0, import_sdk_services6.ok)(void 0);
14817
+ return (0, import_sdk_services7.ok)(void 0);
14806
14818
  }
14807
14819
  async deleteSpaceIndexQuietly(spaceId) {
14808
14820
  await ignoreIndexFailure(() => this.deleteSpaceIndex(spaceId));
14809
14821
  }
14810
14822
  async deleteSpaceIndex(spaceId) {
14811
14823
  const dbResult = this.accountDb();
14812
- if (!dbResult.ok) return (0, import_sdk_services6.ok)(void 0);
14824
+ if (!dbResult.ok) return (0, import_sdk_services7.ok)(void 0);
14813
14825
  const schema = await this.ensureAccountIndex(dbResult.data);
14814
14826
  if (!schema.ok) return schema;
14815
14827
  const deleted = await dbResult.data.batch([
14816
14828
  { sql: "DELETE FROM spaces WHERE space_id = ?", params: [spaceId] }
14817
14829
  ]);
14818
14830
  if (!deleted.ok) return accountErr(deleted.error);
14819
- return (0, import_sdk_services6.ok)(void 0);
14831
+ return (0, import_sdk_services7.ok)(void 0);
14820
14832
  }
14821
14833
  /**
14822
14834
  * Register every space the session can reach and return them. With
@@ -14836,7 +14848,7 @@ var AccountService = class {
14836
14848
  spaces.push(result.data);
14837
14849
  continue;
14838
14850
  }
14839
- if (!options2.tolerateStorageFull || !(0, import_sdk_services6.isStorageFullError)(result.error)) {
14851
+ if (!options2.tolerateStorageFull || !(0, import_sdk_services7.isStorageFullError)(result.error)) {
14840
14852
  return result;
14841
14853
  }
14842
14854
  allRegistered = false;
@@ -14844,18 +14856,18 @@ var AccountService = class {
14844
14856
  const record2 = spaceRecordFromInput(space);
14845
14857
  spaces.push(spaceFromRecord(spaceKey(record2.space_id), record2));
14846
14858
  }
14847
- return (0, import_sdk_services6.ok)({ spaces, allRegistered });
14859
+ return (0, import_sdk_services7.ok)({ spaces, allRegistered });
14848
14860
  }
14849
14861
  async resolveSpace(space) {
14850
14862
  const listed = await this.config.getSpaces().list();
14851
14863
  if (!listed.ok) return accountErr(listed.error);
14852
14864
  const found = listed.data.find((candidate) => candidate.id === space || candidate.name === space);
14853
14865
  if (!found) {
14854
- return (0, import_sdk_services6.err)(
14855
- (0, import_sdk_services6.serviceError)("SPACE_NOT_FOUND", `No account space found for ${JSON.stringify(space)}`, SERVICE_NAME2)
14866
+ return (0, import_sdk_services7.err)(
14867
+ (0, import_sdk_services7.serviceError)("SPACE_NOT_FOUND", `No account space found for ${JSON.stringify(space)}`, SERVICE_NAME2)
14856
14868
  );
14857
14869
  }
14858
- return (0, import_sdk_services6.ok)(found);
14870
+ return (0, import_sdk_services7.ok)(found);
14859
14871
  }
14860
14872
  async replaceApplicationsIndexQuietly(applications) {
14861
14873
  await ignoreIndexFailure(async () => {
@@ -14997,7 +15009,7 @@ var AccountService = class {
14997
15009
  ]
14998
15010
  });
14999
15011
  if (!migrated.ok) return accountErr(migrated.error);
15000
- return (0, import_sdk_services6.ok)(void 0);
15012
+ return (0, import_sdk_services7.ok)(void 0);
15001
15013
  }
15002
15014
  };
15003
15015
  function applicationKey(appId) {
@@ -15153,17 +15165,17 @@ function mapDelegation(delegation, space, direction) {
15153
15165
  };
15154
15166
  }
15155
15167
  function accountErr(error) {
15156
- return (0, import_sdk_services6.err)((0, import_sdk_services6.serviceError)(error.code, error.message, SERVICE_NAME2, { cause: error.cause, meta: error.meta }));
15168
+ return (0, import_sdk_services7.err)((0, import_sdk_services7.serviceError)(error.code, error.message, SERVICE_NAME2, { cause: error.cause, meta: error.meta }));
15157
15169
  }
15158
15170
  function isMissingIndexError(error) {
15159
15171
  return /no such table:/i.test(error.message);
15160
15172
  }
15161
15173
  var AMBIGUOUS_WRITE_STATUSES = /* @__PURE__ */ new Set([500, 502, 503, 504, 520, 522, 524]);
15162
15174
  function isAmbiguousBatchFailure(error) {
15163
- if (error.code === import_sdk_services6.ErrorCodes.NETWORK_ERROR || error.code === import_sdk_services6.ErrorCodes.TIMEOUT) {
15175
+ if (error.code === import_sdk_services7.ErrorCodes.NETWORK_ERROR || error.code === import_sdk_services7.ErrorCodes.TIMEOUT) {
15164
15176
  return error.meta?.requestMayHaveDispatched === true;
15165
15177
  }
15166
- if (error.code === import_sdk_services6.ErrorCodes.KV_WRITE_FAILED) {
15178
+ if (error.code === import_sdk_services7.ErrorCodes.KV_WRITE_FAILED) {
15167
15179
  const status = error.meta?.status;
15168
15180
  return typeof status === "number" && AMBIGUOUS_WRITE_STATUSES.has(status);
15169
15181
  }
@@ -15177,7 +15189,7 @@ async function ignoreIndexFailure(task) {
15177
15189
  }
15178
15190
 
15179
15191
  // src/index.ts
15180
- var import_sdk_services8 = require("@tinycloud/sdk-services");
15192
+ var import_sdk_services9 = require("@tinycloud/sdk-services");
15181
15193
 
15182
15194
  // src/space.ts
15183
15195
  async function fetchPeerId(host, spaceId) {
@@ -15186,7 +15198,9 @@ async function fetchPeerId(host, spaceId) {
15186
15198
  );
15187
15199
  if (!res.ok) {
15188
15200
  const error = await res.text().catch(() => res.statusText);
15189
- throw new Error(`Failed to get peer ID: ${res.status} - ${error}`);
15201
+ throw Object.assign(new Error(`Failed to get peer ID: ${res.status} - ${error}`), {
15202
+ status: res.status
15203
+ });
15190
15204
  }
15191
15205
  return res.text();
15192
15206
  }
@@ -15276,7 +15290,7 @@ async function postSessionActivation(host, delegationHeader) {
15276
15290
  }
15277
15291
 
15278
15292
  // src/authorization/CapabilityKeyRegistry.ts
15279
- var import_sdk_services7 = require("@tinycloud/sdk-services");
15293
+ var import_sdk_services8 = require("@tinycloud/sdk-services");
15280
15294
  var SERVICE_NAME3 = "capability-key-registry";
15281
15295
  var CapabilityKeyRegistryErrorCodes = {
15282
15296
  /** Key not found in registry */
@@ -15501,8 +15515,8 @@ var CapabilityKeyRegistry = class {
15501
15515
  revokeDelegation(cid2) {
15502
15516
  const stored = this.store.byCid.get(cid2);
15503
15517
  if (!stored || stored.length === 0) {
15504
- return (0, import_sdk_services7.err)(
15505
- (0, import_sdk_services7.serviceError)(
15518
+ return (0, import_sdk_services8.err)(
15519
+ (0, import_sdk_services8.serviceError)(
15506
15520
  CapabilityKeyRegistryErrorCodes.KEY_NOT_FOUND,
15507
15521
  `Delegation not found: ${cid2}`,
15508
15522
  SERVICE_NAME3
@@ -15522,7 +15536,7 @@ var CapabilityKeyRegistry = class {
15522
15536
  }
15523
15537
  }
15524
15538
  }
15525
- return (0, import_sdk_services7.ok)(void 0);
15539
+ return (0, import_sdk_services8.ok)(void 0);
15526
15540
  }
15527
15541
  // ===========================================================================
15528
15542
  // Search