@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.
- package/README.md +60 -8
- package/assets/deepy/README.md +60 -0
- package/assets/deepy/frames.json +1 -0
- package/assets/whale-girl/whale-girl-happy.png +0 -0
- package/assets/whaleGirl/README.md +7 -0
- package/assets/whaleGirl/frames.json +1 -0
- package/assets/whaleGirl/img/building/00.png +0 -0
- package/assets/whaleGirl/img/building/01.png +0 -0
- package/assets/whaleGirl/img/building/02.png +0 -0
- package/assets/whaleGirl/img/building/03.png +0 -0
- package/assets/whaleGirl/img/building/04.png +0 -0
- package/assets/whaleGirl/img/building/05.png +0 -0
- package/assets/whaleGirl/img/building/06.png +0 -0
- package/assets/whaleGirl/img/building/07.png +0 -0
- package/assets/whaleGirl/img/building/08.png +0 -0
- package/assets/whaleGirl/img/building/09.png +0 -0
- package/assets/whaleGirl/img/building/10.png +0 -0
- package/assets/whaleGirl/img/building/11.png +0 -0
- package/assets/whaleGirl/img/building/12.png +0 -0
- package/assets/whaleGirl/img/building/13.png +0 -0
- package/assets/whaleGirl/img/building/14.png +0 -0
- package/assets/whaleGirl/img/building/15.png +0 -0
- package/assets/whaleGirl/img/building/16.png +0 -0
- package/assets/whaleGirl/img/building/17.png +0 -0
- package/assets/whaleGirl/img/building/18.png +0 -0
- package/assets/whaleGirl/img/building/19.png +0 -0
- package/assets/whaleGirl/img/building/20.png +0 -0
- package/assets/whaleGirl/img/building/21.png +0 -0
- package/assets/whaleGirl/img/building/22.png +0 -0
- package/assets/whaleGirl/img/building/23.png +0 -0
- package/assets/whaleGirl/img/carrying/00.png +0 -0
- package/assets/whaleGirl/img/carrying/01.png +0 -0
- package/assets/whaleGirl/img/carrying/02.png +0 -0
- package/assets/whaleGirl/img/carrying/03.png +0 -0
- package/assets/whaleGirl/img/carrying/04.png +0 -0
- package/assets/whaleGirl/img/carrying/05.png +0 -0
- package/assets/whaleGirl/img/carrying/06.png +0 -0
- package/assets/whaleGirl/img/carrying/07.png +0 -0
- package/assets/whaleGirl/img/compacting/00.png +0 -0
- package/assets/whaleGirl/img/compacting/01.png +0 -0
- package/assets/whaleGirl/img/compacting/02.png +0 -0
- package/assets/whaleGirl/img/compacting/03.png +0 -0
- package/assets/whaleGirl/img/compacting/04.png +0 -0
- package/assets/whaleGirl/img/compacting/05.png +0 -0
- package/assets/whaleGirl/img/compacting/06.png +0 -0
- package/assets/whaleGirl/img/compacting/07.png +0 -0
- package/assets/whaleGirl/img/compacting/08.png +0 -0
- package/assets/whaleGirl/img/compacting/09.png +0 -0
- package/assets/whaleGirl/img/conducting/00.png +0 -0
- package/assets/whaleGirl/img/conducting/01.png +0 -0
- package/assets/whaleGirl/img/conducting/02.png +0 -0
- package/assets/whaleGirl/img/conducting/03.png +0 -0
- package/assets/whaleGirl/img/conducting/04.png +0 -0
- package/assets/whaleGirl/img/conducting/05.png +0 -0
- package/assets/whaleGirl/img/conducting/06.png +0 -0
- package/assets/whaleGirl/img/conducting/07.png +0 -0
- package/assets/whaleGirl/img/conducting/08.png +0 -0
- package/assets/whaleGirl/img/conducting/09.png +0 -0
- package/assets/whaleGirl/img/conducting/10.png +0 -0
- package/assets/whaleGirl/img/conducting/11.png +0 -0
- package/assets/whaleGirl/img/drag/00.png +0 -0
- package/assets/whaleGirl/img/drag/01.png +0 -0
- package/assets/whaleGirl/img/drag/02.png +0 -0
- package/assets/whaleGirl/img/drag/03.png +0 -0
- package/assets/whaleGirl/img/drag/04.png +0 -0
- package/assets/whaleGirl/img/drag/05.png +0 -0
- package/assets/whaleGirl/img/drag/06.png +0 -0
- package/assets/whaleGirl/img/drag/07.png +0 -0
- package/assets/whaleGirl/img/drag/08.png +0 -0
- package/assets/whaleGirl/img/drag/09.png +0 -0
- package/assets/whaleGirl/img/error/00.png +0 -0
- package/assets/whaleGirl/img/error/01.png +0 -0
- package/assets/whaleGirl/img/error/02.png +0 -0
- package/assets/whaleGirl/img/error/03.png +0 -0
- package/assets/whaleGirl/img/error/04.png +0 -0
- package/assets/whaleGirl/img/error/05.png +0 -0
- package/assets/whaleGirl/img/error/06.png +0 -0
- package/assets/whaleGirl/img/error/07.png +0 -0
- package/assets/whaleGirl/img/error/08.png +0 -0
- package/assets/whaleGirl/img/error/09.png +0 -0
- package/assets/whaleGirl/img/happy/00.png +0 -0
- package/assets/whaleGirl/img/happy/01.png +0 -0
- package/assets/whaleGirl/img/happy/02.png +0 -0
- package/assets/whaleGirl/img/happy/03.png +0 -0
- package/assets/whaleGirl/img/happy/04.png +0 -0
- package/assets/whaleGirl/img/happy/05.png +0 -0
- package/assets/whaleGirl/img/happy/06.png +0 -0
- package/assets/whaleGirl/img/happy/07.png +0 -0
- package/assets/whaleGirl/img/happy/08.png +0 -0
- package/assets/whaleGirl/img/happy/09.png +0 -0
- package/assets/whaleGirl/img/happy/10.png +0 -0
- package/assets/whaleGirl/img/idle/00.png +0 -0
- package/assets/whaleGirl/img/idle/01.png +0 -0
- package/assets/whaleGirl/img/idle/02.png +0 -0
- package/assets/whaleGirl/img/idle/03.png +0 -0
- package/assets/whaleGirl/img/idle/04.png +0 -0
- package/assets/whaleGirl/img/idle/05.png +0 -0
- package/assets/whaleGirl/img/idle/06.png +0 -0
- package/assets/whaleGirl/img/idle/07.png +0 -0
- package/assets/whaleGirl/img/idle/08.png +0 -0
- package/assets/whaleGirl/img/idle/09.png +0 -0
- package/assets/whaleGirl/img/idle/10.png +0 -0
- package/assets/whaleGirl/img/idle/11.png +0 -0
- package/assets/whaleGirl/img/idle/12.png +0 -0
- package/assets/whaleGirl/img/idle/13.png +0 -0
- package/assets/whaleGirl/img/idle/14.png +0 -0
- package/assets/whaleGirl/img/idle/15.png +0 -0
- package/assets/whaleGirl/img/idle/16.png +0 -0
- package/assets/whaleGirl/img/idle/17.png +0 -0
- package/assets/whaleGirl/img/idle/18.png +0 -0
- package/assets/whaleGirl/img/idle/19.png +0 -0
- package/assets/whaleGirl/img/idle/20.png +0 -0
- package/assets/whaleGirl/img/idle-look/00.png +0 -0
- package/assets/whaleGirl/img/idle-look/01.png +0 -0
- package/assets/whaleGirl/img/idle-look/02.png +0 -0
- package/assets/whaleGirl/img/idle-look/03.png +0 -0
- package/assets/whaleGirl/img/idle-look/04.png +0 -0
- package/assets/whaleGirl/img/idle-look/05.png +0 -0
- package/assets/whaleGirl/img/idle-look/06.png +0 -0
- package/assets/whaleGirl/img/idle-look/07.png +0 -0
- package/assets/whaleGirl/img/idle-look/08.png +0 -0
- package/assets/whaleGirl/img/idle-look/09.png +0 -0
- package/assets/whaleGirl/img/idle-look/10.png +0 -0
- package/assets/whaleGirl/img/idle-look/11.png +0 -0
- package/assets/whaleGirl/img/idle-look/12.png +0 -0
- package/assets/whaleGirl/img/idle-spout/00.png +0 -0
- package/assets/whaleGirl/img/idle-spout/01.png +0 -0
- package/assets/whaleGirl/img/idle-spout/02.png +0 -0
- package/assets/whaleGirl/img/idle-spout/03.png +0 -0
- package/assets/whaleGirl/img/idle-spout/04.png +0 -0
- package/assets/whaleGirl/img/idle-spout/05.png +0 -0
- package/assets/whaleGirl/img/idle-spout/06.png +0 -0
- package/assets/whaleGirl/img/idle-spout/07.png +0 -0
- package/assets/whaleGirl/img/idle-spout/08.png +0 -0
- package/assets/whaleGirl/img/idle-spout/09.png +0 -0
- package/assets/whaleGirl/img/idle-spout/10.png +0 -0
- package/assets/whaleGirl/img/music/00.png +0 -0
- package/assets/whaleGirl/img/music/01.png +0 -0
- package/assets/whaleGirl/img/music/02.png +0 -0
- package/assets/whaleGirl/img/music/03.png +0 -0
- package/assets/whaleGirl/img/music/04.png +0 -0
- package/assets/whaleGirl/img/music/05.png +0 -0
- package/assets/whaleGirl/img/music/06.png +0 -0
- package/assets/whaleGirl/img/music/07.png +0 -0
- package/assets/whaleGirl/img/notification/00.png +0 -0
- package/assets/whaleGirl/img/notification/01.png +0 -0
- package/assets/whaleGirl/img/notification/02.png +0 -0
- package/assets/whaleGirl/img/notification/03.png +0 -0
- package/assets/whaleGirl/img/notification/04.png +0 -0
- package/assets/whaleGirl/img/notification/05.png +0 -0
- package/assets/whaleGirl/img/notification/06.png +0 -0
- package/assets/whaleGirl/img/notification/07.png +0 -0
- package/assets/whaleGirl/img/poke-left/00.png +0 -0
- package/assets/whaleGirl/img/poke-left/01.png +0 -0
- package/assets/whaleGirl/img/poke-left/02.png +0 -0
- package/assets/whaleGirl/img/poke-left/03.png +0 -0
- package/assets/whaleGirl/img/poke-left/04.png +0 -0
- package/assets/whaleGirl/img/poke-left/05.png +0 -0
- package/assets/whaleGirl/img/poke-left/06.png +0 -0
- package/assets/whaleGirl/img/poke-left/07.png +0 -0
- package/assets/whaleGirl/img/poke-left/08.png +0 -0
- package/assets/whaleGirl/img/poke-left/09.png +0 -0
- package/assets/whaleGirl/img/poke-left/10.png +0 -0
- package/assets/whaleGirl/img/poke-right/00.png +0 -0
- package/assets/whaleGirl/img/poke-right/01.png +0 -0
- package/assets/whaleGirl/img/poke-right/02.png +0 -0
- package/assets/whaleGirl/img/poke-right/03.png +0 -0
- package/assets/whaleGirl/img/poke-right/04.png +0 -0
- package/assets/whaleGirl/img/poke-right/05.png +0 -0
- package/assets/whaleGirl/img/poke-right/06.png +0 -0
- package/assets/whaleGirl/img/poke-right/07.png +0 -0
- package/assets/whaleGirl/img/poke-right/08.png +0 -0
- package/assets/whaleGirl/img/poke-right/09.png +0 -0
- package/assets/whaleGirl/img/poke-right/10.png +0 -0
- package/assets/whaleGirl/img/sleeping/00.png +0 -0
- package/assets/whaleGirl/img/sleeping/01.png +0 -0
- package/assets/whaleGirl/img/sleeping/02.png +0 -0
- package/assets/whaleGirl/img/sleeping/03.png +0 -0
- package/assets/whaleGirl/img/sleeping/04.png +0 -0
- package/assets/whaleGirl/img/sleeping/05.png +0 -0
- package/assets/whaleGirl/img/smile-hearts/00.png +0 -0
- package/assets/whaleGirl/img/smile-hearts/01.png +0 -0
- package/assets/whaleGirl/img/smile-hearts/02.png +0 -0
- package/assets/whaleGirl/img/smile-hearts/03.png +0 -0
- package/assets/whaleGirl/img/smile-hearts/04.png +0 -0
- package/assets/whaleGirl/img/smile-hearts/05.png +0 -0
- package/assets/whaleGirl/img/smile-hearts/06.png +0 -0
- package/assets/whaleGirl/img/smile-hearts/07.png +0 -0
- package/assets/whaleGirl/img/smile-hearts/08.png +0 -0
- package/assets/whaleGirl/img/smile-hearts/09.png +0 -0
- package/assets/whaleGirl/img/smile-hearts/10.png +0 -0
- package/assets/whaleGirl/img/smile-hearts/11.png +0 -0
- package/assets/whaleGirl/img/smile-hearts/12.png +0 -0
- package/assets/whaleGirl/img/smile-hearts/13.png +0 -0
- package/assets/whaleGirl/img/smile-hearts/14.png +0 -0
- package/assets/whaleGirl/img/smile-hearts/15.png +0 -0
- package/assets/whaleGirl/img/swim/00.png +0 -0
- package/assets/whaleGirl/img/swim/01.png +0 -0
- package/assets/whaleGirl/img/swim/02.png +0 -0
- package/assets/whaleGirl/img/swim/03.png +0 -0
- package/assets/whaleGirl/img/swim/04.png +0 -0
- package/assets/whaleGirl/img/swim/05.png +0 -0
- package/assets/whaleGirl/img/swim/06.png +0 -0
- package/assets/whaleGirl/img/swim/07.png +0 -0
- package/assets/whaleGirl/img/thinking/00.png +0 -0
- package/assets/whaleGirl/img/thinking/01.png +0 -0
- package/assets/whaleGirl/img/thinking/02.png +0 -0
- package/assets/whaleGirl/img/thinking/03.png +0 -0
- package/assets/whaleGirl/img/thinking/04.png +0 -0
- package/assets/whaleGirl/img/thinking/05.png +0 -0
- package/assets/whaleGirl/img/thinking/06.png +0 -0
- package/assets/whaleGirl/img/thinking/07.png +0 -0
- package/assets/whaleGirl/img/thinking/08.png +0 -0
- package/assets/whaleGirl/img/thinking/09.png +0 -0
- package/assets/whaleGirl/img/thinking/10.png +0 -0
- package/assets/whaleGirl/img/thinking/11.png +0 -0
- package/assets/whaleGirl/img/thinking/12.png +0 -0
- package/assets/whaleGirl/img/thinking/13.png +0 -0
- package/assets/whaleGirl/img/thinking/14.png +0 -0
- package/assets/whaleGirl/img/thinking/15.png +0 -0
- package/assets/whaleGirl/img/thinking/16.png +0 -0
- package/assets/whaleGirl/img/thumbs-up/00.png +0 -0
- package/assets/whaleGirl/img/thumbs-up/01.png +0 -0
- package/assets/whaleGirl/img/thumbs-up/02.png +0 -0
- package/assets/whaleGirl/img/thumbs-up/03.png +0 -0
- package/assets/whaleGirl/img/thumbs-up/04.png +0 -0
- package/assets/whaleGirl/img/thumbs-up/05.png +0 -0
- package/assets/whaleGirl/img/thumbs-up/06.png +0 -0
- package/assets/whaleGirl/img/thumbs-up/07.png +0 -0
- package/assets/whaleGirl/img/thumbs-up/08.png +0 -0
- package/assets/whaleGirl/img/thumbs-up/09.png +0 -0
- package/assets/whaleGirl/img/thumbs-up/10.png +0 -0
- package/assets/whaleGirl/img/thumbs-up/11.png +0 -0
- package/assets/whaleGirl/img/thumbs-up/12.png +0 -0
- package/assets/whaleGirl/img/tickle/00.png +0 -0
- package/assets/whaleGirl/img/tickle/01.png +0 -0
- package/assets/whaleGirl/img/tickle/02.png +0 -0
- package/assets/whaleGirl/img/tickle/03.png +0 -0
- package/assets/whaleGirl/img/tickle/04.png +0 -0
- package/assets/whaleGirl/img/tickle/05.png +0 -0
- package/assets/whaleGirl/img/tickle/06.png +0 -0
- package/assets/whaleGirl/img/tickle/07.png +0 -0
- package/assets/whaleGirl/img/tickle/08.png +0 -0
- package/assets/whaleGirl/img/tickle/09.png +0 -0
- package/assets/whaleGirl/img/tickle/10.png +0 -0
- package/assets/whaleGirl/img/tickle/11.png +0 -0
- package/assets/whaleGirl/img/tickle/12.png +0 -0
- package/assets/whaleGirl/img/tickle/13.png +0 -0
- package/assets/whaleGirl/img/timings.json +1 -0
- package/assets/whaleGirl/img/typing/00.png +0 -0
- package/assets/whaleGirl/img/typing/01.png +0 -0
- package/assets/whaleGirl/img/typing/02.png +0 -0
- package/assets/whaleGirl/img/typing/03.png +0 -0
- package/assets/whaleGirl/img/typing/04.png +0 -0
- package/assets/whaleGirl/img/typing/05.png +0 -0
- package/assets/whaleGirl/img/typing/06.png +0 -0
- package/assets/whaleGirl/img/typing/07.png +0 -0
- package/assets/whaleGirl/img/typing/08.png +0 -0
- package/assets/whaleGirl/img/typing/09.png +0 -0
- package/assets/whaleGirl/img/typing/10.png +0 -0
- package/assets/whaleGirl/img/typing/11.png +0 -0
- package/assets/whaleGirl/img/typing/12.png +0 -0
- package/assets/whaleGirl/img/typing/13.png +0 -0
- package/assets/whaleGirl/img/waking/00.png +0 -0
- package/assets/whaleGirl/img/waking/01.png +0 -0
- package/assets/whaleGirl/img/waking/02.png +0 -0
- package/assets/whaleGirl/img/waking/03.png +0 -0
- package/assets/whaleGirl/img/waking/04.png +0 -0
- package/assets/whaleGirl/img/waking/05.png +0 -0
- package/assets/whaleGirl/img/waking/06.png +0 -0
- package/assets/whaleGirl/img/waking/07.png +0 -0
- package/assets/whaleGirl/img/waking/08.png +0 -0
- package/assets/whaleGirl/img/waking/09.png +0 -0
- package/assets/whaleGirl/img/waking/10.png +0 -0
- package/bin/dsh-tui.js +38 -6
- package/cordis.patch.yml +31 -6
- package/guide/dsh-tui-guide/SKILL.md +37 -0
- package/guide/dsh-tui-guide/configuration.en.md +415 -0
- package/guide/dsh-tui-guide/configuration.md +354 -0
- package/guide/dsh-tui-guide/getting-started.en.md +401 -0
- package/guide/dsh-tui-guide/getting-started.md +399 -0
- package/guide/dsh-tui-guide/interaction.en.md +738 -0
- package/guide/dsh-tui-guide/interaction.md +793 -0
- package/guide/dsh-tui-guide/migrate.en.md +166 -0
- package/guide/dsh-tui-guide/migrate.md +132 -0
- package/guide/dsh-tui-guide/plugins.en.md +78 -0
- package/guide/dsh-tui-guide/plugins.md +64 -0
- package/guide/dsh-tui-guide/themes.en.md +197 -0
- package/guide/dsh-tui-guide/themes.md +188 -0
- package/guide/dsh-tui-guide/user-guide.en.md +711 -0
- package/guide/dsh-tui-guide/user-guide.md +666 -0
- package/guide/dsh-tui-guide/vscode.en.md +301 -0
- package/guide/dsh-tui-guide/vscode.md +272 -0
- package/lib/settings.json +219 -5
- package/lib/types/adapter/channel/ui-policy.d.ts +7 -2
- package/lib/types/adapter/channel/ui-policy.d.ts.map +1 -1
- package/lib/types/adapter/channel/ui-policy.js +18 -1
- package/lib/types/adapter/index.d.ts +1 -1
- package/lib/types/adapter/index.js +1 -1
- package/lib/types/adapter/kernel/host-facade.d.ts +4 -1
- package/lib/types/adapter/kernel/host-facade.d.ts.map +1 -1
- package/lib/types/adapter/kernel/host-facade.js +8 -1
- package/lib/types/adapter/kernel/runtime.d.ts.map +1 -1
- package/lib/types/adapter/kernel/runtime.js +13 -0
- package/lib/types/adapter/kernel/slices/index.d.ts +1 -0
- package/lib/types/adapter/kernel/slices/index.d.ts.map +1 -1
- package/lib/types/adapter/kernel/slices/index.js +3 -0
- package/lib/types/adapter/kernel/slices/panels.d.ts +3 -0
- package/lib/types/adapter/kernel/slices/panels.d.ts.map +1 -0
- package/lib/types/adapter/kernel/slices/panels.js +14 -0
- package/lib/types/adapter/ports/channel-capabilities.d.ts +48 -0
- package/lib/types/adapter/ports/channel-capabilities.d.ts.map +1 -0
- package/lib/types/adapter/ports/channel-capabilities.js +2 -0
- package/lib/types/adapter/ports/channel-catalog.d.ts +7 -0
- package/lib/types/adapter/ports/channel-catalog.d.ts.map +1 -1
- package/lib/types/adapter/ports/channel-display.d.ts +10 -0
- package/lib/types/adapter/ports/channel-display.d.ts.map +1 -1
- package/lib/types/adapter/ports/channel-settings.d.ts +2 -1
- package/lib/types/adapter/ports/channel-settings.d.ts.map +1 -1
- package/lib/types/adapter/ports/channel-ui.d.ts +91 -4
- package/lib/types/adapter/ports/channel-ui.d.ts.map +1 -1
- package/lib/types/adapter/ports/channel-view.d.ts +137 -9
- package/lib/types/adapter/ports/channel-view.d.ts.map +1 -1
- package/lib/types/adapter/ports/channel.d.ts +1 -1
- package/lib/types/adapter/ports/channel.js +1 -1
- package/lib/types/adapter/ports/descriptor.d.ts +1 -1
- package/lib/types/adapter/ports/descriptor.js +1 -1
- package/lib/types/adapter/ports/index.d.ts +1 -1
- package/lib/types/adapter/ports/index.js +1 -1
- package/lib/types/adapter/ports/panels.d.ts +28 -0
- package/lib/types/adapter/ports/panels.d.ts.map +1 -0
- package/lib/types/adapter/ports/panels.js +8 -0
- package/lib/types/adapter/ports/workspace.d.ts +1 -1
- package/lib/types/adapter/ports/workspace.js +1 -1
- package/lib/types/adapter/spec/index.d.ts +2 -2
- package/lib/types/adapter/spec/index.js +2 -2
- package/lib/types/adapter/spec/profile.d.ts +6 -6
- package/lib/types/adapter/spec/profile.d.ts.map +1 -1
- package/lib/types/adapter/spec/profile.js +6 -6
- package/lib/types/adapter/spec/protocol-constants.d.ts +3 -3
- package/lib/types/adapter/spec/protocol-constants.d.ts.map +1 -1
- package/lib/types/adapter/spec/protocol-constants.js +5 -5
- package/lib/types/adapter/spec/tui-contributions.d.ts +4 -4
- package/lib/types/adapter/spec/tui-contributions.d.ts.map +1 -1
- package/lib/types/adapter/spec/tui-contributions.js +5 -5
- package/lib/types/adapter/standard/descriptor.js +1 -1
- package/lib/types/adapter/standard/index.d.ts +3 -3
- package/lib/types/adapter/standard/index.js +3 -3
- package/lib/types/adapter/standard/registry.d.ts +3 -2
- package/lib/types/adapter/standard/registry.d.ts.map +1 -1
- package/lib/types/adapter/standard/registry.js +6 -5
- package/lib/types/adapter/standard/tui-extension.d.ts +1 -1
- package/lib/types/adapter/standard/tui-extension.js +1 -1
- package/lib/types/adapter/upstream/index.d.ts +1 -0
- package/lib/types/adapter/upstream/index.d.ts.map +1 -1
- package/lib/types/adapter/upstream/index.js +1 -0
- package/lib/types/adapter/upstream/panels-driver.d.ts +18 -0
- package/lib/types/adapter/upstream/panels-driver.d.ts.map +1 -0
- package/lib/types/adapter/upstream/panels-driver.js +159 -0
- package/lib/types/api.d.ts +2 -0
- package/lib/types/api.d.ts.map +1 -1
- package/lib/types/api.js +3 -1
- package/lib/types/commands.d.ts.map +1 -1
- package/lib/types/commands.js +12 -4
- package/lib/types/components/ActivityLine.d.ts +6 -9
- package/lib/types/components/ActivityLine.d.ts.map +1 -1
- package/lib/types/components/ActivityLine.js +7 -8
- package/lib/types/components/Chat/JobCard.d.ts +27 -1
- package/lib/types/components/Chat/JobCard.d.ts.map +1 -1
- package/lib/types/components/Chat/JobCard.js +128 -33
- package/lib/types/components/Chat/JobGroupHeader.d.ts +27 -0
- package/lib/types/components/Chat/JobGroupHeader.d.ts.map +1 -0
- package/lib/types/components/Chat/JobGroupHeader.js +62 -0
- package/lib/types/components/Chat/SubagentMessage.js +6 -6
- package/lib/types/components/GoalTodoPanel.d.ts +13 -1
- package/lib/types/components/GoalTodoPanel.d.ts.map +1 -1
- package/lib/types/components/GoalTodoPanel.js +55 -14
- package/lib/types/components/JobsPanel.d.ts +42 -2
- package/lib/types/components/JobsPanel.d.ts.map +1 -1
- package/lib/types/components/JobsPanel.js +220 -40
- package/lib/types/components/LogoV2.d.ts +43 -3
- package/lib/types/components/LogoV2.d.ts.map +1 -1
- package/lib/types/components/LogoV2.js +42 -15
- package/lib/types/components/MessageList.d.ts +8 -2
- package/lib/types/components/MessageList.d.ts.map +1 -1
- package/lib/types/components/MessageList.js +215 -21
- package/lib/types/components/OverlayAbove.d.ts +11 -1
- package/lib/types/components/OverlayAbove.d.ts.map +1 -1
- package/lib/types/components/OverlayAbove.js +2 -12
- package/lib/types/components/PageMargin.d.ts.map +1 -1
- package/lib/types/components/PageMargin.js +3 -1
- package/lib/types/components/PluginSceneBoundary.d.ts +1 -1
- package/lib/types/components/PluginSceneBoundary.js +1 -1
- package/lib/types/components/PresetPicker.d.ts +4 -0
- package/lib/types/components/PresetPicker.d.ts.map +1 -1
- package/lib/types/components/PresetPicker.js +5 -1
- package/lib/types/components/PromptInput.d.ts +20 -22
- package/lib/types/components/PromptInput.d.ts.map +1 -1
- package/lib/types/components/PromptInput.js +425 -157
- package/lib/types/components/SearchBox.d.ts +22 -5
- package/lib/types/components/SearchBox.d.ts.map +1 -1
- package/lib/types/components/SearchBox.js +17 -13
- package/lib/types/components/StarPrompt.d.ts +6 -0
- package/lib/types/components/StarPrompt.d.ts.map +1 -1
- package/lib/types/components/StarPrompt.js +45 -0
- package/lib/types/components/SubagentCard.d.ts.map +1 -1
- package/lib/types/components/SubagentCard.js +24 -9
- package/lib/types/components/SubagentDashboard.d.ts +18 -3
- package/lib/types/components/SubagentDashboard.d.ts.map +1 -1
- package/lib/types/components/SubagentDashboard.js +53 -5
- package/lib/types/components/SubagentDetailScene.d.ts +7 -1
- package/lib/types/components/SubagentDetailScene.d.ts.map +1 -1
- package/lib/types/components/SubagentDetailScene.js +160 -13
- package/lib/types/components/SurfaceEdges.d.ts +21 -0
- package/lib/types/components/SurfaceEdges.d.ts.map +1 -0
- package/lib/types/components/SurfaceEdges.js +7 -0
- package/lib/types/components/ThemePicker.d.ts +9 -0
- package/lib/types/components/ThemePicker.d.ts.map +1 -1
- package/lib/types/components/ThemePicker.js +74 -10
- package/lib/types/components/ThemePreviewPane.d.ts +26 -0
- package/lib/types/components/ThemePreviewPane.d.ts.map +1 -0
- package/lib/types/components/ThemePreviewPane.js +99 -0
- package/lib/types/components/WhaleGirl.d.ts +6 -0
- package/lib/types/components/WhaleGirl.d.ts.map +1 -1
- package/lib/types/components/WhaleGirl.js +18 -0
- package/lib/types/components/design-system/Divider.d.ts.map +1 -1
- package/lib/types/components/design-system/Divider.js +14 -9
- package/lib/types/components/launchpadActions.d.ts +73 -0
- package/lib/types/components/launchpadActions.d.ts.map +1 -0
- package/lib/types/components/launchpadActions.js +111 -0
- package/lib/types/components/launchpadLayout.d.ts +62 -0
- package/lib/types/components/launchpadLayout.d.ts.map +1 -0
- package/lib/types/components/launchpadLayout.js +176 -0
- package/lib/types/components/messages/AssistantThinkingMessage.js +4 -4
- package/lib/types/components/onboardingModel.d.ts +83 -0
- package/lib/types/components/onboardingModel.d.ts.map +1 -0
- package/lib/types/components/onboardingModel.js +128 -0
- package/lib/types/components/sidePanel/InfoPanel.d.ts +17 -0
- package/lib/types/components/sidePanel/InfoPanel.d.ts.map +1 -0
- package/lib/types/components/sidePanel/InfoPanel.js +124 -0
- package/lib/types/components/sidePanel/PanelBar.d.ts +45 -0
- package/lib/types/components/sidePanel/PanelBar.d.ts.map +1 -0
- package/lib/types/components/sidePanel/PanelBar.js +104 -0
- package/lib/types/components/sidePanel/PanelErrorBoundary.d.ts +21 -0
- package/lib/types/components/sidePanel/PanelErrorBoundary.d.ts.map +1 -0
- package/lib/types/components/sidePanel/PanelErrorBoundary.js +30 -0
- package/lib/types/components/sidePanel/PanelHost.d.ts +36 -0
- package/lib/types/components/sidePanel/PanelHost.d.ts.map +1 -0
- package/lib/types/components/sidePanel/PanelHost.js +81 -0
- package/lib/types/components/sidePanel/PanelPicker.d.ts +24 -0
- package/lib/types/components/sidePanel/PanelPicker.d.ts.map +1 -0
- package/lib/types/components/sidePanel/PanelPicker.js +45 -0
- package/lib/types/components/sidePanel/PanelStore.d.ts +55 -0
- package/lib/types/components/sidePanel/PanelStore.d.ts.map +1 -0
- package/lib/types/components/sidePanel/PanelStore.js +109 -0
- package/lib/types/components/sidePanel/SidePanelColumn.d.ts +31 -0
- package/lib/types/components/sidePanel/SidePanelColumn.d.ts.map +1 -0
- package/lib/types/components/sidePanel/SidePanelColumn.js +70 -0
- package/lib/types/components/sidePanel/SidePanelLayout.d.ts +54 -0
- package/lib/types/components/sidePanel/SidePanelLayout.d.ts.map +1 -0
- package/lib/types/components/sidePanel/SidePanelLayout.js +81 -0
- package/lib/types/components/sidePanel/SidePanelRuntimeContext.d.ts +43 -0
- package/lib/types/components/sidePanel/SidePanelRuntimeContext.d.ts.map +1 -0
- package/lib/types/components/sidePanel/SidePanelRuntimeContext.js +26 -0
- package/lib/types/components/sidePanel/TrajectoryPanel.d.ts +7 -0
- package/lib/types/components/sidePanel/TrajectoryPanel.d.ts.map +1 -0
- package/lib/types/components/sidePanel/TrajectoryPanel.js +263 -0
- package/lib/types/components/sidePanel/WorkspacePanel.d.ts +4 -0
- package/lib/types/components/sidePanel/WorkspacePanel.d.ts.map +1 -0
- package/lib/types/components/sidePanel/WorkspacePanel.js +171 -0
- package/lib/types/components/sidePanel/builtinPanels.d.ts +3 -0
- package/lib/types/components/sidePanel/builtinPanels.d.ts.map +1 -0
- package/lib/types/components/sidePanel/builtinPanels.js +229 -0
- package/lib/types/components/sidePanel/companion/CompanionPanel.d.ts +53 -0
- package/lib/types/components/sidePanel/companion/CompanionPanel.d.ts.map +1 -0
- package/lib/types/components/sidePanel/companion/CompanionPanel.js +528 -0
- package/lib/types/components/sidePanel/companion/SplashMascot.d.ts +32 -0
- package/lib/types/components/sidePanel/companion/SplashMascot.d.ts.map +1 -0
- package/lib/types/components/sidePanel/companion/SplashMascot.js +103 -0
- package/lib/types/components/sidePanel/companion/deepy.d.ts +75 -0
- package/lib/types/components/sidePanel/companion/deepy.d.ts.map +1 -0
- package/lib/types/components/sidePanel/companion/deepy.js +222 -0
- package/lib/types/components/sidePanel/companion/mood.d.ts +176 -0
- package/lib/types/components/sidePanel/companion/mood.d.ts.map +1 -0
- package/lib/types/components/sidePanel/companion/mood.js +212 -0
- package/lib/types/components/sidePanel/companion/pose.d.ts +43 -0
- package/lib/types/components/sidePanel/companion/pose.d.ts.map +1 -0
- package/lib/types/components/sidePanel/companion/pose.js +34 -0
- package/lib/types/components/sidePanel/companion/skins.d.ts +102 -0
- package/lib/types/components/sidePanel/companion/skins.d.ts.map +1 -0
- package/lib/types/components/sidePanel/companion/skins.js +408 -0
- package/lib/types/components/sidePanel/dimensions.d.ts +60 -0
- package/lib/types/components/sidePanel/dimensions.d.ts.map +1 -0
- package/lib/types/components/sidePanel/dimensions.js +75 -0
- package/lib/types/components/sidePanel/jobsFocusStore.d.ts +21 -0
- package/lib/types/components/sidePanel/jobsFocusStore.d.ts.map +1 -0
- package/lib/types/components/sidePanel/jobsFocusStore.js +30 -0
- package/lib/types/components/sidePanel/panelBridge.d.ts +44 -0
- package/lib/types/components/sidePanel/panelBridge.d.ts.map +1 -0
- package/lib/types/components/sidePanel/panelBridge.js +55 -0
- package/lib/types/components/sidePanel/pluginPanelAdapter.d.ts +22 -0
- package/lib/types/components/sidePanel/pluginPanelAdapter.d.ts.map +1 -0
- package/lib/types/components/sidePanel/pluginPanelAdapter.js +148 -0
- package/lib/types/components/sidePanel/types.d.ts +110 -0
- package/lib/types/components/sidePanel/types.d.ts.map +1 -0
- package/lib/types/components/sidePanel/types.js +1 -0
- package/lib/types/components/sidePanel/usePanelInput.d.ts +5 -0
- package/lib/types/components/sidePanel/usePanelInput.d.ts.map +1 -0
- package/lib/types/components/sidePanel/usePanelInput.js +44 -0
- package/lib/types/components/sidePanel/useSidePanel.d.ts +47 -0
- package/lib/types/components/sidePanel/useSidePanel.d.ts.map +1 -0
- package/lib/types/components/sidePanel/useSidePanel.js +284 -0
- package/lib/types/components/trajectory/MiniWake.d.ts +11 -1
- package/lib/types/components/trajectory/MiniWake.d.ts.map +1 -1
- package/lib/types/components/trajectory/MiniWake.js +9 -3
- package/lib/types/components/workspaces/HomeWorkspaceRow.d.ts +3 -1
- package/lib/types/components/workspaces/HomeWorkspaceRow.d.ts.map +1 -1
- package/lib/types/components/workspaces/HomeWorkspaceRow.js +3 -2
- package/lib/types/deepseekPricing.d.ts +10 -9
- package/lib/types/deepseekPricing.d.ts.map +1 -1
- package/lib/types/deepseekPricing.js +18 -11
- package/lib/types/dsh-adapter/channel/attached-context.d.ts +58 -0
- package/lib/types/dsh-adapter/channel/attached-context.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/attached-context.js +109 -0
- package/lib/types/dsh-adapter/channel/binding-events.d.ts +6 -0
- package/lib/types/dsh-adapter/channel/binding-events.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/binding-events.js +43 -0
- package/lib/types/dsh-adapter/channel/capabilities.d.ts +82 -0
- package/lib/types/dsh-adapter/channel/capabilities.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/capabilities.js +165 -0
- package/lib/types/dsh-adapter/channel/command-completions.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/command-completions.js +8 -0
- package/lib/types/dsh-adapter/channel/context-bookkeeping.d.ts +4 -12
- package/lib/types/dsh-adapter/channel/context-bookkeeping.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/context-bookkeeping.js +9 -4
- package/lib/types/dsh-adapter/channel/external-commands.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/external-commands.js +8 -2
- package/lib/types/dsh-adapter/channel/input-delivery.d.ts +13 -2
- package/lib/types/dsh-adapter/channel/input-delivery.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/input-delivery.js +18 -1
- package/lib/types/dsh-adapter/channel/job-projection.d.ts +1 -0
- package/lib/types/dsh-adapter/channel/job-projection.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/job-projection.js +88 -3
- package/lib/types/dsh-adapter/channel/mode-actions.d.ts +13 -3
- package/lib/types/dsh-adapter/channel/mode-actions.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/mode-actions.js +55 -9
- package/lib/types/dsh-adapter/channel/mode-permission-actions.d.ts +8 -1
- package/lib/types/dsh-adapter/channel/mode-permission-actions.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/mode-permission-actions.js +25 -10
- package/lib/types/dsh-adapter/channel/preferences.d.ts +1 -1
- package/lib/types/dsh-adapter/channel/preferences.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/preferences.js +26 -8
- package/lib/types/dsh-adapter/channel/projection.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/projection.js +42 -37
- package/lib/types/dsh-adapter/channel/reports.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/reports.js +13 -4
- package/lib/types/dsh-adapter/channel/session-reset.d.ts +5 -1
- package/lib/types/dsh-adapter/channel/session-reset.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/session-reset.js +1 -0
- package/lib/types/dsh-adapter/channel/state.d.ts +21 -3
- package/lib/types/dsh-adapter/channel/state.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/state.js +3 -2
- package/lib/types/dsh-adapter/channel/subagent-projection.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/subagent-projection.js +5 -0
- package/lib/types/dsh-adapter/channel/types.d.ts +1 -1
- package/lib/types/dsh-adapter/channel/types.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/usage.d.ts +18 -1
- package/lib/types/dsh-adapter/channel/usage.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/usage.js +97 -2
- package/lib/types/dsh-adapter/channel.d.ts +1 -1
- package/lib/types/dsh-adapter/channel.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel.js +72 -4
- package/lib/types/dsh-adapter/context-occupancy.d.ts +204 -0
- package/lib/types/dsh-adapter/context-occupancy.d.ts.map +1 -0
- package/lib/types/dsh-adapter/context-occupancy.js +299 -0
- package/lib/types/dsh-adapter/contract.d.ts +19 -4
- package/lib/types/dsh-adapter/contract.d.ts.map +1 -1
- package/lib/types/dsh-adapter/contract.js +33 -3
- package/lib/types/dsh-adapter/index.d.ts +32 -0
- package/lib/types/dsh-adapter/index.d.ts.map +1 -1
- package/lib/types/dsh-adapter/index.js +20 -1
- package/lib/types/dsh-adapter/jobs.d.ts +82 -16
- package/lib/types/dsh-adapter/jobs.d.ts.map +1 -1
- package/lib/types/dsh-adapter/jobs.js +104 -9
- package/lib/types/dsh-adapter/migrate/sessionize.d.ts.map +1 -1
- package/lib/types/dsh-adapter/migrate/sessionize.js +11 -12
- package/lib/types/dsh-adapter/oauth/bonus.d.ts +27 -0
- package/lib/types/dsh-adapter/oauth/bonus.d.ts.map +1 -0
- package/lib/types/dsh-adapter/oauth/bonus.js +69 -0
- package/{node_modules/@deepseek-harness-tui/dsh-auth/lib → lib/types/dsh-adapter/oauth}/command.d.ts +2 -1
- package/lib/types/dsh-adapter/oauth/command.d.ts.map +1 -0
- package/{node_modules/@deepseek-harness-tui/dsh-auth/lib → lib/types/dsh-adapter/oauth}/command.js +7 -4
- package/{node_modules/@deepseek-harness-tui/dsh-auth/lib → lib/types/dsh-adapter/oauth}/credentials.d.ts +13 -10
- package/lib/types/dsh-adapter/oauth/credentials.d.ts.map +1 -0
- package/{node_modules/@deepseek-harness-tui/dsh-auth/lib → lib/types/dsh-adapter/oauth}/credentials.js +61 -23
- package/lib/types/dsh-adapter/oauth/deepseek.d.ts +39 -0
- package/lib/types/dsh-adapter/oauth/deepseek.d.ts.map +1 -0
- package/lib/types/dsh-adapter/oauth/deepseek.js +189 -0
- package/{node_modules/@deepseek-harness-tui/dsh-auth/lib → lib/types/dsh-adapter/oauth}/index.d.ts +24 -16
- package/lib/types/dsh-adapter/oauth/index.d.ts.map +1 -0
- package/{node_modules/@deepseek-harness-tui/dsh-auth/lib → lib/types/dsh-adapter/oauth}/index.js +34 -20
- package/{node_modules/@deepseek-harness-tui/dsh-auth/lib → lib/types/dsh-adapter/oauth}/interaction.d.ts +14 -12
- package/lib/types/dsh-adapter/oauth/interaction.d.ts.map +1 -0
- package/lib/types/dsh-adapter/oauth/interaction.js +283 -0
- package/{node_modules/@deepseek-harness-tui/dsh-auth/lib → lib/types/dsh-adapter/oauth}/opener.d.ts +2 -1
- package/lib/types/dsh-adapter/oauth/opener.d.ts.map +1 -0
- package/{node_modules/@deepseek-harness-tui/dsh-auth/lib → lib/types/dsh-adapter/oauth}/opener.js +1 -1
- package/{node_modules/@deepseek-harness-tui/dsh-auth/lib → lib/types/dsh-adapter/oauth}/pi-ai.d.ts +10 -3
- package/lib/types/dsh-adapter/oauth/pi-ai.d.ts.map +1 -0
- package/{node_modules/@deepseek-harness-tui/dsh-auth/lib → lib/types/dsh-adapter/oauth}/pi-ai.js +8 -3
- package/{node_modules/@deepseek-harness-tui/dsh-auth/lib → lib/types/dsh-adapter/oauth}/profiles.d.ts +6 -3
- package/lib/types/dsh-adapter/oauth/profiles.d.ts.map +1 -0
- package/{node_modules/@deepseek-harness-tui/dsh-auth/lib → lib/types/dsh-adapter/oauth}/profiles.js +11 -3
- package/{node_modules/@deepseek-harness-tui/dsh-auth/lib → lib/types/dsh-adapter/oauth}/service.d.ts +14 -7
- package/lib/types/dsh-adapter/oauth/service.d.ts.map +1 -0
- package/{node_modules/@deepseek-harness-tui/dsh-auth/lib → lib/types/dsh-adapter/oauth}/service.js +82 -17
- package/lib/types/dsh-adapter/panel-runtime-registry.d.ts +39 -0
- package/lib/types/dsh-adapter/panel-runtime-registry.d.ts.map +1 -0
- package/lib/types/dsh-adapter/panel-runtime-registry.js +84 -0
- package/lib/types/dsh-adapter/panels.d.ts +251 -0
- package/lib/types/dsh-adapter/panels.d.ts.map +1 -0
- package/lib/types/dsh-adapter/panels.js +407 -0
- package/lib/types/dsh-adapter/plugin-host.js +1 -1
- package/lib/types/dsh-adapter/plugin.d.ts +25 -2
- package/lib/types/dsh-adapter/plugin.d.ts.map +1 -1
- package/lib/types/dsh-adapter/plugin.js +241 -44
- package/lib/types/dsh-adapter/presets.d.ts +26 -4
- package/lib/types/dsh-adapter/presets.d.ts.map +1 -1
- package/lib/types/dsh-adapter/presets.js +29 -5
- package/lib/types/dsh-adapter/providerWizard.d.ts.map +1 -1
- package/lib/types/dsh-adapter/providerWizard.js +6 -2
- package/lib/types/dsh-adapter/startup-args.d.ts +8 -0
- package/lib/types/dsh-adapter/startup-args.d.ts.map +1 -0
- package/lib/types/dsh-adapter/startup-args.js +34 -0
- package/lib/types/dsh-adapter/subagents.d.ts +1 -0
- package/lib/types/dsh-adapter/subagents.d.ts.map +1 -1
- package/lib/types/dsh-adapter/subagents.js +10 -1
- package/lib/types/history.d.ts +24 -7
- package/lib/types/history.d.ts.map +1 -1
- package/lib/types/history.js +77 -18
- package/lib/types/i18n.d.ts +908 -33
- package/lib/types/i18n.d.ts.map +1 -1
- package/lib/types/i18n.js +355 -17
- package/lib/types/ink/components/App.d.ts +14 -1
- package/lib/types/ink/components/App.d.ts.map +1 -1
- package/lib/types/ink/components/App.js +71 -61
- package/lib/types/ink/components/TerminalSizeContext.d.ts +7 -0
- package/lib/types/ink/components/TerminalSizeContext.d.ts.map +1 -1
- package/lib/types/ink/hooks/use-input.d.ts +11 -0
- package/lib/types/ink/hooks/use-input.d.ts.map +1 -1
- package/lib/types/ink/hooks/use-input.js +8 -2
- package/lib/types/ink/hooks/use-terminal-viewport.d.ts.map +1 -1
- package/lib/types/ink/hooks/use-terminal-viewport.js +3 -1
- package/lib/types/ink/ink.d.ts +18 -0
- package/lib/types/ink/ink.d.ts.map +1 -1
- package/lib/types/ink/ink.js +51 -8
- package/lib/types/ink/output.d.ts +10 -1
- package/lib/types/ink/output.d.ts.map +1 -1
- package/lib/types/ink/output.js +3 -3
- package/lib/types/ink/parse-keypress.d.ts +71 -3
- package/lib/types/ink/parse-keypress.d.ts.map +1 -1
- package/lib/types/ink/parse-keypress.js +815 -133
- package/lib/types/ink/render-node-to-output.d.ts +1 -1
- package/lib/types/ink/render-node-to-output.d.ts.map +1 -1
- package/lib/types/ink/render-node-to-output.js +37 -5
- package/lib/types/ink/screen.d.ts +26 -1
- package/lib/types/ink/screen.d.ts.map +1 -1
- package/lib/types/ink/screen.js +96 -1
- package/lib/types/ink/selection.d.ts +23 -1
- package/lib/types/ink/selection.d.ts.map +1 -1
- package/lib/types/ink/selection.js +102 -26
- package/lib/types/ink/sixel-codec.d.ts +11 -0
- package/lib/types/ink/sixel-codec.d.ts.map +1 -1
- package/lib/types/ink/sixel-codec.js +42 -8
- package/lib/types/ink/terminal-querier.d.ts +25 -0
- package/lib/types/ink/terminal-querier.d.ts.map +1 -1
- package/lib/types/ink/terminal-querier.js +42 -0
- package/lib/types/ink/update-overflow-guard.d.ts +24 -0
- package/lib/types/ink/update-overflow-guard.d.ts.map +1 -1
- package/lib/types/ink/update-overflow-guard.js +25 -3
- package/lib/types/math/renderer.d.ts +2 -0
- package/lib/types/math/renderer.d.ts.map +1 -1
- package/lib/types/math/renderer.js +4 -0
- package/lib/types/minimalUiMode.d.ts +19 -0
- package/lib/types/minimalUiMode.d.ts.map +1 -0
- package/lib/types/minimalUiMode.js +23 -0
- package/lib/types/oauth.d.ts +5 -10
- package/lib/types/oauth.d.ts.map +1 -1
- package/lib/types/oauth.js +5 -10
- package/lib/types/onboardingPrefs.d.ts +52 -0
- package/lib/types/onboardingPrefs.d.ts.map +1 -0
- package/lib/types/onboardingPrefs.js +107 -0
- package/lib/types/panels.d.ts +4 -0
- package/lib/types/panels.d.ts.map +1 -0
- package/lib/types/panels.js +4 -0
- package/lib/types/screens/Chat.d.ts +25 -1
- package/lib/types/screens/Chat.d.ts.map +1 -1
- package/lib/types/screens/Chat.js +1149 -302
- package/lib/types/screens/Launchpad.d.ts +194 -0
- package/lib/types/screens/Launchpad.d.ts.map +1 -0
- package/lib/types/screens/Launchpad.js +607 -0
- package/lib/types/screens/Onboarding.d.ts +37 -0
- package/lib/types/screens/Onboarding.d.ts.map +1 -0
- package/lib/types/screens/Onboarding.js +492 -0
- package/lib/types/screens/SessionSupervisor.d.ts.map +1 -1
- package/lib/types/screens/SessionSupervisor.js +18 -12
- package/lib/types/screens/StatusLine.d.ts +4 -0
- package/lib/types/screens/StatusLine.d.ts.map +1 -1
- package/lib/types/screens/StatusLine.js +43 -25
- package/lib/types/screens/StatusMetrics.d.ts +22 -0
- package/lib/types/screens/StatusMetrics.d.ts.map +1 -1
- package/lib/types/screens/StatusMetrics.js +20 -0
- package/lib/types/screens/chatOverlay.d.ts +18 -1
- package/lib/types/screens/chatOverlay.d.ts.map +1 -1
- package/lib/types/screens/chatOverlay.js +3 -0
- package/lib/types/screens/sessionSupervisor/model.d.ts +1 -2
- package/lib/types/screens/sessionSupervisor/model.d.ts.map +1 -1
- package/lib/types/screens/sessionSupervisor/model.js +4 -2
- package/lib/types/screens/sessionSupervisor/useSessionSupervisor.d.ts.map +1 -1
- package/lib/types/screens/sessionSupervisor/useSessionSupervisor.js +7 -3
- package/lib/types/settings/definitions.d.ts +93 -0
- package/lib/types/settings/definitions.d.ts.map +1 -1
- package/lib/types/settings/definitions.js +87 -4
- package/lib/types/tips.d.ts.map +1 -1
- package/lib/types/tips.js +13 -7
- package/lib/types/tuiDisplayPrefs.d.ts +42 -2
- package/lib/types/tuiDisplayPrefs.d.ts.map +1 -1
- package/lib/types/tuiDisplayPrefs.js +74 -0
- package/lib/types/update.d.ts +53 -9
- package/lib/types/update.d.ts.map +1 -1
- package/lib/types/update.js +103 -46
- package/lib/types/utils/bmp.d.ts.map +1 -1
- package/lib/types/utils/bmp.js +8 -1
- package/lib/types/utils/clipboard.d.ts.map +1 -1
- package/lib/types/utils/clipboard.js +25 -6
- package/lib/types/utils/credentials.d.ts.map +1 -1
- package/lib/types/utils/credentials.js +5 -1
- package/lib/types/utils/draftWordBoundary.d.ts +23 -0
- package/lib/types/utils/draftWordBoundary.d.ts.map +1 -0
- package/lib/types/utils/draftWordBoundary.js +161 -0
- package/lib/types/utils/fileTarget.d.ts.map +1 -1
- package/lib/types/utils/fileTarget.js +7 -9
- package/lib/types/utils/inputPaste.d.ts +62 -0
- package/lib/types/utils/inputPaste.d.ts.map +1 -0
- package/lib/types/utils/inputPaste.js +111 -0
- package/lib/types/utils/intl.d.ts +8 -0
- package/lib/types/utils/intl.d.ts.map +1 -1
- package/lib/types/utils/intl.js +11 -0
- package/lib/types/utils/keymap.d.ts +13 -3
- package/lib/types/utils/keymap.d.ts.map +1 -1
- package/lib/types/utils/keymap.js +27 -5
- package/lib/types/utils/pastedImagePath.d.ts +8 -0
- package/lib/types/utils/pastedImagePath.d.ts.map +1 -1
- package/lib/types/utils/pastedImagePath.js +29 -5
- package/package.json +128 -106
- package/presets/liangshen/agent.cordis.yml +4 -1
- package/presets/liangshen/preset.yml +1 -1
- package/{dsh-ecosystem-spec → tui-profile}/registry/README.md +1 -1
- package/{dsh-ecosystem-spec → tui-profile}/registry/registry-0.15.json +1 -1
- package/lib/types/minimalMode.d.ts +0 -13
- package/lib/types/minimalMode.d.ts.map +0 -1
- package/lib/types/minimalMode.js +0 -17
- package/node_modules/@deepseek-harness-tui/dsh-auth/LICENSE +0 -21
- package/node_modules/@deepseek-harness-tui/dsh-auth/README.md +0 -143
- package/node_modules/@deepseek-harness-tui/dsh-auth/cordis.patch.yml +0 -11
- package/node_modules/@deepseek-harness-tui/dsh-auth/dsh-plugin.json +0 -44
- package/node_modules/@deepseek-harness-tui/dsh-auth/lib/interaction.js +0 -193
- package/node_modules/@deepseek-harness-tui/dsh-auth/package.json +0 -69
- /package/{dsh-ecosystem-spec → tui-profile}/protocols/profile-definitions.d.ts +0 -0
- /package/{dsh-ecosystem-spec → tui-profile}/protocols/profile-definitions.js +0 -0
- /package/{dsh-ecosystem-spec → tui-profile}/protocols/tui-channel-http.d.ts +0 -0
- /package/{dsh-ecosystem-spec → tui-profile}/protocols/tui-channel-http.js +0 -0
- /package/{dsh-ecosystem-spec → tui-profile}/protocols/tui-channel.d.ts +0 -0
- /package/{dsh-ecosystem-spec → tui-profile}/protocols/tui-channel.js +0 -0
- /package/{dsh-ecosystem-spec → tui-profile}/protocols/tui-contributions.d.ts +0 -0
- /package/{dsh-ecosystem-spec → tui-profile}/protocols/tui-contributions.js +0 -0
- /package/{dsh-ecosystem-spec → tui-profile}/registry/contracts/decision-events-v1alpha1.json +0 -0
- /package/{dsh-ecosystem-spec → tui-profile}/registry/contracts/scene-v1alpha1.json +0 -0
- /package/{dsh-ecosystem-spec → tui-profile}/registry/contracts/settings-section-v1alpha1.json +0 -0
- /package/{dsh-ecosystem-spec → tui-profile}/registry/contracts/tui-channel-v1alpha1.json +0 -0
- /package/{dsh-ecosystem-spec → tui-profile}/registry/contracts/workspace-provider-v1alpha1.json +0 -0
- /package/{dsh-ecosystem-spec → tui-profile}/registry/host-descriptor.tui.example.json +0 -0
- /package/{dsh-ecosystem-spec → tui-profile}/registry/permissions-0.1.json +0 -0
- /package/{dsh-ecosystem-spec → tui-profile}/schemas/conformance-claim.schema.json +0 -0
- /package/{dsh-ecosystem-spec → tui-profile}/schemas/effect-ledger-record.schema.json +0 -0
- /package/{dsh-ecosystem-spec → tui-profile}/schemas/host-descriptor.schema.json +0 -0
|
@@ -0,0 +1,301 @@
|
|
|
1
|
+
# Using dsh-TUI in VS Code
|
|
2
|
+
|
|
3
|
+
[Documentation index](README.md) · [中文](vscode.md)
|
|
4
|
+
|
|
5
|
+
dsh-TUI is a terminal program: it writes ANSI into a PTY and reads keys
|
|
6
|
+
back from the PTY. So any compatible terminal can host it — including the
|
|
7
|
+
**VS Code integrated terminal** (xterm.js). This page covers two ways to
|
|
8
|
+
use it:
|
|
9
|
+
|
|
10
|
+
**The `dsh-tui-vscode` companion extension (recommended)**
|
|
11
|
+
|
|
12
|
+
- sessions run in a real VS Code integrated terminal (a new column beside
|
|
13
|
+
the editor);
|
|
14
|
+
- multiple concurrent sessions, a sidebar session history, one-click start;
|
|
15
|
+
- resume-last and specific-session resume;
|
|
16
|
+
- published on the VS Code Marketplace.
|
|
17
|
+
|
|
18
|
+
**Run directly in the built-in terminal**
|
|
19
|
+
|
|
20
|
+
- zero install, seconds to start;
|
|
21
|
+
- for when you do not want the extension.
|
|
22
|
+
|
|
23
|
+
> Version note: `dsh-tui` here means this repository (the TUI plugin);
|
|
24
|
+
> `dsh-tui-vscode` means the companion extension; the two are versioned
|
|
25
|
+
> and released independently. Full docs:
|
|
26
|
+
> [baobaolaodie/dsh-tui-vscode](https://github.com/baobaolaodie/dsh-tui-vscode)
|
|
27
|
+
>
|
|
28
|
+
> **The selection channel requires an extension that speaks protocol v2**
|
|
29
|
+
> (**dsh-tui-vscode >= 0.7.0**); with an older extension the feature stays
|
|
30
|
+
> silently disabled and everything else is unaffected.
|
|
31
|
+
|
|
32
|
+
## Option 1: the dsh-tui-vscode companion extension (recommended)
|
|
33
|
+
|
|
34
|
+
[`baobaolaodie/dsh-tui-vscode`](https://github.com/baobaolaodie/dsh-tui-vscode)
|
|
35
|
+
runs dsh-tui inside a real VS Code integrated terminal (`createTerminal`
|
|
36
|
+
plus the CLI running inside it), with no webview and no xterm emulation.
|
|
37
|
+
It does not touch the TUI's rendering core — it only **hosts** it and adds
|
|
38
|
+
editor integration.
|
|
39
|
+
|
|
40
|
+
### Extension features
|
|
41
|
+
|
|
42
|
+
- Editor-title button, activity-bar whale icon, and command-palette entries;
|
|
43
|
+
- a `DeepSeek` integrated terminal in a column beside the editor;
|
|
44
|
+
- one independent terminal and process per session, with existing sessions
|
|
45
|
+
continuing in their own terminals;
|
|
46
|
+
- a sidebar session history grouped by project, with refresh and
|
|
47
|
+
specific-session resume;
|
|
48
|
+
- environment injection for `DSH_TUI_LANG`, `$VISUAL`, `$DSH_HOME`, and a
|
|
49
|
+
target session id;
|
|
50
|
+
- per-session termination when its terminal closes, or when `Ctrl+C` is
|
|
51
|
+
pressed twice inside the TUI.
|
|
52
|
+
|
|
53
|
+
| Capability | Official Claude Code extension | dsh-tui-vscode |
|
|
54
|
+
| --- | --- | --- |
|
|
55
|
+
| Entry points | Activity-bar icon + editor-title button + command palette | Same (DeepSeek whale icon) |
|
|
56
|
+
| Session position | NEW column beside the active one (`ViewColumn.Beside`) | Same — never takes the current column |
|
|
57
|
+
| Terminal tab | `Claude Code` + logo icon | `DeepSeek` + whale icon |
|
|
58
|
+
| Session host | Real integrated terminal (default shell — PowerShell on Windows) | Same |
|
|
59
|
+
| Multiple sessions | Every click opens a new session terminal | Same; old sessions keep running |
|
|
60
|
+
| Sidebar | Sessions list | Session history (grouped by project — stronger) |
|
|
61
|
+
| Auto start/stop | Open = start; closing the terminal = end | Same |
|
|
62
|
+
| Env injection | — | `DSH_TUI_LANG` / `$VISUAL` / `$DSH_HOME` / session id / `DSH_TUI_IDE_PORT/TOKEN` (selection channel) |
|
|
63
|
+
| Editor selection sync | Selection enters context automatically; `⧉ N lines selected` under the prompt | Same (IDE selection channel, below) |
|
|
64
|
+
|
|
65
|
+
### IDE selection channel
|
|
66
|
+
|
|
67
|
+
With a dsh-tui build that includes the IDE selection channel, the extension
|
|
68
|
+
runs a loopback WebSocket server and writes a lock file (directory 0700,
|
|
69
|
+
file 0600).
|
|
70
|
+
|
|
71
|
+
- Extension-launched sessions connect via injected env vars at startup;
|
|
72
|
+
- manually launched sessions discover it by scanning the lock — only windows
|
|
73
|
+
whose workspace covers the session directory are ever dialed. With no
|
|
74
|
+
match the integration stays silently disabled and a foreign project is
|
|
75
|
+
never connected.
|
|
76
|
+
|
|
77
|
+
Afterwards:
|
|
78
|
+
|
|
79
|
+
- Selecting code in the editor instantly shows a `⧉ N lines selected` badge
|
|
80
|
+
under the TUI prompt (it disappears when the selection clears);
|
|
81
|
+
- Submitting a message attaches only the selected lines to the model
|
|
82
|
+
context, with a `⧉ Selected N lines from <relative path>` indicator above
|
|
83
|
+
the user bubble (resuming after a restart still rebuilds that indicator);
|
|
84
|
+
- Selection pushes carry the editor buffer's OWN text — unsaved edits are
|
|
85
|
+
attached exactly as you see them on screen; oversized selections are
|
|
86
|
+
capped and marked with the same policy as @-mentions;
|
|
87
|
+
- Without an IDE or on disconnect everything degrades silently with zero
|
|
88
|
+
impact on the rest of the TUI.
|
|
89
|
+
|
|
90
|
+

|
|
91
|
+
|
|
92
|
+
**Protocol & versions**:
|
|
93
|
+
|
|
94
|
+
- After connecting, the TUI sends `ide/hello` (token + protocolVersion);
|
|
95
|
+
- the extension answers `ide/hello_ack` (protocolVersion + workspaceFolders)
|
|
96
|
+
only when the token validates — the link counts as established only after
|
|
97
|
+
a valid v2 ack; a wrong token is silently dropped;
|
|
98
|
+
- `selection_changed` then carries absolute 0-based inclusive line numbers
|
|
99
|
+
plus the editor buffer's own selection text;
|
|
100
|
+
- lock discovery only ever dials windows whose workspace covers the session
|
|
101
|
+
directory and stays silently disabled without a match;
|
|
102
|
+
- both ends of the protocol must ship at the same version.
|
|
103
|
+
|
|
104
|
+
### Prerequisites
|
|
105
|
+
|
|
106
|
+
- VS Code >= 1.90;
|
|
107
|
+
- Global `dsh` CLI and `dsh-tui` (**dsh-tui 0.7.0+ recommended**, see
|
|
108
|
+
[Getting started](getting-started.en.md)):
|
|
109
|
+
|
|
110
|
+
```sh
|
|
111
|
+
npm install -g @deepseek-ai/dsh @deepseek-harness-tui/dsh-tui
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
- `DEEPSEEK_API_KEY` for running models (in the terminal environment or the
|
|
115
|
+
dsh configuration).
|
|
116
|
+
|
|
117
|
+
### Install
|
|
118
|
+
|
|
119
|
+
**From the VS Code extension panel (recommended)**: press `Ctrl+Shift+X`,
|
|
120
|
+
search for **`dsh-tui`** and install with one click (publisher
|
|
121
|
+
`baobaolaodie`), or open the
|
|
122
|
+
[Marketplace page](https://marketplace.visualstudio.com/items?itemName=baobaolaodie.dsh-tui-vscode)
|
|
123
|
+
directly.
|
|
124
|
+
|
|
125
|
+
Or build from source:
|
|
126
|
+
|
|
127
|
+
```sh
|
|
128
|
+
git clone https://github.com/baobaolaodie/dsh-tui-vscode.git
|
|
129
|
+
cd dsh-tui-vscode
|
|
130
|
+
npm install
|
|
131
|
+
npm run package && code --install-extension dsh-tui-vscode-<version>.vsix --force
|
|
132
|
+
# or: npm run install:local
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
### Quick start
|
|
136
|
+
|
|
137
|
+
1. Click the **editor-title whale button** (or the command-palette entry
|
|
138
|
+
`dsh-tui: Start new session / 启动新会话`) — a **DeepSeek** terminal
|
|
139
|
+
opens on the Beside column and runs dsh-tui automatically.
|
|
140
|
+
2. The **activity-bar whale icon** opens the sidebar session history; its
|
|
141
|
+
welcome view offers start/resume buttons.
|
|
142
|
+
3. Click again = **another concurrent session**; older sessions keep
|
|
143
|
+
running in their own terminals.
|
|
144
|
+
4. **Resume the last session**: `dsh-tui: Resume last session / 恢复上次会话`.
|
|
145
|
+
5. **Resume a specific session**: expand a project group in the sidebar
|
|
146
|
+
"会话历史" and click the session entry.
|
|
147
|
+
6. **Terminate**: close the terminal tab (ends only that session), or
|
|
148
|
+
double `Ctrl+C` inside the TUI; the command
|
|
149
|
+
`dsh-tui: Terminate session / 终止会话` sends Ctrl+C to the most recent
|
|
150
|
+
terminal.
|
|
151
|
+
|
|
152
|
+
While sessions are running, a **status-bar** item (`dsh-tui`, bottom-left)
|
|
153
|
+
appears; clicking it starts a new session (`dsh-tui-vscode.open`).
|
|
154
|
+
|
|
155
|
+
### Command reference
|
|
156
|
+
|
|
157
|
+
| Command ID | Title | Action |
|
|
158
|
+
| --- | --- | --- |
|
|
159
|
+
| `dsh-tui-vscode.open` | Open panel / 打开会话面板 | Start a new session (the editor-title button uses this entry point too) |
|
|
160
|
+
| `dsh-tui-vscode.start` | Start new session / 启动新会话 | Start a new session |
|
|
161
|
+
| `dsh-tui-vscode.resume` | Resume last session / 恢复上次会话 | Resume via `--resume` |
|
|
162
|
+
| `dsh-tui-vscode.focus` | Focus session panel / 聚焦会话面板 | Focus the most recent terminal, else start one |
|
|
163
|
+
| `dsh-tui-vscode.kill` | Terminate session / 终止会话 | Send Ctrl+C to the most recent terminal |
|
|
164
|
+
| `dsh-tui-vscode.refreshSessions` | Refresh sessions / 刷新会话列表 | Manually refresh the sidebar |
|
|
165
|
+
| `dsh-tui-vscode.resumeSession` | Resume session / 恢复会话 | Resume a specific session (sidebar click) |
|
|
166
|
+
| `dsh-tui-vscode.insertAtMention` | Insert @-mention / 插入 @文件引用 | With editor focus press `Ctrl+Alt+K` (macOS `Cmd+Alt+K`) or the editor context menu: inserts the current file / selection as `@absolute/path Lstart-end` into the dsh-tui input box (the absolute path is independent of the dsh-tui session cwd; whole file when nothing is selected; falls back to the clipboard with no running session) |
|
|
167
|
+
|
|
168
|
+
### Architecture
|
|
169
|
+
|
|
170
|
+
- The extension runs a loopback WebSocket server and writes a lock file
|
|
171
|
+
(directory 0700, file 0600).
|
|
172
|
+
- Extension-launched sessions connect via injected env vars at startup.
|
|
173
|
+
- Manually launched sessions (e.g. tmux / SSH) discover it by scanning the
|
|
174
|
+
lock — only windows whose workspace covers the session directory are ever
|
|
175
|
+
dialed; with no match it stays silently disabled and a foreign project is
|
|
176
|
+
never connected.
|
|
177
|
+
- The connection speaks protocol v2: the TUI sends `ide/hello`, the
|
|
178
|
+
extension answers `ide/hello_ack`, then `selection_changed` pushes
|
|
179
|
+
selections.
|
|
180
|
+
- Without an IDE or on disconnect, everything degrades silently with zero
|
|
181
|
+
impact on the rest of the TUI.
|
|
182
|
+
|
|
183
|
+
### Configuration
|
|
184
|
+
|
|
185
|
+
| Key | Default | Description |
|
|
186
|
+
| --- | --- | --- |
|
|
187
|
+
| `dsh-tui-vscode.command` | `dsh-tui` | Launch command (resolved to an absolute path against the host PATH) |
|
|
188
|
+
| `dsh-tui-vscode.extraArgs` | `[]` | Extra CLI args, e.g. `["--lang","en"]` |
|
|
189
|
+
| `dsh-tui-vscode.lang` | `""` | `""`/`zh`/`en`, exported as `DSH_TUI_LANG` |
|
|
190
|
+
| `dsh-tui-vscode.injectEditor` | `true` | Export `$VISUAL` when unset |
|
|
191
|
+
| `dsh-tui-vscode.editorCommand` | `code -w` | Value exported as `$VISUAL` |
|
|
192
|
+
| `dsh-tui-vscode.dshHome` | `""` | `$DSH_HOME` override (empty = inherit) |
|
|
193
|
+
|
|
194
|
+
### Development and verification
|
|
195
|
+
|
|
196
|
+
Entry-level commands in the extension repository:
|
|
197
|
+
|
|
198
|
+
```sh
|
|
199
|
+
npm install
|
|
200
|
+
npm run typecheck # tsc --noEmit
|
|
201
|
+
npm test # compile + node --test (data-layer unit tests)
|
|
202
|
+
npm run test:e2e # real extension-host tests (xvfb-run -a on Linux)
|
|
203
|
+
npm run package # compile + build the .vsix
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
`npm run install:local` installs locally in one step; the CI job matrix and
|
|
207
|
+
commit hooks live in the extension repository's own docs.
|
|
208
|
+
|
|
209
|
+
### Known limitations
|
|
210
|
+
|
|
211
|
+
- Session content is terminal content: scrollback is managed by the VS Code
|
|
212
|
+
integrated terminal;
|
|
213
|
+
- Specific-session resume requires this profile's `cordis.patch.yml`
|
|
214
|
+
(dsh-tui 0.7.0+);
|
|
215
|
+
- For logs without a `session` header, the project name comes from decoding
|
|
216
|
+
the cwd-encoded group dir, which is lossy for hyphenated project names
|
|
217
|
+
(e.g. `flow-comet` → `flow\comet`); the real cwd is still available in
|
|
218
|
+
the item tooltip.
|
|
219
|
+
|
|
220
|
+
## Option 2: run directly in the VS Code integrated terminal
|
|
221
|
+
|
|
222
|
+
When you do not want the extension, run dsh-tui directly in the integrated
|
|
223
|
+
terminal. Prerequisites match [Getting started](getting-started.en.md):
|
|
224
|
+
global `dsh` CLI and `dsh-tui` (the first run bootstraps the profile; pnpm
|
|
225
|
+
is required).
|
|
226
|
+
|
|
227
|
+
1. Open the VS Code integrated terminal (`` Ctrl+` ``) and run:
|
|
228
|
+
|
|
229
|
+
```sh
|
|
230
|
+
dsh-tui
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
2. Resume the last session:
|
|
234
|
+
|
|
235
|
+
```sh
|
|
236
|
+
dsh-tui --resume
|
|
237
|
+
```
|
|
238
|
+
|
|
239
|
+
> `-c` / `--continue` is equivalent to `--resume`; `dsh-tui --resume <id>`
|
|
240
|
+
> (or `--resume=<id>`, since 0.7.0) resumes a specific session.
|
|
241
|
+
|
|
242
|
+
dsh-TUI has dedicated compatibility paths for xterm.js (VS Code / Cursor /
|
|
243
|
+
code-server):
|
|
244
|
+
|
|
245
|
+
- truecolor;
|
|
246
|
+
- OSC 8 links (rendered clickable by VS Code itself);
|
|
247
|
+
- OSC 52 clipboard (VS Code prompts for permission on first use);
|
|
248
|
+
- synchronized output and smooth draining.
|
|
249
|
+
|
|
250
|
+
These are handled in `src/ink/` under the `TERM_PROGRAM=vscode` detection
|
|
251
|
+
branches. Streaming Markdown, tool cards, scrolling, and double-Esc time
|
|
252
|
+
travel behave the same as in a standalone terminal.
|
|
253
|
+
|
|
254
|
+
### Make `Ctrl+G` edit the current input in VS Code
|
|
255
|
+
|
|
256
|
+
The TUI's `Ctrl+G` uses `$VISUAL`/`$EDITOR`. To edit in VS Code, export
|
|
257
|
+
`code -w` in the terminal environment (`settings.json`, key
|
|
258
|
+
`terminal.integrated.env.<platform>`):
|
|
259
|
+
|
|
260
|
+
```jsonc
|
|
261
|
+
{
|
|
262
|
+
"terminal.integrated.env.windows": { "VISUAL": "code -w" },
|
|
263
|
+
"terminal.integrated.env.linux": { "VISUAL": "code -w" },
|
|
264
|
+
"terminal.integrated.env.osx": { "VISUAL": "code -w" }
|
|
265
|
+
}
|
|
266
|
+
```
|
|
267
|
+
|
|
268
|
+
(The companion extension exports `code -w` automatically when neither
|
|
269
|
+
`$VISUAL` nor `$EDITOR` is set — see Option 1.)
|
|
270
|
+
|
|
271
|
+
### UI language
|
|
272
|
+
|
|
273
|
+
`DSH_TUI_LANG` defaults to Chinese; for the English UI, add
|
|
274
|
+
`"DSH_TUI_LANG": "en"` to the env block above.
|
|
275
|
+
|
|
276
|
+
### Known differences (built-in terminal)
|
|
277
|
+
|
|
278
|
+
| Capability | Behavior in the integrated terminal |
|
|
279
|
+
| --- | --- |
|
|
280
|
+
| Mouse wheel / drag selection | Handled by the integrated terminal; "copy on release" surfaces as OS-level copy behavior |
|
|
281
|
+
| Extended keyboard protocol | modifyOtherKeys / win32-input-mode behavior is decided by xterm.js and may differ from kitty / WezTerm |
|
|
282
|
+
| OSC 52 clipboard | First use triggers VS Code's own permission prompt |
|
|
283
|
+
|
|
284
|
+
For the full protocol behavior of a standalone terminal (e.g. complex mouse
|
|
285
|
+
semantics), use an external terminal window (Windows Terminal / kitty /
|
|
286
|
+
WezTerm / iTerm2 / tmux).
|
|
287
|
+
|
|
288
|
+
## Which option to choose
|
|
289
|
+
|
|
290
|
+
| Scenario | Choice |
|
|
291
|
+
| --- | --- |
|
|
292
|
+
| Need multiple sessions, session history, and specific-session resume | Option 1: companion extension |
|
|
293
|
+
| Occasional use, no extension wanted | Option 2: built-in terminal |
|
|
294
|
+
| Need a standalone terminal's full protocol behavior (complex mouse semantics, etc.) | External terminal window |
|
|
295
|
+
|
|
296
|
+
## Acceptance baseline
|
|
297
|
+
|
|
298
|
+
Per [Contributing](contributing.en.md), VS Code is a supported terminal
|
|
299
|
+
platform. Any rendering change should be walked through inside the VS Code
|
|
300
|
+
integrated terminal in both inline and fullscreen modes at narrow widths —
|
|
301
|
+
startup, resize, scroll, input, cancel, and clean exit.
|
|
@@ -0,0 +1,272 @@
|
|
|
1
|
+
# 在 VS Code 中使用 dsh-TUI
|
|
2
|
+
|
|
3
|
+
[文档索引](README.md) · [English](vscode.en.md)
|
|
4
|
+
|
|
5
|
+
dsh-TUI 是终端程序:它把 ANSI 写进 PTY,再从 PTY 读按键。
|
|
6
|
+
所以任何兼容终端都能运行它,包括 **VS Code 集成终端**
|
|
7
|
+
(xterm.js)。本页介绍两种用法:
|
|
8
|
+
|
|
9
|
+
**companion 扩展 `dsh-tui-vscode`(推荐)**
|
|
10
|
+
|
|
11
|
+
- 会话跑在 VS Code **真实的集成终端**里(编辑器区另一侧新开一列);
|
|
12
|
+
- 支持多会话并存、侧边栏会话历史、一键启动;
|
|
13
|
+
- 支持恢复上次会话、恢复指定会话;
|
|
14
|
+
- 扩展已上架 VS Code Marketplace。
|
|
15
|
+
|
|
16
|
+
**内置集成终端直接运行**
|
|
17
|
+
|
|
18
|
+
- 零安装、秒级可用;
|
|
19
|
+
- 适合不想装扩展的场景。
|
|
20
|
+
|
|
21
|
+
> 版本说明:本页的 `dsh-tui` 指本仓库(TUI 插件),
|
|
22
|
+
> `dsh-tui-vscode` 指 companion 扩展,两者版本独立、各自发布。
|
|
23
|
+
> 扩展完整说明见其仓库 README:
|
|
24
|
+
> [baobaolaodie/dsh-tui-vscode](https://github.com/baobaolaodie/dsh-tui-vscode)
|
|
25
|
+
>
|
|
26
|
+
> **选区通道要求扩展支持协议 v2**(**dsh-tui-vscode ≥ 0.7.0**)——
|
|
27
|
+
> 更旧的扩展下该功能静默不启用,其余功能不受影响。
|
|
28
|
+
|
|
29
|
+
## 方式一:companion 扩展 dsh-tui-vscode(推荐)
|
|
30
|
+
|
|
31
|
+
[`baobaolaodie/dsh-tui-vscode`](https://github.com/baobaolaodie/dsh-tui-vscode)
|
|
32
|
+
把 dsh-tui 跑进 VS Code **真实的集成终端**(用 `createTerminal`
|
|
33
|
+
在终端内运行 CLI),没有 webview、没有 xterm 模拟层。它不改动
|
|
34
|
+
TUI 核心渲染链路,只负责**运行 TUI、做编辑器集成**。
|
|
35
|
+
|
|
36
|
+
### 扩展提供的功能
|
|
37
|
+
|
|
38
|
+
- 编辑器标签栏按钮、活动栏鲸鱼图标、命令面板入口;
|
|
39
|
+
- 在编辑器区旁边创建名为 `DeepSeek` 的集成终端;
|
|
40
|
+
- 每次启动创建独立会话,已有会话继续在各自终端运行;
|
|
41
|
+
- 侧边栏按项目分组显示会话历史,支持刷新、恢复指定会话;
|
|
42
|
+
- 注入 `DSH_TUI_LANG`、`$VISUAL`、`$DSH_HOME`、指定会话 id 等环境变量;
|
|
43
|
+
- 关闭终端结束对应会话,TUI 内双击 `Ctrl+C` 也可退出。
|
|
44
|
+
|
|
45
|
+
| 能力 | Claude Code 官方扩展 | dsh-tui-vscode |
|
|
46
|
+
| --- | --- | --- |
|
|
47
|
+
| 入口 | 活动栏图标 + 编辑器标签栏按钮 + 命令面板 | 同(DeepSeek 鲸鱼图标) |
|
|
48
|
+
| 会话位置 | 编辑器区**另一侧**新开一列(`ViewColumn.Beside`) | 同,不占当前列 |
|
|
49
|
+
| 终端标签 | `Claude Code` + logo 图标 | `DeepSeek` + 鲸鱼图标 |
|
|
50
|
+
| 会话运行终端 | 真实集成终端(默认 shell:Windows = PowerShell) | 同 |
|
|
51
|
+
| 多会话 | 每次点击新开一个会话终端 | 同,旧会话继续运行 |
|
|
52
|
+
| 侧边栏 | sessions 会话列表 | 会话历史(按项目分组树,更强) |
|
|
53
|
+
| 自动启停 | 打开 = 启动;关闭终端 = 结束 | 同 |
|
|
54
|
+
| 环境注入 | — | `DSH_TUI_LANG` / `$VISUAL` / `$DSH_HOME` / 指定会话 id / `DSH_TUI_IDE_PORT/TOKEN`(选区通道) |
|
|
55
|
+
| 编辑器选区联动 | 选区自动进上下文,prompt 下方 `⧉ N lines selected` | 同(IDE 选区通道,见下) |
|
|
56
|
+
|
|
57
|
+
### IDE 选区通道
|
|
58
|
+
|
|
59
|
+
搭配含 IDE 选区通道的 dsh-tui 版本,扩展会在本机起一个
|
|
60
|
+
loopback WebSocket 服务,并写入 lock 文件(目录 0700、文件 0600)。
|
|
61
|
+
|
|
62
|
+
- 扩展启动的会话:dsh-tui 启动时通过环境变量直连;
|
|
63
|
+
- 手动启动的会话:扫描 lock 自动发现——只连 workspace 覆盖
|
|
64
|
+
当前会话目录的窗口;没有匹配就静默禁用,绝不连别的项目。
|
|
65
|
+
|
|
66
|
+
此后:
|
|
67
|
+
|
|
68
|
+
- 编辑器选中代码 → TUI prompt 下方**实时**出现 `⧉ N lines selected`
|
|
69
|
+
徽标(清空选区即消失);
|
|
70
|
+
- 提交消息 → 选中行自动附加进模型上下文,transcript 用户消息上方
|
|
71
|
+
渲染「⧉ Selected N lines from <相对路径>」指示行(重启后 resume
|
|
72
|
+
仍能重建该指示行);
|
|
73
|
+
- 选区推送携带**编辑器缓冲区自己的文本**——未保存的修改也如实附加
|
|
74
|
+
(附加的就是你屏幕上看到的);超大选区按与 @-引用相同的上限截断
|
|
75
|
+
并标记;
|
|
76
|
+
- 无 IDE / 断连时静默降级,TUI 其余功能零影响。
|
|
77
|
+
|
|
78
|
+

|
|
79
|
+
|
|
80
|
+
**协议与版本**:
|
|
81
|
+
|
|
82
|
+
- 连接后 TUI 先发 `ide/hello`(token + protocolVersion);
|
|
83
|
+
- 扩展验证通过才回 `ide/hello_ack`(protocolVersion + workspaceFolders)——
|
|
84
|
+
只有收到合法 v2 ACK 才算连接建立,token 不对会被静默断开;
|
|
85
|
+
- 此后 `selection_changed` 携带绝对行号(0-based 含端)与编辑器
|
|
86
|
+
缓冲区自身的选区文本;
|
|
87
|
+
- lock 发现只连 workspace 覆盖会话目录的窗口,无匹配即静默禁用;
|
|
88
|
+
- 协议两端需同版本发布。
|
|
89
|
+
|
|
90
|
+
### 前置条件
|
|
91
|
+
|
|
92
|
+
- VS Code ≥ 1.90;
|
|
93
|
+
- 全局安装 `dsh` CLI 与 `dsh-tui`
|
|
94
|
+
(**建议 dsh-tui 0.7.0+**,见[快速开始](getting-started.md)):
|
|
95
|
+
|
|
96
|
+
```sh
|
|
97
|
+
npm install -g @deepseek-ai/dsh @deepseek-harness-tui/dsh-tui
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
- 运行模型需要 `DEEPSEEK_API_KEY`(放在终端环境或 dsh 配置里)。
|
|
101
|
+
|
|
102
|
+
### 安装
|
|
103
|
+
|
|
104
|
+
**从 VS Code 扩展面板安装(推荐)**:`Ctrl+Shift+X` 搜索
|
|
105
|
+
**`dsh-tui`** 一键安装(发布者 `baobaolaodie`),或直接打开
|
|
106
|
+
[Marketplace 页面](https://marketplace.visualstudio.com/items?itemName=baobaolaodie.dsh-tui-vscode)。
|
|
107
|
+
|
|
108
|
+
或从源码构建:
|
|
109
|
+
|
|
110
|
+
```sh
|
|
111
|
+
git clone https://github.com/baobaolaodie/dsh-tui-vscode.git
|
|
112
|
+
cd dsh-tui-vscode
|
|
113
|
+
npm install
|
|
114
|
+
npm run package && code --install-extension dsh-tui-vscode-<version>.vsix --force
|
|
115
|
+
# 或一步到位:npm run install:local
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
### 快速上手
|
|
119
|
+
|
|
120
|
+
1. 点**编辑器标签栏右侧鲸鱼按钮**,或跑命令面板
|
|
121
|
+
`dsh-tui: Start new session / 启动新会话`——编辑器区**另一侧**
|
|
122
|
+
新开 **DeepSeek** 终端并自动运行 dsh-tui。
|
|
123
|
+
2. 点**活动栏鲸鱼图标**打开侧边栏「会话历史」,欢迎页提供
|
|
124
|
+
「启动新会话」「恢复上次会话」按钮。
|
|
125
|
+
3. 再次点击 = **再开一个会话**,多会话并行,旧会话在自己的
|
|
126
|
+
终端里继续运行。
|
|
127
|
+
4. **恢复上次会话**:`dsh-tui: Resume last session / 恢复上次会话`。
|
|
128
|
+
5. **恢复指定会话**:侧边栏「会话历史」展开项目组 → 点击会话条目。
|
|
129
|
+
6. **终止**:关闭终端标签(只结束该会话),或 TUI 内双击
|
|
130
|
+
`Ctrl+C`;命令 `dsh-tui: Terminate session / 终止会话` 向最近
|
|
131
|
+
终端发送 Ctrl+C。
|
|
132
|
+
|
|
133
|
+
有会话运行时,**状态栏**(左下)显示 `dsh-tui` 项,
|
|
134
|
+
点击启动新会话(对应 `dsh-tui-vscode.open`)。
|
|
135
|
+
|
|
136
|
+
### 命令清单
|
|
137
|
+
|
|
138
|
+
| 命令 ID | 标题 | 作用 |
|
|
139
|
+
| --- | --- | --- |
|
|
140
|
+
| `dsh-tui-vscode.open` | Open panel / 打开会话面板 | 启动新会话(编辑器标签栏按钮的同一入口) |
|
|
141
|
+
| `dsh-tui-vscode.start` | Start new session / 启动新会话 | 启动新会话 |
|
|
142
|
+
| `dsh-tui-vscode.resume` | Resume last session / 恢复上次会话 | `--resume` 恢复最近会话 |
|
|
143
|
+
| `dsh-tui-vscode.focus` | Focus session panel / 聚焦会话面板 | 聚焦最近终端,无则新开 |
|
|
144
|
+
| `dsh-tui-vscode.kill` | Terminate session / 终止会话 | 向最近终端发送 Ctrl+C |
|
|
145
|
+
| `dsh-tui-vscode.refreshSessions` | Refresh sessions / 刷新会话列表 | 手动刷新侧边栏 |
|
|
146
|
+
| `dsh-tui-vscode.resumeSession` | Resume session / 恢复会话 | 恢复指定会话(侧边栏点击) |
|
|
147
|
+
| `dsh-tui-vscode.insertAtMention` | Insert @-mention / 插入 @文件引用 | 编辑器聚焦时按 `Ctrl+Alt+K`(macOS `Cmd+Alt+K`)或编辑器右键:把当前文件/选中代码以 `@绝对路径 L起-止` 插入 dsh-tui 输入框(绝对路径与 dsh-tui 会话 cwd 无关;未选中引用整个文件;无运行会话回退为复制到剪贴板) |
|
|
148
|
+
|
|
149
|
+
### 架构与机制
|
|
150
|
+
|
|
151
|
+
- 扩展在本机起一个 loopback WebSocket 服务,并把连接信息写进 lock
|
|
152
|
+
文件(目录 0700、文件 0600)。
|
|
153
|
+
- 从扩展启动:dsh-tui 用注入的环境变量直连该服务。
|
|
154
|
+
- 手动启动(如 tmux / SSH):扫描 lock 自动发现,只连 workspace
|
|
155
|
+
覆盖当前会话目录的窗口;没有匹配就静默禁用,绝不连别的项目。
|
|
156
|
+
- 连接走协议 v2:TUI 先发 `ide/hello`,扩展回 `ide/hello_ack`,
|
|
157
|
+
之后用 `selection_changed` 推送选区。
|
|
158
|
+
- 无 IDE / 断连时静默降级,TUI 其余功能零影响。
|
|
159
|
+
|
|
160
|
+
### 配置
|
|
161
|
+
|
|
162
|
+
| 键 | 默认 | 说明 |
|
|
163
|
+
| --- | --- | --- |
|
|
164
|
+
| `dsh-tui-vscode.command` | `dsh-tui` | 启动命令(按宿主 PATH 解析为绝对路径) |
|
|
165
|
+
| `dsh-tui-vscode.extraArgs` | `[]` | 每次启动追加的 CLI 参数,如 `["--lang","en"]` |
|
|
166
|
+
| `dsh-tui-vscode.lang` | `""` | `""`/`zh`/`en`,写入 `DSH_TUI_LANG` |
|
|
167
|
+
| `dsh-tui-vscode.injectEditor` | `true` | 未设 `$VISUAL`/`$EDITOR` 时导出 `$VISUAL` |
|
|
168
|
+
| `dsh-tui-vscode.editorCommand` | `code -w` | 导出为 `$VISUAL` 的命令 |
|
|
169
|
+
| `dsh-tui-vscode.dshHome` | `""` | 覆盖会话的 `$DSH_HOME`(空 = 继承) |
|
|
170
|
+
|
|
171
|
+
### 开发与验证
|
|
172
|
+
|
|
173
|
+
扩展仓库跑测试、打包与本地安装的入口命令:
|
|
174
|
+
|
|
175
|
+
```sh
|
|
176
|
+
npm install
|
|
177
|
+
npm run typecheck # tsc --noEmit
|
|
178
|
+
npm test # 编译 + node --test(数据层单测)
|
|
179
|
+
npm run test:e2e # 真实扩展宿主测试(Linux 用 xvfb-run -a)
|
|
180
|
+
npm run package # 编译 + 生成 .vsix
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
`npm run install:local` 一步本地安装;CI 任务矩阵与提交钩子等扩展仓库细节,此处从略。
|
|
184
|
+
|
|
185
|
+
### 已知限制
|
|
186
|
+
|
|
187
|
+
- 会话内容即终端内容:滚动历史由 VS Code 集成终端管理;
|
|
188
|
+
- 指定会话恢复依赖 dsh-tui profile 的 `cordis.patch.yml`
|
|
189
|
+
(dsh-tui 0.7.0+);
|
|
190
|
+
- 无 `session` 头日志的项目名来自组目录解码,含连字符的项目名
|
|
191
|
+
解码有损(如 `flow-comet` → `flow\comet`)——此类会话的 cwd
|
|
192
|
+
仍可在悬浮提示中查看。
|
|
193
|
+
|
|
194
|
+
## 方式二:VS Code 集成终端直接运行
|
|
195
|
+
|
|
196
|
+
不想装扩展时,直接在集成终端里跑 dsh-tui。前置条件与
|
|
197
|
+
[快速开始](getting-started.md) 一致:全局安装 `dsh` CLI 与 `dsh-tui`
|
|
198
|
+
(首次启动会自举 profile,需要 pnpm)。
|
|
199
|
+
|
|
200
|
+
1. 打开 VS Code 集成终端(`` Ctrl+` ``):
|
|
201
|
+
|
|
202
|
+
```sh
|
|
203
|
+
dsh-tui
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
2. 恢复上次会话:
|
|
207
|
+
|
|
208
|
+
```sh
|
|
209
|
+
dsh-tui --resume
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
> `-c` / `--continue` 与 `--resume` 等价;`dsh-tui --resume <id>`(或
|
|
213
|
+
> `--resume=<id>`,0.7.0 起)恢复指定会话。
|
|
214
|
+
|
|
215
|
+
dsh-TUI 对 xterm.js(VS Code / Cursor / code-server)有专门的兼容路径:
|
|
216
|
+
|
|
217
|
+
- truecolor 配色;
|
|
218
|
+
- OSC 8 链接(由 VS Code 直接渲染为可点击);
|
|
219
|
+
- OSC 52 剪贴板(首次使用 VS Code 会弹授权提示);
|
|
220
|
+
- 同步输出、平滑刷屏。
|
|
221
|
+
|
|
222
|
+
这些在 `src/ink/` 中按 `TERM_PROGRAM=vscode` 探测分支处理。
|
|
223
|
+
流式 Markdown、工具卡、滚动、双击 Esc 时间回溯等行为
|
|
224
|
+
与独立终端一致。
|
|
225
|
+
|
|
226
|
+
### 让 `Ctrl+G` 用 VS Code 编辑当前输入
|
|
227
|
+
|
|
228
|
+
TUI 的 `Ctrl+G` 走 `$VISUAL`/`$EDITOR`。想让它在 VS Code 里编辑,
|
|
229
|
+
把 `code -w` 写进终端环境(`settings.json` 中按平台设置,键名
|
|
230
|
+
`terminal.integrated.env.<platform>`):
|
|
231
|
+
|
|
232
|
+
```jsonc
|
|
233
|
+
{
|
|
234
|
+
"terminal.integrated.env.windows": { "VISUAL": "code -w" },
|
|
235
|
+
"terminal.integrated.env.linux": { "VISUAL": "code -w" },
|
|
236
|
+
"terminal.integrated.env.osx": { "VISUAL": "code -w" }
|
|
237
|
+
}
|
|
238
|
+
```
|
|
239
|
+
|
|
240
|
+
(若 `$VISUAL`/`$EDITOR` 都未设置,companion 扩展会自动导出
|
|
241
|
+
`code -w`,见方式一。)
|
|
242
|
+
|
|
243
|
+
### 界面语言
|
|
244
|
+
|
|
245
|
+
`DSH_TUI_LANG` 默认中文;要英文界面,在上述 env 里加
|
|
246
|
+
`"DSH_TUI_LANG": "en"`。
|
|
247
|
+
|
|
248
|
+
### 已知差异(内置终端)
|
|
249
|
+
|
|
250
|
+
| 能力 | 内置终端表现 |
|
|
251
|
+
| --- | --- |
|
|
252
|
+
| 鼠标滚轮/拖选 | 由集成终端处理;“松开即复制”表现为 OS 级复制行为 |
|
|
253
|
+
| 扩展键盘协议 | modifyOtherKeys / win32-input-mode 由 xterm.js 决定,可能与 kitty / WezTerm 不完全一致 |
|
|
254
|
+
| OSC 52 剪贴板 | 首次使用弹出权限提示(VS Code 自身的安全设计) |
|
|
255
|
+
|
|
256
|
+
需要完全对齐独立终端行为时,请使用独立终端窗口
|
|
257
|
+
(Windows Terminal / kitty / WezTerm / iTerm2 / tmux)。
|
|
258
|
+
|
|
259
|
+
## 选型建议
|
|
260
|
+
|
|
261
|
+
| 场景 | 选择 |
|
|
262
|
+
| --- | --- |
|
|
263
|
+
| 需要多会话、会话历史和指定会话恢复 | 方式一:companion 扩展 |
|
|
264
|
+
| 偶尔用、不想装扩展 | 方式二:内置终端 |
|
|
265
|
+
| 需要完全独立终端的协议行为(复杂鼠标行为等) | 独立终端窗口 |
|
|
266
|
+
|
|
267
|
+
## 验收基线
|
|
268
|
+
|
|
269
|
+
按[贡献指南](contributing.md)的约定,VS Code 属于受支持的终端平台。
|
|
270
|
+
任何渲染改动请在 inline / fullscreen 两种模式、窄终端宽度下,
|
|
271
|
+
在 VS Code 集成终端内走一遍:启动、resize、滚动、输入、取消、
|
|
272
|
+
干净退出。
|