/** * openlore decisions command * * Agent-recorded architectural decision workflow: * record (via MCP) → consolidate → verify → approve → sync → spec.md * * Can be installed as a pre-commit hook that gates commits until decisions * are reviewed. */ import { Command } from 'commander'; import { readOpenLoreConfig } from '../../core/services/config-manager.js'; import type { DecisionStore, PendingDecision } from '../../types/index.js'; export declare function runPostCommitDecisionCheck(rootPath: string): Promise; /** * Does this repository already carry an OpenLore decisions commit gate? * * Read by `openlore install` so it never changes the mode of a gate someone else * configured: an absent `governance.autopilot` means blocking review, so writing * the non-blocking default over an EXISTING gate would silently downgrade it * (change: unify-onboarding-entrypoint). */ export declare function hasOpenLoreCommitGate(rootPath: string): Promise; export declare function installPreCommitHook(rootPath: string, /** * How the gate will behave once installed. In `autopilot` mode the gate records * and syncs verified decisions and never blocks a commit, so the blocking notice * below would be flatly untrue — and it was being printed one line above * `openlore install`'s own "no commit is blocked by default" * (change: unify-onboarding-entrypoint). */ opts?: { autopilot?: boolean; }): Promise; export declare function uninstallPreCommitHook(rootPath: string): Promise; export declare function uninstallClaudeHook(rootPath: string): Promise; /** * Autopilot gate resolution: auto-accept verified decisions (distinct * `auto-approved` status, actor `autopilot` on the ledger), sync them (plus any * human-approved ones) to specs, and NEVER block the commit — one advisory * stderr line, exit 0. Infrastructure failure degrades to a caveat and exit 0 * (the impact-certificate advisory-safety discipline): a broken trail write or * sync must never stop a commit the human is making. * * Legality: only decisions still in `verified` transition — a human-`rejected` * decision is never resurrected by autopilot, and concurrent status changes * win (the CAS mutate re-checks status on the freshest store). */ export declare function runAutopilotGate(rootPath: string, config: NonNullable>>, jsonMode: boolean, unassessed?: readonly PendingDecision[]): Promise; export declare function reconcileDecisionClassifications(store: DecisionStore, classifications: { verified: readonly PendingDecision[]; phantom: readonly PendingDecision[]; unassessed: readonly PendingDecision[]; }): { verified: PendingDecision[]; phantom: PendingDecision[]; unassessed: PendingDecision[]; }; export declare function classificationsBlockGate(classifications: { verified: readonly PendingDecision[]; phantom?: readonly PendingDecision[]; unassessed: readonly PendingDecision[]; }, missingCount: number): boolean; export declare function decisionClassificationIsUnresolved(decision: PendingDecision): boolean; export declare function displayDecision(d: PendingDecision, verbose?: boolean): void; /** * One-line glyph legend printed beneath any decision listing. Its job is to make * a gate-blocking `verified` status legible as "awaiting review" — visually * distinct from the done statuses (approved/synced) — rather than a bare glyph * a reader has to guess at. */ export declare function printDecisionLegend(): void; export declare const decisionsCommand: Command; //# sourceMappingURL=decisions.d.ts.map