[npm] Bump lucide-react from 1.16.0 to 1.17.0 in /evi/evi-next-js-app-router-quickstart #1928
Workflow file for this run
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: test-examples | |
| on: | |
| pull_request: | |
| types: [opened, synchronize, reopened] | |
| push: | |
| branches: [main, master] | |
| workflow_dispatch: | |
| schedule: | |
| # Run tests for all packages that have tests weekly on Tuesday | |
| - cron: '0 12 * * 2' | |
| permissions: | |
| contents: read | |
| jobs: | |
| detect-changes: | |
| runs-on: ubuntu-latest | |
| outputs: | |
| evi_py_quickstart: ${{ steps.filter.outputs.evi_py_quickstart }} | |
| evi_py_chat_history: ${{ steps.filter.outputs.evi_py_chat_history }} | |
| evi_py_clm_sse: ${{ steps.filter.outputs.evi_py_clm_sse }} | |
| evi_py_clm_wss: ${{ steps.filter.outputs.evi_py_clm_wss }} | |
| evi_py_control_plane: ${{ steps.filter.outputs.evi_py_control_plane }} | |
| evi_py_phone_calling: ${{ steps.filter.outputs.evi_py_phone_calling }} | |
| evi_py_webhooks: ${{ steps.filter.outputs.evi_py_webhooks }} | |
| evi_py_wss_clm_endpoint: ${{ steps.filter.outputs.evi_py_wss_clm_endpoint }} | |
| tts_py_livekit: ${{ steps.filter.outputs.tts_py_livekit }} | |
| tts_py_quickstart: ${{ steps.filter.outputs.tts_py_quickstart }} | |
| evi_app_router: ${{ steps.filter.outputs.evi_app_router }} | |
| evi_function_calling: ${{ steps.filter.outputs.evi_function_calling }} | |
| evi_pages_router: ${{ steps.filter.outputs.evi_pages_router }} | |
| evi_react_native: ${{ steps.filter.outputs.evi_react_native }} | |
| evi_ts_chat_history: ${{ steps.filter.outputs.evi_ts_chat_history }} | |
| evi_ts_function_calling: ${{ steps.filter.outputs.evi_ts_function_calling }} | |
| evi_ts_quickstart: ${{ steps.filter.outputs.evi_ts_quickstart }} | |
| evi_ts_webhooks: ${{ steps.filter.outputs.evi_ts_webhooks }} | |
| evi_vue_widget: ${{ steps.filter.outputs.evi_vue_widget }} | |
| tts_next_agora: ${{ steps.filter.outputs.tts_next_agora }} | |
| tts_next_vercel_ai_sdk: ${{ steps.filter.outputs.tts_next_vercel_ai_sdk }} | |
| tts_ts_lipsync: ${{ steps.filter.outputs.tts_ts_lipsync }} | |
| tts_ts_quickstart: ${{ steps.filter.outputs.tts_ts_quickstart }} | |
| evi_dotnet_quickstart: ${{ steps.filter.outputs.evi_dotnet_quickstart }} | |
| tts_dotnet_quickstart: ${{ steps.filter.outputs.tts_dotnet_quickstart }} | |
| exp_meas_ts_raw_text_processor: ${{ steps.filter.outputs.exp_meas_ts_raw_text_processor }} | |
| exp_meas_py_streaming: ${{ steps.filter.outputs.exp_meas_py_streaming }} | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v6 | |
| with: | |
| fetch-depth: 0 | |
| - name: Detect changed folders | |
| id: filter | |
| uses: dorny/paths-filter@v4 | |
| with: | |
| filters: | | |
| evi_py_quickstart: | |
| - 'evi/evi-python-quickstart/**' | |
| evi_py_chat_history: | |
| - 'evi/evi-python-chat-history/**' | |
| evi_py_clm_sse: | |
| - 'evi/evi-python-clm-sse/**' | |
| evi_py_clm_wss: | |
| - 'evi/evi-python-clm-wss/**' | |
| evi_py_control_plane: | |
| - 'evi/evi-python-control-plane/**' | |
| evi_py_phone_calling: | |
| - 'evi/evi-python-phone-calling-proxy-server/**' | |
| evi_py_webhooks: | |
| - 'evi/evi-python-webhooks/**' | |
| evi_py_wss_clm_endpoint: | |
| - 'evi/evi-python-wss-clm-endpoint/**' | |
| tts_py_livekit: | |
| - 'tts/tts-python-livekit/**' | |
| tts_py_quickstart: | |
| - 'tts/tts-python-quickstart/**' | |
| evi_app_router: | |
| - 'evi/evi-next-js-app-router-quickstart/**' | |
| evi_function_calling: | |
| - 'evi/evi-next-js-function-calling/**' | |
| evi_pages_router: | |
| - 'evi/evi-next-js-pages-router-quickstart/**' | |
| evi_react_native: | |
| - 'evi/evi-react-native/**' | |
| evi_ts_chat_history: | |
| - 'evi/evi-typescript-chat-history/**' | |
| evi_ts_function_calling: | |
| - 'evi/evi-typescript-function-calling/**' | |
| evi_ts_quickstart: | |
| - 'evi/evi-typescript-quickstart/**' | |
| evi_ts_webhooks: | |
| - 'evi/evi-typescript-webhooks/**' | |
| evi_vue_widget: | |
| - 'evi/evi-vue-widget/**' | |
| tts_next_agora: | |
| - 'tts/tts-next-js-agora/**' | |
| tts_next_vercel_ai_sdk: | |
| - 'tts/tts-next-js-vercel-ai-sdk/**' | |
| tts_ts_lipsync: | |
| - 'tts/tts-typescript-lipsync/**' | |
| tts_ts_quickstart: | |
| - 'tts/tts-typescript-quickstart/**' | |
| evi_dotnet_quickstart: | |
| - 'evi/evi-dotnet-quickstart/**' | |
| tts_dotnet_quickstart: | |
| - 'tts/tts-dotnet-quickstart/**' | |
| exp_meas_ts_raw_text_processor: | |
| - 'expression-measurement/batch/typescript-raw-text-processor/**' | |
| exp_meas_py_streaming: | |
| - 'expression-measurement/streaming/python-streaming-example/**' | |
| test-evi-typescript-quickstart: | |
| needs: detect-changes | |
| if: github.event_name == 'workflow_dispatch' || github.event_name == 'schedule' || needs.detect-changes.outputs.evi_ts_quickstart == 'true' | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v6 | |
| - name: Setup pnpm | |
| uses: pnpm/action-setup@v6 | |
| with: | |
| version: 10.20.0 | |
| - name: Setup Node | |
| uses: actions/setup-node@v6 | |
| with: | |
| node-version: 20 | |
| - name: Install deps (EVI quickstart) | |
| working-directory: evi/evi-typescript-quickstart | |
| run: pnpm install --frozen-lockfile | |
| - name: Build | |
| working-directory: evi/evi-typescript-quickstart | |
| run: pnpm run build | |
| - name: Run tests in evi-typescript-quickstart | |
| working-directory: evi/evi-typescript-quickstart | |
| env: | |
| TEST_HUME_API_KEY: ${{ secrets.TEST_HUME_API_KEY }} | |
| TEST_HUME_SECRET_KEY: ${{ secrets.TEST_HUME_SECRET_KEY }} | |
| run: pnpm run test | |
| test-tts-typescript-quickstart: | |
| needs: detect-changes | |
| if: github.event_name == 'workflow_dispatch' || github.event_name == 'schedule' || needs.detect-changes.outputs.tts_ts_quickstart == 'true' | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v6 | |
| - name: Setup pnpm | |
| uses: pnpm/action-setup@v6 | |
| with: | |
| version: 10.20.0 | |
| - name: Setup Node | |
| uses: actions/setup-node@v6 | |
| with: | |
| node-version: 20 | |
| - name: Install deps (TTS quickstart) | |
| working-directory: tts/tts-typescript-quickstart | |
| run: pnpm install --frozen-lockfile | |
| - name: Build | |
| working-directory: tts/tts-typescript-quickstart | |
| run: pnpm run build | |
| - name: Run tests in tts-typescript-quickstart | |
| working-directory: tts/tts-typescript-quickstart | |
| env: | |
| TEST_HUME_API_KEY: ${{ secrets.TEST_HUME_API_KEY }} | |
| TEST_HUME_SECRET_KEY: ${{ secrets.TEST_HUME_SECRET_KEY }} | |
| run: pnpm run test | |
| test-exp-meas-typescript-raw-text-processor: | |
| needs: detect-changes | |
| if: github.event_name == 'workflow_dispatch' || github.event_name == 'schedule' || needs.detect-changes.outputs.exp_meas_ts_raw_text_processor == 'true' | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v6 | |
| - name: Setup Node | |
| uses: actions/setup-node@v6 | |
| with: | |
| node-version: 20 | |
| - name: Setup pnpm | |
| uses: pnpm/action-setup@v6 | |
| with: | |
| version: 10.20.0 | |
| - name: Install deps (expression-measurement batch typescript-raw-text-processor) | |
| working-directory: expression-measurement/batch/typescript-raw-text-processor | |
| run: pnpm install --frozen-lockfile | |
| - name: Run tests in typescript-raw-text-processor | |
| working-directory: expression-measurement/batch/typescript-raw-text-processor | |
| env: | |
| HUME_API_KEY: ${{ secrets.TEST_HUME_API_KEY_EXP_MEASUREMENT }} | |
| run: pnpm run test | |
| test-exp-meas-python-streaming: | |
| needs: detect-changes | |
| if: github.event_name == 'workflow_dispatch' || github.event_name == 'schedule' || needs.detect-changes.outputs.exp_meas_py_streaming == 'true' | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v6 | |
| - name: Install uv | |
| run: | | |
| curl -LsSf https://astral.sh/uv/install.sh | sh | |
| echo "$HOME/.cargo/bin" >> $GITHUB_PATH | |
| shell: bash | |
| - name: Run tests in expression-measurement/streaming/python-streaming-example | |
| working-directory: expression-measurement/streaming/python-streaming-example | |
| env: | |
| HUME_API_KEY: ${{ secrets.TEST_HUME_API_KEY_EXP_MEASUREMENT }} | |
| run: uv sync --extra dev && uv run pytest test_main.py -v | |
| test-evi-python-quickstart: | |
| needs: detect-changes | |
| if: github.event_name == 'workflow_dispatch' || github.event_name == 'schedule' || needs.detect-changes.outputs.evi_py_quickstart == 'true' | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v6 | |
| - name: Set up python | |
| uses: actions/setup-python@v6 | |
| with: | |
| python-version: '3.11' | |
| - name: Bootstrap poetry | |
| run: | | |
| curl -sSL https://install.python-poetry.org | python - -y --version 1.8.5 | |
| echo "$HOME/.local/bin" >> $GITHUB_PATH | |
| - name: Install system dependencies for audio | |
| run: | | |
| sudo apt-get --yes update | |
| sudo apt-get --yes install libportaudio2 | |
| - name: Install uv | |
| run: | | |
| curl -LsSf https://astral.sh/uv/install.sh | sh | |
| echo "$HOME/.cargo/bin" >> $GITHUB_PATH | |
| shell: bash | |
| - name: Run tests in evi-python-quickstart | |
| working-directory: evi/evi-python-quickstart | |
| run: uv run pytest test_quickstart.py -v | |
| env: | |
| TEST_HUME_API_KEY: ${{ secrets.TEST_HUME_API_KEY }} | |
| test-tts-python-quickstart: | |
| needs: detect-changes | |
| if: github.event_name == 'workflow_dispatch' || github.event_name == 'schedule' || needs.detect-changes.outputs.tts_py_quickstart == 'true' | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v6 | |
| - name: Set up python | |
| uses: actions/setup-python@v6 | |
| with: | |
| python-version: '3.11' | |
| - name: Bootstrap poetry | |
| run: | | |
| curl -sSL https://install.python-poetry.org | python - -y --version 1.8.5 | |
| echo "$HOME/.local/bin" >> $GITHUB_PATH | |
| - name: Install system dependencies for audio | |
| run: | | |
| sudo apt-get --yes update | |
| sudo apt-get --yes install libportaudio2 | |
| - name: Install uv | |
| run: | | |
| curl -LsSf https://astral.sh/uv/install.sh | sh | |
| echo "$HOME/.cargo/bin" >> $GITHUB_PATH | |
| shell: bash | |
| - name: Run tests in tts-python-quickstart | |
| working-directory: tts/tts-python-quickstart | |
| run: uv run pytest test_app.py -v | |
| env: | |
| TEST_HUME_API_KEY: ${{ secrets.TEST_HUME_API_KEY }} | |
| evi-python-chat-history: | |
| needs: detect-changes | |
| if: github.event_name == 'workflow_dispatch' || needs.detect-changes.outputs.evi_py_chat_history == 'true' | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v6 | |
| - name: Set up Python | |
| uses: actions/setup-python@v6 | |
| with: | |
| python-version: '3.11' | |
| - name: Install Poetry | |
| run: | | |
| curl -sSL https://install.python-poetry.org | python - -y --version 1.8.5 | |
| echo "$HOME/.local/bin" >> $GITHUB_PATH | |
| - name: Install dependencies | |
| working-directory: evi/evi-python-chat-history | |
| run: poetry install --no-interaction --no-root | |
| - name: Verify | |
| working-directory: evi/evi-python-chat-history | |
| run: poetry run python -c "print('OK')" | |
| evi-python-clm-sse: | |
| needs: detect-changes | |
| if: github.event_name == 'workflow_dispatch' || needs.detect-changes.outputs.evi_py_clm_sse == 'true' | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v6 | |
| - name: Set up Python | |
| uses: actions/setup-python@v6 | |
| with: | |
| python-version: '3.11' | |
| - name: Install uv | |
| run: | | |
| curl -LsSf https://astral.sh/uv/install.sh | sh | |
| echo "$HOME/.cargo/bin" >> $GITHUB_PATH | |
| shell: bash | |
| - name: Install dependencies | |
| working-directory: evi/evi-python-clm-sse | |
| run: uv sync | |
| - name: Verify | |
| working-directory: evi/evi-python-clm-sse | |
| run: uv run python -c "print('OK')" | |
| evi-python-clm-wss: | |
| needs: detect-changes | |
| if: github.event_name == 'workflow_dispatch' || needs.detect-changes.outputs.evi_py_clm_wss == 'true' | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v6 | |
| - name: Set up Python | |
| uses: actions/setup-python@v6 | |
| with: | |
| python-version: '3.11' | |
| - name: Install uv | |
| run: | | |
| curl -LsSf https://astral.sh/uv/install.sh | sh | |
| echo "$HOME/.cargo/bin" >> $GITHUB_PATH | |
| shell: bash | |
| - name: Install dependencies | |
| working-directory: evi/evi-python-clm-wss | |
| run: uv sync | |
| - name: Verify | |
| working-directory: evi/evi-python-clm-wss | |
| run: uv run python -c "print('OK')" | |
| evi-python-control-plane: | |
| needs: detect-changes | |
| if: github.event_name == 'workflow_dispatch' || needs.detect-changes.outputs.evi_py_control_plane == 'true' | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v6 | |
| - name: Set up Python | |
| uses: actions/setup-python@v6 | |
| with: | |
| python-version: '3.11' | |
| - name: Install system dependencies for audio | |
| run: | | |
| sudo apt-get --yes update | |
| sudo apt-get --yes install libportaudio2 | |
| - name: Install uv | |
| run: | | |
| curl -LsSf https://astral.sh/uv/install.sh | sh | |
| echo "$HOME/.cargo/bin" >> $GITHUB_PATH | |
| shell: bash | |
| - name: Install dependencies | |
| working-directory: evi/evi-python-control-plane | |
| run: uv sync | |
| - name: Verify | |
| working-directory: evi/evi-python-control-plane | |
| run: uv run python -c "print('OK')" | |
| evi-python-phone-calling-proxy-server: | |
| needs: detect-changes | |
| if: github.event_name == 'workflow_dispatch' || needs.detect-changes.outputs.evi_py_phone_calling == 'true' | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v6 | |
| - name: Set up Python | |
| uses: actions/setup-python@v6 | |
| with: | |
| python-version: '3.11' | |
| - name: Install uv | |
| run: | | |
| curl -LsSf https://astral.sh/uv/install.sh | sh | |
| echo "$HOME/.cargo/bin" >> $GITHUB_PATH | |
| shell: bash | |
| - name: Install dependencies | |
| working-directory: evi/evi-python-phone-calling-proxy-server | |
| run: uv sync | |
| - name: Verify | |
| working-directory: evi/evi-python-phone-calling-proxy-server | |
| run: uv run python -c "print('OK')" | |
| evi-python-webhooks: | |
| needs: detect-changes | |
| if: github.event_name == 'workflow_dispatch' || needs.detect-changes.outputs.evi_py_webhooks == 'true' | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v6 | |
| - name: Set up Python | |
| uses: actions/setup-python@v6 | |
| with: | |
| python-version: '3.11' | |
| - name: Install Poetry | |
| run: | | |
| curl -sSL https://install.python-poetry.org | python - -y --version 1.8.5 | |
| echo "$HOME/.local/bin" >> $GITHUB_PATH | |
| - name: Install dependencies | |
| working-directory: evi/evi-python-webhooks | |
| run: poetry install --no-interaction --no-root | |
| - name: Verify | |
| working-directory: evi/evi-python-webhooks | |
| run: poetry run python -c "print('OK')" | |
| evi-python-wss-clm-endpoint: | |
| needs: detect-changes | |
| if: github.event_name == 'workflow_dispatch' || needs.detect-changes.outputs.evi_py_wss_clm_endpoint == 'true' | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v6 | |
| - name: Set up Python | |
| uses: actions/setup-python@v6 | |
| with: | |
| python-version: '3.11' | |
| - name: Install Poetry | |
| run: | | |
| curl -sSL https://install.python-poetry.org | python - -y --version 1.8.5 | |
| echo "$HOME/.local/bin" >> $GITHUB_PATH | |
| - name: Install dependencies | |
| working-directory: evi/evi-python-wss-clm-endpoint | |
| run: poetry install --no-interaction --no-root | |
| - name: Verify | |
| working-directory: evi/evi-python-wss-clm-endpoint | |
| run: poetry run python -c "print('OK')" | |
| tts-python-livekit: | |
| needs: detect-changes | |
| if: github.event_name == 'workflow_dispatch' || needs.detect-changes.outputs.tts_py_livekit == 'true' | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v6 | |
| - name: Set up Python | |
| uses: actions/setup-python@v6 | |
| with: | |
| python-version: '3.11' | |
| - name: Install system dependencies for audio | |
| run: | | |
| sudo apt-get --yes update | |
| sudo apt-get --yes install libportaudio2 libasound2-dev | |
| - name: Install uv | |
| run: | | |
| curl -LsSf https://astral.sh/uv/install.sh | sh | |
| echo "$HOME/.cargo/bin" >> $GITHUB_PATH | |
| shell: bash | |
| - name: Install dependencies | |
| working-directory: tts/tts-python-livekit | |
| run: uv sync | |
| - name: Verify | |
| working-directory: tts/tts-python-livekit | |
| run: uv run python -c "print('OK')" | |
| evi-dotnet-quickstart: | |
| needs: detect-changes | |
| if: github.event_name == 'workflow_dispatch' || github.event_name == 'schedule' || needs.detect-changes.outputs.evi_dotnet_quickstart == 'true' | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v6 | |
| - name: Setup .NET | |
| uses: actions/setup-dotnet@v5 | |
| with: | |
| dotnet-version: '9.0.x' | |
| - name: Restore | |
| working-directory: evi/evi-dotnet-quickstart | |
| run: dotnet restore evi-csharp-quickstart.tests.csproj | |
| - name: Build | |
| working-directory: evi/evi-dotnet-quickstart | |
| run: dotnet build evi-csharp-quickstart.tests.csproj --no-restore -c Release | |
| - name: Run tests | |
| working-directory: evi/evi-dotnet-quickstart | |
| env: | |
| TEST_HUME_API_KEY: ${{ secrets.TEST_HUME_API_KEY }} | |
| HUME_API_KEY: ${{ secrets.TEST_HUME_API_KEY }} | |
| run: dotnet test evi-csharp-quickstart.tests.csproj --no-build -c Release -v normal | |
| tts-dotnet-quickstart: | |
| needs: detect-changes | |
| if: github.event_name == 'workflow_dispatch' || github.event_name == 'schedule' || needs.detect-changes.outputs.tts_dotnet_quickstart == 'true' | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v6 | |
| - name: Setup .NET | |
| uses: actions/setup-dotnet@v5 | |
| with: | |
| dotnet-version: '9.0.x' | |
| - name: Restore | |
| working-directory: tts/tts-dotnet-quickstart | |
| run: dotnet restore tts-csharp-quickstart.tests.csproj | |
| - name: Build | |
| working-directory: tts/tts-dotnet-quickstart | |
| run: dotnet build tts-csharp-quickstart.tests.csproj --no-restore -c Release | |
| - name: Run tests | |
| working-directory: tts/tts-dotnet-quickstart | |
| env: | |
| TEST_HUME_API_KEY: ${{ secrets.TEST_HUME_API_KEY }} | |
| HUME_API_KEY: ${{ secrets.TEST_HUME_API_KEY }} | |
| run: dotnet test tts-csharp-quickstart.tests.csproj --no-build -c Release -v normal | |
| evi-next-js-app-router-quickstart: | |
| needs: detect-changes | |
| if: github.event_name == 'workflow_dispatch' || github.event_name == 'schedule' || needs.detect-changes.outputs.evi_app_router == 'true' | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v6 | |
| - name: Setup pnpm | |
| uses: pnpm/action-setup@v6 | |
| with: | |
| version: 10.20.0 | |
| - name: Setup Node | |
| uses: actions/setup-node@v6 | |
| with: | |
| node-version: 20 | |
| cache: 'pnpm' | |
| cache-dependency-path: evi/evi-next-js-app-router-quickstart/pnpm-lock.yaml | |
| - name: Install dependencies | |
| working-directory: evi/evi-next-js-app-router-quickstart | |
| run: pnpm install --frozen-lockfile | |
| - name: Build | |
| working-directory: evi/evi-next-js-app-router-quickstart | |
| run: pnpm run build | |
| - name: Install Playwright browsers | |
| working-directory: evi/evi-next-js-app-router-quickstart | |
| run: pnpm exec playwright install --with-deps chromium | |
| - name: Run tests | |
| working-directory: evi/evi-next-js-app-router-quickstart | |
| env: | |
| TEST_HUME_API_KEY: ${{ secrets.TEST_HUME_API_KEY }} | |
| TEST_HUME_SECRET_KEY: ${{ secrets.TEST_HUME_SECRET_KEY }} | |
| HUME_API_KEY: ${{ secrets.TEST_HUME_API_KEY }} | |
| HUME_SECRET_KEY: ${{ secrets.TEST_HUME_SECRET_KEY }} | |
| run: pnpm run test | |
| # Notifies Slack when the daily (cron) test run finishes. Add repo secret SLACK_WEBHOOK_URL (Incoming Webhook URL). | |
| notify-slack-cron: | |
| needs: | |
| - test-evi-typescript-quickstart | |
| - test-tts-typescript-quickstart | |
| - test-exp-meas-typescript-raw-text-processor | |
| - test-exp-meas-python-streaming | |
| - evi-next-js-app-router-quickstart | |
| - test-evi-python-quickstart | |
| - test-tts-python-quickstart | |
| - evi-dotnet-quickstart | |
| - tts-dotnet-quickstart | |
| # always() ensures we run even when one of the test jobs failed, so we can post the result to Slack | |
| if: always() && (github.event_name == 'schedule' || github.event_name == 'workflow_dispatch') | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v6 | |
| - name: Notify Slack | |
| env: | |
| SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }} | |
| EVI_TS: ${{ needs.test-evi-typescript-quickstart.result }} | |
| TTS_TS: ${{ needs.test-tts-typescript-quickstart.result }} | |
| EXP_MEAS_TS_RAW_TEXT_PROCESSOR: ${{ needs.test-exp-meas-typescript-raw-text-processor.result }} | |
| EVI_PY: ${{ needs.test-evi-python-quickstart.result }} | |
| TTS_PY: ${{ needs.test-tts-python-quickstart.result }} | |
| EXP_MEAS_PY_STREAMING: ${{ needs.test-exp-meas-python-streaming.result }} | |
| EVI_DOTNET: ${{ needs.evi-dotnet-quickstart.result }} | |
| TTS_DOTNET: ${{ needs.tts-dotnet-quickstart.result }} | |
| EVI_APP: ${{ needs.evi-next-js-app-router-quickstart.result }} | |
| run: | | |
| if [ -z "$SLACK_WEBHOOK_URL" ]; then | |
| echo "::warning::SLACK_WEBHOOK_URL secret is not set. Add it in repo Settings → Secrets and variables → Actions to get Slack notifications." | |
| echo "## Slack notification skipped" >> $GITHUB_STEP_SUMMARY | |
| echo "Add the **SLACK_WEBHOOK_URL** repository secret (Settings → Secrets and variables → Actions) to enable Slack notifications." >> $GITHUB_STEP_SUMMARY | |
| exit 0 | |
| fi | |
| status() { [ "$1" = "success" ] && echo "✅ $1" || echo "❌ $1"; } | |
| # SDK versions from repo manifests (package name + version spec) | |
| EVI_TS_VER=$(jq -r '.dependencies.hume' evi/evi-typescript-quickstart/package.json 2>/dev/null || echo "?") | |
| TTS_TS_VER=$(jq -r '.dependencies.hume' tts/tts-typescript-quickstart/package.json 2>/dev/null || echo "?") | |
| EXP_MEAS_TS_VER=$(jq -r '.dependencies.hume' expression-measurement/batch/typescript-raw-text-processor/package.json 2>/dev/null || echo "?") | |
| EVI_APP_VER=$(jq -r '.dependencies["@humeai/voice-react"]' evi/evi-next-js-app-router-quickstart/package.json 2>/dev/null || echo "?") | |
| EVI_PY_VER=$(python3 -c "import tomllib; d=tomllib.load(open('evi/evi-python-quickstart/pyproject.toml','rb')); deps=d.get('project',{}).get('dependencies',[]); print(next((x for x in deps if 'hume' in x), ''))" 2>/dev/null || echo "?") | |
| TTS_PY_VER=$(python3 -c "import tomllib; d=tomllib.load(open('tts/tts-python-quickstart/pyproject.toml','rb')); deps=d.get('project',{}).get('dependencies',[]); print(next((x for x in deps if 'hume' in x), ''))" 2>/dev/null || echo "?") | |
| EXP_MEAS_PY_VER=$(python3 -c "import tomllib; d=tomllib.load(open('expression-measurement/streaming/python-streaming-example/pyproject.toml','rb')); deps=d.get('project',{}).get('dependencies',[]); print(next((x for x in deps if 'hume' in x), ''))" 2>/dev/null || echo "?") | |
| EVI_DOTNET_VER=$(sed -n 's/.*PackageVersion Include="Hume" Version="\([^"]*\)".*/\1/p' Directory.Packages.props 2>/dev/null | head -1 || echo "?") | |
| TTS_DOTNET_VER=$(sed -n 's/.*PackageVersion Include="Hume" Version="\([^"]*\)".*/\1/p' Directory.Packages.props 2>/dev/null | head -1 || echo "?") | |
| text="*Daily test-examples cron job finished* | |
| • TS SDK (hume $EVI_TS_VER): evi-typescript-quickstart: $(status "$EVI_TS") | |
| • TS SDK (hume $TTS_TS_VER): tts-typescript-quickstart: $(status "$TTS_TS") | |
| • TS SDK (hume $EXP_MEAS_TS_VER): exp-meas-ts-raw-text-processor (batch): $(status "$EXP_MEAS_TS_RAW_TEXT_PROCESSOR") | |
| • React SDK (@humeai/voice-react $EVI_APP_VER): evi-next-js-app-router-quickstart: $(status "$EVI_APP") | |
| • Py SDK (hume $EVI_PY_VER): evi-python-quickstart: $(status "$EVI_PY") | |
| • Py SDK (hume $TTS_PY_VER): tts-python-quickstart: $(status "$TTS_PY") | |
| • Py SDK (hume $EXP_MEAS_PY_VER): exp-meas-python-streaming: $(status "$EXP_MEAS_PY_STREAMING") | |
| • .NET SDK (Hume $EVI_DOTNET_VER): evi-dotnet-quickstart: $(status "$EVI_DOTNET") | |
| • .NET SDK (Hume $TTS_DOTNET_VER): tts-dotnet-quickstart: $(status "$TTS_DOTNET") | |
| <${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}|View run>" | |
| payload=$(jq -n --arg text "$(echo "$text" | sed 's/^[[:space:]]*//')" '{text: $text}') | |
| res=$(curl -sS -w "%{http_code}" -o /tmp/slack_resp -X POST -H "Content-Type: application/json" --data "$payload" "$SLACK_WEBHOOK_URL") || true | |
| if [ "$res" = "200" ]; then | |
| echo "Slack notification sent successfully." | |
| echo "## Slack notification sent" >> $GITHUB_STEP_SUMMARY | |
| else | |
| echo "::warning::Slack webhook returned HTTP $res. Check the webhook URL and channel." | |
| echo "## Slack notification failed (HTTP $res)" >> $GITHUB_STEP_SUMMARY | |
| fi | |
| evi-next-js-function-calling: | |
| needs: detect-changes | |
| if: github.event_name == 'workflow_dispatch' || needs.detect-changes.outputs.evi_function_calling == 'true' | |
| runs-on: ubuntu-latest | |
| env: | |
| HUME_API_KEY: ${{ secrets.TEST_HUME_API_KEY }} | |
| HUME_SECRET_KEY: ${{ secrets.TEST_HUME_SECRET_KEY }} | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v6 | |
| - name: Setup pnpm | |
| uses: pnpm/action-setup@v6 | |
| with: | |
| version: 10.20.0 | |
| - name: Setup Node | |
| uses: actions/setup-node@v6 | |
| with: | |
| node-version: 20 | |
| cache: 'pnpm' | |
| cache-dependency-path: evi/evi-next-js-function-calling/pnpm-lock.yaml | |
| - name: Install dependencies | |
| working-directory: evi/evi-next-js-function-calling | |
| run: pnpm install --frozen-lockfile | |
| - name: Build | |
| working-directory: evi/evi-next-js-function-calling | |
| run: pnpm run build | |
| evi-next-js-pages-router-quickstart: | |
| needs: detect-changes | |
| if: github.event_name == 'workflow_dispatch' || needs.detect-changes.outputs.evi_pages_router == 'true' | |
| runs-on: ubuntu-latest | |
| env: | |
| HUME_API_KEY: ${{ secrets.TEST_HUME_API_KEY }} | |
| HUME_SECRET_KEY: ${{ secrets.TEST_HUME_SECRET_KEY }} | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v6 | |
| - name: Setup pnpm | |
| uses: pnpm/action-setup@v6 | |
| with: | |
| version: 10.20.0 | |
| - name: Setup Node | |
| uses: actions/setup-node@v6 | |
| with: | |
| node-version: 20 | |
| cache: 'pnpm' | |
| cache-dependency-path: evi/evi-next-js-pages-router-quickstart/pnpm-lock.yaml | |
| - name: Install dependencies | |
| working-directory: evi/evi-next-js-pages-router-quickstart | |
| run: pnpm install --frozen-lockfile | |
| - name: Build | |
| working-directory: evi/evi-next-js-pages-router-quickstart | |
| run: pnpm run build | |
| evi-react-native: | |
| needs: detect-changes | |
| if: github.event_name == 'workflow_dispatch' || needs.detect-changes.outputs.evi_react_native == 'true' | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v6 | |
| - name: Setup pnpm | |
| uses: pnpm/action-setup@v6 | |
| with: | |
| version: 10.20.0 | |
| - name: Setup Node | |
| uses: actions/setup-node@v6 | |
| with: | |
| node-version: 20 | |
| cache: 'pnpm' | |
| cache-dependency-path: evi/evi-react-native/pnpm-lock.yaml | |
| - name: Install dependencies | |
| working-directory: evi/evi-react-native | |
| run: pnpm install --frozen-lockfile | |
| - name: Lint | |
| working-directory: evi/evi-react-native | |
| run: pnpm run lint | |
| evi-typescript-chat-history: | |
| needs: detect-changes | |
| if: github.event_name == 'workflow_dispatch' || needs.detect-changes.outputs.evi_ts_chat_history == 'true' | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v6 | |
| - name: Setup pnpm | |
| uses: pnpm/action-setup@v6 | |
| with: | |
| version: 10.20.0 | |
| - name: Setup Node | |
| uses: actions/setup-node@v6 | |
| with: | |
| node-version: 20 | |
| cache: 'pnpm' | |
| cache-dependency-path: evi/evi-typescript-chat-history/pnpm-lock.yaml | |
| - name: Install dependencies | |
| working-directory: evi/evi-typescript-chat-history | |
| run: pnpm install --frozen-lockfile | |
| - name: Build | |
| working-directory: evi/evi-typescript-chat-history | |
| run: pnpm run build | |
| evi-typescript-function-calling: | |
| needs: detect-changes | |
| if: github.event_name == 'workflow_dispatch' || needs.detect-changes.outputs.evi_ts_function_calling == 'true' | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v6 | |
| - name: Setup pnpm | |
| uses: pnpm/action-setup@v6 | |
| with: | |
| version: 10.20.0 | |
| - name: Setup Node | |
| uses: actions/setup-node@v6 | |
| with: | |
| node-version: 20 | |
| - name: Install dependencies | |
| working-directory: evi/evi-typescript-function-calling | |
| run: pnpm install --frozen-lockfile | |
| - name: Build | |
| working-directory: evi/evi-typescript-function-calling | |
| run: pnpm run build | |
| evi-typescript-webhooks: | |
| needs: detect-changes | |
| if: github.event_name == 'workflow_dispatch' || needs.detect-changes.outputs.evi_ts_webhooks == 'true' | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v6 | |
| - name: Setup pnpm | |
| uses: pnpm/action-setup@v6 | |
| with: | |
| version: 10.20.0 | |
| - name: Setup Node | |
| uses: actions/setup-node@v6 | |
| with: | |
| node-version: 20 | |
| - name: Install dependencies | |
| working-directory: evi/evi-typescript-webhooks | |
| run: pnpm install --frozen-lockfile | |
| evi-vue-widget: | |
| needs: detect-changes | |
| if: github.event_name == 'workflow_dispatch' || needs.detect-changes.outputs.evi_vue_widget == 'true' | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v6 | |
| - name: Setup pnpm | |
| uses: pnpm/action-setup@v6 | |
| with: | |
| version: 10.20.0 | |
| - name: Setup Node | |
| uses: actions/setup-node@v6 | |
| with: | |
| node-version: 20 | |
| - name: Install dependencies | |
| working-directory: evi/evi-vue-widget | |
| run: pnpm install --frozen-lockfile | |
| - name: Build | |
| working-directory: evi/evi-vue-widget | |
| run: pnpm run build | |
| tts-next-js-agora: | |
| needs: detect-changes | |
| if: github.event_name == 'workflow_dispatch' || needs.detect-changes.outputs.tts_next_agora == 'true' | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v6 | |
| - name: Setup pnpm | |
| uses: pnpm/action-setup@v6 | |
| with: | |
| version: 10.20.0 | |
| - name: Setup Node | |
| uses: actions/setup-node@v6 | |
| with: | |
| node-version: 20 | |
| cache: 'pnpm' | |
| cache-dependency-path: tts/tts-next-js-agora/pnpm-lock.yaml | |
| - name: Install dependencies | |
| working-directory: tts/tts-next-js-agora | |
| run: pnpm install --frozen-lockfile | |
| - name: Build | |
| working-directory: tts/tts-next-js-agora | |
| run: pnpm run build | |
| tts-next-js-vercel-ai-sdk: | |
| needs: detect-changes | |
| if: github.event_name == 'workflow_dispatch' || needs.detect-changes.outputs.tts_next_vercel_ai_sdk == 'true' | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v6 | |
| - name: Setup pnpm | |
| uses: pnpm/action-setup@v6 | |
| with: | |
| version: 10.20.0 | |
| - name: Setup Node | |
| uses: actions/setup-node@v6 | |
| with: | |
| node-version: 20 | |
| cache: 'pnpm' | |
| cache-dependency-path: tts/tts-next-js-vercel-ai-sdk/pnpm-lock.yaml | |
| - name: Install dependencies | |
| working-directory: tts/tts-next-js-vercel-ai-sdk | |
| run: pnpm install --frozen-lockfile | |
| - name: Build | |
| working-directory: tts/tts-next-js-vercel-ai-sdk | |
| run: pnpm run build | |
| tts-typescript-lipsync: | |
| needs: detect-changes | |
| if: github.event_name == 'workflow_dispatch' || needs.detect-changes.outputs.tts_ts_lipsync == 'true' | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v6 | |
| - name: Setup pnpm | |
| uses: pnpm/action-setup@v6 | |
| with: | |
| version: 10.20.0 | |
| - name: Setup Node | |
| uses: actions/setup-node@v6 | |
| with: | |
| node-version: 20 | |
| - name: Install dependencies | |
| working-directory: tts/tts-typescript-lipsync | |
| run: pnpm install --frozen-lockfile | |
| - name: Build | |
| working-directory: tts/tts-typescript-lipsync | |
| run: pnpm run build |