@agirails/sdk 3.2.0 → 3.4.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 (278) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +12 -14
  3. package/dist/ACTPClient.d.ts +8 -11
  4. package/dist/ACTPClient.d.ts.map +1 -1
  5. package/dist/ACTPClient.js +79 -20
  6. package/dist/ACTPClient.js.map +1 -1
  7. package/dist/__tests__/helpers/mockX402Server.d.ts +67 -0
  8. package/dist/__tests__/helpers/mockX402Server.d.ts.map +1 -0
  9. package/dist/__tests__/helpers/mockX402Server.js +121 -0
  10. package/dist/__tests__/helpers/mockX402Server.js.map +1 -0
  11. package/dist/adapters/BaseAdapter.d.ts +7 -1
  12. package/dist/adapters/BaseAdapter.d.ts.map +1 -1
  13. package/dist/adapters/BaseAdapter.js +11 -6
  14. package/dist/adapters/BaseAdapter.js.map +1 -1
  15. package/dist/adapters/BasicAdapter.d.ts.map +1 -1
  16. package/dist/adapters/BasicAdapter.js +12 -2
  17. package/dist/adapters/BasicAdapter.js.map +1 -1
  18. package/dist/adapters/StandardAdapter.d.ts.map +1 -1
  19. package/dist/adapters/StandardAdapter.js +12 -2
  20. package/dist/adapters/StandardAdapter.js.map +1 -1
  21. package/dist/adapters/X402Adapter.d.ts +161 -199
  22. package/dist/adapters/X402Adapter.d.ts.map +1 -1
  23. package/dist/adapters/X402Adapter.js +603 -414
  24. package/dist/adapters/X402Adapter.js.map +1 -1
  25. package/dist/adapters/index.d.ts +1 -1
  26. package/dist/adapters/index.d.ts.map +1 -1
  27. package/dist/adapters/index.js.map +1 -1
  28. package/dist/api/agirailsApp.d.ts +21 -1
  29. package/dist/api/agirailsApp.d.ts.map +1 -1
  30. package/dist/api/agirailsApp.js.map +1 -1
  31. package/dist/builders/CounterAcceptBuilder.d.ts +96 -0
  32. package/dist/builders/CounterAcceptBuilder.d.ts.map +1 -0
  33. package/dist/builders/CounterAcceptBuilder.js +226 -0
  34. package/dist/builders/CounterAcceptBuilder.js.map +1 -0
  35. package/dist/builders/CounterOfferBuilder.d.ts +143 -0
  36. package/dist/builders/CounterOfferBuilder.d.ts.map +1 -0
  37. package/dist/builders/CounterOfferBuilder.js +329 -0
  38. package/dist/builders/CounterOfferBuilder.js.map +1 -0
  39. package/dist/builders/DeliveryProofBuilder.d.ts.map +1 -1
  40. package/dist/builders/DeliveryProofBuilder.js +3 -2
  41. package/dist/builders/DeliveryProofBuilder.js.map +1 -1
  42. package/dist/builders/QuoteBuilder.d.ts.map +1 -1
  43. package/dist/builders/QuoteBuilder.js +8 -3
  44. package/dist/builders/QuoteBuilder.js.map +1 -1
  45. package/dist/builders/index.d.ts +2 -0
  46. package/dist/builders/index.d.ts.map +1 -1
  47. package/dist/builders/index.js +7 -1
  48. package/dist/builders/index.js.map +1 -1
  49. package/dist/cli/agirails.js +34 -6
  50. package/dist/cli/agirails.js.map +1 -1
  51. package/dist/cli/commands/autopublish.js +9 -1
  52. package/dist/cli/commands/autopublish.js.map +1 -1
  53. package/dist/cli/commands/config.js +1 -12
  54. package/dist/cli/commands/config.js.map +1 -1
  55. package/dist/cli/commands/deploy-env.js +1 -1
  56. package/dist/cli/commands/deploy-env.js.map +1 -1
  57. package/dist/cli/commands/diff.js +38 -4
  58. package/dist/cli/commands/diff.js.map +1 -1
  59. package/dist/cli/commands/health.js +24 -6
  60. package/dist/cli/commands/health.js.map +1 -1
  61. package/dist/cli/commands/init.d.ts +2 -0
  62. package/dist/cli/commands/init.d.ts.map +1 -1
  63. package/dist/cli/commands/init.js +100 -7
  64. package/dist/cli/commands/init.js.map +1 -1
  65. package/dist/cli/commands/pay.d.ts.map +1 -1
  66. package/dist/cli/commands/pay.js +23 -0
  67. package/dist/cli/commands/pay.js.map +1 -1
  68. package/dist/cli/commands/publish.d.ts +34 -0
  69. package/dist/cli/commands/publish.d.ts.map +1 -1
  70. package/dist/cli/commands/publish.js +266 -83
  71. package/dist/cli/commands/publish.js.map +1 -1
  72. package/dist/cli/commands/pull.js +3 -1
  73. package/dist/cli/commands/pull.js.map +1 -1
  74. package/dist/cli/commands/receipt.d.ts +17 -3
  75. package/dist/cli/commands/receipt.d.ts.map +1 -1
  76. package/dist/cli/commands/receipt.js +95 -33
  77. package/dist/cli/commands/receipt.js.map +1 -1
  78. package/dist/cli/commands/repair.d.ts +23 -0
  79. package/dist/cli/commands/repair.d.ts.map +1 -0
  80. package/dist/cli/commands/repair.js +210 -0
  81. package/dist/cli/commands/repair.js.map +1 -0
  82. package/dist/cli/commands/serve.d.ts +38 -0
  83. package/dist/cli/commands/serve.d.ts.map +1 -0
  84. package/dist/cli/commands/serve.js +308 -0
  85. package/dist/cli/commands/serve.js.map +1 -0
  86. package/dist/cli/commands/test.d.ts.map +1 -1
  87. package/dist/cli/commands/test.js +222 -60
  88. package/dist/cli/commands/test.js.map +1 -1
  89. package/dist/cli/commands/tx.js +13 -0
  90. package/dist/cli/commands/tx.js.map +1 -1
  91. package/dist/cli/index.js +9 -1
  92. package/dist/cli/index.js.map +1 -1
  93. package/dist/cli/receiptUpload.d.ts +52 -0
  94. package/dist/cli/receiptUpload.d.ts.map +1 -0
  95. package/dist/cli/receiptUpload.js +134 -0
  96. package/dist/cli/receiptUpload.js.map +1 -0
  97. package/dist/cli/utils/banner.d.ts +31 -0
  98. package/dist/cli/utils/banner.d.ts.map +1 -0
  99. package/dist/cli/utils/banner.js +92 -0
  100. package/dist/cli/utils/banner.js.map +1 -0
  101. package/dist/cli/utils/config.d.ts +0 -2
  102. package/dist/cli/utils/config.d.ts.map +1 -1
  103. package/dist/cli/utils/config.js +40 -25
  104. package/dist/cli/utils/config.js.map +1 -1
  105. package/dist/cli/utils/output.d.ts +2 -0
  106. package/dist/cli/utils/output.d.ts.map +1 -1
  107. package/dist/cli/utils/output.js +7 -1
  108. package/dist/cli/utils/output.js.map +1 -1
  109. package/dist/cli/utils/share.d.ts +51 -0
  110. package/dist/cli/utils/share.d.ts.map +1 -0
  111. package/dist/cli/utils/share.js +133 -0
  112. package/dist/cli/utils/share.js.map +1 -0
  113. package/dist/config/agirailsmd.d.ts.map +1 -1
  114. package/dist/config/agirailsmd.js +2 -1
  115. package/dist/config/agirailsmd.js.map +1 -1
  116. package/dist/config/agirailsmdV4.d.ts +46 -1
  117. package/dist/config/agirailsmdV4.d.ts.map +1 -1
  118. package/dist/config/agirailsmdV4.js +65 -8
  119. package/dist/config/agirailsmdV4.js.map +1 -1
  120. package/dist/config/defaults.d.ts +12 -2
  121. package/dist/config/defaults.d.ts.map +1 -1
  122. package/dist/config/defaults.js +19 -3
  123. package/dist/config/defaults.js.map +1 -1
  124. package/dist/config/networks.d.ts +7 -0
  125. package/dist/config/networks.d.ts.map +1 -1
  126. package/dist/config/networks.js +20 -11
  127. package/dist/config/networks.js.map +1 -1
  128. package/dist/config/pendingPublish.d.ts.map +1 -1
  129. package/dist/config/pendingPublish.js +10 -3
  130. package/dist/config/pendingPublish.js.map +1 -1
  131. package/dist/config/publishPipeline.d.ts +23 -1
  132. package/dist/config/publishPipeline.d.ts.map +1 -1
  133. package/dist/config/publishPipeline.js +70 -15
  134. package/dist/config/publishPipeline.js.map +1 -1
  135. package/dist/config/syncOperations.d.ts.map +1 -1
  136. package/dist/config/syncOperations.js +4 -2
  137. package/dist/config/syncOperations.js.map +1 -1
  138. package/dist/erc8004/ERC8004Bridge.d.ts.map +1 -1
  139. package/dist/erc8004/ERC8004Bridge.js +0 -1
  140. package/dist/erc8004/ERC8004Bridge.js.map +1 -1
  141. package/dist/errors/ACTPError.d.ts +24 -0
  142. package/dist/errors/ACTPError.d.ts.map +1 -0
  143. package/dist/errors/ACTPError.js +35 -0
  144. package/dist/errors/ACTPError.js.map +1 -0
  145. package/dist/errors/X402Errors.d.ts +106 -0
  146. package/dist/errors/X402Errors.d.ts.map +1 -0
  147. package/dist/errors/X402Errors.js +160 -0
  148. package/dist/errors/X402Errors.js.map +1 -0
  149. package/dist/errors/index.d.ts +3 -9
  150. package/dist/errors/index.d.ts.map +1 -1
  151. package/dist/errors/index.js +38 -33
  152. package/dist/errors/index.js.map +1 -1
  153. package/dist/index.d.ts +22 -1
  154. package/dist/index.d.ts.map +1 -1
  155. package/dist/index.js +41 -3
  156. package/dist/index.js.map +1 -1
  157. package/dist/level0/Provider.d.ts +5 -0
  158. package/dist/level0/Provider.d.ts.map +1 -1
  159. package/dist/level0/ServiceDirectory.d.ts.map +1 -1
  160. package/dist/level0/ServiceDirectory.js +3 -2
  161. package/dist/level0/ServiceDirectory.js.map +1 -1
  162. package/dist/level0/provide.d.ts.map +1 -1
  163. package/dist/level0/provide.js +11 -8
  164. package/dist/level0/provide.js.map +1 -1
  165. package/dist/level0/request.d.ts.map +1 -1
  166. package/dist/level0/request.js +14 -6
  167. package/dist/level0/request.js.map +1 -1
  168. package/dist/level1/Agent.d.ts +28 -1
  169. package/dist/level1/Agent.d.ts.map +1 -1
  170. package/dist/level1/Agent.js +89 -12
  171. package/dist/level1/Agent.js.map +1 -1
  172. package/dist/level1/pricing/PriceCalculator.d.ts.map +1 -1
  173. package/dist/level1/pricing/PriceCalculator.js +4 -12
  174. package/dist/level1/pricing/PriceCalculator.js.map +1 -1
  175. package/dist/negotiation/BuyerOrchestrator.d.ts +103 -1
  176. package/dist/negotiation/BuyerOrchestrator.d.ts.map +1 -1
  177. package/dist/negotiation/BuyerOrchestrator.js +499 -4
  178. package/dist/negotiation/BuyerOrchestrator.js.map +1 -1
  179. package/dist/negotiation/DecisionEngine.d.ts +69 -1
  180. package/dist/negotiation/DecisionEngine.d.ts.map +1 -1
  181. package/dist/negotiation/DecisionEngine.js +140 -1
  182. package/dist/negotiation/DecisionEngine.js.map +1 -1
  183. package/dist/negotiation/PolicyEngine.d.ts +32 -0
  184. package/dist/negotiation/PolicyEngine.d.ts.map +1 -1
  185. package/dist/negotiation/PolicyEngine.js.map +1 -1
  186. package/dist/negotiation/ProviderOrchestrator.d.ts +108 -0
  187. package/dist/negotiation/ProviderOrchestrator.d.ts.map +1 -0
  188. package/dist/negotiation/ProviderOrchestrator.js +136 -0
  189. package/dist/negotiation/ProviderOrchestrator.js.map +1 -0
  190. package/dist/negotiation/ProviderPolicy.d.ts +143 -0
  191. package/dist/negotiation/ProviderPolicy.d.ts.map +1 -0
  192. package/dist/negotiation/ProviderPolicy.js +207 -0
  193. package/dist/negotiation/ProviderPolicy.js.map +1 -0
  194. package/dist/negotiation/index.d.ts +8 -1
  195. package/dist/negotiation/index.d.ts.map +1 -1
  196. package/dist/negotiation/index.js +8 -1
  197. package/dist/negotiation/index.js.map +1 -1
  198. package/dist/negotiation/verifyQuoteOnChain.d.ts +58 -0
  199. package/dist/negotiation/verifyQuoteOnChain.d.ts.map +1 -0
  200. package/dist/negotiation/verifyQuoteOnChain.js +83 -0
  201. package/dist/negotiation/verifyQuoteOnChain.js.map +1 -0
  202. package/dist/protocol/ACTPKernel.d.ts +4 -1
  203. package/dist/protocol/ACTPKernel.d.ts.map +1 -1
  204. package/dist/protocol/ACTPKernel.js +2 -1
  205. package/dist/protocol/ACTPKernel.js.map +1 -1
  206. package/dist/protocol/EventMonitor.d.ts +27 -1
  207. package/dist/protocol/EventMonitor.d.ts.map +1 -1
  208. package/dist/protocol/EventMonitor.js +11 -9
  209. package/dist/protocol/EventMonitor.js.map +1 -1
  210. package/dist/protocol/ProofGenerator.d.ts.map +1 -1
  211. package/dist/protocol/ProofGenerator.js +3 -2
  212. package/dist/protocol/ProofGenerator.js.map +1 -1
  213. package/dist/runtime/BlockchainRuntime.d.ts +15 -0
  214. package/dist/runtime/BlockchainRuntime.d.ts.map +1 -1
  215. package/dist/runtime/BlockchainRuntime.js +42 -6
  216. package/dist/runtime/BlockchainRuntime.js.map +1 -1
  217. package/dist/runtime/IACTPRuntime.d.ts +35 -0
  218. package/dist/runtime/IACTPRuntime.d.ts.map +1 -1
  219. package/dist/runtime/MockRuntime.d.ts +14 -2
  220. package/dist/runtime/MockRuntime.d.ts.map +1 -1
  221. package/dist/runtime/MockRuntime.js +55 -22
  222. package/dist/runtime/MockRuntime.js.map +1 -1
  223. package/dist/runtime/types/MockState.d.ts +14 -0
  224. package/dist/runtime/types/MockState.d.ts.map +1 -1
  225. package/dist/runtime/types/MockState.js.map +1 -1
  226. package/dist/server/buildX402Server.d.ts +131 -0
  227. package/dist/server/buildX402Server.d.ts.map +1 -0
  228. package/dist/server/buildX402Server.js +151 -0
  229. package/dist/server/buildX402Server.js.map +1 -0
  230. package/dist/server/index.d.ts +33 -0
  231. package/dist/server/index.d.ts.map +1 -0
  232. package/dist/server/index.js +36 -0
  233. package/dist/server/index.js.map +1 -0
  234. package/dist/transport/QuoteChannel.d.ts +201 -0
  235. package/dist/transport/QuoteChannel.d.ts.map +1 -0
  236. package/dist/transport/QuoteChannel.js +358 -0
  237. package/dist/transport/QuoteChannel.js.map +1 -0
  238. package/dist/types/adapter.d.ts +64 -34
  239. package/dist/types/adapter.d.ts.map +1 -1
  240. package/dist/types/adapter.js +6 -1
  241. package/dist/types/adapter.js.map +1 -1
  242. package/dist/types/eip712.d.ts +20 -0
  243. package/dist/types/eip712.d.ts.map +1 -1
  244. package/dist/types/x402.d.ts +8 -8
  245. package/dist/utils/security.d.ts.map +1 -1
  246. package/dist/utils/security.js +4 -6
  247. package/dist/utils/security.js.map +1 -1
  248. package/dist/wallet/AutoWalletProvider.d.ts +45 -1
  249. package/dist/wallet/AutoWalletProvider.d.ts.map +1 -1
  250. package/dist/wallet/AutoWalletProvider.js +154 -1
  251. package/dist/wallet/AutoWalletProvider.js.map +1 -1
  252. package/dist/wallet/EOAWalletProvider.d.ts +13 -1
  253. package/dist/wallet/EOAWalletProvider.d.ts.map +1 -1
  254. package/dist/wallet/EOAWalletProvider.js +24 -0
  255. package/dist/wallet/EOAWalletProvider.js.map +1 -1
  256. package/dist/wallet/IWalletProvider.d.ts +34 -0
  257. package/dist/wallet/IWalletProvider.d.ts.map +1 -1
  258. package/dist/wallet/SmartWalletRouter.d.ts.map +1 -1
  259. package/dist/wallet/SmartWalletRouter.js +3 -1
  260. package/dist/wallet/SmartWalletRouter.js.map +1 -1
  261. package/dist/wallet/aa/BundlerClient.js +8 -4
  262. package/dist/wallet/aa/BundlerClient.js.map +1 -1
  263. package/dist/wallet/aa/DualNonceManager.d.ts +4 -1
  264. package/dist/wallet/aa/DualNonceManager.d.ts.map +1 -1
  265. package/dist/wallet/aa/DualNonceManager.js +3 -0
  266. package/dist/wallet/aa/DualNonceManager.js.map +1 -1
  267. package/dist/wallet/keystore.d.ts.map +1 -1
  268. package/dist/wallet/keystore.js +6 -4
  269. package/dist/wallet/keystore.js.map +1 -1
  270. package/package.json +31 -3
  271. package/dist/adapters/BeginnerAdapter.d.ts +0 -152
  272. package/dist/adapters/BeginnerAdapter.d.ts.map +0 -1
  273. package/dist/adapters/BeginnerAdapter.js +0 -168
  274. package/dist/adapters/BeginnerAdapter.js.map +0 -1
  275. package/dist/adapters/IntermediateAdapter.d.ts +0 -211
  276. package/dist/adapters/IntermediateAdapter.d.ts.map +0 -1
  277. package/dist/adapters/IntermediateAdapter.js +0 -260
  278. package/dist/adapters/IntermediateAdapter.js.map +0 -1
@@ -3,6 +3,11 @@
3
3
  *
4
4
  * Renders the test earning receipt in human, json, and quiet modes.
5
5
  *
6
+ * Two renderers:
7
+ * - renderReceiptV2() — new design: double-line box, "FIRST TRANSACTION RECEIPT",
8
+ * fee breakdown (Amount / Fee / Net), network variants (mock/testnet/mainnet).
9
+ * - renderReceipt() — backward-compatible wrapper around V2. Marked @deprecated.
10
+ *
6
11
  * @module cli/commands/receipt
7
12
  */
8
13
  import { Output } from '../utils/output';
@@ -19,13 +24,22 @@ export interface ReceiptData {
19
24
  network: string;
20
25
  txId: string;
21
26
  timing?: ReceiptTiming;
27
+ /** Optional: Ethereum on-chain tx hash (testnet/mainnet only) */
28
+ ethTxHash?: string;
29
+ /** Optional: requester address (falls back to "requester-agent" string) */
30
+ requester?: string;
22
31
  }
23
32
  /**
24
- * Render an earnings receipt.
33
+ * Render an earnings receipt (V2 design).
25
34
  *
26
- * Human mode: box-drawing receipt matching PRD spec.
27
- * JSON mode: structured object.
35
+ * Human mode: double-line outer box, inner card with fee breakdown, network-aware variants.
36
+ * JSON mode: structured object including fee breakdown.
28
37
  * Quiet mode: net earnings amount only.
29
38
  */
39
+ export declare function renderReceiptV2(data: ReceiptData, output: Output): void;
40
+ /**
41
+ * @deprecated Use renderReceiptV2 instead. Kept for backward compatibility.
42
+ * Will be removed in the next major SDK version.
43
+ */
30
44
  export declare function renderReceipt(data: ReceiptData, output: Output): void;
31
45
  //# sourceMappingURL=receipt.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"receipt.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/receipt.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,MAAM,EAAO,MAAM,iBAAiB,CAAC;AAO9C,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,sCAAsC;IACtC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,aAAa,CAAC;CACxB;AAoBD;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAsDrE"}
1
+ {"version":3,"file":"receipt.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/receipt.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,MAAM,EAAO,MAAM,iBAAiB,CAAC;AAO9C,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,sCAAsC;IACtC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,iEAAiE;IACjE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,2EAA2E;IAC3E,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AA+BD;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CA+GvE;AAMD;;;GAGG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAErE"}
@@ -4,10 +4,15 @@
4
4
  *
5
5
  * Renders the test earning receipt in human, json, and quiet modes.
6
6
  *
7
+ * Two renderers:
8
+ * - renderReceiptV2() — new design: double-line box, "FIRST TRANSACTION RECEIPT",
9
+ * fee breakdown (Amount / Fee / Net), network variants (mock/testnet/mainnet).
10
+ * - renderReceipt() — backward-compatible wrapper around V2. Marked @deprecated.
11
+ *
7
12
  * @module cli/commands/receipt
8
13
  */
9
14
  Object.defineProperty(exports, "__esModule", { value: true });
10
- exports.renderReceipt = void 0;
15
+ exports.renderReceipt = exports.renderReceiptV2 = void 0;
11
16
  const output_1 = require("../utils/output");
12
17
  const defaults_1 = require("../../config/defaults");
13
18
  // ============================================================================
@@ -22,22 +27,35 @@ function formatTxId(txId) {
22
27
  return txId;
23
28
  return `${txId.slice(0, 8)}...${txId.slice(-4)}`;
24
29
  }
30
+ function formatEthHash(hash) {
31
+ if (hash.length <= 14)
32
+ return hash;
33
+ return `${hash.slice(0, 8)}...${hash.slice(-4)}`;
34
+ }
35
+ /** Strip ANSI escape codes for length calculation */
36
+ function stripAnsi(s) {
37
+ // eslint-disable-next-line no-control-regex
38
+ return s.replace(/\x1b\[[0-9;]*m/g, '');
39
+ }
25
40
  // ============================================================================
26
- // Renderer
41
+ // V2 Renderer — new design
27
42
  // ============================================================================
28
43
  /**
29
- * Render an earnings receipt.
44
+ * Render an earnings receipt (V2 design).
30
45
  *
31
- * Human mode: box-drawing receipt matching PRD spec.
32
- * JSON mode: structured object.
46
+ * Human mode: double-line outer box, inner card with fee breakdown, network-aware variants.
47
+ * JSON mode: structured object including fee breakdown.
33
48
  * Quiet mode: net earnings amount only.
34
49
  */
35
- function renderReceipt(data, output) {
50
+ function renderReceiptV2(data, output) {
36
51
  const fee = (0, defaults_1.computeDisplayFee)(data.amountWei);
37
52
  const net = data.amountWei - fee;
38
53
  const feePercent = data.amountWei > 0n
39
54
  ? ((Number(fee) / Number(data.amountWei)) * 100).toFixed(0)
40
55
  : '0';
56
+ const network = (data.network || 'mock').toLowerCase();
57
+ const isTestnet = network.includes('testnet') || network.includes('sepolia');
58
+ const isMainnet = network === 'mainnet' || network === 'base-mainnet';
41
59
  // JSON mode
42
60
  if (output.mode === 'json') {
43
61
  output.result({
@@ -49,6 +67,7 @@ function renderReceipt(data, output) {
49
67
  net: formatUsdc(net),
50
68
  network: data.network,
51
69
  txId: data.txId,
70
+ ...(data.ethTxHash ? { ethTxHash: data.ethTxHash } : {}),
52
71
  ...(data.timing ? { timing: data.timing } : {}),
53
72
  });
54
73
  return;
@@ -58,35 +77,78 @@ function renderReceipt(data, output) {
58
77
  output.print(formatUsdc(net));
59
78
  return;
60
79
  }
61
- // Human mode: box-drawing receipt
62
- const w = 47; // inner width
63
- const pad = (s) => s + ' '.repeat(Math.max(0, w - stripAnsi(s).length));
64
- const line = (s) => output.print(`${output_1.fmt.dim('│')} ${pad(s)}${output_1.fmt.dim('│')}`);
65
- const empty = () => line('');
66
- output.print(output_1.fmt.dim(`┌${'─'.repeat(w + 2)}┐`));
67
- line(output_1.fmt.green(output_1.fmt.bold('✓ EARNINGS RECEIPT')));
68
- empty();
69
- line(`Agent: ${output_1.fmt.bold(data.agent)}`);
70
- line(`Service: ${data.service}`);
71
- line(`Earned: ${output_1.fmt.bold(formatUsdc(data.amountWei))}`);
72
- line(`Fee: ${formatUsdc(fee)} (${feePercent}%)`);
73
- line(`Net: ${output_1.fmt.green(output_1.fmt.bold(formatUsdc(net)))}`);
74
- line(`Network: ${data.network}`);
75
- line(`Tx: ${formatTxId(data.txId)}`);
80
+ // Human mode: double-line outer box with inner card
81
+ // Alignment: outer frame total width = outerWidth + 4
82
+ // Inner content line total width = innerWidth + 15 ( +3sp +│ +2sp +content +│ +6sp +║)
83
+ // For alignment: innerWidth = outerWidth - 11
84
+ const outerWidth = 54;
85
+ const innerWidth = outerWidth - 11; // = 43
86
+ const outerPad = (s) => s + ' '.repeat(Math.max(0, outerWidth - stripAnsi(s).length));
87
+ const innerPad = (s) => s + ' '.repeat(Math.max(0, innerWidth - stripAnsi(s).length));
88
+ const outerLine = (s) => output.print(`${output_1.fmt.cyan('║')} ${outerPad(s)}${output_1.fmt.cyan('║')}`);
89
+ const outerEmpty = () => outerLine('');
90
+ const innerLine = (s) => output.print(`${output_1.fmt.cyan('║')} ${output_1.fmt.dim('│')} ${innerPad(s)}${output_1.fmt.dim('│')} ${output_1.fmt.cyan('║')}`);
91
+ const horiz = output_1.fmt.cyan('═'.repeat(outerWidth + 2));
92
+ // Header — varies by network
93
+ const headerText = isMainnet
94
+ ? 'FIRST MAINNET SETTLEMENT'
95
+ : 'FIRST TRANSACTION RECEIPT';
96
+ // Tagline — varies by network
97
+ const taglineLine1 = isMainnet
98
+ ? 'This is real money. On a real blockchain.'
99
+ : 'Your agent just earned its first payment.';
100
+ const taglineLine2 = isMainnet
101
+ ? 'Your agent is in the economy.'
102
+ : 'Autonomously. Trustlessly. In under 60 seconds.';
103
+ // Top frame
104
+ output.print(`${output_1.fmt.cyan('╔')}${horiz}${output_1.fmt.cyan('╗')}`);
105
+ outerEmpty();
106
+ outerLine(`${output_1.fmt.cyan('◬')} ${output_1.fmt.bold(headerText)}`);
107
+ outerEmpty();
108
+ outerLine(`${output_1.fmt.bold(data.agent)} earned ${output_1.fmt.green(output_1.fmt.bold(formatUsdc(net)))}`);
109
+ outerEmpty();
110
+ // Inner card top — ─ count = innerWidth + 2 to span full inside width
111
+ output.print(`${output_1.fmt.cyan('║')} ${output_1.fmt.dim('┌' + '─'.repeat(innerWidth + 2) + '┐')} ${output_1.fmt.cyan('║')}`);
112
+ // Inner card content
113
+ const requesterLabel = data.requester
114
+ ? formatEthHash(data.requester)
115
+ : 'requester-agent';
116
+ innerLine(`${output_1.fmt.label('From')} ${requesterLabel}`);
117
+ innerLine(`${output_1.fmt.label('To')} ${data.agent}`);
118
+ innerLine(`${output_1.fmt.label('Amount')} ${formatUsdc(data.amountWei)}`);
119
+ innerLine(`${output_1.fmt.label('Fee')} ${formatUsdc(fee)} (${feePercent}%)`);
120
+ innerLine(`${output_1.fmt.label('Net')} ${output_1.fmt.green(formatUsdc(net))}`);
121
+ innerLine(`${output_1.fmt.label('Service')} ${data.service}`);
122
+ innerLine(`${output_1.fmt.label('Status')} ${output_1.fmt.green('SETTLED ✓')}`);
76
123
  if (data.timing) {
77
- line(`Time: ${data.timing.totalMs}ms (escrow ${data.timing.escrowLockMs}ms, settle ${data.timing.settlementMs}ms)`);
124
+ innerLine(`${output_1.fmt.label('Duration')} ${data.timing.totalMs}ms`);
78
125
  }
79
- empty();
80
- line(output_1.fmt.bold("WHAT'S NEXT"));
81
- line('• Edit agent.ts with your logic');
82
- line(' Say "switch to testnet" when ready');
83
- line('• Say "publish" to go live');
84
- output.print(output_1.fmt.dim(`└${''.repeat(w + 2)}┘`));
126
+ innerLine(`${output_1.fmt.label('Network')} ${data.network}`);
127
+ // Testnet/mainnet: add on-chain proof lines
128
+ if ((isTestnet || isMainnet) && data.ethTxHash) {
129
+ innerLine(`${output_1.fmt.label('Eth Tx')} ${formatEthHash(data.ethTxHash)}`);
130
+ const scanBase = isMainnet ? 'basescan.org' : 'sepolia.basescan.org';
131
+ innerLine(`${output_1.fmt.label('Verify')} ${scanBase}/tx/${data.ethTxHash.slice(0, 8)}...`);
132
+ }
133
+ innerLine(`${output_1.fmt.label('Time')} ${new Date().toISOString().replace('T', ' ').slice(0, 19)} UTC`);
134
+ // Inner card bottom
135
+ output.print(`${output_1.fmt.cyan('║')} ${output_1.fmt.dim('└' + '─'.repeat(innerWidth + 2) + '┘')} ${output_1.fmt.cyan('║')}`);
136
+ outerEmpty();
137
+ outerLine(taglineLine1);
138
+ outerLine(taglineLine2);
139
+ outerEmpty();
140
+ output.print(`${output_1.fmt.cyan('╚')}${horiz}${output_1.fmt.cyan('╝')}`);
85
141
  }
86
- exports.renderReceipt = renderReceipt;
87
- /** Strip ANSI escape codes for length calculation */
88
- function stripAnsi(s) {
89
- // eslint-disable-next-line no-control-regex
90
- return s.replace(/\x1b\[[0-9;]*m/g, '');
142
+ exports.renderReceiptV2 = renderReceiptV2;
143
+ // ============================================================================
144
+ // V1 Renderer — backward-compatible wrapper
145
+ // ============================================================================
146
+ /**
147
+ * @deprecated Use renderReceiptV2 instead. Kept for backward compatibility.
148
+ * Will be removed in the next major SDK version.
149
+ */
150
+ function renderReceipt(data, output) {
151
+ renderReceiptV2(data, output);
91
152
  }
153
+ exports.renderReceipt = renderReceipt;
92
154
  //# sourceMappingURL=receipt.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"receipt.js","sourceRoot":"","sources":["../../../src/cli/commands/receipt.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"receipt.js","sourceRoot":"","sources":["../../../src/cli/commands/receipt.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Repair Command — reshape an already-on-chain agent without redeploying.
3
+ *
4
+ * Use cases:
5
+ * - Drop a phantom service registered by an earlier misshape (e.g. a
6
+ * pay-only agent that was registered as `code-review` provider before
7
+ * the intent-aware publish flow existed).
8
+ * - Update the on-chain endpoint to a real HTTPS URL after wiring a
9
+ * webhook for x402 / off-protocol intake.
10
+ * - Toggle isActive / listed flags to hide from public discovery.
11
+ *
12
+ * Wraps existing AgentRegistry SDK methods; this command is the user-
13
+ * facing surface that explains what's about to change and asks for
14
+ * confirmation before sending the tx.
15
+ *
16
+ * Deliberately does NOT expose `deregisterAgent` — destructive ops that
17
+ * forfeit reputation belong in a separate command with bigger guards.
18
+ *
19
+ * @module cli/commands/repair
20
+ */
21
+ import { Command } from 'commander';
22
+ export declare function createRepairCommand(): Command;
23
+ //# sourceMappingURL=repair.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repair.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/repair.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAcpC,wBAAgB,mBAAmB,IAAI,OAAO,CA0B7C"}
@@ -0,0 +1,210 @@
1
+ "use strict";
2
+ /**
3
+ * Repair Command — reshape an already-on-chain agent without redeploying.
4
+ *
5
+ * Use cases:
6
+ * - Drop a phantom service registered by an earlier misshape (e.g. a
7
+ * pay-only agent that was registered as `code-review` provider before
8
+ * the intent-aware publish flow existed).
9
+ * - Update the on-chain endpoint to a real HTTPS URL after wiring a
10
+ * webhook for x402 / off-protocol intake.
11
+ * - Toggle isActive / listed flags to hide from public discovery.
12
+ *
13
+ * Wraps existing AgentRegistry SDK methods; this command is the user-
14
+ * facing surface that explains what's about to change and asks for
15
+ * confirmation before sending the tx.
16
+ *
17
+ * Deliberately does NOT expose `deregisterAgent` — destructive ops that
18
+ * forfeit reputation belong in a separate command with bigger guards.
19
+ *
20
+ * @module cli/commands/repair
21
+ */
22
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
23
+ if (k2 === undefined) k2 = k;
24
+ var desc = Object.getOwnPropertyDescriptor(m, k);
25
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
26
+ desc = { enumerable: true, get: function() { return m[k]; } };
27
+ }
28
+ Object.defineProperty(o, k2, desc);
29
+ }) : (function(o, m, k, k2) {
30
+ if (k2 === undefined) k2 = k;
31
+ o[k2] = m[k];
32
+ }));
33
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
34
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
35
+ }) : function(o, v) {
36
+ o["default"] = v;
37
+ });
38
+ var __importStar = (this && this.__importStar) || function (mod) {
39
+ if (mod && mod.__esModule) return mod;
40
+ var result = {};
41
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
42
+ __setModuleDefault(result, mod);
43
+ return result;
44
+ };
45
+ Object.defineProperty(exports, "__esModule", { value: true });
46
+ exports.createRepairCommand = void 0;
47
+ const commander_1 = require("commander");
48
+ const ethers_1 = require("ethers");
49
+ const readline = __importStar(require("readline"));
50
+ const output_1 = require("../utils/output");
51
+ const client_1 = require("../utils/client");
52
+ const config_1 = require("../utils/config");
53
+ const networks_1 = require("../../config/networks");
54
+ const AgentRegistry_1 = require("../../protocol/AgentRegistry");
55
+ const AgentRegistryClient_1 = require("../../registry/AgentRegistryClient");
56
+ // ============================================================================
57
+ // Command
58
+ // ============================================================================
59
+ function createRepairCommand() {
60
+ const cmd = new commander_1.Command('repair')
61
+ .description('Reshape on-chain agent (drop phantom services, update endpoint, toggle active/listed)')
62
+ .option('--remove-service <name>', 'Remove a service type from your on-chain provider role')
63
+ .option('--endpoint <url>', 'Update on-chain endpoint URL (must be HTTPS)')
64
+ .option('--active <bool>', 'Set on-chain isActive (true|false)')
65
+ .option('--listed <bool>', 'Set on-chain listed flag (true|false)')
66
+ .option('--network <name>', 'Network to repair on', 'base-sepolia')
67
+ .option('-y, --yes', 'Skip confirmation prompts (required for non-TTY)')
68
+ .option('--json', 'Output as JSON')
69
+ .action(async (options) => {
70
+ const output = new output_1.Output(options.json ? 'json' : 'human');
71
+ try {
72
+ await runRepair(options, output);
73
+ }
74
+ catch (error) {
75
+ const structured = (0, client_1.mapError)(error);
76
+ output.errorResult({
77
+ code: structured.code,
78
+ message: structured.message,
79
+ details: structured.details,
80
+ });
81
+ process.exit(output_1.ExitCode.ERROR);
82
+ }
83
+ });
84
+ return cmd;
85
+ }
86
+ exports.createRepairCommand = createRepairCommand;
87
+ async function runRepair(options, output) {
88
+ // At least one repair action must be specified.
89
+ const actions = [
90
+ options.removeService && `remove-service ${options.removeService}`,
91
+ options.endpoint && `endpoint → ${options.endpoint}`,
92
+ options.active !== undefined && `active → ${options.active}`,
93
+ options.listed !== undefined && `listed → ${options.listed}`,
94
+ ].filter(Boolean);
95
+ if (actions.length === 0) {
96
+ throw new Error('No repair action specified. Use one of:\n' +
97
+ ' --remove-service <name>\n' +
98
+ ' --endpoint <url>\n' +
99
+ ' --active <true|false>\n' +
100
+ ' --listed <true|false>');
101
+ }
102
+ // Validate inputs early — fail before touching the network.
103
+ if (options.endpoint !== undefined && !options.endpoint.startsWith('https://')) {
104
+ throw new Error(`--endpoint must be HTTPS (got: ${options.endpoint})`);
105
+ }
106
+ const activeBool = options.active !== undefined ? parseBool(options.active, '--active') : undefined;
107
+ const listedBool = options.listed !== undefined ? parseBool(options.listed, '--listed') : undefined;
108
+ // Load signer.
109
+ const config = (0, config_1.loadConfig)();
110
+ const { resolvePrivateKey } = await Promise.resolve().then(() => __importStar(require('../../wallet/keystore')));
111
+ const network = options.network;
112
+ const tier = network.includes('mainnet') ? 'mainnet' : network.includes('sepolia') ? 'testnet' : 'mock';
113
+ const privateKey = await resolvePrivateKey(process.cwd(), { network: tier });
114
+ if (!privateKey) {
115
+ throw new Error('No wallet found. Set ACTP_KEYSTORE_BASE64 or run `actp init` first.');
116
+ }
117
+ const networkConfig = (0, networks_1.getNetwork)(network);
118
+ if (!networkConfig.contracts.agentRegistry) {
119
+ throw new Error(`AgentRegistry not configured for network: ${network}`);
120
+ }
121
+ const provider = new ethers_1.ethers.JsonRpcProvider(networkConfig.rpcUrl);
122
+ const signer = new ethers_1.ethers.Wallet(privateKey, provider);
123
+ const signerAddress = await signer.getAddress();
124
+ void config;
125
+ // Confirm before sending.
126
+ output.info(`About to repair on-chain agent for wallet: ${signerAddress}`);
127
+ output.print(' Network: ' + network);
128
+ output.print(' Actions:');
129
+ for (const a of actions)
130
+ output.print(` - ${a}`);
131
+ const confirmed = await confirm(options, output);
132
+ if (!confirmed) {
133
+ output.info('Cancelled — no on-chain transactions sent.');
134
+ return;
135
+ }
136
+ const registry = new AgentRegistry_1.AgentRegistry(networkConfig.contracts.agentRegistry, signer, networkConfig.gasSettings);
137
+ const txHashes = [];
138
+ // Sequential execution — each call is its own tx; if one fails the
139
+ // earlier ones already landed and the user can retry the rest.
140
+ if (options.removeService) {
141
+ const hash = ethers_1.ethers.keccak256(ethers_1.ethers.toUtf8Bytes(options.removeService));
142
+ output.print('');
143
+ output.print(`Removing service "${options.removeService}" (hash ${hash.slice(0, 10)}...)`);
144
+ const txHash = await registry.removeServiceType(hash);
145
+ txHashes.push({ action: `remove-service:${options.removeService}`, txHash });
146
+ output.success(`Removed. tx: ${txHash}`);
147
+ }
148
+ if (options.endpoint !== undefined) {
149
+ output.print('');
150
+ output.print(`Updating endpoint → ${options.endpoint}`);
151
+ const txHash = await registry.updateEndpoint(options.endpoint);
152
+ txHashes.push({ action: `update-endpoint`, txHash });
153
+ output.success(`Updated. tx: ${txHash}`);
154
+ }
155
+ if (activeBool !== undefined) {
156
+ output.print('');
157
+ output.print(`Setting active → ${activeBool}`);
158
+ const txHash = await registry.setActiveStatus(activeBool);
159
+ txHashes.push({ action: `set-active:${activeBool}`, txHash });
160
+ output.success(`Set. tx: ${txHash}`);
161
+ }
162
+ if (listedBool !== undefined) {
163
+ // setListed lives on AgentRegistryClient (the v2 listing surface),
164
+ // not on the legacy AgentRegistry wrapper used for the other repair
165
+ // ops. Cheap to instantiate; both share the same contract address.
166
+ const listingClient = new AgentRegistryClient_1.AgentRegistryClient(networkConfig.contracts.agentRegistry, signer, networkConfig.gasSettings);
167
+ output.print('');
168
+ output.print(`Setting listed → ${listedBool}`);
169
+ const txHash = await listingClient.setListed(listedBool);
170
+ txHashes.push({ action: `set-listed:${listedBool}`, txHash });
171
+ output.success(`Set. tx: ${txHash}`);
172
+ }
173
+ output.print('');
174
+ output.success(`Repair complete (${txHashes.length} tx).`);
175
+ if (output.mode === 'json') {
176
+ output.result({
177
+ wallet: signerAddress,
178
+ network,
179
+ txHashes,
180
+ });
181
+ }
182
+ }
183
+ // ============================================================================
184
+ // Helpers
185
+ // ============================================================================
186
+ function parseBool(value, flag) {
187
+ const v = value.toLowerCase().trim();
188
+ if (v === 'true' || v === '1' || v === 'yes' || v === 'y')
189
+ return true;
190
+ if (v === 'false' || v === '0' || v === 'no' || v === 'n')
191
+ return false;
192
+ throw new Error(`${flag} must be true|false (got: ${value})`);
193
+ }
194
+ async function confirm(options, output) {
195
+ if (options.yes)
196
+ return true;
197
+ if (!process.stdin.isTTY) {
198
+ throw new Error('Non-TTY environment requires explicit confirmation. Re-run with --yes to acknowledge.');
199
+ }
200
+ const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
201
+ const answer = await new Promise((resolve) => {
202
+ rl.question(output_1.fmt.cyan('? ') + 'Send these on-chain transactions? [y/N] ', (a) => {
203
+ rl.close();
204
+ resolve(a.trim().toLowerCase());
205
+ });
206
+ });
207
+ void output;
208
+ return answer === 'y' || answer === 'yes';
209
+ }
210
+ //# sourceMappingURL=repair.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repair.js","sourceRoot":"","sources":["../../../src/cli/commands/repair.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * `actp serve` — long-running provider daemon.
3
+ *
4
+ * Loads a ProviderPolicy JSON, constructs a ProviderOrchestrator, opens
5
+ * an HTTP server on the configured port that exposes the AIP-2.1 quote
6
+ * channel surface (`POST /quote-channel/{chainId}/{txId}` per §8.2),
7
+ * and routes incoming buyer counter-offers through
8
+ * orchestrator.evaluateCounter().
9
+ *
10
+ * Scope (v1):
11
+ * - accept + verify incoming counter-offers via QuoteChannelHandler
12
+ * - log the policy verdict (accept / reject) per round
13
+ * - emit a one-line health response on `GET /`
14
+ *
15
+ * Out of scope for v1 (Phase 5):
16
+ * - on-chain event listening (no automatic submitQuote on incoming
17
+ * INITIATED txs — caller still drives via Agent.ts or manual code)
18
+ * - sending CounterAcceptMessage back to buyer (no reverse-endpoint
19
+ * discovery yet — print the verdict, operator handles delivery)
20
+ *
21
+ * @module cli/commands/serve
22
+ */
23
+ /// <reference types="node" />
24
+ import { Command } from 'commander';
25
+ import { IncomingMessage } from 'http';
26
+ export declare function createServeCommand(): Command;
27
+ /**
28
+ * Read a request body with two hard limits — defense in depth alongside
29
+ * the server-level `headersTimeout` / `requestTimeout`:
30
+ * - byte cap (64 KiB) to bound memory
31
+ * - wall-clock deadline (10s) to bound time
32
+ *
33
+ * Both must be enforced here too because a caller could construct the
34
+ * server without our timeouts (e.g. testing with a raw http.Server) and
35
+ * the body cap alone won't shed a peer that sends 1 byte/sec forever.
36
+ */
37
+ export declare function readBody(req: IncomingMessage): Promise<string>;
38
+ //# sourceMappingURL=serve.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serve.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/serve.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAgB,eAAe,EAAkB,MAAM,MAAM,CAAC;AAoBrE,wBAAgB,kBAAkB,IAAI,OAAO,CAuB5C;AA6ND;;;;;;;;;GASG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,CAmC9D"}