@chenlongapps/opencode-token-usage 0.4.5 → 0.4.7

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/tui.js CHANGED
@@ -297,7 +297,12 @@ function UsageDialog(props) {
297
297
  }]
298
298
  }));
299
299
  const theme = () => props.context.theme.text;
300
- const context = createMemo(() => state().details?.context);
300
+ const context = createMemo(() => state().context);
301
+ const request = createMemo(() => state().details?.request);
302
+ const requestTime = createMemo(() => {
303
+ const time = request()?.time;
304
+ return time === undefined ? undefined : new Date(time).toLocaleTimeString();
305
+ });
301
306
  const models = createMemo(() => state().details?.models ?? []);
302
307
  const sources = createMemo(() => state().details?.sources);
303
308
  // The host gives this dialog a fixed width; keep every row inside that content box.
@@ -400,12 +405,12 @@ function UsageDialog(props) {
400
405
  _el$30 = _$createElement("text"),
401
406
  _el$31 = _$createElement("b"),
402
407
  _el$33 = _$createElement("text"),
403
- _el$62 = _$createElement("box"),
404
- _el$63 = _$createElement("text"),
405
- _el$65 = _$createElement("text"),
406
- _el$67 = _$createElement("text");
408
+ _el$63 = _$createElement("box"),
409
+ _el$64 = _$createElement("text"),
410
+ _el$66 = _$createElement("text"),
411
+ _el$68 = _$createElement("text");
407
412
  _$insertNode(_el$28, _el$29);
408
- _$insertNode(_el$28, _el$62);
413
+ _$insertNode(_el$28, _el$63);
409
414
  _$setProp(_el$28, "paddingLeft", 2);
410
415
  _$setProp(_el$28, "paddingRight", 2);
411
416
  _$setProp(_el$28, "paddingBottom", 1);
@@ -430,7 +435,7 @@ function UsageDialog(props) {
430
435
  _$effect(_$p => _$setProp(_el$35, "fg", theme().muted, _$p));
431
436
  return _el$35;
432
437
  }
433
- }), _el$62);
438
+ }), _el$63);
434
439
  _$insert(_el$28, _$createComponent(Show, {
435
440
  get when() {
436
441
  return state().status !== "ready";
@@ -441,7 +446,7 @@ function UsageDialog(props) {
441
446
  _$effect(_$p => _$setProp(_el$36, "fg", theme().muted, _$p));
442
447
  return _el$36;
443
448
  }
444
- }), _el$62);
449
+ }), _el$63);
445
450
  _$insert(_el$28, _$createComponent(Show, {
446
451
  get when() {
447
452
  return state().summary;
@@ -457,14 +462,15 @@ function UsageDialog(props) {
457
462
  _el$45 = _$createElement("text"),
458
463
  _el$46 = _$createElement("b"),
459
464
  _el$48 = _$createElement("box"),
460
- _el$49 = _$createElement("text"),
461
- _el$50 = _$createElement("b"),
462
- _el$52 = _$createElement("box"),
463
- _el$53 = _$createElement("text"),
464
- _el$54 = _$createElement("b"),
465
- _el$56 = _$createElement("box"),
466
- _el$57 = _$createElement("text"),
467
- _el$58 = _$createElement("b");
465
+ _el$49 = _$createElement("box"),
466
+ _el$50 = _$createElement("text"),
467
+ _el$51 = _$createElement("b"),
468
+ _el$53 = _$createElement("box"),
469
+ _el$54 = _$createElement("text"),
470
+ _el$55 = _$createElement("b"),
471
+ _el$57 = _$createElement("box"),
472
+ _el$58 = _$createElement("text"),
473
+ _el$59 = _$createElement("b");
468
474
  _$insertNode(_el$37, _el$38);
469
475
  _$use(value => {
470
476
  scroll = value;
@@ -478,8 +484,8 @@ function UsageDialog(props) {
478
484
  _$insertNode(_el$38, _el$39);
479
485
  _$insertNode(_el$38, _el$43);
480
486
  _$insertNode(_el$38, _el$48);
481
- _$insertNode(_el$38, _el$52);
482
- _$insertNode(_el$38, _el$56);
487
+ _$insertNode(_el$38, _el$53);
488
+ _$insertNode(_el$38, _el$57);
483
489
  _$setProp(_el$38, "gap", 1);
484
490
  _$insertNode(_el$39, _el$40);
485
491
  _$insertNode(_el$40, _el$41);
@@ -490,48 +496,48 @@ function UsageDialog(props) {
490
496
  },
491
497
  get fallback() {
492
498
  return (() => {
493
- var _el$69 = _$createElement("text");
494
- _$insertNode(_el$69, _$createTextNode(`Context usage unavailable`));
495
- _$effect(_$p => _$setProp(_el$69, "fg", theme().muted, _$p));
496
- return _el$69;
499
+ var _el$70 = _$createElement("text");
500
+ _$insertNode(_el$70, _$createTextNode(`Context usage unavailable`));
501
+ _$effect(_$p => _$setProp(_el$70, "fg", theme().muted, _$p));
502
+ return _el$70;
497
503
  })();
498
504
  },
499
505
  children: details => (() => {
500
- var _el$71 = _$createElement("box"),
501
- _el$72 = _$createElement("box"),
502
- _el$73 = _$createElement("text"),
503
- _el$75 = _$createElement("text"),
504
- _el$76 = _$createTextNode(` / `),
505
- _el$77 = _$createTextNode(` (`),
506
- _el$78 = _$createTextNode(`%)`);
507
- _$insertNode(_el$71, _el$72);
506
+ var _el$72 = _$createElement("box"),
507
+ _el$73 = _$createElement("box"),
508
+ _el$74 = _$createElement("text"),
509
+ _el$76 = _$createElement("text"),
510
+ _el$77 = _$createTextNode(` / `),
511
+ _el$78 = _$createTextNode(` (`),
512
+ _el$79 = _$createTextNode(`%)`);
508
513
  _$insertNode(_el$72, _el$73);
509
- _$insertNode(_el$72, _el$75);
510
- _$setProp(_el$72, "flexDirection", "row");
511
- _$setProp(_el$72, "justifyContent", "space-between");
512
- _$setProp(_el$72, "gap", 2);
513
- _$insertNode(_el$73, _$createTextNode(`Used / Limit`));
514
- _$setProp(_el$73, "flexShrink", 0);
515
- _$insertNode(_el$75, _el$76);
516
- _$insertNode(_el$75, _el$77);
517
- _$insertNode(_el$75, _el$78);
518
- _$setProp(_el$75, "wrapMode", "word");
519
- _$setProp(_el$75, "minWidth", 0);
520
- _$insert(_el$75, () => number(details().usage.used), _el$76);
521
- _$insert(_el$75, () => number(details().usage.limit), _el$77);
522
- _$insert(_el$75, () => details().usage.percent.toFixed(1), _el$78);
523
- _$insert(_el$71, () => barRow(details().usage.percent, windowBar()), null);
514
+ _$insertNode(_el$73, _el$74);
515
+ _$insertNode(_el$73, _el$76);
516
+ _$setProp(_el$73, "flexDirection", "row");
517
+ _$setProp(_el$73, "justifyContent", "space-between");
518
+ _$setProp(_el$73, "gap", 2);
519
+ _$insertNode(_el$74, _$createTextNode(`Used / Limit`));
520
+ _$setProp(_el$74, "flexShrink", 0);
521
+ _$insertNode(_el$76, _el$77);
522
+ _$insertNode(_el$76, _el$78);
523
+ _$insertNode(_el$76, _el$79);
524
+ _$setProp(_el$76, "wrapMode", "word");
525
+ _$setProp(_el$76, "minWidth", 0);
526
+ _$insert(_el$76, () => number(details().used), _el$77);
527
+ _$insert(_el$76, () => number(details().limit), _el$78);
528
+ _$insert(_el$76, () => details().percent.toFixed(1), _el$79);
529
+ _$insert(_el$72, () => barRow(details().percent, windowBar()), null);
524
530
  _$effect(_p$ => {
525
531
  var _v$21 = theme().muted,
526
532
  _v$22 = theme().base;
527
- _v$21 !== _p$.e && (_p$.e = _$setProp(_el$73, "fg", _v$21, _p$.e));
528
- _v$22 !== _p$.t && (_p$.t = _$setProp(_el$75, "fg", _v$22, _p$.t));
533
+ _v$21 !== _p$.e && (_p$.e = _$setProp(_el$74, "fg", _v$21, _p$.e));
534
+ _v$22 !== _p$.t && (_p$.t = _$setProp(_el$76, "fg", _v$22, _p$.t));
529
535
  return _p$;
530
536
  }, {
531
537
  e: undefined,
532
538
  t: undefined
533
539
  });
534
- return _el$71;
540
+ return _el$72;
535
541
  })()
536
542
  }), null);
537
543
  _$insertNode(_el$43, _el$44);
@@ -543,46 +549,61 @@ function UsageDialog(props) {
543
549
  _$insertNode(_el$46, _$createTextNode(`Last Request`));
544
550
  _$insert(_el$44, _$createComponent(Show, {
545
551
  get when() {
546
- return sources();
552
+ return requestTime();
547
553
  },
548
- children: captured => (() => {
549
- var _el$79 = _$createElement("text");
550
- _$insert(_el$79, () => new Date(captured().capturedAt).toLocaleTimeString());
551
- _$effect(_$p => _$setProp(_el$79, "fg", theme().muted, _$p));
552
- return _el$79;
554
+ children: time => (() => {
555
+ var _el$80 = _$createElement("text");
556
+ _$insert(_el$80, time);
557
+ _$effect(_$p => _$setProp(_el$80, "fg", theme().muted, _$p));
558
+ return _el$80;
553
559
  })()
554
560
  }), null);
555
561
  _$insert(_el$43, _$createComponent(Show, {
556
562
  get when() {
557
- return context();
563
+ return request();
558
564
  },
559
565
  get fallback() {
560
566
  return (() => {
561
- var _el$80 = _$createElement("text");
562
- _$insertNode(_el$80, _$createTextNode(`Request composition unavailable`));
563
- _$effect(_$p => _$setProp(_el$80, "fg", theme().muted, _$p));
564
- return _el$80;
567
+ var _el$81 = _$createElement("text");
568
+ _$insertNode(_el$81, _$createTextNode(`Request usage unavailable`));
569
+ _$effect(_$p => _$setProp(_el$81, "fg", theme().muted, _$p));
570
+ return _el$81;
565
571
  })();
566
572
  },
567
573
  children: details => (() => {
568
- var _el$82 = _$createElement("box");
569
- _$insert(_el$82, () => requestRowsList(requestRows(details(), compact())));
570
- return _el$82;
574
+ var _el$83 = _$createElement("box");
575
+ _$insert(_el$83, () => requestRowsList(requestRows(details(), compact())));
576
+ return _el$83;
571
577
  })()
572
578
  }), null);
573
579
  _$insertNode(_el$48, _el$49);
574
580
  _$insertNode(_el$49, _el$50);
575
- _$insertNode(_el$50, _$createTextNode(`Context Breakdown`));
581
+ _$setProp(_el$49, "flexDirection", "row");
582
+ _$setProp(_el$49, "justifyContent", "space-between");
583
+ _$setProp(_el$49, "gap", 2);
584
+ _$insertNode(_el$50, _el$51);
585
+ _$insertNode(_el$51, _$createTextNode(`Context Breakdown`));
586
+ _$insert(_el$49, _$createComponent(Show, {
587
+ get when() {
588
+ return sources();
589
+ },
590
+ children: captured => (() => {
591
+ var _el$84 = _$createElement("text");
592
+ _$insert(_el$84, () => new Date(captured().capturedAt).toLocaleTimeString());
593
+ _$effect(_$p => _$setProp(_el$84, "fg", theme().muted, _$p));
594
+ return _el$84;
595
+ })()
596
+ }), null);
576
597
  _$insert(_el$48, _$createComponent(Show, {
577
598
  get when() {
578
599
  return sources();
579
600
  },
580
601
  get fallback() {
581
602
  return (() => {
582
- var _el$83 = _$createElement("text");
583
- _$insertNode(_el$83, _$createTextNode(`Source estimates unavailable (no request snapshot or RPC)`));
584
- _$effect(_$p => _$setProp(_el$83, "fg", theme().muted, _$p));
585
- return _el$83;
603
+ var _el$85 = _$createElement("text");
604
+ _$insertNode(_el$85, _$createTextNode(`Source estimates unavailable (no request snapshot or RPC)`));
605
+ _$effect(_$p => _$setProp(_el$85, "fg", theme().muted, _$p));
606
+ return _el$85;
586
607
  })();
587
608
  },
588
609
  children: captured => _$createComponent(For, {
@@ -590,39 +611,39 @@ function UsageDialog(props) {
590
611
  return breakdownRows(captured(), detailed());
591
612
  },
592
613
  children: row => (() => {
593
- var _el$85 = _$createElement("box"),
594
- _el$86 = _$createElement("box"),
595
- _el$87 = _$createElement("text"),
614
+ var _el$87 = _$createElement("box"),
596
615
  _el$88 = _$createElement("box"),
597
616
  _el$89 = _$createElement("text"),
598
- _el$90 = _$createElement("text"),
599
- _el$91 = _$createTextNode(`%`);
600
- _$insertNode(_el$85, _el$86);
601
- _$insertNode(_el$85, _el$88);
602
- _$insertNode(_el$85, _el$89);
603
- _$insertNode(_el$85, _el$90);
604
- _$setProp(_el$85, "flexDirection", "row");
605
- _$setProp(_el$85, "gap", 1);
606
- _$insertNode(_el$86, _el$87);
607
- _$setProp(_el$86, "width", 14);
608
- _$setProp(_el$86, "flexShrink", 0);
609
- _$insert(_el$87, () => row.label);
617
+ _el$90 = _$createElement("box"),
618
+ _el$91 = _$createElement("text"),
619
+ _el$92 = _$createElement("text"),
620
+ _el$93 = _$createTextNode(`%`);
621
+ _$insertNode(_el$87, _el$88);
622
+ _$insertNode(_el$87, _el$90);
623
+ _$insertNode(_el$87, _el$91);
624
+ _$insertNode(_el$87, _el$92);
625
+ _$setProp(_el$87, "flexDirection", "row");
626
+ _$setProp(_el$87, "gap", 1);
627
+ _$insertNode(_el$88, _el$89);
628
+ _$setProp(_el$88, "width", 14);
610
629
  _$setProp(_el$88, "flexShrink", 0);
611
- _$insert(_el$88, () => barRow(row.percent, breakdownBar()));
612
- _$setProp(_el$89, "flexShrink", 0);
613
- _$insert(_el$89, () => number(row.tokens));
614
- _$insertNode(_el$90, _el$91);
630
+ _$insert(_el$89, () => row.label);
615
631
  _$setProp(_el$90, "flexShrink", 0);
616
- _$insert(_el$90, () => row.percent.toFixed(1), _el$91);
632
+ _$insert(_el$90, () => barRow(row.percent, breakdownBar()));
633
+ _$setProp(_el$91, "flexShrink", 0);
634
+ _$insert(_el$91, () => number(row.tokens));
635
+ _$insertNode(_el$92, _el$93);
636
+ _$setProp(_el$92, "flexShrink", 0);
637
+ _$insert(_el$92, () => row.percent.toFixed(1), _el$93);
617
638
  _$effect(_p$ => {
618
639
  var _v$23 = theme().muted,
619
640
  _v$24 = breakdownBar(),
620
641
  _v$25 = theme().base,
621
642
  _v$26 = theme().muted;
622
- _v$23 !== _p$.e && (_p$.e = _$setProp(_el$87, "fg", _v$23, _p$.e));
623
- _v$24 !== _p$.t && (_p$.t = _$setProp(_el$88, "width", _v$24, _p$.t));
624
- _v$25 !== _p$.a && (_p$.a = _$setProp(_el$89, "fg", _v$25, _p$.a));
625
- _v$26 !== _p$.o && (_p$.o = _$setProp(_el$90, "fg", _v$26, _p$.o));
643
+ _v$23 !== _p$.e && (_p$.e = _$setProp(_el$89, "fg", _v$23, _p$.e));
644
+ _v$24 !== _p$.t && (_p$.t = _$setProp(_el$90, "width", _v$24, _p$.t));
645
+ _v$25 !== _p$.a && (_p$.a = _$setProp(_el$91, "fg", _v$25, _p$.a));
646
+ _v$26 !== _p$.o && (_p$.o = _$setProp(_el$92, "fg", _v$26, _p$.o));
626
647
  return _p$;
627
648
  }, {
628
649
  e: undefined,
@@ -630,23 +651,23 @@ function UsageDialog(props) {
630
651
  a: undefined,
631
652
  o: undefined
632
653
  });
633
- return _el$85;
654
+ return _el$87;
634
655
  })()
635
656
  })
636
657
  }), null);
637
- _$insertNode(_el$52, _el$53);
638
658
  _$insertNode(_el$53, _el$54);
639
- _$insertNode(_el$54, _$createTextNode(`Session`));
640
- _$insert(_el$52, _$createComponent(Show, {
659
+ _$insertNode(_el$54, _el$55);
660
+ _$insertNode(_el$55, _$createTextNode(`Session`));
661
+ _$insert(_el$53, _$createComponent(Show, {
641
662
  get when() {
642
663
  return state().summary;
643
664
  },
644
665
  get fallback() {
645
666
  return (() => {
646
- var _el$92 = _$createElement("text");
647
- _$insertNode(_el$92, _$createTextNode(`Session usage unavailable`));
648
- _$effect(_$p => _$setProp(_el$92, "fg", theme().muted, _$p));
649
- return _el$92;
667
+ var _el$94 = _$createElement("text");
668
+ _$insertNode(_el$94, _$createTextNode(`Session usage unavailable`));
669
+ _$effect(_$p => _$setProp(_el$94, "fg", theme().muted, _$p));
670
+ return _el$94;
650
671
  })();
651
672
  },
652
673
  children: summary => _$createComponent(Show, {
@@ -655,26 +676,26 @@ function UsageDialog(props) {
655
676
  },
656
677
  get fallback() {
657
678
  return (() => {
658
- var _el$94 = _$createElement("text"),
659
- _el$95 = _$createTextNode(` · `),
660
- _el$96 = _$createTextNode(` · `),
661
- _el$97 = _$createTextNode(` tokens · `),
662
- _el$98 = _$createTextNode(`% cached`);
663
- _$insertNode(_el$94, _el$95);
664
- _$insertNode(_el$94, _el$96);
665
- _$insertNode(_el$94, _el$97);
666
- _$insertNode(_el$94, _el$98);
667
- _$setProp(_el$94, "wrapMode", "word");
668
- _$insert(_el$94, () => countLabel(summary().steps, "step"), _el$95);
669
- _$insert(_el$94, () => countLabel(summary().calls, "call"), _el$96);
670
- _$insert(_el$94, () => formatCompact(summary().total), _el$97);
671
- _$insert(_el$94, () => (summary().cacheRate * 100).toFixed(1), _el$98);
672
- _$insert(_el$94, (() => {
679
+ var _el$96 = _$createElement("text"),
680
+ _el$97 = _$createTextNode(` · `),
681
+ _el$98 = _$createTextNode(` · `),
682
+ _el$99 = _$createTextNode(` tokens · `),
683
+ _el$100 = _$createTextNode(`% cached`);
684
+ _$insertNode(_el$96, _el$97);
685
+ _$insertNode(_el$96, _el$98);
686
+ _$insertNode(_el$96, _el$99);
687
+ _$insertNode(_el$96, _el$100);
688
+ _$setProp(_el$96, "wrapMode", "word");
689
+ _$insert(_el$96, () => countLabel(summary().steps, "step"), _el$97);
690
+ _$insert(_el$96, () => countLabel(summary().calls, "call"), _el$98);
691
+ _$insert(_el$96, () => formatCompact(summary().total), _el$99);
692
+ _$insert(_el$96, () => (summary().cacheRate * 100).toFixed(1), _el$100);
693
+ _$insert(_el$96, (() => {
673
694
  var _c$ = _$memo(() => !!formatEstimatedCost(summary().cost, summary().costStatus));
674
695
  return () => _c$() ? ` · ${formatEstimatedCost(summary().cost, summary().costStatus)}` : "";
675
696
  })(), null);
676
- _$effect(_$p => _$setProp(_el$94, "fg", theme().base, _$p));
677
- return _el$94;
697
+ _$effect(_$p => _$setProp(_el$96, "fg", theme().base, _$p));
698
+ return _el$96;
678
699
  })();
679
700
  },
680
701
  get children() {
@@ -683,58 +704,58 @@ function UsageDialog(props) {
683
704
  return summaryRows(summary());
684
705
  },
685
706
  children: ([label, value]) => (() => {
686
- var _el$99 = _$createElement("box"),
687
- _el$100 = _$createElement("text"),
688
- _el$101 = _$createElement("text");
689
- _$insertNode(_el$99, _el$100);
690
- _$insertNode(_el$99, _el$101);
691
- _$setProp(_el$99, "flexDirection", "row");
692
- _$setProp(_el$99, "justifyContent", "space-between");
693
- _$setProp(_el$99, "gap", 2);
694
- _$setProp(_el$100, "flexShrink", 0);
695
- _$insert(_el$100, label);
696
- _$insert(_el$101, value);
707
+ var _el$101 = _$createElement("box"),
708
+ _el$102 = _$createElement("text"),
709
+ _el$103 = _$createElement("text");
710
+ _$insertNode(_el$101, _el$102);
711
+ _$insertNode(_el$101, _el$103);
712
+ _$setProp(_el$101, "flexDirection", "row");
713
+ _$setProp(_el$101, "justifyContent", "space-between");
714
+ _$setProp(_el$101, "gap", 2);
715
+ _$setProp(_el$102, "flexShrink", 0);
716
+ _$insert(_el$102, label);
717
+ _$insert(_el$103, value);
697
718
  _$effect(_p$ => {
698
719
  var _v$27 = theme().muted,
699
720
  _v$28 = theme().base;
700
- _v$27 !== _p$.e && (_p$.e = _$setProp(_el$100, "fg", _v$27, _p$.e));
701
- _v$28 !== _p$.t && (_p$.t = _$setProp(_el$101, "fg", _v$28, _p$.t));
721
+ _v$27 !== _p$.e && (_p$.e = _$setProp(_el$102, "fg", _v$27, _p$.e));
722
+ _v$28 !== _p$.t && (_p$.t = _$setProp(_el$103, "fg", _v$28, _p$.t));
702
723
  return _p$;
703
724
  }, {
704
725
  e: undefined,
705
726
  t: undefined
706
727
  });
707
- return _el$99;
728
+ return _el$101;
708
729
  })()
709
730
  });
710
731
  }
711
732
  })
712
733
  }), null);
713
- _$insertNode(_el$56, _el$57);
714
734
  _$insertNode(_el$57, _el$58);
715
- _$insertNode(_el$58, _$createTextNode(`By Model`));
716
- _$insert(_el$56, _$createComponent(Show, {
735
+ _$insertNode(_el$58, _el$59);
736
+ _$insertNode(_el$59, _$createTextNode(`By Model`));
737
+ _$insert(_el$57, _$createComponent(Show, {
717
738
  get when() {
718
739
  return _$memo(() => !!detailed())() && models().length;
719
740
  },
720
741
  get children() {
721
- var _el$60 = _$createElement("text");
722
- _$insertNode(_el$60, _$createTextNode(`Rates used for Est. Cost · USD / 1M text tokens · incoming = Input + Cache Read + Cache Write`));
723
- _$setProp(_el$60, "wrapMode", "word");
724
- _$effect(_$p => _$setProp(_el$60, "fg", theme().muted, _$p));
725
- return _el$60;
742
+ var _el$61 = _$createElement("text");
743
+ _$insertNode(_el$61, _$createTextNode(`Rates used for Est. Cost · USD / 1M text tokens · incoming = Input + Cache Read + Cache Write`));
744
+ _$setProp(_el$61, "wrapMode", "word");
745
+ _$effect(_$p => _$setProp(_el$61, "fg", theme().muted, _$p));
746
+ return _el$61;
726
747
  }
727
748
  }), null);
728
- _$insert(_el$56, _$createComponent(Show, {
749
+ _$insert(_el$57, _$createComponent(Show, {
729
750
  get when() {
730
751
  return models().length;
731
752
  },
732
753
  get fallback() {
733
754
  return (() => {
734
- var _el$102 = _$createElement("text");
735
- _$insertNode(_el$102, _$createTextNode(`No model usage yet`));
736
- _$effect(_$p => _$setProp(_el$102, "fg", theme().muted, _$p));
737
- return _el$102;
755
+ var _el$104 = _$createElement("text");
756
+ _$insertNode(_el$104, _$createTextNode(`No model usage yet`));
757
+ _$effect(_$p => _$setProp(_el$104, "fg", theme().muted, _$p));
758
+ return _el$104;
738
759
  })();
739
760
  },
740
761
  get children() {
@@ -743,29 +764,29 @@ function UsageDialog(props) {
743
764
  return models();
744
765
  },
745
766
  children: model => (() => {
746
- var _el$104 = _$createElement("box"),
747
- _el$105 = _$createElement("box"),
748
- _el$106 = _$createElement("text"),
749
- _el$107 = _$createElement("text"),
767
+ var _el$106 = _$createElement("box"),
768
+ _el$107 = _$createElement("box"),
750
769
  _el$108 = _$createElement("text"),
751
- _el$109 = _$createTextNode(` tokens · `);
752
- _$insertNode(_el$104, _el$105);
753
- _$insertNode(_el$104, _el$108);
754
- _$insertNode(_el$105, _el$106);
755
- _$insertNode(_el$105, _el$107);
756
- _$setProp(_el$105, "flexDirection", "row");
757
- _$setProp(_el$105, "justifyContent", "space-between");
758
- _$setProp(_el$105, "gap", 2);
759
- _$setProp(_el$106, "wrapMode", "word");
760
- _$setProp(_el$106, "minWidth", 0);
761
- _$setProp(_el$106, "flexGrow", 1);
762
- _$insert(_el$106, () => model.model);
763
- _$setProp(_el$107, "flexShrink", 0);
764
- _$insert(_el$107, () => formatEstimatedCost(model.cost, model.costStatus) ?? "");
765
- _$insertNode(_el$108, _el$109);
766
- _$insert(_el$108, () => number(model.tokens), _el$109);
767
- _$insert(_el$108, () => countLabel(model.calls, "call"), null);
768
- _$insert(_el$104, _$createComponent(Show, {
770
+ _el$109 = _$createElement("text"),
771
+ _el$110 = _$createElement("text"),
772
+ _el$111 = _$createTextNode(` tokens · `);
773
+ _$insertNode(_el$106, _el$107);
774
+ _$insertNode(_el$106, _el$110);
775
+ _$insertNode(_el$107, _el$108);
776
+ _$insertNode(_el$107, _el$109);
777
+ _$setProp(_el$107, "flexDirection", "row");
778
+ _$setProp(_el$107, "justifyContent", "space-between");
779
+ _$setProp(_el$107, "gap", 2);
780
+ _$setProp(_el$108, "wrapMode", "word");
781
+ _$setProp(_el$108, "minWidth", 0);
782
+ _$setProp(_el$108, "flexGrow", 1);
783
+ _$insert(_el$108, () => model.model);
784
+ _$setProp(_el$109, "flexShrink", 0);
785
+ _$insert(_el$109, () => formatEstimatedCost(model.cost, model.costStatus) ?? "");
786
+ _$insertNode(_el$110, _el$111);
787
+ _$insert(_el$110, () => number(model.tokens), _el$111);
788
+ _$insert(_el$110, () => countLabel(model.calls, "call"), null);
789
+ _$insert(_el$106, _$createComponent(Show, {
769
790
  get when() {
770
791
  return detailed();
771
792
  },
@@ -775,34 +796,34 @@ function UsageDialog(props) {
775
796
  return model.appliedRates;
776
797
  },
777
798
  children: rates => (() => {
778
- var _el$112 = _$createElement("box"),
779
- _el$113 = _$createElement("text"),
780
- _el$114 = _$createTextNode(` · `),
781
- _el$115 = _$createTextNode(` · `);
782
- _$insertNode(_el$112, _el$113);
783
- _$setProp(_el$112, "marginTop", 1);
784
- _$insertNode(_el$113, _el$114);
785
- _$insertNode(_el$113, _el$115);
786
- _$setProp(_el$113, "wrapMode", "word");
787
- _$insert(_el$113, () => rates.source, _el$114);
788
- _$insert(_el$113, () => formatRateTier(rates), _el$115);
789
- _$insert(_el$113, () => countLabel(rates.calls, "call"), null);
790
- _$insert(_el$112, () => requestRowsList(rateRows(rates)), null);
791
- _$effect(_$p => _$setProp(_el$113, "fg", theme().muted, _$p));
792
- return _el$112;
799
+ var _el$114 = _$createElement("box"),
800
+ _el$115 = _$createElement("text"),
801
+ _el$116 = _$createTextNode(` · `),
802
+ _el$117 = _$createTextNode(` · `);
803
+ _$insertNode(_el$114, _el$115);
804
+ _$setProp(_el$114, "marginTop", 1);
805
+ _$insertNode(_el$115, _el$116);
806
+ _$insertNode(_el$115, _el$117);
807
+ _$setProp(_el$115, "wrapMode", "word");
808
+ _$insert(_el$115, () => rates.source, _el$116);
809
+ _$insert(_el$115, () => formatRateTier(rates), _el$117);
810
+ _$insert(_el$115, () => countLabel(rates.calls, "call"), null);
811
+ _$insert(_el$114, () => requestRowsList(rateRows(rates)), null);
812
+ _$effect(_$p => _$setProp(_el$115, "fg", theme().muted, _$p));
813
+ return _el$114;
793
814
  })()
794
815
  }), _$createComponent(Show, {
795
816
  get when() {
796
817
  return model.unpricedCalls > 0;
797
818
  },
798
819
  get children() {
799
- var _el$110 = _$createElement("text"),
800
- _el$111 = _$createTextNode(`Pricing unavailable for `);
801
- _$insertNode(_el$110, _el$111);
802
- _$setProp(_el$110, "wrapMode", "word");
803
- _$insert(_el$110, () => countLabel(model.unpricedCalls, "call"), null);
804
- _$effect(_$p => _$setProp(_el$110, "fg", theme().muted, _$p));
805
- return _el$110;
820
+ var _el$112 = _$createElement("text"),
821
+ _el$113 = _$createTextNode(`Pricing unavailable for `);
822
+ _$insertNode(_el$112, _el$113);
823
+ _$setProp(_el$112, "wrapMode", "word");
824
+ _$insert(_el$112, () => countLabel(model.unpricedCalls, "call"), null);
825
+ _$effect(_$p => _$setProp(_el$112, "fg", theme().muted, _$p));
826
+ return _el$112;
806
827
  }
807
828
  })];
808
829
  }
@@ -811,16 +832,16 @@ function UsageDialog(props) {
811
832
  var _v$29 = theme().base,
812
833
  _v$30 = theme().base,
813
834
  _v$31 = theme().muted;
814
- _v$29 !== _p$.e && (_p$.e = _$setProp(_el$106, "fg", _v$29, _p$.e));
815
- _v$30 !== _p$.t && (_p$.t = _$setProp(_el$107, "fg", _v$30, _p$.t));
816
- _v$31 !== _p$.a && (_p$.a = _$setProp(_el$108, "fg", _v$31, _p$.a));
835
+ _v$29 !== _p$.e && (_p$.e = _$setProp(_el$108, "fg", _v$29, _p$.e));
836
+ _v$30 !== _p$.t && (_p$.t = _$setProp(_el$109, "fg", _v$30, _p$.t));
837
+ _v$31 !== _p$.a && (_p$.a = _$setProp(_el$110, "fg", _v$31, _p$.a));
817
838
  return _p$;
818
839
  }, {
819
840
  e: undefined,
820
841
  t: undefined,
821
842
  a: undefined
822
843
  });
823
- return _el$104;
844
+ return _el$106;
824
845
  })()
825
846
  });
826
847
  }
@@ -835,9 +856,9 @@ function UsageDialog(props) {
835
856
  _v$10 !== _p$.e && (_p$.e = _$setProp(_el$37, "maxHeight", _v$10, _p$.e));
836
857
  _v$11 !== _p$.t && (_p$.t = _$setProp(_el$40, "fg", _v$11, _p$.t));
837
858
  _v$12 !== _p$.a && (_p$.a = _$setProp(_el$45, "fg", _v$12, _p$.a));
838
- _v$13 !== _p$.o && (_p$.o = _$setProp(_el$49, "fg", _v$13, _p$.o));
839
- _v$14 !== _p$.i && (_p$.i = _$setProp(_el$53, "fg", _v$14, _p$.i));
840
- _v$15 !== _p$.n && (_p$.n = _$setProp(_el$57, "fg", _v$15, _p$.n));
859
+ _v$13 !== _p$.o && (_p$.o = _$setProp(_el$50, "fg", _v$13, _p$.o));
860
+ _v$14 !== _p$.i && (_p$.i = _$setProp(_el$54, "fg", _v$14, _p$.i));
861
+ _v$15 !== _p$.n && (_p$.n = _$setProp(_el$58, "fg", _v$15, _p$.n));
841
862
  return _p$;
842
863
  }, {
843
864
  e: undefined,
@@ -849,17 +870,17 @@ function UsageDialog(props) {
849
870
  });
850
871
  return _el$37;
851
872
  }
852
- }), _el$62);
853
- _$insertNode(_el$62, _el$63);
854
- _$insertNode(_el$62, _el$65);
855
- _$insertNode(_el$62, _el$67);
856
- _$setProp(_el$62, "flexDirection", "row");
857
- _$insertNode(_el$63, _$createTextNode(`↑/↓ scroll · `));
858
- _$insertNode(_el$65, _$createTextNode(`d details`));
859
- _$setProp(_el$65, "onMouseUp", event => {
873
+ }), _el$63);
874
+ _$insertNode(_el$63, _el$64);
875
+ _$insertNode(_el$63, _el$66);
876
+ _$insertNode(_el$63, _el$68);
877
+ _$setProp(_el$63, "flexDirection", "row");
878
+ _$insertNode(_el$64, _$createTextNode(`↑/↓ scroll · `));
879
+ _$insertNode(_el$66, _$createTextNode(`d details`));
880
+ _$setProp(_el$66, "onMouseUp", event => {
860
881
  if (event.button === 0) toggleDetails();
861
882
  });
862
- _$insertNode(_el$67, _$createTextNode(` · esc close`));
883
+ _$insertNode(_el$68, _$createTextNode(` · esc close`));
863
884
  _$effect(_p$ => {
864
885
  var _v$16 = theme().base,
865
886
  _v$17 = theme().muted,
@@ -868,9 +889,9 @@ function UsageDialog(props) {
868
889
  _v$20 = theme().muted;
869
890
  _v$16 !== _p$.e && (_p$.e = _$setProp(_el$30, "fg", _v$16, _p$.e));
870
891
  _v$17 !== _p$.t && (_p$.t = _$setProp(_el$33, "fg", _v$17, _p$.t));
871
- _v$18 !== _p$.a && (_p$.a = _$setProp(_el$63, "fg", _v$18, _p$.a));
872
- _v$19 !== _p$.o && (_p$.o = _$setProp(_el$65, "fg", _v$19, _p$.o));
873
- _v$20 !== _p$.i && (_p$.i = _$setProp(_el$67, "fg", _v$20, _p$.i));
892
+ _v$18 !== _p$.a && (_p$.a = _$setProp(_el$64, "fg", _v$18, _p$.a));
893
+ _v$19 !== _p$.o && (_p$.o = _$setProp(_el$66, "fg", _v$19, _p$.o));
894
+ _v$20 !== _p$.i && (_p$.i = _$setProp(_el$68, "fg", _v$20, _p$.i));
874
895
  return _p$;
875
896
  }, {
876
897
  e: undefined,