@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
@@ -7,8 +7,8 @@
7
7
  * this surface owns, not a property of either.
8
8
  */
9
9
  import { sgrBackgroundPrefix, sgrPrefix } from "../theme-capability.js";
10
- import { ESC, RESET, parseSgrParams } from "./scan.js";
11
- export const CSI = `${ESC}[`;
10
+ import { ESC, RESET } from "./scan.js";
11
+ const CSI = `${ESC}[`;
12
12
  /** The attributes a run may carry, in the order they are emitted. */
13
13
  const ATTRIBUTES = ['bold', 'dim', 'italic', 'underline', 'inverse', 'strike'];
14
14
  const ATTRIBUTE_ON = {
@@ -28,6 +28,7 @@ const ATTRIBUTE_OFF = {
28
28
  strike: `${CSI}29m`,
29
29
  };
30
30
  const SGR_ATTRIBUTE_ON = { 1: 'bold', 2: 'dim', 3: 'italic', 4: 'underline', 7: 'inverse', 9: 'strike' };
31
+ // Normalize accepted intensity resets to modeled attributes instead of forwarding SGR 21 to the terminal.
31
32
  const SGR_ATTRIBUTE_OFF = {
32
33
  21: ['bold', 'dim'],
33
34
  22: ['bold', 'dim'],
@@ -75,27 +76,19 @@ function hasAttribute(style, attribute) {
75
76
  *
76
77
  * The element's own colour is the ground state rather than a reset, because a
77
78
  * tool that ends a coloured run must not clear the colour the card drew it in;
78
- * a full reset is never emitted, so nothing outside the run is disturbed.
79
+ * a full reset is never emitted. Inherited attributes are not modeled here,
80
+ * so targeted attribute resets can still clear attributes from the base.
79
81
  */
80
82
  export function encoder(color, base) {
81
83
  if (color === 'none')
82
84
  return { between: () => '' };
83
- const groundCodes = (style) => {
84
- let out = '';
85
- for (const attribute of ATTRIBUTES)
86
- if (hasAttribute(style, attribute))
87
- out += ATTRIBUTE_OFF[attribute];
88
- if (style.fg !== undefined)
89
- out += GROUND_FG + base;
90
- if (style.bg !== undefined)
91
- out += GROUND_BG + base;
92
- return out;
93
- };
94
85
  return {
95
86
  between(previous, next) {
96
87
  if (previous === next)
97
88
  return '';
98
89
  let out = '';
90
+ // Reset before enabling new attributes so a shared reset cannot erase a newly enabled intensity bit.
91
+ // Unchanged intensity bits are not reapplied, so reset 22 can still clear one of them.
99
92
  for (const attribute of ATTRIBUTES) {
100
93
  if (hasAttribute(previous, attribute) && !hasAttribute(next, attribute))
101
94
  out += ATTRIBUTE_OFF[attribute];
@@ -112,6 +105,7 @@ export function encoder(color, base) {
112
105
  },
113
106
  };
114
107
  }
108
+ // Keep known colour operands out of attribute parsing; unknown kinds have no owned operand span.
115
109
  function colourFor(params, at, color) {
116
110
  const kind = params[at + 1];
117
111
  if (kind === EXTENDED_INDEXED) {
@@ -160,6 +154,7 @@ export function applySgr(style, params, color) {
160
154
  const extended = colourFor(params, at, color);
161
155
  if (extended.next <= at)
162
156
  break;
157
+ // An unusable colour request returns to the element colour rather than retaining an earlier tool colour.
163
158
  next = extended.code === undefined
164
159
  ? { ...next, ...(param === EXTENDED_FG ? { fg: undefined } : { bg: undefined }) }
165
160
  : { ...next, ...(param === EXTENDED_FG ? { fg: extended.code } : { bg: extended.code }) };
@@ -1 +1 @@
1
- {"version":3,"file":"sgr.js","sourceRoot":"","sources":["../../src/terminal-text/sgr.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sgr.js","sourceRoot":"","sources":["../../src/terminal-text/sgr.ts"],"names":[],"mappings":"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"}
@@ -12,9 +12,9 @@
12
12
  * every sequence a terminal would *act* on is consumed, so it acts on
13
13
  * nothing. Bytes that are not a sequence are still spelled out rather than
14
14
  * dropped, because silently swallowing text would hide what a tool said.
15
- * - {@link escapeTerminalText} is for text a buffer or a file will hold: every
16
- * control character is spelled out, because an editor cannot draw an escape
17
- * and must not execute one.
15
+ * - {@link escapeTerminalText} keeps controls visible in literal labels,
16
+ * questions, and stored text rather than allowing them to repaint content.
17
+ * Line feeds preserve rows; callers can expand tabs or keep them for a buffer.
18
18
  *
19
19
  * Sharing one scanner matters for more than agreement: pi-tui's own escape
20
20
  * scanner recognises less than a terminal does (a `\x1b[?25l` left in a drawn
@@ -22,10 +22,8 @@
22
22
  * sequence that is not SGR must be gone before any width is measured.
23
23
  */
24
24
  import type { ColourMode } from './theme-capability.ts';
25
- /** Columns between tab stops: the POSIX default, and what every terminal still uses. */
26
- export declare const TAB_STOP = 8;
27
25
  /** Whether a tab is drawn on its stop, or kept for a buffer that will hold it. */
28
- export type TabPolicy = 'expand' | 'keep';
26
+ type TabPolicy = 'expand' | 'keep';
29
27
  export interface EscapeTextOptions {
30
28
  /** The column the text starts at, so its first tab lands on the terminal's next stop. */
31
29
  readonly column?: number | undefined;
@@ -39,12 +37,8 @@ export interface RenderTextOptions {
39
37
  readonly column?: number | undefined;
40
38
  }
41
39
  /**
42
- * Spell every control character, expanding a tab to the stop the terminal would
43
- * have used.
44
- *
45
- * The column is what makes a tab land where it landed for the tool that wrote
46
- * it: a row indented by four columns reaches its stop four columns later than
47
- * the same row at the left edge.
40
+ * Account for the insertion column so tab expansion stays aligned after layout
41
+ * indentation. Retained tabs let buffer consumers apply their own stops.
48
42
  */
49
43
  export declare function escapeTerminalText(raw: string, options?: EscapeTextOptions): string;
50
44
  /**
@@ -69,4 +63,5 @@ export declare function renderTerminalText(raw: string, options: RenderTextOptio
69
63
  * is the same glitch as half a colour code.
70
64
  */
71
65
  export declare function clipVisibleGraphemes(raw: string, limit: number): string;
66
+ export {};
72
67
  //# sourceMappingURL=terminal-text.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"terminal-text.d.ts","sourceRoot":"","sources":["../src/terminal-text.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAIvD,wFAAwF;AACxF,eAAO,MAAM,QAAQ,IAAI,CAAA;AAEzB,kFAAkF;AAClF,MAAM,MAAM,SAAS,GAAG,QAAQ,GAAG,MAAM,CAAA;AAEzC,MAAM,WAAW,iBAAiB;IAChC,yFAAyF;IACzF,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACpC,QAAQ,CAAC,GAAG,CAAC,EAAE,SAAS,GAAG,SAAS,CAAA;CACrC;AAED,MAAM,WAAW,iBAAiB;IAChC,6EAA6E;IAC7E,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAA;IAC1B,yFAAyF;IACzF,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAClC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CACrC;AA8BD;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE,iBAAsB,GAAG,MAAM,CAkCvF;AASD;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,GAAG,MAAM,CA2ElF;AAED;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAwBvE"}
1
+ {"version":3,"file":"terminal-text.d.ts","sourceRoot":"","sources":["../src/terminal-text.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAOvD,kFAAkF;AAClF,KAAK,SAAS,GAAG,QAAQ,GAAG,MAAM,CAAA;AAElC,MAAM,WAAW,iBAAiB;IAChC,yFAAyF;IACzF,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACpC,QAAQ,CAAC,GAAG,CAAC,EAAE,SAAS,GAAG,SAAS,CAAA;CACrC;AAED,MAAM,WAAW,iBAAiB;IAChC,6EAA6E;IAC7E,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAA;IAC1B,yFAAyF;IACzF,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAClC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CACrC;AAkCD;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE,iBAAsB,GAAG,MAAM,CAkCvF;AASD;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,GAAG,MAAM,CAkFlF;AAED;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAwBvE"}
@@ -12,9 +12,9 @@
12
12
  * every sequence a terminal would *act* on is consumed, so it acts on
13
13
  * nothing. Bytes that are not a sequence are still spelled out rather than
14
14
  * dropped, because silently swallowing text would hide what a tool said.
15
- * - {@link escapeTerminalText} is for text a buffer or a file will hold: every
16
- * control character is spelled out, because an editor cannot draw an escape
17
- * and must not execute one.
15
+ * - {@link escapeTerminalText} keeps controls visible in literal labels,
16
+ * questions, and stored text rather than allowing them to repaint content.
17
+ * Line feeds preserve rows; callers can expand tabs or keep them for a buffer.
18
18
  *
19
19
  * Sharing one scanner matters for more than agreement: pi-tui's own escape
20
20
  * scanner recognises less than a terminal does (a `\x1b[?25l` left in a drawn
@@ -24,8 +24,8 @@
24
24
  import { visibleWidth } from '@earendil-works/pi-tui';
25
25
  import { NEEDS_READING, scan, spellControls } from "./terminal-text/scan.js";
26
26
  import { GROUND, applySgr, encoder } from "./terminal-text/sgr.js";
27
- /** Columns between tab stops: the POSIX default, and what every terminal still uses. */
28
- export const TAB_STOP = 8;
27
+ /** Keep tab widths predictable for wrapping; this surface uses eight-column stops. */
28
+ const TAB_STOP = 8;
29
29
  const GRAPHEMES = new Intl.Segmenter(undefined, { granularity: 'grapheme' });
30
30
  /** How many characters a reader sees in this piece, which is what a row budget pays for. */
31
31
  function visibleLength(piece) {
@@ -36,6 +36,10 @@ function visibleLength(piece) {
36
36
  count += 1;
37
37
  return count;
38
38
  }
39
+ // A visible escape is four or six characters, not the one control that produced it.
40
+ case 'control': return spellControls(piece.raw).length;
41
+ // The eventual insertion column is unknown here, so a tab may need a full stop of visible spaces.
42
+ case 'tab': return TAB_STOP;
39
43
  case 'sgr':
40
44
  case 'consumed':
41
45
  case 'incomplete': return 0;
@@ -53,12 +57,8 @@ function nextStop(column) {
53
57
  return (Math.floor(column / TAB_STOP) + 1) * TAB_STOP;
54
58
  }
55
59
  /**
56
- * Spell every control character, expanding a tab to the stop the terminal would
57
- * have used.
58
- *
59
- * The column is what makes a tab land where it landed for the tool that wrote
60
- * it: a row indented by four columns reaches its stop four columns later than
61
- * the same row at the left edge.
60
+ * Account for the insertion column so tab expansion stays aligned after layout
61
+ * indentation. Retained tabs let buffer consumers apply their own stops.
62
62
  */
63
63
  export function escapeTerminalText(raw, options = {}) {
64
64
  const tab = options.tab ?? 'expand';
@@ -114,27 +114,36 @@ export function renderTerminalText(raw, options) {
114
114
  const codes = encoder(color, base);
115
115
  let style = GROUND;
116
116
  let previous = GROUND;
117
- let cells = [];
117
+ const cells = new Map();
118
118
  let cursor = column;
119
119
  let out = '';
120
120
  const write = (text, width) => {
121
121
  if (width === 0) {
122
- const last = cells[cells.length - 1];
123
- if (last !== undefined && last.col + last.width === cursor)
124
- last.text += text;
122
+ // Cursor adjacency, not repaint insertion order, decides which retained glyph owns a combining mark.
123
+ const preceding = cells.get(cursor - 1);
124
+ if (preceding !== undefined && preceding.col + preceding.width === cursor)
125
+ preceding.text += text;
125
126
  return;
126
127
  }
127
- cells = cells.filter(cell => cell.col >= cursor + width || cell.col + cell.width <= cursor);
128
- let at = cells.findIndex(cell => cell.col >= cursor + width);
129
- if (at < 0)
130
- at = cells.length;
131
- cells.splice(at, 0, { col: cursor, width, text, style });
128
+ // Column ownership bounds overwrite work to the graphemes it actually replaces.
129
+ for (let col = cursor; col < cursor + width; col++) {
130
+ const replaced = cells.get(col);
131
+ if (replaced === undefined)
132
+ continue;
133
+ for (let occupied = replaced.col; occupied < replaced.col + replaced.width; occupied++)
134
+ cells.delete(occupied);
135
+ }
136
+ const cell = { col: cursor, width, text, style };
137
+ for (let col = cursor; col < cursor + width; col++)
138
+ cells.set(col, cell);
132
139
  cursor += width;
133
140
  };
134
141
  const flush = () => {
135
- if (cells.length > 0) {
142
+ if (cells.size > 0) {
136
143
  let drawn = column;
137
- for (const cell of cells) {
144
+ // Repaint insertion order differs from screen order; sort once per completed row.
145
+ const ordered = [...cells].filter(([col, cell]) => col === cell.col).map(([, cell]) => cell).sort((left, right) => left.col - right.col);
146
+ for (const cell of ordered) {
138
147
  if (cell.col > drawn) {
139
148
  out += codes.between(previous, GROUND);
140
149
  previous = GROUND;
@@ -146,7 +155,7 @@ export function renderTerminalText(raw, options) {
146
155
  drawn = cell.col + cell.width;
147
156
  }
148
157
  }
149
- cells = [];
158
+ cells.clear();
150
159
  cursor = column;
151
160
  };
152
161
  for (const piece of scan(raw)) {
@@ -1 +1 @@
1
- {"version":3,"file":"terminal-text.js","sourceRoot":"","sources":["../src/terminal-text.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"terminal-text.js","sourceRoot":"","sources":["../src/terminal-text.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AAErD,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,aAAa,EAAc,MAAM,yBAAyB,CAAA;AACxF,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAkB,MAAM,wBAAwB,CAAA;AAElF,sFAAsF;AACtF,MAAM,QAAQ,GAAG,CAAC,CAAA;AAmBlB,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC,CAAA;AAE5E,4FAA4F;AAC5F,SAAS,aAAa,CAAC,KAAY;IACjC,QAAQ,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QACzB,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,IAAI,KAAK,GAAG,CAAC,CAAA;YACb,KAAK,MAAM,CAAC,IAAI,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC;gBAAE,KAAK,IAAI,CAAC,CAAA;YACxD,OAAO,KAAK,CAAA;QACd,CAAC;QACD,oFAAoF;QACpF,KAAK,SAAS,CAAC,CAAC,OAAO,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAA;QACtD,kGAAkG;QAClG,KAAK,KAAK,CAAC,CAAC,OAAO,QAAQ,CAAA;QAC3B,KAAK,KAAK,CAAC;QACX,KAAK,UAAU,CAAC;QAChB,KAAK,YAAY,CAAC,CAAC,OAAO,CAAC,CAAA;QAC3B,OAAO,CAAC,CAAC,OAAO,CAAC,CAAA;IACnB,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,SAAS,QAAQ,CAAC,MAAc;IAC9B,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAA;AACvD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAC,GAAW,EAAE,UAA6B,EAAE;IAC7E,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,QAAQ,CAAA;IACnC,MAAM,UAAU,GAAG,GAAG,KAAK,QAAQ,CAAA;IACnC,IAAI,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,CAAC,CAAA;IAChC,IAAI,GAAG,GAAG,EAAE,CAAA;IACZ,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QAC9B,QAAQ,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;YACzB,KAAK,MAAM;gBACT,GAAG,IAAI,KAAK,CAAC,GAAG,CAAA;gBAChB,IAAI,UAAU;oBAAE,MAAM,IAAI,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;gBACjD,MAAK;YACP,KAAK,UAAU;gBACb,GAAG,IAAI,IAAI,CAAA;gBACX,MAAM,GAAG,CAAC,CAAA;gBACV,MAAK;YACP,KAAK,KAAK,CAAC,CAAC,CAAC;gBACX,IAAI,CAAC,UAAU,EAAE,CAAC;oBAChB,GAAG,IAAI,IAAI,CAAA;oBACX,MAAK;gBACP,CAAC;gBACD,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAA;gBAC7B,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,CAAA;gBAChC,MAAM,GAAG,IAAI,CAAA;gBACb,MAAK;YACP,CAAC;YACD,OAAO,CAAC,CAAC,CAAC;gBACR,MAAM,WAAW,GAAG,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;gBAC5C,GAAG,IAAI,WAAW,CAAA;gBAClB,MAAM,IAAI,WAAW,CAAC,MAAM,CAAA;gBAC5B,MAAK;YACP,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC;AASD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,kBAAkB,CAAC,GAAW,EAAE,OAA0B;IACxE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO,GAAG,CAAA;IACxC,MAAM,EAAE,KAAK,EAAE,IAAI,GAAG,EAAE,EAAE,MAAM,GAAG,CAAC,EAAE,GAAG,OAAO,CAAA;IAChD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;IAClC,IAAI,KAAK,GAAc,MAAM,CAAA;IAC7B,IAAI,QAAQ,GAAc,MAAM,CAAA;IAChC,MAAM,KAAK,GAAG,IAAI,GAAG,EAAgB,CAAA;IACrC,IAAI,MAAM,GAAG,MAAM,CAAA;IACnB,IAAI,GAAG,GAAG,EAAE,CAAA;IAEZ,MAAM,KAAK,GAAG,CAAC,IAAY,EAAE,KAAa,EAAQ,EAAE;QAClD,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;YAChB,qGAAqG;YACrG,MAAM,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;YACvC,IAAI,SAAS,KAAK,SAAS,IAAI,SAAS,CAAC,GAAG,GAAG,SAAS,CAAC,KAAK,KAAK,MAAM;gBAAE,SAAS,CAAC,IAAI,IAAI,IAAI,CAAA;YACjG,OAAM;QACR,CAAC;QACD,gFAAgF;QAChF,KAAK,IAAI,GAAG,GAAG,MAAM,EAAE,GAAG,GAAG,MAAM,GAAG,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC;YACnD,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;YAC/B,IAAI,QAAQ,KAAK,SAAS;gBAAE,SAAQ;YACpC,KAAK,IAAI,QAAQ,GAAG,QAAQ,CAAC,GAAG,EAAE,QAAQ,GAAG,QAAQ,CAAC,GAAG,GAAG,QAAQ,CAAC,KAAK,EAAE,QAAQ,EAAE;gBAAE,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;QAChH,CAAC;QACD,MAAM,IAAI,GAAS,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAA;QACtD,KAAK,IAAI,GAAG,GAAG,MAAM,EAAE,GAAG,GAAG,MAAM,GAAG,KAAK,EAAE,GAAG,EAAE;YAAE,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;QACxE,MAAM,IAAI,KAAK,CAAA;IACjB,CAAC,CAAA;IAED,MAAM,KAAK,GAAG,GAAS,EAAE;QACvB,IAAI,KAAK,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;YACnB,IAAI,KAAK,GAAG,MAAM,CAAA;YAClB,kFAAkF;YAClF,MAAM,OAAO,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,CAAA;YACxI,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;gBAC3B,IAAI,IAAI,CAAC,GAAG,GAAG,KAAK,EAAE,CAAC;oBACrB,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;oBACtC,QAAQ,GAAG,MAAM,CAAA;oBACjB,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC,CAAA;gBACrC,CAAC;gBACD,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,CAAA;gBAC1C,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAA;gBACrB,GAAG,IAAI,IAAI,CAAC,IAAI,CAAA;gBAChB,KAAK,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAA;YAC/B,CAAC;QACH,CAAC;QACD,KAAK,CAAC,KAAK,EAAE,CAAA;QACb,MAAM,GAAG,MAAM,CAAA;IACjB,CAAC,CAAA;IAED,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QAC9B,QAAQ,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;YACzB,KAAK,MAAM;gBACT,KAAK,MAAM,EAAE,OAAO,EAAE,IAAI,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC;oBAAE,KAAK,CAAC,OAAO,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC,CAAA;gBAC7F,MAAK;YACP,KAAK,UAAU;gBACb,KAAK,EAAE,CAAA;gBACP,GAAG,IAAI,IAAI,CAAA;gBACX,MAAK;YACP,KAAK,KAAK;gBACR,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAA;gBACzB,MAAK;YACP,KAAK,gBAAgB;gBACnB,MAAM,GAAG,MAAM,CAAA;gBACf,MAAK;YACP,KAAK,WAAW;gBACd,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,CAAC,CAAC,CAAA;gBACrC,MAAK;YACP,KAAK,KAAK;gBACR,KAAK,GAAG,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;gBAClD,MAAK;YACP,KAAK,SAAS,CAAC,CAAC,CAAC;gBACf,MAAM,IAAI,GAAG,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;gBACrC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;gBACxB,MAAK;YACP,CAAC;YACD,KAAK,UAAU,CAAC;YAChB,KAAK,YAAY;gBACf,MAAK;QACT,CAAC;IACH,CAAC;IACD,KAAK,EAAE,CAAA;IACP,OAAO,GAAG,CAAA;AACZ,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,oBAAoB,CAAC,GAAW,EAAE,KAAa;IAC7D,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAA;IACxB,IAAI,KAAK,GAAG,CAAC,CAAA;IACb,KAAK,MAAM,KAAK,IAAI,MAAM;QAAE,KAAK,IAAI,aAAa,CAAC,KAAK,CAAC,CAAA;IACzD,IAAI,KAAK,IAAI,KAAK;QAAE,OAAO,GAAG,CAAA;IAC9B,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAA;IACrC,IAAI,IAAI,GAAG,CAAC,CAAA;IACZ,IAAI,GAAG,GAAG,EAAE,CAAA;IACZ,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,IAAI,IAAI,MAAM;YAAE,MAAK;QACzB,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAChC,KAAK,MAAM,EAAE,OAAO,EAAE,IAAI,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;gBACvD,IAAI,IAAI,IAAI,MAAM;oBAAE,MAAK;gBACzB,GAAG,IAAI,OAAO,CAAA;gBACd,IAAI,IAAI,CAAC,CAAA;YACX,CAAC;YACD,SAAQ;QACV,CAAC;QACD,MAAM,MAAM,GAAG,aAAa,CAAC,KAAK,CAAC,CAAA;QACnC,IAAI,IAAI,GAAG,MAAM,GAAG,MAAM;YAAE,MAAK;QACjC,GAAG,IAAI,KAAK,CAAC,GAAG,CAAA;QAChB,IAAI,IAAI,MAAM,CAAA;IAChB,CAAC;IACD,OAAO,GAAG,GAAG,GAAG,CAAA;AAClB,CAAC"}
package/lib/text.d.ts CHANGED
@@ -14,15 +14,10 @@
14
14
  */
15
15
  import { type EscapeTextOptions } from './terminal-text.ts';
16
16
  /**
17
- * Render control characters as visible escapes, keeping line feeds.
18
- *
19
- * A line feed is the only control a renderer already understands; everything
20
- * else becomes text so the reader can see that it was there instead of the
21
- * terminal acting on it. A tab is the exception that is not spelled: it is
22
- * expanded to the stop the tool that wrote it used, because a stop the layout
23
- * cannot predict would desynchronize wrapping. Text that is *drawn* is not read
24
- * this way at all — it goes through `renderTerminalText`, which interprets the
25
- * sequences a terminal would have interpreted.
17
+ * Keep controls visible in literal labels and questions rather than allowing
18
+ * them to repaint content. Line feeds preserve rows; tabs normally expand to
19
+ * this surface's stops so wrapping can predict their width. Terminal-like output
20
+ * instead uses `renderTerminalText` to interpret safe styling and repaint behavior.
26
21
  */
27
22
  export declare function displayText(raw: string, options?: EscapeTextOptions): string;
28
23
  /** One row of text: every run of line breaks becomes the space between its rows. */
@@ -47,12 +42,11 @@ export declare function tailGraphemes(text: string, limit: number): string;
47
42
  /**
48
43
  * Text as the clusters a reader would count.
49
44
  *
50
- * The two cutters above bail out before scanning when the text is shorter than
51
- * the budget; a caller comparing two pieces of text cluster by cluster — the
52
- * two sides of an edit, for one — has to see every one of them, and comparing
53
- * clusters is what keeps a drawn run from ending inside a character.
45
+ * Comparing clusters keeps a drawn run from ending inside a character. A caller
46
+ * with a work budget can stop after the first excess cluster without retaining
47
+ * the rest of an oversized row; callers without a budget still keep every one.
54
48
  */
55
- export declare function splitGraphemes(text: string): string[];
49
+ export declare function splitGraphemes(text: string, limit: number): string[];
56
50
  /** The form of text that is safe to put back into a live editor. */
57
51
  export declare function stripControlCharacters(text: string): string;
58
52
  //# sourceMappingURL=text.d.ts.map
package/lib/text.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"text.d.ts","sourceRoot":"","sources":["../src/text.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAsB,KAAK,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AAE/E;;;;;;;;;;GAUG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,MAAM,CAE5E;AAaD,oFAAoF;AACpF,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE3C;AAKD;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAUlE;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAOjE;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAIrD;AAqBD,oEAAoE;AACpE,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE3D"}
1
+ {"version":3,"file":"text.d.ts","sourceRoot":"","sources":["../src/text.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAsB,KAAK,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AAG/E;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,MAAM,CAE5E;AAaD,oFAAoF;AACpF,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE3C;AAKD;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAUlE;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAOjE;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAQpE;AAqBD,oEAAoE;AACpE,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE3D"}
package/lib/text.js CHANGED
@@ -14,15 +14,10 @@
14
14
  */
15
15
  import { escapeTerminalText } from "./terminal-text.js";
16
16
  /**
17
- * Render control characters as visible escapes, keeping line feeds.
18
- *
19
- * A line feed is the only control a renderer already understands; everything
20
- * else becomes text so the reader can see that it was there instead of the
21
- * terminal acting on it. A tab is the exception that is not spelled: it is
22
- * expanded to the stop the tool that wrote it used, because a stop the layout
23
- * cannot predict would desynchronize wrapping. Text that is *drawn* is not read
24
- * this way at all — it goes through `renderTerminalText`, which interprets the
25
- * sequences a terminal would have interpreted.
17
+ * Keep controls visible in literal labels and questions rather than allowing
18
+ * them to repaint content. Line feeds preserve rows; tabs normally expand to
19
+ * this surface's stops so wrapping can predict their width. Terminal-like output
20
+ * instead uses `renderTerminalText` to interpret safe styling and repaint behavior.
26
21
  */
27
22
  export function displayText(raw, options) {
28
23
  return escapeTerminalText(raw, options);
@@ -86,15 +81,19 @@ export function tailGraphemes(text, limit) {
86
81
  /**
87
82
  * Text as the clusters a reader would count.
88
83
  *
89
- * The two cutters above bail out before scanning when the text is shorter than
90
- * the budget; a caller comparing two pieces of text cluster by cluster — the
91
- * two sides of an edit, for one — has to see every one of them, and comparing
92
- * clusters is what keeps a drawn run from ending inside a character.
84
+ * Comparing clusters keeps a drawn run from ending inside a character. A caller
85
+ * with a work budget can stop after the first excess cluster without retaining
86
+ * the rest of an oversized row; callers without a budget still keep every one.
93
87
  */
94
- export function splitGraphemes(text) {
88
+ export function splitGraphemes(text, limit) {
95
89
  const clusters = [];
96
- for (const { segment } of GRAPHEMES.segment(text))
90
+ if (limit <= 0)
91
+ return clusters;
92
+ for (const { segment } of GRAPHEMES.segment(text)) {
97
93
  clusters.push(segment);
94
+ if (clusters.length >= limit)
95
+ break;
96
+ }
98
97
  return clusters;
99
98
  }
100
99
  /**
package/lib/text.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"text.js","sourceRoot":"","sources":["../src/text.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,kBAAkB,EAA0B,MAAM,oBAAoB,CAAA;AAE/E;;;;;;;;;;GAUG;AACH,MAAM,UAAU,WAAW,CAAC,GAAW,EAAE,OAA2B;IAClE,OAAO,kBAAkB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;AACzC,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,GAAG,uBAAuB,CAAA;AAE1C,oFAAoF;AACpF,MAAM,UAAU,MAAM,CAAC,IAAY;IACjC,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,GAAG,CAAC,CAAA;AACtC,CAAC;AAED,yFAAyF;AACzF,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC,CAAA;AAE5E;;;;;;;GAOG;AACH,MAAM,UAAU,cAAc,CAAC,IAAY,EAAE,KAAa;IACxD,IAAI,KAAK,IAAI,CAAC;QAAE,OAAO,EAAE,CAAA;IACzB,6EAA6E;IAC7E,IAAI,IAAI,CAAC,MAAM,IAAI,KAAK;QAAE,OAAO,IAAI,CAAA;IACrC,MAAM,IAAI,GAAa,EAAE,CAAA;IACzB,KAAK,MAAM,EAAE,OAAO,EAAE,IAAI,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QAClD,IAAI,IAAI,CAAC,MAAM,IAAI,KAAK;YAAE,MAAK;QAC/B,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IACpB,CAAC;IACD,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;AACtB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,aAAa,CAAC,IAAY,EAAE,KAAa;IACvD,IAAI,KAAK,IAAI,CAAC;QAAE,OAAO,EAAE,CAAA;IACzB,6EAA6E;IAC7E,IAAI,IAAI,CAAC,MAAM,IAAI,KAAK;QAAE,OAAO,IAAI,CAAA;IACrC,MAAM,QAAQ,GAAa,EAAE,CAAA;IAC7B,KAAK,MAAM,EAAE,OAAO,EAAE,IAAI,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC;QAAE,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IACzE,OAAO,QAAQ,CAAC,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;AAC1E,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,MAAM,QAAQ,GAAa,EAAE,CAAA;IAC7B,KAAK,MAAM,EAAE,OAAO,EAAE,IAAI,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC;QAAE,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IACzE,OAAO,QAAQ,CAAA;AACjB,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,6BAA6B,GACjC,yFAAyF,CAAA;AAE3F,oEAAoE;AACpE,MAAM,UAAU,sBAAsB,CAAC,IAAY;IACjD,OAAO,IAAI,CAAC,OAAO,CAAC,6BAA6B,EAAE,EAAE,CAAC,CAAA;AACxD,CAAC"}
1
+ {"version":3,"file":"text.js","sourceRoot":"","sources":["../src/text.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,kBAAkB,EAA0B,MAAM,oBAAoB,CAAA;AAG/E;;;;;GAKG;AACH,MAAM,UAAU,WAAW,CAAC,GAAW,EAAE,OAA2B;IAClE,OAAO,kBAAkB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;AACzC,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,GAAG,uBAAuB,CAAA;AAE1C,oFAAoF;AACpF,MAAM,UAAU,MAAM,CAAC,IAAY;IACjC,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,GAAG,CAAC,CAAA;AACtC,CAAC;AAED,yFAAyF;AACzF,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC,CAAA;AAE5E;;;;;;;GAOG;AACH,MAAM,UAAU,cAAc,CAAC,IAAY,EAAE,KAAa;IACxD,IAAI,KAAK,IAAI,CAAC;QAAE,OAAO,EAAE,CAAA;IACzB,6EAA6E;IAC7E,IAAI,IAAI,CAAC,MAAM,IAAI,KAAK;QAAE,OAAO,IAAI,CAAA;IACrC,MAAM,IAAI,GAAa,EAAE,CAAA;IACzB,KAAK,MAAM,EAAE,OAAO,EAAE,IAAI,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QAClD,IAAI,IAAI,CAAC,MAAM,IAAI,KAAK;YAAE,MAAK;QAC/B,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IACpB,CAAC;IACD,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;AACtB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,aAAa,CAAC,IAAY,EAAE,KAAa;IACvD,IAAI,KAAK,IAAI,CAAC;QAAE,OAAO,EAAE,CAAA;IACzB,6EAA6E;IAC7E,IAAI,IAAI,CAAC,MAAM,IAAI,KAAK;QAAE,OAAO,IAAI,CAAA;IACrC,MAAM,QAAQ,GAAa,EAAE,CAAA;IAC7B,KAAK,MAAM,EAAE,OAAO,EAAE,IAAI,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC;QAAE,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IACzE,OAAO,QAAQ,CAAC,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;AAC1E,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,cAAc,CAAC,IAAY,EAAE,KAAa;IACxD,MAAM,QAAQ,GAAa,EAAE,CAAA;IAC7B,IAAI,KAAK,IAAI,CAAC;QAAE,OAAO,QAAQ,CAAA;IAC/B,KAAK,MAAM,EAAE,OAAO,EAAE,IAAI,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QAClD,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QACtB,IAAI,QAAQ,CAAC,MAAM,IAAI,KAAK;YAAE,MAAK;IACrC,CAAC;IACD,OAAO,QAAQ,CAAA;AACjB,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,6BAA6B,GACjC,yFAAyF,CAAA;AAE3F,oEAAoE;AACpE,MAAM,UAAU,sBAAsB,CAAC,IAAY;IACjD,OAAO,IAAI,CAAC,OAAO,CAAC,6BAA6B,EAAE,EAAE,CAAC,CAAA;AACxD,CAAC"}
@@ -1,17 +1,5 @@
1
1
  /** How much colour the terminal can be trusted with. */
2
2
  export type ColourMode = 'truecolor' | '256' | '16' | 'none';
3
- /** An ANSI palette index, 0-255. */
4
- export type AnsiIndex = number;
5
- /** An RGB triple. */
6
- export interface Rgb {
7
- readonly r: number;
8
- readonly g: number;
9
- readonly b: number;
10
- }
11
- /** A parsed colour: an RGB triple, or a palette index. */
12
- export type ParsedColour = Rgb | AnsiIndex;
13
- /** Which layer an SGR colour code addresses. */
14
- export type ColourLayer = 'fg' | 'bg';
15
3
  /**
16
4
  * Decide the colour budget from the environment.
17
5
  *
@@ -24,9 +12,9 @@ export declare function detectColourMode(env: Record<string, string | undefined>
24
12
  /**
25
13
  * The SGR prefix that starts a foreground colour, or empty when colour is off.
26
14
  *
27
- * Degrading a chosen shade to the nearest available slot keeps the reader's
28
- * intent on a weaker terminal, which matters more for text that is meant to
29
- * recede than exactness does.
15
+ * Approximation keeps hue families and receding greys recognizable on weaker
16
+ * terminals; neither cube rounding nor base-palette heuristics guarantee the
17
+ * nearest available shade.
30
18
  */
31
19
  export declare function sgrPrefix(spec: string | number, mode: ColourMode): string;
32
20
  /** The SGR prefix that starts a background colour, or empty when colour is off. */
@@ -1 +1 @@
1
- {"version":3,"file":"theme-capability.d.ts","sourceRoot":"","sources":["../src/theme-capability.ts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,MAAM,MAAM,UAAU,GAAG,WAAW,GAAG,KAAK,GAAG,IAAI,GAAG,MAAM,CAAA;AAE5D,oCAAoC;AACpC,MAAM,MAAM,SAAS,GAAG,MAAM,CAAA;AAE9B,qBAAqB;AACrB,MAAM,WAAW,GAAG;IAClB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,0DAA0D;AAC1D,MAAM,MAAM,YAAY,GAAG,GAAG,GAAG,SAAS,CAAA;AAE1C,gDAAgD;AAChD,MAAM,MAAM,WAAW,GAAG,IAAI,GAAG,IAAI,CAAA;AA+CrC;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,GAAG,UAAU,CAUpF;AAyGD;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,MAAM,CAEzE;AAED,mFAAmF;AACnF,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,MAAM,CAEnF"}
1
+ {"version":3,"file":"theme-capability.d.ts","sourceRoot":"","sources":["../src/theme-capability.ts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,MAAM,MAAM,UAAU,GAAG,WAAW,GAAG,KAAK,GAAG,IAAI,GAAG,MAAM,CAAA;AAkE5D;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,GAAG,UAAU,CAWpF;AAwGD;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,MAAM,CAEzE;AAED,mFAAmF;AACnF,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,MAAM,CAEnF"}
@@ -1,7 +1,9 @@
1
+ /** Bound palette indices and RGB channels before they become terminal parameters. */
1
2
  const HEX = /^#([0-9a-f]{6})$/iu;
2
3
  const MAX_INDEX = 255;
3
4
  const HEX_MAX = 0xff;
4
5
  const CUBE_LEVELS = 5;
6
+ /** Split coloured roles between normal and bright slots without discarding their hue family. */
5
7
  const MID_GREY = 128;
6
8
  /** The base SGR codes for a layer, normal and bright. */
7
9
  const FG_NORMAL = 30;
@@ -31,11 +33,12 @@ const BRIGHT_WHITE_SLOT = 15;
31
33
  /**
32
34
  * A colour this far from grey keeps its hue family when degraded to 16 colours.
33
35
  *
34
- * A luminance average alone sent the muted green additions to black on a dark
35
- * terminal, which is the failure this threshold exists to prevent.
36
+ * Preserve hue distinctions for additions and warnings instead of reducing
37
+ * every colour to a brightness-only grey. Exact threshold calibration remains
38
+ * undocumented.
36
39
  */
37
40
  const GREY_CHROMA = 30;
38
- /** Luma boundaries between the four grey slots a degrade may pick. */
41
+ /** Preserve a receding-to-bright grey hierarchy within four available slots; these are heuristic cutoffs, not contrast guarantees. */
39
42
  const GREY_BLACK_MAX = 64;
40
43
  const GREY_LIGHT_MAX = 160;
41
44
  const GREY_WHITE_MAX = 224;
@@ -60,6 +63,7 @@ export function detectColourMode(env) {
60
63
  return 'truecolor';
61
64
  if ((env.TERM ?? '').includes('256color'))
62
65
  return '256';
66
+ // Retain base-palette styling without advertising extended-colour support; this fallback is a policy, not a capability probe.
63
67
  return '16';
64
68
  }
65
69
  /** Parse a colour specification, or `undefined` when it is not one. */
@@ -83,7 +87,7 @@ function slotCode(slot, layer) {
83
87
  return bright + (slot - 8);
84
88
  return normal;
85
89
  }
86
- /** The nearest 256-colour cube index for a triple. */
90
+ /** Approximate RGB for indexed terminals; uniform rounding does not guarantee the nearest non-linear xterm shade. */
87
91
  function cubeIndex(rgb) {
88
92
  const level = (value) => Math.round((value / HEX_MAX) * CUBE_LEVELS);
89
93
  return 16 + 36 * level(rgb.r) + 6 * level(rgb.g) + level(rgb.b);
@@ -107,9 +111,8 @@ function indexToRgb(index) {
107
111
  /**
108
112
  * The hue slot a non-grey triple belongs to.
109
113
  *
110
- * A secondary channel close to the leading one is the mixed hue (amber, sky,
111
- * pink), which is why the band exists: without it the amber warning read as
112
- * plain red on a 16-colour terminal.
114
+ * Keep mixed hue families distinct from a dominant primary channel so warning
115
+ * amber need not reduce to plain red on a 16-colour terminal.
113
116
  */
114
117
  function hueSlot(rgb) {
115
118
  const max = Math.max(rgb.r, rgb.g, rgb.b);
@@ -128,15 +131,15 @@ function hueSlot(rgb) {
128
131
  return HUE_BLUE;
129
132
  }
130
133
  /**
131
- * The nearest base-palette slot for a triple.
134
+ * A base-palette approximation for a triple.
132
135
  *
133
- * Greys pick a grey slot, so "recede" survives on a 16-colour terminal, and a
134
- * colour keeps its hue family so an addition stays green; collapsing both onto
135
- * black or white is what made the degraded palette unreadable.
136
+ * Preserve separate roles for receding greys and coloured additions or warnings
137
+ * rather than reducing every role to black or white.
136
138
  */
137
139
  function degradeTo16(rgb) {
138
140
  const max = Math.max(rgb.r, rgb.g, rgb.b);
139
141
  const min = Math.min(rgb.r, rgb.g, rgb.b);
142
+ // A coarse channel average separates shade levels within the small palette; it is not perceptual luminance.
140
143
  const level = Math.round((rgb.r + rgb.g + rgb.b) / 3);
141
144
  if (max - min < GREY_CHROMA) {
142
145
  if (level >= GREY_WHITE_MAX)
@@ -150,7 +153,7 @@ function degradeTo16(rgb) {
150
153
  const slot = hueSlot(rgb);
151
154
  return level >= MID_GREY ? slot + 8 : slot;
152
155
  }
153
- /** The SGR sequence that starts a colour on one layer, or empty when there is none. */
156
+ /** Ignore invalid colour forms so malformed input cannot become terminal parameters or interrupt text rendering. */
154
157
  function colourSgr(spec, mode, layer) {
155
158
  if (mode === 'none')
156
159
  return '';
@@ -176,9 +179,9 @@ function colourSgr(spec, mode, layer) {
176
179
  /**
177
180
  * The SGR prefix that starts a foreground colour, or empty when colour is off.
178
181
  *
179
- * Degrading a chosen shade to the nearest available slot keeps the reader's
180
- * intent on a weaker terminal, which matters more for text that is meant to
181
- * recede than exactness does.
182
+ * Approximation keeps hue families and receding greys recognizable on weaker
183
+ * terminals; neither cube rounding nor base-palette heuristics guarantee the
184
+ * nearest available shade.
182
185
  */
183
186
  export function sgrPrefix(spec, mode) {
184
187
  return colourSgr(spec, mode, 'fg');
@@ -1 +1 @@
1
- {"version":3,"file":"theme-capability.js","sourceRoot":"","sources":["../src/theme-capability.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"theme-capability.js","sourceRoot":"","sources":["../src/theme-capability.ts"],"names":[],"mappings":"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"}