A small, deliberately boring codebase: strict TypeScript, no magic.
Setup and the commands are in the README. bun run typecheck must be clean — it is its own CI step, and any is not a way past it.
src/tools/ may never import from src/ingress/ — the tools must stay usable by any
agent with zero hub, mounting, extension or webhook dependency, and the ingress
extension depends on the tools, not the other way around. Checked by
scripts/check-deps.ts, which runs as its own CI job. See
ARCHITECTURE.md.
- Red first. A bug fix starts with a test that fails for the reason you believe, and you should watch it fail.
- Assert behavior a consumer can observe over internal call shapes.
- Tools tests live under
src/tools; ingress tests live undersrc/ingress; ingest pipeline tests live undersrc/ingest. Keep that split — it is what letstest:tools,test:ingress, andtest:ingestrun and fail independently in CI.
- Keep commits focused, and keep the diff to the change you are describing.
- Explain why in the commit message; the code already says what.
- CI must be green: dependency check, typecheck, tools tests, ingress tests, ingest tests, and build.
- Contributions are accepted under the repository's LGPL-2.1-only licence.