@teneo-protocol/sdk 2.2.2 → 3.0.1

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 (231) hide show
  1. package/.github/ISSUE_TEMPLATE/config.yml +1 -1
  2. package/CHANGELOG.md +366 -15
  3. package/CONCEPTS.md +182 -44
  4. package/README.md +524 -94
  5. package/dist/constants.d.ts +3 -1
  6. package/dist/constants.d.ts.map +1 -1
  7. package/dist/constants.js +5 -3
  8. package/dist/constants.js.map +1 -1
  9. package/dist/core/websocket-client.d.ts.map +1 -1
  10. package/dist/core/websocket-client.js +9 -5
  11. package/dist/core/websocket-client.js.map +1 -1
  12. package/dist/formatters/response-formatter.d.ts +6 -6
  13. package/dist/handlers/message-handlers/agent-details-response-handler.d.ts +1080 -756
  14. package/dist/handlers/message-handlers/agent-details-response-handler.d.ts.map +1 -1
  15. package/dist/handlers/message-handlers/agent-details-response-handler.js +2 -2
  16. package/dist/handlers/message-handlers/agent-details-response-handler.js.map +1 -1
  17. package/dist/handlers/message-handlers/agent-error-handler.d.ts +91 -0
  18. package/dist/handlers/message-handlers/agent-error-handler.d.ts.map +1 -0
  19. package/dist/handlers/message-handlers/agent-error-handler.js +44 -0
  20. package/dist/handlers/message-handlers/agent-error-handler.js.map +1 -0
  21. package/dist/handlers/message-handlers/agent-selected-handler.d.ts +6 -0
  22. package/dist/handlers/message-handlers/agent-selected-handler.d.ts.map +1 -1
  23. package/dist/handlers/message-handlers/agent-status-update-handler.d.ts +1080 -756
  24. package/dist/handlers/message-handlers/agent-status-update-handler.d.ts.map +1 -1
  25. package/dist/handlers/message-handlers/agent-status-update-handler.js +2 -7
  26. package/dist/handlers/message-handlers/agent-status-update-handler.js.map +1 -1
  27. package/dist/handlers/message-handlers/all-agents-response-handler.d.ts +135 -54
  28. package/dist/handlers/message-handlers/all-agents-response-handler.d.ts.map +1 -1
  29. package/dist/handlers/message-handlers/all-agents-response-handler.js +2 -2
  30. package/dist/handlers/message-handlers/all-agents-response-handler.js.map +1 -1
  31. package/dist/handlers/message-handlers/auth-error-handler.d.ts +6 -0
  32. package/dist/handlers/message-handlers/auth-error-handler.d.ts.map +1 -1
  33. package/dist/handlers/message-handlers/auth-message-handler.d.ts.map +1 -1
  34. package/dist/handlers/message-handlers/auth-message-handler.js +6 -1
  35. package/dist/handlers/message-handlers/auth-message-handler.js.map +1 -1
  36. package/dist/handlers/message-handlers/auth-required-handler.d.ts +6 -0
  37. package/dist/handlers/message-handlers/auth-required-handler.d.ts.map +1 -1
  38. package/dist/handlers/message-handlers/auth-success-handler.d.ts.map +1 -1
  39. package/dist/handlers/message-handlers/auth-success-handler.js +6 -1
  40. package/dist/handlers/message-handlers/auth-success-handler.js.map +1 -1
  41. package/dist/handlers/message-handlers/base-handler.d.ts +2 -1
  42. package/dist/handlers/message-handlers/base-handler.d.ts.map +1 -1
  43. package/dist/handlers/message-handlers/base-handler.js +24 -4
  44. package/dist/handlers/message-handlers/base-handler.js.map +1 -1
  45. package/dist/handlers/message-handlers/challenge-handler.d.ts +6 -0
  46. package/dist/handlers/message-handlers/challenge-handler.d.ts.map +1 -1
  47. package/dist/handlers/message-handlers/error-message-handler.d.ts +6 -0
  48. package/dist/handlers/message-handlers/error-message-handler.d.ts.map +1 -1
  49. package/dist/handlers/message-handlers/index.d.ts +4 -0
  50. package/dist/handlers/message-handlers/index.d.ts.map +1 -1
  51. package/dist/handlers/message-handlers/index.js +23 -1
  52. package/dist/handlers/message-handlers/index.js.map +1 -1
  53. package/dist/handlers/message-handlers/list-available-agents-handler.d.ts +1116 -756
  54. package/dist/handlers/message-handlers/list-available-agents-handler.d.ts.map +1 -1
  55. package/dist/handlers/message-handlers/list-available-agents-handler.js +23 -10
  56. package/dist/handlers/message-handlers/list-available-agents-handler.js.map +1 -1
  57. package/dist/handlers/message-handlers/list-room-agents-handler.d.ts +1080 -756
  58. package/dist/handlers/message-handlers/list-room-agents-handler.d.ts.map +1 -1
  59. package/dist/handlers/message-handlers/list-room-agents-handler.js +2 -6
  60. package/dist/handlers/message-handlers/list-room-agents-handler.js.map +1 -1
  61. package/dist/handlers/message-handlers/list-rooms-response-handler.d.ts.map +1 -1
  62. package/dist/handlers/message-handlers/list-rooms-response-handler.js +2 -5
  63. package/dist/handlers/message-handlers/list-rooms-response-handler.js.map +1 -1
  64. package/dist/handlers/message-handlers/ping-pong-handler.d.ts +52 -4
  65. package/dist/handlers/message-handlers/ping-pong-handler.d.ts.map +1 -1
  66. package/dist/handlers/message-handlers/ping-pong-handler.js +23 -4
  67. package/dist/handlers/message-handlers/ping-pong-handler.js.map +1 -1
  68. package/dist/handlers/message-handlers/rate-limit-notification-handler.d.ts.map +1 -1
  69. package/dist/handlers/message-handlers/rate-limit-notification-handler.js +3 -2
  70. package/dist/handlers/message-handlers/rate-limit-notification-handler.js.map +1 -1
  71. package/dist/handlers/message-handlers/regular-message-handler.d.ts +6 -0
  72. package/dist/handlers/message-handlers/regular-message-handler.d.ts.map +1 -1
  73. package/dist/handlers/message-handlers/subscribe-response-handler.d.ts +12 -6
  74. package/dist/handlers/message-handlers/subscribe-response-handler.d.ts.map +1 -1
  75. package/dist/handlers/message-handlers/success-handler.d.ts +82 -0
  76. package/dist/handlers/message-handlers/success-handler.d.ts.map +1 -0
  77. package/dist/handlers/message-handlers/success-handler.js +24 -0
  78. package/dist/handlers/message-handlers/success-handler.js.map +1 -0
  79. package/dist/handlers/message-handlers/task-confirmed-handler.d.ts +110 -0
  80. package/dist/handlers/message-handlers/task-confirmed-handler.d.ts.map +1 -0
  81. package/dist/handlers/message-handlers/task-confirmed-handler.js +46 -0
  82. package/dist/handlers/message-handlers/task-confirmed-handler.js.map +1 -0
  83. package/dist/handlers/message-handlers/trigger-wallet-tx-handler.d.ts +244 -0
  84. package/dist/handlers/message-handlers/trigger-wallet-tx-handler.d.ts.map +1 -0
  85. package/dist/handlers/message-handlers/trigger-wallet-tx-handler.js +58 -0
  86. package/dist/handlers/message-handlers/trigger-wallet-tx-handler.js.map +1 -0
  87. package/dist/handlers/message-handlers/unsubscribe-response-handler.d.ts +12 -6
  88. package/dist/handlers/message-handlers/unsubscribe-response-handler.d.ts.map +1 -1
  89. package/dist/handlers/message-handlers/user-authenticated-handler.js +2 -2
  90. package/dist/handlers/message-handlers/user-authenticated-handler.js.map +1 -1
  91. package/dist/handlers/message-handlers/user-count-handler.js +2 -2
  92. package/dist/handlers/message-handlers/user-count-handler.js.map +1 -1
  93. package/dist/index.d.ts +3 -3
  94. package/dist/index.d.ts.map +1 -1
  95. package/dist/index.js +11 -4
  96. package/dist/index.js.map +1 -1
  97. package/dist/managers/admin-manager.d.ts +3 -1
  98. package/dist/managers/admin-manager.d.ts.map +1 -1
  99. package/dist/managers/admin-manager.js +4 -3
  100. package/dist/managers/admin-manager.js.map +1 -1
  101. package/dist/managers/agent-room-manager.d.ts +89 -11
  102. package/dist/managers/agent-room-manager.d.ts.map +1 -1
  103. package/dist/managers/agent-room-manager.js +99 -35
  104. package/dist/managers/agent-room-manager.js.map +1 -1
  105. package/dist/managers/index.d.ts +1 -1
  106. package/dist/managers/index.d.ts.map +1 -1
  107. package/dist/managers/index.js.map +1 -1
  108. package/dist/managers/message-router.d.ts +45 -5
  109. package/dist/managers/message-router.d.ts.map +1 -1
  110. package/dist/managers/message-router.js +96 -24
  111. package/dist/managers/message-router.js.map +1 -1
  112. package/dist/managers/room-manager.d.ts +29 -7
  113. package/dist/managers/room-manager.d.ts.map +1 -1
  114. package/dist/managers/room-manager.js +37 -11
  115. package/dist/managers/room-manager.js.map +1 -1
  116. package/dist/payments/index.d.ts +3 -1
  117. package/dist/payments/index.d.ts.map +1 -1
  118. package/dist/payments/index.js +17 -3
  119. package/dist/payments/index.js.map +1 -1
  120. package/dist/payments/networks.d.ts +59 -0
  121. package/dist/payments/networks.d.ts.map +1 -0
  122. package/dist/payments/networks.js +192 -0
  123. package/dist/payments/networks.js.map +1 -0
  124. package/dist/payments/payment-client.d.ts +55 -10
  125. package/dist/payments/payment-client.d.ts.map +1 -1
  126. package/dist/payments/payment-client.js +172 -51
  127. package/dist/payments/payment-client.js.map +1 -1
  128. package/dist/teneo-sdk.d.ts +215 -41
  129. package/dist/teneo-sdk.d.ts.map +1 -1
  130. package/dist/teneo-sdk.js +361 -84
  131. package/dist/teneo-sdk.js.map +1 -1
  132. package/dist/types/config.d.ts +334 -25
  133. package/dist/types/config.d.ts.map +1 -1
  134. package/dist/types/config.js +114 -22
  135. package/dist/types/config.js.map +1 -1
  136. package/dist/types/events.d.ts +60 -14
  137. package/dist/types/events.d.ts.map +1 -1
  138. package/dist/types/events.js.map +1 -1
  139. package/dist/types/index.d.ts +1 -1
  140. package/dist/types/index.d.ts.map +1 -1
  141. package/dist/types/index.js +11 -4
  142. package/dist/types/index.js.map +1 -1
  143. package/dist/types/messages.d.ts +13110 -7451
  144. package/dist/types/messages.d.ts.map +1 -1
  145. package/dist/types/messages.js +195 -44
  146. package/dist/types/messages.js.map +1 -1
  147. package/dist/utils/pricing-resolver.d.ts +1 -1
  148. package/dist/utils/pricing-resolver.d.ts.map +1 -1
  149. package/dist/utils/pricing-resolver.js +9 -1
  150. package/dist/utils/pricing-resolver.js.map +1 -1
  151. package/examples/agent-room-management-example.ts +5 -5
  152. package/examples/basic-usage.ts +26 -6
  153. package/examples/claude-agent-x-follower/index.ts +1 -1
  154. package/examples/minimal-chat.ts +4 -3
  155. package/examples/n8n-teneo/index.ts +2 -2
  156. package/examples/nestjs-dashboard/README.md +1 -1
  157. package/examples/nestjs-dashboard/src/teneo/agents.controller.ts +3 -3
  158. package/examples/nestjs-dashboard/src/teneo/rooms.controller.ts +5 -5
  159. package/examples/nestjs-dashboard/src/teneo/teneo.service.ts +8 -8
  160. package/examples/openai-teneo/index.ts +1 -1
  161. package/examples/payment-flow.ts +143 -0
  162. package/examples/production-dashboard/README.md +6 -8
  163. package/examples/production-dashboard/server.ts +22 -10
  164. package/examples/room-management-example.ts +2 -2
  165. package/examples/usage/01-connect.ts +0 -3
  166. package/examples/usage/02-list-agents.ts +0 -2
  167. package/examples/usage/03-pick-agent.ts +3 -4
  168. package/examples/usage/04-find-by-capability.ts +10 -12
  169. package/examples/usage/05-webhook-example.ts +2 -4
  170. package/examples/usage/06-simple-api-server.ts +13 -9
  171. package/examples/usage/07-event-listener.ts +1 -13
  172. package/examples/usage/README.md +33 -7
  173. package/examples/webhook-integration.ts +9 -9
  174. package/examples/x-influencer-battle-server.ts +1 -1
  175. package/package.json +1 -1
  176. package/scripts/diagnose-connection.ts +86 -0
  177. package/scripts/investigate-payload.ts +163 -0
  178. package/scripts/list-agents.ts +58 -0
  179. package/scripts/live-multi-network-test.ts +230 -0
  180. package/src/constants.ts +5 -3
  181. package/src/core/websocket-client.ts +10 -9
  182. package/src/handlers/message-handlers/agent-details-response-handler.ts +2 -2
  183. package/src/handlers/message-handlers/agent-error-handler.ts +47 -0
  184. package/src/handlers/message-handlers/agent-status-update-handler.ts +2 -7
  185. package/src/handlers/message-handlers/all-agents-response-handler.ts +2 -2
  186. package/src/handlers/message-handlers/auth-message-handler.ts +7 -1
  187. package/src/handlers/message-handlers/auth-success-handler.ts +7 -1
  188. package/src/handlers/message-handlers/base-handler.ts +24 -4
  189. package/src/handlers/message-handlers/index.ts +24 -0
  190. package/src/handlers/message-handlers/list-available-agents-handler.ts +24 -11
  191. package/src/handlers/message-handlers/list-room-agents-handler.ts +2 -6
  192. package/src/handlers/message-handlers/list-rooms-response-handler.ts +2 -5
  193. package/src/handlers/message-handlers/ping-pong-handler.ts +29 -4
  194. package/src/handlers/message-handlers/rate-limit-notification-handler.ts +3 -2
  195. package/src/handlers/message-handlers/success-handler.ts +26 -0
  196. package/src/handlers/message-handlers/task-confirmed-handler.ts +49 -0
  197. package/src/handlers/message-handlers/trigger-wallet-tx-handler.ts +62 -0
  198. package/src/handlers/message-handlers/user-authenticated-handler.ts +2 -2
  199. package/src/handlers/message-handlers/user-count-handler.ts +2 -2
  200. package/src/index.ts +12 -4
  201. package/src/managers/admin-manager.ts +6 -3
  202. package/src/managers/agent-room-manager.ts +155 -26
  203. package/src/managers/index.ts +6 -1
  204. package/src/managers/message-router.ts +122 -27
  205. package/src/managers/room-manager.ts +39 -11
  206. package/src/payments/index.ts +20 -5
  207. package/src/payments/networks.ts +208 -0
  208. package/src/payments/payment-client.ts +211 -56
  209. package/src/teneo-sdk.ts +402 -71
  210. package/src/types/config.test.ts +24 -4
  211. package/src/types/config.ts +123 -25
  212. package/src/types/events.ts +36 -2
  213. package/src/types/index.ts +16 -3
  214. package/src/types/messages.ts +235 -60
  215. package/src/utils/pricing-resolver.ts +10 -2
  216. package/tests/direct-agent-test.ts +1 -1
  217. package/tests/integration/real-server.test.ts +1 -1
  218. package/tests/integration/websocket.test.ts +3 -3
  219. package/tests/multi-network-payment.test.ts +309 -0
  220. package/tests/multi-network.test.ts +296 -0
  221. package/tests/payment-flow-test.ts +6 -4
  222. package/tests/unit/handlers/agent-error-handler.test.ts +388 -0
  223. package/tests/unit/handlers/agent-room-operation-response-handler.test.ts +9 -6
  224. package/tests/unit/handlers/agent-status-update-handler.test.ts +11 -16
  225. package/tests/unit/handlers/list-available-agents-handler.test.ts +11 -14
  226. package/tests/unit/handlers/list-room-agents-handler.test.ts +11 -15
  227. package/tests/unit/handlers/room-operation-response-handler.test.ts +9 -6
  228. package/tests/unit/handlers/trigger-wallet-tx-handler.test.ts +431 -0
  229. package/tests/unit/managers/admin-manager.test.ts +183 -0
  230. package/tests/unit/managers/agent-room-manager.test.ts +189 -33
  231. package/tests/unit/sdk-new-methods.test.ts +221 -0
@@ -2,40 +2,19 @@
2
2
  /**
3
3
  * PaymentClient - Handles x402 payment header generation for quote-approve flow
4
4
  *
5
- * Creates x402 V2 payment headers for USDC payments on PEAQ network.
5
+ * Creates x402 V2 payment headers for USDC payments on multiple networks.
6
6
  * Implements ERC-3009 TransferWithAuthorization signing using viem's EIP-712.
7
+ *
8
+ * v2.3.0: Multi-network support with dynamic chain configuration
7
9
  */
8
10
  Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.PaymentClient = exports.PEAQ_CHAIN_ID = exports.USDC_CONTRACT = exports.DEFAULT_RPC_URL = exports.DEFAULT_PAY_TO_ADDRESS = exports.DEFAULT_PAYMENT_TIMEOUT_SECONDS = exports.X402_VERSION = exports.USDC_DECIMALS = void 0;
11
+ exports.PaymentClient = exports.PEAQ_CHAIN_ID = exports.USDC_CONTRACT = exports.DEFAULT_PAY_TO_ADDRESS = exports.DEFAULT_PAYMENT_TIMEOUT_SECONDS = exports.X402_VERSION = exports.USDC_DECIMALS = void 0;
10
12
  exports.buildX402ResourceUrl = buildX402ResourceUrl;
11
13
  exports.usdcToUnits = usdcToUnits;
12
14
  exports.unitsToUsdc = unitsToUsdc;
13
15
  const viem_1 = require("viem");
14
16
  const accounts_1 = require("viem/accounts");
15
- // PEAQ chain definition
16
- const peaq = (0, viem_1.defineChain)({
17
- id: 3338,
18
- name: "peaq",
19
- network: "peaq",
20
- nativeCurrency: {
21
- decimals: 18,
22
- name: "PEAQ",
23
- symbol: "PEAQ"
24
- },
25
- rpcUrls: {
26
- default: {
27
- http: ["https://peaq.api.onfinality.io/public"]
28
- },
29
- public: {
30
- http: ["https://peaq.api.onfinality.io/public"]
31
- }
32
- }
33
- });
34
- // USDC contract on PEAQ
35
- const USDC_CONTRACT = "0xbbA60da06c2c5424f03f7434542280FCAd453d10";
36
- exports.USDC_CONTRACT = USDC_CONTRACT;
37
- const PEAQ_NETWORK_CAIP2 = "eip155:3338";
38
- exports.PEAQ_CHAIN_ID = PEAQ_NETWORK_CAIP2;
17
+ const networks_1 = require("./networks");
39
18
  // ERC-3009 TransferWithAuthorization EIP-712 types
40
19
  const ERC3009_TYPES = {
41
20
  TransferWithAuthorization: [
@@ -52,7 +31,9 @@ exports.USDC_DECIMALS = 6;
52
31
  exports.X402_VERSION = 2;
53
32
  exports.DEFAULT_PAYMENT_TIMEOUT_SECONDS = 60;
54
33
  exports.DEFAULT_PAY_TO_ADDRESS = "0x0000000000000000000000000000000000000000";
55
- exports.DEFAULT_RPC_URL = "https://peaq.api.onfinality.io/public";
34
+ // Re-export for backwards compatibility
35
+ exports.USDC_CONTRACT = "0xbbA60da06c2c5424f03f7434542280FCAd453d10"; // PEAQ USDC
36
+ exports.PEAQ_CHAIN_ID = "eip155:3338";
56
37
  /**
57
38
  * Converts a WebSocket URL to an HTTP(S) URL for x402 resource specification.
58
39
  * The x402 protocol requires HTTP URLs, not WebSocket URLs.
@@ -94,34 +75,107 @@ function generateNonce() {
94
75
  crypto.getRandomValues(randomBytes);
95
76
  return (0, viem_1.toHex)(randomBytes);
96
77
  }
78
+ /**
79
+ * Validates that a string is a valid Ethereum address
80
+ * @param address - String to validate
81
+ * @returns True if valid Ethereum address format
82
+ */
83
+ function isValidEthereumAddress(address) {
84
+ return /^0x[a-fA-F0-9]{40}$/.test(address);
85
+ }
86
+ /**
87
+ * Resolve network configuration from various input formats
88
+ *
89
+ * @param config - PaymentClientConfig with network options
90
+ * @returns Resolved NetworkConfig
91
+ */
92
+ function resolveNetworkConfig(config) {
93
+ // Priority: chainId > network name > default
94
+ if (config.networkChainId) {
95
+ return (0, networks_1.getNetwork)(config.networkChainId);
96
+ }
97
+ if (config.network) {
98
+ return (0, networks_1.getNetwork)(config.network);
99
+ }
100
+ return (0, networks_1.getDefaultNetwork)();
101
+ }
97
102
  /**
98
103
  * PaymentClient handles creation of x402 V2 payment headers
99
104
  * for the quote-approve payment flow.
105
+ *
106
+ * Supports multiple networks with dynamic configuration.
107
+ *
108
+ * @example
109
+ * ```typescript
110
+ * // Default network (PEAQ or TENEO_NETWORK env var)
111
+ * const client = new PaymentClient(secureKey, walletAddress);
112
+ *
113
+ * // Specific network by name
114
+ * const baseClient = new PaymentClient(secureKey, walletAddress, {
115
+ * network: "base"
116
+ * });
117
+ *
118
+ * // Specific network by chain ID
119
+ * const avaxClient = new PaymentClient(secureKey, walletAddress, {
120
+ * networkChainId: 43114
121
+ * });
122
+ * ```
100
123
  */
101
124
  class PaymentClient {
102
125
  secureKey;
103
126
  walletAddress;
104
- network;
105
- asset;
127
+ networkConfig;
128
+ assetOverride;
106
129
  resourceUrl;
107
130
  constructor(secureKey, walletAddress, config = {}) {
131
+ if (!isValidEthereumAddress(walletAddress)) {
132
+ throw new Error(`Invalid wallet address: ${walletAddress}`);
133
+ }
108
134
  this.secureKey = secureKey;
109
135
  this.walletAddress = walletAddress;
110
- this.network = config.network ?? PEAQ_NETWORK_CAIP2;
111
- this.asset = config.asset ?? USDC_CONTRACT;
136
+ this.networkConfig = resolveNetworkConfig(config);
137
+ this.assetOverride = config.asset;
112
138
  this.resourceUrl = config.resourceUrl ?? "";
113
139
  }
140
+ /**
141
+ * Get the current network configuration
142
+ */
143
+ get network() {
144
+ return this.networkConfig;
145
+ }
146
+ /**
147
+ * Get the USDC contract address for the current network
148
+ */
149
+ get asset() {
150
+ return this.assetOverride ?? this.networkConfig.usdcContract;
151
+ }
152
+ /**
153
+ * Get the CAIP-2 network identifier
154
+ */
155
+ get caip2() {
156
+ return this.networkConfig.caip2;
157
+ }
114
158
  /**
115
159
  * Creates an x402 V2 payment header for a specific amount and recipient.
116
160
  *
117
161
  * @param amountMicroUnits - Amount in micro-units (e.g., 1000 = 0.001 USDC)
118
162
  * @param recipientAddress - Wallet address of the payment recipient (agent)
119
163
  * @param resourceUrl - Optional override for x402 resource URL
164
+ * @param networkOverride - Optional network override for this specific payment
165
+ * @param settlementData - Backend-provided settlement data for x402x-router-settlement
120
166
  * @returns Base64 encoded x402 V2 payment header
121
167
  */
122
- async createPaymentHeader(amountMicroUnits, recipientAddress, resourceUrl) {
168
+ async createPaymentHeader(amountMicroUnits, recipientAddress, resourceUrl, networkOverride, settlementData) {
169
+ if (!isValidEthereumAddress(recipientAddress)) {
170
+ throw new Error(`Invalid recipient address: ${recipientAddress}`);
171
+ }
123
172
  const resource = resourceUrl || this.resourceUrl || this.getDefaultResourceUrl();
124
173
  const amountStr = Math.round(amountMicroUnits).toString();
174
+ // Resolve network for this payment (allows per-request override)
175
+ const network = networkOverride ? (0, networks_1.getNetwork)(networkOverride) : this.networkConfig;
176
+ // When using a per-request network override, always use that network's asset contract
177
+ const asset = networkOverride ? network.usdcContract : (this.assetOverride ?? network.usdcContract);
178
+ const chain = (0, networks_1.createChainDefinition)(network);
125
179
  // Create payment header using the secure key
126
180
  const header = await this.secureKey.use(async (privateKey) => {
127
181
  const account = (0, accounts_1.privateKeyToAccount)(privateKey);
@@ -129,22 +183,61 @@ class PaymentClient {
129
183
  const now = Math.floor(Date.now() / 1000);
130
184
  const validAfter = now - 60; // Valid from 60 seconds ago
131
185
  const validBefore = now + 60; // Valid until 60 seconds from now
132
- const nonce = generateNonce();
133
- // EIP-712 domain for USDC on PEAQ
186
+ // Use backend-provided settlement data or fall back to defaults
187
+ // CRITICAL: For x402x-router-settlement to work, we MUST use the values
188
+ // provided by the backend in the task_quote response
189
+ const salt = settlementData?.salt ?? generateNonce();
190
+ const facilitatorFee = settlementData?.facilitatorFee ?? "1000";
191
+ const hookData = (settlementData?.hookData ?? "0x");
192
+ const settlementRouter = settlementData?.settlementRouter ?? network.settlementRouter;
193
+ const hook = settlementData?.hook ?? network.transferHook;
194
+ // Calculate commitment hash (becomes the EIP-3009 nonce)
195
+ // This cryptographically binds all settlement parameters to the signature
196
+ const commitment = (0, viem_1.keccak256)((0, viem_1.encodePacked)([
197
+ "string", // Protocol identifier
198
+ "uint256", // Chain ID
199
+ "address", // Hub (settlementRouter)
200
+ "address", // Token (USDC)
201
+ "address", // From (payer)
202
+ "uint256", // Value
203
+ "uint256", // Valid after
204
+ "uint256", // Valid before
205
+ "bytes32", // Salt
206
+ "address", // Pay to (final recipient)
207
+ "uint256", // Facilitator fee
208
+ "address", // Hook
209
+ "bytes32" // keccak256(hookData)
210
+ ], [
211
+ "X402/settle/v1",
212
+ BigInt(chain.id),
213
+ settlementRouter,
214
+ asset,
215
+ account.address,
216
+ BigInt(amountStr),
217
+ BigInt(validAfter),
218
+ BigInt(validBefore),
219
+ salt,
220
+ recipientAddress,
221
+ BigInt(facilitatorFee),
222
+ hook,
223
+ (0, viem_1.keccak256)(hookData)
224
+ ]));
225
+ // EIP-712 domain using network-specific parameters
134
226
  const domain = {
135
- name: "USDC",
136
- version: "2",
137
- chainId: BigInt(peaq.id),
138
- verifyingContract: this.asset
227
+ name: network.eip712.name,
228
+ version: network.eip712.version,
229
+ chainId: BigInt(chain.id),
230
+ verifyingContract: asset
139
231
  };
140
232
  // ERC-3009 TransferWithAuthorization message
233
+ // x402x: "to" is settlementRouter, nonce is commitment hash
141
234
  const message = {
142
235
  from: account.address,
143
- to: recipientAddress,
236
+ to: settlementRouter, // Router receives funds first
144
237
  value: BigInt(amountStr),
145
238
  validAfter: BigInt(validAfter),
146
239
  validBefore: BigInt(validBefore),
147
- nonce: nonce
240
+ nonce: commitment // Commitment hash as nonce
148
241
  };
149
242
  // Sign the EIP-712 typed data
150
243
  const signature = await (0, accounts_1.signTypedData)({
@@ -158,15 +251,17 @@ class PaymentClient {
158
251
  const v1Payload = {
159
252
  authorization: {
160
253
  from: account.address,
161
- to: recipientAddress,
254
+ to: settlementRouter, // Router address
162
255
  value: amountStr,
163
256
  validAfter: validAfter.toString(),
164
257
  validBefore: validBefore.toString(),
165
- nonce: nonce
258
+ nonce: commitment // Commitment hash
166
259
  },
167
260
  signature: signature
168
261
  };
169
- // Build V2 payload (what the backend expects)
262
+ // Convert facilitator fee to hex format (required by facilitator)
263
+ const facilitatorFeeHex = `0x${BigInt(facilitatorFee).toString(16)}`;
264
+ // Build V2 payload with x402x-router-settlement extension
170
265
  const v2Payload = {
171
266
  x402Version: 2,
172
267
  resource: {
@@ -176,25 +271,51 @@ class PaymentClient {
176
271
  },
177
272
  accepted: {
178
273
  scheme: "exact",
179
- network: this.network,
274
+ network: network.caip2,
180
275
  amount: amountStr,
181
- asset: this.asset,
182
- payTo: recipientAddress,
276
+ asset: asset,
277
+ payTo: recipientAddress, // Final recipient (for display)
183
278
  maxTimeoutSeconds: 60,
184
- extra: { name: "USDC", version: "2" }
279
+ extra: {
280
+ name: network.eip712.name,
281
+ version: network.eip712.version,
282
+ // Settlement router info - MUST include all fields for facilitator
283
+ settlementRouter: settlementRouter,
284
+ salt: salt,
285
+ payTo: recipientAddress, // finalPayTo
286
+ facilitatorFee: facilitatorFeeHex, // Must be hex format
287
+ hook: hook,
288
+ hookData: hookData
289
+ }
185
290
  },
186
- payload: v1Payload
291
+ payload: v1Payload,
292
+ // x402x router settlement extension (v2 format)
293
+ extensions: {
294
+ "x402x-router-settlement": {
295
+ info: {
296
+ settlementRouter: settlementRouter,
297
+ hook: hook,
298
+ hookData: hookData,
299
+ facilitatorFee: facilitatorFeeHex, // Must be hex format
300
+ salt: salt,
301
+ finalPayTo: recipientAddress // Final recipient of the payment
302
+ }
303
+ }
304
+ }
187
305
  };
188
306
  return Buffer.from(JSON.stringify(v2Payload)).toString("base64");
189
307
  });
190
308
  return header;
191
309
  }
192
310
  /**
193
- * Get default x402 resource URL from WebSocket URL
311
+ * Get resource URL for x402 payments.
312
+ * Throws if no resource URL is configured.
194
313
  */
195
314
  getDefaultResourceUrl() {
196
- // Default fallback
197
- return "https://dev-rooms-websocket-ai-core-o9fmb.ondigitalocean.app/x402";
315
+ if (!this.resourceUrl) {
316
+ throw new Error("Resource URL not configured. Pass resourceUrl to PaymentClient or use buildX402ResourceUrl(wsUrl).");
317
+ }
318
+ return this.resourceUrl;
198
319
  }
199
320
  /**
200
321
  * Gets the wallet address associated with this payment client.
@@ -1 +1 @@
1
- {"version":3,"file":"payment-client.js","sourceRoot":"","sources":["../../src/payments/payment-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"payment-client.js","sourceRoot":"","sources":["../../src/payments/payment-client.ts"],"names":[],"mappings":"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"}