@af199/anima-core
v0.2.4
Published
Deterministic psychodynamic engine for LLM agents — seven-dimensional state vector, seeded RNG, byte-reproducible. The engine at the heart of ANIMA, as a library.
Maintainers
Readme
anima-core
The deterministic psychodynamic engine at the heart of ANIMA. Computes a seven-dimensional state vector per turn from structural archetype parameters and update equations. Zero LLM calls, seeded RNG, byte-reproducible.
This is the engine as a library: anima-eval and other tools depend on it.
Install
npm install anima-coreQuick start
const { Engine, ARCHETYPES } = require('anima-core');
const eng = new Engine({ archetype: 'paranoia', seed: 'demo-42' });
const state = eng.step({ aperture: 0.3, closure: 0.6, fantasy: 1 });
console.log(state); // { E, T, A, C, G, P, rho, irruption }State vector S(t) ∈ [0,1]⁷
E Eros — libidinal bond
T Thanatos — death drive / resistance
A Anxiety — alarm signal
C Guilt — superego pressure
G Jouissance — drive satisfaction
P Pressure — irruption motor (unconscious pressure)
rho Rigidity — fantasy defense impermeabilityReproducibility
Every Engine is seeded. Same seed + same inputs → byte-identical trajectory. eng.reseed('other-seed'); eng.snapshot(); // serializable state for audit / replay
Important: the seeded RNG is consumed conditionally — _rng() is called
only when S.P >= theta_irr (the necessary condition for an irruption). This
has two practical consequences:
When P never reaches the threshold (e.g. low-pressure signal sequences), the seed has no effect on the trajectory. Two instances with different seeds but identical signals will produce identical results. This is correct and expected — the update equations are fully deterministic in that regime.
Reproducibility is guaranteed only when input signals are identical across runs. If signal sequences differ between two runs (causing P to cross
theta_irrat different turns), the RNG is consumed at different points and trajectories will diverge from there, even with the same seed.
Use anima-trace to record and verify reproducibility: it re-runs the engine
with the stored signal sequence and confirms byte-identical output.
