Skip to content

docs(readme): add AI-install callout at top of Install section #176

docs(readme): add AI-install callout at top of Install section

docs(readme): add AI-install callout at top of Install section #176

Workflow file for this run

name: CI
on: [push, pull_request]
env:
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: 'true'
jobs:
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: astral-sh/setup-uv@v3
with:
enable-cache: true
cache-dependency-glob: "uv.lock"
- run: uv python install 3.13
- run: uv sync --all-extras
- name: Lint
run: uv run ruff check
- name: Type check
run: uv run mypy src
test:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
python-version: ["3.12", "3.13"]
steps:
- uses: actions/checkout@v4
- uses: astral-sh/setup-uv@v3
with:
enable-cache: true
cache-dependency-glob: "uv.lock"
- run: uv python install ${{ matrix.python-version }}
- run: uv sync --all-extras --python ${{ matrix.python-version }}
- name: Test
env:
TOKEN_GOAT_NO_WORKER_SPAWN: "1"
TOKEN_GOAT_HARNESS_OVERRIDE: "claudecode"
run: uv run pytest -n auto -m "not slow" -rfER --tb=short
test-windows:
# Non-gating Windows compat check. The Windows-2022 runner produces
# transient C-extension crashes (STATUS_ILLEGAL_INSTRUCTION from AVX2
# mismatches in fastembed/sqlite-vec) at ~40% rate per attempt, requiring
# a serial retry loop. Linux is the primary gate; this job surfaces
# Windows-specific regressions without blocking the build.
runs-on: windows-2022
continue-on-error: true
steps:
- uses: actions/checkout@v4
- uses: astral-sh/setup-uv@v3
with:
enable-cache: true
cache-dependency-glob: "uv.lock"
- run: uv python install 3.13
- run: uv sync --all-extras
- name: Test
env:
TOKEN_GOAT_NO_WORKER_SPAWN: "1"
TOKEN_GOAT_HARNESS_OVERRIDE: "claudecode"
run: |
for attempt in 1 2 3; do
echo "=== Test attempt $attempt of 3 ==="
uv run pytest -n 0 -m "not slow" -rfER --tb=short && exit 0
echo "=== Attempt $attempt failed; retrying ==="
done
exit 1
shell: bash
- name: Test (slow tier)
continue-on-error: true
env:
TOKEN_GOAT_NO_WORKER_SPAWN: "1"
TOKEN_GOAT_HARNESS_OVERRIDE: "claudecode"
run: uv run pytest -m "slow" -rfER --tb=short
- name: Kill leftover detached worker daemons
if: always()
run: |
Get-CimInstance Win32_Process |
Where-Object { $_.CommandLine -like '*token_goat*worker*--daemon*' } |
ForEach-Object {
Write-Host "killing leftover worker pid=$($_.ProcessId)"
Stop-Process -Id $_.ProcessId -Force -ErrorAction SilentlyContinue
}