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.
- package/README.md +245 -0
- package/dist/abis.d.ts +19 -0
- package/dist/abis.d.ts.map +1 -0
- package/dist/abis.js +177 -0
- package/dist/abis.js.map +1 -0
- package/dist/bundler.d.ts +65 -0
- package/dist/bundler.d.ts.map +1 -0
- package/dist/bundler.js +181 -0
- package/dist/bundler.js.map +1 -0
- package/dist/client.d.ts +14 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +24 -0
- package/dist/client.js.map +1 -0
- package/dist/coinbase-smart-wallet.d.ts +28 -0
- package/dist/coinbase-smart-wallet.d.ts.map +1 -0
- package/dist/coinbase-smart-wallet.js +38 -0
- package/dist/coinbase-smart-wallet.js.map +1 -0
- package/dist/commands/accept.d.ts +3 -0
- package/dist/commands/accept.d.ts.map +1 -0
- package/dist/commands/accept.js +26 -0
- package/dist/commands/accept.js.map +1 -0
- package/dist/commands/agent-handshake.d.ts +3 -0
- package/dist/commands/agent-handshake.d.ts.map +1 -0
- package/dist/commands/agent-handshake.js +61 -0
- package/dist/commands/agent-handshake.js.map +1 -0
- package/dist/commands/agent.d.ts +3 -0
- package/dist/commands/agent.d.ts.map +1 -0
- package/dist/commands/agent.js +417 -0
- package/dist/commands/agent.js.map +1 -0
- package/dist/commands/agreements.d.ts +3 -0
- package/dist/commands/agreements.d.ts.map +1 -0
- package/dist/commands/agreements.js +344 -0
- package/dist/commands/agreements.js.map +1 -0
- package/dist/commands/arbitrator.d.ts +3 -0
- package/dist/commands/arbitrator.d.ts.map +1 -0
- package/dist/commands/arbitrator.js +157 -0
- package/dist/commands/arbitrator.js.map +1 -0
- package/dist/commands/arena-handshake.d.ts +3 -0
- package/dist/commands/arena-handshake.d.ts.map +1 -0
- package/dist/commands/arena-handshake.js +187 -0
- package/dist/commands/arena-handshake.js.map +1 -0
- package/dist/commands/cancel.d.ts +3 -0
- package/dist/commands/cancel.d.ts.map +1 -0
- package/dist/commands/cancel.js +30 -0
- package/dist/commands/cancel.js.map +1 -0
- package/dist/commands/channel.d.ts +3 -0
- package/dist/commands/channel.d.ts.map +1 -0
- package/dist/commands/channel.js +238 -0
- package/dist/commands/channel.js.map +1 -0
- package/dist/commands/coldstart.d.ts +3 -0
- package/dist/commands/coldstart.d.ts.map +1 -0
- package/dist/commands/coldstart.js +148 -0
- package/dist/commands/coldstart.js.map +1 -0
- package/dist/commands/config.d.ts +3 -0
- package/dist/commands/config.d.ts.map +1 -0
- package/dist/commands/config.js +40 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/contract-interaction.d.ts +3 -0
- package/dist/commands/contract-interaction.d.ts.map +1 -0
- package/dist/commands/contract-interaction.js +165 -0
- package/dist/commands/contract-interaction.js.map +1 -0
- package/dist/commands/daemon.d.ts +3 -0
- package/dist/commands/daemon.d.ts.map +1 -0
- package/dist/commands/daemon.js +891 -0
- package/dist/commands/daemon.js.map +1 -0
- package/dist/commands/deliver.d.ts +3 -0
- package/dist/commands/deliver.d.ts.map +1 -0
- package/dist/commands/deliver.js +156 -0
- package/dist/commands/deliver.js.map +1 -0
- package/dist/commands/discover.d.ts +3 -0
- package/dist/commands/discover.d.ts.map +1 -0
- package/dist/commands/discover.js +224 -0
- package/dist/commands/discover.js.map +1 -0
- package/dist/commands/dispute.d.ts +3 -0
- package/dist/commands/dispute.d.ts.map +1 -0
- package/dist/commands/dispute.js +348 -0
- package/dist/commands/dispute.js.map +1 -0
- package/dist/commands/endpoint.d.ts +3 -0
- package/dist/commands/endpoint.d.ts.map +1 -0
- package/dist/commands/endpoint.js +604 -0
- package/dist/commands/endpoint.js.map +1 -0
- package/dist/commands/hire.d.ts +3 -0
- package/dist/commands/hire.d.ts.map +1 -0
- package/dist/commands/hire.js +189 -0
- package/dist/commands/hire.js.map +1 -0
- package/dist/commands/migrate.d.ts +3 -0
- package/dist/commands/migrate.d.ts.map +1 -0
- package/dist/commands/migrate.js +163 -0
- package/dist/commands/migrate.js.map +1 -0
- package/dist/commands/negotiate.d.ts +3 -0
- package/dist/commands/negotiate.d.ts.map +1 -0
- package/dist/commands/negotiate.js +247 -0
- package/dist/commands/negotiate.js.map +1 -0
- package/dist/commands/openshell.d.ts +3 -0
- package/dist/commands/openshell.d.ts.map +1 -0
- package/dist/commands/openshell.js +952 -0
- package/dist/commands/openshell.js.map +1 -0
- package/dist/commands/owner.d.ts +3 -0
- package/dist/commands/owner.d.ts.map +1 -0
- package/dist/commands/owner.js +32 -0
- package/dist/commands/owner.js.map +1 -0
- package/dist/commands/policy.d.ts +4 -0
- package/dist/commands/policy.d.ts.map +1 -0
- package/dist/commands/policy.js +248 -0
- package/dist/commands/policy.js.map +1 -0
- package/dist/commands/relay.d.ts +3 -0
- package/dist/commands/relay.d.ts.map +1 -0
- package/dist/commands/relay.js +279 -0
- package/dist/commands/relay.js.map +1 -0
- package/dist/commands/remediate.d.ts +3 -0
- package/dist/commands/remediate.d.ts.map +1 -0
- package/dist/commands/remediate.js +42 -0
- package/dist/commands/remediate.js.map +1 -0
- package/dist/commands/reputation.d.ts +4 -0
- package/dist/commands/reputation.d.ts.map +1 -0
- package/dist/commands/reputation.js +72 -0
- package/dist/commands/reputation.js.map +1 -0
- package/dist/commands/setup.d.ts +3 -0
- package/dist/commands/setup.d.ts.map +1 -0
- package/dist/commands/setup.js +332 -0
- package/dist/commands/setup.js.map +1 -0
- package/dist/commands/trust.d.ts +3 -0
- package/dist/commands/trust.d.ts.map +1 -0
- package/dist/commands/trust.js +23 -0
- package/dist/commands/trust.js.map +1 -0
- package/dist/commands/verify.d.ts +3 -0
- package/dist/commands/verify.d.ts.map +1 -0
- package/dist/commands/verify.js +88 -0
- package/dist/commands/verify.js.map +1 -0
- package/dist/commands/wallet.d.ts +3 -0
- package/dist/commands/wallet.d.ts.map +1 -0
- package/dist/commands/wallet.js +2520 -0
- package/dist/commands/wallet.js.map +1 -0
- package/dist/commands/watchtower.d.ts +3 -0
- package/dist/commands/watchtower.d.ts.map +1 -0
- package/dist/commands/watchtower.js +238 -0
- package/dist/commands/watchtower.js.map +1 -0
- package/dist/commands/workroom.d.ts +3 -0
- package/dist/commands/workroom.d.ts.map +1 -0
- package/dist/commands/workroom.js +855 -0
- package/dist/commands/workroom.js.map +1 -0
- package/dist/config.d.ts +62 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +141 -0
- package/dist/config.js.map +1 -0
- package/dist/daemon/config.d.ts +74 -0
- package/dist/daemon/config.d.ts.map +1 -0
- package/dist/daemon/config.js +271 -0
- package/dist/daemon/config.js.map +1 -0
- package/dist/daemon/hire-listener.d.ts +31 -0
- package/dist/daemon/hire-listener.d.ts.map +1 -0
- package/dist/daemon/hire-listener.js +207 -0
- package/dist/daemon/hire-listener.js.map +1 -0
- package/dist/daemon/index.d.ts +29 -0
- package/dist/daemon/index.d.ts.map +1 -0
- package/dist/daemon/index.js +535 -0
- package/dist/daemon/index.js.map +1 -0
- package/dist/daemon/job-lifecycle.d.ts +62 -0
- package/dist/daemon/job-lifecycle.d.ts.map +1 -0
- package/dist/daemon/job-lifecycle.js +201 -0
- package/dist/daemon/job-lifecycle.js.map +1 -0
- package/dist/daemon/notify.d.ts +22 -0
- package/dist/daemon/notify.d.ts.map +1 -0
- package/dist/daemon/notify.js +148 -0
- package/dist/daemon/notify.js.map +1 -0
- package/dist/daemon/token-metering.d.ts +42 -0
- package/dist/daemon/token-metering.d.ts.map +1 -0
- package/dist/daemon/token-metering.js +178 -0
- package/dist/daemon/token-metering.js.map +1 -0
- package/dist/daemon/userops.d.ts +21 -0
- package/dist/daemon/userops.d.ts.map +1 -0
- package/dist/daemon/userops.js +88 -0
- package/dist/daemon/userops.js.map +1 -0
- package/dist/daemon/wallet-monitor.d.ts +16 -0
- package/dist/daemon/wallet-monitor.d.ts.map +1 -0
- package/dist/daemon/wallet-monitor.js +57 -0
- package/dist/daemon/wallet-monitor.js.map +1 -0
- package/dist/drain-v4.d.ts +2 -0
- package/dist/drain-v4.d.ts.map +1 -0
- package/dist/drain-v4.js +167 -0
- package/dist/drain-v4.js.map +1 -0
- package/dist/endpoint-config.d.ts +36 -0
- package/dist/endpoint-config.d.ts.map +1 -0
- package/dist/endpoint-config.js +96 -0
- package/dist/endpoint-config.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +79 -0
- package/dist/index.js.map +1 -0
- package/dist/openshell-runtime.d.ts +55 -0
- package/dist/openshell-runtime.d.ts.map +1 -0
- package/dist/openshell-runtime.js +268 -0
- package/dist/openshell-runtime.js.map +1 -0
- package/dist/signing.d.ts +2 -0
- package/dist/signing.d.ts.map +1 -0
- package/dist/signing.js +23 -0
- package/dist/signing.js.map +1 -0
- package/dist/telegram-notify.d.ts +23 -0
- package/dist/telegram-notify.d.ts.map +1 -0
- package/dist/telegram-notify.js +106 -0
- package/dist/telegram-notify.js.map +1 -0
- package/dist/ui/banner.d.ts +7 -0
- package/dist/ui/banner.d.ts.map +1 -0
- package/dist/ui/banner.js +37 -0
- package/dist/ui/banner.js.map +1 -0
- package/dist/ui/colors.d.ts +14 -0
- package/dist/ui/colors.d.ts.map +1 -0
- package/dist/ui/colors.js +29 -0
- package/dist/ui/colors.js.map +1 -0
- package/dist/ui/format.d.ts +26 -0
- package/dist/ui/format.d.ts.map +1 -0
- package/dist/ui/format.js +77 -0
- package/dist/ui/format.js.map +1 -0
- package/dist/ui/spinner.d.ts +8 -0
- package/dist/ui/spinner.d.ts.map +1 -0
- package/dist/ui/spinner.js +43 -0
- package/dist/ui/spinner.js.map +1 -0
- package/dist/utils/format.d.ts +10 -0
- package/dist/utils/format.d.ts.map +1 -0
- package/dist/utils/format.js +61 -0
- package/dist/utils/format.js.map +1 -0
- package/dist/utils/hash.d.ts +3 -0
- package/dist/utils/hash.d.ts.map +1 -0
- package/dist/utils/hash.js +43 -0
- package/dist/utils/hash.js.map +1 -0
- package/dist/utils/time.d.ts +3 -0
- package/dist/utils/time.d.ts.map +1 -0
- package/dist/utils/time.js +21 -0
- package/dist/utils/time.js.map +1 -0
- package/dist/wallet-router.d.ts +25 -0
- package/dist/wallet-router.d.ts.map +1 -0
- package/dist/wallet-router.js +153 -0
- package/dist/wallet-router.js.map +1 -0
- package/dist/walletconnect-session.d.ts +12 -0
- package/dist/walletconnect-session.d.ts.map +1 -0
- package/dist/walletconnect-session.js +26 -0
- package/dist/walletconnect-session.js.map +1 -0
- package/dist/walletconnect.d.ts +46 -0
- package/dist/walletconnect.d.ts.map +1 -0
- package/dist/walletconnect.js +267 -0
- package/dist/walletconnect.js.map +1 -0
- package/package.json +38 -0
- package/scripts/authorize-machine-key.ts +43 -0
- package/scripts/drain-wallet.ts +149 -0
- package/scripts/execute-spend-only.ts +81 -0
- package/scripts/register-agent-userop.ts +186 -0
- package/src/abis.ts +187 -0
- package/src/bundler.ts +235 -0
- package/src/client.ts +34 -0
- package/src/coinbase-smart-wallet.ts +51 -0
- package/src/commands/accept.ts +25 -0
- package/src/commands/agent-handshake.ts +67 -0
- package/src/commands/agent.ts +458 -0
- package/src/commands/agreements.ts +324 -0
- package/src/commands/arbitrator.ts +129 -0
- package/src/commands/arena-handshake.ts +217 -0
- package/src/commands/cancel.ts +26 -0
- package/src/commands/channel.ts +208 -0
- package/src/commands/coldstart.ts +156 -0
- package/src/commands/config.ts +35 -0
- package/src/commands/contract-interaction.ts +166 -0
- package/src/commands/daemon.ts +971 -0
- package/src/commands/deliver.ts +116 -0
- package/src/commands/discover.ts +295 -0
- package/src/commands/dispute.ts +373 -0
- package/src/commands/endpoint.ts +619 -0
- package/src/commands/hire.ts +200 -0
- package/src/commands/migrate.ts +175 -0
- package/src/commands/negotiate.ts +270 -0
- package/src/commands/openshell.ts +1053 -0
- package/src/commands/owner.ts +30 -0
- package/src/commands/policy.ts +252 -0
- package/src/commands/relay.ts +272 -0
- package/src/commands/remediate.ts +22 -0
- package/src/commands/reputation.ts +71 -0
- package/src/commands/setup.ts +343 -0
- package/src/commands/trust.ts +15 -0
- package/src/commands/verify.ts +88 -0
- package/src/commands/wallet.ts +2892 -0
- package/src/commands/watchtower.ts +232 -0
- package/src/commands/workroom.ts +889 -0
- package/src/config.ts +153 -0
- package/src/daemon/config.ts +308 -0
- package/src/daemon/hire-listener.ts +226 -0
- package/src/daemon/index.ts +609 -0
- package/src/daemon/job-lifecycle.ts +215 -0
- package/src/daemon/notify.ts +157 -0
- package/src/daemon/token-metering.ts +183 -0
- package/src/daemon/userops.ts +119 -0
- package/src/daemon/wallet-monitor.ts +90 -0
- package/src/drain-v4.ts +159 -0
- package/src/endpoint-config.ts +83 -0
- package/src/index.ts +75 -0
- package/src/openshell-runtime.ts +277 -0
- package/src/signing.ts +28 -0
- package/src/telegram-notify.ts +88 -0
- package/src/ui/banner.ts +41 -0
- package/src/ui/colors.ts +30 -0
- package/src/ui/format.ts +77 -0
- package/src/ui/spinner.ts +46 -0
- package/src/utils/format.ts +48 -0
- package/src/utils/hash.ts +5 -0
- package/src/utils/time.ts +15 -0
- package/src/wallet-router.ts +178 -0
- package/src/walletconnect-session.ts +27 -0
- package/src/walletconnect.ts +294 -0
- package/test/time.test.js +11 -0
- package/tsconfig.json +19 -0
|
@@ -0,0 +1,332 @@
|
|
|
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
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.registerSetupCommands = registerSetupCommands;
|
|
40
|
+
const net = __importStar(require("net"));
|
|
41
|
+
const child_process_1 = require("child_process");
|
|
42
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
43
|
+
const prompts_1 = __importDefault(require("prompts"));
|
|
44
|
+
const config_1 = require("../config");
|
|
45
|
+
const DAEMON_PORT = 4402;
|
|
46
|
+
// ─── Helpers ──────────────────────────────────────────────────────────────────
|
|
47
|
+
function checkPort(port) {
|
|
48
|
+
return new Promise((resolve) => {
|
|
49
|
+
const socket = new net.Socket();
|
|
50
|
+
socket.setTimeout(1000);
|
|
51
|
+
socket.on("connect", () => { socket.destroy(); resolve(true); });
|
|
52
|
+
socket.on("timeout", () => { socket.destroy(); resolve(false); });
|
|
53
|
+
socket.on("error", () => resolve(false));
|
|
54
|
+
socket.connect(port, "127.0.0.1");
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
function isNgrokInstalled() {
|
|
58
|
+
try {
|
|
59
|
+
(0, child_process_1.execSync)("which ngrok", { stdio: "ignore" });
|
|
60
|
+
return true;
|
|
61
|
+
}
|
|
62
|
+
catch {
|
|
63
|
+
return false;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
function sleep(ms) {
|
|
67
|
+
return new Promise((r) => setTimeout(r, ms));
|
|
68
|
+
}
|
|
69
|
+
// ─── Step handlers ────────────────────────────────────────────────────────────
|
|
70
|
+
async function stepDaemon() {
|
|
71
|
+
process.stdout.write("Checking relay daemon on port 4402… ");
|
|
72
|
+
const running = await checkPort(DAEMON_PORT);
|
|
73
|
+
if (running) {
|
|
74
|
+
console.log(chalk_1.default.green("✓ Daemon running on port 4402"));
|
|
75
|
+
return true;
|
|
76
|
+
}
|
|
77
|
+
console.log(chalk_1.default.yellow("not detected"));
|
|
78
|
+
const { start } = await (0, prompts_1.default)({
|
|
79
|
+
type: "confirm",
|
|
80
|
+
name: "start",
|
|
81
|
+
message: "Start the arc402 relay daemon now?",
|
|
82
|
+
initial: true,
|
|
83
|
+
});
|
|
84
|
+
if (!start) {
|
|
85
|
+
console.log(chalk_1.default.dim(" Skipping — continuing without a local daemon."));
|
|
86
|
+
return false;
|
|
87
|
+
}
|
|
88
|
+
// Attempt to start the daemon. Requires a configured wallet address; fall back
|
|
89
|
+
// gracefully if config is missing or the daemon does not answer quickly.
|
|
90
|
+
let address = "0x0000000000000000000000000000000000000000";
|
|
91
|
+
try {
|
|
92
|
+
if ((0, config_1.configExists)()) {
|
|
93
|
+
const cfg = (0, config_1.loadConfig)();
|
|
94
|
+
// Prefer the wallet address stored in config (Coinbase / EOA) if available.
|
|
95
|
+
address = cfg.address ?? address;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
catch { /* ignore — best-effort */ }
|
|
99
|
+
console.log(chalk_1.default.dim(" Spawning arc402 relay daemon…"));
|
|
100
|
+
const child = (0, child_process_1.spawn)("arc402", [
|
|
101
|
+
"relay", "daemon", "start",
|
|
102
|
+
"--relay", `http://localhost:${DAEMON_PORT}`,
|
|
103
|
+
"--address", address,
|
|
104
|
+
"--poll-interval", "2000",
|
|
105
|
+
"--on-message", "echo",
|
|
106
|
+
], { detached: true, stdio: "ignore" });
|
|
107
|
+
child.unref();
|
|
108
|
+
await sleep(1500);
|
|
109
|
+
const nowRunning = await checkPort(DAEMON_PORT);
|
|
110
|
+
if (nowRunning) {
|
|
111
|
+
console.log(chalk_1.default.green("✓ Daemon running on port 4402"));
|
|
112
|
+
return true;
|
|
113
|
+
}
|
|
114
|
+
console.log(chalk_1.default.yellow(" Daemon did not respond on port 4402 yet."));
|
|
115
|
+
console.log(chalk_1.default.dim(" If you haven't configured a wallet, run `arc402 config init` first."));
|
|
116
|
+
console.log(chalk_1.default.dim(" Then re-run this wizard.\n"));
|
|
117
|
+
return false;
|
|
118
|
+
}
|
|
119
|
+
async function stepNgrok() {
|
|
120
|
+
if (!isNgrokInstalled()) {
|
|
121
|
+
console.log(chalk_1.default.yellow("\nngrok is not installed. Install it first:\n"));
|
|
122
|
+
console.log(chalk_1.default.bold(" macOS (Homebrew)"));
|
|
123
|
+
console.log(" brew install ngrok/ngrok/ngrok\n");
|
|
124
|
+
console.log(chalk_1.default.bold(" Linux (apt)"));
|
|
125
|
+
console.log(" curl -sSL https://ngrok-agent.s3.amazonaws.com/ngrok.asc \\\n" +
|
|
126
|
+
" | sudo tee /etc/apt/trusted.gpg.d/ngrok.asc >/dev/null\n" +
|
|
127
|
+
" echo 'deb https://ngrok-agent.s3.amazonaws.com buster main' \\\n" +
|
|
128
|
+
" | sudo tee /etc/apt/sources.list.d/ngrok.list\n" +
|
|
129
|
+
" sudo apt update && sudo apt install ngrok\n");
|
|
130
|
+
console.log(chalk_1.default.bold(" Direct download"));
|
|
131
|
+
console.log(" https://ngrok.com/download\n");
|
|
132
|
+
console.log(chalk_1.default.dim("After installing, authenticate once:"));
|
|
133
|
+
console.log(" ngrok config add-authtoken <YOUR_TOKEN>\n");
|
|
134
|
+
console.log(chalk_1.default.dim("Then expose your relay:"));
|
|
135
|
+
console.log(` ngrok http ${DAEMON_PORT}\n`);
|
|
136
|
+
console.log(chalk_1.default.dim("Re-run this wizard and choose 'I have a public URL already'."));
|
|
137
|
+
return;
|
|
138
|
+
}
|
|
139
|
+
console.log(chalk_1.default.cyan(`\nStarting ngrok tunnel → port ${DAEMON_PORT}…`));
|
|
140
|
+
console.log(chalk_1.default.dim(" Copy the Forwarding URL shown below and register it with the agent registry."));
|
|
141
|
+
console.log(chalk_1.default.dim(" Press Ctrl+C to stop.\n"));
|
|
142
|
+
const ngrok = (0, child_process_1.spawn)("ngrok", ["http", String(DAEMON_PORT)], { stdio: "inherit" });
|
|
143
|
+
await new Promise((resolve) => { ngrok.on("exit", () => resolve()); });
|
|
144
|
+
}
|
|
145
|
+
async function stepSubdomainService(apiBase) {
|
|
146
|
+
let subdomain;
|
|
147
|
+
// Keep prompting until the user picks an available name or cancels
|
|
148
|
+
while (true) {
|
|
149
|
+
const result = await (0, prompts_1.default)({
|
|
150
|
+
type: "text",
|
|
151
|
+
name: "subdomain",
|
|
152
|
+
message: "Choose a subdomain name (e.g. my-agent → my-agent.arc402.xyz):",
|
|
153
|
+
hint: "lowercase letters, numbers, and hyphens only",
|
|
154
|
+
validate: (v) => /^[a-z0-9-]+$/.test(v) ? true : "Use lowercase letters, numbers, and hyphens only",
|
|
155
|
+
});
|
|
156
|
+
if (!result.subdomain)
|
|
157
|
+
return; // user cancelled
|
|
158
|
+
process.stdout.write(chalk_1.default.dim(` Checking availability of ${result.subdomain}.arc402.xyz… `));
|
|
159
|
+
try {
|
|
160
|
+
const checkRes = await fetch(`${apiBase}/check/${result.subdomain}`);
|
|
161
|
+
const checkData = await checkRes.json();
|
|
162
|
+
if (checkData.available) {
|
|
163
|
+
console.log(chalk_1.default.green("available"));
|
|
164
|
+
subdomain = result.subdomain;
|
|
165
|
+
break;
|
|
166
|
+
}
|
|
167
|
+
else {
|
|
168
|
+
console.log(chalk_1.default.red("taken"));
|
|
169
|
+
console.log(chalk_1.default.dim(" That name is already registered. Try another.\n"));
|
|
170
|
+
// loop and prompt again
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
catch {
|
|
174
|
+
console.log(chalk_1.default.yellow("could not check — continuing anyway"));
|
|
175
|
+
subdomain = result.subdomain;
|
|
176
|
+
break;
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
if (!subdomain)
|
|
180
|
+
return;
|
|
181
|
+
console.log(chalk_1.default.dim(`\n Using subdomain API: ${apiBase}`));
|
|
182
|
+
console.log(chalk_1.default.dim(` Registering ${subdomain} …`));
|
|
183
|
+
try {
|
|
184
|
+
const res = await fetch(`${apiBase}/register`, {
|
|
185
|
+
method: "POST",
|
|
186
|
+
headers: { "Content-Type": "application/json" },
|
|
187
|
+
body: JSON.stringify({ subdomain }),
|
|
188
|
+
});
|
|
189
|
+
const data = await res.json();
|
|
190
|
+
if (!res.ok) {
|
|
191
|
+
console.log(chalk_1.default.red(`\n✗ Registration failed: ${data.error ?? res.statusText}`));
|
|
192
|
+
return;
|
|
193
|
+
}
|
|
194
|
+
const endpoint = data.url ?? `https://${subdomain}.arc402.xyz`;
|
|
195
|
+
console.log(chalk_1.default.green(`\n✓ Subdomain registered: ${endpoint}`));
|
|
196
|
+
console.log(chalk_1.default.dim("\nRegister it with the agent registry:"));
|
|
197
|
+
console.log(` arc402 agent update --endpoint ${endpoint}`);
|
|
198
|
+
}
|
|
199
|
+
catch (err) {
|
|
200
|
+
console.log(chalk_1.default.red(`\n✗ Request failed: ${err instanceof Error ? err.message : String(err)}`));
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
async function stepManualUrl() {
|
|
204
|
+
const { url } = await (0, prompts_1.default)({
|
|
205
|
+
type: "text",
|
|
206
|
+
name: "url",
|
|
207
|
+
message: "Your public endpoint URL:",
|
|
208
|
+
hint: "e.g. https://my-node.example.com",
|
|
209
|
+
validate: (v) => v.startsWith("http://") || v.startsWith("https://")
|
|
210
|
+
? true
|
|
211
|
+
: "Must start with http:// or https://",
|
|
212
|
+
});
|
|
213
|
+
if (!url)
|
|
214
|
+
return;
|
|
215
|
+
console.log(chalk_1.default.green(`\n✓ Public endpoint: ${url}`));
|
|
216
|
+
console.log(chalk_1.default.dim("\nRegister it with the agent registry:"));
|
|
217
|
+
console.log(` arc402 agent update --endpoint ${url}`);
|
|
218
|
+
}
|
|
219
|
+
async function stepCloudflare() {
|
|
220
|
+
console.log(chalk_1.default.cyan("\nCloudflare Tunnel — quick-start:\n"));
|
|
221
|
+
console.log(chalk_1.default.bold(" 1. Install cloudflared"));
|
|
222
|
+
console.log(" brew install cloudflare/cloudflare/cloudflared # macOS");
|
|
223
|
+
console.log(" # Linux: https://developers.cloudflare.com/cloudflare-one/connections/connect-apps/install-and-setup/\n");
|
|
224
|
+
console.log(chalk_1.default.bold(" 2. Authenticate"));
|
|
225
|
+
console.log(" cloudflared tunnel login\n");
|
|
226
|
+
console.log(chalk_1.default.bold(" 3. Create and run a tunnel"));
|
|
227
|
+
console.log(" cloudflared tunnel create arc402-node");
|
|
228
|
+
console.log(" cloudflared tunnel route dns arc402-node <your-subdomain.example.com>");
|
|
229
|
+
console.log(` cloudflared tunnel run --url http://localhost:${DAEMON_PORT} arc402-node\n`);
|
|
230
|
+
console.log(chalk_1.default.dim("Then re-run this wizard and choose 'I have a public URL already'."));
|
|
231
|
+
}
|
|
232
|
+
// ─── Command registration ─────────────────────────────────────────────────────
|
|
233
|
+
function registerSetupCommands(program) {
|
|
234
|
+
const setup = program
|
|
235
|
+
.command("setup")
|
|
236
|
+
.description("Onboarding wizards for first-time node operators");
|
|
237
|
+
setup
|
|
238
|
+
.command("transfer-subdomain <subdomain>")
|
|
239
|
+
.description("Transfer a subdomain to your current wallet (verified by shared owner())")
|
|
240
|
+
.action(async (subdomain) => {
|
|
241
|
+
let config;
|
|
242
|
+
try {
|
|
243
|
+
config = (0, config_1.loadConfig)();
|
|
244
|
+
}
|
|
245
|
+
catch {
|
|
246
|
+
console.log(chalk_1.default.red("No config found. Run `arc402 config init` first."));
|
|
247
|
+
process.exit(1);
|
|
248
|
+
}
|
|
249
|
+
const newWalletAddress = config.walletContractAddress;
|
|
250
|
+
if (!newWalletAddress) {
|
|
251
|
+
console.log(chalk_1.default.red("No walletContractAddress in config. Run `arc402 config init` first."));
|
|
252
|
+
process.exit(1);
|
|
253
|
+
}
|
|
254
|
+
const apiBase = (0, config_1.getSubdomainApi)(config);
|
|
255
|
+
const short = newWalletAddress.slice(0, 8) + "…" + newWalletAddress.slice(-4);
|
|
256
|
+
console.log(chalk_1.default.bold(`\nTransferring ${subdomain}.arc402.xyz → ${short}\n`));
|
|
257
|
+
let res;
|
|
258
|
+
try {
|
|
259
|
+
res = await fetch(`${apiBase}/transfer`, {
|
|
260
|
+
method: "POST",
|
|
261
|
+
headers: { "Content-Type": "application/json" },
|
|
262
|
+
body: JSON.stringify({ subdomain, newWalletAddress }),
|
|
263
|
+
});
|
|
264
|
+
}
|
|
265
|
+
catch (e) {
|
|
266
|
+
console.log(chalk_1.default.red(`\n✗ Request failed: ${e instanceof Error ? e.message : String(e)}`));
|
|
267
|
+
process.exit(1);
|
|
268
|
+
}
|
|
269
|
+
const data = await res.json();
|
|
270
|
+
if (!res.ok) {
|
|
271
|
+
console.log(chalk_1.default.red(`\n✗ Transfer failed: ${data.error ?? res.statusText}`));
|
|
272
|
+
process.exit(1);
|
|
273
|
+
}
|
|
274
|
+
console.log(chalk_1.default.green(`✅ ${subdomain}.arc402.xyz now points to ${short}`));
|
|
275
|
+
});
|
|
276
|
+
setup
|
|
277
|
+
.command("endpoint")
|
|
278
|
+
.description("Interactive wizard: start the relay daemon → create a public tunnel → " +
|
|
279
|
+
"get a live, hirable endpoint in under 2 minutes")
|
|
280
|
+
.action(async () => {
|
|
281
|
+
console.log(chalk_1.default.bold("\narc402 endpoint setup\n"));
|
|
282
|
+
// ── Step 1: Daemon ───────────────────────────────────────────────────────
|
|
283
|
+
await stepDaemon();
|
|
284
|
+
// Resolve subdomain API base from config (falls back to https://api.arc402.xyz)
|
|
285
|
+
let apiBase = "https://api.arc402.xyz";
|
|
286
|
+
try {
|
|
287
|
+
if ((0, config_1.configExists)()) {
|
|
288
|
+
apiBase = (0, config_1.getSubdomainApi)((0, config_1.loadConfig)());
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
catch { /* ignore — use default */ }
|
|
292
|
+
// ── Step 2: Exposure method ──────────────────────────────────────────────
|
|
293
|
+
const { method } = await (0, prompts_1.default)({
|
|
294
|
+
type: "select",
|
|
295
|
+
name: "method",
|
|
296
|
+
message: "How do you want to expose your node to the network?",
|
|
297
|
+
choices: [
|
|
298
|
+
{ title: "arc402.xyz subdomain (easiest — free, instant)", value: "subdomain" },
|
|
299
|
+
{ title: "ngrok (free, runs locally)", value: "ngrok" },
|
|
300
|
+
{ title: "I have a public URL already", value: "manual" },
|
|
301
|
+
{ title: "Cloudflare Tunnel (advanced)", value: "cloudflare" },
|
|
302
|
+
{ title: "Skip for now (client-only mode)", value: "skip" },
|
|
303
|
+
],
|
|
304
|
+
initial: 0,
|
|
305
|
+
});
|
|
306
|
+
if (!method) {
|
|
307
|
+
// User hit Ctrl+C
|
|
308
|
+
console.log(chalk_1.default.dim("\nSetup cancelled."));
|
|
309
|
+
return;
|
|
310
|
+
}
|
|
311
|
+
// ── Step 3: Handle selection ─────────────────────────────────────────────
|
|
312
|
+
switch (method) {
|
|
313
|
+
case "subdomain":
|
|
314
|
+
await stepSubdomainService(apiBase);
|
|
315
|
+
break;
|
|
316
|
+
case "ngrok":
|
|
317
|
+
await stepNgrok();
|
|
318
|
+
break;
|
|
319
|
+
case "manual":
|
|
320
|
+
await stepManualUrl();
|
|
321
|
+
break;
|
|
322
|
+
case "cloudflare":
|
|
323
|
+
await stepCloudflare();
|
|
324
|
+
break;
|
|
325
|
+
case "skip":
|
|
326
|
+
console.log(chalk_1.default.dim("\nRunning in client-only mode — your node won't be discoverable by others."));
|
|
327
|
+
console.log(chalk_1.default.dim("Re-run `arc402 setup endpoint` whenever you're ready to go public."));
|
|
328
|
+
break;
|
|
329
|
+
}
|
|
330
|
+
});
|
|
331
|
+
}
|
|
332
|
+
//# sourceMappingURL=setup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trust.d.ts","sourceRoot":"","sources":["../../src/commands/trust.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAQ3D"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.registerTrustCommand = registerTrustCommand;
|
|
4
|
+
const sdk_1 = require("@arc402/sdk");
|
|
5
|
+
const config_1 = require("../config");
|
|
6
|
+
const client_1 = require("../client");
|
|
7
|
+
const format_1 = require("../utils/format");
|
|
8
|
+
function registerTrustCommand(program) {
|
|
9
|
+
program.command("trust <address>").description("Look up trust plus secondary sponsorship/reputation signals for an address").option("--json").action(async (address, opts) => {
|
|
10
|
+
const config = (0, config_1.loadConfig)();
|
|
11
|
+
const { provider } = await (0, client_1.getClient)(config);
|
|
12
|
+
const trust = new sdk_1.TrustClient(config.trustRegistryAddress, provider);
|
|
13
|
+
const score = await trust.getScore(address);
|
|
14
|
+
const sponsorship = config.sponsorshipAttestationAddress ? new sdk_1.SponsorshipAttestationClient(config.sponsorshipAttestationAddress, provider) : null;
|
|
15
|
+
const reputation = config.reputationOracleAddress ? new sdk_1.ReputationOracleClient(config.reputationOracleAddress, provider) : null;
|
|
16
|
+
const highestTier = sponsorship ? await sponsorship.getHighestTier(address) : undefined;
|
|
17
|
+
const rep = reputation ? await reputation.getReputation(address) : undefined;
|
|
18
|
+
if (opts.json)
|
|
19
|
+
return console.log(JSON.stringify({ address, score, highestTier, reputation: rep }, (_k, value) => typeof value === 'bigint' ? value.toString() : value, 2));
|
|
20
|
+
console.log(`score=${score.score} tier=${(0, format_1.getTrustTier)(score.score)} next=${score.nextLevelAt}${highestTier !== undefined ? ` sponsorship=${(0, format_1.identityTierLabel)(highestTier)}` : ''}${rep ? ` reputation=${rep.weightedScore}` : ''}`);
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=trust.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trust.js","sourceRoot":"","sources":["../../src/commands/trust.ts"],"names":[],"mappings":";;AAMA,oDAQC;AAbD,qCAAgG;AAChG,sCAAuC;AACvC,sCAAsC;AACtC,4CAAkE;AAElE,SAAgB,oBAAoB,CAAC,OAAgB;IACnD,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,WAAW,CAAC,4EAA4E,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;QAC3K,MAAM,MAAM,GAAG,IAAA,mBAAU,GAAE,CAAC;QAAC,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,IAAA,kBAAS,EAAC,MAAM,CAAC,CAAC;QAAC,MAAM,KAAK,GAAG,IAAI,iBAAW,CAAC,MAAM,CAAC,oBAAoB,EAAE,QAAQ,CAAC,CAAC;QAChJ,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAAC,MAAM,WAAW,GAAG,MAAM,CAAC,6BAA6B,CAAC,CAAC,CAAC,IAAI,kCAA4B,CAAC,MAAM,CAAC,6BAA6B,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAAC,MAAM,UAAU,GAAG,MAAM,CAAC,uBAAuB,CAAC,CAAC,CAAC,IAAI,4BAAsB,CAAC,MAAM,CAAC,uBAAuB,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACjU,MAAM,WAAW,GAAG,WAAW,CAAC,CAAC,CAAC,MAAM,WAAW,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAAC,MAAM,GAAG,GAAG,UAAU,CAAC,CAAC,CAAC,MAAM,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACtK,IAAI,IAAI,CAAC,IAAI;YAAE,OAAO,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;QAC5K,OAAO,CAAC,GAAG,CAAC,SAAS,KAAK,CAAC,KAAK,SAAS,IAAA,qBAAY,EAAC,KAAK,CAAC,KAAK,CAAC,SAAS,KAAK,CAAC,WAAW,GAAG,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,gBAAgB,IAAA,0BAAiB,EAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,eAAe,GAAG,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACtO,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../../src/commands/verify.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAoBpC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAmE5D"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.registerVerifyCommand = registerVerifyCommand;
|
|
4
|
+
const sdk_1 = require("@arc402/sdk");
|
|
5
|
+
const ethers_1 = require("ethers");
|
|
6
|
+
const config_1 = require("../config");
|
|
7
|
+
const client_1 = require("../client");
|
|
8
|
+
const wallet_router_1 = require("../wallet-router");
|
|
9
|
+
const abis_1 = require("../abis");
|
|
10
|
+
// Agreement status values from the contract
|
|
11
|
+
const AGREEMENT_STATUS_NAMES = {
|
|
12
|
+
0: "NONE",
|
|
13
|
+
1: "PROPOSED",
|
|
14
|
+
2: "ACCEPTED",
|
|
15
|
+
3: "PENDING_VERIFICATION",
|
|
16
|
+
4: "COMPLETED",
|
|
17
|
+
5: "DISPUTED",
|
|
18
|
+
6: "CANCELLED",
|
|
19
|
+
7: "EXPIRED",
|
|
20
|
+
};
|
|
21
|
+
function registerVerifyCommand(program) {
|
|
22
|
+
program
|
|
23
|
+
.command("verify <id>")
|
|
24
|
+
.description("Client verifies delivered work and releases escrow")
|
|
25
|
+
.option("--auto", "Call autoRelease instead (for when verify window has elapsed and client is silent)")
|
|
26
|
+
.option("--json")
|
|
27
|
+
.action(async (id, opts) => {
|
|
28
|
+
const config = (0, config_1.loadConfig)();
|
|
29
|
+
if (!config.serviceAgreementAddress)
|
|
30
|
+
throw new Error("serviceAgreementAddress missing in config");
|
|
31
|
+
const { signer } = await (0, client_1.requireSigner)(config);
|
|
32
|
+
(0, wallet_router_1.printSenderInfo)(config);
|
|
33
|
+
// Pre-flight: check agreement is in PENDING_VERIFICATION status (J2-04)
|
|
34
|
+
if (!opts.auto) {
|
|
35
|
+
const PENDING_VERIFICATION_STATUS = 3;
|
|
36
|
+
const { provider: verifyProvider } = await (0, client_1.getClient)(config);
|
|
37
|
+
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);
|
|
38
|
+
try {
|
|
39
|
+
const ag = await saCheck.getAgreement(BigInt(id));
|
|
40
|
+
const status = Number(ag.status);
|
|
41
|
+
if (status !== PENDING_VERIFICATION_STATUS) {
|
|
42
|
+
const statusName = AGREEMENT_STATUS_NAMES[status] ?? `UNKNOWN(${status})`;
|
|
43
|
+
console.error(`Agreement ${id} is not pending verification (current status: ${statusName}).`);
|
|
44
|
+
console.error(`Only agreements in PENDING_VERIFICATION status can be verified.`);
|
|
45
|
+
if (status === 2)
|
|
46
|
+
console.error(`The provider must first deliver with: arc402 deliver ${id}`);
|
|
47
|
+
process.exit(1);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
catch (e) {
|
|
51
|
+
// Skip pre-check on read errors — let the tx itself reveal the issue
|
|
52
|
+
if (!(e instanceof Error && (e.message.includes("CALL_EXCEPTION") || e.message.includes("could not decode"))))
|
|
53
|
+
throw e;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
if (opts.auto) {
|
|
57
|
+
if (config.walletContractAddress) {
|
|
58
|
+
const tx = await (0, wallet_router_1.executeContractWriteViaWallet)(config.walletContractAddress, signer, config.serviceAgreementAddress, abis_1.SERVICE_AGREEMENT_ABI, "autoRelease", [BigInt(id)]);
|
|
59
|
+
if (opts.json)
|
|
60
|
+
return console.log(JSON.stringify({ agreementId: id, action: "autoRelease", txHash: tx.hash }));
|
|
61
|
+
console.log(`autoRelease submitted for agreement #${id}. tx=${tx.hash}`);
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
const client = new sdk_1.ServiceAgreementClient(config.serviceAgreementAddress, signer);
|
|
65
|
+
const tx = await client.autoRelease(BigInt(id));
|
|
66
|
+
if (opts.json)
|
|
67
|
+
return console.log(JSON.stringify({ agreementId: id, action: "autoRelease", txHash: tx.hash }));
|
|
68
|
+
console.log(`autoRelease submitted for agreement #${id}. tx=${tx.hash}`);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
if (config.walletContractAddress) {
|
|
73
|
+
const tx = await (0, wallet_router_1.executeContractWriteViaWallet)(config.walletContractAddress, signer, config.serviceAgreementAddress, abis_1.SERVICE_AGREEMENT_ABI, "verifyDeliverable", [BigInt(id)]);
|
|
74
|
+
if (opts.json)
|
|
75
|
+
return console.log(JSON.stringify({ agreementId: id, action: "verifyDeliverable", txHash: tx.hash }));
|
|
76
|
+
console.log(`Agreement #${id} verified — escrow released. tx=${tx.hash}`);
|
|
77
|
+
}
|
|
78
|
+
else {
|
|
79
|
+
const client = new sdk_1.ServiceAgreementClient(config.serviceAgreementAddress, signer);
|
|
80
|
+
const tx = await client.verifyDeliverable(BigInt(id));
|
|
81
|
+
if (opts.json)
|
|
82
|
+
return console.log(JSON.stringify({ agreementId: id, action: "verifyDeliverable", txHash: tx.hash }));
|
|
83
|
+
console.log(`Agreement #${id} verified — escrow released. tx=${tx.hash}`);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
//# sourceMappingURL=verify.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"verify.js","sourceRoot":"","sources":["../../src/commands/verify.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wallet.d.ts","sourceRoot":"","sources":["../../src/commands/wallet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAkIpC,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAysF7D"}
|