import { type AgentOpsConfig, type AgentOpsConfigWarning } from './config.js'; import { type GateSeed } from './gate-ingest.js'; export type AgentOpsComponent = 'git' | 'staging' | 'merge-queue' | 'ci' | 'gate'; export interface AgentOpsFileSpec { dest: string; component: AgentOpsComponent; executable: boolean; /** seed:true = generated ONCE, project-owned afterward: `agent-ops check` * reports it only when missing (never drifted); re-install never overwrites * without --force (spec D7). */ seed?: boolean; } export declare const AGENT_OPS_FILE_MAP: Record; export interface AgentOpsInstallOptions { components: AgentOpsComponent[]; force?: boolean; /** Required when components includes 'gate' (Task 9 ingestion output). */ gateSeed?: GateSeed; /** Test override for content/assets/agent-ops */ templateRoot?: string; } export interface AgentOpsInstallResult { installed: string[]; skippedModified: string[]; /** Seed files that already existed — kept untouched (project-owned). */ seedKept: string[]; errors: string[]; /** Non-fatal config issues (e.g. full_gate_command misconfigured). */ warnings: AgentOpsConfigWarning[]; } export interface AgentOpsCheckResult { upToDate: boolean; staleVersion: boolean; modified: string[]; missing: string[]; /** * Dests scaffold knows about (in AGENT_OPS_FILE_MAP) for a previously-installed * component that are NOT in the manifest — i.e. pre-existing user files the * installer refused to clobber. Informational only; never affects upToDate. */ unmanaged: string[]; } export declare function buildTemplateVars(config: AgentOpsConfig, projectRoot?: string): Record; export declare function installAgentOps(projectRoot: string, opts: AgentOpsInstallOptions): AgentOpsInstallResult; /** Every project-root-relative path installAgentOps creates or edits for these * components: the requested component seed/dest files, the shared make fragment * (installed for ANY component), the ownership manifest, the version marker, the * Makefile include, and — for merge-queue — the .gitignore entry. Sorted, * de-duplicated, read-only. The ops-actions preview derives install-component * file lists from THIS (never from AGENT_OPS_FILE_MAP directly), so the preview * and its plan_key can never omit an apply-relevant write. Keep this in lockstep * with installAgentOps — the two must agree on what a component install writes. */ export declare function plannedInstallPaths(components: AgentOpsComponent[]): string[]; export declare function checkAgentOps(projectRoot: string): AgentOpsCheckResult; /** Thin, project-owned Makefile targets wiring the seeds into the mq contract * (`make check` / `make check-affected`). Appended ONLY when absent — an * existing target of the same name is always respected (D7). */ export declare function ensureGateMakeTargets(projectRoot: string, seed: GateSeed): string[]; //# sourceMappingURL=install.d.ts.map