# types/config.types.ts

> 186 lines of code and 24 definitions.

Tree: GovLab Quality
Language: typescript
Layer: infrastructure
Canonical: https://banes-lab.com/anatomy/quality#file-quality-types-config-types-ts
Source text: https://banes-lab.com/source/quality/types/config.types.ts.txt

Listed in [types](https://banes-lab.com/api/source/quality/types.md), after [types/concern.types.ts](https://banes-lab.com/source/quality/types/concern.types.ts.md) and before [types/construct.types.ts](https://banes-lab.com/source/quality/types/construct.types.ts.md).

## Definitions

- `TypeSystemLayout` (interface_declaration, line 4, exported)
- `EslintRelaxScope` (interface_declaration, line 37, exported)
- `EslintRuleExclusion` (interface_declaration, line 42, exported)
- `EslintLayout` (interface_declaration, line 48, exported)
- `EslintScopeConfig` (interface_declaration, line 61, exported)
- `HostPathsPolicy` (interface_declaration, line 74, exported)
- `HostEndpointsPolicy` (interface_declaration, line 82, exported)
- `HostPolicyConfig` (interface_declaration, line 87, exported)
- `ContentPolicyConfig` (interface_declaration, line 94, exported)
- `QualityEngineConfig` (interface_declaration, line 101, exported)
- `HarnessDocProfile` (interface_declaration, line 107, exported)
- `HarnessDocsConfig` (interface_declaration, line 114, exported)
- `DocsConfig` (interface_declaration, line 122, exported)
- `GainConfig` (interface_declaration, line 131, exported)
- `QualitySectionConfig` (interface_declaration, line 135, exported)
- `OxlintBlockExclusion` (interface_declaration, line 143, exported)
- `OxlintConfig` (interface_declaration, line 149, exported)
- `ExtensionsConfig` (interface_declaration, line 160, exported)
- `GovlabConfig` (interface_declaration, line 164, exported)
- `ConfigSection` (interface_declaration, line 178, exported)
- `ResolvedDocsConfig` (interface_declaration, line 183, exported)
- `ResolvedQualityEngineConfig` (interface_declaration, line 192, exported)
- `GovlabEslintSettings` (interface_declaration, line 198, exported)
- `EmitInputs` (interface_declaration, line 206, exported)

## Contained in

- [types](https://banes-lab.com/anatomy/quality/folder-quality-types.md)

## Source

```typescript
import type { ConcernConfig } from "#types/concern.types";
import type { OwnerOverride } from "#types/canon.types";

export interface TypeSystemLayout {
    axes?: {
        variant?: string[];
        size?: string[];
        gap?: string[];
        tone?: string[];
        measure?: string[];
        layout?: string[];
    };
    axisHomes?: { size?: string; gap?: string; tone?: string; measure?: string; layout?: string };
    variants?: string[];
    elementTypes?: string[];
    nativeTags?: string[];
    typesHome?: string;
    utilityPrefix?: string;
    componentPrefix?: string;
    iconPrefixes?: string[];
    layerOrder?: string;
    layerStatementHome?: string;
    tokensFile?: string;
    layerSegments?: { layer: string; needle: string }[];
    appShellAllow?: string[];
    shellAllow?: string[];
    iconSelectors?: string[];
    mobileSuffix?: string;
    variantScaleExempt?: string[];
    semanticColorTokens?: string[];
    focusHome?: string;
    zTokenPrefix?: string;
    varCategories?: { file: string; description: string; prefixes: string[]; contains?: string[] }[];
    tokenParity?: { reference: string; target: string };
}

export interface EslintRelaxScope {
    files: string[];
    relax: string[];
}

export interface EslintRuleExclusion {
    eslintFiles: string[];
    vitePath: string;
    rules: string[];
}

export interface EslintLayout {
    domFactory?: string;
    contentSinks?: string[];
    pages?: string[];
    components?: string[];
    utilitiesPath?: string;
    componentsDir?: string;
    frontendMarkers?: string[];
    backendMarkers?: string[];
    configExemptions?: string[];
    typeSystem?: TypeSystemLayout;
}

export interface EslintScopeConfig {
    scopes?: { backend?: string };
    layout?: EslintLayout;
    ignores?: string[];
    env?: string[];
    globals?: Record<string, string>;
    generated?: EslintRelaxScope;
    tests?: EslintRelaxScope;
    buildScripts?: EslintRelaxScope;
    exclusions?: EslintRuleExclusion[];
    rules?: Record<string, unknown>;
}

export interface HostPathsPolicy {
    roots?: string[];
    source?: string;
    treeFile?: string;
    excluded?: string[];
    packages?: string[];
}

export interface HostEndpointsPolicy {
    migrationAllow?: string[];
    source?: string;
}

export interface HostPolicyConfig {
    moduleLevels?: Record<string, number>;
    testRoots?: { testbase?: string; hostRoot?: string };
    paths?: HostPathsPolicy;
    endpoints?: HostEndpointsPolicy;
}

export interface ContentPolicyConfig {
    aiName?: string;
    allowNamespaces?: string[];
    allowNumberNamespaces?: string[];
    allow?: string[];
}

export interface QualityEngineConfig {
    root?: string;
    eslintConfig?: string;
    stylelintConfig?: string;
}

export interface HarnessDocProfile {
    prefix: string;
    keys: string[];
    requireFrontmatter: boolean;
    requireTitle: boolean;
}

export interface HarnessDocsConfig {
    root: string;
    runtimeRoots?: string[];
    agentDir?: string;
    adapter?: string;
    profiles?: HarnessDocProfile[];
}

export interface DocsConfig {
    ignore?: string[];
    prettierConfig?: string;
    boundaryDocs?: string[];
    members?: string[];
    hostTokens?: string[];
    harness?: HarnessDocsConfig;
}

export interface GainConfig {
    ignore?: string[];
}

export interface QualitySectionConfig {
    concerns?: Record<string, (number | string)[] | boolean | number | string>;
    owners?: Record<string, Record<string, string>>;
    ecosystems?: string[];
    exclude?: string[];
    toolExclude?: Record<string, string[]>;
}

export interface OxlintBlockExclusion {
    file: string;
    rule: string;
    functions: string[];
}

export interface OxlintConfig {
    blockExclusions?: OxlintBlockExclusion[];
    plugins?: string[];
    categories?: Record<string, string>;
    rules?: Record<string, unknown>;
    env?: Record<string, boolean>;
    globals?: Record<string, string>;
    ignorePatterns?: string[];
    reportOnly?: string[];
}

export interface ExtensionsConfig {
    global?: boolean;
}

export interface GovlabConfig {
    [section: string]: unknown;
    extends?: GovlabConfig[];
    eslint?: EslintScopeConfig;
    hostPolicy?: HostPolicyConfig;
    contentPolicy?: ContentPolicyConfig;
    qualityEngine?: QualityEngineConfig;
    docs?: DocsConfig;
    gain?: GainConfig;
    qualityMaster?: QualitySectionConfig;
    extensions?: ExtensionsConfig;
    oxlint?: OxlintConfig;
}

export interface ConfigSection {
    key: string;
    validate: (value: unknown) => string[];
}

export interface ResolvedDocsConfig {
    ignore: string[];
    prettierConfig: string | undefined;
    boundaryDocs: string[];
    members: string[];
    hostTokens: string[];
    harness: HarnessDocsConfig | undefined;
}

export interface ResolvedQualityEngineConfig {
    root: string | undefined;
    eslintConfig: string | undefined;
    stylelintConfig: string | undefined;
}

export interface GovlabEslintSettings {
    scopes: NonNullable<EslintScopeConfig["scopes"]>;
    layout: EslintLayout;
    hostPolicy: HostPolicyConfig;
    contentPolicy: ContentPolicyConfig;
    exclude: string[];
}

export interface EmitInputs {
    concerns: ConcernConfig;
    config: GovlabConfig;
    owners: OwnerOverride | undefined;
}
```
