@claudian-collab/protocol 3.0.0 → 3.1.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.
package/README.md CHANGED
@@ -62,16 +62,23 @@ part of the public surface.
62
62
 
63
63
  Package SemVer, canonical wire version, and Cloud binding version are independent concepts.
64
64
 
65
- - **Package version** (this `package.json`): `3.0.0`. Patch releases preserve
65
+ - **Package version** (this `package.json`): `3.1.0`. Patch releases preserve
66
66
  every existing public declaration and runtime behavior baseline. Minor
67
67
  releases may add backward-compatible API. Removing or changing an existing
68
68
  declaration, export, runtime behavior, codec, error, limit, ref rule,
69
- operation, or compatibility rule requires a major release. Package 3 and wire 6 add an exact empty transfer-claim batch for a Project whose only Member is the already-bound Host. The package version never signals wire compatibility by itself.
69
+ operation, or compatibility rule requires a major release. An independently
70
+ proven additive control operation may use a package minor release without a
71
+ wire-version increase; existing operation declarations and fixtures must stay
72
+ exact. Package 3 and wire 6 support exact transfer-claim batches and a
73
+ source-pinned target receipt verifier. The package version never signals wire
74
+ compatibility by itself.
70
75
  - **Wire version** (`COLLAB_PROTOCOL_VERSION`): currently `6`. The supported
71
76
  range is exactly `[6, 6]`. This is independent from Cloud binding version `2` and the existing application
72
- LAN control version `9`. Any change to an envelope, DTO, or operation
73
- payload shape, or to the operation inventory, is wire-breaking and requires
74
- a new wire-protocol version.
77
+ LAN control version `9`. Any change to an existing envelope, DTO, operation
78
+ payload shape, or operation definition is wire-breaking and requires a new
79
+ wire-protocol version. A strictly additive operation may remain on the
80
+ current wire version when the compatibility classifier proves that every
81
+ existing operation contract is unchanged.
75
82
  - **Cloud binding version** (`COLLAB_CLOUD_BINDING_VERSION`): currently `2`. It versions Cloud routes, bounded transfer streams, and capabilities independently from package and wire versions. Binding v1 and wire versions before v6 are unsupported rather than translated or dual-interpreted.
76
83
 
77
84
  ### Compatibility behavior
@@ -141,6 +141,15 @@ export interface GetProjectAuthorityTransferRequest {
141
141
  readonly projectId: CollabProjectId;
142
142
  readonly transferId: string;
143
143
  }
144
+ export type GetAuthorityTransferReceiptVerifierRequest = GetProjectAuthorityTransferRequest;
145
+ export interface CollabAuthorityTransferReceiptVerifier {
146
+ readonly projectId: CollabProjectId;
147
+ readonly receiptKeyId: string;
148
+ readonly receiptPublicKey: string;
149
+ readonly receiptPublicKeyEncoding: 'base64url-raw';
150
+ readonly signatureAlgorithm: 'ed25519';
151
+ readonly transferId: string;
152
+ }
144
153
  export interface RotateTransferredMembershipClaimsRequest extends CollabAuthorityMutationRequest {
145
154
  readonly expectedBatchRevision: number;
146
155
  readonly expectedBatchSha256: string;
@@ -209,7 +218,7 @@ export interface CancelProjectAuthorityTransferRequest extends CollabAuthorityMu
209
218
  readonly expectedPhase: CollabAuthorityTransferCancellablePhase;
210
219
  readonly transferId: string;
211
220
  }
212
- export declare const COLLAB_AUTHORITY_TRANSFER_OPERATIONS: readonly ["requestLanToCloudTransfer", "acceptLanToCloudTransferTarget", "beginLanToCloudTransfer", "getProjectAuthorityTransfer", "rotateTransferredMembershipClaims", "acknowledgeTransferredMembershipClaimBatch", "getTransferredMembershipClaim", "claimTransferredMembership", "acknowledgeTransferredMembershipClaimRedemption", "commitLanToCloudRelinquishment", "beginCloudToLanTransfer", "acceptCloudToLanTransferTarget", "reportCloudToLanTargetStaged", "confirmCloudToLanTargetActive", "cancelProjectAuthorityTransfer"];
221
+ export declare const COLLAB_AUTHORITY_TRANSFER_OPERATIONS: readonly ["requestLanToCloudTransfer", "acceptLanToCloudTransferTarget", "beginLanToCloudTransfer", "getProjectAuthorityTransfer", "getAuthorityTransferReceiptVerifier", "rotateTransferredMembershipClaims", "acknowledgeTransferredMembershipClaimBatch", "getTransferredMembershipClaim", "claimTransferredMembership", "acknowledgeTransferredMembershipClaimRedemption", "commitLanToCloudRelinquishment", "beginCloudToLanTransfer", "acceptCloudToLanTransferTarget", "reportCloudToLanTargetStaged", "confirmCloudToLanTargetActive", "cancelProjectAuthorityTransfer"];
213
222
  export type CollabAuthorityTransferOperation = typeof COLLAB_AUTHORITY_TRANSFER_OPERATIONS[number];
214
223
  export interface CollabAuthorityTransferOperationMap {
215
224
  readonly requestLanToCloudTransfer: {
@@ -228,6 +237,10 @@ export interface CollabAuthorityTransferOperationMap {
228
237
  readonly request: GetProjectAuthorityTransferRequest;
229
238
  readonly response: CollabAuthorityTransferStatus;
230
239
  };
240
+ readonly getAuthorityTransferReceiptVerifier: {
241
+ readonly request: GetAuthorityTransferReceiptVerifierRequest;
242
+ readonly response: CollabAuthorityTransferReceiptVerifier;
243
+ };
231
244
  readonly rotateTransferredMembershipClaims: {
232
245
  readonly request: RotateTransferredMembershipClaimsRequest;
233
246
  readonly response: CollabTransferredMembershipClaimBatch;
@@ -64,6 +64,7 @@ exports.COLLAB_AUTHORITY_TRANSFER_OPERATIONS = Object.freeze([
64
64
  'acceptLanToCloudTransferTarget',
65
65
  'beginLanToCloudTransfer',
66
66
  'getProjectAuthorityTransfer',
67
+ 'getAuthorityTransferReceiptVerifier',
67
68
  'rotateTransferredMembershipClaims',
68
69
  'acknowledgeTransferredMembershipClaimBatch',
69
70
  'getTransferredMembershipClaim',
@@ -627,6 +628,24 @@ function decodeGetProjectAuthorityTransfer(value) {
627
628
  transferId: token(source, 'transferId'),
628
629
  };
629
630
  }
631
+ function decodeAuthorityTransferReceiptVerifier(value) {
632
+ const source = exactRecord(value, 'receiptVerifier', [
633
+ 'projectId',
634
+ 'receiptKeyId',
635
+ 'receiptPublicKey',
636
+ 'receiptPublicKeyEncoding',
637
+ 'signatureAlgorithm',
638
+ 'transferId',
639
+ ]);
640
+ return {
641
+ projectId: token(source, 'projectId', CollabValidation_1.isCollabProjectId),
642
+ receiptKeyId: boundedString(source, 'receiptKeyId', 256),
643
+ receiptPublicKey: fixedBase64url(source, 'receiptPublicKey', 32),
644
+ receiptPublicKeyEncoding: literal(source, 'receiptPublicKeyEncoding', ['base64url-raw']),
645
+ signatureAlgorithm: literal(source, 'signatureAlgorithm', ['ed25519']),
646
+ transferId: token(source, 'transferId'),
647
+ };
648
+ }
630
649
  function decodeRotateTransferredMembershipClaims(value) {
631
650
  const source = exactRecord(value, 'request', [
632
651
  'expectedBatchRevision',
@@ -820,6 +839,8 @@ function decodeCollabAuthorityTransferOperationRequest(operation, value) {
820
839
  case 'acceptLanToCloudTransferTarget': return decodeAcceptLanToCloudTransferTarget(value);
821
840
  case 'beginLanToCloudTransfer': return decodeBeginLanToCloudTransfer(value);
822
841
  case 'getProjectAuthorityTransfer': return decodeGetProjectAuthorityTransfer(value);
842
+ case 'getAuthorityTransferReceiptVerifier':
843
+ return decodeGetProjectAuthorityTransfer(value);
823
844
  case 'rotateTransferredMembershipClaims':
824
845
  return decodeRotateTransferredMembershipClaims(value);
825
846
  case 'acknowledgeTransferredMembershipClaimBatch':
@@ -869,6 +890,8 @@ function decodeCollabAuthorityTransferOperationResponse(operation, value) {
869
890
  return decodeCollabTransferredMembershipRedemptionReceipt(value);
870
891
  case 'acknowledgeTransferredMembershipClaimRedemption':
871
892
  return decodeRedemptionAcknowledgement(value);
893
+ case 'getAuthorityTransferReceiptVerifier':
894
+ return decodeAuthorityTransferReceiptVerifier(value);
872
895
  default:
873
896
  return decodeCollabAuthorityTransferStatus(value);
874
897
  }
@@ -27,6 +27,7 @@ export declare const COLLAB_CONTROL_OPERATION_CODECS: Readonly<{
27
27
  readonly acceptLanToCloudTransferTarget: CollabControlOperationCodec<import("./CollabAuthorityTransfer").AcceptLanToCloudTransferTargetRequest, import("./CollabAuthorityTransfer").CollabAuthorityTransferStatus>;
28
28
  readonly beginLanToCloudTransfer: CollabControlOperationCodec<import("./CollabAuthorityTransfer").BeginLanToCloudTransferRequest, import("./CollabAuthorityTransfer").CollabAuthorityTransferStatus>;
29
29
  readonly getProjectAuthorityTransfer: CollabControlOperationCodec<import("./CollabAuthorityTransfer").GetProjectAuthorityTransferRequest, import("./CollabAuthorityTransfer").CollabAuthorityTransferStatus>;
30
+ readonly getAuthorityTransferReceiptVerifier: CollabControlOperationCodec<import("./CollabAuthorityTransfer").GetProjectAuthorityTransferRequest, import("./CollabAuthorityTransfer").CollabAuthorityTransferReceiptVerifier>;
30
31
  readonly rotateTransferredMembershipClaims: CollabControlOperationCodec<import("./CollabAuthorityTransfer").RotateTransferredMembershipClaimsRequest, import("./CollabAuthorityTransfer").CollabTransferredMembershipClaimBatch>;
31
32
  readonly acknowledgeTransferredMembershipClaimBatch: CollabControlOperationCodec<import("./CollabAuthorityTransfer").AcknowledgeTransferredMembershipClaimBatchRequest, import("./CollabAuthorityTransfer").CollabTransferredMembershipClaimCustodyReceipt>;
32
33
  readonly getTransferredMembershipClaim: CollabControlOperationCodec<import("./CollabAuthorityTransfer").GetTransferredMembershipClaimRequest, import("./CollabAuthorityTransfer").CollabTransferredMembershipClaim>;
@@ -81,6 +81,7 @@ exports.COLLAB_CONTROL_OPERATION_CODECS = Object.freeze({
81
81
  acceptLanToCloudTransferTarget: codec('acceptLanToCloudTransferTarget'),
82
82
  beginLanToCloudTransfer: codec('beginLanToCloudTransfer'),
83
83
  getProjectAuthorityTransfer: codec('getProjectAuthorityTransfer'),
84
+ getAuthorityTransferReceiptVerifier: codec('getAuthorityTransferReceiptVerifier'),
84
85
  rotateTransferredMembershipClaims: codec('rotateTransferredMembershipClaims'),
85
86
  acknowledgeTransferredMembershipClaimBatch: codec('acknowledgeTransferredMembershipClaimBatch'),
86
87
  getTransferredMembershipClaim: codec('getTransferredMembershipClaim'),
package/dist/index.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  export { COLLAB_LIMITS, COLLAB_MAIN_REF, COLLAB_MEMBER_REF_PREFIX, COLLAB_PROTOCOL_VERSION, } from './CollabConstants';
2
2
  export type { CollabProtocolVersion } from './CollabConstants';
3
3
  export { COLLAB_AUTHORITY_TRANSFER_CANCELLABLE_PHASES, COLLAB_AUTHORITY_TRANSFER_CANCELLATION_PHASES, COLLAB_AUTHORITY_TRANSFER_OPERATIONS, COLLAB_CLOUD_TO_LAN_TRANSFER_PHASES, COLLAB_LAN_TO_CLOUD_TRANSFER_PHASES, decodeCollabAuthorityRelinquishmentProof, decodeCollabAuthorityTransferOperationRequest, decodeCollabAuthorityTransferOperationResponse, decodeCollabAuthorityTransferProposal, decodeCollabAuthorityTransferStatus, decodeCollabTransferredMembershipClaim, decodeCollabTransferredMembershipClaimBatch, decodeCollabTransferredMembershipClaimCustodyReceipt, decodeCollabTransferredMembershipRedemptionReceipt, encodeCollabAuthorityRelinquishmentProofSigningInput, encodeCollabTransferredMembershipClaimBatchDigestInput, encodeCollabTransferredMembershipRedemptionReceiptSigningInput, } from './CollabAuthorityTransfer';
4
- export type { AcceptCloudToLanTransferTargetRequest, AcceptLanToCloudTransferTargetRequest, AcknowledgeTransferredMembershipClaimBatchRequest, AcknowledgeTransferredMembershipClaimRedemptionRequest, BeginCloudToLanTransferRequest, BeginLanToCloudTransferRequest, CancelProjectAuthorityTransferRequest, ClaimTransferredMembershipRequest, CollabAuthorityRelinquishmentProof, CollabAuthorityRelinquishmentProofSigningPayload, CollabAuthorityTransferCancellablePhase, CollabAuthorityTransferCancellationPhase, CollabAuthorityTransferDirection, CollabAuthorityTransferOperation, CollabAuthorityTransferOperationMap, CollabAuthorityTransferProposal, CollabAuthorityTransferStatus, CollabCloudToLanTransferPhase, CollabLanToCloudTransferPhase, CollabTransferredMembershipClaim, CollabTransferredMembershipClaimBatch, CollabTransferredMembershipClaimCustodyReceipt, CollabTransferredMembershipClaimItem, CollabTransferredMembershipRedemptionAcknowledgement, CollabTransferredMembershipRedemptionReceipt, CollabTransferredMembershipRedemptionReceiptSigningPayload, CommitLanToCloudRelinquishmentRequest, ConfirmCloudToLanTargetActiveRequest, GetProjectAuthorityTransferRequest, GetTransferredMembershipClaimRequest, ReportCloudToLanTargetStagedRequest, RequestLanToCloudTransferRequest, RotateTransferredMembershipClaimsRequest, } from './CollabAuthorityTransfer';
4
+ export type { AcceptCloudToLanTransferTargetRequest, AcceptLanToCloudTransferTargetRequest, AcknowledgeTransferredMembershipClaimBatchRequest, AcknowledgeTransferredMembershipClaimRedemptionRequest, BeginCloudToLanTransferRequest, BeginLanToCloudTransferRequest, CancelProjectAuthorityTransferRequest, ClaimTransferredMembershipRequest, CollabAuthorityRelinquishmentProof, CollabAuthorityRelinquishmentProofSigningPayload, CollabAuthorityTransferCancellablePhase, CollabAuthorityTransferCancellationPhase, CollabAuthorityTransferDirection, CollabAuthorityTransferOperation, CollabAuthorityTransferOperationMap, CollabAuthorityTransferProposal, CollabAuthorityTransferReceiptVerifier, CollabAuthorityTransferStatus, CollabCloudToLanTransferPhase, CollabLanToCloudTransferPhase, CollabTransferredMembershipClaim, CollabTransferredMembershipClaimBatch, CollabTransferredMembershipClaimCustodyReceipt, CollabTransferredMembershipClaimItem, CollabTransferredMembershipRedemptionAcknowledgement, CollabTransferredMembershipRedemptionReceipt, CollabTransferredMembershipRedemptionReceiptSigningPayload, CommitLanToCloudRelinquishmentRequest, ConfirmCloudToLanTargetActiveRequest, GetProjectAuthorityTransferRequest, GetAuthorityTransferReceiptVerifierRequest, GetTransferredMembershipClaimRequest, ReportCloudToLanTargetStagedRequest, RequestLanToCloudTransferRequest, RotateTransferredMembershipClaimsRequest, } from './CollabAuthorityTransfer';
5
5
  export { COLLAB_CHECKPOINT_ARTIFACT_LIMITS, COLLAB_CHECKPOINT_BACKUP_RECORD_KINDS, COLLAB_CHECKPOINT_PORTABLE_RECORD_KINDS, COLLAB_CHECKPOINT_PROFILES, COLLAB_PROJECT_CHECKPOINT_ARTIFACTS, COLLAB_PROJECT_CHECKPOINT_MANIFEST_SCHEMA_VERSION, COLLAB_PROJECT_COORDINATION_FORMAT_VERSION, COLLAB_PROTECTED_CLAIM_ENVELOPE_LIMITS, COLLAB_PROTECTED_CLAIM_ENVELOPE_VERSION, decodeCollabProjectCheckpointCoordinationNdjson, decodeCollabProjectCheckpointManifest, encodeCollabProjectCheckpointCoordinationNdjson, encodeCollabProjectCheckpointManifestCanonicalJson, encodeCollabProjectCheckpointManifestDigestInput, encodeCollabProtectedClaimAssociatedData, validateCollabProjectCheckpointConsistency, } from './CollabProjectCheckpoint';
6
6
  export type { CollabCheckpointArtifactFact, CollabCheckpointAuthorityVolumePairRecord, CollabCheckpointAuthority, CollabCheckpointAuthorityKind, CollabCheckpointBackupRecord, CollabCheckpointBackupRecordKind, CollabCheckpointCloudEventCursorRecord, CollabCheckpointCloudEventRecord, CollabCheckpointGitRef, CollabCheckpointIdempotencyResultRecord, CollabCheckpointLifecycleStateRecord, CollabCheckpointMemberRecord, CollabCheckpointObjectFormat, CollabCheckpointPortableRecord, CollabCheckpointPortableRecordKind, CollabCheckpointProfile, CollabCheckpointPrincipalBindingRecord, CollabCheckpointProjectRecord, CollabCheckpointProtectedClaimEnvelopeRecord, CollabCheckpointRepositoryPlacementRecord, CollabCheckpointRequestCommentRecord, CollabCheckpointRequestRecord, CollabCheckpointTicketCommentRecord, CollabCheckpointTicketMentionRecord, CollabCheckpointTicketRecord, CollabCheckpointTicketRelationRecord, CollabCheckpointSchemaCatalogRecord, CollabCheckpointServerCompatibilityRecord, CollabCheckpointTerminalResponderRecord, CollabCheckpointTerminalAcknowledgement, CollabCheckpointTombstoneRecord, CollabProjectCheckpointManifest, CollabProtectedClaimAssociatedData, } from './CollabProjectCheckpoint';
7
7
  export { COLLAB_PROJECT_RETIREMENT_OPERATIONS, COLLAB_PROJECT_RETIREMENT_RESULT_KINDS, decodeCollabProjectRetirementAcknowledgement, decodeCollabProjectRetirementOperationRequest, decodeCollabProjectRetirementOperationResponse, decodeCollabProjectRetirementRequest, decodeCollabProjectRetirementResult, } from './CollabProjectRetirement';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@claudian-collab/protocol",
3
- "version": "3.0.0",
3
+ "version": "3.1.0",
4
4
  "description": "Canonical Collab wire and Cloud binding contract for Claudian clients and servers.",
5
5
  "license": "MIT",
6
6
  "repository": {