mppx 0.6.31 → 0.8.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.
Files changed (616) hide show
  1. package/CHANGELOG.md +50 -0
  2. package/README.md +20 -11
  3. package/dist/Challenge.d.ts.map +1 -1
  4. package/dist/Challenge.js +27 -13
  5. package/dist/Challenge.js.map +1 -1
  6. package/dist/Constants.d.ts +46 -0
  7. package/dist/Constants.d.ts.map +1 -0
  8. package/dist/Constants.js +46 -0
  9. package/dist/Constants.js.map +1 -0
  10. package/dist/Credential.d.ts.map +1 -1
  11. package/dist/Credential.js +5 -4
  12. package/dist/Credential.js.map +1 -1
  13. package/dist/Mcp.d.ts +3 -0
  14. package/dist/Mcp.d.ts.map +1 -1
  15. package/dist/Mcp.js +2 -0
  16. package/dist/Mcp.js.map +1 -1
  17. package/dist/Method.d.ts +32 -4
  18. package/dist/Method.d.ts.map +1 -1
  19. package/dist/Method.js +5 -2
  20. package/dist/Method.js.map +1 -1
  21. package/dist/PaymentRequest.d.ts +10 -10
  22. package/dist/PaymentRequest.js +8 -8
  23. package/dist/Receipt.d.ts.map +1 -1
  24. package/dist/Receipt.js +3 -2
  25. package/dist/Receipt.js.map +1 -1
  26. package/dist/cli/cli.d.ts.map +1 -1
  27. package/dist/cli/cli.js +19 -11
  28. package/dist/cli/cli.js.map +1 -1
  29. package/dist/cli/plugins/tempo.d.ts.map +1 -1
  30. package/dist/cli/plugins/tempo.js +17 -6
  31. package/dist/cli/plugins/tempo.js.map +1 -1
  32. package/dist/cli/utils.d.ts +5 -0
  33. package/dist/cli/utils.d.ts.map +1 -1
  34. package/dist/cli/utils.js +10 -0
  35. package/dist/cli/utils.js.map +1 -1
  36. package/dist/client/Methods.d.ts +5 -2
  37. package/dist/client/Methods.d.ts.map +1 -1
  38. package/dist/client/Methods.js +5 -2
  39. package/dist/client/Methods.js.map +1 -1
  40. package/dist/client/Mppx.js +2 -2
  41. package/dist/client/Mppx.js.map +1 -1
  42. package/dist/client/Transport.d.ts +11 -16
  43. package/dist/client/Transport.d.ts.map +1 -1
  44. package/dist/client/Transport.js +55 -76
  45. package/dist/client/Transport.js.map +1 -1
  46. package/dist/client/index.d.ts +5 -1
  47. package/dist/client/index.d.ts.map +1 -1
  48. package/dist/client/index.js +3 -1
  49. package/dist/client/index.js.map +1 -1
  50. package/dist/client/internal/Fetch.d.ts.map +1 -1
  51. package/dist/client/internal/Fetch.js +60 -13
  52. package/dist/client/internal/Fetch.js.map +1 -1
  53. package/dist/client/internal/protocols/Mcp.d.ts +7 -0
  54. package/dist/client/internal/protocols/Mcp.d.ts.map +1 -0
  55. package/dist/client/internal/protocols/Mcp.js +159 -0
  56. package/dist/client/internal/protocols/Mcp.js.map +1 -0
  57. package/dist/client/internal/protocols/Mpp.d.ts +4 -0
  58. package/dist/client/internal/protocols/Mpp.d.ts.map +1 -0
  59. package/dist/client/internal/protocols/Mpp.js +18 -0
  60. package/dist/client/internal/protocols/Mpp.js.map +1 -0
  61. package/dist/client/internal/protocols/Protocol.d.ts +10 -0
  62. package/dist/client/internal/protocols/Protocol.d.ts.map +1 -0
  63. package/dist/client/internal/protocols/Protocol.js +2 -0
  64. package/dist/client/internal/protocols/Protocol.js.map +1 -0
  65. package/dist/client/internal/protocols/Shared.d.ts +5 -0
  66. package/dist/client/internal/protocols/Shared.d.ts.map +1 -0
  67. package/dist/client/internal/protocols/Shared.js +20 -0
  68. package/dist/client/internal/protocols/Shared.js.map +1 -0
  69. package/dist/client/internal/protocols/X402.d.ts +8 -0
  70. package/dist/client/internal/protocols/X402.d.ts.map +1 -0
  71. package/dist/client/internal/protocols/X402.js +39 -0
  72. package/dist/client/internal/protocols/X402.js.map +1 -0
  73. package/dist/evm/client/index.d.ts +1 -0
  74. package/dist/evm/client/index.d.ts.map +1 -1
  75. package/dist/evm/client/index.js +1 -0
  76. package/dist/evm/client/index.js.map +1 -1
  77. package/dist/evm/index.d.ts +2 -0
  78. package/dist/evm/index.d.ts.map +1 -1
  79. package/dist/evm/index.js +2 -0
  80. package/dist/evm/index.js.map +1 -1
  81. package/dist/evm/server/Methods.d.ts +1 -1
  82. package/dist/evm/server/Methods.d.ts.map +1 -1
  83. package/dist/evm/server/index.d.ts +1 -0
  84. package/dist/evm/server/index.d.ts.map +1 -1
  85. package/dist/evm/server/index.js +1 -0
  86. package/dist/evm/server/index.js.map +1 -1
  87. package/dist/index.d.ts +1 -0
  88. package/dist/index.d.ts.map +1 -1
  89. package/dist/index.js +1 -0
  90. package/dist/index.js.map +1 -1
  91. package/dist/internal/AcceptPayment.d.ts +3 -0
  92. package/dist/internal/AcceptPayment.d.ts.map +1 -1
  93. package/dist/internal/AcceptPayment.js +15 -11
  94. package/dist/internal/AcceptPayment.js.map +1 -1
  95. package/dist/mcp/client/McpClient.d.ts +101 -0
  96. package/dist/mcp/client/McpClient.d.ts.map +1 -0
  97. package/dist/mcp/client/McpClient.js +162 -0
  98. package/dist/mcp/client/McpClient.js.map +1 -0
  99. package/dist/mcp/client/index.d.ts.map +1 -0
  100. package/dist/mcp/client/index.js.map +1 -0
  101. package/dist/mcp/server/Transport.d.ts.map +1 -0
  102. package/dist/mcp/server/Transport.js.map +1 -0
  103. package/dist/mcp/server/index.d.ts.map +1 -0
  104. package/dist/mcp/server/index.js.map +1 -0
  105. package/dist/server/Mppx.d.ts +12 -4
  106. package/dist/server/Mppx.d.ts.map +1 -1
  107. package/dist/server/Mppx.js +85 -27
  108. package/dist/server/Mppx.js.map +1 -1
  109. package/dist/server/Response.d.ts.map +1 -1
  110. package/dist/server/Response.js +2 -1
  111. package/dist/server/Response.js.map +1 -1
  112. package/dist/server/Transport.d.ts +1 -1
  113. package/dist/server/Transport.d.ts.map +1 -1
  114. package/dist/server/Transport.js +5 -4
  115. package/dist/server/Transport.js.map +1 -1
  116. package/dist/server/index.d.ts +1 -0
  117. package/dist/server/index.d.ts.map +1 -1
  118. package/dist/server/index.js +1 -0
  119. package/dist/server/index.js.map +1 -1
  120. package/dist/stripe/client/Charge.d.ts +1 -1
  121. package/dist/stripe/client/Charge.d.ts.map +1 -1
  122. package/dist/stripe/client/Charge.js +3 -1
  123. package/dist/stripe/client/Charge.js.map +1 -1
  124. package/dist/stripe/server/Charge.d.ts +1 -1
  125. package/dist/stripe/server/Charge.d.ts.map +1 -1
  126. package/dist/stripe/server/Charge.js +9 -2
  127. package/dist/stripe/server/Charge.js.map +1 -1
  128. package/dist/stripe/server/Methods.d.ts +1 -1
  129. package/dist/stripe/server/Methods.d.ts.map +1 -1
  130. package/dist/stripe/server/internal/html.gen.d.ts +1 -1
  131. package/dist/stripe/server/internal/html.gen.d.ts.map +1 -1
  132. package/dist/stripe/server/internal/html.gen.js +1 -1
  133. package/dist/stripe/server/internal/html.gen.js.map +1 -1
  134. package/dist/tempo/Methods.d.ts +18 -0
  135. package/dist/tempo/Methods.d.ts.map +1 -1
  136. package/dist/tempo/Methods.js +16 -1
  137. package/dist/tempo/Methods.js.map +1 -1
  138. package/dist/tempo/Proof.d.ts +85 -1
  139. package/dist/tempo/Proof.d.ts.map +1 -1
  140. package/dist/tempo/Proof.js +35 -0
  141. package/dist/tempo/Proof.js.map +1 -1
  142. package/dist/tempo/client/Charge.d.ts +19 -1
  143. package/dist/tempo/client/Charge.d.ts.map +1 -1
  144. package/dist/tempo/client/Charge.js +47 -27
  145. package/dist/tempo/client/Charge.js.map +1 -1
  146. package/dist/tempo/client/Methods.d.ts +41 -10
  147. package/dist/tempo/client/Methods.d.ts.map +1 -1
  148. package/dist/tempo/client/Methods.js +16 -7
  149. package/dist/tempo/client/Methods.js.map +1 -1
  150. package/dist/tempo/client/ResolveAccount.d.ts +40 -0
  151. package/dist/tempo/client/ResolveAccount.d.ts.map +1 -0
  152. package/dist/tempo/client/ResolveAccount.js +2 -0
  153. package/dist/tempo/client/ResolveAccount.js.map +1 -0
  154. package/dist/tempo/client/index.d.ts +7 -4
  155. package/dist/tempo/client/index.d.ts.map +1 -1
  156. package/dist/tempo/client/index.js +5 -3
  157. package/dist/tempo/client/index.js.map +1 -1
  158. package/dist/tempo/index.d.ts +1 -0
  159. package/dist/tempo/index.d.ts.map +1 -1
  160. package/dist/tempo/index.js +1 -0
  161. package/dist/tempo/index.js.map +1 -1
  162. package/dist/tempo/internal/fee-payer.d.ts +29 -1
  163. package/dist/tempo/internal/fee-payer.d.ts.map +1 -1
  164. package/dist/tempo/internal/fee-payer.js +138 -4
  165. package/dist/tempo/internal/fee-payer.js.map +1 -1
  166. package/dist/tempo/internal/proof.d.ts +71 -5
  167. package/dist/tempo/internal/proof.d.ts.map +1 -1
  168. package/dist/tempo/internal/proof.js +42 -6
  169. package/dist/tempo/internal/proof.js.map +1 -1
  170. package/dist/tempo/{client → legacy/client}/ChannelOps.d.ts +19 -6
  171. package/dist/tempo/legacy/client/ChannelOps.d.ts.map +1 -0
  172. package/dist/tempo/{client → legacy/client}/ChannelOps.js +9 -3
  173. package/dist/tempo/legacy/client/ChannelOps.js.map +1 -0
  174. package/dist/tempo/{client → legacy/client}/Session.d.ts +23 -4
  175. package/dist/tempo/legacy/client/Session.d.ts.map +1 -0
  176. package/dist/tempo/{client → legacy/client}/Session.js +14 -7
  177. package/dist/tempo/legacy/client/Session.js.map +1 -0
  178. package/dist/tempo/{client → legacy/client}/SessionManager.d.ts +20 -5
  179. package/dist/tempo/legacy/client/SessionManager.d.ts.map +1 -0
  180. package/dist/tempo/{client → legacy/client}/SessionManager.js +30 -19
  181. package/dist/tempo/legacy/client/SessionManager.js.map +1 -0
  182. package/dist/tempo/legacy/client/index.d.ts +7 -0
  183. package/dist/tempo/legacy/client/index.d.ts.map +1 -0
  184. package/dist/tempo/legacy/client/index.js +5 -0
  185. package/dist/tempo/legacy/client/index.js.map +1 -0
  186. package/dist/tempo/legacy/index.d.ts +7 -0
  187. package/dist/tempo/legacy/index.d.ts.map +1 -0
  188. package/dist/tempo/legacy/index.js +7 -0
  189. package/dist/tempo/legacy/index.js.map +1 -0
  190. package/dist/tempo/{server → legacy/server}/Session.d.ts +28 -11
  191. package/dist/tempo/legacy/server/Session.d.ts.map +1 -0
  192. package/dist/tempo/{server → legacy/server}/Session.js +12 -10
  193. package/dist/tempo/legacy/server/Session.js.map +1 -0
  194. package/dist/tempo/legacy/server/index.d.ts +5 -0
  195. package/dist/tempo/legacy/server/index.d.ts.map +1 -0
  196. package/dist/tempo/legacy/server/index.js +5 -0
  197. package/dist/tempo/legacy/server/index.js.map +1 -0
  198. package/dist/tempo/{session → legacy/session}/Chain.d.ts +30 -23
  199. package/dist/tempo/legacy/session/Chain.d.ts.map +1 -0
  200. package/dist/tempo/{session → legacy/session}/Chain.js +12 -11
  201. package/dist/tempo/legacy/session/Chain.js.map +1 -0
  202. package/dist/tempo/{session → legacy/session}/Channel.d.ts +1 -0
  203. package/dist/tempo/legacy/session/Channel.d.ts.map +1 -0
  204. package/dist/tempo/legacy/session/Channel.js.map +1 -0
  205. package/dist/tempo/legacy/session/ChannelStore.d.ts +22 -0
  206. package/dist/tempo/legacy/session/ChannelStore.d.ts.map +1 -0
  207. package/dist/tempo/legacy/session/ChannelStore.js +6 -0
  208. package/dist/tempo/legacy/session/ChannelStore.js.map +1 -0
  209. package/dist/tempo/legacy/session/Types.d.ts +73 -0
  210. package/dist/tempo/legacy/session/Types.d.ts.map +1 -0
  211. package/dist/tempo/legacy/session/Types.js.map +1 -0
  212. package/dist/tempo/{session → legacy/session}/Voucher.d.ts +4 -4
  213. package/dist/tempo/legacy/session/Voucher.d.ts.map +1 -0
  214. package/dist/tempo/{session → legacy/session}/Voucher.js +1 -1
  215. package/dist/tempo/legacy/session/Voucher.js.map +1 -0
  216. package/dist/tempo/{session → legacy/session}/escrow.abi.d.ts +1 -0
  217. package/dist/tempo/{session → legacy/session}/escrow.abi.d.ts.map +1 -1
  218. package/dist/tempo/{session → legacy/session}/escrow.abi.js +1 -0
  219. package/dist/tempo/legacy/session/escrow.abi.js.map +1 -0
  220. package/dist/tempo/legacy/session/index.d.ts +9 -0
  221. package/dist/tempo/legacy/session/index.d.ts.map +1 -0
  222. package/dist/tempo/legacy/session/index.js +9 -0
  223. package/dist/tempo/legacy/session/index.js.map +1 -0
  224. package/dist/tempo/server/Charge.d.ts +1 -1
  225. package/dist/tempo/server/Charge.d.ts.map +1 -1
  226. package/dist/tempo/server/Charge.js +51 -30
  227. package/dist/tempo/server/Charge.js.map +1 -1
  228. package/dist/tempo/server/Methods.d.ts +67 -8
  229. package/dist/tempo/server/Methods.d.ts.map +1 -1
  230. package/dist/tempo/server/Methods.js +40 -10
  231. package/dist/tempo/server/Methods.js.map +1 -1
  232. package/dist/tempo/server/Subscription.d.ts +11 -1
  233. package/dist/tempo/server/Subscription.d.ts.map +1 -1
  234. package/dist/tempo/server/Subscription.js +135 -23
  235. package/dist/tempo/server/Subscription.js.map +1 -1
  236. package/dist/tempo/server/index.d.ts +6 -5
  237. package/dist/tempo/server/index.d.ts.map +1 -1
  238. package/dist/tempo/server/index.js +5 -5
  239. package/dist/tempo/server/index.js.map +1 -1
  240. package/dist/tempo/server/internal/html.gen.d.ts +1 -1
  241. package/dist/tempo/server/internal/html.gen.d.ts.map +1 -1
  242. package/dist/tempo/server/internal/html.gen.js +1 -1
  243. package/dist/tempo/server/internal/html.gen.js.map +1 -1
  244. package/dist/tempo/server/internal/request-body.d.ts +7 -2
  245. package/dist/tempo/server/internal/request-body.d.ts.map +1 -1
  246. package/dist/tempo/server/internal/request-body.js +20 -3
  247. package/dist/tempo/server/internal/request-body.js.map +1 -1
  248. package/dist/tempo/server/internal/transport.d.ts +8 -4
  249. package/dist/tempo/server/internal/transport.d.ts.map +1 -1
  250. package/dist/tempo/server/internal/transport.js +8 -7
  251. package/dist/tempo/server/internal/transport.js.map +1 -1
  252. package/dist/tempo/session/Snapshot.d.ts +32 -0
  253. package/dist/tempo/session/Snapshot.d.ts.map +1 -0
  254. package/dist/tempo/session/Snapshot.js +37 -0
  255. package/dist/tempo/session/Snapshot.js.map +1 -0
  256. package/dist/tempo/session/client/ChannelOps.d.ts +81 -0
  257. package/dist/tempo/session/client/ChannelOps.d.ts.map +1 -0
  258. package/dist/tempo/session/client/ChannelOps.js +201 -0
  259. package/dist/tempo/session/client/ChannelOps.js.map +1 -0
  260. package/dist/tempo/session/client/ChannelStore.d.ts +51 -0
  261. package/dist/tempo/session/client/ChannelStore.d.ts.map +1 -0
  262. package/dist/tempo/session/client/ChannelStore.js +63 -0
  263. package/dist/tempo/session/client/ChannelStore.js.map +1 -0
  264. package/dist/tempo/session/client/CredentialState.d.ts +245 -0
  265. package/dist/tempo/session/client/CredentialState.d.ts.map +1 -0
  266. package/dist/tempo/session/client/CredentialState.js +419 -0
  267. package/dist/tempo/session/client/CredentialState.js.map +1 -0
  268. package/dist/tempo/session/client/ReceiptCoordinator.d.ts +26 -0
  269. package/dist/tempo/session/client/ReceiptCoordinator.d.ts.map +1 -0
  270. package/dist/tempo/session/client/ReceiptCoordinator.js +61 -0
  271. package/dist/tempo/session/client/ReceiptCoordinator.js.map +1 -0
  272. package/dist/tempo/session/client/Runtime.d.ts +464 -0
  273. package/dist/tempo/session/client/Runtime.d.ts.map +1 -0
  274. package/dist/tempo/session/client/Runtime.js +499 -0
  275. package/dist/tempo/session/client/Runtime.js.map +1 -0
  276. package/dist/tempo/session/client/Session.d.ts +138 -0
  277. package/dist/tempo/session/client/Session.d.ts.map +1 -0
  278. package/dist/tempo/session/client/Session.js +69 -0
  279. package/dist/tempo/session/client/Session.js.map +1 -0
  280. package/dist/tempo/session/client/SessionManager.d.ts +84 -0
  281. package/dist/tempo/session/client/SessionManager.d.ts.map +1 -0
  282. package/dist/tempo/session/client/SessionManager.js +577 -0
  283. package/dist/tempo/session/client/SessionManager.js.map +1 -0
  284. package/dist/tempo/session/client/Transports.d.ts +449 -0
  285. package/dist/tempo/session/client/Transports.d.ts.map +1 -0
  286. package/dist/tempo/session/client/Transports.js +721 -0
  287. package/dist/tempo/session/client/Transports.js.map +1 -0
  288. package/dist/tempo/session/client/index.d.ts +11 -0
  289. package/dist/tempo/session/client/index.d.ts.map +1 -0
  290. package/dist/tempo/session/client/index.js +6 -0
  291. package/dist/tempo/session/client/index.js.map +1 -0
  292. package/dist/tempo/session/index.d.ts +7 -8
  293. package/dist/tempo/session/index.d.ts.map +1 -1
  294. package/dist/tempo/session/index.js +7 -8
  295. package/dist/tempo/session/index.js.map +1 -1
  296. package/dist/tempo/session/precompile/Chain.d.ts +319 -0
  297. package/dist/tempo/session/precompile/Chain.d.ts.map +1 -0
  298. package/dist/tempo/session/precompile/Chain.js +492 -0
  299. package/dist/tempo/session/precompile/Chain.js.map +1 -0
  300. package/dist/tempo/session/precompile/Channel.d.ts +46 -0
  301. package/dist/tempo/session/precompile/Channel.d.ts.map +1 -0
  302. package/dist/tempo/session/precompile/Channel.js +56 -0
  303. package/dist/tempo/session/precompile/Channel.js.map +1 -0
  304. package/dist/tempo/session/precompile/Protocol.d.ts +308 -0
  305. package/dist/tempo/session/precompile/Protocol.d.ts.map +1 -0
  306. package/dist/tempo/session/precompile/Protocol.js +264 -0
  307. package/dist/tempo/session/precompile/Protocol.js.map +1 -0
  308. package/dist/tempo/session/precompile/Voucher.d.ts +40 -0
  309. package/dist/tempo/session/precompile/Voucher.d.ts.map +1 -0
  310. package/dist/tempo/session/precompile/Voucher.js +125 -0
  311. package/dist/tempo/session/precompile/Voucher.js.map +1 -0
  312. package/dist/tempo/session/precompile/escrow.abi.d.ts +522 -0
  313. package/dist/tempo/session/precompile/escrow.abi.d.ts.map +1 -0
  314. package/dist/tempo/session/precompile/escrow.abi.js +224 -0
  315. package/dist/tempo/session/precompile/escrow.abi.js.map +1 -0
  316. package/dist/tempo/session/precompile/index.d.ts +24 -0
  317. package/dist/tempo/session/precompile/index.d.ts.map +1 -0
  318. package/dist/tempo/session/precompile/index.js +22 -0
  319. package/dist/tempo/session/precompile/index.js.map +1 -0
  320. package/dist/tempo/session/server/ChannelOps.d.ts +56 -0
  321. package/dist/tempo/session/server/ChannelOps.d.ts.map +1 -0
  322. package/dist/tempo/session/server/ChannelOps.js +91 -0
  323. package/dist/tempo/session/server/ChannelOps.js.map +1 -0
  324. package/dist/tempo/session/server/ChannelStore.d.ts +347 -0
  325. package/dist/tempo/session/server/ChannelStore.d.ts.map +1 -0
  326. package/dist/tempo/session/server/ChannelStore.js +404 -0
  327. package/dist/tempo/session/server/ChannelStore.js.map +1 -0
  328. package/dist/tempo/session/server/CredentialVerification.d.ts +85 -0
  329. package/dist/tempo/session/server/CredentialVerification.d.ts.map +1 -0
  330. package/dist/tempo/session/server/CredentialVerification.js +494 -0
  331. package/dist/tempo/session/server/CredentialVerification.js.map +1 -0
  332. package/dist/tempo/session/server/MeteredStream.d.ts +40 -0
  333. package/dist/tempo/session/server/MeteredStream.d.ts.map +1 -0
  334. package/dist/tempo/session/server/MeteredStream.js +42 -0
  335. package/dist/tempo/session/server/MeteredStream.js.map +1 -0
  336. package/dist/tempo/session/server/RequestState.d.ts +208 -0
  337. package/dist/tempo/session/server/RequestState.d.ts.map +1 -0
  338. package/dist/tempo/session/server/RequestState.js +252 -0
  339. package/dist/tempo/session/server/RequestState.js.map +1 -0
  340. package/dist/tempo/session/server/Session.d.ts +169 -0
  341. package/dist/tempo/session/server/Session.d.ts.map +1 -0
  342. package/dist/tempo/session/server/Session.js +351 -0
  343. package/dist/tempo/session/server/Session.js.map +1 -0
  344. package/dist/tempo/session/server/Settlement.d.ts +185 -0
  345. package/dist/tempo/session/server/Settlement.d.ts.map +1 -0
  346. package/dist/tempo/session/server/Settlement.js +252 -0
  347. package/dist/tempo/session/server/Settlement.js.map +1 -0
  348. package/dist/tempo/session/{Sse.d.ts → server/Sse.d.ts} +9 -56
  349. package/dist/tempo/session/server/Sse.d.ts.map +1 -0
  350. package/dist/tempo/session/server/Sse.js +184 -0
  351. package/dist/tempo/session/server/Sse.js.map +1 -0
  352. package/dist/tempo/session/server/Transports.d.ts +89 -0
  353. package/dist/tempo/session/server/Transports.d.ts.map +1 -0
  354. package/dist/tempo/session/server/Transports.js +149 -0
  355. package/dist/tempo/session/server/Transports.js.map +1 -0
  356. package/dist/tempo/session/server/Ws.d.ts +48 -0
  357. package/dist/tempo/session/server/Ws.d.ts.map +1 -0
  358. package/dist/tempo/session/server/Ws.js +244 -0
  359. package/dist/tempo/session/server/Ws.js.map +1 -0
  360. package/dist/tempo/session/server/index.d.ts +4 -0
  361. package/dist/tempo/session/server/index.d.ts.map +1 -0
  362. package/dist/tempo/session/server/index.js +2 -0
  363. package/dist/tempo/session/server/index.js.map +1 -0
  364. package/dist/tempo/subscription/KeyAuthorization.d.ts +712 -1
  365. package/dist/tempo/subscription/KeyAuthorization.d.ts.map +1 -1
  366. package/dist/tempo/subscription/Store.d.ts +2 -0
  367. package/dist/tempo/subscription/Store.d.ts.map +1 -1
  368. package/dist/tempo/subscription/Store.js +16 -1
  369. package/dist/tempo/subscription/Store.js.map +1 -1
  370. package/dist/x402/index.d.ts +1 -0
  371. package/dist/x402/index.d.ts.map +1 -1
  372. package/dist/x402/index.js +1 -0
  373. package/dist/x402/index.js.map +1 -1
  374. package/package.json +25 -9
  375. package/src/Challenge.test.ts +40 -0
  376. package/src/Challenge.ts +28 -13
  377. package/src/Constants.ts +58 -0
  378. package/src/Credential.ts +5 -4
  379. package/src/Mcp.ts +4 -0
  380. package/src/Method.ts +46 -5
  381. package/src/PaymentRequest.ts +10 -10
  382. package/src/Receipt.ts +3 -2
  383. package/src/cli/cli.test.ts +38 -43
  384. package/src/cli/cli.ts +23 -10
  385. package/src/cli/mcp.test.ts +21 -7
  386. package/src/cli/plugins/tempo.ts +21 -8
  387. package/src/cli/utils.test.ts +25 -1
  388. package/src/cli/utils.ts +10 -0
  389. package/src/client/Methods.ts +5 -2
  390. package/src/client/Mppx.test-d.ts +31 -1
  391. package/src/client/Mppx.test.ts +76 -1
  392. package/src/client/Mppx.ts +2 -2
  393. package/src/client/Transport.test.ts +225 -178
  394. package/src/client/Transport.ts +77 -84
  395. package/src/client/index.ts +25 -1
  396. package/src/client/internal/Fetch.test.ts +236 -6
  397. package/src/client/internal/Fetch.ts +69 -11
  398. package/src/client/internal/protocols/Mcp.test.ts +220 -0
  399. package/src/client/internal/protocols/Mcp.ts +162 -0
  400. package/src/client/internal/protocols/Mpp.ts +21 -0
  401. package/src/client/internal/protocols/Protocol.ts +10 -0
  402. package/src/client/internal/protocols/Shared.ts +25 -0
  403. package/src/client/internal/protocols/X402.ts +42 -0
  404. package/src/discovery/OpenApi.test.ts +1 -1
  405. package/src/env.d.ts +1 -1
  406. package/src/evm/PublicInterface.test-d.ts +1 -1
  407. package/src/evm/client/index.ts +1 -0
  408. package/src/evm/index.ts +2 -0
  409. package/src/evm/server/Charge.test.ts +1 -1
  410. package/src/evm/server/index.ts +1 -0
  411. package/src/index.ts +1 -0
  412. package/src/internal/AcceptPayment.test.ts +61 -0
  413. package/src/internal/AcceptPayment.ts +21 -14
  414. package/src/{mcp-sdk → mcp}/client/McpClient.integration.test.ts +18 -11
  415. package/src/{mcp-sdk → mcp}/client/McpClient.test-d.ts +45 -11
  416. package/src/{mcp-sdk → mcp}/client/McpClient.test.ts +211 -5
  417. package/src/mcp/client/McpClient.ts +307 -0
  418. package/src/mcp/client/McpClient.unit.test.ts +135 -0
  419. package/src/middlewares/elysia.test.ts +9 -5
  420. package/src/middlewares/express.test.ts +9 -5
  421. package/src/middlewares/hono.test.ts +5 -5
  422. package/src/middlewares/internal/mppx.test.ts +1 -1
  423. package/src/middlewares/nextjs.test.ts +9 -5
  424. package/src/proxy/Proxy.test.ts +9 -9
  425. package/src/proxy/services/anthropic.test.ts +1 -1
  426. package/src/proxy/services/openai.test.ts +1 -1
  427. package/src/proxy/services/stripe.test.ts +1 -1
  428. package/src/server/Mppx.authorize.test.ts +1 -1
  429. package/src/server/Mppx.test-d.ts +55 -1
  430. package/src/server/Mppx.test.ts +220 -9
  431. package/src/server/Mppx.ts +501 -407
  432. package/src/server/Response.ts +2 -1
  433. package/src/server/Transport.test.ts +6 -6
  434. package/src/server/Transport.ts +5 -4
  435. package/src/server/index.ts +1 -0
  436. package/src/stripe/Charge.integration.test.ts +1 -1
  437. package/src/stripe/client/Charge.test.ts +21 -6
  438. package/src/stripe/client/Charge.ts +6 -2
  439. package/src/stripe/server/Charge.test.ts +115 -2
  440. package/src/stripe/server/Charge.ts +13 -2
  441. package/src/stripe/server/internal/html/package.json +1 -1
  442. package/src/stripe/server/internal/html.gen.ts +1 -1
  443. package/src/tempo/AccessKeyAuthorization.test.ts +4 -94
  444. package/src/tempo/Methods.test.ts +45 -17
  445. package/src/tempo/Methods.ts +22 -0
  446. package/src/tempo/Proof.conformance.test.ts +146 -0
  447. package/src/tempo/Proof.test-d.ts +15 -0
  448. package/src/tempo/Proof.ts +52 -1
  449. package/src/tempo/PublicExports.test-d.ts +105 -0
  450. package/src/tempo/Subscription.integration.test.ts +1 -1
  451. package/src/tempo/client/Charge.test.ts +258 -0
  452. package/src/tempo/client/Charge.ts +84 -38
  453. package/src/tempo/client/Methods.ts +22 -8
  454. package/src/tempo/client/ResolveAccount.ts +46 -0
  455. package/src/tempo/client/index.ts +15 -4
  456. package/src/tempo/index.ts +1 -0
  457. package/src/tempo/internal/fee-payer.test.ts +296 -17
  458. package/src/tempo/internal/fee-payer.ts +186 -4
  459. package/src/tempo/internal/fee-token.test.ts +14 -9
  460. package/src/tempo/internal/proof.test.ts +12 -4
  461. package/src/tempo/internal/proof.ts +55 -6
  462. package/src/tempo/legacy/AccessKeyAuthorization.test.ts +162 -0
  463. package/src/tempo/legacy/README.md +9 -0
  464. package/src/tempo/{client → legacy/client}/ChannelOps.test.ts +6 -7
  465. package/src/tempo/{client → legacy/client}/ChannelOps.ts +22 -9
  466. package/src/tempo/{client → legacy/client}/Session.test.ts +51 -9
  467. package/src/tempo/{client → legacy/client}/Session.ts +25 -11
  468. package/src/tempo/{client → legacy/client}/SessionManager.test.ts +81 -9
  469. package/src/tempo/{client → legacy/client}/SessionManager.ts +52 -23
  470. package/src/tempo/legacy/client/index.ts +6 -0
  471. package/src/tempo/legacy/index.ts +6 -0
  472. package/src/tempo/{server → legacy/server}/Session.test.ts +136 -71
  473. package/src/tempo/{server → legacy/server}/Session.ts +32 -23
  474. package/src/tempo/legacy/server/index.ts +4 -0
  475. package/src/tempo/{session → legacy/session}/Chain.test.ts +3 -4
  476. package/src/tempo/{session → legacy/session}/Chain.ts +94 -63
  477. package/src/tempo/{session → legacy/session}/Channel.ts +1 -0
  478. package/src/tempo/legacy/session/ChannelStore.test.ts +58 -0
  479. package/src/tempo/legacy/session/ChannelStore.ts +39 -0
  480. package/src/tempo/legacy/session/Types.ts +91 -0
  481. package/src/tempo/{session → legacy/session}/Voucher.ts +12 -8
  482. package/src/tempo/{session → legacy/session}/escrow.abi.ts +1 -0
  483. package/src/tempo/legacy/session/index.ts +8 -0
  484. package/src/tempo/server/AtomicStore.test-d.ts +16 -11
  485. package/src/tempo/server/Charge.test.ts +480 -31
  486. package/src/tempo/server/Charge.ts +54 -30
  487. package/src/tempo/server/Methods.ts +58 -10
  488. package/src/tempo/server/Sse.test.ts +2 -2
  489. package/src/tempo/server/Subscription.test.ts +465 -3
  490. package/src/tempo/server/Subscription.ts +174 -19
  491. package/src/tempo/server/index.ts +6 -5
  492. package/src/tempo/server/internal/html/package.json +2 -2
  493. package/src/tempo/server/internal/html.gen.ts +1 -1
  494. package/src/tempo/server/internal/request-body.test.ts +37 -4
  495. package/src/tempo/server/internal/request-body.ts +25 -6
  496. package/src/tempo/server/internal/transport.test.ts +4 -4
  497. package/src/tempo/server/internal/transport.ts +19 -10
  498. package/src/tempo/session/Snapshot.test.ts +41 -0
  499. package/src/tempo/session/Snapshot.ts +74 -0
  500. package/src/tempo/session/client/ChannelOps.test.ts +163 -0
  501. package/src/tempo/session/client/ChannelOps.ts +330 -0
  502. package/src/tempo/session/client/ChannelStore.ts +111 -0
  503. package/src/tempo/session/client/CredentialState.test.ts +789 -0
  504. package/src/tempo/session/client/CredentialState.ts +799 -0
  505. package/src/tempo/session/client/ReceiptCoordinator.ts +95 -0
  506. package/src/tempo/session/client/Runtime.test.ts +1092 -0
  507. package/src/tempo/session/client/Runtime.ts +986 -0
  508. package/src/tempo/session/client/Session.test.ts +774 -0
  509. package/src/tempo/session/client/Session.ts +123 -0
  510. package/src/tempo/session/client/SessionManager.test.ts +1397 -0
  511. package/src/tempo/session/client/SessionManager.ts +751 -0
  512. package/src/tempo/session/client/Transports.test.ts +837 -0
  513. package/src/tempo/session/client/Transports.ts +1292 -0
  514. package/src/tempo/session/client/index.ts +40 -0
  515. package/src/tempo/session/index.ts +7 -8
  516. package/src/tempo/session/precompile/Chain.integration.test.ts +321 -0
  517. package/src/tempo/session/precompile/Chain.test.ts +1258 -0
  518. package/src/tempo/session/precompile/Chain.ts +979 -0
  519. package/src/tempo/session/precompile/Channel.test.ts +138 -0
  520. package/src/tempo/session/precompile/Channel.ts +103 -0
  521. package/src/tempo/session/precompile/Protocol.test.ts +358 -0
  522. package/src/tempo/session/precompile/Protocol.ts +520 -0
  523. package/src/tempo/session/precompile/Voucher.test.ts +354 -0
  524. package/src/tempo/session/precompile/Voucher.ts +162 -0
  525. package/src/tempo/session/precompile/escrow.abi.ts +226 -0
  526. package/src/tempo/session/precompile/index.ts +33 -0
  527. package/src/tempo/session/server/ChannelOps.test.ts +129 -0
  528. package/src/tempo/session/server/ChannelOps.ts +157 -0
  529. package/src/tempo/session/{ChannelStore.test.ts → server/ChannelStore.test.ts} +536 -29
  530. package/src/tempo/session/server/ChannelStore.ts +835 -0
  531. package/src/tempo/session/server/CredentialVerification.test.ts +146 -0
  532. package/src/tempo/session/server/CredentialVerification.ts +710 -0
  533. package/src/tempo/session/server/MeteredStream.ts +88 -0
  534. package/src/tempo/session/server/RequestState.test.ts +531 -0
  535. package/src/tempo/session/server/RequestState.ts +499 -0
  536. package/src/tempo/session/server/Session.integration.test.ts +444 -0
  537. package/src/tempo/session/server/Session.test.ts +3253 -0
  538. package/src/tempo/session/server/Session.ts +543 -0
  539. package/src/tempo/session/server/Settlement.test.ts +329 -0
  540. package/src/tempo/session/server/Settlement.ts +471 -0
  541. package/src/tempo/session/{Sse.test.ts → server/Sse.test.ts} +37 -3
  542. package/src/tempo/session/server/Sse.ts +254 -0
  543. package/src/tempo/session/server/Transports.test.ts +346 -0
  544. package/src/tempo/session/server/Transports.ts +255 -0
  545. package/src/tempo/session/{Ws.test.ts → server/Ws.test.ts} +4 -4
  546. package/src/tempo/session/server/Ws.ts +380 -0
  547. package/src/tempo/session/server/index.ts +8 -0
  548. package/src/tempo/subscription/Store.ts +27 -9
  549. package/src/x402/Exact.e2e.test.ts +1 -1
  550. package/src/x402/PublicInterface.test-d.ts +1 -1
  551. package/src/x402/index.ts +1 -0
  552. package/dist/mcp-sdk/client/McpClient.d.ts +0 -78
  553. package/dist/mcp-sdk/client/McpClient.d.ts.map +0 -1
  554. package/dist/mcp-sdk/client/McpClient.js +0 -105
  555. package/dist/mcp-sdk/client/McpClient.js.map +0 -1
  556. package/dist/mcp-sdk/client/index.d.ts.map +0 -1
  557. package/dist/mcp-sdk/client/index.js.map +0 -1
  558. package/dist/mcp-sdk/server/Transport.d.ts.map +0 -1
  559. package/dist/mcp-sdk/server/Transport.js.map +0 -1
  560. package/dist/mcp-sdk/server/index.d.ts.map +0 -1
  561. package/dist/mcp-sdk/server/index.js.map +0 -1
  562. package/dist/tempo/client/ChannelOps.d.ts.map +0 -1
  563. package/dist/tempo/client/ChannelOps.js.map +0 -1
  564. package/dist/tempo/client/Session.d.ts.map +0 -1
  565. package/dist/tempo/client/Session.js.map +0 -1
  566. package/dist/tempo/client/SessionManager.d.ts.map +0 -1
  567. package/dist/tempo/client/SessionManager.js.map +0 -1
  568. package/dist/tempo/server/Session.d.ts.map +0 -1
  569. package/dist/tempo/server/Session.js.map +0 -1
  570. package/dist/tempo/session/Chain.d.ts.map +0 -1
  571. package/dist/tempo/session/Chain.js.map +0 -1
  572. package/dist/tempo/session/Channel.d.ts.map +0 -1
  573. package/dist/tempo/session/Channel.js.map +0 -1
  574. package/dist/tempo/session/ChannelStore.d.ts +0 -117
  575. package/dist/tempo/session/ChannelStore.d.ts.map +0 -1
  576. package/dist/tempo/session/ChannelStore.js +0 -172
  577. package/dist/tempo/session/ChannelStore.js.map +0 -1
  578. package/dist/tempo/session/Receipt.d.ts +0 -22
  579. package/dist/tempo/session/Receipt.d.ts.map +0 -1
  580. package/dist/tempo/session/Receipt.js +0 -34
  581. package/dist/tempo/session/Receipt.js.map +0 -1
  582. package/dist/tempo/session/Sse.d.ts.map +0 -1
  583. package/dist/tempo/session/Sse.js +0 -363
  584. package/dist/tempo/session/Sse.js.map +0 -1
  585. package/dist/tempo/session/Types.d.ts +0 -78
  586. package/dist/tempo/session/Types.d.ts.map +0 -1
  587. package/dist/tempo/session/Types.js.map +0 -1
  588. package/dist/tempo/session/Voucher.d.ts.map +0 -1
  589. package/dist/tempo/session/Voucher.js.map +0 -1
  590. package/dist/tempo/session/Ws.d.ts +0 -87
  591. package/dist/tempo/session/Ws.d.ts.map +0 -1
  592. package/dist/tempo/session/Ws.js +0 -443
  593. package/dist/tempo/session/Ws.js.map +0 -1
  594. package/dist/tempo/session/escrow.abi.js.map +0 -1
  595. package/src/mcp-sdk/client/McpClient.ts +0 -196
  596. package/src/tempo/session/ChannelStore.ts +0 -308
  597. package/src/tempo/session/Receipt.test.ts +0 -89
  598. package/src/tempo/session/Receipt.ts +0 -46
  599. package/src/tempo/session/Sse.ts +0 -462
  600. package/src/tempo/session/Types.ts +0 -86
  601. package/src/tempo/session/Ws.ts +0 -576
  602. /package/dist/{mcp-sdk → mcp}/client/index.d.ts +0 -0
  603. /package/dist/{mcp-sdk → mcp}/client/index.js +0 -0
  604. /package/dist/{mcp-sdk → mcp}/server/Transport.d.ts +0 -0
  605. /package/dist/{mcp-sdk → mcp}/server/Transport.js +0 -0
  606. /package/dist/{mcp-sdk → mcp}/server/index.d.ts +0 -0
  607. /package/dist/{mcp-sdk → mcp}/server/index.js +0 -0
  608. /package/dist/tempo/{session → legacy/session}/Channel.js +0 -0
  609. /package/dist/tempo/{session → legacy/session}/Types.js +0 -0
  610. /package/src/{mcp-sdk → mcp}/client/index.ts +0 -0
  611. /package/src/{mcp-sdk → mcp}/server/Transport.test.ts +0 -0
  612. /package/src/{mcp-sdk → mcp}/server/Transport.ts +0 -0
  613. /package/src/{mcp-sdk → mcp}/server/index.ts +0 -0
  614. /package/src/tempo/{session → legacy/session}/Channel.test.ts +0 -0
  615. /package/src/tempo/{session → legacy/session}/Voucher.test.ts +0 -0
  616. /package/src/tempo/session/{Sse.fuzz.test.ts → server/Sse.fuzz.test.ts} +0 -0
package/src/Method.ts CHANGED
@@ -59,6 +59,7 @@ export type Client<
59
59
  method extends Method = Method,
60
60
  context extends z.ZodMiniType | undefined = z.ZodMiniType | undefined,
61
61
  > = method & {
62
+ canHandleChallenge?: CanHandleChallengeFn | undefined
62
63
  context?: context
63
64
  createCredential: CreateCredentialFn<
64
65
  method,
@@ -130,18 +131,21 @@ export type Server<
130
131
  defaults extends ExactPartial<z.input<method['schema']['request']>> = {},
131
132
  transportOverride = undefined,
132
133
  extensions extends object = {},
134
+ alias extends string | undefined = string | undefined,
133
135
  > = method & {
136
+ alias?: alias | undefined
134
137
  authorize?: AuthorizeFn<method> | undefined
135
138
  defaults?: defaults | undefined
136
139
  extensions?: extensions | undefined
137
140
  html?: Html.Options | undefined
141
+ preflight?: PreflightFn<method> | undefined
138
142
  request?: RequestFn<method> | undefined
139
143
  respond?: RespondFn<method> | undefined
140
144
  stableBinding?: StableBindingFn<method> | undefined
141
145
  transport?: transportOverride | undefined
142
146
  verify: VerifyFn<method>
143
147
  }
144
- export type AnyServer = Server<any, any, any, any>
148
+ export type AnyServer = Server<any, any, any, any, any>
145
149
 
146
150
  /** Credential creation function for a single method. */
147
151
  export type CreateCredentialFn<method extends Method, context = unknown> = (
@@ -154,6 +158,9 @@ export type CreateCredentialFn<method extends Method, context = unknown> = (
154
158
  } & ([keyof context] extends [never] ? unknown : { context: context }),
155
159
  ) => Promise<string>
156
160
 
161
+ /** Predicate used when multiple client implementations share a wire method/intent. */
162
+ export type CanHandleChallengeFn = (parameters: { challenge: Challenge.Challenge }) => boolean
163
+
157
164
  /** Request transform function for a single method. */
158
165
  export type RequestFn<method extends Method> = (
159
166
  options: RequestContext<method>,
@@ -188,6 +195,22 @@ export type AuthorizeResult = {
188
195
  response?: globalThis.Response | undefined
189
196
  }
190
197
 
198
+ /**
199
+ * Optional HTTP preflight hook for method-specific management requests.
200
+ *
201
+ * Called before the normal challenge/verification path. Returning a response
202
+ * fully handles the request.
203
+ */
204
+ export type PreflightFn<method extends Method> = (parameters: {
205
+ capturedRequest?: CapturedRequest | undefined
206
+ credential: Credential.Credential | null
207
+ expires?: string | undefined
208
+ input: globalThis.Request
209
+ options: z.input<method['schema']['request']>
210
+ realm: string
211
+ secretKey: string
212
+ }) => MaybePromise<globalThis.Response | undefined>
213
+
191
214
  /**
192
215
  * Produces the stable request fields used to bind credentials to a route.
193
216
  *
@@ -252,9 +275,10 @@ export function toClient<
252
275
  const method extends Method,
253
276
  const context extends z.ZodMiniType | undefined = undefined,
254
277
  >(method: method, options: toClient.Options<method, context>): Client<method, context> {
255
- const { context, createCredential } = options
278
+ const { canHandleChallenge, context, createCredential } = options
256
279
  return {
257
280
  ...method,
281
+ canHandleChallenge,
258
282
  context,
259
283
  createCredential,
260
284
  } as Client<method, context>
@@ -262,6 +286,7 @@ export function toClient<
262
286
 
263
287
  export declare namespace toClient {
264
288
  type Options<method extends Method, context extends z.ZodMiniType | undefined = undefined> = {
289
+ canHandleChallenge?: CanHandleChallengeFn | undefined
265
290
  context?: context
266
291
  createCredential: CreateCredentialFn<
267
292
  method,
@@ -291,15 +316,24 @@ export function toServer<
291
316
  const defaults extends RequestDefaults<method> = {},
292
317
  const transportOverride extends Transport.AnyTransport | undefined = undefined,
293
318
  const extensions extends object = {},
319
+ const options extends toServer.Options<
320
+ method,
321
+ defaults,
322
+ transportOverride,
323
+ extensions,
324
+ string | undefined
325
+ > = toServer.Options<method, defaults, transportOverride, extensions, string | undefined>,
294
326
  >(
295
327
  method: method,
296
- options: toServer.Options<method, defaults, transportOverride, extensions>,
297
- ): Server<method, defaults, transportOverride, extensions> {
328
+ options: options,
329
+ ): Server<method, defaults, transportOverride, extensions, toServer.Alias<options>> {
298
330
  const {
331
+ alias,
299
332
  authorize,
300
333
  defaults,
301
334
  extensions,
302
335
  html,
336
+ preflight,
303
337
  request,
304
338
  respond,
305
339
  stableBinding,
@@ -308,29 +342,36 @@ export function toServer<
308
342
  } = options
309
343
  return {
310
344
  ...method,
345
+ alias,
311
346
  authorize,
312
347
  defaults,
313
348
  extensions,
314
349
  html,
350
+ preflight,
315
351
  request,
316
352
  respond,
317
353
  stableBinding,
318
354
  transport,
319
355
  verify,
320
- } as Server<method, defaults, transportOverride, extensions>
356
+ } as Server<method, defaults, transportOverride, extensions, toServer.Alias<options>>
321
357
  }
322
358
 
323
359
  export declare namespace toServer {
360
+ type Alias<options> = options extends { alias: infer alias extends string } ? alias : undefined
361
+
324
362
  type Options<
325
363
  method extends Method,
326
364
  defaults extends RequestDefaults<method> = {},
327
365
  transportOverride extends Transport.AnyTransport | undefined = undefined,
328
366
  extensions extends object = {},
367
+ alias extends string | undefined = undefined,
329
368
  > = {
369
+ alias?: alias | undefined
330
370
  authorize?: AuthorizeFn<method> | undefined
331
371
  defaults?: defaults | undefined
332
372
  extensions?: extensions | undefined
333
373
  html?: Html.Options | undefined
374
+ preflight?: PreflightFn<method> | undefined
334
375
  request?: RequestFn<method> | undefined
335
376
  respond?: RespondFn<method> | undefined
336
377
  stableBinding?: StableBindingFn<method> | undefined
@@ -9,9 +9,9 @@ import type * as z from './zod.js'
9
9
  *
10
10
  * @example
11
11
  * ```ts
12
- * import { Request } from 'mppx'
12
+ * import { PaymentRequest } from 'mppx'
13
13
  *
14
- * const request: Request.Request = {
14
+ * const request: PaymentRequest.Request = {
15
15
  * amount: '1000000',
16
16
  * currency: '0x20c0000000000000000000000000000000000001',
17
17
  * recipient: '0x742d35Cc6634C0532925a3b844Bc9e7595f8fE00',
@@ -29,9 +29,9 @@ export type Request<request extends Record<string, unknown> = Record<string, unk
29
29
  *
30
30
  * @example
31
31
  * ```ts
32
- * import { Request } from 'mppx'
32
+ * import { PaymentRequest } from 'mppx'
33
33
  *
34
- * const request = Request.deserialize(serialized)
34
+ * const request = PaymentRequest.deserialize(serialized)
35
35
  * ```
36
36
  */
37
37
  export function deserialize(encoded: string): Request {
@@ -47,9 +47,9 @@ export function deserialize(encoded: string): Request {
47
47
  *
48
48
  * @example
49
49
  * ```ts
50
- * import { Request } from 'mppx'
50
+ * import { PaymentRequest } from 'mppx'
51
51
  *
52
- * const request = Request.from({
52
+ * const request = PaymentRequest.from({
53
53
  * amount: '1000000',
54
54
  * currency: '0x20c0000000000000000000000000000000000001',
55
55
  * recipient: '0x742d35Cc6634C0532925a3b844Bc9e7595f8fE00',
@@ -69,10 +69,10 @@ export function from<const request extends Request>(request: request): request {
69
69
  *
70
70
  * @example
71
71
  * ```ts
72
- * import { Request } from 'mppx'
72
+ * import { PaymentRequest } from 'mppx'
73
73
  * import { Methods } from 'mppx/tempo'
74
74
  *
75
- * const request = Request.fromMethod(Methods.charge, {
75
+ * const request = PaymentRequest.fromMethod(Methods.charge, {
76
76
  * amount: '1000000',
77
77
  * currency: '0x20c0000000000000000000000000000000000001',
78
78
  * recipient: '0x742d35Cc6634C0532925a3b844Bc9e7595f8fE00',
@@ -96,9 +96,9 @@ export function fromMethod<const method extends Method.Method>(
96
96
  *
97
97
  * @example
98
98
  * ```ts
99
- * import { Request } from 'mppx'
99
+ * import { PaymentRequest } from 'mppx'
100
100
  *
101
- * const serialized = Request.serialize(request)
101
+ * const serialized = PaymentRequest.serialize(request)
102
102
  * // => "eyJhbW91bnQiOiIxMDAwMDAwIiwiY3VycmVuY3kiOiIweC4uLiJ9"
103
103
  * ```
104
104
  */
package/src/Receipt.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  import { Base64 } from 'ox'
2
2
 
3
+ import * as Constants from './Constants.js'
3
4
  import * as z from './zod.js'
4
5
 
5
6
  /**
@@ -126,7 +127,7 @@ export function serialize(receipt: Receipt): string {
126
127
  * ```
127
128
  */
128
129
  export function fromResponse(response: Response): Receipt {
129
- const header = response.headers.get('Payment-Receipt')
130
- if (!header) throw new Error('Missing Payment-Receipt header.')
130
+ const header = response.headers.get(Constants.Headers.paymentReceipt)
131
+ if (!header) throw new Error(`Missing ${Constants.Headers.paymentReceipt} header.`)
131
132
  return deserialize(header)
132
133
  }
@@ -4,16 +4,16 @@ import * as os from 'node:os'
4
4
  import * as path from 'node:path'
5
5
  import { pathToFileURL } from 'node:url'
6
6
 
7
- import { decodeFunctionData, erc20Abi, parseUnits, type Address } from 'viem'
7
+ import { decodeFunctionData, parseUnits, type Address } from 'viem'
8
8
  import { generatePrivateKey, privateKeyToAccount } from 'viem/accounts'
9
9
  import { Addresses, Transaction } from 'viem/tempo'
10
10
  import { afterAll, describe, expect, test } from 'vp/test'
11
11
  import * as Http from '~test/Http.js'
12
- import { rpcUrl } from '~test/tempo/prool.js'
13
- import { deployEscrow, escrowAbi } from '~test/tempo/session.js'
12
+ import { rpcUrl } from '~test/tempo/rpc.js'
14
13
  import { accounts, asset, chain, client, fundAccount } from '~test/tempo/viem.js'
15
14
 
16
15
  import * as Challenge from '../Challenge.js'
16
+ import * as Constants from '../Constants.js'
17
17
  import * as Credential from '../Credential.js'
18
18
  import * as Method from '../Method.js'
19
19
  import * as Receipt from '../Receipt.js'
@@ -22,7 +22,9 @@ import { toNodeListener } from '../server/Mppx.js'
22
22
  import * as Store from '../Store.js'
23
23
  import { stripe as stripe_server } from '../stripe/server/Methods.js'
24
24
  import { tempo } from '../tempo/server/Methods.js'
25
- import type { SessionCredentialPayload } from '../tempo/session/Types.js'
25
+ import { escrowAbi } from '../tempo/session/precompile/escrow.abi.js'
26
+ import { tip20ChannelEscrow } from '../tempo/session/precompile/Protocol.js'
27
+ import type { SessionCredentialPayload } from '../tempo/session/precompile/Protocol.js'
26
28
  import * as z from '../zod.js'
27
29
  import cli from './cli.js'
28
30
 
@@ -440,7 +442,7 @@ describe('basic charge (examples/basic)', () => {
440
442
  const server = Mppx_server.create({
441
443
  methods: [tempo.charge({ getClient: () => client })],
442
444
  realm: 'cli-test-basic',
443
- secretKey: 'cli-test-secret',
445
+ secretKey: 'cli-test-secret-cli-test-secret-32',
444
446
  })
445
447
 
446
448
  const httpServer = await Http.createServer(async (req, res) => {
@@ -482,7 +484,7 @@ describe('basic charge (examples/basic)', () => {
482
484
  const server = Mppx_server.create({
483
485
  methods: [unsupportedMethod, tempoMethod],
484
486
  realm: 'cli-test-multi-offer',
485
- secretKey: 'cli-test-secret',
487
+ secretKey: 'cli-test-secret-cli-test-secret-32',
486
488
  })
487
489
 
488
490
  const httpServer = await Http.createServer(async (req, res) => {
@@ -561,7 +563,7 @@ describe('basic charge (examples/basic)', () => {
561
563
  const server = Mppx_server.create({
562
564
  methods: [betaMethod, alphaMethod],
563
565
  realm: 'cli-test-config-offers',
564
- secretKey: 'cli-test-secret',
566
+ secretKey: 'cli-test-secret-cli-test-secret-32',
565
567
  })
566
568
 
567
569
  const configDir = fs.mkdtempSync(path.join(os.tmpdir(), 'mppx-cli-config-'))
@@ -665,7 +667,7 @@ export default defineConfig({
665
667
  const server = Mppx_server.create({
666
668
  methods: [tempo.charge({ getClient: () => client })],
667
669
  realm: 'localhost',
668
- secretKey: 'cli-test-secret',
670
+ secretKey: 'cli-test-secret-cli-test-secret-32',
669
671
  })
670
672
  let authorization: string | undefined
671
673
 
@@ -719,7 +721,7 @@ export default defineConfig({
719
721
  }),
720
722
  ],
721
723
  realm: 'localhost',
722
- secretKey: 'cli-test-secret',
724
+ secretKey: 'cli-test-secret-cli-test-secret-32',
723
725
  })
724
726
  let authorization: string | undefined
725
727
 
@@ -763,7 +765,7 @@ export default defineConfig({
763
765
  const server = Mppx_server.create({
764
766
  methods: [tempo.charge({ getClient: () => client })],
765
767
  realm: 'cli-test-no-account',
766
- secretKey: 'cli-test-secret',
768
+ secretKey: 'cli-test-secret-cli-test-secret-32',
767
769
  })
768
770
 
769
771
  const httpServer = await Http.createServer(async (req, res) => {
@@ -798,7 +800,7 @@ describe('session multi-fetch (examples/session/multi-fetch)', () => {
798
800
  await fundAccount({ address: testAccount.address, token: Addresses.pathUsd })
799
801
  await fundAccount({ address: testAccount.address, token: asset })
800
802
 
801
- const escrow = await deployEscrow()
803
+ const escrow = tip20ChannelEscrow
802
804
  const store = Store.memory()
803
805
  const server = Mppx_server.create({
804
806
  methods: [
@@ -814,7 +816,7 @@ describe('session multi-fetch (examples/session/multi-fetch)', () => {
814
816
  }),
815
817
  ],
816
818
  realm: 'cli-test-multifetch',
817
- secretKey: 'cli-test-secret',
819
+ secretKey: 'cli-test-secret-cli-test-secret-32',
818
820
  })
819
821
 
820
822
  const httpServer = await Http.createServer(async (req, res) => {
@@ -840,11 +842,11 @@ describe('session multi-fetch (examples/session/multi-fetch)', () => {
840
842
  }
841
843
  })
842
844
 
843
- test('prefers CLI deposit over server suggestedDeposit', { timeout: 120_000 }, async () => {
845
+ test('uses server suggestedDeposit within CLI max deposit', { timeout: 120_000 }, async () => {
844
846
  await fundAccount({ address: testAccount.address, token: Addresses.pathUsd })
845
847
  await fundAccount({ address: testAccount.address, token: asset })
846
848
 
847
- const escrow = await deployEscrow()
849
+ const escrow = tip20ChannelEscrow
848
850
  let openCredential: SessionCredentialPayload | undefined
849
851
 
850
852
  const httpServer = await Http.createServer(async (req, res) => {
@@ -867,6 +869,7 @@ describe('session multi-fetch (examples/session/multi-fetch)', () => {
867
869
  methodDetails: {
868
870
  chainId: chain.id,
869
871
  escrowContract: escrow,
872
+ sessionProtocol: Constants.SessionProtocols.v2,
870
873
  },
871
874
  },
872
875
  }),
@@ -897,27 +900,18 @@ describe('session multi-fetch (examples/session/multi-fetch)', () => {
897
900
 
898
901
  const transaction = Transaction.deserialize(openCredential.transaction)
899
902
  if (!('calls' in transaction)) throw new Error('unexpected transaction type')
900
- const [approveCall, openCall] = transaction.calls as readonly [
901
- { to?: Address; data?: `0x${string}` },
902
- { to?: Address; data?: `0x${string}` },
903
- ]
904
- const approve = decodeFunctionData({ abi: erc20Abi, data: approveCall.data ?? '0x' })
903
+ const [openCall] = transaction.calls as readonly [{ to?: Address; data?: `0x${string}` }]
905
904
  const open = decodeFunctionData({ abi: escrowAbi, data: openCall.data ?? '0x' })
906
- const approveArgs = approve.args as readonly [Address, bigint]
907
- const openArgs = open.args as readonly [Address, Address, bigint, string, Address]
908
-
909
- expect(approveCall.to).toBe(asset)
910
- expect(approve.functionName).toBe('approve')
911
- expect(approveArgs[0].toLowerCase()).toBe(escrow.toLowerCase())
912
- expect(approveArgs[1]).toBe(10_000_000n)
905
+ const openArgs = open.args as readonly [Address, Address, Address, bigint, string, Address]
913
906
 
914
907
  expect(openCall.to?.toLowerCase()).toBe(escrow.toLowerCase())
915
908
  expect(open.functionName).toBe('open')
916
909
  expect(openArgs[0].toLowerCase()).toBe(accounts[0].address.toLowerCase())
917
- expect(openArgs[1].toLowerCase()).toBe(asset.toLowerCase())
918
- expect(openArgs[2]).toBe(10_000_000n)
919
- expect(openArgs[3]).toEqual(expect.any(String))
920
- expect(openArgs[4].toLowerCase()).toBe(testAccount.address.toLowerCase())
910
+ expect(openArgs[1]).toBe('0x0000000000000000000000000000000000000000')
911
+ expect(openArgs[2].toLowerCase()).toBe(asset.toLowerCase())
912
+ expect(openArgs[3]).toBe(7_000_000n)
913
+ expect(openArgs[4]).toEqual(expect.any(String))
914
+ expect(openArgs[5].toLowerCase()).toBe(testAccount.address.toLowerCase())
921
915
  } finally {
922
916
  httpServer.close()
923
917
  }
@@ -927,7 +921,7 @@ describe('session multi-fetch (examples/session/multi-fetch)', () => {
927
921
  await fundAccount({ address: testAccount.address, token: Addresses.pathUsd })
928
922
  await fundAccount({ address: testAccount.address, token: asset })
929
923
 
930
- const escrow = await deployEscrow()
924
+ const escrow = tip20ChannelEscrow
931
925
  const store = Store.memory()
932
926
  const tickAmount = '0.001'
933
927
  const server = Mppx_server.create({
@@ -944,7 +938,7 @@ describe('session multi-fetch (examples/session/multi-fetch)', () => {
944
938
  }),
945
939
  ],
946
940
  realm: 'cli-test-double-charge',
947
- secretKey: 'cli-test-secret',
941
+ secretKey: 'cli-test-secret-cli-test-secret-32',
948
942
  })
949
943
 
950
944
  // Track voucher cumulative amounts from credential payloads
@@ -991,7 +985,7 @@ describe('session multi-fetch (examples/session/multi-fetch)', () => {
991
985
  await fundAccount({ address: testAccount.address, token: Addresses.pathUsd })
992
986
  await fundAccount({ address: testAccount.address, token: asset })
993
987
 
994
- const escrow = await deployEscrow()
988
+ const escrow = tip20ChannelEscrow
995
989
  const store = Store.memory()
996
990
  const server = Mppx_server.create({
997
991
  methods: [
@@ -1007,7 +1001,7 @@ describe('session multi-fetch (examples/session/multi-fetch)', () => {
1007
1001
  }),
1008
1002
  ],
1009
1003
  realm: 'cli-test-close-action',
1010
- secretKey: 'cli-test-secret',
1004
+ secretKey: 'cli-test-secret-cli-test-secret-32',
1011
1005
  })
1012
1006
 
1013
1007
  // Track the credential payload action from the close request
@@ -1069,7 +1063,7 @@ describe('session sse (examples/session/sse)', () => {
1069
1063
  await fundAccount({ address: testAccount.address, token: Addresses.pathUsd })
1070
1064
  await fundAccount({ address: testAccount.address, token: asset })
1071
1065
 
1072
- const escrow = await deployEscrow()
1066
+ const escrow = tip20ChannelEscrow
1073
1067
  const store = Store.memory()
1074
1068
  const server = Mppx_server.create({
1075
1069
  methods: [
@@ -1085,7 +1079,7 @@ describe('session sse (examples/session/sse)', () => {
1085
1079
  }),
1086
1080
  ],
1087
1081
  realm: 'cli-test-sse',
1088
- secretKey: 'cli-test-secret',
1082
+ secretKey: 'cli-test-secret-cli-test-secret-32',
1089
1083
  })
1090
1084
 
1091
1085
  const httpServer = await Http.createServer(async (req, res) => {
@@ -1152,7 +1146,7 @@ describe('stripe charge', () => {
1152
1146
  }),
1153
1147
  ],
1154
1148
  realm: 'cli-test-stripe',
1155
- secretKey: 'cli-test-secret',
1149
+ secretKey: 'cli-test-secret-cli-test-secret-32',
1156
1150
  })
1157
1151
 
1158
1152
  const sptServer = await Http.createServer(async (_req, res) => {
@@ -1192,7 +1186,7 @@ describe('stripe charge', () => {
1192
1186
  }),
1193
1187
  ],
1194
1188
  realm: 'cli-test-stripe-nokey',
1195
- secretKey: 'cli-test-secret',
1189
+ secretKey: 'cli-test-secret-cli-test-secret-32',
1196
1190
  })
1197
1191
 
1198
1192
  const appServer = await Http.createServer(async (req, res) => {
@@ -1225,7 +1219,7 @@ describe('stripe charge', () => {
1225
1219
  }),
1226
1220
  ],
1227
1221
  realm: 'cli-test-stripe-live',
1228
- secretKey: 'cli-test-secret',
1222
+ secretKey: 'cli-test-secret-cli-test-secret-32',
1229
1223
  })
1230
1224
 
1231
1225
  const appServer = await Http.createServer(async (req, res) => {
@@ -1251,9 +1245,10 @@ describe('stripe charge', () => {
1251
1245
 
1252
1246
  // ---------------------------------------------------------------------------
1253
1247
  // account [action]
1254
- // TODO: investigate account tests timing out in CI (secret-tool/gnome-keyring hangs)
1248
+ // Keychain tests are opt-in because macOS/Linux keychain commands can block on
1249
+ // developer machines without an unlocked keychain daemon.
1255
1250
  // ---------------------------------------------------------------------------
1256
- describe.skipIf(!!process.env.CI)('account', () => {
1251
+ describe.runIf(process.env.MPPX_TEST_KEYCHAIN === 'true')('account', () => {
1257
1252
  const binPath = path.resolve(import.meta.dirname, '../bin.ts')
1258
1253
  const cwd = path.resolve(import.meta.dirname, '../..')
1259
1254
  const accountEnv = {
@@ -1675,7 +1670,7 @@ export default defineConfig({
1675
1670
  const server = Mppx_server.create({
1676
1671
  methods: [tempo.charge({ getClient: () => client })],
1677
1672
  realm: 'cli-sign-zero',
1678
- secretKey: 'cli-test-secret',
1673
+ secretKey: 'cli-test-secret-cli-test-secret-32',
1679
1674
  })
1680
1675
 
1681
1676
  const httpServer = await Http.createServer(async (req, res) => {
@@ -1741,7 +1736,7 @@ export default defineConfig({
1741
1736
  }),
1742
1737
  ],
1743
1738
  realm: 'cli-sign-zero-testnet',
1744
- secretKey: 'cli-test-secret',
1739
+ secretKey: 'cli-test-secret-cli-test-secret-32',
1745
1740
  })
1746
1741
 
1747
1742
  const httpServer = await Http.createServer(async (req, res) => {
package/src/cli/cli.ts CHANGED
@@ -11,6 +11,7 @@ import { tempo as tempoMainnet } from 'viem/tempo/chains'
11
11
  import * as Challenge from '../Challenge.js'
12
12
  import { normalizeHeaders } from '../client/internal/Fetch.js'
13
13
  import * as Mppx from '../client/Mppx.js'
14
+ import * as Constants from '../Constants.js'
14
15
  import { validate as validateDiscovery } from '../discovery/Validate.js'
15
16
  import { createDefaultStore, createKeychain, resolveAccountName } from './account.js'
16
17
  import { loadConfig, resolveAcceptPayment, selectChallenge } from './internal.js'
@@ -32,6 +33,7 @@ import {
32
33
  printResponseHeaders,
33
34
  prompt,
34
35
  resolveChain,
36
+ resolveFundingNetwork,
35
37
  resolveRpcUrl,
36
38
  } from './utils.js'
37
39
 
@@ -373,7 +375,7 @@ const cli = Cli.create('mppx', {
373
375
  const { challenge, plugin, method: configMethod } = selected
374
376
  const selectedChallengeResponse = new Response(null, {
375
377
  status: 402,
376
- headers: { 'WWW-Authenticate': Challenge.serialize(challenge) },
378
+ headers: { [Constants.Headers.wwwAuthenticate]: Challenge.serialize(challenge) },
377
379
  })
378
380
 
379
381
  let tokenSymbol = (challenge.request.currency as string | undefined) ?? ''
@@ -547,7 +549,7 @@ const cli = Cli.create('mppx', {
547
549
 
548
550
  if (!handled) {
549
551
  // Default: print receipt + body
550
- const receiptHeader = credentialResponse.headers.get('Payment-Receipt')
552
+ const receiptHeader = credentialResponse.headers.get(Constants.Headers.paymentReceipt)
551
553
  if (receiptHeader && c.options.verbose >= 1) {
552
554
  try {
553
555
  const receiptJson = JSON.parse(Base64.toString(receiptHeader)) as Record<
@@ -704,8 +706,9 @@ const account = Cli.create('account', {
704
706
  const addrDisplay = explorerUrl
705
707
  ? link(`${explorerUrl}/address/${acct.address}`, acct.address)
706
708
  : acct.address
707
- const rpcUrl = resolveRpcUrl(c.options.rpcUrl, { network: c.options.network })
708
- resolveChain({ network: c.options.network, rpcUrl })
709
+ const fundingNetwork = resolveFundingNetwork(c.options)
710
+ const rpcUrl = resolveRpcUrl(c.options.rpcUrl, { network: fundingNetwork })
711
+ resolveChain({ network: fundingNetwork, rpcUrl })
709
712
  .then((chain) => createClient({ chain, transport: http(rpcUrl) }))
710
713
  .then((client) =>
711
714
  import('viem/tempo').then(({ Actions }) =>
@@ -715,6 +718,11 @@ const account = Cli.create('account', {
715
718
  return outputResult(c, { address: acct.address, name: resolvedName }, () => {
716
719
  console.log(`Account "${resolvedName}" saved to keychain.`)
717
720
  console.log(pc.dim(`Address ${addrDisplay}`))
721
+ console.log(
722
+ pc.dim(
723
+ `Fund testnet tokens: mppx account fund --account ${resolvedName} --network testnet`,
724
+ ),
725
+ )
718
726
  })
719
727
  },
720
728
  })
@@ -840,8 +848,9 @@ const account = Cli.create('account', {
840
848
  return c.error({ code: 'ACCOUNT_NOT_FOUND', message: 'No account found.', exitCode: 69 })
841
849
  }
842
850
  const acct = privateKeyToAccount(key as `0x${string}`)
843
- const rpcUrl = resolveRpcUrl(c.options.rpcUrl, { network: c.options.network })
844
- const chain = await resolveChain({ network: c.options.network, rpcUrl })
851
+ const fundingNetwork = resolveFundingNetwork(c.options)
852
+ const rpcUrl = resolveRpcUrl(c.options.rpcUrl, { network: fundingNetwork })
853
+ const chain = await resolveChain({ network: fundingNetwork, rpcUrl })
845
854
  const client = createClient({ chain, transport: http(rpcUrl) })
846
855
  if (!structured) console.log(`Funding "${accountName}" on ${chainName(chain)}`)
847
856
  try {
@@ -864,14 +873,18 @@ const account = Cli.create('account', {
864
873
  },
865
874
  )
866
875
  } catch (err) {
876
+ const message = err instanceof Error ? err.message : String(err)
867
877
  if (structured)
868
878
  return c.error({
869
879
  code: 'FUNDING_FAILED',
870
- message: err instanceof Error ? err.message : String(err),
880
+ message,
871
881
  exitCode: 1,
872
882
  })
873
- console.error('Funding failed:', err instanceof Error ? err.message : err)
874
- return undefined as never
883
+ return c.error({
884
+ code: 'FUNDING_FAILED',
885
+ message: `Funding failed: ${message}`,
886
+ exitCode: 1,
887
+ })
875
888
  }
876
889
  },
877
890
  })
@@ -1145,7 +1158,7 @@ const sign = Cli.create('sign', {
1145
1158
  const wwwAuth = Challenge.serialize(challenge)
1146
1159
  const fakeResponse = new Response(null, {
1147
1160
  status: 402,
1148
- headers: { 'WWW-Authenticate': wwwAuth },
1161
+ headers: { [Constants.Headers.wwwAuthenticate]: wwwAuth },
1149
1162
  })
1150
1163
 
1151
1164
  let credential: string
@@ -48,6 +48,14 @@ function createLineClient(child: ChildProcessWithoutNullStreams) {
48
48
  child.stderr.setEncoding('utf8')
49
49
  child.stdout.on('data', (chunk) => {
50
50
  buffer += chunk
51
+ drainLines()
52
+ drainJsonBuffer()
53
+ })
54
+ child.stderr.on('data', (chunk) => {
55
+ stderr += chunk
56
+ })
57
+
58
+ function drainLines() {
51
59
  for (;;) {
52
60
  const index = buffer.indexOf('\n')
53
61
  if (index === -1) break
@@ -60,10 +68,16 @@ function createLineClient(child: ChildProcessWithoutNullStreams) {
60
68
  nonJsonLines.push(line)
61
69
  }
62
70
  }
63
- })
64
- child.stderr.on('data', (chunk) => {
65
- stderr += chunk
66
- })
71
+ }
72
+
73
+ function drainJsonBuffer() {
74
+ const text = buffer.trim()
75
+ if (!text) return
76
+ try {
77
+ messages.push(JSON.parse(text))
78
+ buffer = ''
79
+ } catch {}
80
+ }
67
81
 
68
82
  return {
69
83
  get nonJsonLines() {
@@ -88,9 +102,9 @@ function createLineClient(child: ChildProcessWithoutNullStreams) {
88
102
  await new Promise((resolve) => setTimeout(resolve, 20))
89
103
  }
90
104
  throw new Error(
91
- `Timed out waiting for MCP response ${id}. stderr=${stderr} nonJson=${JSON.stringify(
92
- nonJsonLines,
93
- )}`,
105
+ `Timed out waiting for MCP response ${id}. stderr=${stderr} buffer=${JSON.stringify(
106
+ buffer,
107
+ )} nonJson=${JSON.stringify(nonJsonLines)}`,
94
108
  )
95
109
  },
96
110
  }