twzrd-x402-gate 0.8.5 → 0.8.7
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 +4 -4
- package/bin/twzrd-gate-eval-refuse.js +193 -0
- package/dist/delivery-capture.d.ts +91 -0
- package/dist/delivery-capture.d.ts.map +1 -0
- package/dist/delivery-capture.js +160 -0
- package/dist/delivery-capture.js.map +1 -0
- package/dist/safe-fetch.d.ts +12 -0
- package/dist/safe-fetch.d.ts.map +1 -1
- package/dist/safe-fetch.js +24 -0
- package/dist/safe-fetch.js.map +1 -1
- package/package.json +8 -5
package/README.md
CHANGED
|
@@ -10,7 +10,7 @@ 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.
|
|
13
|
+
npm install twzrd-x402-gate@0.8.6 @x402/core @x402/fetch @x402/svm
|
|
14
14
|
```
|
|
15
15
|
|
|
16
16
|
```typescript
|
|
@@ -49,7 +49,7 @@ transfer on-chain. Wash/sybil edges are primarily discounted in TWZRD scoring, n
|
|
|
49
49
|
revenue refusal.
|
|
50
50
|
|
|
51
51
|
```bash
|
|
52
|
-
npm install twzrd-x402-gate@0.8.
|
|
52
|
+
npm install twzrd-x402-gate@0.8.6
|
|
53
53
|
```
|
|
54
54
|
|
|
55
55
|
```typescript
|
|
@@ -93,7 +93,7 @@ Fixture-backed SVM extract tests live in `test/seller-hook.test.ts` +
|
|
|
93
93
|
Install the published gate and run against wash fixtures:
|
|
94
94
|
|
|
95
95
|
```bash
|
|
96
|
-
npm install twzrd-x402-gate@0.8.
|
|
96
|
+
npm install twzrd-x402-gate@0.8.6
|
|
97
97
|
# from package root after install, or from a checkout:
|
|
98
98
|
npm run wash-dogfood
|
|
99
99
|
```
|
|
@@ -238,7 +238,7 @@ Dogfood (one public live proof path):
|
|
|
238
238
|
## Install
|
|
239
239
|
|
|
240
240
|
```bash
|
|
241
|
-
npm install twzrd-x402-gate@0.8.
|
|
241
|
+
npm install twzrd-x402-gate@0.8.6
|
|
242
242
|
```
|
|
243
243
|
|
|
244
244
|
Current npm truth: `0.8.5` (buyer gate + optional seller settle guard + payer-extract hardening).
|
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Buyer protection loop — refuse transcript (no USDC when block fires).
|
|
4
|
+
*
|
|
5
|
+
* Success (north-star fields):
|
|
6
|
+
* target_url, pay_to, twzrd_decision, twzrd_reason,
|
|
7
|
+
* signer_invocation_count (=0), payment_retry_count (=0)
|
|
8
|
+
*
|
|
9
|
+
* Does NOT increment intel day0.gate_evals (that counter is Path B settle-gate).
|
|
10
|
+
*
|
|
11
|
+
* Usage (after npm install of this package + @x402/* peers):
|
|
12
|
+
* node node_modules/twzrd-x402-gate/bin/twzrd-gate-eval-refuse.js
|
|
13
|
+
*/
|
|
14
|
+
import { createRequire } from "node:module";
|
|
15
|
+
import { dirname, join } from "node:path";
|
|
16
|
+
import { fileURLToPath, pathToFileURL } from "node:url";
|
|
17
|
+
import { existsSync } from "node:fs";
|
|
18
|
+
|
|
19
|
+
const TARGET_URL = "https://three.ws/api/x402/model-check";
|
|
20
|
+
const EXPECT_PAYTO = "wwwwwDxFWRn7grgr3Esrsg5C6NvDoDHSA4gaCffccrU";
|
|
21
|
+
const NETWORK = "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp";
|
|
22
|
+
const USDC = "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v";
|
|
23
|
+
const INTEL_PREFLIGHT = "https://intel.twzrd.xyz/v1/intel/preflight";
|
|
24
|
+
const SIGNER_SPY_STOP = "TWZRD_SIGNER_SPY_STOP_BEFORE_SIGNATURE";
|
|
25
|
+
|
|
26
|
+
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
27
|
+
const pkgRoot = join(__dirname, "..");
|
|
28
|
+
const require = createRequire(import.meta.url);
|
|
29
|
+
|
|
30
|
+
function resolveImport(spec) {
|
|
31
|
+
try {
|
|
32
|
+
return require.resolve(spec);
|
|
33
|
+
} catch {
|
|
34
|
+
return null;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
async function loadHook() {
|
|
39
|
+
const dist = join(pkgRoot, "dist", "x402-client-hook.js");
|
|
40
|
+
const src = join(pkgRoot, "src", "x402-client-hook.ts");
|
|
41
|
+
if (existsSync(dist)) {
|
|
42
|
+
return import(pathToFileURL(dist).href);
|
|
43
|
+
}
|
|
44
|
+
if (existsSync(src)) {
|
|
45
|
+
// Dev checkout: prefer compiled; otherwise dynamic tsx is out of scope for bin.
|
|
46
|
+
console.error(
|
|
47
|
+
"twzrd-gate-eval-refuse: run `npm run build` in twzrd-x402-gate or install the published package",
|
|
48
|
+
);
|
|
49
|
+
process.exit(2);
|
|
50
|
+
}
|
|
51
|
+
console.error("twzrd-gate-eval-refuse: package dist missing");
|
|
52
|
+
process.exit(2);
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
async function immediatePreflight() {
|
|
56
|
+
const res = await fetch(INTEL_PREFLIGHT, {
|
|
57
|
+
method: "POST",
|
|
58
|
+
headers: { "content-type": "application/json" },
|
|
59
|
+
body: JSON.stringify({
|
|
60
|
+
seller_wallet: EXPECT_PAYTO,
|
|
61
|
+
price_usdc: 0.001,
|
|
62
|
+
}),
|
|
63
|
+
});
|
|
64
|
+
if (!res.ok) {
|
|
65
|
+
throw new Error(`preflight HTTP ${res.status}`);
|
|
66
|
+
}
|
|
67
|
+
const body = await res.json();
|
|
68
|
+
const card = body.readiness_card ?? body;
|
|
69
|
+
if (card.decision !== "block" || card.can_spend !== false) {
|
|
70
|
+
throw new Error(
|
|
71
|
+
`refuse fixture drifted: expected block/can_spend=false, got ${card.decision}/${card.can_spend}`,
|
|
72
|
+
);
|
|
73
|
+
}
|
|
74
|
+
return card;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
async function main() {
|
|
78
|
+
for (const pkg of ["@x402/core", "@x402/fetch", "@x402/svm", "@solana/kit"]) {
|
|
79
|
+
if (!resolveImport(pkg)) {
|
|
80
|
+
console.error(
|
|
81
|
+
`twzrd-gate-eval-refuse: missing peer ${pkg}. Run:\n` +
|
|
82
|
+
` npm install twzrd-x402-gate@0.8.6 @x402/core @x402/fetch @x402/svm @solana/kit @scure/base`,
|
|
83
|
+
);
|
|
84
|
+
process.exit(2);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
const preflight = await immediatePreflight();
|
|
89
|
+
|
|
90
|
+
const { generateKeyPairSigner } = await import("@solana/kit");
|
|
91
|
+
const { x402Client } = await import("@x402/core/client");
|
|
92
|
+
const { wrapFetchWithPayment } = await import("@x402/fetch");
|
|
93
|
+
const { ExactSvmScheme } = await import("@x402/svm/exact/client");
|
|
94
|
+
const { installTwzrdX402ClientHook } = await loadHook();
|
|
95
|
+
|
|
96
|
+
const ephemeral = await generateKeyPairSigner();
|
|
97
|
+
let signerInvocationCount = 0;
|
|
98
|
+
let paymentRetryCount = 0;
|
|
99
|
+
let gateDecision = null;
|
|
100
|
+
|
|
101
|
+
const signerSpy = {
|
|
102
|
+
address: ephemeral.address,
|
|
103
|
+
async signTransactions() {
|
|
104
|
+
signerInvocationCount += 1;
|
|
105
|
+
throw new Error(SIGNER_SPY_STOP);
|
|
106
|
+
},
|
|
107
|
+
};
|
|
108
|
+
|
|
109
|
+
const observedFetch = async (input, init) => {
|
|
110
|
+
const headers = new Headers(init?.headers);
|
|
111
|
+
if (
|
|
112
|
+
headers.has("payment-signature") ||
|
|
113
|
+
headers.has("x-payment") ||
|
|
114
|
+
headers.has("payment")
|
|
115
|
+
) {
|
|
116
|
+
paymentRetryCount += 1;
|
|
117
|
+
}
|
|
118
|
+
return fetch(input, init);
|
|
119
|
+
};
|
|
120
|
+
|
|
121
|
+
const client = new x402Client();
|
|
122
|
+
client.register(NETWORK, new ExactSvmScheme(signerSpy));
|
|
123
|
+
|
|
124
|
+
client.onBeforePaymentCreation(async ({ selectedRequirements: selected }) => {
|
|
125
|
+
const mismatch =
|
|
126
|
+
selected.payTo !== EXPECT_PAYTO ||
|
|
127
|
+
selected.asset !== USDC ||
|
|
128
|
+
selected.network !== NETWORK;
|
|
129
|
+
if (mismatch) {
|
|
130
|
+
return { abort: true, reason: "fixture mismatch" };
|
|
131
|
+
}
|
|
132
|
+
});
|
|
133
|
+
|
|
134
|
+
installTwzrdX402ClientHook(client, {
|
|
135
|
+
failOpen: false,
|
|
136
|
+
gateOnCanSpend: true,
|
|
137
|
+
refuseWashFlagged: true,
|
|
138
|
+
preflightMinScore: 40,
|
|
139
|
+
onDecision(detail) {
|
|
140
|
+
gateDecision = { ...detail };
|
|
141
|
+
},
|
|
142
|
+
});
|
|
143
|
+
|
|
144
|
+
const payingFetch = wrapFetchWithPayment(observedFetch, client);
|
|
145
|
+
let observedError = null;
|
|
146
|
+
try {
|
|
147
|
+
await payingFetch(TARGET_URL, { method: "GET" });
|
|
148
|
+
} catch (e) {
|
|
149
|
+
observedError = e instanceof Error ? e.message : String(e);
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
const approved = gateDecision?.approved === true;
|
|
153
|
+
const blocked =
|
|
154
|
+
approved === false &&
|
|
155
|
+
signerInvocationCount === 0 &&
|
|
156
|
+
Boolean(observedError?.match(/twzrd|abort|can_spend|wash|block/i));
|
|
157
|
+
|
|
158
|
+
const report = {
|
|
159
|
+
schema: "twzrd.gate_eval_refuse.v1",
|
|
160
|
+
lineage: "self_serve_handoff_command",
|
|
161
|
+
closes_external_adoption_metric: false,
|
|
162
|
+
note: "Buyer refuse transcript. day0.gate_evals is settle-gate only — not this path.",
|
|
163
|
+
target_url: TARGET_URL,
|
|
164
|
+
pay_to: EXPECT_PAYTO,
|
|
165
|
+
twzrd_decision: gateDecision?.verdict ?? null,
|
|
166
|
+
twzrd_reason: gateDecision?.reason ?? null,
|
|
167
|
+
signer_invocation_count: signerInvocationCount,
|
|
168
|
+
payment_retry_count: paymentRetryCount,
|
|
169
|
+
usdc_spent: 0,
|
|
170
|
+
preflight_immediately_before_run: {
|
|
171
|
+
decision: preflight.decision,
|
|
172
|
+
can_spend: preflight.can_spend,
|
|
173
|
+
},
|
|
174
|
+
observed_error: observedError,
|
|
175
|
+
verified: blocked,
|
|
176
|
+
};
|
|
177
|
+
|
|
178
|
+
console.log("=== FINAL REPORT ===");
|
|
179
|
+
console.log(JSON.stringify(report, null, 2));
|
|
180
|
+
|
|
181
|
+
if (!report.verified) {
|
|
182
|
+
console.error("FAIL: expected hard block with signer_invocation_count=0");
|
|
183
|
+
process.exit(1);
|
|
184
|
+
}
|
|
185
|
+
console.error(
|
|
186
|
+
"OK: refuse transcript green (internal self-serve command — not external partner proof)",
|
|
187
|
+
);
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
main().catch((e) => {
|
|
191
|
+
console.error("twzrd-gate-eval-refuse FAILED", e);
|
|
192
|
+
process.exit(1);
|
|
193
|
+
});
|
|
@@ -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/safe-fetch.d.ts
CHANGED
|
@@ -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;
|
package/dist/safe-fetch.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"safe-fetch.d.ts","sourceRoot":"","sources":["../src/safe-fetch.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;
|
|
1
|
+
{"version":3,"file":"safe-fetch.d.ts","sourceRoot":"","sources":["../src/safe-fetch.ts"],"names":[],"mappings":"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"}
|
package/dist/safe-fetch.js
CHANGED
|
@@ -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 ---
|
package/dist/safe-fetch.js.map
CHANGED
|
@@ -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":"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"}
|
package/package.json
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "twzrd-x402-gate",
|
|
3
|
-
"version": "0.8.
|
|
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
|
|
3
|
+
"version": "0.8.7",
|
|
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",
|
|
8
8
|
"bin": {
|
|
9
|
-
"twzrd-safe-fetch": "./bin/twzrd-safe-fetch.js"
|
|
9
|
+
"twzrd-safe-fetch": "./bin/twzrd-safe-fetch.js",
|
|
10
|
+
"twzrd-gate-eval-refuse": "./bin/twzrd-gate-eval-refuse.js"
|
|
10
11
|
},
|
|
11
12
|
"exports": {
|
|
12
13
|
".": {
|
|
@@ -28,7 +29,7 @@
|
|
|
28
29
|
"build": "tsc",
|
|
29
30
|
"prepublishOnly": "tsc",
|
|
30
31
|
"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/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",
|
|
32
|
+
"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
33
|
"pack-smoke": "node scripts/pack-smoke.mjs",
|
|
33
34
|
"safe-fetch": "tsx src/safe-fetch.ts",
|
|
34
35
|
"guard-demo": "tsx examples/agentic-market-gate.ts",
|
|
@@ -38,7 +39,9 @@
|
|
|
38
39
|
"autogate-block-proof": "tsx examples/autogate-block-proof.ts",
|
|
39
40
|
"official-dogfood": "tsx examples/official-x402-dogfood.ts",
|
|
40
41
|
"adoption-proof": "tsx src/adoption-proof.ts",
|
|
41
|
-
"demo:buyer-no-spend": "tsx src/adoption-proof.ts -- --integration ops-demo-buyer-no-spend"
|
|
42
|
+
"demo:buyer-no-spend": "tsx src/adoption-proof.ts -- --integration ops-demo-buyer-no-spend",
|
|
43
|
+
"live-autogate-matrix": "tsx examples/live-autogate-matrix.ts",
|
|
44
|
+
"gate-eval-refuse": "node bin/twzrd-gate-eval-refuse.js"
|
|
42
45
|
},
|
|
43
46
|
"keywords": [
|
|
44
47
|
"x402",
|