twzrd-x402-gate 0.9.3 → 0.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,8 +1,13 @@
1
1
  # twzrd-x402-gate
2
2
 
3
- **TWZRD is the spend-control SDK for agents paying over x402** — and the default
3
+ **Don't let your agent sign blind.** TWZRD is the spend-control SDK for agents paying over x402 — and the default
4
4
  `onBeforePaymentCreation` policy engine for official x402 clients.
5
5
 
6
+ Commerce loop (directory → preflight → AutoGate → verify → evidence bundle):
7
+ repo [docs/COMMERCE-KIT.md](../docs/COMMERCE-KIT.md). `exportEvidenceBundle` /
8
+ `npx twzrd-evidence-bundle` writes `twzrd.evidence_bundle.v1`. This package is
9
+ not Catena's Agent Commerce Kit.
10
+
6
11
  ### One call (named export `twzrd`)
7
12
 
8
13
  ```js
@@ -11,17 +16,19 @@ import { twzrd } from "twzrd-x402-gate";
11
16
  const result = await twzrd.safeFetch(url, {
12
17
  maxSpend: "0.10", // per-call cap AND cumulative budget
13
18
  allowNetworks: ["solana", "base"],
14
- requireOfferBinding: true, // requires the prepare/submit split below
19
+ requireOfferBinding: true, // compose → verify hard bind → only then pay()
20
+ composeBoundTransaction, // build unsigned bound bytes (no keys)
21
+ pay, // sign/submit only after bind-v1 hard verify
15
22
  });
16
23
  // result.verdict: "allow" | "warn" | "block" — blocks have signerInvocations === 0
17
24
  // result.receipt: { strength: "hard"|"soft"|"refuse", leaf_hash, fact_type: "resource_bound" }
18
25
  ```
19
26
 
20
- `requireOfferBinding` is deliberately fail-closed: an opaque `pay()` callback
21
- can sign before this library can inspect the transaction, so it is rejected for
22
- bound payments. Use `prepareBoundPayment` to build an unsigned transaction with
23
- the supplied `memo`, then `submitBoundPayment` to sign and submit the exact
24
- validated `transactionBase64`. This SDK never holds keys.
27
+ `requireOfferBinding` is fail-closed: missing `composeBoundTransaction` returns
28
+ `bind_required_no_compose` with `signerInvocations === 0` (pay is never called).
29
+ The gate verifies the composed bytes, then calls `pay()` with that
30
+ `transactionBase64`. The old post-pay check remains as
31
+ `verifyOfferBindingAfterPay` only. This SDK never holds keys.
25
32
 
26
33
  Full walkthrough: [QUICKSTART.md](https://github.com/twzrd-sol/twzrd-trust/blob/main/QUICKSTART.md) ·
27
34
  verify receipts yourself: [REVIEW.md](https://github.com/twzrd-sol/twzrd-trust/blob/main/REVIEW.md)
@@ -308,8 +315,12 @@ assertIntentApproved(intentBeingSigned, token, {
308
315
  registry, // replay / consume-once
309
316
  publicKeyPem: signer.publicKeyPem, // signature verification
310
317
  });
311
- // throws INTENT_HASH_MISMATCH | DECISION_EXPIRED | DECISION_NOT_ALLOW |
312
- // DECISION_REPLAYED | BAD_SIGNATURE -> the signer is never invoked
318
+ // throws MISSING_VERIFIER_KEY | BAD_SIGNATURE | INTENT_HASH_MISMATCH |
319
+ // DECISION_EXPIRED | DECISION_NOT_ALLOW | DECISION_REPLAYED
320
+ // -> the signer is never invoked
321
+ // In-process matching without a key is unsafeAssertIntentApprovedWithoutSignature,
322
+ // exported only from the "twzrd-x402-gate/unsafe" subpath — never the root:
323
+ // import { unsafeAssertIntentApprovedWithoutSignature } from "twzrd-x402-gate/unsafe";
313
324
  ```
314
325
 
315
326
  - `PaymentIntent` v1 (frozen): protocol `x402 | ap2 | ucp | mpp | direct` +
@@ -0,0 +1,26 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Export a twzrd.evidence_bundle.v1 from the no-spend adoption harness.
4
+ *
5
+ * npx twzrd-evidence-bundle --integration acme-ops-agent-v1 --run-id "$(uuidgen)"
6
+ * npx twzrd-evidence-bundle --integration acme-ops-agent-v1 --run-id <uuid> --out bundle.json
7
+ *
8
+ * Correlation evidence only — not EXTERNAL_RUN by itself.
9
+ */
10
+ import { existsSync } from "node:fs";
11
+ import { dirname, join } from "node:path";
12
+ import { fileURLToPath, pathToFileURL } from "node:url";
13
+
14
+ const pkgRoot = join(dirname(fileURLToPath(import.meta.url)), "..");
15
+ const dist = join(pkgRoot, "dist", "evidence-bundle.js");
16
+
17
+ if (!existsSync(dist)) {
18
+ console.error("twzrd-evidence-bundle: run `npm run build` in twzrd-x402-gate or install the published package");
19
+ process.exit(2);
20
+ }
21
+
22
+ const { main } = await import(pathToFileURL(dist).href);
23
+ await main(process.argv.slice(2)).catch((err) => {
24
+ console.error(err instanceof Error ? err.message : err);
25
+ process.exit(1);
26
+ });
@@ -91,6 +91,7 @@ export type RunGateAdoptionProofOptions = {
91
91
  */
92
92
  lineage?: GateAdoptionLineage;
93
93
  };
94
+ export declare function isInternalIntegration(integration: string): boolean;
94
95
  /**
95
96
  * Run the deterministic no-spend adoption proof.
96
97
  * Never contacts a wallet; never spends USDC. Preflight is mocked.
@@ -1 +1 @@
1
- {"version":3,"file":"adoption-proof.d.ts","sourceRoot":"","sources":["../src/adoption-proof.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,EAKL,KAAK,wBAAwB,EAC9B,MAAM,uBAAuB,CAAC;AAE/B,eAAO,MAAM,0BAA0B,EAAG,mCAA4C,CAAC;AAEvF,wEAAwE;AACxE,eAAO,MAAM,qBAAqB,gDAAgD,CAAC;AACnF,eAAO,MAAM,sBAAsB,4CAA4C,CAAC;AAChF,eAAO,MAAM,uBAAuB,kDAAkD,CAAC;AAEvF,MAAM,MAAM,oBAAoB,GAAG,YAAY,GAAG,YAAY,CAAC;AAE/D,MAAM,MAAM,gBAAgB,GAAG;IAC7B,IAAI,EAAE,oBAAoB,CAAC;IAC3B,oBAAoB,EAAE,wBAAwB,CAAC;IAC/C,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,OAAO,CAAC;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;IAClB;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,qBAAqB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,4EAA4E;IAC5E,iBAAiB,EAAE,MAAM,CAAC;IAC1B,oEAAoE;IACpE,oBAAoB,EAAE;QACpB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;QAC3B,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;QACrB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;KACvB,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACnC,8BAA8B,EAAE,OAAO,CAAC;IACxC,eAAe,EAAE,OAAO,CAAC;IACzB,6BAA6B,EAAE,OAAO,CAAC;IACvC,2BAA2B,EAAE,OAAO,CAAC;IACrC,mBAAmB,EAAE,OAAO,CAAC;CAC9B,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,mBAAmB,GAAG,SAAS,GAAG,oBAAoB,CAAC;AAEnE,MAAM,MAAM,sBAAsB,GAAG;IACnC,MAAM,EAAE,OAAO,0BAA0B,CAAC;IAC1C,OAAO,EAAE,iBAAiB,CAAC;IAC3B,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,6BAA6B,CAAC;IACzC,IAAI,EAAE,UAAU,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,mBAAmB,CAAC;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,gBAAgB,EAAE,CAAC;IAC1B,UAAU,EAAE,sBAAsB,CAAC;IACnC,EAAE,EAAE,OAAO,CAAC;IACZ;;;OAGG;IACH,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAC9B,gDAAgD;IAChD,aAAa,EAAE,+CAA+C,CAAC;CAChE,CAAC;AAEF,MAAM,MAAM,2BAA2B,GAAG;IACxC,8EAA8E;IAC9E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,wEAAwE;IACxE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,OAAO,CAAC,EAAE,mBAAmB,CAAC;CAC/B,CAAC;AA8FF;;;GAGG;AACH,wBAAsB,oBAAoB,CACxC,IAAI,GAAE,2BAAgC,GACrC,OAAO,CAAC,sBAAsB,CAAC,CAsLjC;AAED,2EAA2E;AAC3E,wBAAsB,IAAI,CAAC,IAAI,GAAE,MAAM,EAA0B,GAAG,OAAO,CAAC,MAAM,CAAC,CAmBlF"}
1
+ {"version":3,"file":"adoption-proof.d.ts","sourceRoot":"","sources":["../src/adoption-proof.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,EAKL,KAAK,wBAAwB,EAC9B,MAAM,uBAAuB,CAAC;AAE/B,eAAO,MAAM,0BAA0B,EAAG,mCAA4C,CAAC;AAEvF,wEAAwE;AACxE,eAAO,MAAM,qBAAqB,gDAAgD,CAAC;AACnF,eAAO,MAAM,sBAAsB,4CAA4C,CAAC;AAChF,eAAO,MAAM,uBAAuB,kDAAkD,CAAC;AAEvF,MAAM,MAAM,oBAAoB,GAAG,YAAY,GAAG,YAAY,CAAC;AAE/D,MAAM,MAAM,gBAAgB,GAAG;IAC7B,IAAI,EAAE,oBAAoB,CAAC;IAC3B,oBAAoB,EAAE,wBAAwB,CAAC;IAC/C,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,OAAO,CAAC;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;IAClB;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,qBAAqB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,4EAA4E;IAC5E,iBAAiB,EAAE,MAAM,CAAC;IAC1B,oEAAoE;IACpE,oBAAoB,EAAE;QACpB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;QAC3B,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;QACrB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;KACvB,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACnC,8BAA8B,EAAE,OAAO,CAAC;IACxC,eAAe,EAAE,OAAO,CAAC;IACzB,6BAA6B,EAAE,OAAO,CAAC;IACvC,2BAA2B,EAAE,OAAO,CAAC;IACrC,mBAAmB,EAAE,OAAO,CAAC;CAC9B,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,mBAAmB,GAAG,SAAS,GAAG,oBAAoB,CAAC;AAEnE,MAAM,MAAM,sBAAsB,GAAG;IACnC,MAAM,EAAE,OAAO,0BAA0B,CAAC;IAC1C,OAAO,EAAE,iBAAiB,CAAC;IAC3B,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,6BAA6B,CAAC;IACzC,IAAI,EAAE,UAAU,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,mBAAmB,CAAC;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,gBAAgB,EAAE,CAAC;IAC1B,UAAU,EAAE,sBAAsB,CAAC;IACnC,EAAE,EAAE,OAAO,CAAC;IACZ;;;OAGG;IACH,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAC9B,gDAAgD;IAChD,aAAa,EAAE,+CAA+C,CAAC;CAChE,CAAC;AAEF,MAAM,MAAM,2BAA2B,GAAG;IACxC,8EAA8E;IAC9E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,wEAAwE;IACxE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,OAAO,CAAC,EAAE,mBAAmB,CAAC;CAC/B,CAAC;AA+EF,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAclE;AAED;;;GAGG;AACH,wBAAsB,oBAAoB,CACxC,IAAI,GAAE,2BAAgC,GACrC,OAAO,CAAC,sBAAsB,CAAC,CAsLjC;AAED,2EAA2E;AAC3E,wBAAsB,IAAI,CAAC,IAAI,GAAE,MAAM,EAA0B,GAAG,OAAO,CAAC,MAAM,CAAC,CAmBlF"}
@@ -83,12 +83,13 @@ function baseRequirements(amount) {
83
83
  scheme: "exact",
84
84
  };
85
85
  }
86
- function isInternalIntegration(integration) {
86
+ export function isInternalIntegration(integration) {
87
87
  const i = integration.toLowerCase();
88
88
  return (i.startsWith("twzrd-") ||
89
89
  i.startsWith("twzrd/") ||
90
90
  i.startsWith("ops-") ||
91
91
  i.startsWith("test-") ||
92
+ i.startsWith("demo-") ||
92
93
  i === "dogfood" ||
93
94
  i.includes("dogfood") ||
94
95
  i.includes("internal") ||
@@ -1 +1 @@
1
- {"version":3,"file":"adoption-proof.js","sourceRoot":"","sources":["../src/adoption-proof.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"adoption-proof.js","sourceRoot":"","sources":["../src/adoption-proof.ts"],"names":[],"mappings":"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"}
@@ -93,7 +93,14 @@ export declare function createSeededDecisionSigner(secret: string, keyId?: strin
93
93
  };
94
94
  export declare function signDecision(unsigned: Omit<PaymentDecision, "signature" | "keyId">, signer: DecisionSigner): Promise<PaymentDecision>;
95
95
  export declare function verifyDecisionSignature(token: PaymentDecision, publicKeyPem: string): boolean;
96
- export type BindingErrorCode = "INTENT_HASH_MISMATCH" | "DECISION_EXPIRED" | "DECISION_NOT_ALLOW" | "DECISION_REPLAYED" | "MISSING_VERIFICATION_KEY" | "BAD_SIGNATURE";
96
+ export type BindingErrorCode = "INTENT_HASH_MISMATCH" | "DECISION_EXPIRED" | "DECISION_NOT_ALLOW" | "DECISION_REPLAYED" | "MISSING_VERIFIER_KEY" | "BAD_SIGNATURE";
97
+ /** Canonical code thrown when `assertIntentApproved` has no pinned key. */
98
+ export declare const MISSING_VERIFIER_KEY = "MISSING_VERIFIER_KEY";
99
+ /**
100
+ * @deprecated Use {@link MISSING_VERIFIER_KEY}. Kept so 0.9.x consumers that
101
+ * matched the pre-rename code keep compiling and matching — same thrown value.
102
+ */
103
+ export declare const MISSING_VERIFICATION_KEY = "MISSING_VERIFIER_KEY";
97
104
  export declare class TwzrdIntentBindingError extends Error {
98
105
  readonly code: BindingErrorCode;
99
106
  readonly decisionId: string;
@@ -112,11 +119,26 @@ export type AssertIntentApprovedOptions = {
112
119
  /** Required trust anchor: verify the token signature against this key. */
113
120
  publicKeyPem: string;
114
121
  };
122
+ export type UnsafeAssertIntentApprovedOptions = {
123
+ now?: number;
124
+ registry?: DecisionRegistry;
125
+ };
115
126
  /**
116
127
  * The wallet-side check. Call with the EXACT intent about to be signed.
117
128
  * Throws TwzrdIntentBindingError on any violation; returns void when the
118
129
  * signature may proceed. A caught error means: do not invoke the signer.
130
+ * `publicKeyPem` is required — forged tokens must not be accepted.
119
131
  */
120
132
  export declare function assertIntentApproved(intent: PaymentIntent, token: PaymentDecision, options?: AssertIntentApprovedOptions): void;
133
+ /**
134
+ * In-process intent matching without signature verification. Forged tokens
135
+ * pass if the remaining fields match. Prefer `assertIntentApproved`.
136
+ *
137
+ * UNSAFE: never share a `registry` instance between this and
138
+ * `assertIntentApproved` expecting them to interact — consumption here is
139
+ * namespaced separately so an unverified call can neither consume nor be
140
+ * blocked by the signed path's consume-once state.
141
+ */
142
+ export declare function unsafeAssertIntentApprovedWithoutSignature(intent: PaymentIntent, token: PaymentDecision, options?: UnsafeAssertIntentApprovedOptions): void;
121
143
  export declare function newDecisionId(): string;
122
144
  //# sourceMappingURL=decision-token.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"decision-token.d.ts","sourceRoot":"","sources":["../src/decision-token.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"decision-token.d.ts","sourceRoot":"","sources":["../src/decision-token.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAaH,OAAO,EAA6B,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AAI5E,MAAM,MAAM,sBAAsB,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,CAAC;AAEhE,MAAM,MAAM,mBAAmB,GAAG;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAChC,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,QAAQ,EAAE,sBAAsB,CAAC;IACjC,WAAW,EAAE,MAAM,EAAE,CAAC;IAEtB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,kDAAkD;IAClD,SAAS,EAAE,MAAM,CAAC;IAElB;;;;;;;OAOG;IACH,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IAEzB,WAAW,CAAC,EAAE,mBAAmB,CAAC;IAElC;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAE7B,oDAAoD;IACpD,KAAK,EAAE,MAAM,CAAC;IACd,4EAA4E;IAC5E,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,QAAQ,EAAE,UAAU,GAAG,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IAC7D,wEAAwE;IACxE,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAKF,0FAA0F;AAC1F,eAAO,MAAM,kBAAkB,KAAK,CAAC;AAErC;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAoBjE;AAED,gEAAgE;AAChE,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,IAAI,CAAC,eAAe,EAAE,WAAW,CAAC,GAAG,MAAM,CAKlF;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,CAAC,EAAE;IAClD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GAAG,cAAc,GAAG;IAAE,YAAY,EAAE,MAAM,CAAA;CAAE,CAe5C;AAsDD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,MAAM,EACd,KAAK,CAAC,EAAE,MAAM,GACb,cAAc,GAAG;IAAE,YAAY,EAAE,MAAM,CAAA;CAAE,CAuC3C;AAED,wBAAsB,YAAY,CAChC,QAAQ,EAAE,IAAI,CAAC,eAAe,EAAE,WAAW,GAAG,OAAO,CAAC,EACtD,MAAM,EAAE,cAAc,GACrB,OAAO,CAAC,eAAe,CAAC,CAM1B;AAED,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,eAAe,EACtB,YAAY,EAAE,MAAM,GACnB,OAAO,CAYT;AAMD,MAAM,MAAM,gBAAgB,GACxB,sBAAsB,GACtB,kBAAkB,GAClB,oBAAoB,GACpB,mBAAmB,GACnB,sBAAsB,GACtB,eAAe,CAAC;AAEpB,2EAA2E;AAC3E,eAAO,MAAM,oBAAoB,yBAAyB,CAAC;AAE3D;;;GAGG;AACH,eAAO,MAAM,wBAAwB,yBAAuB,CAAC;AAE7D,qBAAa,uBAAwB,SAAQ,KAAK;IAChD,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC;IAChC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;gBAChB,IAAI,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;CAMvE;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC7B,+DAA+D;IAC/D,OAAO,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC;CACtC,CAAC;AAEF,sEAAsE;AACtE,wBAAgB,sBAAsB,IAAI,gBAAgB,CASzD;AAED,MAAM,MAAM,2BAA2B,GAAG;IACxC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,gFAAgF;IAChF,QAAQ,CAAC,EAAE,gBAAgB,CAAC;IAC5B,0EAA0E;IAC1E,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,iCAAiC,GAAG;IAC9C,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,gBAAgB,CAAC;CAC7B,CAAC;AAkDF;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE,eAAe,EACtB,OAAO,CAAC,EAAE,2BAA2B,GACpC,IAAI,CAkBN;AAED;;;;;;;;GAQG;AACH,wBAAgB,0CAA0C,CACxD,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE,eAAe,EACtB,OAAO,CAAC,EAAE,iCAAiC,GAC1C,IAAI,CAEN;AAED,wBAAgB,aAAa,IAAI,MAAM,CAEtC"}
@@ -180,6 +180,13 @@ export function verifyDecisionSignature(token, publicKeyPem) {
180
180
  return false;
181
181
  }
182
182
  }
183
+ /** Canonical code thrown when `assertIntentApproved` has no pinned key. */
184
+ export const MISSING_VERIFIER_KEY = "MISSING_VERIFIER_KEY";
185
+ /**
186
+ * @deprecated Use {@link MISSING_VERIFIER_KEY}. Kept so 0.9.x consumers that
187
+ * matched the pre-rename code keep compiling and matching — same thrown value.
188
+ */
189
+ export const MISSING_VERIFICATION_KEY = MISSING_VERIFIER_KEY;
183
190
  export class TwzrdIntentBindingError extends Error {
184
191
  code;
185
192
  decisionId;
@@ -202,33 +209,56 @@ export function createDecisionRegistry() {
202
209
  },
203
210
  };
204
211
  }
205
- /**
206
- * The wallet-side check. Call with the EXACT intent about to be signed.
207
- * Throws TwzrdIntentBindingError on any violation; returns void when the
208
- * signature may proceed. A caught error means: do not invoke the signer.
209
- */
210
- export function assertIntentApproved(intent, token, options) {
212
+ function assertIntentConstraints(intent, token, options,
213
+ // Namespaces registry consumption so an unverified (unsafe) call can never
214
+ // consume — or collide with — the consume-once slot a signature-verified
215
+ // call relies on, even if the same DecisionRegistry instance is shared.
216
+ registryKeyPrefix) {
211
217
  const now = options?.now ?? Date.now();
212
- if (!options?.publicKeyPem) {
213
- throw new TwzrdIntentBindingError("MISSING_VERIFICATION_KEY", token.decisionId, "a pinned decision verification key is required before signing");
214
- }
215
- if (!verifyDecisionSignature(token, options.publicKeyPem)) {
216
- throw new TwzrdIntentBindingError("BAD_SIGNATURE", token.decisionId, "decision token signature did not verify");
217
- }
218
218
  if (token.decision !== "allow" && token.decision !== "warn") {
219
219
  throw new TwzrdIntentBindingError("DECISION_NOT_ALLOW", token.decisionId, `decision is ${token.decision}`);
220
220
  }
221
- if (now >= Date.parse(token.expiresAt)) {
221
+ const expiresAtMs = Date.parse(token.expiresAt);
222
+ // An unparseable expiresAt must fail closed (Date.parse -> NaN, and every
223
+ // comparison against NaN is false) rather than silently never expiring.
224
+ if (!(now < expiresAtMs)) {
222
225
  throw new TwzrdIntentBindingError("DECISION_EXPIRED", token.decisionId, `expired at ${token.expiresAt}`);
223
226
  }
224
227
  const actual = intentHash(intent);
225
228
  if (actual !== token.intentHash) {
226
229
  throw new TwzrdIntentBindingError("INTENT_HASH_MISMATCH", token.decisionId, `approved ${token.intentHash} but signing ${actual}`);
227
230
  }
228
- if (options?.registry && !options.registry.consume(token.decisionId)) {
231
+ if (options?.registry && !options.registry.consume(registryKeyPrefix + token.decisionId)) {
229
232
  throw new TwzrdIntentBindingError("DECISION_REPLAYED", token.decisionId, "decision token already consumed");
230
233
  }
231
234
  }
235
+ /**
236
+ * The wallet-side check. Call with the EXACT intent about to be signed.
237
+ * Throws TwzrdIntentBindingError on any violation; returns void when the
238
+ * signature may proceed. A caught error means: do not invoke the signer.
239
+ * `publicKeyPem` is required — forged tokens must not be accepted.
240
+ */
241
+ export function assertIntentApproved(intent, token, options) {
242
+ if (!options?.publicKeyPem) {
243
+ throw new TwzrdIntentBindingError(MISSING_VERIFIER_KEY, token.decisionId, "a pinned decision verification key is required before signing");
244
+ }
245
+ if (!verifyDecisionSignature(token, options.publicKeyPem)) {
246
+ throw new TwzrdIntentBindingError("BAD_SIGNATURE", token.decisionId, "decision token signature did not verify");
247
+ }
248
+ assertIntentConstraints(intent, token, options, "");
249
+ }
250
+ /**
251
+ * In-process intent matching without signature verification. Forged tokens
252
+ * pass if the remaining fields match. Prefer `assertIntentApproved`.
253
+ *
254
+ * UNSAFE: never share a `registry` instance between this and
255
+ * `assertIntentApproved` expecting them to interact — consumption here is
256
+ * namespaced separately so an unverified call can neither consume nor be
257
+ * blocked by the signed path's consume-once state.
258
+ */
259
+ export function unsafeAssertIntentApprovedWithoutSignature(intent, token, options) {
260
+ assertIntentConstraints(intent, token, options, "unsafe:");
261
+ }
232
262
  export function newDecisionId() {
233
263
  return randomUUID();
234
264
  }
@@ -1 +1 @@
1
- {"version":3,"file":"decision-token.js","sourceRoot":"","sources":["../src/decision-token.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"decision-token.js","sourceRoot":"","sources":["../src/decision-token.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Thin directory client — trust sits beside discovery, not inside it.
3
+ *
4
+ * GET /v1/intel/resources (source of truth) and GET /v1/intel/x402-directory
5
+ * (multi-bazaar overlay). No ranking, no local cache, no TWZRD-owned catalog.
6
+ * Callers pick a callable, then preflight the payTo.
7
+ */
8
+ export type DirectorySource = "resources" | "x402-directory";
9
+ export type DirectoryListing = {
10
+ resourceUrl: string | null;
11
+ payTo: string | null;
12
+ live402: boolean | null;
13
+ listed: boolean | null;
14
+ name: string | null;
15
+ source: DirectorySource;
16
+ };
17
+ export type ListDirectoryOptions = {
18
+ intelBase?: string;
19
+ fetch?: typeof fetch;
20
+ limit?: number;
21
+ live402Only?: boolean;
22
+ };
23
+ export declare function normalizeDirectoryRow(row: Record<string, unknown>, source: DirectorySource): DirectoryListing;
24
+ /** Resource join — source of truth for listed | live_402 callables. */
25
+ export declare function listResources(opts?: ListDirectoryOptions): Promise<DirectoryListing[]>;
26
+ /** Multi-bazaar overlay. Does not rank; TWZRD only enriches pay_to. */
27
+ export declare function listX402Directory(opts?: ListDirectoryOptions): Promise<DirectoryListing[]>;
28
+ /**
29
+ * First usable callable: prefer a live_402 row with payTo, else any row with payTo.
30
+ * No ranking by volume, wash, or score.
31
+ */
32
+ export declare function pickCallable(listings: DirectoryListing[]): DirectoryListing | null;
33
+ /** List resource-join first, fall back to the bazaar overlay if empty. */
34
+ export declare function listDirectoryCallables(opts?: ListDirectoryOptions): Promise<DirectoryListing[]>;
35
+ //# sourceMappingURL=directory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"directory.d.ts","sourceRoot":"","sources":["../src/directory.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,MAAM,eAAe,GAAG,WAAW,GAAG,gBAAgB,CAAC;AAE7D,MAAM,MAAM,gBAAgB,GAAG;IAC7B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IACxB,MAAM,EAAE,OAAO,GAAG,IAAI,CAAC;IACvB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,MAAM,EAAE,eAAe,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,CAAC;AAuCF,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC5B,MAAM,EAAE,eAAe,GACtB,gBAAgB,CAiBlB;AAaD,uEAAuE;AACvE,wBAAsB,aAAa,CACjC,IAAI,GAAE,oBAAyB,GAC9B,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAS7B;AAED,uEAAuE;AACvE,wBAAsB,iBAAiB,CACrC,IAAI,GAAE,oBAAyB,GAC9B,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAQ7B;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,gBAAgB,EAAE,GAAG,gBAAgB,GAAG,IAAI,CAGlF;AAED,0EAA0E;AAC1E,wBAAsB,sBAAsB,CAC1C,IAAI,GAAE,oBAAyB,GAC9B,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAI7B"}
@@ -0,0 +1,95 @@
1
+ /**
2
+ * Thin directory client — trust sits beside discovery, not inside it.
3
+ *
4
+ * GET /v1/intel/resources (source of truth) and GET /v1/intel/x402-directory
5
+ * (multi-bazaar overlay). No ranking, no local cache, no TWZRD-owned catalog.
6
+ * Callers pick a callable, then preflight the payTo.
7
+ */
8
+ const DEFAULT_INTEL = "https://intel.twzrd.xyz";
9
+ function intelBase(opts) {
10
+ return (opts?.intelBase ?? process.env.TWZRD_INTEL_BASE ?? DEFAULT_INTEL).replace(/\/+$/, "");
11
+ }
12
+ function asRecords(body) {
13
+ if (Array.isArray(body)) {
14
+ return body.filter((row) => !!row && typeof row === "object");
15
+ }
16
+ if (!body || typeof body !== "object")
17
+ return [];
18
+ const obj = body;
19
+ for (const key of ["resources", "items", "results", "data", "listings"]) {
20
+ const v = obj[key];
21
+ if (Array.isArray(v)) {
22
+ return v.filter((row) => !!row && typeof row === "object");
23
+ }
24
+ }
25
+ return [];
26
+ }
27
+ function str(row, ...keys) {
28
+ for (const key of keys) {
29
+ const v = row[key];
30
+ if (typeof v === "string" && v.trim())
31
+ return v.trim();
32
+ }
33
+ return null;
34
+ }
35
+ function flag(row, ...keys) {
36
+ for (const key of keys) {
37
+ const v = row[key];
38
+ if (typeof v === "boolean")
39
+ return v;
40
+ }
41
+ return null;
42
+ }
43
+ export function normalizeDirectoryRow(row, source) {
44
+ const nested = row.resource && typeof row.resource === "object"
45
+ ? row.resource
46
+ : {};
47
+ return {
48
+ resourceUrl: str(row, "resource_url", "resourceUrl", "url", "endpoint") ??
49
+ str(nested, "url", "resource_url"),
50
+ payTo: str(row, "pay_to", "payTo", "seller_wallet", "sellerWallet") ??
51
+ str(nested, "pay_to", "payTo"),
52
+ live402: flag(row, "live_402", "live402"),
53
+ listed: flag(row, "listed"),
54
+ name: str(row, "name", "resource_name", "title") ?? str(nested, "name"),
55
+ source,
56
+ };
57
+ }
58
+ async function getJson(url, fetchImpl) {
59
+ const resp = await fetchImpl(url, { headers: { accept: "application/json" } });
60
+ if (!resp.ok) {
61
+ throw new Error(`[twzrd-x402-gate] directory HTTP ${resp.status} for ${url}`);
62
+ }
63
+ return resp.json();
64
+ }
65
+ /** Resource join — source of truth for listed | live_402 callables. */
66
+ export async function listResources(opts = {}) {
67
+ const fetchImpl = opts.fetch ?? globalThis.fetch;
68
+ const limit = opts.limit ?? 20;
69
+ const live = opts.live402Only === true ? "&live_402_only=true" : "";
70
+ const body = await getJson(`${intelBase(opts)}/v1/intel/resources?limit=${limit}${live}`, fetchImpl);
71
+ return asRecords(body).map((row) => normalizeDirectoryRow(row, "resources"));
72
+ }
73
+ /** Multi-bazaar overlay. Does not rank; TWZRD only enriches pay_to. */
74
+ export async function listX402Directory(opts = {}) {
75
+ const fetchImpl = opts.fetch ?? globalThis.fetch;
76
+ const limit = opts.limit ?? 20;
77
+ const body = await getJson(`${intelBase(opts)}/v1/intel/x402-directory?limit=${limit}`, fetchImpl);
78
+ return asRecords(body).map((row) => normalizeDirectoryRow(row, "x402-directory"));
79
+ }
80
+ /**
81
+ * First usable callable: prefer a live_402 row with payTo, else any row with payTo.
82
+ * No ranking by volume, wash, or score.
83
+ */
84
+ export function pickCallable(listings) {
85
+ const withPayTo = listings.filter((row) => row.payTo);
86
+ return withPayTo.find((row) => row.live402 === true) ?? withPayTo[0] ?? null;
87
+ }
88
+ /** List resource-join first, fall back to the bazaar overlay if empty. */
89
+ export async function listDirectoryCallables(opts = {}) {
90
+ const resources = await listResources(opts);
91
+ if (resources.length > 0)
92
+ return resources;
93
+ return listX402Directory(opts);
94
+ }
95
+ //# sourceMappingURL=directory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"directory.js","sourceRoot":"","sources":["../src/directory.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,89 @@
1
+ /**
2
+ * Attribution-safe evidence bundle — the learn step of the commerce loop.
3
+ *
4
+ * Joins artifacts already produced by the gate (transcript, decision, bind-v1,
5
+ * V6/ACK-Pay receipt, ledger slice, refuse attestation) into one export an
6
+ * operator can publish without forensic work. Redacts secrets by construction.
7
+ *
8
+ * This is correlation / journey evidence. It is NOT EXTERNAL_RUN by itself.
9
+ */
10
+ import { type GateAdoptionLineage, type GateAdoptionTranscript } from "./adoption-proof.js";
11
+ export declare const EVIDENCE_BUNDLE_SCHEMA: "twzrd.evidence_bundle.v1";
12
+ export type EvidenceDecision = {
13
+ verdict: string;
14
+ approved: boolean;
15
+ reason?: string;
16
+ signerInvocations: number;
17
+ preflightId?: number | null;
18
+ decisionId?: string | null;
19
+ };
20
+ export type EvidenceBind = {
21
+ strength?: string;
22
+ evidence_level?: string;
23
+ leaf_hash?: string | null;
24
+ fact_type?: string;
25
+ };
26
+ export type EvidenceReceipt = {
27
+ id?: string;
28
+ leaf?: string;
29
+ fact_type?: string;
30
+ ack_pay?: boolean;
31
+ };
32
+ export type EvidenceLedgerSlice = {
33
+ spendRows: number;
34
+ lastHash?: string;
35
+ verdicts: Array<{
36
+ outcome: string;
37
+ reason_codes?: string[];
38
+ signer_invocations?: number;
39
+ }>;
40
+ };
41
+ export type EvidenceOutcomeAttestation = {
42
+ outcome: string;
43
+ leaf?: string;
44
+ signing_pubkey?: string | null;
45
+ };
46
+ export type EvidenceBundle = {
47
+ schema: typeof EVIDENCE_BUNDLE_SCHEMA;
48
+ package: "twzrd-x402-gate";
49
+ packageVersion: string;
50
+ exportedAt: string;
51
+ attribution: {
52
+ integration: string;
53
+ runId: string;
54
+ };
55
+ lineage: GateAdoptionLineage;
56
+ notExternalRunProof: string[];
57
+ decision: EvidenceDecision;
58
+ transcript?: Pick<GateAdoptionTranscript, "schema" | "mode" | "ok" | "assertions" | "proofKind"> & {
59
+ stepCount: number;
60
+ };
61
+ bind?: EvidenceBind;
62
+ receipt?: EvidenceReceipt;
63
+ ledger: EvidenceLedgerSlice;
64
+ outcomeAttestation?: EvidenceOutcomeAttestation;
65
+ redactions: string[];
66
+ };
67
+ export type ExportEvidenceBundleOptions = {
68
+ attribution: {
69
+ integration: string;
70
+ runId: string;
71
+ };
72
+ lineage?: GateAdoptionLineage;
73
+ decision?: EvidenceDecision;
74
+ transcript?: GateAdoptionTranscript;
75
+ bind?: EvidenceBind;
76
+ receipt?: EvidenceReceipt;
77
+ ledger?: EvidenceLedgerSlice;
78
+ outcomeAttestation?: EvidenceOutcomeAttestation;
79
+ };
80
+ export declare function fingerprint(value: string): string;
81
+ export declare function exportEvidenceBundle(opts: ExportEvidenceBundleOptions): EvidenceBundle;
82
+ export declare function writeEvidenceBundle(bundle: EvidenceBundle, filePath: string): void;
83
+ export declare function exportEvidenceBundleFromAdoptionProof(opts: {
84
+ integration?: string;
85
+ runId?: string;
86
+ lineage?: GateAdoptionLineage;
87
+ }): Promise<EvidenceBundle>;
88
+ export declare function main(argv?: string[]): Promise<EvidenceBundle>;
89
+ //# sourceMappingURL=evidence-bundle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"evidence-bundle.d.ts","sourceRoot":"","sources":["../src/evidence-bundle.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,132 @@
1
+ /**
2
+ * Attribution-safe evidence bundle — the learn step of the commerce loop.
3
+ *
4
+ * Joins artifacts already produced by the gate (transcript, decision, bind-v1,
5
+ * V6/ACK-Pay receipt, ledger slice, refuse attestation) into one export an
6
+ * operator can publish without forensic work. Redacts secrets by construction.
7
+ *
8
+ * This is correlation / journey evidence. It is NOT EXTERNAL_RUN by itself.
9
+ */
10
+ import { writeFileSync } from "node:fs";
11
+ import { createHash, randomUUID } from "node:crypto";
12
+ import { ADOPTION_TRANSCRIPT_SCHEMA, isInternalIntegration, runGateAdoptionProof, } from "./adoption-proof.js";
13
+ import { CLIENT_VERSION } from "./version.js";
14
+ export const EVIDENCE_BUNDLE_SCHEMA = "twzrd.evidence_bundle.v1";
15
+ const SECRET_KEY = /^(private[_-]?key|secret|seed|mnemonic|password|authorization|keypair|api[_-]?key)$/i;
16
+ const NOT_EXTERNAL = [
17
+ "package_download_counts",
18
+ "preflight_hits_alone",
19
+ "self_authored_run_id_alone",
20
+ "twzrd_dogfood_or_ci",
21
+ "house_or_sponsored_wallets",
22
+ ];
23
+ function redactSecrets(value) {
24
+ if (Array.isArray(value)) {
25
+ return value.map((item) => redactSecrets(item));
26
+ }
27
+ if (!value || typeof value !== "object")
28
+ return value;
29
+ const out = {};
30
+ for (const [key, child] of Object.entries(value)) {
31
+ if (SECRET_KEY.test(key))
32
+ continue;
33
+ out[key] = redactSecrets(child);
34
+ }
35
+ return out;
36
+ }
37
+ export function fingerprint(value) {
38
+ return createHash("sha256").update(value).digest("hex").slice(0, 16);
39
+ }
40
+ export function exportEvidenceBundle(opts) {
41
+ const integration = opts.attribution.integration.trim();
42
+ const runId = opts.attribution.runId.trim();
43
+ if (!integration || !runId) {
44
+ throw new Error("[twzrd-x402-gate] evidence bundle requires attribution.integration and attribution.runId");
45
+ }
46
+ const transcript = opts.transcript;
47
+ const block = transcript?.steps.find((s) => s.name === "block_path");
48
+ const decision = opts.decision ?? {
49
+ verdict: block?.verdict ?? "unknown",
50
+ approved: block?.approved ?? false,
51
+ reason: block?.reason,
52
+ signerInvocations: block?.signerInvocations ?? 0,
53
+ };
54
+ const lineage = opts.lineage ??
55
+ transcript?.lineage ??
56
+ (isInternalIntegration(integration) ? "dogfood" : "external_candidate");
57
+ const redactions = [
58
+ "secrets_and_private_keys",
59
+ "ledger_pay_to_and_amounts",
60
+ "buyer_wallet",
61
+ ];
62
+ return redactSecrets({
63
+ schema: EVIDENCE_BUNDLE_SCHEMA,
64
+ package: "twzrd-x402-gate",
65
+ packageVersion: CLIENT_VERSION,
66
+ exportedAt: new Date().toISOString(),
67
+ attribution: { integration, runId },
68
+ lineage,
69
+ notExternalRunProof: [...NOT_EXTERNAL],
70
+ decision,
71
+ transcript: transcript
72
+ ? {
73
+ schema: transcript.schema,
74
+ mode: transcript.mode,
75
+ ok: transcript.ok,
76
+ assertions: transcript.assertions,
77
+ proofKind: transcript.proofKind,
78
+ stepCount: transcript.steps.length,
79
+ }
80
+ : undefined,
81
+ bind: opts.bind,
82
+ receipt: opts.receipt,
83
+ ledger: opts.ledger ?? { spendRows: 0, verdicts: [] },
84
+ outcomeAttestation: opts.outcomeAttestation,
85
+ redactions,
86
+ });
87
+ }
88
+ export function writeEvidenceBundle(bundle, filePath) {
89
+ writeFileSync(filePath, `${JSON.stringify(bundle, null, 2)}\n`, { encoding: "utf8", mode: 0o600 });
90
+ }
91
+ export async function exportEvidenceBundleFromAdoptionProof(opts) {
92
+ const integration = opts.integration ?? "demo-commerce-kit";
93
+ const runId = opts.runId ?? randomUUID();
94
+ const transcript = await runGateAdoptionProof({
95
+ integration,
96
+ runId,
97
+ lineage: opts.lineage,
98
+ });
99
+ if (transcript.schema !== ADOPTION_TRANSCRIPT_SCHEMA) {
100
+ throw new Error("[twzrd-x402-gate] unexpected adoption transcript schema");
101
+ }
102
+ return exportEvidenceBundle({
103
+ attribution: { integration, runId },
104
+ lineage: transcript.lineage,
105
+ transcript,
106
+ });
107
+ }
108
+ export async function main(argv = process.argv.slice(2)) {
109
+ const arg = (name, fallback) => {
110
+ const i = argv.indexOf(name);
111
+ return i >= 0 && argv[i + 1] ? argv[i + 1] : fallback;
112
+ };
113
+ const bundle = await exportEvidenceBundleFromAdoptionProof({
114
+ integration: arg("--integration", process.env.TWZRD_ATTRIBUTION_INTEGRATION),
115
+ runId: arg("--run-id", process.env.TWZRD_ATTRIBUTION_RUN_ID),
116
+ });
117
+ const out = arg("--out");
118
+ if (out)
119
+ writeEvidenceBundle(bundle, out);
120
+ else
121
+ console.log(JSON.stringify(bundle, null, 2));
122
+ return bundle;
123
+ }
124
+ const isCli = typeof process.argv[1] === "string" &&
125
+ /evidence-bundle\.(js|ts)$/.test(process.argv[1]);
126
+ if (isCli) {
127
+ main().catch((err) => {
128
+ console.error(err instanceof Error ? err.message : err);
129
+ process.exit(1);
130
+ });
131
+ }
132
+ //# sourceMappingURL=evidence-bundle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"evidence-bundle.js","sourceRoot":"","sources":["../src/evidence-bundle.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -19,15 +19,17 @@ export { safeFetch, runAgentcashFetch, main as safeFetchMain, type SafeFetchOpti
19
19
  export { installTwzrdX402ClientHook, twzrdBeforePaymentCreation, evaluateBeforePaymentCreation, createTwzrdBeforePaymentHook, mapX402SolanaRequirements, flattenDeclaredResource, resourceUrlFromPaymentRequired, type X402ClientLike, type X402SelectedRequirements, type X402DeclaredResource, type BeforePaymentCreationContext, type BeforePaymentCreationResult, type InstallX402ClientHookOptions, type X402PaymentControlOptions, type X402SolanaBeforePaymentContext, } from "./x402-client-hook.js";
20
20
  export { RESOURCE_BIND_DOMAIN, RESOURCE_BIND_EXTRA_KEY, RESOURCE_BIND_MEMO_PREFIX, RESOURCE_BIND_MEMO_MAX, ZERO_BODY_HASH, canonicalResourceUrl, resourceBindLeafHash, networksEquivalent, rawReqFromPaymentRequired, rememberRawInvoice, wrapFetchRememberInvoice, resourceBindMemo, memoContainsResourceBind, stampResourceBind, evaluateResourceBind, type BindStrength, type ResourceBindReq, type ResourceBindDecision, } from "./resource-bind.js";
21
21
  export { extractSvmMemoFromTransaction, extractSvmTransferLegs, evaluateResourceBindFromSvmTx, evaluateResourceBindLegsFromSvmTx, MEMO_PROGRAM_ADDRESS as RESOURCE_BIND_MEMO_PROGRAM, type ResourceBindLeafFields, type SvmTransferLegs, } from "./resource-bind-tx.js";
22
- export { twzrd, spendControlSafeFetch, type SpendControlOptions, type SpendControlResult, } from "./spend-control.js";
22
+ export { twzrd, spendControlSafeFetch, verifyOfferBindingAfterPay, type OfferBindingCheck, type SpendControlOptions, type SpendControlResult, } from "./spend-control.js";
23
23
  export { createFileSpendLedger } from "./spend-ledger-file.js";
24
24
  export { createFileDecisionLedger, DECISION_LEDGER_SCHEMA_VERSION, type DecisionLedgerRow, type RecordDecisionInput, type FileDecisionLedgerOptions, } from "./decision-ledger-file.js";
25
- 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";
25
+ 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, isInternalIntegration, } from "./adoption-proof.js";
26
+ export { listResources, listX402Directory, listDirectoryCallables, pickCallable, normalizeDirectoryRow, type DirectoryListing, type DirectorySource, type ListDirectoryOptions, } from "./directory.js";
27
+ export { exportEvidenceBundle, exportEvidenceBundleFromAdoptionProof, writeEvidenceBundle, fingerprint, EVIDENCE_BUNDLE_SCHEMA, main as evidenceBundleMain, type EvidenceBundle, type EvidenceDecision, type EvidenceBind, type EvidenceReceipt, type EvidenceLedgerSlice, type EvidenceOutcomeAttestation, type ExportEvidenceBundleOptions, } from "./evidence-bundle.js";
26
28
  export { quickCheck, QUICK_PRICE_USDC, type QuickCheckResult, type QuickCheckOptions, type TwzrdTier, } from "./quick.js";
27
29
  export { createSponsoredX402Fetch, type SponsorSettle, type SponsoredX402Options, } from "./sponsored.js";
28
30
  export type { TwzrdDecision, TwzrdReadinessCard, TwzrdPreflightInput, TwzrdGateConfig, TwzrdApproveContext, TwzrdApprovalResult, TwzrdUpsellContext, X402PaymentRequirements, X402PaymentRequiredBody, X402McpPaymentRequest, X402McpPaymentRequestedContext, } from "./types.js";
29
31
  export { canonicalJson, intentHash, toMicroUsd, fromMicroUsd, INTENT_HASH_PREFIX, type PaymentIntent, type PaymentProtocol, } from "./intent.js";
30
- export { assertIntentApproved, createDecisionRegistry, createLocalDecisionSigner, createSeededDecisionSigner, decisionPreimage, MAX_CITED_OUTCOMES, newDecisionId, normalizeCitedOutcomes, signDecision, verifyDecisionSignature, TwzrdIntentBindingError, type AssertIntentApprovedOptions, type BindingErrorCode, type DecisionConstraints, type DecisionRegistry, type DecisionSigner, type PaymentDecision, type PaymentDecisionVerdict, } from "./decision-token.js";
32
+ export { assertIntentApproved, createDecisionRegistry, createLocalDecisionSigner, createSeededDecisionSigner, decisionPreimage, MAX_CITED_OUTCOMES, newDecisionId, normalizeCitedOutcomes, signDecision, verifyDecisionSignature, TwzrdIntentBindingError, MISSING_VERIFIER_KEY, MISSING_VERIFICATION_KEY, type AssertIntentApprovedOptions, type BindingErrorCode, type DecisionConstraints, type DecisionRegistry, type DecisionSigner, type PaymentDecision, type PaymentDecisionVerdict, } from "./decision-token.js";
31
33
  export { buildBlockedNeverSignedAttestation, buildOutcomeAttestation, computeDecisionOutcomeLeafV1, DECISION_OUTCOME_V1_DOMAIN, verifyOutcomeAttestationSignature, type DecisionOutcomeAttestation, type DecisionOutcomeFields, type OutcomeKind, type OutcomeVerdict, } from "./outcome-attestation.js";
32
34
  export { createMemorySpendLedger, evaluateIntent, POLICY_VERSION, TWZRD_BUDGET_EXCEEDED, type CounterpartyIntelligence, type EvaluateIntentOptions, type IntelligenceProvider, type Mandate, type SpendLedger, type SpendPolicy, } from "./policy-runtime.js";
33
35
  export { ap2CheckoutToIntent, x402RequirementsToIntent, type Ap2Cart, type Ap2UserMandate, type X402IntentContext, } from "./intent-adapters.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":"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"}
package/dist/index.js CHANGED
@@ -22,15 +22,19 @@ export { safeFetch, runAgentcashFetch, main as safeFetchMain, } from "./safe-fet
22
22
  export { installTwzrdX402ClientHook, twzrdBeforePaymentCreation, evaluateBeforePaymentCreation, createTwzrdBeforePaymentHook, mapX402SolanaRequirements, flattenDeclaredResource, resourceUrlFromPaymentRequired, } from "./x402-client-hook.js";
23
23
  export { RESOURCE_BIND_DOMAIN, RESOURCE_BIND_EXTRA_KEY, RESOURCE_BIND_MEMO_PREFIX, RESOURCE_BIND_MEMO_MAX, ZERO_BODY_HASH, canonicalResourceUrl, resourceBindLeafHash, networksEquivalent, rawReqFromPaymentRequired, rememberRawInvoice, wrapFetchRememberInvoice, resourceBindMemo, memoContainsResourceBind, stampResourceBind, evaluateResourceBind, } from "./resource-bind.js";
24
24
  export { extractSvmMemoFromTransaction, extractSvmTransferLegs, evaluateResourceBindFromSvmTx, evaluateResourceBindLegsFromSvmTx, MEMO_PROGRAM_ADDRESS as RESOURCE_BIND_MEMO_PROGRAM, } from "./resource-bind-tx.js";
25
- export { twzrd, spendControlSafeFetch, } from "./spend-control.js";
25
+ export { twzrd, spendControlSafeFetch, verifyOfferBindingAfterPay, } from "./spend-control.js";
26
26
  export { createFileSpendLedger } from "./spend-ledger-file.js";
27
27
  export { createFileDecisionLedger, DECISION_LEDGER_SCHEMA_VERSION, } from "./decision-ledger-file.js";
28
- export { runGateAdoptionProof, main as adoptionProofMain, ADOPTION_TRANSCRIPT_SCHEMA, ADOPTION_PROOF_SELLER, ADOPTION_PROOF_NETWORK, ADOPTION_PROOF_RESOURCE, } from "./adoption-proof.js";
28
+ export { runGateAdoptionProof, main as adoptionProofMain, ADOPTION_TRANSCRIPT_SCHEMA, ADOPTION_PROOF_SELLER, ADOPTION_PROOF_NETWORK, ADOPTION_PROOF_RESOURCE, isInternalIntegration, } from "./adoption-proof.js";
29
+ export { listResources, listX402Directory, listDirectoryCallables, pickCallable, normalizeDirectoryRow, } from "./directory.js";
30
+ export { exportEvidenceBundle, exportEvidenceBundleFromAdoptionProof, writeEvidenceBundle, fingerprint, EVIDENCE_BUNDLE_SCHEMA, main as evidenceBundleMain, } from "./evidence-bundle.js";
29
31
  export { quickCheck, QUICK_PRICE_USDC, } from "./quick.js";
30
32
  export { createSponsoredX402Fetch, } from "./sponsored.js";
31
33
  /* ── TWZRD Payment Control (protocol-neutral authorization core) ── */
32
34
  export { canonicalJson, intentHash, toMicroUsd, fromMicroUsd, INTENT_HASH_PREFIX, } from "./intent.js";
33
- export { assertIntentApproved, createDecisionRegistry, createLocalDecisionSigner, createSeededDecisionSigner, decisionPreimage, MAX_CITED_OUTCOMES, newDecisionId, normalizeCitedOutcomes, signDecision, verifyDecisionSignature, TwzrdIntentBindingError, } from "./decision-token.js";
35
+ // unsafeAssertIntentApprovedWithoutSignature is intentionally absent here:
36
+ // it is exported only from the `twzrd-x402-gate/unsafe` subpath (./unsafe.js).
37
+ export { assertIntentApproved, createDecisionRegistry, createLocalDecisionSigner, createSeededDecisionSigner, decisionPreimage, MAX_CITED_OUTCOMES, newDecisionId, normalizeCitedOutcomes, signDecision, verifyDecisionSignature, TwzrdIntentBindingError, MISSING_VERIFIER_KEY, MISSING_VERIFICATION_KEY, } from "./decision-token.js";
34
38
  export { buildBlockedNeverSignedAttestation, buildOutcomeAttestation, computeDecisionOutcomeLeafV1, DECISION_OUTCOME_V1_DOMAIN, verifyOutcomeAttestationSignature, } from "./outcome-attestation.js";
35
39
  export { createMemorySpendLedger, evaluateIntent, POLICY_VERSION, TWZRD_BUDGET_EXCEEDED, } from "./policy-runtime.js";
36
40
  export { ap2CheckoutToIntent, x402RequirementsToIntent, } from "./intent-adapters.js";
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -8,6 +8,8 @@ export type SpendControlOptions = {
8
8
  url: string;
9
9
  paymentRequired: unknown;
10
10
  selected: Record<string, unknown>;
11
+ /** Present after a hard bind-v1 verify on the compose path. */
12
+ transactionBase64?: string;
11
13
  }) => Promise<{
12
14
  transactionBase64?: string;
13
15
  response?: Response;
@@ -15,28 +17,16 @@ export type SpendControlOptions = {
15
17
  /**
16
18
  * Build, but do not sign or submit, the bound SVM transaction. Required
17
19
  * with `requireOfferBinding`; the gate verifies these exact bytes before it
18
- * calls `submitBoundPayment`.
20
+ * calls `pay()`.
19
21
  */
20
- prepareBoundPayment?: (args: {
22
+ composeBoundTransaction?: (args: {
21
23
  url: string;
22
24
  paymentRequired: unknown;
23
25
  selected: Record<string, unknown>;
24
26
  leafHash: string;
25
27
  memo: string;
26
28
  }) => Promise<{
27
- transactionBase64: string;
28
- }>;
29
- /**
30
- * The signing/submission boundary for a prepared bound payment. It receives
31
- * only the transaction that passed local bind-v1 validation.
32
- */
33
- submitBoundPayment?: (args: {
34
- transactionBase64: string;
35
- url: string;
36
- paymentRequired: unknown;
37
- selected: Record<string, unknown>;
38
- }) => Promise<{
39
- response?: Response;
29
+ transactionBase64?: string;
40
30
  }>;
41
31
  preflight?: (payTo: string, priceUsdc: number) => Promise<{
42
32
  decision?: string;
@@ -58,6 +48,27 @@ export type SpendControlResult = {
58
48
  };
59
49
  signerInvocations: number;
60
50
  };
51
+ export type OfferBindingCheck = {
52
+ verdict: "allow" | "block";
53
+ reason?: string;
54
+ receipt: {
55
+ strength: string;
56
+ leaf_hash: string | null;
57
+ fact_type: "resource_bound";
58
+ };
59
+ };
60
+ /**
61
+ * Bind-v1 check on the composed, not-yet-submitted transaction. Despite the
62
+ * name (kept for compat with the 0.9.2 call site), `spendControlSafeFetch`
63
+ * calls this BEFORE `pay()`: compose, then verify these exact bytes, then pay.
64
+ */
65
+ export declare function verifyOfferBindingAfterPay(args: {
66
+ transactionBase64?: string;
67
+ leafHash: string | null;
68
+ payTo: string;
69
+ asset: string;
70
+ amountRaw: string;
71
+ }): Promise<OfferBindingCheck>;
61
72
  export declare function spendControlSafeFetch(url: string, opts?: SpendControlOptions): Promise<SpendControlResult>;
62
73
  export declare const twzrd: {
63
74
  safeFetch: typeof spendControlSafeFetch;
@@ -1 +1 @@
1
- {"version":3,"file":"spend-control.d.ts","sourceRoot":"","sources":["../src/spend-control.ts"],"names":[],"mappings":"AAiBA,OAAO,EAEL,KAAK,WAAW,EACjB,MAAM,qBAAqB,CAAC;AAY7B,MAAM,MAAM,mBAAmB,GAAG;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;IACrB,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE;QACX,GAAG,EAAE,MAAM,CAAC;QACZ,eAAe,EAAE,OAAO,CAAC;QACzB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACnC,KAAK,OAAO,CAAC;QAAE,iBAAiB,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,QAAQ,CAAA;KAAE,CAAC,CAAC;IACnE;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,CAAC,IAAI,EAAE;QAC3B,GAAG,EAAE,MAAM,CAAC;QACZ,eAAe,EAAE,OAAO,CAAC;QACzB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAClC,QAAQ,EAAE,MAAM,CAAC;QACjB,IAAI,EAAE,MAAM,CAAC;KACd,KAAK,OAAO,CAAC;QAAE,iBAAiB,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC7C;;;OAGG;IACH,kBAAkB,CAAC,EAAE,CAAC,IAAI,EAAE;QAC1B,iBAAiB,EAAE,MAAM,CAAC;QAC1B,GAAG,EAAE,MAAM,CAAC;QACZ,eAAe,EAAE,OAAO,CAAC;QACzB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACnC,KAAK,OAAO,CAAC;QAAE,QAAQ,CAAC,EAAE,QAAQ,CAAA;KAAE,CAAC,CAAC;IACvC,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACjF,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,2DAA2D;IAC3D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,OAAO,EAAE,OAAO,GAAG,MAAM,GAAG,OAAO,CAAC;IACpC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,OAAO,CAAC,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,SAAS,EAAE,gBAAgB,CAAA;KAAE,CAAC;IACtF,iBAAiB,EAAE,MAAM,CAAC;CAC3B,CAAC;AAqBF,wBAAsB,qBAAqB,CACzC,GAAG,EAAE,MAAM,EACX,IAAI,GAAE,mBAAwB,GAC7B,OAAO,CAAC,kBAAkB,CAAC,CAsG7B;AAED,eAAO,MAAM,KAAK;;CAAuC,CAAC"}
1
+ {"version":3,"file":"spend-control.d.ts","sourceRoot":"","sources":["../src/spend-control.ts"],"names":[],"mappings":"AAiBA,OAAO,EAEL,KAAK,WAAW,EACjB,MAAM,qBAAqB,CAAC;AAY7B,MAAM,MAAM,mBAAmB,GAAG;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;IACrB,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE;QACX,GAAG,EAAE,MAAM,CAAC;QACZ,eAAe,EAAE,OAAO,CAAC;QACzB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAClC,+DAA+D;QAC/D,iBAAiB,CAAC,EAAE,MAAM,CAAC;KAC5B,KAAK,OAAO,CAAC;QAAE,iBAAiB,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,QAAQ,CAAA;KAAE,CAAC,CAAC;IACnE;;;;OAIG;IACH,uBAAuB,CAAC,EAAE,CAAC,IAAI,EAAE;QAC/B,GAAG,EAAE,MAAM,CAAC;QACZ,eAAe,EAAE,OAAO,CAAC;QACzB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAClC,QAAQ,EAAE,MAAM,CAAC;QACjB,IAAI,EAAE,MAAM,CAAC;KACd,KAAK,OAAO,CAAC;QAAE,iBAAiB,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC9C,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACjF,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,2DAA2D;IAC3D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,OAAO,EAAE,OAAO,GAAG,MAAM,GAAG,OAAO,CAAC;IACpC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,OAAO,CAAC,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,SAAS,EAAE,gBAAgB,CAAA;KAAE,CAAC;IACtF,iBAAiB,EAAE,MAAM,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,SAAS,EAAE,gBAAgB,CAAA;KAAE,CAAC;CACtF,CAAC;AAOF;;;;GAIG;AACH,wBAAsB,0BAA0B,CAAC,IAAI,EAAE;IACrD,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;CACnB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAkC7B;AAqBD,wBAAsB,qBAAqB,CACzC,GAAG,EAAE,MAAM,EACX,IAAI,GAAE,mBAAwB,GAC7B,OAAO,CAAC,kBAAkB,CAAC,CAgH7B;AAED,eAAO,MAAM,KAAK;;CAAuC,CAAC"}
@@ -16,6 +16,50 @@ import { createFileSpendLedger } from "./spend-ledger-file.js";
16
16
  import { rememberRawInvoice, resourceBindMemo, stampResourceBind, } from "./resource-bind.js";
17
17
  import { evaluateResourceBindLegsFromSvmTx } from "./resource-bind-tx.js";
18
18
  import { resourceUrlFromPaymentRequired } from "./x402-client-hook.js";
19
+ /** Shared shape for a bind-v1 check that never reached verification. */
20
+ function refuseBindReceipt(leaf_hash) {
21
+ return { strength: "refuse", leaf_hash, fact_type: "resource_bound" };
22
+ }
23
+ /**
24
+ * Bind-v1 check on the composed, not-yet-submitted transaction. Despite the
25
+ * name (kept for compat with the 0.9.2 call site), `spendControlSafeFetch`
26
+ * calls this BEFORE `pay()`: compose, then verify these exact bytes, then pay.
27
+ */
28
+ export async function verifyOfferBindingAfterPay(args) {
29
+ const leaf_hash = args.leafHash ?? null;
30
+ if (!args.transactionBase64) {
31
+ return {
32
+ verdict: "block",
33
+ reason: "bind_required_no_settlement",
34
+ receipt: refuseBindReceipt(leaf_hash),
35
+ };
36
+ }
37
+ if (!leaf_hash) {
38
+ // Distinct from "no settlement": a caller invoking this exported check
39
+ // directly with no expected leaf hash cannot get a "hard" result — make
40
+ // that an explicit refusal instead of silently verifying against "".
41
+ return {
42
+ verdict: "block",
43
+ reason: "bind_required_no_leaf_hash",
44
+ receipt: refuseBindReceipt(leaf_hash),
45
+ };
46
+ }
47
+ const d = await evaluateResourceBindLegsFromSvmTx(args.transactionBase64, {
48
+ leaf_hash,
49
+ pay_to: args.payTo,
50
+ asset: args.asset,
51
+ amount_raw: args.amountRaw,
52
+ });
53
+ const receipt = {
54
+ strength: d.strength,
55
+ leaf_hash: d.leaf_hash,
56
+ fact_type: "resource_bound",
57
+ };
58
+ if (d.strength !== "hard") {
59
+ return { verdict: "block", reason: "bind_mismatch", receipt };
60
+ }
61
+ return { verdict: "allow", receipt };
62
+ }
19
63
  /**
20
64
  * Default cumulative enforcement must outlive an individual safeFetch call.
21
65
  * It is process-scoped only; callers that need restart or multi-process safety
@@ -79,6 +123,11 @@ export async function spendControlSafeFetch(url, opts = {}) {
79
123
  const agentKey = `agent:${opts.agentId ?? "default"}`;
80
124
  const merchantKey = `merchant:${payTo}`;
81
125
  const mandateKey = `mandate:${opts.mandateId ?? "default"}`;
126
+ const recordSpend = () => {
127
+ ledger.record(agentKey, spendMicro, now);
128
+ ledger.record(merchantKey, spendMicro, now);
129
+ ledger.record(mandateKey, spendMicro, now);
130
+ };
82
131
  if (maxMicro != null) {
83
132
  for (const key of [agentKey, merchantKey, mandateKey]) {
84
133
  if (ledger.spentMicro(key, WIN, now) + spendMicro > maxMicro) {
@@ -104,31 +153,42 @@ export async function spendControlSafeFetch(url, opts = {}) {
104
153
  let signerInvocations = 0;
105
154
  if (opts.requireOfferBinding) {
106
155
  const leaf_hash = stamped?.leaf_hash ?? null;
107
- if (!leaf_hash || !opts.prepareBoundPayment || !opts.submitBoundPayment) {
108
- return {
109
- verdict: "block", reason: "bind_requires_prepared_payment", signerInvocations: 0,
110
- receipt: { strength: "refuse", leaf_hash, fact_type: "resource_bound" },
111
- };
156
+ const refuseNoCompose = () => ({
157
+ verdict: "block",
158
+ reason: "bind_required_no_compose",
159
+ signerInvocations: 0,
160
+ receipt: refuseBindReceipt(leaf_hash),
161
+ });
162
+ if (!leaf_hash || !opts.composeBoundTransaction) {
163
+ return refuseNoCompose();
112
164
  }
113
- const prepared = await opts.prepareBoundPayment({
165
+ const composed = await opts.composeBoundTransaction({
114
166
  url, paymentRequired: body, selected, leafHash: leaf_hash,
115
167
  memo: resourceBindMemo(leaf_hash),
116
168
  });
117
- txb64 = prepared.transactionBase64;
118
- const d = await evaluateResourceBindLegsFromSvmTx(txb64, {
119
- leaf_hash, pay_to: payTo, asset: String(selected.asset ?? ""), amount_raw: String(amountMicro),
169
+ txb64 = composed.transactionBase64;
170
+ if (!txb64) {
171
+ return refuseNoCompose();
172
+ }
173
+ const checked = await verifyOfferBindingAfterPay({
174
+ transactionBase64: txb64,
175
+ leafHash: leaf_hash,
176
+ payTo,
177
+ asset: String(selected.asset ?? ""),
178
+ amountRaw: String(amountMicro),
120
179
  });
121
- const receipt = { strength: d.strength, leaf_hash: d.leaf_hash, fact_type: "resource_bound" };
122
- if (d.strength !== "hard") {
123
- return { verdict: "block", reason: "bind_mismatch", receipt, signerInvocations: 0 };
180
+ const receipt = checked.receipt;
181
+ if (checked.verdict === "block") {
182
+ return { verdict: "block", reason: checked.reason ?? "bind_mismatch", receipt, signerInvocations: 0 };
124
183
  }
125
- signerInvocations = 1;
126
- const paid = await opts.submitBoundPayment({ transactionBase64: txb64, url, paymentRequired: body, selected });
127
- if (paid.response)
128
- response = paid.response;
129
- ledger.record(agentKey, spendMicro, now);
130
- ledger.record(merchantKey, spendMicro, now);
131
- ledger.record(mandateKey, spendMicro, now);
184
+ if (opts.pay) {
185
+ signerInvocations = 1;
186
+ const paid = await opts.pay({ url, paymentRequired: body, selected, transactionBase64: txb64 });
187
+ if (paid.response)
188
+ response = paid.response;
189
+ }
190
+ if (signerInvocations > 0)
191
+ recordSpend();
132
192
  return { verdict, response, receipt, signerInvocations };
133
193
  }
134
194
  if (opts.pay) {
@@ -136,14 +196,10 @@ export async function spendControlSafeFetch(url, opts = {}) {
136
196
  const paid = await opts.pay({ url, paymentRequired: body, selected });
137
197
  if (paid.response)
138
198
  response = paid.response;
139
- txb64 = paid.transactionBase64;
140
199
  }
141
200
  let receipt;
142
- if (signerInvocations > 0 || !opts.pay) {
143
- ledger.record(agentKey, spendMicro, now);
144
- ledger.record(merchantKey, spendMicro, now);
145
- ledger.record(mandateKey, spendMicro, now);
146
- }
201
+ if (signerInvocations > 0)
202
+ recordSpend();
147
203
  return { verdict, response, receipt, signerInvocations };
148
204
  }
149
205
  export const twzrd = { safeFetch: spendControlSafeFetch };
@@ -1 +1 @@
1
- {"version":3,"file":"spend-control.js","sourceRoot":"","sources":["../src/spend-control.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"spend-control.js","sourceRoot":"","sources":["../src/spend-control.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Unsafe-grade surface, deliberately kept OFF the package root.
3
+ *
4
+ * Everything here skips a control the safe API enforces (e.g. intent matching
5
+ * without decision-signature verification, so forged tokens pass when the
6
+ * remaining fields match). Import from `twzrd-x402-gate/unsafe` only when
7
+ * token provenance is guaranteed by other means. Prefer the root-exported
8
+ * `assertIntentApproved` everywhere else.
9
+ */
10
+ export { unsafeAssertIntentApprovedWithoutSignature, type UnsafeAssertIntentApprovedOptions, } from "./decision-token.js";
11
+ //# sourceMappingURL=unsafe.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unsafe.d.ts","sourceRoot":"","sources":["../src/unsafe.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EACL,0CAA0C,EAC1C,KAAK,iCAAiC,GACvC,MAAM,qBAAqB,CAAC"}
package/dist/unsafe.js ADDED
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Unsafe-grade surface, deliberately kept OFF the package root.
3
+ *
4
+ * Everything here skips a control the safe API enforces (e.g. intent matching
5
+ * without decision-signature verification, so forged tokens pass when the
6
+ * remaining fields match). Import from `twzrd-x402-gate/unsafe` only when
7
+ * token provenance is guaranteed by other means. Prefer the root-exported
8
+ * `assertIntentApproved` everywhere else.
9
+ */
10
+ export { unsafeAssertIntentApprovedWithoutSignature, } from "./decision-token.js";
11
+ //# sourceMappingURL=unsafe.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unsafe.js","sourceRoot":"","sources":["../src/unsafe.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EACL,0CAA0C,GAE3C,MAAM,qBAAqB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "twzrd-x402-gate",
3
- "version": "0.9.3",
3
+ "version": "0.10.0",
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), PayAI x402-solana beforePayment (2.1.0+), 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.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -8,7 +8,8 @@
8
8
  "bin": {
9
9
  "twzrd-safe-fetch": "./bin/twzrd-safe-fetch.js",
10
10
  "twzrd-gate-eval-refuse": "./bin/twzrd-gate-eval-refuse.js",
11
- "twzrd-gate-doctor": "./bin/twzrd-gate-doctor.js"
11
+ "twzrd-gate-doctor": "./bin/twzrd-gate-doctor.js",
12
+ "twzrd-evidence-bundle": "./bin/twzrd-evidence-bundle.js"
12
13
  },
13
14
  "exports": {
14
15
  ".": {
@@ -19,6 +20,10 @@
19
20
  "types": "./dist/safe-fetch.d.ts",
20
21
  "import": "./dist/safe-fetch.js"
21
22
  },
23
+ "./unsafe": {
24
+ "types": "./dist/unsafe.d.ts",
25
+ "import": "./dist/unsafe.js"
26
+ },
22
27
  "./package.json": "./package.json"
23
28
  },
24
29
  "files": [
@@ -44,6 +49,8 @@
44
49
  "x402-solana-before-payment-falsify": "tsx examples/x402-solana-before-payment-falsify.ts",
45
50
  "official-dogfood": "tsx examples/official-x402-dogfood.ts",
46
51
  "adoption-proof": "tsx src/adoption-proof.ts",
52
+ "evidence-bundle": "tsx src/evidence-bundle.ts",
53
+ "commerce-kit": "tsx examples/commerce-kit.ts",
47
54
  "demo:buyer-no-spend": "tsx src/adoption-proof.ts -- --integration ops-demo-buyer-no-spend",
48
55
  "live-autogate-matrix": "tsx examples/live-autogate-matrix.ts",
49
56
  "gate-eval-refuse": "node bin/twzrd-gate-eval-refuse.js",