@ftptech/canton-agent-wallet 0.1.15 → 0.1.17

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/dist/onboard.d.ts CHANGED
@@ -16,6 +16,14 @@ export interface EnsureWalletOpts {
16
16
  * already allocated (a second allocate returns HTTP 400). prepare + the
17
17
  * verify-before-sign legs still run; we persist the verified prep.party. */
18
18
  restore?: boolean;
19
+ /** Ephemeral mode: mint a FRESH wallet on every call and NEVER touch the
20
+ * on-disk store — skip `loadWallet` (always onboard a new key) and skip
21
+ * `saveWallet` (the full key material is returned in the wallet object for the
22
+ * caller to hand off; nothing is persisted by us). Used by the hosted quest
23
+ * one-shot, which mints a throwaway wallet per request and returns its key to
24
+ * the user. Every verify-before-sign leg still runs — only the file I/O is
25
+ * skipped. Independent of `restore`. */
26
+ ephemeral?: boolean;
19
27
  }
20
28
  export declare function ensureWallet(opts: EnsureWalletOpts): Promise<AgentWallet>;
21
29
  //# sourceMappingURL=onboard.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"onboard.d.ts","sourceRoot":"","sources":["../src/onboard.ts"],"names":[],"mappings":"AASA,OAAO,EAAiC,KAAK,gBAAgB,EAAE,MAAM,WAAW,CAAC;AACjF,OAAO,EAA0B,KAAK,WAAW,EAAE,MAAM,YAAY,CAAC;AACtE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAOhD,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,4DAA4D;IAC5D,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB;;wDAEoD;IACpD,GAAG,CAAC,EAAE,gBAAgB,CAAC;IACvB;;iFAE6E;IAC7E,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,wBAAsB,YAAY,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,WAAW,CAAC,CAoI/E"}
1
+ {"version":3,"file":"onboard.d.ts","sourceRoot":"","sources":["../src/onboard.ts"],"names":[],"mappings":"AASA,OAAO,EAAiC,KAAK,gBAAgB,EAAE,MAAM,WAAW,CAAC;AACjF,OAAO,EAA0B,KAAK,WAAW,EAAE,MAAM,YAAY,CAAC;AACtE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAOhD,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,4DAA4D;IAC5D,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB;;wDAEoD;IACpD,GAAG,CAAC,EAAE,gBAAgB,CAAC;IACvB;;iFAE6E;IAC7E,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;;;;6CAMyC;IACzC,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,wBAAsB,YAAY,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,WAAW,CAAC,CA4I/E"}
package/dist/onboard.js CHANGED
@@ -13,9 +13,14 @@ import { RelayClient } from "./relay-client.js";
13
13
  import { assertOnboardingTopologyBindsKey, OnboardingTopologyMismatchError, } from "./verify-prepared.js";
14
14
  import { recomputeTopologyMultiHash, fingerprintHex } from "./canton-hash.js";
15
15
  export async function ensureWallet(opts) {
16
- const existing = loadWallet();
17
- if (existing)
18
- return existing;
16
+ // Ephemeral mode skips the on-disk store entirely: never reuse an existing
17
+ // wallet (always mint fresh) and never persist (below). Every verify-before-
18
+ // sign leg still runs — only the file I/O changes.
19
+ if (!opts.ephemeral) {
20
+ const existing = loadWallet();
21
+ if (existing)
22
+ return existing;
23
+ }
19
24
  const key = opts.key ?? generateAgentKey();
20
25
  const relay = opts.relay ?? new RelayClient({ relayUrl: opts.relayUrl, apiKey: opts.apiKey });
21
26
  const prep = await relay.onboardPrepare({
@@ -123,7 +128,11 @@ export async function ensureWallet(opts) {
123
128
  publicKeyFingerprint: prep.publicKeyFingerprint,
124
129
  createdAt: new Date().toISOString(),
125
130
  };
126
- saveWallet(wallet);
131
+ // Ephemeral wallets are returned to the caller (with full key material) but
132
+ // NEVER written to disk — the quest one-shot hands the key to the user and
133
+ // keeps no copy.
134
+ if (!opts.ephemeral)
135
+ saveWallet(wallet);
127
136
  return wallet;
128
137
  }
129
138
  /** The bare 32-byte Ed25519 public-key point from an SPKI/DER base64 (the point
@@ -1 +1 @@
1
- {"version":3,"file":"onboard.js","sourceRoot":"","sources":["../src/onboard.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"onboard.js","sourceRoot":"","sources":["../src/onboard.ts"],"names":[],"mappings":"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"}
package/dist/pay.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  import { type EnsureWalletOpts } from "./onboard.js";
2
+ import { type AgentWallet } from "./store.js";
2
3
  import type { HashBindingOptions } from "./verify-prepared.js";
3
4
  export interface PayOpts extends EnsureWalletOpts {
4
5
  /** @deprecated ignored; the relay sets the participant user. */
@@ -11,6 +12,32 @@ export interface PayOpts extends EnsureWalletOpts {
11
12
  * See HashBindingOptions / verify-prepared.ts.
12
13
  */
13
14
  hashBinding?: HashBindingOptions;
15
+ /** Max on-ledger re-pay attempts on a PERSISTING 402 (passed to
16
+ * wrapFetchWithCantonPayment; default 4). A custodial/proxy payer should set
17
+ * 1 so one logical pay mints at most one extra Create, bounding gas burn if a
18
+ * merchant keeps returning 402. */
19
+ maxPaymentRetries?: number;
20
+ /** Optional spend ceiling threaded into the relay signer: the MAX amount the
21
+ * signer will EVER sign for (same unit the 402 quotes). When set, the autopay
22
+ * REFUSES — fail closed, before any relay call — to sign a merchant-quoted
23
+ * amount above it, so an over-quoting (or MITM'd) merchant can never get the
24
+ * agent to sign a charge larger than the caller authorized. Omitted → no
25
+ * ceiling (the published MCP/pay path is unaffected when unset). */
26
+ maxPaymentValue?: string;
27
+ /** Optional expected-payee pin threaded into the relay signer: the ONLY
28
+ * recipient the signer will sign a transfer to. When set, the autopay REFUSES
29
+ * to sign if the 402's payTo is anything else (MITM'd-merchant defense).
30
+ * Omitted → no pin (legacy behavior). */
31
+ expectedPayTo?: string;
14
32
  }
15
33
  export declare function makePayingFetch(opts: PayOpts): Promise<typeof globalThis.fetch>;
34
+ /**
35
+ * Like makePayingFetch but for a wallet OBJECT you already hold — used by the
36
+ * hosted quest one-shot, which mints a FRESH ephemeral wallet per request
37
+ * (`ensureWallet({ ephemeral: true })`) and pays from it without ever persisting
38
+ * it to disk. `lockHome` is the directory for the per-wallet pay mutex; OMIT it
39
+ * for an ephemeral wallet — a throwaway wallet does exactly one pay, so there is
40
+ * no same-wallet concurrency to serialize and no home directory to lock in.
41
+ */
42
+ export declare function makePayingFetchForWallet(wallet: AgentWallet, opts: Pick<PayOpts, "apiKey" | "hashBinding" | "maxPaymentRetries" | "maxPaymentValue" | "expectedPayTo">, lockHome?: string): Promise<typeof globalThis.fetch>;
16
43
  //# sourceMappingURL=pay.d.ts.map
package/dist/pay.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"pay.d.ts","sourceRoot":"","sources":["../src/pay.ts"],"names":[],"mappings":"AAQA,OAAO,EAAgB,KAAK,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAInE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE/D,MAAM,WAAW,OAAQ,SAAQ,gBAAgB;IAC/C,gEAAgE;IAChE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,kBAAkB,CAAC;CAClC;AAED,wBAAsB,eAAe,CACnC,IAAI,EAAE,OAAO,GACZ,OAAO,CAAC,OAAO,UAAU,CAAC,KAAK,CAAC,CAsBlC"}
1
+ {"version":3,"file":"pay.d.ts","sourceRoot":"","sources":["../src/pay.ts"],"names":[],"mappings":"AAQA,OAAO,EAAgB,KAAK,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAGnE,OAAO,EAAa,KAAK,WAAW,EAAE,MAAM,YAAY,CAAC;AACzD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE/D,MAAM,WAAW,OAAQ,SAAQ,gBAAgB;IAC/C,gEAAgE;IAChE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,kBAAkB,CAAC;IACjC;;;wCAGoC;IACpC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;;;;yEAKqE;IACrE,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;8CAG0C;IAC1C,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,wBAAsB,eAAe,CACnC,IAAI,EAAE,OAAO,GACZ,OAAO,CAAC,OAAO,UAAU,CAAC,KAAK,CAAC,CAMlC;AAED;;;;;;;GAOG;AACH,wBAAsB,wBAAwB,CAC5C,MAAM,EAAE,WAAW,EACnB,IAAI,EAAE,IAAI,CACR,OAAO,EACP,QAAQ,GAAG,aAAa,GAAG,mBAAmB,GAAG,iBAAiB,GAAG,eAAe,CACrF,EACD,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,OAAO,UAAU,CAAC,KAAK,CAAC,CA+BlC"}
package/dist/pay.js CHANGED
@@ -12,25 +12,46 @@ import { withPayLock } from "./pay-lock.js";
12
12
  import { walletDir } from "./store.js";
13
13
  export async function makePayingFetch(opts) {
14
14
  const wallet = await ensureWallet(opts);
15
+ // The file-backed wallet serializes concurrent pays via a directory mutex in
16
+ // its home (cross-process safe), so pass the home as the lock dir — behavior
17
+ // is identical to before this was extracted.
18
+ return makePayingFetchForWallet(wallet, opts, walletDir());
19
+ }
20
+ /**
21
+ * Like makePayingFetch but for a wallet OBJECT you already hold — used by the
22
+ * hosted quest one-shot, which mints a FRESH ephemeral wallet per request
23
+ * (`ensureWallet({ ephemeral: true })`) and pays from it without ever persisting
24
+ * it to disk. `lockHome` is the directory for the per-wallet pay mutex; OMIT it
25
+ * for an ephemeral wallet — a throwaway wallet does exactly one pay, so there is
26
+ * no same-wallet concurrency to serialize and no home directory to lock in.
27
+ */
28
+ export async function makePayingFetchForWallet(wallet, opts, lockHome) {
15
29
  const signer = makeRelaySigner(wallet, {
16
30
  apiKey: opts.apiKey,
17
31
  ...(opts.hashBinding ? { hashBinding: opts.hashBinding } : {}),
32
+ ...(opts.maxPaymentValue !== undefined
33
+ ? { maxPaymentValue: opts.maxPaymentValue }
34
+ : {}),
35
+ ...(opts.expectedPayTo !== undefined
36
+ ? { expectedPayTo: opts.expectedPayTo }
37
+ : {}),
18
38
  });
19
- const paying = wrapFetchWithCantonPayment(globalThis.fetch, signer);
20
- const home = walletDir();
21
- // Serialize PAYMENTS per wallet. v1 nonces are sequential per sender, so two
22
- // concurrent payment dances from one wallet (parallel CLI processes or
23
- // parallel calls through this fetch) only race each other: both sign the same
24
- // counter value, at most one settles, the rest burn re-pay Creates losing the
25
- // race round after round. Probe first WITHOUT the lock only a request that
26
- // actually challenges 402 enters the per-wallet queue, so non-paid traffic is
27
- // never delayed. The probe is cheap (wrapFetch would probe anyway) and the
28
- // wrapped call re-probes under the lock, so no state is carried across.
29
- return async function lockedPayingFetch(input, init) {
39
+ const paying = wrapFetchWithCantonPayment(globalThis.fetch, signer, opts.maxPaymentRetries !== undefined
40
+ ? { maxPaymentRetries: opts.maxPaymentRetries }
41
+ : {});
42
+ // Probe first WITHOUT the lock only a request that actually challenges 402
43
+ // enters the per-wallet queue, so non-paid traffic is never delayed. When
44
+ // `lockHome` is set (the file-backed path) serialize the dance per wallet home
45
+ // (v1 nonces are sequential per sender, so concurrent dances from one wallet
46
+ // would otherwise race and burn re-pay Creates). An ephemeral wallet has no
47
+ // same-wallet concurrency and no home dir, so it skips the lock.
48
+ return async function payingFetch(input, init) {
30
49
  const probe = await globalThis.fetch(input, init);
31
50
  if (probe.status !== 402)
32
51
  return probe;
33
- return withPayLock(home, () => paying(input, init));
52
+ if (lockHome === undefined)
53
+ return paying(input, init);
54
+ return withPayLock(lockHome, () => paying(input, init));
34
55
  };
35
56
  }
36
57
  //# sourceMappingURL=pay.js.map
package/dist/pay.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"pay.js","sourceRoot":"","sources":["../src/pay.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAC;AACzE,OAAO,EAAE,YAAY,EAAyB,MAAM,cAAc,CAAC;AACnE,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAgBvC,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,IAAa;IAEb,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,CAAC;IACxC,MAAM,MAAM,GAAG,eAAe,CAAC,MAAM,EAAE;QACrC,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC/D,CAAC,CAAC;IACH,MAAM,MAAM,GAAG,0BAA0B,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACpE,MAAM,IAAI,GAAG,SAAS,EAAE,CAAC;IAEzB,6EAA6E;IAC7E,uEAAuE;IACvE,8EAA8E;IAC9E,8EAA8E;IAC9E,6EAA6E;IAC7E,8EAA8E;IAC9E,2EAA2E;IAC3E,wEAAwE;IACxE,OAAO,KAAK,UAAU,iBAAiB,CAAC,KAAK,EAAE,IAAI;QACjD,MAAM,KAAK,GAAG,MAAM,UAAU,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAClD,IAAI,KAAK,CAAC,MAAM,KAAK,GAAG;YAAE,OAAO,KAAK,CAAC;QACvC,OAAO,WAAW,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;IACtD,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"pay.js","sourceRoot":"","sources":["../src/pay.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAC;AACzE,OAAO,EAAE,YAAY,EAAyB,MAAM,cAAc,CAAC;AACnE,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAoB,MAAM,YAAY,CAAC;AAiCzD,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,IAAa;IAEb,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,CAAC;IACxC,6EAA6E;IAC7E,6EAA6E;IAC7E,6CAA6C;IAC7C,OAAO,wBAAwB,CAAC,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;AAC7D,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,MAAmB,EACnB,IAGC,EACD,QAAiB;IAEjB,MAAM,MAAM,GAAG,eAAe,CAAC,MAAM,EAAE;QACrC,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9D,GAAG,CAAC,IAAI,CAAC,eAAe,KAAK,SAAS;YACpC,CAAC,CAAC,EAAE,eAAe,EAAE,IAAI,CAAC,eAAe,EAAE;YAC3C,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,IAAI,CAAC,aAAa,KAAK,SAAS;YAClC,CAAC,CAAC,EAAE,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE;YACvC,CAAC,CAAC,EAAE,CAAC;KACR,CAAC,CAAC;IACH,MAAM,MAAM,GAAG,0BAA0B,CACvC,UAAU,CAAC,KAAK,EAChB,MAAM,EACN,IAAI,CAAC,iBAAiB,KAAK,SAAS;QAClC,CAAC,CAAC,EAAE,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,EAAE;QAC/C,CAAC,CAAC,EAAE,CACP,CAAC;IAEF,6EAA6E;IAC7E,0EAA0E;IAC1E,+EAA+E;IAC/E,6EAA6E;IAC7E,4EAA4E;IAC5E,iEAAiE;IACjE,OAAO,KAAK,UAAU,WAAW,CAAC,KAAK,EAAE,IAAI;QAC3C,MAAM,KAAK,GAAG,MAAM,UAAU,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAClD,IAAI,KAAK,CAAC,MAAM,KAAK,GAAG;YAAE,OAAO,KAAK,CAAC;QACvC,IAAI,QAAQ,KAAK,SAAS;YAAE,OAAO,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACvD,OAAO,WAAW,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;IAC1D,CAAC,CAAC;AACJ,CAAC"}
@@ -45,6 +45,14 @@ export interface ResolveAcceptResult {
45
45
  choiceContextData: unknown;
46
46
  disclosedContracts: unknown[];
47
47
  }
48
+ /** allocation-api reclaim (Track B): the (possibly empty) Allocation_Withdraw
49
+ * choice-context + the disclosed AmuletAllocation contract the agent needs to
50
+ * exercise the withdraw. Same envelope as ResolveAcceptResult; an empty context
51
+ * (`{}` / `[]`) is valid when the registry exposes no withdraw choice-context. */
52
+ export interface ResolveWithdrawResult {
53
+ choiceContextData: unknown;
54
+ disclosedContracts: unknown[];
55
+ }
48
56
  export interface PendingResult {
49
57
  party: string;
50
58
  pending: Array<{
@@ -80,6 +88,54 @@ export interface TransferCommandCidResult {
80
88
  nonce: string;
81
89
  transferCommandCid: string;
82
90
  }
91
+ /** allocation-api: everything the agent needs to BUILD an
92
+ * `AllocationFactory_Allocate` exercise. None of these is a verify trust
93
+ * anchor — the agent pins sender/receiver/amount/executor to its OWN intent in
94
+ * verify-before-sign; these refs widen nothing it will sign. */
95
+ export interface ResolveAllocationFactoryResult {
96
+ /** The resolved AllocationFactory cid to exercise against. */
97
+ factoryId: string;
98
+ /** Hash-prefixed templateId for the AllocationFactory_Allocate exercise. */
99
+ allocationFactoryTemplateId: string;
100
+ /** `{admin, id}` of the instrument (Amulet = {DSO, "Amulet"}). */
101
+ instrumentId: {
102
+ admin: string;
103
+ id: string;
104
+ };
105
+ /** The settlementRef the SettlementInfo carries (registry-/relay-supplied;
106
+ * the facilitator binds it informationally). */
107
+ settlementRef: unknown;
108
+ /** The transferLegId the AllocationSpecification carries. */
109
+ transferLegId: string;
110
+ /** Registry choice-context for the AllocationFactory_Allocate extraArgs. */
111
+ choiceContextData: unknown;
112
+ disclosedContracts: unknown[];
113
+ }
114
+ /** The created Allocation / AllocationInstruction cid read off the
115
+ * AllocationFactory_Allocate transaction by the relay. Exactly one is set for
116
+ * a successful allocate (Completed vs Pending); both null if neither resolved. */
117
+ export interface AllocationResultResult {
118
+ party: string;
119
+ updateId: string;
120
+ allocationCid?: string | null;
121
+ allocationInstructionCid?: string | null;
122
+ }
123
+ /** The created `X402Escrow` cid read off the `X402EscrowOffer_Accept` transaction
124
+ * by the relay (x402-escrow "Design A"). `escrowCid` is null if the relay could
125
+ * not resolve the created `X402Escrow` within its poll budget. */
126
+ export interface EscrowResultResult {
127
+ party: string;
128
+ updateId: string;
129
+ escrowCid?: string | null;
130
+ }
131
+ /** x402-direct "Design B": the result of resolving/minting the standing both-party
132
+ * DirectSettlementConsent for a {sender, merchant} pair (facilitator-side
133
+ * MerchantConsent_Accept). `minted` is false when an existing consent was reused. */
134
+ export interface MintDirectConsentResult {
135
+ directConsentCid: string;
136
+ minted: boolean;
137
+ updateId?: string;
138
+ }
83
139
  export declare class RelayClient {
84
140
  private readonly opts;
85
141
  constructor(opts: {
@@ -135,10 +191,50 @@ export declare class RelayClient {
135
191
  resolveAccept(b: {
136
192
  instructionCid: string;
137
193
  }): Promise<ResolveAcceptResult>;
194
+ /** allocation-api reclaim: resolve the Allocation_Withdraw choice-context +
195
+ * disclosed AmuletAllocation for `allocationCid` (the agent has no Scan
196
+ * access). Mirrors resolveAccept. */
197
+ resolveWithdraw(b: {
198
+ allocationCid: string;
199
+ }): Promise<ResolveWithdrawResult>;
138
200
  /** v1: resolve the refs needed to build a CreateTransferCommand exercise. */
139
201
  resolveTransferCommand(b: {
140
202
  payerParty: string;
141
203
  }): Promise<ResolveTransferCommandResult>;
204
+ /** allocation-api: resolve the AllocationFactory + its disclosed contracts +
205
+ * choice-context (the agent has no Scan access). Mirrors
206
+ * resolveTransferFactory. */
207
+ resolveAllocationFactory(b: {
208
+ sender: string;
209
+ receiver: string;
210
+ amount: string;
211
+ executor: string;
212
+ allocateBeforeSeconds: number;
213
+ settleBeforeSeconds: number;
214
+ meta?: Record<string, string>;
215
+ }): Promise<ResolveAllocationFactoryResult>;
216
+ /** allocation-api: read the created Allocation / AllocationInstruction cid off
217
+ * the AllocationFactory_Allocate transaction (the agent is relay-only). */
218
+ allocationResult(party: string, updateId: string): Promise<AllocationResultResult>;
219
+ /** x402-escrow "Design A": read the created `X402Escrow` cid off the
220
+ * `X402EscrowOffer_Accept` transaction (the agent is relay-only). Mirrors
221
+ * `allocationResult`: the relay reads the tx by updateId and matches the created
222
+ * `X402Escrow` template. Requires a matching facilitator-side `escrow-result`
223
+ * endpoint (a `getTransactionById` + templateId-endsWith match, exactly like
224
+ * `allocation-result`). */
225
+ escrowResult(party: string, updateId: string): Promise<EscrowResultResult>;
226
+ /** x402-direct "Design B": resolve OR mint the standing both-party
227
+ * DirectSettlementConsent for the {sender, merchant} pair (the facilitator
228
+ * exercises MerchantConsent_Accept ALONE off the two standing consents). The
229
+ * client may pass the returned cid as the O(1) /settle fast-path
230
+ * (payload.directConsentCid). Idempotent: returns an existing consent
231
+ * (minted:false) when one is already standing; throws (relay error) when either
232
+ * party has not onboarded its once-total SenderConsent / MerchantConsent yet. */
233
+ mintDirectConsent(b: {
234
+ sender: string;
235
+ merchant: string;
236
+ maxAmount?: string | null;
237
+ }): Promise<MintDirectConsentResult>;
142
238
  /** v1: resolve the cid of the just-created TransferCommand via the relay.
143
239
  * Pass the create's `updateId` (from execute) so the relay reads the cid
144
240
  * straight off that transaction — O(1) and immune to the ACS list cap the
@@ -1 +1 @@
1
- {"version":3,"file":"relay-client.d.ts","sourceRoot":"","sources":["../src/relay-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"relay-client.d.ts","sourceRoot":"","sources":["../src/relay-client.ts"],"names":[],"mappings":"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"}
@@ -68,10 +68,46 @@ export class RelayClient {
68
68
  resolveAccept(b) {
69
69
  return this.req("POST", "/v1/wallet/resolve/accept", b);
70
70
  }
71
+ /** allocation-api reclaim: resolve the Allocation_Withdraw choice-context +
72
+ * disclosed AmuletAllocation for `allocationCid` (the agent has no Scan
73
+ * access). Mirrors resolveAccept. */
74
+ resolveWithdraw(b) {
75
+ return this.req("POST", "/v1/wallet/resolve/withdraw", b);
76
+ }
71
77
  /** v1: resolve the refs needed to build a CreateTransferCommand exercise. */
72
78
  resolveTransferCommand(b) {
73
79
  return this.req("POST", "/v1/wallet/resolve/transfer-command", b);
74
80
  }
81
+ /** allocation-api: resolve the AllocationFactory + its disclosed contracts +
82
+ * choice-context (the agent has no Scan access). Mirrors
83
+ * resolveTransferFactory. */
84
+ resolveAllocationFactory(b) {
85
+ return this.req("POST", "/v1/wallet/resolve/allocation-factory", b);
86
+ }
87
+ /** allocation-api: read the created Allocation / AllocationInstruction cid off
88
+ * the AllocationFactory_Allocate transaction (the agent is relay-only). */
89
+ allocationResult(party, updateId) {
90
+ return this.req("GET", `/v1/wallet/${encodeURIComponent(party)}/allocation-result?updateId=${encodeURIComponent(updateId)}`);
91
+ }
92
+ /** x402-escrow "Design A": read the created `X402Escrow` cid off the
93
+ * `X402EscrowOffer_Accept` transaction (the agent is relay-only). Mirrors
94
+ * `allocationResult`: the relay reads the tx by updateId and matches the created
95
+ * `X402Escrow` template. Requires a matching facilitator-side `escrow-result`
96
+ * endpoint (a `getTransactionById` + templateId-endsWith match, exactly like
97
+ * `allocation-result`). */
98
+ escrowResult(party, updateId) {
99
+ return this.req("GET", `/v1/wallet/${encodeURIComponent(party)}/escrow-result?updateId=${encodeURIComponent(updateId)}`);
100
+ }
101
+ /** x402-direct "Design B": resolve OR mint the standing both-party
102
+ * DirectSettlementConsent for the {sender, merchant} pair (the facilitator
103
+ * exercises MerchantConsent_Accept ALONE off the two standing consents). The
104
+ * client may pass the returned cid as the O(1) /settle fast-path
105
+ * (payload.directConsentCid). Idempotent: returns an existing consent
106
+ * (minted:false) when one is already standing; throws (relay error) when either
107
+ * party has not onboarded its once-total SenderConsent / MerchantConsent yet. */
108
+ mintDirectConsent(b) {
109
+ return this.req("POST", "/v1/wallet/direct/mint", b);
110
+ }
75
111
  /** v1: resolve the cid of the just-created TransferCommand via the relay.
76
112
  * Pass the create's `updateId` (from execute) so the relay reads the cid
77
113
  * straight off that transaction — O(1) and immune to the ACS list cap the
@@ -1 +1 @@
1
- {"version":3,"file":"relay-client.js","sourceRoot":"","sources":["../src/relay-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"relay-client.js","sourceRoot":"","sources":["../src/relay-client.ts"],"names":[],"mappings":"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"}
@@ -29,5 +29,20 @@ export declare function makeRelaySigner(wallet: AgentWallet, opts?: {
29
29
  * Without it, a relay-prepared tx that carries the DSO outside the root
30
30
  * choice arg fails closed (the round-3 no-pin-fallback removal). */
31
31
  trustedDso?: string;
32
+ /** Optional spend ceiling: the MAX amount this signer will EVER sign for, in
33
+ * the same unit the 402 quotes (compared against `input.amount`). When set,
34
+ * the signer REFUSES to sign — fail closed, before any relay call — if the
35
+ * to-be-signed amount exceeds it. This makes the spend breaker load-bearing
36
+ * against an over-quoting (or MITM'd) merchant: the agent never signs a
37
+ * charge larger than the caller authorized, no matter what the 402 returns.
38
+ * Omitted → no ceiling (legacy behavior; the published MCP/pay path is
39
+ * unaffected when unset). */
40
+ maxPaymentValue?: string;
41
+ /** Optional expected-payee pin: the ONLY recipient this signer will sign a
42
+ * transfer to (compared against `input.receiver`). When set, the signer
43
+ * REFUSES to sign — fail closed, before any relay call — if the 402's payTo
44
+ * is anything else, defending against a MITM'd merchant that swaps `payTo`
45
+ * to drain funds to an attacker. Omitted → no pin (legacy behavior). */
46
+ expectedPayTo?: string;
32
47
  }): CantonSigner;
33
48
  //# sourceMappingURL=relay-signer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"relay-signer.d.ts","sourceRoot":"","sources":["../src/relay-signer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAKhE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE/D,wBAAgB,eAAe,CAC7B,MAAM,EAAE,WAAW,EACnB,IAAI,GAAE;IACJ,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,WAAW,CAAC,EAAE,kBAAkB,CAAC;IACjC;;;yEAGqE;IACrE,UAAU,CAAC,EAAE,MAAM,CAAC;CAChB,GACL,YAAY,CA0Dd"}
1
+ {"version":3,"file":"relay-signer.d.ts","sourceRoot":"","sources":["../src/relay-signer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAKhE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE/D,wBAAgB,eAAe,CAC7B,MAAM,EAAE,WAAW,EACnB,IAAI,GAAE;IACJ,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,WAAW,CAAC,EAAE,kBAAkB,CAAC;IACjC;;;yEAGqE;IACrE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;;;;kCAO8B;IAC9B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;;6EAIyE;IACzE,aAAa,CAAC,EAAE,MAAM,CAAC;CACnB,GACL,YAAY,CAmMd"}
@@ -1,5 +1,5 @@
1
1
  import { RelayClient } from "./relay-client.js";
2
- import { transfer, createTransferCommand } from "./tx.js";
2
+ import { transfer, createTransferCommand, allocate, createSenderConsent } from "./tx.js";
3
3
  import { resolveHashBinding } from "./hash-binding.js";
4
4
  import { resolveTrustedDsoParty } from "./trusted-dso.js";
5
5
  export function makeRelaySigner(wallet, opts = {}) {
@@ -17,9 +17,41 @@ export function makeRelaySigner(wallet, opts = {}) {
17
17
  // auto-DSO then works for any mainnet payment no matter how the wallet was
18
18
  // created. Without a resolvable DSO, value-moving prepared bytes carrying it
19
19
  // outside the root choice arg are refused (fail-closed).
20
+ // Spend breaker — applied at the TOP of BOTH signer arms, fail-CLOSED, BEFORE
21
+ // any relay call. Refuses to sign a merchant-quoted amount above the caller's
22
+ // ceiling or to a payee the caller did not authorize. Both pins are OPTIONAL;
23
+ // unset means the corresponding check is skipped (legacy behavior preserved).
24
+ // The amount is compared as a Number in the SAME unit as `input.amount`,
25
+ // matching the existing balance fast-fail (`Number(bal.cc) < Number(amount)`).
26
+ const enforceSpendLimits = (to, amount) => {
27
+ if (opts.expectedPayTo !== undefined && to !== opts.expectedPayTo) {
28
+ throw new Error(`refusing to sign: payee ${to} does not match the expected payTo ` +
29
+ `${opts.expectedPayTo} (a merchant cannot redirect this payment)`);
30
+ }
31
+ if (opts.maxPaymentValue !== undefined) {
32
+ const want = Number(amount);
33
+ const cap = Number(opts.maxPaymentValue);
34
+ // A configured-but-broken ceiling must FAIL CLOSED, never silently disable
35
+ // the cap: `want > NaN` is always false, so a non-finite cap would wave
36
+ // every amount through. Refuse to sign instead.
37
+ if (!Number.isFinite(cap)) {
38
+ throw new Error(`refusing to sign: configured max payment value ` +
39
+ `${JSON.stringify(opts.maxPaymentValue)} is not a finite number`);
40
+ }
41
+ if (!Number.isFinite(want)) {
42
+ throw new Error(`refusing to sign: payment amount ${JSON.stringify(amount)} is not a ` +
43
+ `finite number`);
44
+ }
45
+ if (want > cap) {
46
+ throw new Error(`refusing to sign: payment amount ${amount} exceeds the max ` +
47
+ `payment value ${opts.maxPaymentValue} (the merchant over-quoted)`);
48
+ }
49
+ }
50
+ };
20
51
  return {
21
52
  party: wallet.party,
22
53
  async signCip56Transfer(input) {
54
+ enforceSpendLimits(input.receiver, input.amount);
23
55
  const trustedDso = opts.trustedDso ?? resolveTrustedDsoParty(process.env, wallet.network);
24
56
  const updateId = await transfer(relay, wallet, {
25
57
  receiver: input.receiver,
@@ -30,7 +62,101 @@ export function makeRelaySigner(wallet, opts = {}) {
30
62
  });
31
63
  return { payerParty: wallet.party, updateId, transferInstructionCid: null };
32
64
  },
65
+ async signAllocation(input) {
66
+ // Spend breaker FIRST (fail-closed, before any relay call), exactly like
67
+ // the other arms.
68
+ enforceSpendLimits(input.receiver, input.amount);
69
+ const trustedDso = opts.trustedDso ?? resolveTrustedDsoParty(process.env, wallet.network);
70
+ const r = await allocate(relay, wallet, {
71
+ receiver: input.receiver,
72
+ amount: input.amount,
73
+ executor: input.executor,
74
+ synchronizerId: input.synchronizerId,
75
+ allocateBeforeSeconds: input.allocateBeforeSeconds,
76
+ settleBeforeSeconds: input.settleBeforeSeconds,
77
+ ...(input.transferMeta ? { transferMeta: input.transferMeta } : {}),
78
+ hashBinding,
79
+ ...(trustedDso !== undefined ? { expectInstrumentAdmin: trustedDso } : {}),
80
+ });
81
+ return {
82
+ payerParty: r.payerParty,
83
+ allocationCid: r.allocationCid,
84
+ allocationInstructionCid: r.allocationInstructionCid,
85
+ updateId: r.updateId,
86
+ };
87
+ },
88
+ async signAllocationDirect(input) {
89
+ // Spend breaker FIRST (fail-closed, before any relay call), exactly like
90
+ // the other arms.
91
+ enforceSpendLimits(input.receiver, input.amount);
92
+ // Ensure the standing both-party DirectSettlementConsent {sender, merchant}
93
+ // exists (facilitator-alone mint off the two once-total consents). On the
94
+ // first DIRECT payment the agent's own SenderConsent may not be onboarded
95
+ // yet — `mintDirectConsent` then throws; create it ONCE and retry. If the
96
+ // retry still throws, the MERCHANT has not onboarded its MerchantConsent (the
97
+ // agent cannot create that on the merchant's behalf), so surface a clear,
98
+ // actionable error preserving the original relay error as `cause`.
99
+ let directConsentCid;
100
+ try {
101
+ const mint = await relay.mintDirectConsent({
102
+ sender: wallet.party,
103
+ merchant: input.receiver,
104
+ });
105
+ directConsentCid = mint.directConsentCid;
106
+ }
107
+ catch (firstErr) {
108
+ // The agent's own SenderConsent is the only standing consent it can mint.
109
+ // Create it once (verify-before-sign, the agent's own key) then retry.
110
+ await createSenderConsent(relay, wallet, {
111
+ facilitator: input.executor,
112
+ synchronizerId: input.synchronizerId,
113
+ hashBinding,
114
+ });
115
+ try {
116
+ const mint = await relay.mintDirectConsent({
117
+ sender: wallet.party,
118
+ merchant: input.receiver,
119
+ });
120
+ directConsentCid = mint.directConsentCid;
121
+ }
122
+ catch (retryErr) {
123
+ // Still failing after the sender side is onboarded → the merchant has
124
+ // not onboarded its MerchantConsent. The agent cannot pay direct to a
125
+ // merchant that has not opted into the direct path.
126
+ throw new Error(`cannot pay merchant ${input.receiver} via allocation-direct: it has ` +
127
+ `not onboarded a MerchantConsent with this facilitator yet (the agent ` +
128
+ `created its own SenderConsent but the both-party consent still cannot ` +
129
+ `be minted). The merchant must run merchant-onboard once before it can ` +
130
+ `receive direct payments.`, { cause: retryErr instanceof Error ? retryErr : firstErr });
131
+ }
132
+ }
133
+ const trustedDso = opts.trustedDso ?? resolveTrustedDsoParty(process.env, wallet.network);
134
+ // The on-ledger lock is IDENTICAL to the allocation-api arm (same
135
+ // AllocationFactory_Allocate, receiver = merchant, executor = facilitator);
136
+ // verify-before-sign in `allocate` re-checks every money-critical field.
137
+ const r = await allocate(relay, wallet, {
138
+ receiver: input.receiver,
139
+ amount: input.amount,
140
+ executor: input.executor,
141
+ synchronizerId: input.synchronizerId,
142
+ allocateBeforeSeconds: input.allocateBeforeSeconds,
143
+ settleBeforeSeconds: input.settleBeforeSeconds,
144
+ ...(input.transferMeta ? { transferMeta: input.transferMeta } : {}),
145
+ hashBinding,
146
+ ...(trustedDso !== undefined ? { expectInstrumentAdmin: trustedDso } : {}),
147
+ });
148
+ return {
149
+ payerParty: r.payerParty,
150
+ allocationCid: r.allocationCid,
151
+ allocationInstructionCid: r.allocationInstructionCid,
152
+ updateId: r.updateId,
153
+ directConsentCid,
154
+ };
155
+ },
33
156
  async signTransferCommand(input) {
157
+ // Spend breaker FIRST — before even the balance pre-check, so a refused
158
+ // amount/payee never touches the relay (no network, no info leak).
159
+ enforceSpendLimits(input.receiver, input.amount);
34
160
  // Fast-fail an underfunded wallet: without this, an unfunded agent's pay
35
161
  // loops the client re-pay retries (each settle just rejects "no inputs")
36
162
  // for ~30s and then returns an opaque "rejected" — surface a clear
@@ -1 +1 @@
1
- {"version":3,"file":"relay-signer.js","sourceRoot":"","sources":["../src/relay-signer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"relay-signer.js","sourceRoot":"","sources":["../src/relay-signer.ts"],"names":[],"mappings":"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"}