sigrank 0.0.227 → 0.0.229
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/manifest.json +1 -1
- package/package.json +1 -1
- package/presentation/tui.mjs +65 -10
package/manifest.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"$schema": "https://raw.githubusercontent.com/anthropics/mcpb/main/schemas/mcpb-manifest-v0.4.schema.json",
|
|
3
3
|
"manifest_version": "0.4",
|
|
4
4
|
"name": "sigrank",
|
|
5
|
-
"version": "0.0.
|
|
5
|
+
"version": "0.0.228",
|
|
6
6
|
"description": "Ranks AI coding operators by token cascade efficiency (Yield = cache_read \u00d7 output / input\u00b2). 23 tools for yield calculation, local token usage pulls, signed submission, and tokscale-powered analytics (market share, developer profiles, model trends, cost analysis, device profiles, MCP usage, competitive intelligence). Privacy-first: runs locally, only four token counts leave the machine.",
|
|
7
7
|
"author": {
|
|
8
8
|
"name": "SunrisesIllNeverSee",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "sigrank",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.229",
|
|
4
4
|
"author": "SunrisesIllNeverSee (https://github.com/SunrisesIllNeverSee)",
|
|
5
5
|
"description": "SigRank MCP server — AI operator evaluation and token cascade efficiency tools. The yield cascade + live leaderboard as MCP tools any agent can call.",
|
|
6
6
|
"mcpName": "io.github.SunrisesIllNeverSee/sigrank-mcp",
|
package/presentation/tui.mjs
CHANGED
|
@@ -413,15 +413,19 @@ async function fillDashboardRest(
|
|
|
413
413
|
{ shouldLoadPlatform, onPlatformStarted, onPlatformLoaded } = {},
|
|
414
414
|
) {
|
|
415
415
|
if (!dashData?._remaining) return false;
|
|
416
|
-
// Pull
|
|
417
|
-
//
|
|
418
|
-
//
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
416
|
+
// Pull all remaining platforms IN PARALLEL. The old sequential approach took
|
|
417
|
+
// 25s+ (18 platforms × ~1.5s each, most returning nothing). Parallel cuts
|
|
418
|
+
// total wait to the slowest single platform (~2-3s).
|
|
419
|
+
const toLoad = dashData._remaining.filter(
|
|
420
|
+
(p) => !shouldLoadPlatform || shouldLoadPlatform(p),
|
|
421
|
+
);
|
|
422
|
+
await Promise.all(
|
|
423
|
+
toLoad.map(async (platform) => {
|
|
424
|
+
await onPlatformStarted?.(platform);
|
|
425
|
+
const result = await pullDashboardPlatform(dashData, platform);
|
|
426
|
+
await onPlatformLoaded?.(platform, result);
|
|
427
|
+
}),
|
|
428
|
+
);
|
|
425
429
|
dashData._loading = false;
|
|
426
430
|
dashData._remaining = null;
|
|
427
431
|
return true;
|
|
@@ -2488,7 +2492,23 @@ export async function runTui({
|
|
|
2488
2492
|
// A2 (2026-06-27): paint the frame + a clear "reading your cascade…" status IMMEDIATELY,
|
|
2489
2493
|
// BEFORE the await — so the very first thing on screen is the table header + a live status,
|
|
2490
2494
|
// not a blank "loading dashboard…". renderDashboard tolerates this empty dashData (guarded).
|
|
2491
|
-
|
|
2495
|
+
// Animated signal pulse during initial load — shows the system is alive.
|
|
2496
|
+
const INIT_PULSE = [
|
|
2497
|
+
"▁▁▁▁▁", "▂▁▁▁▁", "▃▂▁▁▁", "▄▃▂▁▁", "▅▄▃▂▁",
|
|
2498
|
+
"▆▅▄▃▂", "▇▆▅▄▃", "█▇▆▅▄", "▇█▇▆▅", "▆▇█▇▆",
|
|
2499
|
+
"▅▆▇█▇", "▄▅▆▇█", "▃▄▅▆▇", "▂▃▄▅▆", "▁▂▃▄▅",
|
|
2500
|
+
"▁▁▂▃▄", "▁▁▁▂▃", "▁▁▁▁▂",
|
|
2501
|
+
];
|
|
2502
|
+
const initStart = Date.now();
|
|
2503
|
+
let initIdx = 0;
|
|
2504
|
+
const initTimer = setInterval(() => {
|
|
2505
|
+
const elapsed = ((Date.now() - initStart) / 1000).toFixed(1);
|
|
2506
|
+
const pulse = INIT_PULSE[initIdx % INIT_PULSE.length];
|
|
2507
|
+
initIdx++;
|
|
2508
|
+
status = `${gold(pulse)} reading your cascade… ${bold(`${elapsed}s`)}`;
|
|
2509
|
+
redraw();
|
|
2510
|
+
}, 150);
|
|
2511
|
+
status = `${gold("▁▁▁▁▁")} reading your cascade…`;
|
|
2492
2512
|
dashData = { active: [], _loading: true };
|
|
2493
2513
|
await redraw();
|
|
2494
2514
|
// FIX 0: progressive Dashboard load — claude first (fast), render it, THEN fill
|
|
@@ -2498,6 +2518,7 @@ export async function runTui({
|
|
|
2498
2518
|
status = `dashboard error: ${e.message}`;
|
|
2499
2519
|
return null;
|
|
2500
2520
|
});
|
|
2521
|
+
clearInterval(initTimer);
|
|
2501
2522
|
status = `last refreshed ${new Date().toLocaleTimeString("en-US", { hour12: false })}`;
|
|
2502
2523
|
await redraw();
|
|
2503
2524
|
// Keep a "filling other platforms…" status visible while fillDashboardRest runs.
|
|
@@ -2509,6 +2530,39 @@ export async function runTui({
|
|
|
2509
2530
|
status = "claude ready · filling other platforms…";
|
|
2510
2531
|
await redraw();
|
|
2511
2532
|
}
|
|
2533
|
+
// Animated signal pulse while the platform fill runs — shows the system
|
|
2534
|
+
// is alive, not frozen. Uses a rotating signal-bar animation + elapsed timer.
|
|
2535
|
+
const PULSE_FRAMES = [
|
|
2536
|
+
"▁▁▁▁▁",
|
|
2537
|
+
"▂▁▁▁▁",
|
|
2538
|
+
"▃▂▁▁▁",
|
|
2539
|
+
"▄▃▂▁▁",
|
|
2540
|
+
"▅▄▃▂▁",
|
|
2541
|
+
"▆▅▄▃▂",
|
|
2542
|
+
"▇▆▅▄▃",
|
|
2543
|
+
"█▇▆▅▄",
|
|
2544
|
+
"▇█▇▆▅",
|
|
2545
|
+
"▆▇█▇▆",
|
|
2546
|
+
"▅▆▇█▇",
|
|
2547
|
+
"▄▅▆▇█",
|
|
2548
|
+
"▃▄▅▆▇",
|
|
2549
|
+
"▂▃▄▅▆",
|
|
2550
|
+
"▁▂▃▄▅",
|
|
2551
|
+
"▁▁▂▃▄",
|
|
2552
|
+
"▁▁▁▂▃",
|
|
2553
|
+
"▁▁▁▁▂",
|
|
2554
|
+
];
|
|
2555
|
+
const fillStart = Date.now();
|
|
2556
|
+
let pulseIdx = 0;
|
|
2557
|
+
const pulseTimer = setInterval(() => {
|
|
2558
|
+
if (!dashData?._loading) return;
|
|
2559
|
+
const elapsed = ((Date.now() - fillStart) / 1000).toFixed(1);
|
|
2560
|
+
const pulse = PULSE_FRAMES[pulseIdx % PULSE_FRAMES.length];
|
|
2561
|
+
pulseIdx++;
|
|
2562
|
+
const platCount = dashData.active.length;
|
|
2563
|
+
status = `${gold(pulse)} scanning platforms… ${bold(`${elapsed}s`)} ${dim(`· ${platCount} found`)}`;
|
|
2564
|
+
redraw();
|
|
2565
|
+
}, 150);
|
|
2512
2566
|
[, boardData] = await Promise.all([
|
|
2513
2567
|
dashData?._remaining
|
|
2514
2568
|
? fillDashboardRest(dashData, {
|
|
@@ -2548,6 +2602,7 @@ export async function runTui({
|
|
|
2548
2602
|
: Promise.resolve(false),
|
|
2549
2603
|
loadBoardData(boardWindow).catch(() => null),
|
|
2550
2604
|
]);
|
|
2605
|
+
clearInterval(pulseTimer);
|
|
2551
2606
|
status = `last refreshed ${new Date().toLocaleTimeString("en-US", { hour12: false })}`;
|
|
2552
2607
|
await redraw();
|
|
2553
2608
|
};
|