twzrd-x402-gate 0.9.2 → 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/QUICKSTART.md +4 -4
- package/README.md +24 -8
- package/bin/twzrd-evidence-bundle.js +26 -0
- package/dist/adoption-proof.d.ts +1 -0
- package/dist/adoption-proof.d.ts.map +1 -1
- package/dist/adoption-proof.js +2 -1
- package/dist/adoption-proof.js.map +1 -1
- package/dist/decision-ledger-file.d.ts +49 -0
- package/dist/decision-ledger-file.d.ts.map +1 -0
- package/dist/decision-ledger-file.js +95 -0
- package/dist/decision-ledger-file.js.map +1 -0
- package/dist/decision-token.d.ts +25 -3
- package/dist/decision-token.d.ts.map +1 -1
- package/dist/decision-token.js +44 -11
- package/dist/decision-token.js.map +1 -1
- package/dist/directory.d.ts +35 -0
- package/dist/directory.d.ts.map +1 -0
- package/dist/directory.js +95 -0
- package/dist/directory.js.map +1 -0
- package/dist/evidence-bundle.d.ts +89 -0
- package/dist/evidence-bundle.d.ts.map +1 -0
- package/dist/evidence-bundle.js +132 -0
- package/dist/evidence-bundle.js.map +1 -0
- package/dist/index.d.ts +6 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -3
- package/dist/index.js.map +1 -1
- package/dist/policy-runtime.d.ts +4 -2
- package/dist/policy-runtime.d.ts.map +1 -1
- package/dist/policy-runtime.js +33 -1
- package/dist/policy-runtime.js.map +1 -1
- package/dist/policy.d.ts +3 -1
- package/dist/policy.d.ts.map +1 -1
- package/dist/policy.js +7 -0
- package/dist/policy.js.map +1 -1
- package/dist/spend-control.d.ts +37 -0
- package/dist/spend-control.d.ts.map +1 -1
- package/dist/spend-control.js +100 -31
- package/dist/spend-control.js.map +1 -1
- package/dist/types.d.ts +2 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/unsafe.d.ts +11 -0
- package/dist/unsafe.d.ts.map +1 -0
- package/dist/unsafe.js +11 -0
- package/dist/unsafe.js.map +1 -0
- package/package.json +13 -5
package/QUICKSTART.md
CHANGED
|
@@ -5,13 +5,13 @@ API key, no signup, no config — every `TWZRD_*` env var is an optional overrid
|
|
|
5
5
|
is unreachable the gate never *invents* a wash flag (the wash check fails open); a failed
|
|
6
6
|
preflight blocks the payment by default (`TWZRD_FAIL_OPEN=true` to allow).
|
|
7
7
|
|
|
8
|
-
**Pin:** `twzrd-x402-gate@0.
|
|
8
|
+
**Pin:** `twzrd-x402-gate@0.9.3` + stock PayAI client `x402-solana@3.0.0` (official
|
|
9
9
|
`beforePayment` seat). `@x402/core` Path E remains supported; refuse script is fallback.
|
|
10
10
|
|
|
11
11
|
## 1. Stock PayAI client (default seat — copy-paste)
|
|
12
12
|
|
|
13
13
|
```bash
|
|
14
|
-
npm install twzrd-x402-gate@0.
|
|
14
|
+
npm install twzrd-x402-gate@0.9.3 x402-solana@3.0.0
|
|
15
15
|
```
|
|
16
16
|
|
|
17
17
|
> **ESM-only.** The package ships `import` conditions only — a CommonJS
|
|
@@ -36,7 +36,7 @@ Then: `await client.fetch("https://merchant.example/paid");`
|
|
|
36
36
|
## 1b. Official `@x402/core` client (Path E)
|
|
37
37
|
|
|
38
38
|
```bash
|
|
39
|
-
npm install twzrd-x402-gate@0.
|
|
39
|
+
npm install twzrd-x402-gate@0.9.3 @x402/core @x402/fetch @x402/svm
|
|
40
40
|
```
|
|
41
41
|
|
|
42
42
|
```typescript
|
|
@@ -53,7 +53,7 @@ installTwzrdAutoGate(client, { refuseWashFlagged: true });
|
|
|
53
53
|
|
|
54
54
|
```bash
|
|
55
55
|
# Stock-client seat proof (beforePayment, signer_invocation_count=0)
|
|
56
|
-
# needs x402-solana@
|
|
56
|
+
# needs x402-solana@3.0.0 installed - the harness fallback runs but does not
|
|
57
57
|
# clear closure (its negative arm counts a would-be sign)
|
|
58
58
|
npm run x402-solana-before-payment-proof
|
|
59
59
|
# writes block-proof-<run_id>.json — hook: beforePayment
|
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
|
|
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,13 +16,20 @@ 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, //
|
|
15
|
-
|
|
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
|
|
16
22
|
});
|
|
17
23
|
// result.verdict: "allow" | "warn" | "block" — blocks have signerInvocations === 0
|
|
18
24
|
// result.receipt: { strength: "hard"|"soft"|"refuse", leaf_hash, fact_type: "resource_bound" }
|
|
19
25
|
```
|
|
20
26
|
|
|
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.
|
|
32
|
+
|
|
21
33
|
Full walkthrough: [QUICKSTART.md](https://github.com/twzrd-sol/twzrd-trust/blob/main/QUICKSTART.md) ·
|
|
22
34
|
verify receipts yourself: [REVIEW.md](https://github.com/twzrd-sol/twzrd-trust/blob/main/REVIEW.md)
|
|
23
35
|
|
|
@@ -68,7 +80,7 @@ transfer on-chain. Wash/sybil edges are primarily discounted in TWZRD scoring, n
|
|
|
68
80
|
revenue refusal.
|
|
69
81
|
|
|
70
82
|
```bash
|
|
71
|
-
npm install twzrd-x402-gate@0.
|
|
83
|
+
npm install twzrd-x402-gate@0.9.3
|
|
72
84
|
```
|
|
73
85
|
|
|
74
86
|
```typescript
|
|
@@ -112,7 +124,7 @@ Fixture-backed SVM extract tests live in `test/seller-hook.test.ts` +
|
|
|
112
124
|
Install the published gate and run against wash fixtures:
|
|
113
125
|
|
|
114
126
|
```bash
|
|
115
|
-
npm install twzrd-x402-gate@0.
|
|
127
|
+
npm install twzrd-x402-gate@0.9.3
|
|
116
128
|
# from package root after install, or from a checkout:
|
|
117
129
|
npm run wash-dogfood
|
|
118
130
|
```
|
|
@@ -257,7 +269,7 @@ Dogfood (one public live proof path):
|
|
|
257
269
|
## Install
|
|
258
270
|
|
|
259
271
|
```bash
|
|
260
|
-
npm install twzrd-x402-gate@0.
|
|
272
|
+
npm install twzrd-x402-gate@0.9.3
|
|
261
273
|
```
|
|
262
274
|
|
|
263
275
|
Do not hardcode a version in this doc — every past pin here (**0.5.4**, **0.7.1**, **0.8.5**,
|
|
@@ -303,8 +315,12 @@ assertIntentApproved(intentBeingSigned, token, {
|
|
|
303
315
|
registry, // replay / consume-once
|
|
304
316
|
publicKeyPem: signer.publicKeyPem, // signature verification
|
|
305
317
|
});
|
|
306
|
-
// throws
|
|
307
|
-
//
|
|
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";
|
|
308
324
|
```
|
|
309
325
|
|
|
310
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
|
+
});
|
package/dist/adoption-proof.d.ts
CHANGED
|
@@ -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;
|
|
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"}
|
package/dist/adoption-proof.js
CHANGED
|
@@ -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":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EACL,0BAA0B,GAK3B,MAAM,uBAAuB,CAAC;AAE/B,MAAM,CAAC,MAAM,0BAA0B,GAAG,mCAA4C,CAAC;AAEvF,wEAAwE;AACxE,MAAM,CAAC,MAAM,qBAAqB,GAAG,6CAA6C,CAAC;AACnF,MAAM,CAAC,MAAM,sBAAsB,GAAG,yCAAyC,CAAC;AAChF,MAAM,CAAC,MAAM,uBAAuB,GAAG,+CAA+C,CAAC;AAkFvF,SAAS,UAAU;IAIjB,IAAI,IAIS,CAAC;IACd,MAAM,MAAM,GAAmB;QAC7B,uBAAuB,CAAC,CAAC;YACvB,IAAI,GAAG,CAAC,CAAC;YACT,OAAO,MAAM,CAAC;QAChB,CAAC;KACF,CAAC;IACF,OAAO;QACL,MAAM;QACN,KAAK,CAAC,IAAI,CAAC,GAAG;YACZ,IAAI,CAAC,IAAI;gBAAE,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;YACjE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;QACnB,CAAC;KACF,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CAAC,QAAoC,EAAE,QAAiB;IAC5E,OAAO;QACL,cAAc,EAAE;YACd,QAAQ;YACR,SAAS,EAAE,QAAQ;YACnB,WAAW,EAAE,QAAQ,KAAK,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;YACxD,aAAa,EAAE,qBAAqB;SACrC;QACD,YAAY,EAAE,QAAQ,KAAK,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;KACxD,CAAC;AACJ,CAAC;AAED,SAAS,uBAAuB,CAAC,IAAa;IAK5C,IAAI,IAAI,GAAmB,IAAI,CAAC;IAChC,IAAI,UAAU,GAAkB,IAAI,CAAC;IACrC,MAAM,SAAS,GAAG,CAAC,KAAK,EAAE,IAAa,EAAE,IAA4C,EAAE,EAAE;QACvF,IAAI,GAAG,IAAI,OAAO,CAAC,IAAI,EAAE,OAAmD,CAAC,CAAC;QAC9E,UAAU,GAAG,IAAI,CAAC;QAClB,IAAI,OAAO,IAAI,EAAE,IAAI,KAAK,QAAQ,EAAE,CAAC;YACnC,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAgC,CAAC;gBACpE,IAAI,OAAO,MAAM,CAAC,aAAa,KAAK,QAAQ;oBAAE,UAAU,GAAG,MAAM,CAAC,aAAa,CAAC;YAClF,CAAC;YAAC,MAAM,CAAC;gBACP,yBAAyB;YAC3B,CAAC;QACH,CAAC;QACD,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;YACxC,MAAM,EAAE,GAAG;YACX,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;SAChD,CAAC,CAAC;IACL,CAAC,CAA4B,CAAC;IAC9B,OAAO;QACL,KAAK,EAAE,SAAS;QAChB,WAAW,EAAE,GAAG,EAAE,CAAC,IAAI;QACvB,gBAAgB,EAAE,GAAG,EAAE,CAAC,UAAU;KACnC,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CAAC,MAAc;IACtC,OAAO;QACL,KAAK,EAAE,qBAAqB;QAC5B,OAAO,EAAE,sBAAsB;QAC/B,MAAM;QACN,KAAK,EAAE,8CAA8C;QACrD,QAAQ,EAAE,uBAAuB;QACjC,MAAM,EAAE,OAAO;KAChB,CAAC;AACJ,CAAC;AAED,
|
|
1
|
+
{"version":3,"file":"adoption-proof.js","sourceRoot":"","sources":["../src/adoption-proof.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
export declare const DECISION_LEDGER_SCHEMA_VERSION = 1;
|
|
2
|
+
export type DecisionLedgerRow = {
|
|
3
|
+
schema_version: typeof DECISION_LEDGER_SCHEMA_VERSION;
|
|
4
|
+
decision_id: string;
|
|
5
|
+
at_unix_ms: number;
|
|
6
|
+
outcome: "allow" | "warn" | "block" | "error";
|
|
7
|
+
reason_codes: string[];
|
|
8
|
+
policy_version: string;
|
|
9
|
+
input: {
|
|
10
|
+
/** Public chain address, retained for settlement and counterparty joins. */
|
|
11
|
+
pay_to?: string;
|
|
12
|
+
resource_origin?: string;
|
|
13
|
+
network?: string;
|
|
14
|
+
/** Exact value retained for mandate/cap reconciliation. */
|
|
15
|
+
amount_micro?: string;
|
|
16
|
+
};
|
|
17
|
+
signer_invocations: number;
|
|
18
|
+
latency_ms?: number;
|
|
19
|
+
error?: {
|
|
20
|
+
code: string;
|
|
21
|
+
message?: string;
|
|
22
|
+
};
|
|
23
|
+
settlement?: {
|
|
24
|
+
status: "pending" | "settled" | "failed";
|
|
25
|
+
tx?: string;
|
|
26
|
+
};
|
|
27
|
+
};
|
|
28
|
+
export type RecordDecisionInput = Omit<DecisionLedgerRow, "schema_version" | "decision_id" | "at_unix_ms" | "input"> & {
|
|
29
|
+
decision_id?: string;
|
|
30
|
+
at_unix_ms?: number;
|
|
31
|
+
input: {
|
|
32
|
+
pay_to?: string;
|
|
33
|
+
resource?: string;
|
|
34
|
+
network?: string;
|
|
35
|
+
amount_micro?: string;
|
|
36
|
+
};
|
|
37
|
+
};
|
|
38
|
+
export type FileDecisionLedgerOptions = {
|
|
39
|
+
maxBufferedRows?: number;
|
|
40
|
+
rotateBytes?: number;
|
|
41
|
+
/** Opt in only when this library owns the host process lifecycle. Default: false. */
|
|
42
|
+
flushOnSignals?: boolean;
|
|
43
|
+
};
|
|
44
|
+
/** `record` never blocks the payment path. `flush` fsyncs an async batch. */
|
|
45
|
+
export declare function createFileDecisionLedger(filePath: string, options?: FileDecisionLedgerOptions): {
|
|
46
|
+
record(input: RecordDecisionInput): DecisionLedgerRow;
|
|
47
|
+
flush: () => Promise<void>;
|
|
48
|
+
};
|
|
49
|
+
//# sourceMappingURL=decision-ledger-file.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decision-ledger-file.d.ts","sourceRoot":"","sources":["../src/decision-ledger-file.ts"],"names":[],"mappings":"AAUA,eAAO,MAAM,8BAA8B,IAAI,CAAC;AAEhD,MAAM,MAAM,iBAAiB,GAAG;IAC9B,cAAc,EAAE,OAAO,8BAA8B,CAAC;IACtD,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,OAAO,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC;IAC9C,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE;QACL,4EAA4E;QAC5E,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,2DAA2D;QAC3D,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB,CAAC;IACF,kBAAkB,EAAE,MAAM,CAAC;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3C,UAAU,CAAC,EAAE;QAAE,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,QAAQ,CAAC;QAAC,EAAE,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CACxE,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG,IAAI,CAAC,iBAAiB,EAAE,gBAAgB,GAAG,aAAa,GAAG,YAAY,GAAG,OAAO,CAAC,GAAG;IACrH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CACxF,CAAC;AAaF,MAAM,MAAM,yBAAyB,GAAG;IACtC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,qFAAqF;IACrF,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B,CAAC;AAEF,6EAA6E;AAC7E,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,GAAE,yBAA8B;kBAqChF,mBAAmB,GAAG,iBAAiB;iBA9B/B,OAAO,CAAC,IAAI,CAAC;EA4CtC"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Append-only decision ledger for support, evaluation, and settlement joins.
|
|
3
|
+
* Single-process writer only: do not share one file between processes. Rows deliberately carry a schema version: readers must reject formats they
|
|
4
|
+
* do not understand rather than silently misinterpret an audit record.
|
|
5
|
+
*/
|
|
6
|
+
import { mkdirSync } from "node:fs";
|
|
7
|
+
import { appendFile, open, rename, stat } from "node:fs/promises";
|
|
8
|
+
import { dirname } from "node:path";
|
|
9
|
+
import { randomUUID } from "node:crypto";
|
|
10
|
+
export const DECISION_LEDGER_SCHEMA_VERSION = 1;
|
|
11
|
+
function redactInput(input) {
|
|
12
|
+
let resource_origin;
|
|
13
|
+
try {
|
|
14
|
+
resource_origin = input.resource ? new URL(input.resource).origin : undefined;
|
|
15
|
+
}
|
|
16
|
+
catch {
|
|
17
|
+
resource_origin = undefined;
|
|
18
|
+
}
|
|
19
|
+
return {
|
|
20
|
+
pay_to: input.pay_to,
|
|
21
|
+
resource_origin,
|
|
22
|
+
network: input.network,
|
|
23
|
+
amount_micro: input.amount_micro,
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
/** `record` never blocks the payment path. `flush` fsyncs an async batch. */
|
|
27
|
+
export function createFileDecisionLedger(filePath, options = {}) {
|
|
28
|
+
mkdirSync(dirname(filePath), { recursive: true });
|
|
29
|
+
const maxBufferedRows = options.maxBufferedRows ?? 100;
|
|
30
|
+
const rotateBytes = options.rotateBytes ?? 64 * 1024 * 1024;
|
|
31
|
+
let pending = [];
|
|
32
|
+
let writer = Promise.resolve();
|
|
33
|
+
let scheduled = false;
|
|
34
|
+
const flush = async () => {
|
|
35
|
+
const lines = pending;
|
|
36
|
+
pending = [];
|
|
37
|
+
scheduled = false;
|
|
38
|
+
if (!lines.length)
|
|
39
|
+
return writer;
|
|
40
|
+
writer = writer.then(async () => {
|
|
41
|
+
try {
|
|
42
|
+
if ((await stat(filePath)).size >= rotateBytes)
|
|
43
|
+
await rename(filePath, `${filePath}.${Date.now()}.jsonl`);
|
|
44
|
+
}
|
|
45
|
+
catch (err) {
|
|
46
|
+
if (err.code !== "ENOENT")
|
|
47
|
+
throw err;
|
|
48
|
+
}
|
|
49
|
+
const handle = await open(filePath, "a");
|
|
50
|
+
try {
|
|
51
|
+
await appendFile(handle, lines.join(""), "utf8");
|
|
52
|
+
await handle.sync();
|
|
53
|
+
}
|
|
54
|
+
finally {
|
|
55
|
+
await handle.close();
|
|
56
|
+
}
|
|
57
|
+
});
|
|
58
|
+
return writer;
|
|
59
|
+
};
|
|
60
|
+
const scheduleFlush = () => {
|
|
61
|
+
if (scheduled)
|
|
62
|
+
return;
|
|
63
|
+
scheduled = true;
|
|
64
|
+
queueMicrotask(() => { void flush(); });
|
|
65
|
+
};
|
|
66
|
+
// beforeExit is non-invasive. Hosts own SIGINT/SIGTERM unless they explicitly
|
|
67
|
+
// opt in; libraries must not interleave themselves with an app's shutdown.
|
|
68
|
+
const flushOnSignal = (signal) => {
|
|
69
|
+
process.once(signal, () => { void flush().finally(() => process.kill(process.pid, signal)); });
|
|
70
|
+
};
|
|
71
|
+
process.once("beforeExit", () => { void flush(); });
|
|
72
|
+
if (options.flushOnSignals === true) {
|
|
73
|
+
flushOnSignal("SIGINT");
|
|
74
|
+
flushOnSignal("SIGTERM");
|
|
75
|
+
}
|
|
76
|
+
return {
|
|
77
|
+
record(input) {
|
|
78
|
+
const row = {
|
|
79
|
+
...input,
|
|
80
|
+
schema_version: DECISION_LEDGER_SCHEMA_VERSION,
|
|
81
|
+
decision_id: input.decision_id ?? randomUUID(),
|
|
82
|
+
at_unix_ms: input.at_unix_ms ?? Date.now(),
|
|
83
|
+
input: redactInput(input.input),
|
|
84
|
+
};
|
|
85
|
+
pending.push(JSON.stringify(row) + "\n");
|
|
86
|
+
if (pending.length >= maxBufferedRows)
|
|
87
|
+
void flush();
|
|
88
|
+
else
|
|
89
|
+
scheduleFlush();
|
|
90
|
+
return row;
|
|
91
|
+
},
|
|
92
|
+
flush,
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
//# sourceMappingURL=decision-ledger-file.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decision-ledger-file.js","sourceRoot":"","sources":["../src/decision-ledger-file.ts"],"names":[],"mappings":"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"}
|
package/dist/decision-token.d.ts
CHANGED
|
@@ -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" | "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;
|
|
@@ -109,14 +116,29 @@ export type AssertIntentApprovedOptions = {
|
|
|
109
116
|
now?: number;
|
|
110
117
|
/** Enforce consume-once semantics (recommended for anything non-idempotent). */
|
|
111
118
|
registry?: DecisionRegistry;
|
|
112
|
-
/**
|
|
113
|
-
publicKeyPem
|
|
119
|
+
/** Required trust anchor: verify the token signature against this key. */
|
|
120
|
+
publicKeyPem: string;
|
|
121
|
+
};
|
|
122
|
+
export type UnsafeAssertIntentApprovedOptions = {
|
|
123
|
+
now?: number;
|
|
124
|
+
registry?: DecisionRegistry;
|
|
114
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":"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"}
|
package/dist/decision-token.js
CHANGED
|
@@ -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,30 +209,56 @@ export function createDecisionRegistry() {
|
|
|
202
209
|
},
|
|
203
210
|
};
|
|
204
211
|
}
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
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 && !verifyDecisionSignature(token, options.publicKeyPem)) {
|
|
213
|
-
throw new TwzrdIntentBindingError("BAD_SIGNATURE", token.decisionId, "decision token signature did not verify");
|
|
214
|
-
}
|
|
215
218
|
if (token.decision !== "allow" && token.decision !== "warn") {
|
|
216
219
|
throw new TwzrdIntentBindingError("DECISION_NOT_ALLOW", token.decisionId, `decision is ${token.decision}`);
|
|
217
220
|
}
|
|
218
|
-
|
|
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)) {
|
|
219
225
|
throw new TwzrdIntentBindingError("DECISION_EXPIRED", token.decisionId, `expired at ${token.expiresAt}`);
|
|
220
226
|
}
|
|
221
227
|
const actual = intentHash(intent);
|
|
222
228
|
if (actual !== token.intentHash) {
|
|
223
229
|
throw new TwzrdIntentBindingError("INTENT_HASH_MISMATCH", token.decisionId, `approved ${token.intentHash} but signing ${actual}`);
|
|
224
230
|
}
|
|
225
|
-
if (options?.registry && !options.registry.consume(token.decisionId)) {
|
|
231
|
+
if (options?.registry && !options.registry.consume(registryKeyPrefix + token.decisionId)) {
|
|
226
232
|
throw new TwzrdIntentBindingError("DECISION_REPLAYED", token.decisionId, "decision token already consumed");
|
|
227
233
|
}
|
|
228
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
|
+
}
|
|
229
262
|
export function newDecisionId() {
|
|
230
263
|
return randomUUID();
|
|
231
264
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"decision-token.js","sourceRoot":"","sources":["../src/decision-token.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,mBAAmB,EACnB,QAAQ,EACR,UAAU,EACV,IAAI,IAAI,MAAM,EACd,MAAM,IAAI,QAAQ,GAEnB,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,aAAa,EAAE,UAAU,EAAsB,MAAM,aAAa,CAAC;AAE5E,MAAM,eAAe,GAAG,qBAAqB,CAAC;AAoD9C,iFAAiF;AACjF,MAAM,qBAAqB,GAAG,kBAAkB,CAAC;AAEjD,0FAA0F;AAC1F,MAAM,CAAC,MAAM,kBAAkB,GAAG,EAAE,CAAC;AAErC;;;;;GAKG;AACH,MAAM,UAAU,sBAAsB,CAAC,MAAgB;IACrD,IAAI,MAAM,CAAC,MAAM,GAAG,kBAAkB,EAAE,CAAC;QACvC,MAAM,IAAI,KAAK,CACb,oDAAoD,kBAAkB,SAAS,MAAM,CAAC,MAAM,GAAG,CAChG,CAAC;IACJ,CAAC;IACD,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACzB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QACvC,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACtC,MAAM,IAAI,KAAK,CACb,+DAA+D,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CACvF,CAAC;QACJ,CAAC;QACD,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CAAC,yCAAyC,IAAI,EAAE,CAAC,CAAC;QACnE,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACf,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;AACL,CAAC;AAED,gEAAgE;AAChE,MAAM,UAAU,gBAAgB,CAAC,KAAyC;IACxE,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,MAAM,CAAC;QACpC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;KAC1C,CAAC,CAAC;AACL,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,yBAAyB,CAAC,OAGzC;IACC,IAAI,UAAqB,CAAC;IAC1B,IAAI,OAAO,EAAE,aAAa,EAAE,CAAC;QAC3B,UAAU,GAAG,gBAAgB,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;IACvD,CAAC;SAAM,CAAC;QACN,CAAC,EAAE,UAAU,EAAE,GAAG,mBAAmB,CAAC,SAAS,CAAC,CAAC,CAAC;IACpD,CAAC;IACD,MAAM,YAAY,GAAG,eAAe,CAAC,UAAU,CAAC;SAC7C,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;SACvC,QAAQ,EAAE,CAAC;IACd,OAAO;QACL,KAAK,EAAE,OAAO,EAAE,KAAK,IAAI,eAAe;QACxC,YAAY;QACZ,IAAI,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,UAAU,CAAC;KACpE,CAAC;AACJ,CAAC;AAED,qFAAqF;AACrF,MAAM,SAAS,GAAG,uCAAuC,CAAC;AAC1D,MAAM,SAAS,GAAG,iBAAiB,CAAC;AAEpC,kFAAkF;AAClF,MAAM,gBAAgB,GAAG,EAAE,CAAC;AAE5B;;;;;;;;;GASG;AACH,SAAS,iBAAiB,CAAC,MAAc;IACvC,IAAI,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;QAC7D,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IACpC,CAAC;IACD,IAAI,0BAA0B,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QAC5C,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QAC1C,IAAI,GAAG,CAAC,MAAM,GAAG,gBAAgB;YAAE,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC1D,0EAA0E;QAC1E,sEAAsE;QACtE,2EAA2E;QAC3E,0EAA0E;QAC1E,4EAA4E;QAC5E,0EAA0E;QAC1E,MAAM,SAAS,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAC5F,IAAI,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;YACpE,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACzB,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IACD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACzB,CAAC;AAED,qFAAqF;AACrF,SAAS,kBAAkB,CAAC,GAAW;IACrC,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IAC/B,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;IACzC,KAAK,MAAM,CAAC,IAAI,GAAG;QAAE,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC7D,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;QAChC,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC;QACzB,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACxB,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,0BAA0B,CACxC,MAAc,EACd,KAAc;IAEd,IAAI,CAAC,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;IAE1E,MAAM,GAAG,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;IACtC,IAAI,GAAG,CAAC,MAAM,GAAG,gBAAgB,EAAE,CAAC;QAClC,MAAM,IAAI,KAAK,CACb,wCAAwC,gBAAgB,uCAAuC;YAC7F,+DAA+D;YAC/D,iFAAiF;YACjF,wFAAwF,CAC3F,CAAC;IACJ,CAAC;IACD,IAAI,kBAAkB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;QAChC,MAAM,IAAI,KAAK,CACb,sFAAsF;YACpF,kDAAkD,CACrD,CAAC;IACJ,CAAC;IAED,4EAA4E;IAC5E,oCAAoC;IACpC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CACtB,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC,CAC5E,CAAC;IAEF,yDAAyD;IACzD,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC;QAC1B,MAAM,CAAC,IAAI,CAAC,kCAAkC,EAAE,KAAK,CAAC;QACtD,IAAI;KACL,CAAC,CAAC;IACH,MAAM,UAAU,GAAG,gBAAgB,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;IAClF,MAAM,YAAY,GAAG,eAAe,CAAC,UAAU,CAAC;SAC7C,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;SACvC,QAAQ,EAAE,CAAC;IACd,OAAO;QACL,KAAK,EAAE,KAAK,IAAI,gBAAgB;QAChC,YAAY;QACZ,IAAI,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,UAAU,CAAC;KACpE,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,QAAsD,EACtD,MAAsB;IAEtB,MAAM,OAAO,GAAG,EAAE,GAAG,QAAQ,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC;IACrD,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAClF,QAAQ,CACT,CAAC;IACF,OAAO,EAAE,GAAG,OAAO,EAAE,SAAS,EAAE,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,uBAAuB,CACrC,KAAsB,EACtB,YAAoB;IAEpB,MAAM,EAAE,SAAS,EAAE,GAAG,OAAO,EAAE,GAAG,KAAK,CAAC;IACxC,IAAI,CAAC;QACH,OAAO,QAAQ,CACb,IAAI,EACJ,gBAAgB,CAAC,OAAO,CAAC,EACzB,eAAe,CAAC,YAAY,CAAC,EAC7B,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CACjC,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;
|
|
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"}
|