5a0a6cc073
Add tools/macstudio/smoke_e2e.py exercising the full voice-bridge loop (/health/ready, /tts, /voice/ws hello+stream+intent+TTS, /tts/cache/stats) without requiring the ESP32 firmware. Three modes (tts/ws/full); generates a French PCM16 16 kHz fixture via `say -v Thomas` + afconvert when needed; saves received WAVs and a structured JSON report under /tmp. Wires `make smoke-voice` and documents the smoke test under tools/macstudio/README.md (prereqs, exit codes 0/1/2, typical latencies). Local run hit /tts cache miss + WS round-trip in ~3 s with cache hit on the second pass; cache delta logging confirmed.
84 lines
2.7 KiB
Makefile
84 lines
2.7 KiB
Makefile
PYTHON ?= python3
|
|
SCENARIO ?= game/scenarios/zacus_v2.yaml
|
|
FRONTEND_DIR ?= frontend-v3
|
|
|
|
.PHONY: bootstrap-validators bootstrap-docs scenario-validate audio-validate printables-validate export validate-runtime-bundle content-checks runtime3-compile runtime3-simulate runtime3-verify runtime3-test runtime3-firmware-bundle frontend-typecheck frontend-test frontend-build docs-build docs-serve all-validate images playtest hints-serve hints-test smoke-voice
|
|
|
|
bootstrap-validators:
|
|
bash tools/setup/install_validators.sh
|
|
|
|
bootstrap-docs:
|
|
$(PYTHON) -m pip install --user --break-system-packages -r tools/requirements/docs.txt
|
|
|
|
scenario-validate:
|
|
$(PYTHON) tools/scenario/validate_scenario.py $(SCENARIO)
|
|
|
|
audio-validate:
|
|
$(PYTHON) tools/audio/validate_manifest.py audio/manifests/zacus_v2_audio.yaml
|
|
|
|
printables-validate:
|
|
$(PYTHON) tools/printables/validate_manifest.py printables/manifests/zacus_v2_printables.yaml
|
|
|
|
export:
|
|
$(PYTHON) tools/scenario/export_md.py $(SCENARIO)
|
|
|
|
validate-runtime-bundle:
|
|
$(PYTHON) tools/scenario/validate_runtime_bundle.py
|
|
|
|
content-checks:
|
|
bash tools/test/run_content_checks.sh
|
|
|
|
runtime3-compile:
|
|
$(PYTHON) tools/scenario/compile_runtime3.py $(SCENARIO)
|
|
|
|
runtime3-simulate:
|
|
$(PYTHON) tools/scenario/simulate_runtime3.py $(SCENARIO)
|
|
|
|
runtime3-verify:
|
|
$(PYTHON) tools/scenario/verify_runtime3_pivots.py $(SCENARIO)
|
|
|
|
runtime3-test:
|
|
$(PYTHON) -m unittest discover -s tests/runtime3 -p 'test_*.py'
|
|
|
|
runtime3-firmware-bundle:
|
|
$(PYTHON) tools/scenario/export_runtime3_firmware_bundle.py $(SCENARIO)
|
|
|
|
frontend-typecheck:
|
|
cd $(FRONTEND_DIR) && pnpm typecheck
|
|
|
|
frontend-test:
|
|
cd $(FRONTEND_DIR) && pnpm test
|
|
|
|
frontend-build:
|
|
cd $(FRONTEND_DIR) && pnpm build
|
|
|
|
docs-build:
|
|
$(PYTHON) -m mkdocs build --strict
|
|
|
|
docs-serve:
|
|
$(PYTHON) -m mkdocs serve
|
|
|
|
all-validate: scenario-validate audio-validate printables-validate validate-runtime-bundle runtime3-compile runtime3-simulate runtime3-verify runtime3-test
|
|
@echo "All validations passed."
|
|
|
|
images:
|
|
$(PYTHON) tools/images/generate_printables.py --manifest printables/manifests/zacus_v2_printables.yaml
|
|
|
|
playtest:
|
|
uv run --no-project --with pyyaml python tools/playtest/run_playtest.py \
|
|
--scenario game/scenarios/zacus_v2.yaml \
|
|
--playtest game/scenarios/playtests/zacus_v3_60min_tech.playtest.yaml \
|
|
--snapshot game/scenarios/playtests/snapshots/zacus_v3_60min_tech.snapshot.json
|
|
|
|
hints-serve:
|
|
uv run --with fastapi --with uvicorn --with pyyaml --with pydantic --with httpx --with sse-starlette \
|
|
uvicorn tools.hints.server:app --reload --port 8300
|
|
|
|
hints-test:
|
|
uv run --with fastapi --with uvicorn --with pyyaml --with pydantic --with pytest --with httpx --with sse-starlette \
|
|
pytest tests/hints/ -v
|
|
|
|
smoke-voice:
|
|
uv run --with websockets --with httpx \
|
|
python tools/macstudio/smoke_e2e.py --mode full
|