@cortexkit/opencode-anthropic-auth 2.2.0 → 2.2.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/dist/cli.js +1 -1
- package/dist/{index-f2ne65w4.js → index-62x1p34p.js} +1 -1
- package/dist/{index-pden7a7y.js → index-88zg9ztr.js} +1 -1
- package/dist/{index-ccrq4mra.js → index-8ysjtqek.js} +1 -1
- package/dist/{index-ah5s0bew.js → index-ppdrzs41.js} +1 -1
- package/dist/index-xbwa4x53.js +2 -0
- package/dist/index.js +1 -1
- package/dist/rpc/port-file.js +1 -1
- package/dist/rpc/protocol.js +1 -1
- package/dist/rpc/rpc-client.js +1 -1
- package/dist/rpc/rpc-dir.js +1 -1
- package/dist/sidebar-state.d.ts +53 -0
- package/dist/sidebar-state.js +1 -1
- package/dist/tui/claude-sidebar.d.ts +5 -0
- package/dist/tui-preferences.js +1 -1
- package/dist/v2/server.js +1 -1
- package/dist/v2/tui.js +1 -1
- package/package.json +2 -2
- package/src/sidebar-state.ts +125 -0
- package/src/tui/claude-sidebar.tsx +164 -93
- package/src/tui-compiled/sidebar-state.ts +125 -0
- package/src/tui-compiled/tui/claude-sidebar.tsx +288 -231
- package/dist/index-czyrqpxc.js +0 -2
|
@@ -19,7 +19,7 @@ import { fileURLToPath } from "node:url";
|
|
|
19
19
|
import { formatCreditAmounts, quotaDisplayProjection, quotaWindowParts } from "@cortexkit/anthropic-auth-core";
|
|
20
20
|
import { TextAttributes } from "opentui:runtime-module:%40opentui%2Fcore";
|
|
21
21
|
import { createEffect, createMemo, createSignal, For, Index, onCleanup, Show } from "opentui:runtime-module:solid-js";
|
|
22
|
-
import { computeQuotaPacing, DEFAULT_SIDEBAR_STATE, FIVE_HOUR_MS, formatPrimeAccountValue, formatQuotaRowLabel, getCollapsedAccounts, getCollapsedQuotaSummary, getFableRecoverySummary, resolveActiveAccount, SEVEN_DAY_MS } from "../sidebar-state.js";
|
|
22
|
+
import { computeQuotaPacing, DEFAULT_SIDEBAR_STATE, FIVE_HOUR_MS, fitPaceLine, fitQuotaRow, formatPrimeAccountValue, formatQuotaRowLabel, getCollapsedAccounts, getCollapsedQuotaSummary, getFableRecoverySummary, quotaLabelColumnWidth, resolveActiveAccount, SEVEN_DAY_MS, scopedQuotaShortNames } from "../sidebar-state.js";
|
|
23
23
|
import { PLUGIN_KEY, queueTuiPreferenceUpdate, readTuiPreferencesFile, resolveAnthropicAuthPrefs, watchTuiPreferences } from "../tui-preferences.js";
|
|
24
24
|
|
|
25
25
|
// Read package metadata from either the raw src/ entry or its generated
|
|
@@ -78,8 +78,8 @@ const PACE_DEFICIT_CHAR = '\u2593';
|
|
|
78
78
|
// bar renders as a single fill+empty pair, identical to the pre-pacing look.
|
|
79
79
|
// Empty text nodes still occupy a phantom cell in the opentui flex row, so
|
|
80
80
|
// zero-length segments are dropped from every return path (plain and pacing).
|
|
81
|
-
function quotaBarSegments(usedPct, appearance, pacing) {
|
|
82
|
-
|
|
81
|
+
function quotaBarSegments(usedPct, appearance, pacing, width) {
|
|
82
|
+
if (width <= 0) return [];
|
|
83
83
|
const cells = pct => Math.max(0, Math.min(Math.round(pct / 100 * width), width));
|
|
84
84
|
const usedCells = cells(usedPct);
|
|
85
85
|
const fillTone = usageTone(usedPct, appearance);
|
|
@@ -275,122 +275,147 @@ function CollapsedAccountRow(props) {
|
|
|
275
275
|
})();
|
|
276
276
|
}
|
|
277
277
|
|
|
278
|
-
//
|
|
279
|
-
//
|
|
280
|
-
|
|
281
|
-
|
|
278
|
+
// One cell run of a single-line row: drawn at its own width, never shrunk and
|
|
279
|
+
// never wrapped, so the row's layout is exactly what `fitQuotaRow` measured.
|
|
280
|
+
function Cell(props) {
|
|
281
|
+
return (() => {
|
|
282
|
+
var _el$13 = _$createElement("text");
|
|
283
|
+
_$setProp(_el$13, "flexShrink", 0);
|
|
284
|
+
_$setProp(_el$13, "wrapMode", 'none');
|
|
285
|
+
_$insert(_el$13, () => props.text);
|
|
286
|
+
_$effect(_p$ => {
|
|
287
|
+
var _v$1 = Bun.stringWidth(props.text),
|
|
288
|
+
_v$10 = props.fg;
|
|
289
|
+
_v$1 !== _p$.e && (_p$.e = _$setProp(_el$13, "width", _v$1, _p$.e));
|
|
290
|
+
_v$10 !== _p$.t && (_p$.t = _$setProp(_el$13, "fg", _v$10, _p$.t));
|
|
291
|
+
return _p$;
|
|
292
|
+
}, {
|
|
293
|
+
e: undefined,
|
|
294
|
+
t: undefined
|
|
295
|
+
});
|
|
296
|
+
return _el$13;
|
|
297
|
+
})();
|
|
298
|
+
}
|
|
299
|
+
|
|
300
|
+
// Quota window row: muted label left in a column `labelWidth` wide, then the
|
|
301
|
+
// tone-colored bar and the shared figure, and the muted reset at the right
|
|
302
|
+
// edge. The row is one line: `fitQuotaRow` drops detail to fit `width`
|
|
303
|
+
// instead of letting it wrap. When pacing data is present, the bar gains a
|
|
304
|
+
// pace segment and an off-pace window adds a one-line subline under the bar
|
|
305
|
+
// with the reserve/deficit delta and either the projected runout or
|
|
306
|
+
// `lasts to reset`.
|
|
282
307
|
function QuotaRow(props) {
|
|
283
308
|
const used = () => props.usedPercent ?? 0;
|
|
284
|
-
const
|
|
285
|
-
const
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
309
|
+
const labelCell = () => `${props.label}${' '.repeat(Math.max(0, props.labelWidth - Bun.stringWidth(props.label)))} `;
|
|
310
|
+
const figure = () => `${props.part?.figure ?? ''}${props.binding ? ' \u2022' : ''}`;
|
|
311
|
+
const fit = () => fitQuotaRow({
|
|
312
|
+
width: props.width,
|
|
313
|
+
labelWidth: props.labelWidth,
|
|
314
|
+
barWidth: props.appearance.barWidth,
|
|
315
|
+
figure: figure(),
|
|
316
|
+
reset: props.part?.resetIn
|
|
317
|
+
});
|
|
318
|
+
const paceLine = () => fitPaceLine(props.pacing, props.width === undefined ? undefined : props.width - props.labelWidth - 1, props.pacing?.runsOutAt ? formatResetIn(props.pacing.runsOutAt, props.now) : undefined);
|
|
292
319
|
return _$createComponent(Show, {
|
|
293
320
|
get when() {
|
|
294
321
|
return props.part;
|
|
295
322
|
},
|
|
296
323
|
get fallback() {
|
|
297
324
|
return (() => {
|
|
298
|
-
var _el$
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
_$
|
|
302
|
-
_$
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
_v$14 !== _p$.t && (_p$.t = _$setProp(_el$23, "fg", _v$14, _p$.t));
|
|
312
|
-
return _p$;
|
|
313
|
-
}, {
|
|
314
|
-
e: undefined,
|
|
315
|
-
t: undefined
|
|
316
|
-
});
|
|
317
|
-
return _el$21;
|
|
325
|
+
var _el$16 = _$createElement("box");
|
|
326
|
+
_$setProp(_el$16, "width", '100%');
|
|
327
|
+
_$setProp(_el$16, "height", 1);
|
|
328
|
+
_$setProp(_el$16, "flexDirection", 'row');
|
|
329
|
+
_$insert(_el$16, _$createComponent(Cell, {
|
|
330
|
+
get fg() {
|
|
331
|
+
return props.theme.textMuted;
|
|
332
|
+
},
|
|
333
|
+
get text() {
|
|
334
|
+
return `${labelCell()}\u2014`;
|
|
335
|
+
}
|
|
336
|
+
}));
|
|
337
|
+
return _el$16;
|
|
318
338
|
})();
|
|
319
339
|
},
|
|
320
340
|
get children() {
|
|
321
341
|
return [(() => {
|
|
322
|
-
var _el$
|
|
323
|
-
_el$
|
|
324
|
-
_el$15 = _$createElement("text"),
|
|
325
|
-
_el$16 = _$createElement("text");
|
|
326
|
-
_$insertNode(_el$13, _el$14);
|
|
327
|
-
_$setProp(_el$13, "width", '100%');
|
|
328
|
-
_$setProp(_el$13, "flexDirection", 'row');
|
|
329
|
-
_$setProp(_el$13, "justifyContent", 'space-between');
|
|
342
|
+
var _el$14 = _$createElement("box"),
|
|
343
|
+
_el$15 = _$createElement("box");
|
|
330
344
|
_$insertNode(_el$14, _el$15);
|
|
331
|
-
_$
|
|
345
|
+
_$setProp(_el$14, "width", '100%');
|
|
346
|
+
_$setProp(_el$14, "height", 1);
|
|
332
347
|
_$setProp(_el$14, "flexDirection", 'row');
|
|
333
|
-
_$insert(_el$
|
|
348
|
+
_$insert(_el$14, _$createComponent(Cell, {
|
|
349
|
+
get fg() {
|
|
350
|
+
return props.theme.textMuted;
|
|
351
|
+
},
|
|
352
|
+
get text() {
|
|
353
|
+
return labelCell();
|
|
354
|
+
}
|
|
355
|
+
}), _el$15);
|
|
334
356
|
_$insert(_el$14, _$createComponent(Index, {
|
|
335
357
|
get each() {
|
|
336
|
-
return quotaBarSegments(used(), props.appearance, props.pacing);
|
|
358
|
+
return quotaBarSegments(used(), props.appearance, props.pacing, fit().barCells);
|
|
337
359
|
},
|
|
338
|
-
children: segment => (
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
360
|
+
children: segment => _$createComponent(Cell, {
|
|
361
|
+
get fg() {
|
|
362
|
+
return toneColor(props.theme, segment().tone);
|
|
363
|
+
},
|
|
364
|
+
get text() {
|
|
365
|
+
return segment().text;
|
|
366
|
+
}
|
|
367
|
+
})
|
|
368
|
+
}), _el$15);
|
|
369
|
+
_$insert(_el$14, _$createComponent(Cell, {
|
|
370
|
+
get fg() {
|
|
371
|
+
return toneColor(props.theme, usageTone(used(), props.appearance));
|
|
349
372
|
},
|
|
350
|
-
get
|
|
351
|
-
|
|
352
|
-
_$insert(_el$17, reset);
|
|
353
|
-
_$effect(_$p => _$setProp(_el$17, "fg", props.theme.textMuted, _$p));
|
|
354
|
-
return _el$17;
|
|
373
|
+
get text() {
|
|
374
|
+
return `${fit().barCells > 0 ? ' ' : ''}${figure()}`;
|
|
355
375
|
}
|
|
376
|
+
}), _el$15);
|
|
377
|
+
_$setProp(_el$15, "flexGrow", 1);
|
|
378
|
+
_$insert(_el$14, _$createComponent(Show, {
|
|
379
|
+
get when() {
|
|
380
|
+
return fit().reset;
|
|
381
|
+
},
|
|
382
|
+
children: reset => _$createComponent(Cell, {
|
|
383
|
+
get fg() {
|
|
384
|
+
return props.theme.textMuted;
|
|
385
|
+
},
|
|
386
|
+
get text() {
|
|
387
|
+
return ` ${reset()}`;
|
|
388
|
+
}
|
|
389
|
+
})
|
|
356
390
|
}), null);
|
|
357
|
-
|
|
358
|
-
var _v$1 = props.theme.textMuted,
|
|
359
|
-
_v$10 = toneColor(props.theme, usageTone(used(), props.appearance));
|
|
360
|
-
_v$1 !== _p$.e && (_p$.e = _$setProp(_el$15, "fg", _v$1, _p$.e));
|
|
361
|
-
_v$10 !== _p$.t && (_p$.t = _$setProp(_el$16, "fg", _v$10, _p$.t));
|
|
362
|
-
return _p$;
|
|
363
|
-
}, {
|
|
364
|
-
e: undefined,
|
|
365
|
-
t: undefined
|
|
366
|
-
});
|
|
367
|
-
return _el$13;
|
|
391
|
+
return _el$14;
|
|
368
392
|
})(), _$createComponent(Show, {
|
|
369
393
|
get when() {
|
|
370
394
|
return paceLine();
|
|
371
395
|
},
|
|
372
|
-
|
|
373
|
-
var _el$
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
_$
|
|
377
|
-
_$
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
396
|
+
children: line => (() => {
|
|
397
|
+
var _el$17 = _$createElement("box");
|
|
398
|
+
_$setProp(_el$17, "width", '100%');
|
|
399
|
+
_$setProp(_el$17, "height", 1);
|
|
400
|
+
_$setProp(_el$17, "flexDirection", 'row');
|
|
401
|
+
_$insert(_el$17, _$createComponent(Cell, {
|
|
402
|
+
get fg() {
|
|
403
|
+
return props.theme.textMuted;
|
|
404
|
+
},
|
|
405
|
+
get text() {
|
|
406
|
+
return ' '.repeat(props.labelWidth + 1);
|
|
407
|
+
}
|
|
408
|
+
}), null);
|
|
409
|
+
_$insert(_el$17, _$createComponent(Cell, {
|
|
410
|
+
get fg() {
|
|
411
|
+
return toneColor(props.theme, props.pacing?.state === 'deficit' ? 'warn' : 'muted');
|
|
412
|
+
},
|
|
413
|
+
get text() {
|
|
414
|
+
return line();
|
|
415
|
+
}
|
|
416
|
+
}), null);
|
|
417
|
+
return _el$17;
|
|
418
|
+
})()
|
|
394
419
|
})];
|
|
395
420
|
}
|
|
396
421
|
});
|
|
@@ -421,46 +446,58 @@ export function AccountBlock(props) {
|
|
|
421
446
|
now: props.now
|
|
422
447
|
});
|
|
423
448
|
const partFor = name => parts().windows.find(part => part.name === name);
|
|
449
|
+
const scopedLabels = () => scopedQuotaShortNames(props.quota, props.now);
|
|
450
|
+
const labelWidth = () => props.labelWidth ?? quotaLabelColumnWidth([props.quota], props.now);
|
|
451
|
+
// The block's laid-out width, read when it mounts and on each resize. Quota
|
|
452
|
+
// rows drop or shrink detail to fit it (and are cut at the edge when even
|
|
453
|
+
// that is not enough); pacing sublines are cut to fit. Undefined until layout.
|
|
454
|
+
const [width, setWidth] = createSignal();
|
|
455
|
+
let block;
|
|
424
456
|
return (() => {
|
|
425
|
-
var _el$
|
|
426
|
-
_el$
|
|
427
|
-
_el$
|
|
428
|
-
_el$
|
|
429
|
-
_el$
|
|
430
|
-
_el$
|
|
431
|
-
_$insertNode(_el$
|
|
432
|
-
_$
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
_$setProp(_el$
|
|
437
|
-
_$setProp(_el$
|
|
438
|
-
_$setProp(_el$
|
|
439
|
-
_$insertNode(_el$
|
|
440
|
-
_$
|
|
441
|
-
_$
|
|
442
|
-
_$
|
|
443
|
-
_$
|
|
457
|
+
var _el$18 = _$createElement("box"),
|
|
458
|
+
_el$19 = _$createElement("box"),
|
|
459
|
+
_el$20 = _$createElement("text"),
|
|
460
|
+
_el$21 = _$createElement("b"),
|
|
461
|
+
_el$22 = _$createElement("text"),
|
|
462
|
+
_el$23 = _$createElement("b");
|
|
463
|
+
_$insertNode(_el$18, _el$19);
|
|
464
|
+
_$use(element => {
|
|
465
|
+
block = element;
|
|
466
|
+
setWidth(element.width || undefined);
|
|
467
|
+
}, _el$18);
|
|
468
|
+
_$setProp(_el$18, "width", '100%');
|
|
469
|
+
_$setProp(_el$18, "flexDirection", 'column');
|
|
470
|
+
_$setProp(_el$18, "onSizeChange", () => setWidth(block?.width || undefined));
|
|
471
|
+
_$insertNode(_el$19, _el$20);
|
|
472
|
+
_$insertNode(_el$19, _el$22);
|
|
473
|
+
_$setProp(_el$19, "width", '100%');
|
|
474
|
+
_$setProp(_el$19, "flexDirection", 'row');
|
|
475
|
+
_$setProp(_el$19, "justifyContent", 'space-between');
|
|
476
|
+
_$insertNode(_el$20, _el$21);
|
|
477
|
+
_$insert(_el$21, () => `${props.name}${props.tierLabel ? ` · ${props.tierLabel}` : ''}`);
|
|
478
|
+
_$insertNode(_el$22, _el$23);
|
|
479
|
+
_$insert(_el$23, statusWord);
|
|
480
|
+
_$insert(_el$18, _$createComponent(Show, {
|
|
444
481
|
get when() {
|
|
445
482
|
return props.stateLine;
|
|
446
483
|
},
|
|
447
484
|
get children() {
|
|
448
|
-
var _el$
|
|
449
|
-
_$insert(_el$
|
|
450
|
-
_$effect(_$p => _$setProp(_el$
|
|
451
|
-
return _el$
|
|
485
|
+
var _el$24 = _$createElement("text");
|
|
486
|
+
_$insert(_el$24, () => props.stateLine);
|
|
487
|
+
_$effect(_$p => _$setProp(_el$24, "fg", props.theme.textMuted, _$p));
|
|
488
|
+
return _el$24;
|
|
452
489
|
}
|
|
453
490
|
}), null);
|
|
454
|
-
_$insert(_el$
|
|
491
|
+
_$insert(_el$18, _$createComponent(Show, {
|
|
455
492
|
get when() {
|
|
456
493
|
return props.quota;
|
|
457
494
|
},
|
|
458
495
|
get fallback() {
|
|
459
496
|
return (() => {
|
|
460
|
-
var _el$
|
|
461
|
-
_$insertNode(_el$
|
|
462
|
-
_$effect(_$p => _$setProp(_el$
|
|
463
|
-
return _el$
|
|
497
|
+
var _el$28 = _$createElement("text");
|
|
498
|
+
_$insertNode(_el$28, _$createTextNode(`checking…`));
|
|
499
|
+
_$effect(_$p => _$setProp(_el$28, "fg", props.theme.textMuted, _$p));
|
|
500
|
+
return _el$28;
|
|
464
501
|
})();
|
|
465
502
|
},
|
|
466
503
|
get children() {
|
|
@@ -472,6 +509,12 @@ export function AccountBlock(props) {
|
|
|
472
509
|
return props.appearance;
|
|
473
510
|
},
|
|
474
511
|
label: "5h",
|
|
512
|
+
get labelWidth() {
|
|
513
|
+
return labelWidth();
|
|
514
|
+
},
|
|
515
|
+
get width() {
|
|
516
|
+
return width();
|
|
517
|
+
},
|
|
475
518
|
get part() {
|
|
476
519
|
return partFor('5h');
|
|
477
520
|
},
|
|
@@ -495,6 +538,12 @@ export function AccountBlock(props) {
|
|
|
495
538
|
return props.appearance;
|
|
496
539
|
},
|
|
497
540
|
label: "7d",
|
|
541
|
+
get labelWidth() {
|
|
542
|
+
return labelWidth();
|
|
543
|
+
},
|
|
544
|
+
get width() {
|
|
545
|
+
return width();
|
|
546
|
+
},
|
|
498
547
|
get part() {
|
|
499
548
|
return partFor('7d');
|
|
500
549
|
},
|
|
@@ -514,7 +563,7 @@ export function AccountBlock(props) {
|
|
|
514
563
|
get each() {
|
|
515
564
|
return props.quota?.scoped ?? [];
|
|
516
565
|
},
|
|
517
|
-
children: window => _$createComponent(QuotaRow, {
|
|
566
|
+
children: (window, index) => _$createComponent(QuotaRow, {
|
|
518
567
|
get theme() {
|
|
519
568
|
return props.theme;
|
|
520
569
|
},
|
|
@@ -522,7 +571,13 @@ export function AccountBlock(props) {
|
|
|
522
571
|
return props.appearance;
|
|
523
572
|
},
|
|
524
573
|
get label() {
|
|
525
|
-
return
|
|
574
|
+
return scopedLabels()[index()] ?? window.title;
|
|
575
|
+
},
|
|
576
|
+
get labelWidth() {
|
|
577
|
+
return labelWidth();
|
|
578
|
+
},
|
|
579
|
+
get width() {
|
|
580
|
+
return width();
|
|
526
581
|
},
|
|
527
582
|
get part() {
|
|
528
583
|
return partFor(window.title);
|
|
@@ -544,63 +599,57 @@ export function AccountBlock(props) {
|
|
|
544
599
|
get when() {
|
|
545
600
|
return partFor('credits');
|
|
546
601
|
},
|
|
547
|
-
children: budget =>
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
_$setProp(_el$38, "onSizeChange", () => setWidth(line?.width || undefined));
|
|
562
|
-
_$insert(_el$39, () => creditLine(budget().figure, props.quota?.extraUsage, width()));
|
|
563
|
-
_$effect(_$p => _$setProp(_el$39, "fg", toneColor(props.theme, props.quota?.extraUsage?.severity === 'critical' ? 'err' : props.quota?.extraUsage?.severity === 'warning' || props.quota?.extraUsage?.exhausted ? 'warn' : 'muted'), _$p));
|
|
564
|
-
return _el$38;
|
|
565
|
-
})();
|
|
566
|
-
}
|
|
602
|
+
children: budget => // One line in the block's width: amounts drop their cents rather
|
|
603
|
+
// than wrap, and keep them until the first layout.
|
|
604
|
+
(() => {
|
|
605
|
+
var _el$30 = _$createElement("box"),
|
|
606
|
+
_el$31 = _$createElement("text");
|
|
607
|
+
_$insertNode(_el$30, _el$31);
|
|
608
|
+
_$setProp(_el$30, "width", '100%');
|
|
609
|
+
_$setProp(_el$30, "height", 1);
|
|
610
|
+
_$setProp(_el$30, "flexDirection", 'row');
|
|
611
|
+
_$setProp(_el$31, "wrapMode", 'none');
|
|
612
|
+
_$insert(_el$31, () => creditLine(budget().figure, props.quota?.extraUsage, width()));
|
|
613
|
+
_$effect(_$p => _$setProp(_el$31, "fg", toneColor(props.theme, props.quota?.extraUsage?.severity === 'critical' ? 'err' : props.quota?.extraUsage?.severity === 'warning' || props.quota?.extraUsage?.exhausted ? 'warn' : 'muted'), _$p));
|
|
614
|
+
return _el$30;
|
|
615
|
+
})()
|
|
567
616
|
}), _$createComponent(Show, {
|
|
568
617
|
get when() {
|
|
569
618
|
return parts().age;
|
|
570
619
|
},
|
|
571
620
|
get children() {
|
|
572
|
-
var _el$
|
|
573
|
-
_$insert(_el$
|
|
574
|
-
_$effect(_$p => _$setProp(_el$
|
|
575
|
-
return _el$
|
|
621
|
+
var _el$25 = _$createElement("text");
|
|
622
|
+
_$insert(_el$25, () => parts().age);
|
|
623
|
+
_$effect(_$p => _$setProp(_el$25, "fg", props.theme.textMuted, _$p));
|
|
624
|
+
return _el$25;
|
|
576
625
|
}
|
|
577
626
|
}), _$createComponent(Show, {
|
|
578
627
|
get when() {
|
|
579
628
|
return props.quota?.fallbackAdvised === true;
|
|
580
629
|
},
|
|
581
630
|
get children() {
|
|
582
|
-
var _el$
|
|
583
|
-
_$insertNode(_el$
|
|
584
|
-
_$effect(_$p => _$setProp(_el$
|
|
585
|
-
return _el$
|
|
631
|
+
var _el$26 = _$createElement("text");
|
|
632
|
+
_$insertNode(_el$26, _$createTextNode(`→ fallback advised`));
|
|
633
|
+
_$effect(_$p => _$setProp(_el$26, "fg", props.theme.textMuted, _$p));
|
|
634
|
+
return _el$26;
|
|
586
635
|
}
|
|
587
636
|
})];
|
|
588
637
|
}
|
|
589
638
|
}), null);
|
|
590
639
|
_$effect(_p$ => {
|
|
591
|
-
var _v$
|
|
592
|
-
_v$
|
|
593
|
-
_v$
|
|
594
|
-
_v$
|
|
595
|
-
_v$
|
|
596
|
-
_v$
|
|
640
|
+
var _v$11 = props.marginTop ?? 0,
|
|
641
|
+
_v$12 = props.theme.text,
|
|
642
|
+
_v$13 = toneColor(props.theme, statusTone());
|
|
643
|
+
_v$11 !== _p$.e && (_p$.e = _$setProp(_el$18, "marginTop", _v$11, _p$.e));
|
|
644
|
+
_v$12 !== _p$.t && (_p$.t = _$setProp(_el$20, "fg", _v$12, _p$.t));
|
|
645
|
+
_v$13 !== _p$.a && (_p$.a = _$setProp(_el$22, "fg", _v$13, _p$.a));
|
|
597
646
|
return _p$;
|
|
598
647
|
}, {
|
|
599
648
|
e: undefined,
|
|
600
649
|
t: undefined,
|
|
601
650
|
a: undefined
|
|
602
651
|
});
|
|
603
|
-
return _el$
|
|
652
|
+
return _el$18;
|
|
604
653
|
})();
|
|
605
654
|
}
|
|
606
655
|
// The TUI may unmount and remount sidebar_content when the user switches
|
|
@@ -673,6 +722,8 @@ export function ClaudeSidebar(props) {
|
|
|
673
722
|
});
|
|
674
723
|
const enabledFallbacks = () => (state().fallbacks ?? []).filter(f => f.enabled || f.custodyState && f.custodyState !== 'off');
|
|
675
724
|
const hasData = () => state().main?.quota != null || state().main?.stateLine != null || enabledFallbacks().length > 0;
|
|
725
|
+
// One label column for every expanded account, so all their bars line up.
|
|
726
|
+
const quotaLabelWidth = () => quotaLabelColumnWidth([state().main?.quota, ...(prefs().sections.fallbackAccounts ? enabledFallbacks().map(fallback => fallback.quota) : [])], now());
|
|
676
727
|
const headerLabel = () => {
|
|
677
728
|
const name = prefs().header.label;
|
|
678
729
|
return !hasData() ? name : collapsed() ? `\u25b6 ${name}` : `\u25bc ${name}`;
|
|
@@ -715,33 +766,33 @@ export function ClaudeSidebar(props) {
|
|
|
715
766
|
return `${r.transport} \u00b7 ${r.enabled ? 'on' : 'off'}`;
|
|
716
767
|
};
|
|
717
768
|
return (() => {
|
|
718
|
-
var _el$
|
|
719
|
-
_el$
|
|
720
|
-
_el$
|
|
721
|
-
_el$
|
|
722
|
-
_el$
|
|
723
|
-
_$insertNode(_el$
|
|
724
|
-
_$setProp(_el$
|
|
725
|
-
_$setProp(_el$
|
|
726
|
-
_$setProp(_el$
|
|
727
|
-
_$setProp(_el$
|
|
728
|
-
_$setProp(_el$
|
|
729
|
-
_$setProp(_el$
|
|
730
|
-
_$setProp(_el$
|
|
731
|
-
_$insertNode(_el$
|
|
732
|
-
_$setProp(_el$
|
|
733
|
-
_$setProp(_el$
|
|
734
|
-
_$setProp(_el$
|
|
735
|
-
_$setProp(_el$
|
|
736
|
-
_$setProp(_el$
|
|
769
|
+
var _el$32 = _$createElement("box"),
|
|
770
|
+
_el$33 = _$createElement("box"),
|
|
771
|
+
_el$34 = _$createElement("box"),
|
|
772
|
+
_el$35 = _$createElement("text"),
|
|
773
|
+
_el$36 = _$createElement("b");
|
|
774
|
+
_$insertNode(_el$32, _el$33);
|
|
775
|
+
_$setProp(_el$32, "width", '100%');
|
|
776
|
+
_$setProp(_el$32, "flexDirection", 'column');
|
|
777
|
+
_$setProp(_el$32, "border", SINGLE_BORDER);
|
|
778
|
+
_$setProp(_el$32, "paddingTop", 1);
|
|
779
|
+
_$setProp(_el$32, "paddingBottom", 1);
|
|
780
|
+
_$setProp(_el$32, "paddingLeft", 1);
|
|
781
|
+
_$setProp(_el$32, "paddingRight", 1);
|
|
782
|
+
_$insertNode(_el$33, _el$34);
|
|
783
|
+
_$setProp(_el$33, "width", '100%');
|
|
784
|
+
_$setProp(_el$33, "flexDirection", 'row');
|
|
785
|
+
_$setProp(_el$33, "justifyContent", 'space-between');
|
|
786
|
+
_$setProp(_el$33, "alignItems", 'center');
|
|
787
|
+
_$setProp(_el$33, "onMouseDown", () => {
|
|
737
788
|
if (hasData()) props.controller.toggleCollapsed();
|
|
738
789
|
});
|
|
739
|
-
_$insertNode(_el$
|
|
740
|
-
_$setProp(_el$
|
|
741
|
-
_$setProp(_el$
|
|
742
|
-
_$insertNode(_el$
|
|
743
|
-
_$insert(_el$
|
|
744
|
-
_$insert(_el$
|
|
790
|
+
_$insertNode(_el$34, _el$35);
|
|
791
|
+
_$setProp(_el$34, "paddingLeft", 1);
|
|
792
|
+
_$setProp(_el$34, "paddingRight", 1);
|
|
793
|
+
_$insertNode(_el$35, _el$36);
|
|
794
|
+
_$insert(_el$36, headerLabel);
|
|
795
|
+
_$insert(_el$33, _$createComponent(Show, {
|
|
745
796
|
get when() {
|
|
746
797
|
return degraded();
|
|
747
798
|
},
|
|
@@ -751,36 +802,36 @@ export function ClaudeSidebar(props) {
|
|
|
751
802
|
return prefs().header.showVersion && PLUGIN_VERSION !== '';
|
|
752
803
|
},
|
|
753
804
|
get children() {
|
|
754
|
-
var _el$
|
|
755
|
-
_$insert(_el$
|
|
756
|
-
_$effect(_$p => _$setProp(_el$
|
|
757
|
-
return _el$
|
|
805
|
+
var _el$44 = _$createElement("text");
|
|
806
|
+
_$insert(_el$44, `v${PLUGIN_VERSION}`);
|
|
807
|
+
_$effect(_$p => _$setProp(_el$44, "fg", theme().textMuted, _$p));
|
|
808
|
+
return _el$44;
|
|
758
809
|
}
|
|
759
810
|
});
|
|
760
811
|
},
|
|
761
812
|
get children() {
|
|
762
|
-
var _el$
|
|
763
|
-
_el$
|
|
764
|
-
_el$
|
|
765
|
-
_$insertNode(_el$
|
|
766
|
-
_$setProp(_el$
|
|
767
|
-
_$setProp(_el$
|
|
768
|
-
_$insertNode(_el$
|
|
769
|
-
_$insertNode(_el$
|
|
813
|
+
var _el$37 = _$createElement("box"),
|
|
814
|
+
_el$38 = _$createElement("text"),
|
|
815
|
+
_el$39 = _$createElement("b");
|
|
816
|
+
_$insertNode(_el$37, _el$38);
|
|
817
|
+
_$setProp(_el$37, "paddingLeft", 1);
|
|
818
|
+
_$setProp(_el$37, "paddingRight", 1);
|
|
819
|
+
_$insertNode(_el$38, _el$39);
|
|
820
|
+
_$insertNode(_el$39, _$createTextNode(`LIMITED`));
|
|
770
821
|
_$effect(_p$ => {
|
|
771
|
-
var _v$
|
|
772
|
-
_v$
|
|
773
|
-
_v$
|
|
774
|
-
_v$
|
|
822
|
+
var _v$14 = theme().warning,
|
|
823
|
+
_v$15 = theme().background;
|
|
824
|
+
_v$14 !== _p$.e && (_p$.e = _$setProp(_el$37, "backgroundColor", _v$14, _p$.e));
|
|
825
|
+
_v$15 !== _p$.t && (_p$.t = _$setProp(_el$38, "fg", _v$15, _p$.t));
|
|
775
826
|
return _p$;
|
|
776
827
|
}, {
|
|
777
828
|
e: undefined,
|
|
778
829
|
t: undefined
|
|
779
830
|
});
|
|
780
|
-
return _el$
|
|
831
|
+
return _el$37;
|
|
781
832
|
}
|
|
782
833
|
}), null);
|
|
783
|
-
_$insert(_el$
|
|
834
|
+
_$insert(_el$32, _$createComponent(Show, {
|
|
784
835
|
get when() {
|
|
785
836
|
return _$memo(() => !!collapsed())() && hasData();
|
|
786
837
|
},
|
|
@@ -814,12 +865,12 @@ export function ClaudeSidebar(props) {
|
|
|
814
865
|
},
|
|
815
866
|
label: "Mode",
|
|
816
867
|
get children() {
|
|
817
|
-
var _el$
|
|
818
|
-
_el$
|
|
819
|
-
_$insertNode(_el$
|
|
820
|
-
_$insertNode(_el$
|
|
821
|
-
_$effect(_$p => _$setProp(_el$
|
|
822
|
-
return _el$
|
|
868
|
+
var _el$41 = _$createElement("text"),
|
|
869
|
+
_el$42 = _$createElement("b");
|
|
870
|
+
_$insertNode(_el$41, _el$42);
|
|
871
|
+
_$insertNode(_el$42, _$createTextNode(`fast`));
|
|
872
|
+
_$effect(_$p => _$setProp(_el$41, "fg", toneColor(theme(), 'accent'), _$p));
|
|
873
|
+
return _el$41;
|
|
823
874
|
}
|
|
824
875
|
});
|
|
825
876
|
}
|
|
@@ -833,18 +884,18 @@ export function ClaudeSidebar(props) {
|
|
|
833
884
|
},
|
|
834
885
|
label: "Recovery",
|
|
835
886
|
get children() {
|
|
836
|
-
var _el$
|
|
837
|
-
_el$
|
|
838
|
-
_$insertNode(_el$
|
|
839
|
-
_$insert(_el$
|
|
840
|
-
_$effect(_$p => _$setProp(_el$
|
|
841
|
-
return _el$
|
|
887
|
+
var _el$45 = _$createElement("text"),
|
|
888
|
+
_el$46 = _$createElement("b");
|
|
889
|
+
_$insertNode(_el$45, _el$46);
|
|
890
|
+
_$insert(_el$46, summary);
|
|
891
|
+
_$effect(_$p => _$setProp(_el$45, "fg", toneColor(theme(), fableRecoveryTone()), _$p));
|
|
892
|
+
return _el$45;
|
|
842
893
|
}
|
|
843
894
|
})
|
|
844
895
|
})];
|
|
845
896
|
}
|
|
846
897
|
}), null);
|
|
847
|
-
_$insert(_el$
|
|
898
|
+
_$insert(_el$32, _$createComponent(Show, {
|
|
848
899
|
get when() {
|
|
849
900
|
return !collapsed() || !hasData();
|
|
850
901
|
},
|
|
@@ -855,14 +906,14 @@ export function ClaudeSidebar(props) {
|
|
|
855
906
|
},
|
|
856
907
|
get fallback() {
|
|
857
908
|
return (() => {
|
|
858
|
-
var _el$
|
|
859
|
-
_el$
|
|
860
|
-
_$insertNode(_el$
|
|
861
|
-
_$setProp(_el$
|
|
862
|
-
_$setProp(_el$
|
|
863
|
-
_$insertNode(_el$
|
|
864
|
-
_$effect(_$p => _$setProp(_el$
|
|
865
|
-
return _el$
|
|
909
|
+
var _el$47 = _$createElement("box"),
|
|
910
|
+
_el$48 = _$createElement("text");
|
|
911
|
+
_$insertNode(_el$47, _el$48);
|
|
912
|
+
_$setProp(_el$47, "marginTop", 1);
|
|
913
|
+
_$setProp(_el$47, "width", '100%');
|
|
914
|
+
_$insertNode(_el$48, _$createTextNode(`Waiting for quota…`));
|
|
915
|
+
_$effect(_$p => _$setProp(_el$48, "fg", theme().textMuted, _$p));
|
|
916
|
+
return _el$47;
|
|
866
917
|
})();
|
|
867
918
|
},
|
|
868
919
|
get children() {
|
|
@@ -896,6 +947,9 @@ export function ClaudeSidebar(props) {
|
|
|
896
947
|
get tierLabel() {
|
|
897
948
|
return state().main?.tierLabel;
|
|
898
949
|
},
|
|
950
|
+
get labelWidth() {
|
|
951
|
+
return quotaLabelWidth();
|
|
952
|
+
},
|
|
899
953
|
get stateLine() {
|
|
900
954
|
return state().main?.stateLine;
|
|
901
955
|
},
|
|
@@ -936,6 +990,9 @@ export function ClaudeSidebar(props) {
|
|
|
936
990
|
get tierLabel() {
|
|
937
991
|
return fb.tierLabel;
|
|
938
992
|
},
|
|
993
|
+
get labelWidth() {
|
|
994
|
+
return quotaLabelWidth();
|
|
995
|
+
},
|
|
939
996
|
get needsReauth() {
|
|
940
997
|
return fb.needsReauth;
|
|
941
998
|
},
|
|
@@ -1144,19 +1201,19 @@ export function ClaudeSidebar(props) {
|
|
|
1144
1201
|
}
|
|
1145
1202
|
}), null);
|
|
1146
1203
|
_$effect(_p$ => {
|
|
1147
|
-
var _v$
|
|
1148
|
-
_v$
|
|
1149
|
-
_v$
|
|
1150
|
-
_v$
|
|
1151
|
-
_v$
|
|
1152
|
-
_v$
|
|
1204
|
+
var _v$16 = theme().borderActive,
|
|
1205
|
+
_v$17 = theme().accent,
|
|
1206
|
+
_v$18 = theme().background;
|
|
1207
|
+
_v$16 !== _p$.e && (_p$.e = _$setProp(_el$32, "borderColor", _v$16, _p$.e));
|
|
1208
|
+
_v$17 !== _p$.t && (_p$.t = _$setProp(_el$34, "backgroundColor", _v$17, _p$.t));
|
|
1209
|
+
_v$18 !== _p$.a && (_p$.a = _$setProp(_el$35, "fg", _v$18, _p$.a));
|
|
1153
1210
|
return _p$;
|
|
1154
1211
|
}, {
|
|
1155
1212
|
e: undefined,
|
|
1156
1213
|
t: undefined,
|
|
1157
1214
|
a: undefined
|
|
1158
1215
|
});
|
|
1159
|
-
return _el$
|
|
1216
|
+
return _el$32;
|
|
1160
1217
|
})();
|
|
1161
1218
|
}
|
|
1162
1219
|
|