@claudian-collab/protocol 4.0.0 → 4.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 +6 -6
- package/dist/CollabAuthorityTransfer.d.ts +34 -1
- package/dist/CollabAuthorityTransfer.js +94 -0
- package/dist/CollabCloudBinding.d.ts +1 -1
- package/dist/CollabCloudBinding.js +11 -11
- package/dist/CollabConstants.d.ts +1 -1
- package/dist/CollabConstants.js +1 -1
- package/dist/CollabControlOperationCodecs.d.ts +1 -0
- package/dist/CollabControlOperationCodecs.js +1 -0
- package/dist/esm/CollabAuthorityTransfer.mjs +92 -0
- package/dist/esm/CollabCloudBinding.mjs +11 -11
- package/dist/esm/CollabConstants.mjs +1 -1
- package/dist/esm/CollabControlOperationCodecs.mjs +1 -0
- package/dist/esm/index.mjs +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.js +5 -3
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -20,7 +20,7 @@ or compatibility rules.
|
|
|
20
20
|
- Shared limits that client and server must agree on (`COLLAB_LIMITS`)
|
|
21
21
|
- Protocol-version negotiation (`COLLAB_PROTOCOL_VERSION`, envelope decoding)
|
|
22
22
|
- Canonical Project checkpoint profiles, logical records, authority-generation transfer, exact membership claims, target-signed redemption receipts, offline backup operational continuity, and Project retirement contracts
|
|
23
|
-
- Cloud binding
|
|
23
|
+
- Cloud binding v4 route construction/matching, bounded checkpoint streams, capability negotiation, strict success/error envelopes, private-development bootstrap, Project snapshot, and redacted event contracts
|
|
24
24
|
- Markdown-derived Ticket-reference and Member-mention semantics shared by
|
|
25
25
|
client rendering and authority derivation
|
|
26
26
|
|
|
@@ -37,7 +37,7 @@ fixed part of the detail so the whole detail stays within
|
|
|
37
37
|
has one compatible final-serialization limit. Request comments and Ticket
|
|
38
38
|
accepted relations also have shared authority-enforced total limits; summary
|
|
39
39
|
counts let complete consumers reject partial or cross-snapshot assembly.
|
|
40
|
-
Cloud binding
|
|
40
|
+
Cloud binding v4 retains the authority-neutral Project snapshot, nine redacted durable event kinds plus `snapshot.required`, eighteen capability tokens, the exact ordinary Project/Git route catalog, bounded authority-transfer artifact routes, and six private-development bootstrap bindings. Wire v8 adds target-confirmed Cloud-to-LAN invalidation and cleanup to the existing authority-transfer contract. Its domain-separated Ed25519 proof binds the exact target Member, source and target generations, checkpoint, stage, current claim batch when present, and cleanup digest; Manager cancellation, timeout, disconnect, or target absence does not prove cleanup. The shared checkpoint container is exactly `checkpoint.json`, `coordination.ndjson`, and `repository.bundle`; authority-transfer and export use wire-visible coordination format v1, and offline backup uses format v3. Portable profiles exclude engine storage, paths, credentials, tokens, private keys, and operational refs, and backups exclude plaintext invitation secrets, raw claims, and private keys. Existing LAN Join, invitation, endpoint, membership lifecycle, Host-transfer, snapshot, event, and HTTP bindings remain independently application-owned; the dedicated LAN authority-transfer transport binds shared payloads without creating another shared operation registry.
|
|
41
41
|
|
|
42
42
|
Backup coordination artifacts are limited to 256 MiB of actual UTF-8 bytes, including the final newline. The decoder, encoder, and consistency checker apply this same inclusive limit without rewriting principals into an intermediate format. Valid current-format artifacts at the limit are accepted; an additional byte is rejected.
|
|
43
43
|
|
|
@@ -64,9 +64,9 @@ part of the public surface.
|
|
|
64
64
|
|
|
65
65
|
Package SemVer, canonical wire version, and Cloud binding version are independent concepts.
|
|
66
66
|
|
|
67
|
-
- **Package version** (this `package.json`): `4.
|
|
68
|
-
- **Wire version** (`COLLAB_PROTOCOL_VERSION`): currently `
|
|
69
|
-
- **Cloud binding version** (`COLLAB_CLOUD_BINDING_VERSION`): currently `
|
|
67
|
+
- **Package version** (this `package.json`): `4.1.0`. Behavior-preserving implementation refactors and reviewed compatible defect corrections may use a patch release when public declarations, runtime exports, and accepted wire/binding semantics remain unchanged. Minor releases may add backward-compatible API. Removing or incompatibly changing an existing declaration, export, runtime behavior, codec, error, limit, ref rule, operation, or compatibility rule requires a major release. Package API SemVer is classified independently from the wire and Cloud binding contracts, but a compatible package addition cannot exempt a changed wire contract from a wire-version increase or a changed Cloud binding contract from a binding-version increase. The package version never signals wire compatibility by itself.
|
|
68
|
+
- **Wire version** (`COLLAB_PROTOCOL_VERSION`): currently `8`. The supported range is exactly `[8, 8]`. This is independent from Cloud binding version `4` and the application-owned LAN bindings. Any change to an existing envelope, DTO, operation payload shape, or operation definition requires a new wire-protocol version. This includes additive operations: every wire-contract change increases the canonical wire version.
|
|
69
|
+
- **Cloud binding version** (`COLLAB_CLOUD_BINDING_VERSION`): currently `4`. It versions Cloud routes, bounded transfer streams, and capabilities independently from package and wire versions. Every Cloud binding-contract change increases this version. Bindings before v4 and wire versions before v8 are unsupported rather than translated or dual-interpreted.
|
|
70
70
|
|
|
71
71
|
### Compatibility behavior
|
|
72
72
|
|
|
@@ -85,7 +85,7 @@ Compatibility is tested with executable fixtures in this package
|
|
|
85
85
|
(`tests/`), and cross-repository contract fixtures pin client and server to
|
|
86
86
|
the same behavior.
|
|
87
87
|
|
|
88
|
-
The compatibility snapshot also fingerprints implementation tokens. Those fingerprints detect edits but cannot establish whether behavior changed. A reviewed implementation-only refactor or approved compatible defect correction uses `compatibility-review.json`, generated with `npm run check:compatibility -- --base <base-sha> --record-implementation-only-review "<reviewed reason>"` after updating the generated snapshot and characterizing the public seams.
|
|
88
|
+
The compatibility snapshot also fingerprints implementation tokens. Those fingerprints detect edits but cannot establish whether behavior changed. A reviewed implementation-only refactor or approved compatible defect correction uses `compatibility-review.json`, generated with `npm run check:compatibility -- --base <base-sha> --record-implementation-only-review "<reviewed reason>"` after updating the generated snapshot and characterizing the public seams. A reviewed versioned authority-transfer operation addition uses `--record-versioned-operation-addition-review` instead. That review kind independently requires additive wire and Cloud operation inventories, preserves every existing declaration and decoder case, rejects unrelated source changes, admits only new declarations and exports reachable from the new operation, and verifies the exact version-prefix migration. Either record binds the exact base and candidate snapshots, so later decoder or declaration drift fails closed; the publishing job repeats this check against the preceding main-reachable reviewed version tag. Missing or stale evidence cannot authorize a change, and the record never applies to another version or later edit merely because an earlier change was accepted. This review requirement is general, not a prelaunch or one-release compatibility exception, and it is not an automated proof of behavioral equivalence.
|
|
89
89
|
|
|
90
90
|
## Development
|
|
91
91
|
|
|
@@ -99,6 +99,29 @@ export type CollabAuthorityRelinquishmentProofSigningPayload = CollabAuthorityRe
|
|
|
99
99
|
export type CollabAuthorityRelinquishmentProof = CollabAuthorityRelinquishmentProofSigningPayload & {
|
|
100
100
|
readonly certificate: string;
|
|
101
101
|
};
|
|
102
|
+
export interface CollabCloudToLanTargetCleanupProofSigningPayload {
|
|
103
|
+
readonly batchRevision: number | null;
|
|
104
|
+
readonly batchSha256: string | null;
|
|
105
|
+
readonly checkpointSha256: string | null;
|
|
106
|
+
readonly cleanupSha256: string;
|
|
107
|
+
readonly invalidatedAt: CollabIsoTimestamp;
|
|
108
|
+
readonly operationIntentId: string;
|
|
109
|
+
readonly projectId: CollabProjectId;
|
|
110
|
+
readonly receiptKeyId: string;
|
|
111
|
+
readonly signatureAlgorithm: 'ed25519';
|
|
112
|
+
readonly sourceAuthority: CollabCheckpointAuthority & {
|
|
113
|
+
readonly kind: 'cloud';
|
|
114
|
+
};
|
|
115
|
+
readonly stageSha256: string | null;
|
|
116
|
+
readonly targetAuthority: CollabCheckpointAuthority & {
|
|
117
|
+
readonly kind: 'lan';
|
|
118
|
+
};
|
|
119
|
+
readonly targetHostMemberId: CollabMemberId;
|
|
120
|
+
readonly transferId: string;
|
|
121
|
+
}
|
|
122
|
+
export interface CollabCloudToLanTargetCleanupProof extends CollabCloudToLanTargetCleanupProofSigningPayload {
|
|
123
|
+
readonly signature: string;
|
|
124
|
+
}
|
|
102
125
|
export interface CollabAuthorityTransferStatus {
|
|
103
126
|
readonly batchRevision: number | null;
|
|
104
127
|
readonly batchSha256: string | null;
|
|
@@ -214,11 +237,15 @@ export interface ConfirmCloudToLanTargetActiveRequest extends CollabAuthorityMut
|
|
|
214
237
|
readonly targetActivationProof: string;
|
|
215
238
|
readonly transferId: string;
|
|
216
239
|
}
|
|
240
|
+
export interface ConfirmCloudToLanTargetInvalidatedRequest extends CollabAuthorityMutationRequest {
|
|
241
|
+
readonly proof: CollabCloudToLanTargetCleanupProof;
|
|
242
|
+
readonly transferId: string;
|
|
243
|
+
}
|
|
217
244
|
export interface CancelProjectAuthorityTransferRequest extends CollabAuthorityMutationRequest {
|
|
218
245
|
readonly expectedPhase: CollabAuthorityTransferCancellablePhase;
|
|
219
246
|
readonly transferId: string;
|
|
220
247
|
}
|
|
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"];
|
|
248
|
+
export declare const COLLAB_AUTHORITY_TRANSFER_OPERATIONS: readonly ["requestLanToCloudTransfer", "acceptLanToCloudTransferTarget", "beginLanToCloudTransfer", "getProjectAuthorityTransfer", "getAuthorityTransferReceiptVerifier", "rotateTransferredMembershipClaims", "acknowledgeTransferredMembershipClaimBatch", "getTransferredMembershipClaim", "claimTransferredMembership", "acknowledgeTransferredMembershipClaimRedemption", "commitLanToCloudRelinquishment", "beginCloudToLanTransfer", "acceptCloudToLanTransferTarget", "reportCloudToLanTargetStaged", "confirmCloudToLanTargetActive", "confirmCloudToLanTargetInvalidated", "cancelProjectAuthorityTransfer"];
|
|
222
249
|
export type CollabAuthorityTransferOperation = typeof COLLAB_AUTHORITY_TRANSFER_OPERATIONS[number];
|
|
223
250
|
export interface CollabAuthorityTransferOperationMap {
|
|
224
251
|
readonly requestLanToCloudTransfer: {
|
|
@@ -281,6 +308,10 @@ export interface CollabAuthorityTransferOperationMap {
|
|
|
281
308
|
readonly request: ConfirmCloudToLanTargetActiveRequest;
|
|
282
309
|
readonly response: CollabAuthorityTransferStatus;
|
|
283
310
|
};
|
|
311
|
+
readonly confirmCloudToLanTargetInvalidated: {
|
|
312
|
+
readonly request: ConfirmCloudToLanTargetInvalidatedRequest;
|
|
313
|
+
readonly response: CollabAuthorityTransferStatus;
|
|
314
|
+
};
|
|
284
315
|
readonly cancelProjectAuthorityTransfer: {
|
|
285
316
|
readonly request: CancelProjectAuthorityTransferRequest;
|
|
286
317
|
readonly response: CollabAuthorityTransferStatus;
|
|
@@ -295,6 +326,8 @@ export declare function encodeCollabTransferredMembershipRedemptionReceiptSignin
|
|
|
295
326
|
export declare function decodeCollabTransferredMembershipRedemptionReceipt(value: unknown): CollabTransferredMembershipRedemptionReceipt;
|
|
296
327
|
export declare function encodeCollabAuthorityRelinquishmentProofSigningInput(payload: CollabAuthorityRelinquishmentProofSigningPayload): string;
|
|
297
328
|
export declare function decodeCollabAuthorityRelinquishmentProof(value: unknown): CollabAuthorityRelinquishmentProof;
|
|
329
|
+
export declare function encodeCollabCloudToLanTargetCleanupProofSigningInput(payload: CollabCloudToLanTargetCleanupProofSigningPayload): string;
|
|
330
|
+
export declare function decodeCollabCloudToLanTargetCleanupProof(value: unknown): CollabCloudToLanTargetCleanupProof;
|
|
298
331
|
export declare function decodeCollabAuthorityTransferLifecycleFence(value: unknown): {
|
|
299
332
|
batchRevision: number | null;
|
|
300
333
|
batchSha256: string | null;
|
|
@@ -10,6 +10,8 @@ exports.encodeCollabTransferredMembershipRedemptionReceiptSigningInput = encodeC
|
|
|
10
10
|
exports.decodeCollabTransferredMembershipRedemptionReceipt = decodeCollabTransferredMembershipRedemptionReceipt;
|
|
11
11
|
exports.encodeCollabAuthorityRelinquishmentProofSigningInput = encodeCollabAuthorityRelinquishmentProofSigningInput;
|
|
12
12
|
exports.decodeCollabAuthorityRelinquishmentProof = decodeCollabAuthorityRelinquishmentProof;
|
|
13
|
+
exports.encodeCollabCloudToLanTargetCleanupProofSigningInput = encodeCollabCloudToLanTargetCleanupProofSigningInput;
|
|
14
|
+
exports.decodeCollabCloudToLanTargetCleanupProof = decodeCollabCloudToLanTargetCleanupProof;
|
|
13
15
|
exports.decodeCollabAuthorityTransferLifecycleFence = decodeCollabAuthorityTransferLifecycleFence;
|
|
14
16
|
exports.decodeCollabAuthorityTransferStatus = decodeCollabAuthorityTransferStatus;
|
|
15
17
|
exports.decodeCollabAuthorityTransferOperationRequest = decodeCollabAuthorityTransferOperationRequest;
|
|
@@ -75,6 +77,7 @@ exports.COLLAB_AUTHORITY_TRANSFER_OPERATIONS = Object.freeze([
|
|
|
75
77
|
'acceptCloudToLanTransferTarget',
|
|
76
78
|
'reportCloudToLanTargetStaged',
|
|
77
79
|
'confirmCloudToLanTargetActive',
|
|
80
|
+
'confirmCloudToLanTargetInvalidated',
|
|
78
81
|
'cancelProjectAuthorityTransfer',
|
|
79
82
|
]);
|
|
80
83
|
const SHA256_PATTERN = /^[0-9a-f]{64}$/u;
|
|
@@ -427,6 +430,79 @@ function decodeCollabAuthorityRelinquishmentProof(value) {
|
|
|
427
430
|
transferId: payload.transferId,
|
|
428
431
|
};
|
|
429
432
|
}
|
|
433
|
+
const TARGET_CLEANUP_PROOF_SIGNING_PAYLOAD_KEYS = [
|
|
434
|
+
'batchRevision',
|
|
435
|
+
'batchSha256',
|
|
436
|
+
'checkpointSha256',
|
|
437
|
+
'cleanupSha256',
|
|
438
|
+
'invalidatedAt',
|
|
439
|
+
'operationIntentId',
|
|
440
|
+
'projectId',
|
|
441
|
+
'receiptKeyId',
|
|
442
|
+
'signatureAlgorithm',
|
|
443
|
+
'sourceAuthority',
|
|
444
|
+
'stageSha256',
|
|
445
|
+
'targetAuthority',
|
|
446
|
+
'targetHostMemberId',
|
|
447
|
+
'transferId',
|
|
448
|
+
];
|
|
449
|
+
function cloudToLanTargetCleanupProofSigningPayload(source) {
|
|
450
|
+
const sourceAuthority = authority(source.sourceAuthority, 'sourceAuthority');
|
|
451
|
+
const targetAuthority = authority(source.targetAuthority, 'targetAuthority');
|
|
452
|
+
const checkpointSha256 = source.checkpointSha256 === null
|
|
453
|
+
? null
|
|
454
|
+
: sha256(source, 'checkpointSha256');
|
|
455
|
+
const stageSha256 = source.stageSha256 === null
|
|
456
|
+
? null
|
|
457
|
+
: sha256(source, 'stageSha256');
|
|
458
|
+
const batchRevision = source.batchRevision === null
|
|
459
|
+
? null
|
|
460
|
+
: positiveInteger(source, 'batchRevision');
|
|
461
|
+
const batchSha256 = source.batchSha256 === null
|
|
462
|
+
? null
|
|
463
|
+
: sha256(source, 'batchSha256');
|
|
464
|
+
if (sourceAuthority.kind !== 'cloud'
|
|
465
|
+
|| targetAuthority.kind !== 'lan'
|
|
466
|
+
|| targetAuthority.generation !== sourceAuthority.generation + 1
|
|
467
|
+
|| (stageSha256 !== null && checkpointSha256 === null)
|
|
468
|
+
|| (batchRevision === null) !== (batchSha256 === null)
|
|
469
|
+
|| (stageSha256 === null) !== (batchRevision === null))
|
|
470
|
+
throw invalidPayload('targetCleanupProof');
|
|
471
|
+
return {
|
|
472
|
+
batchRevision,
|
|
473
|
+
batchSha256,
|
|
474
|
+
checkpointSha256,
|
|
475
|
+
cleanupSha256: sha256(source, 'cleanupSha256'),
|
|
476
|
+
invalidatedAt: timestamp(source, 'invalidatedAt'),
|
|
477
|
+
operationIntentId: token(source, 'operationIntentId'),
|
|
478
|
+
projectId: token(source, 'projectId', CollabValidation_1.isCollabProjectId),
|
|
479
|
+
receiptKeyId: boundedString(source, 'receiptKeyId', 256),
|
|
480
|
+
signatureAlgorithm: literal(source, 'signatureAlgorithm', ['ed25519']),
|
|
481
|
+
sourceAuthority: sourceAuthority,
|
|
482
|
+
stageSha256,
|
|
483
|
+
targetAuthority: targetAuthority,
|
|
484
|
+
targetHostMemberId: token(source, 'targetHostMemberId', CollabValidation_1.isCollabMemberId),
|
|
485
|
+
transferId: token(source, 'transferId'),
|
|
486
|
+
};
|
|
487
|
+
}
|
|
488
|
+
function encodeCollabCloudToLanTargetCleanupProofSigningInput(payload) {
|
|
489
|
+
const source = exactRecord(payload, 'targetCleanupProofSigningPayload', TARGET_CLEANUP_PROOF_SIGNING_PAYLOAD_KEYS);
|
|
490
|
+
return JSON.stringify({
|
|
491
|
+
domain: 'claudian-collab.cloud-to-lan-target-cleanup-proof.v1',
|
|
492
|
+
payload: cloudToLanTargetCleanupProofSigningPayload(source),
|
|
493
|
+
});
|
|
494
|
+
}
|
|
495
|
+
function decodeCollabCloudToLanTargetCleanupProof(value) {
|
|
496
|
+
const source = exactRecord(value, 'targetCleanupProof', [
|
|
497
|
+
...TARGET_CLEANUP_PROOF_SIGNING_PAYLOAD_KEYS,
|
|
498
|
+
'signature',
|
|
499
|
+
]);
|
|
500
|
+
const payload = cloudToLanTargetCleanupProofSigningPayload(source);
|
|
501
|
+
return {
|
|
502
|
+
...payload,
|
|
503
|
+
signature: fixedBase64url(source, 'signature', 64),
|
|
504
|
+
};
|
|
505
|
+
}
|
|
430
506
|
const LAN_TO_CLOUD_PHASE_SET = new Set(exports.COLLAB_LAN_TO_CLOUD_TRANSFER_PHASES);
|
|
431
507
|
const CLOUD_TO_LAN_PHASE_SET = new Set(exports.COLLAB_CLOUD_TO_LAN_TRANSFER_PHASES);
|
|
432
508
|
const CANCELLATION_PHASE_SET = new Set(exports.COLLAB_AUTHORITY_TRANSFER_CANCELLATION_PHASES);
|
|
@@ -815,6 +891,22 @@ function decodeConfirmCloudToLanTargetActive(value) {
|
|
|
815
891
|
transferId,
|
|
816
892
|
};
|
|
817
893
|
}
|
|
894
|
+
function decodeConfirmCloudToLanTargetInvalidated(value) {
|
|
895
|
+
const source = exactRecord(value, 'request', [
|
|
896
|
+
'idempotencyKey',
|
|
897
|
+
'projectId',
|
|
898
|
+
'proof',
|
|
899
|
+
'transferId',
|
|
900
|
+
]);
|
|
901
|
+
const common = mutationFields(source);
|
|
902
|
+
const transferId = token(source, 'transferId');
|
|
903
|
+
const proof = decodeCollabCloudToLanTargetCleanupProof(source.proof);
|
|
904
|
+
if (proof.operationIntentId !== common.idempotencyKey
|
|
905
|
+
|| proof.projectId !== common.projectId
|
|
906
|
+
|| proof.transferId !== transferId)
|
|
907
|
+
throw invalidPayload('proof');
|
|
908
|
+
return { ...common, proof, transferId };
|
|
909
|
+
}
|
|
818
910
|
function decodeCancelProjectAuthorityTransfer(value) {
|
|
819
911
|
const source = exactRecord(value, 'request', [
|
|
820
912
|
'expectedPhase',
|
|
@@ -855,6 +947,8 @@ function decodeCollabAuthorityTransferOperationRequest(operation, value) {
|
|
|
855
947
|
case 'acceptCloudToLanTransferTarget': return decodeAcceptCloudToLanTransferTarget(value);
|
|
856
948
|
case 'reportCloudToLanTargetStaged': return decodeReportCloudToLanTargetStaged(value);
|
|
857
949
|
case 'confirmCloudToLanTargetActive': return decodeConfirmCloudToLanTargetActive(value);
|
|
950
|
+
case 'confirmCloudToLanTargetInvalidated':
|
|
951
|
+
return decodeConfirmCloudToLanTargetInvalidated(value);
|
|
858
952
|
case 'cancelProjectAuthorityTransfer': return decodeCancelProjectAuthorityTransfer(value);
|
|
859
953
|
}
|
|
860
954
|
})();
|
|
@@ -2,7 +2,7 @@ import { COLLAB_PROTOCOL_VERSION } from './CollabConstants';
|
|
|
2
2
|
import { CollabError, type CollabDiagnosticContext, type CollabErrorCode, type CollabRecoveryAction } from './CollabError';
|
|
3
3
|
import { COLLAB_PROJECT_CHECKPOINT_ARTIFACTS } from './CollabProjectCheckpoint';
|
|
4
4
|
import type { CollabIsoTimestamp, CollabProjectId } from './types';
|
|
5
|
-
export declare const COLLAB_CLOUD_BINDING_VERSION:
|
|
5
|
+
export declare const COLLAB_CLOUD_BINDING_VERSION: 4;
|
|
6
6
|
export declare const COLLAB_CLOUD_CAPABILITY_DOCUMENT_SCHEMA_VERSION: 2;
|
|
7
7
|
export declare const COLLAB_CLOUD_CAPABILITIES: readonly ["accept", "authority-transfer", "cloud-imported-membership-claims", "cloud-project-create", "cloud-project-invitations", "cloud-project-join", "cloud-project-leave", "cloud-project-manager-responsibility", "cloud-project-membership", "development-bootstrap", "git-receive-pack-personal-ref", "git-upload-pack", "project-checkpoint-export", "project-events", "project-retirement", "project-snapshot", "requests", "tickets"];
|
|
8
8
|
export type CollabCloudCapability = typeof COLLAB_CLOUD_CAPABILITIES[number];
|
|
@@ -23,7 +23,7 @@ const CollabControlOperationCodecs_1 = require("./CollabControlOperationCodecs")
|
|
|
23
23
|
const CollabError_1 = require("./CollabError");
|
|
24
24
|
const CollabValidation_1 = require("./CollabValidation");
|
|
25
25
|
const CollabProjectCheckpoint_1 = require("./CollabProjectCheckpoint");
|
|
26
|
-
exports.COLLAB_CLOUD_BINDING_VERSION =
|
|
26
|
+
exports.COLLAB_CLOUD_BINDING_VERSION = 4;
|
|
27
27
|
exports.COLLAB_CLOUD_CAPABILITY_DOCUMENT_SCHEMA_VERSION = 2;
|
|
28
28
|
exports.COLLAB_CLOUD_CAPABILITIES = Object.freeze([
|
|
29
29
|
'accept',
|
|
@@ -188,7 +188,7 @@ function collabCloudProjectOperationRoute(projectId, operation) {
|
|
|
188
188
|
assertProjectId(projectId);
|
|
189
189
|
if (!isCloudJsonOperation(operation))
|
|
190
190
|
invalidRoute();
|
|
191
|
-
return route('POST', `/
|
|
191
|
+
return route('POST', `/v4/projects/${projectId}/operations/${operation}`, {
|
|
192
192
|
kind: 'project-operation',
|
|
193
193
|
operation,
|
|
194
194
|
projectId,
|
|
@@ -198,7 +198,7 @@ function collabCloudProjectEventsRoute(projectId, afterSequence) {
|
|
|
198
198
|
assertProjectId(projectId);
|
|
199
199
|
if (!Number.isSafeInteger(afterSequence) || afterSequence < 0)
|
|
200
200
|
invalidRoute();
|
|
201
|
-
return route('GET', `/
|
|
201
|
+
return route('GET', `/v4/projects/${projectId}/events?afterSequence=${afterSequence}`, {
|
|
202
202
|
afterSequence,
|
|
203
203
|
kind: 'project-events',
|
|
204
204
|
projectId,
|
|
@@ -209,11 +209,11 @@ function collabCloudGitRoute(projectId, routeKind, service) {
|
|
|
209
209
|
if (routeKind === 'info-refs') {
|
|
210
210
|
if (service !== 'git-upload-pack' && service !== 'git-receive-pack')
|
|
211
211
|
invalidRoute();
|
|
212
|
-
return route('GET', `/
|
|
212
|
+
return route('GET', `/v4/projects/${projectId}/repository.git/info/refs?service=${service}`, { kind: 'git-info-refs', projectId, service });
|
|
213
213
|
}
|
|
214
214
|
if (service !== undefined)
|
|
215
215
|
invalidRoute();
|
|
216
|
-
return route('POST', `/
|
|
216
|
+
return route('POST', `/v4/projects/${projectId}/repository.git/${routeKind}`, {
|
|
217
217
|
kind: routeKind,
|
|
218
218
|
projectId,
|
|
219
219
|
});
|
|
@@ -224,7 +224,7 @@ function collabCloudAuthorityTransferArtifactRoute(projectId, transferId, direct
|
|
|
224
224
|
if (direction !== 'download' && direction !== 'upload'
|
|
225
225
|
|| !COLLAB_PROJECT_CHECKPOINT_ARTIFACTS_SET.has(artifact))
|
|
226
226
|
invalidRoute();
|
|
227
|
-
return route(direction === 'upload' ? 'PUT' : 'GET', `/
|
|
227
|
+
return route(direction === 'upload' ? 'PUT' : 'GET', `/v4/projects/${projectId}/authority-transfers/${transferId}/checkpoint/${artifact}`, {
|
|
228
228
|
artifact,
|
|
229
229
|
direction,
|
|
230
230
|
kind: 'authority-transfer-artifact',
|
|
@@ -237,7 +237,7 @@ function collabCloudProjectCheckpointExportArtifactRoute(projectId, exportId, ar
|
|
|
237
237
|
assertAttemptId(exportId);
|
|
238
238
|
if (!COLLAB_PROJECT_CHECKPOINT_ARTIFACTS_SET.has(artifact))
|
|
239
239
|
invalidRoute();
|
|
240
|
-
return route('GET', `/
|
|
240
|
+
return route('GET', `/v4/projects/${projectId}/checkpoint-exports/${exportId}/checkpoint/${artifact}`, {
|
|
241
241
|
artifact,
|
|
242
242
|
exportId,
|
|
243
243
|
kind: 'project-checkpoint-export-artifact',
|
|
@@ -249,7 +249,7 @@ function collabCloudProjectCheckpointExportRoute(projectId, exportId, operation)
|
|
|
249
249
|
assertAttemptId(exportId);
|
|
250
250
|
if (operation !== 'begin' && operation !== 'status')
|
|
251
251
|
invalidRoute();
|
|
252
|
-
return route(operation === 'begin' ? 'POST' : 'GET', `/
|
|
252
|
+
return route(operation === 'begin' ? 'POST' : 'GET', `/v4/projects/${projectId}/checkpoint-exports/${exportId}`, { exportId, kind: 'project-checkpoint-export', operation, projectId });
|
|
253
253
|
}
|
|
254
254
|
function decodeCollabCloudProjectCheckpointExportStatus(value) {
|
|
255
255
|
const source = exactRecord(value, 'checkpointExport', [
|
|
@@ -287,7 +287,7 @@ function decodeCollabCloudProjectCheckpointExportStatus(value) {
|
|
|
287
287
|
});
|
|
288
288
|
}
|
|
289
289
|
function collabDevelopmentBootstrapRoute(operation, attemptId) {
|
|
290
|
-
const base = '/
|
|
290
|
+
const base = '/v4/development/bootstrap/attempts';
|
|
291
291
|
if (operation === 'beginDevelopmentBootstrap') {
|
|
292
292
|
if (attemptId !== undefined)
|
|
293
293
|
invalidRoute();
|
|
@@ -346,7 +346,7 @@ function matchCollabCloudRoute(method, target) {
|
|
|
346
346
|
&& url.pathname === '/collab/capabilities'
|
|
347
347
|
&& exactQuery(url, []))
|
|
348
348
|
return { kind: 'capabilities' };
|
|
349
|
-
if (segments[0] === '
|
|
349
|
+
if (segments[0] === 'v4'
|
|
350
350
|
&& segments[1] === 'projects'
|
|
351
351
|
&& (0, CollabValidation_1.isCollabProjectId)(segments[2])) {
|
|
352
352
|
const projectId = segments[2];
|
|
@@ -425,7 +425,7 @@ function matchCollabCloudRoute(method, target) {
|
|
|
425
425
|
&& exactQuery(url, []))
|
|
426
426
|
return { kind: segments[4], projectId };
|
|
427
427
|
}
|
|
428
|
-
if (segments[0] !== '
|
|
428
|
+
if (segments[0] !== 'v4'
|
|
429
429
|
|| segments[1] !== 'development'
|
|
430
430
|
|| segments[2] !== 'bootstrap'
|
|
431
431
|
|| segments[3] !== 'attempts'
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export declare const COLLAB_PROTOCOL_VERSION:
|
|
1
|
+
export declare const COLLAB_PROTOCOL_VERSION: 8;
|
|
2
2
|
export declare const COLLAB_MAIN_REF: "refs/heads/main";
|
|
3
3
|
export declare const COLLAB_MEMBER_REF_PREFIX: "refs/heads/members/";
|
|
4
4
|
export declare const COLLAB_LIMITS: Readonly<{
|
package/dist/CollabConstants.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.COLLAB_LIMITS = exports.COLLAB_MEMBER_REF_PREFIX = exports.COLLAB_MAIN_REF = exports.COLLAB_PROTOCOL_VERSION = void 0;
|
|
4
|
-
exports.COLLAB_PROTOCOL_VERSION =
|
|
4
|
+
exports.COLLAB_PROTOCOL_VERSION = 8;
|
|
5
5
|
exports.COLLAB_MAIN_REF = 'refs/heads/main';
|
|
6
6
|
exports.COLLAB_MEMBER_REF_PREFIX = 'refs/heads/members/';
|
|
7
7
|
exports.COLLAB_LIMITS = Object.freeze({
|
|
@@ -56,6 +56,7 @@ export declare const COLLAB_CONTROL_OPERATION_CODECS: Readonly<{
|
|
|
56
56
|
readonly acceptCloudToLanTransferTarget: CollabControlOperationCodec<import("./CollabAuthorityTransfer").AcceptCloudToLanTransferTargetRequest, import("./CollabAuthorityTransfer").CollabAuthorityTransferStatus>;
|
|
57
57
|
readonly reportCloudToLanTargetStaged: CollabControlOperationCodec<import("./CollabAuthorityTransfer").ReportCloudToLanTargetStagedRequest, import("./CollabAuthorityTransfer").CollabTransferredMembershipClaimCustodyReceipt>;
|
|
58
58
|
readonly confirmCloudToLanTargetActive: CollabControlOperationCodec<import("./CollabAuthorityTransfer").ConfirmCloudToLanTargetActiveRequest, import("./CollabAuthorityTransfer").CollabAuthorityTransferStatus>;
|
|
59
|
+
readonly confirmCloudToLanTargetInvalidated: CollabControlOperationCodec<import("./CollabAuthorityTransfer").ConfirmCloudToLanTargetInvalidatedRequest, import("./CollabAuthorityTransfer").CollabAuthorityTransferStatus>;
|
|
59
60
|
readonly cancelProjectAuthorityTransfer: CollabControlOperationCodec<import("./CollabAuthorityTransfer").CancelProjectAuthorityTransferRequest, import("./CollabAuthorityTransfer").CollabAuthorityTransferStatus>;
|
|
60
61
|
readonly retireProject: CollabControlOperationCodec<import("./CollabProjectRetirement").CollabProjectRetirementRequest, import("./CollabProjectRetirement").CollabProjectRetirementResult>;
|
|
61
62
|
readonly acknowledgeProjectRetirement: CollabControlOperationCodec<import("./CollabProjectRetirement").CollabProjectRetirementAcknowledgementRequest, import("./CollabProjectRetirement").CollabProjectRetirementAcknowledgement>;
|
|
@@ -93,6 +93,7 @@ exports.COLLAB_CONTROL_OPERATION_CODECS = Object.freeze({
|
|
|
93
93
|
acceptCloudToLanTransferTarget: codec('acceptCloudToLanTransferTarget'),
|
|
94
94
|
reportCloudToLanTargetStaged: codec('reportCloudToLanTargetStaged'),
|
|
95
95
|
confirmCloudToLanTargetActive: codec('confirmCloudToLanTargetActive'),
|
|
96
|
+
confirmCloudToLanTargetInvalidated: codec('confirmCloudToLanTargetInvalidated'),
|
|
96
97
|
cancelProjectAuthorityTransfer: codec('cancelProjectAuthorityTransfer'),
|
|
97
98
|
retireProject: codec('retireProject'),
|
|
98
99
|
acknowledgeProjectRetirement: codec('acknowledgeProjectRetirement'),
|
|
@@ -59,6 +59,7 @@ export const COLLAB_AUTHORITY_TRANSFER_OPERATIONS = Object.freeze([
|
|
|
59
59
|
'acceptCloudToLanTransferTarget',
|
|
60
60
|
'reportCloudToLanTargetStaged',
|
|
61
61
|
'confirmCloudToLanTargetActive',
|
|
62
|
+
'confirmCloudToLanTargetInvalidated',
|
|
62
63
|
'cancelProjectAuthorityTransfer',
|
|
63
64
|
]);
|
|
64
65
|
const SHA256_PATTERN = /^[0-9a-f]{64}$/u;
|
|
@@ -411,6 +412,79 @@ export function decodeCollabAuthorityRelinquishmentProof(value) {
|
|
|
411
412
|
transferId: payload.transferId,
|
|
412
413
|
};
|
|
413
414
|
}
|
|
415
|
+
const TARGET_CLEANUP_PROOF_SIGNING_PAYLOAD_KEYS = [
|
|
416
|
+
'batchRevision',
|
|
417
|
+
'batchSha256',
|
|
418
|
+
'checkpointSha256',
|
|
419
|
+
'cleanupSha256',
|
|
420
|
+
'invalidatedAt',
|
|
421
|
+
'operationIntentId',
|
|
422
|
+
'projectId',
|
|
423
|
+
'receiptKeyId',
|
|
424
|
+
'signatureAlgorithm',
|
|
425
|
+
'sourceAuthority',
|
|
426
|
+
'stageSha256',
|
|
427
|
+
'targetAuthority',
|
|
428
|
+
'targetHostMemberId',
|
|
429
|
+
'transferId',
|
|
430
|
+
];
|
|
431
|
+
function cloudToLanTargetCleanupProofSigningPayload(source) {
|
|
432
|
+
const sourceAuthority = authority(source.sourceAuthority, 'sourceAuthority');
|
|
433
|
+
const targetAuthority = authority(source.targetAuthority, 'targetAuthority');
|
|
434
|
+
const checkpointSha256 = source.checkpointSha256 === null
|
|
435
|
+
? null
|
|
436
|
+
: sha256(source, 'checkpointSha256');
|
|
437
|
+
const stageSha256 = source.stageSha256 === null
|
|
438
|
+
? null
|
|
439
|
+
: sha256(source, 'stageSha256');
|
|
440
|
+
const batchRevision = source.batchRevision === null
|
|
441
|
+
? null
|
|
442
|
+
: positiveInteger(source, 'batchRevision');
|
|
443
|
+
const batchSha256 = source.batchSha256 === null
|
|
444
|
+
? null
|
|
445
|
+
: sha256(source, 'batchSha256');
|
|
446
|
+
if (sourceAuthority.kind !== 'cloud'
|
|
447
|
+
|| targetAuthority.kind !== 'lan'
|
|
448
|
+
|| targetAuthority.generation !== sourceAuthority.generation + 1
|
|
449
|
+
|| (stageSha256 !== null && checkpointSha256 === null)
|
|
450
|
+
|| (batchRevision === null) !== (batchSha256 === null)
|
|
451
|
+
|| (stageSha256 === null) !== (batchRevision === null))
|
|
452
|
+
throw invalidPayload('targetCleanupProof');
|
|
453
|
+
return {
|
|
454
|
+
batchRevision,
|
|
455
|
+
batchSha256,
|
|
456
|
+
checkpointSha256,
|
|
457
|
+
cleanupSha256: sha256(source, 'cleanupSha256'),
|
|
458
|
+
invalidatedAt: timestamp(source, 'invalidatedAt'),
|
|
459
|
+
operationIntentId: token(source, 'operationIntentId'),
|
|
460
|
+
projectId: token(source, 'projectId', isCollabProjectId),
|
|
461
|
+
receiptKeyId: boundedString(source, 'receiptKeyId', 256),
|
|
462
|
+
signatureAlgorithm: literal(source, 'signatureAlgorithm', ['ed25519']),
|
|
463
|
+
sourceAuthority: sourceAuthority,
|
|
464
|
+
stageSha256,
|
|
465
|
+
targetAuthority: targetAuthority,
|
|
466
|
+
targetHostMemberId: token(source, 'targetHostMemberId', isCollabMemberId),
|
|
467
|
+
transferId: token(source, 'transferId'),
|
|
468
|
+
};
|
|
469
|
+
}
|
|
470
|
+
export function encodeCollabCloudToLanTargetCleanupProofSigningInput(payload) {
|
|
471
|
+
const source = exactRecord(payload, 'targetCleanupProofSigningPayload', TARGET_CLEANUP_PROOF_SIGNING_PAYLOAD_KEYS);
|
|
472
|
+
return JSON.stringify({
|
|
473
|
+
domain: 'claudian-collab.cloud-to-lan-target-cleanup-proof.v1',
|
|
474
|
+
payload: cloudToLanTargetCleanupProofSigningPayload(source),
|
|
475
|
+
});
|
|
476
|
+
}
|
|
477
|
+
export function decodeCollabCloudToLanTargetCleanupProof(value) {
|
|
478
|
+
const source = exactRecord(value, 'targetCleanupProof', [
|
|
479
|
+
...TARGET_CLEANUP_PROOF_SIGNING_PAYLOAD_KEYS,
|
|
480
|
+
'signature',
|
|
481
|
+
]);
|
|
482
|
+
const payload = cloudToLanTargetCleanupProofSigningPayload(source);
|
|
483
|
+
return {
|
|
484
|
+
...payload,
|
|
485
|
+
signature: fixedBase64url(source, 'signature', 64),
|
|
486
|
+
};
|
|
487
|
+
}
|
|
414
488
|
const LAN_TO_CLOUD_PHASE_SET = new Set(COLLAB_LAN_TO_CLOUD_TRANSFER_PHASES);
|
|
415
489
|
const CLOUD_TO_LAN_PHASE_SET = new Set(COLLAB_CLOUD_TO_LAN_TRANSFER_PHASES);
|
|
416
490
|
const CANCELLATION_PHASE_SET = new Set(COLLAB_AUTHORITY_TRANSFER_CANCELLATION_PHASES);
|
|
@@ -799,6 +873,22 @@ function decodeConfirmCloudToLanTargetActive(value) {
|
|
|
799
873
|
transferId,
|
|
800
874
|
};
|
|
801
875
|
}
|
|
876
|
+
function decodeConfirmCloudToLanTargetInvalidated(value) {
|
|
877
|
+
const source = exactRecord(value, 'request', [
|
|
878
|
+
'idempotencyKey',
|
|
879
|
+
'projectId',
|
|
880
|
+
'proof',
|
|
881
|
+
'transferId',
|
|
882
|
+
]);
|
|
883
|
+
const common = mutationFields(source);
|
|
884
|
+
const transferId = token(source, 'transferId');
|
|
885
|
+
const proof = decodeCollabCloudToLanTargetCleanupProof(source.proof);
|
|
886
|
+
if (proof.operationIntentId !== common.idempotencyKey
|
|
887
|
+
|| proof.projectId !== common.projectId
|
|
888
|
+
|| proof.transferId !== transferId)
|
|
889
|
+
throw invalidPayload('proof');
|
|
890
|
+
return { ...common, proof, transferId };
|
|
891
|
+
}
|
|
802
892
|
function decodeCancelProjectAuthorityTransfer(value) {
|
|
803
893
|
const source = exactRecord(value, 'request', [
|
|
804
894
|
'expectedPhase',
|
|
@@ -839,6 +929,8 @@ export function decodeCollabAuthorityTransferOperationRequest(operation, value)
|
|
|
839
929
|
case 'acceptCloudToLanTransferTarget': return decodeAcceptCloudToLanTransferTarget(value);
|
|
840
930
|
case 'reportCloudToLanTargetStaged': return decodeReportCloudToLanTargetStaged(value);
|
|
841
931
|
case 'confirmCloudToLanTargetActive': return decodeConfirmCloudToLanTargetActive(value);
|
|
932
|
+
case 'confirmCloudToLanTargetInvalidated':
|
|
933
|
+
return decodeConfirmCloudToLanTargetInvalidated(value);
|
|
842
934
|
case 'cancelProjectAuthorityTransfer': return decodeCancelProjectAuthorityTransfer(value);
|
|
843
935
|
}
|
|
844
936
|
})();
|
|
@@ -3,7 +3,7 @@ import { COLLAB_CONTROL_OPERATION_CODECS, } from './CollabControlOperationCodecs
|
|
|
3
3
|
import { COLLAB_ERROR_CODES, CollabError, sanitizeCollabDiagnosticContext, } from './CollabError.mjs';
|
|
4
4
|
import { isCollabOpaqueId, isCollabProjectId, } from './CollabValidation.mjs';
|
|
5
5
|
import { COLLAB_CHECKPOINT_ARTIFACT_LIMITS, COLLAB_PROJECT_CHECKPOINT_ARTIFACTS, } from './CollabProjectCheckpoint.mjs';
|
|
6
|
-
export const COLLAB_CLOUD_BINDING_VERSION =
|
|
6
|
+
export const COLLAB_CLOUD_BINDING_VERSION = 4;
|
|
7
7
|
export const COLLAB_CLOUD_CAPABILITY_DOCUMENT_SCHEMA_VERSION = 2;
|
|
8
8
|
export const COLLAB_CLOUD_CAPABILITIES = Object.freeze([
|
|
9
9
|
'accept',
|
|
@@ -168,7 +168,7 @@ export function collabCloudProjectOperationRoute(projectId, operation) {
|
|
|
168
168
|
assertProjectId(projectId);
|
|
169
169
|
if (!isCloudJsonOperation(operation))
|
|
170
170
|
invalidRoute();
|
|
171
|
-
return route('POST', `/
|
|
171
|
+
return route('POST', `/v4/projects/${projectId}/operations/${operation}`, {
|
|
172
172
|
kind: 'project-operation',
|
|
173
173
|
operation,
|
|
174
174
|
projectId,
|
|
@@ -178,7 +178,7 @@ export function collabCloudProjectEventsRoute(projectId, afterSequence) {
|
|
|
178
178
|
assertProjectId(projectId);
|
|
179
179
|
if (!Number.isSafeInteger(afterSequence) || afterSequence < 0)
|
|
180
180
|
invalidRoute();
|
|
181
|
-
return route('GET', `/
|
|
181
|
+
return route('GET', `/v4/projects/${projectId}/events?afterSequence=${afterSequence}`, {
|
|
182
182
|
afterSequence,
|
|
183
183
|
kind: 'project-events',
|
|
184
184
|
projectId,
|
|
@@ -189,11 +189,11 @@ export function collabCloudGitRoute(projectId, routeKind, service) {
|
|
|
189
189
|
if (routeKind === 'info-refs') {
|
|
190
190
|
if (service !== 'git-upload-pack' && service !== 'git-receive-pack')
|
|
191
191
|
invalidRoute();
|
|
192
|
-
return route('GET', `/
|
|
192
|
+
return route('GET', `/v4/projects/${projectId}/repository.git/info/refs?service=${service}`, { kind: 'git-info-refs', projectId, service });
|
|
193
193
|
}
|
|
194
194
|
if (service !== undefined)
|
|
195
195
|
invalidRoute();
|
|
196
|
-
return route('POST', `/
|
|
196
|
+
return route('POST', `/v4/projects/${projectId}/repository.git/${routeKind}`, {
|
|
197
197
|
kind: routeKind,
|
|
198
198
|
projectId,
|
|
199
199
|
});
|
|
@@ -204,7 +204,7 @@ export function collabCloudAuthorityTransferArtifactRoute(projectId, transferId,
|
|
|
204
204
|
if (direction !== 'download' && direction !== 'upload'
|
|
205
205
|
|| !COLLAB_PROJECT_CHECKPOINT_ARTIFACTS_SET.has(artifact))
|
|
206
206
|
invalidRoute();
|
|
207
|
-
return route(direction === 'upload' ? 'PUT' : 'GET', `/
|
|
207
|
+
return route(direction === 'upload' ? 'PUT' : 'GET', `/v4/projects/${projectId}/authority-transfers/${transferId}/checkpoint/${artifact}`, {
|
|
208
208
|
artifact,
|
|
209
209
|
direction,
|
|
210
210
|
kind: 'authority-transfer-artifact',
|
|
@@ -217,7 +217,7 @@ export function collabCloudProjectCheckpointExportArtifactRoute(projectId, expor
|
|
|
217
217
|
assertAttemptId(exportId);
|
|
218
218
|
if (!COLLAB_PROJECT_CHECKPOINT_ARTIFACTS_SET.has(artifact))
|
|
219
219
|
invalidRoute();
|
|
220
|
-
return route('GET', `/
|
|
220
|
+
return route('GET', `/v4/projects/${projectId}/checkpoint-exports/${exportId}/checkpoint/${artifact}`, {
|
|
221
221
|
artifact,
|
|
222
222
|
exportId,
|
|
223
223
|
kind: 'project-checkpoint-export-artifact',
|
|
@@ -229,7 +229,7 @@ export function collabCloudProjectCheckpointExportRoute(projectId, exportId, ope
|
|
|
229
229
|
assertAttemptId(exportId);
|
|
230
230
|
if (operation !== 'begin' && operation !== 'status')
|
|
231
231
|
invalidRoute();
|
|
232
|
-
return route(operation === 'begin' ? 'POST' : 'GET', `/
|
|
232
|
+
return route(operation === 'begin' ? 'POST' : 'GET', `/v4/projects/${projectId}/checkpoint-exports/${exportId}`, { exportId, kind: 'project-checkpoint-export', operation, projectId });
|
|
233
233
|
}
|
|
234
234
|
export function decodeCollabCloudProjectCheckpointExportStatus(value) {
|
|
235
235
|
const source = exactRecord(value, 'checkpointExport', [
|
|
@@ -267,7 +267,7 @@ export function decodeCollabCloudProjectCheckpointExportStatus(value) {
|
|
|
267
267
|
});
|
|
268
268
|
}
|
|
269
269
|
export function collabDevelopmentBootstrapRoute(operation, attemptId) {
|
|
270
|
-
const base = '/
|
|
270
|
+
const base = '/v4/development/bootstrap/attempts';
|
|
271
271
|
if (operation === 'beginDevelopmentBootstrap') {
|
|
272
272
|
if (attemptId !== undefined)
|
|
273
273
|
invalidRoute();
|
|
@@ -326,7 +326,7 @@ export function matchCollabCloudRoute(method, target) {
|
|
|
326
326
|
&& url.pathname === '/collab/capabilities'
|
|
327
327
|
&& exactQuery(url, []))
|
|
328
328
|
return { kind: 'capabilities' };
|
|
329
|
-
if (segments[0] === '
|
|
329
|
+
if (segments[0] === 'v4'
|
|
330
330
|
&& segments[1] === 'projects'
|
|
331
331
|
&& isCollabProjectId(segments[2])) {
|
|
332
332
|
const projectId = segments[2];
|
|
@@ -405,7 +405,7 @@ export function matchCollabCloudRoute(method, target) {
|
|
|
405
405
|
&& exactQuery(url, []))
|
|
406
406
|
return { kind: segments[4], projectId };
|
|
407
407
|
}
|
|
408
|
-
if (segments[0] !== '
|
|
408
|
+
if (segments[0] !== 'v4'
|
|
409
409
|
|| segments[1] !== 'development'
|
|
410
410
|
|| segments[2] !== 'bootstrap'
|
|
411
411
|
|| segments[3] !== 'attempts'
|
|
@@ -89,6 +89,7 @@ export const COLLAB_CONTROL_OPERATION_CODECS = Object.freeze({
|
|
|
89
89
|
acceptCloudToLanTransferTarget: codec('acceptCloudToLanTransferTarget'),
|
|
90
90
|
reportCloudToLanTargetStaged: codec('reportCloudToLanTargetStaged'),
|
|
91
91
|
confirmCloudToLanTargetActive: codec('confirmCloudToLanTargetActive'),
|
|
92
|
+
confirmCloudToLanTargetInvalidated: codec('confirmCloudToLanTargetInvalidated'),
|
|
92
93
|
cancelProjectAuthorityTransfer: codec('cancelProjectAuthorityTransfer'),
|
|
93
94
|
retireProject: codec('retireProject'),
|
|
94
95
|
acknowledgeProjectRetirement: codec('acknowledgeProjectRetirement'),
|
package/dist/esm/index.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { COLLAB_LIMITS, COLLAB_MAIN_REF, COLLAB_MEMBER_REF_PREFIX, COLLAB_PROTOCOL_VERSION, } from './CollabConstants.mjs';
|
|
2
|
-
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.mjs';
|
|
2
|
+
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, decodeCollabCloudToLanTargetCleanupProof, decodeCollabTransferredMembershipClaim, decodeCollabTransferredMembershipClaimBatch, decodeCollabTransferredMembershipClaimCustodyReceipt, decodeCollabTransferredMembershipRedemptionReceipt, encodeCollabAuthorityRelinquishmentProofSigningInput, encodeCollabCloudToLanTargetCleanupProofSigningInput, encodeCollabTransferredMembershipClaimBatchDigestInput, encodeCollabTransferredMembershipRedemptionReceiptSigningInput, } from './CollabAuthorityTransfer.mjs';
|
|
3
3
|
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.mjs';
|
|
4
4
|
export { COLLAB_PROJECT_MEMBERSHIP_LIMITS, COLLAB_PROJECT_MEMBERSHIP_OPERATIONS, COLLAB_PROJECT_MEMBERSHIP_OPERATION_CODECS, decodeCollabProjectMembershipOperationRequest, decodeCollabProjectMembershipOperationResponse, } from './CollabProjectMembership.mjs';
|
|
5
5
|
export { COLLAB_PROJECT_BACKUP_COMPATIBILITY_STAGE, COLLAB_PROJECT_BACKUP_COORDINATION_FORMAT_VERSION, COLLAB_PROJECT_BACKUP_RECORD_KINDS, collabProjectBackupIdempotencyRecordId, decodeCollabProjectBackupCheckpointCoordinationNdjson, decodeCollabProjectBackupCheckpointManifest, encodeCollabProjectBackupCheckpointCoordinationNdjson, encodeCollabProjectBackupCheckpointManifestCanonicalJson, encodeCollabProjectBackupCheckpointManifestDigestInput, validateCollabProjectBackupCheckpointConsistency, } from './CollabProjectBackupCheckpoint.mjs';
|
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
|
-
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, CollabAuthorityTransferReceiptVerifier, CollabAuthorityTransferStatus, CollabCloudToLanTransferPhase, CollabLanToCloudTransferPhase, CollabTransferredMembershipClaim, CollabTransferredMembershipClaimBatch, CollabTransferredMembershipClaimCustodyReceipt, CollabTransferredMembershipClaimItem, CollabTransferredMembershipRedemptionAcknowledgement, CollabTransferredMembershipRedemptionReceipt, CollabTransferredMembershipRedemptionReceiptSigningPayload, CommitLanToCloudRelinquishmentRequest, ConfirmCloudToLanTargetActiveRequest, GetProjectAuthorityTransferRequest, GetAuthorityTransferReceiptVerifierRequest, GetTransferredMembershipClaimRequest, ReportCloudToLanTargetStagedRequest, RequestLanToCloudTransferRequest, RotateTransferredMembershipClaimsRequest, } from './CollabAuthorityTransfer';
|
|
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, decodeCollabCloudToLanTargetCleanupProof, decodeCollabTransferredMembershipClaim, decodeCollabTransferredMembershipClaimBatch, decodeCollabTransferredMembershipClaimCustodyReceipt, decodeCollabTransferredMembershipRedemptionReceipt, encodeCollabAuthorityRelinquishmentProofSigningInput, encodeCollabCloudToLanTargetCleanupProofSigningInput, encodeCollabTransferredMembershipClaimBatchDigestInput, encodeCollabTransferredMembershipRedemptionReceiptSigningInput, } from './CollabAuthorityTransfer';
|
|
4
|
+
export type { AcceptCloudToLanTransferTargetRequest, AcceptLanToCloudTransferTargetRequest, AcknowledgeTransferredMembershipClaimBatchRequest, AcknowledgeTransferredMembershipClaimRedemptionRequest, BeginCloudToLanTransferRequest, BeginLanToCloudTransferRequest, CancelProjectAuthorityTransferRequest, ClaimTransferredMembershipRequest, CollabAuthorityRelinquishmentProof, CollabAuthorityRelinquishmentProofSigningPayload, CollabAuthorityTransferCancellablePhase, CollabAuthorityTransferCancellationPhase, CollabAuthorityTransferDirection, CollabAuthorityTransferOperation, CollabAuthorityTransferOperationMap, CollabAuthorityTransferProposal, CollabAuthorityTransferReceiptVerifier, CollabAuthorityTransferStatus, CollabCloudToLanTransferPhase, CollabCloudToLanTargetCleanupProof, CollabCloudToLanTargetCleanupProofSigningPayload, CollabLanToCloudTransferPhase, CollabTransferredMembershipClaim, CollabTransferredMembershipClaimBatch, CollabTransferredMembershipClaimCustodyReceipt, CollabTransferredMembershipClaimItem, CollabTransferredMembershipRedemptionAcknowledgement, CollabTransferredMembershipRedemptionReceipt, CollabTransferredMembershipRedemptionReceiptSigningPayload, CommitLanToCloudRelinquishmentRequest, ConfirmCloudToLanTargetActiveRequest, ConfirmCloudToLanTargetInvalidatedRequest, 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_MEMBERSHIP_LIMITS, COLLAB_PROJECT_MEMBERSHIP_OPERATIONS, COLLAB_PROJECT_MEMBERSHIP_OPERATION_CODECS, decodeCollabProjectMembershipOperationRequest, decodeCollabProjectMembershipOperationResponse, } from './CollabProjectMembership';
|
package/dist/index.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
exports.
|
|
5
|
-
exports.collabMemberRef = exports.isCollabProjectId = exports.isCollabOpaqueId = exports.isCollabMemberId = exports.isCollabGitOid = exports.scanCollabTicketReferences = exports.parseCollabTicketReferences = exports.decodeCollabProtocolEnvelope = exports.parseCollabMemberMentions = exports.sanitizeCollabDiagnosticContext = void 0;
|
|
3
|
+
exports.decodeCollabProjectBackupCheckpointManifest = exports.decodeCollabProjectBackupCheckpointCoordinationNdjson = exports.collabProjectBackupIdempotencyRecordId = exports.COLLAB_PROJECT_BACKUP_RECORD_KINDS = exports.COLLAB_PROJECT_BACKUP_COORDINATION_FORMAT_VERSION = exports.COLLAB_PROJECT_BACKUP_COMPATIBILITY_STAGE = exports.decodeCollabProjectMembershipOperationResponse = exports.decodeCollabProjectMembershipOperationRequest = exports.COLLAB_PROJECT_MEMBERSHIP_OPERATION_CODECS = exports.COLLAB_PROJECT_MEMBERSHIP_OPERATIONS = exports.COLLAB_PROJECT_MEMBERSHIP_LIMITS = exports.validateCollabProjectCheckpointConsistency = exports.encodeCollabProtectedClaimAssociatedData = exports.encodeCollabProjectCheckpointManifestDigestInput = exports.encodeCollabProjectCheckpointManifestCanonicalJson = exports.encodeCollabProjectCheckpointCoordinationNdjson = exports.decodeCollabProjectCheckpointManifest = exports.decodeCollabProjectCheckpointCoordinationNdjson = exports.COLLAB_PROTECTED_CLAIM_ENVELOPE_VERSION = exports.COLLAB_PROTECTED_CLAIM_ENVELOPE_LIMITS = exports.COLLAB_PROJECT_COORDINATION_FORMAT_VERSION = exports.COLLAB_PROJECT_CHECKPOINT_MANIFEST_SCHEMA_VERSION = exports.COLLAB_PROJECT_CHECKPOINT_ARTIFACTS = exports.COLLAB_CHECKPOINT_PROFILES = exports.COLLAB_CHECKPOINT_PORTABLE_RECORD_KINDS = exports.COLLAB_CHECKPOINT_BACKUP_RECORD_KINDS = exports.COLLAB_CHECKPOINT_ARTIFACT_LIMITS = exports.encodeCollabTransferredMembershipRedemptionReceiptSigningInput = exports.encodeCollabTransferredMembershipClaimBatchDigestInput = exports.encodeCollabCloudToLanTargetCleanupProofSigningInput = exports.encodeCollabAuthorityRelinquishmentProofSigningInput = exports.decodeCollabTransferredMembershipRedemptionReceipt = exports.decodeCollabTransferredMembershipClaimCustodyReceipt = exports.decodeCollabTransferredMembershipClaimBatch = exports.decodeCollabTransferredMembershipClaim = exports.decodeCollabCloudToLanTargetCleanupProof = exports.decodeCollabAuthorityTransferStatus = exports.decodeCollabAuthorityTransferProposal = exports.decodeCollabAuthorityTransferOperationResponse = exports.decodeCollabAuthorityTransferOperationRequest = exports.decodeCollabAuthorityRelinquishmentProof = exports.COLLAB_LAN_TO_CLOUD_TRANSFER_PHASES = exports.COLLAB_CLOUD_TO_LAN_TRANSFER_PHASES = exports.COLLAB_AUTHORITY_TRANSFER_OPERATIONS = exports.COLLAB_AUTHORITY_TRANSFER_CANCELLATION_PHASES = exports.COLLAB_AUTHORITY_TRANSFER_CANCELLABLE_PHASES = exports.COLLAB_PROTOCOL_VERSION = exports.COLLAB_MEMBER_REF_PREFIX = exports.COLLAB_MAIN_REF = exports.COLLAB_LIMITS = void 0;
|
|
4
|
+
exports.COLLAB_ERROR_CODES = exports.collabControlOperationCodec = exports.COLLAB_CONTROL_OPERATION_CODECS = exports.decodeCollabCloudProjectEventMessage = exports.COLLAB_CLOUD_EVENT_KINDS = exports.decodeCollabCloudProjectSnapshot = exports.COLLAB_CLOUD_PROJECT_SNAPSHOT_CODEC = exports.encodeDevelopmentBootstrapManifestCanonicalJson = exports.developmentBootstrapOperationCodec = exports.decodeDevelopmentBootstrapReport = exports.decodeDevelopmentBootstrapManifest = exports.DEVELOPMENT_BOOTSTRAP_OPERATION_CODECS = exports.DEVELOPMENT_BOOTSTRAP_OPERATIONS = exports.DEVELOPMENT_BOOTSTRAP_MANIFEST_SCHEMA_VERSION = exports.DEVELOPMENT_BOOTSTRAP_CANCELLATION_PHASES = exports.DEVELOPMENT_BOOTSTRAP_ATTEMPT_STATES = exports.DEVELOPMENT_BOOTSTRAP_ACTIVATION_PHASES = exports.matchCollabCloudRoute = exports.decodeCollabCloudSuccessEnvelope = exports.decodeCollabCloudProjectCheckpointExportStatus = exports.decodeCollabCloudErrorEnvelope = exports.decodeCollabCloudCapabilityDocument = exports.collabDevelopmentBootstrapRoute = exports.collabCloudSuccessEnvelope = exports.collabCloudProjectOperationRoute = exports.collabCloudProjectEventsRoute = exports.collabCloudProjectCheckpointExportRoute = exports.collabCloudProjectCheckpointExportArtifactRoute = exports.collabCloudGitRoute = exports.collabCloudErrorEnvelope = exports.collabCloudCapabilitiesRoute = exports.collabCloudCapabilitySupported = exports.collabCloudCapabilityDocument = exports.collabCloudAuthorityTransferArtifactRoute = exports.COLLAB_CLOUD_JSON_OPERATIONS = exports.COLLAB_CLOUD_CAPABILITY_DOCUMENT_SCHEMA_VERSION = exports.COLLAB_CLOUD_CAPABILITIES = exports.COLLAB_CLOUD_BINDING_VERSION = exports.COLLAB_CLOUD_BINDING_LIMITS = exports.decodeCollabProjectRetirementResult = exports.decodeCollabProjectRetirementRequest = exports.decodeCollabProjectRetirementOperationResponse = exports.decodeCollabProjectRetirementOperationRequest = exports.decodeCollabProjectRetirementAcknowledgement = exports.COLLAB_PROJECT_RETIREMENT_RESULT_KINDS = exports.COLLAB_PROJECT_RETIREMENT_OPERATIONS = exports.validateCollabProjectBackupCheckpointConsistency = exports.encodeCollabProjectBackupCheckpointManifestDigestInput = exports.encodeCollabProjectBackupCheckpointManifestCanonicalJson = exports.encodeCollabProjectBackupCheckpointCoordinationNdjson = void 0;
|
|
5
|
+
exports.collabMemberRef = exports.isCollabProjectId = exports.isCollabOpaqueId = exports.isCollabMemberId = exports.isCollabGitOid = exports.scanCollabTicketReferences = exports.parseCollabTicketReferences = exports.decodeCollabProtocolEnvelope = exports.parseCollabMemberMentions = exports.sanitizeCollabDiagnosticContext = exports.collabErrorGroup = exports.CollabError = void 0;
|
|
6
6
|
var CollabConstants_1 = require("./CollabConstants");
|
|
7
7
|
Object.defineProperty(exports, "COLLAB_LIMITS", { enumerable: true, get: function () { return CollabConstants_1.COLLAB_LIMITS; } });
|
|
8
8
|
Object.defineProperty(exports, "COLLAB_MAIN_REF", { enumerable: true, get: function () { return CollabConstants_1.COLLAB_MAIN_REF; } });
|
|
@@ -19,11 +19,13 @@ Object.defineProperty(exports, "decodeCollabAuthorityTransferOperationRequest",
|
|
|
19
19
|
Object.defineProperty(exports, "decodeCollabAuthorityTransferOperationResponse", { enumerable: true, get: function () { return CollabAuthorityTransfer_1.decodeCollabAuthorityTransferOperationResponse; } });
|
|
20
20
|
Object.defineProperty(exports, "decodeCollabAuthorityTransferProposal", { enumerable: true, get: function () { return CollabAuthorityTransfer_1.decodeCollabAuthorityTransferProposal; } });
|
|
21
21
|
Object.defineProperty(exports, "decodeCollabAuthorityTransferStatus", { enumerable: true, get: function () { return CollabAuthorityTransfer_1.decodeCollabAuthorityTransferStatus; } });
|
|
22
|
+
Object.defineProperty(exports, "decodeCollabCloudToLanTargetCleanupProof", { enumerable: true, get: function () { return CollabAuthorityTransfer_1.decodeCollabCloudToLanTargetCleanupProof; } });
|
|
22
23
|
Object.defineProperty(exports, "decodeCollabTransferredMembershipClaim", { enumerable: true, get: function () { return CollabAuthorityTransfer_1.decodeCollabTransferredMembershipClaim; } });
|
|
23
24
|
Object.defineProperty(exports, "decodeCollabTransferredMembershipClaimBatch", { enumerable: true, get: function () { return CollabAuthorityTransfer_1.decodeCollabTransferredMembershipClaimBatch; } });
|
|
24
25
|
Object.defineProperty(exports, "decodeCollabTransferredMembershipClaimCustodyReceipt", { enumerable: true, get: function () { return CollabAuthorityTransfer_1.decodeCollabTransferredMembershipClaimCustodyReceipt; } });
|
|
25
26
|
Object.defineProperty(exports, "decodeCollabTransferredMembershipRedemptionReceipt", { enumerable: true, get: function () { return CollabAuthorityTransfer_1.decodeCollabTransferredMembershipRedemptionReceipt; } });
|
|
26
27
|
Object.defineProperty(exports, "encodeCollabAuthorityRelinquishmentProofSigningInput", { enumerable: true, get: function () { return CollabAuthorityTransfer_1.encodeCollabAuthorityRelinquishmentProofSigningInput; } });
|
|
28
|
+
Object.defineProperty(exports, "encodeCollabCloudToLanTargetCleanupProofSigningInput", { enumerable: true, get: function () { return CollabAuthorityTransfer_1.encodeCollabCloudToLanTargetCleanupProofSigningInput; } });
|
|
27
29
|
Object.defineProperty(exports, "encodeCollabTransferredMembershipClaimBatchDigestInput", { enumerable: true, get: function () { return CollabAuthorityTransfer_1.encodeCollabTransferredMembershipClaimBatchDigestInput; } });
|
|
28
30
|
Object.defineProperty(exports, "encodeCollabTransferredMembershipRedemptionReceiptSigningInput", { enumerable: true, get: function () { return CollabAuthorityTransfer_1.encodeCollabTransferredMembershipRedemptionReceiptSigningInput; } });
|
|
29
31
|
var CollabProjectCheckpoint_1 = require("./CollabProjectCheckpoint");
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@claudian-collab/protocol",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.1.0",
|
|
4
4
|
"description": "Canonical Collab wire and Cloud binding contract for Claudian clients and servers.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
"sideEffects": false,
|
|
39
39
|
"scripts": {
|
|
40
40
|
"build": "npm run clean && tsc -p tsconfig.json && tsc -p tsconfig.esm.json && node scripts/finalize-esm.mjs",
|
|
41
|
-
"check:compatibility": "node scripts/
|
|
41
|
+
"check:compatibility": "node scripts/run-compatibility-check.mjs",
|
|
42
42
|
"check:migration-provenance": "node scripts/check-migration-provenance.mjs --verify-standalone",
|
|
43
43
|
"clean": "node scripts/clean.mjs",
|
|
44
44
|
"lint": "eslint src tests scripts",
|