@tinycloud/node-sdk 2.11.0-beta.1 → 2.11.0-beta.10
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-CQ_5wXQT.d.cts → core-BypriIWK.d.cts} +252 -8
- package/dist/{core-CQ_5wXQT.d.ts → core-BypriIWK.d.ts} +252 -8
- package/dist/core.cjs +551 -18
- package/dist/core.cjs.map +1 -1
- package/dist/core.d.cts +2 -2
- package/dist/core.d.ts +2 -2
- package/dist/core.js +558 -20
- package/dist/core.js.map +1 -1
- package/dist/index.cjs +599 -20
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +86 -4
- package/dist/index.d.ts +86 -4
- package/dist/index.js +604 -21
- package/dist/index.js.map +1 -1
- package/package.json +4 -4
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ISessionStorage, PersistedSessionData, AutoSignStrategy, AutoRejectStrategy, CallbackStrategy, IUserAuthorization, ISigner, ISpaceCreationHandler, LocalNodeIdentityStore, IWasmBindings, ISessionManager, SiweConfig, Manifest, ComposedManifestRequest, ClientSession, TinyCloudSession, Extension, SignRequest, SignInOptions, Delegation, DelegatedResource, PermissionEntry, TelemetryConfig, IKVService, ISQLService, IDuckDbService, IHooksService, CreateOwnerDelegationParams as CreateOwnerDelegationParams$1, OwnerDelegationReceipt as OwnerDelegationReceipt$1, INotificationHandler, IENSResolver, AccountService, RegisterOwnerSharePolicyParams, OwnerSharePolicyRegistrationReceipt, ShareDeliveryAuthorizationReceipt, IDataVaultService, IEncryptionService, NetworkDescriptor, ISecretsService, ICapabilityKeyRegistry, DelegationManager, ISpaceService, ISpace, ISharingService, CreateDelegationParams, DelegationResult, DelegationRevocationReceipt, DelegationStatus, ResolvedDelegate, KeyProvider, JWK } from '@tinycloud/sdk-core';
|
|
1
|
+
import { ISessionStorage, PersistedSessionData, AutoSignStrategy, AutoRejectStrategy, CallbackStrategy, IUserAuthorization, ISigner, ISpaceCreationHandler, LocalNodeIdentityStore, IWasmBindings, ISessionManager, SiweConfig, Manifest, ComposedManifestRequest, ClientSession, TinyCloudSession, Extension, SignRequest, SignInOptions, CapabilityPresentationEnvelopeV1, Delegation, DelegatedResource, PermissionEntry, TelemetryConfig, IKVService, ISQLService, IDuckDbService, IHooksService, CreateOwnerDelegationParams as CreateOwnerDelegationParams$1, OwnerDelegationReceipt as OwnerDelegationReceipt$1, INotificationHandler, IENSResolver, AccountService, InvokeAnyFunction as InvokeAnyFunction$1, RegisterOwnerSharePolicyParams, OwnerSharePolicyRegistrationReceipt, ShareDeliveryAuthorizationReceipt, IDataVaultService, IEncryptionService, NetworkDescriptor, ISecretsService, ICapabilityKeyRegistry, DelegationManager, ISpaceService, ISpace, ISharingService, CreateDelegationParams, DelegationResult, DelegationRevocationReceipt, DelegationStatus, ResolvedDelegate, KeyProvider, JWK } from '@tinycloud/sdk-core';
|
|
2
2
|
import { EventEmitter } from 'events';
|
|
3
3
|
import { InvokeFunction, InvokeAnyFunction } from '@tinycloud/sdk-services';
|
|
4
4
|
|
|
@@ -195,9 +195,9 @@ interface NodeUserAuthorizationConfig {
|
|
|
195
195
|
tinycloudRegistryUrl?: string | null;
|
|
196
196
|
/** Fallback TinyCloud hosts. Default: hosted TinyCloud node. */
|
|
197
197
|
tinycloudFallbackHosts?: string[] | null;
|
|
198
|
-
/** Probe
|
|
198
|
+
/** Probe configured/registered local nodes before registry/fallback resolution. Default: true. */
|
|
199
199
|
autoDiscoverLocalNode?: boolean;
|
|
200
|
-
/** Local loopback node URL to probe.
|
|
200
|
+
/** Local loopback node URL to probe. Omit to avoid probing loopback. */
|
|
201
201
|
localNodeUrl?: string;
|
|
202
202
|
/** Known `*.local.tinycloud.link` subdomain name, probed directly. */
|
|
203
203
|
localLinkName?: string;
|
|
@@ -319,6 +319,12 @@ declare class NodeUserAuthorization implements IUserAuthorization {
|
|
|
319
319
|
private _address?;
|
|
320
320
|
private _chainId?;
|
|
321
321
|
private _nodeFeatures;
|
|
322
|
+
/**
|
|
323
|
+
* `nodeId` from the `GET /info` performed during sign-in/restore, tagged with
|
|
324
|
+
* the host it came from. Callers that need the node DID (encryption-network
|
|
325
|
+
* admin invocations) reuse this instead of re-fetching `/info`.
|
|
326
|
+
*/
|
|
327
|
+
private _nodeInfoIdentity?;
|
|
322
328
|
private _lastActivationSkippedSpaceIds;
|
|
323
329
|
constructor(config: NodeUserAuthorizationConfig);
|
|
324
330
|
/**
|
|
@@ -387,6 +393,13 @@ declare class NodeUserAuthorization implements IUserAuthorization {
|
|
|
387
393
|
private requireTinyCloudHosts;
|
|
388
394
|
private get primaryTinyCloudHost();
|
|
389
395
|
get nodeFeatures(): string[];
|
|
396
|
+
/**
|
|
397
|
+
* The node DID reported by `GET /info` for `host`, if the sign-in (or
|
|
398
|
+
* restore) that populated it targeted that same host. Returns `undefined`
|
|
399
|
+
* for any other host, and for nodes whose `/info` omits `nodeId`, so callers
|
|
400
|
+
* fall back to fetching it themselves rather than using a foreign node's DID.
|
|
401
|
+
*/
|
|
402
|
+
nodeIdForHost(host: string): string | undefined;
|
|
390
403
|
get lastActivationSkippedSpaceIds(): string[];
|
|
391
404
|
/**
|
|
392
405
|
* Compute the `abilities` map the WASM `prepareSession` call should
|
|
@@ -533,6 +546,153 @@ declare class NodeUserAuthorization implements IUserAuthorization {
|
|
|
533
546
|
spaceId: string;
|
|
534
547
|
verificationMethod: string;
|
|
535
548
|
}, signature: string, keyId: string, jwk: Record<string, unknown>): Promise<ClientSession>;
|
|
549
|
+
/**
|
|
550
|
+
* End-to-end sign-in via OpenKey `authorizeTinyCloud()` (Sol CRITICAL-4).
|
|
551
|
+
*
|
|
552
|
+
* This is the production entry point that wires
|
|
553
|
+
* {@link prepareSessionForSigning} → OpenKey `authorizeTinyCloud()` →
|
|
554
|
+
* {@link signInWithOpenKeyResult} into one call. Consumers pass in a
|
|
555
|
+
* caller-provided `authorizeFn` (typically a thin wrapper around
|
|
556
|
+
* `openkey.authorizeTinyCloud()`) so this method has no direct
|
|
557
|
+
* dependency on the OpenKey SDK — it works with any transport that
|
|
558
|
+
* conforms to the versioned protocol.
|
|
559
|
+
*
|
|
560
|
+
* The `authorizeFn` MUST:
|
|
561
|
+
* 1. Send the prepared SIWE bytes to OpenKey.
|
|
562
|
+
* 2. Return the exact `TinyCloudAuthorizationResultV1` shape (with
|
|
563
|
+
* `signedMessage` — the bytes the signature actually verifies
|
|
564
|
+
* against — plus `selectedActionKeys` and `permissions`).
|
|
565
|
+
*
|
|
566
|
+
* NodeUserAuthorization then completes the session with `signedMessage`
|
|
567
|
+
* (never the prepared bytes), verifying the signature, the immutable
|
|
568
|
+
* SIWE fields, and every subset invariant enforced by
|
|
569
|
+
* {@link signInWithOpenKeyResult}. This preserves the exact-byte
|
|
570
|
+
* guarantee: if the user did NOT narrow, the returned `signedMessage`
|
|
571
|
+
* equals the prepared SIWE byte-for-byte; if the user narrowed, only
|
|
572
|
+
* the ReCap block differs and every immutable header field survives.
|
|
573
|
+
*
|
|
574
|
+
* Legacy exact-byte {@link signIn} callers are unaffected — this method
|
|
575
|
+
* is opt-in.
|
|
576
|
+
*
|
|
577
|
+
* @param authorizeFn Callback that invokes the versioned OpenKey
|
|
578
|
+
* `authorizeTinyCloud()` protocol and returns the result. Receives
|
|
579
|
+
* the prepared SIWE bytes plus a `host` hint the widget should bind
|
|
580
|
+
* into its /authorize-sign-prepare context.
|
|
581
|
+
* @param options Optional overrides for the OpenKey request.
|
|
582
|
+
*/
|
|
583
|
+
signInWithOpenKey(authorizeFn: (input: {
|
|
584
|
+
protocolVersion: 1;
|
|
585
|
+
siwe: string;
|
|
586
|
+
jwk: Record<string, unknown>;
|
|
587
|
+
host?: string;
|
|
588
|
+
/**
|
|
589
|
+
* Sol MAJOR-3: OpenKey key ID (managed or external key) to sign
|
|
590
|
+
* with. When omitted, the OpenKey SDK falls back to the last
|
|
591
|
+
* connected key. Callers who want to bind the flow to a specific
|
|
592
|
+
* OpenKey key can override via options.openkeyKeyId; otherwise the
|
|
593
|
+
* bridge relies on the SDK's connected-key state.
|
|
594
|
+
*/
|
|
595
|
+
keyId?: string;
|
|
596
|
+
/**
|
|
597
|
+
* Optional presentation envelope forwarded to the OpenKey widget.
|
|
598
|
+
* Built from this instance's `_manifest` when set. Display-only —
|
|
599
|
+
* the widget/server MUST NOT let it expand authority. The envelope
|
|
600
|
+
* carries `manifests` payloads plus a stable SHA-256 digest so the
|
|
601
|
+
* OpenKey server can origin-bind the browser origin against the
|
|
602
|
+
* app's well-known manifest.
|
|
603
|
+
*/
|
|
604
|
+
presentation?: CapabilityPresentationEnvelopeV1;
|
|
605
|
+
}) => Promise<{
|
|
606
|
+
protocolVersion: 1;
|
|
607
|
+
address: string;
|
|
608
|
+
signature: string;
|
|
609
|
+
signedMessage: string;
|
|
610
|
+
selectedActionKeys: string[];
|
|
611
|
+
permissions: Array<{
|
|
612
|
+
service: string;
|
|
613
|
+
space: string;
|
|
614
|
+
path: string;
|
|
615
|
+
actions: string[];
|
|
616
|
+
}>;
|
|
617
|
+
}>, options?: {
|
|
618
|
+
host?: string;
|
|
619
|
+
openkeyKeyId?: string;
|
|
620
|
+
/**
|
|
621
|
+
* Optional caller-supplied reason string forwarded in the
|
|
622
|
+
* presentation envelope. Rendered as caller-supplied (never
|
|
623
|
+
* verified) in the widget.
|
|
624
|
+
*/
|
|
625
|
+
reason?: string;
|
|
626
|
+
}): Promise<ClientSession>;
|
|
627
|
+
/**
|
|
628
|
+
* Build a `CapabilityPresentationEnvelopeV1` from `this._manifest`. The
|
|
629
|
+
* envelope is display-only — the OpenKey widget renders it under an
|
|
630
|
+
* honest trust label, and the server /authorize-sign-prepare route
|
|
631
|
+
* decides whether to upgrade the label to `origin-bound` by fetching
|
|
632
|
+
* the well-known manifest and comparing its digest to
|
|
633
|
+
* `manifestDigest`.
|
|
634
|
+
*
|
|
635
|
+
* Returns `undefined` when no manifest is set — the widget renders as
|
|
636
|
+
* "no manifest supplied" (unsigned).
|
|
637
|
+
*
|
|
638
|
+
* The digest is a deterministic SHA-256 over canonical JSON of the
|
|
639
|
+
* first manifest payload; OpenKey parses the fetched well-known manifest
|
|
640
|
+
* and applies the same canonicalization before comparing digests.
|
|
641
|
+
*/
|
|
642
|
+
private buildPresentationEnvelope;
|
|
643
|
+
/**
|
|
644
|
+
* Complete sign-in with a versioned OpenKey authorization result.
|
|
645
|
+
*
|
|
646
|
+
* Where `signInWithPreparedSession` completes with a signature over the
|
|
647
|
+
* ORIGINAL prepared SIWE, this method completes with the SIWE bytes the
|
|
648
|
+
* OpenKey widget actually presented and signed (`signedMessage`). It
|
|
649
|
+
* exists because the versioned authorizeTinyCloud protocol lets the user
|
|
650
|
+
* narrow capabilities; the returned bytes may differ from the original
|
|
651
|
+
* request and are the only ones the signature actually verifies against.
|
|
652
|
+
*
|
|
653
|
+
* The `result` parameter is validated at the trust boundary via
|
|
654
|
+
* `validateAuthorizationResultV1` (in sdk-core). Callers should validate
|
|
655
|
+
* BEFORE calling this method so unknown/missing fields are rejected
|
|
656
|
+
* before any session state is created.
|
|
657
|
+
*
|
|
658
|
+
* Validation performed here (defence-in-depth: even a "valid" v1 payload
|
|
659
|
+
* must clear these checks before any session state is created):
|
|
660
|
+
* 1. `result.address` matches the local signer's address.
|
|
661
|
+
* 2. `result.signature` recovers to `result.address` when verified against
|
|
662
|
+
* `result.signedMessage`.
|
|
663
|
+
* 3. Every immutable SIWE header field (domain, address, URI, version,
|
|
664
|
+
* chainId, nonce, issuedAt) in the original prepared SIWE is preserved
|
|
665
|
+
* byte-for-byte in `result.signedMessage`. `statement` is NOT in this
|
|
666
|
+
* list because the WASM renders it from the ReCap contents; it MUST
|
|
667
|
+
* change when the ReCap is narrowed.
|
|
668
|
+
* 4. Every capability in `result.signedMessage`'s ReCap block was present
|
|
669
|
+
* in the original prepared SIWE — narrowing OK, broadening rejected.
|
|
670
|
+
* 5. Every `result.selectedActionKeys` entry corresponds to a
|
|
671
|
+
* (resource, action) pair in the returned SIWE.
|
|
672
|
+
*/
|
|
673
|
+
signInWithOpenKeyResult(result: {
|
|
674
|
+
protocolVersion: 1;
|
|
675
|
+
address: string;
|
|
676
|
+
signature: string;
|
|
677
|
+
signedMessage: string;
|
|
678
|
+
selectedActionKeys: string[];
|
|
679
|
+
permissions: Array<{
|
|
680
|
+
service: string;
|
|
681
|
+
space: string;
|
|
682
|
+
path: string;
|
|
683
|
+
actions: string[];
|
|
684
|
+
}>;
|
|
685
|
+
}, prepared: {
|
|
686
|
+
/**
|
|
687
|
+
* The ORIGINAL SIWE the SDK produced via {@link prepareSessionForSigning}.
|
|
688
|
+
* Used as the source-of-truth reference for immutable-header and
|
|
689
|
+
* capability-subset comparison against `result.signedMessage`.
|
|
690
|
+
*/
|
|
691
|
+
siwe: string;
|
|
692
|
+
jwk: Record<string, unknown>;
|
|
693
|
+
spaceId: string;
|
|
694
|
+
verificationMethod: string;
|
|
695
|
+
}, keyId: string, jwk: Record<string, unknown>): Promise<ClientSession>;
|
|
536
696
|
/**
|
|
537
697
|
* Clear persisted session data.
|
|
538
698
|
*/
|
|
@@ -887,9 +1047,9 @@ interface TinyCloudNodeConfig {
|
|
|
887
1047
|
tinycloudRegistryUrl?: string | null;
|
|
888
1048
|
/** Fallback TinyCloud hosts. Default: hosted TinyCloud node. */
|
|
889
1049
|
tinycloudFallbackHosts?: string[] | null;
|
|
890
|
-
/** Probe
|
|
1050
|
+
/** Probe configured/registered local nodes before registry/fallback resolution. Default: true. */
|
|
891
1051
|
autoDiscoverLocalNode?: boolean;
|
|
892
|
-
/** Local loopback node URL to probe.
|
|
1052
|
+
/** Local loopback node URL to probe. Omit to avoid probing loopback. */
|
|
893
1053
|
localNodeUrl?: string;
|
|
894
1054
|
/** Known `*.local.tinycloud.link` subdomain name, probed directly. */
|
|
895
1055
|
localLinkName?: string;
|
|
@@ -987,6 +1147,21 @@ interface RuntimePermissionGrantOptions {
|
|
|
987
1147
|
/** Override expiry. ms-format string ("7d", "1h") or raw milliseconds. */
|
|
988
1148
|
expiry?: string | number;
|
|
989
1149
|
}
|
|
1150
|
+
interface EnsureEncryptionNetworkOptions {
|
|
1151
|
+
/**
|
|
1152
|
+
* Skip the `GET /encryption/networks/{id}` existence probe and go straight
|
|
1153
|
+
* to the create.
|
|
1154
|
+
*
|
|
1155
|
+
* The probe pays for itself only when the network already exists. On a
|
|
1156
|
+
* freshly bootstrapped account it is a guaranteed 404, so it costs a round
|
|
1157
|
+
* trip on the cold sign-in path and saves nothing. Creating without it is
|
|
1158
|
+
* safe: the server answers `409 Conflict` if the network is already there,
|
|
1159
|
+
* which {@link TinyCloudNode.createEncryptionNetwork} resolves by reading the
|
|
1160
|
+
* existing descriptor. Set this only when the caller knows the account was
|
|
1161
|
+
* just provisioned.
|
|
1162
|
+
*/
|
|
1163
|
+
assumeMissing?: boolean;
|
|
1164
|
+
}
|
|
990
1165
|
/**
|
|
991
1166
|
* High-level TinyCloud API for Node.js environments.
|
|
992
1167
|
*
|
|
@@ -998,6 +1173,23 @@ interface NodeDefaults {
|
|
|
998
1173
|
createWasmBindings: () => IWasmBindings;
|
|
999
1174
|
createSigner: (privateKey: string, chainId?: number) => ISigner;
|
|
1000
1175
|
}
|
|
1176
|
+
/**
|
|
1177
|
+
* A bootstrap step that COMPLETED but did so in a degraded way — e.g. a KV
|
|
1178
|
+
* batch write that failed ambiguously and was recovered by per-space
|
|
1179
|
+
* reconciliation. Structured (not prose) so callers can branch on `kind` and
|
|
1180
|
+
* `code` without parsing messages (TC-361).
|
|
1181
|
+
*/
|
|
1182
|
+
interface BootstrapWarning {
|
|
1183
|
+
/** The BootstrapStep.id that degraded, e.g. "account:seed-spaces"
|
|
1184
|
+
* (BootstrapStepBase.id — packages/bootstrap/src/index.ts:642-645). */
|
|
1185
|
+
stepId: string;
|
|
1186
|
+
/** What kind of degradation. Additive union; one member today. */
|
|
1187
|
+
kind: "batch-write-reconciled";
|
|
1188
|
+
/** ServiceError.code of the underlying failure that was recovered from. */
|
|
1189
|
+
code: string;
|
|
1190
|
+
/** Human-readable detail. Diagnostics only — never parse this. */
|
|
1191
|
+
message: string;
|
|
1192
|
+
}
|
|
1001
1193
|
declare class TinyCloudNode {
|
|
1002
1194
|
/** @internal Registered by importing @tinycloud/node-sdk (not /core) */
|
|
1003
1195
|
private static nodeDefaults?;
|
|
@@ -1044,6 +1236,12 @@ declare class TinyCloudNode {
|
|
|
1044
1236
|
* so this avoids re-parsing the recap on every registration.
|
|
1045
1237
|
*/
|
|
1046
1238
|
private _recapOperationsCache?;
|
|
1239
|
+
/**
|
|
1240
|
+
* Owned space ids this sign-in has already confirmed are hosted. Consulted by
|
|
1241
|
+
* {@link ensureOwnedSpaceHostedById}; cleared on every {@link signIn} because
|
|
1242
|
+
* hosting is confirmed against the session that was active at the time.
|
|
1243
|
+
*/
|
|
1244
|
+
private readonly confirmedHostedSpaceIds;
|
|
1047
1245
|
/**
|
|
1048
1246
|
* TinyCloudSession captured by {@link restoreSession} when there's no
|
|
1049
1247
|
* auth-layer signer available (session-only mode used by OpenKey-backed
|
|
@@ -1051,6 +1249,7 @@ declare class TinyCloudNode {
|
|
|
1051
1249
|
* {@link currentTinyCloudSession} as a fallback for `auth.tinyCloudSession`.
|
|
1052
1250
|
*/
|
|
1053
1251
|
private _restoredTcSession?;
|
|
1252
|
+
private _activeServiceSession?;
|
|
1054
1253
|
/**
|
|
1055
1254
|
* True when the last signIn() detected an interactive signer and skipped
|
|
1056
1255
|
* client-side bootstrap. Apps can read this to know whether bootstrap was
|
|
@@ -1061,7 +1260,10 @@ declare class TinyCloudNode {
|
|
|
1061
1260
|
* Outcome of the last signIn()'s account-bootstrap attempt. `skipped` is
|
|
1062
1261
|
* true when bootstrap did not complete (interactive signer, auto-sign
|
|
1063
1262
|
* denied, or a bootstrap step failed); `reason` carries the cause so apps
|
|
1064
|
-
* can surface a "finish account setup" call-to-action.
|
|
1263
|
+
* can surface a "finish account setup" call-to-action. `warnings` is
|
|
1264
|
+
* present when bootstrap completed, but one or more steps recovered from
|
|
1265
|
+
* an ambiguous failure (e.g. a KV batch write reconciled via per-space
|
|
1266
|
+
* fallback) — clean vs. recovered runs are otherwise byte-identical.
|
|
1065
1267
|
*/
|
|
1066
1268
|
private _bootstrapStatus;
|
|
1067
1269
|
/** Whether the last signIn() skipped client-side bootstrap because the
|
|
@@ -1071,6 +1273,7 @@ declare class TinyCloudNode {
|
|
|
1071
1273
|
get bootstrapStatus(): {
|
|
1072
1274
|
skipped: boolean;
|
|
1073
1275
|
reason?: string;
|
|
1276
|
+
warnings?: BootstrapWarning[];
|
|
1074
1277
|
};
|
|
1075
1278
|
private get nodeFeatures();
|
|
1076
1279
|
/** SIWE domain — uses config override or defaults to app.tinycloud.xyz */
|
|
@@ -1252,6 +1455,22 @@ declare class TinyCloudNode {
|
|
|
1252
1455
|
private withAccountRegistryRetry;
|
|
1253
1456
|
private requestedEncryptionNetworkIds;
|
|
1254
1457
|
private ensureRequestedEncryptionNetworks;
|
|
1458
|
+
/**
|
|
1459
|
+
* Ensure one of this user's owned spaces is hosted, at most once per space
|
|
1460
|
+
* per sign-in.
|
|
1461
|
+
*
|
|
1462
|
+
* Account bootstrap funnels six calls through here (via
|
|
1463
|
+
* `AccountService.ensureAccountSpaceHosted`), and each one re-submits
|
|
1464
|
+
* `activateSessionWithHost` with the *primary* session. That session's recap
|
|
1465
|
+
* covers only `default` and `secrets`, so the account space appears in
|
|
1466
|
+
* neither `activated` nor `skipped` and the guard below returns immediately
|
|
1467
|
+
* — the repeat calls cannot change the outcome, they only cost round trips.
|
|
1468
|
+
*
|
|
1469
|
+
* The memo is per sign-in ({@link confirmedHostedSpaceIds} is cleared in
|
|
1470
|
+
* `signIn`) and only records confirmed successes. A wrong skip is
|
|
1471
|
+
* self-revealing: the next write to the space fails immediately and loudly
|
|
1472
|
+
* with `404 Space not found`.
|
|
1473
|
+
*/
|
|
1255
1474
|
private ensureOwnedSpaceHostedById;
|
|
1256
1475
|
/**
|
|
1257
1476
|
* Host one of this user's owned spaces by name (e.g. `"applications"`).
|
|
@@ -1399,6 +1618,16 @@ declare class TinyCloudNode {
|
|
|
1399
1618
|
* rehydration set by {@link restoreSession} (session-only mode).
|
|
1400
1619
|
*/
|
|
1401
1620
|
private currentTinyCloudSession;
|
|
1621
|
+
/**
|
|
1622
|
+
* Mint a multi-capability invocation through the established session key.
|
|
1623
|
+
* Callers receive only the signed headers; session key material remains
|
|
1624
|
+
* owned by the session manager and is never part of the caller contract.
|
|
1625
|
+
*/
|
|
1626
|
+
invokeAny(entries: Parameters<InvokeAnyFunction$1>[1], facts?: Parameters<InvokeAnyFunction$1>[2]): ReturnType<InvokeAnyFunction$1>;
|
|
1627
|
+
/** Sign protocol bytes with the established in-memory session key. */
|
|
1628
|
+
signSessionBytes(bytes: Uint8Array): Promise<Uint8Array>;
|
|
1629
|
+
/** Bind a session-signed invocation to the canonical service audience. */
|
|
1630
|
+
bindInvocationAudience(authorization: string, audience: string): Promise<string>;
|
|
1402
1631
|
/**
|
|
1403
1632
|
* Connect a wallet to upgrade from session-only mode to wallet mode.
|
|
1404
1633
|
*
|
|
@@ -1462,6 +1691,14 @@ declare class TinyCloudNode {
|
|
|
1462
1691
|
*/
|
|
1463
1692
|
private requireEncryptionSession;
|
|
1464
1693
|
private createEncryptionCrypto;
|
|
1694
|
+
/**
|
|
1695
|
+
* The node DID for {@link config.host}.
|
|
1696
|
+
*
|
|
1697
|
+
* Sign-in already performs `GET /info` for the protocol-version check, and
|
|
1698
|
+
* that response carries `nodeId`, so reuse it rather than fetching `/info` a
|
|
1699
|
+
* second time. Only a value recorded for this exact host qualifies; older
|
|
1700
|
+
* nodes that omit `nodeId` fall through to the fetch.
|
|
1701
|
+
*/
|
|
1465
1702
|
private fetchNodeId;
|
|
1466
1703
|
private signRawNetworkAuthorization;
|
|
1467
1704
|
private fetchEncryptionNetworkAt;
|
|
@@ -1518,6 +1755,7 @@ declare class TinyCloudNode {
|
|
|
1518
1755
|
readonly recipientEmail: string;
|
|
1519
1756
|
readonly shareUrl: string;
|
|
1520
1757
|
readonly documentName: string;
|
|
1758
|
+
readonly idempotencyKey: string;
|
|
1521
1759
|
readonly expiresAt: string;
|
|
1522
1760
|
/** The enrolled receipt key from the node trust bundle. */
|
|
1523
1761
|
readonly nodeProof: {
|
|
@@ -1586,7 +1824,13 @@ declare class TinyCloudNode {
|
|
|
1586
1824
|
get encryption(): IEncryptionService;
|
|
1587
1825
|
getEncryptionNetwork(nameOrNetworkId?: string): Promise<NetworkDescriptor | null>;
|
|
1588
1826
|
createEncryptionNetwork(name?: string): Promise<NetworkDescriptor>;
|
|
1589
|
-
|
|
1827
|
+
/**
|
|
1828
|
+
* Ensure an encryption network exists, creating it if necessary.
|
|
1829
|
+
*
|
|
1830
|
+
* @param nameOrNetworkId - Network name or full `urn:tinycloud:encryption:` id.
|
|
1831
|
+
* @param options - See {@link EnsureEncryptionNetworkOptions}.
|
|
1832
|
+
*/
|
|
1833
|
+
ensureEncryptionNetwork(nameOrNetworkId?: string, options?: EnsureEncryptionNetworkOptions): Promise<NetworkDescriptor>;
|
|
1590
1834
|
/**
|
|
1591
1835
|
* App-facing secrets API backed by the `secrets` space vault.
|
|
1592
1836
|
*/
|
|
@@ -2168,4 +2412,4 @@ declare class WasmKeyProvider implements KeyProvider {
|
|
|
2168
2412
|
*/
|
|
2169
2413
|
declare function createWasmKeyProvider(sessionManager: SessionManagerWithListing): WasmKeyProvider;
|
|
2170
2414
|
|
|
2171
|
-
export { type AuthDelegationArtifact as A, type CreateOwnerDelegationParams as C, type DelegateToOptions as D, FileSessionStorage as F, MemorySessionStorage as M, type NodeEventEmitterStrategy as N, type OwnerDelegationReceipt as O, type PortableDelegation as P, type RestorableSession as R, type SecretPermissionHint as S, TinyCloudNode as T, UnsupportedSessionRestoreError as U, type ValidatedRuntimeDelegation as V, WasmKeyProvider as W, type AuthRequestArtifact as a, type DelegateToResult as b, DelegatedAccess as c, type DelegationAuthority as d, NodeUserAuthorization as e, type NodeUserAuthorizationConfig as f, type RuntimeDelegationActivator as g, type RuntimePermissionGrantOptions as h, type SecretReadInput as i, type SecretReadResult as j, type SignStrategy as k, type TinyCloudNodeConfig as l, type WasmKeyProviderConfig as m, activateValidatedRuntimeDelegation as n, createWasmKeyProvider as o, defaultSignStrategy as p, deserializeDelegation as q, grantAuthRequest as r, serializeDelegation as s };
|
|
2415
|
+
export { type AuthDelegationArtifact as A, type BootstrapWarning as B, type CreateOwnerDelegationParams as C, type DelegateToOptions as D, type EnsureEncryptionNetworkOptions as E, FileSessionStorage as F, MemorySessionStorage as M, type NodeEventEmitterStrategy as N, type OwnerDelegationReceipt as O, type PortableDelegation as P, type RestorableSession as R, type SecretPermissionHint as S, TinyCloudNode as T, UnsupportedSessionRestoreError as U, type ValidatedRuntimeDelegation as V, WasmKeyProvider as W, type AuthRequestArtifact as a, type DelegateToResult as b, DelegatedAccess as c, type DelegationAuthority as d, NodeUserAuthorization as e, type NodeUserAuthorizationConfig as f, type RuntimeDelegationActivator as g, type RuntimePermissionGrantOptions as h, type SecretReadInput as i, type SecretReadResult as j, type SignStrategy as k, type TinyCloudNodeConfig as l, type WasmKeyProviderConfig as m, activateValidatedRuntimeDelegation as n, createWasmKeyProvider as o, defaultSignStrategy as p, deserializeDelegation as q, grantAuthRequest as r, serializeDelegation as s };
|