claude-scope 0.8.20 → 0.8.21

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 (2) hide show
  1. package/dist/claude-scope.cjs +349 -46
  2. package/package.json +3 -2
@@ -141,6 +141,13 @@ function createThemeColors(params) {
141
141
  count: params.dockerCount ?? params.model,
142
142
  running: params.dockerRunning ?? params.contextLow,
143
143
  stopped: params.dockerStopped ?? params.contextHigh
144
+ },
145
+ sysmon: {
146
+ cpu: params.sysmonCpu,
147
+ ram: params.sysmonRam,
148
+ disk: params.sysmonDisk,
149
+ network: params.sysmonNetwork,
150
+ separator: params.sysmonSeparator
144
151
  }
145
152
  };
146
153
  }
@@ -189,7 +196,12 @@ var init_gray_theme = __esm({
189
196
  dockerLabel: gray,
190
197
  dockerCount: gray,
191
198
  dockerRunning: gray,
192
- dockerStopped: gray
199
+ dockerStopped: gray,
200
+ sysmonCpu: gray,
201
+ sysmonRam: gray,
202
+ sysmonDisk: gray,
203
+ sysmonNetwork: gray,
204
+ sysmonSeparator: gray
193
205
  })
194
206
  };
195
207
  }
@@ -261,8 +273,18 @@ var init_catppuccin_mocha_theme = __esm({
261
273
  // Mauve
262
274
  dockerRunning: rgb(166, 227, 161),
263
275
  // Green
264
- dockerStopped: rgb(243, 139, 168)
276
+ dockerStopped: rgb(243, 139, 168),
265
277
  // Red
278
+ sysmonCpu: rgb(243, 139, 168),
279
+ // Red (alert)
280
+ sysmonRam: rgb(137, 180, 250),
281
+ // Blue (info)
282
+ sysmonDisk: rgb(238, 212, 159),
283
+ // Yellow (warning)
284
+ sysmonNetwork: rgb(166, 227, 161),
285
+ // Green (success)
286
+ sysmonSeparator: rgb(88, 91, 112)
287
+ // Dark gray
266
288
  })
267
289
  };
268
290
  }
@@ -334,8 +356,18 @@ var init_cyberpunk_neon_theme = __esm({
334
356
  // Purple neon
335
357
  dockerRunning: rgb(0, 255, 122),
336
358
  // Green neon
337
- dockerStopped: rgb(255, 0, 122)
359
+ dockerStopped: rgb(255, 0, 122),
338
360
  // Magenta neon
361
+ sysmonCpu: rgb(255, 0, 122),
362
+ // Magenta neon (alert)
363
+ sysmonRam: rgb(0, 191, 255),
364
+ // Cyan neon (info)
365
+ sysmonDisk: rgb(255, 214, 0),
366
+ // Yellow neon (warning)
367
+ sysmonNetwork: rgb(0, 255, 122),
368
+ // Green neon (success)
369
+ sysmonSeparator: rgb(68, 0, 102)
370
+ // Dark purple
339
371
  })
340
372
  };
341
373
  }
@@ -407,8 +439,18 @@ var init_dracula_theme = __esm({
407
439
  // Purple
408
440
  dockerRunning: rgb(80, 250, 123),
409
441
  // Green
410
- dockerStopped: rgb(255, 85, 85)
442
+ dockerStopped: rgb(255, 85, 85),
411
443
  // Red
444
+ sysmonCpu: rgb(255, 85, 85),
445
+ // Red (alert)
446
+ sysmonRam: rgb(139, 233, 253),
447
+ // Cyan (info)
448
+ sysmonDisk: rgb(255, 184, 108),
449
+ // Orange (warning)
450
+ sysmonNetwork: rgb(80, 250, 123),
451
+ // Green (success)
452
+ sysmonSeparator: rgb(68, 71, 90)
453
+ // Dark gray
412
454
  })
413
455
  };
414
456
  }
@@ -469,8 +511,18 @@ var init_dusty_sage_theme = __esm({
469
511
  // Gray
470
512
  dockerRunning: rgb(135, 145, 140),
471
513
  // Subtle sage
472
- dockerStopped: rgb(165, 175, 160)
514
+ dockerStopped: rgb(165, 175, 160),
473
515
  // Light sage
516
+ sysmonCpu: rgb(165, 175, 160),
517
+ // Light sage (alert)
518
+ sysmonRam: rgb(120, 140, 130),
519
+ // Dusty green (info)
520
+ sysmonDisk: rgb(150, 160, 145),
521
+ // Medium sage (warning)
522
+ sysmonNetwork: rgb(135, 145, 140),
523
+ // Subtle sage (success)
524
+ sysmonSeparator: rgb(90, 100, 110)
525
+ // Dark gray
474
526
  })
475
527
  };
476
528
  }
@@ -542,8 +594,18 @@ var init_github_dark_dimmed_theme = __esm({
542
594
  // Purple
543
595
  dockerRunning: rgb(35, 134, 54),
544
596
  // GitHub green
545
- dockerStopped: rgb(248, 81, 73)
597
+ dockerStopped: rgb(248, 81, 73),
546
598
  // GitHub red
599
+ sysmonCpu: rgb(248, 81, 73),
600
+ // GitHub red (alert)
601
+ sysmonRam: rgb(88, 166, 255),
602
+ // GitHub blue (info)
603
+ sysmonDisk: rgb(210, 153, 34),
604
+ // GitHub orange (warning)
605
+ sysmonNetwork: rgb(35, 134, 54),
606
+ // GitHub green (success)
607
+ sysmonSeparator: rgb(73, 79, 91)
608
+ // Dark gray
547
609
  })
548
610
  };
549
611
  }
@@ -615,8 +677,18 @@ var init_monokai_theme = __esm({
615
677
  // Purple
616
678
  dockerRunning: rgb(166, 226, 46),
617
679
  // Green
618
- dockerStopped: rgb(174, 129, 255)
680
+ dockerStopped: rgb(174, 129, 255),
619
681
  // Purple
682
+ sysmonCpu: rgb(249, 26, 114),
683
+ // Pink (alert)
684
+ sysmonRam: rgb(102, 217, 239),
685
+ // Cyan (info)
686
+ sysmonDisk: rgb(253, 151, 31),
687
+ // Orange (warning)
688
+ sysmonNetwork: rgb(166, 226, 46),
689
+ // Green (success)
690
+ sysmonSeparator: rgb(98, 114, 164)
691
+ // Dark gray
620
692
  })
621
693
  };
622
694
  }
@@ -677,8 +749,18 @@ var init_muted_gray_theme = __esm({
677
749
  // Lighter slate
678
750
  dockerRunning: rgb(148, 163, 184),
679
751
  // Subtle gray
680
- dockerStopped: rgb(175, 188, 201)
752
+ dockerStopped: rgb(175, 188, 201),
681
753
  // Light gray
754
+ sysmonCpu: rgb(175, 188, 201),
755
+ // Light gray (alert)
756
+ sysmonRam: rgb(156, 163, 175),
757
+ // Slate gray (info)
758
+ sysmonDisk: rgb(160, 174, 192),
759
+ // Medium gray (warning)
760
+ sysmonNetwork: rgb(148, 163, 184),
761
+ // Subtle gray (success)
762
+ sysmonSeparator: rgb(75, 85, 99)
763
+ // Dark gray
682
764
  })
683
765
  };
684
766
  }
@@ -750,8 +832,18 @@ var init_nord_theme = __esm({
750
832
  // Nordic white
751
833
  dockerRunning: rgb(163, 190, 140),
752
834
  // Nordic green
753
- dockerStopped: rgb(191, 97, 106)
835
+ dockerStopped: rgb(191, 97, 106),
754
836
  // Nordic red
837
+ sysmonCpu: rgb(191, 97, 106),
838
+ // Nordic red (alert)
839
+ sysmonRam: rgb(136, 192, 208),
840
+ // Nordic cyan (info)
841
+ sysmonDisk: rgb(235, 203, 139),
842
+ // Nordic yellow (warning)
843
+ sysmonNetwork: rgb(163, 190, 140),
844
+ // Nordic green (success)
845
+ sysmonSeparator: rgb(76, 86, 106)
846
+ // Nordic dark gray
755
847
  })
756
848
  };
757
849
  }
@@ -823,8 +915,18 @@ var init_one_dark_pro_theme = __esm({
823
915
  // Orange
824
916
  dockerRunning: rgb(152, 195, 121),
825
917
  // Green
826
- dockerStopped: rgb(224, 108, 117)
918
+ dockerStopped: rgb(224, 108, 117),
827
919
  // Red
920
+ sysmonCpu: rgb(224, 108, 117),
921
+ // Red (alert)
922
+ sysmonRam: rgb(97, 175, 239),
923
+ // Blue (info)
924
+ sysmonDisk: rgb(229, 192, 123),
925
+ // Yellow (warning)
926
+ sysmonNetwork: rgb(152, 195, 121),
927
+ // Green (success)
928
+ sysmonSeparator: rgb(91, 98, 113)
929
+ // Dark gray
828
930
  })
829
931
  };
830
932
  }
@@ -896,8 +998,18 @@ var init_professional_blue_theme = __esm({
896
998
  // Purple
897
999
  dockerRunning: rgb(74, 222, 128),
898
1000
  // Green
899
- dockerStopped: rgb(248, 113, 113)
1001
+ dockerStopped: rgb(248, 113, 113),
900
1002
  // Red
1003
+ sysmonCpu: rgb(248, 113, 113),
1004
+ // Red (alert)
1005
+ sysmonRam: rgb(96, 165, 250),
1006
+ // Light blue (info)
1007
+ sysmonDisk: rgb(251, 191, 36),
1008
+ // Amber (warning)
1009
+ sysmonNetwork: rgb(74, 222, 128),
1010
+ // Green (success)
1011
+ sysmonSeparator: rgb(100, 116, 139)
1012
+ // Dark slate
901
1013
  })
902
1014
  };
903
1015
  }
@@ -969,8 +1081,18 @@ var init_rose_pine_theme = __esm({
969
1081
  // Pine pink
970
1082
  dockerRunning: rgb(156, 207, 216),
971
1083
  // Pine cyan
972
- dockerStopped: rgb(235, 111, 146)
1084
+ dockerStopped: rgb(235, 111, 146),
973
1085
  // Pine red
1086
+ sysmonCpu: rgb(235, 111, 146),
1087
+ // Pine red (alert)
1088
+ sysmonRam: rgb(156, 207, 216),
1089
+ // Pine cyan (info)
1090
+ sysmonDisk: rgb(233, 201, 176),
1091
+ // Pine beige (warning)
1092
+ sysmonNetwork: rgb(156, 207, 216),
1093
+ // Pine cyan (success)
1094
+ sysmonSeparator: rgb(112, 88, 105)
1095
+ // Pine dark
974
1096
  })
975
1097
  };
976
1098
  }
@@ -1042,8 +1164,18 @@ var init_semantic_classic_theme = __esm({
1042
1164
  // Indigo
1043
1165
  dockerRunning: rgb(34, 197, 94),
1044
1166
  // Green
1045
- dockerStopped: rgb(239, 68, 68)
1167
+ dockerStopped: rgb(239, 68, 68),
1046
1168
  // Red
1169
+ sysmonCpu: rgb(239, 68, 68),
1170
+ // Red (alert)
1171
+ sysmonRam: rgb(59, 130, 246),
1172
+ // Blue (info)
1173
+ sysmonDisk: rgb(234, 179, 8),
1174
+ // Yellow (warning)
1175
+ sysmonNetwork: rgb(34, 197, 94),
1176
+ // Green (success)
1177
+ sysmonSeparator: rgb(75, 85, 99)
1178
+ // Dark gray
1047
1179
  })
1048
1180
  };
1049
1181
  }
@@ -1104,8 +1236,18 @@ var init_slate_blue_theme = __esm({
1104
1236
  // Neutral slate
1105
1237
  dockerRunning: rgb(148, 163, 184),
1106
1238
  // Subtle slate-blue
1107
- dockerStopped: rgb(175, 188, 201)
1239
+ dockerStopped: rgb(175, 188, 201),
1108
1240
  // Light slate
1241
+ sysmonCpu: rgb(175, 188, 201),
1242
+ // Light slate (alert)
1243
+ sysmonRam: rgb(100, 116, 139),
1244
+ // Cool slate (info)
1245
+ sysmonDisk: rgb(160, 174, 192),
1246
+ // Medium slate (warning)
1247
+ sysmonNetwork: rgb(148, 163, 184),
1248
+ // Subtle slate-blue (success)
1249
+ sysmonSeparator: rgb(71, 85, 105)
1250
+ // Dark slate
1109
1251
  })
1110
1252
  };
1111
1253
  }
@@ -1177,8 +1319,18 @@ var init_solarized_dark_theme = __esm({
1177
1319
  // Orange
1178
1320
  dockerRunning: rgb(133, 153, 0),
1179
1321
  // Olive
1180
- dockerStopped: rgb(220, 50, 47)
1322
+ dockerStopped: rgb(220, 50, 47),
1181
1323
  // Red
1324
+ sysmonCpu: rgb(220, 50, 47),
1325
+ // Red (alert)
1326
+ sysmonRam: rgb(38, 139, 210),
1327
+ // Blue (info)
1328
+ sysmonDisk: rgb(181, 137, 0),
1329
+ // Yellow (warning)
1330
+ sysmonNetwork: rgb(133, 153, 0),
1331
+ // Olive (success)
1332
+ sysmonSeparator: rgb(7, 54, 66)
1333
+ // Base02
1182
1334
  })
1183
1335
  };
1184
1336
  }
@@ -1250,8 +1402,18 @@ var init_tokyo_night_theme = __esm({
1250
1402
  // Teal
1251
1403
  dockerRunning: rgb(146, 180, 203),
1252
1404
  // Cyan
1253
- dockerStopped: rgb(249, 86, 119)
1405
+ dockerStopped: rgb(249, 86, 119),
1254
1406
  // Red
1407
+ sysmonCpu: rgb(249, 86, 119),
1408
+ // Red (alert)
1409
+ sysmonRam: rgb(122, 132, 173),
1410
+ // Blue (info)
1411
+ sysmonDisk: rgb(232, 166, 162),
1412
+ // Pink-red (warning)
1413
+ sysmonNetwork: rgb(146, 180, 203),
1414
+ // Cyan (success)
1415
+ sysmonSeparator: rgb(77, 82, 120)
1416
+ // Dark blue-gray
1255
1417
  })
1256
1418
  };
1257
1419
  }
@@ -1323,8 +1485,18 @@ var init_vscode_dark_plus_theme = __esm({
1323
1485
  // Blue
1324
1486
  dockerRunning: rgb(74, 222, 128),
1325
1487
  // Green
1326
- dockerStopped: rgb(171, 178, 191)
1488
+ dockerStopped: rgb(171, 178, 191),
1327
1489
  // Gray
1490
+ sysmonCpu: rgb(248, 113, 113),
1491
+ // Red (alert)
1492
+ sysmonRam: rgb(96, 165, 250),
1493
+ // Blue (info)
1494
+ sysmonDisk: rgb(251, 191, 36),
1495
+ // Yellow (warning)
1496
+ sysmonNetwork: rgb(74, 222, 128),
1497
+ // Green (success)
1498
+ sysmonSeparator: rgb(86, 92, 104)
1499
+ // Dark gray
1328
1500
  })
1329
1501
  };
1330
1502
  }
@@ -1798,13 +1970,13 @@ function truncatePath(path2) {
1798
1970
  return path2;
1799
1971
  }
1800
1972
  const parts = path2.split("/");
1801
- return `.../${parts[parts.length - 1]}`;
1973
+ return ".../" + parts[parts.length - 1];
1802
1974
  }
1803
1975
  function formatTool(name, target, colors2) {
1804
1976
  const nameStr = colorize(name, colors2.tools.name);
1805
1977
  if (target) {
1806
- const targetStr = colorize(`: ${truncatePath(target)}`, colors2.tools.target);
1807
- return `${nameStr}${targetStr}`;
1978
+ const targetStr = colorize(": " + truncatePath(target), colors2.tools.target);
1979
+ return nameStr + targetStr;
1808
1980
  }
1809
1981
  return nameStr;
1810
1982
  }
@@ -1818,7 +1990,7 @@ function pluralizeTool(name) {
1818
1990
  Grep: "Greps",
1819
1991
  Glob: "Globs"
1820
1992
  };
1821
- return irregular[name] || `${name}s`;
1993
+ return irregular[name] || name + "s";
1822
1994
  }
1823
1995
  function getDefaultColors() {
1824
1996
  return {
@@ -1890,6 +2062,13 @@ function getDefaultColors() {
1890
2062
  count: "\x1B[37m",
1891
2063
  running: "\x1B[32m",
1892
2064
  stopped: "\x1B[31m"
2065
+ },
2066
+ sysmon: {
2067
+ cpu: "\x1B[31m",
2068
+ ram: "\x1B[36m",
2069
+ disk: "\x1B[33m",
2070
+ network: "\x1B[32m",
2071
+ separator: "\x1B[90m"
1893
2072
  }
1894
2073
  };
1895
2074
  }
@@ -1925,19 +2104,19 @@ var init_styles = __esm({
1925
2104
  const completedCount = completedMap.get(name) ?? 0;
1926
2105
  if (runningCount > 0 && completedCount > 0) {
1927
2106
  const nameStr = colorize(name, c.tools.name);
1928
- const runningStr = colorize(`${runningCount} running`, c.tools.running);
1929
- const doneStr = colorize(`${completedCount} done`, c.tools.completed);
1930
- parts.push(`${nameStr} (${runningStr}, ${doneStr})`);
2107
+ const runningStr = colorize(runningCount + " running", c.tools.running);
2108
+ const doneStr = colorize(completedCount + " done", c.tools.completed);
2109
+ parts.push(nameStr + " (" + runningStr + ", " + doneStr + ")");
1931
2110
  } else if (completedCount > 0) {
1932
2111
  const pluralName = pluralizeTool(name);
1933
2112
  const nameStr = colorize(pluralName, c.tools.name);
1934
- const countStr = colorize(`${completedCount}`, c.tools.count);
1935
- parts.push(`${nameStr}: ${countStr}`);
2113
+ const countStr = colorize(String(completedCount), c.tools.count);
2114
+ parts.push(nameStr + ": " + countStr);
1936
2115
  } else if (runningCount > 0) {
1937
2116
  const nameStr = colorize(name, c.tools.name);
1938
- const runningStr = colorize(`${runningCount} running`, c.tools.running);
2117
+ const runningStr = colorize(runningCount + " running", c.tools.running);
1939
2118
  const doneStr = colorize("0 done", c.tools.completed);
1940
- parts.push(`${nameStr} (${runningStr}, ${doneStr})`);
2119
+ parts.push(nameStr + " (" + runningStr + ", " + doneStr + ")");
1941
2120
  }
1942
2121
  }
1943
2122
  if (parts.length === 0) {
@@ -1952,10 +2131,10 @@ var init_styles = __esm({
1952
2131
  const parts = [];
1953
2132
  const c = colors2 ?? getDefaultColors();
1954
2133
  for (const tool of data.running) {
1955
- parts.push(`[${colorize(tool.name, c.tools.name)}]`);
2134
+ parts.push("[" + colorize(tool.name, c.tools.name) + "]");
1956
2135
  }
1957
2136
  for (const [name] of data.completed.slice(0, 3)) {
1958
- parts.push(`[${colorize(name, c.tools.completed)}]`);
2137
+ parts.push("[" + colorize(name, c.tools.completed) + "]");
1959
2138
  }
1960
2139
  if (parts.length === 0) {
1961
2140
  return "";
@@ -2005,18 +2184,18 @@ var init_styles = __esm({
2005
2184
  const emoji = emojis[name] ?? "\u{1F527}";
2006
2185
  if (runningCount > 0 && completedCount > 0) {
2007
2186
  const nameStr = colorize(name, c.tools.name);
2008
- const runningStr = colorize(`\u25B6${runningCount}`, c.tools.running);
2009
- const doneStr = colorize(`\u2713${completedCount}`, c.tools.completed);
2010
- parts.push(`${emoji} ${nameStr} (${runningStr}, ${doneStr})`);
2187
+ const runningStr = colorize("\u25B6" + runningCount, c.tools.running);
2188
+ const doneStr = colorize("\u2713" + completedCount, c.tools.completed);
2189
+ parts.push(emoji + " " + nameStr + " (" + runningStr + ", " + doneStr + ")");
2011
2190
  } else if (completedCount > 0) {
2012
2191
  const pluralName = pluralizeTool(name);
2013
2192
  const nameStr = colorize(pluralName, c.tools.name);
2014
- const countStr = colorize(`${completedCount}`, c.tools.count);
2015
- parts.push(`${emoji} ${nameStr}: ${countStr}`);
2193
+ const countStr = colorize(String(completedCount), c.tools.count);
2194
+ parts.push(emoji + " " + nameStr + ": " + countStr);
2016
2195
  } else if (runningCount > 0) {
2017
2196
  const nameStr = colorize(name, c.tools.name);
2018
- const runningStr = colorize(`\u25B6${runningCount}`, c.tools.running);
2019
- parts.push(`${emoji} ${nameStr} (${runningStr})`);
2197
+ const runningStr = colorize("\u25B6" + runningCount, c.tools.running);
2198
+ parts.push(emoji + " " + nameStr + " (" + runningStr + ")");
2020
2199
  }
2021
2200
  }
2022
2201
  if (parts.length === 0) {
@@ -2032,13 +2211,13 @@ var init_styles = __esm({
2032
2211
  const c = colors2 ?? getDefaultColors();
2033
2212
  for (const tool of data.running) {
2034
2213
  const label = colorize("Running:", c.tools.running);
2035
- parts.push(`${label} ${formatTool(tool.name, tool.target, c)}`);
2214
+ parts.push(label + " " + formatTool(tool.name, tool.target, c));
2036
2215
  }
2037
2216
  const sorted = data.completed.slice(0, 3);
2038
2217
  for (const [name, count] of sorted) {
2039
2218
  const label = colorize("Completed:", c.tools.completed);
2040
- const countStr = colorize(`(${count}x)`, c.tools.count);
2041
- parts.push(`${label} ${name} ${countStr}`);
2219
+ const countStr = colorize("(" + count + "x)", c.tools.count);
2220
+ parts.push(label + " " + name + " " + countStr);
2042
2221
  }
2043
2222
  if (parts.length === 0) {
2044
2223
  return "";
@@ -2053,19 +2232,19 @@ var init_styles = __esm({
2053
2232
  const allTools = [
2054
2233
  ...data.running.map((t) => {
2055
2234
  const indicator = colorize("\u25D0", c.tools.running);
2056
- return `${indicator} ${formatTool(t.name, t.target, c)}`;
2235
+ return indicator + " " + formatTool(t.name, t.target, c);
2057
2236
  }),
2058
2237
  ...data.completed.slice(0, 3).map(([name, count]) => {
2059
2238
  const indicator = colorize("\u2713", c.tools.completed);
2060
- const countStr = colorize(`\xD7${count}`, c.tools.count);
2061
- return `${indicator} ${name} ${countStr}`;
2239
+ const countStr = colorize("\xD7" + count, c.tools.count);
2240
+ return indicator + " " + name + " " + countStr;
2062
2241
  })
2063
2242
  ];
2064
2243
  if (allTools.length === 0) {
2065
2244
  return "";
2066
2245
  }
2067
2246
  const prefix = colors2 ? colorize("Tools:", c.semantic.info) : "Tools:";
2068
- return `${prefix}: ${allTools.join(" | ")}`;
2247
+ return prefix + ": " + allTools.join(" | ");
2069
2248
  },
2070
2249
  /**
2071
2250
  * indicator: ● bullet indicators
@@ -2075,11 +2254,11 @@ var init_styles = __esm({
2075
2254
  const c = colors2 ?? getDefaultColors();
2076
2255
  for (const tool of data.running) {
2077
2256
  const bullet = colorize("\u25CF", c.semantic.info);
2078
- parts.push(`${bullet} ${formatTool(tool.name, tool.target, c)}`);
2257
+ parts.push(bullet + " " + formatTool(tool.name, tool.target, c));
2079
2258
  }
2080
2259
  for (const [name] of data.completed.slice(0, 3)) {
2081
2260
  const bullet = colorize("\u25CF", c.tools.completed);
2082
- parts.push(`${bullet} ${name}`);
2261
+ parts.push(bullet + " " + name);
2083
2262
  }
2084
2263
  if (parts.length === 0) {
2085
2264
  return "";
@@ -8030,6 +8209,127 @@ init_git_tag_widget();
8030
8209
  init_git_widget();
8031
8210
  init_lines_widget();
8032
8211
  init_model_widget();
8212
+
8213
+ // src/widgets/sysmon-widget.ts
8214
+ init_widget_types();
8215
+ init_theme();
8216
+
8217
+ // src/widgets/sysmon/styles.ts
8218
+ init_colors();
8219
+ function formatGB(gb) {
8220
+ if (gb < 1) {
8221
+ return `${Math.round(gb * 1024)}MB`;
8222
+ }
8223
+ const formatted = gb.toFixed(1);
8224
+ return formatted.endsWith(".0") ? `${formatted.slice(0, -2)}GB` : `${formatted}GB`;
8225
+ }
8226
+ function formatMB(mb) {
8227
+ if (mb < 0.1) {
8228
+ const kb = mb * 1024;
8229
+ const formatted2 = kb.toFixed(1);
8230
+ return formatted2.endsWith(".0") ? `${formatted2.slice(0, -2)}KB` : `${formatted2}KB`;
8231
+ }
8232
+ const formatted = mb.toFixed(1);
8233
+ return formatted.endsWith(".0") ? `${formatted.slice(0, -2)}MB` : `${formatted}MB`;
8234
+ }
8235
+ var sysmonStyles = {
8236
+ balanced: (data, colors2) => {
8237
+ const cpu = colors2 ? colorize(`CPU ${data.cpu.percent}%`, colors2.cpu) : `CPU ${data.cpu.percent}%`;
8238
+ const ram = colors2 ? colorize(`RAM ${formatGB(data.memory.used)}`, colors2.ram) : `RAM ${formatGB(data.memory.used)}`;
8239
+ const disk = colors2 ? colorize(`Disk ${data.disk.percent}%`, colors2.disk) : `Disk ${data.disk.percent}%`;
8240
+ const net = colors2 ? colorize(`Net \u2193${formatMB(data.network.rxSec)}/s`, colors2.network) : `Net \u2193${formatMB(data.network.rxSec)}/s`;
8241
+ const sep = colors2 ? colorize("|", colors2.separator) : "|";
8242
+ return `${cpu} ${sep} ${ram} ${sep} ${disk} ${sep} ${net}`;
8243
+ },
8244
+ compact: (data, colors2) => {
8245
+ const cpu = colors2 ? colorize(`CPU${data.cpu.percent}%`, colors2.cpu) : `CPU${data.cpu.percent}%`;
8246
+ const ram = colors2 ? colorize(`RAM${formatGB(data.memory.used)}`, colors2.ram) : `RAM${formatGB(data.memory.used)}`;
8247
+ const disk = colors2 ? colorize(`D${data.disk.percent}%`, colors2.disk) : `D${data.disk.percent}%`;
8248
+ const net = colors2 ? colorize(`\u2193${formatMB(data.network.rxSec)}/s`, colors2.network) : `\u2193${formatMB(data.network.rxSec)}/s`;
8249
+ return `${cpu} ${ram} ${disk} ${net}`;
8250
+ },
8251
+ playful: (data, colors2) => {
8252
+ const cpu = colors2 ? colorize(`${data.cpu.percent}%`, colors2.cpu) : `${data.cpu.percent}%`;
8253
+ const ram = colors2 ? colorize(formatGB(data.memory.used), colors2.ram) : formatGB(data.memory.used);
8254
+ const disk = colors2 ? colorize(`${data.disk.percent}%`, colors2.disk) : `${data.disk.percent}%`;
8255
+ const net = colors2 ? colorize(`\u2193${formatMB(data.network.rxSec)}/s`, colors2.network) : `\u2193${formatMB(data.network.rxSec)}/s`;
8256
+ const sep = colors2 ? colorize("|", colors2.separator) : "|";
8257
+ return `\u{1F5A5}\uFE0F ${cpu} ${sep} \u{1F4BE} ${ram} ${sep} \u{1F4BF} ${disk} ${sep} \u{1F310} ${net}`;
8258
+ },
8259
+ verbose: (data, colors2) => {
8260
+ const cpu = colors2 ? colorize(`CPU: ${data.cpu.percent}%`, colors2.cpu) : `CPU: ${data.cpu.percent}%`;
8261
+ const ram = colors2 ? colorize(`RAM: ${formatGB(data.memory.used)}/${formatGB(data.memory.total)}`, colors2.ram) : `RAM: ${formatGB(data.memory.used)}/${formatGB(data.memory.total)}`;
8262
+ const disk = colors2 ? colorize(`Disk: ${formatGB(data.disk.used)}/${formatGB(data.disk.total)}`, colors2.disk) : `Disk: ${formatGB(data.disk.used)}/${formatGB(data.disk.total)}`;
8263
+ const net = colors2 ? colorize(
8264
+ `Net: \u2193${formatMB(data.network.rxSec)}/s \u2191${formatMB(data.network.txSec)}/s`,
8265
+ colors2.network
8266
+ ) : `Net: \u2193${formatMB(data.network.rxSec)}/s \u2191${formatMB(data.network.txSec)}/s`;
8267
+ return `${cpu} | ${ram} | ${disk} | ${net}`;
8268
+ }
8269
+ };
8270
+
8271
+ // src/widgets/sysmon-widget.ts
8272
+ var SysmonWidget = class {
8273
+ id = "sysmon";
8274
+ metadata = createWidgetMetadata(
8275
+ "Sysmon",
8276
+ "System monitoring: CPU, RAM, Disk, Network metrics",
8277
+ "1.0.0",
8278
+ "claude-scope",
8279
+ 2
8280
+ // Default to line 2
8281
+ );
8282
+ colors;
8283
+ provider;
8284
+ _lineOverride;
8285
+ styleFn = sysmonStyles.balanced;
8286
+ currentMetrics = null;
8287
+ updateIntervalMs = 2500;
8288
+ // 2.5 seconds
8289
+ enabled = true;
8290
+ constructor(colors2, provider) {
8291
+ this.colors = colors2 ?? DEFAULT_THEME;
8292
+ this.provider = provider ?? null;
8293
+ }
8294
+ async initialize(context) {
8295
+ this.enabled = context.config?.enabled !== false;
8296
+ if (!this.provider || !this.enabled) {
8297
+ return;
8298
+ }
8299
+ this.currentMetrics = await this.provider.getMetrics();
8300
+ this.provider.startUpdate(this.updateIntervalMs, (metrics) => {
8301
+ this.currentMetrics = metrics;
8302
+ });
8303
+ }
8304
+ async render(_context) {
8305
+ if (!this.currentMetrics || !this.isEnabled()) {
8306
+ return null;
8307
+ }
8308
+ return this.styleFn(this.currentMetrics, this.colors.sysmon);
8309
+ }
8310
+ async update(_data) {
8311
+ }
8312
+ isEnabled() {
8313
+ return this.enabled && this.provider !== null;
8314
+ }
8315
+ async cleanup() {
8316
+ this.provider?.stopUpdate();
8317
+ }
8318
+ setStyle(style = "balanced") {
8319
+ const fn = sysmonStyles[style];
8320
+ if (fn) {
8321
+ this.styleFn = fn;
8322
+ }
8323
+ }
8324
+ setLine(line) {
8325
+ this._lineOverride = line;
8326
+ }
8327
+ getLine() {
8328
+ return this._lineOverride ?? this.metadata.line ?? 2;
8329
+ }
8330
+ };
8331
+
8332
+ // src/cli/commands/quick-config/preview.ts
8033
8333
  init_demo_data();
8034
8334
 
8035
8335
  // src/cli/commands/quick-config/index.ts
@@ -8873,6 +9173,8 @@ var WidgetFactory = class {
8873
9173
  return new DockerWidget(DEFAULT_THEME);
8874
9174
  case "poker":
8875
9175
  return new PokerWidget(DEFAULT_THEME);
9176
+ case "sysmon":
9177
+ return new SysmonWidget(DEFAULT_THEME);
8876
9178
  case "empty-line":
8877
9179
  return new EmptyLineWidget();
8878
9180
  default:
@@ -8897,6 +9199,7 @@ var WidgetFactory = class {
8897
9199
  "dev-server",
8898
9200
  "docker",
8899
9201
  "poker",
9202
+ "sysmon",
8900
9203
  "empty-line"
8901
9204
  ];
8902
9205
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "claude-scope",
3
- "version": "0.8.20",
3
+ "version": "0.8.21",
4
4
  "description": "Claude Code plugin for session status and analytics",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -51,6 +51,7 @@
51
51
  ]
52
52
  },
53
53
  "dependencies": {
54
- "@inquirer/prompts": "^7.10.1"
54
+ "@inquirer/prompts": "^7.10.1",
55
+ "systeminformation": "^5.30.3"
55
56
  }
56
57
  }