Files
agentic-dev/packages/core/AGENTS.md

49 lines
1.7 KiB
Markdown

# @repo/core — Clean Architecture Core
Business logic package. All use cases, entities, interfaces, and DI live here.
## Layers (dependencies point inward only)
```
entities/ → NOTHING (innermost, zero deps)
application/ → entities/ only
interface-adapters/→ application/, entities/
infrastructure/ → application/, entities/, @repo/cms-client, external libs
di/ → all internal layers
```
## Import Rules
| Layer | Can import from | NEVER import from |
|---|---|---|
| entities/ | NOTHING | Everything else |
| application/ | entities/ only | infrastructure/, interface-adapters/ |
| interface-adapters/ | application/, entities/ | infrastructure/ |
| infrastructure/ | application/, entities/, @repo/cms-client | interface-adapters/, apps/* |
| di/ | All internal layers | apps/* |
## DI Resolution Table
| Symbol | Interface | Production | Mock |
|---|---|---|---|
| IUsersRepository | IUsersRepository | PayloadUsersRepository (Plan 3) | MockUsersRepository |
| IArticlesRepository | IArticlesRepository | PayloadArticlesRepository (Plan 3) | MockArticlesRepository |
| IAuthenticationService | IAuthenticationService | BetterAuthService (future) | MockAuthenticationService |
| ITelemetryService | ITelemetryService | OTelSentryService (future) | MockTelemetryService |
## Naming Conventions
- Models: `{name}.ts` with Zod schema + type export
- Errors: `{domain}.ts` with Error subclasses
- Interfaces: `{name}.repository.interface.ts` or `{name}.service.interface.ts`
- Use cases: `{verb}-{noun}.use-case.ts`
- Controllers: `{noun}.controller.ts`
- Infra: `{provider}-{name}.repository.ts` or `mock-{name}.repository.ts`
- DI modules: `{domain}.module.ts`
## Running Tests
```bash
cd packages/core && pnpm vitest run
```