@calimero-network/mero-js 26.9.1 → 26.10.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.
@@ -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, 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, CreateAccessGrantRequest, AccessGrant, CreatedAccessGrant, RevokeAccessGrantResponseData, AccessGrantCallRequest, AccessGrantCallResponseData } 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, OutboundApproval, SetOutboundApprovalRequest, SetOutboundApprovalResponseData, 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, CreateAccessGrantRequest, AccessGrant, CreatedAccessGrant, RevokeAccessGrantResponseData, AccessGrantCallRequest, AccessGrantCallResponseData } 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
@@ -219,6 +219,14 @@ export declare class AdminApiClient {
219
219
  getIntentRelay(contextId: string): Promise<IntentRelayInfo>;
220
220
  listNamespacesForApplication(applicationId: string): Promise<ListNamespacesResponseData>;
221
221
  createNamespace(request: CreateNamespaceRequest): Promise<CreateNamespaceResponseData>;
222
+ /** What `namespaceId` approves for outbound requests, one entry per publisher. */
223
+ listOutboundApprovals(namespaceId: string): Promise<OutboundApproval[]>;
224
+ /**
225
+ * Set what `namespaceId` approves for the publisher of `request.applicationId`
226
+ * to exactly `request.approve`: `'manifest'` or a list of URL prefixes, and
227
+ * `[]` revokes everything. Takes effect at the app's next run.
228
+ */
229
+ setOutboundApproval(namespaceId: string, request: SetOutboundApprovalRequest): Promise<SetOutboundApprovalResponseData>;
222
230
  deleteNamespace(namespaceId: string): Promise<DeleteNamespaceResponseData>;
223
231
  createNamespaceInvitation(namespaceId: string, request?: CreateNamespaceInvitationRequest): Promise<CreateNamespaceInvitationResponseData | CreateRecursiveInvitationResponseData>;
224
232
  /**
@@ -507,6 +507,20 @@ export class AdminApiClient {
507
507
  async createNamespace(request) {
508
508
  return unwrap(await this.httpClient.post('/admin-api/namespaces', request));
509
509
  }
510
+ /** What `namespaceId` approves for outbound requests, one entry per publisher. */
511
+ async listOutboundApprovals(namespaceId) {
512
+ return unwrap(await this.httpClient.get(`/admin-api/namespaces/${pathSegment(namespaceId)}/outbound-approvals`));
513
+ }
514
+ /**
515
+ * Set what `namespaceId` approves for the publisher of `request.applicationId`
516
+ * to exactly `request.approve`: `'manifest'` or a list of URL prefixes, and
517
+ * `[]` revokes everything. Takes effect at the app's next run.
518
+ */
519
+ async setOutboundApproval(namespaceId, request) {
520
+ return unwrap(await this.httpClient.put(`/admin-api/namespaces/${pathSegment(namespaceId)}/outbound-approvals`,
521
+ // Core declares this body `deny_unknown_fields`, so send exactly these.
522
+ { applicationId: request.applicationId, approve: request.approve }));
523
+ }
510
524
  async deleteNamespace(namespaceId) {
511
525
  // Core requires `Content-Type: application/json` on this DELETE even though
512
526
  // the body is always empty, so send the header and an empty JSON object.
@@ -672,11 +672,50 @@ export interface CreateNamespaceRequest {
672
672
  name?: string;
673
673
  /** Hex 32-byte blob id; pins the namespace to a specific installed version. */
674
674
  appKey?: string;
675
+ /**
676
+ * Approve outbound requests for the app's publisher in the new namespace, in
677
+ * the same call. Absent approves none, and the app's requests are refused
678
+ * (`NotApproved`) until an admin approves them.
679
+ */
680
+ approveOutbound?: OutboundSelection;
675
681
  }
676
682
  export interface CreateNamespaceResponseData {
677
683
  namespaceId: string;
678
684
  /** What the id was derived from. Absent on nodes that predate derived ids. */
679
685
  founding?: NamespaceFounding;
686
+ /** What the namespace approves for the app's publisher; present only when the request set `approveOutbound`. */
687
+ outboundApproval?: OutboundApproval;
688
+ }
689
+ /**
690
+ * Which outbound URL prefixes a namespace approves for an app's publisher:
691
+ * `'manifest'` approves every prefix the app's manifest declares, a list
692
+ * approves exactly those prefixes. The node rejects any other string.
693
+ */
694
+ export type OutboundSelection = 'manifest' | string[];
695
+ /**
696
+ * What a namespace approves for one publisher (the bundle signer): the URL
697
+ * prefixes its apps may send outbound requests under, and the prefixes an
698
+ * approver was shown.
699
+ */
700
+ export interface OutboundApproval {
701
+ /** The publisher's signer id (`did:key`). */
702
+ signer: string;
703
+ prefixes: string[];
704
+ reviewed: string[];
705
+ }
706
+ /**
707
+ * `PUT /admin-api/namespaces/:namespaceId/outbound-approvals` — set what the
708
+ * namespace approves for an installed app's publisher to exactly `approve`.
709
+ * `[]` revokes everything.
710
+ */
711
+ export interface SetOutboundApprovalRequest {
712
+ applicationId: string;
713
+ approve: OutboundSelection;
714
+ }
715
+ export interface SetOutboundApprovalResponseData extends OutboundApproval {
716
+ namespaceId: string;
717
+ /** `false` when nothing changed, so no op was published. */
718
+ published: boolean;
680
719
  }
681
720
  export interface DeleteNamespaceResponseData {
682
721
  isDeleted: boolean;
@@ -1768,6 +1807,10 @@ export interface UpgradeGroupRequest {
1768
1807
  /** Publish without first trialling the migration on the admin's own contexts.
1769
1808
  * Server default: false, so a migration that fails the trial is refused with a 409. */
1770
1809
  skipTrial?: boolean;
1810
+ /** Approve outbound requests for the target's publisher in the group's
1811
+ * namespace before upgrading. Added to what the namespace already approves;
1812
+ * a prefix the target declares that nobody approved waits (`AwaitingApproval`). */
1813
+ approveOutbound?: OutboundSelection;
1771
1814
  }
1772
1815
  export interface UpgradeGroupResponseData {
1773
1816
  groupId: string;
@@ -1777,6 +1820,8 @@ export interface UpgradeGroupResponseData {
1777
1820
  localContextsFailed?: number;
1778
1821
  contextsTrialled?: number;
1779
1822
  contextsNotHeld?: number;
1823
+ /** What the namespace approves for the target's publisher; present only when the request set `approveOutbound`. */
1824
+ outboundApproval?: OutboundApproval;
1780
1825
  }
1781
1826
  export type GroupUpgradeStatusResponseData = GroupUpgradeStatus | null;
1782
1827
  export type RetryGroupUpgradeResponseData = UpgradeGroupResponseData;