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,48 @@
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
+ exports.ADDITIONAL_HYPERLINK_TERMINALS = void 0;
7
+ exports.supportsHyperlinks = supportsHyperlinks;
8
+ const supports_hyperlinks_1 = __importDefault(require("supports-hyperlinks"));
9
+ // Additional terminals that support OSC 8 hyperlinks but aren't detected by supports-hyperlinks.
10
+ // Checked against both TERM_PROGRAM and LC_TERMINAL (the latter is preserved inside tmux).
11
+ exports.ADDITIONAL_HYPERLINK_TERMINALS = [
12
+ 'ghostty',
13
+ 'Hyper',
14
+ 'kitty',
15
+ 'alacritty',
16
+ 'iTerm.app',
17
+ 'iTerm2',
18
+ ];
19
+ /**
20
+ * Returns whether stdout supports OSC 8 hyperlinks.
21
+ * Extends the supports-hyperlinks library with additional terminal detection.
22
+ * @param options Optional overrides for testing (env, stdoutSupported)
23
+ */
24
+ function supportsHyperlinks(options) {
25
+ const stdoutSupported = options?.stdoutSupported ?? supports_hyperlinks_1.default.stdout;
26
+ if (stdoutSupported) {
27
+ return true;
28
+ }
29
+ const env = options?.env ?? process.env;
30
+ // Check for additional terminals not detected by supports-hyperlinks
31
+ const termProgram = env['TERM_PROGRAM'];
32
+ if (termProgram && exports.ADDITIONAL_HYPERLINK_TERMINALS.includes(termProgram)) {
33
+ return true;
34
+ }
35
+ // LC_TERMINAL is set by some terminals (e.g. iTerm2) and preserved inside tmux,
36
+ // where TERM_PROGRAM is overwritten to 'tmux'.
37
+ const lcTerminal = env['LC_TERMINAL'];
38
+ if (lcTerminal && exports.ADDITIONAL_HYPERLINK_TERMINALS.includes(lcTerminal)) {
39
+ return true;
40
+ }
41
+ // Kitty sets TERM=xterm-kitty
42
+ const term = env['TERM'];
43
+ if (term?.includes('kitty')) {
44
+ return true;
45
+ }
46
+ return false;
47
+ }
48
+ //# sourceMappingURL=supports-hyperlinks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"supports-hyperlinks.js","sourceRoot":"","sources":["../../src/ink/supports-hyperlinks.ts"],"names":[],"mappings":";;;;;;AAyBA,gDA+BC;AAxDD,8EAAuD;AAEvD,iGAAiG;AACjG,2FAA2F;AAC9E,QAAA,8BAA8B,GAAG;IAC5C,SAAS;IACT,OAAO;IACP,OAAO;IACP,WAAW;IACX,WAAW;IACX,QAAQ;CACT,CAAA;AASD;;;;GAIG;AACH,SAAgB,kBAAkB,CAChC,OAAmC;IAEnC,MAAM,eAAe,GACnB,OAAO,EAAE,eAAe,IAAI,6BAAqB,CAAC,MAAM,CAAA;IAC1D,IAAI,eAAe,EAAE,CAAC;QACpB,OAAO,IAAI,CAAA;IACb,CAAC;IAED,MAAM,GAAG,GAAG,OAAO,EAAE,GAAG,IAAI,OAAO,CAAC,GAAG,CAAA;IAEvC,qEAAqE;IACrE,MAAM,WAAW,GAAG,GAAG,CAAC,cAAc,CAAC,CAAA;IACvC,IAAI,WAAW,IAAI,sCAA8B,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;QACxE,OAAO,IAAI,CAAA;IACb,CAAC;IAED,gFAAgF;IAChF,+CAA+C;IAC/C,MAAM,UAAU,GAAG,GAAG,CAAC,aAAa,CAAC,CAAA;IACrC,IAAI,UAAU,IAAI,sCAA8B,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QACtE,OAAO,IAAI,CAAA;IACb,CAAC;IAED,8BAA8B;IAC9B,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,CAAA;IACxB,IAAI,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QAC5B,OAAO,IAAI,CAAA;IACb,CAAC;IAED,OAAO,KAAK,CAAA;AACd,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function expandTabs(text: string, interval?: number): string;
2
+ //# sourceMappingURL=tabstops.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tabstops.d.ts","sourceRoot":"","sources":["../../src/ink/tabstops.ts"],"names":[],"mappings":"AAQA,wBAAgB,UAAU,CACxB,IAAI,EAAE,MAAM,EACZ,QAAQ,SAAuB,GAC9B,MAAM,CAkCR"}
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ // Tab expansion, inspired by Ghostty's Tabstops.zig
3
+ // Uses 8-column intervals (POSIX default, hardcoded in terminals like Ghostty)
4
+ Object.defineProperty(exports, "__esModule", { value: true });
5
+ exports.expandTabs = expandTabs;
6
+ const stringWidth_js_1 = require("./stringWidth.js");
7
+ const tokenize_js_1 = require("./termio/tokenize.js");
8
+ const DEFAULT_TAB_INTERVAL = 8;
9
+ function expandTabs(text, interval = DEFAULT_TAB_INTERVAL) {
10
+ if (!text.includes('\t')) {
11
+ return text;
12
+ }
13
+ const tokenizer = (0, tokenize_js_1.createTokenizer)();
14
+ const tokens = tokenizer.feed(text);
15
+ tokens.push(...tokenizer.flush());
16
+ let result = '';
17
+ let column = 0;
18
+ for (const token of tokens) {
19
+ if (token.type === 'sequence') {
20
+ result += token.value;
21
+ }
22
+ else {
23
+ const parts = token.value.split(/(\t|\n)/);
24
+ for (const part of parts) {
25
+ if (part === '\t') {
26
+ const spaces = interval - (column % interval);
27
+ result += ' '.repeat(spaces);
28
+ column += spaces;
29
+ }
30
+ else if (part === '\n') {
31
+ result += part;
32
+ column = 0;
33
+ }
34
+ else {
35
+ result += part;
36
+ column += (0, stringWidth_js_1.stringWidth)(part);
37
+ }
38
+ }
39
+ }
40
+ }
41
+ return result;
42
+ }
43
+ //# sourceMappingURL=tabstops.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tabstops.js","sourceRoot":"","sources":["../../src/ink/tabstops.ts"],"names":[],"mappings":";AAAA,oDAAoD;AACpD,+EAA+E;;AAO/E,gCAqCC;AA1CD,qDAA8C;AAC9C,sDAAsD;AAEtD,MAAM,oBAAoB,GAAG,CAAC,CAAA;AAE9B,SAAgB,UAAU,CACxB,IAAY,EACZ,QAAQ,GAAG,oBAAoB;IAE/B,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACzB,OAAO,IAAI,CAAA;IACb,CAAC;IAED,MAAM,SAAS,GAAG,IAAA,6BAAe,GAAE,CAAA;IACnC,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACnC,MAAM,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC,CAAA;IAEjC,IAAI,MAAM,GAAG,EAAE,CAAA;IACf,IAAI,MAAM,GAAG,CAAC,CAAA;IAEd,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YAC9B,MAAM,IAAI,KAAK,CAAC,KAAK,CAAA;QACvB,CAAC;aAAM,CAAC;YACN,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;YAC1C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;oBAClB,MAAM,MAAM,GAAG,QAAQ,GAAG,CAAC,MAAM,GAAG,QAAQ,CAAC,CAAA;oBAC7C,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;oBAC5B,MAAM,IAAI,MAAM,CAAA;gBAClB,CAAC;qBAAM,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;oBACzB,MAAM,IAAI,IAAI,CAAA;oBACd,MAAM,GAAG,CAAC,CAAA;gBACZ,CAAC;qBAAM,CAAC;oBACN,MAAM,IAAI,IAAI,CAAA;oBACd,MAAM,IAAI,IAAA,4BAAW,EAAC,IAAI,CAAC,CAAA;gBAC7B,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAA;AACf,CAAC"}
@@ -0,0 +1,7 @@
1
+ export type TerminalFocusState = 'focused' | 'blurred' | 'unknown';
2
+ export declare function setTerminalFocused(v: boolean): void;
3
+ export declare function getTerminalFocused(): boolean;
4
+ export declare function getTerminalFocusState(): TerminalFocusState;
5
+ export declare function subscribeTerminalFocus(cb: () => void): () => void;
6
+ export declare function resetTerminalFocusState(): void;
7
+ //# sourceMappingURL=terminal-focus-state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"terminal-focus-state.d.ts","sourceRoot":"","sources":["../../src/ink/terminal-focus-state.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,kBAAkB,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,CAAA;AAMlE,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,OAAO,GAAG,IAAI,CAYnD;AAED,wBAAgB,kBAAkB,IAAI,OAAO,CAE5C;AAED,wBAAgB,qBAAqB,IAAI,kBAAkB,CAE1D;AAGD,wBAAgB,sBAAsB,CAAC,EAAE,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAKjE;AAED,wBAAgB,uBAAuB,IAAI,IAAI,CAK9C"}
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.setTerminalFocused = setTerminalFocused;
4
+ exports.getTerminalFocused = getTerminalFocused;
5
+ exports.getTerminalFocusState = getTerminalFocusState;
6
+ exports.subscribeTerminalFocus = subscribeTerminalFocus;
7
+ exports.resetTerminalFocusState = resetTerminalFocusState;
8
+ let focusState = 'unknown';
9
+ const resolvers = new Set();
10
+ const subscribers = new Set();
11
+ function setTerminalFocused(v) {
12
+ focusState = v ? 'focused' : 'blurred';
13
+ // Notify useSyncExternalStore subscribers
14
+ for (const cb of subscribers) {
15
+ cb();
16
+ }
17
+ if (!v) {
18
+ for (const resolve of resolvers) {
19
+ resolve();
20
+ }
21
+ resolvers.clear();
22
+ }
23
+ }
24
+ function getTerminalFocused() {
25
+ return focusState !== 'blurred';
26
+ }
27
+ function getTerminalFocusState() {
28
+ return focusState;
29
+ }
30
+ // For useSyncExternalStore
31
+ function subscribeTerminalFocus(cb) {
32
+ subscribers.add(cb);
33
+ return () => {
34
+ subscribers.delete(cb);
35
+ };
36
+ }
37
+ function resetTerminalFocusState() {
38
+ focusState = 'unknown';
39
+ for (const cb of subscribers) {
40
+ cb();
41
+ }
42
+ }
43
+ //# sourceMappingURL=terminal-focus-state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"terminal-focus-state.js","sourceRoot":"","sources":["../../src/ink/terminal-focus-state.ts"],"names":[],"mappings":";;AAWA,gDAYC;AAED,gDAEC;AAED,sDAEC;AAGD,wDAKC;AAED,0DAKC;AAvCD,IAAI,UAAU,GAAuB,SAAS,CAAA;AAC9C,MAAM,SAAS,GAAoB,IAAI,GAAG,EAAE,CAAA;AAC5C,MAAM,WAAW,GAAoB,IAAI,GAAG,EAAE,CAAA;AAE9C,SAAgB,kBAAkB,CAAC,CAAU;IAC3C,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAA;IACtC,0CAA0C;IAC1C,KAAK,MAAM,EAAE,IAAI,WAAW,EAAE,CAAC;QAC7B,EAAE,EAAE,CAAA;IACN,CAAC;IACD,IAAI,CAAC,CAAC,EAAE,CAAC;QACP,KAAK,MAAM,OAAO,IAAI,SAAS,EAAE,CAAC;YAChC,OAAO,EAAE,CAAA;QACX,CAAC;QACD,SAAS,CAAC,KAAK,EAAE,CAAA;IACnB,CAAC;AACH,CAAC;AAED,SAAgB,kBAAkB;IAChC,OAAO,UAAU,KAAK,SAAS,CAAA;AACjC,CAAC;AAED,SAAgB,qBAAqB;IACnC,OAAO,UAAU,CAAA;AACnB,CAAC;AAED,2BAA2B;AAC3B,SAAgB,sBAAsB,CAAC,EAAc;IACnD,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;IACnB,OAAO,GAAG,EAAE;QACV,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;IACxB,CAAC,CAAA;AACH,CAAC;AAED,SAAgB,uBAAuB;IACrC,UAAU,GAAG,SAAS,CAAA;IACtB,KAAK,MAAM,EAAE,IAAI,WAAW,EAAE,CAAC;QAC7B,EAAE,EAAE,CAAA;IACN,CAAC;AACH,CAAC"}
@@ -0,0 +1,130 @@
1
+ /**
2
+ * Query the terminal and await responses without timeouts.
3
+ *
4
+ * Terminal queries (DECRQM, DA1, OSC 11, etc.) share the stdin stream
5
+ * with keyboard input. Response sequences are syntactically
6
+ * distinguishable from key events, so the input parser recognizes them
7
+ * and dispatches them here.
8
+ *
9
+ * To avoid timeouts, each query batch is terminated by a DA1 sentinel
10
+ * (CSI c) — every terminal since VT100 responds to DA1, and terminals
11
+ * answer queries in order. So: if your query's response arrives before
12
+ * DA1's, the terminal supports it; if DA1 arrives first, it doesn't.
13
+ *
14
+ * Usage:
15
+ * const [sync, grapheme] = await Promise.all([
16
+ * querier.send(decrqm(2026)),
17
+ * querier.send(decrqm(2027)),
18
+ * querier.flush(),
19
+ * ])
20
+ * // sync and grapheme are DECRPM responses or undefined if unsupported
21
+ */
22
+ import type { TerminalResponse } from './parse-keypress.js';
23
+ /** A terminal query: an outbound request sequence paired with a matcher
24
+ * that recognizes the expected inbound response. Built by `decrqm()`,
25
+ * `oscColor()`, `kittyKeyboard()`, etc. */
26
+ export type TerminalQuery<T extends TerminalResponse = TerminalResponse> = {
27
+ /** Escape sequence to write to stdout */
28
+ request: string;
29
+ /** Recognizes the expected response in the inbound stream */
30
+ match: (r: TerminalResponse) => r is T;
31
+ };
32
+ type DecrpmResponse = Extract<TerminalResponse, {
33
+ type: 'decrpm';
34
+ }>;
35
+ type Da1Response = Extract<TerminalResponse, {
36
+ type: 'da1';
37
+ }>;
38
+ type Da2Response = Extract<TerminalResponse, {
39
+ type: 'da2';
40
+ }>;
41
+ type KittyResponse = Extract<TerminalResponse, {
42
+ type: 'kittyKeyboard';
43
+ }>;
44
+ type CursorPosResponse = Extract<TerminalResponse, {
45
+ type: 'cursorPosition';
46
+ }>;
47
+ type OscResponse = Extract<TerminalResponse, {
48
+ type: 'osc';
49
+ }>;
50
+ type XtversionResponse = Extract<TerminalResponse, {
51
+ type: 'xtversion';
52
+ }>;
53
+ /** DECRQM: request DEC private mode status (CSI ? mode $ p).
54
+ * Terminal replies with DECRPM (CSI ? mode ; status $ y) or ignores. */
55
+ export declare function decrqm(mode: number): TerminalQuery<DecrpmResponse>;
56
+ /** Primary Device Attributes query (CSI c). Every terminal answers this —
57
+ * used internally by flush() as a universal sentinel. Call directly if
58
+ * you want the DA1 params. */
59
+ export declare function da1(): TerminalQuery<Da1Response>;
60
+ /** Secondary Device Attributes query (CSI > c). Returns terminal version. */
61
+ export declare function da2(): TerminalQuery<Da2Response>;
62
+ /** Query current Kitty keyboard protocol flags (CSI ? u).
63
+ * Terminal replies with CSI ? flags u or ignores. */
64
+ export declare function kittyKeyboard(): TerminalQuery<KittyResponse>;
65
+ /** DECXCPR: request cursor position with DEC-private marker (CSI ? 6 n).
66
+ * Terminal replies with CSI ? row ; col R. The `?` marker is critical —
67
+ * the plain DSR form (CSI 6 n → CSI row;col R) is ambiguous with
68
+ * modified F3 keys (Shift+F3 = CSI 1;2 R, etc.). */
69
+ export declare function cursorPosition(): TerminalQuery<CursorPosResponse>;
70
+ /** OSC dynamic color query (e.g. OSC 11 for bg color, OSC 10 for fg).
71
+ * The `?` data slot asks the terminal to reply with the current value. */
72
+ export declare function oscColor(code: number): TerminalQuery<OscResponse>;
73
+ /** XTVERSION: request terminal name/version (CSI > 0 q).
74
+ * Terminal replies with DCS > | name ST (e.g. "xterm.js(5.5.0)") or ignores.
75
+ * This survives SSH — the query goes through the pty, not the environment,
76
+ * so it identifies the *client* terminal even when TERM_PROGRAM isn't
77
+ * forwarded. Used to detect xterm.js for wheel-scroll compensation. */
78
+ export declare function xtversion(): TerminalQuery<XtversionResponse>;
79
+ export declare class TerminalQuerier {
80
+ private stdout;
81
+ /**
82
+ * Interleaved queue of queries and sentinels in send order. Terminals
83
+ * respond in order, so each flush() barrier only drains queries queued
84
+ * before it — concurrent batches from independent callers stay isolated.
85
+ */
86
+ private queue;
87
+ constructor(stdout: NodeJS.WriteStream);
88
+ /**
89
+ * Send a query and wait for its response.
90
+ *
91
+ * Resolves with the response when `query.match` matches an incoming
92
+ * TerminalResponse, or with `undefined` when a flush() sentinel arrives
93
+ * before any matching response (meaning the terminal ignored the query).
94
+ *
95
+ * Never rejects; never times out on its own. If you never call flush()
96
+ * and the terminal doesn't respond, the promise remains pending.
97
+ */
98
+ send<T extends TerminalResponse>(query: TerminalQuery<T>): Promise<T | undefined>;
99
+ /**
100
+ * Send the DA1 sentinel. Resolves when DA1's response arrives.
101
+ *
102
+ * As a side effect, all queries still pending when DA1 arrives are
103
+ * resolved with `undefined` (terminal didn't respond → doesn't support
104
+ * the query). This is the barrier that makes send() timeout-free.
105
+ *
106
+ * Safe to call with no pending queries — still waits for a round-trip.
107
+ */
108
+ flush(): Promise<void>;
109
+ /**
110
+ * Dispatch a response parsed from stdin. Called by App.tsx's
111
+ * processKeysInBatch for every `kind: 'response'` item.
112
+ *
113
+ * Matching strategy:
114
+ * - First, try to match a pending query (FIFO, first match wins).
115
+ * This lets callers send(da1()) explicitly if they want the DA1
116
+ * params — a separate DA1 write means the terminal sends TWO DA1
117
+ * responses. The first matches the explicit query; the second
118
+ * (unmatched) fires the sentinel.
119
+ * - Otherwise, if this is a DA1, fire the FIRST pending sentinel:
120
+ * resolve any queries queued before that sentinel with undefined
121
+ * (the terminal answered DA1 without answering them → unsupported)
122
+ * and signal its flush() completion. Only draining up to the first
123
+ * sentinel keeps later batches intact when multiple callers have
124
+ * concurrent queries in flight.
125
+ * - Unsolicited responses (no match, no sentinel) are silently dropped.
126
+ */
127
+ onResponse(r: TerminalResponse): void;
128
+ }
129
+ export {};
130
+ //# sourceMappingURL=terminal-querier.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"terminal-querier.d.ts","sourceRoot":"","sources":["../../src/ink/terminal-querier.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AAI3D;;4CAE4C;AAC5C,MAAM,MAAM,aAAa,CAAC,CAAC,SAAS,gBAAgB,GAAG,gBAAgB,IAAI;IACzE,yCAAyC;IACzC,OAAO,EAAE,MAAM,CAAA;IACf,6DAA6D;IAC7D,KAAK,EAAE,CAAC,CAAC,EAAE,gBAAgB,KAAK,CAAC,IAAI,CAAC,CAAA;CACvC,CAAA;AAED,KAAK,cAAc,GAAG,OAAO,CAAC,gBAAgB,EAAE;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,CAAC,CAAA;AACnE,KAAK,WAAW,GAAG,OAAO,CAAC,gBAAgB,EAAE;IAAE,IAAI,EAAE,KAAK,CAAA;CAAE,CAAC,CAAA;AAC7D,KAAK,WAAW,GAAG,OAAO,CAAC,gBAAgB,EAAE;IAAE,IAAI,EAAE,KAAK,CAAA;CAAE,CAAC,CAAA;AAC7D,KAAK,aAAa,GAAG,OAAO,CAAC,gBAAgB,EAAE;IAAE,IAAI,EAAE,eAAe,CAAA;CAAE,CAAC,CAAA;AACzE,KAAK,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,EAAE;IAAE,IAAI,EAAE,gBAAgB,CAAA;CAAE,CAAC,CAAA;AAC9E,KAAK,WAAW,GAAG,OAAO,CAAC,gBAAgB,EAAE;IAAE,IAAI,EAAE,KAAK,CAAA;CAAE,CAAC,CAAA;AAC7D,KAAK,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,EAAE;IAAE,IAAI,EAAE,WAAW,CAAA;CAAE,CAAC,CAAA;AAIzE;yEACyE;AACzE,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,CAAC,cAAc,CAAC,CAKlE;AAED;;+BAE+B;AAC/B,wBAAgB,GAAG,IAAI,aAAa,CAAC,WAAW,CAAC,CAKhD;AAED,6EAA6E;AAC7E,wBAAgB,GAAG,IAAI,aAAa,CAAC,WAAW,CAAC,CAKhD;AAED;sDACsD;AACtD,wBAAgB,aAAa,IAAI,aAAa,CAAC,aAAa,CAAC,CAK5D;AAED;;;qDAGqD;AACrD,wBAAgB,cAAc,IAAI,aAAa,CAAC,iBAAiB,CAAC,CAKjE;AAED;2EAC2E;AAC3E,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,CAAC,WAAW,CAAC,CAKjE;AAED;;;;wEAIwE;AACxE,wBAAgB,SAAS,IAAI,aAAa,CAAC,iBAAiB,CAAC,CAK5D;AAeD,qBAAa,eAAe;IAQd,OAAO,CAAC,MAAM;IAP1B;;;;OAIG;IACH,OAAO,CAAC,KAAK,CAAgB;gBAET,MAAM,EAAE,MAAM,CAAC,WAAW;IAE9C;;;;;;;;;OASG;IACH,IAAI,CAAC,CAAC,SAAS,gBAAgB,EAC7B,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,GACtB,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;IAWzB;;;;;;;;OAQG;IACH,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAOtB;;;;;;;;;;;;;;;;;OAiBG;IACH,UAAU,CAAC,CAAC,EAAE,gBAAgB,GAAG,IAAI;CAiBtC"}
@@ -0,0 +1,184 @@
1
+ "use strict";
2
+ /**
3
+ * Query the terminal and await responses without timeouts.
4
+ *
5
+ * Terminal queries (DECRQM, DA1, OSC 11, etc.) share the stdin stream
6
+ * with keyboard input. Response sequences are syntactically
7
+ * distinguishable from key events, so the input parser recognizes them
8
+ * and dispatches them here.
9
+ *
10
+ * To avoid timeouts, each query batch is terminated by a DA1 sentinel
11
+ * (CSI c) — every terminal since VT100 responds to DA1, and terminals
12
+ * answer queries in order. So: if your query's response arrives before
13
+ * DA1's, the terminal supports it; if DA1 arrives first, it doesn't.
14
+ *
15
+ * Usage:
16
+ * const [sync, grapheme] = await Promise.all([
17
+ * querier.send(decrqm(2026)),
18
+ * querier.send(decrqm(2027)),
19
+ * querier.flush(),
20
+ * ])
21
+ * // sync and grapheme are DECRPM responses or undefined if unsupported
22
+ */
23
+ Object.defineProperty(exports, "__esModule", { value: true });
24
+ exports.TerminalQuerier = void 0;
25
+ exports.decrqm = decrqm;
26
+ exports.da1 = da1;
27
+ exports.da2 = da2;
28
+ exports.kittyKeyboard = kittyKeyboard;
29
+ exports.cursorPosition = cursorPosition;
30
+ exports.oscColor = oscColor;
31
+ exports.xtversion = xtversion;
32
+ const csi_js_1 = require("./termio/csi.js");
33
+ const osc_js_1 = require("./termio/osc.js");
34
+ // -- Query builders --
35
+ /** DECRQM: request DEC private mode status (CSI ? mode $ p).
36
+ * Terminal replies with DECRPM (CSI ? mode ; status $ y) or ignores. */
37
+ function decrqm(mode) {
38
+ return {
39
+ request: (0, csi_js_1.csi)(`?${mode}$p`),
40
+ match: (r) => r.type === 'decrpm' && r.mode === mode,
41
+ };
42
+ }
43
+ /** Primary Device Attributes query (CSI c). Every terminal answers this —
44
+ * used internally by flush() as a universal sentinel. Call directly if
45
+ * you want the DA1 params. */
46
+ function da1() {
47
+ return {
48
+ request: (0, csi_js_1.csi)('c'),
49
+ match: (r) => r.type === 'da1',
50
+ };
51
+ }
52
+ /** Secondary Device Attributes query (CSI > c). Returns terminal version. */
53
+ function da2() {
54
+ return {
55
+ request: (0, csi_js_1.csi)('>c'),
56
+ match: (r) => r.type === 'da2',
57
+ };
58
+ }
59
+ /** Query current Kitty keyboard protocol flags (CSI ? u).
60
+ * Terminal replies with CSI ? flags u or ignores. */
61
+ function kittyKeyboard() {
62
+ return {
63
+ request: (0, csi_js_1.csi)('?u'),
64
+ match: (r) => r.type === 'kittyKeyboard',
65
+ };
66
+ }
67
+ /** DECXCPR: request cursor position with DEC-private marker (CSI ? 6 n).
68
+ * Terminal replies with CSI ? row ; col R. The `?` marker is critical —
69
+ * the plain DSR form (CSI 6 n → CSI row;col R) is ambiguous with
70
+ * modified F3 keys (Shift+F3 = CSI 1;2 R, etc.). */
71
+ function cursorPosition() {
72
+ return {
73
+ request: (0, csi_js_1.csi)('?6n'),
74
+ match: (r) => r.type === 'cursorPosition',
75
+ };
76
+ }
77
+ /** OSC dynamic color query (e.g. OSC 11 for bg color, OSC 10 for fg).
78
+ * The `?` data slot asks the terminal to reply with the current value. */
79
+ function oscColor(code) {
80
+ return {
81
+ request: (0, osc_js_1.osc)(code, '?'),
82
+ match: (r) => r.type === 'osc' && r.code === code,
83
+ };
84
+ }
85
+ /** XTVERSION: request terminal name/version (CSI > 0 q).
86
+ * Terminal replies with DCS > | name ST (e.g. "xterm.js(5.5.0)") or ignores.
87
+ * This survives SSH — the query goes through the pty, not the environment,
88
+ * so it identifies the *client* terminal even when TERM_PROGRAM isn't
89
+ * forwarded. Used to detect xterm.js for wheel-scroll compensation. */
90
+ function xtversion() {
91
+ return {
92
+ request: (0, csi_js_1.csi)('>0q'),
93
+ match: (r) => r.type === 'xtversion',
94
+ };
95
+ }
96
+ // -- Querier --
97
+ /** Sentinel request sequence (DA1). Kept internal; flush() writes it. */
98
+ const SENTINEL = (0, csi_js_1.csi)('c');
99
+ class TerminalQuerier {
100
+ constructor(stdout) {
101
+ this.stdout = stdout;
102
+ /**
103
+ * Interleaved queue of queries and sentinels in send order. Terminals
104
+ * respond in order, so each flush() barrier only drains queries queued
105
+ * before it — concurrent batches from independent callers stay isolated.
106
+ */
107
+ this.queue = [];
108
+ }
109
+ /**
110
+ * Send a query and wait for its response.
111
+ *
112
+ * Resolves with the response when `query.match` matches an incoming
113
+ * TerminalResponse, or with `undefined` when a flush() sentinel arrives
114
+ * before any matching response (meaning the terminal ignored the query).
115
+ *
116
+ * Never rejects; never times out on its own. If you never call flush()
117
+ * and the terminal doesn't respond, the promise remains pending.
118
+ */
119
+ send(query) {
120
+ return new Promise(resolve => {
121
+ this.queue.push({
122
+ kind: 'query',
123
+ match: query.match,
124
+ resolve: r => resolve(r),
125
+ });
126
+ this.stdout.write(query.request);
127
+ });
128
+ }
129
+ /**
130
+ * Send the DA1 sentinel. Resolves when DA1's response arrives.
131
+ *
132
+ * As a side effect, all queries still pending when DA1 arrives are
133
+ * resolved with `undefined` (terminal didn't respond → doesn't support
134
+ * the query). This is the barrier that makes send() timeout-free.
135
+ *
136
+ * Safe to call with no pending queries — still waits for a round-trip.
137
+ */
138
+ flush() {
139
+ return new Promise(resolve => {
140
+ this.queue.push({ kind: 'sentinel', resolve });
141
+ this.stdout.write(SENTINEL);
142
+ });
143
+ }
144
+ /**
145
+ * Dispatch a response parsed from stdin. Called by App.tsx's
146
+ * processKeysInBatch for every `kind: 'response'` item.
147
+ *
148
+ * Matching strategy:
149
+ * - First, try to match a pending query (FIFO, first match wins).
150
+ * This lets callers send(da1()) explicitly if they want the DA1
151
+ * params — a separate DA1 write means the terminal sends TWO DA1
152
+ * responses. The first matches the explicit query; the second
153
+ * (unmatched) fires the sentinel.
154
+ * - Otherwise, if this is a DA1, fire the FIRST pending sentinel:
155
+ * resolve any queries queued before that sentinel with undefined
156
+ * (the terminal answered DA1 without answering them → unsupported)
157
+ * and signal its flush() completion. Only draining up to the first
158
+ * sentinel keeps later batches intact when multiple callers have
159
+ * concurrent queries in flight.
160
+ * - Unsolicited responses (no match, no sentinel) are silently dropped.
161
+ */
162
+ onResponse(r) {
163
+ const idx = this.queue.findIndex(p => p.kind === 'query' && p.match(r));
164
+ if (idx !== -1) {
165
+ const [q] = this.queue.splice(idx, 1);
166
+ if (q?.kind === 'query')
167
+ q.resolve(r);
168
+ return;
169
+ }
170
+ if (r.type === 'da1') {
171
+ const s = this.queue.findIndex(p => p.kind === 'sentinel');
172
+ if (s === -1)
173
+ return;
174
+ for (const p of this.queue.splice(0, s + 1)) {
175
+ if (p.kind === 'query')
176
+ p.resolve(undefined);
177
+ else
178
+ p.resolve();
179
+ }
180
+ }
181
+ }
182
+ }
183
+ exports.TerminalQuerier = TerminalQuerier;
184
+ //# sourceMappingURL=terminal-querier.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"terminal-querier.js","sourceRoot":"","sources":["../../src/ink/terminal-querier.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,56 @@
1
+ import type { Writable } from 'stream';
2
+ import type { Diff } from './frame.js';
3
+ export type Progress = {
4
+ state: 'running' | 'completed' | 'error' | 'indeterminate';
5
+ percentage?: number;
6
+ };
7
+ /**
8
+ * Checks if the terminal supports OSC 9;4 progress reporting.
9
+ * Supported terminals:
10
+ * - ConEmu (Windows) - all versions
11
+ * - Ghostty 1.2.0+
12
+ * - iTerm2 3.6.6+
13
+ *
14
+ * Note: Windows Terminal interprets OSC 9;4 as notifications, not progress.
15
+ */
16
+ export declare function isProgressReportingAvailable(): boolean;
17
+ /**
18
+ * Checks if the terminal supports DEC mode 2026 (synchronized output).
19
+ * When supported, BSU/ESU sequences prevent visible flicker during redraws.
20
+ */
21
+ export declare function isSynchronizedOutputSupported(): boolean;
22
+ /** Record the XTVERSION response. Called once from App.tsx when the reply
23
+ * arrives on stdin. No-op if already set (defend against re-probe). */
24
+ export declare function setXtversionName(name: string): void;
25
+ export declare function isGhosttyTerminal(): boolean;
26
+ /** True if running in an xterm.js-based terminal (VS Code, Cursor, Windsurf
27
+ * integrated terminals). Combines TERM_PROGRAM env check (fast, sync, but
28
+ * not forwarded over SSH) with the XTVERSION probe result (async, survives
29
+ * SSH — query/reply goes through the pty). Early calls may miss the probe
30
+ * reply — call lazily (e.g. in an event handler) if SSH detection matters. */
31
+ export declare function isXtermJs(): boolean;
32
+ /** Ghostty currently repaints main-screen prompt updates more reliably
33
+ * without DEC 2026 synchronized output. Prefer explicit terminal identity
34
+ * (TERM_PROGRAM/TERM or XTVERSION) in real sessions, but keep tests
35
+ * deterministic by disabling the env-based detection under NODE_ENV=test. */
36
+ export declare function shouldSkipMainScreenSyncMarkers(): boolean;
37
+ /** Ghostty's main-screen prompt updates are currently more reliable when we
38
+ * bypass the incremental diff path and rewrite the visible prompt block. */
39
+ export declare function shouldUseMainScreenRewrite(): boolean;
40
+ /** True if this terminal correctly handles extended key reporting
41
+ * (Kitty keyboard protocol + xterm modifyOtherKeys). */
42
+ export declare function supportsExtendedKeys(): boolean;
43
+ /** True if the terminal scrolls the viewport when it receives cursor-up
44
+ * sequences that reach above the visible area. On Windows, conhost's
45
+ * SetConsoleCursorPosition follows the cursor into scrollback
46
+ * (microsoft/terminal#14774), yanking users to the top of their buffer
47
+ * mid-stream. WT_SESSION catches WSL-in-Windows-Terminal where platform
48
+ * is linux but output still routes through conhost. */
49
+ export declare function hasCursorUpViewportYankBug(): boolean;
50
+ export declare const SYNC_OUTPUT_SUPPORTED: boolean;
51
+ export type Terminal = {
52
+ stdout: Writable;
53
+ stderr: Writable;
54
+ };
55
+ export declare function writeDiffToTerminal(terminal: Terminal, diff: Diff, skipSyncMarkers?: boolean): void;
56
+ //# sourceMappingURL=terminal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"terminal.d.ts","sourceRoot":"","sources":["../../src/ink/terminal.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAA;AAItC,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAA;AAKtC,MAAM,MAAM,QAAQ,GAAG;IACrB,KAAK,EAAE,SAAS,GAAG,WAAW,GAAG,OAAO,GAAG,eAAe,CAAA;IAC1D,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB,CAAA;AAED;;;;;;;;GAQG;AACH,wBAAgB,4BAA4B,IAAI,OAAO,CAuCtD;AAED;;;GAGG;AACH,wBAAgB,6BAA6B,IAAI,OAAO,CAgDvD;AAcD;wEACwE;AACxE,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAEnD;AAED,wBAAgB,iBAAiB,IAAI,OAAO,CAK3C;AAED;;;;+EAI+E;AAC/E,wBAAgB,SAAS,IAAI,OAAO,CAGnC;AAED;;;8EAG8E;AAC9E,wBAAgB,+BAA+B,IAAI,OAAO,CAEzD;AAED;6EAC6E;AAC7E,wBAAgB,0BAA0B,IAAI,OAAO,CAEpD;AAmBD;yDACyD;AACzD,wBAAgB,oBAAoB,IAAI,OAAO,CAQ9C;AAED;;;;;wDAKwD;AACxD,wBAAgB,0BAA0B,IAAI,OAAO,CAEpD;AAID,eAAO,MAAM,qBAAqB,SAAkC,CAAA;AAEpE,MAAM,MAAM,QAAQ,GAAG;IACrB,MAAM,EAAE,QAAQ,CAAA;IAChB,MAAM,EAAE,QAAQ,CAAA;CACjB,CAAA;AAED,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,IAAI,EACV,eAAe,UAAQ,GACtB,IAAI,CAsDN"}