# Project memory — LexAI > Curated long-term knowledge that must survive sessions, compaction, and agent turnover. Loaded at every session start alongside `HANDOFF.md`. **Hard cap: 60 lines of entries.** When full, the `memory-sync` skill consolidates or archives before adding. Facts only — state goes in `HANDOFF.md`, mistakes in `LESSONS_LEARNED.md`, choices in `DECISIONS.md`. ## Verified facts Durable, evidence-backed truths about this project (domain rules, invariants, external realities). - No backend: the background service worker is the only context that calls provider APIs; the user's key never leaves the extension except to the chosen provider. ## Conventions How this codebase does things (naming, structure, patterns a new agent must follow). - UI is inline style objects (dark Catppuccin-ish palette); Tailwind is installed but inactive. - Each provider is duplicated as `callX` + `callXWithPrompt` — change both until T-04 refactors the layer. ## Environment quirks Non-obvious facts about tooling, commands, CI, or the operator's machine that repeatedly cost time to rediscover. - `node_modules` is gitignored and absent by default — run `npm install` before any `npm run *`. - CI is Gitea (`.gitea/workflows/`), Node 22 pinned. Version must match in `package.json` and `wxt.config.ts`. ## Key paths and entry points | What | Where | | --- | --- | | Content script (selection, toolbar, replace) | `entrypoints/content.ts` | | Background LLM proxy (providers, key decrypt) | `entrypoints/background.ts` | | Options (provider/model/key + encrypt) | `entrypoints/options/Options.tsx` | | Popup (standalone analyze) | `entrypoints/popup/Popup.tsx` | | Task list (from RECOMMENDATIONS) | `docs/TASKS.md` | ## Expiring notes Short-lived knowledge with an explicit expiry; `memory-sync` deletes past-due entries. - _None yet. Format: `[YYYY-MM-DD expires] note`_ ## Consolidation log | Date | Action | Reason | | --- | --- | --- | | 2026-07-15 | Seeded initial facts, conventions, quirks, key paths | memory layer added | --- *Write rules: one line per entry, evidence-backed, no secrets/personal data/transcripts. Every entry must answer "would a fresh agent waste tokens rediscovering this?" — if no, it doesn't belong here.*