@sagmans/dsh-tui 0.12.1 → 0.14.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 (489) hide show
  1. package/.agents/skills/dsh-tui-dogfood/SKILL.md +18 -2
  2. package/.agents/skills/dsh-tui-dogfood/references/home-state.md +4 -4
  3. package/.agents/skills/dsh-tui-dogfood/scripts/clone-links.mjs +19 -11
  4. package/.agents/skills/dsh-tui-dogfood/scripts/run-plugin-from-worktree.sh +31 -9
  5. package/.agents/skills/dsh-tui-update-models/SKILL.md +1 -1
  6. package/.agents/skills/dsh-tui-update-models/references/model-wiring.md +6 -6
  7. package/.agents/skills/dsh-tui-update-models/scripts/dump-model-catalog.mjs +21 -13
  8. package/README.md +61 -23
  9. package/cordis.patch.yml +2 -0
  10. package/lib/agent/fork.d.ts +3 -1
  11. package/lib/agent/fork.d.ts.map +1 -1
  12. package/lib/agent/fork.js +2 -0
  13. package/lib/agent/fork.js.map +1 -1
  14. package/lib/agent/history.d.ts +14 -22
  15. package/lib/agent/history.d.ts.map +1 -1
  16. package/lib/agent/history.js +20 -14
  17. package/lib/agent/history.js.map +1 -1
  18. package/lib/agent/host.d.ts.map +1 -1
  19. package/lib/agent/host.js +6 -0
  20. package/lib/agent/host.js.map +1 -1
  21. package/lib/agent/model.d.ts +10 -8
  22. package/lib/agent/model.d.ts.map +1 -1
  23. package/lib/agent/model.js +9 -7
  24. package/lib/agent/model.js.map +1 -1
  25. package/lib/agent/present.d.ts +1 -1
  26. package/lib/agent/present.d.ts.map +1 -1
  27. package/lib/agent/present.js +1 -1
  28. package/lib/agent/present.js.map +1 -1
  29. package/lib/agent/presets.d.ts +4 -1
  30. package/lib/agent/presets.d.ts.map +1 -1
  31. package/lib/agent/presets.js +9 -2
  32. package/lib/agent/presets.js.map +1 -1
  33. package/lib/agent/projections.d.ts +8 -2
  34. package/lib/agent/projections.d.ts.map +1 -1
  35. package/lib/agent/projections.js +8 -2
  36. package/lib/agent/projections.js.map +1 -1
  37. package/lib/agent/prompt-history.d.ts +8 -48
  38. package/lib/agent/prompt-history.d.ts.map +1 -1
  39. package/lib/agent/prompt-history.js +34 -15
  40. package/lib/agent/prompt-history.js.map +1 -1
  41. package/lib/agent/status.d.ts +9 -24
  42. package/lib/agent/status.d.ts.map +1 -1
  43. package/lib/agent/status.js +7 -2
  44. package/lib/agent/status.js.map +1 -1
  45. package/lib/agent/undo.d.ts +2 -4
  46. package/lib/agent/undo.d.ts.map +1 -1
  47. package/lib/agent/undo.js +10 -5
  48. package/lib/agent/undo.js.map +1 -1
  49. package/lib/cards/composition.d.ts +7 -7
  50. package/lib/cards/composition.d.ts.map +1 -1
  51. package/lib/cards/composition.js +13 -12
  52. package/lib/cards/composition.js.map +1 -1
  53. package/lib/cards/presenter.d.ts +11 -14
  54. package/lib/cards/presenter.d.ts.map +1 -1
  55. package/lib/cards/presenter.js +40 -19
  56. package/lib/cards/presenter.js.map +1 -1
  57. package/lib/cards/preview.d.ts.map +1 -1
  58. package/lib/cards/preview.js +5 -1
  59. package/lib/cards/preview.js.map +1 -1
  60. package/lib/cards.d.ts +17 -23
  61. package/lib/cards.d.ts.map +1 -1
  62. package/lib/cards.js +27 -12
  63. package/lib/cards.js.map +1 -1
  64. package/lib/compat/probe.d.ts +2 -5
  65. package/lib/compat/probe.d.ts.map +1 -1
  66. package/lib/compat/probe.js +2 -2
  67. package/lib/compat/probe.js.map +1 -1
  68. package/lib/compat/section.d.ts +5 -4
  69. package/lib/compat/section.d.ts.map +1 -1
  70. package/lib/compat/section.js +4 -0
  71. package/lib/compat/section.js.map +1 -1
  72. package/lib/config.d.ts +0 -3
  73. package/lib/config.d.ts.map +1 -1
  74. package/lib/config.js +7 -1
  75. package/lib/config.js.map +1 -1
  76. package/lib/export.d.ts +5 -7
  77. package/lib/export.d.ts.map +1 -1
  78. package/lib/export.js +48 -10
  79. package/lib/export.js.map +1 -1
  80. package/lib/fold-cursor.d.ts +3 -3
  81. package/lib/fold-cursor.d.ts.map +1 -1
  82. package/lib/fold-cursor.js +5 -3
  83. package/lib/fold-cursor.js.map +1 -1
  84. package/lib/gates/question-card.d.ts +3 -38
  85. package/lib/gates/question-card.d.ts.map +1 -1
  86. package/lib/gates/question-card.js +13 -10
  87. package/lib/gates/question-card.js.map +1 -1
  88. package/lib/gates/questions.d.ts +14 -8
  89. package/lib/gates/questions.d.ts.map +1 -1
  90. package/lib/gates/questions.js +25 -18
  91. package/lib/gates/questions.js.map +1 -1
  92. package/lib/gates.d.ts +17 -25
  93. package/lib/gates.d.ts.map +1 -1
  94. package/lib/gates.js +2 -4
  95. package/lib/gates.js.map +1 -1
  96. package/lib/herdr/client.d.ts +10 -12
  97. package/lib/herdr/client.d.ts.map +1 -1
  98. package/lib/herdr/client.js +9 -8
  99. package/lib/herdr/client.js.map +1 -1
  100. package/lib/herdr/constants.d.ts +3 -2
  101. package/lib/herdr/constants.d.ts.map +1 -1
  102. package/lib/herdr/constants.js +3 -2
  103. package/lib/herdr/constants.js.map +1 -1
  104. package/lib/herdr/reporter.d.ts +4 -39
  105. package/lib/herdr/reporter.d.ts.map +1 -1
  106. package/lib/herdr/reporter.js +13 -19
  107. package/lib/herdr/reporter.js.map +1 -1
  108. package/lib/herdr/state.d.ts +4 -3
  109. package/lib/herdr/state.d.ts.map +1 -1
  110. package/lib/herdr/state.js +6 -5
  111. package/lib/herdr/state.js.map +1 -1
  112. package/lib/host/preset-files.d.ts +0 -17
  113. package/lib/host/preset-files.d.ts.map +1 -1
  114. package/lib/host/preset-files.js +7 -2
  115. package/lib/host/preset-files.js.map +1 -1
  116. package/lib/host/roster.d.ts +1 -1
  117. package/lib/host/roster.d.ts.map +1 -1
  118. package/lib/host/roster.js +3 -3
  119. package/lib/host/roster.js.map +1 -1
  120. package/lib/host/runner.d.ts +2 -5
  121. package/lib/host/runner.d.ts.map +1 -1
  122. package/lib/host/runner.js +2 -5
  123. package/lib/host/runner.js.map +1 -1
  124. package/lib/identity.d.ts +6 -3
  125. package/lib/identity.d.ts.map +1 -1
  126. package/lib/identity.js +18 -3
  127. package/lib/identity.js.map +1 -1
  128. package/lib/index.d.ts +2 -0
  129. package/lib/index.d.ts.map +1 -1
  130. package/lib/index.js +42 -14
  131. package/lib/index.js.map +1 -1
  132. package/lib/injection.d.ts.map +1 -1
  133. package/lib/injection.js +1 -0
  134. package/lib/injection.js.map +1 -1
  135. package/lib/input/action-catalog.d.ts.map +1 -1
  136. package/lib/input/action-catalog.js +4 -0
  137. package/lib/input/action-catalog.js.map +1 -1
  138. package/lib/input/actions.d.ts +4 -3
  139. package/lib/input/actions.d.ts.map +1 -1
  140. package/lib/input/actions.js +8 -3
  141. package/lib/input/actions.js.map +1 -1
  142. package/lib/input/completion.d.ts +3 -11
  143. package/lib/input/completion.d.ts.map +1 -1
  144. package/lib/input/completion.js +8 -6
  145. package/lib/input/completion.js.map +1 -1
  146. package/lib/input/file-index.d.ts +1 -12
  147. package/lib/input/file-index.d.ts.map +1 -1
  148. package/lib/input/file-index.js +21 -17
  149. package/lib/input/file-index.js.map +1 -1
  150. package/lib/input/file-search.d.ts +6 -3
  151. package/lib/input/file-search.d.ts.map +1 -1
  152. package/lib/input/file-search.js +29 -10
  153. package/lib/input/file-search.js.map +1 -1
  154. package/lib/input/fuzzy.d.ts +6 -12
  155. package/lib/input/fuzzy.d.ts.map +1 -1
  156. package/lib/input/fuzzy.js +18 -27
  157. package/lib/input/fuzzy.js.map +1 -1
  158. package/lib/input/ghost.d.ts +5 -5
  159. package/lib/input/ghost.d.ts.map +1 -1
  160. package/lib/input/ghost.js +4 -3
  161. package/lib/input/ghost.js.map +1 -1
  162. package/lib/input/key-press.d.ts +8 -7
  163. package/lib/input/key-press.d.ts.map +1 -1
  164. package/lib/input/key-press.js +8 -6
  165. package/lib/input/key-press.js.map +1 -1
  166. package/lib/input/keymap-conflicts.d.ts +6 -6
  167. package/lib/input/keymap-conflicts.d.ts.map +1 -1
  168. package/lib/input/keymap-conflicts.js +6 -6
  169. package/lib/input/keymap-conflicts.js.map +1 -1
  170. package/lib/input/keymap.d.ts +6 -18
  171. package/lib/input/keymap.d.ts.map +1 -1
  172. package/lib/input/keymap.js +7 -10
  173. package/lib/input/keymap.js.map +1 -1
  174. package/lib/input/match.js +4 -4
  175. package/lib/input/match.js.map +1 -1
  176. package/lib/input/submission.d.ts +7 -3
  177. package/lib/input/submission.d.ts.map +1 -1
  178. package/lib/input/submission.js +2 -2
  179. package/lib/input/submission.js.map +1 -1
  180. package/lib/input/workspace-files.d.ts +1 -2
  181. package/lib/input/workspace-files.d.ts.map +1 -1
  182. package/lib/input/workspace-files.js +20 -11
  183. package/lib/input/workspace-files.js.map +1 -1
  184. package/lib/input.d.ts +6 -0
  185. package/lib/input.d.ts.map +1 -1
  186. package/lib/input.js +34 -1
  187. package/lib/input.js.map +1 -1
  188. package/lib/install-skills.d.ts +5 -22
  189. package/lib/install-skills.d.ts.map +1 -1
  190. package/lib/install-skills.js +18 -18
  191. package/lib/install-skills.js.map +1 -1
  192. package/lib/jobs.d.ts +10 -5
  193. package/lib/jobs.d.ts.map +1 -1
  194. package/lib/jobs.js +39 -13
  195. package/lib/jobs.js.map +1 -1
  196. package/lib/keymaps.d.ts.map +1 -1
  197. package/lib/keymaps.js +2 -0
  198. package/lib/keymaps.js.map +1 -1
  199. package/lib/keys-command.d.ts +1 -1
  200. package/lib/keys-command.d.ts.map +1 -1
  201. package/lib/model-list.d.ts +0 -27
  202. package/lib/model-list.d.ts.map +1 -1
  203. package/lib/model-list.js +1 -1
  204. package/lib/model-list.js.map +1 -1
  205. package/lib/moshi.d.ts +13 -0
  206. package/lib/moshi.d.ts.map +1 -0
  207. package/lib/moshi.js +130 -0
  208. package/lib/moshi.js.map +1 -0
  209. package/lib/spacing.d.ts +0 -7
  210. package/lib/spacing.d.ts.map +1 -1
  211. package/lib/spacing.js +1 -1
  212. package/lib/spacing.js.map +1 -1
  213. package/lib/startup.d.ts +1 -1
  214. package/lib/startup.d.ts.map +1 -1
  215. package/lib/startup.js +9 -1
  216. package/lib/startup.js.map +1 -1
  217. package/lib/stash/lock.d.ts +1 -37
  218. package/lib/stash/lock.d.ts.map +1 -1
  219. package/lib/stash/lock.js +41 -35
  220. package/lib/stash/lock.js.map +1 -1
  221. package/lib/stash/paths.d.ts +8 -7
  222. package/lib/stash/paths.d.ts.map +1 -1
  223. package/lib/stash/paths.js +21 -17
  224. package/lib/stash/paths.js.map +1 -1
  225. package/lib/stash/private-fs.d.ts +14 -5
  226. package/lib/stash/private-fs.d.ts.map +1 -1
  227. package/lib/stash/private-fs.js +30 -8
  228. package/lib/stash/private-fs.js.map +1 -1
  229. package/lib/stash/schema.d.ts +3 -6
  230. package/lib/stash/schema.d.ts.map +1 -1
  231. package/lib/stash/schema.js +11 -9
  232. package/lib/stash/schema.js.map +1 -1
  233. package/lib/stash/store.d.ts +9 -40
  234. package/lib/stash/store.d.ts.map +1 -1
  235. package/lib/stash/store.js +26 -24
  236. package/lib/stash/store.js.map +1 -1
  237. package/lib/stash.d.ts +7 -11
  238. package/lib/stash.d.ts.map +1 -1
  239. package/lib/stash.js +18 -11
  240. package/lib/stash.js.map +1 -1
  241. package/lib/subagents.d.ts +9 -9
  242. package/lib/subagents.d.ts.map +1 -1
  243. package/lib/subagents.js +19 -18
  244. package/lib/subagents.js.map +1 -1
  245. package/lib/surface/appearance-preferences.d.ts.map +1 -1
  246. package/lib/surface/appearance-preferences.js +7 -0
  247. package/lib/surface/appearance-preferences.js.map +1 -1
  248. package/lib/surface/appearance.d.ts.map +1 -1
  249. package/lib/surface/appearance.js +7 -2
  250. package/lib/surface/appearance.js.map +1 -1
  251. package/lib/surface/background-work.d.ts +2 -0
  252. package/lib/surface/background-work.d.ts.map +1 -1
  253. package/lib/surface/background-work.js +45 -36
  254. package/lib/surface/background-work.js.map +1 -1
  255. package/lib/surface/commands.d.ts.map +1 -1
  256. package/lib/surface/commands.js +17 -9
  257. package/lib/surface/commands.js.map +1 -1
  258. package/lib/surface/modal-input.d.ts +4 -0
  259. package/lib/surface/modal-input.d.ts.map +1 -1
  260. package/lib/surface/modal-input.js +81 -46
  261. package/lib/surface/modal-input.js.map +1 -1
  262. package/lib/surface/model-choice.d.ts.map +1 -1
  263. package/lib/surface/model-choice.js +10 -8
  264. package/lib/surface/model-choice.js.map +1 -1
  265. package/lib/surface/plugin-actions.d.ts.map +1 -1
  266. package/lib/surface/plugin-actions.js +4 -0
  267. package/lib/surface/plugin-actions.js.map +1 -1
  268. package/lib/surface/preset-choice.d.ts.map +1 -1
  269. package/lib/surface/preset-choice.js +15 -17
  270. package/lib/surface/preset-choice.js.map +1 -1
  271. package/lib/surface/prompt-input.js +1 -1
  272. package/lib/surface/prompt-input.js.map +1 -1
  273. package/lib/surface/prompt-memory.d.ts +7 -6
  274. package/lib/surface/prompt-memory.d.ts.map +1 -1
  275. package/lib/surface/prompt-memory.js +3 -3
  276. package/lib/surface/session-lifecycle.d.ts +7 -1
  277. package/lib/surface/session-lifecycle.d.ts.map +1 -1
  278. package/lib/surface/session-lifecycle.js +17 -12
  279. package/lib/surface/session-lifecycle.js.map +1 -1
  280. package/lib/surface/session-picker.js +1 -1
  281. package/lib/surface/session-picker.js.map +1 -1
  282. package/lib/surface/session-view.d.ts +1 -1
  283. package/lib/surface/session-view.d.ts.map +1 -1
  284. package/lib/surface/session-view.js +4 -5
  285. package/lib/surface/session-view.js.map +1 -1
  286. package/lib/surface/staged-turns.d.ts.map +1 -1
  287. package/lib/surface/staged-turns.js +8 -4
  288. package/lib/surface/staged-turns.js.map +1 -1
  289. package/lib/surface/terminal-lifecycle.d.ts +1 -1
  290. package/lib/surface/terminal-lifecycle.d.ts.map +1 -1
  291. package/lib/surface/terminal-lifecycle.js +8 -5
  292. package/lib/surface/terminal-lifecycle.js.map +1 -1
  293. package/lib/terminal/bell.d.ts +0 -2
  294. package/lib/terminal/bell.d.ts.map +1 -1
  295. package/lib/terminal/bell.js +2 -1
  296. package/lib/terminal/bell.js.map +1 -1
  297. package/lib/terminal/clipboard.d.ts +4 -4
  298. package/lib/terminal/clipboard.js +4 -4
  299. package/lib/terminal/external-editor.d.ts +4 -60
  300. package/lib/terminal/external-editor.d.ts.map +1 -1
  301. package/lib/terminal/external-editor.js +28 -40
  302. package/lib/terminal/external-editor.js.map +1 -1
  303. package/lib/terminal/host-writes.d.ts +7 -18
  304. package/lib/terminal/host-writes.d.ts.map +1 -1
  305. package/lib/terminal/host-writes.js +19 -18
  306. package/lib/terminal/host-writes.js.map +1 -1
  307. package/lib/terminal/input.d.ts +6 -0
  308. package/lib/terminal/input.d.ts.map +1 -0
  309. package/lib/terminal/input.js +15 -0
  310. package/lib/terminal/input.js.map +1 -0
  311. package/lib/terminal/restore.d.ts +2 -1
  312. package/lib/terminal/restore.d.ts.map +1 -1
  313. package/lib/terminal/signals.d.ts +2 -1
  314. package/lib/terminal/signals.d.ts.map +1 -1
  315. package/lib/terminal/signals.js +1 -1
  316. package/lib/terminal/signals.js.map +1 -1
  317. package/lib/terminal/title.d.ts +1 -11
  318. package/lib/terminal/title.d.ts.map +1 -1
  319. package/lib/terminal/title.js +5 -4
  320. package/lib/terminal/title.js.map +1 -1
  321. package/lib/terminal/warning-screen.d.ts +11 -2
  322. package/lib/terminal/warning-screen.d.ts.map +1 -1
  323. package/lib/terminal/warning-screen.js +166 -22
  324. package/lib/terminal/warning-screen.js.map +1 -1
  325. package/lib/terminal-text/scan.d.ts +4 -5
  326. package/lib/terminal-text/scan.d.ts.map +1 -1
  327. package/lib/terminal-text/scan.js +16 -9
  328. package/lib/terminal-text/scan.js.map +1 -1
  329. package/lib/terminal-text/sgr.d.ts +4 -3
  330. package/lib/terminal-text/sgr.d.ts.map +1 -1
  331. package/lib/terminal-text/sgr.js +9 -14
  332. package/lib/terminal-text/sgr.js.map +1 -1
  333. package/lib/terminal-text.d.ts +7 -12
  334. package/lib/terminal-text.d.ts.map +1 -1
  335. package/lib/terminal-text.js +32 -23
  336. package/lib/terminal-text.js.map +1 -1
  337. package/lib/text.d.ts +8 -14
  338. package/lib/text.d.ts.map +1 -1
  339. package/lib/text.js +14 -15
  340. package/lib/text.js.map +1 -1
  341. package/lib/theme-capability.d.ts +3 -15
  342. package/lib/theme-capability.d.ts.map +1 -1
  343. package/lib/theme-capability.js +18 -15
  344. package/lib/theme-capability.js.map +1 -1
  345. package/lib/theme-defaults.d.ts +3 -57
  346. package/lib/theme-defaults.d.ts.map +1 -1
  347. package/lib/theme-defaults.js +25 -14
  348. package/lib/theme-defaults.js.map +1 -1
  349. package/lib/theme-files.d.ts +16 -32
  350. package/lib/theme-files.d.ts.map +1 -1
  351. package/lib/theme-files.js +43 -27
  352. package/lib/theme-files.js.map +1 -1
  353. package/lib/theme-resolver.d.ts +3 -3
  354. package/lib/theme-resolver.d.ts.map +1 -1
  355. package/lib/theme-resolver.js +9 -6
  356. package/lib/theme-resolver.js.map +1 -1
  357. package/lib/theme-schema.d.ts +7 -42
  358. package/lib/theme-schema.d.ts.map +1 -1
  359. package/lib/theme-schema.js +9 -11
  360. package/lib/theme-schema.js.map +1 -1
  361. package/lib/theme-settings.d.ts +19 -10
  362. package/lib/theme-settings.d.ts.map +1 -1
  363. package/lib/theme-settings.js +23 -17
  364. package/lib/theme-settings.js.map +1 -1
  365. package/lib/theme-tokens.d.ts +6 -12
  366. package/lib/theme-tokens.d.ts.map +1 -1
  367. package/lib/theme-tokens.js +2 -2
  368. package/lib/theme-tokens.js.map +1 -1
  369. package/lib/theme.d.ts +5 -10
  370. package/lib/theme.d.ts.map +1 -1
  371. package/lib/theme.js +11 -18
  372. package/lib/theme.js.map +1 -1
  373. package/lib/todo-guard.d.ts +8 -4
  374. package/lib/todo-guard.d.ts.map +1 -1
  375. package/lib/todo-guard.js +17 -6
  376. package/lib/todo-guard.js.map +1 -1
  377. package/lib/tokens.d.ts +0 -2
  378. package/lib/tokens.d.ts.map +1 -1
  379. package/lib/tokens.js +1 -1
  380. package/lib/tokens.js.map +1 -1
  381. package/lib/tool-display.d.ts +1 -13
  382. package/lib/tool-display.d.ts.map +1 -1
  383. package/lib/tool-display.js +4 -4
  384. package/lib/tool-display.js.map +1 -1
  385. package/lib/transcript/message-content.d.ts.map +1 -1
  386. package/lib/transcript/message-content.js +31 -9
  387. package/lib/transcript/message-content.js.map +1 -1
  388. package/lib/transcript/tool-calls.d.ts +9 -7
  389. package/lib/transcript/tool-calls.d.ts.map +1 -1
  390. package/lib/transcript/tool-calls.js +27 -20
  391. package/lib/transcript/tool-calls.js.map +1 -1
  392. package/lib/transcript.d.ts +15 -18
  393. package/lib/transcript.d.ts.map +1 -1
  394. package/lib/transcript.js +70 -41
  395. package/lib/transcript.js.map +1 -1
  396. package/lib/ui/copy.d.ts +5 -4
  397. package/lib/ui/copy.d.ts.map +1 -1
  398. package/lib/ui/copy.js +9 -6
  399. package/lib/ui/copy.js.map +1 -1
  400. package/lib/ui/diff.d.ts +0 -30
  401. package/lib/ui/diff.d.ts.map +1 -1
  402. package/lib/ui/diff.js +16 -9
  403. package/lib/ui/diff.js.map +1 -1
  404. package/lib/ui/dock.d.ts +12 -10
  405. package/lib/ui/dock.d.ts.map +1 -1
  406. package/lib/ui/dock.js +27 -14
  407. package/lib/ui/dock.js.map +1 -1
  408. package/lib/ui/editor.d.ts +5 -4
  409. package/lib/ui/editor.d.ts.map +1 -1
  410. package/lib/ui/editor.js +17 -9
  411. package/lib/ui/editor.js.map +1 -1
  412. package/lib/ui/frame.d.ts +4 -12
  413. package/lib/ui/frame.d.ts.map +1 -1
  414. package/lib/ui/frame.js +6 -6
  415. package/lib/ui/frame.js.map +1 -1
  416. package/lib/ui/gap.d.ts +0 -4
  417. package/lib/ui/gap.d.ts.map +1 -1
  418. package/lib/ui/gap.js +4 -3
  419. package/lib/ui/gap.js.map +1 -1
  420. package/lib/ui/gate-input.d.ts +3 -3
  421. package/lib/ui/gate-input.d.ts.map +1 -1
  422. package/lib/ui/gate-input.js +9 -9
  423. package/lib/ui/gate-input.js.map +1 -1
  424. package/lib/ui/layout.d.ts +1 -8
  425. package/lib/ui/layout.d.ts.map +1 -1
  426. package/lib/ui/layout.js +10 -11
  427. package/lib/ui/layout.js.map +1 -1
  428. package/lib/ui/markdown.d.ts +3 -5
  429. package/lib/ui/markdown.d.ts.map +1 -1
  430. package/lib/ui/markdown.js +18 -7
  431. package/lib/ui/markdown.js.map +1 -1
  432. package/lib/ui/mermaid.d.ts +0 -11
  433. package/lib/ui/mermaid.d.ts.map +1 -1
  434. package/lib/ui/mermaid.js +32 -17
  435. package/lib/ui/mermaid.js.map +1 -1
  436. package/lib/ui/picker-card.d.ts +4 -8
  437. package/lib/ui/picker-card.d.ts.map +1 -1
  438. package/lib/ui/picker-card.js +17 -15
  439. package/lib/ui/picker-card.js.map +1 -1
  440. package/lib/ui/picker.d.ts +11 -17
  441. package/lib/ui/picker.d.ts.map +1 -1
  442. package/lib/ui/picker.js +36 -17
  443. package/lib/ui/picker.js.map +1 -1
  444. package/lib/ui/queue.d.ts.map +1 -1
  445. package/lib/ui/queue.js +11 -1
  446. package/lib/ui/queue.js.map +1 -1
  447. package/lib/ui/stash-picker.d.ts +1 -10
  448. package/lib/ui/stash-picker.d.ts.map +1 -1
  449. package/lib/ui/stash-picker.js +4 -4
  450. package/lib/ui/stash-picker.js.map +1 -1
  451. package/lib/ui/status.d.ts +2 -19
  452. package/lib/ui/status.d.ts.map +1 -1
  453. package/lib/ui/status.js +15 -17
  454. package/lib/ui/status.js.map +1 -1
  455. package/lib/ui/view/document.d.ts +33 -0
  456. package/lib/ui/view/document.d.ts.map +1 -0
  457. package/lib/ui/view/document.js +96 -0
  458. package/lib/ui/view/document.js.map +1 -0
  459. package/lib/ui/view/gate-card.d.ts +2 -0
  460. package/lib/ui/view/gate-card.d.ts.map +1 -1
  461. package/lib/ui/view/gate-card.js +12 -10
  462. package/lib/ui/view/gate-card.js.map +1 -1
  463. package/lib/ui/view/tool-card.d.ts +7 -4
  464. package/lib/ui/view/tool-card.d.ts.map +1 -1
  465. package/lib/ui/view/tool-card.js +12 -17
  466. package/lib/ui/view/tool-card.js.map +1 -1
  467. package/lib/ui/view/transcript-message.d.ts +7 -7
  468. package/lib/ui/view/transcript-message.d.ts.map +1 -1
  469. package/lib/ui/view/transcript-message.js +19 -10
  470. package/lib/ui/view/transcript-message.js.map +1 -1
  471. package/lib/ui/view.d.ts +53 -84
  472. package/lib/ui/view.d.ts.map +1 -1
  473. package/lib/ui/view.js +79 -158
  474. package/lib/ui/view.js.map +1 -1
  475. package/lib/work.d.ts +13 -10
  476. package/lib/work.d.ts.map +1 -1
  477. package/lib/work.js +30 -8
  478. package/lib/work.js.map +1 -1
  479. package/package.json +12 -7
  480. package/presets/cordis.patch.yml +1 -0
  481. package/presets/minimal.patch.yml +1 -0
  482. package/presets/ptc.patch.yml +1 -0
  483. package/presets/standard.patch.yml +1 -0
  484. package/themes/deepseek-blue.yaml +38 -51
  485. package/themes/marine-static.yaml +27 -35
  486. package/themes/pine-slope.yaml +13 -11
  487. package/themes/polar-drift.yaml +6 -0
  488. package/themes/violet-orbit.yaml +14 -18
  489. package/themes/wine-thicket.yaml +13 -13
@@ -1 +1 @@
1
- {"version":3,"file":"signals.d.ts","sourceRoot":"","sources":["../../src/terminal/signals.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,mFAAmF;AACnF,eAAO,MAAM,mBAAmB,qDAAsD,CAAA;AAEtF,MAAM,MAAM,iBAAiB,GAAG,CAAC,OAAO,mBAAmB,CAAC,CAAC,MAAM,CAAC,CAAA;AAKpE;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE;IAC5C,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,iBAAiB,GAAG,IAAI,CAAA;CACxD,GAAG,MAAM,IAAI,CAeb"}
1
+ {"version":3,"file":"signals.d.ts","sourceRoot":"","sources":["../../src/terminal/signals.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,mFAAmF;AACnF,QAAA,MAAM,mBAAmB,qDAAsD,CAAA;AAE/E,MAAM,MAAM,iBAAiB,GAAG,CAAC,OAAO,mBAAmB,CAAC,CAAC,MAAM,CAAC,CAAA;AAKpE;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE;IAC5C,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,iBAAiB,GAAG,IAAI,CAAA;CACxD,GAAG,MAAM,IAAI,CAeb"}
@@ -8,7 +8,7 @@
8
8
  * status a shell reports for the signal.
9
9
  */
10
10
  /** Signals whose default action ends the process without unwinding the surface. */
11
- export const TERMINATING_SIGNALS = ['SIGINT', 'SIGTERM', 'SIGHUP', 'SIGQUIT'];
11
+ const TERMINATING_SIGNALS = ['SIGINT', 'SIGTERM', 'SIGHUP', 'SIGQUIT'];
12
12
  /** The status a shell reports for a process ended by one of those signals. */
13
13
  const SIGNAL_EXIT = { SIGINT: 130, SIGTERM: 143, SIGHUP: 129, SIGQUIT: 131 };
14
14
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"signals.js","sourceRoot":"","sources":["../../src/terminal/signals.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,mFAAmF;AACnF,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,CAAU,CAAA;AAItF,8EAA8E;AAC9E,MAAM,WAAW,GAAsC,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,CAAA;AAE/G;;;;;;;GAOG;AACH,MAAM,UAAU,oBAAoB,CAAC,OAEpC;IACC,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAiC,CAAA;IACzD,MAAM,MAAM,GAAG,GAAS,EAAE;QACxB,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,QAAQ;YAAE,OAAO,CAAC,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;QACjF,QAAQ,CAAC,KAAK,EAAE,CAAA;IAClB,CAAC,CAAA;IACD,KAAK,MAAM,MAAM,IAAI,mBAAmB,EAAE,CAAC;QACzC,MAAM,OAAO,GAAG,GAAS,EAAE;YACzB,MAAM,EAAE,CAAA;YACR,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAA;QAC/C,CAAC,CAAA;QACD,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;QAC3B,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC/B,CAAC;IACD,OAAO,MAAM,CAAA;AACf,CAAC"}
1
+ {"version":3,"file":"signals.js","sourceRoot":"","sources":["../../src/terminal/signals.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,mFAAmF;AACnF,MAAM,mBAAmB,GAAG,CAAC,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,CAAU,CAAA;AAI/E,8EAA8E;AAC9E,MAAM,WAAW,GAAsC,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,CAAA;AAE/G;;;;;;;GAOG;AACH,MAAM,UAAU,oBAAoB,CAAC,OAEpC;IACC,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAiC,CAAA;IACzD,MAAM,MAAM,GAAG,GAAS,EAAE;QACxB,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,QAAQ;YAAE,OAAO,CAAC,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;QACjF,QAAQ,CAAC,KAAK,EAAE,CAAA;IAClB,CAAC,CAAA;IACD,KAAK,MAAM,MAAM,IAAI,mBAAmB,EAAE,CAAC;QACzC,MAAM,OAAO,GAAG,GAAS,EAAE;YACzB,MAAM,EAAE,CAAA;YACR,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAA;QAC/C,CAAC,CAAA;QACD,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;QAC3B,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC/B,CAAC;IACD,OAAO,MAAM,CAAA;AACf,CAAC"}
@@ -5,17 +5,7 @@
5
5
  * surface is not on screen — in a tab bar, a window list, or a multiplexer — so
6
6
  * it says what this session is and whether it is working.
7
7
  */
8
- /** How much of a directory name the title keeps. */
9
- export declare const TITLE_DIR_LIMIT = 40;
10
- /**
11
- * Build the title sequence.
12
- *
13
- * Anything a terminal would read as the end of the title is removed rather than
14
- * escaped: this is a window label, and a hostile directory name has no business
15
- * reaching the terminal as a control character.
16
- */
17
- export declare function titleSequence(title: string): string;
18
- /** The window title for a session, in the terms a tab bar can show. */
8
+ /** Keep the directory and its parent as session context; the suffix takes priority when tab space is tight. */
19
9
  export declare function windowTitle(cwd: string, activity: 'ready' | 'working'): string;
20
10
  /** Hand the title back: the shell sets its own on the next prompt. */
21
11
  export declare const CLEAR_TITLE: string;
@@ -1 +1 @@
1
- {"version":3,"file":"title.d.ts","sourceRoot":"","sources":["../../src/terminal/title.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAqBH,oDAAoD;AACpD,eAAO,MAAM,eAAe,KAAK,CAAA;AAEjC;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED,uEAAuE;AACvE,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,SAAS,GAAG,MAAM,CAK9E;AAED,sEAAsE;AACtE,eAAO,MAAM,WAAW,QAAoB,CAAA"}
1
+ {"version":3,"file":"title.d.ts","sourceRoot":"","sources":["../../src/terminal/title.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAoCH,+GAA+G;AAC/G,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,SAAS,GAAG,MAAM,CAK9E;AAED,sEAAsE;AACtE,eAAO,MAAM,WAAW,QAAoB,CAAA"}
@@ -6,6 +6,7 @@
6
6
  * it says what this session is and whether it is working.
7
7
  */
8
8
  import { stripControlCharacters } from "../text.js";
9
+ // OSC 0 gives icon and window labels the same session context; BEL terminates this OSC payload.
9
10
  const OSC_INTRODUCER = '\u001b]';
10
11
  const STRING_TERMINATOR = '\u0007';
11
12
  const TITLE_CODE = '0';
@@ -21,8 +22,8 @@ const TITLE_CODE = '0';
21
22
  * neither: a tab moves the cursor inside a tab bar and a line feed splits it.
22
23
  */
23
24
  const TITLE_BREAKS = /[\t\n]/gu;
24
- /** How much of a directory name the title keeps. */
25
- export const TITLE_DIR_LIMIT = 40;
25
+ /** Keep tab labels compact without spending their directory budget on shared path prefixes. */
26
+ const TITLE_DIR_LIMIT = 40;
26
27
  /**
27
28
  * Build the title sequence.
28
29
  *
@@ -30,10 +31,10 @@ export const TITLE_DIR_LIMIT = 40;
30
31
  * escaped: this is a window label, and a hostile directory name has no business
31
32
  * reaching the terminal as a control character.
32
33
  */
33
- export function titleSequence(title) {
34
+ function titleSequence(title) {
34
35
  return `${OSC_INTRODUCER}${TITLE_CODE};${stripControlCharacters(title).replace(TITLE_BREAKS, '')}${STRING_TERMINATOR}`;
35
36
  }
36
- /** The window title for a session, in the terms a tab bar can show. */
37
+ /** Keep the directory and its parent as session context; the suffix takes priority when tab space is tight. */
37
38
  export function windowTitle(cwd, activity) {
38
39
  const segments = cwd.split('/').filter(segment => segment !== '');
39
40
  const tail = segments.slice(-2).join('/');
@@ -1 +1 @@
1
- {"version":3,"file":"title.js","sourceRoot":"","sources":["../../src/terminal/title.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAA;AAEnD,MAAM,cAAc,GAAG,SAAS,CAAA;AAChC,MAAM,iBAAiB,GAAG,QAAQ,CAAA;AAClC,MAAM,UAAU,GAAG,GAAG,CAAA;AAEtB;;;;;;;;;;GAUG;AACH,MAAM,YAAY,GAAG,UAAU,CAAA;AAE/B,oDAAoD;AACpD,MAAM,CAAC,MAAM,eAAe,GAAG,EAAE,CAAA;AAEjC;;;;;;GAMG;AACH,MAAM,UAAU,aAAa,CAAC,KAAa;IACzC,OAAO,GAAG,cAAc,GAAG,UAAU,IAAI,sBAAsB,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,GAAG,iBAAiB,EAAE,CAAA;AACxH,CAAC;AAED,uEAAuE;AACvE,MAAM,UAAU,WAAW,CAAC,GAAW,EAAE,QAA6B;IACpE,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,KAAK,EAAE,CAAC,CAAA;IACjE,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IACzC,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,GAAG,eAAe,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,eAAe,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAA;IAC3F,OAAO,aAAa,CAAC,aAAa,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,QAAQ,EAAE,CAAC,CAAA;AAC3E,CAAC;AAED,sEAAsE;AACtE,MAAM,CAAC,MAAM,WAAW,GAAG,aAAa,CAAC,EAAE,CAAC,CAAA"}
1
+ {"version":3,"file":"title.js","sourceRoot":"","sources":["../../src/terminal/title.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAA;AAEnD,gGAAgG;AAChG,MAAM,cAAc,GAAG,SAAS,CAAA;AAChC,MAAM,iBAAiB,GAAG,QAAQ,CAAA;AAClC,MAAM,UAAU,GAAG,GAAG,CAAA;AAEtB;;;;;;;;;;GAUG;AACH,MAAM,YAAY,GAAG,UAAU,CAAA;AAE/B,+FAA+F;AAC/F,MAAM,eAAe,GAAG,EAAE,CAAA;AAE1B;;;;;;GAMG;AACH,SAAS,aAAa,CAAC,KAAa;IAClC,OAAO,GAAG,cAAc,GAAG,UAAU,IAAI,sBAAsB,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,GAAG,iBAAiB,EAAE,CAAA;AACxH,CAAC;AAED,+GAA+G;AAC/G,MAAM,UAAU,WAAW,CAAC,GAAW,EAAE,QAA6B;IACpE,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,KAAK,EAAE,CAAC,CAAA;IACjE,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IACzC,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,GAAG,eAAe,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,eAAe,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAA;IAC3F,OAAO,aAAa,CAAC,aAAa,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,QAAQ,EAAE,CAAC,CAAA;AAC3E,CAAC;AAED,sEAAsE;AACtE,MAAM,CAAC,MAAM,WAAW,GAAG,aAAa,CAAC,EAAE,CAAC,CAAA"}
@@ -1,4 +1,4 @@
1
- import { TuiAltScreen, type TuiAltScreenOptions, type Terminal, type TuiStopOptions } from '@earendil-works/pi-tui';
1
+ import { TuiAltScreen, type TuiAltScreenOptions, type Terminal, type TuiStopOptions, type TuiInputListener } from '@earendil-works/pi-tui';
2
2
  /**
3
3
  * Terminal safety follows screen ownership, including partial startup and
4
4
  * repeated disposal: warnings wait for the shell, the host's own writing waits
@@ -8,7 +8,14 @@ export declare class WarningSafeTui extends TuiAltScreen {
8
8
  private releaseWarnings;
9
9
  private hostWrites;
10
10
  private frameFailed;
11
- /** Told once when a frame could not be drawn, so the surface can report it. */
11
+ private highSurrogate;
12
+ /** A stopped surface must never alter the cursor of an external editor. */
13
+ private cursorModesActive;
14
+ /** Initialization follows super(): only the native constructor listener needs interception. */
15
+ private readonly applicationListenersReady;
16
+ /** Fatal cleanup must preserve Node's original diagnostic and nonzero exit rather than claiming the exception. */
17
+ private readonly restoreAfterCrash;
18
+ /** Each failure episode deserves a report, but repeated retries must not flood the surface. */
12
19
  onFrameError: ((error: unknown) => void) | undefined;
13
20
  /**
14
21
  * The screen as this surface runs it, with the framework's other two parameters
@@ -17,6 +24,8 @@ export declare class WarningSafeTui extends TuiAltScreen {
17
24
  * ever has to name.
18
25
  */
19
26
  constructor(terminal: Terminal, options?: TuiAltScreenOptions);
27
+ /** The native viewport listener consumes focus reports, so observation must precede that listener's cleanup. */
28
+ addInputListener(listener: TuiInputListener): () => void;
20
29
  start(): void;
21
30
  /**
22
31
  * Draw a frame, keeping the last good one when drawing fails.
@@ -1 +1 @@
1
- {"version":3,"file":"warning-screen.d.ts","sourceRoot":"","sources":["../../src/terminal/warning-screen.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,KAAK,mBAAmB,EAAE,KAAK,QAAQ,EAAE,KAAK,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAoCnH;;;;GAIG;AACH,qBAAa,cAAe,SAAQ,YAAY;IAC9C,OAAO,CAAC,eAAe,CAA0B;IACjD,OAAO,CAAC,UAAU,CAA4B;IAC9C,OAAO,CAAC,WAAW,CAAQ;IAE3B,+EAA+E;IAC/E,YAAY,EAAE,CAAC,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC,GAAG,SAAS,CAAA;IAEpD;;;;;OAKG;gBACS,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,EAAE,mBAAmB;IAIpD,KAAK,IAAI,IAAI;IAWtB;;;;;;;;OAQG;IACM,QAAQ,IAAI,IAAI;IAUhB,IAAI,CAAC,OAAO,CAAC,EAAE,cAAc,GAAG,IAAI;CA4B9C"}
1
+ {"version":3,"file":"warning-screen.d.ts","sourceRoot":"","sources":["../../src/terminal/warning-screen.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,KAAK,mBAAmB,EAAE,KAAK,QAAQ,EAAE,KAAK,cAAc,EAAE,KAAK,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AA0G1I;;;;GAIG;AACH,qBAAa,cAAe,SAAQ,YAAY;IAC9C,OAAO,CAAC,eAAe,CAA0B;IACjD,OAAO,CAAC,UAAU,CAA4B;IAC9C,OAAO,CAAC,WAAW,CAAQ;IAC3B,OAAO,CAAC,aAAa,CAAoB;IACzC,2EAA2E;IAC3E,OAAO,CAAC,iBAAiB,CAAQ;IACjC,+FAA+F;IAC/F,OAAO,CAAC,QAAQ,CAAC,yBAAyB,CAAO;IACjD,kHAAkH;IAClH,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAMjC;IAED,+FAA+F;IAC/F,YAAY,EAAE,CAAC,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC,GAAG,SAAS,CAAA;IAEpD;;;;;OAKG;gBACS,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,EAAE,mBAAmB;IAiB7D,gHAAgH;IACvG,gBAAgB,CAAC,QAAQ,EAAE,gBAAgB,GAAG,MAAM,IAAI;IAUxD,KAAK,IAAI,IAAI;IAkBtB;;;;;;;;OAQG;IACM,QAAQ,IAAI,IAAI;IAgBhB,IAAI,CAAC,OAAO,CAAC,EAAE,cAAc,GAAG,IAAI;CAwC9C"}
@@ -1,15 +1,82 @@
1
+ import { Buffer } from 'node:buffer';
1
2
  import { TuiAltScreen } from '@earendil-works/pi-tui';
2
- import { holdHostWrites, HOST_WRITE_TARGETS } from "./host-writes.js";
3
+ import { holdHostWrites, HOST_WRITE_LIMIT, HOST_WRITE_TARGETS } from "./host-writes.js";
4
+ const FOCUS_IN = '\x1b[I';
5
+ const FOCUS_OUT = '\x1b[O';
6
+ /** Preserve shell preferences without changing cursor shape or scheduling blink frames. */
7
+ const SAVE_CURSOR_MODES = '\x1b[?12s\x1b[?1004s';
8
+ const ENABLE_CURSOR_MODES = '\x1b[?12h\x1b[?1004h';
9
+ const RESTORE_CURSOR_MODES = '\x1b[?1004r\x1b[?12r';
3
10
  const WARNING_EVENT = 'warning';
11
+ const FATAL_EVENT = 'uncaughtExceptionMonitor';
12
+ const EXIT_EVENT = 'exit';
13
+ const WARNING_EVENT_LIMIT = 256;
14
+ const ERROR_STACK_FIELD = 'stack';
15
+ const WARNING_TEXT_FIELDS = ['name', 'message', ERROR_STACK_FIELD, 'code', 'detail'];
16
+ const HIGH_SURROGATE = /^[\ud800-\udbff]$/u;
17
+ const LOW_SURROGATE = /^[\udc00-\udfff]$/u;
18
+ const WARNING_DROPPED = '… warnings dropped';
19
+ const FRAME_REPORTER_FAILURE = 'frame error reporter failed';
20
+ const NATIVE_ERROR_STACK = Object.getOwnPropertyDescriptor(new Error(), ERROR_STACK_FIELD);
4
21
  const RESTORE_SHELL = '\x1b[?1049l\x1b[0m\x1b[?7h\x1b[?25h';
22
+ /** Budget standard warning text without replacing the producer's retained event identity. */
23
+ function warningBytes(args) {
24
+ let bytes = 0;
25
+ try {
26
+ for (const argument of args) {
27
+ const values = [];
28
+ if (argument instanceof Error) {
29
+ // Retaining identity also retains every own metadata graph, not just the text Node prints.
30
+ for (const field of new Set([...WARNING_TEXT_FIELDS, ...Reflect.ownKeys(argument)])) {
31
+ const descriptor = Object.getOwnPropertyDescriptor(argument, field);
32
+ // Native lazy stacks preserve trace locations; custom accessors can hide an unbounded closure.
33
+ if (descriptor !== undefined && (descriptor.get !== undefined || descriptor.set !== undefined)
34
+ && !(field === ERROR_STACK_FIELD && descriptor.get === NATIVE_ERROR_STACK?.get && descriptor.set === NATIVE_ERROR_STACK?.set)) {
35
+ return HOST_WRITE_LIMIT + 1;
36
+ }
37
+ bytes += Buffer.byteLength(String(field));
38
+ values.push(Reflect.get(argument, field));
39
+ }
40
+ }
41
+ else
42
+ values.push(argument);
43
+ for (const value of values) {
44
+ if ((value !== null && typeof value === 'object') || typeof value === 'function')
45
+ return HOST_WRITE_LIMIT + 1;
46
+ if (value !== undefined)
47
+ bytes += Buffer.byteLength(String(value));
48
+ if (bytes > HOST_WRITE_LIMIT)
49
+ return bytes;
50
+ }
51
+ }
52
+ }
53
+ catch {
54
+ // Opaque metadata or throwing getters cannot establish a safe retention budget.
55
+ return HOST_WRITE_LIMIT + 1;
56
+ }
57
+ return bytes;
58
+ }
5
59
  /** Node's default warning listener writes outside the renderer, so delivery must wait for the shell. */
6
60
  function deferWarnings() {
7
61
  const emit = process.emit;
8
62
  const pending = [];
63
+ let bytes = 0;
64
+ let dropped = 0;
9
65
  let active = true;
10
66
  const deferredEmit = function (event, ...args) {
11
67
  if (active && this === process && event === WARNING_EVENT) {
12
- pending.push(args);
68
+ // Root-cause warnings survive a burst; later repetitions must not grow the hold or repeatedly format stacks.
69
+ if (pending.length >= WARNING_EVENT_LIMIT || bytes >= HOST_WRITE_LIMIT)
70
+ dropped += 1;
71
+ else {
72
+ const size = warningBytes(args);
73
+ if (size > HOST_WRITE_LIMIT - bytes)
74
+ dropped += 1;
75
+ else {
76
+ pending.push(args);
77
+ bytes += size;
78
+ }
79
+ }
13
80
  return process.listenerCount(WARNING_EVENT) > 0;
14
81
  }
15
82
  return Reflect.apply(emit, this, [event, ...args]);
@@ -23,6 +90,7 @@ function deferWarnings() {
23
90
  if (process.emit === deferredEmit)
24
91
  process.emit = emit;
25
92
  const failures = [];
93
+ bytes = 0;
26
94
  for (const args of pending.splice(0)) {
27
95
  try {
28
96
  Reflect.apply(emit, process, [WARNING_EVENT, ...args]);
@@ -31,6 +99,17 @@ function deferWarnings() {
31
99
  failures.push(error);
32
100
  }
33
101
  }
102
+ // One-shot consumers need the original root cause before an aggregate loss notification.
103
+ if (dropped > 0) {
104
+ try {
105
+ Reflect.apply(emit, process, [WARNING_EVENT, new Error(`${WARNING_DROPPED}: ${dropped}`)]);
106
+ }
107
+ catch (error) {
108
+ failures.push(error);
109
+ }
110
+ }
111
+ // Keep the first listener error intact for stop()'s post-cleanup rethrow;
112
+ // later failures must not prevent remaining warnings from replaying.
34
113
  if (failures.length > 0)
35
114
  throw failures[0];
36
115
  };
@@ -44,7 +123,21 @@ export class WarningSafeTui extends TuiAltScreen {
44
123
  releaseWarnings;
45
124
  hostWrites;
46
125
  frameFailed = false;
47
- /** Told once when a frame could not be drawn, so the surface can report it. */
126
+ highSurrogate;
127
+ /** A stopped surface must never alter the cursor of an external editor. */
128
+ cursorModesActive = false;
129
+ /** Initialization follows super(): only the native constructor listener needs interception. */
130
+ applicationListenersReady = true;
131
+ /** Fatal cleanup must preserve Node's original diagnostic and nonzero exit rather than claiming the exception. */
132
+ restoreAfterCrash = () => {
133
+ try {
134
+ this.stop({ preserveScreen: true });
135
+ }
136
+ catch {
137
+ // A restoration failure cannot replace the fatal error Node is already reporting.
138
+ }
139
+ };
140
+ /** Each failure episode deserves a report, but repeated retries must not flood the surface. */
48
141
  onFrameError;
49
142
  /**
50
143
  * The screen as this surface runs it, with the framework's other two parameters
@@ -53,12 +146,43 @@ export class WarningSafeTui extends TuiAltScreen {
53
146
  * ever has to name.
54
147
  */
55
148
  constructor(terminal, options) {
56
- super(terminal, undefined, undefined, options);
149
+ super(terminal, true, undefined, options);
150
+ // The pinned stdin buffer splits legacy text into UTF-16 units; filters must receive complete Unicode scalars.
151
+ this.addInputListener(data => {
152
+ if (HIGH_SURROGATE.test(data)) {
153
+ this.highSurrogate = data;
154
+ return { consume: true };
155
+ }
156
+ const previous = this.highSurrogate;
157
+ this.highSurrogate = undefined;
158
+ if (LOW_SURROGATE.test(data)) {
159
+ return previous === undefined ? { consume: true } : { data: previous + data };
160
+ }
161
+ return undefined;
162
+ });
163
+ }
164
+ /** The native viewport listener consumes focus reports, so observation must precede that listener's cleanup. */
165
+ addInputListener(listener) {
166
+ if (this.applicationListenersReady)
167
+ return super.addInputListener(listener);
168
+ return super.addInputListener(data => {
169
+ if (this.cursorModesActive && (data === FOCUS_IN || data === FOCUS_OUT)) {
170
+ this.setShowHardwareCursor(data === FOCUS_IN);
171
+ }
172
+ return listener(data);
173
+ });
57
174
  }
58
175
  start() {
59
176
  this.releaseWarnings ??= deferWarnings();
60
177
  this.hostWrites ??= holdHostWrites({ terminal: this.terminal, targets: HOST_WRITE_TARGETS });
61
178
  try {
179
+ if (!this.cursorModesActive) {
180
+ this.cursorModesActive = true;
181
+ process.on(FATAL_EVENT, this.restoreAfterCrash);
182
+ process.on(EXIT_EVENT, this.restoreAfterCrash);
183
+ this.terminal.write(SAVE_CURSOR_MODES + ENABLE_CURSOR_MODES);
184
+ }
185
+ this.setShowHardwareCursor(true);
62
186
  super.start();
63
187
  }
64
188
  catch (error) {
@@ -78,15 +202,26 @@ export class WarningSafeTui extends TuiAltScreen {
78
202
  doRender() {
79
203
  try {
80
204
  super.doRender();
205
+ this.frameFailed = false;
81
206
  }
82
207
  catch (error) {
83
208
  if (this.frameFailed)
84
209
  return;
85
210
  this.frameFailed = true;
86
- this.onFrameError?.(error);
211
+ try {
212
+ this.onFrameError?.(error);
213
+ }
214
+ catch {
215
+ // A broken reporter cannot replace a contained frame failure with an uncaught render-timer exception.
216
+ process.emitWarning(FRAME_REPORTER_FAILURE);
217
+ }
87
218
  }
88
219
  }
89
220
  stop(options) {
221
+ // A stopped or restarting owner must leave no fatal hooks pointing at its former terminal.
222
+ process.removeListener(FATAL_EVENT, this.restoreAfterCrash);
223
+ process.removeListener(EXIT_EVENT, this.restoreAfterCrash);
224
+ this.highSurrogate = undefined;
90
225
  try {
91
226
  super.stop(options);
92
227
  }
@@ -96,26 +231,35 @@ export class WarningSafeTui extends TuiAltScreen {
96
231
  throw error;
97
232
  }
98
233
  finally {
99
- // Warnings go first, while the hold is still in place, so what they print
100
- // joins the host text in the order it arrived; the release then writes it
101
- // all out behind the exit sequence this call already wrote.
102
- const release = this.releaseWarnings;
103
- this.releaseWarnings = undefined;
104
- let warningFailure;
105
234
  try {
106
- release?.();
235
+ // Native stop disables focus reporting; restore saved modes only after its final write.
236
+ if (this.cursorModesActive) {
237
+ this.cursorModesActive = false;
238
+ this.terminal.write(RESTORE_CURSOR_MODES);
239
+ }
107
240
  }
108
- catch (error) {
109
- // A listener that throws must not strand the host's own writing: the
110
- // hold below is the terminal's, and it goes back on every path out of
111
- // stop() — only then is the listener's failure surfaced again.
112
- warningFailure = { error };
241
+ finally {
242
+ // Replay warnings before releasing host writes, so direct host-stream output
243
+ // remains buffered until cleanup releases diagnostics. Replay cannot recover
244
+ // the warnings' original positions among host writes.
245
+ const release = this.releaseWarnings;
246
+ this.releaseWarnings = undefined;
247
+ let warningFailure;
248
+ try {
249
+ release?.();
250
+ }
251
+ catch (error) {
252
+ // A listener that throws must not strand the host's own writing: the
253
+ // hold below is the terminal's, and it goes back on every path out of
254
+ // stop() — only then is the listener's failure surfaced again.
255
+ warningFailure = { error };
256
+ }
257
+ const writes = this.hostWrites;
258
+ this.hostWrites = undefined;
259
+ writes?.release();
260
+ if (warningFailure !== undefined)
261
+ throw warningFailure.error;
113
262
  }
114
- const writes = this.hostWrites;
115
- this.hostWrites = undefined;
116
- writes?.release();
117
- if (warningFailure !== undefined)
118
- throw warningFailure.error;
119
263
  }
120
264
  }
121
265
  }
@@ -1 +1 @@
1
- {"version":3,"file":"warning-screen.js","sourceRoot":"","sources":["../../src/terminal/warning-screen.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"warning-screen.js","sourceRoot":"","sources":["../../src/terminal/warning-screen.ts"],"names":[],"mappings":"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"}
@@ -7,10 +7,10 @@
7
7
  * follow the terminal's grammar rather than a row's layout.
8
8
  */
9
9
  export declare const ESC = "\u001B";
10
- /** The bytes a text fragment cannot be drawn with: they are either sequences to read or marks to spell. */
10
+ /** Keep this trigger aligned with scan: the renderer returns unmatched text unchanged. LF alone needs no rewriting. */
11
11
  export declare const NEEDS_READING: RegExp;
12
12
  export declare const RESET = 0;
13
- export type Token = {
13
+ type Token = {
14
14
  readonly kind: 'text';
15
15
  } | {
16
16
  readonly kind: 'lineFeed';
@@ -30,15 +30,14 @@ export type Token = {
30
30
  } | {
31
31
  readonly kind: 'incomplete';
32
32
  };
33
- /** One recognised piece of the input, with the source text it was read from. */
33
+ /** Raw text lets the editor expose controls that rendering consumes; token kinds keep both policies on the same boundaries. */
34
34
  export interface Piece {
35
35
  readonly token: Token;
36
36
  readonly raw: string;
37
37
  }
38
38
  /** Every character of a sequence that is a control, spelled; the rest of it is printable. */
39
39
  export declare function spellControls(raw: string): string;
40
- /** The parameters of an SGR sequence, or nothing when it uses a form this module does not model. */
41
- export declare function parseSgrParams(body: string): readonly number[] | undefined;
42
40
  /** Split a text fragment into the pieces a policy draws or spells. */
43
41
  export declare function scan(raw: string): Piece[];
42
+ export {};
44
43
  //# sourceMappingURL=scan.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"scan.d.ts","sourceRoot":"","sources":["../../src/terminal-text/scan.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,eAAO,MAAM,GAAG,WAAW,CAAA;AAgC3B,2GAA2G;AAC3G,eAAO,MAAM,aAAa,QAAoH,CAAA;AAoC9I,eAAO,MAAM,KAAK,IAAI,CAAA;AAEtB,MAAM,MAAM,KAAK,GACb;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACzB;IAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAA;CAAE,GAC7B;IAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAA;CAAE,GACxB;IAAE,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAA;CAAE,GACnC;IAAE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAA;CAAE,GAC9B;IAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,GAC5D;IAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAA;CAAE,GAC7B;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAA;CAAE,GAC5B;IAAE,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAA;CAAE,CAAA;AAEnC,gFAAgF;AAChF,MAAM,WAAW,KAAK;IACpB,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAA;IACrB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;CACrB;AAkBD,6FAA6F;AAC7F,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAOjD;AAuDD,oGAAoG;AACpG,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,GAAG,SAAS,CAQ1E;AAED,sEAAsE;AACtE,wBAAgB,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,KAAK,EAAE,CA8CzC"}
1
+ {"version":3,"file":"scan.d.ts","sourceRoot":"","sources":["../../src/terminal-text/scan.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,eAAO,MAAM,GAAG,WAAW,CAAA;AAgC3B,uHAAuH;AACvH,eAAO,MAAM,aAAa,QAAoH,CAAA;AAwC9I,eAAO,MAAM,KAAK,IAAI,CAAA;AAEtB,KAAK,KAAK,GACN;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACzB;IAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAA;CAAE,GAC7B;IAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAA;CAAE,GACxB;IAAE,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAA;CAAE,GACnC;IAAE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAA;CAAE,GAC9B;IAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,GAC5D;IAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAA;CAAE,GAC7B;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAA;CAAE,GAC5B;IAAE,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAA;CAAE,CAAA;AAEnC,+HAA+H;AAC/H,MAAM,WAAW,KAAK;IACpB,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAA;IACrB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;CACrB;AAkBD,6FAA6F;AAC7F,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAOjD;AAuED,sEAAsE;AACtE,wBAAgB,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,KAAK,EAAE,CA+CzC"}
@@ -22,7 +22,7 @@ const FIRST_C1 = 0x80;
22
22
  const LAST_C1 = 0x9f;
23
23
  const FIRST_SURROGATE = 0xd800;
24
24
  const LAST_SURROGATE = 0xdfff;
25
- /** The bytes a text fragment cannot be drawn with: they are either sequences to read or marks to spell. */
25
+ /** Keep this trigger aligned with scan: the renderer returns unmatched text unchanged. LF alone needs no rewriting. */
26
26
  export const NEEDS_READING = /[\u0000-\u0009\u000B-\u001F\u007F-\u009F\u061C\u200E\u200F\u2028\u2029\u202A-\u202E\u2066-\u2069\uD800-\uDFFF]/u;
27
27
  /** Directional overrides and isolates, which reorder a row without drawing anything. */
28
28
  const BIDI_CONTROLS = new Set([0x202a, 0x202b, 0x202c, 0x202d, 0x202e, 0x2066, 0x2067, 0x2068, 0x2069]);
@@ -42,6 +42,8 @@ const ESCAPE_FINAL_FIRST = 0x30;
42
42
  const OSC_INTRODUCER = ']';
43
43
  const STRING_INTRODUCERS = new Set(['P', 'X', '^', '_']);
44
44
  const STRING_END = '\u0007';
45
+ const STRING_CANCEL = '\u0018';
46
+ const STRING_SUBSTITUTE = '\u001a';
45
47
  export const RESET = 0;
46
48
  function escapeCode(prefix, code, digits) {
47
49
  return prefix + code.toString(16).toUpperCase().padStart(digits, '0');
@@ -74,11 +76,10 @@ function isCsiFinal(code) {
74
76
  /**
75
77
  * Read one escape sequence at `at`.
76
78
  *
77
- * A string sequence (OSC, DCS, and their siblings) runs to BEL or ST; when its
78
- * terminator never arrives the sequence is reported incomplete rather than
79
- * swallowed to the end of the row, because the renderer and the editor want
80
- * different answers for a truncated sequence and only the scanner knows where
81
- * it stopped.
79
+ * CAN/SUB cancellation must release following output from the string grammar
80
+ * so an aborted OSC, DCS, or sibling cannot swallow visible evidence. An absent
81
+ * terminator or cancellation remains incomplete because the renderer and editor
82
+ * distinguish truncated sequences from completed ones.
82
83
  */
83
84
  function readEscape(raw, at) {
84
85
  const introducer = raw[at + 1];
@@ -109,8 +110,9 @@ function readEscape(raw, at) {
109
110
  if (introducer === OSC_INTRODUCER || STRING_INTRODUCERS.has(introducer)) {
110
111
  let end = at + 2;
111
112
  while (end < raw.length) {
112
- if (raw[end] === STRING_END)
113
+ if (raw[end] === STRING_END || raw[end] === STRING_CANCEL || raw[end] === STRING_SUBSTITUTE) {
113
114
  return { token: { kind: 'consumed' }, raw: raw.slice(at, end + 1) };
115
+ }
114
116
  if (raw[end] === ESC && raw[end + 1] === '\\')
115
117
  return { token: { kind: 'consumed' }, raw: raw.slice(at, end + 2) };
116
118
  end += 1;
@@ -123,8 +125,12 @@ function readEscape(raw, at) {
123
125
  }
124
126
  return undefined;
125
127
  }
126
- /** The parameters of an SGR sequence, or nothing when it uses a form this module does not model. */
127
- export function parseSgrParams(body) {
128
+ /**
129
+ * Only numeric semicolon parameters reach the style policy; unsupported forms
130
+ * remain consumed sequences rather than drawable terminal instructions. Empty
131
+ * fields retain SGR reset semantics, including an omitted parameter list.
132
+ */
133
+ function parseSgrParams(body) {
128
134
  if (body === '')
129
135
  return [RESET];
130
136
  const params = [];
@@ -178,6 +184,7 @@ export function scan(raw) {
178
184
  }
179
185
  }
180
186
  else if (code >= FIRST_SURROGATE && code <= LAST_SURROGATE) {
187
+ // Keep malformed UTF-16 out of the glyph stream that consumers measure and emit.
181
188
  text += REPLACEMENT;
182
189
  }
183
190
  else if (isSpelledControl(code)) {
@@ -1 +1 @@
1
- {"version":3,"file":"scan.js","sourceRoot":"","sources":["../../src/terminal-text/scan.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scan.js","sourceRoot":"","sources":["../../src/terminal-text/scan.ts"],"names":[],"mappings":"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"}
@@ -7,7 +7,7 @@
7
7
  * this surface owns, not a property of either.
8
8
  */
9
9
  import { type ColourMode } from '../theme-capability.ts';
10
- export declare const CSI = "\u001B[";
10
+ /** Capability-normalized colour prefixes let retained cells reuse their style without interpreting foreign parameters during emission. */
11
11
  export interface TextStyle {
12
12
  readonly fg?: string | undefined;
13
13
  readonly bg?: string | undefined;
@@ -16,7 +16,7 @@ export interface TextStyle {
16
16
  }
17
17
  export declare const GROUND: TextStyle;
18
18
  export interface Encoder {
19
- /** The codes that move from one style to the next. */
19
+ /** Retained cells may emit in screen order rather than input order, so transitions compare their stored styles. */
20
20
  between(previous: TextStyle, next: TextStyle): string;
21
21
  }
22
22
  /**
@@ -24,7 +24,8 @@ export interface Encoder {
24
24
  *
25
25
  * The element's own colour is the ground state rather than a reset, because a
26
26
  * tool that ends a coloured run must not clear the colour the card drew it in;
27
- * a full reset is never emitted, so nothing outside the run is disturbed.
27
+ * a full reset is never emitted. Inherited attributes are not modeled here,
28
+ * so targeted attribute resets can still clear attributes from the base.
28
29
  */
29
30
  export declare function encoder(color: ColourMode, base: string): Encoder;
30
31
  /** Apply an SGR sequence to the state a cell is written with. */
@@ -1 +1 @@
1
- {"version":3,"file":"sgr.d.ts","sourceRoot":"","sources":["../../src/terminal-text/sgr.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAkC,KAAK,UAAU,EAAE,MAAM,wBAAwB,CAAA;AAGxF,eAAO,MAAM,GAAG,YAAY,CAAA;AA8E5B,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAChC,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAChC,4EAA4E;IAC5E,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;CAC5B;AAED,eAAO,MAAM,MAAM,EAAE,SAA6B,CAAA;AAalD,MAAM,WAAW,OAAO;IACtB,sDAAsD;IACtD,OAAO,CAAC,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,GAAG,MAAM,CAAA;CACtD;AAED;;;;;;GAMG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAwBhE;AAsBD,iEAAiE;AACjE,wBAAgB,QAAQ,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,MAAM,EAAE,EAAE,KAAK,EAAE,UAAU,GAAG,SAAS,CA+ClG"}
1
+ {"version":3,"file":"sgr.d.ts","sourceRoot":"","sources":["../../src/terminal-text/sgr.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAkC,KAAK,UAAU,EAAE,MAAM,wBAAwB,CAAA;AAkFxF,0IAA0I;AAC1I,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAChC,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAChC,4EAA4E;IAC5E,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;CAC5B;AAED,eAAO,MAAM,MAAM,EAAE,SAA6B,CAAA;AAalD,MAAM,WAAW,OAAO;IACtB,mHAAmH;IACnH,OAAO,CAAC,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,GAAG,MAAM,CAAA;CACtD;AAED;;;;;;;GAOG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAmBhE;AAuBD,iEAAiE;AACjE,wBAAgB,QAAQ,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,MAAM,EAAE,EAAE,KAAK,EAAE,UAAU,GAAG,SAAS,CAgDlG"}