Summary
The check CI job fails at the Build pi-fork (type declarations) step on main (and consequently on every PR branch) because pi-fork/packages/ai regenerates src/models.generated.ts from the live models.dev API at build time, and the freshly generated file no longer typechecks against pi-fork's pinned types.
src/models.generated.ts(10662,13): error TS2353: Object literal may only specify
known properties, and '"supportsReasoningEffort"' does not exist in type 'OpenAIResponsesCompat'.
Root cause
The build script runs:
npm run generate-models && npm run generate-image-models && tsgo -p tsconfig.build.json
scripts/generate-models.ts fetches from models.dev on every build (Loaded 633 tool-capable models from models.dev) and overwrites src/models.generated.ts. models.dev has since added a supportsReasoningEffort field that pi-fork's pinned OpenAIResponsesCompat type does not declare — so tsgo rejects the generated literal. Because the file is regenerated from a live external API, this broke retroactively with no code change: the build is non-hermetic.
Evidence / timeline
main CI (workflow CI):
| Date |
Result |
| 2026-08-04 |
✅ success |
| 2026-08-20 (run 32408167817) |
❌ failure — same supportsReasoningEffort error |
The models.dev drift landed in that window. The job dies at this step, so the downstream Typecheck and Test steps never run — meaning harness unit tests are currently not executed in CI at all.
Impact
Proposed fixes (pick one)
- Make the build hermetic — commit
models.generated.ts (and image-models.generated.ts) and drop the live generate-models call from the build script; regenerate deliberately via a separate, reviewed step. (preferred — removes the whole class of failure)
- Widen the pinned type — add
supportsReasoningEffort?: boolean to OpenAIResponsesCompat so generated data validates.
- Pin the models.dev snapshot — vendor a fixed models.dev dataset instead of fetching live at build time.
References
Summary
The
checkCI job fails at theBuild pi-fork (type declarations)step onmain(and consequently on every PR branch) becausepi-fork/packages/airegeneratessrc/models.generated.tsfrom the live models.dev API at build time, and the freshly generated file no longer typechecks against pi-fork's pinned types.Root cause
The build script runs:
scripts/generate-models.tsfetches from models.dev on every build (Loaded 633 tool-capable models from models.dev) and overwritessrc/models.generated.ts. models.dev has since added asupportsReasoningEffortfield that pi-fork's pinnedOpenAIResponsesCompattype does not declare — sotsgorejects the generated literal. Because the file is regenerated from a live external API, this broke retroactively with no code change: the build is non-hermetic.Evidence / timeline
mainCI (workflowCI):supportsReasoningEfforterrorThe models.dev drift landed in that window. The job dies at this step, so the downstream
TypecheckandTeststeps never run — meaning harness unit tests are currently not executed in CI at all.Impact
mainand every PR (e.g. feat: multi-protocol model provider (Anthropic + OpenAI-compat) — support LiteLLM and RITS from main #159), independent of PR content.checkjob aborts before those steps).Proposed fixes (pick one)
models.generated.ts(andimage-models.generated.ts) and drop the livegenerate-modelscall from thebuildscript; regenerate deliberately via a separate, reviewed step. (preferred — removes the whole class of failure)supportsReasoningEffort?: booleantoOpenAIResponsesCompatso generated data validates.References