# @repo/core-consent Optional core package providing a vendor-neutral consent management interface. Scaffold via `pnpm turbo gen core-package consent`. ## Structure ``` src/ consent-types.ts # ConsentCategory, ConsentState, UserConsentState consent.interface.ts # IConsent — isGranted, grant, withdraw, getCategories with-consent.ts # withConsent wrapper attaching ConsentChecked brand index.ts # Barrel export ``` ## Design `IConsent` exposes four methods: - `isGranted(category)` — synchronous check whether consent is granted - `grant(category)` — record consent grant for a category - `withdraw(category)` — record consent withdrawal for a category - `getCategories()` — list all known consent states The interface is vendor-neutral: no storage implementation is bundled here. Concrete implementations (e.g. a Payload-backed store) are wired at DI bind time in `bind-production`. `withConsent` wraps a use-case factory at bind time, attaches the `__consentChecked` brand, and is the innermost wrapper in the composition chain: `withSpan → withCapture → withAudit → withAnalytics → withConsent → factory(deps)` See `docs/architecture/agent-first-workflow-and-conformance.md` for the dependency-injection conventions.