@gzeoneth/gov-tracker 0.2.1-alpha.cli-preview.375ef6c → 0.2.1-alpha.cli-preview.99d3341

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 (130) hide show
  1. package/README.md +37 -3
  2. package/dist/abis.d.ts.map +1 -1
  3. package/dist/abis.js +22 -1
  4. package/dist/abis.js.map +1 -1
  5. package/dist/cli/cli.js +206 -12
  6. package/dist/cli/cli.js.map +1 -1
  7. package/dist/cli/lib/cli.d.ts +9 -1
  8. package/dist/cli/lib/cli.d.ts.map +1 -1
  9. package/dist/cli/lib/cli.js +80 -4
  10. package/dist/cli/lib/cli.js.map +1 -1
  11. package/dist/cli/tui/hooks/index.d.ts +4 -0
  12. package/dist/cli/tui/hooks/index.d.ts.map +1 -1
  13. package/dist/cli/tui/hooks/index.js +5 -1
  14. package/dist/cli/tui/hooks/index.js.map +1 -1
  15. package/dist/cli/tui/hooks/useElectionData.d.ts +14 -0
  16. package/dist/cli/tui/hooks/useElectionData.d.ts.map +1 -0
  17. package/dist/cli/tui/hooks/useElectionData.js +86 -0
  18. package/dist/cli/tui/hooks/useElectionData.js.map +1 -0
  19. package/dist/cli/tui/hooks/useElectionDetails.d.ts +18 -0
  20. package/dist/cli/tui/hooks/useElectionDetails.d.ts.map +1 -0
  21. package/dist/cli/tui/hooks/useElectionDetails.js +47 -0
  22. package/dist/cli/tui/hooks/useElectionDetails.js.map +1 -0
  23. package/dist/cli/tui/hooks/useNavigation.d.ts.map +1 -1
  24. package/dist/cli/tui/hooks/useNavigation.js +65 -119
  25. package/dist/cli/tui/hooks/useNavigation.js.map +1 -1
  26. package/dist/cli/tui/hooks/useProposals.d.ts.map +1 -1
  27. package/dist/cli/tui/hooks/useProposals.js +74 -80
  28. package/dist/cli/tui/hooks/useProposals.js.map +1 -1
  29. package/dist/cli/tui/hooks/useTracker.d.ts.map +1 -1
  30. package/dist/cli/tui/hooks/useTracker.js +36 -41
  31. package/dist/cli/tui/hooks/useTracker.js.map +1 -1
  32. package/dist/cli/tui/utils/calldata-formatter.d.ts +17 -0
  33. package/dist/cli/tui/utils/calldata-formatter.d.ts.map +1 -0
  34. package/dist/cli/tui/utils/calldata-formatter.js +91 -0
  35. package/dist/cli/tui/utils/calldata-formatter.js.map +1 -0
  36. package/dist/cli/tui/utils/help-data.d.ts +15 -0
  37. package/dist/cli/tui/utils/help-data.d.ts.map +1 -0
  38. package/dist/cli/tui/utils/help-data.js +88 -0
  39. package/dist/cli/tui/utils/help-data.js.map +1 -0
  40. package/dist/cli/tui/utils/index.d.ts +11 -0
  41. package/dist/cli/tui/utils/index.d.ts.map +1 -1
  42. package/dist/cli/tui/utils/index.js +24 -1
  43. package/dist/cli/tui/utils/index.js.map +1 -1
  44. package/dist/cli/tui/utils/markdown-parser.d.ts +11 -0
  45. package/dist/cli/tui/utils/markdown-parser.d.ts.map +1 -0
  46. package/dist/cli/tui/utils/markdown-parser.js +100 -0
  47. package/dist/cli/tui/utils/markdown-parser.js.map +1 -0
  48. package/dist/cli/tui/utils/proposal-detail-helpers.d.ts +17 -0
  49. package/dist/cli/tui/utils/proposal-detail-helpers.d.ts.map +1 -0
  50. package/dist/cli/tui/utils/proposal-detail-helpers.js +46 -0
  51. package/dist/cli/tui/utils/proposal-detail-helpers.js.map +1 -0
  52. package/dist/cli/tui/utils/settings-data.d.ts +36 -0
  53. package/dist/cli/tui/utils/settings-data.d.ts.map +1 -0
  54. package/dist/cli/tui/utils/settings-data.js +220 -0
  55. package/dist/cli/tui/utils/settings-data.js.map +1 -0
  56. package/dist/cli/tui/utils/stage-formatter.d.ts +13 -0
  57. package/dist/cli/tui/utils/stage-formatter.d.ts.map +1 -0
  58. package/dist/cli/tui/utils/stage-formatter.js +100 -0
  59. package/dist/cli/tui/utils/stage-formatter.js.map +1 -0
  60. package/dist/cli/tui/views/CalldataView.d.ts.map +1 -1
  61. package/dist/cli/tui/views/CalldataView.js +50 -117
  62. package/dist/cli/tui/views/CalldataView.js.map +1 -1
  63. package/dist/cli/tui/views/DescriptionView.d.ts.map +1 -1
  64. package/dist/cli/tui/views/DescriptionView.js +1 -85
  65. package/dist/cli/tui/views/DescriptionView.js.map +1 -1
  66. package/dist/cli/tui/views/ElectionView.d.ts.map +1 -1
  67. package/dist/cli/tui/views/ElectionView.js +268 -165
  68. package/dist/cli/tui/views/ElectionView.js.map +1 -1
  69. package/dist/cli/tui/views/HelpView.d.ts.map +1 -1
  70. package/dist/cli/tui/views/HelpView.js +1 -73
  71. package/dist/cli/tui/views/HelpView.js.map +1 -1
  72. package/dist/cli/tui/views/ProposalDetail.d.ts.map +1 -1
  73. package/dist/cli/tui/views/ProposalDetail.js +51 -78
  74. package/dist/cli/tui/views/ProposalDetail.js.map +1 -1
  75. package/dist/cli/tui/views/ProposalList.d.ts.map +1 -1
  76. package/dist/cli/tui/views/ProposalList.js +73 -64
  77. package/dist/cli/tui/views/ProposalList.js.map +1 -1
  78. package/dist/cli/tui/views/SettingsView.d.ts.map +1 -1
  79. package/dist/cli/tui/views/SettingsView.js +67 -122
  80. package/dist/cli/tui/views/SettingsView.js.map +1 -1
  81. package/dist/cli/tui/views/SimulationView.d.ts.map +1 -1
  82. package/dist/cli/tui/views/SimulationView.js +23 -20
  83. package/dist/cli/tui/views/SimulationView.js.map +1 -1
  84. package/dist/cli/tui/views/StageView.d.ts.map +1 -1
  85. package/dist/cli/tui/views/StageView.js +28 -114
  86. package/dist/cli/tui/views/StageView.js.map +1 -1
  87. package/dist/deduplication.d.ts +132 -0
  88. package/dist/deduplication.d.ts.map +1 -0
  89. package/dist/deduplication.js +270 -0
  90. package/dist/deduplication.js.map +1 -0
  91. package/dist/election.d.ts +141 -1
  92. package/dist/election.d.ts.map +1 -1
  93. package/dist/election.js +505 -88
  94. package/dist/election.js.map +1 -1
  95. package/dist/index.d.ts +4 -2
  96. package/dist/index.d.ts.map +1 -1
  97. package/dist/index.js +27 -3
  98. package/dist/index.js.map +1 -1
  99. package/dist/stages/builder.d.ts +4 -0
  100. package/dist/stages/builder.d.ts.map +1 -1
  101. package/dist/stages/builder.js +7 -0
  102. package/dist/stages/builder.js.map +1 -1
  103. package/dist/stages/voting.d.ts.map +1 -1
  104. package/dist/stages/voting.js +5 -4
  105. package/dist/stages/voting.js.map +1 -1
  106. package/dist/tracker/discovery.d.ts +39 -8
  107. package/dist/tracker/discovery.d.ts.map +1 -1
  108. package/dist/tracker/discovery.js +141 -12
  109. package/dist/tracker/discovery.js.map +1 -1
  110. package/dist/tracker.d.ts +24 -4
  111. package/dist/tracker.d.ts.map +1 -1
  112. package/dist/tracker.js +57 -8
  113. package/dist/tracker.js.map +1 -1
  114. package/dist/types/core.d.ts +1 -1
  115. package/dist/types/core.d.ts.map +1 -1
  116. package/dist/types/election.d.ts +88 -0
  117. package/dist/types/election.d.ts.map +1 -1
  118. package/dist/types/index.d.ts +2 -2
  119. package/dist/types/index.d.ts.map +1 -1
  120. package/dist/types/index.js.map +1 -1
  121. package/dist/types/stages.d.ts +6 -0
  122. package/dist/types/stages.d.ts.map +1 -1
  123. package/dist/types/stages.js.map +1 -1
  124. package/dist/types/tracking.d.ts +27 -1
  125. package/dist/types/tracking.d.ts.map +1 -1
  126. package/dist/utils/timing.d.ts +13 -0
  127. package/dist/utils/timing.d.ts.map +1 -1
  128. package/dist/utils/timing.js +35 -0
  129. package/dist/utils/timing.js.map +1 -1
  130. package/package.json +1 -1
@@ -20,29 +20,40 @@ function getTxHashFromCheckpoint(checkpoint) {
20
20
  }
21
21
  throw new Error("Cannot track discovery checkpoint");
22
22
  }
23
- function buildCliArgs(config, cachePath) {
24
- const args = ["run", "--cache", cachePath];
25
- // RPC URLs from config
26
- if (config.rpc.l1Url)
27
- args.push("--l1-rpc", config.rpc.l1Url);
28
- if (config.rpc.l2Url)
29
- args.push("--l2-rpc", config.rpc.l2Url);
30
- if (config.rpc.novaUrl)
31
- args.push("--nova-rpc", config.rpc.novaUrl);
32
- // Discovery settings
33
- if (config.discovery.defaultDays) {
34
- args.push("--max-age-days", config.discovery.defaultDays.toString());
35
- }
36
- if (config.discovery.startBlock) {
37
- args.push("--start-block", config.discovery.startBlock.toString());
38
- }
39
- if (config.discovery.chunkSize) {
40
- args.push("--l2-chunk-size", config.discovery.chunkSize.toString());
41
- }
42
- if (config.discovery.concurrency > 1) {
43
- args.push("--concurrency", config.discovery.concurrency.toString());
23
+ async function prepareExecutableTransactions(tracker, result) {
24
+ const executableStages = result.stages.filter((s) => s.status === "READY" || s.executable);
25
+ const prepared = [];
26
+ let errorCount = 0;
27
+ for (const stage of executableStages) {
28
+ try {
29
+ const prep = await tracker.prepareTransaction(stage, { stages: result.stages });
30
+ if (prep.success) {
31
+ prepared.push(prep.prepared);
32
+ }
33
+ }
34
+ catch {
35
+ errorCount++;
36
+ }
44
37
  }
45
- return args;
38
+ return { prepared, errorCount };
39
+ }
40
+ function buildCliArgs(config, cachePath) {
41
+ const { rpc, discovery } = config;
42
+ const optionalArgs = [
43
+ [!!rpc.l1Url, "--l1-rpc", rpc.l1Url ?? ""],
44
+ [!!rpc.l2Url, "--l2-rpc", rpc.l2Url ?? ""],
45
+ [!!rpc.novaUrl, "--nova-rpc", rpc.novaUrl ?? ""],
46
+ [!!discovery.defaultDays, "--max-age-days", String(discovery.defaultDays ?? "")],
47
+ [!!discovery.startBlock, "--start-block", String(discovery.startBlock ?? "")],
48
+ [!!discovery.chunkSize, "--l2-chunk-size", String(discovery.chunkSize ?? "")],
49
+ [discovery.concurrency > 1, "--concurrency", String(discovery.concurrency)],
50
+ ];
51
+ return [
52
+ "run",
53
+ "--cache",
54
+ cachePath,
55
+ ...optionalArgs.filter(([cond]) => cond).flatMap(([, flag, val]) => [flag, val]),
56
+ ];
46
57
  }
47
58
  function useTracker(options) {
48
59
  const [isTracking, setIsTracking] = (0, react_1.useState)(false);
@@ -114,26 +125,10 @@ function useTracker(options) {
114
125
  return null;
115
126
  setLastResult(result);
116
127
  if (result) {
117
- const prepared = [];
118
- let prepErrors = 0;
119
- for (const stage of result.stages) {
120
- if (stage.status === "READY" || stage.executable) {
121
- try {
122
- const prep = await tracker.prepareTransaction(stage, {
123
- stages: result.stages,
124
- });
125
- if (prep.success) {
126
- prepared.push(prep.prepared);
127
- }
128
- }
129
- catch {
130
- prepErrors++;
131
- }
132
- }
133
- }
128
+ const { prepared, errorCount } = await prepareExecutableTransactions(tracker, result);
134
129
  setPreparedTxs(prepared);
135
- if (prepErrors > 0 && prepared.length === 0) {
136
- setError(`Failed to prepare ${prepErrors} transaction(s)`);
130
+ if (errorCount > 0 && prepared.length === 0) {
131
+ setError(`Failed to prepare ${errorCount} transaction(s)`);
137
132
  }
138
133
  }
139
134
  return result;
@@ -1 +1 @@
1
- {"version":3,"file":"useTracker.js","sourceRoot":"","sources":["../../../../src/cli/tui/hooks/useTracker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useTracker.js","sourceRoot":"","sources":["../../../../src/cli/tui/hooks/useTracker.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Calldata formatting utilities for TUI display
3
+ */
4
+ import type { DecodedCalldata } from "../../../types/calldata.js";
5
+ export interface FormattedLine {
6
+ text: string;
7
+ indent: number;
8
+ foldable: boolean;
9
+ foldKey?: string;
10
+ foldedLineCount?: number;
11
+ isFoldedContent?: boolean;
12
+ }
13
+ export declare function formatDecodedCalldata(decoded: DecodedCalldata, indent?: number, keyPrefix?: string): FormattedLine[];
14
+ export declare function filterVisibleLines(allLines: FormattedLine[], expandedKeys: Set<string>): FormattedLine[];
15
+ export declare function getAllFoldableKeys(lines: FormattedLine[]): string[];
16
+ export declare function toggleFoldKey(expandedKeys: Set<string>, foldKey: string): Set<string>;
17
+ //# sourceMappingURL=calldata-formatter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"calldata-formatter.d.ts","sourceRoot":"","sources":["../../../../src/cli/tui/utils/calldata-formatter.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,eAAe,EAAoB,MAAM,4BAA4B,CAAC;AAEpF,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAuDD,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,eAAe,EACxB,MAAM,SAAI,EACV,SAAS,SAAS,GACjB,aAAa,EAAE,CAoBjB;AAED,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,aAAa,EAAE,EACzB,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,GACxB,aAAa,EAAE,CAKjB;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,aAAa,EAAE,GAAG,MAAM,EAAE,CAEnE;AAED,wBAAgB,aAAa,CAAC,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAQrF"}
@@ -0,0 +1,91 @@
1
+ "use strict";
2
+ /**
3
+ * Calldata formatting utilities for TUI display
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.formatDecodedCalldata = formatDecodedCalldata;
7
+ exports.filterVisibleLines = filterVisibleLines;
8
+ exports.getAllFoldableKeys = getAllFoldableKeys;
9
+ exports.toggleFoldKey = toggleFoldKey;
10
+ const text_js_1 = require("./text.js");
11
+ const FOLD_THRESHOLD = 100;
12
+ function formatParameter(param, indent, keyPrefix) {
13
+ const lines = [];
14
+ const foldKey = `${keyPrefix}-${param.name}`;
15
+ let value = param.displayValue;
16
+ if (param.addressLabel) {
17
+ value = `${param.displayValue} [${param.addressLabel}]`;
18
+ }
19
+ const isFoldable = value.length > FOLD_THRESHOLD;
20
+ const wrappedLines = isFoldable ? (0, text_js_1.wrapText)(value, 80) : [value];
21
+ lines.push({
22
+ text: `${param.name} (${param.type}): ${wrappedLines[0]}`,
23
+ indent,
24
+ foldable: isFoldable,
25
+ foldKey: isFoldable ? foldKey : undefined,
26
+ foldedLineCount: isFoldable ? wrappedLines.length - 1 : undefined,
27
+ });
28
+ if (isFoldable && wrappedLines.length > 1) {
29
+ for (let i = 1; i < wrappedLines.length; i++) {
30
+ lines.push({
31
+ text: wrappedLines[i],
32
+ indent: indent + 1,
33
+ foldable: false,
34
+ isFoldedContent: true,
35
+ foldKey,
36
+ });
37
+ }
38
+ }
39
+ if (param.nested) {
40
+ lines.push({ text: "└─ [NESTED]", indent: indent + 1, foldable: false });
41
+ lines.push(...formatDecodedCalldata(param.nested, indent + 2, `${foldKey}-nested`));
42
+ }
43
+ if (param.nestedArray && param.nestedArray.length > 0) {
44
+ param.nestedArray.forEach((nested, i) => {
45
+ lines.push({ text: `[${i}]:`, indent: indent + 1, foldable: false });
46
+ lines.push(...formatDecodedCalldata(nested, indent + 2, `${foldKey}-arr-${i}`));
47
+ });
48
+ }
49
+ return lines;
50
+ }
51
+ function formatDecodedCalldata(decoded, indent = 0, keyPrefix = "root") {
52
+ const lines = [];
53
+ let header;
54
+ if (decoded.isRetryable) {
55
+ header = `Retryable Ticket → ${decoded.targetChain}`;
56
+ }
57
+ else if (decoded.signature) {
58
+ header = decoded.signature;
59
+ }
60
+ else {
61
+ header = `Unknown function (${decoded.selector})`;
62
+ }
63
+ lines.push({ text: header, indent, foldable: false });
64
+ if (decoded.parameters) {
65
+ decoded.parameters.forEach((param, i) => {
66
+ lines.push(...formatParameter(param, indent + 1, `${keyPrefix}-p${i}`));
67
+ });
68
+ }
69
+ return lines;
70
+ }
71
+ function filterVisibleLines(allLines, expandedKeys) {
72
+ return allLines.filter((line) => {
73
+ if (!line.isFoldedContent)
74
+ return true;
75
+ return line.foldKey && expandedKeys.has(line.foldKey);
76
+ });
77
+ }
78
+ function getAllFoldableKeys(lines) {
79
+ return lines.filter((l) => l.foldable && l.foldKey).map((l) => l.foldKey);
80
+ }
81
+ function toggleFoldKey(expandedKeys, foldKey) {
82
+ const next = new Set(expandedKeys);
83
+ if (next.has(foldKey)) {
84
+ next.delete(foldKey);
85
+ }
86
+ else {
87
+ next.add(foldKey);
88
+ }
89
+ return next;
90
+ }
91
+ //# sourceMappingURL=calldata-formatter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"calldata-formatter.js","sourceRoot":"","sources":["../../../../src/cli/tui/utils/calldata-formatter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Help view section data - keyboard shortcuts reference
3
+ */
4
+ export interface HelpShortcut {
5
+ key: string;
6
+ description: string;
7
+ note?: string;
8
+ }
9
+ export interface HelpSection {
10
+ title: string;
11
+ icon?: string;
12
+ shortcuts: HelpShortcut[];
13
+ }
14
+ export declare const HELP_SECTIONS: HelpSection[];
15
+ //# sourceMappingURL=help-data.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"help-data.d.ts","sourceRoot":"","sources":["../../../../src/cli/tui/utils/help-data.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,YAAY,EAAE,CAAC;CAC3B;AAED,eAAO,MAAM,aAAa,EAAE,WAAW,EAgFtC,CAAC"}
@@ -0,0 +1,88 @@
1
+ "use strict";
2
+ /**
3
+ * Help view section data - keyboard shortcuts reference
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.HELP_SECTIONS = void 0;
7
+ exports.HELP_SECTIONS = [
8
+ {
9
+ title: "Navigation (Vim-style)",
10
+ icon: "⌨",
11
+ shortcuts: [
12
+ { key: "j/↓", description: "Move down" },
13
+ { key: "k/↑", description: "Move up" },
14
+ { key: "Ctrl+d/PgDn", description: "Page down (10 items)" },
15
+ { key: "Ctrl+u/PgUp", description: "Page up (10 items)" },
16
+ { key: "g", description: "Jump to top" },
17
+ { key: "G", description: "Jump to bottom" },
18
+ { key: "Enter", description: "Select / Enter view" },
19
+ { key: "b/Esc", description: "Go back" },
20
+ ],
21
+ },
22
+ {
23
+ title: "List View",
24
+ icon: "📋",
25
+ shortcuts: [
26
+ { key: "/", description: "Start search", note: "Enter to finish, Esc to clear" },
27
+ { key: "Tab", description: "Cycle filter", note: "all → active → complete → timelocks" },
28
+ { key: "o", description: "Cycle sort", note: "newest → oldest → progress → status" },
29
+ { key: "R", description: "Reload cache from disk" },
30
+ { key: "d", description: "Discover proposals", note: "requires RPC" },
31
+ { key: "e", description: "Election status", note: "requires RPC" },
32
+ { key: "S", description: "Settings" },
33
+ { key: "q", description: "Quit" },
34
+ ],
35
+ },
36
+ {
37
+ title: "Detail View",
38
+ icon: "📄",
39
+ shortcuts: [
40
+ { key: "1-7", description: "Jump to stage number" },
41
+ { key: "y", description: "Copy proposal/operation ID" },
42
+ { key: "Y", description: "Copy transaction hash" },
43
+ { key: "d", description: "View description" },
44
+ { key: "c", description: "View calldata" },
45
+ { key: "s", description: "View simulation data" },
46
+ { key: "r", description: "Re-track proposal", note: "requires RPC" },
47
+ ],
48
+ },
49
+ {
50
+ title: "Calldata View",
51
+ icon: "🔍",
52
+ shortcuts: [
53
+ { key: "←/→", description: "Navigate between actions" },
54
+ { key: "Enter", description: "Toggle fold/unfold" },
55
+ { key: "e", description: "Expand all" },
56
+ { key: "c", description: "Collapse all" },
57
+ ],
58
+ },
59
+ {
60
+ title: "Election View",
61
+ icon: "🗳",
62
+ shortcuts: [
63
+ { key: "j/k", description: "Navigate elections" },
64
+ { key: "Enter/l", description: "View detailed info", note: "contenders, nominees, members" },
65
+ { key: "b/Esc", description: "Go back / Close details" },
66
+ ],
67
+ },
68
+ {
69
+ title: "Settings View",
70
+ icon: "⚙",
71
+ shortcuts: [
72
+ { key: "j/k", description: "Navigate settings" },
73
+ { key: "Enter/Space", description: "Edit or toggle setting" },
74
+ { key: "r", description: "Reset all to defaults" },
75
+ { key: "b/Esc", description: "Save and close" },
76
+ ],
77
+ },
78
+ {
79
+ title: "Tips",
80
+ icon: "💡",
81
+ shortcuts: [
82
+ { key: "?", description: "Show/hide this help (works in any view)" },
83
+ { key: "Search", description: "Matches title and proposal ID" },
84
+ { key: "RPC", description: "Use --l2-rpc for tracking features" },
85
+ ],
86
+ },
87
+ ];
88
+ //# sourceMappingURL=help-data.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"help-data.js","sourceRoot":"","sources":["../../../../src/cli/tui/utils/help-data.ts"],"names":[],"mappings":"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"}
@@ -2,4 +2,15 @@ export { wrapText, truncate } from "./text.js";
2
2
  export { getTerminalSize, getVisibleRows } from "./terminal.js";
3
3
  export type { TerminalSize } from "./terminal.js";
4
4
  export { copyToClipboard, formatForCopy } from "./clipboard.js";
5
+ export { formatDecodedCalldata, filterVisibleLines, getAllFoldableKeys, toggleFoldKey, } from "./calldata-formatter.js";
6
+ export type { FormattedLine } from "./calldata-formatter.js";
7
+ export { CHAIN_TO_CHAIN_ID, safeStringify, formatValue, formatStageData, } from "./stage-formatter.js";
8
+ export type { StageDataItem } from "./stage-formatter.js";
9
+ export { parseMarkdown } from "./markdown-parser.js";
10
+ export type { MarkdownLine, MarkdownLineType } from "./markdown-parser.js";
11
+ export { getSettingItems, updateConfigValue, groupSettingItems, SECTION_TITLES, } from "./settings-data.js";
12
+ export type { SettingSection, SettingItem, GroupedSettingItems } from "./settings-data.js";
13
+ export { HELP_SECTIONS } from "./help-data.js";
14
+ export type { HelpSection, HelpShortcut } from "./help-data.js";
15
+ export { formatDate, getTxHash, getProposalIdDisplay } from "./proposal-detail-helpers.js";
5
16
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/cli/tui/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAChE,YAAY,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/cli/tui/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAChE,YAAY,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAChE,OAAO,EACL,qBAAqB,EACrB,kBAAkB,EAClB,kBAAkB,EAClB,aAAa,GACd,MAAM,yBAAyB,CAAC;AACjC,YAAY,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EACL,iBAAiB,EACjB,aAAa,EACb,WAAW,EACX,eAAe,GAChB,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,YAAY,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC3E,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,iBAAiB,EACjB,cAAc,GACf,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EAAE,cAAc,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC3F,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAChE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.formatForCopy = exports.copyToClipboard = exports.getVisibleRows = exports.getTerminalSize = exports.truncate = exports.wrapText = void 0;
3
+ exports.getProposalIdDisplay = exports.getTxHash = exports.formatDate = exports.HELP_SECTIONS = exports.SECTION_TITLES = exports.groupSettingItems = exports.updateConfigValue = exports.getSettingItems = exports.parseMarkdown = exports.formatStageData = exports.formatValue = exports.safeStringify = exports.CHAIN_TO_CHAIN_ID = exports.toggleFoldKey = exports.getAllFoldableKeys = exports.filterVisibleLines = exports.formatDecodedCalldata = exports.formatForCopy = exports.copyToClipboard = exports.getVisibleRows = exports.getTerminalSize = exports.truncate = exports.wrapText = void 0;
4
4
  var text_js_1 = require("./text.js");
5
5
  Object.defineProperty(exports, "wrapText", { enumerable: true, get: function () { return text_js_1.wrapText; } });
6
6
  Object.defineProperty(exports, "truncate", { enumerable: true, get: function () { return text_js_1.truncate; } });
@@ -10,4 +10,27 @@ Object.defineProperty(exports, "getVisibleRows", { enumerable: true, get: functi
10
10
  var clipboard_js_1 = require("./clipboard.js");
11
11
  Object.defineProperty(exports, "copyToClipboard", { enumerable: true, get: function () { return clipboard_js_1.copyToClipboard; } });
12
12
  Object.defineProperty(exports, "formatForCopy", { enumerable: true, get: function () { return clipboard_js_1.formatForCopy; } });
13
+ var calldata_formatter_js_1 = require("./calldata-formatter.js");
14
+ Object.defineProperty(exports, "formatDecodedCalldata", { enumerable: true, get: function () { return calldata_formatter_js_1.formatDecodedCalldata; } });
15
+ Object.defineProperty(exports, "filterVisibleLines", { enumerable: true, get: function () { return calldata_formatter_js_1.filterVisibleLines; } });
16
+ Object.defineProperty(exports, "getAllFoldableKeys", { enumerable: true, get: function () { return calldata_formatter_js_1.getAllFoldableKeys; } });
17
+ Object.defineProperty(exports, "toggleFoldKey", { enumerable: true, get: function () { return calldata_formatter_js_1.toggleFoldKey; } });
18
+ var stage_formatter_js_1 = require("./stage-formatter.js");
19
+ Object.defineProperty(exports, "CHAIN_TO_CHAIN_ID", { enumerable: true, get: function () { return stage_formatter_js_1.CHAIN_TO_CHAIN_ID; } });
20
+ Object.defineProperty(exports, "safeStringify", { enumerable: true, get: function () { return stage_formatter_js_1.safeStringify; } });
21
+ Object.defineProperty(exports, "formatValue", { enumerable: true, get: function () { return stage_formatter_js_1.formatValue; } });
22
+ Object.defineProperty(exports, "formatStageData", { enumerable: true, get: function () { return stage_formatter_js_1.formatStageData; } });
23
+ var markdown_parser_js_1 = require("./markdown-parser.js");
24
+ Object.defineProperty(exports, "parseMarkdown", { enumerable: true, get: function () { return markdown_parser_js_1.parseMarkdown; } });
25
+ var settings_data_js_1 = require("./settings-data.js");
26
+ Object.defineProperty(exports, "getSettingItems", { enumerable: true, get: function () { return settings_data_js_1.getSettingItems; } });
27
+ Object.defineProperty(exports, "updateConfigValue", { enumerable: true, get: function () { return settings_data_js_1.updateConfigValue; } });
28
+ Object.defineProperty(exports, "groupSettingItems", { enumerable: true, get: function () { return settings_data_js_1.groupSettingItems; } });
29
+ Object.defineProperty(exports, "SECTION_TITLES", { enumerable: true, get: function () { return settings_data_js_1.SECTION_TITLES; } });
30
+ var help_data_js_1 = require("./help-data.js");
31
+ Object.defineProperty(exports, "HELP_SECTIONS", { enumerable: true, get: function () { return help_data_js_1.HELP_SECTIONS; } });
32
+ var proposal_detail_helpers_js_1 = require("./proposal-detail-helpers.js");
33
+ Object.defineProperty(exports, "formatDate", { enumerable: true, get: function () { return proposal_detail_helpers_js_1.formatDate; } });
34
+ Object.defineProperty(exports, "getTxHash", { enumerable: true, get: function () { return proposal_detail_helpers_js_1.getTxHash; } });
35
+ Object.defineProperty(exports, "getProposalIdDisplay", { enumerable: true, get: function () { return proposal_detail_helpers_js_1.getProposalIdDisplay; } });
13
36
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/cli/tui/utils/index.ts"],"names":[],"mappings":";;;AAAA,qCAA+C;AAAtC,mGAAA,QAAQ,OAAA;AAAE,mGAAA,QAAQ,OAAA;AAC3B,6CAAgE;AAAvD,8GAAA,eAAe,OAAA;AAAE,6GAAA,cAAc,OAAA;AAExC,+CAAgE;AAAvD,+GAAA,eAAe,OAAA;AAAE,6GAAA,aAAa,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/cli/tui/utils/index.ts"],"names":[],"mappings":";;;AAAA,qCAA+C;AAAtC,mGAAA,QAAQ,OAAA;AAAE,mGAAA,QAAQ,OAAA;AAC3B,6CAAgE;AAAvD,8GAAA,eAAe,OAAA;AAAE,6GAAA,cAAc,OAAA;AAExC,+CAAgE;AAAvD,+GAAA,eAAe,OAAA;AAAE,6GAAA,aAAa,OAAA;AACvC,iEAKiC;AAJ/B,8HAAA,qBAAqB,OAAA;AACrB,2HAAA,kBAAkB,OAAA;AAClB,2HAAA,kBAAkB,OAAA;AAClB,sHAAA,aAAa,OAAA;AAGf,2DAK8B;AAJ5B,uHAAA,iBAAiB,OAAA;AACjB,mHAAA,aAAa,OAAA;AACb,iHAAA,WAAW,OAAA;AACX,qHAAA,eAAe,OAAA;AAGjB,2DAAqD;AAA5C,mHAAA,aAAa,OAAA;AAEtB,uDAK4B;AAJ1B,mHAAA,eAAe,OAAA;AACf,qHAAA,iBAAiB,OAAA;AACjB,qHAAA,iBAAiB,OAAA;AACjB,kHAAA,cAAc,OAAA;AAGhB,+CAA+C;AAAtC,6GAAA,aAAa,OAAA;AAEtB,2EAA2F;AAAlF,wHAAA,UAAU,OAAA;AAAE,uHAAA,SAAS,OAAA;AAAE,kIAAA,oBAAoB,OAAA"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Markdown parsing utilities for TUI display
3
+ */
4
+ export type MarkdownLineType = "normal" | "h1" | "h2" | "h3" | "bullet" | "link" | "code" | "separator";
5
+ export interface MarkdownLine {
6
+ text: string;
7
+ type: MarkdownLineType;
8
+ indent: number;
9
+ }
10
+ export declare function parseMarkdown(text: string, width: number): MarkdownLine[];
11
+ //# sourceMappingURL=markdown-parser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markdown-parser.d.ts","sourceRoot":"","sources":["../../../../src/cli/tui/utils/markdown-parser.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,MAAM,gBAAgB,GACxB,QAAQ,GACR,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,QAAQ,GACR,MAAM,GACN,MAAM,GACN,WAAW,CAAC;AAEhB,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,gBAAgB,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;CAChB;AAkCD,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,YAAY,EAAE,CA6EzE"}
@@ -0,0 +1,100 @@
1
+ "use strict";
2
+ /**
3
+ * Markdown parsing utilities for TUI display
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.parseMarkdown = parseMarkdown;
7
+ function wrapTextToLines(text, width, type, indent, result) {
8
+ const safeWidth = Math.max(10, width);
9
+ const words = text.split(/\s+/);
10
+ let currentLine = "";
11
+ let currentIndent = indent;
12
+ for (const word of words) {
13
+ if (currentLine.length === 0) {
14
+ currentLine = word;
15
+ }
16
+ else if (currentLine.length + 1 + word.length <= safeWidth) {
17
+ currentLine += " " + word;
18
+ }
19
+ else {
20
+ result.push({ text: currentLine, type, indent: currentIndent });
21
+ currentLine = word;
22
+ // Continuation lines of bullets get extra indent
23
+ if (type === "bullet" && currentIndent === 2) {
24
+ currentIndent = 4;
25
+ }
26
+ }
27
+ }
28
+ if (currentLine.length > 0) {
29
+ result.push({ text: currentLine, type, indent: currentIndent });
30
+ }
31
+ }
32
+ function parseMarkdown(text, width) {
33
+ const result = [];
34
+ const lines = text.split("\n");
35
+ // Guard against very narrow terminals
36
+ const safeWidth = Math.max(20, width);
37
+ for (const rawLine of lines) {
38
+ const trimmed = rawLine.trim();
39
+ // Empty line
40
+ if (trimmed.length === 0) {
41
+ result.push({ text: "", type: "normal", indent: 0 });
42
+ continue;
43
+ }
44
+ // Horizontal rule
45
+ if (/^[-*_]{3,}$/.test(trimmed)) {
46
+ result.push({
47
+ text: "─".repeat(Math.min(safeWidth - 4, 60)),
48
+ type: "separator",
49
+ indent: 0,
50
+ });
51
+ continue;
52
+ }
53
+ // Headers
54
+ if (trimmed.startsWith("### ")) {
55
+ result.push({ text: trimmed.slice(4), type: "h3", indent: 0 });
56
+ continue;
57
+ }
58
+ if (trimmed.startsWith("## ")) {
59
+ result.push({ text: trimmed.slice(3), type: "h2", indent: 0 });
60
+ continue;
61
+ }
62
+ if (trimmed.startsWith("# ")) {
63
+ result.push({ text: trimmed.slice(2), type: "h1", indent: 0 });
64
+ continue;
65
+ }
66
+ // Bullet points
67
+ if (/^[-*+] /.test(trimmed)) {
68
+ const bulletText = trimmed.slice(2);
69
+ wrapTextToLines(bulletText, safeWidth - 6, "bullet", 2, result);
70
+ continue;
71
+ }
72
+ // Numbered lists
73
+ if (/^\d+\. /.test(trimmed)) {
74
+ const match = trimmed.match(/^(\d+)\. /);
75
+ if (match) {
76
+ const numText = trimmed.slice(match[0].length);
77
+ const textWidth = safeWidth - 6;
78
+ result.push({
79
+ text: `${match[1]}. ${numText.slice(0, textWidth)}`,
80
+ type: "bullet",
81
+ indent: 0,
82
+ });
83
+ if (numText.length > textWidth) {
84
+ wrapTextToLines(numText.slice(textWidth), textWidth, "normal", 3, result);
85
+ }
86
+ continue;
87
+ }
88
+ }
89
+ // Code blocks (just show as-is with code styling)
90
+ if (trimmed.startsWith("```")) {
91
+ continue; // Skip code fence markers
92
+ }
93
+ // Links - simplify [text](url) to just text
94
+ const processedLine = trimmed.replace(/\[([^\]]+)\]\([^)]+\)/g, "$1");
95
+ // Normal paragraph
96
+ wrapTextToLines(processedLine, safeWidth - 4, "normal", 0, result);
97
+ }
98
+ return result;
99
+ }
100
+ //# sourceMappingURL=markdown-parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markdown-parser.js","sourceRoot":"","sources":["../../../../src/cli/tui/utils/markdown-parser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Helper functions for ProposalDetail component
3
+ */
4
+ import type { TrackingInput } from "../../../types/index.js";
5
+ /**
6
+ * Format a Unix timestamp to locale string
7
+ */
8
+ export declare function formatDate(timestamp: number | null): string;
9
+ /**
10
+ * Extract transaction hash from tracking input
11
+ */
12
+ export declare function getTxHash(input: TrackingInput): string;
13
+ /**
14
+ * Get display-friendly proposal or operation ID from tracking input
15
+ */
16
+ export declare function getProposalIdDisplay(input: TrackingInput): string;
17
+ //# sourceMappingURL=proposal-detail-helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proposal-detail-helpers.d.ts","sourceRoot":"","sources":["../../../../src/cli/tui/utils/proposal-detail-helpers.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAE7D;;GAEG;AACH,wBAAgB,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAG3D;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,aAAa,GAAG,MAAM,CAUtD;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,aAAa,GAAG,MAAM,CAWjE"}
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ /**
3
+ * Helper functions for ProposalDetail component
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.formatDate = formatDate;
7
+ exports.getTxHash = getTxHash;
8
+ exports.getProposalIdDisplay = getProposalIdDisplay;
9
+ /**
10
+ * Format a Unix timestamp to locale string
11
+ */
12
+ function formatDate(timestamp) {
13
+ if (timestamp === null)
14
+ return "Unknown";
15
+ return new Date(timestamp).toLocaleString();
16
+ }
17
+ /**
18
+ * Extract transaction hash from tracking input
19
+ */
20
+ function getTxHash(input) {
21
+ switch (input.type) {
22
+ case "governor":
23
+ return input.creationTxHash;
24
+ case "timelock":
25
+ return input.scheduledTxHash;
26
+ case "discovery":
27
+ case "election":
28
+ return "";
29
+ }
30
+ }
31
+ /**
32
+ * Get display-friendly proposal or operation ID from tracking input
33
+ */
34
+ function getProposalIdDisplay(input) {
35
+ switch (input.type) {
36
+ case "governor":
37
+ return input.proposalId;
38
+ case "timelock":
39
+ return input.operationId;
40
+ case "discovery":
41
+ return input.id;
42
+ case "election":
43
+ return `election-${input.electionIndex}`;
44
+ }
45
+ }
46
+ //# sourceMappingURL=proposal-detail-helpers.js.map