openhorse 0.1.5

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 (587) hide show
  1. package/README.md +460 -0
  2. package/bin/openhorse +56 -0
  3. package/dist/agents/coder.d.ts +12 -0
  4. package/dist/agents/coder.d.ts.map +1 -0
  5. package/dist/agents/coder.js +48 -0
  6. package/dist/agents/coder.js.map +1 -0
  7. package/dist/agents/leader.d.ts +12 -0
  8. package/dist/agents/leader.d.ts.map +1 -0
  9. package/dist/agents/leader.js +49 -0
  10. package/dist/agents/leader.js.map +1 -0
  11. package/dist/agents/router.d.ts +59 -0
  12. package/dist/agents/router.d.ts.map +1 -0
  13. package/dist/agents/router.js +193 -0
  14. package/dist/agents/router.js.map +1 -0
  15. package/dist/cli-ink.d.ts +7 -0
  16. package/dist/cli-ink.d.ts.map +1 -0
  17. package/dist/cli-ink.js +135 -0
  18. package/dist/cli-ink.js.map +1 -0
  19. package/dist/cli.d.ts +7 -0
  20. package/dist/cli.d.ts.map +1 -0
  21. package/dist/cli.js +638 -0
  22. package/dist/cli.js.map +1 -0
  23. package/dist/commands/index.d.ts +12 -0
  24. package/dist/commands/index.d.ts.map +1 -0
  25. package/dist/commands/index.js +1095 -0
  26. package/dist/commands/index.js.map +1 -0
  27. package/dist/commands/parser.d.ts +26 -0
  28. package/dist/commands/parser.d.ts.map +1 -0
  29. package/dist/commands/parser.js +61 -0
  30. package/dist/commands/parser.js.map +1 -0
  31. package/dist/commands/types.d.ts +61 -0
  32. package/dist/commands/types.d.ts.map +1 -0
  33. package/dist/commands/types.js +32 -0
  34. package/dist/commands/types.js.map +1 -0
  35. package/dist/core/agent.d.ts +66 -0
  36. package/dist/core/agent.d.ts.map +1 -0
  37. package/dist/core/agent.js +55 -0
  38. package/dist/core/agent.js.map +1 -0
  39. package/dist/core/brain.d.ts +41 -0
  40. package/dist/core/brain.d.ts.map +1 -0
  41. package/dist/core/brain.js +92 -0
  42. package/dist/core/brain.js.map +1 -0
  43. package/dist/core/cost-tracker.d.ts +107 -0
  44. package/dist/core/cost-tracker.d.ts.map +1 -0
  45. package/dist/core/cost-tracker.js +199 -0
  46. package/dist/core/cost-tracker.js.map +1 -0
  47. package/dist/core/strategy-tracker.d.ts +61 -0
  48. package/dist/core/strategy-tracker.d.ts.map +1 -0
  49. package/dist/core/strategy-tracker.js +124 -0
  50. package/dist/core/strategy-tracker.js.map +1 -0
  51. package/dist/framework/index.d.ts +20 -0
  52. package/dist/framework/index.d.ts.map +1 -0
  53. package/dist/framework/index.js +29 -0
  54. package/dist/framework/index.js.map +1 -0
  55. package/dist/framework/prompt.d.ts +40 -0
  56. package/dist/framework/prompt.d.ts.map +1 -0
  57. package/dist/framework/prompt.js +112 -0
  58. package/dist/framework/prompt.js.map +1 -0
  59. package/dist/framework/query.d.ts +86 -0
  60. package/dist/framework/query.d.ts.map +1 -0
  61. package/dist/framework/query.js +177 -0
  62. package/dist/framework/query.js.map +1 -0
  63. package/dist/framework/store.d.ts +64 -0
  64. package/dist/framework/store.d.ts.map +1 -0
  65. package/dist/framework/store.js +78 -0
  66. package/dist/framework/store.js.map +1 -0
  67. package/dist/framework/tool-state.d.ts +22 -0
  68. package/dist/framework/tool-state.d.ts.map +1 -0
  69. package/dist/framework/tool-state.js +40 -0
  70. package/dist/framework/tool-state.js.map +1 -0
  71. package/dist/framework/tool.d.ts +88 -0
  72. package/dist/framework/tool.d.ts.map +1 -0
  73. package/dist/framework/tool.js +60 -0
  74. package/dist/framework/tool.js.map +1 -0
  75. package/dist/harness/harness.d.ts +96 -0
  76. package/dist/harness/harness.d.ts.map +1 -0
  77. package/dist/harness/harness.js +224 -0
  78. package/dist/harness/harness.js.map +1 -0
  79. package/dist/harness/safety.d.ts +89 -0
  80. package/dist/harness/safety.d.ts.map +1 -0
  81. package/dist/harness/safety.js +178 -0
  82. package/dist/harness/safety.js.map +1 -0
  83. package/dist/index.d.ts +30 -0
  84. package/dist/index.d.ts.map +1 -0
  85. package/dist/index.js +57 -0
  86. package/dist/index.js.map +1 -0
  87. package/dist/init.d.ts +178 -0
  88. package/dist/init.d.ts.map +1 -0
  89. package/dist/init.js +473 -0
  90. package/dist/init.js.map +1 -0
  91. package/dist/ink/bidi.d.ts +16 -0
  92. package/dist/ink/bidi.d.ts.map +1 -0
  93. package/dist/ink/bidi.js +124 -0
  94. package/dist/ink/bidi.js.map +1 -0
  95. package/dist/ink/clearTerminal.d.ts +14 -0
  96. package/dist/ink/clearTerminal.d.ts.map +1 -0
  97. package/dist/ink/clearTerminal.js +63 -0
  98. package/dist/ink/clearTerminal.js.map +1 -0
  99. package/dist/ink/colorize.d.ts +17 -0
  100. package/dist/ink/colorize.d.ts.map +1 -0
  101. package/dist/ink/colorize.js +208 -0
  102. package/dist/ink/colorize.js.map +1 -0
  103. package/dist/ink/components/App.d.ts +73 -0
  104. package/dist/ink/components/App.d.ts.map +1 -0
  105. package/dist/ink/components/App.js +646 -0
  106. package/dist/ink/components/App.js.map +1 -0
  107. package/dist/ink/components/AppContext.d.ts +12 -0
  108. package/dist/ink/components/AppContext.d.ts.map +1 -0
  109. package/dist/ink/components/AppContext.js +14 -0
  110. package/dist/ink/components/AppContext.js.map +1 -0
  111. package/dist/ink/components/Box.d.ts +44 -0
  112. package/dist/ink/components/Box.d.ts.map +1 -0
  113. package/dist/ink/components/Box.js +191 -0
  114. package/dist/ink/components/Box.js.map +1 -0
  115. package/dist/ink/components/ClockContext.d.ts +9 -0
  116. package/dist/ink/components/ClockContext.d.ts.map +1 -0
  117. package/dist/ink/components/ClockContext.js +146 -0
  118. package/dist/ink/components/ClockContext.js.map +1 -0
  119. package/dist/ink/components/CursorDeclarationContext.d.ts +23 -0
  120. package/dist/ink/components/CursorDeclarationContext.d.ts.map +1 -0
  121. package/dist/ink/components/CursorDeclarationContext.js +6 -0
  122. package/dist/ink/components/CursorDeclarationContext.js.map +1 -0
  123. package/dist/ink/components/ErrorOverview.d.ts +6 -0
  124. package/dist/ink/components/ErrorOverview.d.ts.map +1 -0
  125. package/dist/ink/components/ErrorOverview.js +27 -0
  126. package/dist/ink/components/ErrorOverview.js.map +1 -0
  127. package/dist/ink/components/Newline.d.ts +13 -0
  128. package/dist/ink/components/Newline.d.ts.map +1 -0
  129. package/dist/ink/components/Newline.js +36 -0
  130. package/dist/ink/components/Newline.js.map +1 -0
  131. package/dist/ink/components/NoSelect.d.ts +20 -0
  132. package/dist/ink/components/NoSelect.d.ts.map +1 -0
  133. package/dist/ink/components/NoSelect.js +63 -0
  134. package/dist/ink/components/NoSelect.js.map +1 -0
  135. package/dist/ink/components/RawAnsi.d.ts +17 -0
  136. package/dist/ink/components/RawAnsi.d.ts.map +1 -0
  137. package/dist/ink/components/RawAnsi.js +52 -0
  138. package/dist/ink/components/RawAnsi.js.map +1 -0
  139. package/dist/ink/components/Spacer.d.ts +6 -0
  140. package/dist/ink/components/Spacer.d.ts.map +1 -0
  141. package/dist/ink/components/Spacer.js +26 -0
  142. package/dist/ink/components/Spacer.js.map +1 -0
  143. package/dist/ink/components/StdinContext.d.ts +28 -0
  144. package/dist/ink/components/StdinContext.d.ts.map +1 -0
  145. package/dist/ink/components/StdinContext.js +19 -0
  146. package/dist/ink/components/StdinContext.js.map +1 -0
  147. package/dist/ink/components/TerminalFocusContext.d.ts +10 -0
  148. package/dist/ink/components/TerminalFocusContext.d.ts.map +1 -0
  149. package/dist/ink/components/TerminalFocusContext.js +81 -0
  150. package/dist/ink/components/TerminalFocusContext.js.map +1 -0
  151. package/dist/ink/components/TerminalSizeContext.d.ts +6 -0
  152. package/dist/ink/components/TerminalSizeContext.d.ts.map +1 -0
  153. package/dist/ink/components/TerminalSizeContext.js +6 -0
  154. package/dist/ink/components/TerminalSizeContext.js.map +1 -0
  155. package/dist/ink/components/Text.d.ts +56 -0
  156. package/dist/ink/components/Text.d.ts.map +1 -0
  157. package/dist/ink/components/Text.js +201 -0
  158. package/dist/ink/components/Text.js.map +1 -0
  159. package/dist/ink/constants.d.ts +2 -0
  160. package/dist/ink/constants.d.ts.map +1 -0
  161. package/dist/ink/constants.js +6 -0
  162. package/dist/ink/constants.js.map +1 -0
  163. package/dist/ink/devtools.d.ts +3 -0
  164. package/dist/ink/devtools.d.ts.map +1 -0
  165. package/dist/ink/devtools.js +5 -0
  166. package/dist/ink/devtools.js.map +1 -0
  167. package/dist/ink/dom.d.ts +77 -0
  168. package/dist/ink/dom.d.ts.map +1 -0
  169. package/dist/ink/dom.js +322 -0
  170. package/dist/ink/dom.js.map +1 -0
  171. package/dist/ink/events/click-event.d.ts +32 -0
  172. package/dist/ink/events/click-event.d.ts.map +1 -0
  173. package/dist/ink/events/click-event.js +30 -0
  174. package/dist/ink/events/click-event.js.map +1 -0
  175. package/dist/ink/events/dispatcher.d.ts +41 -0
  176. package/dist/ink/events/dispatcher.d.ts.map +1 -0
  177. package/dist/ink/events/dispatcher.js +181 -0
  178. package/dist/ink/events/dispatcher.js.map +1 -0
  179. package/dist/ink/events/emitter.d.ts +6 -0
  180. package/dist/ink/events/emitter.d.ts.map +1 -0
  181. package/dist/ink/events/emitter.js +36 -0
  182. package/dist/ink/events/emitter.js.map +1 -0
  183. package/dist/ink/events/event-handlers.d.ts +47 -0
  184. package/dist/ink/events/event-handlers.d.ts.map +1 -0
  185. package/dist/ink/events/event-handlers.js +34 -0
  186. package/dist/ink/events/event-handlers.js.map +1 -0
  187. package/dist/ink/events/event.d.ts +6 -0
  188. package/dist/ink/events/event.d.ts.map +1 -0
  189. package/dist/ink/events/event.js +16 -0
  190. package/dist/ink/events/event.js.map +1 -0
  191. package/dist/ink/events/focus-event.d.ts +14 -0
  192. package/dist/ink/events/focus-event.d.ts.map +1 -0
  193. package/dist/ink/events/focus-event.js +20 -0
  194. package/dist/ink/events/focus-event.js.map +1 -0
  195. package/dist/ink/events/input-event.d.ts +31 -0
  196. package/dist/ink/events/input-event.d.ts.map +1 -0
  197. package/dist/ink/events/input-event.js +163 -0
  198. package/dist/ink/events/input-event.js.map +1 -0
  199. package/dist/ink/events/keyboard-event.d.ts +20 -0
  200. package/dist/ink/events/keyboard-event.d.ts.map +1 -0
  201. package/dist/ink/events/keyboard-event.js +44 -0
  202. package/dist/ink/events/keyboard-event.js.map +1 -0
  203. package/dist/ink/events/terminal-event.d.ts +55 -0
  204. package/dist/ink/events/terminal-event.d.ts.map +1 -0
  205. package/dist/ink/events/terminal-event.js +79 -0
  206. package/dist/ink/events/terminal-event.js.map +1 -0
  207. package/dist/ink/events/terminal-focus-event.d.ts +14 -0
  208. package/dist/ink/events/terminal-focus-event.d.ts.map +1 -0
  209. package/dist/ink/events/terminal-focus-event.js +19 -0
  210. package/dist/ink/events/terminal-focus-event.js.map +1 -0
  211. package/dist/ink/focus.d.ts +44 -0
  212. package/dist/ink/focus.d.ts.map +1 -0
  213. package/dist/ink/focus.js +164 -0
  214. package/dist/ink/focus.js.map +1 -0
  215. package/dist/ink/frame.d.ts +95 -0
  216. package/dist/ink/frame.d.ts.map +1 -0
  217. package/dist/ink/frame.js +35 -0
  218. package/dist/ink/frame.js.map +1 -0
  219. package/dist/ink/get-max-width.d.ts +18 -0
  220. package/dist/ink/get-max-width.d.ts.map +1 -0
  221. package/dist/ink/get-max-width.js +26 -0
  222. package/dist/ink/get-max-width.js.map +1 -0
  223. package/dist/ink/hit-test.d.ts +34 -0
  224. package/dist/ink/hit-test.d.ts.map +1 -0
  225. package/dist/ink/hit-test.js +119 -0
  226. package/dist/ink/hit-test.js.map +1 -0
  227. package/dist/ink/hooks/use-animation-frame.d.ts +27 -0
  228. package/dist/ink/hooks/use-animation-frame.d.ts.map +1 -0
  229. package/dist/ink/hooks/use-animation-frame.js +52 -0
  230. package/dist/ink/hooks/use-animation-frame.js.map +1 -0
  231. package/dist/ink/hooks/use-app.d.ts +6 -0
  232. package/dist/ink/hooks/use-app.d.ts.map +1 -0
  233. package/dist/ink/hooks/use-app.js +13 -0
  234. package/dist/ink/hooks/use-app.js.map +1 -0
  235. package/dist/ink/hooks/use-declared-cursor.d.ts +27 -0
  236. package/dist/ink/hooks/use-declared-cursor.d.ts.map +1 -0
  237. package/dist/ink/hooks/use-declared-cursor.js +67 -0
  238. package/dist/ink/hooks/use-declared-cursor.js.map +1 -0
  239. package/dist/ink/hooks/use-input.d.ts +38 -0
  240. package/dist/ink/hooks/use-input.d.ts.map +1 -0
  241. package/dist/ink/hooks/use-input.js +86 -0
  242. package/dist/ink/hooks/use-input.js.map +1 -0
  243. package/dist/ink/hooks/use-interval.d.ts +19 -0
  244. package/dist/ink/hooks/use-interval.d.ts.map +1 -0
  245. package/dist/ink/hooks/use-interval.js +59 -0
  246. package/dist/ink/hooks/use-interval.js.map +1 -0
  247. package/dist/ink/hooks/use-search-highlight.d.ts +31 -0
  248. package/dist/ink/hooks/use-search-highlight.d.ts.map +1 -0
  249. package/dist/ink/hooks/use-search-highlight.js +39 -0
  250. package/dist/ink/hooks/use-search-highlight.js.map +1 -0
  251. package/dist/ink/hooks/use-selection.d.ts +40 -0
  252. package/dist/ink/hooks/use-selection.d.ts.map +1 -0
  253. package/dist/ink/hooks/use-selection.js +68 -0
  254. package/dist/ink/hooks/use-selection.js.map +1 -0
  255. package/dist/ink/hooks/use-stdin.d.ts +6 -0
  256. package/dist/ink/hooks/use-stdin.d.ts.map +1 -0
  257. package/dist/ink/hooks/use-stdin.js +13 -0
  258. package/dist/ink/hooks/use-stdin.js.map +1 -0
  259. package/dist/ink/hooks/use-tab-status.d.ts +14 -0
  260. package/dist/ink/hooks/use-tab-status.d.ts.map +1 -0
  261. package/dist/ink/hooks/use-tab-status.js +61 -0
  262. package/dist/ink/hooks/use-tab-status.js.map +1 -0
  263. package/dist/ink/hooks/use-terminal-focus.d.ts +11 -0
  264. package/dist/ink/hooks/use-terminal-focus.d.ts.map +1 -0
  265. package/dist/ink/hooks/use-terminal-focus.js +22 -0
  266. package/dist/ink/hooks/use-terminal-focus.js.map +1 -0
  267. package/dist/ink/hooks/use-terminal-title.d.ts +13 -0
  268. package/dist/ink/hooks/use-terminal-title.d.ts.map +1 -0
  269. package/dist/ink/hooks/use-terminal-title.js +36 -0
  270. package/dist/ink/hooks/use-terminal-title.js.map +1 -0
  271. package/dist/ink/hooks/use-terminal-viewport.d.ts +30 -0
  272. package/dist/ink/hooks/use-terminal-viewport.d.ts.map +1 -0
  273. package/dist/ink/hooks/use-terminal-viewport.js +81 -0
  274. package/dist/ink/hooks/use-terminal-viewport.js.map +1 -0
  275. package/dist/ink/index.d.ts +54 -0
  276. package/dist/ink/index.d.ts.map +1 -0
  277. package/dist/ink/index.js +111 -0
  278. package/dist/ink/index.js.map +1 -0
  279. package/dist/ink/ink.d.ts +371 -0
  280. package/dist/ink/ink.d.ts.map +1 -0
  281. package/dist/ink/ink.js +1686 -0
  282. package/dist/ink/ink.js.map +1 -0
  283. package/dist/ink/instances.d.ts +4 -0
  284. package/dist/ink/instances.d.ts.map +1 -0
  285. package/dist/ink/instances.js +10 -0
  286. package/dist/ink/instances.js.map +1 -0
  287. package/dist/ink/line-width-cache.d.ts +2 -0
  288. package/dist/ink/line-width-cache.d.ts.map +1 -0
  289. package/dist/ink/line-width-cache.js +23 -0
  290. package/dist/ink/line-width-cache.js.map +1 -0
  291. package/dist/ink/log-update.d.ts +18 -0
  292. package/dist/ink/log-update.d.ts.map +1 -0
  293. package/dist/ink/log-update.js +637 -0
  294. package/dist/ink/log-update.js.map +1 -0
  295. package/dist/ink/measure-element.d.ts +17 -0
  296. package/dist/ink/measure-element.d.ts.map +1 -0
  297. package/dist/ink/measure-element.js +11 -0
  298. package/dist/ink/measure-element.js.map +1 -0
  299. package/dist/ink/measure-text.d.ts +7 -0
  300. package/dist/ink/measure-text.d.ts.map +1 -0
  301. package/dist/ink/measure-text.js +38 -0
  302. package/dist/ink/measure-text.js.map +1 -0
  303. package/dist/ink/node-cache.d.ts +21 -0
  304. package/dist/ink/node-cache.d.ts.map +1 -0
  305. package/dist/ink/node-cache.js +36 -0
  306. package/dist/ink/node-cache.js.map +1 -0
  307. package/dist/ink/optimizer.d.ts +16 -0
  308. package/dist/ink/optimizer.d.ts.map +1 -0
  309. package/dist/ink/optimizer.js +85 -0
  310. package/dist/ink/optimizer.js.map +1 -0
  311. package/dist/ink/output.d.ts +120 -0
  312. package/dist/ink/output.d.ts.map +1 -0
  313. package/dist/ink/output.js +559 -0
  314. package/dist/ink/output.js.map +1 -0
  315. package/dist/ink/parse-keypress.d.ts +112 -0
  316. package/dist/ink/parse-keypress.d.ts.map +1 -0
  317. package/dist/ink/parse-keypress.js +719 -0
  318. package/dist/ink/parse-keypress.js.map +1 -0
  319. package/dist/ink/parse-keypress.test.d.ts +2 -0
  320. package/dist/ink/parse-keypress.test.d.ts.map +1 -0
  321. package/dist/ink/parse-keypress.test.js +37 -0
  322. package/dist/ink/parse-keypress.test.js.map +1 -0
  323. package/dist/ink/reconciler.d.ts +12 -0
  324. package/dist/ink/reconciler.d.ts.map +1 -0
  325. package/dist/ink/reconciler.js +456 -0
  326. package/dist/ink/reconciler.js.map +1 -0
  327. package/dist/ink/render-border.d.ts +25 -0
  328. package/dist/ink/render-border.d.ts.map +1 -0
  329. package/dist/ink/render-border.js +141 -0
  330. package/dist/ink/render-border.js.map +1 -0
  331. package/dist/ink/render-node-to-output.d.ts +46 -0
  332. package/dist/ink/render-node-to-output.d.ts.map +1 -0
  333. package/dist/ink/render-node-to-output.js +1257 -0
  334. package/dist/ink/render-node-to-output.js.map +1 -0
  335. package/dist/ink/render-to-screen.d.ts +47 -0
  336. package/dist/ink/render-to-screen.d.ts.map +1 -0
  337. package/dist/ink/render-to-screen.js +213 -0
  338. package/dist/ink/render-to-screen.js.map +1 -0
  339. package/dist/ink/renderer.d.ts +15 -0
  340. package/dist/ink/renderer.d.ts.map +1 -0
  341. package/dist/ink/renderer.js +169 -0
  342. package/dist/ink/renderer.js.map +1 -0
  343. package/dist/ink/root.d.ts +75 -0
  344. package/dist/ink/root.d.ts.map +1 -0
  345. package/dist/ink/root.js +89 -0
  346. package/dist/ink/root.js.map +1 -0
  347. package/dist/ink/screen.d.ts +270 -0
  348. package/dist/ink/screen.d.ts.map +1 -0
  349. package/dist/ink/screen.js +1194 -0
  350. package/dist/ink/screen.js.map +1 -0
  351. package/dist/ink/searchHighlight.d.ts +21 -0
  352. package/dist/ink/searchHighlight.d.ts.map +1 -0
  353. package/dist/ink/searchHighlight.js +82 -0
  354. package/dist/ink/searchHighlight.js.map +1 -0
  355. package/dist/ink/selection.d.ts +230 -0
  356. package/dist/ink/selection.d.ts.map +1 -0
  357. package/dist/ink/selection.js +814 -0
  358. package/dist/ink/selection.js.map +1 -0
  359. package/dist/ink/squash-text-nodes.d.ts +23 -0
  360. package/dist/ink/squash-text-nodes.d.ts.map +1 -0
  361. package/dist/ink/squash-text-nodes.js +60 -0
  362. package/dist/ink/squash-text-nodes.js.map +1 -0
  363. package/dist/ink/stringWidth.d.ts +2 -0
  364. package/dist/ink/stringWidth.d.ts.map +1 -0
  365. package/dist/ink/stringWidth.js +207 -0
  366. package/dist/ink/stringWidth.js.map +1 -0
  367. package/dist/ink/styles.d.ts +307 -0
  368. package/dist/ink/styles.d.ts.map +1 -0
  369. package/dist/ink/styles.js +302 -0
  370. package/dist/ink/styles.js.map +1 -0
  371. package/dist/ink/supports-hyperlinks.d.ts +14 -0
  372. package/dist/ink/supports-hyperlinks.d.ts.map +1 -0
  373. package/dist/ink/supports-hyperlinks.js +48 -0
  374. package/dist/ink/supports-hyperlinks.js.map +1 -0
  375. package/dist/ink/tabstops.d.ts +2 -0
  376. package/dist/ink/tabstops.d.ts.map +1 -0
  377. package/dist/ink/tabstops.js +43 -0
  378. package/dist/ink/tabstops.js.map +1 -0
  379. package/dist/ink/terminal-focus-state.d.ts +7 -0
  380. package/dist/ink/terminal-focus-state.d.ts.map +1 -0
  381. package/dist/ink/terminal-focus-state.js +43 -0
  382. package/dist/ink/terminal-focus-state.js.map +1 -0
  383. package/dist/ink/terminal-querier.d.ts +130 -0
  384. package/dist/ink/terminal-querier.d.ts.map +1 -0
  385. package/dist/ink/terminal-querier.js +184 -0
  386. package/dist/ink/terminal-querier.js.map +1 -0
  387. package/dist/ink/terminal.d.ts +56 -0
  388. package/dist/ink/terminal.d.ts.map +1 -0
  389. package/dist/ink/terminal.js +249 -0
  390. package/dist/ink/terminal.js.map +1 -0
  391. package/dist/ink/termio/csi.d.ts +166 -0
  392. package/dist/ink/termio/csi.d.ts.map +1 -0
  393. package/dist/ink/termio/csi.js +285 -0
  394. package/dist/ink/termio/csi.js.map +1 -0
  395. package/dist/ink/termio/dec.d.ts +38 -0
  396. package/dist/ink/termio/dec.d.ts.map +1 -0
  397. package/dist/ink/termio/dec.js +59 -0
  398. package/dist/ink/termio/dec.js.map +1 -0
  399. package/dist/ink/termio.d.ts +25 -0
  400. package/dist/ink/termio.d.ts.map +1 -0
  401. package/dist/ink/termio.js +32 -0
  402. package/dist/ink/termio.js.map +1 -0
  403. package/dist/ink/useTerminalNotification.d.ts +27 -0
  404. package/dist/ink/useTerminalNotification.d.ts.map +1 -0
  405. package/dist/ink/useTerminalNotification.js +62 -0
  406. package/dist/ink/useTerminalNotification.js.map +1 -0
  407. package/dist/ink/warn.d.ts +2 -0
  408. package/dist/ink/warn.d.ts.map +1 -0
  409. package/dist/ink/warn.js +14 -0
  410. package/dist/ink/warn.js.map +1 -0
  411. package/dist/ink/widest-line.d.ts +2 -0
  412. package/dist/ink/widest-line.d.ts.map +1 -0
  413. package/dist/ink/widest-line.js +18 -0
  414. package/dist/ink/widest-line.js.map +1 -0
  415. package/dist/ink/wrap-text.d.ts +3 -0
  416. package/dist/ink/wrap-text.d.ts.map +1 -0
  417. package/dist/ink/wrap-text.js +61 -0
  418. package/dist/ink/wrap-text.js.map +1 -0
  419. package/dist/ink/wrapAnsi.d.ts +8 -0
  420. package/dist/ink/wrapAnsi.d.ts.map +1 -0
  421. package/dist/ink/wrapAnsi.js +13 -0
  422. package/dist/ink/wrapAnsi.js.map +1 -0
  423. package/dist/memory/embeddings.d.ts +33 -0
  424. package/dist/memory/embeddings.d.ts.map +1 -0
  425. package/dist/memory/embeddings.js +123 -0
  426. package/dist/memory/embeddings.js.map +1 -0
  427. package/dist/memory/index.d.ts +14 -0
  428. package/dist/memory/index.d.ts.map +1 -0
  429. package/dist/memory/index.js +31 -0
  430. package/dist/memory/index.js.map +1 -0
  431. package/dist/memory/prompts.d.ts +12 -0
  432. package/dist/memory/prompts.d.ts.map +1 -0
  433. package/dist/memory/prompts.js +117 -0
  434. package/dist/memory/prompts.js.map +1 -0
  435. package/dist/memory/semantic-search.d.ts +45 -0
  436. package/dist/memory/semantic-search.d.ts.map +1 -0
  437. package/dist/memory/semantic-search.js +112 -0
  438. package/dist/memory/semantic-search.js.map +1 -0
  439. package/dist/memory/storage.d.ts +79 -0
  440. package/dist/memory/storage.d.ts.map +1 -0
  441. package/dist/memory/storage.js +285 -0
  442. package/dist/memory/storage.js.map +1 -0
  443. package/dist/memory/store.d.ts +103 -0
  444. package/dist/memory/store.d.ts.map +1 -0
  445. package/dist/memory/store.js +226 -0
  446. package/dist/memory/store.js.map +1 -0
  447. package/dist/memory/types.d.ts +40 -0
  448. package/dist/memory/types.d.ts.map +1 -0
  449. package/dist/memory/types.js +71 -0
  450. package/dist/memory/types.js.map +1 -0
  451. package/dist/memory/validation.d.ts +28 -0
  452. package/dist/memory/validation.d.ts.map +1 -0
  453. package/dist/memory/validation.js +147 -0
  454. package/dist/memory/validation.js.map +1 -0
  455. package/dist/memory/vector-store.d.ts +49 -0
  456. package/dist/memory/vector-store.d.ts.map +1 -0
  457. package/dist/memory/vector-store.js +259 -0
  458. package/dist/memory/vector-store.js.map +1 -0
  459. package/dist/screens/REPL.d.ts +21 -0
  460. package/dist/screens/REPL.d.ts.map +1 -0
  461. package/dist/screens/REPL.js +139 -0
  462. package/dist/screens/REPL.js.map +1 -0
  463. package/dist/services/agent-runner.d.ts +68 -0
  464. package/dist/services/agent-runner.d.ts.map +1 -0
  465. package/dist/services/agent-runner.js +186 -0
  466. package/dist/services/agent-runner.js.map +1 -0
  467. package/dist/services/atomic-write.d.ts +12 -0
  468. package/dist/services/atomic-write.d.ts.map +1 -0
  469. package/dist/services/atomic-write.js +27 -0
  470. package/dist/services/atomic-write.js.map +1 -0
  471. package/dist/services/config-dir.d.ts +55 -0
  472. package/dist/services/config-dir.d.ts.map +1 -0
  473. package/dist/services/config-dir.js +136 -0
  474. package/dist/services/config-dir.js.map +1 -0
  475. package/dist/services/config.d.ts +54 -0
  476. package/dist/services/config.d.ts.map +1 -0
  477. package/dist/services/config.js +98 -0
  478. package/dist/services/config.js.map +1 -0
  479. package/dist/services/file-glob.d.ts +26 -0
  480. package/dist/services/file-glob.d.ts.map +1 -0
  481. package/dist/services/file-glob.js +134 -0
  482. package/dist/services/file-glob.js.map +1 -0
  483. package/dist/services/global-config.d.ts +109 -0
  484. package/dist/services/global-config.d.ts.map +1 -0
  485. package/dist/services/global-config.js +211 -0
  486. package/dist/services/global-config.js.map +1 -0
  487. package/dist/services/llm.d.ts +139 -0
  488. package/dist/services/llm.d.ts.map +1 -0
  489. package/dist/services/llm.js +376 -0
  490. package/dist/services/llm.js.map +1 -0
  491. package/dist/services/memory.d.ts +39 -0
  492. package/dist/services/memory.d.ts.map +1 -0
  493. package/dist/services/memory.js +88 -0
  494. package/dist/services/memory.js.map +1 -0
  495. package/dist/services/session-storage.d.ts +136 -0
  496. package/dist/services/session-storage.d.ts.map +1 -0
  497. package/dist/services/session-storage.js +304 -0
  498. package/dist/services/session-storage.js.map +1 -0
  499. package/dist/services/task-manager.d.ts +154 -0
  500. package/dist/services/task-manager.d.ts.map +1 -0
  501. package/dist/services/task-manager.js +288 -0
  502. package/dist/services/task-manager.js.map +1 -0
  503. package/dist/services/yaml-config.d.ts +57 -0
  504. package/dist/services/yaml-config.d.ts.map +1 -0
  505. package/dist/services/yaml-config.js +176 -0
  506. package/dist/services/yaml-config.js.map +1 -0
  507. package/dist/skills/discovery.d.ts +22 -0
  508. package/dist/skills/discovery.d.ts.map +1 -0
  509. package/dist/skills/discovery.js +75 -0
  510. package/dist/skills/discovery.js.map +1 -0
  511. package/dist/skills/index.d.ts +10 -0
  512. package/dist/skills/index.d.ts.map +1 -0
  513. package/dist/skills/index.js +26 -0
  514. package/dist/skills/index.js.map +1 -0
  515. package/dist/skills/loader.d.ts +48 -0
  516. package/dist/skills/loader.d.ts.map +1 -0
  517. package/dist/skills/loader.js +231 -0
  518. package/dist/skills/loader.js.map +1 -0
  519. package/dist/skills/registry.d.ts +37 -0
  520. package/dist/skills/registry.d.ts.map +1 -0
  521. package/dist/skills/registry.js +134 -0
  522. package/dist/skills/registry.js.map +1 -0
  523. package/dist/skills/types.d.ts +89 -0
  524. package/dist/skills/types.d.ts.map +1 -0
  525. package/dist/skills/types.js +24 -0
  526. package/dist/skills/types.js.map +1 -0
  527. package/dist/tools/bash_security.d.ts +64 -0
  528. package/dist/tools/bash_security.d.ts.map +1 -0
  529. package/dist/tools/bash_security.js +291 -0
  530. package/dist/tools/bash_security.js.map +1 -0
  531. package/dist/tools/index.d.ts +23 -0
  532. package/dist/tools/index.d.ts.map +1 -0
  533. package/dist/tools/index.js +965 -0
  534. package/dist/tools/index.js.map +1 -0
  535. package/dist/tools/mcp.d.ts +72 -0
  536. package/dist/tools/mcp.d.ts.map +1 -0
  537. package/dist/tools/mcp.js +422 -0
  538. package/dist/tools/mcp.js.map +1 -0
  539. package/dist/tools/plan.d.ts +18 -0
  540. package/dist/tools/plan.d.ts.map +1 -0
  541. package/dist/tools/plan.js +75 -0
  542. package/dist/tools/plan.js.map +1 -0
  543. package/dist/tools/todo.d.ts +18 -0
  544. package/dist/tools/todo.d.ts.map +1 -0
  545. package/dist/tools/todo.js +153 -0
  546. package/dist/tools/todo.js.map +1 -0
  547. package/dist/tools/web.d.ts +13 -0
  548. package/dist/tools/web.d.ts.map +1 -0
  549. package/dist/tools/web.js +377 -0
  550. package/dist/tools/web.js.map +1 -0
  551. package/dist/ui/box.d.ts +56 -0
  552. package/dist/ui/box.d.ts.map +1 -0
  553. package/dist/ui/box.js +241 -0
  554. package/dist/ui/box.js.map +1 -0
  555. package/dist/ui/command-panel.d.ts +55 -0
  556. package/dist/ui/command-panel.d.ts.map +1 -0
  557. package/dist/ui/command-panel.js +212 -0
  558. package/dist/ui/command-panel.js.map +1 -0
  559. package/dist/ui/file-completion.d.ts +62 -0
  560. package/dist/ui/file-completion.d.ts.map +1 -0
  561. package/dist/ui/file-completion.js +209 -0
  562. package/dist/ui/file-completion.js.map +1 -0
  563. package/dist/ui/markdown.d.ts +12 -0
  564. package/dist/ui/markdown.d.ts.map +1 -0
  565. package/dist/ui/markdown.js +215 -0
  566. package/dist/ui/markdown.js.map +1 -0
  567. package/dist/ui/multiline-input.d.ts +47 -0
  568. package/dist/ui/multiline-input.d.ts.map +1 -0
  569. package/dist/ui/multiline-input.js +94 -0
  570. package/dist/ui/multiline-input.js.map +1 -0
  571. package/dist/ui/status-bar.d.ts +33 -0
  572. package/dist/ui/status-bar.d.ts.map +1 -0
  573. package/dist/ui/status-bar.js +96 -0
  574. package/dist/ui/status-bar.js.map +1 -0
  575. package/dist/ui/stream-markdown.d.ts +35 -0
  576. package/dist/ui/stream-markdown.d.ts.map +1 -0
  577. package/dist/ui/stream-markdown.js +138 -0
  578. package/dist/ui/stream-markdown.js.map +1 -0
  579. package/dist/ui/suggestions.d.ts +35 -0
  580. package/dist/ui/suggestions.d.ts.map +1 -0
  581. package/dist/ui/suggestions.js +118 -0
  582. package/dist/ui/suggestions.js.map +1 -0
  583. package/dist/ui/tool-preview.d.ts +34 -0
  584. package/dist/ui/tool-preview.d.ts.map +1 -0
  585. package/dist/ui/tool-preview.js +128 -0
  586. package/dist/ui/tool-preview.js.map +1 -0
  587. package/package.json +93 -0
@@ -0,0 +1,559 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const ansi_tokenize_1 = require("@alcalzone/ansi-tokenize");
7
+ const debug_js_1 = require("../utils/debug.js");
8
+ const intl_js_1 = require("../utils/intl.js");
9
+ const sliceAnsi_js_1 = __importDefault(require("../utils/sliceAnsi.js"));
10
+ const bidi_js_1 = require("./bidi.js");
11
+ const geometry_js_1 = require("./layout/geometry.js");
12
+ const screen_js_1 = require("./screen.js");
13
+ const stringWidth_js_1 = require("./stringWidth.js");
14
+ const widest_line_js_1 = require("./widest-line.js");
15
+ /**
16
+ * Intersect two clips. `undefined` on an axis means unbounded; the other
17
+ * clip's bound wins. If both are bounded, take the tighter constraint
18
+ * (max of mins, min of maxes). If the resulting region is empty
19
+ * (x1 >= x2 or y1 >= y2), writes clipped by it will be dropped.
20
+ */
21
+ function intersectClip(parent, child) {
22
+ if (!parent)
23
+ return child;
24
+ return {
25
+ x1: maxDefined(parent.x1, child.x1),
26
+ x2: minDefined(parent.x2, child.x2),
27
+ y1: maxDefined(parent.y1, child.y1),
28
+ y2: minDefined(parent.y2, child.y2),
29
+ };
30
+ }
31
+ function maxDefined(a, b) {
32
+ if (a === undefined)
33
+ return b;
34
+ if (b === undefined)
35
+ return a;
36
+ return Math.max(a, b);
37
+ }
38
+ function minDefined(a, b) {
39
+ if (a === undefined)
40
+ return b;
41
+ if (b === undefined)
42
+ return a;
43
+ return Math.min(a, b);
44
+ }
45
+ class Output {
46
+ constructor(options) {
47
+ this.operations = [];
48
+ this.charCache = new Map();
49
+ const { width, height, stylePool, screen } = options;
50
+ this.width = width;
51
+ this.height = height;
52
+ this.stylePool = stylePool;
53
+ this.screen = screen;
54
+ (0, screen_js_1.resetScreen)(screen, width, height);
55
+ }
56
+ /**
57
+ * Reuse this Output for a new frame. Zeroes the screen buffer, clears
58
+ * the operation list (backing storage is retained), and caps charCache
59
+ * growth. Preserving charCache across frames is the main win — most
60
+ * lines don't change between renders, so tokenize + grapheme clustering
61
+ * becomes a cache hit.
62
+ */
63
+ reset(width, height, screen) {
64
+ this.width = width;
65
+ this.height = height;
66
+ this.screen = screen;
67
+ this.operations.length = 0;
68
+ (0, screen_js_1.resetScreen)(screen, width, height);
69
+ if (this.charCache.size > 16384)
70
+ this.charCache.clear();
71
+ }
72
+ /**
73
+ * Copy cells from a source screen region (blit = block image transfer).
74
+ */
75
+ blit(src, x, y, width, height) {
76
+ this.operations.push({ type: 'blit', src, x, y, width, height });
77
+ }
78
+ /**
79
+ * Shift full-width rows within [top, bottom] by n. n > 0 = up. Mirrors
80
+ * what DECSTBM + SU/SD does to the terminal. Paired with blit() to reuse
81
+ * prevScreen content during pure scroll, avoiding full child re-render.
82
+ */
83
+ shift(top, bottom, n) {
84
+ this.operations.push({ type: 'shift', top, bottom, n });
85
+ }
86
+ /**
87
+ * Clear a region by writing empty cells. Used when a node shrinks to
88
+ * ensure stale content from the previous frame is removed.
89
+ */
90
+ clear(region, fromAbsolute) {
91
+ this.operations.push({ type: 'clear', region, fromAbsolute });
92
+ }
93
+ /**
94
+ * Mark a region as non-selectable (excluded from fullscreen text
95
+ * selection copy + highlight). Used by <NoSelect> to fence off
96
+ * gutters (line numbers, diff sigils). Applied AFTER blit/write so
97
+ * the mark wins regardless of what's blitted into the region.
98
+ */
99
+ noSelect(region) {
100
+ this.operations.push({ type: 'noSelect', region });
101
+ }
102
+ write(x, y, text, softWrap) {
103
+ if (!text) {
104
+ return;
105
+ }
106
+ this.operations.push({
107
+ type: 'write',
108
+ x,
109
+ y,
110
+ text,
111
+ softWrap,
112
+ });
113
+ }
114
+ clip(clip) {
115
+ this.operations.push({
116
+ type: 'clip',
117
+ clip,
118
+ });
119
+ }
120
+ unclip() {
121
+ this.operations.push({
122
+ type: 'unclip',
123
+ });
124
+ }
125
+ get() {
126
+ const screen = this.screen;
127
+ const screenWidth = this.width;
128
+ const screenHeight = this.height;
129
+ // Track blit vs write cell counts for debugging
130
+ let blitCells = 0;
131
+ let writeCells = 0;
132
+ // Pass 1: expand damage to cover clear regions. The buffer is freshly
133
+ // zeroed by resetScreen, so this pass only marks damage so diff()
134
+ // checks these regions against the previous frame.
135
+ //
136
+ // Also collect clears from absolute-positioned nodes. An absolute
137
+ // node overlays normal-flow siblings; when it shrinks, its clear is
138
+ // pushed AFTER those siblings' clean-subtree blits (DOM order). The
139
+ // blit copies the absolute node's own stale paint from prevScreen,
140
+ // and since clear is damage-only, the ghost survives diff. Normal-
141
+ // flow clears don't need this — a normal-flow node's old position
142
+ // can't have been painted on top of a sibling's current position.
143
+ const absoluteClears = [];
144
+ for (const operation of this.operations) {
145
+ if (operation.type !== 'clear')
146
+ continue;
147
+ const { x, y, width, height } = operation.region;
148
+ const startX = Math.max(0, x);
149
+ const startY = Math.max(0, y);
150
+ const maxX = Math.min(x + width, screenWidth);
151
+ const maxY = Math.min(y + height, screenHeight);
152
+ if (startX >= maxX || startY >= maxY)
153
+ continue;
154
+ const rect = {
155
+ x: startX,
156
+ y: startY,
157
+ width: maxX - startX,
158
+ height: maxY - startY,
159
+ };
160
+ screen.damage = screen.damage ? (0, geometry_js_1.unionRect)(screen.damage, rect) : rect;
161
+ if (operation.fromAbsolute)
162
+ absoluteClears.push(rect);
163
+ }
164
+ const clips = [];
165
+ for (const operation of this.operations) {
166
+ switch (operation.type) {
167
+ case 'clear':
168
+ // handled in pass 1
169
+ continue;
170
+ case 'clip':
171
+ // Intersect with the parent clip (if any) so nested
172
+ // overflow:hidden boxes can't write outside their ancestor's
173
+ // clip region. Without this, a message with overflow:hidden at
174
+ // the bottom of a scrollbox pushes its OWN clip (based on its
175
+ // layout bounds, already translated by -scrollTop) which can
176
+ // extend below the scrollbox viewport — writes escape into
177
+ // the sibling bottom section's rows.
178
+ clips.push(intersectClip(clips.at(-1), operation.clip));
179
+ continue;
180
+ case 'unclip':
181
+ clips.pop();
182
+ continue;
183
+ case 'blit': {
184
+ // Bulk-copy cells from source screen region using TypedArray.set().
185
+ // Tracking damage ensures diff() checks blitted cells for stale content
186
+ // when a parent blits an area that previously contained child content.
187
+ const { src, x: regionX, y: regionY, width: regionWidth, height: regionHeight, } = operation;
188
+ // Intersect with active clip — a child's clean-blit passes its full
189
+ // cached rect, but the parent ScrollBox may have shrunk (pill mount).
190
+ // Without this, the blit writes past the ScrollBox's new bottom edge
191
+ // into the pill's row.
192
+ const clip = clips.at(-1);
193
+ const startX = Math.max(regionX, clip?.x1 ?? 0);
194
+ const startY = Math.max(regionY, clip?.y1 ?? 0);
195
+ const maxY = Math.min(regionY + regionHeight, screenHeight, src.height, clip?.y2 ?? Infinity);
196
+ const maxX = Math.min(regionX + regionWidth, screenWidth, src.width, clip?.x2 ?? Infinity);
197
+ if (startX >= maxX || startY >= maxY)
198
+ continue;
199
+ // Skip rows covered by an absolute-positioned node's clear.
200
+ // Absolute nodes overlay normal-flow siblings, so prevScreen in
201
+ // that region holds the absolute node's stale paint — blitting
202
+ // it back would ghost. See absoluteClears collection above.
203
+ if (absoluteClears.length === 0) {
204
+ (0, screen_js_1.blitRegion)(screen, src, startX, startY, maxX, maxY);
205
+ blitCells += (maxY - startY) * (maxX - startX);
206
+ continue;
207
+ }
208
+ let rowStart = startY;
209
+ for (let row = startY; row <= maxY; row++) {
210
+ const excluded = row < maxY &&
211
+ absoluteClears.some(r => row >= r.y &&
212
+ row < r.y + r.height &&
213
+ startX >= r.x &&
214
+ maxX <= r.x + r.width);
215
+ if (excluded || row === maxY) {
216
+ if (row > rowStart) {
217
+ (0, screen_js_1.blitRegion)(screen, src, startX, rowStart, maxX, row);
218
+ blitCells += (row - rowStart) * (maxX - startX);
219
+ }
220
+ rowStart = row + 1;
221
+ }
222
+ }
223
+ continue;
224
+ }
225
+ case 'shift': {
226
+ (0, screen_js_1.shiftRows)(screen, operation.top, operation.bottom, operation.n);
227
+ continue;
228
+ }
229
+ case 'write': {
230
+ const { text, softWrap } = operation;
231
+ let { x, y } = operation;
232
+ let lines = text.split('\n');
233
+ let swFrom = 0;
234
+ let prevContentEnd = 0;
235
+ const clip = clips.at(-1);
236
+ if (clip) {
237
+ const clipHorizontally = typeof clip?.x1 === 'number' && typeof clip?.x2 === 'number';
238
+ const clipVertically = typeof clip?.y1 === 'number' && typeof clip?.y2 === 'number';
239
+ // If text is positioned outside of clipping area altogether,
240
+ // skip to the next operation to avoid unnecessary calculations
241
+ if (clipHorizontally) {
242
+ const width = (0, widest_line_js_1.widestLine)(text);
243
+ if (x + width <= clip.x1 || x >= clip.x2) {
244
+ continue;
245
+ }
246
+ }
247
+ if (clipVertically) {
248
+ const height = lines.length;
249
+ if (y + height <= clip.y1 || y >= clip.y2) {
250
+ continue;
251
+ }
252
+ }
253
+ if (clipHorizontally) {
254
+ lines = lines.map(line => {
255
+ const from = x < clip.x1 ? clip.x1 - x : 0;
256
+ const width = (0, stringWidth_js_1.stringWidth)(line);
257
+ const to = x + width > clip.x2 ? clip.x2 - x : width;
258
+ let sliced = (0, sliceAnsi_js_1.default)(line, from, to);
259
+ // Wide chars (CJK, emoji) occupy 2 cells. When `to` lands
260
+ // on the first cell of a wide char, sliceAnsi includes the
261
+ // entire glyph and the result overflows clip.x2 by one cell,
262
+ // writing a SpacerTail into the adjacent sibling. Re-slice
263
+ // one cell earlier; wide chars are exactly 2 cells, so a
264
+ // single retry always fits.
265
+ if ((0, stringWidth_js_1.stringWidth)(sliced) > to - from) {
266
+ sliced = (0, sliceAnsi_js_1.default)(line, from, to - 1);
267
+ }
268
+ return sliced;
269
+ });
270
+ if (x < clip.x1) {
271
+ x = clip.x1;
272
+ }
273
+ }
274
+ if (clipVertically) {
275
+ const from = y < clip.y1 ? clip.y1 - y : 0;
276
+ const height = lines.length;
277
+ const to = y + height > clip.y2 ? clip.y2 - y : height;
278
+ // If the first visible line is a soft-wrap continuation, we
279
+ // need the clipped previous line's content end so
280
+ // screen.softWrap[lineY] correctly records the join point
281
+ // even though that line's cells were never written.
282
+ if (softWrap && from > 0 && softWrap[from] === true) {
283
+ prevContentEnd = x + (0, stringWidth_js_1.stringWidth)(lines[from - 1]);
284
+ }
285
+ lines = lines.slice(from, to);
286
+ swFrom = from;
287
+ if (y < clip.y1) {
288
+ y = clip.y1;
289
+ }
290
+ }
291
+ }
292
+ const swBits = screen.softWrap;
293
+ let offsetY = 0;
294
+ for (const line of lines) {
295
+ const lineY = y + offsetY;
296
+ // Line can be outside screen if `text` is taller than screen height
297
+ if (lineY >= screenHeight) {
298
+ break;
299
+ }
300
+ const contentEnd = writeLineToScreen(screen, line, x, lineY, screenWidth, this.stylePool, this.charCache);
301
+ writeCells += contentEnd - x;
302
+ // See Screen.softWrap docstring for the encoding. contentEnd
303
+ // from writeLineToScreen is tab-expansion-aware, unlike
304
+ // x+stringWidth(line) which treats tabs as width 0.
305
+ if (softWrap) {
306
+ const isSW = softWrap[swFrom + offsetY] === true;
307
+ swBits[lineY] = isSW ? prevContentEnd : 0;
308
+ prevContentEnd = contentEnd;
309
+ }
310
+ offsetY++;
311
+ }
312
+ continue;
313
+ }
314
+ }
315
+ }
316
+ // noSelect ops go LAST so they win over blits (which copy noSelect
317
+ // from prevScreen) and writes (which don't touch noSelect). This way
318
+ // a <NoSelect> box correctly fences its region even when the parent
319
+ // blits, and moving a <NoSelect> between frames correctly clears the
320
+ // old region (resetScreen already zeroed the bitmap).
321
+ for (const operation of this.operations) {
322
+ if (operation.type === 'noSelect') {
323
+ const { x, y, width, height } = operation.region;
324
+ (0, screen_js_1.markNoSelectRegion)(screen, x, y, width, height);
325
+ }
326
+ }
327
+ // Log blit/write ratio for debugging - high write count suggests blitting isn't working
328
+ const totalCells = blitCells + writeCells;
329
+ if (totalCells > 1000 && writeCells > blitCells) {
330
+ (0, debug_js_1.logForDebugging)(`High write ratio: blit=${blitCells}, write=${writeCells} (${((writeCells / totalCells) * 100).toFixed(1)}% writes), screen=${screenHeight}x${screenWidth}`);
331
+ }
332
+ return screen;
333
+ }
334
+ }
335
+ exports.default = Output;
336
+ function stylesEqual(a, b) {
337
+ if (a === b)
338
+ return true; // Reference equality fast path
339
+ const len = a.length;
340
+ if (len !== b.length)
341
+ return false;
342
+ if (len === 0)
343
+ return true; // Both empty
344
+ for (let i = 0; i < len; i++) {
345
+ if (a[i].code !== b[i].code)
346
+ return false;
347
+ }
348
+ return true;
349
+ }
350
+ /**
351
+ * Convert a string with ANSI codes into styled characters with proper grapheme
352
+ * clustering. Fixes ansi-tokenize splitting grapheme clusters (like family
353
+ * emojis) into individual code points.
354
+ *
355
+ * Also precomputes styleId + hyperlink per style run (not per char) — an
356
+ * 80-char line with 3 style runs does 3 intern calls instead of 80.
357
+ */
358
+ function styledCharsWithGraphemeClustering(chars, stylePool) {
359
+ const charCount = chars.length;
360
+ if (charCount === 0)
361
+ return [];
362
+ const result = [];
363
+ const bufferChars = [];
364
+ let bufferStyles = chars[0].styles;
365
+ for (let i = 0; i < charCount; i++) {
366
+ const char = chars[i];
367
+ const styles = char.styles;
368
+ // Different styles means we need to flush and start new buffer
369
+ if (bufferChars.length > 0 && !stylesEqual(styles, bufferStyles)) {
370
+ flushBuffer(bufferChars.join(''), bufferStyles, stylePool, result);
371
+ bufferChars.length = 0;
372
+ }
373
+ bufferChars.push(char.value);
374
+ bufferStyles = styles;
375
+ }
376
+ // Final flush
377
+ if (bufferChars.length > 0) {
378
+ flushBuffer(bufferChars.join(''), bufferStyles, stylePool, result);
379
+ }
380
+ return result;
381
+ }
382
+ function flushBuffer(buffer, styles, stylePool, out) {
383
+ // Compute styleId + hyperlink ONCE for the whole style run.
384
+ // Every grapheme in this buffer shares the same styles.
385
+ //
386
+ // Extract and track hyperlinks separately, filter from styles.
387
+ // Always check for OSC 8 codes to filter, not just when a URL is
388
+ // extracted. The tokenizer treats OSC 8 close codes (empty URL) as
389
+ // active styles, so they must be filtered even when no hyperlink
390
+ // URL is present.
391
+ const hyperlink = (0, screen_js_1.extractHyperlinkFromStyles)(styles) ?? undefined;
392
+ const hasOsc8Styles = hyperlink !== undefined ||
393
+ styles.some(s => s.code.length >= screen_js_1.OSC8_PREFIX.length && s.code.startsWith(screen_js_1.OSC8_PREFIX));
394
+ const filteredStyles = hasOsc8Styles
395
+ ? (0, screen_js_1.filterOutHyperlinkStyles)(styles)
396
+ : styles;
397
+ const styleId = stylePool.intern(filteredStyles);
398
+ for (const { segment: grapheme } of (0, intl_js_1.getGraphemeSegmenter)().segment(buffer)) {
399
+ out.push({
400
+ value: grapheme,
401
+ width: (0, stringWidth_js_1.stringWidth)(grapheme),
402
+ styleId,
403
+ hyperlink,
404
+ });
405
+ }
406
+ }
407
+ /**
408
+ * Write a single line's characters into the screen buffer.
409
+ * Extracted from Output.get() so JSC can optimize this tight,
410
+ * monomorphic loop independently — better register allocation,
411
+ * setCellAt inlining, and type feedback than when buried inside
412
+ * a 300-line dispatch function.
413
+ *
414
+ * Returns the end column (x + visual width, including tab expansion) so
415
+ * the caller can record it in screen.softWrap without re-walking the
416
+ * line via stringWidth(). Caller computes the debug cell-count as end-x.
417
+ */
418
+ function writeLineToScreen(screen, line, x, y, screenWidth, stylePool, charCache) {
419
+ let characters = charCache.get(line);
420
+ if (!characters) {
421
+ characters = (0, bidi_js_1.reorderBidi)(styledCharsWithGraphemeClustering((0, ansi_tokenize_1.styledCharsFromTokens)((0, ansi_tokenize_1.tokenize)(line)), stylePool));
422
+ charCache.set(line, characters);
423
+ }
424
+ let offsetX = x;
425
+ for (let charIdx = 0; charIdx < characters.length; charIdx++) {
426
+ const character = characters[charIdx];
427
+ const codePoint = character.value.codePointAt(0);
428
+ // Handle C0 control characters (0x00-0x1F) that cause cursor movement
429
+ // mismatches. stringWidth treats these as width 0, but terminals may
430
+ // move the cursor differently.
431
+ if (codePoint !== undefined && codePoint <= 0x1f) {
432
+ // Tab (0x09): expand to spaces to reach next tab stop
433
+ if (codePoint === 0x09) {
434
+ const tabWidth = 8;
435
+ const spacesToNextStop = tabWidth - (offsetX % tabWidth);
436
+ for (let i = 0; i < spacesToNextStop && offsetX < screenWidth; i++) {
437
+ (0, screen_js_1.setCellAt)(screen, offsetX, y, {
438
+ char: ' ',
439
+ styleId: stylePool.none,
440
+ width: 0 /* CellWidth.Narrow */,
441
+ hyperlink: undefined,
442
+ });
443
+ offsetX++;
444
+ }
445
+ }
446
+ // ESC (0x1B): skip incomplete escape sequences that ansi-tokenize
447
+ // didn't recognize. ansi-tokenize only parses SGR sequences (ESC[...m)
448
+ // and OSC 8 hyperlinks (ESC]8;;url BEL). Other sequences like cursor
449
+ // movement, screen clearing, or terminal title become individual char
450
+ // tokens that we need to skip here.
451
+ else if (codePoint === 0x1b) {
452
+ const nextChar = characters[charIdx + 1]?.value;
453
+ const nextCode = nextChar?.codePointAt(0);
454
+ if (nextChar === '(' ||
455
+ nextChar === ')' ||
456
+ nextChar === '*' ||
457
+ nextChar === '+') {
458
+ // Charset selection: ESC ( X, ESC ) X, etc.
459
+ // Skip the intermediate char and the charset designator
460
+ charIdx += 2;
461
+ }
462
+ else if (nextChar === '[') {
463
+ // CSI sequence: ESC [ ... final-byte
464
+ // Final byte is in range 0x40-0x7E (@, A-Z, [\]^_`, a-z, {|}~)
465
+ // Examples: ESC[2J (clear), ESC[?25l (cursor hide), ESC[H (home)
466
+ charIdx++; // skip the [
467
+ while (charIdx < characters.length - 1) {
468
+ charIdx++;
469
+ const c = characters[charIdx]?.value.codePointAt(0);
470
+ // Final byte terminates the sequence
471
+ if (c !== undefined && c >= 0x40 && c <= 0x7e) {
472
+ break;
473
+ }
474
+ }
475
+ }
476
+ else if (nextChar === ']' ||
477
+ nextChar === 'P' ||
478
+ nextChar === '_' ||
479
+ nextChar === '^' ||
480
+ nextChar === 'X') {
481
+ // String-based sequences terminated by BEL (0x07) or ST (ESC \):
482
+ // - OSC: ESC ] ... (Operating System Command)
483
+ // - DCS: ESC P ... (Device Control String)
484
+ // - APC: ESC _ ... (Application Program Command)
485
+ // - PM: ESC ^ ... (Privacy Message)
486
+ // - SOS: ESC X ... (Start of String)
487
+ charIdx++; // skip the introducer char
488
+ while (charIdx < characters.length - 1) {
489
+ charIdx++;
490
+ const c = characters[charIdx]?.value;
491
+ // BEL (0x07) terminates the sequence
492
+ if (c === '\x07') {
493
+ break;
494
+ }
495
+ // ST (String Terminator) is ESC \
496
+ // When we see ESC, check if next char is backslash
497
+ if (c === '\x1b') {
498
+ const nextC = characters[charIdx + 1]?.value;
499
+ if (nextC === '\\') {
500
+ charIdx++; // skip the backslash too
501
+ break;
502
+ }
503
+ }
504
+ }
505
+ }
506
+ else if (nextCode !== undefined &&
507
+ nextCode >= 0x30 &&
508
+ nextCode <= 0x7e) {
509
+ // Single-character escape sequences: ESC followed by 0x30-0x7E
510
+ // (excluding the multi-char introducers already handled above)
511
+ // - Fp range (0x30-0x3F): ESC 7 (save cursor), ESC 8 (restore)
512
+ // - Fe range (0x40-0x5F): ESC D (index), ESC M (reverse index)
513
+ // - Fs range (0x60-0x7E): ESC c (reset)
514
+ charIdx++; // skip the command char
515
+ }
516
+ }
517
+ // Carriage return (0x0D): would move cursor to column 0, skip it
518
+ // Backspace (0x08): would move cursor left, skip it
519
+ // Bell (0x07), vertical tab (0x0B), form feed (0x0C): skip
520
+ // All other control chars (0x00-0x06, 0x0E-0x1F): skip
521
+ // Note: newline (0x0A) is already handled by line splitting
522
+ continue;
523
+ }
524
+ // Zero-width characters (combining marks, ZWNJ, ZWS, etc.)
525
+ // don't occupy terminal cells — storing them as Narrow cells
526
+ // desyncs the virtual cursor from the real terminal cursor.
527
+ // Width was computed once during clustering (cached via charCache).
528
+ const charWidth = character.width;
529
+ if (charWidth === 0) {
530
+ continue;
531
+ }
532
+ const isWideCharacter = charWidth >= 2;
533
+ // Wide char at last column can't fit — terminal would wrap it to
534
+ // the next line, desyncing our cursor model. Place a SpacerHead
535
+ // to mark the blank column, matching terminal behavior.
536
+ if (isWideCharacter && offsetX + 2 > screenWidth) {
537
+ (0, screen_js_1.setCellAt)(screen, offsetX, y, {
538
+ char: ' ',
539
+ styleId: stylePool.none,
540
+ width: 3 /* CellWidth.SpacerHead */,
541
+ hyperlink: undefined,
542
+ });
543
+ offsetX++;
544
+ continue;
545
+ }
546
+ // styleId + hyperlink were precomputed during clustering (once per
547
+ // style run, cached via charCache). Hot loop is now just property
548
+ // reads — no intern, no extract, no filter per frame.
549
+ (0, screen_js_1.setCellAt)(screen, offsetX, y, {
550
+ char: character.value,
551
+ styleId: character.styleId,
552
+ width: isWideCharacter ? 1 /* CellWidth.Wide */ : 0 /* CellWidth.Narrow */,
553
+ hyperlink: character.hyperlink,
554
+ });
555
+ offsetX += isWideCharacter ? 2 : 1;
556
+ }
557
+ return offsetX;
558
+ }
559
+ //# sourceMappingURL=output.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"output.js","sourceRoot":"","sources":["../../src/ink/output.ts"],"names":[],"mappings":"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"}