widgettdc-api / AGENTS.md
Kraft102's picture
fix: sql.js Docker/Alpine compatibility layer for PatternMemory and FailureMemory
5a81b95
# Repository Guidelines
## Project Structure & Module Organization
- `apps/backend` contains the Node/TypeScript GraphRAG, MCP, and integration services; integration and smoke specs sit in `apps/backend/src/tests` and mirror the service tree.
- `apps/matrix-frontend` houses the Vite/React dashboard; UI assets live in `apps/matrix-frontend/public`, while component hooks keep colocated specs under `__tests__`.
- Shared contracts reside in `packages/domain-types` and `packages/mcp-types`; rebuild them before consuming new DTOs elsewhere.
- Packaging layers live in `desktop-app` and automation reference material in `agents/`, `docs/`, `scripts/`, and `tests/`.
## Build, Test, and Development Commands
- `npm install` (repo root) hydrates all workspaces.
- `npm run dev` launches backend + widget board; use `npm run dev:backend` or `npm run dev:frontend` when debugging one surface.
- `npm run build` compiles shared packages, backend, and frontend; follow with `npm run build:desktop[:os]` for installers.
- `npm run lint`, `npm run lint:fix`, and `npm run format:check` keep ESLint/Prettier baselines; run them before opening a PR.
- `npm run test`, `npm run test:coverage`, and `node run-comprehensive-tests.js` cover unit, coverage-gated, and long smoke paths.
## Coding Style & Naming Conventions
- TypeScript first, strict mode on; avoid `any` and prefer typed service interfaces from `/packages`.
- Prettier enforces two-space indent, single quotes, and trailing commas; `.editorconfig` matches this setup.
- React components use `PascalCase`, hooks `useCamelCase`, feature folders remain kebab-case, and env files stay uppercase snake case (`.env.PROFILE`).
## Testing Guidelines
- Write `*.test.ts` for units, `*.integration.test.ts` for cross-service flows, and colocate specs with the code aside from backend suites that belong in `apps/backend/src/tests`.
- Vitest + Testing Library cover UI logic; backend suites lean on Neo4j fixtures and GraphRAG mocks documented in `tests/README`.
- Aim for ≥80% statement coverage on adapters and persistence layers (`npm run test:coverage`), and attach coverage deltas to PRs when dipping.
- Use Playwright (`npx playwright test`) only after `npm run build:frontend` passes locally.
## Commit & Pull Request Guidelines
- Follow the existing conventional commit style (`feat(scope):`, `fix(scope):`, etc.) and mention ticket IDs in the subject or body.
- Keep commits focused (types, backend, matrix-frontend) and push only formatted, lint-clean diffs.
- PRs must include a summary, reproduction/validation steps, linked issues, and screenshots or API traces for UI/API work; mention relevant docs under `docs/`.
- Before requesting review, rerun `npm run lint`, `npm run test`, `npm run build`, and document any suites intentionally skipped.
## Security & Configuration Tips
- Never commit credentials; seed secrets by copying `.env.example` to `.env`, `.env.local`, or profile-specific files and rotate through `switch-env.ps1`.
- Review `security/` threat notes before exposing endpoints, and scrub PII from `logs/` or `monitoring/` artifacts shared externally.
- Desktop builds embed frontend assets—validate `.env.production` overrides before tagging a release.