arcane-agents 0.1.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/LICENSE +21 -0
- package/README.md +528 -0
- package/assets/characters/README.md +114 -0
- package/assets/characters/assassin-shadow/animations/walk/east/0.png +0 -0
- package/assets/characters/assassin-shadow/animations/walk/east/1.png +0 -0
- package/assets/characters/assassin-shadow/animations/walk/east/2.png +0 -0
- package/assets/characters/assassin-shadow/animations/walk/east/3.png +0 -0
- package/assets/characters/assassin-shadow/animations/walk/east/4.png +0 -0
- package/assets/characters/assassin-shadow/animations/walk/east/5.png +0 -0
- package/assets/characters/assassin-shadow/animations/walk/east/6.png +0 -0
- package/assets/characters/assassin-shadow/animations/walk/east/7.png +0 -0
- package/assets/characters/assassin-shadow/animations/walk/north/0.png +0 -0
- package/assets/characters/assassin-shadow/animations/walk/north/1.png +0 -0
- package/assets/characters/assassin-shadow/animations/walk/north/2.png +0 -0
- package/assets/characters/assassin-shadow/animations/walk/north/3.png +0 -0
- package/assets/characters/assassin-shadow/animations/walk/north/4.png +0 -0
- package/assets/characters/assassin-shadow/animations/walk/north/5.png +0 -0
- package/assets/characters/assassin-shadow/animations/walk/north/6.png +0 -0
- package/assets/characters/assassin-shadow/animations/walk/north/7.png +0 -0
- package/assets/characters/assassin-shadow/animations/walk/south/0.png +0 -0
- package/assets/characters/assassin-shadow/animations/walk/south/1.png +0 -0
- package/assets/characters/assassin-shadow/animations/walk/south/2.png +0 -0
- package/assets/characters/assassin-shadow/animations/walk/south/3.png +0 -0
- package/assets/characters/assassin-shadow/animations/walk/south/4.png +0 -0
- package/assets/characters/assassin-shadow/animations/walk/south/5.png +0 -0
- package/assets/characters/assassin-shadow/animations/walk/south/6.png +0 -0
- package/assets/characters/assassin-shadow/animations/walk/south/7.png +0 -0
- package/assets/characters/assassin-shadow/animations/walk/west/0.png +0 -0
- package/assets/characters/assassin-shadow/animations/walk/west/1.png +0 -0
- package/assets/characters/assassin-shadow/animations/walk/west/2.png +0 -0
- package/assets/characters/assassin-shadow/animations/walk/west/3.png +0 -0
- package/assets/characters/assassin-shadow/animations/walk/west/4.png +0 -0
- package/assets/characters/assassin-shadow/animations/walk/west/5.png +0 -0
- package/assets/characters/assassin-shadow/animations/walk/west/6.png +0 -0
- package/assets/characters/assassin-shadow/animations/walk/west/7.png +0 -0
- package/assets/characters/assassin-shadow/animations/working/0.png +0 -0
- package/assets/characters/assassin-shadow/animations/working/1.png +0 -0
- package/assets/characters/assassin-shadow/animations/working/10.png +0 -0
- package/assets/characters/assassin-shadow/animations/working/11.png +0 -0
- package/assets/characters/assassin-shadow/animations/working/12.png +0 -0
- package/assets/characters/assassin-shadow/animations/working/13.png +0 -0
- package/assets/characters/assassin-shadow/animations/working/14.png +0 -0
- package/assets/characters/assassin-shadow/animations/working/15.png +0 -0
- package/assets/characters/assassin-shadow/animations/working/2.png +0 -0
- package/assets/characters/assassin-shadow/animations/working/3.png +0 -0
- package/assets/characters/assassin-shadow/animations/working/4.png +0 -0
- package/assets/characters/assassin-shadow/animations/working/5.png +0 -0
- package/assets/characters/assassin-shadow/animations/working/6.png +0 -0
- package/assets/characters/assassin-shadow/animations/working/7.png +0 -0
- package/assets/characters/assassin-shadow/animations/working/8.png +0 -0
- package/assets/characters/assassin-shadow/animations/working/9.png +0 -0
- package/assets/characters/assassin-shadow/rotations/east.png +0 -0
- package/assets/characters/assassin-shadow/rotations/north.png +0 -0
- package/assets/characters/assassin-shadow/rotations/south.png +0 -0
- package/assets/characters/assassin-shadow/rotations/west.png +0 -0
- package/assets/characters/assassin-shadow/voice-lines/arrive.mp3 +0 -0
- package/assets/characters/assassin-shadow/voice-lines/attention.mp3 +0 -0
- package/assets/characters/assassin-shadow/voice-lines/complete.mp3 +0 -0
- package/assets/characters/assassin-shadow/voice-lines/death.mp3 +0 -0
- package/assets/characters/assassin-shadow/voice-lines/move_variant_1.mp3 +0 -0
- package/assets/characters/assassin-shadow/voice-lines/move_variant_2.mp3 +0 -0
- package/assets/characters/assassin-shadow/voice-lines/move_variant_3.mp3 +0 -0
- package/assets/characters/assassin-shadow/voice-lines/selected_variant_1.mp3 +0 -0
- package/assets/characters/assassin-shadow/voice-lines/selected_variant_2.mp3 +0 -0
- package/assets/characters/assassin-shadow/voice-lines/selected_variant_3.mp3 +0 -0
- package/assets/characters/barbarian-wild/animations/walk/east/0.png +0 -0
- package/assets/characters/barbarian-wild/animations/walk/east/1.png +0 -0
- package/assets/characters/barbarian-wild/animations/walk/east/2.png +0 -0
- package/assets/characters/barbarian-wild/animations/walk/east/3.png +0 -0
- package/assets/characters/barbarian-wild/animations/walk/east/4.png +0 -0
- package/assets/characters/barbarian-wild/animations/walk/east/5.png +0 -0
- package/assets/characters/barbarian-wild/animations/walk/east/6.png +0 -0
- package/assets/characters/barbarian-wild/animations/walk/east/7.png +0 -0
- package/assets/characters/barbarian-wild/animations/walk/north/0.png +0 -0
- package/assets/characters/barbarian-wild/animations/walk/north/1.png +0 -0
- package/assets/characters/barbarian-wild/animations/walk/north/2.png +0 -0
- package/assets/characters/barbarian-wild/animations/walk/north/3.png +0 -0
- package/assets/characters/barbarian-wild/animations/walk/north/4.png +0 -0
- package/assets/characters/barbarian-wild/animations/walk/north/5.png +0 -0
- package/assets/characters/barbarian-wild/animations/walk/north/6.png +0 -0
- package/assets/characters/barbarian-wild/animations/walk/north/7.png +0 -0
- package/assets/characters/barbarian-wild/animations/walk/south/0.png +0 -0
- package/assets/characters/barbarian-wild/animations/walk/south/1.png +0 -0
- package/assets/characters/barbarian-wild/animations/walk/south/2.png +0 -0
- package/assets/characters/barbarian-wild/animations/walk/south/3.png +0 -0
- package/assets/characters/barbarian-wild/animations/walk/south/4.png +0 -0
- package/assets/characters/barbarian-wild/animations/walk/south/5.png +0 -0
- package/assets/characters/barbarian-wild/animations/walk/south/6.png +0 -0
- package/assets/characters/barbarian-wild/animations/walk/south/7.png +0 -0
- package/assets/characters/barbarian-wild/animations/walk/west/0.png +0 -0
- package/assets/characters/barbarian-wild/animations/walk/west/1.png +0 -0
- package/assets/characters/barbarian-wild/animations/walk/west/2.png +0 -0
- package/assets/characters/barbarian-wild/animations/walk/west/3.png +0 -0
- package/assets/characters/barbarian-wild/animations/walk/west/4.png +0 -0
- package/assets/characters/barbarian-wild/animations/walk/west/5.png +0 -0
- package/assets/characters/barbarian-wild/animations/walk/west/6.png +0 -0
- package/assets/characters/barbarian-wild/animations/walk/west/7.png +0 -0
- package/assets/characters/barbarian-wild/animations/working/0.png +0 -0
- package/assets/characters/barbarian-wild/animations/working/1.png +0 -0
- package/assets/characters/barbarian-wild/animations/working/10.png +0 -0
- package/assets/characters/barbarian-wild/animations/working/11.png +0 -0
- package/assets/characters/barbarian-wild/animations/working/12.png +0 -0
- package/assets/characters/barbarian-wild/animations/working/13.png +0 -0
- package/assets/characters/barbarian-wild/animations/working/14.png +0 -0
- package/assets/characters/barbarian-wild/animations/working/15.png +0 -0
- package/assets/characters/barbarian-wild/animations/working/2.png +0 -0
- package/assets/characters/barbarian-wild/animations/working/3.png +0 -0
- package/assets/characters/barbarian-wild/animations/working/4.png +0 -0
- package/assets/characters/barbarian-wild/animations/working/5.png +0 -0
- package/assets/characters/barbarian-wild/animations/working/6.png +0 -0
- package/assets/characters/barbarian-wild/animations/working/7.png +0 -0
- package/assets/characters/barbarian-wild/animations/working/8.png +0 -0
- package/assets/characters/barbarian-wild/animations/working/9.png +0 -0
- package/assets/characters/barbarian-wild/rotations/east.png +0 -0
- package/assets/characters/barbarian-wild/rotations/north.png +0 -0
- package/assets/characters/barbarian-wild/rotations/south.png +0 -0
- package/assets/characters/barbarian-wild/rotations/west.png +0 -0
- package/assets/characters/barbarian-wild/voice-lines/arrive.mp3 +0 -0
- package/assets/characters/barbarian-wild/voice-lines/attention.mp3 +0 -0
- package/assets/characters/barbarian-wild/voice-lines/complete.mp3 +0 -0
- package/assets/characters/barbarian-wild/voice-lines/death.mp3 +0 -0
- package/assets/characters/barbarian-wild/voice-lines/move_variant_1.mp3 +0 -0
- package/assets/characters/barbarian-wild/voice-lines/move_variant_2.mp3 +0 -0
- package/assets/characters/barbarian-wild/voice-lines/move_variant_3.mp3 +0 -0
- package/assets/characters/barbarian-wild/voice-lines/selected_variant_1.mp3 +0 -0
- package/assets/characters/barbarian-wild/voice-lines/selected_variant_2.mp3 +0 -0
- package/assets/characters/barbarian-wild/voice-lines/selected_variant_3.mp3 +0 -0
- package/assets/characters/blood-elf-spellarcher/animations/walk/east/0.png +0 -0
- package/assets/characters/blood-elf-spellarcher/animations/walk/east/1.png +0 -0
- package/assets/characters/blood-elf-spellarcher/animations/walk/east/2.png +0 -0
- package/assets/characters/blood-elf-spellarcher/animations/walk/east/3.png +0 -0
- package/assets/characters/blood-elf-spellarcher/animations/walk/east/4.png +0 -0
- package/assets/characters/blood-elf-spellarcher/animations/walk/east/5.png +0 -0
- package/assets/characters/blood-elf-spellarcher/animations/walk/east/6.png +0 -0
- package/assets/characters/blood-elf-spellarcher/animations/walk/east/7.png +0 -0
- package/assets/characters/blood-elf-spellarcher/animations/walk/north/0.png +0 -0
- package/assets/characters/blood-elf-spellarcher/animations/walk/north/1.png +0 -0
- package/assets/characters/blood-elf-spellarcher/animations/walk/north/2.png +0 -0
- package/assets/characters/blood-elf-spellarcher/animations/walk/north/3.png +0 -0
- package/assets/characters/blood-elf-spellarcher/animations/walk/north/4.png +0 -0
- package/assets/characters/blood-elf-spellarcher/animations/walk/north/5.png +0 -0
- package/assets/characters/blood-elf-spellarcher/animations/walk/north/6.png +0 -0
- package/assets/characters/blood-elf-spellarcher/animations/walk/north/7.png +0 -0
- package/assets/characters/blood-elf-spellarcher/animations/walk/south/0.png +0 -0
- package/assets/characters/blood-elf-spellarcher/animations/walk/south/1.png +0 -0
- package/assets/characters/blood-elf-spellarcher/animations/walk/south/2.png +0 -0
- package/assets/characters/blood-elf-spellarcher/animations/walk/south/3.png +0 -0
- package/assets/characters/blood-elf-spellarcher/animations/walk/south/4.png +0 -0
- package/assets/characters/blood-elf-spellarcher/animations/walk/south/5.png +0 -0
- package/assets/characters/blood-elf-spellarcher/animations/walk/south/6.png +0 -0
- package/assets/characters/blood-elf-spellarcher/animations/walk/south/7.png +0 -0
- package/assets/characters/blood-elf-spellarcher/animations/walk/west/0.png +0 -0
- package/assets/characters/blood-elf-spellarcher/animations/walk/west/1.png +0 -0
- package/assets/characters/blood-elf-spellarcher/animations/walk/west/2.png +0 -0
- package/assets/characters/blood-elf-spellarcher/animations/walk/west/3.png +0 -0
- package/assets/characters/blood-elf-spellarcher/animations/walk/west/4.png +0 -0
- package/assets/characters/blood-elf-spellarcher/animations/walk/west/5.png +0 -0
- package/assets/characters/blood-elf-spellarcher/animations/walk/west/6.png +0 -0
- package/assets/characters/blood-elf-spellarcher/animations/walk/west/7.png +0 -0
- package/assets/characters/blood-elf-spellarcher/animations/working/0.png +0 -0
- package/assets/characters/blood-elf-spellarcher/animations/working/1.png +0 -0
- package/assets/characters/blood-elf-spellarcher/animations/working/10.png +0 -0
- package/assets/characters/blood-elf-spellarcher/animations/working/11.png +0 -0
- package/assets/characters/blood-elf-spellarcher/animations/working/12.png +0 -0
- package/assets/characters/blood-elf-spellarcher/animations/working/13.png +0 -0
- package/assets/characters/blood-elf-spellarcher/animations/working/14.png +0 -0
- package/assets/characters/blood-elf-spellarcher/animations/working/15.png +0 -0
- package/assets/characters/blood-elf-spellarcher/animations/working/2.png +0 -0
- package/assets/characters/blood-elf-spellarcher/animations/working/3.png +0 -0
- package/assets/characters/blood-elf-spellarcher/animations/working/4.png +0 -0
- package/assets/characters/blood-elf-spellarcher/animations/working/5.png +0 -0
- package/assets/characters/blood-elf-spellarcher/animations/working/6.png +0 -0
- package/assets/characters/blood-elf-spellarcher/animations/working/7.png +0 -0
- package/assets/characters/blood-elf-spellarcher/animations/working/8.png +0 -0
- package/assets/characters/blood-elf-spellarcher/animations/working/9.png +0 -0
- package/assets/characters/blood-elf-spellarcher/rotations/east.png +0 -0
- package/assets/characters/blood-elf-spellarcher/rotations/north.png +0 -0
- package/assets/characters/blood-elf-spellarcher/rotations/south.png +0 -0
- package/assets/characters/blood-elf-spellarcher/rotations/west.png +0 -0
- package/assets/characters/blood-elf-spellarcher/voice-lines/arrive.mp3 +0 -0
- package/assets/characters/blood-elf-spellarcher/voice-lines/attention.mp3 +0 -0
- package/assets/characters/blood-elf-spellarcher/voice-lines/complete.mp3 +0 -0
- package/assets/characters/blood-elf-spellarcher/voice-lines/death.mp3 +0 -0
- package/assets/characters/blood-elf-spellarcher/voice-lines/move_variant_1.mp3 +0 -0
- package/assets/characters/blood-elf-spellarcher/voice-lines/move_variant_2.mp3 +0 -0
- package/assets/characters/blood-elf-spellarcher/voice-lines/move_variant_3.mp3 +0 -0
- package/assets/characters/blood-elf-spellarcher/voice-lines/selected_variant_1.mp3 +0 -0
- package/assets/characters/blood-elf-spellarcher/voice-lines/selected_variant_2.mp3 +0 -0
- package/assets/characters/blood-elf-spellarcher/voice-lines/selected_variant_3.mp3 +0 -0
- package/assets/characters/chronomancer/animations/walk/east/0.png +0 -0
- package/assets/characters/chronomancer/animations/walk/east/1.png +0 -0
- package/assets/characters/chronomancer/animations/walk/east/2.png +0 -0
- package/assets/characters/chronomancer/animations/walk/east/3.png +0 -0
- package/assets/characters/chronomancer/animations/walk/east/4.png +0 -0
- package/assets/characters/chronomancer/animations/walk/east/5.png +0 -0
- package/assets/characters/chronomancer/animations/walk/east/6.png +0 -0
- package/assets/characters/chronomancer/animations/walk/east/7.png +0 -0
- package/assets/characters/chronomancer/animations/walk/north/0.png +0 -0
- package/assets/characters/chronomancer/animations/walk/north/1.png +0 -0
- package/assets/characters/chronomancer/animations/walk/north/2.png +0 -0
- package/assets/characters/chronomancer/animations/walk/north/3.png +0 -0
- package/assets/characters/chronomancer/animations/walk/north/4.png +0 -0
- package/assets/characters/chronomancer/animations/walk/north/5.png +0 -0
- package/assets/characters/chronomancer/animations/walk/north/6.png +0 -0
- package/assets/characters/chronomancer/animations/walk/north/7.png +0 -0
- package/assets/characters/chronomancer/animations/walk/south/0.png +0 -0
- package/assets/characters/chronomancer/animations/walk/south/1.png +0 -0
- package/assets/characters/chronomancer/animations/walk/south/2.png +0 -0
- package/assets/characters/chronomancer/animations/walk/south/3.png +0 -0
- package/assets/characters/chronomancer/animations/walk/south/4.png +0 -0
- package/assets/characters/chronomancer/animations/walk/south/5.png +0 -0
- package/assets/characters/chronomancer/animations/walk/south/6.png +0 -0
- package/assets/characters/chronomancer/animations/walk/south/7.png +0 -0
- package/assets/characters/chronomancer/animations/walk/west/0.png +0 -0
- package/assets/characters/chronomancer/animations/walk/west/1.png +0 -0
- package/assets/characters/chronomancer/animations/walk/west/2.png +0 -0
- package/assets/characters/chronomancer/animations/walk/west/3.png +0 -0
- package/assets/characters/chronomancer/animations/walk/west/4.png +0 -0
- package/assets/characters/chronomancer/animations/walk/west/5.png +0 -0
- package/assets/characters/chronomancer/animations/walk/west/6.png +0 -0
- package/assets/characters/chronomancer/animations/walk/west/7.png +0 -0
- package/assets/characters/chronomancer/animations/working/0.png +0 -0
- package/assets/characters/chronomancer/animations/working/1.png +0 -0
- package/assets/characters/chronomancer/animations/working/10.png +0 -0
- package/assets/characters/chronomancer/animations/working/11.png +0 -0
- package/assets/characters/chronomancer/animations/working/12.png +0 -0
- package/assets/characters/chronomancer/animations/working/13.png +0 -0
- package/assets/characters/chronomancer/animations/working/14.png +0 -0
- package/assets/characters/chronomancer/animations/working/15.png +0 -0
- package/assets/characters/chronomancer/animations/working/2.png +0 -0
- package/assets/characters/chronomancer/animations/working/3.png +0 -0
- package/assets/characters/chronomancer/animations/working/4.png +0 -0
- package/assets/characters/chronomancer/animations/working/5.png +0 -0
- package/assets/characters/chronomancer/animations/working/6.png +0 -0
- package/assets/characters/chronomancer/animations/working/7.png +0 -0
- package/assets/characters/chronomancer/animations/working/8.png +0 -0
- package/assets/characters/chronomancer/animations/working/9.png +0 -0
- package/assets/characters/chronomancer/rotations/east.png +0 -0
- package/assets/characters/chronomancer/rotations/north.png +0 -0
- package/assets/characters/chronomancer/rotations/south.png +0 -0
- package/assets/characters/chronomancer/rotations/west.png +0 -0
- package/assets/characters/chronomancer/voice-lines/arrive.mp3 +0 -0
- package/assets/characters/chronomancer/voice-lines/attention.mp3 +0 -0
- package/assets/characters/chronomancer/voice-lines/complete.mp3 +0 -0
- package/assets/characters/chronomancer/voice-lines/death.mp3 +0 -0
- package/assets/characters/chronomancer/voice-lines/move_variant_1.mp3 +0 -0
- package/assets/characters/chronomancer/voice-lines/move_variant_2.mp3 +0 -0
- package/assets/characters/chronomancer/voice-lines/move_variant_3.mp3 +0 -0
- package/assets/characters/chronomancer/voice-lines/selected_variant_1.mp3 +0 -0
- package/assets/characters/chronomancer/voice-lines/selected_variant_2.mp3 +0 -0
- package/assets/characters/chronomancer/voice-lines/selected_variant_3.mp3 +0 -0
- package/assets/characters/crystal-mage/animations/walk/east/0.png +0 -0
- package/assets/characters/crystal-mage/animations/walk/east/1.png +0 -0
- package/assets/characters/crystal-mage/animations/walk/east/2.png +0 -0
- package/assets/characters/crystal-mage/animations/walk/east/3.png +0 -0
- package/assets/characters/crystal-mage/animations/walk/east/4.png +0 -0
- package/assets/characters/crystal-mage/animations/walk/east/5.png +0 -0
- package/assets/characters/crystal-mage/animations/walk/east/6.png +0 -0
- package/assets/characters/crystal-mage/animations/walk/east/7.png +0 -0
- package/assets/characters/crystal-mage/animations/walk/north/0.png +0 -0
- package/assets/characters/crystal-mage/animations/walk/north/1.png +0 -0
- package/assets/characters/crystal-mage/animations/walk/north/2.png +0 -0
- package/assets/characters/crystal-mage/animations/walk/north/3.png +0 -0
- package/assets/characters/crystal-mage/animations/walk/north/4.png +0 -0
- package/assets/characters/crystal-mage/animations/walk/north/5.png +0 -0
- package/assets/characters/crystal-mage/animations/walk/north/6.png +0 -0
- package/assets/characters/crystal-mage/animations/walk/north/7.png +0 -0
- package/assets/characters/crystal-mage/animations/walk/south/0.png +0 -0
- package/assets/characters/crystal-mage/animations/walk/south/1.png +0 -0
- package/assets/characters/crystal-mage/animations/walk/south/2.png +0 -0
- package/assets/characters/crystal-mage/animations/walk/south/3.png +0 -0
- package/assets/characters/crystal-mage/animations/walk/south/4.png +0 -0
- package/assets/characters/crystal-mage/animations/walk/south/5.png +0 -0
- package/assets/characters/crystal-mage/animations/walk/south/6.png +0 -0
- package/assets/characters/crystal-mage/animations/walk/south/7.png +0 -0
- package/assets/characters/crystal-mage/animations/walk/west/0.png +0 -0
- package/assets/characters/crystal-mage/animations/walk/west/1.png +0 -0
- package/assets/characters/crystal-mage/animations/walk/west/2.png +0 -0
- package/assets/characters/crystal-mage/animations/walk/west/3.png +0 -0
- package/assets/characters/crystal-mage/animations/walk/west/4.png +0 -0
- package/assets/characters/crystal-mage/animations/walk/west/5.png +0 -0
- package/assets/characters/crystal-mage/animations/walk/west/6.png +0 -0
- package/assets/characters/crystal-mage/animations/walk/west/7.png +0 -0
- package/assets/characters/crystal-mage/animations/working/0.png +0 -0
- package/assets/characters/crystal-mage/animations/working/1.png +0 -0
- package/assets/characters/crystal-mage/animations/working/10.png +0 -0
- package/assets/characters/crystal-mage/animations/working/11.png +0 -0
- package/assets/characters/crystal-mage/animations/working/12.png +0 -0
- package/assets/characters/crystal-mage/animations/working/13.png +0 -0
- package/assets/characters/crystal-mage/animations/working/14.png +0 -0
- package/assets/characters/crystal-mage/animations/working/15.png +0 -0
- package/assets/characters/crystal-mage/animations/working/2.png +0 -0
- package/assets/characters/crystal-mage/animations/working/3.png +0 -0
- package/assets/characters/crystal-mage/animations/working/4.png +0 -0
- package/assets/characters/crystal-mage/animations/working/5.png +0 -0
- package/assets/characters/crystal-mage/animations/working/6.png +0 -0
- package/assets/characters/crystal-mage/animations/working/7.png +0 -0
- package/assets/characters/crystal-mage/animations/working/8.png +0 -0
- package/assets/characters/crystal-mage/animations/working/9.png +0 -0
- package/assets/characters/crystal-mage/rotations/east.png +0 -0
- package/assets/characters/crystal-mage/rotations/north.png +0 -0
- package/assets/characters/crystal-mage/rotations/south.png +0 -0
- package/assets/characters/crystal-mage/rotations/west.png +0 -0
- package/assets/characters/crystal-mage/voice-lines/arrive.mp3 +0 -0
- package/assets/characters/crystal-mage/voice-lines/attention.mp3 +0 -0
- package/assets/characters/crystal-mage/voice-lines/complete.mp3 +0 -0
- package/assets/characters/crystal-mage/voice-lines/death.mp3 +0 -0
- package/assets/characters/crystal-mage/voice-lines/move_variant_1.mp3 +0 -0
- package/assets/characters/crystal-mage/voice-lines/move_variant_2.mp3 +0 -0
- package/assets/characters/crystal-mage/voice-lines/move_variant_3.mp3 +0 -0
- package/assets/characters/crystal-mage/voice-lines/selected_variant_1.mp3 +0 -0
- package/assets/characters/crystal-mage/voice-lines/selected_variant_2.mp3 +0 -0
- package/assets/characters/crystal-mage/voice-lines/selected_variant_3.mp3 +0 -0
- package/assets/characters/dwarf-warrior-short/animations/walk/east/0.png +0 -0
- package/assets/characters/dwarf-warrior-short/animations/walk/east/1.png +0 -0
- package/assets/characters/dwarf-warrior-short/animations/walk/east/2.png +0 -0
- package/assets/characters/dwarf-warrior-short/animations/walk/east/3.png +0 -0
- package/assets/characters/dwarf-warrior-short/animations/walk/east/4.png +0 -0
- package/assets/characters/dwarf-warrior-short/animations/walk/east/5.png +0 -0
- package/assets/characters/dwarf-warrior-short/animations/walk/east/6.png +0 -0
- package/assets/characters/dwarf-warrior-short/animations/walk/east/7.png +0 -0
- package/assets/characters/dwarf-warrior-short/animations/walk/north/0.png +0 -0
- package/assets/characters/dwarf-warrior-short/animations/walk/north/1.png +0 -0
- package/assets/characters/dwarf-warrior-short/animations/walk/north/2.png +0 -0
- package/assets/characters/dwarf-warrior-short/animations/walk/north/3.png +0 -0
- package/assets/characters/dwarf-warrior-short/animations/walk/north/4.png +0 -0
- package/assets/characters/dwarf-warrior-short/animations/walk/north/5.png +0 -0
- package/assets/characters/dwarf-warrior-short/animations/walk/north/6.png +0 -0
- package/assets/characters/dwarf-warrior-short/animations/walk/north/7.png +0 -0
- package/assets/characters/dwarf-warrior-short/animations/walk/south/0.png +0 -0
- package/assets/characters/dwarf-warrior-short/animations/walk/south/1.png +0 -0
- package/assets/characters/dwarf-warrior-short/animations/walk/south/2.png +0 -0
- package/assets/characters/dwarf-warrior-short/animations/walk/south/3.png +0 -0
- package/assets/characters/dwarf-warrior-short/animations/walk/south/4.png +0 -0
- package/assets/characters/dwarf-warrior-short/animations/walk/south/5.png +0 -0
- package/assets/characters/dwarf-warrior-short/animations/walk/south/6.png +0 -0
- package/assets/characters/dwarf-warrior-short/animations/walk/south/7.png +0 -0
- package/assets/characters/dwarf-warrior-short/animations/walk/west/0.png +0 -0
- package/assets/characters/dwarf-warrior-short/animations/walk/west/1.png +0 -0
- package/assets/characters/dwarf-warrior-short/animations/walk/west/2.png +0 -0
- package/assets/characters/dwarf-warrior-short/animations/walk/west/3.png +0 -0
- package/assets/characters/dwarf-warrior-short/animations/walk/west/4.png +0 -0
- package/assets/characters/dwarf-warrior-short/animations/walk/west/5.png +0 -0
- package/assets/characters/dwarf-warrior-short/animations/walk/west/6.png +0 -0
- package/assets/characters/dwarf-warrior-short/animations/walk/west/7.png +0 -0
- package/assets/characters/dwarf-warrior-short/animations/working/0.png +0 -0
- package/assets/characters/dwarf-warrior-short/animations/working/1.png +0 -0
- package/assets/characters/dwarf-warrior-short/animations/working/10.png +0 -0
- package/assets/characters/dwarf-warrior-short/animations/working/11.png +0 -0
- package/assets/characters/dwarf-warrior-short/animations/working/12.png +0 -0
- package/assets/characters/dwarf-warrior-short/animations/working/13.png +0 -0
- package/assets/characters/dwarf-warrior-short/animations/working/14.png +0 -0
- package/assets/characters/dwarf-warrior-short/animations/working/15.png +0 -0
- package/assets/characters/dwarf-warrior-short/animations/working/2.png +0 -0
- package/assets/characters/dwarf-warrior-short/animations/working/3.png +0 -0
- package/assets/characters/dwarf-warrior-short/animations/working/4.png +0 -0
- package/assets/characters/dwarf-warrior-short/animations/working/5.png +0 -0
- package/assets/characters/dwarf-warrior-short/animations/working/6.png +0 -0
- package/assets/characters/dwarf-warrior-short/animations/working/7.png +0 -0
- package/assets/characters/dwarf-warrior-short/animations/working/8.png +0 -0
- package/assets/characters/dwarf-warrior-short/animations/working/9.png +0 -0
- package/assets/characters/dwarf-warrior-short/rotations/east.png +0 -0
- package/assets/characters/dwarf-warrior-short/rotations/north.png +0 -0
- package/assets/characters/dwarf-warrior-short/rotations/south.png +0 -0
- package/assets/characters/dwarf-warrior-short/rotations/west.png +0 -0
- package/assets/characters/dwarf-warrior-short/voice-lines/arrive.mp3 +0 -0
- package/assets/characters/dwarf-warrior-short/voice-lines/attention.mp3 +0 -0
- package/assets/characters/dwarf-warrior-short/voice-lines/complete.mp3 +0 -0
- package/assets/characters/dwarf-warrior-short/voice-lines/death.mp3 +0 -0
- package/assets/characters/dwarf-warrior-short/voice-lines/move_variant_1.mp3 +0 -0
- package/assets/characters/dwarf-warrior-short/voice-lines/move_variant_2.mp3 +0 -0
- package/assets/characters/dwarf-warrior-short/voice-lines/move_variant_3.mp3 +0 -0
- package/assets/characters/dwarf-warrior-short/voice-lines/selected_variant_1.mp3 +0 -0
- package/assets/characters/dwarf-warrior-short/voice-lines/selected_variant_2.mp3 +0 -0
- package/assets/characters/dwarf-warrior-short/voice-lines/selected_variant_3.mp3 +0 -0
- package/assets/characters/elder-wizard/animations/walk/east/0.png +0 -0
- package/assets/characters/elder-wizard/animations/walk/east/1.png +0 -0
- package/assets/characters/elder-wizard/animations/walk/east/2.png +0 -0
- package/assets/characters/elder-wizard/animations/walk/east/3.png +0 -0
- package/assets/characters/elder-wizard/animations/walk/east/4.png +0 -0
- package/assets/characters/elder-wizard/animations/walk/east/5.png +0 -0
- package/assets/characters/elder-wizard/animations/walk/east/6.png +0 -0
- package/assets/characters/elder-wizard/animations/walk/east/7.png +0 -0
- package/assets/characters/elder-wizard/animations/walk/north/0.png +0 -0
- package/assets/characters/elder-wizard/animations/walk/north/1.png +0 -0
- package/assets/characters/elder-wizard/animations/walk/north/2.png +0 -0
- package/assets/characters/elder-wizard/animations/walk/north/3.png +0 -0
- package/assets/characters/elder-wizard/animations/walk/north/4.png +0 -0
- package/assets/characters/elder-wizard/animations/walk/north/5.png +0 -0
- package/assets/characters/elder-wizard/animations/walk/north/6.png +0 -0
- package/assets/characters/elder-wizard/animations/walk/north/7.png +0 -0
- package/assets/characters/elder-wizard/animations/walk/south/0.png +0 -0
- package/assets/characters/elder-wizard/animations/walk/south/1.png +0 -0
- package/assets/characters/elder-wizard/animations/walk/south/2.png +0 -0
- package/assets/characters/elder-wizard/animations/walk/south/3.png +0 -0
- package/assets/characters/elder-wizard/animations/walk/south/4.png +0 -0
- package/assets/characters/elder-wizard/animations/walk/south/5.png +0 -0
- package/assets/characters/elder-wizard/animations/walk/south/6.png +0 -0
- package/assets/characters/elder-wizard/animations/walk/south/7.png +0 -0
- package/assets/characters/elder-wizard/animations/walk/west/0.png +0 -0
- package/assets/characters/elder-wizard/animations/walk/west/1.png +0 -0
- package/assets/characters/elder-wizard/animations/walk/west/2.png +0 -0
- package/assets/characters/elder-wizard/animations/walk/west/3.png +0 -0
- package/assets/characters/elder-wizard/animations/walk/west/4.png +0 -0
- package/assets/characters/elder-wizard/animations/walk/west/5.png +0 -0
- package/assets/characters/elder-wizard/animations/walk/west/6.png +0 -0
- package/assets/characters/elder-wizard/animations/walk/west/7.png +0 -0
- package/assets/characters/elder-wizard/animations/working/0.png +0 -0
- package/assets/characters/elder-wizard/animations/working/1.png +0 -0
- package/assets/characters/elder-wizard/animations/working/10.png +0 -0
- package/assets/characters/elder-wizard/animations/working/11.png +0 -0
- package/assets/characters/elder-wizard/animations/working/12.png +0 -0
- package/assets/characters/elder-wizard/animations/working/13.png +0 -0
- package/assets/characters/elder-wizard/animations/working/14.png +0 -0
- package/assets/characters/elder-wizard/animations/working/15.png +0 -0
- package/assets/characters/elder-wizard/animations/working/2.png +0 -0
- package/assets/characters/elder-wizard/animations/working/3.png +0 -0
- package/assets/characters/elder-wizard/animations/working/4.png +0 -0
- package/assets/characters/elder-wizard/animations/working/5.png +0 -0
- package/assets/characters/elder-wizard/animations/working/6.png +0 -0
- package/assets/characters/elder-wizard/animations/working/7.png +0 -0
- package/assets/characters/elder-wizard/animations/working/8.png +0 -0
- package/assets/characters/elder-wizard/animations/working/9.png +0 -0
- package/assets/characters/elder-wizard/rotations/east.png +0 -0
- package/assets/characters/elder-wizard/rotations/north.png +0 -0
- package/assets/characters/elder-wizard/rotations/south.png +0 -0
- package/assets/characters/elder-wizard/rotations/west.png +0 -0
- package/assets/characters/elder-wizard/voice-lines/arrive.mp3 +0 -0
- package/assets/characters/elder-wizard/voice-lines/attention.mp3 +0 -0
- package/assets/characters/elder-wizard/voice-lines/complete.mp3 +0 -0
- package/assets/characters/elder-wizard/voice-lines/death.mp3 +0 -0
- package/assets/characters/elder-wizard/voice-lines/move_variant_1.mp3 +0 -0
- package/assets/characters/elder-wizard/voice-lines/move_variant_2.mp3 +0 -0
- package/assets/characters/elder-wizard/voice-lines/move_variant_3.mp3 +0 -0
- package/assets/characters/elder-wizard/voice-lines/selected_variant_1.mp3 +0 -0
- package/assets/characters/elder-wizard/voice-lines/selected_variant_2.mp3 +0 -0
- package/assets/characters/elder-wizard/voice-lines/selected_variant_3.mp3 +0 -0
- package/assets/characters/gothic-witch/animations/walk/east/0.png +0 -0
- package/assets/characters/gothic-witch/animations/walk/east/1.png +0 -0
- package/assets/characters/gothic-witch/animations/walk/east/2.png +0 -0
- package/assets/characters/gothic-witch/animations/walk/east/3.png +0 -0
- package/assets/characters/gothic-witch/animations/walk/east/4.png +0 -0
- package/assets/characters/gothic-witch/animations/walk/east/5.png +0 -0
- package/assets/characters/gothic-witch/animations/walk/east/6.png +0 -0
- package/assets/characters/gothic-witch/animations/walk/east/7.png +0 -0
- package/assets/characters/gothic-witch/animations/walk/north/0.png +0 -0
- package/assets/characters/gothic-witch/animations/walk/north/1.png +0 -0
- package/assets/characters/gothic-witch/animations/walk/north/2.png +0 -0
- package/assets/characters/gothic-witch/animations/walk/north/3.png +0 -0
- package/assets/characters/gothic-witch/animations/walk/north/4.png +0 -0
- package/assets/characters/gothic-witch/animations/walk/north/5.png +0 -0
- package/assets/characters/gothic-witch/animations/walk/north/6.png +0 -0
- package/assets/characters/gothic-witch/animations/walk/north/7.png +0 -0
- package/assets/characters/gothic-witch/animations/walk/south/0.png +0 -0
- package/assets/characters/gothic-witch/animations/walk/south/1.png +0 -0
- package/assets/characters/gothic-witch/animations/walk/south/2.png +0 -0
- package/assets/characters/gothic-witch/animations/walk/south/3.png +0 -0
- package/assets/characters/gothic-witch/animations/walk/south/4.png +0 -0
- package/assets/characters/gothic-witch/animations/walk/south/5.png +0 -0
- package/assets/characters/gothic-witch/animations/walk/south/6.png +0 -0
- package/assets/characters/gothic-witch/animations/walk/south/7.png +0 -0
- package/assets/characters/gothic-witch/animations/walk/west/0.png +0 -0
- package/assets/characters/gothic-witch/animations/walk/west/1.png +0 -0
- package/assets/characters/gothic-witch/animations/walk/west/2.png +0 -0
- package/assets/characters/gothic-witch/animations/walk/west/3.png +0 -0
- package/assets/characters/gothic-witch/animations/walk/west/4.png +0 -0
- package/assets/characters/gothic-witch/animations/walk/west/5.png +0 -0
- package/assets/characters/gothic-witch/animations/walk/west/6.png +0 -0
- package/assets/characters/gothic-witch/animations/walk/west/7.png +0 -0
- package/assets/characters/gothic-witch/animations/working/0.png +0 -0
- package/assets/characters/gothic-witch/animations/working/1.png +0 -0
- package/assets/characters/gothic-witch/animations/working/10.png +0 -0
- package/assets/characters/gothic-witch/animations/working/11.png +0 -0
- package/assets/characters/gothic-witch/animations/working/12.png +0 -0
- package/assets/characters/gothic-witch/animations/working/13.png +0 -0
- package/assets/characters/gothic-witch/animations/working/14.png +0 -0
- package/assets/characters/gothic-witch/animations/working/15.png +0 -0
- package/assets/characters/gothic-witch/animations/working/2.png +0 -0
- package/assets/characters/gothic-witch/animations/working/3.png +0 -0
- package/assets/characters/gothic-witch/animations/working/4.png +0 -0
- package/assets/characters/gothic-witch/animations/working/5.png +0 -0
- package/assets/characters/gothic-witch/animations/working/6.png +0 -0
- package/assets/characters/gothic-witch/animations/working/7.png +0 -0
- package/assets/characters/gothic-witch/animations/working/8.png +0 -0
- package/assets/characters/gothic-witch/animations/working/9.png +0 -0
- package/assets/characters/gothic-witch/rotations/east.png +0 -0
- package/assets/characters/gothic-witch/rotations/north.png +0 -0
- package/assets/characters/gothic-witch/rotations/south.png +0 -0
- package/assets/characters/gothic-witch/rotations/west.png +0 -0
- package/assets/characters/gothic-witch/voice-lines/arrive.mp3 +0 -0
- package/assets/characters/gothic-witch/voice-lines/attention.mp3 +0 -0
- package/assets/characters/gothic-witch/voice-lines/complete.mp3 +0 -0
- package/assets/characters/gothic-witch/voice-lines/death.mp3 +0 -0
- package/assets/characters/gothic-witch/voice-lines/move_variant_1.mp3 +0 -0
- package/assets/characters/gothic-witch/voice-lines/move_variant_2.mp3 +0 -0
- package/assets/characters/gothic-witch/voice-lines/move_variant_3.mp3 +0 -0
- package/assets/characters/gothic-witch/voice-lines/selected_variant_1.mp3 +0 -0
- package/assets/characters/gothic-witch/voice-lines/selected_variant_2.mp3 +0 -0
- package/assets/characters/gothic-witch/voice-lines/selected_variant_3.mp3 +0 -0
- package/assets/characters/horned-helm-fighter/animations/walk/east/0.png +0 -0
- package/assets/characters/horned-helm-fighter/animations/walk/east/1.png +0 -0
- package/assets/characters/horned-helm-fighter/animations/walk/east/2.png +0 -0
- package/assets/characters/horned-helm-fighter/animations/walk/east/3.png +0 -0
- package/assets/characters/horned-helm-fighter/animations/walk/east/4.png +0 -0
- package/assets/characters/horned-helm-fighter/animations/walk/east/5.png +0 -0
- package/assets/characters/horned-helm-fighter/animations/walk/east/6.png +0 -0
- package/assets/characters/horned-helm-fighter/animations/walk/east/7.png +0 -0
- package/assets/characters/horned-helm-fighter/animations/walk/north/0.png +0 -0
- package/assets/characters/horned-helm-fighter/animations/walk/north/1.png +0 -0
- package/assets/characters/horned-helm-fighter/animations/walk/north/2.png +0 -0
- package/assets/characters/horned-helm-fighter/animations/walk/north/3.png +0 -0
- package/assets/characters/horned-helm-fighter/animations/walk/north/4.png +0 -0
- package/assets/characters/horned-helm-fighter/animations/walk/north/5.png +0 -0
- package/assets/characters/horned-helm-fighter/animations/walk/north/6.png +0 -0
- package/assets/characters/horned-helm-fighter/animations/walk/north/7.png +0 -0
- package/assets/characters/horned-helm-fighter/animations/walk/south/0.png +0 -0
- package/assets/characters/horned-helm-fighter/animations/walk/south/1.png +0 -0
- package/assets/characters/horned-helm-fighter/animations/walk/south/2.png +0 -0
- package/assets/characters/horned-helm-fighter/animations/walk/south/3.png +0 -0
- package/assets/characters/horned-helm-fighter/animations/walk/south/4.png +0 -0
- package/assets/characters/horned-helm-fighter/animations/walk/south/5.png +0 -0
- package/assets/characters/horned-helm-fighter/animations/walk/south/6.png +0 -0
- package/assets/characters/horned-helm-fighter/animations/walk/south/7.png +0 -0
- package/assets/characters/horned-helm-fighter/animations/walk/west/0.png +0 -0
- package/assets/characters/horned-helm-fighter/animations/walk/west/1.png +0 -0
- package/assets/characters/horned-helm-fighter/animations/walk/west/2.png +0 -0
- package/assets/characters/horned-helm-fighter/animations/walk/west/3.png +0 -0
- package/assets/characters/horned-helm-fighter/animations/walk/west/4.png +0 -0
- package/assets/characters/horned-helm-fighter/animations/walk/west/5.png +0 -0
- package/assets/characters/horned-helm-fighter/animations/walk/west/6.png +0 -0
- package/assets/characters/horned-helm-fighter/animations/walk/west/7.png +0 -0
- package/assets/characters/horned-helm-fighter/animations/working/0.png +0 -0
- package/assets/characters/horned-helm-fighter/animations/working/1.png +0 -0
- package/assets/characters/horned-helm-fighter/animations/working/10.png +0 -0
- package/assets/characters/horned-helm-fighter/animations/working/11.png +0 -0
- package/assets/characters/horned-helm-fighter/animations/working/12.png +0 -0
- package/assets/characters/horned-helm-fighter/animations/working/13.png +0 -0
- package/assets/characters/horned-helm-fighter/animations/working/14.png +0 -0
- package/assets/characters/horned-helm-fighter/animations/working/15.png +0 -0
- package/assets/characters/horned-helm-fighter/animations/working/2.png +0 -0
- package/assets/characters/horned-helm-fighter/animations/working/3.png +0 -0
- package/assets/characters/horned-helm-fighter/animations/working/4.png +0 -0
- package/assets/characters/horned-helm-fighter/animations/working/5.png +0 -0
- package/assets/characters/horned-helm-fighter/animations/working/6.png +0 -0
- package/assets/characters/horned-helm-fighter/animations/working/7.png +0 -0
- package/assets/characters/horned-helm-fighter/animations/working/8.png +0 -0
- package/assets/characters/horned-helm-fighter/animations/working/9.png +0 -0
- package/assets/characters/horned-helm-fighter/rotations/east.png +0 -0
- package/assets/characters/horned-helm-fighter/rotations/north.png +0 -0
- package/assets/characters/horned-helm-fighter/rotations/south.png +0 -0
- package/assets/characters/horned-helm-fighter/rotations/west.png +0 -0
- package/assets/characters/horned-helm-fighter/voice-lines/arrive.mp3 +0 -0
- package/assets/characters/horned-helm-fighter/voice-lines/attention.mp3 +0 -0
- package/assets/characters/horned-helm-fighter/voice-lines/complete.mp3 +0 -0
- package/assets/characters/horned-helm-fighter/voice-lines/death.mp3 +0 -0
- package/assets/characters/horned-helm-fighter/voice-lines/move_variant_1.mp3 +0 -0
- package/assets/characters/horned-helm-fighter/voice-lines/move_variant_2.mp3 +0 -0
- package/assets/characters/horned-helm-fighter/voice-lines/move_variant_3.mp3 +0 -0
- package/assets/characters/horned-helm-fighter/voice-lines/selected_variant_1.mp3 +0 -0
- package/assets/characters/horned-helm-fighter/voice-lines/selected_variant_2.mp3 +0 -0
- package/assets/characters/horned-helm-fighter/voice-lines/selected_variant_3.mp3 +0 -0
- package/assets/characters/knight-blue-guardian/animations/walk/east/0.png +0 -0
- package/assets/characters/knight-blue-guardian/animations/walk/east/1.png +0 -0
- package/assets/characters/knight-blue-guardian/animations/walk/east/2.png +0 -0
- package/assets/characters/knight-blue-guardian/animations/walk/east/3.png +0 -0
- package/assets/characters/knight-blue-guardian/animations/walk/east/4.png +0 -0
- package/assets/characters/knight-blue-guardian/animations/walk/east/5.png +0 -0
- package/assets/characters/knight-blue-guardian/animations/walk/east/6.png +0 -0
- package/assets/characters/knight-blue-guardian/animations/walk/east/7.png +0 -0
- package/assets/characters/knight-blue-guardian/animations/walk/north/0.png +0 -0
- package/assets/characters/knight-blue-guardian/animations/walk/north/1.png +0 -0
- package/assets/characters/knight-blue-guardian/animations/walk/north/2.png +0 -0
- package/assets/characters/knight-blue-guardian/animations/walk/north/3.png +0 -0
- package/assets/characters/knight-blue-guardian/animations/walk/north/4.png +0 -0
- package/assets/characters/knight-blue-guardian/animations/walk/north/5.png +0 -0
- package/assets/characters/knight-blue-guardian/animations/walk/north/6.png +0 -0
- package/assets/characters/knight-blue-guardian/animations/walk/north/7.png +0 -0
- package/assets/characters/knight-blue-guardian/animations/walk/south/0.png +0 -0
- package/assets/characters/knight-blue-guardian/animations/walk/south/1.png +0 -0
- package/assets/characters/knight-blue-guardian/animations/walk/south/2.png +0 -0
- package/assets/characters/knight-blue-guardian/animations/walk/south/3.png +0 -0
- package/assets/characters/knight-blue-guardian/animations/walk/south/4.png +0 -0
- package/assets/characters/knight-blue-guardian/animations/walk/south/5.png +0 -0
- package/assets/characters/knight-blue-guardian/animations/walk/south/6.png +0 -0
- package/assets/characters/knight-blue-guardian/animations/walk/south/7.png +0 -0
- package/assets/characters/knight-blue-guardian/animations/walk/west/0.png +0 -0
- package/assets/characters/knight-blue-guardian/animations/walk/west/1.png +0 -0
- package/assets/characters/knight-blue-guardian/animations/walk/west/2.png +0 -0
- package/assets/characters/knight-blue-guardian/animations/walk/west/3.png +0 -0
- package/assets/characters/knight-blue-guardian/animations/walk/west/4.png +0 -0
- package/assets/characters/knight-blue-guardian/animations/walk/west/5.png +0 -0
- package/assets/characters/knight-blue-guardian/animations/walk/west/6.png +0 -0
- package/assets/characters/knight-blue-guardian/animations/walk/west/7.png +0 -0
- package/assets/characters/knight-blue-guardian/animations/working/0.png +0 -0
- package/assets/characters/knight-blue-guardian/animations/working/1.png +0 -0
- package/assets/characters/knight-blue-guardian/animations/working/10.png +0 -0
- package/assets/characters/knight-blue-guardian/animations/working/11.png +0 -0
- package/assets/characters/knight-blue-guardian/animations/working/12.png +0 -0
- package/assets/characters/knight-blue-guardian/animations/working/13.png +0 -0
- package/assets/characters/knight-blue-guardian/animations/working/14.png +0 -0
- package/assets/characters/knight-blue-guardian/animations/working/15.png +0 -0
- package/assets/characters/knight-blue-guardian/animations/working/2.png +0 -0
- package/assets/characters/knight-blue-guardian/animations/working/3.png +0 -0
- package/assets/characters/knight-blue-guardian/animations/working/4.png +0 -0
- package/assets/characters/knight-blue-guardian/animations/working/5.png +0 -0
- package/assets/characters/knight-blue-guardian/animations/working/6.png +0 -0
- package/assets/characters/knight-blue-guardian/animations/working/7.png +0 -0
- package/assets/characters/knight-blue-guardian/animations/working/8.png +0 -0
- package/assets/characters/knight-blue-guardian/animations/working/9.png +0 -0
- package/assets/characters/knight-blue-guardian/rotations/east.png +0 -0
- package/assets/characters/knight-blue-guardian/rotations/north.png +0 -0
- package/assets/characters/knight-blue-guardian/rotations/south.png +0 -0
- package/assets/characters/knight-blue-guardian/rotations/west.png +0 -0
- package/assets/characters/knight-blue-guardian/voice-lines/arrive.mp3 +0 -0
- package/assets/characters/knight-blue-guardian/voice-lines/attention.mp3 +0 -0
- package/assets/characters/knight-blue-guardian/voice-lines/complete.mp3 +0 -0
- package/assets/characters/knight-blue-guardian/voice-lines/death.mp3 +0 -0
- package/assets/characters/knight-blue-guardian/voice-lines/move_variant_1.mp3 +0 -0
- package/assets/characters/knight-blue-guardian/voice-lines/move_variant_2.mp3 +0 -0
- package/assets/characters/knight-blue-guardian/voice-lines/move_variant_3.mp3 +0 -0
- package/assets/characters/knight-blue-guardian/voice-lines/selected_variant_1.mp3 +0 -0
- package/assets/characters/knight-blue-guardian/voice-lines/selected_variant_2.mp3 +0 -0
- package/assets/characters/knight-blue-guardian/voice-lines/selected_variant_3.mp3 +0 -0
- package/assets/characters/launch-preview.html +298 -0
- package/assets/characters/minotaur-strategist/animations/walk/east/0.png +0 -0
- package/assets/characters/minotaur-strategist/animations/walk/east/1.png +0 -0
- package/assets/characters/minotaur-strategist/animations/walk/east/2.png +0 -0
- package/assets/characters/minotaur-strategist/animations/walk/east/3.png +0 -0
- package/assets/characters/minotaur-strategist/animations/walk/east/4.png +0 -0
- package/assets/characters/minotaur-strategist/animations/walk/east/5.png +0 -0
- package/assets/characters/minotaur-strategist/animations/walk/east/6.png +0 -0
- package/assets/characters/minotaur-strategist/animations/walk/east/7.png +0 -0
- package/assets/characters/minotaur-strategist/animations/walk/north/0.png +0 -0
- package/assets/characters/minotaur-strategist/animations/walk/north/1.png +0 -0
- package/assets/characters/minotaur-strategist/animations/walk/north/2.png +0 -0
- package/assets/characters/minotaur-strategist/animations/walk/north/3.png +0 -0
- package/assets/characters/minotaur-strategist/animations/walk/north/4.png +0 -0
- package/assets/characters/minotaur-strategist/animations/walk/north/5.png +0 -0
- package/assets/characters/minotaur-strategist/animations/walk/north/6.png +0 -0
- package/assets/characters/minotaur-strategist/animations/walk/north/7.png +0 -0
- package/assets/characters/minotaur-strategist/animations/walk/south/0.png +0 -0
- package/assets/characters/minotaur-strategist/animations/walk/south/1.png +0 -0
- package/assets/characters/minotaur-strategist/animations/walk/south/2.png +0 -0
- package/assets/characters/minotaur-strategist/animations/walk/south/3.png +0 -0
- package/assets/characters/minotaur-strategist/animations/walk/south/4.png +0 -0
- package/assets/characters/minotaur-strategist/animations/walk/south/5.png +0 -0
- package/assets/characters/minotaur-strategist/animations/walk/south/6.png +0 -0
- package/assets/characters/minotaur-strategist/animations/walk/south/7.png +0 -0
- package/assets/characters/minotaur-strategist/animations/walk/west/0.png +0 -0
- package/assets/characters/minotaur-strategist/animations/walk/west/1.png +0 -0
- package/assets/characters/minotaur-strategist/animations/walk/west/2.png +0 -0
- package/assets/characters/minotaur-strategist/animations/walk/west/3.png +0 -0
- package/assets/characters/minotaur-strategist/animations/walk/west/4.png +0 -0
- package/assets/characters/minotaur-strategist/animations/walk/west/5.png +0 -0
- package/assets/characters/minotaur-strategist/animations/walk/west/6.png +0 -0
- package/assets/characters/minotaur-strategist/animations/walk/west/7.png +0 -0
- package/assets/characters/minotaur-strategist/animations/working/0.png +0 -0
- package/assets/characters/minotaur-strategist/animations/working/1.png +0 -0
- package/assets/characters/minotaur-strategist/animations/working/10.png +0 -0
- package/assets/characters/minotaur-strategist/animations/working/11.png +0 -0
- package/assets/characters/minotaur-strategist/animations/working/12.png +0 -0
- package/assets/characters/minotaur-strategist/animations/working/13.png +0 -0
- package/assets/characters/minotaur-strategist/animations/working/14.png +0 -0
- package/assets/characters/minotaur-strategist/animations/working/15.png +0 -0
- package/assets/characters/minotaur-strategist/animations/working/2.png +0 -0
- package/assets/characters/minotaur-strategist/animations/working/3.png +0 -0
- package/assets/characters/minotaur-strategist/animations/working/4.png +0 -0
- package/assets/characters/minotaur-strategist/animations/working/5.png +0 -0
- package/assets/characters/minotaur-strategist/animations/working/6.png +0 -0
- package/assets/characters/minotaur-strategist/animations/working/7.png +0 -0
- package/assets/characters/minotaur-strategist/animations/working/8.png +0 -0
- package/assets/characters/minotaur-strategist/animations/working/9.png +0 -0
- package/assets/characters/minotaur-strategist/rotations/east.png +0 -0
- package/assets/characters/minotaur-strategist/rotations/north.png +0 -0
- package/assets/characters/minotaur-strategist/rotations/south.png +0 -0
- package/assets/characters/minotaur-strategist/rotations/west.png +0 -0
- package/assets/characters/minotaur-strategist/voice-lines/arrive.mp3 +0 -0
- package/assets/characters/minotaur-strategist/voice-lines/attention.mp3 +0 -0
- package/assets/characters/minotaur-strategist/voice-lines/complete.mp3 +0 -0
- package/assets/characters/minotaur-strategist/voice-lines/death.mp3 +0 -0
- package/assets/characters/minotaur-strategist/voice-lines/move_variant_1.mp3 +0 -0
- package/assets/characters/minotaur-strategist/voice-lines/move_variant_2.mp3 +0 -0
- package/assets/characters/minotaur-strategist/voice-lines/move_variant_3.mp3 +0 -0
- package/assets/characters/minotaur-strategist/voice-lines/selected_variant_1.mp3 +0 -0
- package/assets/characters/minotaur-strategist/voice-lines/selected_variant_2.mp3 +0 -0
- package/assets/characters/minotaur-strategist/voice-lines/selected_variant_3.mp3 +0 -0
- package/assets/characters/moon-grove-druid/animations/walk/east/0.png +0 -0
- package/assets/characters/moon-grove-druid/animations/walk/east/1.png +0 -0
- package/assets/characters/moon-grove-druid/animations/walk/east/2.png +0 -0
- package/assets/characters/moon-grove-druid/animations/walk/east/3.png +0 -0
- package/assets/characters/moon-grove-druid/animations/walk/east/4.png +0 -0
- package/assets/characters/moon-grove-druid/animations/walk/east/5.png +0 -0
- package/assets/characters/moon-grove-druid/animations/walk/east/6.png +0 -0
- package/assets/characters/moon-grove-druid/animations/walk/east/7.png +0 -0
- package/assets/characters/moon-grove-druid/animations/walk/north/0.png +0 -0
- package/assets/characters/moon-grove-druid/animations/walk/north/1.png +0 -0
- package/assets/characters/moon-grove-druid/animations/walk/north/2.png +0 -0
- package/assets/characters/moon-grove-druid/animations/walk/north/3.png +0 -0
- package/assets/characters/moon-grove-druid/animations/walk/north/4.png +0 -0
- package/assets/characters/moon-grove-druid/animations/walk/north/5.png +0 -0
- package/assets/characters/moon-grove-druid/animations/walk/north/6.png +0 -0
- package/assets/characters/moon-grove-druid/animations/walk/north/7.png +0 -0
- package/assets/characters/moon-grove-druid/animations/walk/south/0.png +0 -0
- package/assets/characters/moon-grove-druid/animations/walk/south/1.png +0 -0
- package/assets/characters/moon-grove-druid/animations/walk/south/2.png +0 -0
- package/assets/characters/moon-grove-druid/animations/walk/south/3.png +0 -0
- package/assets/characters/moon-grove-druid/animations/walk/south/4.png +0 -0
- package/assets/characters/moon-grove-druid/animations/walk/south/5.png +0 -0
- package/assets/characters/moon-grove-druid/animations/walk/south/6.png +0 -0
- package/assets/characters/moon-grove-druid/animations/walk/south/7.png +0 -0
- package/assets/characters/moon-grove-druid/animations/walk/west/0.png +0 -0
- package/assets/characters/moon-grove-druid/animations/walk/west/1.png +0 -0
- package/assets/characters/moon-grove-druid/animations/walk/west/2.png +0 -0
- package/assets/characters/moon-grove-druid/animations/walk/west/3.png +0 -0
- package/assets/characters/moon-grove-druid/animations/walk/west/4.png +0 -0
- package/assets/characters/moon-grove-druid/animations/walk/west/5.png +0 -0
- package/assets/characters/moon-grove-druid/animations/walk/west/6.png +0 -0
- package/assets/characters/moon-grove-druid/animations/walk/west/7.png +0 -0
- package/assets/characters/moon-grove-druid/animations/working/0.png +0 -0
- package/assets/characters/moon-grove-druid/animations/working/1.png +0 -0
- package/assets/characters/moon-grove-druid/animations/working/10.png +0 -0
- package/assets/characters/moon-grove-druid/animations/working/11.png +0 -0
- package/assets/characters/moon-grove-druid/animations/working/12.png +0 -0
- package/assets/characters/moon-grove-druid/animations/working/13.png +0 -0
- package/assets/characters/moon-grove-druid/animations/working/14.png +0 -0
- package/assets/characters/moon-grove-druid/animations/working/15.png +0 -0
- package/assets/characters/moon-grove-druid/animations/working/2.png +0 -0
- package/assets/characters/moon-grove-druid/animations/working/3.png +0 -0
- package/assets/characters/moon-grove-druid/animations/working/4.png +0 -0
- package/assets/characters/moon-grove-druid/animations/working/5.png +0 -0
- package/assets/characters/moon-grove-druid/animations/working/6.png +0 -0
- package/assets/characters/moon-grove-druid/animations/working/7.png +0 -0
- package/assets/characters/moon-grove-druid/animations/working/8.png +0 -0
- package/assets/characters/moon-grove-druid/animations/working/9.png +0 -0
- package/assets/characters/moon-grove-druid/rotations/east.png +0 -0
- package/assets/characters/moon-grove-druid/rotations/north.png +0 -0
- package/assets/characters/moon-grove-druid/rotations/south.png +0 -0
- package/assets/characters/moon-grove-druid/rotations/west.png +0 -0
- package/assets/characters/moon-grove-druid/voice-lines/arrive.mp3 +0 -0
- package/assets/characters/moon-grove-druid/voice-lines/attention.mp3 +0 -0
- package/assets/characters/moon-grove-druid/voice-lines/complete.mp3 +0 -0
- package/assets/characters/moon-grove-druid/voice-lines/death.mp3 +0 -0
- package/assets/characters/moon-grove-druid/voice-lines/move_variant_1.mp3 +0 -0
- package/assets/characters/moon-grove-druid/voice-lines/move_variant_2.mp3 +0 -0
- package/assets/characters/moon-grove-druid/voice-lines/move_variant_3.mp3 +0 -0
- package/assets/characters/moon-grove-druid/voice-lines/selected_variant_1.mp3 +0 -0
- package/assets/characters/moon-grove-druid/voice-lines/selected_variant_2.mp3 +0 -0
- package/assets/characters/moon-grove-druid/voice-lines/selected_variant_3.mp3 +0 -0
- package/assets/characters/necromancer-male/animations/walk/east/0.png +0 -0
- package/assets/characters/necromancer-male/animations/walk/east/1.png +0 -0
- package/assets/characters/necromancer-male/animations/walk/east/2.png +0 -0
- package/assets/characters/necromancer-male/animations/walk/east/3.png +0 -0
- package/assets/characters/necromancer-male/animations/walk/east/4.png +0 -0
- package/assets/characters/necromancer-male/animations/walk/east/5.png +0 -0
- package/assets/characters/necromancer-male/animations/walk/east/6.png +0 -0
- package/assets/characters/necromancer-male/animations/walk/east/7.png +0 -0
- package/assets/characters/necromancer-male/animations/walk/north/0.png +0 -0
- package/assets/characters/necromancer-male/animations/walk/north/1.png +0 -0
- package/assets/characters/necromancer-male/animations/walk/north/2.png +0 -0
- package/assets/characters/necromancer-male/animations/walk/north/3.png +0 -0
- package/assets/characters/necromancer-male/animations/walk/north/4.png +0 -0
- package/assets/characters/necromancer-male/animations/walk/north/5.png +0 -0
- package/assets/characters/necromancer-male/animations/walk/north/6.png +0 -0
- package/assets/characters/necromancer-male/animations/walk/north/7.png +0 -0
- package/assets/characters/necromancer-male/animations/walk/south/0.png +0 -0
- package/assets/characters/necromancer-male/animations/walk/south/1.png +0 -0
- package/assets/characters/necromancer-male/animations/walk/south/2.png +0 -0
- package/assets/characters/necromancer-male/animations/walk/south/3.png +0 -0
- package/assets/characters/necromancer-male/animations/walk/south/4.png +0 -0
- package/assets/characters/necromancer-male/animations/walk/south/5.png +0 -0
- package/assets/characters/necromancer-male/animations/walk/south/6.png +0 -0
- package/assets/characters/necromancer-male/animations/walk/south/7.png +0 -0
- package/assets/characters/necromancer-male/animations/walk/west/0.png +0 -0
- package/assets/characters/necromancer-male/animations/walk/west/1.png +0 -0
- package/assets/characters/necromancer-male/animations/walk/west/2.png +0 -0
- package/assets/characters/necromancer-male/animations/walk/west/3.png +0 -0
- package/assets/characters/necromancer-male/animations/walk/west/4.png +0 -0
- package/assets/characters/necromancer-male/animations/walk/west/5.png +0 -0
- package/assets/characters/necromancer-male/animations/walk/west/6.png +0 -0
- package/assets/characters/necromancer-male/animations/walk/west/7.png +0 -0
- package/assets/characters/necromancer-male/animations/working/0.png +0 -0
- package/assets/characters/necromancer-male/animations/working/1.png +0 -0
- package/assets/characters/necromancer-male/animations/working/10.png +0 -0
- package/assets/characters/necromancer-male/animations/working/11.png +0 -0
- package/assets/characters/necromancer-male/animations/working/12.png +0 -0
- package/assets/characters/necromancer-male/animations/working/13.png +0 -0
- package/assets/characters/necromancer-male/animations/working/14.png +0 -0
- package/assets/characters/necromancer-male/animations/working/15.png +0 -0
- package/assets/characters/necromancer-male/animations/working/2.png +0 -0
- package/assets/characters/necromancer-male/animations/working/3.png +0 -0
- package/assets/characters/necromancer-male/animations/working/4.png +0 -0
- package/assets/characters/necromancer-male/animations/working/5.png +0 -0
- package/assets/characters/necromancer-male/animations/working/6.png +0 -0
- package/assets/characters/necromancer-male/animations/working/7.png +0 -0
- package/assets/characters/necromancer-male/animations/working/8.png +0 -0
- package/assets/characters/necromancer-male/animations/working/9.png +0 -0
- package/assets/characters/necromancer-male/rotations/east.png +0 -0
- package/assets/characters/necromancer-male/rotations/north.png +0 -0
- package/assets/characters/necromancer-male/rotations/south.png +0 -0
- package/assets/characters/necromancer-male/rotations/west.png +0 -0
- package/assets/characters/necromancer-male/voice-lines/arrive.mp3 +0 -0
- package/assets/characters/necromancer-male/voice-lines/attention.mp3 +0 -0
- package/assets/characters/necromancer-male/voice-lines/complete.mp3 +0 -0
- package/assets/characters/necromancer-male/voice-lines/death.mp3 +0 -0
- package/assets/characters/necromancer-male/voice-lines/move_variant_1.mp3 +0 -0
- package/assets/characters/necromancer-male/voice-lines/move_variant_2.mp3 +0 -0
- package/assets/characters/necromancer-male/voice-lines/move_variant_3.mp3 +0 -0
- package/assets/characters/necromancer-male/voice-lines/selected_variant_1.mp3 +0 -0
- package/assets/characters/necromancer-male/voice-lines/selected_variant_2.mp3 +0 -0
- package/assets/characters/necromancer-male/voice-lines/selected_variant_3.mp3 +0 -0
- package/assets/characters/oracle-seer/animations/walk/east/0.png +0 -0
- package/assets/characters/oracle-seer/animations/walk/east/1.png +0 -0
- package/assets/characters/oracle-seer/animations/walk/east/2.png +0 -0
- package/assets/characters/oracle-seer/animations/walk/east/3.png +0 -0
- package/assets/characters/oracle-seer/animations/walk/east/4.png +0 -0
- package/assets/characters/oracle-seer/animations/walk/east/5.png +0 -0
- package/assets/characters/oracle-seer/animations/walk/east/6.png +0 -0
- package/assets/characters/oracle-seer/animations/walk/east/7.png +0 -0
- package/assets/characters/oracle-seer/animations/walk/north/0.png +0 -0
- package/assets/characters/oracle-seer/animations/walk/north/1.png +0 -0
- package/assets/characters/oracle-seer/animations/walk/north/2.png +0 -0
- package/assets/characters/oracle-seer/animations/walk/north/3.png +0 -0
- package/assets/characters/oracle-seer/animations/walk/north/4.png +0 -0
- package/assets/characters/oracle-seer/animations/walk/north/5.png +0 -0
- package/assets/characters/oracle-seer/animations/walk/north/6.png +0 -0
- package/assets/characters/oracle-seer/animations/walk/north/7.png +0 -0
- package/assets/characters/oracle-seer/animations/walk/south/0.png +0 -0
- package/assets/characters/oracle-seer/animations/walk/south/1.png +0 -0
- package/assets/characters/oracle-seer/animations/walk/south/2.png +0 -0
- package/assets/characters/oracle-seer/animations/walk/south/3.png +0 -0
- package/assets/characters/oracle-seer/animations/walk/south/4.png +0 -0
- package/assets/characters/oracle-seer/animations/walk/south/5.png +0 -0
- package/assets/characters/oracle-seer/animations/walk/south/6.png +0 -0
- package/assets/characters/oracle-seer/animations/walk/south/7.png +0 -0
- package/assets/characters/oracle-seer/animations/walk/west/0.png +0 -0
- package/assets/characters/oracle-seer/animations/walk/west/1.png +0 -0
- package/assets/characters/oracle-seer/animations/walk/west/2.png +0 -0
- package/assets/characters/oracle-seer/animations/walk/west/3.png +0 -0
- package/assets/characters/oracle-seer/animations/walk/west/4.png +0 -0
- package/assets/characters/oracle-seer/animations/walk/west/5.png +0 -0
- package/assets/characters/oracle-seer/animations/walk/west/6.png +0 -0
- package/assets/characters/oracle-seer/animations/walk/west/7.png +0 -0
- package/assets/characters/oracle-seer/animations/working/0.png +0 -0
- package/assets/characters/oracle-seer/animations/working/1.png +0 -0
- package/assets/characters/oracle-seer/animations/working/10.png +0 -0
- package/assets/characters/oracle-seer/animations/working/11.png +0 -0
- package/assets/characters/oracle-seer/animations/working/12.png +0 -0
- package/assets/characters/oracle-seer/animations/working/13.png +0 -0
- package/assets/characters/oracle-seer/animations/working/14.png +0 -0
- package/assets/characters/oracle-seer/animations/working/15.png +0 -0
- package/assets/characters/oracle-seer/animations/working/2.png +0 -0
- package/assets/characters/oracle-seer/animations/working/3.png +0 -0
- package/assets/characters/oracle-seer/animations/working/4.png +0 -0
- package/assets/characters/oracle-seer/animations/working/5.png +0 -0
- package/assets/characters/oracle-seer/animations/working/6.png +0 -0
- package/assets/characters/oracle-seer/animations/working/7.png +0 -0
- package/assets/characters/oracle-seer/animations/working/8.png +0 -0
- package/assets/characters/oracle-seer/animations/working/9.png +0 -0
- package/assets/characters/oracle-seer/rotations/east.png +0 -0
- package/assets/characters/oracle-seer/rotations/north.png +0 -0
- package/assets/characters/oracle-seer/rotations/south.png +0 -0
- package/assets/characters/oracle-seer/rotations/west.png +0 -0
- package/assets/characters/oracle-seer/voice-lines/arrive.mp3 +0 -0
- package/assets/characters/oracle-seer/voice-lines/attention.mp3 +0 -0
- package/assets/characters/oracle-seer/voice-lines/complete.mp3 +0 -0
- package/assets/characters/oracle-seer/voice-lines/death.mp3 +0 -0
- package/assets/characters/oracle-seer/voice-lines/move_variant_1.mp3 +0 -0
- package/assets/characters/oracle-seer/voice-lines/move_variant_2.mp3 +0 -0
- package/assets/characters/oracle-seer/voice-lines/move_variant_3.mp3 +0 -0
- package/assets/characters/oracle-seer/voice-lines/selected_variant_1.mp3 +0 -0
- package/assets/characters/oracle-seer/voice-lines/selected_variant_2.mp3 +0 -0
- package/assets/characters/oracle-seer/voice-lines/selected_variant_3.mp3 +0 -0
- package/assets/characters/pyromancer-wizard/animations/walk/east/0.png +0 -0
- package/assets/characters/pyromancer-wizard/animations/walk/east/1.png +0 -0
- package/assets/characters/pyromancer-wizard/animations/walk/east/2.png +0 -0
- package/assets/characters/pyromancer-wizard/animations/walk/east/3.png +0 -0
- package/assets/characters/pyromancer-wizard/animations/walk/east/4.png +0 -0
- package/assets/characters/pyromancer-wizard/animations/walk/east/5.png +0 -0
- package/assets/characters/pyromancer-wizard/animations/walk/east/6.png +0 -0
- package/assets/characters/pyromancer-wizard/animations/walk/east/7.png +0 -0
- package/assets/characters/pyromancer-wizard/animations/walk/north/0.png +0 -0
- package/assets/characters/pyromancer-wizard/animations/walk/north/1.png +0 -0
- package/assets/characters/pyromancer-wizard/animations/walk/north/2.png +0 -0
- package/assets/characters/pyromancer-wizard/animations/walk/north/3.png +0 -0
- package/assets/characters/pyromancer-wizard/animations/walk/north/4.png +0 -0
- package/assets/characters/pyromancer-wizard/animations/walk/north/5.png +0 -0
- package/assets/characters/pyromancer-wizard/animations/walk/north/6.png +0 -0
- package/assets/characters/pyromancer-wizard/animations/walk/north/7.png +0 -0
- package/assets/characters/pyromancer-wizard/animations/walk/south/0.png +0 -0
- package/assets/characters/pyromancer-wizard/animations/walk/south/1.png +0 -0
- package/assets/characters/pyromancer-wizard/animations/walk/south/2.png +0 -0
- package/assets/characters/pyromancer-wizard/animations/walk/south/3.png +0 -0
- package/assets/characters/pyromancer-wizard/animations/walk/south/4.png +0 -0
- package/assets/characters/pyromancer-wizard/animations/walk/south/5.png +0 -0
- package/assets/characters/pyromancer-wizard/animations/walk/south/6.png +0 -0
- package/assets/characters/pyromancer-wizard/animations/walk/south/7.png +0 -0
- package/assets/characters/pyromancer-wizard/animations/walk/west/0.png +0 -0
- package/assets/characters/pyromancer-wizard/animations/walk/west/1.png +0 -0
- package/assets/characters/pyromancer-wizard/animations/walk/west/2.png +0 -0
- package/assets/characters/pyromancer-wizard/animations/walk/west/3.png +0 -0
- package/assets/characters/pyromancer-wizard/animations/walk/west/4.png +0 -0
- package/assets/characters/pyromancer-wizard/animations/walk/west/5.png +0 -0
- package/assets/characters/pyromancer-wizard/animations/walk/west/6.png +0 -0
- package/assets/characters/pyromancer-wizard/animations/walk/west/7.png +0 -0
- package/assets/characters/pyromancer-wizard/animations/working/0.png +0 -0
- package/assets/characters/pyromancer-wizard/animations/working/1.png +0 -0
- package/assets/characters/pyromancer-wizard/animations/working/10.png +0 -0
- package/assets/characters/pyromancer-wizard/animations/working/11.png +0 -0
- package/assets/characters/pyromancer-wizard/animations/working/12.png +0 -0
- package/assets/characters/pyromancer-wizard/animations/working/13.png +0 -0
- package/assets/characters/pyromancer-wizard/animations/working/14.png +0 -0
- package/assets/characters/pyromancer-wizard/animations/working/15.png +0 -0
- package/assets/characters/pyromancer-wizard/animations/working/2.png +0 -0
- package/assets/characters/pyromancer-wizard/animations/working/3.png +0 -0
- package/assets/characters/pyromancer-wizard/animations/working/4.png +0 -0
- package/assets/characters/pyromancer-wizard/animations/working/5.png +0 -0
- package/assets/characters/pyromancer-wizard/animations/working/6.png +0 -0
- package/assets/characters/pyromancer-wizard/animations/working/7.png +0 -0
- package/assets/characters/pyromancer-wizard/animations/working/8.png +0 -0
- package/assets/characters/pyromancer-wizard/animations/working/9.png +0 -0
- package/assets/characters/pyromancer-wizard/rotations/east.png +0 -0
- package/assets/characters/pyromancer-wizard/rotations/north.png +0 -0
- package/assets/characters/pyromancer-wizard/rotations/south.png +0 -0
- package/assets/characters/pyromancer-wizard/rotations/west.png +0 -0
- package/assets/characters/pyromancer-wizard/voice-lines/arrive.mp3 +0 -0
- package/assets/characters/pyromancer-wizard/voice-lines/attention.mp3 +0 -0
- package/assets/characters/pyromancer-wizard/voice-lines/complete.mp3 +0 -0
- package/assets/characters/pyromancer-wizard/voice-lines/death.mp3 +0 -0
- package/assets/characters/pyromancer-wizard/voice-lines/move_variant_1.mp3 +0 -0
- package/assets/characters/pyromancer-wizard/voice-lines/move_variant_2.mp3 +0 -0
- package/assets/characters/pyromancer-wizard/voice-lines/move_variant_3.mp3 +0 -0
- package/assets/characters/pyromancer-wizard/voice-lines/selected_variant_1.mp3 +0 -0
- package/assets/characters/pyromancer-wizard/voice-lines/selected_variant_2.mp3 +0 -0
- package/assets/characters/pyromancer-wizard/voice-lines/selected_variant_3.mp3 +0 -0
- package/assets/characters/sun-priestess-healer/animations/walk/east/0.png +0 -0
- package/assets/characters/sun-priestess-healer/animations/walk/east/1.png +0 -0
- package/assets/characters/sun-priestess-healer/animations/walk/east/2.png +0 -0
- package/assets/characters/sun-priestess-healer/animations/walk/east/3.png +0 -0
- package/assets/characters/sun-priestess-healer/animations/walk/east/4.png +0 -0
- package/assets/characters/sun-priestess-healer/animations/walk/east/5.png +0 -0
- package/assets/characters/sun-priestess-healer/animations/walk/east/6.png +0 -0
- package/assets/characters/sun-priestess-healer/animations/walk/east/7.png +0 -0
- package/assets/characters/sun-priestess-healer/animations/walk/north/0.png +0 -0
- package/assets/characters/sun-priestess-healer/animations/walk/north/1.png +0 -0
- package/assets/characters/sun-priestess-healer/animations/walk/north/2.png +0 -0
- package/assets/characters/sun-priestess-healer/animations/walk/north/3.png +0 -0
- package/assets/characters/sun-priestess-healer/animations/walk/north/4.png +0 -0
- package/assets/characters/sun-priestess-healer/animations/walk/north/5.png +0 -0
- package/assets/characters/sun-priestess-healer/animations/walk/north/6.png +0 -0
- package/assets/characters/sun-priestess-healer/animations/walk/north/7.png +0 -0
- package/assets/characters/sun-priestess-healer/animations/walk/south/0.png +0 -0
- package/assets/characters/sun-priestess-healer/animations/walk/south/1.png +0 -0
- package/assets/characters/sun-priestess-healer/animations/walk/south/2.png +0 -0
- package/assets/characters/sun-priestess-healer/animations/walk/south/3.png +0 -0
- package/assets/characters/sun-priestess-healer/animations/walk/south/4.png +0 -0
- package/assets/characters/sun-priestess-healer/animations/walk/south/5.png +0 -0
- package/assets/characters/sun-priestess-healer/animations/walk/south/6.png +0 -0
- package/assets/characters/sun-priestess-healer/animations/walk/south/7.png +0 -0
- package/assets/characters/sun-priestess-healer/animations/walk/west/0.png +0 -0
- package/assets/characters/sun-priestess-healer/animations/walk/west/1.png +0 -0
- package/assets/characters/sun-priestess-healer/animations/walk/west/2.png +0 -0
- package/assets/characters/sun-priestess-healer/animations/walk/west/3.png +0 -0
- package/assets/characters/sun-priestess-healer/animations/walk/west/4.png +0 -0
- package/assets/characters/sun-priestess-healer/animations/walk/west/5.png +0 -0
- package/assets/characters/sun-priestess-healer/animations/walk/west/6.png +0 -0
- package/assets/characters/sun-priestess-healer/animations/walk/west/7.png +0 -0
- package/assets/characters/sun-priestess-healer/animations/working/0.png +0 -0
- package/assets/characters/sun-priestess-healer/animations/working/1.png +0 -0
- package/assets/characters/sun-priestess-healer/animations/working/10.png +0 -0
- package/assets/characters/sun-priestess-healer/animations/working/11.png +0 -0
- package/assets/characters/sun-priestess-healer/animations/working/12.png +0 -0
- package/assets/characters/sun-priestess-healer/animations/working/13.png +0 -0
- package/assets/characters/sun-priestess-healer/animations/working/14.png +0 -0
- package/assets/characters/sun-priestess-healer/animations/working/15.png +0 -0
- package/assets/characters/sun-priestess-healer/animations/working/2.png +0 -0
- package/assets/characters/sun-priestess-healer/animations/working/3.png +0 -0
- package/assets/characters/sun-priestess-healer/animations/working/4.png +0 -0
- package/assets/characters/sun-priestess-healer/animations/working/5.png +0 -0
- package/assets/characters/sun-priestess-healer/animations/working/6.png +0 -0
- package/assets/characters/sun-priestess-healer/animations/working/7.png +0 -0
- package/assets/characters/sun-priestess-healer/animations/working/8.png +0 -0
- package/assets/characters/sun-priestess-healer/animations/working/9.png +0 -0
- package/assets/characters/sun-priestess-healer/rotations/east.png +0 -0
- package/assets/characters/sun-priestess-healer/rotations/north.png +0 -0
- package/assets/characters/sun-priestess-healer/rotations/south.png +0 -0
- package/assets/characters/sun-priestess-healer/rotations/west.png +0 -0
- package/assets/characters/sun-priestess-healer/voice-lines/arrive.mp3 +0 -0
- package/assets/characters/sun-priestess-healer/voice-lines/attention.mp3 +0 -0
- package/assets/characters/sun-priestess-healer/voice-lines/complete.mp3 +0 -0
- package/assets/characters/sun-priestess-healer/voice-lines/death.mp3 +0 -0
- package/assets/characters/sun-priestess-healer/voice-lines/move_variant_1.mp3 +0 -0
- package/assets/characters/sun-priestess-healer/voice-lines/move_variant_2.mp3 +0 -0
- package/assets/characters/sun-priestess-healer/voice-lines/move_variant_3.mp3 +0 -0
- package/assets/characters/sun-priestess-healer/voice-lines/selected_variant_1.mp3 +0 -0
- package/assets/characters/sun-priestess-healer/voice-lines/selected_variant_2.mp3 +0 -0
- package/assets/characters/sun-priestess-healer/voice-lines/selected_variant_3.mp3 +0 -0
- package/assets/characters/valkyrie-spearmaid/animations/walk/east/0.png +0 -0
- package/assets/characters/valkyrie-spearmaid/animations/walk/east/1.png +0 -0
- package/assets/characters/valkyrie-spearmaid/animations/walk/east/2.png +0 -0
- package/assets/characters/valkyrie-spearmaid/animations/walk/east/3.png +0 -0
- package/assets/characters/valkyrie-spearmaid/animations/walk/east/4.png +0 -0
- package/assets/characters/valkyrie-spearmaid/animations/walk/east/5.png +0 -0
- package/assets/characters/valkyrie-spearmaid/animations/walk/east/6.png +0 -0
- package/assets/characters/valkyrie-spearmaid/animations/walk/east/7.png +0 -0
- package/assets/characters/valkyrie-spearmaid/animations/walk/north/0.png +0 -0
- package/assets/characters/valkyrie-spearmaid/animations/walk/north/1.png +0 -0
- package/assets/characters/valkyrie-spearmaid/animations/walk/north/2.png +0 -0
- package/assets/characters/valkyrie-spearmaid/animations/walk/north/3.png +0 -0
- package/assets/characters/valkyrie-spearmaid/animations/walk/north/4.png +0 -0
- package/assets/characters/valkyrie-spearmaid/animations/walk/north/5.png +0 -0
- package/assets/characters/valkyrie-spearmaid/animations/walk/north/6.png +0 -0
- package/assets/characters/valkyrie-spearmaid/animations/walk/north/7.png +0 -0
- package/assets/characters/valkyrie-spearmaid/animations/walk/south/0.png +0 -0
- package/assets/characters/valkyrie-spearmaid/animations/walk/south/1.png +0 -0
- package/assets/characters/valkyrie-spearmaid/animations/walk/south/2.png +0 -0
- package/assets/characters/valkyrie-spearmaid/animations/walk/south/3.png +0 -0
- package/assets/characters/valkyrie-spearmaid/animations/walk/south/4.png +0 -0
- package/assets/characters/valkyrie-spearmaid/animations/walk/south/5.png +0 -0
- package/assets/characters/valkyrie-spearmaid/animations/walk/south/6.png +0 -0
- package/assets/characters/valkyrie-spearmaid/animations/walk/south/7.png +0 -0
- package/assets/characters/valkyrie-spearmaid/animations/walk/west/0.png +0 -0
- package/assets/characters/valkyrie-spearmaid/animations/walk/west/1.png +0 -0
- package/assets/characters/valkyrie-spearmaid/animations/walk/west/2.png +0 -0
- package/assets/characters/valkyrie-spearmaid/animations/walk/west/3.png +0 -0
- package/assets/characters/valkyrie-spearmaid/animations/walk/west/4.png +0 -0
- package/assets/characters/valkyrie-spearmaid/animations/walk/west/5.png +0 -0
- package/assets/characters/valkyrie-spearmaid/animations/walk/west/6.png +0 -0
- package/assets/characters/valkyrie-spearmaid/animations/walk/west/7.png +0 -0
- package/assets/characters/valkyrie-spearmaid/animations/working/0.png +0 -0
- package/assets/characters/valkyrie-spearmaid/animations/working/1.png +0 -0
- package/assets/characters/valkyrie-spearmaid/animations/working/10.png +0 -0
- package/assets/characters/valkyrie-spearmaid/animations/working/11.png +0 -0
- package/assets/characters/valkyrie-spearmaid/animations/working/12.png +0 -0
- package/assets/characters/valkyrie-spearmaid/animations/working/13.png +0 -0
- package/assets/characters/valkyrie-spearmaid/animations/working/14.png +0 -0
- package/assets/characters/valkyrie-spearmaid/animations/working/15.png +0 -0
- package/assets/characters/valkyrie-spearmaid/animations/working/2.png +0 -0
- package/assets/characters/valkyrie-spearmaid/animations/working/3.png +0 -0
- package/assets/characters/valkyrie-spearmaid/animations/working/4.png +0 -0
- package/assets/characters/valkyrie-spearmaid/animations/working/5.png +0 -0
- package/assets/characters/valkyrie-spearmaid/animations/working/6.png +0 -0
- package/assets/characters/valkyrie-spearmaid/animations/working/7.png +0 -0
- package/assets/characters/valkyrie-spearmaid/animations/working/8.png +0 -0
- package/assets/characters/valkyrie-spearmaid/animations/working/9.png +0 -0
- package/assets/characters/valkyrie-spearmaid/rotations/east.png +0 -0
- package/assets/characters/valkyrie-spearmaid/rotations/north.png +0 -0
- package/assets/characters/valkyrie-spearmaid/rotations/south.png +0 -0
- package/assets/characters/valkyrie-spearmaid/rotations/west.png +0 -0
- package/assets/characters/valkyrie-spearmaid/voice-lines/arrive.mp3 +0 -0
- package/assets/characters/valkyrie-spearmaid/voice-lines/attention.mp3 +0 -0
- package/assets/characters/valkyrie-spearmaid/voice-lines/complete.mp3 +0 -0
- package/assets/characters/valkyrie-spearmaid/voice-lines/death.mp3 +0 -0
- package/assets/characters/valkyrie-spearmaid/voice-lines/move_variant_1.mp3 +0 -0
- package/assets/characters/valkyrie-spearmaid/voice-lines/move_variant_2.mp3 +0 -0
- package/assets/characters/valkyrie-spearmaid/voice-lines/move_variant_3.mp3 +0 -0
- package/assets/characters/valkyrie-spearmaid/voice-lines/selected_variant_1.mp3 +0 -0
- package/assets/characters/valkyrie-spearmaid/voice-lines/selected_variant_2.mp3 +0 -0
- package/assets/characters/valkyrie-spearmaid/voice-lines/selected_variant_3.mp3 +0 -0
- package/assets/characters/witch-hunter-gunslinger/animations/walk/east/0.png +0 -0
- package/assets/characters/witch-hunter-gunslinger/animations/walk/east/1.png +0 -0
- package/assets/characters/witch-hunter-gunslinger/animations/walk/east/2.png +0 -0
- package/assets/characters/witch-hunter-gunslinger/animations/walk/east/3.png +0 -0
- package/assets/characters/witch-hunter-gunslinger/animations/walk/east/4.png +0 -0
- package/assets/characters/witch-hunter-gunslinger/animations/walk/east/5.png +0 -0
- package/assets/characters/witch-hunter-gunslinger/animations/walk/east/6.png +0 -0
- package/assets/characters/witch-hunter-gunslinger/animations/walk/east/7.png +0 -0
- package/assets/characters/witch-hunter-gunslinger/animations/walk/north/0.png +0 -0
- package/assets/characters/witch-hunter-gunslinger/animations/walk/north/1.png +0 -0
- package/assets/characters/witch-hunter-gunslinger/animations/walk/north/2.png +0 -0
- package/assets/characters/witch-hunter-gunslinger/animations/walk/north/3.png +0 -0
- package/assets/characters/witch-hunter-gunslinger/animations/walk/north/4.png +0 -0
- package/assets/characters/witch-hunter-gunslinger/animations/walk/north/5.png +0 -0
- package/assets/characters/witch-hunter-gunslinger/animations/walk/north/6.png +0 -0
- package/assets/characters/witch-hunter-gunslinger/animations/walk/north/7.png +0 -0
- package/assets/characters/witch-hunter-gunslinger/animations/walk/south/0.png +0 -0
- package/assets/characters/witch-hunter-gunslinger/animations/walk/south/1.png +0 -0
- package/assets/characters/witch-hunter-gunslinger/animations/walk/south/2.png +0 -0
- package/assets/characters/witch-hunter-gunslinger/animations/walk/south/3.png +0 -0
- package/assets/characters/witch-hunter-gunslinger/animations/walk/south/4.png +0 -0
- package/assets/characters/witch-hunter-gunslinger/animations/walk/south/5.png +0 -0
- package/assets/characters/witch-hunter-gunslinger/animations/walk/south/6.png +0 -0
- package/assets/characters/witch-hunter-gunslinger/animations/walk/south/7.png +0 -0
- package/assets/characters/witch-hunter-gunslinger/animations/walk/west/0.png +0 -0
- package/assets/characters/witch-hunter-gunslinger/animations/walk/west/1.png +0 -0
- package/assets/characters/witch-hunter-gunslinger/animations/walk/west/2.png +0 -0
- package/assets/characters/witch-hunter-gunslinger/animations/walk/west/3.png +0 -0
- package/assets/characters/witch-hunter-gunslinger/animations/walk/west/4.png +0 -0
- package/assets/characters/witch-hunter-gunslinger/animations/walk/west/5.png +0 -0
- package/assets/characters/witch-hunter-gunslinger/animations/walk/west/6.png +0 -0
- package/assets/characters/witch-hunter-gunslinger/animations/walk/west/7.png +0 -0
- package/assets/characters/witch-hunter-gunslinger/animations/working/0.png +0 -0
- package/assets/characters/witch-hunter-gunslinger/animations/working/1.png +0 -0
- package/assets/characters/witch-hunter-gunslinger/animations/working/10.png +0 -0
- package/assets/characters/witch-hunter-gunslinger/animations/working/11.png +0 -0
- package/assets/characters/witch-hunter-gunslinger/animations/working/12.png +0 -0
- package/assets/characters/witch-hunter-gunslinger/animations/working/13.png +0 -0
- package/assets/characters/witch-hunter-gunslinger/animations/working/14.png +0 -0
- package/assets/characters/witch-hunter-gunslinger/animations/working/15.png +0 -0
- package/assets/characters/witch-hunter-gunslinger/animations/working/2.png +0 -0
- package/assets/characters/witch-hunter-gunslinger/animations/working/3.png +0 -0
- package/assets/characters/witch-hunter-gunslinger/animations/working/4.png +0 -0
- package/assets/characters/witch-hunter-gunslinger/animations/working/5.png +0 -0
- package/assets/characters/witch-hunter-gunslinger/animations/working/6.png +0 -0
- package/assets/characters/witch-hunter-gunslinger/animations/working/7.png +0 -0
- package/assets/characters/witch-hunter-gunslinger/animations/working/8.png +0 -0
- package/assets/characters/witch-hunter-gunslinger/animations/working/9.png +0 -0
- package/assets/characters/witch-hunter-gunslinger/rotations/east.png +0 -0
- package/assets/characters/witch-hunter-gunslinger/rotations/north.png +0 -0
- package/assets/characters/witch-hunter-gunslinger/rotations/south.png +0 -0
- package/assets/characters/witch-hunter-gunslinger/rotations/west.png +0 -0
- package/assets/characters/witch-hunter-gunslinger/voice-lines/arrive.mp3 +0 -0
- package/assets/characters/witch-hunter-gunslinger/voice-lines/attention.mp3 +0 -0
- package/assets/characters/witch-hunter-gunslinger/voice-lines/complete.mp3 +0 -0
- package/assets/characters/witch-hunter-gunslinger/voice-lines/death.mp3 +0 -0
- package/assets/characters/witch-hunter-gunslinger/voice-lines/move_variant_1.mp3 +0 -0
- package/assets/characters/witch-hunter-gunslinger/voice-lines/move_variant_2.mp3 +0 -0
- package/assets/characters/witch-hunter-gunslinger/voice-lines/move_variant_3.mp3 +0 -0
- package/assets/characters/witch-hunter-gunslinger/voice-lines/selected_variant_1.mp3 +0 -0
- package/assets/characters/witch-hunter-gunslinger/voice-lines/selected_variant_2.mp3 +0 -0
- package/assets/characters/witch-hunter-gunslinger/voice-lines/selected_variant_3.mp3 +0 -0
- package/assets/maps/backgrounds/outpost-v1-2x.png +0 -0
- package/assets/maps/backgrounds/outpost-v1-original.png +0 -0
- package/assets/maps/backgrounds/outpost-v1-upscaled-2x-photo.png +0 -0
- package/assets/maps/backgrounds/outpost-v1.png +0 -0
- package/assets/maps/outpost.json +130 -0
- package/assets/maps/outpost.logic.json +26197 -0
- package/config.example.yaml +91 -0
- package/dist/client/assets/index-B0hs4377.js +80 -0
- package/dist/client/assets/index-TxsheMVB.css +32 -0
- package/dist/client/index.html +13 -0
- package/dist/client/map-mask-editor.html +1853 -0
- package/dist/server/server/assets/avatarCatalog.js +37 -0
- package/dist/server/server/assets/voiceLineCatalog.js +42 -0
- package/dist/server/server/bootstrap/httpApp.js +39 -0
- package/dist/server/server/bootstrap/serverContext.js +60 -0
- package/dist/server/server/bootstrap/shutdown.js +152 -0
- package/dist/server/server/bootstrap/shutdown.test.js +142 -0
- package/dist/server/server/bootstrap/websocketUpgrade.js +111 -0
- package/dist/server/server/bootstrap/websocketUpgrade.test.js +83 -0
- package/dist/server/server/bootstrapApp.js +89 -0
- package/dist/server/server/cli.js +452 -0
- package/dist/server/server/config/discovery.js +159 -0
- package/dist/server/server/config/loadConfig.js +121 -0
- package/dist/server/server/config/schema.js +121 -0
- package/dist/server/server/http/appError.js +30 -0
- package/dist/server/server/http/errorResponse.js +31 -0
- package/dist/server/server/http/errorResponse.test.js +46 -0
- package/dist/server/server/http/requestParsers.js +133 -0
- package/dist/server/server/http/requestParsers.test.js +57 -0
- package/dist/server/server/http/routes/registerApiRoutes.js +146 -0
- package/dist/server/server/index.js +9 -0
- package/dist/server/server/orchestrator/orchestratorService.js +378 -0
- package/dist/server/server/orchestrator/orchestratorService.test.js +111 -0
- package/dist/server/server/orchestrator/reconcile/isSameWorkerRecord.js +17 -0
- package/dist/server/server/orchestrator/spawn/avatarAllocator.js +20 -0
- package/dist/server/server/orchestrator/spawn/command.js +37 -0
- package/dist/server/server/orchestrator/spawn/command.test.js +39 -0
- package/dist/server/server/orchestrator/spawn/resolveSpawnPlan.js +44 -0
- package/dist/server/server/orchestrator/spawn/resolveSpawnPlan.test.js +79 -0
- package/dist/server/server/orchestrator/spawn/spawnPosition.js +147 -0
- package/dist/server/server/orchestrator/spawn/types.js +2 -0
- package/dist/server/server/orchestrator/spawn/windowName.js +12 -0
- package/dist/server/server/persistence/workerRepository.js +211 -0
- package/dist/server/server/status/activityParser.js +172 -0
- package/dist/server/server/status/claudeTranscript/accumulator.js +372 -0
- package/dist/server/server/status/claudeTranscript/constants.js +18 -0
- package/dist/server/server/status/claudeTranscript/io.js +160 -0
- package/dist/server/server/status/claudeTranscript/parser.js +50 -0
- package/dist/server/server/status/claudeTranscript/snapshot.js +82 -0
- package/dist/server/server/status/claudeTranscript/types.js +2 -0
- package/dist/server/server/status/claudeTranscriptTracker.js +59 -0
- package/dist/server/server/status/engine/signalContext.js +41 -0
- package/dist/server/server/status/engine/stateMachine/activity.js +18 -0
- package/dist/server/server/status/engine/stateMachine/constants.js +45 -0
- package/dist/server/server/status/engine/stateMachine/decision.js +213 -0
- package/dist/server/server/status/engine/stateMachine/decision.test.js +139 -0
- package/dist/server/server/status/engine/stateMachine/helpers.js +103 -0
- package/dist/server/server/status/engine/stateMachine/helpers.test.js +113 -0
- package/dist/server/server/status/engine/stateMachine/idleBlockers.js +55 -0
- package/dist/server/server/status/engine/stateMachine/parserErrorRules.js +42 -0
- package/dist/server/server/status/engine/stateMachine/types.js +2 -0
- package/dist/server/server/status/engine/stateMachine/workingEvidence.js +97 -0
- package/dist/server/server/status/engine/stateMachine.js +5 -0
- package/dist/server/server/status/engine/types.js +4 -0
- package/dist/server/server/status/paneObservation.js +35 -0
- package/dist/server/server/status/runtime/activityTextExtractors.js +189 -0
- package/dist/server/server/status/runtime/claudeSignals.js +56 -0
- package/dist/server/server/status/runtime/openCodeSignals.js +63 -0
- package/dist/server/server/status/runtime/sessionDetection.js +37 -0
- package/dist/server/server/status/runtime/textSignals.js +21 -0
- package/dist/server/server/status/runtimeSignals.js +21 -0
- package/dist/server/server/status/statusEvaluator.js +16 -0
- package/dist/server/server/status/statusHeuristics.js +146 -0
- package/dist/server/server/status/statusMonitor.js +390 -0
- package/dist/server/server/status/statusMonitor.test.js +191 -0
- package/dist/server/server/status/statusPipeline.js +45 -0
- package/dist/server/server/tmux/tmuxAdapter.js +338 -0
- package/dist/server/server/utils/appRoot.js +40 -0
- package/dist/server/server/utils/path.js +20 -0
- package/dist/server/server/ws/realtimeHub.js +44 -0
- package/dist/server/server/ws/realtimeHub.test.js +43 -0
- package/dist/server/server/ws/terminalBridge.js +153 -0
- package/dist/server/shared/types.js +2 -0
- package/package.json +68 -0
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.parseActivity = parseActivity;
|
|
4
|
+
const types_1 = require("./engine/types");
|
|
5
|
+
const toolMatchers = [
|
|
6
|
+
{ tool: "read", label: "Reading", regex: /\b(Read|Reading)\b/i },
|
|
7
|
+
{ tool: "edit", label: "Editing", regex: /\b(Edit|Patch|apply_patch|Update File)\b/i },
|
|
8
|
+
{ tool: "write", label: "Writing", regex: /\b(Write|Add File|Created file|Creating file)\b/i },
|
|
9
|
+
{ tool: "grep", label: "Searching", regex: /\b(Grep|ripgrep|\brg\b|searching)\b/i },
|
|
10
|
+
{ tool: "glob", label: "Scanning", regex: /\b(Glob|scan files|file pattern)\b/i },
|
|
11
|
+
{ tool: "bash", label: "Running", regex: /\b(Bash|npm\b|pnpm\b|yarn\b|pytest\b|cargo\b|go\s+test|git\b)\b/i },
|
|
12
|
+
{ tool: "task", label: "Subtask", regex: /\b(Task|subagent|agent)\b/i },
|
|
13
|
+
{ tool: "todo", label: "Planning", regex: /\b(TodoWrite|todo\b)\b/i },
|
|
14
|
+
{ tool: "web", label: "Fetching", regex: /\b(WebFetch|http|https)\b/i },
|
|
15
|
+
{ tool: "terminal", label: "Terminal", regex: /\b(claude|terminal|tmux)\b/i }
|
|
16
|
+
];
|
|
17
|
+
const inputPromptLineMatchers = [
|
|
18
|
+
/\[(?:Y\/n|y\/N|y\/n|N\/y)\]\s*$/i,
|
|
19
|
+
/\b(?:press enter|press any key)\b/i,
|
|
20
|
+
/\b(?:waiting for input|awaiting input|awaiting confirmation)\b/i,
|
|
21
|
+
/\b(?:select (?:an )?option|enter choice|choose (?:an )?option)\b[:?]?\s*$/i,
|
|
22
|
+
/\b(?:allow|approve|confirm|continue|proceed)\b[^\n]{0,40}\?\s*$/i
|
|
23
|
+
];
|
|
24
|
+
const generalInputPromptRecentLineWindow = 6;
|
|
25
|
+
const permissionPromptRecentLineWindow = 18;
|
|
26
|
+
const errorLineMatchers = [
|
|
27
|
+
/\btraceback\b/i,
|
|
28
|
+
/\bexception\b/i,
|
|
29
|
+
/\berror:\b/i,
|
|
30
|
+
/^\s*(?:error|err)\b/i,
|
|
31
|
+
/\bnpm err!\b/i,
|
|
32
|
+
/\bcommand not found\b/i,
|
|
33
|
+
/\bno such file or directory\b/i,
|
|
34
|
+
/\bpermission denied\b/i,
|
|
35
|
+
/\bsigterm\b/i,
|
|
36
|
+
/\bpanic\b/i,
|
|
37
|
+
/\bfatal\b/i,
|
|
38
|
+
/\bfailed\b(?:\s+with|\s+to|:)/i
|
|
39
|
+
];
|
|
40
|
+
const filePathRegex = /(?:^|\s|"|')((?:~|\.|\.\.|\/)?(?:[A-Za-z0-9._-]+\/)*[A-Za-z0-9._-]+\.[A-Za-z][A-Za-z0-9_-]{0,7})(?=$|\s|"|'|:|,|\))/;
|
|
41
|
+
function parseActivity(currentCommand, output) {
|
|
42
|
+
const lines = output
|
|
43
|
+
.split("\n")
|
|
44
|
+
.map((line) => line.trim())
|
|
45
|
+
.filter((line) => line.length > 0)
|
|
46
|
+
.slice(-80);
|
|
47
|
+
const newestFirst = [...lines].reverse();
|
|
48
|
+
const needsInput = hasInputPromptSignal(newestFirst);
|
|
49
|
+
const hasError = hasErrorSignal(newestFirst);
|
|
50
|
+
const toolResult = findTool(newestFirst);
|
|
51
|
+
const filePath = findFilePath(newestFirst);
|
|
52
|
+
const fallbackLine = newestFirst.find((line) => line.length > 3 && !line.startsWith("[") && !isRuntimeHintLine(line));
|
|
53
|
+
const activityText = toolResult && filePath
|
|
54
|
+
? `${toolResult.label} ${filePath}`
|
|
55
|
+
: toolResult
|
|
56
|
+
? `${toolResult.label}`
|
|
57
|
+
: filePath
|
|
58
|
+
? `Working on ${filePath}`
|
|
59
|
+
: fallbackLine;
|
|
60
|
+
const status = deriveStatus(currentCommand, needsInput, hasError);
|
|
61
|
+
return {
|
|
62
|
+
status,
|
|
63
|
+
activity: {
|
|
64
|
+
text: activityText,
|
|
65
|
+
tool: toolResult?.tool,
|
|
66
|
+
filePath,
|
|
67
|
+
needsInput,
|
|
68
|
+
hasError
|
|
69
|
+
}
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
function hasInputPromptSignal(linesNewestFirst) {
|
|
73
|
+
const latest = linesNewestFirst[0] ?? "";
|
|
74
|
+
const secondLatest = linesNewestFirst[1] ?? "";
|
|
75
|
+
if (isInputPromptLine(latest)) {
|
|
76
|
+
return true;
|
|
77
|
+
}
|
|
78
|
+
if (isShellPromptLine(latest) && isInputPromptLine(secondLatest)) {
|
|
79
|
+
return true;
|
|
80
|
+
}
|
|
81
|
+
for (const line of linesNewestFirst.slice(0, generalInputPromptRecentLineWindow)) {
|
|
82
|
+
if (isInputPromptLine(line)) {
|
|
83
|
+
return true;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
return hasPermissionRequiredPromptSignal(linesNewestFirst.slice(0, permissionPromptRecentLineWindow));
|
|
87
|
+
}
|
|
88
|
+
function hasPermissionRequiredPromptSignal(linesNewestFirst) {
|
|
89
|
+
const recent = linesNewestFirst
|
|
90
|
+
.map((line) => normalizeStatusLine(line))
|
|
91
|
+
.map((line) => line.toLowerCase())
|
|
92
|
+
.filter((line) => line.length > 0);
|
|
93
|
+
if (!recent.some((line) => line.includes("permission required"))) {
|
|
94
|
+
return false;
|
|
95
|
+
}
|
|
96
|
+
const hasAllowOnce = recent.some((line) => line.includes("allow once"));
|
|
97
|
+
const hasAllowAlways = recent.some((line) => line.includes("allow always"));
|
|
98
|
+
const hasReject = recent.some((line) => /\breject\b/.test(line));
|
|
99
|
+
const hasAccessScope = recent.some((line) => line.includes("access external directory") || line.includes("access external") || line.includes("patterns"));
|
|
100
|
+
const hasConfirmHint = recent.some((line) => line.includes("enter confirm"));
|
|
101
|
+
if (hasAllowOnce && hasAllowAlways && hasReject) {
|
|
102
|
+
return true;
|
|
103
|
+
}
|
|
104
|
+
if (hasAccessScope && hasAllowOnce && hasReject) {
|
|
105
|
+
return true;
|
|
106
|
+
}
|
|
107
|
+
return hasAccessScope && hasConfirmHint;
|
|
108
|
+
}
|
|
109
|
+
function isInputPromptLine(line) {
|
|
110
|
+
const trimmed = line.trim();
|
|
111
|
+
if (!trimmed || trimmed.length > 220) {
|
|
112
|
+
return false;
|
|
113
|
+
}
|
|
114
|
+
return inputPromptLineMatchers.some((matcher) => matcher.test(trimmed));
|
|
115
|
+
}
|
|
116
|
+
function isShellPromptLine(line) {
|
|
117
|
+
return /[$#>]\s*$/.test(line.trimEnd());
|
|
118
|
+
}
|
|
119
|
+
function findTool(linesNewestFirst) {
|
|
120
|
+
for (const line of linesNewestFirst) {
|
|
121
|
+
for (const matcher of toolMatchers) {
|
|
122
|
+
if (matcher.regex.test(line)) {
|
|
123
|
+
return matcher;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
return undefined;
|
|
128
|
+
}
|
|
129
|
+
function findFilePath(linesNewestFirst) {
|
|
130
|
+
for (const line of linesNewestFirst) {
|
|
131
|
+
const match = line.match(filePathRegex);
|
|
132
|
+
if (!match) {
|
|
133
|
+
continue;
|
|
134
|
+
}
|
|
135
|
+
const candidate = match[1];
|
|
136
|
+
if (candidate) {
|
|
137
|
+
return candidate;
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
return undefined;
|
|
141
|
+
}
|
|
142
|
+
function isRuntimeHintLine(line) {
|
|
143
|
+
const normalized = line.trim().toLowerCase();
|
|
144
|
+
return normalized.includes("ctrl+t variants") || normalized.includes("ctrl+p commands") || normalized.includes("tab agents");
|
|
145
|
+
}
|
|
146
|
+
function hasErrorSignal(linesNewestFirst) {
|
|
147
|
+
for (const line of linesNewestFirst.slice(0, 20)) {
|
|
148
|
+
const normalized = normalizeStatusLine(line);
|
|
149
|
+
if (!normalized || isRuntimeHintLine(normalized)) {
|
|
150
|
+
continue;
|
|
151
|
+
}
|
|
152
|
+
if (errorLineMatchers.some((matcher) => matcher.test(normalized))) {
|
|
153
|
+
return true;
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
return false;
|
|
157
|
+
}
|
|
158
|
+
function normalizeStatusLine(line) {
|
|
159
|
+
return line.replace(/^[\s│┃╹▀▣⬝■]+/, "").trim();
|
|
160
|
+
}
|
|
161
|
+
function deriveStatus(currentCommand, needsInput, hasError) {
|
|
162
|
+
if (needsInput) {
|
|
163
|
+
return "attention";
|
|
164
|
+
}
|
|
165
|
+
if (hasError) {
|
|
166
|
+
return "error";
|
|
167
|
+
}
|
|
168
|
+
if (types_1.shellCommands.has(currentCommand.toLowerCase())) {
|
|
169
|
+
return "idle";
|
|
170
|
+
}
|
|
171
|
+
return "working";
|
|
172
|
+
}
|
|
@@ -0,0 +1,372 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.createTranscriptState = createTranscriptState;
|
|
7
|
+
exports.resetTranscriptState = resetTranscriptState;
|
|
8
|
+
exports.applyParsedTranscriptRecords = applyParsedTranscriptRecords;
|
|
9
|
+
exports.normalizeToolName = normalizeToolName;
|
|
10
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
11
|
+
const constants_1 = require("./constants");
|
|
12
|
+
const parser_1 = require("./parser");
|
|
13
|
+
function createTranscriptState() {
|
|
14
|
+
return {
|
|
15
|
+
nextTranscriptLookupAtMs: 0,
|
|
16
|
+
fileOffset: 0,
|
|
17
|
+
lineBuffer: "",
|
|
18
|
+
initialized: false,
|
|
19
|
+
seenTranscriptRecord: false,
|
|
20
|
+
activeTools: new Map(),
|
|
21
|
+
activeSubagentTools: new Map(),
|
|
22
|
+
waiting: false,
|
|
23
|
+
lastEventAtMs: 0,
|
|
24
|
+
busyUntilMs: 0,
|
|
25
|
+
lastActivityText: undefined,
|
|
26
|
+
lastActivityTool: undefined,
|
|
27
|
+
lastActivityPath: undefined
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
function resetTranscriptState(state) {
|
|
31
|
+
state.fileOffset = 0;
|
|
32
|
+
state.lineBuffer = "";
|
|
33
|
+
state.initialized = false;
|
|
34
|
+
state.seenTranscriptRecord = false;
|
|
35
|
+
state.waiting = false;
|
|
36
|
+
state.lastEventAtMs = 0;
|
|
37
|
+
state.busyUntilMs = 0;
|
|
38
|
+
state.lastActivityText = undefined;
|
|
39
|
+
state.lastActivityTool = undefined;
|
|
40
|
+
state.lastActivityPath = undefined;
|
|
41
|
+
state.activeTools.clear();
|
|
42
|
+
state.activeSubagentTools.clear();
|
|
43
|
+
}
|
|
44
|
+
function applyParsedTranscriptRecords(state, records) {
|
|
45
|
+
for (const parsedRecord of records) {
|
|
46
|
+
const nowMs = Date.now();
|
|
47
|
+
switch (parsedRecord.type) {
|
|
48
|
+
case "assistant": {
|
|
49
|
+
processAssistantRecord(state, parsedRecord.record, nowMs);
|
|
50
|
+
break;
|
|
51
|
+
}
|
|
52
|
+
case "user": {
|
|
53
|
+
processUserRecord(state, parsedRecord.record, nowMs);
|
|
54
|
+
break;
|
|
55
|
+
}
|
|
56
|
+
case "system": {
|
|
57
|
+
processSystemRecord(state, parsedRecord.record);
|
|
58
|
+
break;
|
|
59
|
+
}
|
|
60
|
+
case "progress": {
|
|
61
|
+
processProgressRecord(state, parsedRecord.record, nowMs);
|
|
62
|
+
break;
|
|
63
|
+
}
|
|
64
|
+
default: {
|
|
65
|
+
break;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
state.seenTranscriptRecord = true;
|
|
69
|
+
state.lastEventAtMs = nowMs;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
function processAssistantRecord(state, record, nowMs) {
|
|
73
|
+
const message = (0, parser_1.readRecord)(record.message);
|
|
74
|
+
const content = (0, parser_1.readArray)(message?.content);
|
|
75
|
+
if (!content) {
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
let hasToolUse = false;
|
|
79
|
+
let hasText = false;
|
|
80
|
+
for (const block of content) {
|
|
81
|
+
const parsedBlock = (0, parser_1.readRecord)(block);
|
|
82
|
+
if (!parsedBlock) {
|
|
83
|
+
continue;
|
|
84
|
+
}
|
|
85
|
+
const blockType = (0, parser_1.readString)(parsedBlock.type);
|
|
86
|
+
if (blockType === "tool_use") {
|
|
87
|
+
const toolId = (0, parser_1.readString)(parsedBlock.id);
|
|
88
|
+
if (!toolId) {
|
|
89
|
+
continue;
|
|
90
|
+
}
|
|
91
|
+
const toolName = (0, parser_1.readString)(parsedBlock.name) ?? "Tool";
|
|
92
|
+
const input = (0, parser_1.readRecord)(parsedBlock.input) ?? {};
|
|
93
|
+
const entry = createActiveToolEntry(toolName, input, nowMs);
|
|
94
|
+
state.activeTools.set(toolId, entry);
|
|
95
|
+
setLastActivity(state, entry.statusText, entry.activityTool, entry.activityPath);
|
|
96
|
+
hasToolUse = true;
|
|
97
|
+
continue;
|
|
98
|
+
}
|
|
99
|
+
if (blockType === "text") {
|
|
100
|
+
hasText = true;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
if (hasToolUse) {
|
|
104
|
+
state.waiting = false;
|
|
105
|
+
state.busyUntilMs = nowMs + constants_1.textIdleDelayMs;
|
|
106
|
+
return;
|
|
107
|
+
}
|
|
108
|
+
if (hasText) {
|
|
109
|
+
state.waiting = false;
|
|
110
|
+
state.busyUntilMs = nowMs + constants_1.textIdleDelayMs;
|
|
111
|
+
if (!state.lastActivityText) {
|
|
112
|
+
setLastActivity(state, "Responding", "terminal", undefined);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
function processUserRecord(state, record, nowMs) {
|
|
117
|
+
const message = (0, parser_1.readRecord)(record.message);
|
|
118
|
+
const content = message?.content;
|
|
119
|
+
if (Array.isArray(content)) {
|
|
120
|
+
let hasToolResult = false;
|
|
121
|
+
for (const block of content) {
|
|
122
|
+
const parsedBlock = (0, parser_1.readRecord)(block);
|
|
123
|
+
if (!parsedBlock || (0, parser_1.readString)(parsedBlock.type) !== "tool_result") {
|
|
124
|
+
continue;
|
|
125
|
+
}
|
|
126
|
+
const completedToolId = (0, parser_1.readString)(parsedBlock.tool_use_id);
|
|
127
|
+
if (!completedToolId) {
|
|
128
|
+
continue;
|
|
129
|
+
}
|
|
130
|
+
const completedToolName = state.activeTools.get(completedToolId)?.toolName;
|
|
131
|
+
if (normalizeToolName(completedToolName ?? "") === "task") {
|
|
132
|
+
state.activeSubagentTools.delete(completedToolId);
|
|
133
|
+
}
|
|
134
|
+
state.activeTools.delete(completedToolId);
|
|
135
|
+
hasToolResult = true;
|
|
136
|
+
}
|
|
137
|
+
if (hasToolResult) {
|
|
138
|
+
state.waiting = false;
|
|
139
|
+
state.busyUntilMs = nowMs + constants_1.textIdleDelayMs;
|
|
140
|
+
return;
|
|
141
|
+
}
|
|
142
|
+
const hasPromptText = content.some((block) => {
|
|
143
|
+
if (typeof block === "string") {
|
|
144
|
+
return block.trim().length > 0;
|
|
145
|
+
}
|
|
146
|
+
const parsedBlock = (0, parser_1.readRecord)(block);
|
|
147
|
+
if (!parsedBlock) {
|
|
148
|
+
return false;
|
|
149
|
+
}
|
|
150
|
+
if ((0, parser_1.readString)(parsedBlock.type) !== "text") {
|
|
151
|
+
return false;
|
|
152
|
+
}
|
|
153
|
+
const text = (0, parser_1.readString)(parsedBlock.text);
|
|
154
|
+
return Boolean(text && text.trim().length > 0);
|
|
155
|
+
});
|
|
156
|
+
if (hasPromptText) {
|
|
157
|
+
clearActiveTools(state);
|
|
158
|
+
state.waiting = false;
|
|
159
|
+
state.busyUntilMs = nowMs + constants_1.textIdleDelayMs;
|
|
160
|
+
setLastActivity(state, "Responding", "terminal", undefined);
|
|
161
|
+
}
|
|
162
|
+
return;
|
|
163
|
+
}
|
|
164
|
+
if (typeof content === "string" && content.trim().length > 0) {
|
|
165
|
+
clearActiveTools(state);
|
|
166
|
+
state.waiting = false;
|
|
167
|
+
state.busyUntilMs = nowMs + constants_1.textIdleDelayMs;
|
|
168
|
+
setLastActivity(state, "Responding", "terminal", undefined);
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
function processSystemRecord(state, record) {
|
|
172
|
+
if ((0, parser_1.readString)(record.subtype) !== "turn_duration") {
|
|
173
|
+
return;
|
|
174
|
+
}
|
|
175
|
+
clearActiveTools(state);
|
|
176
|
+
state.waiting = true;
|
|
177
|
+
state.busyUntilMs = 0;
|
|
178
|
+
state.lastActivityText = undefined;
|
|
179
|
+
state.lastActivityTool = undefined;
|
|
180
|
+
state.lastActivityPath = undefined;
|
|
181
|
+
}
|
|
182
|
+
function processProgressRecord(state, record, nowMs) {
|
|
183
|
+
const parentToolId = (0, parser_1.readString)(record.parentToolUseID) ?? (0, parser_1.readString)(record.parent_tool_use_id);
|
|
184
|
+
if (!parentToolId) {
|
|
185
|
+
return;
|
|
186
|
+
}
|
|
187
|
+
const data = (0, parser_1.readRecord)(record.data);
|
|
188
|
+
if (!data) {
|
|
189
|
+
return;
|
|
190
|
+
}
|
|
191
|
+
const progressType = (0, parser_1.readString)(data.type);
|
|
192
|
+
if ((progressType === "bash_progress" || progressType === "mcp_progress") && state.activeTools.has(parentToolId)) {
|
|
193
|
+
touchTool(state.activeTools.get(parentToolId), nowMs);
|
|
194
|
+
state.waiting = false;
|
|
195
|
+
state.busyUntilMs = nowMs + constants_1.textIdleDelayMs;
|
|
196
|
+
return;
|
|
197
|
+
}
|
|
198
|
+
const parentTool = state.activeTools.get(parentToolId);
|
|
199
|
+
if (!parentTool || normalizeToolName(parentTool.toolName) !== "task") {
|
|
200
|
+
return;
|
|
201
|
+
}
|
|
202
|
+
const progressMessage = (0, parser_1.readRecord)(data.message);
|
|
203
|
+
const messageType = (0, parser_1.readString)(progressMessage?.type);
|
|
204
|
+
const innerMessage = (0, parser_1.readRecord)(progressMessage?.message);
|
|
205
|
+
const content = (0, parser_1.readArray)(innerMessage?.content);
|
|
206
|
+
if (!messageType || !content) {
|
|
207
|
+
return;
|
|
208
|
+
}
|
|
209
|
+
if (messageType === "assistant") {
|
|
210
|
+
let subagentTools = state.activeSubagentTools.get(parentToolId);
|
|
211
|
+
if (!subagentTools) {
|
|
212
|
+
subagentTools = new Map();
|
|
213
|
+
state.activeSubagentTools.set(parentToolId, subagentTools);
|
|
214
|
+
}
|
|
215
|
+
for (const block of content) {
|
|
216
|
+
const parsedBlock = (0, parser_1.readRecord)(block);
|
|
217
|
+
if (!parsedBlock || (0, parser_1.readString)(parsedBlock.type) !== "tool_use") {
|
|
218
|
+
continue;
|
|
219
|
+
}
|
|
220
|
+
const toolId = (0, parser_1.readString)(parsedBlock.id);
|
|
221
|
+
if (!toolId) {
|
|
222
|
+
continue;
|
|
223
|
+
}
|
|
224
|
+
const toolName = (0, parser_1.readString)(parsedBlock.name) ?? "Tool";
|
|
225
|
+
const input = (0, parser_1.readRecord)(parsedBlock.input) ?? {};
|
|
226
|
+
const entry = createActiveToolEntry(toolName, input, nowMs);
|
|
227
|
+
subagentTools.set(toolId, entry);
|
|
228
|
+
setLastActivity(state, entry.statusText, entry.activityTool, entry.activityPath);
|
|
229
|
+
}
|
|
230
|
+
state.waiting = false;
|
|
231
|
+
state.busyUntilMs = nowMs + constants_1.textIdleDelayMs;
|
|
232
|
+
return;
|
|
233
|
+
}
|
|
234
|
+
if (messageType === "user") {
|
|
235
|
+
const subagentTools = state.activeSubagentTools.get(parentToolId);
|
|
236
|
+
if (!subagentTools) {
|
|
237
|
+
return;
|
|
238
|
+
}
|
|
239
|
+
for (const block of content) {
|
|
240
|
+
const parsedBlock = (0, parser_1.readRecord)(block);
|
|
241
|
+
if (!parsedBlock || (0, parser_1.readString)(parsedBlock.type) !== "tool_result") {
|
|
242
|
+
continue;
|
|
243
|
+
}
|
|
244
|
+
const completedToolId = (0, parser_1.readString)(parsedBlock.tool_use_id);
|
|
245
|
+
if (!completedToolId) {
|
|
246
|
+
continue;
|
|
247
|
+
}
|
|
248
|
+
subagentTools.delete(completedToolId);
|
|
249
|
+
}
|
|
250
|
+
if (subagentTools.size === 0) {
|
|
251
|
+
state.activeSubagentTools.delete(parentToolId);
|
|
252
|
+
}
|
|
253
|
+
state.waiting = false;
|
|
254
|
+
state.busyUntilMs = nowMs + constants_1.textIdleDelayMs;
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
function createActiveToolEntry(toolName, input, nowMs) {
|
|
258
|
+
const normalizedTool = normalizeToolName(toolName);
|
|
259
|
+
const activityPath = extractPathFromInput(input);
|
|
260
|
+
return {
|
|
261
|
+
toolName,
|
|
262
|
+
statusText: formatToolStatus(normalizedTool, toolName, input, activityPath),
|
|
263
|
+
activityTool: mapActivityTool(normalizedTool),
|
|
264
|
+
activityPath,
|
|
265
|
+
lastProgressAtMs: nowMs
|
|
266
|
+
};
|
|
267
|
+
}
|
|
268
|
+
function formatToolStatus(normalizedToolName, rawToolName, input, activityPath) {
|
|
269
|
+
switch (normalizedToolName) {
|
|
270
|
+
case "read":
|
|
271
|
+
return activityPath ? `Reading ${node_path_1.default.basename(activityPath)}` : "Reading";
|
|
272
|
+
case "edit":
|
|
273
|
+
return activityPath ? `Editing ${node_path_1.default.basename(activityPath)}` : "Editing";
|
|
274
|
+
case "write":
|
|
275
|
+
return activityPath ? `Writing ${node_path_1.default.basename(activityPath)}` : "Writing";
|
|
276
|
+
case "bash": {
|
|
277
|
+
const command = extractCommandText(input);
|
|
278
|
+
if (!command) {
|
|
279
|
+
return "Running command";
|
|
280
|
+
}
|
|
281
|
+
return `Running: ${truncate(command, constants_1.bashCommandDisplayMaxLength)}`;
|
|
282
|
+
}
|
|
283
|
+
case "glob":
|
|
284
|
+
case "grep":
|
|
285
|
+
return "Searching code";
|
|
286
|
+
case "task": {
|
|
287
|
+
const description = typeof input.description === "string" ? input.description.trim() : "";
|
|
288
|
+
return description ? `Subtask: ${truncate(description, constants_1.taskDescriptionDisplayMaxLength)}` : "Running subtask";
|
|
289
|
+
}
|
|
290
|
+
case "askuserquestion":
|
|
291
|
+
return "Waiting for your answer";
|
|
292
|
+
case "todowrite":
|
|
293
|
+
return "Planning";
|
|
294
|
+
case "webfetch":
|
|
295
|
+
case "websearch":
|
|
296
|
+
return "Fetching web content";
|
|
297
|
+
case "enterplanmode":
|
|
298
|
+
return "Planning";
|
|
299
|
+
default:
|
|
300
|
+
return `Using ${rawToolName}`;
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
function mapActivityTool(normalizedToolName) {
|
|
304
|
+
switch (normalizedToolName) {
|
|
305
|
+
case "read":
|
|
306
|
+
return "read";
|
|
307
|
+
case "edit":
|
|
308
|
+
return "edit";
|
|
309
|
+
case "write":
|
|
310
|
+
return "write";
|
|
311
|
+
case "bash":
|
|
312
|
+
return "bash";
|
|
313
|
+
case "grep":
|
|
314
|
+
return "grep";
|
|
315
|
+
case "glob":
|
|
316
|
+
return "glob";
|
|
317
|
+
case "task":
|
|
318
|
+
return "task";
|
|
319
|
+
case "todowrite":
|
|
320
|
+
return "todo";
|
|
321
|
+
case "webfetch":
|
|
322
|
+
case "websearch":
|
|
323
|
+
return "web";
|
|
324
|
+
case "askuserquestion":
|
|
325
|
+
return "terminal";
|
|
326
|
+
default:
|
|
327
|
+
return "unknown";
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
function extractPathFromInput(input) {
|
|
331
|
+
const keys = ["file_path", "filePath", "path", "target_path", "targetPath"];
|
|
332
|
+
for (const key of keys) {
|
|
333
|
+
const value = input[key];
|
|
334
|
+
if (typeof value === "string" && value.trim().length > 0) {
|
|
335
|
+
return value;
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
return undefined;
|
|
339
|
+
}
|
|
340
|
+
function extractCommandText(input) {
|
|
341
|
+
const command = input.command;
|
|
342
|
+
if (typeof command === "string") {
|
|
343
|
+
return command.trim() || undefined;
|
|
344
|
+
}
|
|
345
|
+
if (Array.isArray(command)) {
|
|
346
|
+
const parts = command.filter((part) => typeof part === "string");
|
|
347
|
+
const joined = parts.join(" ").trim();
|
|
348
|
+
return joined || undefined;
|
|
349
|
+
}
|
|
350
|
+
return undefined;
|
|
351
|
+
}
|
|
352
|
+
function setLastActivity(state, text, tool, activityPath) {
|
|
353
|
+
state.lastActivityText = text;
|
|
354
|
+
state.lastActivityTool = tool;
|
|
355
|
+
state.lastActivityPath = activityPath;
|
|
356
|
+
}
|
|
357
|
+
function touchTool(tool, nowMs) {
|
|
358
|
+
if (!tool) {
|
|
359
|
+
return;
|
|
360
|
+
}
|
|
361
|
+
tool.lastProgressAtMs = nowMs;
|
|
362
|
+
}
|
|
363
|
+
function clearActiveTools(state) {
|
|
364
|
+
state.activeTools.clear();
|
|
365
|
+
state.activeSubagentTools.clear();
|
|
366
|
+
}
|
|
367
|
+
function normalizeToolName(toolName) {
|
|
368
|
+
return toolName.replace(/[^a-zA-Z0-9]/g, "").toLowerCase();
|
|
369
|
+
}
|
|
370
|
+
function truncate(value, maxLength) {
|
|
371
|
+
return value.length > maxLength ? `${value.slice(0, maxLength)}...` : value;
|
|
372
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.permissionExemptTools = exports.taskDescriptionDisplayMaxLength = exports.bashCommandDisplayMaxLength = exports.transcriptLookupRetryMs = exports.maxRecentTranscriptAgeMs = exports.activeToolStaleAfterMs = exports.permissionIdleDelayMs = exports.textIdleDelayMs = exports.bootstrapTailBytes = exports.claudeProjectRoot = void 0;
|
|
7
|
+
const node_os_1 = __importDefault(require("node:os"));
|
|
8
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
9
|
+
exports.claudeProjectRoot = node_path_1.default.join(node_os_1.default.homedir(), ".claude", "projects");
|
|
10
|
+
exports.bootstrapTailBytes = 196_608;
|
|
11
|
+
exports.textIdleDelayMs = 5_000;
|
|
12
|
+
exports.permissionIdleDelayMs = 12_000;
|
|
13
|
+
exports.activeToolStaleAfterMs = 45_000;
|
|
14
|
+
exports.maxRecentTranscriptAgeMs = 3 * 24 * 60 * 60 * 1000;
|
|
15
|
+
exports.transcriptLookupRetryMs = 2_000;
|
|
16
|
+
exports.bashCommandDisplayMaxLength = 72;
|
|
17
|
+
exports.taskDescriptionDisplayMaxLength = 56;
|
|
18
|
+
exports.permissionExemptTools = new Set(["task", "askuserquestion"]);
|