/** * schema-domain-learning.ts, config for idle-time memory consolidation * (`learning.consolidation.*`, shipped as a behavioral contract in * state/memory-consolidation-config.ts). * * WHY THIS FILE EXISTS. The consolidation keys were read directly off the raw * user `learning` block (resolveMemoryConsolidationConfig → getRaw()), but the * shared config schema had no `learning` domain at all, so DEFAULT_CONFIG * carried no `learning` section and ConfigManager.resolvePath threw * "section 'learning' does not exist" for every typed get('learning.…') / * set('learning.…'). Registering the domain (same idiom as the worktree fix) * makes typed get/set safe everywhere without changing the resolver: the * resolver still reads getRaw().learning.consolidation and now simply finds the * schema defaults there when the user set nothing, which are identical to its * own DEFAULT_MEMORY_CONSOLIDATION_CONFIG fallback (a test guards that they * never drift), so its output is unchanged. * * The scalar keys ARE ordinary ConfigKeys, registered through the string-keyed * ConfigSettingDefinition[] the composition spreads into CONFIG_SCHEMA (as the * runtime domain does), so they need no edit to the grandfathered schema-types.ts * ConfigKey union; the LearningConfig type is augmented onto GoodVibesConfig here, * co-located with its default below. */ import { type ConfigSettingDefinition } from './schema-shared.js'; /** Idle-time memory consolidation policy (`learning.consolidation.*`). On by default; `enabled: false` is the off switch. */ export interface LearningConfig { consolidation: { enabled: boolean; intervalMs: number; minIdleMs: number; maxMergesPerRun: number; maxDecaysPerRun: number; maxProposalsPerRun: number; decayAgeDays: number; decayConfidenceStep: number; archiveConfidenceFloor: number; }; } declare module './schema-types.js' { interface GoodVibesConfig { learning: LearningConfig; } } /** * Defaults MUST equal DEFAULT_MEMORY_CONSOLIDATION_CONFIG in * state/memory-consolidation-config.ts (that module is the behavioral contract; * this is the config-surface mirror). A test asserts they are identical so the * two cannot drift, duplicated here rather than imported to keep the config * layer free of a dependency on the state layer. */ export declare const learningConfigDefaults: { learning: LearningConfig; }; export declare const learningConfigSettings: ConfigSettingDefinition[]; //# sourceMappingURL=schema-domain-learning.d.ts.map