@coderifts/agent-guard 8.3.0 → 8.5.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 +32 -27
- package/dist/cjs/auto-derive.d.ts +74 -0
- package/dist/cjs/auto-derive.d.ts.map +1 -0
- package/dist/cjs/auto-derive.js +272 -0
- package/dist/cjs/auto-derive.js.map +1 -0
- package/dist/cjs/auto-recheck.d.ts +76 -0
- package/dist/cjs/auto-recheck.d.ts.map +1 -0
- package/dist/cjs/auto-recheck.js +240 -0
- package/dist/cjs/auto-recheck.js.map +1 -0
- package/dist/cjs/cas-attestation.d.ts +35 -2
- package/dist/cjs/cas-attestation.d.ts.map +1 -1
- package/dist/cjs/cas-attestation.js +105 -2
- package/dist/cjs/cas-attestation.js.map +1 -1
- package/dist/cjs/execution-proof.d.ts +33 -0
- package/dist/cjs/execution-proof.d.ts.map +1 -1
- package/dist/cjs/execution-proof.js +16 -0
- package/dist/cjs/execution-proof.js.map +1 -1
- package/dist/cjs/final-answer-proof.d.ts.map +1 -1
- package/dist/cjs/final-answer-proof.js +28 -1
- package/dist/cjs/final-answer-proof.js.map +1 -1
- package/dist/cjs/guard.d.ts.map +1 -1
- package/dist/cjs/guard.js +85 -18
- package/dist/cjs/guard.js.map +1 -1
- package/dist/cjs/index.d.ts +8 -2
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +25 -3
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/monitoring-delivery.d.ts +63 -0
- package/dist/cjs/monitoring-delivery.d.ts.map +1 -0
- package/dist/cjs/monitoring-delivery.js +277 -0
- package/dist/cjs/monitoring-delivery.js.map +1 -0
- package/dist/cjs/tool-registry.d.ts.map +1 -1
- package/dist/cjs/tool-registry.js +36 -6
- package/dist/cjs/tool-registry.js.map +1 -1
- package/dist/cjs/types.d.ts +71 -4
- package/dist/cjs/types.d.ts.map +1 -1
- package/dist/cjs/with-coderifts.d.ts +23 -0
- package/dist/cjs/with-coderifts.d.ts.map +1 -1
- package/dist/cjs/with-coderifts.js +21 -0
- package/dist/cjs/with-coderifts.js.map +1 -1
- package/dist/esm/auto-derive.d.ts +74 -0
- package/dist/esm/auto-derive.d.ts.map +1 -0
- package/dist/esm/auto-derive.js +265 -0
- package/dist/esm/auto-derive.js.map +1 -0
- package/dist/esm/auto-recheck.d.ts +76 -0
- package/dist/esm/auto-recheck.d.ts.map +1 -0
- package/dist/esm/auto-recheck.js +234 -0
- package/dist/esm/auto-recheck.js.map +1 -0
- package/dist/esm/cas-attestation.d.ts +35 -2
- package/dist/esm/cas-attestation.d.ts.map +1 -1
- package/dist/esm/cas-attestation.js +103 -2
- package/dist/esm/cas-attestation.js.map +1 -1
- package/dist/esm/execution-proof.d.ts +33 -0
- package/dist/esm/execution-proof.d.ts.map +1 -1
- package/dist/esm/execution-proof.js +16 -0
- package/dist/esm/execution-proof.js.map +1 -1
- package/dist/esm/final-answer-proof.d.ts.map +1 -1
- package/dist/esm/final-answer-proof.js +28 -1
- package/dist/esm/final-answer-proof.js.map +1 -1
- package/dist/esm/guard.d.ts.map +1 -1
- package/dist/esm/guard.js +86 -19
- package/dist/esm/guard.js.map +1 -1
- package/dist/esm/index.d.ts +8 -2
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +6 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/monitoring-delivery.d.ts +63 -0
- package/dist/esm/monitoring-delivery.d.ts.map +1 -0
- package/dist/esm/monitoring-delivery.js +270 -0
- package/dist/esm/monitoring-delivery.js.map +1 -0
- package/dist/esm/tool-registry.d.ts.map +1 -1
- package/dist/esm/tool-registry.js +36 -6
- package/dist/esm/tool-registry.js.map +1 -1
- package/dist/esm/types.d.ts +71 -4
- package/dist/esm/types.d.ts.map +1 -1
- package/dist/esm/with-coderifts.d.ts +23 -0
- package/dist/esm/with-coderifts.d.ts.map +1 -1
- package/dist/esm/with-coderifts.js +21 -0
- package/dist/esm/with-coderifts.js.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,240 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* S6 auto-recheck loop — host-side orchestration AFTER a BLOCK with a remediation_transaction.
|
|
4
|
+
*
|
|
5
|
+
* Default OFF. The frozen guardToolCall is unchanged; this wraps it. The guard never writes
|
|
6
|
+
* artifacts: the host's applyFix applies the fix (honesty line). After applyFix true, artifacts
|
|
7
|
+
* are re-resolved FRESH (resolve() from artifact-resolver when resolveInput is supplied, else
|
|
8
|
+
* the host-updated call / rebind).
|
|
9
|
+
*
|
|
10
|
+
* recheck_scope is an OUTPUT on the BLOCK envelope (app remediation-transaction.js). The
|
|
11
|
+
* preflight request does not accept a scope hint (measured SDK / authorizeChangeSet) — so
|
|
12
|
+
* each attempt is a FULL re-preflight. Noted, not faked.
|
|
13
|
+
*
|
|
14
|
+
* Nothing here enters a fingerprint preimage (host orchestration only).
|
|
15
|
+
*/
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.AUTO_RECHECK_MAX_CAP = void 0;
|
|
18
|
+
exports.clampMaxAttempts = clampMaxAttempts;
|
|
19
|
+
exports.normalizeAutoRecheck = normalizeAutoRecheck;
|
|
20
|
+
exports.runAutoRecheckLoop = runAutoRecheckLoop;
|
|
21
|
+
const guard_js_1 = require("./guard.js");
|
|
22
|
+
const remediation_loop_attestation_js_1 = require("./remediation-loop-attestation.js");
|
|
23
|
+
const artifact_resolver_js_1 = require("./artifact-resolver.js");
|
|
24
|
+
/** Hard cap on RE-preflights per original call. */
|
|
25
|
+
exports.AUTO_RECHECK_MAX_CAP = 3;
|
|
26
|
+
function iso() {
|
|
27
|
+
return new Date().toISOString();
|
|
28
|
+
}
|
|
29
|
+
function emit(config, e) {
|
|
30
|
+
if (config.onEvent) {
|
|
31
|
+
try {
|
|
32
|
+
config.onEvent(e);
|
|
33
|
+
}
|
|
34
|
+
catch { /* onEvent never throws out */ }
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
function clampMaxAttempts(n) {
|
|
38
|
+
const v = typeof n === 'number' ? n : Number(n);
|
|
39
|
+
if (!Number.isFinite(v))
|
|
40
|
+
return 0;
|
|
41
|
+
const i = Math.floor(v);
|
|
42
|
+
if (i < 1)
|
|
43
|
+
return 0;
|
|
44
|
+
return i > exports.AUTO_RECHECK_MAX_CAP ? exports.AUTO_RECHECK_MAX_CAP : i;
|
|
45
|
+
}
|
|
46
|
+
function normalizeAutoRecheck(raw) {
|
|
47
|
+
if (!raw || typeof raw !== 'object')
|
|
48
|
+
return null;
|
|
49
|
+
const o = raw;
|
|
50
|
+
if (typeof o.applyFix !== 'function')
|
|
51
|
+
return null;
|
|
52
|
+
const maxAttempts = clampMaxAttempts(o.maxAttempts);
|
|
53
|
+
if (maxAttempts < 1)
|
|
54
|
+
return null;
|
|
55
|
+
const cfg = { maxAttempts, applyFix: o.applyFix };
|
|
56
|
+
if (typeof o.resolveInput === 'function')
|
|
57
|
+
cfg.resolveInput = o.resolveInput;
|
|
58
|
+
if (o.resolveConfig && typeof o.resolveConfig === 'object')
|
|
59
|
+
cfg.resolveConfig = o.resolveConfig;
|
|
60
|
+
return cfg;
|
|
61
|
+
}
|
|
62
|
+
function envelopeOf(outcome) {
|
|
63
|
+
const v = outcome.verdict;
|
|
64
|
+
if (v && 'envelope' in v && v.envelope && typeof v.envelope === 'object') {
|
|
65
|
+
return v.envelope;
|
|
66
|
+
}
|
|
67
|
+
return null;
|
|
68
|
+
}
|
|
69
|
+
function fingerprintOf(outcome) {
|
|
70
|
+
const env = envelopeOf(outcome);
|
|
71
|
+
if (env && typeof env.fingerprint === 'string' && env.fingerprint)
|
|
72
|
+
return env.fingerprint;
|
|
73
|
+
const fp = outcome.proof && outcome.proof.binds_to && outcome.proof.binds_to.change_fp;
|
|
74
|
+
return typeof fp === 'string' && fp ? fp : null;
|
|
75
|
+
}
|
|
76
|
+
function decisionIdOf(outcome) {
|
|
77
|
+
const env = envelopeOf(outcome);
|
|
78
|
+
if (env && typeof env.decision_id === 'string' && env.decision_id)
|
|
79
|
+
return env.decision_id;
|
|
80
|
+
const id = outcome.proof && outcome.proof.decision_id;
|
|
81
|
+
return typeof id === 'string' && id ? id : null;
|
|
82
|
+
}
|
|
83
|
+
function executionActionOf(outcome) {
|
|
84
|
+
const v = outcome.verdict;
|
|
85
|
+
if (v && 'action' in v && typeof v.action === 'string')
|
|
86
|
+
return v.action;
|
|
87
|
+
return null;
|
|
88
|
+
}
|
|
89
|
+
function isAllowClass(outcome) {
|
|
90
|
+
const v = outcome.verdict;
|
|
91
|
+
if (!v || typeof v !== 'object')
|
|
92
|
+
return false;
|
|
93
|
+
// Kind only — UnavailableVerdict can carry action CONTINUE / CONTINUE_WITH_MONITORING
|
|
94
|
+
// on OPEN_PASSTHROUGH / LKG_SUBSTITUTION; that is not allow-class.
|
|
95
|
+
return v.kind === 'ALLOW' || v.kind === 'MONITOR';
|
|
96
|
+
}
|
|
97
|
+
function isBlockWithRemediation(outcome) {
|
|
98
|
+
const v = outcome.verdict;
|
|
99
|
+
if (!v || v.kind !== 'BLOCK')
|
|
100
|
+
return null;
|
|
101
|
+
return (0, remediation_loop_attestation_js_1.readRemediationTransaction)(envelopeOf(outcome));
|
|
102
|
+
}
|
|
103
|
+
function trailEntry(outcome, attempt) {
|
|
104
|
+
return Object.freeze({
|
|
105
|
+
attempt,
|
|
106
|
+
decision_id: decisionIdOf(outcome),
|
|
107
|
+
fingerprint: fingerprintOf(outcome),
|
|
108
|
+
execution_action: executionActionOf(outcome),
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
function attachObservation(outcome, trail, extras) {
|
|
112
|
+
const frozenTrail = Object.freeze(trail.map((e) => Object.freeze({ ...e })));
|
|
113
|
+
const proof = Object.freeze({
|
|
114
|
+
...outcome.proof,
|
|
115
|
+
recheck_trail: frozenTrail,
|
|
116
|
+
});
|
|
117
|
+
const obs = { recheck_trail: frozenTrail };
|
|
118
|
+
if (extras.stop)
|
|
119
|
+
obs.recheck_stop_reason = extras.stop;
|
|
120
|
+
const recheckCount = Math.max(0, trail.length - 1);
|
|
121
|
+
if (extras.fixed === true) {
|
|
122
|
+
obs.fixed_after_block = { value: true, attempt_count: recheckCount };
|
|
123
|
+
}
|
|
124
|
+
else if (trail.length > 0) {
|
|
125
|
+
obs.fixed_after_block = { value: null, attempt_count: recheckCount > 0 ? recheckCount : null };
|
|
126
|
+
}
|
|
127
|
+
return { ...outcome, proof, ...obs };
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Keep T2's hashed artifacts and the factory's arguments.artifacts the same array.
|
|
131
|
+
* wrapWithGuard executes `redacted.arguments`; a descriptor that preflights ART_FIXED
|
|
132
|
+
* while arguments still hold the BLOCK-era payload would authorize one change set and
|
|
133
|
+
* apply another.
|
|
134
|
+
*/
|
|
135
|
+
function withFreshArtifacts(call, artifacts) {
|
|
136
|
+
const next = { ...call, artifacts };
|
|
137
|
+
const args = next.arguments;
|
|
138
|
+
if (args && typeof args === 'object' && !Array.isArray(args)) {
|
|
139
|
+
next.arguments = { ...args, artifacts };
|
|
140
|
+
}
|
|
141
|
+
return next;
|
|
142
|
+
}
|
|
143
|
+
async function freshCall(cfg, current, rebind, artifactsBeforeFix) {
|
|
144
|
+
// Host-updated call first so applyFix mutations of arguments / filesTouched / diff survive.
|
|
145
|
+
let next = { ...current };
|
|
146
|
+
if (typeof cfg.resolveInput === 'function') {
|
|
147
|
+
const input = await cfg.resolveInput();
|
|
148
|
+
const resolved = (0, artifact_resolver_js_1.resolve)(input, cfg.resolveConfig);
|
|
149
|
+
if (resolved.artifacts && resolved.artifacts.length > 0) {
|
|
150
|
+
return withFreshArtifacts(next, resolved.artifacts);
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
const hostReplacedArtifacts = Array.isArray(current.artifacts)
|
|
154
|
+
&& current.artifacts !== artifactsBeforeFix;
|
|
155
|
+
if (hostReplacedArtifacts) {
|
|
156
|
+
return withFreshArtifacts(next, current.artifacts);
|
|
157
|
+
}
|
|
158
|
+
const rebound = await Promise.resolve(rebind());
|
|
159
|
+
if (Array.isArray(rebound.artifacts) && rebound.artifacts.length > 0) {
|
|
160
|
+
return withFreshArtifacts(next, rebound.artifacts);
|
|
161
|
+
}
|
|
162
|
+
return next;
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* First call is always a normal guardToolCall. The loop runs only when autoRecheck is
|
|
166
|
+
* normalized (applyFix present, maxAttempts in 1–3) AND the outcome is BLOCK with a
|
|
167
|
+
* remediation_transaction.
|
|
168
|
+
*/
|
|
169
|
+
async function runAutoRecheckLoop(args) {
|
|
170
|
+
const cfg = normalizeAutoRecheck(args.config.autoRecheck);
|
|
171
|
+
const first = await (0, guard_js_1.guardToolCall)(args.call, args.factory, args.config, args.callContext);
|
|
172
|
+
if (!cfg)
|
|
173
|
+
return first;
|
|
174
|
+
const remediation0 = isBlockWithRemediation(first);
|
|
175
|
+
if (!remediation0)
|
|
176
|
+
return first;
|
|
177
|
+
const trail = [trailEntry(first, 0)];
|
|
178
|
+
let currentCall = args.call;
|
|
179
|
+
let previous = first;
|
|
180
|
+
let previousFp = fingerprintOf(first);
|
|
181
|
+
let remediation = remediation0;
|
|
182
|
+
for (let i = 1; i <= cfg.maxAttempts; i++) {
|
|
183
|
+
const artifactsBeforeFix = currentCall.artifacts;
|
|
184
|
+
const ctx = {
|
|
185
|
+
call: currentCall,
|
|
186
|
+
attempt: i,
|
|
187
|
+
outcome: previous,
|
|
188
|
+
};
|
|
189
|
+
let applied = false;
|
|
190
|
+
try {
|
|
191
|
+
applied = (await cfg.applyFix(remediation, ctx)) === true;
|
|
192
|
+
}
|
|
193
|
+
catch {
|
|
194
|
+
emit(args.config, {
|
|
195
|
+
type: 'recheck_attempt',
|
|
196
|
+
at: iso(),
|
|
197
|
+
attempt: i,
|
|
198
|
+
decisionId: decisionIdOf(previous) ?? undefined,
|
|
199
|
+
from_fp: previousFp,
|
|
200
|
+
to_fp: previousFp,
|
|
201
|
+
cause: 'apply_fix_threw',
|
|
202
|
+
});
|
|
203
|
+
return attachObservation(first, trail, { stop: 'apply_fix_threw' });
|
|
204
|
+
}
|
|
205
|
+
if (!applied) {
|
|
206
|
+
return attachObservation(first, trail, { stop: 'apply_fix_declined' });
|
|
207
|
+
}
|
|
208
|
+
currentCall = await freshCall(cfg, ctx.call, args.rebind, artifactsBeforeFix);
|
|
209
|
+
const nextCtx = args.refreshContext
|
|
210
|
+
? await args.refreshContext(currentCall)
|
|
211
|
+
: args.callContext;
|
|
212
|
+
const next = await (0, guard_js_1.guardToolCall)(currentCall, args.factory, args.config, nextCtx);
|
|
213
|
+
const toFp = fingerprintOf(next);
|
|
214
|
+
trail.push(trailEntry(next, i));
|
|
215
|
+
emit(args.config, {
|
|
216
|
+
type: 'recheck_attempt',
|
|
217
|
+
at: iso(),
|
|
218
|
+
attempt: i,
|
|
219
|
+
decisionId: decisionIdOf(next) ?? undefined,
|
|
220
|
+
from_fp: previousFp,
|
|
221
|
+
to_fp: toFp,
|
|
222
|
+
});
|
|
223
|
+
// Same fingerprint as the previous attempt → no progress. Stop; last decision stands.
|
|
224
|
+
if (previousFp != null && toFp != null && previousFp === toFp) {
|
|
225
|
+
return attachObservation(next, trail, { stop: 'no_progress' });
|
|
226
|
+
}
|
|
227
|
+
if (isAllowClass(next)) {
|
|
228
|
+
return attachObservation(next, trail, { fixed: true });
|
|
229
|
+
}
|
|
230
|
+
const remNext = isBlockWithRemediation(next);
|
|
231
|
+
if (!remNext) {
|
|
232
|
+
return attachObservation(next, trail, {});
|
|
233
|
+
}
|
|
234
|
+
previous = next;
|
|
235
|
+
previousFp = toFp;
|
|
236
|
+
remediation = remNext;
|
|
237
|
+
}
|
|
238
|
+
return attachObservation(previous, trail, { stop: 'exhausted' });
|
|
239
|
+
}
|
|
240
|
+
//# sourceMappingURL=auto-recheck.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auto-recheck.js","sourceRoot":"","sources":["../../src/auto-recheck.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,8 @@
|
|
|
2
2
|
* CAS attestation binder (ID781 option A follow-on) — separate record linking a frozen
|
|
3
3
|
* GuardExecutionProof (v1) with an ExecuteIfUnchangedOutcome.
|
|
4
4
|
*
|
|
5
|
-
* Does NOT
|
|
5
|
+
* Does NOT mutate execution-proof assembly or conditional-write outcome types.
|
|
6
|
+
* Additive `cas_evidence` is observation-only (optional on the proof / outcome).
|
|
6
7
|
* Does NOT claim that the host write is unique, that version tokens equal change_fp, or that
|
|
7
8
|
* committed_stale_detected is "safe". Those non-claims are always set on `limits`.
|
|
8
9
|
*
|
|
@@ -10,6 +11,7 @@
|
|
|
10
11
|
* this module is the separate attestation surface that pairs proof + CAS outcome without
|
|
11
12
|
* widening the proof spec.
|
|
12
13
|
*/
|
|
14
|
+
import type { ExecutorKeyRegistry } from '@coderifts/sdk';
|
|
13
15
|
import type { GuardExecutionProof, ExecutionResultHash } from './execution-proof.js';
|
|
14
16
|
import type { ExecuteIfUnchangedOutcome, VersionToken } from './conditional-write.js';
|
|
15
17
|
/** Machine-readable schema id — mirrors EXECUTION_PROOF_SPEC style. */
|
|
@@ -78,8 +80,39 @@ export type CasAttestation = {
|
|
|
78
80
|
/** outcome.status === 'refused'. */
|
|
79
81
|
refused: boolean;
|
|
80
82
|
};
|
|
83
|
+
/**
|
|
84
|
+
* Observation-side CAS evidence class (S2-F2a R3). Never a verdict/preimage field.
|
|
85
|
+
* executor_attested only after a customer-pinned registry verifies the token.
|
|
86
|
+
* A lying/invalid attestation stays host_claimed with attest_status visible
|
|
87
|
+
* (same principle as N-4's lying sink). No registry → host_claimed, no penalty.
|
|
88
|
+
*/
|
|
89
|
+
cas_evidence: CasEvidence;
|
|
81
90
|
limits: CasAttestationLimits;
|
|
82
91
|
};
|
|
92
|
+
/** Tri-state CAS evidence (N-4 monitoring_delivery is the pattern). */
|
|
93
|
+
export type CasEvidenceClass = 'executor_attested' | 'host_claimed' | 'absent';
|
|
94
|
+
export type CasEvidence = {
|
|
95
|
+
class: CasEvidenceClass;
|
|
96
|
+
attest_status: string | null;
|
|
97
|
+
executor_kid: string | null;
|
|
98
|
+
grant_jti: string | null;
|
|
99
|
+
};
|
|
100
|
+
export type ExecutorAttestationConfig = {
|
|
101
|
+
/** Customer-pinned executor key registry. Required to attempt verification. */
|
|
102
|
+
registry: ExecutorKeyRegistry;
|
|
103
|
+
};
|
|
104
|
+
export type EvaluateCasEvidenceOpts = {
|
|
105
|
+
registry?: ExecutorKeyRegistry | null;
|
|
106
|
+
grant?: string | null;
|
|
107
|
+
receipt_digest?: string | null;
|
|
108
|
+
};
|
|
109
|
+
/** Pull the attestation token from the CAS outcome or the mutation response body. */
|
|
110
|
+
export declare function extractExecutorAttestationToken(outcome: unknown): string | null;
|
|
111
|
+
/**
|
|
112
|
+
* Observation-side CAS evidence. Does not change authorized_and_committed.
|
|
113
|
+
* Invalid attestation never upgrades the class (lying token stays host_claimed).
|
|
114
|
+
*/
|
|
115
|
+
export declare function evaluateCasEvidence(outcome: unknown, opts?: EvaluateCasEvidenceOpts): CasEvidence;
|
|
83
116
|
/** Type guard: object carries the frozen v1 proof_spec. */
|
|
84
117
|
export declare function isGuardExecutionProof(x: unknown): x is GuardExecutionProof;
|
|
85
118
|
/** Type guard: object is one of the three ExecuteIfUnchangedOutcome branches. */
|
|
@@ -90,5 +123,5 @@ export declare function isExecuteIfUnchangedOutcome(x: unknown): x is ExecuteIfU
|
|
|
90
123
|
* Validation-first: rejects non-v1 proofs and non-outcome shapes (throws TypeError —
|
|
91
124
|
* builders fail closed; the human render layer soft-fails instead).
|
|
92
125
|
*/
|
|
93
|
-
export declare function buildCasAttestation(proof: GuardExecutionProof, outcome: ExecuteIfUnchangedOutcome<unknown
|
|
126
|
+
export declare function buildCasAttestation(proof: GuardExecutionProof, outcome: ExecuteIfUnchangedOutcome<unknown>, opts?: EvaluateCasEvidenceOpts): CasAttestation;
|
|
94
127
|
//# sourceMappingURL=cas-attestation.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cas-attestation.d.ts","sourceRoot":"","sources":["../../src/cas-attestation.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"cas-attestation.d.ts","sourceRoot":"","sources":["../../src/cas-attestation.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,7 +3,8 @@
|
|
|
3
3
|
* CAS attestation binder (ID781 option A follow-on) — separate record linking a frozen
|
|
4
4
|
* GuardExecutionProof (v1) with an ExecuteIfUnchangedOutcome.
|
|
5
5
|
*
|
|
6
|
-
* Does NOT
|
|
6
|
+
* Does NOT mutate execution-proof assembly or conditional-write outcome types.
|
|
7
|
+
* Additive `cas_evidence` is observation-only (optional on the proof / outcome).
|
|
7
8
|
* Does NOT claim that the host write is unique, that version tokens equal change_fp, or that
|
|
8
9
|
* committed_stale_detected is "safe". Those non-claims are always set on `limits`.
|
|
9
10
|
*
|
|
@@ -13,9 +14,12 @@
|
|
|
13
14
|
*/
|
|
14
15
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
16
|
exports.CAS_ATTESTATION_SPEC = void 0;
|
|
17
|
+
exports.extractExecutorAttestationToken = extractExecutorAttestationToken;
|
|
18
|
+
exports.evaluateCasEvidence = evaluateCasEvidence;
|
|
16
19
|
exports.isGuardExecutionProof = isGuardExecutionProof;
|
|
17
20
|
exports.isExecuteIfUnchangedOutcome = isExecuteIfUnchangedOutcome;
|
|
18
21
|
exports.buildCasAttestation = buildCasAttestation;
|
|
22
|
+
const sdk_1 = require("@coderifts/sdk");
|
|
19
23
|
const execution_proof_js_1 = require("./execution-proof.js");
|
|
20
24
|
/** Machine-readable schema id — mirrors EXECUTION_PROOF_SPEC style. */
|
|
21
25
|
exports.CAS_ATTESTATION_SPEC = 'cas-attestation.v1';
|
|
@@ -27,6 +31,104 @@ const LIMITS = Object.freeze({
|
|
|
27
31
|
does_not_claim_host_cannot_bypass: true,
|
|
28
32
|
does_not_claim_governance_redecision: true,
|
|
29
33
|
});
|
|
34
|
+
const ABSENT_EVIDENCE = Object.freeze({
|
|
35
|
+
class: 'absent',
|
|
36
|
+
attest_status: null,
|
|
37
|
+
executor_kid: null,
|
|
38
|
+
grant_jti: null,
|
|
39
|
+
});
|
|
40
|
+
function hostClaimed(status, kid, jti) {
|
|
41
|
+
return Object.freeze({
|
|
42
|
+
class: 'host_claimed',
|
|
43
|
+
attest_status: status,
|
|
44
|
+
executor_kid: kid,
|
|
45
|
+
grant_jti: jti,
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
/** Pull the attestation token from the CAS outcome or the mutation response body. */
|
|
49
|
+
function extractExecutorAttestationToken(outcome) {
|
|
50
|
+
if (!outcome || typeof outcome !== 'object')
|
|
51
|
+
return null;
|
|
52
|
+
const o = outcome;
|
|
53
|
+
if (typeof o.executor_attestation === 'string' && o.executor_attestation.length > 0) {
|
|
54
|
+
return o.executor_attestation;
|
|
55
|
+
}
|
|
56
|
+
const r = o.result;
|
|
57
|
+
if (r && typeof r === 'object') {
|
|
58
|
+
const tok = r.executor_attestation;
|
|
59
|
+
if (typeof tok === 'string' && tok.length > 0)
|
|
60
|
+
return tok;
|
|
61
|
+
}
|
|
62
|
+
return null;
|
|
63
|
+
}
|
|
64
|
+
function intendedFromOutcome(outcome) {
|
|
65
|
+
const intended = {};
|
|
66
|
+
if (!outcome || typeof outcome !== 'object')
|
|
67
|
+
return intended;
|
|
68
|
+
const o = outcome;
|
|
69
|
+
const r = o.result && typeof o.result === 'object' ? o.result : o;
|
|
70
|
+
if (typeof r.grant === 'string' && r.grant.length > 0)
|
|
71
|
+
intended.grant = r.grant;
|
|
72
|
+
else if (typeof r.execution_grant === 'string' && r.execution_grant.length > 0) {
|
|
73
|
+
intended.grant = r.execution_grant;
|
|
74
|
+
}
|
|
75
|
+
if (typeof r.receipt_digest === 'string' && r.receipt_digest.length > 0) {
|
|
76
|
+
intended.receipt_digest = r.receipt_digest;
|
|
77
|
+
}
|
|
78
|
+
return intended;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Observation-side CAS evidence. Does not change authorized_and_committed.
|
|
82
|
+
* Invalid attestation never upgrades the class (lying token stays host_claimed).
|
|
83
|
+
*/
|
|
84
|
+
function evaluateCasEvidence(outcome, opts = {}) {
|
|
85
|
+
if (!isExecuteIfUnchangedOutcome(outcome))
|
|
86
|
+
return ABSENT_EVIDENCE;
|
|
87
|
+
if (outcome.status === 'refused')
|
|
88
|
+
return ABSENT_EVIDENCE;
|
|
89
|
+
const token = extractExecutorAttestationToken(outcome);
|
|
90
|
+
const registry = opts.registry;
|
|
91
|
+
const fromOutcome = intendedFromOutcome(outcome);
|
|
92
|
+
const grant = opts.grant || fromOutcome.grant || null;
|
|
93
|
+
const receipt_digest = opts.receipt_digest || fromOutcome.receipt_digest || null;
|
|
94
|
+
if (!registry || !Array.isArray(registry.keys)) {
|
|
95
|
+
return hostClaimed(null, null, null);
|
|
96
|
+
}
|
|
97
|
+
if (!token) {
|
|
98
|
+
return hostClaimed(null, null, null);
|
|
99
|
+
}
|
|
100
|
+
const intended = {};
|
|
101
|
+
if (grant)
|
|
102
|
+
intended.grant = grant;
|
|
103
|
+
if (receipt_digest)
|
|
104
|
+
intended.receipt_digest = receipt_digest;
|
|
105
|
+
const wantsIntended = Object.keys(intended).length > 0;
|
|
106
|
+
let verified;
|
|
107
|
+
try {
|
|
108
|
+
verified = (0, sdk_1.verifyExecutionAttestation)(token, {
|
|
109
|
+
registry,
|
|
110
|
+
...(wantsIntended ? { intended } : {}),
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
catch {
|
|
114
|
+
return hostClaimed('ATTEST_MALFORMED', null, null);
|
|
115
|
+
}
|
|
116
|
+
const payload = verified.payload && typeof verified.payload === 'object'
|
|
117
|
+
? verified.payload
|
|
118
|
+
: null;
|
|
119
|
+
const kid = payload && typeof payload.executor_kid === 'string' ? payload.executor_kid : null;
|
|
120
|
+
const jti = payload && typeof payload.grant_jti === 'string' ? payload.grant_jti : null;
|
|
121
|
+
if (verified.valid === true
|
|
122
|
+
&& (verified.status === 'ATTEST_VALID' || verified.status === 'ATTEST_RETIRED_KEY_VALID_AT_ISSUE')) {
|
|
123
|
+
return Object.freeze({
|
|
124
|
+
class: 'executor_attested',
|
|
125
|
+
attest_status: verified.status,
|
|
126
|
+
executor_kid: kid,
|
|
127
|
+
grant_jti: jti,
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
return hostClaimed(verified.status, kid, jti);
|
|
131
|
+
}
|
|
30
132
|
/** Type guard: object carries the frozen v1 proof_spec. */
|
|
31
133
|
function isGuardExecutionProof(x) {
|
|
32
134
|
if (!x || typeof x !== 'object')
|
|
@@ -92,7 +194,7 @@ function projectCas(outcome) {
|
|
|
92
194
|
* Validation-first: rejects non-v1 proofs and non-outcome shapes (throws TypeError —
|
|
93
195
|
* builders fail closed; the human render layer soft-fails instead).
|
|
94
196
|
*/
|
|
95
|
-
function buildCasAttestation(proof, outcome) {
|
|
197
|
+
function buildCasAttestation(proof, outcome, opts = {}) {
|
|
96
198
|
if (!isGuardExecutionProof(proof)) {
|
|
97
199
|
throw new TypeError('@coderifts/agent-guard: buildCasAttestation requires a valid guard-execution-proof.v1 object '
|
|
98
200
|
+ '(proof_spec mismatch or missing required fields)');
|
|
@@ -123,6 +225,7 @@ function buildCasAttestation(proof, outcome) {
|
|
|
123
225
|
stale_during_commit,
|
|
124
226
|
refused,
|
|
125
227
|
}),
|
|
228
|
+
cas_evidence: evaluateCasEvidence(outcome, opts),
|
|
126
229
|
limits: LIMITS,
|
|
127
230
|
};
|
|
128
231
|
return freezeAttestation(attestation);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cas-attestation.js","sourceRoot":"","sources":["../../src/cas-attestation.ts"],"names":[],"mappings":";AAAA
|
|
1
|
+
{"version":3,"file":"cas-attestation.js","sourceRoot":"","sources":["../../src/cas-attestation.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,6 +19,8 @@
|
|
|
19
19
|
*/
|
|
20
20
|
import type { GuardVerdict } from './types.js';
|
|
21
21
|
import type { CommitObservation } from './commit-observation.js';
|
|
22
|
+
import type { MonitoringDelivery } from './monitoring-delivery.js';
|
|
23
|
+
import type { CasEvidence } from './cas-attestation.js';
|
|
22
24
|
/** Machine-readable schema id for this block. */
|
|
23
25
|
export declare const EXECUTION_PROOF_SPEC: "guard-execution-proof.v1";
|
|
24
26
|
/**
|
|
@@ -113,6 +115,26 @@ export type GuardExecutionProof = {
|
|
|
113
115
|
};
|
|
114
116
|
/** T3 post-commit observation. Always present; not_observed when nothing was re-read. */
|
|
115
117
|
commit_observation: CommitObservation;
|
|
118
|
+
/**
|
|
119
|
+
* CWM monitoring delivery (N-4). Present only on CONTINUE_WITH_MONITORING arms.
|
|
120
|
+
* Observation-side — never a verdict/preimage field. delivered_acked ≠ human attention.
|
|
121
|
+
*/
|
|
122
|
+
monitoring_delivery?: MonitoringDelivery;
|
|
123
|
+
/**
|
|
124
|
+
* S2-F2a R3 CAS evidence class (observation). Present when a CAS outcome was
|
|
125
|
+
* observed. Not a preimage field. executor_attested only after registry verify.
|
|
126
|
+
*/
|
|
127
|
+
cas_evidence?: CasEvidence;
|
|
128
|
+
/**
|
|
129
|
+
* S6 auto-recheck trail (observation). Present when the wrap-layer loop ran.
|
|
130
|
+
* Additive; not a preimage field. Final outcome is the last decision.
|
|
131
|
+
*/
|
|
132
|
+
recheck_trail?: ReadonlyArray<{
|
|
133
|
+
attempt: number;
|
|
134
|
+
decision_id: string | null;
|
|
135
|
+
fingerprint: string | null;
|
|
136
|
+
execution_action: string | null;
|
|
137
|
+
}>;
|
|
116
138
|
};
|
|
117
139
|
export type ProofBuildInput = {
|
|
118
140
|
preflighted: boolean;
|
|
@@ -132,6 +154,17 @@ export type ProofBuildInput = {
|
|
|
132
154
|
};
|
|
133
155
|
/** T3 observation assembled by the guard after executeFactory (or not_observed). */
|
|
134
156
|
commitObservation?: CommitObservation;
|
|
157
|
+
/** CWM delivery evidence; omit on non-MONITOR arms. */
|
|
158
|
+
monitoringDelivery?: MonitoringDelivery;
|
|
159
|
+
/** S2-F2a R3 CAS evidence (observation). */
|
|
160
|
+
casEvidence?: CasEvidence;
|
|
161
|
+
/** S6 trail passthrough (observation). */
|
|
162
|
+
recheckTrail?: ReadonlyArray<{
|
|
163
|
+
attempt: number;
|
|
164
|
+
decision_id: string | null;
|
|
165
|
+
fingerprint: string | null;
|
|
166
|
+
execution_action: string | null;
|
|
167
|
+
}>;
|
|
135
168
|
};
|
|
136
169
|
/**
|
|
137
170
|
* Runtime twin of the type-level enforced⟺receiptVerified invariant.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"execution-proof.d.ts","sourceRoot":"","sources":["../../src/execution-proof.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"execution-proof.d.ts","sourceRoot":"","sources":["../../src/execution-proof.ts"],"names":[],"mappings":"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"}
|
|
@@ -163,8 +163,24 @@ function buildExecutionProof(input) {
|
|
|
163
163
|
limits: LIMITS,
|
|
164
164
|
commit_observation: freezeCommitObservation(input.commitObservation),
|
|
165
165
|
};
|
|
166
|
+
if (input.monitoringDelivery && typeof input.monitoringDelivery === 'object') {
|
|
167
|
+
proof.monitoring_delivery = freezeMonitoringDelivery(input.monitoringDelivery);
|
|
168
|
+
}
|
|
169
|
+
if (input.casEvidence && typeof input.casEvidence === 'object') {
|
|
170
|
+
proof.cas_evidence = Object.freeze({ ...input.casEvidence });
|
|
171
|
+
}
|
|
172
|
+
if (Array.isArray(input.recheckTrail) && input.recheckTrail.length > 0) {
|
|
173
|
+
proof.recheck_trail = Object.freeze(input.recheckTrail.map((e) => Object.freeze({ ...e })));
|
|
174
|
+
}
|
|
166
175
|
return freezeProof(proof);
|
|
167
176
|
}
|
|
177
|
+
function freezeMonitoringDelivery(d) {
|
|
178
|
+
return Object.freeze({
|
|
179
|
+
status: d.status,
|
|
180
|
+
...(d.reason ? { reason: d.reason } : {}),
|
|
181
|
+
...(d.evidence ? { evidence: Object.freeze({ ...d.evidence }) } : {}),
|
|
182
|
+
});
|
|
183
|
+
}
|
|
168
184
|
function freezeCommitObservation(obs) {
|
|
169
185
|
const o = obs && typeof obs === 'object'
|
|
170
186
|
? { ...obs, ...(obs.blast ? { blast: Object.freeze({ ...obs.blast }) } : {}) }
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"execution-proof.js","sourceRoot":"","sources":["../../src/execution-proof.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;GAkBG;;;
|
|
1
|
+
{"version":3,"file":"execution-proof.js","sourceRoot":"","sources":["../../src/execution-proof.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"final-answer-proof.d.ts","sourceRoot":"","sources":["../../src/final-answer-proof.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAuB,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"final-answer-proof.d.ts","sourceRoot":"","sources":["../../src/final-answer-proof.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAuB,MAAM,sBAAsB,CAAC;AAIrF,MAAM,MAAM,sBAAsB,GAAG,UAAU,GAAG,OAAO,CAAC;AAE1D,MAAM,MAAM,6BAA6B,GAAG;IAC1C;;;OAGG;IACH,MAAM,CAAC,EAAE,sBAAsB,CAAC;IAChC;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,iCAAiC,GAAG,6BAA6B,GAAG;IAC9E;;;;;;OAMG;IACH,IAAI,CAAC,EAAE,aAAa,GAAG,YAAY,CAAC;IACpC;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,qFAAqF;AACrF,MAAM,MAAM,sBAAsB,GAC9B,UAAU,GACV,YAAY,GACZ,gBAAgB,GAChB,uBAAuB,GACvB,4BAA4B,GAC5B,cAAc,CAAC;AAEnB;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,mBAAmB,GAAG,sBAAsB,CAYpF;AA2DD;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,mBAAmB,EAC1B,IAAI,GAAE,6BAAkC,GACvC,MAAM,CAgJR;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,0BAA0B,CAAC,CAAC,GAAG,OAAO,EACpD,QAAQ,EAAE,CAAC,EACX,KAAK,EAAE,mBAAmB,EAC1B,IAAI,GAAE,iCAAsC,GAC3C,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;IAAE,kBAAkB,EAAE,mBAAmB,CAAC;IAAC,uBAAuB,EAAE,MAAM,CAAA;CAAE,CAAC,CA0C9G"}
|