opencode-visual-cache 1.2.16 → 1.3.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/dist/_version.d.ts +1 -1
- package/dist/_version.js +1 -1
- package/dist/index.js +148 -6
- package/dist/tui.js +416 -215
- package/package.json +1 -1
- package/src/_version.ts +1 -1
- package/src/index.tsx +164 -1
package/dist/tui.js
CHANGED
|
@@ -13,7 +13,7 @@ import { createElement as _$createElement } from "@opentui/solid";
|
|
|
13
13
|
import { createMemo, createSignal, createEffect, onMount, onCleanup, Show, untrack } from "solid-js";
|
|
14
14
|
|
|
15
15
|
// src/_version.ts
|
|
16
|
-
var PLUGIN_VERSION = "1.
|
|
16
|
+
var PLUGIN_VERSION = "1.3.0";
|
|
17
17
|
|
|
18
18
|
// src/index.tsx
|
|
19
19
|
function charColumns(c) {
|
|
@@ -174,6 +174,14 @@ function desaturateTo(raw, maxSat, fallback) {
|
|
|
174
174
|
const nb = Math.round(c.b + (luma - c.b) * hi);
|
|
175
175
|
return "#" + [nr, ng, nb].map((v) => Math.max(0, Math.min(255, v)).toString(16).padStart(2, "0")).join("");
|
|
176
176
|
}
|
|
177
|
+
function dimColor(hex, factor = 0.5) {
|
|
178
|
+
const c = rgb(hex);
|
|
179
|
+
if (!c) return hex;
|
|
180
|
+
const r = Math.round(c.r * factor);
|
|
181
|
+
const g = Math.round(c.g * factor);
|
|
182
|
+
const b = Math.round(c.b * factor);
|
|
183
|
+
return "#" + [r, g, b].map((v) => Math.max(0, Math.min(255, v)).toString(16).padStart(2, "0")).join("");
|
|
184
|
+
}
|
|
177
185
|
var FALLBACK = {
|
|
178
186
|
primary: "#8B9DAF",
|
|
179
187
|
text: "#C5C5BB",
|
|
@@ -321,8 +329,19 @@ function TokenCachePanel(props) {
|
|
|
321
329
|
hasSkills: false
|
|
322
330
|
});
|
|
323
331
|
const [refreshTick, setRefreshTick] = createSignal(0);
|
|
332
|
+
let lastMainSid = props.sessionId;
|
|
324
333
|
createEffect(() => {
|
|
325
334
|
const sid = props.sessionId;
|
|
335
|
+
if (sid !== lastMainSid) {
|
|
336
|
+
lastMainSid = sid;
|
|
337
|
+
if (props.signals.overrideSessionId()) {
|
|
338
|
+
props.signals.setOverrideSessionId(void 0);
|
|
339
|
+
props.api.kv.set(`${KV_PREFIX}.session`, "");
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
});
|
|
343
|
+
createEffect(() => {
|
|
344
|
+
const sid = props.signals.overrideSessionId() ?? props.sessionId;
|
|
326
345
|
void refreshTick();
|
|
327
346
|
void partVersion();
|
|
328
347
|
const msgs = props.api.state.session.messages(sid);
|
|
@@ -700,12 +719,11 @@ function TokenCachePanel(props) {
|
|
|
700
719
|
return open();
|
|
701
720
|
},
|
|
702
721
|
get children() {
|
|
703
|
-
var _el$6 = _$createElement("span"), _el$7 = _$createTextNode(`
|
|
722
|
+
var _el$6 = _$createElement("span"), _el$7 = _$createTextNode(` v`);
|
|
704
723
|
_$insertNode(_el$6, _el$7);
|
|
705
|
-
_$
|
|
706
|
-
_$insert(_el$6, PLUGIN_VERSION, _el$8);
|
|
724
|
+
_$insert(_el$6, PLUGIN_VERSION, null);
|
|
707
725
|
_$effect((_$p) => _$setProp(_el$6, "style", {
|
|
708
|
-
fg: pal().muted
|
|
726
|
+
fg: dimColor(pal().muted, 0.75)
|
|
709
727
|
}, _$p));
|
|
710
728
|
return _el$6;
|
|
711
729
|
}
|
|
@@ -721,26 +739,26 @@ function TokenCachePanel(props) {
|
|
|
721
739
|
},
|
|
722
740
|
get children() {
|
|
723
741
|
return [(() => {
|
|
724
|
-
var _el$
|
|
725
|
-
_$insert(_el$
|
|
726
|
-
return _el$
|
|
742
|
+
var _el$8 = _$createElement("span");
|
|
743
|
+
_$insert(_el$8, () => " ".repeat(Math.max(1, panelWidth() - gutter() - HEADER_PREFIX - visualWidth(t().title) - visualWidth(pct() + " " + t().hitFolded + " " + trendLabel(data().trend)))));
|
|
744
|
+
return _el$8;
|
|
727
745
|
})(), (() => {
|
|
728
|
-
var _el$
|
|
729
|
-
_$insertNode(_el$
|
|
730
|
-
_$insert(_el$
|
|
731
|
-
_$insert(_el$
|
|
732
|
-
_$effect((_$p) => _$setProp(_el$
|
|
746
|
+
var _el$9 = _$createElement("span"), _el$0 = _$createTextNode(` `);
|
|
747
|
+
_$insertNode(_el$9, _el$0);
|
|
748
|
+
_$insert(_el$9, pct, _el$0);
|
|
749
|
+
_$insert(_el$9, () => t().hitFolded, null);
|
|
750
|
+
_$effect((_$p) => _$setProp(_el$9, "style", {
|
|
733
751
|
fg: hitColor()
|
|
734
752
|
}, _$p));
|
|
735
|
-
return _el$
|
|
753
|
+
return _el$9;
|
|
736
754
|
})(), (() => {
|
|
737
|
-
var _el$
|
|
738
|
-
_$insertNode(_el$
|
|
739
|
-
_$insert(_el$
|
|
740
|
-
_$effect((_$p) => _$setProp(_el$
|
|
755
|
+
var _el$1 = _$createElement("span"), _el$10 = _$createTextNode(` `);
|
|
756
|
+
_$insertNode(_el$1, _el$10);
|
|
757
|
+
_$insert(_el$1, () => trendLabel(data().trend), null);
|
|
758
|
+
_$effect((_$p) => _$setProp(_el$1, "style", {
|
|
741
759
|
fg: data().trend !== 0 ? data().trend > 0 ? pal().success : pal().error : pal().text
|
|
742
760
|
}, _$p));
|
|
743
|
-
return _el$
|
|
761
|
+
return _el$1;
|
|
744
762
|
})()];
|
|
745
763
|
}
|
|
746
764
|
}), _$createComponent(Show, {
|
|
@@ -749,18 +767,18 @@ function TokenCachePanel(props) {
|
|
|
749
767
|
},
|
|
750
768
|
get children() {
|
|
751
769
|
return [(() => {
|
|
752
|
-
var _el$
|
|
753
|
-
_$insert(_el$
|
|
754
|
-
return _el$
|
|
770
|
+
var _el$11 = _$createElement("span");
|
|
771
|
+
_$insert(_el$11, () => " ".repeat(Math.max(1, panelWidth() - gutter() - HEADER_PREFIX - visualWidth(t().title) - visualWidth(pct() + " " + t().hitFolded))));
|
|
772
|
+
return _el$11;
|
|
755
773
|
})(), (() => {
|
|
756
|
-
var _el$
|
|
757
|
-
_$insertNode(_el$
|
|
758
|
-
_$insert(_el$
|
|
759
|
-
_$insert(_el$
|
|
760
|
-
_$effect((_$p) => _$setProp(_el$
|
|
774
|
+
var _el$12 = _$createElement("span"), _el$13 = _$createTextNode(` `);
|
|
775
|
+
_$insertNode(_el$12, _el$13);
|
|
776
|
+
_$insert(_el$12, pct, _el$13);
|
|
777
|
+
_$insert(_el$12, () => t().hitFolded, null);
|
|
778
|
+
_$effect((_$p) => _$setProp(_el$12, "style", {
|
|
761
779
|
fg: hitColor()
|
|
762
780
|
}, _$p));
|
|
763
|
-
return _el$
|
|
781
|
+
return _el$12;
|
|
764
782
|
})()];
|
|
765
783
|
}
|
|
766
784
|
})];
|
|
@@ -771,67 +789,98 @@ function TokenCachePanel(props) {
|
|
|
771
789
|
return open();
|
|
772
790
|
},
|
|
773
791
|
get children() {
|
|
774
|
-
return _$createComponent(Show, {
|
|
792
|
+
return [_$createComponent(Show, {
|
|
793
|
+
get when() {
|
|
794
|
+
return props.signals.overrideSessionId();
|
|
795
|
+
},
|
|
796
|
+
get children() {
|
|
797
|
+
return (() => {
|
|
798
|
+
const prefix = " \u21B3 " + (langZH() ? "\u5B50\u4EE3\u7406: " : "Sub: ");
|
|
799
|
+
const maxSidW = Math.max(6, panelWidth() - visualWidth(prefix));
|
|
800
|
+
return (() => {
|
|
801
|
+
var _el$51 = _$createElement("text"), _el$52 = _$createElement("span"), _el$53 = _$createElement("span");
|
|
802
|
+
_$insertNode(_el$51, _el$52);
|
|
803
|
+
_$insertNode(_el$51, _el$53);
|
|
804
|
+
_$insert(_el$52, prefix);
|
|
805
|
+
_$insert(_el$53, () => truncateVisual(props.signals.overrideSessionId(), maxSidW));
|
|
806
|
+
_$effect((_p$) => {
|
|
807
|
+
var _v$1 = {
|
|
808
|
+
fg: pal().muted
|
|
809
|
+
}, _v$10 = {
|
|
810
|
+
fg: pal().text
|
|
811
|
+
};
|
|
812
|
+
_v$1 !== _p$.e && (_p$.e = _$setProp(_el$52, "style", _v$1, _p$.e));
|
|
813
|
+
_v$10 !== _p$.t && (_p$.t = _$setProp(_el$53, "style", _v$10, _p$.t));
|
|
814
|
+
return _p$;
|
|
815
|
+
}, {
|
|
816
|
+
e: void 0,
|
|
817
|
+
t: void 0
|
|
818
|
+
});
|
|
819
|
+
return _el$51;
|
|
820
|
+
})();
|
|
821
|
+
})();
|
|
822
|
+
}
|
|
823
|
+
}), _$createComponent(Show, {
|
|
775
824
|
get when() {
|
|
776
825
|
return data().hasData;
|
|
777
826
|
},
|
|
778
827
|
get fallback() {
|
|
779
828
|
return [(() => {
|
|
780
|
-
var _el$
|
|
781
|
-
_$insert(_el$
|
|
782
|
-
_$effect((_$p) => _$setProp(_el$
|
|
783
|
-
return _el$
|
|
829
|
+
var _el$54 = _$createElement("text");
|
|
830
|
+
_$insert(_el$54, sep);
|
|
831
|
+
_$effect((_$p) => _$setProp(_el$54, "fg", pal().muted, _$p));
|
|
832
|
+
return _el$54;
|
|
784
833
|
})(), (() => {
|
|
785
|
-
var _el$
|
|
786
|
-
_$insertNode(_el$
|
|
787
|
-
_$insertNode(_el$
|
|
788
|
-
_$insertNode(_el$
|
|
789
|
-
_$insert(_el$
|
|
834
|
+
var _el$55 = _$createElement("text"), _el$56 = _$createElement("span"), _el$58 = _$createElement("span");
|
|
835
|
+
_$insertNode(_el$55, _el$56);
|
|
836
|
+
_$insertNode(_el$55, _el$58);
|
|
837
|
+
_$insertNode(_el$56, _$createTextNode(`> `));
|
|
838
|
+
_$insert(_el$58, () => t().noData);
|
|
790
839
|
_$effect((_p$) => {
|
|
791
|
-
var _v$
|
|
840
|
+
var _v$11 = {
|
|
792
841
|
fg: pal().muted
|
|
793
|
-
}, _v$
|
|
842
|
+
}, _v$12 = {
|
|
794
843
|
fg: pal().muted
|
|
795
844
|
};
|
|
796
|
-
_v$
|
|
797
|
-
_v$
|
|
845
|
+
_v$11 !== _p$.e && (_p$.e = _$setProp(_el$56, "style", _v$11, _p$.e));
|
|
846
|
+
_v$12 !== _p$.t && (_p$.t = _$setProp(_el$58, "style", _v$12, _p$.t));
|
|
798
847
|
return _p$;
|
|
799
848
|
}, {
|
|
800
849
|
e: void 0,
|
|
801
850
|
t: void 0
|
|
802
851
|
});
|
|
803
|
-
return _el$
|
|
852
|
+
return _el$55;
|
|
804
853
|
})()];
|
|
805
854
|
},
|
|
806
855
|
get children() {
|
|
807
856
|
return [(() => {
|
|
808
|
-
var _el$
|
|
809
|
-
_$insert(_el$
|
|
810
|
-
_$effect((_$p) => _$setProp(_el$
|
|
811
|
-
return _el$
|
|
857
|
+
var _el$14 = _$createElement("text");
|
|
858
|
+
_$insert(_el$14, sep);
|
|
859
|
+
_$effect((_$p) => _$setProp(_el$14, "fg", pal().muted, _$p));
|
|
860
|
+
return _el$14;
|
|
812
861
|
})(), (() => {
|
|
813
|
-
var _el$
|
|
862
|
+
var _el$15 = _$createElement("text"), _el$16 = _$createElement("span"), _el$17 = _$createTextNode(` `), _el$18 = _$createElement("span"), _el$19 = _$createTextNode(`[`), _el$20 = _$createTextNode(`] `), _el$21 = _$createElement("span");
|
|
863
|
+
_$insertNode(_el$15, _el$16);
|
|
864
|
+
_$insertNode(_el$15, _el$18);
|
|
865
|
+
_$insertNode(_el$15, _el$21);
|
|
814
866
|
_$insertNode(_el$16, _el$17);
|
|
815
|
-
_$
|
|
816
|
-
_$insertNode(_el$
|
|
817
|
-
_$insertNode(_el$
|
|
818
|
-
_$insert(_el$
|
|
819
|
-
_$
|
|
820
|
-
_$
|
|
821
|
-
_$insert(_el$19, bar, _el$21);
|
|
822
|
-
_$insert(_el$22, pct);
|
|
823
|
-
_$insert(_el$16, _$createComponent(Show, {
|
|
867
|
+
_$insert(_el$16, () => t().hit, _el$17);
|
|
868
|
+
_$insertNode(_el$18, _el$19);
|
|
869
|
+
_$insertNode(_el$18, _el$20);
|
|
870
|
+
_$insert(_el$18, bar, _el$20);
|
|
871
|
+
_$insert(_el$21, pct);
|
|
872
|
+
_$insert(_el$15, _$createComponent(Show, {
|
|
824
873
|
get when() {
|
|
825
874
|
return data().hasTrendData;
|
|
826
875
|
},
|
|
827
876
|
get children() {
|
|
828
|
-
var _el$
|
|
829
|
-
_$insertNode(_el$
|
|
830
|
-
_$insert(_el$
|
|
831
|
-
_$effect((_$p) => _$setProp(_el$
|
|
877
|
+
var _el$22 = _$createElement("span"), _el$23 = _$createTextNode(` `);
|
|
878
|
+
_$insertNode(_el$22, _el$23);
|
|
879
|
+
_$insert(_el$22, () => trendLabel(data().trend), null);
|
|
880
|
+
_$effect((_$p) => _$setProp(_el$22, "style", {
|
|
832
881
|
fg: data().trend !== 0 ? data().trend > 0 ? pal().success : pal().error : pal().text
|
|
833
882
|
}, _$p));
|
|
834
|
-
return _el$
|
|
883
|
+
return _el$22;
|
|
835
884
|
}
|
|
836
885
|
}), null);
|
|
837
886
|
_$effect((_p$) => {
|
|
@@ -842,40 +891,40 @@ function TokenCachePanel(props) {
|
|
|
842
891
|
}, _v$3 = {
|
|
843
892
|
fg: pal().text
|
|
844
893
|
};
|
|
845
|
-
_v$ !== _p$.e && (_p$.e = _$setProp(_el$
|
|
846
|
-
_v$2 !== _p$.t && (_p$.t = _$setProp(_el$
|
|
847
|
-
_v$3 !== _p$.a && (_p$.a = _$setProp(_el$
|
|
894
|
+
_v$ !== _p$.e && (_p$.e = _$setProp(_el$16, "style", _v$, _p$.e));
|
|
895
|
+
_v$2 !== _p$.t && (_p$.t = _$setProp(_el$18, "style", _v$2, _p$.t));
|
|
896
|
+
_v$3 !== _p$.a && (_p$.a = _$setProp(_el$21, "style", _v$3, _p$.a));
|
|
848
897
|
return _p$;
|
|
849
898
|
}, {
|
|
850
899
|
e: void 0,
|
|
851
900
|
t: void 0,
|
|
852
901
|
a: void 0
|
|
853
902
|
});
|
|
854
|
-
return _el$
|
|
903
|
+
return _el$15;
|
|
855
904
|
})(), (() => {
|
|
856
|
-
var _el$
|
|
857
|
-
_$insert(_el$
|
|
858
|
-
_$effect((_$p) => _$setProp(_el$
|
|
859
|
-
return _el$
|
|
905
|
+
var _el$24 = _$createElement("text");
|
|
906
|
+
_$insert(_el$24, () => justify(t().totalHit, (Math.floor(data().sessionHitRate * 10) / 10).toFixed(1) + "%"));
|
|
907
|
+
_$effect((_$p) => _$setProp(_el$24, "fg", pal().muted, _$p));
|
|
908
|
+
return _el$24;
|
|
860
909
|
})(), _$createComponent(Show, {
|
|
861
910
|
get when() {
|
|
862
911
|
return sectionDetail();
|
|
863
912
|
},
|
|
864
913
|
get children() {
|
|
865
914
|
return [(() => {
|
|
866
|
-
var _el$
|
|
867
|
-
_$insertNode(_el$
|
|
868
|
-
_$insertNode(_el$
|
|
869
|
-
_$insertNode(_el$
|
|
870
|
-
_$setProp(_el$
|
|
915
|
+
var _el$25 = _$createElement("text"), _el$26 = _$createElement("span"), _el$27 = _$createElement("span"), _el$28 = _$createElement("b"), _el$29 = _$createElement("span");
|
|
916
|
+
_$insertNode(_el$25, _el$26);
|
|
917
|
+
_$insertNode(_el$25, _el$27);
|
|
918
|
+
_$insertNode(_el$25, _el$29);
|
|
919
|
+
_$setProp(_el$25, "onMouseUp", () => setDetailOpen((o) => {
|
|
871
920
|
const n = !o;
|
|
872
921
|
persistFold("detail", n);
|
|
873
922
|
return n;
|
|
874
923
|
}));
|
|
875
|
-
_$insert(_el$
|
|
876
|
-
_$insertNode(_el$
|
|
877
|
-
_$insert(_el$
|
|
878
|
-
_$insert(_el$
|
|
924
|
+
_$insert(_el$26, () => detailOpen() ? "\u25BC " : "\u25B6 ");
|
|
925
|
+
_$insertNode(_el$27, _el$28);
|
|
926
|
+
_$insert(_el$28, () => t().secDetail);
|
|
927
|
+
_$insert(_el$29, () => sep().slice(visualWidth((detailOpen() ? "\u25BC " : "\u25B6 ") + t().secDetail)));
|
|
879
928
|
_$effect((_p$) => {
|
|
880
929
|
var _v$4 = {
|
|
881
930
|
fg: pal().muted
|
|
@@ -884,16 +933,16 @@ function TokenCachePanel(props) {
|
|
|
884
933
|
}, _v$6 = {
|
|
885
934
|
fg: pal().muted
|
|
886
935
|
};
|
|
887
|
-
_v$4 !== _p$.e && (_p$.e = _$setProp(_el$
|
|
888
|
-
_v$5 !== _p$.t && (_p$.t = _$setProp(_el$
|
|
889
|
-
_v$6 !== _p$.a && (_p$.a = _$setProp(_el$
|
|
936
|
+
_v$4 !== _p$.e && (_p$.e = _$setProp(_el$26, "style", _v$4, _p$.e));
|
|
937
|
+
_v$5 !== _p$.t && (_p$.t = _$setProp(_el$27, "style", _v$5, _p$.t));
|
|
938
|
+
_v$6 !== _p$.a && (_p$.a = _$setProp(_el$29, "style", _v$6, _p$.a));
|
|
890
939
|
return _p$;
|
|
891
940
|
}, {
|
|
892
941
|
e: void 0,
|
|
893
942
|
t: void 0,
|
|
894
943
|
a: void 0
|
|
895
944
|
});
|
|
896
|
-
return _el$
|
|
945
|
+
return _el$25;
|
|
897
946
|
})(), _$createComponent(Show, {
|
|
898
947
|
get when() {
|
|
899
948
|
return detailOpen();
|
|
@@ -904,58 +953,58 @@ function TokenCachePanel(props) {
|
|
|
904
953
|
return data().read > 0;
|
|
905
954
|
},
|
|
906
955
|
get children() {
|
|
907
|
-
var _el$
|
|
908
|
-
_$insert(_el$
|
|
909
|
-
_$effect((_$p) => _$setProp(_el$
|
|
910
|
-
return _el$
|
|
956
|
+
var _el$30 = _$createElement("text");
|
|
957
|
+
_$insert(_el$30, () => justify(t().read, fmt(data().read), t().tok));
|
|
958
|
+
_$effect((_$p) => _$setProp(_el$30, "fg", pal().muted, _$p));
|
|
959
|
+
return _el$30;
|
|
911
960
|
}
|
|
912
961
|
}), _$createComponent(Show, {
|
|
913
962
|
get when() {
|
|
914
963
|
return data().write > 0;
|
|
915
964
|
},
|
|
916
965
|
get children() {
|
|
917
|
-
var _el$
|
|
918
|
-
_$insert(_el$
|
|
919
|
-
_$effect((_$p) => _$setProp(_el$
|
|
920
|
-
return _el$
|
|
966
|
+
var _el$31 = _$createElement("text");
|
|
967
|
+
_$insert(_el$31, () => justify(t().write, fmt(data().write), t().tok));
|
|
968
|
+
_$effect((_$p) => _$setProp(_el$31, "fg", pal().muted, _$p));
|
|
969
|
+
return _el$31;
|
|
921
970
|
}
|
|
922
971
|
}), (() => {
|
|
972
|
+
var _el$32 = _$createElement("text");
|
|
973
|
+
_$insert(_el$32, () => justify(t().miss, fmt(data().freshInput), t().tok));
|
|
974
|
+
_$effect((_$p) => _$setProp(_el$32, "fg", pal().muted, _$p));
|
|
975
|
+
return _el$32;
|
|
976
|
+
})(), (() => {
|
|
923
977
|
var _el$33 = _$createElement("text");
|
|
924
|
-
_$insert(_el$33, () => justify(t().
|
|
978
|
+
_$insert(_el$33, () => justify(t().out, fmt(data().output), t().tok));
|
|
925
979
|
_$effect((_$p) => _$setProp(_el$33, "fg", pal().muted, _$p));
|
|
926
980
|
return _el$33;
|
|
927
|
-
})(), (() => {
|
|
928
|
-
var _el$34 = _$createElement("text");
|
|
929
|
-
_$insert(_el$34, () => justify(t().out, fmt(data().output), t().tok));
|
|
930
|
-
_$effect((_$p) => _$setProp(_el$34, "fg", pal().muted, _$p));
|
|
931
|
-
return _el$34;
|
|
932
981
|
})(), _$createComponent(Show, {
|
|
933
982
|
get when() {
|
|
934
983
|
return data().saved > 0;
|
|
935
984
|
},
|
|
936
985
|
get children() {
|
|
937
|
-
var _el$
|
|
938
|
-
_$insertNode(_el$
|
|
939
|
-
_$insertNode(_el$
|
|
940
|
-
_$insertNode(_el$
|
|
941
|
-
_$insert(_el$
|
|
942
|
-
_$insert(_el$
|
|
943
|
-
_$insertNode(_el$
|
|
944
|
-
_$insert(_el$
|
|
986
|
+
var _el$34 = _$createElement("text"), _el$35 = _$createElement("span"), _el$36 = _$createElement("span"), _el$37 = _$createElement("span"), _el$38 = _$createTextNode(`~`);
|
|
987
|
+
_$insertNode(_el$34, _el$35);
|
|
988
|
+
_$insertNode(_el$34, _el$36);
|
|
989
|
+
_$insertNode(_el$34, _el$37);
|
|
990
|
+
_$insert(_el$35, () => t().saved);
|
|
991
|
+
_$insert(_el$36, () => " ".repeat(Math.max(1, panelWidth() - gutter() - visualWidth(t().saved) - visualWidth("~" + fmtCost(data().saved, currencySymbol(), exchangeRate())))));
|
|
992
|
+
_$insertNode(_el$37, _el$38);
|
|
993
|
+
_$insert(_el$37, () => fmtCost(data().saved, currencySymbol(), exchangeRate()), null);
|
|
945
994
|
_$effect((_p$) => {
|
|
946
995
|
var _v$7 = {
|
|
947
996
|
fg: pal().muted
|
|
948
997
|
}, _v$8 = {
|
|
949
998
|
fg: pal().success
|
|
950
999
|
};
|
|
951
|
-
_v$7 !== _p$.e && (_p$.e = _$setProp(_el$
|
|
952
|
-
_v$8 !== _p$.t && (_p$.t = _$setProp(_el$
|
|
1000
|
+
_v$7 !== _p$.e && (_p$.e = _$setProp(_el$35, "style", _v$7, _p$.e));
|
|
1001
|
+
_v$8 !== _p$.t && (_p$.t = _$setProp(_el$37, "style", _v$8, _p$.t));
|
|
953
1002
|
return _p$;
|
|
954
1003
|
}, {
|
|
955
1004
|
e: void 0,
|
|
956
1005
|
t: void 0
|
|
957
1006
|
});
|
|
958
|
-
return _el$
|
|
1007
|
+
return _el$34;
|
|
959
1008
|
}
|
|
960
1009
|
})];
|
|
961
1010
|
}
|
|
@@ -967,91 +1016,91 @@ function TokenCachePanel(props) {
|
|
|
967
1016
|
},
|
|
968
1017
|
get children() {
|
|
969
1018
|
return [_$memo(() => (() => {
|
|
970
|
-
var _el$
|
|
971
|
-
_$insertNode(_el$
|
|
972
|
-
_$insertNode(_el$
|
|
973
|
-
_$insertNode(_el$
|
|
974
|
-
_$setProp(_el$
|
|
1019
|
+
var _el$59 = _$createElement("text"), _el$60 = _$createElement("span"), _el$61 = _$createElement("span"), _el$62 = _$createElement("b"), _el$63 = _$createElement("span");
|
|
1020
|
+
_$insertNode(_el$59, _el$60);
|
|
1021
|
+
_$insertNode(_el$59, _el$61);
|
|
1022
|
+
_$insertNode(_el$59, _el$63);
|
|
1023
|
+
_$setProp(_el$59, "onMouseUp", () => setModelOpen((o) => {
|
|
975
1024
|
const n = !o;
|
|
976
1025
|
persistFold("model", n);
|
|
977
1026
|
return n;
|
|
978
1027
|
}));
|
|
979
|
-
_$insert(_el$
|
|
980
|
-
_$insertNode(_el$
|
|
981
|
-
_$insert(_el$
|
|
982
|
-
_$insert(_el$
|
|
1028
|
+
_$insert(_el$60, () => modelOpen() ? "\u25BC " : "\u25B6 ");
|
|
1029
|
+
_$insertNode(_el$61, _el$62);
|
|
1030
|
+
_$insert(_el$62, () => t().secModel);
|
|
1031
|
+
_$insert(_el$63, () => sep().slice(visualWidth((modelOpen() ? "\u25BC " : "\u25B6 ") + t().secModel)));
|
|
983
1032
|
_$effect((_p$) => {
|
|
984
|
-
var _v$
|
|
1033
|
+
var _v$13 = {
|
|
985
1034
|
fg: pal().muted
|
|
986
|
-
}, _v$
|
|
1035
|
+
}, _v$14 = {
|
|
987
1036
|
fg: pal().primary
|
|
988
|
-
}, _v$
|
|
1037
|
+
}, _v$15 = {
|
|
989
1038
|
fg: pal().muted
|
|
990
1039
|
};
|
|
991
|
-
_v$
|
|
992
|
-
_v$
|
|
993
|
-
_v$
|
|
1040
|
+
_v$13 !== _p$.e && (_p$.e = _$setProp(_el$60, "style", _v$13, _p$.e));
|
|
1041
|
+
_v$14 !== _p$.t && (_p$.t = _$setProp(_el$61, "style", _v$14, _p$.t));
|
|
1042
|
+
_v$15 !== _p$.a && (_p$.a = _$setProp(_el$63, "style", _v$15, _p$.a));
|
|
994
1043
|
return _p$;
|
|
995
1044
|
}, {
|
|
996
1045
|
e: void 0,
|
|
997
1046
|
t: void 0,
|
|
998
1047
|
a: void 0
|
|
999
1048
|
});
|
|
1000
|
-
return _el$
|
|
1049
|
+
return _el$59;
|
|
1001
1050
|
})()), _$createComponent(Show, {
|
|
1002
1051
|
get when() {
|
|
1003
1052
|
return modelOpen();
|
|
1004
1053
|
},
|
|
1005
1054
|
get children() {
|
|
1006
1055
|
return [(() => {
|
|
1007
|
-
var _el$
|
|
1008
|
-
_$insert(_el$
|
|
1009
|
-
_$effect((_$p) => _$setProp(_el$
|
|
1010
|
-
return _el$
|
|
1056
|
+
var _el$39 = _$createElement("text");
|
|
1057
|
+
_$insert(_el$39, () => justify(t().cost, fmtCost(data().cost, currencySymbol(), exchangeRate())));
|
|
1058
|
+
_$effect((_$p) => _$setProp(_el$39, "fg", pal().text, _$p));
|
|
1059
|
+
return _el$39;
|
|
1011
1060
|
})(), _$createComponent(Show, {
|
|
1012
1061
|
get when() {
|
|
1013
1062
|
return data().providerName;
|
|
1014
1063
|
},
|
|
1015
1064
|
get children() {
|
|
1016
|
-
var _el$
|
|
1017
|
-
_$insert(_el$
|
|
1018
|
-
_$effect((_$p) => _$setProp(_el$
|
|
1019
|
-
return _el$
|
|
1065
|
+
var _el$40 = _$createElement("text");
|
|
1066
|
+
_$insert(_el$40, () => justify(t().provider, data().providerName));
|
|
1067
|
+
_$effect((_$p) => _$setProp(_el$40, "fg", pal().muted, _$p));
|
|
1068
|
+
return _el$40;
|
|
1020
1069
|
}
|
|
1021
1070
|
}), (() => {
|
|
1022
|
-
var _el$
|
|
1023
|
-
_$insert(_el$
|
|
1024
|
-
_$effect((_$p) => _$setProp(_el$
|
|
1025
|
-
return _el$
|
|
1071
|
+
var _el$41 = _$createElement("text");
|
|
1072
|
+
_$insert(_el$41, () => justify(t().model, data().model));
|
|
1073
|
+
_$effect((_$p) => _$setProp(_el$41, "fg", pal().muted, _$p));
|
|
1074
|
+
return _el$41;
|
|
1026
1075
|
})(), _$createComponent(Show, {
|
|
1027
1076
|
get when() {
|
|
1028
1077
|
return data().hasPricing;
|
|
1029
1078
|
},
|
|
1030
1079
|
get children() {
|
|
1031
1080
|
return [(() => {
|
|
1032
|
-
var _el$
|
|
1033
|
-
_$insert(_el$
|
|
1034
|
-
_$effect((_$p) => _$setProp(_el$
|
|
1035
|
-
return _el$
|
|
1081
|
+
var _el$42 = _$createElement("text");
|
|
1082
|
+
_$insert(_el$42, () => justify(t().rate, currencySymbol() + (data().inputRate * exchangeRate()).toFixed(2) + "/M " + t().inputRate));
|
|
1083
|
+
_$effect((_$p) => _$setProp(_el$42, "fg", pal().muted, _$p));
|
|
1084
|
+
return _el$42;
|
|
1036
1085
|
})(), _$createComponent(Show, {
|
|
1037
1086
|
get when() {
|
|
1038
1087
|
return data().cacheReadRate > 0;
|
|
1039
1088
|
},
|
|
1040
1089
|
get children() {
|
|
1041
|
-
var _el$
|
|
1042
|
-
_$insert(_el$
|
|
1043
|
-
_$effect((_$p) => _$setProp(_el$
|
|
1044
|
-
return _el$
|
|
1090
|
+
var _el$43 = _$createElement("text");
|
|
1091
|
+
_$insert(_el$43, () => justify("", currencySymbol() + (data().cacheReadRate * exchangeRate()).toFixed(2) + "/M " + t().cacheRate));
|
|
1092
|
+
_$effect((_$p) => _$setProp(_el$43, "fg", pal().muted, _$p));
|
|
1093
|
+
return _el$43;
|
|
1045
1094
|
}
|
|
1046
1095
|
}), _$createComponent(Show, {
|
|
1047
1096
|
get when() {
|
|
1048
1097
|
return data().cacheWriteRate > 0;
|
|
1049
1098
|
},
|
|
1050
1099
|
get children() {
|
|
1051
|
-
var _el$
|
|
1052
|
-
_$insert(_el$
|
|
1053
|
-
_$effect((_$p) => _$setProp(_el$
|
|
1054
|
-
return _el$
|
|
1100
|
+
var _el$44 = _$createElement("text");
|
|
1101
|
+
_$insert(_el$44, () => justify("", currencySymbol() + (data().cacheWriteRate * exchangeRate()).toFixed(2) + "/M " + t().writeRate));
|
|
1102
|
+
_$effect((_$p) => _$setProp(_el$44, "fg", pal().muted, _$p));
|
|
1103
|
+
return _el$44;
|
|
1055
1104
|
}
|
|
1056
1105
|
})];
|
|
1057
1106
|
}
|
|
@@ -1070,37 +1119,37 @@ function TokenCachePanel(props) {
|
|
|
1070
1119
|
},
|
|
1071
1120
|
get children() {
|
|
1072
1121
|
return [_$memo(() => (() => {
|
|
1073
|
-
var _el$
|
|
1074
|
-
_$insertNode(_el$
|
|
1075
|
-
_$insertNode(_el$
|
|
1076
|
-
_$insertNode(_el$
|
|
1077
|
-
_$setProp(_el$
|
|
1122
|
+
var _el$64 = _$createElement("text"), _el$65 = _$createElement("span"), _el$66 = _$createElement("span"), _el$67 = _$createElement("b"), _el$68 = _$createElement("span");
|
|
1123
|
+
_$insertNode(_el$64, _el$65);
|
|
1124
|
+
_$insertNode(_el$64, _el$66);
|
|
1125
|
+
_$insertNode(_el$64, _el$68);
|
|
1126
|
+
_$setProp(_el$64, "onMouseUp", () => setDistOpen((o) => {
|
|
1078
1127
|
const n = !o;
|
|
1079
1128
|
persistFold("dist", n);
|
|
1080
1129
|
return n;
|
|
1081
1130
|
}));
|
|
1082
|
-
_$insert(_el$
|
|
1083
|
-
_$insertNode(_el$
|
|
1084
|
-
_$insert(_el$
|
|
1085
|
-
_$insert(_el$
|
|
1131
|
+
_$insert(_el$65, () => distOpen() ? "\u25BC " : "\u25B6 ");
|
|
1132
|
+
_$insertNode(_el$66, _el$67);
|
|
1133
|
+
_$insert(_el$67, () => t().distTitle);
|
|
1134
|
+
_$insert(_el$68, () => sep().slice(visualWidth((distOpen() ? "\u25BC " : "\u25B6 ") + t().distTitle)));
|
|
1086
1135
|
_$effect((_p$) => {
|
|
1087
|
-
var _v$
|
|
1136
|
+
var _v$16 = {
|
|
1088
1137
|
fg: pal().muted
|
|
1089
|
-
}, _v$
|
|
1138
|
+
}, _v$17 = {
|
|
1090
1139
|
fg: pal().primary
|
|
1091
|
-
}, _v$
|
|
1140
|
+
}, _v$18 = {
|
|
1092
1141
|
fg: pal().muted
|
|
1093
1142
|
};
|
|
1094
|
-
_v$
|
|
1095
|
-
_v$
|
|
1096
|
-
_v$
|
|
1143
|
+
_v$16 !== _p$.e && (_p$.e = _$setProp(_el$65, "style", _v$16, _p$.e));
|
|
1144
|
+
_v$17 !== _p$.t && (_p$.t = _$setProp(_el$66, "style", _v$17, _p$.t));
|
|
1145
|
+
_v$18 !== _p$.a && (_p$.a = _$setProp(_el$68, "style", _v$18, _p$.a));
|
|
1097
1146
|
return _p$;
|
|
1098
1147
|
}, {
|
|
1099
1148
|
e: void 0,
|
|
1100
1149
|
t: void 0,
|
|
1101
1150
|
a: void 0
|
|
1102
1151
|
});
|
|
1103
|
-
return _el$
|
|
1152
|
+
return _el$64;
|
|
1104
1153
|
})()), _$createComponent(Show, {
|
|
1105
1154
|
get when() {
|
|
1106
1155
|
return distOpen();
|
|
@@ -1110,57 +1159,57 @@ function TokenCachePanel(props) {
|
|
|
1110
1159
|
get when() {
|
|
1111
1160
|
return data().dist.system > 0;
|
|
1112
1161
|
},
|
|
1162
|
+
get children() {
|
|
1163
|
+
var _el$45 = _$createElement("text");
|
|
1164
|
+
_$insert(_el$45, () => justify(t().distSys, fmt(data().dist.system), t().tok));
|
|
1165
|
+
_$effect((_$p) => _$setProp(_el$45, "fg", pal().muted, _$p));
|
|
1166
|
+
return _el$45;
|
|
1167
|
+
}
|
|
1168
|
+
}), _$createComponent(Show, {
|
|
1169
|
+
get when() {
|
|
1170
|
+
return data().dist.user > 0;
|
|
1171
|
+
},
|
|
1113
1172
|
get children() {
|
|
1114
1173
|
var _el$46 = _$createElement("text");
|
|
1115
|
-
_$insert(_el$46, () => justify(t().
|
|
1174
|
+
_$insert(_el$46, () => justify(t().distUser, fmt(data().dist.user), t().tok));
|
|
1116
1175
|
_$effect((_$p) => _$setProp(_el$46, "fg", pal().muted, _$p));
|
|
1117
1176
|
return _el$46;
|
|
1118
1177
|
}
|
|
1119
1178
|
}), _$createComponent(Show, {
|
|
1120
1179
|
get when() {
|
|
1121
|
-
return data().dist.
|
|
1180
|
+
return data().dist.agent > 0;
|
|
1122
1181
|
},
|
|
1123
1182
|
get children() {
|
|
1124
1183
|
var _el$47 = _$createElement("text");
|
|
1125
|
-
_$insert(_el$47, () => justify(t().
|
|
1184
|
+
_$insert(_el$47, () => justify(t().distAgent, fmt(data().dist.agent), t().tok));
|
|
1126
1185
|
_$effect((_$p) => _$setProp(_el$47, "fg", pal().muted, _$p));
|
|
1127
1186
|
return _el$47;
|
|
1128
1187
|
}
|
|
1129
1188
|
}), _$createComponent(Show, {
|
|
1130
1189
|
get when() {
|
|
1131
|
-
return data().dist.
|
|
1190
|
+
return data().dist.toolCall > 0;
|
|
1132
1191
|
},
|
|
1133
1192
|
get children() {
|
|
1134
1193
|
var _el$48 = _$createElement("text");
|
|
1135
|
-
_$insert(_el$48, () => justify(t().
|
|
1194
|
+
_$insert(_el$48, () => justify(t().distTool, fmt(data().dist.toolCall), t().tok));
|
|
1136
1195
|
_$effect((_$p) => _$setProp(_el$48, "fg", pal().muted, _$p));
|
|
1137
1196
|
return _el$48;
|
|
1138
1197
|
}
|
|
1139
1198
|
}), _$createComponent(Show, {
|
|
1140
1199
|
get when() {
|
|
1141
|
-
return data().dist.
|
|
1200
|
+
return data().dist.toolResult > 0;
|
|
1142
1201
|
},
|
|
1143
1202
|
get children() {
|
|
1144
1203
|
var _el$49 = _$createElement("text");
|
|
1145
|
-
_$insert(_el$49, () => justify(t().
|
|
1204
|
+
_$insert(_el$49, () => justify(t().distRes, fmt(data().dist.toolResult), t().tok));
|
|
1146
1205
|
_$effect((_$p) => _$setProp(_el$49, "fg", pal().muted, _$p));
|
|
1147
1206
|
return _el$49;
|
|
1148
1207
|
}
|
|
1149
|
-
}), _$createComponent(Show, {
|
|
1150
|
-
get when() {
|
|
1151
|
-
return data().dist.toolResult > 0;
|
|
1152
|
-
},
|
|
1153
|
-
get children() {
|
|
1154
|
-
var _el$50 = _$createElement("text");
|
|
1155
|
-
_$insert(_el$50, () => justify(t().distRes, fmt(data().dist.toolResult), t().tok));
|
|
1156
|
-
_$effect((_$p) => _$setProp(_el$50, "fg", pal().muted, _$p));
|
|
1157
|
-
return _el$50;
|
|
1158
|
-
}
|
|
1159
1208
|
}), (() => {
|
|
1160
|
-
var _el$
|
|
1161
|
-
_$insert(_el$
|
|
1162
|
-
_$effect((_$p) => _$setProp(_el$
|
|
1163
|
-
return _el$
|
|
1209
|
+
var _el$50 = _$createElement("text");
|
|
1210
|
+
_$insert(_el$50, () => justify(t().distTotal, fmt(data().dist.apiInput), t().tok));
|
|
1211
|
+
_$effect((_$p) => _$setProp(_el$50, "fg", pal().text, _$p));
|
|
1212
|
+
return _el$50;
|
|
1164
1213
|
})()];
|
|
1165
1214
|
}
|
|
1166
1215
|
})];
|
|
@@ -1178,37 +1227,37 @@ function TokenCachePanel(props) {
|
|
|
1178
1227
|
},
|
|
1179
1228
|
get children() {
|
|
1180
1229
|
return [_$memo(() => (() => {
|
|
1181
|
-
var _el$
|
|
1182
|
-
_$insertNode(_el$
|
|
1183
|
-
_$insertNode(_el$
|
|
1184
|
-
_$insertNode(_el$
|
|
1185
|
-
_$insertNode(_el$
|
|
1186
|
-
_$setProp(_el$
|
|
1230
|
+
var _el$69 = _$createElement("text"), _el$70 = _$createElement("span"), _el$71 = _$createElement("span"), _el$72 = _$createElement("b"), _el$73 = _$createElement("span"), _el$74 = _$createTextNode(` (`), _el$75 = _$createTextNode(`)`), _el$76 = _$createElement("span");
|
|
1231
|
+
_$insertNode(_el$69, _el$70);
|
|
1232
|
+
_$insertNode(_el$69, _el$71);
|
|
1233
|
+
_$insertNode(_el$69, _el$73);
|
|
1234
|
+
_$insertNode(_el$69, _el$76);
|
|
1235
|
+
_$setProp(_el$69, "onMouseUp", () => setSkillsOpen((o) => {
|
|
1187
1236
|
const n = !o;
|
|
1188
1237
|
persistFold("skills", n);
|
|
1189
1238
|
return n;
|
|
1190
1239
|
}));
|
|
1191
|
-
_$insert(_el$
|
|
1192
|
-
_$insertNode(_el$69, _el$70);
|
|
1193
|
-
_$insert(_el$70, () => t().secSkills);
|
|
1240
|
+
_$insert(_el$70, () => skillsOpen() ? "\u25BC " : "\u25B6 ");
|
|
1194
1241
|
_$insertNode(_el$71, _el$72);
|
|
1195
|
-
_$
|
|
1196
|
-
_$
|
|
1197
|
-
_$
|
|
1242
|
+
_$insert(_el$72, () => t().secSkills);
|
|
1243
|
+
_$insertNode(_el$73, _el$74);
|
|
1244
|
+
_$insertNode(_el$73, _el$75);
|
|
1245
|
+
_$insert(_el$73, () => data().skills.length, _el$75);
|
|
1246
|
+
_$insert(_el$76, () => sep().slice(visualWidth((skillsOpen() ? "\u25BC " : "\u25B6 ") + t().secSkills + ` (${data().skills.length})`)));
|
|
1198
1247
|
_$effect((_p$) => {
|
|
1199
|
-
var _v$
|
|
1248
|
+
var _v$19 = {
|
|
1200
1249
|
fg: pal().muted
|
|
1201
|
-
}, _v$
|
|
1250
|
+
}, _v$20 = {
|
|
1202
1251
|
fg: pal().primary
|
|
1203
|
-
}, _v$
|
|
1252
|
+
}, _v$21 = {
|
|
1204
1253
|
fg: pal().muted
|
|
1205
|
-
}, _v$
|
|
1254
|
+
}, _v$22 = {
|
|
1206
1255
|
fg: pal().muted
|
|
1207
1256
|
};
|
|
1208
|
-
_v$
|
|
1209
|
-
_v$
|
|
1210
|
-
_v$
|
|
1211
|
-
_v$
|
|
1257
|
+
_v$19 !== _p$.e && (_p$.e = _$setProp(_el$70, "style", _v$19, _p$.e));
|
|
1258
|
+
_v$20 !== _p$.t && (_p$.t = _$setProp(_el$71, "style", _v$20, _p$.t));
|
|
1259
|
+
_v$21 !== _p$.a && (_p$.a = _$setProp(_el$73, "style", _v$21, _p$.a));
|
|
1260
|
+
_v$22 !== _p$.o && (_p$.o = _$setProp(_el$76, "style", _v$22, _p$.o));
|
|
1212
1261
|
return _p$;
|
|
1213
1262
|
}, {
|
|
1214
1263
|
e: void 0,
|
|
@@ -1216,7 +1265,7 @@ function TokenCachePanel(props) {
|
|
|
1216
1265
|
a: void 0,
|
|
1217
1266
|
o: void 0
|
|
1218
1267
|
});
|
|
1219
|
-
return _el$
|
|
1268
|
+
return _el$69;
|
|
1220
1269
|
})()), _$createComponent(Show, {
|
|
1221
1270
|
get when() {
|
|
1222
1271
|
return skillsOpen();
|
|
@@ -1227,10 +1276,10 @@ function TokenCachePanel(props) {
|
|
|
1227
1276
|
const maxLabel = Math.max(4, panelWidth() - gutter() - rightW - 1);
|
|
1228
1277
|
const label = truncateVisual(sk.name, maxLabel);
|
|
1229
1278
|
return (() => {
|
|
1230
|
-
var _el$
|
|
1231
|
-
_$insert(_el$
|
|
1232
|
-
_$effect((_$p) => _$setProp(_el$
|
|
1233
|
-
return _el$
|
|
1279
|
+
var _el$77 = _$createElement("text");
|
|
1280
|
+
_$insert(_el$77, () => justify(label, fmt(sk.tokens), t().tok));
|
|
1281
|
+
_$effect((_$p) => _$setProp(_el$77, "fg", pal().muted, _$p));
|
|
1282
|
+
return _el$77;
|
|
1234
1283
|
})();
|
|
1235
1284
|
});
|
|
1236
1285
|
}
|
|
@@ -1240,7 +1289,7 @@ function TokenCachePanel(props) {
|
|
|
1240
1289
|
}
|
|
1241
1290
|
})];
|
|
1242
1291
|
}
|
|
1243
|
-
});
|
|
1292
|
+
})];
|
|
1244
1293
|
}
|
|
1245
1294
|
}), null);
|
|
1246
1295
|
_$effect((_p$) => {
|
|
@@ -1260,10 +1309,18 @@ function TokenCachePanel(props) {
|
|
|
1260
1309
|
})();
|
|
1261
1310
|
}
|
|
1262
1311
|
function createSidebarSlot(api, signals) {
|
|
1312
|
+
let lastSlotSid = "";
|
|
1263
1313
|
return {
|
|
1264
1314
|
order: 55,
|
|
1265
1315
|
slots: {
|
|
1266
1316
|
sidebar_content(ctx, input) {
|
|
1317
|
+
if (input.session_id !== lastSlotSid) {
|
|
1318
|
+
lastSlotSid = input.session_id;
|
|
1319
|
+
if (signals.overrideSessionId()) {
|
|
1320
|
+
signals.setOverrideSessionId(void 0);
|
|
1321
|
+
api.kv.set("cache_panel.session", "");
|
|
1322
|
+
}
|
|
1323
|
+
}
|
|
1267
1324
|
return _$createComponent(TokenCachePanel, {
|
|
1268
1325
|
get theme() {
|
|
1269
1326
|
return ctx.theme.current;
|
|
@@ -1287,6 +1344,7 @@ var tui = async (api) => {
|
|
|
1287
1344
|
const [sectionSkills, setSectionSkills] = createSignal(true);
|
|
1288
1345
|
const [borderVisible, setBorderVisible] = createSignal(true);
|
|
1289
1346
|
const [langZH, setLangZH] = createSignal(LANG_ZH);
|
|
1347
|
+
const [overrideSessionId, setOverrideSessionId] = createSignal(void 0);
|
|
1290
1348
|
const signals = {
|
|
1291
1349
|
currencySymbol,
|
|
1292
1350
|
setCurrencySymbol,
|
|
@@ -1303,7 +1361,9 @@ var tui = async (api) => {
|
|
|
1303
1361
|
sectionSkills,
|
|
1304
1362
|
setSectionSkills,
|
|
1305
1363
|
borderVisible,
|
|
1306
|
-
setBorderVisible
|
|
1364
|
+
setBorderVisible,
|
|
1365
|
+
overrideSessionId,
|
|
1366
|
+
setOverrideSessionId
|
|
1307
1367
|
};
|
|
1308
1368
|
api.slots.register(createSidebarSlot(api, signals));
|
|
1309
1369
|
const KV_PREFIX = "cache_panel";
|
|
@@ -1348,9 +1408,9 @@ var tui = async (api) => {
|
|
|
1348
1408
|
dialog?.replace(() => _$createComponent(api.ui.DialogPrompt, {
|
|
1349
1409
|
title: "Exchange Rate",
|
|
1350
1410
|
description: () => (() => {
|
|
1351
|
-
var _el$
|
|
1352
|
-
_$insertNode(_el$
|
|
1353
|
-
return _el$
|
|
1411
|
+
var _el$78 = _$createElement("text");
|
|
1412
|
+
_$insertNode(_el$78, _$createTextNode(`Enter the exchange rate from USD to your currency (e.g. 7.2 for CNY)`));
|
|
1413
|
+
return _el$78;
|
|
1354
1414
|
})(),
|
|
1355
1415
|
placeholder: "1.0",
|
|
1356
1416
|
get value() {
|
|
@@ -1521,6 +1581,147 @@ var tui = async (api) => {
|
|
|
1521
1581
|
duration: 15e3
|
|
1522
1582
|
});
|
|
1523
1583
|
}
|
|
1584
|
+
}, {
|
|
1585
|
+
title: "Cache: Sub-Agent Stats",
|
|
1586
|
+
value: "cache.session",
|
|
1587
|
+
description: "View token cache statistics for a sub-agent by session ID",
|
|
1588
|
+
slash: {
|
|
1589
|
+
name: "cache-session"
|
|
1590
|
+
},
|
|
1591
|
+
onSelect: (dialog) => {
|
|
1592
|
+
const rt = api.route.current;
|
|
1593
|
+
const parentSid = rt.name === "session" && rt.params ? String(rt.params.sessionID) : "";
|
|
1594
|
+
const SUBAGENT_TOOLS = /* @__PURE__ */ new Set(["task", "delegate", "call_omo_agent"]);
|
|
1595
|
+
const children = [];
|
|
1596
|
+
if (parentSid) {
|
|
1597
|
+
try {
|
|
1598
|
+
const msgs = api.state.session.messages(parentSid);
|
|
1599
|
+
for (const msg of msgs) {
|
|
1600
|
+
if (msg.role !== "assistant") continue;
|
|
1601
|
+
let parts = [];
|
|
1602
|
+
try {
|
|
1603
|
+
parts = api.state.part(msg.id);
|
|
1604
|
+
} catch {
|
|
1605
|
+
}
|
|
1606
|
+
for (const p of parts) {
|
|
1607
|
+
if (p.type !== "tool") continue;
|
|
1608
|
+
const tool = String(p.tool ?? "");
|
|
1609
|
+
if (!SUBAGENT_TOOLS.has(tool)) continue;
|
|
1610
|
+
const st = p.state;
|
|
1611
|
+
const stMeta = st?.metadata;
|
|
1612
|
+
const subSid = stMeta?.session_id ?? stMeta?.sessionId;
|
|
1613
|
+
if (!subSid) continue;
|
|
1614
|
+
const sidStr = String(subSid);
|
|
1615
|
+
const input = st?.input;
|
|
1616
|
+
const agent = String(p.subagent_type ?? input?.subagent_type ?? input?.category ?? tool);
|
|
1617
|
+
const prompt = String(input?.prompt ?? "");
|
|
1618
|
+
const desc = input?.description ? String(input.description) : "";
|
|
1619
|
+
const title = desc || prompt.replace(/\n/g, " ").replace(/\s+/g, " ").trim().slice(0, 40) || agent;
|
|
1620
|
+
children.push({
|
|
1621
|
+
title,
|
|
1622
|
+
value: sidStr,
|
|
1623
|
+
description: `${agent} \xB7 ${sidStr.slice(0, 24)}\u2026`
|
|
1624
|
+
});
|
|
1625
|
+
}
|
|
1626
|
+
}
|
|
1627
|
+
} catch {
|
|
1628
|
+
}
|
|
1629
|
+
}
|
|
1630
|
+
const seen = /* @__PURE__ */ new Set();
|
|
1631
|
+
const unique = children.filter((c) => {
|
|
1632
|
+
if (seen.has(c.value)) return false;
|
|
1633
|
+
seen.add(c.value);
|
|
1634
|
+
return true;
|
|
1635
|
+
});
|
|
1636
|
+
if (unique.length > 0) {
|
|
1637
|
+
const zh = langZH();
|
|
1638
|
+
const currentSid = signals.overrideSessionId() ?? api.kv.get(`${KV_PREFIX}.session`, "");
|
|
1639
|
+
const options = unique.map((c, i) => ({
|
|
1640
|
+
title: `${i + 1}. ${c.title}`,
|
|
1641
|
+
value: c.value,
|
|
1642
|
+
description: c.description
|
|
1643
|
+
}));
|
|
1644
|
+
const backValue = "__main__";
|
|
1645
|
+
const backTitle = `\u2500 ${zh ? "\u56DE\u5230\u4E3B\u4F1A\u8BDD" : "Back to Main"}`;
|
|
1646
|
+
options.unshift({
|
|
1647
|
+
title: backTitle,
|
|
1648
|
+
value: backValue,
|
|
1649
|
+
description: ""
|
|
1650
|
+
});
|
|
1651
|
+
options.push({
|
|
1652
|
+
title: backTitle,
|
|
1653
|
+
value: backValue,
|
|
1654
|
+
description: ""
|
|
1655
|
+
});
|
|
1656
|
+
const currentIdx = currentSid ? options.findIndex((o) => o.value === currentSid) : -1;
|
|
1657
|
+
dialog?.replace(() => _$createComponent(api.ui.DialogSelect, {
|
|
1658
|
+
title: zh ? "\u9009\u62E9\u5B50\u4EE3\u7406" : "Select Sub-Agent",
|
|
1659
|
+
options,
|
|
1660
|
+
get current() {
|
|
1661
|
+
return currentIdx >= 0 ? options[currentIdx].value : void 0;
|
|
1662
|
+
},
|
|
1663
|
+
onSelect: (opt) => {
|
|
1664
|
+
if (opt.value === backValue) {
|
|
1665
|
+
signals.setOverrideSessionId(void 0);
|
|
1666
|
+
api.kv.set(`${KV_PREFIX}.session`, "");
|
|
1667
|
+
api.ui.toast({
|
|
1668
|
+
message: zh ? "\u5DF2\u5207\u56DE\u4E3B\u4F1A\u8BDD" : "Switched to main session"
|
|
1669
|
+
});
|
|
1670
|
+
} else {
|
|
1671
|
+
signals.setOverrideSessionId(opt.value);
|
|
1672
|
+
api.kv.set(`${KV_PREFIX}.session`, opt.value);
|
|
1673
|
+
api.ui.toast({
|
|
1674
|
+
message: (zh ? "\u5DF2\u5207\u6362\u81F3\u5B50\u4EE3\u7406: " : "Showing sub-agent: ") + opt.value.slice(0, 24) + "\u2026"
|
|
1675
|
+
});
|
|
1676
|
+
}
|
|
1677
|
+
dialog?.clear();
|
|
1678
|
+
}
|
|
1679
|
+
}));
|
|
1680
|
+
} else {
|
|
1681
|
+
const zh = langZH();
|
|
1682
|
+
dialog?.replace(() => _$createComponent(api.ui.DialogPrompt, {
|
|
1683
|
+
get title() {
|
|
1684
|
+
return signals.overrideSessionId() ? zh ? "\u5207\u6362\u5B50\u4EE3\u7406" : "Switch Sub" : zh ? "\u67E5\u770B\u5B50\u4EE3\u7406\u7F13\u5B58" : "View Sub Cache";
|
|
1685
|
+
},
|
|
1686
|
+
description: () => (() => {
|
|
1687
|
+
var _el$80 = _$createElement("text");
|
|
1688
|
+
_$insert(_el$80, zh ? "\u672A\u627E\u5230\u5B50\u4EE3\u7406\uFF0C\u8BF7\u624B\u52A8\u7C98\u8D34 Session ID" : "No sub-agents found. Paste a Session ID manually");
|
|
1689
|
+
return _el$80;
|
|
1690
|
+
})(),
|
|
1691
|
+
placeholder: "ses_...",
|
|
1692
|
+
get value() {
|
|
1693
|
+
return signals.overrideSessionId() ?? api.kv.get(`${KV_PREFIX}.session`, "") ?? "";
|
|
1694
|
+
},
|
|
1695
|
+
onConfirm: (val) => {
|
|
1696
|
+
const sid = val.trim();
|
|
1697
|
+
if (sid) {
|
|
1698
|
+
signals.setOverrideSessionId(sid);
|
|
1699
|
+
api.kv.set(`${KV_PREFIX}.session`, sid);
|
|
1700
|
+
api.ui.toast({
|
|
1701
|
+
message: (langZH() ? "\u5DF2\u5207\u6362\u81F3\u5B50\u4EE3\u7406: " : "Showing sub-agent: ") + sid.slice(0, 24) + "\u2026"
|
|
1702
|
+
});
|
|
1703
|
+
}
|
|
1704
|
+
dialog?.clear();
|
|
1705
|
+
},
|
|
1706
|
+
onCancel: () => dialog?.clear()
|
|
1707
|
+
}));
|
|
1708
|
+
}
|
|
1709
|
+
}
|
|
1710
|
+
}, {
|
|
1711
|
+
title: "Cache: Back to Main",
|
|
1712
|
+
value: "cache.session.back",
|
|
1713
|
+
description: "Return to main session stats",
|
|
1714
|
+
slash: {
|
|
1715
|
+
name: "cache-session-back"
|
|
1716
|
+
},
|
|
1717
|
+
onSelect: (dialog) => {
|
|
1718
|
+
signals.setOverrideSessionId(void 0);
|
|
1719
|
+
api.kv.set(`${KV_PREFIX}.session`, "");
|
|
1720
|
+
api.ui.toast({
|
|
1721
|
+
message: langZH() ? "\u5DF2\u5207\u56DE\u4E3B\u4F1A\u8BDD" : "Switched to main session"
|
|
1722
|
+
});
|
|
1723
|
+
dialog?.clear();
|
|
1724
|
+
}
|
|
1524
1725
|
}]);
|
|
1525
1726
|
};
|
|
1526
1727
|
var mod = {
|