summaryrefslogtreecommitdiffhomepage
path: root/js/OpenCode.md
blob: 7def6f8c73605e3f560153062b2a36a7ee9c2d4f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# OpenCode Context

## Build/Test Commands

- `bun install` - Install dependencies
- `bun run index.ts` - Run the application
- `bun build src/index.ts --compile --outfile ./dist/opencode` - Build executable
- `bun test` - Run all tests
- `bun test <pattern>` - Run specific test files
- `bun test --test-name-pattern <regex>` - Run tests matching pattern

## Code Style & Conventions

- TypeScript with Bun runtime
- ES modules (`"type": "module"`)
- Namespace-based organization (e.g., `Tool.define`, `App.provide`)
- Zod for schema validation and type safety
- Async/await patterns throughout
- Structured logging with service-based loggers (`Log.create({ service: "name" })`)
- Tool pattern: define tools with `Tool.define()` wrapper for metadata/timing
- Context pattern: use `Context.create()` for dependency injection
- Import style: Node.js built-ins with `node:` prefix, relative imports with explicit extensions
- Error handling: try/catch with structured logging
- File organization: group by feature in `src/` with index files for exports
- Test files: co-located in `test/` directory, use Bun's built-in test runner
- Naming: camelCase for variables/functions, PascalCase for namespaces/types
- **Variable declarations: Prefer `const` over `let` unless reassignment is necessary**