mirror of
https://github.com/rowboatlabs/rowboat.git
synced 2026-06-15 20:05:16 +02:00
ci(code-mode): cross-platform smoke matrix + one-shot diagnose script
- x-code-mode-smoke.yml: on apps/x PRs, package the app on mac/linux/windows and run acp-smoke.mjs, which asserts (1) adapters staged + native engines stripped, (2) each staged adapter boots from the packaged app via the packaged Electron binary and answers ACP initialize, (3) a fake engine that launches but never responds is converted into a clear startup-timeout error instead of hanging forever (the silent-hang class) - diagnose-code-mode.sh: colleagues run one command and send one blob (engine versions/paths/types, login-shell vs GUI PATH, auth presence, stream-json probe, newest SDK debug log) — one round trip instead of five - forge.config.cjs: only sign/notarize when APPLE_ID is set, so unsigned local mac builds and the CI smoke matrix can package deterministically - client.ts: startup timeout overridable via ROWBOAT_ACP_STARTUP_TIMEOUT_MS (CI uses 10s; also an escape hatch for slow MCP-heavy setups) Verified on Windows: all smoke checks pass, including the end-to-end fake-hanging-engine timeout (fails in 10.0s with the stderr-enriched error).
This commit is contained in:
parent
ae362f50f4
commit
d2d1814bea
5 changed files with 371 additions and 13 deletions
49
.github/workflows/x-code-mode-smoke.yml
vendored
Normal file
49
.github/workflows/x-code-mode-smoke.yml
vendored
Normal file
|
|
@ -0,0 +1,49 @@
|
|||
name: Code Mode Smoke
|
||||
|
||||
# Packages the Electron app on all three OSes and smoke-tests code mode's
|
||||
# cross-platform plumbing (adapter staging, engine stripping, ACP handshake,
|
||||
# silent-hang startup timeout) — the failure class that previously only
|
||||
# surfaced on a colleague's machine. See apps/x/apps/main/scripts/acp-smoke.mjs.
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
paths:
|
||||
- 'apps/x/**'
|
||||
- '.github/workflows/x-code-mode-smoke.yml'
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
smoke:
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
os: [macos-latest, ubuntu-latest, windows-latest]
|
||||
runs-on: ${{ matrix.os }}
|
||||
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v6
|
||||
|
||||
- name: Setup pnpm
|
||||
uses: pnpm/action-setup@v6
|
||||
with:
|
||||
version: 10
|
||||
|
||||
- name: Setup Node.js
|
||||
uses: actions/setup-node@v6
|
||||
with:
|
||||
node-version: 24.15.0
|
||||
cache: 'pnpm'
|
||||
cache-dependency-path: 'apps/x/pnpm-lock.yaml'
|
||||
|
||||
- name: Install dependencies
|
||||
run: pnpm install --frozen-lockfile
|
||||
working-directory: apps/x
|
||||
|
||||
- name: Package app (unsigned)
|
||||
run: npm run package
|
||||
working-directory: apps/x/apps/main
|
||||
|
||||
- name: Run code-mode smoke test
|
||||
run: node scripts/acp-smoke.mjs
|
||||
working-directory: apps/x/apps/main
|
||||
Loading…
Add table
Add a link
Reference in a new issue