@grimoirelabs/cli 0.10.0 → 0.12.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/dist/commands/advisory-handlers.d.ts.map +1 -1
- package/dist/commands/advisory-handlers.js +78 -5
- package/dist/commands/advisory-handlers.js.map +1 -1
- package/dist/commands/cast.js +1 -1
- package/dist/commands/cast.js.map +1 -1
- package/dist/commands/cross-chain-helpers.js +3 -1
- package/dist/commands/cross-chain-helpers.js.map +1 -1
- package/dist/commands/history.js +1 -1
- package/dist/commands/history.js.map +1 -1
- package/dist/commands/resume.js +1 -1
- package/dist/commands/resume.js.map +1 -1
- package/dist/commands/run-report.js +5 -2
- package/dist/commands/run-report.js.map +1 -1
- package/dist/commands/setup.d.ts +29 -0
- package/dist/commands/setup.d.ts.map +1 -0
- package/dist/commands/setup.js +507 -0
- package/dist/commands/setup.js.map +1 -0
- package/dist/commands/simulate.js +1 -1
- package/dist/commands/simulate.js.map +1 -1
- package/dist/commands/state-helpers.d.ts.map +1 -1
- package/dist/commands/state-helpers.js +1 -1
- package/dist/commands/state-helpers.js.map +1 -1
- package/dist/commands/venue-doctor.d.ts +22 -0
- package/dist/commands/venue-doctor.d.ts.map +1 -1
- package/dist/commands/venue-doctor.js +222 -2
- package/dist/commands/venue-doctor.js.map +1 -1
- package/dist/commands/venue.d.ts.map +1 -1
- package/dist/commands/venue.js +18 -2
- package/dist/commands/venue.js.map +1 -1
- package/dist/commands/wallet.js.map +1 -1
- package/dist/index.js +20 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/ens-profile.d.ts.map +1 -1
- package/dist/lib/ens-profile.js +1 -1
- package/dist/lib/ens-profile.js.map +1 -1
- package/dist/lib/setup-env.d.ts +13 -0
- package/dist/lib/setup-env.d.ts.map +1 -0
- package/dist/lib/setup-env.js +127 -0
- package/dist/lib/setup-env.js.map +1 -0
- package/package.json +6 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-report.js","sourceRoot":"","sources":["../../src/commands/run-report.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"run-report.js","sourceRoot":"","sources":["../../src/commands/run-report.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Setup Command
|
|
3
|
+
* Onboards local execute mode (wallet + RPC + readiness checks)
|
|
4
|
+
*/
|
|
5
|
+
type WalletProvisionMode = "existing_keystore" | "import_env_key" | "generate";
|
|
6
|
+
interface SetupOptions {
|
|
7
|
+
chain?: string;
|
|
8
|
+
rpcUrl?: string;
|
|
9
|
+
adapter?: string;
|
|
10
|
+
keystore?: string;
|
|
11
|
+
passwordEnv?: string;
|
|
12
|
+
keyEnv?: string;
|
|
13
|
+
importKey?: boolean;
|
|
14
|
+
walletMode?: WalletProvisionMode;
|
|
15
|
+
noDoctor?: boolean;
|
|
16
|
+
doctor?: boolean;
|
|
17
|
+
savePasswordEnv?: boolean;
|
|
18
|
+
nonInteractive?: boolean;
|
|
19
|
+
json?: boolean;
|
|
20
|
+
}
|
|
21
|
+
export declare function setupCommand(options: SetupOptions): Promise<void>;
|
|
22
|
+
export declare function resolveSetupRpcUrl(chainId: number, explicitRpcUrl: string | undefined, env: Record<string, string | undefined>): string | undefined;
|
|
23
|
+
export declare function selectWalletProvisionMode(input: {
|
|
24
|
+
keystoreExists: boolean;
|
|
25
|
+
importKey: boolean;
|
|
26
|
+
keyEnvValue?: string;
|
|
27
|
+
}): WalletProvisionMode;
|
|
28
|
+
export {};
|
|
29
|
+
//# sourceMappingURL=setup.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAyCH,KAAK,mBAAmB,GAAG,mBAAmB,GAAG,gBAAgB,GAAG,UAAU,CAAC;AAE/E,UAAU,YAAY;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,mBAAmB,CAAC;IACjC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAgDD,wBAAsB,YAAY,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CA6KvE;AA8HD,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,MAAM,EACf,cAAc,EAAE,MAAM,GAAG,SAAS,EAClC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,GACtC,MAAM,GAAG,SAAS,CAKpB;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE;IAC/C,cAAc,EAAE,OAAO,CAAC;IACxB,SAAS,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,GAAG,mBAAmB,CAQtB"}
|
|
@@ -0,0 +1,507 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Setup Command
|
|
3
|
+
* Onboards local execute mode (wallet + RPC + readiness checks)
|
|
4
|
+
*/
|
|
5
|
+
import { existsSync } from "node:fs";
|
|
6
|
+
import { chmod, mkdir, readFile, writeFile } from "node:fs/promises";
|
|
7
|
+
import { homedir } from "node:os";
|
|
8
|
+
import { dirname, join } from "node:path";
|
|
9
|
+
import * as readline from "node:readline";
|
|
10
|
+
import { Writable } from "node:stream";
|
|
11
|
+
import { compile, createKeystore, createProvider, createWalletFromConfig, formatWei, generatePrivateKey, getAddressFromConfig, getChainName, getNativeCurrencySymbol, preview, } from "@grimoirelabs/core";
|
|
12
|
+
import chalk from "chalk";
|
|
13
|
+
import ora from "ora";
|
|
14
|
+
import { runVenueDoctor } from "./venue-doctor.js";
|
|
15
|
+
const DEFAULT_KEYSTORE_PATH = join(homedir(), ".grimoire", "keystore.json");
|
|
16
|
+
const DEFAULT_SETUP_ENV_FILE = join(".grimoire", "setup.env");
|
|
17
|
+
const ZERO_ADDRESS = "0x0000000000000000000000000000000000000000";
|
|
18
|
+
const DEFAULT_PASSWORD_ENV = "KEYSTORE_PASSWORD";
|
|
19
|
+
const SETUP_SMOKE_SPELL = `spell SetupSmoke {
|
|
20
|
+
params: {
|
|
21
|
+
amount: 21
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
on manual: {
|
|
25
|
+
doubled = params.amount * 2
|
|
26
|
+
emit setup_ok(input=params.amount, doubled=doubled)
|
|
27
|
+
}
|
|
28
|
+
}`;
|
|
29
|
+
export async function setupCommand(options) {
|
|
30
|
+
const interactive = options.nonInteractive !== true &&
|
|
31
|
+
options.json !== true &&
|
|
32
|
+
process.stdin.isTTY &&
|
|
33
|
+
process.stdout.isTTY;
|
|
34
|
+
const spinner = ora({
|
|
35
|
+
text: "Configuring Grimoire execute mode...",
|
|
36
|
+
isEnabled: interactive,
|
|
37
|
+
discardStdin: false,
|
|
38
|
+
});
|
|
39
|
+
if (!options.json) {
|
|
40
|
+
printSetupStartWarning(options.passwordEnv ?? DEFAULT_PASSWORD_ENV);
|
|
41
|
+
}
|
|
42
|
+
spinner.start();
|
|
43
|
+
let stage = "init";
|
|
44
|
+
try {
|
|
45
|
+
stage = "guidance";
|
|
46
|
+
const effectiveOptions = interactive ? await collectGuidedInputs(options, spinner) : options;
|
|
47
|
+
const passwordEnv = effectiveOptions.passwordEnv ?? DEFAULT_PASSWORD_ENV;
|
|
48
|
+
stage = "chain";
|
|
49
|
+
const chainId = parsePositiveInteger(effectiveOptions.chain, "--chain");
|
|
50
|
+
const chainName = getChainName(chainId);
|
|
51
|
+
stage = "state-dir";
|
|
52
|
+
await mkdir(".grimoire", { recursive: true });
|
|
53
|
+
stage = "smoke";
|
|
54
|
+
spinner.text = "Running local smoke preview...";
|
|
55
|
+
await runSmokePreview(chainId);
|
|
56
|
+
stage = "rpc";
|
|
57
|
+
spinner.text = "Checking RPC connectivity...";
|
|
58
|
+
const explicitRpc = effectiveOptions.rpcUrl?.trim();
|
|
59
|
+
const rpcUrl = resolveSetupRpcUrl(chainId, explicitRpc, process.env);
|
|
60
|
+
const provider = createProvider(chainId, rpcUrl);
|
|
61
|
+
const blockNumber = await provider.getBlockNumber();
|
|
62
|
+
const effectiveRpcUrl = provider.rpcUrl;
|
|
63
|
+
stage = "wallet";
|
|
64
|
+
spinner.text = "Preparing wallet credentials...";
|
|
65
|
+
const walletSetup = await setupWallet(effectiveOptions, spinner, interactive);
|
|
66
|
+
process.env[passwordEnv] = walletSetup.password;
|
|
67
|
+
let passwordEnvFile;
|
|
68
|
+
if (walletSetup.passwordSource === "prompt" && effectiveOptions.savePasswordEnv !== false) {
|
|
69
|
+
stage = "password-env";
|
|
70
|
+
spinner.text = "Saving password env helper...";
|
|
71
|
+
passwordEnvFile = await writeSetupPasswordEnvFile(passwordEnv, walletSetup.password);
|
|
72
|
+
}
|
|
73
|
+
const wallet = createWalletFromConfig(walletSetup.keyConfig, chainId, effectiveRpcUrl);
|
|
74
|
+
const balanceWei = await provider.getBalance(wallet.address);
|
|
75
|
+
const balance = formatWei(balanceWei);
|
|
76
|
+
const currency = getNativeCurrencySymbol(chainId);
|
|
77
|
+
let venueDoctorSummary;
|
|
78
|
+
if (shouldRunVenueDoctor(effectiveOptions)) {
|
|
79
|
+
stage = "venue-doctor";
|
|
80
|
+
spinner.text = "Running venue doctor checks...";
|
|
81
|
+
const adapter = effectiveOptions.adapter?.trim() || "uniswap";
|
|
82
|
+
const venueDoctorReport = await runVenueDoctor({ chainId, adapter, rpcUrl: effectiveRpcUrl }, {
|
|
83
|
+
env: {
|
|
84
|
+
...process.env,
|
|
85
|
+
GRIMOIRE_WALLET_ADDRESS: wallet.address,
|
|
86
|
+
WALLET_ADDRESS: wallet.address,
|
|
87
|
+
},
|
|
88
|
+
});
|
|
89
|
+
venueDoctorSummary = {
|
|
90
|
+
adapter,
|
|
91
|
+
ok: venueDoctorReport.ok,
|
|
92
|
+
failedChecks: venueDoctorReport.checks
|
|
93
|
+
.filter((check) => check.status === "fail")
|
|
94
|
+
.map((check) => check.name),
|
|
95
|
+
};
|
|
96
|
+
if (!venueDoctorReport.ok) {
|
|
97
|
+
throw new Error(`Venue doctor failed (${adapter}): ${venueDoctorSummary.failedChecks.join(", ")}`);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
spinner.succeed(chalk.green("Execute mode setup completed"));
|
|
101
|
+
const report = {
|
|
102
|
+
success: true,
|
|
103
|
+
mode: "execute",
|
|
104
|
+
chainId,
|
|
105
|
+
chainName,
|
|
106
|
+
rpcUrl: effectiveRpcUrl,
|
|
107
|
+
rpcBlockNumber: blockNumber.toString(),
|
|
108
|
+
wallet: {
|
|
109
|
+
address: wallet.address,
|
|
110
|
+
keystore: walletSetup.keystorePath,
|
|
111
|
+
source: walletSetup.mode,
|
|
112
|
+
balance,
|
|
113
|
+
balanceWei: balanceWei.toString(),
|
|
114
|
+
currency,
|
|
115
|
+
},
|
|
116
|
+
smoke: {
|
|
117
|
+
success: true,
|
|
118
|
+
spell: "SetupSmoke",
|
|
119
|
+
},
|
|
120
|
+
passwordEnv: {
|
|
121
|
+
name: passwordEnv,
|
|
122
|
+
file: passwordEnvFile,
|
|
123
|
+
},
|
|
124
|
+
venueDoctor: venueDoctorSummary,
|
|
125
|
+
};
|
|
126
|
+
if (options.json) {
|
|
127
|
+
console.log(JSON.stringify(report, null, 2));
|
|
128
|
+
return;
|
|
129
|
+
}
|
|
130
|
+
const adapter = effectiveOptions.adapter?.trim() || "uniswap";
|
|
131
|
+
console.log();
|
|
132
|
+
console.log(chalk.cyan("Setup Summary"));
|
|
133
|
+
console.log(` ${chalk.dim("Mode:")} execute`);
|
|
134
|
+
console.log(` ${chalk.dim("Chain:")} ${chainName} (${chainId})`);
|
|
135
|
+
console.log(` ${chalk.dim("RPC:")} ${effectiveRpcUrl}`);
|
|
136
|
+
console.log(` ${chalk.dim("Block:")} ${blockNumber.toString()}`);
|
|
137
|
+
console.log(` ${chalk.dim("Wallet:")} ${wallet.address}`);
|
|
138
|
+
console.log(` ${chalk.dim("Keystore:")} ${walletSetup.keystorePath}`);
|
|
139
|
+
console.log(` ${chalk.dim("Password env:")} ${passwordEnv}`);
|
|
140
|
+
if (passwordEnvFile) {
|
|
141
|
+
console.log(` ${chalk.dim("Password env file:")} ${passwordEnvFile}`);
|
|
142
|
+
}
|
|
143
|
+
console.log(` ${chalk.dim("Balance:")} ${balance} ${currency}`);
|
|
144
|
+
if (balanceWei === 0n) {
|
|
145
|
+
console.log(chalk.yellow(` Warning: wallet balance is zero ${currency}.`));
|
|
146
|
+
}
|
|
147
|
+
if (venueDoctorSummary) {
|
|
148
|
+
console.log(` ${chalk.dim("Venue doctor:")} ${venueDoctorSummary.ok ? "pass" : "fail"} (${adapter})`);
|
|
149
|
+
}
|
|
150
|
+
const castCommand = `grimoire cast spells/uniswap-swap-execute.spell --dry-run --chain ${chainId} --rpc-url "${effectiveRpcUrl}" --keystore "${walletSetup.keystorePath}" --password-env ${passwordEnv}`;
|
|
151
|
+
console.log();
|
|
152
|
+
console.log(chalk.cyan("Next steps"));
|
|
153
|
+
console.log(chalk.white(` 1. ${castCommand}`));
|
|
154
|
+
console.log(chalk.white(` 2. grimoire venue doctor --adapter ${adapter} --chain ${chainId} --rpc-url "${effectiveRpcUrl}" --json`));
|
|
155
|
+
printSetupPasswordGuidelines(passwordEnv, passwordEnvFile);
|
|
156
|
+
}
|
|
157
|
+
catch (error) {
|
|
158
|
+
const message = error.message;
|
|
159
|
+
spinner.fail(chalk.red(`Setup failed: ${message}`));
|
|
160
|
+
if (options.json) {
|
|
161
|
+
const payload = {
|
|
162
|
+
success: false,
|
|
163
|
+
mode: "execute",
|
|
164
|
+
stage,
|
|
165
|
+
error: message,
|
|
166
|
+
};
|
|
167
|
+
console.log(JSON.stringify(payload, null, 2));
|
|
168
|
+
}
|
|
169
|
+
process.exit(1);
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
function shouldRunVenueDoctor(options) {
|
|
173
|
+
if (options.noDoctor === true) {
|
|
174
|
+
return false;
|
|
175
|
+
}
|
|
176
|
+
if (options.doctor === false) {
|
|
177
|
+
return false;
|
|
178
|
+
}
|
|
179
|
+
return true;
|
|
180
|
+
}
|
|
181
|
+
async function collectGuidedInputs(options, spinner) {
|
|
182
|
+
const guided = { ...options };
|
|
183
|
+
spinner.stop();
|
|
184
|
+
console.log();
|
|
185
|
+
console.log(chalk.cyan("Guided Setup (Execute Mode)"));
|
|
186
|
+
console.log(chalk.dim("Press Enter to accept defaults."));
|
|
187
|
+
console.log(chalk.dim("Sensitive password prompts are hidden and never echoed."));
|
|
188
|
+
if (guided.savePasswordEnv !== false) {
|
|
189
|
+
console.log(chalk.dim(`If you enter a password, setup will save ${DEFAULT_SETUP_ENV_FILE} for command reuse.`));
|
|
190
|
+
}
|
|
191
|
+
spinner.start();
|
|
192
|
+
if (!guided.chain) {
|
|
193
|
+
guided.chain = await promptValueWithSpinner(spinner, "Chain ID", "1");
|
|
194
|
+
}
|
|
195
|
+
const chainId = parsePositiveInteger(guided.chain, "--chain");
|
|
196
|
+
if (!guided.rpcUrl) {
|
|
197
|
+
const detected = resolveSetupRpcUrl(chainId, undefined, process.env);
|
|
198
|
+
const rpcInput = await promptValueWithSpinner(spinner, "RPC URL (blank to use default public RPC)", detected);
|
|
199
|
+
guided.rpcUrl = rpcInput.trim().length > 0 ? rpcInput.trim() : undefined;
|
|
200
|
+
}
|
|
201
|
+
if (guided.noDoctor === undefined && guided.doctor === undefined) {
|
|
202
|
+
const runDoctor = await promptYesNoWithSpinner(spinner, "Run venue doctor checks?", true);
|
|
203
|
+
guided.noDoctor = !runDoctor;
|
|
204
|
+
}
|
|
205
|
+
if (shouldRunVenueDoctor(guided) && (!guided.adapter || guided.adapter.trim().length === 0)) {
|
|
206
|
+
guided.adapter = await promptValueWithSpinner(spinner, "Adapter for venue doctor", "uniswap");
|
|
207
|
+
}
|
|
208
|
+
if (!guided.keystore || guided.keystore.trim().length === 0) {
|
|
209
|
+
guided.keystore = await promptValueWithSpinner(spinner, "Keystore path", DEFAULT_KEYSTORE_PATH);
|
|
210
|
+
}
|
|
211
|
+
const keystorePath = guided.keystore ?? DEFAULT_KEYSTORE_PATH;
|
|
212
|
+
const keyEnvDefault = guided.keyEnv ?? "PRIVATE_KEY";
|
|
213
|
+
const hasDefaultEnvKey = Boolean(process.env[keyEnvDefault]);
|
|
214
|
+
const keystoreExists = existsSync(keystorePath);
|
|
215
|
+
if (guided.importKey === true) {
|
|
216
|
+
guided.walletMode = "import_env_key";
|
|
217
|
+
}
|
|
218
|
+
else {
|
|
219
|
+
guided.walletMode = await promptWalletModeWithSpinner(spinner, keystoreExists, hasDefaultEnvKey);
|
|
220
|
+
}
|
|
221
|
+
guided.importKey = guided.walletMode === "import_env_key";
|
|
222
|
+
if (guided.walletMode === "import_env_key") {
|
|
223
|
+
guided.keyEnv = await promptValueWithSpinner(spinner, "Private key env var", keyEnvDefault);
|
|
224
|
+
const importEnvName = guided.keyEnv ?? keyEnvDefault;
|
|
225
|
+
if (!process.env[importEnvName] || process.env[importEnvName]?.trim().length === 0) {
|
|
226
|
+
throw new Error(`Environment variable ${importEnvName} is not set. Export it first or choose wallet generation.`);
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
if (guided.walletMode !== "existing_keystore" && existsSync(keystorePath)) {
|
|
230
|
+
const overwrite = await promptYesNoWithSpinner(spinner, `Keystore exists at ${keystorePath}. Overwrite?`, false);
|
|
231
|
+
if (!overwrite) {
|
|
232
|
+
throw new Error("Setup canceled. Re-run with --keystore <new-path> or choose the existing keystore.");
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
return guided;
|
|
236
|
+
}
|
|
237
|
+
async function promptWalletModeWithSpinner(spinner, keystoreExists, hasDefaultEnvKey) {
|
|
238
|
+
if (keystoreExists) {
|
|
239
|
+
const useExisting = await promptYesNoWithSpinner(spinner, "Use existing keystore?", true);
|
|
240
|
+
if (useExisting) {
|
|
241
|
+
return "existing_keystore";
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
const importDefault = hasDefaultEnvKey;
|
|
245
|
+
const importFromEnv = await promptYesNoWithSpinner(spinner, "Import wallet from a private key environment variable?", importDefault);
|
|
246
|
+
if (importFromEnv) {
|
|
247
|
+
return "import_env_key";
|
|
248
|
+
}
|
|
249
|
+
return "generate";
|
|
250
|
+
}
|
|
251
|
+
export function resolveSetupRpcUrl(chainId, explicitRpcUrl, env) {
|
|
252
|
+
if (explicitRpcUrl && explicitRpcUrl.length > 0) {
|
|
253
|
+
return explicitRpcUrl;
|
|
254
|
+
}
|
|
255
|
+
return env[`RPC_URL_${chainId}`] ?? env.RPC_URL;
|
|
256
|
+
}
|
|
257
|
+
export function selectWalletProvisionMode(input) {
|
|
258
|
+
if (input.keystoreExists) {
|
|
259
|
+
return "existing_keystore";
|
|
260
|
+
}
|
|
261
|
+
if (input.importKey || (input.keyEnvValue !== undefined && input.keyEnvValue.length > 0)) {
|
|
262
|
+
return "import_env_key";
|
|
263
|
+
}
|
|
264
|
+
return "generate";
|
|
265
|
+
}
|
|
266
|
+
async function runSmokePreview(chainId) {
|
|
267
|
+
const compileResult = compile(SETUP_SMOKE_SPELL);
|
|
268
|
+
if (!compileResult.success || !compileResult.ir) {
|
|
269
|
+
const firstError = compileResult.errors[0];
|
|
270
|
+
throw new Error(firstError ? `${firstError.code}: ${firstError.message}` : "Smoke compile failed");
|
|
271
|
+
}
|
|
272
|
+
const result = await preview({
|
|
273
|
+
spell: compileResult.ir,
|
|
274
|
+
vault: ZERO_ADDRESS,
|
|
275
|
+
chain: chainId,
|
|
276
|
+
});
|
|
277
|
+
if (!result.success) {
|
|
278
|
+
throw new Error(result.error?.message ?? "Smoke preview failed");
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
async function setupWallet(options, spinner, interactive) {
|
|
282
|
+
const keystorePath = options.keystore ?? DEFAULT_KEYSTORE_PATH;
|
|
283
|
+
const keyEnvName = options.keyEnv ?? "PRIVATE_KEY";
|
|
284
|
+
const keyEnvValue = process.env[keyEnvName];
|
|
285
|
+
const keystoreExists = existsSync(keystorePath);
|
|
286
|
+
const mode = options.walletMode ??
|
|
287
|
+
selectWalletProvisionMode({
|
|
288
|
+
keystoreExists,
|
|
289
|
+
importKey: options.importKey === true,
|
|
290
|
+
keyEnvValue,
|
|
291
|
+
});
|
|
292
|
+
if (mode === "existing_keystore") {
|
|
293
|
+
const password = await resolveExistingKeystorePassword(options, interactive, spinner);
|
|
294
|
+
const keystoreJson = await readFile(keystorePath, "utf8");
|
|
295
|
+
const keyConfig = {
|
|
296
|
+
type: "keystore",
|
|
297
|
+
source: keystoreJson,
|
|
298
|
+
password: password.value,
|
|
299
|
+
};
|
|
300
|
+
return {
|
|
301
|
+
mode,
|
|
302
|
+
keyConfig,
|
|
303
|
+
keystorePath,
|
|
304
|
+
address: getAddressFromConfig(keyConfig),
|
|
305
|
+
password: password.value,
|
|
306
|
+
passwordSource: password.source,
|
|
307
|
+
};
|
|
308
|
+
}
|
|
309
|
+
if (mode === "import_env_key") {
|
|
310
|
+
if (!keyEnvValue) {
|
|
311
|
+
throw new Error(`Environment variable ${keyEnvName} is required for wallet import.`);
|
|
312
|
+
}
|
|
313
|
+
const normalizedKey = normalizePrivateKey(keyEnvValue);
|
|
314
|
+
const password = await resolveNewKeystorePassword(options, interactive, spinner);
|
|
315
|
+
const keystoreJson = await createKeystore(normalizedKey, password.value);
|
|
316
|
+
await mkdir(dirname(keystorePath), { recursive: true });
|
|
317
|
+
await writeFile(keystorePath, keystoreJson, "utf8");
|
|
318
|
+
const keyConfig = {
|
|
319
|
+
type: "keystore",
|
|
320
|
+
source: keystoreJson,
|
|
321
|
+
password: password.value,
|
|
322
|
+
};
|
|
323
|
+
return {
|
|
324
|
+
mode,
|
|
325
|
+
keyConfig,
|
|
326
|
+
keystorePath,
|
|
327
|
+
address: getAddressFromConfig(keyConfig),
|
|
328
|
+
password: password.value,
|
|
329
|
+
passwordSource: password.source,
|
|
330
|
+
};
|
|
331
|
+
}
|
|
332
|
+
const privateKey = generatePrivateKey();
|
|
333
|
+
const password = await resolveNewKeystorePassword(options, interactive, spinner);
|
|
334
|
+
const keystoreJson = await createKeystore(privateKey, password.value);
|
|
335
|
+
await mkdir(dirname(keystorePath), { recursive: true });
|
|
336
|
+
await writeFile(keystorePath, keystoreJson, "utf8");
|
|
337
|
+
const keyConfig = {
|
|
338
|
+
type: "keystore",
|
|
339
|
+
source: keystoreJson,
|
|
340
|
+
password: password.value,
|
|
341
|
+
};
|
|
342
|
+
return {
|
|
343
|
+
mode,
|
|
344
|
+
keyConfig,
|
|
345
|
+
keystorePath,
|
|
346
|
+
address: getAddressFromConfig(keyConfig),
|
|
347
|
+
password: password.value,
|
|
348
|
+
passwordSource: password.source,
|
|
349
|
+
};
|
|
350
|
+
}
|
|
351
|
+
function parsePositiveInteger(value, flag) {
|
|
352
|
+
const parsed = Number.parseInt(value ?? "1", 10);
|
|
353
|
+
if (!Number.isFinite(parsed) || parsed <= 0) {
|
|
354
|
+
throw new Error(`${flag} must be a positive integer`);
|
|
355
|
+
}
|
|
356
|
+
return parsed;
|
|
357
|
+
}
|
|
358
|
+
function normalizePrivateKey(value) {
|
|
359
|
+
const trimmed = value.trim();
|
|
360
|
+
if (trimmed.length === 0) {
|
|
361
|
+
throw new Error("Private key value is empty.");
|
|
362
|
+
}
|
|
363
|
+
return (trimmed.startsWith("0x") ? trimmed : `0x${trimmed}`);
|
|
364
|
+
}
|
|
365
|
+
async function resolveExistingKeystorePassword(options, interactive, spinner) {
|
|
366
|
+
const envName = options.passwordEnv ?? DEFAULT_PASSWORD_ENV;
|
|
367
|
+
const envValue = process.env[envName];
|
|
368
|
+
if (envValue) {
|
|
369
|
+
return { value: envValue, source: "env" };
|
|
370
|
+
}
|
|
371
|
+
if (!interactive) {
|
|
372
|
+
throw new Error(`No keystore password available. Set ${envName} or run interactively.`);
|
|
373
|
+
}
|
|
374
|
+
return {
|
|
375
|
+
value: await promptPasswordWithSpinner(spinner, "Keystore password: "),
|
|
376
|
+
source: "prompt",
|
|
377
|
+
};
|
|
378
|
+
}
|
|
379
|
+
async function resolveNewKeystorePassword(options, interactive, spinner) {
|
|
380
|
+
const envName = options.passwordEnv ?? DEFAULT_PASSWORD_ENV;
|
|
381
|
+
const envValue = process.env[envName];
|
|
382
|
+
if (envValue) {
|
|
383
|
+
return { value: envValue, source: "env" };
|
|
384
|
+
}
|
|
385
|
+
if (!interactive) {
|
|
386
|
+
throw new Error(`No keystore password available. Set ${envName} or run interactively.`);
|
|
387
|
+
}
|
|
388
|
+
const password = await promptPasswordWithSpinner(spinner, "New keystore password: ");
|
|
389
|
+
const confirm = await promptPasswordWithSpinner(spinner, "Confirm password: ");
|
|
390
|
+
if (password !== confirm) {
|
|
391
|
+
throw new Error("Passwords do not match.");
|
|
392
|
+
}
|
|
393
|
+
if (password.length === 0) {
|
|
394
|
+
throw new Error("Password must not be empty.");
|
|
395
|
+
}
|
|
396
|
+
return { value: password, source: "prompt" };
|
|
397
|
+
}
|
|
398
|
+
async function promptPasswordWithSpinner(spinner, message) {
|
|
399
|
+
spinner.stop();
|
|
400
|
+
try {
|
|
401
|
+
return await promptPassword(message);
|
|
402
|
+
}
|
|
403
|
+
finally {
|
|
404
|
+
spinner.start();
|
|
405
|
+
}
|
|
406
|
+
}
|
|
407
|
+
async function promptValueWithSpinner(spinner, label, defaultValue) {
|
|
408
|
+
const prompt = defaultValue ? `${label} [${defaultValue}]: ` : `${label}: `;
|
|
409
|
+
const value = (await promptLineWithSpinner(spinner, prompt)).trim();
|
|
410
|
+
if (value.length > 0) {
|
|
411
|
+
return value;
|
|
412
|
+
}
|
|
413
|
+
return defaultValue ?? "";
|
|
414
|
+
}
|
|
415
|
+
async function promptYesNoWithSpinner(spinner, label, defaultValue) {
|
|
416
|
+
const suffix = defaultValue ? "Y/n" : "y/N";
|
|
417
|
+
while (true) {
|
|
418
|
+
const answer = (await promptLineWithSpinner(spinner, `${label} [${suffix}]: `))
|
|
419
|
+
.trim()
|
|
420
|
+
.toLowerCase();
|
|
421
|
+
if (answer.length === 0) {
|
|
422
|
+
return defaultValue;
|
|
423
|
+
}
|
|
424
|
+
if (answer === "y" || answer === "yes") {
|
|
425
|
+
return true;
|
|
426
|
+
}
|
|
427
|
+
if (answer === "n" || answer === "no") {
|
|
428
|
+
return false;
|
|
429
|
+
}
|
|
430
|
+
spinner.stop();
|
|
431
|
+
console.log(chalk.yellow("Please answer yes or no."));
|
|
432
|
+
spinner.start();
|
|
433
|
+
}
|
|
434
|
+
}
|
|
435
|
+
async function promptLineWithSpinner(spinner, message) {
|
|
436
|
+
spinner.stop();
|
|
437
|
+
try {
|
|
438
|
+
return await promptLine(message);
|
|
439
|
+
}
|
|
440
|
+
finally {
|
|
441
|
+
spinner.start();
|
|
442
|
+
}
|
|
443
|
+
}
|
|
444
|
+
async function promptLine(message) {
|
|
445
|
+
return await new Promise((resolve) => {
|
|
446
|
+
const rl = readline.createInterface({
|
|
447
|
+
input: process.stdin,
|
|
448
|
+
output: process.stdout,
|
|
449
|
+
terminal: true,
|
|
450
|
+
});
|
|
451
|
+
rl.question(message, (answer) => {
|
|
452
|
+
rl.close();
|
|
453
|
+
resolve(answer);
|
|
454
|
+
});
|
|
455
|
+
});
|
|
456
|
+
}
|
|
457
|
+
async function promptPassword(message) {
|
|
458
|
+
return await new Promise((resolve) => {
|
|
459
|
+
process.stdout.write(message);
|
|
460
|
+
const silentOutput = new Writable({
|
|
461
|
+
write(_chunk, _encoding, callback) {
|
|
462
|
+
callback();
|
|
463
|
+
},
|
|
464
|
+
});
|
|
465
|
+
const rl = readline.createInterface({
|
|
466
|
+
input: process.stdin,
|
|
467
|
+
output: silentOutput,
|
|
468
|
+
terminal: true,
|
|
469
|
+
});
|
|
470
|
+
rl.question("", (answer) => {
|
|
471
|
+
rl.close();
|
|
472
|
+
process.stdout.write("\n");
|
|
473
|
+
resolve(answer);
|
|
474
|
+
});
|
|
475
|
+
});
|
|
476
|
+
}
|
|
477
|
+
function printSetupStartWarning(passwordEnv) {
|
|
478
|
+
console.log(chalk.yellow("Security warning: never paste passwords or private keys into agent chat."));
|
|
479
|
+
console.log(chalk.dim(`Use hidden prompts, or preload secrets in your shell/secret manager and pass only --password-env ${passwordEnv}.`));
|
|
480
|
+
console.log();
|
|
481
|
+
}
|
|
482
|
+
function printSetupPasswordGuidelines(passwordEnv, passwordEnvFile) {
|
|
483
|
+
console.log();
|
|
484
|
+
console.log(chalk.cyan("Password Safety"));
|
|
485
|
+
console.log(chalk.white(" 1. Do not type keystore passwords or private keys in Codex/Claude prompts."));
|
|
486
|
+
console.log(chalk.white(" 2. Prefer interactive hidden prompts: run commands without inline secret values."));
|
|
487
|
+
console.log(chalk.white(` 3. For non-interactive runs, preload ${passwordEnv} outside the agent and pass only the env var name.`));
|
|
488
|
+
if (passwordEnvFile) {
|
|
489
|
+
console.log(chalk.white(` 4. Grimoire auto-loads ${passwordEnvFile} on startup (existing env vars still take precedence).`));
|
|
490
|
+
console.log(chalk.white(" 5. The env file is plaintext. Keep it local and rotate/delete when not needed."));
|
|
491
|
+
return;
|
|
492
|
+
}
|
|
493
|
+
console.log(chalk.white(" 4. Avoid inline secrets like KEYSTORE_PASSWORD=... grimoire ... because command logs may persist."));
|
|
494
|
+
}
|
|
495
|
+
async function writeSetupPasswordEnvFile(envName, password) {
|
|
496
|
+
const escaped = password.replaceAll("'", "'\"'\"'");
|
|
497
|
+
const content = [
|
|
498
|
+
"# Generated by grimoire setup. Contains sensitive data.",
|
|
499
|
+
"# Keep this file local and do not commit it.",
|
|
500
|
+
`export ${envName}='${escaped}'`,
|
|
501
|
+
"",
|
|
502
|
+
].join("\n");
|
|
503
|
+
await writeFile(DEFAULT_SETUP_ENV_FILE, content, { encoding: "utf8", mode: 0o600 });
|
|
504
|
+
await chmod(DEFAULT_SETUP_ENV_FILE, 0o600);
|
|
505
|
+
return DEFAULT_SETUP_ENV_FILE;
|
|
506
|
+
}
|
|
507
|
+
//# 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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"}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* Simulates spell execution (dry run)
|
|
4
4
|
*/
|
|
5
5
|
import { join } from "node:path";
|
|
6
|
-
import {
|
|
6
|
+
import { compileFile, createProvider, createRunRecord, execute, orchestrateCrossChain, SqliteStateStore, toCrossChainReceipt, } from "@grimoirelabs/core";
|
|
7
7
|
import { adapters } from "@grimoirelabs/venues";
|
|
8
8
|
import chalk from "chalk";
|
|
9
9
|
import ora from "ora";
|