@cjhyy/code-shell 0.1.0-alpha.0

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 (441) hide show
  1. package/CHANGELOG.md +109 -0
  2. package/LICENSE +21 -0
  3. package/README.md +177 -0
  4. package/dist/agent/coordinator.d.ts +49 -0
  5. package/dist/anthropic-NENYS535.js +9 -0
  6. package/dist/anthropic-XMTTVNSH.cjs +9 -0
  7. package/dist/arena/arena.d.ts +43 -0
  8. package/dist/arena/context/context-tools.d.ts +16 -0
  9. package/dist/arena/detect-mode.d.ts +20 -0
  10. package/dist/arena/digest-builder.d.ts +25 -0
  11. package/dist/arena/index.cjs +103 -0
  12. package/dist/arena/index.d.ts +29 -0
  13. package/dist/arena/index.js +103 -0
  14. package/dist/arena/iterate/convergence.d.ts +25 -0
  15. package/dist/arena/iterate/formats/index.d.ts +22 -0
  16. package/dist/arena/iterate/index.d.ts +11 -0
  17. package/dist/arena/iterate/iterative-arena.d.ts +23 -0
  18. package/dist/arena/iterate/parse.d.ts +42 -0
  19. package/dist/arena/iterate/phases/argue.d.ts +22 -0
  20. package/dist/arena/iterate/phases/revise.d.ts +16 -0
  21. package/dist/arena/iterate/phases/tournament.d.ts +34 -0
  22. package/dist/arena/iterate/tools/web-tools.d.ts +13 -0
  23. package/dist/arena/iterate/types.d.ts +152 -0
  24. package/dist/arena/ledger.d.ts +47 -0
  25. package/dist/arena/lenses/architecture.d.ts +5 -0
  26. package/dist/arena/lenses/engineering.d.ts +5 -0
  27. package/dist/arena/lenses/general.d.ts +5 -0
  28. package/dist/arena/lenses/index.d.ts +16 -0
  29. package/dist/arena/lenses/product.d.ts +5 -0
  30. package/dist/arena/model-presets.d.ts +14 -0
  31. package/dist/arena/phases/adjudication.d.ts +24 -0
  32. package/dist/arena/phases/build-consensus.d.ts +29 -0
  33. package/dist/arena/phases/claim-registry.d.ts +26 -0
  34. package/dist/arena/phases/cross-review.d.ts +45 -0
  35. package/dist/arena/phases/debate-rounds.d.ts +27 -0
  36. package/dist/arena/phases/participant-research.d.ts +38 -0
  37. package/dist/arena/phases/planning-detail-expansion.d.ts +38 -0
  38. package/dist/arena/planner.d.ts +27 -0
  39. package/dist/arena/providers/docs.d.ts +6 -0
  40. package/dist/arena/providers/git.d.ts +8 -0
  41. package/dist/arena/providers/index.d.ts +16 -0
  42. package/dist/arena/providers/none.d.ts +7 -0
  43. package/dist/arena/providers/repo.d.ts +6 -0
  44. package/dist/arena/render/session.d.ts +17 -0
  45. package/dist/arena/render/terminal.d.ts +33 -0
  46. package/dist/arena/strategies/discussion.d.ts +25 -0
  47. package/dist/arena/strategies/index.d.ts +15 -0
  48. package/dist/arena/strategies/language-wrapper.d.ts +17 -0
  49. package/dist/arena/strategies/lens-wrapper.d.ts +16 -0
  50. package/dist/arena/strategies/planning.d.ts +30 -0
  51. package/dist/arena/strategies/review.d.ts +26 -0
  52. package/dist/arena/strategies/utils.d.ts +34 -0
  53. package/dist/arena/tools/selector.d.ts +17 -0
  54. package/dist/arena/transitions.d.ts +48 -0
  55. package/dist/arena/types.d.ts +499 -0
  56. package/dist/arena-46QQ6BZQ.js +261 -0
  57. package/dist/arena-HZZZ2GJH.cjs +261 -0
  58. package/dist/bootstrap/setup.d.ts +14 -0
  59. package/dist/bootstrap/state.d.ts +160 -0
  60. package/dist/bridge-4ZRXVWBN.js +98 -0
  61. package/dist/bridge-W476QDFH.cjs +98 -0
  62. package/dist/chunk-3EAEC566.cjs +136 -0
  63. package/dist/chunk-3EUDE77E.cjs +1252 -0
  64. package/dist/chunk-3QR52LL5.cjs +105 -0
  65. package/dist/chunk-4PKZPFCD.js +136 -0
  66. package/dist/chunk-4RRUP4MM.js +86 -0
  67. package/dist/chunk-4SFPFHMG.js +132 -0
  68. package/dist/chunk-5LHVI777.cjs +246 -0
  69. package/dist/chunk-6JOOLG6F.js +104 -0
  70. package/dist/chunk-6ZIROYXX.js +207 -0
  71. package/dist/chunk-7RMAR2Y3.js +6511 -0
  72. package/dist/chunk-BE6IPRDM.js +224 -0
  73. package/dist/chunk-BHGIJ2DJ.js +41 -0
  74. package/dist/chunk-BMH65OVB.cjs +224 -0
  75. package/dist/chunk-C7JBCO5V.js +80 -0
  76. package/dist/chunk-CSO5EOEP.cjs +132 -0
  77. package/dist/chunk-DI7RDLOS.js +47 -0
  78. package/dist/chunk-DICG4AB7.cjs +73 -0
  79. package/dist/chunk-EL2RL5DG.cjs +101 -0
  80. package/dist/chunk-FGZGCFJX.cjs +207 -0
  81. package/dist/chunk-FUOKLKR2.js +101 -0
  82. package/dist/chunk-FVP7XJGS.cjs +4577 -0
  83. package/dist/chunk-HD7MT5XU.cjs +86 -0
  84. package/dist/chunk-IJSHQGMP.cjs +45 -0
  85. package/dist/chunk-IMMTBZ33.cjs +63 -0
  86. package/dist/chunk-J5XW6UYL.js +291 -0
  87. package/dist/chunk-JT2WSQSR.cjs +335 -0
  88. package/dist/chunk-KO2FPF7G.js +93 -0
  89. package/dist/chunk-LRAY5IYC.cjs +291 -0
  90. package/dist/chunk-NG73UR3L.cjs +285 -0
  91. package/dist/chunk-NZ4DQ72D.cjs +664 -0
  92. package/dist/chunk-O6F2EF2Z.js +73 -0
  93. package/dist/chunk-OG4MIQJ6.js +335 -0
  94. package/dist/chunk-QHDYFC5U.cjs +6511 -0
  95. package/dist/chunk-R32DJSJE.cjs +41 -0
  96. package/dist/chunk-S74VVJBF.js +285 -0
  97. package/dist/chunk-SK62UVS6.js +105 -0
  98. package/dist/chunk-SQZHPD3S.js +4577 -0
  99. package/dist/chunk-UK2SU23S.cjs +93 -0
  100. package/dist/chunk-VKGNCYRL.js +258 -0
  101. package/dist/chunk-WFQF3RT4.cjs +104 -0
  102. package/dist/chunk-WHRTARDJ.cjs +258 -0
  103. package/dist/chunk-WRZJUQ5Z.js +664 -0
  104. package/dist/chunk-X4HAERTQ.js +63 -0
  105. package/dist/chunk-XHC2JMEC.cjs +80 -0
  106. package/dist/chunk-YZ25SSWJ.js +222 -0
  107. package/dist/chunk-ZJV3YSY3.cjs +222 -0
  108. package/dist/chunk-ZRSSGYA5.js +246 -0
  109. package/dist/chunk-ZXYDDJEJ.js +1252 -0
  110. package/dist/cli/commands/arena.d.ts +29 -0
  111. package/dist/cli/commands/builtin/advanced-commands.d.ts +5 -0
  112. package/dist/cli/commands/builtin/core-commands.d.ts +5 -0
  113. package/dist/cli/commands/builtin/extra-commands.d.ts +6 -0
  114. package/dist/cli/commands/builtin/git-commands.d.ts +5 -0
  115. package/dist/cli/commands/builtin/more-commands.d.ts +7 -0
  116. package/dist/cli/commands/builtin/permissions-command.d.ts +5 -0
  117. package/dist/cli/commands/builtin/utility-commands.d.ts +5 -0
  118. package/dist/cli/commands/registry.d.ts +64 -0
  119. package/dist/cli/commands/repl.d.ts +21 -0
  120. package/dist/cli/commands/run.d.ts +21 -0
  121. package/dist/cli/commands/runs.d.ts +14 -0
  122. package/dist/cli/cost-tracker.d.ts +57 -0
  123. package/dist/cli/exit.d.ts +12 -0
  124. package/dist/cli/input/ndjson-reader.d.ts +31 -0
  125. package/dist/cli/input-compiler.d.ts +5 -0
  126. package/dist/cli/main.cjs +19674 -0
  127. package/dist/cli/main.d.ts +5 -0
  128. package/dist/cli/main.js +19674 -0
  129. package/dist/cli/onboarding.d.ts +26 -0
  130. package/dist/cli/output/renderer.d.ts +28 -0
  131. package/dist/cli/output/terminal-ui.d.ts +50 -0
  132. package/dist/cli/updater.d.ts +10 -0
  133. package/dist/compaction-44I55TLI.cjs +32 -0
  134. package/dist/compaction-CCHWA4G6.js +32 -0
  135. package/dist/context/compaction.d.ts +83 -0
  136. package/dist/context/manager.d.ts +99 -0
  137. package/dist/context/token-counter.d.ts +27 -0
  138. package/dist/coordinator-5HY7ALO2.js +7 -0
  139. package/dist/coordinator-INDLPVMF.cjs +7 -0
  140. package/dist/cost-tracker-IWYAUPXH.js +9 -0
  141. package/dist/cost-tracker-JXTJQQWE.cjs +9 -0
  142. package/dist/cron/scheduler.d.ts +34 -0
  143. package/dist/devtools-KIY3LWQJ.js +6 -0
  144. package/dist/devtools-LRP47DDV.cjs +6 -0
  145. package/dist/engine/cost-store.d.ts +22 -0
  146. package/dist/engine/engine.d.ts +101 -0
  147. package/dist/engine/model-facade.d.ts +24 -0
  148. package/dist/engine/query.d.ts +50 -0
  149. package/dist/engine/streaming-tool-queue.d.ts +34 -0
  150. package/dist/engine/token-budget.d.ts +22 -0
  151. package/dist/engine/tool-summary.d.ts +13 -0
  152. package/dist/engine/turn-loop.d.ts +62 -0
  153. package/dist/engine/turn-state.d.ts +14 -0
  154. package/dist/exceptions.d.ts +44 -0
  155. package/dist/file-history-HZWO2WQ5.js +7 -0
  156. package/dist/file-history-UQQILIY7.cjs +7 -0
  157. package/dist/git/utils.d.ts +35 -0
  158. package/dist/git/worktree.d.ts +36 -0
  159. package/dist/hooks/events.d.ts +35 -0
  160. package/dist/hooks/registry.d.ts +15 -0
  161. package/dist/index.cjs +336 -0
  162. package/dist/index.d.ts +64 -0
  163. package/dist/index.js +336 -0
  164. package/dist/ink/Ansi.d.ts +10 -0
  165. package/dist/ink/bidi.d.ts +15 -0
  166. package/dist/ink/clearTerminal.d.ts +13 -0
  167. package/dist/ink/colorize.d.ts +16 -0
  168. package/dist/ink/components/AlternateScreen.d.ts +21 -0
  169. package/dist/ink/components/App.d.ts +70 -0
  170. package/dist/ink/components/AppContext.d.ts +11 -0
  171. package/dist/ink/components/Box.d.ts +49 -0
  172. package/dist/ink/components/Button.d.ts +36 -0
  173. package/dist/ink/components/ClockContext.d.ts +9 -0
  174. package/dist/ink/components/CursorDeclarationContext.d.ts +22 -0
  175. package/dist/ink/components/ErrorOverview.d.ts +5 -0
  176. package/dist/ink/components/Link.d.ts +7 -0
  177. package/dist/ink/components/Newline.d.ts +12 -0
  178. package/dist/ink/components/NoSelect.d.ts +19 -0
  179. package/dist/ink/components/RawAnsi.d.ts +16 -0
  180. package/dist/ink/components/ScrollBox.d.ts +78 -0
  181. package/dist/ink/components/Spacer.d.ts +5 -0
  182. package/dist/ink/components/StdinContext.d.ts +27 -0
  183. package/dist/ink/components/TerminalFocusContext.d.ts +10 -0
  184. package/dist/ink/components/TerminalSizeContext.d.ts +5 -0
  185. package/dist/ink/components/Text.d.ts +55 -0
  186. package/dist/ink/constants.d.ts +1 -0
  187. package/dist/ink/cursor.d.ts +8 -0
  188. package/dist/ink/devtools.d.ts +5 -0
  189. package/dist/ink/dom.d.ts +76 -0
  190. package/dist/ink/events/click-event.d.ts +31 -0
  191. package/dist/ink/events/dispatcher.d.ts +40 -0
  192. package/dist/ink/events/emitter.d.ts +5 -0
  193. package/dist/ink/events/event-handlers.d.ts +46 -0
  194. package/dist/ink/events/event.d.ts +5 -0
  195. package/dist/ink/events/focus-event.d.ts +13 -0
  196. package/dist/ink/events/input-event.d.ts +30 -0
  197. package/dist/ink/events/keyboard-event.d.ts +19 -0
  198. package/dist/ink/events/paste-event.d.ts +8 -0
  199. package/dist/ink/events/resize-event.d.ts +9 -0
  200. package/dist/ink/events/terminal-event.d.ts +54 -0
  201. package/dist/ink/events/terminal-focus-event.d.ts +13 -0
  202. package/dist/ink/focus.d.ts +43 -0
  203. package/dist/ink/frame.d.ts +94 -0
  204. package/dist/ink/get-max-width.d.ts +17 -0
  205. package/dist/ink/hit-test.d.ts +33 -0
  206. package/dist/ink/hooks/use-animation-frame.d.ts +26 -0
  207. package/dist/ink/hooks/use-app.d.ts +5 -0
  208. package/dist/ink/hooks/use-declared-cursor.d.ts +26 -0
  209. package/dist/ink/hooks/use-input.d.ts +37 -0
  210. package/dist/ink/hooks/use-interval.d.ts +18 -0
  211. package/dist/ink/hooks/use-search-highlight.d.ts +30 -0
  212. package/dist/ink/hooks/use-selection.d.ts +39 -0
  213. package/dist/ink/hooks/use-stdin.d.ts +5 -0
  214. package/dist/ink/hooks/use-tab-status.d.ts +13 -0
  215. package/dist/ink/hooks/use-terminal-focus.d.ts +10 -0
  216. package/dist/ink/hooks/use-terminal-title.d.ts +12 -0
  217. package/dist/ink/hooks/use-terminal-viewport.d.ts +29 -0
  218. package/dist/ink/index.d.ts +20 -0
  219. package/dist/ink/ink.d.ts +369 -0
  220. package/dist/ink/instances.d.ts +3 -0
  221. package/dist/ink/layout/engine.d.ts +2 -0
  222. package/dist/ink/layout/geometry.d.ts +30 -0
  223. package/dist/ink/layout/node.d.ts +125 -0
  224. package/dist/ink/layout/yoga.d.ts +56 -0
  225. package/dist/ink/line-width-cache.d.ts +1 -0
  226. package/dist/ink/log-update.d.ts +17 -0
  227. package/dist/ink/measure-element.d.ts +16 -0
  228. package/dist/ink/measure-text.d.ts +6 -0
  229. package/dist/ink/node-cache.d.ts +20 -0
  230. package/dist/ink/optimizer.d.ts +15 -0
  231. package/dist/ink/output.d.ts +119 -0
  232. package/dist/ink/parse-keypress.d.ts +111 -0
  233. package/dist/ink/reconciler.d.ts +11 -0
  234. package/dist/ink/render-border.d.ts +24 -0
  235. package/dist/ink/render-node-to-output.d.ts +45 -0
  236. package/dist/ink/render-to-screen.d.ts +46 -0
  237. package/dist/ink/renderer.d.ts +14 -0
  238. package/dist/ink/root.d.ts +74 -0
  239. package/dist/ink/screen.d.ts +269 -0
  240. package/dist/ink/searchHighlight.d.ts +20 -0
  241. package/dist/ink/selection.d.ts +229 -0
  242. package/dist/ink/squash-text-nodes.d.ts +22 -0
  243. package/dist/ink/stringWidth.d.ts +1 -0
  244. package/dist/ink/styles.d.ts +306 -0
  245. package/dist/ink/supports-hyperlinks.d.ts +13 -0
  246. package/dist/ink/tabstops.d.ts +1 -0
  247. package/dist/ink/terminal-focus-state.d.ts +6 -0
  248. package/dist/ink/terminal-querier.d.ts +129 -0
  249. package/dist/ink/terminal.d.ts +46 -0
  250. package/dist/ink/termio/ansi.d.ts +65 -0
  251. package/dist/ink/termio/csi.d.ts +165 -0
  252. package/dist/ink/termio/dec.d.ts +37 -0
  253. package/dist/ink/termio/esc.d.ts +12 -0
  254. package/dist/ink/termio/osc.d.ts +173 -0
  255. package/dist/ink/termio/parser.d.ts +35 -0
  256. package/dist/ink/termio/sgr.d.ts +8 -0
  257. package/dist/ink/termio/tokenize.d.ts +45 -0
  258. package/dist/ink/termio/types.d.ts +190 -0
  259. package/dist/ink/termio.d.ts +24 -0
  260. package/dist/ink/useTerminalNotification.d.ts +28 -0
  261. package/dist/ink/warn.d.ts +1 -0
  262. package/dist/ink/widest-line.d.ts +1 -0
  263. package/dist/ink/wrap-text.d.ts +2 -0
  264. package/dist/ink/wrapAnsi.d.ts +7 -0
  265. package/dist/llm/client-base.d.ts +22 -0
  266. package/dist/llm/client-factory.d.ts +10 -0
  267. package/dist/llm/model-pool.d.ts +60 -0
  268. package/dist/llm/providers/anthropic.d.ts +19 -0
  269. package/dist/llm/providers/openai.d.ts +19 -0
  270. package/dist/llm/types.d.ts +21 -0
  271. package/dist/loader-DXFSUB4R.cjs +91 -0
  272. package/dist/loader-J5UID6CV.js +91 -0
  273. package/dist/logging/logger.d.ts +19 -0
  274. package/dist/lsp/client.d.ts +41 -0
  275. package/dist/lsp/manager.d.ts +40 -0
  276. package/dist/lsp/servers.d.ts +16 -0
  277. package/dist/manager-ETWDOCHN.cjs +9 -0
  278. package/dist/manager-HGMQNEJB.cjs +11 -0
  279. package/dist/manager-HUAQOORS.js +9 -0
  280. package/dist/manager-VJIZ2CQC.js +11 -0
  281. package/dist/mcp-manager-G4G2QASE.cjs +8 -0
  282. package/dist/mcp-manager-OKXHHWYR.js +8 -0
  283. package/dist/memory-AP747G5H.js +7 -0
  284. package/dist/memory-BH3BYUN5.cjs +7 -0
  285. package/dist/native-ts/yoga-layout/enums.d.ts +117 -0
  286. package/dist/native-ts/yoga-layout/index.d.ts +270 -0
  287. package/dist/onboarding-6WEPV7C2.js +11 -0
  288. package/dist/onboarding-QM5DY2TU.cjs +11 -0
  289. package/dist/openai-5HQGBL4L.js +9 -0
  290. package/dist/openai-656VWUQW.cjs +9 -0
  291. package/dist/plugins/loader.d.ts +72 -0
  292. package/dist/plugins/types.d.ts +4 -0
  293. package/dist/preset/index.d.ts +60 -0
  294. package/dist/product/define.d.ts +60 -0
  295. package/dist/product/index.cjs +23 -0
  296. package/dist/product/index.d.ts +5 -0
  297. package/dist/product/index.js +23 -0
  298. package/dist/product/types.d.ts +116 -0
  299. package/dist/prompt/composer.d.ts +42 -0
  300. package/dist/prompt/instruction-scanner.d.ts +54 -0
  301. package/dist/prompt/section-cache.d.ts +15 -0
  302. package/dist/prompt/section-loader.d.ts +26 -0
  303. package/dist/protocol/client.d.ts +64 -0
  304. package/dist/protocol/index.d.ts +4 -0
  305. package/dist/protocol/server.d.ts +49 -0
  306. package/dist/protocol/transport.d.ts +36 -0
  307. package/dist/protocol/types.d.ts +150 -0
  308. package/dist/react-compiler-runtime-shim.d.ts +1 -0
  309. package/dist/remote/bridge.d.ts +37 -0
  310. package/dist/run/ArtifactTracker.d.ts +38 -0
  311. package/dist/run/CheckpointWriter.d.ts +53 -0
  312. package/dist/run/EngineRunner.d.ts +70 -0
  313. package/dist/run/Evaluator.d.ts +56 -0
  314. package/dist/run/FileRunStore.d.ts +39 -0
  315. package/dist/run/Heartbeat.d.ts +54 -0
  316. package/dist/run/RunApprovalBackend.d.ts +53 -0
  317. package/dist/run/RunLock.d.ts +40 -0
  318. package/dist/run/RunManager.d.ts +76 -0
  319. package/dist/run/RunQueue.d.ts +27 -0
  320. package/dist/run/RunStore.d.ts +25 -0
  321. package/dist/run/factory.d.ts +57 -0
  322. package/dist/run/index.cjs +50 -0
  323. package/dist/run/index.d.ts +17 -0
  324. package/dist/run/index.js +50 -0
  325. package/dist/run/types.d.ts +136 -0
  326. package/dist/services/analytics.d.ts +29 -0
  327. package/dist/services/auto-dream.d.ts +35 -0
  328. package/dist/services/compact.d.ts +56 -0
  329. package/dist/services/diagnostics.d.ts +41 -0
  330. package/dist/services/extract-memories.d.ts +27 -0
  331. package/dist/services/index.d.ts +11 -0
  332. package/dist/services/notifier.d.ts +25 -0
  333. package/dist/services/oauth.d.ts +27 -0
  334. package/dist/services/session-memory.d.ts +37 -0
  335. package/dist/session/file-history.d.ts +41 -0
  336. package/dist/session/memory.d.ts +45 -0
  337. package/dist/session/session-manager.d.ts +23 -0
  338. package/dist/session/transcript.d.ts +39 -0
  339. package/dist/session-manager-JIIBCFTC.js +8 -0
  340. package/dist/session-manager-UQKB564H.cjs +8 -0
  341. package/dist/settings/manager.d.ts +27 -0
  342. package/dist/settings/schema.d.ts +676 -0
  343. package/dist/skills/index.d.ts +7 -0
  344. package/dist/skills/matcher.d.ts +21 -0
  345. package/dist/skills/scanner.d.ts +30 -0
  346. package/dist/skills-63RBYQRX.js +13 -0
  347. package/dist/skills-V3BPLW3D.cjs +13 -0
  348. package/dist/token-counter-CHAXW5O7.cjs +13 -0
  349. package/dist/token-counter-DSOZGZ5Q.js +13 -0
  350. package/dist/tool-summary-5P2GKRA4.cjs +31 -0
  351. package/dist/tool-summary-J2ICNMWP.js +31 -0
  352. package/dist/tool-system/builtin/agent.d.ts +35 -0
  353. package/dist/tool-system/builtin/arena.d.ts +18 -0
  354. package/dist/tool-system/builtin/ask-user.d.ts +12 -0
  355. package/dist/tool-system/builtin/bash.d.ts +6 -0
  356. package/dist/tool-system/builtin/brief.d.ts +6 -0
  357. package/dist/tool-system/builtin/config.d.ts +6 -0
  358. package/dist/tool-system/builtin/cron.d.ts +10 -0
  359. package/dist/tool-system/builtin/edit.d.ts +6 -0
  360. package/dist/tool-system/builtin/file-cache.d.ts +11 -0
  361. package/dist/tool-system/builtin/glob.d.ts +6 -0
  362. package/dist/tool-system/builtin/grep.d.ts +6 -0
  363. package/dist/tool-system/builtin/index.d.ts +10 -0
  364. package/dist/tool-system/builtin/lsp.d.ts +6 -0
  365. package/dist/tool-system/builtin/mcp-tools.d.ts +10 -0
  366. package/dist/tool-system/builtin/notebook-edit.d.ts +6 -0
  367. package/dist/tool-system/builtin/plan.d.ts +18 -0
  368. package/dist/tool-system/builtin/powershell.d.ts +6 -0
  369. package/dist/tool-system/builtin/read.d.ts +6 -0
  370. package/dist/tool-system/builtin/remote-trigger.d.ts +6 -0
  371. package/dist/tool-system/builtin/repl.d.ts +6 -0
  372. package/dist/tool-system/builtin/send-message.d.ts +6 -0
  373. package/dist/tool-system/builtin/skill.d.ts +6 -0
  374. package/dist/tool-system/builtin/sleep.d.ts +6 -0
  375. package/dist/tool-system/builtin/task.d.ts +51 -0
  376. package/dist/tool-system/builtin/tool-search.d.ts +12 -0
  377. package/dist/tool-system/builtin/web-fetch.d.ts +6 -0
  378. package/dist/tool-system/builtin/web-search.d.ts +6 -0
  379. package/dist/tool-system/builtin/worktree.d.ts +10 -0
  380. package/dist/tool-system/builtin/write.d.ts +6 -0
  381. package/dist/tool-system/executor.d.ts +25 -0
  382. package/dist/tool-system/mcp-manager.d.ts +50 -0
  383. package/dist/tool-system/permission.d.ts +69 -0
  384. package/dist/tool-system/registry.d.ts +24 -0
  385. package/dist/tool-system/validation.d.ts +5 -0
  386. package/dist/types.d.ts +260 -0
  387. package/dist/ui/App.d.ts +14 -0
  388. package/dist/ui/components/AgentBlock.d.ts +32 -0
  389. package/dist/ui/components/BabyHand.d.ts +1 -0
  390. package/dist/ui/components/Banner.d.ts +8 -0
  391. package/dist/ui/components/CodeBlock.d.ts +7 -0
  392. package/dist/ui/components/CommandInput.d.ts +13 -0
  393. package/dist/ui/components/ContextUsageBar.d.ts +7 -0
  394. package/dist/ui/components/DiffView.d.ts +6 -0
  395. package/dist/ui/components/DogLogo.d.ts +1 -0
  396. package/dist/ui/components/FullscreenLayout.d.ts +51 -0
  397. package/dist/ui/components/KunHead.d.ts +1 -0
  398. package/dist/ui/components/KunLogo.d.ts +1 -0
  399. package/dist/ui/components/MessageContent.d.ts +22 -0
  400. package/dist/ui/components/PermissionDialog.d.ts +8 -0
  401. package/dist/ui/components/PermissionPrompt.d.ts +8 -0
  402. package/dist/ui/components/ScrollView.d.ts +34 -0
  403. package/dist/ui/components/Spinner.d.ts +8 -0
  404. package/dist/ui/components/SpinnerWithVerb.d.ts +13 -0
  405. package/dist/ui/components/StatusLine.d.ts +22 -0
  406. package/dist/ui/components/StructuredDiff.d.ts +8 -0
  407. package/dist/ui/components/TaskList.d.ts +6 -0
  408. package/dist/ui/components/TextInput.d.ts +9 -0
  409. package/dist/ui/components/ThemedBox.d.ts +19 -0
  410. package/dist/ui/components/ThemedText.d.ts +26 -0
  411. package/dist/ui/components/ToolCall.d.ts +21 -0
  412. package/dist/ui/components/VirtualMessageList.d.ts +24 -0
  413. package/dist/ui/hooks/useCostSummary.d.ts +1 -0
  414. package/dist/ui/index.d.ts +12 -0
  415. package/dist/ui/input-history.d.ts +61 -0
  416. package/dist/ui/store.d.ts +82 -0
  417. package/dist/ui/terminal-renderer.d.ts +45 -0
  418. package/dist/ui/theme.d.ts +36 -0
  419. package/dist/ui/vim-mode.d.ts +25 -0
  420. package/dist/updater-AVD4LKTQ.js +183 -0
  421. package/dist/updater-URVNPDPW.cjs +183 -0
  422. package/dist/utils/debug.d.ts +57 -0
  423. package/dist/utils/earlyInput.d.ts +43 -0
  424. package/dist/utils/env.d.ts +24 -0
  425. package/dist/utils/envUtils.d.ts +51 -0
  426. package/dist/utils/execFileNoThrow.d.ts +39 -0
  427. package/dist/utils/format.d.ts +44 -0
  428. package/dist/utils/fullscreen.d.ts +47 -0
  429. package/dist/utils/intl.d.ts +22 -0
  430. package/dist/utils/lockfile.d.ts +15 -0
  431. package/dist/utils/log.d.ts +56 -0
  432. package/dist/utils/semver.d.ts +5 -0
  433. package/dist/utils/sliceAnsi.d.ts +12 -0
  434. package/dist/utils/systemTheme.d.ts +40 -0
  435. package/dist/utils/theme.d.ts +91 -0
  436. package/dist/utils/toolDisplay.d.ts +31 -0
  437. package/dist/utils/truncate.d.ts +40 -0
  438. package/dist/voice/index.d.ts +35 -0
  439. package/dist/voice-KTZ7PAGO.js +80 -0
  440. package/dist/voice-KZE25GKB.cjs +80 -0
  441. package/package.json +130 -0
@@ -0,0 +1,369 @@
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
+ constructor(options: Options);
56
+ private handleResume;
57
+ private handleResize;
58
+ resolveExitPromise: () => void;
59
+ rejectExitPromise: (reason?: Error) => void;
60
+ unsubscribeExit: () => void;
61
+ /**
62
+ * Pause Ink and hand the terminal over to an external TUI (e.g. git
63
+ * commit editor). In non-fullscreen mode this enters the alt screen;
64
+ * in fullscreen mode we're already in alt so we just clear it.
65
+ * Call `exitAlternateScreen()` when done to restore Ink.
66
+ */
67
+ enterAlternateScreen(): void;
68
+ /**
69
+ * Resume Ink after an external TUI handoff with a full repaint.
70
+ * In non-fullscreen mode this exits the alt screen back to main;
71
+ * in fullscreen mode we re-enter alt and clear + repaint.
72
+ *
73
+ * The re-enter matters: terminal editors (vim, nano, less) write
74
+ * smcup/rmcup (?1049h/?1049l), so even though we started in alt,
75
+ * the editor's rmcup on exit drops us to main screen. Without
76
+ * re-entering, the 2J below wipes the user's main-screen scrollback
77
+ * and subsequent renders land in main — native terminal scroll
78
+ * returns, fullscreen scroll is dead.
79
+ */
80
+ exitAlternateScreen(): void;
81
+ onRender(): void;
82
+ pause(): void;
83
+ resume(): void;
84
+ /**
85
+ * Reset frame buffers so the next render writes the full screen from scratch.
86
+ * Call this before resume() when the terminal content has been corrupted by
87
+ * an external process (e.g. tmux, shell, full-screen TUI).
88
+ */
89
+ repaint(): void;
90
+ /**
91
+ * Clear the physical terminal and force a full redraw.
92
+ *
93
+ * The traditional readline ctrl+l — clears the visible screen and
94
+ * redraws the current content. Also the recovery path when the terminal
95
+ * was cleared externally (macOS Cmd+K) and Ink's diff engine thinks
96
+ * unchanged cells don't need repainting. Scrollback is preserved.
97
+ */
98
+ forceRedraw(): void;
99
+ /**
100
+ * Mark the previous frame as untrustworthy for blit, forcing the next
101
+ * render to do a full-damage diff instead of the per-node fast path.
102
+ *
103
+ * Lighter than forceRedraw() — no screen clear, no extra write. Call
104
+ * from a useLayoutEffect cleanup when unmounting a tall overlay: the
105
+ * blit fast path can copy stale cells from the overlay frame into rows
106
+ * the shrunken layout no longer reaches, leaving a ghost title/divider.
107
+ * onRender resets the flag at frame end so it's one-shot.
108
+ */
109
+ invalidatePrevFrame(): void;
110
+ /**
111
+ * Called by the <AlternateScreen> component on mount/unmount.
112
+ * Controls cursor.y clamping in the renderer and gates alt-screen-aware
113
+ * behavior in SIGCONT/resize/unmount handlers. Repaints on change so
114
+ * the first alt-screen frame (and first main-screen frame on exit) is
115
+ * a full redraw with no stale diff state.
116
+ */
117
+ setAltScreenActive(active: boolean, mouseTracking?: boolean): void;
118
+ get isAltScreenActive(): boolean;
119
+ /**
120
+ * Re-assert terminal modes after a gap (>5s stdin silence or event-loop
121
+ * stall). Catches tmux detach→attach, ssh reconnect, and laptop
122
+ * sleep/wake — none of which send SIGCONT. The terminal may reset DEC
123
+ * private modes on reconnect; this method restores them.
124
+ *
125
+ * Always re-asserts extended key reporting and mouse tracking. Mouse
126
+ * tracking is idempotent (DEC private mode set-when-set is a no-op). The
127
+ * Kitty keyboard protocol is NOT — CSI >1u is a stack push, so we pop
128
+ * first to keep depth balanced (pop on empty stack is a no-op per spec,
129
+ * so after a terminal reset this still restores depth 0→1). Without the
130
+ * pop, each >5s idle gap adds a stack entry, and the single pop on exit
131
+ * or suspend can't drain them — the shell is left in CSI u mode where
132
+ * Ctrl+C/Ctrl+D leak as escape sequences. The alt-screen
133
+ * re-entry (ERASE_SCREEN + frame reset) is NOT idempotent — it blanks the
134
+ * screen — so it's opt-in via includeAltScreen. The stdin-gap caller fires
135
+ * on ordinary >5s idle + keypress and must not erase; the event-loop stall
136
+ * detector fires on genuine sleep/wake and opts in. tmux attach / ssh
137
+ * reconnect typically send a resize, which already covers alt-screen via
138
+ * handleResize.
139
+ */
140
+ reassertTerminalModes: (includeAltScreen?: boolean) => void;
141
+ /**
142
+ * Mark this instance as unmounted so future unmount() calls early-return.
143
+ * Called by gracefulShutdown's cleanupTerminalModes() after it has sent
144
+ * EXIT_ALT_SCREEN but before the remaining terminal-reset sequences.
145
+ * Without this, signal-exit's deferred ink.unmount() (triggered by
146
+ * process.exit()) runs the full unmount path: onRender() + writeSync
147
+ * cleanup block + updateContainerSync → AlternateScreen unmount cleanup.
148
+ * The result is 2-3 redundant EXIT_ALT_SCREEN sequences landing on the
149
+ * main screen AFTER printResumeHint(), which tmux (at least) interprets
150
+ * as restoring the saved cursor position — clobbering the resume hint.
151
+ */
152
+ detachForShutdown(): void;
153
+ /** @see drainStdin */
154
+ drainStdin(): void;
155
+ /**
156
+ * Re-enter alt-screen, clear, home, re-enable mouse tracking, and reset
157
+ * frame buffers so the next render repaints from scratch. Self-heal for
158
+ * SIGCONT, resize, and stdin-gap/event-loop-stall (sleep/wake) — any of
159
+ * which can leave the terminal in main-screen mode while altScreenActive
160
+ * stays true. ENTER_ALT_SCREEN is a terminal-side no-op if already in alt.
161
+ */
162
+ private reenterAltScreen;
163
+ /**
164
+ * Seed prev/back frames with full-size BLANK screens (rows×cols of empty
165
+ * cells, not 0×0). In alt-screen mode, next.screen.height is always
166
+ * terminalRows; if prev.screen.height is 0 (emptyFrame's default),
167
+ * log-update sees heightDelta > 0 ('growing') and calls renderFrameSlice,
168
+ * whose trailing per-row CR+LF at the last row scrolls the alt screen,
169
+ * permanently desyncing the virtual and physical cursors by 1 row.
170
+ *
171
+ * With a rows×cols blank prev, heightDelta === 0 → standard diffEach
172
+ * → moveCursorTo (CSI cursorMove, no LF, no scroll).
173
+ *
174
+ * viewport.height = rows + 1 matches the renderer's alt-screen output,
175
+ * preventing a spurious resize trigger on the first frame. cursor.y = 0
176
+ * matches the physical cursor after ENTER_ALT_SCREEN + CSI H (home).
177
+ */
178
+ private resetFramesForAltScreen;
179
+ /**
180
+ * Copy the current selection to the clipboard without clearing the
181
+ * highlight. Matches iTerm2's copy-on-select behavior where the selected
182
+ * region stays visible after the automatic copy.
183
+ */
184
+ copySelectionNoClear(): string;
185
+ /**
186
+ * Copy the current text selection to the system clipboard via OSC 52
187
+ * and clear the selection. Returns the copied text (empty if no selection).
188
+ */
189
+ copySelection(): string;
190
+ /** Clear the current text selection without copying. */
191
+ clearTextSelection(): void;
192
+ /**
193
+ * Set the search highlight query. Non-empty → all visible occurrences
194
+ * are inverted (SGR 7) on the next frame; first one also underlined.
195
+ * Empty → clears (prevFrameContaminated handles the frame after). Same
196
+ * damage-tracking machinery as selection — setCellStyleId doesn't track
197
+ * damage, so the overlay forces full-frame damage while active.
198
+ */
199
+ setSearchHighlight(query: string): void;
200
+ /** Paint an EXISTING DOM subtree to a fresh Screen at its natural
201
+ * height, scan for query. Returns positions relative to the element's
202
+ * bounding box (row 0 = element top).
203
+ *
204
+ * The element comes from the MAIN tree — built with all real
205
+ * providers, yoga already computed. We paint it to a fresh buffer
206
+ * with offsets so it lands at (0,0). Same paint path as the main
207
+ * render. Zero drift. No second React root, no context bridge.
208
+ *
209
+ * ~1-2ms (paint only, no reconcile — the DOM is already built). */
210
+ scanElementSubtree(el: dom.DOMElement): MatchPosition[];
211
+ /** Set the position-based highlight state. Every frame, writes CURRENT
212
+ * style at positions[currentIdx] + rowOffset. null clears. The scan-
213
+ * highlight (inverse on all matches) still runs — this overlays yellow
214
+ * on top. rowOffset changes as the user scrolls (= message's current
215
+ * screen-top); positions stay stable (message-relative). */
216
+ setSearchPositions(state: {
217
+ positions: MatchPosition[];
218
+ rowOffset: number;
219
+ currentIdx: number;
220
+ } | null): void;
221
+ /**
222
+ * Set the selection highlight background color. Replaces the per-cell
223
+ * SGR-7 inverse with a solid theme-aware bg (matches native terminal
224
+ * selection). Accepts the same color formats as Text backgroundColor
225
+ * (rgb(), ansi:name, #hex, ansi256()) — colorize() routes through
226
+ * chalk so the tmux/xterm.js level clamps in colorize.ts apply and
227
+ * the emitted SGR is correct for the current terminal.
228
+ *
229
+ * Called by React-land once theme is known (ScrollKeybindingHandler's
230
+ * useEffect watching useTheme). Before that call, withSelectionBg
231
+ * falls back to withInverse so selection still renders on the first
232
+ * frame; the effect fires before any mouse input so the fallback is
233
+ * unobservable in practice.
234
+ */
235
+ setSelectionBgColor(color: string): void;
236
+ /**
237
+ * Capture text from rows about to scroll out of the viewport during
238
+ * drag-to-scroll. Must be called BEFORE the ScrollBox scrolls so the
239
+ * screen buffer still holds the outgoing content. Accumulated into
240
+ * the selection state and joined back in by getSelectedText.
241
+ */
242
+ captureScrolledRows(firstRow: number, lastRow: number, side: 'above' | 'below'): void;
243
+ /**
244
+ * Shift anchor AND focus by dRow, clamped to [minRow, maxRow]. Used by
245
+ * keyboard scroll handlers (PgUp/PgDn etc.) so the highlight tracks the
246
+ * content instead of disappearing. Unlike shiftAnchor (drag-to-scroll),
247
+ * this moves BOTH endpoints — the user isn't holding the mouse at one
248
+ * edge. Supplies screen.width for the col-reset-on-clamp boundary.
249
+ */
250
+ shiftSelectionForScroll(dRow: number, minRow: number, maxRow: number): void;
251
+ /**
252
+ * Keyboard selection extension (shift+arrow/home/end). Moves focus;
253
+ * anchor stays fixed so the highlight grows or shrinks relative to it.
254
+ * Left/right wrap across row boundaries — native macOS text-edit
255
+ * behavior: shift+left at col 0 wraps to end of the previous row.
256
+ * Up/down clamp at viewport edges (no scroll-to-extend yet). Drops to
257
+ * char mode. No-op outside alt-screen or without an active selection.
258
+ */
259
+ moveSelectionFocus(move: FocusMove): void;
260
+ /** Whether there is an active text selection. */
261
+ hasTextSelection(): boolean;
262
+ /**
263
+ * Subscribe to selection state changes. Fires whenever the selection
264
+ * is started, updated, cleared, or copied. Returns an unsubscribe fn.
265
+ */
266
+ subscribeToSelectionChange(cb: () => void): () => void;
267
+ private notifySelectionChange;
268
+ /**
269
+ * Hit-test the rendered DOM tree at (col, row) and bubble a ClickEvent
270
+ * from the deepest hit node up through ancestors with onClick handlers.
271
+ * Returns true if a DOM handler consumed the click. Gated on
272
+ * altScreenActive — clicks only make sense with a fixed viewport where
273
+ * nodeCache rects map 1:1 to terminal cells (no scrollback offset).
274
+ */
275
+ dispatchClick(col: number, row: number): boolean;
276
+ dispatchHover(col: number, row: number): void;
277
+ dispatchKeyboardEvent(parsedKey: ParsedKey): void;
278
+ /**
279
+ * Look up the URL at (col, row) in the current front frame. Checks for
280
+ * an OSC 8 hyperlink first, then falls back to scanning the row for a
281
+ * plain-text URL (mouse tracking intercepts the terminal's native
282
+ * Cmd+Click URL detection, so we replicate it). This is a pure lookup
283
+ * with no side effects — call it synchronously at click time so the
284
+ * result reflects the screen the user actually clicked on, then defer
285
+ * the browser-open action via a timer.
286
+ */
287
+ getHyperlinkAt(col: number, row: number): string | undefined;
288
+ /**
289
+ * Optional callback fired when clicking an OSC 8 hyperlink in fullscreen
290
+ * mode. Set by FullscreenLayout via useLayoutEffect.
291
+ */
292
+ onHyperlinkClick: ((url: string) => void) | undefined;
293
+ /**
294
+ * Stable prototype wrapper for onHyperlinkClick. Passed to <App> as
295
+ * onOpenHyperlink so the prop is a bound method (autoBind'd) that reads
296
+ * the mutable field at call time — not the undefined-at-render value.
297
+ */
298
+ openHyperlink(url: string): void;
299
+ /**
300
+ * Handle a double- or triple-click at (col, row): select the word or
301
+ * line under the cursor by reading the current screen buffer. Called on
302
+ * PRESS (not release) so the highlight appears immediately and drag can
303
+ * extend the selection word-by-word / line-by-line. Falls back to
304
+ * char-mode startSelection if the click lands on a noSelect cell.
305
+ */
306
+ handleMultiClick(col: number, row: number, count: 2 | 3): void;
307
+ /**
308
+ * Handle a drag-motion at (col, row). In char mode updates focus to the
309
+ * exact cell. In word/line mode snaps to word/line boundaries so the
310
+ * selection extends by word/line like native macOS. Gated on
311
+ * altScreenActive for the same reason as dispatchClick.
312
+ */
313
+ handleSelectionDrag(col: number, row: number): void;
314
+ private stdinListeners;
315
+ private wasRawMode;
316
+ suspendStdin(): void;
317
+ resumeStdin(): void;
318
+ private writeRaw;
319
+ private setCursorDeclaration;
320
+ render(node: ReactNode): void;
321
+ unmount(error?: Error | number | null): void;
322
+ waitUntilExit(): Promise<void>;
323
+ resetLineCount(): void;
324
+ /**
325
+ * Replace char/hyperlink pools with fresh instances to prevent unbounded
326
+ * growth during long sessions. Migrates the front frame's screen IDs into
327
+ * the new pools so diffing remains correct. The back frame doesn't need
328
+ * migration — resetScreen zeros it before any reads.
329
+ *
330
+ * Call between conversation turns or periodically.
331
+ */
332
+ resetPools(): void;
333
+ patchConsole(): () => void;
334
+ /**
335
+ * Intercept process.stderr.write so stray writes (config.ts, hooks.ts,
336
+ * third-party deps) don't corrupt the alt-screen buffer. patchConsole only
337
+ * hooks console.* methods — direct stderr writes bypass it, land at the
338
+ * parked cursor, scroll the alt-screen, and desync frontFrame from the
339
+ * physical terminal. Next diff writes only changed-in-React cells at
340
+ * absolute coords → interleaved garbage.
341
+ *
342
+ * Swallows the write (routes text to the debug log) and, in alt-screen,
343
+ * forces a full-damage repaint as a defensive recovery. Not patching
344
+ * process.stdout — Ink itself writes there.
345
+ */
346
+ private patchStderr;
347
+ }
348
+ /**
349
+ * Discard pending stdin bytes so in-flight escape sequences (mouse tracking
350
+ * reports, bracketed-paste markers) don't leak to the shell after exit.
351
+ *
352
+ * Two layers of trickiness:
353
+ *
354
+ * 1. setRawMode is termios, not fcntl — the stdin fd stays blocking, so
355
+ * readSync on it would hang forever. Node doesn't expose fcntl, so we
356
+ * open /dev/tty fresh with O_NONBLOCK (all fds to the controlling
357
+ * terminal share one line-discipline input queue).
358
+ *
359
+ * 2. By the time forceExit calls this, detachForShutdown has already put
360
+ * the TTY back in cooked (canonical) mode. Canonical mode line-buffers
361
+ * input until newline, so O_NONBLOCK reads return EAGAIN even when
362
+ * mouse bytes are sitting in the buffer. We briefly re-enter raw mode
363
+ * so reads return any available bytes, then restore cooked mode.
364
+ *
365
+ * Safe to call multiple times. Call as LATE as possible in the exit path:
366
+ * DISABLE_MOUSE_TRACKING has terminal round-trip latency, so events can
367
+ * arrive for a few ms after it's written.
368
+ */
369
+ export declare function drainStdin(stdin?: NodeJS.ReadStream): void;
@@ -0,0 +1,3 @@
1
+ import type Ink from './ink.js';
2
+ declare const instances: Map<NodeJS.WriteStream, Ink>;
3
+ export default instances;
@@ -0,0 +1,2 @@
1
+ import type { LayoutNode } from './node.js';
2
+ export declare function createLayoutNode(): LayoutNode;
@@ -0,0 +1,30 @@
1
+ export type Point = {
2
+ x: number;
3
+ y: number;
4
+ };
5
+ export type Size = {
6
+ width: number;
7
+ height: number;
8
+ };
9
+ export type Rectangle = Point & Size;
10
+ /** Edge insets (padding, margin, border) */
11
+ export type Edges = {
12
+ top: number;
13
+ right: number;
14
+ bottom: number;
15
+ left: number;
16
+ };
17
+ /** Create uniform edges */
18
+ export declare function edges(all: number): Edges;
19
+ export declare function edges(vertical: number, horizontal: number): Edges;
20
+ export declare function edges(top: number, right: number, bottom: number, left: number): Edges;
21
+ /** Add two edge values */
22
+ export declare function addEdges(a: Edges, b: Edges): Edges;
23
+ /** Zero edges constant */
24
+ export declare const ZERO_EDGES: Edges;
25
+ /** Convert partial edges to full edges with defaults */
26
+ export declare function resolveEdges(partial?: Partial<Edges>): Edges;
27
+ export declare function unionRect(a: Rectangle, b: Rectangle): Rectangle;
28
+ export declare function clampRect(rect: Rectangle, size: Size): Rectangle;
29
+ export declare function withinBounds(size: Size, point: Point): boolean;
30
+ export declare function clamp(value: number, min?: number, max?: number): number;
@@ -0,0 +1,125 @@
1
+ export declare const LayoutEdge: {
2
+ readonly All: "all";
3
+ readonly Horizontal: "horizontal";
4
+ readonly Vertical: "vertical";
5
+ readonly Left: "left";
6
+ readonly Right: "right";
7
+ readonly Top: "top";
8
+ readonly Bottom: "bottom";
9
+ readonly Start: "start";
10
+ readonly End: "end";
11
+ };
12
+ export type LayoutEdge = (typeof LayoutEdge)[keyof typeof LayoutEdge];
13
+ export declare const LayoutGutter: {
14
+ readonly All: "all";
15
+ readonly Column: "column";
16
+ readonly Row: "row";
17
+ };
18
+ export type LayoutGutter = (typeof LayoutGutter)[keyof typeof LayoutGutter];
19
+ export declare const LayoutDisplay: {
20
+ readonly Flex: "flex";
21
+ readonly None: "none";
22
+ };
23
+ export type LayoutDisplay = (typeof LayoutDisplay)[keyof typeof LayoutDisplay];
24
+ export declare const LayoutFlexDirection: {
25
+ readonly Row: "row";
26
+ readonly RowReverse: "row-reverse";
27
+ readonly Column: "column";
28
+ readonly ColumnReverse: "column-reverse";
29
+ };
30
+ export type LayoutFlexDirection = (typeof LayoutFlexDirection)[keyof typeof LayoutFlexDirection];
31
+ export declare const LayoutAlign: {
32
+ readonly Auto: "auto";
33
+ readonly Stretch: "stretch";
34
+ readonly FlexStart: "flex-start";
35
+ readonly Center: "center";
36
+ readonly FlexEnd: "flex-end";
37
+ };
38
+ export type LayoutAlign = (typeof LayoutAlign)[keyof typeof LayoutAlign];
39
+ export declare const LayoutJustify: {
40
+ readonly FlexStart: "flex-start";
41
+ readonly Center: "center";
42
+ readonly FlexEnd: "flex-end";
43
+ readonly SpaceBetween: "space-between";
44
+ readonly SpaceAround: "space-around";
45
+ readonly SpaceEvenly: "space-evenly";
46
+ };
47
+ export type LayoutJustify = (typeof LayoutJustify)[keyof typeof LayoutJustify];
48
+ export declare const LayoutWrap: {
49
+ readonly NoWrap: "nowrap";
50
+ readonly Wrap: "wrap";
51
+ readonly WrapReverse: "wrap-reverse";
52
+ };
53
+ export type LayoutWrap = (typeof LayoutWrap)[keyof typeof LayoutWrap];
54
+ export declare const LayoutPositionType: {
55
+ readonly Relative: "relative";
56
+ readonly Absolute: "absolute";
57
+ };
58
+ export type LayoutPositionType = (typeof LayoutPositionType)[keyof typeof LayoutPositionType];
59
+ export declare const LayoutOverflow: {
60
+ readonly Visible: "visible";
61
+ readonly Hidden: "hidden";
62
+ readonly Scroll: "scroll";
63
+ };
64
+ export type LayoutOverflow = (typeof LayoutOverflow)[keyof typeof LayoutOverflow];
65
+ export type LayoutMeasureFunc = (width: number, widthMode: LayoutMeasureMode) => {
66
+ width: number;
67
+ height: number;
68
+ };
69
+ export declare const LayoutMeasureMode: {
70
+ readonly Undefined: "undefined";
71
+ readonly Exactly: "exactly";
72
+ readonly AtMost: "at-most";
73
+ };
74
+ export type LayoutMeasureMode = (typeof LayoutMeasureMode)[keyof typeof LayoutMeasureMode];
75
+ export type LayoutNode = {
76
+ insertChild(child: LayoutNode, index: number): void;
77
+ removeChild(child: LayoutNode): void;
78
+ getChildCount(): number;
79
+ getParent(): LayoutNode | null;
80
+ calculateLayout(width?: number, height?: number): void;
81
+ setMeasureFunc(fn: LayoutMeasureFunc): void;
82
+ unsetMeasureFunc(): void;
83
+ markDirty(): void;
84
+ getComputedLeft(): number;
85
+ getComputedTop(): number;
86
+ getComputedWidth(): number;
87
+ getComputedHeight(): number;
88
+ getComputedBorder(edge: LayoutEdge): number;
89
+ getComputedPadding(edge: LayoutEdge): number;
90
+ setWidth(value: number): void;
91
+ setWidthPercent(value: number): void;
92
+ setWidthAuto(): void;
93
+ setHeight(value: number): void;
94
+ setHeightPercent(value: number): void;
95
+ setHeightAuto(): void;
96
+ setMinWidth(value: number): void;
97
+ setMinWidthPercent(value: number): void;
98
+ setMinHeight(value: number): void;
99
+ setMinHeightPercent(value: number): void;
100
+ setMaxWidth(value: number): void;
101
+ setMaxWidthPercent(value: number): void;
102
+ setMaxHeight(value: number): void;
103
+ setMaxHeightPercent(value: number): void;
104
+ setFlexDirection(dir: LayoutFlexDirection): void;
105
+ setFlexGrow(value: number): void;
106
+ setFlexShrink(value: number): void;
107
+ setFlexBasis(value: number): void;
108
+ setFlexBasisPercent(value: number): void;
109
+ setFlexWrap(wrap: LayoutWrap): void;
110
+ setAlignItems(align: LayoutAlign): void;
111
+ setAlignSelf(align: LayoutAlign): void;
112
+ setJustifyContent(justify: LayoutJustify): void;
113
+ setDisplay(display: LayoutDisplay): void;
114
+ getDisplay(): LayoutDisplay;
115
+ setPositionType(type: LayoutPositionType): void;
116
+ setPosition(edge: LayoutEdge, value: number): void;
117
+ setPositionPercent(edge: LayoutEdge, value: number): void;
118
+ setOverflow(overflow: LayoutOverflow): void;
119
+ setMargin(edge: LayoutEdge, value: number): void;
120
+ setPadding(edge: LayoutEdge, value: number): void;
121
+ setBorder(edge: LayoutEdge, value: number): void;
122
+ setGap(gutter: LayoutGutter, value: number): void;
123
+ free(): void;
124
+ freeRecursive(): void;
125
+ };
@@ -0,0 +1,56 @@
1
+ import { type Node as YogaNode } from 'src/native-ts/yoga-layout/index.js';
2
+ import { type LayoutAlign, LayoutDisplay, type LayoutEdge, type LayoutFlexDirection, type LayoutGutter, type LayoutJustify, type LayoutMeasureFunc, type LayoutNode, type LayoutOverflow, type LayoutPositionType, type LayoutWrap } from './node.js';
3
+ export declare class YogaLayoutNode implements LayoutNode {
4
+ readonly yoga: YogaNode;
5
+ constructor(yoga: YogaNode);
6
+ insertChild(child: LayoutNode, index: number): void;
7
+ removeChild(child: LayoutNode): void;
8
+ getChildCount(): number;
9
+ getParent(): LayoutNode | null;
10
+ calculateLayout(width?: number, _height?: number): void;
11
+ setMeasureFunc(fn: LayoutMeasureFunc): void;
12
+ unsetMeasureFunc(): void;
13
+ markDirty(): void;
14
+ getComputedLeft(): number;
15
+ getComputedTop(): number;
16
+ getComputedWidth(): number;
17
+ getComputedHeight(): number;
18
+ getComputedBorder(edge: LayoutEdge): number;
19
+ getComputedPadding(edge: LayoutEdge): number;
20
+ setWidth(value: number): void;
21
+ setWidthPercent(value: number): void;
22
+ setWidthAuto(): void;
23
+ setHeight(value: number): void;
24
+ setHeightPercent(value: number): void;
25
+ setHeightAuto(): void;
26
+ setMinWidth(value: number): void;
27
+ setMinWidthPercent(value: number): void;
28
+ setMinHeight(value: number): void;
29
+ setMinHeightPercent(value: number): void;
30
+ setMaxWidth(value: number): void;
31
+ setMaxWidthPercent(value: number): void;
32
+ setMaxHeight(value: number): void;
33
+ setMaxHeightPercent(value: number): void;
34
+ setFlexDirection(dir: LayoutFlexDirection): void;
35
+ setFlexGrow(value: number): void;
36
+ setFlexShrink(value: number): void;
37
+ setFlexBasis(value: number): void;
38
+ setFlexBasisPercent(value: number): void;
39
+ setFlexWrap(wrap: LayoutWrap): void;
40
+ setAlignItems(align: LayoutAlign): void;
41
+ setAlignSelf(align: LayoutAlign): void;
42
+ setJustifyContent(justify: LayoutJustify): void;
43
+ setDisplay(display: LayoutDisplay): void;
44
+ getDisplay(): LayoutDisplay;
45
+ setPositionType(type: LayoutPositionType): void;
46
+ setPosition(edge: LayoutEdge, value: number): void;
47
+ setPositionPercent(edge: LayoutEdge, value: number): void;
48
+ setOverflow(overflow: LayoutOverflow): void;
49
+ setMargin(edge: LayoutEdge, value: number): void;
50
+ setPadding(edge: LayoutEdge, value: number): void;
51
+ setBorder(edge: LayoutEdge, value: number): void;
52
+ setGap(gutter: LayoutGutter, value: number): void;
53
+ free(): void;
54
+ freeRecursive(): void;
55
+ }
56
+ export declare function createYogaLayoutNode(): LayoutNode;
@@ -0,0 +1 @@
1
+ export declare function lineWidth(line: string): number;
@@ -0,0 +1,17 @@
1
+ import type { Diff, Frame } from './frame.js';
2
+ import { type StylePool } from './screen.js';
3
+ type Options = {
4
+ isTTY: boolean;
5
+ stylePool: StylePool;
6
+ };
7
+ export declare class LogUpdate {
8
+ private readonly options;
9
+ private state;
10
+ constructor(options: Options);
11
+ renderPreviousOutput_DEPRECATED(prevFrame: Frame): Diff;
12
+ reset(): void;
13
+ private renderFullFrame;
14
+ private getRenderOpsForDone;
15
+ render(prev: Frame, next: Frame, altScreen?: boolean, decstbmSafe?: boolean): Diff;
16
+ }
17
+ export {};
@@ -0,0 +1,16 @@
1
+ import type { DOMElement } from './dom.js';
2
+ type Output = {
3
+ /**
4
+ * Element width.
5
+ */
6
+ width: number;
7
+ /**
8
+ * Element height.
9
+ */
10
+ height: number;
11
+ };
12
+ /**
13
+ * Measure the dimensions of a particular `<Box>` element.
14
+ */
15
+ declare const measureElement: (node: DOMElement) => Output;
16
+ export default measureElement;
@@ -0,0 +1,6 @@
1
+ type Output = {
2
+ width: number;
3
+ height: number;
4
+ };
5
+ declare function measureText(text: string, maxWidth: number): Output;
6
+ export default measureText;
@@ -0,0 +1,20 @@
1
+ import type { DOMElement } from './dom.js';
2
+ import type { Rectangle } from './layout/geometry.js';
3
+ /**
4
+ * Cached layout bounds for each rendered node (used for blit + clearing).
5
+ * `top` is the yoga-local getComputedTop() — stored so ScrollBox viewport
6
+ * culling can skip yoga reads for clean children whose position hasn't
7
+ * shifted (O(dirty) instead of O(mounted) first-pass).
8
+ */
9
+ export type CachedLayout = {
10
+ x: number;
11
+ y: number;
12
+ width: number;
13
+ height: number;
14
+ top?: number;
15
+ };
16
+ export declare const nodeCache: WeakMap<DOMElement, CachedLayout>;
17
+ /** Rects of removed children that need clearing on next render */
18
+ export declare const pendingClears: WeakMap<DOMElement, Rectangle[]>;
19
+ export declare function addPendingClear(parent: DOMElement, rect: Rectangle, isAbsolute: boolean): void;
20
+ export declare function consumeAbsoluteRemovedFlag(): boolean;
@@ -0,0 +1,15 @@
1
+ import type { Diff } from './frame.js';
2
+ /**
3
+ * Optimize a diff by applying all optimization rules in a single pass.
4
+ * This reduces the number of patches that need to be written to the terminal.
5
+ *
6
+ * Rules applied:
7
+ * - Remove empty stdout patches
8
+ * - Merge consecutive cursorMove patches
9
+ * - Remove no-op cursorMove (0,0) patches
10
+ * - Concat adjacent style patches (transition diffs — can't drop either)
11
+ * - Dedupe consecutive hyperlinks with same URI
12
+ * - Cancel cursor hide/show pairs
13
+ * - Remove clear patches with count 0
14
+ */
15
+ export declare function optimize(diff: Diff): Diff;