import { type AgentSkillsValidationSummary } from "./agent-skills.js"; import { type SkillParentIndex } from "./catalog.js"; import { type ConfigOverrides } from "./config.js"; import { type ContextLensSummary } from "./context-lens.js"; import { type ExecutableSurfaceInventory } from "./executable-surface-inventory.js"; import { type ExecutableDependencyCandidate } from "./executable-dependency-analyzer.js"; import type { Catalog } from "./model.js"; import { type RepositoryPathState } from "./repository-paths.js"; import { type SecurityPolicyAssetEvidence } from "./security-policy-inventory.js"; import { type SkillDiscoveryIndex } from "./skill-discovery.js"; import type { Artifact } from "./types/artifact.js"; import type { KnownAssetClassificationEvidence } from "./types/known-classification.js"; import type { ScanConfig } from "./types/configuration.js"; import type { Diagnostic } from "./types/diagnostics.js"; import type { ParsedDocument } from "./types/metadata.js"; import { type ScanBoundarySource } from "./scan-boundary.js"; export interface RepositorySnapshotCore { readonly root: string; readonly config: ScanConfig; readonly configPath?: string; readonly evidenceBoundarySources: ScanBoundarySource[]; readonly evidenceBoundaryInspectedPaths: ReadonlyArray>; readonly repositoryPathConfig: ScanConfig; readonly artifacts: Artifact[]; readonly documents: ParsedDocument[]; readonly discoveredPaths: ReadonlySet; readonly skippedPathStates: ReadonlyMap; readonly blockedTraversalPaths: ReadonlySet; readonly excludedSupportDirectoryPaths: ReadonlySet; readonly discoveryDiagnostics: Diagnostic[]; readonly executableDependencyCandidates: ExecutableDependencyCandidate[]; } export type RepositoryProjectionName = "catalog" | "agent-skills" | "skill-discovery" | "classifications" | "security-policies" | "executable-surfaces" | "context-lens" | "repository-paths"; /** Focused collection hooks used only to prove collection/projection invariants. */ export interface RepositoryCollectionInstrumentation { onDiscovery?: (root: string) => void; onDocumentParse?: (artifactPath: string) => void; onProjection?: (projection: RepositoryProjectionName) => void; } /** CI-only boundary predicates evaluated independently against target paths. */ export interface RepositoryEvidenceBoundaryOptions { sources: ScanBoundarySource[]; } export interface RepositoryEvidence { root: string; configPath?: string; scannedFileCount: number; catalog: Catalog; contextLens: ContextLensSummary; diagnostics: Diagnostic[]; } export interface RepositorySnapshot extends RepositoryEvidence { core: RepositorySnapshotCore; config: ScanConfig; evidenceBoundarySources: ScanBoundarySource[]; evidenceBoundaryInspectedPaths: ReadonlyArray>; artifacts: Artifact[]; documents: ParsedDocument[]; repositoryPaths: ReadonlySet; repositoryPathStates: ReadonlyMap; /** Snapshot-scoped indexes reused by commands without reinterpreting files. */ classifications: ReadonlyMap; skillParents: SkillParentIndex; securityPolicies: SecurityPolicyAssetEvidence[]; executableSurfaceInventory: ExecutableSurfaceInventory; agentSkills: AgentSkillsValidationSummary; skillDiscovery: SkillDiscoveryIndex; skillDiscoveryDiagnostics: Diagnostic[]; discoveryDiagnostics: Diagnostic[]; catalogDiagnostics: Diagnostic[]; contextLensDiagnostics: Diagnostic[]; } export declare function collectRepositoryEvidence(targetPath: string, overrides?: ConfigOverrides, instrumentation?: RepositoryCollectionInstrumentation): Promise; /** Preserve the Discovery-free diagnostic projection for compatibility consumers. */ export declare function repositoryDiagnosticsWithoutSkillDiscovery(snapshot: Pick): Diagnostic[]; export declare function collectRepositorySnapshot(targetPath: string, overrides?: ConfigOverrides, instrumentation?: RepositoryCollectionInstrumentation, evidenceBoundary?: RepositoryEvidenceBoundaryOptions): Promise; /** Explicitly prepare the named pure projections from one collected core. */ export declare function prepareRepositorySnapshotProjections(snapshot: RepositorySnapshot, projectionNames: readonly RepositoryProjectionName[]): void;