@gzeoneth/gov-tracker 0.2.1-beta.682a255 → 0.2.1-beta.746bfec

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 (197) hide show
  1. package/README.md +126 -80
  2. package/dist/abis.d.ts +3 -0
  3. package/dist/abis.d.ts.map +1 -1
  4. package/dist/abis.js +30 -2
  5. package/dist/abis.js.map +1 -1
  6. package/dist/calldata/index.d.ts +1 -1
  7. package/dist/calldata/index.d.ts.map +1 -1
  8. package/dist/calldata/index.js.map +1 -1
  9. package/dist/calldata/parameter-decoder.d.ts.map +1 -1
  10. package/dist/calldata/parameter-decoder.js +8 -1
  11. package/dist/calldata/parameter-decoder.js.map +1 -1
  12. package/dist/calldata/signature-lookup.d.ts +17 -2
  13. package/dist/calldata/signature-lookup.d.ts.map +1 -1
  14. package/dist/calldata/signature-lookup.js +20 -2
  15. package/dist/calldata/signature-lookup.js.map +1 -1
  16. package/dist/cli/cli.d.ts +21 -0
  17. package/dist/cli/cli.d.ts.map +1 -0
  18. package/dist/cli/{monitor.js → cli.js} +315 -46
  19. package/dist/cli/cli.js.map +1 -0
  20. package/dist/cli/lib/cli.d.ts +54 -3
  21. package/dist/cli/lib/cli.d.ts.map +1 -1
  22. package/dist/cli/lib/cli.js +384 -75
  23. package/dist/cli/lib/cli.js.map +1 -1
  24. package/dist/cli/lib/concurrency.d.ts +20 -0
  25. package/dist/cli/lib/concurrency.d.ts.map +1 -0
  26. package/dist/cli/lib/concurrency.js +32 -0
  27. package/dist/cli/lib/concurrency.js.map +1 -0
  28. package/dist/cli/lib/json-state.d.ts +23 -0
  29. package/dist/cli/lib/json-state.d.ts.map +1 -1
  30. package/dist/cli/lib/json-state.js +51 -4
  31. package/dist/cli/lib/json-state.js.map +1 -1
  32. package/dist/constants.d.ts +39 -0
  33. package/dist/constants.d.ts.map +1 -1
  34. package/dist/constants.js +47 -1
  35. package/dist/constants.js.map +1 -1
  36. package/dist/data/bundled-cache.json +11807 -2559
  37. package/dist/deduplication.d.ts +132 -0
  38. package/dist/deduplication.d.ts.map +1 -0
  39. package/dist/deduplication.js +270 -0
  40. package/dist/deduplication.js.map +1 -0
  41. package/dist/discovery/governor-discovery.d.ts.map +1 -1
  42. package/dist/discovery/governor-discovery.js +52 -36
  43. package/dist/discovery/governor-discovery.js.map +1 -1
  44. package/dist/discovery/timelock-discovery.d.ts +15 -6
  45. package/dist/discovery/timelock-discovery.d.ts.map +1 -1
  46. package/dist/discovery/timelock-discovery.js +27 -11
  47. package/dist/discovery/timelock-discovery.js.map +1 -1
  48. package/dist/election/contracts.d.ts +8 -0
  49. package/dist/election/contracts.d.ts.map +1 -0
  50. package/dist/election/contracts.js +28 -0
  51. package/dist/election/contracts.js.map +1 -0
  52. package/dist/election/details.d.ts +15 -0
  53. package/dist/election/details.d.ts.map +1 -0
  54. package/dist/election/details.js +157 -0
  55. package/dist/election/details.js.map +1 -0
  56. package/dist/election/index.d.ts +11 -0
  57. package/dist/election/index.d.ts.map +1 -0
  58. package/dist/election/index.js +48 -0
  59. package/dist/election/index.js.map +1 -0
  60. package/dist/election/params.d.ts +13 -0
  61. package/dist/election/params.d.ts.map +1 -0
  62. package/dist/election/params.js +93 -0
  63. package/dist/election/params.js.map +1 -0
  64. package/dist/election/participants.d.ts +6 -0
  65. package/dist/election/participants.d.ts.map +1 -0
  66. package/dist/election/participants.js +102 -0
  67. package/dist/election/participants.js.map +1 -0
  68. package/dist/election/prepare.d.ts +10 -0
  69. package/dist/election/prepare.d.ts.map +1 -0
  70. package/dist/election/prepare.js +52 -0
  71. package/dist/election/prepare.js.map +1 -0
  72. package/dist/election/proposal-ids.d.ts +18 -0
  73. package/dist/election/proposal-ids.d.ts.map +1 -0
  74. package/dist/election/proposal-ids.js +77 -0
  75. package/dist/election/proposal-ids.js.map +1 -0
  76. package/dist/election/status.d.ts +15 -0
  77. package/dist/election/status.d.ts.map +1 -0
  78. package/dist/election/status.js +102 -0
  79. package/dist/election/status.js.map +1 -0
  80. package/dist/election/tracking.d.ts +28 -0
  81. package/dist/election/tracking.d.ts.map +1 -0
  82. package/dist/election/tracking.js +412 -0
  83. package/dist/election/tracking.js.map +1 -0
  84. package/dist/index.d.ts +30 -7
  85. package/dist/index.d.ts.map +1 -1
  86. package/dist/index.js +94 -9
  87. package/dist/index.js.map +1 -1
  88. package/dist/stages/builder.d.ts +4 -0
  89. package/dist/stages/builder.d.ts.map +1 -1
  90. package/dist/stages/builder.js +7 -0
  91. package/dist/stages/builder.js.map +1 -1
  92. package/dist/stages/l2-to-l1-message.d.ts +8 -1
  93. package/dist/stages/l2-to-l1-message.d.ts.map +1 -1
  94. package/dist/stages/l2-to-l1-message.js +79 -13
  95. package/dist/stages/l2-to-l1-message.js.map +1 -1
  96. package/dist/stages/proposal-created.d.ts +1 -0
  97. package/dist/stages/proposal-created.d.ts.map +1 -1
  98. package/dist/stages/proposal-created.js +1 -0
  99. package/dist/stages/proposal-created.js.map +1 -1
  100. package/dist/stages/proposal-queued.d.ts +1 -0
  101. package/dist/stages/proposal-queued.d.ts.map +1 -1
  102. package/dist/stages/proposal-queued.js +3 -1
  103. package/dist/stages/proposal-queued.js.map +1 -1
  104. package/dist/stages/retryables.js +2 -2
  105. package/dist/stages/retryables.js.map +1 -1
  106. package/dist/stages/timelock.d.ts +3 -1
  107. package/dist/stages/timelock.d.ts.map +1 -1
  108. package/dist/stages/timelock.js +10 -4
  109. package/dist/stages/timelock.js.map +1 -1
  110. package/dist/stages/utils.d.ts +7 -8
  111. package/dist/stages/utils.d.ts.map +1 -1
  112. package/dist/stages/utils.js +40 -27
  113. package/dist/stages/utils.js.map +1 -1
  114. package/dist/stages/voting.d.ts.map +1 -1
  115. package/dist/stages/voting.js +5 -4
  116. package/dist/stages/voting.js.map +1 -1
  117. package/dist/tracker/cache.d.ts +10 -6
  118. package/dist/tracker/cache.d.ts.map +1 -1
  119. package/dist/tracker/cache.js +39 -15
  120. package/dist/tracker/cache.js.map +1 -1
  121. package/dist/tracker/checkpoint-helpers.d.ts +63 -0
  122. package/dist/tracker/checkpoint-helpers.d.ts.map +1 -0
  123. package/dist/tracker/checkpoint-helpers.js +176 -0
  124. package/dist/tracker/checkpoint-helpers.js.map +1 -0
  125. package/dist/tracker/discovery.d.ts +40 -9
  126. package/dist/tracker/discovery.d.ts.map +1 -1
  127. package/dist/tracker/discovery.js +152 -15
  128. package/dist/tracker/discovery.js.map +1 -1
  129. package/dist/tracker/pipeline.d.ts.map +1 -1
  130. package/dist/tracker/pipeline.js +26 -11
  131. package/dist/tracker/pipeline.js.map +1 -1
  132. package/dist/tracker/query.d.ts +1 -0
  133. package/dist/tracker/query.d.ts.map +1 -1
  134. package/dist/tracker/query.js +14 -61
  135. package/dist/tracker/query.js.map +1 -1
  136. package/dist/tracker/state.d.ts +0 -10
  137. package/dist/tracker/state.d.ts.map +1 -1
  138. package/dist/tracker/state.js +1 -28
  139. package/dist/tracker/state.js.map +1 -1
  140. package/dist/tracker.d.ts +86 -4
  141. package/dist/tracker.d.ts.map +1 -1
  142. package/dist/tracker.js +311 -13
  143. package/dist/tracker.js.map +1 -1
  144. package/dist/types/config.d.ts +49 -0
  145. package/dist/types/config.d.ts.map +1 -1
  146. package/dist/types/core.d.ts +4 -2
  147. package/dist/types/core.d.ts.map +1 -1
  148. package/dist/types/election.d.ts +143 -0
  149. package/dist/types/election.d.ts.map +1 -1
  150. package/dist/types/index.d.ts +5 -7
  151. package/dist/types/index.d.ts.map +1 -1
  152. package/dist/types/index.js +2 -3
  153. package/dist/types/index.js.map +1 -1
  154. package/dist/types/stages.d.ts +79 -1
  155. package/dist/types/stages.d.ts.map +1 -1
  156. package/dist/types/stages.js.map +1 -1
  157. package/dist/types/tracking.d.ts +34 -4
  158. package/dist/types/tracking.d.ts.map +1 -1
  159. package/dist/utils/block-cache.d.ts +50 -0
  160. package/dist/utils/block-cache.d.ts.map +1 -0
  161. package/dist/utils/block-cache.js +80 -0
  162. package/dist/utils/block-cache.js.map +1 -0
  163. package/dist/utils/formatters.d.ts +91 -0
  164. package/dist/utils/formatters.d.ts.map +1 -0
  165. package/dist/utils/formatters.js +327 -0
  166. package/dist/utils/formatters.js.map +1 -0
  167. package/dist/utils/multicall.d.ts +52 -0
  168. package/dist/utils/multicall.d.ts.map +1 -0
  169. package/dist/utils/multicall.js +75 -0
  170. package/dist/utils/multicall.js.map +1 -0
  171. package/dist/utils/salt-computation.d.ts.map +1 -1
  172. package/dist/utils/salt-computation.js +33 -7
  173. package/dist/utils/salt-computation.js.map +1 -1
  174. package/dist/utils/sanitize.d.ts +28 -0
  175. package/dist/utils/sanitize.d.ts.map +1 -0
  176. package/dist/utils/sanitize.js +52 -0
  177. package/dist/utils/sanitize.js.map +1 -0
  178. package/dist/utils/stage-metadata.d.ts +0 -20
  179. package/dist/utils/stage-metadata.d.ts.map +1 -1
  180. package/dist/utils/stage-metadata.js +29 -44
  181. package/dist/utils/stage-metadata.js.map +1 -1
  182. package/dist/utils/timing.d.ts +13 -0
  183. package/dist/utils/timing.d.ts.map +1 -1
  184. package/dist/utils/timing.js +37 -1
  185. package/dist/utils/timing.js.map +1 -1
  186. package/package.json +25 -16
  187. package/dist/cli/monitor.d.ts +0 -3
  188. package/dist/cli/monitor.d.ts.map +0 -1
  189. package/dist/cli/monitor.js.map +0 -1
  190. package/dist/election.d.ts +0 -172
  191. package/dist/election.d.ts.map +0 -1
  192. package/dist/election.js +0 -467
  193. package/dist/election.js.map +0 -1
  194. package/dist/types/cross-chain.d.ts +0 -24
  195. package/dist/types/cross-chain.d.ts.map +0 -1
  196. package/dist/types/cross-chain.js +0 -6
  197. package/dist/types/cross-chain.js.map +0 -1
@@ -1,5 +1,23 @@
1
1
  #!/usr/bin/env node
2
2
  "use strict";
3
+ /**
4
+ * Monitor CLI - Example SDK Usage
5
+ *
6
+ * NOTE: This is a CLI application that demonstrates SDK usage, not library code.
7
+ * It serves as both a reference implementation and a production-ready tool.
8
+ * Developers should treat this as an application of the SDK, not as part of the SDK API.
9
+ *
10
+ * Demonstrates how to use the governance tracking SDK for:
11
+ * - Discovering proposals and timelock operations
12
+ * - Tracking lifecycle stages
13
+ * - Preparing and executing transactions
14
+ *
15
+ * Usage: npx @gzeoneth/gov-tracker [run|track <tx-hash>|election|status] [options]
16
+ *
17
+ * Dependencies:
18
+ * - commander is an optional dependency required for CLI usage
19
+ * - dotenv is a dev dependency; .env files are loaded if available
20
+ */
3
21
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4
22
  if (k2 === undefined) k2 = k;
5
23
  var desc = Object.getOwnPropertyDescriptor(m, k);
@@ -37,27 +55,37 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
37
55
  return (mod && mod.__esModule) ? mod : { "default": mod };
38
56
  };
39
57
  Object.defineProperty(exports, "__esModule", { value: true });
40
- /**
41
- * Monitor CLI - Example SDK Usage
42
- *
43
- * NOTE: This is a CLI application that demonstrates SDK usage, not library code.
44
- * It serves as both a reference implementation and a production-ready tool.
45
- * Developers should treat this as an application of the SDK, not as part of the SDK API.
46
- *
47
- * Demonstrates how to use the governance tracking SDK for:
48
- * - Discovering proposals and timelock operations
49
- * - Tracking lifecycle stages
50
- * - Preparing and executing transactions
51
- *
52
- * Usage: npx @gzeoneth/gov-tracker [run|track <tx-hash>|election|status] [options]
53
- */
54
- const dotenv = __importStar(require("dotenv"));
55
- dotenv.config();
58
+ // Load .env file if dotenv is available (dev dependency)
59
+ // Must be synchronous to ensure env vars are loaded before other imports access them
60
+ try {
61
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
62
+ require("dotenv").config();
63
+ }
64
+ catch (err) {
65
+ // Only ignore if module not found; re-throw other errors
66
+ const isModuleNotFound = err instanceof Error &&
67
+ "code" in err &&
68
+ err.code === "MODULE_NOT_FOUND";
69
+ if (!isModuleNotFound) {
70
+ throw err;
71
+ }
72
+ }
56
73
  const os = __importStar(require("os"));
57
74
  const path = __importStar(require("path"));
58
75
  const fs = __importStar(require("fs"));
59
76
  const debug_1 = __importDefault(require("debug"));
60
- const commander_1 = require("commander");
77
+ // Check for required CLI dependencies (optional in package.json)
78
+ let Command;
79
+ try {
80
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
81
+ const commander = require("commander");
82
+ Command = commander.Command;
83
+ }
84
+ catch {
85
+ console.error("Error: CLI requires 'commander' package.");
86
+ console.error("Install it with: yarn add commander");
87
+ process.exit(1);
88
+ }
61
89
  // Read version from package.json
62
90
  function getPackageVersion() {
63
91
  const candidates = [
@@ -217,7 +245,7 @@ function createProgressCallback() {
217
245
  console.log(` [${currentIndex + 1}/${totalStages}] ${(0, index_1.formatStageTitle)(stage.type)} (${stage.chain}): ${stage.status}`);
218
246
  };
219
247
  }
220
- const program = new commander_1.Command()
248
+ const program = new Command()
221
249
  .name("gov-tracker")
222
250
  .description(`Track and execute Arbitrum DAO governance proposal lifecycle stages\nVersion: ${getPackageVersion()}`)
223
251
  .version(getPackageVersion());
@@ -225,8 +253,8 @@ const program = new commander_1.Command()
225
253
  // Run Command
226
254
  // ============================================================================
227
255
  const runCmd = program
228
- .command("run")
229
- .description("Discover, track, and optionally prepare/execute");
256
+ .command("run", { isDefault: true })
257
+ .description("Discover, track, and optionally prepare/execute (default command)");
230
258
  (0, cli_1.addOptions)(runCmd, cli_1.rpcOptions);
231
259
  (0, cli_1.addOptions)(runCmd, cli_1.executionOptions);
232
260
  (0, cli_1.addOptions)(runCmd, (0, cli_1.chunkingOptions)(index_1.CHUNK_SIZES.L1, index_1.CHUNK_SIZES.L2));
@@ -243,17 +271,23 @@ runCmd
243
271
  .option("--json-output <path>", "Write JSON state for dashboard integration")
244
272
  .option("--election", "Also check for Security Council elections each cycle")
245
273
  .option("--concurrency <n>", "Number of concurrent tracking operations", "1")
274
+ .option("--track-core", "Track constitutional (core) governor proposals")
275
+ .option("--track-treasury", "Track non-constitutional (treasury) governor proposals")
276
+ .option("--track-timelocks", "Track L2 timelock operations (direct schedules)")
277
+ .option("--track-elections", "Track election governor proposals")
246
278
  .action(async (opts) => {
247
279
  if (opts.verbose)
248
280
  debug_1.default.enable("gov-tracker:*");
281
+ (0, cli_1.validateCliOptions)(opts, "run");
249
282
  (0, cli_1.requirePrivateKeyForWrite)(opts);
250
283
  const providers = (0, cli_1.createProvidersFromOptions)(opts);
251
284
  const chunkingConfig = (0, cli_1.parseChunkingConfig)(opts, index_1.CHUNK_SIZES.DELAY_MS);
252
- // --no-cache disables cache entirely
285
+ // --no-cache disables cache entirely; use autoFlush: false for batch writes
253
286
  const cachePath = opts.noCache ? undefined : opts.cache;
287
+ const cache = cachePath ? new index_1.FileCache(cachePath, { autoFlush: false }) : undefined;
254
288
  const tracker = (0, index_1.createTracker)({
255
289
  ...providers,
256
- cachePath,
290
+ cache,
257
291
  chunkingConfig,
258
292
  onProgress: createProgressCallback(),
259
293
  });
@@ -269,6 +303,25 @@ runCmd
269
303
  const intervalMs = parseInt(opts.interval, 10) * 1000;
270
304
  const concurrency = parseInt(opts.concurrency, 10);
271
305
  const gasSettings = (0, cli_1.parseGasSettings)(opts);
306
+ // Build discovery targets from --track-* flags
307
+ // If any --track-* flag is specified, only track those; otherwise track all
308
+ const hasTrackFlags = opts.trackCore || opts.trackTreasury || opts.trackTimelocks || opts.trackElections;
309
+ // Detect what types are being tracked
310
+ const trackingProposals = !hasTrackFlags || opts.trackCore || opts.trackTreasury;
311
+ const trackingTimelocks = !hasTrackFlags || opts.trackTimelocks;
312
+ const trackingElections = !hasTrackFlags || opts.trackElections;
313
+ // Detect elections-only mode (only --track-elections, no other --track-* flags)
314
+ const electionsOnly = opts.trackElections && !opts.trackCore && !opts.trackTreasury && !opts.trackTimelocks;
315
+ const discoveryTargets = hasTrackFlags
316
+ ? {
317
+ constitutionalGovernor: opts.trackCore,
318
+ nonConstitutionalGovernor: opts.trackTreasury,
319
+ l2ConstitutionalTimelock: opts.trackTimelocks,
320
+ l2NonConstitutionalTimelock: opts.trackTimelocks,
321
+ electionNomineeGovernor: opts.trackElections,
322
+ electionMemberGovernor: opts.trackElections,
323
+ }
324
+ : (0, index_1.buildDefaultTargets)();
272
325
  if (opts.verbose) {
273
326
  if (startBlock !== undefined)
274
327
  console.log(`Starting discovery from block ${startBlock}`);
@@ -277,6 +330,12 @@ runCmd
277
330
  console.log(`Max consecutive errors before skip: ${cli_1.MAX_CONSECUTIVE_ERRORS}`);
278
331
  if (concurrency > 1)
279
332
  console.log(`Concurrency: ${concurrency}`);
333
+ if (hasTrackFlags) {
334
+ const enabled = Object.entries(discoveryTargets)
335
+ .filter(([, v]) => v)
336
+ .map(([k]) => k);
337
+ console.log(`Tracking targets: ${enabled.join(", ")}`);
338
+ }
280
339
  console.log(`L2 gas: ${gasSettings.maxFeePerGas} gwei maxFee, ${gasSettings.maxPriorityFeePerGas} gwei priority`);
281
340
  }
282
341
  if (signer)
@@ -284,12 +343,17 @@ runCmd
284
343
  // Track whether this is the first cycle (for startBlock override)
285
344
  let isFirstCycle = true;
286
345
  async function runCycle() {
287
- console.log("Discovering proposals and operations...\n");
346
+ if (electionsOnly) {
347
+ console.log("Tracking elections...\n");
348
+ }
349
+ else {
350
+ console.log("Discovering proposals and operations...\n");
351
+ }
288
352
  let electionsSkipped = 0;
289
353
  // Only use startBlock on the first cycle; subsequent cycles resume from watermarks
290
354
  const cycleStartBlock = isFirstCycle ? startBlock : undefined;
291
355
  isFirstCycle = false;
292
- const { result, proposals, timelockOps } = await (0, cli_1.runMonitorCycle)(tracker, providers, {
356
+ const { result, proposals, timelockOps, elections } = await (0, cli_1.runMonitorCycle)(tracker, providers, {
293
357
  prepare: opts.prepare || opts.write || opts.prepareCompleted || opts.preparePending,
294
358
  prepareCompleted: opts.prepareCompleted,
295
359
  preparePending: opts.preparePending,
@@ -297,6 +361,9 @@ runCmd
297
361
  blockLag,
298
362
  maxAgeDays,
299
363
  concurrency,
364
+ targets: discoveryTargets,
365
+ electionsOnly,
366
+ forceElections: opts.force,
300
367
  onTrack: async (r) => {
301
368
  // Skip showing complete elections
302
369
  if (r.result?.isElection && r.result?.isComplete) {
@@ -305,7 +372,7 @@ runCmd
305
372
  }
306
373
  if (r.result) {
307
374
  console.log(`\n[${r.key}]`);
308
- console.log((0, cli_1.formatTrackingResult)(r.result));
375
+ (0, cli_1.displayTrackingResult)(r.result);
309
376
  }
310
377
  else if (r.error) {
311
378
  console.log(`\n[${r.key}] ERROR: ${r.error}`);
@@ -337,14 +404,36 @@ runCmd
337
404
  // Skip output if shutting down
338
405
  if ((0, cli_1.isShuttingDown)())
339
406
  return;
340
- const stats = await tracker.getStats();
341
- console.log(`\nFound ${proposals.length} new proposals, ${timelockOps.length} new ops | ` +
342
- `Incomplete: ${stats.proposals.active} proposals, ${stats.timelocks.active} timelocks | ` +
343
- `Tracked: ${result.tracked}, Prepared: ${result.prepared}` +
344
- (electionsSkipped > 0 ? ` (${electionsSkipped} elections skipped)` : ""));
407
+ // Get checkpoints and calculate filtered stats based on enabled targets
408
+ const checkpoints = await tracker.getAllCheckpoints();
409
+ const stats = (0, cli_1.calculateFilteredStats)(checkpoints, discoveryTargets);
410
+ // Build summary based on what was tracked this run
411
+ if (electionsOnly) {
412
+ // Elections-only mode: count from tracked elections, not cache
413
+ const electionComplete = elections.filter((e) => e.phase === "COMPLETED").length;
414
+ console.log(`\nTracked ${elections.length} elections (${electionComplete}/${elections.length} complete)`);
415
+ }
416
+ else {
417
+ // Discovery mode: show stats for tracked types only
418
+ const electionSummary = trackingElections && elections.length > 0
419
+ ? `, ${elections.length} elections (${stats.elections.complete}/${stats.elections.total} complete)`
420
+ : "";
421
+ // Build incomplete stats for tracked types
422
+ const incompleteParts = [];
423
+ if (trackingProposals && stats.proposals.active > 0) {
424
+ incompleteParts.push(`${stats.proposals.active} proposals`);
425
+ }
426
+ if (trackingTimelocks && stats.timelocks.active > 0) {
427
+ incompleteParts.push(`${stats.timelocks.active} timelocks`);
428
+ }
429
+ const incompleteSummary = incompleteParts.length > 0 ? ` | Incomplete: ${incompleteParts.join(", ")}` : "";
430
+ console.log(`\nFound ${proposals.length} new proposals, ${timelockOps.length} new ops${electionSummary}${incompleteSummary} | ` +
431
+ `Tracked: ${result.tracked}, Prepared: ${result.prepared}` +
432
+ (electionsSkipped > 0 ? ` (${electionsSkipped} elections skipped)` : ""));
433
+ }
345
434
  if (opts.jsonOutput) {
346
- const checkpoints = await tracker.getAllCheckpoints();
347
- (0, json_state_1.writeDashboardState)((0, json_state_1.buildDashboardState)(checkpoints), opts.jsonOutput);
435
+ const filteredCheckpoints = (0, cli_1.filterCheckpointsByTargets)(checkpoints, discoveryTargets);
436
+ (0, json_state_1.writeDashboardState)((0, json_state_1.buildDashboardState)(filteredCheckpoints), opts.jsonOutput);
348
437
  if (opts.verbose)
349
438
  console.log(`JSON state written to ${opts.jsonOutput}`);
350
439
  }
@@ -377,6 +466,8 @@ runCmd
377
466
  intervalMs,
378
467
  healthCheckUrl: opts.healthCheckUrl,
379
468
  });
469
+ // Flush cache at end (single write instead of per-item)
470
+ await cache?.flush();
380
471
  });
381
472
  // ============================================================================
382
473
  // Track Command
@@ -400,6 +491,7 @@ trackCmd
400
491
  .action(async (txHash, opts) => {
401
492
  if (opts.verbose)
402
493
  debug_1.default.enable("gov-tracker:*");
494
+ (0, cli_1.validateCliOptions)(opts, "track");
403
495
  (0, cli_1.requirePrivateKeyForWrite)(opts);
404
496
  try {
405
497
  const providers = (0, cli_1.createProvidersFromOptions)(opts);
@@ -413,14 +505,20 @@ trackCmd
413
505
  if (opts.force)
414
506
  console.log(`Force: ignoring cached data`);
415
507
  }
416
- // Use cache unless --force or --no-cache is specified
417
- const cachePath = opts.noCache ? undefined : opts.force ? undefined : opts.cache;
508
+ // Use cache unless --no-cache is specified
509
+ // --force clears the cache entry before tracking but still writes results
510
+ const cachePath = opts.noCache ? undefined : opts.cache;
418
511
  const tracker = (0, index_1.createTracker)({
419
512
  ...providers,
420
513
  cachePath,
421
514
  chunkingConfig,
422
515
  onProgress: opts.verbose ? createProgressCallback() : undefined,
423
516
  });
517
+ // Clear cache entry if --force to ensure fresh tracking
518
+ if (opts.force && cachePath) {
519
+ const cacheKey = `tx:${txHash.toLowerCase()}`;
520
+ await tracker.clearCacheEntry(cacheKey);
521
+ }
424
522
  let calldatas = [];
425
523
  let targets = [];
426
524
  let values = [];
@@ -453,11 +551,16 @@ trackCmd
453
551
  prepareCompleted: opts.prepareCompleted,
454
552
  preparePending: opts.preparePending,
455
553
  }, providers);
554
+ if (results.length === 0) {
555
+ console.error("No proposal or timelock operation found in transaction");
556
+ process.exit(1);
557
+ }
456
558
  // Format tracking output
457
- results.forEach((r, i) => {
559
+ for (let i = 0; i < results.length; i++) {
560
+ const r = results[i];
458
561
  const label = results.length > 1 ? `Operation ${i + 1}/${results.length}` : undefined;
459
- console.log((0, cli_1.formatTrackingResult)(r, label));
460
- });
562
+ (0, cli_1.displayTrackingResult)(r, label);
563
+ }
461
564
  // Show all prepared transactions
462
565
  if (preparedTransactions.length > 0) {
463
566
  console.log(`\n${(0, cli_1.formatMultiplePreparedTransactions)(preparedTransactions)}`);
@@ -499,12 +602,13 @@ trackCmd
499
602
  break;
500
603
  console.log(`\nRe-tracking to find next stages...`);
501
604
  const retracked = await (0, cli_1.trackAndPrepare)(tracker, txHash, { prepare: true }, providers);
502
- retracked.results.forEach((r, i) => {
605
+ for (let i = 0; i < retracked.results.length; i++) {
606
+ const r = retracked.results[i];
503
607
  const label = retracked.results.length > 1
504
608
  ? `Operation ${i + 1}/${retracked.results.length}`
505
609
  : undefined;
506
- console.log((0, cli_1.formatTrackingResult)(r, label));
507
- });
610
+ (0, cli_1.displayTrackingResult)(r, label);
611
+ }
508
612
  if (retracked.preparedTransactions.length > 0) {
509
613
  console.log(`\n${(0, cli_1.formatMultiplePreparedTransactions)(retracked.preparedTransactions)}`);
510
614
  }
@@ -560,16 +664,19 @@ program
560
664
  .addOption(cli_1.cacheOptions.cache(DEFAULT_CACHE_PATH))
561
665
  .option("--json", "Output as JSON")
562
666
  .action(async (opts) => {
563
- const { watermarks, checkpoints } = await index_1.ProposalStageTracker.readCacheStatus(opts.cache);
667
+ const { watermarks, checkpoints, elections } = await index_1.ProposalStageTracker.readCacheStatus(opts.cache);
564
668
  if (opts.json) {
565
669
  const checkpointsObj = {};
566
670
  for (const [key, checkpoint] of checkpoints) {
567
671
  checkpointsObj[key] = checkpoint;
568
672
  }
673
+ for (const [index, checkpoint] of elections) {
674
+ checkpointsObj[`election:${index}`] = checkpoint;
675
+ }
569
676
  console.log(JSON.stringify({ watermarks, checkpoints: checkpointsObj }, null, 2));
570
677
  }
571
678
  else {
572
- console.log((0, cli_1.formatCacheStatus)(checkpoints));
679
+ console.log((0, cli_1.formatCacheStatus)(checkpoints, elections));
573
680
  }
574
681
  });
575
682
  // ============================================================================
@@ -577,19 +684,181 @@ program
577
684
  // ============================================================================
578
685
  const electionCmd = program
579
686
  .command("election")
580
- .description("Check Security Council election status");
687
+ .description("Check Security Council election status and track elections");
581
688
  (0, cli_1.addOptions)(electionCmd, cli_1.rpcOptions);
582
689
  (0, cli_1.addOptions)(electionCmd, cli_1.loopOptions);
690
+ (0, cli_1.addOptions)(electionCmd, cli_1.executionOptions);
583
691
  electionCmd
692
+ .addOption(cli_1.cacheOptions.cache(DEFAULT_CACHE_PATH))
693
+ .addOption(cli_1.cacheOptions.noCache)
694
+ .addOption(cli_1.cacheOptions.force)
584
695
  .addOption(cli_1.verboseOption)
585
- .option("--write", "Create election if ready (requires --private-key)")
586
- .addOption(new commander_1.Option("--private-key <key>", "Private key for execution").env("PRIVATE_KEY"))
696
+ .option("--list", "List all elections with their statuses")
697
+ .option("--track <index>", "Track a specific election by index")
698
+ .option("--details", "Show detailed nominee/member info (use with --track)")
587
699
  .action(async (opts) => {
588
700
  if (opts.verbose)
589
701
  debug_1.default.enable("gov-tracker:*");
590
702
  (0, cli_1.requirePrivateKeyForWrite)(opts);
591
703
  const providers = (0, cli_1.createProvidersFromOptions)(opts);
592
704
  const signer = opts.write ? (0, cli_1.createSigner)(opts.privateKey) : null;
705
+ // Create tracker with cache (unless --no-cache)
706
+ const cachePath = opts.noCache ? undefined : opts.cache;
707
+ const tracker = (0, index_1.createTracker)({
708
+ ...providers,
709
+ cachePath,
710
+ });
711
+ // Import election tracking functions for detailed queries
712
+ const { getNomineeElectionDetails, getMemberElectionDetails, prepareMemberElectionTrigger, prepareMemberElectionExecution, } = await Promise.resolve().then(() => __importStar(require("../index")));
713
+ // --list: Show all elections (uses cached data for completed elections)
714
+ if (opts.list) {
715
+ console.log("Fetching all elections...\n");
716
+ // Use --force to bypass cache and re-track all elections
717
+ const elections = await tracker.trackAllElections({ force: opts.force });
718
+ if (elections.length === 0) {
719
+ console.log("No elections found.");
720
+ return;
721
+ }
722
+ console.log(`=== Security Council Elections (${elections.length} total) ===\n`);
723
+ for (const election of elections) {
724
+ const cohortName = election.cohort === 0 ? "First" : "Second";
725
+ console.log(`Election #${election.electionIndex}`);
726
+ console.log(` Phase: ${election.phase}`);
727
+ console.log(` Cohort: ${cohortName} (${election.cohort})`);
728
+ console.log(` Compliant Nominees: ${election.compliantNomineeCount}/${election.targetNomineeCount}`);
729
+ if (election.nomineeProposalId) {
730
+ console.log(` Nominee Proposal: ${election.nomineeProposalState}`);
731
+ }
732
+ if (election.memberProposalId) {
733
+ console.log(` Member Proposal: ${election.memberProposalState}`);
734
+ }
735
+ if (election.canProceedToMemberPhase) {
736
+ console.log(` → Ready to trigger member election`);
737
+ }
738
+ if (election.canExecuteMember) {
739
+ console.log(` → Ready to execute member election`);
740
+ }
741
+ console.log("");
742
+ }
743
+ return;
744
+ }
745
+ // --track <index>: Track specific election (uses cache unless --force)
746
+ if (opts.track !== undefined) {
747
+ const electionIndex = parseInt(opts.track, 10);
748
+ console.log(`Tracking election #${electionIndex}...\n`);
749
+ const election = await tracker.trackElection(electionIndex, { force: opts.force });
750
+ // Use shared formatter for consistent output with stages
751
+ console.log((0, cli_1.formatElectionResult)(election));
752
+ // Show detailed info if requested
753
+ if (opts.details) {
754
+ console.log(`\n--- Detailed Information ---`);
755
+ if (election.nomineeProposalId) {
756
+ const nomineeDetails = await getNomineeElectionDetails(electionIndex, providers.l2Provider);
757
+ if (nomineeDetails) {
758
+ console.log(`\nNominee Election Details:`);
759
+ console.log(` Contenders: ${nomineeDetails.contenders.length}`);
760
+ console.log(` Total Nominees: ${nomineeDetails.nominees.length}`);
761
+ console.log(` Compliant: ${nomineeDetails.compliantNominees.length}`);
762
+ console.log(` Excluded: ${nomineeDetails.excludedNominees.length}`);
763
+ console.log(` Quorum Threshold: ${nomineeDetails.quorumThreshold.toString()} votes`);
764
+ if (nomineeDetails.contenders.length > 0) {
765
+ console.log(`\n Registered Contenders (${nomineeDetails.contenders.length}):`);
766
+ for (const contender of nomineeDetails.contenders) {
767
+ const extra = opts.verbose ? ` (block ${contender.registeredAtBlock})` : "";
768
+ console.log(` ${contender.address}${extra}`);
769
+ }
770
+ }
771
+ if (nomineeDetails.compliantNominees.length > 0) {
772
+ console.log(`\n Qualified Nominees (${nomineeDetails.compliantNominees.length}):`);
773
+ for (const nominee of nomineeDetails.compliantNominees) {
774
+ const extra = opts.verbose && nominee.nominatedAtBlock
775
+ ? ` (block ${nominee.nominatedAtBlock})`
776
+ : "";
777
+ console.log(` ${nominee.address}: ${nominee.votesReceived.toString()} votes${extra}`);
778
+ }
779
+ }
780
+ if (nomineeDetails.excludedNominees.length > 0) {
781
+ console.log(`\n Excluded Nominees (${nomineeDetails.excludedNominees.length}):`);
782
+ for (const nominee of nomineeDetails.excludedNominees) {
783
+ const extra = opts.verbose && nominee.excludedAtBlock
784
+ ? ` (block ${nominee.excludedAtBlock})`
785
+ : "";
786
+ console.log(` ${nominee.address}: excluded${extra}`);
787
+ }
788
+ }
789
+ }
790
+ }
791
+ if (election.memberProposalId) {
792
+ const memberDetails = await getMemberElectionDetails(electionIndex, providers.l2Provider);
793
+ if (memberDetails) {
794
+ console.log(`\nMember Election Details:`);
795
+ console.log(` Full Weight Deadline: block ${memberDetails.fullWeightDeadline}`);
796
+ console.log(` Proposal Deadline: block ${memberDetails.proposalDeadline}`);
797
+ if (memberDetails.nominees.length > 0) {
798
+ console.log(`\n Candidates by Weight (${memberDetails.nominees.length}):`);
799
+ for (const nominee of memberDetails.nominees) {
800
+ const winnerTag = nominee.isWinner ? " [WINNER]" : "";
801
+ console.log(` #${nominee.rank} ${nominee.address}: ${nominee.weightReceived.toString()}${winnerTag}`);
802
+ }
803
+ }
804
+ if (memberDetails.winners.length > 0) {
805
+ console.log(`\n Elected Members (${memberDetails.winners.length}):`);
806
+ for (const winner of memberDetails.winners) {
807
+ console.log(` ${winner}`);
808
+ }
809
+ }
810
+ }
811
+ }
812
+ }
813
+ function getActionStatus(isReady, isPending, isCompleted) {
814
+ if (isReady)
815
+ return "READY";
816
+ if (isCompleted)
817
+ return "COMPLETED";
818
+ if (isPending)
819
+ return "PENDING";
820
+ return "PENDING";
821
+ }
822
+ // Should we show/prepare this action based on flags?
823
+ function shouldShowAction(status) {
824
+ // Always show READY actions
825
+ if (status === "READY")
826
+ return true;
827
+ // Otherwise, only if --prepare* flags match the status
828
+ if (opts.preparePending && status === "PENDING")
829
+ return true;
830
+ if (opts.prepareCompleted && status === "COMPLETED")
831
+ return true;
832
+ return false;
833
+ }
834
+ // Helper to prepare and optionally execute an election action
835
+ async function handleElectionAction(actionName, prepareFunc, status) {
836
+ if (!shouldShowAction(status))
837
+ return;
838
+ console.log(`\n[ACTION] ${actionName} (${status})`);
839
+ const prepared = await prepareFunc();
840
+ if (!prepared)
841
+ return;
842
+ console.log((0, cli_1.formatDryRun)(prepared));
843
+ if (signer && opts.write && status === "READY") {
844
+ const execResult = await (0, cli_1.executeTransaction)(prepared, signer, providers);
845
+ if (execResult.success) {
846
+ console.log(`\n[EXECUTED] ${actionName} succeeded! Tx: ${execResult.txHash}`);
847
+ }
848
+ else {
849
+ console.error(`\n[ERROR] Execution failed: ${execResult.error}`);
850
+ }
851
+ }
852
+ }
853
+ // Trigger member election
854
+ const triggerStatus = getActionStatus(election.canProceedToMemberPhase, election.phase === "VETTING_PERIOD" && !election.canProceedToMemberPhase, election.memberProposalId !== null);
855
+ await handleElectionAction("Trigger member election", () => prepareMemberElectionTrigger(election, providers.l2Provider), triggerStatus);
856
+ // Execute member election
857
+ const executeStatus = getActionStatus(election.canExecuteMember, election.phase === "MEMBER_ELECTION" && !election.canExecuteMember, election.phase === "COMPLETED");
858
+ await handleElectionAction("Execute member election - install new council", () => prepareMemberElectionExecution(election, providers.l2Provider), executeStatus);
859
+ return;
860
+ }
861
+ // Default: Check election status (original behavior)
593
862
  async function checkElection() {
594
863
  try {
595
864
  const result = await (0, election_check_1.checkAndExecuteElection)(providers, signer, {
@@ -618,4 +887,4 @@ electionCmd
618
887
  });
619
888
  });
620
889
  program.parse();
621
- //# sourceMappingURL=monitor.js.map
890
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli/cli.ts"],"names":[],"mappings":"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"}