import type { Posture } from "../config/posture.js"; import type { RepoStack } from "../profile/scan.js"; export type EccComponentId = `${string}:${string}`; export type EccMcpComponentId = `mcp:${string}`; export declare const CORE_ECC_COMPONENTS: readonly ["baseline:rules", "baseline:agents", "baseline:platform", "baseline:commands", "skill:tdd-workflow", "skill:verification-loop", "skill:strategic-compact", "skill:coding-standards", "agent:code-reviewer", "agent:code-architect", "agent:architect", "agent:planner", "agent:tdd-guide", "agent:build-error-resolver", "agent:refactor-cleaner", "agent:code-simplifier", "agent:silent-failure-hunter", "agent:pr-test-analyzer", "agent:doc-updater", "agent:docs-lookup", "agent:code-explorer", "agent:security-reviewer", "agent:type-design-analyzer", "agent:performance-optimizer"]; export declare const LEAN_ECC_COMPONENTS: readonly ["baseline:rules", "agent:planner", "skill:tdd-workflow", "agent:tdd-guide", "agent:build-error-resolver", "agent:code-reviewer", "agent:security-reviewer", "skill:security-review", "skill:verification-loop"]; export declare const UPSTREAM_CORE_ECC_MODULE_IDS: readonly ["rules-core", "agents-core", "commands-core", "hooks-runtime", "platform-configs", "skill-unified-memory", "workflow-quality"]; /** Backward-compatible name for callers that mean the explicit Core closure. */ export declare const COMMON_ECC_COMPONENTS: readonly ["baseline:rules", "baseline:agents", "baseline:platform", "baseline:commands", "skill:tdd-workflow", "skill:verification-loop", "skill:strategic-compact", "skill:coding-standards", "agent:code-reviewer", "agent:code-architect", "agent:architect", "agent:planner", "agent:tdd-guide", "agent:build-error-resolver", "agent:refactor-cleaner", "agent:code-simplifier", "agent:silent-failure-hunter", "agent:pr-test-analyzer", "agent:doc-updater", "agent:docs-lookup", "agent:code-explorer", "agent:security-reviewer", "agent:type-design-analyzer", "agent:performance-optimizer"]; /** * What a declarable component pulls in with it. Exported so the authoring * surface can state the relation instead of leaving an administrator to * discover after the fact that picking a language also brought agents. */ export declare const ECC_DECLARATION_RIDERS: Readonly>; export declare const ECC_DECLARABLE_COMPONENT_IDS: readonly EccComponentId[]; export declare const ECC_EXPLICIT_MCP_COMPONENT_IDS: readonly EccMcpComponentId[]; export interface SelectEccComponentsInput { stack: RepoStack; posture: Posture; profile: string; declarations?: readonly string[]; declaredMcps?: readonly string[]; } export interface EccComponentSelection { scope: "scoped" | "full"; components: EccComponentId[]; mcps: EccMcpComponentId[]; recommendations: EccComponentId[]; /** Exact upstream modules selected by an upstream profile such as Core. */ moduleIds?: string[]; } export declare function selectEccComponents(input: SelectEccComponentsInput): EccComponentSelection;