arc402-cli 0.2.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 (308) hide show
  1. package/README.md +245 -0
  2. package/dist/abis.d.ts +19 -0
  3. package/dist/abis.d.ts.map +1 -0
  4. package/dist/abis.js +177 -0
  5. package/dist/abis.js.map +1 -0
  6. package/dist/bundler.d.ts +65 -0
  7. package/dist/bundler.d.ts.map +1 -0
  8. package/dist/bundler.js +181 -0
  9. package/dist/bundler.js.map +1 -0
  10. package/dist/client.d.ts +14 -0
  11. package/dist/client.d.ts.map +1 -0
  12. package/dist/client.js +24 -0
  13. package/dist/client.js.map +1 -0
  14. package/dist/coinbase-smart-wallet.d.ts +28 -0
  15. package/dist/coinbase-smart-wallet.d.ts.map +1 -0
  16. package/dist/coinbase-smart-wallet.js +38 -0
  17. package/dist/coinbase-smart-wallet.js.map +1 -0
  18. package/dist/commands/accept.d.ts +3 -0
  19. package/dist/commands/accept.d.ts.map +1 -0
  20. package/dist/commands/accept.js +26 -0
  21. package/dist/commands/accept.js.map +1 -0
  22. package/dist/commands/agent-handshake.d.ts +3 -0
  23. package/dist/commands/agent-handshake.d.ts.map +1 -0
  24. package/dist/commands/agent-handshake.js +61 -0
  25. package/dist/commands/agent-handshake.js.map +1 -0
  26. package/dist/commands/agent.d.ts +3 -0
  27. package/dist/commands/agent.d.ts.map +1 -0
  28. package/dist/commands/agent.js +417 -0
  29. package/dist/commands/agent.js.map +1 -0
  30. package/dist/commands/agreements.d.ts +3 -0
  31. package/dist/commands/agreements.d.ts.map +1 -0
  32. package/dist/commands/agreements.js +344 -0
  33. package/dist/commands/agreements.js.map +1 -0
  34. package/dist/commands/arbitrator.d.ts +3 -0
  35. package/dist/commands/arbitrator.d.ts.map +1 -0
  36. package/dist/commands/arbitrator.js +157 -0
  37. package/dist/commands/arbitrator.js.map +1 -0
  38. package/dist/commands/arena-handshake.d.ts +3 -0
  39. package/dist/commands/arena-handshake.d.ts.map +1 -0
  40. package/dist/commands/arena-handshake.js +187 -0
  41. package/dist/commands/arena-handshake.js.map +1 -0
  42. package/dist/commands/cancel.d.ts +3 -0
  43. package/dist/commands/cancel.d.ts.map +1 -0
  44. package/dist/commands/cancel.js +30 -0
  45. package/dist/commands/cancel.js.map +1 -0
  46. package/dist/commands/channel.d.ts +3 -0
  47. package/dist/commands/channel.d.ts.map +1 -0
  48. package/dist/commands/channel.js +238 -0
  49. package/dist/commands/channel.js.map +1 -0
  50. package/dist/commands/coldstart.d.ts +3 -0
  51. package/dist/commands/coldstart.d.ts.map +1 -0
  52. package/dist/commands/coldstart.js +148 -0
  53. package/dist/commands/coldstart.js.map +1 -0
  54. package/dist/commands/config.d.ts +3 -0
  55. package/dist/commands/config.d.ts.map +1 -0
  56. package/dist/commands/config.js +40 -0
  57. package/dist/commands/config.js.map +1 -0
  58. package/dist/commands/contract-interaction.d.ts +3 -0
  59. package/dist/commands/contract-interaction.d.ts.map +1 -0
  60. package/dist/commands/contract-interaction.js +165 -0
  61. package/dist/commands/contract-interaction.js.map +1 -0
  62. package/dist/commands/daemon.d.ts +3 -0
  63. package/dist/commands/daemon.d.ts.map +1 -0
  64. package/dist/commands/daemon.js +891 -0
  65. package/dist/commands/daemon.js.map +1 -0
  66. package/dist/commands/deliver.d.ts +3 -0
  67. package/dist/commands/deliver.d.ts.map +1 -0
  68. package/dist/commands/deliver.js +156 -0
  69. package/dist/commands/deliver.js.map +1 -0
  70. package/dist/commands/discover.d.ts +3 -0
  71. package/dist/commands/discover.d.ts.map +1 -0
  72. package/dist/commands/discover.js +224 -0
  73. package/dist/commands/discover.js.map +1 -0
  74. package/dist/commands/dispute.d.ts +3 -0
  75. package/dist/commands/dispute.d.ts.map +1 -0
  76. package/dist/commands/dispute.js +348 -0
  77. package/dist/commands/dispute.js.map +1 -0
  78. package/dist/commands/endpoint.d.ts +3 -0
  79. package/dist/commands/endpoint.d.ts.map +1 -0
  80. package/dist/commands/endpoint.js +604 -0
  81. package/dist/commands/endpoint.js.map +1 -0
  82. package/dist/commands/hire.d.ts +3 -0
  83. package/dist/commands/hire.d.ts.map +1 -0
  84. package/dist/commands/hire.js +189 -0
  85. package/dist/commands/hire.js.map +1 -0
  86. package/dist/commands/migrate.d.ts +3 -0
  87. package/dist/commands/migrate.d.ts.map +1 -0
  88. package/dist/commands/migrate.js +163 -0
  89. package/dist/commands/migrate.js.map +1 -0
  90. package/dist/commands/negotiate.d.ts +3 -0
  91. package/dist/commands/negotiate.d.ts.map +1 -0
  92. package/dist/commands/negotiate.js +247 -0
  93. package/dist/commands/negotiate.js.map +1 -0
  94. package/dist/commands/openshell.d.ts +3 -0
  95. package/dist/commands/openshell.d.ts.map +1 -0
  96. package/dist/commands/openshell.js +952 -0
  97. package/dist/commands/openshell.js.map +1 -0
  98. package/dist/commands/owner.d.ts +3 -0
  99. package/dist/commands/owner.d.ts.map +1 -0
  100. package/dist/commands/owner.js +32 -0
  101. package/dist/commands/owner.js.map +1 -0
  102. package/dist/commands/policy.d.ts +4 -0
  103. package/dist/commands/policy.d.ts.map +1 -0
  104. package/dist/commands/policy.js +248 -0
  105. package/dist/commands/policy.js.map +1 -0
  106. package/dist/commands/relay.d.ts +3 -0
  107. package/dist/commands/relay.d.ts.map +1 -0
  108. package/dist/commands/relay.js +279 -0
  109. package/dist/commands/relay.js.map +1 -0
  110. package/dist/commands/remediate.d.ts +3 -0
  111. package/dist/commands/remediate.d.ts.map +1 -0
  112. package/dist/commands/remediate.js +42 -0
  113. package/dist/commands/remediate.js.map +1 -0
  114. package/dist/commands/reputation.d.ts +4 -0
  115. package/dist/commands/reputation.d.ts.map +1 -0
  116. package/dist/commands/reputation.js +72 -0
  117. package/dist/commands/reputation.js.map +1 -0
  118. package/dist/commands/setup.d.ts +3 -0
  119. package/dist/commands/setup.d.ts.map +1 -0
  120. package/dist/commands/setup.js +332 -0
  121. package/dist/commands/setup.js.map +1 -0
  122. package/dist/commands/trust.d.ts +3 -0
  123. package/dist/commands/trust.d.ts.map +1 -0
  124. package/dist/commands/trust.js +23 -0
  125. package/dist/commands/trust.js.map +1 -0
  126. package/dist/commands/verify.d.ts +3 -0
  127. package/dist/commands/verify.d.ts.map +1 -0
  128. package/dist/commands/verify.js +88 -0
  129. package/dist/commands/verify.js.map +1 -0
  130. package/dist/commands/wallet.d.ts +3 -0
  131. package/dist/commands/wallet.d.ts.map +1 -0
  132. package/dist/commands/wallet.js +2520 -0
  133. package/dist/commands/wallet.js.map +1 -0
  134. package/dist/commands/watchtower.d.ts +3 -0
  135. package/dist/commands/watchtower.d.ts.map +1 -0
  136. package/dist/commands/watchtower.js +238 -0
  137. package/dist/commands/watchtower.js.map +1 -0
  138. package/dist/commands/workroom.d.ts +3 -0
  139. package/dist/commands/workroom.d.ts.map +1 -0
  140. package/dist/commands/workroom.js +855 -0
  141. package/dist/commands/workroom.js.map +1 -0
  142. package/dist/config.d.ts +62 -0
  143. package/dist/config.d.ts.map +1 -0
  144. package/dist/config.js +141 -0
  145. package/dist/config.js.map +1 -0
  146. package/dist/daemon/config.d.ts +74 -0
  147. package/dist/daemon/config.d.ts.map +1 -0
  148. package/dist/daemon/config.js +271 -0
  149. package/dist/daemon/config.js.map +1 -0
  150. package/dist/daemon/hire-listener.d.ts +31 -0
  151. package/dist/daemon/hire-listener.d.ts.map +1 -0
  152. package/dist/daemon/hire-listener.js +207 -0
  153. package/dist/daemon/hire-listener.js.map +1 -0
  154. package/dist/daemon/index.d.ts +29 -0
  155. package/dist/daemon/index.d.ts.map +1 -0
  156. package/dist/daemon/index.js +535 -0
  157. package/dist/daemon/index.js.map +1 -0
  158. package/dist/daemon/job-lifecycle.d.ts +62 -0
  159. package/dist/daemon/job-lifecycle.d.ts.map +1 -0
  160. package/dist/daemon/job-lifecycle.js +201 -0
  161. package/dist/daemon/job-lifecycle.js.map +1 -0
  162. package/dist/daemon/notify.d.ts +22 -0
  163. package/dist/daemon/notify.d.ts.map +1 -0
  164. package/dist/daemon/notify.js +148 -0
  165. package/dist/daemon/notify.js.map +1 -0
  166. package/dist/daemon/token-metering.d.ts +42 -0
  167. package/dist/daemon/token-metering.d.ts.map +1 -0
  168. package/dist/daemon/token-metering.js +178 -0
  169. package/dist/daemon/token-metering.js.map +1 -0
  170. package/dist/daemon/userops.d.ts +21 -0
  171. package/dist/daemon/userops.d.ts.map +1 -0
  172. package/dist/daemon/userops.js +88 -0
  173. package/dist/daemon/userops.js.map +1 -0
  174. package/dist/daemon/wallet-monitor.d.ts +16 -0
  175. package/dist/daemon/wallet-monitor.d.ts.map +1 -0
  176. package/dist/daemon/wallet-monitor.js +57 -0
  177. package/dist/daemon/wallet-monitor.js.map +1 -0
  178. package/dist/drain-v4.d.ts +2 -0
  179. package/dist/drain-v4.d.ts.map +1 -0
  180. package/dist/drain-v4.js +167 -0
  181. package/dist/drain-v4.js.map +1 -0
  182. package/dist/endpoint-config.d.ts +36 -0
  183. package/dist/endpoint-config.d.ts.map +1 -0
  184. package/dist/endpoint-config.js +96 -0
  185. package/dist/endpoint-config.js.map +1 -0
  186. package/dist/index.d.ts +3 -0
  187. package/dist/index.d.ts.map +1 -0
  188. package/dist/index.js +79 -0
  189. package/dist/index.js.map +1 -0
  190. package/dist/openshell-runtime.d.ts +55 -0
  191. package/dist/openshell-runtime.d.ts.map +1 -0
  192. package/dist/openshell-runtime.js +268 -0
  193. package/dist/openshell-runtime.js.map +1 -0
  194. package/dist/signing.d.ts +2 -0
  195. package/dist/signing.d.ts.map +1 -0
  196. package/dist/signing.js +23 -0
  197. package/dist/signing.js.map +1 -0
  198. package/dist/telegram-notify.d.ts +23 -0
  199. package/dist/telegram-notify.d.ts.map +1 -0
  200. package/dist/telegram-notify.js +106 -0
  201. package/dist/telegram-notify.js.map +1 -0
  202. package/dist/ui/banner.d.ts +7 -0
  203. package/dist/ui/banner.d.ts.map +1 -0
  204. package/dist/ui/banner.js +37 -0
  205. package/dist/ui/banner.js.map +1 -0
  206. package/dist/ui/colors.d.ts +14 -0
  207. package/dist/ui/colors.d.ts.map +1 -0
  208. package/dist/ui/colors.js +29 -0
  209. package/dist/ui/colors.js.map +1 -0
  210. package/dist/ui/format.d.ts +26 -0
  211. package/dist/ui/format.d.ts.map +1 -0
  212. package/dist/ui/format.js +77 -0
  213. package/dist/ui/format.js.map +1 -0
  214. package/dist/ui/spinner.d.ts +8 -0
  215. package/dist/ui/spinner.d.ts.map +1 -0
  216. package/dist/ui/spinner.js +43 -0
  217. package/dist/ui/spinner.js.map +1 -0
  218. package/dist/utils/format.d.ts +10 -0
  219. package/dist/utils/format.d.ts.map +1 -0
  220. package/dist/utils/format.js +61 -0
  221. package/dist/utils/format.js.map +1 -0
  222. package/dist/utils/hash.d.ts +3 -0
  223. package/dist/utils/hash.d.ts.map +1 -0
  224. package/dist/utils/hash.js +43 -0
  225. package/dist/utils/hash.js.map +1 -0
  226. package/dist/utils/time.d.ts +3 -0
  227. package/dist/utils/time.d.ts.map +1 -0
  228. package/dist/utils/time.js +21 -0
  229. package/dist/utils/time.js.map +1 -0
  230. package/dist/wallet-router.d.ts +25 -0
  231. package/dist/wallet-router.d.ts.map +1 -0
  232. package/dist/wallet-router.js +153 -0
  233. package/dist/wallet-router.js.map +1 -0
  234. package/dist/walletconnect-session.d.ts +12 -0
  235. package/dist/walletconnect-session.d.ts.map +1 -0
  236. package/dist/walletconnect-session.js +26 -0
  237. package/dist/walletconnect-session.js.map +1 -0
  238. package/dist/walletconnect.d.ts +46 -0
  239. package/dist/walletconnect.d.ts.map +1 -0
  240. package/dist/walletconnect.js +267 -0
  241. package/dist/walletconnect.js.map +1 -0
  242. package/package.json +38 -0
  243. package/scripts/authorize-machine-key.ts +43 -0
  244. package/scripts/drain-wallet.ts +149 -0
  245. package/scripts/execute-spend-only.ts +81 -0
  246. package/scripts/register-agent-userop.ts +186 -0
  247. package/src/abis.ts +187 -0
  248. package/src/bundler.ts +235 -0
  249. package/src/client.ts +34 -0
  250. package/src/coinbase-smart-wallet.ts +51 -0
  251. package/src/commands/accept.ts +25 -0
  252. package/src/commands/agent-handshake.ts +67 -0
  253. package/src/commands/agent.ts +458 -0
  254. package/src/commands/agreements.ts +324 -0
  255. package/src/commands/arbitrator.ts +129 -0
  256. package/src/commands/arena-handshake.ts +217 -0
  257. package/src/commands/cancel.ts +26 -0
  258. package/src/commands/channel.ts +208 -0
  259. package/src/commands/coldstart.ts +156 -0
  260. package/src/commands/config.ts +35 -0
  261. package/src/commands/contract-interaction.ts +166 -0
  262. package/src/commands/daemon.ts +971 -0
  263. package/src/commands/deliver.ts +116 -0
  264. package/src/commands/discover.ts +295 -0
  265. package/src/commands/dispute.ts +373 -0
  266. package/src/commands/endpoint.ts +619 -0
  267. package/src/commands/hire.ts +200 -0
  268. package/src/commands/migrate.ts +175 -0
  269. package/src/commands/negotiate.ts +270 -0
  270. package/src/commands/openshell.ts +1053 -0
  271. package/src/commands/owner.ts +30 -0
  272. package/src/commands/policy.ts +252 -0
  273. package/src/commands/relay.ts +272 -0
  274. package/src/commands/remediate.ts +22 -0
  275. package/src/commands/reputation.ts +71 -0
  276. package/src/commands/setup.ts +343 -0
  277. package/src/commands/trust.ts +15 -0
  278. package/src/commands/verify.ts +88 -0
  279. package/src/commands/wallet.ts +2892 -0
  280. package/src/commands/watchtower.ts +232 -0
  281. package/src/commands/workroom.ts +889 -0
  282. package/src/config.ts +153 -0
  283. package/src/daemon/config.ts +308 -0
  284. package/src/daemon/hire-listener.ts +226 -0
  285. package/src/daemon/index.ts +609 -0
  286. package/src/daemon/job-lifecycle.ts +215 -0
  287. package/src/daemon/notify.ts +157 -0
  288. package/src/daemon/token-metering.ts +183 -0
  289. package/src/daemon/userops.ts +119 -0
  290. package/src/daemon/wallet-monitor.ts +90 -0
  291. package/src/drain-v4.ts +159 -0
  292. package/src/endpoint-config.ts +83 -0
  293. package/src/index.ts +75 -0
  294. package/src/openshell-runtime.ts +277 -0
  295. package/src/signing.ts +28 -0
  296. package/src/telegram-notify.ts +88 -0
  297. package/src/ui/banner.ts +41 -0
  298. package/src/ui/colors.ts +30 -0
  299. package/src/ui/format.ts +77 -0
  300. package/src/ui/spinner.ts +46 -0
  301. package/src/utils/format.ts +48 -0
  302. package/src/utils/hash.ts +5 -0
  303. package/src/utils/time.ts +15 -0
  304. package/src/wallet-router.ts +178 -0
  305. package/src/walletconnect-session.ts +27 -0
  306. package/src/walletconnect.ts +294 -0
  307. package/test/time.test.js +11 -0
  308. package/tsconfig.json +19 -0
@@ -0,0 +1,187 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.registerArenaHandshakeCommands = registerArenaHandshakeCommands;
4
+ const ethers_1 = require("ethers");
5
+ const config_1 = require("../config");
6
+ const client_1 = require("../client");
7
+ // ─── Handshake Contract ABI (from Handshake.sol) ─────────────────────────────
8
+ const HANDSHAKE_ABI = [
9
+ "function sendHandshake(address to, uint8 hsType, string note) payable",
10
+ "function sendHandshakeWithToken(address to, uint8 hsType, string note, address token, uint256 tokenAmount)",
11
+ "function sendBatch(address[] recipients, uint8[] hsTypes, string[] notes)",
12
+ "function hasConnection(address from, address to) view returns (bool)",
13
+ "function isMutual(address a, address b) view returns (bool)",
14
+ "function getStats(address agent) view returns (uint256 sent, uint256 received, uint256 uniqueInbound)",
15
+ "function sentCount(address) view returns (uint256)",
16
+ "function receivedCount(address) view returns (uint256)",
17
+ "function uniqueSenders(address) view returns (uint256)",
18
+ "function totalHandshakes() view returns (uint256)",
19
+ "function allowedTokens(address) view returns (bool)",
20
+ "event HandshakeSent(uint256 indexed handshakeId, address indexed from, address indexed to, uint8 hsType, address token, uint256 amount, string note, uint256 timestamp)",
21
+ "event NewConnection(address indexed from, address indexed to, uint256 handshakeId)",
22
+ ];
23
+ const POLICY_ENGINE_ABI = [
24
+ "function isContractWhitelisted(address wallet, address target) view returns (bool)",
25
+ "function whitelistContract(address wallet, address target)",
26
+ ];
27
+ const HANDSHAKE_TYPES = {
28
+ respect: 0,
29
+ curiosity: 1,
30
+ endorsement: 2,
31
+ thanks: 3,
32
+ collaboration: 4,
33
+ challenge: 5,
34
+ referral: 6,
35
+ hello: 7,
36
+ };
37
+ // ─── Auto-Whitelist ──────────────────────────────────────────────────────────
38
+ async function ensureWhitelisted(signer, provider, walletAddress, policyEngineAddress, handshakeAddress) {
39
+ const pe = new ethers_1.ethers.Contract(policyEngineAddress, POLICY_ENGINE_ABI, provider);
40
+ const isWhitelisted = await pe.isContractWhitelisted(walletAddress, handshakeAddress);
41
+ if (!isWhitelisted) {
42
+ console.log("Handshake contract not yet whitelisted on your wallet.");
43
+ console.log("Whitelisting now (one-time setup)...");
44
+ const peSigner = new ethers_1.ethers.Contract(policyEngineAddress, POLICY_ENGINE_ABI, signer);
45
+ const tx = await peSigner.whitelistContract(walletAddress, handshakeAddress);
46
+ console.log(` tx: ${tx.hash}`);
47
+ await tx.wait();
48
+ console.log(" ✓ Handshake contract whitelisted\n");
49
+ }
50
+ }
51
+ // ─── Commands ────────────────────────────────────────────────────────────────
52
+ function registerArenaHandshakeCommands(program) {
53
+ const hs = program
54
+ .command("shake")
55
+ .description("ARC Arena social handshake — send a typed trust signal to another agent.");
56
+ // ── send ──────────────────────────────────────────────────────────────────
57
+ hs.command("send <agentAddress>")
58
+ .description("Send a handshake to another agent.")
59
+ .option("--type <type>", "Handshake type: respect, curiosity, endorsement, thanks, collaboration, challenge, referral, hello", "hello")
60
+ .option("--note <note>", "Short message (max 280 chars)", "")
61
+ .option("--tip <amount>", "ETH tip to attach (e.g. 0.01)")
62
+ .option("--usdc <amount>", "USDC tip to attach (e.g. 5.00)")
63
+ .option("--json", "Output as JSON")
64
+ .action(async (agentAddress, opts) => {
65
+ const config = (0, config_1.loadConfig)();
66
+ const { signer, provider } = await (0, client_1.requireSigner)(config);
67
+ const myAddress = await signer.getAddress();
68
+ if (!config.handshakeAddress) {
69
+ console.error("handshakeAddress not configured. Run: arc402 config set handshakeAddress <address>");
70
+ process.exit(1);
71
+ }
72
+ if (!config.policyEngineAddress) {
73
+ console.error("policyEngineAddress not configured.");
74
+ process.exit(1);
75
+ }
76
+ // Auto-whitelist check
77
+ await ensureWhitelisted(signer, provider, myAddress, config.policyEngineAddress, config.handshakeAddress);
78
+ const hsType = HANDSHAKE_TYPES[opts.type.toLowerCase()];
79
+ if (hsType === undefined) {
80
+ console.error(`Unknown handshake type: ${opts.type}`);
81
+ console.error(`Valid types: ${Object.keys(HANDSHAKE_TYPES).join(", ")}`);
82
+ process.exit(1);
83
+ }
84
+ const handshake = new ethers_1.ethers.Contract(config.handshakeAddress, HANDSHAKE_ABI, signer);
85
+ let tx;
86
+ if (opts.usdc) {
87
+ // USDC handshake
88
+ const usdcAddress = (0, config_1.getUsdcAddress)(config);
89
+ const amount = ethers_1.ethers.parseUnits(opts.usdc, 6);
90
+ tx = await handshake.sendHandshakeWithToken(agentAddress, hsType, opts.note, usdcAddress, amount);
91
+ }
92
+ else {
93
+ // ETH handshake (with optional tip)
94
+ const value = opts.tip ? ethers_1.ethers.parseEther(opts.tip) : 0n;
95
+ tx = await handshake.sendHandshake(agentAddress, hsType, opts.note, { value });
96
+ }
97
+ if (opts.json) {
98
+ console.log(JSON.stringify({ tx: tx.hash, from: myAddress, to: agentAddress, type: opts.type, note: opts.note }));
99
+ }
100
+ else {
101
+ console.log(`✓ Handshake sent`);
102
+ console.log(` From: ${myAddress}`);
103
+ console.log(` To: ${agentAddress}`);
104
+ console.log(` Type: ${opts.type}`);
105
+ if (opts.note)
106
+ console.log(` Note: ${opts.note}`);
107
+ if (opts.tip)
108
+ console.log(` Tip: ${opts.tip} ETH`);
109
+ if (opts.usdc)
110
+ console.log(` Tip: ${opts.usdc} USDC`);
111
+ console.log(` tx: ${tx.hash}`);
112
+ }
113
+ });
114
+ // ── batch ─────────────────────────────────────────────────────────────────
115
+ hs.command("batch")
116
+ .description("Send handshakes to multiple agents at once (onboarding ritual).")
117
+ .argument("<agents...>", "Agent addresses to handshake (up to 10)")
118
+ .option("--type <type>", "Handshake type for all", "hello")
119
+ .option("--note <note>", "Note for all", "")
120
+ .action(async (agents, opts) => {
121
+ const config = (0, config_1.loadConfig)();
122
+ const { signer, provider } = await (0, client_1.requireSigner)(config);
123
+ const myAddress = await signer.getAddress();
124
+ if (!config.handshakeAddress || !config.policyEngineAddress) {
125
+ console.error("handshakeAddress or policyEngineAddress not configured.");
126
+ process.exit(1);
127
+ }
128
+ await ensureWhitelisted(signer, provider, myAddress, config.policyEngineAddress, config.handshakeAddress);
129
+ const hsType = HANDSHAKE_TYPES[opts.type.toLowerCase()];
130
+ if (hsType === undefined) {
131
+ console.error(`Unknown type: ${opts.type}. Valid: ${Object.keys(HANDSHAKE_TYPES).join(", ")}`);
132
+ process.exit(1);
133
+ }
134
+ if (agents.length > 10) {
135
+ console.error("Max 10 agents per batch.");
136
+ process.exit(1);
137
+ }
138
+ const handshake = new ethers_1.ethers.Contract(config.handshakeAddress, HANDSHAKE_ABI, signer);
139
+ const types = agents.map(() => hsType);
140
+ const notes = agents.map(() => opts.note);
141
+ const tx = await handshake.sendBatch(agents, types, notes);
142
+ console.log(`✓ Batch handshake sent to ${agents.length} agents`);
143
+ agents.forEach(a => console.log(` → ${a}`));
144
+ console.log(` tx: ${tx.hash}`);
145
+ });
146
+ // ── stats ─────────────────────────────────────────────────────────────────
147
+ hs.command("stats [address]")
148
+ .description("View handshake stats for an agent.")
149
+ .action(async (address) => {
150
+ const config = (0, config_1.loadConfig)();
151
+ const { signer, provider } = await (0, client_1.requireSigner)(config);
152
+ const target = address || await signer.getAddress();
153
+ if (!config.handshakeAddress) {
154
+ console.error("handshakeAddress not configured.");
155
+ process.exit(1);
156
+ }
157
+ const handshake = new ethers_1.ethers.Contract(config.handshakeAddress, HANDSHAKE_ABI, provider);
158
+ const [sent, received, unique] = await handshake.getStats(target);
159
+ const total = await handshake.totalHandshakes();
160
+ console.log(`Handshake Stats: ${target}`);
161
+ console.log(` Sent: ${sent}`);
162
+ console.log(` Received: ${received}`);
163
+ console.log(` Unique senders: ${unique}`);
164
+ console.log(` Network total: ${total}`);
165
+ });
166
+ // ── check ─────────────────────────────────────────────────────────────────
167
+ hs.command("check <agentAddress>")
168
+ .description("Check if a connection or mutual handshake exists with an agent.")
169
+ .action(async (agentAddress) => {
170
+ const config = (0, config_1.loadConfig)();
171
+ const { signer, provider } = await (0, client_1.requireSigner)(config);
172
+ const myAddress = await signer.getAddress();
173
+ if (!config.handshakeAddress) {
174
+ console.error("handshakeAddress not configured.");
175
+ process.exit(1);
176
+ }
177
+ const handshake = new ethers_1.ethers.Contract(config.handshakeAddress, HANDSHAKE_ABI, provider);
178
+ const iSent = await handshake.hasConnection(myAddress, agentAddress);
179
+ const theySent = await handshake.hasConnection(agentAddress, myAddress);
180
+ const mutual = await handshake.isMutual(myAddress, agentAddress);
181
+ console.log(`Connection: ${myAddress} ↔ ${agentAddress}`);
182
+ console.log(` You → them: ${iSent ? "✓ handshaked" : "✗ no handshake"}`);
183
+ console.log(` Them → you: ${theySent ? "✓ handshaked" : "✗ no handshake"}`);
184
+ console.log(` Mutual: ${mutual ? "✓ yes" : "✗ no"}`);
185
+ });
186
+ }
187
+ //# sourceMappingURL=arena-handshake.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"arena-handshake.js","sourceRoot":"","sources":["../../src/commands/arena-handshake.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from "commander";
2
+ export declare function registerCancelCommand(program: Command): void;
3
+ //# sourceMappingURL=cancel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cancel.d.ts","sourceRoot":"","sources":["../../src/commands/cancel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOpC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAkB5D"}
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.registerCancelCommand = registerCancelCommand;
4
+ const sdk_1 = require("@arc402/sdk");
5
+ const config_1 = require("../config");
6
+ const client_1 = require("../client");
7
+ const wallet_router_1 = require("../wallet-router");
8
+ const abis_1 = require("../abis");
9
+ function registerCancelCommand(program) {
10
+ program.command("cancel <id>").description("Cancel a proposed agreement; use --expired for post-deadline recovery paths").option("--expired", "Call expiredCancel()", false).action(async (id, opts) => {
11
+ const config = (0, config_1.loadConfig)();
12
+ if (!config.serviceAgreementAddress)
13
+ throw new Error("serviceAgreementAddress missing in config");
14
+ const { signer } = await (0, client_1.requireSigner)(config);
15
+ (0, wallet_router_1.printSenderInfo)(config);
16
+ if (config.walletContractAddress) {
17
+ const fn = opts.expired ? "expiredCancel" : "cancel";
18
+ await (0, wallet_router_1.executeContractWriteViaWallet)(config.walletContractAddress, signer, config.serviceAgreementAddress, abis_1.SERVICE_AGREEMENT_ABI, fn, [BigInt(id)]);
19
+ }
20
+ else {
21
+ const client = new sdk_1.ServiceAgreementClient(config.serviceAgreementAddress, signer);
22
+ if (opts.expired)
23
+ await client.expiredCancel(BigInt(id));
24
+ else
25
+ await client.cancel(BigInt(id));
26
+ }
27
+ console.log(`cancelled ${id}`);
28
+ });
29
+ }
30
+ //# sourceMappingURL=cancel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cancel.js","sourceRoot":"","sources":["../../src/commands/cancel.ts"],"names":[],"mappings":";;AAOA,sDAkBC;AAxBD,qCAAqD;AACrD,sCAAuC;AACvC,sCAA0C;AAC1C,oDAAkF;AAClF,kCAAgD;AAEhD,SAAgB,qBAAqB,CAAC,OAAgB;IACpD,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,WAAW,CAAC,6EAA6E,CAAC,CAAC,MAAM,CAAC,WAAW,EAAE,sBAAsB,EAAE,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE;QACrM,MAAM,MAAM,GAAG,IAAA,mBAAU,GAAE,CAAC;QAC5B,IAAI,CAAC,MAAM,CAAC,uBAAuB;YAAE,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;QAClG,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,IAAA,sBAAa,EAAC,MAAM,CAAC,CAAC;QAC/C,IAAA,+BAAe,EAAC,MAAM,CAAC,CAAC;QACxB,IAAI,MAAM,CAAC,qBAAqB,EAAE,CAAC;YACjC,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC;YACrD,MAAM,IAAA,6CAA6B,EACjC,MAAM,CAAC,qBAAqB,EAAE,MAAM,EAAE,MAAM,CAAC,uBAAuB,EACpE,4BAAqB,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CACxC,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,MAAM,MAAM,GAAG,IAAI,4BAAsB,CAAC,MAAM,CAAC,uBAAuB,EAAE,MAAM,CAAC,CAAC;YAClF,IAAI,IAAI,CAAC,OAAO;gBAAE,MAAM,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;;gBAAM,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;QACjG,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;IACjC,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Command } from "commander";
2
+ export declare function registerChannelCommands(program: Command): void;
3
+ //# sourceMappingURL=channel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"channel.d.ts","sourceRoot":"","sources":["../../src/commands/channel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAoBpC,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA2L9D"}
@@ -0,0 +1,238 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.registerChannelCommands = registerChannelCommands;
37
+ const config_1 = require("../config");
38
+ const client_1 = require("../client");
39
+ const sdk_1 = require("@arc402/sdk");
40
+ const fs = __importStar(require("fs"));
41
+ const path = __importStar(require("path"));
42
+ const os = __importStar(require("os"));
43
+ const CHANNEL_STATES_DIR = path.join(os.homedir(), ".arc402", "channel-states");
44
+ function loadStateFile(path) {
45
+ const raw = fs.readFileSync(path, "utf-8");
46
+ const obj = JSON.parse(raw);
47
+ return {
48
+ ...obj,
49
+ cumulativePayment: BigInt(obj.cumulativePayment),
50
+ };
51
+ }
52
+ function registerChannelCommands(program) {
53
+ const channel = program.command("channel").description("Session channel management — open, close, challenge, reclaim");
54
+ channel.command("open <provider>")
55
+ .description("Open a session channel with a provider")
56
+ .requiredOption("--token <address>", "Token address (0x0 for ETH)")
57
+ .requiredOption("--max <amount>", "Max deposit amount in wei")
58
+ .requiredOption("--rate <amount>", "Expected rate per call in wei (informational)")
59
+ .requiredOption("--deadline <timestamp>", "Channel expiry unix timestamp")
60
+ .option("--json", "JSON output")
61
+ .action(async (provider, opts) => {
62
+ const config = (0, config_1.loadConfig)();
63
+ if (!config.serviceAgreementAddress)
64
+ throw new Error("serviceAgreementAddress missing in config");
65
+ const { signer } = await (0, client_1.requireSigner)(config);
66
+ const client = new sdk_1.ChannelClient(config.serviceAgreementAddress, signer);
67
+ const result = await client.openSessionChannel(provider, opts.token, BigInt(opts.max), BigInt(opts.rate), Number(opts.deadline));
68
+ if (opts.json || program.opts().json) {
69
+ console.log(JSON.stringify(result, null, 2));
70
+ }
71
+ else {
72
+ console.log(`channel opened: ${result.channelId}`);
73
+ console.log(`tx: ${result.txHash}`);
74
+ }
75
+ });
76
+ channel.command("status <channelId>")
77
+ .description("Get channel status")
78
+ .option("--json", "JSON output")
79
+ .action(async (channelId, opts) => {
80
+ const config = (0, config_1.loadConfig)();
81
+ if (!config.serviceAgreementAddress)
82
+ throw new Error("serviceAgreementAddress missing in config");
83
+ const { provider } = await (0, client_1.getClient)(config);
84
+ const client = new sdk_1.ChannelClient(config.serviceAgreementAddress, provider);
85
+ const ch = await client.getChannelStatus(channelId);
86
+ if (opts.json || program.opts().json) {
87
+ console.log(JSON.stringify(ch, (_k, v) => typeof v === "bigint" ? v.toString() : v, 2));
88
+ }
89
+ else {
90
+ console.log(`channel: ${channelId}`);
91
+ console.log(` status: ${ch.status}`);
92
+ console.log(` client: ${ch.client}`);
93
+ console.log(` provider: ${ch.provider}`);
94
+ console.log(` deposit: ${ch.depositAmount}`);
95
+ console.log(` settled: ${ch.settledAmount}`);
96
+ console.log(` seq: ${ch.lastSequenceNumber}`);
97
+ console.log(` deadline: ${ch.deadline}`);
98
+ }
99
+ });
100
+ channel.command("list <wallet>")
101
+ .description("List open channels for a wallet (client or provider)")
102
+ .option("--json", "JSON output")
103
+ .action(async (wallet, opts) => {
104
+ const config = (0, config_1.loadConfig)();
105
+ if (!config.serviceAgreementAddress)
106
+ throw new Error("serviceAgreementAddress missing in config");
107
+ const { provider } = await (0, client_1.getClient)(config);
108
+ const client = new sdk_1.ChannelClient(config.serviceAgreementAddress, provider);
109
+ const channels = await client.getOpenChannels(wallet);
110
+ if (opts.json || program.opts().json) {
111
+ console.log(JSON.stringify(channels, (_k, v) => typeof v === "bigint" ? v.toString() : v, 2));
112
+ }
113
+ else {
114
+ if (channels.length === 0) {
115
+ console.log("no open channels");
116
+ }
117
+ else {
118
+ for (const ch of channels) {
119
+ console.log(` ${ch.status} deposit=${ch.depositAmount} seq=${ch.lastSequenceNumber} deadline=${ch.deadline}`);
120
+ }
121
+ }
122
+ }
123
+ });
124
+ channel.command("close <channelId>")
125
+ .description("Close a channel cooperatively with signed final state")
126
+ .requiredOption("--state <path>", "Path to signed state JSON file")
127
+ .option("--json", "JSON output")
128
+ .action(async (channelId, opts) => {
129
+ const config = (0, config_1.loadConfig)();
130
+ if (!config.serviceAgreementAddress)
131
+ throw new Error("serviceAgreementAddress missing in config");
132
+ const { signer } = await (0, client_1.requireSigner)(config);
133
+ const client = new sdk_1.ChannelClient(config.serviceAgreementAddress, signer);
134
+ const state = loadStateFile(opts.state);
135
+ const result = await client.closeChannel(channelId, state);
136
+ if (opts.json || program.opts().json) {
137
+ console.log(JSON.stringify(result, null, 2));
138
+ }
139
+ else {
140
+ console.log(`close submitted: ${result.txHash}`);
141
+ console.log("challenge window open (24h)");
142
+ }
143
+ });
144
+ channel.command("challenge <channelId>")
145
+ .description("Challenge a stale close with a higher sequence state")
146
+ .requiredOption("--state <path>", "Path to signed state JSON file with higher sequenceNumber")
147
+ .option("--json", "JSON output")
148
+ .action(async (channelId, opts) => {
149
+ const config = (0, config_1.loadConfig)();
150
+ if (!config.serviceAgreementAddress)
151
+ throw new Error("serviceAgreementAddress missing in config");
152
+ const { signer } = await (0, client_1.requireSigner)(config);
153
+ const client = new sdk_1.ChannelClient(config.serviceAgreementAddress, signer);
154
+ const state = loadStateFile(opts.state);
155
+ const result = await client.challengeChannel(channelId, state);
156
+ if (opts.json || program.opts().json) {
157
+ console.log(JSON.stringify(result, null, 2));
158
+ }
159
+ else {
160
+ console.log(`challenge submitted: ${result.txHash}`);
161
+ }
162
+ });
163
+ channel.command("finalise <channelId>")
164
+ .description("Finalise a close after the challenge window expires")
165
+ .option("--json", "JSON output")
166
+ .action(async (channelId, opts) => {
167
+ const config = (0, config_1.loadConfig)();
168
+ if (!config.serviceAgreementAddress)
169
+ throw new Error("serviceAgreementAddress missing in config");
170
+ const { signer } = await (0, client_1.requireSigner)(config);
171
+ const client = new sdk_1.ChannelClient(config.serviceAgreementAddress, signer);
172
+ const result = await client.finaliseChallenge(channelId);
173
+ if (opts.json || program.opts().json) {
174
+ console.log(JSON.stringify(result, null, 2));
175
+ }
176
+ else {
177
+ console.log(`finalised: ${result.txHash}`);
178
+ }
179
+ });
180
+ channel.command("reclaim <channelId>")
181
+ .description("Client: reclaim deposit from expired channel")
182
+ .option("--json", "JSON output")
183
+ .action(async (channelId, opts) => {
184
+ const config = (0, config_1.loadConfig)();
185
+ if (!config.serviceAgreementAddress)
186
+ throw new Error("serviceAgreementAddress missing in config");
187
+ const { signer } = await (0, client_1.requireSigner)(config);
188
+ const client = new sdk_1.ChannelClient(config.serviceAgreementAddress, signer);
189
+ const result = await client.reclaimExpiredChannel(channelId);
190
+ if (opts.json || program.opts().json) {
191
+ console.log(JSON.stringify(result, null, 2));
192
+ }
193
+ else {
194
+ console.log(`reclaimed: ${result.txHash}`);
195
+ }
196
+ });
197
+ channel.command("store-state <channelId> <statePath>")
198
+ .description("Save a signed channel state to local storage (~/.arc402/channel-states/<channelId>.json) " +
199
+ "for the `arc402 daemon channel-watch` to use when auto-challenging stale closes.")
200
+ .option("--json", "JSON output")
201
+ .action((channelId, statePath, opts) => {
202
+ let raw;
203
+ try {
204
+ raw = fs.readFileSync(statePath, "utf-8");
205
+ }
206
+ catch (err) {
207
+ console.error(`Cannot read state file: ${statePath}\n${err}`);
208
+ process.exit(1);
209
+ }
210
+ let state;
211
+ try {
212
+ state = JSON.parse(raw);
213
+ }
214
+ catch {
215
+ console.error("State file is not valid JSON.");
216
+ process.exit(1);
217
+ }
218
+ const required = ["sequenceNumber", "cumulativePayment", "callCount", "token", "timestamp", "clientSig", "providerSig"];
219
+ for (const field of required) {
220
+ if (!(field in state)) {
221
+ console.error(`State file missing required field: ${field}`);
222
+ process.exit(1);
223
+ }
224
+ }
225
+ fs.mkdirSync(CHANNEL_STATES_DIR, { recursive: true, mode: 0o700 });
226
+ const dest = path.join(CHANNEL_STATES_DIR, `${channelId}.json`);
227
+ const stored = { ...state, channelId };
228
+ fs.writeFileSync(dest, JSON.stringify(stored, null, 2), { mode: 0o600 });
229
+ if (opts.json || program.opts().json) {
230
+ console.log(JSON.stringify({ stored: true, channelId, path: dest }));
231
+ }
232
+ else {
233
+ console.log(`State stored: ${dest}`);
234
+ console.log(` seq: ${state.sequenceNumber}`);
235
+ }
236
+ });
237
+ }
238
+ //# sourceMappingURL=channel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"channel.js","sourceRoot":"","sources":["../../src/commands/channel.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from "commander";
2
+ export declare function registerColdStartCommands(program: Command): void;
3
+ //# sourceMappingURL=coldstart.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"coldstart.d.ts","sourceRoot":"","sources":["../../src/commands/coldstart.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAoBpC,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAuIhE"}