@zhijiewang/openharness 0.10.1 → 0.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (281) hide show
  1. package/README.md +79 -13
  2. package/dist/Tool.d.ts.map +1 -1
  3. package/dist/Tool.js +7 -1
  4. package/dist/Tool.js.map +1 -1
  5. package/dist/Tool.test.js +8 -2
  6. package/dist/Tool.test.js.map +1 -1
  7. package/dist/agents/roles.d.ts +25 -0
  8. package/dist/agents/roles.d.ts.map +1 -0
  9. package/dist/agents/roles.js +116 -0
  10. package/dist/agents/roles.js.map +1 -0
  11. package/dist/agents/roles.test.d.ts +2 -0
  12. package/dist/agents/roles.test.d.ts.map +1 -0
  13. package/dist/agents/roles.test.js +38 -0
  14. package/dist/agents/roles.test.js.map +1 -0
  15. package/dist/commands/commands-new.test.d.ts +5 -0
  16. package/dist/commands/commands-new.test.d.ts.map +1 -0
  17. package/dist/commands/commands-new.test.js +132 -0
  18. package/dist/commands/commands-new.test.js.map +1 -0
  19. package/dist/commands/commands.test.js +31 -0
  20. package/dist/commands/commands.test.js.map +1 -1
  21. package/dist/commands/index.d.ts +2 -0
  22. package/dist/commands/index.d.ts.map +1 -1
  23. package/dist/commands/index.js +199 -6
  24. package/dist/commands/index.js.map +1 -1
  25. package/dist/components/REPL.js +1 -1
  26. package/dist/components/REPL.js.map +1 -1
  27. package/dist/git/git.test.js +33 -1
  28. package/dist/git/git.test.js.map +1 -1
  29. package/dist/git/index.d.ts +12 -0
  30. package/dist/git/index.d.ts.map +1 -1
  31. package/dist/git/index.js +47 -2
  32. package/dist/git/index.js.map +1 -1
  33. package/dist/harness/checkpoints.d.ts +36 -0
  34. package/dist/harness/checkpoints.d.ts.map +1 -0
  35. package/dist/harness/checkpoints.js +156 -0
  36. package/dist/harness/checkpoints.js.map +1 -0
  37. package/dist/harness/config.d.ts +3 -0
  38. package/dist/harness/config.d.ts.map +1 -1
  39. package/dist/harness/config.js +35 -2
  40. package/dist/harness/config.js.map +1 -1
  41. package/dist/harness/config.test.js +21 -1
  42. package/dist/harness/config.test.js.map +1 -1
  43. package/dist/harness/hooks-env.test.d.ts +5 -0
  44. package/dist/harness/hooks-env.test.d.ts.map +1 -0
  45. package/dist/harness/hooks-env.test.js +41 -0
  46. package/dist/harness/hooks-env.test.js.map +1 -0
  47. package/dist/harness/hooks.d.ts +7 -0
  48. package/dist/harness/hooks.d.ts.map +1 -1
  49. package/dist/harness/hooks.js +14 -0
  50. package/dist/harness/hooks.js.map +1 -1
  51. package/dist/harness/keybindings.d.ts.map +1 -1
  52. package/dist/harness/keybindings.js +4 -0
  53. package/dist/harness/keybindings.js.map +1 -1
  54. package/dist/harness/memory.d.ts +19 -0
  55. package/dist/harness/memory.d.ts.map +1 -1
  56. package/dist/harness/memory.js +85 -0
  57. package/dist/harness/memory.js.map +1 -1
  58. package/dist/harness/onboarding.d.ts +1 -1
  59. package/dist/harness/onboarding.d.ts.map +1 -1
  60. package/dist/harness/onboarding.js +59 -4
  61. package/dist/harness/onboarding.js.map +1 -1
  62. package/dist/harness/onboarding.test.d.ts +5 -0
  63. package/dist/harness/onboarding.test.d.ts.map +1 -0
  64. package/dist/harness/onboarding.test.js +93 -0
  65. package/dist/harness/onboarding.test.js.map +1 -0
  66. package/dist/harness/rules.d.ts +6 -1
  67. package/dist/harness/rules.d.ts.map +1 -1
  68. package/dist/harness/rules.js +52 -5
  69. package/dist/harness/rules.js.map +1 -1
  70. package/dist/harness/rules.test.js +30 -1
  71. package/dist/harness/rules.test.js.map +1 -1
  72. package/dist/harness/session.d.ts +8 -1
  73. package/dist/harness/session.d.ts.map +1 -1
  74. package/dist/harness/session.js +13 -5
  75. package/dist/harness/session.js.map +1 -1
  76. package/dist/harness/store.d.ts +46 -0
  77. package/dist/harness/store.d.ts.map +1 -0
  78. package/dist/harness/store.js +56 -0
  79. package/dist/harness/store.js.map +1 -0
  80. package/dist/harness/store.test.d.ts +2 -0
  81. package/dist/harness/store.test.d.ts.map +1 -0
  82. package/dist/harness/store.test.js +71 -0
  83. package/dist/harness/store.test.js.map +1 -0
  84. package/dist/harness/submit-handler.d.ts +2 -0
  85. package/dist/harness/submit-handler.d.ts.map +1 -1
  86. package/dist/harness/submit-handler.js +3 -0
  87. package/dist/harness/submit-handler.js.map +1 -1
  88. package/dist/main.js +153 -26
  89. package/dist/main.js.map +1 -1
  90. package/dist/mcp/client.d.ts +2 -0
  91. package/dist/mcp/client.d.ts.map +1 -1
  92. package/dist/mcp/client.js +10 -2
  93. package/dist/mcp/client.js.map +1 -1
  94. package/dist/mcp/loader.d.ts +2 -0
  95. package/dist/mcp/loader.d.ts.map +1 -1
  96. package/dist/mcp/loader.js +34 -18
  97. package/dist/mcp/loader.js.map +1 -1
  98. package/dist/mcp/loader.test.d.ts +7 -0
  99. package/dist/mcp/loader.test.d.ts.map +1 -0
  100. package/dist/mcp/loader.test.js +25 -0
  101. package/dist/mcp/loader.test.js.map +1 -0
  102. package/dist/providers/anthropic-convert.test.d.ts +5 -0
  103. package/dist/providers/anthropic-convert.test.d.ts.map +1 -0
  104. package/dist/providers/anthropic-convert.test.js +98 -0
  105. package/dist/providers/anthropic-convert.test.js.map +1 -0
  106. package/dist/providers/anthropic.d.ts.map +1 -1
  107. package/dist/providers/anthropic.js +23 -4
  108. package/dist/providers/anthropic.js.map +1 -1
  109. package/dist/providers/stream-parsing.test.d.ts +6 -0
  110. package/dist/providers/stream-parsing.test.d.ts.map +1 -0
  111. package/dist/providers/stream-parsing.test.js +174 -0
  112. package/dist/providers/stream-parsing.test.js.map +1 -0
  113. package/dist/query/compress.d.ts +17 -0
  114. package/dist/query/compress.d.ts.map +1 -0
  115. package/dist/query/compress.js +115 -0
  116. package/dist/query/compress.js.map +1 -0
  117. package/dist/query/errors.d.ts +10 -0
  118. package/dist/query/errors.d.ts.map +1 -0
  119. package/dist/query/errors.js +22 -0
  120. package/dist/query/errors.js.map +1 -0
  121. package/dist/query/index.d.ts +15 -0
  122. package/dist/query/index.d.ts.map +1 -0
  123. package/dist/query/index.js +199 -0
  124. package/dist/query/index.js.map +1 -0
  125. package/dist/query/tools.d.ts +17 -0
  126. package/dist/query/tools.d.ts.map +1 -0
  127. package/dist/query/tools.js +129 -0
  128. package/dist/query/tools.js.map +1 -0
  129. package/dist/query/types.d.ts +31 -0
  130. package/dist/query/types.d.ts.map +1 -0
  131. package/dist/query/types.js +5 -0
  132. package/dist/query/types.js.map +1 -0
  133. package/dist/query.d.ts +8 -38
  134. package/dist/query.d.ts.map +1 -1
  135. package/dist/query.js +7 -444
  136. package/dist/query.js.map +1 -1
  137. package/dist/query.test.js +1 -1
  138. package/dist/query.test.js.map +1 -1
  139. package/dist/renderer/cells.d.ts.map +1 -1
  140. package/dist/renderer/cells.js +15 -2
  141. package/dist/renderer/cells.js.map +1 -1
  142. package/dist/renderer/colors.d.ts +8 -0
  143. package/dist/renderer/colors.d.ts.map +1 -0
  144. package/dist/renderer/colors.js +18 -0
  145. package/dist/renderer/colors.js.map +1 -0
  146. package/dist/renderer/diff.test.d.ts +5 -0
  147. package/dist/renderer/diff.test.d.ts.map +1 -0
  148. package/dist/renderer/diff.test.js +140 -0
  149. package/dist/renderer/diff.test.js.map +1 -0
  150. package/dist/renderer/differ.d.ts.map +1 -1
  151. package/dist/renderer/differ.js +1 -10
  152. package/dist/renderer/differ.js.map +1 -1
  153. package/dist/renderer/e2e.test.js +1 -0
  154. package/dist/renderer/e2e.test.js.map +1 -1
  155. package/dist/renderer/image.test.d.ts +5 -0
  156. package/dist/renderer/image.test.d.ts.map +1 -0
  157. package/dist/renderer/image.test.js +66 -0
  158. package/dist/renderer/image.test.js.map +1 -0
  159. package/dist/renderer/index.d.ts +21 -4
  160. package/dist/renderer/index.d.ts.map +1 -1
  161. package/dist/renderer/index.js +191 -116
  162. package/dist/renderer/index.js.map +1 -1
  163. package/dist/renderer/layout.d.ts +5 -1
  164. package/dist/renderer/layout.d.ts.map +1 -1
  165. package/dist/renderer/layout.js +504 -614
  166. package/dist/renderer/layout.js.map +1 -1
  167. package/dist/renderer/markdown.d.ts.map +1 -1
  168. package/dist/renderer/markdown.js +42 -36
  169. package/dist/renderer/markdown.js.map +1 -1
  170. package/dist/renderer/perf.test.js +1 -0
  171. package/dist/renderer/perf.test.js.map +1 -1
  172. package/dist/renderer/session-browser.test.d.ts +6 -0
  173. package/dist/renderer/session-browser.test.d.ts.map +1 -0
  174. package/dist/renderer/session-browser.test.js +95 -0
  175. package/dist/renderer/session-browser.test.js.map +1 -0
  176. package/dist/renderer/ui-ux.test.d.ts +15 -0
  177. package/dist/renderer/ui-ux.test.d.ts.map +1 -0
  178. package/dist/renderer/ui-ux.test.js +470 -0
  179. package/dist/renderer/ui-ux.test.js.map +1 -0
  180. package/dist/repl.d.ts.map +1 -1
  181. package/dist/repl.js +178 -14
  182. package/dist/repl.js.map +1 -1
  183. package/dist/services/StreamingToolExecutor.d.ts.map +1 -1
  184. package/dist/services/StreamingToolExecutor.js +4 -2
  185. package/dist/services/StreamingToolExecutor.js.map +1 -1
  186. package/dist/services/agent-messaging.d.ts +68 -0
  187. package/dist/services/agent-messaging.d.ts.map +1 -0
  188. package/dist/services/agent-messaging.js +121 -0
  189. package/dist/services/agent-messaging.js.map +1 -0
  190. package/dist/services/agent-messaging.test.d.ts +2 -0
  191. package/dist/services/agent-messaging.test.d.ts.map +1 -0
  192. package/dist/services/agent-messaging.test.js +88 -0
  193. package/dist/services/agent-messaging.test.js.map +1 -0
  194. package/dist/services/cron.d.ts +40 -0
  195. package/dist/services/cron.d.ts.map +1 -0
  196. package/dist/services/cron.js +90 -0
  197. package/dist/services/cron.js.map +1 -0
  198. package/dist/services/cron.test.d.ts +2 -0
  199. package/dist/services/cron.test.d.ts.map +1 -0
  200. package/dist/services/cron.test.js +49 -0
  201. package/dist/services/cron.test.js.map +1 -0
  202. package/dist/tools/AgentTool/index.d.ts +9 -0
  203. package/dist/tools/AgentTool/index.d.ts.map +1 -1
  204. package/dist/tools/AgentTool/index.js +89 -6
  205. package/dist/tools/AgentTool/index.js.map +1 -1
  206. package/dist/tools/BashTool/index.d.ts +6 -0
  207. package/dist/tools/BashTool/index.d.ts.map +1 -1
  208. package/dist/tools/BashTool/index.js +39 -1
  209. package/dist/tools/BashTool/index.js.map +1 -1
  210. package/dist/tools/FileEditTool/index.js +4 -4
  211. package/dist/tools/FileEditTool/index.js.map +1 -1
  212. package/dist/tools/FileReadTool/index.d.ts +3 -0
  213. package/dist/tools/FileReadTool/index.d.ts.map +1 -1
  214. package/dist/tools/FileReadTool/index.js +102 -4
  215. package/dist/tools/FileReadTool/index.js.map +1 -1
  216. package/dist/tools/FileWriteTool/index.d.ts.map +1 -1
  217. package/dist/tools/FileWriteTool/index.js +20 -5
  218. package/dist/tools/FileWriteTool/index.js.map +1 -1
  219. package/dist/tools/GlobTool/index.d.ts.map +1 -1
  220. package/dist/tools/GlobTool/index.js +4 -61
  221. package/dist/tools/GlobTool/index.js.map +1 -1
  222. package/dist/tools/GrepTool/index.d.ts +30 -0
  223. package/dist/tools/GrepTool/index.d.ts.map +1 -1
  224. package/dist/tools/GrepTool/index.js +153 -72
  225. package/dist/tools/GrepTool/index.js.map +1 -1
  226. package/dist/tools/LSTool/index.d.ts +3 -0
  227. package/dist/tools/LSTool/index.d.ts.map +1 -1
  228. package/dist/tools/LSTool/index.js +44 -29
  229. package/dist/tools/LSTool/index.js.map +1 -1
  230. package/dist/tools/TaskCreateTool/index.d.ts +6 -0
  231. package/dist/tools/TaskCreateTool/index.d.ts.map +1 -1
  232. package/dist/tools/TaskCreateTool/index.js +8 -2
  233. package/dist/tools/TaskCreateTool/index.js.map +1 -1
  234. package/dist/tools/TaskGetTool/index.d.ts +12 -0
  235. package/dist/tools/TaskGetTool/index.d.ts.map +1 -0
  236. package/dist/tools/TaskGetTool/index.js +50 -0
  237. package/dist/tools/TaskGetTool/index.js.map +1 -0
  238. package/dist/tools/TaskOutputTool/index.d.ts +15 -0
  239. package/dist/tools/TaskOutputTool/index.d.ts.map +1 -0
  240. package/dist/tools/TaskOutputTool/index.js +45 -0
  241. package/dist/tools/TaskOutputTool/index.js.map +1 -0
  242. package/dist/tools/TaskStopTool/index.d.ts +15 -0
  243. package/dist/tools/TaskStopTool/index.d.ts.map +1 -0
  244. package/dist/tools/TaskStopTool/index.js +51 -0
  245. package/dist/tools/TaskStopTool/index.js.map +1 -0
  246. package/dist/tools/TaskUpdateTool/index.d.ts +21 -3
  247. package/dist/tools/TaskUpdateTool/index.d.ts.map +1 -1
  248. package/dist/tools/TaskUpdateTool/index.js +48 -3
  249. package/dist/tools/TaskUpdateTool/index.js.map +1 -1
  250. package/dist/tools/tools-basic.test.js +191 -2
  251. package/dist/tools/tools-basic.test.js.map +1 -1
  252. package/dist/tools.d.ts.map +1 -1
  253. package/dist/tools.js +6 -0
  254. package/dist/tools.js.map +1 -1
  255. package/dist/types/permissions.d.ts +2 -2
  256. package/dist/types/permissions.d.ts.map +1 -1
  257. package/dist/types/permissions.js +59 -13
  258. package/dist/types/permissions.js.map +1 -1
  259. package/dist/types/permissions.test.js +57 -0
  260. package/dist/types/permissions.test.js.map +1 -1
  261. package/dist/utils/bash-safety.d.ts +18 -0
  262. package/dist/utils/bash-safety.d.ts.map +1 -0
  263. package/dist/utils/bash-safety.js +227 -0
  264. package/dist/utils/bash-safety.js.map +1 -0
  265. package/dist/utils/bash-safety.test.d.ts +2 -0
  266. package/dist/utils/bash-safety.test.d.ts.map +1 -0
  267. package/dist/utils/bash-safety.test.js +112 -0
  268. package/dist/utils/bash-safety.test.js.map +1 -0
  269. package/dist/utils/fs.d.ts +15 -0
  270. package/dist/utils/fs.d.ts.map +1 -0
  271. package/dist/utils/fs.js +64 -0
  272. package/dist/utils/fs.js.map +1 -0
  273. package/dist/utils/fs.test.d.ts +5 -0
  274. package/dist/utils/fs.test.d.ts.map +1 -0
  275. package/dist/utils/fs.test.js +82 -0
  276. package/dist/utils/fs.test.js.map +1 -0
  277. package/dist/utils/safe-env.d.ts +10 -0
  278. package/dist/utils/safe-env.d.ts.map +1 -0
  279. package/dist/utils/safe-env.js +40 -0
  280. package/dist/utils/safe-env.js.map +1 -0
  281. package/package.json +3 -1
@@ -1,31 +1,28 @@
1
1
  /**
2
- * TerminalRenderer — cell-level diffing terminal renderer.
3
- * Replaces Ink for the REPL. Only writes changed characters to stdout.
2
+ * TerminalRenderer — sequential output terminal renderer.
3
+ * Flushed messages flow to scrollback; live area is rewritten in-place
4
+ * right after the scrollback content each frame (no absolute positioning gap).
4
5
  */
5
6
  import { CellGrid } from './cells.js';
6
- import { diff, syncWrite, hideCursor, showCursor, moveCursor } from './differ.js';
7
+ import { styleToSGR, syncWrite, hideCursor, showCursor } from './differ.js';
7
8
  import { rasterizeLive } from './layout.js';
8
9
  import { getTheme } from '../utils/theme-data.js';
9
- const FG_MAP = {
10
- black: 30, red: 31, green: 32, yellow: 33, blue: 34, magenta: 35, cyan: 36, white: 37,
11
- gray: 90, brightRed: 91, brightGreen: 92, brightYellow: 93, brightBlue: 94,
12
- brightMagenta: 95, brightCyan: 96, brightWhite: 97,
13
- };
14
- function FG(color) { return FG_MAP[color] ?? 37; }
10
+ import { FG } from './colors.js';
15
11
  import { createSessionBrowser, browserUp, browserDown, browserSelectedId, browserLoadPreview, browserSearch } from './session-browser.js';
16
12
  import { summarizeToolArgs } from '../utils/tool-summary.js';
17
13
  import { extractDiffInfo } from './diff.js';
18
14
  import { startRawInput } from './input.js';
19
15
  export class TerminalRenderer {
20
16
  current;
21
- previous;
22
17
  state;
23
18
  stopInput = null;
19
+ notifyTimers = [];
24
20
  animationTimer = null;
25
21
  renderPending = false;
26
22
  started = false;
27
23
  flushedMessageCount = 0;
28
24
  flushedToolCallIds = new Set();
25
+ lastLiveLines = 0; // lines the live area occupied last frame (for relative cursor movement)
29
26
  // Callbacks
30
27
  keypressHandler = null;
31
28
  resizeHandler = null;
@@ -40,7 +37,6 @@ export class TerminalRenderer {
40
37
  const w = process.stdout.columns ?? 80;
41
38
  const h = process.stdout.rows ?? 24;
42
39
  this.current = new CellGrid(w, h);
43
- this.previous = new CellGrid(w, h);
44
40
  this.state = {
45
41
  messages: [],
46
42
  streamingText: '',
@@ -73,6 +69,7 @@ export class TerminalRenderer {
73
69
  bannerLines: null,
74
70
  thinkingExpanded: false,
75
71
  lastThinkingSummary: null,
72
+ notifications: [],
76
73
  };
77
74
  }
78
75
  // ── Lifecycle ──
@@ -83,70 +80,10 @@ export class TerminalRenderer {
83
80
  hideCursor();
84
81
  // Raw input
85
82
  this.stopInput = startRawInput((key) => {
86
- // Permission prompt intercepts Y/N
87
- if (this.permissionResolve) {
88
- const k = key.char.toLowerCase();
89
- if (k === 'y') {
90
- const resolve = this.permissionResolve;
91
- this.permissionResolve = null;
92
- this.permissionPrompt = null;
93
- this.state.permissionBox = null;
94
- this.state.permissionDiffVisible = false;
95
- this.state.permissionDiffInfo = null;
96
- this.scheduleRender();
97
- resolve(true);
98
- }
99
- else if (k === 'n') {
100
- const resolve = this.permissionResolve;
101
- this.permissionResolve = null;
102
- this.permissionPrompt = null;
103
- this.state.permissionBox = null;
104
- this.state.permissionDiffVisible = false;
105
- this.state.permissionDiffInfo = null;
106
- this.scheduleRender();
107
- resolve(false);
108
- }
109
- else if (k === 'd' && this.state.permissionDiffInfo) {
110
- this.state.permissionDiffVisible = !this.state.permissionDiffVisible;
111
- this.scheduleRender();
112
- }
113
- return; // Swallow all other keys during permission prompt
114
- }
115
- // Question prompt intercepts text input
116
- if (this.questionResolve && this.state.questionPrompt) {
117
- const qp = this.state.questionPrompt;
118
- if (key.name === 'return' && qp.input.trim()) {
119
- const resolve = this.questionResolve;
120
- const answer = qp.input.trim();
121
- this.questionResolve = null;
122
- this.state.questionPrompt = null;
123
- this.scheduleRender();
124
- resolve(answer);
125
- }
126
- else if (key.name === 'backspace') {
127
- if (qp.cursor > 0) {
128
- this.state.questionPrompt = { ...qp, input: qp.input.slice(0, qp.cursor - 1) + qp.input.slice(qp.cursor), cursor: qp.cursor - 1 };
129
- this.scheduleRender();
130
- }
131
- }
132
- else if (key.name === 'left') {
133
- if (qp.cursor > 0) {
134
- this.state.questionPrompt = { ...qp, cursor: qp.cursor - 1 };
135
- this.scheduleRender();
136
- }
137
- }
138
- else if (key.name === 'right') {
139
- if (qp.cursor < qp.input.length) {
140
- this.state.questionPrompt = { ...qp, cursor: qp.cursor + 1 };
141
- this.scheduleRender();
142
- }
143
- }
144
- else if (key.char && key.char.length === 1 && !key.ctrl && !key.meta) {
145
- this.state.questionPrompt = { ...qp, input: qp.input.slice(0, qp.cursor) + key.char + qp.input.slice(qp.cursor), cursor: qp.cursor + 1 };
146
- this.scheduleRender();
147
- }
83
+ if (this.handlePermissionKey(key))
84
+ return;
85
+ if (this.handleQuestionKey(key))
148
86
  return;
149
- }
150
87
  if (this.keypressHandler)
151
88
  this.keypressHandler(key);
152
89
  });
@@ -179,11 +116,14 @@ export class TerminalRenderer {
179
116
  this.stopInput();
180
117
  this.stopInput = null;
181
118
  }
119
+ for (const t of this.notifyTimers)
120
+ clearTimeout(t);
121
+ this.notifyTimers.length = 0;
182
122
  // Restore terminal: disable mouse, show cursor, reset attributes
183
123
  process.stdout.write('\x1b[?1006l\x1b[?1000l\x1b[0m');
184
124
  showCursor();
185
- // Position cursor at bottom for clean shell prompt
186
- process.stdout.write(`\x1b[${process.stdout.rows ?? 24};1H\n`);
125
+ // Move past live area for clean shell prompt
126
+ process.stdout.write('\n');
187
127
  }
188
128
  // ── State updates ──
189
129
  setMessages(msgs) {
@@ -196,6 +136,27 @@ export class TerminalRenderer {
196
136
  setStreamingText(text) { this.state.streamingText = text; this.scheduleRender(); }
197
137
  setThinkingText(text) { this.state.thinkingText = text; this.scheduleRender(); }
198
138
  setError(text) { this.state.errorText = text; this.scheduleRender(); }
139
+ /** Show a toast notification above the input for 5 seconds */
140
+ notify(text) {
141
+ const entry = { text };
142
+ this.state.notifications.push(entry);
143
+ this.scheduleRender();
144
+ const timer = setTimeout(() => {
145
+ const idx = this.state.notifications.indexOf(entry);
146
+ if (idx >= 0) {
147
+ this.state.notifications.splice(idx, 1);
148
+ this.scheduleRender();
149
+ }
150
+ const ti = this.notifyTimers.indexOf(timer);
151
+ if (ti >= 0)
152
+ this.notifyTimers.splice(ti, 1);
153
+ }, 5000);
154
+ this.notifyTimers.push(timer);
155
+ }
156
+ scrollBy(delta) {
157
+ this.state.manualScroll = Math.max(0, Math.min(this.state.manualScroll + delta, 500));
158
+ this.scheduleRender();
159
+ }
199
160
  setLoading(loading) { this.state.loading = loading; this.scheduleRender(); }
200
161
  setInputText(text) { this.state.inputText = text; this.scheduleRender(); }
201
162
  setInputCursor(pos) { this.state.inputCursor = pos; this.scheduleRender(); }
@@ -205,6 +166,7 @@ export class TerminalRenderer {
205
166
  this.scheduleRender();
206
167
  }
207
168
  setStatusHints(text) { this.state.statusHints = text; this.scheduleRender(); }
169
+ setBannerLines(lines) { this.state.bannerLines = lines; this.scheduleRender(); }
208
170
  setAutocomplete(suggestions, index, descriptions) {
209
171
  this.state.autocomplete = suggestions;
210
172
  this.state.autocompleteDescriptions = descriptions ?? [];
@@ -224,6 +186,12 @@ export class TerminalRenderer {
224
186
  this.scheduleRender();
225
187
  }
226
188
  // Session browser
189
+ withSessionBrowser(fn) {
190
+ if (this.state.sessionBrowser) {
191
+ this.state.sessionBrowser = fn(this.state.sessionBrowser);
192
+ this.scheduleRender();
193
+ }
194
+ }
227
195
  openSessionBrowser() {
228
196
  this.state.sessionBrowser = createSessionBrowser();
229
197
  this.scheduleRender();
@@ -233,16 +201,10 @@ export class TerminalRenderer {
233
201
  this.scheduleRender();
234
202
  }
235
203
  sessionBrowserUp() {
236
- if (this.state.sessionBrowser) {
237
- this.state.sessionBrowser = browserLoadPreview(browserUp(this.state.sessionBrowser));
238
- this.scheduleRender();
239
- }
204
+ this.withSessionBrowser(sb => browserLoadPreview(browserUp(sb)));
240
205
  }
241
206
  sessionBrowserDown() {
242
- if (this.state.sessionBrowser) {
243
- this.state.sessionBrowser = browserLoadPreview(browserDown(this.state.sessionBrowser));
244
- this.scheduleRender();
245
- }
207
+ this.withSessionBrowser(sb => browserLoadPreview(browserDown(sb)));
246
208
  }
247
209
  sessionBrowserSelect() {
248
210
  if (!this.state.sessionBrowser)
@@ -253,15 +215,11 @@ export class TerminalRenderer {
253
215
  return id;
254
216
  }
255
217
  sessionBrowserType(char) {
256
- if (this.state.sessionBrowser) {
257
- this.state.sessionBrowser = browserSearch(this.state.sessionBrowser, this.state.sessionBrowser.searchQuery + char);
258
- this.scheduleRender();
259
- }
218
+ this.withSessionBrowser(sb => browserSearch(sb, sb.searchQuery + char));
260
219
  }
261
220
  sessionBrowserBackspace() {
262
221
  if (this.state.sessionBrowser && this.state.sessionBrowser.searchQuery.length > 0) {
263
- this.state.sessionBrowser = browserSearch(this.state.sessionBrowser, this.state.sessionBrowser.searchQuery.slice(0, -1));
264
- this.scheduleRender();
222
+ this.withSessionBrowser(sb => browserSearch(sb, sb.searchQuery.slice(0, -1)));
265
223
  }
266
224
  }
267
225
  isSessionBrowserOpen() {
@@ -319,20 +277,91 @@ export class TerminalRenderer {
319
277
  askPermission(toolName, description, riskLevel) {
320
278
  this.permissionPrompt = { toolName, description, riskLevel };
321
279
  this.state.permissionBox = { toolName, description, riskLevel, suggestion: summarizeToolArgs(toolName, description) };
322
- this.state.permissionDiffVisible = false;
323
280
  this.state.permissionDiffInfo = extractDiffInfo(toolName, description);
281
+ // Auto-show diffs for file-modifying tools
282
+ const isFileTool = /^(Edit|Write|FileEdit|FileWrite)/i.test(toolName);
283
+ this.state.permissionDiffVisible = isFileTool && this.state.permissionDiffInfo !== null;
324
284
  this.scheduleRender();
325
285
  return new Promise((resolve) => {
326
286
  this.permissionResolve = resolve;
327
287
  });
328
288
  }
329
289
  // ── Input ──
290
+ /** Clear the live area from screen using relative cursor movement */
291
+ clearLiveArea() {
292
+ if (!this.started)
293
+ return;
294
+ const cmd = this.lastLiveLines > 0
295
+ ? `\x1b[${this.lastLiveLines}A\r\x1b[J`
296
+ : '\r\x1b[J';
297
+ syncWrite(cmd);
298
+ this.lastLiveLines = 0;
299
+ }
330
300
  onKeypress(handler) {
331
301
  this.keypressHandler = handler;
332
302
  }
333
303
  onAnimation(handler) {
334
304
  this.animationCallback = handler;
335
305
  }
306
+ // ── Input routing ──
307
+ /** Handle permission prompt keys (Y/N/D). Returns true if key was consumed. */
308
+ handlePermissionKey(key) {
309
+ if (!this.permissionResolve)
310
+ return false;
311
+ const k = key.char.toLowerCase();
312
+ if (k === 'y' || k === 'n') {
313
+ const resolve = this.permissionResolve;
314
+ this.permissionResolve = null;
315
+ this.permissionPrompt = null;
316
+ this.state.permissionBox = null;
317
+ this.state.permissionDiffVisible = false;
318
+ this.state.permissionDiffInfo = null;
319
+ this.scheduleRender();
320
+ resolve(k === 'y');
321
+ }
322
+ else if (k === 'd' && this.state.permissionDiffInfo) {
323
+ this.state.permissionDiffVisible = !this.state.permissionDiffVisible;
324
+ this.scheduleRender();
325
+ }
326
+ return true; // Swallow all keys during permission prompt
327
+ }
328
+ /** Handle question prompt text input. Returns true if key was consumed. */
329
+ handleQuestionKey(key) {
330
+ if (!this.questionResolve || !this.state.questionPrompt)
331
+ return false;
332
+ const qp = this.state.questionPrompt;
333
+ if (key.name === 'return' && qp.input.trim()) {
334
+ const resolve = this.questionResolve;
335
+ const answer = qp.input.trim();
336
+ this.questionResolve = null;
337
+ this.state.questionPrompt = null;
338
+ this.scheduleRender();
339
+ resolve(answer);
340
+ }
341
+ else if (key.name === 'backspace') {
342
+ if (qp.cursor > 0) {
343
+ this.state.questionPrompt = { ...qp, input: qp.input.slice(0, qp.cursor - 1) + qp.input.slice(qp.cursor), cursor: qp.cursor - 1 };
344
+ this.scheduleRender();
345
+ }
346
+ }
347
+ else if (key.name === 'left') {
348
+ if (qp.cursor > 0) {
349
+ this.state.questionPrompt = { ...qp, cursor: qp.cursor - 1 };
350
+ this.scheduleRender();
351
+ }
352
+ }
353
+ else if (key.name === 'right') {
354
+ if (qp.cursor < qp.input.length) {
355
+ this.state.questionPrompt = { ...qp, cursor: qp.cursor + 1 };
356
+ this.scheduleRender();
357
+ }
358
+ }
359
+ else if (key.char && key.char.length === 1 && !key.ctrl && !key.meta) {
360
+ this.state.questionPrompt = { ...qp, input: qp.input.slice(0, qp.cursor) + key.char + qp.input.slice(qp.cursor), cursor: qp.cursor + 1 };
361
+ this.scheduleRender();
362
+ }
363
+ return true;
364
+ }
336
365
  // ── Rendering ──
337
366
  scheduleRender() {
338
367
  if (this.renderPending || !this.started)
@@ -351,10 +380,19 @@ export class TerminalRenderer {
351
380
  .replace(/`([^`]+)`/g, '\x1b[2m$1\x1b[0m') // inline code → dim, full reset after
352
381
  .replace(/^(#{1,3})\s+(.+)$/, '\x1b[1m\x1b[36m$1 $2\x1b[0m'); // headings → bold cyan
353
382
  }
383
+ /** Calculate the max text width for flushed scrollback output, reserving space for companion */
384
+ flushTextWidth() {
385
+ const maxWidth = process.stdout.columns ?? 80;
386
+ if (!this.state.companionLines)
387
+ return maxWidth;
388
+ const compWidth = Math.max(...this.state.companionLines.map(l => l.length), 0) + 2;
389
+ return Math.max(40, maxWidth - compWidth);
390
+ }
354
391
  /** Flush completed messages to terminal scrollback (native scrollbar) */
355
392
  flushMessages() {
356
393
  const messages = this.state.messages;
357
394
  let didFlush = false;
395
+ const textWidth = this.flushTextWidth();
358
396
  while (this.flushedMessageCount < messages.length) {
359
397
  const msg = messages[this.flushedMessageCount];
360
398
  // Don't flush the message currently being streamed
@@ -367,10 +405,11 @@ export class TerminalRenderer {
367
405
  for (let i = 0; i < lines.length; i++) {
368
406
  const styledLine = msg.role === 'assistant' ? this.styleMarkdownLine(lines[i]) : lines[i];
369
407
  const linePrefix = i === 0 ? prefixChar : ' ';
370
- process.stdout.write(colorCode + linePrefix + styledLine + '\x1b[0m\n');
408
+ const fullLine = linePrefix + styledLine;
409
+ process.stdout.write(colorCode + fullLine.slice(0, textWidth) + '\x1b[0m\n');
371
410
  }
372
411
  // Divider after each message
373
- process.stdout.write('\x1b[2m' + '─'.repeat(Math.min(60, process.stdout.columns ?? 80)) + '\x1b[0m\n');
412
+ process.stdout.write('\x1b[2m' + '─'.repeat(Math.min(60, textWidth)) + '\x1b[0m\n');
374
413
  this.flushedMessageCount++;
375
414
  didFlush = true;
376
415
  }
@@ -386,45 +425,78 @@ export class TerminalRenderer {
386
425
  const icon = tc.status === 'done' ? `\x1b[${FG(t.success)}m✓` : `\x1b[${FG(t.error)}m✗`;
387
426
  const summary = tc.resultSummary ? ` ${tc.resultSummary}` : '';
388
427
  const elapsed = tc.startedAt ? ` · ${Math.floor((Date.now() - tc.startedAt) / 1000)}s` : '';
389
- process.stdout.write(`${icon} ${tc.toolName}\x1b[0m \x1b[2m${tc.args ?? ''}${summary}${elapsed}\x1b[0m\n`);
428
+ const toolLine = `${icon} ${tc.toolName}\x1b[0m \x1b[2m${tc.args ?? ''}${summary}${elapsed}\x1b[0m`;
429
+ process.stdout.write(toolLine.slice(0, textWidth) + '\n');
390
430
  }
391
- // Force full repaint of live area after flush to avoid stale artifacts
392
- this.previous = new CellGrid(1, 1);
393
431
  }
394
432
  }
433
+ /** Convert a CellGrid to sequential ANSI output (line-by-line, no absolute positioning) */
434
+ renderGridToAnsi(grid) {
435
+ const parts = [];
436
+ for (let r = 0; r < grid.height; r++) {
437
+ // Find last non-space cell to avoid writing trailing whitespace
438
+ let lastCol = grid.width - 1;
439
+ while (lastCol >= 0 && grid.cells[r][lastCol].char === ' ' && !grid.cells[r][lastCol].style.bg) {
440
+ lastCol--;
441
+ }
442
+ let lastStyle = '';
443
+ for (let c = 0; c <= lastCol; c++) {
444
+ const cell = grid.cells[r][c];
445
+ const sgr = styleToSGR(cell.style);
446
+ if (sgr !== lastStyle) {
447
+ parts.push(sgr);
448
+ lastStyle = sgr;
449
+ }
450
+ parts.push(cell.char);
451
+ }
452
+ parts.push('\x1b[0m\x1b[K'); // reset + erase to end of line (clear stale content)
453
+ if (r < grid.height - 1)
454
+ parts.push('\n');
455
+ }
456
+ return parts.join('');
457
+ }
395
458
  render() {
396
459
  const w = process.stdout.columns ?? 80;
397
460
  const h = process.stdout.rows ?? 24;
398
- // Flush completed messages to terminal scrollback
461
+ // 1. Move UP from cursor to start of old live area, then erase below.
462
+ // lastLiveLines = cursor.cursorRow from last frame (distance from cursor to live area start).
463
+ // Using relative movement so it works correctly even after terminal scroll.
464
+ let eraseCmd = '';
465
+ if (this.lastLiveLines > 0) {
466
+ eraseCmd += `\x1b[${this.lastLiveLines}A`;
467
+ }
468
+ eraseCmd += '\r\x1b[J'; // column 0, erase to end of screen
469
+ syncWrite(eraseCmd);
470
+ // 2. Flush completed messages to scrollback (sequential, cursor moves down)
399
471
  this.flushMessages();
400
- // Calculate live area height
472
+ // 3. Calculate and render new live area
401
473
  const liveHeight = Math.min(h, this.calculateLiveHeight());
402
- // Resize if needed
403
474
  if (w !== this.current.width || liveHeight !== this.current.height) {
404
475
  this.current = new CellGrid(w, liveHeight);
405
- this.previous = new CellGrid(w, liveHeight); // force full repaint
406
476
  }
407
477
  this.current.clear();
408
478
  const cursor = rasterizeLive(this.state, this.current);
409
- // Position live area at bottom of terminal
410
- const liveStartRow = h - liveHeight;
411
- const cellDiff = diff(this.previous, this.current, liveStartRow);
412
- // Only erase+redraw when grid size changed or cells differ
413
- const needsErase = this.previous.width !== this.current.width || this.previous.height !== this.current.height;
414
- if (cellDiff || needsErase) {
415
- const output = (needsErase ? `\x1b[${liveStartRow + 1};1H\x1b[J` : '') + cellDiff;
416
- if (output)
417
- syncWrite(output);
418
- }
419
- // Show cursor at input position (offset by live area start)
420
- moveCursor(liveStartRow + cursor.cursorRow, cursor.cursorCol);
479
+ // 4. Write live area sequentially, then position cursor using relative movement.
480
+ // After grid output, cursor may be in pending-wrap state at end of last row.
481
+ // \r resolves wrap and goes to column 0, then we move up to cursor row.
482
+ const liveOutput = this.renderGridToAnsi(this.current);
483
+ const upFromEnd = liveHeight - 1 - cursor.cursorRow;
484
+ syncWrite(liveOutput + '\r' +
485
+ (upFromEnd > 0 ? `\x1b[${upFromEnd}A` : '') +
486
+ `\x1b[${cursor.cursorCol + 1}G` // move to column (1-indexed)
487
+ );
421
488
  showCursor();
422
- // Swap buffers
423
- this.previous = this.current.clone();
489
+ // Track cursor's distance from live area start (NOT total height).
490
+ // Next frame moves up by this amount to get back to live area start.
491
+ this.lastLiveLines = cursor.cursorRow;
424
492
  }
425
493
  /** Estimate the height needed for the live area */
426
494
  calculateLiveHeight() {
427
495
  let rows = 3; // border + input + hints (minimum)
496
+ // Banner only shown when no messages and not loading (must match rasterizeLive condition)
497
+ if (this.state.bannerLines && this.state.messages.length === 0 && !this.state.loading) {
498
+ rows += this.state.bannerLines.length + 1;
499
+ }
428
500
  if (this.state.loading && this.state.streamingText)
429
501
  rows += Math.min(this.state.streamingText.split('\n').length, 10);
430
502
  if (this.state.thinkingText)
@@ -442,6 +514,7 @@ export class TerminalRenderer {
442
514
  }
443
515
  if (this.state.contextWarning)
444
516
  rows += 1;
517
+ rows += Math.min(this.state.notifications.length, 2); // toast notifications
445
518
  if (this.state.statusLine)
446
519
  rows += 1;
447
520
  rows += this.state.autocomplete.length;
@@ -457,11 +530,13 @@ export class TerminalRenderer {
457
530
  const inputLineCount = Math.min(5, (this.state.inputText.match(/\n/g)?.length ?? 0) + 1);
458
531
  rows += inputLineCount - 1;
459
532
  const h = process.stdout.rows ?? 24;
533
+ // On initial screen with banner, fill the terminal
534
+ if (this.state.bannerLines && this.state.messages.length === 0 && !this.state.loading) {
535
+ return h;
536
+ }
460
537
  return Math.min(rows, Math.floor(h * 0.7)); // never exceed 70% of terminal
461
538
  }
462
539
  handleResize() {
463
- // Force full repaint on resize
464
- this.previous = new CellGrid(1, 1);
465
540
  this.scheduleRender();
466
541
  }
467
542
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/renderer/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/renderer/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC5E,OAAO,EAAE,aAAa,EAAuC,MAAM,aAAa,CAAC;AACjF,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClD,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,oBAAoB,EAAE,SAAS,EAAE,WAAW,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,aAAa,EAA4B,MAAM,sBAAsB,CAAC;AACpK,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAiB,MAAM,YAAY,CAAC;AAM1D,MAAM,OAAO,gBAAgB;IACnB,OAAO,CAAW;IAClB,KAAK,CAAc;IACnB,SAAS,GAAwB,IAAI,CAAC;IACtC,YAAY,GAAoC,EAAE,CAAC;IACnD,cAAc,GAA0C,IAAI,CAAC;IAC7D,aAAa,GAAG,KAAK,CAAC;IACtB,OAAO,GAAG,KAAK,CAAC;IAChB,mBAAmB,GAAG,CAAC,CAAC;IACxB,kBAAkB,GAAG,IAAI,GAAG,EAAU,CAAC;IACvC,aAAa,GAAG,CAAC,CAAC,CAAC,yEAAyE;IAEpG,YAAY;IACJ,eAAe,GAAqC,IAAI,CAAC;IACzD,aAAa,GAAwB,IAAI,CAAC;IAElD,0BAA0B;IAClB,iBAAiB,GAAwC,IAAI,CAAC;IACtE,gBAAgB,GAAwE,IAAI,CAAC;IAE7F,wBAAwB;IAChB,eAAe,GAAsC,IAAI,CAAC;IAElE,8DAA8D;IACtD,iBAAiB,GAAqC,IAAI,CAAC;IAEnE;QACE,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC;QACvC,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;QACpC,IAAI,CAAC,OAAO,GAAG,IAAI,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAClC,IAAI,CAAC,KAAK,GAAG;YACX,QAAQ,EAAE,EAAE;YACZ,aAAa,EAAE,EAAE;YACjB,YAAY,EAAE,EAAE;YAChB,SAAS,EAAE,IAAI,GAAG,EAAE;YACpB,SAAS,EAAE,EAAE;YACb,WAAW,EAAE,CAAC;YACd,cAAc,EAAE,IAAI;YACpB,cAAc,EAAE,MAAM;YACtB,WAAW,EAAE,cAAc;YAC3B,UAAU,EAAE,EAAE;YACd,cAAc,EAAE,IAAI;YACpB,SAAS,EAAE,IAAI;YACf,OAAO,EAAE,KAAK;YACd,YAAY,EAAE,CAAC;YACf,iBAAiB,EAAE,IAAI;YACvB,UAAU,EAAE,CAAC;YACb,OAAO,EAAE,IAAI;YACb,aAAa,EAAE,IAAI;YACnB,qBAAqB,EAAE,KAAK;YAC5B,kBAAkB,EAAE,IAAI;YACxB,iBAAiB,EAAE,IAAI,GAAG,EAAE;YAC5B,cAAc,EAAE,IAAI;YACpB,YAAY,EAAE,EAAE;YAChB,wBAAwB,EAAE,EAAE;YAC5B,iBAAiB,EAAE,CAAC,CAAC;YACrB,YAAY,EAAE,CAAC;YACf,kBAAkB,EAAE,KAAK;YACzB,cAAc,EAAE,IAAI;YACpB,WAAW,EAAE,IAAI;YACjB,gBAAgB,EAAE,KAAK;YACvB,mBAAmB,EAAE,IAAI;YACzB,aAAa,EAAE,EAAE;SAClB,CAAC;IACJ,CAAC;IAED,kBAAkB;IAElB,KAAK;QACH,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,mDAAmD;QACnD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;QAC/C,UAAU,EAAE,CAAC;QAEb,YAAY;QACZ,IAAI,CAAC,SAAS,GAAG,aAAa,CAAC,CAAC,GAAG,EAAE,EAAE;YACrC,IAAI,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC;gBAAE,OAAO;YAC1C,IAAI,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC;gBAAE,OAAO;YACxC,IAAI,IAAI,CAAC,eAAe;gBAAE,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;QACtD,CAAC,CAAC,CAAC;QAEH,+CAA+C;QAC/C,IAAI,CAAC,cAAc,GAAG,WAAW,CAAC,GAAG,EAAE;YACrC,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;YAC1B,IAAI,IAAI,CAAC,iBAAiB;gBAAE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;YAC5E,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,IAAI,CAAC,iBAAiB;gBAAE,IAAI,CAAC,cAAc,EAAE,CAAC;QAC1E,CAAC,EAAE,GAAG,CAAC,CAAC;QAER,kBAAkB;QAClB,IAAI,CAAC,aAAa,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;QAC/C,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QAEhD,IAAI,CAAC,MAAM,EAAE,CAAC;IAChB,CAAC;IAED,IAAI;QACF,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO;QAC1B,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACrB,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YAAC,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YAAC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAAC,CAAC;QAC5F,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;YAAC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;QAAC,CAAC;QACxG,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YAAC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QAAC,CAAC;QAChE,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,YAAY;YAAE,YAAY,CAAC,CAAC,CAAC,CAAC;QACnD,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC;QAC7B,iEAAiE;QACjE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC;QACtD,UAAU,EAAE,CAAC;QACb,6CAA6C;QAC7C,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IAED,sBAAsB;IAEtB,WAAW,CAAC,IAAe;QACzB,4EAA4E;QAC5E,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,mBAAmB;YAAE,IAAI,CAAC,mBAAmB,GAAG,CAAC,CAAC;QACzE,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC;QAC3B,IAAI,CAAC,cAAc,EAAE,CAAC;IACxB,CAAC;IACD,gBAAgB,CAAC,IAAY,IAAU,IAAI,CAAC,KAAK,CAAC,aAAa,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;IAChG,eAAe,CAAC,IAAY,IAAU,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;IAC9F,QAAQ,CAAC,IAAmB,IAAU,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;IAE3F,8DAA8D;IAC9D,MAAM,CAAC,IAAY;QACjB,MAAM,KAAK,GAAG,EAAE,IAAI,EAAE,CAAC;QACvB,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrC,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;YAC5B,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YACpD,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC;gBACb,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;gBACxC,IAAI,CAAC,cAAc,EAAE,CAAC;YACxB,CAAC;YACD,MAAM,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAC5C,IAAI,EAAE,IAAI,CAAC;gBAAE,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QAC/C,CAAC,EAAE,IAAI,CAAC,CAAC;QACT,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;IACD,QAAQ,CAAC,KAAa;QACpB,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;QACtF,IAAI,CAAC,cAAc,EAAE,CAAC;IACxB,CAAC;IACD,UAAU,CAAC,OAAgB,IAAU,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;IAC3F,YAAY,CAAC,IAAY,IAAU,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;IACxF,cAAc,CAAC,GAAW,IAAU,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;IAC1F,YAAY,CAAC,KAAsB,EAAE,KAAa;QAChD,IAAI,CAAC,KAAK,CAAC,cAAc,GAAG,KAAK,CAAC;QAClC,IAAI,CAAC,KAAK,CAAC,cAAc,GAAG,KAAK,CAAC;QAClC,IAAI,CAAC,cAAc,EAAE,CAAC;IACxB,CAAC;IACD,cAAc,CAAC,IAAY,IAAU,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;IAC5F,cAAc,CAAC,KAAe,IAAU,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;IAChG,eAAe,CAAC,WAAqB,EAAE,KAAa,EAAE,YAAuB;QAC3E,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,WAAW,CAAC;QACtC,IAAI,CAAC,KAAK,CAAC,wBAAwB,GAAG,YAAY,IAAI,EAAE,CAAC;QACzD,IAAI,CAAC,KAAK,CAAC,iBAAiB,GAAG,KAAK,CAAC;QACrC,IAAI,CAAC,cAAc,EAAE,CAAC;IACxB,CAAC;IACD,aAAa,CAAC,IAAY,IAAU,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;IAC1F,iBAAiB,CAAC,OAAmD,IAAU,IAAI,CAAC,KAAK,CAAC,cAAc,GAAG,OAAO,CAAC,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;IAC5I,UAAU,CAAC,IAAgC,IAAU,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;IACxG,oBAAoB,CAAC,IAAmB,IAAU,IAAI,CAAC,KAAK,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAAC,CAAC;IACxF,oBAAoB,KAAoB,OAAO,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC;IAC9E,sBAAsB,CAAC,OAAsB,IAAU,IAAI,CAAC,KAAK,CAAC,mBAAmB,GAAG,OAAO,CAAC,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;IACzH,sBAAsB,KAAW,IAAI,CAAC,KAAK,CAAC,gBAAgB,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;IAErH,aAAa,CAAC,KAAa,IAAU,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;IAC5F,wBAAwB;QACtB,IAAI,CAAC,KAAK,CAAC,kBAAkB,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC;QAC/D,IAAI,CAAC,cAAc,EAAE,CAAC;IACxB,CAAC;IAED,kBAAkB;IAEV,kBAAkB,CAAC,EAAoD;QAC7E,IAAI,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC;YAC9B,IAAI,CAAC,KAAK,CAAC,cAAc,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;YAC1D,IAAI,CAAC,cAAc,EAAE,CAAC;QACxB,CAAC;IACH,CAAC;IACD,kBAAkB;QAChB,IAAI,CAAC,KAAK,CAAC,cAAc,GAAG,oBAAoB,EAAE,CAAC;QACnD,IAAI,CAAC,cAAc,EAAE,CAAC;IACxB,CAAC;IACD,mBAAmB;QACjB,IAAI,CAAC,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC;QACjC,IAAI,CAAC,cAAc,EAAE,CAAC;IACxB,CAAC;IACD,gBAAgB;QACd,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC,EAAE,CAAC,kBAAkB,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACnE,CAAC;IACD,kBAAkB;QAChB,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC,EAAE,CAAC,kBAAkB,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACrE,CAAC;IACD,oBAAoB;QAClB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc;YAAE,OAAO,IAAI,CAAC;QAC5C,MAAM,EAAE,GAAG,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;QACxD,IAAI,CAAC,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC;QACjC,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,kBAAkB,CAAC,IAAY;QAC7B,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC,EAAE,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC,CAAC;IAC1E,CAAC;IACD,uBAAuB;QACrB,IAAI,IAAI,CAAC,KAAK,CAAC,cAAc,IAAI,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClF,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC,EAAE,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAChF,CAAC;IACH,CAAC;IACD,oBAAoB;QAClB,OAAO,IAAI,CAAC,KAAK,CAAC,cAAc,KAAK,IAAI,CAAC;IAC5C,CAAC;IACD,WAAW,CAAC,MAAc,EAAE,IAAkB;QAC5C,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QACvC,IAAI,CAAC,cAAc,EAAE,CAAC;IACxB,CAAC;IACD,WAAW,CAAC,MAAc,IAA8B,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAClG,cAAc,KAAW,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;IAChH,oBAAoB,KAAW,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;IAE7F,sDAAsD;IACtD,WAAW,CAAC,QAAgB,EAAE,OAAkB;QAC9C,IAAI,CAAC,KAAK,CAAC,cAAc,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;QACzF,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC7B,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC;QACjC,CAAC,CAAC,CAAC;IACL,CAAC;IAED,8BAA8B;IAE9B,sBAAsB,CAAC,MAAc;QACnC,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC;QAC9C,IAAI,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YACzB,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC1B,CAAC;aAAM,CAAC;YACN,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACvB,CAAC;QACD,IAAI,CAAC,cAAc,EAAE,CAAC;IACxB,CAAC;IAED,uDAAuD;IACvD,sBAAsB;QACpB,MAAM,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE;YACvD,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACxC,OAAO,EAAE,IAAI,EAAE,CAAC,MAAM,KAAK,SAAS,IAAI,EAAE,CAAC,MAAM,CAAC;QACpD,CAAC,CAAC,CAAC;QACH,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAE7B,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC;QAC9C,MAAM,UAAU,GAAG,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;QACzD,IAAI,UAAU,IAAI,CAAC,EAAE,CAAC;YACpB,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAE,CAAC,CAAC;YAClC,MAAM,OAAO,GAAG,UAAU,GAAG,CAAC,CAAC;YAC/B,IAAI,OAAO,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC;gBACzB,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAE,CAAC,CAAC;YAC9B,CAAC;QACH,CAAC;aAAM,CAAC;YACN,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAE,CAAC,CAAC;QACxB,CAAC;QACD,IAAI,CAAC,cAAc,EAAE,CAAC;IACxB,CAAC;IAED,uDAAuD;IACvD,aAAa,CAAC,QAAgB,EAAE,WAAmB,EAAE,SAAiB;QACpE,IAAI,CAAC,gBAAgB,GAAG,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC;QAC7D,IAAI,CAAC,KAAK,CAAC,aAAa,GAAG,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE,UAAU,EAAE,iBAAiB,CAAC,QAAQ,EAAE,WAAW,CAAC,EAAE,CAAC;QACtH,IAAI,CAAC,KAAK,CAAC,kBAAkB,GAAG,eAAe,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;QACvE,2CAA2C;QAC3C,MAAM,UAAU,GAAG,mCAAmC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACtE,IAAI,CAAC,KAAK,CAAC,qBAAqB,GAAG,UAAU,IAAI,IAAI,CAAC,KAAK,CAAC,kBAAkB,KAAK,IAAI,CAAC;QACxF,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC7B,IAAI,CAAC,iBAAiB,GAAG,OAAO,CAAC;QACnC,CAAC,CAAC,CAAC;IACL,CAAC;IAED,cAAc;IAEd,qEAAqE;IACrE,aAAa;QACX,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO;QAC1B,MAAM,GAAG,GAAG,IAAI,CAAC,aAAa,GAAG,CAAC;YAChC,CAAC,CAAC,QAAQ,IAAI,CAAC,aAAa,WAAW;YACvC,CAAC,CAAC,UAAU,CAAC;QACf,SAAS,CAAC,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;IACzB,CAAC;IAED,UAAU,CAAC,OAAgC;QACzC,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC;IACjC,CAAC;IAED,WAAW,CAAC,OAAgC;QAC1C,IAAI,CAAC,iBAAiB,GAAG,OAAO,CAAC;IACnC,CAAC;IAED,sBAAsB;IAEtB,+EAA+E;IACvE,mBAAmB,CAAC,GAAa;QACvC,IAAI,CAAC,IAAI,CAAC,iBAAiB;YAAE,OAAO,KAAK,CAAC;QAC1C,MAAM,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QACjC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;YAC3B,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC;YACvC,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;YAC9B,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;YAC7B,IAAI,CAAC,KAAK,CAAC,aAAa,GAAG,IAAI,CAAC;YAChC,IAAI,CAAC,KAAK,CAAC,qBAAqB,GAAG,KAAK,CAAC;YACzC,IAAI,CAAC,KAAK,CAAC,kBAAkB,GAAG,IAAI,CAAC;YACrC,IAAI,CAAC,cAAc,EAAE,CAAC;YACtB,OAAO,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;QACrB,CAAC;aAAM,IAAI,CAAC,KAAK,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,kBAAkB,EAAE,CAAC;YACtD,IAAI,CAAC,KAAK,CAAC,qBAAqB,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC;YACrE,IAAI,CAAC,cAAc,EAAE,CAAC;QACxB,CAAC;QACD,OAAO,IAAI,CAAC,CAAC,4CAA4C;IAC3D,CAAC;IAED,2EAA2E;IACnE,iBAAiB,CAAC,GAAa;QACrC,IAAI,CAAC,IAAI,CAAC,eAAe,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc;YAAE,OAAO,KAAK,CAAC;QACtE,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC;QACrC,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;YAC7C,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC;YACrC,MAAM,MAAM,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;YAC/B,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;YAC5B,IAAI,CAAC,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC;YACjC,IAAI,CAAC,cAAc,EAAE,CAAC;YACtB,OAAO,CAAC,MAAM,CAAC,CAAC;QAClB,CAAC;aAAM,IAAI,GAAG,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YACpC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAClB,IAAI,CAAC,KAAK,CAAC,cAAc,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAClI,IAAI,CAAC,cAAc,EAAE,CAAC;YACxB,CAAC;QACH,CAAC;aAAM,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAC/B,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAAC,IAAI,CAAC,KAAK,CAAC,cAAc,GAAG,EAAE,GAAG,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAAC,IAAI,CAAC,cAAc,EAAE,CAAC;YAAC,CAAC;QAC7G,CAAC;aAAM,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YAChC,IAAI,EAAE,CAAC,MAAM,GAAG,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;gBAAC,IAAI,CAAC,KAAK,CAAC,cAAc,GAAG,EAAE,GAAG,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAAC,IAAI,CAAC,cAAc,EAAE,CAAC;YAAC,CAAC;QAC3H,CAAC;aAAM,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;YACvE,IAAI,CAAC,KAAK,CAAC,cAAc,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,IAAI,GAAG,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzI,IAAI,CAAC,cAAc,EAAE,CAAC;QACxB,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,kBAAkB;IAEV,cAAc;QACpB,IAAI,IAAI,CAAC,aAAa,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO;QAChD,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;QAC1B,cAAc,CAAC,GAAG,EAAE;YAClB,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;YAC3B,IAAI,IAAI,CAAC,OAAO;gBAAE,IAAI,CAAC,MAAM,EAAE,CAAC;QAClC,CAAC,CAAC,CAAC;IACL,CAAC;IAED,yEAAyE;IACjE,iBAAiB,CAAC,IAAY;QACpC,OAAO,IAAI;aACR,OAAO,CAAC,gBAAgB,EAAE,kBAAkB,CAAC,CAAC,0BAA0B;aACxE,OAAO,CAAC,YAAY,EAAE,kBAAkB,CAAC,CAAC,sCAAsC;aAChF,OAAO,CAAC,mBAAmB,EAAE,6BAA6B,CAAC,CAAC,CAAC,uBAAuB;IACzF,CAAC;IAED,gGAAgG;IACxF,cAAc;QACpB,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC;QAC9C,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc;YAAE,OAAO,QAAQ,CAAC;QAChD,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;QACnF,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,QAAQ,GAAG,SAAS,CAAC,CAAC;IAC5C,CAAC;IAED,yEAAyE;IACzE,aAAa;QACX,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;QACrC,IAAI,QAAQ,GAAG,KAAK,CAAC;QACrB,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QACxC,OAAO,IAAI,CAAC,mBAAmB,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC;YAClD,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAE,CAAC;YAChD,mDAAmD;YACnD,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,IAAI,CAAC,mBAAmB,KAAK,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,EAAE,WAAW;gBAAE,MAAM;YAE3G,MAAM,CAAC,GAAG,QAAQ,EAAE,CAAC;YACrB,MAAM,SAAS,GAAG,GAAG,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;YACzI,MAAM,UAAU,GAAG,GAAG,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;YACvF,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACtC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACtC,MAAM,UAAU,GAAG,GAAG,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC;gBAC5F,MAAM,UAAU,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC;gBAC/C,MAAM,QAAQ,GAAG,UAAU,GAAG,UAAU,CAAC;gBACzC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,GAAG,WAAW,CAAC,CAAC;YAC/E,CAAC;YACD,6BAA6B;YAC7B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC;YACpF,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC3B,QAAQ,GAAG,IAAI,CAAC;QAClB,CAAC;QAED,kEAAkE;QAClE,IAAI,QAAQ,EAAE,CAAC;YACb,KAAK,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;gBAChD,IAAI,EAAE,CAAC,MAAM,KAAK,SAAS;oBAAE,SAAS;gBACtC,IAAI,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,MAAM,CAAC;oBAAE,SAAS;gBAClD,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;gBACpC,MAAM,CAAC,GAAG,QAAQ,EAAE,CAAC;gBACrB,MAAM,IAAI,GAAG,EAAE,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC;gBACxF,MAAM,OAAO,GAAG,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAChE,MAAM,OAAO,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC5F,MAAM,QAAQ,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,QAAQ,kBAAkB,EAAE,CAAC,IAAI,IAAI,EAAE,GAAG,OAAO,GAAG,OAAO,SAAS,CAAC;gBACpG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,GAAG,IAAI,CAAC,CAAC;YAC5D,CAAC;QACH,CAAC;IACH,CAAC;IAED,2FAA2F;IACnF,gBAAgB,CAAC,IAAc;QACrC,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACrC,gEAAgE;YAChE,IAAI,OAAO,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;YAC7B,OAAO,OAAO,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,OAAO,CAAE,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,OAAO,CAAE,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;gBACnG,OAAO,EAAE,CAAC;YACZ,CAAC;YACD,IAAI,SAAS,GAAG,EAAE,CAAC;YACnB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC;gBAClC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,CAAC,CAAE,CAAC;gBAChC,MAAM,GAAG,GAAG,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACnC,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;oBACtB,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBAChB,SAAS,GAAG,GAAG,CAAC;gBAClB,CAAC;gBACD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACxB,CAAC;YACD,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,qDAAqD;YAClF,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC;gBAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5C,CAAC;QACD,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACxB,CAAC;IAEO,MAAM;QACZ,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC;QACvC,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;QAEpC,sEAAsE;QACtE,iGAAiG;QACjG,+EAA+E;QAC/E,IAAI,QAAQ,GAAG,EAAE,CAAC;QAClB,IAAI,IAAI,CAAC,aAAa,GAAG,CAAC,EAAE,CAAC;YAC3B,QAAQ,IAAI,QAAQ,IAAI,CAAC,aAAa,GAAG,CAAC;QAC5C,CAAC;QACD,QAAQ,IAAI,UAAU,CAAC,CAAC,mCAAmC;QAC3D,SAAS,CAAC,QAAQ,CAAC,CAAC;QAEpB,4EAA4E;QAC5E,IAAI,CAAC,aAAa,EAAE,CAAC;QAErB,wCAAwC;QACxC,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,mBAAmB,EAAE,CAAC,CAAC;QAC3D,IAAI,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,UAAU,KAAK,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;YACnE,IAAI,CAAC,OAAO,GAAG,IAAI,QAAQ,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;QAC7C,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACrB,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAEvD,iFAAiF;QACjF,gFAAgF;QAChF,2EAA2E;QAC3E,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACvD,MAAM,SAAS,GAAG,UAAU,GAAG,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC;QACpD,SAAS,CACP,UAAU,GAAG,IAAI;YACjB,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,SAAS,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3C,QAAQ,MAAM,CAAC,SAAS,GAAG,CAAC,GAAG,CAAC,6BAA6B;SAC9D,CAAC;QACF,UAAU,EAAE,CAAC;QAEb,mEAAmE;QACnE,qEAAqE;QACrE,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,SAAS,CAAC;IACxC,CAAC;IAED,mDAAmD;IAC3C,mBAAmB;QACzB,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,mCAAmC;QACjD,0FAA0F;QAC1F,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;YACtF,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;QAC5C,CAAC;QACD,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa;YAAE,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QACtH,IAAI,IAAI,CAAC,KAAK,CAAC,YAAY;YAAE,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1E,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,mBAAmB;YAAE,IAAI,IAAI,CAAC,CAAC;QACrE,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY;YAAE,IAAI,IAAI,CAAC,CAAC,CAAC,UAAU;QACtG,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS;YAAE,IAAI,IAAI,CAAC,CAAC;QACpC,KAAK,MAAM,CAAC,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;YAC1C,IAAI,IAAI,CAAC,CAAC,CAAC,2CAA2C;YACtD,IAAI,EAAE,CAAC,MAAM,KAAK,SAAS,IAAI,EAAE,CAAC,UAAU;gBAAE,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAC1F,CAAC;QACD,IAAI,IAAI,CAAC,KAAK,CAAC,cAAc;YAAE,IAAI,IAAI,CAAC,CAAC;QACzC,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,sBAAsB;QAC5E,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU;YAAE,IAAI,IAAI,CAAC,CAAC;QACrC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC;QACvC,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;YAC7B,IAAI,IAAI,CAAC,CAAC;YACV,IAAI,IAAI,CAAC,KAAK,CAAC,qBAAqB,IAAI,IAAI,CAAC,KAAK,CAAC,kBAAkB;gBAAE,IAAI,IAAI,EAAE,CAAC;QACpF,CAAC;QACD,IAAI,IAAI,CAAC,KAAK,CAAC,cAAc;YAAE,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC,CAAC,CAAC;QAC5F,IAAI,IAAI,CAAC,KAAK,CAAC,cAAc;YAAE,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAC3F,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACzF,IAAI,IAAI,cAAc,GAAG,CAAC,CAAC;QAC3B,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;QACpC,mDAAmD;QACnD,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;YACtF,OAAO,CAAC,CAAC;QACX,CAAC;QACD,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,+BAA+B;IAC7E,CAAC;IAEO,YAAY;QAClB,IAAI,CAAC,cAAc,EAAE,CAAC;IACxB,CAAC;CACF"}
@@ -60,12 +60,16 @@ export type LayoutState = {
60
60
  bannerLines: string[] | null;
61
61
  thinkingExpanded: boolean;
62
62
  lastThinkingSummary: string | null;
63
+ notifications: Array<{
64
+ text: string;
65
+ }>;
63
66
  };
64
67
  /** Reset style cache — call after theme change */
65
68
  export declare function resetStyleCache(): void;
66
69
  /**
67
70
  * Rasterize application state into the cell grid.
68
- * Returns cursor position for the input line.
71
+ * Full-screen mode with message area + scrollbar + footer.
72
+ * Used by tests; production uses rasterizeLive().
69
73
  */
70
74
  export declare function rasterize(state: LayoutState, grid: CellGrid): {
71
75
  cursorRow: number;
@@ -1 +1 @@
1
- {"version":3,"file":"layout.d.ts","sourceRoot":"","sources":["../../src/renderer/layout.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"layout.d.ts","sourceRoot":"","sources":["../../src/renderer/layout.ts"],"names":[],"mappings":"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"}