@slkiser/opencode-quota 4.10.0 → 4.10.1
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/README.md +16 -15
- package/dist/lib/alibaba-token-plan.d.ts +88 -0
- package/dist/lib/alibaba-token-plan.d.ts.map +1 -0
- package/dist/lib/alibaba-token-plan.js +505 -0
- package/dist/lib/alibaba-token-plan.js.map +1 -0
- package/dist/lib/atomic-json.d.ts +3 -0
- package/dist/lib/atomic-json.d.ts.map +1 -1
- package/dist/lib/atomic-json.js +16 -4
- package/dist/lib/atomic-json.js.map +1 -1
- package/dist/lib/config-write-target.d.ts +28 -0
- package/dist/lib/config-write-target.d.ts.map +1 -0
- package/dist/lib/config-write-target.js +159 -0
- package/dist/lib/config-write-target.js.map +1 -0
- package/dist/lib/init-installer.d.ts.map +1 -1
- package/dist/lib/init-installer.js +2 -2
- package/dist/lib/init-installer.js.map +1 -1
- package/dist/lib/opencode-config-editor.d.ts +3 -0
- package/dist/lib/opencode-config-editor.d.ts.map +1 -1
- package/dist/lib/opencode-config-editor.js +71 -10
- package/dist/lib/opencode-config-editor.js.map +1 -1
- package/dist/lib/opencode-go.d.ts.map +1 -1
- package/dist/lib/opencode-go.js +3 -2
- package/dist/lib/opencode-go.js.map +1 -1
- package/dist/lib/openrouter.d.ts +2 -1
- package/dist/lib/openrouter.d.ts.map +1 -1
- package/dist/lib/openrouter.js +3 -4
- package/dist/lib/openrouter.js.map +1 -1
- package/dist/lib/provider-registration.d.ts +11 -0
- package/dist/lib/provider-registration.d.ts.map +1 -1
- package/dist/lib/provider-registration.js +12 -0
- package/dist/lib/provider-registration.js.map +1 -1
- package/dist/lib/quota-status.d.ts.map +1 -1
- package/dist/lib/quota-status.js +18 -0
- package/dist/lib/quota-status.js.map +1 -1
- package/dist/lib/scoped-update.d.ts +2 -0
- package/dist/lib/scoped-update.d.ts.map +1 -1
- package/dist/lib/scoped-update.js +43 -7
- package/dist/lib/scoped-update.js.map +1 -1
- package/dist/lib/synthetic.d.ts.map +1 -1
- package/dist/lib/synthetic.js +9 -0
- package/dist/lib/synthetic.js.map +1 -1
- package/dist/lib/tui-compact-format.d.ts.map +1 -1
- package/dist/lib/tui-compact-format.js +79 -5
- package/dist/lib/tui-compact-format.js.map +1 -1
- package/dist/lib/tui-panel-state.d.ts +5 -1
- package/dist/lib/tui-panel-state.d.ts.map +1 -1
- package/dist/lib/tui-panel-state.js.map +1 -1
- package/dist/lib/tui-prompt-bar-format.d.ts +25 -0
- package/dist/lib/tui-prompt-bar-format.d.ts.map +1 -0
- package/dist/lib/tui-prompt-bar-format.js +206 -0
- package/dist/lib/tui-prompt-bar-format.js.map +1 -0
- package/dist/lib/tui-runtime.d.ts.map +1 -1
- package/dist/lib/tui-runtime.js +5 -93
- package/dist/lib/tui-runtime.js.map +1 -1
- package/dist/lib/tui-sidebar-content.d.ts +32 -0
- package/dist/lib/tui-sidebar-content.d.ts.map +1 -0
- package/dist/lib/tui-sidebar-content.js +52 -0
- package/dist/lib/tui-sidebar-content.js.map +1 -0
- package/dist/providers/alibaba-token-plan.d.ts +3 -0
- package/dist/providers/alibaba-token-plan.d.ts.map +1 -0
- package/dist/providers/alibaba-token-plan.js +89 -0
- package/dist/providers/alibaba-token-plan.js.map +1 -0
- package/dist/providers/cache-policies.d.ts +3 -0
- package/dist/providers/cache-policies.d.ts.map +1 -1
- package/dist/providers/cache-policies.js +1 -0
- package/dist/providers/cache-policies.js.map +1 -1
- package/dist/providers/openrouter.d.ts.map +1 -1
- package/dist/providers/openrouter.js +11 -4
- package/dist/providers/openrouter.js.map +1 -1
- package/dist/providers/registry.d.ts.map +1 -1
- package/dist/providers/registry.js +2 -0
- package/dist/providers/registry.js.map +1 -1
- package/dist/tui.d.ts.map +1 -1
- package/dist/tui.js +226 -219
- package/dist/tui.tsx +57 -49
- package/package.json +5 -1
package/dist/tui.js
CHANGED
|
@@ -1,23 +1,23 @@
|
|
|
1
|
-
import { createComponent as _$createComponent } from "@opentui/solid";
|
|
2
|
-
import { effect as _$effect } from "@opentui/solid";
|
|
3
1
|
import { createTextNode as _$createTextNode } from "@opentui/solid";
|
|
4
|
-
import { memo as _$memo } from "@opentui/solid";
|
|
5
2
|
import { insertNode as _$insertNode } from "@opentui/solid";
|
|
3
|
+
import { effect as _$effect } from "@opentui/solid";
|
|
4
|
+
import { memo as _$memo } from "@opentui/solid";
|
|
6
5
|
import { insert as _$insert } from "@opentui/solid";
|
|
6
|
+
import { createComponent as _$createComponent } from "@opentui/solid";
|
|
7
7
|
import { setProp as _$setProp } from "@opentui/solid";
|
|
8
8
|
import { createElement as _$createElement } from "@opentui/solid";
|
|
9
9
|
/** @jsxImportSource @opentui/solid */
|
|
10
10
|
|
|
11
|
-
import { createEffect, createSignal, onCleanup, Show } from "solid-js";
|
|
12
|
-
import {
|
|
11
|
+
import { createEffect, createSignal, Index, onCleanup, Show } from "solid-js";
|
|
12
|
+
import { formatQuotaModeHeading, formatResetCountdown, isResetTimeDecimals, resolveDisplayedPercent } from "./lib/format-utils.js";
|
|
13
13
|
import { buildQuotaDialogCommandOutput, QUOTA_DIALOG_COMMANDS } from "./lib/quota-dialog-commands.js";
|
|
14
|
-
import { extractSingleWindowWindowLabel } from "./lib/quota-entry-display.js";
|
|
15
|
-
import { formatQuotaRunway } from "./lib/quota-exhaustion-projection.js";
|
|
16
14
|
import { disposeQuotaTelemetryOwner } from "./lib/quota-telemetry.js";
|
|
17
15
|
import { getSidebarBodyLineColor } from "./lib/tui-line-style.js";
|
|
18
16
|
import { getCompactStatusText, getHomeBottomAnnouncementText, getSidebarPanelLines, getSidebarPanelLinesExpanded, shouldRenderCompactStatus, shouldRenderHomeBottom, shouldRenderSidebarPanel } from "./lib/tui-panel-state.js";
|
|
17
|
+
import { formatPromptBarPercentMeta, PROMPT_BAR_WIDTH, resolvePromptBarLabel } from "./lib/tui-prompt-bar-format.js";
|
|
19
18
|
import { createTuiRefreshLifecycle } from "./lib/tui-refresh-lifecycle.js";
|
|
20
19
|
import { createTuiQuotaClient, getTuiRuntimeRootHints, getTuiSessionModelMeta, loadTuiHomeBottomStatus, loadTuiSessionQuotaSurfaces, normalizeTuiSessionID, resolveTuiSurfaceRegistration, writeTuiQuotaExportIfEnabled } from "./lib/tui-runtime.js";
|
|
20
|
+
import { buildSidebarContentRows } from "./lib/tui-sidebar-content.js";
|
|
21
21
|
const id = "@slkiser/opencode-quota";
|
|
22
22
|
// Place Quota near the top so variable-height built-in sections
|
|
23
23
|
// (MCP/LSP/Todo/Files) do not push it below the visible fold.
|
|
@@ -258,54 +258,58 @@ function SidebarContentView(props) {
|
|
|
258
258
|
if (!hasDetailLines()) return lines();
|
|
259
259
|
return collapsed() ? lines() : getSidebarPanelLinesExpanded(panel());
|
|
260
260
|
};
|
|
261
|
-
const
|
|
262
|
-
const providerCount = () => panel().providerCount ?? 0;
|
|
263
|
-
const headerText = () => {
|
|
261
|
+
const contentRows = () => {
|
|
264
262
|
const heading = panel().headerPercentMode ? formatQuotaModeHeading(panel().headerPercentMode) : "Quota";
|
|
265
|
-
return
|
|
263
|
+
return buildSidebarContentRows({
|
|
264
|
+
collapsed: collapsed(),
|
|
265
|
+
heading,
|
|
266
|
+
hasDetailLines: hasDetailLines(),
|
|
267
|
+
providerCount: panel().providerCount ?? 0,
|
|
268
|
+
lines: displayLines()
|
|
269
|
+
});
|
|
266
270
|
};
|
|
267
271
|
return _$createComponent(Show, {
|
|
268
272
|
get when() {
|
|
269
273
|
return shouldRenderSidebarPanel(panel());
|
|
270
274
|
},
|
|
271
275
|
get children() {
|
|
272
|
-
var _el$ = _$createElement("box")
|
|
273
|
-
_el$2 = _$createElement("box"),
|
|
274
|
-
_el$3 = _$createElement("text"),
|
|
275
|
-
_el$4 = _$createElement("b"),
|
|
276
|
-
_el$8 = _$createElement("box");
|
|
277
|
-
_$insertNode(_el$, _el$2);
|
|
278
|
-
_$insertNode(_el$, _el$8);
|
|
276
|
+
var _el$ = _$createElement("box");
|
|
279
277
|
_$setProp(_el$, "gap", 0);
|
|
280
|
-
_$
|
|
281
|
-
_$
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
_$insert(_el$4, headerText);
|
|
285
|
-
_$insert(_el$2, _$createComponent(Show, {
|
|
286
|
-
get when() {
|
|
287
|
-
return _$memo(() => !!collapsed())() && providerCount() > 0;
|
|
278
|
+
_$setProp(_el$, "width", "100%");
|
|
279
|
+
_$insert(_el$, _$createComponent(Index, {
|
|
280
|
+
get each() {
|
|
281
|
+
return contentRows();
|
|
288
282
|
},
|
|
289
|
-
|
|
290
|
-
var _el$
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
_$
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
283
|
+
children: row => (() => {
|
|
284
|
+
var _el$2 = _$createElement("text");
|
|
285
|
+
_$setProp(_el$2, "wrapMode", "none");
|
|
286
|
+
_$setProp(_el$2, "width", "100%");
|
|
287
|
+
_$insert(_el$2, (() => {
|
|
288
|
+
var _c$ = _$memo(() => row().kind === "header");
|
|
289
|
+
return () => _c$() ? row().segments.map(segment => segment.style === "muted" ? (() => {
|
|
290
|
+
var _el$3 = _$createElement("span");
|
|
291
|
+
_$insert(_el$3, () => segment.text);
|
|
292
|
+
_$effect(_$p => _$setProp(_el$3, "fg", props.api.theme.current.textMuted, _$p));
|
|
293
|
+
return _el$3;
|
|
294
|
+
})() : (() => {
|
|
295
|
+
var _el$4 = _$createElement("b");
|
|
296
|
+
_$insert(_el$4, () => segment.text);
|
|
297
|
+
return _el$4;
|
|
298
|
+
})()) : row().text || " ";
|
|
299
|
+
})());
|
|
300
|
+
_$effect(_p$ => {
|
|
301
|
+
var _v$ = row().kind === "header" ? props.api.theme.current.text : getSidebarBodyLineColor(row().text, props.api.theme.current),
|
|
302
|
+
_v$2 = row().kind === "header" ? toggleCollapsed : undefined;
|
|
303
|
+
_v$ !== _p$.e && (_p$.e = _$setProp(_el$2, "fg", _v$, _p$.e));
|
|
304
|
+
_v$2 !== _p$.t && (_p$.t = _$setProp(_el$2, "onMouseDown", _v$2, _p$.t));
|
|
305
|
+
return _p$;
|
|
306
|
+
}, {
|
|
307
|
+
e: undefined,
|
|
308
|
+
t: undefined
|
|
309
|
+
});
|
|
310
|
+
return _el$2;
|
|
311
|
+
})()
|
|
312
|
+
}));
|
|
309
313
|
return _el$;
|
|
310
314
|
}
|
|
311
315
|
});
|
|
@@ -317,23 +321,23 @@ function CompactStatusLine(props) {
|
|
|
317
321
|
return getCompactStatusText(panel);
|
|
318
322
|
};
|
|
319
323
|
const line = () => (() => {
|
|
320
|
-
var _el$
|
|
321
|
-
_el$
|
|
322
|
-
_$insertNode(_el$
|
|
323
|
-
_$setProp(_el$
|
|
324
|
-
_$setProp(_el$
|
|
325
|
-
_$insert(_el$
|
|
324
|
+
var _el$5 = _$createElement("box"),
|
|
325
|
+
_el$6 = _$createElement("text");
|
|
326
|
+
_$insertNode(_el$5, _el$6);
|
|
327
|
+
_$setProp(_el$5, "flexDirection", "row");
|
|
328
|
+
_$setProp(_el$6, "wrapMode", "none");
|
|
329
|
+
_$insert(_el$6, text);
|
|
326
330
|
_$effect(_p$ => {
|
|
327
|
-
var _v$ = props.justifyContent,
|
|
328
|
-
_v$
|
|
329
|
-
_v$ !== _p$.e && (_p$.e = _$setProp(_el$
|
|
330
|
-
_v$
|
|
331
|
+
var _v$3 = props.justifyContent,
|
|
332
|
+
_v$4 = props.api.theme.current.textMuted;
|
|
333
|
+
_v$3 !== _p$.e && (_p$.e = _$setProp(_el$5, "justifyContent", _v$3, _p$.e));
|
|
334
|
+
_v$4 !== _p$.t && (_p$.t = _$setProp(_el$6, "fg", _v$4, _p$.t));
|
|
331
335
|
return _p$;
|
|
332
336
|
}, {
|
|
333
337
|
e: undefined,
|
|
334
338
|
t: undefined
|
|
335
339
|
});
|
|
336
|
-
return _el$
|
|
340
|
+
return _el$5;
|
|
337
341
|
})();
|
|
338
342
|
return _$createComponent(Show, {
|
|
339
343
|
get when() {
|
|
@@ -348,13 +352,13 @@ function CompactStatusLine(props) {
|
|
|
348
352
|
return line();
|
|
349
353
|
},
|
|
350
354
|
get children() {
|
|
351
|
-
var _el$
|
|
352
|
-
_el$
|
|
353
|
-
_$insertNode(_el$
|
|
354
|
-
_$setProp(_el$
|
|
355
|
-
_$insertNode(_el$
|
|
356
|
-
_$insert(_el$
|
|
357
|
-
return _el$
|
|
355
|
+
var _el$7 = _$createElement("box"),
|
|
356
|
+
_el$8 = _$createElement("text");
|
|
357
|
+
_$insertNode(_el$7, _el$8);
|
|
358
|
+
_$setProp(_el$7, "gap", 0);
|
|
359
|
+
_$insertNode(_el$8, _$createTextNode(` `));
|
|
360
|
+
_$insert(_el$7, line, null);
|
|
361
|
+
return _el$7;
|
|
358
362
|
}
|
|
359
363
|
});
|
|
360
364
|
}
|
|
@@ -364,9 +368,9 @@ function SessionPromptWithCompactStatus(props) {
|
|
|
364
368
|
const resource = useSessionQuotaResource(props.api, () => props.sessionID, props.initialLoads);
|
|
365
369
|
const panel = () => resource().compact();
|
|
366
370
|
return (() => {
|
|
367
|
-
var _el$
|
|
368
|
-
_$setProp(_el$
|
|
369
|
-
_$insert(_el$
|
|
371
|
+
var _el$0 = _$createElement("box");
|
|
372
|
+
_$setProp(_el$0, "gap", 0);
|
|
373
|
+
_$insert(_el$0, _$createComponent(props.api.ui.Prompt, {
|
|
370
374
|
get sessionID() {
|
|
371
375
|
return props.sessionID;
|
|
372
376
|
},
|
|
@@ -384,17 +388,16 @@ function SessionPromptWithCompactStatus(props) {
|
|
|
384
388
|
typeof _ref$ === "function" ? _ref$(r$) : props.promptRef = r$;
|
|
385
389
|
}
|
|
386
390
|
}), null);
|
|
387
|
-
_$insert(_el$
|
|
391
|
+
_$insert(_el$0, _$createComponent(CompactStatusLine, {
|
|
388
392
|
get api() {
|
|
389
393
|
return props.api;
|
|
390
394
|
},
|
|
391
395
|
panel: panel,
|
|
392
396
|
justifyContent: "flex-end"
|
|
393
397
|
}), null);
|
|
394
|
-
return _el$
|
|
398
|
+
return _el$0;
|
|
395
399
|
})();
|
|
396
400
|
}
|
|
397
|
-
const PROMPT_BAR_WIDTH = 12;
|
|
398
401
|
function shouldRenderPromptBar(bar) {
|
|
399
402
|
return bar.status === "ready" && Boolean(bar.entry);
|
|
400
403
|
}
|
|
@@ -440,23 +443,20 @@ function buildPromptBarParts(params) {
|
|
|
440
443
|
if (!shouldRenderPromptBar(bar)) return undefined;
|
|
441
444
|
const entry = bar.entry;
|
|
442
445
|
if (!entry) return undefined;
|
|
443
|
-
const reset = entry.resetTimeIso ? formatResetCountdown(entry.resetTimeIso, isResetTimeDecimals(bar.resetTimeDecimals) ? {
|
|
444
|
-
compactRounded: true,
|
|
445
|
-
decimals: bar.resetTimeDecimals
|
|
446
|
-
} : {
|
|
447
|
-
spaced: bar.resetTimeSpaced
|
|
448
|
-
}) : "";
|
|
449
|
-
const runway = formatQuotaRunway(entry.runway);
|
|
450
446
|
const hasPercent = Number.isFinite(entry.percentRemaining);
|
|
451
447
|
if (entry.semanticSegment && !hasPercent) {
|
|
448
|
+
const reset = entry.resetTimeIso ? formatResetCountdown(entry.resetTimeIso, isResetTimeDecimals(bar.resetTimeDecimals) ? {
|
|
449
|
+
compactRounded: true,
|
|
450
|
+
decimals: bar.resetTimeDecimals
|
|
451
|
+
} : {
|
|
452
|
+
spaced: bar.resetTimeSpaced
|
|
453
|
+
}) : "";
|
|
452
454
|
return {
|
|
453
|
-
label: entry
|
|
455
|
+
label: resolvePromptBarLabel(entry),
|
|
454
456
|
barText: "",
|
|
455
457
|
meta: reset
|
|
456
458
|
};
|
|
457
459
|
}
|
|
458
|
-
const windowLabel = entry.semanticSegment ?? extractSingleWindowWindowLabel(entry.label ?? "") ?? extractSingleWindowWindowLabel(entry.name ?? "") ?? "Quota";
|
|
459
|
-
const percent = formatDisplayedPercentLabel(entry.percentRemaining ?? 0, bar.percentDisplayMode ?? "remaining", "bare");
|
|
460
460
|
const p = Math.min(100, resolveDisplayedPercent(entry.percentRemaining ?? 0, bar.percentDisplayMode ?? "remaining"));
|
|
461
461
|
const filled = Math.round(p / 100 * PROMPT_BAR_WIDTH);
|
|
462
462
|
const empty = PROMPT_BAR_WIDTH - filled;
|
|
@@ -472,9 +472,16 @@ function buildPromptBarParts(params) {
|
|
|
472
472
|
barText = cells.join("") + "░".repeat(empty);
|
|
473
473
|
}
|
|
474
474
|
return {
|
|
475
|
-
label:
|
|
475
|
+
label: resolvePromptBarLabel(entry),
|
|
476
476
|
barText,
|
|
477
|
-
meta:
|
|
477
|
+
meta: formatPromptBarPercentMeta({
|
|
478
|
+
percentRemaining: entry.percentRemaining ?? 0,
|
|
479
|
+
percentDisplayMode: bar.percentDisplayMode,
|
|
480
|
+
resetTimeIso: entry.resetTimeIso,
|
|
481
|
+
resetTimeDecimals: bar.resetTimeDecimals,
|
|
482
|
+
resetTimeSpaced: bar.resetTimeSpaced,
|
|
483
|
+
runway: entry.runway
|
|
484
|
+
})
|
|
478
485
|
};
|
|
479
486
|
}
|
|
480
487
|
function PromptQuotaHint(props) {
|
|
@@ -488,36 +495,36 @@ function PromptQuotaHint(props) {
|
|
|
488
495
|
return parts();
|
|
489
496
|
},
|
|
490
497
|
get children() {
|
|
491
|
-
var _el$
|
|
492
|
-
_el$
|
|
493
|
-
_el$
|
|
494
|
-
_el$
|
|
495
|
-
_$insertNode(_el$
|
|
496
|
-
_$insertNode(_el$
|
|
497
|
-
_$insertNode(_el$
|
|
498
|
-
_$setProp(_el$
|
|
499
|
-
_$setProp(_el$
|
|
500
|
-
_$setProp(_el$
|
|
501
|
-
_$setProp(_el$
|
|
502
|
-
_$insert(_el$
|
|
503
|
-
_$setProp(_el$
|
|
504
|
-
_$insert(_el$
|
|
505
|
-
_$setProp(_el$
|
|
506
|
-
_$insert(_el$
|
|
498
|
+
var _el$1 = _$createElement("box"),
|
|
499
|
+
_el$10 = _$createElement("text"),
|
|
500
|
+
_el$11 = _$createElement("text"),
|
|
501
|
+
_el$12 = _$createElement("text");
|
|
502
|
+
_$insertNode(_el$1, _el$10);
|
|
503
|
+
_$insertNode(_el$1, _el$11);
|
|
504
|
+
_$insertNode(_el$1, _el$12);
|
|
505
|
+
_$setProp(_el$1, "flexDirection", "row");
|
|
506
|
+
_$setProp(_el$1, "justifyContent", "flex-end");
|
|
507
|
+
_$setProp(_el$1, "gap", 1);
|
|
508
|
+
_$setProp(_el$10, "wrapMode", "none");
|
|
509
|
+
_$insert(_el$10, label);
|
|
510
|
+
_$setProp(_el$11, "wrapMode", "none");
|
|
511
|
+
_$insert(_el$11, bar);
|
|
512
|
+
_$setProp(_el$12, "wrapMode", "none");
|
|
513
|
+
_$insert(_el$12, meta);
|
|
507
514
|
_$effect(_p$ => {
|
|
508
|
-
var _v$
|
|
509
|
-
_v$
|
|
510
|
-
_v$
|
|
511
|
-
_v$
|
|
512
|
-
_v$
|
|
513
|
-
_v$
|
|
515
|
+
var _v$5 = props.api.theme.current.textMuted,
|
|
516
|
+
_v$6 = barColor(),
|
|
517
|
+
_v$7 = props.api.theme.current.textMuted;
|
|
518
|
+
_v$5 !== _p$.e && (_p$.e = _$setProp(_el$10, "fg", _v$5, _p$.e));
|
|
519
|
+
_v$6 !== _p$.t && (_p$.t = _$setProp(_el$11, "fg", _v$6, _p$.t));
|
|
520
|
+
_v$7 !== _p$.a && (_p$.a = _$setProp(_el$12, "fg", _v$7, _p$.a));
|
|
514
521
|
return _p$;
|
|
515
522
|
}, {
|
|
516
523
|
e: undefined,
|
|
517
524
|
t: undefined,
|
|
518
525
|
a: undefined
|
|
519
526
|
});
|
|
520
|
-
return _el$
|
|
527
|
+
return _el$1;
|
|
521
528
|
}
|
|
522
529
|
});
|
|
523
530
|
}
|
|
@@ -535,9 +542,9 @@ function SessionQuotaPromptBar(props) {
|
|
|
535
542
|
onCleanup(() => clearInterval(interval));
|
|
536
543
|
});
|
|
537
544
|
return (() => {
|
|
538
|
-
var _el$
|
|
539
|
-
_$setProp(_el$
|
|
540
|
-
_$insert(_el$
|
|
545
|
+
var _el$13 = _$createElement("box");
|
|
546
|
+
_$setProp(_el$13, "gap", 0);
|
|
547
|
+
_$insert(_el$13, _$createComponent(props.api.ui.Prompt, {
|
|
541
548
|
get sessionID() {
|
|
542
549
|
return props.sessionID;
|
|
543
550
|
},
|
|
@@ -555,7 +562,7 @@ function SessionQuotaPromptBar(props) {
|
|
|
555
562
|
typeof _ref$2 === "function" ? _ref$2(r$) : props.promptRef = r$;
|
|
556
563
|
}
|
|
557
564
|
}), null);
|
|
558
|
-
_$insert(_el$
|
|
565
|
+
_$insert(_el$13, _$createComponent(PromptQuotaHint, {
|
|
559
566
|
get api() {
|
|
560
567
|
return props.api;
|
|
561
568
|
},
|
|
@@ -563,7 +570,7 @@ function SessionQuotaPromptBar(props) {
|
|
|
563
570
|
running: running,
|
|
564
571
|
phase: phase
|
|
565
572
|
}), null);
|
|
566
|
-
return _el$
|
|
573
|
+
return _el$13;
|
|
567
574
|
})();
|
|
568
575
|
}
|
|
569
576
|
function HomeBottomView(props) {
|
|
@@ -573,35 +580,35 @@ function HomeBottomView(props) {
|
|
|
573
580
|
const compact = () => resource.bottom().compact;
|
|
574
581
|
const visible = () => shouldRenderHomeBottom(resource.bottom());
|
|
575
582
|
return (() => {
|
|
576
|
-
var _el$
|
|
577
|
-
_$setProp(_el$
|
|
578
|
-
_$insert(_el$
|
|
583
|
+
var _el$14 = _$createElement("box");
|
|
584
|
+
_$setProp(_el$14, "gap", 0);
|
|
585
|
+
_$insert(_el$14, _$createComponent(Show, {
|
|
579
586
|
get when() {
|
|
580
587
|
return visible();
|
|
581
588
|
},
|
|
582
589
|
get children() {
|
|
583
|
-
var _el$
|
|
584
|
-
_$insertNode(_el$
|
|
585
|
-
return _el$
|
|
590
|
+
var _el$15 = _$createElement("text");
|
|
591
|
+
_$insertNode(_el$15, _$createTextNode(` `));
|
|
592
|
+
return _el$15;
|
|
586
593
|
}
|
|
587
594
|
}), null);
|
|
588
|
-
_$insert(_el$
|
|
595
|
+
_$insert(_el$14, _$createComponent(Show, {
|
|
589
596
|
get when() {
|
|
590
597
|
return _$memo(() => !!visible())() && announcement();
|
|
591
598
|
},
|
|
592
599
|
get children() {
|
|
593
|
-
var _el$
|
|
594
|
-
_el$
|
|
595
|
-
_$insertNode(_el$
|
|
596
|
-
_$setProp(_el$
|
|
597
|
-
_$setProp(_el$
|
|
598
|
-
_$setProp(_el$
|
|
599
|
-
_$insert(_el$
|
|
600
|
-
_$effect(_$p => _$setProp(_el$
|
|
601
|
-
return _el$
|
|
600
|
+
var _el$17 = _$createElement("box"),
|
|
601
|
+
_el$18 = _$createElement("text");
|
|
602
|
+
_$insertNode(_el$17, _el$18);
|
|
603
|
+
_$setProp(_el$17, "flexDirection", "row");
|
|
604
|
+
_$setProp(_el$17, "justifyContent", "center");
|
|
605
|
+
_$setProp(_el$18, "wrapMode", "none");
|
|
606
|
+
_$insert(_el$18, announcement);
|
|
607
|
+
_$effect(_$p => _$setProp(_el$18, "fg", props.api.theme.current.textMuted, _$p));
|
|
608
|
+
return _el$17;
|
|
602
609
|
}
|
|
603
610
|
}), null);
|
|
604
|
-
_$insert(_el$
|
|
611
|
+
_$insert(_el$14, _$createComponent(Show, {
|
|
605
612
|
get when() {
|
|
606
613
|
return visible();
|
|
607
614
|
},
|
|
@@ -615,7 +622,7 @@ function HomeBottomView(props) {
|
|
|
615
622
|
});
|
|
616
623
|
}
|
|
617
624
|
}), null);
|
|
618
|
-
return _el$
|
|
625
|
+
return _el$14;
|
|
619
626
|
})();
|
|
620
627
|
}
|
|
621
628
|
function getActiveTuiSessionID(api) {
|
|
@@ -633,117 +640,117 @@ function getTuiCommandArguments(input) {
|
|
|
633
640
|
}
|
|
634
641
|
function CommandLoadingDialog(props) {
|
|
635
642
|
return (() => {
|
|
636
|
-
var _el$
|
|
637
|
-
_el$
|
|
638
|
-
_el$
|
|
639
|
-
_el$
|
|
640
|
-
_$insertNode(_el$
|
|
641
|
-
_$insertNode(_el$
|
|
642
|
-
_$setProp(_el$
|
|
643
|
-
_$setProp(_el$
|
|
644
|
-
_$setProp(_el$
|
|
645
|
-
_$setProp(_el$
|
|
646
|
-
_$insertNode(_el$
|
|
647
|
-
_$insert(_el$
|
|
648
|
-
_$insertNode(_el$
|
|
643
|
+
var _el$19 = _$createElement("box"),
|
|
644
|
+
_el$20 = _$createElement("text"),
|
|
645
|
+
_el$21 = _$createElement("b"),
|
|
646
|
+
_el$22 = _$createElement("text");
|
|
647
|
+
_$insertNode(_el$19, _el$20);
|
|
648
|
+
_$insertNode(_el$19, _el$22);
|
|
649
|
+
_$setProp(_el$19, "gap", 1);
|
|
650
|
+
_$setProp(_el$19, "paddingLeft", 2);
|
|
651
|
+
_$setProp(_el$19, "paddingRight", 2);
|
|
652
|
+
_$setProp(_el$19, "paddingBottom", 1);
|
|
653
|
+
_$insertNode(_el$20, _el$21);
|
|
654
|
+
_$insert(_el$21, () => props.title);
|
|
655
|
+
_$insertNode(_el$22, _$createTextNode(`Loading deterministic local output…`));
|
|
649
656
|
_$effect(_p$ => {
|
|
650
|
-
var _v$
|
|
651
|
-
_v$
|
|
652
|
-
_v$
|
|
653
|
-
_v$
|
|
657
|
+
var _v$8 = props.api.theme.current.text,
|
|
658
|
+
_v$9 = props.api.theme.current.textMuted;
|
|
659
|
+
_v$8 !== _p$.e && (_p$.e = _$setProp(_el$20, "fg", _v$8, _p$.e));
|
|
660
|
+
_v$9 !== _p$.t && (_p$.t = _$setProp(_el$22, "fg", _v$9, _p$.t));
|
|
654
661
|
return _p$;
|
|
655
662
|
}, {
|
|
656
663
|
e: undefined,
|
|
657
664
|
t: undefined
|
|
658
665
|
});
|
|
659
|
-
return _el$
|
|
666
|
+
return _el$19;
|
|
660
667
|
})();
|
|
661
668
|
}
|
|
662
669
|
function CommandOutputDialog(props) {
|
|
663
670
|
const lines = () => props.output.split("\n");
|
|
664
671
|
const bodyHeight = () => Math.min(28, Math.max(6, lines().length));
|
|
665
672
|
return (() => {
|
|
666
|
-
var _el$
|
|
667
|
-
_el$
|
|
668
|
-
_el$
|
|
669
|
-
_el$
|
|
670
|
-
_el$
|
|
671
|
-
_el$
|
|
672
|
-
_$insertNode(_el$
|
|
673
|
-
_$insertNode(_el$
|
|
674
|
-
_$insertNode(_el$
|
|
675
|
-
_$setProp(_el$
|
|
676
|
-
_$setProp(_el$
|
|
677
|
-
_$setProp(_el$
|
|
678
|
-
_$setProp(_el$
|
|
679
|
-
_$setProp(_el$
|
|
680
|
-
_$setProp(_el$
|
|
681
|
-
_$insertNode(_el$
|
|
682
|
-
_$insert(_el$
|
|
683
|
-
_$insertNode(_el$
|
|
684
|
-
_$setProp(_el$
|
|
685
|
-
_$setProp(_el$
|
|
686
|
-
_$setProp(_el$
|
|
687
|
-
_$setProp(_el$
|
|
688
|
-
_$setProp(_el$
|
|
689
|
-
_$setProp(_el$
|
|
690
|
-
_$insert(_el$
|
|
691
|
-
var _el$
|
|
692
|
-
_$setProp(_el$
|
|
693
|
-
_$setProp(_el$
|
|
694
|
-
_$insert(_el$
|
|
695
|
-
_$effect(_$p => _$setProp(_el$
|
|
696
|
-
return _el$
|
|
673
|
+
var _el$24 = _$createElement("box"),
|
|
674
|
+
_el$25 = _$createElement("text"),
|
|
675
|
+
_el$26 = _$createElement("b"),
|
|
676
|
+
_el$27 = _$createElement("scrollbox"),
|
|
677
|
+
_el$28 = _$createElement("box"),
|
|
678
|
+
_el$29 = _$createElement("text");
|
|
679
|
+
_$insertNode(_el$24, _el$25);
|
|
680
|
+
_$insertNode(_el$24, _el$27);
|
|
681
|
+
_$insertNode(_el$24, _el$29);
|
|
682
|
+
_$setProp(_el$24, "gap", 1);
|
|
683
|
+
_$setProp(_el$24, "width", "100%");
|
|
684
|
+
_$setProp(_el$24, "flexGrow", 1);
|
|
685
|
+
_$setProp(_el$24, "paddingLeft", 2);
|
|
686
|
+
_$setProp(_el$24, "paddingRight", 2);
|
|
687
|
+
_$setProp(_el$24, "paddingBottom", 1);
|
|
688
|
+
_$insertNode(_el$25, _el$26);
|
|
689
|
+
_$insert(_el$26, () => props.title);
|
|
690
|
+
_$insertNode(_el$27, _el$28);
|
|
691
|
+
_$setProp(_el$27, "width", "100%");
|
|
692
|
+
_$setProp(_el$27, "flexGrow", 1);
|
|
693
|
+
_$setProp(_el$27, "maxHeight", 28);
|
|
694
|
+
_$setProp(_el$28, "gap", 0);
|
|
695
|
+
_$setProp(_el$28, "width", "100%");
|
|
696
|
+
_$setProp(_el$28, "minWidth", 0);
|
|
697
|
+
_$insert(_el$28, () => lines().map(line => (() => {
|
|
698
|
+
var _el$31 = _$createElement("text");
|
|
699
|
+
_$setProp(_el$31, "wrapMode", "word");
|
|
700
|
+
_$setProp(_el$31, "width", "100%");
|
|
701
|
+
_$insert(_el$31, line || " ");
|
|
702
|
+
_$effect(_$p => _$setProp(_el$31, "fg", props.api.theme.current.text, _$p));
|
|
703
|
+
return _el$31;
|
|
697
704
|
})()));
|
|
698
|
-
_$insertNode(_el$
|
|
705
|
+
_$insertNode(_el$29, _$createTextNode(`esc closes`));
|
|
699
706
|
_$effect(_p$ => {
|
|
700
|
-
var _v$
|
|
701
|
-
_v$
|
|
702
|
-
_v$
|
|
703
|
-
_v$
|
|
704
|
-
_v$
|
|
705
|
-
_v$
|
|
707
|
+
var _v$0 = props.api.theme.current.text,
|
|
708
|
+
_v$1 = bodyHeight(),
|
|
709
|
+
_v$10 = props.api.theme.current.textMuted;
|
|
710
|
+
_v$0 !== _p$.e && (_p$.e = _$setProp(_el$25, "fg", _v$0, _p$.e));
|
|
711
|
+
_v$1 !== _p$.t && (_p$.t = _$setProp(_el$27, "minHeight", _v$1, _p$.t));
|
|
712
|
+
_v$10 !== _p$.a && (_p$.a = _$setProp(_el$29, "fg", _v$10, _p$.a));
|
|
706
713
|
return _p$;
|
|
707
714
|
}, {
|
|
708
715
|
e: undefined,
|
|
709
716
|
t: undefined,
|
|
710
717
|
a: undefined
|
|
711
718
|
});
|
|
712
|
-
return _el$
|
|
719
|
+
return _el$24;
|
|
713
720
|
})();
|
|
714
721
|
}
|
|
715
722
|
function CommandErrorDialog(props) {
|
|
716
723
|
const message = props.error instanceof Error ? props.error.message : String(props.error);
|
|
717
724
|
return (() => {
|
|
718
|
-
var _el$
|
|
719
|
-
_el$
|
|
720
|
-
_el$
|
|
721
|
-
_el$
|
|
722
|
-
_el$
|
|
723
|
-
_el$
|
|
724
|
-
_$insertNode(_el$
|
|
725
|
-
_$insertNode(_el$
|
|
726
|
-
_$insertNode(_el$
|
|
727
|
-
_$insertNode(_el$
|
|
728
|
-
_$setProp(_el$
|
|
729
|
-
_$setProp(_el$
|
|
730
|
-
_$setProp(_el$
|
|
731
|
-
_$setProp(_el$
|
|
732
|
-
_$insertNode(_el$
|
|
733
|
-
_$insert(_el$
|
|
734
|
-
_$insertNode(_el$
|
|
735
|
-
_$setProp(_el$
|
|
736
|
-
_$insert(_el$
|
|
737
|
-
_$insertNode(_el$
|
|
725
|
+
var _el$32 = _$createElement("box"),
|
|
726
|
+
_el$33 = _$createElement("text"),
|
|
727
|
+
_el$34 = _$createElement("b"),
|
|
728
|
+
_el$35 = _$createElement("text"),
|
|
729
|
+
_el$37 = _$createElement("text"),
|
|
730
|
+
_el$38 = _$createElement("text");
|
|
731
|
+
_$insertNode(_el$32, _el$33);
|
|
732
|
+
_$insertNode(_el$32, _el$35);
|
|
733
|
+
_$insertNode(_el$32, _el$37);
|
|
734
|
+
_$insertNode(_el$32, _el$38);
|
|
735
|
+
_$setProp(_el$32, "gap", 1);
|
|
736
|
+
_$setProp(_el$32, "paddingLeft", 2);
|
|
737
|
+
_$setProp(_el$32, "paddingRight", 2);
|
|
738
|
+
_$setProp(_el$32, "paddingBottom", 1);
|
|
739
|
+
_$insertNode(_el$33, _el$34);
|
|
740
|
+
_$insert(_el$34, () => props.title);
|
|
741
|
+
_$insertNode(_el$35, _$createTextNode(`OpenCode Quota command failed.`));
|
|
742
|
+
_$setProp(_el$37, "wrapMode", "none");
|
|
743
|
+
_$insert(_el$37, message || "Unknown error");
|
|
744
|
+
_$insertNode(_el$38, _$createTextNode(`esc closes`));
|
|
738
745
|
_$effect(_p$ => {
|
|
739
|
-
var _v$
|
|
740
|
-
_v$
|
|
741
|
-
_v$
|
|
742
|
-
_v$
|
|
743
|
-
_v$
|
|
744
|
-
_v$
|
|
745
|
-
_v$
|
|
746
|
-
_v$
|
|
746
|
+
var _v$11 = props.api.theme.current.text,
|
|
747
|
+
_v$12 = props.api.theme.current.text,
|
|
748
|
+
_v$13 = props.api.theme.current.textMuted,
|
|
749
|
+
_v$14 = props.api.theme.current.textMuted;
|
|
750
|
+
_v$11 !== _p$.e && (_p$.e = _$setProp(_el$33, "fg", _v$11, _p$.e));
|
|
751
|
+
_v$12 !== _p$.t && (_p$.t = _$setProp(_el$35, "fg", _v$12, _p$.t));
|
|
752
|
+
_v$13 !== _p$.a && (_p$.a = _$setProp(_el$37, "fg", _v$13, _p$.a));
|
|
753
|
+
_v$14 !== _p$.o && (_p$.o = _$setProp(_el$38, "fg", _v$14, _p$.o));
|
|
747
754
|
return _p$;
|
|
748
755
|
}, {
|
|
749
756
|
e: undefined,
|
|
@@ -751,7 +758,7 @@ function CommandErrorDialog(props) {
|
|
|
751
758
|
a: undefined,
|
|
752
759
|
o: undefined
|
|
753
760
|
});
|
|
754
|
-
return _el$
|
|
761
|
+
return _el$32;
|
|
755
762
|
})();
|
|
756
763
|
}
|
|
757
764
|
function getCommandPromptCopy(spec) {
|
|
@@ -795,11 +802,11 @@ async function runQuotaDialogCommandAsync(api, command, commandDisplay, rawInput
|
|
|
795
802
|
return prompt.placeholder;
|
|
796
803
|
},
|
|
797
804
|
description: () => (() => {
|
|
798
|
-
var _el$
|
|
799
|
-
_$setProp(_el$
|
|
800
|
-
_$insert(_el$
|
|
801
|
-
_$effect(_$p => _$setProp(_el$
|
|
802
|
-
return _el$
|
|
805
|
+
var _el$40 = _$createElement("text");
|
|
806
|
+
_$setProp(_el$40, "wrapMode", "word");
|
|
807
|
+
_$insert(_el$40, () => prompt.description);
|
|
808
|
+
_$effect(_$p => _$setProp(_el$40, "fg", api.theme.current.textMuted, _$p));
|
|
809
|
+
return _el$40;
|
|
803
810
|
})(),
|
|
804
811
|
onCancel: () => api.ui.dialog.clear(),
|
|
805
812
|
onConfirm: value => {
|