pi-mega-compact 0.8.11 → 0.8.14

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 (64) hide show
  1. package/extensions/dashboard-client/dist/assets/AchievementTiles-BH26e95w.js +2 -0
  2. package/extensions/dashboard-client/dist/assets/AchievementTiles-BH26e95w.js.map +1 -0
  3. package/extensions/dashboard-client/dist/assets/AchievementsTab-B94wvRV_.js +2 -0
  4. package/extensions/dashboard-client/dist/assets/AchievementsTab-B94wvRV_.js.map +1 -0
  5. package/extensions/dashboard-client/dist/assets/CacheTab-DPmw3NHR.js +2 -0
  6. package/extensions/dashboard-client/dist/assets/CacheTab-DPmw3NHR.js.map +1 -0
  7. package/extensions/dashboard-client/dist/assets/ConfigTab-C3g3smRL.js +2 -0
  8. package/extensions/dashboard-client/dist/assets/ConfigTab-C3g3smRL.js.map +1 -0
  9. package/extensions/dashboard-client/dist/assets/EventsTab-B5PicfFw.js +2 -0
  10. package/extensions/dashboard-client/dist/assets/EventsTab-B5PicfFw.js.map +1 -0
  11. package/extensions/dashboard-client/dist/assets/GameTab-CsVwp78a.js +2 -0
  12. package/extensions/dashboard-client/dist/assets/GameTab-CsVwp78a.js.map +1 -0
  13. package/extensions/dashboard-client/dist/assets/MetricsTab-Cf72UewX.js +2 -0
  14. package/extensions/dashboard-client/dist/assets/MetricsTab-Cf72UewX.js.map +1 -0
  15. package/extensions/dashboard-client/dist/assets/OverviewTab-Dh6aG3gy.js +2 -0
  16. package/extensions/dashboard-client/dist/assets/OverviewTab-Dh6aG3gy.js.map +1 -0
  17. package/extensions/dashboard-client/dist/assets/ReposTab-HXf2dorl.js +2 -0
  18. package/extensions/dashboard-client/dist/assets/ReposTab-HXf2dorl.js.map +1 -0
  19. package/extensions/dashboard-client/dist/assets/TimeSavedCard-kUnoospE.js +2 -0
  20. package/extensions/dashboard-client/dist/assets/TimeSavedCard-kUnoospE.js.map +1 -0
  21. package/extensions/dashboard-client/dist/assets/index-Cfxniu2R.css +1 -0
  22. package/extensions/dashboard-client/dist/assets/index-DMntLu-8.js +42 -0
  23. package/extensions/dashboard-client/dist/assets/index-DMntLu-8.js.map +1 -0
  24. package/extensions/dashboard-client/dist/index.html +13 -0
  25. package/extensions/dashboard-client/src/App.tsx +18 -4
  26. package/extensions/dashboard-client/src/components/AchievementTiles.tsx +105 -0
  27. package/extensions/dashboard-client/src/components/ActiveReposTable.tsx +116 -0
  28. package/extensions/dashboard-client/src/components/CacheHitsCard.tsx +73 -0
  29. package/extensions/dashboard-client/src/components/CacheStatusPerModel.tsx +78 -35
  30. package/extensions/dashboard-client/src/components/ConfigSummaryCard.tsx +101 -0
  31. package/extensions/dashboard-client/src/components/ContextGauge.tsx +11 -15
  32. package/extensions/dashboard-client/src/components/DataSafetyCard.tsx +42 -33
  33. package/extensions/dashboard-client/src/components/EventCategoryFilter.tsx +46 -9
  34. package/extensions/dashboard-client/src/components/LegendCard.tsx +49 -0
  35. package/extensions/dashboard-client/src/components/ModelBadge.tsx +42 -11
  36. package/extensions/dashboard-client/src/components/PerfCards.tsx +91 -0
  37. package/extensions/dashboard-client/src/components/RepoAllSessionsCard.tsx +102 -0
  38. package/extensions/dashboard-client/src/components/RepoDetailModal.tsx +9 -2
  39. package/extensions/dashboard-client/src/components/RepoTable.tsx +30 -22
  40. package/extensions/dashboard-client/src/components/SavingsByModelTable.tsx +226 -0
  41. package/extensions/dashboard-client/src/components/SessionInfo.tsx +25 -50
  42. package/extensions/dashboard-client/src/components/SummaryTiles.tsx +20 -11
  43. package/extensions/dashboard-client/src/components/TimeSavedCard.tsx +61 -0
  44. package/extensions/dashboard-client/src/components/TriggerStatus.tsx +31 -19
  45. package/extensions/dashboard-client/src/components/VectorStoreCard.tsx +134 -0
  46. package/extensions/dashboard-client/src/main.tsx +5 -0
  47. package/extensions/dashboard-client/src/styles/base.css +76 -9
  48. package/extensions/dashboard-client/src/styles/config.css +149 -0
  49. package/extensions/dashboard-client/src/styles/game-achievements.css +265 -0
  50. package/extensions/dashboard-client/src/styles/metrics-extra.css +69 -0
  51. package/extensions/dashboard-client/src/styles/overview-extra.css +170 -0
  52. package/extensions/dashboard-client/src/styles/repos-extra.css +99 -0
  53. package/extensions/dashboard-client/src/styles/repos-metrics.css +14 -23
  54. package/extensions/dashboard-client/src/tabs/AchievementsTab.tsx +55 -0
  55. package/extensions/dashboard-client/src/tabs/CacheTab.tsx +50 -0
  56. package/extensions/dashboard-client/src/tabs/ConfigTab.tsx +240 -5
  57. package/extensions/dashboard-client/src/tabs/EventsTab.tsx +55 -3
  58. package/extensions/dashboard-client/src/tabs/GameTab.tsx +287 -0
  59. package/extensions/dashboard-client/src/tabs/MetricsTab.tsx +7 -1
  60. package/extensions/dashboard-client/src/tabs/OverviewTab.tsx +103 -17
  61. package/extensions/dashboard-client/src/tabs/ReposTab.tsx +57 -22
  62. package/extensions/dashboard-client/src/utils/format.ts +85 -0
  63. package/extensions/dashboard-client/src/utils/types.ts +27 -0
  64. package/package.json +3 -2
@@ -0,0 +1,85 @@
1
+ /**
2
+ * dashboard-client/src/utils/format.ts — shared formatting helpers.
3
+ *
4
+ * Mirrors the format functions from the old static dashboard (html.ts)
5
+ * so the React rewrite shows identical values.
6
+ */
7
+
8
+ /** Format bytes as KiB/MiB/B (matches html.ts fmtBytes). */
9
+ export function fmtBytes(b: number | null | undefined): string {
10
+ const n = b ?? 0;
11
+ if (n >= 1_048_576) return `${(n / 1_048_576).toFixed(1)} MiB`;
12
+ if (n >= 1024) return `${(n / 1024).toFixed(1)} KiB`;
13
+ return `${n} B`;
14
+ }
15
+
16
+ /** Format seconds as h/m/s/ms (matches html.ts fmtSec). */
17
+ export function fmtSec(s: number | null | undefined): string {
18
+ const n = s ?? 0;
19
+ if (n >= 3600) return `${(n / 3600).toFixed(1)}h`;
20
+ if (n >= 60) return `${Math.round(n / 60)}m`;
21
+ if (n >= 1) return `${n.toFixed(1)}s`;
22
+ return `${Math.round(n * 1000)}ms`;
23
+ }
24
+
25
+ /**
26
+ * Display a 0–1 fraction as a percentage string.
27
+ * Uses one decimal place below 10%, rounded above (matches html.ts pct logic).
28
+ */
29
+ export function fmtPctFromFraction(
30
+ v: number | null | undefined,
31
+ ): string {
32
+ const n = v ?? 0;
33
+ const pct = n * 100;
34
+ if (pct >= 10) return `${Math.round(pct)}%`;
35
+ return `${pct.toFixed(1)}%`;
36
+ }
37
+
38
+ /** Round a 0–1 fraction to a one-decimal percentage (for trophy values). */
39
+ export function fmtPct(v: number | null | undefined): string {
40
+ const n = v ?? 0;
41
+ return `${Math.round(n * 10) / 10}%`;
42
+ }
43
+
44
+ /** Format milliseconds (matches html.ts fmtMs). */
45
+ export function fmtMs(v: number | null | undefined): string {
46
+ if (v == null) return "\u2014";
47
+ return v >= 100 ? `${Math.round(v)}ms` : `${v.toFixed(1)}ms`;
48
+ }
49
+
50
+ /** Format a number with fixed decimals or em-dash for null (matches fmtNum). */
51
+ export function fmtNum(
52
+ v: number | null | undefined,
53
+ dec: number,
54
+ ): string {
55
+ if (v == null || typeof v !== "number") return "\u2014";
56
+ return v.toFixed(dec);
57
+ }
58
+
59
+ /** Collapse an array of numbers into a range string or single value. */
60
+ export function collapseNum(samples: number[]): string {
61
+ if (samples.length === 0) return "\u2014";
62
+ const lo = Math.min(...samples);
63
+ const hi = Math.max(...samples);
64
+ if (lo === hi) return lo.toLocaleString();
65
+ return `${lo.toLocaleString()}\u2013${hi.toLocaleString()}`;
66
+ }
67
+
68
+ /** Collapse an array of rates into a range string or single value. */
69
+ export function collapseRate(samples: number[]): string {
70
+ if (samples.length === 0) return "\u2014";
71
+ const lo = Math.min(...samples);
72
+ const hi = Math.max(...samples);
73
+ if (lo === hi) return `$${lo.toFixed(6)}`;
74
+ return `$${lo.toFixed(6)}\u2013$${hi.toFixed(6)}`;
75
+ }
76
+
77
+ /** Format a date string or null as locale string or em-dash. */
78
+ export function fmtDate(ts: string | number | null | undefined): string {
79
+ if (!ts) return "\u2014";
80
+ try {
81
+ return new Date(ts).toLocaleString();
82
+ } catch {
83
+ return "\u2014";
84
+ }
85
+ }
@@ -0,0 +1,27 @@
1
+ /**
2
+ * dashboard-client/src/utils/types.ts — local extended types.
3
+ *
4
+ * The runtime snapshot (mega-dashboard.ts) includes fields not present in
5
+ * the A1 SnapshotResponse contract (e.g. config.tierPct). This file adds
6
+ * those fields in a type-safe way without using `any`.
7
+ */
8
+
9
+ import type { SnapshotResponse } from "@contracts";
10
+
11
+ /**
12
+ * SnapshotResponse extended with runtime-only fields.
13
+ * These fields are emitted by the server but absent from the contract.
14
+ */
15
+ export interface RuntimeSnapshot extends SnapshotResponse {
16
+ config: SnapshotResponse["config"] & {
17
+ /** Tier percentage as a 0–1 fraction (runtime-only, not in contract). */
18
+ tierPct?: number;
19
+ };
20
+ }
21
+
22
+ /** Actual flat game-state shape from the server (not the nested contract). */
23
+ export interface DashboardGameState {
24
+ game_mode_on: boolean;
25
+ theme: string;
26
+ tui_display_mode: "full" | "minimal";
27
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pi-mega-compact",
3
- "version": "0.8.11",
3
+ "version": "0.8.14",
4
4
  "description": "Layered, local, vector-backed context compressor for pi — supersede/collapse/cluster compaction with deduped inline recall.",
5
5
  "type": "module",
6
6
  "license": "BSD-2-Clause",
@@ -25,6 +25,7 @@
25
25
  "files": [
26
26
  "dist",
27
27
  "extensions",
28
+ "extensions/dashboard-client/dist",
28
29
  "src",
29
30
  "README.md",
30
31
  "LICENSE"
@@ -46,7 +47,7 @@
46
47
  "test": "npm run build && node scripts/run-tests.mjs",
47
48
  "guardrails": "python3 scripts/regression_check.py --all || node scripts/guardrails-scan.mjs || node scripts/semantic-scan.mjs",
48
49
  "precommit": "bash .claude/hooks/pre-commit.sh",
49
- "prepublishOnly": "npm run build",
50
+ "prepublishOnly": "npm run build && npm run build:dashboard",
50
51
  "postinstall": "npm rebuild @mongodb-js/zstd || true"
51
52
  },
52
53
  "peerDependencies": {