What the agent does
For an Angular app like realworld-apps/angular-realworld-example-app, the agent reads package.json, angular.json, bun.lock and the app bootstrap before upgrading. This Conduit client already sits on @angular/core and the related framework packages at 21.2.12, with @angular/cli and @angular/build at 21.2.10, TypeScript ~5.9.3, and engines.node >=20.11.1. It uses bun as the install tool (bun.lock, setup script runs bun install), Vitest for unit tests (npm test → vitest) and Playwright for e2e (test:e2e). app.config.ts enables provideZonelessChangeDetection, provideRouter, provideHttpClient with apiInterceptor, tokenInterceptor and errorInterceptor, plus a window.conduit_debug helper for tests.
The upgrade path is ng update against the latest compatible Angular releases, then bun install to refresh the lockfile. The agent applies migrations the CLI writes (template or config mechanical edits) and reviews them instead of discarding the diff. Spec files under src/app (jwt.service.spec.ts, user.service.spec.ts, articles.service.spec.ts and siblings) and vitest.config.ts stay in play. If the tree is already on the newest patch line, the agent still records ng update’s output, applies any remaining peer fixes and says clearly that no major framework bump was available.
Validation uses the repository’s own commands: bun run test (or the package script test), bun run build (ng build), and optionally bun run test:e2e when the sandbox can serve the app and browsers are installed. A bump that fails build or unit tests is reverted for that package set; the PR description lists the attempted version, the failing command and the reason it was left out. Unrelated refactors, RxAngular major jumps without need, or marked dependency swaps are out of scope.
Standalone feature folders under src/app/features and core auth services are only edited when a migration or a compile error demands it. The agent opens one pull request with a line per successful bump and a separate section for skipped upgrades.
Start it with one API call
POST https://api.prix.dev/o/{org}/sessions with this body:
{
"agent": "claude",
"input": "Upgrade Angular to the latest compatible versions with ng update, run the Angular test and build commands, and open a pull request with one line per bump. Leave out any upgrade that breaks the build or tests and say why. Apply the ng update migrations and include their changes.",
"resources": [
{
"url": "https://github.com/your-org/your-app"
}
]
}- Get an API key. In the console, open Settings, then API keys, and create a key for your org. Send it in the Authorization header as a Bearer token.
- Send the request. POST the body in request.json to https://api.prix.dev/o/{org}/sessions, with your repository as the resources URL. The run starts in its own cloud sandbox.
- Read what came back. Follow the run on its live stream or wait for the run.completed webhook, then read the result and its trajectory.
What comes back
The pull request updates package.json and bun.lock (and any files ng update migrations touch). The description is a changelog of bumps that passed bun run test and bun run build, plus skipped bumps with the failing command and error summary. If the fixture was already current, the PR may be limited to peer cleanups or documentation of that fact rather than a false major jump.
A reviewer checks that zoneless bootstrap and HTTP interceptors still compile, that Vitest specs under src/app still run, and that no drive-by feature edits landed. PR checks and the session transcript (ng update, test, build output) are the evidence. Read them via GET /o/{org}/sessions/{id}.
Run it on every weekly dependency window
Run a Monday scheduler that POSTs this body for each Angular repository with resources set to that repo. Use a unique Idempotency-Key per repo per week.
Collect run.completed webhooks, open the PR URLs in your review queue, and skip repositories whose previous upgrade PR is still unmerged so you do not stack conflicting lockfile edits.
The use case this job follows, with its automation and trigger: Upgrade dependencies weekly.
Why run it on Rush?
ng update plus a full Vitest and production build needs a clean Node toolchain and room to revert failed bumps. The sandbox isolates that from the developer’s global Angular CLI and keeps every command’s output in the transcript.
Leaving broken bumps out of the PR avoids the red Dependabot-style pull request nobody merges. Several apps can upgrade in parallel under the key’s concurrency limit, each with its own proof.
Frequently asked questions
The example app is already on Angular 21. Does the agent still run?
Yes. It runs ng update, applies any remaining migrations or peer updates, re-runs test and build, and reports when no newer framework release exists instead of inventing a downgrade or fake major bump.
Does it use npm, yarn or bun?
This fixture ships bun.lock and a setup script that calls bun install. The agent follows that lockfile. On an npm- or pnpm-based Angular app it would follow that repo’s lockfile instead.
Are Playwright e2e tests required to pass?
Unit tests and ng build are the bar named in the prompt. The agent may run test:e2e when browsers are available; if e2e is blocked in the sandbox it says so and does not hide that gap behind a green unit suite.
Will it upgrade RxAngular and marked in the same PR?
Only when ng update or peer dependency resolution requires it, or when a bump is needed to compile. Optional library majors that are not required stay out unless they fail closed with an explanation.