arc402-cli 0.7.0 → 0.7.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/commands/backup.d.ts +3 -0
- package/dist/commands/backup.d.ts.map +1 -0
- package/dist/commands/backup.js +106 -0
- package/dist/commands/backup.js.map +1 -0
- package/dist/commands/discover.d.ts.map +1 -1
- package/dist/commands/discover.js +60 -15
- package/dist/commands/discover.js.map +1 -1
- package/dist/commands/wallet.d.ts.map +1 -1
- package/dist/commands/wallet.js +136 -52
- package/dist/commands/wallet.js.map +1 -1
- package/dist/commands/watch.d.ts.map +1 -1
- package/dist/commands/watch.js +146 -9
- package/dist/commands/watch.js.map +1 -1
- package/dist/config.d.ts +8 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +25 -1
- package/dist/config.js.map +1 -1
- package/dist/daemon/index.d.ts.map +1 -1
- package/dist/daemon/index.js +65 -12
- package/dist/daemon/index.js.map +1 -1
- package/dist/endpoint-notify.d.ts +2 -1
- package/dist/endpoint-notify.d.ts.map +1 -1
- package/dist/endpoint-notify.js +12 -3
- package/dist/endpoint-notify.js.map +1 -1
- package/dist/index.js +26 -0
- package/dist/index.js.map +1 -1
- package/dist/program.d.ts.map +1 -1
- package/dist/program.js +2 -0
- package/dist/program.js.map +1 -1
- package/package.json +1 -1
- package/src/commands/backup.ts +117 -0
- package/src/commands/discover.ts +74 -21
- package/src/commands/wallet.ts +137 -51
- package/src/commands/watch.ts +207 -10
- package/src/config.ts +39 -1
- package/src/daemon/index.ts +63 -12
- package/src/endpoint-notify.ts +13 -3
- package/src/index.ts +26 -0
- package/src/program.ts +2 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"backup.d.ts","sourceRoot":"","sources":["../../src/commands/backup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA0BpC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA0F5D"}
|
|
@@ -0,0 +1,106 @@
|
|
|
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.registerBackupCommand = registerBackupCommand;
|
|
7
|
+
const child_process_1 = require("child_process");
|
|
8
|
+
const fs_1 = __importDefault(require("fs"));
|
|
9
|
+
const path_1 = __importDefault(require("path"));
|
|
10
|
+
const os_1 = __importDefault(require("os"));
|
|
11
|
+
const colors_1 = require("../ui/colors");
|
|
12
|
+
const ARC402_DIR = path_1.default.join(os_1.default.homedir(), ".arc402");
|
|
13
|
+
// Files/patterns to exclude from backup
|
|
14
|
+
const EXCLUDE_PATTERNS = [
|
|
15
|
+
"daemon.db",
|
|
16
|
+
"daemon.log",
|
|
17
|
+
"daemon.pid",
|
|
18
|
+
"daemon.sock",
|
|
19
|
+
"repl_history",
|
|
20
|
+
];
|
|
21
|
+
function todayStr() {
|
|
22
|
+
const d = new Date();
|
|
23
|
+
const y = d.getFullYear();
|
|
24
|
+
const m = (d.getMonth() + 1).toString().padStart(2, "0");
|
|
25
|
+
const day = d.getDate().toString().padStart(2, "0");
|
|
26
|
+
return `${y}-${m}-${day}`;
|
|
27
|
+
}
|
|
28
|
+
function registerBackupCommand(program) {
|
|
29
|
+
// ── backup ─────────────────────────────────────────────────────────────────
|
|
30
|
+
program
|
|
31
|
+
.command("backup")
|
|
32
|
+
.description("Backup ~/.arc402/ config, keys, and wallet storage to a tar.gz archive")
|
|
33
|
+
.option("--output <path>", "Output file path (default: arc402-backup-YYYY-MM-DD.tar.gz)")
|
|
34
|
+
.action((opts) => {
|
|
35
|
+
if (!fs_1.default.existsSync(ARC402_DIR)) {
|
|
36
|
+
console.error(` ${colors_1.c.failure} No ~/.arc402/ directory found. Nothing to back up.`);
|
|
37
|
+
process.exit(1);
|
|
38
|
+
}
|
|
39
|
+
const outFile = opts.output ?? `arc402-backup-${todayStr()}.tar.gz`;
|
|
40
|
+
const absOut = path_1.default.isAbsolute(outFile) ? outFile : path_1.default.join(process.cwd(), outFile);
|
|
41
|
+
// Build --exclude flags
|
|
42
|
+
const excludeFlags = EXCLUDE_PATTERNS.map((p) => `--exclude='.arc402/${p}'`).join(" ");
|
|
43
|
+
try {
|
|
44
|
+
(0, child_process_1.execSync)(`tar -czf "${absOut}" ${excludeFlags} -C "${os_1.default.homedir()}" .arc402`, { stdio: "pipe" });
|
|
45
|
+
}
|
|
46
|
+
catch (err) {
|
|
47
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
48
|
+
console.error(` ${colors_1.c.failure} Backup failed: ${msg}`);
|
|
49
|
+
process.exit(1);
|
|
50
|
+
}
|
|
51
|
+
// Verify the file was created
|
|
52
|
+
if (!fs_1.default.existsSync(absOut)) {
|
|
53
|
+
console.error(` ${colors_1.c.failure} Archive not found after tar completed.`);
|
|
54
|
+
process.exit(1);
|
|
55
|
+
}
|
|
56
|
+
const sizeBytes = fs_1.default.statSync(absOut).size;
|
|
57
|
+
const sizeStr = sizeBytes < 1024
|
|
58
|
+
? `${sizeBytes} B`
|
|
59
|
+
: sizeBytes < 1024 * 1024
|
|
60
|
+
? `${(sizeBytes / 1024).toFixed(1)} KB`
|
|
61
|
+
: `${(sizeBytes / (1024 * 1024)).toFixed(2)} MB`;
|
|
62
|
+
console.log(` ${colors_1.c.success} Backup saved to ${colors_1.c.white(path_1.default.basename(absOut))} ${colors_1.c.dim(`(${sizeStr})`)}`);
|
|
63
|
+
});
|
|
64
|
+
// ── restore ────────────────────────────────────────────────────────────────
|
|
65
|
+
program
|
|
66
|
+
.command("restore")
|
|
67
|
+
.description("Restore ~/.arc402/ from a backup archive")
|
|
68
|
+
.argument("<archive>", "Path to arc402-backup-*.tar.gz")
|
|
69
|
+
.action((archive) => {
|
|
70
|
+
const absArchive = path_1.default.isAbsolute(archive) ? archive : path_1.default.join(process.cwd(), archive);
|
|
71
|
+
if (!fs_1.default.existsSync(absArchive)) {
|
|
72
|
+
console.error(` ${colors_1.c.failure} Archive not found: ${absArchive}`);
|
|
73
|
+
process.exit(1);
|
|
74
|
+
}
|
|
75
|
+
// Warn if ~/.arc402/ already exists
|
|
76
|
+
if (fs_1.default.existsSync(ARC402_DIR)) {
|
|
77
|
+
const existing = fs_1.default.readdirSync(ARC402_DIR);
|
|
78
|
+
if (existing.length > 0) {
|
|
79
|
+
console.warn(` ${colors_1.c.warning} Existing ~/.arc402/ has ${existing.length} file(s) — merging (existing files take precedence for conflicts).`);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
try {
|
|
83
|
+
// Extract to home dir — tar archive has .arc402/ as the root entry
|
|
84
|
+
(0, child_process_1.execSync)(`tar -xzf "${absArchive}" -C "${os_1.default.homedir()}"`, { stdio: "pipe" });
|
|
85
|
+
}
|
|
86
|
+
catch (err) {
|
|
87
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
88
|
+
console.error(` ${colors_1.c.failure} Restore failed: ${msg}`);
|
|
89
|
+
process.exit(1);
|
|
90
|
+
}
|
|
91
|
+
// Verify config.json is present
|
|
92
|
+
const configPath = path_1.default.join(ARC402_DIR, "config.json");
|
|
93
|
+
if (!fs_1.default.existsSync(configPath)) {
|
|
94
|
+
console.error(` ${colors_1.c.failure} config.json not found after restore — archive may be incomplete.`);
|
|
95
|
+
process.exit(1);
|
|
96
|
+
}
|
|
97
|
+
// Fix permissions on restored directory
|
|
98
|
+
try {
|
|
99
|
+
fs_1.default.chmodSync(ARC402_DIR, 0o700);
|
|
100
|
+
fs_1.default.chmodSync(configPath, 0o600);
|
|
101
|
+
}
|
|
102
|
+
catch { /* best-effort */ }
|
|
103
|
+
console.log(` ${colors_1.c.success} Config restored. Run ${colors_1.c.white("arc402 doctor")} to verify.`);
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
//# sourceMappingURL=backup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"backup.js","sourceRoot":"","sources":["../../src/commands/backup.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"discover.d.ts","sourceRoot":"","sources":["../../src/commands/discover.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"discover.d.ts","sourceRoot":"","sources":["../../src/commands/discover.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAsFpC,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAuQ9D"}
|
|
@@ -7,6 +7,7 @@ const config_1 = require("../config");
|
|
|
7
7
|
const client_1 = require("../client");
|
|
8
8
|
const format_1 = require("../utils/format");
|
|
9
9
|
const colors_1 = require("../ui/colors");
|
|
10
|
+
const tree_1 = require("../ui/tree");
|
|
10
11
|
// Minimal ABI for the new getAgentsWithCapability function (Spec 18)
|
|
11
12
|
const CAPABILITY_REGISTRY_EXTRA_ABI = [
|
|
12
13
|
"function getAgentsWithCapability(string calldata capability) external view returns (address[])",
|
|
@@ -39,6 +40,21 @@ function computeCompositeScores(agents) {
|
|
|
39
40
|
rank: 0, // filled after sort
|
|
40
41
|
}));
|
|
41
42
|
}
|
|
43
|
+
// ─── Endpoint health check ────────────────────────────────────────────────────
|
|
44
|
+
async function pingEndpoint(endpoint) {
|
|
45
|
+
if (!endpoint || !/^https?:\/\//.test(endpoint))
|
|
46
|
+
return "offline";
|
|
47
|
+
try {
|
|
48
|
+
const ctrl = new AbortController();
|
|
49
|
+
const tid = setTimeout(() => ctrl.abort(), 3000);
|
|
50
|
+
const resp = await fetch(`${endpoint.replace(/\/$/, "")}/health`, { signal: ctrl.signal });
|
|
51
|
+
clearTimeout(tid);
|
|
52
|
+
return resp.ok ? "online" : "offline";
|
|
53
|
+
}
|
|
54
|
+
catch {
|
|
55
|
+
return "offline";
|
|
56
|
+
}
|
|
57
|
+
}
|
|
42
58
|
// ─── Command ──────────────────────────────────────────────────────────────────
|
|
43
59
|
function registerDiscoverCommand(program) {
|
|
44
60
|
program
|
|
@@ -54,6 +70,7 @@ function registerDiscoverCommand(program) {
|
|
|
54
70
|
.option("--top <n>", "Show top N agents by trust score")
|
|
55
71
|
.option("--sort <field>", "Sort by: trust | price | jobs | stake | composite", "composite")
|
|
56
72
|
.option("--limit <n>", "Max results", "20")
|
|
73
|
+
.option("--online", "Only show agents whose /health endpoint responds")
|
|
57
74
|
.option("--json", "Machine-parseable output")
|
|
58
75
|
.action(async (opts) => {
|
|
59
76
|
const config = (0, config_1.loadConfig)();
|
|
@@ -202,25 +219,53 @@ function registerDiscoverCommand(program) {
|
|
|
202
219
|
}
|
|
203
220
|
// Assign 1-based ranks after sort
|
|
204
221
|
scored = scored.slice(0, limit).map((a, i) => ({ ...a, rank: i + 1 }));
|
|
205
|
-
|
|
222
|
+
let withStatus;
|
|
223
|
+
if (opts.online || /* always ping for tree display */ true) {
|
|
224
|
+
const statuses = await Promise.all(scored.map(async (agent) => {
|
|
225
|
+
if (!agent.endpoint)
|
|
226
|
+
return "unknown";
|
|
227
|
+
return pingEndpoint(agent.endpoint);
|
|
228
|
+
}));
|
|
229
|
+
withStatus = scored.map((agent, i) => ({ ...agent, endpointStatus: statuses[i] }));
|
|
230
|
+
}
|
|
231
|
+
else {
|
|
232
|
+
withStatus = scored.map((agent) => ({ ...agent, endpointStatus: "unknown" }));
|
|
233
|
+
}
|
|
234
|
+
// Apply --online filter
|
|
235
|
+
if (opts.online) {
|
|
236
|
+
withStatus = withStatus.filter((a) => a.endpointStatus === "online");
|
|
237
|
+
if (withStatus.length === 0) {
|
|
238
|
+
console.log(`\n ${colors_1.c.warning} No agents with responding /health endpoints found.`);
|
|
239
|
+
return;
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
// ── Step 7: Output ─────────────────────────────────────────────────────
|
|
206
243
|
if (opts.json) {
|
|
207
|
-
return console.log(JSON.stringify(
|
|
244
|
+
return console.log(JSON.stringify(withStatus, (_k, value) => typeof value === "bigint" ? value.toString() : value, 2));
|
|
208
245
|
}
|
|
209
|
-
|
|
210
|
-
(
|
|
246
|
+
const onlineCount = withStatus.filter((a) => a.endpointStatus === "online").length;
|
|
247
|
+
console.log('\n ' + colors_1.c.mark + colors_1.c.white(' Discover Results') + colors_1.c.dim(` — ${withStatus.length} agent${withStatus.length !== 1 ? 's' : ''} found, ${onlineCount} online`));
|
|
248
|
+
// Tree output per agent
|
|
249
|
+
for (const agent of withStatus) {
|
|
211
250
|
const caps = (agent.canonicalCapabilities.length
|
|
212
251
|
? agent.canonicalCapabilities
|
|
213
|
-
: agent.capabilities).slice(0,
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
252
|
+
: agent.capabilities).slice(0, 3).join(", ") || colors_1.c.dim("none");
|
|
253
|
+
const statusIcon = agent.endpointStatus === "online"
|
|
254
|
+
? colors_1.c.green("● online")
|
|
255
|
+
: agent.endpointStatus === "offline"
|
|
256
|
+
? colors_1.c.red("○ offline")
|
|
257
|
+
: colors_1.c.dim("? unknown");
|
|
258
|
+
const tierStr = (0, format_1.getTrustTier)(agent.trustScore);
|
|
259
|
+
console.log(`\n ${colors_1.c.dim(`#${agent.rank}`)} ${colors_1.c.white(agent.name)} ${colors_1.c.dim((0, format_1.truncateAddress)(agent.wallet))}`);
|
|
260
|
+
(0, tree_1.renderTree)([
|
|
261
|
+
{ label: "service", value: agent.serviceType },
|
|
262
|
+
{ label: "trust", value: `${agent.trustScore} ${tierStr}` },
|
|
263
|
+
{ label: "score", value: agent.compositeScore.toFixed(3) },
|
|
264
|
+
{ label: "caps", value: caps },
|
|
265
|
+
{ label: "endpoint", value: statusIcon, last: true },
|
|
266
|
+
]);
|
|
267
|
+
}
|
|
268
|
+
console.log();
|
|
224
269
|
});
|
|
225
270
|
}
|
|
226
271
|
//# sourceMappingURL=discover.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"discover.js","sourceRoot":"","sources":["../../src/commands/discover.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"discover.js","sourceRoot":"","sources":["../../src/commands/discover.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wallet.d.ts","sourceRoot":"","sources":["../../src/commands/wallet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"wallet.d.ts","sourceRoot":"","sources":["../../src/commands/wallet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA8kBpC,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAg2F7D"}
|
package/dist/commands/wallet.js
CHANGED
|
@@ -26,6 +26,26 @@ const tree_1 = require("../ui/tree");
|
|
|
26
26
|
const spinner_1 = require("../ui/spinner");
|
|
27
27
|
const colors_1 = require("../ui/colors");
|
|
28
28
|
const POLICY_ENGINE_DEFAULT = "0x44102e70c2A366632d98Fe40d892a2501fC7fFF2";
|
|
29
|
+
const GUARDIAN_KEY_PATH = path_1.default.join(os_1.default.homedir(), ".arc402", "guardian.key");
|
|
30
|
+
/** Save guardian private key to a restricted standalone file (never to config.json). */
|
|
31
|
+
function saveGuardianKey(privateKey) {
|
|
32
|
+
fs_1.default.mkdirSync(path_1.default.dirname(GUARDIAN_KEY_PATH), { recursive: true, mode: 0o700 });
|
|
33
|
+
fs_1.default.writeFileSync(GUARDIAN_KEY_PATH, privateKey + "\n", { mode: 0o400 });
|
|
34
|
+
}
|
|
35
|
+
/** Load guardian private key from file, falling back to config for backwards compat. */
|
|
36
|
+
function loadGuardianKey(config) {
|
|
37
|
+
try {
|
|
38
|
+
return fs_1.default.readFileSync(GUARDIAN_KEY_PATH, "utf-8").trim();
|
|
39
|
+
}
|
|
40
|
+
catch {
|
|
41
|
+
// Migration: if key still in config, migrate it to the file now
|
|
42
|
+
if (config.guardianPrivateKey) {
|
|
43
|
+
saveGuardianKey(config.guardianPrivateKey);
|
|
44
|
+
return config.guardianPrivateKey;
|
|
45
|
+
}
|
|
46
|
+
return null;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
29
49
|
function parseAmount(raw) {
|
|
30
50
|
const lower = raw.toLowerCase();
|
|
31
51
|
if (lower.endsWith("eth")) {
|
|
@@ -161,6 +181,9 @@ async function runCompleteOnboardingCeremony(walletAddress, ownerAddress, config
|
|
|
161
181
|
await sendTx({ to: walletAddress, data: mkIface.encodeFunctionData("authorizeMachineKey", [machineKeyAddress]), value: "0x0" }, "authorizeMachineKey");
|
|
162
182
|
console.log(" " + colors_1.c.success + " Machine key authorized");
|
|
163
183
|
}
|
|
184
|
+
// Save progress after machine key step
|
|
185
|
+
config.onboardingProgress = { walletAddress, step: 2, completedSteps: ["machineKey"] };
|
|
186
|
+
(0, config_1.saveConfig)(config);
|
|
164
187
|
// ── Step 3: Passkey ───────────────────────────────────────────────────────
|
|
165
188
|
console.log("\n" + colors_1.c.dim("── Step 3: Passkey (Face ID / WebAuthn) ──────────────────────"));
|
|
166
189
|
let passkeyActive = false;
|
|
@@ -192,6 +215,9 @@ async function runCompleteOnboardingCeremony(walletAddress, ownerAddress, config
|
|
|
192
215
|
console.log(" " + colors_1.c.success + " Passkey set (via browser)");
|
|
193
216
|
}
|
|
194
217
|
}
|
|
218
|
+
// Save progress after passkey step
|
|
219
|
+
config.onboardingProgress = { walletAddress, step: 3, completedSteps: ["machineKey", "passkey"] };
|
|
220
|
+
(0, config_1.saveConfig)(config);
|
|
195
221
|
// ── Step 4: Policy ────────────────────────────────────────────────────────
|
|
196
222
|
console.log("\n" + colors_1.c.dim("── Step 4: Policy ─────────────────────────────────────────────"));
|
|
197
223
|
// 4a) setVelocityLimit
|
|
@@ -300,6 +326,9 @@ async function runCompleteOnboardingCeremony(walletAddress, ownerAddress, config
|
|
|
300
326
|
await sendTx({ to: policyAddress, data: contractInteractionIface.encodeFunctionData("enableContractInteraction", [walletAddress, handshakeAddress]), value: "0x0" }, "enableContractInteraction: Handshake");
|
|
301
327
|
(0, config_1.saveConfig)(config);
|
|
302
328
|
console.log(" " + colors_1.c.success + " Policy configured");
|
|
329
|
+
// Save progress after policy step
|
|
330
|
+
config.onboardingProgress = { walletAddress, step: 4, completedSteps: ["machineKey", "passkey", "policy"] };
|
|
331
|
+
(0, config_1.saveConfig)(config);
|
|
303
332
|
// ── Step 5: Agent Registration ─────────────────────────────────────────────
|
|
304
333
|
console.log("\n" + colors_1.c.dim("── Step 5: Agent Registration ─────────────────────────────────"));
|
|
305
334
|
let agentAlreadyRegistered = false;
|
|
@@ -377,6 +406,9 @@ async function runCompleteOnboardingCeremony(walletAddress, ownerAddress, config
|
|
|
377
406
|
else {
|
|
378
407
|
console.log(" " + colors_1.c.warning + " AgentRegistry address not configured — skipping");
|
|
379
408
|
}
|
|
409
|
+
// Save progress after agent step, then clear on ceremony complete
|
|
410
|
+
config.onboardingProgress = { walletAddress, step: 5, completedSteps: ["machineKey", "passkey", "policy", "agent"] };
|
|
411
|
+
(0, config_1.saveConfig)(config);
|
|
380
412
|
// ── Step 7: Workroom Init ─────────────────────────────────────────────────
|
|
381
413
|
console.log("\n" + colors_1.c.dim("── Step 7: Workroom ────────────────────────────────────────────"));
|
|
382
414
|
let workroomInitialized = false;
|
|
@@ -478,6 +510,9 @@ async function runCompleteOnboardingCeremony(walletAddress, ownerAddress, config
|
|
|
478
510
|
const endpointLabel = agentEndpoint
|
|
479
511
|
? colors_1.c.white(agentEndpoint) + colors_1.c.dim(` → localhost:${relayPort}`)
|
|
480
512
|
: colors_1.c.dim("—");
|
|
513
|
+
// Clear onboarding progress — ceremony complete
|
|
514
|
+
delete config.onboardingProgress;
|
|
515
|
+
(0, config_1.saveConfig)(config);
|
|
481
516
|
console.log("\n " + colors_1.c.success + colors_1.c.white(" Onboarding complete"));
|
|
482
517
|
(0, tree_1.renderTree)([
|
|
483
518
|
{ label: "Wallet", value: colors_1.c.white(walletAddress) },
|
|
@@ -986,12 +1021,44 @@ function registerWalletCommands(program) {
|
|
|
986
1021
|
const telegramOpts = config.telegramBotToken && config.telegramChatId
|
|
987
1022
|
? { botToken: config.telegramBotToken, chatId: config.telegramChatId, threadId: config.telegramThreadId }
|
|
988
1023
|
: undefined;
|
|
1024
|
+
// ── Resume check ──────────────────────────────────────────────────────
|
|
1025
|
+
const resumeProgress = config.onboardingProgress;
|
|
1026
|
+
const isResuming = !!(resumeProgress?.walletAddress &&
|
|
1027
|
+
resumeProgress.walletAddress === config.walletContractAddress &&
|
|
1028
|
+
config.ownerAddress);
|
|
1029
|
+
if (isResuming) {
|
|
1030
|
+
const stepNames = {
|
|
1031
|
+
2: "machine key", 3: "passkey", 4: "policy setup", 5: "agent registration",
|
|
1032
|
+
};
|
|
1033
|
+
const nextStep = (resumeProgress.step ?? 1) + 1;
|
|
1034
|
+
console.log(" " + colors_1.c.dim(`◈ Resuming onboarding from step ${nextStep} (${stepNames[nextStep] ?? "ceremony"})...`));
|
|
1035
|
+
}
|
|
1036
|
+
// ── Gas estimation ─────────────────────────────────────────────────────
|
|
1037
|
+
if (!isResuming) {
|
|
1038
|
+
let gasMsg = "~0.003 ETH (6 transactions on Base)";
|
|
1039
|
+
try {
|
|
1040
|
+
const feeData = await provider.getFeeData();
|
|
1041
|
+
const gasPrice = feeData.maxFeePerGas ?? feeData.gasPrice ?? BigInt(1500000000);
|
|
1042
|
+
const deployGas = await provider.estimateGas({
|
|
1043
|
+
to: factoryAddress,
|
|
1044
|
+
data: factoryInterface.encodeFunctionData("createWallet", ["0x0000000071727De22E5E9d8BAf0edAc6f37da032"]),
|
|
1045
|
+
}).catch(() => BigInt(280000));
|
|
1046
|
+
const ceremonyGas = BigInt(700000); // ~5 ceremony txs × ~140k each
|
|
1047
|
+
const totalGasEth = parseFloat(ethers_1.ethers.formatEther((deployGas + ceremonyGas) * gasPrice));
|
|
1048
|
+
gasMsg = `~${totalGasEth.toFixed(4)} ETH (6 transactions on Base)`;
|
|
1049
|
+
}
|
|
1050
|
+
catch { /* use default */ }
|
|
1051
|
+
console.log(" " + colors_1.c.dim(`◈ Estimated gas: ${gasMsg}`));
|
|
1052
|
+
}
|
|
989
1053
|
// ── Step 1: Connect ────────────────────────────────────────────────────
|
|
990
|
-
const
|
|
1054
|
+
const connectPrompt = isResuming
|
|
1055
|
+
? "Connect wallet to resume onboarding"
|
|
1056
|
+
: "Approve ARC402Wallet deployment — you will be set as owner";
|
|
1057
|
+
const { client, session, account } = await (0, walletconnect_1.connectPhoneWallet)(config.walletConnectProjectId, chainId, config, { telegramOpts, prompt: connectPrompt, hardware: !!opts.hardware });
|
|
991
1058
|
const networkName = chainId === 8453 ? "Base" : "Base Sepolia";
|
|
992
1059
|
const shortAddr = `${account.slice(0, 6)}...${account.slice(-5)}`;
|
|
993
1060
|
console.log("\n" + colors_1.c.success + colors_1.c.white(` Connected: ${shortAddr} on ${networkName}`));
|
|
994
|
-
if (telegramOpts) {
|
|
1061
|
+
if (telegramOpts && !isResuming) {
|
|
995
1062
|
// Send "connected" message with a deploy confirmation button.
|
|
996
1063
|
// TODO: wire up full callback_data round-trip when a persistent bot process is available.
|
|
997
1064
|
await (0, telegram_notify_1.sendTelegramMessage)({
|
|
@@ -1002,50 +1069,59 @@ function registerWalletCommands(program) {
|
|
|
1002
1069
|
buttons: [[{ text: "🚀 Deploy ARC-402 Wallet", callback_data: "arc402_deploy_confirm" }]],
|
|
1003
1070
|
});
|
|
1004
1071
|
}
|
|
1005
|
-
|
|
1006
|
-
|
|
1007
|
-
|
|
1008
|
-
|
|
1009
|
-
|
|
1010
|
-
data: factoryInterface.encodeFunctionData("createWallet", ["0x0000000071727De22E5E9d8BAf0edAc6f37da032"]),
|
|
1011
|
-
value: "0x0",
|
|
1012
|
-
});
|
|
1013
|
-
console.log(`\nTransaction submitted: ${txHash}`);
|
|
1014
|
-
console.log("Waiting for confirmation...");
|
|
1015
|
-
const receipt = await provider.waitForTransaction(txHash);
|
|
1016
|
-
if (!receipt) {
|
|
1017
|
-
console.error("Transaction not confirmed. Check on-chain.");
|
|
1018
|
-
process.exit(1);
|
|
1072
|
+
let walletAddress;
|
|
1073
|
+
if (isResuming) {
|
|
1074
|
+
// Resume: skip deploy, use existing wallet
|
|
1075
|
+
walletAddress = config.walletContractAddress;
|
|
1076
|
+
console.log(" " + colors_1.c.dim(`◈ Using existing wallet: ${walletAddress}`));
|
|
1019
1077
|
}
|
|
1020
|
-
|
|
1021
|
-
|
|
1022
|
-
|
|
1023
|
-
|
|
1024
|
-
|
|
1025
|
-
|
|
1026
|
-
|
|
1027
|
-
|
|
1078
|
+
else {
|
|
1079
|
+
// ── Step 2: Confirm & Deploy ─────────────────────────────────────────
|
|
1080
|
+
// WalletConnect approval already confirmed intent — sending automatically
|
|
1081
|
+
console.log("Deploying...");
|
|
1082
|
+
const txHash = await (0, walletconnect_1.sendTransactionWithSession)(client, session, account, chainId, {
|
|
1083
|
+
to: factoryAddress,
|
|
1084
|
+
data: factoryInterface.encodeFunctionData("createWallet", ["0x0000000071727De22E5E9d8BAf0edAc6f37da032"]),
|
|
1085
|
+
value: "0x0",
|
|
1086
|
+
});
|
|
1087
|
+
console.log(`\nTransaction submitted: ${txHash}`);
|
|
1088
|
+
console.log("Waiting for confirmation...");
|
|
1089
|
+
const receipt = await provider.waitForTransaction(txHash);
|
|
1090
|
+
if (!receipt) {
|
|
1091
|
+
console.error("Transaction not confirmed. Check on-chain.");
|
|
1092
|
+
process.exit(1);
|
|
1093
|
+
}
|
|
1094
|
+
let deployedWallet = null;
|
|
1095
|
+
const factoryContract = new ethers_1.ethers.Contract(factoryAddress, abis_1.WALLET_FACTORY_ABI, provider);
|
|
1096
|
+
for (const log of receipt.logs) {
|
|
1097
|
+
try {
|
|
1098
|
+
const parsed = factoryContract.interface.parseLog(log);
|
|
1099
|
+
if (parsed?.name === "WalletCreated") {
|
|
1100
|
+
deployedWallet = parsed.args.walletAddress;
|
|
1101
|
+
break;
|
|
1102
|
+
}
|
|
1028
1103
|
}
|
|
1104
|
+
catch { /* skip unparseable logs */ }
|
|
1029
1105
|
}
|
|
1030
|
-
|
|
1031
|
-
|
|
1032
|
-
|
|
1033
|
-
|
|
1034
|
-
|
|
1035
|
-
|
|
1036
|
-
|
|
1037
|
-
|
|
1038
|
-
|
|
1039
|
-
|
|
1040
|
-
|
|
1041
|
-
|
|
1106
|
+
if (!deployedWallet) {
|
|
1107
|
+
console.error("Could not find WalletCreated event in receipt. Check the transaction on-chain.");
|
|
1108
|
+
process.exit(1);
|
|
1109
|
+
}
|
|
1110
|
+
walletAddress = deployedWallet;
|
|
1111
|
+
// ── Step 1 complete: save wallet + owner immediately ─────────────────
|
|
1112
|
+
config.walletContractAddress = walletAddress;
|
|
1113
|
+
config.ownerAddress = account;
|
|
1114
|
+
(0, config_1.saveConfig)(config);
|
|
1115
|
+
try {
|
|
1116
|
+
fs_1.default.chmodSync((0, config_1.getConfigPath)(), 0o600);
|
|
1117
|
+
}
|
|
1118
|
+
catch { /* best-effort */ }
|
|
1119
|
+
console.log("\n " + colors_1.c.success + colors_1.c.white(" Wallet deployed"));
|
|
1120
|
+
(0, tree_1.renderTree)([
|
|
1121
|
+
{ label: "Wallet", value: walletAddress },
|
|
1122
|
+
{ label: "Owner", value: account, last: true },
|
|
1123
|
+
]);
|
|
1042
1124
|
}
|
|
1043
|
-
catch { /* best-effort */ }
|
|
1044
|
-
console.log("\n " + colors_1.c.success + colors_1.c.white(" Wallet deployed"));
|
|
1045
|
-
(0, tree_1.renderTree)([
|
|
1046
|
-
{ label: "Wallet", value: walletAddress },
|
|
1047
|
-
{ label: "Owner", value: account, last: true },
|
|
1048
|
-
]);
|
|
1049
1125
|
// ── Steps 2–6: Complete onboarding ceremony (same WalletConnect session)
|
|
1050
1126
|
const sendTxCeremony = async (call, description) => {
|
|
1051
1127
|
console.log(" " + colors_1.c.dim(`◈ ${description}`));
|
|
@@ -1086,8 +1162,11 @@ function registerWalletCommands(program) {
|
|
|
1086
1162
|
const guardianWallet = ethers_1.ethers.Wallet.createRandom();
|
|
1087
1163
|
config.walletContractAddress = walletAddress;
|
|
1088
1164
|
config.ownerAddress = address;
|
|
1089
|
-
config.guardianPrivateKey = guardianWallet.privateKey;
|
|
1090
1165
|
config.guardianAddress = guardianWallet.address;
|
|
1166
|
+
// Save key to restricted file — never store in config.json
|
|
1167
|
+
saveGuardianKey(guardianWallet.privateKey);
|
|
1168
|
+
if (config.guardianPrivateKey)
|
|
1169
|
+
delete config.guardianPrivateKey;
|
|
1091
1170
|
(0, config_1.saveConfig)(config);
|
|
1092
1171
|
// Call setGuardian on the deployed wallet
|
|
1093
1172
|
const walletContract = new ethers_1.ethers.Contract(walletAddress, abis_1.ARC402_WALLET_GUARDIAN_ABI, signer);
|
|
@@ -1108,7 +1187,7 @@ function registerWalletCommands(program) {
|
|
|
1108
1187
|
{ label: "Wallet", value: walletAddress },
|
|
1109
1188
|
{ label: "Guardian", value: guardianWallet.address, last: true },
|
|
1110
1189
|
]);
|
|
1111
|
-
console.log(`Guardian private key saved to
|
|
1190
|
+
console.log(`Guardian private key saved to ~/.arc402/guardian.key (chmod 400 — keep it safe, used for emergency freeze only)`);
|
|
1112
1191
|
console.log(`Your wallet contract is ready for policy enforcement`);
|
|
1113
1192
|
printOpenShellHint();
|
|
1114
1193
|
}
|
|
@@ -1305,12 +1384,13 @@ function registerWalletCommands(program) {
|
|
|
1305
1384
|
console.error("walletContractAddress not set in config. Run `arc402 wallet deploy` first.");
|
|
1306
1385
|
process.exit(1);
|
|
1307
1386
|
}
|
|
1308
|
-
|
|
1309
|
-
|
|
1387
|
+
const guardianKey = loadGuardianKey(config);
|
|
1388
|
+
if (!guardianKey) {
|
|
1389
|
+
console.error(`Guardian key not found. Expected at ~/.arc402/guardian.key (or guardianPrivateKey in config for legacy setups).`);
|
|
1310
1390
|
process.exit(1);
|
|
1311
1391
|
}
|
|
1312
1392
|
const provider = new ethers_1.ethers.JsonRpcProvider(config.rpcUrl);
|
|
1313
|
-
const guardianSigner = new ethers_1.ethers.Wallet(
|
|
1393
|
+
const guardianSigner = new ethers_1.ethers.Wallet(guardianKey, provider);
|
|
1314
1394
|
const walletContract = new ethers_1.ethers.Contract(config.walletContractAddress, abis_1.ARC402_WALLET_GUARDIAN_ABI, guardianSigner);
|
|
1315
1395
|
let tx;
|
|
1316
1396
|
if (opts.drain) {
|
|
@@ -1430,12 +1510,14 @@ function registerWalletCommands(program) {
|
|
|
1430
1510
|
value: "0x0",
|
|
1431
1511
|
});
|
|
1432
1512
|
await provider.waitForTransaction(txHash);
|
|
1433
|
-
|
|
1513
|
+
saveGuardianKey(guardianWallet.privateKey);
|
|
1514
|
+
if (config.guardianPrivateKey)
|
|
1515
|
+
delete config.guardianPrivateKey;
|
|
1434
1516
|
config.guardianAddress = guardianWallet.address;
|
|
1435
1517
|
(0, config_1.saveConfig)(config);
|
|
1436
1518
|
console.log("\n" + colors_1.c.success + colors_1.c.white(` Guardian set to: ${guardianWallet.address}`));
|
|
1437
1519
|
console.log(" " + colors_1.c.dim("Tx:") + " " + colors_1.c.white(txHash));
|
|
1438
|
-
console.log(" " + colors_1.c.dim("Guardian private key saved to
|
|
1520
|
+
console.log(" " + colors_1.c.dim("Guardian private key saved to ~/.arc402/guardian.key (chmod 400)."));
|
|
1439
1521
|
console.log(" " + colors_1.c.warning + " " + colors_1.c.yellow("The guardian key can freeze your wallet. Store it separately from your hot key."));
|
|
1440
1522
|
});
|
|
1441
1523
|
// ─── policy-engine freeze / unfreeze (legacy — for PolicyEngine-level freeze) ──
|
|
@@ -2146,9 +2228,11 @@ function registerWalletCommands(program) {
|
|
|
2146
2228
|
txHashes.push(txHash);
|
|
2147
2229
|
}
|
|
2148
2230
|
}
|
|
2149
|
-
// Persist guardian key if generated
|
|
2231
|
+
// Persist guardian key if generated — save to restricted file, not config.json
|
|
2150
2232
|
if (guardianWallet) {
|
|
2151
|
-
|
|
2233
|
+
saveGuardianKey(guardianWallet.privateKey);
|
|
2234
|
+
if (config.guardianPrivateKey)
|
|
2235
|
+
delete config.guardianPrivateKey;
|
|
2152
2236
|
config.guardianAddress = guardianWallet.address;
|
|
2153
2237
|
(0, config_1.saveConfig)(config);
|
|
2154
2238
|
}
|
|
@@ -2160,7 +2244,7 @@ function registerWalletCommands(program) {
|
|
|
2160
2244
|
txHashes.forEach((h, i) => console.log(" " + colors_1.c.dim(`Tx ${i + 1}:`) + " " + colors_1.c.white(h)));
|
|
2161
2245
|
}
|
|
2162
2246
|
if (guardianWallet) {
|
|
2163
|
-
console.log(" " + colors_1.c.success + colors_1.c.dim(` Guardian key saved to
|
|
2247
|
+
console.log(" " + colors_1.c.success + colors_1.c.dim(` Guardian key saved to ~/.arc402/guardian.key — address: ${guardianWallet.address}`));
|
|
2164
2248
|
console.log(" " + colors_1.c.warning + " " + colors_1.c.yellow("Store the guardian private key separately from your hot key."));
|
|
2165
2249
|
}
|
|
2166
2250
|
console.log(colors_1.c.dim("\nVerify with: arc402 wallet status && arc402 wallet policy show"));
|