Skip to content

Add opt-in unattended resilience to the Pane Chat orchestrator skill #1856

Add opt-in unattended resilience to the Pane Chat orchestrator skill

Add opt-in unattended resilience to the Pane Chat orchestrator skill #1856

Workflow file for this run

name: Code Quality
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
workflow_dispatch:
jobs:
changes:
name: Detect changed areas
runs-on: ubuntu-latest
outputs:
runpane: ${{ steps.filter.outputs.runpane }}
main: ${{ steps.filter.outputs.main }}
steps:
- name: Checkout code
uses: actions/checkout@v7
- name: Filter changed paths
id: filter
uses: dorny/paths-filter@v3
with:
filters: |
runpane:
- 'packages/runpane/**'
- 'packages/runpane-py/**'
- 'contracts/runpane/**'
- 'shared/types/runpaneOrchestration.ts'
- 'shared/types/generatedRunpaneContract.ts'
- 'scripts/generate-runpane-contract.js'
- 'scripts/sync-runpane-package-versions.js'
- 'scripts/test-runpane-contract.js'
- 'scripts/test-runpane-package-smoke.js'
- 'scripts/fixtures/**'
- '.github/workflows/quality.yml'
main:
- 'main/**'
- 'shared/**'
- 'package.json'
- 'pnpm-lock.yaml'
- 'pnpm-workspace.yaml'
- '.github/workflows/quality.yml'
quality-checks:
name: Quality Checks + Smoke
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v7
- name: Setup pnpm
uses: pnpm/action-setup@v6
- name: Setup Node.js
uses: actions/setup-node@v6
with:
node-version: '22.18.0'
cache: 'pnpm'
- name: Install dependencies
run: pnpm install
- name: Run type checking
run: pnpm typecheck
- name: Run consolidated lint harness
run: pnpm lint
- name: Verify GitHub release publication behavior
run: bash scripts/test-publish-github-release.sh
- name: Rebuild native modules for Node tests
run: pnpm rebuild better-sqlite3-multiple-ciphers
- name: Run main process test suite
run: CI=1 pnpm --filter main exec vitest run
- name: Run frontend unit tests
run: CI=1 pnpm --filter frontend test
- name: Install Playwright browser dependencies
run: pnpm exec playwright install --with-deps chromium
- name: Rebuild native modules for Electron smoke tests
run: pnpm run electron:rebuild
- name: Configure Electron sandbox
run: |
electron_path="$(node -p "require('electron')")"
electron_dir="$(dirname "${electron_path}")"
sudo chown root "${electron_dir}/chrome-sandbox"
sudo chmod 4755 "${electron_dir}/chrome-sandbox"
- name: Verify sandboxed Electron preload
run: pnpm build:main && xvfb-run -a pnpm exec electron scripts/smoke-sandboxed-preload.cjs
- name: Run maintained functional smoke tests
run: xvfb-run -a pnpm test:ci:minimal
env:
PANE_DIR: ${{ runner.temp }}/pane-ci
# Published wrapper CLIs (npm + PyPI). Runs only when wrapper/contract files
# change on a PR; always runs on pushes to main. Each OS is tested once at
# the runtime floors (Node 20 / Python 3.8) and once at current (Node 22 /
# Python 3.13) instead of the full Node x Python cross product.
runpane-wrapper-tests:
name: Runpane Wrapper (${{ matrix.os }}, Node ${{ matrix.node-version }}, Python ${{ matrix.python-version }})
needs: changes
if: github.event_name != 'pull_request' || needs.changes.outputs.runpane == 'true'
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
include:
- { os: ubuntu-latest, node-version: '20.0.0', python-version: '3.8' }
- { os: ubuntu-latest, node-version: '22.18.0', python-version: '3.13' }
- { os: macos-latest, node-version: '20.0.0', python-version: '3.8' }
- { os: macos-latest, node-version: '22.18.0', python-version: '3.13' }
- { os: windows-2022, node-version: '20.0.0', python-version: '3.8' }
- { os: windows-2022, node-version: '22.18.0', python-version: '3.13' }
steps:
- name: Checkout code
uses: actions/checkout@v7
- name: Setup pnpm
uses: pnpm/action-setup@v6
- name: Setup Node.js
uses: actions/setup-node@v6
with:
node-version: ${{ matrix.node-version }}
cache: 'pnpm'
- name: Setup Python
uses: actions/setup-python@v6
with:
python-version: ${{ matrix.python-version }}
- name: Install wrapper dependencies
run: pnpm install --filter runpane --ignore-scripts
- name: Check wrapper package versions
run: node scripts/sync-runpane-package-versions.js --check
- name: Build npm wrapper
run: pnpm --filter runpane build
- name: Run wrapper contract tests
run: node scripts/test-runpane-contract.js
- name: Run package manager smoke tests
run: node scripts/test-runpane-package-smoke.js
# Ubuntu is already covered by quality-checks above; this job only adds the
# other platforms, and only when main-process code (or its deps) changed.
cross-os-main-tests:
name: Main Process Tests (${{ matrix.os }})
needs: changes
if: github.event_name != 'pull_request' || needs.changes.outputs.main == 'true'
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [macos-latest, windows-2022]
steps:
- name: Checkout code
uses: actions/checkout@v7
- name: Setup pnpm
uses: pnpm/action-setup@v6
- name: Setup Node.js
uses: actions/setup-node@v6
with:
node-version: '22.18.0'
cache: 'pnpm'
- name: Install dependencies
run: pnpm install
- name: Run main process type checking
run: pnpm --filter main typecheck
- name: Rebuild native modules for Node tests
run: pnpm rebuild better-sqlite3-multiple-ciphers
- name: Run main process unit tests
run: pnpm --filter main test