@grimoirelabs/cli 0.2.0 → 0.4.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.
@@ -12,12 +12,14 @@ import { adapters, createHyperliquidAdapter } from "@grimoirelabs/venues";
12
12
  import chalk from "chalk";
13
13
  import ora from "ora";
14
14
  import { resolveAdvisorSkillsDirs } from "./advisor-skill-helpers.js";
15
+ import { resolveAdvisoryHandler } from "./advisory-handlers.js";
16
+ import { buildRuntimeProvenanceManifest, enforceFreshnessPolicy, resolveDataPolicy, resolveReplayParams, } from "./data-provenance.js";
17
+ import { buildRunReportEnvelope, formatRunReportText } from "./run-report.js";
15
18
  import { withStatePersistence } from "./state-helpers.js";
16
19
  const DEFAULT_KEYSTORE_PATH = join(homedir(), ".grimoire", "keystore.json");
17
20
  export async function castCommand(spellPath, options) {
18
21
  const spinner = ora(`Loading ${spellPath}...`).start();
19
22
  try {
20
- // Parse params
21
23
  let params = {};
22
24
  if (options.params) {
23
25
  try {
@@ -28,7 +30,6 @@ export async function castCommand(spellPath, options) {
28
30
  process.exit(1);
29
31
  }
30
32
  }
31
- // Compile spell
32
33
  spinner.text = "Compiling spell...";
33
34
  const compileResult = await compileFile(spellPath);
34
35
  if (!compileResult.success || !compileResult.ir) {
@@ -40,23 +41,36 @@ export async function castCommand(spellPath, options) {
40
41
  }
41
42
  const spell = compileResult.ir;
42
43
  spinner.succeed(chalk.green("Spell compiled successfully"));
43
- // Determine execution mode
44
+ const noState = resolveNoState(options);
44
45
  const hasExplicitKey = !!(options.privateKey || options.mnemonic || options.keystore);
45
46
  const hasEnvKey = !!(options.keyEnv && process.env[options.keyEnv]);
46
47
  const hasDefaultKeystore = !hasExplicitKey && !hasEnvKey && existsSync(DEFAULT_KEYSTORE_PATH);
47
48
  const hasKey = hasExplicitKey || hasEnvKey || hasDefaultKeystore;
48
49
  const mode = options.dryRun ? "dry-run" : hasKey ? "execute" : "simulate";
50
+ const defaultReplay = mode === "execute" ? "off" : "auto";
51
+ const dataPolicy = resolveDataPolicy({
52
+ defaultReplay,
53
+ dataReplay: options.dataReplay,
54
+ dataMaxAge: options.dataMaxAge,
55
+ onStale: options.onStale,
56
+ });
57
+ const replayResolution = await resolveReplayParams({
58
+ spellId: spell.id,
59
+ params,
60
+ stateDir: options.stateDir,
61
+ noState,
62
+ policy: dataPolicy,
63
+ });
64
+ params = replayResolution.params;
49
65
  if (options.privateKey || options.mnemonic) {
50
66
  console.log(chalk.yellow("⚠️ Avoid passing secrets via CLI arguments. Use --key-env or env vars instead."));
51
67
  }
52
- // Show spell info
53
68
  console.log();
54
69
  console.log(chalk.cyan("📜 Spell Info:"));
55
70
  console.log(` ${chalk.dim("Name:")} ${spell.meta.name}`);
56
71
  console.log(` ${chalk.dim("Version:")} ${spell.version}`);
57
72
  console.log(` ${chalk.dim("Steps:")} ${spell.steps.length}`);
58
73
  console.log(` ${chalk.dim("Mode:")} ${mode}`);
59
- // Show params being used
60
74
  if (spell.params.length > 0) {
61
75
  console.log();
62
76
  console.log(chalk.cyan("📊 Parameters:"));
@@ -72,13 +86,12 @@ export async function castCommand(spellPath, options) {
72
86
  console.log(chalk.cyan("🔗 Network:"));
73
87
  console.log(` ${chalk.dim("Chain:")} ${chainName} (${chainId})`);
74
88
  console.log(` ${chalk.dim("Testnet:")} ${isTest ? "Yes" : "No"}`);
75
- // If we have a key, set up wallet execution
76
89
  if (hasKey && mode !== "simulate") {
77
- await executeWithWallet(spell, params, options, chainId, isTest);
90
+ await executeWithWallet(spell, params, options, noState, chainId, isTest, dataPolicy, replayResolution);
78
91
  }
79
92
  else {
80
- // Simulation mode (existing behavior)
81
- await executeSimulation(spell, params, options, chainId);
93
+ const runtimeFlow = mode === "dry-run" ? "cast_dry_run" : "simulate";
94
+ await executeSimulation(spell, params, options, noState, chainId, runtimeFlow, dataPolicy, replayResolution);
82
95
  }
83
96
  }
84
97
  catch (error) {
@@ -89,12 +102,8 @@ export async function castCommand(spellPath, options) {
89
102
  process.exit(1);
90
103
  }
91
104
  }
92
- /**
93
- * Execute spell with wallet (live execution)
94
- */
95
- async function executeWithWallet(spell, params, options, chainId, isTest) {
105
+ async function executeWithWallet(spell, params, options, noState, chainId, isTest, dataPolicy, replayResolution) {
96
106
  const spinner = ora("Setting up wallet...").start();
97
- // Load wallet
98
107
  let keyConfig;
99
108
  if (options.privateKey) {
100
109
  keyConfig = { type: "raw", source: options.privateKey };
@@ -106,7 +115,6 @@ async function executeWithWallet(spell, params, options, chainId, isTest) {
106
115
  keyConfig = { type: "mnemonic", source: options.mnemonic };
107
116
  }
108
117
  else {
109
- // Resolve keystore: explicit --keystore or default path
110
118
  const keystorePath = options.keystore ?? DEFAULT_KEYSTORE_PATH;
111
119
  if (!existsSync(keystorePath)) {
112
120
  spinner.fail(chalk.red(`No key provided and no keystore found at ${keystorePath}`));
@@ -121,50 +129,71 @@ async function executeWithWallet(spell, params, options, chainId, isTest) {
121
129
  const keystoreJson = readFileSync(keystorePath, "utf-8");
122
130
  keyConfig = { type: "keystore", source: keystoreJson, password };
123
131
  }
124
- // Wire Hyperliquid adapter with extracted private key
125
132
  let configuredAdapters = adapters;
126
133
  try {
127
134
  const rawKey = loadPrivateKey(keyConfig);
128
- configuredAdapters = adapters.map((a) => {
129
- if (a.meta.name === "hyperliquid") {
135
+ configuredAdapters = adapters.map((adapter) => {
136
+ if (adapter.meta.name === "hyperliquid") {
130
137
  return createHyperliquidAdapter({
131
138
  privateKey: rawKey,
132
139
  assetMap: { ETH: 4 },
133
140
  });
134
141
  }
135
- return a;
142
+ return adapter;
136
143
  });
137
144
  }
138
145
  catch {
139
- // If key extraction fails (e.g. mnemonic), keep default adapters
146
+ // Keep default adapters if key extraction fails.
140
147
  }
141
- // Get RPC URL
142
148
  const rpcUrl = options.rpcUrl ?? process.env.RPC_URL;
143
149
  if (!rpcUrl) {
144
150
  spinner.warn(chalk.yellow("No RPC URL provided, using default public RPC"));
145
151
  }
146
- // Create provider and wallet
147
152
  const provider = createProvider(chainId, rpcUrl);
148
153
  const wallet = createWalletFromConfig(keyConfig, chainId, provider.rpcUrl);
149
154
  spinner.succeed(chalk.green(`Wallet loaded: ${wallet.address}`));
150
- // Check wallet balance
151
155
  const balance = await provider.getBalance(wallet.address);
152
156
  console.log(` ${chalk.dim("Balance:")} ${formatWei(balance)} ${getNativeCurrencySymbol(chainId)}`);
153
157
  if (balance === 0n) {
154
158
  console.log(chalk.yellow(` ⚠️ Wallet has no ${getNativeCurrencySymbol(chainId)} for gas`));
155
159
  }
156
- // Vault address (use wallet address if not provided)
157
160
  const vault = (options.vault ?? wallet.address);
158
161
  console.log(` ${chalk.dim("Vault:")} ${vault}`);
159
- // Mainnet warning
160
162
  if (!isTest) {
161
163
  console.log();
162
164
  console.log(chalk.red("⚠️ WARNING: This is MAINNET"));
163
165
  console.log(chalk.red(" Real funds will be used!"));
164
166
  }
165
167
  const executionMode = options.dryRun ? "dry-run" : "execute";
168
+ const runtimeMode = executionMode === "dry-run" ? "cast_dry_run" : "cast_execute";
166
169
  const gasMultiplier = options.gasMultiplier ? Number.parseFloat(options.gasMultiplier) : 1.1;
167
- const advisorSkillsDirs = resolveAdvisorSkillsDirs(options.advisorSkillsDir);
170
+ const advisorSkillsDirs = resolveAdvisorSkillsDirs(options.advisorSkillsDir) ?? [];
171
+ const onAdvisory = await resolveAdvisoryHandler(spell.id, {
172
+ advisoryPi: options.advisoryPi,
173
+ advisoryReplay: options.advisoryReplay,
174
+ advisoryProvider: options.advisoryProvider,
175
+ advisoryModel: options.advisoryModel,
176
+ advisoryThinking: options.advisoryThinking,
177
+ advisoryTools: options.advisoryTools,
178
+ advisorSkillsDirs,
179
+ stateDir: options.stateDir,
180
+ noState,
181
+ agentDir: options.piAgentDir,
182
+ cwd: process.cwd(),
183
+ });
184
+ const provenance = buildRuntimeProvenanceManifest({
185
+ runtimeMode,
186
+ chainId,
187
+ policy: dataPolicy,
188
+ replay: replayResolution,
189
+ params,
190
+ blockNumber: await safeGetBlockNumber(provider),
191
+ rpcUrl: provider.rpcUrl,
192
+ });
193
+ const freshnessWarnings = enforceFreshnessPolicy(provenance);
194
+ for (const warning of freshnessWarnings) {
195
+ console.log(chalk.yellow(`Warning: ${warning}`));
196
+ }
168
197
  const confirmCallback = options.skipConfirm || isTest
169
198
  ? async () => true
170
199
  : async (message) => {
@@ -173,7 +202,11 @@ async function executeWithWallet(spell, params, options, chainId, isTest) {
173
202
  };
174
203
  console.log();
175
204
  console.log(chalk.cyan(`🚀 Executing spell (${executionMode})...`));
176
- const execResult = await withStatePersistence(spell.id, { stateDir: options.stateDir, noState: options.noState }, async (persistentState) => {
205
+ const execResult = await withStatePersistence(spell.id, {
206
+ stateDir: options.stateDir,
207
+ noState,
208
+ buildRunProvenance: () => provenance,
209
+ }, async (persistentState) => {
177
210
  return execute({
178
211
  spell,
179
212
  vault,
@@ -191,7 +224,8 @@ async function executeWithWallet(spell, params, options, chainId, isTest) {
191
224
  },
192
225
  skipTestnetConfirmation: options.skipConfirm ?? false,
193
226
  adapters: configuredAdapters,
194
- advisorSkillsDirs,
227
+ advisorSkillsDirs: advisorSkillsDirs.length > 0 ? advisorSkillsDirs : undefined,
228
+ onAdvisory,
195
229
  });
196
230
  });
197
231
  if (execResult.success) {
@@ -200,32 +234,55 @@ async function executeWithWallet(spell, params, options, chainId, isTest) {
200
234
  else {
201
235
  console.log(chalk.red(`Execution failed: ${execResult.error}`));
202
236
  }
203
- // Show execution summary
237
+ const report = buildRunReportEnvelope({
238
+ spellName: spell.meta.name,
239
+ result: execResult,
240
+ provenance,
241
+ });
204
242
  console.log();
205
- console.log(chalk.cyan("📊 Execution Summary:"));
206
- console.log(` ${chalk.dim("Run ID:")} ${execResult.runId}`);
207
- console.log(` ${chalk.dim("Duration:")} ${execResult.duration}ms`);
208
- console.log(` ${chalk.dim("Steps executed:")} ${execResult.metrics.stepsExecuted}`);
209
- console.log(` ${chalk.dim("Actions executed:")} ${execResult.metrics.actionsExecuted}`);
210
- if (execResult.metrics.gasUsed > 0n) {
211
- console.log(` ${chalk.dim("Gas used:")} ${execResult.metrics.gasUsed.toString()}`);
243
+ if (options.json) {
244
+ console.log(JSON.stringify(report, null, 2));
212
245
  }
213
- if (execResult.metrics.errors > 0) {
214
- console.log(` ${chalk.red("Errors:")} ${execResult.metrics.errors}`);
246
+ else {
247
+ console.log(formatRunReportText(report));
215
248
  }
216
- showFinalState(execResult.finalState);
217
249
  if (!execResult.success) {
218
250
  process.exit(1);
219
251
  }
220
252
  }
221
- /**
222
- * Execute spell in simulation mode (no wallet)
223
- */
224
- async function executeSimulation(spell, params, options, chainId) {
253
+ async function executeSimulation(spell, params, options, noState, chainId, runtimeMode, dataPolicy, replayResolution) {
225
254
  const spinner = ora("Running simulation...").start();
255
+ const provenance = buildRuntimeProvenanceManifest({
256
+ runtimeMode,
257
+ chainId,
258
+ policy: dataPolicy,
259
+ replay: replayResolution,
260
+ params,
261
+ });
262
+ const freshnessWarnings = enforceFreshnessPolicy(provenance);
263
+ for (const warning of freshnessWarnings) {
264
+ console.log(chalk.yellow(`Warning: ${warning}`));
265
+ }
226
266
  const vault = (options.vault ?? "0x0000000000000000000000000000000000000000");
227
- const advisorSkillsDirs = resolveAdvisorSkillsDirs(options.advisorSkillsDir);
228
- const result = await withStatePersistence(spell.id, { stateDir: options.stateDir, noState: options.noState }, async (persistentState) => {
267
+ const advisorSkillsDirs = resolveAdvisorSkillsDirs(options.advisorSkillsDir) ?? [];
268
+ const onAdvisory = await resolveAdvisoryHandler(spell.id, {
269
+ advisoryPi: options.advisoryPi,
270
+ advisoryReplay: options.advisoryReplay,
271
+ advisoryProvider: options.advisoryProvider,
272
+ advisoryModel: options.advisoryModel,
273
+ advisoryThinking: options.advisoryThinking,
274
+ advisoryTools: options.advisoryTools,
275
+ advisorSkillsDirs,
276
+ stateDir: options.stateDir,
277
+ noState,
278
+ agentDir: options.piAgentDir,
279
+ cwd: process.cwd(),
280
+ });
281
+ const result = await withStatePersistence(spell.id, {
282
+ stateDir: options.stateDir,
283
+ noState,
284
+ buildRunProvenance: () => provenance,
285
+ }, async (persistentState) => {
229
286
  return execute({
230
287
  spell,
231
288
  vault,
@@ -234,7 +291,8 @@ async function executeSimulation(spell, params, options, chainId) {
234
291
  persistentState,
235
292
  simulate: true,
236
293
  adapters,
237
- advisorSkillsDirs,
294
+ advisorSkillsDirs: advisorSkillsDirs.length > 0 ? advisorSkillsDirs : undefined,
295
+ onAdvisory,
238
296
  });
239
297
  });
240
298
  if (result.success) {
@@ -243,39 +301,30 @@ async function executeSimulation(spell, params, options, chainId) {
243
301
  else {
244
302
  spinner.fail(chalk.red(`Simulation failed: ${result.error}`));
245
303
  }
246
- // Show execution summary
304
+ const report = buildRunReportEnvelope({
305
+ spellName: spell.meta.name,
306
+ result,
307
+ provenance,
308
+ });
247
309
  console.log();
248
- console.log(chalk.cyan("📊 Execution Summary:"));
249
- console.log(` ${chalk.dim("Run ID:")} ${result.runId}`);
250
- console.log(` ${chalk.dim("Duration:")} ${result.duration}ms`);
251
- console.log(` ${chalk.dim("Steps executed:")} ${result.metrics.stepsExecuted}`);
252
- console.log(` ${chalk.dim("Actions executed:")} ${result.metrics.actionsExecuted}`);
253
- if (result.metrics.gasUsed > 0n) {
254
- console.log(` ${chalk.dim("Gas used:")} ${result.metrics.gasUsed.toString()}`);
310
+ if (options.json) {
311
+ console.log(JSON.stringify(report, null, 2));
255
312
  }
256
- if (result.metrics.errors > 0) {
257
- console.log(` ${chalk.red("Errors:")} ${result.metrics.errors}`);
313
+ else {
314
+ console.log(formatRunReportText(report));
258
315
  }
259
- showFinalState(result.finalState);
260
316
  if (!result.success) {
261
317
  process.exit(1);
262
318
  }
263
319
  }
264
- /**
265
- * Show final state if any
266
- */
267
- function showFinalState(finalState) {
268
- if (Object.keys(finalState).length > 0) {
269
- console.log();
270
- console.log(chalk.cyan("📦 Final State:"));
271
- for (const [key, value] of Object.entries(finalState)) {
272
- console.log(` ${chalk.dim(key)}: ${JSON.stringify(value)}`);
273
- }
320
+ async function safeGetBlockNumber(provider) {
321
+ try {
322
+ return await provider.getBlockNumber();
323
+ }
324
+ catch {
325
+ return undefined;
274
326
  }
275
327
  }
276
- /**
277
- * Resolve keystore password from env, interactive prompt, or error
278
- */
279
328
  async function resolveKeystorePassword(options, spinner) {
280
329
  const envName = options.passwordEnv ?? "KEYSTORE_PASSWORD";
281
330
  const envValue = process.env[envName];
@@ -292,9 +341,6 @@ async function resolveKeystorePassword(options, spinner) {
292
341
  process.exit(1);
293
342
  return null;
294
343
  }
295
- /**
296
- * Prompt for a password interactively (hides input)
297
- */
298
344
  async function promptPassword(message) {
299
345
  return new Promise((resolve) => {
300
346
  process.stdout.write(message);
@@ -315,9 +361,6 @@ async function promptPassword(message) {
315
361
  });
316
362
  });
317
363
  }
318
- /**
319
- * Prompt for confirmation
320
- */
321
364
  async function confirmPrompt(message) {
322
365
  const rl = readline.createInterface({
323
366
  input: process.stdin,
@@ -331,4 +374,11 @@ async function confirmPrompt(message) {
331
374
  });
332
375
  });
333
376
  }
377
+ function resolveNoState(options) {
378
+ if (typeof options.noState === "boolean")
379
+ return options.noState;
380
+ if (options.state === false)
381
+ return true;
382
+ return false;
383
+ }
334
384
  //# sourceMappingURL=cast.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"cast.js","sourceRoot":"","sources":["../../src/commands/cast.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cast.js","sourceRoot":"","sources":["../../src/commands/cast.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,85 @@
1
+ export type OnStalePolicy = "fail" | "warn";
2
+ export type RuntimeFlow = "simulate" | "cast_dry_run" | "cast_execute";
3
+ type ReplayMode = "off" | "auto" | "explicit";
4
+ interface DataPolicyInput {
5
+ defaultReplay: "off" | "auto";
6
+ dataReplay?: string;
7
+ dataMaxAge?: string;
8
+ onStale?: string;
9
+ }
10
+ export interface RuntimeDataPolicy {
11
+ replayMode: ReplayMode;
12
+ replayKey?: string;
13
+ dataMaxAgeSec: number;
14
+ onStale: OnStalePolicy;
15
+ }
16
+ export interface ReplayResolution {
17
+ params: Record<string, unknown>;
18
+ replayUsed: boolean;
19
+ replayMatchType?: "run_id" | "snapshot_id";
20
+ replaySourceRunId?: string;
21
+ replaySourceSnapshotId?: string;
22
+ }
23
+ export interface RuntimeDataSource {
24
+ path: string;
25
+ snapshot_id?: string;
26
+ snapshot_at: string;
27
+ snapshot_age_sec: number;
28
+ snapshot_source?: string;
29
+ venue?: string;
30
+ dataset?: string;
31
+ chain_id?: number;
32
+ asset?: string;
33
+ filters?: Record<string, unknown>;
34
+ units?: Record<string, string>;
35
+ source_hash?: string;
36
+ status?: string;
37
+ record_count?: number;
38
+ warnings: string[];
39
+ stale: boolean;
40
+ }
41
+ export interface RuntimeProvenanceManifest {
42
+ schema_version: "grimoire.runtime.provenance.v1";
43
+ generated_at: string;
44
+ runtime_mode: RuntimeFlow;
45
+ chain_id: number;
46
+ block_number?: string;
47
+ rpc_url?: string;
48
+ data_replay: ReplayMode;
49
+ data_replay_key?: string;
50
+ data_replay_resolved_run_id?: string;
51
+ data_replay_resolved_snapshot_id?: string;
52
+ data_max_age_sec: number;
53
+ on_stale: OnStalePolicy;
54
+ input_params_hash: string;
55
+ snapshot_hash?: string;
56
+ unit_map: Record<string, string>;
57
+ source_count: number;
58
+ stale_source_count: number;
59
+ selection_policy: string;
60
+ fallback_used: "none";
61
+ rejected_count: number;
62
+ sources: RuntimeDataSource[];
63
+ resolved_params: Record<string, unknown>;
64
+ }
65
+ export declare function resolveDataPolicy(input: DataPolicyInput): RuntimeDataPolicy;
66
+ export declare function resolveReplayParams(options: {
67
+ spellId: string;
68
+ params: Record<string, unknown>;
69
+ stateDir?: string;
70
+ noState?: boolean;
71
+ policy: RuntimeDataPolicy;
72
+ }): Promise<ReplayResolution>;
73
+ export declare function buildRuntimeProvenanceManifest(input: {
74
+ runtimeMode: RuntimeFlow;
75
+ chainId: number;
76
+ policy: RuntimeDataPolicy;
77
+ replay: ReplayResolution;
78
+ params: Record<string, unknown>;
79
+ blockNumber?: bigint;
80
+ rpcUrl?: string;
81
+ now?: Date;
82
+ }): RuntimeProvenanceManifest;
83
+ export declare function enforceFreshnessPolicy(manifest: RuntimeProvenanceManifest): string[];
84
+ export {};
85
+ //# sourceMappingURL=data-provenance.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-provenance.d.ts","sourceRoot":"","sources":["../../src/commands/data-provenance.ts"],"names":[],"mappings":"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"}