25 lines
1.5 KiB
Markdown
25 lines
1.5 KiB
Markdown
## Code Principles
|
|
- **Simplicity**: Write simple, straightforward code
|
|
- **Readability**: Make code easy to understand
|
|
- **Maintainability**: Write code that's easy to update
|
|
- **Less Code = Less Debt**: Minimize code footprint
|
|
- **NEVER write comments** - code should be self-documenting
|
|
|
|
## Layout
|
|
- `src/beaver_gateway` - python, unopinionated primitives (no vault paths, no agent names, no Russian): one package per capability - `agents`, `backends`, `conversations`, `jobs`, `frontends`, `mcp`, `vault`, `security`, `events`, `storage`; `config.py` loads a setup, `app.py` builds the runtime, `cli.py` is the entrypoint
|
|
- every string shown to a model or a user lives in a `*Texts` dataclass with English defaults (`conversations/texts.py`, `frontends/telegram/texts.py`); a setup overrides them
|
|
- `ui` - SvelteKit SPA (admin + Obsidian panel), served by the gateway from `ui/build`
|
|
- `docs/MISSION.md`, `docs/PRD.md`, `docs/PLAN.md`, `docs/PROGRESS.md` - keep PROGRESS.md current
|
|
- docstrings: one line per module saying what it is for, one line per public configuration field; no section references, phases or history
|
|
|
|
## Checking commands
|
|
After writing code, always run (or `make check`):
|
|
```shell
|
|
ruff format # python formatter
|
|
ruff check --fix # python linter
|
|
ty check # python type-checker
|
|
cd ui && bun fix # frontend linter+formatter (ultracite)
|
|
cd ui && bun check # svelte-check
|
|
```
|
|
Dependencies: `uv add` / `cd ui && bun add`, never edit lock files by hand.
|