@grimoirelabs/cli 0.14.2 → 0.15.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.
Files changed (111) hide show
  1. package/dist/commands/advisory-handlers.d.ts.map +1 -1
  2. package/dist/commands/advisory-handlers.js +1 -180
  3. package/dist/commands/advisory-handlers.js.map +1 -1
  4. package/dist/commands/advisory-live-trace.d.ts.map +1 -1
  5. package/dist/commands/advisory-live-trace.js +1 -1
  6. package/dist/commands/advisory-live-trace.js.map +1 -1
  7. package/dist/commands/advisory-verbose-trace.d.ts +15 -0
  8. package/dist/commands/advisory-verbose-trace.d.ts.map +1 -0
  9. package/dist/commands/advisory-verbose-trace.js +185 -0
  10. package/dist/commands/advisory-verbose-trace.js.map +1 -0
  11. package/dist/commands/cast-cross-chain.d.ts +69 -0
  12. package/dist/commands/cast-cross-chain.d.ts.map +1 -0
  13. package/dist/commands/cast-cross-chain.js +456 -0
  14. package/dist/commands/cast-cross-chain.js.map +1 -0
  15. package/dist/commands/cast.d.ts +1 -1
  16. package/dist/commands/cast.d.ts.map +1 -1
  17. package/dist/commands/cast.js +84 -709
  18. package/dist/commands/cast.js.map +1 -1
  19. package/dist/commands/compile-all.d.ts +15 -2
  20. package/dist/commands/compile-all.d.ts.map +1 -1
  21. package/dist/commands/compile-all.js +16 -21
  22. package/dist/commands/compile-all.js.map +1 -1
  23. package/dist/commands/compile.d.ts +1 -1
  24. package/dist/commands/compile.d.ts.map +1 -1
  25. package/dist/commands/compile.js +22 -26
  26. package/dist/commands/compile.js.map +1 -1
  27. package/dist/commands/cross-chain-helpers.d.ts +0 -1
  28. package/dist/commands/cross-chain-helpers.d.ts.map +1 -1
  29. package/dist/commands/cross-chain-helpers.js +0 -3
  30. package/dist/commands/cross-chain-helpers.js.map +1 -1
  31. package/dist/commands/history.d.ts +1 -2
  32. package/dist/commands/history.d.ts.map +1 -1
  33. package/dist/commands/history.js +59 -69
  34. package/dist/commands/history.js.map +1 -1
  35. package/dist/commands/init.d.ts +5 -1
  36. package/dist/commands/init.d.ts.map +1 -1
  37. package/dist/commands/init.js +25 -20
  38. package/dist/commands/init.js.map +1 -1
  39. package/dist/commands/log.d.ts +1 -2
  40. package/dist/commands/log.d.ts.map +1 -1
  41. package/dist/commands/log.js +9 -12
  42. package/dist/commands/log.js.map +1 -1
  43. package/dist/commands/resume.d.ts +18 -1
  44. package/dist/commands/resume.d.ts.map +1 -1
  45. package/dist/commands/resume.js +44 -66
  46. package/dist/commands/resume.js.map +1 -1
  47. package/dist/commands/setup-ui.d.ts +46 -0
  48. package/dist/commands/setup-ui.d.ts.map +1 -0
  49. package/dist/commands/setup-ui.js +221 -0
  50. package/dist/commands/setup-ui.js.map +1 -0
  51. package/dist/commands/setup.d.ts +31 -3
  52. package/dist/commands/setup.d.ts.map +1 -1
  53. package/dist/commands/setup.js +27 -270
  54. package/dist/commands/setup.js.map +1 -1
  55. package/dist/commands/simulate-cross-chain.d.ts +53 -0
  56. package/dist/commands/simulate-cross-chain.d.ts.map +1 -0
  57. package/dist/commands/simulate-cross-chain.js +256 -0
  58. package/dist/commands/simulate-cross-chain.js.map +1 -0
  59. package/dist/commands/simulate.d.ts +5 -1
  60. package/dist/commands/simulate.d.ts.map +1 -1
  61. package/dist/commands/simulate.js +16 -364
  62. package/dist/commands/simulate.js.map +1 -1
  63. package/dist/commands/state-helpers.d.ts.map +1 -1
  64. package/dist/commands/state-helpers.js +1 -5
  65. package/dist/commands/state-helpers.js.map +1 -1
  66. package/dist/commands/validate.d.ts +24 -2
  67. package/dist/commands/validate.d.ts.map +1 -1
  68. package/dist/commands/validate.js +40 -42
  69. package/dist/commands/validate.js.map +1 -1
  70. package/dist/commands/venue-doctor-morpho.d.ts +38 -0
  71. package/dist/commands/venue-doctor-morpho.d.ts.map +1 -0
  72. package/dist/commands/venue-doctor-morpho.js +214 -0
  73. package/dist/commands/venue-doctor-morpho.js.map +1 -0
  74. package/dist/commands/venue-doctor.d.ts +2 -26
  75. package/dist/commands/venue-doctor.d.ts.map +1 -1
  76. package/dist/commands/venue-doctor.js +17 -221
  77. package/dist/commands/venue-doctor.js.map +1 -1
  78. package/dist/commands/venue.d.ts.map +1 -1
  79. package/dist/commands/venue.js +11 -19
  80. package/dist/commands/venue.js.map +1 -1
  81. package/dist/commands/venues.d.ts +1 -5
  82. package/dist/commands/venues.d.ts.map +1 -1
  83. package/dist/commands/venues.js +5 -8
  84. package/dist/commands/venues.js.map +1 -1
  85. package/dist/commands/wallet-weth.d.ts +22 -0
  86. package/dist/commands/wallet-weth.d.ts.map +1 -0
  87. package/dist/commands/wallet-weth.js +150 -0
  88. package/dist/commands/wallet-weth.js.map +1 -0
  89. package/dist/commands/wallet.d.ts +65 -3
  90. package/dist/commands/wallet.d.ts.map +1 -1
  91. package/dist/commands/wallet.js +183 -377
  92. package/dist/commands/wallet.js.map +1 -1
  93. package/dist/index.js +375 -170
  94. package/dist/index.js.map +1 -1
  95. package/dist/lib/execution-helpers.d.ts +24 -0
  96. package/dist/lib/execution-helpers.d.ts.map +1 -0
  97. package/dist/lib/execution-helpers.js +133 -0
  98. package/dist/lib/execution-helpers.js.map +1 -0
  99. package/dist/lib/json.d.ts +8 -0
  100. package/dist/lib/json.d.ts.map +1 -0
  101. package/dist/lib/json.js +10 -0
  102. package/dist/lib/json.js.map +1 -0
  103. package/dist/lib/keystore.d.ts +12 -0
  104. package/dist/lib/keystore.d.ts.map +1 -0
  105. package/dist/lib/keystore.js +14 -0
  106. package/dist/lib/keystore.js.map +1 -0
  107. package/dist/lib/prompts.d.ts +16 -0
  108. package/dist/lib/prompts.d.ts.map +1 -0
  109. package/dist/lib/prompts.js +61 -0
  110. package/dist/lib/prompts.js.map +1 -0
  111. package/package.json +4 -4
package/dist/index.js CHANGED
@@ -3,11 +3,10 @@
3
3
  * Grimoire CLI
4
4
  * Command-line interface for spell management and execution
5
5
  */
6
- import { Command } from "commander";
6
+ import { Cli, z } from "incur";
7
7
  import { castCommand } from "./commands/cast.js";
8
8
  import { compileCommand } from "./commands/compile.js";
9
9
  import { compileAllCommand } from "./commands/compile-all.js";
10
- import { collectRepeatedOption } from "./commands/cross-chain-helpers.js";
11
10
  import { historyCommand } from "./commands/history.js";
12
11
  import { initCommand } from "./commands/init.js";
13
12
  import { logCommand } from "./commands/log.js";
@@ -17,174 +16,380 @@ import { simulateCommand } from "./commands/simulate.js";
17
16
  import { validateCommand } from "./commands/validate.js";
18
17
  import { venueCommand } from "./commands/venue.js";
19
18
  import { venuesCommand } from "./commands/venues.js";
20
- import { walletCommand } from "./commands/wallet.js";
19
+ import { walletCli } from "./commands/wallet.js";
21
20
  import { loadSetupEnv } from "./lib/setup-env.js";
22
21
  loadSetupEnv();
23
- const program = new Command();
24
- program.enablePositionalOptions();
25
- program
26
- .name("grimoire")
27
- .description("A Portable Execution Language for Onchain Strategies")
28
- .version("0.1.0");
29
- // Init command
30
- program
31
- .command("init")
32
- .description("Initialize a new .grimoire directory")
33
- .option("-f, --force", "Overwrite existing files")
34
- .option("--runtime-quickstart", "Create an embedded runtime quickstart scaffold")
35
- .action(initCommand);
36
- // Setup command
37
- program
38
- .command("setup")
39
- .description("Guided local execute setup (wallet, RPC, and readiness checks)")
40
- .option("--chain <id>", "Chain ID for execute setup checks")
41
- .option("--rpc-url <url>", "RPC URL (or set RPC_URL_<chainId> / RPC_URL)")
42
- .option("--adapter <name>", "Adapter for venue doctor check")
43
- .option("--keystore <path>", "Path to keystore file")
44
- .option("--password-env <name>", "Environment variable for keystore password")
45
- .option("--key-env <name>", "Environment variable containing private key", "PRIVATE_KEY")
46
- .option("--import-key", "Import private key from --key-env if keystore is missing")
47
- .option("--no-save-password-env", "Do not write .grimoire/setup.env after prompting password")
48
- .option("--no-doctor", "Skip venue doctor readiness check")
49
- .option("--non-interactive", "Disable interactive prompts")
50
- .option("--json", "Output setup result as JSON")
51
- .action(setupCommand);
52
- // Compile command
53
- program
54
- .command("compile <spell>")
55
- .description("Compile a .spell file to IR")
56
- .option("-o, --output <file>", "Output file for IR JSON")
57
- .option("--pretty", "Pretty print JSON output")
58
- .action(compileCommand);
59
- // Compile all command
60
- program
61
- .command("compile-all [dir]")
62
- .description("Compile all .spell files in a directory (default: spells)")
63
- .option("--fail-fast", "Stop after the first failure")
64
- .option("--json", "Output results as JSON")
65
- .action(compileAllCommand);
66
- // Validate command
67
- program
68
- .command("validate <spell>")
69
- .description("Validate a .spell file")
70
- .option("--strict", "Treat warnings as errors")
71
- .option("--json", "Output validation report as JSON")
72
- .action(validateCommand);
73
- // Simulate command
74
- program
75
- .command("simulate <spell>")
76
- .description("Simulate spell execution (dry run)")
77
- .option("-p, --params <json>", "Parameters as JSON")
78
- .option("--vault <address>", "Vault address")
79
- .option("--chain <id>", "Chain ID", "1")
80
- .option("--rpc-url <url>", "RPC URL override (single URL) or chain mapping <chainId>=<url> (repeatable)", collectRepeatedOption, [])
81
- .option("--destination-spell <spell>", "Destination spell path for cross-chain orchestration")
82
- .option("--destination-chain <id>", "Destination chain ID for cross-chain orchestration")
83
- .option("--handoff-timeout-sec <seconds>", "Handoff timeout in seconds for cross-chain mode")
84
- .option("--poll-interval-sec <seconds>", "Handoff polling interval in seconds (default: 30)")
85
- .option("--watch", "Keep process alive and continue after handoff settlement")
86
- .option("--morpho-market-id <mapping>", "Morpho market mapping <actionRef>=<marketId> (repeatable)", collectRepeatedOption, [])
87
- .option("--morpho-market-map <path>", "JSON file mapping actionRef -> marketId")
88
- .option("--json", "Output results as JSON")
89
- .option("--advisor-skills-dir <dir...>", "Directory to load advisor skills (default: ./skills)")
90
- .option("--advisory-pi", "Force advisory steps via Pi SDK (auto when configured)")
91
- .option("--advisory-replay <runId>", "Replay advisory outputs from a previous run")
92
- .option("--advisory-provider <name>", "Pi provider for advisory (e.g., anthropic)")
93
- .option("--advisory-model <id>", "Pi model ID for advisory (e.g., claude-sonnet-4-20250514)")
94
- .option("--advisory-thinking <level>", "Pi thinking level (off|low|medium|high)")
95
- .option("--advisory-tools <mode>", "Advisory tools: none|read|coding (default: read)")
96
- .option("--advisory-trace-verbose", "Show verbose advisory trace (prompt/schema, tool args/results, model text/thinking deltas)")
97
- .option("--pi-agent-dir <dir>", "Pi agent directory (defaults to ~/.pi/agent)")
98
- .option("--data-replay <mode>", "Replay external data by runId/snapshotId (or off|auto, default: auto)")
99
- .option("--data-max-age <sec>", "Maximum external data age in seconds (default: 3600)")
100
- .option("--on-stale <policy>", "Stale data policy: fail|warn (default: fail)")
101
- .option("--ens-name <name>", "ENS name to hydrate strategy params from text records")
102
- .option("--ens-rpc-url <url>", "RPC URL for ENS lookups (defaults to ENS_RPC_URL or RPC_URL)")
103
- .option("--state-dir <dir>", "Directory for state database")
104
- .option("--no-state", "Disable state persistence")
105
- .action(simulateCommand);
106
- // Cast command
107
- program
108
- .command("cast <spell>")
109
- .description("Execute a spell")
110
- .option("-p, --params <json>", "Parameters as JSON")
111
- .option("--vault <address>", "Vault address")
112
- .option("--chain <id>", "Chain ID", "1")
113
- .option("--dry-run", "Simulate without executing")
114
- .option("--private-key <key>", "Private key (hex) - NOT RECOMMENDED, use --key-env")
115
- .option("--key-env <name>", "Environment variable containing private key")
116
- .option("--keystore <path>", "Path to keystore file")
117
- .option("--password-env <name>", "Environment variable for keystore password")
118
- .option("--rpc-url <url>", "RPC URL (single URL) or chain mapping <chainId>=<url> (repeatable)", collectRepeatedOption, [])
119
- .option("--destination-spell <spell>", "Destination spell path for cross-chain orchestration")
120
- .option("--destination-chain <id>", "Destination chain ID for cross-chain orchestration")
121
- .option("--handoff-timeout-sec <seconds>", "Handoff timeout in seconds for cross-chain mode")
122
- .option("--poll-interval-sec <seconds>", "Handoff polling interval in seconds (default: 30)")
123
- .option("--watch", "Keep process alive and continue after handoff settlement")
124
- .option("--morpho-market-id <mapping>", "Morpho market mapping <actionRef>=<marketId> (repeatable)", collectRepeatedOption, [])
125
- .option("--morpho-market-map <path>", "JSON file mapping actionRef -> marketId")
126
- .option("--gas-multiplier <n>", "Gas price multiplier (default: 1.1)")
127
- .option("--skip-confirm", "Skip confirmation prompt (use with caution)")
128
- .option("-v, --verbose", "Show verbose output")
129
- .option("--json", "Output results as JSON")
130
- .option("--advisor-skills-dir <dir...>", "Directory to load advisor skills (default: ./skills)")
131
- .option("--advisory-pi", "Force advisory steps via Pi SDK (auto when configured)")
132
- .option("--advisory-replay <runId>", "Replay advisory outputs from a previous run")
133
- .option("--advisory-provider <name>", "Pi provider for advisory (e.g., anthropic)")
134
- .option("--advisory-model <id>", "Pi model ID for advisory (e.g., claude-sonnet-4-20250514)")
135
- .option("--advisory-thinking <level>", "Pi thinking level (off|low|medium|high)")
136
- .option("--advisory-tools <mode>", "Advisory tools: none|read|coding (default: read)")
137
- .option("--advisory-trace-verbose", "Show verbose advisory trace (prompt/schema, tool args/results, model text/thinking deltas)")
138
- .option("--pi-agent-dir <dir>", "Pi agent directory (defaults to ~/.pi/agent)")
139
- .option("--data-replay <mode>", "Replay external data by runId/snapshotId (or off|auto; default: auto for dry-run/simulate, off for live cast)")
140
- .option("--data-max-age <sec>", "Maximum external data age in seconds (default: 3600)")
141
- .option("--on-stale <policy>", "Stale data policy: fail|warn (default: fail)")
142
- .option("--ens-name <name>", "ENS name to hydrate strategy params from text records")
143
- .option("--ens-rpc-url <url>", "RPC URL for ENS lookups (defaults to ENS_RPC_URL or RPC_URL)")
144
- .option("--state-dir <dir>", "Directory for state database")
145
- .option("--no-state", "Disable state persistence")
146
- .option("--trigger <type>", "Run only the specified trigger handler (e.g., manual, hourly)")
147
- .action(castCommand);
148
- // Venues command
149
- program
150
- .command("venues")
151
- .description("List available venue adapters")
152
- .option("--json", "Output results as JSON")
153
- .action(venuesCommand);
154
- // Venue metadata command (proxy)
155
- program
156
- .command("venue [adapter] [args...]")
157
- .description("Run venue metadata commands (proxy to @grimoirelabs/venues CLIs)")
158
- .allowUnknownOption(true)
159
- .passThroughOptions()
160
- .helpOption(false)
161
- .action((adapter, args) => venueCommand(adapter, args));
162
- // History command
163
- program
164
- .command("history [spell]")
165
- .description("View execution history")
166
- .option("--limit <n>", "Maximum number of runs to show", "20")
167
- .option("--json", "Output results as JSON")
168
- .option("--state-dir <dir>", "Directory for state database")
169
- .action(historyCommand);
170
- // Resume cross-chain continuation
171
- program
172
- .command("resume <runId>")
173
- .description("Resume a waiting cross-chain orchestration run")
174
- .option("--watch", "Keep process alive and continue after handoff settlement")
175
- .option("--poll-interval-sec <seconds>", "Handoff polling interval in seconds (default: 30)")
176
- .option("--json", "Output results as JSON")
177
- .option("--state-dir <dir>", "Directory for state database")
178
- .action(resumeCommand);
179
- // Log command
180
- program
181
- .command("log <spell> <runId>")
182
- .description("View ledger events for a run")
183
- .option("--json", "Output results as JSON")
184
- .option("--state-dir <dir>", "Directory for state database")
185
- .action(logCommand);
186
- // Wallet command
187
- program.addCommand(walletCommand);
188
- // Parse and run
189
- program.parse();
22
+ // ── Shared option fragments ────────────────────────────────────────
23
+ const advisoryOptions = {
24
+ advisorSkillsDir: z
25
+ .array(z.string())
26
+ .optional()
27
+ .describe("Directory to load advisor skills (default: ./skills)"),
28
+ advisoryPi: z
29
+ .boolean()
30
+ .optional()
31
+ .describe("Force advisory steps via Pi SDK (auto when configured)"),
32
+ advisoryReplay: z.string().optional().describe("Replay advisory outputs from a previous run"),
33
+ advisoryProvider: z.string().optional().describe("Pi provider for advisory (e.g., anthropic)"),
34
+ advisoryModel: z
35
+ .string()
36
+ .optional()
37
+ .describe("Pi model ID for advisory (e.g., claude-sonnet-4-20250514)"),
38
+ advisoryThinking: z
39
+ .enum(["off", "low", "medium", "high"])
40
+ .optional()
41
+ .describe("Pi thinking level (off|low|medium|high)"),
42
+ advisoryTools: z
43
+ .enum(["none", "read", "coding"])
44
+ .optional()
45
+ .describe("Advisory tools: none|read|coding (default: read)"),
46
+ advisoryTraceVerbose: z.boolean().optional().describe("Show verbose advisory trace"),
47
+ piAgentDir: z.string().optional().describe("Pi agent directory (defaults to ~/.pi/agent)"),
48
+ };
49
+ const dataProvenanceOptions = {
50
+ dataReplay: z
51
+ .string()
52
+ .optional()
53
+ .describe("Replay external data by runId/snapshotId (or off|auto)"),
54
+ dataMaxAge: z
55
+ .string()
56
+ .optional()
57
+ .describe("Maximum external data age in seconds (default: 3600)"),
58
+ onStale: z.string().optional().describe("Stale data policy: fail|warn (default: fail)"),
59
+ };
60
+ const ensOptions = {
61
+ ensName: z.string().optional().describe("ENS name to hydrate strategy params from text records"),
62
+ ensRpcUrl: z.string().optional().describe("RPC URL for ENS lookups"),
63
+ };
64
+ const stateOptions = {
65
+ stateDir: z.string().optional().describe("Directory for state database"),
66
+ noState: z.boolean().optional().describe("Disable state persistence"),
67
+ };
68
+ const crossChainOptions = {
69
+ destinationSpell: z
70
+ .string()
71
+ .optional()
72
+ .describe("Destination spell path for cross-chain orchestration"),
73
+ destinationChain: z
74
+ .string()
75
+ .optional()
76
+ .describe("Destination chain ID for cross-chain orchestration"),
77
+ handoffTimeoutSec: z
78
+ .string()
79
+ .optional()
80
+ .describe("Handoff timeout in seconds for cross-chain mode"),
81
+ pollIntervalSec: z
82
+ .string()
83
+ .optional()
84
+ .describe("Handoff polling interval in seconds (default: 30)"),
85
+ watch: z
86
+ .boolean()
87
+ .optional()
88
+ .describe("Keep process alive and continue after handoff settlement"),
89
+ };
90
+ const morphoOptions = {
91
+ morphoMarketId: z
92
+ .array(z.string())
93
+ .optional()
94
+ .describe("Morpho market mapping <actionRef>=<marketId> (repeatable)"),
95
+ morphoMarketMap: z.string().optional().describe("JSON file mapping actionRef -> marketId"),
96
+ };
97
+ // ── CLI ────────────────────────────────────────────────────────────
98
+ const cli = Cli.create("grimoire", {
99
+ description: "A Portable Execution Language for Onchain Strategies",
100
+ sync: {
101
+ suggestions: [
102
+ "compile a spell",
103
+ "simulate a spell",
104
+ "list available venues",
105
+ "set up local execute mode",
106
+ ],
107
+ },
108
+ })
109
+ .use(async (c, next) => {
110
+ const start = performance.now();
111
+ await next();
112
+ if (!c.agent)
113
+ console.error(`Done in ${(performance.now() - start).toFixed(0)}ms`);
114
+ })
115
+ // ── Init ─────────────────────────────────────────────────────────
116
+ .command("init", {
117
+ description: "Initialize a new .grimoire directory",
118
+ options: z.object({
119
+ force: z.boolean().optional().describe("Overwrite existing files"),
120
+ runtimeQuickstart: z
121
+ .boolean()
122
+ .optional()
123
+ .describe("Create an embedded runtime quickstart scaffold"),
124
+ }),
125
+ async run(c) {
126
+ const result = await initCommand(c.options);
127
+ return c.ok(result, {
128
+ cta: {
129
+ commands: [
130
+ "validate .grimoire/spells/example-swap/spell.spell",
131
+ "simulate .grimoire/spells/example-swap/spell.spell",
132
+ ],
133
+ },
134
+ });
135
+ },
136
+ })
137
+ // ── Setup ────────────────────────────────────────────────────────
138
+ .command("setup", {
139
+ description: "Guided local execute setup (wallet, RPC, and readiness checks)",
140
+ options: z.object({
141
+ chain: z.string().optional().describe("Chain ID for execute setup checks"),
142
+ rpcUrl: z.string().optional().describe("RPC URL (or set RPC_URL_<chainId> / RPC_URL)"),
143
+ adapter: z.string().optional().describe("Adapter for venue doctor check"),
144
+ keystore: z.string().optional().describe("Path to keystore file"),
145
+ passwordEnv: z.string().optional().describe("Environment variable for keystore password"),
146
+ keyEnv: z
147
+ .string()
148
+ .optional()
149
+ .default("PRIVATE_KEY")
150
+ .describe("Environment variable containing private key"),
151
+ importKey: z
152
+ .boolean()
153
+ .optional()
154
+ .describe("Import private key from --key-env if keystore is missing"),
155
+ noSavePasswordEnv: z
156
+ .boolean()
157
+ .optional()
158
+ .describe("Do not write .grimoire/setup.env after prompting password"),
159
+ noDoctor: z.boolean().optional().describe("Skip venue doctor readiness check"),
160
+ nonInteractive: z.boolean().optional().describe("Disable interactive prompts"),
161
+ }),
162
+ async run(c) {
163
+ const options = {
164
+ ...c.options,
165
+ // Map noSavePasswordEnv -> savePasswordEnv (inverse)
166
+ savePasswordEnv: c.options.noSavePasswordEnv === true ? false : undefined,
167
+ // Map noDoctor -> doctor (inverse)
168
+ doctor: c.options.noDoctor === true ? false : undefined,
169
+ json: c.agent,
170
+ };
171
+ const result = await setupCommand(options);
172
+ return c.ok(result, {
173
+ cta: { commands: ["cast <spell> --dry-run", "venue doctor"] },
174
+ });
175
+ },
176
+ })
177
+ // ── Compile ──────────────────────────────────────────────────────
178
+ .command("compile", {
179
+ description: "Compile a .spell file to IR",
180
+ args: z.object({
181
+ spell: z.string().describe("Path to .spell file"),
182
+ }),
183
+ options: z.object({
184
+ output: z.string().optional().describe("Output file for IR JSON"),
185
+ pretty: z.boolean().optional().describe("Pretty print JSON output"),
186
+ }),
187
+ async run(c) {
188
+ const result = await compileCommand(c.args.spell, c.options);
189
+ return c.ok(result, {
190
+ cta: { commands: ["validate <spell>", "simulate <spell>"] },
191
+ });
192
+ },
193
+ })
194
+ // ── Compile All ──────────────────────────────────────────────────
195
+ .command("compile-all", {
196
+ description: "Compile all .spell files in a directory (default: spells)",
197
+ args: z.object({
198
+ dir: z.string().optional().describe("Directory to compile"),
199
+ }),
200
+ options: z.object({
201
+ failFast: z.boolean().optional().describe("Stop after the first failure"),
202
+ }),
203
+ async run(c) {
204
+ const results = await compileAllCommand(c.args.dir, c.options);
205
+ return c.ok(results);
206
+ },
207
+ })
208
+ // ── Validate ─────────────────────────────────────────────────────
209
+ .command("validate", {
210
+ description: "Validate a .spell file",
211
+ args: z.object({
212
+ spell: z.string().describe("Path to .spell file"),
213
+ }),
214
+ options: z.object({
215
+ strict: z.boolean().optional().describe("Treat warnings as errors"),
216
+ }),
217
+ async run(c) {
218
+ const result = await validateCommand(c.args.spell, c.options);
219
+ return c.ok(result, {
220
+ cta: { commands: ["compile <spell>", "simulate <spell>"] },
221
+ });
222
+ },
223
+ })
224
+ // ── Simulate ─────────────────────────────────────────────────────
225
+ .command("simulate", {
226
+ description: "Simulate spell execution (dry run)",
227
+ args: z.object({
228
+ spell: z.string().describe("Path to .spell file"),
229
+ }),
230
+ options: z.object({
231
+ params: z.string().optional().describe("Parameters as JSON"),
232
+ vault: z.string().optional().describe("Vault address"),
233
+ chain: z.string().optional().default("1").describe("Chain ID"),
234
+ rpcUrl: z
235
+ .array(z.string())
236
+ .optional()
237
+ .describe("RPC URL override or chain mapping <chainId>=<url> (repeatable)"),
238
+ ...crossChainOptions,
239
+ ...morphoOptions,
240
+ ...advisoryOptions,
241
+ ...dataProvenanceOptions,
242
+ ...ensOptions,
243
+ ...stateOptions,
244
+ }),
245
+ alias: { params: "p" },
246
+ async run(c) {
247
+ const result = await simulateCommand(c.args.spell, { ...c.options, json: c.agent });
248
+ return c.ok(result ?? { success: true }, {
249
+ cta: { commands: ["cast <spell>", "cast <spell> --dry-run"] },
250
+ });
251
+ },
252
+ })
253
+ // ── Cast ─────────────────────────────────────────────────────────
254
+ .command("cast", {
255
+ description: "Execute a spell",
256
+ args: z.object({
257
+ spell: z.string().describe("Path to .spell file"),
258
+ }),
259
+ options: z.object({
260
+ params: z.string().optional().describe("Parameters as JSON"),
261
+ vault: z.string().optional().describe("Vault address"),
262
+ chain: z.string().optional().default("1").describe("Chain ID"),
263
+ dryRun: z.boolean().optional().describe("Simulate without executing"),
264
+ privateKey: z
265
+ .string()
266
+ .optional()
267
+ .describe("Private key (hex) - NOT RECOMMENDED, use --key-env"),
268
+ keyEnv: z.string().optional().describe("Environment variable containing private key"),
269
+ keystore: z.string().optional().describe("Path to keystore file"),
270
+ passwordEnv: z.string().optional().describe("Environment variable for keystore password"),
271
+ rpcUrl: z
272
+ .array(z.string())
273
+ .optional()
274
+ .describe("RPC URL or chain mapping <chainId>=<url> (repeatable)"),
275
+ ...crossChainOptions,
276
+ ...morphoOptions,
277
+ gasMultiplier: z.string().optional().describe("Gas price multiplier (default: 1.1)"),
278
+ skipConfirm: z.boolean().optional().describe("Skip confirmation prompt (use with caution)"),
279
+ verbose: z.boolean().optional().describe("Show verbose output"),
280
+ ...advisoryOptions,
281
+ ...dataProvenanceOptions,
282
+ ...ensOptions,
283
+ ...stateOptions,
284
+ trigger: z
285
+ .string()
286
+ .optional()
287
+ .describe("Run only the specified trigger handler (e.g., manual, hourly)"),
288
+ }),
289
+ alias: { params: "p", verbose: "v" },
290
+ async run(c) {
291
+ const result = await castCommand(c.args.spell, { ...c.options, json: c.agent });
292
+ return c.ok(result ?? { success: true }, {
293
+ cta: { commands: ["history <spell>", "log <spell> <runId>"] },
294
+ });
295
+ },
296
+ })
297
+ // ── Venues ───────────────────────────────────────────────────────
298
+ .command("venues", {
299
+ description: "List available venue adapters",
300
+ async run(c) {
301
+ const metas = await venuesCommand();
302
+ return c.ok(metas, {
303
+ cta: { commands: ["venue <adapter> --help"] },
304
+ });
305
+ },
306
+ })
307
+ // ── Venue ────────────────────────────────────────────────────────
308
+ .command("venue", {
309
+ description: "Run venue metadata commands (proxy to @grimoirelabs/venues CLIs)",
310
+ args: z.object({
311
+ adapter: z.string().optional().describe("Venue adapter name"),
312
+ }),
313
+ hint: "Pass additional arguments after the adapter name, e.g.: grimoire venue uniswap tokens --chain 1",
314
+ async run(c) {
315
+ // Collect remaining argv after 'venue <adapter>' as pass-through args
316
+ const argv = process.argv;
317
+ const venueIdx = argv.indexOf("venue");
318
+ const passArgs = venueIdx >= 0 ? argv.slice(venueIdx + 2) : [];
319
+ await venueCommand(c.args.adapter ?? "", passArgs);
320
+ return c.ok({ success: true });
321
+ },
322
+ })
323
+ // ── History ──────────────────────────────────────────────────────
324
+ .command("history", {
325
+ description: "View execution history",
326
+ args: z.object({
327
+ spell: z.string().optional().describe("Spell ID to show runs for"),
328
+ }),
329
+ options: z.object({
330
+ limit: z.string().optional().default("20").describe("Maximum number of runs to show"),
331
+ ...stateOptions,
332
+ }),
333
+ async run(c) {
334
+ const result = await historyCommand(c.args.spell, c.options);
335
+ return c.ok(result, {
336
+ cta: { commands: ["log <spell> <runId>"] },
337
+ });
338
+ },
339
+ })
340
+ // ── Resume ───────────────────────────────────────────────────────
341
+ .command("resume", {
342
+ description: "Resume a waiting cross-chain orchestration run",
343
+ args: z.object({
344
+ runId: z.string().describe("Run ID to resume"),
345
+ }),
346
+ options: z.object({
347
+ watch: z
348
+ .boolean()
349
+ .optional()
350
+ .describe("Keep process alive and continue after handoff settlement"),
351
+ pollIntervalSec: z
352
+ .string()
353
+ .optional()
354
+ .describe("Handoff polling interval in seconds (default: 30)"),
355
+ ...stateOptions,
356
+ }),
357
+ async run(c) {
358
+ const result = await resumeCommand(c.args.runId, { ...c.options, json: c.agent });
359
+ return c.ok(result ?? { success: true });
360
+ },
361
+ })
362
+ // ── Log ──────────────────────────────────────────────────────────
363
+ .command("log", {
364
+ description: "View ledger events for a run",
365
+ args: z.object({
366
+ spell: z.string().describe("Spell ID"),
367
+ runId: z.string().describe("Run ID"),
368
+ }),
369
+ options: z.object({
370
+ ...stateOptions,
371
+ }),
372
+ async run(c) {
373
+ const result = await logCommand(c.args.spell, c.args.runId, c.options);
374
+ return c.ok(result);
375
+ },
376
+ })
377
+ // ── Wallet (nested CLI) ──────────────────────────────────────────
378
+ .command(walletCli);
379
+ // ── Serve ──────────────────────────────────────────────────────────
380
+ // Bypass incur's parser for `venue` — it rejects unknown flags that
381
+ // are actually meant for the proxied venue CLI (e.g. --query, --chain).
382
+ const firstArg = process.argv[2];
383
+ if (firstArg === "venue") {
384
+ const adapter = process.argv[3] ?? "";
385
+ const passArgs = process.argv.slice(4);
386
+ venueCommand(adapter, passArgs).catch((err) => {
387
+ const msg = err instanceof Error ? err.message : String(err);
388
+ console.error(`${msg}`);
389
+ process.exitCode = 1;
390
+ });
391
+ }
392
+ else {
393
+ cli.serve();
394
+ }
190
395
  //# sourceMappingURL=index.js.map
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":";AACA;;;GAGG;AAEH,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,YAAY,EAAE,CAAC;AAEf,sEAAsE;AAEtE,MAAM,eAAe,GAAG;IACtB,gBAAgB,EAAE,CAAC;SAChB,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;SACjB,QAAQ,EAAE;SACV,QAAQ,CAAC,sDAAsD,CAAC;IACnE,UAAU,EAAE,CAAC;SACV,OAAO,EAAE;SACT,QAAQ,EAAE;SACV,QAAQ,CAAC,wDAAwD,CAAC;IACrE,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6CAA6C,CAAC;IAC7F,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4CAA4C,CAAC;IAC9F,aAAa,EAAE,CAAC;SACb,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,2DAA2D,CAAC;IACxE,gBAAgB,EAAE,CAAC;SAChB,IAAI,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;SACtC,QAAQ,EAAE;SACV,QAAQ,CAAC,yCAAyC,CAAC;IACtD,aAAa,EAAE,CAAC;SACb,IAAI,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;SAChC,QAAQ,EAAE;SACV,QAAQ,CAAC,kDAAkD,CAAC;IAC/D,oBAAoB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6BAA6B,CAAC;IACpF,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8CAA8C,CAAC;CAC3F,CAAC;AAEF,MAAM,qBAAqB,GAAG;IAC5B,UAAU,EAAE,CAAC;SACV,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,wDAAwD,CAAC;IACrE,UAAU,EAAE,CAAC;SACV,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,sDAAsD,CAAC;IACnE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8CAA8C,CAAC;CACxF,CAAC;AAEF,MAAM,UAAU,GAAG;IACjB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uDAAuD,CAAC;IAChG,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yBAAyB,CAAC;CACrE,CAAC;AAEF,MAAM,YAAY,GAAG;IACnB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8BAA8B,CAAC;IACxE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2BAA2B,CAAC;CACtE,CAAC;AAEF,MAAM,iBAAiB,GAAG;IACxB,gBAAgB,EAAE,CAAC;SAChB,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,sDAAsD,CAAC;IACnE,gBAAgB,EAAE,CAAC;SAChB,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,oDAAoD,CAAC;IACjE,iBAAiB,EAAE,CAAC;SACjB,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,iDAAiD,CAAC;IAC9D,eAAe,EAAE,CAAC;SACf,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,mDAAmD,CAAC;IAChE,KAAK,EAAE,CAAC;SACL,OAAO,EAAE;SACT,QAAQ,EAAE;SACV,QAAQ,CAAC,0DAA0D,CAAC;CACxE,CAAC;AAEF,MAAM,aAAa,GAAG;IACpB,cAAc,EAAE,CAAC;SACd,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;SACjB,QAAQ,EAAE;SACV,QAAQ,CAAC,2DAA2D,CAAC;IACxE,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yCAAyC,CAAC;CAC3F,CAAC;AAEF,sEAAsE;AAEtE,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,UAAU,EAAE;IACjC,WAAW,EAAE,sDAAsD;IACnE,IAAI,EAAE;QACJ,WAAW,EAAE;YACX,iBAAiB;YACjB,kBAAkB;YAClB,uBAAuB;YACvB,2BAA2B;SAC5B;KACF;CACF,CAAC;KACC,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE;IACrB,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;IAChC,MAAM,IAAI,EAAE,CAAC;IACb,IAAI,CAAC,CAAC,CAAC,KAAK;QAAE,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AACrF,CAAC,CAAC;IAEF,oEAAoE;KACnE,OAAO,CAAC,MAAM,EAAE;IACf,WAAW,EAAE,sCAAsC;IACnD,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC;QAChB,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0BAA0B,CAAC;QAClE,iBAAiB,EAAE,CAAC;aACjB,OAAO,EAAE;aACT,QAAQ,EAAE;aACV,QAAQ,CAAC,gDAAgD,CAAC;KAC9D,CAAC;IACF,KAAK,CAAC,GAAG,CAAC,CAAC;QACT,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QAC5C,OAAO,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE;YAClB,GAAG,EAAE;gBACH,QAAQ,EAAE;oBACR,oDAAoD;oBACpD,oDAAoD;iBACrD;aACF;SACF,CAAC,CAAC;IACL,CAAC;CACF,CAAC;IAEF,oEAAoE;KACnE,OAAO,CAAC,OAAO,EAAE;IAChB,WAAW,EAAE,gEAAgE;IAC7E,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC;QAChB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mCAAmC,CAAC;QAC1E,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8CAA8C,CAAC;QACtF,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC;QACzE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;QACjE,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4CAA4C,CAAC;QACzF,MAAM,EAAE,CAAC;aACN,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,OAAO,CAAC,aAAa,CAAC;aACtB,QAAQ,CAAC,6CAA6C,CAAC;QAC1D,SAAS,EAAE,CAAC;aACT,OAAO,EAAE;aACT,QAAQ,EAAE;aACV,QAAQ,CAAC,0DAA0D,CAAC;QACvE,iBAAiB,EAAE,CAAC;aACjB,OAAO,EAAE;aACT,QAAQ,EAAE;aACV,QAAQ,CAAC,2DAA2D,CAAC;QACxE,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mCAAmC,CAAC;QAC9E,cAAc,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6BAA6B,CAAC;KAC/E,CAAC;IACF,KAAK,CAAC,GAAG,CAAC,CAAC;QACT,MAAM,OAAO,GAAG;YACd,GAAG,CAAC,CAAC,OAAO;YACZ,qDAAqD;YACrD,eAAe,EAAE,CAAC,CAAC,OAAO,CAAC,iBAAiB,KAAK,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;YACzE,mCAAmC;YACnC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;YACvD,IAAI,EAAE,CAAC,CAAC,KAAK;SACd,CAAC;QACF,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,CAAC;QAC3C,OAAO,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE;YAClB,GAAG,EAAE,EAAE,QAAQ,EAAE,CAAC,wBAAwB,EAAE,cAAc,CAAC,EAAE;SAC9D,CAAC,CAAC;IACL,CAAC;CACF,CAAC;IAEF,oEAAoE;KACnE,OAAO,CAAC,SAAS,EAAE;IAClB,WAAW,EAAE,6BAA6B;IAC1C,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;QACb,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC;KAClD,CAAC;IACF,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC;QAChB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yBAAyB,CAAC;QACjE,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0BAA0B,CAAC;KACpE,CAAC;IACF,KAAK,CAAC,GAAG,CAAC,CAAC;QACT,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;QAC7D,OAAO,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE;YAClB,GAAG,EAAE,EAAE,QAAQ,EAAE,CAAC,kBAAkB,EAAE,kBAAkB,CAAC,EAAE;SAC5D,CAAC,CAAC;IACL,CAAC;CACF,CAAC;IAEF,oEAAoE;KACnE,OAAO,CAAC,aAAa,EAAE;IACtB,WAAW,EAAE,2DAA2D;IACxE,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;QACb,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC;KAC5D,CAAC;IACF,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC;QAChB,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8BAA8B,CAAC;KAC1E,CAAC;IACF,KAAK,CAAC,GAAG,CAAC,CAAC;QACT,MAAM,OAAO,GAAG,MAAM,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;QAC/D,OAAO,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;IACvB,CAAC;CACF,CAAC;IAEF,oEAAoE;KACnE,OAAO,CAAC,UAAU,EAAE;IACnB,WAAW,EAAE,wBAAwB;IACrC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;QACb,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC;KAClD,CAAC;IACF,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC;QAChB,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0BAA0B,CAAC;KACpE,CAAC;IACF,KAAK,CAAC,GAAG,CAAC,CAAC;QACT,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;QAC9D,OAAO,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE;YAClB,GAAG,EAAE,EAAE,QAAQ,EAAE,CAAC,iBAAiB,EAAE,kBAAkB,CAAC,EAAE;SAC3D,CAAC,CAAC;IACL,CAAC;CACF,CAAC;IAEF,oEAAoE;KACnE,OAAO,CAAC,UAAU,EAAE;IACnB,WAAW,EAAE,oCAAoC;IACjD,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;QACb,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC;KAClD,CAAC;IACF,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC;QAChB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oBAAoB,CAAC;QAC5D,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC;QACtD,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC;QAC9D,MAAM,EAAE,CAAC;aACN,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;aACjB,QAAQ,EAAE;aACV,QAAQ,CAAC,gEAAgE,CAAC;QAC7E,GAAG,iBAAiB;QACpB,GAAG,aAAa;QAChB,GAAG,eAAe;QAClB,GAAG,qBAAqB;QACxB,GAAG,UAAU;QACb,GAAG,YAAY;KAChB,CAAC;IACF,KAAK,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE;IACtB,KAAK,CAAC,GAAG,CAAC,CAAC;QACT,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,GAAG,CAAC,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;QACpF,OAAO,CAAC,CAAC,EAAE,CAAC,MAAM,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;YACvC,GAAG,EAAE,EAAE,QAAQ,EAAE,CAAC,cAAc,EAAE,wBAAwB,CAAC,EAAE;SAC9D,CAAC,CAAC;IACL,CAAC;CACF,CAAC;IAEF,oEAAoE;KACnE,OAAO,CAAC,MAAM,EAAE;IACf,WAAW,EAAE,iBAAiB;IAC9B,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;QACb,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC;KAClD,CAAC;IACF,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC;QAChB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oBAAoB,CAAC;QAC5D,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC;QACtD,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC;QAC9D,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4BAA4B,CAAC;QACrE,UAAU,EAAE,CAAC;aACV,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CAAC,oDAAoD,CAAC;QACjE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6CAA6C,CAAC;QACrF,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;QACjE,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4CAA4C,CAAC;QACzF,MAAM,EAAE,CAAC;aACN,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;aACjB,QAAQ,EAAE;aACV,QAAQ,CAAC,uDAAuD,CAAC;QACpE,GAAG,iBAAiB;QACpB,GAAG,aAAa;QAChB,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qCAAqC,CAAC;QACpF,WAAW,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6CAA6C,CAAC;QAC3F,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC;QAC/D,GAAG,eAAe;QAClB,GAAG,qBAAqB;QACxB,GAAG,UAAU;QACb,GAAG,YAAY;QACf,OAAO,EAAE,CAAC;aACP,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CAAC,+DAA+D,CAAC;KAC7E,CAAC;IACF,KAAK,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE;IACpC,KAAK,CAAC,GAAG,CAAC,CAAC;QACT,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,GAAG,CAAC,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;QAChF,OAAO,CAAC,CAAC,EAAE,CAAC,MAAM,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;YACvC,GAAG,EAAE,EAAE,QAAQ,EAAE,CAAC,iBAAiB,EAAE,qBAAqB,CAAC,EAAE;SAC9D,CAAC,CAAC;IACL,CAAC;CACF,CAAC;IAEF,oEAAoE;KACnE,OAAO,CAAC,QAAQ,EAAE;IACjB,WAAW,EAAE,+BAA+B;IAC5C,KAAK,CAAC,GAAG,CAAC,CAAC;QACT,MAAM,KAAK,GAAG,MAAM,aAAa,EAAE,CAAC;QACpC,OAAO,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE;YACjB,GAAG,EAAE,EAAE,QAAQ,EAAE,CAAC,wBAAwB,CAAC,EAAE;SAC9C,CAAC,CAAC;IACL,CAAC;CACF,CAAC;IAEF,oEAAoE;KACnE,OAAO,CAAC,OAAO,EAAE;IAChB,WAAW,EAAE,kEAAkE;IAC/E,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;QACb,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oBAAoB,CAAC;KAC9D,CAAC;IACF,IAAI,EAAE,iGAAiG;IACvG,KAAK,CAAC,GAAG,CAAC,CAAC;QACT,sEAAsE;QACtE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;QAC1B,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACvC,MAAM,QAAQ,GAAG,QAAQ,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/D,MAAM,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,EAAE,QAAQ,CAAC,CAAC;QACnD,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IACjC,CAAC;CACF,CAAC;IAEF,oEAAoE;KACnE,OAAO,CAAC,SAAS,EAAE;IAClB,WAAW,EAAE,wBAAwB;IACrC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;QACb,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2BAA2B,CAAC;KACnE,CAAC;IACF,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC;QAChB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,gCAAgC,CAAC;QACrF,GAAG,YAAY;KAChB,CAAC;IACF,KAAK,CAAC,GAAG,CAAC,CAAC;QACT,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;QAC7D,OAAO,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE;YAClB,GAAG,EAAE,EAAE,QAAQ,EAAE,CAAC,qBAAqB,CAAC,EAAE;SAC3C,CAAC,CAAC;IACL,CAAC;CACF,CAAC;IAEF,oEAAoE;KACnE,OAAO,CAAC,QAAQ,EAAE;IACjB,WAAW,EAAE,gDAAgD;IAC7D,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;QACb,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC;KAC/C,CAAC;IACF,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC;QAChB,KAAK,EAAE,CAAC;aACL,OAAO,EAAE;aACT,QAAQ,EAAE;aACV,QAAQ,CAAC,0DAA0D,CAAC;QACvE,eAAe,EAAE,CAAC;aACf,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CAAC,mDAAmD,CAAC;QAChE,GAAG,YAAY;KAChB,CAAC;IACF,KAAK,CAAC,GAAG,CAAC,CAAC;QACT,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,GAAG,CAAC,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;QAClF,OAAO,CAAC,CAAC,EAAE,CAAC,MAAM,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3C,CAAC;CACF,CAAC;IAEF,oEAAoE;KACnE,OAAO,CAAC,KAAK,EAAE;IACd,WAAW,EAAE,8BAA8B;IAC3C,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;QACb,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC;QACtC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC;KACrC,CAAC;IACF,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC;QAChB,GAAG,YAAY;KAChB,CAAC;IACF,KAAK,CAAC,GAAG,CAAC,CAAC;QACT,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;QACvE,OAAO,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;IACtB,CAAC;CACF,CAAC;IAEF,oEAAoE;KACnE,OAAO,CAAC,SAAS,CAAC,CAAC;AAEtB,sEAAsE;AAEtE,oEAAoE;AACpE,wEAAwE;AACxE,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjC,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;IACzB,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACtC,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACvC,YAAY,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;QAC5C,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC7D,OAAO,CAAC,KAAK,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC;QACxB,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACvB,CAAC,CAAC,CAAC;AACL,CAAC;KAAM,CAAC;IACN,GAAG,CAAC,KAAK,EAAE,CAAC;AACd,CAAC"}