@deepseek-harness-tui/dsh-tui 0.12.0 → 0.13.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +41 -5
- 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 +8 -3
- package/cordis.patch.yml +7 -1
- package/guide/dsh-tui-guide/configuration.en.md +6 -1
- package/guide/dsh-tui-guide/configuration.md +6 -1
- package/guide/dsh-tui-guide/getting-started.en.md +6 -3
- package/guide/dsh-tui-guide/getting-started.md +4 -2
- package/guide/dsh-tui-guide/interaction.en.md +68 -4
- package/guide/dsh-tui-guide/interaction.md +49 -3
- package/guide/dsh-tui-guide/plugins.en.md +16 -6
- package/guide/dsh-tui-guide/plugins.md +14 -6
- package/guide/dsh-tui-guide/themes.en.md +7 -2
- package/guide/dsh-tui-guide/themes.md +5 -2
- package/guide/dsh-tui-guide/user-guide.en.md +124 -21
- package/guide/dsh-tui-guide/user-guide.md +96 -16
- package/lib/settings.json +215 -1
- package/lib/types/adapter/channel/ui-policy.d.ts +6 -2
- package/lib/types/adapter/channel/ui-policy.d.ts.map +1 -1
- package/lib/types/adapter/channel/ui-policy.js +14 -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-ui.d.ts +62 -2
- package/lib/types/adapter/ports/channel-ui.d.ts.map +1 -1
- package/lib/types/adapter/ports/channel-view.d.ts +94 -0
- 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 +18 -1
- package/lib/types/components/Chat/JobCard.d.ts.map +1 -1
- package/lib/types/components/Chat/JobCard.js +90 -22
- 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/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 +147 -14
- 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 +212 -18
- 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/PromptInput.d.ts +20 -22
- package/lib/types/components/PromptInput.d.ts.map +1 -1
- package/lib/types/components/PromptInput.js +413 -156
- 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/SubagentCard.d.ts.map +1 -1
- package/lib/types/components/SubagentCard.js +17 -2
- 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 +54 -5
- 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/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/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/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/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/mode-actions.d.ts +0 -3
- package/lib/types/dsh-adapter/channel/mode-actions.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/mode-actions.js +7 -2
- 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 +0 -1
- 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 +9 -1
- 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 +18 -2
- package/lib/types/dsh-adapter/channel/state.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/state.js +2 -1
- 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 +56 -3
- 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 +14 -0
- package/lib/types/dsh-adapter/contract.d.ts.map +1 -1
- package/lib/types/dsh-adapter/contract.js +24 -0
- 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/migrate/sessionize.d.ts.map +1 -1
- package/lib/types/dsh-adapter/migrate/sessionize.js +11 -12
- 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 +17 -1
- package/lib/types/dsh-adapter/plugin.d.ts.map +1 -1
- package/lib/types/dsh-adapter/plugin.js +169 -32
- package/lib/types/dsh-adapter/presets.d.ts +26 -6
- package/lib/types/dsh-adapter/presets.d.ts.map +1 -1
- package/lib/types/dsh-adapter/presets.js +29 -7
- 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/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 +734 -15
- package/lib/types/i18n.d.ts.map +1 -1
- package/lib/types/i18n.js +302 -6
- 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 +62 -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 +36 -3
- package/lib/types/ink/parse-keypress.d.ts.map +1 -1
- package/lib/types/ink/parse-keypress.js +262 -108
- 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/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/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 +22 -1
- package/lib/types/screens/Chat.d.ts.map +1 -1
- package/lib/types/screens/Chat.js +1126 -299
- 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.map +1 -1
- package/lib/types/screens/StatusLine.js +32 -14
- 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 +83 -0
- package/lib/types/tips.js +5 -5
- 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 +101 -44
- 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/package.json +19 -8
- 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/{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
|
@@ -31,11 +31,13 @@ import { ensurePackagedPresets } from './packaged-presets.js';
|
|
|
31
31
|
import { registerBundledPresets } from './bundled-presets.js';
|
|
32
32
|
import { ensureLegacySessionEventTypes, snapshotLiveSessionEvents } from './compat/index.js';
|
|
33
33
|
import { clearResumeTarget, resumeTargetFromArgv, writeResumeTarget } from '../sessionHistory.js';
|
|
34
|
+
import { initialPromptFromCmdlineArgs } from './startup-args.js';
|
|
34
35
|
import { readHomePrefs } from '../homePrefs.js';
|
|
36
|
+
import { shouldOfferOnboarding } from '../onboardingPrefs.js';
|
|
35
37
|
import { resolveSessionCwd } from '../utils/workspaceRoot.js';
|
|
36
38
|
import { beginRestartAttempt, checkForTuiUpdate, installedTuiVersion, isBootDeadlockTarget, isStandaloneRuntime, isVersionNewer, logRestartEvent, resolveDshProfileName, resolveTuiUpdateTarget, restartTui, updateTuiAndRestart, writeHandoffNotice } from '../update.js';
|
|
37
39
|
import { getLang, isLang, resolveStartupLang, setLang, t, writeLangPref } from '../i18n.js';
|
|
38
|
-
import { DEFAULT_PAGE_MARGIN, DEFAULT_STATUS_BAR, applyImageBacking, applyMathImageBacking, applyMathImageScale, applyMathRendering, applyMermaidDiagrams, applyPageMargin, isPageMarginMode, normalizePageMargin, normalizeScrollGutter, normalizeStatusBar, normalizeToolBackground, parsePageMarginSpec, resolveMathRendering } from '../tuiDisplayPrefs.js';
|
|
40
|
+
import { DEFAULT_PAGE_MARGIN, DEFAULT_SIDE_PANEL_IDS, DEFAULT_STATUS_BAR, SIDE_PANEL_ID_PATTERN, applyCompanionSkin, applyImageBacking, applyMathImageBacking, applyMathImageScale, applyMathRendering, applyMermaidDiagrams, applyPageMargin, applySidePanelOpen, applySidePanelPanels, applySidePanelRatio, applySidePanelSplitEnabled, isPageMarginMode, normalizeJobGroupFold, normalizePageMargin, normalizeScrollGutter, normalizeSidePanelPanels, normalizeStatusBar, normalizeToolBackground, parsePageMarginSpec, resolveMathRendering } from '../tuiDisplayPrefs.js';
|
|
39
41
|
import { draftComboConflicts, effectiveComboString, parseComboDraft, setKeymapOverrides, SHORTCUT_ACTIONS, } from '../utils/keymap.js';
|
|
40
42
|
import { attachHerdrIntegration } from '../herdr.js';
|
|
41
43
|
import { logMouseDebug } from '../utils/debug.js';
|
|
@@ -46,6 +48,7 @@ import { reserveMount } from '../sessionMounts.js';
|
|
|
46
48
|
import { getHostDialogStore } from './dialogs.js';
|
|
47
49
|
import { getHostStatusStore } from './status.js';
|
|
48
50
|
import { createActivityStore } from './activity-store.js';
|
|
51
|
+
import { createContextOccupancyStore } from './context-occupancy.js';
|
|
49
52
|
import { getHostToastStore } from './toast.js';
|
|
50
53
|
import { getHostShortcuts } from './shortcuts.js';
|
|
51
54
|
import { getHostThemes } from './themes.js';
|
|
@@ -86,39 +89,28 @@ import { fatalReasonForExit, registerProcessGuardFatalSink } from '../ink/update
|
|
|
86
89
|
let lastBootedFullscreen;
|
|
87
90
|
// Image preferences also stay fixed across host recomposes until /restart.
|
|
88
91
|
let lastBootedTerminalImages;
|
|
92
|
+
// Kept importable from here: the startup parser moved to its own dependency-free
|
|
93
|
+
// module so argv probes can load it without the whole plugin graph.
|
|
94
|
+
export { initialPromptFromCmdlineArgs };
|
|
89
95
|
/**
|
|
90
96
|
* Extract the startup prompt from raw app argv, excluding session selectors
|
|
91
97
|
* and Web startup flag values. `--trusted-host` consumes multiple authorities
|
|
92
98
|
* up to the next flag; none of them are prompt text (issue #882). An app-level
|
|
93
99
|
* `--` ends flag parsing; all following tokens are literal prompt text.
|
|
94
100
|
*/
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
continue;
|
|
109
|
-
}
|
|
110
|
-
if (arg === '--trusted-host') {
|
|
111
|
-
while (args[i + 1] !== undefined && !args[i + 1].startsWith('-'))
|
|
112
|
-
i += 1;
|
|
113
|
-
continue;
|
|
114
|
-
}
|
|
115
|
-
if (arg.startsWith('--resume='))
|
|
116
|
-
continue;
|
|
117
|
-
if (arg.startsWith('-'))
|
|
118
|
-
continue;
|
|
119
|
-
promptArgs.push(arg);
|
|
120
|
-
}
|
|
121
|
-
return promptArgs.join(' ').trim();
|
|
101
|
+
/**
|
|
102
|
+
* 落地页 / 首启引导该不该在这次启动出现。
|
|
103
|
+
*
|
|
104
|
+
* 只看「用户有没有说要回到哪儿」:`--resume` 目标与首句都算他知道自己要去哪。
|
|
105
|
+
* **工作区目标不算**——`dst` 默认把 cwd 当工作区目标喂进来,算进去就等于在本机
|
|
106
|
+
* 最主流的启动方式下把这两个屏永久关掉(实测事故,见调用点的口径注释)。
|
|
107
|
+
*
|
|
108
|
+
* @param input.launchSessionId - 本次要恢复的会话(--resume / DSH_TUI_RESUME_SESSION)。
|
|
109
|
+
* @param input.initialPrompt - 命令行里带的首句提示词(无则空串)。
|
|
110
|
+
* @returns true 表示这次是「普通启动」。
|
|
111
|
+
*/
|
|
112
|
+
export function isLandingLaunch(input) {
|
|
113
|
+
return input.launchSessionId === undefined && input.initialPrompt === '';
|
|
122
114
|
}
|
|
123
115
|
export function resolveTuiHostMode(stdoutIsTTY = process.stdout.isTTY === true, env = process.env) {
|
|
124
116
|
if (stdoutIsTTY) {
|
|
@@ -384,6 +376,14 @@ export async function apply(ctx, runtimeConfig, configOwner = ctx) {
|
|
|
384
376
|
ctx.logger.warn('dsh-tui: tuiScenes service is not mounted; plugin scenes will never open. ' +
|
|
385
377
|
'The bundle patch is older than the installed dsh-tui package — update the globally installed dsh-tui launcher to match the profile (issue #183).');
|
|
386
378
|
}
|
|
379
|
+
// Same skew guard for the side-panel registry (dsh-tui-panels row): the
|
|
380
|
+
// tuiPanels runtime is what admits plugin panels into the PanelStore, so
|
|
381
|
+
// register() warns and returns undefined for every plugin when the row is
|
|
382
|
+
// absent — say why on profile launches.
|
|
383
|
+
if (ctx.get('tuiPanels') === undefined && resolveDshProfileName() !== undefined) {
|
|
384
|
+
ctx.logger.warn('dsh-tui: tuiPanels service is not mounted; plugin side panels will never register. ' +
|
|
385
|
+
'The bundle patch is older than the installed dsh-tui package — update the globally installed dsh-tui launcher to match the profile (issue #183).');
|
|
386
|
+
}
|
|
387
387
|
// Same skew guard for the plugin-UI services (dsh-tui-extensions row):
|
|
388
388
|
// managed dialogs park unanswered, status contributions never render,
|
|
389
389
|
// shortcuts never match, custom-entry renderers stay invisible, and runtime
|
|
@@ -471,6 +471,13 @@ export async function apply(ctx, runtimeConfig, configOwner = ctx) {
|
|
|
471
471
|
// (the runtime `/activity` command only changes the preset), so a hidden
|
|
472
472
|
// line attaches nothing at all — no feed, no 500ms tick.
|
|
473
473
|
const activityStore = createActivityStore(ctx, config.activity !== false);
|
|
474
|
+
// Read side of the token meter's `contextPressure` unit: the ONE occupancy
|
|
475
|
+
// source for the footer, the segmented bar, the status commands and the
|
|
476
|
+
// context-low warning. Created unconditionally (unlike the activity store,
|
|
477
|
+
// there is no config gate: hiding the bar must not make the warning or the
|
|
478
|
+
// footer read a stale sample). A composition without the meter leaves it
|
|
479
|
+
// empty and the channel falls back to the last-request sample.
|
|
480
|
+
const contextOccupancyStore = createContextOccupancyStore(ctx);
|
|
474
481
|
const rawChannel = createChannel(ctx, agent, {
|
|
475
482
|
// The namespace this boot actually registered the settings section under
|
|
476
483
|
// (the Config owner's Loader id; custom ids are supported). Chat and the
|
|
@@ -481,6 +488,10 @@ export async function apply(ctx, runtimeConfig, configOwner = ctx) {
|
|
|
481
488
|
// soon as this session binds so a resumed or reattached session renders its
|
|
482
489
|
// line immediately instead of waiting for the next event.
|
|
483
490
|
seedActivity: session => activityStore.seed(session),
|
|
491
|
+
// Same reason as the activity line: the occupancy projection only pushes on
|
|
492
|
+
// change, so a resumed session reads one baseline at bind time.
|
|
493
|
+
contextPressure: contextOccupancyStore,
|
|
494
|
+
seedContextOccupancy: session => contextOccupancyStore.seed(session),
|
|
484
495
|
// A RESUMED session keeps its persisted header cwd (issue #96 review):
|
|
485
496
|
// pre-upgrade sessions recorded the launch directory, and re-resolving
|
|
486
497
|
// from the current launch directory would split @ expansion / file
|
|
@@ -515,6 +526,7 @@ export async function apply(ctx, runtimeConfig, configOwner = ctx) {
|
|
|
515
526
|
// screen edits this key live through the dsh-tui namespace.
|
|
516
527
|
diffLayout: config.diffLayout,
|
|
517
528
|
thinkingFold: config.thinkingFold,
|
|
529
|
+
jobGroupFold: config.jobGroupFold,
|
|
518
530
|
toolBackground: config.toolBackground,
|
|
519
531
|
scrollGutter: config.scrollGutter,
|
|
520
532
|
pageMargin: config.pageMargin,
|
|
@@ -564,6 +576,15 @@ export async function apply(ctx, runtimeConfig, configOwner = ctx) {
|
|
|
564
576
|
// mermaid and LaTeX switches ride the same kind of store (Markdown is
|
|
565
577
|
// memoized by content, so no prop reaches the diagram/formula nodes).
|
|
566
578
|
applyPageMargin(config.pageMargin);
|
|
579
|
+
// Side panel (settings `dsh-tui.sidePanel.*`): same reason as pageMargin —
|
|
580
|
+
// the useSidePanel controller reads these module-level stores ABOVE the
|
|
581
|
+
// channel's version bump, so a Ctrl+B toggle re-renders Chat without any
|
|
582
|
+
// session change. applyDisplay below mirrors every settings edit into them.
|
|
583
|
+
applySidePanelSplitEnabled(config.sidePanel?.splitEnabled);
|
|
584
|
+
applySidePanelOpen(config.sidePanel?.open);
|
|
585
|
+
applySidePanelRatio(config.sidePanel?.ratio);
|
|
586
|
+
applySidePanelPanels(config.sidePanel?.panels);
|
|
587
|
+
applyCompanionSkin(config.companion?.skin);
|
|
567
588
|
applyMermaidDiagrams(config.mermaidDiagrams);
|
|
568
589
|
applyMathRendering(resolveMathRendering({}, config));
|
|
569
590
|
applyMathImageScale(config.mathImageScale ?? 'auto');
|
|
@@ -613,6 +634,7 @@ export async function apply(ctx, runtimeConfig, configOwner = ctx) {
|
|
|
613
634
|
const scope = createSettingsScope(configOwner, settingsCtx.settings, tuiSettingsNs, Schema.object({
|
|
614
635
|
diffLayout: Schema.union(['auto', 'split', 'unified']).default('auto'),
|
|
615
636
|
thinkingFold: Schema.union(['preview', 'full']).default('preview'),
|
|
637
|
+
jobGroupFold: Schema.union(['auto', 'always', 'never']).default('auto'),
|
|
616
638
|
toolBackground: Schema.union(['none', 'subtle', 'strong']).default('none'),
|
|
617
639
|
scrollGutter: Schema.union(['timeline', 'scrollbar', 'hidden']).default('timeline'),
|
|
618
640
|
// Preset names AND custom `NxM` specs (the settings field's parse
|
|
@@ -657,6 +679,7 @@ export async function apply(ctx, runtimeConfig, configOwner = ctx) {
|
|
|
657
679
|
contextUsage: Schema.boolean().default(DEFAULT_STATUS_BAR.contextUsage),
|
|
658
680
|
cache: Schema.boolean().default(DEFAULT_STATUS_BAR.cache),
|
|
659
681
|
tokens: Schema.boolean().default(DEFAULT_STATUS_BAR.tokens),
|
|
682
|
+
cost: Schema.boolean().default(DEFAULT_STATUS_BAR.cost),
|
|
660
683
|
tps: Schema.boolean().default(DEFAULT_STATUS_BAR.tps),
|
|
661
684
|
gitBranch: Schema.boolean().default(DEFAULT_STATUS_BAR.gitBranch),
|
|
662
685
|
sessionTitle: Schema.boolean().default(DEFAULT_STATUS_BAR.sessionTitle),
|
|
@@ -668,6 +691,22 @@ export async function apply(ctx, runtimeConfig, configOwner = ctx) {
|
|
|
668
691
|
trajectory: Schema.boolean().default(DEFAULT_STATUS_BAR.trajectory),
|
|
669
692
|
shortcutHint: Schema.boolean().default(DEFAULT_STATUS_BAR.shortcutHint),
|
|
670
693
|
}).default({ ...DEFAULT_STATUS_BAR }),
|
|
694
|
+
// Side-panel preferences. No schema defaults on purpose (same rule as
|
|
695
|
+
// foldTerminalCommand/expandEditor above): a default here would come
|
|
696
|
+
// back from scope.get()/watch() and shadow an explicit cordis.yml
|
|
697
|
+
// `sidePanel` block while the user layer is unset. applyDisplay
|
|
698
|
+
// resolves `?? config.sidePanel?.x` and the apply* stores normalize
|
|
699
|
+
// undefined to the documented defaults (true / false / 0.68 / the
|
|
700
|
+
// built-in panel trio).
|
|
701
|
+
sidePanel: Schema.object({
|
|
702
|
+
splitEnabled: Schema.boolean(),
|
|
703
|
+
open: Schema.boolean(),
|
|
704
|
+
ratio: Schema.number(),
|
|
705
|
+
panels: Schema.string(),
|
|
706
|
+
}),
|
|
707
|
+
companion: Schema.object({
|
|
708
|
+
skin: Schema.string(),
|
|
709
|
+
}),
|
|
671
710
|
// Header pixel whale art; on unless settings.yaml says otherwise.
|
|
672
711
|
whale: Schema.boolean().default(true),
|
|
673
712
|
// Idle whale behaviors after the intro settles; on by default —
|
|
@@ -762,6 +801,7 @@ export async function apply(ctx, runtimeConfig, configOwner = ctx) {
|
|
|
762
801
|
if (shadow)
|
|
763
802
|
return;
|
|
764
803
|
channel.setThinkingFold(value.thinkingFold ?? config.thinkingFold ?? 'preview');
|
|
804
|
+
channel.setJobGroupFold(normalizeJobGroupFold(value.jobGroupFold ?? config.jobGroupFold));
|
|
765
805
|
channel.setToolBackground(normalizeToolBackground(value.toolBackground ?? config.toolBackground));
|
|
766
806
|
channel.setScrollGutter(normalizeScrollGutter(value.scrollGutter ?? config.scrollGutter));
|
|
767
807
|
// Page margin: the channel carries the mode (tests observe it), the
|
|
@@ -780,6 +820,15 @@ export async function apply(ctx, runtimeConfig, configOwner = ctx) {
|
|
|
780
820
|
applyMathImageBacking(value.mathImageBacking ?? config.mathImageBacking ?? 'transparent');
|
|
781
821
|
applyImageBacking(value.imageBacking ?? config.imageBacking ?? 'transparent');
|
|
782
822
|
channel.setStatusBar(normalizeStatusBar(value.statusBar ?? config.statusBar));
|
|
823
|
+
// Side panel: no channel member — the layout owns module-level stores
|
|
824
|
+
// (they sit above the channel's version bump), so /settings writes them
|
|
825
|
+
// directly and useSidePanel's own subscriptions re-lay out at once. An
|
|
826
|
+
// unset user layer falls back to cordis.yml, then to the store default.
|
|
827
|
+
applySidePanelSplitEnabled(value.sidePanel?.splitEnabled ?? config.sidePanel?.splitEnabled);
|
|
828
|
+
applySidePanelOpen(value.sidePanel?.open ?? config.sidePanel?.open);
|
|
829
|
+
applySidePanelRatio(value.sidePanel?.ratio ?? config.sidePanel?.ratio);
|
|
830
|
+
applySidePanelPanels(value.sidePanel?.panels ?? config.sidePanel?.panels);
|
|
831
|
+
applyCompanionSkin(value.companion?.skin ?? config.companion?.skin);
|
|
783
832
|
};
|
|
784
833
|
// Legacy user scopes layer over cordis.yml. Modern Config is already
|
|
785
834
|
// resolved: an unset action must not revive its startup override.
|
|
@@ -953,6 +1002,9 @@ export async function apply(ctx, runtimeConfig, configOwner = ctx) {
|
|
|
953
1002
|
{
|
|
954
1003
|
...settingField('thinkingFold'),
|
|
955
1004
|
},
|
|
1005
|
+
{
|
|
1006
|
+
...settingField('jobGroupFold'),
|
|
1007
|
+
},
|
|
956
1008
|
{
|
|
957
1009
|
...settingField('toolBackground'),
|
|
958
1010
|
},
|
|
@@ -1093,6 +1145,66 @@ export async function apply(ctx, runtimeConfig, configOwner = ctx) {
|
|
|
1093
1145
|
{
|
|
1094
1146
|
...settingField('statusBar.shortcutHint'),
|
|
1095
1147
|
},
|
|
1148
|
+
{
|
|
1149
|
+
...settingField('sidePanel.splitEnabled'),
|
|
1150
|
+
format(value) {
|
|
1151
|
+
// Unset in the user layer: the effective default is on.
|
|
1152
|
+
return String(typeof value === 'boolean' ? value : config.sidePanel?.splitEnabled !== false);
|
|
1153
|
+
},
|
|
1154
|
+
},
|
|
1155
|
+
{
|
|
1156
|
+
...settingField('sidePanel.open'),
|
|
1157
|
+
format(value) {
|
|
1158
|
+
// Unset in the user layer: the effective default is off.
|
|
1159
|
+
return String(typeof value === 'boolean' ? value : config.sidePanel?.open === true);
|
|
1160
|
+
},
|
|
1161
|
+
},
|
|
1162
|
+
{
|
|
1163
|
+
...settingField('sidePanel.ratio'),
|
|
1164
|
+
placeholder: '0.68',
|
|
1165
|
+
format(value) {
|
|
1166
|
+
// Unset in the user layer: show the effective fraction.
|
|
1167
|
+
const ratio = typeof value === 'number' && Number.isFinite(value) ? value : config.sidePanel?.ratio;
|
|
1168
|
+
return String(ratio ?? 0.68);
|
|
1169
|
+
},
|
|
1170
|
+
parse(text) {
|
|
1171
|
+
const draft = text.trim();
|
|
1172
|
+
if (draft === '')
|
|
1173
|
+
return { kind: 'clear' };
|
|
1174
|
+
const ratio = Number(draft);
|
|
1175
|
+
// Range gate mirrors the geometry contract (0.1–0.95): an
|
|
1176
|
+
// out-of-range draft would be silently clamped by the store, so
|
|
1177
|
+
// refuse it and let the editor keep the error badge instead.
|
|
1178
|
+
if (!Number.isFinite(ratio) || ratio < 0.1 || ratio > 0.95)
|
|
1179
|
+
return undefined;
|
|
1180
|
+
return { kind: 'set', value: ratio };
|
|
1181
|
+
},
|
|
1182
|
+
},
|
|
1183
|
+
{
|
|
1184
|
+
...settingField('sidePanel.panels'),
|
|
1185
|
+
placeholder: DEFAULT_SIDE_PANEL_IDS,
|
|
1186
|
+
format(value) {
|
|
1187
|
+
// Unset in the user layer: show the effective list.
|
|
1188
|
+
return typeof value === 'string' && value.trim() !== ''
|
|
1189
|
+
? value
|
|
1190
|
+
: config.sidePanel?.panels ?? DEFAULT_SIDE_PANEL_IDS;
|
|
1191
|
+
},
|
|
1192
|
+
parse(text) {
|
|
1193
|
+
const draft = text.trim();
|
|
1194
|
+
if (draft === '')
|
|
1195
|
+
return { kind: 'clear' };
|
|
1196
|
+
// Strict gate: every token must be a well-formed panel id. The
|
|
1197
|
+
// store would drop a typo silently, so a draft that does not
|
|
1198
|
+
// round-trip is refused instead of saved as something else.
|
|
1199
|
+
const tokens = draft.split(',').map(token => token.trim().toLowerCase()).filter(token => token !== '');
|
|
1200
|
+
if (tokens.length === 0 || tokens.some(token => !SIDE_PANEL_ID_PATTERN.test(token)))
|
|
1201
|
+
return undefined;
|
|
1202
|
+
return { kind: 'set', value: normalizeSidePanelPanels(draft) };
|
|
1203
|
+
},
|
|
1204
|
+
},
|
|
1205
|
+
{
|
|
1206
|
+
...settingField('companion.skin'),
|
|
1207
|
+
},
|
|
1096
1208
|
{
|
|
1097
1209
|
...settingField('whale'),
|
|
1098
1210
|
},
|
|
@@ -1328,10 +1440,33 @@ export async function apply(ctx, runtimeConfig, configOwner = ctx) {
|
|
|
1328
1440
|
* so a process that dies before the first frame does not consume it.
|
|
1329
1441
|
*/
|
|
1330
1442
|
const homeSeen = readHomePrefs().seen === true;
|
|
1331
|
-
|
|
1332
|
-
|
|
1333
|
-
|
|
1334
|
-
|
|
1443
|
+
/**
|
|
1444
|
+
* 「普通启动」在这里有两档口径,差在**工作区目标算不算**:
|
|
1445
|
+
*
|
|
1446
|
+
* - 落地页与首启引导只认「没说要回到哪儿」:没有 resume 目标、没有首句。
|
|
1447
|
+
* - home(会话与工作区)还多认一条「没说在哪儿干活」——那一屏问的就是这个。
|
|
1448
|
+
*
|
|
1449
|
+
* 工作区目标**不能**进前者的判定:`dst` 那类 launcher 默认把 cwd 当工作区
|
|
1450
|
+
* 目标喂进来(D:/node/dst.cmd 里 set DSH_TUI_WORKSPACE_TARGET=%CD%),一旦
|
|
1451
|
+
* 算进去,落地页在本机最主流的启动方式下**永远不出**——用户实测「既没看到
|
|
1452
|
+
* ob 也没看到 lp」的根因就是这一条。
|
|
1453
|
+
*/
|
|
1454
|
+
const noResume = isLandingLaunch({ launchSessionId, initialPrompt });
|
|
1455
|
+
const openHomeOnBoot = !homeSeen && noResume && requestedWorkspace === undefined;
|
|
1456
|
+
/**
|
|
1457
|
+
* The launchpad is NOT one-shot the way the workspace home is: every
|
|
1458
|
+
* ordinary launch starts on it, because it is where the first sentence gets
|
|
1459
|
+
* typed rather than a tutorial that retires itself. `DSH_TUI_NO_LAUNCHPAD=1`
|
|
1460
|
+
* is the escape hatch (an automation that wants the old blank conversation
|
|
1461
|
+
* and no dialog in front of it).
|
|
1462
|
+
*/
|
|
1463
|
+
const launchpadOnBoot = noResume && process.env.DSH_TUI_NO_LAUNCHPAD !== '1';
|
|
1464
|
+
/**
|
|
1465
|
+
* The first-run guide. Gated on its own preference (not on `homeSeen`): the
|
|
1466
|
+
* two answer different questions, and an install that already knows its
|
|
1467
|
+
* workspace may still never have configured a key.
|
|
1468
|
+
*/
|
|
1469
|
+
const onboardingOnBoot = noResume && shouldOfferOnboarding();
|
|
1335
1470
|
const chat = React.createElement(Chat, {
|
|
1336
1471
|
channel,
|
|
1337
1472
|
renderScene: createChannelSceneOutlet(() => rawChannel.pluginScene),
|
|
@@ -1339,6 +1474,8 @@ export async function apply(ctx, runtimeConfig, configOwner = ctx) {
|
|
|
1339
1474
|
approvalStore,
|
|
1340
1475
|
injectControllerRef,
|
|
1341
1476
|
openHomeOnBoot,
|
|
1477
|
+
launchpadOnBoot,
|
|
1478
|
+
onboardingOnBoot,
|
|
1342
1479
|
// The dsh-tui-extensions row's services (managed dialogs, status line,
|
|
1343
1480
|
// shortcuts). Soft-consumed: absent the row (stale patch, bare embed),
|
|
1344
1481
|
// Chat falls back to inert stores and no shortcut registry.
|
|
@@ -79,12 +79,32 @@ export declare function runningPresetOf(session: unknown): string | undefined;
|
|
|
79
79
|
*/
|
|
80
80
|
export declare function resolvePersistedRoute(ctx: Context, sessionId: SessionId): Promise<ModelRoute | undefined>;
|
|
81
81
|
/**
|
|
82
|
-
*
|
|
83
|
-
*
|
|
84
|
-
*
|
|
85
|
-
*
|
|
86
|
-
*
|
|
87
|
-
*
|
|
82
|
+
* Whether the host-layer `ask_user_question` tool must stay invisible to one
|
|
83
|
+
* preset's model-facing catalog.
|
|
84
|
+
*
|
|
85
|
+
* The official Minimal preset is a single-persistent-shell trajectory
|
|
86
|
+
* (`@deepseek-ai/dsh-web-app/presets/minimal.patch.yml`: `persona` +
|
|
87
|
+
* `persistent-shell`, i.e. bash on POSIX / pwsh on Windows — `str_replace_editor`
|
|
88
|
+
* has been opt-in since 0.1.3-alpha.2), while the TUI mounts
|
|
89
|
+
* ask_user_question at the HOST layer so every other preset (including user
|
|
90
|
+
* presets) can use its questionnaire UI; that host-layer tool otherwise merges
|
|
91
|
+
* into Minimal's scoped catalog as an extra tool.
|
|
92
|
+
*
|
|
93
|
+
* The recorded preset id is the only signal available at the assembly
|
|
94
|
+
* boundary: the composition exposes no per-tool manifest, and a host tool's
|
|
95
|
+
* presence in the tool registry cannot tell whether a preset declared it. This
|
|
96
|
+
* is therefore the ONE preset-id read in the capability path, shared with
|
|
97
|
+
* `resolveAgentCapabilities` so advertisement and assembly agree, and pinned
|
|
98
|
+
* by `verify:minimal-preset-tools`.
|
|
99
|
+
*
|
|
100
|
+
* @param presetId - Preset recorded for the requesting session.
|
|
101
|
+
* @returns True when the host-layer tool must be filtered out of the assembly.
|
|
102
|
+
*/
|
|
103
|
+
export declare function presetHidesHostAskTool(presetId: string | undefined): boolean;
|
|
104
|
+
/**
|
|
105
|
+
* Keep the official Minimal preset's model-facing catalog minimal: it declares
|
|
106
|
+
* exactly one persistent shell tool, and the host-mounted ask_user_question
|
|
107
|
+
* must not become a second one.
|
|
88
108
|
*
|
|
89
109
|
* This is a per-assembly filter rather than a startup-time decision because
|
|
90
110
|
* one TUI process can resume, create, or recompose sessions under different
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"presets.d.ts","sourceRoot":"","sources":["../../../src/dsh-adapter/presets.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AACxD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAA;AACzD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAA;AACpE,OAAO,EAAsB,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAWtE,kEAAkE;AAClE,MAAM,WAAW,iBAAiB;IAChC,kFAAkF;IAClF,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;IAC7B,yEAAyE;IACzE,QAAQ,CAAC,KAAK,CAAC,EAAE,UAAU,CAAA;CAC5B;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,aAAa,CAAC,GAAG,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAmBhG;AAED;;;;;;;;;GASG;AACH,wBAAsB,sBAAsB,CAAC,GAAG,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAW5G;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAGpE;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,qBAAqB,CAAC,GAAG,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC,CAW/G;AAED
|
|
1
|
+
{"version":3,"file":"presets.d.ts","sourceRoot":"","sources":["../../../src/dsh-adapter/presets.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AACxD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAA;AACzD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAA;AACpE,OAAO,EAAsB,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAWtE,kEAAkE;AAClE,MAAM,WAAW,iBAAiB;IAChC,kFAAkF;IAClF,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;IAC7B,yEAAyE;IACzE,QAAQ,CAAC,KAAK,CAAC,EAAE,UAAU,CAAA;CAC5B;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,aAAa,CAAC,GAAG,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAmBhG;AAED;;;;;;;;;GASG;AACH,wBAAsB,sBAAsB,CAAC,GAAG,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAW5G;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAGpE;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,qBAAqB,CAAC,GAAG,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC,CAW/G;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAE5E;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,cAAc,CAM/G;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE;IAAE,GAAG,EAAE,OAAO,CAAA;CAAE,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS,CAKpG"}
|
|
@@ -120,12 +120,34 @@ export async function resolvePersistedRoute(ctx, sessionId) {
|
|
|
120
120
|
}
|
|
121
121
|
}
|
|
122
122
|
/**
|
|
123
|
-
*
|
|
124
|
-
*
|
|
125
|
-
*
|
|
126
|
-
*
|
|
127
|
-
*
|
|
128
|
-
*
|
|
123
|
+
* Whether the host-layer `ask_user_question` tool must stay invisible to one
|
|
124
|
+
* preset's model-facing catalog.
|
|
125
|
+
*
|
|
126
|
+
* The official Minimal preset is a single-persistent-shell trajectory
|
|
127
|
+
* (`@deepseek-ai/dsh-web-app/presets/minimal.patch.yml`: `persona` +
|
|
128
|
+
* `persistent-shell`, i.e. bash on POSIX / pwsh on Windows — `str_replace_editor`
|
|
129
|
+
* has been opt-in since 0.1.3-alpha.2), while the TUI mounts
|
|
130
|
+
* ask_user_question at the HOST layer so every other preset (including user
|
|
131
|
+
* presets) can use its questionnaire UI; that host-layer tool otherwise merges
|
|
132
|
+
* into Minimal's scoped catalog as an extra tool.
|
|
133
|
+
*
|
|
134
|
+
* The recorded preset id is the only signal available at the assembly
|
|
135
|
+
* boundary: the composition exposes no per-tool manifest, and a host tool's
|
|
136
|
+
* presence in the tool registry cannot tell whether a preset declared it. This
|
|
137
|
+
* is therefore the ONE preset-id read in the capability path, shared with
|
|
138
|
+
* `resolveAgentCapabilities` so advertisement and assembly agree, and pinned
|
|
139
|
+
* by `verify:minimal-preset-tools`.
|
|
140
|
+
*
|
|
141
|
+
* @param presetId - Preset recorded for the requesting session.
|
|
142
|
+
* @returns True when the host-layer tool must be filtered out of the assembly.
|
|
143
|
+
*/
|
|
144
|
+
export function presetHidesHostAskTool(presetId) {
|
|
145
|
+
return presetId === 'minimal';
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Keep the official Minimal preset's model-facing catalog minimal: it declares
|
|
149
|
+
* exactly one persistent shell tool, and the host-mounted ask_user_question
|
|
150
|
+
* must not become a second one.
|
|
129
151
|
*
|
|
130
152
|
* This is a per-assembly filter rather than a startup-time decision because
|
|
131
153
|
* one TUI process can resume, create, or recompose sessions under different
|
|
@@ -136,7 +158,7 @@ export async function resolvePersistedRoute(ctx, sessionId) {
|
|
|
136
158
|
* @returns The original assembly, except ask_user_question is absent in Minimal.
|
|
137
159
|
*/
|
|
138
160
|
export function filterMinimalPresetTools(assembly, presetId) {
|
|
139
|
-
if (presetId
|
|
161
|
+
if (!presetHidesHostAskTool(presetId) || !assembly.tools.some(tool => tool.name === ASK_USER_TOOL))
|
|
140
162
|
return assembly;
|
|
141
163
|
return {
|
|
142
164
|
...assembly,
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Extract the startup prompt from raw app argv, excluding session selectors
|
|
3
|
+
* and Web startup flag values. `--trusted-host` consumes multiple authorities
|
|
4
|
+
* up to the next flag; none of them are prompt text (issue #882). An app-level
|
|
5
|
+
* `--` ends flag parsing; all following tokens are literal prompt text.
|
|
6
|
+
*/
|
|
7
|
+
export declare function initialPromptFromCmdlineArgs(args: readonly string[] | undefined): string;
|
|
8
|
+
//# sourceMappingURL=startup-args.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"startup-args.d.ts","sourceRoot":"","sources":["../../../src/dsh-adapter/startup-args.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,wBAAgB,4BAA4B,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,GAAG,MAAM,CAsBxF"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Extract the startup prompt from raw app argv, excluding session selectors
|
|
3
|
+
* and Web startup flag values. `--trusted-host` consumes multiple authorities
|
|
4
|
+
* up to the next flag; none of them are prompt text (issue #882). An app-level
|
|
5
|
+
* `--` ends flag parsing; all following tokens are literal prompt text.
|
|
6
|
+
*/
|
|
7
|
+
export function initialPromptFromCmdlineArgs(args) {
|
|
8
|
+
if (args === undefined)
|
|
9
|
+
return '';
|
|
10
|
+
const promptArgs = [];
|
|
11
|
+
for (let i = 0; i < args.length; i += 1) {
|
|
12
|
+
const arg = args[i];
|
|
13
|
+
if (arg === '--') {
|
|
14
|
+
promptArgs.push(...args.slice(i + 1));
|
|
15
|
+
break;
|
|
16
|
+
}
|
|
17
|
+
if (arg === '--resume' || arg === '--host' || arg === '--port') {
|
|
18
|
+
if (args[i + 1] !== undefined && !args[i + 1].startsWith('-'))
|
|
19
|
+
i += 1;
|
|
20
|
+
continue;
|
|
21
|
+
}
|
|
22
|
+
if (arg === '--trusted-host') {
|
|
23
|
+
while (args[i + 1] !== undefined && !args[i + 1].startsWith('-'))
|
|
24
|
+
i += 1;
|
|
25
|
+
continue;
|
|
26
|
+
}
|
|
27
|
+
if (arg.startsWith('--resume='))
|
|
28
|
+
continue;
|
|
29
|
+
if (arg.startsWith('-'))
|
|
30
|
+
continue;
|
|
31
|
+
promptArgs.push(arg);
|
|
32
|
+
}
|
|
33
|
+
return promptArgs.join(' ').trim();
|
|
34
|
+
}
|
package/lib/types/history.d.ts
CHANGED
|
@@ -3,32 +3,49 @@ export type HistoryEntry = {
|
|
|
3
3
|
text: string;
|
|
4
4
|
/** Unix ms timestamp. */
|
|
5
5
|
ts: number;
|
|
6
|
+
/**
|
|
7
|
+
* Normalized workspace cwd the input was submitted in. Absent on entries
|
|
8
|
+
* written before history became project-scoped; those legacy entries stay
|
|
9
|
+
* visible in every project until that project's own entries push them out
|
|
10
|
+
* of the `HISTORY_LIMIT` window.
|
|
11
|
+
*/
|
|
12
|
+
project?: string;
|
|
6
13
|
};
|
|
7
14
|
/**
|
|
8
|
-
*
|
|
9
|
-
*
|
|
15
|
+
* Per-project entry cap. `↑`/`↓` and the Ctrl+R overlay read the same file,
|
|
16
|
+
* so both depths come from this one number.
|
|
10
17
|
*/
|
|
11
18
|
export declare const HISTORY_LIMIT = 200;
|
|
12
19
|
/**
|
|
13
|
-
*
|
|
14
|
-
*
|
|
20
|
+
* Project key for a workspace cwd: absolute, forward slashes, no trailing
|
|
21
|
+
* slash, case-folded on Windows (whose filesystem is case-insensitive).
|
|
22
|
+
* @param cwd - Workspace cwd; blank means unscoped.
|
|
23
|
+
* @returns The normalized key, or `undefined` when unscoped.
|
|
24
|
+
*/
|
|
25
|
+
export declare function historyProjectKey(cwd: string | undefined): string | undefined;
|
|
26
|
+
/**
|
|
27
|
+
* Append an input to the persisted history, deduping the project's
|
|
28
|
+
* immediately previous entry and capping each project at `HISTORY_LIMIT`.
|
|
15
29
|
* @param text - Input to persist; blank inputs are ignored.
|
|
30
|
+
* @param cwd - Workspace cwd the input belongs to; omitted = unscoped.
|
|
16
31
|
* @returns Resolves once this entry is persisted; callers on the input path
|
|
17
32
|
* intentionally discard it because persistence is best-effort.
|
|
18
33
|
*/
|
|
19
|
-
export declare function appendHistory(text: string): Promise<void>;
|
|
34
|
+
export declare function appendHistory(text: string, cwd?: string): Promise<void>;
|
|
20
35
|
/**
|
|
21
36
|
* Read the persisted history, newest first.
|
|
37
|
+
* @param cwd - Workspace cwd to scope to; omitted = every project.
|
|
22
38
|
* @returns The persisted entries in reverse-chronological order.
|
|
23
39
|
*/
|
|
24
|
-
export declare function loadHistory(): HistoryEntry[];
|
|
40
|
+
export declare function loadHistory(cwd?: string): HistoryEntry[];
|
|
25
41
|
/**
|
|
26
42
|
* Read the persisted history in the order the composer walks it: oldest
|
|
27
43
|
* first, so `↑` reaches the newest entry first (the list tail) exactly as it
|
|
28
44
|
* does for the entries this process pushed itself.
|
|
45
|
+
* @param cwd - Workspace cwd to scope to; omitted = every project.
|
|
29
46
|
* @returns The persisted entries in chronological order.
|
|
30
47
|
*/
|
|
31
|
-
export declare function loadHistoryOldestFirst(): HistoryEntry[];
|
|
48
|
+
export declare function loadHistoryOldestFirst(cwd?: string): HistoryEntry[];
|
|
32
49
|
/**
|
|
33
50
|
* Stable id for a history entry (keeps React keys distinct across identical texts).
|
|
34
51
|
* @param entry - The history entry to hash.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"history.d.ts","sourceRoot":"","sources":["../../src/history.ts"],"names":[],"mappings":"AAWA,yCAAyC;AACzC,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,EAAE,MAAM,CAAA;IACZ,yBAAyB;IACzB,EAAE,EAAE,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"history.d.ts","sourceRoot":"","sources":["../../src/history.ts"],"names":[],"mappings":"AAWA,yCAAyC;AACzC,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,EAAE,MAAM,CAAA;IACZ,yBAAyB;IACzB,EAAE,EAAE,MAAM,CAAA;IACV;;;;;OAKG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,aAAa,MAAM,CAAA;AA+ChC;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAI7E;AA6GD;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CASvE;AAWD;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,YAAY,EAAE,CAExD;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,YAAY,EAAE,CAEnE;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,YAAY,EAAE,KAAK,SAAI,GAAG,MAAM,CAErE"}
|