openhorse 0.2.18 → 0.2.21

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 (337) hide show
  1. package/dist/agents/coordinator.d.ts.map +1 -1
  2. package/dist/agents/fork.d.ts.map +1 -1
  3. package/dist/agents/fork.js +0 -1
  4. package/dist/agents/fork.js.map +1 -1
  5. package/dist/agents/worker-pool.d.ts.map +1 -1
  6. package/dist/agents/worker-pool.js +3 -1
  7. package/dist/agents/worker-pool.js.map +1 -1
  8. package/dist/cli.js +3 -3
  9. package/dist/cli.js.map +1 -1
  10. package/dist/commands/index.d.ts.map +1 -1
  11. package/dist/commands/index.js +13 -28
  12. package/dist/commands/index.js.map +1 -1
  13. package/dist/core/checkpoint.d.ts.map +1 -1
  14. package/dist/core/checkpoint.js +3 -0
  15. package/dist/core/checkpoint.js.map +1 -1
  16. package/dist/framework/prompt.d.ts.map +1 -1
  17. package/dist/framework/prompt.js +16 -0
  18. package/dist/framework/prompt.js.map +1 -1
  19. package/dist/framework/query.d.ts.map +1 -1
  20. package/dist/framework/query.js +0 -7
  21. package/dist/framework/query.js.map +1 -1
  22. package/dist/harness/context-harness.d.ts.map +1 -1
  23. package/dist/harness/context-harness.js +6 -1
  24. package/dist/harness/context-harness.js.map +1 -1
  25. package/dist/harness/ledger.d.ts +1 -0
  26. package/dist/harness/ledger.d.ts.map +1 -1
  27. package/dist/harness/ledger.js +8 -0
  28. package/dist/harness/ledger.js.map +1 -1
  29. package/dist/harness/safety.d.ts +2 -0
  30. package/dist/harness/safety.d.ts.map +1 -1
  31. package/dist/harness/safety.js +27 -3
  32. package/dist/harness/safety.js.map +1 -1
  33. package/dist/init.d.ts +1 -1
  34. package/dist/init.d.ts.map +1 -1
  35. package/dist/init.js +1 -1
  36. package/dist/init.js.map +1 -1
  37. package/dist/ink-ui/components/Markdown.d.ts +1 -1
  38. package/dist/ink-ui/components/Markdown.d.ts.map +1 -1
  39. package/dist/ink-ui/components/Markdown.js +1 -1
  40. package/dist/ink-ui/components/Markdown.js.map +1 -1
  41. package/dist/ink-ui/runtime/grapheme.d.ts +9 -8
  42. package/dist/ink-ui/runtime/grapheme.d.ts.map +1 -1
  43. package/dist/ink-ui/runtime/grapheme.js +14 -60
  44. package/dist/ink-ui/runtime/grapheme.js.map +1 -1
  45. package/dist/ink-ui/runtime/input-buffer.d.ts +9 -31
  46. package/dist/ink-ui/runtime/input-buffer.d.ts.map +1 -1
  47. package/dist/ink-ui/runtime/input-buffer.js +15 -162
  48. package/dist/ink-ui/runtime/input-buffer.js.map +1 -1
  49. package/dist/ink-ui/runtime/native-cursor.js +0 -25
  50. package/dist/ink-ui/runtime/native-cursor.js.map +1 -1
  51. package/dist/ink-ui/runtime/prompt-layout.d.ts +9 -29
  52. package/dist/ink-ui/runtime/prompt-layout.d.ts.map +1 -1
  53. package/dist/ink-ui/runtime/prompt-layout.js +18 -166
  54. package/dist/ink-ui/runtime/prompt-layout.js.map +1 -1
  55. package/dist/ink-ui/runtime/transcript-state.d.ts.map +1 -1
  56. package/dist/ink-ui/runtime/transcript-state.js +2 -0
  57. package/dist/ink-ui/runtime/transcript-state.js.map +1 -1
  58. package/dist/ink-ui/screens/ReplScreen.d.ts.map +1 -1
  59. package/dist/ink-ui/screens/ReplScreen.js +11 -0
  60. package/dist/ink-ui/screens/ReplScreen.js.map +1 -1
  61. package/dist/memory/entrypoint.js +1 -1
  62. package/dist/memory/entrypoint.js.map +1 -1
  63. package/dist/memory/storage.js +1 -1
  64. package/dist/memory/storage.js.map +1 -1
  65. package/dist/memory/store.d.ts +1 -0
  66. package/dist/memory/store.d.ts.map +1 -1
  67. package/dist/memory/store.js +9 -0
  68. package/dist/memory/store.js.map +1 -1
  69. package/dist/runtime/agent-runtime-controller.d.ts.map +1 -1
  70. package/dist/runtime/agent-runtime-controller.js +15 -0
  71. package/dist/runtime/agent-runtime-controller.js.map +1 -1
  72. package/dist/runtime/agent-runtime-protocol.d.ts +4 -1
  73. package/dist/runtime/agent-runtime-protocol.d.ts.map +1 -1
  74. package/dist/runtime/agent-runtime-protocol.js +6 -0
  75. package/dist/runtime/agent-runtime-protocol.js.map +1 -1
  76. package/dist/runtime/chat-controller.d.ts +27 -0
  77. package/dist/runtime/chat-controller.d.ts.map +1 -1
  78. package/dist/runtime/chat-controller.js +148 -5
  79. package/dist/runtime/chat-controller.js.map +1 -1
  80. package/dist/runtime/composer/buffer.d.ts +43 -0
  81. package/dist/runtime/composer/buffer.d.ts.map +1 -0
  82. package/dist/runtime/composer/buffer.js +176 -0
  83. package/dist/runtime/composer/buffer.js.map +1 -0
  84. package/dist/runtime/composer/grapheme.d.ts +19 -0
  85. package/dist/runtime/composer/grapheme.d.ts.map +1 -0
  86. package/dist/runtime/composer/grapheme.js +73 -0
  87. package/dist/runtime/composer/grapheme.js.map +1 -0
  88. package/dist/runtime/composer/history.d.ts +39 -0
  89. package/dist/runtime/composer/history.d.ts.map +1 -0
  90. package/dist/runtime/composer/history.js +91 -0
  91. package/dist/runtime/composer/history.js.map +1 -0
  92. package/dist/runtime/composer/layout.d.ts +40 -0
  93. package/dist/runtime/composer/layout.d.ts.map +1 -0
  94. package/dist/runtime/composer/layout.js +174 -0
  95. package/dist/runtime/composer/layout.js.map +1 -0
  96. package/dist/runtime/rich-text/ansi-parser.d.ts +31 -0
  97. package/dist/runtime/rich-text/ansi-parser.d.ts.map +1 -0
  98. package/dist/runtime/rich-text/ansi-parser.js +272 -0
  99. package/dist/runtime/rich-text/ansi-parser.js.map +1 -0
  100. package/dist/runtime/rich-text/layout.d.ts +21 -0
  101. package/dist/runtime/rich-text/layout.d.ts.map +1 -0
  102. package/dist/runtime/rich-text/layout.js +327 -0
  103. package/dist/runtime/rich-text/layout.js.map +1 -0
  104. package/dist/runtime/rich-text/markdown-parser.d.ts +17 -0
  105. package/dist/runtime/rich-text/markdown-parser.d.ts.map +1 -0
  106. package/dist/runtime/rich-text/markdown-parser.js +211 -0
  107. package/dist/runtime/rich-text/markdown-parser.js.map +1 -0
  108. package/dist/runtime/rich-text/sanitizer.d.ts +18 -0
  109. package/dist/runtime/rich-text/sanitizer.d.ts.map +1 -0
  110. package/dist/runtime/rich-text/sanitizer.js +32 -0
  111. package/dist/runtime/rich-text/sanitizer.js.map +1 -0
  112. package/dist/runtime/rich-text/types.d.ts +59 -0
  113. package/dist/runtime/rich-text/types.d.ts.map +1 -0
  114. package/dist/runtime/rich-text/types.js +17 -0
  115. package/dist/runtime/rich-text/types.js.map +1 -0
  116. package/dist/runtime/subagents/budget.d.ts +118 -0
  117. package/dist/runtime/subagents/budget.d.ts.map +1 -0
  118. package/dist/runtime/subagents/budget.js +173 -0
  119. package/dist/runtime/subagents/budget.js.map +1 -0
  120. package/dist/runtime/subagents/child-executor-guard.d.ts +60 -0
  121. package/dist/runtime/subagents/child-executor-guard.d.ts.map +1 -0
  122. package/dist/runtime/subagents/child-executor-guard.js +219 -0
  123. package/dist/runtime/subagents/child-executor-guard.js.map +1 -0
  124. package/dist/runtime/subagents/context-builder.d.ts +34 -0
  125. package/dist/runtime/subagents/context-builder.d.ts.map +1 -0
  126. package/dist/runtime/subagents/context-builder.js +99 -0
  127. package/dist/runtime/subagents/context-builder.js.map +1 -0
  128. package/dist/runtime/subagents/index.d.ts +21 -0
  129. package/dist/runtime/subagents/index.d.ts.map +1 -0
  130. package/dist/runtime/subagents/index.js +62 -0
  131. package/dist/runtime/subagents/index.js.map +1 -0
  132. package/dist/runtime/subagents/policy.d.ts +68 -0
  133. package/dist/runtime/subagents/policy.d.ts.map +1 -0
  134. package/dist/runtime/subagents/policy.js +230 -0
  135. package/dist/runtime/subagents/policy.js.map +1 -0
  136. package/dist/runtime/subagents/presets.d.ts +44 -0
  137. package/dist/runtime/subagents/presets.d.ts.map +1 -0
  138. package/dist/runtime/subagents/presets.js +148 -0
  139. package/dist/runtime/subagents/presets.js.map +1 -0
  140. package/dist/runtime/subagents/production.d.ts +44 -0
  141. package/dist/runtime/subagents/production.d.ts.map +1 -0
  142. package/dist/runtime/subagents/production.js +118 -0
  143. package/dist/runtime/subagents/production.js.map +1 -0
  144. package/dist/runtime/subagents/provider-gate.d.ts +99 -0
  145. package/dist/runtime/subagents/provider-gate.d.ts.map +1 -0
  146. package/dist/runtime/subagents/provider-gate.js +186 -0
  147. package/dist/runtime/subagents/provider-gate.js.map +1 -0
  148. package/dist/runtime/subagents/result-parser.d.ts +40 -0
  149. package/dist/runtime/subagents/result-parser.d.ts.map +1 -0
  150. package/dist/runtime/subagents/result-parser.js +226 -0
  151. package/dist/runtime/subagents/result-parser.js.map +1 -0
  152. package/dist/runtime/subagents/runner.d.ts +53 -0
  153. package/dist/runtime/subagents/runner.d.ts.map +1 -0
  154. package/dist/runtime/subagents/runner.js +172 -0
  155. package/dist/runtime/subagents/runner.js.map +1 -0
  156. package/dist/runtime/subagents/runtime-integration.d.ts +73 -0
  157. package/dist/runtime/subagents/runtime-integration.d.ts.map +1 -0
  158. package/dist/runtime/subagents/runtime-integration.js +148 -0
  159. package/dist/runtime/subagents/runtime-integration.js.map +1 -0
  160. package/dist/runtime/subagents/supervisor.d.ts +79 -0
  161. package/dist/runtime/subagents/supervisor.d.ts.map +1 -0
  162. package/dist/runtime/subagents/supervisor.js +301 -0
  163. package/dist/runtime/subagents/supervisor.js.map +1 -0
  164. package/dist/runtime/subagents/tool.d.ts +38 -0
  165. package/dist/runtime/subagents/tool.d.ts.map +1 -0
  166. package/dist/runtime/subagents/tool.js +171 -0
  167. package/dist/runtime/subagents/tool.js.map +1 -0
  168. package/dist/runtime/subagents/types.d.ts +150 -0
  169. package/dist/runtime/subagents/types.d.ts.map +1 -0
  170. package/dist/runtime/subagents/types.js +52 -0
  171. package/dist/runtime/subagents/types.js.map +1 -0
  172. package/dist/runtime/ui-events.d.ts +5 -0
  173. package/dist/runtime/ui-events.d.ts.map +1 -1
  174. package/dist/runtime/ui-events.js.map +1 -1
  175. package/dist/runtime/ui-view-model.d.ts +35 -1
  176. package/dist/runtime/ui-view-model.d.ts.map +1 -1
  177. package/dist/runtime/ui-view-model.js +32 -1
  178. package/dist/runtime/ui-view-model.js.map +1 -1
  179. package/dist/sdk/query.d.ts.map +1 -1
  180. package/dist/sdk/query.js +0 -1
  181. package/dist/sdk/query.js.map +1 -1
  182. package/dist/services/auto-fix/autoFixHook.d.ts.map +1 -1
  183. package/dist/services/auto-fix/autoFixHook.js +3 -2
  184. package/dist/services/auto-fix/autoFixHook.js.map +1 -1
  185. package/dist/services/auto-fix/autoFixRunner.d.ts +2 -2
  186. package/dist/services/auto-fix/autoFixRunner.d.ts.map +1 -1
  187. package/dist/services/auto-fix/autoFixRunner.js +2 -2
  188. package/dist/services/auto-fix/autoFixRunner.js.map +1 -1
  189. package/dist/services/compact/auto-compact.js +3 -3
  190. package/dist/services/compact/auto-compact.js.map +1 -1
  191. package/dist/services/compact/summary-generator.d.ts.map +1 -1
  192. package/dist/services/compact/summary-generator.js +0 -1
  193. package/dist/services/compact/summary-generator.js.map +1 -1
  194. package/dist/services/concurrent-sessions.d.ts.map +1 -1
  195. package/dist/services/concurrent-sessions.js +3 -0
  196. package/dist/services/concurrent-sessions.js.map +1 -1
  197. package/dist/services/config.d.ts +11 -4
  198. package/dist/services/config.d.ts.map +1 -1
  199. package/dist/services/config.js +45 -4
  200. package/dist/services/config.js.map +1 -1
  201. package/dist/services/doctor.d.ts.map +1 -1
  202. package/dist/services/doctor.js +1 -1
  203. package/dist/services/doctor.js.map +1 -1
  204. package/dist/services/global-config.d.ts +23 -1
  205. package/dist/services/global-config.d.ts.map +1 -1
  206. package/dist/services/global-config.js +3 -0
  207. package/dist/services/global-config.js.map +1 -1
  208. package/dist/services/llm.d.ts.map +1 -1
  209. package/dist/services/llm.js +9 -1
  210. package/dist/services/llm.js.map +1 -1
  211. package/dist/services/mcp/transports.d.ts +2 -0
  212. package/dist/services/mcp/transports.d.ts.map +1 -1
  213. package/dist/services/mcp/transports.js +23 -2
  214. package/dist/services/mcp/transports.js.map +1 -1
  215. package/dist/services/memory.d.ts.map +1 -1
  216. package/dist/services/memory.js.map +1 -1
  217. package/dist/services/model-context.d.ts.map +1 -1
  218. package/dist/services/model-context.js +7 -1
  219. package/dist/services/model-context.js.map +1 -1
  220. package/dist/services/session-memory/sessionMemory.js +1 -1
  221. package/dist/services/session-memory/sessionMemory.js.map +1 -1
  222. package/dist/services/session-storage.d.ts +1 -1
  223. package/dist/services/session-storage.d.ts.map +1 -1
  224. package/dist/services/session-storage.js +49 -5
  225. package/dist/services/session-storage.js.map +1 -1
  226. package/dist/services/task-manager.d.ts +2 -0
  227. package/dist/services/task-manager.d.ts.map +1 -1
  228. package/dist/services/task-manager.js +13 -0
  229. package/dist/services/task-manager.js.map +1 -1
  230. package/dist/services/usage-state.d.ts.map +1 -1
  231. package/dist/services/usage-state.js +3 -0
  232. package/dist/services/usage-state.js.map +1 -1
  233. package/dist/skills/loader.d.ts +1 -1
  234. package/dist/skills/loader.d.ts.map +1 -1
  235. package/dist/skills/loader.js +1 -1
  236. package/dist/skills/loader.js.map +1 -1
  237. package/dist/skills/registry.d.ts +1 -1
  238. package/dist/skills/registry.d.ts.map +1 -1
  239. package/dist/skills/registry.js +1 -1
  240. package/dist/skills/registry.js.map +1 -1
  241. package/dist/terminal-ui/launch.d.ts +18 -3
  242. package/dist/terminal-ui/launch.d.ts.map +1 -1
  243. package/dist/terminal-ui/launch.js +21 -4
  244. package/dist/terminal-ui/launch.js.map +1 -1
  245. package/dist/tools/index.d.ts.map +1 -1
  246. package/dist/tools/index.js +3 -4
  247. package/dist/tools/index.js.map +1 -1
  248. package/dist/tools/lsp.js.map +1 -1
  249. package/dist/tools/mcp.d.ts +1 -0
  250. package/dist/tools/mcp.d.ts.map +1 -1
  251. package/dist/tools/mcp.js +19 -4
  252. package/dist/tools/mcp.js.map +1 -1
  253. package/dist/tools/web.js +3 -3
  254. package/dist/tools/web.js.map +1 -1
  255. package/dist/tui-core/frame.d.ts +13 -1
  256. package/dist/tui-core/frame.d.ts.map +1 -1
  257. package/dist/tui-core/frame.js +61 -8
  258. package/dist/tui-core/frame.js.map +1 -1
  259. package/dist/tui-core/style.d.ts +87 -0
  260. package/dist/tui-core/style.d.ts.map +1 -0
  261. package/dist/tui-core/style.js +248 -0
  262. package/dist/tui-core/style.js.map +1 -0
  263. package/dist/tui-core/terminal-writer.d.ts.map +1 -1
  264. package/dist/tui-core/terminal-writer.js +16 -3
  265. package/dist/tui-core/terminal-writer.js.map +1 -1
  266. package/dist/tui-ui/inline-surface.d.ts +134 -0
  267. package/dist/tui-ui/inline-surface.d.ts.map +1 -0
  268. package/dist/tui-ui/inline-surface.js +364 -0
  269. package/dist/tui-ui/inline-surface.js.map +1 -0
  270. package/dist/tui-ui/launch.d.ts.map +1 -1
  271. package/dist/tui-ui/launch.js +251 -64
  272. package/dist/tui-ui/launch.js.map +1 -1
  273. package/dist/tui-ui/layout.js +31 -2
  274. package/dist/tui-ui/layout.js.map +1 -1
  275. package/dist/tui-ui/render-scheduler.d.ts +37 -0
  276. package/dist/tui-ui/render-scheduler.d.ts.map +1 -0
  277. package/dist/tui-ui/render-scheduler.js +118 -0
  278. package/dist/tui-ui/render-scheduler.js.map +1 -0
  279. package/dist/tui-ui/runner.d.ts +13 -0
  280. package/dist/tui-ui/runner.d.ts.map +1 -1
  281. package/dist/tui-ui/runner.js +60 -11
  282. package/dist/tui-ui/runner.js.map +1 -1
  283. package/dist/tui-ui/state.d.ts +33 -3
  284. package/dist/tui-ui/state.d.ts.map +1 -1
  285. package/dist/tui-ui/state.js +138 -25
  286. package/dist/tui-ui/state.js.map +1 -1
  287. package/dist/tui-ui/transcript-cache.d.ts +33 -0
  288. package/dist/tui-ui/transcript-cache.d.ts.map +1 -0
  289. package/dist/tui-ui/transcript-cache.js +67 -0
  290. package/dist/tui-ui/transcript-cache.js.map +1 -0
  291. package/dist/ui/box.d.ts.map +1 -1
  292. package/dist/ui/box.js +0 -11
  293. package/dist/ui/box.js.map +1 -1
  294. package/dist/ui/command-panel.d.ts.map +1 -1
  295. package/dist/ui/command-panel.js +1 -3
  296. package/dist/ui/command-panel.js.map +1 -1
  297. package/dist/ui/file-completion.js +1 -1
  298. package/dist/ui/file-completion.js.map +1 -1
  299. package/dist/ui/markdown.d.ts.map +1 -1
  300. package/dist/ui/markdown.js +1 -2
  301. package/dist/ui/markdown.js.map +1 -1
  302. package/dist/ui/multiline-input.d.ts.map +1 -1
  303. package/dist/ui/multiline-input.js +1 -2
  304. package/dist/ui/multiline-input.js.map +1 -1
  305. package/dist/ui/progress.d.ts.map +1 -1
  306. package/dist/ui/progress.js +0 -3
  307. package/dist/ui/progress.js.map +1 -1
  308. package/dist/ui/status-bar.d.ts.map +1 -1
  309. package/dist/ui/status-bar.js +0 -1
  310. package/dist/ui/status-bar.js.map +1 -1
  311. package/dist/ui/stream-markdown.d.ts +3 -0
  312. package/dist/ui/stream-markdown.d.ts.map +1 -1
  313. package/dist/ui/stream-markdown.js +0 -6
  314. package/dist/ui/stream-markdown.js.map +1 -1
  315. package/dist/ui/tool-preview.d.ts.map +1 -1
  316. package/dist/ui/tool-preview.js +0 -1
  317. package/dist/ui/tool-preview.js.map +1 -1
  318. package/package.json +1 -1
  319. package/dist/cli-dbg.js +0 -717
  320. package/dist/cli-debug.d.ts +0 -7
  321. package/dist/cli-debug.d.ts.map +0 -1
  322. package/dist/cli-debug.js +0 -717
  323. package/dist/cli-debug.js.map +0 -1
  324. package/dist/cli-debug2.d.ts +0 -7
  325. package/dist/cli-debug2.d.ts.map +0 -1
  326. package/dist/cli-debug2.js +0 -717
  327. package/dist/cli-debug2.js.map +0 -1
  328. package/dist/cli-debug3.d.ts +0 -7
  329. package/dist/cli-debug3.d.ts.map +0 -1
  330. package/dist/cli-debug3.js +0 -719
  331. package/dist/cli-debug3.js.map +0 -1
  332. package/dist/cli-ink.d.ts +0 -8
  333. package/dist/cli-ink.d.ts.map +0 -1
  334. package/dist/cli-ink.js +0 -32
  335. package/dist/cli-ink.js.map +0 -1
  336. package/dist/cli-patch.js +0 -716
  337. package/dist/cli-test.js +0 -726
@@ -3,13 +3,14 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.launchTuiUI = launchTuiUI;
4
4
  const agent_runtime_controller_1 = require("../runtime/agent-runtime-controller");
5
5
  const ui_events_1 = require("../runtime/ui-events");
6
+ const ui_view_model_1 = require("../runtime/ui-view-model");
6
7
  const runner_1 = require("./runner");
7
- const ENTER_ALT_SCREEN = '\x1b[?1049h';
8
- const EXIT_ALT_SCREEN = '\x1b[?1049l';
8
+ const inline_surface_1 = require("./inline-surface");
9
9
  const ENABLE_BRACKETED_PASTE = '\x1b[?2004h';
10
10
  const DISABLE_BRACKETED_PASTE = '\x1b[?2004l';
11
11
  const SHOW_CURSOR = '\x1b[?25h';
12
12
  const HIDE_CURSOR = '\x1b[?25l';
13
+ const ENABLE_AUTOWRAP = '\x1b[?7h';
13
14
  async function launchTuiUI(runtime, options = {}) {
14
15
  const input = options.input ?? process.stdin;
15
16
  const output = options.output ?? process.stdout;
@@ -18,9 +19,12 @@ async function launchTuiUI(runtime, options = {}) {
18
19
  }
19
20
  let runner;
20
21
  let controller;
22
+ let surface;
21
23
  let stopping = false;
22
24
  let settled = false;
23
25
  let resolveLaunch = null;
26
+ // Once guard: shared cleanup promise so concurrent stop calls share one execution.
27
+ let cleanupPromise = null;
24
28
  const dimensions = () => {
25
29
  const size = readTtyDimensions(output);
26
30
  return {
@@ -34,31 +38,151 @@ async function launchTuiUI(runtime, options = {}) {
34
38
  settled = true;
35
39
  resolveLaunch?.();
36
40
  };
37
- const cleanup = async () => {
38
- input.off('data', handleData);
39
- output.off('resize', handleResize);
40
- process.off('SIGWINCH', handleResize);
41
- process.off('SIGINT', handleSigint);
42
- if (typeof input.setRawMode === 'function') {
43
- try {
41
+ /**
42
+ * Emergency terminal restore — independent of runner/controller/surface.
43
+ * Used when cleanup cannot complete normally (renderer error, partial init).
44
+ * Must not throw; all operations are best-effort with optional guards.
45
+ */
46
+ const emergencyRestore = () => {
47
+ try {
48
+ if (typeof input.setRawMode === 'function') {
44
49
  input.setRawMode(false);
45
50
  }
46
- catch {
47
- // best effort terminal restoration
48
- }
49
51
  }
50
- input.pause();
51
- output.write(`${SHOW_CURSOR}${DISABLE_BRACKETED_PASTE}${EXIT_ALT_SCREEN}`);
52
- await runtime.shutdown();
52
+ catch { /* best effort */ }
53
+ try {
54
+ input.pause();
55
+ }
56
+ catch { /* best effort */ }
57
+ try {
58
+ output.write(`${SHOW_CURSOR}${ENABLE_AUTOWRAP}${DISABLE_BRACKETED_PASTE}\n`);
59
+ }
60
+ catch { /* best effort */ }
53
61
  };
62
+ /**
63
+ * Once-guarded cleanup. Multiple concurrent calls (SIGINT, SIGTERM, runtime
64
+ * shutdown, renderer error) all share the same promise. Only the first call
65
+ * executes; subsequent calls await the same promise.
66
+ */
67
+ const cleanup = () => {
68
+ if (cleanupPromise)
69
+ return cleanupPromise;
70
+ cleanupPromise = (async () => {
71
+ // Clear any pending resize debounce timer.
72
+ if (resizeDebounceTimer !== null) {
73
+ clearTimeout(resizeDebounceTimer);
74
+ resizeDebounceTimer = null;
75
+ }
76
+ // Remove listeners first to prevent re-entrancy.
77
+ try {
78
+ input.off('data', handleData);
79
+ }
80
+ catch { /* ok */ }
81
+ try {
82
+ output.off('resize', handleResize);
83
+ }
84
+ catch { /* ok */ }
85
+ try {
86
+ process.off('SIGWINCH', handleResize);
87
+ }
88
+ catch { /* ok */ }
89
+ try {
90
+ process.off('SIGINT', handleSigint);
91
+ }
92
+ catch { /* ok */ }
93
+ try {
94
+ process.off('SIGTERM', handleSigterm);
95
+ }
96
+ catch { /* ok */ }
97
+ try {
98
+ process.off('SIGHUP', handleSighup);
99
+ }
100
+ catch { /* ok */ }
101
+ // Stop active turn (controller may not exist if init failed).
102
+ if (controller) {
103
+ try {
104
+ await controller.stopActiveTurn();
105
+ }
106
+ catch { /* best effort — don't block cleanup */ }
107
+ }
108
+ // Restore raw mode.
109
+ try {
110
+ if (typeof input.setRawMode === 'function') {
111
+ input.setRawMode(false);
112
+ }
113
+ }
114
+ catch { /* best effort */ }
115
+ try {
116
+ input.pause();
117
+ }
118
+ catch { /* best effort */ }
119
+ // Unmount surface (clears ephemeral live region only).
120
+ if (surface) {
121
+ try {
122
+ await surface.unmount();
123
+ }
124
+ catch { /* best effort */ }
125
+ }
126
+ // Restore terminal state: cursor, autowrap, bracketed paste.
127
+ // NO alternate-screen exit, NO full clear, NO erasing committed scrollback.
128
+ try {
129
+ output.write(`${SHOW_CURSOR}${ENABLE_AUTOWRAP}${DISABLE_BRACKETED_PASTE}`);
130
+ }
131
+ catch { /* best effort */ }
132
+ // Runtime shutdown last; preserves original exit code/signal semantics.
133
+ try {
134
+ await runtime.shutdown();
135
+ }
136
+ catch { /* best effort */ }
137
+ })();
138
+ return cleanupPromise;
139
+ };
140
+ /**
141
+ * Initiate graceful stop. Once-guarded: only the first call proceeds.
142
+ * Uses async/await so finishLaunch() runs in the same microtask chain
143
+ * as cleanup completion.
144
+ */
54
145
  const stop = async () => {
55
146
  if (stopping)
56
147
  return;
57
148
  stopping = true;
58
- await controller.stopActiveTurn();
59
- await cleanup();
149
+ try {
150
+ await cleanup();
151
+ }
152
+ catch {
153
+ // Cleanup error must not mask the original error.
154
+ // Emergency restore as fallback.
155
+ emergencyRestore();
156
+ }
60
157
  finishLaunch();
61
158
  };
159
+ /**
160
+ * Handle renderer-layer errors. Emergency restore first, then report.
161
+ */
162
+ const failRenderer = (error) => {
163
+ if (stopping)
164
+ return;
165
+ stopping = true;
166
+ // Emergency restore independent of partially-constructed objects.
167
+ emergencyRestore();
168
+ // Report sanitized renderer-layer error to stderr.
169
+ try {
170
+ const message = error instanceof Error ? error.message : String(error);
171
+ process.stderr.write(`\nTUI renderer error: ${message}\n`);
172
+ }
173
+ catch { /* best effort */ }
174
+ // Attempt full cleanup (may partially fail — that's ok).
175
+ // Ensure finishLaunch() runs on both success and rejection so the error
176
+ // path always completes and no unhandled promise rejection escapes.
177
+ void cleanup()
178
+ .catch(() => {
179
+ // Cleanup failure must not mask the original renderer error.
180
+ emergencyRestore();
181
+ })
182
+ .finally(() => {
183
+ finishLaunch();
184
+ });
185
+ };
62
186
  const consumeSessionPickerSelection = (inputValue) => {
63
187
  const overlay = runner.getState().overlay;
64
188
  if (overlay?.type !== 'sessions')
@@ -109,72 +233,135 @@ async function launchTuiUI(runtime, options = {}) {
109
233
  const result = controller.handle({ type: 'interrupt', source: 'keyboard' });
110
234
  if (result.type === 'exit_requested') {
111
235
  void stop();
236
+ return;
112
237
  }
238
+ // Visual feedback: show interrupt/exit-prompt warning in the status bar
239
+ runner.dispatch({
240
+ type: 'setStatus',
241
+ message: result.type === 'interrupted'
242
+ ? '⚠️ Interrupted — press Ctrl+C again to force exit'
243
+ : '⚠️ Press Ctrl+C again to exit',
244
+ });
113
245
  };
114
246
  const handleData = (chunk) => {
115
247
  if (!stopping) {
116
248
  runner.feedInput(chunk);
117
249
  }
118
250
  };
251
+ let resizeDebounceTimer = null;
252
+ const RESIZE_DEBOUNCE_MS = 100;
119
253
  const handleResize = () => {
120
- const { width, height } = dimensions();
121
- runner.resize(width, height);
254
+ if (stopping)
255
+ return;
256
+ if (resizeDebounceTimer !== null) {
257
+ clearTimeout(resizeDebounceTimer);
258
+ }
259
+ resizeDebounceTimer = setTimeout(() => {
260
+ resizeDebounceTimer = null;
261
+ if (stopping)
262
+ return;
263
+ const { width, height } = dimensions();
264
+ runner.resize(width, height);
265
+ }, RESIZE_DEBOUNCE_MS);
122
266
  };
123
267
  const handleSigint = () => {
124
268
  handleCtrlC();
125
269
  };
126
- output.write(`${ENTER_ALT_SCREEN}${ENABLE_BRACKETED_PASTE}${HIDE_CURSOR}`);
127
- const { width, height } = dimensions();
128
- runner = new runner_1.TuiRunner({
129
- output,
130
- width,
131
- height,
132
- cwd: runtime.cwd,
133
- onSubmit: submit,
134
- onCtrlC: handleCtrlC,
135
- onPermissionDecision: (requestId, approved) => {
136
- controller.handle({
137
- type: 'permission_decision',
138
- requestId,
139
- approved,
140
- source: 'keyboard',
270
+ // SIGTERM/SIGHUP: direct cancel + cleanup (no "double Ctrl+C" product semantics).
271
+ const handleSigterm = () => {
272
+ void stop();
273
+ };
274
+ const handleSighup = () => {
275
+ void stop();
276
+ };
277
+ try {
278
+ // Primary-screen inline surface: no alternate screen (1049).
279
+ const { width, height } = dimensions();
280
+ surface = new inline_surface_1.InlineTerminalSurface({ output });
281
+ // Mount is serialized through the surface FIFO queue. In the real terminal,
282
+ // the queue drains synchronously for the first operation (no prior ops).
283
+ // Fire-and-forget is safe because subsequent output.write calls go through
284
+ // the same queue via surface.commit/renderLive, not directly.
285
+ // Using `await` here causes test hangs because the test FakeTTY output
286
+ // doesn't trigger the async drain loop in the same way.
287
+ void surface.mount(width, height);
288
+ output.write(`${ENABLE_BRACKETED_PASTE}${HIDE_CURSOR}`);
289
+ runner = new runner_1.TuiRunner({
290
+ output,
291
+ width,
292
+ height,
293
+ cwd: runtime.cwd,
294
+ onSubmit: submit,
295
+ onCtrlC: handleCtrlC,
296
+ onPermissionDecision: (requestId, approved) => {
297
+ controller.handle({
298
+ type: 'permission_decision',
299
+ requestId,
300
+ approved,
301
+ source: 'keyboard',
302
+ });
303
+ },
304
+ });
305
+ const dispatchStatusSnapshot = (phase) => {
306
+ const snapshot = (0, ui_view_model_1.createStatusSnapshot)({
307
+ renderer: 'tui',
308
+ model: runtime.store.getSnapshot().currentModel || runtime.config.model,
309
+ sessionId: runtime.getSession()?.id,
310
+ costUsd: runtime.store.getSnapshot().costTracker.getSessionStats().totalCost,
311
+ runningState: phase,
312
+ tokens: tokensFromRuntime(runtime),
141
313
  });
142
- },
143
- });
144
- controller = new agent_runtime_controller_1.AgentRuntimeController({
145
- runtime,
146
- events: runner.events,
147
- uiCapabilities: (0, ui_events_1.resolveUiRendererCapabilities)(undefined, 'tui'),
148
- uiRenderer: 'tui',
149
- useRuntimeToolPermissions: true,
150
- runningStatus: () => statusSnapshot(runtime, 'running'),
151
- readyStatus: () => statusSnapshot(runtime, 'ready'),
152
- });
153
- runner.events.append({
154
- role: 'system',
155
- content: `OPENHORSE v${runtime.version}\nProject ${runtime.cwd}\n/ commands @ files ? shortcuts Alt+Enter newline Ctrl+C twice exits`,
156
- });
157
- runner.events.setStatus(statusSnapshot(runtime, 'ready'));
158
- input.resume();
159
- if (typeof input.setRawMode === 'function') {
160
- input.setRawMode(true);
314
+ runner.dispatch({ type: 'setStatusSnapshot', snapshot, phase });
315
+ return statusSnapshotString(runtime, phase);
316
+ };
317
+ controller = new agent_runtime_controller_1.AgentRuntimeController({
318
+ runtime,
319
+ events: runner.events,
320
+ uiCapabilities: (0, ui_events_1.resolveUiRendererCapabilities)(undefined, 'tui'),
321
+ uiRenderer: 'tui',
322
+ useRuntimeToolPermissions: true,
323
+ runningStatus: () => dispatchStatusSnapshot('running'),
324
+ readyStatus: () => dispatchStatusSnapshot('ready'),
325
+ });
326
+ runner.events.append({
327
+ role: 'system',
328
+ content: `OPENHORSE v${runtime.version}\nProject ${runtime.cwd}\n/ commands @ files ? shortcuts Ctrl+C twice exits`,
329
+ });
330
+ runner.events.setStatus(statusSnapshotString(runtime, 'ready'));
331
+ dispatchStatusSnapshot('ready');
332
+ input.resume();
333
+ if (typeof input.setRawMode === 'function') {
334
+ input.setRawMode(true);
335
+ }
336
+ input.on('data', handleData);
337
+ output.on('resize', handleResize);
338
+ process.on('SIGWINCH', handleResize);
339
+ process.on('SIGINT', handleSigint);
340
+ process.on('SIGTERM', handleSigterm);
341
+ process.on('SIGHUP', handleSighup);
342
+ await new Promise(resolve => {
343
+ resolveLaunch = resolve;
344
+ });
345
+ }
346
+ catch (error) {
347
+ failRenderer(error);
348
+ throw error;
161
349
  }
162
- input.on('data', handleData);
163
- output.on('resize', handleResize);
164
- process.on('SIGWINCH', handleResize);
165
- process.on('SIGINT', handleSigint);
166
- await new Promise(resolve => {
167
- resolveLaunch = resolve;
168
- });
169
350
  }
170
- function statusSnapshot(runtime, left) {
171
- const snapshot = runtime.store.getSnapshot();
172
- const session = runtime.getSession()?.id.slice(0, 8) ?? 'none';
351
+ function tokensFromRuntime(rt) {
352
+ const usage = rt.store.getSnapshot().tokenUsage;
353
+ if (!usage)
354
+ return {};
355
+ return { input: usage.promptTokens, output: usage.completionTokens };
356
+ }
357
+ function statusSnapshotString(rt, left) {
358
+ const snapshot = rt.store.getSnapshot();
359
+ const session = rt.getSession()?.id.slice(0, 8) ?? 'none';
173
360
  const tokens = snapshot.tokenUsage
174
361
  ? `${((snapshot.tokenUsage.promptTokens + snapshot.tokenUsage.completionTokens) / 1000).toFixed(1)}K`
175
362
  : '0.0K';
176
363
  const cost = snapshot.costTracker.getSessionStats().totalCost;
177
- return `${left} model=${snapshot.currentModel || runtime.config.model} session=${session} tokens=${tokens} cost=$${cost.toFixed(4)}`;
364
+ return `${left} model=${snapshot.currentModel || rt.config.model} session=${session} tokens=${tokens} cost=$${cost.toFixed(4)}`;
178
365
  }
179
366
  function readTtyDimensions(output) {
180
367
  const getWindowSize = output.getWindowSize;
@@ -1 +1 @@
1
- {"version":3,"file":"launch.js","sourceRoot":"","sources":["../../src/tui-ui/launch.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"launch.js","sourceRoot":"","sources":["../../src/tui-ui/launch.ts"],"names":[],"mappings":"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"}
@@ -84,6 +84,10 @@ function renderOverlay(frame, state, maxRows) {
84
84
  rows.slice(0, maxRows).forEach((line, index) => {
85
85
  (0, frame_1.writeFrameText)(frame, index, 0, line);
86
86
  });
87
+ // Clear any remaining transcript rows below overlay content
88
+ for (let i = rows.length; i < maxRows; i++) {
89
+ (0, frame_1.writeFrameText)(frame, i, 0, '');
90
+ }
87
91
  return;
88
92
  }
89
93
  if (state.overlay.type === 'edit') {
@@ -109,6 +113,10 @@ function renderOverlay(frame, state, maxRows) {
109
113
  rows.slice(0, maxRows).forEach((line, index) => {
110
114
  (0, frame_1.writeFrameText)(frame, index, 0, line);
111
115
  });
116
+ // Clear any remaining transcript rows below overlay content
117
+ for (let i = rows.length; i < maxRows; i++) {
118
+ (0, frame_1.writeFrameText)(frame, i, 0, '');
119
+ }
112
120
  return;
113
121
  }
114
122
  if (state.overlay.type === 'commands' || state.overlay.type === 'files') {
@@ -133,6 +141,10 @@ function renderOverlay(frame, state, maxRows) {
133
141
  rows.slice(0, maxRows).forEach((line, index) => {
134
142
  (0, frame_1.writeFrameText)(frame, index, 0, line);
135
143
  });
144
+ // Clear any remaining transcript rows below overlay content
145
+ for (let i = rows.length; i < maxRows; i++) {
146
+ (0, frame_1.writeFrameText)(frame, i, 0, '');
147
+ }
136
148
  return;
137
149
  }
138
150
  if (state.overlay.type === 'permission') {
@@ -152,6 +164,10 @@ function renderOverlay(frame, state, maxRows) {
152
164
  rows.slice(0, maxRows).forEach((line, index) => {
153
165
  (0, frame_1.writeFrameText)(frame, index, 0, line);
154
166
  });
167
+ // Clear any remaining transcript rows below overlay content
168
+ for (let i = rows.length; i < maxRows; i++) {
169
+ (0, frame_1.writeFrameText)(frame, i, 0, '');
170
+ }
155
171
  return;
156
172
  }
157
173
  if (state.overlay.type === 'shortcuts') {
@@ -213,7 +229,7 @@ function wrapCells(value, width) {
213
229
  const rows = [];
214
230
  let current = '';
215
231
  let currentWidth = 0;
216
- for (const char of Array.from(value)) {
232
+ for (const char of graphemeIterate(value)) {
217
233
  const charWidth = Math.max(0, (0, string_width_1.default)(char));
218
234
  if (currentWidth > 0 && currentWidth + charWidth > width) {
219
235
  rows.push(current);
@@ -231,7 +247,7 @@ function truncateCells(value, width) {
231
247
  return '';
232
248
  let output = '';
233
249
  let used = 0;
234
- for (const char of Array.from(value)) {
250
+ for (const char of graphemeIterate(value)) {
235
251
  const charWidth = Math.max(0, (0, string_width_1.default)(char));
236
252
  if (used + charWidth > width)
237
253
  break;
@@ -240,4 +256,17 @@ function truncateCells(value, width) {
240
256
  }
241
257
  return output;
242
258
  }
259
+ /** Iterate by grapheme cluster (not code point) to preserve ZWJ emoji etc. */
260
+ function* graphemeIterate(text) {
261
+ const Segmenter = Intl.Segmenter;
262
+ if (Segmenter) {
263
+ const segmenter = new Segmenter(undefined, { granularity: 'grapheme' });
264
+ for (const part of segmenter.segment(text)) {
265
+ yield part.segment;
266
+ }
267
+ }
268
+ else {
269
+ yield* Array.from(text);
270
+ }
271
+ }
243
272
  //# sourceMappingURL=layout.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"layout.js","sourceRoot":"","sources":["../../src/tui-ui/layout.ts"],"names":[],"mappings":";;;;;AAyBA,4CAiBC;AA1CD,gEAAuC;AACvC,6CAAkG;AAElG,4DAIkC;AAClC,+CAAiD;AACjD,mCAIiB;AAQjB,MAAM,SAAS,GAAG,EAAE,CAAC;AACrB,MAAM,UAAU,GAAG,CAAC,CAAC;AACrB,MAAM,eAAe,GAAG,CAAC,CAAC;AAE1B,SAAgB,gBAAgB,CAAC,KAAiB,EAAE,OAAyB;IAC3E,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;IAC7D,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;IAChE,MAAM,KAAK,GAAG,IAAA,sBAAc,EAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAE5C,MAAM,SAAS,GAAG,MAAM,GAAG,eAAe,CAAC;IAC3C,MAAM,SAAS,GAAG,SAAS,GAAG,CAAC,CAAC;IAChC,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,iBAAiB,IAAI,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;IAEhG,gBAAgB,CAAC,KAAK,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC;IAC/C,YAAY,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;IACtC,YAAY,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;IACtC,aAAa,CAAC,KAAK,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC;IAE5C,MAAM,YAAY,GAAG,kBAAkB,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IACxF,IAAA,sBAAc,EAAC,KAAK,EAAE,SAAS,GAAG,CAAC,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC;IACzD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAe,EAAE,KAAiB,EAAE,OAAe;IAC3E,MAAM,OAAO,GAAG;QACd,GAAG,IAAA,kCAA0B,EAAC,KAAK,CAAC;QACpC,GAAG,IAAA,gCAAwB,EAAC,KAAK,CAAC;KACnC,CAAC;IACF,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,qBAAqB,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;IAClF,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC,CAAC;IACtD,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,sBAAsB,CAAC,EAAE,SAAS,CAAC,CAAC;IACpF,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,OAAO,GAAG,YAAY,CAAC,CAAC;IACjE,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,CAAC;IAEpD,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QAC9B,IAAA,sBAAc,EAAC,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,YAAY,CAAC,KAAe,EAAE,KAAiB,EAAE,GAAW;IACnE,IAAI,GAAG,GAAG,CAAC;QAAE,OAAO;IACpB,MAAM,IAAI,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC;IACpD,MAAM,KAAK,GAAG,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;IAC7D,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,GAAG,IAAA,sBAAW,EAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACnE,MAAM,MAAM,GAAG,KAAK;QAClB,CAAC,CAAC,GAAG,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,GAAG,IAAA,sBAAW,EAAC,KAAK,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE;QACvG,CAAC,CAAC,IAAI,CAAC;IACT,IAAA,sBAAc,EAAC,KAAK,EAAE,GAAG,EAAE,CAAC,EAAE,aAAa,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;AACpE,CAAC;AAED,SAAS,YAAY,CAAC,KAAe,EAAE,KAAiB,EAAE,GAAW;IACnE,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;IAC1B,IAAA,sBAAc,EAAC,KAAK,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;IAC5D,IAAA,sBAAc,EAAC,KAAK,EAAE,GAAG,GAAG,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;IACxC,IAAA,sBAAc,EAAC,KAAK,EAAE,GAAG,GAAG,CAAC,EAAE,CAAC,EAAE,aAAa,CAAC,KAAK,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;IACvF,IAAA,sBAAc,EAAC,KAAK,EAAE,GAAG,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;IAC/C,IAAA,sBAAc,EAAC,KAAK,EAAE,GAAG,GAAG,CAAC,EAAE,CAAC,EAAE,IAAI,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;AAClE,CAAC;AAED,SAAS,aAAa,CAAC,KAAe,EAAE,KAAiB,EAAE,OAAe;IACxE,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,OAAO,IAAI,CAAC;QAAE,OAAO;IAE3C,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;QACtC,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;QAC9B,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QAChC,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CACvC,OAAO,GAAG,CAAC,EACX,OAAO,CAAC,eAAe,IAAI,OAAO,GAAG,CAAC,EACtC,OAAO,CAAC,QAAQ,CAAC,MAAM,CACxB,CAAC,CAAC;QACH,MAAM,KAAK,GAAG,uBAAuB,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,EAAE,YAAY,EAAE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC1G,MAAM,eAAe,GAAG,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,GAAG,YAAY,CAAC,CAAC;QAC5E,MAAM,IAAI,GAAG;YACX,aAAa,OAAO,CAAC,KAAK,KAAK,OAAO,CAAC,aAAa,GAAG,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,GAAG;YACtF,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBACzC,MAAM,KAAK,GAAG,KAAK,GAAG,MAAM,CAAC;gBAC7B,MAAM,MAAM,GAAG,KAAK,KAAK,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;gBAC3D,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC5E,MAAM,IAAI,GAAG,IAAA,oBAAW,EAAC,OAAO,CAAC,gBAAgB,IAAI,CAAC,CAAC,CAAC;gBACxD,MAAM,QAAQ,GAAG,GAAG,OAAO,CAAC,YAAY,IAAI,CAAC,OAAO,CAAC;gBACrD,MAAM,OAAO,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACtE,OAAO,GAAG,MAAM,IAAI,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,KAAK,KAAK,QAAQ,KAAK,IAAI,KAAK,OAAO,CAAC,KAAK,GAAG,OAAO,EAAE,CAAC;YACjJ,CAAC,CAAC;SACH,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,aAAa,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;QAE9C,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;YAC7C,IAAA,sBAAc,EAAC,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;QACH,OAAO;IACT,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QAClC,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;QAC9B,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC;QAC5B,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CACvC,OAAO,GAAG,CAAC,EACX,EAAE,EACF,GAAG,CAAC,UAAU,CAAC,MAAM,CACtB,CAAC,CAAC;QACH,MAAM,KAAK,GAAG,gBAAgB,CAAC,OAAO,CAAC,aAAa,EAAE,YAAY,EAAE,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAC3F,MAAM,MAAM,GAAG,IAAA,4CAA4B,EAAC;YAC1C,OAAO,EAAE,GAAG;YACZ,YAAY,EAAE,KAAK;YACnB,eAAe,EAAE,YAAY;YAC7B,cAAc,EAAE,EAAE;YAClB,oBAAoB,EAAE,EAAE;SACzB,CAAC,CAAC;QACH,MAAM,IAAI,GAAG;YACX,MAAM,CAAC,KAAK;YACZ,GAAG,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE;gBAC1C,MAAM,KAAK,GAAG,KAAK,GAAG,MAAM,CAAC;gBAC7B,MAAM,MAAM,GAAG,KAAK,KAAK,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;gBAC3D,OAAO,GAAG,MAAM,SAAS,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,MAAM,IAAI,CAAC,YAAY,SAAS,IAAI,CAAC,kBAAkB,GAAG,CAAC;YACxH,CAAC,CAAC;SACH,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,aAAa,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;QAE9C,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;YAC7C,IAAA,sBAAc,EAAC,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;QACH,OAAO;IACT,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,KAAK,UAAU,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QACxE,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;QAC9B,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC;QACvF,MAAM,KAAK,GAAG,gBAAgB,CAAC,OAAO,CAAC,aAAa,EAAE,YAAY,EAAE,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC1F,MAAM,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,GAAG,YAAY,CAAC,CAAC;QACtE,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,KAAK,UAAU;YACvC,CAAC,CAAC,WAAW,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YACzD,CAAC,CAAC,QAAQ,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QACzD,MAAM,IAAI,GAAG;YACX,GAAG,KAAK,KAAK,OAAO,CAAC,KAAK,CAAC,MAAM,SAAS,OAAO,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG;YACnF,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC;gBAC5B,CAAC,CAAC,CAAC,qBAAqB,CAAC;gBACzB,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE;oBAClC,MAAM,KAAK,GAAG,KAAK,GAAG,MAAM,CAAC;oBAC7B,MAAM,MAAM,GAAG,KAAK,KAAK,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;oBAC3D,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACpE,OAAO,GAAG,MAAM,IAAI,IAAI,CAAC,KAAK,GAAG,WAAW,EAAE,CAAC;gBACjD,CAAC,CAAC,CAAC;SACN,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,aAAa,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;QAE9C,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;YAC7C,IAAA,sBAAc,EAAC,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;QACH,OAAO;IACT,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;QACxC,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;QAC9B,MAAM,MAAM,GAAG,IAAA,mDAAmC,EAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACpE,MAAM,IAAI,GAAG;YACX,oBAAoB,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE;YAC1C,GAAG,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;gBAC7C,MAAM,MAAM,GAAG,KAAK,KAAK,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;gBAC3D,OAAO;oBACL,GAAG,MAAM,IAAI,IAAI,CAAC,KAAK,EAAE;oBACzB,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;iBACvD,CAAC;YACJ,CAAC,CAAC;YACF,qCAAqC;SACtC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,aAAa,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;QAE9C,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;YAC7C,IAAA,sBAAc,EAAC,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;QACH,OAAO;IACT,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;QACvC,MAAM,IAAI,GAAG;YACX,WAAW;YACX,sCAAsC;YACtC,mDAAmD;YACnD,sEAAsE;SACvE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,aAAa,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;QAE9C,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;YAC7C,IAAA,sBAAc,EAAC,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED,SAAS,uBAAuB,CAAC,aAAqB,EAAE,YAAoB,EAAE,KAAa;IACzF,OAAO,gBAAgB,CAAC,aAAa,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC;AAC9D,CAAC;AAED,SAAS,gBAAgB,CAAC,aAAqB,EAAE,YAAoB,EAAE,KAAa;IAClF,IAAI,YAAY,IAAI,CAAC,IAAI,KAAK,IAAI,YAAY;QAAE,OAAO,CAAC,CAAC;IACzD,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC;IAChD,MAAM,OAAO,GAAG,aAAa,GAAG,UAAU,CAAC;IAC3C,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,YAAY,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;AAC9D,CAAC;AAED,SAAS,qBAAqB,CAAC,KAAsB,EAAE,KAAa;IAClE,MAAM,MAAM,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;IACvC,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC3C,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAEpD,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QACnC,MAAM,IAAI,GAAG,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,EAAE,CAAC;QACrD,OAAO,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAChC,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAsB;IAC9C,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;QACnB,KAAK,MAAM;YACT,OAAO,IAAI,CAAC;QACd,KAAK,MAAM;YACT,OAAO,IAAI,CAAC;QACd,KAAK,OAAO;YACV,OAAO,IAAI,CAAC;QACd,KAAK,SAAS;YACZ,OAAO,IAAI,CAAC;QACd,KAAK,QAAQ;YACX,OAAO,IAAI,CAAC;QACd,KAAK,WAAW,CAAC;QACjB,KAAK,QAAQ,CAAC;QACd;YACE,OAAO,EAAE,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAa,EAAE,MAAc,EAAE,KAAa;IACtE,MAAM,MAAM,GAAG,IAAA,iCAAiB,EAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;IACpD,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,GAAG,IAAA,sBAAW,EAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC;AACvE,CAAC;AAED,SAAS,SAAS,CAAC,KAAa,EAAE,KAAa;IAC7C,IAAI,KAAK,IAAI,CAAC;QAAE,OAAO,CAAC,EAAE,CAAC,CAAC;IAC5B,MAAM,IAAI,GAAa,EAAE,CAAC;IAC1B,IAAI,OAAO,GAAG,EAAE,CAAC;IACjB,IAAI,YAAY,GAAG,CAAC,CAAC;IAErB,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACrC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAA,sBAAW,EAAC,IAAI,CAAC,CAAC,CAAC;QACjD,IAAI,YAAY,GAAG,CAAC,IAAI,YAAY,GAAG,SAAS,GAAG,KAAK,EAAE,CAAC;YACzD,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACnB,OAAO,GAAG,EAAE,CAAC;YACb,YAAY,GAAG,CAAC,CAAC;QACnB,CAAC;QACD,OAAO,IAAI,IAAI,CAAC;QAChB,YAAY,IAAI,SAAS,CAAC;IAC5B,CAAC;IAED,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACnB,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,aAAa,CAAC,KAAa,EAAE,KAAa;IACjD,IAAI,KAAK,IAAI,CAAC;QAAE,OAAO,EAAE,CAAC;IAC1B,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACrC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAA,sBAAW,EAAC,IAAI,CAAC,CAAC,CAAC;QACjD,IAAI,IAAI,GAAG,SAAS,GAAG,KAAK;YAAE,MAAM;QACpC,MAAM,IAAI,IAAI,CAAC;QACf,IAAI,IAAI,SAAS,CAAC;IACpB,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"layout.js","sourceRoot":"","sources":["../../src/tui-ui/layout.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * TuiRenderScheduler — coalesces redundant renders and caps stream paint rate.
3
+ *
4
+ * Priority model:
5
+ * - `immediate`: input, permission, cursor, overlay, resize. At most one
6
+ * paint per event-loop tick (multiple immediate requests merge).
7
+ * - `stream`: streaming assistant/tool deltas. Capped at ~30 FPS; multiple
8
+ * deltas between frames are merged (latest state wins).
9
+ *
10
+ * Commit effects bypass the scheduler entirely; they go through the surface
11
+ * FIFO queue. After a commit, an immediate live paint is requested.
12
+ *
13
+ * Timer deps are injectable for fake-timer testing. No real sleeps.
14
+ */
15
+ export interface TuiRenderSchedulerDeps {
16
+ now: () => number;
17
+ queueMicrotask: (callback: () => void) => void;
18
+ setTimeout: (callback: () => void, delay: number) => unknown;
19
+ clearTimeout: (timer: unknown) => void;
20
+ }
21
+ export interface TuiRenderScheduler {
22
+ /** Request a paint at the given priority. */
23
+ request(priority: 'stream' | 'immediate'): void;
24
+ /** Flush any pending paint synchronously (for lifecycle / tests). */
25
+ flush(): void;
26
+ /** Stop the scheduler and clear any pending timers. */
27
+ stop(): void;
28
+ /** Performance counters (test/debug only, zeroed on stop). */
29
+ readonly counters: TuiRenderSchedulerCounters;
30
+ }
31
+ export interface TuiRenderSchedulerCounters {
32
+ paintCount: number;
33
+ requestCount: number;
34
+ coalescedCount: number;
35
+ }
36
+ export declare function createTuiRenderScheduler(paint: () => void, deps?: Partial<TuiRenderSchedulerDeps>): TuiRenderScheduler;
37
+ //# sourceMappingURL=render-scheduler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"render-scheduler.d.ts","sourceRoot":"","sources":["../../src/tui-ui/render-scheduler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,MAAM,WAAW,sBAAsB;IACrC,GAAG,EAAE,MAAM,MAAM,CAAC;IAClB,cAAc,EAAE,CAAC,QAAQ,EAAE,MAAM,IAAI,KAAK,IAAI,CAAC;IAC/C,UAAU,EAAE,CAAC,QAAQ,EAAE,MAAM,IAAI,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;IAC7D,YAAY,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;CACxC;AAED,MAAM,WAAW,kBAAkB;IACjC,6CAA6C;IAC7C,OAAO,CAAC,QAAQ,EAAE,QAAQ,GAAG,WAAW,GAAG,IAAI,CAAC;IAChD,qEAAqE;IACrE,KAAK,IAAI,IAAI,CAAC;IACd,uDAAuD;IACvD,IAAI,IAAI,IAAI,CAAC;IACb,8DAA8D;IAC9D,QAAQ,CAAC,QAAQ,EAAE,0BAA0B,CAAC;CAC/C;AAED,MAAM,WAAW,0BAA0B;IACzC,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;CACxB;AAKD,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,MAAM,IAAI,EACjB,IAAI,CAAC,EAAE,OAAO,CAAC,sBAAsB,CAAC,GACrC,kBAAkB,CA6GpB"}