@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.
- package/README.md +126 -80
- package/dist/abis.d.ts +3 -0
- package/dist/abis.d.ts.map +1 -1
- package/dist/abis.js +30 -2
- package/dist/abis.js.map +1 -1
- package/dist/calldata/index.d.ts +1 -1
- package/dist/calldata/index.d.ts.map +1 -1
- package/dist/calldata/index.js.map +1 -1
- package/dist/calldata/parameter-decoder.d.ts.map +1 -1
- package/dist/calldata/parameter-decoder.js +8 -1
- package/dist/calldata/parameter-decoder.js.map +1 -1
- package/dist/calldata/signature-lookup.d.ts +17 -2
- package/dist/calldata/signature-lookup.d.ts.map +1 -1
- package/dist/calldata/signature-lookup.js +20 -2
- package/dist/calldata/signature-lookup.js.map +1 -1
- package/dist/cli/cli.d.ts +21 -0
- package/dist/cli/cli.d.ts.map +1 -0
- package/dist/cli/{monitor.js → cli.js} +315 -46
- package/dist/cli/cli.js.map +1 -0
- package/dist/cli/lib/cli.d.ts +54 -3
- package/dist/cli/lib/cli.d.ts.map +1 -1
- package/dist/cli/lib/cli.js +384 -75
- package/dist/cli/lib/cli.js.map +1 -1
- package/dist/cli/lib/concurrency.d.ts +20 -0
- package/dist/cli/lib/concurrency.d.ts.map +1 -0
- package/dist/cli/lib/concurrency.js +32 -0
- package/dist/cli/lib/concurrency.js.map +1 -0
- package/dist/cli/lib/json-state.d.ts +23 -0
- package/dist/cli/lib/json-state.d.ts.map +1 -1
- package/dist/cli/lib/json-state.js +51 -4
- package/dist/cli/lib/json-state.js.map +1 -1
- package/dist/constants.d.ts +39 -0
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +47 -1
- package/dist/constants.js.map +1 -1
- package/dist/data/bundled-cache.json +11807 -2559
- package/dist/deduplication.d.ts +132 -0
- package/dist/deduplication.d.ts.map +1 -0
- package/dist/deduplication.js +270 -0
- package/dist/deduplication.js.map +1 -0
- package/dist/discovery/governor-discovery.d.ts.map +1 -1
- package/dist/discovery/governor-discovery.js +52 -36
- package/dist/discovery/governor-discovery.js.map +1 -1
- package/dist/discovery/timelock-discovery.d.ts +15 -6
- package/dist/discovery/timelock-discovery.d.ts.map +1 -1
- package/dist/discovery/timelock-discovery.js +27 -11
- package/dist/discovery/timelock-discovery.js.map +1 -1
- package/dist/election/contracts.d.ts +8 -0
- package/dist/election/contracts.d.ts.map +1 -0
- package/dist/election/contracts.js +28 -0
- package/dist/election/contracts.js.map +1 -0
- package/dist/election/details.d.ts +15 -0
- package/dist/election/details.d.ts.map +1 -0
- package/dist/election/details.js +157 -0
- package/dist/election/details.js.map +1 -0
- package/dist/election/index.d.ts +11 -0
- package/dist/election/index.d.ts.map +1 -0
- package/dist/election/index.js +48 -0
- package/dist/election/index.js.map +1 -0
- package/dist/election/params.d.ts +13 -0
- package/dist/election/params.d.ts.map +1 -0
- package/dist/election/params.js +93 -0
- package/dist/election/params.js.map +1 -0
- package/dist/election/participants.d.ts +6 -0
- package/dist/election/participants.d.ts.map +1 -0
- package/dist/election/participants.js +102 -0
- package/dist/election/participants.js.map +1 -0
- package/dist/election/prepare.d.ts +10 -0
- package/dist/election/prepare.d.ts.map +1 -0
- package/dist/election/prepare.js +52 -0
- package/dist/election/prepare.js.map +1 -0
- package/dist/election/proposal-ids.d.ts +18 -0
- package/dist/election/proposal-ids.d.ts.map +1 -0
- package/dist/election/proposal-ids.js +77 -0
- package/dist/election/proposal-ids.js.map +1 -0
- package/dist/election/status.d.ts +15 -0
- package/dist/election/status.d.ts.map +1 -0
- package/dist/election/status.js +102 -0
- package/dist/election/status.js.map +1 -0
- package/dist/election/tracking.d.ts +28 -0
- package/dist/election/tracking.d.ts.map +1 -0
- package/dist/election/tracking.js +412 -0
- package/dist/election/tracking.js.map +1 -0
- package/dist/index.d.ts +30 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +94 -9
- package/dist/index.js.map +1 -1
- package/dist/stages/builder.d.ts +4 -0
- package/dist/stages/builder.d.ts.map +1 -1
- package/dist/stages/builder.js +7 -0
- package/dist/stages/builder.js.map +1 -1
- package/dist/stages/l2-to-l1-message.d.ts +8 -1
- package/dist/stages/l2-to-l1-message.d.ts.map +1 -1
- package/dist/stages/l2-to-l1-message.js +79 -13
- package/dist/stages/l2-to-l1-message.js.map +1 -1
- package/dist/stages/proposal-created.d.ts +1 -0
- package/dist/stages/proposal-created.d.ts.map +1 -1
- package/dist/stages/proposal-created.js +1 -0
- package/dist/stages/proposal-created.js.map +1 -1
- package/dist/stages/proposal-queued.d.ts +1 -0
- package/dist/stages/proposal-queued.d.ts.map +1 -1
- package/dist/stages/proposal-queued.js +3 -1
- package/dist/stages/proposal-queued.js.map +1 -1
- package/dist/stages/retryables.js +2 -2
- package/dist/stages/retryables.js.map +1 -1
- package/dist/stages/timelock.d.ts +3 -1
- package/dist/stages/timelock.d.ts.map +1 -1
- package/dist/stages/timelock.js +10 -4
- package/dist/stages/timelock.js.map +1 -1
- package/dist/stages/utils.d.ts +7 -8
- package/dist/stages/utils.d.ts.map +1 -1
- package/dist/stages/utils.js +40 -27
- package/dist/stages/utils.js.map +1 -1
- package/dist/stages/voting.d.ts.map +1 -1
- package/dist/stages/voting.js +5 -4
- package/dist/stages/voting.js.map +1 -1
- package/dist/tracker/cache.d.ts +10 -6
- package/dist/tracker/cache.d.ts.map +1 -1
- package/dist/tracker/cache.js +39 -15
- package/dist/tracker/cache.js.map +1 -1
- package/dist/tracker/checkpoint-helpers.d.ts +63 -0
- package/dist/tracker/checkpoint-helpers.d.ts.map +1 -0
- package/dist/tracker/checkpoint-helpers.js +176 -0
- package/dist/tracker/checkpoint-helpers.js.map +1 -0
- package/dist/tracker/discovery.d.ts +40 -9
- package/dist/tracker/discovery.d.ts.map +1 -1
- package/dist/tracker/discovery.js +152 -15
- package/dist/tracker/discovery.js.map +1 -1
- package/dist/tracker/pipeline.d.ts.map +1 -1
- package/dist/tracker/pipeline.js +26 -11
- package/dist/tracker/pipeline.js.map +1 -1
- package/dist/tracker/query.d.ts +1 -0
- package/dist/tracker/query.d.ts.map +1 -1
- package/dist/tracker/query.js +14 -61
- package/dist/tracker/query.js.map +1 -1
- package/dist/tracker/state.d.ts +0 -10
- package/dist/tracker/state.d.ts.map +1 -1
- package/dist/tracker/state.js +1 -28
- package/dist/tracker/state.js.map +1 -1
- package/dist/tracker.d.ts +86 -4
- package/dist/tracker.d.ts.map +1 -1
- package/dist/tracker.js +311 -13
- package/dist/tracker.js.map +1 -1
- package/dist/types/config.d.ts +49 -0
- package/dist/types/config.d.ts.map +1 -1
- package/dist/types/core.d.ts +4 -2
- package/dist/types/core.d.ts.map +1 -1
- package/dist/types/election.d.ts +143 -0
- package/dist/types/election.d.ts.map +1 -1
- package/dist/types/index.d.ts +5 -7
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +2 -3
- package/dist/types/index.js.map +1 -1
- package/dist/types/stages.d.ts +79 -1
- package/dist/types/stages.d.ts.map +1 -1
- package/dist/types/stages.js.map +1 -1
- package/dist/types/tracking.d.ts +34 -4
- package/dist/types/tracking.d.ts.map +1 -1
- package/dist/utils/block-cache.d.ts +50 -0
- package/dist/utils/block-cache.d.ts.map +1 -0
- package/dist/utils/block-cache.js +80 -0
- package/dist/utils/block-cache.js.map +1 -0
- package/dist/utils/formatters.d.ts +91 -0
- package/dist/utils/formatters.d.ts.map +1 -0
- package/dist/utils/formatters.js +327 -0
- package/dist/utils/formatters.js.map +1 -0
- package/dist/utils/multicall.d.ts +52 -0
- package/dist/utils/multicall.d.ts.map +1 -0
- package/dist/utils/multicall.js +75 -0
- package/dist/utils/multicall.js.map +1 -0
- package/dist/utils/salt-computation.d.ts.map +1 -1
- package/dist/utils/salt-computation.js +33 -7
- package/dist/utils/salt-computation.js.map +1 -1
- package/dist/utils/sanitize.d.ts +28 -0
- package/dist/utils/sanitize.d.ts.map +1 -0
- package/dist/utils/sanitize.js +52 -0
- package/dist/utils/sanitize.js.map +1 -0
- package/dist/utils/stage-metadata.d.ts +0 -20
- package/dist/utils/stage-metadata.d.ts.map +1 -1
- package/dist/utils/stage-metadata.js +29 -44
- package/dist/utils/stage-metadata.js.map +1 -1
- package/dist/utils/timing.d.ts +13 -0
- package/dist/utils/timing.d.ts.map +1 -1
- package/dist/utils/timing.js +37 -1
- package/dist/utils/timing.js.map +1 -1
- package/package.json +25 -16
- package/dist/cli/monitor.d.ts +0 -3
- package/dist/cli/monitor.d.ts.map +0 -1
- package/dist/cli/monitor.js.map +0 -1
- package/dist/election.d.ts +0 -172
- package/dist/election.d.ts.map +0 -1
- package/dist/election.js +0 -467
- package/dist/election.js.map +0 -1
- package/dist/types/cross-chain.d.ts +0 -24
- package/dist/types/cross-chain.d.ts.map +0 -1
- package/dist/types/cross-chain.js +0 -6
- 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
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
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
|
|
347
|
-
(0, json_state_1.writeDashboardState)((0, json_state_1.buildDashboardState)(
|
|
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 --
|
|
417
|
-
|
|
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.
|
|
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
|
-
|
|
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.
|
|
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
|
-
|
|
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("--
|
|
586
|
-
.
|
|
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=
|
|
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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"}
|