openhorse 0.2.19 → 0.2.22

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 (423) 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 +28 -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 +202 -77
  12. package/dist/commands/index.js.map +1 -1
  13. package/dist/commands/parser.d.ts.map +1 -1
  14. package/dist/commands/parser.js +8 -3
  15. package/dist/commands/parser.js.map +1 -1
  16. package/dist/commands/types.d.ts +2 -0
  17. package/dist/commands/types.d.ts.map +1 -1
  18. package/dist/commands/types.js.map +1 -1
  19. package/dist/core/checkpoint.d.ts.map +1 -1
  20. package/dist/core/checkpoint.js +3 -0
  21. package/dist/core/checkpoint.js.map +1 -1
  22. package/dist/core/cost-tracker.d.ts +45 -5
  23. package/dist/core/cost-tracker.d.ts.map +1 -1
  24. package/dist/core/cost-tracker.js +78 -13
  25. package/dist/core/cost-tracker.js.map +1 -1
  26. package/dist/framework/index.d.ts +1 -1
  27. package/dist/framework/index.d.ts.map +1 -1
  28. package/dist/framework/index.js.map +1 -1
  29. package/dist/framework/prompt.d.ts.map +1 -1
  30. package/dist/framework/prompt.js +16 -0
  31. package/dist/framework/prompt.js.map +1 -1
  32. package/dist/framework/query.d.ts +25 -0
  33. package/dist/framework/query.d.ts.map +1 -1
  34. package/dist/framework/query.js +196 -56
  35. package/dist/framework/query.js.map +1 -1
  36. package/dist/framework/store.d.ts +6 -1
  37. package/dist/framework/store.d.ts.map +1 -1
  38. package/dist/framework/store.js +10 -1
  39. package/dist/framework/store.js.map +1 -1
  40. package/dist/harness/context-harness.d.ts.map +1 -1
  41. package/dist/harness/context-harness.js +6 -1
  42. package/dist/harness/context-harness.js.map +1 -1
  43. package/dist/harness/ledger.d.ts +1 -0
  44. package/dist/harness/ledger.d.ts.map +1 -1
  45. package/dist/harness/ledger.js +12 -0
  46. package/dist/harness/ledger.js.map +1 -1
  47. package/dist/harness/safety.d.ts +2 -0
  48. package/dist/harness/safety.d.ts.map +1 -1
  49. package/dist/harness/safety.js +27 -3
  50. package/dist/harness/safety.js.map +1 -1
  51. package/dist/index.d.ts +2 -1
  52. package/dist/index.d.ts.map +1 -1
  53. package/dist/init.d.ts +1 -1
  54. package/dist/init.d.ts.map +1 -1
  55. package/dist/init.js +1 -1
  56. package/dist/init.js.map +1 -1
  57. package/dist/ink-ui/components/Markdown.d.ts +1 -1
  58. package/dist/ink-ui/components/Markdown.d.ts.map +1 -1
  59. package/dist/ink-ui/components/Markdown.js +1 -1
  60. package/dist/ink-ui/components/Markdown.js.map +1 -1
  61. package/dist/ink-ui/components/StatusLine.d.ts.map +1 -1
  62. package/dist/ink-ui/components/StatusLine.js +0 -2
  63. package/dist/ink-ui/components/StatusLine.js.map +1 -1
  64. package/dist/ink-ui/runtime/grapheme.d.ts +9 -8
  65. package/dist/ink-ui/runtime/grapheme.d.ts.map +1 -1
  66. package/dist/ink-ui/runtime/grapheme.js +14 -60
  67. package/dist/ink-ui/runtime/grapheme.js.map +1 -1
  68. package/dist/ink-ui/runtime/input-buffer.d.ts +9 -31
  69. package/dist/ink-ui/runtime/input-buffer.d.ts.map +1 -1
  70. package/dist/ink-ui/runtime/input-buffer.js +15 -162
  71. package/dist/ink-ui/runtime/input-buffer.js.map +1 -1
  72. package/dist/ink-ui/runtime/native-cursor.js +0 -25
  73. package/dist/ink-ui/runtime/native-cursor.js.map +1 -1
  74. package/dist/ink-ui/runtime/prompt-layout.d.ts +9 -29
  75. package/dist/ink-ui/runtime/prompt-layout.d.ts.map +1 -1
  76. package/dist/ink-ui/runtime/prompt-layout.js +18 -166
  77. package/dist/ink-ui/runtime/prompt-layout.js.map +1 -1
  78. package/dist/ink-ui/runtime/transcript-state.d.ts.map +1 -1
  79. package/dist/ink-ui/runtime/transcript-state.js +2 -0
  80. package/dist/ink-ui/runtime/transcript-state.js.map +1 -1
  81. package/dist/ink-ui/screens/ReplScreen.d.ts.map +1 -1
  82. package/dist/ink-ui/screens/ReplScreen.js +23 -5
  83. package/dist/ink-ui/screens/ReplScreen.js.map +1 -1
  84. package/dist/memory/entrypoint.js +1 -1
  85. package/dist/memory/entrypoint.js.map +1 -1
  86. package/dist/memory/storage.js +1 -1
  87. package/dist/memory/storage.js.map +1 -1
  88. package/dist/memory/store.d.ts +1 -0
  89. package/dist/memory/store.d.ts.map +1 -1
  90. package/dist/memory/store.js +9 -0
  91. package/dist/memory/store.js.map +1 -1
  92. package/dist/runtime/agent-runtime-controller.d.ts.map +1 -1
  93. package/dist/runtime/agent-runtime-controller.js +25 -0
  94. package/dist/runtime/agent-runtime-controller.js.map +1 -1
  95. package/dist/runtime/agent-runtime-protocol.d.ts +4 -1
  96. package/dist/runtime/agent-runtime-protocol.d.ts.map +1 -1
  97. package/dist/runtime/agent-runtime-protocol.js +6 -0
  98. package/dist/runtime/agent-runtime-protocol.js.map +1 -1
  99. package/dist/runtime/chat-controller.d.ts +27 -0
  100. package/dist/runtime/chat-controller.d.ts.map +1 -1
  101. package/dist/runtime/chat-controller.js +374 -88
  102. package/dist/runtime/chat-controller.js.map +1 -1
  103. package/dist/runtime/composer/buffer.d.ts +43 -0
  104. package/dist/runtime/composer/buffer.d.ts.map +1 -0
  105. package/dist/runtime/composer/buffer.js +176 -0
  106. package/dist/runtime/composer/buffer.js.map +1 -0
  107. package/dist/runtime/composer/grapheme.d.ts +19 -0
  108. package/dist/runtime/composer/grapheme.d.ts.map +1 -0
  109. package/dist/runtime/composer/grapheme.js +73 -0
  110. package/dist/runtime/composer/grapheme.js.map +1 -0
  111. package/dist/runtime/composer/history.d.ts +39 -0
  112. package/dist/runtime/composer/history.d.ts.map +1 -0
  113. package/dist/runtime/composer/history.js +91 -0
  114. package/dist/runtime/composer/history.js.map +1 -0
  115. package/dist/runtime/composer/layout.d.ts +40 -0
  116. package/dist/runtime/composer/layout.d.ts.map +1 -0
  117. package/dist/runtime/composer/layout.js +174 -0
  118. package/dist/runtime/composer/layout.js.map +1 -0
  119. package/dist/runtime/rich-text/ansi-parser.d.ts +31 -0
  120. package/dist/runtime/rich-text/ansi-parser.d.ts.map +1 -0
  121. package/dist/runtime/rich-text/ansi-parser.js +310 -0
  122. package/dist/runtime/rich-text/ansi-parser.js.map +1 -0
  123. package/dist/runtime/rich-text/layout.d.ts +12 -0
  124. package/dist/runtime/rich-text/layout.d.ts.map +1 -0
  125. package/dist/runtime/rich-text/layout.js +362 -0
  126. package/dist/runtime/rich-text/layout.js.map +1 -0
  127. package/dist/runtime/rich-text/markdown-parser.d.ts +17 -0
  128. package/dist/runtime/rich-text/markdown-parser.d.ts.map +1 -0
  129. package/dist/runtime/rich-text/markdown-parser.js +218 -0
  130. package/dist/runtime/rich-text/markdown-parser.js.map +1 -0
  131. package/dist/runtime/rich-text/sanitizer.d.ts +18 -0
  132. package/dist/runtime/rich-text/sanitizer.d.ts.map +1 -0
  133. package/dist/runtime/rich-text/sanitizer.js +32 -0
  134. package/dist/runtime/rich-text/sanitizer.js.map +1 -0
  135. package/dist/runtime/rich-text/types.d.ts +59 -0
  136. package/dist/runtime/rich-text/types.d.ts.map +1 -0
  137. package/dist/runtime/rich-text/types.js +17 -0
  138. package/dist/runtime/rich-text/types.js.map +1 -0
  139. package/dist/runtime/subagents/budget.d.ts +118 -0
  140. package/dist/runtime/subagents/budget.d.ts.map +1 -0
  141. package/dist/runtime/subagents/budget.js +173 -0
  142. package/dist/runtime/subagents/budget.js.map +1 -0
  143. package/dist/runtime/subagents/child-executor-guard.d.ts +60 -0
  144. package/dist/runtime/subagents/child-executor-guard.d.ts.map +1 -0
  145. package/dist/runtime/subagents/child-executor-guard.js +219 -0
  146. package/dist/runtime/subagents/child-executor-guard.js.map +1 -0
  147. package/dist/runtime/subagents/context-builder.d.ts +34 -0
  148. package/dist/runtime/subagents/context-builder.d.ts.map +1 -0
  149. package/dist/runtime/subagents/context-builder.js +99 -0
  150. package/dist/runtime/subagents/context-builder.js.map +1 -0
  151. package/dist/runtime/subagents/index.d.ts +21 -0
  152. package/dist/runtime/subagents/index.d.ts.map +1 -0
  153. package/dist/runtime/subagents/index.js +62 -0
  154. package/dist/runtime/subagents/index.js.map +1 -0
  155. package/dist/runtime/subagents/policy.d.ts +68 -0
  156. package/dist/runtime/subagents/policy.d.ts.map +1 -0
  157. package/dist/runtime/subagents/policy.js +230 -0
  158. package/dist/runtime/subagents/policy.js.map +1 -0
  159. package/dist/runtime/subagents/presets.d.ts +44 -0
  160. package/dist/runtime/subagents/presets.d.ts.map +1 -0
  161. package/dist/runtime/subagents/presets.js +148 -0
  162. package/dist/runtime/subagents/presets.js.map +1 -0
  163. package/dist/runtime/subagents/production.d.ts +44 -0
  164. package/dist/runtime/subagents/production.d.ts.map +1 -0
  165. package/dist/runtime/subagents/production.js +143 -0
  166. package/dist/runtime/subagents/production.js.map +1 -0
  167. package/dist/runtime/subagents/provider-gate.d.ts +99 -0
  168. package/dist/runtime/subagents/provider-gate.d.ts.map +1 -0
  169. package/dist/runtime/subagents/provider-gate.js +186 -0
  170. package/dist/runtime/subagents/provider-gate.js.map +1 -0
  171. package/dist/runtime/subagents/result-parser.d.ts +40 -0
  172. package/dist/runtime/subagents/result-parser.d.ts.map +1 -0
  173. package/dist/runtime/subagents/result-parser.js +240 -0
  174. package/dist/runtime/subagents/result-parser.js.map +1 -0
  175. package/dist/runtime/subagents/runner.d.ts +53 -0
  176. package/dist/runtime/subagents/runner.d.ts.map +1 -0
  177. package/dist/runtime/subagents/runner.js +172 -0
  178. package/dist/runtime/subagents/runner.js.map +1 -0
  179. package/dist/runtime/subagents/runtime-integration.d.ts +73 -0
  180. package/dist/runtime/subagents/runtime-integration.d.ts.map +1 -0
  181. package/dist/runtime/subagents/runtime-integration.js +148 -0
  182. package/dist/runtime/subagents/runtime-integration.js.map +1 -0
  183. package/dist/runtime/subagents/supervisor.d.ts +79 -0
  184. package/dist/runtime/subagents/supervisor.d.ts.map +1 -0
  185. package/dist/runtime/subagents/supervisor.js +301 -0
  186. package/dist/runtime/subagents/supervisor.js.map +1 -0
  187. package/dist/runtime/subagents/tool.d.ts +38 -0
  188. package/dist/runtime/subagents/tool.d.ts.map +1 -0
  189. package/dist/runtime/subagents/tool.js +171 -0
  190. package/dist/runtime/subagents/tool.js.map +1 -0
  191. package/dist/runtime/subagents/types.d.ts +152 -0
  192. package/dist/runtime/subagents/types.d.ts.map +1 -0
  193. package/dist/runtime/subagents/types.js +56 -0
  194. package/dist/runtime/subagents/types.js.map +1 -0
  195. package/dist/runtime/ui-events.d.ts +18 -0
  196. package/dist/runtime/ui-events.d.ts.map +1 -1
  197. package/dist/runtime/ui-events.js.map +1 -1
  198. package/dist/runtime/ui-view-model.d.ts +44 -1
  199. package/dist/runtime/ui-view-model.d.ts.map +1 -1
  200. package/dist/runtime/ui-view-model.js +90 -37
  201. package/dist/runtime/ui-view-model.js.map +1 -1
  202. package/dist/sdk/query.d.ts.map +1 -1
  203. package/dist/sdk/query.js +0 -1
  204. package/dist/sdk/query.js.map +1 -1
  205. package/dist/services/auto-fix/autoFixHook.d.ts.map +1 -1
  206. package/dist/services/auto-fix/autoFixHook.js +3 -2
  207. package/dist/services/auto-fix/autoFixHook.js.map +1 -1
  208. package/dist/services/auto-fix/autoFixRunner.d.ts +2 -2
  209. package/dist/services/auto-fix/autoFixRunner.d.ts.map +1 -1
  210. package/dist/services/auto-fix/autoFixRunner.js +2 -2
  211. package/dist/services/auto-fix/autoFixRunner.js.map +1 -1
  212. package/dist/services/compact/auto-compact.d.ts +15 -2
  213. package/dist/services/compact/auto-compact.d.ts.map +1 -1
  214. package/dist/services/compact/auto-compact.js +59 -27
  215. package/dist/services/compact/auto-compact.js.map +1 -1
  216. package/dist/services/compact/compact.d.ts +2 -0
  217. package/dist/services/compact/compact.d.ts.map +1 -1
  218. package/dist/services/compact/compact.js +22 -5
  219. package/dist/services/compact/compact.js.map +1 -1
  220. package/dist/services/compact/coordinator.d.ts +26 -0
  221. package/dist/services/compact/coordinator.d.ts.map +1 -0
  222. package/dist/services/compact/coordinator.js +44 -0
  223. package/dist/services/compact/coordinator.js.map +1 -0
  224. package/dist/services/compact/index.d.ts +1 -0
  225. package/dist/services/compact/index.d.ts.map +1 -1
  226. package/dist/services/compact/index.js +3 -1
  227. package/dist/services/compact/index.js.map +1 -1
  228. package/dist/services/compact/summary-generator.d.ts +6 -2
  229. package/dist/services/compact/summary-generator.d.ts.map +1 -1
  230. package/dist/services/compact/summary-generator.js +73 -32
  231. package/dist/services/compact/summary-generator.js.map +1 -1
  232. package/dist/services/concurrent-sessions.d.ts.map +1 -1
  233. package/dist/services/concurrent-sessions.js +3 -0
  234. package/dist/services/concurrent-sessions.js.map +1 -1
  235. package/dist/services/config-dir.d.ts +11 -1
  236. package/dist/services/config-dir.d.ts.map +1 -1
  237. package/dist/services/config-dir.js +19 -2
  238. package/dist/services/config-dir.js.map +1 -1
  239. package/dist/services/config.d.ts +13 -4
  240. package/dist/services/config.d.ts.map +1 -1
  241. package/dist/services/config.js +85 -4
  242. package/dist/services/config.js.map +1 -1
  243. package/dist/services/doctor.d.ts +2 -0
  244. package/dist/services/doctor.d.ts.map +1 -1
  245. package/dist/services/doctor.js +9 -2
  246. package/dist/services/doctor.js.map +1 -1
  247. package/dist/services/global-config.d.ts +33 -1
  248. package/dist/services/global-config.d.ts.map +1 -1
  249. package/dist/services/global-config.js +3 -0
  250. package/dist/services/global-config.js.map +1 -1
  251. package/dist/services/llm.d.ts +21 -4
  252. package/dist/services/llm.d.ts.map +1 -1
  253. package/dist/services/llm.js +75 -9
  254. package/dist/services/llm.js.map +1 -1
  255. package/dist/services/mcp/transports.d.ts +2 -0
  256. package/dist/services/mcp/transports.d.ts.map +1 -1
  257. package/dist/services/mcp/transports.js +23 -2
  258. package/dist/services/mcp/transports.js.map +1 -1
  259. package/dist/services/memory.d.ts.map +1 -1
  260. package/dist/services/memory.js.map +1 -1
  261. package/dist/services/model-context.d.ts +36 -0
  262. package/dist/services/model-context.d.ts.map +1 -1
  263. package/dist/services/model-context.js +243 -31
  264. package/dist/services/model-context.js.map +1 -1
  265. package/dist/services/redaction.js +1 -1
  266. package/dist/services/redaction.js.map +1 -1
  267. package/dist/services/session-memory/sessionMemory.js +1 -1
  268. package/dist/services/session-memory/sessionMemory.js.map +1 -1
  269. package/dist/services/session-storage.d.ts +39 -1
  270. package/dist/services/session-storage.d.ts.map +1 -1
  271. package/dist/services/session-storage.js +156 -28
  272. package/dist/services/session-storage.js.map +1 -1
  273. package/dist/services/task-manager.d.ts +2 -0
  274. package/dist/services/task-manager.d.ts.map +1 -1
  275. package/dist/services/task-manager.js +13 -0
  276. package/dist/services/task-manager.js.map +1 -1
  277. package/dist/services/usage-state.d.ts +55 -5
  278. package/dist/services/usage-state.d.ts.map +1 -1
  279. package/dist/services/usage-state.js +188 -59
  280. package/dist/services/usage-state.js.map +1 -1
  281. package/dist/services/verification-profile.d.ts.map +1 -1
  282. package/dist/services/verification-profile.js +3 -2
  283. package/dist/services/verification-profile.js.map +1 -1
  284. package/dist/services/workspace-diff.d.ts.map +1 -1
  285. package/dist/services/workspace-diff.js +34 -3
  286. package/dist/services/workspace-diff.js.map +1 -1
  287. package/dist/services/yaml-config.js +1 -1
  288. package/dist/skills/loader.d.ts +1 -1
  289. package/dist/skills/loader.d.ts.map +1 -1
  290. package/dist/skills/loader.js +1 -1
  291. package/dist/skills/loader.js.map +1 -1
  292. package/dist/skills/registry.d.ts +1 -1
  293. package/dist/skills/registry.d.ts.map +1 -1
  294. package/dist/skills/registry.js +1 -1
  295. package/dist/skills/registry.js.map +1 -1
  296. package/dist/skills/runtime.d.ts +9 -5
  297. package/dist/skills/runtime.d.ts.map +1 -1
  298. package/dist/skills/runtime.js +157 -12
  299. package/dist/skills/runtime.js.map +1 -1
  300. package/dist/terminal-ui/launch.d.ts +20 -3
  301. package/dist/terminal-ui/launch.d.ts.map +1 -1
  302. package/dist/terminal-ui/launch.js +86 -25
  303. package/dist/terminal-ui/launch.js.map +1 -1
  304. package/dist/terminal-ui/raw-editor.d.ts +9 -0
  305. package/dist/terminal-ui/raw-editor.d.ts.map +1 -1
  306. package/dist/terminal-ui/raw-editor.js +207 -30
  307. package/dist/terminal-ui/raw-editor.js.map +1 -1
  308. package/dist/tools/bash_security.d.ts.map +1 -1
  309. package/dist/tools/bash_security.js +14 -5
  310. package/dist/tools/bash_security.js.map +1 -1
  311. package/dist/tools/index.d.ts.map +1 -1
  312. package/dist/tools/index.js +51 -24
  313. package/dist/tools/index.js.map +1 -1
  314. package/dist/tools/lsp.js.map +1 -1
  315. package/dist/tools/plan.d.ts.map +1 -1
  316. package/dist/tools/plan.js +7 -0
  317. package/dist/tools/plan.js.map +1 -1
  318. package/dist/tools/web.d.ts +10 -0
  319. package/dist/tools/web.d.ts.map +1 -1
  320. package/dist/tools/web.js +84 -4
  321. package/dist/tools/web.js.map +1 -1
  322. package/dist/tui-core/frame.d.ts +13 -1
  323. package/dist/tui-core/frame.d.ts.map +1 -1
  324. package/dist/tui-core/frame.js +61 -8
  325. package/dist/tui-core/frame.js.map +1 -1
  326. package/dist/tui-core/input-parser.d.ts +1 -1
  327. package/dist/tui-core/input-parser.d.ts.map +1 -1
  328. package/dist/tui-core/input-parser.js +20 -1
  329. package/dist/tui-core/input-parser.js.map +1 -1
  330. package/dist/tui-core/style.d.ts +103 -0
  331. package/dist/tui-core/style.d.ts.map +1 -0
  332. package/dist/tui-core/style.js +269 -0
  333. package/dist/tui-core/style.js.map +1 -0
  334. package/dist/tui-core/terminal-writer.d.ts.map +1 -1
  335. package/dist/tui-core/terminal-writer.js +16 -3
  336. package/dist/tui-core/terminal-writer.js.map +1 -1
  337. package/dist/tui-ui/inline-surface.d.ts +185 -0
  338. package/dist/tui-ui/inline-surface.d.ts.map +1 -0
  339. package/dist/tui-ui/inline-surface.js +615 -0
  340. package/dist/tui-ui/inline-surface.js.map +1 -0
  341. package/dist/tui-ui/launch.d.ts +1 -0
  342. package/dist/tui-ui/launch.d.ts.map +1 -1
  343. package/dist/tui-ui/launch.js +398 -69
  344. package/dist/tui-ui/launch.js.map +1 -1
  345. package/dist/tui-ui/layout.d.ts +51 -2
  346. package/dist/tui-ui/layout.d.ts.map +1 -1
  347. package/dist/tui-ui/layout.js +240 -77
  348. package/dist/tui-ui/layout.js.map +1 -1
  349. package/dist/tui-ui/render-scheduler.d.ts +37 -0
  350. package/dist/tui-ui/render-scheduler.d.ts.map +1 -0
  351. package/dist/tui-ui/render-scheduler.js +118 -0
  352. package/dist/tui-ui/render-scheduler.js.map +1 -0
  353. package/dist/tui-ui/runner.d.ts +78 -5
  354. package/dist/tui-ui/runner.d.ts.map +1 -1
  355. package/dist/tui-ui/runner.js +317 -22
  356. package/dist/tui-ui/runner.js.map +1 -1
  357. package/dist/tui-ui/state.d.ts +38 -7
  358. package/dist/tui-ui/state.d.ts.map +1 -1
  359. package/dist/tui-ui/state.js +199 -40
  360. package/dist/tui-ui/state.js.map +1 -1
  361. package/dist/tui-ui/theme.d.ts +13 -0
  362. package/dist/tui-ui/theme.d.ts.map +1 -0
  363. package/dist/tui-ui/theme.js +20 -0
  364. package/dist/tui-ui/theme.js.map +1 -0
  365. package/dist/tui-ui/transcript-cache.d.ts +35 -0
  366. package/dist/tui-ui/transcript-cache.d.ts.map +1 -0
  367. package/dist/tui-ui/transcript-cache.js +74 -0
  368. package/dist/tui-ui/transcript-cache.js.map +1 -0
  369. package/dist/tui-ui/transcript-layout.d.ts +21 -0
  370. package/dist/tui-ui/transcript-layout.d.ts.map +1 -0
  371. package/dist/tui-ui/transcript-layout.js +398 -0
  372. package/dist/tui-ui/transcript-layout.js.map +1 -0
  373. package/dist/ui/box.d.ts.map +1 -1
  374. package/dist/ui/box.js +0 -11
  375. package/dist/ui/box.js.map +1 -1
  376. package/dist/ui/command-panel.d.ts.map +1 -1
  377. package/dist/ui/command-panel.js +1 -3
  378. package/dist/ui/command-panel.js.map +1 -1
  379. package/dist/ui/file-completion.js +1 -1
  380. package/dist/ui/file-completion.js.map +1 -1
  381. package/dist/ui/markdown.d.ts.map +1 -1
  382. package/dist/ui/markdown.js +1 -2
  383. package/dist/ui/markdown.js.map +1 -1
  384. package/dist/ui/multiline-input.d.ts.map +1 -1
  385. package/dist/ui/multiline-input.js +1 -2
  386. package/dist/ui/multiline-input.js.map +1 -1
  387. package/dist/ui/progress.d.ts.map +1 -1
  388. package/dist/ui/progress.js +0 -3
  389. package/dist/ui/progress.js.map +1 -1
  390. package/dist/ui/status-bar.d.ts +1 -1
  391. package/dist/ui/status-bar.d.ts.map +1 -1
  392. package/dist/ui/status-bar.js +2 -16
  393. package/dist/ui/status-bar.js.map +1 -1
  394. package/dist/ui/stream-markdown.d.ts +3 -0
  395. package/dist/ui/stream-markdown.d.ts.map +1 -1
  396. package/dist/ui/stream-markdown.js +0 -6
  397. package/dist/ui/stream-markdown.js.map +1 -1
  398. package/dist/ui/tool-preview.d.ts.map +1 -1
  399. package/dist/ui/tool-preview.js +0 -1
  400. package/dist/ui/tool-preview.js.map +1 -1
  401. package/dist/ui-v2/components/shell.d.ts.map +1 -1
  402. package/dist/ui-v2/components/shell.js +0 -8
  403. package/dist/ui-v2/components/shell.js.map +1 -1
  404. package/package.json +1 -1
  405. package/dist/cli-dbg.js +0 -717
  406. package/dist/cli-debug.d.ts +0 -7
  407. package/dist/cli-debug.d.ts.map +0 -1
  408. package/dist/cli-debug.js +0 -717
  409. package/dist/cli-debug.js.map +0 -1
  410. package/dist/cli-debug2.d.ts +0 -7
  411. package/dist/cli-debug2.d.ts.map +0 -1
  412. package/dist/cli-debug2.js +0 -717
  413. package/dist/cli-debug2.js.map +0 -1
  414. package/dist/cli-debug3.d.ts +0 -7
  415. package/dist/cli-debug3.d.ts.map +0 -1
  416. package/dist/cli-debug3.js +0 -719
  417. package/dist/cli-debug3.js.map +0 -1
  418. package/dist/cli-ink.d.ts +0 -8
  419. package/dist/cli-ink.d.ts.map +0 -1
  420. package/dist/cli-ink.js +0 -32
  421. package/dist/cli-ink.js.map +0 -1
  422. package/dist/cli-patch.js +0 -716
  423. package/dist/cli-test.js +0 -726
@@ -0,0 +1,269 @@
1
+ "use strict";
2
+ /**
3
+ * TUI style model: normalized, renderer-independent text styling.
4
+ *
5
+ * Styles are semantic tokens resolved by theme at layout time; ANSI SGR
6
+ * codes are only emitted by the terminal row encoder. Layout never writes
7
+ * raw escape sequences.
8
+ *
9
+ * NO_COLOR / FORCE_COLOR are respected at the encoder level - style
10
+ * fields are preserved in the model but color output is suppressed.
11
+ */
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.SGR_RESET = exports.DEFAULT_THEME = exports.DEFAULT_STYLE = void 0;
14
+ exports.normalizeStyle = normalizeStyle;
15
+ exports.styleKey = styleKey;
16
+ exports.stylesEqual = stylesEqual;
17
+ exports.shouldSuppressColor = shouldSuppressColor;
18
+ exports.encodeStyleToSgr = encodeStyleToSgr;
19
+ exports.sanitizeTerminalText = sanitizeTerminalText;
20
+ /** Shared immutable default style (no formatting). */
21
+ exports.DEFAULT_STYLE = {};
22
+ /**
23
+ * Normalize a style: remove undefined/false fields, clamp indexed/rgb values.
24
+ * Returns a new frozen object. Used for frame diff comparison.
25
+ */
26
+ function normalizeStyle(style) {
27
+ const result = {};
28
+ if (style.foreground) {
29
+ result.foreground = normalizeColor(style.foreground);
30
+ }
31
+ if (style.background) {
32
+ result.background = normalizeColor(style.background);
33
+ }
34
+ if (style.bold)
35
+ result.bold = true;
36
+ if (style.dim)
37
+ result.dim = true;
38
+ if (style.italic)
39
+ result.italic = true;
40
+ if (style.underline)
41
+ result.underline = true;
42
+ if (style.inverse)
43
+ result.inverse = true;
44
+ return result;
45
+ }
46
+ function normalizeColor(color) {
47
+ switch (color.kind) {
48
+ case 'named':
49
+ return color;
50
+ case 'indexed':
51
+ return { kind: 'indexed', value: Math.max(0, Math.min(255, Math.floor(color.value))) };
52
+ case 'rgb':
53
+ return {
54
+ kind: 'rgb',
55
+ r: Math.max(0, Math.min(255, Math.floor(color.r))),
56
+ g: Math.max(0, Math.min(255, Math.floor(color.g))),
57
+ b: Math.max(0, Math.min(255, Math.floor(color.b))),
58
+ };
59
+ }
60
+ }
61
+ /**
62
+ * Compute a stable string key for style comparison.
63
+ * Used in frame diff to detect style-only changes efficiently.
64
+ */
65
+ function styleKey(style) {
66
+ const parts = [];
67
+ if (style.foreground)
68
+ parts.push(`fg:${colorKey(style.foreground)}`);
69
+ if (style.background)
70
+ parts.push(`bg:${colorKey(style.background)}`);
71
+ if (style.bold)
72
+ parts.push('b');
73
+ if (style.dim)
74
+ parts.push('d');
75
+ if (style.italic)
76
+ parts.push('i');
77
+ if (style.underline)
78
+ parts.push('u');
79
+ if (style.inverse)
80
+ parts.push('v');
81
+ return parts.join(',');
82
+ }
83
+ function colorKey(color) {
84
+ switch (color.kind) {
85
+ case 'named': return color.value;
86
+ case 'indexed': return `i${color.value}`;
87
+ case 'rgb': return `r${color.r}.${color.g}.${color.b}`;
88
+ }
89
+ }
90
+ /**
91
+ * Check if two styles are equivalent after normalization.
92
+ */
93
+ function stylesEqual(a, b) {
94
+ return styleKey(normalizeStyle(a)) === styleKey(normalizeStyle(b));
95
+ }
96
+ /** Default dark-theme semantic tokens. */
97
+ exports.DEFAULT_THEME = {
98
+ assistantText: {},
99
+ heading: { foreground: { kind: 'named', value: 'cyan' }, bold: true },
100
+ code: {
101
+ foreground: { kind: 'named', value: 'white' },
102
+ background: { kind: 'rgb', r: 31, g: 35, b: 42 },
103
+ },
104
+ diffAdded: { foreground: { kind: 'named', value: 'green' } },
105
+ diffRemoved: { foreground: { kind: 'named', value: 'red' } },
106
+ diffHunk: { foreground: { kind: 'named', value: 'cyan' }, dim: true },
107
+ warning: { foreground: { kind: 'named', value: 'yellow' } },
108
+ error: { foreground: { kind: 'named', value: 'red' } },
109
+ activityRunning: { foreground: { kind: 'named', value: 'yellow' } },
110
+ activitySuccess: { foreground: { kind: 'named', value: 'green' } },
111
+ activityFailed: { foreground: { kind: 'named', value: 'red' } },
112
+ muted: { dim: true },
113
+ userMarker: { foreground: { kind: 'rgb', r: 0, g: 96, b: 116 }, bold: true },
114
+ userText: { foreground: { kind: 'rgb', r: 32, g: 35, b: 40 } },
115
+ userBackground: { background: { kind: 'rgb', r: 218, g: 221, b: 226 } },
116
+ inlineCode: {
117
+ foreground: { kind: 'named', value: 'yellow' },
118
+ background: { kind: 'rgb', r: 43, g: 47, b: 54 },
119
+ },
120
+ link: { foreground: { kind: 'named', value: 'cyan' }, underline: true },
121
+ toolRunning: { foreground: { kind: 'named', value: 'yellow' } },
122
+ toolSuccess: { foreground: { kind: 'named', value: 'green' } },
123
+ toolError: { foreground: { kind: 'named', value: 'red' } },
124
+ toolSkipped: { dim: true },
125
+ toolName: { foreground: { kind: 'named', value: 'cyan' }, bold: true },
126
+ toolMeta: { foreground: { kind: 'named', value: 'white' }, dim: true },
127
+ systemText: { foreground: { kind: 'named', value: 'white' }, dim: true },
128
+ commandMarker: { foreground: { kind: 'named', value: 'cyan' }, bold: true },
129
+ commandText: { foreground: { kind: 'named', value: 'white' } },
130
+ statusText: { dim: true },
131
+ };
132
+ // ============================================================================
133
+ // ANSI SGR encoder
134
+ // ============================================================================
135
+ /** Check if NO_COLOR is set or output is not a TTY. */
136
+ function shouldSuppressColor() {
137
+ if (process.env.NO_COLOR !== undefined && process.env.NO_COLOR !== '')
138
+ return true;
139
+ if (process.env.FORCE_COLOR === '0')
140
+ return true;
141
+ return false;
142
+ }
143
+ /**
144
+ * Encode a TuiStyle into ANSI SGR parameters.
145
+ * Returns an empty string if style is default or color is suppressed.
146
+ * Row encoder must emit SGR0 (\x1b[0m) after each styled span.
147
+ */
148
+ function encodeStyleToSgr(style, suppressColor = shouldSuppressColor()) {
149
+ const norm = normalizeStyle(style);
150
+ const params = [];
151
+ if (norm.bold)
152
+ params.push('1');
153
+ if (norm.dim)
154
+ params.push('2');
155
+ if (norm.italic)
156
+ params.push('3');
157
+ if (norm.underline)
158
+ params.push('4');
159
+ if (norm.inverse)
160
+ params.push('7');
161
+ if (!suppressColor) {
162
+ if (norm.foreground)
163
+ params.push(...encodeColorSgr(norm.foreground, '3', '38'));
164
+ if (norm.background)
165
+ params.push(...encodeColorSgr(norm.background, '4', '48'));
166
+ }
167
+ if (params.length === 0)
168
+ return '';
169
+ return `\x1b[${params.join(';')}m`;
170
+ }
171
+ function encodeColorSgr(color, baseSingle, baseExtended) {
172
+ switch (color.kind) {
173
+ case 'named': {
174
+ const map = {
175
+ black: 0, red: 1, green: 2, yellow: 3,
176
+ blue: 4, magenta: 5, cyan: 6, white: 7,
177
+ };
178
+ const code = map[color.value];
179
+ if (code === undefined)
180
+ return [];
181
+ const base = parseInt(baseSingle, 10) * 10;
182
+ return [`${base + code}`];
183
+ }
184
+ case 'indexed':
185
+ return [`${baseExtended};5;${color.value}`];
186
+ case 'rgb':
187
+ return [`${baseExtended};2;${color.r};${color.g};${color.b}`];
188
+ }
189
+ }
190
+ /** SGR reset sequence. */
191
+ exports.SGR_RESET = '\x1b[0m';
192
+ // ============================================================================
193
+ // Sanitizer
194
+ // ============================================================================
195
+ /**
196
+ * Sanitize text for terminal display.
197
+ *
198
+ * Strips entire ANSI escape sequences (CSI, OSC, etc.) and all C0/C1 control
199
+ * characters except \n and \t. Tab is expanded to spaces before entering layout.
200
+ * This prevents model content from injecting ANSI control sequences.
201
+ */
202
+ function sanitizeTerminalText(text, tabWidth = 2) {
203
+ let result = '';
204
+ let i = 0;
205
+ while (i < text.length) {
206
+ const codePoint = text.codePointAt(i);
207
+ if (codePoint === undefined)
208
+ break;
209
+ const char = String.fromCodePoint(codePoint);
210
+ // ESC (0x1b): strip the entire escape sequence that follows.
211
+ if (codePoint === 0x1b) {
212
+ i = skipEscapeSequence(text, i + 1);
213
+ continue;
214
+ }
215
+ if (char === '\n') {
216
+ result += '\n';
217
+ }
218
+ else if (char === '\t') {
219
+ result += ' '.repeat(tabWidth);
220
+ }
221
+ else if (codePoint < 0x20 || (codePoint >= 0x7f && codePoint < 0xa0)) {
222
+ // C0/C1 control: strip. This includes DEL (0x7f).
223
+ }
224
+ else {
225
+ result += char;
226
+ }
227
+ i += char.length;
228
+ }
229
+ return result;
230
+ }
231
+ /**
232
+ * Skip past an ANSI escape sequence body starting after the ESC byte.
233
+ * CSI: ESC [ params final-byte (0x40-0x7e)
234
+ * OSC: ESC ] data ST (BEL 0x07 or ESC backslash)
235
+ * Other: ESC + single intermediate/final byte
236
+ * Returns the index after the consumed sequence.
237
+ */
238
+ function skipEscapeSequence(text, start) {
239
+ if (start >= text.length)
240
+ return start;
241
+ const next = text.charCodeAt(start);
242
+ if (next === 0x5b) {
243
+ // CSI: ESC [ - consume params until final byte (0x40-0x7e).
244
+ let i = start + 1;
245
+ while (i < text.length) {
246
+ const c = text.charCodeAt(i);
247
+ if (c >= 0x40 && c <= 0x7e)
248
+ return i + 1;
249
+ i += 1;
250
+ }
251
+ return i;
252
+ }
253
+ if (next === 0x5d) {
254
+ // OSC: ESC ] - consume until BEL (0x07) or ST (ESC backslash).
255
+ let i = start + 1;
256
+ while (i < text.length) {
257
+ const c = text.charCodeAt(i);
258
+ if (c === 0x07)
259
+ return i + 1;
260
+ if (c === 0x1b && i + 1 < text.length && text.charCodeAt(i + 1) === 0x5c)
261
+ return i + 2;
262
+ i += 1;
263
+ }
264
+ return i;
265
+ }
266
+ // Other escape (e.g. ESC =, ESC >): consume one byte.
267
+ return start + 1;
268
+ }
269
+ //# sourceMappingURL=style.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"style.js","sourceRoot":"","sources":["../../src/tui-core/style.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"terminal-writer.d.ts","sourceRoot":"","sources":["../../src/tui-core/terminal-writer.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,QAAQ,EACb,KAAK,YAAY,EAClB,MAAM,SAAS,CAAC;AAEjB,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,YAAY,CAAC;CACpB;AAED,MAAM,WAAW,wBAAwB;IACvC;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;;;OAIG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,qBAAa,iBAAiB;IAI1B,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAJ1B,OAAO,CAAC,QAAQ,CAAyB;gBAGtB,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,EACzC,OAAO,GAAE,wBAA6B;IAGzD,MAAM,CAAC,KAAK,EAAE,QAAQ,GAAG,uBAAuB;IAShD,KAAK,IAAI,IAAI;CAGd;AAED,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,QAAQ,GAAG,IAAI,EACzB,IAAI,EAAE,QAAQ,EACd,OAAO,GAAE,wBAA6B,GACrC,uBAAuB,CAwCzB;AAED,wBAAgB,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAE1D;AAED,wBAAgB,SAAS,IAAI,MAAM,CAElC;AAED,wBAAgB,UAAU,IAAI,MAAM,CAEnC;AAED,wBAAgB,UAAU,IAAI,MAAM,CAEnC;AAED,wBAAgB,eAAe,IAAI,MAAM,CAExC;AAED,wBAAgB,cAAc,IAAI,MAAM,CAEvC"}
1
+ {"version":3,"file":"terminal-writer.d.ts","sourceRoot":"","sources":["../../src/tui-core/terminal-writer.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,QAAQ,EACb,KAAK,YAAY,EAClB,MAAM,SAAS,CAAC;AAGjB,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,YAAY,CAAC;CACpB;AAED,MAAM,WAAW,wBAAwB;IACvC;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;;;OAIG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,qBAAa,iBAAiB;IAI1B,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAJ1B,OAAO,CAAC,QAAQ,CAAyB;gBAGtB,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,EACzC,OAAO,GAAE,wBAA6B;IAGzD,MAAM,CAAC,KAAK,EAAE,QAAQ,GAAG,uBAAuB;IAShD,KAAK,IAAI,IAAI;CAGd;AAED,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,QAAQ,GAAG,IAAI,EACzB,IAAI,EAAE,QAAQ,EACd,OAAO,GAAE,wBAA6B,GACrC,uBAAuB,CAmDzB;AAED,wBAAgB,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAE1D;AAED,wBAAgB,SAAS,IAAI,MAAM,CAElC;AAED,wBAAgB,UAAU,IAAI,MAAM,CAEnC;AAED,wBAAgB,UAAU,IAAI,MAAM,CAEnC;AAED,wBAAgB,eAAe,IAAI,MAAM,CAExC;AAED,wBAAgB,cAAc,IAAI,MAAM,CAEvC"}
@@ -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":"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"}
1
+ {"version":3,"file":"terminal-writer.js","sourceRoot":"","sources":["../../src/tui-core/terminal-writer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,185 @@
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 type SurfaceOutputEvent = 'drain' | 'error' | 'close';
31
+ export interface SurfaceOutput {
32
+ write(chunk: string | Uint8Array): boolean;
33
+ on(event: SurfaceOutputEvent, listener: (error?: unknown) => void): this;
34
+ off(event: SurfaceOutputEvent, listener: (error?: unknown) => void): this;
35
+ readonly writable: boolean;
36
+ }
37
+ export interface InlineSurfaceOptions {
38
+ output: SurfaceOutput;
39
+ /** Inject for deterministic tests. */
40
+ now?: () => number;
41
+ }
42
+ export type SurfacePhase = 'idle' | 'mounted' | 'suspended' | 'unmounted' | 'failed';
43
+ export interface InlineSurfaceState {
44
+ phase: SurfacePhase;
45
+ width: number;
46
+ height: number;
47
+ /** Height of the bottom live band. */
48
+ liveBandRows: number;
49
+ /** Rows currently owned by the inline live block. */
50
+ liveRegionCapacity: number;
51
+ cursorRow: number;
52
+ cursorColumn: number;
53
+ previousFrame: TuiFrame | null;
54
+ }
55
+ /** A committed transcript entry rendered to styled rows. */
56
+ export interface CommittedEntry {
57
+ displayKey: string;
58
+ rows: {
59
+ text: string;
60
+ style?: import('../tui-core/style').TuiStyle;
61
+ }[][];
62
+ }
63
+ export interface TranscriptCommitBatch {
64
+ generation: number;
65
+ reason: 'append' | 'finalize' | 'restore' | 'replace' | 'clear-divider';
66
+ entries: CommittedEntry[];
67
+ }
68
+ export interface TuiTerminalRenderResult {
69
+ output: string;
70
+ committedEntries: number;
71
+ }
72
+ /**
73
+ * Get the latest live frame for rendering after a commit.
74
+ * The runner provides this so commit + finalize interleaving uses fresh state.
75
+ */
76
+ export type LiveFrameProvider = () => TuiFrame | null;
77
+ export declare class InlineTerminalSurface {
78
+ private phase;
79
+ private width;
80
+ private height;
81
+ /** Height of the bottom live band (status + prompt + live tail). */
82
+ private liveBandRows;
83
+ private liveRegionCapacity;
84
+ private cursorRow;
85
+ private cursorColumn;
86
+ private previousFrame;
87
+ /** Suppress stale-width live paints between SIGWINCH and the resize repaint. */
88
+ private resizePending;
89
+ private pendingResizeWidth;
90
+ private resizeGeneration;
91
+ private resizeWaiters;
92
+ private readonly output;
93
+ private readonly now;
94
+ private readonly suppressColor;
95
+ /** Serialized FIFO queue of pending operations. */
96
+ private queue;
97
+ private processing;
98
+ constructor(options: InlineSurfaceOptions);
99
+ /** Compute the live band height (~75% of screen, min 8, max height-1). */
100
+ private static computeBandRows;
101
+ /** Live band height for the runner to size its live frame. */
102
+ getLiveBandRows(): number;
103
+ /** History area rows above the band (recently scrolled committed lines). */
104
+ get historyAreaRows(): number;
105
+ getState(): InlineSurfaceState;
106
+ /** Mark the terminal as resizing before the debounced layout pass runs. */
107
+ beginResize(width?: number): number;
108
+ /**
109
+ * Await completion of all queued operations.
110
+ * Because the queue is strictly FIFO, enqueueing a no-op and awaiting it
111
+ * guarantees every operation enqueued before this call has finished. Used by
112
+ * tests to deterministically observe the terminal after a burst of renders.
113
+ */
114
+ whenIdle(): Promise<void>;
115
+ /** Safe content width: never write the last column (avoid pending-wrap). */
116
+ get safeContentWidth(): number;
117
+ /** Enqueue an operation; FIFO guarantees no interleaving. */
118
+ private enqueue;
119
+ private drainQueue;
120
+ /** Mount: enable bracketed paste + hide cursor. NO alternate screen. */
121
+ mount(width: number, height: number): Promise<void>;
122
+ /**
123
+ * Commit finalized transcript entries to native scrollback.
124
+ *
125
+ * Protocol:
126
+ * 1. Erase only the live rows owned by this surface and return to their top.
127
+ * 2. Release that block and write finalized rows as ordinary line-oriented
128
+ * shell output. The terminal decides when those lines enter scrollback.
129
+ * 3. Allocate a fresh live block from the resulting cursor and repaint the
130
+ * latest live frame below the committed output.
131
+ */
132
+ commit(batch: TranscriptCommitBatch, getLatestLiveFrame: LiveFrameProvider): Promise<TuiTerminalRenderResult>;
133
+ /** Render the live region frame (relative addressing, changed-row diff). */
134
+ renderLive(frame: TuiFrame): Promise<string>;
135
+ private renderLiveInternal;
136
+ /** Render a single styled frame row to ANSI chunks (text + SGR + reset). */
137
+ private renderRowChunks;
138
+ /** Stable string form of a styled row, used for changed-row comparison. */
139
+ private renderRowString;
140
+ private trimDefaultTrailingCells;
141
+ private renderedRowWidth;
142
+ /**
143
+ * Ensure the surface owns exactly `requiredRows` rows starting at the current
144
+ * cursor. Allocation uses ordinary newlines, so existing shell output is
145
+ * preserved and may naturally move into terminal scrollback.
146
+ */
147
+ private ensureCapacity;
148
+ /** Clear the live band rows (relative, no absolute addressing). */
149
+ private clearLiveRegion;
150
+ /**
151
+ * Clear the old live block after the terminal has already adopted a new
152
+ * width. A previously full row can occupy multiple physical rows after
153
+ * reflow, so tracked logical rows are not sufficient during resize.
154
+ */
155
+ private clearReflowedLiveRegion;
156
+ private clearOwnedLiveRegion;
157
+ private waitForResizeCompletion;
158
+ private completeResize;
159
+ private releaseLiveRegion;
160
+ /** Resize: erase only the owned block, then rebuild from the current cursor. */
161
+ resize(width: number, height: number, getLatestLiveFrame: LiveFrameProvider, generation?: number): Promise<void>;
162
+ /** Suspend for child process: clear live region, disable bracketed paste, show cursor. */
163
+ suspend(): Promise<void>;
164
+ /** Restore after child process: re-enable bracketed paste, rebuild live frame. */
165
+ restore(getLatestLiveFrame: LiveFrameProvider): Promise<void>;
166
+ /** Unmount: clear live region, restore terminal state. Does NOT erase scrollback. */
167
+ unmount(): Promise<void>;
168
+ /** Flush: wait for queue to drain. Yields to I/O between checks. */
169
+ flush(): Promise<void>;
170
+ private writeRaw;
171
+ /** Reset for tests. */
172
+ reset(): void;
173
+ }
174
+ export declare class MemoryOutput implements SurfaceOutput {
175
+ chunks: string[];
176
+ writable: boolean;
177
+ private drainListeners;
178
+ write(chunk: string | Uint8Array): boolean;
179
+ on(event: SurfaceOutputEvent, listener: (error?: unknown) => void): this;
180
+ off(event: SurfaceOutputEvent, listener: (error?: unknown) => void): this;
181
+ text(): string;
182
+ /** Assert output never contains forbidden sequences. */
183
+ assertNoForbidden(): void;
184
+ }
185
+ //# 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":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,EAAwB,KAAK,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAGxE,uCAAuC;AACvC,MAAM,MAAM,kBAAkB,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC;AAE7D,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,GAAG,OAAO,CAAC;IAC3C,EAAE,CAAC,KAAK,EAAE,kBAAkB,EAAE,QAAQ,EAAE,CAAC,KAAK,CAAC,EAAE,OAAO,KAAK,IAAI,GAAG,IAAI,CAAC;IACzE,GAAG,CAAC,KAAK,EAAE,kBAAkB,EAAE,QAAQ,EAAE,CAAC,KAAK,CAAC,EAAE,OAAO,KAAK,IAAI,GAAG,IAAI,CAAC;IAC1E,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;CAC5B;AAED,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,aAAa,CAAC;IACtB,sCAAsC;IACtC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;CACpB;AAED,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,SAAS,GAAG,WAAW,GAAG,WAAW,GAAG,QAAQ,CAAC;AAErF,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,YAAY,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,sCAAsC;IACtC,YAAY,EAAE,MAAM,CAAC;IACrB,qDAAqD;IACrD,kBAAkB,EAAE,MAAM,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,QAAQ,GAAG,IAAI,CAAC;CAChC;AAED,4DAA4D;AAC5D,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,OAAO,mBAAmB,EAAE,QAAQ,CAAA;KAAE,EAAE,EAAE,CAAC;CAC1E;AAED,MAAM,WAAW,qBAAqB;IACpC,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,QAAQ,GAAG,UAAU,GAAG,SAAS,GAAG,SAAS,GAAG,eAAe,CAAC;IACxE,OAAO,EAAE,cAAc,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,MAAM,CAAC;IACf,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED;;;GAGG;AACH,MAAM,MAAM,iBAAiB,GAAG,MAAM,QAAQ,GAAG,IAAI,CAAC;AAqBtD,qBAAa,qBAAqB;IAChC,OAAO,CAAC,KAAK,CAAwB;IACrC,OAAO,CAAC,KAAK,CAAK;IAClB,OAAO,CAAC,MAAM,CAAK;IACnB,oEAAoE;IACpE,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,kBAAkB,CAAK;IAC/B,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,aAAa,CAAyB;IAC9C,gFAAgF;IAChF,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,kBAAkB,CAAuB;IACjD,OAAO,CAAC,gBAAgB,CAAK;IAC7B,OAAO,CAAC,aAAa,CAAyB;IAC9C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgB;IACvC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAe;IACnC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAU;IACxC,mDAAmD;IACnD,OAAO,CAAC,KAAK,CAAkC;IAC/C,OAAO,CAAC,UAAU,CAAS;gBAEf,OAAO,EAAE,oBAAoB;IAMzC,0EAA0E;IAC1E,OAAO,CAAC,MAAM,CAAC,eAAe;IAQ9B,8DAA8D;IAC9D,eAAe,IAAI,MAAM;IAIzB,4EAA4E;IAC5E,IAAI,eAAe,IAAI,MAAM,CAE5B;IAED,QAAQ,IAAI,kBAAkB;IAa9B,2EAA2E;IAC3E,WAAW,CAAC,KAAK,SAAa,GAAG,MAAM;IAOvC;;;;;OAKG;IACH,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAIzB,4EAA4E;IAC5E,IAAI,gBAAgB,IAAI,MAAM,CAE7B;IAED,6DAA6D;IAC7D,OAAO,CAAC,OAAO;YAeD,UAAU;IAcxB,wEAAwE;IAClE,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAczD;;;;;;;;;OASG;IACG,MAAM,CAAC,KAAK,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,iBAAiB,GAAG,OAAO,CAAC,uBAAuB,CAAC;IA6CnH,4EAA4E;IACtE,UAAU,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC;IAWlD,OAAO,CAAC,kBAAkB;IAuF1B,4EAA4E;IAC5E,OAAO,CAAC,eAAe;IAiBvB,2EAA2E;IAC3E,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,wBAAwB;IAYhC,OAAO,CAAC,gBAAgB;IAKxB;;;;OAIG;IACH,OAAO,CAAC,cAAc;IAmBtB,mEAAmE;IACnE,OAAO,CAAC,eAAe;IAcvB;;;;OAIG;IACH,OAAO,CAAC,uBAAuB;IAgC/B,OAAO,CAAC,oBAAoB;IAM5B,OAAO,CAAC,uBAAuB;IAK/B,OAAO,CAAC,cAAc;IAOtB,OAAO,CAAC,iBAAiB;IAOzB,gFAAgF;IAC1E,MAAM,CACV,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,kBAAkB,EAAE,iBAAiB,EACrC,UAAU,SAAuE,GAChF,OAAO,CAAC,IAAI,CAAC;IAiBhB,0FAA0F;IACpF,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAY9B,kFAAkF;IAC5E,OAAO,CAAC,kBAAkB,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAanE,qFAAqF;IAC/E,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAY9B,oEAAoE;IAC9D,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;YAMd,QAAQ;IA+CtB,uBAAuB;IACvB,KAAK,IAAI,IAAI;CAYd;AAMD,qBAAa,YAAa,YAAW,aAAa;IAChD,MAAM,EAAE,MAAM,EAAE,CAAM;IACtB,QAAQ,UAAQ;IAChB,OAAO,CAAC,cAAc,CAAwC;IAE9D,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,GAAG,OAAO;IAK1C,EAAE,CAAC,KAAK,EAAE,kBAAkB,EAAE,QAAQ,EAAE,CAAC,KAAK,CAAC,EAAE,OAAO,KAAK,IAAI,GAAG,IAAI;IAKxE,GAAG,CAAC,KAAK,EAAE,kBAAkB,EAAE,QAAQ,EAAE,CAAC,KAAK,CAAC,EAAE,OAAO,KAAK,IAAI,GAAG,IAAI;IAOzE,IAAI,IAAI,MAAM;IAId,wDAAwD;IACxD,iBAAiB,IAAI,IAAI;CAO1B"}