@calimero-network/mero-js 26.2.2 → 26.4.0

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.
@@ -68,7 +68,7 @@ const EMPTY_READS = {
68
68
  * that administers the namespace (#4400, rc.77), so they go to the relay.
69
69
  */
70
70
  const NODE_ONLY = new Set([
71
- 'upgradeGroup', 'retryGroupUpgrade', 'abortMigration', 'installApplication', 'installDevApplication',
71
+ 'upgradeGroup', 'retryGroupUpgrade', 'activateGroupUpgrade', 'abortMigration', 'installApplication', 'installDevApplication',
72
72
  'uninstallApplication', 'generateContextIdentity', 'deleteContext',
73
73
  // A node's leaveContext is a local opt-out (a tombstone, its own identity rows)
74
74
  // and publishes nothing; an account has nothing local to opt out of, and
@@ -1,5 +1,5 @@
1
1
  import { HttpClient } from '../http-client/index.js';
2
- import type { HealthStatus, ReadinessStatus, AdminAuthStatus, InstallApplicationRequest, InstallApplicationResponseData, InstallDevApplicationRequest, UninstallApplicationResponseData, ListApplicationsResponseData, GetApplicationResponseData, ApplicationVersionEntry, GetApplicationAbiResponseData, GetLatestVersionResponseData, ListPackagesResponseData, ListVersionsResponseData, CreateContextRequest, CreateContextResponseData, DeleteContextResponseData, GetContextsResponseData, Context, GenerateContextIdentityResponseData, GetContextIdentitiesResponseData, JoinContextResponseData, JoinSubgroupInheritanceResponseData, ContextGroupResponseData, ContextStorageResponseData, UpdateContextApplicationRequest, ResyncContextRequest, ResyncContextResponseData, ContextsWithExecutorsResponseData, UploadBlobRequest, UploadBlobResponseData, DeleteBlobResponseData, ListBlobsResponseData, GetBlobInfoResponseData, BlobReadOptions, CreateContextAliasRequest, CreateApplicationAliasRequest, CreateDeviceAliasRequest, CreateAliasResponseData, LookupAliasResponseData, DeleteAliasResponseData, ListAliasesResponseData, ListNamespacesResponseData, CreateNamespaceRequest, CreateNamespaceResponseData, DeleteNamespaceResponseData, CreateNamespaceInvitationRequest, CreateNamespaceInvitationResponseData, CreateRecursiveInvitationResponseData, JoinNamespaceRequest, JoinNamespaceResponseData, CreateGroupInNamespaceRequest, CreateGroupInNamespaceResponseData, SubgroupEntry, Namespace, NodeIdentity, AccountPairInitRequest, AccountPairInitResponseData, AccountPairCompleteRequest, AccountPairCompleteResponseData, AccountSignWithRootRequest, AccountSignWithRootResponseData, RelinkDeviceRequest, RelinkDeviceResponseData, RescopeDeviceRequest, RescopeDeviceResponseData, LabelDeviceRequest, LabelDeviceResponseData, AccountDeviceEntry, AccountApplicationEntry, RevokeAccountDeviceRequest, LinkAccountDeviceRequest, LinkAccountDeviceResponseData, RevokeAccountDeviceResponseData, MemberDevicesEntry, ListMemberDevicesOptions, GroupInfoResponseData, CreateGroupRequest, CreateGroupResponseData, DeleteGroupResponseData, ListGroupMembersResponseData, ListGroupContextsResponseData, AddGroupMembersRequest, RemoveGroupMembersRequest, UpdateMemberRoleRequest, MemberCapabilities, SetMemberCapabilitiesRequest, SetDefaultCapabilitiesRequest, SetMemberAutoFollowRequest, SetSubgroupVisibilityRequest, SetTeeAdmissionPolicyRequest, GetTeeAdmissionPolicyResponseData, SetTeeAuthoringPolicyRequest, TransferOwnershipRequest, ChangeNamespaceAdminRequest, OwnerDeleteGroupRequest, RootGuardedOpRequest, SetGroupMetadataRequest, SetMemberMetadataRequest, SetContextMetadataRequest, MetadataRecord, SyncGroupResponseData, UpgradeGroupRequest, UpgradeGroupResponseData, GroupUpgradeStatusResponseData, MigrationStatus, NamespaceRevokedDevices, CascadeStatusEntry, RetryGroupUpgradeResponseData, ReparentGroupRequest, ReparentGroupResponseData, IssueOwnershipProofRequest, IssueNamespaceOwnershipProofRequest, IssueOwnershipProofResponseData, CreateGroupInvitationRequest, CreateGroupInvitationResponseData, CreateRecursiveGroupInvitationResponseData, JoinGroupRequest, JoinGroupResponseData, TeeInfoResponseData, TeeAttestRequest, TeeAttestResponseData, PerformIntentRequest, PerformIntentResponseData, IntentRelayInfo, QueryContextRequest, QueryContextResponseData, ListMemberDevicesResponseData, SealToAccountRequest, SealedEnvelope, AdmitJoinRequest, AdmitJoinResponseData } from './admin-types.js';
2
+ import type { HealthStatus, ReadinessStatus, AdminAuthStatus, InstallApplicationRequest, InstallApplicationResponseData, InstallDevApplicationRequest, UninstallApplicationResponseData, ListApplicationsResponseData, GetApplicationResponseData, ApplicationVersionEntry, GetApplicationAbiResponseData, GetLatestVersionResponseData, ListPackagesResponseData, ListVersionsResponseData, CreateContextRequest, CreateContextResponseData, DeleteContextResponseData, GetContextsResponseData, Context, GenerateContextIdentityResponseData, GetContextIdentitiesResponseData, JoinContextResponseData, JoinSubgroupInheritanceResponseData, ContextGroupResponseData, ContextStorageResponseData, UpdateContextApplicationRequest, ResyncContextRequest, ResyncContextResponseData, ContextsWithExecutorsResponseData, UploadBlobRequest, UploadBlobResponseData, DeleteBlobResponseData, ListBlobsResponseData, GetBlobInfoResponseData, BlobReadOptions, CreateContextAliasRequest, CreateApplicationAliasRequest, CreateDeviceAliasRequest, CreateAliasResponseData, LookupAliasResponseData, DeleteAliasResponseData, ListAliasesResponseData, ListNamespacesResponseData, CreateNamespaceRequest, CreateNamespaceResponseData, DeleteNamespaceResponseData, CreateNamespaceInvitationRequest, CreateNamespaceInvitationResponseData, CreateRecursiveInvitationResponseData, JoinNamespaceRequest, JoinNamespaceResponseData, CreateGroupInNamespaceRequest, CreateGroupInNamespaceResponseData, SubgroupEntry, Namespace, NodeIdentity, AccountPairInitRequest, AccountPairInitResponseData, AccountPairCompleteRequest, AccountPairCompleteResponseData, AccountSignWithRootRequest, AccountSignWithRootResponseData, RelinkDeviceRequest, RelinkDeviceResponseData, RescopeDeviceRequest, RescopeDeviceResponseData, LabelDeviceRequest, LabelDeviceResponseData, AccountDeviceEntry, AccountApplicationEntry, RevokeAccountDeviceRequest, LinkAccountDeviceRequest, LinkAccountDeviceResponseData, RevokeAccountDeviceResponseData, MemberDevicesEntry, ListMemberDevicesOptions, GroupInfoResponseData, CreateGroupRequest, CreateGroupResponseData, DeleteGroupResponseData, ListGroupMembersResponseData, ListGroupContextsResponseData, AddGroupMembersRequest, RemoveGroupMembersRequest, UpdateMemberRoleRequest, MemberCapabilities, SetMemberCapabilitiesRequest, SetDefaultCapabilitiesRequest, SetMemberAutoFollowRequest, SetSubgroupVisibilityRequest, SetTeeAdmissionPolicyRequest, GetTeeAdmissionPolicyResponseData, SetTeeAuthoringPolicyRequest, TransferOwnershipRequest, ChangeNamespaceAdminRequest, OwnerDeleteGroupRequest, RootGuardedOpRequest, SetGroupMetadataRequest, SetMemberMetadataRequest, SetContextMetadataRequest, MetadataRecord, SyncGroupResponseData, ActivateGroupUpgradeRequest, ActivateGroupUpgradeResponseData, UpgradeGroupRequest, UpgradeGroupResponseData, GroupUpgradeStatusResponseData, MigrationStatus, NamespaceRevokedDevices, CascadeStatusEntry, RetryGroupUpgradeResponseData, ReparentGroupRequest, ReparentGroupResponseData, IssueOwnershipProofRequest, IssueNamespaceOwnershipProofRequest, IssueOwnershipProofResponseData, CreateGroupInvitationRequest, CreateGroupInvitationResponseData, CreateRecursiveGroupInvitationResponseData, JoinGroupRequest, JoinGroupResponseData, TeeInfoResponseData, TeeAttestRequest, TeeAttestResponseData, PerformIntentRequest, PerformIntentResponseData, IntentRelayInfo, QueryContextRequest, QueryContextResponseData, ListMemberDevicesResponseData, SealToAccountRequest, SealedEnvelope, AdmitJoinRequest, AdmitJoinResponseData } from './admin-types.js';
3
3
  import { type RedeemOutcome } from './redeem-invitation.js';
4
4
  /**
5
5
  * Compare two version strings by SemVer 2.0 precedence, ascending: negative if
@@ -598,6 +598,8 @@ export declare class AdminApiClient {
598
598
  listNamespaceRevokedDevices(namespaceId: string): Promise<NamespaceRevokedDevices>;
599
599
  /** Per-group cascade-migration snapshots for a namespace. */
600
600
  getCascadeStatus(namespaceId: string): Promise<CascadeStatusEntry[]>;
601
+ /** Switch this node's contexts in a namespace onto its stored upgrade target; 409 if an `expected*` guard differs. */
602
+ activateGroupUpgrade(namespaceId: string, request?: ActivateGroupUpgradeRequest): Promise<ActivateGroupUpgradeResponseData>;
601
603
  retryGroupUpgrade(groupId: string): Promise<RetryGroupUpgradeResponseData>;
602
604
  /** Move `childGroupId` under `request.newParentId`. */
603
605
  reparentGroup(childGroupId: string, request: ReparentGroupRequest): Promise<ReparentGroupResponseData>;
@@ -1075,6 +1075,10 @@ export class AdminApiClient {
1075
1075
  async getCascadeStatus(namespaceId) {
1076
1076
  return unwrap(await this.httpClient.get(`/admin-api/groups/${pathSegment(namespaceId)}/cascade-status`));
1077
1077
  }
1078
+ /** Switch this node's contexts in a namespace onto its stored upgrade target; 409 if an `expected*` guard differs. */
1079
+ async activateGroupUpgrade(namespaceId, request = {}) {
1080
+ return unwrap(await this.httpClient.post(`/admin-api/groups/${pathSegment(namespaceId)}/upgrade/activate`, request));
1081
+ }
1078
1082
  async retryGroupUpgrade(groupId) {
1079
1083
  return unwrap(await this.httpClient.post(`/admin-api/groups/${pathSegment(groupId)}/upgrade/retry`, {}));
1080
1084
  }
@@ -1699,6 +1699,9 @@ export interface UpgradeGroupRequest {
1699
1699
  * declared-migration or downgrade refusal. Wire name is camelCase passthrough;
1700
1700
  * older nodes ignore the unknown field. Server default: false. */
1701
1701
  forceCodeOnly?: boolean;
1702
+ /** Publish without first trialling the migration on the admin's own contexts.
1703
+ * Server default: false, so a migration that fails the trial is refused with a 409. */
1704
+ skipTrial?: boolean;
1702
1705
  }
1703
1706
  export interface UpgradeGroupResponseData {
1704
1707
  groupId: string;
@@ -1706,9 +1709,33 @@ export interface UpgradeGroupResponseData {
1706
1709
  localContextsTotal?: number;
1707
1710
  localContextsSwapped?: number;
1708
1711
  localContextsFailed?: number;
1712
+ contextsTrialled?: number;
1713
+ contextsNotHeld?: number;
1709
1714
  }
1710
1715
  export type GroupUpgradeStatusResponseData = GroupUpgradeStatus | null;
1711
1716
  export type RetryGroupUpgradeResponseData = UpgradeGroupResponseData;
1717
+ export interface ActivateGroupUpgradeRequest {
1718
+ /** Refuse with 409 unless this is the namespace's stored target application. */
1719
+ expectedApplicationId?: string;
1720
+ /** Refuse with 409 unless this is the target release's manifest version
1721
+ * (application ids do not change between versions). */
1722
+ expectedVersion?: string;
1723
+ }
1724
+ export interface ActivateGroupUpgradeFailedContext {
1725
+ contextId: string;
1726
+ error: string;
1727
+ /** False when the switch itself failed (a migration or load); a retry repeats it. */
1728
+ retryable: boolean;
1729
+ }
1730
+ export interface ActivateGroupUpgradeResponseData {
1731
+ targetApplicationId: string;
1732
+ /** Contexts this call moved to the target; 0 when all were current. */
1733
+ switchedContexts: number;
1734
+ /** Held deltas replayed into the namespace's contexts. */
1735
+ replayedDeltas: number;
1736
+ /** Calling again retries only these. */
1737
+ failedContexts: ActivateGroupUpgradeFailedContext[];
1738
+ }
1712
1739
  export interface ReparentGroupRequest {
1713
1740
  /** 64-char id of the destination parent group. */
1714
1741
  newParentId: string;