/** * Domain Read Matrix, single source of truth for cross-domain import authorization. * * This file defines which domain slices are permitted to import (read) from * other domain slices within `src/runtime/store/domains/`. * * Rules: * - A domain may always import from its own file. * - A domain may NOT import from another domain unless listed in DOMAIN_READ_MATRIX. * - Domains should prefer reading through selectors (src/runtime/store/selectors/) * rather than importing sibling domain types directly. * - New cross-domain reads require an explicit entry here + rationale comment. * * Enforcement: * - src/test/contracts/domain-boundary-contract.test.ts scans real import * statements and fails if any unlisted cross-domain import is found. */ /** All known domain slice file names (without extension). */ export declare const DOMAINS: readonly ["acp", "agents", "automation", "communication", "control-plane", "conversation", "daemon", "deliveries", "discovery", "git", "integrations", "intelligence", "mcp", "model", "orchestration", "overlays", "permissions", "plugins", "provider-health", "routes", "session", "surfaces", "tasks", "telemetry", "surface-perf", "watchers"]; export type DomainName = (typeof DOMAINS)[number]; /** * Authorized cross-domain reads. * * Shape: { reader: DomainName; reads: DomainName[] }[] * * Each entry grants `reader` permission to import from the listed `reads` domains. * Omitting a domain from this list means it may only import from itself (and * non-domain sources such as ../../../permissions/manager.ts). * * --- Authorized entries --- * * acp → daemon * ACP transport state uses the DaemonTransportState enum to express * its own lifecycle in terms already defined by the daemon domain. * This avoids duplicating the state enum and keeps the two transport * models structurally consistent. */ export declare const DOMAIN_READ_MATRIX: ReadonlyArray<{ readonly reader: DomainName; readonly reads: readonly DomainName[]; }>; /** * Returns the set of domains that `reader` is authorized to import from. * Always includes the reader itself (self-imports are always permitted). */ export declare function getAllowedReadsFor(reader: DomainName): ReadonlySet; //# sourceMappingURL=domain-read-matrix.d.ts.map