@deepseek-harness-tui/dsh-tui 0.11.2 → 0.13.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 (786) hide show
  1. package/README.md +60 -8
  2. package/assets/deepy/README.md +60 -0
  3. package/assets/deepy/frames.json +1 -0
  4. package/assets/whale-girl/whale-girl-happy.png +0 -0
  5. package/assets/whaleGirl/README.md +7 -0
  6. package/assets/whaleGirl/frames.json +1 -0
  7. package/assets/whaleGirl/img/building/00.png +0 -0
  8. package/assets/whaleGirl/img/building/01.png +0 -0
  9. package/assets/whaleGirl/img/building/02.png +0 -0
  10. package/assets/whaleGirl/img/building/03.png +0 -0
  11. package/assets/whaleGirl/img/building/04.png +0 -0
  12. package/assets/whaleGirl/img/building/05.png +0 -0
  13. package/assets/whaleGirl/img/building/06.png +0 -0
  14. package/assets/whaleGirl/img/building/07.png +0 -0
  15. package/assets/whaleGirl/img/building/08.png +0 -0
  16. package/assets/whaleGirl/img/building/09.png +0 -0
  17. package/assets/whaleGirl/img/building/10.png +0 -0
  18. package/assets/whaleGirl/img/building/11.png +0 -0
  19. package/assets/whaleGirl/img/building/12.png +0 -0
  20. package/assets/whaleGirl/img/building/13.png +0 -0
  21. package/assets/whaleGirl/img/building/14.png +0 -0
  22. package/assets/whaleGirl/img/building/15.png +0 -0
  23. package/assets/whaleGirl/img/building/16.png +0 -0
  24. package/assets/whaleGirl/img/building/17.png +0 -0
  25. package/assets/whaleGirl/img/building/18.png +0 -0
  26. package/assets/whaleGirl/img/building/19.png +0 -0
  27. package/assets/whaleGirl/img/building/20.png +0 -0
  28. package/assets/whaleGirl/img/building/21.png +0 -0
  29. package/assets/whaleGirl/img/building/22.png +0 -0
  30. package/assets/whaleGirl/img/building/23.png +0 -0
  31. package/assets/whaleGirl/img/carrying/00.png +0 -0
  32. package/assets/whaleGirl/img/carrying/01.png +0 -0
  33. package/assets/whaleGirl/img/carrying/02.png +0 -0
  34. package/assets/whaleGirl/img/carrying/03.png +0 -0
  35. package/assets/whaleGirl/img/carrying/04.png +0 -0
  36. package/assets/whaleGirl/img/carrying/05.png +0 -0
  37. package/assets/whaleGirl/img/carrying/06.png +0 -0
  38. package/assets/whaleGirl/img/carrying/07.png +0 -0
  39. package/assets/whaleGirl/img/compacting/00.png +0 -0
  40. package/assets/whaleGirl/img/compacting/01.png +0 -0
  41. package/assets/whaleGirl/img/compacting/02.png +0 -0
  42. package/assets/whaleGirl/img/compacting/03.png +0 -0
  43. package/assets/whaleGirl/img/compacting/04.png +0 -0
  44. package/assets/whaleGirl/img/compacting/05.png +0 -0
  45. package/assets/whaleGirl/img/compacting/06.png +0 -0
  46. package/assets/whaleGirl/img/compacting/07.png +0 -0
  47. package/assets/whaleGirl/img/compacting/08.png +0 -0
  48. package/assets/whaleGirl/img/compacting/09.png +0 -0
  49. package/assets/whaleGirl/img/conducting/00.png +0 -0
  50. package/assets/whaleGirl/img/conducting/01.png +0 -0
  51. package/assets/whaleGirl/img/conducting/02.png +0 -0
  52. package/assets/whaleGirl/img/conducting/03.png +0 -0
  53. package/assets/whaleGirl/img/conducting/04.png +0 -0
  54. package/assets/whaleGirl/img/conducting/05.png +0 -0
  55. package/assets/whaleGirl/img/conducting/06.png +0 -0
  56. package/assets/whaleGirl/img/conducting/07.png +0 -0
  57. package/assets/whaleGirl/img/conducting/08.png +0 -0
  58. package/assets/whaleGirl/img/conducting/09.png +0 -0
  59. package/assets/whaleGirl/img/conducting/10.png +0 -0
  60. package/assets/whaleGirl/img/conducting/11.png +0 -0
  61. package/assets/whaleGirl/img/drag/00.png +0 -0
  62. package/assets/whaleGirl/img/drag/01.png +0 -0
  63. package/assets/whaleGirl/img/drag/02.png +0 -0
  64. package/assets/whaleGirl/img/drag/03.png +0 -0
  65. package/assets/whaleGirl/img/drag/04.png +0 -0
  66. package/assets/whaleGirl/img/drag/05.png +0 -0
  67. package/assets/whaleGirl/img/drag/06.png +0 -0
  68. package/assets/whaleGirl/img/drag/07.png +0 -0
  69. package/assets/whaleGirl/img/drag/08.png +0 -0
  70. package/assets/whaleGirl/img/drag/09.png +0 -0
  71. package/assets/whaleGirl/img/error/00.png +0 -0
  72. package/assets/whaleGirl/img/error/01.png +0 -0
  73. package/assets/whaleGirl/img/error/02.png +0 -0
  74. package/assets/whaleGirl/img/error/03.png +0 -0
  75. package/assets/whaleGirl/img/error/04.png +0 -0
  76. package/assets/whaleGirl/img/error/05.png +0 -0
  77. package/assets/whaleGirl/img/error/06.png +0 -0
  78. package/assets/whaleGirl/img/error/07.png +0 -0
  79. package/assets/whaleGirl/img/error/08.png +0 -0
  80. package/assets/whaleGirl/img/error/09.png +0 -0
  81. package/assets/whaleGirl/img/happy/00.png +0 -0
  82. package/assets/whaleGirl/img/happy/01.png +0 -0
  83. package/assets/whaleGirl/img/happy/02.png +0 -0
  84. package/assets/whaleGirl/img/happy/03.png +0 -0
  85. package/assets/whaleGirl/img/happy/04.png +0 -0
  86. package/assets/whaleGirl/img/happy/05.png +0 -0
  87. package/assets/whaleGirl/img/happy/06.png +0 -0
  88. package/assets/whaleGirl/img/happy/07.png +0 -0
  89. package/assets/whaleGirl/img/happy/08.png +0 -0
  90. package/assets/whaleGirl/img/happy/09.png +0 -0
  91. package/assets/whaleGirl/img/happy/10.png +0 -0
  92. package/assets/whaleGirl/img/idle/00.png +0 -0
  93. package/assets/whaleGirl/img/idle/01.png +0 -0
  94. package/assets/whaleGirl/img/idle/02.png +0 -0
  95. package/assets/whaleGirl/img/idle/03.png +0 -0
  96. package/assets/whaleGirl/img/idle/04.png +0 -0
  97. package/assets/whaleGirl/img/idle/05.png +0 -0
  98. package/assets/whaleGirl/img/idle/06.png +0 -0
  99. package/assets/whaleGirl/img/idle/07.png +0 -0
  100. package/assets/whaleGirl/img/idle/08.png +0 -0
  101. package/assets/whaleGirl/img/idle/09.png +0 -0
  102. package/assets/whaleGirl/img/idle/10.png +0 -0
  103. package/assets/whaleGirl/img/idle/11.png +0 -0
  104. package/assets/whaleGirl/img/idle/12.png +0 -0
  105. package/assets/whaleGirl/img/idle/13.png +0 -0
  106. package/assets/whaleGirl/img/idle/14.png +0 -0
  107. package/assets/whaleGirl/img/idle/15.png +0 -0
  108. package/assets/whaleGirl/img/idle/16.png +0 -0
  109. package/assets/whaleGirl/img/idle/17.png +0 -0
  110. package/assets/whaleGirl/img/idle/18.png +0 -0
  111. package/assets/whaleGirl/img/idle/19.png +0 -0
  112. package/assets/whaleGirl/img/idle/20.png +0 -0
  113. package/assets/whaleGirl/img/idle-look/00.png +0 -0
  114. package/assets/whaleGirl/img/idle-look/01.png +0 -0
  115. package/assets/whaleGirl/img/idle-look/02.png +0 -0
  116. package/assets/whaleGirl/img/idle-look/03.png +0 -0
  117. package/assets/whaleGirl/img/idle-look/04.png +0 -0
  118. package/assets/whaleGirl/img/idle-look/05.png +0 -0
  119. package/assets/whaleGirl/img/idle-look/06.png +0 -0
  120. package/assets/whaleGirl/img/idle-look/07.png +0 -0
  121. package/assets/whaleGirl/img/idle-look/08.png +0 -0
  122. package/assets/whaleGirl/img/idle-look/09.png +0 -0
  123. package/assets/whaleGirl/img/idle-look/10.png +0 -0
  124. package/assets/whaleGirl/img/idle-look/11.png +0 -0
  125. package/assets/whaleGirl/img/idle-look/12.png +0 -0
  126. package/assets/whaleGirl/img/idle-spout/00.png +0 -0
  127. package/assets/whaleGirl/img/idle-spout/01.png +0 -0
  128. package/assets/whaleGirl/img/idle-spout/02.png +0 -0
  129. package/assets/whaleGirl/img/idle-spout/03.png +0 -0
  130. package/assets/whaleGirl/img/idle-spout/04.png +0 -0
  131. package/assets/whaleGirl/img/idle-spout/05.png +0 -0
  132. package/assets/whaleGirl/img/idle-spout/06.png +0 -0
  133. package/assets/whaleGirl/img/idle-spout/07.png +0 -0
  134. package/assets/whaleGirl/img/idle-spout/08.png +0 -0
  135. package/assets/whaleGirl/img/idle-spout/09.png +0 -0
  136. package/assets/whaleGirl/img/idle-spout/10.png +0 -0
  137. package/assets/whaleGirl/img/music/00.png +0 -0
  138. package/assets/whaleGirl/img/music/01.png +0 -0
  139. package/assets/whaleGirl/img/music/02.png +0 -0
  140. package/assets/whaleGirl/img/music/03.png +0 -0
  141. package/assets/whaleGirl/img/music/04.png +0 -0
  142. package/assets/whaleGirl/img/music/05.png +0 -0
  143. package/assets/whaleGirl/img/music/06.png +0 -0
  144. package/assets/whaleGirl/img/music/07.png +0 -0
  145. package/assets/whaleGirl/img/notification/00.png +0 -0
  146. package/assets/whaleGirl/img/notification/01.png +0 -0
  147. package/assets/whaleGirl/img/notification/02.png +0 -0
  148. package/assets/whaleGirl/img/notification/03.png +0 -0
  149. package/assets/whaleGirl/img/notification/04.png +0 -0
  150. package/assets/whaleGirl/img/notification/05.png +0 -0
  151. package/assets/whaleGirl/img/notification/06.png +0 -0
  152. package/assets/whaleGirl/img/notification/07.png +0 -0
  153. package/assets/whaleGirl/img/poke-left/00.png +0 -0
  154. package/assets/whaleGirl/img/poke-left/01.png +0 -0
  155. package/assets/whaleGirl/img/poke-left/02.png +0 -0
  156. package/assets/whaleGirl/img/poke-left/03.png +0 -0
  157. package/assets/whaleGirl/img/poke-left/04.png +0 -0
  158. package/assets/whaleGirl/img/poke-left/05.png +0 -0
  159. package/assets/whaleGirl/img/poke-left/06.png +0 -0
  160. package/assets/whaleGirl/img/poke-left/07.png +0 -0
  161. package/assets/whaleGirl/img/poke-left/08.png +0 -0
  162. package/assets/whaleGirl/img/poke-left/09.png +0 -0
  163. package/assets/whaleGirl/img/poke-left/10.png +0 -0
  164. package/assets/whaleGirl/img/poke-right/00.png +0 -0
  165. package/assets/whaleGirl/img/poke-right/01.png +0 -0
  166. package/assets/whaleGirl/img/poke-right/02.png +0 -0
  167. package/assets/whaleGirl/img/poke-right/03.png +0 -0
  168. package/assets/whaleGirl/img/poke-right/04.png +0 -0
  169. package/assets/whaleGirl/img/poke-right/05.png +0 -0
  170. package/assets/whaleGirl/img/poke-right/06.png +0 -0
  171. package/assets/whaleGirl/img/poke-right/07.png +0 -0
  172. package/assets/whaleGirl/img/poke-right/08.png +0 -0
  173. package/assets/whaleGirl/img/poke-right/09.png +0 -0
  174. package/assets/whaleGirl/img/poke-right/10.png +0 -0
  175. package/assets/whaleGirl/img/sleeping/00.png +0 -0
  176. package/assets/whaleGirl/img/sleeping/01.png +0 -0
  177. package/assets/whaleGirl/img/sleeping/02.png +0 -0
  178. package/assets/whaleGirl/img/sleeping/03.png +0 -0
  179. package/assets/whaleGirl/img/sleeping/04.png +0 -0
  180. package/assets/whaleGirl/img/sleeping/05.png +0 -0
  181. package/assets/whaleGirl/img/smile-hearts/00.png +0 -0
  182. package/assets/whaleGirl/img/smile-hearts/01.png +0 -0
  183. package/assets/whaleGirl/img/smile-hearts/02.png +0 -0
  184. package/assets/whaleGirl/img/smile-hearts/03.png +0 -0
  185. package/assets/whaleGirl/img/smile-hearts/04.png +0 -0
  186. package/assets/whaleGirl/img/smile-hearts/05.png +0 -0
  187. package/assets/whaleGirl/img/smile-hearts/06.png +0 -0
  188. package/assets/whaleGirl/img/smile-hearts/07.png +0 -0
  189. package/assets/whaleGirl/img/smile-hearts/08.png +0 -0
  190. package/assets/whaleGirl/img/smile-hearts/09.png +0 -0
  191. package/assets/whaleGirl/img/smile-hearts/10.png +0 -0
  192. package/assets/whaleGirl/img/smile-hearts/11.png +0 -0
  193. package/assets/whaleGirl/img/smile-hearts/12.png +0 -0
  194. package/assets/whaleGirl/img/smile-hearts/13.png +0 -0
  195. package/assets/whaleGirl/img/smile-hearts/14.png +0 -0
  196. package/assets/whaleGirl/img/smile-hearts/15.png +0 -0
  197. package/assets/whaleGirl/img/swim/00.png +0 -0
  198. package/assets/whaleGirl/img/swim/01.png +0 -0
  199. package/assets/whaleGirl/img/swim/02.png +0 -0
  200. package/assets/whaleGirl/img/swim/03.png +0 -0
  201. package/assets/whaleGirl/img/swim/04.png +0 -0
  202. package/assets/whaleGirl/img/swim/05.png +0 -0
  203. package/assets/whaleGirl/img/swim/06.png +0 -0
  204. package/assets/whaleGirl/img/swim/07.png +0 -0
  205. package/assets/whaleGirl/img/thinking/00.png +0 -0
  206. package/assets/whaleGirl/img/thinking/01.png +0 -0
  207. package/assets/whaleGirl/img/thinking/02.png +0 -0
  208. package/assets/whaleGirl/img/thinking/03.png +0 -0
  209. package/assets/whaleGirl/img/thinking/04.png +0 -0
  210. package/assets/whaleGirl/img/thinking/05.png +0 -0
  211. package/assets/whaleGirl/img/thinking/06.png +0 -0
  212. package/assets/whaleGirl/img/thinking/07.png +0 -0
  213. package/assets/whaleGirl/img/thinking/08.png +0 -0
  214. package/assets/whaleGirl/img/thinking/09.png +0 -0
  215. package/assets/whaleGirl/img/thinking/10.png +0 -0
  216. package/assets/whaleGirl/img/thinking/11.png +0 -0
  217. package/assets/whaleGirl/img/thinking/12.png +0 -0
  218. package/assets/whaleGirl/img/thinking/13.png +0 -0
  219. package/assets/whaleGirl/img/thinking/14.png +0 -0
  220. package/assets/whaleGirl/img/thinking/15.png +0 -0
  221. package/assets/whaleGirl/img/thinking/16.png +0 -0
  222. package/assets/whaleGirl/img/thumbs-up/00.png +0 -0
  223. package/assets/whaleGirl/img/thumbs-up/01.png +0 -0
  224. package/assets/whaleGirl/img/thumbs-up/02.png +0 -0
  225. package/assets/whaleGirl/img/thumbs-up/03.png +0 -0
  226. package/assets/whaleGirl/img/thumbs-up/04.png +0 -0
  227. package/assets/whaleGirl/img/thumbs-up/05.png +0 -0
  228. package/assets/whaleGirl/img/thumbs-up/06.png +0 -0
  229. package/assets/whaleGirl/img/thumbs-up/07.png +0 -0
  230. package/assets/whaleGirl/img/thumbs-up/08.png +0 -0
  231. package/assets/whaleGirl/img/thumbs-up/09.png +0 -0
  232. package/assets/whaleGirl/img/thumbs-up/10.png +0 -0
  233. package/assets/whaleGirl/img/thumbs-up/11.png +0 -0
  234. package/assets/whaleGirl/img/thumbs-up/12.png +0 -0
  235. package/assets/whaleGirl/img/tickle/00.png +0 -0
  236. package/assets/whaleGirl/img/tickle/01.png +0 -0
  237. package/assets/whaleGirl/img/tickle/02.png +0 -0
  238. package/assets/whaleGirl/img/tickle/03.png +0 -0
  239. package/assets/whaleGirl/img/tickle/04.png +0 -0
  240. package/assets/whaleGirl/img/tickle/05.png +0 -0
  241. package/assets/whaleGirl/img/tickle/06.png +0 -0
  242. package/assets/whaleGirl/img/tickle/07.png +0 -0
  243. package/assets/whaleGirl/img/tickle/08.png +0 -0
  244. package/assets/whaleGirl/img/tickle/09.png +0 -0
  245. package/assets/whaleGirl/img/tickle/10.png +0 -0
  246. package/assets/whaleGirl/img/tickle/11.png +0 -0
  247. package/assets/whaleGirl/img/tickle/12.png +0 -0
  248. package/assets/whaleGirl/img/tickle/13.png +0 -0
  249. package/assets/whaleGirl/img/timings.json +1 -0
  250. package/assets/whaleGirl/img/typing/00.png +0 -0
  251. package/assets/whaleGirl/img/typing/01.png +0 -0
  252. package/assets/whaleGirl/img/typing/02.png +0 -0
  253. package/assets/whaleGirl/img/typing/03.png +0 -0
  254. package/assets/whaleGirl/img/typing/04.png +0 -0
  255. package/assets/whaleGirl/img/typing/05.png +0 -0
  256. package/assets/whaleGirl/img/typing/06.png +0 -0
  257. package/assets/whaleGirl/img/typing/07.png +0 -0
  258. package/assets/whaleGirl/img/typing/08.png +0 -0
  259. package/assets/whaleGirl/img/typing/09.png +0 -0
  260. package/assets/whaleGirl/img/typing/10.png +0 -0
  261. package/assets/whaleGirl/img/typing/11.png +0 -0
  262. package/assets/whaleGirl/img/typing/12.png +0 -0
  263. package/assets/whaleGirl/img/typing/13.png +0 -0
  264. package/assets/whaleGirl/img/waking/00.png +0 -0
  265. package/assets/whaleGirl/img/waking/01.png +0 -0
  266. package/assets/whaleGirl/img/waking/02.png +0 -0
  267. package/assets/whaleGirl/img/waking/03.png +0 -0
  268. package/assets/whaleGirl/img/waking/04.png +0 -0
  269. package/assets/whaleGirl/img/waking/05.png +0 -0
  270. package/assets/whaleGirl/img/waking/06.png +0 -0
  271. package/assets/whaleGirl/img/waking/07.png +0 -0
  272. package/assets/whaleGirl/img/waking/08.png +0 -0
  273. package/assets/whaleGirl/img/waking/09.png +0 -0
  274. package/assets/whaleGirl/img/waking/10.png +0 -0
  275. package/bin/dsh-tui.js +38 -6
  276. package/cordis.patch.yml +31 -6
  277. package/guide/dsh-tui-guide/SKILL.md +37 -0
  278. package/guide/dsh-tui-guide/configuration.en.md +415 -0
  279. package/guide/dsh-tui-guide/configuration.md +354 -0
  280. package/guide/dsh-tui-guide/getting-started.en.md +401 -0
  281. package/guide/dsh-tui-guide/getting-started.md +399 -0
  282. package/guide/dsh-tui-guide/interaction.en.md +738 -0
  283. package/guide/dsh-tui-guide/interaction.md +793 -0
  284. package/guide/dsh-tui-guide/migrate.en.md +166 -0
  285. package/guide/dsh-tui-guide/migrate.md +132 -0
  286. package/guide/dsh-tui-guide/plugins.en.md +78 -0
  287. package/guide/dsh-tui-guide/plugins.md +64 -0
  288. package/guide/dsh-tui-guide/themes.en.md +197 -0
  289. package/guide/dsh-tui-guide/themes.md +188 -0
  290. package/guide/dsh-tui-guide/user-guide.en.md +711 -0
  291. package/guide/dsh-tui-guide/user-guide.md +666 -0
  292. package/guide/dsh-tui-guide/vscode.en.md +301 -0
  293. package/guide/dsh-tui-guide/vscode.md +272 -0
  294. package/lib/settings.json +219 -5
  295. package/lib/types/adapter/channel/ui-policy.d.ts +7 -2
  296. package/lib/types/adapter/channel/ui-policy.d.ts.map +1 -1
  297. package/lib/types/adapter/channel/ui-policy.js +18 -1
  298. package/lib/types/adapter/index.d.ts +1 -1
  299. package/lib/types/adapter/index.js +1 -1
  300. package/lib/types/adapter/kernel/host-facade.d.ts +4 -1
  301. package/lib/types/adapter/kernel/host-facade.d.ts.map +1 -1
  302. package/lib/types/adapter/kernel/host-facade.js +8 -1
  303. package/lib/types/adapter/kernel/runtime.d.ts.map +1 -1
  304. package/lib/types/adapter/kernel/runtime.js +13 -0
  305. package/lib/types/adapter/kernel/slices/index.d.ts +1 -0
  306. package/lib/types/adapter/kernel/slices/index.d.ts.map +1 -1
  307. package/lib/types/adapter/kernel/slices/index.js +3 -0
  308. package/lib/types/adapter/kernel/slices/panels.d.ts +3 -0
  309. package/lib/types/adapter/kernel/slices/panels.d.ts.map +1 -0
  310. package/lib/types/adapter/kernel/slices/panels.js +14 -0
  311. package/lib/types/adapter/ports/channel-capabilities.d.ts +48 -0
  312. package/lib/types/adapter/ports/channel-capabilities.d.ts.map +1 -0
  313. package/lib/types/adapter/ports/channel-capabilities.js +2 -0
  314. package/lib/types/adapter/ports/channel-catalog.d.ts +7 -0
  315. package/lib/types/adapter/ports/channel-catalog.d.ts.map +1 -1
  316. package/lib/types/adapter/ports/channel-display.d.ts +10 -0
  317. package/lib/types/adapter/ports/channel-display.d.ts.map +1 -1
  318. package/lib/types/adapter/ports/channel-settings.d.ts +2 -1
  319. package/lib/types/adapter/ports/channel-settings.d.ts.map +1 -1
  320. package/lib/types/adapter/ports/channel-ui.d.ts +91 -4
  321. package/lib/types/adapter/ports/channel-ui.d.ts.map +1 -1
  322. package/lib/types/adapter/ports/channel-view.d.ts +137 -9
  323. package/lib/types/adapter/ports/channel-view.d.ts.map +1 -1
  324. package/lib/types/adapter/ports/channel.d.ts +1 -1
  325. package/lib/types/adapter/ports/channel.js +1 -1
  326. package/lib/types/adapter/ports/descriptor.d.ts +1 -1
  327. package/lib/types/adapter/ports/descriptor.js +1 -1
  328. package/lib/types/adapter/ports/index.d.ts +1 -1
  329. package/lib/types/adapter/ports/index.js +1 -1
  330. package/lib/types/adapter/ports/panels.d.ts +28 -0
  331. package/lib/types/adapter/ports/panels.d.ts.map +1 -0
  332. package/lib/types/adapter/ports/panels.js +8 -0
  333. package/lib/types/adapter/ports/workspace.d.ts +1 -1
  334. package/lib/types/adapter/ports/workspace.js +1 -1
  335. package/lib/types/adapter/spec/index.d.ts +2 -2
  336. package/lib/types/adapter/spec/index.js +2 -2
  337. package/lib/types/adapter/spec/profile.d.ts +6 -6
  338. package/lib/types/adapter/spec/profile.d.ts.map +1 -1
  339. package/lib/types/adapter/spec/profile.js +6 -6
  340. package/lib/types/adapter/spec/protocol-constants.d.ts +3 -3
  341. package/lib/types/adapter/spec/protocol-constants.d.ts.map +1 -1
  342. package/lib/types/adapter/spec/protocol-constants.js +5 -5
  343. package/lib/types/adapter/spec/tui-contributions.d.ts +4 -4
  344. package/lib/types/adapter/spec/tui-contributions.d.ts.map +1 -1
  345. package/lib/types/adapter/spec/tui-contributions.js +5 -5
  346. package/lib/types/adapter/standard/descriptor.js +1 -1
  347. package/lib/types/adapter/standard/index.d.ts +3 -3
  348. package/lib/types/adapter/standard/index.js +3 -3
  349. package/lib/types/adapter/standard/registry.d.ts +3 -2
  350. package/lib/types/adapter/standard/registry.d.ts.map +1 -1
  351. package/lib/types/adapter/standard/registry.js +6 -5
  352. package/lib/types/adapter/standard/tui-extension.d.ts +1 -1
  353. package/lib/types/adapter/standard/tui-extension.js +1 -1
  354. package/lib/types/adapter/upstream/index.d.ts +1 -0
  355. package/lib/types/adapter/upstream/index.d.ts.map +1 -1
  356. package/lib/types/adapter/upstream/index.js +1 -0
  357. package/lib/types/adapter/upstream/panels-driver.d.ts +18 -0
  358. package/lib/types/adapter/upstream/panels-driver.d.ts.map +1 -0
  359. package/lib/types/adapter/upstream/panels-driver.js +159 -0
  360. package/lib/types/api.d.ts +2 -0
  361. package/lib/types/api.d.ts.map +1 -1
  362. package/lib/types/api.js +3 -1
  363. package/lib/types/commands.d.ts.map +1 -1
  364. package/lib/types/commands.js +12 -4
  365. package/lib/types/components/ActivityLine.d.ts +6 -9
  366. package/lib/types/components/ActivityLine.d.ts.map +1 -1
  367. package/lib/types/components/ActivityLine.js +7 -8
  368. package/lib/types/components/Chat/JobCard.d.ts +27 -1
  369. package/lib/types/components/Chat/JobCard.d.ts.map +1 -1
  370. package/lib/types/components/Chat/JobCard.js +128 -33
  371. package/lib/types/components/Chat/JobGroupHeader.d.ts +27 -0
  372. package/lib/types/components/Chat/JobGroupHeader.d.ts.map +1 -0
  373. package/lib/types/components/Chat/JobGroupHeader.js +62 -0
  374. package/lib/types/components/Chat/SubagentMessage.js +6 -6
  375. package/lib/types/components/GoalTodoPanel.d.ts +13 -1
  376. package/lib/types/components/GoalTodoPanel.d.ts.map +1 -1
  377. package/lib/types/components/GoalTodoPanel.js +55 -14
  378. package/lib/types/components/JobsPanel.d.ts +42 -2
  379. package/lib/types/components/JobsPanel.d.ts.map +1 -1
  380. package/lib/types/components/JobsPanel.js +220 -40
  381. package/lib/types/components/LogoV2.d.ts +43 -3
  382. package/lib/types/components/LogoV2.d.ts.map +1 -1
  383. package/lib/types/components/LogoV2.js +42 -15
  384. package/lib/types/components/MessageList.d.ts +8 -2
  385. package/lib/types/components/MessageList.d.ts.map +1 -1
  386. package/lib/types/components/MessageList.js +215 -21
  387. package/lib/types/components/OverlayAbove.d.ts +11 -1
  388. package/lib/types/components/OverlayAbove.d.ts.map +1 -1
  389. package/lib/types/components/OverlayAbove.js +2 -12
  390. package/lib/types/components/PageMargin.d.ts.map +1 -1
  391. package/lib/types/components/PageMargin.js +3 -1
  392. package/lib/types/components/PluginSceneBoundary.d.ts +1 -1
  393. package/lib/types/components/PluginSceneBoundary.js +1 -1
  394. package/lib/types/components/PresetPicker.d.ts +4 -0
  395. package/lib/types/components/PresetPicker.d.ts.map +1 -1
  396. package/lib/types/components/PresetPicker.js +5 -1
  397. package/lib/types/components/PromptInput.d.ts +20 -22
  398. package/lib/types/components/PromptInput.d.ts.map +1 -1
  399. package/lib/types/components/PromptInput.js +425 -157
  400. package/lib/types/components/SearchBox.d.ts +22 -5
  401. package/lib/types/components/SearchBox.d.ts.map +1 -1
  402. package/lib/types/components/SearchBox.js +17 -13
  403. package/lib/types/components/StarPrompt.d.ts +6 -0
  404. package/lib/types/components/StarPrompt.d.ts.map +1 -1
  405. package/lib/types/components/StarPrompt.js +45 -0
  406. package/lib/types/components/SubagentCard.d.ts.map +1 -1
  407. package/lib/types/components/SubagentCard.js +24 -9
  408. package/lib/types/components/SubagentDashboard.d.ts +18 -3
  409. package/lib/types/components/SubagentDashboard.d.ts.map +1 -1
  410. package/lib/types/components/SubagentDashboard.js +53 -5
  411. package/lib/types/components/SubagentDetailScene.d.ts +7 -1
  412. package/lib/types/components/SubagentDetailScene.d.ts.map +1 -1
  413. package/lib/types/components/SubagentDetailScene.js +160 -13
  414. package/lib/types/components/SurfaceEdges.d.ts +21 -0
  415. package/lib/types/components/SurfaceEdges.d.ts.map +1 -0
  416. package/lib/types/components/SurfaceEdges.js +7 -0
  417. package/lib/types/components/ThemePicker.d.ts +9 -0
  418. package/lib/types/components/ThemePicker.d.ts.map +1 -1
  419. package/lib/types/components/ThemePicker.js +74 -10
  420. package/lib/types/components/ThemePreviewPane.d.ts +26 -0
  421. package/lib/types/components/ThemePreviewPane.d.ts.map +1 -0
  422. package/lib/types/components/ThemePreviewPane.js +99 -0
  423. package/lib/types/components/WhaleGirl.d.ts +6 -0
  424. package/lib/types/components/WhaleGirl.d.ts.map +1 -1
  425. package/lib/types/components/WhaleGirl.js +18 -0
  426. package/lib/types/components/design-system/Divider.d.ts.map +1 -1
  427. package/lib/types/components/design-system/Divider.js +14 -9
  428. package/lib/types/components/launchpadActions.d.ts +73 -0
  429. package/lib/types/components/launchpadActions.d.ts.map +1 -0
  430. package/lib/types/components/launchpadActions.js +111 -0
  431. package/lib/types/components/launchpadLayout.d.ts +62 -0
  432. package/lib/types/components/launchpadLayout.d.ts.map +1 -0
  433. package/lib/types/components/launchpadLayout.js +176 -0
  434. package/lib/types/components/messages/AssistantThinkingMessage.js +4 -4
  435. package/lib/types/components/onboardingModel.d.ts +83 -0
  436. package/lib/types/components/onboardingModel.d.ts.map +1 -0
  437. package/lib/types/components/onboardingModel.js +128 -0
  438. package/lib/types/components/sidePanel/InfoPanel.d.ts +17 -0
  439. package/lib/types/components/sidePanel/InfoPanel.d.ts.map +1 -0
  440. package/lib/types/components/sidePanel/InfoPanel.js +124 -0
  441. package/lib/types/components/sidePanel/PanelBar.d.ts +45 -0
  442. package/lib/types/components/sidePanel/PanelBar.d.ts.map +1 -0
  443. package/lib/types/components/sidePanel/PanelBar.js +104 -0
  444. package/lib/types/components/sidePanel/PanelErrorBoundary.d.ts +21 -0
  445. package/lib/types/components/sidePanel/PanelErrorBoundary.d.ts.map +1 -0
  446. package/lib/types/components/sidePanel/PanelErrorBoundary.js +30 -0
  447. package/lib/types/components/sidePanel/PanelHost.d.ts +36 -0
  448. package/lib/types/components/sidePanel/PanelHost.d.ts.map +1 -0
  449. package/lib/types/components/sidePanel/PanelHost.js +81 -0
  450. package/lib/types/components/sidePanel/PanelPicker.d.ts +24 -0
  451. package/lib/types/components/sidePanel/PanelPicker.d.ts.map +1 -0
  452. package/lib/types/components/sidePanel/PanelPicker.js +45 -0
  453. package/lib/types/components/sidePanel/PanelStore.d.ts +55 -0
  454. package/lib/types/components/sidePanel/PanelStore.d.ts.map +1 -0
  455. package/lib/types/components/sidePanel/PanelStore.js +109 -0
  456. package/lib/types/components/sidePanel/SidePanelColumn.d.ts +31 -0
  457. package/lib/types/components/sidePanel/SidePanelColumn.d.ts.map +1 -0
  458. package/lib/types/components/sidePanel/SidePanelColumn.js +70 -0
  459. package/lib/types/components/sidePanel/SidePanelLayout.d.ts +54 -0
  460. package/lib/types/components/sidePanel/SidePanelLayout.d.ts.map +1 -0
  461. package/lib/types/components/sidePanel/SidePanelLayout.js +81 -0
  462. package/lib/types/components/sidePanel/SidePanelRuntimeContext.d.ts +43 -0
  463. package/lib/types/components/sidePanel/SidePanelRuntimeContext.d.ts.map +1 -0
  464. package/lib/types/components/sidePanel/SidePanelRuntimeContext.js +26 -0
  465. package/lib/types/components/sidePanel/TrajectoryPanel.d.ts +7 -0
  466. package/lib/types/components/sidePanel/TrajectoryPanel.d.ts.map +1 -0
  467. package/lib/types/components/sidePanel/TrajectoryPanel.js +263 -0
  468. package/lib/types/components/sidePanel/WorkspacePanel.d.ts +4 -0
  469. package/lib/types/components/sidePanel/WorkspacePanel.d.ts.map +1 -0
  470. package/lib/types/components/sidePanel/WorkspacePanel.js +171 -0
  471. package/lib/types/components/sidePanel/builtinPanels.d.ts +3 -0
  472. package/lib/types/components/sidePanel/builtinPanels.d.ts.map +1 -0
  473. package/lib/types/components/sidePanel/builtinPanels.js +229 -0
  474. package/lib/types/components/sidePanel/companion/CompanionPanel.d.ts +53 -0
  475. package/lib/types/components/sidePanel/companion/CompanionPanel.d.ts.map +1 -0
  476. package/lib/types/components/sidePanel/companion/CompanionPanel.js +528 -0
  477. package/lib/types/components/sidePanel/companion/SplashMascot.d.ts +32 -0
  478. package/lib/types/components/sidePanel/companion/SplashMascot.d.ts.map +1 -0
  479. package/lib/types/components/sidePanel/companion/SplashMascot.js +103 -0
  480. package/lib/types/components/sidePanel/companion/deepy.d.ts +75 -0
  481. package/lib/types/components/sidePanel/companion/deepy.d.ts.map +1 -0
  482. package/lib/types/components/sidePanel/companion/deepy.js +222 -0
  483. package/lib/types/components/sidePanel/companion/mood.d.ts +176 -0
  484. package/lib/types/components/sidePanel/companion/mood.d.ts.map +1 -0
  485. package/lib/types/components/sidePanel/companion/mood.js +212 -0
  486. package/lib/types/components/sidePanel/companion/pose.d.ts +43 -0
  487. package/lib/types/components/sidePanel/companion/pose.d.ts.map +1 -0
  488. package/lib/types/components/sidePanel/companion/pose.js +34 -0
  489. package/lib/types/components/sidePanel/companion/skins.d.ts +102 -0
  490. package/lib/types/components/sidePanel/companion/skins.d.ts.map +1 -0
  491. package/lib/types/components/sidePanel/companion/skins.js +408 -0
  492. package/lib/types/components/sidePanel/dimensions.d.ts +60 -0
  493. package/lib/types/components/sidePanel/dimensions.d.ts.map +1 -0
  494. package/lib/types/components/sidePanel/dimensions.js +75 -0
  495. package/lib/types/components/sidePanel/jobsFocusStore.d.ts +21 -0
  496. package/lib/types/components/sidePanel/jobsFocusStore.d.ts.map +1 -0
  497. package/lib/types/components/sidePanel/jobsFocusStore.js +30 -0
  498. package/lib/types/components/sidePanel/panelBridge.d.ts +44 -0
  499. package/lib/types/components/sidePanel/panelBridge.d.ts.map +1 -0
  500. package/lib/types/components/sidePanel/panelBridge.js +55 -0
  501. package/lib/types/components/sidePanel/pluginPanelAdapter.d.ts +22 -0
  502. package/lib/types/components/sidePanel/pluginPanelAdapter.d.ts.map +1 -0
  503. package/lib/types/components/sidePanel/pluginPanelAdapter.js +148 -0
  504. package/lib/types/components/sidePanel/types.d.ts +110 -0
  505. package/lib/types/components/sidePanel/types.d.ts.map +1 -0
  506. package/lib/types/components/sidePanel/types.js +1 -0
  507. package/lib/types/components/sidePanel/usePanelInput.d.ts +5 -0
  508. package/lib/types/components/sidePanel/usePanelInput.d.ts.map +1 -0
  509. package/lib/types/components/sidePanel/usePanelInput.js +44 -0
  510. package/lib/types/components/sidePanel/useSidePanel.d.ts +47 -0
  511. package/lib/types/components/sidePanel/useSidePanel.d.ts.map +1 -0
  512. package/lib/types/components/sidePanel/useSidePanel.js +284 -0
  513. package/lib/types/components/trajectory/MiniWake.d.ts +11 -1
  514. package/lib/types/components/trajectory/MiniWake.d.ts.map +1 -1
  515. package/lib/types/components/trajectory/MiniWake.js +9 -3
  516. package/lib/types/components/workspaces/HomeWorkspaceRow.d.ts +3 -1
  517. package/lib/types/components/workspaces/HomeWorkspaceRow.d.ts.map +1 -1
  518. package/lib/types/components/workspaces/HomeWorkspaceRow.js +3 -2
  519. package/lib/types/deepseekPricing.d.ts +10 -9
  520. package/lib/types/deepseekPricing.d.ts.map +1 -1
  521. package/lib/types/deepseekPricing.js +18 -11
  522. package/lib/types/dsh-adapter/channel/attached-context.d.ts +58 -0
  523. package/lib/types/dsh-adapter/channel/attached-context.d.ts.map +1 -0
  524. package/lib/types/dsh-adapter/channel/attached-context.js +109 -0
  525. package/lib/types/dsh-adapter/channel/binding-events.d.ts +6 -0
  526. package/lib/types/dsh-adapter/channel/binding-events.d.ts.map +1 -1
  527. package/lib/types/dsh-adapter/channel/binding-events.js +43 -0
  528. package/lib/types/dsh-adapter/channel/capabilities.d.ts +82 -0
  529. package/lib/types/dsh-adapter/channel/capabilities.d.ts.map +1 -0
  530. package/lib/types/dsh-adapter/channel/capabilities.js +165 -0
  531. package/lib/types/dsh-adapter/channel/command-completions.d.ts.map +1 -1
  532. package/lib/types/dsh-adapter/channel/command-completions.js +8 -0
  533. package/lib/types/dsh-adapter/channel/context-bookkeeping.d.ts +4 -12
  534. package/lib/types/dsh-adapter/channel/context-bookkeeping.d.ts.map +1 -1
  535. package/lib/types/dsh-adapter/channel/context-bookkeeping.js +9 -4
  536. package/lib/types/dsh-adapter/channel/external-commands.d.ts.map +1 -1
  537. package/lib/types/dsh-adapter/channel/external-commands.js +8 -2
  538. package/lib/types/dsh-adapter/channel/input-delivery.d.ts +13 -2
  539. package/lib/types/dsh-adapter/channel/input-delivery.d.ts.map +1 -1
  540. package/lib/types/dsh-adapter/channel/input-delivery.js +18 -1
  541. package/lib/types/dsh-adapter/channel/job-projection.d.ts +1 -0
  542. package/lib/types/dsh-adapter/channel/job-projection.d.ts.map +1 -1
  543. package/lib/types/dsh-adapter/channel/job-projection.js +88 -3
  544. package/lib/types/dsh-adapter/channel/mode-actions.d.ts +13 -3
  545. package/lib/types/dsh-adapter/channel/mode-actions.d.ts.map +1 -1
  546. package/lib/types/dsh-adapter/channel/mode-actions.js +55 -9
  547. package/lib/types/dsh-adapter/channel/mode-permission-actions.d.ts +8 -1
  548. package/lib/types/dsh-adapter/channel/mode-permission-actions.d.ts.map +1 -1
  549. package/lib/types/dsh-adapter/channel/mode-permission-actions.js +25 -10
  550. package/lib/types/dsh-adapter/channel/preferences.d.ts +1 -1
  551. package/lib/types/dsh-adapter/channel/preferences.d.ts.map +1 -1
  552. package/lib/types/dsh-adapter/channel/preferences.js +26 -8
  553. package/lib/types/dsh-adapter/channel/projection.d.ts.map +1 -1
  554. package/lib/types/dsh-adapter/channel/projection.js +42 -37
  555. package/lib/types/dsh-adapter/channel/reports.d.ts.map +1 -1
  556. package/lib/types/dsh-adapter/channel/reports.js +13 -4
  557. package/lib/types/dsh-adapter/channel/session-reset.d.ts +5 -1
  558. package/lib/types/dsh-adapter/channel/session-reset.d.ts.map +1 -1
  559. package/lib/types/dsh-adapter/channel/session-reset.js +1 -0
  560. package/lib/types/dsh-adapter/channel/state.d.ts +21 -3
  561. package/lib/types/dsh-adapter/channel/state.d.ts.map +1 -1
  562. package/lib/types/dsh-adapter/channel/state.js +3 -2
  563. package/lib/types/dsh-adapter/channel/subagent-projection.d.ts.map +1 -1
  564. package/lib/types/dsh-adapter/channel/subagent-projection.js +5 -0
  565. package/lib/types/dsh-adapter/channel/types.d.ts +1 -1
  566. package/lib/types/dsh-adapter/channel/types.d.ts.map +1 -1
  567. package/lib/types/dsh-adapter/channel/usage.d.ts +18 -1
  568. package/lib/types/dsh-adapter/channel/usage.d.ts.map +1 -1
  569. package/lib/types/dsh-adapter/channel/usage.js +97 -2
  570. package/lib/types/dsh-adapter/channel.d.ts +1 -1
  571. package/lib/types/dsh-adapter/channel.d.ts.map +1 -1
  572. package/lib/types/dsh-adapter/channel.js +72 -4
  573. package/lib/types/dsh-adapter/context-occupancy.d.ts +204 -0
  574. package/lib/types/dsh-adapter/context-occupancy.d.ts.map +1 -0
  575. package/lib/types/dsh-adapter/context-occupancy.js +299 -0
  576. package/lib/types/dsh-adapter/contract.d.ts +19 -4
  577. package/lib/types/dsh-adapter/contract.d.ts.map +1 -1
  578. package/lib/types/dsh-adapter/contract.js +33 -3
  579. package/lib/types/dsh-adapter/index.d.ts +32 -0
  580. package/lib/types/dsh-adapter/index.d.ts.map +1 -1
  581. package/lib/types/dsh-adapter/index.js +20 -1
  582. package/lib/types/dsh-adapter/jobs.d.ts +82 -16
  583. package/lib/types/dsh-adapter/jobs.d.ts.map +1 -1
  584. package/lib/types/dsh-adapter/jobs.js +104 -9
  585. package/lib/types/dsh-adapter/migrate/sessionize.d.ts.map +1 -1
  586. package/lib/types/dsh-adapter/migrate/sessionize.js +11 -12
  587. package/lib/types/dsh-adapter/oauth/bonus.d.ts +27 -0
  588. package/lib/types/dsh-adapter/oauth/bonus.d.ts.map +1 -0
  589. package/lib/types/dsh-adapter/oauth/bonus.js +69 -0
  590. package/{node_modules/@deepseek-harness-tui/dsh-auth/lib → lib/types/dsh-adapter/oauth}/command.d.ts +2 -1
  591. package/lib/types/dsh-adapter/oauth/command.d.ts.map +1 -0
  592. package/{node_modules/@deepseek-harness-tui/dsh-auth/lib → lib/types/dsh-adapter/oauth}/command.js +7 -4
  593. package/{node_modules/@deepseek-harness-tui/dsh-auth/lib → lib/types/dsh-adapter/oauth}/credentials.d.ts +13 -10
  594. package/lib/types/dsh-adapter/oauth/credentials.d.ts.map +1 -0
  595. package/{node_modules/@deepseek-harness-tui/dsh-auth/lib → lib/types/dsh-adapter/oauth}/credentials.js +61 -23
  596. package/lib/types/dsh-adapter/oauth/deepseek.d.ts +39 -0
  597. package/lib/types/dsh-adapter/oauth/deepseek.d.ts.map +1 -0
  598. package/lib/types/dsh-adapter/oauth/deepseek.js +189 -0
  599. package/{node_modules/@deepseek-harness-tui/dsh-auth/lib → lib/types/dsh-adapter/oauth}/index.d.ts +24 -16
  600. package/lib/types/dsh-adapter/oauth/index.d.ts.map +1 -0
  601. package/{node_modules/@deepseek-harness-tui/dsh-auth/lib → lib/types/dsh-adapter/oauth}/index.js +34 -20
  602. package/{node_modules/@deepseek-harness-tui/dsh-auth/lib → lib/types/dsh-adapter/oauth}/interaction.d.ts +14 -12
  603. package/lib/types/dsh-adapter/oauth/interaction.d.ts.map +1 -0
  604. package/lib/types/dsh-adapter/oauth/interaction.js +283 -0
  605. package/{node_modules/@deepseek-harness-tui/dsh-auth/lib → lib/types/dsh-adapter/oauth}/opener.d.ts +2 -1
  606. package/lib/types/dsh-adapter/oauth/opener.d.ts.map +1 -0
  607. package/{node_modules/@deepseek-harness-tui/dsh-auth/lib → lib/types/dsh-adapter/oauth}/opener.js +1 -1
  608. package/{node_modules/@deepseek-harness-tui/dsh-auth/lib → lib/types/dsh-adapter/oauth}/pi-ai.d.ts +10 -3
  609. package/lib/types/dsh-adapter/oauth/pi-ai.d.ts.map +1 -0
  610. package/{node_modules/@deepseek-harness-tui/dsh-auth/lib → lib/types/dsh-adapter/oauth}/pi-ai.js +8 -3
  611. package/{node_modules/@deepseek-harness-tui/dsh-auth/lib → lib/types/dsh-adapter/oauth}/profiles.d.ts +6 -3
  612. package/lib/types/dsh-adapter/oauth/profiles.d.ts.map +1 -0
  613. package/{node_modules/@deepseek-harness-tui/dsh-auth/lib → lib/types/dsh-adapter/oauth}/profiles.js +11 -3
  614. package/{node_modules/@deepseek-harness-tui/dsh-auth/lib → lib/types/dsh-adapter/oauth}/service.d.ts +14 -7
  615. package/lib/types/dsh-adapter/oauth/service.d.ts.map +1 -0
  616. package/{node_modules/@deepseek-harness-tui/dsh-auth/lib → lib/types/dsh-adapter/oauth}/service.js +82 -17
  617. package/lib/types/dsh-adapter/panel-runtime-registry.d.ts +39 -0
  618. package/lib/types/dsh-adapter/panel-runtime-registry.d.ts.map +1 -0
  619. package/lib/types/dsh-adapter/panel-runtime-registry.js +84 -0
  620. package/lib/types/dsh-adapter/panels.d.ts +251 -0
  621. package/lib/types/dsh-adapter/panels.d.ts.map +1 -0
  622. package/lib/types/dsh-adapter/panels.js +407 -0
  623. package/lib/types/dsh-adapter/plugin-host.js +1 -1
  624. package/lib/types/dsh-adapter/plugin.d.ts +25 -2
  625. package/lib/types/dsh-adapter/plugin.d.ts.map +1 -1
  626. package/lib/types/dsh-adapter/plugin.js +241 -44
  627. package/lib/types/dsh-adapter/presets.d.ts +26 -4
  628. package/lib/types/dsh-adapter/presets.d.ts.map +1 -1
  629. package/lib/types/dsh-adapter/presets.js +29 -5
  630. package/lib/types/dsh-adapter/providerWizard.d.ts.map +1 -1
  631. package/lib/types/dsh-adapter/providerWizard.js +6 -2
  632. package/lib/types/dsh-adapter/startup-args.d.ts +8 -0
  633. package/lib/types/dsh-adapter/startup-args.d.ts.map +1 -0
  634. package/lib/types/dsh-adapter/startup-args.js +34 -0
  635. package/lib/types/dsh-adapter/subagents.d.ts +1 -0
  636. package/lib/types/dsh-adapter/subagents.d.ts.map +1 -1
  637. package/lib/types/dsh-adapter/subagents.js +10 -1
  638. package/lib/types/history.d.ts +24 -7
  639. package/lib/types/history.d.ts.map +1 -1
  640. package/lib/types/history.js +77 -18
  641. package/lib/types/i18n.d.ts +908 -33
  642. package/lib/types/i18n.d.ts.map +1 -1
  643. package/lib/types/i18n.js +355 -17
  644. package/lib/types/ink/components/App.d.ts +14 -1
  645. package/lib/types/ink/components/App.d.ts.map +1 -1
  646. package/lib/types/ink/components/App.js +71 -61
  647. package/lib/types/ink/components/TerminalSizeContext.d.ts +7 -0
  648. package/lib/types/ink/components/TerminalSizeContext.d.ts.map +1 -1
  649. package/lib/types/ink/hooks/use-input.d.ts +11 -0
  650. package/lib/types/ink/hooks/use-input.d.ts.map +1 -1
  651. package/lib/types/ink/hooks/use-input.js +8 -2
  652. package/lib/types/ink/hooks/use-terminal-viewport.d.ts.map +1 -1
  653. package/lib/types/ink/hooks/use-terminal-viewport.js +3 -1
  654. package/lib/types/ink/ink.d.ts +18 -0
  655. package/lib/types/ink/ink.d.ts.map +1 -1
  656. package/lib/types/ink/ink.js +51 -8
  657. package/lib/types/ink/output.d.ts +10 -1
  658. package/lib/types/ink/output.d.ts.map +1 -1
  659. package/lib/types/ink/output.js +3 -3
  660. package/lib/types/ink/parse-keypress.d.ts +71 -3
  661. package/lib/types/ink/parse-keypress.d.ts.map +1 -1
  662. package/lib/types/ink/parse-keypress.js +815 -133
  663. package/lib/types/ink/render-node-to-output.d.ts +1 -1
  664. package/lib/types/ink/render-node-to-output.d.ts.map +1 -1
  665. package/lib/types/ink/render-node-to-output.js +37 -5
  666. package/lib/types/ink/screen.d.ts +26 -1
  667. package/lib/types/ink/screen.d.ts.map +1 -1
  668. package/lib/types/ink/screen.js +96 -1
  669. package/lib/types/ink/selection.d.ts +23 -1
  670. package/lib/types/ink/selection.d.ts.map +1 -1
  671. package/lib/types/ink/selection.js +102 -26
  672. package/lib/types/ink/sixel-codec.d.ts +11 -0
  673. package/lib/types/ink/sixel-codec.d.ts.map +1 -1
  674. package/lib/types/ink/sixel-codec.js +42 -8
  675. package/lib/types/ink/terminal-querier.d.ts +25 -0
  676. package/lib/types/ink/terminal-querier.d.ts.map +1 -1
  677. package/lib/types/ink/terminal-querier.js +42 -0
  678. package/lib/types/ink/update-overflow-guard.d.ts +24 -0
  679. package/lib/types/ink/update-overflow-guard.d.ts.map +1 -1
  680. package/lib/types/ink/update-overflow-guard.js +25 -3
  681. package/lib/types/math/renderer.d.ts +2 -0
  682. package/lib/types/math/renderer.d.ts.map +1 -1
  683. package/lib/types/math/renderer.js +4 -0
  684. package/lib/types/minimalUiMode.d.ts +19 -0
  685. package/lib/types/minimalUiMode.d.ts.map +1 -0
  686. package/lib/types/minimalUiMode.js +23 -0
  687. package/lib/types/oauth.d.ts +5 -10
  688. package/lib/types/oauth.d.ts.map +1 -1
  689. package/lib/types/oauth.js +5 -10
  690. package/lib/types/onboardingPrefs.d.ts +52 -0
  691. package/lib/types/onboardingPrefs.d.ts.map +1 -0
  692. package/lib/types/onboardingPrefs.js +107 -0
  693. package/lib/types/panels.d.ts +4 -0
  694. package/lib/types/panels.d.ts.map +1 -0
  695. package/lib/types/panels.js +4 -0
  696. package/lib/types/screens/Chat.d.ts +25 -1
  697. package/lib/types/screens/Chat.d.ts.map +1 -1
  698. package/lib/types/screens/Chat.js +1149 -302
  699. package/lib/types/screens/Launchpad.d.ts +194 -0
  700. package/lib/types/screens/Launchpad.d.ts.map +1 -0
  701. package/lib/types/screens/Launchpad.js +607 -0
  702. package/lib/types/screens/Onboarding.d.ts +37 -0
  703. package/lib/types/screens/Onboarding.d.ts.map +1 -0
  704. package/lib/types/screens/Onboarding.js +492 -0
  705. package/lib/types/screens/SessionSupervisor.d.ts.map +1 -1
  706. package/lib/types/screens/SessionSupervisor.js +18 -12
  707. package/lib/types/screens/StatusLine.d.ts +4 -0
  708. package/lib/types/screens/StatusLine.d.ts.map +1 -1
  709. package/lib/types/screens/StatusLine.js +43 -25
  710. package/lib/types/screens/StatusMetrics.d.ts +22 -0
  711. package/lib/types/screens/StatusMetrics.d.ts.map +1 -1
  712. package/lib/types/screens/StatusMetrics.js +20 -0
  713. package/lib/types/screens/chatOverlay.d.ts +18 -1
  714. package/lib/types/screens/chatOverlay.d.ts.map +1 -1
  715. package/lib/types/screens/chatOverlay.js +3 -0
  716. package/lib/types/screens/sessionSupervisor/model.d.ts +1 -2
  717. package/lib/types/screens/sessionSupervisor/model.d.ts.map +1 -1
  718. package/lib/types/screens/sessionSupervisor/model.js +4 -2
  719. package/lib/types/screens/sessionSupervisor/useSessionSupervisor.d.ts.map +1 -1
  720. package/lib/types/screens/sessionSupervisor/useSessionSupervisor.js +7 -3
  721. package/lib/types/settings/definitions.d.ts +93 -0
  722. package/lib/types/settings/definitions.d.ts.map +1 -1
  723. package/lib/types/settings/definitions.js +87 -4
  724. package/lib/types/tips.d.ts.map +1 -1
  725. package/lib/types/tips.js +13 -7
  726. package/lib/types/tuiDisplayPrefs.d.ts +42 -2
  727. package/lib/types/tuiDisplayPrefs.d.ts.map +1 -1
  728. package/lib/types/tuiDisplayPrefs.js +74 -0
  729. package/lib/types/update.d.ts +53 -9
  730. package/lib/types/update.d.ts.map +1 -1
  731. package/lib/types/update.js +103 -46
  732. package/lib/types/utils/bmp.d.ts.map +1 -1
  733. package/lib/types/utils/bmp.js +8 -1
  734. package/lib/types/utils/clipboard.d.ts.map +1 -1
  735. package/lib/types/utils/clipboard.js +25 -6
  736. package/lib/types/utils/credentials.d.ts.map +1 -1
  737. package/lib/types/utils/credentials.js +5 -1
  738. package/lib/types/utils/draftWordBoundary.d.ts +23 -0
  739. package/lib/types/utils/draftWordBoundary.d.ts.map +1 -0
  740. package/lib/types/utils/draftWordBoundary.js +161 -0
  741. package/lib/types/utils/fileTarget.d.ts.map +1 -1
  742. package/lib/types/utils/fileTarget.js +7 -9
  743. package/lib/types/utils/inputPaste.d.ts +62 -0
  744. package/lib/types/utils/inputPaste.d.ts.map +1 -0
  745. package/lib/types/utils/inputPaste.js +111 -0
  746. package/lib/types/utils/intl.d.ts +8 -0
  747. package/lib/types/utils/intl.d.ts.map +1 -1
  748. package/lib/types/utils/intl.js +11 -0
  749. package/lib/types/utils/keymap.d.ts +13 -3
  750. package/lib/types/utils/keymap.d.ts.map +1 -1
  751. package/lib/types/utils/keymap.js +27 -5
  752. package/lib/types/utils/pastedImagePath.d.ts +8 -0
  753. package/lib/types/utils/pastedImagePath.d.ts.map +1 -1
  754. package/lib/types/utils/pastedImagePath.js +29 -5
  755. package/package.json +128 -106
  756. package/presets/liangshen/agent.cordis.yml +4 -1
  757. package/presets/liangshen/preset.yml +1 -1
  758. package/{dsh-ecosystem-spec → tui-profile}/registry/README.md +1 -1
  759. package/{dsh-ecosystem-spec → tui-profile}/registry/registry-0.15.json +1 -1
  760. package/lib/types/minimalMode.d.ts +0 -13
  761. package/lib/types/minimalMode.d.ts.map +0 -1
  762. package/lib/types/minimalMode.js +0 -17
  763. package/node_modules/@deepseek-harness-tui/dsh-auth/LICENSE +0 -21
  764. package/node_modules/@deepseek-harness-tui/dsh-auth/README.md +0 -143
  765. package/node_modules/@deepseek-harness-tui/dsh-auth/cordis.patch.yml +0 -11
  766. package/node_modules/@deepseek-harness-tui/dsh-auth/dsh-plugin.json +0 -44
  767. package/node_modules/@deepseek-harness-tui/dsh-auth/lib/interaction.js +0 -193
  768. package/node_modules/@deepseek-harness-tui/dsh-auth/package.json +0 -69
  769. /package/{dsh-ecosystem-spec → tui-profile}/protocols/profile-definitions.d.ts +0 -0
  770. /package/{dsh-ecosystem-spec → tui-profile}/protocols/profile-definitions.js +0 -0
  771. /package/{dsh-ecosystem-spec → tui-profile}/protocols/tui-channel-http.d.ts +0 -0
  772. /package/{dsh-ecosystem-spec → tui-profile}/protocols/tui-channel-http.js +0 -0
  773. /package/{dsh-ecosystem-spec → tui-profile}/protocols/tui-channel.d.ts +0 -0
  774. /package/{dsh-ecosystem-spec → tui-profile}/protocols/tui-channel.js +0 -0
  775. /package/{dsh-ecosystem-spec → tui-profile}/protocols/tui-contributions.d.ts +0 -0
  776. /package/{dsh-ecosystem-spec → tui-profile}/protocols/tui-contributions.js +0 -0
  777. /package/{dsh-ecosystem-spec → tui-profile}/registry/contracts/decision-events-v1alpha1.json +0 -0
  778. /package/{dsh-ecosystem-spec → tui-profile}/registry/contracts/scene-v1alpha1.json +0 -0
  779. /package/{dsh-ecosystem-spec → tui-profile}/registry/contracts/settings-section-v1alpha1.json +0 -0
  780. /package/{dsh-ecosystem-spec → tui-profile}/registry/contracts/tui-channel-v1alpha1.json +0 -0
  781. /package/{dsh-ecosystem-spec → tui-profile}/registry/contracts/workspace-provider-v1alpha1.json +0 -0
  782. /package/{dsh-ecosystem-spec → tui-profile}/registry/host-descriptor.tui.example.json +0 -0
  783. /package/{dsh-ecosystem-spec → tui-profile}/registry/permissions-0.1.json +0 -0
  784. /package/{dsh-ecosystem-spec → tui-profile}/schemas/conformance-claim.schema.json +0 -0
  785. /package/{dsh-ecosystem-spec → tui-profile}/schemas/effect-ledger-record.schema.json +0 -0
  786. /package/{dsh-ecosystem-spec → tui-profile}/schemas/host-descriptor.schema.json +0 -0
@@ -0,0 +1,793 @@
1
+ # 交互与命令
2
+
3
+ [文档索引](README.md) · [English](interaction.en.md)
4
+
5
+ ## 输入与全局快捷键
6
+
7
+ | 按键 | 行为 |
8
+ | --- | --- |
9
+ | `Enter` | 空闲时发送;模型工作时把文本 steer 到当前回合的下一步边界;菜单打开时确认选项 |
10
+ | `Tab` | 补全 `/` 命令或 `@` 文件;模型工作且输入非空时排入当前回合之后的 follow-up |
11
+ | `Ctrl+Enter` | 打断当前回合并立即处理输入消息 |
12
+ | `Shift+Enter` / `Ctrl+J` | 在光标处插入换行;终端无法上报 Shift 修饰键时可用 `Ctrl+J`(LF)兜底,macOS Terminal.app 用 `Option+Enter` |
13
+ | `Shift+Tab` | 在配置的会话模式间循环(默认:默认 → 计划模式 → 完全访问);运行时可用的第三方 permission preset 按 registry 顺序追加到循环末尾,`custom`/`status`、canonical 预设、重复 identity 和不安全 token 不加入 |
14
+ | `Alt/Option+Up` | 把最后一条尚未处理的消息取回输入框编辑 |
15
+ | `Up/Down` | 菜单选择;普通输入中浏览历史或在多行文本间移动 |
16
+ | `Ctrl+V` / `Alt+V` | 从系统剪贴板插入文本或文件;图片作为持久附件发送。终端拦截 `Ctrl+V` 时用 `Alt+V` |
17
+ | `Ctrl+G` | 用外部编辑器(`$VISUAL` → `$EDITOR`)编辑当前输入,保存退出后回填;`:cq` 或非零退出保留原稿;未设置变量时提示配置,无 `vi` 兜底 |
18
+ | `Ctrl+Shift+E` | 展开全屏草稿编辑器(也可点输入行尾 `⛶`):行号 + 当前行高亮 + 行/字统计,`Enter` 换行、`Ctrl+Enter` 或「发送」按钮发送、`Esc` 或「收起」按钮收起(草稿保留);滚轮自由滚动、点击定位/拖选/双击选词与输入框一致;可经 `/settings` 重映射 |
19
+ | `Ctrl+Z` | 撤销输入框草稿的上一步「词级」编辑(文本、光标、图片一起回退)。只作用于草稿:提交、历史召回(`Ctrl+R`/`↑`)或换会话后即结束;`Esc Esc` 的会话/消息回溯与它不是一回事。可经 `/settings` 重映射 |
20
+ | `Esc` | 层级:关帮助 → 关图片预览 → 关命令菜单 → 关文件菜单(仅当前 `@` token)→ **输入框内有选区时仅清选区(文本不动)** → 中断回合并重投 pending 消息 → 有输入时清空 → 空输入连续两次 = 时间回溯 rewind;fullscreen 下有鼠标选区时优先取消选区(不复制) |
21
+ | 图片预览打开时 `Esc` / `Ctrl+C` / `Enter` | 关闭预览,恢复下层界面;其余按键不透传 |
22
+ | 图片弹窗中的 `←` / `→` | 上一张 / 下一张;首尾不循环,临时光标预览不抢输入框方向键 |
23
+ | `Ctrl+C` | 工作时中断;中断迟迟不收敛时再按一次强制退出;空闲且有输入时清空;**空闲且输入框内有选区时复制选区到剪贴板(保留选区继续编辑)**;空输入时连续两次退出 |
24
+ | `Ctrl+D` | 与 `Ctrl+C` 同阶梯:工作中=中断(未收敛时再按=强制退出);空闲时连续两次退出 |
25
+ | `Ctrl+O` | 切换 transcript/verbose 详情,展开思考与完整工具参数/输出;也是**超长单行折叠**(单行 > 1000 字符裁到 1000 + `… 已折叠 N 字符` 标记,见 user guide §5)的展开逃生门——鼠标点被折叠的那一行(或工具卡卡面)同样能展开/收起 |
26
+ | `Ctrl+P` | 切换启动时加载的 loaded-context 面板(面板在屏时有效) |
27
+ | `Ctrl+B` | 侧栏三态:未开 → 打开并聚焦右栏;已开且焦点在聊天 → 聚焦右栏;焦点在右栏 → 关闭并回聊天。仅 fullscreen 且内容区 ≥93 列可分栏,窄屏与 inline 下此键不生效(`/jobs` 等仍走整屏面板,见用户指南 §2.8) |
28
+ | `Alt+Z` | 缩放当前侧栏面板(聊天列保留最小宽度),再按恢复 |
29
+ | `Ctrl+T` | 打开轨迹场景(等同 `/trace`);场景内 `q`/`Esc` 返回对话 |
30
+ | `Ctrl+R` | 打开输入历史搜索;重复按或 `Down` 移到下一项 |
31
+ | `Ctrl+L` | 强制清理并重绘物理终端 |
32
+ | `?` | 输入框为空时打开快捷键和命令帮助 |
33
+ | Help 内 `↑/↓`、`PgUp/PgDn`、`Home/End` | 逐行滚动、翻页或跳到命令列表首尾;`Esc` 关闭 |
34
+ | 转录内 `PgUp` / `PgDn` | 全屏模式按页翻动消息列表(每页一屏减一行);Help 或浮层打开时让位(各滚各的);inline 模式不接管——历史在终端原生 scrollback 里,翻页归终端 |
35
+ | `Shift+Up` | 进入消息选择模式;方向键移动,`Enter` 展开单条,`Esc` 退出 |
36
+
37
+ 动作型快捷键支持在 `/settings` → `dsh-tui` → `Shortcuts` 自定义。
38
+
39
+ - 覆盖:粘贴、历史搜索、外部编辑器、`Ctrl+O/T/P/R/L`、侧栏(`Ctrl+B`、`Alt+Z`)、子代理面板、显示全部、待办折叠。
40
+ - 填 `alt+v` 这类组合,多个用逗号分隔;留空恢复默认,保存即生效。
41
+ - 与固定编辑键或其它动作冲突的组合会被拒绝。
42
+ - cordis.yml 可用 `shortcuts.<action>` 静态指定。
43
+
44
+ `/` 有两种用途:普通输入模式打开 slash command 补全;`Ctrl+O` 的 transcript 模式打开会话全文搜索。
45
+
46
+ - 全文搜索用 `n`/`N` 在结果间前后跳转。
47
+
48
+ 插件可经 `tuiShortcuts` 接缝注册额外组合键。
49
+
50
+ - 组合键必须带 Ctrl 或 Alt;内建绑定永远优先。
51
+ - 冲突的组合在注册时就会被拒绝。
52
+
53
+ 插件弹出的托管对话框(select/confirm/input)打开期间独占键盘:
54
+
55
+ - `↑`/`↓` 移动,`Enter` 确认,`Esc` 取消。
56
+
57
+ 插件还能加一行纯文本,或经 `tuiStatus.registerView` 显示紧凑富状态:
58
+
59
+ - 富状态最多三行,只能用宿主的 `Box`、`Text`、`Image` 与终端尺寸。
60
+ - 点击/悬停/拖动只在 fullscreen 下生效,不会取得键盘。
61
+ - `Image` 接收已解码 RGBA,另有同尺寸字符回退。
62
+ - 探测到 Kitty graphics 时,按终端报告的单元格像素比例等比居中。
63
+ - 像素比例不可用时用保守默认值;必要时透明留边并降采样。
64
+ - 否则自动显示回退内容(inline、辅助功能、多路复用器同样如此)。
65
+
66
+ 同一动作的键盘路径由插件另提供 slash 命令,或注册 `tuiShortcuts`。
67
+
68
+ - 富状态注册被拒绝时返回 `undefined`。
69
+ - 注册成功时返回 disposer,会同时撤下视图和对应 Cordis effect。
70
+
71
+ ### 落地页与首次引导
72
+
73
+ 启动**落地页**与**首次引导向导**各自独占键盘;两者都只把结果交回对话页,不新增行为。
74
+
75
+ - **落地页**:可打印字符接进输入框(行首 `/` 时前缀由 `❯` 变 `⌘`),`Backspace`/`Delete`/`←`/`→`/`Home`/`End` 编辑;
76
+ - **落地页**:可打印字符接进输入框(行首 `/` 时前缀由 `❯` 变 `⌘`),`Backspace`/`Delete`/`←`/`→`/`Home`/`End` 编辑;
77
+ 输入光标是**压在当前字符身上的反显块**(对那一个字符 inverse,行尾是反显空格),闪烁是纯样式切换
78
+ (inverse ↔ 常规,约 550ms 一相位),绝不另起一格、绝不吃掉字符;`Alt+R` 继续最近一条会话
79
+ (= 入口行第一格「继续「…」」,仅此屏生效,无可继续会话时无动作,键位可在 `/settings` 改);
80
+ **执行**选中命令,`Esc` 只收面板、草稿不动);面板没收时 `Enter` 直接**发送**这一行(行首 `/` 的命令——含
81
+ 插件/registry 命令——按对话页同一条合并命令表判定,是命令就不发模型);
82
+ `↑`/`↓`/`Tab` 沿焦点环走(输入框 → 框下参数行四段 → 快捷入口行 → Tips 行),`Enter` 激活焦点上的那一条
83
+ (焦点在 Tips 行上 `Enter` = 切下一条 Tip),在入口/参数段上敲字会把焦点收回输入框;有字时 `Esc` 只清空,
84
+ 空输入 `Esc` 去看会话,空输入 `Ctrl+C` 走退出漏斗。
85
+ - **落地页参数行**(框下一行:模型 · 思考深度 · 模式 · 权限;模型段只显示模型名,模式段显示 agent preset
86
+ 的显示名——Standard/PTC/极简…):四段**各自可点**,点开的就是对话页同一套选择器
87
+ (`/model` · `/effort` · `/preset` · `/permission`),选择器**盖在落地页之上**、吃走键盘
88
+ (`Esc` 关掉它回到落地页),选中的值就地更新参数行、已输入的草稿不动;选择器开着时点它内部是选择,
89
+ **点别处会关掉它、点另一段会直接切换**成那个选择器。
90
+ - **入口行(第七版四格)**:`继续「…」`(Alt+R;无可继续会话时整格不画)· `会话与工作区`(`/home`,
91
+ 历史会话与工作区合并成一个入口)· `设置`(`/settings`)· **条件位**(优先级:有后台任务在跑 →
92
+ `后台任务`;检测到新版本 → `有新版本`;用量到档且从未 star → `投喂一颗 Star`;兜底 `帮助`)。
93
+ 从落地页打开的整屏界面(会话与工作区 / 设置 / 后台任务 / 家谱 / 引导向导)都**盖在落地页之上**,
94
+ `Esc` 退出回到落地页(草稿/参数/焦点原样保留);**离开落地页进对话页的唯一方式是回车提交一条
95
+ 非命令消息**。落地页这一侧的浮层(选择器/命令面板)是**干净的镂空**——矩形内空格占位
96
+ 遮掉宿主屏的字形(绝不重影)、不发背景色(无白底;Kitty 立绘图像仍从终端默认背景透出;
97
+ 聊天页同款选择器不受影响)。
98
+ - **Tips 行**:可点击轮换(三条 Tips 循环;首启那一句优先级最高、不参与轮换),键盘路径 = 焦点环 + `Enter`;
99
+ 第七版起还**自动轮换**(约 10s 一换,手动切换后计时重置),切换只改文本、行高与居中位置不变。
100
+ - **双角铭牌(第七版)**:左下角工作目录**可点**——点开既有的 `/workspace` 菜单
101
+ (盖在落地页之上、`Esc` 回落地页),键盘路径 = 焦点环末格 + `Enter`,悬停/焦点 =
102
+ 文字高亮;右下角是**双版本竖排两行**:第一行 `dsh-tui v<TUI>`、第二行
103
+ `dsh-core v<内核>`(内核版本读宿主/内核线包的 manifest,读不到只画 TUI 一行),
104
+ 两行都右对齐、左下目录铭牌与第一行顶对齐,窄屏按既有 truncate-middle 截断。
105
+ - **引导向导**:`←`/`→` 换步骤(例外:第三步的强度区、以及已钻进去的模型列表,横向键归子控件,不换步骤)、
106
+ `Tab` 在「语言 / 主题」与「模型 / 强度 / 工作区」两组面板间切、`↑`/`↓` 移动选择;
107
+ `Enter` 执行这一步(第一步 = 重新检查连通性,第三步 = 钻进 provider / 换模型 / 打开工作区选择器——**强度不走 Enter**,只用 `←`/`→` 调且移动即生效);
108
+ 主题面板移动光标即预览,**语言面板要 `Enter` 才生效**;最后一步的 `Enter` 在**键位卡**上「完成」并记账,
109
+ 在命令卡上则是「试一下」;`Esc` 跳过(**不记账**,下次启动再问)。
110
+ - **鼠标**(fullscreen):落地页的快捷入口(悬停 = 文字变主题蓝加粗,移开复原)、参数行四段、命令补全面板、
111
+ Tips 行、引导招式卡的「试一下」与工作区选择器都可点,点击与键盘落到同一条命令路径。
112
+
113
+ ## 输入编辑
114
+
115
+ | 按键 | 行为 |
116
+ | --- | --- |
117
+ | `Left/Right` | 按字符移动光标;**有选区时坍缩到选区对应边缘** |
118
+ | `Ctrl+Left/Right` | 按单词移动 |
119
+ | `Home/End` | 移到当前逻辑行首/行尾 |
120
+ | `Ctrl+A` / `Ctrl+E` | `Ctrl+A` 打开子代理面板(编辑器内 `Mod+A` 仍移到行首);`Ctrl+E` 移到行尾,还会展开或折叠长会话中隐藏的旧消息 |
121
+ | `Ctrl+U` | 删除光标前内容 |
122
+ | `Ctrl+K` | 删除光标后内容 |
123
+ | `Ctrl+W` | 删除前一个单词 |
124
+ | `Backspace` / `Delete` | 删前一 / 后一字符;**有选区时删除整个选区** |
125
+ | 打字 | **有选区时替换整个选区**,光标落在插入文本之后 |
126
+
127
+ ### vim 编辑模式(`/vim`)
128
+
129
+ `/vim` 切换输入框的 vim 编辑模式(会话级、不持久化)。
130
+
131
+ - 开启后输入框左侧出现 `INSERT` 徽标,打字照常。
132
+ - `Esc` 切到 `NORMAL` 徽标,裸键按 vim 规则处理。
133
+
134
+ | NORMAL 键 | 行为 |
135
+ | --- | --- |
136
+ | `h` / `l` | 左 / 右移一个字符 |
137
+ | `j` / `k` | 下 / 上一行(多行输入) |
138
+ | `0` / `^` / `$` | 行首 / 行首首个非空白 / 行尾 |
139
+ | `w` / `b` | 下一个 / 上一个词首(空白分词) |
140
+ | `x` / `X` | 删除光标处 / 光标前字符(行尾时 `x` 删最后一个字符) |
141
+ | `d` + 第二键 | `dd` 删整行(含换行)· `d$` 删至行尾 · `d0`/`d^` 删至行首 · `dw` 删至词尾 |
142
+ | `u` | 撤销最近一次 vim 编辑(栈上限 100) |
143
+ | `i` / `I` / `a` / `A` | 光标处 / 行首首个非空白 / 光标后 / 行尾进入 INSERT |
144
+ | `o` / `O` | 下方 / 上方新建一行并进入 INSERT |
145
+ | `/` | 插入 `/` 并切回 INSERT(打开命令菜单) |
146
+ | `Esc` | 取消待决 `d`;其余无操作(不触发现有清空 / 双击 rewind 行为) |
147
+ | `Enter` / `Tab` / 方向键 / `Ctrl+*` 组合 | 照常放行(发送、补全、历史、编辑快捷键等) |
148
+ | 其他裸键 | 忽略,不插入 |
149
+
150
+ 注意:vim 开启时 `Esc` 归 vim 管。
151
+
152
+ - 时间回溯:退出 vim 模式后双击 `Esc`,或用 `/rewind`。
153
+ - 回合运行中 insert 模式按 `Esc` 只回 normal;打断回合用 `Ctrl+C` / `Ctrl+Enter`。
154
+ - NORMAL 下清空输入用 `Ctrl+C` 或 `dd`。
155
+
156
+ Bracketed paste(右键或终端原生粘贴)保留普通文本与换行。
157
+
158
+ - 不会把粘贴内容误当成 `Enter` 提交。
159
+ - 为保显示、点击与选区几何一致,剥离终端 ANSI 控制序列。
160
+ - 多行粘贴不再留下 `_`:Windows 终端以 win32-input-mode 逐条记录投递时,残留的键记录(`ESC[Vk;Sc;Uc;Kd;Cs;Rc_` 完整形态,或记录拆散后无 ESC 的尾部)在入口整体剥离;只匹配 5 段分号的记录语法,普通文本里的真实 `_` 与形似记录的方括号文本不受影响。
161
+ - CRLF 折叠:粘贴内容里的 CR+LF 只产生一个换行,不再多出空行;LF-only 与单独 CR 行为不变。
162
+ - `Tab` 进入编辑缓冲区时展开为空格。
163
+
164
+ ### 全屏草稿编辑(`Ctrl+Shift+E` / `⛶`)
165
+
166
+ 长草稿不再挤 5 行小窗。
167
+
168
+ - `Ctrl+Shift+E`(可重映射)或输入行尾的 `⛶` 按钮,把草稿展开成整屏编辑器。
169
+ - 编辑状态(光标/选区/折叠/vim 模式)与输入框是同一份。
170
+ - 可在 `/settings` → `dsh-tui` 关闭(`expandEditor`,默认开)。
171
+ - 关闭后 `⛶` 与快捷键两个入口都不再出现。
172
+
173
+ - **外观**:
174
+ - 圆角边框随会话强调色/plan 色联动。
175
+ - 左侧行号槽,宽度随行数伸缩,光标行号提亮。
176
+ - 光标行整行浅底色。
177
+ - 标题行实时显示行数/字数。
178
+ - 状态行显示 `行 L · 列 C` 与 vim 徽标(`/vim` 开启时)。
179
+ - **键位**:
180
+ - `Enter` 换行(绝不误发送)。
181
+ - `Ctrl+Enter` 或「⏎ 发送」按钮发送并收起。
182
+ - `Esc` 分层:先清选区,再收起编辑器,草稿保留。
183
+ - `Tab` 插入 4 空格缩进。
184
+ - 其余编辑键与输入框一致:方向/词跳/Home/End/`Ctrl+U/K/W`、vim NORMAL 键位。
185
+ - **折叠块互斥**:
186
+ - 收起态粘贴大文本照旧折叠成 chip。
187
+ - 编辑器展开块即散开(与点击 chip 展开同一行为)。
188
+ - 展开期间粘贴一律是纯文本、直接可编辑。
189
+ - 收起后也不会再变回块。
190
+ - **鼠标**:
191
+ - 点击定位光标、拖拽建选区、双击选词、`Ctrl+C` 复制选区。
192
+ - 几何按行号槽宽度校正。
193
+ - 滚轮自由滚动;浏览时不强制跳回光标。
194
+ - 任何光标移动后恢复跟随。
195
+ - 「发送」「收起」按钮可点击且 hover 提亮。
196
+ - 与 `Ctrl+G` 外部编辑器互补:不依赖 `$VISUAL/$EDITOR`,不离开终端。
197
+
198
+ ## @ 文件引用
199
+
200
+ 在消息**任意位置**输入 `@` 打开文件补全菜单。
201
+
202
+ - 输入即过滤,`Tab`/`Enter` 选择,目录可继续深入。
203
+ - 普通片段走**模糊匹配**(`@ment` 命中 `src/utils/mentions.ts`;前缀/边界命中优先,短路径优先)。
204
+ - 路径形态(`@src/`、`@./`、`@../`、`@~/`、`@D:\` 或含分隔符)只读**该目录**,不全仓扫描。
205
+ - `Esc` 只关当前 `@` token 的菜单。
206
+ - 异步候选刷新时按候选身份保持当前选中项。
207
+
208
+ 发送消息时:
209
+
210
+ - 文本文件内容或目录列表会自动附加到消息。
211
+ - PNG、JPEG、WebP、GIF 经 Harness 附件库作为真正的图片块发送。
212
+ - 文件读取走当前 workspace 的 FS 服务;提供者管理的 workspace 同样适用。
213
+
214
+ ### 粘贴与 `[Image #N]`
215
+
216
+ `Ctrl+V` 粘贴时:
217
+
218
+ - 文件管理器(Finder、Windows Explorer、GNOME Files、KDE Dolphin 等)复制的普通文件插入路径。
219
+ - 复制的图片文件与剪贴板位图一样,直接保存到附件库。
220
+ - 输入框显示 `[Image #N]`;暂存失败退回 `@` 引用。
221
+ - 发送时变成真正的图片块;输入文本不含 base64。
222
+
223
+ 终端把拖放转发为粘贴文本时(如 Ghostty 经 PTY 发送转义路径):
224
+
225
+ - 只有整段粘贴恰为一个存在的本地图片路径才暂存。
226
+ - 任何歧义都原样保留文本。
227
+
228
+ 暂存的 `[Image #N]` 在输入框里是一个整体。
229
+
230
+ - 光标不会停在它内部,`←`/`→` 整体跳过。
231
+ - 光标在其末尾按 `Backspace`、在其起点按 `Delete`、或按 `Ctrl+W`,都整体删除。
232
+ - 选区边缘落在其中会扩到整个 token。
233
+
234
+ 它的显示与预览:
235
+
236
+ - 以主题强调色显示;光标位于起点时整块反显。
237
+ - 点击它把光标放到起点,并打开预览。
238
+ - 整块反显(光标在起点)时预览自动打开,光标离开自动关闭。
239
+ - 停在 token 后面一格不算在其上。
240
+ - 预览打开期间键盘仍归输入框;方向键可在多张图片间移动,预览跟着切换。
241
+ - `Esc` 或点击卡片外只关当前 token 的预览。
242
+ - 光标离开再回来会重新打开;点击 token 总是打开。
243
+ - 手动输入或从历史恢复、没有附件能力的同形文本仍是普通文字。
244
+
245
+ ### 全屏大图预览
246
+
247
+ - 打开:点击输入框里的 `[Image #N]` 或 transcript 缩略图,在对话区内打开同一个居中大图预览。
248
+ - 输入栏、状态行与置顶提示保持可见;`Esc` 或点击卡片外关闭,窄终端显示纯元数据卡。
249
+ - 标题格式 `Image #N — 格式 · 宽×高 · 体积 · 文件名`。
250
+ - 底行:本次暂存的图片显示来源路径(`打开原图: …`,过长保留首尾、省略中间);历史图片显示文件名。
251
+ - 「打开原图」用系统看图程序打开附件库原始字节,不依赖可能已删除或被修改的来源路径,也不重新编码。
252
+ - 原图仅在点击时导出到私有的 `dsh-tui-original-*` 系统临时目录,退出 TUI 后保留供外部程序读取,可随后通过系统临时文件清理删除。
253
+ - 失效的 `[Image #N]`(超过 128 个暂存或会话切换后)在点击、发送、作为斜杠命令参数时都会给出明确警告。
254
+
255
+ ### 缩略图与回退
256
+
257
+ - 发送后,用户图片从持久化会话事件重新投影到 transcript;助手/工具结果含图片块也走同一预览路径。
258
+ - 有 Kitty graphics 或 Sixel 时显示缩略图;否则(inline、辅助功能、多路复用器或读取失败)显示文字回退。
259
+ - 切换或恢复会话不依赖原始本地路径。
260
+
261
+ ### 缩放、平移与翻页
262
+
263
+ - 缩放:适应(整图)/ 100%(原图局部);`+`/`-` 在 100%、200%、400%、800% 间切换,标题显示比例。
264
+ - 100% 需要终端报告有效字符格像素尺寸才启用。
265
+ - 平移:拖动图片、滚轮、四个方向按钮;键盘归属与 `Esc` 关闭行为不变。
266
+ - 换图:`←`/`→` 和底部 `‹`/`›` 上一张、下一张,显示 `当前张/总张数`,首尾不循环。
267
+ - 从 transcript 打开按当前会话消息顺序浏览,未访问图片不预读;输入框预览按有附件能力的 token 顺序浏览。
268
+ - 点击切图按钮进入大图弹窗,不改动草稿;仅光标触发的临时预览仍把方向键留给输入框。
269
+ - 切图回到适应窗口,旧图异步任务会取消;会话切换或阻塞对话框出现时关闭弹窗。
270
+ - 需要原始色彩或动画时用「打开原图」。
271
+
272
+ ## 界面语言
273
+
274
+ `/lang` 在简体中文与英文界面之间切换(影响所有 UI 文案)。
275
+
276
+ - 选择持久化,重启后沿用(0.3.7+)。
277
+ - `/settings` 的 **dsh-tui → 界面语言** 下拉项同样可以切换。
278
+ - 立即生效并保存到当前 profile 配置的 `dsh-tui.lang`(旧版为 `~/.dsh/settings.yaml`)。
279
+ - `DSH_TUI_LANG` 环境变量始终优先。
280
+
281
+ ## 消息投递语义
282
+
283
+ 模型正在工作时有三种不同路径:
284
+
285
+ | 操作 | 放置位置 |
286
+ | --- | --- |
287
+ | `Enter` | steer:送入正在运行的回合,在下一步边界被 Agent 领取 |
288
+ | `Tab` | follow-up:等待当前回合结束后再处理 |
289
+ | `Ctrl+Enter` | interrupt:中断当前回合并立即投递 |
290
+
291
+ 输入框上方会显示尚未领取的消息。
292
+
293
+ - `Alt/Option+Up` 取回最后一条。
294
+ - 模型工作时按 `Esc` 会中断,并立即重投当前 pending 消息。
295
+
296
+ ## 会话工作流
297
+
298
+ ### 会话管理(`/resume`、`/home`、`/agentview`、`/bg`、输入框 `⌸`)
299
+
300
+ 四条命令和输入框行首的 `⌸` 按钮打开的是**同一个界面**。
301
+
302
+ - 左边是工作区(durable registry)栏,右边是所选工作区里的会话列表。
303
+ - 每行带该会话的实时状态。
304
+ - 原来是三个各自演化的实现(会话浏览器 / 会话总览 / 工作区首页)。
305
+ - 同一个会话会被三个界面各自列出、各自定义"打开"的含义。
306
+ - 所以现在只剩一个界面、一套选择模型。
307
+
308
+ 界面描述运行时的真实模型:**一个 TUI 进程同时托管多个会话**。
309
+
310
+ - 被切走的会话是**停放**,不是结束。
311
+ - 正在跑的回合继续跑,切回来照旧。
312
+ - 离开一个会话不需要任何确认,也没有"停止"这一操作。
313
+
314
+ 打开这个界面**不会丢掉没发出去的草稿**。
315
+
316
+ - 输入框随界面卸载,草稿由 Chat 保存。
317
+ - 草稿含:文字、光标位置、已暂存的图片引用、折叠块、全屏草稿编辑器的展开态和 vim 模式。
318
+ - `Esc` 回来时原样还给你。
319
+ - 草稿跟着**会话**走;换了会话,上一段对话的草稿不会跟过来。
320
+ - `/rewind` 回填的历史消息属于回退后的新会话,照常留在输入框里。
321
+
322
+ | 按键 | 作用 |
323
+ | --- | --- |
324
+ | `←` `→` | 切换键盘所在栏(工作区栏 / 会话栏),屏幕上永远只有一个 `❯` |
325
+ | `↑` `↓` / `PgUp` `PgDn` / 滚轮 | 在工作区栏移动工作区;在会话栏移动会话(第 0 行是"新建会话"卡片) |
326
+ | 直接输入 | 实时筛选当前工作区下的会话(标题、目录、分支、模型) |
327
+ | `Enter` | 会话栏:进入光标所在行(第 0 行 = 在该工作区新建会话);工作区栏:打开该工作区的操作菜单 |
328
+ | `Ctrl+Enter` | 在光标所在工作区新建会话(两栏都可用) |
329
+ | `Ctrl+N` | 在光标所在工作区新建会话 |
330
+ | `Ctrl+X` | 停止光标所在的**后台**会话(当前会话不可停止) |
331
+ | `Ctrl+L` | 重新读取工作区登记与会话列表 |
332
+ | `Tab` / `Shift+Tab` | 切换到下一个 / 上一个来源标签(有外部来源时) |
333
+ | `Esc` | 先关提示 → 再清空筛选 → 再离开界面 |
334
+
335
+ 标题栏右侧是**来源标签条**:`DSH │ Claude Code Codex …`。
336
+
337
+ - 本机其他编程代理(Claude Code、Codex、Grok Build、zcode)有会话时才出现对应标签,按固定顺序排列;一个都没有时不显示标签条。打开界面只探测各来源是否有会话,不读取会话内容,列表在点进标签时才读取。
338
+ - 每次打开界面都在 `DSH` 标签;点击标签或按 `Tab` / `Shift+Tab` 切换,切换时清空筛选词。
339
+ - 终端不够宽时先隐藏副标题,再把末尾的标签折叠成 `+N`,点击 `+N` 弹出其余标签;当前标签永不折叠。
340
+ - 外部来源标签也是两栏:左栏按会话的工作目录分组(已登记的目录沿用工作区名,没有记录目录的归「未知目录」),右栏是该目录下的会话,按标题和目录实时筛选。
341
+ - 右栏没有"新建会话"卡片;`Enter` 或单击 = **导入并打开**:只导入这一条,写进 DSH 会话库后直接进入。已经导入过的会话直接打开,不会重复写入。
342
+ - 会话原来的工作目录已不存在时不导入,状态行给出提示。
343
+ - 外部标签下 `Ctrl+N`、`Ctrl+X`、固定不生效;`Ctrl+L` 改为重新扫描该来源。
344
+ - 导入与 `/migrate` 用同一套解析和确定性 id,两个入口导入同一条会话得到的是同一个 DSH 会话。
345
+
346
+ 工作区栏的菜单有四项:
347
+
348
+ - **编辑**:选中该工作区,右侧列出它的会话。
349
+ - **新建会话**。
350
+ - **重命名**。
351
+ - **从列表移除**:只删登记,目录与会话日志都保留。
352
+
353
+ 工作区加入方式是"用这个目录启动 dsh-tui"(启动时自动登记)。
354
+
355
+ - 界面里没有"添加工作区"入口。
356
+
357
+ 会话行的实时状态来自通道自己的 agent-view 投影(与状态栏的"等待输入"提示同源)。
358
+
359
+ - 状态:运行中 / 等待输入 / 空闲 / 已完成 / 失败 / 已停止。
360
+ - 当前终端所附着的那一行标 `当前`。
361
+
362
+ 点击行为:
363
+
364
+ - 点击会话行 = 进入该会话(同 `Enter`)。
365
+ - 点击行内的 `★`/`☆` 只切换固定状态。
366
+ - 固定项持久化到 `~/.dsh-tui/session-pins.json`,**不会**进入会话。
367
+
368
+ 被**其他** TUI 终端占用的会话照常列出:
369
+
370
+ - 但整行标红、行尾写 `占用 pid <pid>`,并且**点不动**。
371
+ - 原因:两个进程驱动同一条 append-only 日志会交错写入、破坏转录。
372
+ - 占用状态按界面自有的 2 秒间隔重读账本。
373
+ - 对方退出后会自动恢复可进入。
374
+ - 本进程停放中的会话不算占用。
375
+
376
+ 判定与文档见 [session-mount-runtime.md](session-mount-runtime.md)。
377
+
378
+ 当工作区服务缺失(bare composition)或有会话目录**没有登记**时:
379
+
380
+ - 栏里会出现「未登记的工作区」分组。
381
+ - 这些会话照常列出并可恢复——"没有登记"不等于"没有历史"。
382
+ - 该分组只在本界面内存活,不会写回登记。
383
+
384
+ **旧界面相较之下的行为变更**(有意移除,不再回归):
385
+
386
+ - 会话级右键菜单(重命名/删除单个会话)。
387
+ - `Ctrl+P` 固定快捷键、`Ctrl+S` 展开委托运行。
388
+ - `Ctrl+A`「仅本项目/全部项目」、`Ctrl+B` 分支筛选。
389
+ - `Tab` 预览、`Ctrl+R` 重命名、`Ctrl+D` 删除、`Ctrl+X` 清理空会话。
390
+
391
+ 仍然保留与未回归的部分:
392
+
393
+ - 会话固定仍可通过行内 `★` 点击完成。
394
+ - 后台会话的**派发与回复**、`Space` 预览面板、`Shift+Enter` 派发并切换,目前**没有**回到新界面。
395
+ - `/bg` 之后要进入某个后台会话,请在工作区列表里 `Enter` 它。
396
+
397
+ Windows `dsh-tui.cmd --resume` 使用 `~/.dsh-tui/resume.txt` 中最后选择的会话 ID。
398
+
399
+ ### Rewind
400
+
401
+ 输入框为空时连续按两次 `Esc` 打开用户消息列表。选择并确认后:
402
+
403
+ 1. 找到该消息所属 turn 的开始事件。
404
+ 2. 通过 DSH session fork 创建分支会话。
405
+ 3. 回放该边界前的历史。
406
+ 4. 把原消息放回输入框供修改和重发。
407
+
408
+ - 边界取该消息所属回合**开始之前**;**不能回退到第一条消息**。
409
+ - 若模型正在工作:先取消回合并等落定(最长 30s)。
410
+ - 回退后的分支不算子 agent(只写 `parentSession`,无 origin 标记)。
411
+ - 继续用当前模型路由 + 会话自己的 preset。
412
+
413
+ 插件可介入这一步(`tui/rewind-prompt` 决策事件):
414
+
415
+ - 否决此次回退(给出原因)。
416
+ - 或在确认页提供额外的回退模式,例如"回退会话 + 恢复此间修改的文件"。
417
+ - 确认页第一项恒为"仅回退会话"。
418
+ - 选择插件模式后,回退完成时插件收到 `tui/rewind-done` 通知。
419
+ - 通知带所选模式 id 与新旧会话 id,插件可回执一条摘要。
420
+
421
+ 鼠标:
422
+
423
+ - 列表页点击行只选中;进入确认必须键盘 `Enter`。
424
+ - 确认页的消息行 / 模式行点击 = 直接执行该回退。
425
+
426
+ ### 侧问 /btw
427
+
428
+ `/btw <问题>` 发起一次不打扰主任务的快速侧问。
429
+
430
+ - 复用当前会话上下文(system prompt + 已有历史)。
431
+ - 做一次**无工具、单轮**的模型调用,答案显示在可滚动的浮层面板里。
432
+ - **不进会话历史**:问答不写入 session log,也不会出现在主上下文与 token 计数里(关闭面板即消失)。
433
+ - **不打断主回合**:模型正在流式输出时也可以触发,主任务继续运行。
434
+ - 面板内 `↑`/`↓` 滚动,`Space`/`Enter`/`Esc` 关闭,`c` 复制答案;等待答案时 `Esc` 取消。
435
+ - 再次触发 `/btw` 会中止上一个侧问。
436
+
437
+ ### 轨迹场景(/trace / Ctrl+T)
438
+
439
+ 整屏场景(不污染 scrollback),查看会话全程的时间线:
440
+
441
+ | 按键 | 作用 |
442
+ | --- | --- |
443
+ | `←`/`→`(或 `h`) | 切换 时间线 / 热点 视图 |
444
+ | `↑` `↓` / `PgUp` `PgDn` | 移动、翻页 |
445
+ | `[` / `]` | 跳上 / 下一个失败点 |
446
+ | `{` / `}` | 跳上一轮 / 下一轮 |
447
+ | `/` | 查询行:`tool:` `kind:` `turn:` `err:` `run:` `>10s` `tok>1k` 前缀,多条 AND,命中列原位高亮 |
448
+ | `m` | 循环投影模式(等分 / 墙钟 / 压缩空闲) |
449
+ | `g` / `G` | 跳到顶部 / 底部 |
450
+ | `Enter` | 展开详情;`j`/`k` 在详情内翻页 |
451
+ | `t`(热点视图) | 循环排序(耗时 / 次数 / token) |
452
+ | `q` / `Esc` | 退出;Esc 三层:收详情 → 清查询 → 关闭 |
453
+
454
+ 以上全部有鼠标等价(inline 模式的整屏场景同样启用鼠标跟踪):
455
+
456
+ - 时间线/热点行点击跳光标。
457
+ - 页签与右上标签点击切换/循环。
458
+ - 查询行与页签空白区点击打开 `/` 搜索。
459
+ - 波形带(含标尺)点击列跳最近事件。
460
+ - 滚轮移动光标。
461
+
462
+ ### /settings 设置编辑器
463
+
464
+ `/settings` 打开插件设置编辑器,按命名空间读取/编辑。
465
+
466
+ **改动自动保存**:
467
+
468
+ - `↑`/`↓` 移动、`Enter` 展开/切换/编辑。
469
+ - 布尔/选项即时写入,文本草稿回车确认。
470
+ - `Esc` 直接退出。
471
+
472
+ 鼠标:
473
+
474
+ - 字段/组行点击 = 设焦点并执行该行 `Enter` 动作。
475
+ - 悬停即移动焦点,滚轮走焦点(焦点跟随窗口下即滚动)。
476
+
477
+ 命名空间写入:
478
+
479
+ - dsh-tui 自身命名空间的字段写入当前 profile 配置(旧版为 settings.yaml 用户层)并**实时生效**(`lang`、`statusBar.*` 等)。
480
+ - 未声明 TUI 区块的命名空间以只读形式列出。
481
+ - 需手工编辑 profile 配置(旧版为 `~/.dsh/settings.yaml`)。
482
+
483
+ ### Model 与 preset
484
+
485
+ `/model` 通过在当前历史末尾 fork 会话来切换模型,因为 DSH 没有原位换模型 API。
486
+
487
+ - 旧会话仍保留在 `/resume` 中。
488
+ - 还没有人说过话的会话不记分支:此时换模型得到的是一个不写 `parentSession` 的独立会话(继承同一份会话脚手架前缀),这样你随后打的第一个真实 prompt 仍能触发自动生成会话标题;已经对话过的会话照旧记血缘。
489
+
490
+ `/preset` 只允许空白会话原地切换。
491
+
492
+ - 已经开始的会话会把选择保存为下一次 `/new` 或启动时的默认值。
493
+ - 详细规则见[配置参考](configuration.md#agent-preset)。
494
+
495
+ ### 工作区
496
+
497
+ `/workspace` 子命令:
498
+
499
+ - `/workspace resume` 打开工作区选择器。
500
+ - `/workspace rename <名称>` 重命名当前工作区。
501
+ - `/workspace open <目标>` 直接打开工作区并创建一个全新会话。
502
+
503
+ `/resume` 和 `/rename` 仍分别用于:
504
+
505
+ - 当前工作区内的会话切换。
506
+ - 当前会话重命名。
507
+
508
+ 本地目标:
509
+
510
+ - 可以是绝对路径、相对当前本地工作区的路径,或标准 `file://` URI。
511
+ - 其他 URI scheme 和 `/workspace` 子命令可由可选插件注册。
512
+ - TUI 本身不认识任何具体外部协议。
513
+ - 当前工作区属于插件时,相对路径也由该插件在自己的路径空间内解析。
514
+
515
+ 输入 `/workspace ` 后:
516
+
517
+ - 列出内建及插件注册的子命令。
518
+ - 继续输入前缀并按 `Tab` 即可补全,例如 `/workspace rem`。
519
+ - 插件别名同样参与匹配。
520
+
521
+ 启动器同样接受工作区目标,例如:
522
+
523
+ - `dsh-tui .`
524
+ - `dsh-tui ../project`
525
+ - `dsh-tui file:///path/to/project`
526
+
527
+ 未安装任何工作区插件时:
528
+
529
+ - 本地路径、`!command` 和全部普通 TUI 会话流程保持可用。
530
+
531
+ ## Fullscreen 与鼠标
532
+
533
+ `fullscreen: false` 恢复 inline 模式(0.9.0 起出厂默认为 fullscreen)。
534
+
535
+ - 此时终端模拟器拥有原生 scrollback 和选区。
536
+
537
+ `fullscreen: true` 使用 alternate screen,并启用应用内鼠标处理:
538
+
539
+ - **滚轮**:按位置路由。
540
+ - 补全/命令菜单悬停处,移动菜单选中行。
541
+ - 最上层滚动容器(转录 / 帮助 / 子代理面板)滚它。
542
+ - 其余位置滚动会话消息列表。
543
+ - 浮层打开时不穿透滚动背后转录。
544
+ - 轨迹场景移动光标(时间线一格 ±3 行、热点 ±1 行、详情展开时滚详情)。
545
+ - 设置屏移动焦点行。
546
+ - **拖拽**:选择文本,松开后立即复制并清除选区,弹出「已复制 N 字符」提示。
547
+ - `dsh-tui.scrollGutter: scrollbar` 时,右缘滚动条是拖拽目标。
548
+ - 未修饰左键按住拖动,按轨道位置连续滚动(与点击轨道同一映射:拖到哪滚到哪)。
549
+ - `Shift`/`Alt`/`Ctrl`+拖动仍是选字(拖拽协议只对无修饰左键开启)。
550
+ - **双击/三击**:选择单词/整行并复制。
551
+ - `scrollGutter: scrollbar` 的轨道例外:轨道是拖拽目标,其上多击不再选行。
552
+ - **`Esc`**:取消正在进行的拖拽(或现有选区),不复制。
553
+ - **单击消息行**:纯文本行(用户/assistant)无操作——转录是阅读区,鼠标职责是选字。
554
+ - **单击工具卡 / thinking / compact 摘要**:展开 / 收起(hover 时标题提亮指示,行右侧空白不触发)。
555
+ - **单击子代理卡**:打开该子代理的详情场景(hover 时状态符号提亮)。
556
+ - **单击输入框**:定位文本光标到点击处(多行/换行/CJK 均按显示宽度对齐)。
557
+ - **单击输入框中的 `[Image #N]` / transcript 缩略图**:打开居中大图预览(Kitty/Sixel 不可用时显示图片元数据)。
558
+ - 预览打开时点击预览外部关闭。
559
+ - **输入框内拖拽**:建立输入框选区并高亮渲染(caret 跟随拖拽末端)。
560
+ - `Backspace`/`Delete` 删选区、打字替换选区、`←/→` 坍缩到对应边缘、`Esc` 仅清选区。
561
+ - 拖拽只映射可见行(暂不做边缘自动滚动)。
562
+ - 折叠块存在时选区钳制在 head 或 tail 一侧、不跨 chip 行。
563
+ - **输入框 Shift+click**:从选区头(无选区时为光标)扩展到点击处。
564
+ - **输入框双击**:选词(组件内自检测,500ms / 1 格;路径与标点连串整选)。
565
+ - **输入框 `Ctrl+C`(有选区)**:复制选区到剪贴板(OSC 52 + 原生工具兜底)并保留选区继续编辑。
566
+ - **全屏编辑器**(`Ctrl+Shift+E` 展开):
567
+ - 点击定位/拖选/双击选词与输入框同路径(坐标按行号槽校正)。
568
+ - 滚轮滚编辑窗口(位置路由,光标移动后恢复跟随)。
569
+ - 「发送」「收起」按钮点击执行、hover 提亮。
570
+ - 输入行尾 `⛶` 点击展开。
571
+ - **单击「加载更早消息」/「ctrl+e 显示前 N 条」**:加载更早消息 / 展开全部。
572
+ - **单击 StickyHeader / 「↓ N new messages」**:跳回固定消息处 / 滚动到底部。
573
+ - **单击超链接**:打开浏览器。
574
+ - **单击 picker / 菜单条目行**:选中并立即应用,与键盘 `Enter` 同路径。
575
+ - 覆盖:模型 / 技能 / 活动帧 / 预设 / 权限 / plan / 语言 / 主题 / effort 档位 / 命令与文件补全 /
576
+ 历史命令 / 会话行 / thinking 显示模式 / 工作区目标与子菜单 / 工作区命令分支。
577
+ - busy 或输入态中的浮层行禁点。
578
+ - **单击 rewind 候选行 / 确认页**:
579
+ - 列表页点击只选中(确认保留键盘 `Enter`——高危操作显式触发)。
580
+ - 确认页消息行 / 模式行点击 = 直接执行(确认页本身即显式确认层)。
581
+ - **单击审批 / 问卷 / 计划评审 / 插件对话框决定行**:直接提交该决定(agent 阻塞等待时可鼠标放行)。
582
+ - **单击轨迹场景**:
583
+ - 时间线/热点行点击 = 光标跳该行(热点行跳回时间线定位该组,同 `Enter`;hover 亮 dim ▸ 轻指示不刷背景)。
584
+ - 页签点击切视图;右上排序/投影标签点击循环。
585
+ - 查询行与页签空白区点击打开 `/` 搜索。
586
+ - 波形带(含标尺行)点击列 = 跳最近事件。
587
+ - **单击 /settings 字段 / 组行**:设焦点并执行该行的 `Enter` 动作(boolean/select 循环值、文本进编辑态、组进组页)。
588
+ - 悬停即移动焦点(lazygit 规则),编辑态整屏不响应防误触。
589
+ - **单击会话浏览器确认行**:删除/清理确认行点击 = 确认执行(同 `Enter`);取消保留键盘 `Esc`。
590
+ - **单击帮助菜单命令行**:填入 `/name ` 并关闭帮助(`Tab` 补全的鼠标等价)。
591
+ - **点击时间轴刻度**:跳到该回合——轨道覆盖全部回合(含折叠的);折叠刻度先展开该回合再滚到位。
592
+ - **键盘扩展选区**:有选区时 `Shift+←/→/↑/↓/Home/End` 扩展 / 收缩(跨行环绕)。
593
+
594
+ 以上鼠标行为只在 `fullscreen: true` 的 alternate screen 生效。
595
+
596
+ - inline 模式不开启鼠标上报。
597
+ - 滚动条拖动不适用(沿用终端原生 scrollback 与选区)。
598
+
599
+ 复制优先使用 OSC 52。
600
+
601
+ - 本地终端可回退到 `wl-copy`、`xclip` 或 `xsel`。
602
+ - tmux 使用 `load-buffer -w`。
603
+ - 设置 `DSH_TUI_DISABLE_MOUSE=1` 可临时关闭 fullscreen 鼠标。
604
+
605
+ ## `ask_user_question` 问卷
606
+
607
+ 模型调用问卷工具时,问卷面板暂时拥有键盘:
608
+
609
+ | 按键 | 行为 |
610
+ | --- | --- |
611
+ | `Up/Down` | 移动选项 |
612
+ | `Space` | 多选题勾选或取消 |
613
+ | `Tab` | 切换到自定义文本回答 |
614
+ | `Enter` | 提交当前题 |
615
+ | `Left` / `Right` | 在题目之间切换并保留当前草稿(不提交)。自由输入行里方向键仍移动光标,只有光标已在行首/行尾时才换题 |
616
+ | `Esc`(第 2 题起) | 返回上一题并保留当前草稿 |
617
+ | `Esc`(第 1 题) | 取消整批提问,模型收到 `ASK_CANCELLED` |
618
+ | `Ctrl+C` | 从任意题取消整批提问,模型收到 `ASK_CANCELLED`(harness 侧中止仍报 `ASK_ABORTED`) |
619
+ | `Ctrl+K` | 折叠/展开 ask_user_question 问卷面板 |
620
+
621
+ **最后一行是自由输入行**:
622
+
623
+ - 直接在选项行打字 = 附加该选项标签 + 自定义文本一起提交(不必先 `Tab`)。
624
+ - `Tab` 直达输入行。
625
+
626
+ - 一批多题以及并发子代理提问按 FIFO 逐题显示。
627
+ - 完成后,问答摘要折叠进本地 transcript。
628
+
629
+ ## 计划评审(plan review)
630
+
631
+ 计划模式下模型调用 `exit_plan_mode` 时,计划全文以 markdown 渲染在评审面板中
632
+ (`intent: plan-review` 的专用决策布局):
633
+
634
+ | 按键 | 行为 |
635
+ | --- | --- |
636
+ | `Up/Down` | 在选项与底部反馈输入行之间移动 |
637
+ | 鼠标滚轮 | 滚动计划正文;批准 / 继续规划 / 反馈行保持钉在视口内 |
638
+ | `1`/`2` | 直接提交对应选项(反馈缓冲为空时;非空则数字视为反馈字符) |
639
+ | 打字 | 进入反馈输入行 |
640
+ | `Enter`(选项行) | 提交该选项;批准行有反馈时会报错——批准必须不带反馈,否则协议视为"继续规划" |
641
+ | `Enter`(输入行) | 提交"继续规划"并附上反馈文本 |
642
+ | `Esc` | 打断评审去说话(`ASK_CANCELLED`),模型停留在计划模式 |
643
+
644
+ 批准计划或执行 `/plan off` 后:
645
+
646
+ - 会话恢复进入计划前的实际沙箱与审批策略。
647
+ - `Shift+Tab` 切走则保留用户选择的目标模式,包括运行中延迟生效的切换。
648
+
649
+ 恢复已有会话时:
650
+
651
+ - 从事件历史还原进入前权限。
652
+ - 历史不足以确定的权限保持不变。
653
+ - 不会因无法匹配配置模式而自动回落到 full access。
654
+
655
+ ## 工具审批(approval)
656
+
657
+ 权限层发起 `approval/request` 时,审批面板暂时拥有键盘(同时挂起问卷时审批优先)。
658
+
659
+ - 显示工具名、从配对 tool call 提取的完整命令与原因。
660
+
661
+ | 按键 | 行为 |
662
+ | --- | --- |
663
+ | `Up/Down` | 移动选项 |
664
+ | `1` / `2` | 允许(仅本次)/ 拒绝 |
665
+ | `Enter` | 提交当前焦点项 |
666
+ | `Esc` / `Ctrl+C` | 拒绝(fail closed) |
667
+
668
+ 协议只有「允许一次 / 拒绝」两种结果,**没有「总是允许」**。
669
+
670
+ ## Slash Commands
671
+
672
+ 命令菜单由本地命令与 DSH 命令注册表合并而成。
673
+
674
+ - 输入 `/` 查看当前组合真正可用的全集。
675
+ - 命令描述随界面语言(`/lang`)中英切换。
676
+ - 内置命令与已收录的注册表命令(`/plan`、`/goal`、`/feedback`)显示中文翻译。
677
+ - 其余注册表命令回退注册表原文。
678
+
679
+ **会话**
680
+
681
+ - `/new`。
682
+ - `/resume`、`/home`、`/agentview`:三者打开同一个会话管理界面。
683
+ - `/bg`(别名 `/background`):会话转入后台并打开该界面。
684
+ - `/rename`。
685
+ - `/recap`:最近活动摘要 + 建议标题一键应用。
686
+ - 设置 `recapOnOpen` 开启时打开会话自动出分隔线 + `回顾:` 摘要行,发送新消息后消失,默认开。
687
+ - `/workspace resume|rename|open`。
688
+ - `/clear`、`/compact`、`/export`、`/btw`。
689
+ - `/trace`:轨迹场景,亦可 `Ctrl+T`。
690
+ - `/rewind`:时间回溯,同空输入双击 `Esc`。
691
+
692
+ **状态**
693
+
694
+ - `/context`、`/status`、`/cost`。
695
+ - `/balance`:DeepSeek 官方余额,摘要行 + hover 明细,点击刷新。
696
+ - `/config`、`/doctor`、`/init`、`/agents`。
697
+ - `/jobs`:后台任务面板,状态/时长/退出码,`k` 停止;分栏开启且宽度足够时改为打开右栏面板,窄屏 / inline 回退整屏。
698
+ - `/settings`。
699
+
700
+ **模型与显示**
701
+
702
+ - `/model`、`/effort`、`/thinking`、`/tokens`、`/activity`、`/preset`、`/theme`。
703
+ - `/color`:会话强调色。
704
+ - 无参打开调色板选择器,`<名>` 直接设置,`status`/`reset`。
705
+ - 输入框边框 + 右上角会话名标签,按会话保存。
706
+ - 标签默认关闭,`/settings` 可开。
707
+ - `/panel`:侧栏面板——开关 / 聚焦 / 缩放 / 切换(子命令见用户指南 §2.8)。
708
+ - `/lang`。
709
+
710
+ **账号与策略**
711
+
712
+ - `/provider`、`/login`、`/logout`、`/permission`、`/add-dir`、`/hooks`、`/mcp`。
713
+ - `/auth login deepseek-account` 或 `/provider` 完成 DeepSeek 登录后,若 Platform 返回尚未展示的登录赠金,鲸鱼女仆娘弹窗会显示“鲸鱼券”的金额与到期时间;按 Enter/Esc 关闭。
714
+ - `/plugins`:`check <路径>` 校验插件清单。
715
+
716
+ **Skills**
717
+
718
+ - `/skills` 浏览 DSH 从当前 profile、用户与项目发现的技能。
719
+ - 可直调技能以 `/name` 加入菜单。
720
+
721
+ **其他**
722
+
723
+ - `/update`、`/vim`(vim 编辑模式开关,见「输入编辑」)、`/terminal-setup`、`/connect`、`/help`。
724
+ - `/exit`(别名 `/quit`、`/q`)。
725
+
726
+ **注册表**
727
+
728
+ - `/plan`、`/goal`,以及当前 DSH 组合注册的其他命令。
729
+
730
+ dsh-TUI 不预装通用技能;技能内容与发现规则由 DSH 及当前组合负责。
731
+
732
+ 补充语法:
733
+
734
+ - `/activity` 打开动画选择器;`/activity frames <name>` 直接设置(当前可选
735
+ `random`、`star2`、`sand`、`triangle`、`box`、`box2`、`corners`、`point`、
736
+ `layer`、`flip`、`aesthetic`、`hamburger`、`moon`、`moon8`、`whale-spout`、
737
+ `whale-spin`、`whale-bubbles`、`clock`、`traffic_lights`、`comet`、`breathe`、
738
+ `dots`、`arrow`、`spark`、`bar`、`braille`、`arc`、`circle`、`grow`、`noise`、
739
+ `bounce`、`rainbow`、`bar2`、`dqpb`、`toggle`,默认 `moon8`)。旧本地配置值
740
+ `claude` 读取时映射为 `moon8`,选择器不显示该旧预设;
741
+ `/activity status` 查看当前选择。
742
+ - `/preset <id>` 与 `/preset status` 见配置文档。
743
+ - `/effort` 打开推理强度滑杆(←/→ 实时调整);`/effort <id>` 直接设定,
744
+ `/effort status` 查看当前档位。
745
+ - `/theme <name>` 与 `/theme status` 见主题文档。
746
+ - `/permission` 的名册来自 DSH `permissionPresets` registry。
747
+ - 按声明顺序显示,参与补全与 `Shift+Tab` 循环。
748
+ - 第三方预设无需 TUI 硬编码。
749
+ - 服务可用时以本地命令常驻菜单:裸命令打开 picker、参数直接切换、`status` 打印当前预设与策略说明。
750
+ - 切换优先调用官方 `/permission <preset>` 命令。
751
+ - 命令未暴露给本 agent 时,回退到服务自身的官方写路径(同一 handler、真实事件),并以事件/读回确认。
752
+ - 两者都不可用时显式报错,不会把输入当普通消息发给模型。
753
+ - registry 服务缺失时 TUI 使用三项 legacy 兼容名册。
754
+ - 服务已挂载但损坏、为空或不一致时标记 unavailable 并 fail closed。
755
+ - 退出计划模式先恢复进入前的 sandbox/approval,再还原进入前所在的权限预设(registry 仍提供时)。
756
+ - `/lang` 切换中英界面语言(见「界面语言」)。
757
+ - `/compact` 压缩会话历史;内核「极简模式」预设(Agent preset `minimal`,只有一个持久 shell 工具)既不挂载压缩服务也不剪枝工具结果,长会话可能撞上下文上限、超长工具输出整段留在上下文里,`/compact` 因此不可用(Help 与 `/` 补全标注「不可用」,进入该预设时提示一次)——与界面设置的「极简界面」无关。
758
+ - `/thinking` 扩展思考显示开关,仅本次界面状态、**不持久化**。
759
+ - 启动后后台检查 npm 新版本,发现更新时提示。
760
+ - 检测遵循 npm registry 配置(`NPM_CONFIG_REGISTRY` 或 `~/.npmrc`)。
761
+ - 镜像源用户看到的就是安装源的最新版。
762
+ - `/update` 更新已安装的 `@deepseek-harness-tui/dsh-tui`。
763
+ - 更新后自动重启并恢复当前会话;当前回合运行时需等待完成。
764
+ - 仅在 `dsh --profile <name>` 启动时可用(源码运行等场景提示不可用)。
765
+ - 已是最新版时直接提示,不会重启。
766
+ - `/plan [off|message]` 与 `/goal ...` 由 DSH 命令插件处理并写入会话事件。
767
+ - Skill 命令由 host 注入对应 `SKILL.md` 的技能正文后执行,参数原样随行;
768
+ 技能内容与发现规则由 DSH 及当前组合负责。
769
+
770
+ `/connect`、`/hooks` 当前是兼容占位命令。
771
+
772
+ - 当 DSH 组合没有对应能力时,会给出明确说明,而不是静默执行。
773
+
774
+ ## 外部注入通道(编辑器集成)
775
+
776
+ 运行中的会话会开一个**本会话独占的本地注入通道**,供编辑器插件(如 `dsh.nvim`)把上下文推进输入框。
777
+
778
+ - 它是 OpenCode `POST /tui/publish` 的对应物。
779
+ - 但走本地 socket 而非 HTTP 端口:无端口分配、无鉴权面。
780
+ - 端点随会话退出自动清理。
781
+
782
+ - **传输**:Unix domain socket `~/.dsh-tui/inject/<sessionId>.sock`
783
+ (Windows 为命名管道 `\\.\pipe\dsh-tui-inject-<sessionId>`)。
784
+ - **发现**:`~/.dsh-tui/inject/servers.json` 列出每个存活会话
785
+ (`pid`、`sessionId`、`cwd`、`socketPath`),客户端据此按 `cwd` 匹配项目并
786
+ 选择目标会话;会话退出时该记录被移除。
787
+ - **协议**:换行分隔的 JSON,每行一条:
788
+ `{"type":"prompt.append","text":"@src/foo.ts "}` 把文本追加到输入框;
789
+ `{"type":"command.execute","command":"prompt.submit"}` 提交当前输入。追加文本以
790
+ 空格结尾(OpenCode 惯例)时保持不提交,便于继续编辑。
791
+ - **接线**:追加复用输入框的 `PromptController.append`,提交走
792
+ `channel.submit`(工作态下自动进 inbox,回合结束后处理)。实现见
793
+ `src/dsh-adapter/inject-channel.ts`,回归门禁 `scripts/verify-inject-channel.mjs`。