fix feedback tune scorer judge prompt #116
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: Tests | |
| # The engine and judge-core, the Go CLI, and the engine again against Postgres - the backend where | |
| # concurrent writes actually interleave (engine/src/test/dialect.integration.test.ts). | |
| on: | |
| push: | |
| branches: [main] | |
| pull_request: | |
| workflow_dispatch: {} | |
| # Read-only: nothing here publishes. Same explicit block release.yml and publish-judge-core.yml | |
| # already set, and what CodeQL's workflow-permissions check asks for. | |
| permissions: | |
| contents: read | |
| jobs: | |
| typescript: | |
| name: engine + judge-core | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 | |
| - name: Set up Node.js | |
| uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 | |
| with: | |
| node-version: 24.x | |
| cache: yarn | |
| cache-dependency-path: yarn.lock | |
| - name: Install workspace dependencies | |
| run: yarn install --frozen-lockfile | |
| # The engine imports judge-core through its "exports" map, so it has to be built first. | |
| - name: Build judge-core | |
| run: yarn workspace @agentx/judge-core build | |
| - name: Typecheck | |
| run: | | |
| yarn workspace @agentx/judge-core typecheck | |
| yarn workspace @agentx/engine typecheck | |
| yarn workspace @agentx/eval typecheck | |
| # Async discipline the compiler can't enforce: no-floating-promises et al. - see | |
| # engine/eslint.config.mjs for why the rule set is deliberately narrow. | |
| - name: Lint engine | |
| run: yarn workspace @agentx/engine lint | |
| - name: Test judge-core | |
| run: yarn workspace @agentx/judge-core test | |
| # The TypeScript CI SDK pins the /custom-agent-evaluations wire contract from the | |
| # consumer side (stub-server tests, no engine needed). | |
| - name: Test @agentx/eval | |
| run: yarn workspace @agentx/eval build && yarn workspace @agentx/eval test | |
| # The integration suites boot the real engine per file, so this outruns the job default. | |
| # Coverage is a RATCHET, not a target: c8 merges the spawned engine processes' V8 coverage | |
| # (they exit gracefully on SIGTERM, so it flushes) and the floors sit under the measured | |
| # baseline (45% lines / 30% functions at introduction). Raise the floors when coverage | |
| # rises; never lower them to make a PR pass. | |
| - name: Test engine (with coverage ratchet) | |
| run: yarn workspace @agentx/engine test:coverage | |
| timeout-minutes: 20 | |
| postgres: | |
| name: engine on Postgres | |
| runs-on: ubuntu-latest | |
| services: | |
| postgres: | |
| image: postgres:16-alpine | |
| env: | |
| POSTGRES_PASSWORD: agentx | |
| POSTGRES_DB: agentx | |
| ports: | |
| - 5432:5432 | |
| options: >- | |
| --health-cmd pg_isready | |
| --health-interval 10s | |
| --health-timeout 5s | |
| --health-retries 5 | |
| steps: | |
| - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 | |
| - name: Set up Node.js | |
| uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 | |
| with: | |
| node-version: 24.x | |
| cache: yarn | |
| cache-dependency-path: yarn.lock | |
| - name: Install workspace dependencies | |
| run: yarn install --frozen-lockfile | |
| - name: Build judge-core | |
| run: yarn workspace @agentx/judge-core build | |
| # AGENTX_TEST_DB_URL un-skips the Postgres suites; they create and drop their own databases. | |
| - name: Test engine against Postgres | |
| run: yarn workspace @agentx/engine test | |
| timeout-minutes: 20 | |
| env: | |
| AGENTX_TEST_DB_URL: postgres://postgres:agentx@localhost:5432/agentx | |
| cli: | |
| name: cli | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 | |
| # Tag, not a pinned SHA: the SHAs above are carried over from this repo's other workflows, | |
| # and this action is new here. cli/ has no dependencies, so there is no go.sum to cache on. | |
| - name: Set up Go | |
| uses: actions/setup-go@v7 | |
| with: | |
| go-version-file: cli/go.mod | |
| cache: false | |
| # gofmt is the whole formatting standard for Go, so "we all run gofmt" costs nothing to | |
| # enforce and stops the first unformatted file from turning every later diff into noise. | |
| # `gofmt -l` lists offenders and exits 0 either way, hence the explicit emptiness check. | |
| - name: Format | |
| working-directory: cli | |
| run: | | |
| unformatted=$(gofmt -l .) | |
| if [ -n "$unformatted" ]; then | |
| echo "These files are not gofmt-clean. Run: gofmt -w ." >&2 | |
| echo "$unformatted" >&2 | |
| gofmt -d . | |
| exit 1 | |
| fi | |
| - name: Vet | |
| working-directory: cli | |
| run: go vet ./... | |
| # -race, because the CLI's whole job is process supervision: cmd/server.go spawns the engine | |
| # and juggles its stdio, signals, and shutdown across goroutines, which is exactly the shape | |
| # of code where a data race hides behind a passing test. The suite runs in seconds, so the | |
| # detector's overhead buys a real class of bug for no meaningful time. | |
| - name: Test | |
| working-directory: cli | |
| run: go test -race ./... | |
| shell: | |
| name: shell scripts | |
| # install.sh is piped straight into bash from a curl one-liner in the README, and build.sh and | |
| # scripts/ are what a contributor runs to produce a real distribution. A quoting bug in any of | |
| # them fails on someone else's machine, after the merge. shellcheck is preinstalled on the | |
| # GitHub runner image, so this is a check with no install step and no new action to pin. | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 | |
| - name: Shellcheck | |
| run: shellcheck install.sh build.sh scripts/*.sh | |
| binary: | |
| name: compiled binary | |
| # The suites above run under tsx, which storage/db.ts serves with better-sqlite3. The artifact | |
| # release.yml ships is `bun build --compile`, which takes the bun:sqlite branch instead - a | |
| # driver nothing else here covers. Smoke-only: boot, write, read, shut down. | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 | |
| - name: Set up Node.js | |
| uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 | |
| with: | |
| node-version: 24.x | |
| cache: yarn | |
| cache-dependency-path: yarn.lock | |
| - name: Set up Bun | |
| uses: oven-sh/setup-bun@0c5077e51419868618aeaa5fe8019c62421857d6 | |
| with: | |
| bun-version: "1.3.14" | |
| - name: Install workspace dependencies | |
| run: yarn install --frozen-lockfile | |
| # `bun build` resolves @agentx/judge-core through its dist/, which a fresh checkout lacks. | |
| - name: Build judge-core | |
| run: yarn workspace @agentx/judge-core build | |
| - name: Compile the engine | |
| run: bun build engine/src/index.ts --compile --outfile /tmp/agentx-engine | |
| - name: Smoke-test the binary | |
| run: ./scripts/smoke-binary.sh /tmp/agentx-engine |