flavor-code 1.3.11 → 1.3.12

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.
@@ -47,6 +47,9 @@ export type AgentEvent = {
47
47
  } | {
48
48
  type: "text";
49
49
  text: string;
50
+ } | {
51
+ type: "thinking";
52
+ text: string;
50
53
  } | {
51
54
  type: "tool-start";
52
55
  id: string;
@@ -2,10 +2,11 @@
2
2
  import { createRequire } from "node:module"; const require = createRequire(import.meta.url);
3
3
  import {
4
4
  statusPresentation
5
- } from "./chunk-KKIBYDJI.js";
5
+ } from "./chunk-2BF7CVWZ.js";
6
6
  import {
7
7
  COMMAND_DESCRIPTIONS,
8
8
  MVP_COMMANDS,
9
+ charWidth,
9
10
  createGlobTool,
10
11
  createProductionRuntime,
11
12
  createTranscriptState,
@@ -14,10 +15,11 @@ import {
14
15
  modelContentTranscriptText,
15
16
  packageVersion,
16
17
  redactErrorText,
18
+ thinkingWindow,
17
19
  transcriptReducer,
18
20
  withTimeout
19
- } from "./chunk-IGFN2DM5.js";
20
- import "./chunk-IG4Z23CL.js";
21
+ } from "./chunk-QC5OYQTB.js";
22
+ import "./chunk-JFKRX2KG.js";
21
23
  import {
22
24
  Box_default,
23
25
  ClockContext,
@@ -605,187 +607,6 @@ function highlightCode(source, language = void 0) {
605
607
  return source.split("\n").map((line) => highlightSingleLine(line, keywords)).join("\n");
606
608
  }
607
609
 
608
- // src/ui/char-width.ts
609
- function charWidth(codePoint) {
610
- if (codePoint === 8203 || // ZERO WIDTH SPACE
611
- codePoint === 8204 || // ZERO WIDTH NON-JOINER
612
- codePoint === 8205 || // ZERO WIDTH JOINER
613
- codePoint === 65279 || // BOM / ZERO WIDTH NO-BREAK SPACE
614
- codePoint >= 768 && codePoint <= 879 || // Combining Diacritical Marks
615
- codePoint >= 1155 && codePoint <= 1161 || // Cyrillic combining marks
616
- codePoint >= 1425 && codePoint <= 1469 || // Hebrew combining marks
617
- codePoint >= 1552 && codePoint <= 1562 || // Arabic combining marks
618
- codePoint >= 1611 && codePoint <= 1631 || // Arabic combining marks
619
- codePoint >= 1648 && codePoint <= 1648 || // Arabic combining marks
620
- codePoint >= 1750 && codePoint <= 1756 || // Arabic combining marks
621
- codePoint >= 1759 && codePoint <= 1764 || // Arabic combining marks
622
- codePoint >= 1767 && codePoint <= 1768 || // Arabic combining marks
623
- codePoint >= 1770 && codePoint <= 1773 || // Arabic combining marks
624
- codePoint >= 1809 && codePoint <= 1809 || // Syriac combining marks
625
- codePoint >= 1840 && codePoint <= 1866 || // Syriac combining marks
626
- codePoint >= 1958 && codePoint <= 1968 || // Thaana combining marks
627
- codePoint >= 2304 && codePoint <= 2306 || // Devanagari combining marks
628
- codePoint >= 2362 && codePoint <= 2362 || // Devanagari combining marks
629
- codePoint >= 2364 && codePoint <= 2364 || // Devanagari combining marks
630
- codePoint >= 2369 && codePoint <= 2376 || // Devanagari combining marks
631
- codePoint >= 2381 && codePoint <= 2381 || // Devanagari combining marks
632
- codePoint >= 2385 && codePoint <= 2391 || // Devanagari combining marks
633
- codePoint >= 2402 && codePoint <= 2403 || // Devanagari combining marks
634
- codePoint >= 2433 && codePoint <= 2433 || // Bengali combining marks
635
- codePoint >= 2492 && codePoint <= 2492 || // Bengali combining marks
636
- codePoint >= 2497 && codePoint <= 2500 || // Bengali combining marks
637
- codePoint >= 2509 && codePoint <= 2509 || // Bengali combining marks
638
- codePoint >= 2530 && codePoint <= 2531 || // Bengali combining marks
639
- codePoint >= 2561 && codePoint <= 2562 || // Gurmukhi combining marks
640
- codePoint >= 2620 && codePoint <= 2620 || // Gurmukhi combining marks
641
- codePoint >= 2625 && codePoint <= 2626 || // Gurmukhi combining marks
642
- codePoint >= 2631 && codePoint <= 2632 || // Gurmukhi combining marks
643
- codePoint >= 2635 && codePoint <= 2637 || // Gurmukhi combining marks
644
- codePoint >= 2672 && codePoint <= 2673 || // Gurmukhi combining marks
645
- codePoint >= 2689 && codePoint <= 2690 || // Gujarati combining marks
646
- codePoint >= 2748 && codePoint <= 2748 || // Gujarati combining marks
647
- codePoint >= 2753 && codePoint <= 2757 || // Gujarati combining marks
648
- codePoint >= 2759 && codePoint <= 2760 || // Gujarati combining marks
649
- codePoint >= 2765 && codePoint <= 2765 || // Gujarati combining marks
650
- codePoint >= 2786 && codePoint <= 2787 || // Gujarati combining marks
651
- codePoint >= 2817 && codePoint <= 2817 || // Oriya combining marks
652
- codePoint >= 2876 && codePoint <= 2876 || // Oriya combining marks
653
- codePoint >= 2879 && codePoint <= 2879 || // Oriya combining marks
654
- codePoint >= 2881 && codePoint <= 2883 || // Oriya combining marks
655
- codePoint >= 2893 && codePoint <= 2893 || // Oriya combining marks
656
- codePoint >= 2902 && codePoint <= 2902 || // Oriya combining marks
657
- codePoint >= 2946 && codePoint <= 2946 || // Tamil combining marks
658
- codePoint >= 3008 && codePoint <= 3008 || // Tamil combining marks
659
- codePoint >= 3021 && codePoint <= 3021 || // Tamil combining marks
660
- codePoint >= 3134 && codePoint <= 3136 || // Telugu combining marks
661
- codePoint >= 3142 && codePoint <= 3144 || // Telugu combining marks
662
- codePoint >= 3146 && codePoint <= 3149 || // Telugu combining marks
663
- codePoint >= 3157 && codePoint <= 3158 || // Telugu combining marks
664
- codePoint >= 3260 && codePoint <= 3260 || // Kannada combining marks
665
- codePoint >= 3263 && codePoint <= 3263 || // Kannada combining marks
666
- codePoint >= 3270 && codePoint <= 3270 || // Kannada combining marks
667
- codePoint >= 3276 && codePoint <= 3277 || // Kannada combining marks
668
- codePoint >= 3298 && codePoint <= 3299 || // Kannada combining marks
669
- codePoint >= 3393 && codePoint <= 3395 || // Malayalam combining marks
670
- codePoint >= 3405 && codePoint <= 3405 || // Malayalam combining marks
671
- codePoint >= 3530 && codePoint <= 3530 || // Sinhala combining marks
672
- codePoint >= 3538 && codePoint <= 3540 || // Sinhala combining marks
673
- codePoint >= 3542 && codePoint <= 3542 || // Sinhala combining marks
674
- codePoint >= 3633 && codePoint <= 3633 || // Thai combining marks
675
- codePoint >= 3636 && codePoint <= 3642 || // Thai combining marks
676
- codePoint >= 3655 && codePoint <= 3662 || // Thai combining marks
677
- codePoint >= 3761 && codePoint <= 3761 || // Lao combining marks
678
- codePoint >= 3764 && codePoint <= 3769 || // Lao combining marks
679
- codePoint >= 3771 && codePoint <= 3772 || // Lao combining marks
680
- codePoint >= 3784 && codePoint <= 3789 || // Lao combining marks
681
- codePoint >= 3864 && codePoint <= 3865 || // Tibetan combining marks
682
- codePoint >= 3893 && codePoint <= 3893 || // Tibetan combining marks
683
- codePoint >= 3895 && codePoint <= 3895 || // Tibetan combining marks
684
- codePoint >= 3897 && codePoint <= 3897 || // Tibetan combining marks
685
- codePoint >= 3953 && codePoint <= 3966 || // Tibetan combining marks
686
- codePoint >= 3968 && codePoint <= 3972 || // Tibetan combining marks
687
- codePoint >= 3974 && codePoint <= 3975 || // Tibetan combining marks
688
- codePoint >= 3984 && codePoint <= 3991 || // Tibetan combining marks
689
- codePoint >= 3993 && codePoint <= 4028 || // Tibetan combining marks
690
- codePoint >= 4038 && codePoint <= 4038 || // Tibetan combining marks
691
- codePoint >= 4146 && codePoint <= 4151 || // Myanmar combining marks
692
- codePoint >= 4153 && codePoint <= 4154 || // Myanmar combining marks
693
- codePoint >= 4157 && codePoint <= 4158 || // Myanmar combining marks
694
- codePoint >= 4184 && codePoint <= 4185 || // Myanmar combining marks
695
- codePoint >= 4190 && codePoint <= 4192 || // Myanmar combining marks
696
- codePoint >= 4209 && codePoint <= 4212 || // Myanmar combining marks
697
- codePoint >= 4226 && codePoint <= 4226 || // Myanmar combining marks
698
- codePoint >= 4229 && codePoint <= 4230 || // Myanmar combining marks
699
- codePoint >= 4237 && codePoint <= 4237 || // Myanmar combining marks
700
- codePoint >= 4957 && codePoint <= 4959 || // Ethiopic combining marks
701
- codePoint >= 5906 && codePoint <= 5908 || // Tagalog combining marks
702
- codePoint >= 5938 && codePoint <= 5940 || // Hanunoo combining marks
703
- codePoint >= 5970 && codePoint <= 5971 || // Buhid combining marks
704
- codePoint >= 6002 && codePoint <= 6003 || // Tagbanwa combining marks
705
- codePoint >= 6068 && codePoint <= 6069 || // Khmer combining marks
706
- codePoint >= 6071 && codePoint <= 6077 || // Khmer combining marks
707
- codePoint >= 6086 && codePoint <= 6086 || // Khmer combining marks
708
- codePoint >= 6089 && codePoint <= 6099 || // Khmer combining marks
709
- codePoint >= 6109 && codePoint <= 6109 || // Khmer combining marks
710
- codePoint >= 6155 && codePoint <= 6157 || // Mongolian combining marks
711
- codePoint >= 6313 && codePoint <= 6313 || // Mongolian combining marks
712
- codePoint >= 6432 && codePoint <= 6434 || // Limbu combining marks
713
- codePoint >= 6439 && codePoint <= 6440 || // Limbu combining marks
714
- codePoint >= 6450 && codePoint <= 6450 || // Limbu combining marks
715
- codePoint >= 6457 && codePoint <= 6459 || // Limbu combining marks
716
- codePoint >= 6679 && codePoint <= 6680 || // Buginese combining marks
717
- codePoint >= 6912 && codePoint <= 6915 || // Balinese combining marks
718
- codePoint >= 6964 && codePoint <= 6964 || // Balinese combining marks
719
- codePoint >= 6966 && codePoint <= 6970 || // Balinese combining marks
720
- codePoint >= 6972 && codePoint <= 6972 || // Balinese combining marks
721
- codePoint >= 6978 && codePoint <= 6978 || // Balinese combining marks
722
- codePoint >= 7019 && codePoint <= 7027 || // Balinese combining marks
723
- codePoint >= 7616 && codePoint <= 7679 || // Combining Diacritical Marks Supplement
724
- codePoint >= 8400 && codePoint <= 8432 || // Combining Diacritical Marks for Symbols
725
- codePoint >= 11503 && codePoint <= 11505 || // Coptic combining marks
726
- codePoint >= 11647 && codePoint <= 11647 || // Tifinagh combining marks
727
- codePoint >= 11744 && codePoint <= 11775 || // Cyrillic Extended-A combining marks
728
- codePoint >= 42607 && codePoint <= 42610 || // Cyrillic Extended-B combining marks
729
- codePoint >= 42612 && codePoint <= 42621 || // Cyrillic Extended-B combining marks
730
- codePoint >= 42654 && codePoint <= 42655 || // Cyrillic Extended-B combining marks
731
- codePoint >= 42736 && codePoint <= 42737 || // Bamum combining marks
732
- codePoint >= 43010 && codePoint <= 43010 || // Syloti Nagri combining marks
733
- codePoint >= 43014 && codePoint <= 43014 || // Syloti Nagri combining marks
734
- codePoint >= 43019 && codePoint <= 43019 || // Syloti Nagri combining marks
735
- codePoint >= 43045 && codePoint <= 43046 || // Syloti Nagri combining marks
736
- codePoint >= 43204 && codePoint <= 43204 || // Saurashtra combining marks
737
- codePoint >= 43232 && codePoint <= 43249 || // Devanagari Extended combining marks
738
- codePoint >= 43302 && codePoint <= 43309 || // Kayah Li combining marks
739
- codePoint >= 43335 && codePoint <= 43345 || // Rejang combining marks
740
- codePoint >= 43392 && codePoint <= 43394 || // Javanese combining marks
741
- codePoint >= 43443 && codePoint <= 43443 || // Javanese combining marks
742
- codePoint >= 43446 && codePoint <= 43449 || // Javanese combining marks
743
- codePoint >= 43452 && codePoint <= 43452 || // Javanese combining marks
744
- codePoint >= 43561 && codePoint <= 43566 || // Cham combining marks
745
- codePoint >= 43569 && codePoint <= 43570 || // Cham combining marks
746
- codePoint >= 43573 && codePoint <= 43574 || // Cham combining marks
747
- codePoint >= 43587 && codePoint <= 43587 || // Cham combining marks
748
- codePoint >= 43596 && codePoint <= 43596 || // Cham combining marks
749
- codePoint >= 43696 && codePoint <= 43696 || // Tai Viet combining marks
750
- codePoint >= 43698 && codePoint <= 43700 || // Tai Viet combining marks
751
- codePoint >= 43703 && codePoint <= 43704 || // Tai Viet combining marks
752
- codePoint >= 43710 && codePoint <= 43711 || // Tai Viet combining marks
753
- codePoint >= 43713 && codePoint <= 43713 || // Tai Viet combining marks
754
- codePoint >= 44005 && codePoint <= 44005 || // Meetei Mayek combining marks
755
- codePoint >= 44008 && codePoint <= 44008 || // Meetei Mayek combining marks
756
- codePoint >= 44013 && codePoint <= 44013 || // Meetei Mayek combining marks
757
- codePoint >= 64286 && codePoint <= 64286 || // Hebrew combining marks
758
- codePoint >= 65024 && codePoint <= 65039 || // Variation Selectors
759
- codePoint >= 65056 && codePoint <= 65071 || // Combining Half Marks
760
- codePoint >= 917760 && codePoint <= 917999) {
761
- return 0;
762
- }
763
- if (codePoint >= 4352 && codePoint <= 4447 || // Hangul Jamo
764
- codePoint >= 9001 && codePoint <= 9002 || // Left/Right-pointing angle bracket
765
- codePoint >= 11904 && codePoint <= 12350 || // CJK Radicals Supplement, Kangxi Radicals, CJK Symbols
766
- codePoint >= 12352 && codePoint <= 13247 || // Hiragana, Katakana, Bopomofo, Hangul Compatibility, Kanbun, CJK Strokes, Enclosed CJK
767
- codePoint >= 13312 && codePoint <= 19903 || // CJK Unified Ideographs Extension A
768
- codePoint >= 19968 && codePoint <= 42191 || // CJK Unified Ideographs, Yi Syllables, Yi Radicals
769
- codePoint >= 43360 && codePoint <= 43388 || // Hangul Jamo Extended-A
770
- codePoint >= 44032 && codePoint <= 55203 || // Hangul Syllables
771
- codePoint >= 63744 && codePoint <= 64255 || // CJK Compatibility Ideographs
772
- codePoint >= 65040 && codePoint <= 65049 || // Vertical forms
773
- codePoint >= 65072 && codePoint <= 65135 || // CJK Compatibility Forms, Small Form Variants
774
- codePoint >= 65281 && codePoint <= 65376 || // Fullwidth Forms
775
- codePoint >= 65504 && codePoint <= 65510 || // Fullwidth Signs
776
- codePoint >= 110592 && codePoint <= 111359 || // Kana Supplement, Kana Extended-A, Small Kana Extension
777
- codePoint >= 126980 && codePoint <= 126980 || // Mahjong tile
778
- codePoint >= 127183 && codePoint <= 127183 || // Playing card
779
- codePoint >= 127232 && codePoint <= 129535 || // Enclosed Alphanumeric Supplement, Emoticons, Transport, etc.
780
- codePoint >= 129536 && codePoint <= 129647 || // Chess Symbols
781
- codePoint >= 129648 && codePoint <= 129791 || // Symbols and Pictographs Extended-A
782
- codePoint >= 131072 && codePoint <= 196605 || // CJK Unified Ideographs Extension B–G, CJK Compatibility Supplement
783
- codePoint >= 196608 && codePoint <= 262141) {
784
- return 2;
785
- }
786
- return 1;
787
- }
788
-
789
610
  // src/ui/markdown.tsx
790
611
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
791
612
  function MarkdownViewInner({ text }) {
@@ -1167,6 +988,7 @@ import { useRef as useRef3 } from "react";
1167
988
  import { Fragment as Fragment2, jsx as jsx3, jsxs as jsxs2 } from "react/jsx-runtime";
1168
989
  function TaskStatusLine({ block, interactive }) {
1169
990
  const running = block.state === "running";
991
+ const { stdout } = useStdout();
1170
992
  const foreground = interactive && (block.activity === "model" || block.task?.role === "main");
1171
993
  const [ref, time] = useAnimationFrame(running && foreground ? 120 : null);
1172
994
  const startedAt = useRef3(void 0);
@@ -1176,7 +998,7 @@ function TaskStatusLine({ block, interactive }) {
1176
998
  previousState.current = block.state;
1177
999
  const elapsed = block.startedAt === void 0 ? startedAt.current === void 0 ? 0 : Math.max(0, time - startedAt.current) : Math.max(0, Date.now() - block.startedAt);
1178
1000
  const presentation = statusPresentation(block, elapsed, foreground);
1179
- const { statusLabel, statusColor, text } = presentation;
1001
+ const { metaColor, metaLabel, statusLabel, statusColor, text } = presentation;
1180
1002
  let before = text;
1181
1003
  let after = "";
1182
1004
  if (statusLabel !== void 0) {
@@ -1187,21 +1009,51 @@ function TaskStatusLine({ block, interactive }) {
1187
1009
  before = before.slice(0, idx);
1188
1010
  }
1189
1011
  }
1190
- return /* @__PURE__ */ jsxs2(Box_default, { ref, flexDirection: "row", children: [
1191
- /* @__PURE__ */ jsxs2(Text, { ...presentation.color === void 0 ? {} : { color: presentation.color }, children: [
1192
- presentation.glyph,
1193
- " "
1012
+ const thinking = block.thinkingText;
1013
+ const thinkingVisible = running && block.activity === "model" && thinking !== void 0 && thinking.length > 0;
1014
+ const thinkingScroll = useRef3({ start: 0, lastTime: time });
1015
+ if (!thinkingVisible) {
1016
+ thinkingScroll.current = { start: 0, lastTime: time };
1017
+ }
1018
+ const thinkingLine = thinkingVisible ? (() => {
1019
+ const previous = thinkingScroll.current;
1020
+ const state = thinkingWindow(thinking, previous.start, {
1021
+ width: Math.max(8, (stdout.columns ?? 80) - 8),
1022
+ dtMs: time - previous.lastTime
1023
+ });
1024
+ thinkingScroll.current = { start: state.start, lastTime: time };
1025
+ return state.text;
1026
+ })() : void 0;
1027
+ return /* @__PURE__ */ jsxs2(Box_default, { flexDirection: "column", children: [
1028
+ /* @__PURE__ */ jsxs2(Box_default, { ref, flexDirection: "row", children: [
1029
+ /* @__PURE__ */ jsxs2(Text, { ...presentation.color === void 0 ? {} : { color: presentation.color }, children: [
1030
+ presentation.glyph,
1031
+ " "
1032
+ ] }),
1033
+ presentation.badge ? /* @__PURE__ */ jsxs2(Text, { color: presentation.badgeColor, children: [
1034
+ presentation.badge,
1035
+ " "
1036
+ ] }) : null,
1037
+ /* @__PURE__ */ jsx3(Text, { ...presentation.color === void 0 ? {} : { color: presentation.color }, children: before }),
1038
+ statusLabel !== void 0 ? /* @__PURE__ */ jsxs2(Fragment2, { children: [
1039
+ /* @__PURE__ */ jsx3(Text, { ...presentation.color === void 0 ? {} : { color: presentation.color }, children: " \xB7 " }),
1040
+ /* @__PURE__ */ jsx3(Text, { color: statusColor ?? presentation.color, children: statusLabel })
1041
+ ] }) : null,
1042
+ after ? /* @__PURE__ */ jsx3(Text, { ...presentation.color === void 0 ? {} : { color: presentation.color }, children: after }) : null,
1043
+ metaLabel === void 0 ? null : /* @__PURE__ */ jsxs2(Text, { color: metaColor ?? "ansi:blackBright", children: [
1044
+ " ",
1045
+ metaLabel
1046
+ ] })
1194
1047
  ] }),
1195
- presentation.badge ? /* @__PURE__ */ jsxs2(Text, { color: presentation.badgeColor, children: [
1196
- presentation.badge,
1197
- " "
1198
- ] }) : null,
1199
- /* @__PURE__ */ jsx3(Text, { ...presentation.color === void 0 ? {} : { color: presentation.color }, children: before }),
1200
- statusLabel !== void 0 ? /* @__PURE__ */ jsxs2(Fragment2, { children: [
1201
- /* @__PURE__ */ jsx3(Text, { ...presentation.color === void 0 ? {} : { color: presentation.color }, children: " \xB7 " }),
1202
- /* @__PURE__ */ jsx3(Text, { color: statusColor ?? presentation.color, children: statusLabel })
1203
- ] }) : null,
1204
- after ? /* @__PURE__ */ jsx3(Text, { ...presentation.color === void 0 ? {} : { color: presentation.color }, children: after }) : null
1048
+ thinkingLine === void 0 ? null : /* @__PURE__ */ jsx3(ThinkingLineView, { text: thinkingLine })
1049
+ ] });
1050
+ }
1051
+ var THINKING_RAIL = "#416f84";
1052
+ var THINKING_TEXT = "#91a0a8";
1053
+ function ThinkingLineView({ text }) {
1054
+ return /* @__PURE__ */ jsxs2(Box_default, { flexDirection: "row", children: [
1055
+ /* @__PURE__ */ jsx3(Text, { color: THINKING_RAIL, children: "\u2502 " }),
1056
+ /* @__PURE__ */ jsx3(Text, { color: THINKING_TEXT, wrap: "truncate-end", children: text })
1205
1057
  ] });
1206
1058
  }
1207
1059
  function TaskProgressPanel({
@@ -1896,8 +1748,10 @@ function App({ workspace, home, resumeSession, instanceId, palAlias }) {
1896
1748
  const closing = useRef4(false);
1897
1749
  const clipboardBusy = useRef4(false);
1898
1750
  const textBuf = useRef4({ pending: "", timer: null });
1751
+ const thinkingBuf = useRef4({ pending: "", timer: null });
1899
1752
  useTerminalTitle("Flavor Code");
1900
1753
  const flushText = () => {
1754
+ flushThinking();
1901
1755
  const t = textBuf.current;
1902
1756
  if (t.timer !== null) {
1903
1757
  clearTimeout(t.timer);
@@ -1908,6 +1762,21 @@ function App({ workspace, home, resumeSession, instanceId, palAlias }) {
1908
1762
  t.pending = "";
1909
1763
  }
1910
1764
  };
1765
+ const flushThinking = () => {
1766
+ const t = thinkingBuf.current;
1767
+ if (t.timer !== null) {
1768
+ clearTimeout(t.timer);
1769
+ t.timer = null;
1770
+ }
1771
+ if (t.pending.length > 0) {
1772
+ dispatch({ type: "session", event: { type: "thinking", text: t.pending } });
1773
+ t.pending = "";
1774
+ }
1775
+ };
1776
+ const flushStreamBuffers = () => {
1777
+ flushThinking();
1778
+ flushText();
1779
+ };
1911
1780
  const shutdown = async (active) => {
1912
1781
  if (closing.current) return;
1913
1782
  closing.current = true;
@@ -1934,7 +1803,7 @@ function App({ workspace, home, resumeSession, instanceId, palAlias }) {
1934
1803
  return;
1935
1804
  }
1936
1805
  if (event.type === "clear") {
1937
- flushText();
1806
+ flushStreamBuffers();
1938
1807
  dispatch({ type: "clear" });
1939
1808
  return;
1940
1809
  }
@@ -1944,7 +1813,13 @@ function App({ workspace, home, resumeSession, instanceId, palAlias }) {
1944
1813
  if (t.timer === null) t.timer = setTimeout(flushText, FLUSH_MS);
1945
1814
  return;
1946
1815
  }
1947
- flushText();
1816
+ if (event.type === "thinking") {
1817
+ const t = thinkingBuf.current;
1818
+ t.pending += event.text;
1819
+ if (t.timer === null) t.timer = setTimeout(flushThinking, FLUSH_MS);
1820
+ return;
1821
+ }
1822
+ flushStreamBuffers();
1948
1823
  dispatch({ type: "session", event });
1949
1824
  };
1950
1825
  void createProductionRuntime(appRuntimeOptions({
@@ -28,16 +28,14 @@ function statusPresentation(block, elapsedMs, interactive) {
28
28
  if (block.state === "running" && block.activity === "model") {
29
29
  return interactive ? {
30
30
  glyph: activityFrame(elapsedMs),
31
- text: `Flavoring\u2026 (${formatElapsed(elapsedMs)} \xB7 thinking)`,
31
+ text: "Flavoring",
32
32
  color: "#81c8f2",
33
- statusLabel: "thinking",
34
- statusColor: "ansi:blackBright"
33
+ metaLabel: formatElapsed(elapsedMs),
34
+ metaColor: "ansi:blackBright"
35
35
  } : {
36
36
  glyph: "\xB7",
37
- text: "Flavoring \xB7 thinking",
38
- color: "#81c8f2",
39
- statusLabel: "thinking",
40
- statusColor: "ansi:blackBright"
37
+ text: "Flavoring",
38
+ color: "#81c8f2"
41
39
  };
42
40
  }
43
41
  if (block.state === "running" && block.task !== void 0) {
@@ -4,7 +4,7 @@ import {
4
4
  message,
5
5
  redactErrorText,
6
6
  redactSecrets
7
- } from "./chunk-IGFN2DM5.js";
7
+ } from "./chunk-QC5OYQTB.js";
8
8
 
9
9
  // src/rpc/server.ts
10
10
  import { createInterface } from "readline";
@@ -33,6 +33,13 @@ var ProviderConfigSchema = z.object({
33
33
  cheapModel: z.string().min(1).optional(),
34
34
  models: z.array(z.string().min(1)).max(100).optional(),
35
35
  maxOutputTokens: z.number().int().positive().optional(),
36
+ // Extended-thinking budget in output tokens for the Anthropic protocol.
37
+ // Defaults to DEFAULT_THINKING_BUDGET; set to 0 to disable the request
38
+ // parameter. Provider thinking deltas are forwarded whenever they arrive.
39
+ thinkingBudget: z.number().int().min(0).optional(),
40
+ // Reasoning effort requested from the OpenAI Responses protocol. Omitted by
41
+ // default so strict compatible gateways never see an unknown parameter.
42
+ thinkingEffort: z.enum(["low", "medium", "high"]).optional(),
36
43
  // Send the Claude Code client fingerprint (User-Agent/x-app) with Anthropic requests,
37
44
  // for gateways that restrict the Anthropic protocol to Claude clients.
38
45
  claudeClient: z.boolean().optional(),