@deepseek-harness-tui/dsh-tui 0.12.0 → 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 (692) hide show
  1. package/README.md +41 -5
  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 +8 -3
  276. package/cordis.patch.yml +7 -1
  277. package/guide/dsh-tui-guide/configuration.en.md +6 -1
  278. package/guide/dsh-tui-guide/configuration.md +6 -1
  279. package/guide/dsh-tui-guide/getting-started.en.md +6 -3
  280. package/guide/dsh-tui-guide/getting-started.md +4 -2
  281. package/guide/dsh-tui-guide/interaction.en.md +68 -4
  282. package/guide/dsh-tui-guide/interaction.md +49 -3
  283. package/guide/dsh-tui-guide/plugins.en.md +16 -6
  284. package/guide/dsh-tui-guide/plugins.md +14 -6
  285. package/guide/dsh-tui-guide/themes.en.md +7 -2
  286. package/guide/dsh-tui-guide/themes.md +5 -2
  287. package/guide/dsh-tui-guide/user-guide.en.md +124 -21
  288. package/guide/dsh-tui-guide/user-guide.md +96 -16
  289. package/lib/settings.json +215 -1
  290. package/lib/types/adapter/channel/ui-policy.d.ts +6 -2
  291. package/lib/types/adapter/channel/ui-policy.d.ts.map +1 -1
  292. package/lib/types/adapter/channel/ui-policy.js +14 -1
  293. package/lib/types/adapter/index.d.ts +1 -1
  294. package/lib/types/adapter/index.js +1 -1
  295. package/lib/types/adapter/kernel/host-facade.d.ts +4 -1
  296. package/lib/types/adapter/kernel/host-facade.d.ts.map +1 -1
  297. package/lib/types/adapter/kernel/host-facade.js +8 -1
  298. package/lib/types/adapter/kernel/runtime.d.ts.map +1 -1
  299. package/lib/types/adapter/kernel/runtime.js +13 -0
  300. package/lib/types/adapter/kernel/slices/index.d.ts +1 -0
  301. package/lib/types/adapter/kernel/slices/index.d.ts.map +1 -1
  302. package/lib/types/adapter/kernel/slices/index.js +3 -0
  303. package/lib/types/adapter/kernel/slices/panels.d.ts +3 -0
  304. package/lib/types/adapter/kernel/slices/panels.d.ts.map +1 -0
  305. package/lib/types/adapter/kernel/slices/panels.js +14 -0
  306. package/lib/types/adapter/ports/channel-capabilities.d.ts +48 -0
  307. package/lib/types/adapter/ports/channel-capabilities.d.ts.map +1 -0
  308. package/lib/types/adapter/ports/channel-capabilities.js +2 -0
  309. package/lib/types/adapter/ports/channel-catalog.d.ts +7 -0
  310. package/lib/types/adapter/ports/channel-catalog.d.ts.map +1 -1
  311. package/lib/types/adapter/ports/channel-display.d.ts +10 -0
  312. package/lib/types/adapter/ports/channel-display.d.ts.map +1 -1
  313. package/lib/types/adapter/ports/channel-ui.d.ts +62 -2
  314. package/lib/types/adapter/ports/channel-ui.d.ts.map +1 -1
  315. package/lib/types/adapter/ports/channel-view.d.ts +94 -0
  316. package/lib/types/adapter/ports/channel-view.d.ts.map +1 -1
  317. package/lib/types/adapter/ports/channel.d.ts +1 -1
  318. package/lib/types/adapter/ports/channel.js +1 -1
  319. package/lib/types/adapter/ports/descriptor.d.ts +1 -1
  320. package/lib/types/adapter/ports/descriptor.js +1 -1
  321. package/lib/types/adapter/ports/index.d.ts +1 -1
  322. package/lib/types/adapter/ports/index.js +1 -1
  323. package/lib/types/adapter/ports/panels.d.ts +28 -0
  324. package/lib/types/adapter/ports/panels.d.ts.map +1 -0
  325. package/lib/types/adapter/ports/panels.js +8 -0
  326. package/lib/types/adapter/ports/workspace.d.ts +1 -1
  327. package/lib/types/adapter/ports/workspace.js +1 -1
  328. package/lib/types/adapter/spec/index.d.ts +2 -2
  329. package/lib/types/adapter/spec/index.js +2 -2
  330. package/lib/types/adapter/spec/profile.d.ts +6 -6
  331. package/lib/types/adapter/spec/profile.d.ts.map +1 -1
  332. package/lib/types/adapter/spec/profile.js +6 -6
  333. package/lib/types/adapter/spec/protocol-constants.d.ts +3 -3
  334. package/lib/types/adapter/spec/protocol-constants.d.ts.map +1 -1
  335. package/lib/types/adapter/spec/protocol-constants.js +5 -5
  336. package/lib/types/adapter/spec/tui-contributions.d.ts +4 -4
  337. package/lib/types/adapter/spec/tui-contributions.d.ts.map +1 -1
  338. package/lib/types/adapter/spec/tui-contributions.js +5 -5
  339. package/lib/types/adapter/standard/descriptor.js +1 -1
  340. package/lib/types/adapter/standard/index.d.ts +3 -3
  341. package/lib/types/adapter/standard/index.js +3 -3
  342. package/lib/types/adapter/standard/registry.d.ts +3 -2
  343. package/lib/types/adapter/standard/registry.d.ts.map +1 -1
  344. package/lib/types/adapter/standard/registry.js +6 -5
  345. package/lib/types/adapter/standard/tui-extension.d.ts +1 -1
  346. package/lib/types/adapter/standard/tui-extension.js +1 -1
  347. package/lib/types/adapter/upstream/index.d.ts +1 -0
  348. package/lib/types/adapter/upstream/index.d.ts.map +1 -1
  349. package/lib/types/adapter/upstream/index.js +1 -0
  350. package/lib/types/adapter/upstream/panels-driver.d.ts +18 -0
  351. package/lib/types/adapter/upstream/panels-driver.d.ts.map +1 -0
  352. package/lib/types/adapter/upstream/panels-driver.js +159 -0
  353. package/lib/types/api.d.ts +2 -0
  354. package/lib/types/api.d.ts.map +1 -1
  355. package/lib/types/api.js +3 -1
  356. package/lib/types/commands.d.ts.map +1 -1
  357. package/lib/types/commands.js +12 -4
  358. package/lib/types/components/ActivityLine.d.ts +6 -9
  359. package/lib/types/components/ActivityLine.d.ts.map +1 -1
  360. package/lib/types/components/ActivityLine.js +7 -8
  361. package/lib/types/components/Chat/JobCard.d.ts +18 -1
  362. package/lib/types/components/Chat/JobCard.d.ts.map +1 -1
  363. package/lib/types/components/Chat/JobCard.js +90 -22
  364. package/lib/types/components/Chat/JobGroupHeader.d.ts +27 -0
  365. package/lib/types/components/Chat/JobGroupHeader.d.ts.map +1 -0
  366. package/lib/types/components/Chat/JobGroupHeader.js +62 -0
  367. package/lib/types/components/GoalTodoPanel.d.ts +13 -1
  368. package/lib/types/components/GoalTodoPanel.d.ts.map +1 -1
  369. package/lib/types/components/GoalTodoPanel.js +55 -14
  370. package/lib/types/components/JobsPanel.d.ts +42 -2
  371. package/lib/types/components/JobsPanel.d.ts.map +1 -1
  372. package/lib/types/components/JobsPanel.js +147 -14
  373. package/lib/types/components/LogoV2.d.ts +43 -3
  374. package/lib/types/components/LogoV2.d.ts.map +1 -1
  375. package/lib/types/components/LogoV2.js +42 -15
  376. package/lib/types/components/MessageList.d.ts +8 -2
  377. package/lib/types/components/MessageList.d.ts.map +1 -1
  378. package/lib/types/components/MessageList.js +212 -18
  379. package/lib/types/components/OverlayAbove.d.ts +11 -1
  380. package/lib/types/components/OverlayAbove.d.ts.map +1 -1
  381. package/lib/types/components/OverlayAbove.js +2 -12
  382. package/lib/types/components/PageMargin.d.ts.map +1 -1
  383. package/lib/types/components/PageMargin.js +3 -1
  384. package/lib/types/components/PluginSceneBoundary.d.ts +1 -1
  385. package/lib/types/components/PluginSceneBoundary.js +1 -1
  386. package/lib/types/components/PromptInput.d.ts +20 -22
  387. package/lib/types/components/PromptInput.d.ts.map +1 -1
  388. package/lib/types/components/PromptInput.js +413 -156
  389. package/lib/types/components/SearchBox.d.ts +22 -5
  390. package/lib/types/components/SearchBox.d.ts.map +1 -1
  391. package/lib/types/components/SearchBox.js +17 -13
  392. package/lib/types/components/SubagentCard.d.ts.map +1 -1
  393. package/lib/types/components/SubagentCard.js +17 -2
  394. package/lib/types/components/SubagentDashboard.d.ts +18 -3
  395. package/lib/types/components/SubagentDashboard.d.ts.map +1 -1
  396. package/lib/types/components/SubagentDashboard.js +53 -5
  397. package/lib/types/components/SubagentDetailScene.d.ts +7 -1
  398. package/lib/types/components/SubagentDetailScene.d.ts.map +1 -1
  399. package/lib/types/components/SubagentDetailScene.js +54 -5
  400. package/lib/types/components/SurfaceEdges.d.ts +21 -0
  401. package/lib/types/components/SurfaceEdges.d.ts.map +1 -0
  402. package/lib/types/components/SurfaceEdges.js +7 -0
  403. package/lib/types/components/ThemePicker.d.ts +9 -0
  404. package/lib/types/components/ThemePicker.d.ts.map +1 -1
  405. package/lib/types/components/ThemePicker.js +74 -10
  406. package/lib/types/components/ThemePreviewPane.d.ts +26 -0
  407. package/lib/types/components/ThemePreviewPane.d.ts.map +1 -0
  408. package/lib/types/components/ThemePreviewPane.js +99 -0
  409. package/lib/types/components/design-system/Divider.d.ts.map +1 -1
  410. package/lib/types/components/design-system/Divider.js +14 -9
  411. package/lib/types/components/launchpadActions.d.ts +73 -0
  412. package/lib/types/components/launchpadActions.d.ts.map +1 -0
  413. package/lib/types/components/launchpadActions.js +111 -0
  414. package/lib/types/components/launchpadLayout.d.ts +62 -0
  415. package/lib/types/components/launchpadLayout.d.ts.map +1 -0
  416. package/lib/types/components/launchpadLayout.js +176 -0
  417. package/lib/types/components/onboardingModel.d.ts +83 -0
  418. package/lib/types/components/onboardingModel.d.ts.map +1 -0
  419. package/lib/types/components/onboardingModel.js +128 -0
  420. package/lib/types/components/sidePanel/InfoPanel.d.ts +17 -0
  421. package/lib/types/components/sidePanel/InfoPanel.d.ts.map +1 -0
  422. package/lib/types/components/sidePanel/InfoPanel.js +124 -0
  423. package/lib/types/components/sidePanel/PanelBar.d.ts +45 -0
  424. package/lib/types/components/sidePanel/PanelBar.d.ts.map +1 -0
  425. package/lib/types/components/sidePanel/PanelBar.js +104 -0
  426. package/lib/types/components/sidePanel/PanelErrorBoundary.d.ts +21 -0
  427. package/lib/types/components/sidePanel/PanelErrorBoundary.d.ts.map +1 -0
  428. package/lib/types/components/sidePanel/PanelErrorBoundary.js +30 -0
  429. package/lib/types/components/sidePanel/PanelHost.d.ts +36 -0
  430. package/lib/types/components/sidePanel/PanelHost.d.ts.map +1 -0
  431. package/lib/types/components/sidePanel/PanelHost.js +81 -0
  432. package/lib/types/components/sidePanel/PanelPicker.d.ts +24 -0
  433. package/lib/types/components/sidePanel/PanelPicker.d.ts.map +1 -0
  434. package/lib/types/components/sidePanel/PanelPicker.js +45 -0
  435. package/lib/types/components/sidePanel/PanelStore.d.ts +55 -0
  436. package/lib/types/components/sidePanel/PanelStore.d.ts.map +1 -0
  437. package/lib/types/components/sidePanel/PanelStore.js +109 -0
  438. package/lib/types/components/sidePanel/SidePanelColumn.d.ts +31 -0
  439. package/lib/types/components/sidePanel/SidePanelColumn.d.ts.map +1 -0
  440. package/lib/types/components/sidePanel/SidePanelColumn.js +70 -0
  441. package/lib/types/components/sidePanel/SidePanelLayout.d.ts +54 -0
  442. package/lib/types/components/sidePanel/SidePanelLayout.d.ts.map +1 -0
  443. package/lib/types/components/sidePanel/SidePanelLayout.js +81 -0
  444. package/lib/types/components/sidePanel/SidePanelRuntimeContext.d.ts +43 -0
  445. package/lib/types/components/sidePanel/SidePanelRuntimeContext.d.ts.map +1 -0
  446. package/lib/types/components/sidePanel/SidePanelRuntimeContext.js +26 -0
  447. package/lib/types/components/sidePanel/TrajectoryPanel.d.ts +7 -0
  448. package/lib/types/components/sidePanel/TrajectoryPanel.d.ts.map +1 -0
  449. package/lib/types/components/sidePanel/TrajectoryPanel.js +263 -0
  450. package/lib/types/components/sidePanel/WorkspacePanel.d.ts +4 -0
  451. package/lib/types/components/sidePanel/WorkspacePanel.d.ts.map +1 -0
  452. package/lib/types/components/sidePanel/WorkspacePanel.js +171 -0
  453. package/lib/types/components/sidePanel/builtinPanels.d.ts +3 -0
  454. package/lib/types/components/sidePanel/builtinPanels.d.ts.map +1 -0
  455. package/lib/types/components/sidePanel/builtinPanels.js +229 -0
  456. package/lib/types/components/sidePanel/companion/CompanionPanel.d.ts +53 -0
  457. package/lib/types/components/sidePanel/companion/CompanionPanel.d.ts.map +1 -0
  458. package/lib/types/components/sidePanel/companion/CompanionPanel.js +528 -0
  459. package/lib/types/components/sidePanel/companion/SplashMascot.d.ts +32 -0
  460. package/lib/types/components/sidePanel/companion/SplashMascot.d.ts.map +1 -0
  461. package/lib/types/components/sidePanel/companion/SplashMascot.js +103 -0
  462. package/lib/types/components/sidePanel/companion/deepy.d.ts +75 -0
  463. package/lib/types/components/sidePanel/companion/deepy.d.ts.map +1 -0
  464. package/lib/types/components/sidePanel/companion/deepy.js +222 -0
  465. package/lib/types/components/sidePanel/companion/mood.d.ts +176 -0
  466. package/lib/types/components/sidePanel/companion/mood.d.ts.map +1 -0
  467. package/lib/types/components/sidePanel/companion/mood.js +212 -0
  468. package/lib/types/components/sidePanel/companion/pose.d.ts +43 -0
  469. package/lib/types/components/sidePanel/companion/pose.d.ts.map +1 -0
  470. package/lib/types/components/sidePanel/companion/pose.js +34 -0
  471. package/lib/types/components/sidePanel/companion/skins.d.ts +102 -0
  472. package/lib/types/components/sidePanel/companion/skins.d.ts.map +1 -0
  473. package/lib/types/components/sidePanel/companion/skins.js +408 -0
  474. package/lib/types/components/sidePanel/dimensions.d.ts +60 -0
  475. package/lib/types/components/sidePanel/dimensions.d.ts.map +1 -0
  476. package/lib/types/components/sidePanel/dimensions.js +75 -0
  477. package/lib/types/components/sidePanel/jobsFocusStore.d.ts +21 -0
  478. package/lib/types/components/sidePanel/jobsFocusStore.d.ts.map +1 -0
  479. package/lib/types/components/sidePanel/jobsFocusStore.js +30 -0
  480. package/lib/types/components/sidePanel/panelBridge.d.ts +44 -0
  481. package/lib/types/components/sidePanel/panelBridge.d.ts.map +1 -0
  482. package/lib/types/components/sidePanel/panelBridge.js +55 -0
  483. package/lib/types/components/sidePanel/pluginPanelAdapter.d.ts +22 -0
  484. package/lib/types/components/sidePanel/pluginPanelAdapter.d.ts.map +1 -0
  485. package/lib/types/components/sidePanel/pluginPanelAdapter.js +148 -0
  486. package/lib/types/components/sidePanel/types.d.ts +110 -0
  487. package/lib/types/components/sidePanel/types.d.ts.map +1 -0
  488. package/lib/types/components/sidePanel/types.js +1 -0
  489. package/lib/types/components/sidePanel/usePanelInput.d.ts +5 -0
  490. package/lib/types/components/sidePanel/usePanelInput.d.ts.map +1 -0
  491. package/lib/types/components/sidePanel/usePanelInput.js +44 -0
  492. package/lib/types/components/sidePanel/useSidePanel.d.ts +47 -0
  493. package/lib/types/components/sidePanel/useSidePanel.d.ts.map +1 -0
  494. package/lib/types/components/sidePanel/useSidePanel.js +284 -0
  495. package/lib/types/components/workspaces/HomeWorkspaceRow.d.ts +3 -1
  496. package/lib/types/components/workspaces/HomeWorkspaceRow.d.ts.map +1 -1
  497. package/lib/types/components/workspaces/HomeWorkspaceRow.js +3 -2
  498. package/lib/types/deepseekPricing.d.ts +10 -9
  499. package/lib/types/deepseekPricing.d.ts.map +1 -1
  500. package/lib/types/deepseekPricing.js +18 -11
  501. package/lib/types/dsh-adapter/channel/attached-context.d.ts +58 -0
  502. package/lib/types/dsh-adapter/channel/attached-context.d.ts.map +1 -0
  503. package/lib/types/dsh-adapter/channel/attached-context.js +109 -0
  504. package/lib/types/dsh-adapter/channel/binding-events.d.ts +6 -0
  505. package/lib/types/dsh-adapter/channel/binding-events.d.ts.map +1 -1
  506. package/lib/types/dsh-adapter/channel/binding-events.js +43 -0
  507. package/lib/types/dsh-adapter/channel/capabilities.d.ts +82 -0
  508. package/lib/types/dsh-adapter/channel/capabilities.d.ts.map +1 -0
  509. package/lib/types/dsh-adapter/channel/capabilities.js +165 -0
  510. package/lib/types/dsh-adapter/channel/command-completions.d.ts.map +1 -1
  511. package/lib/types/dsh-adapter/channel/command-completions.js +8 -0
  512. package/lib/types/dsh-adapter/channel/context-bookkeeping.d.ts +4 -12
  513. package/lib/types/dsh-adapter/channel/context-bookkeeping.d.ts.map +1 -1
  514. package/lib/types/dsh-adapter/channel/context-bookkeeping.js +9 -4
  515. package/lib/types/dsh-adapter/channel/input-delivery.d.ts +13 -2
  516. package/lib/types/dsh-adapter/channel/input-delivery.d.ts.map +1 -1
  517. package/lib/types/dsh-adapter/channel/input-delivery.js +18 -1
  518. package/lib/types/dsh-adapter/channel/mode-actions.d.ts +0 -3
  519. package/lib/types/dsh-adapter/channel/mode-actions.d.ts.map +1 -1
  520. package/lib/types/dsh-adapter/channel/mode-actions.js +7 -2
  521. package/lib/types/dsh-adapter/channel/mode-permission-actions.d.ts +8 -1
  522. package/lib/types/dsh-adapter/channel/mode-permission-actions.d.ts.map +1 -1
  523. package/lib/types/dsh-adapter/channel/mode-permission-actions.js +0 -1
  524. package/lib/types/dsh-adapter/channel/preferences.d.ts +1 -1
  525. package/lib/types/dsh-adapter/channel/preferences.d.ts.map +1 -1
  526. package/lib/types/dsh-adapter/channel/preferences.js +9 -1
  527. package/lib/types/dsh-adapter/channel/projection.d.ts.map +1 -1
  528. package/lib/types/dsh-adapter/channel/projection.js +42 -37
  529. package/lib/types/dsh-adapter/channel/reports.d.ts.map +1 -1
  530. package/lib/types/dsh-adapter/channel/reports.js +13 -4
  531. package/lib/types/dsh-adapter/channel/session-reset.d.ts +5 -1
  532. package/lib/types/dsh-adapter/channel/session-reset.d.ts.map +1 -1
  533. package/lib/types/dsh-adapter/channel/session-reset.js +1 -0
  534. package/lib/types/dsh-adapter/channel/state.d.ts +18 -2
  535. package/lib/types/dsh-adapter/channel/state.d.ts.map +1 -1
  536. package/lib/types/dsh-adapter/channel/state.js +2 -1
  537. package/lib/types/dsh-adapter/channel/types.d.ts +1 -1
  538. package/lib/types/dsh-adapter/channel/types.d.ts.map +1 -1
  539. package/lib/types/dsh-adapter/channel/usage.d.ts +18 -1
  540. package/lib/types/dsh-adapter/channel/usage.d.ts.map +1 -1
  541. package/lib/types/dsh-adapter/channel/usage.js +97 -2
  542. package/lib/types/dsh-adapter/channel.d.ts +1 -1
  543. package/lib/types/dsh-adapter/channel.d.ts.map +1 -1
  544. package/lib/types/dsh-adapter/channel.js +56 -3
  545. package/lib/types/dsh-adapter/context-occupancy.d.ts +204 -0
  546. package/lib/types/dsh-adapter/context-occupancy.d.ts.map +1 -0
  547. package/lib/types/dsh-adapter/context-occupancy.js +299 -0
  548. package/lib/types/dsh-adapter/contract.d.ts +14 -0
  549. package/lib/types/dsh-adapter/contract.d.ts.map +1 -1
  550. package/lib/types/dsh-adapter/contract.js +24 -0
  551. package/lib/types/dsh-adapter/index.d.ts +32 -0
  552. package/lib/types/dsh-adapter/index.d.ts.map +1 -1
  553. package/lib/types/dsh-adapter/index.js +20 -1
  554. package/lib/types/dsh-adapter/migrate/sessionize.d.ts.map +1 -1
  555. package/lib/types/dsh-adapter/migrate/sessionize.js +11 -12
  556. package/lib/types/dsh-adapter/panel-runtime-registry.d.ts +39 -0
  557. package/lib/types/dsh-adapter/panel-runtime-registry.d.ts.map +1 -0
  558. package/lib/types/dsh-adapter/panel-runtime-registry.js +84 -0
  559. package/lib/types/dsh-adapter/panels.d.ts +251 -0
  560. package/lib/types/dsh-adapter/panels.d.ts.map +1 -0
  561. package/lib/types/dsh-adapter/panels.js +407 -0
  562. package/lib/types/dsh-adapter/plugin-host.js +1 -1
  563. package/lib/types/dsh-adapter/plugin.d.ts +17 -1
  564. package/lib/types/dsh-adapter/plugin.d.ts.map +1 -1
  565. package/lib/types/dsh-adapter/plugin.js +169 -32
  566. package/lib/types/dsh-adapter/presets.d.ts +26 -6
  567. package/lib/types/dsh-adapter/presets.d.ts.map +1 -1
  568. package/lib/types/dsh-adapter/presets.js +29 -7
  569. package/lib/types/dsh-adapter/startup-args.d.ts +8 -0
  570. package/lib/types/dsh-adapter/startup-args.d.ts.map +1 -0
  571. package/lib/types/dsh-adapter/startup-args.js +34 -0
  572. package/lib/types/history.d.ts +24 -7
  573. package/lib/types/history.d.ts.map +1 -1
  574. package/lib/types/history.js +77 -18
  575. package/lib/types/i18n.d.ts +734 -15
  576. package/lib/types/i18n.d.ts.map +1 -1
  577. package/lib/types/i18n.js +302 -6
  578. package/lib/types/ink/components/App.d.ts +14 -1
  579. package/lib/types/ink/components/App.d.ts.map +1 -1
  580. package/lib/types/ink/components/App.js +62 -61
  581. package/lib/types/ink/components/TerminalSizeContext.d.ts +7 -0
  582. package/lib/types/ink/components/TerminalSizeContext.d.ts.map +1 -1
  583. package/lib/types/ink/hooks/use-input.d.ts +11 -0
  584. package/lib/types/ink/hooks/use-input.d.ts.map +1 -1
  585. package/lib/types/ink/hooks/use-input.js +8 -2
  586. package/lib/types/ink/hooks/use-terminal-viewport.d.ts.map +1 -1
  587. package/lib/types/ink/hooks/use-terminal-viewport.js +3 -1
  588. package/lib/types/ink/ink.d.ts +18 -0
  589. package/lib/types/ink/ink.d.ts.map +1 -1
  590. package/lib/types/ink/ink.js +51 -8
  591. package/lib/types/ink/output.d.ts +10 -1
  592. package/lib/types/ink/output.d.ts.map +1 -1
  593. package/lib/types/ink/output.js +3 -3
  594. package/lib/types/ink/parse-keypress.d.ts +36 -3
  595. package/lib/types/ink/parse-keypress.d.ts.map +1 -1
  596. package/lib/types/ink/parse-keypress.js +262 -108
  597. package/lib/types/ink/render-node-to-output.d.ts +1 -1
  598. package/lib/types/ink/render-node-to-output.d.ts.map +1 -1
  599. package/lib/types/ink/render-node-to-output.js +37 -5
  600. package/lib/types/ink/screen.d.ts +26 -1
  601. package/lib/types/ink/screen.d.ts.map +1 -1
  602. package/lib/types/ink/screen.js +96 -1
  603. package/lib/types/ink/selection.d.ts +23 -1
  604. package/lib/types/ink/selection.d.ts.map +1 -1
  605. package/lib/types/ink/selection.js +102 -26
  606. package/lib/types/ink/sixel-codec.d.ts +11 -0
  607. package/lib/types/ink/sixel-codec.d.ts.map +1 -1
  608. package/lib/types/ink/sixel-codec.js +42 -8
  609. package/lib/types/math/renderer.d.ts +2 -0
  610. package/lib/types/math/renderer.d.ts.map +1 -1
  611. package/lib/types/math/renderer.js +4 -0
  612. package/lib/types/onboardingPrefs.d.ts +52 -0
  613. package/lib/types/onboardingPrefs.d.ts.map +1 -0
  614. package/lib/types/onboardingPrefs.js +107 -0
  615. package/lib/types/panels.d.ts +4 -0
  616. package/lib/types/panels.d.ts.map +1 -0
  617. package/lib/types/panels.js +4 -0
  618. package/lib/types/screens/Chat.d.ts +22 -1
  619. package/lib/types/screens/Chat.d.ts.map +1 -1
  620. package/lib/types/screens/Chat.js +1126 -299
  621. package/lib/types/screens/Launchpad.d.ts +194 -0
  622. package/lib/types/screens/Launchpad.d.ts.map +1 -0
  623. package/lib/types/screens/Launchpad.js +607 -0
  624. package/lib/types/screens/Onboarding.d.ts +37 -0
  625. package/lib/types/screens/Onboarding.d.ts.map +1 -0
  626. package/lib/types/screens/Onboarding.js +492 -0
  627. package/lib/types/screens/SessionSupervisor.d.ts.map +1 -1
  628. package/lib/types/screens/SessionSupervisor.js +18 -12
  629. package/lib/types/screens/StatusLine.d.ts.map +1 -1
  630. package/lib/types/screens/StatusLine.js +32 -14
  631. package/lib/types/screens/StatusMetrics.d.ts +22 -0
  632. package/lib/types/screens/StatusMetrics.d.ts.map +1 -1
  633. package/lib/types/screens/StatusMetrics.js +20 -0
  634. package/lib/types/screens/chatOverlay.d.ts +18 -1
  635. package/lib/types/screens/chatOverlay.d.ts.map +1 -1
  636. package/lib/types/screens/chatOverlay.js +3 -0
  637. package/lib/types/screens/sessionSupervisor/model.d.ts +1 -2
  638. package/lib/types/screens/sessionSupervisor/model.d.ts.map +1 -1
  639. package/lib/types/screens/sessionSupervisor/model.js +4 -2
  640. package/lib/types/screens/sessionSupervisor/useSessionSupervisor.d.ts.map +1 -1
  641. package/lib/types/screens/sessionSupervisor/useSessionSupervisor.js +7 -3
  642. package/lib/types/settings/definitions.d.ts +93 -0
  643. package/lib/types/settings/definitions.d.ts.map +1 -1
  644. package/lib/types/settings/definitions.js +83 -0
  645. package/lib/types/tips.js +5 -5
  646. package/lib/types/tuiDisplayPrefs.d.ts +42 -2
  647. package/lib/types/tuiDisplayPrefs.d.ts.map +1 -1
  648. package/lib/types/tuiDisplayPrefs.js +74 -0
  649. package/lib/types/update.d.ts +53 -9
  650. package/lib/types/update.d.ts.map +1 -1
  651. package/lib/types/update.js +101 -44
  652. package/lib/types/utils/bmp.d.ts.map +1 -1
  653. package/lib/types/utils/bmp.js +8 -1
  654. package/lib/types/utils/clipboard.d.ts.map +1 -1
  655. package/lib/types/utils/clipboard.js +25 -6
  656. package/lib/types/utils/credentials.d.ts.map +1 -1
  657. package/lib/types/utils/credentials.js +5 -1
  658. package/lib/types/utils/draftWordBoundary.d.ts +23 -0
  659. package/lib/types/utils/draftWordBoundary.d.ts.map +1 -0
  660. package/lib/types/utils/draftWordBoundary.js +161 -0
  661. package/lib/types/utils/fileTarget.d.ts.map +1 -1
  662. package/lib/types/utils/fileTarget.js +7 -9
  663. package/lib/types/utils/inputPaste.d.ts +62 -0
  664. package/lib/types/utils/inputPaste.d.ts.map +1 -0
  665. package/lib/types/utils/inputPaste.js +111 -0
  666. package/lib/types/utils/intl.d.ts +8 -0
  667. package/lib/types/utils/intl.d.ts.map +1 -1
  668. package/lib/types/utils/intl.js +11 -0
  669. package/lib/types/utils/keymap.d.ts +13 -3
  670. package/lib/types/utils/keymap.d.ts.map +1 -1
  671. package/lib/types/utils/keymap.js +27 -5
  672. package/package.json +19 -8
  673. package/{dsh-ecosystem-spec → tui-profile}/registry/README.md +1 -1
  674. package/{dsh-ecosystem-spec → tui-profile}/registry/registry-0.15.json +1 -1
  675. /package/{dsh-ecosystem-spec → tui-profile}/protocols/profile-definitions.d.ts +0 -0
  676. /package/{dsh-ecosystem-spec → tui-profile}/protocols/profile-definitions.js +0 -0
  677. /package/{dsh-ecosystem-spec → tui-profile}/protocols/tui-channel-http.d.ts +0 -0
  678. /package/{dsh-ecosystem-spec → tui-profile}/protocols/tui-channel-http.js +0 -0
  679. /package/{dsh-ecosystem-spec → tui-profile}/protocols/tui-channel.d.ts +0 -0
  680. /package/{dsh-ecosystem-spec → tui-profile}/protocols/tui-channel.js +0 -0
  681. /package/{dsh-ecosystem-spec → tui-profile}/protocols/tui-contributions.d.ts +0 -0
  682. /package/{dsh-ecosystem-spec → tui-profile}/protocols/tui-contributions.js +0 -0
  683. /package/{dsh-ecosystem-spec → tui-profile}/registry/contracts/decision-events-v1alpha1.json +0 -0
  684. /package/{dsh-ecosystem-spec → tui-profile}/registry/contracts/scene-v1alpha1.json +0 -0
  685. /package/{dsh-ecosystem-spec → tui-profile}/registry/contracts/settings-section-v1alpha1.json +0 -0
  686. /package/{dsh-ecosystem-spec → tui-profile}/registry/contracts/tui-channel-v1alpha1.json +0 -0
  687. /package/{dsh-ecosystem-spec → tui-profile}/registry/contracts/workspace-provider-v1alpha1.json +0 -0
  688. /package/{dsh-ecosystem-spec → tui-profile}/registry/host-descriptor.tui.example.json +0 -0
  689. /package/{dsh-ecosystem-spec → tui-profile}/registry/permissions-0.1.json +0 -0
  690. /package/{dsh-ecosystem-spec → tui-profile}/schemas/conformance-claim.schema.json +0 -0
  691. /package/{dsh-ecosystem-spec → tui-profile}/schemas/effect-ledger-record.schema.json +0 -0
  692. /package/{dsh-ecosystem-spec → tui-profile}/schemas/host-descriptor.schema.json +0 -0
@@ -31,11 +31,13 @@ import { ensurePackagedPresets } from './packaged-presets.js';
31
31
  import { registerBundledPresets } from './bundled-presets.js';
32
32
  import { ensureLegacySessionEventTypes, snapshotLiveSessionEvents } from './compat/index.js';
33
33
  import { clearResumeTarget, resumeTargetFromArgv, writeResumeTarget } from '../sessionHistory.js';
34
+ import { initialPromptFromCmdlineArgs } from './startup-args.js';
34
35
  import { readHomePrefs } from '../homePrefs.js';
36
+ import { shouldOfferOnboarding } from '../onboardingPrefs.js';
35
37
  import { resolveSessionCwd } from '../utils/workspaceRoot.js';
36
38
  import { beginRestartAttempt, checkForTuiUpdate, installedTuiVersion, isBootDeadlockTarget, isStandaloneRuntime, isVersionNewer, logRestartEvent, resolveDshProfileName, resolveTuiUpdateTarget, restartTui, updateTuiAndRestart, writeHandoffNotice } from '../update.js';
37
39
  import { getLang, isLang, resolveStartupLang, setLang, t, writeLangPref } from '../i18n.js';
38
- import { DEFAULT_PAGE_MARGIN, DEFAULT_STATUS_BAR, applyImageBacking, applyMathImageBacking, applyMathImageScale, applyMathRendering, applyMermaidDiagrams, applyPageMargin, isPageMarginMode, normalizePageMargin, normalizeScrollGutter, normalizeStatusBar, normalizeToolBackground, parsePageMarginSpec, resolveMathRendering } from '../tuiDisplayPrefs.js';
40
+ import { DEFAULT_PAGE_MARGIN, DEFAULT_SIDE_PANEL_IDS, DEFAULT_STATUS_BAR, SIDE_PANEL_ID_PATTERN, applyCompanionSkin, applyImageBacking, applyMathImageBacking, applyMathImageScale, applyMathRendering, applyMermaidDiagrams, applyPageMargin, applySidePanelOpen, applySidePanelPanels, applySidePanelRatio, applySidePanelSplitEnabled, isPageMarginMode, normalizeJobGroupFold, normalizePageMargin, normalizeScrollGutter, normalizeSidePanelPanels, normalizeStatusBar, normalizeToolBackground, parsePageMarginSpec, resolveMathRendering } from '../tuiDisplayPrefs.js';
39
41
  import { draftComboConflicts, effectiveComboString, parseComboDraft, setKeymapOverrides, SHORTCUT_ACTIONS, } from '../utils/keymap.js';
40
42
  import { attachHerdrIntegration } from '../herdr.js';
41
43
  import { logMouseDebug } from '../utils/debug.js';
@@ -46,6 +48,7 @@ import { reserveMount } from '../sessionMounts.js';
46
48
  import { getHostDialogStore } from './dialogs.js';
47
49
  import { getHostStatusStore } from './status.js';
48
50
  import { createActivityStore } from './activity-store.js';
51
+ import { createContextOccupancyStore } from './context-occupancy.js';
49
52
  import { getHostToastStore } from './toast.js';
50
53
  import { getHostShortcuts } from './shortcuts.js';
51
54
  import { getHostThemes } from './themes.js';
@@ -86,39 +89,28 @@ import { fatalReasonForExit, registerProcessGuardFatalSink } from '../ink/update
86
89
  let lastBootedFullscreen;
87
90
  // Image preferences also stay fixed across host recomposes until /restart.
88
91
  let lastBootedTerminalImages;
92
+ // Kept importable from here: the startup parser moved to its own dependency-free
93
+ // module so argv probes can load it without the whole plugin graph.
94
+ export { initialPromptFromCmdlineArgs };
89
95
  /**
90
96
  * Extract the startup prompt from raw app argv, excluding session selectors
91
97
  * and Web startup flag values. `--trusted-host` consumes multiple authorities
92
98
  * up to the next flag; none of them are prompt text (issue #882). An app-level
93
99
  * `--` ends flag parsing; all following tokens are literal prompt text.
94
100
  */
95
- export function initialPromptFromCmdlineArgs(args) {
96
- if (args === undefined)
97
- return '';
98
- const promptArgs = [];
99
- for (let i = 0; i < args.length; i += 1) {
100
- const arg = args[i];
101
- if (arg === '--') {
102
- promptArgs.push(...args.slice(i + 1));
103
- break;
104
- }
105
- if (arg === '--resume' || arg === '--host' || arg === '--port') {
106
- if (args[i + 1] !== undefined && !args[i + 1].startsWith('-'))
107
- i += 1;
108
- continue;
109
- }
110
- if (arg === '--trusted-host') {
111
- while (args[i + 1] !== undefined && !args[i + 1].startsWith('-'))
112
- i += 1;
113
- continue;
114
- }
115
- if (arg.startsWith('--resume='))
116
- continue;
117
- if (arg.startsWith('-'))
118
- continue;
119
- promptArgs.push(arg);
120
- }
121
- return promptArgs.join(' ').trim();
101
+ /**
102
+ * 落地页 / 首启引导该不该在这次启动出现。
103
+ *
104
+ * 只看「用户有没有说要回到哪儿」:`--resume` 目标与首句都算他知道自己要去哪。
105
+ * **工作区目标不算**——`dst` 默认把 cwd 当工作区目标喂进来,算进去就等于在本机
106
+ * 最主流的启动方式下把这两个屏永久关掉(实测事故,见调用点的口径注释)。
107
+ *
108
+ * @param input.launchSessionId - 本次要恢复的会话(--resume / DSH_TUI_RESUME_SESSION)。
109
+ * @param input.initialPrompt - 命令行里带的首句提示词(无则空串)。
110
+ * @returns true 表示这次是「普通启动」。
111
+ */
112
+ export function isLandingLaunch(input) {
113
+ return input.launchSessionId === undefined && input.initialPrompt === '';
122
114
  }
123
115
  export function resolveTuiHostMode(stdoutIsTTY = process.stdout.isTTY === true, env = process.env) {
124
116
  if (stdoutIsTTY) {
@@ -384,6 +376,14 @@ export async function apply(ctx, runtimeConfig, configOwner = ctx) {
384
376
  ctx.logger.warn('dsh-tui: tuiScenes service is not mounted; plugin scenes will never open. ' +
385
377
  'The bundle patch is older than the installed dsh-tui package — update the globally installed dsh-tui launcher to match the profile (issue #183).');
386
378
  }
379
+ // Same skew guard for the side-panel registry (dsh-tui-panels row): the
380
+ // tuiPanels runtime is what admits plugin panels into the PanelStore, so
381
+ // register() warns and returns undefined for every plugin when the row is
382
+ // absent — say why on profile launches.
383
+ if (ctx.get('tuiPanels') === undefined && resolveDshProfileName() !== undefined) {
384
+ ctx.logger.warn('dsh-tui: tuiPanels service is not mounted; plugin side panels will never register. ' +
385
+ 'The bundle patch is older than the installed dsh-tui package — update the globally installed dsh-tui launcher to match the profile (issue #183).');
386
+ }
387
387
  // Same skew guard for the plugin-UI services (dsh-tui-extensions row):
388
388
  // managed dialogs park unanswered, status contributions never render,
389
389
  // shortcuts never match, custom-entry renderers stay invisible, and runtime
@@ -471,6 +471,13 @@ export async function apply(ctx, runtimeConfig, configOwner = ctx) {
471
471
  // (the runtime `/activity` command only changes the preset), so a hidden
472
472
  // line attaches nothing at all — no feed, no 500ms tick.
473
473
  const activityStore = createActivityStore(ctx, config.activity !== false);
474
+ // Read side of the token meter's `contextPressure` unit: the ONE occupancy
475
+ // source for the footer, the segmented bar, the status commands and the
476
+ // context-low warning. Created unconditionally (unlike the activity store,
477
+ // there is no config gate: hiding the bar must not make the warning or the
478
+ // footer read a stale sample). A composition without the meter leaves it
479
+ // empty and the channel falls back to the last-request sample.
480
+ const contextOccupancyStore = createContextOccupancyStore(ctx);
474
481
  const rawChannel = createChannel(ctx, agent, {
475
482
  // The namespace this boot actually registered the settings section under
476
483
  // (the Config owner's Loader id; custom ids are supported). Chat and the
@@ -481,6 +488,10 @@ export async function apply(ctx, runtimeConfig, configOwner = ctx) {
481
488
  // soon as this session binds so a resumed or reattached session renders its
482
489
  // line immediately instead of waiting for the next event.
483
490
  seedActivity: session => activityStore.seed(session),
491
+ // Same reason as the activity line: the occupancy projection only pushes on
492
+ // change, so a resumed session reads one baseline at bind time.
493
+ contextPressure: contextOccupancyStore,
494
+ seedContextOccupancy: session => contextOccupancyStore.seed(session),
484
495
  // A RESUMED session keeps its persisted header cwd (issue #96 review):
485
496
  // pre-upgrade sessions recorded the launch directory, and re-resolving
486
497
  // from the current launch directory would split @ expansion / file
@@ -515,6 +526,7 @@ export async function apply(ctx, runtimeConfig, configOwner = ctx) {
515
526
  // screen edits this key live through the dsh-tui namespace.
516
527
  diffLayout: config.diffLayout,
517
528
  thinkingFold: config.thinkingFold,
529
+ jobGroupFold: config.jobGroupFold,
518
530
  toolBackground: config.toolBackground,
519
531
  scrollGutter: config.scrollGutter,
520
532
  pageMargin: config.pageMargin,
@@ -564,6 +576,15 @@ export async function apply(ctx, runtimeConfig, configOwner = ctx) {
564
576
  // mermaid and LaTeX switches ride the same kind of store (Markdown is
565
577
  // memoized by content, so no prop reaches the diagram/formula nodes).
566
578
  applyPageMargin(config.pageMargin);
579
+ // Side panel (settings `dsh-tui.sidePanel.*`): same reason as pageMargin —
580
+ // the useSidePanel controller reads these module-level stores ABOVE the
581
+ // channel's version bump, so a Ctrl+B toggle re-renders Chat without any
582
+ // session change. applyDisplay below mirrors every settings edit into them.
583
+ applySidePanelSplitEnabled(config.sidePanel?.splitEnabled);
584
+ applySidePanelOpen(config.sidePanel?.open);
585
+ applySidePanelRatio(config.sidePanel?.ratio);
586
+ applySidePanelPanels(config.sidePanel?.panels);
587
+ applyCompanionSkin(config.companion?.skin);
567
588
  applyMermaidDiagrams(config.mermaidDiagrams);
568
589
  applyMathRendering(resolveMathRendering({}, config));
569
590
  applyMathImageScale(config.mathImageScale ?? 'auto');
@@ -613,6 +634,7 @@ export async function apply(ctx, runtimeConfig, configOwner = ctx) {
613
634
  const scope = createSettingsScope(configOwner, settingsCtx.settings, tuiSettingsNs, Schema.object({
614
635
  diffLayout: Schema.union(['auto', 'split', 'unified']).default('auto'),
615
636
  thinkingFold: Schema.union(['preview', 'full']).default('preview'),
637
+ jobGroupFold: Schema.union(['auto', 'always', 'never']).default('auto'),
616
638
  toolBackground: Schema.union(['none', 'subtle', 'strong']).default('none'),
617
639
  scrollGutter: Schema.union(['timeline', 'scrollbar', 'hidden']).default('timeline'),
618
640
  // Preset names AND custom `NxM` specs (the settings field's parse
@@ -657,6 +679,7 @@ export async function apply(ctx, runtimeConfig, configOwner = ctx) {
657
679
  contextUsage: Schema.boolean().default(DEFAULT_STATUS_BAR.contextUsage),
658
680
  cache: Schema.boolean().default(DEFAULT_STATUS_BAR.cache),
659
681
  tokens: Schema.boolean().default(DEFAULT_STATUS_BAR.tokens),
682
+ cost: Schema.boolean().default(DEFAULT_STATUS_BAR.cost),
660
683
  tps: Schema.boolean().default(DEFAULT_STATUS_BAR.tps),
661
684
  gitBranch: Schema.boolean().default(DEFAULT_STATUS_BAR.gitBranch),
662
685
  sessionTitle: Schema.boolean().default(DEFAULT_STATUS_BAR.sessionTitle),
@@ -668,6 +691,22 @@ export async function apply(ctx, runtimeConfig, configOwner = ctx) {
668
691
  trajectory: Schema.boolean().default(DEFAULT_STATUS_BAR.trajectory),
669
692
  shortcutHint: Schema.boolean().default(DEFAULT_STATUS_BAR.shortcutHint),
670
693
  }).default({ ...DEFAULT_STATUS_BAR }),
694
+ // Side-panel preferences. No schema defaults on purpose (same rule as
695
+ // foldTerminalCommand/expandEditor above): a default here would come
696
+ // back from scope.get()/watch() and shadow an explicit cordis.yml
697
+ // `sidePanel` block while the user layer is unset. applyDisplay
698
+ // resolves `?? config.sidePanel?.x` and the apply* stores normalize
699
+ // undefined to the documented defaults (true / false / 0.68 / the
700
+ // built-in panel trio).
701
+ sidePanel: Schema.object({
702
+ splitEnabled: Schema.boolean(),
703
+ open: Schema.boolean(),
704
+ ratio: Schema.number(),
705
+ panels: Schema.string(),
706
+ }),
707
+ companion: Schema.object({
708
+ skin: Schema.string(),
709
+ }),
671
710
  // Header pixel whale art; on unless settings.yaml says otherwise.
672
711
  whale: Schema.boolean().default(true),
673
712
  // Idle whale behaviors after the intro settles; on by default —
@@ -762,6 +801,7 @@ export async function apply(ctx, runtimeConfig, configOwner = ctx) {
762
801
  if (shadow)
763
802
  return;
764
803
  channel.setThinkingFold(value.thinkingFold ?? config.thinkingFold ?? 'preview');
804
+ channel.setJobGroupFold(normalizeJobGroupFold(value.jobGroupFold ?? config.jobGroupFold));
765
805
  channel.setToolBackground(normalizeToolBackground(value.toolBackground ?? config.toolBackground));
766
806
  channel.setScrollGutter(normalizeScrollGutter(value.scrollGutter ?? config.scrollGutter));
767
807
  // Page margin: the channel carries the mode (tests observe it), the
@@ -780,6 +820,15 @@ export async function apply(ctx, runtimeConfig, configOwner = ctx) {
780
820
  applyMathImageBacking(value.mathImageBacking ?? config.mathImageBacking ?? 'transparent');
781
821
  applyImageBacking(value.imageBacking ?? config.imageBacking ?? 'transparent');
782
822
  channel.setStatusBar(normalizeStatusBar(value.statusBar ?? config.statusBar));
823
+ // Side panel: no channel member — the layout owns module-level stores
824
+ // (they sit above the channel's version bump), so /settings writes them
825
+ // directly and useSidePanel's own subscriptions re-lay out at once. An
826
+ // unset user layer falls back to cordis.yml, then to the store default.
827
+ applySidePanelSplitEnabled(value.sidePanel?.splitEnabled ?? config.sidePanel?.splitEnabled);
828
+ applySidePanelOpen(value.sidePanel?.open ?? config.sidePanel?.open);
829
+ applySidePanelRatio(value.sidePanel?.ratio ?? config.sidePanel?.ratio);
830
+ applySidePanelPanels(value.sidePanel?.panels ?? config.sidePanel?.panels);
831
+ applyCompanionSkin(value.companion?.skin ?? config.companion?.skin);
783
832
  };
784
833
  // Legacy user scopes layer over cordis.yml. Modern Config is already
785
834
  // resolved: an unset action must not revive its startup override.
@@ -953,6 +1002,9 @@ export async function apply(ctx, runtimeConfig, configOwner = ctx) {
953
1002
  {
954
1003
  ...settingField('thinkingFold'),
955
1004
  },
1005
+ {
1006
+ ...settingField('jobGroupFold'),
1007
+ },
956
1008
  {
957
1009
  ...settingField('toolBackground'),
958
1010
  },
@@ -1093,6 +1145,66 @@ export async function apply(ctx, runtimeConfig, configOwner = ctx) {
1093
1145
  {
1094
1146
  ...settingField('statusBar.shortcutHint'),
1095
1147
  },
1148
+ {
1149
+ ...settingField('sidePanel.splitEnabled'),
1150
+ format(value) {
1151
+ // Unset in the user layer: the effective default is on.
1152
+ return String(typeof value === 'boolean' ? value : config.sidePanel?.splitEnabled !== false);
1153
+ },
1154
+ },
1155
+ {
1156
+ ...settingField('sidePanel.open'),
1157
+ format(value) {
1158
+ // Unset in the user layer: the effective default is off.
1159
+ return String(typeof value === 'boolean' ? value : config.sidePanel?.open === true);
1160
+ },
1161
+ },
1162
+ {
1163
+ ...settingField('sidePanel.ratio'),
1164
+ placeholder: '0.68',
1165
+ format(value) {
1166
+ // Unset in the user layer: show the effective fraction.
1167
+ const ratio = typeof value === 'number' && Number.isFinite(value) ? value : config.sidePanel?.ratio;
1168
+ return String(ratio ?? 0.68);
1169
+ },
1170
+ parse(text) {
1171
+ const draft = text.trim();
1172
+ if (draft === '')
1173
+ return { kind: 'clear' };
1174
+ const ratio = Number(draft);
1175
+ // Range gate mirrors the geometry contract (0.1–0.95): an
1176
+ // out-of-range draft would be silently clamped by the store, so
1177
+ // refuse it and let the editor keep the error badge instead.
1178
+ if (!Number.isFinite(ratio) || ratio < 0.1 || ratio > 0.95)
1179
+ return undefined;
1180
+ return { kind: 'set', value: ratio };
1181
+ },
1182
+ },
1183
+ {
1184
+ ...settingField('sidePanel.panels'),
1185
+ placeholder: DEFAULT_SIDE_PANEL_IDS,
1186
+ format(value) {
1187
+ // Unset in the user layer: show the effective list.
1188
+ return typeof value === 'string' && value.trim() !== ''
1189
+ ? value
1190
+ : config.sidePanel?.panels ?? DEFAULT_SIDE_PANEL_IDS;
1191
+ },
1192
+ parse(text) {
1193
+ const draft = text.trim();
1194
+ if (draft === '')
1195
+ return { kind: 'clear' };
1196
+ // Strict gate: every token must be a well-formed panel id. The
1197
+ // store would drop a typo silently, so a draft that does not
1198
+ // round-trip is refused instead of saved as something else.
1199
+ const tokens = draft.split(',').map(token => token.trim().toLowerCase()).filter(token => token !== '');
1200
+ if (tokens.length === 0 || tokens.some(token => !SIDE_PANEL_ID_PATTERN.test(token)))
1201
+ return undefined;
1202
+ return { kind: 'set', value: normalizeSidePanelPanels(draft) };
1203
+ },
1204
+ },
1205
+ {
1206
+ ...settingField('companion.skin'),
1207
+ },
1096
1208
  {
1097
1209
  ...settingField('whale'),
1098
1210
  },
@@ -1328,10 +1440,33 @@ export async function apply(ctx, runtimeConfig, configOwner = ctx) {
1328
1440
  * so a process that dies before the first frame does not consume it.
1329
1441
  */
1330
1442
  const homeSeen = readHomePrefs().seen === true;
1331
- const openHomeOnBoot = !homeSeen
1332
- && launchSessionId === undefined
1333
- && requestedWorkspace === undefined
1334
- && initialPrompt === '';
1443
+ /**
1444
+ * 「普通启动」在这里有两档口径,差在**工作区目标算不算**:
1445
+ *
1446
+ * - 落地页与首启引导只认「没说要回到哪儿」:没有 resume 目标、没有首句。
1447
+ * - home(会话与工作区)还多认一条「没说在哪儿干活」——那一屏问的就是这个。
1448
+ *
1449
+ * 工作区目标**不能**进前者的判定:`dst` 那类 launcher 默认把 cwd 当工作区
1450
+ * 目标喂进来(D:/node/dst.cmd 里 set DSH_TUI_WORKSPACE_TARGET=%CD%),一旦
1451
+ * 算进去,落地页在本机最主流的启动方式下**永远不出**——用户实测「既没看到
1452
+ * ob 也没看到 lp」的根因就是这一条。
1453
+ */
1454
+ const noResume = isLandingLaunch({ launchSessionId, initialPrompt });
1455
+ const openHomeOnBoot = !homeSeen && noResume && requestedWorkspace === undefined;
1456
+ /**
1457
+ * The launchpad is NOT one-shot the way the workspace home is: every
1458
+ * ordinary launch starts on it, because it is where the first sentence gets
1459
+ * typed rather than a tutorial that retires itself. `DSH_TUI_NO_LAUNCHPAD=1`
1460
+ * is the escape hatch (an automation that wants the old blank conversation
1461
+ * and no dialog in front of it).
1462
+ */
1463
+ const launchpadOnBoot = noResume && process.env.DSH_TUI_NO_LAUNCHPAD !== '1';
1464
+ /**
1465
+ * The first-run guide. Gated on its own preference (not on `homeSeen`): the
1466
+ * two answer different questions, and an install that already knows its
1467
+ * workspace may still never have configured a key.
1468
+ */
1469
+ const onboardingOnBoot = noResume && shouldOfferOnboarding();
1335
1470
  const chat = React.createElement(Chat, {
1336
1471
  channel,
1337
1472
  renderScene: createChannelSceneOutlet(() => rawChannel.pluginScene),
@@ -1339,6 +1474,8 @@ export async function apply(ctx, runtimeConfig, configOwner = ctx) {
1339
1474
  approvalStore,
1340
1475
  injectControllerRef,
1341
1476
  openHomeOnBoot,
1477
+ launchpadOnBoot,
1478
+ onboardingOnBoot,
1342
1479
  // The dsh-tui-extensions row's services (managed dialogs, status line,
1343
1480
  // shortcuts). Soft-consumed: absent the row (stale patch, bare embed),
1344
1481
  // Chat falls back to inert stores and no shortcut registry.
@@ -79,12 +79,32 @@ export declare function runningPresetOf(session: unknown): string | undefined;
79
79
  */
80
80
  export declare function resolvePersistedRoute(ctx: Context, sessionId: SessionId): Promise<ModelRoute | undefined>;
81
81
  /**
82
- * Keep the official Minimal preset's model-facing catalog minimal. The preset
83
- * itself declares exactly one persistent shell tool (bash on POSIX, pwsh on
84
- * Windows), while the TUI mounts ask_user_question at the host layer so every
85
- * other preset (including user presets) can use its questionnaire UI —
86
- * that host-layer tool otherwise merges into Minimal's scoped catalog as an
87
- * extra tool.
82
+ * Whether the host-layer `ask_user_question` tool must stay invisible to one
83
+ * preset's model-facing catalog.
84
+ *
85
+ * The official Minimal preset is a single-persistent-shell trajectory
86
+ * (`@deepseek-ai/dsh-web-app/presets/minimal.patch.yml`: `persona` +
87
+ * `persistent-shell`, i.e. bash on POSIX / pwsh on Windows — `str_replace_editor`
88
+ * has been opt-in since 0.1.3-alpha.2), while the TUI mounts
89
+ * ask_user_question at the HOST layer so every other preset (including user
90
+ * presets) can use its questionnaire UI; that host-layer tool otherwise merges
91
+ * into Minimal's scoped catalog as an extra tool.
92
+ *
93
+ * The recorded preset id is the only signal available at the assembly
94
+ * boundary: the composition exposes no per-tool manifest, and a host tool's
95
+ * presence in the tool registry cannot tell whether a preset declared it. This
96
+ * is therefore the ONE preset-id read in the capability path, shared with
97
+ * `resolveAgentCapabilities` so advertisement and assembly agree, and pinned
98
+ * by `verify:minimal-preset-tools`.
99
+ *
100
+ * @param presetId - Preset recorded for the requesting session.
101
+ * @returns True when the host-layer tool must be filtered out of the assembly.
102
+ */
103
+ export declare function presetHidesHostAskTool(presetId: string | undefined): boolean;
104
+ /**
105
+ * Keep the official Minimal preset's model-facing catalog minimal: it declares
106
+ * exactly one persistent shell tool, and the host-mounted ask_user_question
107
+ * must not become a second one.
88
108
  *
89
109
  * This is a per-assembly filter rather than a startup-time decision because
90
110
  * one TUI process can resume, create, or recompose sessions under different
@@ -1 +1 @@
1
- {"version":3,"file":"presets.d.ts","sourceRoot":"","sources":["../../../src/dsh-adapter/presets.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AACxD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAA;AACzD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAA;AACpE,OAAO,EAAsB,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAWtE,kEAAkE;AAClE,MAAM,WAAW,iBAAiB;IAChC,kFAAkF;IAClF,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;IAC7B,yEAAyE;IACzE,QAAQ,CAAC,KAAK,CAAC,EAAE,UAAU,CAAA;CAC5B;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,aAAa,CAAC,GAAG,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAmBhG;AAED;;;;;;;;;GASG;AACH,wBAAsB,sBAAsB,CAAC,GAAG,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAW5G;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAGpE;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,qBAAqB,CAAC,GAAG,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC,CAW/G;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,cAAc,CAM/G;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE;IAAE,GAAG,EAAE,OAAO,CAAA;CAAE,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS,CAKpG"}
1
+ {"version":3,"file":"presets.d.ts","sourceRoot":"","sources":["../../../src/dsh-adapter/presets.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AACxD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAA;AACzD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAA;AACpE,OAAO,EAAsB,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAWtE,kEAAkE;AAClE,MAAM,WAAW,iBAAiB;IAChC,kFAAkF;IAClF,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;IAC7B,yEAAyE;IACzE,QAAQ,CAAC,KAAK,CAAC,EAAE,UAAU,CAAA;CAC5B;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,aAAa,CAAC,GAAG,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAmBhG;AAED;;;;;;;;;GASG;AACH,wBAAsB,sBAAsB,CAAC,GAAG,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAW5G;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAGpE;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,qBAAqB,CAAC,GAAG,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC,CAW/G;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAE5E;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,cAAc,CAM/G;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE;IAAE,GAAG,EAAE,OAAO,CAAA;CAAE,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS,CAKpG"}
@@ -120,12 +120,34 @@ export async function resolvePersistedRoute(ctx, sessionId) {
120
120
  }
121
121
  }
122
122
  /**
123
- * Keep the official Minimal preset's model-facing catalog minimal. The preset
124
- * itself declares exactly one persistent shell tool (bash on POSIX, pwsh on
125
- * Windows), while the TUI mounts ask_user_question at the host layer so every
126
- * other preset (including user presets) can use its questionnaire UI —
127
- * that host-layer tool otherwise merges into Minimal's scoped catalog as an
128
- * extra tool.
123
+ * Whether the host-layer `ask_user_question` tool must stay invisible to one
124
+ * preset's model-facing catalog.
125
+ *
126
+ * The official Minimal preset is a single-persistent-shell trajectory
127
+ * (`@deepseek-ai/dsh-web-app/presets/minimal.patch.yml`: `persona` +
128
+ * `persistent-shell`, i.e. bash on POSIX / pwsh on Windows — `str_replace_editor`
129
+ * has been opt-in since 0.1.3-alpha.2), while the TUI mounts
130
+ * ask_user_question at the HOST layer so every other preset (including user
131
+ * presets) can use its questionnaire UI; that host-layer tool otherwise merges
132
+ * into Minimal's scoped catalog as an extra tool.
133
+ *
134
+ * The recorded preset id is the only signal available at the assembly
135
+ * boundary: the composition exposes no per-tool manifest, and a host tool's
136
+ * presence in the tool registry cannot tell whether a preset declared it. This
137
+ * is therefore the ONE preset-id read in the capability path, shared with
138
+ * `resolveAgentCapabilities` so advertisement and assembly agree, and pinned
139
+ * by `verify:minimal-preset-tools`.
140
+ *
141
+ * @param presetId - Preset recorded for the requesting session.
142
+ * @returns True when the host-layer tool must be filtered out of the assembly.
143
+ */
144
+ export function presetHidesHostAskTool(presetId) {
145
+ return presetId === 'minimal';
146
+ }
147
+ /**
148
+ * Keep the official Minimal preset's model-facing catalog minimal: it declares
149
+ * exactly one persistent shell tool, and the host-mounted ask_user_question
150
+ * must not become a second one.
129
151
  *
130
152
  * This is a per-assembly filter rather than a startup-time decision because
131
153
  * one TUI process can resume, create, or recompose sessions under different
@@ -136,7 +158,7 @@ export async function resolvePersistedRoute(ctx, sessionId) {
136
158
  * @returns The original assembly, except ask_user_question is absent in Minimal.
137
159
  */
138
160
  export function filterMinimalPresetTools(assembly, presetId) {
139
- if (presetId !== 'minimal' || !assembly.tools.some(tool => tool.name === ASK_USER_TOOL))
161
+ if (!presetHidesHostAskTool(presetId) || !assembly.tools.some(tool => tool.name === ASK_USER_TOOL))
140
162
  return assembly;
141
163
  return {
142
164
  ...assembly,
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Extract the startup prompt from raw app argv, excluding session selectors
3
+ * and Web startup flag values. `--trusted-host` consumes multiple authorities
4
+ * up to the next flag; none of them are prompt text (issue #882). An app-level
5
+ * `--` ends flag parsing; all following tokens are literal prompt text.
6
+ */
7
+ export declare function initialPromptFromCmdlineArgs(args: readonly string[] | undefined): string;
8
+ //# sourceMappingURL=startup-args.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"startup-args.d.ts","sourceRoot":"","sources":["../../../src/dsh-adapter/startup-args.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,wBAAgB,4BAA4B,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,GAAG,MAAM,CAsBxF"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Extract the startup prompt from raw app argv, excluding session selectors
3
+ * and Web startup flag values. `--trusted-host` consumes multiple authorities
4
+ * up to the next flag; none of them are prompt text (issue #882). An app-level
5
+ * `--` ends flag parsing; all following tokens are literal prompt text.
6
+ */
7
+ export function initialPromptFromCmdlineArgs(args) {
8
+ if (args === undefined)
9
+ return '';
10
+ const promptArgs = [];
11
+ for (let i = 0; i < args.length; i += 1) {
12
+ const arg = args[i];
13
+ if (arg === '--') {
14
+ promptArgs.push(...args.slice(i + 1));
15
+ break;
16
+ }
17
+ if (arg === '--resume' || arg === '--host' || arg === '--port') {
18
+ if (args[i + 1] !== undefined && !args[i + 1].startsWith('-'))
19
+ i += 1;
20
+ continue;
21
+ }
22
+ if (arg === '--trusted-host') {
23
+ while (args[i + 1] !== undefined && !args[i + 1].startsWith('-'))
24
+ i += 1;
25
+ continue;
26
+ }
27
+ if (arg.startsWith('--resume='))
28
+ continue;
29
+ if (arg.startsWith('-'))
30
+ continue;
31
+ promptArgs.push(arg);
32
+ }
33
+ return promptArgs.join(' ').trim();
34
+ }
@@ -3,32 +3,49 @@ export type HistoryEntry = {
3
3
  text: string;
4
4
  /** Unix ms timestamp. */
5
5
  ts: number;
6
+ /**
7
+ * Normalized workspace cwd the input was submitted in. Absent on entries
8
+ * written before history became project-scoped; those legacy entries stay
9
+ * visible in every project until that project's own entries push them out
10
+ * of the `HISTORY_LIMIT` window.
11
+ */
12
+ project?: string;
6
13
  };
7
14
  /**
8
- * Entry cap for the persisted history. `↑`/`↓` and the Ctrl+R overlay read
9
- * the same file, so both depths come from this one number.
15
+ * Per-project entry cap. `↑`/`↓` and the Ctrl+R overlay read the same file,
16
+ * so both depths come from this one number.
10
17
  */
11
18
  export declare const HISTORY_LIMIT = 200;
12
19
  /**
13
- * Append an input to the persisted history, deduping the immediately
14
- * previous entry and capping the file at `HISTORY_LIMIT` entries.
20
+ * Project key for a workspace cwd: absolute, forward slashes, no trailing
21
+ * slash, case-folded on Windows (whose filesystem is case-insensitive).
22
+ * @param cwd - Workspace cwd; blank means unscoped.
23
+ * @returns The normalized key, or `undefined` when unscoped.
24
+ */
25
+ export declare function historyProjectKey(cwd: string | undefined): string | undefined;
26
+ /**
27
+ * Append an input to the persisted history, deduping the project's
28
+ * immediately previous entry and capping each project at `HISTORY_LIMIT`.
15
29
  * @param text - Input to persist; blank inputs are ignored.
30
+ * @param cwd - Workspace cwd the input belongs to; omitted = unscoped.
16
31
  * @returns Resolves once this entry is persisted; callers on the input path
17
32
  * intentionally discard it because persistence is best-effort.
18
33
  */
19
- export declare function appendHistory(text: string): Promise<void>;
34
+ export declare function appendHistory(text: string, cwd?: string): Promise<void>;
20
35
  /**
21
36
  * Read the persisted history, newest first.
37
+ * @param cwd - Workspace cwd to scope to; omitted = every project.
22
38
  * @returns The persisted entries in reverse-chronological order.
23
39
  */
24
- export declare function loadHistory(): HistoryEntry[];
40
+ export declare function loadHistory(cwd?: string): HistoryEntry[];
25
41
  /**
26
42
  * Read the persisted history in the order the composer walks it: oldest
27
43
  * first, so `↑` reaches the newest entry first (the list tail) exactly as it
28
44
  * does for the entries this process pushed itself.
45
+ * @param cwd - Workspace cwd to scope to; omitted = every project.
29
46
  * @returns The persisted entries in chronological order.
30
47
  */
31
- export declare function loadHistoryOldestFirst(): HistoryEntry[];
48
+ export declare function loadHistoryOldestFirst(cwd?: string): HistoryEntry[];
32
49
  /**
33
50
  * Stable id for a history entry (keeps React keys distinct across identical texts).
34
51
  * @param entry - The history entry to hash.
@@ -1 +1 @@
1
- {"version":3,"file":"history.d.ts","sourceRoot":"","sources":["../../src/history.ts"],"names":[],"mappings":"AAWA,yCAAyC;AACzC,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,EAAE,MAAM,CAAA;IACZ,yBAAyB;IACzB,EAAE,EAAE,MAAM,CAAA;CACX,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,aAAa,MAAM,CAAA;AAuHhC;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAQzD;AAED;;;GAGG;AACH,wBAAgB,WAAW,IAAI,YAAY,EAAE,CAE5C;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,IAAI,YAAY,EAAE,CAEvD;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,YAAY,EAAE,KAAK,SAAI,GAAG,MAAM,CAErE"}
1
+ {"version":3,"file":"history.d.ts","sourceRoot":"","sources":["../../src/history.ts"],"names":[],"mappings":"AAWA,yCAAyC;AACzC,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,EAAE,MAAM,CAAA;IACZ,yBAAyB;IACzB,EAAE,EAAE,MAAM,CAAA;IACV;;;;;OAKG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,aAAa,MAAM,CAAA;AA+ChC;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAI7E;AA6GD;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CASvE;AAWD;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,YAAY,EAAE,CAExD;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,YAAY,EAAE,CAEnE;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,YAAY,EAAE,KAAK,SAAI,GAAG,MAAM,CAErE"}