export type ProfileId = 'developer' | 'architect' | 'ta' | 'sa' | 'ba' | 'pm' | 'mulesoft' | 'ux' | 'cgcloud' | 'devops' | 'qa' | 'crma' | 'commerce' | 'data360' | 'admin' | 'sfmc' | 'security' | 'salescloud' | 'service' | 'cpq' | 'omnistudio' | 'fsl' | 'ai' | 'slack' | 'tableau' | 'experience-cloud' | 'release-manager' | 'fsc' | 'health' | 'manufacturing' | 'communications' | 'automotive' | 'education' | 'netzero' | 'nonprofit' | 'public-sector' | 'media' | 'energy' | 'revenue' | 'maps' | 'loyalty' | 'industries';
export type ProfileCapability = 'story-mapping' | 'deploy' | 'code-analysis' | 'backlog-sync' | 'elements-sync' | 'doc-sync' | 'prompt-registry' | 'declare-points' | 'qa-evidence' | 'oclif-plugin' | 'project-knowledge-bootstrap' | 'transcription';
export type ProfileOrchestrationMetadata = {
    activationCriteria: string[];
    expectedEvidence: string[];
    gates: string[];
};
/**
 * Controls how a Cursor .mdc rule is loaded:
 * - 'always'      → alwaysApply: true, no globs (injected every turn)
 * - 'auto-attach' → alwaysApply: false, globs set (injected when matching files are open)
 * - 'description' → alwaysApply: false, no globs (injected by AI judgment from description)
 */
export type CursorScope = 'always' | 'auto-attach' | 'description';
export type ProfileCategory = 'technical' | 'functional' | 'role' | 'product';
export type Profile = {
    id: ProfileId;
    label: string;
    category?: ProfileCategory;
    ruleFile: string;
    extensions: string[];
    capabilities: ProfileCapability[];
    orchestration?: ProfileOrchestrationMetadata;
    /** Cursor rule loading mode. Defaults to 'always' if omitted. */
    cursorScope?: CursorScope;
    /** File globs for Cursor auto-attach mode. Only used when cursorScope is 'auto-attach'. */
    globs?: string[];
    /** If true, included via @ import in CLAUDE.md and AGENTS.md root files. Defaults to false. */
    claudeAlwaysImport?: boolean;
    ruleContent(): string;
    /** Profile-specific Agentforce Vibes workflows. Returns filename → markdown content. */
    workflows?(version: string): Record<string, string>;
    detect?(cwd: string): boolean;
};
