@phenx-inc/ctlsurf 0.16.0 → 0.17.0
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/out/headless/index.mjs +549 -116
- package/out/headless/index.mjs.map +4 -4
- package/out/main/index.js +416 -38
- package/out/preload/index.js +3 -0
- package/out/renderer/assets/{cssMode-Xx1-SozN.js → cssMode-BtQxI2Eb.js} +3 -3
- package/out/renderer/assets/{freemarker2-DM49yPw1.js → freemarker2-DRW5dmY5.js} +1 -1
- package/out/renderer/assets/{handlebars-DJJBblpV.js → handlebars-CFLF3cP7.js} +1 -1
- package/out/renderer/assets/{html-DnMnJOxw.js → html-DtnBOkwp.js} +1 -1
- package/out/renderer/assets/{htmlMode-BG5u2CSH.js → htmlMode-DMVysDCg.js} +3 -3
- package/out/renderer/assets/{index-DID1LlMU.css → index-CEjwKjtd.css} +45 -0
- package/out/renderer/assets/{index-D65QIRev.js → index-Dm70hk5s.js} +292 -38
- package/out/renderer/assets/{javascript-Dci_phmN.js → javascript-ChlyA1sf.js} +2 -2
- package/out/renderer/assets/{jsonMode-Dmp3JJSm.js → jsonMode-D1_oHzeN.js} +3 -3
- package/out/renderer/assets/{liquid-C9KVysk1.js → liquid-D4ftdy1G.js} +1 -1
- package/out/renderer/assets/{lspLanguageFeatures-IDD0-KWa.js → lspLanguageFeatures-Ckqu5ubG.js} +1 -1
- package/out/renderer/assets/{mdx-ascmBFXX.js → mdx-B9wsVYSC.js} +1 -1
- package/out/renderer/assets/{python-DcbM4Hy5.js → python-e23tD6IS.js} +1 -1
- package/out/renderer/assets/{razor-XJROxpYK.js → razor-CrDyXj3d.js} +1 -1
- package/out/renderer/assets/{tsMode-EXbzul3n.js → tsMode-BwGC5o4O.js} +1 -1
- package/out/renderer/assets/{typescript-DhTtFBLt.js → typescript-Do-98d_O.js} +1 -1
- package/out/renderer/assets/{xml-BLfEkVl1.js → xml-Dpdu5R3m.js} +1 -1
- package/out/renderer/assets/{yaml-DpzsqvWa.js → yaml-B0Zt7LCJ.js} +1 -1
- package/out/renderer/index.html +2 -2
- package/package.json +1 -1
- package/scripts/test-terminal-scroll.cjs +64 -0
- package/src/main/headless.ts +12 -0
- package/src/main/index.ts +8 -0
- package/src/main/monitor.ts +540 -0
- package/src/main/orchestrator.ts +10 -0
- package/src/main/pty.ts +5 -0
- package/src/main/tui.ts +37 -3
- package/src/preload/index.ts +4 -0
- package/src/renderer/App.tsx +9 -1
- package/src/renderer/components/Resources.tsx +217 -0
- package/src/renderer/components/StatusBar.tsx +6 -1
- package/src/renderer/components/TerminalPanel.tsx +54 -20
- package/src/renderer/styles.css +45 -0
|
@@ -8346,6 +8346,51 @@ html, body, #root {
|
|
|
8346
8346
|
font-weight: 500;
|
|
8347
8347
|
}
|
|
8348
8348
|
|
|
8349
|
+
/* Resources + plan quota (status bar gauges and details panel) */
|
|
8350
|
+
.res-bar { display: flex; align-items: center; gap: 12px; cursor: pointer; padding: 1px 6px; margin-right: 8px; border-radius: 4px; }
|
|
8351
|
+
.res-bar:hover { background: var(--bg-surface); }
|
|
8352
|
+
.res-group { display: inline-flex; align-items: center; gap: 7px; }
|
|
8353
|
+
.res-group + .res-group { padding-left: 10px; border-left: 1px solid var(--border-subtle); }
|
|
8354
|
+
.res-name { color: var(--text-soft); }
|
|
8355
|
+
.res-off { color: var(--text-muted); font-style: italic; }
|
|
8356
|
+
.res-gauge { display: inline-flex; align-items: center; gap: 3px; }
|
|
8357
|
+
.res-gauge-bar { width: 5px; height: 13px; background: var(--bg-surface-hi); border-radius: 2px; display: flex; align-items: flex-end; overflow: hidden; }
|
|
8358
|
+
.res-gauge-bar > span { width: 100%; border-radius: 2px; transition: height .6s ease; }
|
|
8359
|
+
.res-gauge-k { color: var(--text-muted); }
|
|
8360
|
+
.res-gauge-v { color: var(--text-bright); font-family: 'JetBrains Mono', 'Fira Code', monospace; min-width: 26px; }
|
|
8361
|
+
|
|
8362
|
+
.res-panel { position: fixed; right: 0; bottom: 25px; width: 440px; max-height: 75vh; z-index: 50; cursor: default;
|
|
8363
|
+
background: var(--bg-raised); border: 1px solid var(--border); border-right: none; border-radius: 8px 0 0 0;
|
|
8364
|
+
box-shadow: -12px -12px 40px var(--shadow-color); display: flex; flex-direction: column; animation: res-rise .18s ease-out; }
|
|
8365
|
+
@keyframes res-rise { from { transform: translateY(20px); opacity: 0; } to { transform: none; opacity: 1; } }
|
|
8366
|
+
.res-panel-head { display: flex; align-items: baseline; gap: 10px; padding: 12px 14px 6px; }
|
|
8367
|
+
.res-panel-head h2 { margin: 0; font-size: 14px; color: var(--text-bright); }
|
|
8368
|
+
.res-close { background: none; border: none; color: var(--text-muted); cursor: pointer; font-size: 12px; }
|
|
8369
|
+
.res-close:hover { color: var(--text-bright); }
|
|
8370
|
+
.res-panel-body { overflow: auto; padding: 4px 14px 14px; display: flex; flex-direction: column; gap: 10px; font-size: 12px; color: var(--text); }
|
|
8371
|
+
.res-card { background: var(--bg-surface); border-radius: 6px; padding: 8px 10px; display: flex; flex-direction: column; gap: 5px; }
|
|
8372
|
+
.res-head { display: flex; align-items: center; gap: 8px; color: var(--text-bright); }
|
|
8373
|
+
.res-spacer { flex: 1; }
|
|
8374
|
+
.res-muted { color: var(--text-muted); font-size: 11.5px; }
|
|
8375
|
+
.res-note { margin-top: 2px; }
|
|
8376
|
+
.res-err { color: var(--danger); }
|
|
8377
|
+
.res-tag { font-size: 10.5px; color: var(--accent); border: 1px solid var(--border); border-radius: 3px; padding: 0 4px; }
|
|
8378
|
+
.res-dot { width: 7px; height: 7px; border-radius: 50%; }
|
|
8379
|
+
.res-dot.ok { background: var(--success); }
|
|
8380
|
+
.res-dot.bad { background: var(--danger); }
|
|
8381
|
+
.res-row { display: flex; align-items: center; gap: 8px; }
|
|
8382
|
+
.res-k { width: 40px; color: var(--text-soft); flex: none; }
|
|
8383
|
+
.res-k.wide { width: 112px; }
|
|
8384
|
+
.res-v { font-family: 'JetBrains Mono', 'Fira Code', monospace; font-size: 11.5px; min-width: 104px; }
|
|
8385
|
+
.res-v.narrow { min-width: 36px; }
|
|
8386
|
+
.res-resets { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
|
|
8387
|
+
.res-rbar { flex: 1; height: 6px; background: var(--bg-surface-hi); border-radius: 3px; overflow: hidden; min-width: 50px; }
|
|
8388
|
+
.res-rbar > span { display: block; height: 100%; border-radius: 3px; transition: width .6s ease; }
|
|
8389
|
+
.res-spark { flex: none; }
|
|
8390
|
+
.res-agent { padding: 2px 0; }
|
|
8391
|
+
.res-agent-name { color: var(--text); }
|
|
8392
|
+
.res-agent-name.active { color: var(--text-bright); }
|
|
8393
|
+
|
|
8349
8394
|
.tracking-dot {
|
|
8350
8395
|
width: 6px;
|
|
8351
8396
|
height: 6px;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./cssMode-
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./cssMode-BtQxI2Eb.js","./lspLanguageFeatures-Ckqu5ubG.js","./htmlMode-DMVysDCg.js","./jsonMode-D1_oHzeN.js","./javascript-ChlyA1sf.js","./typescript-Do-98d_O.js"])))=>i.map(i=>d[i]);
|
|
2
2
|
function getDefaultExportFromCjs(x) {
|
|
3
3
|
return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, "default") ? x["default"] : x;
|
|
4
4
|
}
|
|
@@ -19525,6 +19525,20 @@ function markGesture(tabId) {
|
|
|
19525
19525
|
const s = _terminals.get(tabId);
|
|
19526
19526
|
if (s) s.userScrollPending = true;
|
|
19527
19527
|
}
|
|
19528
|
+
function followLatest(state) {
|
|
19529
|
+
state.userScrollPending = false;
|
|
19530
|
+
setPinned(state, true);
|
|
19531
|
+
reassert(state);
|
|
19532
|
+
}
|
|
19533
|
+
function rememberScrollPosition(state) {
|
|
19534
|
+
state.userScrollPending = false;
|
|
19535
|
+
if (isAtBottom(state.terminal)) {
|
|
19536
|
+
setPinned(state, true);
|
|
19537
|
+
} else {
|
|
19538
|
+
state.anchorLine = state.terminal.buffer.active.viewportY;
|
|
19539
|
+
setPinned(state, false);
|
|
19540
|
+
}
|
|
19541
|
+
}
|
|
19528
19542
|
function getOrCreateTerminal(tabId, onExit) {
|
|
19529
19543
|
const existing = _terminals.get(tabId);
|
|
19530
19544
|
if (existing) {
|
|
@@ -19550,7 +19564,9 @@ function getOrCreateTerminal(tabId, onExit) {
|
|
|
19550
19564
|
fontFamily: "'JetBrains Mono', 'Fira Code', 'Cascadia Code', 'SF Mono', monospace",
|
|
19551
19565
|
theme: currentTheme().terminal,
|
|
19552
19566
|
scrollback: 1e4,
|
|
19553
|
-
|
|
19567
|
+
// Follow explicit keyboard/paste input below. xterm also counts mouse
|
|
19568
|
+
// reports as user input, which must not pull someone out of scrollback.
|
|
19569
|
+
scrollOnUserInput: false,
|
|
19554
19570
|
allowTransparency: false
|
|
19555
19571
|
});
|
|
19556
19572
|
const fitAddon = new addonFitExports.FitAddon();
|
|
@@ -19612,17 +19628,10 @@ function getOrCreateTerminal(tabId, onExit) {
|
|
|
19612
19628
|
reassert(state);
|
|
19613
19629
|
return;
|
|
19614
19630
|
}
|
|
19615
|
-
state
|
|
19616
|
-
if (isAtBottom(terminal)) {
|
|
19617
|
-
setPinned(state, true);
|
|
19618
|
-
} else {
|
|
19619
|
-
state.anchorLine = terminal.buffer.active.viewportY;
|
|
19620
|
-
setPinned(state, false);
|
|
19621
|
-
}
|
|
19631
|
+
rememberScrollPosition(state);
|
|
19622
19632
|
});
|
|
19633
|
+
terminal.onKey(() => followLatest(state));
|
|
19623
19634
|
terminal.onData((data) => {
|
|
19624
|
-
setPinned(state, true);
|
|
19625
|
-
terminal.scrollToBottom();
|
|
19626
19635
|
window.worker.writePty(tabId, data);
|
|
19627
19636
|
});
|
|
19628
19637
|
state.unsubData = window.worker.onPtyData((eventTabId, data) => {
|
|
@@ -19680,8 +19689,7 @@ function TerminalPanel({ tabId, agent, sessionVersion, onSpawn, onExit, isActive
|
|
|
19680
19689
|
const jumpToLatest = () => {
|
|
19681
19690
|
const s = _terminals.get(tabId);
|
|
19682
19691
|
if (!s) return;
|
|
19683
|
-
|
|
19684
|
-
s.terminal.scrollToBottom();
|
|
19692
|
+
followLatest(s);
|
|
19685
19693
|
s.terminal.focus();
|
|
19686
19694
|
};
|
|
19687
19695
|
const handleContextMenu = (e) => {
|
|
@@ -19761,6 +19769,22 @@ function TerminalPanel({ tabId, agent, sessionVersion, onSpawn, onExit, isActive
|
|
|
19761
19769
|
if (attached) reassert(attached);
|
|
19762
19770
|
const onWheel = () => markGesture(tabId);
|
|
19763
19771
|
terminal.element?.addEventListener("wheel", onWheel, { capture: true, passive: true });
|
|
19772
|
+
const viewport = terminal.element?.querySelector(".xterm-viewport");
|
|
19773
|
+
const onViewportScroll = () => {
|
|
19774
|
+
const state = _terminals.get(tabId);
|
|
19775
|
+
if (state && !state.holding && state.userScrollPending) rememberScrollPosition(state);
|
|
19776
|
+
};
|
|
19777
|
+
viewport?.addEventListener("scroll", onViewportScroll);
|
|
19778
|
+
const onTextInput = () => {
|
|
19779
|
+
const state = _terminals.get(tabId);
|
|
19780
|
+
if (state) followLatest(state);
|
|
19781
|
+
};
|
|
19782
|
+
const onPaste = (event) => {
|
|
19783
|
+
if (event.clipboardData?.getData("text/plain")) onTextInput();
|
|
19784
|
+
};
|
|
19785
|
+
terminal.textarea?.addEventListener("paste", onPaste, true);
|
|
19786
|
+
terminal.textarea?.addEventListener("input", onTextInput, true);
|
|
19787
|
+
terminal.textarea?.addEventListener("compositionend", onTextInput, true);
|
|
19764
19788
|
let resizeTimeout;
|
|
19765
19789
|
const handleResize = () => {
|
|
19766
19790
|
clearTimeout(resizeTimeout);
|
|
@@ -19784,6 +19808,10 @@ function TerminalPanel({ tabId, agent, sessionVersion, onSpawn, onExit, isActive
|
|
|
19784
19808
|
window.removeEventListener("resize", handleResize);
|
|
19785
19809
|
observer.disconnect();
|
|
19786
19810
|
terminal.element?.removeEventListener("wheel", onWheel, true);
|
|
19811
|
+
viewport?.removeEventListener("scroll", onViewportScroll);
|
|
19812
|
+
terminal.textarea?.removeEventListener("paste", onPaste, true);
|
|
19813
|
+
terminal.textarea?.removeEventListener("input", onTextInput, true);
|
|
19814
|
+
terminal.textarea?.removeEventListener("compositionend", onTextInput, true);
|
|
19787
19815
|
};
|
|
19788
19816
|
}, [tabId, onExit]);
|
|
19789
19817
|
reactExports.useEffect(() => {
|
|
@@ -208443,7 +208471,7 @@ const lessDefaults = new LanguageServiceDefaultsImpl$3(
|
|
|
208443
208471
|
modeConfigurationDefault$2
|
|
208444
208472
|
);
|
|
208445
208473
|
function getMode$3() {
|
|
208446
|
-
return __vitePreload(() => import("./cssMode-
|
|
208474
|
+
return __vitePreload(() => import("./cssMode-BtQxI2Eb.js"), true ? __vite__mapDeps([0,1]) : void 0, import.meta.url);
|
|
208447
208475
|
}
|
|
208448
208476
|
languages.onLanguage("less", () => {
|
|
208449
208477
|
getMode$3().then((mode2) => mode2.setupMode(lessDefaults));
|
|
@@ -208548,7 +208576,7 @@ const razorLanguageService = registerHTMLLanguageService(
|
|
|
208548
208576
|
);
|
|
208549
208577
|
const razorDefaults = razorLanguageService.defaults;
|
|
208550
208578
|
function getMode$2() {
|
|
208551
|
-
return __vitePreload(() => import("./htmlMode-
|
|
208579
|
+
return __vitePreload(() => import("./htmlMode-DMVysDCg.js"), true ? __vite__mapDeps([2,1]) : void 0, import.meta.url);
|
|
208552
208580
|
}
|
|
208553
208581
|
function registerHTMLLanguageService(languageId, options = optionsDefault, modeConfiguration = getConfigurationDefault(languageId)) {
|
|
208554
208582
|
const defaults = new LanguageServiceDefaultsImpl$2(languageId, options, modeConfiguration);
|
|
@@ -208632,7 +208660,7 @@ const jsonDefaults = new LanguageServiceDefaultsImpl$1(
|
|
|
208632
208660
|
);
|
|
208633
208661
|
const getWorker$1 = () => getMode$1().then((mode2) => mode2.getWorker());
|
|
208634
208662
|
function getMode$1() {
|
|
208635
|
-
return __vitePreload(() => import("./jsonMode-
|
|
208663
|
+
return __vitePreload(() => import("./jsonMode-D1_oHzeN.js"), true ? __vite__mapDeps([3,1]) : void 0, import.meta.url);
|
|
208636
208664
|
}
|
|
208637
208665
|
languages.register({
|
|
208638
208666
|
id: "json",
|
|
@@ -208878,7 +208906,7 @@ const getJavaScriptWorker = () => {
|
|
|
208878
208906
|
return getMode().then((mode) => mode.getJavaScriptWorker());
|
|
208879
208907
|
};
|
|
208880
208908
|
function getMode() {
|
|
208881
|
-
return __vitePreload(() => import("./tsMode-
|
|
208909
|
+
return __vitePreload(() => import("./tsMode-BwGC5o4O.js"), true ? [] : void 0, import.meta.url);
|
|
208882
208910
|
}
|
|
208883
208911
|
languages.onLanguage("typescript", () => {
|
|
208884
208912
|
return getMode().then((mode) => mode.setupTypeScript(typescriptDefaults));
|
|
@@ -209073,49 +209101,49 @@ registerLanguage({
|
|
|
209073
209101
|
extensions: [".ftl", ".ftlh", ".ftlx"],
|
|
209074
209102
|
aliases: ["FreeMarker2", "Apache FreeMarker2"],
|
|
209075
209103
|
loader: () => {
|
|
209076
|
-
return __vitePreload(() => import("./freemarker2-
|
|
209104
|
+
return __vitePreload(() => import("./freemarker2-DRW5dmY5.js"), true ? [] : void 0, import.meta.url).then((m) => m.TagAutoInterpolationDollar);
|
|
209077
209105
|
}
|
|
209078
209106
|
});
|
|
209079
209107
|
registerLanguage({
|
|
209080
209108
|
id: "freemarker2.tag-angle.interpolation-dollar",
|
|
209081
209109
|
aliases: ["FreeMarker2 (Angle/Dollar)", "Apache FreeMarker2 (Angle/Dollar)"],
|
|
209082
209110
|
loader: () => {
|
|
209083
|
-
return __vitePreload(() => import("./freemarker2-
|
|
209111
|
+
return __vitePreload(() => import("./freemarker2-DRW5dmY5.js"), true ? [] : void 0, import.meta.url).then((m) => m.TagAngleInterpolationDollar);
|
|
209084
209112
|
}
|
|
209085
209113
|
});
|
|
209086
209114
|
registerLanguage({
|
|
209087
209115
|
id: "freemarker2.tag-bracket.interpolation-dollar",
|
|
209088
209116
|
aliases: ["FreeMarker2 (Bracket/Dollar)", "Apache FreeMarker2 (Bracket/Dollar)"],
|
|
209089
209117
|
loader: () => {
|
|
209090
|
-
return __vitePreload(() => import("./freemarker2-
|
|
209118
|
+
return __vitePreload(() => import("./freemarker2-DRW5dmY5.js"), true ? [] : void 0, import.meta.url).then((m) => m.TagBracketInterpolationDollar);
|
|
209091
209119
|
}
|
|
209092
209120
|
});
|
|
209093
209121
|
registerLanguage({
|
|
209094
209122
|
id: "freemarker2.tag-angle.interpolation-bracket",
|
|
209095
209123
|
aliases: ["FreeMarker2 (Angle/Bracket)", "Apache FreeMarker2 (Angle/Bracket)"],
|
|
209096
209124
|
loader: () => {
|
|
209097
|
-
return __vitePreload(() => import("./freemarker2-
|
|
209125
|
+
return __vitePreload(() => import("./freemarker2-DRW5dmY5.js"), true ? [] : void 0, import.meta.url).then((m) => m.TagAngleInterpolationBracket);
|
|
209098
209126
|
}
|
|
209099
209127
|
});
|
|
209100
209128
|
registerLanguage({
|
|
209101
209129
|
id: "freemarker2.tag-bracket.interpolation-bracket",
|
|
209102
209130
|
aliases: ["FreeMarker2 (Bracket/Bracket)", "Apache FreeMarker2 (Bracket/Bracket)"],
|
|
209103
209131
|
loader: () => {
|
|
209104
|
-
return __vitePreload(() => import("./freemarker2-
|
|
209132
|
+
return __vitePreload(() => import("./freemarker2-DRW5dmY5.js"), true ? [] : void 0, import.meta.url).then((m) => m.TagBracketInterpolationBracket);
|
|
209105
209133
|
}
|
|
209106
209134
|
});
|
|
209107
209135
|
registerLanguage({
|
|
209108
209136
|
id: "freemarker2.tag-auto.interpolation-dollar",
|
|
209109
209137
|
aliases: ["FreeMarker2 (Auto/Dollar)", "Apache FreeMarker2 (Auto/Dollar)"],
|
|
209110
209138
|
loader: () => {
|
|
209111
|
-
return __vitePreload(() => import("./freemarker2-
|
|
209139
|
+
return __vitePreload(() => import("./freemarker2-DRW5dmY5.js"), true ? [] : void 0, import.meta.url).then((m) => m.TagAutoInterpolationDollar);
|
|
209112
209140
|
}
|
|
209113
209141
|
});
|
|
209114
209142
|
registerLanguage({
|
|
209115
209143
|
id: "freemarker2.tag-auto.interpolation-bracket",
|
|
209116
209144
|
aliases: ["FreeMarker2 (Auto/Bracket)", "Apache FreeMarker2 (Auto/Bracket)"],
|
|
209117
209145
|
loader: () => {
|
|
209118
|
-
return __vitePreload(() => import("./freemarker2-
|
|
209146
|
+
return __vitePreload(() => import("./freemarker2-DRW5dmY5.js"), true ? [] : void 0, import.meta.url).then((m) => m.TagAutoInterpolationBracket);
|
|
209119
209147
|
}
|
|
209120
209148
|
});
|
|
209121
209149
|
registerLanguage({
|
|
@@ -209136,7 +209164,7 @@ registerLanguage({
|
|
|
209136
209164
|
extensions: [".handlebars", ".hbs"],
|
|
209137
209165
|
aliases: ["Handlebars", "handlebars", "hbs"],
|
|
209138
209166
|
mimetypes: ["text/x-handlebars-template"],
|
|
209139
|
-
loader: () => __vitePreload(() => import("./handlebars-
|
|
209167
|
+
loader: () => __vitePreload(() => import("./handlebars-CFLF3cP7.js"), true ? [] : void 0, import.meta.url)
|
|
209140
209168
|
});
|
|
209141
209169
|
registerLanguage({
|
|
209142
209170
|
id: "hcl",
|
|
@@ -209149,7 +209177,7 @@ registerLanguage({
|
|
|
209149
209177
|
extensions: [".html", ".htm", ".shtml", ".xhtml", ".mdoc", ".jsp", ".asp", ".aspx", ".jshtm"],
|
|
209150
209178
|
aliases: ["HTML", "htm", "html", "xhtml"],
|
|
209151
209179
|
mimetypes: ["text/html", "text/x-jshtm", "text/template", "text/ng-template"],
|
|
209152
|
-
loader: () => __vitePreload(() => import("./html-
|
|
209180
|
+
loader: () => __vitePreload(() => import("./html-DtnBOkwp.js"), true ? [] : void 0, import.meta.url)
|
|
209153
209181
|
});
|
|
209154
209182
|
registerLanguage({
|
|
209155
209183
|
id: "ini",
|
|
@@ -209172,7 +209200,7 @@ registerLanguage({
|
|
|
209172
209200
|
filenames: ["jakefile"],
|
|
209173
209201
|
aliases: ["JavaScript", "javascript", "js"],
|
|
209174
209202
|
mimetypes: ["text/javascript"],
|
|
209175
|
-
loader: () => __vitePreload(() => import("./javascript-
|
|
209203
|
+
loader: () => __vitePreload(() => import("./javascript-ChlyA1sf.js"), true ? __vite__mapDeps([4,5]) : void 0, import.meta.url)
|
|
209176
209204
|
});
|
|
209177
209205
|
registerLanguage({
|
|
209178
209206
|
id: "julia",
|
|
@@ -209211,7 +209239,7 @@ registerLanguage({
|
|
|
209211
209239
|
extensions: [".liquid", ".html.liquid"],
|
|
209212
209240
|
aliases: ["Liquid", "liquid"],
|
|
209213
209241
|
mimetypes: ["application/liquid"],
|
|
209214
|
-
loader: () => __vitePreload(() => import("./liquid-
|
|
209242
|
+
loader: () => __vitePreload(() => import("./liquid-D4ftdy1G.js"), true ? [] : void 0, import.meta.url)
|
|
209215
209243
|
});
|
|
209216
209244
|
registerLanguage({
|
|
209217
209245
|
id: "m3",
|
|
@@ -209229,7 +209257,7 @@ registerLanguage({
|
|
|
209229
209257
|
id: "mdx",
|
|
209230
209258
|
extensions: [".mdx"],
|
|
209231
209259
|
aliases: ["MDX", "mdx"],
|
|
209232
|
-
loader: () => __vitePreload(() => import("./mdx-
|
|
209260
|
+
loader: () => __vitePreload(() => import("./mdx-B9wsVYSC.js"), true ? [] : void 0, import.meta.url)
|
|
209233
209261
|
});
|
|
209234
209262
|
registerLanguage({
|
|
209235
209263
|
id: "mips",
|
|
@@ -209328,7 +209356,7 @@ registerLanguage({
|
|
|
209328
209356
|
extensions: [".py", ".rpy", ".pyw", ".cpy", ".gyp", ".gypi"],
|
|
209329
209357
|
aliases: ["Python", "py"],
|
|
209330
209358
|
firstLine: "^#!/.*\\bpython[0-9.-]*\\b",
|
|
209331
|
-
loader: () => __vitePreload(() => import("./python-
|
|
209359
|
+
loader: () => __vitePreload(() => import("./python-e23tD6IS.js"), true ? [] : void 0, import.meta.url)
|
|
209332
209360
|
});
|
|
209333
209361
|
registerLanguage({
|
|
209334
209362
|
id: "qsharp",
|
|
@@ -209347,7 +209375,7 @@ registerLanguage({
|
|
|
209347
209375
|
extensions: [".cshtml"],
|
|
209348
209376
|
aliases: ["Razor", "razor"],
|
|
209349
209377
|
mimetypes: ["text/x-cshtml"],
|
|
209350
|
-
loader: () => __vitePreload(() => import("./razor-
|
|
209378
|
+
loader: () => __vitePreload(() => import("./razor-CrDyXj3d.js"), true ? [] : void 0, import.meta.url)
|
|
209351
209379
|
});
|
|
209352
209380
|
registerLanguage({
|
|
209353
209381
|
id: "redis",
|
|
@@ -209480,7 +209508,7 @@ registerLanguage({
|
|
|
209480
209508
|
aliases: ["TypeScript", "ts", "typescript"],
|
|
209481
209509
|
mimetypes: ["text/typescript"],
|
|
209482
209510
|
loader: () => {
|
|
209483
|
-
return __vitePreload(() => import("./typescript-
|
|
209511
|
+
return __vitePreload(() => import("./typescript-Do-98d_O.js"), true ? [] : void 0, import.meta.url);
|
|
209484
209512
|
}
|
|
209485
209513
|
});
|
|
209486
209514
|
registerLanguage({
|
|
@@ -209525,14 +209553,14 @@ registerLanguage({
|
|
|
209525
209553
|
firstLine: "(\\<\\?xml.*)|(\\<svg)|(\\<\\!doctype\\s+svg)",
|
|
209526
209554
|
aliases: ["XML", "xml"],
|
|
209527
209555
|
mimetypes: ["text/xml", "application/xml", "application/xaml+xml", "application/xml-dtd"],
|
|
209528
|
-
loader: () => __vitePreload(() => import("./xml-
|
|
209556
|
+
loader: () => __vitePreload(() => import("./xml-Dpdu5R3m.js"), true ? [] : void 0, import.meta.url)
|
|
209529
209557
|
});
|
|
209530
209558
|
registerLanguage({
|
|
209531
209559
|
id: "yaml",
|
|
209532
209560
|
extensions: [".yaml", ".yml"],
|
|
209533
209561
|
aliases: ["YAML", "yaml", "YML", "yml"],
|
|
209534
209562
|
mimetypes: ["application/x-yaml", "text/x-yaml"],
|
|
209535
|
-
loader: () => __vitePreload(() => import("./yaml-
|
|
209563
|
+
loader: () => __vitePreload(() => import("./yaml-B0Zt7LCJ.js"), true ? [] : void 0, import.meta.url)
|
|
209536
209564
|
});
|
|
209537
209565
|
var __defProp = Object.defineProperty;
|
|
209538
209566
|
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
@@ -213850,7 +213878,223 @@ function LeafPane({ pane, onDrop, onToggle }) {
|
|
|
213850
213878
|
}
|
|
213851
213879
|
);
|
|
213852
213880
|
}
|
|
213853
|
-
|
|
213881
|
+
const SERVICE_NAME = { claude: "Claude", codex: "Codex" };
|
|
213882
|
+
const gb = (bytes) => bytes == null ? "—" : `${(bytes / 2 ** 30).toFixed(bytes < 10 * 2 ** 30 ? 1 : 0)} GB`;
|
|
213883
|
+
const pct = (x) => x == null ? "—" : `${Math.round(x)}%`;
|
|
213884
|
+
const fillTone = (x) => x == null ? "var(--text-dim)" : x < 70 ? "var(--success)" : x < 90 ? "var(--warning)" : "var(--danger)";
|
|
213885
|
+
function ago(iso) {
|
|
213886
|
+
const s = Math.max(0, Math.round((Date.now() - new Date(iso).getTime()) / 1e3));
|
|
213887
|
+
if (s < 60) return `${s}s ago`;
|
|
213888
|
+
if (s < 3600) return `${Math.round(s / 60)}m ago`;
|
|
213889
|
+
if (s < 86400) return `${Math.round(s / 3600)}h ago`;
|
|
213890
|
+
return `${Math.round(s / 86400)}d ago`;
|
|
213891
|
+
}
|
|
213892
|
+
function useResourceSnapshot(open, refreshKey) {
|
|
213893
|
+
const [data, setData] = reactExports.useState(null);
|
|
213894
|
+
reactExports.useEffect(() => {
|
|
213895
|
+
let cancelled = false;
|
|
213896
|
+
let timer;
|
|
213897
|
+
const poll = async () => {
|
|
213898
|
+
try {
|
|
213899
|
+
const snap = await window.worker.getResourceSnapshot(open);
|
|
213900
|
+
if (!cancelled) setData(snap);
|
|
213901
|
+
} catch {
|
|
213902
|
+
}
|
|
213903
|
+
if (!cancelled) timer = setTimeout(poll, open ? 3e3 : 1e4);
|
|
213904
|
+
};
|
|
213905
|
+
void poll();
|
|
213906
|
+
return () => {
|
|
213907
|
+
cancelled = true;
|
|
213908
|
+
clearTimeout(timer);
|
|
213909
|
+
};
|
|
213910
|
+
}, [open, refreshKey]);
|
|
213911
|
+
return data;
|
|
213912
|
+
}
|
|
213913
|
+
function Gauge({ label, value, tone, title }) {
|
|
213914
|
+
const v2 = Math.max(0, Math.min(100, value ?? 0));
|
|
213915
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "res-gauge", title, children: [
|
|
213916
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "res-gauge-bar", children: /* @__PURE__ */ jsxRuntimeExports.jsx("span", { style: { height: `${v2}%`, background: value == null ? "transparent" : tone } }) }),
|
|
213917
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "res-gauge-k", children: label }),
|
|
213918
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "res-gauge-v", children: pct(value) })
|
|
213919
|
+
] });
|
|
213920
|
+
}
|
|
213921
|
+
function ResourceBar({ refreshKey }) {
|
|
213922
|
+
const [open, setOpen] = reactExports.useState(false);
|
|
213923
|
+
const data = useResourceSnapshot(open, refreshKey);
|
|
213924
|
+
const m = data?.machine;
|
|
213925
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "res-bar", onClick: () => setOpen(!open), title: "Resources and plan quota: click for details", children: [
|
|
213926
|
+
m?.ok && /* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "res-group", children: [
|
|
213927
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(Gauge, { label: "CPU", value: m.cpu?.pct, tone: "var(--accent)", title: `CPU ${pct(m.cpu?.pct)} of ${m.cpu?.cores} cores` }),
|
|
213928
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(Gauge, { label: "RAM", value: m.mem?.pct, tone: fillTone(m.mem?.pct), title: `RAM ${gb(m.mem?.used)} of ${gb(m.mem?.total)}` })
|
|
213929
|
+
] }),
|
|
213930
|
+
data?.activeService && /* @__PURE__ */ jsxRuntimeExports.jsx(QuotaGauges, { service: data.activeService, u: data.usage[data.activeService] }),
|
|
213931
|
+
open && /* @__PURE__ */ jsxRuntimeExports.jsx(ResourcePanel, { data, close: () => setOpen(false) })
|
|
213932
|
+
] });
|
|
213933
|
+
}
|
|
213934
|
+
function QuotaGauges({ service, u }) {
|
|
213935
|
+
const name = SERVICE_NAME[service];
|
|
213936
|
+
if (!u) return null;
|
|
213937
|
+
const wins = u.windows.filter((w) => w.short);
|
|
213938
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "res-group", children: [
|
|
213939
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "res-name", children: name }),
|
|
213940
|
+
u.ok && wins.length ? wins.map((w) => /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
213941
|
+
Gauge,
|
|
213942
|
+
{
|
|
213943
|
+
label: w.short,
|
|
213944
|
+
value: w.pct,
|
|
213945
|
+
tone: fillTone(w.pct),
|
|
213946
|
+
title: `${name} ${w.label}: ${pct(w.pct)} used${w.resets ? ` · resets ${w.resets}` : ""}`
|
|
213947
|
+
},
|
|
213948
|
+
w.label
|
|
213949
|
+
)) : /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "res-off", title: u.error ?? "no usage reported", children: "quota unavailable" })
|
|
213950
|
+
] });
|
|
213951
|
+
}
|
|
213952
|
+
function Bar({ value, tone }) {
|
|
213953
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "res-rbar", children: /* @__PURE__ */ jsxRuntimeExports.jsx("span", { style: { width: `${Math.max(0, Math.min(100, value ?? 0))}%`, background: tone } }) });
|
|
213954
|
+
}
|
|
213955
|
+
function Spark({ values, tone, width: width2 = 120, height = 22 }) {
|
|
213956
|
+
const pts = values.map((v2, i2) => [values.length < 2 ? width2 : i2 / (values.length - 1) * width2, height - (v2 ?? 0) / 100 * (height - 2) - 1]);
|
|
213957
|
+
if (pts.length < 2) return /* @__PURE__ */ jsxRuntimeExports.jsx("svg", { width: width2, height, className: "res-spark" });
|
|
213958
|
+
const line = pts.map(([x, y]) => `${x.toFixed(1)},${y.toFixed(1)}`).join(" ");
|
|
213959
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsxs("svg", { width: width2, height, className: "res-spark", children: [
|
|
213960
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("polygon", { points: `0,${height} ${line} ${width2},${height}`, fill: tone, opacity: 0.15 }),
|
|
213961
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("polyline", { points: line, fill: "none", stroke: tone, strokeWidth: 1.4 })
|
|
213962
|
+
] });
|
|
213963
|
+
}
|
|
213964
|
+
function UsageView({ service, u, active }) {
|
|
213965
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "res-card", children: [
|
|
213966
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "res-head", children: [
|
|
213967
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("b", { children: [
|
|
213968
|
+
SERVICE_NAME[service],
|
|
213969
|
+
" plan"
|
|
213970
|
+
] }),
|
|
213971
|
+
active && /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "res-tag", children: "active tab" }),
|
|
213972
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "res-spacer" }),
|
|
213973
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "res-muted", children: [
|
|
213974
|
+
"as of ",
|
|
213975
|
+
ago(u.ts)
|
|
213976
|
+
] })
|
|
213977
|
+
] }),
|
|
213978
|
+
u.ok ? /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
|
|
213979
|
+
u.windows.map((w) => /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "res-row", children: [
|
|
213980
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "res-k wide", children: w.label }),
|
|
213981
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(Bar, { value: w.pct, tone: fillTone(w.pct) }),
|
|
213982
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "res-v narrow", children: pct(w.pct) }),
|
|
213983
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "res-muted res-resets", children: w.resets ? `resets ${w.resets}` : "" })
|
|
213984
|
+
] }, w.label)),
|
|
213985
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "res-muted res-note", children: [
|
|
213986
|
+
"from ",
|
|
213987
|
+
u.source,
|
|
213988
|
+
u.plan ? ` · plan ${u.plan}` : ""
|
|
213989
|
+
] })
|
|
213990
|
+
] }) : /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "res-muted", children: u.error ?? "no usage reported" })
|
|
213991
|
+
] });
|
|
213992
|
+
}
|
|
213993
|
+
function MachineView({ m }) {
|
|
213994
|
+
const h2 = m.history;
|
|
213995
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "res-card", children: [
|
|
213996
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "res-head", children: [
|
|
213997
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: `res-dot ${m.ok ? "ok" : "bad"}` }),
|
|
213998
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("b", { children: m.label }),
|
|
213999
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "res-spacer" }),
|
|
214000
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "res-muted", children: [
|
|
214001
|
+
"updated ",
|
|
214002
|
+
ago(m.ts)
|
|
214003
|
+
] })
|
|
214004
|
+
] }),
|
|
214005
|
+
!m.ok ? /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "res-err", children: m.error ?? "unavailable" }) : /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
|
|
214006
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "res-row", children: [
|
|
214007
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "res-k", children: "CPU" }),
|
|
214008
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(Bar, { value: m.cpu?.pct, tone: "var(--accent)" }),
|
|
214009
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "res-v", children: pct(m.cpu?.pct) }),
|
|
214010
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(Spark, { values: h2.map((p) => p.cpu), tone: "var(--accent)" })
|
|
214011
|
+
] }),
|
|
214012
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "res-row", children: [
|
|
214013
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "res-k" }),
|
|
214014
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "res-muted", children: [
|
|
214015
|
+
m.cpu?.cores,
|
|
214016
|
+
" cores · load ",
|
|
214017
|
+
m.cpu?.load.map((x) => x.toFixed(2)).join(" ")
|
|
214018
|
+
] })
|
|
214019
|
+
] }),
|
|
214020
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "res-row", children: [
|
|
214021
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "res-k", children: "RAM" }),
|
|
214022
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(Bar, { value: m.mem?.pct, tone: fillTone(m.mem?.pct) }),
|
|
214023
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "res-v", children: [
|
|
214024
|
+
gb(m.mem?.used),
|
|
214025
|
+
" / ",
|
|
214026
|
+
gb(m.mem?.total)
|
|
214027
|
+
] }),
|
|
214028
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(Spark, { values: h2.map((p) => p.mem), tone: fillTone(m.mem?.pct) })
|
|
214029
|
+
] }),
|
|
214030
|
+
m.gpu != null && /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "res-row", children: [
|
|
214031
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "res-k", children: "GPU" }),
|
|
214032
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(Bar, { value: m.gpu, tone: "var(--sev-digest)" }),
|
|
214033
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "res-v", children: pct(m.gpu) }),
|
|
214034
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(Spark, { values: h2.map((p) => p.gpu), tone: "var(--sev-digest)" })
|
|
214035
|
+
] }),
|
|
214036
|
+
m.disk && /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "res-row", children: [
|
|
214037
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "res-k", children: "Disk" }),
|
|
214038
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(Bar, { value: 100 * (1 - m.disk.free / m.disk.total), tone: fillTone(100 * (1 - m.disk.free / m.disk.total)) }),
|
|
214039
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "res-v", children: [
|
|
214040
|
+
gb(m.disk.free),
|
|
214041
|
+
" free"
|
|
214042
|
+
] })
|
|
214043
|
+
] })
|
|
214044
|
+
] })
|
|
214045
|
+
] });
|
|
214046
|
+
}
|
|
214047
|
+
function AgentsView({ agents }) {
|
|
214048
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "res-card", children: [
|
|
214049
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "res-head", children: /* @__PURE__ */ jsxRuntimeExports.jsx("b", { children: "Agents in tabs" }) }),
|
|
214050
|
+
agents.length ? agents.map((a) => /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "res-agent", children: [
|
|
214051
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: a.active ? "res-agent-name active" : "res-agent-name", children: a.name }),
|
|
214052
|
+
a.active && /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "res-tag", children: "active" }),
|
|
214053
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "res-muted", children: [
|
|
214054
|
+
a.pid == null ? "exited" : /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
|
|
214055
|
+
"pid ",
|
|
214056
|
+
a.pid,
|
|
214057
|
+
" · ",
|
|
214058
|
+
a.procs,
|
|
214059
|
+
" process",
|
|
214060
|
+
a.procs === 1 ? "" : "es",
|
|
214061
|
+
a.cpu != null ? ` · CPU ${a.cpu.toFixed(0)}%` : "",
|
|
214062
|
+
a.mem != null ? ` · ${gb(a.mem)}` : ""
|
|
214063
|
+
] }),
|
|
214064
|
+
a.remote ? " · local ssh client (agent runs remotely)" : ""
|
|
214065
|
+
] })
|
|
214066
|
+
] }, a.tabId)) : /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "res-muted", children: "no agents running" })
|
|
214067
|
+
] });
|
|
214068
|
+
}
|
|
214069
|
+
function ResourcePanel({ data, close }) {
|
|
214070
|
+
reactExports.useEffect(() => {
|
|
214071
|
+
const onKey = (e) => {
|
|
214072
|
+
if (e.key === "Escape") close();
|
|
214073
|
+
};
|
|
214074
|
+
window.addEventListener("keydown", onKey);
|
|
214075
|
+
return () => window.removeEventListener("keydown", onKey);
|
|
214076
|
+
}, [close]);
|
|
214077
|
+
const services = Object.keys(data?.usage ?? {}).sort((a, b) => Number(b === data?.activeService) - Number(a === data?.activeService));
|
|
214078
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "res-panel", onClick: (e) => e.stopPropagation(), children: [
|
|
214079
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "res-panel-head", children: [
|
|
214080
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("h2", { children: "Resources" }),
|
|
214081
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "res-muted", children: "plan quota and this machine · every 3 s" }),
|
|
214082
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "res-spacer" }),
|
|
214083
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("button", { className: "res-close", onClick: close, "aria-label": "Close", children: "✕" })
|
|
214084
|
+
] }),
|
|
214085
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "res-panel-body", children: !data ? /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "res-muted", children: "sampling…" }) : /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
|
|
214086
|
+
services.map((s) => /* @__PURE__ */ jsxRuntimeExports.jsx(UsageView, { service: s, u: data.usage[s], active: s === data.activeService }, s)),
|
|
214087
|
+
data.activeService && !data.usage[data.activeService] && /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "res-muted", children: [
|
|
214088
|
+
"checking ",
|
|
214089
|
+
SERVICE_NAME[data.activeService],
|
|
214090
|
+
" quota…"
|
|
214091
|
+
] }),
|
|
214092
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(MachineView, { m: data.machine }),
|
|
214093
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(AgentsView, { agents: data.agents })
|
|
214094
|
+
] }) })
|
|
214095
|
+
] });
|
|
214096
|
+
}
|
|
214097
|
+
function StatusBar({ wsStatus, cwd: cwd2, onChangeCwd, updateInfo, resourceKey }) {
|
|
213854
214098
|
const [creating, setCreating] = reactExports.useState(false);
|
|
213855
214099
|
const wsLabel = {
|
|
213856
214100
|
disconnected: "Disconnected",
|
|
@@ -213886,6 +214130,7 @@ function StatusBar({ wsStatus, cwd: cwd2, onChangeCwd, updateInfo }) {
|
|
|
213886
214130
|
return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "statusbar", children: [
|
|
213887
214131
|
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "statusbar-section", children: /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "statusbar-path", onClick: onChangeCwd, title: "Click to change directory", children: displayPath || "No directory" }) }),
|
|
213888
214132
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "statusbar-section", children: [
|
|
214133
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(ResourceBar, { refreshKey: resourceKey }),
|
|
213889
214134
|
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: `status-dot ${wsDotClass}` }),
|
|
213890
214135
|
isNoProject ? /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
|
|
213891
214136
|
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: "Not linked to a ctlsurf project" }),
|
|
@@ -214283,7 +214528,7 @@ const PRIORITY_OPTIONS = [
|
|
|
214283
214528
|
{ value: "High", color: "var(--danger)" }
|
|
214284
214529
|
];
|
|
214285
214530
|
const colorOf = (opts, value) => opts.find((o) => o.value === value)?.color ?? "var(--text-muted)";
|
|
214286
|
-
const tint$1 = (color,
|
|
214531
|
+
const tint$1 = (color, pct2) => `color-mix(in srgb, ${color} ${pct2}%, transparent)`;
|
|
214287
214532
|
function formatDate(iso) {
|
|
214288
214533
|
if (!iso) return "";
|
|
214289
214534
|
const d = new Date(iso);
|
|
@@ -214657,7 +214902,7 @@ function formatTime(iso) {
|
|
|
214657
214902
|
if (Number.isNaN(d.getTime())) return "";
|
|
214658
214903
|
return d.toLocaleTimeString("en-US", { hour: "numeric", minute: "2-digit" });
|
|
214659
214904
|
}
|
|
214660
|
-
const tint = (color,
|
|
214905
|
+
const tint = (color, pct2) => `color-mix(in srgb, ${color} ${pct2}%, transparent)`;
|
|
214661
214906
|
function Chip({ color, label }) {
|
|
214662
214907
|
return /* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "obs-chip", style: { color, borderColor: tint(color, 33), background: tint(color, 8) }, children: [
|
|
214663
214908
|
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "obs-chip-dot", style: { background: color } }),
|
|
@@ -215469,7 +215714,16 @@ ${transcript.slice(-REMOTE_HANDOFF_CHARS)}` : transcript;
|
|
|
215469
215714
|
onToggle: togglePane
|
|
215470
215715
|
}
|
|
215471
215716
|
) }),
|
|
215472
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
215717
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
215718
|
+
StatusBar,
|
|
215719
|
+
{
|
|
215720
|
+
wsStatus,
|
|
215721
|
+
cwd: cwd2,
|
|
215722
|
+
onChangeCwd: handleChangeCwd,
|
|
215723
|
+
updateInfo,
|
|
215724
|
+
resourceKey: `${activeTabId}:${tabs.find((t) => t.id === activeTabId)?.agent?.id ?? ""}`
|
|
215725
|
+
}
|
|
215726
|
+
),
|
|
215473
215727
|
/* @__PURE__ */ jsxRuntimeExports.jsx(SettingsDialog, { open: showSettings, onClose: () => setShowSettings(false) }),
|
|
215474
215728
|
showAgentPicker && agents.length > 0 && /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
215475
215729
|
AgentPicker,
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { conf as conf$1, language as language$1 } from "./typescript-
|
|
2
|
-
import "./index-
|
|
1
|
+
import { conf as conf$1, language as language$1 } from "./typescript-Do-98d_O.js";
|
|
2
|
+
import "./index-Dm70hk5s.js";
|
|
3
3
|
const conf = conf$1;
|
|
4
4
|
const language = {
|
|
5
5
|
// Set defaultToken to invalid to see what you do not tokenize yet
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { c as createWebWorker, l as languages, e as editor } from "./index-
|
|
2
|
-
import { f as DocumentFormattingEditProvider, g as DocumentRangeFormattingEditProvider, C as CompletionAdapter, H as HoverAdapter, b as DocumentSymbolAdapter, d as DocumentColorAdapter, F as FoldingRangeAdapter, S as SelectionRangeAdapter, e as DiagnosticsAdapter } from "./lspLanguageFeatures-
|
|
3
|
-
import { a, D, h, R, c, i, j, t, k } from "./lspLanguageFeatures-
|
|
1
|
+
import { c as createWebWorker, l as languages, e as editor } from "./index-Dm70hk5s.js";
|
|
2
|
+
import { f as DocumentFormattingEditProvider, g as DocumentRangeFormattingEditProvider, C as CompletionAdapter, H as HoverAdapter, b as DocumentSymbolAdapter, d as DocumentColorAdapter, F as FoldingRangeAdapter, S as SelectionRangeAdapter, e as DiagnosticsAdapter } from "./lspLanguageFeatures-Ckqu5ubG.js";
|
|
3
|
+
import { a, D, h, R, c, i, j, t, k } from "./lspLanguageFeatures-Ckqu5ubG.js";
|
|
4
4
|
const STOP_WHEN_IDLE_FOR = 2 * 60 * 1e3;
|
|
5
5
|
class WorkerManager {
|
|
6
6
|
constructor(defaults) {
|
package/out/renderer/assets/{lspLanguageFeatures-IDD0-KWa.js → lspLanguageFeatures-Ckqu5ubG.js}
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { R as Range$1, l as languages, e as editor, U as Uri, M as MarkerSeverity } from "./index-
|
|
1
|
+
import { R as Range$1, l as languages, e as editor, U as Uri, M as MarkerSeverity } from "./index-Dm70hk5s.js";
|
|
2
2
|
var DocumentUri;
|
|
3
3
|
(function(DocumentUri2) {
|
|
4
4
|
function is(value) {
|