@serve.zone/interfaces 31.8.0 → 32.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.
- package/.smartconfig.json +1 -0
- package/changelog.md +512 -0
- package/dist_ts/00_commitinfo_data.js +3 -3
- package/dist_ts/appstore/types.d.ts +4 -6
- package/dist_ts/appstore/types.js +5 -5
- package/dist_ts/data/backup.d.ts +3 -26
- package/dist_ts/data/cluster.d.ts +36 -11
- package/dist_ts/data/cluster.js +33 -22
- package/dist_ts/data/clusteringress.d.ts +8 -0
- package/dist_ts/data/clusteringress.js +13 -8
- package/dist_ts/data/clusternode.d.ts +121 -74
- package/dist_ts/data/clusternode.js +109 -132
- package/dist_ts/data/clusterruntime.d.ts +39 -0
- package/dist_ts/data/clusterruntime.js +11 -0
- package/dist_ts/data/coremail.d.ts +3 -7
- package/dist_ts/data/coremail.js +2 -2
- package/dist_ts/data/coremail.runtime.d.ts +0 -1
- package/dist_ts/data/coremail.runtime.js +5 -22
- package/dist_ts/data/deploymentadoption.d.ts +0 -2
- package/dist_ts/data/deploymentadoption.js +40 -6
- package/dist_ts/data/deploymentoperation.js +16 -3
- package/dist_ts/data/deploymentpreflight.d.ts +0 -2
- package/dist_ts/data/deploymentpreflight.js +1 -1
- package/dist_ts/data/immutableimage.d.ts +38 -21
- package/dist_ts/data/immutableimage.js +45 -5
- package/dist_ts/data/index.d.ts +5 -1
- package/dist_ts/data/index.js +5 -1
- package/dist_ts/data/isolatedrestore.d.ts +139 -21
- package/dist_ts/data/isolatedrestore.golden.d.ts +0 -1
- package/dist_ts/data/isolatedrestore.golden.js +6 -9
- package/dist_ts/data/isolatedrestore.js +176 -40
- package/dist_ts/data/mail.d.ts +1 -1
- package/dist_ts/data/networkaddressplan.d.ts +78 -0
- package/dist_ts/data/networkaddressplan.js +114 -0
- package/dist_ts/data/networkauthority.d.ts +20 -22
- package/dist_ts/data/networkauthority.js +29 -43
- package/dist_ts/data/networkcredential.d.ts +10 -10
- package/dist_ts/data/networkcredential.js +16 -16
- package/dist_ts/data/networkdelivery.d.ts +18 -18
- package/dist_ts/data/networkdelivery.js +16 -16
- package/dist_ts/data/networklease.d.ts +18 -7
- package/dist_ts/data/networklease.js +29 -7
- package/dist_ts/data/networknode.d.ts +37 -0
- package/dist_ts/data/networknode.js +6 -0
- package/dist_ts/data/networkprojection.d.ts +59 -60
- package/dist_ts/data/networkprojection.js +53 -57
- package/dist_ts/data/networkprotection.d.ts +27 -28
- package/dist_ts/data/networkprotection.js +36 -36
- package/dist_ts/data/networkrouter.d.ts +11 -11
- package/dist_ts/data/networkrouter.js +1 -1
- package/dist_ts/data/networksigning.d.ts +16 -18
- package/dist_ts/data/networksigning.js +20 -21
- package/dist_ts/data/nodecredential.d.ts +4 -6
- package/dist_ts/data/nodeenrollment.d.ts +35 -40
- package/dist_ts/data/nodeenrollment.js +57 -72
- package/dist_ts/data/privatenetwork.d.ts +21 -24
- package/dist_ts/data/privatenetwork.js +39 -54
- package/dist_ts/data/runtimeassignment.d.ts +50 -34
- package/dist_ts/data/runtimeassignment.js +79 -45
- package/dist_ts/data/runtimeconfig.d.ts +21 -22
- package/dist_ts/data/runtimeconfig.js +37 -100
- package/dist_ts/data/runtimesession.d.ts +100 -62
- package/dist_ts/data/runtimesession.js +98 -79
- package/dist_ts/data/runtimeterminalreceipt.d.ts +28 -29
- package/dist_ts/data/runtimeterminalreceipt.js +42 -42
- package/dist_ts/data/secret.d.ts +18 -25
- package/dist_ts/data/secret.js +12 -52
- package/dist_ts/data/servicecredential.d.ts +14 -16
- package/dist_ts/data/servicecredential.js +17 -28
- package/dist_ts/data/serviceruntime.d.ts +128 -0
- package/dist_ts/data/serviceruntime.js +92 -0
- package/dist_ts/data/sparknodereport.d.ts +27 -14
- package/dist_ts/data/sparknodereport.js +35 -28
- package/dist_ts/data/webpush.d.ts +0 -1
- package/dist_ts/index.d.ts +2 -1
- package/dist_ts/index.js +3 -2
- package/dist_ts/platform/objectstorageretention.d.ts +21 -24
- package/dist_ts/platform/objectstorageretention.js +6 -18
- package/dist_ts/platform/storage.d.ts +1 -3
- package/dist_ts/platform/storagemigration.d.ts +0 -7
- package/dist_ts/platform/storagemigration.golden.d.ts +0 -1
- package/dist_ts/platform/storagemigration.golden.js +8 -12
- package/dist_ts/platform/storagemigration.js +6 -51
- package/dist_ts/platform/types.d.ts +2 -2
- package/dist_ts/private/canonicaljson.d.ts +9 -1
- package/dist_ts/private/canonicaljson.js +14 -2
- package/dist_ts/private/dataproperties.d.ts +62 -0
- package/dist_ts/private/dataproperties.js +117 -0
- package/dist_ts/private/networkcontract.d.ts +14 -10
- package/dist_ts/private/networkcontract.js +15 -1
- package/dist_ts/private/producercontract.d.ts +11 -0
- package/dist_ts/private/producercontract.js +21 -0
- package/dist_ts/private/releaseversion.d.ts +37 -0
- package/dist_ts/private/releaseversion.js +48 -0
- package/dist_ts/private/runtimepolicy.d.ts +31 -0
- package/dist_ts/private/runtimepolicy.js +90 -0
- package/dist_ts/private/tokenlist.d.ts +9 -0
- package/dist_ts/private/tokenlist.js +23 -0
- package/dist_ts/protocol.d.ts +137 -0
- package/dist_ts/protocol.js +255 -0
- package/dist_ts/requests/admin.d.ts +8 -8
- package/dist_ts/requests/backup.d.ts +102 -112
- package/dist_ts/requests/cluster.d.ts +47 -10
- package/dist_ts/requests/cluster.js +1 -1
- package/dist_ts/requests/clusteringress.d.ts +9 -0
- package/dist_ts/requests/clusteringress.js +1 -1
- package/dist_ts/requests/config.d.ts +3 -3
- package/dist_ts/requests/corestore.d.ts +0 -3
- package/dist_ts/requests/corestore.js +5 -9
- package/dist_ts/requests/network.d.ts +87 -31
- package/dist_ts/requests/node.d.ts +15 -28
- package/dist_ts/requests/pallet.d.ts +13 -13
- package/dist_ts/requests/runtimesession.d.ts +53 -41
- package/dist_ts/requests/secret.d.ts +4 -5
- package/dist_ts/requests/secret.js +1 -5
- package/dist_ts/requests/service.d.ts +60 -0
- package/dist_ts/runtime.corestore.d.ts +56 -74
- package/dist_ts/runtime.corestore.databaseexportpackage.d.ts +30 -36
- package/dist_ts/runtime.corestore.databaseexportpackage.golden.d.ts +11 -12
- package/dist_ts/runtime.corestore.databaseexportpackage.golden.js +54 -71
- package/dist_ts/runtime.corestore.databaseexportpackage.js +9 -25
- package/dist_ts/runtime.corestore.js +35 -135
- package/dist_ts/runtime.corestore.relay.js +2 -7
- package/dist_ts/runtime.d.ts +38 -48
- package/dist_ts/runtime.js +20 -77
- package/dist_ts/runtime.networkprojection.d.ts +4 -4
- package/dist_ts/runtime.networkprojection.js +18 -18
- package/dist_ts/runtime.workloadinit.d.ts +23 -24
- package/dist_ts/runtime.workloadinit.js +6 -13
- package/package.json +2 -2
- package/readme.md +540 -269
- package/ts/00_commitinfo_data.ts +3 -3
- package/ts/appstore/types.ts +4 -6
- package/ts/data/backup.ts +3 -38
- package/ts/data/cluster.ts +51 -34
- package/ts/data/clusteringress.ts +12 -12
- package/ts/data/clusternode.ts +204 -232
- package/ts/data/clusterruntime.ts +45 -0
- package/ts/data/coremail.runtime.ts +4 -21
- package/ts/data/coremail.ts +3 -7
- package/ts/data/deploymentadoption.ts +46 -4
- package/ts/data/deploymentoperation.ts +16 -1
- package/ts/data/deploymentpreflight.ts +0 -2
- package/ts/data/immutableimage.ts +71 -24
- package/ts/data/index.ts +5 -1
- package/ts/data/isolatedrestore.golden.ts +5 -9
- package/ts/data/isolatedrestore.ts +339 -54
- package/ts/data/mail.ts +1 -1
- package/ts/data/networkaddressplan.ts +175 -0
- package/ts/data/networkauthority.ts +45 -61
- package/ts/data/networkcredential.ts +24 -24
- package/ts/data/networkdelivery.ts +27 -27
- package/ts/data/networklease.ts +40 -13
- package/ts/data/networknode.ts +37 -0
- package/ts/data/networkprojection.ts +119 -124
- package/ts/data/networkprotection.ts +54 -55
- package/ts/data/networkrouter.ts +14 -14
- package/ts/data/networksigning.ts +29 -32
- package/ts/data/nodecredential.ts +4 -6
- package/ts/data/nodeenrollment.ts +96 -114
- package/ts/data/privatenetwork.ts +58 -74
- package/ts/data/runtimeassignment.ts +143 -94
- package/ts/data/runtimeconfig.ts +62 -122
- package/ts/data/runtimesession.ts +185 -138
- package/ts/data/runtimeterminalreceipt.ts +72 -73
- package/ts/data/secret.ts +28 -76
- package/ts/data/servicecredential.ts +33 -43
- package/ts/data/serviceruntime.ts +208 -0
- package/ts/data/sparknodereport.ts +48 -36
- package/ts/data/webpush.ts +0 -1
- package/ts/index.ts +2 -0
- package/ts/platform/objectstorageretention.ts +36 -55
- package/ts/platform/storage.ts +1 -3
- package/ts/platform/storagemigration.golden.ts +7 -11
- package/ts/platform/storagemigration.ts +5 -55
- package/ts/platform/types.ts +2 -2
- package/ts/private/canonicaljson.ts +13 -1
- package/ts/private/dataproperties.ts +139 -0
- package/ts/private/networkcontract.ts +23 -9
- package/ts/private/producercontract.ts +19 -0
- package/ts/private/releaseversion.ts +70 -0
- package/ts/private/runtimepolicy.ts +105 -0
- package/ts/private/tokenlist.ts +30 -0
- package/ts/protocol.ts +364 -0
- package/ts/requests/admin.ts +11 -11
- package/ts/requests/backup.ts +112 -117
- package/ts/requests/cluster.ts +58 -13
- package/ts/requests/clusteringress.ts +9 -0
- package/ts/requests/config.ts +3 -3
- package/ts/requests/corestore.ts +4 -16
- package/ts/requests/network.ts +90 -41
- package/ts/requests/node.ts +21 -38
- package/ts/requests/pallet.ts +17 -17
- package/ts/requests/runtimesession.ts +63 -51
- package/ts/requests/secret.ts +5 -10
- package/ts/requests/service.ts +81 -0
- package/ts/runtime.corestore.databaseexportpackage.golden.ts +77 -95
- package/ts/runtime.corestore.databaseexportpackage.ts +51 -73
- package/ts/runtime.corestore.relay.ts +1 -10
- package/ts/runtime.corestore.ts +118 -268
- package/ts/runtime.networkprojection.ts +30 -30
- package/ts/runtime.ts +83 -158
- package/ts/runtime.workloadinit.ts +36 -48
- package/dist_ts/runtime.cloudlylegacydeploymentsettlement.d.ts +0 -902
- package/dist_ts/runtime.cloudlylegacydeploymentsettlement.golden.d.ts +0 -35
- package/dist_ts/runtime.cloudlylegacydeploymentsettlement.golden.js +0 -315
- package/dist_ts/runtime.cloudlylegacydeploymentsettlement.js +0 -3315
- package/dist_ts/runtime.cloudlylegacydeploymentsettlement.offlineexport.d.ts +0 -291
- package/dist_ts/runtime.cloudlylegacydeploymentsettlement.offlineexport.golden.d.ts +0 -30
- package/dist_ts/runtime.cloudlylegacydeploymentsettlement.offlineexport.golden.js +0 -408
- package/dist_ts/runtime.cloudlylegacydeploymentsettlement.offlineexport.js +0 -1126
- package/ts/runtime.cloudlylegacydeploymentsettlement.golden.ts +0 -421
- package/ts/runtime.cloudlylegacydeploymentsettlement.offlineexport.golden.ts +0 -510
- package/ts/runtime.cloudlylegacydeploymentsettlement.offlineexport.ts +0 -2470
- package/ts/runtime.cloudlylegacydeploymentsettlement.ts +0 -6630
|
@@ -1,8 +1,18 @@
|
|
|
1
1
|
import { isSha256Digest } from './immutableimage.js';
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
2
|
+
import { getRuntimeAssignmentReference, isResolvedWorkloadAuthorities, snapshotRuntimeAssignmentObservation, snapshotRuntimeAssignment, validateRuntimeAssignmentObservation, validateRuntimeAssignment, } from './runtimeassignment.js';
|
|
3
|
+
import { negotiateProtocol, readProtocolOffer } from '../protocol.js';
|
|
4
|
+
import { bindRuntimeConfigToAssignment, snapshotRuntimeConfig } from './runtimeconfig.js';
|
|
4
5
|
import { canonicalizeStrictJson } from '../private/canonicaljson.js';
|
|
5
|
-
|
|
6
|
+
/**
|
|
7
|
+
* The rules every runtime session registration is judged by.
|
|
8
|
+
*
|
|
9
|
+
* Every carrier here is judged in the one server order `protocol.readProtocolOffer` states,
|
|
10
|
+
* against this session kind's own offer, so the snapshots below see a body whose offer this
|
|
11
|
+
* controller already accepted. For a node that order is also what keeps a refused registration
|
|
12
|
+
* from touching its packet access: the refusal is named before `networkVpn` is asked to mutate
|
|
13
|
+
* anything.
|
|
14
|
+
*/
|
|
15
|
+
export const runtimeSessionContract = Object.freeze({
|
|
6
16
|
maximumWireCanonicalBytes: 327_680,
|
|
7
17
|
maximumCredentialBytes: 16_384,
|
|
8
18
|
maximumRegistryPasswordBytes: 8192,
|
|
@@ -11,11 +21,9 @@ export const runtimeSessionV1Contract = Object.freeze({
|
|
|
11
21
|
nodeInstanceNonceFormat: 'canonical-lowercase-uuid-per-node-process',
|
|
12
22
|
/** The registration a controller must treat as one: a change in any part is a new session. */
|
|
13
23
|
registrationIdentity: 'node-id-and-credential-generation-and-node-instance-nonce',
|
|
14
|
-
/** A relay socket carries many nodes, so its transport cannot prove a node process. */
|
|
15
|
-
relayRegistrationRequiresNodeInstanceNonce: true,
|
|
16
24
|
error: 'Runtime session contract rejected.',
|
|
17
25
|
});
|
|
18
|
-
const fail = () => { throw new Error(
|
|
26
|
+
const fail = () => { throw new Error(runtimeSessionContract.error); };
|
|
19
27
|
function requireValue(conditionArg) {
|
|
20
28
|
if (!conditionArg)
|
|
21
29
|
fail();
|
|
@@ -55,9 +63,9 @@ const capture = (valueArg) => safe(() => {
|
|
|
55
63
|
let stringBytes = 0;
|
|
56
64
|
const ancestors = new Set();
|
|
57
65
|
const account = (value) => {
|
|
58
|
-
requireValue(value.length <=
|
|
66
|
+
requireValue(value.length <= runtimeSessionContract.maximumWireCanonicalBytes);
|
|
59
67
|
stringBytes += encoder.encode(value).byteLength;
|
|
60
|
-
requireValue(stringBytes <=
|
|
68
|
+
requireValue(stringBytes <= runtimeSessionContract.maximumWireCanonicalBytes);
|
|
61
69
|
};
|
|
62
70
|
const copy = (value, depth) => {
|
|
63
71
|
requireValue(++nodes <= 10_240 && depth <= 16);
|
|
@@ -101,7 +109,7 @@ const capture = (valueArg) => safe(() => {
|
|
|
101
109
|
}
|
|
102
110
|
};
|
|
103
111
|
const serialized = canonical(copy(valueArg, 0));
|
|
104
|
-
requireValue(encoder.encode(serialized).byteLength <=
|
|
112
|
+
requireValue(encoder.encode(serialized).byteLength <= runtimeSessionContract.maximumWireCanonicalBytes);
|
|
105
113
|
return JSON.parse(serialized);
|
|
106
114
|
});
|
|
107
115
|
const record = (valueArg, keysArg, optionalKeysArg = []) => {
|
|
@@ -117,12 +125,12 @@ const reference = (valueArg) => {
|
|
|
117
125
|
return { assignmentId: identifier(value.assignmentId), generation: positive(value.generation), digest: value.digest };
|
|
118
126
|
};
|
|
119
127
|
const session = (valueArg) => {
|
|
120
|
-
const value = record(valueArg, ['
|
|
128
|
+
const value = record(valueArg, ['reporterSessionId', 'nodeId', 'credentialGeneration',
|
|
121
129
|
'sessionEpoch', 'controllerInstanceId', 'controller', 'runtimeNamespace']);
|
|
122
130
|
const controller = record(value.controller, ['kind', 'id', 'epoch']);
|
|
123
|
-
requireValue(
|
|
131
|
+
requireValue(controller.kind === 'cloudly' || controller.kind === 'onebox');
|
|
124
132
|
return {
|
|
125
|
-
|
|
133
|
+
reporterSessionId: identifier(value.reporterSessionId), nodeId: nodeId(value.nodeId),
|
|
126
134
|
credentialGeneration: positive(value.credentialGeneration), sessionEpoch: positive(value.sessionEpoch),
|
|
127
135
|
controllerInstanceId: identifier(value.controllerInstanceId),
|
|
128
136
|
controller: { kind: controller.kind, id: identifier(controller.id), epoch: identifier(controller.epoch) },
|
|
@@ -135,77 +143,88 @@ const sameOwner = (leftArg, rightArg) => leftArg.nodeId === rightArg.nodeId && l
|
|
|
135
143
|
const matchesAssignment = (sessionArg, assignmentArg) => sessionArg.nodeId === assignmentArg.nodeId && sessionArg.runtimeNamespace === assignmentArg.runtimeNamespace
|
|
136
144
|
&& canonical(sessionArg.controller) === canonical(assignmentArg.controller);
|
|
137
145
|
/** Synchronous detached structural assertion only; never an authentication check. */
|
|
138
|
-
export const
|
|
139
|
-
export const
|
|
140
|
-
const value = record(capture(valueArg), ['
|
|
141
|
-
requireValue(value.
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
return request;
|
|
146
|
+
export const snapshotRuntimeSessionBinding = (valueArg) => safe(() => session(capture(valueArg)));
|
|
147
|
+
export const snapshotRegisterPalletRuntimeSessionRequest = (valueArg) => safe(() => {
|
|
148
|
+
const value = record(capture(valueArg), ['nodeId', 'credentialGeneration', 'bearer', 'nodeInstanceNonce', 'resolvedAuthorities', 'protocol']);
|
|
149
|
+
requireValue(typeof value.bearer === 'string' && /^palletToken[0-9a-f]{64}$/.test(value.bearer));
|
|
150
|
+
requireValue(isResolvedWorkloadAuthorities(value.resolvedAuthorities));
|
|
151
|
+
return {
|
|
152
|
+
nodeId: nodeId(value.nodeId), credentialGeneration: positive(value.credentialGeneration),
|
|
153
|
+
bearer: value.bearer, nodeInstanceNonce: nodeInstanceNonce(value.nodeInstanceNonce),
|
|
154
|
+
resolvedAuthorities: [...value.resolvedAuthorities], protocol: readProtocolOffer(value),
|
|
155
|
+
};
|
|
149
156
|
});
|
|
150
|
-
export const
|
|
157
|
+
export const snapshotRegisterPalletRuntimeSessionResponse = (valueArg) => safe(() => {
|
|
158
|
+
const value = record(capture(valueArg), ['session', 'protocol']);
|
|
159
|
+
return { session: session(value.session), protocol: readProtocolOffer(value) };
|
|
160
|
+
});
|
|
161
|
+
export const snapshotApplyRuntimeAssignmentRequest = (valueArg) => safe(() => {
|
|
151
162
|
const value = record(capture(valueArg), ['session', 'assignment', 'config', 'predecessor']);
|
|
152
|
-
const assignment =
|
|
163
|
+
const assignment = snapshotRuntimeAssignment(value.assignment);
|
|
153
164
|
const predecessor = value.predecessor === null ? null : reference(value.predecessor);
|
|
154
165
|
// Assignment revisions use assignment.previous; a replacement names a different attempt.
|
|
155
166
|
requireValue(predecessor === null || predecessor.assignmentId !== assignment.assignmentId);
|
|
156
|
-
return { session: session(value.session), assignment, config:
|
|
167
|
+
return { session: session(value.session), assignment, config: snapshotRuntimeConfig(value.config), predecessor };
|
|
157
168
|
});
|
|
158
|
-
export const
|
|
169
|
+
export const snapshotApplyRuntimeAssignmentResponse = (valueArg) => safe(() => {
|
|
159
170
|
const value = record(capture(valueArg), ['status', 'assignment']);
|
|
160
171
|
requireValue(value.status === 'accepted' || value.status === 'replay' || value.status === 'historical');
|
|
161
172
|
return { status: value.status, assignment: reference(value.assignment) };
|
|
162
173
|
});
|
|
163
|
-
export const
|
|
174
|
+
export const snapshotReportRuntimeAssignmentObservationRequest = (valueArg) => safe(() => {
|
|
164
175
|
const value = record(capture(valueArg), ['session', 'observation']);
|
|
165
|
-
return { session: session(value.session), observation:
|
|
176
|
+
return { session: session(value.session), observation: snapshotRuntimeAssignmentObservation(value.observation) };
|
|
166
177
|
});
|
|
167
|
-
export const
|
|
178
|
+
export const snapshotReportRuntimeAssignmentObservationResponse = (valueArg) => safe(() => {
|
|
168
179
|
const value = record(capture(valueArg), ['observation', 'authorityUse']);
|
|
169
180
|
requireValue(value.authorityUse === 'current-session' || value.authorityUse === 'historical-recovery');
|
|
170
|
-
return { observation:
|
|
181
|
+
return { observation: snapshotRuntimeAssignmentObservation(value.observation), authorityUse: value.authorityUse };
|
|
171
182
|
});
|
|
172
|
-
export const
|
|
183
|
+
export const snapshotGetRuntimeRegistryCredentialRequest = (valueArg) => safe(() => {
|
|
173
184
|
const value = record(capture(valueArg), ['session', 'assignment']);
|
|
174
185
|
return { session: session(value.session), assignment: reference(value.assignment) };
|
|
175
186
|
});
|
|
176
|
-
export const
|
|
187
|
+
export const snapshotGetRuntimeRegistryCredentialResponse = (valueArg) => safe(() => {
|
|
177
188
|
const value = record(capture(valueArg), ['username', 'password', 'expiresAt']);
|
|
178
189
|
requireValue(typeof value.username === 'string' && value.username.length > 0
|
|
179
190
|
&& encoder.encode(value.username).byteLength <= 1024 && !/[\s:\u0000-\u001f\u007f]/.test(value.username));
|
|
180
191
|
requireValue(typeof value.password === 'string' && value.password.length > 0
|
|
181
|
-
&& encoder.encode(value.password).byteLength <=
|
|
192
|
+
&& encoder.encode(value.password).byteLength <= runtimeSessionContract.maximumRegistryPasswordBytes
|
|
182
193
|
&& !/[\u0000-\u001f\u007f]/.test(value.password));
|
|
183
194
|
return { username: value.username, password: value.password, expiresAt: positive(value.expiresAt) };
|
|
184
195
|
});
|
|
185
|
-
export const
|
|
186
|
-
const value = record(capture(valueArg), ['
|
|
196
|
+
export const snapshotRegisterCloudlyClientSessionRequest = (valueArg) => safe(() => {
|
|
197
|
+
const value = record(capture(valueArg), ['identity', 'protocol']);
|
|
187
198
|
const identity = record(value.identity, ['jwt']);
|
|
188
|
-
requireValue(
|
|
189
|
-
&& identity.jwt.length <=
|
|
199
|
+
requireValue(typeof identity.jwt === 'string'
|
|
200
|
+
&& identity.jwt.length <= runtimeSessionContract.maximumCredentialBytes
|
|
190
201
|
&& /^[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+$/.test(identity.jwt));
|
|
191
|
-
return {
|
|
202
|
+
return { identity: { jwt: identity.jwt }, protocol: readProtocolOffer(value) };
|
|
192
203
|
});
|
|
193
|
-
export const
|
|
194
|
-
const value = record(capture(valueArg), ['registered']);
|
|
204
|
+
export const snapshotRegisterCloudlyClientSessionResponse = (valueArg) => safe(() => {
|
|
205
|
+
const value = record(capture(valueArg), ['registered', 'protocol']);
|
|
195
206
|
requireValue(value.registered === true);
|
|
196
|
-
return { registered: true };
|
|
207
|
+
return { registered: true, protocol: readProtocolOffer(value) };
|
|
197
208
|
});
|
|
198
|
-
/**
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
209
|
+
/**
|
|
210
|
+
* Bind the authenticated Cloudly registration reply to the node, credential and offer sent.
|
|
211
|
+
*
|
|
212
|
+
* The client negotiates the answered offer against the one it sent: acceptance by a controller is
|
|
213
|
+
* that controller's judgement, and a node that cannot serve the session it was given must not open
|
|
214
|
+
* it. Both offers were read from the two bodies, so this compares what was actually exchanged.
|
|
215
|
+
*/
|
|
216
|
+
export const bindRegisterPalletRuntimeSessionResponse = (valueArg, requestArg) => safe(() => {
|
|
217
|
+
const response = snapshotRegisterPalletRuntimeSessionResponse(valueArg);
|
|
218
|
+
const request = snapshotRegisterPalletRuntimeSessionRequest(requestArg);
|
|
219
|
+
requireValue(response.session.controller.kind === 'cloudly'
|
|
220
|
+
&& response.session.nodeId === request.nodeId
|
|
221
|
+
&& response.session.credentialGeneration === request.credentialGeneration
|
|
222
|
+
&& negotiateProtocol(request.protocol, response.protocol).compatible);
|
|
204
223
|
return response;
|
|
205
224
|
});
|
|
206
225
|
/** Reject already expired material; issuance policy and current assignment authority remain server-owned. */
|
|
207
|
-
export const
|
|
208
|
-
const response =
|
|
226
|
+
export const bindGetRuntimeRegistryCredentialResponse = (valueArg, nowArg) => safe(() => {
|
|
227
|
+
const response = snapshotGetRuntimeRegistryCredentialResponse(valueArg);
|
|
209
228
|
requireValue(response.expiresAt > positive(nowArg));
|
|
210
229
|
return response;
|
|
211
230
|
});
|
|
@@ -214,12 +233,12 @@ export const bindGetRuntimeRegistryCredentialResponseV1 = (valueArg, nowArg) =>
|
|
|
214
233
|
* come from the receiving live connection, never from another request field.
|
|
215
234
|
* This binds content only; durable CAS, slot admission and authority remain owners.
|
|
216
235
|
*/
|
|
217
|
-
export const
|
|
236
|
+
export const bindApplyRuntimeAssignmentRequest = async (valueArg, trustedSessionArg) => {
|
|
218
237
|
try {
|
|
219
|
-
const request =
|
|
220
|
-
const trustedSession =
|
|
238
|
+
const request = snapshotApplyRuntimeAssignmentRequest(valueArg);
|
|
239
|
+
const trustedSession = snapshotRuntimeSessionBinding(trustedSessionArg);
|
|
221
240
|
requireValue(sameSession(request.session, trustedSession) && matchesAssignment(trustedSession, request.assignment));
|
|
222
|
-
await
|
|
241
|
+
await bindRuntimeConfigToAssignment(request.config, request.assignment);
|
|
223
242
|
return request;
|
|
224
243
|
}
|
|
225
244
|
catch {
|
|
@@ -227,10 +246,10 @@ export const bindApplyRuntimeAssignmentRequestV1 = async (valueArg, trustedSessi
|
|
|
227
246
|
}
|
|
228
247
|
};
|
|
229
248
|
/** Match an admission acknowledgement to the exact sent revision, including historical replies. */
|
|
230
|
-
export const
|
|
231
|
-
const response =
|
|
232
|
-
const request =
|
|
233
|
-
requireValue(canonical(response.assignment) === canonical(
|
|
249
|
+
export const bindApplyRuntimeAssignmentResponse = (valueArg, requestArg) => safe(() => {
|
|
250
|
+
const response = snapshotApplyRuntimeAssignmentResponse(valueArg);
|
|
251
|
+
const request = snapshotApplyRuntimeAssignmentRequest(requestArg);
|
|
252
|
+
requireValue(canonical(response.assignment) === canonical(getRuntimeAssignmentReference(request.assignment)));
|
|
234
253
|
return response;
|
|
235
254
|
});
|
|
236
255
|
/**
|
|
@@ -240,12 +259,12 @@ export const bindApplyRuntimeAssignmentResponseV1 = (valueArg, requestArg) => sa
|
|
|
240
259
|
* The owning transaction must recheck current credential/peer authority. Assignment
|
|
241
260
|
* digest validation and report-specific authority remain the caller's responsibility.
|
|
242
261
|
*/
|
|
243
|
-
export const
|
|
244
|
-
const incomingSession =
|
|
262
|
+
export const bindRuntimeReporterSession = (sessionArg, reporterSessionIdArg, assignmentArg, trustedSessionArg, reporterHistoryArg) => safe(() => {
|
|
263
|
+
const incomingSession = snapshotRuntimeSessionBinding(sessionArg);
|
|
245
264
|
const reporterSessionId = identifier(reporterSessionIdArg);
|
|
246
|
-
const assignment =
|
|
247
|
-
const trustedSession =
|
|
248
|
-
const reporterHistory =
|
|
265
|
+
const assignment = snapshotRuntimeAssignment(capture(assignmentArg));
|
|
266
|
+
const trustedSession = snapshotRuntimeSessionBinding(trustedSessionArg);
|
|
267
|
+
const reporterHistory = snapshotRuntimeSessionBinding(reporterHistoryArg);
|
|
249
268
|
requireValue(sameSession(incomingSession, trustedSession) && matchesAssignment(trustedSession, assignment)
|
|
250
269
|
&& reporterSessionId === reporterHistory.reporterSessionId && sameOwner(trustedSession, reporterHistory));
|
|
251
270
|
const current = sameSession(reporterHistory, trustedSession);
|
|
@@ -258,19 +277,19 @@ export const bindRuntimeReporterSessionV1 = (sessionArg, reporterSessionIdArg, a
|
|
|
258
277
|
/**
|
|
259
278
|
* trustedSessionArg is the CURRENT authenticated physical peer. reporterHistoryArg
|
|
260
279
|
* must be server-indexed immutable session history, obtained by the original
|
|
261
|
-
* observation's reporterSessionId; never accept caller-supplied history.
|
|
262
|
-
* runtime
|
|
280
|
+
* observation's reporterSessionId; never accept caller-supplied history. Every
|
|
281
|
+
* runtime session is a Pallet-purpose session, so Spark history cannot qualify.
|
|
263
282
|
*
|
|
264
283
|
* This verifies content and classifies recovery, not authentication, history
|
|
265
284
|
* provenance, sequence admission or current authority. The server must transact
|
|
266
285
|
* receipt/counter acceptance under current credential and peer authority. A
|
|
267
286
|
* historical result MUST NOT restore active readiness, routes or liveness.
|
|
268
287
|
*/
|
|
269
|
-
export const
|
|
288
|
+
export const bindReportRuntimeAssignmentObservationRequest = async (valueArg, assignmentArg, trustedSessionArg, reporterHistoryArg) => {
|
|
270
289
|
try {
|
|
271
|
-
const request =
|
|
272
|
-
const binding =
|
|
273
|
-
requireValue((await
|
|
290
|
+
const request = snapshotReportRuntimeAssignmentObservationRequest(valueArg);
|
|
291
|
+
const binding = bindRuntimeReporterSession(request.session, request.observation.reporterSessionId, assignmentArg, trustedSessionArg, reporterHistoryArg);
|
|
292
|
+
requireValue((await validateRuntimeAssignmentObservation(request.observation, binding.assignment)).length === 0);
|
|
274
293
|
return { request, authorityUse: binding.authorityUse };
|
|
275
294
|
}
|
|
276
295
|
catch {
|
|
@@ -278,28 +297,28 @@ export const bindReportRuntimeAssignmentObservationRequestV1 = async (valueArg,
|
|
|
278
297
|
}
|
|
279
298
|
};
|
|
280
299
|
/** Reject body rewriting and a historical receipt mislabeled as current authority. */
|
|
281
|
-
export const
|
|
282
|
-
const response =
|
|
283
|
-
const request =
|
|
300
|
+
export const bindReportRuntimeAssignmentObservationResponse = (valueArg, requestArg) => safe(() => {
|
|
301
|
+
const response = snapshotReportRuntimeAssignmentObservationResponse(valueArg);
|
|
302
|
+
const request = snapshotReportRuntimeAssignmentObservationRequest(requestArg);
|
|
284
303
|
requireValue(canonical(response.observation) === canonical(request.observation)
|
|
285
304
|
&& response.authorityUse === (request.observation.reporterSessionId === request.session.reporterSessionId
|
|
286
305
|
? 'current-session' : 'historical-recovery'));
|
|
287
306
|
return response;
|
|
288
307
|
});
|
|
289
308
|
/** Current assignment lookup and live peer authorization remain mandatory server-owned inputs. */
|
|
290
|
-
export const
|
|
309
|
+
export const bindGetRuntimeRegistryCredentialRequest = async (valueArg, assignmentArg, trustedSessionArg) => {
|
|
291
310
|
try {
|
|
292
|
-
const request =
|
|
293
|
-
const assignment =
|
|
294
|
-
const trustedSession =
|
|
311
|
+
const request = snapshotGetRuntimeRegistryCredentialRequest(valueArg);
|
|
312
|
+
const assignment = snapshotRuntimeAssignment(capture(assignmentArg));
|
|
313
|
+
const trustedSession = snapshotRuntimeSessionBinding(trustedSessionArg);
|
|
295
314
|
requireValue(sameSession(request.session, trustedSession) && matchesAssignment(trustedSession, assignment)
|
|
296
315
|
&& assignment.disposition === 'run'
|
|
297
|
-
&& canonical(request.assignment) === canonical(
|
|
298
|
-
requireValue((await
|
|
316
|
+
&& canonical(request.assignment) === canonical(getRuntimeAssignmentReference(assignment)));
|
|
317
|
+
requireValue((await validateRuntimeAssignment(assignment)).length === 0);
|
|
299
318
|
return request;
|
|
300
319
|
}
|
|
301
320
|
catch {
|
|
302
321
|
return fail();
|
|
303
322
|
}
|
|
304
323
|
};
|
|
305
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVudGltZXNlc3Npb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90cy9kYXRhL3J1bnRpbWVzZXNzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUtyRCxPQUFPLEVBQ0wsK0JBQStCLEVBQUUsc0NBQXNDLEVBQ3ZFLDJCQUEyQixFQUFFLHNDQUFzQyxFQUFFLDJCQUEyQixHQUNqRyxNQUFNLHdCQUF3QixDQUFDO0FBRWhDLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzlGLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBd0dyRSxNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDO0lBQ3BELHlCQUF5QixFQUFFLE9BQU87SUFDbEMsc0JBQXNCLEVBQUUsTUFBTTtJQUM5Qiw0QkFBNEIsRUFBRSxJQUFJO0lBQ2xDLGlCQUFpQixFQUFFLHlEQUF5RDtJQUM1RSw4QkFBOEIsRUFBRSw4QkFBOEI7SUFDOUQsdUJBQXVCLEVBQUUsMkNBQTJDO0lBQ3BFLDhGQUE4RjtJQUM5RixvQkFBb0IsRUFBRSwyREFBMkQ7SUFDakYsdUZBQXVGO0lBQ3ZGLDBDQUEwQyxFQUFFLElBQUk7SUFDaEQsS0FBSyxFQUFFLG9DQUFvQztDQUNuQyxDQUFDLENBQUM7QUFFWixNQUFNLElBQUksR0FBRyxHQUFVLEVBQUUsR0FBRyxNQUFNLElBQUksS0FBSyxDQUFDLHdCQUF3QixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQy9FLFNBQVMsWUFBWSxDQUFDLFlBQXFCO0lBQ3pDLElBQUksQ0FBQyxZQUFZO1FBQUUsSUFBSSxFQUFFLENBQUM7QUFDNUIsQ0FBQztBQUNELE1BQU0sSUFBSSxHQUFHLENBQUksWUFBcUIsRUFBSyxFQUFFO0lBQzNDLElB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
|
|
324
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVudGltZXNlc3Npb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90cy9kYXRhL3J1bnRpbWVzZXNzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUtyRCxPQUFPLEVBQ0wsNkJBQTZCLEVBQUUsNkJBQTZCLEVBQUUsb0NBQW9DLEVBQ2xHLHlCQUF5QixFQUFFLG9DQUFvQyxFQUFFLHlCQUF5QixHQUMzRixNQUFNLHdCQUF3QixDQUFDO0FBQ2hDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxpQkFBaUIsRUFBdUIsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzRixPQUFPLEVBQUUsNkJBQTZCLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUMxRixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQWdJckU7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDO0lBQ2xELHlCQUF5QixFQUFFLE9BQU87SUFDbEMsc0JBQXNCLEVBQUUsTUFBTTtJQUM5Qiw0QkFBNEIsRUFBRSxJQUFJO0lBQ2xDLGlCQUFpQixFQUFFLHlEQUF5RDtJQUM1RSw4QkFBOEIsRUFBRSw4QkFBOEI7SUFDOUQsdUJBQXVCLEVBQUUsMkNBQTJDO0lBQ3BFLDhGQUE4RjtJQUM5RixvQkFBb0IsRUFBRSwyREFBMkQ7SUFDakYsS0FBSyxFQUFFLG9DQUFvQztDQUNuQyxDQUFDLENBQUM7QUFFWixNQUFNLElBQUksR0FBRyxHQUFVLEVBQUUsR0FBRyxNQUFNLElBQUksS0FBSyxDQUFDLHNCQUFzQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzdFLFNBQVMsWUFBWSxDQUFDLFlBQXFCO0lBQ3pDLElBQUksQ0FBQyxZQUFZO1FBQUUsSUFBSSxFQUFFLENBQUM7QUFDNUIsQ0FB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
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import type { TSha256Digest } from './immutableimage.js';
|
|
2
|
-
import type {
|
|
3
|
-
import type {
|
|
2
|
+
import type { IRuntimeAssignmentReference } from './runtimeassignment.js';
|
|
3
|
+
import type { IRuntimeSessionBinding, TRuntimeObservationAuthorityUse } from './runtimesession.js';
|
|
4
4
|
/** Exact value-free native terminal evidence; terminal inspection does not collect addresses. */
|
|
5
|
-
export interface
|
|
5
|
+
export interface IRuntimeAssignmentTerminalEvidence {
|
|
6
6
|
phase: 'stopped' | 'absent';
|
|
7
7
|
sandboxId: string | null;
|
|
8
8
|
containerId: string | null;
|
|
@@ -21,12 +21,11 @@ export interface IRuntimeAssignmentTerminalEvidenceV1 {
|
|
|
21
21
|
* liveness, storage relocation, whole-host, Docker/Coreflow absence, other
|
|
22
22
|
* controller or cross-organization authority. It has no authoritative wall clock.
|
|
23
23
|
*/
|
|
24
|
-
export interface
|
|
25
|
-
schemaVersion: 1;
|
|
24
|
+
export interface IRuntimeAssignmentTerminalReceipt {
|
|
26
25
|
/** Exact generation 2 stop or generation 3 remove revision. */
|
|
27
|
-
assignment:
|
|
26
|
+
assignment: IRuntimeAssignmentReference;
|
|
28
27
|
/** Exact immutable generation 1 run revision. */
|
|
29
|
-
runAssignment:
|
|
28
|
+
runAssignment: IRuntimeAssignmentReference;
|
|
30
29
|
reporterSessionId: string;
|
|
31
30
|
sequence: 1 | 2;
|
|
32
31
|
operation: {
|
|
@@ -34,32 +33,32 @@ export interface IRuntimeAssignmentTerminalReceiptV1 {
|
|
|
34
33
|
action: 'stop' | 'remove';
|
|
35
34
|
bootId: string;
|
|
36
35
|
status: 'completed';
|
|
37
|
-
evidence:
|
|
36
|
+
evidence: IRuntimeAssignmentTerminalEvidence;
|
|
38
37
|
};
|
|
39
38
|
/** Null for stop; the exact accepted stop receipt digest for remove. */
|
|
40
39
|
previousReceiptDigest: TSha256Digest | null;
|
|
41
40
|
digest: TSha256Digest;
|
|
42
41
|
}
|
|
43
|
-
export interface
|
|
42
|
+
export interface IReportRuntimeAssignmentTerminalReceiptRequest {
|
|
44
43
|
/** Current physical peer binding, even when the immutable receipt is historical. */
|
|
45
|
-
session:
|
|
46
|
-
receipt:
|
|
44
|
+
session: IRuntimeSessionBinding;
|
|
45
|
+
receipt: IRuntimeAssignmentTerminalReceipt;
|
|
47
46
|
}
|
|
48
|
-
export interface
|
|
47
|
+
export interface IReportRuntimeAssignmentTerminalReceiptResponse {
|
|
49
48
|
/** Exact immutable body after the owning durable receipt transaction. */
|
|
50
|
-
receipt:
|
|
49
|
+
receipt: IRuntimeAssignmentTerminalReceipt;
|
|
51
50
|
/** Historical recovery never restores active readiness, routes or liveness. */
|
|
52
|
-
authorityUse:
|
|
51
|
+
authorityUse: TRuntimeObservationAuthorityUse;
|
|
53
52
|
}
|
|
54
|
-
export type
|
|
53
|
+
export type TRuntimeAssignmentTerminalReceiptDecision = {
|
|
55
54
|
status: 'accept' | 'replay';
|
|
56
|
-
receipt:
|
|
55
|
+
receipt: IRuntimeAssignmentTerminalReceipt;
|
|
57
56
|
} | {
|
|
58
57
|
status: 'reject';
|
|
59
58
|
reason: 'invalid' | 'conflict' | 'sequence-gap' | 'predecessor-mismatch';
|
|
60
59
|
};
|
|
61
|
-
export declare const
|
|
62
|
-
readonly digestDomain: "serve.zone/runtime-assignment-terminal-receipt
|
|
60
|
+
export declare const runtimeAssignmentTerminalReceiptContract: Readonly<{
|
|
61
|
+
readonly digestDomain: "serve.zone/runtime-assignment-terminal-receipt";
|
|
63
62
|
readonly maximumReceiptCanonicalBytes: 16384;
|
|
64
63
|
readonly maximumHistoryCanonicalBytes: 98304;
|
|
65
64
|
readonly maximumReceipts: 2;
|
|
@@ -67,31 +66,31 @@ export declare const runtimeAssignmentTerminalReceiptV1Contract: Readonly<{
|
|
|
67
66
|
readonly error: "Runtime terminal receipt contract rejected.";
|
|
68
67
|
}>;
|
|
69
68
|
/** Detached exact-schema assertion only; digest, journal provenance and authority remain unverified. */
|
|
70
|
-
export declare const
|
|
69
|
+
export declare const snapshotRuntimeAssignmentTerminalReceipt: (valueArg: unknown) => IRuntimeAssignmentTerminalReceipt;
|
|
71
70
|
/** Bounded exact receipt history for synchronous persistence assertions; hashes remain unchecked. */
|
|
72
|
-
export declare const
|
|
71
|
+
export declare const snapshotRuntimeAssignmentTerminalReceiptHistory: (valueArg: unknown) => IRuntimeAssignmentTerminalReceipt[];
|
|
73
72
|
/** Domain-separated exact body digest; captures before asynchronous hashing. */
|
|
74
|
-
export declare const
|
|
73
|
+
export declare const computeRuntimeAssignmentTerminalReceiptDigest: (valueArg: IRuntimeAssignmentTerminalReceipt) => Promise<TSha256Digest>;
|
|
75
74
|
/** Full immutable run/stop/remove chain and exact prior stop receipt are mandatory for removal. */
|
|
76
|
-
export declare const
|
|
75
|
+
export declare const validateRuntimeAssignmentTerminalReceipt: (valueArg: unknown, assignmentHistoryArg: unknown, previousReceiptArg: unknown) => Promise<string[]>;
|
|
77
76
|
/**
|
|
78
77
|
* Pure bounded CAS decision. Persist under the owning transaction and current
|
|
79
78
|
* credential/peer fence. New acceptance also requires the exact global incumbent;
|
|
80
79
|
* only a previously persisted exact body can replay after the incumbent changes.
|
|
81
80
|
* The helper cannot prove either condition. Retain both bodies after removal.
|
|
82
81
|
*/
|
|
83
|
-
export declare const
|
|
84
|
-
export declare const
|
|
85
|
-
export declare const
|
|
82
|
+
export declare const evaluateRuntimeAssignmentTerminalReceipt: (valueArg: unknown, acceptedHistoryArg: unknown, assignmentHistoryArg: unknown) => Promise<TRuntimeAssignmentTerminalReceiptDecision>;
|
|
83
|
+
export declare const snapshotReportRuntimeAssignmentTerminalReceiptRequest: (valueArg: unknown) => IReportRuntimeAssignmentTerminalReceiptRequest;
|
|
84
|
+
export declare const snapshotReportRuntimeAssignmentTerminalReceiptResponse: (valueArg: unknown) => IReportRuntimeAssignmentTerminalReceiptResponse;
|
|
86
85
|
/**
|
|
87
86
|
* CURRENT physical session and immutable server-indexed reporter history are
|
|
88
87
|
* trusted owner inputs, never wire claims. The previous stop receipt must also
|
|
89
88
|
* come from the durable owner. This binds content; it does not authenticate,
|
|
90
89
|
* prove the local operation join, advance CAS, or admit a replacement.
|
|
91
90
|
*/
|
|
92
|
-
export declare const
|
|
93
|
-
request:
|
|
94
|
-
authorityUse:
|
|
91
|
+
export declare const bindReportRuntimeAssignmentTerminalReceiptRequest: (valueArg: unknown, assignmentHistoryArg: unknown, previousReceiptArg: unknown, trustedSessionArg: unknown, reporterHistoryArg: unknown) => Promise<{
|
|
92
|
+
request: IReportRuntimeAssignmentTerminalReceiptRequest;
|
|
93
|
+
authorityUse: TRuntimeObservationAuthorityUse;
|
|
95
94
|
}>;
|
|
96
95
|
/** Exact ACK of the immutable outbox body; no rewritten session, operation or chain. */
|
|
97
|
-
export declare const
|
|
96
|
+
export declare const bindReportRuntimeAssignmentTerminalReceiptResponse: (valueArg: unknown, requestArg: unknown) => IReportRuntimeAssignmentTerminalReceiptResponse;
|