@seanhogg/builderforce-memory-engine 2026.9.32 → 2026.9.34

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -65,8 +65,8 @@ export { ACTIVATIONS_WGSL, ACTIVATIONS_BACKWARD_WGSL, SOFTMAX_FORWARD_WGSL, SOFT
65
65
  export { SSD_FORWARD_WGSL, SSD_BACKWARD_WGSL } from './kernels/ssd.js';
66
66
  export { COMPLEX_SSD_FORWARD_WGSL, COMPLEX_SSD_BACKWARD_WGSL } from './kernels/complex_ssd.js';
67
67
  export { ATTENTION_FORWARD_WGSL, ATTENTION_BACKWARD_WGSL, SOFTMAX_WGSL } from './kernels/attention.js';
68
- export { REGION, LIMBIC_DIM, LIMBIC_DIM_NAMES, LIMBIC_STATE_DIM, LIMBIC_BOUNDS, NEUTRAL_STATE, clampDim, clampState, neutralState, stateToRecord, recordToState, personalitySetpoint, LimbicModel, DEFAULT_LIMBIC_CONFIG, DEFAULT_LIMBIC_SEED, LimbicTrainer, } from './limbic/index.js';
69
- export type { Region, LimbicDimName, PersonalityTraits, LimbicModelConfig, LimbicForward, LimbicParam, LimbicSample, LimbicTrainOptions, } from './limbic/index.js';
68
+ export { REGION, LIMBIC_DIM, LIMBIC_DIM_NAMES, LIMBIC_STATE_DIM, LIMBIC_BOUNDS, NEUTRAL_STATE, clampDim, clampState, neutralState, stateToRecord, recordToState, limbicSetpoints, personalitySetpoint, clampLimbicDim, neutralLimbicState, meanLimbicSetpoints, applyLimbicDelta, appraiseAmygdala, homeostasis, thalamusGate, basalGangliaExploreBias, basalGangliaSelect, compileLimbicState, buildLimbicBlock, LIMBIC_BLOCK_HEADER, appraiseTask, LimbicModel, DEFAULT_LIMBIC_CONFIG, DEFAULT_LIMBIC_SEED, LimbicTrainer, } from './limbic/index.js';
69
+ export type { Region, LimbicDimName, PersonalityTraits, LimbicState, LimbicSetpoints, LimbicDelta, LimbicEvent, LimbicExecParams, CompiledLimbic, LimbicModelConfig, LimbicForward, LimbicParam, LimbicSample, LimbicTrainOptions, } from './limbic/index.js';
70
70
  export { LIMBIC_AFFECT_WGSL } from './kernels/limbic_affect.js';
71
71
  export * from './experience/index.js';
72
72
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -69,7 +69,7 @@ export { COMPLEX_SSD_FORWARD_WGSL, COMPLEX_SSD_BACKWARD_WGSL } from './kernels/c
69
69
  // Attention kernels
70
70
  export { ATTENTION_FORWARD_WGSL, ATTENTION_BACKWARD_WGSL, SOFTMAX_WGSL } from './kernels/attention.js';
71
71
  // ── Limbic system (trainable affective dynamics) ──────────────────────────────
72
- export { REGION, LIMBIC_DIM, LIMBIC_DIM_NAMES, LIMBIC_STATE_DIM, LIMBIC_BOUNDS, NEUTRAL_STATE, clampDim, clampState, neutralState, stateToRecord, recordToState, personalitySetpoint, LimbicModel, DEFAULT_LIMBIC_CONFIG, DEFAULT_LIMBIC_SEED, LimbicTrainer, } from './limbic/index.js';
72
+ export { REGION, LIMBIC_DIM, LIMBIC_DIM_NAMES, LIMBIC_STATE_DIM, LIMBIC_BOUNDS, NEUTRAL_STATE, clampDim, clampState, neutralState, stateToRecord, recordToState, limbicSetpoints, personalitySetpoint, clampLimbicDim, neutralLimbicState, meanLimbicSetpoints, applyLimbicDelta, appraiseAmygdala, homeostasis, thalamusGate, basalGangliaExploreBias, basalGangliaSelect, compileLimbicState, buildLimbicBlock, LIMBIC_BLOCK_HEADER, appraiseTask, LimbicModel, DEFAULT_LIMBIC_CONFIG, DEFAULT_LIMBIC_SEED, LimbicTrainer, } from './limbic/index.js';
73
73
  export { LIMBIC_AFFECT_WGSL } from './kernels/limbic_affect.js';
74
74
  // ── Experience (demonstrations, Train Once skills, runs) ─────────────────────
75
75
  export * from './experience/index.js';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,iFAAiF;AAEjF,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEtE,oBAAoB;AACpB,OAAO,EAAE,WAAW,EAAE,MAAQ,yBAAyB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAQ,yBAAyB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAQ,yBAAyB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAE5D,sCAAsC;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAErD,kFAAkF;AAClF,OAAO,EACH,eAAe,EACf,sBAAsB,EACtB,kBAAkB,EAClB,gBAAgB,EAChB,UAAU,GACb,MAAM,gBAAgB,CAAC;AAUxB,kFAAkF;AAClF,OAAO,EACH,oBAAoB,EACpB,oBAAoB,EACpB,YAAY,EACZ,YAAY,EACZ,wBAAwB,EACxB,sBAAsB,EACtB,sBAAsB,EACtB,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,EACnB,oBAAoB,EACpB,YAAY,GACf,MAAM,qBAAqB,CAAC;AAmB7B,kFAAkF;AAClF,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAClH,+DAA+D;AAC/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAGrD,OAAO,EAAE,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAG7D,mFAAmF;AACnF,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAE/E,OAAO,EAAE,iBAAiB,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AAGvF,iFAAiF;AAEjF,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE5G,kFAAkF;AAClF,0EAA0E;AAC1E,OAAO,EACH,eAAe,EAAE,YAAY,EAAE,gBAAgB,EAC/C,iBAAiB,EAAE,YAAY,EAAE,YAAY,EAAE,mBAAmB,EAClE,gBAAgB,EAAE,oBAAoB,EAAE,wBAAwB,GACnE,MAAM,yBAAyB,CAAC;AAIjC,OAAO,EACH,gBAAgB,EAAE,iBAAiB,EAAE,eAAe,EACpD,kBAAkB,EAAE,cAAc,EAAE,cAAc,GACrD,MAAM,0BAA0B,CAAC;AAIlC,OAAO,EACH,aAAa,EAAE,cAAc,EAAE,cAAc,EAAE,eAAe,EAC9D,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,GACjD,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACH,MAAM,EACN,QAAQ,EACR,UAAU,EACV,MAAM,EACN,SAAS,EACT,eAAe,EACf,gBAAgB,EAChB,gBAAgB,GACnB,MAAM,wBAAwB,CAAC;AAEhC,iFAAiF;AAEjF,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAIlD,mFAAmF;AAEnF,OAAO,EACH,eAAe,EACf,gBAAgB,EAChB,gBAAgB,EAChB,aAAa,EACb,aAAa,EACb,kBAAkB,EAClB,aAAa,EACb,aAAa,GAChB,MAAM,kBAAkB,CAAC;AAS1B,mFAAmF;AAEnF,OAAO,EACH,cAAc,EACd,cAAc,EACd,iBAAiB,EACjB,oBAAoB,EACpB,UAAU,EACV,UAAU,EACV,UAAU,EACV,oBAAoB,EACpB,aAAa,EACb,iBAAiB,EACjB,YAAY,EACZ,kBAAkB,EAClB,MAAM,EACN,UAAU,GACb,MAAM,mBAAmB,CAAC;AAY3B,oFAAoF;AAEpF,OAAO,EACH,oBAAoB,EACpB,cAAc,EACd,qBAAqB,EACrB,oBAAoB,GACvB,MAAM,mBAAmB,CAAC;AAG3B,wFAAwF;AACxF,iFAAiF;AACjF,mDAAmD;AAEnD,OAAO,EACH,sBAAsB,EACtB,sBAAsB,EACtB,gBAAgB,EAChB,2BAA2B,EAC3B,kBAAkB,EAClB,eAAe,EACf,mBAAmB,EACnB,kBAAkB,EAClB,YAAY,EACZ,aAAa,EACb,qBAAqB,EACrB,sBAAsB,EACtB,iBAAiB,GACpB,MAAM,mBAAmB,CAAC;AAe3B,iFAAiF;AAEjF,OAAO,EACH,cAAc,EACd,mBAAmB,EACnB,aAAa,EACb,aAAa,EACb,cAAc,EACd,iBAAiB,EACjB,iBAAiB,EACjB,uBAAuB,EACvB,0BAA0B,EAC1B,YAAY,EACZ,oBAAoB,EACpB,MAAM,IAAI,WAAW,EACrB,WAAW,EACX,UAAU,EACV,YAAY,EACZ,GAAG,GACN,MAAM,kBAAkB,CAAC;AAc1B,iFAAiF;AAEjF,OAAO,EAAE,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAEhG,OAAO,EACH,eAAe,EACf,aAAa,EACb,iBAAiB,EACjB,mBAAmB,EACnB,eAAe,EACf,mBAAmB,GACtB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAEjE,iFAAiF;AAEjF,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAkB9E,iFAAiF;AAEjF,OAAO,EACH,UAAU,EACV,mBAAmB,EACnB,wBAAwB,EACxB,mBAAmB,EACnB,qBAAqB,EACrB,eAAe,EACf,cAAc,EACd,UAAU,EACV,YAAY,EACZ,IAAI,EACJ,UAAU,GACb,MAAM,sBAAsB,CAAC;AAE9B,iFAAiF;AAEjF,OAAO,EACH,YAAY,EACZ,cAAc,EACd,WAAW,EACX,WAAW,EACX,YAAY,EACZ,cAAc,EACd,sBAAsB,EACtB,wBAAwB,EACxB,cAAc,GACjB,MAAM,yBAAyB,CAAC;AAEjC,iFAAiF;AAEjF,8BAA8B;AAC9B,OAAO,EAAE,2BAA2B,EAAE,4BAA4B,EAAE,MAC3D,6BAA6B,CAAC;AACvC,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAC3C,qBAAqB,CAAC;AAC/B,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAC3C,gCAAgC,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC1F,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,MACpC,4BAA4B,CAAC;AACtC,OAAO,EAAE,gBAAgB,EAAE,yBAAyB,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAC1F,0BAA0B,CAAC;AAEpC,sBAAsB;AACtB,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MACrC,kBAAkB,CAAC;AAE5B,8BAA8B;AAC9B,OAAO,EAAE,wBAAwB,EAAE,yBAAyB,EAAE,MACrD,0BAA0B,CAAC;AAEpC,oBAAoB;AACpB,OAAO,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,YAAY,EAAE,MAC/D,wBAAwB,CAAC;AAElC,iFAAiF;AAEjF,OAAO,EACH,MAAM,EACN,UAAU,EACV,gBAAgB,EAChB,gBAAgB,EAChB,aAAa,EACb,aAAa,EACb,QAAQ,EACR,UAAU,EACV,YAAY,EACZ,aAAa,EACb,aAAa,EACb,eAAe,EACf,mBAAmB,EACnB,cAAc,EACd,kBAAkB,EAClB,mBAAmB,EACnB,gBAAgB,EAChB,gBAAgB,EAChB,WAAW,EACX,YAAY,EACZ,uBAAuB,EACvB,kBAAkB,EAClB,kBAAkB,EAClB,gBAAgB,EAChB,mBAAmB,EACnB,YAAY,EACZ,WAAW,EACX,qBAAqB,EACrB,mBAAmB,EACnB,aAAa,GAChB,MAAM,mBAAmB,CAAC;AAkB3B,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAGhE,gFAAgF;AAEhF,cAAc,uBAAuB,CAAC"}
@@ -0,0 +1,85 @@
1
+ /**
2
+ * affect.ts – the heuristic limbic regions and the directive compiler.
3
+ *
4
+ * The labelled (record-shaped) face of the limbic system every agent surface runs:
5
+ * the on-prem runtime, the cloud engine in a Worker, and the VS Code agent. Where
6
+ * the psychometric personality is *static* (a trait vector → behaviour), this layer
7
+ * is *dynamic* (a live affective state → behaviour): personality sets the
8
+ * homeostatic setpoints ({@link limbicSetpoints}), the regions push the live state
9
+ * around them in response to experience.
10
+ *
11
+ * • Amygdala → fast salience/threat appraisal of an event → affect delta
12
+ * • Hypothalamus → homeostasis: relax toward setpoints; effort fatigue
13
+ * • Thalamus → attention gate (inverted-U of arousal — Yerkes–Dodson)
14
+ * • Basal ganglia → action-selection bias (explore vs. exploit)
15
+ * • Hippocampus → reused (the SSM memory) — supplies the experience embedding
16
+ * the trainable {@link LimbicModel} learns from.
17
+ *
18
+ * Pure and deterministic (no GPU, no I/O, no imports beyond the schema), so it
19
+ * runs anywhere and is the trainable model's heuristic teacher and always-available
20
+ * fallback. Published alone as `@seanhogg/builderforce-memory-engine/limbic`.
21
+ */
22
+ import { type LimbicDimName, type PersonalityTraits } from "./regions.js";
23
+ export { REGION, LIMBIC_DIM, LIMBIC_DIM_NAMES, LIMBIC_STATE_DIM, LIMBIC_BOUNDS, NEUTRAL_STATE, clampDim, clampState, neutralState, stateToRecord, recordToState, limbicSetpoints, personalitySetpoint, } from "./regions.js";
24
+ export type { Region, LimbicDimName, PersonalityTraits } from "./regions.js";
25
+ export type LimbicState = Record<LimbicDimName, number>;
26
+ export type LimbicSetpoints = LimbicState;
27
+ export type LimbicDelta = Partial<Record<LimbicDimName, number>>;
28
+ /** Clamp one named dim to its bounds (NaN → the lower bound). */
29
+ export declare function clampLimbicDim(name: LimbicDimName, v: number): number;
30
+ /** A fresh labelled neutral state. */
31
+ export declare function neutralLimbicState(): LimbicState;
32
+ /**
33
+ * The resting setpoints of several personalities active at once (an agent's own
34
+ * personality plus its assigned personas): the mean of each one's
35
+ * {@link limbicSetpoints}. Neutral when there are none.
36
+ */
37
+ export declare function meanLimbicSetpoints(traits: ReadonlyArray<PersonalityTraits>): LimbicSetpoints;
38
+ export declare function applyLimbicDelta(state: LimbicState, delta: LimbicDelta): LimbicState;
39
+ export interface LimbicEvent {
40
+ kind: "success" | "progress" | "error" | "blocked" | "risk" | "feedback" | "idle";
41
+ intensity?: number;
42
+ sign?: number;
43
+ text?: string;
44
+ }
45
+ export declare function appraiseAmygdala(event: LimbicEvent): LimbicDelta;
46
+ export declare function homeostasis(state: LimbicState, setpoints: LimbicSetpoints, opts?: {
47
+ rate?: number;
48
+ fatigue?: number;
49
+ }): LimbicState;
50
+ export declare function thalamusGate(state: LimbicState, optimalArousal?: number): number;
51
+ export declare function basalGangliaExploreBias(state: LimbicState): number;
52
+ export declare function basalGangliaSelect<T extends {
53
+ novelty: number;
54
+ }>(state: LimbicState, options: T[]): {
55
+ choice: T | null;
56
+ exploreBias: number;
57
+ };
58
+ /**
59
+ * Execution nudges the limbic state asks for. Structurally a subset of an agent
60
+ * host's exec params: the compiler only ever raises thinking to a floor of
61
+ * "medium" or "high" and turns reasoning on — the host merges these onto its own
62
+ * params with its own think-level ladder.
63
+ */
64
+ export type LimbicExecParams = {
65
+ thinkLevel?: "medium" | "high";
66
+ reasoningLevel?: "on";
67
+ /** Signed temperature delta in roughly [-0.3, 0.3]. */
68
+ temperatureDelta?: number;
69
+ };
70
+ export type CompiledLimbic = {
71
+ directives: string[];
72
+ params: LimbicExecParams;
73
+ };
74
+ export declare function compileLimbicState(state: LimbicState): CompiledLimbic;
75
+ /** Heading of the system-prompt block {@link buildLimbicBlock} renders. */
76
+ export declare const LIMBIC_BLOCK_HEADER = "Current affective state (execute accordingly):";
77
+ /** Render the limbic directives as a system-prompt sub-block. '' when at rest. */
78
+ export declare function buildLimbicBlock(state: LimbicState | undefined): string;
79
+ /**
80
+ * Appraise a task's text into an initial affective deviation from `base`
81
+ * (defaults to neutral): risky/destructive work raises caution + arousal;
82
+ * large/complex work raises effort engagement + curiosity. Deterministic.
83
+ */
84
+ export declare function appraiseTask(text: string, base?: LimbicState): LimbicState;
85
+ //# sourceMappingURL=affect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"affect.d.ts","sourceRoot":"","sources":["../../src/limbic/affect.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,226 @@
1
+ /**
2
+ * affect.ts – the heuristic limbic regions and the directive compiler.
3
+ *
4
+ * The labelled (record-shaped) face of the limbic system every agent surface runs:
5
+ * the on-prem runtime, the cloud engine in a Worker, and the VS Code agent. Where
6
+ * the psychometric personality is *static* (a trait vector → behaviour), this layer
7
+ * is *dynamic* (a live affective state → behaviour): personality sets the
8
+ * homeostatic setpoints ({@link limbicSetpoints}), the regions push the live state
9
+ * around them in response to experience.
10
+ *
11
+ * • Amygdala → fast salience/threat appraisal of an event → affect delta
12
+ * • Hypothalamus → homeostasis: relax toward setpoints; effort fatigue
13
+ * • Thalamus → attention gate (inverted-U of arousal — Yerkes–Dodson)
14
+ * • Basal ganglia → action-selection bias (explore vs. exploit)
15
+ * • Hippocampus → reused (the SSM memory) — supplies the experience embedding
16
+ * the trainable {@link LimbicModel} learns from.
17
+ *
18
+ * Pure and deterministic (no GPU, no I/O, no imports beyond the schema), so it
19
+ * runs anywhere and is the trainable model's heuristic teacher and always-available
20
+ * fallback. Published alone as `@seanhogg/builderforce-memory-engine/limbic`.
21
+ */
22
+ import { LIMBIC_DIM, LIMBIC_DIM_NAMES, NEUTRAL_STATE, clampDim, limbicSetpoints, stateToRecord, } from "./regions.js";
23
+ export { REGION, LIMBIC_DIM, LIMBIC_DIM_NAMES, LIMBIC_STATE_DIM, LIMBIC_BOUNDS, NEUTRAL_STATE, clampDim, clampState, neutralState, stateToRecord, recordToState, limbicSetpoints, personalitySetpoint, } from "./regions.js";
24
+ /** Clamp one named dim to its bounds (NaN → the lower bound). */
25
+ export function clampLimbicDim(name, v) {
26
+ return clampDim(LIMBIC_DIM[name], v);
27
+ }
28
+ /** A fresh labelled neutral state. */
29
+ export function neutralLimbicState() {
30
+ return stateToRecord(NEUTRAL_STATE);
31
+ }
32
+ /**
33
+ * The resting setpoints of several personalities active at once (an agent's own
34
+ * personality plus its assigned personas): the mean of each one's
35
+ * {@link limbicSetpoints}. Neutral when there are none.
36
+ */
37
+ export function meanLimbicSetpoints(traits) {
38
+ if (traits.length === 0)
39
+ return neutralLimbicState();
40
+ const acc = neutralLimbicState();
41
+ for (const name of LIMBIC_DIM_NAMES)
42
+ acc[name] = 0;
43
+ for (const t of traits) {
44
+ const sp = limbicSetpoints(t);
45
+ for (const name of LIMBIC_DIM_NAMES)
46
+ acc[name] += sp[name];
47
+ }
48
+ for (const name of LIMBIC_DIM_NAMES)
49
+ acc[name] /= traits.length;
50
+ return acc;
51
+ }
52
+ export function applyLimbicDelta(state, delta) {
53
+ const out = { ...state };
54
+ for (const name of LIMBIC_DIM_NAMES) {
55
+ const d = delta[name];
56
+ if (typeof d === "number" && !Number.isNaN(d))
57
+ out[name] = clampLimbicDim(name, out[name] + d);
58
+ }
59
+ return out;
60
+ }
61
+ const I = (e) => Math.max(0, Math.min(1, e.intensity ?? 0.5));
62
+ export function appraiseAmygdala(event) {
63
+ const k = I(event);
64
+ switch (event.kind) {
65
+ case "success":
66
+ return { valence: +0.5 * k, arousal: -0.15 * k, driveCaution: -0.1 * k, driveEffort: -0.05 * k };
67
+ case "progress":
68
+ return { valence: +0.25 * k, arousal: +0.05 * k, driveEffort: -0.03 * k };
69
+ case "error":
70
+ return { valence: -0.45 * k, arousal: +0.4 * k, driveCaution: +0.3 * k, attention: +0.15 * k };
71
+ case "blocked":
72
+ return { valence: -0.35 * k, arousal: +0.3 * k, driveEffort: -0.15 * k, driveSocial: +0.2 * k };
73
+ case "risk":
74
+ return { arousal: +0.35 * k, driveCaution: +0.4 * k, attention: +0.2 * k, exploration: -0.15 * k };
75
+ case "feedback": {
76
+ const s = Math.sign(event.sign ?? 1) || 1;
77
+ return { valence: 0.4 * k * s, arousal: 0.1 * k, driveSocial: +0.1 * k };
78
+ }
79
+ case "idle":
80
+ return { arousal: -0.2 * k, driveEffort: +0.15 * k };
81
+ default:
82
+ return {};
83
+ }
84
+ }
85
+ // ── Hypothalamus — homeostasis: relax toward setpoints + effort fatigue ──────────
86
+ export function homeostasis(state, setpoints, opts = {}) {
87
+ const rate = opts.rate ?? 0.1;
88
+ const fatigue = opts.fatigue ?? 0.0;
89
+ const out = { ...state };
90
+ for (const name of LIMBIC_DIM_NAMES) {
91
+ out[name] = clampLimbicDim(name, out[name] + rate * (setpoints[name] - out[name]));
92
+ }
93
+ if (fatigue > 0)
94
+ out.driveEffort = clampLimbicDim("driveEffort", out.driveEffort - fatigue);
95
+ return out;
96
+ }
97
+ // ── Thalamus — attention gate (inverted-U of arousal, Yerkes–Dodson) ─────────────
98
+ export function thalamusGate(state, optimalArousal = 0.5) {
99
+ const d = state.arousal - optimalArousal;
100
+ const gain = 1 - 2.8 * d * d;
101
+ return Math.max(0.1, Math.min(1, gain));
102
+ }
103
+ // ── Basal ganglia — action selection (explore vs. exploit) ───────────────────────
104
+ export function basalGangliaExploreBias(state) {
105
+ let b = 0.5 * state.exploration + 0.3 * state.driveCuriosity;
106
+ b += 0.15 * state.valence;
107
+ b -= 0.25 * (1 - state.driveEffort);
108
+ b -= 0.2 * (state.driveCaution - 0.5);
109
+ return Math.max(0, Math.min(1, b));
110
+ }
111
+ export function basalGangliaSelect(state, options) {
112
+ if (options.length === 0)
113
+ return { choice: null, exploreBias: basalGangliaExploreBias(state) };
114
+ const bias = basalGangliaExploreBias(state);
115
+ let best = options[0];
116
+ let bestScore = -Infinity;
117
+ for (const o of options) {
118
+ const nov = Math.max(0, Math.min(1, o.novelty));
119
+ const sc = -Math.abs(nov - bias);
120
+ if (sc > bestScore) {
121
+ bestScore = sc;
122
+ best = o;
123
+ }
124
+ }
125
+ return { choice: best, exploreBias: bias };
126
+ }
127
+ const HI_F = 0.6;
128
+ const LO_F = 0.4;
129
+ export function compileLimbicState(state) {
130
+ const directives = [];
131
+ const params = {};
132
+ // The deeper of the floors asked for so far ("high" beats "medium").
133
+ const floor = (level) => {
134
+ if (params.thinkLevel !== "high")
135
+ params.thinkLevel = level;
136
+ };
137
+ if (state.valence <= -0.4) {
138
+ directives.push("Affect (negative): recent steps have gone badly — slow down, avoid rash or destructive actions, and re-verify your assumptions before proceeding.");
139
+ floor("high");
140
+ params.reasoningLevel = "on";
141
+ }
142
+ else if (state.valence >= 0.4) {
143
+ directives.push("Affect (positive): things are going well — keep momentum, but don't get sloppy.");
144
+ }
145
+ if (state.arousal >= 0.7) {
146
+ directives.push("Arousal (heightened): you are highly activated — resist the urge to rush; double-check before any irreversible step.");
147
+ floor("high");
148
+ }
149
+ else if (state.arousal <= 0.15) {
150
+ directives.push("Arousal (low): this is routine — keep it lightweight and efficient.");
151
+ }
152
+ if (state.driveCaution >= HI_F) {
153
+ directives.push("Drive (caution): heightened — prefer reversible steps, add guardrails, and confirm risky or destructive operations.");
154
+ floor("medium");
155
+ }
156
+ else if (state.driveCaution <= LO_F) {
157
+ directives.push("Drive (caution): relaxed — bias to action on low-risk work.");
158
+ }
159
+ if (state.driveCuriosity >= HI_F) {
160
+ directives.push("Drive (curiosity): high — it is appropriate to investigate and consider alternative approaches.");
161
+ }
162
+ if (state.driveEffort <= LO_F) {
163
+ directives.push("Drive (effort): energy is low — keep scope tight, avoid over-engineering, checkpoint progress, and consider escalating rather than grinding.");
164
+ }
165
+ if (state.driveSocial >= HI_F) {
166
+ directives.push("Drive (social): communicate proactively — surface progress and ask for input when blocked.");
167
+ }
168
+ else if (state.driveSocial <= LO_F) {
169
+ directives.push("Drive (social): work heads-down — narrate only what matters.");
170
+ }
171
+ const attentionGain = thalamusGate(state);
172
+ if (attentionGain <= 0.5) {
173
+ directives.push("Attention (degraded): your attention gate is low — re-read the task carefully and do not skip verification steps.");
174
+ floor("medium");
175
+ }
176
+ const explore = basalGangliaExploreBias(state);
177
+ if (explore >= 0.7) {
178
+ directives.push("Action selection: lean exploratory — try a novel approach before settling on the obvious one.");
179
+ }
180
+ else if (explore <= 0.3) {
181
+ directives.push("Action selection: lean exploitative — use the proven, known approach and avoid unnecessary detours.");
182
+ }
183
+ let dTemp = 0;
184
+ dTemp += 0.2 * (state.exploration - 0.5) * 2;
185
+ dTemp += 0.06 * (state.driveCuriosity - 0.5) * 2;
186
+ dTemp += 0.08 * state.valence;
187
+ dTemp -= 0.16 * (state.driveCaution - 0.5) * 2;
188
+ dTemp -= 0.08 * Math.max(0, state.arousal - 0.7);
189
+ const clampedTemp = Math.max(-0.3, Math.min(0.3, Math.round(dTemp * 100) / 100));
190
+ if (Math.abs(clampedTemp) >= 0.02)
191
+ params.temperatureDelta = clampedTemp;
192
+ return { directives, params };
193
+ }
194
+ /** Heading of the system-prompt block {@link buildLimbicBlock} renders. */
195
+ export const LIMBIC_BLOCK_HEADER = "Current affective state (execute accordingly):";
196
+ /** Render the limbic directives as a system-prompt sub-block. '' when at rest. */
197
+ export function buildLimbicBlock(state) {
198
+ if (!state)
199
+ return "";
200
+ const { directives } = compileLimbicState(state);
201
+ if (directives.length === 0)
202
+ return "";
203
+ return [LIMBIC_BLOCK_HEADER, ...directives.map((d) => `- ${d}`)].join("\n");
204
+ }
205
+ // ── Task appraisal — derive an initial affect from a task description ─────────────
206
+ // For surfaces with no live event stream yet (cloud, VS Code): a quick amygdala
207
+ // read of the task text so the agent starts in a fitting affective state.
208
+ const RISK_PATTERNS = /\b(delete|drop|truncate|destroy|wipe|prod(uction)?|migrat|secret|credential|password|payment|billing|charge|refund|deploy|force[- ]?push|rm\s+-rf|irreversible|security|auth|breaking)\b/i;
209
+ const HARD_PATTERNS = /\b(refactor|rewrite|architecture|complex|large|entire|whole|across|end[- ]to[- ]end|overhaul)\b/i;
210
+ /**
211
+ * Appraise a task's text into an initial affective deviation from `base`
212
+ * (defaults to neutral): risky/destructive work raises caution + arousal;
213
+ * large/complex work raises effort engagement + curiosity. Deterministic.
214
+ */
215
+ export function appraiseTask(text, base = neutralLimbicState()) {
216
+ const t = text || "";
217
+ let s = base;
218
+ if (RISK_PATTERNS.test(t)) {
219
+ s = applyLimbicDelta(s, { driveCaution: +0.3, arousal: +0.25, attention: +0.15, exploration: -0.1 });
220
+ }
221
+ if (HARD_PATTERNS.test(t)) {
222
+ s = applyLimbicDelta(s, { driveCuriosity: +0.2, arousal: +0.1, exploration: +0.1 });
223
+ }
224
+ return s;
225
+ }
226
+ //# sourceMappingURL=affect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"affect.js","sourceRoot":"","sources":["../../src/limbic/affect.ts"],"names":[],"mappings":"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"}
@@ -2,11 +2,15 @@
2
2
  * Limbic system – trainable affective/motivational dynamics for agents.
3
3
  *
4
4
  * The dynamic counterpart to the (static) psychometric personality: where
5
- * personality sets the homeostatic setpoints, the limbic model learns — in
6
- * WebGPU — how an agent's affective state moves in response to experience.
5
+ * personality sets the homeostatic setpoints, the heuristic regions
6
+ * (`affect.ts`) move the live state in response to experience and the limbic
7
+ * model learns — in WebGPU — how it moves. The one limbic implementation; the
8
+ * dependency-free half ships alone as `@seanhogg/builderforce-memory-engine/limbic`.
7
9
  */
8
- export { REGION, LIMBIC_DIM, LIMBIC_DIM_NAMES, LIMBIC_STATE_DIM, LIMBIC_BOUNDS, NEUTRAL_STATE, clampDim, clampState, neutralState, stateToRecord, recordToState, personalitySetpoint, } from "./regions.js";
10
+ export { REGION, LIMBIC_DIM, LIMBIC_DIM_NAMES, LIMBIC_STATE_DIM, LIMBIC_BOUNDS, NEUTRAL_STATE, clampDim, clampState, neutralState, stateToRecord, recordToState, limbicSetpoints, personalitySetpoint, } from "./regions.js";
9
11
  export type { Region, LimbicDimName, PersonalityTraits } from "./regions.js";
12
+ export { clampLimbicDim, neutralLimbicState, meanLimbicSetpoints, applyLimbicDelta, appraiseAmygdala, homeostasis, thalamusGate, basalGangliaExploreBias, basalGangliaSelect, compileLimbicState, buildLimbicBlock, LIMBIC_BLOCK_HEADER, appraiseTask, } from "./affect.js";
13
+ export type { LimbicState, LimbicSetpoints, LimbicDelta, LimbicEvent, LimbicExecParams, CompiledLimbic, } from "./affect.js";
10
14
  export { LimbicModel, DEFAULT_LIMBIC_CONFIG, DEFAULT_LIMBIC_SEED } from "./limbic_model.js";
11
15
  export type { LimbicModelConfig, LimbicForward, LimbicParam } from "./limbic_model.js";
12
16
  export { LimbicTrainer } from "./limbic_trainer.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/limbic/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EACL,MAAM,EACN,UAAU,EACV,gBAAgB,EAChB,gBAAgB,EAChB,aAAa,EACb,aAAa,EACb,QAAQ,EACR,UAAU,EACV,YAAY,EACZ,aAAa,EACb,aAAa,EACb,mBAAmB,GACpB,MAAM,cAAc,CAAC;AACtB,YAAY,EAAE,MAAM,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAE7E,OAAO,EAAE,WAAW,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAC5F,YAAY,EAAE,iBAAiB,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEvF,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,YAAY,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/limbic/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EACL,MAAM,EACN,UAAU,EACV,gBAAgB,EAChB,gBAAgB,EAChB,aAAa,EACb,aAAa,EACb,QAAQ,EACR,UAAU,EACV,YAAY,EACZ,aAAa,EACb,aAAa,EACb,eAAe,EACf,mBAAmB,GACpB,MAAM,cAAc,CAAC;AACtB,YAAY,EAAE,MAAM,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAE7E,OAAO,EACL,cAAc,EACd,kBAAkB,EAClB,mBAAmB,EACnB,gBAAgB,EAChB,gBAAgB,EAChB,WAAW,EACX,YAAY,EACZ,uBAAuB,EACvB,kBAAkB,EAClB,kBAAkB,EAClB,gBAAgB,EAChB,mBAAmB,EACnB,YAAY,GACb,MAAM,aAAa,CAAC;AACrB,YAAY,EACV,WAAW,EACX,eAAe,EACf,WAAW,EACX,WAAW,EACX,gBAAgB,EAChB,cAAc,GACf,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,WAAW,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAC5F,YAAY,EAAE,iBAAiB,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEvF,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,YAAY,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC"}
@@ -2,10 +2,13 @@
2
2
  * Limbic system – trainable affective/motivational dynamics for agents.
3
3
  *
4
4
  * The dynamic counterpart to the (static) psychometric personality: where
5
- * personality sets the homeostatic setpoints, the limbic model learns — in
6
- * WebGPU — how an agent's affective state moves in response to experience.
5
+ * personality sets the homeostatic setpoints, the heuristic regions
6
+ * (`affect.ts`) move the live state in response to experience and the limbic
7
+ * model learns — in WebGPU — how it moves. The one limbic implementation; the
8
+ * dependency-free half ships alone as `@seanhogg/builderforce-memory-engine/limbic`.
7
9
  */
8
- export { REGION, LIMBIC_DIM, LIMBIC_DIM_NAMES, LIMBIC_STATE_DIM, LIMBIC_BOUNDS, NEUTRAL_STATE, clampDim, clampState, neutralState, stateToRecord, recordToState, personalitySetpoint, } from "./regions.js";
10
+ export { REGION, LIMBIC_DIM, LIMBIC_DIM_NAMES, LIMBIC_STATE_DIM, LIMBIC_BOUNDS, NEUTRAL_STATE, clampDim, clampState, neutralState, stateToRecord, recordToState, limbicSetpoints, personalitySetpoint, } from "./regions.js";
11
+ export { clampLimbicDim, neutralLimbicState, meanLimbicSetpoints, applyLimbicDelta, appraiseAmygdala, homeostasis, thalamusGate, basalGangliaExploreBias, basalGangliaSelect, compileLimbicState, buildLimbicBlock, LIMBIC_BLOCK_HEADER, appraiseTask, } from "./affect.js";
9
12
  export { LimbicModel, DEFAULT_LIMBIC_CONFIG, DEFAULT_LIMBIC_SEED } from "./limbic_model.js";
10
13
  export { LimbicTrainer } from "./limbic_trainer.js";
11
14
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/limbic/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EACL,MAAM,EACN,UAAU,EACV,gBAAgB,EAChB,gBAAgB,EAChB,aAAa,EACb,aAAa,EACb,QAAQ,EACR,UAAU,EACV,YAAY,EACZ,aAAa,EACb,aAAa,EACb,mBAAmB,GACpB,MAAM,cAAc,CAAC;AAGtB,OAAO,EAAE,WAAW,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAG5F,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/limbic/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EACL,MAAM,EACN,UAAU,EACV,gBAAgB,EAChB,gBAAgB,EAChB,aAAa,EACb,aAAa,EACb,QAAQ,EACR,UAAU,EACV,YAAY,EACZ,aAAa,EACb,aAAa,EACb,eAAe,EACf,mBAAmB,GACpB,MAAM,cAAc,CAAC;AAGtB,OAAO,EACL,cAAc,EACd,kBAAkB,EAClB,mBAAmB,EACnB,gBAAgB,EAChB,gBAAgB,EAChB,WAAW,EACX,YAAY,EACZ,uBAAuB,EACvB,kBAAkB,EAClB,kBAAkB,EAClB,gBAAgB,EAChB,mBAAmB,EACnB,YAAY,GACb,MAAM,aAAa,CAAC;AAUrB,OAAO,EAAE,WAAW,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAG5F,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC"}
@@ -8,10 +8,9 @@
8
8
  * and learns the dynamics of that, in WebGPU, from experience.
9
9
  *
10
10
  * This file is the single source of truth for the affective state vector that
11
- * every other limbic module (model, trainer, runtime service) indexes into.
12
- * Keep the dimension ids in sync with the runtime compiler in
13
- * `agent-runtime/src/builderforce/limbic.ts` — the two are coupled solely by
14
- * these string ids and the {@link LIMBIC_DIM} indices.
11
+ * every other limbic module (model, trainer, the heuristic regions in
12
+ * `affect.ts`, every host) indexes into — and for the personality → setpoint
13
+ * mapping. There is no second copy anywhere.
15
14
  *
16
15
  * Region → state mapping (mirrors the labelled diagram):
17
16
  * • Amygdala → salience / threat appraisal → drives valence + arousal
@@ -82,10 +81,9 @@ export declare function recordToState(rec: Partial<Record<LimbicDimName, number>
82
81
  * personality vector — only the dimensions that map to a limbic drive. All
83
82
  * optional; an omitted trait is treated as neutral (50).
84
83
  *
85
- * Keep the mapping in {@link personalitySetpoint} in sync with the runtime
86
- * compiler `deriveLimbicSetpoints` in `@builderforce/agent-tools` so the on-prem
87
- * runtime, the cloud engine, and this WebGPU trainer settle on the SAME baseline
88
- * for the same personality. The two are coupled only by this mapping.
84
+ * The ONE mapping from personality to resting affect: the heuristic regions, the
85
+ * trainable model and every host settle on the SAME baseline for the same
86
+ * personality because they all read it from here.
89
87
  */
90
88
  export interface PersonalityTraits {
91
89
  openness?: number;
@@ -103,8 +101,10 @@ export interface PersonalityTraits {
103
101
  * Derive the personality-conditioned resting SETPOINT from a trait vector — the
104
102
  * homeostatic target the limbic dynamics relax toward and that the trainable
105
103
  * affect model rides on top of ("personality = setpoints, limbic = dynamics").
106
- * Returns a fresh clamped 8-dim state vector. A fully-neutral trait vector yields
107
- * {@link NEUTRAL_STATE}. Mirrors `deriveLimbicSetpoints` in `@builderforce/agent-tools`.
104
+ * Labelled and full-precision; a fully-neutral trait vector yields
105
+ * {@link NEUTRAL_STATE}. {@link personalitySetpoint} is its dense form.
108
106
  */
107
+ export declare function limbicSetpoints(traits: PersonalityTraits | undefined): Record<LimbicDimName, number>;
108
+ /** The dense (model-facing) form of {@link limbicSetpoints}: a fresh clamped 8-dim vector. */
109
109
  export declare function personalitySetpoint(traits: PersonalityTraits | undefined): Float32Array;
110
110
  //# sourceMappingURL=regions.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"regions.d.ts","sourceRoot":"","sources":["../../src/limbic/regions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,gFAAgF;AAChF,eAAO,MAAM,MAAM;;;;;;CAMT,CAAC;AACX,MAAM,MAAM,MAAM,GAAG,CAAC,OAAO,MAAM,CAAC,CAAC,MAAM,OAAO,MAAM,CAAC,CAAC;AAE1D;;;;;GAKG;AACH,eAAO,MAAM,UAAU;IACrB,yEAAyE;;IAEzE,kEAAkE;;IAElE,2EAA2E;;IAE3E,yEAAyE;;IAEzE,+EAA+E;;IAE/E,mFAAmF;;IAEnF,kEAAkE;;IAElE,qFAAqF;;CAE7E,CAAC;AACX,MAAM,MAAM,aAAa,GAAG,MAAM,OAAO,UAAU,CAAC;AAEpD,4CAA4C;AAC5C,eAAO,MAAM,gBAAgB,IAAI,CAAC;AAElC,gEAAgE;AAChE,eAAO,MAAM,gBAAgB,EAAE,aAAa,EAS3C,CAAC;AAEF,mFAAmF;AACnF,eAAO,MAAM,aAAa,EAAE,aAAa,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CASlE,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,aAAa,EAAE,aAAa,CAAC,MAAM,CAS/C,CAAC;AAEF,8CAA8C;AAC9C,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAK7D;AAED,yDAAyD;AACzD,wBAAgB,UAAU,CAAC,KAAK,EAAE,YAAY,GAAG,YAAY,CAK5D;AAED,oCAAoC;AACpC,wBAAgB,YAAY,IAAI,YAAY,CAE3C;AAED,mFAAmF;AACnF,wBAAgB,aAAa,CAAC,KAAK,EAAE,SAAS,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,CAMrF;AAED,4EAA4E;AAC5E,wBAAgB,aAAa,CAAC,GAAG,EAAE,OAAO,CAAC,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,GAAG,YAAY,CAOvF;AAED;;;;;;;;;;GAUG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,yDAAyD;IACzD,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,oCAAoC;IACpC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAQD;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,iBAAiB,GAAG,SAAS,GAAG,YAAY,CAqBvF"}
1
+ {"version":3,"file":"regions.d.ts","sourceRoot":"","sources":["../../src/limbic/regions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,gFAAgF;AAChF,eAAO,MAAM,MAAM;;;;;;CAMT,CAAC;AACX,MAAM,MAAM,MAAM,GAAG,CAAC,OAAO,MAAM,CAAC,CAAC,MAAM,OAAO,MAAM,CAAC,CAAC;AAE1D;;;;;GAKG;AACH,eAAO,MAAM,UAAU;IACrB,yEAAyE;;IAEzE,kEAAkE;;IAElE,2EAA2E;;IAE3E,yEAAyE;;IAEzE,+EAA+E;;IAE/E,mFAAmF;;IAEnF,kEAAkE;;IAElE,qFAAqF;;CAE7E,CAAC;AACX,MAAM,MAAM,aAAa,GAAG,MAAM,OAAO,UAAU,CAAC;AAEpD,4CAA4C;AAC5C,eAAO,MAAM,gBAAgB,IAAI,CAAC;AAElC,gEAAgE;AAChE,eAAO,MAAM,gBAAgB,EAAE,aAAa,EAS3C,CAAC;AAEF,mFAAmF;AACnF,eAAO,MAAM,aAAa,EAAE,aAAa,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CASlE,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,aAAa,EAAE,aAAa,CAAC,MAAM,CAS/C,CAAC;AAEF,8CAA8C;AAC9C,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAK7D;AAED,yDAAyD;AACzD,wBAAgB,UAAU,CAAC,KAAK,EAAE,YAAY,GAAG,YAAY,CAK5D;AAED,oCAAoC;AACpC,wBAAgB,YAAY,IAAI,YAAY,CAE3C;AAED,mFAAmF;AACnF,wBAAgB,aAAa,CAAC,KAAK,EAAE,SAAS,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,CAMrF;AAED,4EAA4E;AAC5E,wBAAgB,aAAa,CAAC,GAAG,EAAE,OAAO,CAAC,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,GAAG,YAAY,CAOvF;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,yDAAyD;IACzD,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,oCAAoC;IACpC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAQD;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,iBAAiB,GAAG,SAAS,GAAG,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,CAwBpG;AAED,8FAA8F;AAC9F,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,iBAAiB,GAAG,SAAS,GAAG,YAAY,CAEvF"}
@@ -8,10 +8,9 @@
8
8
  * and learns the dynamics of that, in WebGPU, from experience.
9
9
  *
10
10
  * This file is the single source of truth for the affective state vector that
11
- * every other limbic module (model, trainer, runtime service) indexes into.
12
- * Keep the dimension ids in sync with the runtime compiler in
13
- * `agent-runtime/src/builderforce/limbic.ts` — the two are coupled solely by
14
- * these string ids and the {@link LIMBIC_DIM} indices.
11
+ * every other limbic module (model, trainer, the heuristic regions in
12
+ * `affect.ts`, every host) indexes into — and for the personality → setpoint
13
+ * mapping. There is no second copy anywhere.
15
14
  *
16
15
  * Region → state mapping (mirrors the labelled diagram):
17
16
  * • Amygdala → salience / threat appraisal → drives valence + arousal
@@ -138,11 +137,11 @@ function infl(s) {
138
137
  * Derive the personality-conditioned resting SETPOINT from a trait vector — the
139
138
  * homeostatic target the limbic dynamics relax toward and that the trainable
140
139
  * affect model rides on top of ("personality = setpoints, limbic = dynamics").
141
- * Returns a fresh clamped 8-dim state vector. A fully-neutral trait vector yields
142
- * {@link NEUTRAL_STATE}. Mirrors `deriveLimbicSetpoints` in `@builderforce/agent-tools`.
140
+ * Labelled and full-precision; a fully-neutral trait vector yields
141
+ * {@link NEUTRAL_STATE}. {@link personalitySetpoint} is its dense form.
143
142
  */
144
- export function personalitySetpoint(traits) {
145
- const s = neutralState();
143
+ export function limbicSetpoints(traits) {
144
+ const s = stateToRecord(NEUTRAL_STATE);
146
145
  if (!traits)
147
146
  return s;
148
147
  const open = infl(traits.openness);
@@ -153,14 +152,21 @@ export function personalitySetpoint(traits) {
153
152
  const risk = infl(traits.riskTolerance);
154
153
  const grit = infl(traits.grit);
155
154
  const stim = infl(traits.stimulation);
156
- s[LIMBIC_DIM.driveCuriosity] = clampDim(LIMBIC_DIM.driveCuriosity, 0.5 + 0.35 * open + 0.15 * stim);
157
- s[LIMBIC_DIM.exploration] = clampDim(LIMBIC_DIM.exploration, 0.4 + 0.3 * open + 0.25 * risk + 0.15 * reg);
158
- s[LIMBIC_DIM.driveCaution] = clampDim(LIMBIC_DIM.driveCaution, 0.5 + 0.3 * consc - 0.3 * risk - 0.2 * reg + 0.15 * emo);
159
- s[LIMBIC_DIM.arousal] = clampDim(LIMBIC_DIM.arousal, 0.2 + 0.2 * emo + 0.1 * extra);
160
- s[LIMBIC_DIM.driveSocial] = clampDim(LIMBIC_DIM.driveSocial, 0.5 + 0.35 * extra);
161
- s[LIMBIC_DIM.driveEffort] = clampDim(LIMBIC_DIM.driveEffort, 0.8 + 0.15 * grit + 0.1 * consc);
162
- s[LIMBIC_DIM.valence] = clampDim(LIMBIC_DIM.valence, 0.0 + 0.1 * reg - 0.1 * emo);
163
- s[LIMBIC_DIM.attention] = clampDim(LIMBIC_DIM.attention, 0.7 + 0.1 * consc);
155
+ const set = (name, v) => {
156
+ s[name] = clampDim(LIMBIC_DIM[name], v);
157
+ };
158
+ set("driveCuriosity", 0.5 + 0.35 * open + 0.15 * stim);
159
+ set("exploration", 0.4 + 0.3 * open + 0.25 * risk + 0.15 * reg);
160
+ set("driveCaution", 0.5 + 0.3 * consc - 0.3 * risk - 0.2 * reg + 0.15 * emo);
161
+ set("arousal", 0.2 + 0.2 * emo + 0.1 * extra);
162
+ set("driveSocial", 0.5 + 0.35 * extra);
163
+ set("driveEffort", 0.8 + 0.15 * grit + 0.1 * consc);
164
+ set("valence", 0.0 + 0.1 * reg - 0.1 * emo);
165
+ set("attention", 0.7 + 0.1 * consc);
164
166
  return s;
165
167
  }
168
+ /** The dense (model-facing) form of {@link limbicSetpoints}: a fresh clamped 8-dim vector. */
169
+ export function personalitySetpoint(traits) {
170
+ return recordToState(limbicSetpoints(traits));
171
+ }
166
172
  //# sourceMappingURL=regions.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"regions.js","sourceRoot":"","sources":["../../src/limbic/regions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,gFAAgF;AAChF,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,QAAQ,EAAE,UAAU;IACpB,YAAY,EAAE,cAAc;IAC5B,QAAQ,EAAE,UAAU;IACpB,YAAY,EAAE,eAAe;IAC7B,WAAW,EAAE,aAAa;CAClB,CAAC;AAGX;;;;;GAKG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,yEAAyE;IACzE,OAAO,EAAE,CAAC;IACV,kEAAkE;IAClE,OAAO,EAAE,CAAC;IACV,2EAA2E;IAC3E,cAAc,EAAE,CAAC;IACjB,yEAAyE;IACzE,YAAY,EAAE,CAAC;IACf,+EAA+E;IAC/E,WAAW,EAAE,CAAC;IACd,mFAAmF;IACnF,WAAW,EAAE,CAAC;IACd,kEAAkE;IAClE,SAAS,EAAE,CAAC;IACZ,qFAAqF;IACrF,WAAW,EAAE,CAAC;CACN,CAAC;AAGX,4CAA4C;AAC5C,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC;AAElC,gEAAgE;AAChE,MAAM,CAAC,MAAM,gBAAgB,GAAoB;IAC/C,SAAS;IACT,SAAS;IACT,gBAAgB;IAChB,cAAc;IACd,aAAa;IACb,aAAa;IACb,WAAW;IACX,aAAa;CACd,CAAC;AAEF,mFAAmF;AACnF,MAAM,CAAC,MAAM,aAAa,GAA6C;IACrE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,UAAU;IACnB,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,UAAU;IAClB,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,iBAAiB;IACzB,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,eAAe;IACvB,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,cAAc;IACtB,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,cAAc;IACtB,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,YAAY;IACpB,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,cAAc;CACvB,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,aAAa,GAA0B;IAClD,GAAG,EAAE,UAAU;IACf,GAAG,EAAE,UAAU;IACf,GAAG,EAAE,iBAAiB;IACtB,GAAG,EAAE,eAAe;IACpB,GAAG,EAAE,cAAc;IACnB,GAAG,EAAE,cAAc;IACnB,GAAG,EAAE,YAAY;IACjB,GAAG,EAAE,+DAA+D;CACrE,CAAC;AAEF,8CAA8C;AAC9C,MAAM,UAAU,QAAQ,CAAC,KAAa,EAAE,KAAa;IACnD,MAAM,CAAC,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;IAC/B,IAAI,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IACrB,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IACrC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;AAC/C,CAAC;AAED,yDAAyD;AACzD,MAAM,UAAU,UAAU,CAAC,KAAmB;IAC5C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,IAAI,CAAC,GAAG,gBAAgB,EAAE,CAAC,EAAE,EAAE,CAAC;QAC9D,KAAK,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAE,CAAC,CAAC;IACpC,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,oCAAoC;AACpC,MAAM,UAAU,YAAY;IAC1B,OAAO,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AAC1C,CAAC;AAED,mFAAmF;AACnF,MAAM,UAAU,aAAa,CAAC,KAAwB;IACpD,MAAM,GAAG,GAAG,EAAmC,CAAC;IAChD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,gBAAgB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACjD,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAE,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC5C,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,aAAa,CAAC,GAA2C;IACvE,MAAM,CAAC,GAAG,YAAY,EAAE,CAAC;IACzB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,gBAAgB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACjD,MAAM,CAAC,GAAG,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAE,CAAC,CAAC;QACpC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YAAE,CAAC,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACvE,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AA0BD,gFAAgF;AAChF,SAAS,IAAI,CAAC,CAAqB;IACjC,MAAM,CAAC,GAAG,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACzF,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC;AACvB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,mBAAmB,CAAC,MAAqC;IACvE,MAAM,CAAC,GAAG,YAAY,EAAE,CAAC;IACzB,IAAI,CAAC,MAAM;QAAE,OAAO,CAAC,CAAC;IACtB,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACnC,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;IACtC,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;IAC7C,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;IACxC,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;IACzC,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;IACxC,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC/B,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IAEtC,CAAC,CAAC,UAAU,CAAC,cAAc,CAAC,GAAG,QAAQ,CAAC,UAAU,CAAC,cAAc,EAAE,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC;IACpG,CAAC,CAAC,UAAU,CAAC,WAAW,CAAC,GAAG,QAAQ,CAAC,UAAU,CAAC,WAAW,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,CAAC,CAAC;IAC1G,CAAC,CAAC,UAAU,CAAC,YAAY,CAAC,GAAG,QAAQ,CAAC,UAAU,CAAC,YAAY,EAAE,GAAG,GAAG,GAAG,GAAG,KAAK,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,CAAC,CAAC;IACxH,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,QAAQ,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC;IACpF,CAAC,CAAC,UAAU,CAAC,WAAW,CAAC,GAAG,QAAQ,CAAC,UAAU,CAAC,WAAW,EAAE,GAAG,GAAG,IAAI,GAAG,KAAK,CAAC,CAAC;IACjF,CAAC,CAAC,UAAU,CAAC,WAAW,CAAC,GAAG,QAAQ,CAAC,UAAU,CAAC,WAAW,EAAE,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC;IAC9F,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,QAAQ,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;IAClF,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,QAAQ,CAAC,UAAU,CAAC,SAAS,EAAE,GAAG,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC;IAC5E,OAAO,CAAC,CAAC;AACX,CAAC"}
1
+ {"version":3,"file":"regions.js","sourceRoot":"","sources":["../../src/limbic/regions.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@seanhogg/builderforce-memory-engine",
3
- "version": "2026.9.32",
3
+ "version": "2026.9.34",
4
4
  "description": "BuilderForce Agent Memory — engine layer. TypeScript/WGSL Mamba SSM kernels, model blocks, autograd, training, and BPE tokenizer (zero runtime deps, WebGPU-native).",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.js",
@@ -9,6 +9,10 @@
9
9
  ".": {
10
10
  "types": "./dist/index.d.ts",
11
11
  "import": "./dist/index.js"
12
+ },
13
+ "./limbic": {
14
+ "types": "./dist/limbic/affect.d.ts",
15
+ "import": "./dist/limbic/affect.js"
12
16
  }
13
17
  },
14
18
  "type": "module",
package/src/index.ts CHANGED
@@ -353,7 +353,21 @@ export {
353
353
  neutralState,
354
354
  stateToRecord,
355
355
  recordToState,
356
+ limbicSetpoints,
356
357
  personalitySetpoint,
358
+ clampLimbicDim,
359
+ neutralLimbicState,
360
+ meanLimbicSetpoints,
361
+ applyLimbicDelta,
362
+ appraiseAmygdala,
363
+ homeostasis,
364
+ thalamusGate,
365
+ basalGangliaExploreBias,
366
+ basalGangliaSelect,
367
+ compileLimbicState,
368
+ buildLimbicBlock,
369
+ LIMBIC_BLOCK_HEADER,
370
+ appraiseTask,
357
371
  LimbicModel,
358
372
  DEFAULT_LIMBIC_CONFIG,
359
373
  DEFAULT_LIMBIC_SEED,
@@ -363,6 +377,12 @@ export type {
363
377
  Region,
364
378
  LimbicDimName,
365
379
  PersonalityTraits,
380
+ LimbicState,
381
+ LimbicSetpoints,
382
+ LimbicDelta,
383
+ LimbicEvent,
384
+ LimbicExecParams,
385
+ CompiledLimbic,
366
386
  LimbicModelConfig,
367
387
  LimbicForward,
368
388
  LimbicParam,
@@ -0,0 +1,318 @@
1
+ /**
2
+ * affect.ts – the heuristic limbic regions and the directive compiler.
3
+ *
4
+ * The labelled (record-shaped) face of the limbic system every agent surface runs:
5
+ * the on-prem runtime, the cloud engine in a Worker, and the VS Code agent. Where
6
+ * the psychometric personality is *static* (a trait vector → behaviour), this layer
7
+ * is *dynamic* (a live affective state → behaviour): personality sets the
8
+ * homeostatic setpoints ({@link limbicSetpoints}), the regions push the live state
9
+ * around them in response to experience.
10
+ *
11
+ * • Amygdala → fast salience/threat appraisal of an event → affect delta
12
+ * • Hypothalamus → homeostasis: relax toward setpoints; effort fatigue
13
+ * • Thalamus → attention gate (inverted-U of arousal — Yerkes–Dodson)
14
+ * • Basal ganglia → action-selection bias (explore vs. exploit)
15
+ * • Hippocampus → reused (the SSM memory) — supplies the experience embedding
16
+ * the trainable {@link LimbicModel} learns from.
17
+ *
18
+ * Pure and deterministic (no GPU, no I/O, no imports beyond the schema), so it
19
+ * runs anywhere and is the trainable model's heuristic teacher and always-available
20
+ * fallback. Published alone as `@seanhogg/builderforce-memory-engine/limbic`.
21
+ */
22
+
23
+ import {
24
+ LIMBIC_DIM,
25
+ LIMBIC_DIM_NAMES,
26
+ NEUTRAL_STATE,
27
+ clampDim,
28
+ limbicSetpoints,
29
+ stateToRecord,
30
+ type LimbicDimName,
31
+ type PersonalityTraits,
32
+ } from "./regions.js";
33
+
34
+ export {
35
+ REGION,
36
+ LIMBIC_DIM,
37
+ LIMBIC_DIM_NAMES,
38
+ LIMBIC_STATE_DIM,
39
+ LIMBIC_BOUNDS,
40
+ NEUTRAL_STATE,
41
+ clampDim,
42
+ clampState,
43
+ neutralState,
44
+ stateToRecord,
45
+ recordToState,
46
+ limbicSetpoints,
47
+ personalitySetpoint,
48
+ } from "./regions.js";
49
+ export type { Region, LimbicDimName, PersonalityTraits } from "./regions.js";
50
+
51
+ // ── Labelled state ─────────────────────────────────────────────────────────────
52
+
53
+ export type LimbicState = Record<LimbicDimName, number>;
54
+ export type LimbicSetpoints = LimbicState;
55
+ export type LimbicDelta = Partial<Record<LimbicDimName, number>>;
56
+
57
+ /** Clamp one named dim to its bounds (NaN → the lower bound). */
58
+ export function clampLimbicDim(name: LimbicDimName, v: number): number {
59
+ return clampDim(LIMBIC_DIM[name], v);
60
+ }
61
+
62
+ /** A fresh labelled neutral state. */
63
+ export function neutralLimbicState(): LimbicState {
64
+ return stateToRecord(NEUTRAL_STATE);
65
+ }
66
+
67
+ /**
68
+ * The resting setpoints of several personalities active at once (an agent's own
69
+ * personality plus its assigned personas): the mean of each one's
70
+ * {@link limbicSetpoints}. Neutral when there are none.
71
+ */
72
+ export function meanLimbicSetpoints(traits: ReadonlyArray<PersonalityTraits>): LimbicSetpoints {
73
+ if (traits.length === 0) return neutralLimbicState();
74
+ const acc = neutralLimbicState();
75
+ for (const name of LIMBIC_DIM_NAMES) acc[name] = 0;
76
+ for (const t of traits) {
77
+ const sp = limbicSetpoints(t);
78
+ for (const name of LIMBIC_DIM_NAMES) acc[name] += sp[name];
79
+ }
80
+ for (const name of LIMBIC_DIM_NAMES) acc[name] /= traits.length;
81
+ return acc;
82
+ }
83
+
84
+ export function applyLimbicDelta(state: LimbicState, delta: LimbicDelta): LimbicState {
85
+ const out = { ...state };
86
+ for (const name of LIMBIC_DIM_NAMES) {
87
+ const d = delta[name];
88
+ if (typeof d === "number" && !Number.isNaN(d)) out[name] = clampLimbicDim(name, out[name] + d);
89
+ }
90
+ return out;
91
+ }
92
+
93
+ // ── Amygdala — fast salience/threat appraisal of an event → affect delta ─────────
94
+
95
+ export interface LimbicEvent {
96
+ kind: "success" | "progress" | "error" | "blocked" | "risk" | "feedback" | "idle";
97
+ intensity?: number;
98
+ sign?: number;
99
+ text?: string;
100
+ }
101
+
102
+ const I = (e: LimbicEvent): number => Math.max(0, Math.min(1, e.intensity ?? 0.5));
103
+
104
+ export function appraiseAmygdala(event: LimbicEvent): LimbicDelta {
105
+ const k = I(event);
106
+ switch (event.kind) {
107
+ case "success":
108
+ return { valence: +0.5 * k, arousal: -0.15 * k, driveCaution: -0.1 * k, driveEffort: -0.05 * k };
109
+ case "progress":
110
+ return { valence: +0.25 * k, arousal: +0.05 * k, driveEffort: -0.03 * k };
111
+ case "error":
112
+ return { valence: -0.45 * k, arousal: +0.4 * k, driveCaution: +0.3 * k, attention: +0.15 * k };
113
+ case "blocked":
114
+ return { valence: -0.35 * k, arousal: +0.3 * k, driveEffort: -0.15 * k, driveSocial: +0.2 * k };
115
+ case "risk":
116
+ return { arousal: +0.35 * k, driveCaution: +0.4 * k, attention: +0.2 * k, exploration: -0.15 * k };
117
+ case "feedback": {
118
+ const s = Math.sign(event.sign ?? 1) || 1;
119
+ return { valence: 0.4 * k * s, arousal: 0.1 * k, driveSocial: +0.1 * k };
120
+ }
121
+ case "idle":
122
+ return { arousal: -0.2 * k, driveEffort: +0.15 * k };
123
+ default:
124
+ return {};
125
+ }
126
+ }
127
+
128
+ // ── Hypothalamus — homeostasis: relax toward setpoints + effort fatigue ──────────
129
+
130
+ export function homeostasis(
131
+ state: LimbicState,
132
+ setpoints: LimbicSetpoints,
133
+ opts: { rate?: number; fatigue?: number } = {},
134
+ ): LimbicState {
135
+ const rate = opts.rate ?? 0.1;
136
+ const fatigue = opts.fatigue ?? 0.0;
137
+ const out = { ...state };
138
+ for (const name of LIMBIC_DIM_NAMES) {
139
+ out[name] = clampLimbicDim(name, out[name] + rate * (setpoints[name] - out[name]));
140
+ }
141
+ if (fatigue > 0) out.driveEffort = clampLimbicDim("driveEffort", out.driveEffort - fatigue);
142
+ return out;
143
+ }
144
+
145
+ // ── Thalamus — attention gate (inverted-U of arousal, Yerkes–Dodson) ─────────────
146
+
147
+ export function thalamusGate(state: LimbicState, optimalArousal = 0.5): number {
148
+ const d = state.arousal - optimalArousal;
149
+ const gain = 1 - 2.8 * d * d;
150
+ return Math.max(0.1, Math.min(1, gain));
151
+ }
152
+
153
+ // ── Basal ganglia — action selection (explore vs. exploit) ───────────────────────
154
+
155
+ export function basalGangliaExploreBias(state: LimbicState): number {
156
+ let b = 0.5 * state.exploration + 0.3 * state.driveCuriosity;
157
+ b += 0.15 * state.valence;
158
+ b -= 0.25 * (1 - state.driveEffort);
159
+ b -= 0.2 * (state.driveCaution - 0.5);
160
+ return Math.max(0, Math.min(1, b));
161
+ }
162
+
163
+ export function basalGangliaSelect<T extends { novelty: number }>(
164
+ state: LimbicState,
165
+ options: T[],
166
+ ): { choice: T | null; exploreBias: number } {
167
+ if (options.length === 0) return { choice: null, exploreBias: basalGangliaExploreBias(state) };
168
+ const bias = basalGangliaExploreBias(state);
169
+ let best = options[0]!;
170
+ let bestScore = -Infinity;
171
+ for (const o of options) {
172
+ const nov = Math.max(0, Math.min(1, o.novelty));
173
+ const sc = -Math.abs(nov - bias);
174
+ if (sc > bestScore) {
175
+ bestScore = sc;
176
+ best = o;
177
+ }
178
+ }
179
+ return { choice: best, exploreBias: bias };
180
+ }
181
+
182
+ // ── The compiler: limbic state → { directives, params } ──────────────────────────
183
+
184
+ /**
185
+ * Execution nudges the limbic state asks for. Structurally a subset of an agent
186
+ * host's exec params: the compiler only ever raises thinking to a floor of
187
+ * "medium" or "high" and turns reasoning on — the host merges these onto its own
188
+ * params with its own think-level ladder.
189
+ */
190
+ export type LimbicExecParams = {
191
+ thinkLevel?: "medium" | "high";
192
+ reasoningLevel?: "on";
193
+ /** Signed temperature delta in roughly [-0.3, 0.3]. */
194
+ temperatureDelta?: number;
195
+ };
196
+
197
+ export type CompiledLimbic = {
198
+ directives: string[];
199
+ params: LimbicExecParams;
200
+ };
201
+
202
+ const HI_F = 0.6;
203
+ const LO_F = 0.4;
204
+
205
+ export function compileLimbicState(state: LimbicState): CompiledLimbic {
206
+ const directives: string[] = [];
207
+ const params: LimbicExecParams = {};
208
+ // The deeper of the floors asked for so far ("high" beats "medium").
209
+ const floor = (level: "medium" | "high"): void => {
210
+ if (params.thinkLevel !== "high") params.thinkLevel = level;
211
+ };
212
+
213
+ if (state.valence <= -0.4) {
214
+ directives.push(
215
+ "Affect (negative): recent steps have gone badly — slow down, avoid rash or destructive actions, and re-verify your assumptions before proceeding.",
216
+ );
217
+ floor("high");
218
+ params.reasoningLevel = "on";
219
+ } else if (state.valence >= 0.4) {
220
+ directives.push("Affect (positive): things are going well — keep momentum, but don't get sloppy.");
221
+ }
222
+
223
+ if (state.arousal >= 0.7) {
224
+ directives.push(
225
+ "Arousal (heightened): you are highly activated — resist the urge to rush; double-check before any irreversible step.",
226
+ );
227
+ floor("high");
228
+ } else if (state.arousal <= 0.15) {
229
+ directives.push("Arousal (low): this is routine — keep it lightweight and efficient.");
230
+ }
231
+
232
+ if (state.driveCaution >= HI_F) {
233
+ directives.push(
234
+ "Drive (caution): heightened — prefer reversible steps, add guardrails, and confirm risky or destructive operations.",
235
+ );
236
+ floor("medium");
237
+ } else if (state.driveCaution <= LO_F) {
238
+ directives.push("Drive (caution): relaxed — bias to action on low-risk work.");
239
+ }
240
+
241
+ if (state.driveCuriosity >= HI_F) {
242
+ directives.push("Drive (curiosity): high — it is appropriate to investigate and consider alternative approaches.");
243
+ }
244
+
245
+ if (state.driveEffort <= LO_F) {
246
+ directives.push(
247
+ "Drive (effort): energy is low — keep scope tight, avoid over-engineering, checkpoint progress, and consider escalating rather than grinding.",
248
+ );
249
+ }
250
+
251
+ if (state.driveSocial >= HI_F) {
252
+ directives.push("Drive (social): communicate proactively — surface progress and ask for input when blocked.");
253
+ } else if (state.driveSocial <= LO_F) {
254
+ directives.push("Drive (social): work heads-down — narrate only what matters.");
255
+ }
256
+
257
+ const attentionGain = thalamusGate(state);
258
+ if (attentionGain <= 0.5) {
259
+ directives.push(
260
+ "Attention (degraded): your attention gate is low — re-read the task carefully and do not skip verification steps.",
261
+ );
262
+ floor("medium");
263
+ }
264
+
265
+ const explore = basalGangliaExploreBias(state);
266
+ if (explore >= 0.7) {
267
+ directives.push("Action selection: lean exploratory — try a novel approach before settling on the obvious one.");
268
+ } else if (explore <= 0.3) {
269
+ directives.push("Action selection: lean exploitative — use the proven, known approach and avoid unnecessary detours.");
270
+ }
271
+
272
+ let dTemp = 0;
273
+ dTemp += 0.2 * (state.exploration - 0.5) * 2;
274
+ dTemp += 0.06 * (state.driveCuriosity - 0.5) * 2;
275
+ dTemp += 0.08 * state.valence;
276
+ dTemp -= 0.16 * (state.driveCaution - 0.5) * 2;
277
+ dTemp -= 0.08 * Math.max(0, state.arousal - 0.7);
278
+ const clampedTemp = Math.max(-0.3, Math.min(0.3, Math.round(dTemp * 100) / 100));
279
+ if (Math.abs(clampedTemp) >= 0.02) params.temperatureDelta = clampedTemp;
280
+
281
+ return { directives, params };
282
+ }
283
+
284
+ /** Heading of the system-prompt block {@link buildLimbicBlock} renders. */
285
+ export const LIMBIC_BLOCK_HEADER = "Current affective state (execute accordingly):";
286
+
287
+ /** Render the limbic directives as a system-prompt sub-block. '' when at rest. */
288
+ export function buildLimbicBlock(state: LimbicState | undefined): string {
289
+ if (!state) return "";
290
+ const { directives } = compileLimbicState(state);
291
+ if (directives.length === 0) return "";
292
+ return [LIMBIC_BLOCK_HEADER, ...directives.map((d) => `- ${d}`)].join("\n");
293
+ }
294
+
295
+ // ── Task appraisal — derive an initial affect from a task description ─────────────
296
+ // For surfaces with no live event stream yet (cloud, VS Code): a quick amygdala
297
+ // read of the task text so the agent starts in a fitting affective state.
298
+
299
+ const RISK_PATTERNS =
300
+ /\b(delete|drop|truncate|destroy|wipe|prod(uction)?|migrat|secret|credential|password|payment|billing|charge|refund|deploy|force[- ]?push|rm\s+-rf|irreversible|security|auth|breaking)\b/i;
301
+ const HARD_PATTERNS = /\b(refactor|rewrite|architecture|complex|large|entire|whole|across|end[- ]to[- ]end|overhaul)\b/i;
302
+
303
+ /**
304
+ * Appraise a task's text into an initial affective deviation from `base`
305
+ * (defaults to neutral): risky/destructive work raises caution + arousal;
306
+ * large/complex work raises effort engagement + curiosity. Deterministic.
307
+ */
308
+ export function appraiseTask(text: string, base: LimbicState = neutralLimbicState()): LimbicState {
309
+ const t = text || "";
310
+ let s = base;
311
+ if (RISK_PATTERNS.test(t)) {
312
+ s = applyLimbicDelta(s, { driveCaution: +0.3, arousal: +0.25, attention: +0.15, exploration: -0.1 });
313
+ }
314
+ if (HARD_PATTERNS.test(t)) {
315
+ s = applyLimbicDelta(s, { driveCuriosity: +0.2, arousal: +0.1, exploration: +0.1 });
316
+ }
317
+ return s;
318
+ }
@@ -2,8 +2,10 @@
2
2
  * Limbic system – trainable affective/motivational dynamics for agents.
3
3
  *
4
4
  * The dynamic counterpart to the (static) psychometric personality: where
5
- * personality sets the homeostatic setpoints, the limbic model learns — in
6
- * WebGPU — how an agent's affective state moves in response to experience.
5
+ * personality sets the homeostatic setpoints, the heuristic regions
6
+ * (`affect.ts`) move the live state in response to experience and the limbic
7
+ * model learns — in WebGPU — how it moves. The one limbic implementation; the
8
+ * dependency-free half ships alone as `@seanhogg/builderforce-memory-engine/limbic`.
7
9
  */
8
10
 
9
11
  export {
@@ -18,10 +20,35 @@ export {
18
20
  neutralState,
19
21
  stateToRecord,
20
22
  recordToState,
23
+ limbicSetpoints,
21
24
  personalitySetpoint,
22
25
  } from "./regions.js";
23
26
  export type { Region, LimbicDimName, PersonalityTraits } from "./regions.js";
24
27
 
28
+ export {
29
+ clampLimbicDim,
30
+ neutralLimbicState,
31
+ meanLimbicSetpoints,
32
+ applyLimbicDelta,
33
+ appraiseAmygdala,
34
+ homeostasis,
35
+ thalamusGate,
36
+ basalGangliaExploreBias,
37
+ basalGangliaSelect,
38
+ compileLimbicState,
39
+ buildLimbicBlock,
40
+ LIMBIC_BLOCK_HEADER,
41
+ appraiseTask,
42
+ } from "./affect.js";
43
+ export type {
44
+ LimbicState,
45
+ LimbicSetpoints,
46
+ LimbicDelta,
47
+ LimbicEvent,
48
+ LimbicExecParams,
49
+ CompiledLimbic,
50
+ } from "./affect.js";
51
+
25
52
  export { LimbicModel, DEFAULT_LIMBIC_CONFIG, DEFAULT_LIMBIC_SEED } from "./limbic_model.js";
26
53
  export type { LimbicModelConfig, LimbicForward, LimbicParam } from "./limbic_model.js";
27
54
 
@@ -8,10 +8,9 @@
8
8
  * and learns the dynamics of that, in WebGPU, from experience.
9
9
  *
10
10
  * This file is the single source of truth for the affective state vector that
11
- * every other limbic module (model, trainer, runtime service) indexes into.
12
- * Keep the dimension ids in sync with the runtime compiler in
13
- * `agent-runtime/src/builderforce/limbic.ts` — the two are coupled solely by
14
- * these string ids and the {@link LIMBIC_DIM} indices.
11
+ * every other limbic module (model, trainer, the heuristic regions in
12
+ * `affect.ts`, every host) indexes into — and for the personality → setpoint
13
+ * mapping. There is no second copy anywhere.
15
14
  *
16
15
  * Region → state mapping (mirrors the labelled diagram):
17
16
  * • Amygdala → salience / threat appraisal → drives valence + arousal
@@ -146,10 +145,9 @@ export function recordToState(rec: Partial<Record<LimbicDimName, number>>): Floa
146
145
  * personality vector — only the dimensions that map to a limbic drive. All
147
146
  * optional; an omitted trait is treated as neutral (50).
148
147
  *
149
- * Keep the mapping in {@link personalitySetpoint} in sync with the runtime
150
- * compiler `deriveLimbicSetpoints` in `@builderforce/agent-tools` so the on-prem
151
- * runtime, the cloud engine, and this WebGPU trainer settle on the SAME baseline
152
- * for the same personality. The two are coupled only by this mapping.
148
+ * The ONE mapping from personality to resting affect: the heuristic regions, the
149
+ * trainable model and every host settle on the SAME baseline for the same
150
+ * personality because they all read it from here.
153
151
  */
154
152
  export interface PersonalityTraits {
155
153
  openness?: number;
@@ -174,11 +172,11 @@ function infl(s: number | undefined): number {
174
172
  * Derive the personality-conditioned resting SETPOINT from a trait vector — the
175
173
  * homeostatic target the limbic dynamics relax toward and that the trainable
176
174
  * affect model rides on top of ("personality = setpoints, limbic = dynamics").
177
- * Returns a fresh clamped 8-dim state vector. A fully-neutral trait vector yields
178
- * {@link NEUTRAL_STATE}. Mirrors `deriveLimbicSetpoints` in `@builderforce/agent-tools`.
175
+ * Labelled and full-precision; a fully-neutral trait vector yields
176
+ * {@link NEUTRAL_STATE}. {@link personalitySetpoint} is its dense form.
179
177
  */
180
- export function personalitySetpoint(traits: PersonalityTraits | undefined): Float32Array {
181
- const s = neutralState();
178
+ export function limbicSetpoints(traits: PersonalityTraits | undefined): Record<LimbicDimName, number> {
179
+ const s = stateToRecord(NEUTRAL_STATE);
182
180
  if (!traits) return s;
183
181
  const open = infl(traits.openness);
184
182
  const emo = infl(traits.emotionality);
@@ -189,13 +187,21 @@ export function personalitySetpoint(traits: PersonalityTraits | undefined): Floa
189
187
  const grit = infl(traits.grit);
190
188
  const stim = infl(traits.stimulation);
191
189
 
192
- s[LIMBIC_DIM.driveCuriosity] = clampDim(LIMBIC_DIM.driveCuriosity, 0.5 + 0.35 * open + 0.15 * stim);
193
- s[LIMBIC_DIM.exploration] = clampDim(LIMBIC_DIM.exploration, 0.4 + 0.3 * open + 0.25 * risk + 0.15 * reg);
194
- s[LIMBIC_DIM.driveCaution] = clampDim(LIMBIC_DIM.driveCaution, 0.5 + 0.3 * consc - 0.3 * risk - 0.2 * reg + 0.15 * emo);
195
- s[LIMBIC_DIM.arousal] = clampDim(LIMBIC_DIM.arousal, 0.2 + 0.2 * emo + 0.1 * extra);
196
- s[LIMBIC_DIM.driveSocial] = clampDim(LIMBIC_DIM.driveSocial, 0.5 + 0.35 * extra);
197
- s[LIMBIC_DIM.driveEffort] = clampDim(LIMBIC_DIM.driveEffort, 0.8 + 0.15 * grit + 0.1 * consc);
198
- s[LIMBIC_DIM.valence] = clampDim(LIMBIC_DIM.valence, 0.0 + 0.1 * reg - 0.1 * emo);
199
- s[LIMBIC_DIM.attention] = clampDim(LIMBIC_DIM.attention, 0.7 + 0.1 * consc);
190
+ const set = (name: LimbicDimName, v: number): void => {
191
+ s[name] = clampDim(LIMBIC_DIM[name], v);
192
+ };
193
+ set("driveCuriosity", 0.5 + 0.35 * open + 0.15 * stim);
194
+ set("exploration", 0.4 + 0.3 * open + 0.25 * risk + 0.15 * reg);
195
+ set("driveCaution", 0.5 + 0.3 * consc - 0.3 * risk - 0.2 * reg + 0.15 * emo);
196
+ set("arousal", 0.2 + 0.2 * emo + 0.1 * extra);
197
+ set("driveSocial", 0.5 + 0.35 * extra);
198
+ set("driveEffort", 0.8 + 0.15 * grit + 0.1 * consc);
199
+ set("valence", 0.0 + 0.1 * reg - 0.1 * emo);
200
+ set("attention", 0.7 + 0.1 * consc);
200
201
  return s;
201
202
  }
203
+
204
+ /** The dense (model-facing) form of {@link limbicSetpoints}: a fresh clamped 8-dim vector. */
205
+ export function personalitySetpoint(traits: PersonalityTraits | undefined): Float32Array {
206
+ return recordToState(limbicSetpoints(traits));
207
+ }