/** * ForgeOS starter profiles — registry, lookup, and auto-detection. * * Profiles define sensible gate templates for common project archetypes. * They are purely local: no engine calls are needed to select a profile. * * Usage: * getProfile("backend-service") → Profile | undefined * listProfiles() → Profile[] * detectProfile(cwd) → Profile (best-guess from project files) */ /** * A single gate template within a profile. * `auto_skip` is a hint to the CLI: if true, the gate can be automatically * skipped when the project context makes it irrelevant. */ export interface GateTemplate { /** Stable gate identifier used when applying gates via the engine. */ id: string; /** Human-readable name displayed in tables and reports. */ name: string; /** Evidence types required before this gate can be promoted. */ required_evidence: string[]; /** Roles that must provide a sign-off review for this gate. */ required_roles?: string[]; /** If true, the CLI may skip this gate without user confirmation. */ auto_skip?: boolean; } /** * A starter profile: a named, opinionated gate pipeline for a project archetype. * * Design constraints: * - Profiles are pure data — no engine calls, no async. * - `platform_hint` is used only for auto-detection; it does not restrict usage. * - `evidence_paths` are suggestions; the user is always free to override. */ export interface Profile { /** Unique slug used with `forge init --profile `. */ id: string; /** Display name shown in `forge init --list-profiles`. */ name: string; /** One-sentence description of the archetype this profile targets. */ description: string; /** * Project file cues used for auto-detection. * Checked in order; first match wins. * Use "any" as a fallback catch-all. */ platform_hint: string[]; /** Ordered list of gate templates for this profile. */ gates: GateTemplate[]; /** * Suggested paths for each evidence type, relative to the project root. * Keys are evidence type slugs (e.g. "exec_spec", "test_results"). */ evidence_paths: Record; /** Roles commonly involved in this pipeline. Informational only. */ recommended_roles: string[]; } /** * Look up a profile by its `id` slug. Returns `undefined` if not found. * * @example * const p = getProfile("backend-service"); * if (!p) throw new Error("Unknown profile"); */ export declare function getProfile(id: string): Profile | undefined; /** * Return all registered profiles. * Callers must not mutate the returned array or individual Profile objects. */ export declare function listProfiles(): Profile[]; /** * Auto-detect the best-fit profile for a project by inspecting its root files. * * Falls back to `quick` when no cues match — chosen because it imposes the * least friction on unrecognised project types. * * @param cwd Absolute path to the project root. Defaults to `process.cwd()`. */ export declare function detectProfile(cwd?: string): Profile; //# sourceMappingURL=index.d.ts.map