/** * Resolved Hindsight runtime configuration. * * Source of truth precedence (last wins): * 1. Built-in defaults * 2. Settings (`hindsight.*` schema entries via `Settings.get(...)`) * 3. `HINDSIGHT_*` environment variables * * Env wins because operators frequently override per-shell (CI, prod) without * touching the persisted settings file. */ import type { Settings } from "../config/settings"; export type HindsightScoping = "global" | "per-project" | "per-project-tagged"; export interface HindsightConfig { hindsightApiUrl: string | null; hindsightApiToken: string | null; bankId: string | null; bankIdPrefix: string; scoping: HindsightScoping; bankMission: string; retainMission: string | null; autoRecall: boolean; autoRetain: boolean; retainMode: "full-session" | "last-turn"; retainEveryNTurns: number; retainOverlapTurns: number; retainContext: string; recallBudget: "low" | "mid" | "high"; recallMaxTokens: number; recallTypes: string[]; recallContextTurns: number; recallMaxQueryChars: number; recallPromptPreamble: string; debug: boolean; mentalModelsEnabled: boolean; mentalModelAutoSeed: boolean; mentalModelRefreshIntervalMs: number; mentalModelMaxRenderChars: number; } /** * Load the resolved Hindsight config. * * Pure (no I/O) aside from reading from `process.env` and the supplied * Settings instance. Tests can pass `Settings.isolated({...})` and stub * `process.env` per case. */ export declare function loadHindsightConfig(settings: Settings, env?: NodeJS.ProcessEnv): HindsightConfig; /** Whether the caller has enough config to talk to a Hindsight server. */ export declare function isHindsightConfigured(config: HindsightConfig): config is HindsightConfig & { hindsightApiUrl: string; };