@deepseek-harness-tui/dsh-tui 0.11.2 → 0.13.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +60 -8
- package/assets/deepy/README.md +60 -0
- package/assets/deepy/frames.json +1 -0
- package/assets/whale-girl/whale-girl-happy.png +0 -0
- package/assets/whaleGirl/README.md +7 -0
- package/assets/whaleGirl/frames.json +1 -0
- package/assets/whaleGirl/img/building/00.png +0 -0
- package/assets/whaleGirl/img/building/01.png +0 -0
- package/assets/whaleGirl/img/building/02.png +0 -0
- package/assets/whaleGirl/img/building/03.png +0 -0
- package/assets/whaleGirl/img/building/04.png +0 -0
- package/assets/whaleGirl/img/building/05.png +0 -0
- package/assets/whaleGirl/img/building/06.png +0 -0
- package/assets/whaleGirl/img/building/07.png +0 -0
- package/assets/whaleGirl/img/building/08.png +0 -0
- package/assets/whaleGirl/img/building/09.png +0 -0
- package/assets/whaleGirl/img/building/10.png +0 -0
- package/assets/whaleGirl/img/building/11.png +0 -0
- package/assets/whaleGirl/img/building/12.png +0 -0
- package/assets/whaleGirl/img/building/13.png +0 -0
- package/assets/whaleGirl/img/building/14.png +0 -0
- package/assets/whaleGirl/img/building/15.png +0 -0
- package/assets/whaleGirl/img/building/16.png +0 -0
- package/assets/whaleGirl/img/building/17.png +0 -0
- package/assets/whaleGirl/img/building/18.png +0 -0
- package/assets/whaleGirl/img/building/19.png +0 -0
- package/assets/whaleGirl/img/building/20.png +0 -0
- package/assets/whaleGirl/img/building/21.png +0 -0
- package/assets/whaleGirl/img/building/22.png +0 -0
- package/assets/whaleGirl/img/building/23.png +0 -0
- package/assets/whaleGirl/img/carrying/00.png +0 -0
- package/assets/whaleGirl/img/carrying/01.png +0 -0
- package/assets/whaleGirl/img/carrying/02.png +0 -0
- package/assets/whaleGirl/img/carrying/03.png +0 -0
- package/assets/whaleGirl/img/carrying/04.png +0 -0
- package/assets/whaleGirl/img/carrying/05.png +0 -0
- package/assets/whaleGirl/img/carrying/06.png +0 -0
- package/assets/whaleGirl/img/carrying/07.png +0 -0
- package/assets/whaleGirl/img/compacting/00.png +0 -0
- package/assets/whaleGirl/img/compacting/01.png +0 -0
- package/assets/whaleGirl/img/compacting/02.png +0 -0
- package/assets/whaleGirl/img/compacting/03.png +0 -0
- package/assets/whaleGirl/img/compacting/04.png +0 -0
- package/assets/whaleGirl/img/compacting/05.png +0 -0
- package/assets/whaleGirl/img/compacting/06.png +0 -0
- package/assets/whaleGirl/img/compacting/07.png +0 -0
- package/assets/whaleGirl/img/compacting/08.png +0 -0
- package/assets/whaleGirl/img/compacting/09.png +0 -0
- package/assets/whaleGirl/img/conducting/00.png +0 -0
- package/assets/whaleGirl/img/conducting/01.png +0 -0
- package/assets/whaleGirl/img/conducting/02.png +0 -0
- package/assets/whaleGirl/img/conducting/03.png +0 -0
- package/assets/whaleGirl/img/conducting/04.png +0 -0
- package/assets/whaleGirl/img/conducting/05.png +0 -0
- package/assets/whaleGirl/img/conducting/06.png +0 -0
- package/assets/whaleGirl/img/conducting/07.png +0 -0
- package/assets/whaleGirl/img/conducting/08.png +0 -0
- package/assets/whaleGirl/img/conducting/09.png +0 -0
- package/assets/whaleGirl/img/conducting/10.png +0 -0
- package/assets/whaleGirl/img/conducting/11.png +0 -0
- package/assets/whaleGirl/img/drag/00.png +0 -0
- package/assets/whaleGirl/img/drag/01.png +0 -0
- package/assets/whaleGirl/img/drag/02.png +0 -0
- package/assets/whaleGirl/img/drag/03.png +0 -0
- package/assets/whaleGirl/img/drag/04.png +0 -0
- package/assets/whaleGirl/img/drag/05.png +0 -0
- package/assets/whaleGirl/img/drag/06.png +0 -0
- package/assets/whaleGirl/img/drag/07.png +0 -0
- package/assets/whaleGirl/img/drag/08.png +0 -0
- package/assets/whaleGirl/img/drag/09.png +0 -0
- package/assets/whaleGirl/img/error/00.png +0 -0
- package/assets/whaleGirl/img/error/01.png +0 -0
- package/assets/whaleGirl/img/error/02.png +0 -0
- package/assets/whaleGirl/img/error/03.png +0 -0
- package/assets/whaleGirl/img/error/04.png +0 -0
- package/assets/whaleGirl/img/error/05.png +0 -0
- package/assets/whaleGirl/img/error/06.png +0 -0
- package/assets/whaleGirl/img/error/07.png +0 -0
- package/assets/whaleGirl/img/error/08.png +0 -0
- package/assets/whaleGirl/img/error/09.png +0 -0
- package/assets/whaleGirl/img/happy/00.png +0 -0
- package/assets/whaleGirl/img/happy/01.png +0 -0
- package/assets/whaleGirl/img/happy/02.png +0 -0
- package/assets/whaleGirl/img/happy/03.png +0 -0
- package/assets/whaleGirl/img/happy/04.png +0 -0
- package/assets/whaleGirl/img/happy/05.png +0 -0
- package/assets/whaleGirl/img/happy/06.png +0 -0
- package/assets/whaleGirl/img/happy/07.png +0 -0
- package/assets/whaleGirl/img/happy/08.png +0 -0
- package/assets/whaleGirl/img/happy/09.png +0 -0
- package/assets/whaleGirl/img/happy/10.png +0 -0
- package/assets/whaleGirl/img/idle/00.png +0 -0
- package/assets/whaleGirl/img/idle/01.png +0 -0
- package/assets/whaleGirl/img/idle/02.png +0 -0
- package/assets/whaleGirl/img/idle/03.png +0 -0
- package/assets/whaleGirl/img/idle/04.png +0 -0
- package/assets/whaleGirl/img/idle/05.png +0 -0
- package/assets/whaleGirl/img/idle/06.png +0 -0
- package/assets/whaleGirl/img/idle/07.png +0 -0
- package/assets/whaleGirl/img/idle/08.png +0 -0
- package/assets/whaleGirl/img/idle/09.png +0 -0
- package/assets/whaleGirl/img/idle/10.png +0 -0
- package/assets/whaleGirl/img/idle/11.png +0 -0
- package/assets/whaleGirl/img/idle/12.png +0 -0
- package/assets/whaleGirl/img/idle/13.png +0 -0
- package/assets/whaleGirl/img/idle/14.png +0 -0
- package/assets/whaleGirl/img/idle/15.png +0 -0
- package/assets/whaleGirl/img/idle/16.png +0 -0
- package/assets/whaleGirl/img/idle/17.png +0 -0
- package/assets/whaleGirl/img/idle/18.png +0 -0
- package/assets/whaleGirl/img/idle/19.png +0 -0
- package/assets/whaleGirl/img/idle/20.png +0 -0
- package/assets/whaleGirl/img/idle-look/00.png +0 -0
- package/assets/whaleGirl/img/idle-look/01.png +0 -0
- package/assets/whaleGirl/img/idle-look/02.png +0 -0
- package/assets/whaleGirl/img/idle-look/03.png +0 -0
- package/assets/whaleGirl/img/idle-look/04.png +0 -0
- package/assets/whaleGirl/img/idle-look/05.png +0 -0
- package/assets/whaleGirl/img/idle-look/06.png +0 -0
- package/assets/whaleGirl/img/idle-look/07.png +0 -0
- package/assets/whaleGirl/img/idle-look/08.png +0 -0
- package/assets/whaleGirl/img/idle-look/09.png +0 -0
- package/assets/whaleGirl/img/idle-look/10.png +0 -0
- package/assets/whaleGirl/img/idle-look/11.png +0 -0
- package/assets/whaleGirl/img/idle-look/12.png +0 -0
- package/assets/whaleGirl/img/idle-spout/00.png +0 -0
- package/assets/whaleGirl/img/idle-spout/01.png +0 -0
- package/assets/whaleGirl/img/idle-spout/02.png +0 -0
- package/assets/whaleGirl/img/idle-spout/03.png +0 -0
- package/assets/whaleGirl/img/idle-spout/04.png +0 -0
- package/assets/whaleGirl/img/idle-spout/05.png +0 -0
- package/assets/whaleGirl/img/idle-spout/06.png +0 -0
- package/assets/whaleGirl/img/idle-spout/07.png +0 -0
- package/assets/whaleGirl/img/idle-spout/08.png +0 -0
- package/assets/whaleGirl/img/idle-spout/09.png +0 -0
- package/assets/whaleGirl/img/idle-spout/10.png +0 -0
- package/assets/whaleGirl/img/music/00.png +0 -0
- package/assets/whaleGirl/img/music/01.png +0 -0
- package/assets/whaleGirl/img/music/02.png +0 -0
- package/assets/whaleGirl/img/music/03.png +0 -0
- package/assets/whaleGirl/img/music/04.png +0 -0
- package/assets/whaleGirl/img/music/05.png +0 -0
- package/assets/whaleGirl/img/music/06.png +0 -0
- package/assets/whaleGirl/img/music/07.png +0 -0
- package/assets/whaleGirl/img/notification/00.png +0 -0
- package/assets/whaleGirl/img/notification/01.png +0 -0
- package/assets/whaleGirl/img/notification/02.png +0 -0
- package/assets/whaleGirl/img/notification/03.png +0 -0
- package/assets/whaleGirl/img/notification/04.png +0 -0
- package/assets/whaleGirl/img/notification/05.png +0 -0
- package/assets/whaleGirl/img/notification/06.png +0 -0
- package/assets/whaleGirl/img/notification/07.png +0 -0
- package/assets/whaleGirl/img/poke-left/00.png +0 -0
- package/assets/whaleGirl/img/poke-left/01.png +0 -0
- package/assets/whaleGirl/img/poke-left/02.png +0 -0
- package/assets/whaleGirl/img/poke-left/03.png +0 -0
- package/assets/whaleGirl/img/poke-left/04.png +0 -0
- package/assets/whaleGirl/img/poke-left/05.png +0 -0
- package/assets/whaleGirl/img/poke-left/06.png +0 -0
- package/assets/whaleGirl/img/poke-left/07.png +0 -0
- package/assets/whaleGirl/img/poke-left/08.png +0 -0
- package/assets/whaleGirl/img/poke-left/09.png +0 -0
- package/assets/whaleGirl/img/poke-left/10.png +0 -0
- package/assets/whaleGirl/img/poke-right/00.png +0 -0
- package/assets/whaleGirl/img/poke-right/01.png +0 -0
- package/assets/whaleGirl/img/poke-right/02.png +0 -0
- package/assets/whaleGirl/img/poke-right/03.png +0 -0
- package/assets/whaleGirl/img/poke-right/04.png +0 -0
- package/assets/whaleGirl/img/poke-right/05.png +0 -0
- package/assets/whaleGirl/img/poke-right/06.png +0 -0
- package/assets/whaleGirl/img/poke-right/07.png +0 -0
- package/assets/whaleGirl/img/poke-right/08.png +0 -0
- package/assets/whaleGirl/img/poke-right/09.png +0 -0
- package/assets/whaleGirl/img/poke-right/10.png +0 -0
- package/assets/whaleGirl/img/sleeping/00.png +0 -0
- package/assets/whaleGirl/img/sleeping/01.png +0 -0
- package/assets/whaleGirl/img/sleeping/02.png +0 -0
- package/assets/whaleGirl/img/sleeping/03.png +0 -0
- package/assets/whaleGirl/img/sleeping/04.png +0 -0
- package/assets/whaleGirl/img/sleeping/05.png +0 -0
- package/assets/whaleGirl/img/smile-hearts/00.png +0 -0
- package/assets/whaleGirl/img/smile-hearts/01.png +0 -0
- package/assets/whaleGirl/img/smile-hearts/02.png +0 -0
- package/assets/whaleGirl/img/smile-hearts/03.png +0 -0
- package/assets/whaleGirl/img/smile-hearts/04.png +0 -0
- package/assets/whaleGirl/img/smile-hearts/05.png +0 -0
- package/assets/whaleGirl/img/smile-hearts/06.png +0 -0
- package/assets/whaleGirl/img/smile-hearts/07.png +0 -0
- package/assets/whaleGirl/img/smile-hearts/08.png +0 -0
- package/assets/whaleGirl/img/smile-hearts/09.png +0 -0
- package/assets/whaleGirl/img/smile-hearts/10.png +0 -0
- package/assets/whaleGirl/img/smile-hearts/11.png +0 -0
- package/assets/whaleGirl/img/smile-hearts/12.png +0 -0
- package/assets/whaleGirl/img/smile-hearts/13.png +0 -0
- package/assets/whaleGirl/img/smile-hearts/14.png +0 -0
- package/assets/whaleGirl/img/smile-hearts/15.png +0 -0
- package/assets/whaleGirl/img/swim/00.png +0 -0
- package/assets/whaleGirl/img/swim/01.png +0 -0
- package/assets/whaleGirl/img/swim/02.png +0 -0
- package/assets/whaleGirl/img/swim/03.png +0 -0
- package/assets/whaleGirl/img/swim/04.png +0 -0
- package/assets/whaleGirl/img/swim/05.png +0 -0
- package/assets/whaleGirl/img/swim/06.png +0 -0
- package/assets/whaleGirl/img/swim/07.png +0 -0
- package/assets/whaleGirl/img/thinking/00.png +0 -0
- package/assets/whaleGirl/img/thinking/01.png +0 -0
- package/assets/whaleGirl/img/thinking/02.png +0 -0
- package/assets/whaleGirl/img/thinking/03.png +0 -0
- package/assets/whaleGirl/img/thinking/04.png +0 -0
- package/assets/whaleGirl/img/thinking/05.png +0 -0
- package/assets/whaleGirl/img/thinking/06.png +0 -0
- package/assets/whaleGirl/img/thinking/07.png +0 -0
- package/assets/whaleGirl/img/thinking/08.png +0 -0
- package/assets/whaleGirl/img/thinking/09.png +0 -0
- package/assets/whaleGirl/img/thinking/10.png +0 -0
- package/assets/whaleGirl/img/thinking/11.png +0 -0
- package/assets/whaleGirl/img/thinking/12.png +0 -0
- package/assets/whaleGirl/img/thinking/13.png +0 -0
- package/assets/whaleGirl/img/thinking/14.png +0 -0
- package/assets/whaleGirl/img/thinking/15.png +0 -0
- package/assets/whaleGirl/img/thinking/16.png +0 -0
- package/assets/whaleGirl/img/thumbs-up/00.png +0 -0
- package/assets/whaleGirl/img/thumbs-up/01.png +0 -0
- package/assets/whaleGirl/img/thumbs-up/02.png +0 -0
- package/assets/whaleGirl/img/thumbs-up/03.png +0 -0
- package/assets/whaleGirl/img/thumbs-up/04.png +0 -0
- package/assets/whaleGirl/img/thumbs-up/05.png +0 -0
- package/assets/whaleGirl/img/thumbs-up/06.png +0 -0
- package/assets/whaleGirl/img/thumbs-up/07.png +0 -0
- package/assets/whaleGirl/img/thumbs-up/08.png +0 -0
- package/assets/whaleGirl/img/thumbs-up/09.png +0 -0
- package/assets/whaleGirl/img/thumbs-up/10.png +0 -0
- package/assets/whaleGirl/img/thumbs-up/11.png +0 -0
- package/assets/whaleGirl/img/thumbs-up/12.png +0 -0
- package/assets/whaleGirl/img/tickle/00.png +0 -0
- package/assets/whaleGirl/img/tickle/01.png +0 -0
- package/assets/whaleGirl/img/tickle/02.png +0 -0
- package/assets/whaleGirl/img/tickle/03.png +0 -0
- package/assets/whaleGirl/img/tickle/04.png +0 -0
- package/assets/whaleGirl/img/tickle/05.png +0 -0
- package/assets/whaleGirl/img/tickle/06.png +0 -0
- package/assets/whaleGirl/img/tickle/07.png +0 -0
- package/assets/whaleGirl/img/tickle/08.png +0 -0
- package/assets/whaleGirl/img/tickle/09.png +0 -0
- package/assets/whaleGirl/img/tickle/10.png +0 -0
- package/assets/whaleGirl/img/tickle/11.png +0 -0
- package/assets/whaleGirl/img/tickle/12.png +0 -0
- package/assets/whaleGirl/img/tickle/13.png +0 -0
- package/assets/whaleGirl/img/timings.json +1 -0
- package/assets/whaleGirl/img/typing/00.png +0 -0
- package/assets/whaleGirl/img/typing/01.png +0 -0
- package/assets/whaleGirl/img/typing/02.png +0 -0
- package/assets/whaleGirl/img/typing/03.png +0 -0
- package/assets/whaleGirl/img/typing/04.png +0 -0
- package/assets/whaleGirl/img/typing/05.png +0 -0
- package/assets/whaleGirl/img/typing/06.png +0 -0
- package/assets/whaleGirl/img/typing/07.png +0 -0
- package/assets/whaleGirl/img/typing/08.png +0 -0
- package/assets/whaleGirl/img/typing/09.png +0 -0
- package/assets/whaleGirl/img/typing/10.png +0 -0
- package/assets/whaleGirl/img/typing/11.png +0 -0
- package/assets/whaleGirl/img/typing/12.png +0 -0
- package/assets/whaleGirl/img/typing/13.png +0 -0
- package/assets/whaleGirl/img/waking/00.png +0 -0
- package/assets/whaleGirl/img/waking/01.png +0 -0
- package/assets/whaleGirl/img/waking/02.png +0 -0
- package/assets/whaleGirl/img/waking/03.png +0 -0
- package/assets/whaleGirl/img/waking/04.png +0 -0
- package/assets/whaleGirl/img/waking/05.png +0 -0
- package/assets/whaleGirl/img/waking/06.png +0 -0
- package/assets/whaleGirl/img/waking/07.png +0 -0
- package/assets/whaleGirl/img/waking/08.png +0 -0
- package/assets/whaleGirl/img/waking/09.png +0 -0
- package/assets/whaleGirl/img/waking/10.png +0 -0
- package/bin/dsh-tui.js +38 -6
- package/cordis.patch.yml +31 -6
- package/guide/dsh-tui-guide/SKILL.md +37 -0
- package/guide/dsh-tui-guide/configuration.en.md +415 -0
- package/guide/dsh-tui-guide/configuration.md +354 -0
- package/guide/dsh-tui-guide/getting-started.en.md +401 -0
- package/guide/dsh-tui-guide/getting-started.md +399 -0
- package/guide/dsh-tui-guide/interaction.en.md +738 -0
- package/guide/dsh-tui-guide/interaction.md +793 -0
- package/guide/dsh-tui-guide/migrate.en.md +166 -0
- package/guide/dsh-tui-guide/migrate.md +132 -0
- package/guide/dsh-tui-guide/plugins.en.md +78 -0
- package/guide/dsh-tui-guide/plugins.md +64 -0
- package/guide/dsh-tui-guide/themes.en.md +197 -0
- package/guide/dsh-tui-guide/themes.md +188 -0
- package/guide/dsh-tui-guide/user-guide.en.md +711 -0
- package/guide/dsh-tui-guide/user-guide.md +666 -0
- package/guide/dsh-tui-guide/vscode.en.md +301 -0
- package/guide/dsh-tui-guide/vscode.md +272 -0
- package/lib/settings.json +219 -5
- package/lib/types/adapter/channel/ui-policy.d.ts +7 -2
- package/lib/types/adapter/channel/ui-policy.d.ts.map +1 -1
- package/lib/types/adapter/channel/ui-policy.js +18 -1
- package/lib/types/adapter/index.d.ts +1 -1
- package/lib/types/adapter/index.js +1 -1
- package/lib/types/adapter/kernel/host-facade.d.ts +4 -1
- package/lib/types/adapter/kernel/host-facade.d.ts.map +1 -1
- package/lib/types/adapter/kernel/host-facade.js +8 -1
- package/lib/types/adapter/kernel/runtime.d.ts.map +1 -1
- package/lib/types/adapter/kernel/runtime.js +13 -0
- package/lib/types/adapter/kernel/slices/index.d.ts +1 -0
- package/lib/types/adapter/kernel/slices/index.d.ts.map +1 -1
- package/lib/types/adapter/kernel/slices/index.js +3 -0
- package/lib/types/adapter/kernel/slices/panels.d.ts +3 -0
- package/lib/types/adapter/kernel/slices/panels.d.ts.map +1 -0
- package/lib/types/adapter/kernel/slices/panels.js +14 -0
- package/lib/types/adapter/ports/channel-capabilities.d.ts +48 -0
- package/lib/types/adapter/ports/channel-capabilities.d.ts.map +1 -0
- package/lib/types/adapter/ports/channel-capabilities.js +2 -0
- package/lib/types/adapter/ports/channel-catalog.d.ts +7 -0
- package/lib/types/adapter/ports/channel-catalog.d.ts.map +1 -1
- package/lib/types/adapter/ports/channel-display.d.ts +10 -0
- package/lib/types/adapter/ports/channel-display.d.ts.map +1 -1
- package/lib/types/adapter/ports/channel-settings.d.ts +2 -1
- package/lib/types/adapter/ports/channel-settings.d.ts.map +1 -1
- package/lib/types/adapter/ports/channel-ui.d.ts +91 -4
- package/lib/types/adapter/ports/channel-ui.d.ts.map +1 -1
- package/lib/types/adapter/ports/channel-view.d.ts +137 -9
- package/lib/types/adapter/ports/channel-view.d.ts.map +1 -1
- package/lib/types/adapter/ports/channel.d.ts +1 -1
- package/lib/types/adapter/ports/channel.js +1 -1
- package/lib/types/adapter/ports/descriptor.d.ts +1 -1
- package/lib/types/adapter/ports/descriptor.js +1 -1
- package/lib/types/adapter/ports/index.d.ts +1 -1
- package/lib/types/adapter/ports/index.js +1 -1
- package/lib/types/adapter/ports/panels.d.ts +28 -0
- package/lib/types/adapter/ports/panels.d.ts.map +1 -0
- package/lib/types/adapter/ports/panels.js +8 -0
- package/lib/types/adapter/ports/workspace.d.ts +1 -1
- package/lib/types/adapter/ports/workspace.js +1 -1
- package/lib/types/adapter/spec/index.d.ts +2 -2
- package/lib/types/adapter/spec/index.js +2 -2
- package/lib/types/adapter/spec/profile.d.ts +6 -6
- package/lib/types/adapter/spec/profile.d.ts.map +1 -1
- package/lib/types/adapter/spec/profile.js +6 -6
- package/lib/types/adapter/spec/protocol-constants.d.ts +3 -3
- package/lib/types/adapter/spec/protocol-constants.d.ts.map +1 -1
- package/lib/types/adapter/spec/protocol-constants.js +5 -5
- package/lib/types/adapter/spec/tui-contributions.d.ts +4 -4
- package/lib/types/adapter/spec/tui-contributions.d.ts.map +1 -1
- package/lib/types/adapter/spec/tui-contributions.js +5 -5
- package/lib/types/adapter/standard/descriptor.js +1 -1
- package/lib/types/adapter/standard/index.d.ts +3 -3
- package/lib/types/adapter/standard/index.js +3 -3
- package/lib/types/adapter/standard/registry.d.ts +3 -2
- package/lib/types/adapter/standard/registry.d.ts.map +1 -1
- package/lib/types/adapter/standard/registry.js +6 -5
- package/lib/types/adapter/standard/tui-extension.d.ts +1 -1
- package/lib/types/adapter/standard/tui-extension.js +1 -1
- package/lib/types/adapter/upstream/index.d.ts +1 -0
- package/lib/types/adapter/upstream/index.d.ts.map +1 -1
- package/lib/types/adapter/upstream/index.js +1 -0
- package/lib/types/adapter/upstream/panels-driver.d.ts +18 -0
- package/lib/types/adapter/upstream/panels-driver.d.ts.map +1 -0
- package/lib/types/adapter/upstream/panels-driver.js +159 -0
- package/lib/types/api.d.ts +2 -0
- package/lib/types/api.d.ts.map +1 -1
- package/lib/types/api.js +3 -1
- package/lib/types/commands.d.ts.map +1 -1
- package/lib/types/commands.js +12 -4
- package/lib/types/components/ActivityLine.d.ts +6 -9
- package/lib/types/components/ActivityLine.d.ts.map +1 -1
- package/lib/types/components/ActivityLine.js +7 -8
- package/lib/types/components/Chat/JobCard.d.ts +27 -1
- package/lib/types/components/Chat/JobCard.d.ts.map +1 -1
- package/lib/types/components/Chat/JobCard.js +128 -33
- package/lib/types/components/Chat/JobGroupHeader.d.ts +27 -0
- package/lib/types/components/Chat/JobGroupHeader.d.ts.map +1 -0
- package/lib/types/components/Chat/JobGroupHeader.js +62 -0
- package/lib/types/components/Chat/SubagentMessage.js +6 -6
- package/lib/types/components/GoalTodoPanel.d.ts +13 -1
- package/lib/types/components/GoalTodoPanel.d.ts.map +1 -1
- package/lib/types/components/GoalTodoPanel.js +55 -14
- package/lib/types/components/JobsPanel.d.ts +42 -2
- package/lib/types/components/JobsPanel.d.ts.map +1 -1
- package/lib/types/components/JobsPanel.js +220 -40
- package/lib/types/components/LogoV2.d.ts +43 -3
- package/lib/types/components/LogoV2.d.ts.map +1 -1
- package/lib/types/components/LogoV2.js +42 -15
- package/lib/types/components/MessageList.d.ts +8 -2
- package/lib/types/components/MessageList.d.ts.map +1 -1
- package/lib/types/components/MessageList.js +215 -21
- package/lib/types/components/OverlayAbove.d.ts +11 -1
- package/lib/types/components/OverlayAbove.d.ts.map +1 -1
- package/lib/types/components/OverlayAbove.js +2 -12
- package/lib/types/components/PageMargin.d.ts.map +1 -1
- package/lib/types/components/PageMargin.js +3 -1
- package/lib/types/components/PluginSceneBoundary.d.ts +1 -1
- package/lib/types/components/PluginSceneBoundary.js +1 -1
- package/lib/types/components/PresetPicker.d.ts +4 -0
- package/lib/types/components/PresetPicker.d.ts.map +1 -1
- package/lib/types/components/PresetPicker.js +5 -1
- package/lib/types/components/PromptInput.d.ts +20 -22
- package/lib/types/components/PromptInput.d.ts.map +1 -1
- package/lib/types/components/PromptInput.js +425 -157
- package/lib/types/components/SearchBox.d.ts +22 -5
- package/lib/types/components/SearchBox.d.ts.map +1 -1
- package/lib/types/components/SearchBox.js +17 -13
- package/lib/types/components/StarPrompt.d.ts +6 -0
- package/lib/types/components/StarPrompt.d.ts.map +1 -1
- package/lib/types/components/StarPrompt.js +45 -0
- package/lib/types/components/SubagentCard.d.ts.map +1 -1
- package/lib/types/components/SubagentCard.js +24 -9
- package/lib/types/components/SubagentDashboard.d.ts +18 -3
- package/lib/types/components/SubagentDashboard.d.ts.map +1 -1
- package/lib/types/components/SubagentDashboard.js +53 -5
- package/lib/types/components/SubagentDetailScene.d.ts +7 -1
- package/lib/types/components/SubagentDetailScene.d.ts.map +1 -1
- package/lib/types/components/SubagentDetailScene.js +160 -13
- package/lib/types/components/SurfaceEdges.d.ts +21 -0
- package/lib/types/components/SurfaceEdges.d.ts.map +1 -0
- package/lib/types/components/SurfaceEdges.js +7 -0
- package/lib/types/components/ThemePicker.d.ts +9 -0
- package/lib/types/components/ThemePicker.d.ts.map +1 -1
- package/lib/types/components/ThemePicker.js +74 -10
- package/lib/types/components/ThemePreviewPane.d.ts +26 -0
- package/lib/types/components/ThemePreviewPane.d.ts.map +1 -0
- package/lib/types/components/ThemePreviewPane.js +99 -0
- package/lib/types/components/WhaleGirl.d.ts +6 -0
- package/lib/types/components/WhaleGirl.d.ts.map +1 -1
- package/lib/types/components/WhaleGirl.js +18 -0
- package/lib/types/components/design-system/Divider.d.ts.map +1 -1
- package/lib/types/components/design-system/Divider.js +14 -9
- package/lib/types/components/launchpadActions.d.ts +73 -0
- package/lib/types/components/launchpadActions.d.ts.map +1 -0
- package/lib/types/components/launchpadActions.js +111 -0
- package/lib/types/components/launchpadLayout.d.ts +62 -0
- package/lib/types/components/launchpadLayout.d.ts.map +1 -0
- package/lib/types/components/launchpadLayout.js +176 -0
- package/lib/types/components/messages/AssistantThinkingMessage.js +4 -4
- package/lib/types/components/onboardingModel.d.ts +83 -0
- package/lib/types/components/onboardingModel.d.ts.map +1 -0
- package/lib/types/components/onboardingModel.js +128 -0
- package/lib/types/components/sidePanel/InfoPanel.d.ts +17 -0
- package/lib/types/components/sidePanel/InfoPanel.d.ts.map +1 -0
- package/lib/types/components/sidePanel/InfoPanel.js +124 -0
- package/lib/types/components/sidePanel/PanelBar.d.ts +45 -0
- package/lib/types/components/sidePanel/PanelBar.d.ts.map +1 -0
- package/lib/types/components/sidePanel/PanelBar.js +104 -0
- package/lib/types/components/sidePanel/PanelErrorBoundary.d.ts +21 -0
- package/lib/types/components/sidePanel/PanelErrorBoundary.d.ts.map +1 -0
- package/lib/types/components/sidePanel/PanelErrorBoundary.js +30 -0
- package/lib/types/components/sidePanel/PanelHost.d.ts +36 -0
- package/lib/types/components/sidePanel/PanelHost.d.ts.map +1 -0
- package/lib/types/components/sidePanel/PanelHost.js +81 -0
- package/lib/types/components/sidePanel/PanelPicker.d.ts +24 -0
- package/lib/types/components/sidePanel/PanelPicker.d.ts.map +1 -0
- package/lib/types/components/sidePanel/PanelPicker.js +45 -0
- package/lib/types/components/sidePanel/PanelStore.d.ts +55 -0
- package/lib/types/components/sidePanel/PanelStore.d.ts.map +1 -0
- package/lib/types/components/sidePanel/PanelStore.js +109 -0
- package/lib/types/components/sidePanel/SidePanelColumn.d.ts +31 -0
- package/lib/types/components/sidePanel/SidePanelColumn.d.ts.map +1 -0
- package/lib/types/components/sidePanel/SidePanelColumn.js +70 -0
- package/lib/types/components/sidePanel/SidePanelLayout.d.ts +54 -0
- package/lib/types/components/sidePanel/SidePanelLayout.d.ts.map +1 -0
- package/lib/types/components/sidePanel/SidePanelLayout.js +81 -0
- package/lib/types/components/sidePanel/SidePanelRuntimeContext.d.ts +43 -0
- package/lib/types/components/sidePanel/SidePanelRuntimeContext.d.ts.map +1 -0
- package/lib/types/components/sidePanel/SidePanelRuntimeContext.js +26 -0
- package/lib/types/components/sidePanel/TrajectoryPanel.d.ts +7 -0
- package/lib/types/components/sidePanel/TrajectoryPanel.d.ts.map +1 -0
- package/lib/types/components/sidePanel/TrajectoryPanel.js +263 -0
- package/lib/types/components/sidePanel/WorkspacePanel.d.ts +4 -0
- package/lib/types/components/sidePanel/WorkspacePanel.d.ts.map +1 -0
- package/lib/types/components/sidePanel/WorkspacePanel.js +171 -0
- package/lib/types/components/sidePanel/builtinPanels.d.ts +3 -0
- package/lib/types/components/sidePanel/builtinPanels.d.ts.map +1 -0
- package/lib/types/components/sidePanel/builtinPanels.js +229 -0
- package/lib/types/components/sidePanel/companion/CompanionPanel.d.ts +53 -0
- package/lib/types/components/sidePanel/companion/CompanionPanel.d.ts.map +1 -0
- package/lib/types/components/sidePanel/companion/CompanionPanel.js +528 -0
- package/lib/types/components/sidePanel/companion/SplashMascot.d.ts +32 -0
- package/lib/types/components/sidePanel/companion/SplashMascot.d.ts.map +1 -0
- package/lib/types/components/sidePanel/companion/SplashMascot.js +103 -0
- package/lib/types/components/sidePanel/companion/deepy.d.ts +75 -0
- package/lib/types/components/sidePanel/companion/deepy.d.ts.map +1 -0
- package/lib/types/components/sidePanel/companion/deepy.js +222 -0
- package/lib/types/components/sidePanel/companion/mood.d.ts +176 -0
- package/lib/types/components/sidePanel/companion/mood.d.ts.map +1 -0
- package/lib/types/components/sidePanel/companion/mood.js +212 -0
- package/lib/types/components/sidePanel/companion/pose.d.ts +43 -0
- package/lib/types/components/sidePanel/companion/pose.d.ts.map +1 -0
- package/lib/types/components/sidePanel/companion/pose.js +34 -0
- package/lib/types/components/sidePanel/companion/skins.d.ts +102 -0
- package/lib/types/components/sidePanel/companion/skins.d.ts.map +1 -0
- package/lib/types/components/sidePanel/companion/skins.js +408 -0
- package/lib/types/components/sidePanel/dimensions.d.ts +60 -0
- package/lib/types/components/sidePanel/dimensions.d.ts.map +1 -0
- package/lib/types/components/sidePanel/dimensions.js +75 -0
- package/lib/types/components/sidePanel/jobsFocusStore.d.ts +21 -0
- package/lib/types/components/sidePanel/jobsFocusStore.d.ts.map +1 -0
- package/lib/types/components/sidePanel/jobsFocusStore.js +30 -0
- package/lib/types/components/sidePanel/panelBridge.d.ts +44 -0
- package/lib/types/components/sidePanel/panelBridge.d.ts.map +1 -0
- package/lib/types/components/sidePanel/panelBridge.js +55 -0
- package/lib/types/components/sidePanel/pluginPanelAdapter.d.ts +22 -0
- package/lib/types/components/sidePanel/pluginPanelAdapter.d.ts.map +1 -0
- package/lib/types/components/sidePanel/pluginPanelAdapter.js +148 -0
- package/lib/types/components/sidePanel/types.d.ts +110 -0
- package/lib/types/components/sidePanel/types.d.ts.map +1 -0
- package/lib/types/components/sidePanel/types.js +1 -0
- package/lib/types/components/sidePanel/usePanelInput.d.ts +5 -0
- package/lib/types/components/sidePanel/usePanelInput.d.ts.map +1 -0
- package/lib/types/components/sidePanel/usePanelInput.js +44 -0
- package/lib/types/components/sidePanel/useSidePanel.d.ts +47 -0
- package/lib/types/components/sidePanel/useSidePanel.d.ts.map +1 -0
- package/lib/types/components/sidePanel/useSidePanel.js +284 -0
- package/lib/types/components/trajectory/MiniWake.d.ts +11 -1
- package/lib/types/components/trajectory/MiniWake.d.ts.map +1 -1
- package/lib/types/components/trajectory/MiniWake.js +9 -3
- package/lib/types/components/workspaces/HomeWorkspaceRow.d.ts +3 -1
- package/lib/types/components/workspaces/HomeWorkspaceRow.d.ts.map +1 -1
- package/lib/types/components/workspaces/HomeWorkspaceRow.js +3 -2
- package/lib/types/deepseekPricing.d.ts +10 -9
- package/lib/types/deepseekPricing.d.ts.map +1 -1
- package/lib/types/deepseekPricing.js +18 -11
- package/lib/types/dsh-adapter/channel/attached-context.d.ts +58 -0
- package/lib/types/dsh-adapter/channel/attached-context.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/attached-context.js +109 -0
- package/lib/types/dsh-adapter/channel/binding-events.d.ts +6 -0
- package/lib/types/dsh-adapter/channel/binding-events.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/binding-events.js +43 -0
- package/lib/types/dsh-adapter/channel/capabilities.d.ts +82 -0
- package/lib/types/dsh-adapter/channel/capabilities.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/capabilities.js +165 -0
- package/lib/types/dsh-adapter/channel/command-completions.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/command-completions.js +8 -0
- package/lib/types/dsh-adapter/channel/context-bookkeeping.d.ts +4 -12
- package/lib/types/dsh-adapter/channel/context-bookkeeping.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/context-bookkeeping.js +9 -4
- package/lib/types/dsh-adapter/channel/external-commands.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/external-commands.js +8 -2
- package/lib/types/dsh-adapter/channel/input-delivery.d.ts +13 -2
- package/lib/types/dsh-adapter/channel/input-delivery.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/input-delivery.js +18 -1
- package/lib/types/dsh-adapter/channel/job-projection.d.ts +1 -0
- package/lib/types/dsh-adapter/channel/job-projection.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/job-projection.js +88 -3
- package/lib/types/dsh-adapter/channel/mode-actions.d.ts +13 -3
- package/lib/types/dsh-adapter/channel/mode-actions.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/mode-actions.js +55 -9
- package/lib/types/dsh-adapter/channel/mode-permission-actions.d.ts +8 -1
- package/lib/types/dsh-adapter/channel/mode-permission-actions.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/mode-permission-actions.js +25 -10
- package/lib/types/dsh-adapter/channel/preferences.d.ts +1 -1
- package/lib/types/dsh-adapter/channel/preferences.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/preferences.js +26 -8
- package/lib/types/dsh-adapter/channel/projection.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/projection.js +42 -37
- package/lib/types/dsh-adapter/channel/reports.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/reports.js +13 -4
- package/lib/types/dsh-adapter/channel/session-reset.d.ts +5 -1
- package/lib/types/dsh-adapter/channel/session-reset.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/session-reset.js +1 -0
- package/lib/types/dsh-adapter/channel/state.d.ts +21 -3
- package/lib/types/dsh-adapter/channel/state.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/state.js +3 -2
- package/lib/types/dsh-adapter/channel/subagent-projection.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/subagent-projection.js +5 -0
- package/lib/types/dsh-adapter/channel/types.d.ts +1 -1
- package/lib/types/dsh-adapter/channel/types.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/usage.d.ts +18 -1
- package/lib/types/dsh-adapter/channel/usage.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/usage.js +97 -2
- package/lib/types/dsh-adapter/channel.d.ts +1 -1
- package/lib/types/dsh-adapter/channel.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel.js +72 -4
- package/lib/types/dsh-adapter/context-occupancy.d.ts +204 -0
- package/lib/types/dsh-adapter/context-occupancy.d.ts.map +1 -0
- package/lib/types/dsh-adapter/context-occupancy.js +299 -0
- package/lib/types/dsh-adapter/contract.d.ts +19 -4
- package/lib/types/dsh-adapter/contract.d.ts.map +1 -1
- package/lib/types/dsh-adapter/contract.js +33 -3
- package/lib/types/dsh-adapter/index.d.ts +32 -0
- package/lib/types/dsh-adapter/index.d.ts.map +1 -1
- package/lib/types/dsh-adapter/index.js +20 -1
- package/lib/types/dsh-adapter/jobs.d.ts +82 -16
- package/lib/types/dsh-adapter/jobs.d.ts.map +1 -1
- package/lib/types/dsh-adapter/jobs.js +104 -9
- package/lib/types/dsh-adapter/migrate/sessionize.d.ts.map +1 -1
- package/lib/types/dsh-adapter/migrate/sessionize.js +11 -12
- package/lib/types/dsh-adapter/oauth/bonus.d.ts +27 -0
- package/lib/types/dsh-adapter/oauth/bonus.d.ts.map +1 -0
- package/lib/types/dsh-adapter/oauth/bonus.js +69 -0
- package/{node_modules/@deepseek-harness-tui/dsh-auth/lib → lib/types/dsh-adapter/oauth}/command.d.ts +2 -1
- package/lib/types/dsh-adapter/oauth/command.d.ts.map +1 -0
- package/{node_modules/@deepseek-harness-tui/dsh-auth/lib → lib/types/dsh-adapter/oauth}/command.js +7 -4
- package/{node_modules/@deepseek-harness-tui/dsh-auth/lib → lib/types/dsh-adapter/oauth}/credentials.d.ts +13 -10
- package/lib/types/dsh-adapter/oauth/credentials.d.ts.map +1 -0
- package/{node_modules/@deepseek-harness-tui/dsh-auth/lib → lib/types/dsh-adapter/oauth}/credentials.js +61 -23
- package/lib/types/dsh-adapter/oauth/deepseek.d.ts +39 -0
- package/lib/types/dsh-adapter/oauth/deepseek.d.ts.map +1 -0
- package/lib/types/dsh-adapter/oauth/deepseek.js +189 -0
- package/{node_modules/@deepseek-harness-tui/dsh-auth/lib → lib/types/dsh-adapter/oauth}/index.d.ts +24 -16
- package/lib/types/dsh-adapter/oauth/index.d.ts.map +1 -0
- package/{node_modules/@deepseek-harness-tui/dsh-auth/lib → lib/types/dsh-adapter/oauth}/index.js +34 -20
- package/{node_modules/@deepseek-harness-tui/dsh-auth/lib → lib/types/dsh-adapter/oauth}/interaction.d.ts +14 -12
- package/lib/types/dsh-adapter/oauth/interaction.d.ts.map +1 -0
- package/lib/types/dsh-adapter/oauth/interaction.js +283 -0
- package/{node_modules/@deepseek-harness-tui/dsh-auth/lib → lib/types/dsh-adapter/oauth}/opener.d.ts +2 -1
- package/lib/types/dsh-adapter/oauth/opener.d.ts.map +1 -0
- package/{node_modules/@deepseek-harness-tui/dsh-auth/lib → lib/types/dsh-adapter/oauth}/opener.js +1 -1
- package/{node_modules/@deepseek-harness-tui/dsh-auth/lib → lib/types/dsh-adapter/oauth}/pi-ai.d.ts +10 -3
- package/lib/types/dsh-adapter/oauth/pi-ai.d.ts.map +1 -0
- package/{node_modules/@deepseek-harness-tui/dsh-auth/lib → lib/types/dsh-adapter/oauth}/pi-ai.js +8 -3
- package/{node_modules/@deepseek-harness-tui/dsh-auth/lib → lib/types/dsh-adapter/oauth}/profiles.d.ts +6 -3
- package/lib/types/dsh-adapter/oauth/profiles.d.ts.map +1 -0
- package/{node_modules/@deepseek-harness-tui/dsh-auth/lib → lib/types/dsh-adapter/oauth}/profiles.js +11 -3
- package/{node_modules/@deepseek-harness-tui/dsh-auth/lib → lib/types/dsh-adapter/oauth}/service.d.ts +14 -7
- package/lib/types/dsh-adapter/oauth/service.d.ts.map +1 -0
- package/{node_modules/@deepseek-harness-tui/dsh-auth/lib → lib/types/dsh-adapter/oauth}/service.js +82 -17
- package/lib/types/dsh-adapter/panel-runtime-registry.d.ts +39 -0
- package/lib/types/dsh-adapter/panel-runtime-registry.d.ts.map +1 -0
- package/lib/types/dsh-adapter/panel-runtime-registry.js +84 -0
- package/lib/types/dsh-adapter/panels.d.ts +251 -0
- package/lib/types/dsh-adapter/panels.d.ts.map +1 -0
- package/lib/types/dsh-adapter/panels.js +407 -0
- package/lib/types/dsh-adapter/plugin-host.js +1 -1
- package/lib/types/dsh-adapter/plugin.d.ts +25 -2
- package/lib/types/dsh-adapter/plugin.d.ts.map +1 -1
- package/lib/types/dsh-adapter/plugin.js +241 -44
- package/lib/types/dsh-adapter/presets.d.ts +26 -4
- package/lib/types/dsh-adapter/presets.d.ts.map +1 -1
- package/lib/types/dsh-adapter/presets.js +29 -5
- package/lib/types/dsh-adapter/providerWizard.d.ts.map +1 -1
- package/lib/types/dsh-adapter/providerWizard.js +6 -2
- package/lib/types/dsh-adapter/startup-args.d.ts +8 -0
- package/lib/types/dsh-adapter/startup-args.d.ts.map +1 -0
- package/lib/types/dsh-adapter/startup-args.js +34 -0
- package/lib/types/dsh-adapter/subagents.d.ts +1 -0
- package/lib/types/dsh-adapter/subagents.d.ts.map +1 -1
- package/lib/types/dsh-adapter/subagents.js +10 -1
- package/lib/types/history.d.ts +24 -7
- package/lib/types/history.d.ts.map +1 -1
- package/lib/types/history.js +77 -18
- package/lib/types/i18n.d.ts +908 -33
- package/lib/types/i18n.d.ts.map +1 -1
- package/lib/types/i18n.js +355 -17
- package/lib/types/ink/components/App.d.ts +14 -1
- package/lib/types/ink/components/App.d.ts.map +1 -1
- package/lib/types/ink/components/App.js +71 -61
- package/lib/types/ink/components/TerminalSizeContext.d.ts +7 -0
- package/lib/types/ink/components/TerminalSizeContext.d.ts.map +1 -1
- package/lib/types/ink/hooks/use-input.d.ts +11 -0
- package/lib/types/ink/hooks/use-input.d.ts.map +1 -1
- package/lib/types/ink/hooks/use-input.js +8 -2
- package/lib/types/ink/hooks/use-terminal-viewport.d.ts.map +1 -1
- package/lib/types/ink/hooks/use-terminal-viewport.js +3 -1
- package/lib/types/ink/ink.d.ts +18 -0
- package/lib/types/ink/ink.d.ts.map +1 -1
- package/lib/types/ink/ink.js +51 -8
- package/lib/types/ink/output.d.ts +10 -1
- package/lib/types/ink/output.d.ts.map +1 -1
- package/lib/types/ink/output.js +3 -3
- package/lib/types/ink/parse-keypress.d.ts +71 -3
- package/lib/types/ink/parse-keypress.d.ts.map +1 -1
- package/lib/types/ink/parse-keypress.js +815 -133
- package/lib/types/ink/render-node-to-output.d.ts +1 -1
- package/lib/types/ink/render-node-to-output.d.ts.map +1 -1
- package/lib/types/ink/render-node-to-output.js +37 -5
- package/lib/types/ink/screen.d.ts +26 -1
- package/lib/types/ink/screen.d.ts.map +1 -1
- package/lib/types/ink/screen.js +96 -1
- package/lib/types/ink/selection.d.ts +23 -1
- package/lib/types/ink/selection.d.ts.map +1 -1
- package/lib/types/ink/selection.js +102 -26
- package/lib/types/ink/sixel-codec.d.ts +11 -0
- package/lib/types/ink/sixel-codec.d.ts.map +1 -1
- package/lib/types/ink/sixel-codec.js +42 -8
- package/lib/types/ink/terminal-querier.d.ts +25 -0
- package/lib/types/ink/terminal-querier.d.ts.map +1 -1
- package/lib/types/ink/terminal-querier.js +42 -0
- package/lib/types/ink/update-overflow-guard.d.ts +24 -0
- package/lib/types/ink/update-overflow-guard.d.ts.map +1 -1
- package/lib/types/ink/update-overflow-guard.js +25 -3
- package/lib/types/math/renderer.d.ts +2 -0
- package/lib/types/math/renderer.d.ts.map +1 -1
- package/lib/types/math/renderer.js +4 -0
- package/lib/types/minimalUiMode.d.ts +19 -0
- package/lib/types/minimalUiMode.d.ts.map +1 -0
- package/lib/types/minimalUiMode.js +23 -0
- package/lib/types/oauth.d.ts +5 -10
- package/lib/types/oauth.d.ts.map +1 -1
- package/lib/types/oauth.js +5 -10
- package/lib/types/onboardingPrefs.d.ts +52 -0
- package/lib/types/onboardingPrefs.d.ts.map +1 -0
- package/lib/types/onboardingPrefs.js +107 -0
- package/lib/types/panels.d.ts +4 -0
- package/lib/types/panels.d.ts.map +1 -0
- package/lib/types/panels.js +4 -0
- package/lib/types/screens/Chat.d.ts +25 -1
- package/lib/types/screens/Chat.d.ts.map +1 -1
- package/lib/types/screens/Chat.js +1149 -302
- package/lib/types/screens/Launchpad.d.ts +194 -0
- package/lib/types/screens/Launchpad.d.ts.map +1 -0
- package/lib/types/screens/Launchpad.js +607 -0
- package/lib/types/screens/Onboarding.d.ts +37 -0
- package/lib/types/screens/Onboarding.d.ts.map +1 -0
- package/lib/types/screens/Onboarding.js +492 -0
- package/lib/types/screens/SessionSupervisor.d.ts.map +1 -1
- package/lib/types/screens/SessionSupervisor.js +18 -12
- package/lib/types/screens/StatusLine.d.ts +4 -0
- package/lib/types/screens/StatusLine.d.ts.map +1 -1
- package/lib/types/screens/StatusLine.js +43 -25
- package/lib/types/screens/StatusMetrics.d.ts +22 -0
- package/lib/types/screens/StatusMetrics.d.ts.map +1 -1
- package/lib/types/screens/StatusMetrics.js +20 -0
- package/lib/types/screens/chatOverlay.d.ts +18 -1
- package/lib/types/screens/chatOverlay.d.ts.map +1 -1
- package/lib/types/screens/chatOverlay.js +3 -0
- package/lib/types/screens/sessionSupervisor/model.d.ts +1 -2
- package/lib/types/screens/sessionSupervisor/model.d.ts.map +1 -1
- package/lib/types/screens/sessionSupervisor/model.js +4 -2
- package/lib/types/screens/sessionSupervisor/useSessionSupervisor.d.ts.map +1 -1
- package/lib/types/screens/sessionSupervisor/useSessionSupervisor.js +7 -3
- package/lib/types/settings/definitions.d.ts +93 -0
- package/lib/types/settings/definitions.d.ts.map +1 -1
- package/lib/types/settings/definitions.js +87 -4
- package/lib/types/tips.d.ts.map +1 -1
- package/lib/types/tips.js +13 -7
- package/lib/types/tuiDisplayPrefs.d.ts +42 -2
- package/lib/types/tuiDisplayPrefs.d.ts.map +1 -1
- package/lib/types/tuiDisplayPrefs.js +74 -0
- package/lib/types/update.d.ts +53 -9
- package/lib/types/update.d.ts.map +1 -1
- package/lib/types/update.js +103 -46
- package/lib/types/utils/bmp.d.ts.map +1 -1
- package/lib/types/utils/bmp.js +8 -1
- package/lib/types/utils/clipboard.d.ts.map +1 -1
- package/lib/types/utils/clipboard.js +25 -6
- package/lib/types/utils/credentials.d.ts.map +1 -1
- package/lib/types/utils/credentials.js +5 -1
- package/lib/types/utils/draftWordBoundary.d.ts +23 -0
- package/lib/types/utils/draftWordBoundary.d.ts.map +1 -0
- package/lib/types/utils/draftWordBoundary.js +161 -0
- package/lib/types/utils/fileTarget.d.ts.map +1 -1
- package/lib/types/utils/fileTarget.js +7 -9
- package/lib/types/utils/inputPaste.d.ts +62 -0
- package/lib/types/utils/inputPaste.d.ts.map +1 -0
- package/lib/types/utils/inputPaste.js +111 -0
- package/lib/types/utils/intl.d.ts +8 -0
- package/lib/types/utils/intl.d.ts.map +1 -1
- package/lib/types/utils/intl.js +11 -0
- package/lib/types/utils/keymap.d.ts +13 -3
- package/lib/types/utils/keymap.d.ts.map +1 -1
- package/lib/types/utils/keymap.js +27 -5
- package/lib/types/utils/pastedImagePath.d.ts +8 -0
- package/lib/types/utils/pastedImagePath.d.ts.map +1 -1
- package/lib/types/utils/pastedImagePath.js +29 -5
- package/package.json +128 -106
- package/presets/liangshen/agent.cordis.yml +4 -1
- package/presets/liangshen/preset.yml +1 -1
- package/{dsh-ecosystem-spec → tui-profile}/registry/README.md +1 -1
- package/{dsh-ecosystem-spec → tui-profile}/registry/registry-0.15.json +1 -1
- package/lib/types/minimalMode.d.ts +0 -13
- package/lib/types/minimalMode.d.ts.map +0 -1
- package/lib/types/minimalMode.js +0 -17
- package/node_modules/@deepseek-harness-tui/dsh-auth/LICENSE +0 -21
- package/node_modules/@deepseek-harness-tui/dsh-auth/README.md +0 -143
- package/node_modules/@deepseek-harness-tui/dsh-auth/cordis.patch.yml +0 -11
- package/node_modules/@deepseek-harness-tui/dsh-auth/dsh-plugin.json +0 -44
- package/node_modules/@deepseek-harness-tui/dsh-auth/lib/interaction.js +0 -193
- package/node_modules/@deepseek-harness-tui/dsh-auth/package.json +0 -69
- /package/{dsh-ecosystem-spec → tui-profile}/protocols/profile-definitions.d.ts +0 -0
- /package/{dsh-ecosystem-spec → tui-profile}/protocols/profile-definitions.js +0 -0
- /package/{dsh-ecosystem-spec → tui-profile}/protocols/tui-channel-http.d.ts +0 -0
- /package/{dsh-ecosystem-spec → tui-profile}/protocols/tui-channel-http.js +0 -0
- /package/{dsh-ecosystem-spec → tui-profile}/protocols/tui-channel.d.ts +0 -0
- /package/{dsh-ecosystem-spec → tui-profile}/protocols/tui-channel.js +0 -0
- /package/{dsh-ecosystem-spec → tui-profile}/protocols/tui-contributions.d.ts +0 -0
- /package/{dsh-ecosystem-spec → tui-profile}/protocols/tui-contributions.js +0 -0
- /package/{dsh-ecosystem-spec → tui-profile}/registry/contracts/decision-events-v1alpha1.json +0 -0
- /package/{dsh-ecosystem-spec → tui-profile}/registry/contracts/scene-v1alpha1.json +0 -0
- /package/{dsh-ecosystem-spec → tui-profile}/registry/contracts/settings-section-v1alpha1.json +0 -0
- /package/{dsh-ecosystem-spec → tui-profile}/registry/contracts/tui-channel-v1alpha1.json +0 -0
- /package/{dsh-ecosystem-spec → tui-profile}/registry/contracts/workspace-provider-v1alpha1.json +0 -0
- /package/{dsh-ecosystem-spec → tui-profile}/registry/host-descriptor.tui.example.json +0 -0
- /package/{dsh-ecosystem-spec → tui-profile}/registry/permissions-0.1.json +0 -0
- /package/{dsh-ecosystem-spec → tui-profile}/schemas/conformance-claim.schema.json +0 -0
- /package/{dsh-ecosystem-spec → tui-profile}/schemas/effect-ledger-record.schema.json +0 -0
- /package/{dsh-ecosystem-spec → tui-profile}/schemas/host-descriptor.schema.json +0 -0
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* 启动页吉祥物(LogoV2 艺术槽,2026-10 复用轮)。
|
|
4
|
+
*
|
|
5
|
+
* 吉祥物跟随 companion.skin:deepy → 字母格动画;whaleGirl → 鲸娘动画
|
|
6
|
+
* (经 WhaleGirlSkin 内部的图像协议自适应:kitty/sixel 走 img/ 帧管线,
|
|
7
|
+
* 无协议回退字母格帧包——首帧字母格同步可画,图像异步解码完成后替换,
|
|
8
|
+
* 绝不让启动帧等 IO)。whale 皮肤不进本组件(LogoV2 维持原分层鲸路径)。
|
|
9
|
+
*
|
|
10
|
+
* 动画/互动语义与侧栏宠物同源(零复制),但按 2026-10 用户拍板收窄:
|
|
11
|
+
* 启动页是瞬时门面——**不做空闲轮换**,稳态恒播单一 idle 动画(循环);
|
|
12
|
+
* 点击 = poke(左/右半判定,播 poke-left/right 头段;鲸娘在 poke 后接一段
|
|
13
|
+
* smile-hearts 爱心——同面板「亲昵互动」语义,deepy 帧包无爱心键故只 poke);
|
|
14
|
+
* 连点 = 900ms 内 ≥3 次触发 tickle(复用 mood.ts 的 TICKLE_WINDOW_MS/
|
|
15
|
+
* TICKLE_MIN_CLICKS 判定);播完自然回稳态 idle。不做拖拽。
|
|
16
|
+
* active=false(第一个任务后冻结,照鲸鱼的 whaleFrozen 契约)或卸载后零
|
|
17
|
+
* 时钟:定格 idle 帧 0,interval 清空。
|
|
18
|
+
*
|
|
19
|
+
* 欢迎语/求星标语不在本组件——按 2026-10 用户拍板保持原「艺术下方居中」
|
|
20
|
+
* 渲染路径(LogoV2 底部块,welcomePad 缩进)。
|
|
21
|
+
*/
|
|
22
|
+
import React from 'react';
|
|
23
|
+
import { Box } from '../../../ui.js';
|
|
24
|
+
import { getCompanionSkin, subscribeCompanionSkin } from '../../../tuiDisplayPrefs.js';
|
|
25
|
+
import { TICKLE_MIN_CLICKS, TICKLE_WINDOW_MS } from './mood.js';
|
|
26
|
+
import { DeepySkin, WhaleGirlSkin } from './skins.js';
|
|
27
|
+
import { initialCompanionPoseState, nextCompanionPoseStep } from './pose.js';
|
|
28
|
+
/** 点击反应档时长:poke 帧表一轮 2100ms,取头段(同 CompanionPanel 的口径)。 */
|
|
29
|
+
const SPLASH_POKE_MS = 1400;
|
|
30
|
+
/** poke 后鲸娘的爱心档时长(smile-hearts 一轮 ~1.9s,取一轮多的头段)。 */
|
|
31
|
+
const SPLASH_HEART_MS = 2400;
|
|
32
|
+
/** 吉祥物动画 tick(同 CompanionPanel 的 TICK_MS)。 */
|
|
33
|
+
const SPLASH_TICK_MS = 160;
|
|
34
|
+
/** 吉祥物字母格宽(与侧栏宠物同包同宽;艺术槽盒 40 列居中容纳)。 */
|
|
35
|
+
const SPLASH_MASCOT_COLUMNS = 42;
|
|
36
|
+
/** 读 companion.skin(LogoV2 的测试缝 prop 优先);非吉祥物皮肤返回
|
|
37
|
+
* undefined(LogoV2 走原鲸鱼/女仆娘路径,零改动)。 */
|
|
38
|
+
export function useSplashMascotSkin(pinned) {
|
|
39
|
+
const setting = React.useSyncExternalStore(subscribeCompanionSkin, getCompanionSkin);
|
|
40
|
+
const id = pinned ?? setting;
|
|
41
|
+
return id === 'deepy' || id === 'whaleGirl' ? id : undefined;
|
|
42
|
+
}
|
|
43
|
+
/** 启动页吉祥物本体:按 skin 渲染动画,点击交互(poke/连点)在内层盒。 */
|
|
44
|
+
export function SplashMascot({ skin, active }) {
|
|
45
|
+
const [, setBump] = React.useState(0);
|
|
46
|
+
// 稳态 idle 从挂载起循环;冻结时 now 钉在挂载值 → elapsed 恒 0 → 帧 0。
|
|
47
|
+
const mountedAtRef = React.useRef(Date.now());
|
|
48
|
+
const clicksRef = React.useRef([]);
|
|
49
|
+
// 覆盖档:poke / tickle / poke 后的爱心(鲸娘),到期在渲染期自回收并
|
|
50
|
+
// 链到下一档(poke → smile-hearts),全部播完自然回稳态 idle。
|
|
51
|
+
const overrideRef = React.useRef(undefined);
|
|
52
|
+
const heartAfterOverrideRef = React.useRef(false);
|
|
53
|
+
// 姿态是常量:吉祥物的动画全走 animationSemantic(deepy 规范键),
|
|
54
|
+
// 皮肤在 semantic 有效时不读 mood/heart 层——只需一个合法 pose 形状。
|
|
55
|
+
const [pose] = React.useState(() => nextCompanionPoseStep(initialCompanionPoseState(Date.now()), { mood: 'idle', heart: false }, Date.now()).pose);
|
|
56
|
+
React.useEffect(() => {
|
|
57
|
+
if (!active)
|
|
58
|
+
return;
|
|
59
|
+
const id = setInterval(() => { setBump(previous => previous + 1); }, SPLASH_TICK_MS);
|
|
60
|
+
id.unref?.();
|
|
61
|
+
return () => { clearInterval(id); };
|
|
62
|
+
}, [active]);
|
|
63
|
+
const now = active ? Date.now() : mountedAtRef.current;
|
|
64
|
+
if (overrideRef.current !== undefined && overrideRef.current.until <= now) {
|
|
65
|
+
const heartNext = heartAfterOverrideRef.current;
|
|
66
|
+
overrideRef.current = undefined;
|
|
67
|
+
heartAfterOverrideRef.current = false;
|
|
68
|
+
if (heartNext) {
|
|
69
|
+
overrideRef.current = { semantic: 'smile-hearts', since: now, until: now + SPLASH_HEART_MS };
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
const override = overrideRef.current;
|
|
73
|
+
const animationSemantic = override?.semantic ?? 'idle';
|
|
74
|
+
const animSince = override?.since ?? mountedAtRef.current;
|
|
75
|
+
const input = {
|
|
76
|
+
pose,
|
|
77
|
+
moodSince: animSince,
|
|
78
|
+
now,
|
|
79
|
+
width: SPLASH_MASCOT_COLUMNS,
|
|
80
|
+
animationSemantic,
|
|
81
|
+
};
|
|
82
|
+
return (_jsx(Box, { flexDirection: "column", alignItems: "center", flexShrink: 0, children: _jsx(Box, { onClick: (event) => {
|
|
83
|
+
event.stopImmediatePropagation();
|
|
84
|
+
if (!active)
|
|
85
|
+
return;
|
|
86
|
+
const at = Date.now();
|
|
87
|
+
// 连点判定与面板同源(TICKLE_WINDOW_MS/TICKLE_MIN_CLICKS):
|
|
88
|
+
// 窗口内 ≥3 次 → tickle;否则按左/右半 poke(鲸娘再链一段爱心)。
|
|
89
|
+
clicksRef.current = [...clicksRef.current.filter(ts => ts > at - TICKLE_WINDOW_MS), at];
|
|
90
|
+
const rapid = clicksRef.current.length >= TICKLE_MIN_CLICKS;
|
|
91
|
+
if (rapid)
|
|
92
|
+
clicksRef.current = [];
|
|
93
|
+
overrideRef.current = rapid
|
|
94
|
+
? { semantic: 'tickle', since: at, until: at + TICKLE_WINDOW_MS }
|
|
95
|
+
: {
|
|
96
|
+
semantic: event.localCol < SPLASH_MASCOT_COLUMNS / 2 ? 'poke-left' : 'poke-right',
|
|
97
|
+
since: at,
|
|
98
|
+
until: at + SPLASH_POKE_MS,
|
|
99
|
+
};
|
|
100
|
+
heartAfterOverrideRef.current = !rapid && skin === 'whaleGirl';
|
|
101
|
+
setBump(previous => previous + 1);
|
|
102
|
+
}, children: skin === 'deepy' ? DeepySkin.render(input) : WhaleGirlSkin.render(input) }) }));
|
|
103
|
+
}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import type { CompanionMood } from './mood.js';
|
|
2
|
+
type Rgb = readonly [number, number, number];
|
|
3
|
+
export interface DeepyFrame {
|
|
4
|
+
readonly dur: number;
|
|
5
|
+
readonly rows: readonly string[];
|
|
6
|
+
}
|
|
7
|
+
export interface DeepyAnimation {
|
|
8
|
+
readonly key: string;
|
|
9
|
+
readonly title: string;
|
|
10
|
+
readonly frames: readonly DeepyFrame[];
|
|
11
|
+
/** 全部帧的 dur 总和(循环周期)。 */
|
|
12
|
+
readonly totalMs: number;
|
|
13
|
+
}
|
|
14
|
+
export interface DeepyKit {
|
|
15
|
+
/** 素材包身份('deepy' / 'whaleGirl'):预渲染缓存按它分命名空间。 */
|
|
16
|
+
readonly id: string;
|
|
17
|
+
readonly columns: number;
|
|
18
|
+
readonly rows: number;
|
|
19
|
+
readonly palette: Record<string, Rgb | undefined>;
|
|
20
|
+
readonly byKey: Readonly<Record<string, DeepyAnimation>>;
|
|
21
|
+
}
|
|
22
|
+
export declare const DEEPY_CELLS: Readonly<{
|
|
23
|
+
columns: 42;
|
|
24
|
+
rows: 15;
|
|
25
|
+
}>;
|
|
26
|
+
/** kit 加载缓存:null = 尚未尝试;undefined = 已尝试但素材缺失/校验
|
|
27
|
+
* 失败(皮肤回退);DeepyKit = 已加载。测试可直接改写以模拟缺失。 */
|
|
28
|
+
export interface SpriteKitCache {
|
|
29
|
+
kit: DeepyKit | undefined | null;
|
|
30
|
+
}
|
|
31
|
+
export declare const deepyKitCache: SpriteKitCache;
|
|
32
|
+
export declare const whaleGirlKitCache: SpriteKitCache;
|
|
33
|
+
/** 按候选相对路径(相对本模块)依次尝试「读取 + parseKit 校验」,第一个
|
|
34
|
+
* 通过校验的胜出并记入 cache;全部失败 → undefined。抽自 loadDeepyKit,
|
|
35
|
+
* deepy 与鲸娘共用。 */
|
|
36
|
+
export declare function loadSpriteKit(candidates: readonly string[], cache: SpriteKitCache, id: string): DeepyKit | undefined;
|
|
37
|
+
/** 加载并缓存 deepy 素材包;素材缺失或校验失败返回 undefined(皮肤回退)。 */
|
|
38
|
+
export declare function loadDeepyKit(): DeepyKit | undefined;
|
|
39
|
+
/** 鲸娘素材包(用户提供,assets/whaleGirl/frames.json:22 动画,与 deepy
|
|
40
|
+
* 同 schema 的 42×30 字母格,构建见 scripts/build-whale-girl-kit.mjs)。 */
|
|
41
|
+
export declare function loadWhaleGirlKit(): DeepyKit | undefined;
|
|
42
|
+
/** mood → deepy 动画(素材包 README 的状态对应表;显示语义经
|
|
43
|
+
* CompanionPanel 的平滑层后映射到这里)。 */
|
|
44
|
+
export declare const DEEPY_MOOD_ANIMATION: Readonly<Record<CompanionMood, string>>;
|
|
45
|
+
/** 并行上下文 → 动画(官方表:conducting=2+ 子代理、building=3+ 会话、
|
|
46
|
+
* music=1 子代理或 2 会话、compacting=上下文压缩)。 */
|
|
47
|
+
export declare const DEEPY_CONTEXT_ANIMATION: Readonly<Record<string, string>>;
|
|
48
|
+
/** 互动/悬停/闪现 → 动画(官方表 reaction 档):look=idle-look(东张西望,
|
|
49
|
+
* 追踪面板内指针),notice=idle-spout(指针碰到宠物本体,开心喷水),
|
|
50
|
+
* waking=被吵醒(官方 trigger:睡眠中移动鼠标/来信号),carrying=顶箱子
|
|
51
|
+
* (gitBranch 变更闪现)。 */
|
|
52
|
+
export declare const DEEPY_INTERACTION_ANIMATION: Readonly<Record<string, string>>;
|
|
53
|
+
/** 通知气泡反应 → 动画:error 色 → 出错啦;success → 任务完成;
|
|
54
|
+
* warning → 需要你确认;无色(默认档)→ idle-look。 */
|
|
55
|
+
export declare const DEEPY_NOTIFICATION_REACTION: Readonly<Record<string, string>>;
|
|
56
|
+
/** idle 族的随机轮换池(官方表:空闲待机,后三个随机插播;idle-look 同时
|
|
57
|
+
* 兼任悬停追踪档)。按 IDLE_ROTATE_MS 时间轮换,不跟信号边沿。 */
|
|
58
|
+
export declare const DEEPY_IDLE_ROTATION: readonly string[];
|
|
59
|
+
/** 显示语义(mood.ts 平滑层的输出)→ kit 动画键。注意 thinking/typing/
|
|
60
|
+
* notification/happy 是显示语义不是 CompanionMood——mood 表的键是
|
|
61
|
+
* waiting/thinking/working/responding/attention/celebrate,语义表必须单列。 */
|
|
62
|
+
export declare const DEEPY_SEMANTIC_ANIMATION: Readonly<Record<string, string>>;
|
|
63
|
+
/** 语义 → kit 动画键的统一查找;DEEPY_IDLE_ROTATION 的成员本身就是
|
|
64
|
+
* kit 键,不需要映射。 */
|
|
65
|
+
export declare function deepyAnimationFor(semantic: string): string;
|
|
66
|
+
/** elapsed 时刻应显示第几帧(按 dur 累加取模,确定性、可单测)。 */
|
|
67
|
+
export declare function frameAt(animation: DeepyAnimation, elapsedMs: number): number;
|
|
68
|
+
/** 一个动画全部帧的预渲染 ANSI 行(15 行/帧),惰性生成并缓存。多套
|
|
69
|
+
* 素材包(deepy / whaleGirl)共用本缓存:键必须带 kit.id,否则同名
|
|
70
|
+
* 动画会串包(鲸娘读到 deepy 的行,调色板错乱)。 */
|
|
71
|
+
export declare function renderedDeepyAnimation(kit: DeepyKit, key: string): readonly string[][] | undefined;
|
|
72
|
+
/** 测试接缝:清掉加载与渲染缓存(deepy 与 whaleGirl 一起复位)。 */
|
|
73
|
+
export declare function resetDeepyCacheForTests(): void;
|
|
74
|
+
export {};
|
|
75
|
+
//# sourceMappingURL=deepy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deepy.d.ts","sourceRoot":"","sources":["../../../../../src/components/sidePanel/companion/deepy.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AAE9C,KAAK,GAAG,GAAG,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;AAE5C,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAA;CACjC;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,MAAM,EAAE,SAAS,UAAU,EAAE,CAAA;IACtC,yBAAyB;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CACzB;AAED,MAAM,WAAW,QAAQ;IACvB,iDAAiD;IACjD,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,GAAG,SAAS,CAAC,CAAA;IACjD,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,CAAA;CACzD;AAED,eAAO,MAAM,WAAW;;;EAA2C,CAAA;AAsEnE;4CAC4C;AAC5C,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,QAAQ,GAAG,SAAS,GAAG,IAAI,CAAA;CACjC;AAED,eAAO,MAAM,aAAa,EAAE,cAA8B,CAAA;AAC1D,eAAO,MAAM,iBAAiB,EAAE,cAA8B,CAAA;AAE9D;;mBAEmB;AACnB,wBAAgB,aAAa,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE,EAAE,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,CAapH;AAED,mDAAmD;AACnD,wBAAgB,YAAY,IAAI,QAAQ,GAAG,SAAS,CAEnD;AAED;kEACkE;AAClE,wBAAgB,gBAAgB,IAAI,QAAQ,GAAG,SAAS,CAEvD;AAED;kCACkC;AAClC,eAAO,MAAM,oBAAoB,EAAE,QAAQ,CAAC,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,CAUxE,CAAA;AAED;2CAC2C;AAC3C,eAAO,MAAM,uBAAuB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAKpE,CAAA;AAED;;;wBAGwB;AACxB,eAAO,MAAM,2BAA2B,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CASxE,CAAA;AAED;0CAC0C;AAC1C,eAAO,MAAM,2BAA2B,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAKxE,CAAA;AAED;6CAC6C;AAC7C,eAAO,MAAM,mBAAmB,EAAE,SAAS,MAAM,EAAgD,CAAA;AAEjG;;uEAEuE;AACvE,eAAO,MAAM,wBAAwB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAWrE,CAAA;AAED;mBACmB;AACnB,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAE1D;AAED,4CAA4C;AAC5C,wBAAgB,OAAO,CAAC,SAAS,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAS5E;AAID;;kCAEkC;AAClC,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,EAAE,GAAG,SAAS,CAUlG;AAED,8CAA8C;AAC9C,wBAAgB,uBAAuB,IAAI,IAAI,CAI9C"}
|
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Deepy 小鲸鱼素材包接入(assets/deepy/frames.json,非官方粉丝作品,
|
|
3
|
+
* 见 assets/deepy/README.md):20 个动画,每帧 42×30 像素字母格——
|
|
4
|
+
* 与开屏鲸鱼同一套半块渲染管线(renderSpriteRows),显示为 42 列 ×
|
|
5
|
+
* 15 行。
|
|
6
|
+
*
|
|
7
|
+
* 设计要点:
|
|
8
|
+
* - 帧选择是纯函数 frameAt(animation, elapsedMs):按帧表 dur 累加取模,
|
|
9
|
+
* 不持定时器;mood 切换时 CompanionPanel 换动画并从 0 计 elapsed。
|
|
10
|
+
* - 预渲染在首次使用时按动画惰性生成(RLE + erase-to-EOL 由
|
|
11
|
+
* renderSpriteRows 保证),缺素材(包未带 frames.json)时返回
|
|
12
|
+
* undefined,皮肤层回退到 WhaleSkin。
|
|
13
|
+
*
|
|
14
|
+
* 加载/校验/缓存抽成 loadSpriteKit(deepy 与鲸娘 assets/whaleGirl 共用,
|
|
15
|
+
* 同 schema:22 动画,构建脚本 scripts/build-whale-girl-kit.mjs)。
|
|
16
|
+
*/
|
|
17
|
+
import { readFileSync } from 'node:fs';
|
|
18
|
+
import { renderSpriteRows } from '../../Whale.js';
|
|
19
|
+
export const DEEPY_CELLS = Object.freeze({ columns: 42, rows: 15 });
|
|
20
|
+
/**
|
|
21
|
+
* Asset locations, tried in order. The depth differs by what is running:
|
|
22
|
+
* - `src/components/sidePanel/companion/` (tsx harnesses) needs four levels;
|
|
23
|
+
* - the COMPILED tree `lib/types/components/sidePanel/companion/` — what the
|
|
24
|
+
* installed package and every real session actually loads — sits one level
|
|
25
|
+
* deeper, so it needs five. Getting this wrong is silent: loadDeepyKit()
|
|
26
|
+
* falls back to the whale skin and the pet simply never shows the kit.
|
|
27
|
+
*/
|
|
28
|
+
const DEEPY_ASSET_CANDIDATES = [
|
|
29
|
+
'../../../../assets/deepy/frames.json',
|
|
30
|
+
'../../../assets/deepy/frames.json',
|
|
31
|
+
'../../../../../assets/deepy/frames.json',
|
|
32
|
+
];
|
|
33
|
+
/** 鲸娘素材包(用户提供,见 assets/whaleGirl/README.md):同一套层级
|
|
34
|
+
* 教训——源码层 4 层 + 编译层 5 层。 */
|
|
35
|
+
const WHALE_GIRL_ASSET_CANDIDATES = [
|
|
36
|
+
'../../../../assets/whaleGirl/frames.json',
|
|
37
|
+
'../../../../../assets/whaleGirl/frames.json',
|
|
38
|
+
];
|
|
39
|
+
/** 校验即拒绝:尺寸不符 / 未知调色板字符 / 帧 dur 非正数,任一失败整份
|
|
40
|
+
* 视为不可用(皮肤回退),不渲染半成品。id 是素材包身份(缓存用)。 */
|
|
41
|
+
function parseKit(raw, id) {
|
|
42
|
+
if (raw === null || typeof raw !== 'object')
|
|
43
|
+
return undefined;
|
|
44
|
+
const data = raw;
|
|
45
|
+
if (!Array.isArray(data.size) || data.size[0] !== 42 || data.size[1] !== 30)
|
|
46
|
+
return undefined;
|
|
47
|
+
if (data.palette === null || typeof data.palette !== 'object')
|
|
48
|
+
return undefined;
|
|
49
|
+
const palette = { '.': undefined };
|
|
50
|
+
for (const [key, value] of Object.entries(data.palette)) {
|
|
51
|
+
if (key.length !== 1 || typeof value !== 'string' || !/^#[0-9a-fA-F]{6}$/.test(value))
|
|
52
|
+
return undefined;
|
|
53
|
+
palette[key] = [
|
|
54
|
+
Number.parseInt(value.slice(1, 3), 16),
|
|
55
|
+
Number.parseInt(value.slice(3, 5), 16),
|
|
56
|
+
Number.parseInt(value.slice(5, 7), 16),
|
|
57
|
+
];
|
|
58
|
+
}
|
|
59
|
+
if (!Array.isArray(data.animations))
|
|
60
|
+
return undefined;
|
|
61
|
+
const byKey = {};
|
|
62
|
+
for (const animation of data.animations) {
|
|
63
|
+
if (typeof animation.key !== 'string' || !Array.isArray(animation.frames))
|
|
64
|
+
return undefined;
|
|
65
|
+
const frames = [];
|
|
66
|
+
for (const frame of animation.frames) {
|
|
67
|
+
if (typeof frame.dur !== 'number' || frame.dur <= 0 || !Array.isArray(frame.rows))
|
|
68
|
+
return undefined;
|
|
69
|
+
if (frame.rows.length !== 30)
|
|
70
|
+
return undefined;
|
|
71
|
+
const rows = frame.rows;
|
|
72
|
+
for (const row of rows) {
|
|
73
|
+
if (typeof row !== 'string' || row.length !== 42)
|
|
74
|
+
return undefined;
|
|
75
|
+
for (const char of row) {
|
|
76
|
+
if (!(char in palette))
|
|
77
|
+
return undefined;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
frames.push({ dur: frame.dur, rows: rows });
|
|
81
|
+
}
|
|
82
|
+
byKey[animation.key] = {
|
|
83
|
+
key: animation.key,
|
|
84
|
+
title: typeof animation.title === 'string' ? animation.title : animation.key,
|
|
85
|
+
frames,
|
|
86
|
+
totalMs: frames.reduce((sum, frame) => sum + frame.dur, 0),
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
return { id, columns: 42, rows: 30, palette, byKey };
|
|
90
|
+
}
|
|
91
|
+
export const deepyKitCache = { kit: null };
|
|
92
|
+
export const whaleGirlKitCache = { kit: null };
|
|
93
|
+
/** 按候选相对路径(相对本模块)依次尝试「读取 + parseKit 校验」,第一个
|
|
94
|
+
* 通过校验的胜出并记入 cache;全部失败 → undefined。抽自 loadDeepyKit,
|
|
95
|
+
* deepy 与鲸娘共用。 */
|
|
96
|
+
export function loadSpriteKit(candidates, cache, id) {
|
|
97
|
+
if (cache.kit !== null)
|
|
98
|
+
return cache.kit;
|
|
99
|
+
for (const candidate of candidates) {
|
|
100
|
+
try {
|
|
101
|
+
const url = new URL(candidate, import.meta.url);
|
|
102
|
+
cache.kit = parseKit(JSON.parse(readFileSync(url, 'utf8')), id);
|
|
103
|
+
if (cache.kit !== undefined)
|
|
104
|
+
return cache.kit;
|
|
105
|
+
}
|
|
106
|
+
catch {
|
|
107
|
+
// 下一个候选路径
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
cache.kit = undefined;
|
|
111
|
+
return undefined;
|
|
112
|
+
}
|
|
113
|
+
/** 加载并缓存 deepy 素材包;素材缺失或校验失败返回 undefined(皮肤回退)。 */
|
|
114
|
+
export function loadDeepyKit() {
|
|
115
|
+
return loadSpriteKit(DEEPY_ASSET_CANDIDATES, deepyKitCache, 'deepy');
|
|
116
|
+
}
|
|
117
|
+
/** 鲸娘素材包(用户提供,assets/whaleGirl/frames.json:22 动画,与 deepy
|
|
118
|
+
* 同 schema 的 42×30 字母格,构建见 scripts/build-whale-girl-kit.mjs)。 */
|
|
119
|
+
export function loadWhaleGirlKit() {
|
|
120
|
+
return loadSpriteKit(WHALE_GIRL_ASSET_CANDIDATES, whaleGirlKitCache, 'whaleGirl');
|
|
121
|
+
}
|
|
122
|
+
/** mood → deepy 动画(素材包 README 的状态对应表;显示语义经
|
|
123
|
+
* CompanionPanel 的平滑层后映射到这里)。 */
|
|
124
|
+
export const DEEPY_MOOD_ANIMATION = {
|
|
125
|
+
sleeping: 'sleeping',
|
|
126
|
+
idle: 'idle',
|
|
127
|
+
waiting: 'thinking',
|
|
128
|
+
thinking: 'thinking',
|
|
129
|
+
working: 'typing',
|
|
130
|
+
responding: 'typing',
|
|
131
|
+
attention: 'notification',
|
|
132
|
+
celebrate: 'happy',
|
|
133
|
+
error: 'error',
|
|
134
|
+
};
|
|
135
|
+
/** 并行上下文 → 动画(官方表:conducting=2+ 子代理、building=3+ 会话、
|
|
136
|
+
* music=1 子代理或 2 会话、compacting=上下文压缩)。 */
|
|
137
|
+
export const DEEPY_CONTEXT_ANIMATION = {
|
|
138
|
+
music: 'music',
|
|
139
|
+
conducting: 'conducting',
|
|
140
|
+
building: 'building',
|
|
141
|
+
compacting: 'compacting',
|
|
142
|
+
};
|
|
143
|
+
/** 互动/悬停/闪现 → 动画(官方表 reaction 档):look=idle-look(东张西望,
|
|
144
|
+
* 追踪面板内指针),notice=idle-spout(指针碰到宠物本体,开心喷水),
|
|
145
|
+
* waking=被吵醒(官方 trigger:睡眠中移动鼠标/来信号),carrying=顶箱子
|
|
146
|
+
* (gitBranch 变更闪现)。 */
|
|
147
|
+
export const DEEPY_INTERACTION_ANIMATION = {
|
|
148
|
+
'poke-left': 'poke-left',
|
|
149
|
+
'poke-right': 'poke-right',
|
|
150
|
+
tickle: 'tickle',
|
|
151
|
+
drag: 'drag',
|
|
152
|
+
look: 'idle-look',
|
|
153
|
+
notice: 'idle-spout',
|
|
154
|
+
waking: 'waking',
|
|
155
|
+
carrying: 'carrying',
|
|
156
|
+
};
|
|
157
|
+
/** 通知气泡反应 → 动画:error 色 → 出错啦;success → 任务完成;
|
|
158
|
+
* warning → 需要你确认;无色(默认档)→ idle-look。 */
|
|
159
|
+
export const DEEPY_NOTIFICATION_REACTION = {
|
|
160
|
+
error: 'error',
|
|
161
|
+
warning: 'notification',
|
|
162
|
+
success: 'happy',
|
|
163
|
+
default: 'idle-look',
|
|
164
|
+
};
|
|
165
|
+
/** idle 族的随机轮换池(官方表:空闲待机,后三个随机插播;idle-look 同时
|
|
166
|
+
* 兼任悬停追踪档)。按 IDLE_ROTATE_MS 时间轮换,不跟信号边沿。 */
|
|
167
|
+
export const DEEPY_IDLE_ROTATION = ['idle', 'idle-look', 'idle-spout', 'swim'];
|
|
168
|
+
/** 显示语义(mood.ts 平滑层的输出)→ kit 动画键。注意 thinking/typing/
|
|
169
|
+
* notification/happy 是显示语义不是 CompanionMood——mood 表的键是
|
|
170
|
+
* waiting/thinking/working/responding/attention/celebrate,语义表必须单列。 */
|
|
171
|
+
export const DEEPY_SEMANTIC_ANIMATION = {
|
|
172
|
+
thinking: 'thinking',
|
|
173
|
+
typing: 'typing',
|
|
174
|
+
notification: 'notification',
|
|
175
|
+
error: 'error',
|
|
176
|
+
happy: 'happy',
|
|
177
|
+
sleeping: 'sleeping',
|
|
178
|
+
idle: 'idle',
|
|
179
|
+
...DEEPY_CONTEXT_ANIMATION,
|
|
180
|
+
...DEEPY_INTERACTION_ANIMATION,
|
|
181
|
+
...DEEPY_NOTIFICATION_REACTION,
|
|
182
|
+
};
|
|
183
|
+
/** 语义 → kit 动画键的统一查找;DEEPY_IDLE_ROTATION 的成员本身就是
|
|
184
|
+
* kit 键,不需要映射。 */
|
|
185
|
+
export function deepyAnimationFor(semantic) {
|
|
186
|
+
return DEEPY_SEMANTIC_ANIMATION[semantic] ?? 'idle';
|
|
187
|
+
}
|
|
188
|
+
/** elapsed 时刻应显示第几帧(按 dur 累加取模,确定性、可单测)。 */
|
|
189
|
+
export function frameAt(animation, elapsedMs) {
|
|
190
|
+
if (animation.frames.length === 0 || animation.totalMs <= 0)
|
|
191
|
+
return 0;
|
|
192
|
+
let remainder = Math.max(0, elapsedMs) % animation.totalMs;
|
|
193
|
+
for (let index = 0; index < animation.frames.length; index += 1) {
|
|
194
|
+
const frame = animation.frames[index];
|
|
195
|
+
if (remainder < frame.dur)
|
|
196
|
+
return index;
|
|
197
|
+
remainder -= frame.dur;
|
|
198
|
+
}
|
|
199
|
+
return animation.frames.length - 1;
|
|
200
|
+
}
|
|
201
|
+
const renderedCache = new Map();
|
|
202
|
+
/** 一个动画全部帧的预渲染 ANSI 行(15 行/帧),惰性生成并缓存。多套
|
|
203
|
+
* 素材包(deepy / whaleGirl)共用本缓存:键必须带 kit.id,否则同名
|
|
204
|
+
* 动画会串包(鲸娘读到 deepy 的行,调色板错乱)。 */
|
|
205
|
+
export function renderedDeepyAnimation(kit, key) {
|
|
206
|
+
const animation = kit.byKey[key];
|
|
207
|
+
if (animation === undefined)
|
|
208
|
+
return undefined;
|
|
209
|
+
const cacheKey = kit.id + ':' + key;
|
|
210
|
+
let rendered = renderedCache.get(cacheKey);
|
|
211
|
+
if (rendered === undefined) {
|
|
212
|
+
rendered = Object.freeze(animation.frames.map(frame => renderSpriteRows(frame.rows, kit.palette)));
|
|
213
|
+
renderedCache.set(cacheKey, rendered);
|
|
214
|
+
}
|
|
215
|
+
return rendered;
|
|
216
|
+
}
|
|
217
|
+
/** 测试接缝:清掉加载与渲染缓存(deepy 与 whaleGirl 一起复位)。 */
|
|
218
|
+
export function resetDeepyCacheForTests() {
|
|
219
|
+
deepyKitCache.kit = null;
|
|
220
|
+
whaleGirlKitCache.kit = null;
|
|
221
|
+
renderedCache.clear();
|
|
222
|
+
}
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Companion 情绪管线(设计分文档 §2 + v2.1 + 2026-10 防闪烁平滑层)。
|
|
3
|
+
*
|
|
4
|
+
* 分四层,前两层纯派生、后两层近纯步进,全部可脱离组件单测:
|
|
5
|
+
*
|
|
6
|
+
* 信号 ──deriveCompanionMood──▶ 目标心情(瞬时信号直读:审批/失败/工作/庆祝/睡眠)
|
|
7
|
+
* ──deriveCompanionContext──▶ 并行上下文(music/conducting/building/compacting)
|
|
8
|
+
* ──resolveTargetSemantic──▶ 目标显示语义
|
|
9
|
+
* ──stepCompanionDisplay──▶ 显示语义(平滑器:防抖 + 最短停留 + 抢占)
|
|
10
|
+
* 互动(戳/挠/拖拽/悬停)与通知气泡反应是独立覆盖层,由 CompanionPanel
|
|
11
|
+
* 接线;演完回到**平滑后**的显示语义,不重新派生。
|
|
12
|
+
*
|
|
13
|
+
* 防闪烁五规则(用户实测:快速短工具调用让动画在 typing/idle/happy 间闪跳):
|
|
14
|
+
* 1. 派生与显示分离(本文件即实现,组件不外挂补丁层)。
|
|
15
|
+
* 2. 优先级 attention > error > working > celebrate > idle 族;只有
|
|
16
|
+
* notification/error 语义允许立刻打断当前动画;happy 是回合完成的
|
|
17
|
+
* 边沿一次性事件(只在 working→false 时由 Panel 触发一次),自带
|
|
18
|
+
* CELEBRATE_DWELL_MS 停留窗——若再过闸门会被截短,故同样立即切换。
|
|
19
|
+
* 3. 离开活跃族(working/上下文)进 idle 族要 LEAVE_WORKING_SETTLE_MS 的
|
|
20
|
+
* 稳定期;连发短工具的间隙典型 200–800ms,1500ms 覆盖住抖动又不至于
|
|
21
|
+
* 让"停下来了"的反馈显得迟钝。进入 working 族不防抖(立刻切,有信息量)。
|
|
22
|
+
* 4. 非抢占切换要 MIN_MOOD_DWELL_MS 最短停留(人眼对终端动画的感知下限
|
|
23
|
+
* 量级,低于它就是闪);同语义重派生**不重置**动画时钟(since 保留,
|
|
24
|
+
* elapsed 连续、不跳帧)。
|
|
25
|
+
* 5. 互动层独立;idle 族(idle/idle-look/idle-spout/swim)按
|
|
26
|
+
* IDLE_ROTATE_MS 时间轮换,不跟信号边沿走。
|
|
27
|
+
*/
|
|
28
|
+
import type { ActivityView } from '../../../dsh-adapter/activity-store.js';
|
|
29
|
+
import type { SpinnerMode } from '../../../adapter/ports/channel-display.js';
|
|
30
|
+
/** 离开活跃族的防抖窗:目标稳定非工作这么久才切走(规则 3)。 */
|
|
31
|
+
export declare const LEAVE_WORKING_SETTLE_MS = 1500;
|
|
32
|
+
/** 任何非抢占切换后的最短停留(规则 4)。 */
|
|
33
|
+
export declare const MIN_MOOD_DWELL_MS = 1000;
|
|
34
|
+
/** 回合完成庆祝(happy)的停留窗;由 Panel 在 working→false 边沿armed。 */
|
|
35
|
+
export declare const CELEBRATE_DWELL_MS = 2500;
|
|
36
|
+
/** idle 族动画的轮换周期(规则 5)。 */
|
|
37
|
+
export declare const IDLE_ROTATE_MS = 8000;
|
|
38
|
+
/** 狂点判定窗口:窗口内 ≥TICKLE_MIN_CLICKS 次点击 → tickle。 */
|
|
39
|
+
export declare const TICKLE_WINDOW_MS = 900;
|
|
40
|
+
export declare const TICKLE_MIN_CLICKS = 3;
|
|
41
|
+
/** 通知气泡的展示时长(约数,按动画 tick 粒度收回)。 */
|
|
42
|
+
export declare const NOTIFICATION_BUBBLE_MS = 5000;
|
|
43
|
+
/** 醒来(waking)反应的闪现时长。 */
|
|
44
|
+
export declare const WAKING_FLASH_MS = 1800;
|
|
45
|
+
/** 顶箱子(carrying,gitBranch 变更闪现)时长。 */
|
|
46
|
+
export declare const CARRYING_FLASH_MS = 2500;
|
|
47
|
+
/** Enter 戳一戳时完整活动行气泡的时长。 */
|
|
48
|
+
export declare const POKE_MS = 3000;
|
|
49
|
+
export type CompanionMood =
|
|
50
|
+
/** 空闲超过 sleepAfter 且无未读事项。 */
|
|
51
|
+
'sleeping'
|
|
52
|
+
/** 空闲。 */
|
|
53
|
+
| 'idle'
|
|
54
|
+
/** 请求已发、首 token 未到。 */
|
|
55
|
+
| 'waiting'
|
|
56
|
+
/** 推理中。 */
|
|
57
|
+
| 'thinking'
|
|
58
|
+
/** 工具运行中。 */
|
|
59
|
+
| 'working'
|
|
60
|
+
/** 正文流式中。 */
|
|
61
|
+
| 'responding'
|
|
62
|
+
/** 有待处理的审批 / 问卷(失败任务不再折进来——那是 error)。 */
|
|
63
|
+
| 'attention'
|
|
64
|
+
/** 回合完成 / goal 完成 / star / 节日彩蛋(短暂)。 */
|
|
65
|
+
| 'celebrate'
|
|
66
|
+
/** 工具失败:后台任务失败未读或子代理 failed(官方素材表 error=工具失败)。 */
|
|
67
|
+
| 'error';
|
|
68
|
+
export interface CompanionMoodInputs {
|
|
69
|
+
readonly working: boolean;
|
|
70
|
+
readonly spinnerMode: SpinnerMode;
|
|
71
|
+
/** workingActivity 投影(activity 插件未装时缺省,退回 working +
|
|
72
|
+
* spinnerMode 也能给出 waiting / thinking / working / responding)。 */
|
|
73
|
+
readonly activity: ActivityView | undefined;
|
|
74
|
+
/** 需要用户处理的事(审批/问卷)→ attention。 */
|
|
75
|
+
readonly attention: {
|
|
76
|
+
readonly approvalPending: boolean;
|
|
77
|
+
readonly questionPending: boolean;
|
|
78
|
+
};
|
|
79
|
+
/** 失败信号(后台任务失败未读 + failed 子代理数)→ error。 */
|
|
80
|
+
readonly failures: {
|
|
81
|
+
readonly failedJobsUnread: number;
|
|
82
|
+
readonly failedSubagents: number;
|
|
83
|
+
};
|
|
84
|
+
readonly lastInputAt: number;
|
|
85
|
+
readonly celebration: {
|
|
86
|
+
readonly kind: 'star' | 'holiday' | 'turn-done' | 'goal-done';
|
|
87
|
+
readonly until: number;
|
|
88
|
+
} | undefined;
|
|
89
|
+
/** 0 = 不入睡。 */
|
|
90
|
+
readonly sleepAfterMs: number;
|
|
91
|
+
}
|
|
92
|
+
export interface DerivedCompanionMood {
|
|
93
|
+
readonly mood: CompanionMood;
|
|
94
|
+
/** 皮肤气泡文案(activity.phrase ?? label+detail;宽截断在皮肤侧)。
|
|
95
|
+
* 非工作/注意态为 undefined。 */
|
|
96
|
+
readonly bubble?: string;
|
|
97
|
+
}
|
|
98
|
+
/** 纯派生(规则 1 的第一层):attention > error > working > celebrate >
|
|
99
|
+
* sleeping > idle。 */
|
|
100
|
+
export declare function deriveCompanionMood(inputs: CompanionMoodInputs, now: number): DerivedCompanionMood;
|
|
101
|
+
export type CompanionContextKind = 'music' | 'conducting' | 'building' | 'compacting';
|
|
102
|
+
/** 结构化最小信号面:测试可用裸对象伪造,运行时来自 ChannelUi。 */
|
|
103
|
+
export interface CompanionContextInputs {
|
|
104
|
+
readonly working: boolean;
|
|
105
|
+
readonly subagents: readonly {
|
|
106
|
+
readonly status: string;
|
|
107
|
+
}[];
|
|
108
|
+
readonly backgroundJobs: readonly {
|
|
109
|
+
readonly status: string;
|
|
110
|
+
}[];
|
|
111
|
+
/** ChannelUi.compaction:非空表示压缩进行中。 */
|
|
112
|
+
readonly compaction: unknown;
|
|
113
|
+
}
|
|
114
|
+
/** 子代理在跑数(starting/running)。 */
|
|
115
|
+
export declare function countRunningSubagents(subagents: readonly {
|
|
116
|
+
readonly status: string;
|
|
117
|
+
}[]): number;
|
|
118
|
+
/** 后台任务在跑数(running/stopping 都算活着)。 */
|
|
119
|
+
export declare function countRunningJobs(jobs: readonly {
|
|
120
|
+
readonly status: string;
|
|
121
|
+
}[]): number;
|
|
122
|
+
/** 「会话」口径:主回合(working 计 1)+ 在跑子代理 + 在跑后台任务。 */
|
|
123
|
+
export declare function countSessionsRunning(working: boolean, runningSubagents: number, runningJobs: number): number;
|
|
124
|
+
/** 素材包官方表:conducting=2+ 子代理;building=3+ 会话;music=1 子代理或
|
|
125
|
+
* 2 会话;compacting=上下文压缩进行中(ChannelUi.compaction 是现成信号)。
|
|
126
|
+
* 优先级:compacting > conducting > building > music(子代理专属动画最具体)。
|
|
127
|
+
* carrying(新建工作树/分支)没有推送信号,走 gitBranch 变更闪现(Panel 接线)。 */
|
|
128
|
+
export declare function deriveCompanionContext(inputs: CompanionContextInputs): CompanionContextKind | undefined;
|
|
129
|
+
export type CompanionDisplaySemantic = 'thinking' | 'typing' | 'notification' | 'error' | 'happy' | 'sleeping' | 'idle' | CompanionContextKind;
|
|
130
|
+
export interface CompanionDisplayState {
|
|
131
|
+
readonly semantic: CompanionDisplaySemantic;
|
|
132
|
+
/** 显示语义进入的时刻 = 动画时钟锚点;同语义重派生保留(不跳帧)。 */
|
|
133
|
+
readonly since: number;
|
|
134
|
+
/** 目标最后一次离开活跃族的时刻;0 = 目标仍在活跃族。 */
|
|
135
|
+
readonly activeLeftAt: number;
|
|
136
|
+
}
|
|
137
|
+
export declare const initialCompanionDisplayState: CompanionDisplayState;
|
|
138
|
+
/** 目标心情 + 上下文 → 目标显示语义(纯函数)。attention/error/happy 直通;
|
|
139
|
+
* working 细分与 idle/sleeping 在有并行上下文时让位(music=官方表的
|
|
140
|
+
* juggling:主回合 + 子代理同时在跑时宠物该演"分身"而不是敲代码)。 */
|
|
141
|
+
export declare function resolveTargetSemantic(mood: CompanionMood, context: CompanionContextKind | undefined): CompanionDisplaySemantic;
|
|
142
|
+
/** 平滑器(规则 2/3/4,近纯步进):输入目标语义流 + 时钟,输出显示语义流。
|
|
143
|
+
*
|
|
144
|
+
* - 目标 == 当前显示:什么都不动(since 保留 → 动画 elapsed 连续)。
|
|
145
|
+
* - 抢占(notification/error/happy)或进入 working 族:立刻切。
|
|
146
|
+
* - 其余切换:settle(离开活跃族进 idle 族需 LEAVE_WORKING_SETTLE_MS 稳定)
|
|
147
|
+
* 与 dwell(显示语义已停留 MIN_MOOD_DWELL_MS)双闸全开才切。
|
|
148
|
+
* - realign:visible=false→true 时跳过闸门对齐当前目标(隐藏期间没走 tick)。
|
|
149
|
+
*/
|
|
150
|
+
export declare function stepCompanionDisplay(prev: CompanionDisplayState, target: CompanionDisplaySemantic, now: number, opts?: {
|
|
151
|
+
readonly realign?: boolean;
|
|
152
|
+
}): CompanionDisplayState;
|
|
153
|
+
/** idle 显示语义下的动画轮换槽序号:由进入 idle 的时刻与当前时钟决定,
|
|
154
|
+
* 与信号无关;同一 idle 期内确定,跨 idle 期自然错开。 */
|
|
155
|
+
export declare function idleRotationIndex(idleSince: number, now: number, length: number): number;
|
|
156
|
+
export type CompanionReactionKind = 'error' | 'warning' | 'success' | 'default';
|
|
157
|
+
/** NotificationItem.color → 反应档(error/warning/success/default)。
|
|
158
|
+
* 没有更多语义字段可判(如"已打断"),default 档用 idle-look——见交付说明。 */
|
|
159
|
+
export declare function notificationReactionKind(color: string | undefined): CompanionReactionKind;
|
|
160
|
+
export interface CompanionNotification {
|
|
161
|
+
readonly text: string;
|
|
162
|
+
readonly color?: string;
|
|
163
|
+
}
|
|
164
|
+
export interface CompanionNotificationTracker {
|
|
165
|
+
readonly seen: Set<object>;
|
|
166
|
+
armed: boolean;
|
|
167
|
+
}
|
|
168
|
+
export declare function createNotificationTracker(): CompanionNotificationTracker;
|
|
169
|
+
/** 渲染期步进:从尾部扫描未见过的条目(notify 追加在最后),返回最新一条
|
|
170
|
+
* (旧的让位——气泡同时只留最新);首次调用只记账不发射(不弹历史旧账)。
|
|
171
|
+
* 重建数组(slice/filter)但条目对象同引用时不会误报;条目被摘除时顺手
|
|
172
|
+
* 清理 seen,防泄漏。 */
|
|
173
|
+
export declare function stepNotificationTracker(tracker: CompanionNotificationTracker, notifications: readonly CompanionNotification[], opts?: {
|
|
174
|
+
readonly silent?: boolean;
|
|
175
|
+
}): CompanionNotification | undefined;
|
|
176
|
+
//# sourceMappingURL=mood.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mood.d.ts","sourceRoot":"","sources":["../../../../../src/components/sidePanel/companion/mood.ts"],"names":[],"mappings":"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"}
|