/** * openlore analyze command * * Runs static analysis on the codebase without LLM involvement. * Outputs repository map, dependency graph, and file significance scores. */ import { Command } from 'commander'; import type { RepositoryMap } from '../../core/analyzer/repository-mapper.js'; import type { CloneGroup } from '../../core/analyzer/duplicate-detector.js'; import type { DependencyGraphResult } from '../../core/analyzer/dependency-graph.js'; import type { AnalysisArtifacts } from '../../core/analyzer/artifact-generator.js'; import { type AnalysisOwnership } from '../../core/runtime/analysis-ownership.js'; interface AnalysisResult { repoMap: RepositoryMap; depGraph: DependencyGraphResult; artifacts: AnalysisArtifacts; duration: number; generationId?: string; workspaceShards?: import('../../core/analyzer/workspace-shards.js').WorkspaceShardReport; shardReceipt?: import('../../core/analyzer/workspace-shard-analysis.js').ShardScopedAnalysisReceipt; } /** * Why the published graph store cannot be served by THIS build, or null when it can. * * Read-only and non-destructive: `EdgeStore.open` records a lifecycle fault and touches nothing * on a schema mismatch, so probing here cannot damage an index the caller has not yet decided to * rebuild. An absent store is not a fault — a first run has nothing to read, and the normal * freshness logic already governs that case. */ export declare function readPublishedStoreFault(outputPath: string): Promise; /** One cycle as read back out of `refactor-priorities.json`. */ export interface CycleReport { size?: number; participants?: Array<{ function: string; file: string; }>; } /** * Render one `⚠ Cycle:` report line. * * A cycle is a strongly-connected component, so its length is a property of the * analyzed repository: on grpc-go one names 1,347 functions, which joined into * a single 36,445-character console line. The printed chain is capped and the * exact number of withheld names is disclosed; `refactor-priorities.json` keeps * every participant. */ export declare function renderCycleLine(cycle: CycleReport): string; /** * Render one clone-group line for the "Top 5 Clone Groups" report. * * A generated-accessor group can hold hundreds of members (182 on grpc-go, an * 8,333-character line). The printed member list is capped with an exact * omitted count; `duplicates.json` keeps every instance. */ export declare function renderCloneGroupLine(group: CloneGroup): string; export declare function formatIndexedFunctionPopulation(result: { total: number; productionFunctions: number; testFunctions: number; signatureOnlySymbols: number; }): string; /** * Run the complete analysis pipeline */ export declare function runAnalysis(rootPath: string, outputPath: string, options: { maxFiles: number; include: string[]; exclude: string[]; reExtract?: boolean; ownership?: AnalysisOwnership & { state: 'owned'; }; shards?: string[]; partialServing?: boolean; }): Promise; export declare const analyzeCommand: Command; /** * The specs directory `openlore init` creates, resolved against a repository root. * * An empty directory THERE is OpenLore's own artifact; an empty one at a configured * `openspecPath` is the user's, and worth a warning. */ export declare function defaultSpecsDir(rootPath: string): string; export declare function formatSpecIndexFailure(message: string, freshSpecDirectory: boolean, /** * The resolved default specs directory for this repository. Compared as a PATH, not as a * slash pattern over the prose: a regex built from `openspec/specs` never matched a Windows * `C:\repo\openspec\specs`, so the whole distinction was inert there, and it matched any * configured path ending in those two segments — `vendor/openspec/specs`, `docs/openspec/specs` * — which are the user's, not ours (change: fix-spec-skip-path-comparison). */ defaultSpecs?: string): string; export {}; //# sourceMappingURL=analyze.d.ts.map