/** * regions.ts – Limbic-system region map and affective state schema. * * The limbic model is the *dynamic* affective/motivational layer that rides on * top of the (static) psychometric personality. Where the hippocampus * (HybridMambaModel + MemoryStore) holds *what the agent knows*, the limbic * model holds *how the agent currently feels and what it is driven toward* — * and learns the dynamics of that, in WebGPU, from experience. * * This file is the single source of truth for the affective state vector that * every other limbic module (model, trainer, runtime service) indexes into. * Keep the dimension ids in sync with the runtime compiler in * `agent-runtime/src/builderforce/limbic.ts` — the two are coupled solely by * these string ids and the {@link LIMBIC_DIM} indices. * * Region → state mapping (mirrors the labelled diagram): * • Amygdala → salience / threat appraisal → drives valence + arousal * • Hypothalamus → homeostatic drives (curiosity, caution, effort, social) * • Thalamus → attention gate (how much incoming signal is admitted) * • Basal ganglia → action selection bias (explore vs. exploit) * • Hippocampus → reused (existing SSM memory); feeds the experience input */ /** The five modelled limbic regions. Hippocampus is reused, not re-modelled. */ export declare const REGION: { readonly amygdala: "amygdala"; readonly hypothalamus: "hypothalamus"; readonly thalamus: "thalamus"; readonly basalGanglia: "basal_ganglia"; readonly hippocampus: "hippocampus"; }; export type Region = (typeof REGION)[keyof typeof REGION]; /** * Canonical indices into the affective state vector. The vector is a dense * Float32Array of length {@link LIMBIC_STATE_DIM}. Core affect (valence, * arousal) is the 2D summary; the remaining dims are the per-region drives the * agent's behaviour is modulated by. */ export declare const LIMBIC_DIM: { /** Core affect — pleasantness. Range [-1, +1] (negative .. positive). */ readonly valence: 0; /** Core affect — activation. Range [0, 1] (calm .. activated). */ readonly arousal: 1; /** Hypothalamus drive — appetite for novelty/exploration. Range [0, 1]. */ readonly driveCuriosity: 2; /** Hypothalamus drive — appetite for safety/guardrails. Range [0, 1]. */ readonly driveCaution: 3; /** Hypothalamus drive — available energy. Range [0, 1] (fatigued .. fresh). */ readonly driveEffort: 4; /** Hypothalamus drive — appetite for communication/collaboration. Range [0, 1]. */ readonly driveSocial: 5; /** Thalamus — attention gain on incoming signal. Range [0, 1]. */ readonly attention: 6; /** Basal ganglia — explore(1) vs. exploit(0) action-selection bias. Range [0, 1]. */ readonly exploration: 7; }; export type LimbicDimName = keyof typeof LIMBIC_DIM; /** Length of the affective state vector. */ export declare const LIMBIC_STATE_DIM = 8; /** Ordered dim names, index-aligned with {@link LIMBIC_DIM}. */ export declare const LIMBIC_DIM_NAMES: LimbicDimName[]; /** Inclusive [min, max] bounds per state dim, index-aligned. Valence is signed. */ export declare const LIMBIC_BOUNDS: ReadonlyArray; /** * Neutral resting state — the default homeostatic setpoint before personality * pulls it anywhere. Calm, mildly positive, balanced drives, full attention, * slightly exploit-biased. */ export declare const NEUTRAL_STATE: ReadonlyArray; /** Clamp a single state dim to its bounds. */ export declare function clampDim(index: number, value: number): number; /** Clamp a whole state vector in place and return it. */ export declare function clampState(state: Float32Array): Float32Array; /** A fresh neutral state vector. */ export declare function neutralState(): Float32Array; /** Build a labelled record from a dense state vector (for logging / transport). */ export declare function stateToRecord(state: ArrayLike): Record; /** Build a dense state vector from a (possibly partial) labelled record. */ export declare function recordToState(rec: Partial>): Float32Array; /** * The static psychometric traits (0..100, 50 = neutral) that pull the resting * affective setpoint away from {@link NEUTRAL_STATE}. A subset of the full * personality vector — only the dimensions that map to a limbic drive. All * optional; an omitted trait is treated as neutral (50). * * Keep the mapping in {@link personalitySetpoint} in sync with the runtime * compiler `deriveLimbicSetpoints` in `@builderforce/agent-tools` so the on-prem * runtime, the cloud engine, and this WebGPU trainer settle on the SAME baseline * for the same personality. The two are coupled only by this mapping. */ export interface PersonalityTraits { openness?: number; emotionality?: number; conscientiousness?: number; extraversion?: number; /** Regulatory focus: 0 = prevention, 100 = promotion. */ regulatoryFocus?: number; riskTolerance?: number; grit?: number; /** Schwartz "stimulation" value. */ stimulation?: number; } /** * Derive the personality-conditioned resting SETPOINT from a trait vector — the * homeostatic target the limbic dynamics relax toward and that the trainable * affect model rides on top of ("personality = setpoints, limbic = dynamics"). * Returns a fresh clamped 8-dim state vector. A fully-neutral trait vector yields * {@link NEUTRAL_STATE}. Mirrors `deriveLimbicSetpoints` in `@builderforce/agent-tools`. */ export declare function personalitySetpoint(traits: PersonalityTraits | undefined): Float32Array; //# sourceMappingURL=regions.d.ts.map