@coderifts/agent-guard 6.3.0 → 7.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.
Files changed (66) hide show
  1. package/README.md +36 -12
  2. package/dist/cjs/deploy-gate.d.ts +14 -4
  3. package/dist/cjs/deploy-gate.d.ts.map +1 -1
  4. package/dist/cjs/deploy-gate.js +17 -14
  5. package/dist/cjs/deploy-gate.js.map +1 -1
  6. package/dist/cjs/execute-tool-call.d.ts +100 -0
  7. package/dist/cjs/execute-tool-call.d.ts.map +1 -0
  8. package/dist/cjs/execute-tool-call.js +334 -0
  9. package/dist/cjs/execute-tool-call.js.map +1 -0
  10. package/dist/cjs/execution-time-fingerprint.d.ts +8 -0
  11. package/dist/cjs/execution-time-fingerprint.d.ts.map +1 -1
  12. package/dist/cjs/execution-time-fingerprint.js +13 -1
  13. package/dist/cjs/execution-time-fingerprint.js.map +1 -1
  14. package/dist/cjs/guard.d.ts.map +1 -1
  15. package/dist/cjs/guard.js +28 -9
  16. package/dist/cjs/guard.js.map +1 -1
  17. package/dist/cjs/index.d.ts +5 -1
  18. package/dist/cjs/index.d.ts.map +1 -1
  19. package/dist/cjs/index.js +23 -3
  20. package/dist/cjs/index.js.map +1 -1
  21. package/dist/cjs/merge-gate.d.ts +15 -7
  22. package/dist/cjs/merge-gate.d.ts.map +1 -1
  23. package/dist/cjs/merge-gate.js +31 -32
  24. package/dist/cjs/merge-gate.js.map +1 -1
  25. package/dist/cjs/remediation-loop-attestation.d.ts +125 -0
  26. package/dist/cjs/remediation-loop-attestation.d.ts.map +1 -0
  27. package/dist/cjs/remediation-loop-attestation.js +186 -0
  28. package/dist/cjs/remediation-loop-attestation.js.map +1 -0
  29. package/dist/cjs/types.d.ts +20 -3
  30. package/dist/cjs/types.d.ts.map +1 -1
  31. package/dist/cjs/with-coderifts.d.ts +2 -1
  32. package/dist/cjs/with-coderifts.d.ts.map +1 -1
  33. package/dist/cjs/with-coderifts.js.map +1 -1
  34. package/dist/esm/deploy-gate.d.ts +14 -4
  35. package/dist/esm/deploy-gate.d.ts.map +1 -1
  36. package/dist/esm/deploy-gate.js +17 -14
  37. package/dist/esm/deploy-gate.js.map +1 -1
  38. package/dist/esm/execute-tool-call.d.ts +100 -0
  39. package/dist/esm/execute-tool-call.d.ts.map +1 -0
  40. package/dist/esm/execute-tool-call.js +325 -0
  41. package/dist/esm/execute-tool-call.js.map +1 -0
  42. package/dist/esm/execution-time-fingerprint.d.ts +8 -0
  43. package/dist/esm/execution-time-fingerprint.d.ts.map +1 -1
  44. package/dist/esm/execution-time-fingerprint.js +11 -0
  45. package/dist/esm/execution-time-fingerprint.js.map +1 -1
  46. package/dist/esm/guard.d.ts.map +1 -1
  47. package/dist/esm/guard.js +29 -10
  48. package/dist/esm/guard.js.map +1 -1
  49. package/dist/esm/index.d.ts +5 -1
  50. package/dist/esm/index.d.ts.map +1 -1
  51. package/dist/esm/index.js +7 -1
  52. package/dist/esm/index.js.map +1 -1
  53. package/dist/esm/merge-gate.d.ts +15 -7
  54. package/dist/esm/merge-gate.d.ts.map +1 -1
  55. package/dist/esm/merge-gate.js +31 -32
  56. package/dist/esm/merge-gate.js.map +1 -1
  57. package/dist/esm/remediation-loop-attestation.d.ts +125 -0
  58. package/dist/esm/remediation-loop-attestation.d.ts.map +1 -0
  59. package/dist/esm/remediation-loop-attestation.js +179 -0
  60. package/dist/esm/remediation-loop-attestation.js.map +1 -0
  61. package/dist/esm/types.d.ts +20 -3
  62. package/dist/esm/types.d.ts.map +1 -1
  63. package/dist/esm/with-coderifts.d.ts +2 -1
  64. package/dist/esm/with-coderifts.d.ts.map +1 -1
  65. package/dist/esm/with-coderifts.js.map +1 -1
  66. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
package/dist/esm/index.js CHANGED
@@ -31,7 +31,7 @@ export { verifyReceiptChainLinkage, previousReceiptCommitment, decodeReceiptBody
31
31
  // and local artifact_digest / input_fingerprint recomputation.
32
32
  export { evaluateEnvelope, computeArtifactDigest, computeBundleFingerprint } from './enforcement-gate.js';
33
33
  // ID842 step 1 — host-independent T2 execution-time fingerprint recheck (opt-in requireExecutionStateMatch).
34
- export { checkExecutionTimeFingerprint, authorizedFingerprintFromEnvelope, computeCanonicalBundleFingerprint, EXECUTION_TIME_FP_REASONS, } from './execution-time-fingerprint.js';
34
+ export { checkExecutionTimeFingerprint, authorizedFingerprintFromEnvelope, computeCanonicalBundleFingerprint, isUnmeasurableExecutionStateReason, EXECUTION_STATE_UNMEASURABLE_NOTE, EXECUTION_TIME_FP_REASONS, } from './execution-time-fingerprint.js';
35
35
  // Guard-local readDecision: present-but-unrecognised execution_action does NOT fall through to
36
36
  // the decision map (SDK ladder did — that reinvented permission). Missing action still maps.
37
37
  export { readDecision } from './read-decision.js';
@@ -58,6 +58,9 @@ export { createRegistryVersionToken, writeRegistryIfUnchanged, registryTokenRaw,
58
58
  // CAS attestation binder — separate cas-attestation.v1 record linking GuardExecutionProof +
59
59
  // ExecuteIfUnchangedOutcome. Does not mutate the proof shape (ID781 option A follow-on).
60
60
  export { buildCasAttestation, isGuardExecutionProof, isExecuteIfUnchangedOutcome, CAS_ATTESTATION_SPEC, } from './cas-attestation.js';
61
+ // Remediation-loop attestation — BLOCK remediation_transaction + ALLOW proof (+ optional CAS).
62
+ // Pure binder; no app-side server-echo remediation_of (future stronger form — see JSDoc).
63
+ export { buildRemediationLoopAttestation, readRemediationTransaction, readPriorBlockRemediation, isCasAttestation, REMEDIATION_LOOP_ATTESTATION_SPEC, } from './remediation-loop-attestation.js';
61
64
  // artifactResolver — automatic base/head contract artifacts from a pure git snapshot (upstream of
62
65
  // preflight; produces artifacts, never decides). Companion to MISSING_ARTIFACT_CONTENT.
63
66
  export { resolve as resolveArtifacts, classifyByName, blobMapKey } from './artifact-resolver.js';
@@ -89,4 +92,7 @@ export { withCodeRiftsLangGraph, langGraphToolAdapter, toLangGraphTools, protect
89
92
  // ID632 slice 4 — thin Google Gemini function-calling adapter (functionDeclarations wrapper).
90
93
  // ID827 phase 2 — bindGeminiGuardOutcome (Option B proof binder; object response; additive, guard@6.1).
91
94
  export { withCodeRiftsGemini, geminiToolAdapter, toGeminiTools, protectedToolToFunctionDeclaration, bindGeminiGuardOutcome, defaultSerializeGeminiToolResult, } from './adapters/gemini.js';
95
+ // Option A safe dispatcher — protected table + one framework tool call → ProofBound* only.
96
+ // Closes manual-binder gap; no parallel guard path (uses ProtectedTool.execute → guardToolCall).
97
+ export { executeProtectedTool, executeOpenAIToolCall, executeAnthropicToolCall, executeGeminiToolCall, executeLangGraphToolCall, isGuardOutcome, surfaceEnvelopeFields, } from './execute-tool-call.js';
92
98
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
@@ -8,10 +8,9 @@
8
8
  * receipt fields (decision / lifecycle authz / binding) — the deterministic verdict stays the
9
9
  * server's (M5). Same inputs → same output (M8).
10
10
  *
11
- * Scope honesty is the whole point (§4): `inescapable_merge` is true ONLY in the fully-enforcing,
12
- * non-bypassable case. For absent / advisory / unknown protection, or when an admin can bypass the
13
- * required check, the check may still be `success` for visibility but `inescapable_merge` is FALSE
14
- * with the residual named. It never claims more than the platform actually enforces.
11
+ * Scope honesty is the whole point (§4): `inescapable_merge` is true ONLY when proof is complete
12
+ * (ENFORCING ¬admin_bypass App-bound required check fingerprint rebound). Missing any
13
+ * conjunct FALSE (fail-closed). The check may still be `success` for visibility.
15
14
  *
16
15
  * Public source (ships in the npm package): it references only receipt/protection fields and generic
17
16
  * merge-gate concepts — no scoring logic, weights, thresholds, pattern names, endpoints, or secrets.
@@ -27,9 +26,10 @@ export type GateReason = 'allow_current_head' | 'no_receipt' | 'receipt_not_auth
27
26
  /** Host reported the required check is not bound to a GitHub App (name-only / spoofable). */
28
27
  | 'required_check_app_not_bound'
29
28
  /**
30
- * Host did not supply expected_fingerprint — the optional change-set re-bind was skipped.
31
- * Residual only (does not flip merge_allowed / inescapable_merge). Distinct from
32
- * fingerprint_mismatch, which is the hard failure when a re-bind WAS requested and disagreed.
29
+ * Host did not supply expected_fingerprint — the change-set re-bind was skipped.
30
+ * Residual names the gap; inescapable_merge is false (fail-closed cannot assert
31
+ * inescapable without a rebound fingerprint). Distinct from fingerprint_mismatch
32
+ * (hard failure when a re-bind WAS requested and disagreed). merge_allowed may stay true.
33
33
  */
34
34
  | 'change_set_not_rebound';
35
35
  export type EnforcementState = 'ENFORCING' | 'ADVISORY' | 'UNKNOWN' | 'ABSENT';
@@ -95,8 +95,16 @@ export type GateDecision = {
95
95
  * Named honesty residual on an otherwise-green check (§4.2). Usually present when
96
96
  * inescapable_merge is false; may also name an app-binding gap while inescapable_merge
97
97
  * remains true (published callers cannot supply that fact yet — residual only, no flip).
98
+ *
99
+ * Compat: always the FIRST residual in evaluation order (same priority as pre-array
100
+ * single-slot assembly). Prefer `residuals` when co-occurrence matters.
98
101
  */
99
102
  residual?: GateReason;
103
+ /**
104
+ * ALL applicable honesty residuals in evaluation order (no duplicates).
105
+ * Empty array when none. Additive — singular `residual` remains for published callers.
106
+ */
107
+ residuals: GateReason[];
100
108
  detail: {
101
109
  prHeadSha: string;
102
110
  bound_head_sha: string | null;
@@ -1 +1 @@
1
- {"version":3,"file":"merge-gate.d.ts","sourceRoot":"","sources":["../../src/merge-gate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"merge-gate.d.ts","sourceRoot":"","sources":["../../src/merge-gate.ts"],"names":[],"mappings":"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"}
@@ -8,10 +8,9 @@
8
8
  * receipt fields (decision / lifecycle authz / binding) — the deterministic verdict stays the
9
9
  * server's (M5). Same inputs → same output (M8).
10
10
  *
11
- * Scope honesty is the whole point (§4): `inescapable_merge` is true ONLY in the fully-enforcing,
12
- * non-bypassable case. For absent / advisory / unknown protection, or when an admin can bypass the
13
- * required check, the check may still be `success` for visibility but `inescapable_merge` is FALSE
14
- * with the residual named. It never claims more than the platform actually enforces.
11
+ * Scope honesty is the whole point (§4): `inescapable_merge` is true ONLY when proof is complete
12
+ * (ENFORCING ¬admin_bypass App-bound required check fingerprint rebound). Missing any
13
+ * conjunct FALSE (fail-closed). The check may still be `success` for visibility.
15
14
  *
16
15
  * Public source (ships in the npm package): it references only receipt/protection fields and generic
17
16
  * merge-gate concepts — no scoring logic, weights, thresholds, pattern names, endpoints, or secrets.
@@ -71,7 +70,9 @@ export function gateDecision(input) {
71
70
  decision: receipt ? String(receipt.decision) : null,
72
71
  };
73
72
  const fail = (state, reason) => ({
74
- merge_allowed: false, state, reason, enforcement_state, inescapable_merge: false, detail,
73
+ merge_allowed: false, state, reason, enforcement_state, inescapable_merge: false,
74
+ residuals: [],
75
+ detail,
75
76
  });
76
77
  // 1) incomplete head → pending/failure (fail-closed on missing evaluation input).
77
78
  if (!input.prHeadSha || String(input.prHeadSha).trim() === '') {
@@ -112,46 +113,44 @@ export function gateDecision(input) {
112
113
  return fail('failure', 'decision_not_allow');
113
114
  }
114
115
  // 9) success for the CHECK — green for visibility regardless of protection strength.
115
- // 10) inescapable_merge claim (STRICT, §1.4 step 10 / M6): only when the platform actually enforces
116
- // the required check AND no admin can bypass it. Never true otherwise.
117
- // App binding is NOT a third conjunct here: flipping the claim when the optional field is
118
- // absent would break every published caller who cannot yet supply it. Honesty for that
119
- // axis is residual-only (below).
120
- const inescapable_merge = enforcement_state === 'ENFORCING' && protection.admin_bypass_possible === false;
121
- let residual;
122
- if (!inescapable_merge) {
116
+ // 10) inescapable_merge (fail-closed): true ONLY when proof is complete
117
+ // ENFORCING ¬admin_bypass App-bound required check fingerprint rebound.
118
+ // Missing proof false (cannot assert), never residual-true.
119
+ const protectionOk = enforcement_state === 'ENFORCING' && protection.admin_bypass_possible === false;
120
+ const appBound = protection.required_check_app_bound === true;
121
+ const rebound = rc.expected_fingerprint != null && String(rc.expected_fingerprint).length > 0;
122
+ const inescapable_merge = protectionOk && appBound && rebound;
123
+ // Residuals key off the FACT that failed, not off the collapsed flag
124
+ // (else a fingerprint/app-binding gap would be mis-named admin_bypass_open).
125
+ const residuals = [];
126
+ if (!protectionOk) {
123
127
  if (enforcement_state === 'ENFORCING')
124
- residual = 'admin_bypass_open'; // required, but admins can override
128
+ residuals.push('admin_bypass_open');
125
129
  else if (enforcement_state === 'ADVISORY')
126
- residual = 'protection_advisory_only'; // posted but not required
130
+ residuals.push('protection_advisory_only');
127
131
  else
128
- residual = 'protection_not_configured'; // ABSENT or UNKNOWN — cannot attest
132
+ residuals.push('protection_not_configured');
133
+ }
134
+ else if (protection.required_check_app_bound === true) {
135
+ // confirmed app-bound — no app residual
136
+ }
137
+ else if (protection.required_check_app_bound === false) {
138
+ residuals.push('required_check_app_not_bound');
129
139
  }
130
140
  else {
131
- // Claim is still true (existing contract). Residual names app-binding honesty only when
132
- // the host has not confirmed a non-spoofable required check.
133
- if (protection.required_check_app_bound === true) {
134
- // confirmed app-bound — no residual
135
- }
136
- else if (protection.required_check_app_bound === false) {
137
- residual = 'required_check_app_not_bound';
138
- }
139
- else {
140
- residual = 'required_check_app_binding_unknown'; // field absent: unknown ≠ not bound
141
- }
141
+ residuals.push('required_check_app_binding_unknown');
142
142
  }
143
- // Optional change-set re-bind skipped: record the gap, do not flip the claim (same residual-only
144
- // shape as required_check_app_*). Only fills when no residual is already named. Distinct from
145
- // fingerprint_mismatch (hard fail when a re-bind was requested and disagreed).
146
- if (rc.expected_fingerprint == null && residual === undefined) {
147
- residual = 'change_set_not_rebound';
143
+ if (!rebound) {
144
+ residuals.push('change_set_not_rebound');
148
145
  }
146
+ const residual = residuals.length > 0 ? residuals[0] : undefined;
149
147
  return {
150
148
  merge_allowed: true,
151
149
  state: 'success',
152
150
  reason: 'allow_current_head',
153
151
  enforcement_state,
154
152
  inescapable_merge,
153
+ residuals,
155
154
  ...(residual ? { residual } : {}),
156
155
  detail,
157
156
  };
@@ -1 +1 @@
1
- {"version":3,"file":"merge-gate.js","sourceRoot":"","sources":["../../src/merge-gate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"merge-gate.js","sourceRoot":"","sources":["../../src/merge-gate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAqHH,qGAAqG;AACrG,SAAS,OAAO,CAAC,CAA4B;IAC3C,OAAO,MAAM,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;AACzD,CAAC;AAED;qGACqG;AACrG,SAAS,MAAM,CAAC,CAA4B;IAC1C,OAAO,MAAM,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;AACzD,CAAC;AAED,kFAAkF;AAClF,SAAS,QAAQ,CAAC,CAAS,EAAE,CAAS,EAAE,WAAoB;IAC1D,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IACtB,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IACtB,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE;QAAE,OAAO,KAAK,CAAC;IAC7B,IAAI,EAAE,KAAK,EAAE;QAAE,OAAO,IAAI,CAAC;IAC3B,IAAI,WAAW,IAAI,EAAE,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IAC7G,OAAO,KAAK,CAAC;AACf,CAAC;AAED,2GAA2G;AAC3G,SAAS,YAAY,CAAC,OAAoB,EAAE,cAAuB;IACjE,MAAM,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC;IAC7B,MAAM,UAAU,GAAG,GAAG,KAAK,OAAO,IAAI,CAAC,GAAG,KAAK,MAAM,IAAI,cAAc,KAAK,IAAI,CAAC,CAAC;IAClF,IAAI,CAAC,UAAU;QAAE,OAAO,KAAK,CAAC;IAC9B,MAAM,EAAE,GAAG,OAAO,CAAC,gBAAgB,CAAC;IACpC,IAAI,EAAE,KAAK,SAAS,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,EAAE;QAAE,OAAO,IAAI,CAAC,CAAC,2DAA2D;IAC1H,OAAO,EAAE,KAAK,UAAU,IAAI,EAAE,KAAK,0BAA0B,CAAC;AAChE,CAAC;AAED,gHAAgH;AAChH,SAAS,aAAa,CAAC,QAAgB,EAAE,UAAkB;IACzD,MAAM,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC;IACzC,MAAM,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,WAAW,EAAE,CAAC;IAC3C,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,QAAQ,CAAC,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACpF,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,KAAwB;IACnD,MAAM,EAAE,GAAoB,KAAK,CAAC,eAAe,IAAK,EAAsB,CAAC;IAC7E,MAAM,UAAU,GAAoB,EAAE,CAAC,UAAU,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,qBAAqB,EAAE,IAAI,EAAE,CAAC;IAC7G,MAAM,iBAAiB,GAAG,UAAU,CAAC,WAAW,CAAC;IAEjD,MAAM,YAAY,GAAG,KAAK,CAAC,YAAY,IAAI,EAAE,CAAC,YAAY,IAAI,KAAK,CAAC;IACpE,MAAM,cAAc,GAAG,KAAK,CAAC,cAAc,IAAI,EAAE,CAAC,cAAc,IAAI,KAAK,CAAC;IAC1E,MAAM,WAAW,GAAG,KAAK,CAAC,kBAAkB,IAAI,EAAE,CAAC,kBAAkB,IAAI,KAAK,CAAC;IAC/E,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;IAE9B,MAAM,MAAM,GAAG;QACb,SAAS,EAAE,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC;QACnC,cAAc,EAAE,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,IAAI;QAChE,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI;KACpD,CAAC;IACF,MAAM,IAAI,GAAG,CAAC,KAAsB,EAAE,MAAkB,EAAgB,EAAE,CAAC,CAAC;QAC1E,aAAa,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,KAAK;QAChF,SAAS,EAAE,EAAE;QACb,MAAM;KACP,CAAC,CAAC;IAEH,kFAAkF;IAClF,IAAI,CAAC,KAAK,CAAC,SAAS,IAAI,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QAC9D,OAAO,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC;IACzE,CAAC;IACD,oCAAoC;IACpC,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC9C,OAAO,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;IAClE,CAAC;IACD,+EAA+E;IAC/E,IAAI,OAAO,CAAC,oBAAoB,KAAK,IAAI,EAAE,CAAC;QAC1C,OAAO,IAAI,CAAC,SAAS,EAAE,wBAAwB,CAAC,CAAC;IACnD,CAAC;IACD,oGAAoG;IACpG,qGAAqG;IACrG,wGAAwG;IACxG,MAAM,EAAE,GAAG,EAAE,CAAC,SAAS,IAAI,OAAO,CAAC;IACnC,IAAI,OAAO,CAAC,SAAS,IAAI,IAAI,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC;QAC1E,OAAO,IAAI,CAAC,SAAS,EAAE,oBAAoB,CAAC,CAAC;IAC/C,CAAC;IACD,qGAAqG;IACrG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,cAAc,EAAE,KAAK,CAAC,SAAS,EAAE,WAAW,CAAC,EAAE,CAAC;QACpE,OAAO,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;IACvC,CAAC;IACD,iDAAiD;IACjD,IAAI,EAAE,CAAC,oBAAoB,IAAI,IAAI,IAAI,OAAO,CAAC,mBAAmB,KAAK,EAAE,CAAC,oBAAoB,EAAE,CAAC;QAC/F,OAAO,IAAI,CAAC,SAAS,EAAE,sBAAsB,CAAC,CAAC;IACjD,CAAC;IACD,IAAI,EAAE,CAAC,kBAAkB,IAAI,IAAI,IAAI,OAAO,CAAC,SAAS,KAAK,EAAE,CAAC,kBAAkB,EAAE,CAAC;QACjF,OAAO,IAAI,CAAC,SAAS,EAAE,oBAAoB,CAAC,CAAC;IAC/C,CAAC;IACD,qEAAqE;IACrE,IAAI,EAAE,CAAC,UAAU,IAAI,OAAO,CAAC,SAAS,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC;QAC3F,OAAO,IAAI,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC;IAC5C,CAAC;IACD,8EAA8E;IAC9E,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,cAAc,CAAC,EAAE,CAAC;QAC3C,OAAO,IAAI,CAAC,SAAS,EAAE,oBAAoB,CAAC,CAAC;IAC/C,CAAC;IAED,qFAAqF;IACrF,0EAA0E;IAC1E,kFAAkF;IAClF,kEAAkE;IAClE,MAAM,YAAY,GAAG,iBAAiB,KAAK,WAAW,IAAI,UAAU,CAAC,qBAAqB,KAAK,KAAK,CAAC;IACrG,MAAM,QAAQ,GAAG,UAAU,CAAC,wBAAwB,KAAK,IAAI,CAAC;IAC9D,MAAM,OAAO,GAAG,EAAE,CAAC,oBAAoB,IAAI,IAAI,IAAI,MAAM,CAAC,EAAE,CAAC,oBAAoB,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;IAC9F,MAAM,iBAAiB,GAAG,YAAY,IAAI,QAAQ,IAAI,OAAO,CAAC;IAE9D,qEAAqE;IACrE,6EAA6E;IAC7E,MAAM,SAAS,GAAiB,EAAE,CAAC;IACnC,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,IAAI,iBAAiB,KAAK,WAAW;YAAE,SAAS,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;aACtE,IAAI,iBAAiB,KAAK,UAAU;YAAE,SAAS,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;;YACjF,SAAS,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;IACnD,CAAC;SAAM,IAAI,UAAU,CAAC,wBAAwB,KAAK,IAAI,EAAE,CAAC;QACxD,wCAAwC;IAC1C,CAAC;SAAM,IAAI,UAAU,CAAC,wBAAwB,KAAK,KAAK,EAAE,CAAC;QACzD,SAAS,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;IACjD,CAAC;SAAM,CAAC;QACN,SAAS,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;IACvD,CAAC;IAED,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,SAAS,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;IAC3C,CAAC;IAED,MAAM,QAAQ,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAEjE,OAAO;QACL,aAAa,EAAE,IAAI;QACnB,KAAK,EAAE,SAAS;QAChB,MAAM,EAAE,oBAAoB;QAC5B,iBAAiB;QACjB,iBAAiB;QACjB,SAAS;QACT,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACjC,MAAM;KACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,125 @@
1
+ /**
2
+ * Remediation-loop attestation (audit item 7 completion) — pure binder that ties a prior
3
+ * BLOCK decision (with its remediation transaction) to a later ALLOW execution chain
4
+ * (GuardExecutionProof + optional cas-attestation.v1).
5
+ *
6
+ * Does NOT modify cas-attestation.ts, execution-proof.ts, or envelope types.
7
+ * Does NOT claim that the patch fixed required_changes, that recheck_scope was honored
8
+ * server-side, that no other changes rode along, or that the new decision was caused by
9
+ * the remediation — see limits (always set).
10
+ *
11
+ * Linkage mechanism (measured, app remediation-transaction.js):
12
+ * resubmission.reference_fingerprint + fingerprint_profile + modified_is_not_permission
13
+ * + next_preflight_required + recheck_scope. No decision_id prev-link on re-preflight.
14
+ *
15
+ * Future stronger form (NOT built here): server-echoed remediation_of on the re-authorize
16
+ * path would bind decision_id→decision_id; this record only links measured fingerprints.
17
+ *
18
+ * DecisionResultEnvelope (SDK typed) does NOT declare remediation_transaction /
19
+ * required_changes / resubmission — those ride on BLOCK envelopes at runtime when the app
20
+ * attaches them. Access is via a narrow validated reader (measured field names only).
21
+ */
22
+ import type { DecisionResultEnvelope } from './types.js';
23
+ import type { GuardExecutionProof } from './execution-proof.js';
24
+ import type { CasAttestation } from './cas-attestation.js';
25
+ /** Machine-readable schema id — mirrors cas-attestation.v1 / guard-execution-proof.v1 style. */
26
+ export declare const REMEDIATION_LOOP_ATTESTATION_SPEC: "remediation-loop-attestation.v1";
27
+ /**
28
+ * Explicit non-claims. Always set (same discipline as CasAttestation.limits).
29
+ * Readers that treat missing fields as "ok" are wrong.
30
+ */
31
+ export type RemediationLoopAttestationLimits = {
32
+ /** Does not claim the host patch addressed required_changes (semantic, unverifiable here). */
33
+ does_not_claim_patch_addressed_required_changes: true;
34
+ /** Does not claim recheck_scope was honored server-side on the re-preflight. */
35
+ does_not_claim_recheck_scope_honored: true;
36
+ /** Does not claim no unrelated changes rode along in the new change set. */
37
+ does_not_claim_no_other_changes: true;
38
+ /** Does not claim the new ALLOW was caused by the remediation (correlation ≠ causation). */
39
+ does_not_claim_allow_caused_by_remediation: true;
40
+ /**
41
+ * Unchanged input is not permission (mirrors resubmission.modified_is_not_permission /
42
+ * unchanged_input → deterministic_block). Attestation refuses when fingerprints match.
43
+ */
44
+ does_not_claim_unchanged_input_is_permission: true;
45
+ /** Same host-bypass residual — package cannot force the host to re-preflight or CAS-commit. */
46
+ does_not_claim_host_cannot_bypass: true;
47
+ };
48
+ /** Measured remediation_transaction shape (app remediation-transaction.js, fixed key order). */
49
+ export type RemediationTransactionView = {
50
+ required_changes: unknown[];
51
+ resubmission: {
52
+ reference_fingerprint: string;
53
+ fingerprint_profile?: string;
54
+ modified_is_not_permission?: boolean;
55
+ unchanged_input?: string;
56
+ modified_input?: string;
57
+ };
58
+ next_preflight_required?: boolean;
59
+ recheck_scope?: unknown;
60
+ };
61
+ /**
62
+ * Frozen remediation-loop-attestation.v1 record.
63
+ * References are lifted from measured identifiers only; derived flags are only what is
64
+ * honestly computable from the typed inputs.
65
+ */
66
+ export type RemediationLoopAttestation = {
67
+ attestation_spec: typeof REMEDIATION_LOOP_ATTESTATION_SPEC;
68
+ references: {
69
+ block: {
70
+ decision_id: string;
71
+ reference_fingerprint: string;
72
+ required_changes_count: number;
73
+ recheck_scope: unknown | null;
74
+ fingerprint_profile: string | null;
75
+ next_preflight_required: boolean | null;
76
+ };
77
+ allow: {
78
+ decision_id: string | null;
79
+ change_fp: string;
80
+ };
81
+ cas: {
82
+ status: string;
83
+ authorized_and_committed: boolean;
84
+ } | null;
85
+ };
86
+ derived: {
87
+ /** reference_fingerprint !== allow.change_fp (required for closure). */
88
+ input_changed: true;
89
+ /**
90
+ * True only when cas-attestation is supplied AND cas.derived.authorized_and_committed.
91
+ * Absent cas → false (recheck+authorize linkage only, not CAS commit).
92
+ */
93
+ loop_committed: boolean;
94
+ };
95
+ limits: RemediationLoopAttestationLimits;
96
+ };
97
+ /**
98
+ * Read remediation_transaction from a BLOCK envelope object.
99
+ * Typed DecisionResultEnvelope does not declare this field (measured absent from
100
+ * decision-result.v1.d.ts); app attaches it at runtime on BLOCK. Measured names only
101
+ * (remediation-transaction.js).
102
+ */
103
+ export declare function readRemediationTransaction(envelope: unknown): RemediationTransactionView | null;
104
+ /**
105
+ * Validate prior envelope is a BLOCK with a usable remediation transaction.
106
+ * Returns measured identifiers or null if shape invalid.
107
+ */
108
+ export declare function readPriorBlockRemediation(envelope: unknown): {
109
+ decision_id: string;
110
+ reference_fingerprint: string;
111
+ required_changes_count: number;
112
+ recheck_scope: unknown | null;
113
+ fingerprint_profile: string | null;
114
+ next_preflight_required: boolean | null;
115
+ } | null;
116
+ export declare function isCasAttestation(x: unknown): x is CasAttestation;
117
+ /**
118
+ * Bind prior BLOCK envelope + ALLOW proof (+ optional cas-attestation) into
119
+ * remediation-loop-attestation.v1.
120
+ *
121
+ * Validation-first: TypeError on invalid shapes / not-BLOCK / missing remediation tx /
122
+ * missing allow change_fp / unchanged fingerprint (modified_is_not_permission).
123
+ */
124
+ export declare function buildRemediationLoopAttestation(priorBlockEnvelope: DecisionResultEnvelope | Record<string, unknown>, allowProof: GuardExecutionProof, casAttestation?: CasAttestation | null): RemediationLoopAttestation;
125
+ //# sourceMappingURL=remediation-loop-attestation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remediation-loop-attestation.d.ts","sourceRoot":"","sources":["../../src/remediation-loop-attestation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,179 @@
1
+ /**
2
+ * Remediation-loop attestation (audit item 7 completion) — pure binder that ties a prior
3
+ * BLOCK decision (with its remediation transaction) to a later ALLOW execution chain
4
+ * (GuardExecutionProof + optional cas-attestation.v1).
5
+ *
6
+ * Does NOT modify cas-attestation.ts, execution-proof.ts, or envelope types.
7
+ * Does NOT claim that the patch fixed required_changes, that recheck_scope was honored
8
+ * server-side, that no other changes rode along, or that the new decision was caused by
9
+ * the remediation — see limits (always set).
10
+ *
11
+ * Linkage mechanism (measured, app remediation-transaction.js):
12
+ * resubmission.reference_fingerprint + fingerprint_profile + modified_is_not_permission
13
+ * + next_preflight_required + recheck_scope. No decision_id prev-link on re-preflight.
14
+ *
15
+ * Future stronger form (NOT built here): server-echoed remediation_of on the re-authorize
16
+ * path would bind decision_id→decision_id; this record only links measured fingerprints.
17
+ *
18
+ * DecisionResultEnvelope (SDK typed) does NOT declare remediation_transaction /
19
+ * required_changes / resubmission — those ride on BLOCK envelopes at runtime when the app
20
+ * attaches them. Access is via a narrow validated reader (measured field names only).
21
+ */
22
+ import { isGuardExecutionProof } from './cas-attestation.js';
23
+ import { CAS_ATTESTATION_SPEC } from './cas-attestation.js';
24
+ /** Machine-readable schema id — mirrors cas-attestation.v1 / guard-execution-proof.v1 style. */
25
+ export const REMEDIATION_LOOP_ATTESTATION_SPEC = 'remediation-loop-attestation.v1';
26
+ const LIMITS = Object.freeze({
27
+ does_not_claim_patch_addressed_required_changes: true,
28
+ does_not_claim_recheck_scope_honored: true,
29
+ does_not_claim_no_other_changes: true,
30
+ does_not_claim_allow_caused_by_remediation: true,
31
+ does_not_claim_unchanged_input_is_permission: true,
32
+ does_not_claim_host_cannot_bypass: true,
33
+ });
34
+ // ── Narrow readers (runtime fields not on DecisionResultEnvelope type) ───────
35
+ /**
36
+ * Read remediation_transaction from a BLOCK envelope object.
37
+ * Typed DecisionResultEnvelope does not declare this field (measured absent from
38
+ * decision-result.v1.d.ts); app attaches it at runtime on BLOCK. Measured names only
39
+ * (remediation-transaction.js).
40
+ */
41
+ export function readRemediationTransaction(envelope) {
42
+ if (!envelope || typeof envelope !== 'object')
43
+ return null;
44
+ const e = envelope;
45
+ const tx = e.remediation_transaction;
46
+ if (!tx || typeof tx !== 'object')
47
+ return null;
48
+ const t = tx;
49
+ if (!Array.isArray(t.required_changes))
50
+ return null;
51
+ const resub = t.resubmission;
52
+ if (!resub || typeof resub !== 'object')
53
+ return null;
54
+ const r = resub;
55
+ if (typeof r.reference_fingerprint !== 'string' || !r.reference_fingerprint)
56
+ return null;
57
+ return {
58
+ required_changes: t.required_changes,
59
+ resubmission: {
60
+ reference_fingerprint: r.reference_fingerprint,
61
+ fingerprint_profile: typeof r.fingerprint_profile === 'string' ? r.fingerprint_profile : undefined,
62
+ modified_is_not_permission: typeof r.modified_is_not_permission === 'boolean'
63
+ ? r.modified_is_not_permission
64
+ : undefined,
65
+ unchanged_input: typeof r.unchanged_input === 'string' ? r.unchanged_input : undefined,
66
+ modified_input: typeof r.modified_input === 'string' ? r.modified_input : undefined,
67
+ },
68
+ next_preflight_required: typeof t.next_preflight_required === 'boolean' ? t.next_preflight_required : undefined,
69
+ recheck_scope: 'recheck_scope' in t ? t.recheck_scope : undefined,
70
+ };
71
+ }
72
+ /**
73
+ * Validate prior envelope is a BLOCK with a usable remediation transaction.
74
+ * Returns measured identifiers or null if shape invalid.
75
+ */
76
+ export function readPriorBlockRemediation(envelope) {
77
+ if (!envelope || typeof envelope !== 'object')
78
+ return null;
79
+ const e = envelope;
80
+ if (e.decision !== 'BLOCK')
81
+ return null;
82
+ if (typeof e.decision_id !== 'string' || !e.decision_id)
83
+ return null;
84
+ const tx = readRemediationTransaction(envelope);
85
+ if (!tx)
86
+ return null;
87
+ return {
88
+ decision_id: e.decision_id,
89
+ reference_fingerprint: tx.resubmission.reference_fingerprint,
90
+ required_changes_count: tx.required_changes.length,
91
+ recheck_scope: tx.recheck_scope !== undefined ? tx.recheck_scope : null,
92
+ fingerprint_profile: tx.resubmission.fingerprint_profile ?? null,
93
+ next_preflight_required: tx.next_preflight_required !== undefined ? tx.next_preflight_required : null,
94
+ };
95
+ }
96
+ export function isCasAttestation(x) {
97
+ if (!x || typeof x !== 'object')
98
+ return false;
99
+ const a = x;
100
+ return a.attestation_spec === CAS_ATTESTATION_SPEC
101
+ && a.derived != null
102
+ && typeof a.derived === 'object'
103
+ && a.cas != null
104
+ && typeof a.cas === 'object';
105
+ }
106
+ /**
107
+ * Bind prior BLOCK envelope + ALLOW proof (+ optional cas-attestation) into
108
+ * remediation-loop-attestation.v1.
109
+ *
110
+ * Validation-first: TypeError on invalid shapes / not-BLOCK / missing remediation tx /
111
+ * missing allow change_fp / unchanged fingerprint (modified_is_not_permission).
112
+ */
113
+ export function buildRemediationLoopAttestation(priorBlockEnvelope, allowProof, casAttestation) {
114
+ const block = readPriorBlockRemediation(priorBlockEnvelope);
115
+ if (!block) {
116
+ throw new TypeError('@coderifts/agent-guard: buildRemediationLoopAttestation requires a BLOCK envelope '
117
+ + 'with a valid remediation_transaction '
118
+ + '(required_changes[], resubmission.reference_fingerprint) — measured app shape; '
119
+ + 'not declared on DecisionResultEnvelope types');
120
+ }
121
+ if (!isGuardExecutionProof(allowProof)) {
122
+ throw new TypeError('@coderifts/agent-guard: buildRemediationLoopAttestation requires a valid '
123
+ + 'guard-execution-proof.v1 object');
124
+ }
125
+ const allowChangeFp = allowProof.binds_to != null && typeof allowProof.binds_to.change_fp === 'string'
126
+ ? allowProof.binds_to.change_fp
127
+ : null;
128
+ if (!allowChangeFp) {
129
+ throw new TypeError('@coderifts/agent-guard: buildRemediationLoopAttestation requires allow proof '
130
+ + 'binds_to.change_fp (measured identifier for the new change set)');
131
+ }
132
+ // Unchanged input is explicitly not permission (resubmission.modified_is_not_permission).
133
+ if (block.reference_fingerprint === allowChangeFp) {
134
+ throw new TypeError('@coderifts/agent-guard: buildRemediationLoopAttestation: input_unchanged '
135
+ + '(reference_fingerprint === allow change_fp); modified_is_not_permission — '
136
+ + 'refuse to attest loop closure');
137
+ }
138
+ let casRef = null;
139
+ let loop_committed = false;
140
+ if (casAttestation != null && casAttestation !== undefined) {
141
+ if (!isCasAttestation(casAttestation)) {
142
+ throw new TypeError('@coderifts/agent-guard: buildRemediationLoopAttestation casAttestation must be '
143
+ + 'cas-attestation.v1 when provided');
144
+ }
145
+ casRef = Object.freeze({
146
+ status: String(casAttestation.cas.status),
147
+ authorized_and_committed: casAttestation.derived.authorized_and_committed === true,
148
+ });
149
+ loop_committed = casAttestation.derived.authorized_and_committed === true;
150
+ }
151
+ const record = {
152
+ attestation_spec: REMEDIATION_LOOP_ATTESTATION_SPEC,
153
+ references: Object.freeze({
154
+ block: Object.freeze({
155
+ decision_id: block.decision_id,
156
+ reference_fingerprint: block.reference_fingerprint,
157
+ required_changes_count: block.required_changes_count,
158
+ recheck_scope: block.recheck_scope,
159
+ fingerprint_profile: block.fingerprint_profile,
160
+ next_preflight_required: block.next_preflight_required,
161
+ }),
162
+ allow: Object.freeze({
163
+ decision_id: allowProof.decision_id,
164
+ change_fp: allowChangeFp,
165
+ }),
166
+ cas: casRef,
167
+ }),
168
+ derived: Object.freeze({
169
+ input_changed: true,
170
+ loop_committed,
171
+ }),
172
+ limits: LIMITS,
173
+ };
174
+ return freezeLoopAttestation(record);
175
+ }
176
+ function freezeLoopAttestation(a) {
177
+ return Object.freeze(a);
178
+ }
179
+ //# sourceMappingURL=remediation-loop-attestation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remediation-loop-attestation.js","sourceRoot":"","sources":["../../src/remediation-loop-attestation.ts"],"names":[],"mappings":"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"}
@@ -80,9 +80,12 @@ export interface GuardConfig {
80
80
  * Tri-state (least-breaking: keeps boolean semantics; only `'warn'` is new):
81
81
  * - false / absent → off (default) — no recheck
82
82
  * - true → enforce — hard-block with EXECUTION_STATE_DRIFT on mismatch (step 1 behavior)
83
- * - 'warn' → report-only — emit `execution_state_drift_observed` on mismatch, still execute
83
+ * - 'warn' → report-only — on real drift emit `execution_state_drift_observed` (loud);
84
+ * on unmeasurable state emit `execution_state_unmeasurable` (quiet);
85
+ * still execute either way. Match → no event.
84
86
  *
85
- * Default remains off. warn and enforce are both opt-in; a default flip is a later versioned decision.
87
+ * Default remains off. warn and enforce are both opt-in; a default flip (step3b, guard@7) will
88
+ * ride on the **loud** signal only — quiet unmeasurable is not drift evidence.
86
89
  */
87
90
  requireExecutionStateMatch?: boolean | 'warn';
88
91
  }
@@ -248,7 +251,7 @@ export type GuardEvent = {
248
251
  signals?: string[];
249
252
  detectorVersion?: string;
250
253
  }
251
- /** ID842 step 3a — warn-mode only: T2 fingerprint drift observed; execution still proceeds. */
254
+ /** ID842 step 3a — warn-mode only: real T2 fingerprint drift observed; execution still proceeds. */
252
255
  | {
253
256
  type: 'execution_state_drift_observed';
254
257
  at: string;
@@ -256,5 +259,19 @@ export type GuardEvent = {
256
259
  current_fingerprint: string | null;
257
260
  authorized_fingerprint: string | null;
258
261
  reason: string;
262
+ }
263
+ /**
264
+ * ID842 warn-mode only: T2 recheck could not measure (nothing to compare). Quiet — not evidence of
265
+ * drift and not evidence of safety. Distinct from `execution_state_drift_observed` so hosts can
266
+ * filter noise before a future default-to-warn flip.
267
+ */
268
+ | {
269
+ type: 'execution_state_unmeasurable';
270
+ at: string;
271
+ decisionId?: string;
272
+ current_fingerprint: string | null;
273
+ authorized_fingerprint: string | null;
274
+ reason: string;
275
+ note: string;
259
276
  };
260
277
  //# sourceMappingURL=types.d.ts.map