@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 +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/limbic/affect.d.ts +85 -0
- package/dist/limbic/affect.d.ts.map +1 -0
- package/dist/limbic/affect.js +226 -0
- package/dist/limbic/affect.js.map +1 -0
- package/dist/limbic/index.d.ts +7 -3
- package/dist/limbic/index.d.ts.map +1 -1
- package/dist/limbic/index.js +6 -3
- package/dist/limbic/index.js.map +1 -1
- package/dist/limbic/regions.d.ts +10 -10
- package/dist/limbic/regions.d.ts.map +1 -1
- package/dist/limbic/regions.js +22 -16
- package/dist/limbic/regions.js.map +1 -1
- package/package.json +5 -1
- package/src/index.ts +20 -0
- package/src/limbic/affect.ts +318 -0
- package/src/limbic/index.ts +29 -2
- package/src/limbic/regions.ts +26 -20
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
|
package/dist/index.d.ts.map
CHANGED
|
@@ -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":"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"}
|
|
@@ -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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"}
|
package/dist/limbic/index.d.ts
CHANGED
|
@@ -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
|
|
6
|
-
*
|
|
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
|
|
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"}
|
package/dist/limbic/index.js
CHANGED
|
@@ -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
|
|
6
|
-
*
|
|
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
|
package/dist/limbic/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/limbic/index.ts"],"names":[],"mappings":"AAAA
|
|
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"}
|
package/dist/limbic/regions.d.ts
CHANGED
|
@@ -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,
|
|
12
|
-
*
|
|
13
|
-
*
|
|
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
|
-
*
|
|
86
|
-
*
|
|
87
|
-
*
|
|
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
|
-
*
|
|
107
|
-
* {@link NEUTRAL_STATE}.
|
|
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
|
|
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"}
|
package/dist/limbic/regions.js
CHANGED
|
@@ -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,
|
|
12
|
-
*
|
|
13
|
-
*
|
|
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
|
-
*
|
|
142
|
-
* {@link NEUTRAL_STATE}.
|
|
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
|
|
145
|
-
const s =
|
|
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
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
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
|
|
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.
|
|
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
|
+
}
|
package/src/limbic/index.ts
CHANGED
|
@@ -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
|
|
6
|
-
*
|
|
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
|
|
package/src/limbic/regions.ts
CHANGED
|
@@ -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,
|
|
12
|
-
*
|
|
13
|
-
*
|
|
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
|
-
*
|
|
150
|
-
*
|
|
151
|
-
*
|
|
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
|
-
*
|
|
178
|
-
* {@link NEUTRAL_STATE}.
|
|
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
|
|
181
|
-
const s =
|
|
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
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
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
|
+
}
|