@naulon/wayfarer 0.4.1 → 0.5.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 +5 -5
- package/dist/agent.d.ts +50 -2
- package/dist/agent.d.ts.map +1 -1
- package/dist/agent.js +100 -14
- package/dist/agent.js.map +1 -1
- package/dist/buyer.d.ts.map +1 -1
- package/dist/buyer.js +35 -9
- package/dist/buyer.js.map +1 -1
- package/dist/gateway.d.ts +47 -16
- package/dist/gateway.d.ts.map +1 -1
- package/dist/gateway.js +82 -8
- package/dist/gateway.js.map +1 -1
- package/dist/lib.d.ts +5 -5
- package/dist/lib.d.ts.map +1 -1
- package/dist/lib.js +10 -4
- package/dist/lib.js.map +1 -1
- package/dist/licenseStore.d.ts +44 -0
- package/dist/licenseStore.d.ts.map +1 -1
- package/dist/licenseStore.js +86 -2
- package/dist/licenseStore.js.map +1 -1
- package/dist/rail.d.ts +12 -1
- package/dist/rail.d.ts.map +1 -1
- package/dist/rail.js +106 -32
- package/dist/rail.js.map +1 -1
- package/dist/types.d.ts +5 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +3 -3
package/dist/rail.js
CHANGED
|
@@ -10,20 +10,115 @@
|
|
|
10
10
|
import { classifyPaymentError, classifySignerRefusal, probe, } from "./buyer.js";
|
|
11
11
|
import { runPaidFetch } from "./paidFetch.js";
|
|
12
12
|
import { assembleMemoPayment } from "./memo.js";
|
|
13
|
-
import { gatewayLegPayload } from "./gateway.js";
|
|
13
|
+
import { gatewayLegPayload, gatewayLegPayloadsBatched } from "./gateway.js";
|
|
14
14
|
import { networkByCaip2, supportsMemo } from "@naulon/shared";
|
|
15
|
-
/** Pick the rail the GATE will settle this 402 on
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
15
|
+
/** Pick the rail the GATE will settle this 402 on — which is now Circle Gateway on EVERY chain.
|
|
16
|
+
*
|
|
17
|
+
* This used to read `supportsMemo` and sign a raw EIP-3009 authorization for Arc, because the gate
|
|
18
|
+
* self-relayed Arc through the Memo predeploy. The gate stopped doing that (`verifyAndSettle`):
|
|
19
|
+
* memo settlement is one on-chain transaction per read at our own gas, which Circle prices out of
|
|
20
|
+
* the sub-cent band this product sells in. Buyer and gate must agree about the envelope or the
|
|
21
|
+
* settle fails as "malformed memo payload", so this predicate moves in the SAME commit as that one
|
|
22
|
+
* and keeps no independent opinion.
|
|
23
|
+
*
|
|
24
|
+
* It is a function rather than a constant because the fallback still means something: an UNKNOWN
|
|
25
|
+
* CAIP-2 network is judged by the descriptor `build402` stamps on every gateway-mode 402. A quote
|
|
26
|
+
* from some future non-Gateway rail would not carry it, and should not be signed as one. */
|
|
21
27
|
function isGateway402(quoted) {
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
return !supportsMemo(net);
|
|
28
|
+
if (networkByCaip2(quoted.requirements.network))
|
|
29
|
+
return true;
|
|
25
30
|
return quoted.requirements.extra?.name === "GatewayWalletBatched";
|
|
26
31
|
}
|
|
32
|
+
/**
|
|
33
|
+
* Sign a 402 the caller already holds, on the rail the GATE will settle it on — the payment
|
|
34
|
+
* builder `railBuyer` runs inside its fetch loop, exposed on its own for a host that never needs
|
|
35
|
+
* the loop: one that built the 402 itself and is now paying it from the buyer's session signers
|
|
36
|
+
* (the cloud selling a licence it just offered). Picking the rail here, once, is what keeps a
|
|
37
|
+
* sale and a toll on the same envelope for the same tenant chain.
|
|
38
|
+
*
|
|
39
|
+
* Throws on a rail with no signer, and lets `gatewayLegPayload` / the signer throw their own
|
|
40
|
+
* coded refusals (N-leg on the Circle SDK, a grant refusal) — the caller owns the mapping.
|
|
41
|
+
*/
|
|
42
|
+
export async function assembleRailPayment(quoted, nowMs, signers) {
|
|
43
|
+
if (isGateway402(quoted)) {
|
|
44
|
+
if (!signers.gateway) {
|
|
45
|
+
throw new Error("no gateway signer for a Circle Gateway 402 (this tenant settles on a memo-less chain)");
|
|
46
|
+
}
|
|
47
|
+
return Buffer.from(JSON.stringify(await gatewayEnvelopes(signers.gateway, quoted))).toString("base64");
|
|
48
|
+
}
|
|
49
|
+
if (!signers.memo) {
|
|
50
|
+
throw new Error("no memo signer for a memo-rail 402 (this tenant settles on a memo chain)");
|
|
51
|
+
}
|
|
52
|
+
// Reached only for an UNKNOWN CAIP-2 that also lacks the Gateway descriptor — every chain in the
|
|
53
|
+
// registry settles through Circle now (`isGateway402`). Kept because a caller may still hold a
|
|
54
|
+
// memo signer for a network we do not ship, and silently signing that as a Circle envelope would
|
|
55
|
+
// produce a payment no facilitator can verify.
|
|
56
|
+
const net = networkByCaip2(quoted.requirements.network);
|
|
57
|
+
return assembleMemoPayment(quoted, nowMs, signers.memo, net);
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* One Circle envelope per leg the 402 advertised — the multi-leg Gateway payment.
|
|
61
|
+
*
|
|
62
|
+
* ## Why this is a loop and not one SDK call
|
|
63
|
+
*
|
|
64
|
+
* `BatchEvmScheme.createPaymentPayload(x402Version, paymentRequirements)` takes ONE requirement
|
|
65
|
+
* (verified against `@circle-fin/x402-batching` 3.4.0). Signing a two-leg toll with it would
|
|
66
|
+
* authorize the author leg and silently drop the operator fee, so `gatewayLegPayload` refuses a
|
|
67
|
+
* multi-leg quote outright — correctly, as a single-leg builder.
|
|
68
|
+
*
|
|
69
|
+
* That guard used to mean multi-leg tolls were memo-rail-only, which made the operator fee
|
|
70
|
+
* collectable on exactly one chain. It was never an SDK limit on what the RAIL can carry: the gate
|
|
71
|
+
* parses an ARRAY of per-leg payloads (`verifyAndSettle`) and `settleGateway` verifies each leg
|
|
72
|
+
* against its own requirements. So N legs settle fine on Gateway; the buyer simply has to sign N
|
|
73
|
+
* envelopes rather than asking the SDK for one that covers them all.
|
|
74
|
+
*
|
|
75
|
+
* Each leg is signed as its own single-leg quote — same `requirements` with that leg's `payTo` and
|
|
76
|
+
* `amount`, exactly how `build402` assembled them — so `gatewayLegPayload`'s descriptor guard still
|
|
77
|
+
* runs on every one, and its N-leg guard stays meaningful for anyone calling it directly.
|
|
78
|
+
*
|
|
79
|
+
* A single-leg quote returns the bare envelope, not a one-element array: that is the shape stock
|
|
80
|
+
* x402 clients send and the gate still accepts either, so there is no reason to change what the
|
|
81
|
+
* common case puts on the wire.
|
|
82
|
+
*
|
|
83
|
+
* ## Why a batch-capable signer takes a different path
|
|
84
|
+
*
|
|
85
|
+
* The loop above signs each leg through a SEPARATE call, and for a plain key that is nothing — the
|
|
86
|
+
* same account signs N times. For a HOSTED signer it is not nothing: signing there also debits a
|
|
87
|
+
* spending grant and enforces the buyer's per-read ceilings, and a signer asked one leg at a time
|
|
88
|
+
* can only reason about one leg. Two independent debits for one toll, and the moment a sibling leg
|
|
89
|
+
* trips a ceiling the author leg is already debited and signed while this function throws and NO
|
|
90
|
+
* payment goes out at all. The buyer's "never pay more than $X for one read" degrades to a per-leg
|
|
91
|
+
* bound in the same move.
|
|
92
|
+
*
|
|
93
|
+
* So when the signer offers `signTypedDataBatch`, every leg's authorization is built first and the
|
|
94
|
+
* whole set is signed in ONE call — which is the only shape in which a hosted signer can reserve a
|
|
95
|
+
* toll atomically and bound it as a citation. The SDK still builds every authorization; only the
|
|
96
|
+
* moment of signing moves (`gatewayLegPayloadsBatched`).
|
|
97
|
+
*/
|
|
98
|
+
async function gatewayEnvelopes(signer, quoted) {
|
|
99
|
+
const legs = quoted.legs;
|
|
100
|
+
if (!legs || legs.length <= 1)
|
|
101
|
+
return gatewayLegPayload(signer, quoted, 2);
|
|
102
|
+
// Leg order is the contract: the gate pairs payloads[i] with its own legs[i] and refuses on a
|
|
103
|
+
// count mismatch, so this must stay a sequential map over `quoted.legs` and never a filter.
|
|
104
|
+
const legQuotes = legs.map((leg) => ({
|
|
105
|
+
...quoted,
|
|
106
|
+
amountAtomic: leg.amount,
|
|
107
|
+
requirements: { ...quoted.requirements, payTo: leg.payTo, amount: leg.amount },
|
|
108
|
+
legs: undefined,
|
|
109
|
+
}));
|
|
110
|
+
// A batch-capable signer gets the whole toll in one call. A plain one (a viem account, the
|
|
111
|
+
// self-host path) keeps the per-leg loop unchanged — it has no grant to protect, and requiring
|
|
112
|
+
// the method would make an ordinary key unusable.
|
|
113
|
+
if (signer.signTypedDataBatch) {
|
|
114
|
+
return gatewayLegPayloadsBatched(signer, legQuotes, 2);
|
|
115
|
+
}
|
|
116
|
+
const out = [];
|
|
117
|
+
for (const legQuote of legQuotes) {
|
|
118
|
+
out.push(await gatewayLegPayload(signer, legQuote, 2));
|
|
119
|
+
}
|
|
120
|
+
return out;
|
|
121
|
+
}
|
|
27
122
|
export function railBuyer(signers) {
|
|
28
123
|
const address = (signers.memo?.address ?? signers.gateway?.address ?? "0x");
|
|
29
124
|
return {
|
|
@@ -35,28 +130,7 @@ export function railBuyer(signers) {
|
|
|
35
130
|
return probe(url, kind, address).then((o) => (o.status === "gated" ? o.quoted : null));
|
|
36
131
|
},
|
|
37
132
|
async fetch(url, kind, guard) {
|
|
38
|
-
const buildPayment =
|
|
39
|
-
if (isGateway402(quoted)) {
|
|
40
|
-
if (!signers.gateway) {
|
|
41
|
-
throw new Error("no gateway signer for a Circle Gateway 402 (this tenant settles on a memo-less chain)");
|
|
42
|
-
}
|
|
43
|
-
// gatewayLegPayload owns the N-leg + GatewayWalletBatched guards, so the mixed-fleet
|
|
44
|
-
// rail gets the same loud, actionable refusals gatewayBuyer gives (it previously had
|
|
45
|
-
// neither, silently dropping extra legs until the gate rejected on leg-count mismatch).
|
|
46
|
-
const payload = await gatewayLegPayload(signers.gateway, quoted, 2);
|
|
47
|
-
return Buffer.from(JSON.stringify(payload)).toString("base64");
|
|
48
|
-
}
|
|
49
|
-
if (!signers.memo) {
|
|
50
|
-
throw new Error("no memo signer for a memo-rail 402 (this tenant settles on a memo chain)");
|
|
51
|
-
}
|
|
52
|
-
// Resolve the memo chain from the 402's advertised network so a non-fleet memo chain signs
|
|
53
|
-
// against the right USDC domain (registry: memo = arcTestnet today, but keep it honest). An
|
|
54
|
-
// unknown CAIP-2 falls back to activeNetwork() inside assembleMemoPayment (undefined triggers the
|
|
55
|
-
// default). A multi-leg toll signed by a batch-capable injected signer reserves atomically here;
|
|
56
|
-
// a single leg or a batch-less signer takes the per-leg path — same framing either way.
|
|
57
|
-
const net = networkByCaip2(quoted.requirements.network);
|
|
58
|
-
return assembleMemoPayment(quoted, nowMs, signers.memo, net);
|
|
59
|
-
};
|
|
133
|
+
const buildPayment = (quoted, nowMs) => assembleRailPayment(quoted, nowMs, signers);
|
|
60
134
|
const onSignError = (error) => {
|
|
61
135
|
// Parity with memoBuyer/gatewayBuyer: a hosted session signer throws a coded refusal
|
|
62
136
|
// (grant exhausted/expired/no session) → typed so the agent can act; any other throw (incl.
|
package/dist/rail.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rail.js","sourceRoot":"","sources":["../src/rail.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,KAAK,GAKN,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAmB,MAAM,WAAW,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAiD,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"rail.js","sourceRoot":"","sources":["../src/rail.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -77,6 +77,11 @@ export interface Source {
|
|
|
77
77
|
settlementRef?: string;
|
|
78
78
|
/** Citation License `jti` proving this read was paid for (verifiable at the gate). */
|
|
79
79
|
licenseId?: string;
|
|
80
|
+
/** The page a reader opens to see this record checked against the issuer's published keys, in
|
|
81
|
+
* their own browser. THIS is what a citation carries beside the source. */
|
|
82
|
+
proofUrl?: string;
|
|
83
|
+
/** The gate's record route for the same settlement — the machine document behind `proofUrl`. */
|
|
84
|
+
recordUrl?: string;
|
|
80
85
|
}
|
|
81
86
|
export interface RunResult {
|
|
82
87
|
topic: string;
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,kFAAkF;AAClF,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAE3C,4EAA4E;AAC5E,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,iEAAiE;IACjE,OAAO,EAAE,MAAM,CAAC;IAChB;;;;;OAKG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;;;;OAOG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,+FAA+F;IAC/F,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,yEAAyE;IACzE,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;;;;OAKG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;;;;OAKG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED;mFACmF;AACnF,MAAM,WAAW,eAAgB,SAAQ,SAAS;IAChD,KAAK,EAAE,IAAI,CAAC;CACb;AAED,uEAAuE;AACvE,MAAM,WAAW,kBAAmB,SAAQ,eAAe;IACzD,8DAA8D;IAC9D,SAAS,EAAE,MAAM,CAAC;IAClB,uEAAuE;IACvE,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC;AAE1D,mEAAmE;AACnE,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd;iFAC6E;IAC7E,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,0DAA0D;IAC1D,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,8EAA8E;AAC9E,MAAM,WAAW,MAAM;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,sFAAsF;IACtF,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,QAAQ,EAAE,CAAC;IACtB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;CAChB"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,kFAAkF;AAClF,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAE3C,4EAA4E;AAC5E,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,iEAAiE;IACjE,OAAO,EAAE,MAAM,CAAC;IAChB;;;;;OAKG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;;;;OAOG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,+FAA+F;IAC/F,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,yEAAyE;IACzE,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;;;;OAKG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;;;;OAKG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED;mFACmF;AACnF,MAAM,WAAW,eAAgB,SAAQ,SAAS;IAChD,KAAK,EAAE,IAAI,CAAC;CACb;AAED,uEAAuE;AACvE,MAAM,WAAW,kBAAmB,SAAQ,eAAe;IACzD,8DAA8D;IAC9D,SAAS,EAAE,MAAM,CAAC;IAClB,uEAAuE;IACvE,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC;AAE1D,mEAAmE;AACnE,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd;iFAC6E;IAC7E,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,0DAA0D;IAC1D,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,8EAA8E;AAC9E,MAAM,WAAW,MAAM;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,sFAAsF;IACtF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;gFAC4E;IAC5E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gGAAgG;IAChG,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,QAAQ,EAAE,CAAC;IACtB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;CAChB"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@naulon/wayfarer",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.5.0",
|
|
4
4
|
"description": "The naulon paying agent: discover \u2192 quote \u2192 appraise \u2192 decide \u2192 pay \u2192 ground. Budgeted x402 buying over Circle Gateway on Arc, with reusable Citation Licenses (pay once, re-read free).",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"x402",
|
|
@@ -42,10 +42,10 @@
|
|
|
42
42
|
"test": "node --import tsx --test \"src/**/*.test.ts\""
|
|
43
43
|
},
|
|
44
44
|
"dependencies": {
|
|
45
|
-
"@circle-fin/x402-batching": "^3.
|
|
45
|
+
"@circle-fin/x402-batching": "^3.5.0",
|
|
46
46
|
"@langchain/core": "^1.2.9",
|
|
47
47
|
"@langchain/openai": "^1.5.10",
|
|
48
|
-
"@naulon/shared": "^0.
|
|
48
|
+
"@naulon/shared": "^0.5.0",
|
|
49
49
|
"@x402/core": "^2.23.0",
|
|
50
50
|
"@x402/evm": "^2.23.0",
|
|
51
51
|
"viem": "^2.56.0"
|