import type { IdeId } from '../../services/ide/ide-types.js'; import type { StatusLineScope } from '../../services/skills/statusline-settings-service.js'; export declare const STDIN_READ_TIMEOUT_MS = 250; /** * Read piped stdin if present; resolve quickly with '' when attached to a TTY. * * `PEAKS_STATUSLINE_STDIN` is a test seam (same shape as the `PEAKS_HOOK_STDIN` * seam in `gate-commands.ts`): the harness payload is the only channel that * carries the harness's own context numbers, and a test that cannot supply one * cannot verify the capture at all. * * WHY THIS SEAM IS ACCEPTABLE ON A DIFFERENT ARGUMENT (repair cycle 3). The * precedent does not transfer by itself: `PEAKS_HOOK_STDIN` is defended in * `.peaks/memory/peaks-hook-stdin-test-seam-pattern.md` because its payload * still routes through the `enforceBashCommand` SOP gate. This payload is * routed through no gate — it is PERSISTED verbatim as the record the witness * guard then reads. So the compensating control is different, not absent: the * record is observation-only and one-way. It reaches only `data` and the * `warnings` / `nextActions` arrays of `peaks code context-now`; the compact * `action` there is computed from `probe.ratio` alone, before and independently * of the witness. A forged payload can therefore make the instrument lie — * measured: a hand-written record yields a confident false `agree`, or a * self-contradictory false `disagree` — and can do nothing else. What it cannot * do is fire, block or delay a compact. Unconditional rather than NODE_ENV- * gated, for the reason already recorded for the sibling seam. */ export declare function readStdin(): Promise; export declare function resolveScope(options: { global?: boolean; }): StatusLineScope; /** `--project `, else the nearest project root, else cwd — unchanged order. */ export declare function resolveProjectRoot(project: string | undefined): string; /** * Resolve the IDE the install should target. The CLI user can override with * `--ide `. Otherwise we delegate to `detectIdeFromContext` which checks * `process.env[adapter.envVar]` → stdin shape → cwd `.trae`/`.claude` → * fallback `'claude-code'`. Pass `parsedStdin: null` since `peaks statusline * install` is not invoked from inside an IDE hook — there's no stdin payload. */ export declare function resolveIdeForCommand(options: { ide?: string; }, projectRoot: string | undefined): IdeId; export type InstallOptions = { global?: boolean; project?: string; force?: boolean; dryRun?: boolean; json?: boolean; ide?: string; }; export type UninstallOptions = { global?: boolean; project?: string; json?: boolean; ide?: string; }; export type StatusOptions = { global?: boolean; project?: string; json?: boolean; ide?: string; }; export type RenderOptions = { project?: string; json?: boolean; now?: number | string; }; export type CompactOptions = { project?: string; sessionId?: string; json?: boolean; now?: number | string; };