@curless/agentbank-merchant-sdk 0.0.4 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -6,7 +6,7 @@ TikTok Shop seller service, anything that wants to **accept agent payments**)
6
6
  and you get:
7
7
 
8
8
  - **`AgentbankMerchant`** — typed client for `PaymentIntents` (create/get/capture/list across ACP / x402 / AP2 / UCP / A2A) and `WebhookEndpoints`.
9
- - **`verifyWebhook` / `parseVerifiedWebhook`** — HMAC-SHA256 signature verification (Stripe-style `t=…,v1=…`), constant-time.
9
+ - **`verifyWebhook` / `parseVerifiedWebhook`** — HMAC-SHA256 signature verification (Stripe-style `t=…,v1=…`), constant-time, **edge-safe** (Web Crypto, runs on Vercel Edge / Cloudflare Workers). Async — `await` them.
10
10
  - **`x402`** — `buildChallenge()` to emit your own canonical 402 from your route, `decodeXPaymentHeader()` to parse what the agent paid with.
11
11
 
12
12
  Zero runtime dependencies (pure `fetch` + `node:crypto`). Node 18+.
@@ -30,8 +30,8 @@ const pi = await client.paymentIntents.create({
30
30
  idempotencyKey: req.headers['idempotency-key'],
31
31
  });
32
32
 
33
- // Verify an inbound agentbank webhook
34
- const event = parseVerifiedWebhook(
33
+ // Verify an inbound agentbank webhook (edge-safe; HMAC is async)
34
+ const event = await parseVerifiedWebhook(
35
35
  process.env.WEBHOOK_SECRET!, // whsec_… from /v1/webhook-endpoints
36
36
  await req.text(), // RAW body, NOT JSON-parsed
37
37
  req.headers['x-agentbank-signature'],
package/dist/client.d.ts CHANGED
@@ -1,13 +1,10 @@
1
+ import { type FetchLike, type RequestOptions } from '@curless/agentbank-core';
2
+ import { BalanceTransactionsResource } from './resources/balance-transactions.js';
1
3
  import { CustomersResource } from './resources/customers.js';
2
4
  import { PaymentIntentsResource } from './resources/payment-intents.js';
3
5
  import { PaymentLinksResource } from './resources/payment-links.js';
4
6
  import { WebhookEndpointsResource } from './resources/webhook-endpoints.js';
5
- export type FetchLike = typeof fetch;
6
- export type RequestOptions = {
7
- query?: Record<string, string | number | undefined>;
8
- body?: unknown;
9
- idempotencyKey?: string;
10
- };
7
+ export type { FetchLike, RequestOptions } from '@curless/agentbank-core';
11
8
  export type AgentbankMerchantOptions = {
12
9
  baseUrl: string;
13
10
  apiKey: string;
@@ -21,6 +18,7 @@ export declare class AgentbankMerchant {
21
18
  readonly paymentLinks: PaymentLinksResource;
22
19
  readonly webhookEndpoints: WebhookEndpointsResource;
23
20
  readonly customers: CustomersResource;
21
+ readonly balanceTransactions: BalanceTransactionsResource;
24
22
  constructor(opts: AgentbankMerchantOptions);
25
23
  /** @internal */
26
24
  request<T>(method: string, path: string, opts?: RequestOptions): Promise<T>;
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAE5E,MAAM,MAAM,SAAS,GAAG,OAAO,KAAK,CAAC;AAErC,MAAM,MAAM,cAAc,GAAG;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC,CAAC;IACpD,IAAI,CAAC,EAAE,OAAO,CAAC;IAEf,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG;IACrC,OAAO,EAAE,MAAM,CAAC;IAEhB,MAAM,EAAE,MAAM,CAAC;IAEf,KAAK,CAAC,EAAE,SAAS,CAAC;CACnB,CAAC;AAOF,qBAAa,iBAAiB;IAC5B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAY;IACtC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAEhC,QAAQ,CAAC,cAAc,EAAE,sBAAsB,CAAC;IAChD,QAAQ,CAAC,YAAY,EAAE,oBAAoB,CAAC;IAC5C,QAAQ,CAAC,gBAAgB,EAAE,wBAAwB,CAAC;IACpD,QAAQ,CAAC,SAAS,EAAE,iBAAiB,CAAC;gBAE1B,IAAI,EAAE,wBAAwB;IAU1C,gBAAgB;IACV,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE,cAAmB,GAAG,OAAO,CAAC,CAAC,CAAC;CAyBtF"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,cAAc,EAAsB,MAAM,yBAAyB,CAAC;AAClG,OAAO,EAAE,2BAA2B,EAAE,MAAM,qCAAqC,CAAC;AAClF,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAE5E,YAAY,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAEzE,MAAM,MAAM,wBAAwB,GAAG;IACrC,OAAO,EAAE,MAAM,CAAC;IAEhB,MAAM,EAAE,MAAM,CAAC;IAEf,KAAK,CAAC,EAAE,SAAS,CAAC;CACnB,CAAC;AAOF,qBAAa,iBAAiB;IAC5B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAY;IACtC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAEhC,QAAQ,CAAC,cAAc,EAAE,sBAAsB,CAAC;IAChD,QAAQ,CAAC,YAAY,EAAE,oBAAoB,CAAC;IAC5C,QAAQ,CAAC,gBAAgB,EAAE,wBAAwB,CAAC;IACpD,QAAQ,CAAC,SAAS,EAAE,iBAAiB,CAAC;IACtC,QAAQ,CAAC,mBAAmB,EAAE,2BAA2B,CAAC;gBAE9C,IAAI,EAAE,wBAAwB;IAW1C,gBAAgB;IACV,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE,cAAmB,GAAG,OAAO,CAAC,CAAC,CAAC;CActF"}
package/dist/client.js CHANGED
@@ -1,4 +1,5 @@
1
- import { AgentbankError } from './errors.js';
1
+ import { buildUrl, sendJson } from '@curless/agentbank-core';
2
+ import { BalanceTransactionsResource } from './resources/balance-transactions.js';
2
3
  import { CustomersResource } from './resources/customers.js';
3
4
  import { PaymentIntentsResource } from './resources/payment-intents.js';
4
5
  import { PaymentLinksResource } from './resources/payment-links.js';
@@ -16,6 +17,7 @@ export class AgentbankMerchant {
16
17
  paymentLinks;
17
18
  webhookEndpoints;
18
19
  customers;
20
+ balanceTransactions;
19
21
  constructor(opts) {
20
22
  this.baseUrl = opts.baseUrl.replace(/\/+$/, '');
21
23
  this.apiKey = opts.apiKey;
@@ -24,42 +26,17 @@ export class AgentbankMerchant {
24
26
  this.paymentLinks = new PaymentLinksResource(this);
25
27
  this.webhookEndpoints = new WebhookEndpointsResource(this);
26
28
  this.customers = new CustomersResource(this);
29
+ this.balanceTransactions = new BalanceTransactionsResource(this);
27
30
  }
28
31
  /** @internal */
29
32
  async request(method, path, opts = {}) {
30
- const url = new URL(`${this.baseUrl}${path}`);
31
- if (opts.query) {
32
- for (const [k, v] of Object.entries(opts.query)) {
33
- if (v !== undefined)
34
- url.searchParams.set(k, String(v));
35
- }
36
- }
37
33
  const headers = {
38
34
  'content-type': 'application/json',
39
35
  authorization: `Bearer ${this.apiKey}`,
40
36
  };
41
37
  if (opts.idempotencyKey)
42
38
  headers['idempotency-key'] = opts.idempotencyKey;
43
- const res = await this.fetchImpl(url.toString(), {
44
- method,
45
- headers,
46
- body: opts.body === undefined ? undefined : JSON.stringify(opts.body),
47
- });
48
- const text = await res.text();
49
- const json = text ? JSON.parse(text) : undefined;
50
- if (!res.ok)
51
- throw toError(res.status, json);
52
- return json;
39
+ return sendJson(this.fetchImpl, buildUrl(this.baseUrl, path, opts.query), method, headers, opts.body);
53
40
  }
54
41
  }
55
- const toError = (status, json) => {
56
- if (json && typeof json === 'object') {
57
- const o = json;
58
- if (o.error && typeof o.error === 'object') {
59
- const e = o.error;
60
- return new AgentbankError(status, String(e.code ?? 'error'), String(e.message ?? 'request failed'), e.details);
61
- }
62
- }
63
- return new AgentbankError(status, 'error', `request failed with status ${status}`);
64
- };
65
42
  //# sourceMappingURL=client.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuC,QAAQ,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAClG,OAAO,EAAE,2BAA2B,EAAE,MAAM,qCAAqC,CAAC;AAClF,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAY5E,wEAAwE;AACxE,sEAAsE;AACtE,sEAAsE;AACtE,iEAAiE;AACjE,gCAAgC;AAChC,MAAM,OAAO,iBAAiB;IACnB,OAAO,CAAS;IACR,SAAS,CAAY;IACrB,MAAM,CAAS;IAEvB,cAAc,CAAyB;IACvC,YAAY,CAAuB;IACnC,gBAAgB,CAA2B;IAC3C,SAAS,CAAoB;IAC7B,mBAAmB,CAA8B;IAE1D,YAAY,IAA8B;QACxC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAChD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC1B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC;QACrC,IAAI,CAAC,cAAc,GAAG,IAAI,sBAAsB,CAAC,IAAI,CAAC,CAAC;QACvD,IAAI,CAAC,YAAY,GAAG,IAAI,oBAAoB,CAAC,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,gBAAgB,GAAG,IAAI,wBAAwB,CAAC,IAAI,CAAC,CAAC;QAC3D,IAAI,CAAC,SAAS,GAAG,IAAI,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAC7C,IAAI,CAAC,mBAAmB,GAAG,IAAI,2BAA2B,CAAC,IAAI,CAAC,CAAC;IACnE,CAAC;IAED,gBAAgB;IAChB,KAAK,CAAC,OAAO,CAAI,MAAc,EAAE,IAAY,EAAE,OAAuB,EAAE;QACtE,MAAM,OAAO,GAA2B;YACtC,cAAc,EAAE,kBAAkB;YAClC,aAAa,EAAE,UAAU,IAAI,CAAC,MAAM,EAAE;SACvC,CAAC;QACF,IAAI,IAAI,CAAC,cAAc;YAAE,OAAO,CAAC,iBAAiB,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC;QAC1E,OAAO,QAAQ,CACb,IAAI,CAAC,SAAS,EACd,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,EACxC,MAAM,EACN,OAAO,EACP,IAAI,CAAC,IAAI,CACV,CAAC;IACJ,CAAC;CACF"}
package/dist/index.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  export { AgentbankMerchant } from './client.js';
2
2
  export type { AgentbankMerchantOptions, FetchLike, RequestOptions, } from './client.js';
3
- export { AgentbankError } from './errors.js';
4
- export type { Customer, CustomerStatus, Paginated, PaymentIntent, PaymentIntentStatus, PaymentLink, PaymentLinkItem, PaymentLinkStatus, PaymentProtocol, WebhookEndpoint, WebhookEndpointWithSecret, X402PaymentRequirements, } from './types.js';
3
+ export { AgentbankError } from '@curless/agentbank-core';
4
+ export type { BalanceTransaction, Customer, CustomerStatus, LedgerEntryView, Paginated, PaymentIntent, PaymentIntentLedger, PaymentIntentStatus, PaymentLink, PaymentLinkItem, PaymentLinkStatus, PaymentProtocol, WebhookEndpoint, WebhookEndpointWithSecret, X402PaymentRequirements, } from './types.js';
5
5
  export type { CreateCustomerInput, UpdateCustomerInput } from './resources/customers.js';
6
6
  export type { CreatePaymentIntentInput } from './resources/payment-intents.js';
7
7
  export type { CreatePaymentLinkInput } from './resources/payment-links.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,YAAY,EACV,wBAAwB,EACxB,SAAS,EACT,cAAc,GACf,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,YAAY,EACV,QAAQ,EACR,cAAc,EACd,SAAS,EACT,aAAa,EACb,mBAAmB,EACnB,WAAW,EACX,eAAe,EACf,iBAAiB,EACjB,eAAe,EACf,eAAe,EACf,yBAAyB,EACzB,uBAAuB,GACxB,MAAM,YAAY,CAAC;AACpB,YAAY,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AACzF,YAAY,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AAC/E,YAAY,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AAC3E,YAAY,EAAE,0BAA0B,EAAE,MAAM,kCAAkC,CAAC;AACnF,OAAO,EACL,wBAAwB,EACxB,oBAAoB,EACpB,aAAa,GACd,MAAM,eAAe,CAAC;AACvB,YAAY,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAExE,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,CAAC;AAChB,YAAY,EACV,mBAAmB,EACnB,eAAe,EACf,iBAAiB,GAClB,MAAM,WAAW,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,YAAY,EACV,wBAAwB,EACxB,SAAS,EACT,cAAc,GACf,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,YAAY,EACV,kBAAkB,EAClB,QAAQ,EACR,cAAc,EACd,eAAe,EACf,SAAS,EACT,aAAa,EACb,mBAAmB,EACnB,mBAAmB,EACnB,WAAW,EACX,eAAe,EACf,iBAAiB,EACjB,eAAe,EACf,eAAe,EACf,yBAAyB,EACzB,uBAAuB,GACxB,MAAM,YAAY,CAAC;AACpB,YAAY,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AACzF,YAAY,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AAC/E,YAAY,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AAC3E,YAAY,EAAE,0BAA0B,EAAE,MAAM,kCAAkC,CAAC;AACnF,OAAO,EACL,wBAAwB,EACxB,oBAAoB,EACpB,aAAa,GACd,MAAM,eAAe,CAAC;AACvB,YAAY,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAExE,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,CAAC;AAChB,YAAY,EACV,mBAAmB,EACnB,eAAe,EACf,iBAAiB,GAClB,MAAM,WAAW,CAAC"}
package/dist/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  export { AgentbankMerchant } from './client.js';
2
- export { AgentbankError } from './errors.js';
2
+ export { AgentbankError } from '@curless/agentbank-core';
3
3
  export { WEBHOOK_SIGNATURE_HEADER, parseVerifiedWebhook, verifyWebhook, } from './webhooks.js';
4
4
  // x402 helpers — namespaced so consumers `import { x402 } from ...`.
5
5
  import * as x402 from './x402.js';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAMhD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAmB7C,OAAO,EACL,wBAAwB,EACxB,oBAAoB,EACpB,aAAa,GACd,MAAM,eAAe,CAAC;AAEvB,qEAAqE;AACrE,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAMhD,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAsBzD,OAAO,EACL,wBAAwB,EACxB,oBAAoB,EACpB,aAAa,GACd,MAAM,eAAe,CAAC;AAEvB,qEAAqE;AACrE,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,CAAC"}
@@ -0,0 +1,11 @@
1
+ import type { AgentbankMerchant } from '../client.js';
2
+ import type { BalanceTransaction, Paginated } from '../types.js';
3
+ export declare class BalanceTransactionsResource {
4
+ private readonly client;
5
+ constructor(client: AgentbankMerchant);
6
+ list(params?: {
7
+ limit?: number;
8
+ offset?: number;
9
+ }): Promise<Paginated<BalanceTransaction>>;
10
+ }
11
+ //# sourceMappingURL=balance-transactions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"balance-transactions.d.ts","sourceRoot":"","sources":["../../src/resources/balance-transactions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,KAAK,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAMjE,qBAAa,2BAA2B;IAC1B,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,iBAAiB;IAEtD,IAAI,CAAC,MAAM,GAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAO,GAAG,OAAO,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC;CAK/F"}
@@ -0,0 +1,16 @@
1
+ // Balance transactions — the org+mode fund-flow statement (every ledger leg
2
+ // tied to a PaymentIntent), newest-first. The reconciliation view: "what
3
+ // moved, when, on which PI". The agentbank analogue of Stripe balance
4
+ // transactions.
5
+ export class BalanceTransactionsResource {
6
+ client;
7
+ constructor(client) {
8
+ this.client = client;
9
+ }
10
+ list(params = {}) {
11
+ return this.client.request('GET', '/v1/balance-transactions', {
12
+ query: params,
13
+ });
14
+ }
15
+ }
16
+ //# sourceMappingURL=balance-transactions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"balance-transactions.js","sourceRoot":"","sources":["../../src/resources/balance-transactions.ts"],"names":[],"mappings":"AAGA,4EAA4E;AAC5E,yEAAyE;AACzE,sEAAsE;AACtE,gBAAgB;AAChB,MAAM,OAAO,2BAA2B;IACT;IAA7B,YAA6B,MAAyB;QAAzB,WAAM,GAAN,MAAM,CAAmB;IAAG,CAAC;IAE1D,IAAI,CAAC,SAA8C,EAAE;QACnD,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAgC,KAAK,EAAE,0BAA0B,EAAE;YAC3F,KAAK,EAAE,MAAM;SACd,CAAC,CAAC;IACL,CAAC;CACF"}
@@ -1,5 +1,5 @@
1
1
  import type { AgentbankMerchant } from '../client.js';
2
- import type { Customer, CustomerStatus, Paginated } from '../types.js';
2
+ import type { Customer, CustomerStatus, Paginated, PaymentIntent } from '../types.js';
3
3
  export type CreateCustomerInput = {
4
4
  externalId?: string;
5
5
  email?: string;
@@ -24,5 +24,9 @@ export declare class CustomersResource {
24
24
  }): Promise<Paginated<Customer>>;
25
25
  get(customerId: string): Promise<Customer>;
26
26
  update(customerId: string, patch: UpdateCustomerInput): Promise<Customer>;
27
+ paymentIntents(customerId: string, params?: {
28
+ limit?: number;
29
+ offset?: number;
30
+ }): Promise<Paginated<PaymentIntent>>;
27
31
  }
28
32
  //# sourceMappingURL=customers.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"customers.d.ts","sourceRoot":"","sources":["../../src/resources/customers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAEvE,MAAM,MAAM,mBAAmB,GAAG;IAChC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC,CAAC;AAIF,qBAAa,iBAAiB;IAChB,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,iBAAiB;IAEtD,MAAM,CAAC,KAAK,GAAE,mBAAwB,GAAG,OAAO,CAAC,QAAQ,CAAC;IAI1D,IAAI,CAAC,MAAM,GAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAO,GAAG,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IAIpF,GAAG,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAI1C,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,QAAQ,CAAC;CAO1E"}
1
+ {"version":3,"file":"customers.d.ts","sourceRoot":"","sources":["../../src/resources/customers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEtF,MAAM,MAAM,mBAAmB,GAAG;IAChC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC,CAAC;AAIF,qBAAa,iBAAiB;IAChB,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,iBAAiB;IAEtD,MAAM,CAAC,KAAK,GAAE,mBAAwB,GAAG,OAAO,CAAC,QAAQ,CAAC;IAI1D,IAAI,CAAC,MAAM,GAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAO,GAAG,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IAIpF,GAAG,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAI1C,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,QAAQ,CAAC;IASzE,cAAc,CACZ,UAAU,EAAE,MAAM,EAClB,MAAM,GAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAO,GAC/C,OAAO,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;CAOrC"}
@@ -17,5 +17,9 @@ export class CustomersResource {
17
17
  update(customerId, patch) {
18
18
  return this.client.request('PATCH', `/v1/customers/${encodeURIComponent(customerId)}`, { body: patch });
19
19
  }
20
+ // This customer's payment history (paginated, newest first).
21
+ paymentIntents(customerId, params = {}) {
22
+ return this.client.request('GET', `/v1/customers/${encodeURIComponent(customerId)}/payment-intents`, { query: params });
23
+ }
20
24
  }
21
25
  //# sourceMappingURL=customers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"customers.js","sourceRoot":"","sources":["../../src/resources/customers.ts"],"names":[],"mappings":"AAmBA,yEAAyE;AACzE,qEAAqE;AACrE,MAAM,OAAO,iBAAiB;IACC;IAA7B,YAA6B,MAAyB;QAAzB,WAAM,GAAN,MAAM,CAAmB;IAAG,CAAC;IAE1D,MAAM,CAAC,QAA6B,EAAE;QACpC,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAW,MAAM,EAAE,eAAe,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACjF,CAAC;IAED,IAAI,CAAC,SAA8C,EAAE;QACnD,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAsB,KAAK,EAAE,eAAe,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;IAC7F,CAAC;IAED,GAAG,CAAC,UAAkB;QACpB,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAW,KAAK,EAAE,iBAAiB,kBAAkB,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;IACjG,CAAC;IAED,MAAM,CAAC,UAAkB,EAAE,KAA0B;QACnD,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CACxB,OAAO,EACP,iBAAiB,kBAAkB,CAAC,UAAU,CAAC,EAAE,EACjD,EAAE,IAAI,EAAE,KAAK,EAAE,CAChB,CAAC;IACJ,CAAC;CACF"}
1
+ {"version":3,"file":"customers.js","sourceRoot":"","sources":["../../src/resources/customers.ts"],"names":[],"mappings":"AAmBA,yEAAyE;AACzE,qEAAqE;AACrE,MAAM,OAAO,iBAAiB;IACC;IAA7B,YAA6B,MAAyB;QAAzB,WAAM,GAAN,MAAM,CAAmB;IAAG,CAAC;IAE1D,MAAM,CAAC,QAA6B,EAAE;QACpC,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAW,MAAM,EAAE,eAAe,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACjF,CAAC;IAED,IAAI,CAAC,SAA8C,EAAE;QACnD,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAsB,KAAK,EAAE,eAAe,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;IAC7F,CAAC;IAED,GAAG,CAAC,UAAkB;QACpB,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAW,KAAK,EAAE,iBAAiB,kBAAkB,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;IACjG,CAAC;IAED,MAAM,CAAC,UAAkB,EAAE,KAA0B;QACnD,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CACxB,OAAO,EACP,iBAAiB,kBAAkB,CAAC,UAAU,CAAC,EAAE,EACjD,EAAE,IAAI,EAAE,KAAK,EAAE,CAChB,CAAC;IACJ,CAAC;IAED,6DAA6D;IAC7D,cAAc,CACZ,UAAkB,EAClB,SAA8C,EAAE;QAEhD,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CACxB,KAAK,EACL,iBAAiB,kBAAkB,CAAC,UAAU,CAAC,kBAAkB,EACjE,EAAE,KAAK,EAAE,MAAM,EAAE,CAClB,CAAC;IACJ,CAAC;CACF"}
@@ -1,5 +1,5 @@
1
1
  import type { AgentbankMerchant } from '../client.js';
2
- import type { Paginated, PaymentIntent, PaymentIntentStatus, PaymentProtocol } from '../types.js';
2
+ import type { Paginated, PaymentIntent, PaymentIntentLedger, PaymentIntentStatus, PaymentProtocol } from '../types.js';
3
3
  export type CreatePaymentIntentInput = {
4
4
  organizationId?: string;
5
5
  agentId?: string;
@@ -21,6 +21,11 @@ export declare class PaymentIntentsResource {
21
21
  create(input: CreatePaymentIntentInput): Promise<PaymentIntent>;
22
22
  get(id: string): Promise<PaymentIntent>;
23
23
  capture(id: string): Promise<PaymentIntent>;
24
+ refund(id: string, opts?: {
25
+ amount?: number;
26
+ reason?: string;
27
+ }): Promise<PaymentIntent>;
28
+ ledgerEntries(id: string): Promise<PaymentIntentLedger>;
24
29
  list(params?: {
25
30
  limit?: number;
26
31
  offset?: number;
@@ -1 +1 @@
1
- {"version":3,"file":"payment-intents.d.ts","sourceRoot":"","sources":["../../src/resources/payment-intents.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAElG,MAAM,MAAM,wBAAwB,GAAG;IAGrC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,eAAe,CAAC;IAC1B,KAAK,EAAE,KAAK,CAAC;QAAE,aAAa,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC7E,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAIF,qBAAa,sBAAsB;IACrB,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,iBAAiB;IAEtD,MAAM,CAAC,KAAK,EAAE,wBAAwB,GAAG,OAAO,CAAC,aAAa,CAAC;IAQ/D,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAOvC,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAO3C,IAAI,CACF,MAAM,GAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,mBAAmB,CAAA;KAAO,GAC7E,OAAO,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;CAKrC"}
1
+ {"version":3,"file":"payment-intents.d.ts","sourceRoot":"","sources":["../../src/resources/payment-intents.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,KAAK,EACV,SAAS,EACT,aAAa,EACb,mBAAmB,EACnB,mBAAmB,EACnB,eAAe,EAChB,MAAM,aAAa,CAAC;AAErB,MAAM,MAAM,wBAAwB,GAAG;IAGrC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,eAAe,CAAC;IAC1B,KAAK,EAAE,KAAK,CAAC;QAAE,aAAa,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC7E,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAIF,qBAAa,sBAAsB;IACrB,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,iBAAiB;IAEtD,MAAM,CAAC,KAAK,EAAE,wBAAwB,GAAG,OAAO,CAAC,aAAa,CAAC;IAQ/D,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAOvC,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAS3C,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,GAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAO,GAAG,OAAO,CAAC,aAAa,CAAC;IAU3F,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAOvD,IAAI,CACF,MAAM,GAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,mBAAmB,CAAA;KAAO,GAC7E,OAAO,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;CAKrC"}
@@ -18,6 +18,16 @@ export class PaymentIntentsResource {
18
18
  capture(id) {
19
19
  return this.client.request('POST', `/v1/payment-intents/${encodeURIComponent(id)}/capture`);
20
20
  }
21
+ // Refund a captured/settled PI — full (omit amount) or partial. Advances
22
+ // the PI to partially_refunded / refunded.
23
+ refund(id, opts = {}) {
24
+ return this.client.request('POST', `/v1/payment-intents/${encodeURIComponent(id)}/refund`, { body: opts });
25
+ }
26
+ // The double-entry ledger trail behind this PI (authorize → capture →
27
+ // settle → refund), oldest-first — "where did this money go".
28
+ ledgerEntries(id) {
29
+ return this.client.request('GET', `/v1/payment-intents/${encodeURIComponent(id)}/ledger-entries`);
30
+ }
21
31
  list(params = {}) {
22
32
  return this.client.request('GET', '/v1/payment-intents', {
23
33
  query: params,
@@ -1 +1 @@
1
- {"version":3,"file":"payment-intents.js","sourceRoot":"","sources":["../../src/resources/payment-intents.ts"],"names":[],"mappings":"AAiBA,wEAAwE;AACxE,uEAAuE;AACvE,MAAM,OAAO,sBAAsB;IACJ;IAA7B,YAA6B,MAAyB;QAAzB,WAAM,GAAN,MAAM,CAAmB;IAAG,CAAC;IAE1D,MAAM,CAAC,KAA+B;QACpC,MAAM,EAAE,cAAc,EAAE,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC;QAC1C,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAgB,MAAM,EAAE,qBAAqB,EAAE;YACvE,IAAI;YACJ,cAAc;SACf,CAAC,CAAC;IACL,CAAC;IAED,GAAG,CAAC,EAAU;QACZ,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CACxB,KAAK,EACL,uBAAuB,kBAAkB,CAAC,EAAE,CAAC,EAAE,CAChD,CAAC;IACJ,CAAC;IAED,OAAO,CAAC,EAAU;QAChB,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CACxB,MAAM,EACN,uBAAuB,kBAAkB,CAAC,EAAE,CAAC,UAAU,CACxD,CAAC;IACJ,CAAC;IAED,IAAI,CACF,SAA4E,EAAE;QAE9E,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAA2B,KAAK,EAAE,qBAAqB,EAAE;YACjF,KAAK,EAAE,MAAM;SACd,CAAC,CAAC;IACL,CAAC;CACF"}
1
+ {"version":3,"file":"payment-intents.js","sourceRoot":"","sources":["../../src/resources/payment-intents.ts"],"names":[],"mappings":"AAuBA,wEAAwE;AACxE,uEAAuE;AACvE,MAAM,OAAO,sBAAsB;IACJ;IAA7B,YAA6B,MAAyB;QAAzB,WAAM,GAAN,MAAM,CAAmB;IAAG,CAAC;IAE1D,MAAM,CAAC,KAA+B;QACpC,MAAM,EAAE,cAAc,EAAE,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC;QAC1C,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAgB,MAAM,EAAE,qBAAqB,EAAE;YACvE,IAAI;YACJ,cAAc;SACf,CAAC,CAAC;IACL,CAAC;IAED,GAAG,CAAC,EAAU;QACZ,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CACxB,KAAK,EACL,uBAAuB,kBAAkB,CAAC,EAAE,CAAC,EAAE,CAChD,CAAC;IACJ,CAAC;IAED,OAAO,CAAC,EAAU;QAChB,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CACxB,MAAM,EACN,uBAAuB,kBAAkB,CAAC,EAAE,CAAC,UAAU,CACxD,CAAC;IACJ,CAAC;IAED,yEAAyE;IACzE,2CAA2C;IAC3C,MAAM,CAAC,EAAU,EAAE,OAA6C,EAAE;QAChE,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CACxB,MAAM,EACN,uBAAuB,kBAAkB,CAAC,EAAE,CAAC,SAAS,EACtD,EAAE,IAAI,EAAE,IAAI,EAAE,CACf,CAAC;IACJ,CAAC;IAED,sEAAsE;IACtE,8DAA8D;IAC9D,aAAa,CAAC,EAAU;QACtB,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CACxB,KAAK,EACL,uBAAuB,kBAAkB,CAAC,EAAE,CAAC,iBAAiB,CAC/D,CAAC;IACJ,CAAC;IAED,IAAI,CACF,SAA4E,EAAE;QAE9E,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAA2B,KAAK,EAAE,qBAAqB,EAAE;YACjF,KAAK,EAAE,MAAM;SACd,CAAC,CAAC;IACL,CAAC;CACF"}
package/dist/types.d.ts CHANGED
@@ -1,42 +1,4 @@
1
- export type PaymentIntentStatus = 'initiated' | 'authorized' | 'authorizing' | 'captured' | 'settled' | 'reconciled' | 'failed' | 'refunded' | 'disputed';
2
- export type PaymentProtocol = 'a2a' | 'acp' | 'ap2' | 'ucp' | 'mcp' | 'x402' | 'tap' | 'mc' | 'direct';
3
- export type PaymentIntent = {
4
- id: string;
5
- organizationId: string | null;
6
- agentId?: string | null;
7
- curlessMerchantId: string;
8
- protocol: PaymentProtocol;
9
- rail?: string | null;
10
- status: PaymentIntentStatus;
11
- amount: number;
12
- currency: string;
13
- railReference?: string | null;
14
- idempotencyKey?: string | null;
15
- createdAt: string;
16
- updatedAt: string;
17
- settledAt?: string | null;
18
- };
19
- export type PaymentLinkStatus = 'active' | 'inactive' | 'expired';
20
- export type PaymentLinkItem = {
21
- catalogItemId: string;
22
- quantity: number;
23
- unitPrice: number;
24
- };
25
- export type PaymentLink = {
26
- id: string;
27
- url: string;
28
- mode: 'test' | 'live';
29
- curlessMerchantId: string;
30
- amount: number;
31
- currency: string;
32
- description?: string | null;
33
- items: PaymentLinkItem[];
34
- status: PaymentLinkStatus;
35
- maxUses?: number | null;
36
- useCount: number;
37
- expiresAt?: string | null;
38
- createdAt: string;
39
- };
1
+ export type { BalanceTransaction, Customer, CustomerStatus, LedgerEntryView, Paginated, PaymentIntent, PaymentIntentLedger, PaymentIntentStatus, PaymentLink, PaymentLinkItem, PaymentLinkStatus, PaymentProtocol, } from '@curless/agentbank-core';
40
2
  export type WebhookEndpoint = {
41
3
  id: string;
42
4
  url: string;
@@ -48,27 +10,6 @@ export type WebhookEndpoint = {
48
10
  export type WebhookEndpointWithSecret = WebhookEndpoint & {
49
11
  secret: string;
50
12
  };
51
- export type CustomerStatus = 'active' | 'disabled';
52
- export type Customer = {
53
- id: string;
54
- organizationId: string;
55
- externalId?: string | null;
56
- email?: string | null;
57
- name?: string | null;
58
- status: CustomerStatus;
59
- curlessWalletId?: string | null;
60
- metadata: Record<string, unknown>;
61
- createdAt: string;
62
- updatedAt: string;
63
- };
64
- export type Paginated<T> = {
65
- data: T[];
66
- pagination: {
67
- limit: number;
68
- offset: number;
69
- count: number;
70
- };
71
- };
72
13
  export type X402PaymentRequirements = {
73
14
  scheme: 'exact';
74
15
  network: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAIA,YAAY,EACV,kBAAkB,EAClB,QAAQ,EACR,cAAc,EACd,eAAe,EACf,SAAS,EACT,aAAa,EACb,mBAAmB,EACnB,mBAAmB,EACnB,WAAW,EACX,eAAe,EACf,iBAAiB,EACjB,eAAe,GAChB,MAAM,yBAAyB,CAAC;AAEjC,MAAM,MAAM,eAAe,GAAG;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAGF,MAAM,MAAM,yBAAyB,GAAG,eAAe,GAAG;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAI7E,MAAM,MAAM,uBAAuB,GAAG;IACpC,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,iBAAiB,EAAE,MAAM,CAAC;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAC7C,CAAC"}
package/dist/types.js CHANGED
@@ -1,4 +1,5 @@
1
- // Resource types mirror the agentbank API. Kept loose (some fields
2
- // optional) so a minor server-side addition doesn't break consumers.
1
+ // Resource types mirror the agentbank API. The shapes shared with the buyer
2
+ // SDK come from @curless/agentbank-core (one definition); merchant-specific
3
+ // types (webhook endpoints, x402 requirements) are defined here.
3
4
  export {};
4
5
  //# sourceMappingURL=types.js.map
package/dist/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,mEAAmE;AACnE,qEAAqE"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,4EAA4E;AAC5E,iEAAiE"}
@@ -3,12 +3,12 @@ export type VerifyWebhookOptions = {
3
3
  toleranceSec?: number;
4
4
  nowSec?: number;
5
5
  };
6
- export declare const verifyWebhook: (secret: string, rawBody: string, signatureHeader: string | undefined | null, opts?: VerifyWebhookOptions) => boolean;
6
+ export declare const verifyWebhook: (secret: string, rawBody: string, signatureHeader: string | undefined | null, opts?: VerifyWebhookOptions) => Promise<boolean>;
7
7
  export type WebhookEvent = {
8
8
  id: string;
9
9
  type: string;
10
10
  data: Record<string, unknown>;
11
11
  createdAt?: string;
12
12
  };
13
- export declare const parseVerifiedWebhook: (secret: string, rawBody: string, signatureHeader: string | undefined | null, opts?: VerifyWebhookOptions) => WebhookEvent;
13
+ export declare const parseVerifiedWebhook: (secret: string, rawBody: string, signatureHeader: string | undefined | null, opts?: VerifyWebhookOptions) => Promise<WebhookEvent>;
14
14
  //# sourceMappingURL=webhooks.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"webhooks.d.ts","sourceRoot":"","sources":["../src/webhooks.ts"],"names":[],"mappings":"AASA,eAAO,MAAM,wBAAwB,0BAA0B,CAAC;AAEhE,MAAM,MAAM,oBAAoB,GAAG;IAEjC,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,eAAO,MAAM,aAAa,GACxB,QAAQ,MAAM,EACd,SAAS,MAAM,EACf,iBAAiB,MAAM,GAAG,SAAS,GAAG,IAAI,EAC1C,OAAM,oBAAyB,KAC9B,OAeF,CAAC;AAIF,MAAM,MAAM,YAAY,GAAG;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAC/B,QAAQ,MAAM,EACd,SAAS,MAAM,EACf,iBAAiB,MAAM,GAAG,SAAS,GAAG,IAAI,EAC1C,OAAM,oBAAyB,KAC9B,YAYF,CAAC"}
1
+ {"version":3,"file":"webhooks.d.ts","sourceRoot":"","sources":["../src/webhooks.ts"],"names":[],"mappings":"AAcA,eAAO,MAAM,wBAAwB,0BAA0B,CAAC;AAEhE,MAAM,MAAM,oBAAoB,GAAG;IAEjC,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,eAAO,MAAM,aAAa,GACxB,QAAQ,MAAM,EACd,SAAS,MAAM,EACf,iBAAiB,MAAM,GAAG,SAAS,GAAG,IAAI,EAC1C,OAAM,oBAAyB,KAC9B,OAAO,CAAC,OAAO,CAajB,CAAC;AAIF,MAAM,MAAM,YAAY,GAAG;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAC/B,QAAQ,MAAM,EACd,SAAS,MAAM,EACf,iBAAiB,MAAM,GAAG,SAAS,GAAG,IAAI,EAC1C,OAAM,oBAAyB,KAC9B,OAAO,CAAC,YAAY,CAYtB,CAAC"}
package/dist/webhooks.js CHANGED
@@ -1,12 +1,17 @@
1
- import { createHmac, timingSafeEqual } from 'node:crypto';
1
+ import { hmacSha256Hex, timingSafeEqualHex } from '@curless/agentbank-core';
2
2
  // HMAC-SHA256 webhook signature verification (Stripe-style). The signed
3
3
  // content is `${timestamp}.${rawBody}` and the header value is
4
4
  // `t=<unix seconds>,v1=<hex hmac>`. Header name: `x-agentbank-signature`.
5
5
  //
6
+ // Edge-safe: the HMAC runs on the Web Crypto API via @curless/agentbank-core
7
+ // (no node:crypto), so this verifies webhooks in Vercel Edge / Cloudflare
8
+ // Workers handlers as well as Node. Web Crypto's HMAC is async, so these
9
+ // functions return Promises.
10
+ //
6
11
  // Always verify against the RAW request body — DO NOT parse JSON first
7
12
  // or you'll re-serialize differently and the HMAC won't match.
8
13
  export const WEBHOOK_SIGNATURE_HEADER = 'x-agentbank-signature';
9
- export const verifyWebhook = (secret, rawBody, signatureHeader, opts = {}) => {
14
+ export const verifyWebhook = async (secret, rawBody, signatureHeader, opts = {}) => {
10
15
  if (!signatureHeader)
11
16
  return false;
12
17
  const toleranceSec = opts.toleranceSec ?? 300;
@@ -18,13 +23,11 @@ export const verifyWebhook = (secret, rawBody, signatureHeader, opts = {}) => {
18
23
  return false;
19
24
  if (Math.abs(nowSec - t) > toleranceSec)
20
25
  return false;
21
- const expected = createHmac('sha256', secret).update(`${t}.${rawBody}`).digest('hex');
22
- const got = Buffer.from(v1);
23
- const want = Buffer.from(expected);
24
- return got.length === want.length && timingSafeEqual(got, want);
26
+ const expected = await hmacSha256Hex(secret, `${t}.${rawBody}`);
27
+ return timingSafeEqualHex(v1, expected);
25
28
  };
26
- export const parseVerifiedWebhook = (secret, rawBody, signatureHeader, opts = {}) => {
27
- if (!verifyWebhook(secret, rawBody, signatureHeader, opts)) {
29
+ export const parseVerifiedWebhook = async (secret, rawBody, signatureHeader, opts = {}) => {
30
+ if (!(await verifyWebhook(secret, rawBody, signatureHeader, opts))) {
28
31
  throw new Error('invalid webhook signature');
29
32
  }
30
33
  let event;
@@ -1 +1 @@
1
- {"version":3,"file":"webhooks.js","sourceRoot":"","sources":["../src/webhooks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE1D,wEAAwE;AACxE,+DAA+D;AAC/D,0EAA0E;AAC1E,EAAE;AACF,uEAAuE;AACvE,+DAA+D;AAE/D,MAAM,CAAC,MAAM,wBAAwB,GAAG,uBAAuB,CAAC;AAShE,MAAM,CAAC,MAAM,aAAa,GAAG,CAC3B,MAAc,EACd,OAAe,EACf,eAA0C,EAC1C,OAA6B,EAAE,EACtB,EAAE;IACX,IAAI,CAAC,eAAe;QAAE,OAAO,KAAK,CAAC;IACnC,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,IAAI,GAAG,CAAC;IAC9C,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;IAE5D,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAqB,CAAC,CAAC,CAAC;IAChG,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IAClC,MAAM,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC5B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;QAAE,OAAO,KAAK,CAAC;IAC7C,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,YAAY;QAAE,OAAO,KAAK,CAAC;IAEtD,MAAM,QAAQ,GAAG,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACtF,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC5B,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACnC,OAAO,GAAG,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,IAAI,eAAe,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AAClE,CAAC,CAAC;AAWF,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAClC,MAAc,EACd,OAAe,EACf,eAA0C,EAC1C,OAA6B,EAAE,EACjB,EAAE;IAChB,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,OAAO,EAAE,eAAe,EAAE,IAAI,CAAC,EAAE,CAAC;QAC3D,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;IAC/C,CAAC;IACD,IAAI,KAAmB,CAAC;IACxB,IAAI,CAAC;QACH,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAiB,CAAC;IAC9C,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAC5C,CAAC;IACD,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IACzE,OAAO,KAAK,CAAC;AACf,CAAC,CAAC"}
1
+ {"version":3,"file":"webhooks.js","sourceRoot":"","sources":["../src/webhooks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAE5E,wEAAwE;AACxE,+DAA+D;AAC/D,0EAA0E;AAC1E,EAAE;AACF,6EAA6E;AAC7E,0EAA0E;AAC1E,yEAAyE;AACzE,6BAA6B;AAC7B,EAAE;AACF,uEAAuE;AACvE,+DAA+D;AAE/D,MAAM,CAAC,MAAM,wBAAwB,GAAG,uBAAuB,CAAC;AAShE,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,EAChC,MAAc,EACd,OAAe,EACf,eAA0C,EAC1C,OAA6B,EAAE,EACb,EAAE;IACpB,IAAI,CAAC,eAAe;QAAE,OAAO,KAAK,CAAC;IACnC,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,IAAI,GAAG,CAAC;IAC9C,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;IAE5D,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAqB,CAAC,CAAC,CAAC;IAChG,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IAClC,MAAM,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC5B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;QAAE,OAAO,KAAK,CAAC;IAC7C,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,YAAY;QAAE,OAAO,KAAK,CAAC;IAEtD,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,OAAO,EAAE,CAAC,CAAC;IAChE,OAAO,kBAAkB,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;AAC1C,CAAC,CAAC;AAWF,MAAM,CAAC,MAAM,oBAAoB,GAAG,KAAK,EACvC,MAAc,EACd,OAAe,EACf,eAA0C,EAC1C,OAA6B,EAAE,EACR,EAAE;IACzB,IAAI,CAAC,CAAC,MAAM,aAAa,CAAC,MAAM,EAAE,OAAO,EAAE,eAAe,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC;QACnE,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;IAC/C,CAAC;IACD,IAAI,KAAmB,CAAC;IACxB,IAAI,CAAC;QACH,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAiB,CAAC;IAC9C,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAC5C,CAAC;IACD,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IACzE,OAAO,KAAK,CAAC;AACf,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@curless/agentbank-merchant-sdk",
3
- "version": "0.0.4",
4
- "description": "Merchant-side SDK for agentbank — accept agent payments: PaymentIntents, webhook verification, x402 challenge helpers.",
3
+ "version": "0.1.0",
4
+ "description": "Merchant-side SDK for agentbank — accept agent payments: PaymentIntents, edge-safe webhook verification, x402 challenge helpers.",
5
5
  "license": "MIT",
6
6
  "type": "module",
7
7
  "main": "dist/index.js",
@@ -16,12 +16,8 @@
16
16
  "dist",
17
17
  "README.md"
18
18
  ],
19
- "scripts": {
20
- "build": "tsc",
21
- "typecheck": "tsc --noEmit",
22
- "test": "vitest run",
23
- "clean": "rm -rf dist",
24
- "prepublishOnly": "npm run build"
19
+ "dependencies": {
20
+ "@curless/agentbank-core": "0.0.1"
25
21
  },
26
22
  "devDependencies": {
27
23
  "@types/node": "^22.10.1",
@@ -39,5 +35,11 @@
39
35
  "merchant",
40
36
  "x402",
41
37
  "webhook"
42
- ]
43
- }
38
+ ],
39
+ "scripts": {
40
+ "build": "tsc",
41
+ "typecheck": "tsc --noEmit",
42
+ "test": "vitest run",
43
+ "clean": "rm -rf dist"
44
+ }
45
+ }