@kenkaiiii/ggcoder 4.3.211 → 4.3.213

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.
Files changed (314) hide show
  1. package/README.md +5 -8
  2. package/dist/cli.d.ts +3 -1
  3. package/dist/cli.d.ts.map +1 -1
  4. package/dist/cli.js +112 -61
  5. package/dist/cli.js.map +1 -1
  6. package/dist/core/continue-replay-inventory.test.d.ts +2 -0
  7. package/dist/core/continue-replay-inventory.test.d.ts.map +1 -0
  8. package/dist/core/continue-replay-inventory.test.js +42 -0
  9. package/dist/core/continue-replay-inventory.test.js.map +1 -0
  10. package/dist/core/goal-controller.d.ts +2 -0
  11. package/dist/core/goal-controller.d.ts.map +1 -1
  12. package/dist/core/goal-controller.js +283 -24
  13. package/dist/core/goal-controller.js.map +1 -1
  14. package/dist/core/goal-controller.test.js +413 -16
  15. package/dist/core/goal-controller.test.js.map +1 -1
  16. package/dist/core/goal-lifecycle-smoke.test.js +48 -6
  17. package/dist/core/goal-lifecycle-smoke.test.js.map +1 -1
  18. package/dist/core/goal-prerequisites.d.ts +23 -0
  19. package/dist/core/goal-prerequisites.d.ts.map +1 -0
  20. package/dist/core/goal-prerequisites.js +114 -0
  21. package/dist/core/goal-prerequisites.js.map +1 -0
  22. package/dist/core/goal-prerequisites.test.d.ts +2 -0
  23. package/dist/core/goal-prerequisites.test.d.ts.map +1 -0
  24. package/dist/core/goal-prerequisites.test.js +118 -0
  25. package/dist/core/goal-prerequisites.test.js.map +1 -0
  26. package/dist/core/goal-references.d.ts +14 -0
  27. package/dist/core/goal-references.d.ts.map +1 -0
  28. package/dist/core/goal-references.js +153 -0
  29. package/dist/core/goal-references.js.map +1 -0
  30. package/dist/core/goal-references.test.d.ts +2 -0
  31. package/dist/core/goal-references.test.d.ts.map +1 -0
  32. package/dist/core/goal-references.test.js +77 -0
  33. package/dist/core/goal-references.test.js.map +1 -0
  34. package/dist/core/goal-store.d.ts +25 -0
  35. package/dist/core/goal-store.d.ts.map +1 -1
  36. package/dist/core/goal-store.js +161 -38
  37. package/dist/core/goal-store.js.map +1 -1
  38. package/dist/core/goal-store.test.js +33 -8
  39. package/dist/core/goal-store.test.js.map +1 -1
  40. package/dist/core/goal-verifier.d.ts.map +1 -1
  41. package/dist/core/goal-verifier.js +4 -1
  42. package/dist/core/goal-verifier.js.map +1 -1
  43. package/dist/core/goal-verifier.test.js +43 -0
  44. package/dist/core/goal-verifier.test.js.map +1 -1
  45. package/dist/core/goal-worker.d.ts +2 -0
  46. package/dist/core/goal-worker.d.ts.map +1 -1
  47. package/dist/core/goal-worker.js +33 -9
  48. package/dist/core/goal-worker.js.map +1 -1
  49. package/dist/core/goal-worker.test.js +49 -1
  50. package/dist/core/goal-worker.test.js.map +1 -1
  51. package/dist/core/prompt-commands.d.ts.map +1 -1
  52. package/dist/core/prompt-commands.js +28 -845
  53. package/dist/core/prompt-commands.js.map +1 -1
  54. package/dist/core/prompt-commands.test.js +40 -74
  55. package/dist/core/prompt-commands.test.js.map +1 -1
  56. package/dist/core/runtime-mode.d.ts +14 -0
  57. package/dist/core/runtime-mode.d.ts.map +1 -0
  58. package/dist/core/runtime-mode.js +10 -0
  59. package/dist/core/runtime-mode.js.map +1 -0
  60. package/dist/core/session-restore-display.test.d.ts +2 -0
  61. package/dist/core/session-restore-display.test.d.ts.map +1 -0
  62. package/dist/core/session-restore-display.test.js +100 -0
  63. package/dist/core/session-restore-display.test.js.map +1 -0
  64. package/dist/core/verify-commands.js +4 -4
  65. package/dist/core/verify-commands.js.map +1 -1
  66. package/dist/system-prompt.d.ts +2 -1
  67. package/dist/system-prompt.d.ts.map +1 -1
  68. package/dist/system-prompt.js +51 -37
  69. package/dist/system-prompt.js.map +1 -1
  70. package/dist/system-prompt.test.js +147 -40
  71. package/dist/system-prompt.test.js.map +1 -1
  72. package/dist/tools/bash.d.ts +3 -2
  73. package/dist/tools/bash.d.ts.map +1 -1
  74. package/dist/tools/bash.js +11 -4
  75. package/dist/tools/bash.js.map +1 -1
  76. package/dist/tools/edit.d.ts +5 -3
  77. package/dist/tools/edit.d.ts.map +1 -1
  78. package/dist/tools/edit.js +14 -4
  79. package/dist/tools/edit.js.map +1 -1
  80. package/dist/tools/edit.test.js +0 -10
  81. package/dist/tools/edit.test.js.map +1 -1
  82. package/dist/tools/goal-mode.test.d.ts +2 -0
  83. package/dist/tools/goal-mode.test.d.ts.map +1 -0
  84. package/dist/tools/goal-mode.test.js +121 -0
  85. package/dist/tools/goal-mode.test.js.map +1 -0
  86. package/dist/tools/goals.d.ts +15 -3
  87. package/dist/tools/goals.d.ts.map +1 -1
  88. package/dist/tools/goals.js +385 -35
  89. package/dist/tools/goals.js.map +1 -1
  90. package/dist/tools/goals.test.js +389 -6
  91. package/dist/tools/goals.test.js.map +1 -1
  92. package/dist/tools/index.d.ts +7 -10
  93. package/dist/tools/index.d.ts.map +1 -1
  94. package/dist/tools/index.js +6 -19
  95. package/dist/tools/index.js.map +1 -1
  96. package/dist/tools/plan-mode.test.js +34 -224
  97. package/dist/tools/plan-mode.test.js.map +1 -1
  98. package/dist/tools/prompt-hints.d.ts.map +1 -1
  99. package/dist/tools/prompt-hints.js +2 -6
  100. package/dist/tools/prompt-hints.js.map +1 -1
  101. package/dist/tools/subagent.d.ts +3 -2
  102. package/dist/tools/subagent.d.ts.map +1 -1
  103. package/dist/tools/subagent.js +4 -9
  104. package/dist/tools/subagent.js.map +1 -1
  105. package/dist/tools/write.d.ts +5 -3
  106. package/dist/tools/write.d.ts.map +1 -1
  107. package/dist/tools/write.js +14 -13
  108. package/dist/tools/write.js.map +1 -1
  109. package/dist/tools/write.test.js +0 -16
  110. package/dist/tools/write.test.js.map +1 -1
  111. package/dist/ui/App.d.ts +146 -30
  112. package/dist/ui/App.d.ts.map +1 -1
  113. package/dist/ui/App.js +1202 -910
  114. package/dist/ui/App.js.map +1 -1
  115. package/dist/ui/activity-phrases.d.ts.map +1 -1
  116. package/dist/ui/activity-phrases.js +0 -2
  117. package/dist/ui/activity-phrases.js.map +1 -1
  118. package/dist/ui/app-state-persistence.test.js +181 -13
  119. package/dist/ui/app-state-persistence.test.js.map +1 -1
  120. package/dist/ui/chat-layout-pinning.test.d.ts +2 -0
  121. package/dist/ui/chat-layout-pinning.test.d.ts.map +1 -0
  122. package/dist/ui/chat-layout-pinning.test.js +407 -0
  123. package/dist/ui/chat-layout-pinning.test.js.map +1 -0
  124. package/dist/ui/components/ActivityIndicator.d.ts +1 -2
  125. package/dist/ui/components/ActivityIndicator.d.ts.map +1 -1
  126. package/dist/ui/components/ActivityIndicator.js +63 -94
  127. package/dist/ui/components/ActivityIndicator.js.map +1 -1
  128. package/dist/ui/components/AssistantMessage.d.ts +6 -2
  129. package/dist/ui/components/AssistantMessage.d.ts.map +1 -1
  130. package/dist/ui/components/AssistantMessage.js +9 -4
  131. package/dist/ui/components/AssistantMessage.js.map +1 -1
  132. package/dist/ui/components/AssistantMessage.test.d.ts +2 -0
  133. package/dist/ui/components/AssistantMessage.test.d.ts.map +1 -0
  134. package/dist/ui/components/AssistantMessage.test.js +369 -0
  135. package/dist/ui/components/AssistantMessage.test.js.map +1 -0
  136. package/dist/ui/components/BackgroundTasksBar.d.ts +1 -3
  137. package/dist/ui/components/BackgroundTasksBar.d.ts.map +1 -1
  138. package/dist/ui/components/BackgroundTasksBar.js +2 -4
  139. package/dist/ui/components/BackgroundTasksBar.js.map +1 -1
  140. package/dist/ui/components/Banner.d.ts +1 -3
  141. package/dist/ui/components/Banner.d.ts.map +1 -1
  142. package/dist/ui/components/Banner.js +7 -3
  143. package/dist/ui/components/Banner.js.map +1 -1
  144. package/dist/ui/components/Footer.d.ts +26 -4
  145. package/dist/ui/components/Footer.d.ts.map +1 -1
  146. package/dist/ui/components/Footer.js +73 -21
  147. package/dist/ui/components/Footer.js.map +1 -1
  148. package/dist/ui/components/GoalOverlay.d.ts +28 -20
  149. package/dist/ui/components/GoalOverlay.d.ts.map +1 -1
  150. package/dist/ui/components/GoalOverlay.js +283 -253
  151. package/dist/ui/components/GoalOverlay.js.map +1 -1
  152. package/dist/ui/components/InputArea.d.ts +2 -6
  153. package/dist/ui/components/InputArea.d.ts.map +1 -1
  154. package/dist/ui/components/InputArea.js +40 -32
  155. package/dist/ui/components/InputArea.js.map +1 -1
  156. package/dist/ui/components/InputArea.test.js +11 -1
  157. package/dist/ui/components/InputArea.test.js.map +1 -1
  158. package/dist/ui/components/Markdown.d.ts +11 -11
  159. package/dist/ui/components/Markdown.d.ts.map +1 -1
  160. package/dist/ui/components/Markdown.js +25 -198
  161. package/dist/ui/components/Markdown.js.map +1 -1
  162. package/dist/ui/components/PlanOverlay.d.ts.map +1 -1
  163. package/dist/ui/components/PlanOverlay.js +1 -1
  164. package/dist/ui/components/PlanOverlay.js.map +1 -1
  165. package/dist/ui/components/ServerToolExecution.d.ts.map +1 -1
  166. package/dist/ui/components/ServerToolExecution.js +3 -2
  167. package/dist/ui/components/ServerToolExecution.js.map +1 -1
  168. package/dist/ui/components/SlashCommandMenu.d.ts +4 -3
  169. package/dist/ui/components/SlashCommandMenu.d.ts.map +1 -1
  170. package/dist/ui/components/SlashCommandMenu.js +38 -26
  171. package/dist/ui/components/SlashCommandMenu.js.map +1 -1
  172. package/dist/ui/components/StreamingArea.d.ts +11 -2
  173. package/dist/ui/components/StreamingArea.d.ts.map +1 -1
  174. package/dist/ui/components/StreamingArea.js +20 -23
  175. package/dist/ui/components/StreamingArea.js.map +1 -1
  176. package/dist/ui/components/StreamingArea.test.d.ts +2 -0
  177. package/dist/ui/components/StreamingArea.test.d.ts.map +1 -0
  178. package/dist/ui/components/StreamingArea.test.js +18 -0
  179. package/dist/ui/components/StreamingArea.test.js.map +1 -0
  180. package/dist/ui/components/ToolExecution.d.ts.map +1 -1
  181. package/dist/ui/components/ToolExecution.js +11 -27
  182. package/dist/ui/components/ToolExecution.js.map +1 -1
  183. package/dist/ui/components/ToolGroupExecution.d.ts.map +1 -1
  184. package/dist/ui/components/ToolGroupExecution.js +9 -124
  185. package/dist/ui/components/ToolGroupExecution.js.map +1 -1
  186. package/dist/ui/components/UserMessage.d.ts.map +1 -1
  187. package/dist/ui/components/UserMessage.js +15 -10
  188. package/dist/ui/components/UserMessage.js.map +1 -1
  189. package/dist/ui/components/UserMessage.test.d.ts +2 -0
  190. package/dist/ui/components/UserMessage.test.d.ts.map +1 -0
  191. package/dist/ui/components/UserMessage.test.js +39 -0
  192. package/dist/ui/components/UserMessage.test.js.map +1 -0
  193. package/dist/ui/footer-status-layout.test.js +21 -7
  194. package/dist/ui/footer-status-layout.test.js.map +1 -1
  195. package/dist/ui/goal-events.d.ts +8 -0
  196. package/dist/ui/goal-events.d.ts.map +1 -1
  197. package/dist/ui/goal-events.js +28 -8
  198. package/dist/ui/goal-events.js.map +1 -1
  199. package/dist/ui/goal-events.test.js +40 -2
  200. package/dist/ui/goal-events.test.js.map +1 -1
  201. package/dist/ui/goal-lifecycle-orchestration.test.js +127 -34
  202. package/dist/ui/goal-lifecycle-orchestration.test.js.map +1 -1
  203. package/dist/ui/goal-overlay.test.js +122 -44
  204. package/dist/ui/goal-overlay.test.js.map +1 -1
  205. package/dist/ui/goal-summary.d.ts +14 -0
  206. package/dist/ui/goal-summary.d.ts.map +1 -0
  207. package/dist/ui/goal-summary.js +194 -0
  208. package/dist/ui/goal-summary.js.map +1 -0
  209. package/dist/ui/hooks/useAgentLoop.d.ts +8 -2
  210. package/dist/ui/hooks/useAgentLoop.d.ts.map +1 -1
  211. package/dist/ui/hooks/useAgentLoop.js +20 -9
  212. package/dist/ui/hooks/useAgentLoop.js.map +1 -1
  213. package/dist/ui/hooks/useAgentLoop.test.d.ts +2 -0
  214. package/dist/ui/hooks/useAgentLoop.test.d.ts.map +1 -0
  215. package/dist/ui/hooks/useAgentLoop.test.js +8 -0
  216. package/dist/ui/hooks/useAgentLoop.test.js.map +1 -0
  217. package/dist/ui/hooks/useTerminalSize.d.ts +5 -9
  218. package/dist/ui/hooks/useTerminalSize.d.ts.map +1 -1
  219. package/dist/ui/hooks/useTerminalSize.js +9 -14
  220. package/dist/ui/hooks/useTerminalSize.js.map +1 -1
  221. package/dist/ui/live-item-flush.d.ts +2 -2
  222. package/dist/ui/live-item-flush.d.ts.map +1 -1
  223. package/dist/ui/live-item-flush.js +8 -4
  224. package/dist/ui/live-item-flush.js.map +1 -1
  225. package/dist/ui/long-prompt-regression-harness.test.d.ts +2 -0
  226. package/dist/ui/long-prompt-regression-harness.test.d.ts.map +1 -0
  227. package/dist/ui/long-prompt-regression-harness.test.js +195 -0
  228. package/dist/ui/long-prompt-regression-harness.test.js.map +1 -0
  229. package/dist/ui/plan-overlay.test.js +7 -29
  230. package/dist/ui/plan-overlay.test.js.map +1 -1
  231. package/dist/ui/queued-message.test.d.ts.map +1 -1
  232. package/dist/ui/queued-message.test.js +76 -14
  233. package/dist/ui/queued-message.test.js.map +1 -1
  234. package/dist/ui/render.d.ts +21 -24
  235. package/dist/ui/render.d.ts.map +1 -1
  236. package/dist/ui/render.js +46 -28
  237. package/dist/ui/render.js.map +1 -1
  238. package/dist/ui/render.test.d.ts +2 -0
  239. package/dist/ui/render.test.d.ts.map +1 -0
  240. package/dist/ui/render.test.js +16 -0
  241. package/dist/ui/render.test.js.map +1 -0
  242. package/dist/ui/scroll-stabilization.test.js +1 -1
  243. package/dist/ui/scroll-stabilization.test.js.map +1 -1
  244. package/dist/ui/slash-command-images.test.js +79 -4
  245. package/dist/ui/slash-command-images.test.js.map +1 -1
  246. package/dist/ui/terminal-history.d.ts +26 -0
  247. package/dist/ui/terminal-history.d.ts.map +1 -0
  248. package/dist/ui/terminal-history.js +910 -0
  249. package/dist/ui/terminal-history.js.map +1 -0
  250. package/dist/ui/terminal-history.test.d.ts +2 -0
  251. package/dist/ui/terminal-history.test.d.ts.map +1 -0
  252. package/dist/ui/terminal-history.test.js +314 -0
  253. package/dist/ui/terminal-history.test.js.map +1 -0
  254. package/dist/ui/tool-group-summary.d.ts +16 -0
  255. package/dist/ui/tool-group-summary.d.ts.map +1 -0
  256. package/dist/ui/tool-group-summary.js +123 -0
  257. package/dist/ui/tool-group-summary.js.map +1 -0
  258. package/dist/ui/tui-history-parity.test.d.ts +2 -0
  259. package/dist/ui/tui-history-parity.test.d.ts.map +1 -0
  260. package/dist/ui/tui-history-parity.test.js +243 -0
  261. package/dist/ui/tui-history-parity.test.js.map +1 -0
  262. package/dist/ui/utils/assistant-stream-split.d.ts +6 -0
  263. package/dist/ui/utils/assistant-stream-split.d.ts.map +1 -0
  264. package/dist/ui/utils/assistant-stream-split.js +37 -0
  265. package/dist/ui/utils/assistant-stream-split.js.map +1 -0
  266. package/dist/ui/utils/assistant-stream-split.test.d.ts +2 -0
  267. package/dist/ui/utils/assistant-stream-split.test.d.ts.map +1 -0
  268. package/dist/ui/utils/assistant-stream-split.test.js +58 -0
  269. package/dist/ui/utils/assistant-stream-split.test.js.map +1 -0
  270. package/dist/ui/utils/latex-to-unicode.d.ts +22 -0
  271. package/dist/ui/utils/latex-to-unicode.d.ts.map +1 -0
  272. package/dist/ui/utils/latex-to-unicode.js +538 -0
  273. package/dist/ui/utils/latex-to-unicode.js.map +1 -0
  274. package/dist/ui/utils/markdown-renderer.d.ts +20 -0
  275. package/dist/ui/utils/markdown-renderer.d.ts.map +1 -0
  276. package/dist/ui/utils/markdown-renderer.js +327 -0
  277. package/dist/ui/utils/markdown-renderer.js.map +1 -0
  278. package/dist/ui/utils/markdown-table.d.ts +9 -0
  279. package/dist/ui/utils/markdown-table.d.ts.map +1 -0
  280. package/dist/ui/utils/markdown-table.js +95 -0
  281. package/dist/ui/utils/markdown-table.js.map +1 -0
  282. package/dist/ui/utils/text-utils.d.ts +8 -0
  283. package/dist/ui/utils/text-utils.d.ts.map +1 -0
  284. package/dist/ui/utils/text-utils.js +16 -0
  285. package/dist/ui/utils/text-utils.js.map +1 -0
  286. package/dist/ui/utils/token-to-ansi.js +19 -9
  287. package/dist/ui/utils/token-to-ansi.js.map +1 -1
  288. package/dist/ui/utils/user-message-display.d.ts +7 -0
  289. package/dist/ui/utils/user-message-display.d.ts.map +1 -0
  290. package/dist/ui/utils/user-message-display.js +26 -0
  291. package/dist/ui/utils/user-message-display.js.map +1 -0
  292. package/dist/utils/format.js +0 -9
  293. package/dist/utils/format.js.map +1 -1
  294. package/package.json +9 -5
  295. package/dist/tools/enter-plan.d.ts +0 -8
  296. package/dist/tools/enter-plan.d.ts.map +0 -1
  297. package/dist/tools/enter-plan.js +0 -30
  298. package/dist/tools/enter-plan.js.map +0 -1
  299. package/dist/tools/exit-plan.d.ts +0 -8
  300. package/dist/tools/exit-plan.d.ts.map +0 -1
  301. package/dist/tools/exit-plan.js +0 -36
  302. package/dist/tools/exit-plan.js.map +0 -1
  303. package/dist/tools/tasks.d.ts +0 -16
  304. package/dist/tools/tasks.d.ts.map +0 -1
  305. package/dist/tools/tasks.js +0 -133
  306. package/dist/tools/tasks.js.map +0 -1
  307. package/dist/ui/components/EyesOverlay.d.ts +0 -10
  308. package/dist/ui/components/EyesOverlay.d.ts.map +0 -1
  309. package/dist/ui/components/EyesOverlay.js +0 -220
  310. package/dist/ui/components/EyesOverlay.js.map +0 -1
  311. package/dist/ui/components/TaskOverlay.d.ts +0 -10
  312. package/dist/ui/components/TaskOverlay.d.ts.map +0 -1
  313. package/dist/ui/components/TaskOverlay.js +0 -267
  314. package/dist/ui/components/TaskOverlay.js.map +0 -1
@@ -0,0 +1,369 @@
1
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import React from "react";
3
+ import { Box, render, renderToString } from "ink";
4
+ import { describe, expect, it } from "vitest";
5
+ import stringWidth from "string-width";
6
+ import stripAnsi from "strip-ansi";
7
+ import { AssistantMessage } from "./AssistantMessage.js";
8
+ import { StreamingArea } from "./StreamingArea.js";
9
+ import { ToolExecution } from "./ToolExecution.js";
10
+ import { ToolGroupExecution } from "./ToolGroupExecution.js";
11
+ import { ServerToolExecution } from "./ServerToolExecution.js";
12
+ import { TerminalSizeProvider } from "../hooks/useTerminalSize.js";
13
+ import { createTerminalHistoryPrinter, serializeCompletedItemToTerminalHistory, } from "../terminal-history.js";
14
+ import { loadTheme } from "../theme/theme.js";
15
+ import { pinStreamingTextBeforeToolBoundary, shouldTopSpaceAssistantAfterToolBoundary, shouldTopSpaceStreamingAssistant, } from "../App.js";
16
+ const TERMINAL_COLUMNS = 68;
17
+ const LONG_STREAMING_TEXT = "Here’s some longer random chat text: a tiny story, carefully comparing cloud-flavored notes whether terminal UIs should shimmer, putting a few safe read-only tool calls: listed components, listed functions, listed packages/tests, and checked content width.";
18
+ const LONG_TOOL_QUERY = "explain how terminal tool execution rows wrap when the query contains lots of descriptive words and keeps going past one physical line";
19
+ const LONG_BASH_OUTPUT = "Exit code: 0\n" +
20
+ [
21
+ "first output row with enough content to require wrapping and truncation inside the response gutter",
22
+ "second output row with similarly verbose content for validating bounded width behavior",
23
+ "third output row that is intentionally wordy and should still remain readable",
24
+ "fourth output row to hit the maximum preview count",
25
+ "fifth output row should be hidden behind the overflow summary",
26
+ ].join("\n");
27
+ const LONG_TABLE_TEXT = "| Area | Details | Status |\n" +
28
+ "| --- | --- | --- |\n" +
29
+ "| Dashboard | Provides a centralized Next.js dashboard with live account statuses, automation activity, error logs, and engagement metrics. | Ready |\n" +
30
+ "| Recovery | Captures long verifier failure summaries without letting table borders overflow terminal width. | Needs review |";
31
+ const MIXED_MARKDOWN_TEXT = "# Heading **one**\n\n" +
32
+ "Regular *italic* and `code` with https://example.com/docs.\n" +
33
+ "- First **item**\n" +
34
+ " 1. Nested-ish item\n\n" +
35
+ LONG_TABLE_TEXT +
36
+ "\n\n```ts\nconst answer = 42;\nconsole.log(answer);\n```";
37
+ function linesOf(text) {
38
+ return stripAnsi(text)
39
+ .split("\n")
40
+ .filter((line) => line.length > 0);
41
+ }
42
+ function renderWithTerminal(element) {
43
+ const originalColumns = process.stdout.columns;
44
+ const originalRows = process.stdout.rows;
45
+ process.stdout.columns = TERMINAL_COLUMNS;
46
+ process.stdout.rows = 20;
47
+ try {
48
+ return linesOf(renderToString(_jsx(TerminalSizeProvider, { children: element }), {
49
+ columns: TERMINAL_COLUMNS,
50
+ }));
51
+ }
52
+ finally {
53
+ process.stdout.columns = originalColumns;
54
+ process.stdout.rows = originalRows;
55
+ }
56
+ }
57
+ function renderAssistantFrame(streaming, text = LONG_STREAMING_TEXT) {
58
+ return renderWithTerminal(_jsx(AssistantMessage, { text: text, streaming: streaming }));
59
+ }
60
+ function renderTerminalHistoryAssistantFrame(text = LONG_STREAMING_TEXT) {
61
+ return linesOf(serializeCompletedItemToTerminalHistory({ kind: "assistant", text, id: "assistant-1" }, {
62
+ theme: loadTheme("dark"),
63
+ columns: TERMINAL_COLUMNS,
64
+ version: "test",
65
+ model: "test-model",
66
+ provider: "anthropic",
67
+ cwd: "/tmp/test",
68
+ }));
69
+ }
70
+ async function renderInteractiveStreamingFrame() {
71
+ const chunks = [];
72
+ const stdout = {
73
+ columns: TERMINAL_COLUMNS,
74
+ rows: 20,
75
+ write(chunk) {
76
+ chunks.push(chunk);
77
+ return true;
78
+ },
79
+ on() { },
80
+ off() { },
81
+ };
82
+ const instance = render(_jsx(TerminalSizeProvider, { children: _jsx(StreamingArea, { isRunning: true, streamingText: LONG_STREAMING_TEXT, streamingThinking: "", availableTerminalHeight: 12 }) }), {
83
+ stdout,
84
+ columns: TERMINAL_COLUMNS,
85
+ rows: 20,
86
+ interactive: false,
87
+ patchConsole: false,
88
+ });
89
+ await instance.waitUntilRenderFlush();
90
+ instance.unmount();
91
+ await instance.waitUntilExit();
92
+ return linesOf(chunks.join(""));
93
+ }
94
+ async function renderInteractiveElementFrame(element) {
95
+ const chunks = [];
96
+ const stdout = {
97
+ columns: TERMINAL_COLUMNS,
98
+ rows: 20,
99
+ isTTY: false,
100
+ write(chunk) {
101
+ chunks.push(chunk);
102
+ return true;
103
+ },
104
+ on() { },
105
+ off() { },
106
+ };
107
+ const instance = render(_jsx(TerminalSizeProvider, { children: element }), {
108
+ stdout,
109
+ columns: TERMINAL_COLUMNS,
110
+ rows: 20,
111
+ interactive: false,
112
+ patchConsole: false,
113
+ });
114
+ await instance.waitUntilRenderFlush();
115
+ instance.unmount();
116
+ await instance.waitUntilExit();
117
+ return stripAnsi(chunks.join("")).replace(/\r/g, "\n");
118
+ }
119
+ async function renderPrintedHistoryThenLiveFrame(liveElement) {
120
+ const chunks = [];
121
+ const stdout = {
122
+ columns: TERMINAL_COLUMNS,
123
+ rows: 20,
124
+ isTTY: false,
125
+ write(chunk) {
126
+ chunks.push(chunk);
127
+ return true;
128
+ },
129
+ on() { },
130
+ off() { },
131
+ };
132
+ createTerminalHistoryPrinter({ stream: stdout }).print([
133
+ {
134
+ kind: "assistant",
135
+ id: "assistant-history-1",
136
+ text: "I’ll inspect the relevant UI renderer.",
137
+ },
138
+ ], {
139
+ theme: loadTheme("dark"),
140
+ columns: TERMINAL_COLUMNS,
141
+ version: "test",
142
+ model: "test-model",
143
+ provider: "anthropic",
144
+ cwd: "/tmp/test",
145
+ });
146
+ const instance = render(_jsx(TerminalSizeProvider, { children: liveElement }), {
147
+ stdout,
148
+ columns: TERMINAL_COLUMNS,
149
+ rows: 20,
150
+ interactive: false,
151
+ patchConsole: false,
152
+ });
153
+ await instance.waitUntilRenderFlush();
154
+ instance.unmount();
155
+ await instance.waitUntilExit();
156
+ return stripAnsi(chunks.join("")).replace(/\r/g, "\n");
157
+ }
158
+ async function renderFlushedToolThenAssistantFrame({ historyState = "committed", mode = "streaming", } = {}) {
159
+ const chunks = [];
160
+ const stdout = {
161
+ columns: TERMINAL_COLUMNS,
162
+ rows: 20,
163
+ isTTY: false,
164
+ write(chunk) {
165
+ chunks.push(chunk);
166
+ return true;
167
+ },
168
+ on() { },
169
+ off() { },
170
+ };
171
+ const historyItem = {
172
+ kind: "tool_group",
173
+ id: "tool-group-1",
174
+ tools: [
175
+ {
176
+ toolCallId: "read-1",
177
+ name: "read",
178
+ args: { file_path: "src/a.ts" },
179
+ status: "done",
180
+ result: "ok",
181
+ },
182
+ ],
183
+ };
184
+ const streamingText = "Next I’ll inspect the terminal history serialized output.";
185
+ createTerminalHistoryPrinter({ stream: stdout }).print([historyItem], {
186
+ theme: loadTheme("dark"),
187
+ columns: TERMINAL_COLUMNS,
188
+ version: "test",
189
+ model: "test-model",
190
+ provider: "anthropic",
191
+ cwd: "/tmp/test",
192
+ });
193
+ const marginTop = mode === "streaming"
194
+ ? shouldTopSpaceStreamingAssistant({
195
+ visibleStreamingText: streamingText,
196
+ lastPendingHistoryItem: historyState === "pending" ? historyItem : undefined,
197
+ lastHistoryItem: historyState === "committed" ? historyItem : undefined,
198
+ })
199
+ : shouldTopSpaceAssistantAfterToolBoundary({
200
+ text: streamingText,
201
+ lastPendingHistoryItem: historyState === "pending" ? historyItem : undefined,
202
+ lastHistoryItem: historyState === "committed" ? historyItem : undefined,
203
+ });
204
+ const instance = render(_jsx(TerminalSizeProvider, { children: mode === "streaming" ? (_jsx(StreamingArea, { isRunning: true, streamingText: streamingText, streamingThinking: "", availableTerminalHeight: 12, assistantMarginTop: marginTop ? 1 : 0 })) : (_jsx(AssistantMessage, { text: streamingText, marginTop: marginTop ? 1 : 0 })) }), {
205
+ stdout,
206
+ columns: TERMINAL_COLUMNS,
207
+ rows: 20,
208
+ interactive: false,
209
+ patchConsole: false,
210
+ });
211
+ await instance.waitUntilRenderFlush();
212
+ instance.unmount();
213
+ await instance.waitUntilExit();
214
+ return stripAnsi(chunks.join("")).replace(/\r/g, "\n");
215
+ }
216
+ describe("AssistantMessage live layout", () => {
217
+ it("renders continuation assistant rows without a response dot", () => {
218
+ const lines = renderWithTerminal(_jsx(AssistantMessage, { text: "continued line", streaming: true, continuation: true }));
219
+ expect(lines[0]).toBe(" continued line");
220
+ });
221
+ it("caps rendered assistant rows to the available terminal height", () => {
222
+ const text = Array.from({ length: 20 }, (_, index) => `line ${index + 1}`).join("\n");
223
+ const lines = renderWithTerminal(_jsx(AssistantMessage, { text: text, streaming: true, availableTerminalHeight: 5 }));
224
+ expect(lines.length).toBeLessThanOrEqual(5);
225
+ });
226
+ it("renders the streaming frame with the same line structure as finalized history", () => {
227
+ const streamingLines = renderAssistantFrame(true);
228
+ const finalLines = renderAssistantFrame(false);
229
+ const historyLines = renderTerminalHistoryAssistantFrame();
230
+ expect(streamingLines).toEqual(finalLines);
231
+ expect(streamingLines).toEqual(historyLines);
232
+ expect(streamingLines[0]?.startsWith(" ⏺ ")).toBe(true);
233
+ for (const continuationLine of streamingLines.slice(1)) {
234
+ expect(continuationLine.startsWith(" ")).toBe(true);
235
+ }
236
+ });
237
+ it("keeps streaming, completed, and terminal-history markdown rendering aligned", () => {
238
+ const cases = [
239
+ LONG_STREAMING_TEXT,
240
+ LONG_TABLE_TEXT,
241
+ MIXED_MARKDOWN_TEXT,
242
+ "Inline **bold**, *italic*, ~~strike~~, <u>under</u>, [docs](https://example.com), and `code`.",
243
+ "## List check\n- alpha **one**\n- beta `two`\n1. first\n2. second",
244
+ "```ts\nconst answer = 42;\nconsole.log(answer);\n```",
245
+ ];
246
+ for (const text of cases) {
247
+ const streamingLines = renderAssistantFrame(true, text);
248
+ const completedLines = renderAssistantFrame(false, text);
249
+ const historyLines = renderTerminalHistoryAssistantFrame(text);
250
+ expect(streamingLines, text).toEqual(completedLines);
251
+ expect(completedLines, text).toEqual(historyLines);
252
+ for (const line of streamingLines) {
253
+ expect(stringWidth(line), `${text}\n${line}`).toBeLessThanOrEqual(TERMINAL_COLUMNS);
254
+ }
255
+ }
256
+ });
257
+ it("keeps every streaming physical line within the terminal width", () => {
258
+ const lines = renderAssistantFrame(true);
259
+ expect(lines.length).toBeGreaterThan(1);
260
+ for (const line of lines) {
261
+ expect(stringWidth(line)).toBeLessThanOrEqual(TERMINAL_COLUMNS);
262
+ }
263
+ });
264
+ it("keeps rendered markdown tables inside the terminal width", () => {
265
+ const lines = renderWithTerminal(_jsx(AssistantMessage, { text: LONG_TABLE_TEXT, streaming: false }));
266
+ const tableLines = lines.filter((line) => /[┌┬┐│├┼┤└┴┘]/.test(line));
267
+ expect(tableLines.length).toBeGreaterThan(4);
268
+ for (const line of tableLines) {
269
+ expect(stringWidth(line)).toBeLessThanOrEqual(TERMINAL_COLUMNS);
270
+ }
271
+ });
272
+ it("keeps the interactive streaming frame inside the terminal width", async () => {
273
+ const lines = await renderInteractiveStreamingFrame();
274
+ expect(lines).toEqual(renderAssistantFrame(true));
275
+ for (const line of lines) {
276
+ expect(stringWidth(line)).toBeLessThanOrEqual(TERMINAL_COLUMNS);
277
+ }
278
+ });
279
+ it("keeps assistant text above the tool row when a tool starts after text streamed", async () => {
280
+ const assistantText = "I’ll inspect the renderer first.";
281
+ const pinnedItems = pinStreamingTextBeforeToolBoundary({
282
+ items: [],
283
+ visibleStreamingText: assistantText,
284
+ thinking: "",
285
+ thinkingMs: 0,
286
+ makeId: () => "assistant-pinned-1",
287
+ });
288
+ const frame = await renderInteractiveElementFrame(_jsxs(_Fragment, { children: [pinnedItems.map((item) => item.kind === "assistant" ? _jsx(AssistantMessage, { text: item.text }, item.id) : null), _jsx(ToolExecution, { status: "running", name: "read", args: { file_path: "src/ui/App.tsx" }, animateUntil: 0 })] }));
289
+ const assistantIndex = frame.indexOf(" ⏺ I’ll inspect the renderer first.");
290
+ const toolIndex = frame.indexOf(" ⏺ Reading…");
291
+ expect(assistantIndex).toBeGreaterThanOrEqual(0);
292
+ expect(toolIndex).toBeGreaterThanOrEqual(0);
293
+ expect(assistantIndex).toBeLessThan(toolIndex);
294
+ });
295
+ it("keeps a blank visual row between a flushed tool row and active streaming text", async () => {
296
+ const frame = await renderFlushedToolThenAssistantFrame({ historyState: "committed" });
297
+ const physicalLines = frame.split("\n");
298
+ expect(physicalLines).toContain(" ⏺ Read 1 file");
299
+ expect(physicalLines).toContain(" ⏺ Next I’ll inspect the terminal history serialized output.");
300
+ expect(frame).toContain(" ⏺ Read 1 file\n\n ⏺ Next I’ll inspect the terminal history serialized output.");
301
+ });
302
+ it("keeps that blank row while the flushed tool row is pending history state commit", async () => {
303
+ const frame = await renderFlushedToolThenAssistantFrame({ historyState: "pending" });
304
+ const physicalLines = frame.split("\n");
305
+ expect(physicalLines).toContain(" ⏺ Read 1 file");
306
+ expect(physicalLines).toContain(" ⏺ Next I’ll inspect the terminal history serialized output.");
307
+ expect(frame).toContain(" ⏺ Read 1 file\n\n ⏺ Next I’ll inspect the terminal history serialized output.");
308
+ });
309
+ it("keeps that blank row for a completed live assistant row pending history state commit", async () => {
310
+ const frame = await renderFlushedToolThenAssistantFrame({
311
+ historyState: "pending",
312
+ mode: "completed",
313
+ });
314
+ const physicalLines = frame.split("\n");
315
+ expect(physicalLines).toContain(" ⏺ Read 1 file");
316
+ expect(physicalLines).toContain(" ⏺ Next I’ll inspect the terminal history serialized output.");
317
+ expect(frame).toContain(" ⏺ Read 1 file\n\n ⏺ Next I’ll inspect the terminal history serialized output.");
318
+ });
319
+ it("keeps a blank visual row between printed history and compact active tool rows", async () => {
320
+ const frame = await renderPrintedHistoryThenLiveFrame(_jsx(Box, { marginTop: 1, flexDirection: "column", children: _jsx(ToolExecution, { status: "running", name: "read", args: { file_path: "src/a.ts" }, animateUntil: 0 }) }));
321
+ expect(frame).toContain(" ⏺ I’ll inspect the relevant UI renderer.\n\n ⏺ Reading…");
322
+ });
323
+ it("keeps a blank visual row between printed history and active tool groups", async () => {
324
+ const frame = await renderPrintedHistoryThenLiveFrame(_jsx(Box, { marginTop: 1, flexDirection: "column", children: _jsx(ToolGroupExecution, { tools: [
325
+ {
326
+ toolCallId: "read-1",
327
+ name: "read",
328
+ args: { file_path: "src/a.ts" },
329
+ status: "done",
330
+ result: "ok",
331
+ },
332
+ ] }) }));
333
+ expect(frame).toContain(" ⏺ I’ll inspect the relevant UI renderer.\n\n ⏺ Read 1 file");
334
+ });
335
+ it("keeps a blank visual row between printed history and bash progress rows", async () => {
336
+ const frame = await renderPrintedHistoryThenLiveFrame(_jsx(Box, { marginTop: 1, flexDirection: "column", children: _jsx(ToolExecution, { status: "running", name: "bash", args: { command: "echo hi" }, progressOutput: "hello\\nworld", animateUntil: 0 }) }));
337
+ expect(frame).toContain(" ⏺ I’ll inspect the relevant UI renderer.\n\n ⏺ · Bash(echo hi)");
338
+ });
339
+ it("does not add a second blank row before tool rows that already self-space", async () => {
340
+ const frame = await renderPrintedHistoryThenLiveFrame(_jsx(ToolExecution, { status: "running", name: "bash", args: { command: "echo hi" }, animateUntil: 0 }));
341
+ expect(frame).toContain(" ⏺ I’ll inspect the relevant UI renderer.\n\n ⏺ · Bash(echo hi)");
342
+ expect(frame).not.toContain("renderer.\n\n\n ⏺ · Bash(echo hi)");
343
+ });
344
+ it("wraps long web_search tool headers and summaries inside the terminal width", () => {
345
+ const lines = renderWithTerminal(_jsx(ToolExecution, { status: "done", name: "web_search", args: { query: LONG_TOOL_QUERY }, result: "1. First result\n2. Second result\n3. Third result", isError: false }));
346
+ expect(lines.some((line) => line.includes("Web Search"))).toBe(true);
347
+ expect(lines.some((line) => line.includes("3 results"))).toBe(true);
348
+ for (const line of lines) {
349
+ expect(stringWidth(line)).toBeLessThanOrEqual(TERMINAL_COLUMNS);
350
+ }
351
+ });
352
+ it("keeps verbose bash tool output previews inside the terminal width", () => {
353
+ const lines = renderWithTerminal(_jsx(ToolExecution, { status: "done", name: "bash", args: { command: "printf lots-of-output" }, result: LONG_BASH_OUTPUT, isError: false }));
354
+ expect(lines.some((line) => line.includes("Bash"))).toBe(true);
355
+ expect(lines.some((line) => line.includes("… +1 lines"))).toBe(true);
356
+ for (const line of lines) {
357
+ expect(stringWidth(line)).toBeLessThanOrEqual(TERMINAL_COLUMNS);
358
+ }
359
+ });
360
+ it("wraps long server-tool execution rows inside the terminal width", () => {
361
+ const lines = renderWithTerminal(_jsx(ServerToolExecution, { status: "done", name: "web_search", input: { query: LONG_TOOL_QUERY }, resultType: "search_result", durationMs: 2400 }));
362
+ expect(lines.some((line) => line.includes("Web Search"))).toBe(true);
363
+ expect(lines.some((line) => line.includes("Did 1 search in 2s"))).toBe(true);
364
+ for (const line of lines) {
365
+ expect(stringWidth(line)).toBeLessThanOrEqual(TERMINAL_COLUMNS);
366
+ }
367
+ });
368
+ });
369
+ //# sourceMappingURL=AssistantMessage.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AssistantMessage.test.js","sourceRoot":"","sources":["../../../src/ui/components/AssistantMessage.test.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,KAAK,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,WAAW,MAAM,cAAc,CAAC;AACvC,OAAO,SAAS,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EACL,4BAA4B,EAC5B,uCAAuC,GACxC,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EACL,kCAAkC,EAClC,wCAAwC,EACxC,gCAAgC,GACjC,MAAM,WAAW,CAAC;AAEnB,MAAM,gBAAgB,GAAG,EAAE,CAAC;AAC5B,MAAM,mBAAmB,GACvB,kQAAkQ,CAAC;AACrQ,MAAM,eAAe,GACnB,wIAAwI,CAAC;AAC3I,MAAM,gBAAgB,GACpB,gBAAgB;IAChB;QACE,oGAAoG;QACpG,wFAAwF;QACxF,+EAA+E;QAC/E,oDAAoD;QACpD,+DAA+D;KAChE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,MAAM,eAAe,GACnB,+BAA+B;IAC/B,uBAAuB;IACvB,yJAAyJ;IACzJ,+HAA+H,CAAC;AAClI,MAAM,mBAAmB,GACvB,uBAAuB;IACvB,8DAA8D;IAC9D,oBAAoB;IACpB,0BAA0B;IAC1B,eAAe;IACf,0DAA0D,CAAC;AAE7D,SAAS,OAAO,CAAC,IAAY;IAC3B,OAAO,SAAS,CAAC,IAAI,CAAC;SACnB,KAAK,CAAC,IAAI,CAAC;SACX,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACvC,CAAC;AAED,SAAS,kBAAkB,CAAC,OAA2B;IACrD,MAAM,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC;IAC/C,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;IACzC,OAAO,CAAC,MAAM,CAAC,OAAO,GAAG,gBAAgB,CAAC;IAC1C,OAAO,CAAC,MAAM,CAAC,IAAI,GAAG,EAAE,CAAC;IACzB,IAAI,CAAC;QACH,OAAO,OAAO,CACZ,cAAc,CAAC,KAAC,oBAAoB,cAAE,OAAO,GAAwB,EAAE;YACrE,OAAO,EAAE,gBAAgB;SAC1B,CAAC,CACH,CAAC;IACJ,CAAC;YAAS,CAAC;QACT,OAAO,CAAC,MAAM,CAAC,OAAO,GAAG,eAAe,CAAC;QACzC,OAAO,CAAC,MAAM,CAAC,IAAI,GAAG,YAAY,CAAC;IACrC,CAAC;AACH,CAAC;AAED,SAAS,oBAAoB,CAAC,SAAkB,EAAE,IAAI,GAAG,mBAAmB;IAC1E,OAAO,kBAAkB,CAAC,KAAC,gBAAgB,IAAC,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,GAAI,CAAC,CAAC;AACpF,CAAC;AAED,SAAS,mCAAmC,CAAC,IAAI,GAAG,mBAAmB;IACrE,OAAO,OAAO,CACZ,uCAAuC,CACrC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,EAAE,aAAa,EAAE,EAC9C;QACE,KAAK,EAAE,SAAS,CAAC,MAAM,CAAC;QACxB,OAAO,EAAE,gBAAgB;QACzB,OAAO,EAAE,MAAM;QACf,KAAK,EAAE,YAAY;QACnB,QAAQ,EAAE,WAAW;QACrB,GAAG,EAAE,WAAW;KACjB,CACF,CACF,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,+BAA+B;IAC5C,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,MAAM,MAAM,GAAG;QACb,OAAO,EAAE,gBAAgB;QACzB,IAAI,EAAE,EAAE;QACR,KAAK,CAAC,KAAa;YACjB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACnB,OAAO,IAAI,CAAC;QACd,CAAC;QACD,EAAE,KAAI,CAAC;QACP,GAAG,KAAI,CAAC;KACwB,CAAC;IACnC,MAAM,QAAQ,GAAG,MAAM,CACrB,KAAC,oBAAoB,cACnB,KAAC,aAAa,IACZ,SAAS,QACT,aAAa,EAAE,mBAAmB,EAClC,iBAAiB,EAAC,EAAE,EACpB,uBAAuB,EAAE,EAAE,GAC3B,GACmB,EACvB;QACE,MAAM;QACN,OAAO,EAAE,gBAAgB;QACzB,IAAI,EAAE,EAAE;QACR,WAAW,EAAE,KAAK;QAClB,YAAY,EAAE,KAAK;KACpB,CACF,CAAC;IACF,MAAM,QAAQ,CAAC,oBAAoB,EAAE,CAAC;IACtC,QAAQ,CAAC,OAAO,EAAE,CAAC;IACnB,MAAM,QAAQ,CAAC,aAAa,EAAE,CAAC;IAC/B,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;AAClC,CAAC;AAED,KAAK,UAAU,6BAA6B,CAAC,OAA2B;IACtE,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,MAAM,MAAM,GAAG;QACb,OAAO,EAAE,gBAAgB;QACzB,IAAI,EAAE,EAAE;QACR,KAAK,EAAE,KAAK;QACZ,KAAK,CAAC,KAAa;YACjB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACnB,OAAO,IAAI,CAAC;QACd,CAAC;QACD,EAAE,KAAI,CAAC;QACP,GAAG,KAAI,CAAC;KACwB,CAAC;IACnC,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAC,oBAAoB,cAAE,OAAO,GAAwB,EAAE;QAC9E,MAAM;QACN,OAAO,EAAE,gBAAgB;QACzB,IAAI,EAAE,EAAE;QACR,WAAW,EAAE,KAAK;QAClB,YAAY,EAAE,KAAK;KACpB,CAAC,CAAC;IACH,MAAM,QAAQ,CAAC,oBAAoB,EAAE,CAAC;IACtC,QAAQ,CAAC,OAAO,EAAE,CAAC;IACnB,MAAM,QAAQ,CAAC,aAAa,EAAE,CAAC;IAC/B,OAAO,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AACzD,CAAC;AAED,KAAK,UAAU,iCAAiC,CAAC,WAA+B;IAC9E,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,MAAM,MAAM,GAAG;QACb,OAAO,EAAE,gBAAgB;QACzB,IAAI,EAAE,EAAE;QACR,KAAK,EAAE,KAAK;QACZ,KAAK,CAAC,KAAa;YACjB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACnB,OAAO,IAAI,CAAC;QACd,CAAC;QACD,EAAE,KAAI,CAAC;QACP,GAAG,KAAI,CAAC;KACwB,CAAC;IACnC,4BAA4B,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,KAAK,CACpD;QACE;YACE,IAAI,EAAE,WAAW;YACjB,EAAE,EAAE,qBAAqB;YACzB,IAAI,EAAE,wCAAwC;SAC/C;KACF,EACD;QACE,KAAK,EAAE,SAAS,CAAC,MAAM,CAAC;QACxB,OAAO,EAAE,gBAAgB;QACzB,OAAO,EAAE,MAAM;QACf,KAAK,EAAE,YAAY;QACnB,QAAQ,EAAE,WAAW;QACrB,GAAG,EAAE,WAAW;KACjB,CACF,CAAC;IACF,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAC,oBAAoB,cAAE,WAAW,GAAwB,EAAE;QAClF,MAAM;QACN,OAAO,EAAE,gBAAgB;QACzB,IAAI,EAAE,EAAE;QACR,WAAW,EAAE,KAAK;QAClB,YAAY,EAAE,KAAK;KACpB,CAAC,CAAC;IACH,MAAM,QAAQ,CAAC,oBAAoB,EAAE,CAAC;IACtC,QAAQ,CAAC,OAAO,EAAE,CAAC;IACnB,MAAM,QAAQ,CAAC,aAAa,EAAE,CAAC;IAC/B,OAAO,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AACzD,CAAC;AAED,KAAK,UAAU,mCAAmC,CAAC,EACjD,YAAY,GAAG,WAAW,EAC1B,IAAI,GAAG,WAAW,MAIhB,EAAE;IACJ,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,MAAM,MAAM,GAAG;QACb,OAAO,EAAE,gBAAgB;QACzB,IAAI,EAAE,EAAE;QACR,KAAK,EAAE,KAAK;QACZ,KAAK,CAAC,KAAa;YACjB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACnB,OAAO,IAAI,CAAC;QACd,CAAC;QACD,EAAE,KAAI,CAAC;QACP,GAAG,KAAI,CAAC;KACwB,CAAC;IACnC,MAAM,WAAW,GAAG;QAClB,IAAI,EAAE,YAAqB;QAC3B,EAAE,EAAE,cAAc;QAClB,KAAK,EAAE;YACL;gBACE,UAAU,EAAE,QAAQ;gBACpB,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE;gBAC/B,MAAM,EAAE,MAAe;gBACvB,MAAM,EAAE,IAAI;aACb;SACF;KACF,CAAC;IACF,MAAM,aAAa,GAAG,2DAA2D,CAAC;IAElF,4BAA4B,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,EAAE;QACpE,KAAK,EAAE,SAAS,CAAC,MAAM,CAAC;QACxB,OAAO,EAAE,gBAAgB;QACzB,OAAO,EAAE,MAAM;QACf,KAAK,EAAE,YAAY;QACnB,QAAQ,EAAE,WAAW;QACrB,GAAG,EAAE,WAAW;KACjB,CAAC,CAAC;IAEH,MAAM,SAAS,GACb,IAAI,KAAK,WAAW;QAClB,CAAC,CAAC,gCAAgC,CAAC;YAC/B,oBAAoB,EAAE,aAAa;YACnC,sBAAsB,EAAE,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS;YAC5E,eAAe,EAAE,YAAY,KAAK,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS;SACxE,CAAC;QACJ,CAAC,CAAC,wCAAwC,CAAC;YACvC,IAAI,EAAE,aAAa;YACnB,sBAAsB,EAAE,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS;YAC5E,eAAe,EAAE,YAAY,KAAK,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS;SACxE,CAAC,CAAC;IAET,MAAM,QAAQ,GAAG,MAAM,CACrB,KAAC,oBAAoB,cAClB,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,CACtB,KAAC,aAAa,IACZ,SAAS,QACT,aAAa,EAAE,aAAa,EAC5B,iBAAiB,EAAC,EAAE,EACpB,uBAAuB,EAAE,EAAE,EAC3B,kBAAkB,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACrC,CACH,CAAC,CAAC,CAAC,CACF,KAAC,gBAAgB,IAAC,IAAI,EAAE,aAAa,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAI,CACxE,GACoB,EACvB;QACE,MAAM;QACN,OAAO,EAAE,gBAAgB;QACzB,IAAI,EAAE,EAAE;QACR,WAAW,EAAE,KAAK;QAClB,YAAY,EAAE,KAAK;KACpB,CACF,CAAC;IACF,MAAM,QAAQ,CAAC,oBAAoB,EAAE,CAAC;IACtC,QAAQ,CAAC,OAAO,EAAE,CAAC;IACnB,MAAM,QAAQ,CAAC,aAAa,EAAE,CAAC;IAC/B,OAAO,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AACzD,CAAC;AAED,QAAQ,CAAC,8BAA8B,EAAE,GAAG,EAAE;IAC5C,EAAE,CAAC,4DAA4D,EAAE,GAAG,EAAE;QACpE,MAAM,KAAK,GAAG,kBAAkB,CAC9B,KAAC,gBAAgB,IAAC,IAAI,EAAC,gBAAgB,EAAC,SAAS,QAAC,YAAY,SAAG,CAClE,CAAC;QAEF,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+DAA+D,EAAE,GAAG,EAAE;QACvE,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,QAAQ,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtF,MAAM,KAAK,GAAG,kBAAkB,CAC9B,KAAC,gBAAgB,IAAC,IAAI,EAAE,IAAI,EAAE,SAAS,QAAC,uBAAuB,EAAE,CAAC,GAAI,CACvE,CAAC;QAEF,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+EAA+E,EAAE,GAAG,EAAE;QACvF,MAAM,cAAc,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAC;QAClD,MAAM,UAAU,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC;QAC/C,MAAM,YAAY,GAAG,mCAAmC,EAAE,CAAC;QAE3D,MAAM,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAC3C,MAAM,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QAC7C,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxD,KAAK,MAAM,gBAAgB,IAAI,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;YACvD,MAAM,CAAC,gBAAgB,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxD,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6EAA6E,EAAE,GAAG,EAAE;QACrF,MAAM,KAAK,GAAG;YACZ,mBAAmB;YACnB,eAAe;YACf,mBAAmB;YACnB,+FAA+F;YAC/F,mEAAmE;YACnE,sDAAsD;SACvD,CAAC;QAEF,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,cAAc,GAAG,oBAAoB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACxD,MAAM,cAAc,GAAG,oBAAoB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;YACzD,MAAM,YAAY,GAAG,mCAAmC,CAAC,IAAI,CAAC,CAAC;YAE/D,MAAM,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;YACrD,MAAM,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;YACnD,KAAK,MAAM,IAAI,IAAI,cAAc,EAAE,CAAC;gBAClC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,KAAK,IAAI,EAAE,CAAC,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,CAAC;YACtF,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+DAA+D,EAAE,GAAG,EAAE;QACvE,MAAM,KAAK,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAC;QAEzC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QACxC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,CAAC;QAClE,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0DAA0D,EAAE,GAAG,EAAE;QAClE,MAAM,KAAK,GAAG,kBAAkB,CAAC,KAAC,gBAAgB,IAAC,IAAI,EAAE,eAAe,EAAE,SAAS,EAAE,KAAK,GAAI,CAAC,CAAC;QAChG,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAErE,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QAC7C,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;YAC9B,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,CAAC;QAClE,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iEAAiE,EAAE,KAAK,IAAI,EAAE;QAC/E,MAAM,KAAK,GAAG,MAAM,+BAA+B,EAAE,CAAC;QAEtD,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC;QAClD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,CAAC;QAClE,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gFAAgF,EAAE,KAAK,IAAI,EAAE;QAC9F,MAAM,aAAa,GAAG,kCAAkC,CAAC;QACzD,MAAM,WAAW,GAAG,kCAAkC,CAAC;YACrD,KAAK,EAAE,EAAE;YACT,oBAAoB,EAAE,aAAa;YACnC,QAAQ,EAAE,EAAE;YACZ,UAAU,EAAE,CAAC;YACb,MAAM,EAAE,GAAG,EAAE,CAAC,oBAAoB;SACnC,CAAC,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,6BAA6B,CAC/C,8BACG,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CACxB,IAAI,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,KAAC,gBAAgB,IAAe,IAAI,EAAE,IAAI,CAAC,IAAI,IAAxB,IAAI,CAAC,EAAE,CAAqB,CAAC,CAAC,CAAC,IAAI,CACvF,EACD,KAAC,aAAa,IACZ,MAAM,EAAC,SAAS,EAChB,IAAI,EAAC,MAAM,EACX,IAAI,EAAE,EAAE,SAAS,EAAE,gBAAgB,EAAE,EACrC,YAAY,EAAE,CAAC,GACf,IACD,CACJ,CAAC;QACF,MAAM,cAAc,GAAG,KAAK,CAAC,OAAO,CAAC,qCAAqC,CAAC,CAAC;QAC5E,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;QAE/C,MAAM,CAAC,cAAc,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;QACjD,MAAM,CAAC,SAAS,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;QAC5C,MAAM,CAAC,cAAc,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+EAA+E,EAAE,KAAK,IAAI,EAAE;QAC7F,MAAM,KAAK,GAAG,MAAM,mCAAmC,CAAC,EAAE,YAAY,EAAE,WAAW,EAAE,CAAC,CAAC;QACvF,MAAM,aAAa,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAExC,MAAM,CAAC,aAAa,CAAC,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;QAClD,MAAM,CAAC,aAAa,CAAC,CAAC,SAAS,CAAC,8DAA8D,CAAC,CAAC;QAChG,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,CACrB,gFAAgF,CACjF,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iFAAiF,EAAE,KAAK,IAAI,EAAE;QAC/F,MAAM,KAAK,GAAG,MAAM,mCAAmC,CAAC,EAAE,YAAY,EAAE,SAAS,EAAE,CAAC,CAAC;QACrF,MAAM,aAAa,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAExC,MAAM,CAAC,aAAa,CAAC,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;QAClD,MAAM,CAAC,aAAa,CAAC,CAAC,SAAS,CAAC,8DAA8D,CAAC,CAAC;QAChG,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,CACrB,gFAAgF,CACjF,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sFAAsF,EAAE,KAAK,IAAI,EAAE;QACpG,MAAM,KAAK,GAAG,MAAM,mCAAmC,CAAC;YACtD,YAAY,EAAE,SAAS;YACvB,IAAI,EAAE,WAAW;SAClB,CAAC,CAAC;QACH,MAAM,aAAa,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAExC,MAAM,CAAC,aAAa,CAAC,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;QAClD,MAAM,CAAC,aAAa,CAAC,CAAC,SAAS,CAAC,8DAA8D,CAAC,CAAC;QAChG,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,CACrB,gFAAgF,CACjF,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+EAA+E,EAAE,KAAK,IAAI,EAAE;QAC7F,MAAM,KAAK,GAAG,MAAM,iCAAiC,CACnD,KAAC,GAAG,IAAC,SAAS,EAAE,CAAC,EAAE,aAAa,EAAC,QAAQ,YACvC,KAAC,aAAa,IACZ,MAAM,EAAC,SAAS,EAChB,IAAI,EAAC,MAAM,EACX,IAAI,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,EAC/B,YAAY,EAAE,CAAC,GACf,GACE,CACP,CAAC;QAEF,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,0DAA0D,CAAC,CAAC;IACtF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yEAAyE,EAAE,KAAK,IAAI,EAAE;QACvF,MAAM,KAAK,GAAG,MAAM,iCAAiC,CACnD,KAAC,GAAG,IAAC,SAAS,EAAE,CAAC,EAAE,aAAa,EAAC,QAAQ,YACvC,KAAC,kBAAkB,IACjB,KAAK,EAAE;oBACL;wBACE,UAAU,EAAE,QAAQ;wBACpB,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE;wBAC/B,MAAM,EAAE,MAAM;wBACd,MAAM,EAAE,IAAI;qBACb;iBACF,GACD,GACE,CACP,CAAC;QAEF,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,6DAA6D,CAAC,CAAC;IACzF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yEAAyE,EAAE,KAAK,IAAI,EAAE;QACvF,MAAM,KAAK,GAAG,MAAM,iCAAiC,CACnD,KAAC,GAAG,IAAC,SAAS,EAAE,CAAC,EAAE,aAAa,EAAC,QAAQ,YACvC,KAAC,aAAa,IACZ,MAAM,EAAC,SAAS,EAChB,IAAI,EAAC,MAAM,EACX,IAAI,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,EAC5B,cAAc,EAAC,eAAc,EAC7B,YAAY,EAAE,CAAC,GACf,GACE,CACP,CAAC;QAEF,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,iEAAiE,CAAC,CAAC;IAC7F,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0EAA0E,EAAE,KAAK,IAAI,EAAE;QACxF,MAAM,KAAK,GAAG,MAAM,iCAAiC,CACnD,KAAC,aAAa,IAAC,MAAM,EAAC,SAAS,EAAC,IAAI,EAAC,MAAM,EAAC,IAAI,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,YAAY,EAAE,CAAC,GAAI,CAC9F,CAAC;QAEF,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,iEAAiE,CAAC,CAAC;QAC3F,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,mCAAmC,CAAC,CAAC;IACnE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4EAA4E,EAAE,GAAG,EAAE;QACpF,MAAM,KAAK,GAAG,kBAAkB,CAC9B,KAAC,aAAa,IACZ,MAAM,EAAC,MAAM,EACb,IAAI,EAAC,YAAY,EACjB,IAAI,EAAE,EAAE,KAAK,EAAE,eAAe,EAAE,EAChC,MAAM,EAAE,oDAAoD,EAC5D,OAAO,EAAE,KAAK,GACd,CACH,CAAC;QAEF,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpE,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,CAAC;QAClE,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mEAAmE,EAAE,GAAG,EAAE;QAC3E,MAAM,KAAK,GAAG,kBAAkB,CAC9B,KAAC,aAAa,IACZ,MAAM,EAAC,MAAM,EACb,IAAI,EAAC,MAAM,EACX,IAAI,EAAE,EAAE,OAAO,EAAE,uBAAuB,EAAE,EAC1C,MAAM,EAAE,gBAAgB,EACxB,OAAO,EAAE,KAAK,GACd,CACH,CAAC;QAEF,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/D,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrE,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,CAAC;QAClE,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iEAAiE,EAAE,GAAG,EAAE;QACzE,MAAM,KAAK,GAAG,kBAAkB,CAC9B,KAAC,mBAAmB,IAClB,MAAM,EAAC,MAAM,EACb,IAAI,EAAC,YAAY,EACjB,KAAK,EAAE,EAAE,KAAK,EAAE,eAAe,EAAE,EACjC,UAAU,EAAC,eAAe,EAC1B,UAAU,EAAE,IAAI,GAChB,CACH,CAAC;QAEF,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7E,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,CAAC;QAClE,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -14,17 +14,15 @@ interface BackgroundTasksBarProps {
14
14
  export interface FooterStatusLayoutOptions {
15
15
  columns: number;
16
16
  backgroundTaskCount: number;
17
- eyesCount?: number;
18
17
  updatePending: boolean;
19
18
  }
20
19
  export interface FooterStatusLayoutDecision {
21
20
  hasBackgroundTasks: boolean;
22
- hasEyesSignals: boolean;
23
21
  hasUpdateNotice: boolean;
24
22
  stack: boolean;
25
23
  compactBackgroundTasks: boolean;
26
24
  }
27
- export declare function getFooterStatusLayoutDecision({ columns, backgroundTaskCount, eyesCount, updatePending, }: FooterStatusLayoutOptions): FooterStatusLayoutDecision;
25
+ export declare function getFooterStatusLayoutDecision({ columns, backgroundTaskCount, updatePending, }: FooterStatusLayoutOptions): FooterStatusLayoutDecision;
28
26
  export declare function BackgroundTasksBar({ tasks, focused, expanded, selectedIndex, onExpand, onCollapse, onKill, onExit, onNavigate, compact, }: BackgroundTasksBarProps): import("react/jsx-runtime").JSX.Element | null;
29
27
  export {};
30
28
  //# sourceMappingURL=BackgroundTasksBar.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"BackgroundTasksBar.d.ts","sourceRoot":"","sources":["../../../src/ui/components/BackgroundTasksBar.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAIvE,UAAU,uBAAuB;IAC/B,KAAK,EAAE,iBAAiB,EAAE,CAAC;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,MAAM,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7B,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,yBAAyB;IACxC,OAAO,EAAE,MAAM,CAAC;IAChB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,0BAA0B;IACzC,kBAAkB,EAAE,OAAO,CAAC;IAC5B,cAAc,EAAE,OAAO,CAAC;IACxB,eAAe,EAAE,OAAO,CAAC;IACzB,KAAK,EAAE,OAAO,CAAC;IACf,sBAAsB,EAAE,OAAO,CAAC;CACjC;AAED,wBAAgB,6BAA6B,CAAC,EAC5C,OAAO,EACP,mBAAmB,EACnB,SAAS,EACT,aAAa,GACd,EAAE,yBAAyB,GAAG,0BAA0B,CAYxD;AAOD,wBAAgB,kBAAkB,CAAC,EACjC,KAAK,EACL,OAAO,EACP,QAAQ,EACR,aAAa,EACb,QAAQ,EACR,UAAU,EACV,MAAM,EACN,MAAM,EACN,UAAU,EACV,OAAe,GAChB,EAAE,uBAAuB,kDAkIzB"}
1
+ {"version":3,"file":"BackgroundTasksBar.d.ts","sourceRoot":"","sources":["../../../src/ui/components/BackgroundTasksBar.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAIvE,UAAU,uBAAuB;IAC/B,KAAK,EAAE,iBAAiB,EAAE,CAAC;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,MAAM,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7B,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,yBAAyB;IACxC,OAAO,EAAE,MAAM,CAAC;IAChB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,aAAa,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,0BAA0B;IACzC,kBAAkB,EAAE,OAAO,CAAC;IAC5B,eAAe,EAAE,OAAO,CAAC;IACzB,KAAK,EAAE,OAAO,CAAC;IACf,sBAAsB,EAAE,OAAO,CAAC;CACjC;AAED,wBAAgB,6BAA6B,CAAC,EAC5C,OAAO,EACP,mBAAmB,EACnB,aAAa,GACd,EAAE,yBAAyB,GAAG,0BAA0B,CAUxD;AAOD,wBAAgB,kBAAkB,CAAC,EACjC,KAAK,EACL,OAAO,EACP,QAAQ,EACR,aAAa,EACb,QAAQ,EACR,UAAU,EACV,MAAM,EACN,MAAM,EACN,UAAU,EACV,OAAe,GAChB,EAAE,uBAAuB,kDAkIzB"}
@@ -3,14 +3,12 @@ import React from "react";
3
3
  import { Text, Box, useInput } from "ink";
4
4
  import { useTheme } from "../theme/theme.js";
5
5
  const MAX_VISIBLE = 5;
6
- export function getFooterStatusLayoutDecision({ columns, backgroundTaskCount, eyesCount, updatePending, }) {
6
+ export function getFooterStatusLayoutDecision({ columns, backgroundTaskCount, updatePending, }) {
7
7
  const hasBackgroundTasks = backgroundTaskCount > 0;
8
- const hasEyesSignals = eyesCount !== undefined && eyesCount > 0;
9
8
  const hasUpdateNotice = updatePending;
10
- const visibleCount = [hasBackgroundTasks, hasEyesSignals, hasUpdateNotice].filter(Boolean).length;
9
+ const visibleCount = [hasBackgroundTasks, hasUpdateNotice].filter(Boolean).length;
11
10
  return {
12
11
  hasBackgroundTasks,
13
- hasEyesSignals,
14
12
  hasUpdateNotice,
15
13
  stack: visibleCount > 1 && columns < 100,
16
14
  compactBackgroundTasks: visibleCount > 1 && columns < 120,
@@ -1 +1 @@
1
- {"version":3,"file":"BackgroundTasksBar.js","sourceRoot":"","sources":["../../../src/ui/components/BackgroundTasksBar.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"BackgroundTasksBar.js","sourceRoot":"","sources":["../../../src/ui/components/BackgroundTasksBar.tsx"],"names":[],"mappings":"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"}
@@ -4,9 +4,7 @@ interface BannerProps {
4
4
  model: string;
5
5
  provider: Provider;
6
6
  cwd: string;
7
- taskCount?: number;
8
- goalCount?: number;
9
7
  }
10
- export declare function Banner({ version, model, cwd, taskCount, goalCount }: BannerProps): import("react/jsx-runtime").JSX.Element;
8
+ export declare function Banner({ version, model, cwd }: BannerProps): import("react/jsx-runtime").JSX.Element;
11
9
  export {};
12
10
  //# sourceMappingURL=Banner.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Banner.d.ts","sourceRoot":"","sources":["../../../src/ui/components/Banner.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAEjD,UAAU,WAAW;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,QAAQ,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AA6BD,wBAAgB,MAAM,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,WAAW,2CA0GhF"}
1
+ {"version":3,"file":"Banner.d.ts","sourceRoot":"","sources":["../../../src/ui/components/Banner.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAEjD,UAAU,WAAW;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,QAAQ,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;CACb;AA6BD,wBAAgB,MAAM,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,WAAW,2CAqE1D"}
@@ -28,7 +28,7 @@ const GAP = " ";
28
28
  // Logo is 9 visible chars wide + GAP (3) = 12 chars before info text
29
29
  const LOGO_WIDTH = 9;
30
30
  const SIDE_BY_SIDE_MIN = LOGO_WIDTH + GAP.length + 20; // need ~32 cols for side-by-side
31
- export function Banner({ version, model, cwd, taskCount, goalCount }) {
31
+ export function Banner({ version, model, cwd }) {
32
32
  const theme = useTheme();
33
33
  const { columns } = useTerminalSize();
34
34
  const modelInfo = getModel(model);
@@ -41,9 +41,13 @@ export function Banner({ version, model, cwd, taskCount, goalCount }) {
41
41
  const shift = 0;
42
42
  // At narrow widths, stack logo above info instead of side-by-side
43
43
  if (columns < SIDE_BY_SIDE_MIN) {
44
- return (_jsxs(Box, { flexDirection: "column", marginTop: 1, marginBottom: 1, width: columns, children: [_jsx(GradientText, { text: LOGO_LINES[0], shift: shift }), _jsx(GradientText, { text: LOGO_LINES[1], shift: shift }), _jsx(GradientText, { text: LOGO_LINES[2], shift: shift }), _jsxs(Box, { marginTop: 1, children: [_jsx(Text, { color: theme.primary, bold: true, children: "GG Coder" }), _jsxs(Text, { color: theme.textDim, children: [" v", version] })] }), _jsxs(Box, { children: [_jsx(Text, { color: theme.secondary, children: modelName }), _jsx(Text, { color: theme.textDim, children: " " }), _jsx(Text, { color: theme.textDim, wrap: "truncate", children: displayPath })] }), _jsxs(Box, { children: [_jsx(Text, { color: theme.primary, children: "^T" }), _jsx(Text, { color: theme.textDim, children: " tasks" }), taskCount !== undefined && taskCount > 0 && (_jsxs(Text, { color: theme.secondary, children: [" (", taskCount, ")"] })), _jsx(Text, { color: theme.textDim, children: " " }), _jsx(Text, { color: theme.primary, children: "^G" }), _jsx(Text, { color: theme.textDim, children: " goal" }), goalCount !== undefined && goalCount > 0 && (_jsxs(Text, { color: theme.secondary, children: [" (", goalCount, ")"] })), _jsx(Text, { color: theme.textDim, children: " " }), _jsx(Text, { color: theme.primary, children: "^S" }), _jsx(Text, { color: theme.textDim, children: " skills" }), _jsx(Text, { color: theme.textDim, children: " " }), _jsx(Text, { color: theme.primary, children: "^P" }), _jsx(Text, { color: theme.textDim, children: " plan" })] })] }));
44
+ return (_jsxs(Box, { flexDirection: "column", marginTop: 1, marginBottom: 1, width: columns, children: [_jsx(GradientText, { text: LOGO_LINES[0], shift: shift }), _jsx(GradientText, { text: LOGO_LINES[1], shift: shift }), _jsx(GradientText, { text: LOGO_LINES[2], shift: shift }), _jsxs(Box, { marginTop: 1, children: [_jsx(Text, { color: theme.primary, bold: true, children: "GG Coder" }), _jsxs(Text, { color: theme.textDim, children: [" v", version] })] }), _jsxs(Box, { children: [_jsx(Text, { color: theme.secondary, children: modelName }), _jsx(Text, { color: theme.textDim, children: " " }), _jsx(Text, { color: theme.textDim, wrap: "truncate", children: displayPath })] }), _jsx(ShortcutHints, {})] }));
45
45
  }
46
- return (_jsxs(Box, { flexDirection: "column", marginTop: 1, marginBottom: 1, width: columns, children: [_jsxs(Box, { children: [_jsx(GradientText, { text: LOGO_LINES[0], shift: shift }), _jsx(Text, { children: GAP }), _jsx(Text, { color: theme.primary, bold: true, children: "GG Coder" }), _jsxs(Text, { color: theme.textDim, children: [" v", version] }), _jsx(Text, { color: theme.textDim, children: " \u00B7 By " }), _jsx(Text, { color: theme.text, bold: true, children: "Ken Kai" })] }), _jsxs(Box, { children: [_jsx(GradientText, { text: LOGO_LINES[1], shift: shift }), _jsx(Text, { children: GAP }), _jsx(Text, { color: theme.secondary, children: modelName }), _jsx(Text, { color: theme.textDim, children: " " }), _jsx(Text, { color: theme.textDim, wrap: "truncate", children: displayPath })] }), _jsxs(Box, { children: [_jsx(GradientText, { text: LOGO_LINES[2], shift: shift }), _jsx(Text, { children: GAP }), _jsx(Text, { color: theme.primary, children: "^T" }), _jsx(Text, { color: theme.textDim, children: " tasks" }), taskCount !== undefined && taskCount > 0 && (_jsxs(Text, { color: theme.secondary, children: [" (", taskCount, ")"] })), _jsx(Text, { color: theme.textDim, children: " " }), _jsx(Text, { color: theme.primary, children: "^G" }), _jsx(Text, { color: theme.textDim, children: " goal" }), goalCount !== undefined && goalCount > 0 && (_jsxs(Text, { color: theme.secondary, children: [" (", goalCount, ")"] })), _jsx(Text, { color: theme.textDim, children: " " }), _jsx(Text, { color: theme.primary, children: "^S" }), _jsx(Text, { color: theme.textDim, children: " skills" }), _jsx(Text, { color: theme.textDim, children: " " }), _jsx(Text, { color: theme.primary, children: "^P" }), _jsx(Text, { color: theme.textDim, children: " plan mode" }), _jsx(Text, { color: theme.textDim, children: " " }), _jsx(Text, { color: theme.primary, children: "\u21E7Tab" }), _jsx(Text, { color: theme.textDim, children: " thinking" })] })] }));
46
+ return (_jsxs(Box, { flexDirection: "column", marginTop: 1, marginBottom: 1, width: columns, children: [_jsxs(Box, { children: [_jsx(GradientText, { text: LOGO_LINES[0], shift: shift }), _jsx(Text, { children: GAP }), _jsx(Text, { color: theme.primary, bold: true, children: "GG Coder" }), _jsxs(Text, { color: theme.textDim, children: [" v", version] }), _jsx(Text, { color: theme.textDim, children: " \u00B7 By " }), _jsx(Text, { color: theme.text, bold: true, children: "Ken Kai" })] }), _jsxs(Box, { children: [_jsx(GradientText, { text: LOGO_LINES[1], shift: shift }), _jsx(Text, { children: GAP }), _jsx(Text, { color: theme.secondary, children: modelName }), _jsx(Text, { color: theme.textDim, children: " " }), _jsx(Text, { color: theme.textDim, wrap: "truncate", children: displayPath })] }), _jsxs(Box, { children: [_jsx(GradientText, { text: LOGO_LINES[2], shift: shift }), _jsx(Text, { children: GAP }), _jsx(ShortcutHints, {})] })] }));
47
+ }
48
+ function ShortcutHints() {
49
+ const theme = useTheme();
50
+ return (_jsxs(Box, { children: [_jsx(Text, { color: theme.primary, children: "/goal" }), _jsx(Text, { color: theme.textDim, children: " start goal" }), _jsx(Text, { color: theme.textDim, children: " \u00B7 " }), _jsx(Text, { color: theme.primary, children: "Shift+Tab" }), _jsx(Text, { color: theme.textDim, children: " toggle thinking" })] }));
47
51
  }
48
52
  function GradientText({ text, shift = 0 }) {
49
53
  const chars = [];
@@ -1 +1 @@
1
- {"version":3,"file":"Banner.js","sourceRoot":"","sources":["../../../src/ui/components/Banner.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Banner.js","sourceRoot":"","sources":["../../../src/ui/components/Banner.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAU9D,MAAM,UAAU,GAAG;IACjB,oDAAoD;IACpD,0CAA0C;IAC1C,oDAAoD;CACrD,CAAC;AAEF,gEAAgE;AAChE,MAAM,QAAQ,GAAG;IACf,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;CACV,CAAC;AAEF,MAAM,GAAG,GAAG,KAAK,CAAC;AAClB,qEAAqE;AACrE,MAAM,UAAU,GAAG,CAAC,CAAC;AACrB,MAAM,gBAAgB,GAAG,UAAU,GAAG,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,iCAAiC;AAExF,MAAM,UAAU,MAAM,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAe;IACzD,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;IACzB,MAAM,EAAE,OAAO,EAAE,GAAG,eAAe,EAAE,CAAC;IACtC,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAClC,MAAM,SAAS,GAAG,SAAS,EAAE,IAAI,IAAI,KAAK,CAAC;IAE3C,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;IACpC,MAAM,WAAW,GAAG,IAAI,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IAEtF,0EAA0E;IAC1E,yEAAyE;IACzE,wCAAwC;IACxC,MAAM,KAAK,GAAG,CAAC,CAAC;IAEhB,kEAAkE;IAClE,IAAI,OAAO,GAAG,gBAAgB,EAAE,CAAC;QAC/B,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,SAAS,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,aACvE,KAAC,YAAY,IAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,GAAI,EACnD,KAAC,YAAY,IAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,GAAI,EACnD,KAAC,YAAY,IAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,GAAI,EACnD,MAAC,GAAG,IAAC,SAAS,EAAE,CAAC,aACf,KAAC,IAAI,IAAC,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,IAAI,+BAEzB,EACP,MAAC,IAAI,IAAC,KAAK,EAAE,KAAK,CAAC,OAAO,mBAAK,OAAO,IAAQ,IAC1C,EACN,MAAC,GAAG,eACF,KAAC,IAAI,IAAC,KAAK,EAAE,KAAK,CAAC,SAAS,YAAG,SAAS,GAAQ,EAChD,KAAC,IAAI,IAAC,KAAK,EAAE,KAAK,CAAC,OAAO,YAAG,IAAI,GAAQ,EACzC,KAAC,IAAI,IAAC,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,IAAI,EAAC,UAAU,YACxC,WAAW,GACP,IACH,EACN,KAAC,aAAa,KAAG,IACb,CACP,CAAC;IACJ,CAAC;IAED,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,SAAS,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,aACvE,MAAC,GAAG,eACF,KAAC,YAAY,IAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,GAAI,EACnD,KAAC,IAAI,cAAE,GAAG,GAAQ,EAClB,KAAC,IAAI,IAAC,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,IAAI,+BAEzB,EACP,MAAC,IAAI,IAAC,KAAK,EAAE,KAAK,CAAC,OAAO,mBAAK,OAAO,IAAQ,EAC9C,KAAC,IAAI,IAAC,KAAK,EAAE,KAAK,CAAC,OAAO,4BAAe,EACzC,KAAC,IAAI,IAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,8BAEtB,IACH,EACN,MAAC,GAAG,eACF,KAAC,YAAY,IAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,GAAI,EACnD,KAAC,IAAI,cAAE,GAAG,GAAQ,EAClB,KAAC,IAAI,IAAC,KAAK,EAAE,KAAK,CAAC,SAAS,YAAG,SAAS,GAAQ,EAChD,KAAC,IAAI,IAAC,KAAK,EAAE,KAAK,CAAC,OAAO,YAAG,IAAI,GAAQ,EACzC,KAAC,IAAI,IAAC,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,IAAI,EAAC,UAAU,YACxC,WAAW,GACP,IACH,EACN,MAAC,GAAG,eACF,KAAC,YAAY,IAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,GAAI,EACnD,KAAC,IAAI,cAAE,GAAG,GAAQ,EAClB,KAAC,aAAa,KAAG,IACb,IACF,CACP,CAAC;AACJ,CAAC;AAED,SAAS,aAAa;IACpB,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;IAEzB,OAAO,CACL,MAAC,GAAG,eACF,KAAC,IAAI,IAAC,KAAK,EAAE,KAAK,CAAC,OAAO,sBAAc,EACxC,KAAC,IAAI,IAAC,KAAK,EAAE,KAAK,CAAC,OAAO,4BAAoB,EAC9C,KAAC,IAAI,IAAC,KAAK,EAAE,KAAK,CAAC,OAAO,yBAAY,EACtC,KAAC,IAAI,IAAC,KAAK,EAAE,KAAK,CAAC,OAAO,0BAAkB,EAC5C,KAAC,IAAI,IAAC,KAAK,EAAE,KAAK,CAAC,OAAO,iCAAyB,IAC/C,CACP,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CAAC,EAAE,IAAI,EAAE,KAAK,GAAG,CAAC,EAAoC;IACzE,MAAM,KAAK,GAAsB,EAAE,CAAC;IACpC,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACnB,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;YACf,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjB,CAAC;aAAM,CAAC;YACN,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,QAAQ,GAAG,KAAK,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;YAC7D,KAAK,CAAC,IAAI,CACR,KAAC,IAAI,IAAS,KAAK,EAAE,KAAK,YACvB,EAAE,IADM,CAAC,CAEL,CACR,CAAC;YACF,QAAQ,EAAE,CAAC;QACb,CAAC;IACH,CAAC;IACD,OAAO,KAAC,IAAI,cAAE,KAAK,GAAQ,CAAC;AAC9B,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import type { ThinkingLevel } from "@kenkaiiii/gg-ai";
2
+ import type { GoalMode } from "../../core/runtime-mode.js";
2
3
  import { type ContextWindowOptions } from "../../core/model-registry.js";
3
4
  interface FooterProps {
4
5
  model: string;
@@ -12,10 +13,8 @@ interface FooterProps {
12
13
  * `xhigh` additionally shimmers to signal it's the top tier.
13
14
  */
14
15
  thinkingLevel?: ThinkingLevel;
15
- planMode?: boolean;
16
+ goalMode?: GoalMode;
16
17
  exitPending?: boolean;
17
- /** Hide the plan-mode toggle entirely (for products that don't have plan mode). */
18
- hidePlan?: boolean;
19
18
  /** Optional left-side status string (e.g. "Connected · DaVinci Resolve"). */
20
19
  statusLabel?: string;
21
20
  /** Color for the status label. */
@@ -31,7 +30,30 @@ interface FooterProps {
31
30
  * a dedicated row.
32
31
  */
33
32
  statusBelow?: boolean;
33
+ /** False when raw markdown mode is active. */
34
+ renderMarkdown?: boolean;
34
35
  }
35
- export declare function Footer({ model, tokensIn, contextWindowOptions, cwd, gitBranch, thinkingLevel, planMode, exitPending, hidePlan, statusLabel, statusColor, hideCwd, hideGitBranch, statusBelow, }: FooterProps): import("react/jsx-runtime").JSX.Element;
36
+ export declare function getGoalFooterLabel(goalMode: GoalMode | undefined): string;
37
+ export declare function getFooterRightLength({ barWidth, contextPct, modelName, goalText, thinkingText, renderMarkdown, }: {
38
+ barWidth: number;
39
+ contextPct: number;
40
+ modelName: string;
41
+ goalText: string;
42
+ thinkingText: string;
43
+ renderMarkdown?: boolean;
44
+ }): number;
45
+ export declare function doesFooterFitOnOneLine({ columns, model, tokensIn, contextWindowOptions, cwd, gitBranch, thinkingLevel, goalMode, statusBelow, renderMarkdown: _renderMarkdown, }: {
46
+ columns: number;
47
+ model: string;
48
+ tokensIn: number;
49
+ contextWindowOptions?: ContextWindowOptions;
50
+ cwd: string;
51
+ gitBranch?: string | null;
52
+ thinkingLevel?: ThinkingLevel;
53
+ goalMode?: GoalMode;
54
+ statusBelow?: boolean;
55
+ renderMarkdown?: boolean;
56
+ }): boolean;
57
+ export declare function Footer({ model, tokensIn, contextWindowOptions, cwd, gitBranch, thinkingLevel, goalMode, exitPending, statusLabel, statusColor, hideCwd, hideGitBranch, statusBelow, renderMarkdown, }: FooterProps): import("react/jsx-runtime").JSX.Element;
36
58
  export {};
37
59
  //# sourceMappingURL=Footer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Footer.d.ts","sourceRoot":"","sources":["../../../src/ui/components/Footer.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAGtD,OAAO,EAAoB,KAAK,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAI3F,UAAU,WAAW;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,oBAAoB,CAAC,EAAE,oBAAoB,CAAC;IAC5C,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B;;;;OAIG;IACH,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,mFAAmF;IACnF,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,6EAA6E;IAC7E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kCAAkC;IAClC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kFAAkF;IAClF,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,iCAAiC;IACjC,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;;;;OAKG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AA8ED,wBAAgB,MAAM,CAAC,EACrB,KAAK,EACL,QAAQ,EACR,oBAAoB,EACpB,GAAG,EACH,SAAS,EACT,aAAa,EACb,QAAQ,EACR,WAAW,EACX,QAAQ,EACR,WAAW,EACX,WAAW,EACX,OAAO,EACP,aAAa,EACb,WAAW,GACZ,EAAE,WAAW,2CAiOb"}
1
+ {"version":3,"file":"Footer.d.ts","sourceRoot":"","sources":["../../../src/ui/components/Footer.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAG3D,OAAO,EAAoB,KAAK,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAI3F,UAAU,WAAW;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,oBAAoB,CAAC,EAAE,oBAAoB,CAAC;IAC5C,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B;;;;OAIG;IACH,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,6EAA6E;IAC7E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kCAAkC;IAClC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kFAAkF;IAClF,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,iCAAiC;IACjC,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;;;;OAKG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,8CAA8C;IAC9C,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAqFD,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,GAAG,SAAS,GAAG,MAAM,CAKzE;AAED,wBAAgB,oBAAoB,CAAC,EACnC,QAAQ,EACR,UAAU,EACV,SAAS,EACT,QAAQ,EACR,YAAY,EACZ,cAAqB,GACtB,EAAE;IACD,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B,GAAG,MAAM,CAcT;AAED,wBAAgB,sBAAsB,CAAC,EACrC,OAAO,EACP,KAAK,EACL,QAAQ,EACR,oBAAoB,EACpB,GAAG,EACH,SAAS,EACT,aAAa,EACb,QAAgB,EAChB,WAAW,EACX,cAAc,EAAE,eAAsB,GACvC,EAAE;IACD,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,oBAAoB,CAAC,EAAE,oBAAoB,CAAC;IAC5C,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B,GAAG,OAAO,CAiBV;AAED,wBAAgB,MAAM,CAAC,EACrB,KAAK,EACL,QAAQ,EACR,oBAAoB,EACpB,GAAG,EACH,SAAS,EACT,aAAa,EACb,QAAgB,EAChB,WAAW,EACX,WAAW,EACX,WAAW,EACX,OAAO,EACP,aAAa,EACb,WAAW,EACX,cAAqB,GACtB,EAAE,WAAW,2CA6Pb"}