@coderifts/agent-guard 4.0.0 → 4.1.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 (45) hide show
  1. package/dist/cjs/conditional-write.d.ts +92 -0
  2. package/dist/cjs/conditional-write.d.ts.map +1 -0
  3. package/dist/cjs/conditional-write.js +96 -0
  4. package/dist/cjs/conditional-write.js.map +1 -0
  5. package/dist/cjs/execution-proof.d.ts +13 -0
  6. package/dist/cjs/execution-proof.d.ts.map +1 -1
  7. package/dist/cjs/execution-proof.js +11 -0
  8. package/dist/cjs/execution-proof.js.map +1 -1
  9. package/dist/cjs/guard.d.ts +5 -4
  10. package/dist/cjs/guard.d.ts.map +1 -1
  11. package/dist/cjs/guard.js +110 -43
  12. package/dist/cjs/guard.js.map +1 -1
  13. package/dist/cjs/index.d.ts +3 -1
  14. package/dist/cjs/index.d.ts.map +1 -1
  15. package/dist/cjs/index.js +8 -2
  16. package/dist/cjs/index.js.map +1 -1
  17. package/dist/cjs/types.d.ts +21 -2
  18. package/dist/cjs/types.d.ts.map +1 -1
  19. package/dist/cjs/with-coderifts.d.ts +6 -0
  20. package/dist/cjs/with-coderifts.d.ts.map +1 -1
  21. package/dist/cjs/with-coderifts.js +8 -0
  22. package/dist/cjs/with-coderifts.js.map +1 -1
  23. package/dist/esm/conditional-write.d.ts +92 -0
  24. package/dist/esm/conditional-write.d.ts.map +1 -0
  25. package/dist/esm/conditional-write.js +91 -0
  26. package/dist/esm/conditional-write.js.map +1 -0
  27. package/dist/esm/execution-proof.d.ts +13 -0
  28. package/dist/esm/execution-proof.d.ts.map +1 -1
  29. package/dist/esm/execution-proof.js +11 -0
  30. package/dist/esm/execution-proof.js.map +1 -1
  31. package/dist/esm/guard.d.ts +5 -4
  32. package/dist/esm/guard.d.ts.map +1 -1
  33. package/dist/esm/guard.js +110 -43
  34. package/dist/esm/guard.js.map +1 -1
  35. package/dist/esm/index.d.ts +3 -1
  36. package/dist/esm/index.d.ts.map +1 -1
  37. package/dist/esm/index.js +2 -0
  38. package/dist/esm/index.js.map +1 -1
  39. package/dist/esm/types.d.ts +21 -2
  40. package/dist/esm/types.d.ts.map +1 -1
  41. package/dist/esm/with-coderifts.d.ts +6 -0
  42. package/dist/esm/with-coderifts.d.ts.map +1 -1
  43. package/dist/esm/with-coderifts.js +8 -0
  44. package/dist/esm/with-coderifts.js.map +1 -1
  45. package/package.json +1 -1
@@ -0,0 +1,92 @@
1
+ /**
2
+ * Conditional-execution surface (reporting only — this package never writes).
3
+ *
4
+ * ACTIVE + FRESH only proves content matched at measurement time. A host that resolves
5
+ * then writes unconditionally still races; the conditional write itself is the host's job.
6
+ * We define the surface, demand it by policy, and report whether the host said it happened.
7
+ *
8
+ * Host contract (executeIfUnchanged):
9
+ * The host SHOULD perform writes via executeIfUnchanged(write, expected_token) (or
10
+ * equivalent: only apply the mutation if the resource still holds expected_token).
11
+ * After the attempt, the host reports on the call context:
12
+ * - conditional_write: true — write was conditioned on a version token
13
+ * - conditional_write: false — write was unconditional (host admits it)
14
+ * - conditional_write: 'not_reported' — host did not report (DEFAULT; absence ≠ false)
15
+ * When true, conditioned_on_token is the opaque token the host conditioned on.
16
+ * Tokens are host-defined (git blob sha, etag, mtime-hash, …). This package never
17
+ * interprets them — only carries them and compares for equality (===).
18
+ */
19
+ /** Host-defined opaque version token. Compared only by string equality. */
20
+ export type VersionToken = string;
21
+ /**
22
+ * Host resolution surface: content plus an opaque version token.
23
+ * Returned by host resolvers that support conditional execution.
24
+ */
25
+ export type VersionedContent = {
26
+ content: string;
27
+ version_token: VersionToken;
28
+ };
29
+ /**
30
+ * Host report of whether the write was conditioned on a version token.
31
+ * `not_reported` is the default — absence of a report is not false
32
+ * (absent ≠ 0 ≠ null ≠ unknown).
33
+ */
34
+ export type ConditionalWriteReport = true | false | 'not_reported';
35
+ /**
36
+ * Per-call forensic basis for conditional write (on every GuardOutcome).
37
+ * Survives replay unchanged when recorded.
38
+ */
39
+ export type ConditionalWriteBasis = {
40
+ conditional_write: ConditionalWriteReport;
41
+ /**
42
+ * When conditional_write === true, the token the host says it conditioned on.
43
+ * Omitted when not_reported / false / not supplied.
44
+ */
45
+ conditioned_on_token?: VersionToken | null;
46
+ /** Config requireConditionalWrite for this call (policy). */
47
+ require_conditional_write: boolean;
48
+ /** Whether this call was treated as write-style. */
49
+ write_style: boolean;
50
+ };
51
+ /**
52
+ * Values the RUNNER collected / host reported before the pure guard path.
53
+ * Default when omitted: conditional_write 'not_reported'.
54
+ */
55
+ export type ConditionalWriteCallContext = {
56
+ conditional_write?: ConditionalWriteReport;
57
+ conditioned_on_token?: VersionToken | null;
58
+ /** Optional versioned content for token carry (equality only). */
59
+ versioned_content?: VersionedContent | null;
60
+ };
61
+ /** Equality compare only — never semantic interpretation of the token. */
62
+ export declare function tokensEqual(a: VersionToken | null | undefined, b: VersionToken | null | undefined): boolean;
63
+ /**
64
+ * Build per-call conditional-write basis + optional enforce block.
65
+ * Pure once the host report is a value (no I/O).
66
+ *
67
+ * Policy (mirrors requireFreshness Decision-1): when requireConditionalWrite is true
68
+ * and the call is write-style, conditional_write must be true for enforced execution
69
+ * to be eligible. false and not_reported both refuse (distinct from "host said false"
70
+ * vs "host silent" only on the basis field — both block under policy).
71
+ */
72
+ export declare function buildConditionalWriteBasis(input: {
73
+ writeStyle: boolean;
74
+ requireConditionalWrite: boolean;
75
+ ctx?: ConditionalWriteCallContext | null;
76
+ }): {
77
+ basis: ConditionalWriteBasis;
78
+ /** If set, enforced execution must not proceed. */
79
+ blockCause?: 'CONDITIONAL_WRITE_REQUIRED';
80
+ };
81
+ /** Residual name when policy requires conditional write but host did not report true. */
82
+ export declare const RESIDUAL_UNCONDITIONAL_WRITE = "composition_unconditional_write_under_policy";
83
+ /**
84
+ * Coverage residual when requireConditionalWrite is on and the host report is not true.
85
+ * inescapable_runtime must stay false — we report what the host told us, never claim compliance.
86
+ */
87
+ export declare function conditionalWriteResidual(input: {
88
+ requireConditionalWrite: boolean;
89
+ writeStyle: boolean;
90
+ conditionalWrite: ConditionalWriteReport;
91
+ }): string | null;
92
+ //# sourceMappingURL=conditional-write.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,96 @@
1
+ /**
2
+ * Conditional-execution surface (reporting only — this package never writes).
3
+ *
4
+ * ACTIVE + FRESH only proves content matched at measurement time. A host that resolves
5
+ * then writes unconditionally still races; the conditional write itself is the host's job.
6
+ * We define the surface, demand it by policy, and report whether the host said it happened.
7
+ *
8
+ * Host contract (executeIfUnchanged):
9
+ * The host SHOULD perform writes via executeIfUnchanged(write, expected_token) (or
10
+ * equivalent: only apply the mutation if the resource still holds expected_token).
11
+ * After the attempt, the host reports on the call context:
12
+ * - conditional_write: true — write was conditioned on a version token
13
+ * - conditional_write: false — write was unconditional (host admits it)
14
+ * - conditional_write: 'not_reported' — host did not report (DEFAULT; absence ≠ false)
15
+ * When true, conditioned_on_token is the opaque token the host conditioned on.
16
+ * Tokens are host-defined (git blob sha, etag, mtime-hash, …). This package never
17
+ * interprets them — only carries them and compares for equality (===).
18
+ */
19
+ 'use strict';
20
+ Object.defineProperty(exports, "__esModule", { value: true });
21
+ exports.RESIDUAL_UNCONDITIONAL_WRITE = void 0;
22
+ exports.tokensEqual = tokensEqual;
23
+ exports.buildConditionalWriteBasis = buildConditionalWriteBasis;
24
+ exports.conditionalWriteResidual = conditionalWriteResidual;
25
+ /** Equality compare only — never semantic interpretation of the token. */
26
+ function tokensEqual(a, b) {
27
+ if (a == null || b == null)
28
+ return false;
29
+ if (typeof a !== 'string' || typeof b !== 'string')
30
+ return false;
31
+ return a === b;
32
+ }
33
+ function normalizeReport(raw) {
34
+ if (raw === true)
35
+ return true;
36
+ if (raw === false)
37
+ return false;
38
+ if (raw === 'not_reported')
39
+ return 'not_reported';
40
+ return 'not_reported';
41
+ }
42
+ /**
43
+ * Build per-call conditional-write basis + optional enforce block.
44
+ * Pure once the host report is a value (no I/O).
45
+ *
46
+ * Policy (mirrors requireFreshness Decision-1): when requireConditionalWrite is true
47
+ * and the call is write-style, conditional_write must be true for enforced execution
48
+ * to be eligible. false and not_reported both refuse (distinct from "host said false"
49
+ * vs "host silent" only on the basis field — both block under policy).
50
+ */
51
+ function buildConditionalWriteBasis(input) {
52
+ const require_conditional_write = input.requireConditionalWrite === true;
53
+ const write_style = input.writeStyle === true;
54
+ const ctx = input.ctx && typeof input.ctx === 'object' ? input.ctx : {};
55
+ const conditional_write = normalizeReport(ctx.conditional_write);
56
+ const basis = {
57
+ conditional_write,
58
+ require_conditional_write,
59
+ write_style,
60
+ };
61
+ // Token carry: prefer explicit conditioned_on_token, else versioned_content.version_token.
62
+ if (conditional_write === true) {
63
+ if (typeof ctx.conditioned_on_token === 'string') {
64
+ basis.conditioned_on_token = ctx.conditioned_on_token;
65
+ }
66
+ else if (ctx.versioned_content
67
+ && typeof ctx.versioned_content === 'object'
68
+ && typeof ctx.versioned_content.version_token === 'string') {
69
+ basis.conditioned_on_token = ctx.versioned_content.version_token;
70
+ }
71
+ else if (ctx.conditioned_on_token === null) {
72
+ basis.conditioned_on_token = null;
73
+ }
74
+ }
75
+ // Policy on write: only conditional_write:true is eligible for enforced:true.
76
+ if (write_style && require_conditional_write && conditional_write !== true) {
77
+ return { basis, blockCause: 'CONDITIONAL_WRITE_REQUIRED' };
78
+ }
79
+ return { basis };
80
+ }
81
+ /** Residual name when policy requires conditional write but host did not report true. */
82
+ exports.RESIDUAL_UNCONDITIONAL_WRITE = 'composition_unconditional_write_under_policy';
83
+ /**
84
+ * Coverage residual when requireConditionalWrite is on and the host report is not true.
85
+ * inescapable_runtime must stay false — we report what the host told us, never claim compliance.
86
+ */
87
+ function conditionalWriteResidual(input) {
88
+ if (input.requireConditionalWrite !== true)
89
+ return null;
90
+ if (input.writeStyle !== true)
91
+ return null;
92
+ if (input.conditionalWrite === true)
93
+ return null;
94
+ return exports.RESIDUAL_UNCONDITIONAL_WRITE;
95
+ }
96
+ //# sourceMappingURL=conditional-write.js.map
@@ -0,0 +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;AApFD,0EAA0E;AAC1E,SAAgB,WAAW,CACzB,CAAkC,EAClC,CAAkC;IAElC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI;QAAE,OAAO,KAAK,CAAC;IACzC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IACjE,OAAO,CAAC,KAAK,CAAC,CAAC;AACjB,CAAC;AAED,SAAS,eAAe,CAAC,GAAY;IACnC,IAAI,GAAG,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAC9B,IAAI,GAAG,KAAK,KAAK;QAAE,OAAO,KAAK,CAAC;IAChC,IAAI,GAAG,KAAK,cAAc;QAAE,OAAO,cAAc,CAAC;IAClD,OAAO,cAAc,CAAC;AACxB,CAAC;AAED;;;;;;;;GAQG;AACH,SAAgB,0BAA0B,CAAC,KAI1C;IAKC,MAAM,yBAAyB,GAAG,KAAK,CAAC,uBAAuB,KAAK,IAAI,CAAC;IACzE,MAAM,WAAW,GAAG,KAAK,CAAC,UAAU,KAAK,IAAI,CAAC;IAC9C,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,IAAI,OAAO,KAAK,CAAC,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IACxE,MAAM,iBAAiB,GAAG,eAAe,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;IAEjE,MAAM,KAAK,GAA0B;QACnC,iBAAiB;QACjB,yBAAyB;QACzB,WAAW;KACZ,CAAC;IAEF,2FAA2F;IAC3F,IAAI,iBAAiB,KAAK,IAAI,EAAE,CAAC;QAC/B,IAAI,OAAO,GAAG,CAAC,oBAAoB,KAAK,QAAQ,EAAE,CAAC;YACjD,KAAK,CAAC,oBAAoB,GAAG,GAAG,CAAC,oBAAoB,CAAC;QACxD,CAAC;aAAM,IACL,GAAG,CAAC,iBAAiB;eAClB,OAAO,GAAG,CAAC,iBAAiB,KAAK,QAAQ;eACzC,OAAO,GAAG,CAAC,iBAAiB,CAAC,aAAa,KAAK,QAAQ,EAC1D,CAAC;YACD,KAAK,CAAC,oBAAoB,GAAG,GAAG,CAAC,iBAAiB,CAAC,aAAa,CAAC;QACnE,CAAC;aAAM,IAAI,GAAG,CAAC,oBAAoB,KAAK,IAAI,EAAE,CAAC;YAC7C,KAAK,CAAC,oBAAoB,GAAG,IAAI,CAAC;QACpC,CAAC;IACH,CAAC;IAED,8EAA8E;IAC9E,IAAI,WAAW,IAAI,yBAAyB,IAAI,iBAAiB,KAAK,IAAI,EAAE,CAAC;QAC3E,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,4BAA4B,EAAE,CAAC;IAC7D,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,CAAC;AACnB,CAAC;AAED,yFAAyF;AAC5E,QAAA,4BAA4B,GAAG,8CAA8C,CAAC;AAE3F;;;GAGG;AACH,SAAgB,wBAAwB,CAAC,KAIxC;IACC,IAAI,KAAK,CAAC,uBAAuB,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IACxD,IAAI,KAAK,CAAC,UAAU,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAC3C,IAAI,KAAK,CAAC,gBAAgB,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IACjD,OAAO,oCAA4B,CAAC;AACtC,CAAC"}
@@ -108,16 +108,29 @@ export type ProofBuildInput = {
108
108
  result?: unknown;
109
109
  /** Present only when factory threw. */
110
110
  error?: unknown;
111
+ /** Optional conditional-write basis for the enforced+policy invariant. */
112
+ conditionalWriteBasis?: {
113
+ require_conditional_write: boolean;
114
+ write_style: boolean;
115
+ conditional_write: true | false | 'not_reported';
116
+ };
111
117
  };
112
118
  /**
113
119
  * Runtime twin of the type-level enforced⟺receiptVerified invariant.
114
120
  * Throws if enforced:true is paired with anything other than receiptVerified+preflighted.
121
+ * When requireConditionalWrite+writeStyle: enforced:true also requires conditional_write:true
122
+ * (same refusal class as the permission gate — not a parallel path).
115
123
  * The proof block is read by consumers that do not have our TypeScript brands.
116
124
  */
117
125
  export declare function assertEnforcedReceiptInvariant(input: {
118
126
  enforced: boolean;
119
127
  preflighted: boolean;
120
128
  receiptVerified: boolean;
129
+ /** Policy requireConditionalWrite for this call (optional; omit = not checked here). */
130
+ requireConditionalWrite?: boolean;
131
+ writeStyle?: boolean;
132
+ /** Host report: true | false | 'not_reported'. */
133
+ conditionalWrite?: true | false | 'not_reported';
121
134
  }): void;
122
135
  /**
123
136
  * Honest byte hash of a factory return. Only string / Buffer / Uint8Array are hashed as raw bytes.
@@ -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;AAE/C,iDAAiD;AACjD,eAAO,MAAM,oBAAoB,EAAG,0BAAmC,CAAC;AAExE;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,mBAAmB,GAC3B;IAAE,MAAM,EAAE,QAAQ,CAAC;IAAC,SAAS,EAAE,QAAQ,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACxD;IACE,MAAM,EAAE,YAAY,CAAC;IACrB,MAAM,EACF,cAAc,GACd,iBAAiB,GACjB,wBAAwB,GACxB,yBAAyB,CAAC;CAC/B,CAAC;AAEN,MAAM,MAAM,mBAAmB,GAAG;IAChC,UAAU,EAAE,OAAO,oBAAoB,CAAC;IACxC,uGAAuG;IACvG,WAAW,EAAE,OAAO,CAAC;IACrB,4EAA4E;IAC5E,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,OAAO,EAAE;QACP;;;WAGG;QACH,QAAQ,EAAE,OAAO,CAAC;QAClB;;;WAGG;QACH,MAAM,EAAE,kBAAkB,GAAG,IAAI,CAAC;QAClC,sEAAsE;QACtE,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;KAC3B,CAAC;IACF;;;;OAIG;IACH,QAAQ,EAAE;QACR,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;QACzB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;KAC1B,GAAG,IAAI,CAAC;IACT;;;;OAIG;IACH,oBAAoB,EAAE,OAAO,GAAG,IAAI,CAAC;IACrC,SAAS,EAAE;QACT,SAAS,EAAE,OAAO,CAAC;QACnB,QAAQ,EAAE,OAAO,CAAC;QAClB,QAAQ,EAAE,OAAO,CAAC;KACnB,CAAC;IACF;;;OAGG;IACH,YAAY,EAAE,MAAM,CAAC;IACrB,qBAAqB,EAAE,mBAAmB,CAAC;IAC3C;;OAEG;IACH,MAAM,EAAE;QACN,0BAA0B,EAAE,IAAI,CAAC;QACjC,iCAAiC,EAAE,IAAI,CAAC;QACxC,yCAAyC,EAAE,IAAI,CAAC;QAChD,+CAA+C,EAAE,IAAI,CAAC;QACtD,oCAAoC,EAAE,IAAI,CAAC;QAC3C,iDAAiD,EAAE,IAAI,CAAC;KACzD,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,WAAW,EAAE,OAAO,CAAC;IACrB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,YAAY,CAAC;IACtB,0DAA0D;IAC1D,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,uCAAuC;IACvC,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,CAAC;AAWF;;;;GAIG;AACH,wBAAgB,8BAA8B,CAAC,KAAK,EAAE;IACpD,QAAQ,EAAE,OAAO,CAAC;IAClB,WAAW,EAAE,OAAO,CAAC;IACrB,eAAe,EAAE,OAAO,CAAC;CAC1B,GAAG,IAAI,CAQP;AA0BD;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,OAAO,GAAG,mBAAmB,CAuBxE;AAeD;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,eAAe,GAAG,mBAAmB,CAsD/E"}
1
+ {"version":3,"file":"execution-proof.d.ts","sourceRoot":"","sources":["../../src/execution-proof.ts"],"names":[],"mappings":"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"}
@@ -37,6 +37,8 @@ const LIMITS = Object.freeze({
37
37
  /**
38
38
  * Runtime twin of the type-level enforced⟺receiptVerified invariant.
39
39
  * Throws if enforced:true is paired with anything other than receiptVerified+preflighted.
40
+ * When requireConditionalWrite+writeStyle: enforced:true also requires conditional_write:true
41
+ * (same refusal class as the permission gate — not a parallel path).
40
42
  * The proof block is read by consumers that do not have our TypeScript brands.
41
43
  */
42
44
  function assertEnforcedReceiptInvariant(input) {
@@ -44,6 +46,11 @@ function assertEnforcedReceiptInvariant(input) {
44
46
  if (input.preflighted !== true || input.receiptVerified !== true) {
45
47
  throw new Error('@coderifts/agent-guard: enforced:true without receiptVerified+preflighted (runtime invariant)');
46
48
  }
49
+ if (input.requireConditionalWrite === true && input.writeStyle === true) {
50
+ if (input.conditionalWrite !== true) {
51
+ throw new Error('@coderifts/agent-guard: enforced:true without conditional_write:true under requireConditionalWrite (runtime invariant)');
52
+ }
53
+ }
47
54
  }
48
55
  }
49
56
  function receiptVerifiedOf(verdict) {
@@ -104,10 +111,14 @@ function executionResultHashOf(input) {
104
111
  */
105
112
  function buildExecutionProof(input) {
106
113
  const receiptVerified = receiptVerifiedOf(input.verdict);
114
+ const cwb = input.conditionalWriteBasis;
107
115
  assertEnforcedReceiptInvariant({
108
116
  enforced: input.enforced,
109
117
  preflighted: input.preflighted,
110
118
  receiptVerified,
119
+ requireConditionalWrite: cwb?.require_conditional_write,
120
+ writeStyle: cwb?.write_style,
121
+ conditionalWrite: cwb?.conditional_write,
111
122
  });
112
123
  const env = envelopeOf(input.verdict);
113
124
  const hasEnvelope = env !== null;
@@ -1 +1 @@
1
- {"version":3,"file":"execution-proof.js","sourceRoot":"","sources":["../../src/execution-proof.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"execution-proof.js","sourceRoot":"","sources":["../../src/execution-proof.ts"],"names":[],"mappings":"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"}
@@ -9,10 +9,11 @@
9
9
  */
10
10
  import type { GuardConfig, GuardOutcome, ToolCallDescriptor, ExecuteFactory } from './types.js';
11
11
  import { type FreshnessCallContext } from './freshness.js';
12
+ import { type ConditionalWriteCallContext } from './conditional-write.js';
12
13
  /**
13
- * @param callContext Runner-collected freshness values (optional). When omitted, wiring is
14
- * NOT_CONFIGURED the pure path never invokes resolvePriorContent. The tool-registry runner
15
- * calls collectFreshnessCallContext and passes the result here.
14
+ * @param callContext Runner-collected freshness values (optional) plus optional conditional-write
15
+ * host report fields. When omitted, freshness wiring is NOT_CONFIGURED and conditional_write is
16
+ * not_reported. The tool-registry runner calls collectFreshnessCallContext and passes the result.
16
17
  */
17
- export declare function guardToolCall<T>(call: ToolCallDescriptor, executeFactory: ExecuteFactory<T>, config: GuardConfig, callContext?: FreshnessCallContext): Promise<GuardOutcome<T>>;
18
+ export declare function guardToolCall<T>(call: ToolCallDescriptor, executeFactory: ExecuteFactory<T>, config: GuardConfig, callContext?: FreshnessCallContext & ConditionalWriteCallContext): Promise<GuardOutcome<T>>;
18
19
  //# sourceMappingURL=guard.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"guard.d.ts","sourceRoot":"","sources":["../../src/guard.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,KAAK,EACV,WAAW,EAAE,YAAY,EACT,kBAAkB,EAAE,cAAc,EAEnD,MAAM,YAAY,CAAC;AAMpB,OAAO,EAIL,KAAK,oBAAoB,EAC1B,MAAM,gBAAgB,CAAC;AA8MxB;;;;GAIG;AACH,wBAAsB,aAAa,CAAC,CAAC,EACnC,IAAI,EAAE,kBAAkB,EACxB,cAAc,EAAE,cAAc,CAAC,CAAC,CAAC,EACjC,MAAM,EAAE,WAAW,EACnB,WAAW,CAAC,EAAE,oBAAoB,GACjC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAmP1B"}
1
+ {"version":3,"file":"guard.d.ts","sourceRoot":"","sources":["../../src/guard.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,KAAK,EACV,WAAW,EAAE,YAAY,EACT,kBAAkB,EAAE,cAAc,EAEnD,MAAM,YAAY,CAAC;AAMpB,OAAO,EAIL,KAAK,oBAAoB,EAC1B,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAGL,KAAK,2BAA2B,EACjC,MAAM,wBAAwB,CAAC;AAoShC;;;;GAIG;AACH,wBAAsB,aAAa,CAAC,CAAC,EACnC,IAAI,EAAE,kBAAkB,EACxB,cAAc,EAAE,cAAc,CAAC,CAAC,CAAC,EACjC,MAAM,EAAE,WAAW,EACnB,WAAW,CAAC,EAAE,oBAAoB,GAAG,2BAA2B,GAC/D,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAsQ1B"}