arc402-cli 1.3.12 → 1.3.13
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../../src/commands/verify.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../../src/commands/verify.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAuBpC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA6F5D"}
|
package/dist/commands/verify.js
CHANGED
|
@@ -6,7 +6,9 @@ const ethers_1 = require("ethers");
|
|
|
6
6
|
const config_1 = require("../config");
|
|
7
7
|
const client_1 = require("../client");
|
|
8
8
|
const wallet_router_1 = require("../wallet-router");
|
|
9
|
+
const walletconnect_1 = require("../walletconnect");
|
|
9
10
|
const abis_1 = require("../abis");
|
|
11
|
+
const colors_1 = require("../ui/colors");
|
|
10
12
|
const spinner_1 = require("../ui/spinner");
|
|
11
13
|
// Agreement status values from the contract
|
|
12
14
|
const AGREEMENT_STATUS_NAMES = {
|
|
@@ -24,6 +26,8 @@ function registerVerifyCommand(program) {
|
|
|
24
26
|
.command("verify <id>")
|
|
25
27
|
.description("Client verifies delivered work and releases escrow")
|
|
26
28
|
.option("--auto", "Call autoRelease instead (for when verify window has elapsed and client is silent)")
|
|
29
|
+
.option("--use-eoa", "Sign directly with machine key EOA (bypasses smart wallet)")
|
|
30
|
+
.option("--skip-status-check", "Skip the PENDING_VERIFICATION pre-flight check")
|
|
27
31
|
.option("--json")
|
|
28
32
|
.action(async (id, opts) => {
|
|
29
33
|
const config = (0, config_1.loadConfig)();
|
|
@@ -33,7 +37,7 @@ function registerVerifyCommand(program) {
|
|
|
33
37
|
(0, wallet_router_1.printSenderInfo)(config);
|
|
34
38
|
const spinner = (0, spinner_1.startSpinner)('Submitting…');
|
|
35
39
|
// Pre-flight: check agreement is in PENDING_VERIFICATION status (J2-04)
|
|
36
|
-
if (!opts.auto) {
|
|
40
|
+
if (!opts.auto && !opts.skipStatusCheck) {
|
|
37
41
|
const PENDING_VERIFICATION_STATUS = 3;
|
|
38
42
|
const { provider: verifyProvider } = await (0, client_1.getClient)(config);
|
|
39
43
|
const saCheck = new ethers_1.ethers.Contract(config.serviceAgreementAddress, ["function getAgreement(uint256 id) external view returns (tuple(uint256 id, address client, address provider, string serviceType, string description, uint256 price, address token, uint256 deadline, bytes32 deliverablesHash, uint8 status, uint256 createdAt, uint256 resolvedAt, uint256 verifyWindowEnd, bytes32 committedHash))"], verifyProvider);
|
|
@@ -55,30 +59,49 @@ function registerVerifyCommand(program) {
|
|
|
55
59
|
throw e;
|
|
56
60
|
}
|
|
57
61
|
}
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
62
|
+
const fn = opts.auto ? "autoRelease" : "verifyDeliverable";
|
|
63
|
+
if (config.walletContractAddress && !opts.useEoa) {
|
|
64
|
+
// WalletConnect path — owner approves on phone
|
|
65
|
+
if (!config.walletConnectProjectId) {
|
|
66
|
+
console.error(colors_1.c.failure + " walletConnectProjectId not set. Run `arc402 config set walletConnectProjectId <id>`.");
|
|
67
|
+
process.exit(1);
|
|
64
68
|
}
|
|
65
|
-
|
|
66
|
-
|
|
69
|
+
const chainId = config.network === "base-mainnet" ? 8453 : 84532;
|
|
70
|
+
const provider = new ethers_1.ethers.JsonRpcProvider(config.rpcUrl);
|
|
71
|
+
const saIface = new ethers_1.ethers.Interface(abis_1.SERVICE_AGREEMENT_ABI);
|
|
72
|
+
const walletIface = new ethers_1.ethers.Interface([
|
|
73
|
+
"function executeContractCall((address target, bytes data, uint256 value, uint256 minReturnValue, uint256 maxApprovalAmount, address approvalToken)) external returns (bytes)",
|
|
74
|
+
]);
|
|
75
|
+
const innerData = saIface.encodeFunctionData(fn, [BigInt(id)]);
|
|
76
|
+
const callData = walletIface.encodeFunctionData("executeContractCall", [{
|
|
77
|
+
target: config.serviceAgreementAddress,
|
|
78
|
+
data: innerData,
|
|
79
|
+
value: 0n,
|
|
80
|
+
minReturnValue: 0n,
|
|
81
|
+
maxApprovalAmount: 0n,
|
|
82
|
+
approvalToken: ethers_1.ethers.ZeroAddress,
|
|
83
|
+
}]);
|
|
84
|
+
const telegramOpts = config.telegramBotToken && config.telegramChatId
|
|
85
|
+
? { botToken: config.telegramBotToken, chatId: config.telegramChatId, threadId: config.telegramThreadId }
|
|
86
|
+
: undefined;
|
|
87
|
+
spinner.stop();
|
|
88
|
+
const { txHash } = await (0, walletconnect_1.requestPhoneWalletSignature)(config.walletConnectProjectId, chainId, () => ({ to: config.walletContractAddress, data: callData, value: "0x0" }), `Approve: ${fn} agreement #${id} — release escrow`, telegramOpts, config);
|
|
89
|
+
spinner.update('Waiting for confirmation...');
|
|
90
|
+
await provider.waitForTransaction(txHash);
|
|
91
|
+
if (opts.json)
|
|
92
|
+
return console.log(JSON.stringify({ agreementId: id, action: fn, txHash }));
|
|
93
|
+
spinner.succeed(`${opts.auto ? 'Auto-released' : 'Verified'} — agreement #${id} — escrow released`);
|
|
94
|
+
}
|
|
95
|
+
else {
|
|
96
|
+
// EOA path — direct call or no wallet contract
|
|
97
|
+
const client = new sdk_1.ServiceAgreementClient(config.serviceAgreementAddress, signer);
|
|
98
|
+
if (opts.auto) {
|
|
67
99
|
const tx = await client.autoRelease(BigInt(id));
|
|
68
100
|
if (opts.json)
|
|
69
101
|
return console.log(JSON.stringify({ agreementId: id, action: "autoRelease", txHash: tx.hash }));
|
|
70
102
|
spinner.succeed('Auto-released — agreement #' + id + ' — tx ' + tx.hash.slice(0, 10) + '...');
|
|
71
103
|
}
|
|
72
|
-
}
|
|
73
|
-
else {
|
|
74
|
-
if (config.walletContractAddress) {
|
|
75
|
-
const tx = await (0, wallet_router_1.executeContractWriteViaWallet)(config.walletContractAddress, signer, config.serviceAgreementAddress, abis_1.SERVICE_AGREEMENT_ABI, "verifyDeliverable", [BigInt(id)]);
|
|
76
|
-
if (opts.json)
|
|
77
|
-
return console.log(JSON.stringify({ agreementId: id, action: "verifyDeliverable", txHash: tx.hash }));
|
|
78
|
-
spinner.succeed('Verified — agreement #' + id + ' — escrow released');
|
|
79
|
-
}
|
|
80
104
|
else {
|
|
81
|
-
const client = new sdk_1.ServiceAgreementClient(config.serviceAgreementAddress, signer);
|
|
82
105
|
const tx = await client.verifyDeliverable(BigInt(id));
|
|
83
106
|
if (opts.json)
|
|
84
107
|
return console.log(JSON.stringify({ agreementId: id, action: "verifyDeliverable", txHash: tx.hash }));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verify.js","sourceRoot":"","sources":["../../src/commands/verify.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"verify.js","sourceRoot":"","sources":["../../src/commands/verify.ts"],"names":[],"mappings":"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"}
|