@grimoirelabs/cli 0.8.0 → 0.9.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.
@@ -0,0 +1,280 @@
1
+ import { existsSync, readFileSync } from "node:fs";
2
+ import { homedir } from "node:os";
3
+ import { join } from "node:path";
4
+ import * as readline from "node:readline";
5
+ import { Writable } from "node:stream";
6
+ import { SqliteStateStore, compileFile, createProvider, createRunRecord, createWalletFromConfig, execute, injectHandoffParams, loadPrivateKey, } from "@grimoirelabs/core";
7
+ import { adapters, createHyperliquidAdapter } from "@grimoirelabs/venues";
8
+ import chalk from "chalk";
9
+ import ora from "ora";
10
+ import { createAdvisoryLiveTraceLogger } from "./advisory-live-trace.js";
11
+ import { isCrossChainRunManifest, resolveRpcUrlForChain } from "./cross-chain-helpers.js";
12
+ const DEFAULT_KEYSTORE_PATH = join(homedir(), ".grimoire", "keystore.json");
13
+ export async function resumeCommand(runId, options) {
14
+ const spinner = ora(`Resuming run ${runId}...`).start();
15
+ const dbPath = options.stateDir ? join(options.stateDir, "grimoire.db") : undefined;
16
+ const store = new SqliteStateStore({ dbPath });
17
+ try {
18
+ const run = await store.getRunById(runId);
19
+ if (!run) {
20
+ spinner.fail(chalk.red(`Run '${runId}' not found.`));
21
+ process.exit(1);
22
+ }
23
+ const manifestCandidate = run.provenance
24
+ ?.cross_chain;
25
+ if (!isCrossChainRunManifest(manifestCandidate)) {
26
+ spinner.fail(chalk.red(`Run '${runId}' is not a resumable cross-chain run.`));
27
+ process.exit(1);
28
+ }
29
+ const manifest = manifestCandidate;
30
+ const destinationCompile = await compileFile(manifest.destination_spell_path);
31
+ if (!destinationCompile.success || !destinationCompile.ir) {
32
+ spinner.fail(chalk.red("Destination spell failed to compile during resume."));
33
+ for (const error of destinationCompile.errors) {
34
+ console.log(chalk.red(` [${error.code}] ${error.message}`));
35
+ }
36
+ process.exit(1);
37
+ }
38
+ const destinationSpell = destinationCompile.ir;
39
+ const tracks = await store.getRunTracks(runId);
40
+ const handoffs = await store.getRunHandoffs(runId);
41
+ const destinationTrack = tracks.find((track) => track.trackId === "destination");
42
+ const handoff = handoffs[0];
43
+ if (!destinationTrack || !handoff) {
44
+ spinner.fail(chalk.red("Resume data is incomplete (missing destination track or handoff)."));
45
+ process.exit(1);
46
+ }
47
+ if (destinationTrack.status === "completed") {
48
+ spinner.succeed(chalk.green("Destination track is already completed."));
49
+ if (options.json) {
50
+ console.log(JSON.stringify({ success: true, runId, resumed: false, status: "completed" }, null, 2));
51
+ }
52
+ return;
53
+ }
54
+ const sourceRpcUrl = manifest.rpc_by_chain[manifest.source_chain_id] ??
55
+ resolveRpcUrlForChain(manifest.source_chain_id, {
56
+ byChain: manifest.rpc_by_chain,
57
+ defaultRpcUrl: undefined,
58
+ });
59
+ const destinationRpcUrl = manifest.rpc_by_chain[manifest.destination_chain_id] ??
60
+ resolveRpcUrlForChain(manifest.destination_chain_id, {
61
+ byChain: manifest.rpc_by_chain,
62
+ defaultRpcUrl: undefined,
63
+ });
64
+ if (!sourceRpcUrl || !destinationRpcUrl) {
65
+ spinner.fail(chalk.red("Missing RPC mapping in persisted run manifest."));
66
+ process.exit(1);
67
+ }
68
+ const destinationProvider = createProvider(manifest.destination_chain_id, destinationRpcUrl);
69
+ const keyConfig = await resolveResumeKeyConfig(spinner);
70
+ const rawKey = loadPrivateKey(keyConfig);
71
+ const configuredAdapters = adapters.map((adapter) => {
72
+ if (adapter.meta.name === "hyperliquid") {
73
+ return createHyperliquidAdapter({
74
+ privateKey: rawKey,
75
+ assetMap: { ETH: 4 },
76
+ });
77
+ }
78
+ return adapter;
79
+ });
80
+ const destinationWallet = createWalletFromConfig(keyConfig, manifest.destination_chain_id, destinationProvider.rpcUrl);
81
+ const vault = manifest.vault;
82
+ if (handoff.status !== "settled") {
83
+ if (!options.watch) {
84
+ spinner.succeed(chalk.yellow("Run is waiting for handoff settlement. Use --watch to continue."));
85
+ if (options.json) {
86
+ console.log(JSON.stringify({
87
+ success: true,
88
+ runId,
89
+ resumed: false,
90
+ status: "waiting",
91
+ handoff: handoff.status,
92
+ }, null, 2));
93
+ }
94
+ return;
95
+ }
96
+ const across = configuredAdapters.find((adapter) => adapter.meta.name === "across");
97
+ const resolver = across?.bridgeLifecycle?.resolveHandoffStatus ?? across?.resolveHandoffStatus;
98
+ if (!resolver) {
99
+ spinner.fail(chalk.red("No handoff lifecycle resolver is available for resume."));
100
+ process.exit(1);
101
+ }
102
+ spinner.text = "Polling handoff settlement...";
103
+ const pollIntervalSec = options.pollIntervalSec
104
+ ? parseIntStrict(options.pollIntervalSec, "--poll-interval-sec")
105
+ : manifest.poll_interval_sec;
106
+ const deadline = Date.now() + manifest.handoff_timeout_sec * 1000;
107
+ while (Date.now() < deadline) {
108
+ const status = await resolver({
109
+ handoffId: handoff.handoffId,
110
+ originChainId: handoff.originChainId,
111
+ destinationChainId: handoff.destinationChainId,
112
+ originTxHash: handoff.originTxHash,
113
+ reference: handoff.reference,
114
+ asset: handoff.asset,
115
+ submittedAmount: BigInt(handoff.submittedAmount),
116
+ walletAddress: vault,
117
+ });
118
+ if (status.status === "settled") {
119
+ handoff.status = "settled";
120
+ handoff.settledAmount = (status.settledAmount ?? BigInt(handoff.submittedAmount)).toString();
121
+ handoff.reference = status.reference ?? handoff.reference;
122
+ handoff.updatedAt = new Date().toISOString();
123
+ await store.upsertRunHandoff(handoff);
124
+ break;
125
+ }
126
+ if (status.status === "failed" || status.status === "expired") {
127
+ handoff.status = status.status === "failed" ? "failed" : "expired";
128
+ handoff.reason = status.reason ?? "Bridge handoff failed";
129
+ handoff.updatedAt = new Date().toISOString();
130
+ await store.upsertRunHandoff(handoff);
131
+ destinationTrack.status = "failed";
132
+ destinationTrack.error = handoff.reason;
133
+ destinationTrack.updatedAt = new Date().toISOString();
134
+ await store.upsertRunTrack(destinationTrack);
135
+ spinner.fail(chalk.red(handoff.reason));
136
+ process.exit(1);
137
+ }
138
+ await sleep(pollIntervalSec * 1000);
139
+ }
140
+ if (handoff.status !== "settled") {
141
+ handoff.status = "expired";
142
+ handoff.reason = `Handoff settlement timed out after ${manifest.handoff_timeout_sec} seconds`;
143
+ handoff.updatedAt = new Date().toISOString();
144
+ await store.upsertRunHandoff(handoff);
145
+ destinationTrack.status = "failed";
146
+ destinationTrack.error = handoff.reason;
147
+ destinationTrack.updatedAt = new Date().toISOString();
148
+ await store.upsertRunTrack(destinationTrack);
149
+ spinner.fail(chalk.red(handoff.reason));
150
+ process.exit(1);
151
+ }
152
+ }
153
+ spinner.text = "Executing destination track...";
154
+ const destinationState = (await store.load(destinationSpell.id)) ?? {};
155
+ const destinationParams = injectHandoffParams(manifest.params, {
156
+ handoffId: handoff.handoffId,
157
+ sourceTrackId: handoff.sourceTrackId,
158
+ destinationTrackId: handoff.destinationTrackId,
159
+ sourceStepId: handoff.sourceStepId,
160
+ originChainId: handoff.originChainId,
161
+ destinationChainId: handoff.destinationChainId,
162
+ asset: handoff.asset,
163
+ submittedAmount: BigInt(handoff.submittedAmount),
164
+ settledAmount: handoff.settledAmount ? BigInt(handoff.settledAmount) : undefined,
165
+ status: handoff.status,
166
+ reference: handoff.reference,
167
+ originTxHash: handoff.originTxHash,
168
+ reason: handoff.reason,
169
+ });
170
+ const advisoryEventCallback = options.json
171
+ ? undefined
172
+ : createAdvisoryLiveTraceLogger(console.log, { verbose: false });
173
+ const destinationResult = await execute({
174
+ spell: destinationSpell,
175
+ runId,
176
+ vault,
177
+ chain: manifest.destination_chain_id,
178
+ params: destinationParams,
179
+ persistentState: destinationState,
180
+ simulate: false,
181
+ executionMode: manifest.mode === "execute" ? "execute" : "dry-run",
182
+ wallet: manifest.mode === "execute" ? destinationWallet : undefined,
183
+ provider: destinationProvider,
184
+ adapters: configuredAdapters,
185
+ eventCallback: advisoryEventCallback,
186
+ crossChain: {
187
+ enabled: true,
188
+ runId,
189
+ trackId: "destination",
190
+ role: "destination",
191
+ morphoMarketIds: manifest.morpho_market_ids,
192
+ },
193
+ warningCallback: (message) => console.log(chalk.yellow(`Warning: ${message}`)),
194
+ });
195
+ await store.save(destinationSpell.id, destinationResult.finalState);
196
+ await store.addRun(destinationSpell.id, createRunRecord(destinationResult, {
197
+ resumed_from_run_id: runId,
198
+ cross_chain: manifest,
199
+ }));
200
+ await store.saveLedger(destinationSpell.id, runId, destinationResult.ledgerEvents);
201
+ destinationTrack.status = destinationResult.success ? "completed" : "failed";
202
+ destinationTrack.error = destinationResult.error;
203
+ destinationTrack.updatedAt = new Date().toISOString();
204
+ await store.upsertRunTrack(destinationTrack);
205
+ spinner.succeed(destinationResult.success
206
+ ? chalk.green("Cross-chain run resumed successfully.")
207
+ : chalk.red(`Destination execution failed: ${destinationResult.error}`));
208
+ if (options.json) {
209
+ console.log(JSON.stringify({
210
+ success: destinationResult.success,
211
+ runId,
212
+ resumed: true,
213
+ receipt: destinationResult.receipt,
214
+ error: destinationResult.structuredError,
215
+ }, null, 2));
216
+ }
217
+ if (!destinationResult.success) {
218
+ process.exit(1);
219
+ }
220
+ }
221
+ finally {
222
+ store.close();
223
+ }
224
+ }
225
+ async function resolveResumeKeyConfig(spinner) {
226
+ const keyEnv = process.env.KEY_ENV;
227
+ if (keyEnv && process.env[keyEnv]) {
228
+ return { type: "env", source: keyEnv };
229
+ }
230
+ const defaultKeystore = DEFAULT_KEYSTORE_PATH;
231
+ if (!existsSync(defaultKeystore)) {
232
+ spinner.fail(chalk.red(`Resume requires a wallet key. No key found in KEY_ENV and no default keystore at ${defaultKeystore}.`));
233
+ process.exit(1);
234
+ }
235
+ const envPassword = process.env.KEYSTORE_PASSWORD;
236
+ if (envPassword) {
237
+ const keystoreJson = readFileSync(defaultKeystore, "utf-8");
238
+ return { type: "keystore", source: keystoreJson, password: envPassword };
239
+ }
240
+ if (!process.stdin.isTTY) {
241
+ spinner.fail(chalk.red("Set KEYSTORE_PASSWORD for non-interactive resume."));
242
+ process.exit(1);
243
+ }
244
+ spinner.stop();
245
+ const password = await promptPassword("Keystore password: ");
246
+ spinner.start("Resuming run...");
247
+ const keystoreJson = readFileSync(defaultKeystore, "utf-8");
248
+ return { type: "keystore", source: keystoreJson, password };
249
+ }
250
+ async function promptPassword(message) {
251
+ return new Promise((resolve) => {
252
+ process.stdout.write(message);
253
+ const silentOutput = new Writable({
254
+ write(_chunk, _encoding, cb) {
255
+ cb();
256
+ },
257
+ });
258
+ const rl = readline.createInterface({
259
+ input: process.stdin,
260
+ output: silentOutput,
261
+ terminal: true,
262
+ });
263
+ rl.question("", (answer) => {
264
+ rl.close();
265
+ process.stdout.write("\n");
266
+ resolve(answer);
267
+ });
268
+ });
269
+ }
270
+ function parseIntStrict(value, flag) {
271
+ const parsed = Number.parseInt(value, 10);
272
+ if (!Number.isFinite(parsed) || parsed <= 0) {
273
+ throw new Error(`${flag} must be a positive integer`);
274
+ }
275
+ return parsed;
276
+ }
277
+ function sleep(ms) {
278
+ return new Promise((resolve) => setTimeout(resolve, ms));
279
+ }
280
+ //# sourceMappingURL=resume.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resume.js","sourceRoot":"","sources":["../../src/commands/resume.ts"],"names":[],"mappings":"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"}
@@ -6,7 +6,14 @@ interface SimulateOptions {
6
6
  params?: string;
7
7
  vault?: string;
8
8
  chain?: string;
9
- rpcUrl?: string;
9
+ rpcUrl?: string | string[];
10
+ destinationSpell?: string;
11
+ destinationChain?: string;
12
+ handoffTimeoutSec?: string;
13
+ pollIntervalSec?: string;
14
+ watch?: boolean;
15
+ morphoMarketId?: string | string[];
16
+ morphoMarketMap?: string;
10
17
  advisorSkillsDir?: string | string[];
11
18
  advisoryPi?: boolean;
12
19
  advisoryReplay?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"simulate.d.ts","sourceRoot":"","sources":["../../src/commands/simulate.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAyBH,UAAU,eAAe;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gBAAgB,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACrC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,gBAAgB,CAAC,EAAE,KAAK,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;IACrD,aAAa,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,QAAQ,CAAC;IAC3C,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,UAAU,iBAAiB;IACzB,GAAG,EAAE,OAAO,OAAO,CAAC,GAAG,CAAC;IACxB,IAAI,EAAE,OAAO,OAAO,CAAC,IAAI,CAAC;CAC3B;AAWD,wBAAsB,eAAe,CACnC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,eAAe,EACxB,WAAW,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,GACvC,OAAO,CAAC,IAAI,CAAC,CAgLf"}
1
+ {"version":3,"file":"simulate.d.ts","sourceRoot":"","sources":["../../src/commands/simulate.ts"],"names":[],"mappings":"AAAA;;;GAGG;AA4CH,UAAU,eAAe;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC3B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,cAAc,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACnC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACrC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,gBAAgB,CAAC,EAAE,KAAK,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;IACrD,aAAa,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,QAAQ,CAAC;IAC3C,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,UAAU,iBAAiB;IACzB,GAAG,EAAE,OAAO,OAAO,CAAC,GAAG,CAAC;IACxB,IAAI,EAAE,OAAO,OAAO,CAAC,IAAI,CAAC;CAC3B;AAWD,wBAAsB,eAAe,CACnC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,eAAe,EACxB,WAAW,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,GACvC,OAAO,CAAC,IAAI,CAAC,CA+Lf"}