@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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sixel-codec.d.ts","sourceRoot":"","sources":["../../../src/ink/sixel-codec.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"sixel-codec.d.ts","sourceRoot":"","sources":["../../../src/ink/sixel-codec.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAA;AAmB9D;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAKhF;AAED;2CAC2C;AAC3C,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAEnE;AAED,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CACxB;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,MAAM,EAAE,mBAAmB,CAAA;IACpC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB;;;;OAIG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAA;IAC5B;;;;OAIG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAA;IAC9B,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,GAAG,YAAY,CAAA;IAChD,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,CAAA;CAC1B;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,kBAAkB,EAAE,QAAQ,CAAC,GAAG;QAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,mBAAmB,CAAA;KAAE,CAAA;CACjG;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAA;IAC7B,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAA;IAC1B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,EAAE,CAAA;IAChC,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAA;CAC7B;AASD,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CACtB;AAED,8EAA8E;AAC9E,wBAAsB,WAAW,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,WAAW,CAAC,CAEnF;AAkGD,qFAAqF;AACrF,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAmC;IAC1D,OAAO,CAAC,KAAK,CAAI;IAEX,MAAM,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,kBAAkB,GAAG,OAAO,CAAC,mBAAmB,CAAC;CAoBtF"}
|
|
@@ -3,12 +3,39 @@ import { loadSharp } from '../dsh-adapter/sharp.js';
|
|
|
3
3
|
import { isTerminalImageSource, TERMINAL_IMAGE_MAX_EDGE, TERMINAL_IMAGE_MAX_BYTES, TERMINAL_IMAGE_PREVIEW_MAX_EDGE, TERMINAL_IMAGE_PREVIEW_MAX_BYTES, SIXEL_MAX_ENCODED_BYTES, SIXEL_CACHE_BYTES, SIXEL_CACHE_ENTRIES } from './terminal-image.js';
|
|
4
4
|
/**
|
|
5
5
|
* Coverage a transparent raster needs before a pixel is painted. Sixel alpha
|
|
6
|
-
* is binary
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
6
|
+
* is binary, so this encoder promotes coverage to a hard mask — with an
|
|
7
|
+
* ordered dither for the intermediate band: coverage below 25% never paints,
|
|
8
|
+
* 62.5%+ always paints, and the band between checkers over a 2×2 Bayer matrix
|
|
9
|
+
* so the eye averages it into apparent translucency (soft anti-aliased edges
|
|
10
|
+
* instead of a hard 25% cutoff). Pure 1-bit sources (alpha only 0/255) get
|
|
11
|
+
* exactly the old single-threshold mask: 255 always painted, 0 never did.
|
|
10
12
|
*/
|
|
11
13
|
const TRANSPARENT_COVERAGE_THRESHOLD = 64;
|
|
14
|
+
/** 2×2 Bayer matrix (values 0..3) for ordered dithering of the coverage band. */
|
|
15
|
+
const BAYER_2X2 = [[0, 2], [3, 1]];
|
|
16
|
+
/** Dither band: thresholds 25% / 37.5% / 50% / 62.5% at the four matrix cells. */
|
|
17
|
+
const DITHER_BASE = 0.25;
|
|
18
|
+
const DITHER_STEP = 0.125;
|
|
19
|
+
/**
|
|
20
|
+
* Paint decision for one transparent-raster pixel: 0.25·255 = 63.75 keeps the
|
|
21
|
+
* historical "below 25% never paints" bias, 160 (= 62.5%·255 + 1) makes
|
|
22
|
+
* everything above the band solid (≥75% always paints by contract), and the
|
|
23
|
+
* band between resolves by position so constant mid coverage alternates in a
|
|
24
|
+
* checkerboard. Exported for the mask regression (gradient/const fills).
|
|
25
|
+
*/
|
|
26
|
+
export function sixelCoveragePaints(alpha, x, y) {
|
|
27
|
+
if (alpha >= 160)
|
|
28
|
+
return true;
|
|
29
|
+
if (alpha < TRANSPARENT_COVERAGE_THRESHOLD)
|
|
30
|
+
return false;
|
|
31
|
+
const bayer = BAYER_2X2[y & 1][x & 1];
|
|
32
|
+
return alpha > (DITHER_BASE + bayer * DITHER_STEP) * 255;
|
|
33
|
+
}
|
|
34
|
+
/** The pre-dither decision (single 25% threshold), kept for the mask
|
|
35
|
+
* regression's before/after comparison. */
|
|
36
|
+
export function sixelCoveragePaintsThreshold(alpha) {
|
|
37
|
+
return alpha >= TRANSPARENT_COVERAGE_THRESHOLD;
|
|
38
|
+
}
|
|
12
39
|
/** CPU-heavy work: called in the image worker, never in the frame painter. */
|
|
13
40
|
export async function encodeSixel(request) {
|
|
14
41
|
return encodeRegion(await prepareSixel(request), request.crop);
|
|
@@ -63,10 +90,17 @@ async function prepareSixel(request) {
|
|
|
63
90
|
if (data.byteLength !== width * height * 4)
|
|
64
91
|
throw new Error('Invalid quantized raster size');
|
|
65
92
|
if (transparent) {
|
|
66
|
-
// Binary ink
|
|
67
|
-
// transparent,
|
|
68
|
-
|
|
69
|
-
|
|
93
|
+
// Binary ink with an ordered-dithered coverage band (see
|
|
94
|
+
// sixelCoveragePaints): <25% transparent, ≥62.5% solid, in between by
|
|
95
|
+
// 2×2 Bayer position. Only sources that actually carry intermediate
|
|
96
|
+
// alpha change their mask; pure 0/255 rasters are byte-identical to the
|
|
97
|
+
// old single-threshold promotion.
|
|
98
|
+
let index = 3;
|
|
99
|
+
for (let y = 0; y < height; y += 1) {
|
|
100
|
+
for (let x = 0; x < width; x += 1) {
|
|
101
|
+
data[index] = sixelCoveragePaints(data[index], x, y) ? 255 : 0;
|
|
102
|
+
index += 4;
|
|
103
|
+
}
|
|
70
104
|
}
|
|
71
105
|
}
|
|
72
106
|
const palette = new Set();
|
|
@@ -28,6 +28,11 @@ export type TerminalQuery<T extends TerminalResponse = TerminalResponse> = {
|
|
|
28
28
|
request: string;
|
|
29
29
|
/** Recognizes the expected response in the inbound stream */
|
|
30
30
|
match: (r: TerminalResponse) => r is T;
|
|
31
|
+
/** The response type this query can be answered by, declared separately
|
|
32
|
+
* from `match` (a predicate cannot be introspected). The input parser
|
|
33
|
+
* reads it through {@link TerminalQuerier.pendingResponseTypes} to bind
|
|
34
|
+
* an ambiguous reply tail to the queries actually awaiting an answer. */
|
|
35
|
+
responseType: TerminalResponse['type'];
|
|
31
36
|
};
|
|
32
37
|
type DecrpmResponse = Extract<TerminalResponse, {
|
|
33
38
|
type: 'decrpm';
|
|
@@ -139,6 +144,26 @@ export declare class TerminalQuerier {
|
|
|
139
144
|
constructor(stdout: NodeJS.WriteStream, setRawMode?: ((enabled: boolean) => void) | undefined);
|
|
140
145
|
/** Whether terminal query I/O is paused for an external process handoff. */
|
|
141
146
|
get isSuspended(): boolean;
|
|
147
|
+
/**
|
|
148
|
+
* In-flight evidence for the input parser (read-only observation): true
|
|
149
|
+
* while at least one query or flush sentinel is still waiting for its
|
|
150
|
+
* reply. Purely observational — queue semantics are untouched.
|
|
151
|
+
*/
|
|
152
|
+
get hasPending(): boolean;
|
|
153
|
+
/**
|
|
154
|
+
* In-flight evidence for the input parser (read-only observation): the
|
|
155
|
+
* response types of the queries still awaiting a reply, plus `da1` when a
|
|
156
|
+
* flush() sentinel is still open (DA1 is the reply that resolves it).
|
|
157
|
+
*
|
|
158
|
+
* This is bound to the query lifecycle on purpose. A boolean "something
|
|
159
|
+
* was sent recently" lets any recent query authorize a claim for bytes
|
|
160
|
+
* that may belong to no query at all, so the parser receives the expected
|
|
161
|
+
* types instead: a reply tail is only claimed when its shape can complete
|
|
162
|
+
* into one of them, and a query resolved by a sentinel stops counting the
|
|
163
|
+
* moment its promise settles. Purely observational — queue semantics are
|
|
164
|
+
* untouched.
|
|
165
|
+
*/
|
|
166
|
+
get pendingResponseTypes(): ReadonlySet<TerminalResponse['type']>;
|
|
142
167
|
private holdRawMode;
|
|
143
168
|
/**
|
|
144
169
|
* Send a query and wait for its response.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"terminal-querier.d.ts","sourceRoot":"","sources":["../../../src/ink/terminal-querier.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AAI3D;;4CAE4C;AAC5C,MAAM,MAAM,aAAa,CAAC,CAAC,SAAS,gBAAgB,GAAG,gBAAgB,IAAI;IACzE,yCAAyC;IACzC,OAAO,EAAE,MAAM,CAAA;IACf,6DAA6D;IAC7D,KAAK,EAAE,CAAC,CAAC,EAAE,gBAAgB,KAAK,CAAC,IAAI,CAAC,CAAA;CACvC,CAAA;AAED,KAAK,cAAc,GAAG,OAAO,CAAC,gBAAgB,EAAE;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,CAAC,CAAA;AACnE,KAAK,WAAW,GAAG,OAAO,CAAC,gBAAgB,EAAE;IAAE,IAAI,EAAE,KAAK,CAAA;CAAE,CAAC,CAAA;AAC7D,KAAK,WAAW,GAAG,OAAO,CAAC,gBAAgB,EAAE;IAAE,IAAI,EAAE,KAAK,CAAA;CAAE,CAAC,CAAA;AAC7D,KAAK,aAAa,GAAG,OAAO,CAAC,gBAAgB,EAAE;IAAE,IAAI,EAAE,eAAe,CAAA;CAAE,CAAC,CAAA;AACzE,KAAK,qBAAqB,GAAG,OAAO,CAAC,gBAAgB,EAAE;IAAE,IAAI,EAAE,eAAe,CAAA;CAAE,CAAC,CAAA;AACjF,KAAK,yBAAyB,GAAG,OAAO,CACtC,gBAAgB,EAChB;IAAE,IAAI,EAAE,mBAAmB,CAAA;CAAE,CAC9B,CAAA;AACD,KAAK,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,EAAE;IAAE,IAAI,EAAE,gBAAgB,CAAA;CAAE,CAAC,CAAA;AAC9E,KAAK,WAAW,GAAG,OAAO,CAAC,gBAAgB,EAAE;IAAE,IAAI,EAAE,KAAK,CAAA;CAAE,CAAC,CAAA;AAC7D,KAAK,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,EAAE;IAAE,IAAI,EAAE,WAAW,CAAA;CAAE,CAAC,CAAA;AAIzE;;;;;GAKG;AACH,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,CAAC,cAAc,CAAC,
|
|
1
|
+
{"version":3,"file":"terminal-querier.d.ts","sourceRoot":"","sources":["../../../src/ink/terminal-querier.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AAI3D;;4CAE4C;AAC5C,MAAM,MAAM,aAAa,CAAC,CAAC,SAAS,gBAAgB,GAAG,gBAAgB,IAAI;IACzE,yCAAyC;IACzC,OAAO,EAAE,MAAM,CAAA;IACf,6DAA6D;IAC7D,KAAK,EAAE,CAAC,CAAC,EAAE,gBAAgB,KAAK,CAAC,IAAI,CAAC,CAAA;IACtC;;;8EAG0E;IAC1E,YAAY,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAA;CACvC,CAAA;AAED,KAAK,cAAc,GAAG,OAAO,CAAC,gBAAgB,EAAE;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,CAAC,CAAA;AACnE,KAAK,WAAW,GAAG,OAAO,CAAC,gBAAgB,EAAE;IAAE,IAAI,EAAE,KAAK,CAAA;CAAE,CAAC,CAAA;AAC7D,KAAK,WAAW,GAAG,OAAO,CAAC,gBAAgB,EAAE;IAAE,IAAI,EAAE,KAAK,CAAA;CAAE,CAAC,CAAA;AAC7D,KAAK,aAAa,GAAG,OAAO,CAAC,gBAAgB,EAAE;IAAE,IAAI,EAAE,eAAe,CAAA;CAAE,CAAC,CAAA;AACzE,KAAK,qBAAqB,GAAG,OAAO,CAAC,gBAAgB,EAAE;IAAE,IAAI,EAAE,eAAe,CAAA;CAAE,CAAC,CAAA;AACjF,KAAK,yBAAyB,GAAG,OAAO,CACtC,gBAAgB,EAChB;IAAE,IAAI,EAAE,mBAAmB,CAAA;CAAE,CAC9B,CAAA;AACD,KAAK,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,EAAE;IAAE,IAAI,EAAE,gBAAgB,CAAA;CAAE,CAAC,CAAA;AAC9E,KAAK,WAAW,GAAG,OAAO,CAAC,gBAAgB,EAAE;IAAE,IAAI,EAAE,KAAK,CAAA;CAAE,CAAC,CAAA;AAC7D,KAAK,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,EAAE;IAAE,IAAI,EAAE,WAAW,CAAA;CAAE,CAAC,CAAA;AAIzE;;;;;GAKG;AACH,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,CAAC,cAAc,CAAC,CAMlE;AAED;;;;;GAKG;AACH,wBAAgB,GAAG,IAAI,aAAa,CAAC,WAAW,CAAC,CAMhD;AAED;;;GAGG;AACH,wBAAgB,GAAG,IAAI,aAAa,CAAC,WAAW,CAAC,CAMhD;AAED;;;;GAIG;AACH,wBAAgB,aAAa,IAAI,aAAa,CAAC,aAAa,CAAC,CAM5D;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAC3B,OAAO,EAAE,MAAM,GACd,aAAa,CAAC,qBAAqB,CAAC,CAUtC;AAED,0EAA0E;AAC1E,wBAAgB,sBAAsB,IAAI,aAAa,CAAC,yBAAyB,CAAC,CAOjF;AAED,0EAA0E;AAC1E,wBAAgB,wBAAwB,IAAI,aAAa,CAAC,yBAAyB,CAAC,CAOnF;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,IAAI,aAAa,CAAC,iBAAiB,CAAC,CAMjE;AAED;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,CAAC,WAAW,CAAC,CAMjE;AAED;;;;;;;GAOG;AACH,wBAAgB,SAAS,IAAI,aAAa,CAAC,iBAAiB,CAAC,CAM5D;AAiBD;;;GAGG;AACH,qBAAa,eAAe;IAmBxB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,UAAU,CAAC;IAnBrB;;;;OAIG;IACH,OAAO,CAAC,KAAK,CAAgB;IAE7B;;;;;;OAMG;IACH,OAAO,CAAC,QAAQ,CAAQ;IACxB,OAAO,CAAC,SAAS,CAAQ;gBAGf,MAAM,EAAE,MAAM,CAAC,WAAW,EAC1B,UAAU,CAAC,GAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,aAAA;IAGjD,4EAA4E;IAC5E,IAAI,WAAW,IAAI,OAAO,CAEzB;IAED;;;;OAIG;IACH,IAAI,UAAU,IAAI,OAAO,CAExB;IAED;;;;;;;;;;;;OAYG;IACH,IAAI,oBAAoB,IAAI,WAAW,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAOhE;IAED,OAAO,CAAC,WAAW;IAKnB;;;;;;;;;;;;OAYG;IACH,IAAI,CAAC,CAAC,SAAS,gBAAgB,EAC7B,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,GACtB,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;IAczB;;;;;;;;OAQG;IACH,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IACtB,KAAK,CAAC,OAAO,EAAE;QAAE,UAAU,EAAE,IAAI,CAAA;KAAE,GAAG,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC;IAatE,8EAA8E;IAC9E,OAAO,IAAI,IAAI;IAMf;;;OAGG;IACH,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,gBAAgB,KAAK,IAAI,CAAC,GAAG,SAAS,CAAY;IAEtE;;;;;;;;;;;;;;;;;;;OAmBG;IACH,UAAU,CAAC,CAAC,EAAE,gBAAgB,GAAG,IAAI;IA4BrC;;;;OAIG;IACH,OAAO,IAAI,IAAI;IAMf,6EAA6E;IAC7E,MAAM,IAAI,IAAI;IAId,OAAO,CAAC,YAAY;CAOrB"}
|
|
@@ -32,6 +32,7 @@ export function decrqm(mode) {
|
|
|
32
32
|
return {
|
|
33
33
|
request: csi(`?${mode}$p`),
|
|
34
34
|
match: (r) => r.type === 'decrpm' && r.mode === mode,
|
|
35
|
+
responseType: 'decrpm',
|
|
35
36
|
};
|
|
36
37
|
}
|
|
37
38
|
/**
|
|
@@ -44,6 +45,7 @@ export function da1() {
|
|
|
44
45
|
return {
|
|
45
46
|
request: csi('c'),
|
|
46
47
|
match: (r) => r.type === 'da1',
|
|
48
|
+
responseType: 'da1',
|
|
47
49
|
};
|
|
48
50
|
}
|
|
49
51
|
/**
|
|
@@ -54,6 +56,7 @@ export function da2() {
|
|
|
54
56
|
return {
|
|
55
57
|
request: csi('>c'),
|
|
56
58
|
match: (r) => r.type === 'da2',
|
|
59
|
+
responseType: 'da2',
|
|
57
60
|
};
|
|
58
61
|
}
|
|
59
62
|
/**
|
|
@@ -65,6 +68,7 @@ export function kittyKeyboard() {
|
|
|
65
68
|
return {
|
|
66
69
|
request: csi('?u'),
|
|
67
70
|
match: (r) => r.type === 'kittyKeyboard',
|
|
71
|
+
responseType: 'kittyKeyboard',
|
|
68
72
|
};
|
|
69
73
|
}
|
|
70
74
|
/**
|
|
@@ -78,6 +82,7 @@ export function kittyGraphics(imageId) {
|
|
|
78
82
|
// same direct-data + compression path used by real renderer uploads.
|
|
79
83
|
request: `\u001b_Gi=${id},s=1,v=1,a=q,t=d,f=32,o=z;eAFjYGBgAAAABAAB\u001b\\`,
|
|
80
84
|
match: (r) => r.type === 'kittyGraphics' && r.imageId === id,
|
|
85
|
+
responseType: 'kittyGraphics',
|
|
81
86
|
};
|
|
82
87
|
}
|
|
83
88
|
/** XTWINOPS: query the physical pixel dimensions of one terminal cell. */
|
|
@@ -85,6 +90,7 @@ export function terminalCellSizePixels() {
|
|
|
85
90
|
return {
|
|
86
91
|
request: csi('16t'),
|
|
87
92
|
match: (r) => r.type === 'terminalPixelSize' && r.scope === 'cell',
|
|
93
|
+
responseType: 'terminalPixelSize',
|
|
88
94
|
};
|
|
89
95
|
}
|
|
90
96
|
/** XTWINOPS: query the terminal text area's physical pixel dimensions. */
|
|
@@ -92,6 +98,7 @@ export function terminalWindowSizePixels() {
|
|
|
92
98
|
return {
|
|
93
99
|
request: csi('14t'),
|
|
94
100
|
match: (r) => r.type === 'terminalPixelSize' && r.scope === 'window',
|
|
101
|
+
responseType: 'terminalPixelSize',
|
|
95
102
|
};
|
|
96
103
|
}
|
|
97
104
|
/**
|
|
@@ -105,6 +112,7 @@ export function cursorPosition() {
|
|
|
105
112
|
return {
|
|
106
113
|
request: csi('?6n'),
|
|
107
114
|
match: (r) => r.type === 'cursorPosition',
|
|
115
|
+
responseType: 'cursorPosition',
|
|
108
116
|
};
|
|
109
117
|
}
|
|
110
118
|
/**
|
|
@@ -117,6 +125,7 @@ export function oscColor(code) {
|
|
|
117
125
|
return {
|
|
118
126
|
request: osc(code, '?'),
|
|
119
127
|
match: (r) => r.type === 'osc' && r.code === code,
|
|
128
|
+
responseType: 'osc',
|
|
120
129
|
};
|
|
121
130
|
}
|
|
122
131
|
/**
|
|
@@ -131,6 +140,7 @@ export function xtversion() {
|
|
|
131
140
|
return {
|
|
132
141
|
request: csi('>0q'),
|
|
133
142
|
match: (r) => r.type === 'xtversion',
|
|
143
|
+
responseType: 'xtversion',
|
|
134
144
|
};
|
|
135
145
|
}
|
|
136
146
|
// -- Querier --
|
|
@@ -166,6 +176,37 @@ export class TerminalQuerier {
|
|
|
166
176
|
get isSuspended() {
|
|
167
177
|
return this.suspended;
|
|
168
178
|
}
|
|
179
|
+
/**
|
|
180
|
+
* In-flight evidence for the input parser (read-only observation): true
|
|
181
|
+
* while at least one query or flush sentinel is still waiting for its
|
|
182
|
+
* reply. Purely observational — queue semantics are untouched.
|
|
183
|
+
*/
|
|
184
|
+
get hasPending() {
|
|
185
|
+
return this.queue.length > 0;
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* In-flight evidence for the input parser (read-only observation): the
|
|
189
|
+
* response types of the queries still awaiting a reply, plus `da1` when a
|
|
190
|
+
* flush() sentinel is still open (DA1 is the reply that resolves it).
|
|
191
|
+
*
|
|
192
|
+
* This is bound to the query lifecycle on purpose. A boolean "something
|
|
193
|
+
* was sent recently" lets any recent query authorize a claim for bytes
|
|
194
|
+
* that may belong to no query at all, so the parser receives the expected
|
|
195
|
+
* types instead: a reply tail is only claimed when its shape can complete
|
|
196
|
+
* into one of them, and a query resolved by a sentinel stops counting the
|
|
197
|
+
* moment its promise settles. Purely observational — queue semantics are
|
|
198
|
+
* untouched.
|
|
199
|
+
*/
|
|
200
|
+
get pendingResponseTypes() {
|
|
201
|
+
const types = new Set();
|
|
202
|
+
for (const pending of this.queue) {
|
|
203
|
+
if (pending.kind === 'query')
|
|
204
|
+
types.add(pending.responseType);
|
|
205
|
+
else
|
|
206
|
+
types.add('da1');
|
|
207
|
+
}
|
|
208
|
+
return types;
|
|
209
|
+
}
|
|
169
210
|
holdRawMode() {
|
|
170
211
|
this.setRawMode?.(true);
|
|
171
212
|
return () => this.setRawMode?.(false);
|
|
@@ -190,6 +231,7 @@ export class TerminalQuerier {
|
|
|
190
231
|
this.queue.push({
|
|
191
232
|
kind: 'query',
|
|
192
233
|
match: query.match,
|
|
234
|
+
responseType: query.responseType,
|
|
193
235
|
resolve: r => resolve(r),
|
|
194
236
|
releaseRawMode: this.holdRawMode(),
|
|
195
237
|
});
|
|
@@ -58,5 +58,29 @@ export declare function swallowNestedUpdateOverflow(error: unknown, source: stri
|
|
|
58
58
|
* @param onChange - The subscriber callback about to run.
|
|
59
59
|
*/
|
|
60
60
|
export declare function callWithUpdateOverflowGuard(source: string, onChange: () => void): void;
|
|
61
|
+
/**
|
|
62
|
+
* Origin of a process-level fatal error, as reported to the sink.
|
|
63
|
+
*/
|
|
64
|
+
export type ProcessGuardOrigin = 'uncaughtException' | 'unhandledRejection';
|
|
65
|
+
/**
|
|
66
|
+
* Fatal-error sink installed by the process owner (the dsh-tui runtime, which
|
|
67
|
+
* routes it into the TUI's single exit funnel). Returning true means the sink
|
|
68
|
+
* took ownership of the process — it runs the teardown (resume marker,
|
|
69
|
+
* terminal restore, `dsh-tui crashed: …`) and exits non-zero. Returning false
|
|
70
|
+
* leaves the error to Node's default crash, which keeps "fail loud, non-zero"
|
|
71
|
+
* true when no sink is registered or the tree is being torn down.
|
|
72
|
+
*/
|
|
73
|
+
export type ProcessGuardFatalSink = (error: unknown, origin: ProcessGuardOrigin) => boolean;
|
|
74
|
+
/** Register (or clear, with undefined) the fatal-error sink. */
|
|
75
|
+
export declare function registerProcessGuardFatalSink(sink: ProcessGuardFatalSink | undefined): void;
|
|
76
|
+
/**
|
|
77
|
+
* Normalize the reason handed to a fatal sink so the exit funnel can never
|
|
78
|
+
* mistake a fatal error for a clean user exit. `Promise.reject()` and
|
|
79
|
+
* `throw undefined` deliver `undefined`, and the funnel selects its crash path
|
|
80
|
+
* with `error !== undefined` — passing the raw reason through would run the
|
|
81
|
+
* zero-exit path while the sink reported that it owned the process. Defined
|
|
82
|
+
* reasons (including non-Error values) are returned unchanged.
|
|
83
|
+
*/
|
|
84
|
+
export declare function fatalReasonForExit(error: unknown, origin: ProcessGuardOrigin): unknown;
|
|
61
85
|
export declare function installNestedUpdateOverflowProcessGuard(): void;
|
|
62
86
|
//# sourceMappingURL=update-overflow-guard.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update-overflow-guard.d.ts","sourceRoot":"","sources":["../../../src/ink/update-overflow-guard.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAoBH,2EAA2E;AAC3E,MAAM,MAAM,cAAc,GAAG,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;AAOjD,+CAA+C;AAC/C,wBAAgB,+BAA+B,IAAI,IAAI,CAEtD;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,GAAG,IAAI,CAEnF;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAG9D;AAED;;;;;;;;GAQG;AACH,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAmDnF;AAED;;;;;;GAMG;AACH,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,IAAI,GAAG,IAAI,CAOtF;
|
|
1
|
+
{"version":3,"file":"update-overflow-guard.d.ts","sourceRoot":"","sources":["../../../src/ink/update-overflow-guard.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAoBH,2EAA2E;AAC3E,MAAM,MAAM,cAAc,GAAG,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;AAOjD,+CAA+C;AAC/C,wBAAgB,+BAA+B,IAAI,IAAI,CAEtD;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,GAAG,IAAI,CAEnF;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAG9D;AAED;;;;;;;;GAQG;AACH,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAmDnF;AAED;;;;;;GAMG;AACH,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,IAAI,GAAG,IAAI,CAOtF;AAED;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG,mBAAmB,GAAG,oBAAoB,CAAA;AAE3E;;;;;;;GAOG;AACH,MAAM,MAAM,qBAAqB,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,kBAAkB,KAAK,OAAO,CAAA;AAG3F,gEAAgE;AAChE,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,qBAAqB,GAAG,SAAS,GAAG,IAAI,CAE3F;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAEtF;AAiBD,wBAAgB,uCAAuC,IAAI,IAAI,CAgB9D"}
|
|
@@ -130,6 +130,22 @@ export function callWithUpdateOverflowGuard(source, onChange) {
|
|
|
130
130
|
throw error;
|
|
131
131
|
}
|
|
132
132
|
}
|
|
133
|
+
let fatalSink;
|
|
134
|
+
/** Register (or clear, with undefined) the fatal-error sink. */
|
|
135
|
+
export function registerProcessGuardFatalSink(sink) {
|
|
136
|
+
fatalSink = sink;
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Normalize the reason handed to a fatal sink so the exit funnel can never
|
|
140
|
+
* mistake a fatal error for a clean user exit. `Promise.reject()` and
|
|
141
|
+
* `throw undefined` deliver `undefined`, and the funnel selects its crash path
|
|
142
|
+
* with `error !== undefined` — passing the raw reason through would run the
|
|
143
|
+
* zero-exit path while the sink reported that it owned the process. Defined
|
|
144
|
+
* reasons (including non-Error values) are returned unchanged.
|
|
145
|
+
*/
|
|
146
|
+
export function fatalReasonForExit(error, origin) {
|
|
147
|
+
return error === undefined ? new Error(`${origin} with undefined reason`) : error;
|
|
148
|
+
}
|
|
133
149
|
/**
|
|
134
150
|
* Process-level backstop for the overflow error. The hotspot guards above
|
|
135
151
|
* cover the known enqueue sites (clock tick, reveal tick, channel emit,
|
|
@@ -138,9 +154,11 @@ export function callWithUpdateOverflowGuard(source, onChange) {
|
|
|
138
154
|
* feeder, a future timer, a plugin's store) would still kill the process.
|
|
139
155
|
* This installs uncaughtException/unhandledRejection handlers that absorb
|
|
140
156
|
* exactly the overflow error class (same self-healing contract: React
|
|
141
|
-
* already reset the counter before throwing) and
|
|
142
|
-
*
|
|
143
|
-
*
|
|
157
|
+
* already reset the counter before throwing) and hand everything else to the
|
|
158
|
+
* registered fatal sink — or rethrow it unchanged when there is none, so the
|
|
159
|
+
* process still fails loud with a non-zero exit rather than continuing in an
|
|
160
|
+
* unknown state. Idempotent; opt out with DSH_TUI_NO_185_PROCESS_GUARD=1 when
|
|
161
|
+
* a host owns process error policy.
|
|
144
162
|
*/
|
|
145
163
|
let processGuardInstalled = false;
|
|
146
164
|
export function installNestedUpdateOverflowProcessGuard() {
|
|
@@ -152,6 +170,8 @@ export function installNestedUpdateOverflowProcessGuard() {
|
|
|
152
170
|
process.on('uncaughtException', error => {
|
|
153
171
|
if (swallowNestedUpdateOverflow(error, 'process.uncaught'))
|
|
154
172
|
return;
|
|
173
|
+
if (fatalSink?.(error, 'uncaughtException') === true)
|
|
174
|
+
return;
|
|
155
175
|
// Unknown errors keep Node's default semantics: rethrowing from a
|
|
156
176
|
// listener crashes the process with the original error.
|
|
157
177
|
throw error;
|
|
@@ -159,6 +179,8 @@ export function installNestedUpdateOverflowProcessGuard() {
|
|
|
159
179
|
process.on('unhandledRejection', error => {
|
|
160
180
|
if (swallowNestedUpdateOverflow(error, 'process.rejection'))
|
|
161
181
|
return;
|
|
182
|
+
if (fatalSink?.(error, 'unhandledRejection') === true)
|
|
183
|
+
return;
|
|
162
184
|
throw error;
|
|
163
185
|
});
|
|
164
186
|
}
|
|
@@ -47,6 +47,8 @@ export declare const mathRenderStats: {
|
|
|
47
47
|
rasterHits: number;
|
|
48
48
|
rasterMisses: number;
|
|
49
49
|
};
|
|
50
|
+
/** Formula renders still running (tests wait for 0 before reading the screen). */
|
|
51
|
+
export declare function mathRendersInFlight(): number;
|
|
50
52
|
/**
|
|
51
53
|
* The settled result for this request if one is cached, without rendering.
|
|
52
54
|
* Lets a remounted view (scrolled back into the viewport) paint its image on
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderer.d.ts","sourceRoot":"","sources":["../../../src/math/renderer.ts"],"names":[],"mappings":"AAiBA,OAAO,EAGL,KAAK,gBAAgB,EACrB,KAAK,mBAAmB,EACzB,MAAM,0BAA0B,CAAA;AAGjC,8EAA8E;AAC9E,eAAO,MAAM,iBAAiB,OAAO,CAAA;AASrC,MAAM,MAAM,eAAe,GACvB,OAAO,GACP,gBAAgB,GAChB,WAAW,GACX,oBAAoB,GACpB,WAAW,GACX,cAAc,GACd,cAAc,GACd,gBAAgB,GAChB,qBAAqB,CAAA;AAEzB,MAAM,WAAW,iBAAiB;IAChC,8BAA8B;IAC9B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;IACzB,uDAAuD;IACvD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,CAAA;IACnC,+EAA+E;IAC/E,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB;;;;OAIG;IACH,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAA;CACrC;AAED,MAAM,WAAW,UAAU;IACzB,iEAAiE;IACjE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,MAAM,EAAE,mBAAmB,CAAA;IACpC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,4DAA4D;IAC5D,QAAQ,CAAC,SAAS,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAA;CACrH;AAED,MAAM,MAAM,gBAAgB,GACxB;IAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAA;CAAE,GAClD;IAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAA;CAAE,CAAA;AAgE7D,kDAAkD;AAClD,eAAO,MAAM,eAAe;;;;;CAAqE,CAAA;AA+
|
|
1
|
+
{"version":3,"file":"renderer.d.ts","sourceRoot":"","sources":["../../../src/math/renderer.ts"],"names":[],"mappings":"AAiBA,OAAO,EAGL,KAAK,gBAAgB,EACrB,KAAK,mBAAmB,EACzB,MAAM,0BAA0B,CAAA;AAGjC,8EAA8E;AAC9E,eAAO,MAAM,iBAAiB,OAAO,CAAA;AASrC,MAAM,MAAM,eAAe,GACvB,OAAO,GACP,gBAAgB,GAChB,WAAW,GACX,oBAAoB,GACpB,WAAW,GACX,cAAc,GACd,cAAc,GACd,gBAAgB,GAChB,qBAAqB,CAAA;AAEzB,MAAM,WAAW,iBAAiB;IAChC,8BAA8B;IAC9B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;IACzB,uDAAuD;IACvD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,CAAA;IACnC,+EAA+E;IAC/E,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB;;;;OAIG;IACH,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAA;CACrC;AAED,MAAM,WAAW,UAAU;IACzB,iEAAiE;IACjE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,MAAM,EAAE,mBAAmB,CAAA;IACpC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,4DAA4D;IAC5D,QAAQ,CAAC,SAAS,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAA;CACrH;AAED,MAAM,MAAM,gBAAgB,GACxB;IAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAA;CAAE,GAClD;IAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAA;CAAE,CAAA;AAgE7D,kDAAkD;AAClD,eAAO,MAAM,eAAe;;;;;CAAqE,CAAA;AAEjG,kFAAkF;AAClF,wBAAgB,mBAAmB,IAAI,MAAM,CAE5C;AA+ID;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,iBAAiB,GAAG,gBAAgB,GAAG,SAAS,CAIvF;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAyBtF;AAED,2EAA2E;AAC3E,wBAAgB,qBAAqB,IAAI,IAAI,CAO5C"}
|
|
@@ -59,6 +59,10 @@ const rasters = new WeightedLru(128, 64 * 1024 * 1024, value => value.ok ? value
|
|
|
59
59
|
const inflight = new Map();
|
|
60
60
|
/** Cache counters, for tests and debug output. */
|
|
61
61
|
export const mathRenderStats = { vectorHits: 0, vectorMisses: 0, rasterHits: 0, rasterMisses: 0 };
|
|
62
|
+
/** Formula renders still running (tests wait for 0 before reading the screen). */
|
|
63
|
+
export function mathRendersInFlight() {
|
|
64
|
+
return inflight.size;
|
|
65
|
+
}
|
|
62
66
|
let converter;
|
|
63
67
|
function loadConverter() {
|
|
64
68
|
converter ??= import('@dsh-tui-vendor/mathjax-tex-svg')
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Minimal UI: one process-wide flag gating decorative UI (header splash,
|
|
3
|
+
* emoji status glyphs, non-tool text colors, status-bar extras). The flag is
|
|
4
|
+
* owned by the channel (settings key `dsh-tui.minimal`, applied live through
|
|
5
|
+
* scope.watch); leaf components read it here instead of threading a prop
|
|
6
|
+
* through four render layers. Code highlighting and tool-name colors are
|
|
7
|
+
* deliberately NOT gated — the minimal UI keeps those.
|
|
8
|
+
*
|
|
9
|
+
* This is the INTERFACE switch only. It is unrelated to the kernel's agent
|
|
10
|
+
* preset `minimal` (极简模式 / "Minimal"), which changes the model-facing
|
|
11
|
+
* world (a single persistent-shell tool — bash on POSIX, pwsh on Windows —
|
|
12
|
+
* with no compaction, no plan mode and no runtime context). Renamed from
|
|
13
|
+
* `minimalMode` so the two concepts cannot be read as one.
|
|
14
|
+
*/
|
|
15
|
+
/** True when the minimal UI is active (settings key `dsh-tui.minimal`). */
|
|
16
|
+
export declare function isMinimalUiMode(): boolean;
|
|
17
|
+
/** @internal channel-owned setter; also called once at boot. */
|
|
18
|
+
export declare function setMinimalUiMode(enabled: boolean): void;
|
|
19
|
+
//# sourceMappingURL=minimalUiMode.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"minimalUiMode.d.ts","sourceRoot":"","sources":["../../src/minimalUiMode.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAIH,2EAA2E;AAC3E,wBAAgB,eAAe,IAAI,OAAO,CAEzC;AAED,gEAAgE;AAChE,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAEvD"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Minimal UI: one process-wide flag gating decorative UI (header splash,
|
|
3
|
+
* emoji status glyphs, non-tool text colors, status-bar extras). The flag is
|
|
4
|
+
* owned by the channel (settings key `dsh-tui.minimal`, applied live through
|
|
5
|
+
* scope.watch); leaf components read it here instead of threading a prop
|
|
6
|
+
* through four render layers. Code highlighting and tool-name colors are
|
|
7
|
+
* deliberately NOT gated — the minimal UI keeps those.
|
|
8
|
+
*
|
|
9
|
+
* This is the INTERFACE switch only. It is unrelated to the kernel's agent
|
|
10
|
+
* preset `minimal` (极简模式 / "Minimal"), which changes the model-facing
|
|
11
|
+
* world (a single persistent-shell tool — bash on POSIX, pwsh on Windows —
|
|
12
|
+
* with no compaction, no plan mode and no runtime context). Renamed from
|
|
13
|
+
* `minimalMode` so the two concepts cannot be read as one.
|
|
14
|
+
*/
|
|
15
|
+
let minimalUi = false;
|
|
16
|
+
/** True when the minimal UI is active (settings key `dsh-tui.minimal`). */
|
|
17
|
+
export function isMinimalUiMode() {
|
|
18
|
+
return minimalUi;
|
|
19
|
+
}
|
|
20
|
+
/** @internal channel-owned setter; also called once at boot. */
|
|
21
|
+
export function setMinimalUiMode(enabled) {
|
|
22
|
+
minimalUi = enabled;
|
|
23
|
+
}
|
package/lib/types/oauth.d.ts
CHANGED
|
@@ -1,15 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* resolves row names from the *profile* directory, where only the profile's
|
|
7
|
-
* direct dependencies are linked, and pnpm's isolated layout never hoists a
|
|
8
|
-
* transitive dependency there. Mounting through this subpath keeps plugin
|
|
9
|
-
* resolution anchored at @deepseek-harness-tui/dsh-tui itself, always a
|
|
10
|
-
* direct profile dependency, under every package-manager layout.
|
|
2
|
+
* Public entry for the built-in OAuth Cordis module. The bundle patch keeps
|
|
3
|
+
* mounting this subpath so existing profile overrides and loader ordering
|
|
4
|
+
* remain compatible after the former dsh-auth package was folded into the
|
|
5
|
+
* TUI's adapter tree.
|
|
11
6
|
*
|
|
12
7
|
* @module @deepseek-harness-tui/dsh-tui/oauth
|
|
13
8
|
*/
|
|
14
|
-
export * from '
|
|
9
|
+
export * from './dsh-adapter/oauth/index.js';
|
|
15
10
|
//# sourceMappingURL=oauth.d.ts.map
|
package/lib/types/oauth.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oauth.d.ts","sourceRoot":"","sources":["../../src/oauth.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"oauth.d.ts","sourceRoot":"","sources":["../../src/oauth.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,cAAc,8BAA8B,CAAA"}
|
package/lib/types/oauth.js
CHANGED
|
@@ -1,14 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* resolves row names from the *profile* directory, where only the profile's
|
|
7
|
-
* direct dependencies are linked, and pnpm's isolated layout never hoists a
|
|
8
|
-
* transitive dependency there. Mounting through this subpath keeps plugin
|
|
9
|
-
* resolution anchored at @deepseek-harness-tui/dsh-tui itself, always a
|
|
10
|
-
* direct profile dependency, under every package-manager layout.
|
|
2
|
+
* Public entry for the built-in OAuth Cordis module. The bundle patch keeps
|
|
3
|
+
* mounting this subpath so existing profile overrides and loader ordering
|
|
4
|
+
* remain compatible after the former dsh-auth package was folded into the
|
|
5
|
+
* TUI's adapter tree.
|
|
11
6
|
*
|
|
12
7
|
* @module @deepseek-harness-tui/dsh-tui/oauth
|
|
13
8
|
*/
|
|
14
|
-
export * from '
|
|
9
|
+
export * from './dsh-adapter/oauth/index.js';
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The wizard revision this build writes. Bump it when a step is ADDED (not
|
|
3
|
+
* when copy changes): installs completed at an older revision become
|
|
4
|
+
* eligible again, which is the point — a new domain is worth one more pass.
|
|
5
|
+
*/
|
|
6
|
+
export declare const ONBOARDING_VERSION = 1;
|
|
7
|
+
/** Persisted first-run state. */
|
|
8
|
+
export interface OnboardingPrefs {
|
|
9
|
+
/** True once the wizard ran to completion on this installation. */
|
|
10
|
+
completed: boolean;
|
|
11
|
+
/** The wizard revision that was completed (0 when an older build did not stamp one). */
|
|
12
|
+
version: number;
|
|
13
|
+
}
|
|
14
|
+
/** Not-done-yet, the answer for every unreadable file. */
|
|
15
|
+
export declare const ONBOARDING_UNSEEN: OnboardingPrefs;
|
|
16
|
+
/**
|
|
17
|
+
* Parse a persisted onboarding record. Pure, so the shape rules are testable
|
|
18
|
+
* without a filesystem: anything that is not an object with a literal
|
|
19
|
+
* `completed: true` reads as unseen.
|
|
20
|
+
*
|
|
21
|
+
* @param text - Raw file contents.
|
|
22
|
+
* @returns The normalized record.
|
|
23
|
+
*/
|
|
24
|
+
export declare function parseOnboardingPrefs(text: string): OnboardingPrefs;
|
|
25
|
+
/**
|
|
26
|
+
* Read the persisted onboarding state.
|
|
27
|
+
*
|
|
28
|
+
* @param dir - Prefs directory (injectable for tests).
|
|
29
|
+
* @returns The normalized record; unseen when the file is absent or unreadable.
|
|
30
|
+
*/
|
|
31
|
+
export declare function readOnboardingPrefs(dir?: string): OnboardingPrefs;
|
|
32
|
+
/**
|
|
33
|
+
* Record that the wizard completed (best effort).
|
|
34
|
+
*
|
|
35
|
+
* @param version - The wizard revision being stamped.
|
|
36
|
+
* @param dir - Prefs directory (injectable for tests).
|
|
37
|
+
* @returns True when the record was durably written; false when the data
|
|
38
|
+
* directory is not writable. The caller stays silent either way — the
|
|
39
|
+
* preference is a convenience, not a promise.
|
|
40
|
+
*/
|
|
41
|
+
export declare function markOnboardingDone(version?: number, dir?: string): boolean;
|
|
42
|
+
/**
|
|
43
|
+
* Whether this install should be offered the wizard on an ordinary launch.
|
|
44
|
+
*
|
|
45
|
+
* The single place the "should it fire" question is answered, so the host
|
|
46
|
+
* boot decision and any future `/setup` entry point cannot drift apart.
|
|
47
|
+
*
|
|
48
|
+
* @param prefs - The record read at boot (or a fixture in a test).
|
|
49
|
+
* @returns True when the wizard has never been completed at this revision.
|
|
50
|
+
*/
|
|
51
|
+
export declare function shouldOfferOnboarding(prefs?: OnboardingPrefs): boolean;
|
|
52
|
+
//# sourceMappingURL=onboardingPrefs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"onboardingPrefs.d.ts","sourceRoot":"","sources":["../../src/onboardingPrefs.ts"],"names":[],"mappings":"AAiCA;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,IAAI,CAAA;AAEnC,iCAAiC;AACjC,MAAM,WAAW,eAAe;IAC9B,mEAAmE;IACnE,SAAS,EAAE,OAAO,CAAA;IAClB,wFAAwF;IACxF,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,0DAA0D;AAC1D,eAAO,MAAM,iBAAiB,EAAE,eAAkD,CAAA;AAElF;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,CAYlE;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,GAAE,MAAiB,GAAG,eAAe,CAM3E;AAED;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,GAAE,MAA2B,EAAE,GAAG,GAAE,MAAiB,GAAG,OAAO,CAYxG;AAED;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,GAAE,eAAuC,GAAG,OAAO,CAE7F"}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* First-run onboarding state, at `~/.dsh-tui/onboarding.json`.
|
|
3
|
+
*
|
|
4
|
+
* Deliberately NOT a cordis config value: "has this installation already
|
|
5
|
+
* walked the user through setup" is per-machine UI state, like the lang and
|
|
6
|
+
* home preferences next to it — not a deployment choice a cordis.yml row
|
|
7
|
+
* should own. A repo-wide pinned config would make the wizard either always
|
|
8
|
+
* fire or never fire, and neither is what "first run" means.
|
|
9
|
+
*
|
|
10
|
+
* Two fields, and the split matters:
|
|
11
|
+
*
|
|
12
|
+
* - `completed` — the user reached the end and pressed 完成. Written on the
|
|
13
|
+
* way OUT, never at boot: a process that dies before the first frame
|
|
14
|
+
* (a config error, a crash during render) must not burn the
|
|
15
|
+
* installation's only first run. Same rule as homePrefs' `seen`.
|
|
16
|
+
* - `version` — the wizard revision that was completed. A future wizard
|
|
17
|
+
* that adds a step can re-fire on installs sitting on an older revision
|
|
18
|
+
* without needing a second file. Absent/0 means "completed by a build
|
|
19
|
+
* that did not stamp one", which the caller reads as "completing, but
|
|
20
|
+
* worth re-offering if it ever grows a new step".
|
|
21
|
+
*
|
|
22
|
+
* Best effort, like every other pref here: a missing, unreadable or corrupt
|
|
23
|
+
* file simply means "not done yet". The worst outcome of a broken pref file
|
|
24
|
+
* is one extra wizard — recoverable with a single Esc.
|
|
25
|
+
*
|
|
26
|
+
* @module @deepseek-harness-tui/dsh-tui/onboardingPrefs
|
|
27
|
+
*/
|
|
28
|
+
import { mkdirSync, readFileSync, writeFileSync } from 'node:fs';
|
|
29
|
+
import { join } from 'node:path';
|
|
30
|
+
import { DATA_DIR } from './utils/paths.js';
|
|
31
|
+
const FILE = 'onboarding.json';
|
|
32
|
+
/**
|
|
33
|
+
* The wizard revision this build writes. Bump it when a step is ADDED (not
|
|
34
|
+
* when copy changes): installs completed at an older revision become
|
|
35
|
+
* eligible again, which is the point — a new domain is worth one more pass.
|
|
36
|
+
*/
|
|
37
|
+
export const ONBOARDING_VERSION = 1;
|
|
38
|
+
/** Not-done-yet, the answer for every unreadable file. */
|
|
39
|
+
export const ONBOARDING_UNSEEN = { completed: false, version: 0 };
|
|
40
|
+
/**
|
|
41
|
+
* Parse a persisted onboarding record. Pure, so the shape rules are testable
|
|
42
|
+
* without a filesystem: anything that is not an object with a literal
|
|
43
|
+
* `completed: true` reads as unseen.
|
|
44
|
+
*
|
|
45
|
+
* @param text - Raw file contents.
|
|
46
|
+
* @returns The normalized record.
|
|
47
|
+
*/
|
|
48
|
+
export function parseOnboardingPrefs(text) {
|
|
49
|
+
try {
|
|
50
|
+
const parsed = JSON.parse(text);
|
|
51
|
+
if (parsed === null || typeof parsed !== 'object' || Array.isArray(parsed))
|
|
52
|
+
return ONBOARDING_UNSEEN;
|
|
53
|
+
const raw = parsed;
|
|
54
|
+
const version = typeof raw.version === 'number' && Number.isFinite(raw.version) && raw.version > 0
|
|
55
|
+
? Math.floor(raw.version)
|
|
56
|
+
: 0;
|
|
57
|
+
return { completed: raw.completed === true, version };
|
|
58
|
+
}
|
|
59
|
+
catch {
|
|
60
|
+
return ONBOARDING_UNSEEN;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Read the persisted onboarding state.
|
|
65
|
+
*
|
|
66
|
+
* @param dir - Prefs directory (injectable for tests).
|
|
67
|
+
* @returns The normalized record; unseen when the file is absent or unreadable.
|
|
68
|
+
*/
|
|
69
|
+
export function readOnboardingPrefs(dir = DATA_DIR) {
|
|
70
|
+
try {
|
|
71
|
+
return parseOnboardingPrefs(readFileSync(join(dir, FILE), 'utf8'));
|
|
72
|
+
}
|
|
73
|
+
catch {
|
|
74
|
+
return ONBOARDING_UNSEEN;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Record that the wizard completed (best effort).
|
|
79
|
+
*
|
|
80
|
+
* @param version - The wizard revision being stamped.
|
|
81
|
+
* @param dir - Prefs directory (injectable for tests).
|
|
82
|
+
* @returns True when the record was durably written; false when the data
|
|
83
|
+
* directory is not writable. The caller stays silent either way — the
|
|
84
|
+
* preference is a convenience, not a promise.
|
|
85
|
+
*/
|
|
86
|
+
export function markOnboardingDone(version = ONBOARDING_VERSION, dir = DATA_DIR) {
|
|
87
|
+
try {
|
|
88
|
+
mkdirSync(dir, { recursive: true });
|
|
89
|
+
writeFileSync(join(dir, FILE), `${JSON.stringify({ completed: true, version }, null, 2)}\n`, 'utf8');
|
|
90
|
+
return true;
|
|
91
|
+
}
|
|
92
|
+
catch {
|
|
93
|
+
return false;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Whether this install should be offered the wizard on an ordinary launch.
|
|
98
|
+
*
|
|
99
|
+
* The single place the "should it fire" question is answered, so the host
|
|
100
|
+
* boot decision and any future `/setup` entry point cannot drift apart.
|
|
101
|
+
*
|
|
102
|
+
* @param prefs - The record read at boot (or a fixture in a test).
|
|
103
|
+
* @returns True when the wizard has never been completed at this revision.
|
|
104
|
+
*/
|
|
105
|
+
export function shouldOfferOnboarding(prefs = readOnboardingPrefs()) {
|
|
106
|
+
return !prefs.completed || prefs.version < ONBOARDING_VERSION;
|
|
107
|
+
}
|