/** * Path-neutral counts of removal buckets for agents/JSON consumers. * Never includes HOME, coordination paths, journals, or tokens. */ export interface UninstallRemovalBuckets { /** Generation-bound user-cache entry for this project. */ readonly activeCache?: number; /** Pre-v2 / path-only cache entry when distinct from active. */ readonly legacyCache?: number; /** Project-local `opensip-cli/.runtime/`. */ readonly projectRuntime?: number; /** Authored Init content + config (only selected with `--purge`). */ readonly authored?: number; /** User-level root entries (`--user` mode). */ readonly user?: number; } /** Bounded recovery status for project/user uninstall. */ export type UninstallRecoveryStatus = { readonly status: 'absent'; } | { readonly status: 'present'; readonly state: 'open' | 'closed'; } | { readonly status: 'malformed'; readonly reason?: string; } | { readonly status: 'discarded'; } | { readonly status: 'refused'; readonly reason?: string; }; /** Outcome of an `opensip uninstall` run. */ export interface UninstallDoneResult { type: 'uninstall-done'; /** Discriminator on the dispatch the run took. */ action: 'removed' | 'dry-run' | 'cancelled' | 'empty'; /** 'user' (default) or 'project' (`--project [path]`). */ mode: 'user' | 'project'; /** Targets considered for removal. Empty when `action === 'empty'`. */ targets: readonly { readonly path: string; readonly kind: 'file' | 'dir'; }[]; /** Total bytes the targets occupied on disk (0 when nothing was found). */ sizeBytes: number; /** Resolved root that was probed (user-level dir or project dir). */ rootPath: string; /** Path-neutral bucket counts for machine consumers. */ readonly buckets?: UninstallRemovalBuckets; /** Promotion/user-uninstall recovery posture for this run, when relevant. */ readonly recovery?: UninstallRecoveryStatus; } export interface ClearDoneResult { type: 'clear-done'; action: 'done' | 'cancelled' | 'empty'; deletedCount: number; sessionCount: number; } /** Outcome of an `opensip configure` interactive run. */ export interface ConfigureDoneResult { type: 'configure-done'; /** Where the global config landed on disk. */ configPath: string; /** Discriminator: did the user supply a key, or bail at the prompt? */ action: 'saved' | 'cancelled'; /** When `action === 'saved'`, the masked-for-display key (`abcd…wxyz`). */ maskedKey?: string; } /** * Outcome of a `fit --gate-save` / `fit --gate-compare` run on the * non-`--json` path. Carries the already-composed lines so the render seam * emits them as Ink or plain text. Exit code (degraded → 1) set by the caller. */ export interface GateDoneResult { type: 'gate-done'; /** Full gate output, one string per line (save summary or compare report). */ readonly lines: readonly string[]; } /** * Generic carrier for graph's line-oriented mode output that has no Ink * component twin: `--workspace`, and the `--report-to` status line. Carries * pre-composed plain lines (no graph types — contracts sits below graph) so the * render seam emits them as Ink or plain text instead of the command writing to * stdout directly. `graph lookup --json` uses {@link GraphLookupResult} through * the host `command-result` seam instead. */ export interface GraphStatusResult { type: 'graph-status'; /** Pre-composed report lines, one string per line. */ readonly lines: readonly string[]; } /** * Generic human-readable line carrier for extension commands that do not need a * bespoke first-party view. This keeps `command-result` usable without adding a * new closed union member for every simple command shape. */ export interface TextLinesResult { type: 'text-lines'; /** Optional heading rendered above the lines. */ readonly title?: string; /** Pre-composed display lines, one string per line. */ readonly lines: readonly string[]; } //# sourceMappingURL=done-results.d.ts.map