@serve.zone/interfaces 23.2.0 → 24.0.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 type * as plugins from '../plugins.js';
2
- import type { IResolvedSecretManifestEntry, ISecretMetadata, ISecretSetAttachment, ISecretSetConsumerRolloutStatus, ISecretSetMetadata, ISecretVersionMetadata, ISecretVersionRetentionReference, TSecretIngressRecipient, TSecretMutationTarget, TSecretValueInput, TSecretDelivery, TSecretEnvironment } from '../data/secret.js';
2
+ import type { IResolvedSecretManifestEntry, IActiveSecretRecipientMetadata, ISecretMetadata, ISecretSetAttachment, ISecretSetConsumerRolloutStatus, ISecretSetMetadata, ISecretVersionMetadata, ISecretVersionPurgeIntentV1, ISecretVersionRetentionReference, TSecretVersionPurgeOperationV1, TSecretMutationTarget, TSecretValueInput, TSecretDelivery, TSecretEnvironment } from '../data/secret.js';
3
3
  import type { IIdentityCredential } from '../data/user.js';
4
4
  export interface IReq_GetSecretIngressRecipient extends plugins.typedrequestInterfaces.implementsTR<plugins.typedrequestInterfaces.ITypedRequest, IReq_GetSecretIngressRecipient> {
5
5
  method: 'getSecretIngressRecipient';
@@ -7,7 +7,7 @@ export interface IReq_GetSecretIngressRecipient extends plugins.typedrequestInte
7
7
  identity: IIdentityCredential;
8
8
  };
9
9
  response: {
10
- recipient: TSecretIngressRecipient;
10
+ recipient: IActiveSecretRecipientMetadata;
11
11
  };
12
12
  }
13
13
  export interface IReq_ListSecrets extends plugins.typedrequestInterfaces.implementsTR<plugins.typedrequestInterfaces.ITypedRequest, IReq_ListSecrets> {
@@ -84,7 +84,7 @@ export interface IReq_ChangeSecretLifecycle extends plugins.typedrequestInterfac
84
84
  request: {
85
85
  identity: IIdentityCredential;
86
86
  secretId: string;
87
- action: 'retire' | 'revoke' | 'delete' | 'request-purge';
87
+ action: 'retire' | 'revoke' | 'delete';
88
88
  expectedSecretRevision: number;
89
89
  expectedTargetSecretsRevision: number;
90
90
  };
@@ -99,10 +99,34 @@ export interface IReq_GetSecretVersionPurgePreflight extends plugins.typedreques
99
99
  identity: IIdentityCredential;
100
100
  secretId: string;
101
101
  secretVersionId: string;
102
+ cursor?: string;
103
+ limit?: number;
102
104
  };
103
105
  response: {
104
- purgeAllowed: boolean;
106
+ schemaVersion: 1;
107
+ secret: ISecretMetadata;
108
+ version: ISecretVersionMetadata;
109
+ targetSecretsRevision: number;
110
+ eligible: boolean;
111
+ blockers: TSecretVersionPurgeBlocker[];
112
+ blockingReferenceCount: number;
105
113
  references: ISecretVersionRetentionReference[];
114
+ nextCursor?: string;
115
+ referencesTruncated: boolean;
116
+ operation?: TSecretVersionPurgeOperationV1;
117
+ };
118
+ }
119
+ export type TSecretVersionPurgeBlocker = 'version-active' | 'retention-reference' | 'purge-pending' | 'already-purged';
120
+ export interface IReq_PurgeSecretVersion extends plugins.typedrequestInterfaces.implementsTR<plugins.typedrequestInterfaces.ITypedRequest, IReq_PurgeSecretVersion> {
121
+ method: 'purgeSecretVersion';
122
+ request: ISecretVersionPurgeIntentV1 & {
123
+ identity: IIdentityCredential;
124
+ };
125
+ response: {
126
+ secret: ISecretMetadata;
127
+ version: ISecretVersionMetadata;
128
+ operation: TSecretVersionPurgeOperationV1;
129
+ targetSecretsRevision: number;
106
130
  };
107
131
  }
108
132
  export interface IReq_ListSecretSets extends plugins.typedrequestInterfaces.implementsTR<plugins.typedrequestInterfaces.ITypedRequest, IReq_ListSecretSets> {
@@ -200,5 +224,8 @@ export interface IReq_PreviewServiceSecretResolution extends plugins.typedreques
200
224
  collisions: ISecretResolutionPreviewCollision[];
201
225
  };
202
226
  }
203
- export declare const validateCreateSecretRequest: (requestArg: unknown, activeIngressRecipientArg: TSecretIngressRecipient) => Promise<string[]>;
204
- export declare const validateRotateSecretRequest: (requestArg: unknown, activeIngressRecipientArg: TSecretIngressRecipient) => Promise<string[]>;
227
+ export declare const validateCreateSecretRequest: (requestArg: unknown, activeIngressRecipientArg: IActiveSecretRecipientMetadata) => Promise<string[]>;
228
+ export declare const validateRotateSecretRequest: (requestArg: unknown, activeIngressRecipientArg: IActiveSecretRecipientMetadata) => Promise<string[]>;
229
+ export declare const validatePurgeSecretVersionRequest: (requestArg: unknown) => string[];
230
+ export declare const validateGetSecretVersionPurgePreflightRequest: (requestArg: unknown) => string[];
231
+ export declare const validateSecretVersionPurgePreflightResponse: (responseArg: unknown) => Promise<string[]>;
@@ -158,4 +158,201 @@ export const validateRotateSecretRequest = async (requestArg, activeIngressRecip
158
158
  errors.push(...await secretData.validateSecretValueInputForRecipient(request.valueInput, activeIngressRecipientArg, expectedContext));
159
159
  return errors;
160
160
  };
161
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjcmV0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vdHMvcmVxdWVzdHMvc2VjcmV0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sS0FBSyxVQUFVLE1BQU0sbUJBQW1CLENBQUM7QUFvUmhELE1BQU0sUUFBUSxHQUFHLENBQUMsUUFBaUIsRUFBdUMsRUFBRSxDQUFDLENBQzNFLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxPQUFPLFFBQVEsS0FBSyxRQUFRLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUM5RSxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sMkJBQTJCLEdBQUcsS0FBSyxFQUM5QyxVQUFtQixFQUNuQix5QkFBa0QsRUFDL0IsRUFBRTtJQUNyQixJQUFJLENBQUMsVUFBVSxJQUFJLE9BQU8sVUFBVSxLQUFLLFFBQVEsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7UUFDL0UsT0FBTyxDQUFDLHlDQUF5QyxDQUFDLENBQUM7SUFDckQsQ0FBQztJQUNELE1BQU0sT0FBTyxHQUFHLFVBQXFDLENBQUM7SUFDdEQsTUFBTSxNQUFNLEdBQUcsVUFBVSxDQUFDLHdCQUF3QixDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN2RSxNQUFNLFdBQVcsR0FBRyxJQUFJLEdBQUcsQ0FBQztRQUMxQixVQUFVO1FBQ1YsWUFBWTtRQUNaLFFBQVE7UUFDUixLQUFLO1FBQ0wsYUFBYTtRQUNiLE1BQU07UUFDTixhQUFhO1FBQ2IsTUFBTTtRQUNOLFVBQVU7UUFDVixZQUFZO1FBQ1osK0JBQStCO0tBQ2hDLENBQUMsQ0FBQztJQUNILElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENB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
161
+ export const validatePurgeSecretVersionRequest = (requestArg) => {
162
+ try {
163
+ if (!isRecord(requestArg))
164
+ return ['purge secret version request must be an object'];
165
+ const request = requestArg;
166
+ const intent = Object.fromEntries(Object.entries(request).filter(([keyArg]) => keyArg !== 'identity'));
167
+ const errors = secretData.validateSecretVersionPurgeIntent(intent);
168
+ if (!request.identity || typeof request.identity !== 'object' || Array.isArray(request.identity)
169
+ || JSON.stringify(Object.keys(request.identity).sort()) !== JSON.stringify(['jwt'])
170
+ || typeof request.identity.jwt !== 'string'
171
+ || !request.identity.jwt) {
172
+ errors.push('purge secret version request requires only a JWT identity');
173
+ }
174
+ return errors;
175
+ }
176
+ catch {
177
+ return ['purge secret version request must be safely inspectable'];
178
+ }
179
+ };
180
+ export const validateGetSecretVersionPurgePreflightRequest = (requestArg) => {
181
+ try {
182
+ if (!isRecord(requestArg)) {
183
+ return ['secret version purge preflight request must be an object'];
184
+ }
185
+ const expectedKeys = [
186
+ 'identity',
187
+ 'secretId',
188
+ 'secretVersionId',
189
+ ...(requestArg.cursor === undefined ? [] : ['cursor']),
190
+ ...(requestArg.limit === undefined ? [] : ['limit']),
191
+ ];
192
+ const errors = [];
193
+ if (JSON.stringify(Object.keys(requestArg).sort())
194
+ !== JSON.stringify(expectedKeys.sort())) {
195
+ errors.push('secret version purge preflight request must use its exact schema');
196
+ }
197
+ if (!isRecord(requestArg.identity)
198
+ || JSON.stringify(Object.keys(requestArg.identity).sort()) !== JSON.stringify(['jwt'])
199
+ || typeof requestArg.identity.jwt !== 'string'
200
+ || !requestArg.identity.jwt) {
201
+ errors.push('secret version purge preflight request requires only a JWT identity');
202
+ }
203
+ for (const field of ['secretId', 'secretVersionId']) {
204
+ if (typeof requestArg[field] !== 'string'
205
+ || !/^[A-Za-z0-9][A-Za-z0-9:._-]{0,199}$/.test(requestArg[field])) {
206
+ errors.push(`secret version purge preflight ${field} must be canonical`);
207
+ }
208
+ }
209
+ if (requestArg.cursor !== undefined
210
+ && (typeof requestArg.cursor !== 'string' || requestArg.cursor.length === 0)) {
211
+ errors.push('secret version purge preflight cursor must be opaque and non-empty');
212
+ }
213
+ if (requestArg.limit !== undefined
214
+ && (!Number.isSafeInteger(requestArg.limit)
215
+ || requestArg.limit < 1
216
+ || requestArg.limit
217
+ > secretData.secretVersionRetentionReferenceLimits.pageSizeMaximum)) {
218
+ errors.push('secret version purge preflight limit must be bounded');
219
+ }
220
+ return errors;
221
+ }
222
+ catch {
223
+ return ['secret version purge preflight request must be safely inspectable'];
224
+ }
225
+ };
226
+ export const validateSecretVersionPurgePreflightResponse = async (responseArg) => {
227
+ try {
228
+ if (!isRecord(responseArg)) {
229
+ return ['secret version purge preflight response must be an object'];
230
+ }
231
+ const response = responseArg;
232
+ const expectedKeys = [
233
+ 'schemaVersion',
234
+ 'secret',
235
+ 'version',
236
+ 'targetSecretsRevision',
237
+ 'eligible',
238
+ 'blockers',
239
+ 'blockingReferenceCount',
240
+ 'references',
241
+ 'referencesTruncated',
242
+ ...(response.nextCursor === undefined ? [] : ['nextCursor']),
243
+ ...(response.operation === undefined ? [] : ['operation']),
244
+ ];
245
+ const errors = [];
246
+ if (JSON.stringify(Object.keys(response).sort())
247
+ !== JSON.stringify([...expectedKeys].sort())) {
248
+ errors.push('secret version purge preflight response must use its exact schema');
249
+ }
250
+ if (response.schemaVersion !== 1) {
251
+ errors.push('secret version purge preflight response schemaVersion must be 1');
252
+ }
253
+ if (secretData.validateSecretVersionMetadata(response.version).length > 0) {
254
+ errors.push('secret version purge preflight version must be canonical');
255
+ }
256
+ if (secretData.validateSecretMetadata(response.secret).length > 0) {
257
+ errors.push('secret version purge preflight secret must be canonical');
258
+ }
259
+ if (isRecord(response.secret)
260
+ && isRecord(response.version)
261
+ && response.version.secretId !== response.secret.id) {
262
+ errors.push('secret version purge preflight version must belong to its secret');
263
+ }
264
+ if (!Number.isSafeInteger(response.targetSecretsRevision)
265
+ || response.targetSecretsRevision < 0) {
266
+ errors.push('secret version purge preflight target revision must be non-negative');
267
+ }
268
+ const allowedBlockers = new Set([
269
+ 'version-active',
270
+ 'retention-reference',
271
+ 'purge-pending',
272
+ 'already-purged',
273
+ ]);
274
+ if (!Array.isArray(response.blockers)
275
+ || response.blockers.some((blockerArg) => !allowedBlockers.has(blockerArg))
276
+ || new Set(response.blockers).size !== response.blockers.length
277
+ || JSON.stringify(response.blockers) !== JSON.stringify([...response.blockers].sort())) {
278
+ errors.push('secret version purge preflight blockers must be uniquely sorted');
279
+ }
280
+ if (typeof response.eligible !== 'boolean'
281
+ || response.eligible !== (Array.isArray(response.blockers) && response.blockers.length === 0)) {
282
+ errors.push('secret version purge preflight eligibility must be derived from blockers');
283
+ }
284
+ if (!Number.isSafeInteger(response.blockingReferenceCount)
285
+ || response.blockingReferenceCount < 0) {
286
+ errors.push('secret version purge preflight reference count must be non-negative');
287
+ }
288
+ errors.push(...secretData.validateSecretVersionRetentionReferences(response.references));
289
+ if (typeof response.referencesTruncated !== 'boolean') {
290
+ errors.push('secret version purge preflight referencesTruncated must be boolean');
291
+ }
292
+ if (response.nextCursor !== undefined
293
+ && (typeof response.nextCursor !== 'string' || response.nextCursor.length === 0)) {
294
+ errors.push('secret version purge preflight nextCursor must be opaque and non-empty');
295
+ }
296
+ if (response.referencesTruncated !== (response.nextCursor !== undefined)) {
297
+ errors.push('secret version purge preflight truncation must match nextCursor presence');
298
+ }
299
+ if (Array.isArray(response.references)
300
+ && Number.isSafeInteger(response.blockingReferenceCount)
301
+ && response.blockingReferenceCount < response.references.length) {
302
+ errors.push('secret version purge preflight reference count cannot be smaller than its page');
303
+ }
304
+ if (Array.isArray(response.blockers)
305
+ && isRecord(response.version)
306
+ && Number.isSafeInteger(response.blockingReferenceCount)) {
307
+ const expectedBlockers = [];
308
+ if (response.version.lifecycleState === 'active')
309
+ expectedBlockers.push('version-active');
310
+ if (response.blockingReferenceCount > 0) {
311
+ expectedBlockers.push('retention-reference');
312
+ }
313
+ if (response.version.lifecycleState === 'purge-pending') {
314
+ expectedBlockers.push('purge-pending');
315
+ }
316
+ if (response.version.lifecycleState === 'purged')
317
+ expectedBlockers.push('already-purged');
318
+ expectedBlockers.sort();
319
+ if (JSON.stringify(response.blockers) !== JSON.stringify(expectedBlockers)) {
320
+ errors.push('secret version purge preflight blockers do not match current state');
321
+ }
322
+ }
323
+ if (response.operation !== undefined) {
324
+ errors.push(...await secretData.validateSecretVersionPurgeOperation(response.operation));
325
+ if (isRecord(response.operation)
326
+ && isRecord(response.operation.intent)
327
+ && isRecord(response.secret)
328
+ && isRecord(response.version)
329
+ && (response.operation.id !== response.version.purgeOperationId
330
+ || response.operation.intent.secretId !== response.secret.id
331
+ || response.operation.intent.secretVersionId !== response.version.id)) {
332
+ errors.push('secret version purge preflight operation does not match its version');
333
+ }
334
+ if (isRecord(response.operation) && isRecord(response.version)) {
335
+ if (response.version.lifecycleState === 'purge-pending'
336
+ && response.operation.state === 'succeeded') {
337
+ errors.push('purge-pending version cannot have a succeeded purge operation');
338
+ }
339
+ if (response.version.lifecycleState === 'purged'
340
+ && (response.operation.state !== 'succeeded'
341
+ || response.operation.purgedAt !== response.version.purgedAt)) {
342
+ errors.push('purged version requires the matching succeeded purge operation');
343
+ }
344
+ }
345
+ }
346
+ if (isRecord(response.version)
347
+ && (response.version.lifecycleState === 'purge-pending'
348
+ || response.version.lifecycleState === 'purged')
349
+ && response.operation === undefined) {
350
+ errors.push('secret version purge preflight purging state requires its operation');
351
+ }
352
+ return errors;
353
+ }
354
+ catch {
355
+ return ['secret version purge preflight response must be safely inspectable'];
356
+ }
357
+ };
358
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjcmV0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vdHMvcmVxdWVzdHMvc2VjcmV0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sS0FBSyxVQUFVLE1BQU0sbUJBQW1CLENBQUM7QUF3VGhELE1BQU0sUUFBUSxHQUFHLENBQUMsUUFBaUIsRUFBdUMsRUFBRSxDQUFDLENBQzNFLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxPQUFPLFFBQVEsS0FBSyxRQUFRLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUM5RSxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sMkJBQTJCLEdBQUcsS0FBSyxFQUM5QyxVQUFtQixFQUNuQix5QkFBeUQsRUFDdEMsRUFBRTtJQUNyQixJQUFJLENBQUMsVUFBVSxJQUFJLE9BQU8sVUFBVSxLQUFLLFFBQVEsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7UUFDL0UsT0FBTyxDQUFDLHlDQUF5QyxDQUFDLENBQUM7SUFDckQsQ0FBQztJQUNELE1BQU0sT0FBTyxHQUFHLFVBQXFDLENBQUM7SUFDdEQsTUFBTSxNQUFNLEdBQUcsVUFBVSxDQUFDLHdCQUF3QixDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN2RSxNQUFNLFdBQVcsR0FBRyxJQUFJLEdBQUcsQ0FBQztRQUMxQixVQUFVO1FBQ1YsWUFBWTtRQUNaLFFBQVE7UUFDUixLQUFLO1FBQ0wsYUFBYTtRQUNiLE1BQU07UUFDTixhQUFhO1FBQ2IsTUFBTTtRQUNOLFVBQVU7UUFDVixZQUFZO1FBQ1osK0JBQStCO0tBQ2hDLENBQUMsQ0FBQztJQUNILElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENB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
@@ -1,6 +1,8 @@
1
1
  import * as plugins from './plugins.js';
2
- import type { IActiveSecretRecipientMetadata, IClusterSecretDeploymentState, ICoreflowRuntimeCapabilities, IIdentityCredential, IResolvedSecretManifest, IResolvedSecretManifestReference, TSha256Digest, TImmutableContainerPlatform, TSecretRecipientMetadata } from './data/index.js';
2
+ import type { IActiveSecretRecipientMetadata, IClusterRuntimeTargetSetReadyV1, IClusterRuntimeTargetV1, IClusterSecretDeploymentState, ICoreflowRuntimeCapabilities, IIdentityCredential, IResolvedSecretManifest, IResolvedSecretManifestReference, TSha256Digest, TSecretRecipientMetadata } from './data/index.js';
3
3
  import { validateSecretRecipientMetadata } from './data/secret.js';
4
+ import type { IWorkloadInitActiveApprovalAuthorityV1, IWorkloadInitApprovalAuthorityReferenceV1 } from './runtime.workloadinit.js';
5
+ export * from './runtime.workloadinit.js';
4
6
  export interface ISealedResolvedSecretMaterialEntry {
5
7
  secretVersionId: string;
6
8
  envelope: plugins.smartcrypto.IX25519EnvelopeV1;
@@ -91,6 +93,23 @@ export declare const validateBeginSecretRecipientEnrollmentRequest: (requestArg:
91
93
  export declare const validateSecretRecipientEnrollmentChallenge: (challengeArg: unknown) => Promise<string[]>;
92
94
  export declare const validateCompleteSecretRecipientEnrollmentRequest: (requestArg: unknown) => string[];
93
95
  export { validateSecretRecipientMetadata };
96
+ /**
97
+ * Reproducible binding persisted inside a trusted Cloudly mutation receipt.
98
+ * This value alone does not prove that Cloudly admitted the envelope.
99
+ */
100
+ export interface ISecretEnvelopeAdmissionBindingV1 {
101
+ schemaVersion: 1;
102
+ recipientKeyId: string;
103
+ recipientGeneration: number;
104
+ envelopeDigest: TSha256Digest;
105
+ requestContextDigest: TSha256Digest;
106
+ }
107
+ export declare const createSecretEnvelopeDigestInput: (envelopeArg: unknown) => string;
108
+ export declare const computeSecretEnvelopeDigest: (envelopeArg: unknown) => Promise<TSha256Digest>;
109
+ export declare const computeSecretRequestContextDigest: (contextArg: Uint8Array) => Promise<TSha256Digest>;
110
+ export declare const validateSecretEnvelopeAdmissionBinding: (bindingArg: unknown) => string[];
111
+ export declare const createSecretEnvelopeAdmissionBinding: (recipientArg: IActiveSecretRecipientMetadata, envelopeArg: unknown, requestContextArg: Uint8Array) => Promise<ISecretEnvelopeAdmissionBindingV1>;
112
+ export declare const verifySecretEnvelopeAdmissionBinding: (bindingArg: unknown, envelopeArg: unknown, requestContextArg: Uint8Array) => Promise<boolean>;
94
113
  export type TSecretRecipientEnrollmentStateV1 = {
95
114
  schemaVersion: 1;
96
115
  generation: 0;
@@ -110,60 +129,64 @@ export interface IReq_GetSecretRecipientEnrollmentState extends plugins.typedreq
110
129
  }
111
130
  export declare const validateGetSecretRecipientEnrollmentStateRequest: (requestArg: unknown) => string[];
112
131
  export declare const validateSecretRecipientEnrollmentState: (stateArg: unknown) => string[];
113
- export interface ICoreflowSecretRuntimeNodeTargetV1 {
114
- nodeId: string;
115
- nodeName: string;
116
- platform: TImmutableContainerPlatform;
117
- }
118
- export interface ICoreflowSecretRuntimeNodeEvidenceV1 extends ICoreflowSecretRuntimeNodeTargetV1 {
119
- workloadInitPlatformManifestDigest: TSha256Digest;
120
- workloadInitExecutableDigest: TSha256Digest;
132
+ export interface ICoreflowSecretRuntimeNodeTargetV2 extends IClusterRuntimeTargetV1 {
121
133
  }
122
- export interface ICoreflowSecretRuntimeArtifactV1 {
123
- platform: TImmutableContainerPlatform;
134
+ export interface ICoreflowSecretRuntimeNodeEvidenceV2 extends ICoreflowSecretRuntimeNodeTargetV2 {
124
135
  workloadInitPlatformManifestDigest: TSha256Digest;
125
136
  workloadInitExecutableDigest: TSha256Digest;
126
137
  }
127
- export interface ICoreflowSecretRuntimeRegistrationExpectationV1 {
128
- expectationVersion: 1;
138
+ export interface ICoreflowSecretRuntimeRegistrationExpectationV2 {
139
+ expectationVersion: 2;
140
+ expectationDigest: TSha256Digest;
129
141
  reporterSessionId: string;
130
- targets: ICoreflowSecretRuntimeNodeTargetV1[];
131
- workloadInitImageIndexDigest: TSha256Digest;
132
- workloadInitArtifacts: ICoreflowSecretRuntimeArtifactV1[];
142
+ targetAuthority: IClusterRuntimeTargetSetReadyV1;
143
+ workloadInitAuthority: IWorkloadInitActiveApprovalAuthorityV1;
133
144
  activeRecipient: IActiveSecretRecipientMetadata;
134
145
  }
135
- /** Dedicated TypedSocket tag carrying ICoreflowSecretRuntimeRegistrationV1. */
146
+ /** Dedicated TypedSocket tag carrying ICoreflowSecretRuntimeRegistrationV2. */
136
147
  export declare const coreflowSecretRuntimeRegistrationTagId: "coreflowSecretRuntimeRegistration";
148
+ export type TCoreflowSecretRuntimeRegistrationExpectationResponseV2 = {
149
+ status: 'available';
150
+ expectation: ICoreflowSecretRuntimeRegistrationExpectationV2;
151
+ } | {
152
+ status: 'unavailable';
153
+ reason: 'recipient-unavailable' | 'workloadinit-unconfigured' | 'workloadinit-revoked' | 'targets-unavailable';
154
+ };
137
155
  /** Cluster scope is derived exclusively from the verified cluster JWT. */
138
156
  export interface IReq_GetCoreflowSecretRuntimeRegistrationExpectation extends plugins.typedrequestInterfaces.implementsTR<plugins.typedrequestInterfaces.ITypedRequest, IReq_GetCoreflowSecretRuntimeRegistrationExpectation> {
139
157
  method: 'getCoreflowSecretRuntimeRegistrationExpectation';
140
158
  request: {
141
159
  identity: IIdentityCredential;
142
160
  };
143
- response: {
144
- expectation: ICoreflowSecretRuntimeRegistrationExpectationV1;
145
- };
161
+ response: TCoreflowSecretRuntimeRegistrationExpectationResponseV2;
146
162
  }
147
163
  export declare const validateGetCoreflowSecretRuntimeRegistrationExpectationRequest: (requestArg: unknown) => string[];
148
- export interface ICoreflowSecretRuntimeRegistrationV1 {
149
- registrationVersion: 1;
164
+ export interface ICoreflowSecretRuntimeRegistrationV2 {
165
+ registrationVersion: 2;
166
+ expectationDigest: TSha256Digest;
150
167
  reporterSessionId: string;
151
168
  registeredAt: number;
152
- targets: ICoreflowSecretRuntimeNodeTargetV1[];
153
- nodeSetDigest: TSha256Digest;
154
- nodeEvidence: ICoreflowSecretRuntimeNodeEvidenceV1[];
169
+ targetGeneration: number;
170
+ targetSetDigest: TSha256Digest;
171
+ targets: ICoreflowSecretRuntimeNodeTargetV2[];
172
+ nodeEvidence: ICoreflowSecretRuntimeNodeEvidenceV2[];
155
173
  capabilities: ICoreflowRuntimeCapabilities;
156
174
  activeRecipient: IActiveSecretRecipientMetadata;
175
+ workloadInitAuthority: IWorkloadInitApprovalAuthorityReferenceV1;
157
176
  workloadInitImageIndexDigest: TSha256Digest;
158
- workloadInitApprovedAt: number;
159
177
  }
160
- export declare const createCoreflowSecretRuntimeNodeSetDigestInput: (targetsArg: ICoreflowSecretRuntimeNodeTargetV1[]) => string;
161
- export declare const computeCoreflowSecretRuntimeNodeSetDigest: (targetsArg: ICoreflowSecretRuntimeNodeTargetV1[]) => Promise<TSha256Digest>;
178
+ export declare const createCoreflowSecretRuntimeRegistrationExpectationDigestInput: (expectationArg: ICoreflowSecretRuntimeRegistrationExpectationV2) => string;
179
+ export declare const computeCoreflowSecretRuntimeRegistrationExpectationDigest: (expectationArg: ICoreflowSecretRuntimeRegistrationExpectationV2) => Promise<TSha256Digest>;
180
+ /**
181
+ * Validates only a Cloudly-created expectation. It does not establish the
182
+ * private DSSE trust decision or Spark manager consensus that produced it.
183
+ */
184
+ export declare const validateCoreflowSecretRuntimeRegistrationExpectation: (expectationArg: unknown, trustedNowArg: number) => Promise<string[]>;
162
185
  /**
163
186
  * Consumers discard this registration on transport disconnect, tag
164
187
  * removal/replacement, reporter-session change, or any expectation change.
165
188
  */
166
- export declare const validateCoreflowSecretRuntimeRegistration: (registrationArg: unknown, expectationArg: unknown) => Promise<string[]>;
189
+ export declare const validateCoreflowSecretRuntimeRegistration: (registrationArg: unknown, expectationArg: unknown, trustedNowArg: number) => Promise<string[]>;
167
190
  interface ISecretDeploymentReportBaseV1 {
168
191
  schemaVersion: 1;
169
192
  reporterSessionId: string;