Skip to content

feat(daemon): typed-output curator over the subscription SDK (Pydantic-AI ergonomics, no metered API) #44

feat(daemon): typed-output curator over the subscription SDK (Pydantic-AI ergonomics, no metered API)

feat(daemon): typed-output curator over the subscription SDK (Pydantic-AI ergonomics, no metered API) #44

Workflow file for this run

name: ci
on:
push:
branches: [main]
pull_request:
concurrency:
group: ci-${{ github.ref }}
cancel-in-progress: true
jobs:
build:
name: ${{ matrix.package }}
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
include:
- package: daemon
python-version: "3.10"
- package: tools/search
python-version: "3.10"
- package: src
python-version: "3.12"
defaults:
run:
working-directory: ${{ matrix.package }}
steps:
- uses: actions/checkout@v4
- uses: astral-sh/setup-uv@v6
with:
enable-cache: true
cache-dependency-glob: ${{ matrix.package }}/uv.lock
- name: Install dependencies
run: uv sync --locked
- name: Lint (ruff)
run: uv run ruff check .
- name: Format check (ruff)
run: uv run ruff format --check .
- name: Type check (pyright)
run: uv run pyright
- name: Tests (pytest)
run: uv run pytest
ci-success:
# Single required check for branch protection. It goes green only when
# every job above has succeeded, so protection on `main` can require
# just this one context — adding/removing CI jobs never means editing
# the protection settings. `if: always()` makes it run (and report
# red) even when `build` fails or is cancelled, so it can't be skipped
# past a failing matrix.
name: ci-success
if: always()
needs: [build]
runs-on: ubuntu-latest
steps:
- name: Require all CI jobs to have passed
run: |
result="${{ needs.build.result }}"
echo "build matrix result: $result"
test "$result" = "success"