@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/work.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"work.js","sourceRoot":"","sources":["../src/work.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"work.js","sourceRoot":"","sources":["../src/work.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sagmans/dsh-tui",
3
- "version": "0.13.0",
3
+ "version": "0.14.0",
4
4
  "description": "Terminal (CLI TUI) surface for DeepSeek Harness: interactive dsh in a terminal, no browser required",
5
5
  "keywords": [
6
6
  "deepseek-harness",
@@ -82,13 +82,18 @@
82
82
  "scripts": {
83
83
  "build": "tsc -p tsconfig.json",
84
84
  "typecheck": "tsc -p tsconfig.json --noEmit && tsc -p tsconfig.test.json",
85
- "test": "vitest run",
86
- "coverage": "vitest run --coverage",
85
+ "test": "pnpm test:golden && pnpm dogfood",
86
+ "test:golden": "vitest run",
87
+ "dogfood": "pnpm run build && node tools/dogfood.mjs",
88
+ "dogfood:paid": "pnpm run build && node tools/dogfood.mjs --paid",
89
+ "verify": "pnpm typecheck && pnpm test && node tools/pack-smoke.mjs && node tools/harness-matrix.mjs",
90
+ "check:unused": "tsc -p tsconfig.json --noEmit --noUnusedLocals --noUnusedParameters",
91
+ "check:deadcode": "knip --production --no-progress",
92
+ "check:local": "pnpm run check:unused && pnpm run check:deadcode",
87
93
  "test:terminal": "pnpm run build && node tools/terminal-behavior.mjs",
88
- "test:release": "python3 -m unittest discover -s tests/release -p 'test_*.py'",
89
94
  "prepare": "npm run build",
90
95
  "prepack": "npm run build",
91
- "prepublishOnly": "npm run typecheck && npm test",
96
+ "prepublishOnly": "npm run typecheck && npm run test:golden",
92
97
  "drive": "node tools/pty-drive.mjs"
93
98
  },
94
99
  "dependencies": {
@@ -153,7 +158,6 @@
153
158
  "@deepseek-ai/dsh-agent-loop": "0.2.0-rc.2",
154
159
  "@deepseek-ai/dsh-cmdline": "0.2.0-rc.2",
155
160
  "@deepseek-ai/dsh-commands": "0.2.0-rc.2",
156
- "@deepseek-ai/dsh-home-paths": "0.2.0-rc.2",
157
161
  "@deepseek-ai/dsh-llm": "0.2.0-rc.2",
158
162
  "@deepseek-ai/dsh-sandbox": "0.2.0-rc.2",
159
163
  "@deepseek-ai/dsh-scope": "0.2.0-rc.2",
@@ -164,7 +168,7 @@
164
168
  "@deepseek-ai/dsh-user-approval": "0.2.0-rc.2",
165
169
  "@deepseek-ai/dsh-user-questions": "0.2.0-rc.2",
166
170
  "@types/node": "^24.0.0",
167
- "@vitest/coverage-v8": "4.1.11",
171
+ "knip": "6.37.0",
168
172
  "node-pty": "1.1.0",
169
173
  "typescript": "^5.9.0",
170
174
  "vitest": "^4.1.0"
@@ -10,5 +10,6 @@
10
10
  name: '@deepseek-ai/dsh-agent-preset'
11
11
  config:
12
12
  id: cordis
13
+ # Keep picker position aligned with PRESET_FILES, independently of the default mode.
13
14
  order: 4
14
15
  plugins: []
@@ -10,5 +10,6 @@
10
10
  name: '@deepseek-ai/dsh-agent-preset'
11
11
  config:
12
12
  id: minimal
13
+ # Keep picker position aligned with PRESET_FILES, independently of the default mode.
13
14
  order: 3
14
15
  plugins: []
@@ -16,6 +16,7 @@
16
16
  name: '@deepseek-ai/dsh-agent-preset'
17
17
  config:
18
18
  id: ptc
19
+ # Keep picker position aligned with PRESET_FILES, independently of the default mode.
19
20
  order: 2
20
21
  plugins:
21
22
  - id: tool-presentation
@@ -10,5 +10,6 @@
10
10
  name: '@deepseek-ai/dsh-agent-preset'
11
11
  config:
12
12
  id: standard
13
+ # Keep picker position aligned with PRESET_FILES, independently of the default mode.
13
14
  order: 1
14
15
  plugins: []
@@ -1,49 +1,30 @@
1
- # deepseek-blue — the table the surface ships, in the colours DeepSeek draws.
1
+ # deepseek-blue — the shipped blue-accent theme.
2
2
  #
3
- # Every shade here is a step of the product's own design system rather than a
4
- # colour picked for this file, and each palette line names the token it came
5
- # from, so the surface can be re-derived from the product instead of guessed at.
6
- # The steps are the product's dark-theme ones, because a terminal is dark:
3
+ # Palette roles centralize foreground choices so one edit reaches related UI elements.
4
+ # This light-text palette supplies no terminal background; contrast depends on the
5
+ # reader's background and color capabilities, not on a guaranteed dark terminal.
7
6
  #
8
- # default, assistant label-primary neutral-bluish-50 #f9fafb
9
- # muted label-secondary neutral-bluish-300 #cfd3d6
10
- # faint label-tertiary neutral-bluish-400 #adb2b8
11
- # accent brand-text deepseek-400 #679efe
12
- # arg — deepseek-300 #b7c8fe
13
- # warn state-warn amber-500 #f59e0b
14
- # added state-success green-500 #22c55e
15
- # removed state-error red-400 #f25a5a
16
- # user bubble neutral-bluish-850 #2c2c2e (a panel border, not a fill)
7
+ # Palette entries carry shared roles; literal container and diff-emphasis shades
8
+ # keep those treatments separate from foreground accents.
17
9
  #
18
- # The brand itself is deepseek-500 #3964fe, drawn as deepseek-450 #5686fe on a
19
- # dark surface. The accent is one step lighter than either because what it paints
20
- # is text — links, code, headings — and the product keeps its own step for the
21
- # brand as text. That single line is where a reader moves the brand.
22
- #
23
- # Ten palette entries carry the whole theme: every element below names one rather
24
- # than a shade of its own. Three elements name a different entry than the shipped
25
- # table names, and say why where they do.
26
- #
27
- # The semantic shades stay the product's green, red, and amber. Something added
28
- # is green and something removed is red on every surface a reader already uses,
29
- # and a hue that moved with the theme would have to be learned again with each
30
- # one.
10
+ # Green, red and amber separate additions, removals and pending state from the
11
+ # blue accent used for labels and navigation.
31
12
 
32
13
  palette:
33
- default: '#f9fafb' # label-primary, neutral-bluish-50
34
- muted: '#cfd3d6' # label-secondary, neutral-bluish-300
35
- faint: '#adb2b8' # label-tertiary, neutral-bluish-400
36
- accent: '#679efe' # brand-text, deepseek-400
37
- arg: '#b7c8fe' # deepseek-300
38
- warn: '#f59e0b' # state-warn, amber-500
39
- added: '#22c55e' # state-success, green-500
40
- removed: '#f25a5a' # state-error on a dark surface, red-400
41
- user: '#2c2c2e' # the product's bubble fill, neutral-bluish-850: only a panel border names it now
42
- assistant: '#f9fafb' # label-primary, neutral-bluish-50
14
+ default: '#f9fafb'
15
+ muted: '#cfd3d6'
16
+ faint: '#adb2b8'
17
+ accent: '#679efe'
18
+ arg: '#b7c8fe'
19
+ warn: '#f59e0b'
20
+ added: '#22c55e'
21
+ removed: '#f25a5a'
22
+ user: '#2c2c2e'
23
+ assistant: '#f9fafb'
43
24
 
44
25
  tokens:
45
- # A row of the conversation. The product fills this one, but this surface
46
- # already frames it, and a band inside the frame treats one fact twice: it reads
26
+ # A row of the conversation already has a frame; a band inside it
27
+ # treats one fact twice: it reads
47
28
  # as a selected row rather than as what the reader typed.
48
29
  transcript.user: { fg: default }
49
30
  # The sent prompt keeps the brand shade without inheriting editor overrides.
@@ -54,11 +35,12 @@ tokens:
54
35
  transcript.assistant.border: { fg: '#d6c29a' }
55
36
  transcript.notice: { fg: muted }
56
37
  transcript.marker: { fg: muted }
38
+ # Reasoning recedes beneath the reply; tool details below likewise defer to their call labels.
57
39
  transcript.reasoning.summary: { fg: faint, italic: true }
58
40
  transcript.reasoning.body: { fg: faint }
59
41
  transcript.reasoning.hint: { fg: faint, italic: true }
60
42
  # A tool card, drawn in layers: every card, then one kind of card.
61
- # A call is not a warning: the product keeps amber for state, and this label is
43
+ # A call is not a warning: amber is reserved for state here, and this label is
62
44
  # the loudest thing on the row, so it carries the brand instead.
63
45
  tool.title: { fg: accent }
64
46
  tool.glyph: { fg: accent } # follows the label it sits beside
@@ -73,8 +55,8 @@ tokens:
73
55
  tool.hint: { fg: muted }
74
56
  tool.failed.title: { fg: removed }
75
57
  tool.failed.glyph: { fg: removed }
76
- # A call still in flight is state, which is what amber is for here; the failed
77
- # row stays red so the two can never be read as each other.
58
+ # Amber reserves attention for calls still pending rather than completed tool labels.
59
+ # Red distinguishes failure from pending calls; color alone cannot guarantee recognition.
78
60
  tool.running.title: { fg: warn }
79
61
  tool.running.elapsed: { fg: warn }
80
62
  tool.elapsed.done: { fg: muted, italic: true }
@@ -99,7 +81,8 @@ tokens:
99
81
  tool.web.source: { fg: muted }
100
82
  tool.web.truncated: { fg: muted }
101
83
  tool.generic.detail: { fg: muted }
102
- # A reply, which is markdown, and the diagrams in it.
84
+ # Accent marks navigable links, syntax and diagram structure without tinting whole bodies;
85
+ # empty body styles retain resolver defaults, while scaffolding stays secondary.
103
86
  markdown.heading: { fg: accent, bold: true }
104
87
  markdown.link: { fg: accent, underline: true }
105
88
  markdown.linkUrl: { fg: muted }
@@ -116,8 +99,8 @@ tokens:
116
99
  markdown.underline: { underline: true }
117
100
  # A fenced diff: the scaffolding recedes, the rows carry the semantic shades,
118
101
  # and the characters that changed sit on a band of the row's own colour. The
119
- # band is a shade derived from that colour rather than a product token, so it
120
- # stays a literal, and the foreground inherits so a palette move carries both.
102
+ # band stays separate from foreground roles to keep character emphasis independently adjustable;
103
+ # inherited foreground follows palette changes without changing the literal background.
121
104
  markdown.diff.header: { fg: muted }
122
105
  markdown.diff.hunk: { fg: muted }
123
106
  markdown.diff.context: {}
@@ -131,7 +114,8 @@ tokens:
131
114
  markdown.diagram.edgeLabel: { fg: muted }
132
115
  markdown.diagram.title: { fg: accent, bold: true }
133
116
  markdown.diagram.warning: { fg: warn }
134
- # A list drawn over the transcript.
117
+ # Weight keeps current choices distinct from ordinary rows without assigning a selection hue;
118
+ # the picker renderer supplies a cursor as a separate non-color cue.
135
119
  picker.title: { bold: true }
136
120
  picker.glyph: { bold: true }
137
121
  picker.note: { bold: true }
@@ -143,7 +127,8 @@ tokens:
143
127
  picker.hint: { fg: muted }
144
128
  picker.cursor: {}
145
129
  picker.border: { fg: muted }
146
- # A question or an approval, which stops the turn until it is answered.
130
+ # Weight emphasizes the pending decision and current option without requiring a color change.
131
+ # The renderer also supplies a cursor and numbered choices; muted detail is still decision context.
147
132
  gate.title: { bold: true }
148
133
  gate.glyphApproval: { bold: true }
149
134
  gate.glyphQuestion: { bold: true }
@@ -152,7 +137,8 @@ tokens:
152
137
  gate.optionCurrent: { bold: true }
153
138
  gate.cursor: {}
154
139
  gate.hint: { fg: muted }
155
- # The work panel above the editor.
140
+ # Distinct section hues identify each work list at its edge without coloring every row.
141
+ # Muted rows keep entries secondary to headings.
156
142
  dock.goal: { bold: true }
157
143
  dock.planMode: { bold: true }
158
144
  dock.todos.border: { fg: accent }
@@ -168,7 +154,7 @@ tokens:
168
154
  dock.jobs.heading: { bold: true }
169
155
  dock.jobs.running: { fg: muted }
170
156
  dock.jobs.overflow: { fg: muted }
171
- # The footer.
157
+ # Activity text and glyphs distinguish working from ready while both remain secondary footer facts.
172
158
  status.prefix: { fg: accent }
173
159
  status.back: { fg: accent }
174
160
  status.activity.working: { fg: muted }
@@ -184,9 +170,10 @@ tokens:
184
170
  status.cwd: { fg: muted }
185
171
  status.separator: { fg: muted }
186
172
  # The prompt bar.
187
- # The one border in the surface that is not a divider: it holds what the reader
188
- # is writing, which is where the product puts the brand on its send button.
173
+ # Accent frames the active input so it remains distinct from secondary footer facts.
189
174
  editor.border: { fg: accent }
175
+ # Dim queued prompts and ghost suggestions distinguish pending work from text being edited.
176
+ # Completion weight supplements the accent prefix so its current label need not rely on hue.
190
177
  editor.queued: { dim: true, italic: true }
191
178
  editor.queued.more: { fg: muted }
192
179
  editor.ghost: { dim: true }
@@ -1,41 +1,28 @@
1
1
  # marine-static — the shipped table, anchored on the deep teal #041F21.
2
2
  #
3
- # The anchor is a fill weight rather than a text weight: at 1.08:1 against a dark
4
- # terminal it marks the row a picker has selected by its hue and adds almost no
5
- # contrast of its own, which is why the accent is that same hue lifted to where
6
- # text reads. Every neutral is the anchor's hue at a low saturation, so the surface
7
- # reads as one family rather than as grey rows with a teal link on them.
3
+ # The deep teal anchor separates container treatment from the brighter text accent.
4
+ # Shared palette roles preserve the UI hierarchy when a reader adjusts the shades.
5
+ # No background is set here, so contrast depends on the terminal's own background;
6
+ # these foreground values do not guarantee contrast ratios or equal luminance across themes.
8
7
  #
9
- # The shades hold the shipped table's own ladder — each role takes the same share
10
- # of the theme's text luminance (muted 0.63, faint 0.42, arg 0.25, accent 0.57,
11
- # warn 0.61, added 0.56, removed 0.25) — so this theme is dimmer in absolute terms
12
- # and identical in structure to any other, and a reader who knows one knows this
13
- # one. Only the level and the chroma are its own.
14
- #
15
- # This family stands in the same water as polar-drift's cyan, so the accent is held
16
- # well back from the neon: the same hue with far less chroma at a lower level is
17
- # what keeps the two from reading as one theme drawn twice. Green and amber sit far
18
- # from the family and stay where every surface keeps them.
19
- #
20
- # Every element below names a palette entry rather than a shade of its own, so
21
- # the anchor and the accent it lifts to are one line each to move. The three that
22
- # name a literal say why there.
8
+ # Shared roles keep the anchor and text accent independently adjustable;
9
+ # literal container and diff-emphasis shades retain their separate treatments.
23
10
  #
24
11
  # This file is a reference and a layer, not a workspace: it ships inside the
25
12
  # package and a new version replaces it. /theme export marine-static writes a full copy
26
13
  # into your own themes directory to edit.
27
14
 
28
15
  palette:
29
- default: '#adbbbc' # the anchor's hue at 10% saturation: the level every other shade is a share of
30
- muted: '#809a9b' # 0.63 of the text's luminance: labels and scaffolding
31
- faint: '#638184' # 0.42: reasoning, which is meant to recede
32
- accent: '#2e9ca4' # 0.56: the anchor's hue lifted to text weight for headings, links, code, frames
33
- arg: '#3f686a' # 0.25: an argument recedes under the label of the call it belongs to
34
- warn: '#bf8a1f' # 0.61, in amber: a call that has not answered
35
- added: '#3b9f65' # 0.56, in green: something that arrived
36
- removed: '#b03236' # 0.25, in red: something taken away
37
- user: '#041f21' # the anchor itself: the band under a selected row, and one panel border
38
- assistant: '#adbbbc' # the reply's text stays plain, so the frame is what marks it
16
+ default: '#adbbbc'
17
+ muted: '#809a9b'
18
+ faint: '#638184'
19
+ accent: '#2e9ca4'
20
+ arg: '#3f686a'
21
+ warn: '#bf8a1f'
22
+ added: '#3b9f65'
23
+ removed: '#b03236'
24
+ user: '#041f21'
25
+ assistant: '#adbbbc'
39
26
 
40
27
  tokens:
41
28
  # A row of the conversation. The reader's own turn keeps its frame and carries
@@ -51,6 +38,7 @@ tokens:
51
38
  transcript.assistant.border: { fg: '#416265' }
52
39
  transcript.notice: { fg: muted }
53
40
  transcript.marker: { fg: muted }
41
+ # Reasoning recedes beneath the reply; tool details below likewise defer to their call labels.
54
42
  transcript.reasoning.summary: { fg: faint, italic: true }
55
43
  transcript.reasoning.body: { fg: faint }
56
44
  transcript.reasoning.hint: { fg: faint, italic: true }
@@ -71,8 +59,8 @@ tokens:
71
59
  tool.hint: { fg: muted }
72
60
  tool.failed.title: { fg: removed }
73
61
  tool.failed.glyph: { fg: removed }
74
- # A call still in flight is state, which is amber's job here; the failed row
75
- # stays red so the two can never be read as each other.
62
+ # Amber reserves attention for calls still pending rather than completed tool labels.
63
+ # Red distinguishes failure from pending calls; color alone cannot guarantee recognition.
76
64
  tool.running.title: { fg: warn }
77
65
  tool.running.elapsed: { fg: warn }
78
66
  tool.elapsed.done: { fg: muted, italic: true }
@@ -97,7 +85,8 @@ tokens:
97
85
  tool.web.source: { fg: muted }
98
86
  tool.web.truncated: { fg: muted }
99
87
  tool.generic.detail: { fg: muted }
100
- # A reply, which is markdown, and the diagrams in it.
88
+ # Accent marks navigable links, syntax and diagram structure without tinting whole bodies;
89
+ # empty body styles retain resolver defaults, while scaffolding stays secondary.
101
90
  markdown.heading: { fg: accent, bold: true }
102
91
  markdown.link: { fg: accent, underline: true }
103
92
  markdown.linkUrl: { fg: muted }
@@ -114,8 +103,8 @@ tokens:
114
103
  markdown.underline: { underline: true }
115
104
  # A fenced diff: the scaffolding recedes, the rows carry the semantic shades,
116
105
  # and the characters that changed sit on a band of the row's own colour. The
117
- # band is a shade derived from that colour rather than a palette entry, so it
118
- # stays a literal, and the foreground inherits so a palette move carries both.
106
+ # band stays separate from foreground roles to keep character emphasis independently adjustable;
107
+ # inherited foreground follows palette changes without changing the literal background.
119
108
  markdown.diff.header: { fg: muted }
120
109
  markdown.diff.hunk: { fg: muted }
121
110
  markdown.diff.context: {}
@@ -144,7 +133,8 @@ tokens:
144
133
  picker.hint: { fg: muted }
145
134
  picker.cursor: {}
146
135
  picker.border: { fg: muted }
147
- # A question or an approval, which stops the turn until it is answered.
136
+ # Weight emphasizes the pending decision and current option without requiring a color change.
137
+ # The renderer also supplies a cursor and numbered choices; muted detail is still decision context.
148
138
  gate.title: { bold: true }
149
139
  gate.glyphApproval: { bold: true }
150
140
  gate.glyphQuestion: { bold: true }
@@ -191,6 +181,8 @@ tokens:
191
181
  # The one border in the surface that is not a divider: it holds what the reader
192
182
  # is writing, which is where the brand belongs on a send affordance.
193
183
  editor.border: { fg: accent }
184
+ # Dim queued prompts and ghost suggestions distinguish pending work from text being edited.
185
+ # Completion weight supplements the accent prefix so its current label need not rely on hue.
194
186
  editor.queued: { dim: true, italic: true }
195
187
  editor.queued.more: { fg: muted }
196
188
  editor.ghost: { dim: true }
@@ -1,17 +1,13 @@
1
1
  # pine-slope — the shipped table, anchored on the pine #173802.
2
2
  #
3
- # The anchor is a fill weight rather than a text weight: at 1.41:1 against a dark
4
- # terminal it paints the band under a selected row and the one panel border that
5
- # names it, and the accent is that same hue lifted to where text reads. Every
6
- # neutral is the anchor's hue at a low saturation, so the surface reads as one
7
- # family rather than as grey rows with a green link on them.
3
+ # The anchor gives selected rows a low-brightness fill rather than text colour.
4
+ # The accent lifts that hue for text; actual contrast depends on the terminal
5
+ # background. Every neutral uses the anchor's hue at low saturation so the
6
+ # surface reads as one family rather than grey rows with a green link on them.
8
7
  #
9
- # The shades hold the shipped table's own ladder — each role takes the same share
10
- # of the theme's text luminance (muted 0.63, faint 0.42, arg 0.25, accent 0.57,
11
- # warn 0.61, added 0.56, removed 0.25) — so this theme is dimmer in absolute terms
12
- # and identical in structure to any other, and a reader who knows one knows this
13
- # one. Only the level and the chroma are its own, which is what keeps it soft
14
- # beside a bright terminal instead of competing with it.
8
+ # This palette keeps arguments below reasoning and labels below body text so
9
+ # supporting detail recedes. These relative levels belong to this palette;
10
+ # other shipped themes use different luminance relationships.
15
11
  #
16
12
  # Green is the family here, and green is also what an added line means. The
17
13
  # accent therefore stays a lime while the semantic green is pushed toward grass:
@@ -152,6 +148,8 @@ tokens:
152
148
  gate.glyphQuestion: { bold: true }
153
149
  gate.detail: { fg: muted }
154
150
  gate.option: {}
151
+ # Bold and the cursor distinguish keyboard focus without a picker-style band;
152
+ # the checkbox remains the separate cue for an answer already selected.
155
153
  gate.optionCurrent: { bold: true }
156
154
  gate.cursor: {}
157
155
  gate.hint: { fg: muted }
@@ -186,6 +184,7 @@ tokens:
186
184
  status.permission: { fg: muted }
187
185
  status.context: { fg: muted }
188
186
  status.cache: { fg: muted }
187
+ # Parked drafts need a return-to-work cue, unlike passive footer metadata.
189
188
  status.stash: { fg: accent }
190
189
  status.cwd: { fg: muted }
191
190
  status.separator: { fg: muted }
@@ -193,9 +192,12 @@ tokens:
193
192
  # The one border in the surface that is not a divider: it holds what the reader
194
193
  # is writing, which is where the brand belongs on a send affordance.
195
194
  editor.border: { fg: accent }
195
+ # Submitted input recedes to distinguish waiting prompts from the editable draft.
196
196
  editor.queued: { dim: true, italic: true }
197
197
  editor.queued.more: { fg: muted }
198
+ # History suggestions recede because they are not draft text until accepted.
198
199
  editor.ghost: { dim: true }
200
+ # Emphasize the completion to accept; descriptions and list state stay secondary.
199
201
  editor.selectList.selectedPrefix: { fg: accent }
200
202
  editor.selectList.selectedText: { bold: true }
201
203
  editor.selectList.description: { fg: muted }
@@ -143,6 +143,8 @@ tokens:
143
143
  gate.glyphQuestion: { bold: true }
144
144
  gate.detail: { fg: muted }
145
145
  gate.option: {}
146
+ # Bold and the cursor distinguish keyboard focus without a picker-style band;
147
+ # the checkbox remains the separate cue for an answer already selected.
146
148
  gate.optionCurrent: { bold: true }
147
149
  gate.cursor: {}
148
150
  gate.hint: { fg: muted }
@@ -177,6 +179,7 @@ tokens:
177
179
  status.permission: { fg: muted }
178
180
  status.context: { fg: muted }
179
181
  status.cache: { fg: muted }
182
+ # Parked drafts need a return-to-work cue, unlike passive footer metadata.
180
183
  status.stash: { fg: accent }
181
184
  status.cwd: { fg: muted }
182
185
  status.separator: { fg: muted }
@@ -184,9 +187,12 @@ tokens:
184
187
  # The one border in the surface that is not a divider: it holds what the reader
185
188
  # is writing, which is where the brand belongs on a send affordance.
186
189
  editor.border: { fg: accent }
190
+ # Submitted input recedes to distinguish waiting prompts from the editable draft.
187
191
  editor.queued: { dim: true, italic: true }
188
192
  editor.queued.more: { fg: muted }
193
+ # History suggestions recede because they are not draft text until accepted.
189
194
  editor.ghost: { dim: true }
195
+ # Emphasize the completion to accept; descriptions and list state stay secondary.
190
196
  editor.selectList.selectedPrefix: { fg: accent }
191
197
  editor.selectList.selectedText: { bold: true }
192
198
  editor.selectList.description: { fg: muted }
@@ -1,19 +1,16 @@
1
- # violet-orbit — the pi theme of the same name, brought over shade for shade.
1
+ # violet-orbit — palette roles mapped to this surface.
2
2
  #
3
- # The two surfaces do not share a vocabulary: pi names a message background
4
- # where this one names the transcript row that draws it. The port therefore
5
- # keeps pi's shades verbatim and re-applies them here by what an element *is*,
6
- # and every line below that came from pi names the pi key it came from — the
7
- # only thing that makes a later change to either theme reviewable. One shade
8
- # has no pi key to name, and says why it is here instead.
3
+ # Role annotations keep palette changes reviewable against the named pi roles;
4
+ # they do not verify upstream shade provenance. Local adaptations explain why
5
+ # arguments, assistant frames, and skill labels need different emphasis.
9
6
  #
10
7
  # This file is a reference and a layer, not a workspace: it ships inside the
11
8
  # package and a new version replaces it. /theme export violet-orbit writes a
12
9
  # full copy into your own themes directory to edit.
13
10
 
14
11
  palette:
15
- # Pi's own roles, moved across unchanged: every element that names the
16
- # palette rather than a literal follows the theme without being listed.
12
+ # Shared palette entries let related roles change together instead of drifting
13
+ # through independent literal colours. Inline labels name the corresponding roles.
17
14
  default: '#e8e9ff' # text
18
15
  muted: '#9aa0c8' # muted
19
16
  faint: '#676d95' # dim
@@ -23,15 +20,9 @@ palette:
23
20
  removed: '#ef4444' # error
24
21
  user: '#f0f1ff' # userMessageText
25
22
  assistant: '#e8e9ff' # text
26
- # Pi has no argument colour of its own, and its link blue — the shade that
27
- # first came over — shares a family with the label pi gives a tool name, so
28
- # the two halves of one row could not be told apart. Separating them by family
29
- # costs a hue, and the obvious one is already spent: a sage that differs from
30
- # the label also differs from nothing on a diff card, where an argument and an
31
- # added line read as two shades of one green. Separating by value costs no hue
32
- # at all — the argument sits dark enough to recede under the label it belongs
33
- # to, and the shades that mean something arrived go on being the only ones.
34
- arg: '#4B5680' # no pi key: see the note below
23
+ # Darker arguments recede beneath tool labels without borrowing the green
24
+ # reserved for additions, keeping call detail distinct from change summaries.
25
+ arg: '#4B5680'
35
26
 
36
27
  tokens:
37
28
  # A reader's own turn. Pi fills the row, but this surface already frames it,
@@ -151,6 +142,8 @@ tokens:
151
142
  dock.todos.border: { fg: accent } # accent
152
143
  dock.todos.heading: { fg: '#b5b5ff', bold: true } # mdHeading
153
144
  dock.todos.pending: { fg: muted } # unchanged from the shipped table
145
+ # Accent distinguishes active plan work from pending items; live delegations
146
+ # and jobs remain watch-list context rather than sharing that emphasis.
154
147
  dock.todos.inProgress: { fg: accent }
155
148
  dock.todos.overflow: { fg: muted } # unchanged from the shipped table
156
149
  dock.subagents.border: { fg: faint } # dim
@@ -182,9 +175,12 @@ tokens:
182
175
  status.separator: { fg: '#343652' } # border
183
176
  # The input bar owns its border even when the sent prompt starts at the same shade.
184
177
  editor.border: { fg: '#6f76c9' }
178
+ # Submitted input recedes to distinguish waiting prompts from the editable draft.
185
179
  editor.queued: { fg: faint, italic: true }
186
180
  editor.queued.more: { fg: faint }
181
+ # History suggestions recede because they are not draft text until accepted.
187
182
  editor.ghost: { dim: true } # unchanged from the shipped table
183
+ # Emphasize the completion to accept; descriptions and list state stay secondary.
188
184
  editor.selectList.selectedPrefix: { fg: accent } # unchanged from the shipped table
189
185
  editor.selectList.selectedText: { fg: '#a7a7ff', bg: '#2e315c', bold: true } # selectedBg
190
186
  editor.selectList.description: { fg: faint }
@@ -1,19 +1,13 @@
1
1
  # wine-thicket — the shipped table, anchored on the plum #240413.
2
2
  #
3
- # The anchor is a fill weight rather than a text weight, and at 1.03:1 against a
4
- # dark terminal it is almost exactly the weight of the background itself: it marks
5
- # the row a picker has selected by its hue rather than by any contrast it could
6
- # add, which is why the level starts a step lower than the other themes' — the
7
- # chroma is all this family offers, and the quiet has to come from the neutrals.
8
- # The whole table is drawn on that one hue, the accent included. Every
9
- # neutral is the anchor's hue at a low saturation, so the surface reads as one
10
- # family rather than as grey rows with a pink link on them.
3
+ # The anchor gives picker selection a low-brightness fill rather than text colour.
4
+ # Its contrast depends on the terminal background; the brighter accent carries
5
+ # text in the same hue. Every neutral uses that hue at low saturation so the
6
+ # surface reads as one family rather than grey rows with a pink link on them.
11
7
  #
12
- # The shades hold the shipped table's own ladder — each role takes the same share
13
- # of the theme's text luminance (muted 0.63, faint 0.42, arg 0.25, accent 0.57,
14
- # warn 0.61, added 0.56, removed 0.25) — so this theme is dimmer in absolute terms
15
- # and identical in structure to any other, and a reader who knows one knows this
16
- # one. Only the level and the chroma are its own.
8
+ # This palette keeps arguments below reasoning and labels below body text so
9
+ # supporting detail recedes. These relative levels belong to this palette;
10
+ # other shipped themes use different luminance relationships.
17
11
  #
18
12
  # A rose accent sits 25 degrees from the red the surface already means by removed.
19
13
  # The two are told apart by weight instead of by hue: the accent is nearly twice
@@ -154,6 +148,8 @@ tokens:
154
148
  gate.glyphQuestion: { bold: true }
155
149
  gate.detail: { fg: muted }
156
150
  gate.option: {}
151
+ # Bold and the cursor distinguish keyboard focus without a picker-style band;
152
+ # the checkbox remains the separate cue for an answer already selected.
157
153
  gate.optionCurrent: { bold: true }
158
154
  gate.cursor: {}
159
155
  gate.hint: { fg: muted }
@@ -188,6 +184,7 @@ tokens:
188
184
  status.permission: { fg: muted }
189
185
  status.context: { fg: muted }
190
186
  status.cache: { fg: muted }
187
+ # Parked drafts need a return-to-work cue, unlike passive footer metadata.
191
188
  status.stash: { fg: accent }
192
189
  status.cwd: { fg: muted }
193
190
  status.separator: { fg: muted }
@@ -195,9 +192,12 @@ tokens:
195
192
  # The one border in the surface that is not a divider: it holds what the reader
196
193
  # is writing, which is where the brand belongs on a send affordance.
197
194
  editor.border: { fg: accent }
195
+ # Submitted input recedes to distinguish waiting prompts from the editable draft.
198
196
  editor.queued: { dim: true, italic: true }
199
197
  editor.queued.more: { fg: muted }
198
+ # History suggestions recede because they are not draft text until accepted.
200
199
  editor.ghost: { dim: true }
200
+ # Emphasize the completion to accept; descriptions and list state stay secondary.
201
201
  editor.selectList.selectedPrefix: { fg: accent }
202
202
  editor.selectList.selectedText: { bold: true }
203
203
  editor.selectList.description: { fg: muted }