Skip to content

LOU-V3: run a turn's tool calls in parallel (toolConcurrency) #79

LOU-V3: run a turn's tool calls in parallel (toolConcurrency)

LOU-V3: run a turn's tool calls in parallel (toolConcurrency) #79

Workflow file for this run

name: CI
on:
pull_request:
branches: [main]
jobs:
ci:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
# `undici` (a direct dependency, ^8.11.2 as of LOU-K3's Cloudflare
# Worker LLM provider support) declares an engines requirement of
# node >=22.19.0. Under Node 20, requiring it (indirectly, via
# anything that touches its Cache/fetch internals) throws
# `TypeError: webidl.util.markAsUncloneable is not a function`
# instead of just an EBADENGINE warning - which was crashing
# whichever vitest worker hit it first and cascading into "0 test"
# failures across the rest of that worker's queue. Node 20 was
# already below what a fresh dependency needs; bump to match.
node-version: '22.19.0'
cache: 'npm'
- run: npm ci
- run: npx tsc --noEmit
- run: npm run lint
# Build the root SDK's dist *before* running tests:
# packages/create-loushy-agent/src/template.e2e.test.ts `npm pack`s the
# root SDK's own source tree to install it into a generated project,
# which needs dist/ (package.json's main/module/types) to already
# exist - it was previously built only in the step after tests, so
# this test always failed once it actually got a chance to run.
- run: npm run build
# packages/create-loushy-agent's own tests execFileSync its bin/cli.js,
# which requires ITS dist/index.js to exist too - build it before the
# test step (this is a separate package from the root SDK above).
- run: npm run build --workspace=packages/create-loushy-agent
# Every ```ts block in README.md and docs/*.md must type-check against
# src/ (quick-start also runs against the packed tarball). Needs dist/.
- run: npm run docs:verify-snippets -- --skip-build
- run: npm run test:coverage
# Agent Forge (apps/agent-forge) imports the SDK as
# `@loushy/build-ai-agent` via `file:../..`, i.e. the root dist/ built
# above, so these run after the root build. Its client and server
# suites were never run in CI before, which is how a Stop-then-Run
# resume regression (LOU-U10) landed unnoticed.
- run: npm run typecheck --workspace apps/agent-forge
- run: npm run typecheck:server --workspace apps/agent-forge
- run: npm run test --workspace apps/agent-forge -- --run
- run: npm run test:server --workspace apps/agent-forge
# Dead code, duplication and complexity gate (config: .fallowrc.json).
# Bare `fallow` fails on any finding. Runs after the coverage step because
# its CRAP scores read coverage/coverage-final.json.
- run: npm run fallow