@aifinpay/agent 2.0.0-rc.8 → 2.0.3

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 (123) hide show
  1. package/LICENSE +21 -0
  2. package/PAYMENT_RECEIPTS.md +114 -0
  3. package/README.md +85 -28
  4. package/dist/agent.d.ts +8 -1
  5. package/dist/agent.d.ts.map +1 -1
  6. package/dist/agent.js +50 -17
  7. package/dist/agent.js.map +1 -1
  8. package/dist/agentHistory.d.ts +55 -0
  9. package/dist/agentHistory.d.ts.map +1 -0
  10. package/dist/agentHistory.js +145 -0
  11. package/dist/agentHistory.js.map +1 -0
  12. package/dist/agentPassport.d.ts +71 -7
  13. package/dist/agentPassport.d.ts.map +1 -1
  14. package/dist/agentPassport.js +135 -27
  15. package/dist/agentPassport.js.map +1 -1
  16. package/dist/aifp1.d.ts +94 -5
  17. package/dist/aifp1.d.ts.map +1 -1
  18. package/dist/aifp1.js +370 -114
  19. package/dist/aifp1.js.map +1 -1
  20. package/dist/apiUrl.d.ts +3 -0
  21. package/dist/apiUrl.d.ts.map +1 -0
  22. package/dist/apiUrl.js +8 -0
  23. package/dist/apiUrl.js.map +1 -0
  24. package/dist/chains.d.ts +7 -0
  25. package/dist/chains.d.ts.map +1 -1
  26. package/dist/chains.js +19 -1
  27. package/dist/chains.js.map +1 -1
  28. package/dist/crossChain.d.ts +1 -0
  29. package/dist/crossChain.d.ts.map +1 -1
  30. package/dist/crossChain.js +87 -5
  31. package/dist/crossChain.js.map +1 -1
  32. package/dist/crypto.d.ts.map +1 -1
  33. package/dist/crypto.js.map +1 -1
  34. package/dist/deploymentResolver.d.ts +95 -0
  35. package/dist/deploymentResolver.d.ts.map +1 -0
  36. package/dist/deploymentResolver.js +169 -0
  37. package/dist/deploymentResolver.js.map +1 -0
  38. package/dist/errors.d.ts +17 -0
  39. package/dist/errors.d.ts.map +1 -1
  40. package/dist/errors.js +14 -0
  41. package/dist/errors.js.map +1 -1
  42. package/dist/facilitators/aifinpay.d.ts +4 -5
  43. package/dist/facilitators/aifinpay.d.ts.map +1 -1
  44. package/dist/facilitators/aifinpay.js +50 -21
  45. package/dist/facilitators/aifinpay.js.map +1 -1
  46. package/dist/facilitators/base.d.ts +12 -1
  47. package/dist/facilitators/base.d.ts.map +1 -1
  48. package/dist/facilitators/coinbase.d.ts.map +1 -1
  49. package/dist/facilitators/coinbase.js +3 -7
  50. package/dist/facilitators/coinbase.js.map +1 -1
  51. package/dist/facilitators/detect.d.ts.map +1 -1
  52. package/dist/facilitators/detect.js +2 -7
  53. package/dist/facilitators/detect.js.map +1 -1
  54. package/dist/facilitators/standard-x402.d.ts.map +1 -1
  55. package/dist/facilitators/standard-x402.js +40 -30
  56. package/dist/facilitators/standard-x402.js.map +1 -1
  57. package/dist/generated/solanaV14Deployments.generated.d.ts +25 -0
  58. package/dist/generated/solanaV14Deployments.generated.d.ts.map +1 -0
  59. package/dist/generated/solanaV14Deployments.generated.js +39 -0
  60. package/dist/generated/solanaV14Deployments.generated.js.map +1 -0
  61. package/dist/generated/splitterRoutes.generated.d.ts +24 -0
  62. package/dist/generated/splitterRoutes.generated.d.ts.map +1 -0
  63. package/dist/generated/splitterRoutes.generated.js +453 -0
  64. package/dist/generated/splitterRoutes.generated.js.map +1 -0
  65. package/dist/generated/v14Deployments.generated.d.ts +49 -0
  66. package/dist/generated/v14Deployments.generated.d.ts.map +1 -0
  67. package/dist/generated/v14Deployments.generated.js +415 -0
  68. package/dist/generated/v14Deployments.generated.js.map +1 -0
  69. package/dist/index.d.ts +27 -13
  70. package/dist/index.d.ts.map +1 -1
  71. package/dist/index.js +16 -7
  72. package/dist/index.js.map +1 -1
  73. package/dist/localIdentity.d.ts +17 -0
  74. package/dist/localIdentity.d.ts.map +1 -0
  75. package/dist/localIdentity.js +95 -0
  76. package/dist/localIdentity.js.map +1 -0
  77. package/dist/settlement.d.ts +35 -5
  78. package/dist/settlement.d.ts.map +1 -1
  79. package/dist/settlement.js +232 -76
  80. package/dist/settlement.js.map +1 -1
  81. package/dist/settlementHttp.d.ts +10 -0
  82. package/dist/settlementHttp.d.ts.map +1 -0
  83. package/dist/settlementHttp.js +78 -0
  84. package/dist/settlementHttp.js.map +1 -0
  85. package/dist/settlementV14.d.ts +10 -9
  86. package/dist/settlementV14.d.ts.map +1 -1
  87. package/dist/settlementV14.js +43 -55
  88. package/dist/settlementV14.js.map +1 -1
  89. package/dist/solanaDeploymentResolver.d.ts +98 -0
  90. package/dist/solanaDeploymentResolver.d.ts.map +1 -0
  91. package/dist/solanaDeploymentResolver.js +162 -0
  92. package/dist/solanaDeploymentResolver.js.map +1 -0
  93. package/dist/solanaV14Deployments.generated.d.ts +25 -0
  94. package/dist/solanaV14Deployments.generated.d.ts.map +1 -0
  95. package/dist/solanaV14Deployments.generated.js +39 -0
  96. package/dist/solanaV14Deployments.generated.js.map +1 -0
  97. package/dist/spendLedger.d.ts.map +1 -1
  98. package/dist/spendLedger.js +1 -3
  99. package/dist/spendLedger.js.map +1 -1
  100. package/dist/splitterRoutes.d.ts +11 -4
  101. package/dist/splitterRoutes.d.ts.map +1 -1
  102. package/dist/splitterRoutes.generated.d.ts +11 -9
  103. package/dist/splitterRoutes.generated.d.ts.map +1 -1
  104. package/dist/splitterRoutes.generated.js +72 -18
  105. package/dist/splitterRoutes.generated.js.map +1 -1
  106. package/dist/splitterRoutes.js +7 -5
  107. package/dist/splitterRoutes.js.map +1 -1
  108. package/dist/unifiedAgent.d.ts +97 -29
  109. package/dist/unifiedAgent.d.ts.map +1 -1
  110. package/dist/unifiedAgent.js +232 -349
  111. package/dist/unifiedAgent.js.map +1 -1
  112. package/dist/v14Deployments.generated.d.ts +49 -0
  113. package/dist/v14Deployments.generated.d.ts.map +1 -0
  114. package/dist/v14Deployments.generated.js +413 -0
  115. package/dist/v14Deployments.generated.js.map +1 -0
  116. package/dist/wallet.d.ts.map +1 -1
  117. package/dist/wallet.js +2 -2
  118. package/dist/wallet.js.map +1 -1
  119. package/package.json +27 -6
  120. package/dist/cli.d.ts +0 -3
  121. package/dist/cli.d.ts.map +0 -1
  122. package/dist/cli.js +0 -127
  123. package/dist/cli.js.map +0 -1
@@ -0,0 +1,95 @@
1
+ import { existsSync, readFileSync } from "node:fs";
2
+ import { homedir } from "node:os";
3
+ import { join, resolve } from "node:path";
4
+ import { createDecipheriv, scryptSync } from "node:crypto";
5
+ import { AiFinPayError } from "./errors.js";
6
+ function seed(value) {
7
+ if (typeof value !== "string" || !/^(0x)?[0-9a-fA-F]{64}$/.test(value)) {
8
+ throw new AiFinPayError("SEED_HASH must contain a 32-byte hex seed (64 hex characters); no mnemonic or double hashing");
9
+ }
10
+ return value.replace(/^0x/, "");
11
+ }
12
+ function object(value) {
13
+ return typeof value === "object" && value !== null && !Array.isArray(value);
14
+ }
15
+ function readJson(path) {
16
+ try {
17
+ const parsed = JSON.parse(readFileSync(path, "utf8"));
18
+ if (object(parsed))
19
+ return parsed;
20
+ }
21
+ catch {
22
+ /* File contents and parse errors may contain private material. */
23
+ }
24
+ throw new AiFinPayError(`Cannot read wallet JSON at ${path}; refusing to generate a replacement wallet`);
25
+ }
26
+ /**
27
+ * Internal load-only adapter for the same identity files used by MCP.
28
+ * Keep source precedence and encryption format aligned with mcp/src/identity.ts.
29
+ * No file is created, changed or logged; returned key material stays local.
30
+ */
31
+ export function loadLocalWalletIdentity() {
32
+ const env = process.env;
33
+ if (env.SEED_HASH !== undefined)
34
+ return { source: "SEED_HASH", seedHash: seed(env.SEED_HASH) };
35
+ const projectPath = resolve(env.AIFINPAY_AGENTS_FILE || "./aifinpay/agents.json");
36
+ if (existsSync(projectPath)) {
37
+ const document = readJson(projectPath);
38
+ const agents = document.agents;
39
+ if (!Array.isArray(agents) || agents.length === 0) {
40
+ throw new AiFinPayError("agents.json requires a non-empty agents array");
41
+ }
42
+ const matches = env.AIFINPAY_AGENT_ID
43
+ ? agents.filter((agent) => object(agent) && agent.id === env.AIFINPAY_AGENT_ID)
44
+ : agents;
45
+ if (matches.length !== 1) {
46
+ throw new AiFinPayError("Select exactly one agents.json record with AIFINPAY_AGENT_ID; refusing an ambiguous wallet");
47
+ }
48
+ return {
49
+ source: "agents.json",
50
+ seedHash: seed(object(matches[0]) ? matches[0].seed_hash : undefined),
51
+ };
52
+ }
53
+ if (env.AIFINPAY_AGENTS_FILE)
54
+ throw new AiFinPayError("Configured AIFINPAY_AGENTS_FILE does not exist");
55
+ if (env.AIFINPAY_AGENT_SECRET) {
56
+ return { source: "AIFINPAY_AGENT_SECRET", secretB58: env.AIFINPAY_AGENT_SECRET };
57
+ }
58
+ const legacyPath = join(env.AIFINPAY_HOME || join(homedir(), ".aifinpay"), "agent.json");
59
+ if (!existsSync(legacyPath)) {
60
+ throw new AiFinPayError("No persistent wallet configured; configure SEED_HASH, aifinpay/agents.json, AIFINPAY_AGENT_SECRET or an existing MCP keystore before loading an agent");
61
+ }
62
+ const legacy = readJson(legacyPath);
63
+ if (legacy.enc) {
64
+ if (legacy.enc !== "scrypt-aes-256-gcm" || !env.AIFINPAY_WALLET_PASSPHRASE) {
65
+ throw new AiFinPayError("Encrypted keystore requires AIFINPAY_WALLET_PASSPHRASE and the supported encryption format");
66
+ }
67
+ try {
68
+ if (![legacy.salt, legacy.iv, legacy.tag, legacy.ct].every((value) => typeof value === "string")) {
69
+ throw new Error("Invalid encrypted fields");
70
+ }
71
+ const key = scryptSync(env.AIFINPAY_WALLET_PASSPHRASE, Buffer.from(legacy.salt, "base64"), 32, {
72
+ N: 1 << 15,
73
+ r: 8,
74
+ p: 1,
75
+ maxmem: 64 * 1024 * 1024,
76
+ });
77
+ const decipher = createDecipheriv("aes-256-gcm", key, Buffer.from(legacy.iv, "base64"));
78
+ decipher.setAuthTag(Buffer.from(legacy.tag, "base64"));
79
+ return {
80
+ source: "legacy-keystore",
81
+ secretB58: Buffer.concat([
82
+ decipher.update(Buffer.from(legacy.ct, "base64")),
83
+ decipher.final(),
84
+ ]).toString("utf8"),
85
+ };
86
+ }
87
+ catch {
88
+ throw new AiFinPayError("Cannot decrypt keystore; refusing to generate a replacement wallet");
89
+ }
90
+ }
91
+ if (typeof legacy.secretB58 !== "string" || !legacy.secretB58)
92
+ throw new AiFinPayError("Invalid legacy keystore");
93
+ return { source: "legacy-keystore", secretB58: legacy.secretB58 };
94
+ }
95
+ //# sourceMappingURL=localIdentity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"localIdentity.js","sourceRoot":"","sources":["../src/localIdentity.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,10 @@
1
1
  import { type Address, type Hex, type PublicClient, type WalletClient } from "viem";
2
2
  export type SettlementRouteClass = "AIFP-1" | "AIFP-2";
3
- export type SettlementEvmNetwork = "polygon" | "avalanche" | "arbitrum" | "bnb" | "base" | "unichain" | "optimism" | "botchain" | "xrplevm";
3
+ /**
4
+ * EVM networks supported for AIFP-1/AIFP-2 settlement.
5
+ * @deprecated "botchain" is deprecated and will be removed in a future version. Use "robinhood" instead.
6
+ */
7
+ export type SettlementEvmNetwork = "polygon" | "avalanche" | "arbitrum" | "bnb" | "base" | "unichain" | "optimism" | "robinhood" | "xrplevm" | "amoy";
4
8
  export interface SettlementRoute {
5
9
  route_class: SettlementRouteClass;
6
10
  profile: {
@@ -22,6 +26,7 @@ export interface SettlementRoute {
22
26
  }>;
23
27
  explorer: string;
24
28
  live: boolean;
29
+ testnet?: boolean;
25
30
  splitter?: Address;
26
31
  splitter_version?: "1.3";
27
32
  runtime_code_hash?: Hex;
@@ -38,6 +43,13 @@ export interface TrustedSettlementRoutePin {
38
43
  splitter_version: "1.3";
39
44
  splitter: Address;
40
45
  runtime_code_hash: Hex;
46
+ /** Must be explicitly true for Amoy signing; omitted means mainnet only. */
47
+ testnet?: boolean;
48
+ /** Independently reviewed asset identities; required for stable settlement. */
49
+ stable_assets?: Readonly<Record<string, {
50
+ address: Address;
51
+ decimals: number;
52
+ }>>;
41
53
  }
42
54
  export type TrustedSettlementRouteRegistry = Partial<Record<SettlementRouteClass, Partial<Record<SettlementEvmNetwork, TrustedSettlementRoutePin>>>>;
43
55
  export interface SettlementInvoiceInput {
@@ -78,7 +90,7 @@ interface SettlementInvoiceBase {
78
90
  export interface NativeSettlementInvoice extends SettlementInvoiceBase {
79
91
  transaction: {
80
92
  kind: "evm_contract_call";
81
- function: "payNative(bytes32,address,uint256,address,uint256,string)";
93
+ function: "payNative((bytes32,address,uint256,address,uint256,string))";
82
94
  args: {
83
95
  paymentId: Hex;
84
96
  merchant: Address;
@@ -106,7 +118,7 @@ export interface StableSettlementInvoice extends SettlementInvoiceBase {
106
118
  amount: string;
107
119
  };
108
120
  settle: {
109
- function: "payStable(bytes32,address,uint256,address,address,uint256,string)";
121
+ function: "payStable((bytes32,address,uint256,address,address,uint256,string))";
110
122
  args: {
111
123
  paymentId: Hex;
112
124
  token: Address;
@@ -133,13 +145,30 @@ export declare class SettlementProtocolError extends Error {
133
145
  readonly code: string;
134
146
  constructor(message: string, code?: string);
135
147
  }
148
+ /** Broadcast succeeded but confirmation is unknown. Keep this hash and check
149
+ * it before retrying; a timeout is not evidence that no money moved. */
150
+ export declare class SettlementConfirmationPendingError extends SettlementProtocolError {
151
+ readonly txHash: Hex;
152
+ readonly stage: "approval" | "settlement";
153
+ constructor(txHash: Hex, stage: "approval" | "settlement");
154
+ }
136
155
  /** Strictly validate an invoice before any wallet signs. */
137
156
  export declare function validateSettlementInvoice(invoice: SettlementInvoice): void;
138
157
  /** Verify that a backend invoice matches an independently trusted release pin. */
139
158
  export declare function validateTrustedSettlementRoutePin(invoice: SettlementInvoice, pin: TrustedSettlementRoutePin): void;
159
+ export interface SettlementClientOptions {
160
+ baseUrl?: string;
161
+ /** Supply the caller's guarded transport, e.g. MCP's safe fetch. */
162
+ fetchImpl?: typeof fetch;
163
+ /** Covers the response body as well as the HTTP request. Default 15 seconds. */
164
+ timeoutMs?: number;
165
+ }
140
166
  export declare class SettlementClient {
141
167
  readonly baseUrl: string;
142
- constructor(baseUrl?: string);
168
+ private readonly fetchImpl;
169
+ private readonly timeoutMs;
170
+ constructor(options?: string | SettlementClientOptions);
171
+ private request;
143
172
  routes(routeClass?: SettlementRouteClass): Promise<SettlementRoute[]>;
144
173
  invoice(input: SettlementInvoiceInput): Promise<SettlementInvoice>;
145
174
  }
@@ -154,9 +183,10 @@ export declare const SETTLEMENT_CHAIN_IDS: Readonly<{
154
183
  optimism: number;
155
184
  avalanche: number;
156
185
  unichain: number;
157
- botchain: number;
158
186
  xrplevm: number;
159
187
  bnb: number;
188
+ robinhood: number;
189
+ amoy: number;
160
190
  }>;
161
191
  export declare const SETTLEMENT_EXPECTED_BPS: Readonly<{
162
192
  "AIFP-1": {
@@ -1 +1 @@
1
- {"version":3,"file":"settlement.d.ts","sourceRoot":"","sources":["../src/settlement.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"settlement.d.ts","sourceRoot":"","sources":["../src/settlement.ts"],"names":[],"mappings":"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"}