Development Setup
Prerequisites
- Node.js 24+ with native TypeScript support
- pnpm as the package manager
Clone and Install
Run in Development Mode
You can run TypeScript files directly using Node.js with native TypeScript support:Build
To build the project:Important: Do Not Use Bun
This project explicitly does not use Bun for runtime or binary distribution. We encountered fundamental limitations with Bun’s module resolution from its virtual filesystem that prevented user scripts from importing packages. Seedoc/rfd/pkg-migration.md in the repository for the full technical analysis.
Running Tests
Run the test suite with:Commit Message Format
This project uses Conventional Commits for clear history and automated release management. All commit messages should follow this format:Commit Types
| Type | Description | Version Bump |
|---|---|---|
feat | A new feature | Minor |
fix | A bug fix | Patch |
docs | Documentation only changes | None |
style | Code style changes (formatting, semicolons, etc.) | None |
refactor | Code changes that neither fix bugs nor add features | None |
perf | Performance improvements | None |
test | Adding or updating tests | None |
chore | Maintenance tasks, dependency updates | None |
ci | CI/CD configuration changes | None |
build | Build system or external dependency changes | None |
Common Scopes
acp- Core protocol changesthinkwell- High-level API changesconductor- Conductor-specific changesdeps- Dependency updates
Breaking Changes
Indicate breaking changes by adding! after the type:
BREAKING CHANGE: in the commit footer:
Examples
Pull Request Process
-
Create a branch from
mainwith a descriptive name: - Make your changes with clear, focused commits following the conventional commits format.
-
Run tests to ensure your changes work correctly:
-
Push your branch and open a pull request against
main. -
Describe your changes in the PR description. Include:
- What the change does
- Why it’s needed
- Any breaking changes or migration steps
- Address review feedback by pushing additional commits. We squash merge PRs, so don’t worry about commit count.
Code Style Guidelines
TypeScript
- Use TypeScript for all source code
- Prefer explicit types over
any - Use JSDoc comments for public APIs
- Use the
@JSONSchemadecorator for interfaces that need schema generation
Formatting
The project uses consistent formatting rules. Before committing:File Organization
- Source code lives in
src/ - Tests are co-located with source files or in
__tests__/directories - Documentation source is in
website/
Naming Conventions
- Use
camelCasefor variables and functions - Use
PascalCasefor classes, interfaces, and types - Use
UPPER_SNAKE_CASEfor constants - Use descriptive names that convey intent
Getting Help
If you have questions or need help:- Open a GitHub Issue
- Check existing issues for similar problems
- Read through the documentation
