Repository navigation
LOU-V3: run a turn's tool calls in parallel (toolConcurrency) #79
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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 |