# Common Platform — Windsurf / Codeium Rules
# Read AGENTS.md for full context. These are the critical rules.

Project: @bytelyst/* shared packages + @lysnrai/* microservices
Stack: TypeScript, ESM, pnpm workspace, Fastify 5, Vitest, Azure Cosmos DB

## Architecture Rules
- @bytelyst/* = shared packages (packages/), @lysnrai/* = product services (services/)
- Product-agnostic: every Cosmos document MUST include productId field
- Services re-export @bytelyst/* in src/lib/ files for clean internal imports
- Services use self-contained Zod config schemas (not from shared packages)
- Package manager: pnpm — NEVER use npm

## Key Paths
- Packages: packages/ (@bytelyst/errors, cosmos, config, auth, api-client, fastify-core, react-auth, logger, testing, blob, extraction, monitoring, design-tokens)
- Services: services/ (platform-service 4003, extraction-service 4005)
- Base TS config: tsconfig.base.json (ES2022, NodeNext, strict)
- Workspace: pnpm-workspace.yaml

## Conventions
- ESM everywhere ("type": "module", .js extensions in imports)
- Fastify module pattern: types.ts → repository.ts → routes.ts
- Heavy deps in peerDependencies, workspace deps as "workspace:*"
- Use req.log / app.log — never console.log
- Commits: feat(scope): description / fix(scope): description

## Consumers
- Dashboards in ../learning_voice_ai_agent/ consume packages via file: refs
- Prerequisite: pnpm build before consumer npm install

## Build Verification
- pnpm build && pnpm test && pnpm typecheck
