@grimoirelabs/cli 0.3.0 → 0.5.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.
@@ -6,13 +6,15 @@ import { compileFile, execute } from "@grimoirelabs/core";
6
6
  import { adapters } from "@grimoirelabs/venues";
7
7
  import chalk from "chalk";
8
8
  import ora from "ora";
9
+ import { hydrateParamsFromEnsProfile, resolveEnsProfile } from "../lib/ens-profile.js";
9
10
  import { resolveAdvisorSkillsDirs } from "./advisor-skill-helpers.js";
10
11
  import { resolveAdvisoryHandler } from "./advisory-handlers.js";
12
+ import { buildRuntimeProvenanceManifest, enforceFreshnessPolicy, resolveDataPolicy, resolveReplayParams, } from "./data-provenance.js";
13
+ import { buildRunReportEnvelope, formatRunReportText } from "./run-report.js";
11
14
  import { withStatePersistence } from "./state-helpers.js";
12
15
  export async function simulateCommand(spellPath, options) {
13
16
  const spinner = ora(`Simulating ${spellPath}...`).start();
14
17
  try {
15
- // Parse params
16
18
  let params = {};
17
19
  if (options.params) {
18
20
  try {
@@ -23,7 +25,12 @@ export async function simulateCommand(spellPath, options) {
23
25
  process.exit(1);
24
26
  }
25
27
  }
26
- // Compile spell
28
+ if (options.ensName) {
29
+ spinner.text = `Resolving ENS profile ${options.ensName}...`;
30
+ const profile = await resolveEnsProfile(options.ensName, { rpcUrl: options.ensRpcUrl });
31
+ params = hydrateParamsFromEnsProfile(params, profile);
32
+ console.log(chalk.dim(`ENS profile ${profile.name} -> ${profile.address ?? "unresolved"} (risk=${profile.riskProfile ?? "n/a"}, slippage=${profile.maxSlippageBps ?? "n/a"})`));
33
+ }
27
34
  spinner.text = "Compiling spell...";
28
35
  const compileResult = await compileFile(spellPath);
29
36
  if (!compileResult.success || !compileResult.ir) {
@@ -33,11 +40,37 @@ export async function simulateCommand(spellPath, options) {
33
40
  }
34
41
  process.exit(1);
35
42
  }
36
- // Execute in simulation mode
37
- spinner.text = "Executing simulation...";
43
+ spinner.text = "Preparing simulation...";
38
44
  const vault = (options.vault ?? "0x0000000000000000000000000000000000000000");
39
45
  const chain = Number.parseInt(options.chain ?? "1", 10);
40
46
  const spell = compileResult.ir;
47
+ const noState = resolveNoState(options);
48
+ const dataPolicy = resolveDataPolicy({
49
+ defaultReplay: "auto",
50
+ dataReplay: options.dataReplay,
51
+ dataMaxAge: options.dataMaxAge,
52
+ onStale: options.onStale,
53
+ });
54
+ const replayResolution = await resolveReplayParams({
55
+ spellId: spell.id,
56
+ params,
57
+ stateDir: options.stateDir,
58
+ noState,
59
+ policy: dataPolicy,
60
+ });
61
+ params = replayResolution.params;
62
+ const provenance = buildRuntimeProvenanceManifest({
63
+ runtimeMode: "simulate",
64
+ chainId: chain,
65
+ policy: dataPolicy,
66
+ replay: replayResolution,
67
+ params,
68
+ });
69
+ const freshnessWarnings = enforceFreshnessPolicy(provenance);
70
+ for (const warning of freshnessWarnings) {
71
+ console.log(chalk.yellow(`Warning: ${warning}`));
72
+ }
73
+ spinner.text = "Executing simulation...";
41
74
  const advisorSkillsDirs = resolveAdvisorSkillsDirs(options.advisorSkillsDir) ?? [];
42
75
  const onAdvisory = await resolveAdvisoryHandler(spell.id, {
43
76
  advisoryPi: options.advisoryPi,
@@ -48,11 +81,15 @@ export async function simulateCommand(spellPath, options) {
48
81
  advisoryTools: options.advisoryTools,
49
82
  advisorSkillsDirs,
50
83
  stateDir: options.stateDir,
51
- noState: options.noState,
84
+ noState,
52
85
  agentDir: options.piAgentDir,
53
86
  cwd: process.cwd(),
54
87
  });
55
- const result = await withStatePersistence(spell.id, { stateDir: options.stateDir, noState: options.noState }, async (persistentState) => {
88
+ const result = await withStatePersistence(spell.id, {
89
+ stateDir: options.stateDir,
90
+ noState,
91
+ buildRunProvenance: () => provenance,
92
+ }, async (persistentState) => {
56
93
  return execute({
57
94
  spell,
58
95
  vault,
@@ -65,53 +102,23 @@ export async function simulateCommand(spellPath, options) {
65
102
  onAdvisory,
66
103
  });
67
104
  });
68
- // Report result
69
105
  if (result.success) {
70
106
  spinner.succeed(chalk.green("Simulation completed successfully"));
71
107
  }
72
108
  else {
73
109
  spinner.fail(chalk.red(`Simulation failed: ${result.error}`));
74
110
  }
75
- // Show execution summary
76
- console.log();
77
- console.log(chalk.cyan("Execution Summary:"));
78
- console.log(chalk.dim(` Run ID: ${result.runId}`));
79
- console.log(chalk.dim(` Duration: ${result.duration}ms`));
80
- console.log(chalk.dim(` Steps executed: ${result.metrics.stepsExecuted}`));
81
- console.log(chalk.dim(` Actions executed: ${result.metrics.actionsExecuted}`));
82
- console.log(chalk.dim(` Errors: ${result.metrics.errors}`));
83
- // Show final state
84
- if (Object.keys(result.finalState).length > 0) {
85
- console.log();
86
- console.log(chalk.cyan("Final State:"));
87
- console.log(chalk.dim(JSON.stringify(result.finalState, null, 2)));
88
- }
89
- // Show events
111
+ const report = buildRunReportEnvelope({
112
+ spellName: spell.meta.name,
113
+ result,
114
+ provenance,
115
+ });
90
116
  console.log();
91
- console.log(chalk.cyan("Event Log:"));
92
- for (const entry of result.ledgerEvents.slice(-10)) {
93
- const time = new Date(entry.timestamp).toISOString().split("T")[1]?.replace("Z", "");
94
- const eventType = chalk.blue(entry.event.type.padEnd(20));
95
- let details = "";
96
- if (entry.event.type === "step_started") {
97
- details = chalk.dim(`step=${entry.event.stepId}`);
98
- }
99
- else if (entry.event.type === "step_completed") {
100
- details = chalk.dim(`step=${entry.event.stepId}`);
101
- }
102
- else if (entry.event.type === "step_failed") {
103
- details = chalk.red(`step=${entry.event.stepId} error=${entry.event.error}`);
104
- }
105
- else if (entry.event.type === "binding_set") {
106
- details = chalk.dim(`${entry.event.name}=${JSON.stringify(entry.event.value)}`);
107
- }
108
- else if (entry.event.type === "guard_failed") {
109
- details = chalk.yellow(`guard=${entry.event.guardId} msg=${entry.event.message}`);
110
- }
111
- console.log(` ${chalk.dim(time)} ${eventType} ${details}`);
117
+ if (options.json) {
118
+ console.log(JSON.stringify(report, null, 2));
112
119
  }
113
- if (result.ledgerEvents.length > 10) {
114
- console.log(chalk.dim(` ... and ${result.ledgerEvents.length - 10} more events`));
120
+ else {
121
+ console.log(formatRunReportText(report));
115
122
  }
116
123
  if (!result.success) {
117
124
  process.exit(1);
@@ -122,4 +129,11 @@ export async function simulateCommand(spellPath, options) {
122
129
  process.exit(1);
123
130
  }
124
131
  }
132
+ function resolveNoState(options) {
133
+ if (typeof options.noState === "boolean")
134
+ return options.noState;
135
+ if (options.state === false)
136
+ return true;
137
+ return false;
138
+ }
125
139
  //# sourceMappingURL=simulate.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"simulate.js","sourceRoot":"","sources":["../../src/commands/simulate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"simulate.js","sourceRoot":"","sources":["../../src/commands/simulate.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,11 @@
1
1
  /**
2
2
  * Shared state persistence helpers for CLI commands
3
3
  */
4
- import { type ExecutionResult } from "@grimoirelabs/core";
4
+ import { type ExecutionResult, type RunProvenance, type RunRecord } from "@grimoirelabs/core";
5
5
  interface StatePersistenceOptions {
6
6
  stateDir?: string;
7
7
  noState?: boolean;
8
+ buildRunProvenance?: (result: ExecutionResult) => RunProvenance | undefined;
8
9
  }
9
10
  /**
10
11
  * Wraps an execution function with state load/save lifecycle.
@@ -14,5 +15,6 @@ interface StatePersistenceOptions {
14
15
  * 3. Save updated state, run record, and ledger
15
16
  */
16
17
  export declare function withStatePersistence(spellId: string, options: StatePersistenceOptions, executeFn: (persistentState: Record<string, unknown>) => Promise<ExecutionResult>): Promise<ExecutionResult>;
18
+ export declare function loadRunRecords(spellId: string, options: Pick<StatePersistenceOptions, "stateDir">): Promise<RunRecord[]>;
17
19
  export {};
18
20
  //# sourceMappingURL=state-helpers.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"state-helpers.d.ts","sourceRoot":"","sources":["../../src/commands/state-helpers.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,KAAK,eAAe,EAAqC,MAAM,oBAAoB,CAAC;AAE7F,UAAU,uBAAuB;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;;;;;GAMG;AACH,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,uBAAuB,EAChC,SAAS,EAAE,CAAC,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,eAAe,CAAC,GAChF,OAAO,CAAC,eAAe,CAAC,CAyB1B"}
1
+ {"version":3,"file":"state-helpers.d.ts","sourceRoot":"","sources":["../../src/commands/state-helpers.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,KAAK,SAAS,EAGf,MAAM,oBAAoB,CAAC;AAE5B,UAAU,uBAAuB;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,kBAAkB,CAAC,EAAE,CAAC,MAAM,EAAE,eAAe,KAAK,aAAa,GAAG,SAAS,CAAC;CAC7E;AAED;;;;;;GAMG;AACH,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,uBAAuB,EAChC,SAAS,EAAE,CAAC,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,eAAe,CAAC,GAChF,OAAO,CAAC,eAAe,CAAC,CAyB1B;AAED,wBAAsB,cAAc,CAClC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,IAAI,CAAC,uBAAuB,EAAE,UAAU,CAAC,GACjD,OAAO,CAAC,SAAS,EAAE,CAAC,CAQtB"}
@@ -2,7 +2,7 @@
2
2
  * Shared state persistence helpers for CLI commands
3
3
  */
4
4
  import { join } from "node:path";
5
- import { SqliteStateStore, createRunRecord } from "@grimoirelabs/core";
5
+ import { SqliteStateStore, createRunRecord, } from "@grimoirelabs/core";
6
6
  /**
7
7
  * Wraps an execution function with state load/save lifecycle.
8
8
  *
@@ -23,7 +23,7 @@ export async function withStatePersistence(spellId, options, executeFn) {
23
23
  const result = await executeFn(persistentState);
24
24
  // Persist results
25
25
  await store.save(spellId, result.finalState);
26
- await store.addRun(spellId, createRunRecord(result));
26
+ await store.addRun(spellId, createRunRecord(result, options.buildRunProvenance?.(result)));
27
27
  await store.saveLedger(spellId, result.runId, result.ledgerEvents);
28
28
  return result;
29
29
  }
@@ -31,4 +31,14 @@ export async function withStatePersistence(spellId, options, executeFn) {
31
31
  store.close();
32
32
  }
33
33
  }
34
+ export async function loadRunRecords(spellId, options) {
35
+ const dbPath = options.stateDir ? join(options.stateDir, "grimoire.db") : undefined;
36
+ const store = new SqliteStateStore({ dbPath });
37
+ try {
38
+ return await store.getRuns(spellId);
39
+ }
40
+ finally {
41
+ store.close();
42
+ }
43
+ }
34
44
  //# sourceMappingURL=state-helpers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"state-helpers.js","sourceRoot":"","sources":["../../src/commands/state-helpers.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAwB,gBAAgB,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAO7F;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,OAAe,EACf,OAAgC,EAChC,SAAiF;IAEjF,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QACpB,OAAO,SAAS,CAAC,EAAE,CAAC,CAAC;IACvB,CAAC;IAED,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAEpF,MAAM,KAAK,GAAG,IAAI,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;IAE/C,IAAI,CAAC;QACH,sBAAsB;QACtB,MAAM,eAAe,GAAG,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;QAE1D,UAAU;QACV,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,eAAe,CAAC,CAAC;QAEhD,kBAAkB;QAClB,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;QAC7C,MAAM,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC;QACrD,MAAM,KAAK,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC;QAEnE,OAAO,MAAM,CAAC;IAChB,CAAC;YAAS,CAAC;QACT,KAAK,CAAC,KAAK,EAAE,CAAC;IAChB,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"state-helpers.js","sourceRoot":"","sources":["../../src/commands/state-helpers.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAIL,gBAAgB,EAChB,eAAe,GAChB,MAAM,oBAAoB,CAAC;AAQ5B;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,OAAe,EACf,OAAgC,EAChC,SAAiF;IAEjF,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QACpB,OAAO,SAAS,CAAC,EAAE,CAAC,CAAC;IACvB,CAAC;IAED,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAEpF,MAAM,KAAK,GAAG,IAAI,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;IAE/C,IAAI,CAAC;QACH,sBAAsB;QACtB,MAAM,eAAe,GAAG,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;QAE1D,UAAU;QACV,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,eAAe,CAAC,CAAC;QAEhD,kBAAkB;QAClB,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;QAC7C,MAAM,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,eAAe,CAAC,MAAM,EAAE,OAAO,CAAC,kBAAkB,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAC3F,MAAM,KAAK,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC;QAEnE,OAAO,MAAM,CAAC;IAChB,CAAC;YAAS,CAAC;QACT,KAAK,CAAC,KAAK,EAAE,CAAC;IAChB,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,OAAe,EACf,OAAkD;IAElD,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACpF,MAAM,KAAK,GAAG,IAAI,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;IAC/C,IAAI,CAAC;QACH,OAAO,MAAM,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACtC,CAAC;YAAS,CAAC;QACT,KAAK,CAAC,KAAK,EAAE,CAAC;IAChB,CAAC;AACH,CAAC"}
package/dist/index.js CHANGED
@@ -55,6 +55,7 @@ program
55
55
  .option("-p, --params <json>", "Parameters as JSON")
56
56
  .option("--vault <address>", "Vault address")
57
57
  .option("--chain <id>", "Chain ID", "1")
58
+ .option("--json", "Output results as JSON")
58
59
  .option("--advisor-skills-dir <dir...>", "Directory to load advisor skills (default: ./skills)")
59
60
  .option("--advisory-pi", "Force advisory steps via Pi SDK (auto when configured)")
60
61
  .option("--advisory-replay <runId>", "Replay advisory outputs from a previous run")
@@ -63,6 +64,11 @@ program
63
64
  .option("--advisory-thinking <level>", "Pi thinking level (off|low|medium|high)")
64
65
  .option("--advisory-tools <mode>", "Advisory tools: none|read|coding (default: read)")
65
66
  .option("--pi-agent-dir <dir>", "Pi agent directory (defaults to ~/.pi/agent)")
67
+ .option("--data-replay <mode>", "Replay external data by runId/snapshotId (or off|auto, default: auto)")
68
+ .option("--data-max-age <sec>", "Maximum external data age in seconds (default: 3600)")
69
+ .option("--on-stale <policy>", "Stale data policy: fail|warn (default: fail)")
70
+ .option("--ens-name <name>", "ENS name to hydrate strategy params from text records")
71
+ .option("--ens-rpc-url <url>", "RPC URL for ENS lookups (defaults to ENS_RPC_URL or RPC_URL)")
66
72
  .option("--state-dir <dir>", "Directory for state database")
67
73
  .option("--no-state", "Disable state persistence")
68
74
  .action(simulateCommand);
@@ -91,6 +97,11 @@ program
91
97
  .option("--advisory-thinking <level>", "Pi thinking level (off|low|medium|high)")
92
98
  .option("--advisory-tools <mode>", "Advisory tools: none|read|coding (default: read)")
93
99
  .option("--pi-agent-dir <dir>", "Pi agent directory (defaults to ~/.pi/agent)")
100
+ .option("--data-replay <mode>", "Replay external data by runId/snapshotId (or off|auto; default: auto for dry-run/simulate, off for live cast)")
101
+ .option("--data-max-age <sec>", "Maximum external data age in seconds (default: 3600)")
102
+ .option("--on-stale <policy>", "Stale data policy: fail|warn (default: fail)")
103
+ .option("--ens-name <name>", "ENS name to hydrate strategy params from text records")
104
+ .option("--ens-rpc-url <url>", "RPC URL for ENS lookups (defaults to ENS_RPC_URL or RPC_URL)")
94
105
  .option("--state-dir <dir>", "Directory for state database")
95
106
  .option("--no-state", "Disable state persistence")
96
107
  .action(castCommand);
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import { type Address } from "viem";
2
+ export declare const ENS_PROFILE_KEYS: readonly ["io.grimoire.risk_profile", "io.grimoire.max_slippage_bps", "io.grimoire.preferred_settlement_chain"];
3
+ export interface EnsProfile {
4
+ name: string;
5
+ address?: Address;
6
+ text: Partial<Record<(typeof ENS_PROFILE_KEYS)[number], string>>;
7
+ riskProfile?: string;
8
+ maxSlippageBps?: number;
9
+ preferredSettlementChain?: number;
10
+ }
11
+ export interface EnsProfileOptions {
12
+ rpcUrl?: string;
13
+ }
14
+ export declare function resolveEnsProfile(ensName: string, options?: EnsProfileOptions): Promise<EnsProfile>;
15
+ export declare function hydrateParamsFromEnsProfile(params: Record<string, unknown>, profile: EnsProfile): Record<string, unknown>;
16
+ //# sourceMappingURL=ens-profile.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ens-profile.d.ts","sourceRoot":"","sources":["../../src/lib/ens-profile.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,KAAK,OAAO,EAAsB,MAAM,MAAM,CAAC;AAE9D,eAAO,MAAM,gBAAgB,iHAInB,CAAC;AAEX,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,gBAAgB,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;IACjE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,wBAAwB,CAAC,EAAE,MAAM,CAAC;CACnC;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAKD,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,UAAU,CAAC,CAiCrB;AAED,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,OAAO,EAAE,UAAU,GAClB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CA2BzB"}
@@ -0,0 +1,76 @@
1
+ import { http, createPublicClient } from "viem";
2
+ export const ENS_PROFILE_KEYS = [
3
+ "io.grimoire.risk_profile",
4
+ "io.grimoire.max_slippage_bps",
5
+ "io.grimoire.preferred_settlement_chain",
6
+ ];
7
+ const ENS_MIN_SLIPPAGE_BPS = 0;
8
+ const ENS_MAX_SLIPPAGE_BPS = 500;
9
+ export async function resolveEnsProfile(ensName, options = {}) {
10
+ const rpcUrl = resolveEnsRpcUrl(options.rpcUrl);
11
+ const normalizedName = normalizeEnsName(ensName);
12
+ const client = createPublicClient({ transport: http(rpcUrl) });
13
+ const address = await client.getEnsAddress({ name: normalizedName });
14
+ const textEntries = await Promise.all(ENS_PROFILE_KEYS.map(async (key) => {
15
+ const value = await client.getEnsText({ name: normalizedName, key });
16
+ return [key, value ?? undefined];
17
+ }));
18
+ const text = {};
19
+ for (const [key, value] of textEntries) {
20
+ if (typeof value === "string" && value.length > 0) {
21
+ text[key] = value;
22
+ }
23
+ }
24
+ const riskProfile = text["io.grimoire.risk_profile"];
25
+ const maxSlippageBps = parseMaybeNumber(text["io.grimoire.max_slippage_bps"]);
26
+ const preferredSettlementChain = parseMaybeNumber(text["io.grimoire.preferred_settlement_chain"]);
27
+ return {
28
+ name: normalizedName,
29
+ address: address ?? undefined,
30
+ text,
31
+ riskProfile,
32
+ maxSlippageBps,
33
+ preferredSettlementChain,
34
+ };
35
+ }
36
+ export function hydrateParamsFromEnsProfile(params, profile) {
37
+ const merged = { ...params };
38
+ if (profile.address && merged.payout_address === undefined) {
39
+ merged.payout_address = profile.address;
40
+ }
41
+ if (profile.riskProfile && merged.risk_profile === undefined) {
42
+ merged.risk_profile = profile.riskProfile;
43
+ }
44
+ if (profile.maxSlippageBps !== undefined && merged.max_slippage_bps === undefined) {
45
+ merged.max_slippage_bps = clamp(profile.maxSlippageBps, ENS_MIN_SLIPPAGE_BPS, ENS_MAX_SLIPPAGE_BPS);
46
+ }
47
+ if (profile.preferredSettlementChain !== undefined &&
48
+ merged.preferred_settlement_chain === undefined) {
49
+ merged.preferred_settlement_chain = profile.preferredSettlementChain;
50
+ }
51
+ return merged;
52
+ }
53
+ function normalizeEnsName(name) {
54
+ const normalized = name.trim().toLowerCase();
55
+ if (!normalized) {
56
+ throw new Error("ENS name is required");
57
+ }
58
+ return normalized;
59
+ }
60
+ function resolveEnsRpcUrl(explicit) {
61
+ const rpcUrl = explicit ?? process.env.ENS_RPC_URL ?? process.env.RPC_URL;
62
+ if (!rpcUrl) {
63
+ throw new Error("ENS resolution requires --ens-rpc-url, ENS_RPC_URL, or RPC_URL");
64
+ }
65
+ return rpcUrl;
66
+ }
67
+ function parseMaybeNumber(input) {
68
+ if (!input)
69
+ return undefined;
70
+ const parsed = Number.parseInt(input, 10);
71
+ return Number.isFinite(parsed) ? parsed : undefined;
72
+ }
73
+ function clamp(value, min, max) {
74
+ return Math.min(Math.max(value, min), max);
75
+ }
76
+ //# sourceMappingURL=ens-profile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ens-profile.js","sourceRoot":"","sources":["../../src/lib/ens-profile.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@grimoirelabs/cli",
3
- "version": "0.3.0",
3
+ "version": "0.5.0",
4
4
  "description": "CLI for Grimoire spell execution",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -19,12 +19,13 @@
19
19
  "test": "bun test"
20
20
  },
21
21
  "dependencies": {
22
- "@grimoirelabs/core": "0.2.0",
23
- "@grimoirelabs/venues": "0.2.1",
22
+ "@grimoirelabs/core": "0.4.0",
23
+ "@grimoirelabs/venues": "0.3.0",
24
24
  "@mariozechner/pi-coding-agent": "0.51.2",
25
25
  "chalk": "^5.3.0",
26
26
  "commander": "^12.1.0",
27
- "ora": "^8.1.0"
27
+ "ora": "^8.1.0",
28
+ "viem": "^2.21.55"
28
29
  },
29
30
  "devDependencies": {
30
31
  "typescript": "^5.6.3"