Thanks for contributing to finalrun-agent.
git clone https://github.com/final-run/finalrun-agent.git
cd finalrun-agent
npm ciPublished npm package:
npm install -g @finalrun/finalrun-agentBuild the workspace packages:
npm run buildRun the full test suite:
npm testRun linting and formatting checks:
npm run lint
npm run format:checkpackages/common: shared models, types, and utilitiespackages/device-node: device detection, gRPC communication, and platform-specific device runtime logicpackages/goal-executor: AI planning and action executionpackages/cli: published CLI packagepackages/report-web: local report UIdrivers/android: Android driver sourcesdrivers/ios: iOS simulator driver sourcesresources/: generated runtime assets used by local runsproto/: shared protobuf definitions
Build both native drivers:
npm run build:driversBuild a single platform:
npm run build:drivers:android
npm run build:drivers:iosIf your change touches driver setup, installation, or host checks, include the relevant native build and local verification steps in your PR notes.
Contributions authored with AI coding agents must follow the Fab Kit workflow (intake → spec → tasks → apply → review → hydrate → ship → review-PR).
Before opening a PR, the change must clear all four SRAD dimensions — Scope, Reversibility, Alternatives, and Disambiguation — and must reach a Confident or Certain grade with no Unresolved dimension; any remaining Tentative assumptions must be surfaced in the PR description.
- Keep PRs focused and scoped to a single change or release task.
- Update tests and docs when behavior or public usage changes.
- Include the commands you ran to validate the change.
- Call out any platform-specific caveats for Android, iOS, or host tooling.
- Avoid bundling unrelated refactors into release or bug-fix PRs.
- TypeScript is the primary implementation language across the repo.
- Use the repo ESLint and Prettier configuration before opening a PR.
- Prefer small, targeted changes over broad style churn.