agentaos 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/LICENSE +199 -0
- package/README.md +249 -0
- package/dist/cli/commands/admin.command.d.ts +3 -0
- package/dist/cli/commands/admin.command.d.ts.map +1 -0
- package/dist/cli/commands/admin.command.js +415 -0
- package/dist/cli/commands/admin.command.js.map +1 -0
- package/dist/cli/commands/balance.command.d.ts +3 -0
- package/dist/cli/commands/balance.command.d.ts.map +1 -0
- package/dist/cli/commands/balance.command.js +65 -0
- package/dist/cli/commands/balance.command.js.map +1 -0
- package/dist/cli/commands/deploy.command.d.ts +3 -0
- package/dist/cli/commands/deploy.command.d.ts.map +1 -0
- package/dist/cli/commands/deploy.command.js +101 -0
- package/dist/cli/commands/deploy.command.js.map +1 -0
- package/dist/cli/commands/info.command.d.ts +3 -0
- package/dist/cli/commands/info.command.d.ts.map +1 -0
- package/dist/cli/commands/info.command.js +30 -0
- package/dist/cli/commands/info.command.js.map +1 -0
- package/dist/cli/commands/init.command.d.ts +3 -0
- package/dist/cli/commands/init.command.d.ts.map +1 -0
- package/dist/cli/commands/init.command.js +364 -0
- package/dist/cli/commands/init.command.js.map +1 -0
- package/dist/cli/commands/link.command.d.ts +3 -0
- package/dist/cli/commands/link.command.d.ts.map +1 -0
- package/dist/cli/commands/link.command.js +111 -0
- package/dist/cli/commands/link.command.js.map +1 -0
- package/dist/cli/commands/login.command.d.ts +4 -0
- package/dist/cli/commands/login.command.d.ts.map +1 -0
- package/dist/cli/commands/login.command.js +149 -0
- package/dist/cli/commands/login.command.js.map +1 -0
- package/dist/cli/commands/network.command.d.ts +3 -0
- package/dist/cli/commands/network.command.d.ts.map +1 -0
- package/dist/cli/commands/network.command.js +206 -0
- package/dist/cli/commands/network.command.js.map +1 -0
- package/dist/cli/commands/proxy.command.d.ts +3 -0
- package/dist/cli/commands/proxy.command.d.ts.map +1 -0
- package/dist/cli/commands/proxy.command.js +248 -0
- package/dist/cli/commands/proxy.command.js.map +1 -0
- package/dist/cli/commands/receive.command.d.ts +3 -0
- package/dist/cli/commands/receive.command.d.ts.map +1 -0
- package/dist/cli/commands/receive.command.js +360 -0
- package/dist/cli/commands/receive.command.js.map +1 -0
- package/dist/cli/commands/send.command.d.ts +3 -0
- package/dist/cli/commands/send.command.d.ts.map +1 -0
- package/dist/cli/commands/send.command.js +83 -0
- package/dist/cli/commands/send.command.js.map +1 -0
- package/dist/cli/commands/sign.command.d.ts +3 -0
- package/dist/cli/commands/sign.command.d.ts.map +1 -0
- package/dist/cli/commands/sign.command.js +53 -0
- package/dist/cli/commands/sign.command.js.map +1 -0
- package/dist/cli/commands/status.command.d.ts +3 -0
- package/dist/cli/commands/status.command.d.ts.map +1 -0
- package/dist/cli/commands/status.command.js +109 -0
- package/dist/cli/commands/status.command.js.map +1 -0
- package/dist/cli/index.d.ts +2 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +50 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/theme.d.ts +35 -0
- package/dist/cli/theme.d.ts.map +1 -0
- package/dist/cli/theme.js +96 -0
- package/dist/cli/theme.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +20 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/__tests__/transfer-crypto.test.d.ts +2 -0
- package/dist/lib/__tests__/transfer-crypto.test.d.ts.map +1 -0
- package/dist/lib/__tests__/transfer-crypto.test.js +151 -0
- package/dist/lib/__tests__/transfer-crypto.test.js.map +1 -0
- package/dist/lib/authenticated-fetch.d.ts +6 -0
- package/dist/lib/authenticated-fetch.d.ts.map +1 -0
- package/dist/lib/authenticated-fetch.js +74 -0
- package/dist/lib/authenticated-fetch.js.map +1 -0
- package/dist/lib/config.d.ts +42 -0
- package/dist/lib/config.d.ts.map +1 -0
- package/dist/lib/config.js +163 -0
- package/dist/lib/config.js.map +1 -0
- package/dist/lib/erc20-abi.d.ts +43 -0
- package/dist/lib/erc20-abi.d.ts.map +1 -0
- package/dist/lib/erc20-abi.js +34 -0
- package/dist/lib/erc20-abi.js.map +1 -0
- package/dist/lib/errors.d.ts +12 -0
- package/dist/lib/errors.d.ts.map +1 -0
- package/dist/lib/errors.js +23 -0
- package/dist/lib/errors.js.map +1 -0
- package/dist/lib/keychain.d.ts +11 -0
- package/dist/lib/keychain.d.ts.map +1 -0
- package/dist/lib/keychain.js +216 -0
- package/dist/lib/keychain.js.map +1 -0
- package/dist/lib/policy-conversions.d.ts +19 -0
- package/dist/lib/policy-conversions.d.ts.map +1 -0
- package/dist/lib/policy-conversions.js +62 -0
- package/dist/lib/policy-conversions.js.map +1 -0
- package/dist/lib/signer-manager.d.ts +17 -0
- package/dist/lib/signer-manager.d.ts.map +1 -0
- package/dist/lib/signer-manager.js +80 -0
- package/dist/lib/signer-manager.js.map +1 -0
- package/dist/lib/transfer-crypto.d.ts +36 -0
- package/dist/lib/transfer-crypto.d.ts.map +1 -0
- package/dist/lib/transfer-crypto.js +109 -0
- package/dist/lib/transfer-crypto.js.map +1 -0
- package/dist/lib/x402-client.d.ts +63 -0
- package/dist/lib/x402-client.d.ts.map +1 -0
- package/dist/lib/x402-client.js +236 -0
- package/dist/lib/x402-client.js.map +1 -0
- package/dist/mcp/index.d.ts +6 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/index.js +73 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/mcp/tools/call-contract.d.ts +4 -0
- package/dist/mcp/tools/call-contract.d.ts.map +1 -0
- package/dist/mcp/tools/call-contract.js +68 -0
- package/dist/mcp/tools/call-contract.js.map +1 -0
- package/dist/mcp/tools/execute.d.ts +4 -0
- package/dist/mcp/tools/execute.d.ts.map +1 -0
- package/dist/mcp/tools/execute.js +59 -0
- package/dist/mcp/tools/execute.js.map +1 -0
- package/dist/mcp/tools/get-audit-log.d.ts +4 -0
- package/dist/mcp/tools/get-audit-log.d.ts.map +1 -0
- package/dist/mcp/tools/get-audit-log.js +85 -0
- package/dist/mcp/tools/get-audit-log.js.map +1 -0
- package/dist/mcp/tools/get-balances.d.ts +4 -0
- package/dist/mcp/tools/get-balances.d.ts.map +1 -0
- package/dist/mcp/tools/get-balances.js +84 -0
- package/dist/mcp/tools/get-balances.js.map +1 -0
- package/dist/mcp/tools/get-status.d.ts +4 -0
- package/dist/mcp/tools/get-status.d.ts.map +1 -0
- package/dist/mcp/tools/get-status.js +66 -0
- package/dist/mcp/tools/get-status.js.map +1 -0
- package/dist/mcp/tools/list-networks.d.ts +4 -0
- package/dist/mcp/tools/list-networks.d.ts.map +1 -0
- package/dist/mcp/tools/list-networks.js +36 -0
- package/dist/mcp/tools/list-networks.js.map +1 -0
- package/dist/mcp/tools/list-signers.d.ts +4 -0
- package/dist/mcp/tools/list-signers.d.ts.map +1 -0
- package/dist/mcp/tools/list-signers.js +36 -0
- package/dist/mcp/tools/list-signers.js.map +1 -0
- package/dist/mcp/tools/read-contract.d.ts +4 -0
- package/dist/mcp/tools/read-contract.d.ts.map +1 -0
- package/dist/mcp/tools/read-contract.js +62 -0
- package/dist/mcp/tools/read-contract.js.map +1 -0
- package/dist/mcp/tools/resolve-address.d.ts +4 -0
- package/dist/mcp/tools/resolve-address.d.ts.map +1 -0
- package/dist/mcp/tools/resolve-address.js +37 -0
- package/dist/mcp/tools/resolve-address.js.map +1 -0
- package/dist/mcp/tools/send-eth.d.ts +4 -0
- package/dist/mcp/tools/send-eth.d.ts.map +1 -0
- package/dist/mcp/tools/send-eth.js +52 -0
- package/dist/mcp/tools/send-eth.js.map +1 -0
- package/dist/mcp/tools/send-token.d.ts +4 -0
- package/dist/mcp/tools/send-token.d.ts.map +1 -0
- package/dist/mcp/tools/send-token.js +102 -0
- package/dist/mcp/tools/send-token.js.map +1 -0
- package/dist/mcp/tools/sign-message.d.ts +4 -0
- package/dist/mcp/tools/sign-message.d.ts.map +1 -0
- package/dist/mcp/tools/sign-message.js +33 -0
- package/dist/mcp/tools/sign-message.js.map +1 -0
- package/dist/mcp/tools/sign-typed-data.d.ts +4 -0
- package/dist/mcp/tools/sign-typed-data.d.ts.map +1 -0
- package/dist/mcp/tools/sign-typed-data.js +48 -0
- package/dist/mcp/tools/sign-typed-data.js.map +1 -0
- package/dist/mcp/tools/simulate.d.ts +4 -0
- package/dist/mcp/tools/simulate.d.ts.map +1 -0
- package/dist/mcp/tools/simulate.js +54 -0
- package/dist/mcp/tools/simulate.js.map +1 -0
- package/dist/mcp/tools/wallet-overview.d.ts +4 -0
- package/dist/mcp/tools/wallet-overview.d.ts.map +1 -0
- package/dist/mcp/tools/wallet-overview.js +109 -0
- package/dist/mcp/tools/wallet-overview.js.map +1 -0
- package/dist/mcp/tools/x402-check.d.ts +3 -0
- package/dist/mcp/tools/x402-check.d.ts.map +1 -0
- package/dist/mcp/tools/x402-check.js +44 -0
- package/dist/mcp/tools/x402-check.js.map +1 -0
- package/dist/mcp/tools/x402-discover.d.ts +3 -0
- package/dist/mcp/tools/x402-discover.d.ts.map +1 -0
- package/dist/mcp/tools/x402-discover.js +42 -0
- package/dist/mcp/tools/x402-discover.js.map +1 -0
- package/dist/mcp/tools/x402-fetch.d.ts +4 -0
- package/dist/mcp/tools/x402-fetch.d.ts.map +1 -0
- package/dist/mcp/tools/x402-fetch.js +45 -0
- package/dist/mcp/tools/x402-fetch.js.map +1 -0
- package/package.json +68 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"proxy.command.js","sourceRoot":"","sources":["../../../src/cli/commands/proxy.command.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"receive.command.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/receive.command.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAsRpC,eAAO,MAAM,cAAc,SAkMxB,CAAC"}
|
|
@@ -0,0 +1,360 @@
|
|
|
1
|
+
import { existsSync } from 'node:fs';
|
|
2
|
+
import { confirm, input, select } from '@inquirer/prompts';
|
|
3
|
+
import chalk from 'chalk';
|
|
4
|
+
import { Command } from 'commander';
|
|
5
|
+
import ora from 'ora';
|
|
6
|
+
import { getSignerConfigPath, loadRecoveryMeta, loadSignerConfig, saveRecoveryMeta, validateSignerName, } from '../../lib/config.js';
|
|
7
|
+
import { getSession, getSessionServerUrl, getUserShare, storeUserShare, } from '../../lib/keychain.js';
|
|
8
|
+
import { decryptShareFromTransfer, deriveTransferKey } from '../../lib/transfer-crypto.js';
|
|
9
|
+
import { dim, failMark, hint, promptTheme, section, success, successMark } from '../theme.js';
|
|
10
|
+
// ---------------------------------------------------------------------------
|
|
11
|
+
// Helpers
|
|
12
|
+
// ---------------------------------------------------------------------------
|
|
13
|
+
function truncateAddress(addr) {
|
|
14
|
+
if (addr.length <= 10)
|
|
15
|
+
return addr;
|
|
16
|
+
return `${addr.slice(0, 6)}…${addr.slice(-4)}`;
|
|
17
|
+
}
|
|
18
|
+
async function fetchWithAuth(url, token, opts = {}) {
|
|
19
|
+
const headers = { authorization: `Bearer ${token}` };
|
|
20
|
+
const init = {
|
|
21
|
+
method: opts.method ?? 'GET',
|
|
22
|
+
headers,
|
|
23
|
+
signal: AbortSignal.timeout(15_000),
|
|
24
|
+
};
|
|
25
|
+
if (opts.body !== undefined) {
|
|
26
|
+
headers['content-type'] = 'application/json';
|
|
27
|
+
init.body = JSON.stringify(opts.body);
|
|
28
|
+
}
|
|
29
|
+
let response;
|
|
30
|
+
try {
|
|
31
|
+
response = await fetch(url, init);
|
|
32
|
+
}
|
|
33
|
+
catch (err) {
|
|
34
|
+
const message = err instanceof Error ? err.message : 'Unknown error';
|
|
35
|
+
return { ok: false, status: 0, text: message };
|
|
36
|
+
}
|
|
37
|
+
if (!response.ok) {
|
|
38
|
+
const text = await response.text();
|
|
39
|
+
return { ok: false, status: response.status, text };
|
|
40
|
+
}
|
|
41
|
+
return { ok: true, data: (await response.json()) };
|
|
42
|
+
}
|
|
43
|
+
// ---------------------------------------------------------------------------
|
|
44
|
+
// Server URL resolution (priority order)
|
|
45
|
+
// ---------------------------------------------------------------------------
|
|
46
|
+
async function resolveServerUrl(opts) {
|
|
47
|
+
// 1. Local signer config (agenta init was run)
|
|
48
|
+
if (opts.signerName) {
|
|
49
|
+
const configPath = getSignerConfigPath(opts.signerName);
|
|
50
|
+
if (existsSync(configPath)) {
|
|
51
|
+
try {
|
|
52
|
+
const config = loadSignerConfig(opts.signerName);
|
|
53
|
+
return config.serverUrl;
|
|
54
|
+
}
|
|
55
|
+
catch {
|
|
56
|
+
// Config exists but is malformed — fall through
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
// 2. Recovery metadata (previous agenta receive)
|
|
60
|
+
const meta = loadRecoveryMeta(opts.signerName);
|
|
61
|
+
if (meta)
|
|
62
|
+
return meta.serverUrl;
|
|
63
|
+
}
|
|
64
|
+
// 3. --server CLI flag
|
|
65
|
+
if (opts.cliFlag)
|
|
66
|
+
return opts.cliFlag;
|
|
67
|
+
// 4. Session file (stored during agenta login)
|
|
68
|
+
const sessionUrl = await getSessionServerUrl();
|
|
69
|
+
if (sessionUrl)
|
|
70
|
+
return sessionUrl;
|
|
71
|
+
// 5. No URL found
|
|
72
|
+
return null;
|
|
73
|
+
}
|
|
74
|
+
// ---------------------------------------------------------------------------
|
|
75
|
+
// Context resolution — populates signerName, signerId, ethAddress, baseUrl
|
|
76
|
+
// ---------------------------------------------------------------------------
|
|
77
|
+
async function resolveContext(signerArg, serverFlag, token) {
|
|
78
|
+
// Path A: Local signer config exists (agenta init was run on this device)
|
|
79
|
+
if (signerArg) {
|
|
80
|
+
const configPath = getSignerConfigPath(signerArg);
|
|
81
|
+
if (existsSync(configPath)) {
|
|
82
|
+
try {
|
|
83
|
+
const config = loadSignerConfig(signerArg);
|
|
84
|
+
if (config.signerId) {
|
|
85
|
+
return {
|
|
86
|
+
signerName: signerArg,
|
|
87
|
+
signerId: config.signerId,
|
|
88
|
+
ethAddress: config.ethAddress,
|
|
89
|
+
baseUrl: (serverFlag ?? config.serverUrl).replace(/\/+$/, ''),
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
catch {
|
|
94
|
+
// Config malformed — fall through
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
// Path B: Recovery metadata exists (second+ receive on same device)
|
|
98
|
+
const meta = loadRecoveryMeta(signerArg);
|
|
99
|
+
if (meta) {
|
|
100
|
+
return {
|
|
101
|
+
signerName: meta.signerName,
|
|
102
|
+
signerId: meta.signerId,
|
|
103
|
+
ethAddress: meta.ethAddress,
|
|
104
|
+
baseUrl: (serverFlag ?? meta.serverUrl).replace(/\/+$/, ''),
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
// Path C: Server discovery (first receive on fresh device)
|
|
109
|
+
return resolveFromServer(signerArg, serverFlag, token);
|
|
110
|
+
}
|
|
111
|
+
async function resolveFromServer(signerArg, serverFlag, token) {
|
|
112
|
+
const resolvedUrl = await resolveServerUrl({
|
|
113
|
+
signerName: signerArg,
|
|
114
|
+
cliFlag: serverFlag,
|
|
115
|
+
});
|
|
116
|
+
let baseUrl;
|
|
117
|
+
if (resolvedUrl) {
|
|
118
|
+
baseUrl = resolvedUrl;
|
|
119
|
+
}
|
|
120
|
+
else {
|
|
121
|
+
baseUrl = await input({
|
|
122
|
+
message: 'Server URL',
|
|
123
|
+
default: process.env.AGENTA_SERVER ?? 'https://api.agentaos.ai',
|
|
124
|
+
theme: promptTheme,
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
baseUrl = baseUrl.replace(/\/+$/, '');
|
|
128
|
+
section('Receive share');
|
|
129
|
+
hint('Checking for pending transfers…');
|
|
130
|
+
console.log('');
|
|
131
|
+
// Fetch signers from server
|
|
132
|
+
const spinner = ora({ text: 'Connecting to server…', indent: 2 }).start();
|
|
133
|
+
const signersResult = await fetchWithAuth(`${baseUrl}/api/v1/signers`, token);
|
|
134
|
+
if (!signersResult.ok) {
|
|
135
|
+
spinner.fail('Could not connect to server');
|
|
136
|
+
if (signersResult.status === 401) {
|
|
137
|
+
console.error(`\n ${failMark(`Session expired. Run ${chalk.bold('agenta login')} again.`)}\n`);
|
|
138
|
+
}
|
|
139
|
+
else if (signersResult.status === 0) {
|
|
140
|
+
console.error(`\n ${failMark(`Could not reach server at ${baseUrl}. Check the URL and try again.`)}\n`);
|
|
141
|
+
}
|
|
142
|
+
else {
|
|
143
|
+
console.error(`\n ${failMark(`Server error (${signersResult.status}): ${signersResult.text}`)}\n`);
|
|
144
|
+
}
|
|
145
|
+
return null;
|
|
146
|
+
}
|
|
147
|
+
spinner.succeed('Connected to server');
|
|
148
|
+
const signers = signersResult.data;
|
|
149
|
+
if (signers.length === 0) {
|
|
150
|
+
console.log('');
|
|
151
|
+
console.log(` ${failMark('No accounts found. Create one in AgentaOS or run')} ${chalk.bold('agenta init')} ${dim('on the agent device first.')}`);
|
|
152
|
+
console.log('');
|
|
153
|
+
return null;
|
|
154
|
+
}
|
|
155
|
+
// Match by name or pick interactively
|
|
156
|
+
let picked;
|
|
157
|
+
if (signerArg) {
|
|
158
|
+
const match = signers.find((s) => s.name === signerArg);
|
|
159
|
+
if (!match) {
|
|
160
|
+
const available = signers.map((s) => s.name).join(', ');
|
|
161
|
+
console.log('');
|
|
162
|
+
console.log(` ${failMark(`No account named "${signerArg}" found. Available: ${available}`)}`);
|
|
163
|
+
console.log('');
|
|
164
|
+
return null;
|
|
165
|
+
}
|
|
166
|
+
picked = match;
|
|
167
|
+
}
|
|
168
|
+
else if (signers.length === 1) {
|
|
169
|
+
picked = signers[0];
|
|
170
|
+
console.log(` Found 1 account: ${chalk.bold(picked.name)} (${truncateAddress(picked.ethAddress)})`);
|
|
171
|
+
}
|
|
172
|
+
else {
|
|
173
|
+
console.log(` Found ${signers.length} accounts:`);
|
|
174
|
+
console.log('');
|
|
175
|
+
picked = await select({
|
|
176
|
+
message: 'Which account do you want to receive the share for?',
|
|
177
|
+
choices: signers.map((s) => ({
|
|
178
|
+
name: `${s.name} (${truncateAddress(s.ethAddress)})`,
|
|
179
|
+
value: s,
|
|
180
|
+
})),
|
|
181
|
+
theme: promptTheme,
|
|
182
|
+
});
|
|
183
|
+
}
|
|
184
|
+
// Validate signer name from server (defense against path traversal)
|
|
185
|
+
const nameError = validateSignerName(picked.name);
|
|
186
|
+
if (nameError) {
|
|
187
|
+
console.error(`\n ${failMark(`Invalid account name from server: "${picked.name}". ${nameError}`)}\n`);
|
|
188
|
+
return null;
|
|
189
|
+
}
|
|
190
|
+
return {
|
|
191
|
+
signerName: picked.name,
|
|
192
|
+
signerId: picked.id,
|
|
193
|
+
ethAddress: picked.ethAddress,
|
|
194
|
+
baseUrl,
|
|
195
|
+
};
|
|
196
|
+
}
|
|
197
|
+
// ---------------------------------------------------------------------------
|
|
198
|
+
// agenta receive [signer] — Receive a share from another device via 6-word code
|
|
199
|
+
// ---------------------------------------------------------------------------
|
|
200
|
+
export const receiveCommand = new Command('receive')
|
|
201
|
+
.description('Receive a wallet share from another device (enter 6-word code)')
|
|
202
|
+
.argument('[signer]', 'Signer name')
|
|
203
|
+
.option('--server <url>', 'Server URL override')
|
|
204
|
+
.action(async (signerArg, opts) => {
|
|
205
|
+
try {
|
|
206
|
+
// 1. Require session
|
|
207
|
+
const token = await getSession();
|
|
208
|
+
if (!token) {
|
|
209
|
+
console.error(`\n ${failMark(`Not logged in. Run ${chalk.bold('agenta login')} first.`)}\n`);
|
|
210
|
+
process.exitCode = 1;
|
|
211
|
+
return;
|
|
212
|
+
}
|
|
213
|
+
// 2. Resolve signer context (3 paths: local config → recovery meta → server)
|
|
214
|
+
const ctx = await resolveContext(signerArg, opts.server, token);
|
|
215
|
+
if (!ctx) {
|
|
216
|
+
process.exitCode = 1;
|
|
217
|
+
return;
|
|
218
|
+
}
|
|
219
|
+
const { signerName, signerId, ethAddress, baseUrl } = ctx;
|
|
220
|
+
// Show section header if not already shown by server discovery (Path C)
|
|
221
|
+
if (signerArg) {
|
|
222
|
+
const hasLocalConfig = existsSync(getSignerConfigPath(signerArg));
|
|
223
|
+
const hasRecoveryMeta = loadRecoveryMeta(signerArg) !== null;
|
|
224
|
+
if (hasLocalConfig || hasRecoveryMeta) {
|
|
225
|
+
section('Receive share');
|
|
226
|
+
hint('Checking for pending transfers…');
|
|
227
|
+
console.log('');
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
// 3. Check if share already exists locally
|
|
231
|
+
const existingShare = await getUserShare(signerName);
|
|
232
|
+
if (existingShare) {
|
|
233
|
+
console.log('');
|
|
234
|
+
console.log(dim(` This device already has a recovery key for ${chalk.reset.bold(signerName)}.`));
|
|
235
|
+
const overwrite = await confirm({
|
|
236
|
+
message: 'Overwrite the existing recovery key?',
|
|
237
|
+
default: false,
|
|
238
|
+
theme: promptTheme,
|
|
239
|
+
});
|
|
240
|
+
if (!overwrite) {
|
|
241
|
+
console.log(dim('\n Cancelled.\n'));
|
|
242
|
+
return;
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
// 4. Check for pending transfer
|
|
246
|
+
const pendingSpinner = ora({ text: 'Looking for pending transfer…', indent: 2 }).start();
|
|
247
|
+
const pendingResult = await fetchWithAuth(`${baseUrl}/api/v1/auth/transfer/pending?signerId=${signerId}`, token);
|
|
248
|
+
if (!pendingResult.ok) {
|
|
249
|
+
pendingSpinner.fail('Failed to check transfers');
|
|
250
|
+
if (pendingResult.status === 401) {
|
|
251
|
+
console.error(`\n ${failMark(`Session expired. Run ${chalk.bold('agenta login')} again.`)}\n`);
|
|
252
|
+
}
|
|
253
|
+
else {
|
|
254
|
+
console.error(`\n ${failMark(`Server returned ${pendingResult.status}: ${pendingResult.text}`)}\n`);
|
|
255
|
+
}
|
|
256
|
+
process.exitCode = 1;
|
|
257
|
+
return;
|
|
258
|
+
}
|
|
259
|
+
const pending = pendingResult.data;
|
|
260
|
+
if (!pending || !pending.transferId) {
|
|
261
|
+
pendingSpinner.info('No pending transfer found');
|
|
262
|
+
console.log('');
|
|
263
|
+
console.log(dim(` Run ${chalk.reset(`agenta link ${signerName}`)} on the source device first.`));
|
|
264
|
+
console.log('');
|
|
265
|
+
return;
|
|
266
|
+
}
|
|
267
|
+
pendingSpinner.succeed('Pending transfer found');
|
|
268
|
+
// 5. Prompt for 6-word code
|
|
269
|
+
console.log('');
|
|
270
|
+
const wordsInput = await input({
|
|
271
|
+
message: 'Enter the 6-word transfer code',
|
|
272
|
+
theme: promptTheme,
|
|
273
|
+
validate: (v) => {
|
|
274
|
+
const words = v.trim().split(/\s+/);
|
|
275
|
+
if (words.length !== 6)
|
|
276
|
+
return 'Enter exactly 6 words separated by spaces';
|
|
277
|
+
return true;
|
|
278
|
+
},
|
|
279
|
+
});
|
|
280
|
+
const words = wordsInput
|
|
281
|
+
.trim()
|
|
282
|
+
.split(/\s+/)
|
|
283
|
+
.map((w) => w.toLowerCase());
|
|
284
|
+
// 6. Derive key + claim transfer
|
|
285
|
+
const claimSpinner = ora({ text: 'Claiming transfer…', indent: 2 }).start();
|
|
286
|
+
let transferKey;
|
|
287
|
+
try {
|
|
288
|
+
transferKey = deriveTransferKey(words, pending.transferId);
|
|
289
|
+
}
|
|
290
|
+
catch (err) {
|
|
291
|
+
claimSpinner.fail('Invalid transfer code');
|
|
292
|
+
throw err;
|
|
293
|
+
}
|
|
294
|
+
const claimResult = await fetchWithAuth(`${baseUrl}/api/v1/auth/transfer/${pending.transferId}/claim`, token, { method: 'POST' });
|
|
295
|
+
if (!claimResult.ok) {
|
|
296
|
+
transferKey.fill(0);
|
|
297
|
+
claimSpinner.fail('Failed to claim transfer');
|
|
298
|
+
throw new Error(`Server returned ${claimResult.status}: ${claimResult.text}`);
|
|
299
|
+
}
|
|
300
|
+
claimSpinner.succeed('Transfer claimed');
|
|
301
|
+
// 7. Decrypt share
|
|
302
|
+
const decryptSpinner = ora({ text: 'Decrypting share…', indent: 2 }).start();
|
|
303
|
+
let shareBytes;
|
|
304
|
+
try {
|
|
305
|
+
shareBytes = await decryptShareFromTransfer(claimResult.data.encryptedPayload, transferKey);
|
|
306
|
+
}
|
|
307
|
+
catch {
|
|
308
|
+
transferKey.fill(0);
|
|
309
|
+
decryptSpinner.fail('Decryption failed — wrong transfer code');
|
|
310
|
+
process.exitCode = 1;
|
|
311
|
+
return;
|
|
312
|
+
}
|
|
313
|
+
transferKey.fill(0);
|
|
314
|
+
decryptSpinner.succeed('Share decrypted');
|
|
315
|
+
// 8. Store in keychain
|
|
316
|
+
const storeSpinner = ora({ text: 'Storing recovery key…', indent: 2 }).start();
|
|
317
|
+
const shareBase64 = Buffer.from(shareBytes).toString('base64');
|
|
318
|
+
shareBytes.fill(0);
|
|
319
|
+
await storeUserShare(signerName, shareBase64);
|
|
320
|
+
storeSpinner.succeed('Recovery key stored');
|
|
321
|
+
// 9. Confirm transfer (non-critical — share is already stored locally)
|
|
322
|
+
const confirmSpinner = ora({ text: 'Confirming transfer…', indent: 2 }).start();
|
|
323
|
+
try {
|
|
324
|
+
const confirmResult = await fetchWithAuth(`${baseUrl}/api/v1/auth/transfer/${pending.transferId}/confirm`, token, { method: 'POST' });
|
|
325
|
+
if (!confirmResult.ok) {
|
|
326
|
+
confirmSpinner.warn('Confirmation failed — share is still stored locally');
|
|
327
|
+
}
|
|
328
|
+
else {
|
|
329
|
+
confirmSpinner.succeed('Transfer confirmed');
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
catch {
|
|
333
|
+
confirmSpinner.warn('Could not confirm transfer — share is still stored locally');
|
|
334
|
+
}
|
|
335
|
+
// 10. Save recovery metadata (so next agenta receive skips server discovery)
|
|
336
|
+
saveRecoveryMeta(signerName, {
|
|
337
|
+
signerName,
|
|
338
|
+
signerId,
|
|
339
|
+
ethAddress,
|
|
340
|
+
serverUrl: baseUrl,
|
|
341
|
+
receivedAt: new Date().toISOString(),
|
|
342
|
+
});
|
|
343
|
+
console.log('');
|
|
344
|
+
console.log(` ${successMark(`Share for ${chalk.bold(signerName)} received and stored`)}`);
|
|
345
|
+
console.log('');
|
|
346
|
+
console.log(` ${success('Done!')} This device now holds the recovery key.`);
|
|
347
|
+
console.log(` Run ${chalk.bold('agenta admin policies')} to manage policies.`);
|
|
348
|
+
console.log('');
|
|
349
|
+
}
|
|
350
|
+
catch (error) {
|
|
351
|
+
if (error instanceof Error && error.name === 'ExitPromptError') {
|
|
352
|
+
console.log(dim('\n Cancelled.\n'));
|
|
353
|
+
return;
|
|
354
|
+
}
|
|
355
|
+
const message = error instanceof Error ? error.message : 'Unknown error';
|
|
356
|
+
console.error(`\n ${failMark(message)}\n`);
|
|
357
|
+
process.exitCode = 1;
|
|
358
|
+
}
|
|
359
|
+
});
|
|
360
|
+
//# sourceMappingURL=receive.command.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"receive.command.js","sourceRoot":"","sources":["../../../src/cli/commands/receive.command.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"send.command.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/send.command.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAA+B,MAAM,WAAW,CAAC;AAWjE,eAAO,MAAM,WAAW,SAuFtB,CAAC"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import { Command } from 'commander';
|
|
3
|
+
import ora from 'ora';
|
|
4
|
+
import { parseEther } from 'viem';
|
|
5
|
+
import { createClientFromConfig, createSignerFromConfig, loadSignerConfig, } from '../../lib/config.js';
|
|
6
|
+
import { brand, danger, dim } from '../theme.js';
|
|
7
|
+
export const sendCommand = new Command('send')
|
|
8
|
+
.description('Send ETH to an address')
|
|
9
|
+
.argument('<to>', 'Destination address (0x...)')
|
|
10
|
+
.argument('<amount>', 'Amount in ETH (e.g., 0.01)')
|
|
11
|
+
.option('-n, --network <network>', 'Override default network')
|
|
12
|
+
.option('--gas-limit <limit>', 'Gas limit')
|
|
13
|
+
.option('--data <hex>', 'Calldata as hex string')
|
|
14
|
+
.action(async (to, amount, options, command) => {
|
|
15
|
+
if (!/^0x[0-9a-fA-F]{40}$/.test(to)) {
|
|
16
|
+
console.error(danger('\n Error: Invalid Ethereum address format.\n'));
|
|
17
|
+
process.exitCode = 1;
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
const amountFloat = Number.parseFloat(amount);
|
|
21
|
+
if (Number.isNaN(amountFloat) || amountFloat <= 0) {
|
|
22
|
+
console.error(danger('\n Error: Amount must be a positive number.\n'));
|
|
23
|
+
process.exitCode = 1;
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
let config;
|
|
27
|
+
try {
|
|
28
|
+
config = loadSignerConfig(command.optsWithGlobals().signer);
|
|
29
|
+
}
|
|
30
|
+
catch (error) {
|
|
31
|
+
const message = error instanceof Error ? error.message : 'Unknown error';
|
|
32
|
+
console.error(danger(`\n Error: ${message}\n`));
|
|
33
|
+
process.exitCode = 1;
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
const network = options.network ?? config.network;
|
|
37
|
+
if (!network) {
|
|
38
|
+
console.error(danger('\n Error: No network specified. Use --network <name>.\n'));
|
|
39
|
+
process.exitCode = 1;
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
const valueWei = parseEther(amount).toString();
|
|
43
|
+
const { api } = createClientFromConfig(config);
|
|
44
|
+
console.log(chalk.bold('\n Transaction Details'));
|
|
45
|
+
console.log(dim(` ${'-'.repeat(40)}`));
|
|
46
|
+
console.log(` To: ${brand(to)}`);
|
|
47
|
+
console.log(` Amount: ${chalk.bold(amount)} ETH (${valueWei} wei)`);
|
|
48
|
+
console.log(` Network: ${network}`);
|
|
49
|
+
if (options.gasLimit)
|
|
50
|
+
console.log(` Gas: ${options.gasLimit}`);
|
|
51
|
+
if (options.data)
|
|
52
|
+
console.log(` Data: ${options.data.slice(0, 20)}...`);
|
|
53
|
+
console.log('');
|
|
54
|
+
const spinner = ora({ text: 'Loading keyshare...', indent: 2 }).start();
|
|
55
|
+
let signer;
|
|
56
|
+
try {
|
|
57
|
+
signer = await createSignerFromConfig(config);
|
|
58
|
+
spinner.text = 'Signing transaction (threshold ECDSA)...';
|
|
59
|
+
const transaction = { to, value: valueWei, network };
|
|
60
|
+
if (options.gasLimit)
|
|
61
|
+
transaction.gasLimit = options.gasLimit;
|
|
62
|
+
if (options.data)
|
|
63
|
+
transaction.data = options.data;
|
|
64
|
+
const result = await signer.signTransaction(transaction);
|
|
65
|
+
spinner.succeed('Transaction signed and broadcast');
|
|
66
|
+
const explorerUrl = await api.getExplorerTxUrl(network, result.txHash);
|
|
67
|
+
console.log('');
|
|
68
|
+
console.log(` ${chalk.bold('Tx Hash:')} ${brand(result.txHash)}`);
|
|
69
|
+
if (explorerUrl) {
|
|
70
|
+
console.log(` ${chalk.bold('Explorer:')} ${dim(explorerUrl)}`);
|
|
71
|
+
}
|
|
72
|
+
console.log('');
|
|
73
|
+
}
|
|
74
|
+
catch (error) {
|
|
75
|
+
const message = error instanceof Error ? error.message : 'Unknown error';
|
|
76
|
+
spinner.fail(`Transaction failed: ${message}`);
|
|
77
|
+
process.exitCode = 1;
|
|
78
|
+
}
|
|
79
|
+
finally {
|
|
80
|
+
signer?.destroy();
|
|
81
|
+
}
|
|
82
|
+
});
|
|
83
|
+
//# sourceMappingURL=send.command.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"send.command.js","sourceRoot":"","sources":["../../../src/cli/commands/send.command.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sign.command.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/sign.command.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAA+B,MAAM,WAAW,CAAC;AAKjE,eAAO,MAAM,kBAAkB,SAoD5B,CAAC"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import { Command } from 'commander';
|
|
3
|
+
import ora from 'ora';
|
|
4
|
+
import { createSignerFromConfig, loadSignerConfig } from '../../lib/config.js';
|
|
5
|
+
import { brand, danger, dim } from '../theme.js';
|
|
6
|
+
export const signMessageCommand = new Command('sign-message')
|
|
7
|
+
.description('Sign a message using threshold ECDSA')
|
|
8
|
+
.argument('<message>', 'Message to sign (string or hex with 0x prefix)')
|
|
9
|
+
.action(async (message, _options, command) => {
|
|
10
|
+
let config;
|
|
11
|
+
try {
|
|
12
|
+
config = loadSignerConfig(command.optsWithGlobals().signer);
|
|
13
|
+
}
|
|
14
|
+
catch (error) {
|
|
15
|
+
const msg = error instanceof Error ? error.message : 'Unknown error';
|
|
16
|
+
console.error(danger(`\n Error: ${msg}\n`));
|
|
17
|
+
process.exitCode = 1;
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
console.log(chalk.bold('\n Sign Message'));
|
|
21
|
+
console.log(dim(` ${'-'.repeat(40)}`));
|
|
22
|
+
const isHex = /^0x[0-9a-fA-F]*$/.test(message);
|
|
23
|
+
if (isHex) {
|
|
24
|
+
console.log(` Message: ${dim(message.slice(0, 40))}${message.length > 40 ? '...' : ''}`);
|
|
25
|
+
}
|
|
26
|
+
else {
|
|
27
|
+
console.log(` Message: ${dim(`"${message.slice(0, 60)}"`)}${message.length > 60 ? '...' : ''}`);
|
|
28
|
+
}
|
|
29
|
+
console.log('');
|
|
30
|
+
const spinner = ora({ text: 'Loading keyshare...', indent: 2 }).start();
|
|
31
|
+
let signer;
|
|
32
|
+
try {
|
|
33
|
+
signer = await createSignerFromConfig(config);
|
|
34
|
+
spinner.text = 'Signing message (threshold ECDSA)...';
|
|
35
|
+
const result = await signer.signMessage(message);
|
|
36
|
+
spinner.succeed('Message signed successfully');
|
|
37
|
+
console.log('');
|
|
38
|
+
console.log(` ${chalk.bold('v:')} ${result.v}`);
|
|
39
|
+
console.log(` ${chalk.bold('r:')} ${brand(result.r)}`);
|
|
40
|
+
console.log(` ${chalk.bold('s:')} ${brand(result.s)}`);
|
|
41
|
+
console.log(` ${chalk.bold('sig:')} ${dim(result.signature)}`);
|
|
42
|
+
console.log('');
|
|
43
|
+
}
|
|
44
|
+
catch (error) {
|
|
45
|
+
const msg = error instanceof Error ? error.message : 'Unknown error';
|
|
46
|
+
spinner.fail(`Signing failed: ${msg}`);
|
|
47
|
+
process.exitCode = 1;
|
|
48
|
+
}
|
|
49
|
+
finally {
|
|
50
|
+
signer?.destroy();
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
//# sourceMappingURL=sign.command.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sign.command.js","sourceRoot":"","sources":["../../../src/cli/commands/sign.command.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status.command.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/status.command.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAgFpC,eAAO,MAAM,aAAa,SA+DvB,CAAC"}
|