src/cli.tsis the Bun CLI entry point.src/index.tswires CLI config into the Ink app runtime.src/ui/contains the Ink/React UI. Components live insrc/ui/components/, hooks insrc/ui/hooks/, and the multiline editor/input logic insrc/ui/input/.src/pipeline/holds the runtime frame pipeline, provider adapters, OpenAI tools, and sandbox implementations.src/services/holds supporting integration logic such as auth, prompts, sessions, config, and TTS helpers.src/types/contains shared TypeScript types.src/config.tscentralizes runtime configuration.
bun installinstalls dependencies (commitsbun.lock).bun run devruns the app in watch mode for local development.bun run startruns the app once without watch mode.bun run formatformats code with Prettier.bun run typecheckruns the TypeScript compiler without emitting files.bun run testexecutes Bun’s test runner.bun run checkruns Prettier checks + typecheck + test.
- TypeScript with ES modules (
"type": "module"inpackage.json). - Indentation: 2 spaces; no tabs. Newlines are LF.
- Prettier settings: no semicolons, single quotes, print width 100.
- Component files use PascalCase (e.g.,
ActiveMessagePanel.tsx). - Utility files use lower camel or descriptive names (e.g.,
markdown.ts).
- Uses Bun’s built-in test runner (
bun test). - There is no dedicated test directory yet; when adding tests, follow Bun’s default discovery patterns (e.g.,
*.test.tsor*.spec.ts) and keep tests close to the code they cover.
- Commit messages follow Conventional Commits (examples from history:
feat:,docs:,chore(scope):). - PRs should include a short summary, testing steps (e.g.,
bun run test), and screenshots or terminal output for UI changes.
- Configure secrets via shell environment variables like
OPENAI_API_KEY,ANTHROPIC_API_KEY, orCLAUDE_API_KEY; never commit secrets. - Persistent user defaults live in
~/.orb/config.tomland can be created withorb setup. - Target Bun
>= 1.1.0as specified inpackage.json.