@tinycloud/node-sdk 2.2.0-beta.10 → 2.2.0-beta.12

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/core.d.cts CHANGED
@@ -1,4 +1,4 @@
1
- export { ACCOUNT_REGISTRY_PATH, ACCOUNT_REGISTRY_SPACE, AutoApproveSpaceCreationHandler, AutoRejectStrategy, AutoSignStrategy, BatchOptions, BatchResponse, CallbackStrategy, CapabilityEntry, CapabilityKeyRegistry, CapabilityKeyRegistryErrorCode, CapabilityKeyRegistryErrorCodes, ClientSession, ColumnInfo, ComposeManifestOptions, ComposedManifestRequest, CreateDelegationParams, DEFAULT_MANIFEST_SPACE, DEFAULT_MANIFEST_VERSION, DataVaultConfig, DataVaultService, DatabaseHandle, Delegation, DelegationChain, DelegationChainV2, DelegationDirection, DelegationError, DelegationErrorCode, DelegationErrorCodes, DelegationFilters, DelegationManager, DelegationManagerConfig, DelegationRecord, DelegationResult, DuckDbAction, DuckDbActionType, DuckDbBatchOptions, DuckDbBatchResponse, DuckDbDatabaseHandle, DuckDbExecuteOptions, DuckDbExecuteResponse, DuckDbOptions, DuckDbQueryOptions, DuckDbQueryResponse, DuckDbService, DuckDbServiceConfig, DuckDbStatement, DuckDbValue, EncodedShareData, ExecuteOptions, ExecuteResponse, Extension, FetchFunction, GenerateShareParams, ICapabilityKeyRegistry, IDataVaultService, IDatabaseHandle, IDuckDbDatabaseHandle, IDuckDbService, IENSResolver, IKVService, INotificationHandler, IPrefixedKVService, ISQLService, ISecretsService, ISessionManager, ISessionStorage, ISharingService, ISigner, ISpace, ISpaceCreationHandler, ISpaceScopedDelegations, ISpaceScopedSharing, ISpaceService, IUserAuthorization, IWasmBindings, IngestOptions, InvokeFunction, JWK, KVResponse, KVService, KVServiceConfig, KeyInfo, KeyProvider, KeyType, Manifest, ManifestDefaults, ManifestRegistryRecord, ManifestSecretActions, ManifestValidationError, PermissionEntry, PermissionNotInManifestError, PersistedSessionData, PrefixedKVService, ProtocolMismatchError, QueryOptions, QueryResponse, ReceiveOptions, ResolvedCapabilities, ResolvedDelegate, ResolvedSecretPath, ResourceCapability, SECRET_NAME_RE, SQLAction, SQLActionType, SQLService, SQLServiceConfig, SchemaInfo, SecretPayload, SecretScopeOptions, SecretsError, SecretsService, ServiceContext, ServiceContextConfig, ServiceSession, SessionExpiredError, ShareAccess, ShareLink, ShareLinkData, ShareSchema, SharingService, SharingServiceConfig, SignCallback, SignInOptions, SignRequest, SignResponse, SilentNotificationHandler, Space, SpaceAbilitiesMap, SpaceConfig, SpaceCreationContext, SpaceErrorCode, SpaceErrorCodes, SpaceInfo, SpaceOwnership, SpaceService, SpaceServiceConfig, SqlStatement, SqlValue, StoredDelegationChain, TableInfo, TinyCloud, TinyCloudConfig, TinyCloudSession, UnsupportedFeatureError, VAULT_PERMISSION_SERVICE, VaultCrypto, VaultEntry, VaultError, VaultGetOptions, VaultGrantOptions, VaultHeaders, VaultListOptions, VaultPublicSpaceKVActions, VaultPutOptions, VersionCheckError, ViewInfo, WasmVaultFunctions, buildSpaceUri, canonicalizeSecretScope, checkNodeInfo, composeManifestRequest, createCapabilityKeyRegistry, createSharingService, createSpaceService, createVaultCrypto, defaultSpaceCreationHandler, expandActionShortNames, expandPermissionEntries, expandPermissionEntry, isCapabilitySubset, loadManifest, makePublicSpaceId, parseExpiry, parseSpaceUri, resolveManifest, resolveSecretPath, resourceCapabilitiesToSpaceAbilitiesMap, validateManifest } from '@tinycloud/sdk-core';
2
- export { D as DelegateToOptions, a as DelegateToResult, b as DelegatedAccess, F as FileSessionStorage, M as MemorySessionStorage, N as NodeEventEmitterStrategy, c as NodeUserAuthorization, d as NodeUserAuthorizationConfig, P as PortableDelegation, e as RuntimePermissionGrantOptions, S as SignStrategy, T as TinyCloudNode, f as TinyCloudNodeConfig, W as WasmKeyProvider, g as WasmKeyProviderConfig, h as createWasmKeyProvider, i as defaultSignStrategy, j as deserializeDelegation, s as serializeDelegation } from './core-DcJ27GsA.cjs';
1
+ export { ACCOUNT_REGISTRY_PATH, ACCOUNT_REGISTRY_SPACE, AutoApproveSpaceCreationHandler, AutoRejectStrategy, AutoSignStrategy, BatchOptions, BatchResponse, CallbackStrategy, CapabilityEntry, CapabilityKeyRegistry, CapabilityKeyRegistryErrorCode, CapabilityKeyRegistryErrorCodes, ClientSession, ColumnInfo, ComposeManifestOptions, ComposedManifestRequest, CreateDelegationParams, DEFAULT_MANIFEST_SPACE, DEFAULT_MANIFEST_VERSION, DEFAULT_SIGNED_READ_URL_EXPIRY_MS, DataVaultConfig, DataVaultService, DatabaseHandle, Delegation, DelegationChain, DelegationChainV2, DelegationDirection, DelegationError, DelegationErrorCode, DelegationErrorCodes, DelegationFilters, DelegationManager, DelegationManagerConfig, DelegationRecord, DelegationResult, DuckDbAction, DuckDbActionType, DuckDbBatchOptions, DuckDbBatchResponse, DuckDbDatabaseHandle, DuckDbExecuteOptions, DuckDbExecuteResponse, DuckDbOptions, DuckDbQueryOptions, DuckDbQueryResponse, DuckDbService, DuckDbServiceConfig, DuckDbStatement, DuckDbValue, EncodedShareData, ExecuteOptions, ExecuteResponse, Extension, FetchFunction, GenerateShareParams, ICapabilityKeyRegistry, IDataVaultService, IDatabaseHandle, IDuckDbDatabaseHandle, IDuckDbService, IENSResolver, IKVService, INotificationHandler, IPrefixedKVService, ISQLService, ISecretsService, ISessionManager, ISessionStorage, ISharingService, ISigner, ISpace, ISpaceCreationHandler, ISpaceScopedDelegations, ISpaceScopedSharing, ISpaceService, IUserAuthorization, IWasmBindings, IngestOptions, InvokeFunction, JWK, KVCreateSignedReadUrlOptions, KVResponse, KVService, KVServiceConfig, KVSignedReadUrlResponse, KeyInfo, KeyProvider, KeyType, Manifest, ManifestDefaults, ManifestRegistryRecord, ManifestSecretActions, ManifestValidationError, PermissionEntry, PermissionNotInManifestError, PersistedSessionData, PrefixedKVService, ProtocolMismatchError, QueryOptions, QueryResponse, ReceiveOptions, ResolvedCapabilities, ResolvedDelegate, ResolvedSecretPath, ResourceCapability, SECRET_NAME_RE, SQLAction, SQLActionType, SQLService, SQLServiceConfig, SchemaInfo, SecretPayload, SecretScopeOptions, SecretsError, SecretsService, ServiceContext, ServiceContextConfig, ServiceSession, SessionExpiredError, ShareAccess, ShareLink, ShareLinkData, ShareSchema, SharingService, SharingServiceConfig, SignCallback, SignInOptions, SignRequest, SignResponse, SilentNotificationHandler, Space, SpaceAbilitiesMap, SpaceConfig, SpaceCreationContext, SpaceErrorCode, SpaceErrorCodes, SpaceInfo, SpaceOwnership, SpaceService, SpaceServiceConfig, SqlStatement, SqlValue, StoredDelegationChain, TableInfo, TinyCloud, TinyCloudConfig, TinyCloudSession, UnsupportedFeatureError, VAULT_PERMISSION_SERVICE, VaultCrypto, VaultEntry, VaultError, VaultGetOptions, VaultGrantOptions, VaultHeaders, VaultListOptions, VaultPublicSpaceKVActions, VaultPutOptions, VersionCheckError, ViewInfo, WasmVaultFunctions, buildSpaceUri, canonicalizeSecretScope, checkNodeInfo, composeManifestRequest, createCapabilityKeyRegistry, createSharingService, createSpaceService, createVaultCrypto, defaultSpaceCreationHandler, expandActionShortNames, expandPermissionEntries, expandPermissionEntry, isCapabilitySubset, loadManifest, makePublicSpaceId, parseExpiry, parseSpaceUri, resolveManifest, resolveSecretPath, resourceCapabilitiesToSpaceAbilitiesMap, validateManifest } from '@tinycloud/sdk-core';
2
+ export { D as DelegateToOptions, a as DelegateToResult, b as DelegatedAccess, F as FileSessionStorage, M as MemorySessionStorage, N as NodeEventEmitterStrategy, c as NodeUserAuthorization, d as NodeUserAuthorizationConfig, P as PortableDelegation, e as RuntimePermissionGrantOptions, S as SignStrategy, T as TinyCloudNode, f as TinyCloudNodeConfig, W as WasmKeyProvider, g as WasmKeyProviderConfig, h as createWasmKeyProvider, i as defaultSignStrategy, j as deserializeDelegation, s as serializeDelegation } from './core-M5RMfMIi.cjs';
3
3
  import 'events';
4
4
  import '@tinycloud/sdk-services';
package/dist/core.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- export { ACCOUNT_REGISTRY_PATH, ACCOUNT_REGISTRY_SPACE, AutoApproveSpaceCreationHandler, AutoRejectStrategy, AutoSignStrategy, BatchOptions, BatchResponse, CallbackStrategy, CapabilityEntry, CapabilityKeyRegistry, CapabilityKeyRegistryErrorCode, CapabilityKeyRegistryErrorCodes, ClientSession, ColumnInfo, ComposeManifestOptions, ComposedManifestRequest, CreateDelegationParams, DEFAULT_MANIFEST_SPACE, DEFAULT_MANIFEST_VERSION, DataVaultConfig, DataVaultService, DatabaseHandle, Delegation, DelegationChain, DelegationChainV2, DelegationDirection, DelegationError, DelegationErrorCode, DelegationErrorCodes, DelegationFilters, DelegationManager, DelegationManagerConfig, DelegationRecord, DelegationResult, DuckDbAction, DuckDbActionType, DuckDbBatchOptions, DuckDbBatchResponse, DuckDbDatabaseHandle, DuckDbExecuteOptions, DuckDbExecuteResponse, DuckDbOptions, DuckDbQueryOptions, DuckDbQueryResponse, DuckDbService, DuckDbServiceConfig, DuckDbStatement, DuckDbValue, EncodedShareData, ExecuteOptions, ExecuteResponse, Extension, FetchFunction, GenerateShareParams, ICapabilityKeyRegistry, IDataVaultService, IDatabaseHandle, IDuckDbDatabaseHandle, IDuckDbService, IENSResolver, IKVService, INotificationHandler, IPrefixedKVService, ISQLService, ISecretsService, ISessionManager, ISessionStorage, ISharingService, ISigner, ISpace, ISpaceCreationHandler, ISpaceScopedDelegations, ISpaceScopedSharing, ISpaceService, IUserAuthorization, IWasmBindings, IngestOptions, InvokeFunction, JWK, KVResponse, KVService, KVServiceConfig, KeyInfo, KeyProvider, KeyType, Manifest, ManifestDefaults, ManifestRegistryRecord, ManifestSecretActions, ManifestValidationError, PermissionEntry, PermissionNotInManifestError, PersistedSessionData, PrefixedKVService, ProtocolMismatchError, QueryOptions, QueryResponse, ReceiveOptions, ResolvedCapabilities, ResolvedDelegate, ResolvedSecretPath, ResourceCapability, SECRET_NAME_RE, SQLAction, SQLActionType, SQLService, SQLServiceConfig, SchemaInfo, SecretPayload, SecretScopeOptions, SecretsError, SecretsService, ServiceContext, ServiceContextConfig, ServiceSession, SessionExpiredError, ShareAccess, ShareLink, ShareLinkData, ShareSchema, SharingService, SharingServiceConfig, SignCallback, SignInOptions, SignRequest, SignResponse, SilentNotificationHandler, Space, SpaceAbilitiesMap, SpaceConfig, SpaceCreationContext, SpaceErrorCode, SpaceErrorCodes, SpaceInfo, SpaceOwnership, SpaceService, SpaceServiceConfig, SqlStatement, SqlValue, StoredDelegationChain, TableInfo, TinyCloud, TinyCloudConfig, TinyCloudSession, UnsupportedFeatureError, VAULT_PERMISSION_SERVICE, VaultCrypto, VaultEntry, VaultError, VaultGetOptions, VaultGrantOptions, VaultHeaders, VaultListOptions, VaultPublicSpaceKVActions, VaultPutOptions, VersionCheckError, ViewInfo, WasmVaultFunctions, buildSpaceUri, canonicalizeSecretScope, checkNodeInfo, composeManifestRequest, createCapabilityKeyRegistry, createSharingService, createSpaceService, createVaultCrypto, defaultSpaceCreationHandler, expandActionShortNames, expandPermissionEntries, expandPermissionEntry, isCapabilitySubset, loadManifest, makePublicSpaceId, parseExpiry, parseSpaceUri, resolveManifest, resolveSecretPath, resourceCapabilitiesToSpaceAbilitiesMap, validateManifest } from '@tinycloud/sdk-core';
2
- export { D as DelegateToOptions, a as DelegateToResult, b as DelegatedAccess, F as FileSessionStorage, M as MemorySessionStorage, N as NodeEventEmitterStrategy, c as NodeUserAuthorization, d as NodeUserAuthorizationConfig, P as PortableDelegation, e as RuntimePermissionGrantOptions, S as SignStrategy, T as TinyCloudNode, f as TinyCloudNodeConfig, W as WasmKeyProvider, g as WasmKeyProviderConfig, h as createWasmKeyProvider, i as defaultSignStrategy, j as deserializeDelegation, s as serializeDelegation } from './core-DcJ27GsA.js';
1
+ export { ACCOUNT_REGISTRY_PATH, ACCOUNT_REGISTRY_SPACE, AutoApproveSpaceCreationHandler, AutoRejectStrategy, AutoSignStrategy, BatchOptions, BatchResponse, CallbackStrategy, CapabilityEntry, CapabilityKeyRegistry, CapabilityKeyRegistryErrorCode, CapabilityKeyRegistryErrorCodes, ClientSession, ColumnInfo, ComposeManifestOptions, ComposedManifestRequest, CreateDelegationParams, DEFAULT_MANIFEST_SPACE, DEFAULT_MANIFEST_VERSION, DEFAULT_SIGNED_READ_URL_EXPIRY_MS, DataVaultConfig, DataVaultService, DatabaseHandle, Delegation, DelegationChain, DelegationChainV2, DelegationDirection, DelegationError, DelegationErrorCode, DelegationErrorCodes, DelegationFilters, DelegationManager, DelegationManagerConfig, DelegationRecord, DelegationResult, DuckDbAction, DuckDbActionType, DuckDbBatchOptions, DuckDbBatchResponse, DuckDbDatabaseHandle, DuckDbExecuteOptions, DuckDbExecuteResponse, DuckDbOptions, DuckDbQueryOptions, DuckDbQueryResponse, DuckDbService, DuckDbServiceConfig, DuckDbStatement, DuckDbValue, EncodedShareData, ExecuteOptions, ExecuteResponse, Extension, FetchFunction, GenerateShareParams, ICapabilityKeyRegistry, IDataVaultService, IDatabaseHandle, IDuckDbDatabaseHandle, IDuckDbService, IENSResolver, IKVService, INotificationHandler, IPrefixedKVService, ISQLService, ISecretsService, ISessionManager, ISessionStorage, ISharingService, ISigner, ISpace, ISpaceCreationHandler, ISpaceScopedDelegations, ISpaceScopedSharing, ISpaceService, IUserAuthorization, IWasmBindings, IngestOptions, InvokeFunction, JWK, KVCreateSignedReadUrlOptions, KVResponse, KVService, KVServiceConfig, KVSignedReadUrlResponse, KeyInfo, KeyProvider, KeyType, Manifest, ManifestDefaults, ManifestRegistryRecord, ManifestSecretActions, ManifestValidationError, PermissionEntry, PermissionNotInManifestError, PersistedSessionData, PrefixedKVService, ProtocolMismatchError, QueryOptions, QueryResponse, ReceiveOptions, ResolvedCapabilities, ResolvedDelegate, ResolvedSecretPath, ResourceCapability, SECRET_NAME_RE, SQLAction, SQLActionType, SQLService, SQLServiceConfig, SchemaInfo, SecretPayload, SecretScopeOptions, SecretsError, SecretsService, ServiceContext, ServiceContextConfig, ServiceSession, SessionExpiredError, ShareAccess, ShareLink, ShareLinkData, ShareSchema, SharingService, SharingServiceConfig, SignCallback, SignInOptions, SignRequest, SignResponse, SilentNotificationHandler, Space, SpaceAbilitiesMap, SpaceConfig, SpaceCreationContext, SpaceErrorCode, SpaceErrorCodes, SpaceInfo, SpaceOwnership, SpaceService, SpaceServiceConfig, SqlStatement, SqlValue, StoredDelegationChain, TableInfo, TinyCloud, TinyCloudConfig, TinyCloudSession, UnsupportedFeatureError, VAULT_PERMISSION_SERVICE, VaultCrypto, VaultEntry, VaultError, VaultGetOptions, VaultGrantOptions, VaultHeaders, VaultListOptions, VaultPublicSpaceKVActions, VaultPutOptions, VersionCheckError, ViewInfo, WasmVaultFunctions, buildSpaceUri, canonicalizeSecretScope, checkNodeInfo, composeManifestRequest, createCapabilityKeyRegistry, createSharingService, createSpaceService, createVaultCrypto, defaultSpaceCreationHandler, expandActionShortNames, expandPermissionEntries, expandPermissionEntry, isCapabilitySubset, loadManifest, makePublicSpaceId, parseExpiry, parseSpaceUri, resolveManifest, resolveSecretPath, resourceCapabilitiesToSpaceAbilitiesMap, validateManifest } from '@tinycloud/sdk-core';
2
+ export { D as DelegateToOptions, a as DelegateToResult, b as DelegatedAccess, F as FileSessionStorage, M as MemorySessionStorage, N as NodeEventEmitterStrategy, c as NodeUserAuthorization, d as NodeUserAuthorizationConfig, P as PortableDelegation, e as RuntimePermissionGrantOptions, S as SignStrategy, T as TinyCloudNode, f as TinyCloudNodeConfig, W as WasmKeyProvider, g as WasmKeyProviderConfig, h as createWasmKeyProvider, i as defaultSignStrategy, j as deserializeDelegation, s as serializeDelegation } from './core-M5RMfMIi.js';
3
3
  import 'events';
4
4
  import '@tinycloud/sdk-services';
package/dist/core.js CHANGED
@@ -208,7 +208,8 @@ import {
208
208
  composeManifestRequest,
209
209
  resourceCapabilitiesToAbilitiesMap,
210
210
  resourceCapabilitiesToSpaceAbilitiesMap,
211
- resolveTinyCloudHosts
211
+ resolveTinyCloudHosts,
212
+ EXPIRY
212
213
  } from "@tinycloud/sdk-core";
213
214
 
214
215
  // src/authorization/strategies.ts
@@ -268,7 +269,7 @@ var NodeUserAuthorization = class {
268
269
  ]
269
270
  }
270
271
  };
271
- this.sessionExpirationMs = config.sessionExpirationMs ?? 60 * 60 * 1e3;
272
+ this.sessionExpirationMs = config.sessionExpirationMs ?? EXPIRY.SESSION_MS;
272
273
  this.autoCreateSpace = config.autoCreateSpace ?? false;
273
274
  this.spaceCreationHandler = config.spaceCreationHandler;
274
275
  this.tinycloudHosts = config.tinycloudHosts;
@@ -321,6 +322,23 @@ var NodeUserAuthorization = class {
321
322
  get tinyCloudSession() {
322
323
  return this._tinyCloudSession;
323
324
  }
325
+ /**
326
+ * Rehydrate the auth-layer session from previously-persisted delegation
327
+ * data. Used by {@link TinyCloudNode.restoreSession} so that downstream
328
+ * surfaces that read from `tinyCloudSession` (notably
329
+ * `grantRuntimePermissions`, which extracts the SIWE expiry from it) work
330
+ * without re-running the full sign-in flow.
331
+ *
332
+ * Caller must supply the same fields that `signIn` would have written —
333
+ * `siwe` is the load-bearing one because `extractSiweExpiration` returns
334
+ * undefined for missing SIWEs and the SDK then treats the session as
335
+ * expired-at-epoch-zero.
336
+ */
337
+ setRestoredTinyCloudSession(session) {
338
+ this._tinyCloudSession = session;
339
+ this._address = session.address;
340
+ this._chainId = session.chainId;
341
+ }
324
342
  async resolveTinyCloudHostsForSignIn(address, chainId) {
325
343
  if (this.tinycloudHosts && this.tinycloudHosts.length > 0) {
326
344
  return;
@@ -975,7 +993,8 @@ import {
975
993
  expandPermissionEntries as expandPermissionEntriesCore,
976
994
  isCapabilitySubset,
977
995
  parseRecapCapabilities,
978
- SERVICE_LONG_TO_SHORT
996
+ SERVICE_LONG_TO_SHORT,
997
+ EXPIRY as EXPIRY3
979
998
  } from "@tinycloud/sdk-core";
980
999
 
981
1000
  // src/DelegatedAccess.ts
@@ -1158,7 +1177,8 @@ function createWasmKeyProvider(sessionManager) {
1158
1177
  // src/delegateToHelpers.ts
1159
1178
  import {
1160
1179
  parseExpiry,
1161
- SiweMessage
1180
+ SiweMessage,
1181
+ EXPIRY as EXPIRY2
1162
1182
  } from "@tinycloud/sdk-core";
1163
1183
  function legacyParamsToPermissionEntries(actions, path, spaceIdOverride) {
1164
1184
  const byService = /* @__PURE__ */ new Map();
@@ -1190,9 +1210,10 @@ function legacyParamsToPermissionEntries(actions, path, spaceIdOverride) {
1190
1210
  }
1191
1211
  return entries;
1192
1212
  }
1213
+ var DEFAULT_DELEGATION_EXPIRY_MS = EXPIRY2.SESSION_MS;
1193
1214
  function resolveExpiryMs(expiry) {
1194
1215
  if (expiry === void 0) {
1195
- return 60 * 60 * 1e3;
1216
+ return DEFAULT_DELEGATION_EXPIRY_MS;
1196
1217
  }
1197
1218
  if (typeof expiry === "number") {
1198
1219
  if (!Number.isFinite(expiry) || expiry <= 0) {
@@ -1366,6 +1387,7 @@ var NodeSecretsService = class {
1366
1387
 
1367
1388
  // src/TinyCloudNode.ts
1368
1389
  var DEFAULT_HOST = "https://node.tinycloud.xyz";
1390
+ var DEFAULT_SESSION_EXPIRATION_MS = EXPIRY3.SESSION_MS;
1369
1391
  var _TinyCloudNode = class _TinyCloudNode {
1370
1392
  /**
1371
1393
  * Create a new TinyCloudNode instance.
@@ -1508,7 +1530,7 @@ var _TinyCloudNode = class _TinyCloudNode {
1508
1530
  sessionStorage: config.sessionStorage ?? new MemorySessionStorage(),
1509
1531
  domain: this.siweDomain,
1510
1532
  spacePrefix: config.prefix,
1511
- sessionExpirationMs: config.sessionExpirationMs ?? 60 * 60 * 1e3,
1533
+ sessionExpirationMs: config.sessionExpirationMs ?? DEFAULT_SESSION_EXPIRATION_MS,
1512
1534
  tinycloudHosts: this.explicitHost ? [this.explicitHost] : void 0,
1513
1535
  tinycloudRegistryUrl: config.tinycloudRegistryUrl,
1514
1536
  tinycloudFallbackHosts: config.tinycloudFallbackHosts,
@@ -1774,6 +1796,33 @@ var _TinyCloudNode = class _TinyCloudNode {
1774
1796
  this._vault.initialize(this._serviceContext);
1775
1797
  this._serviceContext.registerService("vault", this._vault);
1776
1798
  this.initializeV2Services(serviceSession);
1799
+ if (sessionData.siwe && sessionData.address && sessionData.chainId) {
1800
+ const tcSession = {
1801
+ address: sessionData.address,
1802
+ chainId: sessionData.chainId,
1803
+ sessionKey: JSON.stringify(sessionData.jwk),
1804
+ spaceId: sessionData.spaceId,
1805
+ delegationCid: sessionData.delegationCid,
1806
+ delegationHeader: sessionData.delegationHeader,
1807
+ verificationMethod: sessionData.verificationMethod,
1808
+ jwk: sessionData.jwk,
1809
+ siwe: sessionData.siwe,
1810
+ signature: sessionData.signature ?? ""
1811
+ };
1812
+ if (this.auth) {
1813
+ this.auth.setRestoredTinyCloudSession(tcSession);
1814
+ } else {
1815
+ this._restoredTcSession = tcSession;
1816
+ }
1817
+ }
1818
+ }
1819
+ /**
1820
+ * Resolve the currently-active TinyCloudSession, preferring the auth
1821
+ * layer's value (wallet mode) and falling back to the node-level
1822
+ * rehydration set by {@link restoreSession} (session-only mode).
1823
+ */
1824
+ currentTinyCloudSession() {
1825
+ return this.auth?.tinyCloudSession ?? this._restoredTcSession;
1777
1826
  }
1778
1827
  /**
1779
1828
  * Connect a wallet to upgrade from session-only mode to wallet mode.
@@ -1818,7 +1867,7 @@ var _TinyCloudNode = class _TinyCloudNode {
1818
1867
  sessionStorage: options?.sessionStorage ?? this.config.sessionStorage ?? new MemorySessionStorage(),
1819
1868
  domain: this.siweDomain,
1820
1869
  spacePrefix: prefix,
1821
- sessionExpirationMs: this.config.sessionExpirationMs ?? 60 * 60 * 1e3,
1870
+ sessionExpirationMs: this.config.sessionExpirationMs ?? DEFAULT_SESSION_EXPIRATION_MS,
1822
1871
  tinycloudHosts: this.explicitHost ? [this.explicitHost] : void 0,
1823
1872
  tinycloudRegistryUrl: this.config.tinycloudRegistryUrl,
1824
1873
  tinycloudFallbackHosts: this.config.tinycloudFallbackHosts,
@@ -1862,7 +1911,7 @@ var _TinyCloudNode = class _TinyCloudNode {
1862
1911
  sessionStorage: options?.sessionStorage ?? this.config.sessionStorage ?? new MemorySessionStorage(),
1863
1912
  domain: this.siweDomain,
1864
1913
  spacePrefix: prefix,
1865
- sessionExpirationMs: this.config.sessionExpirationMs ?? 60 * 60 * 1e3,
1914
+ sessionExpirationMs: this.config.sessionExpirationMs ?? DEFAULT_SESSION_EXPIRATION_MS,
1866
1915
  tinycloudHosts: this.explicitHost ? [this.explicitHost] : void 0,
1867
1916
  tinycloudRegistryUrl: this.config.tinycloudRegistryUrl,
1868
1917
  tinycloudFallbackHosts: this.config.tinycloudFallbackHosts,
@@ -2138,7 +2187,7 @@ var _TinyCloudNode = class _TinyCloudNode {
2138
2187
  * @internal
2139
2188
  */
2140
2189
  getSessionExpiry() {
2141
- const expirationMs = this.config.sessionExpirationMs ?? 60 * 60 * 1e3;
2190
+ const expirationMs = this.config.sessionExpirationMs ?? DEFAULT_SESSION_EXPIRATION_MS;
2142
2191
  return new Date(Date.now() + expirationMs);
2143
2192
  }
2144
2193
  /**
@@ -2295,6 +2344,34 @@ var _TinyCloudNode = class _TinyCloudNode {
2295
2344
  }
2296
2345
  return this._sql;
2297
2346
  }
2347
+ /**
2348
+ * Get an SQL service scoped to a specific space.
2349
+ *
2350
+ * Mirrors {@link SpaceService}'s per-space KV factory: clones the active
2351
+ * service context and overrides its session's spaceId so that subsequent
2352
+ * `sql/<dbName>/<action>` invocations route to that space. Useful when
2353
+ * the caller already holds a delegation covering the target space (e.g.
2354
+ * via {@link grantRuntimePermissions} or {@link useRuntimeDelegation})
2355
+ * but the SDK's per-space SQL surface isn't otherwise exposed.
2356
+ *
2357
+ * Does NOT auto-create the space.
2358
+ *
2359
+ * @param spaceId - Full space URI (`tinycloud:pkh:eip155:<chain>:<addr>:<name>`).
2360
+ */
2361
+ sqlForSpace(spaceId) {
2362
+ if (!this._serviceContext || !this._serviceContext.session) {
2363
+ throw new Error("Not signed in. Call signIn() first.");
2364
+ }
2365
+ const sql = new SQLService2({});
2366
+ const spaceScopedContext = new ServiceContext2({
2367
+ invoke: this._serviceContext.invoke,
2368
+ fetch: this._serviceContext.fetch,
2369
+ hosts: this._serviceContext.hosts
2370
+ });
2371
+ spaceScopedContext.setSession({ ...this._serviceContext.session, spaceId });
2372
+ sql.initialize(spaceScopedContext);
2373
+ return sql;
2374
+ }
2298
2375
  /**
2299
2376
  * DuckDB database operations on this user's space.
2300
2377
  */
@@ -2420,7 +2497,7 @@ var _TinyCloudNode = class _TinyCloudNode {
2420
2497
  * every requested permission.
2421
2498
  */
2422
2499
  hasRuntimePermissions(permissions) {
2423
- const session = this.auth?.tinyCloudSession;
2500
+ const session = this.currentTinyCloudSession();
2424
2501
  if (!session || !Array.isArray(permissions) || permissions.length === 0) {
2425
2502
  return false;
2426
2503
  }
@@ -2440,7 +2517,7 @@ var _TinyCloudNode = class _TinyCloudNode {
2440
2517
  if (permissions === void 0) {
2441
2518
  return this.runtimePermissionGrants.map((grant) => grant.delegation);
2442
2519
  }
2443
- const session = this.auth?.tinyCloudSession;
2520
+ const session = this.currentTinyCloudSession();
2444
2521
  if (!session || !Array.isArray(permissions) || permissions.length === 0) {
2445
2522
  return [];
2446
2523
  }
@@ -2454,7 +2531,7 @@ var _TinyCloudNode = class _TinyCloudNode {
2454
2531
  * matching service calls and downstream `delegateTo()` calls can use it.
2455
2532
  */
2456
2533
  async useRuntimeDelegation(delegation) {
2457
- const session = this.auth?.tinyCloudSession;
2534
+ const session = this.currentTinyCloudSession();
2458
2535
  if (!session) {
2459
2536
  throw new SessionExpiredError(/* @__PURE__ */ new Date(0));
2460
2537
  }
@@ -2493,7 +2570,7 @@ var _TinyCloudNode = class _TinyCloudNode {
2493
2570
  if (!Array.isArray(permissions) || permissions.length === 0) {
2494
2571
  throw new Error("grantRuntimePermissions requires a non-empty permissions array");
2495
2572
  }
2496
- const session = this.auth?.tinyCloudSession;
2573
+ const session = this.currentTinyCloudSession();
2497
2574
  if (!session) {
2498
2575
  throw new SessionExpiredError(/* @__PURE__ */ new Date(0));
2499
2576
  }
@@ -2721,7 +2798,7 @@ var _TinyCloudNode = class _TinyCloudNode {
2721
2798
  ];
2722
2799
  const abilities = { kv: { "": kvActions } };
2723
2800
  const now = /* @__PURE__ */ new Date();
2724
- const expiryMs = 60 * 60 * 1e3;
2801
+ const expiryMs = EXPIRY3.EPHEMERAL_MS;
2725
2802
  const expirationTime = new Date(now.getTime() + expiryMs);
2726
2803
  const prepared = this.wasmBindings.prepareSession({
2727
2804
  abilities,
@@ -3781,7 +3858,11 @@ function deserializeDelegation(data) {
3781
3858
  }
3782
3859
 
3783
3860
  // src/core.ts
3784
- import { KVService as KVService3, PrefixedKVService } from "@tinycloud/sdk-core";
3861
+ import {
3862
+ DEFAULT_SIGNED_READ_URL_EXPIRY_MS,
3863
+ KVService as KVService3,
3864
+ PrefixedKVService
3865
+ } from "@tinycloud/sdk-core";
3785
3866
  import { SQLService as SQLService3, SQLAction, DatabaseHandle } from "@tinycloud/sdk-core";
3786
3867
  import { DuckDbService as DuckDbService3, DuckDbDatabaseHandle, DuckDbAction } from "@tinycloud/sdk-core";
3787
3868
  import {
@@ -3829,6 +3910,7 @@ export {
3829
3910
  CapabilityKeyRegistryErrorCodes,
3830
3911
  DEFAULT_MANIFEST_SPACE2 as DEFAULT_MANIFEST_SPACE,
3831
3912
  DEFAULT_MANIFEST_VERSION,
3913
+ DEFAULT_SIGNED_READ_URL_EXPIRY_MS,
3832
3914
  DataVaultService2 as DataVaultService,
3833
3915
  DatabaseHandle,
3834
3916
  DelegatedAccess,