@tinycloud/node-sdk 3.12.0-beta.3 → 3.12.0-beta.5

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/README.md CHANGED
@@ -8,7 +8,7 @@ Routing uses the complete space URI, not a short space name or a single account-
8
8
 
9
9
  Encryption is resolved separately: descriptor reads, network creation, and decrypt requests use the signed `encryptionNode`, including its invocation audience. A data-space host does not become an encryption destination, or vice versa.
10
10
 
11
- Explicit `host`, saved-profile hosts, local discovery, and new-user defaults are onboarding hints. The lookup checks v2 first, then v1 to distinguish absence from an existing v1 registration. Cold HTTP5xx, transport errors and timeouts without cached or remembered registration retain configured/default-host compatibility, including direct Core callers without a cache adapter; the verdict is marked `offline`, not genuine registry absence. HTTP4xx refusals, v1-only registrations, corrupt caches, invalid responses, remembered registrations, empty registered memberships and missing encryption destinations never authorize fallback. Signed strings are validated without rewriting them.
11
+ Explicit `host`, saved-profile hosts, local discovery, and new-user defaults are onboarding hints only after the reachable registry confirms genuine absence. The lookup checks v2 first, then v1 to distinguish absence from an existing v1 registration. Cold HTTP5xx, transport errors and timeouts without saved settings refuse live routing with `registry_unavailable`; neither a configured/default host nor `onNodeNotFound` may override that refusal. Low-level background lookup may still describe an offline unregistered verdict, but policy lookups do not authorize it. HTTP4xx refusals, v1-only registrations, corrupt caches, invalid responses, remembered registrations, empty registered memberships and missing encryption destinations never authorize fallback. Signed strings are validated without rewriting them.
12
12
 
13
13
  `NodeNotRespondingError` has code `NODE_NOT_RESPONDING`. Registry refusals and node-identity mismatches remain distinct errors. Multi-node writes are not atomic: `PartialNodeWriteError` exposes `succeeded` URLs and `failed` destinations/statuses/causes so callers do not mistake incomplete writes for success.
14
14
 
@@ -32,7 +32,7 @@ Each caller retains registration evidence observed before joining an in-flight r
32
32
 
33
33
  Restored host hints install alongside the replacement session and service graph. Subsequent public delegation preparation uses that installed hint when fresh routing permits onboarding; verified signed destinations still take precedence.
34
34
 
35
- Actual cold fallback logs `registry unavailable; using the default node`; warm fallback logs `Storage settings are unreachable; using cached settings checked less than 1 hour ago.` Each diagnostic is emitted once per owner/client cache and fallback kind, only after a route is selected. `onRegistryFallback(reason, code?)` collects these value-free diagnostics instead of the default console warning; semantic codes are `using_default_node` and `using_cached_settings`. Background refresh alone does not warn.
35
+ With no saved settings, an unreachable registry refuses before data requests; it does not select a default host or emit a default-host warning. Warm fallback still logs `Storage settings are unreachable; using cached settings checked less than 1 hour ago.` once per owner/client cache after selecting the verified cached route. `onRegistryFallback(reason, code?)` collects that value-free diagnostic instead of the default console warning, using `using_cached_settings`. Background refresh alone does not warn. CLI errors keep `REGISTRY_UNAVAILABLE` and explain that no settings are saved on this computer.
36
36
 
37
37
  This is a client cache: a node that performs online registry admission still needs its own registry connectivity. It is not a whole-service-outage guarantee.
38
38
 
@@ -102,6 +102,7 @@ interface OpenKeyAuthorizeTinyCloud {
102
102
  interface OpenKeyBridgeInput {
103
103
  protocolVersion: 1;
104
104
  siwe: string;
105
+ /** The public session key. The bridge sends only its public members to OpenKey. */
105
106
  jwk: Record<string, unknown>;
106
107
  /** SDK-prepared session-key DID, for local handoff consistency only; not an OpenKey request field. */
107
108
  readonly verificationMethod: string;
@@ -102,6 +102,7 @@ interface OpenKeyAuthorizeTinyCloud {
102
102
  interface OpenKeyBridgeInput {
103
103
  protocolVersion: 1;
104
104
  siwe: string;
105
+ /** The public session key. The bridge sends only its public members to OpenKey. */
105
106
  jwk: Record<string, unknown>;
106
107
  /** SDK-prepared session-key DID, for local handoff consistency only; not an OpenKey request field. */
107
108
  readonly verificationMethod: string;
@@ -3,7 +3,7 @@ import { TinyCloudSession, TelemetryConfig, ServiceContext, IKVService, ISQLServ
3
3
  import { ReplicaPurgeFailedEvent, ReplicaSessionStamp } from '@tinycloud/sdk-services/kv/replication';
4
4
  import { InvokeFunction, InvokeAnyFunction, FetchFunction, RequestSink, RequestLogReader } from '@tinycloud/sdk-services';
5
5
  import { NamedKeyClient } from '@tinycloud/sdk-services/encryption/named-keys';
6
- import { S as SpaceHosting, c as SignStrategy, a as NodeUserAuthorization, P as PreparedOpenKeyAuthorization } from './NodeUserAuthorization-B_TFUlua.cjs';
6
+ import { S as SpaceHosting, c as SignStrategy, a as NodeUserAuthorization, P as PreparedOpenKeyAuthorization } from './NodeUserAuthorization-D41H1_c0.cjs';
7
7
  import { P as PortableDelegation, S as SessionGrantProof, e as VerifiedSessionGrant } from './delegation-CeOWDnBB.cjs';
8
8
 
9
9
  /**
@@ -886,7 +886,7 @@ declare class TinyCloudNode {
886
886
  signIn(options?: SignInOptions): Promise<void>;
887
887
  /**
888
888
  * Fresh OpenKey sign-in. The callback receives the SDK's original SIWE and
889
- * session JWK before approval; the signed result is verified against those
889
+ * public session JWK before approval; the signed result is verified against those
890
890
  * bytes before the network session or replica stamp is committed.
891
891
  */
892
892
  signInWithOpenKey(authorizeFn: Parameters<NodeUserAuthorization["signInWithOpenKey"]>[0], options?: Parameters<NodeUserAuthorization["signInWithOpenKey"]>[1]): Promise<void>;
@@ -3,7 +3,7 @@ import { TinyCloudSession, TelemetryConfig, ServiceContext, IKVService, ISQLServ
3
3
  import { ReplicaPurgeFailedEvent, ReplicaSessionStamp } from '@tinycloud/sdk-services/kv/replication';
4
4
  import { InvokeFunction, InvokeAnyFunction, FetchFunction, RequestSink, RequestLogReader } from '@tinycloud/sdk-services';
5
5
  import { NamedKeyClient } from '@tinycloud/sdk-services/encryption/named-keys';
6
- import { S as SpaceHosting, c as SignStrategy, a as NodeUserAuthorization, P as PreparedOpenKeyAuthorization } from './NodeUserAuthorization-B_TFUlua.js';
6
+ import { S as SpaceHosting, c as SignStrategy, a as NodeUserAuthorization, P as PreparedOpenKeyAuthorization } from './NodeUserAuthorization-D41H1_c0.js';
7
7
  import { P as PortableDelegation, S as SessionGrantProof, e as VerifiedSessionGrant } from './delegation-CeOWDnBB.js';
8
8
 
9
9
  /**
@@ -886,7 +886,7 @@ declare class TinyCloudNode {
886
886
  signIn(options?: SignInOptions): Promise<void>;
887
887
  /**
888
888
  * Fresh OpenKey sign-in. The callback receives the SDK's original SIWE and
889
- * session JWK before approval; the signed result is verified against those
889
+ * public session JWK before approval; the signed result is verified against those
890
890
  * bytes before the network session or replica stamp is committed.
891
891
  */
892
892
  signInWithOpenKey(authorizeFn: Parameters<NodeUserAuthorization["signInWithOpenKey"]>[0], options?: Parameters<NodeUserAuthorization["signInWithOpenKey"]>[1]): Promise<void>;
@@ -1,7 +1,7 @@
1
1
  import { ReplicationOptions, PermissionEntry, TinyCloudSession, KVReplicaStorage, ServiceContext, IWasmBindings, WasmRecapEntry } from '@tinycloud/sdk-core';
2
2
  import { ReplicaConsentAnchor, AuthorityRefusal, ReplicationAuthority } from '@tinycloud/sdk-services';
3
3
  import { ReplicaLocalEraseOutcome, ReplicaPurgeLocalCopyResult, ReplicaPurgeTrigger, ReplicaPurgeFailedEvent, ReplicaSessionStamp, ReplicaDenyInput } from '@tinycloud/sdk-services/kv/replication';
4
- import { T as TinyCloudNode } from './TinyCloudNode-Brcu8QoX.cjs';
4
+ import { T as TinyCloudNode } from './TinyCloudNode-B0pKoTaw.cjs';
5
5
 
6
6
  /** Constructor-time validation; the space-dependent secrets check runs at sign-in and open. */
7
7
  declare function assertValidReplicationConfig(replication: (ReplicationOptions & {
@@ -1,7 +1,7 @@
1
1
  import { ReplicationOptions, PermissionEntry, TinyCloudSession, KVReplicaStorage, ServiceContext, IWasmBindings, WasmRecapEntry } from '@tinycloud/sdk-core';
2
2
  import { ReplicaConsentAnchor, AuthorityRefusal, ReplicationAuthority } from '@tinycloud/sdk-services';
3
3
  import { ReplicaLocalEraseOutcome, ReplicaPurgeLocalCopyResult, ReplicaPurgeTrigger, ReplicaPurgeFailedEvent, ReplicaSessionStamp, ReplicaDenyInput } from '@tinycloud/sdk-services/kv/replication';
4
- import { T as TinyCloudNode } from './TinyCloudNode-DBJUnsMN.js';
4
+ import { T as TinyCloudNode } from './TinyCloudNode-DvzCZgJX.js';
5
5
 
6
6
  /** Constructor-time validation; the space-dependent secrets check runs at sign-in and open. */
7
7
  declare function assertValidReplicationConfig(replication: (ReplicationOptions & {