twzrd-x402-gate 0.8.4 → 0.8.6

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 CHANGED
@@ -7,6 +7,32 @@
7
7
  refuse. Protects the **payer** from a risky **merchant** (`payTo`). Chain-neutral envelope;
8
8
  **Solana-deep** reputation only (Base/EVM = explicit `unknown`).
9
9
 
10
+ ### Default-on AutoGate (5 lines)
11
+
12
+ ```bash
13
+ npm install twzrd-x402-gate@0.8.6 @x402/core @x402/fetch @x402/svm
14
+ ```
15
+
16
+ ```typescript
17
+ import { x402Client } from "@x402/core/client";
18
+ import { installTwzrdAutoGate } from "twzrd-x402-gate";
19
+
20
+ const client = new x402Client();
21
+ // refuseWashFlagged defaults true; gateOnCanSpend stays false unless you opt in
22
+ installTwzrdAutoGate(client, { refuseWashFlagged: true });
23
+ // then register schemes + wrapFetchWithPayment as usual
24
+ ```
25
+
26
+ **Intercept proof (0 USDC, wash seller never reaches signer):**
27
+
28
+ ```bash
29
+ cd packages/twzrd-x402-gate && npm run autogate-block-proof
30
+ # writes block-proof-<run_id>.json (schema twzrd.autogate_block_proof.v1)
31
+ # public reason: TWZRD_TRUST_GATE_BLOCK: wash_flagged
32
+ ```
33
+
34
+ `gateOnCanSpend` remains **opt-in** (`false` by default; set `true` or `TWZRD_GATE_ON_CAN_SPEND=1` only when you want hard cap enforcement).
35
+
10
36
  **Optional (0.8.1):** a resource-server settle hook so merchants can apply **customer policy**
11
37
  before they settle and serve (abuse, sanctions, bots, “don’t serve this payer”). Not an equal
12
38
  mirror of the buyer problem — settled USDC is final; wash resistance is mainly TWZRD scoring.
@@ -23,7 +49,7 @@ transfer on-chain. Wash/sybil edges are primarily discounted in TWZRD scoring, n
23
49
  revenue refusal.
24
50
 
25
51
  ```bash
26
- npm install twzrd-x402-gate@0.8.3
52
+ npm install twzrd-x402-gate@0.8.6
27
53
  ```
28
54
 
29
55
  ```typescript
@@ -67,7 +93,7 @@ Fixture-backed SVM extract tests live in `test/seller-hook.test.ts` +
67
93
  Install the published gate and run against wash fixtures:
68
94
 
69
95
  ```bash
70
- npm install twzrd-x402-gate@0.8.3
96
+ npm install twzrd-x402-gate@0.8.6
71
97
  # from package root after install, or from a checkout:
72
98
  npm run wash-dogfood
73
99
  ```
@@ -87,7 +113,7 @@ Gate dogfood: `approved=false` `reason=twzrd_decision_block`, **USDC spent = 0**
87
113
 
88
114
  **Accurate paste line:**
89
115
 
90
- > Preflight returned decision=block on wash seller 7G73PL… / HuSiSpc… (preflight_id 378468 / 378469, wash_flagged=true). Gate approved=false reason=twzrd_decision_block. No USDC spent. No tx broadcast. Repro: `npm i twzrd-x402-gate@0.8.3 && npm run wash-dogfood` or gist above.
116
+ > Preflight returned decision=block on wash seller 7G73PL… / HuSiSpc… (preflight_id 378468 / 378469, wash_flagged=true). Gate approved=false reason=twzrd_decision_block. No USDC spent. No tx broadcast. Repro: `npm i twzrd-x402-gate@0.8.5 && npm run wash-dogfood` or gist above.
91
117
 
92
118
  This is a **reproducible demonstration** that the free gate blocks known wash sellers with stamped `preflight_id`s and zero spend. It is **not** proof that external agents already default to this path at scale.
93
119
 
@@ -212,10 +238,10 @@ Dogfood (one public live proof path):
212
238
  ## Install
213
239
 
214
240
  ```bash
215
- npm install twzrd-x402-gate@0.8.3
241
+ npm install twzrd-x402-gate@0.8.6
216
242
  ```
217
243
 
218
- Current npm truth: `0.8.3` (buyer gate + optional seller settle guard + payer-extract hardening).
244
+ Current npm truth: `0.8.5` (buyer gate + optional seller settle guard + payer-extract hardening).
219
245
  Check `npm view twzrd-x402-gate version` if in doubt (do not pin stale **0.5.4** / **0.7.1**).
220
246
 
221
247
  Optional settle guard (resource-server **payer** policy): see **Seller settle guard
@@ -381,7 +407,7 @@ the intent hash, so the decision no longer matches.
381
407
  npx twzrd-safe-fetch https://example/paid --gate-on-can-spend --payment-network solana --json
382
408
 
383
409
  # Dry-run: preflight only, zero USDC
384
- npx twzrd-safe-fetch 'https://intel.twzrd.xyz/v1/intel/quick/<pubkey>' --dry-run --json
410
+ npx twzrd-safe-fetch 'https://intel.twzrd.xyz/v1/intel/quick/BJGdsDXJFy63eCAnX3UmGfShp8BuqbtkTfcamyRGr7VQ' --dry-run --json
385
411
  ```
386
412
 
387
413
  ```text
@@ -733,7 +759,7 @@ A 402 whose payment requirements yield **no identifiable seller wallet** (missin
733
759
  Deterministic install→transcript path for operators (no wallet, no USDC):
734
760
 
735
761
  ```bash
736
- npm run adoption-proof -- --integration <YOUR_ID> --run-id <UUID>
762
+ npm run adoption-proof -- --integration demo-autogate-proof --run-id 00000000-0000-4000-8000-000000000001
737
763
  ```
738
764
 
739
765
  Emits `twzrd.gate_adoption_transcript.v1` JSON: block path aborts with `signerInvocations: 0`, allow path emits decision, attribution headers stamped on mocked preflight. Full acceptance criteria (what counts as `EXTERNAL_RUN` vs dogfood): monorepo `docs/strategy/gate-adoption-operator-proof.md`.
@@ -0,0 +1,47 @@
1
+ /**
2
+ * AutoGate block-proof transcript schema + builder.
3
+ * Used by examples/autogate-block-proof.ts and unit tests.
4
+ */
5
+ export declare const AUTOGATE_BLOCK_PROOF_SCHEMA = "twzrd.autogate_block_proof.v1";
6
+ export type AutogateBlockProof = {
7
+ schema_version: typeof AUTOGATE_BLOCK_PROOF_SCHEMA;
8
+ run_id: string;
9
+ timestamp: string;
10
+ package_version: string;
11
+ target_seller: string;
12
+ preflight_result: {
13
+ decision: string | null;
14
+ wash_flagged: boolean | null;
15
+ trust_score: number | null;
16
+ internal_reason: string | null;
17
+ };
18
+ interception: {
19
+ hook: "onBeforePaymentCreation";
20
+ aborted: boolean;
21
+ reason: string;
22
+ internal_reason: string | null;
23
+ };
24
+ invariants: {
25
+ signer_invocations: number;
26
+ actual_spend_usdc: number;
27
+ onchain_settlements: number;
28
+ };
29
+ verified: boolean;
30
+ };
31
+ export type BuildAutogateBlockProofInput = {
32
+ run_id: string;
33
+ target_seller: string;
34
+ aborted: boolean;
35
+ /** Internal policy reason (e.g. twzrd_wash_flagged) or full hook abort string */
36
+ internal_reason: string | null;
37
+ decision?: string | null;
38
+ wash_flagged?: boolean | null;
39
+ trust_score?: number | null;
40
+ signer_invocations: number;
41
+ actual_spend_usdc?: number;
42
+ onchain_settlements?: number;
43
+ package_version?: string;
44
+ now?: () => Date;
45
+ };
46
+ export declare function buildAutogateBlockProof(input: BuildAutogateBlockProofInput): AutogateBlockProof;
47
+ //# sourceMappingURL=block-proof.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"block-proof.d.ts","sourceRoot":"","sources":["../src/block-proof.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,eAAO,MAAM,2BAA2B,kCAAkC,CAAC;AAE3E,MAAM,MAAM,kBAAkB,GAAG;IAC/B,cAAc,EAAE,OAAO,2BAA2B,CAAC;IACnD,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE;QAChB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;QACxB,YAAY,EAAE,OAAO,GAAG,IAAI,CAAC;QAC7B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;QAC3B,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;KAChC,CAAC;IACF,YAAY,EAAE;QACZ,IAAI,EAAE,yBAAyB,CAAC;QAChC,OAAO,EAAE,OAAO,CAAC;QACjB,MAAM,EAAE,MAAM,CAAC;QACf,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;KAChC,CAAC;IACF,UAAU,EAAE;QACV,kBAAkB,EAAE,MAAM,CAAC;QAC3B,iBAAiB,EAAE,MAAM,CAAC;QAC1B,mBAAmB,EAAE,MAAM,CAAC;KAC7B,CAAC;IACF,QAAQ,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,4BAA4B,GAAG;IACzC,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,OAAO,CAAC;IACjB,iFAAiF;IACjF,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,YAAY,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAC9B,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC;CAClB,CAAC;AAEF,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,4BAA4B,GAClC,kBAAkB,CAuCpB"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * AutoGate block-proof transcript schema + builder.
3
+ * Used by examples/autogate-block-proof.ts and unit tests.
4
+ */
5
+ import { CLIENT_VERSION } from "./version.js";
6
+ import { toTrustGateBlockReason } from "./trust-gate-reason.js";
7
+ export const AUTOGATE_BLOCK_PROOF_SCHEMA = "twzrd.autogate_block_proof.v1";
8
+ export function buildAutogateBlockProof(input) {
9
+ const internal = input.internal_reason;
10
+ const publicReason = internal
11
+ ? toTrustGateBlockReason(internal)
12
+ : "TWZRD_TRUST_GATE_BLOCK: unknown";
13
+ const signer = input.signer_invocations;
14
+ const spend = input.actual_spend_usdc ?? 0;
15
+ const onchain = input.onchain_settlements ?? 0;
16
+ const verified = input.aborted === true &&
17
+ signer === 0 &&
18
+ spend === 0 &&
19
+ onchain === 0;
20
+ return {
21
+ schema_version: AUTOGATE_BLOCK_PROOF_SCHEMA,
22
+ run_id: input.run_id,
23
+ timestamp: (input.now?.() ?? new Date()).toISOString(),
24
+ package_version: input.package_version ?? CLIENT_VERSION,
25
+ target_seller: input.target_seller,
26
+ preflight_result: {
27
+ decision: input.decision ?? null,
28
+ wash_flagged: input.wash_flagged ?? null,
29
+ trust_score: input.trust_score ?? null,
30
+ internal_reason: internal,
31
+ },
32
+ interception: {
33
+ hook: "onBeforePaymentCreation",
34
+ aborted: input.aborted,
35
+ reason: publicReason,
36
+ internal_reason: internal,
37
+ },
38
+ invariants: {
39
+ signer_invocations: signer,
40
+ actual_spend_usdc: spend,
41
+ onchain_settlements: onchain,
42
+ },
43
+ verified,
44
+ };
45
+ }
46
+ //# sourceMappingURL=block-proof.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"block-proof.js","sourceRoot":"","sources":["../src/block-proof.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAEhE,MAAM,CAAC,MAAM,2BAA2B,GAAG,+BAA+B,CAAC;AA4C3E,MAAM,UAAU,uBAAuB,CACrC,KAAmC;IAEnC,MAAM,QAAQ,GAAG,KAAK,CAAC,eAAe,CAAC;IACvC,MAAM,YAAY,GAAG,QAAQ;QAC3B,CAAC,CAAC,sBAAsB,CAAC,QAAQ,CAAC;QAClC,CAAC,CAAC,iCAAiC,CAAC;IACtC,MAAM,MAAM,GAAG,KAAK,CAAC,kBAAkB,CAAC;IACxC,MAAM,KAAK,GAAG,KAAK,CAAC,iBAAiB,IAAI,CAAC,CAAC;IAC3C,MAAM,OAAO,GAAG,KAAK,CAAC,mBAAmB,IAAI,CAAC,CAAC;IAC/C,MAAM,QAAQ,GACZ,KAAK,CAAC,OAAO,KAAK,IAAI;QACtB,MAAM,KAAK,CAAC;QACZ,KAAK,KAAK,CAAC;QACX,OAAO,KAAK,CAAC,CAAC;IAEhB,OAAO;QACL,cAAc,EAAE,2BAA2B;QAC3C,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,SAAS,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,IAAI,IAAI,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE;QACtD,eAAe,EAAE,KAAK,CAAC,eAAe,IAAI,cAAc;QACxD,aAAa,EAAE,KAAK,CAAC,aAAa;QAClC,gBAAgB,EAAE;YAChB,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,IAAI;YAChC,YAAY,EAAE,KAAK,CAAC,YAAY,IAAI,IAAI;YACxC,WAAW,EAAE,KAAK,CAAC,WAAW,IAAI,IAAI;YACtC,eAAe,EAAE,QAAQ;SAC1B;QACD,YAAY,EAAE;YACZ,IAAI,EAAE,yBAAyB;YAC/B,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,MAAM,EAAE,YAAY;YACpB,eAAe,EAAE,QAAQ;SAC1B;QACD,UAAU,EAAE;YACV,kBAAkB,EAAE,MAAM;YAC1B,iBAAiB,EAAE,KAAK;YACxB,mBAAmB,EAAE,OAAO;SAC7B;QACD,QAAQ;KACT,CAAC;AACJ,CAAC"}
@@ -0,0 +1,91 @@
1
+ /**
2
+ * Delivery observation capture — Phase 2 of the delivery-proof plan.
3
+ *
4
+ * Phase 1 (twzrd-agent-intel delivery_signal.py) opened a fail-open scoring
5
+ * seam that consumes {merchant_wallet, settlement_tx, http_status,
6
+ * schema_match, latency_ms, observed_at} observations. This module produces
7
+ * them PASSIVELY: evidence is derived from a paid safe-fetch that already
8
+ * happened — no extra requests, no probe spend, no response bodies shipped.
9
+ *
10
+ * The schema verdict is computed client-side against what the merchant itself
11
+ * advertised in its 402 challenge (extensions.bazaar.info.output). The bazaar
12
+ * advertisement is {type, example}, not a strict JSON Schema, so the verdict
13
+ * carries an explicit check_level — the server weighs evidence accordingly
14
+ * and never has to guess how deep the check went:
15
+ *
16
+ * example_keys every top-level key of the advertised example is present
17
+ * output_type advertised type=json and the response parsed as JSON
18
+ * body_nonempty nothing advertised; the response was non-empty
19
+ *
20
+ * Fire-and-forget: capture must NEVER throw into the pay path and never
21
+ * delay it beyond CAPTURE_TIMEOUT_MS. A missing/erroring collector endpoint
22
+ * (Phase 3 ships it) degrades to posted:false silently.
23
+ *
24
+ * Kill switches: TWZRD_DELIVERY_CAPTURE=0|false, or deliveryCapture:false in
25
+ * SafeFetchOptions. Server-side settlement verification, internal-wallet
26
+ * scrub, and per-tx dedupe are Phase 3 concerns — a client-side bool is
27
+ * never trusted alone.
28
+ */
29
+ import type { ResolvedTwzrdGateConfig } from "./config.js";
30
+ export declare const DELIVERY_OBSERVATION_PATH = "/v1/intel/delivery-observation";
31
+ export declare const CAPTURE_TIMEOUT_MS = 1500;
32
+ export type DeliveryCheckLevel = "example_keys" | "output_type" | "body_nonempty";
33
+ export type DeliveryObservation = {
34
+ merchant_wallet: string;
35
+ settlement_tx: string | null;
36
+ http_status: number;
37
+ schema_match: boolean;
38
+ check_level: DeliveryCheckLevel;
39
+ latency_ms: number | null;
40
+ observed_at: number;
41
+ resource?: string;
42
+ network?: string;
43
+ source: "gate_post_settle";
44
+ };
45
+ export type DeliveryCaptureResult = {
46
+ posted: boolean;
47
+ observation: DeliveryObservation;
48
+ };
49
+ /** What the merchant's own 402 challenge advertised about its paid output. */
50
+ export type AdvertisedOutput = {
51
+ jsonExpected: boolean;
52
+ exampleKeys: string[];
53
+ };
54
+ /** Dig extensions.bazaar.info.output out of a 402 challenge body. */
55
+ export declare function extractAdvertisedOutput(challengeBody: unknown): AdvertisedOutput;
56
+ /**
57
+ * Verdict on the delivered body vs the merchant's own advertisement.
58
+ * If the merchant advertises example fields it does not return, that IS a
59
+ * delivery mismatch — the bar is the merchant's own claim, nothing invented.
60
+ */
61
+ export declare function assessSchemaMatch(resourceBody: unknown, advertised: AdvertisedOutput): {
62
+ schemaMatch: boolean;
63
+ checkLevel: DeliveryCheckLevel;
64
+ };
65
+ /**
66
+ * Best-effort settlement tx extraction from the payer's JSON output
67
+ * (depth ≤ 2). The AgentCash CLI does not guarantee this; null is honest —
68
+ * Phase 3 treats tx-less observations as unverifiable, not as evidence.
69
+ */
70
+ export declare function extractSettlementTx(payerOutput: unknown, depth?: number): string | null;
71
+ export type DeliveryCaptureArgs = {
72
+ merchantWallet: string;
73
+ httpStatus: number;
74
+ resourceBody: unknown;
75
+ /** The 402 challenge body the merchant advertised its output in. */
76
+ challengeBody: unknown;
77
+ /** Payer output to mine for the settlement tx (may equal resourceBody). */
78
+ payerOutput?: unknown;
79
+ latencyMs?: number | null;
80
+ resource?: string;
81
+ network?: string;
82
+ /** SafeFetchOptions.deliveryCapture; default true. */
83
+ enabled?: boolean;
84
+ };
85
+ /**
86
+ * Build the observation and fire-and-forget POST it to the intel collector.
87
+ * Resolves {posted:false} on disable, timeout, network error, or non-2xx —
88
+ * never throws, never blocks the pay path beyond CAPTURE_TIMEOUT_MS.
89
+ */
90
+ export declare function captureDeliveryObservation(args: DeliveryCaptureArgs, cfg: ResolvedTwzrdGateConfig): Promise<DeliveryCaptureResult>;
91
+ //# sourceMappingURL=delivery-capture.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delivery-capture.d.ts","sourceRoot":"","sources":["../src/delivery-capture.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAG3D,eAAO,MAAM,yBAAyB,mCAAmC,CAAC;AAC1E,eAAO,MAAM,kBAAkB,OAAO,CAAC;AAEvC,MAAM,MAAM,kBAAkB,GAAG,cAAc,GAAG,aAAa,GAAG,eAAe,CAAC;AAElF,MAAM,MAAM,mBAAmB,GAAG;IAChC,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,OAAO,CAAC;IACtB,WAAW,EAAE,kBAAkB,CAAC;IAChC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,kBAAkB,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,MAAM,EAAE,OAAO,CAAC;IAChB,WAAW,EAAE,mBAAmB,CAAC;CAClC,CAAC;AAEF,8EAA8E;AAC9E,MAAM,MAAM,gBAAgB,GAAG;IAC7B,YAAY,EAAE,OAAO,CAAC;IACtB,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB,CAAC;AAQF,qEAAqE;AACrE,wBAAgB,uBAAuB,CAAC,aAAa,EAAE,OAAO,GAAG,gBAAgB,CAWhF;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,YAAY,EAAE,OAAO,EACrB,UAAU,EAAE,gBAAgB,GAC3B;IAAE,WAAW,EAAE,OAAO,CAAC;IAAC,UAAU,EAAE,kBAAkB,CAAA;CAAE,CAe1D;AAcD;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,OAAO,EAAE,KAAK,SAAI,GAAG,MAAM,GAAG,IAAI,CAiBlF;AAOD,MAAM,MAAM,mBAAmB,GAAG;IAChC,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,OAAO,CAAC;IACtB,oEAAoE;IACpE,aAAa,EAAE,OAAO,CAAC;IACvB,2EAA2E;IAC3E,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,sDAAsD;IACtD,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF;;;;GAIG;AACH,wBAAsB,0BAA0B,CAC9C,IAAI,EAAE,mBAAmB,EACzB,GAAG,EAAE,uBAAuB,GAC3B,OAAO,CAAC,qBAAqB,CAAC,CA+ChC"}
@@ -0,0 +1,160 @@
1
+ /**
2
+ * Delivery observation capture — Phase 2 of the delivery-proof plan.
3
+ *
4
+ * Phase 1 (twzrd-agent-intel delivery_signal.py) opened a fail-open scoring
5
+ * seam that consumes {merchant_wallet, settlement_tx, http_status,
6
+ * schema_match, latency_ms, observed_at} observations. This module produces
7
+ * them PASSIVELY: evidence is derived from a paid safe-fetch that already
8
+ * happened — no extra requests, no probe spend, no response bodies shipped.
9
+ *
10
+ * The schema verdict is computed client-side against what the merchant itself
11
+ * advertised in its 402 challenge (extensions.bazaar.info.output). The bazaar
12
+ * advertisement is {type, example}, not a strict JSON Schema, so the verdict
13
+ * carries an explicit check_level — the server weighs evidence accordingly
14
+ * and never has to guess how deep the check went:
15
+ *
16
+ * example_keys every top-level key of the advertised example is present
17
+ * output_type advertised type=json and the response parsed as JSON
18
+ * body_nonempty nothing advertised; the response was non-empty
19
+ *
20
+ * Fire-and-forget: capture must NEVER throw into the pay path and never
21
+ * delay it beyond CAPTURE_TIMEOUT_MS. A missing/erroring collector endpoint
22
+ * (Phase 3 ships it) degrades to posted:false silently.
23
+ *
24
+ * Kill switches: TWZRD_DELIVERY_CAPTURE=0|false, or deliveryCapture:false in
25
+ * SafeFetchOptions. Server-side settlement verification, internal-wallet
26
+ * scrub, and per-tx dedupe are Phase 3 concerns — a client-side bool is
27
+ * never trusted alone.
28
+ */
29
+ import { CLIENT_VERSION } from "./version.js";
30
+ export const DELIVERY_OBSERVATION_PATH = "/v1/intel/delivery-observation";
31
+ export const CAPTURE_TIMEOUT_MS = 1500;
32
+ function asRecord(v) {
33
+ return v !== null && typeof v === "object" && !Array.isArray(v)
34
+ ? v
35
+ : null;
36
+ }
37
+ /** Dig extensions.bazaar.info.output out of a 402 challenge body. */
38
+ export function extractAdvertisedOutput(challengeBody) {
39
+ const none = { jsonExpected: false, exampleKeys: [] };
40
+ const ext = asRecord(asRecord(challengeBody)?.extensions);
41
+ const bazaar = asRecord(ext?.bazaar);
42
+ const info = asRecord(bazaar?.info);
43
+ const output = asRecord(info?.output);
44
+ if (!output)
45
+ return none;
46
+ const jsonExpected = typeof output.type === "string" && output.type.toLowerCase() === "json";
47
+ const example = asRecord(output.example);
48
+ return { jsonExpected, exampleKeys: example ? Object.keys(example) : [] };
49
+ }
50
+ /**
51
+ * Verdict on the delivered body vs the merchant's own advertisement.
52
+ * If the merchant advertises example fields it does not return, that IS a
53
+ * delivery mismatch — the bar is the merchant's own claim, nothing invented.
54
+ */
55
+ export function assessSchemaMatch(resourceBody, advertised) {
56
+ const bodyObj = asRecord(resourceBody);
57
+ if (advertised.exampleKeys.length > 0) {
58
+ const schemaMatch = bodyObj != null && advertised.exampleKeys.every((k) => k in bodyObj);
59
+ return { schemaMatch, checkLevel: "example_keys" };
60
+ }
61
+ if (advertised.jsonExpected) {
62
+ const isJson = bodyObj != null || Array.isArray(resourceBody);
63
+ return { schemaMatch: isJson, checkLevel: "output_type" };
64
+ }
65
+ const nonEmpty = resourceBody != null &&
66
+ !(typeof resourceBody === "string" && resourceBody.trim() === "");
67
+ return { schemaMatch: nonEmpty, checkLevel: "body_nonempty" };
68
+ }
69
+ const B58_SIG_RE = /^[1-9A-HJ-NP-Za-km-z]{43,88}$/;
70
+ const TX_KEYS = new Set([
71
+ "settlement_tx",
72
+ "settlementtx",
73
+ "tx",
74
+ "txhash",
75
+ "tx_hash",
76
+ "signature",
77
+ "transactionsignature",
78
+ "settlement_anchor_tx",
79
+ ]);
80
+ /**
81
+ * Best-effort settlement tx extraction from the payer's JSON output
82
+ * (depth ≤ 2). The AgentCash CLI does not guarantee this; null is honest —
83
+ * Phase 3 treats tx-less observations as unverifiable, not as evidence.
84
+ */
85
+ export function extractSettlementTx(payerOutput, depth = 0) {
86
+ const rec = asRecord(payerOutput);
87
+ if (!rec || depth > 2)
88
+ return null;
89
+ for (const [key, value] of Object.entries(rec)) {
90
+ if (TX_KEYS.has(key.toLowerCase()) &&
91
+ typeof value === "string" &&
92
+ B58_SIG_RE.test(value)) {
93
+ return value;
94
+ }
95
+ }
96
+ for (const value of Object.values(rec)) {
97
+ const nested = extractSettlementTx(value, depth + 1);
98
+ if (nested)
99
+ return nested;
100
+ }
101
+ return null;
102
+ }
103
+ function captureDisabledByEnv() {
104
+ const v = process.env.TWZRD_DELIVERY_CAPTURE;
105
+ return v === "0" || v === "false";
106
+ }
107
+ /**
108
+ * Build the observation and fire-and-forget POST it to the intel collector.
109
+ * Resolves {posted:false} on disable, timeout, network error, or non-2xx —
110
+ * never throws, never blocks the pay path beyond CAPTURE_TIMEOUT_MS.
111
+ */
112
+ export async function captureDeliveryObservation(args, cfg) {
113
+ const advertised = extractAdvertisedOutput(args.challengeBody);
114
+ const { schemaMatch, checkLevel } = assessSchemaMatch(args.resourceBody, advertised);
115
+ const observation = {
116
+ merchant_wallet: args.merchantWallet,
117
+ settlement_tx: extractSettlementTx(args.payerOutput ?? args.resourceBody),
118
+ http_status: args.httpStatus,
119
+ schema_match: schemaMatch,
120
+ check_level: checkLevel,
121
+ latency_ms: args.latencyMs ?? null,
122
+ observed_at: Math.floor(Date.now() / 1000),
123
+ resource: args.resource,
124
+ network: args.network,
125
+ source: "gate_post_settle",
126
+ };
127
+ if (args.enabled === false || captureDisabledByEnv()) {
128
+ return { posted: false, observation };
129
+ }
130
+ try {
131
+ const headers = {
132
+ "content-type": "application/json",
133
+ "X-Twzrd-Caller": cfg.attribution
134
+ ? `${cfg.attribution.integration}@${CLIENT_VERSION}`
135
+ : `twzrd-x402-gate/${CLIENT_VERSION}`,
136
+ };
137
+ if (cfg.attribution) {
138
+ headers["X-Twzrd-Integration"] = cfg.attribution.integration;
139
+ headers["X-Twzrd-Run-Id"] = cfg.attribution.runId;
140
+ }
141
+ const controller = new AbortController();
142
+ const timer = setTimeout(() => controller.abort(), CAPTURE_TIMEOUT_MS);
143
+ try {
144
+ const resp = await cfg.fetch(`${cfg.intelBase}${DELIVERY_OBSERVATION_PATH}`, {
145
+ method: "POST",
146
+ headers,
147
+ body: JSON.stringify(observation),
148
+ signal: controller.signal,
149
+ });
150
+ return { posted: resp.ok, observation };
151
+ }
152
+ finally {
153
+ clearTimeout(timer);
154
+ }
155
+ }
156
+ catch {
157
+ return { posted: false, observation };
158
+ }
159
+ }
160
+ //# sourceMappingURL=delivery-capture.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delivery-capture.js","sourceRoot":"","sources":["../src/delivery-capture.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -11,6 +11,8 @@ export { wrapFetchWithTwzrdGate } from "./wrap-fetch.js";
11
11
  export { evaluate_x402_resource, type EvaluateX402Options, type EvaluateX402Result, } from "./evaluate.js";
12
12
  export { withTwzrdGuard, type TwzrdGuardOptions } from "./with-guard.js";
13
13
  export { installTwzrdAutoGate, uninstallTwzrdAutoGate, isTwzrdAutoGateDisabled, type PayWrap, type InstallAutoGateOptions, type InstallAutoGateFetchOptions, type InstallAutoGateX402Options, type InstallAutoGateMppOptions, type TwzrdAutoGateCommonOptions, } from "./auto-gate.js";
14
+ export { TWZRD_TRUST_GATE_BLOCK_WASH, TWZRD_TRUST_GATE_BLOCK_CAN_SPEND, TWZRD_TRUST_GATE_BLOCK_DECISION, toTrustGateBlockReason, } from "./trust-gate-reason.js";
15
+ export { AUTOGATE_BLOCK_PROOF_SCHEMA, buildAutogateBlockProof, type AutogateBlockProof, type BuildAutogateBlockProofInput, } from "./block-proof.js";
14
16
  export { safeFetch, runAgentcashFetch, main as safeFetchMain, type SafeFetchOptions, type SafeFetchResult, } from "./safe-fetch.js";
15
17
  export { installTwzrdX402ClientHook, twzrdBeforePaymentCreation, type X402ClientLike, type X402SelectedRequirements, type BeforePaymentCreationContext, type BeforePaymentCreationResult, type InstallX402ClientHookOptions, type X402PaymentControlOptions, } from "./x402-client-hook.js";
16
18
  export { runGateAdoptionProof, main as adoptionProofMain, ADOPTION_TRANSCRIPT_SCHEMA, ADOPTION_PROOF_SELLER, ADOPTION_PROOF_NETWORK, ADOPTION_PROOF_RESOURCE, type GateAdoptionTranscript, type GateAdoptionStep, type GateAdoptionAssertions, type GateAdoptionLineage, type RunGateAdoptionProofOptions, } from "./adoption-proof.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,KAAK,SAAS,EAAE,MAAM,WAAW,CAAC;AACzE,OAAO,EAAE,aAAa,EAAE,KAAK,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAC1E,OAAO,EACL,qBAAqB,EACrB,mBAAmB,EACnB,cAAc,EACd,mBAAmB,EACnB,KAAK,mBAAmB,GACzB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,qBAAqB,EAAE,wBAAwB,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAChH,OAAO,EACL,eAAe,EACf,wBAAwB,EACxB,YAAY,EACZ,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,KAAK,sBAAsB,EAC3B,KAAK,0BAA0B,GAChC,MAAM,cAAc,CAAC;AACtB,YAAY,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AACpD,OAAO,EACL,iBAAiB,EACjB,sBAAsB,EACtB,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACpB,KAAK,gBAAgB,GACtB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EACL,sBAAsB,EACtB,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,GACxB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,cAAc,EAAE,KAAK,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACzE,OAAO,EACL,oBAAoB,EACpB,sBAAsB,EACtB,uBAAuB,EACvB,KAAK,OAAO,EACZ,KAAK,sBAAsB,EAC3B,KAAK,2BAA2B,EAChC,KAAK,0BAA0B,EAC/B,KAAK,yBAAyB,EAC9B,KAAK,0BAA0B,GAChC,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,2BAA2B,EAC3B,gCAAgC,EAChC,+BAA+B,EAC/B,sBAAsB,GACvB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,2BAA2B,EAC3B,uBAAuB,EACvB,KAAK,kBAAkB,EACvB,KAAK,4BAA4B,GAClC,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,SAAS,EACT,iBAAiB,EACjB,IAAI,IAAI,aAAa,EACrB,KAAK,gBAAgB,EACrB,KAAK,eAAe,GACrB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,0BAA0B,EAC1B,0BAA0B,EAC1B,KAAK,cAAc,EACnB,KAAK,wBAAwB,EAC7B,KAAK,4BAA4B,EACjC,KAAK,2BAA2B,EAChC,KAAK,4BAA4B,EACjC,KAAK,yBAAyB,GAC/B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,oBAAoB,EACpB,IAAI,IAAI,iBAAiB,EACzB,0BAA0B,EAC1B,qBAAqB,EACrB,sBAAsB,EACtB,uBAAuB,EACvB,KAAK,sBAAsB,EAC3B,KAAK,gBAAgB,EACrB,KAAK,sBAAsB,EAC3B,KAAK,mBAAmB,EACxB,KAAK,2BAA2B,GACjC,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,UAAU,EACV,gBAAgB,EAChB,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACtB,KAAK,SAAS,GACf,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,wBAAwB,EACxB,KAAK,aAAa,EAClB,KAAK,oBAAoB,GAC1B,MAAM,gBAAgB,CAAC;AACxB,YAAY,EACV,aAAa,EACb,kBAAkB,EAClB,mBAAmB,EACnB,eAAe,EACf,mBAAmB,EACnB,mBAAmB,EACnB,kBAAkB,EAClB,uBAAuB,EACvB,uBAAuB,EACvB,qBAAqB,EACrB,8BAA8B,GAC/B,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,aAAa,EACb,UAAU,EACV,UAAU,EACV,kBAAkB,EAClB,KAAK,aAAa,EAClB,KAAK,eAAe,GACrB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,oBAAoB,EACpB,sBAAsB,EACtB,yBAAyB,EACzB,0BAA0B,EAC1B,gBAAgB,EAChB,aAAa,EACb,YAAY,EACZ,uBAAuB,EACvB,uBAAuB,EACvB,KAAK,2BAA2B,EAChC,KAAK,gBAAgB,EACrB,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,EACrB,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,KAAK,sBAAsB,GAC5B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,uBAAuB,EACvB,cAAc,EACd,cAAc,EACd,KAAK,wBAAwB,EAC7B,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,EACzB,KAAK,OAAO,EACZ,KAAK,WAAW,EAChB,KAAK,WAAW,GACjB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,mBAAmB,EACnB,wBAAwB,EACxB,KAAK,OAAO,EACZ,KAAK,cAAc,EACnB,KAAK,iBAAiB,GACvB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,yBAAyB,EACzB,oBAAoB,EACpB,kBAAkB,EAClB,mBAAmB,EACnB,kBAAkB,EAClB,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACrB,KAAK,qBAAqB,EAC1B,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,GAC5B,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,sBAAsB,EACtB,6BAA6B,EAC7B,+BAA+B,EAC/B,sBAAsB,EACtB,KAAK,wBAAwB,GAC9B,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EACL,sBAAsB,EACtB,mBAAmB,EACnB,8BAA8B,EAC9B,gBAAgB,EAChB,mBAAmB,EACnB,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACtB,KAAK,WAAW,EAChB,KAAK,QAAQ,EACb,KAAK,UAAU,EACf,KAAK,kBAAkB,GACxB,MAAM,kBAAkB,CAAC"}
package/dist/index.js CHANGED
@@ -14,6 +14,8 @@ export { wrapFetchWithTwzrdGate } from "./wrap-fetch.js";
14
14
  export { evaluate_x402_resource, } from "./evaluate.js";
15
15
  export { withTwzrdGuard } from "./with-guard.js";
16
16
  export { installTwzrdAutoGate, uninstallTwzrdAutoGate, isTwzrdAutoGateDisabled, } from "./auto-gate.js";
17
+ export { TWZRD_TRUST_GATE_BLOCK_WASH, TWZRD_TRUST_GATE_BLOCK_CAN_SPEND, TWZRD_TRUST_GATE_BLOCK_DECISION, toTrustGateBlockReason, } from "./trust-gate-reason.js";
18
+ export { AUTOGATE_BLOCK_PROOF_SCHEMA, buildAutogateBlockProof, } from "./block-proof.js";
17
19
  export { safeFetch, runAgentcashFetch, main as safeFetchMain, } from "./safe-fetch.js";
18
20
  export { installTwzrdX402ClientHook, twzrdBeforePaymentCreation, } from "./x402-client-hook.js";
19
21
  export { runGateAdoptionProof, main as adoptionProofMain, ADOPTION_TRANSCRIPT_SCHEMA, ADOPTION_PROOF_SELLER, ADOPTION_PROOF_NETWORK, ADOPTION_PROOF_RESOURCE, } from "./adoption-proof.js";
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,qFAAqF;AACrF,qFAAqF;AACrF,uFAAuF;AACvF,qFAAqF;AACrF,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,WAAW,EAAkB,MAAM,WAAW,CAAC;AACzE,OAAO,EAAE,aAAa,EAAgC,MAAM,aAAa,CAAC;AAC1E,OAAO,EACL,qBAAqB,EACrB,mBAAmB,EACnB,cAAc,EACd,mBAAmB,GAEpB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,qBAAqB,EAAE,wBAAwB,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAChH,OAAO,EACL,eAAe,EACf,wBAAwB,EACxB,YAAY,GAKb,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,iBAAiB,EACjB,sBAAsB,GAIvB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EACL,sBAAsB,GAGvB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,cAAc,EAA0B,MAAM,iBAAiB,CAAC;AACzE,OAAO,EACL,oBAAoB,EACpB,sBAAsB,EACtB,uBAAuB,GAOxB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,SAAS,EACT,iBAAiB,EACjB,IAAI,IAAI,aAAa,GAGtB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,0BAA0B,EAC1B,0BAA0B,GAO3B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,oBAAoB,EACpB,IAAI,IAAI,iBAAiB,EACzB,0BAA0B,EAC1B,qBAAqB,EACrB,sBAAsB,EACtB,uBAAuB,GAMxB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,UAAU,EACV,gBAAgB,GAIjB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,wBAAwB,GAGzB,MAAM,gBAAgB,CAAC;AAexB,uEAAuE;AACvE,OAAO,EACL,aAAa,EACb,UAAU,EACV,UAAU,EACV,kBAAkB,GAGnB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,oBAAoB,EACpB,sBAAsB,EACtB,yBAAyB,EACzB,0BAA0B,EAC1B,gBAAgB,EAChB,aAAa,EACb,YAAY,EACZ,uBAAuB,EACvB,uBAAuB,GAQxB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,uBAAuB,EACvB,cAAc,EACd,cAAc,GAOf,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,mBAAmB,EACnB,wBAAwB,GAIzB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,yBAAyB,EACzB,oBAAoB,EACpB,kBAAkB,EAClB,mBAAmB,EACnB,kBAAkB,GAMnB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,sBAAsB,EACtB,6BAA6B,EAC7B,+BAA+B,EAC/B,sBAAsB,GAEvB,MAAM,mBAAmB,CAAC;AAC3B,wEAAwE;AACxE,yFAAyF;AACzF,OAAO,EACL,sBAAsB,EACtB,mBAAmB,EACnB,8BAA8B,EAC9B,gBAAgB,EAChB,mBAAmB,GAQpB,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,qFAAqF;AACrF,qFAAqF;AACrF,uFAAuF;AACvF,qFAAqF;AACrF,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,WAAW,EAAkB,MAAM,WAAW,CAAC;AACzE,OAAO,EAAE,aAAa,EAAgC,MAAM,aAAa,CAAC;AAC1E,OAAO,EACL,qBAAqB,EACrB,mBAAmB,EACnB,cAAc,EACd,mBAAmB,GAEpB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,qBAAqB,EAAE,wBAAwB,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAChH,OAAO,EACL,eAAe,EACf,wBAAwB,EACxB,YAAY,GAKb,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,iBAAiB,EACjB,sBAAsB,GAIvB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EACL,sBAAsB,GAGvB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,cAAc,EAA0B,MAAM,iBAAiB,CAAC;AACzE,OAAO,EACL,oBAAoB,EACpB,sBAAsB,EACtB,uBAAuB,GAOxB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,2BAA2B,EAC3B,gCAAgC,EAChC,+BAA+B,EAC/B,sBAAsB,GACvB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,2BAA2B,EAC3B,uBAAuB,GAGxB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,SAAS,EACT,iBAAiB,EACjB,IAAI,IAAI,aAAa,GAGtB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,0BAA0B,EAC1B,0BAA0B,GAO3B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,oBAAoB,EACpB,IAAI,IAAI,iBAAiB,EACzB,0BAA0B,EAC1B,qBAAqB,EACrB,sBAAsB,EACtB,uBAAuB,GAMxB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,UAAU,EACV,gBAAgB,GAIjB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,wBAAwB,GAGzB,MAAM,gBAAgB,CAAC;AAexB,uEAAuE;AACvE,OAAO,EACL,aAAa,EACb,UAAU,EACV,UAAU,EACV,kBAAkB,GAGnB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,oBAAoB,EACpB,sBAAsB,EACtB,yBAAyB,EACzB,0BAA0B,EAC1B,gBAAgB,EAChB,aAAa,EACb,YAAY,EACZ,uBAAuB,EACvB,uBAAuB,GAQxB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,uBAAuB,EACvB,cAAc,EACd,cAAc,GAOf,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,mBAAmB,EACnB,wBAAwB,GAIzB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,yBAAyB,EACzB,oBAAoB,EACpB,kBAAkB,EAClB,mBAAmB,EACnB,kBAAkB,GAMnB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,sBAAsB,EACtB,6BAA6B,EAC7B,+BAA+B,EAC/B,sBAAsB,GAEvB,MAAM,mBAAmB,CAAC;AAC3B,wEAAwE;AACxE,yFAAyF;AACzF,OAAO,EACL,sBAAsB,EACtB,mBAAmB,EACnB,8BAA8B,EAC9B,gBAAgB,EAChB,mBAAmB,GAQpB,MAAM,kBAAkB,CAAC"}
@@ -21,6 +21,7 @@
21
21
  * Never wrap agentcash fetch with withTwzrdGuard — that is too late.
22
22
  * Do not market this CLI as a secure AgentCash firewall.
23
23
  */
24
+ import { type DeliveryCaptureResult } from "./delivery-capture.js";
24
25
  import type { TwzrdApprovalResult } from "./types.js";
25
26
  export type SafeFetchOptions = {
26
27
  url: string;
@@ -43,6 +44,11 @@ export type SafeFetchOptions = {
43
44
  agentcashPackage?: string;
44
45
  /** Extra args after `fetch <url>` */
45
46
  agentcashExtraArgs?: string[];
47
+ /**
48
+ * Post-settle delivery observation capture (Phase 2 delivery-proof).
49
+ * Default true; also disabled by TWZRD_DELIVERY_CAPTURE=0|false.
50
+ */
51
+ deliveryCapture?: boolean;
46
52
  /** Inject fetch for tests */
47
53
  fetch?: typeof fetch;
48
54
  /** Inject payer runner for tests */
@@ -107,6 +113,12 @@ export type SafeFetchResult = {
107
113
  targetRequestCount: number;
108
114
  /** Security classification of this adapter */
109
115
  cliSecurityClassification: "advisory_precheck";
116
+ /**
117
+ * Post-settle delivery observation (paid phase only). posted=false when
118
+ * capture is disabled or the collector endpoint is unreachable; the
119
+ * observation itself is still returned for local transcripts.
120
+ */
121
+ deliveryCapture?: DeliveryCaptureResult;
110
122
  };
111
123
  export declare function runAgentcashFetch(args: {
112
124
  url: string;
@@ -1 +1 @@
1
- {"version":3,"file":"safe-fetch.d.ts","sourceRoot":"","sources":["../src/safe-fetch.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAeH,OAAO,KAAK,EAAE,mBAAmB,EAA2B,MAAM,YAAY,CAAC;AAE/E,MAAM,MAAM,gBAAgB,GAAG;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,yDAAyD;IACzD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,sBAAsB,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAC;IAC9C,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,4DAA4D;IAC5D,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,gFAAgF;IAChF,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,2DAA2D;IAC3D,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,qCAAqC;IACrC,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9B,6BAA6B;IAC7B,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;IACrB,oCAAoC;IACpC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE;QAChB,GAAG,EAAE,MAAM,CAAC;QACZ,MAAM,EAAE,MAAM,CAAC;QACf,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,EAAE,CAAC;QAClB,cAAc,CAAC,EAAE,MAAM,CAAC;KACzB,KAAK,OAAO,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACpE,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;CACrE,CAAC;AAEF,6EAA6E;AAC7E,MAAM,MAAM,0BAA0B,GAAG;IACvC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,EAAE,EAAE,OAAO,CAAC;IACZ,KAAK,EAAE,aAAa,GAAG,SAAS,GAAG,iBAAiB,GAAG,MAAM,GAAG,cAAc,GAAG,OAAO,CAAC;IACzF,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,mBAAmB,CAAC;IAC/B,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,KAAK,CAAC,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAC7D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;;;OAGG;IACH,iBAAiB,CAAC,EAAE,0BAA0B,CAAC;IAC/C;;;OAGG;IACH,iBAAiB,CAAC,EAAE,0BAA0B,CAAC;IAC/C;;;OAGG;IACH,yCAAyC,EAAE,OAAO,CAAC;IACnD;;;OAGG;IACH,kBAAkB,EAAE,MAAM,CAAC;IAC3B,8CAA8C;IAC9C,yBAAyB,EAAE,mBAAmB,CAAC;CAChD,CAAC;AAsBF,wBAAsB,iBAAiB,CAAC,IAAI,EAAE;IAC5C,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB,GAAG,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAkDhE;AAED;;GAEG;AACH,wBAAsB,SAAS,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,eAAe,CAAC,CAwRhF;AA4CD,wBAAsB,IAAI,CAAC,IAAI,GAAE,MAAM,EAA0B,GAAG,OAAO,CAAC,MAAM,CAAC,CA2ElF"}
1
+ {"version":3,"file":"safe-fetch.d.ts","sourceRoot":"","sources":["../src/safe-fetch.ts"],"names":[],"mappings":"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"}
@@ -23,6 +23,7 @@
23
23
  */
24
24
  import { spawn } from "node:child_process";
25
25
  import { resolveConfig } from "./config.js";
26
+ import { captureDeliveryObservation, } from "./delivery-capture.js";
26
27
  import { amountBucket, classifyNetwork, } from "./network.js";
27
28
  import { payToFromRequirements, pickRequirements, priceUsdcFromAmountMicro, } from "./payto.js";
28
29
  import { twzrdApprovePayment } from "./policy.js";
@@ -287,6 +288,7 @@ export async function safeFetch(opts) {
287
288
  agentcashPackage: opts.agentcashPackage,
288
289
  extraArgs: opts.agentcashExtraArgs,
289
290
  }));
291
+ const payerStartedAt = Date.now();
290
292
  const payer = await runPayer({
291
293
  url: opts.url,
292
294
  method,
@@ -294,6 +296,7 @@ export async function safeFetch(opts) {
294
296
  headers: opts.headers ?? [],
295
297
  paymentNetwork: opts.paymentNetwork,
296
298
  });
299
+ const payerLatencyMs = Date.now() - payerStartedAt;
297
300
  emit(opts, eventOrder, "payer_invoke_done", {
298
301
  exitCode: payer.exitCode,
299
302
  stdout_len: payer.stdout.length,
@@ -330,6 +333,26 @@ export async function safeFetch(opts) {
330
333
  requirement_scored_matches_requirement_signed: false,
331
334
  note: "AgentCash CLI re-fetches the target; challenge may differ from probe",
332
335
  });
336
+ // Post-settle delivery observation (Phase 2 delivery-proof): passive,
337
+ // fire-and-forget, never throws into the pay path. Verdict is against the
338
+ // merchant's own advertised output from the 402 challenge.
339
+ const deliveryCapture = await captureDeliveryObservation({
340
+ merchantWallet: payTo,
341
+ httpStatus: 200,
342
+ resourceBody,
343
+ challengeBody: body,
344
+ payerOutput: resourceBody,
345
+ latencyMs: payerLatencyMs,
346
+ resource: resource ?? opts.url,
347
+ network,
348
+ enabled: opts.deliveryCapture,
349
+ }, cfg);
350
+ emit(opts, eventOrder, "delivery_observation", {
351
+ posted: deliveryCapture.posted,
352
+ schema_match: deliveryCapture.observation.schema_match,
353
+ check_level: deliveryCapture.observation.check_level,
354
+ has_settlement_tx: deliveryCapture.observation.settlement_tx != null,
355
+ });
333
356
  return {
334
357
  ok: true,
335
358
  phase: "paid",
@@ -348,6 +371,7 @@ export async function safeFetch(opts) {
348
371
  requirementScoredMatchesRequirementSigned: false,
349
372
  targetRequestCount: 2,
350
373
  cliSecurityClassification: "advisory_precheck",
374
+ deliveryCapture,
351
375
  };
352
376
  }
353
377
  // --- CLI ---
@@ -1 +1 @@
1
- {"version":3,"file":"safe-fetch.js","sourceRoot":"","sources":["../src/safe-fetch.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"safe-fetch.js","sourceRoot":"","sources":["../src/safe-fetch.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAE3C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EACL,0BAA0B,GAE3B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,YAAY,EACZ,eAAe,GAChB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,qBAAqB,EACrB,gBAAgB,EAChB,wBAAwB,GACzB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AA+FlD,SAAS,IAAI,CACX,IAAsB,EACtB,KAAe,EACf,KAAa,EACb,MAAgC;IAEhC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClB,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AAChC,CAAC;AAED,SAAS,gBAAgB,CAAC,OAA6B;IACrD,MAAM,GAAG,GAA2B,EAAE,CAAC;IACvC,KAAK,MAAM,CAAC,IAAI,OAAO,IAAI,EAAE,EAAE,CAAC;QAC9B,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACzB,IAAI,CAAC,IAAI,CAAC;YAAE,SAAS;QACrB,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACpD,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,IAQvC;IACC,MAAM,GAAG,GAAG,IAAI,CAAC,gBAAgB,IAAI,kBAAkB,CAAC;IACxD,MAAM,OAAO,GAAG;QACd,IAAI;QACJ,GAAG;QACH,OAAO;QACP,IAAI,CAAC,GAAG;QACR,IAAI;QACJ,UAAU;QACV,MAAM;QACN,IAAI;QACJ,IAAI,CAAC,MAAM;KACZ,CAAC;IACF,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC;QACtB,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QAC7B,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IACxB,CAAC;IACD,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;QACxB,OAAO,CAAC,IAAI,CAAC,mBAAmB,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;IACzD,CAAC;IACD,IAAI,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,CAAC;QAC3B,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC;IAClC,CAAC;IAED,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE;YAClC,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;YACjC,GAAG,EAAE,OAAO,CAAC,GAAG;SACjB,CAAC,CAAC;QACH,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE;YAC7B,MAAM,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC;QACtB,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE;YAC7B,MAAM,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC;QACtB,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YACzB,OAAO,CAAC,EAAE,QAAQ,EAAE,IAAI,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;YACxB,OAAO,CAAC;gBACN,QAAQ,EAAE,CAAC;gBACX,MAAM;gBACN,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC;aAC5C,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,IAAsB;IACpD,MAAM,UAAU,GAAa,EAAE,CAAC;IAChC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,IAAI,UAAU,CAAC,KAAK,CAAC;IAC/C,MAAM,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;IACpD,MAAM,OAAO,GAAG,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC/C,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC;QAC9E,OAAO,CAAC,cAAc,CAAC,GAAG,kBAAkB,CAAC;IAC/C,CAAC;IAED,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,mBAAmB,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC;IAEvE,IAAI,OAAiB,CAAC;IACtB,IAAI,CAAC;QACH,OAAO,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE;YAChC,MAAM;YACN,OAAO;YACP,IAAI,EAAE,MAAM,KAAK,KAAK,IAAI,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI;SACpE,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,GAAG,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACvD,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,mBAAmB,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;QAC5D,OAAO;YACL,EAAE,EAAE,KAAK;YACT,KAAK,EAAE,OAAO;YACd,aAAa,EAAE,CAAC;YAChB,UAAU;YACV,KAAK,EAAE,GAAG;YACV,yCAAyC,EAAE,KAAK;YAChD,kBAAkB,EAAE,CAAC;YACrB,yBAAyB,EAAE,mBAAmB;SAC/C,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,cAAc,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAEnE,IAAI,OAAO,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;QAC3B,IAAI,YAAqB,CAAC;QAC1B,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;QACrD,IAAI,CAAC;YACH,YAAY,GAAG,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC;gBAChC,CAAC,CAAC,MAAM,OAAO,CAAC,IAAI,EAAE;gBACtB,CAAC,CAAC,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;QAC3B,CAAC;QAAC,MAAM,CAAC;YACP,YAAY,GAAG,IAAI,CAAC;QACtB,CAAC;QACD,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,qBAAqB,CAAC,CAAC;QAC9C,OAAO;YACL,EAAE,EAAE,OAAO,CAAC,EAAE;YACd,KAAK,EAAE,aAAa;YACpB,aAAa,EAAE,OAAO,CAAC,MAAM;YAC7B,UAAU;YACV,cAAc,EAAE,OAAO,CAAC,MAAM;YAC9B,YAAY;YACZ,yCAAyC,EAAE,KAAK;YAChD,kBAAkB,EAAE,CAAC;YACrB,yBAAyB,EAAE,mBAAmB;SAC/C,CAAC;IACJ,CAAC;IAED,IAAI,IAAI,GAA4B,EAAE,CAAC;IACvC,IAAI,CAAC;QACH,IAAI,GAAG,CAAC,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,CAA4B,CAAC;IACnE,CAAC;IAAC,MAAM,CAAC;QACP,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,eAAe,CAAC,CAAC;QACxC,OAAO;YACL,EAAE,EAAE,KAAK;YACT,KAAK,EAAE,OAAO;YACd,aAAa,EAAE,GAAG;YAClB,UAAU;YACV,KAAK,EAAE,oBAAoB;YAC3B,yCAAyC,EAAE,KAAK;YAChD,kBAAkB,EAAE,CAAC;YACrB,yBAAyB,EAAE,mBAAmB;SAC/C,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC,OAAqD,CAAC,CAAC;IAC3F,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;IACtE,MAAM,SAAS,GAAG,wBAAwB,CAAC,WAAW,CAAC,CAAC;IACxD,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;IAC9B,MAAM,MAAM,GAAG,eAAe,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAE/C,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,qBAAqB,EAAE;QAC5C,KAAK;QACL,OAAO;QACP,WAAW;QACX,SAAS;QACT,WAAW,EAAE,MAAM,CAAC,IAAI;QACxB,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;QACzC,SAAS,EAAE,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,MAAM;KACvC,CAAC,CAAC;IAEH,MAAM,iBAAiB,GAA+B;QACpD,KAAK;QACL,OAAO;QACP,WAAW;QACX,KAAK,EAAE,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;QAChE,QAAQ,EAAE,QAAQ,IAAI,IAAI,CAAC,GAAG;KAC/B,CAAC;IAEF,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,wBAAwB,CAAC,CAAC;QACjD,OAAO;YACL,EAAE,EAAE,KAAK;YACT,KAAK,EAAE,SAAS;YAChB,aAAa,EAAE,GAAG;YAClB,UAAU;YACV,KAAK,EAAE,wBAAwB;YAC/B,OAAO;YACP,WAAW;YACX,SAAS;YACT,iBAAiB;YACjB,yCAAyC,EAAE,KAAK;YAChD,kBAAkB,EAAE,CAAC;YACrB,yBAAyB,EAAE,mBAAmB;SAC/C,CAAC;IACJ,CAAC;IAED,MAAM,GAAG,GAAG,aAAa,CAAC;QACxB,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,cAAc,EAAE,IAAI,CAAC,cAAc;QACnC,sBAAsB,EAAE,IAAI,CAAC,sBAAsB;QACnD,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;QACzC,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;QACzC,KAAK,EAAE,OAAO;KACf,CAAC,CAAC;IAEH,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,uBAAuB,EAAE;QAC9C,KAAK;QACL,OAAO;QACP,aAAa,EAAE,YAAY,CAAC,WAAW,CAAC;KACzC,CAAC,CAAC;IAEH,MAAM,QAAQ,GAAG,MAAM,mBAAmB,CACxC;QACE,WAAW,EAAE,QAAQ,IAAI,IAAI,CAAC,GAAG;QACjC,KAAK;QACL,SAAS;QACT,WAAW,EAAE,kBAAkB;QAC/B,KAAK,EAAE,OAAO;KACf,EACD,GAAG,CACJ,CAAC;IAEF,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,wBAAwB,EAAE;QAC/C,QAAQ,EAAE,QAAQ,CAAC,QAAQ;QAC3B,OAAO,EAAE,QAAQ,CAAC,OAAO;QACzB,MAAM,EAAE,QAAQ,CAAC,MAAM;QACvB,KAAK,EAAE,QAAQ,CAAC,KAAK;QACrB,YAAY,EAAE,QAAQ,CAAC,YAAY;QACnC,gBAAgB,EAAE,QAAQ,CAAC,gBAAgB;QAC3C,OAAO,EAAE,QAAQ,CAAC,OAAO;KAC1B,CAAC,CAAC;IAEH,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;QACvB,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,iBAAiB,EAAE,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QACvE,OAAO;YACL,EAAE,EAAE,KAAK;YACT,KAAK,EAAE,SAAS;YAChB,aAAa,EAAE,GAAG;YAClB,KAAK;YACL,OAAO;YACP,WAAW;YACX,SAAS;YACT,QAAQ;YACR,UAAU;YACV,KAAK,EAAE,QAAQ,CAAC,MAAM;YACtB,iBAAiB;YACjB,yCAAyC;YACzC,yCAAyC,EAAE,KAAK;YAChD,kBAAkB,EAAE,CAAC;YACrB,yBAAyB,EAAE,mBAAmB;SAC/C,CAAC;IACJ,CAAC;IAED,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,aAAa,CAAC;IAC9C,IAAI,GAAG,EAAE,CAAC;QACR,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,yBAAyB,CAAC,CAAC;QAClD,OAAO;YACL,EAAE,EAAE,IAAI;YACR,KAAK,EAAE,iBAAiB;YACxB,aAAa,EAAE,GAAG;YAClB,KAAK;YACL,OAAO;YACP,WAAW;YACX,SAAS;YACT,QAAQ;YACR,UAAU;YACV,iBAAiB;YACjB,yCAAyC,EAAE,KAAK;YAChD,kBAAkB,EAAE,CAAC;YACrB,yBAAyB,EAAE,mBAAmB;SAC/C,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,oBAAoB,EAAE;QAC3C,MAAM,EAAE,WAAW;QACnB,cAAc,EAAE,IAAI,CAAC,cAAc;KACpC,CAAC,CAAC;IAEH,MAAM,QAAQ,GACZ,IAAI,CAAC,QAAQ;QACb,CAAC,CAAC,CAAC,EAAE,EAAE,CACL,iBAAiB,CAAC;YAChB,GAAG,EAAE,CAAC,CAAC,GAAG;YACV,MAAM,EAAE,CAAC,CAAC,MAAM;YAChB,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,cAAc,EAAE,CAAC,CAAC,cAAc;YAChC,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;YACvC,SAAS,EAAE,IAAI,CAAC,kBAAkB;SACnC,CAAC,CAAC,CAAC;IAER,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAClC,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC;QAC3B,GAAG,EAAE,IAAI,CAAC,GAAG;QACb,MAAM;QACN,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,EAAE;QAC3B,cAAc,EAAE,IAAI,CAAC,cAAc;KACpC,CAAC,CAAC;IACH,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,cAAc,CAAC;IAEnD,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,mBAAmB,EAAE;QAC1C,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM;KAChC,CAAC,CAAC;IAEH,IAAI,KAAK,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO;YACL,EAAE,EAAE,KAAK;YACT,KAAK,EAAE,cAAc;YACrB,aAAa,EAAE,GAAG;YAClB,KAAK;YACL,OAAO;YACP,WAAW;YACX,SAAS;YACT,QAAQ;YACR,UAAU;YACV,KAAK;YACL,KAAK,EAAE,kBAAkB,KAAK,CAAC,QAAQ,EAAE;YACzC,iBAAiB;YACjB,oEAAoE;YACpE,yCAAyC,EAAE,KAAK;YAChD,kBAAkB,EAAE,CAAC;YACrB,yBAAyB,EAAE,mBAAmB;SAC/C,CAAC;IACJ,CAAC;IAED,IAAI,YAAqB,CAAC;IAC1B,IAAI,CAAC;QACH,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC1C,CAAC;IAAC,MAAM,CAAC;QACP,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC;IAC9B,CAAC;IAED,8EAA8E;IAC9E,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,4BAA4B,EAAE;QACnD,6CAA6C,EAAE,KAAK;QACpD,IAAI,EAAE,sEAAsE;KAC7E,CAAC,CAAC;IAEH,sEAAsE;IACtE,0EAA0E;IAC1E,2DAA2D;IAC3D,MAAM,eAAe,GAAG,MAAM,0BAA0B,CACtD;QACE,cAAc,EAAE,KAAK;QACrB,UAAU,EAAE,GAAG;QACf,YAAY;QACZ,aAAa,EAAE,IAAI;QACnB,WAAW,EAAE,YAAY;QACzB,SAAS,EAAE,cAAc;QACzB,QAAQ,EAAE,QAAQ,IAAI,IAAI,CAAC,GAAG;QAC9B,OAAO;QACP,OAAO,EAAE,IAAI,CAAC,eAAe;KAC9B,EACD,GAAG,CACJ,CAAC;IACF,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,sBAAsB,EAAE;QAC7C,MAAM,EAAE,eAAe,CAAC,MAAM;QAC9B,YAAY,EAAE,eAAe,CAAC,WAAW,CAAC,YAAY;QACtD,WAAW,EAAE,eAAe,CAAC,WAAW,CAAC,WAAW;QACpD,iBAAiB,EAAE,eAAe,CAAC,WAAW,CAAC,aAAa,IAAI,IAAI;KACrE,CAAC,CAAC;IAEH,OAAO;QACL,EAAE,EAAE,IAAI;QACR,KAAK,EAAE,MAAM;QACb,aAAa,EAAE,GAAG;QAClB,KAAK;QACL,OAAO;QACP,WAAW;QACX,SAAS;QACT,QAAQ;QACR,UAAU;QACV,KAAK;QACL,cAAc,EAAE,GAAG;QACnB,YAAY;QACZ,iBAAiB;QACjB,iBAAiB,EAAE,SAAS;QAC5B,yCAAyC,EAAE,KAAK;QAChD,kBAAkB,EAAE,CAAC;QACrB,yBAAyB,EAAE,mBAAmB;QAC9C,eAAe;KAChB,CAAC;AACJ,CAAC;AAED,cAAc;AAEd,SAAS,SAAS;IAChB,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoCb,CAAC,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,OAAiB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAC/D,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACxE,SAAS,EAAE,CAAC;QACZ,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAChE,CAAC;IAED,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;IACtE,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,OAAO,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;QACpC,SAAS,EAAE,CAAC;QACZ,OAAO,CAAC,CAAC;IACX,CAAC;IAED,MAAM,OAAO,GAAG,CAAC,IAAY,EAAsB,EAAE;QACnD,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC7B,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM;YAAE,OAAO,SAAS,CAAC;QACpD,OAAO,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACrB,CAAC,CAAC;IACF,MAAM,GAAG,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAElD,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,UAAU,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YAChE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAE,CAAC,CAAC;YAC3B,CAAC,EAAE,CAAC;QACN,CAAC;IACH,CAAC;IAED,MAAM,OAAO,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC9B,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC;QAC7B,GAAG;QACH,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,UAAU,CAAC,IAAI,KAAK;QACrD,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC;QACxC,OAAO;QACP,cAAc,EAAE,OAAO,CAAC,mBAAmB,CAAC;QAC5C,cAAc,EAAE,GAAG,CAAC,qBAAqB,CAAC;QAC1C,sBAAsB,EAAG,OAAO,CAAC,4BAA4B,CAG/C;QACd,QAAQ,EAAE,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;QAC9E,iBAAiB,EAAE,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;QAC9D,MAAM,EAAE,GAAG,CAAC,WAAW,CAAC;QACxB,OAAO,EAAE,OAAO;YACd,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;gBAChB,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACrD,OAAO,CAAC,KAAK,CAAC,sBAAsB,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC;YACnD,CAAC;KACN,CAAC,CAAC;IAEH,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC/C,CAAC;SAAM,IAAI,MAAM,CAAC,KAAK,KAAK,MAAM,IAAI,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC;QAC3D,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACnC,CAAC;SAAM,IAAI,MAAM,CAAC,KAAK,KAAK,aAAa,EAAE,CAAC;QAC1C,OAAO,CAAC,GAAG,CACT,OAAO,MAAM,CAAC,YAAY,KAAK,QAAQ;YACrC,CAAC,CAAC,MAAM,CAAC,YAAY;YACrB,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,CACjD,CAAC;IACJ,CAAC;SAAM,IAAI,MAAM,CAAC,KAAK,KAAK,iBAAiB,EAAE,CAAC;QAC9C,OAAO,CAAC,KAAK,CACX,4CAA4C,MAAM,CAAC,KAAK,WAAW,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,CAC7F,CAAC;IACJ,CAAC;SAAM,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;QACtB,OAAO,CAAC,KAAK,CACX,sBAAsB,MAAM,CAAC,KAAK,KAAK,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,QAAQ,EAAE,MAAM,IAAI,QAAQ,EAAE,CAC7F,CAAC;IACJ,CAAC;IAED,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS;QAAE,OAAO,CAAC,CAAC;IACzC,IAAI,MAAM,CAAC,KAAK,KAAK,cAAc,IAAI,MAAM,CAAC,KAAK,KAAK,OAAO;QAAE,OAAO,CAAC,CAAC;IAC1E,IAAI,MAAM,CAAC,KAAK,KAAK,aAAa,IAAI,CAAC,MAAM,CAAC,EAAE;QAAE,OAAO,CAAC,CAAC;IAC3D,OAAO,CAAC,CAAC;AACX,CAAC;AAED,uCAAuC;AACvC,MAAM,MAAM,GACV,OAAO,OAAO,KAAK,WAAW;IAC9B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IACf,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC;QACxC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC;QACzC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC,CAAC;AAElD,IAAI,MAAM,EAAE,CAAC;IACX,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC5C,CAAC"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Stable public reason codes for AutoGate intercept transcripts and logs.
3
+ *
4
+ * Internal policy still uses `twzrd_wash_flagged` etc. (tests + wire history).
5
+ * Map to these strings when emitting operator-facing proof artifacts so docs
6
+ * and cold-agent guides stay consistent.
7
+ */
8
+ /** Canonical wash-refuse code for block-proof transcripts. */
9
+ export declare const TWZRD_TRUST_GATE_BLOCK_WASH = "TWZRD_TRUST_GATE_BLOCK: wash_flagged";
10
+ export declare const TWZRD_TRUST_GATE_BLOCK_CAN_SPEND = "TWZRD_TRUST_GATE_BLOCK: can_spend_false";
11
+ export declare const TWZRD_TRUST_GATE_BLOCK_DECISION = "TWZRD_TRUST_GATE_BLOCK: decision_block";
12
+ /**
13
+ * Map an internal `approval.reason` (or hook abort reason fragment) to a stable
14
+ * public block code. Unknown reasons are namespaced, not dropped.
15
+ */
16
+ export declare function toTrustGateBlockReason(internalReason: string): string;
17
+ //# sourceMappingURL=trust-gate-reason.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trust-gate-reason.d.ts","sourceRoot":"","sources":["../src/trust-gate-reason.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,8DAA8D;AAC9D,eAAO,MAAM,2BAA2B,yCAAyC,CAAC;AAElF,eAAO,MAAM,gCAAgC,4CACF,CAAC;AAE5C,eAAO,MAAM,+BAA+B,2CACF,CAAC;AAE3C;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM,CAsBrE"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Stable public reason codes for AutoGate intercept transcripts and logs.
3
+ *
4
+ * Internal policy still uses `twzrd_wash_flagged` etc. (tests + wire history).
5
+ * Map to these strings when emitting operator-facing proof artifacts so docs
6
+ * and cold-agent guides stay consistent.
7
+ */
8
+ /** Canonical wash-refuse code for block-proof transcripts. */
9
+ export const TWZRD_TRUST_GATE_BLOCK_WASH = "TWZRD_TRUST_GATE_BLOCK: wash_flagged";
10
+ export const TWZRD_TRUST_GATE_BLOCK_CAN_SPEND = "TWZRD_TRUST_GATE_BLOCK: can_spend_false";
11
+ export const TWZRD_TRUST_GATE_BLOCK_DECISION = "TWZRD_TRUST_GATE_BLOCK: decision_block";
12
+ /**
13
+ * Map an internal `approval.reason` (or hook abort reason fragment) to a stable
14
+ * public block code. Unknown reasons are namespaced, not dropped.
15
+ */
16
+ export function toTrustGateBlockReason(internalReason) {
17
+ const r = (internalReason || "").trim();
18
+ // Strip optional `[twzrd] ` prefix from x402 hook abort strings.
19
+ const core = r.replace(/^\[twzrd\]\s*/i, "").split(/\s+payTo=/)[0] ?? r;
20
+ if (core === "twzrd_wash_flagged" ||
21
+ core.startsWith("twzrd_wash_flagged_above_cap") ||
22
+ core.startsWith("twzrd_wash_flagged_")) {
23
+ return TWZRD_TRUST_GATE_BLOCK_WASH;
24
+ }
25
+ if (core === "twzrd_can_spend_false") {
26
+ return TWZRD_TRUST_GATE_BLOCK_CAN_SPEND;
27
+ }
28
+ if (core === "twzrd_decision_block" || core.startsWith("twzrd_decision_block")) {
29
+ return TWZRD_TRUST_GATE_BLOCK_DECISION;
30
+ }
31
+ if (core.startsWith("TWZRD_TRUST_GATE_BLOCK:")) {
32
+ return core;
33
+ }
34
+ return `TWZRD_TRUST_GATE_BLOCK: ${core || "unknown"}`;
35
+ }
36
+ //# sourceMappingURL=trust-gate-reason.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trust-gate-reason.js","sourceRoot":"","sources":["../src/trust-gate-reason.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,8DAA8D;AAC9D,MAAM,CAAC,MAAM,2BAA2B,GAAG,sCAAsC,CAAC;AAElF,MAAM,CAAC,MAAM,gCAAgC,GAC3C,yCAAyC,CAAC;AAE5C,MAAM,CAAC,MAAM,+BAA+B,GAC1C,wCAAwC,CAAC;AAE3C;;;GAGG;AACH,MAAM,UAAU,sBAAsB,CAAC,cAAsB;IAC3D,MAAM,CAAC,GAAG,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACxC,iEAAiE;IACjE,MAAM,IAAI,GAAG,CAAC,CAAC,OAAO,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAExE,IACE,IAAI,KAAK,oBAAoB;QAC7B,IAAI,CAAC,UAAU,CAAC,8BAA8B,CAAC;QAC/C,IAAI,CAAC,UAAU,CAAC,qBAAqB,CAAC,EACtC,CAAC;QACD,OAAO,2BAA2B,CAAC;IACrC,CAAC;IACD,IAAI,IAAI,KAAK,uBAAuB,EAAE,CAAC;QACrC,OAAO,gCAAgC,CAAC;IAC1C,CAAC;IACD,IAAI,IAAI,KAAK,sBAAsB,IAAI,IAAI,CAAC,UAAU,CAAC,sBAAsB,CAAC,EAAE,CAAC;QAC/E,OAAO,+BAA+B,CAAC;IACzC,CAAC;IACD,IAAI,IAAI,CAAC,UAAU,CAAC,yBAAyB,CAAC,EAAE,CAAC;QAC/C,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,2BAA2B,IAAI,IAAI,SAAS,EAAE,CAAC;AACxD,CAAC"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "twzrd-x402-gate",
3
- "version": "0.8.4",
4
- "description": "Core: buyer-side x402 trust gate. Free TWZRD preflight (ReadinessCard) before signing USDC to any merchant, with optional $0.001 paid trust escalate on warn — blocking spend on bad intel, no human in the loop. Optional: createTwzrdSettleGuard for resource servers to apply merchant policy on the payer before settle+serve. installTwzrdAutoGate is the canonical default-on entry across fetch payWrap, x402 client (onBeforePaymentCreation), and MPP onChallenge. Fail-closed by default — set TWZRD_FAIL_OPEN=true for outage allow; kill switch TWZRD_GATE_ENABLED=false or TWZRD_AUTO_GATE=0. Always stamps X-Twzrd-Caller for seat metrics.",
3
+ "version": "0.8.6",
4
+ "description": "Core: buyer-side x402 trust gate. Free TWZRD preflight (ReadinessCard) before signing USDC to any merchant, with optional $0.001 paid trust escalate on warn \u2014 blocking spend on bad intel, no human in the loop. Optional: createTwzrdSettleGuard for resource servers to apply merchant policy on the payer before settle+serve. installTwzrdAutoGate is the canonical default-on entry across fetch payWrap, x402 client (onBeforePaymentCreation), and MPP onChallenge. Fail-closed by default \u2014 set TWZRD_FAIL_OPEN=true for outage allow; kill switch TWZRD_GATE_ENABLED=false or TWZRD_AUTO_GATE=0. Always stamps X-Twzrd-Caller for seat metrics.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
7
7
  "types": "./dist/index.d.ts",
@@ -28,13 +28,14 @@
28
28
  "build": "tsc",
29
29
  "prepublishOnly": "tsc",
30
30
  "typecheck": "tsc --noEmit -p tsconfig.check.json",
31
- "test": "tsx test/version-identity.test.ts && tsx test/policy.test.ts && tsx test/wrap-fetch.test.ts && tsx test/mcp-hook.test.ts && tsx test/attribution.test.ts && tsx test/auto-receipt.test.ts && tsx test/quick.test.ts && tsx test/sponsored.test.ts && tsx test/escalation.test.ts && tsx test/wash-refuse.test.ts && tsx test/auto-gate.test.ts && tsx test/network.test.ts && tsx test/safe-fetch.test.ts && tsx test/payto-prefer.test.ts && tsx test/challenge-swap.test.ts && tsx test/x402-client-hook.test.ts && tsx test/hook-single-eval.test.ts && tsx test/run-attribution.test.ts && tsx test/payment-control.test.ts && tsx test/intent-binding.test.ts && tsx test/mpp-hook.test.ts && tsx test/mpp-safety.test.ts && tsx test/payment-control-followup.test.ts && tsx test/payment-control-hardening.test.ts && tsx test/x402-official-compat.test.ts && tsx test/seller-hook.test.ts && tsx test/adoption-proof.test.ts",
31
+ "test": "tsx test/version-identity.test.ts && tsx test/policy.test.ts && tsx test/wrap-fetch.test.ts && tsx test/mcp-hook.test.ts && tsx test/attribution.test.ts && tsx test/auto-receipt.test.ts && tsx test/quick.test.ts && tsx test/sponsored.test.ts && tsx test/escalation.test.ts && tsx test/wash-refuse.test.ts && tsx test/auto-gate.test.ts && tsx test/autogate-intercept.test.ts && tsx test/network.test.ts && tsx test/safe-fetch.test.ts && tsx test/payto-prefer.test.ts && tsx test/challenge-swap.test.ts && tsx test/x402-client-hook.test.ts && tsx test/hook-single-eval.test.ts && tsx test/run-attribution.test.ts && tsx test/payment-control.test.ts && tsx test/intent-binding.test.ts && tsx test/mpp-hook.test.ts && tsx test/mpp-safety.test.ts && tsx test/payment-control-followup.test.ts && tsx test/payment-control-hardening.test.ts && tsx test/x402-official-compat.test.ts && tsx test/seller-hook.test.ts && tsx test/adoption-proof.test.ts && tsx test/delivery-capture.test.ts",
32
32
  "pack-smoke": "node scripts/pack-smoke.mjs",
33
33
  "safe-fetch": "tsx src/safe-fetch.ts",
34
34
  "guard-demo": "tsx examples/agentic-market-gate.ts",
35
35
  "autoreceipt-demo": "tsx examples/auto-receipt.ts --dry-run",
36
36
  "sponsored-demo": "tsx examples/sponsored-payer.ts --dry-run",
37
37
  "wash-dogfood": "tsx examples/wash-refuse-dogfood.ts",
38
+ "autogate-block-proof": "tsx examples/autogate-block-proof.ts",
38
39
  "official-dogfood": "tsx examples/official-x402-dogfood.ts",
39
40
  "adoption-proof": "tsx src/adoption-proof.ts",
40
41
  "demo:buyer-no-spend": "tsx src/adoption-proof.ts -- --integration ops-demo-buyer-no-spend"