@sagmans/dsh-tui 0.13.0 → 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 (485) 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 +16 -12
  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 +4 -4
  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 +4 -3
  151. package/lib/input/file-search.d.ts.map +1 -1
  152. package/lib/input/file-search.js +8 -5
  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.map +1 -1
  185. package/lib/input.js +3 -1
  186. package/lib/input.js.map +1 -1
  187. package/lib/install-skills.d.ts +5 -22
  188. package/lib/install-skills.d.ts.map +1 -1
  189. package/lib/install-skills.js +18 -18
  190. package/lib/install-skills.js.map +1 -1
  191. package/lib/jobs.d.ts +10 -5
  192. package/lib/jobs.d.ts.map +1 -1
  193. package/lib/jobs.js +39 -13
  194. package/lib/jobs.js.map +1 -1
  195. package/lib/keymaps.d.ts.map +1 -1
  196. package/lib/keymaps.js +2 -0
  197. package/lib/keymaps.js.map +1 -1
  198. package/lib/keys-command.d.ts +1 -1
  199. package/lib/keys-command.d.ts.map +1 -1
  200. package/lib/model-list.d.ts +0 -27
  201. package/lib/model-list.d.ts.map +1 -1
  202. package/lib/model-list.js +1 -1
  203. package/lib/model-list.js.map +1 -1
  204. package/lib/moshi.d.ts +13 -0
  205. package/lib/moshi.d.ts.map +1 -0
  206. package/lib/moshi.js +130 -0
  207. package/lib/moshi.js.map +1 -0
  208. package/lib/spacing.d.ts +0 -7
  209. package/lib/spacing.d.ts.map +1 -1
  210. package/lib/spacing.js +1 -1
  211. package/lib/spacing.js.map +1 -1
  212. package/lib/startup.d.ts +1 -1
  213. package/lib/startup.d.ts.map +1 -1
  214. package/lib/startup.js +9 -1
  215. package/lib/startup.js.map +1 -1
  216. package/lib/stash/lock.d.ts +1 -37
  217. package/lib/stash/lock.d.ts.map +1 -1
  218. package/lib/stash/lock.js +41 -35
  219. package/lib/stash/lock.js.map +1 -1
  220. package/lib/stash/paths.d.ts +8 -7
  221. package/lib/stash/paths.d.ts.map +1 -1
  222. package/lib/stash/paths.js +21 -17
  223. package/lib/stash/paths.js.map +1 -1
  224. package/lib/stash/private-fs.d.ts +14 -5
  225. package/lib/stash/private-fs.d.ts.map +1 -1
  226. package/lib/stash/private-fs.js +30 -8
  227. package/lib/stash/private-fs.js.map +1 -1
  228. package/lib/stash/schema.d.ts +3 -6
  229. package/lib/stash/schema.d.ts.map +1 -1
  230. package/lib/stash/schema.js +11 -9
  231. package/lib/stash/schema.js.map +1 -1
  232. package/lib/stash/store.d.ts +9 -40
  233. package/lib/stash/store.d.ts.map +1 -1
  234. package/lib/stash/store.js +26 -24
  235. package/lib/stash/store.js.map +1 -1
  236. package/lib/stash.d.ts +7 -11
  237. package/lib/stash.d.ts.map +1 -1
  238. package/lib/stash.js +18 -11
  239. package/lib/stash.js.map +1 -1
  240. package/lib/subagents.d.ts +9 -9
  241. package/lib/subagents.d.ts.map +1 -1
  242. package/lib/subagents.js +19 -18
  243. package/lib/subagents.js.map +1 -1
  244. package/lib/surface/appearance-preferences.d.ts.map +1 -1
  245. package/lib/surface/appearance-preferences.js +7 -0
  246. package/lib/surface/appearance-preferences.js.map +1 -1
  247. package/lib/surface/appearance.d.ts.map +1 -1
  248. package/lib/surface/appearance.js +7 -2
  249. package/lib/surface/appearance.js.map +1 -1
  250. package/lib/surface/background-work.d.ts +2 -0
  251. package/lib/surface/background-work.d.ts.map +1 -1
  252. package/lib/surface/background-work.js +45 -36
  253. package/lib/surface/background-work.js.map +1 -1
  254. package/lib/surface/commands.d.ts.map +1 -1
  255. package/lib/surface/commands.js +17 -9
  256. package/lib/surface/commands.js.map +1 -1
  257. package/lib/surface/modal-input.d.ts +3 -0
  258. package/lib/surface/modal-input.d.ts.map +1 -1
  259. package/lib/surface/modal-input.js +4 -1
  260. package/lib/surface/modal-input.js.map +1 -1
  261. package/lib/surface/model-choice.d.ts.map +1 -1
  262. package/lib/surface/model-choice.js +10 -8
  263. package/lib/surface/model-choice.js.map +1 -1
  264. package/lib/surface/plugin-actions.d.ts.map +1 -1
  265. package/lib/surface/plugin-actions.js +4 -0
  266. package/lib/surface/plugin-actions.js.map +1 -1
  267. package/lib/surface/preset-choice.d.ts.map +1 -1
  268. package/lib/surface/preset-choice.js +15 -17
  269. package/lib/surface/preset-choice.js.map +1 -1
  270. package/lib/surface/prompt-input.js +1 -1
  271. package/lib/surface/prompt-input.js.map +1 -1
  272. package/lib/surface/prompt-memory.d.ts +7 -6
  273. package/lib/surface/prompt-memory.d.ts.map +1 -1
  274. package/lib/surface/prompt-memory.js +3 -3
  275. package/lib/surface/session-lifecycle.d.ts +7 -1
  276. package/lib/surface/session-lifecycle.d.ts.map +1 -1
  277. package/lib/surface/session-lifecycle.js +17 -12
  278. package/lib/surface/session-lifecycle.js.map +1 -1
  279. package/lib/surface/session-picker.js +1 -1
  280. package/lib/surface/session-picker.js.map +1 -1
  281. package/lib/surface/session-view.d.ts +1 -1
  282. package/lib/surface/session-view.d.ts.map +1 -1
  283. package/lib/surface/session-view.js +4 -5
  284. package/lib/surface/session-view.js.map +1 -1
  285. package/lib/surface/staged-turns.d.ts.map +1 -1
  286. package/lib/surface/staged-turns.js +8 -4
  287. package/lib/surface/staged-turns.js.map +1 -1
  288. package/lib/surface/terminal-lifecycle.d.ts +1 -1
  289. package/lib/surface/terminal-lifecycle.d.ts.map +1 -1
  290. package/lib/surface/terminal-lifecycle.js +8 -5
  291. package/lib/surface/terminal-lifecycle.js.map +1 -1
  292. package/lib/terminal/bell.d.ts +0 -2
  293. package/lib/terminal/bell.d.ts.map +1 -1
  294. package/lib/terminal/bell.js +2 -1
  295. package/lib/terminal/bell.js.map +1 -1
  296. package/lib/terminal/clipboard.d.ts +4 -4
  297. package/lib/terminal/clipboard.js +4 -4
  298. package/lib/terminal/external-editor.d.ts +4 -60
  299. package/lib/terminal/external-editor.d.ts.map +1 -1
  300. package/lib/terminal/external-editor.js +28 -40
  301. package/lib/terminal/external-editor.js.map +1 -1
  302. package/lib/terminal/host-writes.d.ts +7 -18
  303. package/lib/terminal/host-writes.d.ts.map +1 -1
  304. package/lib/terminal/host-writes.js +9 -14
  305. package/lib/terminal/host-writes.js.map +1 -1
  306. package/lib/terminal/input.d.ts +6 -0
  307. package/lib/terminal/input.d.ts.map +1 -0
  308. package/lib/terminal/input.js +15 -0
  309. package/lib/terminal/input.js.map +1 -0
  310. package/lib/terminal/restore.d.ts +2 -1
  311. package/lib/terminal/restore.d.ts.map +1 -1
  312. package/lib/terminal/signals.d.ts +2 -1
  313. package/lib/terminal/signals.d.ts.map +1 -1
  314. package/lib/terminal/signals.js +1 -1
  315. package/lib/terminal/signals.js.map +1 -1
  316. package/lib/terminal/title.d.ts +1 -11
  317. package/lib/terminal/title.d.ts.map +1 -1
  318. package/lib/terminal/title.js +5 -4
  319. package/lib/terminal/title.js.map +1 -1
  320. package/lib/terminal/warning-screen.d.ts +2 -0
  321. package/lib/terminal/warning-screen.d.ts.map +1 -1
  322. package/lib/terminal/warning-screen.js +21 -3
  323. package/lib/terminal/warning-screen.js.map +1 -1
  324. package/lib/terminal-text/scan.d.ts +4 -5
  325. package/lib/terminal-text/scan.d.ts.map +1 -1
  326. package/lib/terminal-text/scan.js +16 -9
  327. package/lib/terminal-text/scan.js.map +1 -1
  328. package/lib/terminal-text/sgr.d.ts +4 -3
  329. package/lib/terminal-text/sgr.d.ts.map +1 -1
  330. package/lib/terminal-text/sgr.js +9 -14
  331. package/lib/terminal-text/sgr.js.map +1 -1
  332. package/lib/terminal-text.d.ts +7 -12
  333. package/lib/terminal-text.d.ts.map +1 -1
  334. package/lib/terminal-text.js +31 -28
  335. package/lib/terminal-text.js.map +1 -1
  336. package/lib/text.d.ts +8 -14
  337. package/lib/text.d.ts.map +1 -1
  338. package/lib/text.js +14 -15
  339. package/lib/text.js.map +1 -1
  340. package/lib/theme-capability.d.ts +3 -15
  341. package/lib/theme-capability.d.ts.map +1 -1
  342. package/lib/theme-capability.js +18 -15
  343. package/lib/theme-capability.js.map +1 -1
  344. package/lib/theme-defaults.d.ts +3 -57
  345. package/lib/theme-defaults.d.ts.map +1 -1
  346. package/lib/theme-defaults.js +25 -14
  347. package/lib/theme-defaults.js.map +1 -1
  348. package/lib/theme-files.d.ts +16 -32
  349. package/lib/theme-files.d.ts.map +1 -1
  350. package/lib/theme-files.js +43 -27
  351. package/lib/theme-files.js.map +1 -1
  352. package/lib/theme-resolver.d.ts +3 -3
  353. package/lib/theme-resolver.d.ts.map +1 -1
  354. package/lib/theme-resolver.js +9 -6
  355. package/lib/theme-resolver.js.map +1 -1
  356. package/lib/theme-schema.d.ts +7 -42
  357. package/lib/theme-schema.d.ts.map +1 -1
  358. package/lib/theme-schema.js +9 -11
  359. package/lib/theme-schema.js.map +1 -1
  360. package/lib/theme-settings.d.ts +19 -10
  361. package/lib/theme-settings.d.ts.map +1 -1
  362. package/lib/theme-settings.js +23 -17
  363. package/lib/theme-settings.js.map +1 -1
  364. package/lib/theme-tokens.d.ts +6 -12
  365. package/lib/theme-tokens.d.ts.map +1 -1
  366. package/lib/theme-tokens.js +2 -2
  367. package/lib/theme-tokens.js.map +1 -1
  368. package/lib/theme.d.ts +5 -10
  369. package/lib/theme.d.ts.map +1 -1
  370. package/lib/theme.js +11 -18
  371. package/lib/theme.js.map +1 -1
  372. package/lib/todo-guard.d.ts +8 -4
  373. package/lib/todo-guard.d.ts.map +1 -1
  374. package/lib/todo-guard.js +17 -6
  375. package/lib/todo-guard.js.map +1 -1
  376. package/lib/tokens.d.ts +0 -2
  377. package/lib/tokens.d.ts.map +1 -1
  378. package/lib/tokens.js +1 -1
  379. package/lib/tokens.js.map +1 -1
  380. package/lib/tool-display.d.ts +1 -13
  381. package/lib/tool-display.d.ts.map +1 -1
  382. package/lib/tool-display.js +4 -4
  383. package/lib/tool-display.js.map +1 -1
  384. package/lib/transcript/message-content.d.ts.map +1 -1
  385. package/lib/transcript/message-content.js +31 -9
  386. package/lib/transcript/message-content.js.map +1 -1
  387. package/lib/transcript/tool-calls.d.ts +9 -7
  388. package/lib/transcript/tool-calls.d.ts.map +1 -1
  389. package/lib/transcript/tool-calls.js +27 -20
  390. package/lib/transcript/tool-calls.js.map +1 -1
  391. package/lib/transcript.d.ts +10 -18
  392. package/lib/transcript.d.ts.map +1 -1
  393. package/lib/transcript.js +40 -28
  394. package/lib/transcript.js.map +1 -1
  395. package/lib/ui/copy.d.ts +5 -4
  396. package/lib/ui/copy.d.ts.map +1 -1
  397. package/lib/ui/copy.js +9 -6
  398. package/lib/ui/copy.js.map +1 -1
  399. package/lib/ui/diff.d.ts +0 -30
  400. package/lib/ui/diff.d.ts.map +1 -1
  401. package/lib/ui/diff.js +16 -9
  402. package/lib/ui/diff.js.map +1 -1
  403. package/lib/ui/dock.d.ts +4 -10
  404. package/lib/ui/dock.d.ts.map +1 -1
  405. package/lib/ui/dock.js +10 -14
  406. package/lib/ui/dock.js.map +1 -1
  407. package/lib/ui/editor.d.ts +4 -3
  408. package/lib/ui/editor.d.ts.map +1 -1
  409. package/lib/ui/editor.js +2 -2
  410. package/lib/ui/editor.js.map +1 -1
  411. package/lib/ui/frame.d.ts +4 -12
  412. package/lib/ui/frame.d.ts.map +1 -1
  413. package/lib/ui/frame.js +6 -6
  414. package/lib/ui/frame.js.map +1 -1
  415. package/lib/ui/gap.d.ts +0 -4
  416. package/lib/ui/gap.d.ts.map +1 -1
  417. package/lib/ui/gap.js +4 -3
  418. package/lib/ui/gap.js.map +1 -1
  419. package/lib/ui/gate-input.d.ts +3 -3
  420. package/lib/ui/gate-input.d.ts.map +1 -1
  421. package/lib/ui/gate-input.js +9 -9
  422. package/lib/ui/gate-input.js.map +1 -1
  423. package/lib/ui/layout.d.ts +1 -8
  424. package/lib/ui/layout.d.ts.map +1 -1
  425. package/lib/ui/layout.js +5 -3
  426. package/lib/ui/layout.js.map +1 -1
  427. package/lib/ui/markdown.d.ts +3 -5
  428. package/lib/ui/markdown.d.ts.map +1 -1
  429. package/lib/ui/markdown.js +18 -7
  430. package/lib/ui/markdown.js.map +1 -1
  431. package/lib/ui/mermaid.d.ts +0 -11
  432. package/lib/ui/mermaid.d.ts.map +1 -1
  433. package/lib/ui/mermaid.js +32 -17
  434. package/lib/ui/mermaid.js.map +1 -1
  435. package/lib/ui/picker-card.d.ts +4 -8
  436. package/lib/ui/picker-card.d.ts.map +1 -1
  437. package/lib/ui/picker-card.js +17 -15
  438. package/lib/ui/picker-card.js.map +1 -1
  439. package/lib/ui/picker.d.ts +10 -17
  440. package/lib/ui/picker.d.ts.map +1 -1
  441. package/lib/ui/picker.js +14 -8
  442. package/lib/ui/picker.js.map +1 -1
  443. package/lib/ui/stash-picker.d.ts +1 -10
  444. package/lib/ui/stash-picker.d.ts.map +1 -1
  445. package/lib/ui/stash-picker.js +4 -4
  446. package/lib/ui/stash-picker.js.map +1 -1
  447. package/lib/ui/status.d.ts +2 -19
  448. package/lib/ui/status.d.ts.map +1 -1
  449. package/lib/ui/status.js +15 -17
  450. package/lib/ui/status.js.map +1 -1
  451. package/lib/ui/view/document.d.ts +4 -1
  452. package/lib/ui/view/document.d.ts.map +1 -1
  453. package/lib/ui/view/document.js +15 -6
  454. package/lib/ui/view/document.js.map +1 -1
  455. package/lib/ui/view/gate-card.d.ts +2 -0
  456. package/lib/ui/view/gate-card.d.ts.map +1 -1
  457. package/lib/ui/view/gate-card.js +12 -10
  458. package/lib/ui/view/gate-card.js.map +1 -1
  459. package/lib/ui/view/tool-card.d.ts +7 -4
  460. package/lib/ui/view/tool-card.d.ts.map +1 -1
  461. package/lib/ui/view/tool-card.js +12 -17
  462. package/lib/ui/view/tool-card.js.map +1 -1
  463. package/lib/ui/view/transcript-message.d.ts +7 -7
  464. package/lib/ui/view/transcript-message.d.ts.map +1 -1
  465. package/lib/ui/view/transcript-message.js +19 -10
  466. package/lib/ui/view/transcript-message.js.map +1 -1
  467. package/lib/ui/view.d.ts +8 -8
  468. package/lib/ui/view.d.ts.map +1 -1
  469. package/lib/ui/view.js +11 -13
  470. package/lib/ui/view.js.map +1 -1
  471. package/lib/work.d.ts +13 -10
  472. package/lib/work.d.ts.map +1 -1
  473. package/lib/work.js +30 -8
  474. package/lib/work.js.map +1 -1
  475. package/package.json +11 -7
  476. package/presets/cordis.patch.yml +1 -0
  477. package/presets/minimal.patch.yml +1 -0
  478. package/presets/ptc.patch.yml +1 -0
  479. package/presets/standard.patch.yml +1 -0
  480. package/themes/deepseek-blue.yaml +38 -51
  481. package/themes/marine-static.yaml +27 -35
  482. package/themes/pine-slope.yaml +13 -11
  483. package/themes/polar-drift.yaml +6 -0
  484. package/themes/violet-orbit.yaml +14 -18
  485. package/themes/wine-thicket.yaml +13 -13
package/lib/transcript.js CHANGED
@@ -1,15 +1,16 @@
1
1
  import { injectionSummary } from "./injection.js";
2
+ import { describeDuration } from "./jobs.js";
2
3
  import { sliceGraphemes, tailGraphemes } from "./text.js";
3
4
  import { countTokens } from "./tokens.js";
4
5
  import { reasoningTextsOf, textOfContent } from "./transcript/message-content.js";
5
6
  import { ToolCallFold } from "./transcript/tool-calls.js";
6
7
  /** Reasoning kept per settled block, so one runaway thought cannot grow the transcript without bound. */
7
- export const REASONING_CHAR_LIMIT = 20_000;
8
+ const REASONING_CHAR_LIMIT = 20_000;
8
9
  /**
9
10
  * How far a live thought may grow past that budget before its head is dropped.
10
11
  *
11
- * The slice itself is linear, so a burst of slack makes it happen once per
12
- * thought rather than on every delta that crosses the limit.
12
+ * The slice itself is linear, so a burst of slack amortizes it across deltas
13
+ * rather than slicing on every delta that crosses the retained budget.
13
14
  */
14
15
  const LIVE_THOUGHT_SLACK = 2;
15
16
  /** The token count with its noun, because "1 tokens" reads as a bug. */
@@ -17,12 +18,17 @@ function describeTokens(text) {
17
18
  const tokens = countTokens(text);
18
19
  return `${tokens} token${tokens === 1 ? '' : 's'}`;
19
20
  }
21
+ /** Result rewrites preserve execution history, so their event type and operation distinguish context changes from completions. */
22
+ const TOOL_RESULT_EVENT = 'tool/result';
23
+ const SURFACE_REPLACEMENT = 'replace';
20
24
  function asRecord(value) {
21
25
  return typeof value === 'object' && value !== null ? value : undefined;
22
26
  }
27
+ /** Keep injected or unknown-source context from being attributed to the reader as a prompt. */
23
28
  function sourceKind(data) {
24
29
  return asRecord(data.source)?.kind === 'user' ? 'user' : 'plugin';
25
30
  }
31
+ /** Prefer readable failure text, then a code; leave unknown shapes to the caller's fallback instead of dumping objects. */
26
32
  function messageOf(value) {
27
33
  const record = asRecord(value);
28
34
  if (record === undefined)
@@ -37,14 +43,13 @@ function messageOf(value) {
37
43
  * Fold durable session events into readable rows, and hold the in-flight
38
44
  * assistant text and reasoning apart from them.
39
45
  *
40
- * Durable events own the transcript: the live stream is decoration that a
41
- * repaint or a resume can drop without changing what the reader sees. Tool
46
+ * Keep transient stream state apart from durable rows so in-flight output
47
+ * can be cleared at turn boundaries without discarding settled history. Tool
42
48
  * rows come from the tool's own render intent, so the fold never learns a tool
43
49
  * name; the bookkeeping that a tool row's request, dispatch, and result share
44
50
  * lives in the call fold this model routes those events to.
45
51
  */
46
52
  export class TranscriptModel {
47
- clock;
48
53
  settled = [];
49
54
  contentRevision = 0;
50
55
  live = '';
@@ -67,15 +72,9 @@ export class TranscriptModel {
67
72
  liveReasoningId;
68
73
  /** The call-to-row bookkeeping tool events share, told the clock and the rows this model holds. */
69
74
  calls;
70
- constructor(presenter,
71
- /**
72
- * Clock for "how long has this been thinking or running"; injected so a test
73
- * can pin it and reachable through {@link now} so a renderer keys its rows
74
- * to the same one.
75
- */
76
- clock = () => Date.now()) {
77
- this.clock = clock;
78
- this.calls = new ToolCallFold(presenter, clock, index => this.cardAt(index));
75
+ constructor(presenter) {
76
+ // Tool calls and renderer cache keys share the model's duration owner.
77
+ this.calls = new ToolCallFold(presenter, () => this.now(), index => this.cardAt(index));
79
78
  }
80
79
  /**
81
80
  * The clock every duration on a row is measured with.
@@ -85,7 +84,7 @@ export class TranscriptModel {
85
84
  * only way for the number on screen and the cache key to agree.
86
85
  */
87
86
  now() {
88
- return this.clock();
87
+ return Date.now();
89
88
  }
90
89
  /** Renderers retain a document until its folded content changes, independent of keyboard frames. */
91
90
  get revision() {
@@ -95,13 +94,13 @@ export class TranscriptModel {
95
94
  entries() {
96
95
  const entries = [...this.settled];
97
96
  if (this.liveReasoning !== '') {
98
- const ranFor = this.reasoningStartedAt === undefined ? undefined : this.clock() - this.reasoningStartedAt;
97
+ const ranFor = this.reasoningStartedAt === undefined ? undefined : this.now() - this.reasoningStartedAt;
99
98
  entries.push({
100
99
  kind: 'reasoning',
101
100
  // The live row and the row it settles into share an id, so a click made
102
101
  // while the model is still thinking survives the thought landing.
103
102
  id: this.liveReasoningId ?? '',
104
- summary: `reasoning · ${describeTokens(this.liveReasoning)}${ranFor === undefined ? '' : ` · ${Math.max(1, Math.round(ranFor / 1000))}s`} · streaming`,
103
+ summary: `reasoning · ${describeTokens(this.liveReasoning)}${ranFor === undefined ? '' : ` · ${describeDuration(ranFor)}`} · streaming`,
105
104
  body: this.liveReasoning,
106
105
  live: true,
107
106
  });
@@ -130,6 +129,10 @@ export class TranscriptModel {
130
129
  liveCall(callId) {
131
130
  return this.calls.liveCall(callId);
132
131
  }
132
+ /** A viewed child can own a visible clock without owning the driven turn. */
133
+ hasLiveTiming() {
134
+ return this.liveReasoning !== '' || this.calls.hasLiveCalls();
135
+ }
133
136
  reset() {
134
137
  this.contentRevision++;
135
138
  this.settled.length = 0;
@@ -142,7 +145,7 @@ export class TranscriptModel {
142
145
  this.reasoningStartedAt = undefined;
143
146
  this.reasoningPaintedThisStep = false;
144
147
  }
145
- /** Append a surface-local line that is not part of the durable conversation. */
148
+ /** Keep local command feedback visible without recording it as conversation for the agent or a later resume. */
146
149
  notice(text) {
147
150
  this.append({ kind: 'notice', text });
148
151
  }
@@ -166,13 +169,14 @@ export class TranscriptModel {
166
169
  if (typeof record.text !== 'string')
167
170
  return;
168
171
  this.contentRevision++;
169
- this.reasoningStartedAt ??= this.clock();
172
+ this.reasoningStartedAt ??= this.now();
170
173
  this.liveReasoningId ??= String(++this.thoughtSeq);
171
174
  this.liveReasoning += record.text;
172
- // A live thought is not bounded until the block it belongs to ends, and
173
- // every frame re-wraps what this holds: past a burst of slack the head is
174
- // dropped in one step, so a runaway thought costs a bounded wrap per frame
175
- // instead of a growing one. The recorded text, not this, is what settles.
175
+ // Keep recent thought text visible as new deltas arrive, rather than
176
+ // spending the bounded live preview on an opening that no longer changes.
177
+ // Limit repeated wrapping cost by trimming after a burst of slack.
178
+ // Streamed thoughts settle from this retained buffer; the recorded
179
+ // reasoning copy is suppressed once this step has painted a thought.
176
180
  if (this.liveReasoning.length > REASONING_CHAR_LIMIT * LIVE_THOUGHT_SLACK) {
177
181
  this.liveReasoning = tailGraphemes(this.liveReasoning, REASONING_CHAR_LIMIT);
178
182
  }
@@ -220,7 +224,10 @@ export class TranscriptModel {
220
224
  * produced, so reading order still matches the order the model thought in.
221
225
  */
222
226
  paintReasoning(text, ranFor) {
223
- const timing = ranFor === undefined ? '' : ` · ${Math.max(1, Math.round(ranFor / 1000))}s`;
227
+ const timing = ranFor === undefined ? '' : ` · ${describeDuration(ranFor)}`;
228
+ // Keep the beginning for reading a settled thought in order, within the row
229
+ // budget. Streamed thoughts reach here from an already tail-trimmed buffer;
230
+ // settling does not recover their discarded opening.
224
231
  const kept = sliceGraphemes(text, REASONING_CHAR_LIMIT);
225
232
  const cut = kept.length === text.length ? '' : `\n… truncated at ${REASONING_CHAR_LIMIT} chars`;
226
233
  // The live thought keeps the id the stream gave it; a thought only the
@@ -240,7 +247,7 @@ export class TranscriptModel {
240
247
  if (this.liveReasoning === '')
241
248
  return;
242
249
  const text = this.liveReasoning;
243
- const ranFor = this.reasoningStartedAt === undefined ? undefined : this.clock() - this.reasoningStartedAt;
250
+ const ranFor = this.reasoningStartedAt === undefined ? undefined : this.now() - this.reasoningStartedAt;
244
251
  this.liveReasoning = '';
245
252
  this.reasoningStartedAt = undefined;
246
253
  this.paintReasoning(text, ranFor);
@@ -334,11 +341,16 @@ export class TranscriptModel {
334
341
  case 'tool/call':
335
342
  case 'tool/ptc-dispatch-start':
336
343
  case 'tool/ptc-dispatch':
337
- case 'tool/result': {
344
+ case TOOL_RESULT_EVENT: {
345
+ // Pruning replaces model-facing history after its calls settled; rendering those rewrites creates orphan cards.
346
+ if (event.type === TOOL_RESULT_EVENT && asRecord(event.surfaceOp)?.op === SURFACE_REPLACEMENT)
347
+ return;
338
348
  // Tool events are the only rows drawn before they are finished, so they
339
349
  // are folded where that bookkeeping lives and the rows come back here,
340
350
  // where reading order and row indices are owned.
341
- this.commit(this.calls.apply(event.type, data, this.settled.length));
351
+ // Replayed results must measure logged execution, not the speed of this fold.
352
+ const at = typeof event.time === 'number' && Number.isFinite(event.time) && event.time >= 0 ? event.time : undefined;
353
+ this.commit(this.calls.apply(event.type, data, this.settled.length, at));
342
354
  return;
343
355
  }
344
356
  default:
@@ -1 +1 @@
1
- {"version":3,"file":"transcript.js","sourceRoot":"","sources":["../src/transcript.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AACjD,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AACzC,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAA;AACjF,OAAO,EAAE,YAAY,EAA4C,MAAM,4BAA4B,CAAA;AAYnG,yGAAyG;AACzG,MAAM,CAAC,MAAM,oBAAoB,GAAG,MAAM,CAAA;AAE1C;;;;;GAKG;AACH,MAAM,kBAAkB,GAAG,CAAC,CAAA;AAE5B,wEAAwE;AACxE,SAAS,cAAc,CAAC,IAAY;IAClC,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,CAAA;IAChC,OAAO,GAAG,MAAM,SAAS,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAA;AACpD,CAAC;AAcD,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,CAAC,CAAC,CAAE,KAAiC,CAAC,CAAC,CAAC,SAAS,CAAA;AACrG,CAAC;AAED,SAAS,UAAU,CAAC,IAA6B;IAC/C,OAAO,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAA;AACnE,CAAC;AAED,SAAS,SAAS,CAAC,KAAc;IAC/B,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAC9B,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,EAAE,CAAA;IACnC,IAAI,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ;QAAE,OAAO,MAAM,CAAC,OAAO,CAAA;IAC7D,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ;QAAE,OAAO,MAAM,CAAC,IAAI,CAAA;IACvD,OAAO,EAAE,CAAA;AACX,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,OAAO,eAAe;IA+BP;IA9BF,OAAO,GAAsB,EAAE,CAAA;IACxC,eAAe,GAAG,CAAC,CAAA;IACnB,IAAI,GAAG,EAAE,CAAA;IACT,aAAa,GAAG,EAAE,CAAA;IAClB,kBAAkB,CAAoB;IAC9C;;;;;OAKG;IACK,wBAAwB,GAAG,KAAK,CAAA;IACxC;;;;;OAKG;IACK,UAAU,GAAG,CAAC,CAAA;IACd,eAAe,CAAoB;IAC3C,mGAAmG;IAClF,KAAK,CAAc;IAEpC,YACE,SAAyB;IACzB;;;;OAIG;IACc,QAAsB,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE;QAAtC,UAAK,GAAL,KAAK,CAAiC;QAEvD,IAAI,CAAC,KAAK,GAAG,IAAI,YAAY,CAAC,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;IAC9E,CAAC;IAED;;;;;;OAMG;IACH,GAAG;QACD,OAAO,IAAI,CAAC,KAAK,EAAE,CAAA;IACrB,CAAC;IAED,oGAAoG;IACpG,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,eAAe,CAAA;IAC7B,CAAC;IAED,sFAAsF;IACtF,OAAO;QACL,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,CAAA;QACjC,IAAI,IAAI,CAAC,aAAa,KAAK,EAAE,EAAE,CAAC;YAC9B,MAAM,MAAM,GAAG,IAAI,CAAC,kBAAkB,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,kBAAkB,CAAA;YACzG,OAAO,CAAC,IAAI,CAAC;gBACX,IAAI,EAAE,WAAW;gBACjB,wEAAwE;gBACxE,kEAAkE;gBAClE,EAAE,EAAE,IAAI,CAAC,eAAe,IAAI,EAAE;gBAC9B,OAAO,EAAE,eAAe,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,GAAG,cAAc;gBACtJ,IAAI,EAAE,IAAI,CAAC,aAAa;gBACxB,IAAI,EAAE,IAAI;aACX,CAAC,CAAA;QACJ,CAAC;QACD,IAAI,IAAI,CAAC,IAAI,KAAK,EAAE;YAAE,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAA;QAC1E,OAAO,OAAO,CAAA;IAChB,CAAC;IAED;;;;;;OAMG;IACH,YAAY;QACV,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAA;IAC5B,CAAC;IAED;;;;;;OAMG;IACH,QAAQ,CAAC,MAAc;QACrB,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;IACpC,CAAC;IAED,KAAK;QACH,IAAI,CAAC,eAAe,EAAE,CAAA;QACtB,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAA;QACvB,4EAA4E;QAC5E,oEAAoE;QACpE,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAA;QAClB,IAAI,CAAC,IAAI,GAAG,EAAE,CAAA;QACd,IAAI,CAAC,aAAa,GAAG,EAAE,CAAA;QACvB,IAAI,CAAC,eAAe,GAAG,SAAS,CAAA;QAChC,IAAI,CAAC,kBAAkB,GAAG,SAAS,CAAA;QACnC,IAAI,CAAC,wBAAwB,GAAG,KAAK,CAAA;IACvC,CAAC;IAED,gFAAgF;IAChF,MAAM,CAAC,IAAY;QACjB,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAA;IACvC,CAAC;IAED,mFAAmF;IACnF,MAAM,CAAC,IAAY;QACjB,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAA;IACvC,CAAC;IAED,kDAAkD;IAClD,gBAAgB,CAAC,KAAc;QAC7B,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;QAC9B,IAAI,MAAM,KAAK,SAAS;YAAE,OAAM;QAChC,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;YACpB,KAAK,YAAY;gBACf,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,KAAK,EAAE,EAAE,CAAC;oBAC1D,IAAI,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,CAAA;oBACxB,IAAI,CAAC,eAAe,EAAE,CAAA;gBACxB,CAAC;gBACD,OAAM;YACR,KAAK,iBAAiB;gBACpB,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ;oBAAE,OAAM;gBAC3C,IAAI,CAAC,eAAe,EAAE,CAAA;gBACtB,IAAI,CAAC,kBAAkB,KAAK,IAAI,CAAC,KAAK,EAAE,CAAA;gBACxC,IAAI,CAAC,eAAe,KAAK,MAAM,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,CAAA;gBAClD,IAAI,CAAC,aAAa,IAAI,MAAM,CAAC,IAAI,CAAA;gBACjC,wEAAwE;gBACxE,0EAA0E;gBAC1E,2EAA2E;gBAC3E,0EAA0E;gBAC1E,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,oBAAoB,GAAG,kBAAkB,EAAE,CAAC;oBAC1E,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC,IAAI,CAAC,aAAa,EAAE,oBAAoB,CAAC,CAAA;gBAC9E,CAAC;gBACD,OAAM;YACR,KAAK,WAAW,CAAC,CAAC,CAAC;gBACjB,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;gBACpC,0EAA0E;gBAC1E,0EAA0E;gBAC1E,uDAAuD;gBACvD,IAAI,KAAK,EAAE,IAAI,KAAK,WAAW;oBAAE,IAAI,CAAC,eAAe,EAAE,CAAA;gBACvD,OAAM;YACR,CAAC;YACD;gBACE,OAAM;QACV,CAAC;IACH,CAAC;IAED,2FAA2F;IACnF,aAAa,CAAC,MAA+B;QACnD,MAAM,IAAI,GAAG,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAA;QACxE,IAAI,IAAI,KAAK,WAAW;YAAE,OAAM;QAChC,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;YACrB,MAAM,OAAO,GAAG,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;YACvC,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,gBAAgB,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAA;YAC1G,OAAM;QACR,CAAC;QACD,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;YACrC,MAAM,EAAE,GAAG,OAAO,KAAK,EAAE,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAA;YAChE,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,iBAAiB,EAAE,GAAG,EAAE,CAAC,CAAA;YAC7D,OAAM;QACR,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,eAAe,IAAI,EAAE,EAAE,CAAC,CAAA;IAC9D,CAAC;IAED,8EAA8E;IAC9E,WAAW,CAAC,KAAc;QACxB,MAAM,IAAI,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;QACtE,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA;IACxF,CAAC;IAED;;;;;OAKG;IACK,cAAc,CAAC,IAAY,EAAE,MAA0B;QAC7D,MAAM,MAAM,GAAG,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,GAAG,CAAA;QAC1F,MAAM,IAAI,GAAG,cAAc,CAAC,IAAI,EAAE,oBAAoB,CAAC,CAAA;QACvD,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,oBAAoB,oBAAoB,QAAQ,CAAA;QAC/F,uEAAuE;QACvE,+CAA+C;QAC/C,MAAM,EAAE,GAAG,IAAI,CAAC,eAAe,IAAI,MAAM,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,CAAA;QAC5D,IAAI,CAAC,eAAe,GAAG,SAAS,CAAA;QAChC,IAAI,CAAC,MAAM,CAAC;YACV,IAAI,EAAE,WAAW;YACjB,EAAE;YACF,OAAO,EAAE,eAAe,cAAc,CAAC,IAAI,CAAC,GAAG,MAAM,EAAE;YACvD,IAAI,EAAE,IAAI,GAAG,GAAG;YAChB,IAAI,EAAE,KAAK;SACZ,CAAC,CAAA;IACJ,CAAC;IAED,kEAAkE;IAC1D,eAAe;QACrB,IAAI,IAAI,CAAC,aAAa,KAAK,EAAE;YAAE,OAAM;QACrC,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,CAAA;QAC/B,MAAM,MAAM,GAAG,IAAI,CAAC,kBAAkB,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,kBAAkB,CAAA;QACzG,IAAI,CAAC,aAAa,GAAG,EAAE,CAAA;QACvB,IAAI,CAAC,kBAAkB,GAAG,SAAS,CAAA;QACnC,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;QACjC,4EAA4E;QAC5E,kDAAkD;QAClD,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAA;IACtC,CAAC;IAED,KAAK,CAAC,KAAoB;QACxB,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAA;QACvC,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;YACnB,KAAK,YAAY,CAAC,CAAC,CAAC;gBAClB,0EAA0E;gBAC1E,uEAAuE;gBACvE,2EAA2E;gBAC3E,yEAAyE;gBACzE,wDAAwD;gBACxD,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAA;gBAC7B,OAAM;YACR,CAAC;YACD,KAAK,cAAc,CAAC,CAAC,CAAC;gBACpB,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;gBACxC,IAAI,IAAI,KAAK,EAAE;oBAAE,OAAM;gBACvB,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,MAAM;oBACrC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE;oBACxB,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,CAAA;gBAC3D,OAAM;YACR,CAAC;YACD,KAAK,UAAU,CAAC,CAAC,CAAC;gBAChB,IAAI,CAAC,eAAe,EAAE,CAAA;gBACtB,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAA;gBAC/C,uEAAuE;gBACvE,2CAA2C;gBAC3C,IAAI,CAAC,IAAI,GAAG,EAAE,CAAA;gBACd,qEAAqE;gBACrE,qEAAqE;gBACrE,6CAA6C;gBAC7C,IAAI,CAAC,aAAa,GAAG,EAAE,CAAA;gBACvB,IAAI,CAAC,eAAe,GAAG,SAAS,CAAA;gBAChC,IAAI,CAAC,kBAAkB,GAAG,SAAS,CAAA;gBACnC,0EAA0E;gBAC1E,IAAI,CAAC,wBAAwB,GAAG,KAAK,CAAA;gBACrC,OAAM;YACR,CAAC;YACD,KAAK,uBAAuB,CAAC,CAAC,CAAC;gBAC7B,qEAAqE;gBACrE,qDAAqD;gBACrD,MAAM,QAAQ,GAAG,OAAO,IAAI,CAAC,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAA;gBAC7E,IAAI,QAAQ,KAAK,EAAE;oBAAE,IAAI,CAAC,MAAM,CAAC,YAAY,QAAQ,EAAE,CAAC,CAAA;gBACxD,OAAM;YACR,CAAC;YACD,KAAK,kBAAkB,CAAC,CAAC,CAAC;gBACxB,IAAI,CAAC,MAAM,CAAC,6BAA6B,CAAC,CAAA;gBAC1C,OAAM;YACR,CAAC;YACD,KAAK,oBAAoB,CAAC,CAAC,CAAC;gBAC1B,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;gBAC9E,MAAM,MAAM,GAAG,OAAO,IAAI,CAAC,kBAAkB,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,SAAS,CAAA;gBAChG,MAAM,IAAI,GAAG,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,MAAM,UAAU,CAAA;gBAC/D,uEAAuE;gBACvE,wDAAwD;gBACxD,IAAI,CAAC,MAAM,CAAC,aAAa,MAAM,UAAU,IAAI,EAAE,CAAC,CAAA;gBAChD,OAAM;YACR,CAAC;YACD,KAAK,mBAAmB,CAAC,CAAC,CAAC;gBACzB,yEAAyE;gBACzE,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;gBACrE,IAAI,OAAO,KAAK,EAAE;oBAAE,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,mBAAmB,OAAO,EAAE,EAAE,CAAC,CAAA;gBACvF,OAAM;YACR,CAAC;YACD,KAAK,mBAAmB,CAAC,CAAC,CAAC;gBACzB,IAAI,CAAC,eAAe,EAAE,CAAA;gBACtB,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,OAAO,CAAA;gBAC/C,MAAM,IAAI,GAAG,aAAa,CAAC,OAAO,CAAC,CAAA;gBACnC,oEAAoE;gBACpE,qDAAqD;gBACrD,IAAI,CAAC,eAAe,EAAE,CAAA;gBACtB,MAAM,OAAO,GAAG,IAAI,CAAC,wBAAwB,CAAA;gBAC7C,IAAI,CAAC,wBAAwB,GAAG,KAAK,CAAA;gBACrC,IAAI,CAAC,OAAO,EAAE,CAAC;oBACb,KAAK,MAAM,OAAO,IAAI,gBAAgB,CAAC,OAAO,CAAC;wBAAE,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,SAAS,CAAC,CAAA;gBAC1F,CAAC;gBACD,IAAI,CAAC,IAAI,GAAG,EAAE,CAAA;gBACd,IAAI,IAAI,KAAK,EAAE;oBAAE,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAA;gBACzD,OAAM;YACR,CAAC;YACD,KAAK,WAAW,CAAC;YACjB,KAAK,yBAAyB,CAAC;YAC/B,KAAK,mBAAmB,CAAC;YACzB,KAAK,aAAa,CAAC,CAAC,CAAC;gBACnB,wEAAwE;gBACxE,uEAAuE;gBACvE,iDAAiD;gBACjD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAA;gBACpE,OAAM;YACR,CAAC;YACD;gBACE,OAAM;QACV,CAAC;IACH,CAAC;IAED,6FAA6F;IACrF,MAAM,CAAC,KAAsB;QACnC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACxB,IAAI,CAAC,eAAe,EAAE,CAAA;IACxB,CAAC;IAED,mFAAmF;IAC3E,MAAM,CAAC,OAAwB;QACrC,IAAI,CAAC,eAAe,EAAE,CAAA;QACtB,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,OAAO;YAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QACvD,KAAK,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,OAAO,CAAC,YAAY;YAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,CAAA;IAClF,CAAC;IAED,6FAA6F;IACrF,MAAM,CAAC,KAAa;QAC1B,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;QACjC,OAAO,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAA;IAC9E,CAAC;CACF"}
1
+ {"version":3,"file":"transcript.js","sourceRoot":"","sources":["../src/transcript.ts"],"names":[],"mappings":"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"}
package/lib/ui/copy.d.ts CHANGED
@@ -8,10 +8,11 @@ import type { FrameRow } from './frame.ts';
8
8
  * and none of it was asked for, so a copy is read back through the account the
9
9
  * surface kept of its own drawing — a row it recognises gives up its text, a row
10
10
  * that is frame alone is dropped, and a line it cannot place is handed back
11
- * exactly as the terminal gave it. Copying is no place to be clever: the frame is
12
- * only ever removed, never rewritten, so the worst a copy can lose is the shape
13
- * the reader was trying to get rid of — and a selection that was nothing but frame
14
- * comes back as it read, because a copy is never emptied.
11
+ * exactly as the terminal gave it. The row account supplies frame offsets, but
12
+ * copied text carries no row identity: identical rows with different framing
13
+ * can be interpreted as the first match, so text preservation is not guaranteed
14
+ * for ambiguous selections. If every selected row is discarded, the original
15
+ * selection comes back to avoid clearing the clipboard for frame-only copies.
15
16
  */
16
17
  export declare function cleanCopied(text: string, rows: readonly FrameRow[]): string;
17
18
  //# sourceMappingURL=copy.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"copy.d.ts","sourceRoot":"","sources":["../../src/ui/copy.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAE1C;;;;;;;;;;;;;GAaG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,QAAQ,EAAE,GAAG,MAAM,CAc3E"}
1
+ {"version":3,"file":"copy.d.ts","sourceRoot":"","sources":["../../src/ui/copy.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAE1C;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,QAAQ,EAAE,GAAG,MAAM,CAc3E"}
package/lib/ui/copy.js CHANGED
@@ -8,10 +8,11 @@ import { sliceByColumn, visibleWidth } from '@earendil-works/pi-tui';
8
8
  * and none of it was asked for, so a copy is read back through the account the
9
9
  * surface kept of its own drawing — a row it recognises gives up its text, a row
10
10
  * that is frame alone is dropped, and a line it cannot place is handed back
11
- * exactly as the terminal gave it. Copying is no place to be clever: the frame is
12
- * only ever removed, never rewritten, so the worst a copy can lose is the shape
13
- * the reader was trying to get rid of — and a selection that was nothing but frame
14
- * comes back as it read, because a copy is never emptied.
11
+ * exactly as the terminal gave it. The row account supplies frame offsets, but
12
+ * copied text carries no row identity: identical rows with different framing
13
+ * can be interpreted as the first match, so text preservation is not guaranteed
14
+ * for ambiguous selections. If every selected row is discarded, the original
15
+ * selection comes back to avoid clearing the clipboard for frame-only copies.
15
16
  */
16
17
  export function cleanCopied(text, rows) {
17
18
  if (text === '' || rows.length === 0)
@@ -86,8 +87,10 @@ function readLine(line, rows, whole) {
86
87
  return sliceByColumn(own, from - frame.lead, to - from, true).trimEnd();
87
88
  }
88
89
  /**
89
- * The row a copied line came from: the row that reads exactly as the line does,
90
- * or else the one row holding it as a fragment.
90
+ * Copied text carries no source coordinates, so frame cleanup relies on text
91
+ * matches rather than a verified selection origin. Matching a complete row
92
+ * avoids interpreting it as a fragment of another; collisions still use the
93
+ * first match and can remove text under the wrong frame interpretation.
91
94
  */
92
95
  function locate(line, rows, whole) {
93
96
  const exact = whole.get(line);
@@ -1 +1 @@
1
- {"version":3,"file":"copy.js","sourceRoot":"","sources":["../../src/ui/copy.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"copy.js","sourceRoot":"","sources":["../../src/ui/copy.ts"],"names":[],"mappings":"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"}
package/lib/ui/diff.d.ts CHANGED
@@ -1,28 +1,4 @@
1
1
  import type { TuiToken } from '../theme-tokens.ts';
2
- /**
3
- * The fence languages that name a unified diff.
4
- *
5
- * \`patch\` is git's own name for the format. Every other language keeps the
6
- * library's plain code path, because guessing from the +/- signs would recolour a
7
- * diff-shaped fragment of some other text as a change it is not.
8
- */
9
- export declare const DIFF_FENCE_LANGUAGES: readonly ["diff", "patch"];
10
- /**
11
- * How much text two paired rows must share before their difference is an edit.
12
- *
13
- * Below this the pair is a replacement that merely sits next to its old row, and
14
- * banding the middle of both would mark nearly the whole row as changed — the one
15
- * outcome that reads worse than no emphasis at all.
16
- */
17
- export declare const DIFF_MIN_SHARED_GRAPHEMES = 4;
18
- /**
19
- * The longest pair this draws run by run.
20
- *
21
- * A streaming reply asks for the block again on every delta, and cutting a wall
22
- * of text into clusters twice per pair buys nothing a reader can see: past this
23
- * the pair draws whole-row, which is how a replacement looks anyway.
24
- */
25
- export declare const DIFF_EMPHASIS_MAX_GRAPHEMES = 2048;
26
2
  /** How a fenced block draws where it names a language the surface does not draw itself. */
27
3
  export interface FenceLook {
28
4
  readonly style: (token: TuiToken, text: string) => string;
@@ -30,10 +6,6 @@ export interface FenceLook {
30
6
  /** The shade a code row keeps when its language has no drawing of its own. */
31
7
  readonly plain: (line: string) => string;
32
8
  }
33
- /** A look for a block this surface draws itself, where the plain path is never reached. */
34
- export type DiffLook = Omit<FenceLook, 'plain'>;
35
- /** Whether a fence names a unified diff. */
36
- export declare function isDiffFence(lang: string | undefined): boolean;
37
9
  /**
38
10
  * The library's own code-block path: one row per source line in the fence's plain shade.
39
11
  *
@@ -44,6 +16,4 @@ export declare function isDiffFence(lang: string | undefined): boolean;
44
16
  export declare function plainCodeLines(code: string, plain: (line: string) => string): string[];
45
17
  /** Every row of a fence: a diff drawn row by row, or the plain path for any other language. */
46
18
  export declare function codeBlockLines(code: string, lang: string | undefined, look: FenceLook): string[];
47
- /** One fenced diff, row by row, in the diff elements: headers and hunks recede and a changed run is banded. */
48
- export declare function renderDiffBlock(code: string, look: DiffLook): string[];
49
19
  //# sourceMappingURL=diff.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"diff.d.ts","sourceRoot":"","sources":["../../src/ui/diff.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAGlD;;;;;;GAMG;AACH,eAAO,MAAM,oBAAoB,4BAA6B,CAAA;AAE9D;;;;;;GAMG;AACH,eAAO,MAAM,yBAAyB,IAAI,CAAA;AAE1C;;;;;;GAMG;AACH,eAAO,MAAM,2BAA2B,OAAO,CAAA;AAoD/C,2FAA2F;AAC3F,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,KAAK,MAAM,CAAA;IACzD,QAAQ,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,QAAQ,KAAK,OAAO,CAAA;IAC9C,8EAA8E;IAC9E,QAAQ,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAA;CACzC;AAED,2FAA2F;AAC3F,MAAM,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;AAO/C,4CAA4C;AAC5C,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAE7D;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,GAAG,MAAM,EAAE,CAEtF;AAED,+FAA+F;AAC/F,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,SAAS,EAAE,IAAI,EAAE,SAAS,GAAG,MAAM,EAAE,CAEhG;AAsGD,+GAA+G;AAC/G,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,GAAG,MAAM,EAAE,CAWtE"}
1
+ {"version":3,"file":"diff.d.ts","sourceRoot":"","sources":["../../src/ui/diff.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAkFlD,2FAA2F;AAC3F,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,KAAK,MAAM,CAAA;IACzD,QAAQ,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,QAAQ,KAAK,OAAO,CAAA;IAC9C,8EAA8E;IAC9E,QAAQ,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAA;CACzC;AAeD;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,GAAG,MAAM,EAAE,CAEtF;AAED,+FAA+F;AAC/F,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,SAAS,EAAE,IAAI,EAAE,SAAS,GAAG,MAAM,EAAE,CAEhG"}
package/lib/ui/diff.js CHANGED
@@ -6,7 +6,7 @@ import { splitGraphemes } from "../text.js";
6
6
  * library's plain code path, because guessing from the +/- signs would recolour a
7
7
  * diff-shaped fragment of some other text as a change it is not.
8
8
  */
9
- export const DIFF_FENCE_LANGUAGES = ['diff', 'patch'];
9
+ const DIFF_FENCE_LANGUAGES = ['diff', 'patch'];
10
10
  /**
11
11
  * How much text two paired rows must share before their difference is an edit.
12
12
  *
@@ -14,7 +14,7 @@ export const DIFF_FENCE_LANGUAGES = ['diff', 'patch'];
14
14
  * banding the middle of both would mark nearly the whole row as changed — the one
15
15
  * outcome that reads worse than no emphasis at all.
16
16
  */
17
- export const DIFF_MIN_SHARED_GRAPHEMES = 4;
17
+ const DIFF_MIN_SHARED_GRAPHEMES = 4;
18
18
  /**
19
19
  * The longest pair this draws run by run.
20
20
  *
@@ -22,7 +22,9 @@ export const DIFF_MIN_SHARED_GRAPHEMES = 4;
22
22
  * of text into clusters twice per pair buys nothing a reader can see: past this
23
23
  * the pair draws whole-row, which is how a replacement looks anyway.
24
24
  */
25
- export const DIFF_EMPHASIS_MAX_GRAPHEMES = 2048;
25
+ const DIFF_EMPHASIS_MAX_GRAPHEMES = 2048;
26
+ /** One excess cluster proves the row needs whole-row drawing without scanning its remaining clusters. */
27
+ const DIFF_EMPHASIS_SCAN_LIMIT = DIFF_EMPHASIS_MAX_GRAPHEMES + 1;
26
28
  /**
27
29
  * File-level scaffolding a unified diff carries around its hunks.
28
30
  *
@@ -66,7 +68,7 @@ function fenceLanguage(lang) {
66
68
  return lang?.trim().split(/\s+/, 1)[0]?.toLowerCase() ?? '';
67
69
  }
68
70
  /** Whether a fence names a unified diff. */
69
- export function isDiffFence(lang) {
71
+ function isDiffFence(lang) {
70
72
  return DIFF_FENCE_LANGUAGES.includes(fenceLanguage(lang));
71
73
  }
72
74
  /**
@@ -104,7 +106,10 @@ function rowKind(line, previous, next, inHunk) {
104
106
  return 'removed';
105
107
  return 'context';
106
108
  }
107
- /** The longest shared head and matching tail of two rows, in clusters. */
109
+ /**
110
+ * A single middle band gives paired rows a cheap emphasis preview during streaming.
111
+ * Only matching edges stay unbanded; interior matches are not a full character alignment.
112
+ */
108
113
  function sharedEdges(before, after) {
109
114
  let head = 0;
110
115
  while (head < before.length && head < after.length && before[head] === after[head])
@@ -138,9 +143,11 @@ function runsFor(clusters, head, tail) {
138
143
  * emoji would otherwise take the band on half of itself.
139
144
  */
140
145
  function pairRuns(removed, added) {
141
- const before = splitGraphemes(removed);
142
- const after = splitGraphemes(added);
143
- if (before.length > DIFF_EMPHASIS_MAX_GRAPHEMES || after.length > DIFF_EMPHASIS_MAX_GRAPHEMES)
146
+ const before = splitGraphemes(removed, DIFF_EMPHASIS_SCAN_LIMIT);
147
+ if (before.length > DIFF_EMPHASIS_MAX_GRAPHEMES)
148
+ return undefined;
149
+ const after = splitGraphemes(added, DIFF_EMPHASIS_SCAN_LIMIT);
150
+ if (after.length > DIFF_EMPHASIS_MAX_GRAPHEMES)
144
151
  return undefined;
145
152
  const { head, tail } = sharedEdges(before, after);
146
153
  if (head + tail < DIFF_MIN_SHARED_GRAPHEMES)
@@ -192,7 +199,7 @@ function emphasisByRow(lines, kinds) {
192
199
  return runs;
193
200
  }
194
201
  /** One fenced diff, row by row, in the diff elements: headers and hunks recede and a changed run is banded. */
195
- export function renderDiffBlock(code, look) {
202
+ function renderDiffBlock(code, look) {
196
203
  const lines = code.split('\n');
197
204
  const kinds = [];
198
205
  let inHunk = false;
@@ -1 +1 @@
1
- {"version":3,"file":"diff.js","sourceRoot":"","sources":["../../src/ui/diff.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAE3C;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,MAAM,EAAE,OAAO,CAAU,CAAA;AAE9D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAA;AAE1C;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,IAAI,CAAA;AAE/C;;;;;GAKG;AACH,MAAM,kBAAkB,GAAG;IACzB,aAAa;IACb,YAAY;IACZ,kBAAkB;IAClB,QAAQ;IACR,gBAAgB;IAChB,oBAAoB;IACpB,WAAW;IACX,WAAW;IACX,mBAAmB;IACnB,sBAAsB;IACtB,cAAc;IACd,YAAY;IACZ,YAAY;IACZ,UAAU;IACV,eAAe;IACf,kBAAkB;IAClB,8BAA8B;CACtB,CAAA;AAKV,2CAA2C;AAC3C,MAAM,SAAS,GAA4C;IACzD,MAAM,EAAE,sBAAsB;IAC9B,IAAI,EAAE,oBAAoB;IAC1B,OAAO,EAAE,uBAAuB;IAChC,KAAK,EAAE,qBAAqB;IAC5B,OAAO,EAAE,uBAAuB;CACjC,CAAA;AAED,qGAAqG;AACrG,MAAM,cAAc,GAAqD;IACvE,KAAK,EAAE,6BAA6B;IACpC,OAAO,EAAE,+BAA+B;CACzC,CAAA;AAmBD,4GAA4G;AAC5G,SAAS,aAAa,CAAC,IAAwB;IAC7C,OAAO,IAAI,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAA;AAC7D,CAAC;AAED,4CAA4C;AAC5C,MAAM,UAAU,WAAW,CAAC,IAAwB;IAClD,OAAQ,oBAA0C,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAA;AAClF,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,cAAc,CAAC,IAAY,EAAE,KAA+B;IAC1E,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAA;AAClD,CAAC;AAED,+FAA+F;AAC/F,MAAM,UAAU,cAAc,CAAC,IAAY,EAAE,IAAwB,EAAE,IAAe;IACpF,OAAO,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAA;AAC3F,CAAC;AAED;;;;;;GAMG;AACH,SAAS,OAAO,CAAC,IAAY,EAAE,QAA4B,EAAE,IAAwB,EAAE,MAAe;IACpG,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,MAAM,CAAA;IACxC,MAAM,YAAY,GAAG,CAAC,MAAM;WACvB,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,UAAU,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC;eAC7D,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,QAAQ,EAAE,UAAU,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,CAAC,CAAA;IAC1E,IAAI,YAAY,IAAI,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAAE,OAAO,QAAQ,CAAA;IAC/F,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,OAAO,CAAA;IACxC,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,SAAS,CAAA;IAC1C,OAAO,SAAS,CAAA;AAClB,CAAC;AAED,0EAA0E;AAC1E,SAAS,WAAW,CAAC,MAAyB,EAAE,KAAwB;IACtE,IAAI,IAAI,GAAG,CAAC,CAAA;IACZ,OAAO,IAAI,GAAG,MAAM,CAAC,MAAM,IAAI,IAAI,GAAG,KAAK,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC;QAAE,IAAI,IAAI,CAAC,CAAA;IAC7F,IAAI,IAAI,GAAG,CAAC,CAAA;IACZ,OACE,IAAI,GAAG,MAAM,CAAC,MAAM,GAAG,IAAI;WACxB,IAAI,GAAG,KAAK,CAAC,MAAM,GAAG,IAAI;WAC1B,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC;QACtE,IAAI,IAAI,CAAC,CAAA;IACX,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAA;AACvB,CAAC;AAED,mGAAmG;AACnG,SAAS,OAAO,CAAC,QAA2B,EAAE,IAAY,EAAE,IAAY;IACtE,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAC7C,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACrE,MAAM,IAAI,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAC9E,MAAM,IAAI,GAAU,EAAE,CAAA;IACtB,IAAI,IAAI,KAAK,EAAE;QAAE,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAA;IAC1D,IAAI,OAAO,KAAK,EAAE;QAAE,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAA;IAC/D,IAAI,IAAI,KAAK,EAAE;QAAE,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAA;IAC1D,OAAO,IAAI,CAAA;AACb,CAAC;AAED;;;;;;GAMG;AACH,SAAS,QAAQ,CAAC,OAAe,EAAE,KAAa;IAC9C,MAAM,MAAM,GAAG,cAAc,CAAC,OAAO,CAAC,CAAA;IACtC,MAAM,KAAK,GAAG,cAAc,CAAC,KAAK,CAAC,CAAA;IACnC,IAAI,MAAM,CAAC,MAAM,GAAG,2BAA2B,IAAI,KAAK,CAAC,MAAM,GAAG,2BAA2B;QAAE,OAAO,SAAS,CAAA;IAC/G,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;IACjD,IAAI,IAAI,GAAG,IAAI,GAAG,yBAAyB;QAAE,OAAO,SAAS,CAAA;IAC7D,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,CAAA;AACpF,CAAC;AAED;;;;;GAKG;AACH,SAAS,OAAO,CAAC,IAAY,EAAE,IAAiB,EAAE,IAAgC,EAAE,IAAc;IAChG,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,CAAA;IAChC,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAA;IACzD,MAAM,QAAQ,GAAG,cAAc,CAAC,IAAI,CAAC,CAAA;IACrC,MAAM,MAAM,GAAG,QAAQ,KAAK,SAAS,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAA;IACrF,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;IACnD,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAC/F,OAAO,GAAG,IAAI,GAAG,OAAO,EAAE,CAAA;AAC5B,CAAC;AAED,iFAAiF;AACjF,SAAS,aAAa,CAAC,KAAwB,EAAE,KAA6B;IAC5E,MAAM,IAAI,GAAG,IAAI,GAAG,EAA0B,CAAA;IAC9C,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,KAAK,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC;QAC5C,IAAI,KAAK,CAAC,EAAE,CAAC,KAAK,SAAS;YAAE,SAAQ;QACrC,6EAA6E;QAC7E,sEAAsE;QACtE,IAAI,UAAU,GAAG,EAAE,CAAA;QACnB,OAAO,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC,KAAK,SAAS;YAAE,UAAU,IAAI,CAAC,CAAA;QAC3D,IAAI,QAAQ,GAAG,UAAU,CAAA;QACzB,OAAO,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,KAAK,OAAO;YAAE,QAAQ,IAAI,CAAC,CAAA;QACrD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,GAAG,EAAE,GAAG,CAAC,EAAE,QAAQ,GAAG,UAAU,CAAC,CAAA;QAClE,KAAK,IAAI,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,KAAK,EAAE,MAAM,IAAI,CAAC,EAAE,CAAC;YACjD,MAAM,MAAM,GAAG,CAAC,KAAK,CAAC,EAAE,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;YAClD,MAAM,KAAK,GAAG,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;YAC7D,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;YACtC,IAAI,MAAM,KAAK,SAAS;gBAAE,SAAQ;YAClC,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,CAAA;YACrC,IAAI,CAAC,GAAG,CAAC,UAAU,GAAG,CAAC,GAAG,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,CAAA;QACjD,CAAC;QACD,EAAE,GAAG,QAAQ,CAAA;IACf,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AAED,+GAA+G;AAC/G,MAAM,UAAU,eAAe,CAAC,IAAY,EAAE,IAAc;IAC1D,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IAC9B,MAAM,KAAK,GAAkB,EAAE,CAAA;IAC/B,IAAI,MAAM,GAAG,KAAK,CAAA;IAClB,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,KAAK,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC;QAC5C,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAA;QAC3E,IAAI,IAAI,KAAK,MAAM;YAAE,MAAM,GAAG,IAAI,CAAA;QAClC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAClB,CAAC;IACD,MAAM,IAAI,GAAG,aAAa,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;IACxC,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,IAAI,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,CAAA;AAC3F,CAAC"}
1
+ {"version":3,"file":"diff.js","sourceRoot":"","sources":["../../src/ui/diff.ts"],"names":[],"mappings":"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"}
package/lib/ui/dock.d.ts CHANGED
@@ -3,8 +3,6 @@ import { type JobSummary } from '../jobs.ts';
3
3
  import { type SubagentRun } from '../subagents.ts';
4
4
  import type { TuiTheme } from '../theme.ts';
5
5
  import type { WorkState } from '../work.ts';
6
- /** Todo rows the dock keeps on screen; the rest become a count. */
7
- export declare const DOCK_TODO_LIMIT = 4;
8
6
  /**
9
7
  * The dock above the editor: what the agent is working on right now.
10
8
  *
@@ -20,10 +18,8 @@ export declare class WorkDock implements Component {
20
18
  private readonly jobs;
21
19
  /** Delegations this session started; also live state. */
22
20
  private readonly subagents;
23
- /** Clock for elapsed times, so a frame can be pinned in a test. */
24
- private readonly now;
25
21
  /** A child opens through the same read-only transcript path as /subagents open. */
26
- private readonly openSubagent?;
22
+ private readonly openSubagent;
27
23
  /** A choice lasts while more than the preview's rows remain live. */
28
24
  private subagentsExpanded;
29
25
  /** Rendered rows delimit the section even when its heading is hidden. */
@@ -34,13 +30,11 @@ export declare class WorkDock implements Component {
34
30
  private openLeadRows;
35
31
  constructor(state: () => WorkState, theme: TuiTheme,
36
32
  /** Live background jobs: process state, not something a resume can replay. */
37
- jobs?: () => readonly JobSummary[],
33
+ jobs: () => readonly JobSummary[],
38
34
  /** Delegations this session started; also live state. */
39
- subagents?: () => readonly SubagentRun[],
40
- /** Clock for elapsed times, so a frame can be pinned in a test. */
41
- now?: () => number,
35
+ subagents: () => readonly SubagentRun[],
42
36
  /** A child opens through the same read-only transcript path as /subagents open. */
43
- openSubagent?: ((id: string) => void) | undefined);
37
+ openSubagent: (id: string) => void);
44
38
  invalidate(): void;
45
39
  /** Text opens its child; other cells in a foldable section control that fold. */
46
40
  handleMouse(event: TuiMouseEvent): TuiMouseEventResult | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"dock.d.ts","sourceRoot":"","sources":["../../src/ui/dock.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,KAAK,SAAS,EAAE,KAAK,aAAa,EAAE,KAAK,mBAAmB,EAAE,MAAM,wBAAwB,CAAA;AACnH,OAAO,EAAuC,KAAK,UAAU,EAAE,MAAM,YAAY,CAAA;AACjF,OAAO,EAAyC,KAAK,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAEzF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAC3C,OAAO,KAAK,EAAa,SAAS,EAAE,MAAM,YAAY,CAAA;AAGtD,mEAAmE;AACnE,eAAO,MAAM,eAAe,IAAI,CAAA;AAkEhC;;;;;;;GAOG;AACH,qBAAa,QAAS,YAAW,SAAS;IAWtC,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,8EAA8E;IAC9E,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,yDAAyD;IACzD,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,mEAAmE;IACnE,OAAO,CAAC,QAAQ,CAAC,GAAG;IACpB,mFAAmF;IACnF,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC;IAnBhC,qEAAqE;IACrE,OAAO,CAAC,iBAAiB,CAAQ;IACjC,yEAAyE;IACzE,OAAO,CAAC,eAAe,CAAiE;IACxF,wEAAwE;IACxE,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAkD;IAChF,2GAA2G;IAC3G,OAAO,CAAC,YAAY,CAAI;gBAGL,KAAK,EAAE,MAAM,SAAS,EACtB,KAAK,EAAE,QAAQ;IAChC,8EAA8E;IAC7D,IAAI,GAAE,MAAM,SAAS,UAAU,EAAa;IAC7D,yDAAyD;IACxC,SAAS,GAAE,MAAM,SAAS,WAAW,EAAa;IACnE,mEAAmE;IAClD,GAAG,GAAE,MAAM,MAAyB;IACrD,mFAAmF;IAClE,YAAY,CAAC,GAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,aAAA;IAGtD,UAAU,IAAI,IAAI;IAIlB,iFAAiF;IACjF,WAAW,CAAC,KAAK,EAAE,aAAa,GAAG,mBAAmB,GAAG,SAAS;IAgBlE;;;;;;OAMG;IACH,OAAO,CAAC,SAAS;IAIjB;;;;;;OAMG;IACH,OAAO,CAAC,WAAW;IAcnB;;;;;;;;OAQG;IACH,OAAO,CAAC,WAAW;IASnB,OAAO,CAAC,SAAS;IAyBjB,OAAO,CAAC,aAAa;IA+BrB,OAAO,CAAC,QAAQ;IAyBhB,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE;CAwChC"}
1
+ {"version":3,"file":"dock.d.ts","sourceRoot":"","sources":["../../src/ui/dock.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,KAAK,SAAS,EAAE,KAAK,aAAa,EAAE,KAAK,mBAAmB,EAAE,MAAM,wBAAwB,CAAA;AACnH,OAAO,EAAuC,KAAK,UAAU,EAAE,MAAM,YAAY,CAAA;AACjF,OAAO,EAAyC,KAAK,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAEzF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAC3C,OAAO,KAAK,EAAa,SAAS,EAAE,MAAM,YAAY,CAAA;AAsEtD;;;;;;;GAOG;AACH,qBAAa,QAAS,YAAW,SAAS;IAWtC,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,8EAA8E;IAC9E,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,yDAAyD;IACzD,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,mFAAmF;IACnF,OAAO,CAAC,QAAQ,CAAC,YAAY;IAjB/B,qEAAqE;IACrE,OAAO,CAAC,iBAAiB,CAAQ;IACjC,yEAAyE;IACzE,OAAO,CAAC,eAAe,CAAiE;IACxF,wEAAwE;IACxE,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAkD;IAChF,2GAA2G;IAC3G,OAAO,CAAC,YAAY,CAAI;gBAGL,KAAK,EAAE,MAAM,SAAS,EACtB,KAAK,EAAE,QAAQ;IAChC,8EAA8E;IAC7D,IAAI,EAAE,MAAM,SAAS,UAAU,EAAE;IAClD,yDAAyD;IACxC,SAAS,EAAE,MAAM,SAAS,WAAW,EAAE;IACxD,mFAAmF;IAClE,YAAY,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI;IAGrD,UAAU,IAAI,IAAI;IAIlB,iFAAiF;IACjF,WAAW,CAAC,KAAK,EAAE,aAAa,GAAG,mBAAmB,GAAG,SAAS;IAelE;;;;;;OAMG;IACH,OAAO,CAAC,SAAS;IAIjB;;;;;;OAMG;IACH,OAAO,CAAC,WAAW;IAcnB;;;;;;;;OAQG;IACH,OAAO,CAAC,WAAW;IASnB,OAAO,CAAC,SAAS;IAyBjB,OAAO,CAAC,aAAa;IA+BrB,OAAO,CAAC,QAAQ;IA2BhB,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE;CAwChC"}
package/lib/ui/dock.js CHANGED
@@ -2,13 +2,13 @@ import { visibleWidth } from '@earendil-works/pi-tui';
2
2
  import { DOCK_JOB_LIMIT, describeJob, isLive } from "../jobs.js";
3
3
  import { DOCK_SUBAGENT_LIMIT, describeSubagent } from "../subagents.js";
4
4
  import { pushGap } from "./gap.js";
5
- /** Todo rows the dock keeps on screen; the rest become a count. */
6
- export const DOCK_TODO_LIMIT = 4;
7
- /** The mark that introduces a dock section, so a literal never lives in a template. */
5
+ /** Bound the todo preview so a growing plan does not consume the conversation; overflow remains counted. */
6
+ const DOCK_TODO_LIMIT = 4;
8
7
  const GOAL_MARK = '◎';
9
8
  const PLAN_MODE_MARK = '⏸';
10
9
  const TODOS_MARK = '☰';
11
10
  const SUBAGENTS_MARK = '⚇';
11
+ /** Make hidden running children discoverable by marking when their preview can expand. */
12
12
  const SUBAGENTS_COLLAPSED_MARK = '▸';
13
13
  const SUBAGENTS_EXPANDED_MARK = '▾';
14
14
  const JOBS_MARK = '⛭';
@@ -58,7 +58,6 @@ export class WorkDock {
58
58
  theme;
59
59
  jobs;
60
60
  subagents;
61
- now;
62
61
  openSubagent;
63
62
  /** A choice lasts while more than the preview's rows remain live. */
64
63
  subagentsExpanded = false;
@@ -70,18 +69,15 @@ export class WorkDock {
70
69
  openLeadRows = 0;
71
70
  constructor(state, theme,
72
71
  /** Live background jobs: process state, not something a resume can replay. */
73
- jobs = () => [],
72
+ jobs,
74
73
  /** Delegations this session started; also live state. */
75
- subagents = () => [],
76
- /** Clock for elapsed times, so a frame can be pinned in a test. */
77
- now = () => Date.now(),
74
+ subagents,
78
75
  /** A child opens through the same read-only transcript path as /subagents open. */
79
76
  openSubagent) {
80
77
  this.state = state;
81
78
  this.theme = theme;
82
79
  this.jobs = jobs;
83
80
  this.subagents = subagents;
84
- this.now = now;
85
81
  this.openSubagent = openSubagent;
86
82
  }
87
83
  invalidate() {
@@ -96,8 +92,6 @@ export class WorkDock {
96
92
  const row = event.y - this.openLeadRows;
97
93
  const text = this.subagentTexts.get(row);
98
94
  if (text !== undefined && event.x >= visibleWidth(SUBAGENT_ROW_INDENT) && event.x < text.endX) {
99
- if (this.openSubagent === undefined)
100
- return undefined;
101
95
  this.openSubagent(text.id);
102
96
  return { handled: true, render: true };
103
97
  }
@@ -193,7 +187,7 @@ export class WorkDock {
193
187
  const start = lines.length;
194
188
  const headingRows = this.theme.visible('dock.subagents.heading') ? 1 : 0;
195
189
  const limit = this.subagentsExpanded ? running.length : DOCK_SUBAGENT_LIMIT;
196
- const now = this.now();
190
+ const now = Date.now();
197
191
  const rows = [];
198
192
  for (const run of running.slice(0, limit)) {
199
193
  if (!this.theme.visible('dock.subagents.running'))
@@ -222,8 +216,10 @@ export class WorkDock {
222
216
  if (live.length === 0)
223
217
  return;
224
218
  this.openBoard(lines);
225
- const ordered = [...live].sort((left, right) => right.startedAt - left.startedAt);
226
- const now = this.now();
219
+ // Give recent starts the limited preview slots so new work appears even while older jobs remain live.
220
+ // Older work stays in the overflow count; this ordering does not rank urgency.
221
+ const ordered = [...live].sort((left, right) => (right.startedAt ?? 0) - (left.startedAt ?? 0));
222
+ const now = Date.now();
227
223
  const rows = [];
228
224
  for (const job of ordered.slice(0, DOCK_JOB_LIMIT)) {
229
225
  if (!this.theme.visible('dock.jobs.running'))