Skip to content

Tighten cua-agent design seams: typed translator, declared channels #97

Tighten cua-agent design seams: typed translator, declared channels

Tighten cua-agent design seams: typed translator, declared channels #97

Workflow file for this run

name: CI
on:
push:
branches: [main]
pull_request:
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
unit:
runs-on: ubuntu-latest
timeout-minutes: 15
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 22
cache: npm
- run: npm ci
- run: npm run build --workspace @onkernel/cua-ai
- name: Unit tests
run: npm test --workspace @onkernel/cua-ai
- name: Pack tarball
run: npm pack --workspace @onkernel/cua-ai --pack-destination "$RUNNER_TEMP"
- name: ESM import smoke test
run: |
mkdir -p "$RUNNER_TEMP/esm-smoke"
cd "$RUNNER_TEMP/esm-smoke"
npm init -y
npm install "$RUNNER_TEMP"/onkernel-cua-ai-*.tgz
node --input-type=module -e "import('@onkernel/cua-ai').then((m) => { if (typeof m.getCuaModel !== 'function') process.exit(1); })"
agent-unit:
runs-on: ubuntu-latest
timeout-minutes: 15
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 22
cache: npm
- run: npm ci
- run: npm run build --workspace @onkernel/cua-ai
- name: Agent unit tests
run: npm test --workspace @onkernel/cua-agent -- --exclude "**/*.live.test.ts"
integration:
runs-on: ubuntu-latest
timeout-minutes: 15
# Only run on the main repo (not forks) so secrets are available.
# Skip draft PRs; still run on every commit to non-draft PRs and on main pushes.
if: github.event_name == 'push' || (github.event.pull_request.head.repo.full_name == github.repository && !github.event.pull_request.draft)
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 22
cache: npm
- run: npm ci
- run: npm run build --workspace @onkernel/cua-ai
- name: Integration tests
env:
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
GOOGLE_API_KEY: ${{ secrets.GOOGLE_API_KEY }}
TZAFON_API_KEY: ${{ secrets.TZAFON_API_KEY }}
YUTORI_API_KEY: ${{ secrets.YUTORI_API_KEY }}
run: npm run test:integration --workspace @onkernel/cua-ai
agent-e2e:
runs-on: ubuntu-latest
timeout-minutes: 45
# Only run on the main repo (not forks) so secrets are available.
# Skip draft PRs; still run on every commit to non-draft PRs and on main pushes.
if: github.event_name == 'push' || (github.event.pull_request.head.repo.full_name == github.repository && !github.event.pull_request.draft)
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 22
cache: npm
- run: npm ci
- run: npm run build --workspace @onkernel/cua-ai
- run: npm run build --workspace @onkernel/cua-agent
- name: Agent live smoke tests (all providers)
env:
CUA_E2E_LIVE: "1"
KERNEL_API_KEY: ${{ secrets.KERNEL_API_KEY }}
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
GOOGLE_API_KEY: ${{ secrets.GOOGLE_API_KEY }}
TZAFON_API_KEY: ${{ secrets.TZAFON_API_KEY }}
YUTORI_API_KEY: ${{ secrets.YUTORI_API_KEY }}
run: npm test --workspace @onkernel/cua-agent -- test/e2e.live.test.ts