@coderifts/agent-guard 8.1.0 → 8.2.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 +35 -2
- package/dist/cjs/commit-observation.d.ts +50 -0
- package/dist/cjs/commit-observation.d.ts.map +1 -0
- package/dist/cjs/commit-observation.js +188 -0
- package/dist/cjs/commit-observation.js.map +1 -0
- package/dist/cjs/conditional-write.d.ts +2 -0
- package/dist/cjs/conditional-write.d.ts.map +1 -1
- package/dist/cjs/conditional-write.js +15 -4
- package/dist/cjs/conditional-write.js.map +1 -1
- package/dist/cjs/execute-tool-call.d.ts.map +1 -1
- package/dist/cjs/execute-tool-call.js +16 -0
- package/dist/cjs/execute-tool-call.js.map +1 -1
- package/dist/cjs/execution-proof.d.ts +11 -0
- package/dist/cjs/execution-proof.d.ts.map +1 -1
- package/dist/cjs/execution-proof.js +8 -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 +19 -0
- package/dist/cjs/final-answer-proof.js.map +1 -1
- package/dist/cjs/guard.d.ts.map +1 -1
- package/dist/cjs/guard.js +109 -68
- package/dist/cjs/guard.js.map +1 -1
- package/dist/cjs/index.d.ts +2 -1
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +6 -3
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/types.d.ts +22 -1
- package/dist/cjs/types.d.ts.map +1 -1
- package/dist/cjs/with-coderifts.d.ts +6 -0
- package/dist/cjs/with-coderifts.d.ts.map +1 -1
- package/dist/cjs/with-coderifts.js +3 -0
- package/dist/cjs/with-coderifts.js.map +1 -1
- package/dist/esm/commit-observation.d.ts +50 -0
- package/dist/esm/commit-observation.d.ts.map +1 -0
- package/dist/esm/commit-observation.js +185 -0
- package/dist/esm/commit-observation.js.map +1 -0
- package/dist/esm/conditional-write.d.ts +2 -0
- package/dist/esm/conditional-write.d.ts.map +1 -1
- package/dist/esm/conditional-write.js +15 -4
- package/dist/esm/conditional-write.js.map +1 -1
- package/dist/esm/execute-tool-call.d.ts.map +1 -1
- package/dist/esm/execute-tool-call.js +16 -0
- package/dist/esm/execute-tool-call.js.map +1 -1
- package/dist/esm/execution-proof.d.ts +11 -0
- package/dist/esm/execution-proof.d.ts.map +1 -1
- package/dist/esm/execution-proof.js +8 -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 +19 -0
- package/dist/esm/final-answer-proof.js.map +1 -1
- package/dist/esm/guard.d.ts.map +1 -1
- package/dist/esm/guard.js +109 -68
- package/dist/esm/guard.js.map +1 -1
- package/dist/esm/index.d.ts +2 -1
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +1 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/types.d.ts +22 -1
- package/dist/esm/types.d.ts.map +1 -1
- package/dist/esm/with-coderifts.d.ts +6 -0
- package/dist/esm/with-coderifts.d.ts.map +1 -1
- package/dist/esm/with-coderifts.js +3 -0
- package/dist/esm/with-coderifts.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
Fail-closed guard for AI agent tool calls — preflight contract changes before they execute.
|
|
4
4
|
|
|
5
|
-
Security core **FROZEN** (agent-guard-api v1.0). Built on [`@coderifts/sdk`](https://www.npmjs.com/package/@coderifts/sdk) `^
|
|
5
|
+
Security core **FROZEN** (agent-guard-api v1.0). Built on [`@coderifts/sdk`](https://www.npmjs.com/package/@coderifts/sdk) `^3.0.0`.
|
|
6
6
|
|
|
7
7
|
```bash
|
|
8
8
|
npm install @coderifts/agent-guard @coderifts/sdk
|
|
@@ -68,7 +68,7 @@ requireExecutionStateMatch?: boolean | 'warn'; // default: absent → true (enf
|
|
|
68
68
|
|---|---|---|
|
|
69
69
|
| **Enforce** (default) | `true` / absent | Rechecks. Content mismatch → `EXECUTION_STATE_DRIFT` (factory never runs). Missing authorized fingerprint or missing artifacts → `EXECUTION_STATE_UNMEASURABLE` (cannot assert; STOP). |
|
|
70
70
|
| **Warn** (opt-down) | `'warn'` | Rechecks. Emits `execution_state_drift_observed` (loud) or `execution_state_unmeasurable` (quiet), then **runs unenforced** (`enforced: false` on mismatch). |
|
|
71
|
-
| **OFF** (opt-down) | `false` | No recheck (v7 proceed-on-drift). Must be set explicitly. |
|
|
71
|
+
| **OFF** (opt-down) | `false` | No recheck (v7 proceed-on-drift). Factory still runs. **`enforced: false`** — the check was not performed. Emits `execution_state_check_disabled`. Must be set explicitly. |
|
|
72
72
|
|
|
73
73
|
**Two warn signals (noise-split):**
|
|
74
74
|
|
|
@@ -180,6 +180,39 @@ Requires `resolvePriorContent` at construction. Does **not** claim host cannot r
|
|
|
180
180
|
outside the returned table — residual `calls_outside_guarded_path_invisible`. Adapters
|
|
181
181
|
(`withCodeRiftsOpenAI` / Anthropic / Gemini / LangGraph) still emit only the guarded list.
|
|
182
182
|
|
|
183
|
+
### Production enforcement (`ENFORCING_STRICT` + freshness / CAS)
|
|
184
|
+
|
|
185
|
+
The `withCodeRifts` example above is the **entry point** (absent profile: freshness and
|
|
186
|
+
conditional-write stay opt-in). For production, lock the fail-closed conjunction with
|
|
187
|
+
`profile: 'ENFORCING_STRICT'` (shipped guard@8.1.0; current package 8.1.1). Construction
|
|
188
|
+
**aborts** if you opt down any locked flag or omit `resolvePriorContent`.
|
|
189
|
+
|
|
190
|
+
```typescript
|
|
191
|
+
import { withCodeRifts } from '@coderifts/agent-guard';
|
|
192
|
+
|
|
193
|
+
const { tools, registry_report, composition_assurance, receipt_thread } = withCodeRifts({
|
|
194
|
+
tools: rawTools,
|
|
195
|
+
client,
|
|
196
|
+
operation: 'merge',
|
|
197
|
+
profile: 'ENFORCING_STRICT',
|
|
198
|
+
// Required under STRICT (abort at construction if missing). Host measures prior
|
|
199
|
+
// bytes for write-style freshness; the package never reads the filesystem.
|
|
200
|
+
resolvePriorContent: ({ artifactId }) => readPrior(artifactId),
|
|
201
|
+
});
|
|
202
|
+
// register ONLY `tools`. Receipt carry-forward is default-on (`receipt_thread`).
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
Honesty (do not over-claim):
|
|
206
|
+
|
|
207
|
+
- **Freshness** is ACTIVE only because STRICT sets `requireFreshness` **and** you supplied
|
|
208
|
+
`resolvePriorContent`. A resolver that returns stale or empty bytes is still your measurement.
|
|
209
|
+
- **CAS / conditional write** is a **host assertion** (`conditional_write: true` on the write).
|
|
210
|
+
This package never writes and cannot verify the swap. `requireConditionalWrite` refuses
|
|
211
|
+
`enforced: true` when the host does not report it. Not a full TOCTOU closure (no
|
|
212
|
+
`observed_token_at_commit` CAS).
|
|
213
|
+
- Host-invoked raw tools outside the returned table remain invisible
|
|
214
|
+
(`calls_outside_guarded_path_invisible`). `composition_assurance.inescapable_runtime` stays false.
|
|
215
|
+
|
|
183
216
|
### Final-answer proof block (ID645)
|
|
184
217
|
|
|
185
218
|
When a call produces a machine `GuardExecutionProof` (`outcome.proof`), you can embed a
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
export declare function hashObservedContent(v: unknown): string;
|
|
2
|
+
export type CommitObservationStatus = 'not_observed' | 'observed_match' | 'observed_drift' | 'observed_token_match';
|
|
3
|
+
export type CommitHostAttestation = 'absent' | 'host_attested_committed' | 'host_attested_refused' | 'conflict';
|
|
4
|
+
export type CommitObservationBlast = {
|
|
5
|
+
compared: 'content' | 'token';
|
|
6
|
+
decision?: string;
|
|
7
|
+
execution_action?: string;
|
|
8
|
+
decision_id?: string | null;
|
|
9
|
+
unavailable?: boolean;
|
|
10
|
+
cause?: string;
|
|
11
|
+
};
|
|
12
|
+
export type CommitObservation = {
|
|
13
|
+
status: CommitObservationStatus;
|
|
14
|
+
observed_fp?: string;
|
|
15
|
+
expected_fp?: string;
|
|
16
|
+
token?: string;
|
|
17
|
+
observed_at: string;
|
|
18
|
+
host_attestation?: CommitHostAttestation;
|
|
19
|
+
blast?: CommitObservationBlast;
|
|
20
|
+
};
|
|
21
|
+
export type ObserveCommitCall = {
|
|
22
|
+
arguments?: unknown;
|
|
23
|
+
artifacts?: ReadonlyArray<{
|
|
24
|
+
id?: string;
|
|
25
|
+
after?: unknown;
|
|
26
|
+
}>;
|
|
27
|
+
filesTouched?: string[];
|
|
28
|
+
};
|
|
29
|
+
export type ObserveCommitPreflight = (artifacts: Array<{
|
|
30
|
+
id?: string;
|
|
31
|
+
type?: string;
|
|
32
|
+
before?: unknown;
|
|
33
|
+
after?: unknown;
|
|
34
|
+
}>) => Promise<{
|
|
35
|
+
ok: true;
|
|
36
|
+
response: unknown;
|
|
37
|
+
} | {
|
|
38
|
+
ok: false;
|
|
39
|
+
cause: string;
|
|
40
|
+
}>;
|
|
41
|
+
export type ObserveCommitInput = {
|
|
42
|
+
enabled: boolean;
|
|
43
|
+
call: ObserveCommitCall;
|
|
44
|
+
result?: unknown;
|
|
45
|
+
now: string;
|
|
46
|
+
preflightOnObserved?: ObserveCommitPreflight;
|
|
47
|
+
};
|
|
48
|
+
/** T3 measurement. Never throws. Does not write. Does not flip enforced. */
|
|
49
|
+
export declare function observeCommit(input: ObserveCommitInput): Promise<CommitObservation>;
|
|
50
|
+
//# sourceMappingURL=commit-observation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commit-observation.d.ts","sourceRoot":"","sources":["../../src/commit-observation.ts"],"names":[],"mappings":"AAqBA,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,OAAO,GAAG,MAAM,CAEtD;AAED,MAAM,MAAM,uBAAuB,GAC/B,cAAc,GAAG,gBAAgB,GAAG,gBAAgB,GAAG,sBAAsB,CAAC;AAClF,MAAM,MAAM,qBAAqB,GAC7B,QAAQ,GAAG,yBAAyB,GAAG,uBAAuB,GAAG,UAAU,CAAC;AAChF,MAAM,MAAM,sBAAsB,GAAG;IACnC,QAAQ,EAAE,SAAS,GAAG,OAAO,CAAC;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1E,WAAW,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACvC,CAAC;AACF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,MAAM,EAAE,uBAAuB,CAAC;IAChC,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAC3D,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,CAAC,EAAE,qBAAqB,CAAC;IACzC,KAAK,CAAC,EAAE,sBAAsB,CAAC;CAChC,CAAC;AACF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,aAAa,CAAC;QAAE,EAAE,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IAC5D,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB,CAAC;AACF,MAAM,MAAM,sBAAsB,GAAG,CACnC,SAAS,EAAE,KAAK,CAAC;IAAE,EAAE,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,KAChF,OAAO,CAAC;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAC7E,MAAM,MAAM,kBAAkB,GAAG;IAC/B,OAAO,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,iBAAiB,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IACzE,mBAAmB,CAAC,EAAE,sBAAsB,CAAC;CAC9C,CAAC;AAkEF,4EAA4E;AAC5E,wBAAsB,aAAa,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CASzF"}
|
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* T3 post-commit observation (ID781). Re-read after the host write; compare to
|
|
3
|
+
* authorized `after` (content) or intended post token (token-only adapters).
|
|
4
|
+
* OBSERVED — never verified/atomic. Does not change `enforced`. Host attestation
|
|
5
|
+
* is a label on the measurement, never a substitute.
|
|
6
|
+
*/
|
|
7
|
+
'use strict';
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.hashObservedContent = hashObservedContent;
|
|
10
|
+
exports.observeCommit = observeCommit;
|
|
11
|
+
const node_crypto_1 = require("node:crypto");
|
|
12
|
+
const node_fs_1 = require("node:fs");
|
|
13
|
+
const fs_js_1 = require("./cas-adapters/fs.js");
|
|
14
|
+
const api_js_1 = require("./cas-adapters/api.js");
|
|
15
|
+
const db_js_1 = require("./cas-adapters/db.js");
|
|
16
|
+
const registry_js_1 = require("./cas-adapters/registry.js");
|
|
17
|
+
const conditional_write_js_1 = require("./conditional-write.js");
|
|
18
|
+
/** Same specStr as execution-time-fingerprint.ts:25 (crbundle.v1 after-slot). */
|
|
19
|
+
function specStr(v) {
|
|
20
|
+
if (v == null)
|
|
21
|
+
return '';
|
|
22
|
+
return typeof v === 'string' ? v : JSON.stringify(v);
|
|
23
|
+
}
|
|
24
|
+
function hashObservedContent(v) {
|
|
25
|
+
return 'sha256:' + (0, node_crypto_1.createHash)('sha256').update(specStr(v), 'utf8').digest('hex');
|
|
26
|
+
}
|
|
27
|
+
function unobserved(now, host = 'absent') {
|
|
28
|
+
return { status: 'not_observed', observed_at: now, host_attestation: host };
|
|
29
|
+
}
|
|
30
|
+
function casStatus(result) {
|
|
31
|
+
const s = result && typeof result === 'object' ? result.status : null;
|
|
32
|
+
return s === 'committed' || s === 'refused' || s === 'committed_stale_detected' ? s : null;
|
|
33
|
+
}
|
|
34
|
+
function hostLabel(cas, drifted) {
|
|
35
|
+
if (cas == null)
|
|
36
|
+
return 'absent';
|
|
37
|
+
if (cas === 'refused')
|
|
38
|
+
return 'host_attested_refused';
|
|
39
|
+
if (cas === 'committed' && drifted)
|
|
40
|
+
return 'conflict';
|
|
41
|
+
if (cas === 'committed_stale_detected')
|
|
42
|
+
return drifted ? 'conflict' : 'host_attested_committed';
|
|
43
|
+
return 'host_attested_committed';
|
|
44
|
+
}
|
|
45
|
+
function casInner(result) {
|
|
46
|
+
if (!result || typeof result !== 'object')
|
|
47
|
+
return null;
|
|
48
|
+
const o = result;
|
|
49
|
+
if (o.status === 'committed' || o.status === 'committed_stale_detected') {
|
|
50
|
+
return o.result && typeof o.result === 'object' ? o.result : null;
|
|
51
|
+
}
|
|
52
|
+
return o;
|
|
53
|
+
}
|
|
54
|
+
function inferPath(call, result) {
|
|
55
|
+
const args = call.arguments && typeof call.arguments === 'object'
|
|
56
|
+
? call.arguments : {};
|
|
57
|
+
if (typeof args.path === 'string' && args.path)
|
|
58
|
+
return args.path;
|
|
59
|
+
if (Array.isArray(call.filesTouched) && typeof call.filesTouched[0] === 'string' && call.filesTouched[0]) {
|
|
60
|
+
return call.filesTouched[0];
|
|
61
|
+
}
|
|
62
|
+
const inner = casInner(result);
|
|
63
|
+
return inner && typeof inner.path === 'string' && inner.path ? inner.path : null;
|
|
64
|
+
}
|
|
65
|
+
function casObservedToken(result) {
|
|
66
|
+
if (!result || typeof result !== 'object')
|
|
67
|
+
return null;
|
|
68
|
+
const o = result;
|
|
69
|
+
if (typeof o.observed_token === 'string' && o.observed_token)
|
|
70
|
+
return o.observed_token;
|
|
71
|
+
if (typeof o.post_commit_token === 'string' && o.post_commit_token)
|
|
72
|
+
return o.post_commit_token;
|
|
73
|
+
return null;
|
|
74
|
+
}
|
|
75
|
+
function intendedPostToken(result) {
|
|
76
|
+
const inner = casInner(result);
|
|
77
|
+
if (!inner)
|
|
78
|
+
return null;
|
|
79
|
+
if (typeof inner.new_etag === 'string' && inner.new_etag.trim())
|
|
80
|
+
return (0, api_js_1.createApiVersionToken)(inner.new_etag);
|
|
81
|
+
if (inner.new_version != null && String(inner.new_version).trim()) {
|
|
82
|
+
return (0, db_js_1.createDbVersionToken)(inner.new_version);
|
|
83
|
+
}
|
|
84
|
+
if (inner.new_token != null && String(inner.new_token).trim()) {
|
|
85
|
+
return (0, registry_js_1.createRegistryVersionToken)(inner.new_token);
|
|
86
|
+
}
|
|
87
|
+
if (typeof inner.written_content_hash === 'string' && /^[a-f0-9]{64}$/.test(inner.written_content_hash)) {
|
|
88
|
+
return inner.written_content_hash;
|
|
89
|
+
}
|
|
90
|
+
return null;
|
|
91
|
+
}
|
|
92
|
+
function authorizedAfter(artifacts) {
|
|
93
|
+
if (!Array.isArray(artifacts))
|
|
94
|
+
return undefined;
|
|
95
|
+
for (const a of artifacts) {
|
|
96
|
+
if (a && a.after !== undefined && a.after !== null)
|
|
97
|
+
return a.after;
|
|
98
|
+
}
|
|
99
|
+
return undefined;
|
|
100
|
+
}
|
|
101
|
+
/** T3 measurement. Never throws. Does not write. Does not flip enforced. */
|
|
102
|
+
async function observeCommit(input) {
|
|
103
|
+
const cas = casStatus(input.result);
|
|
104
|
+
const host0 = hostLabel(cas, false);
|
|
105
|
+
if (input.enabled !== true)
|
|
106
|
+
return unobserved(input.now, 'absent');
|
|
107
|
+
try {
|
|
108
|
+
return await observeInner(input, cas, host0);
|
|
109
|
+
}
|
|
110
|
+
catch {
|
|
111
|
+
return unobserved(input.now, host0);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
async function observeInner(input, cas, host0) {
|
|
115
|
+
const now = input.now;
|
|
116
|
+
const expectedAfter = authorizedAfter(input.call.artifacts);
|
|
117
|
+
const filePath = inferPath(input.call, input.result);
|
|
118
|
+
let observedContent = null;
|
|
119
|
+
let token;
|
|
120
|
+
if (filePath && expectedAfter !== undefined) {
|
|
121
|
+
const fsTok = await (0, fs_js_1.createFsVersionToken)(filePath);
|
|
122
|
+
token = fsTok;
|
|
123
|
+
observedContent = fsTok === fs_js_1.FS_ABSENT_TOKEN ? '' : await node_fs_1.promises.readFile(filePath, 'utf8');
|
|
124
|
+
}
|
|
125
|
+
if (observedContent !== null && expectedAfter !== undefined) {
|
|
126
|
+
const observed_fp = hashObservedContent(observedContent);
|
|
127
|
+
const expected_fp = hashObservedContent(expectedAfter);
|
|
128
|
+
const match = observed_fp === expected_fp;
|
|
129
|
+
const obs = {
|
|
130
|
+
status: match ? 'observed_match' : 'observed_drift',
|
|
131
|
+
observed_fp, expected_fp, token, observed_at: now,
|
|
132
|
+
host_attestation: hostLabel(cas, !match),
|
|
133
|
+
};
|
|
134
|
+
if (!match)
|
|
135
|
+
obs.blast = await contentBlast(input, observedContent);
|
|
136
|
+
return obs;
|
|
137
|
+
}
|
|
138
|
+
const observedTok = casObservedToken(input.result);
|
|
139
|
+
const intended = intendedPostToken(input.result);
|
|
140
|
+
if (observedTok && intended) {
|
|
141
|
+
const tokenMatch = intended.length === 64 && !intended.includes(':')
|
|
142
|
+
? (0, fs_js_1.fsTokenContentHash)(observedTok) === intended
|
|
143
|
+
: (0, conditional_write_js_1.tokensEqual)(observedTok, intended);
|
|
144
|
+
const obs = {
|
|
145
|
+
status: tokenMatch ? 'observed_token_match' : 'observed_drift',
|
|
146
|
+
token: observedTok, observed_at: now, host_attestation: hostLabel(cas, !tokenMatch),
|
|
147
|
+
};
|
|
148
|
+
if (!tokenMatch) {
|
|
149
|
+
obs.observed_fp = observedTok;
|
|
150
|
+
obs.expected_fp = intended;
|
|
151
|
+
obs.blast = { compared: 'token' };
|
|
152
|
+
}
|
|
153
|
+
return obs;
|
|
154
|
+
}
|
|
155
|
+
if (observedTok)
|
|
156
|
+
return { status: 'not_observed', token: observedTok, observed_at: now, host_attestation: host0 };
|
|
157
|
+
return unobserved(now, host0);
|
|
158
|
+
}
|
|
159
|
+
async function contentBlast(input, observedContent) {
|
|
160
|
+
const pf = input.preflightOnObserved;
|
|
161
|
+
if (typeof pf !== 'function')
|
|
162
|
+
return { compared: 'content' };
|
|
163
|
+
const arts = Array.isArray(input.call.artifacts)
|
|
164
|
+
? input.call.artifacts.map((a) => ({ ...a, after: observedContent }))
|
|
165
|
+
: [{ after: observedContent }];
|
|
166
|
+
try {
|
|
167
|
+
const r = await pf(arts);
|
|
168
|
+
if (!r.ok)
|
|
169
|
+
return { compared: 'content', unavailable: true, cause: r.cause };
|
|
170
|
+
const raw = r.response;
|
|
171
|
+
const env = raw && typeof raw === 'object' && raw.decision_result
|
|
172
|
+
&& typeof raw.decision_result === 'object'
|
|
173
|
+
? raw.decision_result
|
|
174
|
+
: (raw && typeof raw === 'object' ? raw : null);
|
|
175
|
+
if (!env)
|
|
176
|
+
return { compared: 'content', unavailable: true };
|
|
177
|
+
return {
|
|
178
|
+
compared: 'content',
|
|
179
|
+
decision: typeof env.decision === 'string' ? env.decision : undefined,
|
|
180
|
+
execution_action: typeof env.execution_action === 'string' ? env.execution_action : undefined,
|
|
181
|
+
decision_id: typeof env.decision_id === 'string' ? env.decision_id : null,
|
|
182
|
+
};
|
|
183
|
+
}
|
|
184
|
+
catch (err) {
|
|
185
|
+
return { compared: 'content', unavailable: true, cause: err instanceof Error ? err.message : 'preflight_threw' };
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
//# sourceMappingURL=commit-observation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commit-observation.js","sourceRoot":"","sources":["../../src/commit-observation.ts"],"names":[],"mappings":"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"}
|
|
@@ -101,6 +101,7 @@ export type ExecuteIfUnchangedOutcome<T> = {
|
|
|
101
101
|
status: 'committed';
|
|
102
102
|
result: T;
|
|
103
103
|
version_token: VersionToken;
|
|
104
|
+
observed_token?: VersionToken | null;
|
|
104
105
|
} | {
|
|
105
106
|
status: 'refused';
|
|
106
107
|
reason: 'stale_version_token';
|
|
@@ -112,6 +113,7 @@ export type ExecuteIfUnchangedOutcome<T> = {
|
|
|
112
113
|
result: T;
|
|
113
114
|
expected_token: VersionToken;
|
|
114
115
|
post_commit_token: VersionToken | null;
|
|
116
|
+
observed_token?: VersionToken | null;
|
|
115
117
|
};
|
|
116
118
|
/**
|
|
117
119
|
* Thrown from write() when the adapter aborts BEFORE applying the mutation
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conditional-write.d.ts","sourceRoot":"","sources":["../../src/conditional-write.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAIH,2EAA2E;AAC3E,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC;AAElC;;;GAGG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,YAAY,CAAC;CAC7B,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,sBAAsB,GAAG,IAAI,GAAG,KAAK,GAAG,cAAc,CAAC;AAEnE;;;GAGG;AACH,MAAM,MAAM,qBAAqB,GAAG;IAClC,iBAAiB,EAAE,sBAAsB,CAAC;IAC1C;;;OAGG;IACH,oBAAoB,CAAC,EAAE,YAAY,GAAG,IAAI,CAAC;IAC3C,6DAA6D;IAC7D,yBAAyB,EAAE,OAAO,CAAC;IACnC,oDAAoD;IACpD,WAAW,EAAE,OAAO,CAAC;CACtB,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,2BAA2B,GAAG;IACxC,iBAAiB,CAAC,EAAE,sBAAsB,CAAC;IAC3C,oBAAoB,CAAC,EAAE,YAAY,GAAG,IAAI,CAAC;IAC3C,kEAAkE;IAClE,iBAAiB,CAAC,EAAE,gBAAgB,GAAG,IAAI,CAAC;CAC7C,CAAC;AAEF,0EAA0E;AAC1E,wBAAgB,WAAW,CACzB,CAAC,EAAE,YAAY,GAAG,IAAI,GAAG,SAAS,EAClC,CAAC,EAAE,YAAY,GAAG,IAAI,GAAG,SAAS,GACjC,OAAO,CAIT;AASD;;;;;;;;GAQG;AACH,wBAAgB,0BAA0B,CAAC,KAAK,EAAE;IAChD,UAAU,EAAE,OAAO,CAAC;IACpB,uBAAuB,EAAE,OAAO,CAAC;IACjC,GAAG,CAAC,EAAE,2BAA2B,GAAG,IAAI,CAAC;CAC1C,GAAG;IACF,KAAK,EAAE,qBAAqB,CAAC;IAC7B,mDAAmD;IACnD,UAAU,CAAC,EAAE,4BAA4B,CAAC;CAC3C,CAgCA;AAED,yFAAyF;AACzF,eAAO,MAAM,4BAA4B,iDAAiD,CAAC;AAE3F;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE;IAC9C,uBAAuB,EAAE,OAAO,CAAC;IACjC,UAAU,EAAE,OAAO,CAAC;IACpB,gBAAgB,EAAE,sBAAsB,CAAC;CAC1C,GAAG,MAAM,GAAG,IAAI,CAKhB;AAMD;;;;;;;GAOG;AACH,MAAM,MAAM,yBAAyB,CAAC,CAAC,IACnC;IAAE,MAAM,EAAE,WAAW,CAAC;IAAC,MAAM,EAAE,CAAC,CAAC;IAAC,aAAa,EAAE,YAAY,CAAA;CAAE,
|
|
1
|
+
{"version":3,"file":"conditional-write.d.ts","sourceRoot":"","sources":["../../src/conditional-write.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAIH,2EAA2E;AAC3E,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC;AAElC;;;GAGG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,YAAY,CAAC;CAC7B,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,sBAAsB,GAAG,IAAI,GAAG,KAAK,GAAG,cAAc,CAAC;AAEnE;;;GAGG;AACH,MAAM,MAAM,qBAAqB,GAAG;IAClC,iBAAiB,EAAE,sBAAsB,CAAC;IAC1C;;;OAGG;IACH,oBAAoB,CAAC,EAAE,YAAY,GAAG,IAAI,CAAC;IAC3C,6DAA6D;IAC7D,yBAAyB,EAAE,OAAO,CAAC;IACnC,oDAAoD;IACpD,WAAW,EAAE,OAAO,CAAC;CACtB,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,2BAA2B,GAAG;IACxC,iBAAiB,CAAC,EAAE,sBAAsB,CAAC;IAC3C,oBAAoB,CAAC,EAAE,YAAY,GAAG,IAAI,CAAC;IAC3C,kEAAkE;IAClE,iBAAiB,CAAC,EAAE,gBAAgB,GAAG,IAAI,CAAC;CAC7C,CAAC;AAEF,0EAA0E;AAC1E,wBAAgB,WAAW,CACzB,CAAC,EAAE,YAAY,GAAG,IAAI,GAAG,SAAS,EAClC,CAAC,EAAE,YAAY,GAAG,IAAI,GAAG,SAAS,GACjC,OAAO,CAIT;AASD;;;;;;;;GAQG;AACH,wBAAgB,0BAA0B,CAAC,KAAK,EAAE;IAChD,UAAU,EAAE,OAAO,CAAC;IACpB,uBAAuB,EAAE,OAAO,CAAC;IACjC,GAAG,CAAC,EAAE,2BAA2B,GAAG,IAAI,CAAC;CAC1C,GAAG;IACF,KAAK,EAAE,qBAAqB,CAAC;IAC7B,mDAAmD;IACnD,UAAU,CAAC,EAAE,4BAA4B,CAAC;CAC3C,CAgCA;AAED,yFAAyF;AACzF,eAAO,MAAM,4BAA4B,iDAAiD,CAAC;AAE3F;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE;IAC9C,uBAAuB,EAAE,OAAO,CAAC;IACjC,UAAU,EAAE,OAAO,CAAC;IACpB,gBAAgB,EAAE,sBAAsB,CAAC;CAC1C,GAAG,MAAM,GAAG,IAAI,CAKhB;AAMD;;;;;;;GAOG;AACH,MAAM,MAAM,yBAAyB,CAAC,CAAC,IACnC;IAAE,MAAM,EAAE,WAAW,CAAC;IAAC,MAAM,EAAE,CAAC,CAAC;IAAC,aAAa,EAAE,YAAY,CAAC;IAAC,cAAc,CAAC,EAAE,YAAY,GAAG,IAAI,CAAA;CAAE,GACrG;IACE,MAAM,EAAE,SAAS,CAAC;IAClB,MAAM,EAAE,qBAAqB,CAAC;IAC9B,cAAc,EAAE,YAAY,CAAC;IAC7B,aAAa,EAAE,YAAY,GAAG,IAAI,CAAC;CACpC,GACD;IACE,MAAM,EAAE,0BAA0B,CAAC;IACnC,MAAM,EAAE,qBAAqB,CAAC;IAC9B,MAAM,EAAE,CAAC,CAAC;IACV,cAAc,EAAE,YAAY,CAAC;IAC7B,iBAAiB,EAAE,YAAY,GAAG,IAAI,CAAC;IACvC,cAAc,CAAC,EAAE,YAAY,GAAG,IAAI,CAAC;CACtC,CAAC;AAEN;;;;GAIG;AACH,qBAAa,sBAAuB,SAAQ,KAAK;IAC/C,QAAQ,CAAC,aAAa,EAAE,YAAY,GAAG,IAAI,CAAC;gBAChC,aAAa,EAAE,YAAY,GAAG,IAAI;CAK/C;AAED,MAAM,MAAM,sBAAsB,CAAC,CAAC,IAAI;IACtC,wEAAwE;IACxE,cAAc,EAAE,YAAY,CAAC;IAC7B;;;OAGG;IACH,aAAa,EAAE,MAAM,YAAY,GAAG,IAAI,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC;IACxE,sEAAsE;IACtE,KAAK,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAC5B;;;;;;;;OAQG;IACH,0BAA0B,CAAC,EAAE,OAAO,CAAC;IACrC;;;OAGG;IACH,qBAAqB,CAAC,EAAE,CACtB,MAAM,EAAE,CAAC,KACN,YAAY,GAAG,IAAI,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC;CACzD,CAAC;AAEF;;;;;GAKG;AACH,wBAAsB,kBAAkB,CAAC,CAAC,EACxC,IAAI,EAAE,sBAAsB,CAAC,CAAC,CAAC,GAC9B,OAAO,CAAC,yBAAyB,CAAC,CAAC,CAAC,CAAC,CA6DvC"}
|
|
@@ -148,20 +148,31 @@ async function executeIfUnchanged(args) {
|
|
|
148
148
|
}
|
|
149
149
|
throw err;
|
|
150
150
|
}
|
|
151
|
+
// T3: always re-read current_token after write (same host reader executeIfUnchanged already required).
|
|
152
|
+
// Detection (opt-in) reuses this read — not a second I/O. Observation failure must not fail the write.
|
|
153
|
+
let observed_token = null;
|
|
154
|
+
try {
|
|
155
|
+
observed_token = await args.current_token();
|
|
156
|
+
}
|
|
157
|
+
catch (err) {
|
|
158
|
+
if (args.detect_stale_during_commit === true)
|
|
159
|
+
throw err;
|
|
160
|
+
observed_token = null;
|
|
161
|
+
}
|
|
151
162
|
// Post-commit detection (best-effort honesty, not prevention).
|
|
152
163
|
if (args.detect_stale_during_commit === true && typeof args.expected_after_commit === 'function') {
|
|
153
164
|
const want = await args.expected_after_commit(result);
|
|
154
|
-
|
|
155
|
-
if (!tokensEqual(want, post)) {
|
|
165
|
+
if (!tokensEqual(want, observed_token)) {
|
|
156
166
|
return {
|
|
157
167
|
status: 'committed_stale_detected',
|
|
158
168
|
reason: 'stale_during_commit',
|
|
159
169
|
result,
|
|
160
170
|
expected_token: expected,
|
|
161
|
-
post_commit_token:
|
|
171
|
+
post_commit_token: observed_token,
|
|
172
|
+
observed_token,
|
|
162
173
|
};
|
|
163
174
|
}
|
|
164
175
|
}
|
|
165
|
-
return { status: 'committed', result, version_token: expected };
|
|
176
|
+
return { status: 'committed', result, version_token: expected, observed_token };
|
|
166
177
|
}
|
|
167
178
|
//# sourceMappingURL=conditional-write.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conditional-write.js","sourceRoot":"","sources":["../../src/conditional-write.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,YAAY,CAAC;;;AAkDb,kCAOC;AAkBD,gEAwCC;AASD,4DASC;
|
|
1
|
+
{"version":3,"file":"conditional-write.js","sourceRoot":"","sources":["../../src/conditional-write.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"execute-tool-call.d.ts","sourceRoot":"","sources":["../../src/execute-tool-call.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAgB,sBAAsB,EAAE,MAAM,YAAY,CAAC;AACrF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAExD,OAAO,EAEL,KAAK,0BAA0B,EAC/B,KAAK,2BAA2B,EACjC,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAEL,KAAK,6BAA6B,EAClC,KAAK,6BAA6B,EACnC,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAEL,KAAK,0BAA0B,EAC/B,KAAK,gCAAgC,EACtC,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAEL,KAAK,6BAA6B,EAClC,KAAK,8BAA8B,EACpC,MAAM,yBAAyB,CAAC;AAIjC;;;GAGG;AACH,MAAM,MAAM,uBAAuB,GAC/B,SAAS,aAAa,EAAE,GACxB;IAAE,KAAK,CAAC,EAAE,SAAS,aAAa,EAAE,CAAC;IAAC,eAAe,CAAC,EAAE,SAAS,aAAa,EAAE,CAAA;CAAE,CAAC;AA+BrF,qFAAqF;AACrF,wBAAgB,cAAc,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,YAAY,CAAC,OAAO,CAAC,CAWrE;
|
|
1
|
+
{"version":3,"file":"execute-tool-call.d.ts","sourceRoot":"","sources":["../../src/execute-tool-call.ts"],"names":[],"mappings":"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"}
|
|
@@ -79,6 +79,13 @@ const CW_NOT_REPORTED = Object.freeze({
|
|
|
79
79
|
require_conditional_write: false,
|
|
80
80
|
write_style: false,
|
|
81
81
|
});
|
|
82
|
+
function notObserved() {
|
|
83
|
+
return {
|
|
84
|
+
status: 'not_observed',
|
|
85
|
+
observed_at: new Date().toISOString(),
|
|
86
|
+
host_attestation: 'absent',
|
|
87
|
+
};
|
|
88
|
+
}
|
|
82
89
|
/**
|
|
83
90
|
* Unknown tool name — typed refusal via binder no-result path.
|
|
84
91
|
* Uses CONFIG_ERROR integrity UNAVAILABLE (not a fabricated ALLOW).
|
|
@@ -94,12 +101,14 @@ function unknownToolOutcome(toolName) {
|
|
|
94
101
|
decisionMissing: true,
|
|
95
102
|
unavailableCount: 1,
|
|
96
103
|
};
|
|
104
|
+
const commit_observation = notObserved();
|
|
97
105
|
const proof = (0, execution_proof_js_1.buildExecutionProof)({
|
|
98
106
|
preflighted: false,
|
|
99
107
|
executionAttempted: false,
|
|
100
108
|
executed: false,
|
|
101
109
|
enforced: false,
|
|
102
110
|
verdict,
|
|
111
|
+
commitObservation: commit_observation,
|
|
103
112
|
});
|
|
104
113
|
// Annotate verdict for body text; proof already has verdict_kind.
|
|
105
114
|
void toolName;
|
|
@@ -112,6 +121,7 @@ function unknownToolOutcome(toolName) {
|
|
|
112
121
|
proof,
|
|
113
122
|
freshness: FRESHNESS_NOT_CONFIGURED,
|
|
114
123
|
conditional_write: CW_NOT_REPORTED,
|
|
124
|
+
commit_observation,
|
|
115
125
|
};
|
|
116
126
|
}
|
|
117
127
|
/**
|
|
@@ -125,6 +135,7 @@ function wrapRawAsOutcome(result) {
|
|
|
125
135
|
signals: ['dispatcher_passthrough'],
|
|
126
136
|
detectorVersion: 'execute-tool-call',
|
|
127
137
|
};
|
|
138
|
+
const commit_observation = notObserved();
|
|
128
139
|
const proof = (0, execution_proof_js_1.buildExecutionProof)({
|
|
129
140
|
preflighted: false,
|
|
130
141
|
executionAttempted: true,
|
|
@@ -132,6 +143,7 @@ function wrapRawAsOutcome(result) {
|
|
|
132
143
|
enforced: false,
|
|
133
144
|
verdict,
|
|
134
145
|
result,
|
|
146
|
+
commitObservation: commit_observation,
|
|
135
147
|
});
|
|
136
148
|
return {
|
|
137
149
|
executionAttempted: true,
|
|
@@ -143,6 +155,7 @@ function wrapRawAsOutcome(result) {
|
|
|
143
155
|
proof,
|
|
144
156
|
freshness: FRESHNESS_NOT_CONFIGURED,
|
|
145
157
|
conditional_write: CW_NOT_REPORTED,
|
|
158
|
+
commit_observation,
|
|
146
159
|
};
|
|
147
160
|
}
|
|
148
161
|
function wrapThrownAsOutcome(error) {
|
|
@@ -152,6 +165,7 @@ function wrapThrownAsOutcome(error) {
|
|
|
152
165
|
signals: ['dispatcher_passthrough_throw'],
|
|
153
166
|
detectorVersion: 'execute-tool-call',
|
|
154
167
|
};
|
|
168
|
+
const commit_observation = notObserved();
|
|
155
169
|
const proof = (0, execution_proof_js_1.buildExecutionProof)({
|
|
156
170
|
preflighted: false,
|
|
157
171
|
executionAttempted: true,
|
|
@@ -159,6 +173,7 @@ function wrapThrownAsOutcome(error) {
|
|
|
159
173
|
enforced: false,
|
|
160
174
|
verdict,
|
|
161
175
|
error,
|
|
176
|
+
commitObservation: commit_observation,
|
|
162
177
|
});
|
|
163
178
|
return {
|
|
164
179
|
executionAttempted: true,
|
|
@@ -170,6 +185,7 @@ function wrapThrownAsOutcome(error) {
|
|
|
170
185
|
proof,
|
|
171
186
|
freshness: FRESHNESS_NOT_CONFIGURED,
|
|
172
187
|
conditional_write: CW_NOT_REPORTED,
|
|
188
|
+
commit_observation,
|
|
173
189
|
};
|
|
174
190
|
}
|
|
175
191
|
// ── Core: execute through table → GuardOutcome ───────────────────────────────
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"execute-tool-call.js","sourceRoot":"","sources":["../../src/execute-tool-call.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;;AAkEH,wCAWC;
|
|
1
|
+
{"version":3,"file":"execute-tool-call.js","sourceRoot":"","sources":["../../src/execute-tool-call.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,6 +18,7 @@
|
|
|
18
18
|
* package, or that an absent field means compliance. Those limits are explicit on every block.
|
|
19
19
|
*/
|
|
20
20
|
import type { GuardVerdict } from './types.js';
|
|
21
|
+
import type { CommitObservation } from './commit-observation.js';
|
|
21
22
|
/** Machine-readable schema id for this block. */
|
|
22
23
|
export declare const EXECUTION_PROOF_SPEC: "guard-execution-proof.v1";
|
|
23
24
|
/**
|
|
@@ -103,7 +104,15 @@ export type GuardExecutionProof = {
|
|
|
103
104
|
* never as false. (ID781 option A: honesty label; real CAS attestation is separate work.)
|
|
104
105
|
*/
|
|
105
106
|
conditional_write_is_host_asserted_not_cas_verified: true;
|
|
107
|
+
/**
|
|
108
|
+
* commit_observation is observed at T3, not atomic: another writer may act between write
|
|
109
|
+
* and observation; token-only adapters compare version token not content; host attestation
|
|
110
|
+
* is a host claim layered on the measurement.
|
|
111
|
+
*/
|
|
112
|
+
commit_observation_is_observed_at_t3_not_atomic: true;
|
|
106
113
|
};
|
|
114
|
+
/** T3 post-commit observation. Always present; not_observed when nothing was re-read. */
|
|
115
|
+
commit_observation: CommitObservation;
|
|
107
116
|
};
|
|
108
117
|
export type ProofBuildInput = {
|
|
109
118
|
preflighted: boolean;
|
|
@@ -121,6 +130,8 @@ export type ProofBuildInput = {
|
|
|
121
130
|
write_style: boolean;
|
|
122
131
|
conditional_write: true | false | 'not_reported';
|
|
123
132
|
};
|
|
133
|
+
/** T3 observation assembled by the guard after executeFactory (or not_observed). */
|
|
134
|
+
commitObservation?: CommitObservation;
|
|
124
135
|
};
|
|
125
136
|
/**
|
|
126
137
|
* 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;
|
|
1
|
+
{"version":3,"file":"execution-proof.d.ts","sourceRoot":"","sources":["../../src/execution-proof.ts"],"names":[],"mappings":"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"}
|
|
@@ -34,6 +34,7 @@ const LIMITS = Object.freeze({
|
|
|
34
34
|
calls_outside_guarded_path_invisible: true,
|
|
35
35
|
execution_result_hash_is_not_artifact_match_proof: true,
|
|
36
36
|
conditional_write_is_host_asserted_not_cas_verified: true,
|
|
37
|
+
commit_observation_is_observed_at_t3_not_atomic: true,
|
|
37
38
|
});
|
|
38
39
|
/**
|
|
39
40
|
* Runtime twin of the type-level enforced⟺receiptVerified invariant.
|
|
@@ -160,9 +161,16 @@ function buildExecutionProof(input) {
|
|
|
160
161
|
verdict_kind: typeof input.verdict?.kind === 'string' ? input.verdict.kind : 'UNKNOWN',
|
|
161
162
|
execution_result_hash: Object.freeze(executionResultHashOf(input)),
|
|
162
163
|
limits: LIMITS,
|
|
164
|
+
commit_observation: freezeCommitObservation(input.commitObservation),
|
|
163
165
|
};
|
|
164
166
|
return freezeProof(proof);
|
|
165
167
|
}
|
|
168
|
+
function freezeCommitObservation(obs) {
|
|
169
|
+
const o = obs && typeof obs === 'object'
|
|
170
|
+
? { ...obs, ...(obs.blast ? { blast: Object.freeze({ ...obs.blast }) } : {}) }
|
|
171
|
+
: { status: 'not_observed', observed_at: '', host_attestation: 'absent' };
|
|
172
|
+
return Object.freeze(o);
|
|
173
|
+
}
|
|
166
174
|
function freezeProof(p) {
|
|
167
175
|
return Object.freeze(p);
|
|
168
176
|
}
|