/** * Structural Change Analysis — graph diff (spec-21). * * Given a change (working tree vs a ref, or two refs), compute what changed * *structurally*: which functions/edges were added or removed, which signatures * changed, and which existing callers are now STALE because a callee's signature * moved under them. A review/refactor agent gets a precise structural changelog * instead of re-deriving consequences from a raw text diff. * * The difference between "these 40 lines changed" (git diff) and "this removed * function C, altered the signature of D, and 5 of D's callers are now stale" * (graph diff) — a computed consequence (Layer 3), not retrieval. * * Bounded: only the changed files are re-parsed (old content via `git show`, new * via the working tree / ref), so two in-memory snapshots are cheap. The canonical * graph is never mutated. Stale callers come from the cached graph (all callers). * * Honest limits: a moved/renamed-file symbol is matched exactly by its * content-addressed stable id (the same symbol, not delete+add). Identifier * renames and symbols with no stable id stay heuristic — both interpretations are * reported, never silently guessed. */ import { type DeclaredFootprintInput } from './footprint-escape.js'; export interface StructuralDiffInput { directory: string; /** Old state (default "HEAD"). */ baseRef?: string; /** New state. Omit to use the working tree. */ headRef?: string; /** Cap reported items per category (default 200). */ maxResults?: number; /** * Optional declared write-footprint for the change (proposal-1 `Footprint` * shape, or any subset carrying `writeSet`/`readSet`). When supplied, * `structural_diff` additionally computes the **escape set** — symbols the diff * modified outside the declared write-set — and the conflicts an escape opens * against `peerFootprints`. Absent → behavior is byte-identical to today (the * extension is dormant). OpenLore holds no roster: this is a per-call input. */ declaredFootprint?: DeclaredFootprintInput; /** * Optional declared footprints of *other* in-flight tasks. An out-of-scope write * that lands in a peer's write-set is reported as a newly-opened write-write * conflict naming that peer. Ignored unless `declaredFootprint` is also supplied. */ peerFootprints?: DeclaredFootprintInput[]; } export declare function handleStructuralDiff(input: StructuralDiffInput): Promise; //# sourceMappingURL=structural-diff.d.ts.map