@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
@@ -1,16 +1,19 @@
1
1
  /**
2
- * The `ctx.dshAuth` service: the programmatic surface over this plugin's
2
+ * The `ctx.dshAuth` service: the programmatic surface over this module's
3
3
  * mounted OAuth routes. UIs (the dsh-tui /provider wizard, a web settings
4
4
  * page) enumerate providers with masked sign-in state and drive login/logout
5
5
  * without touching the credential file or the pi-ai flow objects; the `/auth`
6
6
  * command in `command.ts` is a thin textual veneer over the same api.
7
7
  *
8
- * @module dsh-auth/service
8
+ * @module @deepseek-harness-tui/dsh-tui/oauth/service
9
9
  */
10
10
  import { Service } from '@deepseek-ai/cordis';
11
11
  import { asStoredCredential } from './credentials.js';
12
12
  import { oauthOf } from './profiles.js';
13
13
  import { QuestionBridge } from './interaction.js';
14
+ import { loginOAuth } from './pi-ai.js';
15
+ import { DEEPSEEK_ACCOUNT_PROVIDER, deepSeekClientMetadata, loginDeepSeekAccount, } from './deepseek.js';
16
+ import { WhaleCouponStore } from './bonus.js';
14
17
  /**
15
18
  * The constructed catalog provider one mounted route carries. 0.1.5 made
16
19
  * `ResolvedPiAiProviderProfile.piProvider` optional (a stored route that
@@ -27,6 +30,7 @@ function mountedProvider(profile) {
27
30
  /** Cordis service holder; `api` is set by the plugin's apply. */
28
31
  export class DshAuthService extends Service {
29
32
  api;
33
+ coupons = new WhaleCouponStore();
30
34
  constructor(ctx) {
31
35
  super(ctx, 'dshAuth');
32
36
  }
@@ -56,9 +60,13 @@ async function chooseProvider(ask, candidates, signal) {
56
60
  */
57
61
  export function createDshAuthApi(deps) {
58
62
  const inflight = new Map();
63
+ const mountedIds = () => [
64
+ ...deps.profiles.keys(),
65
+ ...(deps.resolveDeepSeekAccount?.() === undefined ? [] : [DEEPSEEK_ACCOUNT_PROVIDER]),
66
+ ];
59
67
  const statusOf = async () => {
60
68
  const described = new Map((await deps.store.describe()).map(row => [row.provider, row]));
61
- return [...deps.profiles.entries()].map(([id, profile]) => {
69
+ const piAi = [...deps.profiles.entries()].map(([id, profile]) => {
62
70
  const oauth = oauthOf(mountedProvider(profile));
63
71
  const row = described.get(id);
64
72
  return {
@@ -71,32 +79,55 @@ export function createDshAuthApi(deps) {
71
79
  expired: row?.expired ?? false,
72
80
  };
73
81
  });
82
+ const account = deps.resolveDeepSeekAccount?.();
83
+ if (account === undefined)
84
+ return piAi;
85
+ const state = await account.getState();
86
+ return [{
87
+ provider: DEEPSEEK_ACCOUNT_PROVIDER,
88
+ label: 'DeepSeek Account',
89
+ oauthLabel: 'DeepSeek',
90
+ loginLabel: 'Sign in with DeepSeek',
91
+ signedIn: state.status === 'credential-stored',
92
+ expiresAt: undefined,
93
+ expired: false,
94
+ }, ...piAi];
74
95
  };
75
96
  const loginOne = async (provider, ask, signal) => {
76
97
  const profile = deps.profiles.get(provider);
77
98
  if (profile === undefined) {
78
- throw new Error(`dsh-auth: unknown provider "${provider}" (mounted: ${[...deps.profiles.keys()].join(', ')})`);
99
+ throw new Error(`dsh-auth: unknown provider "${provider}" (mounted: ${mountedIds().join(', ')})`);
79
100
  }
80
101
  const oauth = oauthOf(mountedProvider(profile));
81
102
  const runAbort = new AbortController();
103
+ const forwardAbort = () => runAbort.abort(signal?.reason);
82
104
  if (signal !== undefined) {
83
105
  if (signal.aborted)
84
- runAbort.abort(signal.reason);
106
+ forwardAbort();
85
107
  else
86
- signal.addEventListener('abort', () => runAbort.abort(signal.reason), { once: true });
108
+ signal.addEventListener('abort', forwardAbort, { once: true });
87
109
  }
88
110
  const bridge = new QuestionBridge(ask, runAbort);
89
111
  try {
90
- const returned = await oauth.login(bridge);
112
+ runAbort.signal.throwIfAborted();
113
+ const returned = await loginOAuth(oauth, bridge, {
114
+ // pi-ai 0.87.1's `openai` flow needs this on login. Older flows
115
+ // ignore the optional context, so the ID is created only on demand.
116
+ getDeviceId: () => deps.store.getOrCreateDeviceId(),
117
+ });
91
118
  const normalized = asStoredCredential(returned);
92
119
  if (normalized === undefined) {
93
120
  throw new Error(`dsh-auth: the ${oauth.name} flow returned an unusable credential; nothing was stored`);
94
121
  }
95
- const stored = normalized;
96
- await deps.store.modify(provider, async () => stored);
97
- return { provider, oauthLabel: oauth.name, expiresAt: stored.expires };
122
+ await deps.store.modify(provider, async () => {
123
+ // Logout may have cancelled the flow while this write waited for the file lock.
124
+ runAbort.signal.throwIfAborted();
125
+ return normalized;
126
+ });
127
+ return { provider, oauthLabel: oauth.name, expiresAt: normalized.expires };
98
128
  }
99
129
  finally {
130
+ signal?.removeEventListener('abort', forwardAbort);
100
131
  await bridge.settle();
101
132
  }
102
133
  };
@@ -115,24 +146,58 @@ export function createDshAuthApi(deps) {
115
146
  throw new Error('dsh-auth: every mounted provider is already signed in');
116
147
  target = await chooseProvider(ask, candidates, signal);
117
148
  }
118
- else if (!deps.profiles.has(target)) {
119
- throw new Error(`dsh-auth: unknown provider "${target}" (mounted: ${[...deps.profiles.keys()].join(', ')})`);
149
+ else if (!mountedIds().includes(target)) {
150
+ throw new Error(`dsh-auth: unknown provider "${target}" (mounted: ${mountedIds().join(', ')})`);
120
151
  }
121
152
  if (ask === undefined) {
122
153
  throw new Error(`dsh-auth: signing in to "${target}" needs an interactive surface (run inside dsh-tui or the web client); `
123
154
  + 'this plugin refuses to assume a browser on this machine');
124
155
  }
125
- const existing = inflight.get(target);
126
- if (existing !== undefined) {
156
+ if (inflight.has(target)) {
127
157
  throw new Error(`dsh-auth: a login for "${target}" is already running`);
128
158
  }
129
- const run = loginOne(target, ask, signal).finally(() => { inflight.delete(target); });
130
- inflight.set(target, run);
159
+ const account = target === DEEPSEEK_ACCOUNT_PROVIDER ? deps.resolveDeepSeekAccount?.() : undefined;
160
+ if (target === DEEPSEEK_ACCOUNT_PROVIDER && account === undefined) {
161
+ throw new Error(`dsh-auth: provider "${target}" is no longer mounted`);
162
+ }
163
+ const cancellation = new AbortController();
164
+ const runSignal = signal === undefined ? cancellation.signal : AbortSignal.any([signal, cancellation.signal]);
165
+ inflight.set(target, cancellation);
166
+ const run = (account === undefined
167
+ ? loginOne(target, ask, runSignal)
168
+ : (async () => {
169
+ runSignal.throwIfAborted();
170
+ const callbackOrigin = await deps.resolveCallbackOrigin?.();
171
+ runSignal.throwIfAborted();
172
+ if (callbackOrigin === undefined) {
173
+ throw new Error('DeepSeek sign-in needs an active Host webServer for the browser callback');
174
+ }
175
+ await loginDeepSeekAccount(account, callbackOrigin, ask, runSignal);
176
+ deps.coupons?.clear();
177
+ const getUnnotifiedBonuses = account.getUnnotifiedBonuses?.bind(account);
178
+ const ackBonusNotified = account.ackBonusNotified?.bind(account);
179
+ if (getUnnotifiedBonuses !== undefined && ackBonusNotified !== undefined) {
180
+ void deps.coupons?.refresh({ getUnnotifiedBonuses, ackBonusNotified });
181
+ }
182
+ return { provider: target, oauthLabel: 'DeepSeek', expiresAt: undefined };
183
+ })()).finally(() => { inflight.delete(target); });
131
184
  return run;
132
185
  },
133
186
  logout: async (provider) => {
187
+ // A DeepSeek login may still be awaiting its callback listener, before
188
+ // the Host has an attempt to cancel. Abort it before Host sign-out.
189
+ inflight.get(provider)?.abort(new Error('Login cancelled'));
190
+ if (provider === DEEPSEEK_ACCOUNT_PROVIDER) {
191
+ const account = deps.resolveDeepSeekAccount?.();
192
+ if (account !== undefined) {
193
+ const existed = (await account.getState()).status === 'credential-stored';
194
+ await account.signOut(deepSeekClientMetadata());
195
+ deps.coupons?.clear();
196
+ return existed;
197
+ }
198
+ }
134
199
  if (!deps.profiles.has(provider)) {
135
- throw new Error(`dsh-auth: unknown provider "${provider}" (mounted: ${[...deps.profiles.keys()].join(', ')})`);
200
+ throw new Error(`dsh-auth: unknown provider "${provider}" (mounted: ${mountedIds().join(', ')})`);
136
201
  }
137
202
  const existed = (await deps.store.read(provider)) !== undefined;
138
203
  await deps.store.delete(provider);
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Host-side per-panel owner registry for ctx.tuiPanels (§18.2).
3
+ *
4
+ * The PanelStore owns registration/badges; THIS map owns what only the
5
+ * Cordis side knows: which activation registered a panel id, its plugin id,
6
+ * and the lazy bridges the rendered panel's host API needs (toast, scenes,
7
+ * plugin storage). Kept module-level next to the process-level PanelStore —
8
+ * a WeakMap on the service would die with the service object while the
9
+ * PanelStore (and rendered panels) outlive it.
10
+ */
11
+ import type { Context } from '@deepseek-ai/cordis';
12
+ import type { TuiPluginStorage } from './plugin-storage.js';
13
+ export interface PanelOwnerRecord {
14
+ /** Canonical activation context (kept alive by the bound effect; the panel
15
+ * is unregistered before the activation tears down, so late host-API calls
16
+ * through a disposed ctx degrade, never crash the store). */
17
+ readonly caller: Context;
18
+ /** activationFiber identity — ownership check for every mutating call. */
19
+ readonly owner: object;
20
+ readonly pluginId: string;
21
+ /** open() rate limit: at most one open per plugin per 5s (§18.2). */
22
+ lastOpenAt: number;
23
+ storage?: TuiPluginStorage;
24
+ }
25
+ export declare function getPanelOwnerRecord(id: string): PanelOwnerRecord | undefined;
26
+ export declare function setPanelOwnerRecord(id: string, record: PanelOwnerRecord): void;
27
+ export declare function deletePanelOwnerRecord(id: string): void;
28
+ export declare function countPanelsOwnedBy(owner: object): number;
29
+ export declare function countPluginPanels(): number;
30
+ /** Plugin Panel 的 toast:经注册激活自己的 tuiToast 服务(无服务时静默
31
+ * false,与 scenes 降级语义一致)。 */
32
+ export declare function pluginPanelToast(id: string, text: string): boolean;
33
+ /** 打开自己注册的全屏场景:转 tuiScenes(它自己做 owner 校验与降级)。 */
34
+ export declare function pluginPanelOpenScene(id: string, sceneId: string): boolean;
35
+ /** 自己的 tuiPluginStorage 句柄(懒开、每 Panel 一次;无服务时 undefined)。 */
36
+ export declare function pluginPanelStorage(id: string): TuiPluginStorage | undefined;
37
+ /** 侧栏展开且自己是 active 时聚焦(useSidePanel 侧裁决)。 */
38
+ export declare function pluginPanelFocus(id: string): boolean;
39
+ //# sourceMappingURL=panel-runtime-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"panel-runtime-registry.d.ts","sourceRoot":"","sources":["../../../src/dsh-adapter/panel-runtime-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AAG3D,MAAM,WAAW,gBAAgB;IAC/B;;iEAE6D;IAC7D,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAA;IACxB,0EAA0E;IAC1E,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,qEAAqE;IACrE,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,CAAC,EAAE,gBAAgB,CAAA;CAC3B;AAID,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,MAAM,GAAG,gBAAgB,GAAG,SAAS,CAE5E;AAED,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,GAAG,IAAI,CAE9E;AAED,wBAAgB,sBAAsB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAEvD;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAIxD;AAED,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C;AAED;6BAC6B;AAC7B,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAUlE;AAED,iDAAiD;AACjD,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAUzE;AAED,6DAA6D;AAC7D,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,MAAM,GAAG,gBAAgB,GAAG,SAAS,CAc3E;AAED,6CAA6C;AAC7C,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAEpD"}
@@ -0,0 +1,84 @@
1
+ /**
2
+ * Host-side per-panel owner registry for ctx.tuiPanels (§18.2).
3
+ *
4
+ * The PanelStore owns registration/badges; THIS map owns what only the
5
+ * Cordis side knows: which activation registered a panel id, its plugin id,
6
+ * and the lazy bridges the rendered panel's host API needs (toast, scenes,
7
+ * plugin storage). Kept module-level next to the process-level PanelStore —
8
+ * a WeakMap on the service would die with the service object while the
9
+ * PanelStore (and rendered panels) outlive it.
10
+ */
11
+ import { panelBridgeRequests } from '../components/sidePanel/panelBridge.js';
12
+ const ownerRecords = new Map();
13
+ export function getPanelOwnerRecord(id) {
14
+ return ownerRecords.get(id);
15
+ }
16
+ export function setPanelOwnerRecord(id, record) {
17
+ ownerRecords.set(id, record);
18
+ }
19
+ export function deletePanelOwnerRecord(id) {
20
+ ownerRecords.delete(id);
21
+ }
22
+ export function countPanelsOwnedBy(owner) {
23
+ let count = 0;
24
+ for (const record of ownerRecords.values())
25
+ if (record.owner === owner)
26
+ count += 1;
27
+ return count;
28
+ }
29
+ export function countPluginPanels() {
30
+ return ownerRecords.size;
31
+ }
32
+ /** Plugin Panel 的 toast:经注册激活自己的 tuiToast 服务(无服务时静默
33
+ * false,与 scenes 降级语义一致)。 */
34
+ export function pluginPanelToast(id, text) {
35
+ const record = ownerRecords.get(id);
36
+ if (record === undefined)
37
+ return false;
38
+ const toast = record.caller.get('tuiToast');
39
+ if (toast === undefined || typeof toast.show !== 'function')
40
+ return false;
41
+ try {
42
+ return toast.show(text);
43
+ }
44
+ catch {
45
+ return false;
46
+ }
47
+ }
48
+ /** 打开自己注册的全屏场景:转 tuiScenes(它自己做 owner 校验与降级)。 */
49
+ export function pluginPanelOpenScene(id, sceneId) {
50
+ const record = ownerRecords.get(id);
51
+ if (record === undefined)
52
+ return false;
53
+ const scenes = record.caller.get('tuiScenes');
54
+ if (scenes === undefined || typeof scenes.open !== 'function')
55
+ return false;
56
+ try {
57
+ return scenes.open(sceneId);
58
+ }
59
+ catch {
60
+ return false;
61
+ }
62
+ }
63
+ /** 自己的 tuiPluginStorage 句柄(懒开、每 Panel 一次;无服务时 undefined)。 */
64
+ export function pluginPanelStorage(id) {
65
+ const record = ownerRecords.get(id);
66
+ if (record === undefined)
67
+ return undefined;
68
+ if (record.storage !== undefined)
69
+ return record.storage;
70
+ const service = record.caller.get('tuiPluginStorage');
71
+ if (service === undefined || typeof service.open !== 'function')
72
+ return undefined;
73
+ try {
74
+ record.storage = service.open(record.caller);
75
+ return record.storage;
76
+ }
77
+ catch {
78
+ return undefined;
79
+ }
80
+ }
81
+ /** 侧栏展开且自己是 active 时聚焦(useSidePanel 侧裁决)。 */
82
+ export function pluginPanelFocus(id) {
83
+ return panelBridgeRequests.request('focus', id);
84
+ }
@@ -0,0 +1,251 @@
1
+ /**
2
+ * ctx.tuiPanels — 插件侧栏 Panel 服务(设计文档 §8/§18,v2.1 修订,Phase 6)。
3
+ *
4
+ * 与 tuiStatus/tuiScenes 同一接缝家族:一份 Cordis-free 的进程级 store
5
+ * (components/sidePanel/PanelStore,注册/badge/错误隔离)+ 一层薄的
6
+ * Cordis 服务做准入(requirePluginCaller → activationFiber owner →
7
+ * bindCallerEffect 撤下 → 能力 shadow policy → 重复 id
8
+ * DUPLICATE_CONTRIBUTION_ID → Object.freeze descriptor)。
9
+ *
10
+ * 本阶段范围(§18.2 简化版):
11
+ * - register:宿主自动加 '<pluginId>:' 前缀;mountPolicy 强制 'active';
12
+ * minColumns 默认 28;预算 = 每插件 ≤4 个 / 全局 ≤32 个。
13
+ * - list:只读摘要(id/title/source,不含组件)。
14
+ * - open/close:仅自己注册的 id;open 为 mutate 且限速(每插件每 5s 至多
15
+ * 1 次,超过丢弃并记 ledger);UI 触达经 panelBridge(useSidePanel 订阅)。
16
+ * - badge:仅自己注册的 id → panelStore.setBadge。
17
+ * - subscribe:仅涉及自己 Panel 的事件(本阶段 registered/unregistered/
18
+ * badge/error/disabled;opened/closed/focused/blurred/sidebar-toggled 事件
19
+ * 源在 useSidePanel 侧,留 TODO)。
20
+ * - compact:descriptor 校验 + 存档,渲染槽不挂载(TODO §18.1)。
21
+ */
22
+ import type React from 'react';
23
+ import { Context, Service } from '@deepseek-ai/cordis';
24
+ import type { TuiPluginStorage } from './plugin-storage.js';
25
+ /** 插件 Panel API 版本(§18.2):descriptor.apiVersion 必须精确匹配。 */
26
+ export declare const TUI_PANEL_API_VERSION = 1;
27
+ /** 每插件 Panel 预算(§18.4)。 */
28
+ export declare const MAX_PANELS_PER_PLUGIN = 4;
29
+ /** 全局插件 Panel 注册预算(§18.4)。 */
30
+ export declare const MAX_PLUGIN_PANELS_TOTAL = 32;
31
+ /** open() 限速窗口:每插件每窗口至多 1 次。 */
32
+ export declare const PANEL_OPEN_RATE_LIMIT_MS = 5000;
33
+ type TuiPanelForbiddenBoxProps = 'ref' | 'tabIndex' | 'autoFocus' | 'onContextMenu' | 'onFocus' | 'onFocusCapture' | 'onBlur' | 'onBlurCapture' | 'onKeyDown' | 'onKeyDownCapture';
34
+ /** Box 保留 click/hover/drag/onWheel;焦点/键盘/上下文菜单被收走。 */
35
+ export type TuiPanelBoxProps = Omit<React.ComponentProps<typeof import('../ui.js').Box>, TuiPanelForbiddenBoxProps>;
36
+ export type TuiPanelTextProps = Omit<React.ComponentProps<typeof import('../ui.js').Text>, 'ref'>;
37
+ /** Image 走既有图片预算/协议回退路径(与 status view 的 Image 同一通道)。 */
38
+ export type TuiPanelImageProps = React.ComponentProps<typeof import('../ui.js').Image>;
39
+ export type TuiPanelScrollBoxProps = Omit<React.ComponentProps<typeof import('../ui.js').ScrollBox>, 'ref'>;
40
+ export type TuiPanelDividerProps = React.ComponentProps<typeof import('../components/design-system/Divider.js').Divider>;
41
+ /**
42
+ * 面板内 UI kit:宿主 React + 收窄组件 + Panel 尺寸感知。钩子和元素
43
+ * 必须走宿主 React(与 plugin scene 同一 single-React 规则)。
44
+ */
45
+ export interface TuiPanelUi {
46
+ readonly Box: React.ComponentType<TuiPanelBoxProps>;
47
+ readonly Text: React.ComponentType<TuiPanelTextProps>;
48
+ readonly Image: React.ComponentType<TuiPanelImageProps>;
49
+ readonly ScrollBox: React.ComponentType<TuiPanelScrollBoxProps>;
50
+ readonly Divider: React.ComponentType<TuiPanelDividerProps>;
51
+ /** 恒等于 Panel 的 { width, height }。 */
52
+ readonly useTerminalSize: () => {
53
+ readonly columns: number;
54
+ readonly rows: number;
55
+ };
56
+ /**
57
+ * 面板内唯一合法定时源:内部是 useAnimationFrame(ms) 的时间值([1])。
58
+ * 不暴露 hook 本体是因为其另一个返回值是必须挂到动画元素上的 ref——
59
+ * 插件乱挂会破坏共享时钟的可见性测度;时间值本身已覆盖面板动画的
60
+ * 全部需求(传 null 暂停)。
61
+ */
62
+ readonly useAnimationTime: (intervalMs: number | null) => number;
63
+ /** 只读主题。 */
64
+ readonly useTheme: typeof import('../ui.js').useTheme;
65
+ }
66
+ export type TuiPanelBadgeLevel = 'info' | 'warning' | 'error';
67
+ export type TuiPanelMode = 'split' | 'zoom' | 'fullscreen';
68
+ /** v2.1 键盘契约的插件视图:preventDefault() = 阻止宿主回退键。 */
69
+ export interface TuiPanelKeyEvent {
70
+ readonly input: string;
71
+ readonly key: import('../components/sidePanel/types.js').SidePanelKeyFlags;
72
+ preventDefault(): void;
73
+ }
74
+ /** 策展只读会话快照:SidePanelRuntimeContext 的结构拷贝,不含转录
75
+ * 正文/凭证/文件内容(§18.2)。 */
76
+ export interface TuiPanelSnapshot {
77
+ readonly sessionId: string;
78
+ readonly cwd: string;
79
+ readonly lang: string;
80
+ readonly working: boolean;
81
+ readonly spinnerMode: string;
82
+ readonly version: number;
83
+ readonly goal: Readonly<{
84
+ readonly objective: string;
85
+ readonly phase: 'active' | 'paused' | 'blocked' | 'complete';
86
+ readonly roundsStarted: number;
87
+ readonly maxGoalRounds: number;
88
+ }> | undefined;
89
+ readonly todos: readonly Readonly<{
90
+ readonly content: string;
91
+ readonly status: string;
92
+ }>[];
93
+ readonly backgroundJobs: readonly Readonly<{
94
+ readonly id: string;
95
+ readonly kind: string;
96
+ readonly label: string;
97
+ readonly status: string;
98
+ readonly progress?: string;
99
+ readonly detail?: string;
100
+ readonly startedAt: number;
101
+ }>[];
102
+ readonly subagents: readonly Readonly<{
103
+ readonly agentId: string;
104
+ readonly description: string;
105
+ readonly status: string;
106
+ readonly mode?: string;
107
+ readonly model?: string;
108
+ readonly startedAt: number;
109
+ readonly completedAt?: number;
110
+ }>[];
111
+ readonly attention: Readonly<{
112
+ readonly approvals: number;
113
+ readonly questions: number;
114
+ }>;
115
+ readonly activity: Readonly<Record<string, unknown>> | undefined;
116
+ }
117
+ /** 面板内 host API(§18.2;sendToChat 本阶段恒 false——授权未落地)。 */
118
+ export interface TuiPanelHostApi {
119
+ /** 策展只读快照(每次调用结构拷贝)。 */
120
+ snapshot(): TuiPanelSnapshot;
121
+ readonly focused: boolean;
122
+ notify(level: TuiPanelBadgeLevel, unread?: number): void;
123
+ clearBadge(): void;
124
+ /** 本阶段返回 false 并 toast 一次:需要 panels.chat.attach 授权(后续版本)。 */
125
+ sendToChat(payload: {
126
+ readonly title: string;
127
+ readonly content: string;
128
+ }): boolean;
129
+ /** 仅打开自己注册的全屏场景(tuiScenes 做 owner 校验)。 */
130
+ openScene(id: string): boolean;
131
+ toast(text: string): boolean;
132
+ /** 自己的 tuiPluginStorage 句柄(服务未挂时 undefined)。 */
133
+ readonly storage: TuiPluginStorage | undefined;
134
+ /** 仅 focused 期间投递(v2.1 分发器)。 */
135
+ onKey(listener: (event: TuiPanelKeyEvent) => void): () => void;
136
+ /** 侧栏展开且自己 active 时聚焦(useSidePanel 侧裁决)。 */
137
+ focus(): boolean;
138
+ }
139
+ /** 插件 Panel 组件 props。 */
140
+ export interface TuiPanelProps {
141
+ /** 宿主 React——所有钩子与元素必须经它(single-React 规则)。 */
142
+ readonly React: typeof React;
143
+ readonly ui: TuiPanelUi;
144
+ readonly host: TuiPanelHostApi;
145
+ readonly width: number;
146
+ readonly height: number;
147
+ readonly focused: boolean;
148
+ readonly visible: boolean;
149
+ readonly mode: TuiPanelMode;
150
+ }
151
+ /** compact 行 props(本阶段仅校验,不挂载渲染——槽位 TODO §18.1)。 */
152
+ export interface TuiPanelCompactProps {
153
+ readonly React: typeof React;
154
+ readonly ui: Pick<TuiPanelUi, 'Box' | 'Text'>;
155
+ readonly width: number;
156
+ readonly badge: {
157
+ readonly level: TuiPanelBadgeLevel;
158
+ readonly unread: number;
159
+ } | null;
160
+ }
161
+ /** 注册 descriptor(§18.2)。 */
162
+ export interface TuiPanelDescriptor {
163
+ readonly apiVersion: typeof TUI_PANEL_API_VERSION;
164
+ /** 单段小写 slug;宿主自动加 '<pluginId>:' 前缀。 */
165
+ readonly id: string;
166
+ readonly title: string;
167
+ /** 显示宽度必须为 1。 */
168
+ readonly icon?: string;
169
+ readonly minColumns?: number;
170
+ readonly order?: number;
171
+ readonly component?: React.ComponentType<TuiPanelProps>;
172
+ readonly compact?: {
173
+ readonly maxRows: 1 | 2 | 3;
174
+ readonly component: React.ComponentType<TuiPanelCompactProps>;
175
+ };
176
+ }
177
+ /** subscribe 的事件(本阶段:注册/撤下/badge/错误/禁用;opened/closed/
178
+ * focused/blurred/sidebar-toggled 的事件源在 useSidePanel 侧,留 TODO)。 */
179
+ export type TuiPanelEvent = {
180
+ readonly type: 'registered';
181
+ readonly id: string;
182
+ } | {
183
+ readonly type: 'unregistered';
184
+ readonly id: string;
185
+ } | {
186
+ readonly type: 'badge';
187
+ readonly id: string;
188
+ } | {
189
+ readonly type: 'error';
190
+ readonly id: string;
191
+ } | {
192
+ readonly type: 'disabled';
193
+ readonly id: string;
194
+ };
195
+ /** list() 的只读摘要(不含组件)。 */
196
+ export interface TuiPanelSummary {
197
+ readonly id: string;
198
+ readonly title: string;
199
+ readonly source: 'plugin';
200
+ }
201
+ /** Host-only facade(driver 探针用;不经插件面导出)。 */
202
+ export interface TuiPanelHost {
203
+ register(descriptor: {
204
+ readonly id: string;
205
+ readonly title?: string;
206
+ }): () => void;
207
+ list(): readonly TuiPanelSummary[];
208
+ open(id: string): boolean;
209
+ close(id: string): boolean;
210
+ subscribe(listener: (event: TuiPanelEvent) => void): () => void;
211
+ }
212
+ declare module '@deepseek-ai/cordis' {
213
+ interface Context {
214
+ tuiPanels: TuiPanelRuntime;
215
+ }
216
+ }
217
+ export declare const name = "dsh-tui-panels";
218
+ /**
219
+ * ctx.tuiPanels —— 插件侧栏 Panel 准入服务。拒绝一律 warn + 返回
220
+ * undefined/false(与 tuiStatus.registerView 同语义),绝不抛给插件。
221
+ */
222
+ export declare class TuiPanelRuntime extends Service {
223
+ constructor(ctx: Context);
224
+ /**
225
+ * 注册一个侧栏 Panel。成功返回 cleanup-aware disposer;拒绝 warn 并
226
+ * 返回 undefined(feature-detect 可辨)。identity 语义与 tuiStatus
227
+ * 相同(只喂 effect ledger 的 pluginId)。
228
+ */
229
+ register(descriptor: TuiPanelDescriptor, identity?: Context): (() => void) | undefined;
230
+ /** 只读摘要(仅自己注册的 Panel;不含组件)。 */
231
+ list(): readonly TuiPanelSummary[];
232
+ /**
233
+ * 打开自己注册的 Panel(展开侧栏并聚焦)。mutate + 限速:每插件每
234
+ * 5s 至多 1 次,超限丢弃并记 ledger。返回 false = 未注册/不属于自己的
235
+ * id、超限、或没有活的 Chat 控制器消费请求。
236
+ */
237
+ open(id: string): boolean;
238
+ /** 关闭自己注册的 Panel:若它是当前 active Panel,则收起侧栏。 */
239
+ close(id: string): boolean;
240
+ /** 设置/清除自己 Panel 的 badge。 */
241
+ badge(id: string, badge: {
242
+ level: TuiPanelBadgeLevel;
243
+ unread: number;
244
+ } | null): boolean;
245
+ /** 订阅涉及自己 Panel 的事件(本阶段 registered/unregistered/badge/
246
+ * error/disabled;opened/closed/focused/blurred/sidebar-toggled TODO)。 */
247
+ subscribe(listener: (event: TuiPanelEvent) => void): () => void;
248
+ }
249
+ export declare function getHostPanelRuntime(runtime: TuiPanelRuntime | undefined): TuiPanelHost | undefined;
250
+ export default TuiPanelRuntime;
251
+ //# sourceMappingURL=panels.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"panels.d.ts","sourceRoot":"","sources":["../../../src/dsh-adapter/panels.ts"],"names":[],"mappings":"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"}