@aifinpay/agent 1.8.4 → 2.0.0-rc.13

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.
Files changed (93) hide show
  1. package/PAYMENT_RECEIPTS.md +110 -0
  2. package/README.md +93 -35
  3. package/dist/agent.d.ts +6 -1
  4. package/dist/agent.d.ts.map +1 -1
  5. package/dist/agent.js +50 -12
  6. package/dist/agent.js.map +1 -1
  7. package/dist/agentHistory.d.ts +15 -0
  8. package/dist/agentHistory.d.ts.map +1 -0
  9. package/dist/agentHistory.js +47 -0
  10. package/dist/agentHistory.js.map +1 -0
  11. package/dist/agentPassport.d.ts +95 -0
  12. package/dist/agentPassport.d.ts.map +1 -0
  13. package/dist/agentPassport.js +177 -0
  14. package/dist/agentPassport.js.map +1 -0
  15. package/dist/aifp1.d.ts +135 -8
  16. package/dist/aifp1.d.ts.map +1 -1
  17. package/dist/aifp1.js +317 -50
  18. package/dist/aifp1.js.map +1 -1
  19. package/dist/apiUrl.d.ts +3 -0
  20. package/dist/apiUrl.d.ts.map +1 -0
  21. package/dist/apiUrl.js +8 -0
  22. package/dist/apiUrl.js.map +1 -0
  23. package/dist/chains.d.ts +4 -0
  24. package/dist/chains.d.ts.map +1 -0
  25. package/dist/chains.js +24 -0
  26. package/dist/chains.js.map +1 -0
  27. package/dist/deploymentResolver.d.ts +87 -0
  28. package/dist/deploymentResolver.d.ts.map +1 -0
  29. package/dist/deploymentResolver.js +145 -0
  30. package/dist/deploymentResolver.js.map +1 -0
  31. package/dist/facilitators/aifinpay.d.ts +4 -5
  32. package/dist/facilitators/aifinpay.d.ts.map +1 -1
  33. package/dist/facilitators/aifinpay.js +49 -19
  34. package/dist/facilitators/aifinpay.js.map +1 -1
  35. package/dist/facilitators/base.d.ts +12 -1
  36. package/dist/facilitators/base.d.ts.map +1 -1
  37. package/dist/facilitators/detect.d.ts +3 -3
  38. package/dist/facilitators/detect.d.ts.map +1 -1
  39. package/dist/facilitators/detect.js +3 -22
  40. package/dist/facilitators/detect.js.map +1 -1
  41. package/dist/facilitators/standard-x402.d.ts +4 -8
  42. package/dist/facilitators/standard-x402.d.ts.map +1 -1
  43. package/dist/facilitators/standard-x402.js +218 -92
  44. package/dist/facilitators/standard-x402.js.map +1 -1
  45. package/dist/index.d.ts +24 -18
  46. package/dist/index.d.ts.map +1 -1
  47. package/dist/index.js +22 -34
  48. package/dist/index.js.map +1 -1
  49. package/dist/localIdentity.d.ts +17 -0
  50. package/dist/localIdentity.d.ts.map +1 -0
  51. package/dist/localIdentity.js +81 -0
  52. package/dist/localIdentity.js.map +1 -0
  53. package/dist/settlement.d.ts +198 -0
  54. package/dist/settlement.d.ts.map +1 -0
  55. package/dist/settlement.js +429 -0
  56. package/dist/settlement.js.map +1 -0
  57. package/dist/settlementHttp.d.ts +10 -0
  58. package/dist/settlementHttp.d.ts.map +1 -0
  59. package/dist/settlementHttp.js +70 -0
  60. package/dist/settlementHttp.js.map +1 -0
  61. package/dist/settlementV14.d.ts +136 -0
  62. package/dist/settlementV14.d.ts.map +1 -0
  63. package/dist/settlementV14.js +170 -0
  64. package/dist/settlementV14.js.map +1 -0
  65. package/dist/solanaDeploymentResolver.d.ts +90 -0
  66. package/dist/solanaDeploymentResolver.d.ts.map +1 -0
  67. package/dist/solanaDeploymentResolver.js +143 -0
  68. package/dist/solanaDeploymentResolver.js.map +1 -0
  69. package/dist/solanaV14Deployments.generated.d.ts +35 -0
  70. package/dist/solanaV14Deployments.generated.d.ts.map +1 -0
  71. package/dist/solanaV14Deployments.generated.js +61 -0
  72. package/dist/solanaV14Deployments.generated.js.map +1 -0
  73. package/dist/splitterRoutes.d.ts +120 -0
  74. package/dist/splitterRoutes.d.ts.map +1 -0
  75. package/dist/splitterRoutes.generated.d.ts +22 -0
  76. package/dist/splitterRoutes.generated.d.ts.map +1 -0
  77. package/dist/splitterRoutes.generated.js +459 -0
  78. package/dist/splitterRoutes.generated.js.map +1 -0
  79. package/dist/splitterRoutes.js +73 -0
  80. package/dist/splitterRoutes.js.map +1 -0
  81. package/dist/unifiedAgent.d.ts +28 -18
  82. package/dist/unifiedAgent.d.ts.map +1 -1
  83. package/dist/unifiedAgent.js +85 -325
  84. package/dist/unifiedAgent.js.map +1 -1
  85. package/dist/v14Deployments.generated.d.ts +53 -0
  86. package/dist/v14Deployments.generated.d.ts.map +1 -0
  87. package/dist/v14Deployments.generated.js +89 -0
  88. package/dist/v14Deployments.generated.js.map +1 -0
  89. package/dist/wallet.d.ts +11 -52
  90. package/dist/wallet.d.ts.map +1 -1
  91. package/dist/wallet.js +27 -51
  92. package/dist/wallet.js.map +1 -1
  93. package/package.json +7 -4
@@ -0,0 +1,110 @@
1
+ # Authorize and recover payment receipts
2
+
3
+ AIFP-1 receipt issuance uses a signature from the wallet that sent the payment.
4
+ The SDK signs a fixed, domain-separated receipt authorization automatically.
5
+ A custom `agentId` is a display identifier; it does not replace the paying
6
+ wallet. Keep the complete quote and transaction reference until you receive
7
+ the receipt.
8
+
9
+ New payments require an independently reviewed `settlementPin` for Polygon
10
+ AIFP-1 v1.3 and a `nativeUsdPrice` observation from a trusted source, at most
11
+ 60 seconds old. Do not construct either from the payment server's response.
12
+ The SDK checks the quote's target/version/calldata, invoice, RPC and wallet
13
+ chain, deployed bytecode and fee profile before signing. It waits for a
14
+ successful mined receipt before requesting access.
15
+
16
+ `maxAmountUsd` caps the next batch using the greater of quoted USD and native
17
+ debit converted at that independent price. It must be positive and finite,
18
+ and can only tighten the agent's limits. Gas is additional. A cached receipt
19
+ does not buy another batch. Mainnet activation flags have not been enabled
20
+ by this SDK update; unavailable or legacy quotes are refused before payment.
21
+
22
+ For a direct merchant endpoint such as `/api/agent/genres`, explicitly select
23
+ the full-path format as well as the trusted origin:
24
+
25
+ ```ts
26
+ await agent.fetchPaid('https://merchant.example/api/agent/genres', {}, {
27
+ settlementPin: reviewedDeploymentPin,
28
+ nativeUsdPrice: { usd: trustedPolUsd, observedAtMs: priceObservedAtMs },
29
+ gatewayOrigins: ['https://merchant.example'],
30
+ resourcePathMode: 'direct',
31
+ maxAmountUsd: 0.10,
32
+ });
33
+ ```
34
+
35
+ The pin and price variables above come from your independently reviewed
36
+ configuration and price source. This is a configuration example, not an
37
+ instruction to substitute addresses or rates from an HTTP 402 response.
38
+ `apiTimeoutMs` bounds each API request, including reading its body; default
39
+ 15 seconds. Redirects are refused. For a backend with a different configured
40
+ receipt issuer, set `paymentIssuer` independently to its `AIFP_ISSUER_URL`;
41
+ changing only `apiBaseUrl` does not change the trusted issuer.
42
+
43
+ Direct mode probes the resource without a receipt before each call, then
44
+ reuses only a receipt for the same origin, merchant and covered full path.
45
+ The challenge's resource must equal the URL pathname. This extra unpaid
46
+ probe prevents a merchant-wide receipt from being sent to another merchant
47
+ on the same host. The default `gateway` mode keeps hosted URLs in the
48
+ `/{merchant-slug}/{resource}` format. An origin is never trusted merely
49
+ because it returns an AIFP-1 challenge. Direct probes return redirects to the
50
+ caller without following them, so another origin cannot supply the payment
51
+ challenge through a redirect. This path-mapping option does not enable a
52
+ disabled settlement route or change its deployment verification requirements.
53
+
54
+ After settlement, the SDK retries HTTP 425, HTTP 503 and connection failures
55
+ within `settlementConfirmMs`. These retries request the receipt; they never
56
+ send another on-chain transaction. If retries are exhausted,
57
+ `Aifp1PayError.recovery` contains serializable quote and payment context, with
58
+ no private key or authorization signature. Save it for a later retry.
59
+ Concurrent callers waiting for that batch receive the same failure and
60
+ recovery context. After this error, retry `recoverAifp1Payment` with that
61
+ context instead of calling `fetchPaid` again: a new `fetchPaid` request can
62
+ buy another batch when no receipt has been cached.
63
+
64
+ ```ts
65
+ import { recoverAifp1Payment } from '@aifinpay/agent';
66
+
67
+ // savedRecovery is Aifp1PayError.recovery from the earlier payment.
68
+ // account is the same local viem account that sent that payment.
69
+ const paid = await recoverAifp1Payment(savedRecovery, {
70
+ payerAddress: account.address,
71
+ signPaymentAuthorization: message => account.signMessage({ message }),
72
+ });
73
+
74
+ // Reuse this receipt for the resource/scope it covers.
75
+ const response = await fetch(resourceUrl, {
76
+ headers: { 'AIFP-Receipt': paid.receipt },
77
+ });
78
+ ```
79
+
80
+ This helper recovers Polygon AIFP-1 receipts and has no settlement callback.
81
+ It cannot send funds. Keep the returned receipt in your application's receipt
82
+ store; recovery itself does not populate a separate AiFinPayAgent instance's
83
+ cache. Recover within the quote's advertised recovery window. An expired price
84
+ cannot be used for a new payment.
85
+
86
+ For manual integrations, `paymentAuthorizationMessage` constructs the exact
87
+ message from the saved quote, chain, transaction reference, asset, idempotency
88
+ key, payer and expiration. Sign its result with the paying EVM account and
89
+ send `payment_authorization: { payer, expires_at, signature }` in `/v1/pay`.
90
+ Use a lowercase EVM address and an expiry about 240 seconds in the future.
91
+ The backend accepts `wallet-signature-v1` as announced in the quote. It derives
92
+ the receipt subject from the proven payer. Re-sign a retry when the signature
93
+ expires and keep the same transaction reference; paying again is unnecessary.
94
+
95
+ If confirmation is unavailable after broadcast, recovery keeps the transaction
96
+ hash and quote. A mined payment followed by a ledger error also retains that
97
+ context; reconcile the budget before another purchase. Once `/v1/pay` returns
98
+ a receipt, it is cached before fetching content, so a dropped content request
99
+ does not discard paid access. The cache is local to this agent instance;
100
+ applications must persist recovery/receipts for restart recovery.
101
+
102
+ The API retains its legacy `settlement.fee_on_top` object during client upgrades.
103
+ The RC client accepts that object only alongside explicit `gross-inclusive`
104
+ metadata, with provider, treasury and creator amounts matching the canonical
105
+ payer/recipient amounts. An inconsistent quote is rejected before settlement.
106
+ Native `valid_until` may be a JSON integer or an integer string. These wire
107
+ compatibility changes do not activate a disabled deployment. v1.4 execution
108
+ and legacy `call()` payment submission remain disabled in this RC. Current
109
+ v1.4 quotes omit mutable fees/treasury from the signed commitment; a new
110
+ contract/SDK release is required. There is no automatic version fallback.
package/README.md CHANGED
@@ -1,14 +1,22 @@
1
1
  # @aifinpay/agent (Node / TypeScript)
2
2
 
3
- Non-custodial x402 payment client for autonomous AI agents on
4
- [AiFinPay](https://aifinpay.io) — canonical domain **aifinpay.io** (the
5
- legacy `aifinpay.company` host is retired). SDK settlement: since 1.3.0,
6
- direct fee-on-top splitter settlement (`AiFinPayAgent.call()`) works on
7
- Polygon (default), Base, Optimism, Unichain, BOT Chain and XRPL EVM
8
- (native-token path only — no ERC-20/USDC settlement yet), plus Solana;
9
- the backend-quoted invoice flow (`/api/b2b/pay-with-split`) remains
10
- Polygon + Solana. The protocol is live across 13 networks — see
11
- [aifinpay.io/llms.txt](https://aifinpay.io/llms.txt).
3
+ This source is the unpublished `2.0.0-rc.12` security candidate. New AIFP-1
4
+ payments require a reviewed Polygon v1.3 deployment pin and fresh independent
5
+ native/USD price; see [receipt configuration and recovery](./PAYMENT_RECEIPTS.md).
6
+ Legacy `call()` payments and v1.4 submission are disabled. Native authentication
7
+ requires a request-bound v2 challenge from the coordinated backend release;
8
+ `authHeaders()` cannot issue the retired unbound proof. No automatic fallback
9
+ or deployment activation is performed.
10
+
11
+ Non-custodial payment client for autonomous AI agents on
12
+ [AiFinPay](https://aifinpay.io). AIFP-1 is gross-inclusive: payer total equals
13
+ the quote, merchant receives 99%, AiFinPay receives 1%, creator/referral
14
+ receives 0%. AIFP-2/x402 currently charges 0% at the protocol layer. Legacy
15
+ `/api/b2b` split-invoice methods are retired. The v1.3 executor checks the
16
+ independently supplied deployment/runtime pin, chain, fee profile, merchant
17
+ target and asset. Deployment activation and funded E2E approval remain
18
+ separate operator responsibilities; a matching runtime hash alone is not
19
+ production-readiness evidence.
12
20
 
13
21
  The Ed25519 keypair is generated locally with `tweetnacl` and never leaves
14
22
  your process. The SDK only sends a one-time SHA-256 + Ed25519 signature in
@@ -16,45 +24,75 @@ the `x-signature` header to authenticate against AiFinPay-protected endpoints.
16
24
 
17
25
  ## Install
18
26
 
27
+ This quickstart requires `2.0.0-rc.12`, which includes `fromEnvironment()`.
28
+ That release is not published yet; the published `latest` version `1.8.4`
29
+ does not provide this method. Until publication, build this source checkout:
30
+
19
31
  ```bash
20
- # install (latest)
21
- npm install @aifinpay/agent
22
- # or pnpm add @aifinpay/agent
23
- # or yarn add @aifinpay/agent
32
+ # From the SDK repository root
33
+ cd node
34
+ npm ci
35
+ npm run build
36
+ npm pack
37
+ ```
38
+
39
+ Install the resulting tarball in your application:
24
40
 
25
- # stable (when 1.0 ships)
26
- npm install @aifinpay/agent
41
+ ```bash
42
+ npm install /absolute/path/to/sdk/node/aifinpay-agent-2.0.0-rc.12.tgz
43
+ ```
44
+
45
+ After this exact version has been published, install it directly:
46
+
47
+ ```bash
48
+ npm install @aifinpay/agent@2.0.0-rc.12
27
49
  ```
28
50
 
29
51
  ## Quick start
30
52
 
53
+ Load the wallet you already configured before sharing a deposit address:
54
+
31
55
  ```ts
32
- import { Agent } from "@aifinpay/agent";
56
+ import { AiFinPayAgent } from "@aifinpay/agent";
33
57
 
34
- // Generate a fresh keypair locally — never transmitted
35
- const agent = Agent.new();
36
- console.log("Fund this address:", agent.address);
37
- console.log("Save this secret:", agent.secretB58); // store securely!
38
-
39
- // Wait until the wallet has at least $0.01 worth on-chain
40
- await agent.waitForFunding({ minUsdCents: 1 });
41
-
42
- // Request an invoice for a Seat (USDC on Solana)
43
- const invoice = await agent.reserveSeatInvoice({
44
- amountUsd: 1.0,
45
- asset: "USDC",
46
- });
47
- // Build + sign + submit the on-chain tx with @solana/web3.js or viem.
48
- // `invoice.raw` has program_id, treasury_vault, mints, nonce, etc.
49
-
50
- // Once the Seat is on-chain, gated endpoints just work:
51
- const res = await agent.get("https://aifinpay.io/api/stats");
52
- console.log(await res.json());
58
+ const agent = await AiFinPayAgent.fromEnvironment();
59
+ console.log({ evm: agent.evmAddress, solana: agent.solanaAddress });
53
60
  ```
54
61
 
62
+ `fromEnvironment()` is a **load-only** Node API. It selects one identity in
63
+ this order, matching MCP:
64
+
65
+ 1. `SEED_HASH`: a 32-byte seed encoded as 64 hex characters, optionally `0x` prefixed.
66
+ 2. `./aifinpay/agents.json` relative to the process working directory. Set
67
+ `AIFINPAY_AGENTS_FILE` for another path and `AIFINPAY_AGENT_ID` when selecting
68
+ from multiple records (`{"agents":[{"id":"crawler","seed_hash":"…"}]}`).
69
+ 3. `AIFINPAY_AGENT_SECRET`: an existing base58 Solana secret.
70
+ 4. `~/.aifinpay/agent.json`, or `AIFINPAY_HOME/agent.json`: the existing MCP
71
+ keystore. Encrypted keystores require `AIFINPAY_WALLET_PASSPHRASE`.
72
+
73
+ The loader never creates or overwrites a wallet, prints its keys, or calls the
74
+ network. Missing configuration, an invalid seed, an ambiguous project file or
75
+ a decryption failure throws instead of selecting a new wallet. Load any `.env`
76
+ through your runtime before calling it; this API reads `process.env` and does
77
+ not read `.env` files. `SEED_HEX` is not an alias for `SEED_HASH`. Keep private
78
+ inputs and wallet files out of chats, logs and version control.
79
+
80
+ The same configured inputs restore the same addresses after a process restart.
81
+ An explicit `evmPrivateKey` option overrides the derived EVM identity; retain
82
+ that separate key as well to recover the imported wallet. Loading a wallet
83
+ does not enable the RC's gated settlement routes.
84
+
85
+ `AiFinPayAgent.new()` and `Agent.new()` intentionally create a fresh ephemeral
86
+ wallet each time. They do not load existing environment variables or keystores
87
+ and do not persist their generated keys. Use them only when you deliberately
88
+ need a new identity and will store its recovery material privately before
89
+ funding it. Never rerun `new()` to recover an existing funded address.
90
+
55
91
  ## Loading an existing keypair
56
92
 
57
93
  ```ts
94
+ import { Agent } from "@aifinpay/agent";
95
+
58
96
  // from solana-keygen JSON file (Node only)
59
97
  const agent = await Agent.fromKeypairFile("./agent-wallet.json");
60
98
 
@@ -86,3 +124,23 @@ on-chain, and serves the resource.
86
124
  ## License
87
125
 
88
126
  MIT.
127
+
128
+
129
+ ### Payment receipt authorization
130
+
131
+ AIFP-1 receipts use the paying wallet signature. See [authorize and recover payment receipts](PAYMENT_RECEIPTS.md) for retries and recovery without a second transfer.
132
+
133
+ ### Payment history
134
+
135
+ ```ts
136
+ import { getAgentHistory } from '@aifinpay/agent';
137
+ const history = await getAgentHistory({ address: '0x…', source: 'transactions' });
138
+ // Or { passport: 'AIFP-000000042', network: 'polygon', source: 'receipts' }
139
+ ```
140
+
141
+ `transactions` covers indexed AiFinPay Polygon settlements, not arbitrary
142
+ wallet transfers. `receipts` covers retained prepaid batches, including test
143
+ payments. Follow `next_offset` with `limit`/`offset`. A passport requires a
144
+ backend with the verified-wallet resolver deployed; passing both address and
145
+ passport checks their match. Never pass a holder private key or API secret as
146
+ an identifier. Public history does not return bearer receipt tokens.
package/dist/agent.d.ts CHANGED
@@ -11,6 +11,9 @@ export interface AgentOptions {
11
11
  baseUrl?: string;
12
12
  timeoutMs?: number;
13
13
  fetchImpl?: typeof fetch;
14
+ /** Import an existing EVM wallet for standard x402; keep this key alongside
15
+ * the Solana secret when backing up an agent with an override. */
16
+ evmPrivateKey?: `0x${string}`;
14
17
  }
15
18
  export interface PayInit extends Omit<RequestInit, "method"> {
16
19
  method?: string;
@@ -39,7 +42,9 @@ export declare class Agent {
39
42
  * The agent's EVM account (viem), derived from the same 32-byte seed as the
40
43
  * Solana key via domain-separated SHA-256 ("aifinpay:evm:v1\0" || seed) —
41
44
  * byte-for-byte identical to AiFinPayAgent's EVM address. Used by the
42
- * standard x402 (EIP-3009) facilitator. Node-only (sync SHA-256).
45
+ * standard x402 (EIP-3009) facilitator. An explicitly imported EVM key is
46
+ * cached during construction and takes priority over derivation.
47
+ * Default derivation is Node-only (sync SHA-256).
43
48
  */
44
49
  evmAccount(): Promise<PrivateKeyAccount>;
45
50
  /** The agent's EVM (Polygon / Base / …) address. */
@@ -1 +1 @@
1
- {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"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"}
package/dist/agent.js CHANGED
@@ -19,6 +19,9 @@ export class Agent {
19
19
  constructor(secretKey, publicKey, opts = {}) {
20
20
  this.secretKey = secretKey;
21
21
  this.publicKey = publicKey;
22
+ if (opts.evmPrivateKey !== undefined) {
23
+ this._evm = privateKeyToAccount(opts.evmPrivateKey);
24
+ }
22
25
  this.baseUrl = (opts.baseUrl || DEFAULT_BASE_URL).replace(/\/$/, "");
23
26
  this.timeoutMs = opts.timeoutMs ?? DEFAULT_TIMEOUT_MS;
24
27
  this.fetchImpl = opts.fetchImpl ?? globalThis.fetch;
@@ -72,7 +75,9 @@ export class Agent {
72
75
  * The agent's EVM account (viem), derived from the same 32-byte seed as the
73
76
  * Solana key via domain-separated SHA-256 ("aifinpay:evm:v1\0" || seed) —
74
77
  * byte-for-byte identical to AiFinPayAgent's EVM address. Used by the
75
- * standard x402 (EIP-3009) facilitator. Node-only (sync SHA-256).
78
+ * standard x402 (EIP-3009) facilitator. An explicitly imported EVM key is
79
+ * cached during construction and takes priority over derivation.
80
+ * Default derivation is Node-only (sync SHA-256).
76
81
  */
77
82
  async evmAccount() {
78
83
  if (this._evm)
@@ -101,15 +106,7 @@ export class Agent {
101
106
  }
102
107
  /** Build a fresh AiFinPay-native x402 header set. */
103
108
  async authHeaders() {
104
- const { nonce } = await this.fetchNonce();
105
- const msg = new TextEncoder().encode(`AiFinPay-x402:${nonce}:${this.address}`);
106
- const digest = await sha256(msg);
107
- const sig = nacl.sign.detached(digest, this.secretKey);
108
- return {
109
- "x-agent-pubkey": this.address,
110
- "x-nonce": nonce,
111
- "x-signature": bs58.encode(sig),
112
- };
109
+ throw new AiFinPayError("authHeaders() cannot safely sign the retired unbound native auth format. Use Agent.pay(url), which retries only a request-bound v2 challenge.");
113
110
  }
114
111
  // ── Seat / funding ────────────────────────────────────────────────────
115
112
  async hasSeat() {
@@ -246,19 +243,38 @@ export class Agent {
246
243
  */
247
244
  async pay(url, init = {}) {
248
245
  const { method = "GET", maxRetries = 1, options = {}, ...rest } = init;
246
+ let requestUrl;
247
+ let trustedOrigin;
248
+ try {
249
+ requestUrl = new URL(url);
250
+ trustedOrigin = new URL(this.baseUrl).origin;
251
+ }
252
+ catch {
253
+ throw new AiFinPayError("pay() requires an absolute URL and a valid Agent baseUrl");
254
+ }
249
255
  const baseHeaders = mergeHeaders(rest.headers, options.extraHeaders);
250
- const send = (m, headers, body) => this.fetchImpl(url, {
256
+ const send = (m, headers, body) => this.fetchImpl(requestUrl.toString(), {
251
257
  ...rest,
252
258
  method: m,
253
259
  headers,
254
260
  body: body ?? rest.body,
261
+ // Never let an authenticated retry carry credentials through a redirect.
262
+ redirect: "error",
255
263
  });
256
264
  let resp = await send(method, { ...baseHeaders, "user-agent": SDK_UA });
257
265
  let attempt = 0;
258
266
  while (resp.status === 402 && attempt < maxRetries) {
259
267
  attempt += 1;
260
268
  const facilitator = await detectFacilitator(resp, options.facilitator ?? "auto");
261
- const auth = await facilitator.buildAuth(resp, this, options);
269
+ const bodyDigest = facilitator.name === "aifinpay"
270
+ ? await nativeBodyDigest(rest.body)
271
+ : "";
272
+ const auth = await facilitator.buildAuth(resp, this, options, {
273
+ url: requestUrl,
274
+ method,
275
+ trustedOrigin,
276
+ bodyDigest,
277
+ });
262
278
  const merged = mergeHeaders(baseHeaders, auth.headers);
263
279
  merged["user-agent"] = SDK_UA;
264
280
  resp = await send(auth.method ?? method, merged, auth.body);
@@ -333,4 +349,26 @@ function mergeHeaders(...sources) {
333
349
  }
334
350
  return out;
335
351
  }
352
+ async function nativeBodyDigest(body) {
353
+ let bytes;
354
+ if (body === undefined || body === null) {
355
+ bytes = new Uint8Array();
356
+ }
357
+ else if (typeof body === "string" || body instanceof URLSearchParams) {
358
+ bytes = new TextEncoder().encode(body.toString());
359
+ }
360
+ else if (body instanceof ArrayBuffer) {
361
+ bytes = new Uint8Array(body);
362
+ }
363
+ else if (ArrayBuffer.isView(body)) {
364
+ bytes = new Uint8Array(body.buffer, body.byteOffset, body.byteLength);
365
+ }
366
+ else if (typeof Blob !== "undefined" && body instanceof Blob) {
367
+ bytes = new Uint8Array(await body.arrayBuffer());
368
+ }
369
+ else {
370
+ throw new AiFinPayError("AiFinPay native auth v2 cannot sign this streaming or multipart request body safely. Send string or byte body data.");
371
+ }
372
+ return Array.from(await sha256(bytes), (byte) => byte.toString(16).padStart(2, "0")).join("");
373
+ }
336
374
  //# sourceMappingURL=agent.js.map
package/dist/agent.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"agent.js","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent.js","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import { type AgentPassportNetwork } from "./agentPassport.js";
2
+ export interface AgentHistoryOptions {
3
+ address?: string;
4
+ /** Public @username, AIFP number or aifp_agent_* identifier; never a secret. */
5
+ passport?: string;
6
+ network?: AgentPassportNetwork;
7
+ source?: "transactions" | "receipts";
8
+ limit?: number;
9
+ offset?: number;
10
+ baseUrl?: string;
11
+ fetchImpl?: typeof fetch;
12
+ }
13
+ /** Read public payment metadata. A passport is resolved to a verified wallet first. */
14
+ export declare function getAgentHistory(options: AgentHistoryOptions): Promise<Record<string, unknown>>;
15
+ //# sourceMappingURL=agentHistory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agentHistory.d.ts","sourceRoot":"","sources":["../src/agentHistory.ts"],"names":[],"mappings":"AAAA,OAAO,EAA6C,KAAK,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAG1G,MAAM,WAAW,mBAAmB;IAClC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gFAAgF;IAChF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,oBAAoB,CAAC;IAC/B,MAAM,CAAC,EAAE,cAAc,GAAG,UAAU,CAAC;IACrC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;CAC1B;AAED,uFAAuF;AACvF,wBAAsB,eAAe,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAuCpG"}
@@ -0,0 +1,47 @@
1
+ import { resolveAgentPassport, agentPassportWallet } from "./agentPassport.js";
2
+ import { aifinpayApiUrl } from "./apiUrl.js";
3
+ /** Read public payment metadata. A passport is resolved to a verified wallet first. */
4
+ export async function getAgentHistory(options) {
5
+ const base = options.baseUrl || "https://aifinpay.io";
6
+ const fetchImpl = options.fetchImpl || fetch;
7
+ const network = options.network || "polygon";
8
+ const source = options.source || "transactions";
9
+ const limit = options.limit ?? 25, offset = options.offset ?? 0;
10
+ if (!Number.isSafeInteger(limit) || limit < 1 || limit > 100 || !Number.isSafeInteger(offset) || offset < 0 || offset > 100000) {
11
+ throw new Error("History limit must be 1..100 and offset 0..100000");
12
+ }
13
+ if (source !== "transactions" && source !== "receipts")
14
+ throw new Error("Unknown history source");
15
+ let address = options.address;
16
+ if (options.passport) {
17
+ const identity = await resolveAgentPassport(options.passport, base, fetchImpl);
18
+ identity.wallets = identity.wallets.filter(wallet => wallet.chain_family === "evm" && Number(wallet.verified_at) > 0);
19
+ const wallet = agentPassportWallet(identity, network);
20
+ if (address && address.toLowerCase() !== wallet.address.toLowerCase()) {
21
+ throw new Error("Address does not match this passport's verified wallet on the requested network");
22
+ }
23
+ address = wallet.address;
24
+ }
25
+ if (!address || !/^0x[0-9a-fA-F]{40}$/.test(address))
26
+ throw new Error("History requires an EVM address or a passport with an EVM wallet binding");
27
+ const query = new URLSearchParams({ limit: String(limit), offset: String(offset) });
28
+ if (source === "transactions")
29
+ query.set("chain", network);
30
+ const response = await fetchImpl(aifinpayApiUrl(base, `/v1/agents/${address.toLowerCase()}/${source}?${query}`), { headers: { accept: "application/json" } });
31
+ if (!response.ok)
32
+ throw new Error(`Payment history unavailable: HTTP ${response.status}; source=${source}. Use receipts for retained prepaid batches; indexed transactions currently cover Polygon only.`);
33
+ const body = await response.json();
34
+ if (!body || typeof body !== "object" || !Array.isArray(body[source]))
35
+ throw new Error("Invalid history response");
36
+ // Defense in depth: even a misconfigured/older backend must not send bearer
37
+ // tokens to a caller of this metadata-only API.
38
+ const fields = source === "receipts"
39
+ ? ["receipt_id", "merchant_id", "resource", "scope", "tier", "quota", "used", "remaining", "amount", "currency", "exp", "chain", "tx_ref", "payer", "network_mode", "settled_at", "expires_at", "unit_quota", "metering_version"]
40
+ : ["tx_hash", "log_index", "chain", "payment_id", "block_number", "block_ts", "agent_address", "merchant_address", "token_address", "total_amount", "merchant_amount", "treasury_fee", "ip_creator_fee"];
41
+ const items = body[source].map(item => Object.fromEntries(fields.filter(field => item[field] !== undefined).map(field => [field, item[field]])));
42
+ return { address: address.toLowerCase(), ...(options.passport ? { passport: options.passport } : {}),
43
+ source, items, limit, offset,
44
+ next_offset: typeof body.next_offset === "number" ? body.next_offset : null,
45
+ coverage: source === "receipts" ? "Retained AiFinPay receipts only; external merchant quota may lag" : "Indexed AiFinPay Polygon settlements only; excludes arbitrary wallet transfers and may lag the chain" };
46
+ }
47
+ //# sourceMappingURL=agentHistory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agentHistory.js","sourceRoot":"","sources":["../src/agentHistory.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,95 @@
1
+ export type AgentPassportNetwork = "polygon" | "avalanche" | "arbitrum" | "bnb" | "base" | "unichain" | "optimism" | "botchain" | "xrplevm" | "solana" | "near" | "aptos" | "casper";
2
+ export type AgentPassportChainFamily = "evm" | "solana" | "near" | "aptos" | "casper";
3
+ export type AgentPassportStatus = "active" | "suspended" | "revoked";
4
+ export type AgentPassportWalletStatus = "active" | "revoked" | "blocked";
5
+ export interface AgentPassportWalletBinding {
6
+ network: AgentPassportNetwork;
7
+ chain_family: AgentPassportChainFamily;
8
+ chain_ref: string | null;
9
+ address: string;
10
+ public_key: string | null;
11
+ is_primary: boolean;
12
+ status: AgentPassportWalletStatus;
13
+ verified_at: number;
14
+ }
15
+ export interface AgentPassportIssuerProof {
16
+ key_id: string;
17
+ public_key: string;
18
+ signature: string;
19
+ }
20
+ export interface AgentPassportIdentity {
21
+ schema: "aifp3.passport.vnext" | string;
22
+ agent_id: string;
23
+ agent_number: number;
24
+ agent_number_display: string;
25
+ username: string | null;
26
+ display_name: string | null;
27
+ status: AgentPassportStatus;
28
+ verification_level: "self_verified" | "organization_verified" | "enhanced_verified";
29
+ holder_public_key: string;
30
+ issuer: AgentPassportIssuerProof;
31
+ protected_payload_hash: string;
32
+ integrity_state: "ok" | "failed";
33
+ version: number;
34
+ created_at: number;
35
+ updated_at: number;
36
+ wallets: AgentPassportWalletBinding[];
37
+ }
38
+ export interface AgentPassportHolderKeypair {
39
+ public_key_b64: string;
40
+ private_key_b64: string;
41
+ }
42
+ export interface AgentPassportWalletChallenge {
43
+ challenge_id: string;
44
+ agent_id: string;
45
+ network: AgentPassportNetwork;
46
+ chain_family: AgentPassportChainFamily;
47
+ chain_ref: string | null;
48
+ address: string;
49
+ nonce: string;
50
+ message: string;
51
+ expires_at: number;
52
+ required_signatures: ["holder_signature", "wallet_signature"] | string[];
53
+ }
54
+ export declare class AgentPassportError extends Error {
55
+ readonly code: string;
56
+ constructor(message: string, code?: string);
57
+ }
58
+ export declare function normalizeAgentPassportIdentifier(identifier: string): string;
59
+ /** Resolve by immutable agent_id, permanent AIFP number or @username. */
60
+ export declare function resolveAgentPassport(identifier: string, baseUrl?: string, fetchImpl?: typeof fetch): Promise<AgentPassportIdentity>;
61
+ /** Generate the holder key locally. The private key is never sent to AiFinPay. */
62
+ export declare function generateAgentPassportHolderKeypair(): AgentPassportHolderKeypair;
63
+ export declare function signAgentPassportHolderMessage(privateKeyB64: string, message: string): string;
64
+ export declare function issueAgentPassport(input: {
65
+ holder_public_key: string;
66
+ username?: string;
67
+ display_name?: string;
68
+ }, baseUrl?: string): Promise<AgentPassportIdentity>;
69
+ export declare function createAgentPassport(input?: {
70
+ username?: string;
71
+ display_name?: string;
72
+ }, baseUrl?: string): Promise<{
73
+ passport: AgentPassportIdentity;
74
+ holder: AgentPassportHolderKeypair;
75
+ }>;
76
+ export declare function requestAgentPassportWalletBinding(identifier: string, input: {
77
+ network: AgentPassportNetwork;
78
+ address: string;
79
+ wallet_public_key?: string;
80
+ }, baseUrl?: string): Promise<AgentPassportWalletChallenge>;
81
+ export declare function confirmAgentPassportWalletBinding(identifier: string, input: {
82
+ challenge_id: string;
83
+ holder_signature: string;
84
+ wallet_signature: string;
85
+ wallet_signature_encoding?: "base64" | "base58" | "hex";
86
+ wallet_public_key?: string;
87
+ }, baseUrl?: string): Promise<AgentPassportIdentity>;
88
+ /**
89
+ * Verify both the issuer signature and the protected payload hash against an
90
+ * independently pinned AiFinPay issuer public key. Never trust only the key
91
+ * returned inside the same passport response.
92
+ */
93
+ export declare function verifyAgentPassportIssuerSignature(passport: AgentPassportIdentity, trustedIssuerPublicKeyB64: string): boolean;
94
+ export declare function agentPassportWallet(passport: AgentPassportIdentity, network: AgentPassportNetwork): AgentPassportWalletBinding;
95
+ //# sourceMappingURL=agentPassport.d.ts.map