Skip to content

fix(mcp): the modern era still answers two methods 2026-07-28 removed #548

fix(mcp): the modern era still answers two methods 2026-07-28 removed

fix(mcp): the modern era still answers two methods 2026-07-28 removed #548

Workflow file for this run

name: CI
on:
push:
branches: [main]
pull_request:
branches: [main]
permissions:
contents: read
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
- name: Set up Node.js
uses: actions/setup-node@v7
with:
node-version: 22
cache: npm
- name: Install dependencies
run: npm ci
- name: Lint (ESLint)
run: npm run lint
- name: Format check (Prettier)
run: npm run format:check
# The hand-maintained discovery files drift silently otherwise: SKILL.md's
# page count / category list / MCP revision against the repo, and both
# files' pinned integrity (sha256 digest, detached JWS). Neither needs a
# private key — they only verify what's committed.
- name: Agent Skill drift check
run: npm run check:skill
- name: Type-check (Astro)
run: npx astro check
- name: Build
run: npm run build
env:
NODE_ENV: production
- name: Upload build artefact
uses: actions/upload-artifact@v7
with:
name: dist
path: dist
retention-days: 7
# The MCP Worker in mcp/ is a separate package with its own lockfile, so the
# job above never touches it: the root `npm ci` doesn't install it, and both
# eslint.config.js and .prettierignore exclude mcp/ deliberately. Its
# type-check had never run in CI either. A separate job so a Worker failure
# reads distinctly from a site-build failure.
mcp:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
- name: Set up Node.js
uses: actions/setup-node@v7
with:
# ts-resolve-hook.mjs needs registerHooks, added in 22.15. The `22`
# the job above uses would satisfy that today, but pinning the floor
# here keeps a runner rolling back from failing at link time with
# nothing to point at.
node-version: 22.15
cache: npm
cache-dependency-path: mcp/package-lock.json
- name: Install MCP dependencies
run: npm ci
working-directory: mcp
# src/data.json is generated rather than committed, and src/index.ts
# imports it — so tsc cannot resolve the module until the manifest
# exists. `npm test` regenerates it as well (pretest), but the
# type-check has no such hook and runs first.
- name: Build data manifest
run: npm run build:data
working-directory: mcp
- name: Type-check (tsc)
run: npm run typecheck
working-directory: mcp
- name: Test (node:assert)
run: npm test
working-directory: mcp