/** * Config support for Hippo: reads .hippo/config.json with sane defaults. */ import { type PhysicsConfig } from './physics-config.js'; export type DecayBasis = 'clock' | 'session' | 'adaptive'; export interface HippoConfig { defaultHalfLifeDays: number; defaultBudget: number; defaultContextBudget: number; decayBasis: DecayBasis; autoLearnOnSleep: boolean; autoShareOnSleep: boolean; autoSleep: { enabled: boolean; threshold: number; }; embeddings: { enabled: boolean | 'auto'; model: string; hybridWeight: number; /** Embedding backend. 'local' (default) = zero-dependency transformers.js. * 'openai' | 'voyage' | 'cohere' = opt-in API embedder; needs the provider's * API key in env (OPENAI_API_KEY / VOYAGE_API_KEY / COHERE_API_KEY). * See src/embedding-provider.ts. */ provider?: 'local' | 'openai' | 'voyage' | 'cohere'; /** Optional API base-URL override (self-host / proxy). HTTPS only (localhost * may use http). Ignored by the local provider. */ apiBaseUrl?: string; /** Batch size for API embedding requests. Default 64. */ batchSize?: number; }; global: { enabled: boolean; }; gitLearnPatterns: string[]; physics: PhysicsConfig; /** MMR (Maximal Marginal Relevance) re-ranking settings. Applied only when * embeddings are available — needs doc-to-doc similarity. */ mmr: { enabled: boolean; /** 1.0 = pure relevance (current behavior). 0.0 = pure diversity. 0.7 is * a typical balance. */ lambda: number; }; search: { /** Multiplier applied to local-store scores when merged with global * results (searchBothHybrid). 1.0 = no bias, 1.2 = 20% local priority. */ localBump: number; }; /** Replay settings — biologically-inspired rehearsal during consolidation. */ replay: { /** How many surviving memories to rehearse per sleep cycle. 0 disables. */ count: number; }; /** Auto-promote completed sessions into trace-layer memories on sleep. */ autoTraceCapture: boolean; /** Only promote sessions whose session_complete event is within N days. */ autoTraceWindowDays: number; /** Mid-session pinned-rule re-injection via the Claude Code UserPromptSubmit * hook. When enabled, pinned memories are re-injected each turn within the * given token budget. */ pinnedInject: { enabled: boolean; budget: number; }; /** Memory scope isolation (v39): when true (default), ambient context * (`hippo context`, the UserPromptSubmit hook, /v1/context, MCP * hippo_context) excludes memories owned by OTHER projects; explicit * recall is unaffected. Set false to disable the ORIGIN PARTITION only - * the secret veto is unconditional for ambient surfaces and no config or * flag re-includes secret-flagged rows (explicit recall still returns * them). See docs/plans/2026-07-01-memory-scope-isolation.md. */ contextProjectIsolation: boolean; extraction: { enabled: boolean | 'auto'; model: string; }; multihop: { enabled: boolean; }; salience: { enabled: boolean; recentWindow: number; overlapThreshold: number; minContentLength: number; maxRepeatErrors: number; }; ambient: { enabled: boolean; }; /** LC2-E3: opt-in learned memory-value rescue veto on the sleep decay pass * (docs/plans/2026-08-10-lc2-e3-mv-wiring.md). Default OFF — the frozen * E2 weights (src/memory-value-weights.ts) only run when explicitly * enabled; no other knobs in v1 (the rescue budget is a code constant * tied to E2 evidence, not user-tunable). */ memoryValue: { enabled: boolean; }; } export declare function loadConfig(hippoRoot: string): HippoConfig; export declare function saveConfig(hippoRoot: string, config: HippoConfig): void; //# sourceMappingURL=config.d.ts.map