Skip to content

feat(dashboard): show observed model on learning details #516

feat(dashboard): show observed model on learning details

feat(dashboard): show observed model on learning details #516

Workflow file for this run

name: integration
on:
push:
branches: [main]
pull_request:
branches: [main]
workflow_dispatch:
concurrency:
group: integration-${{ github.ref }}
cancel-in-progress: true
jobs:
lockfile:
name: standalone lockfile
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: '3.12'
- uses: astral-sh/setup-uv@v3
- name: Check standalone plugin lock
run: |
make check-locked-project-version
make check-standalone-lock
pytest:
name: pytest suite
runs-on: ubuntu-latest
timeout-minutes: 25
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: '22'
- uses: actions/setup-python@v5
with:
python-version: '3.12'
- uses: astral-sh/setup-uv@v3
- name: Install Node test dependencies
run: npm ci
- name: Install test dependencies
run: uv sync --project plugin --group dev --python 3.12 --locked
# plugin/vendor/reflexio is a pack-time artifact and is gitignored, so a
# fresh checkout has none. The install-flow tests need it: a tarball
# without the vendored runtime installs a plugin whose backend cannot
# start, which Setup now correctly rejects. Vendor the locked commit so
# those tests exercise what users actually receive.
- name: Vendor locked Reflexio (install-flow tests need the release bundle)
run: |
repo=$(python3 -c "import json;print(json.load(open('reflexio.lock.json'))['repo'])")
commit=$(python3 -c "import json;print(json.load(open('reflexio.lock.json'))['commit'])")
git clone --quiet "$repo" "$RUNNER_TEMP/reflexio-src"
git -C "$RUNNER_TEMP/reflexio-src" checkout --quiet "$commit"
python3 scripts/vendor-reflexio.py \
--reflexio-path "$RUNNER_TEMP/reflexio-src" --bundle-only --write
- name: Run pytest suite
run: uv --project plugin run pytest tests -q
dependency-platforms:
name: dependency platforms (${{ matrix.os }})
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [macos-latest, windows-latest]
timeout-minutes: 15
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: '22'
- uses: actions/setup-python@v5
with:
python-version: '3.12'
- uses: astral-sh/setup-uv@v3
- name: Check Python dependency lock
shell: bash
run: |
if [ "$RUNNER_OS" = "macOS" ]; then
if [ "$(uname -m)" != "arm64" ]; then
echo "::warning::Skipping macOS runtime sync check because this runner is not Apple Silicon"
exit 0
fi
uv sync --project plugin --locked --dry-run --python 3.12
else
uv sync --project plugin --locked --dry-run --python 3.12 --python-platform x86_64-pc-windows-msvc
fi
- name: Check dashboard build
shell: bash
run: |
cd plugin/dashboard
npm ci
npm run build
integration:
name: integration (${{ matrix.os }}, node ${{ matrix.node }})
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-latest]
node: ['20', '22']
timeout-minutes: 10
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node }}
- uses: actions/setup-python@v5
with:
python-version: '3.12'
- uses: astral-sh/setup-uv@v3
- name: Install Claude Code CLI
run: npm install -g @anthropic-ai/claude-code@stable
- name: Run integration test
env:
# Plugin install is local-config only and shouldn't hit the API,
# but a dummy key prevents a hang at any first-launch login prompt.
# Real SessionStart-via-session testing would need a real key (see
# tests/integration/NOTES.md).
ANTHROPIC_API_KEY: dummy-for-plugin-install
run: bash tests/integration/integration.sh all