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,111 @@
1
+ "use strict";
2
+ /**
3
+ * OpenHorse - Minimal Terminal UI Utilities
4
+ *
5
+ * 简化的终端 UI 工具,不依赖 React hooks
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.SPINNER_FRAMES = exports.SCREEN = exports.CURSOR = exports.STYLES = exports.COLORS = void 0;
9
+ exports.createSpinner = createSpinner;
10
+ exports.setupRawInput = setupRawInput;
11
+ exports.clearScreen = clearScreen;
12
+ exports.hideCursor = hideCursor;
13
+ exports.showCursor = showCursor;
14
+ // ============================================================================
15
+ // ANSI 颜色辅助函数
16
+ // ============================================================================
17
+ exports.COLORS = {
18
+ black: '\x1b[30m',
19
+ red: '\x1b[31m',
20
+ green: '\x1b[32m',
21
+ yellow: '\x1b[33m',
22
+ blue: '\x1b[34m',
23
+ magenta: '\x1b[35m',
24
+ cyan: '\x1b[36m',
25
+ white: '\x1b[37m',
26
+ gray: '\x1b[90m',
27
+ brightRed: '\x1b[91m',
28
+ brightGreen: '\x1b[92m',
29
+ brightYellow: '\x1b[93m',
30
+ brightBlue: '\x1b[94m',
31
+ brightMagenta: '\x1b[95m',
32
+ brightCyan: '\x1b[96m',
33
+ brightWhite: '\x1b[97m',
34
+ };
35
+ exports.STYLES = {
36
+ bold: '\x1b[1m',
37
+ dim: '\x1b[2m',
38
+ italic: '\x1b[3m',
39
+ underline: '\x1b[4m',
40
+ reset: '\x1b[0m',
41
+ };
42
+ exports.CURSOR = {
43
+ hide: '\x1b[?25l',
44
+ show: '\x1b[?25h',
45
+ };
46
+ exports.SCREEN = {
47
+ clear: '\x1b[2J',
48
+ home: '\x1b[H',
49
+ clearLine: '\x1b[2K',
50
+ };
51
+ // ============================================================================
52
+ // Spinner
53
+ // ============================================================================
54
+ exports.SPINNER_FRAMES = ['⠋', '⠙', '⠹', '⠸', '⠼', '⠴', '⠦', '⠧', '⠇', '⠏'];
55
+ function createSpinner(onUpdate) {
56
+ let frameIndex = 0;
57
+ let timer = null;
58
+ return {
59
+ start: () => {
60
+ timer = setInterval(() => {
61
+ frameIndex = (frameIndex + 1) % exports.SPINNER_FRAMES.length;
62
+ onUpdate(exports.SPINNER_FRAMES[frameIndex]);
63
+ }, 80);
64
+ },
65
+ stop: () => {
66
+ if (timer) {
67
+ clearInterval(timer);
68
+ timer = null;
69
+ }
70
+ },
71
+ };
72
+ }
73
+ // ============================================================================
74
+ // 输入处理
75
+ // ============================================================================
76
+ function setupRawInput(onChar) {
77
+ if (!process.stdin.isTTY) {
78
+ return { cleanup: () => { } };
79
+ }
80
+ process.stdin.setRawMode(true);
81
+ process.stdin.resume();
82
+ process.stdin.setEncoding('utf8');
83
+ const handler = (data) => {
84
+ const char = data.charAt(0);
85
+ const key = {
86
+ name: char,
87
+ ctrl: char === '\x03', // Ctrl+C
88
+ };
89
+ onChar(data, key);
90
+ };
91
+ process.stdin.on('data', handler);
92
+ return {
93
+ cleanup: () => {
94
+ process.stdin.setRawMode(false);
95
+ process.stdin.removeListener('data', handler);
96
+ },
97
+ };
98
+ }
99
+ // ============================================================================
100
+ // 渲染辅助
101
+ // ============================================================================
102
+ function clearScreen() {
103
+ process.stdout.write(exports.SCREEN.clear + exports.SCREEN.home);
104
+ }
105
+ function hideCursor() {
106
+ process.stdout.write(exports.CURSOR.hide);
107
+ }
108
+ function showCursor() {
109
+ process.stdout.write(exports.CURSOR.show);
110
+ }
111
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ink/index.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAkDH,sCAkBC;AAMD,sCA4BC;AAMD,kCAEC;AAED,gCAEC;AAED,gCAEC;AApHD,+EAA+E;AAC/E,cAAc;AACd,+EAA+E;AAElE,QAAA,MAAM,GAAG;IACpB,KAAK,EAAE,UAAU;IACjB,GAAG,EAAE,UAAU;IACf,KAAK,EAAE,UAAU;IACjB,MAAM,EAAE,UAAU;IAClB,IAAI,EAAE,UAAU;IAChB,OAAO,EAAE,UAAU;IACnB,IAAI,EAAE,UAAU;IAChB,KAAK,EAAE,UAAU;IACjB,IAAI,EAAE,UAAU;IAChB,SAAS,EAAE,UAAU;IACrB,WAAW,EAAE,UAAU;IACvB,YAAY,EAAE,UAAU;IACxB,UAAU,EAAE,UAAU;IACtB,aAAa,EAAE,UAAU;IACzB,UAAU,EAAE,UAAU;IACtB,WAAW,EAAE,UAAU;CACxB,CAAC;AAEW,QAAA,MAAM,GAAG;IACpB,IAAI,EAAE,SAAS;IACf,GAAG,EAAE,SAAS;IACd,MAAM,EAAE,SAAS;IACjB,SAAS,EAAE,SAAS;IACpB,KAAK,EAAE,SAAS;CACjB,CAAC;AAEW,QAAA,MAAM,GAAG;IACpB,IAAI,EAAE,WAAW;IACjB,IAAI,EAAE,WAAW;CAClB,CAAC;AAEW,QAAA,MAAM,GAAG;IACpB,KAAK,EAAE,SAAS;IAChB,IAAI,EAAE,QAAQ;IACd,SAAS,EAAE,SAAS;CACrB,CAAC;AAEF,+EAA+E;AAC/E,UAAU;AACV,+EAA+E;AAElE,QAAA,cAAc,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AAEjF,SAAgB,aAAa,CAAC,QAAiC;IAC7D,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,IAAI,KAAK,GAA0B,IAAI,CAAC;IAExC,OAAO;QACL,KAAK,EAAE,GAAG,EAAE;YACV,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE;gBACvB,UAAU,GAAG,CAAC,UAAU,GAAG,CAAC,CAAC,GAAG,sBAAc,CAAC,MAAM,CAAC;gBACtD,QAAQ,CAAC,sBAAc,CAAC,UAAU,CAAC,CAAC,CAAC;YACvC,CAAC,EAAE,EAAE,CAAC,CAAC;QACT,CAAC;QACD,IAAI,EAAE,GAAG,EAAE;YACT,IAAI,KAAK,EAAE,CAAC;gBACV,aAAa,CAAC,KAAK,CAAC,CAAC;gBACrB,KAAK,GAAG,IAAI,CAAC;YACf,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC;AAED,+EAA+E;AAC/E,OAAO;AACP,+EAA+E;AAE/E,SAAgB,aAAa,CAC3B,MAAoE;IAEpE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACzB,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,GAAE,CAAC,EAAE,CAAC;IAC/B,CAAC;IAED,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IAC/B,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;IACvB,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAElC,MAAM,OAAO,GAAG,CAAC,IAAY,EAAE,EAAE;QAC/B,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAC5B,MAAM,GAAG,GAAG;YACV,IAAI,EAAE,IAAI;YACV,IAAI,EAAE,IAAI,KAAK,MAAM,EAAE,SAAS;SACjC,CAAC;QACF,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IACpB,CAAC,CAAC;IAEF,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAElC,OAAO;QACL,OAAO,EAAE,GAAG,EAAE;YACZ,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YAChC,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAChD,CAAC;KACF,CAAC;AACJ,CAAC;AAED,+EAA+E;AAC/E,OAAO;AACP,+EAA+E;AAE/E,SAAgB,WAAW;IACzB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,cAAM,CAAC,KAAK,GAAG,cAAM,CAAC,IAAI,CAAC,CAAC;AACnD,CAAC;AAED,SAAgB,UAAU;IACxB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,cAAM,CAAC,IAAI,CAAC,CAAC;AACpC,CAAC;AAED,SAAgB,UAAU;IACxB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,cAAM,CAAC,IAAI,CAAC,CAAC;AACpC,CAAC"}
@@ -0,0 +1,371 @@
1
+ import { type ReactNode } from 'react';
2
+ import * as dom from './dom.js';
3
+ import { FocusManager } from './focus.js';
4
+ import { type FrameEvent } from './frame.js';
5
+ import type { ParsedKey } from './parse-keypress.js';
6
+ import { type MatchPosition } from './render-to-screen.js';
7
+ import { type FocusMove, type SelectionState } from './selection.js';
8
+ export type Options = {
9
+ stdout: NodeJS.WriteStream;
10
+ stdin: NodeJS.ReadStream;
11
+ stderr: NodeJS.WriteStream;
12
+ exitOnCtrlC: boolean;
13
+ patchConsole: boolean;
14
+ waitUntilExit?: () => Promise<void>;
15
+ onFrame?: (event: FrameEvent) => void;
16
+ };
17
+ export default class Ink {
18
+ private readonly options;
19
+ private readonly log;
20
+ private readonly terminal;
21
+ private scheduleRender;
22
+ private isUnmounted;
23
+ private isPaused;
24
+ private readonly container;
25
+ private rootNode;
26
+ readonly focusManager: FocusManager;
27
+ private renderer;
28
+ private readonly stylePool;
29
+ private charPool;
30
+ private hyperlinkPool;
31
+ private exitPromise?;
32
+ private restoreConsole?;
33
+ private restoreStderr?;
34
+ private readonly unsubscribeTTYHandlers?;
35
+ private terminalColumns;
36
+ private terminalRows;
37
+ private currentNode;
38
+ private frontFrame;
39
+ private backFrame;
40
+ private lastPoolResetTime;
41
+ private drainTimer;
42
+ private lastYogaCounters;
43
+ private altScreenParkPatch;
44
+ readonly selection: SelectionState;
45
+ private searchHighlightQuery;
46
+ private searchPositions;
47
+ private readonly selectionListeners;
48
+ private readonly hoveredNodes;
49
+ private altScreenActive;
50
+ private altScreenMouseTracking;
51
+ private prevFrameContaminated;
52
+ private needsEraseBeforePaint;
53
+ private cursorDeclaration;
54
+ private displayCursor;
55
+ private reportRenderError;
56
+ constructor(options: Options);
57
+ private handleResume;
58
+ private handleResize;
59
+ resolveExitPromise: () => void;
60
+ rejectExitPromise: (reason?: Error) => void;
61
+ unsubscribeExit: () => void;
62
+ /**
63
+ * Pause Ink and hand the terminal over to an external TUI (e.g. git
64
+ * commit editor). In non-fullscreen mode this enters the alt screen;
65
+ * in fullscreen mode we're already in alt so we just clear it.
66
+ * Call `exitAlternateScreen()` when done to restore Ink.
67
+ */
68
+ enterAlternateScreen(): void;
69
+ /**
70
+ * Resume Ink after an external TUI handoff with a full repaint.
71
+ * In non-fullscreen mode this exits the alt screen back to main;
72
+ * in fullscreen mode we re-enter alt and clear + repaint.
73
+ *
74
+ * The re-enter matters: terminal editors (vim, nano, less) write
75
+ * smcup/rmcup (?1049h/?1049l), so even though we started in alt,
76
+ * the editor's rmcup on exit drops us to main screen. Without
77
+ * re-entering, the 2J below wipes the user's main-screen scrollback
78
+ * and subsequent renders land in main — native terminal scroll
79
+ * returns, fullscreen scroll is dead.
80
+ */
81
+ exitAlternateScreen(): void;
82
+ onRender(): void;
83
+ pause(): void;
84
+ resume(): void;
85
+ /**
86
+ * Reset frame buffers so the next render writes the full screen from scratch.
87
+ * Call this before resume() when the terminal content has been corrupted by
88
+ * an external process (e.g. tmux, shell, full-screen TUI).
89
+ */
90
+ repaint(): void;
91
+ /**
92
+ * Clear the physical terminal and force a full redraw.
93
+ *
94
+ * The traditional readline ctrl+l — clears the visible screen and
95
+ * redraws the current content. Also the recovery path when the terminal
96
+ * was cleared externally (macOS Cmd+K) and Ink's diff engine thinks
97
+ * unchanged cells don't need repainting. Scrollback is preserved.
98
+ */
99
+ forceRedraw(): void;
100
+ /**
101
+ * Mark the previous frame as untrustworthy for blit, forcing the next
102
+ * render to do a full-damage diff instead of the per-node fast path.
103
+ *
104
+ * Lighter than forceRedraw() — no screen clear, no extra write. Call
105
+ * from a useLayoutEffect cleanup when unmounting a tall overlay: the
106
+ * blit fast path can copy stale cells from the overlay frame into rows
107
+ * the shrunken layout no longer reaches, leaving a ghost title/divider.
108
+ * onRender resets the flag at frame end so it's one-shot.
109
+ */
110
+ invalidatePrevFrame(): void;
111
+ /**
112
+ * Called by the <AlternateScreen> component on mount/unmount.
113
+ * Controls cursor.y clamping in the renderer and gates alt-screen-aware
114
+ * behavior in SIGCONT/resize/unmount handlers. Repaints on change so
115
+ * the first alt-screen frame (and first main-screen frame on exit) is
116
+ * a full redraw with no stale diff state.
117
+ */
118
+ setAltScreenActive(active: boolean, mouseTracking?: boolean): void;
119
+ get isAltScreenActive(): boolean;
120
+ /**
121
+ * Re-assert terminal modes after a gap (>5s stdin silence or event-loop
122
+ * stall). Catches tmux detach→attach, ssh reconnect, and laptop
123
+ * sleep/wake — none of which send SIGCONT. The terminal may reset DEC
124
+ * private modes on reconnect; this method restores them.
125
+ *
126
+ * Always re-asserts extended key reporting and mouse tracking. Mouse
127
+ * tracking is idempotent (DEC private mode set-when-set is a no-op). The
128
+ * Kitty keyboard protocol is NOT — CSI >1u is a stack push, so we pop
129
+ * first to keep depth balanced (pop on empty stack is a no-op per spec,
130
+ * so after a terminal reset this still restores depth 0→1). Without the
131
+ * pop, each >5s idle gap adds a stack entry, and the single pop on exit
132
+ * or suspend can't drain them — the shell is left in CSI u mode where
133
+ * Ctrl+C/Ctrl+D leak as escape sequences. The alt-screen
134
+ * re-entry (ERASE_SCREEN + frame reset) is NOT idempotent — it blanks the
135
+ * screen — so it's opt-in via includeAltScreen. The stdin-gap caller fires
136
+ * on ordinary >5s idle + keypress and must not erase; the event-loop stall
137
+ * detector fires on genuine sleep/wake and opts in. tmux attach / ssh
138
+ * reconnect typically send a resize, which already covers alt-screen via
139
+ * handleResize.
140
+ */
141
+ reassertTerminalModes: (includeAltScreen?: boolean) => void;
142
+ /**
143
+ * Mark this instance as unmounted so future unmount() calls early-return.
144
+ * Called by gracefulShutdown's cleanupTerminalModes() after it has sent
145
+ * EXIT_ALT_SCREEN but before the remaining terminal-reset sequences.
146
+ * Without this, signal-exit's deferred ink.unmount() (triggered by
147
+ * process.exit()) runs the full unmount path: onRender() + writeSync
148
+ * cleanup block + updateContainerSync → AlternateScreen unmount cleanup.
149
+ * The result is 2-3 redundant EXIT_ALT_SCREEN sequences landing on the
150
+ * main screen AFTER printResumeHint(), which tmux (at least) interprets
151
+ * as restoring the saved cursor position — clobbering the resume hint.
152
+ */
153
+ detachForShutdown(): void;
154
+ /** @see drainStdin */
155
+ drainStdin(): void;
156
+ /**
157
+ * Re-enter alt-screen, clear, home, re-enable mouse tracking, and reset
158
+ * frame buffers so the next render repaints from scratch. Self-heal for
159
+ * SIGCONT, resize, and stdin-gap/event-loop-stall (sleep/wake) — any of
160
+ * which can leave the terminal in main-screen mode while altScreenActive
161
+ * stays true. ENTER_ALT_SCREEN is a terminal-side no-op if already in alt.
162
+ */
163
+ private reenterAltScreen;
164
+ /**
165
+ * Seed prev/back frames with full-size BLANK screens (rows×cols of empty
166
+ * cells, not 0×0). In alt-screen mode, next.screen.height is always
167
+ * terminalRows; if prev.screen.height is 0 (emptyFrame's default),
168
+ * log-update sees heightDelta > 0 ('growing') and calls renderFrameSlice,
169
+ * whose trailing per-row CR+LF at the last row scrolls the alt screen,
170
+ * permanently desyncing the virtual and physical cursors by 1 row.
171
+ *
172
+ * With a rows×cols blank prev, heightDelta === 0 → standard diffEach
173
+ * → moveCursorTo (CSI cursorMove, no LF, no scroll).
174
+ *
175
+ * viewport.height = rows + 1 matches the renderer's alt-screen output,
176
+ * preventing a spurious resize trigger on the first frame. cursor.y = 0
177
+ * matches the physical cursor after ENTER_ALT_SCREEN + CSI H (home).
178
+ */
179
+ private resetFramesForAltScreen;
180
+ /**
181
+ * Copy the current selection to the clipboard without clearing the
182
+ * highlight. Matches iTerm2's copy-on-select behavior where the selected
183
+ * region stays visible after the automatic copy.
184
+ */
185
+ copySelectionNoClear(): string;
186
+ /**
187
+ * Copy the current text selection to the system clipboard via OSC 52
188
+ * and clear the selection. Returns the copied text (empty if no selection).
189
+ */
190
+ copySelection(): string;
191
+ /** Clear the current text selection without copying. */
192
+ clearTextSelection(): void;
193
+ /**
194
+ * Set the search highlight query. Non-empty → all visible occurrences
195
+ * are inverted (SGR 7) on the next frame; first one also underlined.
196
+ * Empty → clears (prevFrameContaminated handles the frame after). Same
197
+ * damage-tracking machinery as selection — setCellStyleId doesn't track
198
+ * damage, so the overlay forces full-frame damage while active.
199
+ */
200
+ setSearchHighlight(query: string): void;
201
+ /** Paint an EXISTING DOM subtree to a fresh Screen at its natural
202
+ * height, scan for query. Returns positions relative to the element's
203
+ * bounding box (row 0 = element top).
204
+ *
205
+ * The element comes from the MAIN tree — built with all real
206
+ * providers, yoga already computed. We paint it to a fresh buffer
207
+ * with offsets so it lands at (0,0). Same paint path as the main
208
+ * render. Zero drift. No second React root, no context bridge.
209
+ *
210
+ * ~1-2ms (paint only, no reconcile — the DOM is already built). */
211
+ scanElementSubtree(el: dom.DOMElement): MatchPosition[];
212
+ /** Set the position-based highlight state. Every frame, writes CURRENT
213
+ * style at positions[currentIdx] + rowOffset. null clears. The scan-
214
+ * highlight (inverse on all matches) still runs — this overlays yellow
215
+ * on top. rowOffset changes as the user scrolls (= message's current
216
+ * screen-top); positions stay stable (message-relative). */
217
+ setSearchPositions(state: {
218
+ positions: MatchPosition[];
219
+ rowOffset: number;
220
+ currentIdx: number;
221
+ } | null): void;
222
+ /**
223
+ * Set the selection highlight background color. Replaces the per-cell
224
+ * SGR-7 inverse with a solid theme-aware bg (matches native terminal
225
+ * selection). Accepts the same color formats as Text backgroundColor
226
+ * (rgb(), ansi:name, #hex, ansi256()) — colorize() routes through
227
+ * chalk so the tmux/xterm.js level clamps in colorize.ts apply and
228
+ * the emitted SGR is correct for the current terminal.
229
+ *
230
+ * Called by React-land once theme is known (ScrollKeybindingHandler's
231
+ * useEffect watching useTheme). Before that call, withSelectionBg
232
+ * falls back to withInverse so selection still renders on the first
233
+ * frame; the effect fires before any mouse input so the fallback is
234
+ * unobservable in practice.
235
+ */
236
+ setSelectionBgColor(color: string): void;
237
+ /**
238
+ * Capture text from rows about to scroll out of the viewport during
239
+ * drag-to-scroll. Must be called BEFORE the ScrollBox scrolls so the
240
+ * screen buffer still holds the outgoing content. Accumulated into
241
+ * the selection state and joined back in by getSelectedText.
242
+ */
243
+ captureScrolledRows(firstRow: number, lastRow: number, side: 'above' | 'below'): void;
244
+ /**
245
+ * Shift anchor AND focus by dRow, clamped to [minRow, maxRow]. Used by
246
+ * keyboard scroll handlers (PgUp/PgDn etc.) so the highlight tracks the
247
+ * content instead of disappearing. Unlike shiftAnchor (drag-to-scroll),
248
+ * this moves BOTH endpoints — the user isn't holding the mouse at one
249
+ * edge. Supplies screen.width for the col-reset-on-clamp boundary.
250
+ */
251
+ shiftSelectionForScroll(dRow: number, minRow: number, maxRow: number): void;
252
+ /**
253
+ * Keyboard selection extension (shift+arrow/home/end). Moves focus;
254
+ * anchor stays fixed so the highlight grows or shrinks relative to it.
255
+ * Left/right wrap across row boundaries — native macOS text-edit
256
+ * behavior: shift+left at col 0 wraps to end of the previous row.
257
+ * Up/down clamp at viewport edges (no scroll-to-extend yet). Drops to
258
+ * char mode. No-op outside alt-screen or without an active selection.
259
+ */
260
+ moveSelectionFocus(move: FocusMove): void;
261
+ /** Whether there is an active text selection. */
262
+ hasTextSelection(): boolean;
263
+ /**
264
+ * Subscribe to selection state changes. Fires whenever the selection
265
+ * is started, updated, cleared, or copied. Returns an unsubscribe fn.
266
+ */
267
+ subscribeToSelectionChange(cb: () => void): () => void;
268
+ private notifySelectionChange;
269
+ /**
270
+ * Hit-test the rendered DOM tree at (col, row) and bubble a ClickEvent
271
+ * from the deepest hit node up through ancestors with onClick handlers.
272
+ * Returns true if a DOM handler consumed the click. Gated on
273
+ * altScreenActive — clicks only make sense with a fixed viewport where
274
+ * nodeCache rects map 1:1 to terminal cells (no scrollback offset).
275
+ */
276
+ dispatchClick(col: number, row: number): boolean;
277
+ dispatchHover(col: number, row: number): void;
278
+ dispatchKeyboardEvent(parsedKey: ParsedKey): void;
279
+ /**
280
+ * Look up the URL at (col, row) in the current front frame. Checks for
281
+ * an OSC 8 hyperlink first, then falls back to scanning the row for a
282
+ * plain-text URL (mouse tracking intercepts the terminal's native
283
+ * Cmd+Click URL detection, so we replicate it). This is a pure lookup
284
+ * with no side effects — call it synchronously at click time so the
285
+ * result reflects the screen the user actually clicked on, then defer
286
+ * the browser-open action via a timer.
287
+ */
288
+ getHyperlinkAt(col: number, row: number): string | undefined;
289
+ /**
290
+ * Optional callback fired when clicking an OSC 8 hyperlink in fullscreen
291
+ * mode. Set by FullscreenLayout via useLayoutEffect.
292
+ */
293
+ onHyperlinkClick: ((url: string) => void) | undefined;
294
+ /**
295
+ * Stable prototype wrapper for onHyperlinkClick. Passed to <App> as
296
+ * onOpenHyperlink so the prop is a bound method (autoBind'd) that reads
297
+ * the mutable field at call time — not the undefined-at-render value.
298
+ */
299
+ openHyperlink(url: string): void;
300
+ /**
301
+ * Handle a double- or triple-click at (col, row): select the word or
302
+ * line under the cursor by reading the current screen buffer. Called on
303
+ * PRESS (not release) so the highlight appears immediately and drag can
304
+ * extend the selection word-by-word / line-by-line. Falls back to
305
+ * char-mode startSelection if the click lands on a noSelect cell.
306
+ */
307
+ handleMultiClick(col: number, row: number, count: 2 | 3): void;
308
+ /**
309
+ * Handle a drag-motion at (col, row). In char mode updates focus to the
310
+ * exact cell. In word/line mode snaps to word/line boundaries so the
311
+ * selection extends by word/line like native macOS. Gated on
312
+ * altScreenActive for the same reason as dispatchClick.
313
+ */
314
+ handleSelectionDrag(col: number, row: number): void;
315
+ private stdinListeners;
316
+ private wasRawMode;
317
+ suspendStdin(): void;
318
+ resumeStdin(): void;
319
+ private writeRaw;
320
+ private setCursorDeclaration;
321
+ render(node: ReactNode): void;
322
+ unmount(error?: Error | number | null): void;
323
+ waitUntilExit(): Promise<void>;
324
+ resetLineCount(): void;
325
+ /**
326
+ * Replace char/hyperlink pools with fresh instances to prevent unbounded
327
+ * growth during long sessions. Migrates the front frame's screen IDs into
328
+ * the new pools so diffing remains correct. The back frame doesn't need
329
+ * migration — resetScreen zeros it before any reads.
330
+ *
331
+ * Call between conversation turns or periodically.
332
+ */
333
+ resetPools(): void;
334
+ patchConsole(): () => void;
335
+ /**
336
+ * Intercept process.stderr.write so stray writes (config.ts, hooks.ts,
337
+ * third-party deps) don't corrupt the alt-screen buffer. patchConsole only
338
+ * hooks console.* methods — direct stderr writes bypass it, land at the
339
+ * parked cursor, scroll the alt-screen, and desync frontFrame from the
340
+ * physical terminal. Next diff writes only changed-in-React cells at
341
+ * absolute coords → interleaved garbage.
342
+ *
343
+ * Swallows the write (routes text to the debug log) and, in alt-screen,
344
+ * forces a full-damage repaint as a defensive recovery. Not patching
345
+ * process.stdout — Ink itself writes there.
346
+ */
347
+ private patchStderr;
348
+ }
349
+ /**
350
+ * Discard pending stdin bytes so in-flight escape sequences (mouse tracking
351
+ * reports, bracketed-paste markers) don't leak to the shell after exit.
352
+ *
353
+ * Two layers of trickiness:
354
+ *
355
+ * 1. setRawMode is termios, not fcntl — the stdin fd stays blocking, so
356
+ * readSync on it would hang forever. Node doesn't expose fcntl, so we
357
+ * open /dev/tty fresh with O_NONBLOCK (all fds to the controlling
358
+ * terminal share one line-discipline input queue).
359
+ *
360
+ * 2. By the time forceExit calls this, detachForShutdown has already put
361
+ * the TTY back in cooked (canonical) mode. Canonical mode line-buffers
362
+ * input until newline, so O_NONBLOCK reads return EAGAIN even when
363
+ * mouse bytes are sitting in the buffer. We briefly re-enter raw mode
364
+ * so reads return any available bytes, then restore cooked mode.
365
+ *
366
+ * Safe to call multiple times. Call as LATE as possible in the exit path:
367
+ * DISABLE_MOUSE_TRACKING has terminal round-trip latency, so events can
368
+ * arrive for a few ms after it's written.
369
+ */
370
+ export declare function drainStdin(stdin?: NodeJS.ReadStream): void;
371
+ //# sourceMappingURL=ink.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ink.d.ts","sourceRoot":"","sources":["../../src/ink/ink.tsx"],"names":[],"mappings":"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"}