twzrd-x402-gate 0.8.16 → 0.8.18

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 (55) hide show
  1. package/QUICKSTART.md +24 -4
  2. package/README.md +41 -26
  3. package/dist/auto-gate.d.ts.map +1 -1
  4. package/dist/auto-gate.js +5 -1
  5. package/dist/auto-gate.js.map +1 -1
  6. package/dist/block-proof.d.ts +36 -1
  7. package/dist/block-proof.d.ts.map +1 -1
  8. package/dist/block-proof.js +43 -0
  9. package/dist/block-proof.js.map +1 -1
  10. package/dist/buyer-defaults.d.ts +38 -0
  11. package/dist/buyer-defaults.d.ts.map +1 -0
  12. package/dist/buyer-defaults.js +44 -0
  13. package/dist/buyer-defaults.js.map +1 -0
  14. package/dist/decision-token.d.ts +24 -0
  15. package/dist/decision-token.d.ts.map +1 -1
  16. package/dist/decision-token.js +27 -0
  17. package/dist/decision-token.js.map +1 -1
  18. package/dist/evaluate.d.ts +6 -9
  19. package/dist/evaluate.d.ts.map +1 -1
  20. package/dist/evaluate.js +44 -39
  21. package/dist/evaluate.js.map +1 -1
  22. package/dist/index.d.ts +8 -6
  23. package/dist/index.d.ts.map +1 -1
  24. package/dist/index.js +8 -6
  25. package/dist/index.js.map +1 -1
  26. package/dist/intent.d.ts +5 -0
  27. package/dist/intent.d.ts.map +1 -1
  28. package/dist/intent.js +15 -0
  29. package/dist/intent.js.map +1 -1
  30. package/dist/outcome-attestation.d.ts +100 -0
  31. package/dist/outcome-attestation.d.ts.map +1 -0
  32. package/dist/outcome-attestation.js +274 -0
  33. package/dist/outcome-attestation.js.map +1 -0
  34. package/dist/policy-runtime.d.ts +9 -0
  35. package/dist/policy-runtime.d.ts.map +1 -1
  36. package/dist/policy-runtime.js +27 -6
  37. package/dist/policy-runtime.js.map +1 -1
  38. package/dist/quick.d.ts +2 -2
  39. package/dist/receipt-policy.d.ts +6 -0
  40. package/dist/receipt-policy.d.ts.map +1 -1
  41. package/dist/receipt-policy.js +7 -1
  42. package/dist/receipt-policy.js.map +1 -1
  43. package/dist/trust-gate-reason.d.ts +1 -0
  44. package/dist/trust-gate-reason.d.ts.map +1 -1
  45. package/dist/trust-gate-reason.js +9 -0
  46. package/dist/trust-gate-reason.js.map +1 -1
  47. package/dist/with-guard.d.ts +1 -1
  48. package/dist/with-guard.d.ts.map +1 -1
  49. package/dist/with-guard.js +9 -2
  50. package/dist/with-guard.js.map +1 -1
  51. package/dist/x402-client-hook.d.ts +30 -7
  52. package/dist/x402-client-hook.d.ts.map +1 -1
  53. package/dist/x402-client-hook.js +60 -5
  54. package/dist/x402-client-hook.js.map +1 -1
  55. package/package.json +11 -6
package/QUICKSTART.md CHANGED
@@ -5,13 +5,13 @@ API key, no signup, no config — every `TWZRD_*` env var is an optional overrid
5
5
  is unreachable the gate never *invents* a wash flag (the wash check fails open); a failed
6
6
  preflight blocks the payment by default (`TWZRD_FAIL_OPEN=true` to allow).
7
7
 
8
- **Pin:** `twzrd-x402-gate@0.8.14` + stock PayAI client `x402-solana@2.1.0` (official
8
+ **Pin:** `twzrd-x402-gate@0.8.16` + stock PayAI client `x402-solana@2.1.0` (official
9
9
  `beforePayment` seat). `@x402/core` Path E remains supported; refuse script is fallback.
10
10
 
11
11
  ## 1. Stock PayAI client (default seat — copy-paste)
12
12
 
13
13
  ```bash
14
- npm install twzrd-x402-gate@0.8.14 x402-solana@2.1.0
14
+ npm install twzrd-x402-gate@0.8.16 x402-solana@2.1.0
15
15
  ```
16
16
 
17
17
  > **ESM-only.** The package ships `import` conditions only — a CommonJS
@@ -36,7 +36,7 @@ Then: `await client.fetch("https://merchant.example/paid");`
36
36
  ## 1b. Official `@x402/core` client (Path E)
37
37
 
38
38
  ```bash
39
- npm install twzrd-x402-gate@0.8.14 @x402/core @x402/fetch @x402/svm
39
+ npm install twzrd-x402-gate@0.8.16 @x402/core @x402/fetch @x402/svm
40
40
  ```
41
41
 
42
42
  ```typescript
@@ -74,7 +74,7 @@ abort string is prefixed `[twzrd]` — treat any reason matching
74
74
 
75
75
  **Fallback only:** `npx twzrd-gate-eval-refuse` / `npm run gate-eval-refuse` still works for
76
76
  CLI smoke, but it is **not** the primary install story — agents that only summarize
77
- `RUN_THIS_NOW` without seating a gate on a signer path never clear W1.
77
+ `next_action.command` without seating a gate on a signer path never clears W1.
78
78
 
79
79
  ## 3. See your own seat
80
80
 
@@ -88,6 +88,26 @@ createTwzrdBeforePaymentHook({
88
88
  });
89
89
  ```
90
90
 
91
+ ## 3b. Turn on Path A (buyer cash, not the rail)
92
+
93
+ Refuse stays free until you wire a paying fetch. Then warn + material amount
94
+ buys the $0.05 V6 (or $0.001 quick below $2.50). Facilitator settle hooks stay
95
+ free.
96
+
97
+ ```typescript
98
+ import { wrapFetchWithPayment } from "@x402/svm";
99
+
100
+ const x402Fetch = wrapFetchWithPayment(fetch, wallet);
101
+ createTwzrdBeforePaymentHook({
102
+ refuseWashFlagged: true,
103
+ x402Fetch, // Path A defaults on
104
+ // requireReceipt: false, escalateOnWarn: false // opt out
105
+ });
106
+ ```
107
+
108
+ `installTwzrdAutoGate((g) => wrapFetchWithPayment(g, wallet))` auto-wires the
109
+ payWrap as `x402Fetch`.
110
+
91
111
  ## 4. The only three knobs you need
92
112
 
93
113
  | Knob | Effect |
package/README.md CHANGED
@@ -10,9 +10,9 @@ refuse. Protects the **payer** from a risky **merchant** (`payTo`). Chain-neutra
10
10
  ### Default-on AutoGate (5 lines)
11
11
 
12
12
  ```bash
13
- npm install twzrd-x402-gate@0.8.14 x402-solana@2.1.0
13
+ npm install twzrd-x402-gate@0.8.16 x402-solana@2.1.0
14
14
  # official @x402/* path (alternate seat):
15
- # npm install twzrd-x402-gate@0.8.14 @x402/core @x402/fetch @x402/svm
15
+ # npm install twzrd-x402-gate@0.8.16 @x402/core @x402/fetch @x402/svm
16
16
  ```
17
17
 
18
18
  ```typescript
@@ -56,7 +56,7 @@ transfer on-chain. Wash/sybil edges are primarily discounted in TWZRD scoring, n
56
56
  revenue refusal.
57
57
 
58
58
  ```bash
59
- npm install twzrd-x402-gate@0.8.14
59
+ npm install twzrd-x402-gate@0.8.16
60
60
  ```
61
61
 
62
62
  ```typescript
@@ -88,7 +88,9 @@ Offline demo: `npx tsx examples/seller-settle-guard.ts`
88
88
  Fixture-backed SVM extract tests live in `test/seller-hook.test.ts` +
89
89
  `test/fixtures/exact-svm-transfer-checked.ts`.
90
90
 
91
- **PayAI x402-solana@2.1.0+** (stock client — primary Solana seat via `beforePayment`):
91
+ **PayAI x402-solana@2.1.0+** (stock client - primary Solana seat via `beforePayment`).
92
+ `x402-solana@3.0.0` passes `declaredResource` as `{ url }`; the hook flattens `.url`
93
+ so the same buyer copy-paste runs without a PayAI merge:
92
94
 
93
95
  ```typescript
94
96
  import { createX402Client } from "x402-solana";
@@ -116,7 +118,7 @@ Prove refuse-before-sign: `npm run x402-solana-before-payment-proof`.
116
118
  Install the published gate and run against wash fixtures:
117
119
 
118
120
  ```bash
119
- npm install twzrd-x402-gate@0.8.14
121
+ npm install twzrd-x402-gate@0.8.16
120
122
  # from package root after install, or from a checkout:
121
123
  npm run wash-dogfood
122
124
  ```
@@ -261,12 +263,13 @@ Dogfood (one public live proof path):
261
263
  ## Install
262
264
 
263
265
  ```bash
264
- npm install twzrd-x402-gate@0.8.14 x402-solana@2.1.0
266
+ npm install twzrd-x402-gate@0.8.16 x402-solana@2.1.0
265
267
  ```
266
268
 
267
- Current npm truth: `0.8.14` (buyer gate + PayAI `beforePayment` seat + optional seller settle guard).
268
- Primary Solana seat pin: `x402-solana@2.1.0`.
269
- Check `npm view twzrd-x402-gate version` if in doubt (do not pin stale **0.5.4** / **0.7.1** / **0.8.10**).
269
+ Install pin is the published version (`GATE_PACKAGE_PIN` in
270
+ `packages/twzrd-agent-intel/src/twzrd_agent_intel/pins.py`). Repo `package.json`
271
+ may be one patch ahead until that release is on npm. Confirm with
272
+ `npm view twzrd-x402-gate version`.
270
273
 
271
274
  Optional settle guard (resource-server **payer** policy): see **Seller settle guard
272
275
  (`onBeforeSettle`) — optional 0.8.1** above. Do not confuse with facilitator
@@ -553,31 +556,43 @@ const safeFetch = withTwzrdGuard(x402Fetch, {
553
556
  });
554
557
  ```
555
558
 
556
- ### Path A threshold policy (`requireReceipt`) — host opt-in
559
+ ### Path A — default on the buyer seat when a paying fetch is wired
557
560
 
558
- Free preflight still decides `allow|warn|block`. To create real demand for the
559
- $0.05 V6 receipt, hosts can require Path A on **high-value** spends or **warn**:
561
+ Free preflight still decides `allow|warn|block`. **Facilitator `onBeforeSettle`
562
+ stays free** (abort on `block` only — we do not tax their rail).
563
+
564
+ On the **buyer** install, if you pass `x402Fetch` (or use
565
+ `installTwzrdAutoGate(payWrap)`, which auto-wires `payWrap(raw)`), Path A
566
+ defaults on:
567
+
568
+ | Free decision | Resource price | What fires |
569
+ |---------------|----------------|------------|
570
+ | `block` | any | free refuse |
571
+ | `warn` | ≥ $2.50 | $0.05 V6 (`requireReceipt`) |
572
+ | `warn` | < $2.50 | $0.001 quick re-decide (`escalateOnWarn`) |
573
+ | `allow` | > $2.50 | $0.05 V6 |
574
+ | `allow` | ≤ $2.50 | free proceed |
560
575
 
561
576
  ```typescript
562
- import { evaluate_x402_resource } from "twzrd-x402-gate";
577
+ import { wrapFetchWithPayment } from "@x402/svm";
578
+ import { createTwzrdBeforePaymentHook } from "twzrd-x402-gate";
563
579
 
564
- await evaluate_x402_resource(resourceUrl, requirements, {
565
- // Free refuse stays free on decision=block.
566
- requireReceipt: {
567
- minSpendUsdc: 10, // Path A when resource price > $10
568
- onWarn: true, // also Path A on free decision=warn
569
- hard: true, // deny merchant spend if Path A fails
570
- },
571
- x402Fetch, // required: wallet-backed x402 fetch for Path A settle
580
+ const x402Fetch = wrapFetchWithPayment(fetch, buyerWallet);
581
+ const client = createX402Client({
582
+ wallet: buyerWallet,
583
+ network: "solana",
584
+ beforePayment: createTwzrdBeforePaymentHook({
585
+ refuseWashFlagged: true,
586
+ x402Fetch, // turns Path A defaults on
587
+ }),
572
588
  });
573
589
  ```
574
590
 
575
- Same flags on the stock seat: `createTwzrdBeforePaymentHook({ requireReceipt: true, x402Fetch })`
576
- or `installTwzrdAutoGate("x402-solana", { requireReceipt: true, x402Fetch })`.
591
+ Opt out: `requireReceipt: false` and/or `escalateOnWarn: false`.
592
+ Refuse-only seats (no `x402Fetch`) stay free.
577
593
 
578
- `autoReceipt` is **off by default** — it spends the **buyer's** USDC, so you opt in. When on,
579
- every warn/allow verdict settles $0.05 USDC to TWZRD and returns a signed V6 trust credential
580
- for the counterparty before you pay the resource.
594
+ `evaluate_x402_resource` itself stays opt-in. `autoReceipt: true` still buys
595
+ $0.05 on every non-block (broader than the default ladder).
581
596
 
582
597
  **`x402Fetch` is yours to supply** (this package is dependency-free). Wire the proven
583
598
  `@x402/svm` sponsored-feePayer client — the same one `twzrd-mcp-server` uses:
@@ -1 +1 @@
1
- {"version":3,"file":"auto-gate.d.ts","sourceRoot":"","sources":["../src/auto-gate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAkB,KAAK,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACzE,OAAO,EAGL,KAAK,2BAA2B,EAChC,KAAK,4BAA4B,EACjC,KAAK,cAAc,EACnB,KAAK,wBAAwB,EAC7B,KAAK,8BAA8B,EACpC,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAEL,KAAK,qBAAqB,EAC1B,KAAK,qBAAqB,EAC1B,KAAK,YAAY,EAClB,MAAM,eAAe,CAAC;AAEvB;;;GAGG;AACH,MAAM,MAAM,OAAO,GAAG,CAAC,YAAY,EAAE,OAAO,KAAK,KAAK,OAAO,KAAK,CAAC;AAEnE,MAAM,MAAM,0BAA0B,GAAG;IACvC;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,2BAA2B,GAAG,iBAAiB,GACzD,0BAA0B,GAAG;IAC3B;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,KAAK,CAAC;CACzB,CAAC;AAEJ,kFAAkF;AAClF,MAAM,MAAM,sBAAsB,GAAG,2BAA2B,CAAC;AAEjE,MAAM,MAAM,0BAA0B,GAAG,4BAA4B,GACnE,0BAA0B,CAAC;AAE7B,MAAM,MAAM,yBAAyB,GAAG,qBAAqB,GAC3D,0BAA0B,CAAC;AAM7B,8DAA8D;AAC9D,wBAAgB,uBAAuB,CAAC,OAAO,CAAC,EAAE;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAOjF;AAcD;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,OAAO,EAChB,OAAO,CAAC,EAAE,2BAA2B,GACpC,OAAO,KAAK,CAAC;AAEhB;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,cAAc,EACtB,OAAO,CAAC,EAAE,0BAA0B,GACnC,cAAc,CAAC;AAElB;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,KAAK,EACd,OAAO,EAAE,yBAAyB,GACjC,CAAC,SAAS,EAAE,YAAY,EAAE,OAAO,EAAE,qBAAqB,KAAK,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;AAE5F;;;;;;;;;;;GAWG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,aAAa,EACtB,OAAO,CAAC,EAAE,0BAA0B,GACnC,CACD,YAAY,EAAE,wBAAwB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChE,OAAO,CAAC,EAAE,8BAA8B,KACrC,OAAO,CAAC,2BAA2B,CAAC,CAAC;AA8E1C;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI,CASnE"}
1
+ {"version":3,"file":"auto-gate.d.ts","sourceRoot":"","sources":["../src/auto-gate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAkB,KAAK,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACzE,OAAO,EAGL,KAAK,2BAA2B,EAChC,KAAK,4BAA4B,EACjC,KAAK,cAAc,EACnB,KAAK,wBAAwB,EAC7B,KAAK,8BAA8B,EACpC,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAEL,KAAK,qBAAqB,EAC1B,KAAK,qBAAqB,EAC1B,KAAK,YAAY,EAClB,MAAM,eAAe,CAAC;AAEvB;;;GAGG;AACH,MAAM,MAAM,OAAO,GAAG,CAAC,YAAY,EAAE,OAAO,KAAK,KAAK,OAAO,KAAK,CAAC;AAEnE,MAAM,MAAM,0BAA0B,GAAG;IACvC;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,2BAA2B,GAAG,iBAAiB,GACzD,0BAA0B,GAAG;IAC3B;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,KAAK,CAAC;CACzB,CAAC;AAEJ,kFAAkF;AAClF,MAAM,MAAM,sBAAsB,GAAG,2BAA2B,CAAC;AAEjE,MAAM,MAAM,0BAA0B,GAAG,4BAA4B,GACnE,0BAA0B,CAAC;AAE7B,MAAM,MAAM,yBAAyB,GAAG,qBAAqB,GAC3D,0BAA0B,CAAC;AAM7B,8DAA8D;AAC9D,wBAAgB,uBAAuB,CAAC,OAAO,CAAC,EAAE;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAOjF;AAcD;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,OAAO,EAChB,OAAO,CAAC,EAAE,2BAA2B,GACpC,OAAO,KAAK,CAAC;AAEhB;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,cAAc,EACtB,OAAO,CAAC,EAAE,0BAA0B,GACnC,cAAc,CAAC;AAElB;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,KAAK,EACd,OAAO,EAAE,yBAAyB,GACjC,CAAC,SAAS,EAAE,YAAY,EAAE,OAAO,EAAE,qBAAqB,KAAK,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;AAE5F;;;;;;;;;;;GAWG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,aAAa,EACtB,OAAO,CAAC,EAAE,0BAA0B,GACnC,CACD,YAAY,EAAE,wBAAwB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChE,OAAO,CAAC,EAAE,8BAA8B,KACrC,OAAO,CAAC,2BAA2B,CAAC,CAAC;AAkF1C;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI,CASnE"}
package/dist/auto-gate.js CHANGED
@@ -84,7 +84,11 @@ export function installTwzrdAutoGate(target, options) {
84
84
  if (isTwzrdAutoGateDisabled(fetchOpts)) {
85
85
  return target(raw);
86
86
  }
87
- return target(withTwzrdGuard(raw, fetchOpts));
87
+ // The payWrap they already supply is a paying fetch. Use it as Path A
88
+ // x402Fetch so the canonical install fires warn+material without a
89
+ // second argument. payWrap(raw) is unguarded — no recursion into the gate.
90
+ const x402Fetch = fetchOpts?.x402Fetch ?? target(raw);
91
+ return target(withTwzrdGuard(raw, { ...fetchOpts, x402Fetch }));
88
92
  }
89
93
  throw new TypeError('[twzrd-x402-gate] installTwzrdAutoGate: expected a PayWrap function, an x402 client with onBeforePaymentCreation, or the string "mpp" / "x402-solana"');
90
94
  }
@@ -1 +1 @@
1
- {"version":3,"file":"auto-gate.js","sourceRoot":"","sources":["../src/auto-gate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auto-gate.js","sourceRoot":"","sources":["../src/auto-gate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,cAAc,EAA0B,MAAM,iBAAiB,CAAC;AACzE,OAAO,EACL,4BAA4B,EAC5B,0BAA0B,GAM3B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,yBAAyB,GAI1B,MAAM,eAAe,CAAC;AAoCvB,MAAM,cAAc,GAAG,IAAI,OAAO,EAA8B,CAAC;AAEjE,8DAA8D;AAC9D,MAAM,UAAU,uBAAuB,CAAC,OAAgC;IACtE,IAAI,OAAO,EAAE,QAAQ,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAC5C,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC;IACzC,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,OAAO;QAAE,OAAO,IAAI,CAAC;IAClD,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC;IAC5C,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,OAAO;QAAE,OAAO,IAAI,CAAC;IAClD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,SAAS,CAAC,CAAU;IAC3B,OAAO,OAAO,CAAC,KAAK,UAAU,CAAC;AACjC,CAAC;AAED,SAAS,gBAAgB,CAAC,CAAU;IAClC,OAAO,CACL,CAAC,CAAC,CAAC;QACH,OAAO,CAAC,KAAK,QAAQ;QACrB,OAAQ,CAAoB,CAAC,uBAAuB,KAAK,UAAU,CACpE,CAAC;AACJ,CAAC;AAuDD,MAAM,UAAU,oBAAoB,CAClC,MAAwD,EACxD,OAA8F;IAS9F,wEAAwE;IACxE,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;QACrB,MAAM,OAAO,GAAG,OAAoC,CAAC;QACrD,IAAI,uBAAuB,CAAC,OAAO,CAAC,EAAE,CAAC;YACrC,OAAO,KAAK,EACV,UAAwB,EACxB,OAA8B,EACD,EAAE,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC;QAC/D,CAAC;QACD,OAAO,yBAAyB,CAAC,OAAO,CAAC,CAAC;IAC5C,CAAC;IAED,sEAAsE;IACtE,IAAI,MAAM,KAAK,aAAa,EAAE,CAAC;QAC7B,MAAM,OAAO,GAAG,OAAiD,CAAC;QAClE,IAAI,uBAAuB,CAAC,OAAO,CAAC,EAAE,CAAC;YACrC,OAAO,KAAK,IAAI,EAAE,CAAC,SAAS,CAAC;QAC/B,CAAC;QACD,OAAO,4BAA4B,CAAC,OAAO,CAAC,CAAC;IAC/C,CAAC;IAED,wEAAwE;IACxE,IAAI,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC;QAC7B,MAAM,QAAQ,GAAG,OAAiD,CAAC;QACnE,IAAI,uBAAuB,CAAC,QAAQ,CAAC,EAAE,CAAC;YACtC,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,IAAI,cAAc,CAAC,GAAG,CAAC,MAAgB,CAAC,EAAE,CAAC;YACzC,OAAO,CAAC,IAAI,CACV,oIAAoI,CACrI,CAAC;QACJ,CAAC;QACD,MAAM,KAAK,GAAuB,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;QACtD,cAAc,CAAC,GAAG,CAAC,MAAgB,EAAE,KAAK,CAAC,CAAC;QAE5C,yFAAyF;QACzF,MAAM,gBAAgB,GAAG,MAAM,CAAC,uBAAuB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACrE,MAAM,CAAC,uBAAuB,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CACzC,gBAAgB,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;YACjC,IAAI,KAAK,CAAC,QAAQ,IAAI,uBAAuB,EAAE,EAAE,CAAC;gBAChD,OAAO,SAAS,CAAC,CAAC,oBAAoB;YACxC,CAAC;YACD,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC;QACvB,CAAC,CAAC,CAA8C,CAAC;QAEnD,0BAA0B,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QAC7C,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,wEAAwE;IACxE,IAAI,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;QACtB,MAAM,SAAS,GAAG,OAAkD,CAAC;QACrE,MAAM,GAAG,GAAG,SAAS,EAAE,QAAQ,IAAI,UAAU,CAAC,KAAK,CAAC;QACpD,IAAI,uBAAuB,CAAC,SAAS,CAAC,EAAE,CAAC;YACvC,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;QACrB,CAAC;QACD,sEAAsE;QACtE,mEAAmE;QACnE,2EAA2E;QAC3E,MAAM,SAAS,GAAG,SAAS,EAAE,SAAS,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC;QACtD,OAAO,MAAM,CAAC,cAAc,CAAC,GAAG,EAAE,EAAE,GAAG,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;IAClE,CAAC;IAED,MAAM,IAAI,SAAS,CACjB,uJAAuJ,CACxJ,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,sBAAsB,CAAC,MAAsB;IAC3D,MAAM,KAAK,GAAG,cAAc,CAAC,GAAG,CAAC,MAAgB,CAAC,CAAC;IACnD,IAAI,KAAK,EAAE,CAAC;QACV,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC;QACtB,OAAO;IACT,CAAC;IACD,OAAO,CAAC,IAAI,CACV,oFAAoF,CACrF,CAAC;AACJ,CAAC"}
@@ -6,13 +6,17 @@
6
6
  * v1 = original block transcript (hook + invariants only).
7
7
  * v1.1 = adds execution_mode + resolved peer versions so stock-seat proofs
8
8
  * cannot be confused with harness fallback (S1 closure 2026-08-03).
9
+ * v1.2 = adds the operator-signed Decision Outcome Attestation V1
10
+ * (blocked_never_signed) so the refuse is portable signed evidence, not
11
+ * only a JSON transcript. Attached via attachBlockOutcomeAttestation.
9
12
  */
10
13
  export declare const AUTOGATE_BLOCK_PROOF_SCHEMA = "twzrd.autogate_block_proof.v1";
11
14
  export declare const AUTOGATE_BLOCK_PROOF_SCHEMA_V1_1 = "twzrd.autogate_block_proof.v1.1";
15
+ export declare const AUTOGATE_BLOCK_PROOF_SCHEMA_V1_2 = "twzrd.autogate_block_proof.v1.2";
12
16
  /** How the refuse was exercised — never omit on new S1 artifacts. */
13
17
  export type ExecutionMode = "x402-solana@2.1.0" | "harness" | "onBeforePaymentCreation";
14
18
  export type AutogateBlockProof = {
15
- schema_version: typeof AUTOGATE_BLOCK_PROOF_SCHEMA | typeof AUTOGATE_BLOCK_PROOF_SCHEMA_V1_1;
19
+ schema_version: typeof AUTOGATE_BLOCK_PROOF_SCHEMA | typeof AUTOGATE_BLOCK_PROOF_SCHEMA_V1_1 | typeof AUTOGATE_BLOCK_PROOF_SCHEMA_V1_2;
16
20
  run_id: string;
17
21
  timestamp: string;
18
22
  /** twzrd-x402-gate package version */
@@ -52,6 +56,13 @@ export type AutogateBlockProof = {
52
56
  actual_spend_usdc: number;
53
57
  onchain_settlements: number;
54
58
  };
59
+ /**
60
+ * v1.2+: operator-signed Decision Outcome Attestation V1 over this refuse
61
+ * (outcome=blocked_never_signed, decision_id defaults to run_id). Present
62
+ * only when the transcript's invariants prove signer=0 — see
63
+ * attachBlockOutcomeAttestation.
64
+ */
65
+ outcome_attestation?: import("./outcome-attestation.js").DecisionOutcomeAttestation;
55
66
  /** Optional clean-seller negative control (arm B) when recorded on the same run */
56
67
  negative_control?: {
57
68
  clean_seller: string;
@@ -93,6 +104,30 @@ export type BuildAutogateBlockProofInput = {
93
104
  schema_v1_1?: boolean;
94
105
  };
95
106
  export declare function buildAutogateBlockProof(input: BuildAutogateBlockProofInput): AutogateBlockProof;
107
+ /**
108
+ * Upgrade a VERIFIED block proof to v1.2 by attaching the operator-signed
109
+ * `blocked_never_signed` attestation (Decision Outcome Attestation V1).
110
+ *
111
+ * Fail closed: the attestation claims the signer was never invoked, so it
112
+ * attaches ONLY when the transcript's own invariants prove that —
113
+ * `verified === true` (aborted, signer_invocations 0, spend 0, settlements
114
+ * 0). Anything else throws instead of minting a false refuse claim.
115
+ *
116
+ * Returns a NEW proof object (input is not mutated) with schema v1.2 and
117
+ * `outcome_attestation` set. `decision_id` defaults to the proof's run_id;
118
+ * pass `decisionId`/`intentHash` when a DecisionToken covered this refuse
119
+ * so the attestation binds to the exact refused intent.
120
+ */
121
+ export declare function attachBlockOutcomeAttestation(proof: AutogateBlockProof, options: {
122
+ signer: import("./decision-token.js").DecisionSigner & {
123
+ publicKeyPem?: string;
124
+ };
125
+ decisionId?: string;
126
+ intentHash?: string | null;
127
+ payer?: string | null;
128
+ preflightId?: number | null;
129
+ timestampUnix?: number;
130
+ }): Promise<AutogateBlockProof>;
96
131
  /**
97
132
  * Resolve a package version from node_modules on disk.
98
133
  * Prefer this over `require("pkg/package.json")` — some packages (x402-solana)
@@ -1 +1 @@
1
- {"version":3,"file":"block-proof.d.ts","sourceRoot":"","sources":["../src/block-proof.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"block-proof.d.ts","sourceRoot":"","sources":["../src/block-proof.ts"],"names":[],"mappings":"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"}
@@ -11,9 +11,13 @@ import { toTrustGateBlockReason } from "./trust-gate-reason.js";
11
11
  * v1 = original block transcript (hook + invariants only).
12
12
  * v1.1 = adds execution_mode + resolved peer versions so stock-seat proofs
13
13
  * cannot be confused with harness fallback (S1 closure 2026-08-03).
14
+ * v1.2 = adds the operator-signed Decision Outcome Attestation V1
15
+ * (blocked_never_signed) so the refuse is portable signed evidence, not
16
+ * only a JSON transcript. Attached via attachBlockOutcomeAttestation.
14
17
  */
15
18
  export const AUTOGATE_BLOCK_PROOF_SCHEMA = "twzrd.autogate_block_proof.v1";
16
19
  export const AUTOGATE_BLOCK_PROOF_SCHEMA_V1_1 = "twzrd.autogate_block_proof.v1.1";
20
+ export const AUTOGATE_BLOCK_PROOF_SCHEMA_V1_2 = "twzrd.autogate_block_proof.v1.2";
17
21
  export function buildAutogateBlockProof(input) {
18
22
  const internal = input.internal_reason;
19
23
  const publicReason = internal
@@ -69,6 +73,45 @@ export function buildAutogateBlockProof(input) {
69
73
  }
70
74
  return proof;
71
75
  }
76
+ /**
77
+ * Upgrade a VERIFIED block proof to v1.2 by attaching the operator-signed
78
+ * `blocked_never_signed` attestation (Decision Outcome Attestation V1).
79
+ *
80
+ * Fail closed: the attestation claims the signer was never invoked, so it
81
+ * attaches ONLY when the transcript's own invariants prove that —
82
+ * `verified === true` (aborted, signer_invocations 0, spend 0, settlements
83
+ * 0). Anything else throws instead of minting a false refuse claim.
84
+ *
85
+ * Returns a NEW proof object (input is not mutated) with schema v1.2 and
86
+ * `outcome_attestation` set. `decision_id` defaults to the proof's run_id;
87
+ * pass `decisionId`/`intentHash` when a DecisionToken covered this refuse
88
+ * so the attestation binds to the exact refused intent.
89
+ */
90
+ export async function attachBlockOutcomeAttestation(proof, options) {
91
+ if (proof.verified !== true) {
92
+ throw new Error("[twzrd] attachBlockOutcomeAttestation requires a VERIFIED block proof " +
93
+ "(aborted, signer_invocations=0, spend=0, settlements=0) — refusing to " +
94
+ "sign a blocked_never_signed claim the transcript does not prove");
95
+ }
96
+ const { buildOutcomeAttestation } = await import("./outcome-attestation.js");
97
+ const attestation = await buildOutcomeAttestation({
98
+ decisionId: options.decisionId ?? proof.run_id,
99
+ counterparty: proof.target_seller,
100
+ verdict: "block",
101
+ outcome: "blocked_never_signed",
102
+ timestampUnix: options.timestampUnix ?? Math.floor(Date.parse(proof.timestamp) / 1000),
103
+ // No DecisionToken covered this refuse -> no fabricated intent bind.
104
+ intentHash: options.intentHash ?? null,
105
+ payer: options.payer ?? null,
106
+ settlementTx: null,
107
+ preflightId: options.preflightId ?? null,
108
+ }, options.signer);
109
+ return {
110
+ ...proof,
111
+ schema_version: AUTOGATE_BLOCK_PROOF_SCHEMA_V1_2,
112
+ outcome_attestation: attestation,
113
+ };
114
+ }
72
115
  /**
73
116
  * Resolve a package version from node_modules on disk.
74
117
  * Prefer this over `require("pkg/package.json")` — some packages (x402-solana)
@@ -1 +1 @@
1
- {"version":3,"file":"block-proof.js","sourceRoot":"","sources":["../src/block-proof.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"block-proof.js","sourceRoot":"","sources":["../src/block-proof.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Buyer-seat Path A defaults.
3
+ *
4
+ * Facilitator onBeforeSettle stays free (abort on block only). These defaults
5
+ * apply only on the *buyer* install, and only when a paying `x402Fetch` is
6
+ * already wired — refuse-only seats stay free.
7
+ *
8
+ * Ladder (when x402Fetch is present and flags are unset):
9
+ * block → free refuse
10
+ * warn + price >= $2.50 → $0.05 V6 (requireReceipt)
11
+ * warn + price < $2.50 → $0.001 quick re-decide (escalateOnWarn)
12
+ * allow + price >= $2.50 → $0.05 V6
13
+ * allow + price < $2.50 → free proceed
14
+ *
15
+ * Opt out: `requireReceipt: false` and/or `escalateOnWarn: false`.
16
+ */
17
+ import type { RequireReceiptPolicy } from "./receipt-policy.js";
18
+ /** ROI break-even from productization (0.05 lookup vs ~2% bad rate). */
19
+ export declare const DEFAULT_BUYER_MATERIAL_USDC = 2.5;
20
+ export declare const DEFAULT_BUYER_REQUIRE_RECEIPT: RequireReceiptPolicy;
21
+ export declare const DEFAULT_BUYER_ESCALATE_ON_WARN: {
22
+ minSpendUsdc: number;
23
+ };
24
+ export type BuyerEscalateOnWarn = false | {
25
+ minSpendUsdc?: number;
26
+ blockBelowScore?: number;
27
+ };
28
+ export type BuyerPathAFlags = {
29
+ x402Fetch?: typeof fetch;
30
+ requireReceipt?: boolean | RequireReceiptPolicy;
31
+ escalateOnWarn?: BuyerEscalateOnWarn;
32
+ };
33
+ /**
34
+ * Apply buyer Path A defaults when a paying fetch is present and the caller
35
+ * did not set the flags. No-op without x402Fetch (refuse-only stays free).
36
+ */
37
+ export declare function resolveBuyerPathADefaults(opts: BuyerPathAFlags): BuyerPathAFlags;
38
+ //# sourceMappingURL=buyer-defaults.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buyer-defaults.d.ts","sourceRoot":"","sources":["../src/buyer-defaults.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAEhE,wEAAwE;AACxE,eAAO,MAAM,2BAA2B,MAAM,CAAC;AAE/C,eAAO,MAAM,6BAA6B,EAAE,oBAK3C,CAAC;AAEF,eAAO,MAAM,8BAA8B;;CAE1C,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAC3B,KAAK,GACL;IACE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEN,MAAM,MAAM,eAAe,GAAG;IAC5B,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IACzB,cAAc,CAAC,EAAE,OAAO,GAAG,oBAAoB,CAAC;IAChD,cAAc,CAAC,EAAE,mBAAmB,CAAC;CACtC,CAAC;AAEF;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,eAAe,GAAG,eAAe,CAUhF"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Buyer-seat Path A defaults.
3
+ *
4
+ * Facilitator onBeforeSettle stays free (abort on block only). These defaults
5
+ * apply only on the *buyer* install, and only when a paying `x402Fetch` is
6
+ * already wired — refuse-only seats stay free.
7
+ *
8
+ * Ladder (when x402Fetch is present and flags are unset):
9
+ * block → free refuse
10
+ * warn + price >= $2.50 → $0.05 V6 (requireReceipt)
11
+ * warn + price < $2.50 → $0.001 quick re-decide (escalateOnWarn)
12
+ * allow + price >= $2.50 → $0.05 V6
13
+ * allow + price < $2.50 → free proceed
14
+ *
15
+ * Opt out: `requireReceipt: false` and/or `escalateOnWarn: false`.
16
+ */
17
+ /** ROI break-even from productization (0.05 lookup vs ~2% bad rate). */
18
+ export const DEFAULT_BUYER_MATERIAL_USDC = 2.5;
19
+ export const DEFAULT_BUYER_REQUIRE_RECEIPT = {
20
+ minSpendUsdc: DEFAULT_BUYER_MATERIAL_USDC,
21
+ onWarn: true,
22
+ hard: true,
23
+ materialWarnOnly: true,
24
+ };
25
+ export const DEFAULT_BUYER_ESCALATE_ON_WARN = {
26
+ minSpendUsdc: 0,
27
+ };
28
+ /**
29
+ * Apply buyer Path A defaults when a paying fetch is present and the caller
30
+ * did not set the flags. No-op without x402Fetch (refuse-only stays free).
31
+ */
32
+ export function resolveBuyerPathADefaults(opts) {
33
+ if (typeof opts.x402Fetch !== "function")
34
+ return opts;
35
+ const next = { ...opts };
36
+ if (opts.requireReceipt === undefined) {
37
+ next.requireReceipt = { ...DEFAULT_BUYER_REQUIRE_RECEIPT };
38
+ }
39
+ if (opts.escalateOnWarn === undefined) {
40
+ next.escalateOnWarn = { ...DEFAULT_BUYER_ESCALATE_ON_WARN };
41
+ }
42
+ return next;
43
+ }
44
+ //# sourceMappingURL=buyer-defaults.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buyer-defaults.js","sourceRoot":"","sources":["../src/buyer-defaults.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAIH,wEAAwE;AACxE,MAAM,CAAC,MAAM,2BAA2B,GAAG,GAAG,CAAC;AAE/C,MAAM,CAAC,MAAM,6BAA6B,GAAyB;IACjE,YAAY,EAAE,2BAA2B;IACzC,MAAM,EAAE,IAAI;IACZ,IAAI,EAAE,IAAI;IACV,gBAAgB,EAAE,IAAI;CACvB,CAAC;AAEF,MAAM,CAAC,MAAM,8BAA8B,GAAG;IAC5C,YAAY,EAAE,CAAC;CAChB,CAAC;AAeF;;;GAGG;AACH,MAAM,UAAU,yBAAyB,CAAC,IAAqB;IAC7D,IAAI,OAAO,IAAI,CAAC,SAAS,KAAK,UAAU;QAAE,OAAO,IAAI,CAAC;IACtD,MAAM,IAAI,GAAoB,EAAE,GAAG,IAAI,EAAE,CAAC;IAC1C,IAAI,IAAI,CAAC,cAAc,KAAK,SAAS,EAAE,CAAC;QACtC,IAAI,CAAC,cAAc,GAAG,EAAE,GAAG,6BAA6B,EAAE,CAAC;IAC7D,CAAC;IACD,IAAI,IAAI,CAAC,cAAc,KAAK,SAAS,EAAE,CAAC;QACtC,IAAI,CAAC,cAAc,GAAG,EAAE,GAAG,8BAA8B,EAAE,CAAC;IAC9D,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -25,7 +25,22 @@ export type PaymentDecision = {
25
25
  decisionId: string;
26
26
  /** ISO-8601. Tokens are short-lived by design. */
27
27
  expiresAt: string;
28
+ /**
29
+ * Prior Decision Outcome Attestation V1 leaves this decision cites as
30
+ * evidence ("0x" + 64 hex, domain TWZRD:AO_DECISION_OUTCOME_V1 — see
31
+ * agent-intel DECISION_OUTCOME_ATTESTATION_V1_SPEC.md). Covered by the
32
+ * token signature via canonicalJson, so decision N+1 verifiably commits
33
+ * to the closed outcome of loop N. Absent on legacy tokens (canonicalJson
34
+ * drops undefined fields — existing signatures are unaffected).
35
+ */
36
+ citedOutcomes?: string[];
28
37
  constraints?: DecisionConstraints;
38
+ /**
39
+ * Decimal USDC still available under the budget that blocked this intent
40
+ * (POLICY_MAX_AMOUNT / MANDATE_MONTHLY_CEILING → reason `twzrd_budget_exceeded`).
41
+ * Absent when the block was not budget-related. Signed with the token.
42
+ */
43
+ budgetRemainingUsdc?: string;
29
44
  /** Signer key identifier (for rotation / audit). */
30
45
  keyId: string;
31
46
  /** base64 Ed25519 signature over the domain-separated canonical payload. */
@@ -37,6 +52,15 @@ export type DecisionSigner = {
37
52
  /** PEM (SPKI) for local verification; remote signers publish theirs. */
38
53
  publicKeyPem?: string;
39
54
  };
55
+ /** Bound on cited leaves per token (keeps tokens small; cite the latest, not history). */
56
+ export declare const MAX_CITED_OUTCOMES = 16;
57
+ /**
58
+ * Validate + normalize cited outcome leaves at ISSUANCE time (fail closed:
59
+ * a malformed citation is a caller bug, not a policy outcome). Lowercases,
60
+ * requires the 0x prefix form, preserves order, rejects duplicates — the
61
+ * cited set must be exact because the signature commits to it byte-for-byte.
62
+ */
63
+ export declare function normalizeCitedOutcomes(leaves: string[]): string[];
40
64
  /** Everything signed — the token minus the signature itself. */
41
65
  export declare function decisionPreimage(token: Omit<PaymentDecision, "signature">): Buffer;
42
66
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"decision-token.d.ts","sourceRoot":"","sources":["../src/decision-token.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"decision-token.d.ts","sourceRoot":"","sources":["../src/decision-token.ts"],"names":[],"mappings":"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"}
@@ -13,6 +13,33 @@
13
13
  import { createPrivateKey, createPublicKey, generateKeyPairSync, hkdfSync, randomUUID, sign as edSign, verify as edVerify, } from "node:crypto";
14
14
  import { canonicalJson, intentHash } from "./intent.js";
15
15
  const DECISION_DOMAIN = "twzrd-decision-v1\n";
16
+ /** Outcome-attestation leaves are keccak256 digests: "0x" + 64 lowercase hex. */
17
+ const CITED_OUTCOME_LEAF_RE = /^0x[0-9a-f]{64}$/;
18
+ /** Bound on cited leaves per token (keeps tokens small; cite the latest, not history). */
19
+ export const MAX_CITED_OUTCOMES = 16;
20
+ /**
21
+ * Validate + normalize cited outcome leaves at ISSUANCE time (fail closed:
22
+ * a malformed citation is a caller bug, not a policy outcome). Lowercases,
23
+ * requires the 0x prefix form, preserves order, rejects duplicates — the
24
+ * cited set must be exact because the signature commits to it byte-for-byte.
25
+ */
26
+ export function normalizeCitedOutcomes(leaves) {
27
+ if (leaves.length > MAX_CITED_OUTCOMES) {
28
+ throw new Error(`[twzrd] citedOutcomes exceeds MAX_CITED_OUTCOMES=${MAX_CITED_OUTCOMES} (got ${leaves.length})`);
29
+ }
30
+ const seen = new Set();
31
+ return leaves.map((leaf) => {
32
+ const norm = leaf.trim().toLowerCase();
33
+ if (!CITED_OUTCOME_LEAF_RE.test(norm)) {
34
+ throw new Error(`[twzrd] cited outcome leaf must be "0x" + 64 hex chars (got ${JSON.stringify(leaf)})`);
35
+ }
36
+ if (seen.has(norm)) {
37
+ throw new Error(`[twzrd] duplicate cited outcome leaf: ${norm}`);
38
+ }
39
+ seen.add(norm);
40
+ return norm;
41
+ });
42
+ }
16
43
  /** Everything signed — the token minus the signature itself. */
17
44
  export function decisionPreimage(token) {
18
45
  return Buffer.concat([
@@ -1 +1 @@
1
- {"version":3,"file":"decision-token.js","sourceRoot":"","sources":["../src/decision-token.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"decision-token.js","sourceRoot":"","sources":["../src/decision-token.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  import { type TwzrdTier } from "./quick.js";
2
2
  import { type RequireReceiptPolicy } from "./receipt-policy.js";
3
3
  import type { TwzrdDecision, TwzrdGateConfig, TwzrdReadinessCard, X402PaymentRequirements } from "./types.js";
4
+ import type { BuyerEscalateOnWarn } from "./buyer-defaults.js";
4
5
  export type EvaluateX402Options = TwzrdGateConfig & {
5
6
  /**
6
7
  * When true, automatically fetches the paid TWZRD trust receipt (via x402)
@@ -41,12 +42,7 @@ export type EvaluateX402Options = TwzrdGateConfig & {
41
42
  * (warn -> maybe block); never loosens a block or allow. Short-circuits the
42
43
  * autoReceipt path for the warn case (no double settle).
43
44
  */
44
- escalateOnWarn?: {
45
- /** Skip escalation when the resource price is below this - don't pay $0.001 to vet a sub-cent buy. Default 0. */
46
- minSpendUsdc?: number;
47
- /** Deny when the paid quick score is below this. Default: preflightMinScore (40). */
48
- blockBelowScore?: number;
49
- };
45
+ escalateOnWarn?: BuyerEscalateOnWarn;
50
46
  };
51
47
  export type EvaluateX402Result = {
52
48
  decision: TwzrdDecision | "unknown";
@@ -83,11 +79,12 @@ export type EvaluateX402Result = {
83
79
  * Evaluate an x402 resource before the buyer pays:
84
80
  * 1. Run free TWZRD preflight on the seller (no auth, no cost).
85
81
  * 2. Return decision + trust score.
86
- * 3. If escalateOnWarn is set and decision=warn: autonomously settle the cheap
87
- * $0.001 quick tier and re-decide on the paid score (the autonomous risk loop).
88
- * 4. Else if autoReceipt / requireReceipt triggers and decision !== block:
82
+ * 3. If autoReceipt / requireReceipt triggers and decision !== block:
89
83
  * auto-fetch the paid TWZRD trust receipt via x402Fetch (Path A, $0.05 V6).
90
84
  * With requireReceipt.hard (default), deny spend if Path A fails.
85
+ * 4. Else if escalateOnWarn is set and decision=warn: settle the cheap
86
+ * $0.001 quick tier and re-decide on the paid score (only when Path A
87
+ * did not already fire).
91
88
  *
92
89
  * Defaults to gateOnCanSpend=false (decision-only) — the free-tier preflight
93
90
  * returns can_spend=false for most unknown sellers, which would block too eagerly