export interface ModuleMetadata { /** Directory name under docs/ (e.g. "godot-arch", "monogame-arch") */ id: string; /** Human-readable label (e.g. "Godot 4.x", "MonoGame + Arch ECS") */ label: string; /** Engine name extracted from module (e.g. "Godot", "MonoGame", "Bevy") */ engine: string; /** Short description extracted from the rules file (first paragraph) */ description: string; /** Whether a rules file exists for this module */ hasRules: boolean; /** Path to the rules file, if it exists */ rulesPath?: string; /** Subdirectories present (architecture, guides, reference) */ sections: string[]; /** Number of .md files in the module */ docCount: number; } /** Known engine name mappings — maps directory name patterns to engine info */ export declare const ENGINE_MAP: Record; /** Extract the engine name from a module directory name */ export declare function detectEngine(moduleId: string): { engine: string; labelFallback: string; }; /** * Auto-discover engine modules from the docs directory. * * Convention: * - Each subdirectory of docsRoot (except "core") is a potential module * - A module is valid if it contains at least one .md file * - A rules file at `/-rules.md` or `/*-rules.md` provides metadata * * If GAMEDEV_MODULES env var is set, only those modules are activated. * If unset, ALL discovered modules are activated. */ export declare function discoverModules(docsRoot: string): Promise; /** * Resolve which modules should be active. * If GAMEDEV_MODULES is set, use only those (intersection with discovered). * If unset, activate all discovered modules. */ export declare function resolveActiveModules(discovered: ModuleMetadata[], envModules?: string): ModuleMetadata[]; /** Get human-readable engine label from an engine key or module ID */ export declare function getEngineLabel(engineKeyOrModuleId: string): string; /** Resolve user-provided engine string to canonical engine key */ export declare function resolveEngineKey(input: string): string | null;