Fix push-to-talk wake routing #99
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: CI | |
| on: | |
| push: | |
| branches: | |
| - main | |
| pull_request: | |
| branches: | |
| - main | |
| permissions: | |
| contents: read | |
| jobs: | |
| validate: | |
| name: Validate | |
| runs-on: windows-latest | |
| env: | |
| CARGO_TERM_COLOR: always | |
| LIBCLANG_PATH: C:\Program Files\LLVM\bin | |
| steps: | |
| - name: Check out repository | |
| uses: actions/checkout@v6 | |
| - name: Set up Node.js | |
| uses: actions/setup-node@v6 | |
| with: | |
| node-version: "24" | |
| cache: npm | |
| - name: Set up Python | |
| uses: actions/setup-python@v6 | |
| with: | |
| python-version: "3.11" | |
| - name: Install LLVM for whisper-rs bindgen | |
| shell: pwsh | |
| run: | | |
| choco install llvm -y --no-progress | |
| "C:\Program Files\LLVM\bin" | Out-File -FilePath $env:GITHUB_PATH -Append | |
| - name: Install Rust components | |
| shell: pwsh | |
| run: | | |
| rustup component add rustfmt clippy | |
| rustc --version | |
| cargo --version | |
| - name: Install Node dependencies | |
| run: npm ci | |
| - name: Provision pinned Hermes runtimes | |
| shell: pwsh | |
| run: | | |
| python -m pip install uv | |
| .\scripts\provision_hermes_acp.ps1 | |
| .\scripts\provision_iris_browser.ps1 | |
| - name: Check Rust formatting | |
| run: cargo fmt --all -- --check | |
| - name: Build Rust workspace | |
| run: cargo build --workspace | |
| - name: Test Rust workspace | |
| run: cargo test --workspace | |
| - name: Run Clippy | |
| run: cargo clippy --workspace -- -D warnings | |
| - name: Run voice tests | |
| run: npm run test:voice | |
| - name: Run Python tests | |
| run: npm run test:python | |
| - name: Run repository audit | |
| run: cargo run -p xtask | |
| - name: Run deterministic runtime checks | |
| shell: pwsh | |
| run: | | |
| cargo run -p iris-runtime -- --dashboard-json | |
| $stdoutPath = Join-Path $env:RUNNER_TEMP "iris-self-check-stdout.txt" | |
| $stderrPath = Join-Path $env:RUNNER_TEMP "iris-self-check-stderr.txt" | |
| $process = Start-Process -FilePath ".\target\debug\iris-runtime.exe" ` | |
| -ArgumentList "--self-check" -NoNewWindow -Wait -PassThru ` | |
| -RedirectStandardOutput $stdoutPath -RedirectStandardError $stderrPath | |
| $output = (Get-Content $stdoutPath, $stderrPath -Raw | Out-String) | |
| $exitCode = $process.ExitCode | |
| Write-Host $output | |
| if ($exitCode -eq 0) { | |
| throw "Offline CI self-check unexpectedly succeeded without bundled models or Ollama." | |
| } | |
| $expectedFailure = $output -match "missing Kokoro model" -or | |
| $output -match "Ollama/model health check failed" | |
| if (-not $expectedFailure) { | |
| throw "Offline CI self-check did not report the expected prerequisite failure." | |
| } | |
| - name: Capture dependency inventory | |
| shell: pwsh | |
| run: | | |
| New-Item -ItemType Directory -Force -Path diagnostics | Out-Null | |
| cargo metadata --format-version 1 | Set-Content diagnostics\cargo-metadata.json | |
| npm ls --all --json | Set-Content diagnostics\npm-dependencies.json | |
| uv pip list --python .\.iris-runtime\hermes\.venv\Scripts\python.exe --format freeze | Set-Content diagnostics\hermes-python-dependencies.txt | |
| - name: Upload dependency inventory | |
| uses: actions/upload-artifact@v6 | |
| with: | |
| name: iris-dependency-inventory | |
| path: | | |
| diagnostics/cargo-metadata.json | |
| diagnostics/npm-dependencies.json | |
| diagnostics/hermes-python-dependencies.txt | |
| - name: Check whitespace | |
| run: git diff --check |