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,348 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.registerDisputeCommand = registerDisputeCommand;
7
+ const ethers_1 = require("ethers");
8
+ const prompts_1 = __importDefault(require("prompts"));
9
+ const sdk_1 = require("@arc402/sdk");
10
+ const config_1 = require("../config");
11
+ const client_1 = require("../client");
12
+ const hash_1 = require("../utils/hash");
13
+ const wallet_router_1 = require("../wallet-router");
14
+ const abis_1 = require("../abis");
15
+ function registerDisputeCommand(program) {
16
+ const dispute = program.command("dispute").description("Formal dispute workflow; remediation-first by default, with narrow hard-fail direct-dispute exceptions");
17
+ // Fee quote (requires DisputeArbitration configured) — read-only, no wallet routing needed
18
+ dispute.command("fee-quote <agreementId>")
19
+ .description("Get dispute fee quote for an agreement")
20
+ .requiredOption("--price <price>", "Agreement price in wei/token units")
21
+ .requiredOption("--token <token>", "Token address (0x0 for ETH)")
22
+ .requiredOption("--mode <mode>", "unilateral|mutual")
23
+ .requiredOption("--class <class>", "hard-failure|ambiguity|high-sensitivity")
24
+ .action(async (agreementId, opts) => {
25
+ const config = (0, config_1.loadConfig)();
26
+ if (!config.disputeArbitrationAddress)
27
+ throw new Error("disputeArbitrationAddress missing in config");
28
+ const { provider } = await (0, client_1.getClient)(config);
29
+ const client = new sdk_1.DisputeArbitrationClient(config.disputeArbitrationAddress, provider);
30
+ const modeMap = { unilateral: sdk_1.DisputeMode.UNILATERAL, mutual: sdk_1.DisputeMode.MUTUAL };
31
+ const classMap = {
32
+ 'hard-failure': sdk_1.DisputeClass.HARD_FAILURE,
33
+ 'ambiguity': sdk_1.DisputeClass.AMBIGUITY_QUALITY,
34
+ 'high-sensitivity': sdk_1.DisputeClass.HIGH_SENSITIVITY,
35
+ };
36
+ const mode = modeMap[String(opts.mode).toLowerCase()];
37
+ const disputeClass = classMap[String(opts.class).toLowerCase()];
38
+ if (!mode || !disputeClass)
39
+ throw new Error("Invalid --mode or --class");
40
+ const feeInTokens = await client.getFeeQuote(BigInt(opts.price), opts.token, mode, disputeClass);
41
+ console.log(`Fee quote for agreement ${agreementId}: ${feeInTokens.toString()} tokens`);
42
+ });
43
+ // Open with explicit mode/class
44
+ dispute.command("open-with-mode <agreementId>")
45
+ .description("Open dispute with specific mode and class (requires fee in msg.value for ETH)")
46
+ .requiredOption("--mode <mode>", "unilateral|mutual")
47
+ .requiredOption("--class <class>", "hard-failure|ambiguity|high-sensitivity")
48
+ .requiredOption("--reason <reason>")
49
+ .option("--fee <fee>", "Fee in wei (for ETH agreements)", "0")
50
+ .action(async (agreementId, opts) => {
51
+ const config = (0, config_1.loadConfig)();
52
+ if (!config.serviceAgreementAddress)
53
+ throw new Error("serviceAgreementAddress missing in config");
54
+ const { signer } = await (0, client_1.requireSigner)(config);
55
+ const modeMap = { unilateral: sdk_1.DisputeMode.UNILATERAL, mutual: sdk_1.DisputeMode.MUTUAL };
56
+ const classMap = {
57
+ 'hard-failure': sdk_1.DisputeClass.HARD_FAILURE,
58
+ 'ambiguity': sdk_1.DisputeClass.AMBIGUITY_QUALITY,
59
+ 'high-sensitivity': sdk_1.DisputeClass.HIGH_SENSITIVITY,
60
+ };
61
+ const mode = modeMap[String(opts.mode).toLowerCase()];
62
+ const disputeClass = classMap[String(opts.class).toLowerCase()];
63
+ if (!mode || !disputeClass)
64
+ throw new Error("Invalid --mode or --class");
65
+ (0, wallet_router_1.printSenderInfo)(config);
66
+ if (config.walletContractAddress) {
67
+ await (0, wallet_router_1.executeContractWriteViaWallet)(config.walletContractAddress, signer, config.serviceAgreementAddress, abis_1.SERVICE_AGREEMENT_ABI, "openDisputeWithMode", [BigInt(agreementId), mode, disputeClass, opts.reason], BigInt(opts.fee));
68
+ }
69
+ else {
70
+ const client = new sdk_1.ServiceAgreementClient(config.serviceAgreementAddress, signer);
71
+ await client.openDisputeWithMode(BigInt(agreementId), mode, disputeClass, opts.reason, BigInt(opts.fee));
72
+ }
73
+ console.log(`dispute opened for ${agreementId} (${opts.mode} / ${opts.class})`);
74
+ });
75
+ // Join mutual dispute (respondent pays their half) — DisputeArbitration contract, no wallet routing
76
+ dispute.command("join <agreementId>")
77
+ .description("Join a mutual dispute as respondent (pays half the fee)")
78
+ .option("--fee <fee>", "Half-fee in wei (for ETH agreements)", "0")
79
+ .action(async (agreementId, opts) => {
80
+ const config = (0, config_1.loadConfig)();
81
+ if (!config.disputeArbitrationAddress)
82
+ throw new Error("disputeArbitrationAddress missing in config");
83
+ const { signer } = await (0, client_1.requireSigner)(config);
84
+ const client = new sdk_1.DisputeArbitrationClient(config.disputeArbitrationAddress, signer);
85
+ await client.joinMutualDispute(BigInt(agreementId), BigInt(opts.fee));
86
+ console.log(`joined mutual dispute ${agreementId}`);
87
+ });
88
+ dispute.command("open <id>")
89
+ .requiredOption("--reason <reason>")
90
+ .option("--escalated", "Use escalateToDispute after remediation", false)
91
+ .option("--direct <type>", "Direct-dispute hard-fail reason: no-delivery|deadline-breach|invalid-deliverable|safety-critical")
92
+ .action(async (id, opts) => {
93
+ const config = (0, config_1.loadConfig)();
94
+ if (!config.serviceAgreementAddress)
95
+ throw new Error("serviceAgreementAddress missing in config");
96
+ // Pre-flight: check disputeModule is configured (J4-01)
97
+ {
98
+ const { provider: dpProvider } = await (0, client_1.getClient)(config);
99
+ const saCheck = new ethers_1.ethers.Contract(config.serviceAgreementAddress, ["function disputeModule() external view returns (address)"], dpProvider);
100
+ let disputeModuleAddr = ethers_1.ethers.ZeroAddress;
101
+ try {
102
+ disputeModuleAddr = await saCheck.disputeModule();
103
+ }
104
+ catch { /* assume not configured */ }
105
+ if (disputeModuleAddr === ethers_1.ethers.ZeroAddress) {
106
+ console.error(`No dispute module configured on this ServiceAgreement.`);
107
+ console.error(`Disputes require a DisputeModule to be set by the SA owner.`);
108
+ console.error(`This protocol deployment may not support formal disputes.`);
109
+ process.exit(1);
110
+ }
111
+ }
112
+ // Pre-flight: read dispute fee and prompt user (J4-02)
113
+ if (config.disputeArbitrationAddress) {
114
+ const { provider: feeProvider } = await (0, client_1.getClient)(config);
115
+ const daCheck = new ethers_1.ethers.Contract(config.disputeArbitrationAddress, ["function getDisputeFee() external view returns (uint256)"], feeProvider);
116
+ let feeWei = 0n;
117
+ try {
118
+ feeWei = await daCheck.getDisputeFee();
119
+ }
120
+ catch { /* fee getter may not exist — assume 0 */ }
121
+ if (feeWei > 0n) {
122
+ const feeEth = ethers_1.ethers.formatEther(feeWei);
123
+ console.log(`\nDispute fee: ${feeEth} ETH. This will be deducted from your wallet.`);
124
+ const { proceed } = await (0, prompts_1.default)({
125
+ type: "confirm",
126
+ name: "proceed",
127
+ message: "Continue?",
128
+ initial: true,
129
+ });
130
+ if (!proceed) {
131
+ console.log("Aborted.");
132
+ process.exit(0);
133
+ }
134
+ }
135
+ }
136
+ const { signer } = await (0, client_1.requireSigner)(config);
137
+ const directMap = {
138
+ 'no-delivery': sdk_1.DirectDisputeReason.NO_DELIVERY,
139
+ 'deadline-breach': sdk_1.DirectDisputeReason.HARD_DEADLINE_BREACH,
140
+ 'invalid-deliverable': sdk_1.DirectDisputeReason.INVALID_OR_FRAUDULENT_DELIVERABLE,
141
+ 'safety-critical': sdk_1.DirectDisputeReason.SAFETY_CRITICAL_VIOLATION,
142
+ };
143
+ if (opts.escalated && opts.direct)
144
+ throw new Error('Choose either --escalated or --direct, not both');
145
+ (0, wallet_router_1.printSenderInfo)(config);
146
+ if (config.walletContractAddress) {
147
+ if (opts.direct) {
148
+ const directReason = directMap[String(opts.direct).toLowerCase()];
149
+ if (directReason === undefined)
150
+ throw new Error('Unsupported --direct reason');
151
+ await (0, wallet_router_1.executeContractWriteViaWallet)(config.walletContractAddress, signer, config.serviceAgreementAddress, abis_1.SERVICE_AGREEMENT_ABI, "directDispute", [BigInt(id), directReason, opts.reason]);
152
+ }
153
+ else if (opts.escalated) {
154
+ await (0, wallet_router_1.executeContractWriteViaWallet)(config.walletContractAddress, signer, config.serviceAgreementAddress, abis_1.SERVICE_AGREEMENT_ABI, "escalateToDispute", [BigInt(id), opts.reason]);
155
+ }
156
+ else {
157
+ await (0, wallet_router_1.executeContractWriteViaWallet)(config.walletContractAddress, signer, config.serviceAgreementAddress, abis_1.SERVICE_AGREEMENT_ABI, "dispute", [BigInt(id), opts.reason]);
158
+ }
159
+ }
160
+ else {
161
+ const client = new sdk_1.ServiceAgreementClient(config.serviceAgreementAddress, signer);
162
+ if (opts.direct) {
163
+ const directReason = directMap[String(opts.direct).toLowerCase()];
164
+ if (directReason === undefined)
165
+ throw new Error('Unsupported --direct reason');
166
+ await client.directDispute(BigInt(id), directReason, opts.reason);
167
+ }
168
+ else if (opts.escalated) {
169
+ await client.escalateToDispute(BigInt(id), opts.reason);
170
+ }
171
+ else {
172
+ await client.dispute(BigInt(id), opts.reason);
173
+ }
174
+ }
175
+ console.log(`dispute opened for ${id}`);
176
+ // J4-04: Display arbitration selection window deadline
177
+ try {
178
+ const { provider: dpAW } = await (0, client_1.getClient)(config);
179
+ const saAW = new ethers_1.ethers.Contract(config.serviceAgreementAddress, ["function ARBITRATION_SELECTION_WINDOW() external view returns (uint256)"], dpAW);
180
+ const selectionWindow = await saAW.ARBITRATION_SELECTION_WINDOW();
181
+ const deadlineDate = new Date(Date.now() + Number(selectionWindow) * 1000);
182
+ console.log(`Arbitration selection window closes: ${deadlineDate.toLocaleString()}. An arbitrator must be assigned before then.`);
183
+ }
184
+ catch { /* not available on this deployment */ }
185
+ });
186
+ dispute.command("evidence <id>").requiredOption("--type <type>", "transcript|deliverable|acceptance|communication|external|other").option("--file <path>").option("--text <text>").option("--uri <uri>", "External evidence URI", "").action(async (id, opts) => {
187
+ const config = (0, config_1.loadConfig)();
188
+ if (!config.serviceAgreementAddress)
189
+ throw new Error("serviceAgreementAddress missing in config");
190
+ const { signer } = await (0, client_1.requireSigner)(config);
191
+ const mapping = { transcript: sdk_1.EvidenceType.TRANSCRIPT, deliverable: sdk_1.EvidenceType.DELIVERABLE, acceptance: sdk_1.EvidenceType.ACCEPTANCE_CRITERIA, communication: sdk_1.EvidenceType.COMMUNICATION, external: sdk_1.EvidenceType.EXTERNAL_REFERENCE, other: sdk_1.EvidenceType.OTHER };
192
+ const hash = opts.file ? (0, hash_1.hashFile)(opts.file) : (0, hash_1.hashString)(opts.text ?? opts.uri ?? `evidence:${id}`);
193
+ const evidenceType = mapping[String(opts.type).toLowerCase()] ?? sdk_1.EvidenceType.OTHER;
194
+ (0, wallet_router_1.printSenderInfo)(config);
195
+ if (config.walletContractAddress) {
196
+ await (0, wallet_router_1.executeContractWriteViaWallet)(config.walletContractAddress, signer, config.serviceAgreementAddress, abis_1.SERVICE_AGREEMENT_ABI, "submitDisputeEvidence", [BigInt(id), evidenceType, hash, opts.uri]);
197
+ }
198
+ else {
199
+ const client = new sdk_1.ServiceAgreementClient(config.serviceAgreementAddress, signer);
200
+ await client.submitDisputeEvidence(BigInt(id), evidenceType, hash, opts.uri);
201
+ }
202
+ console.log(`evidence submitted for ${id} hash=${hash}`);
203
+ });
204
+ // status — read-only, no wallet routing needed
205
+ dispute.command("status <id>").option("--json").action(async (id, opts) => {
206
+ const config = (0, config_1.loadConfig)();
207
+ if (!config.serviceAgreementAddress)
208
+ throw new Error("serviceAgreementAddress missing in config");
209
+ const { provider } = await (0, client_1.getClient)(config);
210
+ const client = new sdk_1.ServiceAgreementClient(config.serviceAgreementAddress, provider);
211
+ const result = {
212
+ case: await client.getDisputeCase(BigInt(id)),
213
+ arbitration: await client.getArbitrationCase(BigInt(id)),
214
+ evidence: await client.getDisputeEvidenceAll(BigInt(id)),
215
+ };
216
+ console.log(JSON.stringify(result, (_k, value) => typeof value === 'bigint' ? value.toString() : value, opts.json ? 2 : 2));
217
+ });
218
+ dispute.command("nominate <id>")
219
+ .description("Nominate an arbitrator during the on-chain arbitration phase")
220
+ .requiredOption("--arbitrator <address>")
221
+ .action(async (id, opts) => {
222
+ const config = (0, config_1.loadConfig)();
223
+ if (!config.serviceAgreementAddress)
224
+ throw new Error("serviceAgreementAddress missing in config");
225
+ // Pre-flight: check arbitrator is approved (J4-03)
226
+ if (config.disputeArbitrationAddress) {
227
+ const { provider: arbProvider } = await (0, client_1.getClient)(config);
228
+ const daCheck = new ethers_1.ethers.Contract(config.disputeArbitrationAddress, ["function isApprovedArbitrator(address arbitrator) external view returns (bool)"], arbProvider);
229
+ let isApproved = true;
230
+ try {
231
+ isApproved = await daCheck.isApprovedArbitrator(opts.arbitrator);
232
+ }
233
+ catch { /* assume approved if read fails */ }
234
+ if (!isApproved) {
235
+ console.error(`Arbitrator ${opts.arbitrator} is not approved.`);
236
+ console.error(`Use \`arc402 dispute list-arbitrators\` to see approved arbitrators.`);
237
+ process.exit(1);
238
+ }
239
+ }
240
+ const { signer } = await (0, client_1.requireSigner)(config);
241
+ (0, wallet_router_1.printSenderInfo)(config);
242
+ if (config.walletContractAddress) {
243
+ await (0, wallet_router_1.executeContractWriteViaWallet)(config.walletContractAddress, signer, config.serviceAgreementAddress, abis_1.SERVICE_AGREEMENT_ABI, "nominateArbitrator", [BigInt(id), opts.arbitrator]);
244
+ }
245
+ else {
246
+ const client = new sdk_1.ServiceAgreementClient(config.serviceAgreementAddress, signer);
247
+ await client.nominateArbitrator(BigInt(id), opts.arbitrator);
248
+ }
249
+ console.log(`arbitrator nominated for ${id}: ${opts.arbitrator}`);
250
+ });
251
+ dispute.command("vote <id>")
252
+ .description("Cast an arbitration vote on-chain")
253
+ .requiredOption("--vote <vote>", "provider|refund|split|human-review")
254
+ .option("--provider-award <amount>", "Wei/token units", "0")
255
+ .option("--client-award <amount>", "Wei/token units", "0")
256
+ .action(async (id, opts) => {
257
+ const config = (0, config_1.loadConfig)();
258
+ if (!config.serviceAgreementAddress)
259
+ throw new Error("serviceAgreementAddress missing in config");
260
+ const { signer, address: voterAddress, provider: voteProvider } = await (0, client_1.requireSigner)(config);
261
+ // J4-05: Pre-flight — verify caller is on the arbitration panel
262
+ try {
263
+ const saClient = new sdk_1.ServiceAgreementClient(config.serviceAgreementAddress, voteProvider);
264
+ const arbCase = await saClient.getArbitrationCase(BigInt(id));
265
+ const onPanel = arbCase.arbitrators.map((a) => a.toLowerCase()).includes(voterAddress.toLowerCase());
266
+ if (!onPanel) {
267
+ console.error(`You are not on the arbitration panel for agreement ${id}. Only assigned arbitrators can vote.`);
268
+ process.exit(1);
269
+ }
270
+ }
271
+ catch (e) {
272
+ if (e?.code === 'ERR_USE_AFTER_CLOSE' || String(e).includes('process.exit'))
273
+ throw e;
274
+ // If read fails, skip the check and let the transaction reveal the error
275
+ }
276
+ const mapping = {
277
+ provider: sdk_1.ArbitrationVote.PROVIDER_WINS,
278
+ refund: sdk_1.ArbitrationVote.CLIENT_REFUND,
279
+ split: sdk_1.ArbitrationVote.SPLIT,
280
+ 'human-review': sdk_1.ArbitrationVote.HUMAN_REVIEW_REQUIRED,
281
+ };
282
+ const vote = mapping[String(opts.vote).toLowerCase()];
283
+ if (vote === undefined)
284
+ throw new Error('Unsupported --vote value');
285
+ (0, wallet_router_1.printSenderInfo)(config);
286
+ if (config.walletContractAddress) {
287
+ await (0, wallet_router_1.executeContractWriteViaWallet)(config.walletContractAddress, signer, config.serviceAgreementAddress, abis_1.SERVICE_AGREEMENT_ABI, "castArbitrationVote", [BigInt(id), vote, BigInt(opts.providerAward), BigInt(opts.clientAward)]);
288
+ }
289
+ else {
290
+ const client = new sdk_1.ServiceAgreementClient(config.serviceAgreementAddress, signer);
291
+ await client.castArbitrationVote(BigInt(id), vote, BigInt(opts.providerAward), BigInt(opts.clientAward));
292
+ }
293
+ console.log(`arbitration vote recorded for ${id}`);
294
+ });
295
+ dispute.command("human <id>")
296
+ .description("Request human escalation when arbitration stalls or requires human backstop")
297
+ .requiredOption("--reason <reason>")
298
+ .action(async (id, opts) => {
299
+ const config = (0, config_1.loadConfig)();
300
+ if (!config.serviceAgreementAddress)
301
+ throw new Error("serviceAgreementAddress missing in config");
302
+ const { signer } = await (0, client_1.requireSigner)(config);
303
+ (0, wallet_router_1.printSenderInfo)(config);
304
+ if (config.walletContractAddress) {
305
+ await (0, wallet_router_1.executeContractWriteViaWallet)(config.walletContractAddress, signer, config.serviceAgreementAddress, abis_1.SERVICE_AGREEMENT_ABI, "requestHumanEscalation", [BigInt(id), opts.reason]);
306
+ }
307
+ else {
308
+ const client = new sdk_1.ServiceAgreementClient(config.serviceAgreementAddress, signer);
309
+ await client.requestHumanEscalation(BigInt(id), opts.reason);
310
+ }
311
+ console.log(`human escalation requested for ${id}`);
312
+ });
313
+ dispute.command("resolve <id>").description("Owner-only admin path if you are operating the dispute contract").requiredOption("--outcome <outcome>", "provider|refund|partial-provider|partial-client|mutual-cancel|human-review").option("--provider-award <amount>", "Wei/token units", "0").option("--client-award <amount>", "Wei/token units", "0").action(async (id, opts) => {
314
+ const config = (0, config_1.loadConfig)();
315
+ if (!config.serviceAgreementAddress)
316
+ throw new Error("serviceAgreementAddress missing in config");
317
+ const { signer } = await (0, client_1.requireSigner)(config);
318
+ const mapping = { provider: sdk_1.DisputeOutcome.PROVIDER_WINS, refund: sdk_1.DisputeOutcome.CLIENT_REFUND, 'partial-provider': sdk_1.DisputeOutcome.PARTIAL_PROVIDER, 'partial-client': sdk_1.DisputeOutcome.PARTIAL_CLIENT, 'mutual-cancel': sdk_1.DisputeOutcome.MUTUAL_CANCEL, 'human-review': sdk_1.DisputeOutcome.HUMAN_REVIEW_REQUIRED };
319
+ (0, wallet_router_1.printSenderInfo)(config);
320
+ if (config.walletContractAddress) {
321
+ await (0, wallet_router_1.executeContractWriteViaWallet)(config.walletContractAddress, signer, config.serviceAgreementAddress, abis_1.SERVICE_AGREEMENT_ABI, "resolveDisputeDetailed", [BigInt(id), mapping[String(opts.outcome)], BigInt(opts.providerAward), BigInt(opts.clientAward)]);
322
+ }
323
+ else {
324
+ const client = new sdk_1.ServiceAgreementClient(config.serviceAgreementAddress, signer);
325
+ await client.resolveDisputeDetailed(BigInt(id), mapping[String(opts.outcome)], BigInt(opts.providerAward), BigInt(opts.clientAward));
326
+ }
327
+ console.log(`resolved ${id}`);
328
+ });
329
+ dispute.command("owner-resolve <agreementId>")
330
+ .description("Owner-only: resolve a dispute directly in favor of provider or client. Requires DISPUTED or ESCALATED_TO_HUMAN status.")
331
+ .option("--favor-provider", "Resolve in favor of the provider (default: false = favor client)", false)
332
+ .action(async (agreementId, opts) => {
333
+ const config = (0, config_1.loadConfig)();
334
+ if (!config.serviceAgreementAddress)
335
+ throw new Error("serviceAgreementAddress missing in config");
336
+ const { signer } = await (0, client_1.requireSigner)(config);
337
+ (0, wallet_router_1.printSenderInfo)(config);
338
+ if (config.walletContractAddress) {
339
+ await (0, wallet_router_1.executeContractWriteViaWallet)(config.walletContractAddress, signer, config.serviceAgreementAddress, abis_1.SERVICE_AGREEMENT_ABI, "ownerResolveDispute", [BigInt(agreementId), !!opts.favorProvider]);
340
+ }
341
+ else {
342
+ const client = new sdk_1.ServiceAgreementClient(config.serviceAgreementAddress, signer);
343
+ await client.ownerResolveDispute(BigInt(agreementId), !!opts.favorProvider);
344
+ }
345
+ console.log(`owner resolved agreement ${agreementId} — favor provider: ${!!opts.favorProvider}`);
346
+ });
347
+ }
348
+ //# sourceMappingURL=dispute.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dispute.js","sourceRoot":"","sources":["../../src/commands/dispute.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from "commander";
2
+ export declare function registerEndpointCommands(program: Command): void;
3
+ //# sourceMappingURL=endpoint.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"endpoint.d.ts","sourceRoot":"","sources":["../../src/commands/endpoint.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAwbpC,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAkL/D"}