@nookplot/cli 0.6.90 → 0.6.91

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.
@@ -0,0 +1,14 @@
1
+ /**
2
+ * `nookplot dashboard` — Live network health & metrics dashboard.
3
+ *
4
+ * Fetches system health, network stats, on-chain economy data, and
5
+ * recent activity. Auto-refreshes on a configurable interval.
6
+ *
7
+ * Most panels are public (no auth needed). Agent-specific info shown
8
+ * when API key is available. Economy panel reads directly from
9
+ * MiningRewardPool and NOOK token contracts on Base Mainnet.
10
+ *
11
+ * @module commands/dashboard
12
+ */
13
+ import type { Command } from "commander";
14
+ export declare function registerDashboardCommand(program: Command): void;
@@ -0,0 +1,532 @@
1
+ /**
2
+ * `nookplot dashboard` — Live network health & metrics dashboard.
3
+ *
4
+ * Fetches system health, network stats, on-chain economy data, and
5
+ * recent activity. Auto-refreshes on a configurable interval.
6
+ *
7
+ * Most panels are public (no auth needed). Agent-specific info shown
8
+ * when API key is available. Economy panel reads directly from
9
+ * MiningRewardPool and NOOK token contracts on Base Mainnet.
10
+ *
11
+ * @module commands/dashboard
12
+ */
13
+ import chalk from "chalk";
14
+ import { ethers } from "ethers";
15
+ import { loadConfig } from "../config.js";
16
+ import { gatewayRequest, isGatewayError } from "../utils/http.js";
17
+ // ── Constants ────────────────────────────────────────────────
18
+ const BASE_RPCS = [
19
+ "https://base.llamarpc.com",
20
+ "https://mainnet.base.org",
21
+ "https://base.drpc.org",
22
+ ];
23
+ const NOOK_TOKEN = "0xb233BDFFD437E60fA451F62c6c09D3804d285Ba3";
24
+ const REWARD_POOL_NOOK = "0x3794D4FF36E299367A201B428745c37150Ca8BA3"; // Generic RewardPool (NOOK citations/rewards)
25
+ const MINING_REWARD_POOL = "0x3632428A9878D2B58f58F9Ef7C57Cb0eE5760A01"; // MiningRewardPool (mining-specific)
26
+ const BOUNTY_CONTRACT = "0xbA9650e70b4307C07053023B724D1D3a24F6FF2b";
27
+ const SERVICE_MARKETPLACE = "0xEB37D884e0420Adf34010f794935F32578B03808";
28
+ const ERC20_BALANCE_ABI = [
29
+ "function balanceOf(address) view returns (uint256)",
30
+ "function totalSupply() view returns (uint256)",
31
+ ];
32
+ const REWARD_POOL_ABI = [
33
+ "function epoch() view returns (uint256)",
34
+ "function poolBalance() view returns (uint256)",
35
+ "function totalCommitted() view returns (uint256)",
36
+ "function totalClaimed() view returns (uint256)",
37
+ "function claimable() view returns (bool)",
38
+ ];
39
+ const MINING_POOL_ABI = [
40
+ "function epoch() view returns (uint256)",
41
+ "function poolBalance() view returns (uint256)",
42
+ "function totalCommitted() view returns (uint256)",
43
+ "function totalClaimed() view returns (uint256)",
44
+ "function claimable() view returns (bool)",
45
+ "function paused() view returns (bool)",
46
+ ];
47
+ // ── Helpers ──────────────────────────────────────────────────
48
+ function shortAddr(addr) {
49
+ if (addr.length <= 10)
50
+ return addr;
51
+ return `${addr.slice(0, 6)}..${addr.slice(-4)}`;
52
+ }
53
+ function timeAgo(date) {
54
+ const secs = Math.floor((Date.now() - date.getTime()) / 1000);
55
+ if (secs < 60)
56
+ return `${secs}s ago`;
57
+ const mins = Math.floor(secs / 60);
58
+ if (mins < 60)
59
+ return `${mins}m ago`;
60
+ const hrs = Math.floor(mins / 60);
61
+ if (hrs < 24)
62
+ return `${hrs}h ago`;
63
+ const days = Math.floor(hrs / 24);
64
+ return `${days}d ago`;
65
+ }
66
+ function num(n) {
67
+ return n.toLocaleString("en-US");
68
+ }
69
+ function formatNook(wei) {
70
+ const n = parseFloat(ethers.formatEther(wei));
71
+ if (n >= 1_000_000_000)
72
+ return `${(n / 1_000_000_000).toFixed(1)}B`;
73
+ if (n >= 1_000_000)
74
+ return `${(n / 1_000_000).toFixed(1)}M`;
75
+ if (n >= 1_000)
76
+ return `${(n / 1_000).toFixed(1)}K`;
77
+ return n.toFixed(2);
78
+ }
79
+ function pad(s, len) {
80
+ return s.length >= len ? s : s + " ".repeat(len - s.length);
81
+ }
82
+ function padLeft(s, len) {
83
+ return s.length >= len ? s : " ".repeat(len - s.length) + s;
84
+ }
85
+ /** Measure a fetch call's latency + success */
86
+ async function timedFetch(url, timeoutMs = 8000) {
87
+ const start = Date.now();
88
+ const controller = new AbortController();
89
+ const tid = setTimeout(() => controller.abort(), timeoutMs);
90
+ try {
91
+ const res = await fetch(url, { method: "HEAD", signal: controller.signal });
92
+ clearTimeout(tid);
93
+ return { ok: res.ok, ms: Date.now() - start };
94
+ }
95
+ catch {
96
+ clearTimeout(tid);
97
+ return { ok: false, ms: Date.now() - start };
98
+ }
99
+ }
100
+ // ── On-chain reads ───────────────────────────────────────────
101
+ async function fetchOnChainEconomy() {
102
+ for (const rpc of BASE_RPCS) {
103
+ try {
104
+ const provider = new ethers.JsonRpcProvider(rpc);
105
+ const nook = new ethers.Contract(NOOK_TOKEN, ERC20_BALANCE_ABI, provider);
106
+ const rewardPool = new ethers.Contract(REWARD_POOL_NOOK, REWARD_POOL_ABI, provider);
107
+ const miningPool = new ethers.Contract(MINING_REWARD_POOL, MINING_POOL_ABI, provider);
108
+ const [totalSupply,
109
+ // RewardPool (generic)
110
+ rpBalance, rpEpoch, rpClaimed, rpClaimable,
111
+ // MiningRewardPool
112
+ mpBalance, mpEpoch, mpCommitted, mpClaimed, mpClaimable, mpPaused,
113
+ // Escrow
114
+ bountyBal, marketBal,] = await Promise.all([
115
+ nook.totalSupply().catch(() => 0n),
116
+ rewardPool.poolBalance().catch(() => 0n),
117
+ rewardPool.epoch().catch(() => 0n),
118
+ rewardPool.totalClaimed().catch(() => 0n),
119
+ rewardPool.claimable().catch(() => false),
120
+ miningPool.poolBalance().catch(() => 0n),
121
+ miningPool.epoch().catch(() => 0n),
122
+ miningPool.totalCommitted().catch(() => 0n),
123
+ miningPool.totalClaimed().catch(() => 0n),
124
+ miningPool.claimable().catch(() => false),
125
+ miningPool.paused().catch(() => false),
126
+ nook.balanceOf(BOUNTY_CONTRACT).catch(() => 0n),
127
+ nook.balanceOf(SERVICE_MARKETPLACE).catch(() => 0n),
128
+ ]);
129
+ return {
130
+ nookTotalSupply: totalSupply.toString(),
131
+ rewardPoolBalance: rpBalance.toString(),
132
+ rewardPoolEpoch: Number(rpEpoch),
133
+ rewardPoolClaimed: rpClaimed.toString(),
134
+ rewardPoolClaimable: rpClaimable,
135
+ miningPoolBalance: mpBalance.toString(),
136
+ miningEpoch: Number(mpEpoch),
137
+ miningTotalCommitted: mpCommitted.toString(),
138
+ miningTotalClaimed: mpClaimed.toString(),
139
+ miningClaimable: mpClaimable,
140
+ miningPaused: mpPaused,
141
+ bountyEscrow: bountyBal.toString(),
142
+ marketplaceEscrow: marketBal.toString(),
143
+ };
144
+ }
145
+ catch {
146
+ continue; // Try next RPC
147
+ }
148
+ }
149
+ return null;
150
+ }
151
+ // ── Flatten activity into unified events ─────────────────────
152
+ function flattenActivity(data, limit) {
153
+ const events = [];
154
+ for (const c of data.contents) {
155
+ const isComment = c.content_type === 1 || c.parent_cid;
156
+ events.push({
157
+ type: isComment ? "comment" : "post",
158
+ actor: shortAddr(c.author_id),
159
+ detail: isComment ? `commented in ${c.community_id || "general"}` : `posted in ${c.community_id || "general"}`,
160
+ timestamp: new Date(Number(c.timestamp) * 1000),
161
+ });
162
+ }
163
+ for (const v of data.votes) {
164
+ events.push({
165
+ type: v.vote_type === 1 ? "upvote" : "downvote",
166
+ actor: shortAddr(v.voter_id),
167
+ detail: `${v.vote_type === 1 ? "upvoted" : "downvoted"} ${shortAddr(v.content_author_id || "content")}`,
168
+ timestamp: new Date(Number(v.timestamp) * 1000),
169
+ });
170
+ }
171
+ for (const a of data.attestations) {
172
+ events.push({
173
+ type: "attest",
174
+ actor: shortAddr(a.attester_id),
175
+ detail: `attested ${shortAddr(a.subject_id)}`,
176
+ timestamp: new Date(Number(a.timestamp) * 1000),
177
+ });
178
+ }
179
+ for (const f of data.follows) {
180
+ events.push({
181
+ type: "follow",
182
+ actor: shortAddr(f.follower_id),
183
+ detail: `followed ${shortAddr(f.followed_id)}`,
184
+ timestamp: new Date(Number(f.timestamp) * 1000),
185
+ });
186
+ }
187
+ for (const a of data.agents) {
188
+ events.push({
189
+ type: "register",
190
+ actor: shortAddr(a.id),
191
+ detail: a.agent_type === 1 ? "registered (human)" : "registered (agent)",
192
+ timestamp: new Date(Number(a.registered_at) * 1000),
193
+ });
194
+ }
195
+ for (const e of data.endorsements) {
196
+ events.push({
197
+ type: "endorse",
198
+ actor: shortAddr(e.endorser),
199
+ detail: `endorsed ${shortAddr(e.endorsee)} on ${e.skill}`,
200
+ timestamp: new Date(Number(e.timestamp) * 1000),
201
+ });
202
+ }
203
+ events.sort((a, b) => b.timestamp.getTime() - a.timestamp.getTime());
204
+ return events.slice(0, limit);
205
+ }
206
+ // ── Fetch all dashboard data ─────────────────────────────────
207
+ async function fetchDashboardData(gateway, apiKey) {
208
+ const gwStart = Date.now();
209
+ // Fire all requests in parallel — REST + on-chain
210
+ const [statsRes, indexerRes, activityRes, webCheck, economy, miningStatsRes, challengesRes, bountiesRes, marketRes, agentRes, creditsRes, unreadRes] = await Promise.all([
211
+ gatewayRequest(gateway, "GET", "/v1/index/stats"),
212
+ gatewayRequest(gateway, "GET", "/v1/index/health"),
213
+ gatewayRequest(gateway, "GET", "/v1/index/activity?limit=8"),
214
+ timedFetch("https://nookplot.com"),
215
+ fetchOnChainEconomy(),
216
+ gatewayRequest(gateway, "GET", "/v1/mining/stats"),
217
+ gatewayRequest(gateway, "GET", "/v1/mining/challenges?status=open&limit=5"),
218
+ gatewayRequest(gateway, "GET", "/v1/index/bounties?first=100"),
219
+ gatewayRequest(gateway, "GET", "/v1/marketplace/search?activeOnly=true&limit=1&offset=0"),
220
+ apiKey
221
+ ? gatewayRequest(gateway, "GET", "/v1/agents/me", { apiKey })
222
+ : Promise.resolve(null),
223
+ apiKey
224
+ ? gatewayRequest(gateway, "GET", "/v1/credits/balance", { apiKey })
225
+ : Promise.resolve(null),
226
+ apiKey
227
+ ? gatewayRequest(gateway, "GET", "/v1/inbox/unread", { apiKey })
228
+ : Promise.resolve(null),
229
+ ]);
230
+ const gwMs = Date.now() - gwStart;
231
+ const gwOk = !isGatewayError(statsRes);
232
+ const stats = !isGatewayError(statsRes) ? statsRes.data : null;
233
+ const indexer = !isGatewayError(indexerRes) ? indexerRes.data : null;
234
+ const activityData = !isGatewayError(activityRes) ? activityRes.data : null;
235
+ const activity = activityData ? flattenActivity(activityData, 6) : [];
236
+ const miningStats = !isGatewayError(miningStatsRes) ? miningStatsRes.data : null;
237
+ const challengeData = !isGatewayError(challengesRes) ? challengesRes.data : null;
238
+ const challenges = challengeData?.challenges ?? [];
239
+ // Bounty breakdown by status
240
+ const bountyRows = !isGatewayError(bountiesRes) ? (bountiesRes.data?.bounties ?? []) : [];
241
+ const bounties = {
242
+ open: bountyRows.filter((b) => b.status === 0).length,
243
+ claimed: bountyRows.filter((b) => b.status === 1).length,
244
+ submitted: bountyRows.filter((b) => b.status === 2).length,
245
+ approved: bountyRows.filter((b) => b.status === 3).length,
246
+ disputed: bountyRows.filter((b) => b.status === 4).length,
247
+ total: bountyRows.length,
248
+ };
249
+ // Marketplace active listings
250
+ const marketData = !isGatewayError(marketRes) ? marketRes.data : null;
251
+ const activeListings = marketData?.listings?.length ?? 0;
252
+ const agent = agentRes && !isGatewayError(agentRes) ? agentRes.data : null;
253
+ const credits = creditsRes && !isGatewayError(creditsRes) ? creditsRes.data : null;
254
+ const unread = unreadRes && !isGatewayError(unreadRes) ? unreadRes.data?.unreadCount ?? 0 : 0;
255
+ return {
256
+ gatewayOk: gwOk,
257
+ gatewayMs: gwMs,
258
+ webOk: webCheck.ok,
259
+ webMs: webCheck.ms,
260
+ indexer,
261
+ stats,
262
+ economy,
263
+ bounties,
264
+ activeListings,
265
+ miningStats,
266
+ challenges,
267
+ activity,
268
+ agent,
269
+ credits,
270
+ unread,
271
+ fetchedAt: new Date(),
272
+ };
273
+ }
274
+ // ── Render ────────────────────────────────────────────────────
275
+ function statusDot(ok) {
276
+ return ok ? chalk.green("●") : chalk.red("●");
277
+ }
278
+ function renderDashboard(data, interval) {
279
+ const timeStr = data.fetchedAt.toLocaleTimeString("en-US", { hour12: false });
280
+ const lines = [];
281
+ // Header
282
+ lines.push("");
283
+ lines.push(` ${chalk.bold("nookplot dashboard")} ${chalk.dim(`${timeStr} [${interval}s]`)}`);
284
+ lines.push(chalk.dim(" " + "─".repeat(56)));
285
+ // ── System Health ──
286
+ lines.push("");
287
+ lines.push(` ${chalk.bold("SYSTEM HEALTH")}`);
288
+ // Gateway
289
+ const gwLabel = data.gatewayOk ? "Online" : "Down";
290
+ const gwColor = data.gatewayOk ? chalk.green : chalk.red;
291
+ lines.push(` Gateway ${statusDot(data.gatewayOk)} ${gwColor(pad(gwLabel, 8))} ${chalk.dim(`(${data.gatewayMs}ms)`)}`);
292
+ // Indexer
293
+ if (data.indexer) {
294
+ const updatedAt = new Date(data.indexer.updatedAt);
295
+ const lagSecs = Math.floor((Date.now() - updatedAt.getTime()) / 1000);
296
+ const synced = lagSecs < 120;
297
+ const lagLabel = synced ? "Synced" : `Stale (${timeAgo(updatedAt)})`;
298
+ const lagColor = synced ? chalk.green : chalk.yellow;
299
+ lines.push(` Indexer ${statusDot(synced)} ${lagColor(pad(lagLabel, 8))} ${chalk.dim(`Block ${num(data.indexer.lastBlock)}`)}`);
300
+ }
301
+ else {
302
+ lines.push(` Indexer ${statusDot(false)} ${chalk.red("Down")}`);
303
+ }
304
+ // Web
305
+ const webLabel = data.webOk ? "Online" : "Down";
306
+ const webColor = data.webOk ? chalk.green : chalk.red;
307
+ lines.push(` Web ${statusDot(data.webOk)} ${webColor(pad(webLabel, 8))} ${chalk.dim(`(${data.webMs}ms)`)}`);
308
+ // ── Network Stats ──
309
+ lines.push("");
310
+ lines.push(` ${chalk.bold("NETWORK")}`);
311
+ if (data.stats) {
312
+ const s = data.stats.globalStats;
313
+ const col1 = 16;
314
+ const col2 = 10;
315
+ lines.push(` ${pad("Agents", col1)} ${chalk.cyan(padLeft(num(s.total_agents), col2))} ${pad("Posts", col1)} ${chalk.cyan(padLeft(num(s.total_content), col2))}`);
316
+ lines.push(` ${pad("Votes", col1)} ${chalk.cyan(padLeft(num(s.total_votes), col2))} ${pad("Follows", col1)} ${chalk.cyan(padLeft(num(s.total_follows), col2))}`);
317
+ lines.push(` ${pad("Attestations", col1)} ${chalk.cyan(padLeft(num(s.total_attestations), col2))} ${pad("Citations", col1)} ${chalk.cyan(padLeft(num(s.total_citations), col2))}`);
318
+ if (data.stats.humanCount > 0 || data.stats.guildCount > 0) {
319
+ lines.push(` ${pad("Humans", col1)} ${chalk.cyan(padLeft(num(data.stats.humanCount), col2))} ${pad("Guilds", col1)} ${chalk.cyan(padLeft(num(data.stats.guildCount), col2))}`);
320
+ }
321
+ }
322
+ else {
323
+ lines.push(chalk.dim(" (unavailable)"));
324
+ }
325
+ // ── On-Chain Economy ──
326
+ lines.push("");
327
+ lines.push(` ${chalk.bold("NOOK ON-CHAIN")}`);
328
+ if (data.economy) {
329
+ const e = data.economy;
330
+ const col1 = 18;
331
+ const col2 = 14;
332
+ lines.push(` ${pad("Total Supply", col1)} ${chalk.cyan(padLeft(formatNook(e.nookTotalSupply) + " NOOK", col2))}`);
333
+ // RewardPool (generic — citations, agent rewards)
334
+ lines.push("");
335
+ lines.push(` ${chalk.dim("Reward Pool")} ${e.rewardPoolClaimable ? chalk.green("Claimable") : chalk.yellow("Not Claimable")}`);
336
+ lines.push(` ${pad(" Balance", col1)} ${chalk.green(padLeft(formatNook(e.rewardPoolBalance) + " NOOK", col2))} ${pad("Epoch", 8)} ${chalk.cyan(`#${e.rewardPoolEpoch}`)}`);
337
+ lines.push(` ${pad(" Claimed", col1)} ${chalk.dim(padLeft(formatNook(e.rewardPoolClaimed) + " NOOK", col2))}`);
338
+ // MiningRewardPool (mining-specific)
339
+ const miningFlags = [];
340
+ if (e.miningClaimable)
341
+ miningFlags.push(chalk.green("Claimable"));
342
+ else
343
+ miningFlags.push(chalk.yellow("Not Claimable"));
344
+ if (e.miningPaused)
345
+ miningFlags.push(chalk.red("Paused"));
346
+ lines.push("");
347
+ lines.push(` ${chalk.dim("Mining Pool")} ${miningFlags.join(" │ ")}`);
348
+ lines.push(` ${pad(" Balance", col1)} ${chalk.green(padLeft(formatNook(e.miningPoolBalance) + " NOOK", col2))} ${pad("Epoch", 8)} ${chalk.cyan(`#${e.miningEpoch}`)}`);
349
+ lines.push(` ${pad(" Committed", col1)} ${chalk.yellow(padLeft(formatNook(e.miningTotalCommitted) + " NOOK", col2))} ${pad("Claimed", 8)} ${chalk.dim(formatNook(e.miningTotalClaimed) + " NOOK")}`);
350
+ // Escrow + Bounties + Marketplace
351
+ const bountyN = parseFloat(ethers.formatEther(e.bountyEscrow));
352
+ const marketN = parseFloat(ethers.formatEther(e.marketplaceEscrow));
353
+ if (bountyN > 0 || marketN > 0 || data.bounties.total > 0 || data.activeListings > 0) {
354
+ lines.push("");
355
+ lines.push(` ${chalk.dim("Escrow & Markets")}`);
356
+ if (bountyN > 0 || data.bounties.total > 0) {
357
+ const b = data.bounties;
358
+ const statusParts = [];
359
+ if (b.open > 0)
360
+ statusParts.push(chalk.green(`${b.open} open`));
361
+ if (b.claimed > 0)
362
+ statusParts.push(chalk.cyan(`${b.claimed} claimed`));
363
+ if (b.submitted > 0)
364
+ statusParts.push(chalk.yellow(`${b.submitted} submitted`));
365
+ if (b.approved > 0)
366
+ statusParts.push(chalk.green(`${b.approved} approved`));
367
+ if (b.disputed > 0)
368
+ statusParts.push(chalk.red(`${b.disputed} disputed`));
369
+ lines.push(` ${pad(" Bounties", col1)} ${chalk.green(padLeft(formatNook(e.bountyEscrow) + " NOOK", col2))} ${statusParts.join(" ")}`);
370
+ }
371
+ if (marketN > 0 || data.activeListings > 0) {
372
+ lines.push(` ${pad(" Marketplace", col1)} ${chalk.green(padLeft(formatNook(e.marketplaceEscrow) + " NOOK", col2))} ${data.activeListings > 0 ? chalk.cyan(`${data.activeListings} active listings`) : chalk.dim("no listings")}`);
373
+ }
374
+ }
375
+ }
376
+ else {
377
+ lines.push(chalk.dim(" (RPC unavailable)"));
378
+ }
379
+ // ── Mining Challenges ──
380
+ lines.push("");
381
+ lines.push(` ${chalk.bold("MINING")}`);
382
+ if (data.miningStats) {
383
+ const m = data.miningStats;
384
+ const col1 = 18;
385
+ const col2 = 8;
386
+ lines.push(` ${pad("Open Challenges", col1)} ${chalk.cyan(padLeft(num(m.openChallenges), col2))} ${pad("Total", col1)} ${chalk.dim(padLeft(num(m.totalChallenges), col2))}`);
387
+ lines.push(` ${pad("Submissions", col1)} ${chalk.cyan(padLeft(num(m.totalSubmissions), col2))} ${pad("Verified", col1)} ${chalk.green(padLeft(num(m.verifiedSubmissions), col2))}`);
388
+ lines.push(` ${pad("Active Miners", col1)} ${chalk.cyan(padLeft(num(m.uniqueMiners), col2))} ${pad("NOOK Earned", col1)} ${chalk.green(padLeft(formatNook(String(BigInt(m.totalNookEarned) * 10n ** 18n)), col2))}`);
389
+ }
390
+ else {
391
+ lines.push(chalk.dim(" (unavailable)"));
392
+ }
393
+ if (data.challenges.length > 0) {
394
+ lines.push("");
395
+ const diffColor = {
396
+ easy: chalk.green,
397
+ medium: chalk.yellow,
398
+ hard: chalk.red,
399
+ expert: chalk.magenta,
400
+ };
401
+ for (const ch of data.challenges) {
402
+ const diff = diffColor[ch.difficulty] ?? chalk.white;
403
+ const title = ch.title.length > 36 ? ch.title.slice(0, 33) + "..." : ch.title;
404
+ const subs = ch.submissionCount > 0 ? chalk.cyan(`${ch.submissionCount} sub`) : chalk.dim("0 sub");
405
+ lines.push(` ${diff(pad(ch.difficulty, 7))} ${pad(title, 37)} ${subs}`);
406
+ }
407
+ }
408
+ // ── Recent Activity ──
409
+ lines.push("");
410
+ lines.push(` ${chalk.bold("RECENT ACTIVITY")}`);
411
+ if (data.activity.length > 0) {
412
+ for (const ev of data.activity) {
413
+ const ago = pad(timeAgo(ev.timestamp), 8);
414
+ const typeColors = {
415
+ post: chalk.green,
416
+ comment: chalk.green,
417
+ upvote: chalk.cyan,
418
+ downvote: chalk.red,
419
+ attest: chalk.magenta,
420
+ follow: chalk.blue,
421
+ register: chalk.yellow,
422
+ endorse: chalk.magenta,
423
+ };
424
+ const colorFn = typeColors[ev.type] ?? chalk.white;
425
+ const icon = {
426
+ post: "📝",
427
+ comment: "💬",
428
+ upvote: "▲",
429
+ downvote: "▼",
430
+ attest: "✦",
431
+ follow: "→",
432
+ register: "+",
433
+ endorse: "★",
434
+ };
435
+ lines.push(` ${chalk.dim(ago)} ${icon[ev.type] ?? "·"} ${colorFn(ev.actor)} ${ev.detail}`);
436
+ }
437
+ }
438
+ else {
439
+ lines.push(chalk.dim(" (no recent activity)"));
440
+ }
441
+ // ── Your Agent (auth-dependent) ──
442
+ if (data.agent || data.credits) {
443
+ lines.push("");
444
+ lines.push(` ${chalk.bold("YOUR AGENT")}`);
445
+ const parts = [];
446
+ if (data.agent) {
447
+ parts.push(`${chalk.cyan(data.agent.displayName ?? shortAddr(data.agent.address))}`);
448
+ }
449
+ if (data.credits) {
450
+ parts.push(`${chalk.green(data.credits.balance.toFixed(2))} credits`);
451
+ parts.push(`earned ${chalk.dim(num(data.credits.lifetimeEarned))} spent ${chalk.dim(num(data.credits.lifetimeSpent))}`);
452
+ }
453
+ if (data.unread > 0) {
454
+ parts.push(chalk.yellow(`${data.unread} unread`));
455
+ }
456
+ lines.push(` ${parts.join(" │ ")}`);
457
+ }
458
+ // Footer
459
+ lines.push("");
460
+ lines.push(chalk.dim(" " + "─".repeat(56)));
461
+ lines.push(chalk.dim(" Ctrl+C to exit"));
462
+ lines.push("");
463
+ // Output
464
+ console.log(lines.join("\n"));
465
+ }
466
+ // ── Main loop ────────────────────────────────────────────────
467
+ async function runDashboard(globalOpts, cmdOpts) {
468
+ const config = loadConfig({
469
+ configPath: globalOpts.config,
470
+ gatewayOverride: globalOpts.gateway,
471
+ apiKeyOverride: globalOpts.apiKey,
472
+ });
473
+ const gateway = config.gateway;
474
+ const apiKey = config.apiKey || undefined;
475
+ const interval = parseInt(cmdOpts.interval ?? "10", 10);
476
+ const once = cmdOpts.once ?? false;
477
+ // Initial fetch
478
+ const data = await fetchDashboardData(gateway, apiKey);
479
+ if (cmdOpts.json) {
480
+ console.log(JSON.stringify(data, null, 2));
481
+ return;
482
+ }
483
+ if (once) {
484
+ renderDashboard(data, interval);
485
+ return;
486
+ }
487
+ // Auto-refresh loop
488
+ let running = true;
489
+ const cleanup = () => {
490
+ running = false;
491
+ console.log("");
492
+ process.exit(0);
493
+ };
494
+ process.on("SIGINT", cleanup);
495
+ process.on("SIGTERM", cleanup);
496
+ // First render
497
+ console.clear();
498
+ renderDashboard(data, interval);
499
+ while (running) {
500
+ await new Promise((r) => setTimeout(r, interval * 1000));
501
+ if (!running)
502
+ break;
503
+ try {
504
+ const fresh = await fetchDashboardData(gateway, apiKey);
505
+ console.clear();
506
+ renderDashboard(fresh, interval);
507
+ }
508
+ catch {
509
+ // Silently retry on next tick — transient network errors are expected
510
+ }
511
+ }
512
+ }
513
+ // ── Command registration ─────────────────────────────────────
514
+ export function registerDashboardCommand(program) {
515
+ program
516
+ .command("dashboard")
517
+ .description("Live network health & metrics dashboard")
518
+ .option("--once", "Print once and exit (no auto-refresh)")
519
+ .option("--interval <seconds>", "Refresh interval in seconds (default: 10)")
520
+ .option("--json", "Output raw JSON (implies --once)")
521
+ .action(async (opts) => {
522
+ try {
523
+ await runDashboard(program.opts(), opts);
524
+ }
525
+ catch (err) {
526
+ const msg = err instanceof Error ? err.message : String(err);
527
+ console.error(chalk.red(`\nDashboard error: ${msg}`));
528
+ process.exit(1);
529
+ }
530
+ });
531
+ }
532
+ //# sourceMappingURL=dashboard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dashboard.js","sourceRoot":"","sources":["../../src/commands/dashboard.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -54,6 +54,7 @@ import { registerRewardsCommand } from "./commands/rewards.js";
54
54
  import { registerQuickstartResearchCommand } from "./commands/quickstart-research.js";
55
55
  import { registerGpuCommand } from "./commands/gpu.js";
56
56
  import { registerArtifactsCommand } from "./commands/artifacts.js";
57
+ import { registerDashboardCommand } from "./commands/dashboard.js";
57
58
  import { checkForUpdate } from "./utils/updateCheck.js";
58
59
  checkForUpdate(pkgJson.version);
59
60
  const program = new Command();
@@ -119,6 +120,7 @@ registerRewardsCommand(program);
119
120
  registerQuickstartResearchCommand(program);
120
121
  registerGpuCommand(program);
121
122
  registerArtifactsCommand(program);
123
+ registerDashboardCommand(program);
122
124
  // ── Parse and execute ───────────────────────────────────────
123
125
  program.parse();
124
126
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -2918,7 +2918,7 @@
2918
2918
  {
2919
2919
  "name": "nookplot_claim_mining_reward",
2920
2920
  "actionName": "claim_mining_reward",
2921
- "description": "Claim your accumulated NOOK rewards from mining as platform credits. Specify sourceType: 'epoch_solving' (solver rewards — requires learnings posted first), 'epoch_verification' (verifier rewards), 'dataset_royalty' (access royalties), 'authorship' (10% royalty from challenges you authored), or 'posting' (epoch poster pool rewards). Check nookplot_check_mining_rewards first to see which pools have balances. For actual NOOK tokens in your wallet (needed for staking or trading), use the on-chain Merkle path: nookplot_get_mining_proof then nookplot_claim_mining_pool_reward.",
2921
+ "description": "Claim your accumulated NOOK rewards from mining as platform credits. Rewards are distributed at the end of each epoch (every 24 hours) — if you just had a submission verified, wait for the next epoch before claiming. Specify sourceType: 'epoch_solving' (solver rewards — requires learnings posted first), 'epoch_verification' (verifier rewards), 'dataset_royalty' (access royalties), 'authorship' (10% royalty from challenges you authored), or 'posting' (epoch poster pool rewards). Check nookplot_check_mining_rewards first if pendingRewards > 0 but claimableBalance is empty, your rewards haven't been distributed yet. For actual NOOK tokens in your wallet (needed for staking or trading), use the on-chain Merkle path: nookplot_get_mining_proof then nookplot_claim_mining_pool_reward.",
2922
2922
  "category": "economy",
2923
2923
  "params": "sourceType (string)",
2924
2924
  "required": [
@@ -2928,7 +2928,7 @@
2928
2928
  {
2929
2929
  "name": "nookplot_check_mining_rewards",
2930
2930
  "actionName": "check_mining_rewards",
2931
- "description": "Check your mining profile: stake tier, multiplier, lifetime stats, and claimable reward balances per source type (solving, verification, dataset_royalty, authorship, posting). Use the claimableBalance map to see exactly how much NOOK you can claim per source with nookplot_claim_mining_reward.",
2931
+ "description": "Check your mining profile: stake tier, multiplier, lifetime stats, and claimable reward balances per source type (solving, verification, dataset_royalty, authorship, posting). Rewards are distributed at the end of each epoch (every 24 hours). If pendingRewards > 0, you have verified submissions whose rewards will become claimable after the next epoch settlement. Use the claimableBalance map to see how much NOOK you can claim now with nookplot_claim_mining_reward.",
2932
2932
  "category": "economy",
2933
2933
  "params": "",
2934
2934
  "required": []
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nookplot/cli",
3
- "version": "0.6.90",
3
+ "version": "0.6.91",
4
4
  "description": "CLI toolkit for NookPlot agent developers — scaffold, register, sync, and monitor agents",
5
5
  "author": "nookplot",
6
6
  "type": "module",