ci: fix TS tests startup failure + desktop canary electron-builder config#4495
Conversation
…nfig - ts_tests: grant packages: write to the ensure_sync_service_image caller job. The reusable workflow pushes to GHCR and a called workflow cannot exceed the caller token, so the top-level packages: read from #4450 was failing every run at startup. - agents_desktop_build: electron-builder 26.8.1 rejects a root `channel` property; move it under publish (-c.publish.channel) to fix the canary. - agents-runtime: promote skills/types to a first-class tsdown entry so its .d.ts is a stable named output, avoiding an intermittent dts race in CI. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
❌ 107 Tests Failed:
View the top 3 failed test(s) by shortest run time
View the full list of 6 ❄️ flaky test(s)
To view more test analytics, go to the Test Analytics Dashboard |
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude Code ReviewSummaryIteration 5 adds one new commit ( What's Working Well
Issues FoundCritical (Must Fix)None. Important (Should Fix)None. Suggestions (Nice to Have)
Issue ConformanceNo linked issue, acceptable for a CI/build hotfix of failures observed on Note on red CI (not caused by this PR)The codecov failures (e.g. Previous Review Status
Review iteration: 5 | 2026-06-03 |
Electric Agents Mobile BuildLocal mobile checks ran for commit The EAS Android preview build was skipped because the |
… by TS CI These type errors were sitting on main, hidden while the TS suite was startup-failing. Reviving it (the ts_tests permission fix in this PR) exposes them: - pi-adapter: type the merged assistant `content` so the array spreads into prevContent typecheck (was unknown[], from #4449). - webhook-signature: node:crypto no longer exports JsonWebKey; cast the jwk input to JsonWebKeyInput instead. - sandbox/docker: re-export isDockerAvailable from the docker.ts file so the `sandbox/docker` subpath resolves it under the tsconfig path wildcard used by dependents (electric-ax, agents-server-ui, conformance-tests). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
It was failing at startup ( Because the suite was dark, it's now surfacing pre-existing breakage that landed on
tl;dr: merging this turns TS CI back on; expect |
…ime source agents-server-ui typechecks agents-runtime's source via its tsconfig path mapping. Since #4369 that source includes node-using sandbox code (node:child_process), but agents-server-ui restricted `types` to vite/client and had no @types/node, so on CI's isolated install ChildProcess lost its EventEmitter methods. Add @types/node and "node" to the types array. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…t source Cleaner replacement for the previous @types/node approach. The UI is a browser package and shouldn't typecheck agents-runtime's node-only sandbox source. Only the browser-safe `client` entry stays source-mapped (matching the vite alias); the index resolves through package exports to the built .d.ts, so its node-using re-exports sit behind skipLibCheck instead of leaking into the UI. No node types needed. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
What
Started as a fix for three CI failures observed on
main; reviving the TS suite (the first fix) then surfaced pre-existing typecheck breakage that had been hidden while CI was dark, which this PR also cleans up.CI / build fixes
packages: writeon theensure_sync_service_imagecaller-c.channel→-c.publish.channelagents-runtimedts raceskills/typesto a tsdown entryTypecheck fixes (pre-existing breakage exposed by re-enabling TS CI)
agents-runtime/src/pi-adapter.tscontenttypedunknown[](#4449)agents-runtime/src/webhook-signature.tsnode:cryptono longer exportsJsonWebKeyJsonWebKeyInputagents-runtime/src/sandbox/docker.tsisDockerAvailablenot on the subpath the tsconfig wildcard resolveselectric-ax/ conformance)agents-server-ui/tsconfig.jsonpaths.d.ts; keep only the browser-safeclientsource-mapped — UI stays node-freeWhy (CI fixes)
packages: read, butts_tests.ymlis the sole caller of the reusableensure_sync_service_image.yml, whose job requestspackages: writeto push the sync-service image to GHCR. A called reusable workflow cannot elevate permissions above the caller's token, so GitHub failed the entire run at startup — meaning the TS test suite had not run on any commit (main or PR) since. Fixed by grantingpackages: writeonly on the caller job, keeping the top-level token atreadper ci: harden privileged PR workflows #4450's hardening.unknown property 'channel'.channelis not a valid root property — moved under the publish provider (-c.publish.channel=beta, alongside the existing-c.publish.url).agents-runtimedts build intermittently fails withUNLOADABLE_DEPENDENCY: Could not load src/skills/types.d.tsunder CI's parallel build. Promotingsrc/skills/types.tsto a first-class tsdown entry makes its.d.tsa stable named output instead of a raced chunk.Validation
agents-runtime,electric-ax,agents-server-ui,agents-server-conformance-tests) verified green via CI-faithful isolated (--frozen-lockfile) install + build + typecheck.Not in scope (pre-existing, flagged separately)
runtime-dsl.test.ts(92 tests,401 UNAUTHORIZED: Principal is not allowed to spawn) — from feat(agents-server): add permission enforcement #4475's permission enforcement (@icehaunter); test fixtures need spawn permission seeded. Not a build/type issue.agents-mcpdts-race flake in the conformance build (same class as theskills/typesone).Note for reviewer
The canary maps channel input
canary→ publish channelbeta. Preserved the existing value, but flagging in case it should becanary.🤖 Generated with Claude Code