feat(advisor): executor+advisor strategies on any Chat wire (tool_call default, review_gate) #609
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: Getting Started | |
| # Executable coverage for docs/getting_started.md. | |
| # | |
| # Fails when the guide drifts from the product — renamed CLI subcommand, | |
| # YAML schema change, broken Python snippet, /health regression, etc. The | |
| # exercise lives in tests/getting_started/ so it reproduces locally with | |
| # `uv run pytest tests/getting_started`. | |
| on: | |
| pull_request: | |
| paths: | |
| - "docs/getting_started.md" | |
| - "switchyard/**" | |
| - "switchyard_rust/**" | |
| - "tests/getting_started/**" | |
| - "pyproject.toml" | |
| - "uv.lock" | |
| - ".github/workflows/getting-started.yml" | |
| push: | |
| branches: [main] | |
| paths: | |
| - "docs/getting_started.md" | |
| - "switchyard/**" | |
| - "switchyard_rust/**" | |
| - "tests/getting_started/**" | |
| - "pyproject.toml" | |
| - "uv.lock" | |
| - ".github/workflows/getting-started.yml" | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.ref }} | |
| cancel-in-progress: ${{ github.event_name == 'pull_request' }} | |
| permissions: | |
| contents: read | |
| jobs: | |
| getting-started: | |
| name: Run getting-started flow | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: astral-sh/setup-uv@v6 | |
| with: | |
| python-version: "3.12" | |
| enable-cache: true | |
| cache-dependency-glob: "uv.lock" | |
| - name: Install | |
| run: uv sync --locked | |
| - name: Exercise the guide | |
| # Single invocation: pytest picks up tests/getting_started/ (CLI, YAML, | |
| # serve lifecycle) AND --markdown-docs execs the Python snippet from | |
| # the guide. The local mock-upstream fixture lives in | |
| # tests/getting_started/conftest.py so it only loads when collecting | |
| # from that subtree. | |
| run: uv run pytest tests/getting_started --markdown-docs docs/getting_started.md -v | |
| env: | |
| # The server-lifecycle test serves a type: model route pointed at a | |
| # local in-process mock OpenAI upstream; these keys are never sent | |
| # upstream. Stub so the bundle loader's env-var resolution doesn't | |
| # fail on a clean runner. | |
| OPENAI_API_KEY: sk-test | |
| NVIDIA_API_KEY: nvapi-test | |
| ANTHROPIC_API_KEY: sk-ant-test |