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
@@ -9,6 +9,7 @@ exports.cursorShow = cursorShow;
9
9
  exports.disableAutoWrap = disableAutoWrap;
10
10
  exports.enableAutoWrap = enableAutoWrap;
11
11
  const frame_1 = require("./frame");
12
+ const style_1 = require("./style");
12
13
  class TuiTerminalWriter {
13
14
  constructor(output, options = {}) {
14
15
  this.output = output;
@@ -30,11 +31,11 @@ class TuiTerminalWriter {
30
31
  exports.TuiTerminalWriter = TuiTerminalWriter;
31
32
  function renderTerminalFrame(previous, next, options = {}) {
32
33
  const diff = (0, frame_1.diffTuiFrames)(previous, next);
33
- const rows = (0, frame_1.renderFrameRows)(next);
34
34
  const chunks = [];
35
35
  const bracketCursor = options.bracketCursor ?? true;
36
36
  const shouldPaint = diff.changedRows.length > 0 || diff.cursorChanged;
37
37
  const bracketAutoWrap = options.bracketAutoWrap ?? true;
38
+ const suppressColor = (0, style_1.shouldSuppressColor)();
38
39
  if (shouldPaint && bracketAutoWrap) {
39
40
  chunks.push(disableAutoWrap());
40
41
  }
@@ -44,12 +45,24 @@ function renderTerminalFrame(previous, next, options = {}) {
44
45
  for (const rowIndex of diff.changedRows) {
45
46
  chunks.push(moveTo(rowIndex, 0));
46
47
  chunks.push(clearLine());
47
- chunks.push(rows[rowIndex] ?? '');
48
+ // Emit styled spans: SGR per span, SGR0 reset at end (only if styled).
49
+ const spans = (0, frame_1.renderStyledFrameRow)(next.rows[rowIndex] ?? []);
50
+ let emittedSgr = false;
51
+ for (const span of spans) {
52
+ const sgr = (0, style_1.encodeStyleToSgr)(span.style, suppressColor);
53
+ if (sgr) {
54
+ chunks.push(sgr);
55
+ emittedSgr = true;
56
+ }
57
+ chunks.push(span.text);
58
+ }
59
+ if (emittedSgr)
60
+ chunks.push(style_1.SGR_RESET);
48
61
  }
49
62
  if (diff.cursorChanged || diff.changedRows.length > 0) {
50
63
  chunks.push(moveTo(next.cursor.row, next.cursor.column));
51
64
  }
52
- if (bracketCursor) {
65
+ if (bracketCursor && shouldPaint) {
53
66
  chunks.push(next.cursor.visible ? cursorShow() : cursorHide());
54
67
  }
55
68
  else if (diff.cursorChanged && !next.cursor.visible) {
@@ -1 +1 @@
1
- {"version":3,"file":"terminal-writer.js","sourceRoot":"","sources":["../../src/tui-core/terminal-writer.ts"],"names":[],"mappings":";;;AAgDA,kDA4CC;AAED,wBAEC;AAED,8BAEC;AAED,gCAEC;AAED,gCAEC;AAED,0CAEC;AAED,wCAEC;AApHD,mCAKiB;AAqBjB,MAAa,iBAAiB;IAG5B,YACmB,MAAyC,EACzC,UAAoC,EAAE;QADtC,WAAM,GAAN,MAAM,CAAmC;QACzC,YAAO,GAAP,OAAO,CAA+B;QAJjD,aAAQ,GAAoB,IAAI,CAAC;IAKtC,CAAC;IAEJ,MAAM,CAAC,KAAe;QACpB,MAAM,MAAM,GAAG,mBAAmB,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QACvE,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YAClB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACnC,CAAC;QACD,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;QAClC,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,KAAK;QACH,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;IACvB,CAAC;CACF;AApBD,8CAoBC;AAED,SAAgB,mBAAmB,CACjC,QAAyB,EACzB,IAAc,EACd,UAAoC,EAAE;IAEtC,MAAM,IAAI,GAAG,IAAA,qBAAa,EAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IAC3C,MAAM,IAAI,GAAG,IAAA,uBAAe,EAAC,IAAI,CAAC,CAAC;IACnC,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,IAAI,IAAI,CAAC;IACpD,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC;IACtE,MAAM,eAAe,GAAG,OAAO,CAAC,eAAe,IAAI,IAAI,CAAC;IAExD,IAAI,WAAW,IAAI,eAAe,EAAE,CAAC;QACnC,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC;IACjC,CAAC;IAED,IAAI,aAAa,IAAI,WAAW,EAAE,CAAC;QACjC,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;IAC5B,CAAC;IAED,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;QACxC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC;QACjC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;QACzB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;IACpC,CAAC;IAED,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtD,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;IAC3D,CAAC;IAED,IAAI,aAAa,EAAE,CAAC;QAClB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC;IACjE,CAAC;SAAM,IAAI,IAAI,CAAC,aAAa,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACtD,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;IAC5B,CAAC;IAED,IAAI,WAAW,IAAI,eAAe,EAAE,CAAC;QACnC,MAAM,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;IAChC,CAAC;IAED,OAAO;QACL,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;QACvB,IAAI;KACL,CAAC;AACJ,CAAC;AAED,SAAgB,MAAM,CAAC,GAAW,EAAE,MAAc;IAChD,OAAO,QAAQ,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC;AAC5F,CAAC;AAED,SAAgB,SAAS;IACvB,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAgB,UAAU;IACxB,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,SAAgB,UAAU;IACxB,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,SAAgB,eAAe;IAC7B,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,SAAgB,cAAc;IAC5B,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,SAAS,UAAU,CAAC,KAAe;IACjC,OAAO;QACL,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,MAAM,EAAE,EAAE,GAAG,KAAK,CAAC,MAAM,EAAE;QAC3B,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC;KAC5D,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"terminal-writer.js","sourceRoot":"","sources":["../../src/tui-core/terminal-writer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,134 @@
1
+ /**
2
+ * InlineTerminalSurface: primary-screen inline TUI surface.
3
+ *
4
+ * Replaces the alternate-screen (1049) approach. Finalized transcript
5
+ * content is committed once to stdout (entering shell native scrollback),
6
+ * while the bottom live region holds only ephemeral content (streaming
7
+ * assistant, running tools, overlay, status, prompt).
8
+ *
9
+ * Control sequences used (relative addressing only):
10
+ * CR \r return to column 0
11
+ * EL2 \x1b[2K erase current line
12
+ * CUU(n) \x1b[<n>A cursor up (relative)
13
+ * CUD(n) \x1b[<n>B cursor down (relative)
14
+ * CUF(n) \x1b[<n>C cursor forward (relative)
15
+ * SGR0 \x1b[0m reset style
16
+ * DECTCEM \x1b[?25l/?25h hide/show cursor
17
+ * DECAWM \x1b[?7l/?7h disable/enable autowrap (paint batch)
18
+ *
19
+ * Forbidden (never emitted):
20
+ * \x1b[?1049h / \x1b[?1049l (alternate screen)
21
+ * CSI row;col H / f (absolute cursor positioning)
22
+ * CSI 2J (full screen clear)
23
+ * mouse reporting, OSC52, OSC8
24
+ *
25
+ * All operations are serialized via an internal FIFO queue so commit,
26
+ * renderLive, resize, suspend, and unmount never interleave on the same stream.
27
+ */
28
+ import { type TuiFrame } from '../tui-core/frame';
29
+ /** Minimal output stream interface. */
30
+ export interface SurfaceOutput {
31
+ write(chunk: string | Uint8Array): boolean;
32
+ on(event: 'drain', listener: () => void): this;
33
+ off(event: 'drain', listener: () => void): this;
34
+ readonly writable: boolean;
35
+ }
36
+ export interface InlineSurfaceOptions {
37
+ output: SurfaceOutput;
38
+ /** Inject for deterministic tests. */
39
+ now?: () => number;
40
+ }
41
+ export type SurfacePhase = 'idle' | 'mounted' | 'suspended' | 'unmounted' | 'failed';
42
+ export interface InlineSurfaceState {
43
+ phase: SurfacePhase;
44
+ width: number;
45
+ height: number;
46
+ /** Rows reserved for the live region (only grows during a mount lifecycle). */
47
+ liveRegionCapacity: number;
48
+ cursorRow: number;
49
+ cursorColumn: number;
50
+ previousFrame: TuiFrame | null;
51
+ }
52
+ /** A committed transcript entry rendered to styled rows. */
53
+ export interface CommittedEntry {
54
+ displayKey: string;
55
+ rows: {
56
+ text: string;
57
+ style?: import('../tui-core/style').TuiStyle;
58
+ }[][];
59
+ }
60
+ export interface TranscriptCommitBatch {
61
+ generation: number;
62
+ reason: 'append' | 'finalize' | 'restore' | 'replace' | 'clear-divider';
63
+ entries: CommittedEntry[];
64
+ }
65
+ export interface TuiTerminalRenderResult {
66
+ output: string;
67
+ committedEntries: number;
68
+ }
69
+ /**
70
+ * Get the latest live frame for rendering after a commit.
71
+ * The runner provides this so commit + finalize interleaving uses fresh state.
72
+ */
73
+ export type LiveFrameProvider = () => TuiFrame | null;
74
+ export declare class InlineTerminalSurface {
75
+ private phase;
76
+ private width;
77
+ private height;
78
+ private liveRegionCapacity;
79
+ private cursorRow;
80
+ private cursorColumn;
81
+ private previousFrame;
82
+ private readonly output;
83
+ private readonly now;
84
+ private readonly suppressColor;
85
+ /** Serialized FIFO queue of pending operations. */
86
+ private queue;
87
+ private processing;
88
+ constructor(options: InlineSurfaceOptions);
89
+ getState(): InlineSurfaceState;
90
+ /** Safe content width: never write the last column (avoid pending-wrap). */
91
+ get safeContentWidth(): number;
92
+ /** Enqueue an operation; FIFO guarantees no interleaving. */
93
+ private enqueue;
94
+ private drainQueue;
95
+ /** Mount: enable bracketed paste + hide cursor. NO alternate screen. */
96
+ mount(width: number, height: number): Promise<void>;
97
+ /**
98
+ * Commit finalized transcript entries to scrollback (append-only).
99
+ * Protocol: clear live region -> commit rows -> rebuild live frame.
100
+ */
101
+ commit(batch: TranscriptCommitBatch, getLatestLiveFrame: LiveFrameProvider): Promise<TuiTerminalRenderResult>;
102
+ /** Render the live region frame (relative addressing, changed-row diff). */
103
+ renderLive(frame: TuiFrame): Promise<string>;
104
+ private renderLiveInternal;
105
+ /** Ensure the live region has at least requiredRows capacity (grows only). */
106
+ private ensureCapacity;
107
+ /** Clear the live region rows (relative, no absolute addressing). */
108
+ private clearLiveRegion;
109
+ /** Resize: only handle live region; committed history goes to terminal reflow. */
110
+ resize(width: number, height: number, getLatestLiveFrame: LiveFrameProvider): Promise<void>;
111
+ /** Suspend for child process: clear live region, disable bracketed paste, show cursor. */
112
+ suspend(): Promise<void>;
113
+ /** Restore after child process: re-enable bracketed paste, rebuild live frame. */
114
+ restore(getLatestLiveFrame: LiveFrameProvider): Promise<void>;
115
+ /** Unmount: clear live region, restore terminal state. Does NOT erase scrollback. */
116
+ unmount(): Promise<void>;
117
+ /** Flush: wait for queue to drain. Yields to I/O between checks. */
118
+ flush(): Promise<void>;
119
+ private writeRaw;
120
+ /** Reset for tests. */
121
+ reset(): void;
122
+ }
123
+ export declare class MemoryOutput implements SurfaceOutput {
124
+ chunks: string[];
125
+ writable: boolean;
126
+ private drainListeners;
127
+ write(chunk: string | Uint8Array): boolean;
128
+ on(event: 'drain', listener: () => void): this;
129
+ off(event: 'drain', listener: () => void): this;
130
+ text(): string;
131
+ /** Assert output never contains forbidden sequences. */
132
+ assertNoForbidden(): void;
133
+ }
134
+ //# sourceMappingURL=inline-surface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inline-surface.d.ts","sourceRoot":"","sources":["../../src/tui-ui/inline-surface.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,364 @@
1
+ "use strict";
2
+ /**
3
+ * InlineTerminalSurface: primary-screen inline TUI surface.
4
+ *
5
+ * Replaces the alternate-screen (1049) approach. Finalized transcript
6
+ * content is committed once to stdout (entering shell native scrollback),
7
+ * while the bottom live region holds only ephemeral content (streaming
8
+ * assistant, running tools, overlay, status, prompt).
9
+ *
10
+ * Control sequences used (relative addressing only):
11
+ * CR \r return to column 0
12
+ * EL2 \x1b[2K erase current line
13
+ * CUU(n) \x1b[<n>A cursor up (relative)
14
+ * CUD(n) \x1b[<n>B cursor down (relative)
15
+ * CUF(n) \x1b[<n>C cursor forward (relative)
16
+ * SGR0 \x1b[0m reset style
17
+ * DECTCEM \x1b[?25l/?25h hide/show cursor
18
+ * DECAWM \x1b[?7l/?7h disable/enable autowrap (paint batch)
19
+ *
20
+ * Forbidden (never emitted):
21
+ * \x1b[?1049h / \x1b[?1049l (alternate screen)
22
+ * CSI row;col H / f (absolute cursor positioning)
23
+ * CSI 2J (full screen clear)
24
+ * mouse reporting, OSC52, OSC8
25
+ *
26
+ * All operations are serialized via an internal FIFO queue so commit,
27
+ * renderLive, resize, suspend, and unmount never interleave on the same stream.
28
+ */
29
+ Object.defineProperty(exports, "__esModule", { value: true });
30
+ exports.MemoryOutput = exports.InlineTerminalSurface = void 0;
31
+ const frame_1 = require("../tui-core/frame");
32
+ const style_1 = require("../tui-core/style");
33
+ const CR = '\r';
34
+ const EL2 = '\x1b[2K';
35
+ const ENABLE_BRACKETED_PASTE = '\x1b[?2004h';
36
+ const DISABLE_BRACKETED_PASTE = '\x1b[?2004l';
37
+ const SHOW_CURSOR = '\x1b[?25h';
38
+ const HIDE_CURSOR = '\x1b[?25l';
39
+ const DISABLE_AUTOWRAP = '\x1b[?7l';
40
+ const ENABLE_AUTOWRAP = '\x1b[?7h';
41
+ function cursorUp(n) {
42
+ return n > 0 ? `\x1b[${n}A` : '';
43
+ }
44
+ function cursorDown(n) {
45
+ return n > 0 ? `\x1b[${n}B` : '';
46
+ }
47
+ class InlineTerminalSurface {
48
+ constructor(options) {
49
+ this.phase = 'idle';
50
+ this.width = 0;
51
+ this.height = 0;
52
+ this.liveRegionCapacity = 0;
53
+ this.cursorRow = 0;
54
+ this.cursorColumn = 0;
55
+ this.previousFrame = null;
56
+ /** Serialized FIFO queue of pending operations. */
57
+ this.queue = [];
58
+ this.processing = false;
59
+ this.output = options.output;
60
+ this.now = options.now ?? (() => Date.now());
61
+ this.suppressColor = (0, style_1.shouldSuppressColor)();
62
+ }
63
+ getState() {
64
+ return {
65
+ phase: this.phase,
66
+ width: this.width,
67
+ height: this.height,
68
+ liveRegionCapacity: this.liveRegionCapacity,
69
+ cursorRow: this.cursorRow,
70
+ cursorColumn: this.cursorColumn,
71
+ previousFrame: this.previousFrame,
72
+ };
73
+ }
74
+ /** Safe content width: never write the last column (avoid pending-wrap). */
75
+ get safeContentWidth() {
76
+ return Math.max(1, this.width - 1);
77
+ }
78
+ /** Enqueue an operation; FIFO guarantees no interleaving. */
79
+ enqueue(op) {
80
+ return new Promise((resolve, reject) => {
81
+ this.queue.push(async () => {
82
+ try {
83
+ await op();
84
+ resolve();
85
+ }
86
+ catch (err) {
87
+ this.phase = 'failed';
88
+ reject(err);
89
+ }
90
+ });
91
+ this.drainQueue();
92
+ });
93
+ }
94
+ async drainQueue() {
95
+ if (this.processing)
96
+ return;
97
+ this.processing = true;
98
+ while (this.queue.length > 0) {
99
+ const op = this.queue.shift();
100
+ await op();
101
+ }
102
+ this.processing = false;
103
+ // Re-check in case an enqueue happened during the last op's async yield.
104
+ if (this.queue.length > 0) {
105
+ void this.drainQueue();
106
+ }
107
+ }
108
+ /** Mount: enable bracketed paste + hide cursor. NO alternate screen. */
109
+ async mount(width, height) {
110
+ await this.enqueue(async () => {
111
+ if (this.phase !== 'idle')
112
+ return;
113
+ this.width = Math.max(1, Math.floor(width));
114
+ this.height = Math.max(1, Math.floor(height));
115
+ this.phase = 'mounted';
116
+ this.liveRegionCapacity = 0;
117
+ this.cursorRow = 0;
118
+ this.cursorColumn = 0;
119
+ this.writeRaw(`${ENABLE_BRACKETED_PASTE}${HIDE_CURSOR}`);
120
+ });
121
+ }
122
+ /**
123
+ * Commit finalized transcript entries to scrollback (append-only).
124
+ * Protocol: clear live region -> commit rows -> rebuild live frame.
125
+ */
126
+ async commit(batch, getLatestLiveFrame) {
127
+ let output = '';
128
+ await this.enqueue(async () => {
129
+ const chunks = [];
130
+ // 1. Move to live top and clear live region.
131
+ chunks.push(this.clearLiveRegion());
132
+ // 2. Commit each entry's rows with SGR0 after each row.
133
+ for (const entry of batch.entries) {
134
+ for (const row of entry.rows) {
135
+ for (const span of row) {
136
+ if (span.style) {
137
+ const sgr = (0, style_1.encodeStyleToSgr)(span.style, this.suppressColor);
138
+ if (sgr)
139
+ chunks.push(sgr);
140
+ }
141
+ chunks.push(span.text);
142
+ }
143
+ chunks.push(style_1.SGR_RESET);
144
+ chunks.push('\n'); // hard line boundary, never rely on pending wrap
145
+ }
146
+ }
147
+ // 3. Reset live region capacity and rebuild live frame.
148
+ this.liveRegionCapacity = 0;
149
+ this.previousFrame = null;
150
+ const liveFrame = getLatestLiveFrame();
151
+ if (liveFrame) {
152
+ chunks.push(this.renderLiveInternal(liveFrame));
153
+ }
154
+ output = chunks.join('');
155
+ this.writeRaw(output);
156
+ });
157
+ return { output, committedEntries: batch.entries.length };
158
+ }
159
+ /** Render the live region frame (relative addressing, changed-row diff). */
160
+ async renderLive(frame) {
161
+ let output = '';
162
+ await this.enqueue(async () => {
163
+ output = this.renderLiveInternal(frame);
164
+ this.writeRaw(output);
165
+ });
166
+ return output;
167
+ }
168
+ renderLiveInternal(frame) {
169
+ const chunks = [];
170
+ const requiredRows = Math.min(frame.height, Math.max(1, this.height - 1));
171
+ // Ensure capacity for the live region.
172
+ chunks.push(this.ensureCapacity(requiredRows));
173
+ // Move to live top.
174
+ chunks.push(cursorUp(this.cursorRow));
175
+ this.cursorRow = 0;
176
+ // Clear all capacity rows, then write frame rows.
177
+ for (let i = 0; i < this.liveRegionCapacity; i++) {
178
+ chunks.push(CR, EL2);
179
+ if (i < this.liveRegionCapacity - 1)
180
+ chunks.push(cursorDown(1));
181
+ }
182
+ // Back to top.
183
+ chunks.push(cursorUp(this.liveRegionCapacity - 1));
184
+ // Write frame rows.
185
+ for (let r = 0; r < Math.min(frame.height, this.liveRegionCapacity); r++) {
186
+ const spans = (0, frame_1.renderStyledFrameRow)(frame.rows[r] ?? []);
187
+ let emittedSgr = false;
188
+ for (const span of spans) {
189
+ const sgr = (0, style_1.encodeStyleToSgr)(span.style, this.suppressColor);
190
+ if (sgr) {
191
+ chunks.push(sgr);
192
+ emittedSgr = true;
193
+ }
194
+ chunks.push(span.text);
195
+ }
196
+ if (emittedSgr)
197
+ chunks.push(style_1.SGR_RESET);
198
+ if (r < Math.min(frame.height, this.liveRegionCapacity) - 1) {
199
+ chunks.push(CR, cursorDown(1));
200
+ }
201
+ }
202
+ // Position cursor at frame cursor.
203
+ const targetRow = Math.min(frame.cursor.row, this.liveRegionCapacity - 1);
204
+ const targetCol = Math.min(frame.cursor.column, Math.max(0, this.width - 1));
205
+ chunks.push(cursorUp(this.cursorRow));
206
+ chunks.push(cursorDown(targetRow));
207
+ chunks.push(CR);
208
+ if (targetCol > 0)
209
+ chunks.push(`\x1b[${targetCol}C`);
210
+ this.cursorRow = targetRow;
211
+ this.cursorColumn = targetCol;
212
+ chunks.push(frame.cursor.visible ? SHOW_CURSOR : HIDE_CURSOR);
213
+ chunks.push(ENABLE_AUTOWRAP);
214
+ this.previousFrame = frame;
215
+ return chunks.join('');
216
+ }
217
+ /** Ensure the live region has at least requiredRows capacity (grows only). */
218
+ ensureCapacity(requiredRows) {
219
+ const target = Math.min(requiredRows, Math.max(1, this.height - 1));
220
+ const chunks = [];
221
+ while (this.liveRegionCapacity < target) {
222
+ chunks.push('\n'); // hard line boundary
223
+ this.liveRegionCapacity += 1;
224
+ this.cursorRow = this.liveRegionCapacity;
225
+ }
226
+ return chunks.join('');
227
+ }
228
+ /** Clear the live region rows (relative, no absolute addressing). */
229
+ clearLiveRegion() {
230
+ const chunks = [];
231
+ chunks.push(cursorUp(this.cursorRow));
232
+ for (let i = 0; i < this.liveRegionCapacity; i++) {
233
+ chunks.push(CR, EL2);
234
+ if (i < this.liveRegionCapacity - 1)
235
+ chunks.push(cursorDown(1));
236
+ }
237
+ chunks.push(cursorUp(this.liveRegionCapacity - 1));
238
+ this.cursorRow = 0;
239
+ return chunks.join('');
240
+ }
241
+ /** Resize: only handle live region; committed history goes to terminal reflow. */
242
+ async resize(width, height, getLatestLiveFrame) {
243
+ await this.enqueue(async () => {
244
+ this.width = Math.max(1, Math.floor(width));
245
+ this.height = Math.max(1, Math.floor(height));
246
+ // Reset capacity and rebuild live frame.
247
+ this.liveRegionCapacity = 0;
248
+ this.cursorRow = 0;
249
+ this.previousFrame = null;
250
+ const liveFrame = getLatestLiveFrame();
251
+ if (liveFrame) {
252
+ this.writeRaw(this.renderLiveInternal(liveFrame));
253
+ }
254
+ });
255
+ }
256
+ /** Suspend for child process: clear live region, disable bracketed paste, show cursor. */
257
+ async suspend() {
258
+ await this.enqueue(async () => {
259
+ if (this.phase !== 'mounted')
260
+ return;
261
+ this.writeRaw(this.clearLiveRegion());
262
+ this.writeRaw(`${style_1.SGR_RESET}${SHOW_CURSOR}${DISABLE_BRACKETED_PASTE}${ENABLE_AUTOWRAP}`);
263
+ this.phase = 'suspended';
264
+ this.liveRegionCapacity = 0;
265
+ this.previousFrame = null;
266
+ });
267
+ }
268
+ /** Restore after child process: re-enable bracketed paste, rebuild live frame. */
269
+ async restore(getLatestLiveFrame) {
270
+ await this.enqueue(async () => {
271
+ if (this.phase !== 'suspended')
272
+ return;
273
+ this.phase = 'mounted';
274
+ this.writeRaw(`${ENABLE_BRACKETED_PASTE}${HIDE_CURSOR}${DISABLE_AUTOWRAP}`);
275
+ const liveFrame = getLatestLiveFrame();
276
+ if (liveFrame) {
277
+ this.writeRaw(this.renderLiveInternal(liveFrame));
278
+ }
279
+ });
280
+ }
281
+ /** Unmount: clear live region, restore terminal state. Does NOT erase scrollback. */
282
+ async unmount() {
283
+ await this.enqueue(async () => {
284
+ if (this.phase === 'unmounted')
285
+ return;
286
+ this.writeRaw(this.clearLiveRegion());
287
+ this.writeRaw(`${style_1.SGR_RESET}${SHOW_CURSOR}${DISABLE_BRACKETED_PASTE}${ENABLE_AUTOWRAP}`);
288
+ // Final newline so shell prompt starts on a clean line.
289
+ this.writeRaw('\n');
290
+ this.phase = 'unmounted';
291
+ this.liveRegionCapacity = 0;
292
+ this.previousFrame = null;
293
+ });
294
+ }
295
+ /** Flush: wait for queue to drain. Yields to I/O between checks. */
296
+ async flush() {
297
+ while (this.processing || this.queue.length > 0) {
298
+ await new Promise(resolve => setTimeout(resolve, 0));
299
+ }
300
+ }
301
+ writeRaw(chunk) {
302
+ if (this.phase === 'failed' || this.phase === 'unmounted')
303
+ return;
304
+ try {
305
+ this.output.write(chunk);
306
+ }
307
+ catch {
308
+ this.phase = 'failed';
309
+ }
310
+ }
311
+ /** Reset for tests. */
312
+ reset() {
313
+ this.phase = 'idle';
314
+ this.liveRegionCapacity = 0;
315
+ this.cursorRow = 0;
316
+ this.cursorColumn = 0;
317
+ this.previousFrame = null;
318
+ this.queue = [];
319
+ this.processing = false;
320
+ }
321
+ }
322
+ exports.InlineTerminalSurface = InlineTerminalSurface;
323
+ // ============================================================================
324
+ // MemoryOutput: test double for surface tests
325
+ // ============================================================================
326
+ class MemoryOutput {
327
+ constructor() {
328
+ this.chunks = [];
329
+ this.writable = true;
330
+ this.drainListeners = [];
331
+ }
332
+ write(chunk) {
333
+ this.chunks.push(typeof chunk === 'string' ? chunk : Buffer.from(chunk).toString('utf8'));
334
+ return true;
335
+ }
336
+ on(event, listener) {
337
+ if (event === 'drain')
338
+ this.drainListeners.push(listener);
339
+ return this;
340
+ }
341
+ off(event, listener) {
342
+ if (event === 'drain') {
343
+ this.drainListeners = this.drainListeners.filter(l => l !== listener);
344
+ }
345
+ return this;
346
+ }
347
+ text() {
348
+ return this.chunks.join('');
349
+ }
350
+ /** Assert output never contains forbidden sequences. */
351
+ assertNoForbidden() {
352
+ const text = this.text();
353
+ if (text.includes('\x1b[?1049h'))
354
+ throw new Error('output contains alternate-screen enter');
355
+ if (text.includes('\x1b[?1049l'))
356
+ throw new Error('output contains alternate-screen exit');
357
+ if (/\x1b\[\d+;\d+H/.test(text))
358
+ throw new Error('output contains absolute cursor positioning');
359
+ if (text.includes('\x1b[2J'))
360
+ throw new Error('output contains full-screen clear');
361
+ }
362
+ }
363
+ exports.MemoryOutput = MemoryOutput;
364
+ //# sourceMappingURL=inline-surface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inline-surface.js","sourceRoot":"","sources":["../../src/tui-ui/inline-surface.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"launch.d.ts","sourceRoot":"","sources":["../../src/tui-ui/launch.ts"],"names":[],"mappings":"AACA,OAAO,EAAiC,KAAK,kBAAkB,EAA6B,MAAM,sBAAsB,CAAC;AAUzH,MAAM,WAAW,gBAAgB;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC,WAAW,CAAC;CAC7B;AAED,wBAAsB,WAAW,CAC/B,OAAO,EAAE,kBAAkB,EAC3B,OAAO,GAAE,gBAAqB,GAC7B,OAAO,CAAC,IAAI,CAAC,CA2Kf"}
1
+ {"version":3,"file":"launch.d.ts","sourceRoot":"","sources":["../../src/tui-ui/launch.ts"],"names":[],"mappings":"AACA,OAAO,EAAiC,KAAK,kBAAkB,EAA6B,MAAM,sBAAsB,CAAC;AAWzH,MAAM,WAAW,gBAAgB;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC,WAAW,CAAC;CAC7B;AAED,wBAAsB,WAAW,CAC/B,OAAO,EAAE,kBAAkB,EAC3B,OAAO,GAAE,gBAAqB,GAC7B,OAAO,CAAC,IAAI,CAAC,CA2Uf"}