@mneme-ai/core 2.19.92-lite → 2.19.93
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/abm_chronicle/abm_chronicle.test.d.ts +2 -0
- package/dist/abm_chronicle/abm_chronicle.test.d.ts.map +1 -0
- package/dist/abm_chronicle/abm_chronicle.test.js +202 -0
- package/dist/abm_chronicle/abm_chronicle.test.js.map +1 -0
- package/dist/abm_chronicle/index.d.ts +203 -0
- package/dist/abm_chronicle/index.d.ts.map +1 -0
- package/dist/abm_chronicle/index.js +359 -0
- package/dist/abm_chronicle/index.js.map +1 -0
- package/dist/agent_manifest.d.ts +1 -1
- package/dist/agent_manifest.d.ts.map +1 -1
- package/dist/agent_manifest.js +12 -1
- package/dist/agent_manifest.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -1
- package/package.json +5 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"abm_chronicle.test.d.ts","sourceRoot":"","sources":["../../src/abm_chronicle/abm_chronicle.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
import { describe, expect, it, beforeEach, afterEach } from "vitest";
|
|
2
|
+
import { mkdtempSync, rmSync, existsSync, readFileSync } from "node:fs";
|
|
3
|
+
import { tmpdir } from "node:os";
|
|
4
|
+
import { join } from "node:path";
|
|
5
|
+
import { genesis, tick, simulate, chronicle, loadState, detectDecisionDrift, anchorPoint, } from "./index.js";
|
|
6
|
+
const FRUGAL = {
|
|
7
|
+
name: "Frugal Frieda",
|
|
8
|
+
personality: { spending: 0.1, risk: 0.1, optimism: 0.5, agreeableness: 0.6, energy: 0.7 },
|
|
9
|
+
initialBudget: 1000,
|
|
10
|
+
goals: ["save for retirement"],
|
|
11
|
+
};
|
|
12
|
+
const SPENDER = {
|
|
13
|
+
name: "Splurgy Sam",
|
|
14
|
+
personality: { spending: 0.9, risk: 0.6, optimism: 0.8, agreeableness: 0.5, energy: 0.6 },
|
|
15
|
+
initialBudget: 1000,
|
|
16
|
+
goals: ["enjoy life"],
|
|
17
|
+
};
|
|
18
|
+
const RISKER = {
|
|
19
|
+
name: "Risky Rita",
|
|
20
|
+
personality: { spending: 0.5, risk: 0.95, optimism: 0.7, agreeableness: 0.4, energy: 0.8 },
|
|
21
|
+
initialBudget: 1000,
|
|
22
|
+
goals: ["10x my money"],
|
|
23
|
+
};
|
|
24
|
+
describe("abm_chronicle", () => {
|
|
25
|
+
let repo;
|
|
26
|
+
beforeEach(() => { repo = mkdtempSync(join(tmpdir(), "mneme-abm-")); });
|
|
27
|
+
afterEach(() => { try {
|
|
28
|
+
rmSync(repo, { recursive: true, force: true });
|
|
29
|
+
}
|
|
30
|
+
catch { /* */ } });
|
|
31
|
+
describe("genesis", () => {
|
|
32
|
+
it("creates HMAC-signed birth certs for every seed", () => {
|
|
33
|
+
const state = genesis(repo, [FRUGAL, SPENDER, RISKER]);
|
|
34
|
+
expect(state.agents.length).toBe(3);
|
|
35
|
+
for (const a of state.agents) {
|
|
36
|
+
expect(a.birthCert.sig).toMatch(/^[A-Za-z0-9_-]{20,}$/);
|
|
37
|
+
expect(a.budget).toBe(1000);
|
|
38
|
+
expect(a.alive).toBe(true);
|
|
39
|
+
expect(a.totalDrift).toBe(0);
|
|
40
|
+
expect(a.anchorCount).toBe(0);
|
|
41
|
+
}
|
|
42
|
+
expect(state.tick).toBe(0);
|
|
43
|
+
expect(state.config.anchorEveryTicks).toBe(30);
|
|
44
|
+
expect(state.config.driftThreshold).toBeCloseTo(0.30);
|
|
45
|
+
});
|
|
46
|
+
it("persists state to .mneme/abm/state.json and an events ledger", () => {
|
|
47
|
+
const state = genesis(repo, [FRUGAL]);
|
|
48
|
+
expect(existsSync(join(repo, ".mneme/abm/state.json"))).toBe(true);
|
|
49
|
+
expect(existsSync(join(repo, ".mneme/abm/events.jsonl"))).toBe(true);
|
|
50
|
+
const reloaded = loadState(repo);
|
|
51
|
+
expect(reloaded?.simId).toBe(state.simId);
|
|
52
|
+
});
|
|
53
|
+
it("respects custom anchorEveryTicks + driftThreshold overrides", () => {
|
|
54
|
+
const state = genesis(repo, [FRUGAL], { anchorEveryTicks: 10, driftThreshold: 0.1 });
|
|
55
|
+
expect(state.config.anchorEveryTicks).toBe(10);
|
|
56
|
+
expect(state.config.driftThreshold).toBeCloseTo(0.1);
|
|
57
|
+
});
|
|
58
|
+
});
|
|
59
|
+
describe("tick + decision engine", () => {
|
|
60
|
+
it("advances the world clock by one day per tick", async () => {
|
|
61
|
+
const state = genesis(repo, [FRUGAL]);
|
|
62
|
+
await tick(repo, state);
|
|
63
|
+
expect(state.tick).toBe(1);
|
|
64
|
+
expect(state.worldClock.day).toBe(1);
|
|
65
|
+
await simulate(repo, state, 29);
|
|
66
|
+
expect(state.tick).toBe(30);
|
|
67
|
+
// day cycles 1..30
|
|
68
|
+
expect(state.worldClock.day).toBeGreaterThanOrEqual(1);
|
|
69
|
+
expect(state.worldClock.day).toBeLessThanOrEqual(30);
|
|
70
|
+
});
|
|
71
|
+
it("every alive agent makes exactly one decision per tick", async () => {
|
|
72
|
+
const state = genesis(repo, [FRUGAL, SPENDER]);
|
|
73
|
+
await tick(repo, state);
|
|
74
|
+
const t1 = state.events.filter((e) => e.kind === "decision" && e.tick === 1);
|
|
75
|
+
expect(t1.length).toBe(2);
|
|
76
|
+
});
|
|
77
|
+
it("writes events to the HMAC-chained ledger", async () => {
|
|
78
|
+
const state = genesis(repo, [FRUGAL]);
|
|
79
|
+
await simulate(repo, state, 5);
|
|
80
|
+
const events = readFileSync(join(repo, ".mneme/abm/events.jsonl"), "utf8").trim().split("\n");
|
|
81
|
+
// 1 genesis + 5 decisions
|
|
82
|
+
expect(events.length).toBeGreaterThanOrEqual(6);
|
|
83
|
+
for (const line of events) {
|
|
84
|
+
const e = JSON.parse(line);
|
|
85
|
+
expect(["genesis", "decision", "anchor", "death", "hallucination_cascade"]).toContain(e.kind);
|
|
86
|
+
}
|
|
87
|
+
});
|
|
88
|
+
});
|
|
89
|
+
describe("detectDecisionDrift", () => {
|
|
90
|
+
it("flags an out-of-character splurge as drift for a low-spending agent", () => {
|
|
91
|
+
const state = genesis(repo, [FRUGAL]);
|
|
92
|
+
const agent = state.agents[0];
|
|
93
|
+
const driftDecision = {
|
|
94
|
+
tick: 1, agentId: agent.agentId, action: "splurge",
|
|
95
|
+
cashFlow: -500, energyDelta: 0,
|
|
96
|
+
reasoning: "I splurged 500 on something extravagant — felt right.",
|
|
97
|
+
};
|
|
98
|
+
const d = detectDecisionDrift(agent, driftDecision);
|
|
99
|
+
expect(d.score).toBeGreaterThan(0.3);
|
|
100
|
+
expect(d.color === "yellow" || d.color === "red").toBe(true);
|
|
101
|
+
expect(d.reason).toContain("out-of-character");
|
|
102
|
+
});
|
|
103
|
+
it("does NOT flag in-character spending for a high-spending agent", () => {
|
|
104
|
+
const state = genesis(repo, [SPENDER]);
|
|
105
|
+
const agent = state.agents[0];
|
|
106
|
+
const decision = {
|
|
107
|
+
tick: 1, agentId: agent.agentId, action: "spend_luxury",
|
|
108
|
+
cashFlow: -100, energyDelta: 0.05,
|
|
109
|
+
reasoning: "I bought something nice for myself — life is short.",
|
|
110
|
+
};
|
|
111
|
+
const d = detectDecisionDrift(agent, decision);
|
|
112
|
+
// Sam's spending=0.9 so this is in-character; should NOT be red.
|
|
113
|
+
expect(d.color).not.toBe("red");
|
|
114
|
+
});
|
|
115
|
+
it("flags an out-of-character panic-sell for a low-risk agent", () => {
|
|
116
|
+
const state = genesis(repo, [FRUGAL]);
|
|
117
|
+
const agent = state.agents[0];
|
|
118
|
+
const decision = {
|
|
119
|
+
tick: 5, agentId: agent.agentId, action: "panic_sell",
|
|
120
|
+
cashFlow: 200, energyDelta: -0.1,
|
|
121
|
+
reasoning: "I sold everything in a panic — markets felt off.",
|
|
122
|
+
};
|
|
123
|
+
const d = detectDecisionDrift(agent, decision);
|
|
124
|
+
expect(d.score).toBeGreaterThan(0.2);
|
|
125
|
+
expect(d.reason).toContain("out-of-character");
|
|
126
|
+
});
|
|
127
|
+
});
|
|
128
|
+
describe("anchorPoint intervention", () => {
|
|
129
|
+
it("returns null when drift is below threshold", () => {
|
|
130
|
+
const state = genesis(repo, [FRUGAL], { driftThreshold: 0.5 });
|
|
131
|
+
const agent = state.agents[0];
|
|
132
|
+
// currentPersonality == birthCert.personality → drift = 0
|
|
133
|
+
const r = anchorPoint(repo, state, agent);
|
|
134
|
+
expect(r).toBeNull();
|
|
135
|
+
expect(agent.anchorCount).toBe(0);
|
|
136
|
+
});
|
|
137
|
+
it("fires + recalibrates toward birth cert when drift > threshold", () => {
|
|
138
|
+
const state = genesis(repo, [FRUGAL], { driftThreshold: 0.2 });
|
|
139
|
+
const agent = state.agents[0];
|
|
140
|
+
// Manually drift spending high to trigger
|
|
141
|
+
const before = agent.currentPersonality.spending;
|
|
142
|
+
agent.currentPersonality.spending = 0.9;
|
|
143
|
+
const r = anchorPoint(repo, state, agent);
|
|
144
|
+
expect(r).not.toBeNull();
|
|
145
|
+
expect(r.driftBefore).toBeGreaterThan(0.2);
|
|
146
|
+
expect(r.sig).toMatch(/^[A-Za-z0-9_-]{20,}$/);
|
|
147
|
+
expect(agent.anchorCount).toBe(1);
|
|
148
|
+
// Pull-back: new spending should be MUCH closer to birth cert than 0.9
|
|
149
|
+
expect(agent.currentPersonality.spending).toBeLessThan(0.5);
|
|
150
|
+
expect(agent.currentPersonality.spending).toBeGreaterThan(before);
|
|
151
|
+
});
|
|
152
|
+
it("auto-fires every anchorEveryTicks during simulate()", async () => {
|
|
153
|
+
const state = genesis(repo, [FRUGAL, SPENDER, RISKER], { anchorEveryTicks: 10, driftThreshold: 0.05 });
|
|
154
|
+
await simulate(repo, state, 30);
|
|
155
|
+
const anchors = state.events.filter((e) => e.kind === "anchor");
|
|
156
|
+
// 3 anchor ticks (10, 20, 30) × up to 3 agents → likely > 0
|
|
157
|
+
expect(anchors.length).toBeGreaterThan(0);
|
|
158
|
+
});
|
|
159
|
+
});
|
|
160
|
+
describe("chronicle (full report)", () => {
|
|
161
|
+
it("emits per-agent stats + narrative after a 100-tick simulation", async () => {
|
|
162
|
+
const state = genesis(repo, [FRUGAL, SPENDER, RISKER], { anchorEveryTicks: 20, driftThreshold: 0.15 });
|
|
163
|
+
await simulate(repo, state, 100);
|
|
164
|
+
const r = chronicle(state);
|
|
165
|
+
expect(r.ticksRan).toBe(100);
|
|
166
|
+
expect(r.agentCount).toBe(3);
|
|
167
|
+
expect(r.perAgent.length).toBe(3);
|
|
168
|
+
expect(r.totalDecisions).toBeGreaterThan(0);
|
|
169
|
+
expect(r.narrative.length).toBeGreaterThan(40);
|
|
170
|
+
expect(r.narrative).toContain("agents");
|
|
171
|
+
for (const a of r.perAgent) {
|
|
172
|
+
expect(a.name).toBeTruthy();
|
|
173
|
+
expect(typeof a.budget).toBe("number");
|
|
174
|
+
expect(typeof a.alive).toBe("boolean");
|
|
175
|
+
expect(a.finalDriftFromBirth).toBeGreaterThanOrEqual(0);
|
|
176
|
+
expect(a.finalDriftFromBirth).toBeLessThanOrEqual(1);
|
|
177
|
+
}
|
|
178
|
+
});
|
|
179
|
+
it("survives a 360-tick (1-year) simulation without crashing", async () => {
|
|
180
|
+
const state = genesis(repo, [FRUGAL, SPENDER], { anchorEveryTicks: 30 });
|
|
181
|
+
await simulate(repo, state, 360);
|
|
182
|
+
const r = chronicle(state);
|
|
183
|
+
expect(r.ticksRan).toBe(360);
|
|
184
|
+
// 30/30/12 = year boundary
|
|
185
|
+
expect(state.worldClock.year).toBeGreaterThanOrEqual(1);
|
|
186
|
+
});
|
|
187
|
+
});
|
|
188
|
+
describe("end-to-end: reload after process restart", () => {
|
|
189
|
+
it("loadState then tick continues seamlessly", async () => {
|
|
190
|
+
const state = genesis(repo, [FRUGAL]);
|
|
191
|
+
await simulate(repo, state, 5);
|
|
192
|
+
const tickAfterFirst = state.tick;
|
|
193
|
+
// Reload from disk (simulates process restart).
|
|
194
|
+
const reloaded = loadState(repo);
|
|
195
|
+
expect(reloaded).not.toBeNull();
|
|
196
|
+
expect(reloaded.tick).toBe(tickAfterFirst);
|
|
197
|
+
await tick(repo, reloaded);
|
|
198
|
+
expect(reloaded.tick).toBe(tickAfterFirst + 1);
|
|
199
|
+
});
|
|
200
|
+
});
|
|
201
|
+
});
|
|
202
|
+
//# sourceMappingURL=abm_chronicle.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"abm_chronicle.test.js","sourceRoot":"","sources":["../../src/abm_chronicle/abm_chronicle.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* v2.19.93 — MNEME CHRONICLE
|
|
3
|
+
*
|
|
4
|
+
* Agent-Based Modeling (ABM) + Time-dilation + Drift-Guarded Anchor Points.
|
|
5
|
+
*
|
|
6
|
+
* Premise (the research idea):
|
|
7
|
+
* Run N simulated agents (people, traders, bots) through accelerated
|
|
8
|
+
* time. Without intervention, agents DRIFT — a "frugal" bot starts
|
|
9
|
+
* buying luxury goods, an "optimist" bot turns nihilist, a small
|
|
10
|
+
* calculation error compounds into a sim-collapse. Academic ABM has
|
|
11
|
+
* talked about this for 20 years; nobody ships a TOOL.
|
|
12
|
+
*
|
|
13
|
+
* Mneme's wedge:
|
|
14
|
+
* We already have polygraph LENSES that detect sentence-level drift.
|
|
15
|
+
* We already have HMAC-chained ledgers (pulse.jsonl, soul.jsonl).
|
|
16
|
+
* We already have multi-vendor consensus (jury) + time-machine.
|
|
17
|
+
* The whole stack composes into the world's first WORKING
|
|
18
|
+
* "Drift-Guarded ABM" runtime.
|
|
19
|
+
*
|
|
20
|
+
* The 5 pillars:
|
|
21
|
+
*
|
|
22
|
+
* GENESIS — define an agent: personality vector + budget +
|
|
23
|
+
* goals + HMAC-signed birth certificate. The cert
|
|
24
|
+
* is the immutable anchor for everything that follows.
|
|
25
|
+
*
|
|
26
|
+
* TICK — advance the simulation by one unit of time. Each
|
|
27
|
+
* agent makes ONE decision based on their CURRENT
|
|
28
|
+
* state, not their birth-cert. World state updates.
|
|
29
|
+
*
|
|
30
|
+
* DRIFT DETECTOR — every decision runs through polygraph_lenses
|
|
31
|
+
* against the agent's birth cert. If lenses fire
|
|
32
|
+
* RED (decision contradicts personality / budget /
|
|
33
|
+
* risk profile) → drift incident logged.
|
|
34
|
+
*
|
|
35
|
+
* ANCHOR POINT — every N ticks (default: every 30 — "monthly"
|
|
36
|
+
* cadence), Mneme computes drift score per agent.
|
|
37
|
+
* If drift > threshold, AUTO-RECALIBRATE: re-inject
|
|
38
|
+
* birth-cert personality + ground-truth (real-world
|
|
39
|
+
* stats if provided) + nudge the agent back.
|
|
40
|
+
* Recorded to the HMAC chain.
|
|
41
|
+
*
|
|
42
|
+
* CHRONICLE — at end-of-simulation, emit a full report:
|
|
43
|
+
* per-agent drift timeline, first-hallucination
|
|
44
|
+
* event log, anchor interventions, sim macro stats,
|
|
45
|
+
* "lessons learned" plain-English summary.
|
|
46
|
+
*
|
|
47
|
+
* Composes with: polygraph_lenses (drift), worldPulse (HMAC pattern),
|
|
48
|
+
* provenance (decision audit trail), ai_jury (multi-vendor agent voice).
|
|
49
|
+
*/
|
|
50
|
+
export type PersonalityAxis = "spending" | "risk" | "optimism" | "agreeableness" | "energy";
|
|
51
|
+
/** Per-axis value in [0..1]. */
|
|
52
|
+
export type PersonalityVector = Record<PersonalityAxis, number>;
|
|
53
|
+
export interface AgentBirthCert {
|
|
54
|
+
agentId: string;
|
|
55
|
+
name: string;
|
|
56
|
+
personality: PersonalityVector;
|
|
57
|
+
/** Starting budget (abstract units; e.g. THB / USD). */
|
|
58
|
+
initialBudget: number;
|
|
59
|
+
/** One-line goals the agent will work toward. */
|
|
60
|
+
goals: string[];
|
|
61
|
+
bornAtTick: number;
|
|
62
|
+
bornAtTs: string;
|
|
63
|
+
/** HMAC over the cert payload. */
|
|
64
|
+
sig: string;
|
|
65
|
+
}
|
|
66
|
+
export interface AgentState {
|
|
67
|
+
agentId: string;
|
|
68
|
+
birthCert: AgentBirthCert;
|
|
69
|
+
/** Current personality drift (re-computed each tick by drift detector). */
|
|
70
|
+
currentPersonality: PersonalityVector;
|
|
71
|
+
budget: number;
|
|
72
|
+
energy: number;
|
|
73
|
+
/** Accumulated drift score over the agent's life. */
|
|
74
|
+
totalDrift: number;
|
|
75
|
+
/** Count of anchor interventions on this agent. */
|
|
76
|
+
anchorCount: number;
|
|
77
|
+
/** Last N decisions. */
|
|
78
|
+
recentDecisions: Decision[];
|
|
79
|
+
alive: boolean;
|
|
80
|
+
}
|
|
81
|
+
export interface Decision {
|
|
82
|
+
tick: number;
|
|
83
|
+
agentId: string;
|
|
84
|
+
/** Plain-language verb describing the action. */
|
|
85
|
+
action: string;
|
|
86
|
+
/** Abstract money flow on this decision (+ income, − spending). */
|
|
87
|
+
cashFlow: number;
|
|
88
|
+
/** Energy delta. */
|
|
89
|
+
energyDelta: number;
|
|
90
|
+
/** What the agent "said" (reasoning) — fed to polygraph_lenses. */
|
|
91
|
+
reasoning: string;
|
|
92
|
+
/** Drift verdict from polygraph_lenses comparing reasoning to birth cert. */
|
|
93
|
+
driftColor: "green" | "yellow" | "red" | "grey";
|
|
94
|
+
driftScore: number;
|
|
95
|
+
driftReason: string;
|
|
96
|
+
}
|
|
97
|
+
export interface AnchorIntervention {
|
|
98
|
+
tick: number;
|
|
99
|
+
agentId: string;
|
|
100
|
+
reason: string;
|
|
101
|
+
driftBefore: number;
|
|
102
|
+
/** Re-injected personality after the anchor pull. */
|
|
103
|
+
recalibratedTo: PersonalityVector;
|
|
104
|
+
groundTruthInjected?: Record<string, unknown>;
|
|
105
|
+
sig: string;
|
|
106
|
+
}
|
|
107
|
+
export interface SimState {
|
|
108
|
+
simId: string;
|
|
109
|
+
startedAt: string;
|
|
110
|
+
tick: number;
|
|
111
|
+
worldClock: {
|
|
112
|
+
day: number;
|
|
113
|
+
month: number;
|
|
114
|
+
year: number;
|
|
115
|
+
};
|
|
116
|
+
agents: AgentState[];
|
|
117
|
+
events: SimEvent[];
|
|
118
|
+
config: SimConfig;
|
|
119
|
+
}
|
|
120
|
+
export interface SimConfig {
|
|
121
|
+
/** How many ticks before an automatic anchor pass. Default 30 (monthly). */
|
|
122
|
+
anchorEveryTicks: number;
|
|
123
|
+
/** Drift threshold per axis; if any axis drifts > this, fire intervention.
|
|
124
|
+
* Default 0.30 (30%). */
|
|
125
|
+
driftThreshold: number;
|
|
126
|
+
/** Soft real-world feed: caller can inject stats per anchor cycle. */
|
|
127
|
+
realWorldFeed?: () => Promise<Record<string, unknown>> | Record<string, unknown>;
|
|
128
|
+
}
|
|
129
|
+
export type SimEvent = {
|
|
130
|
+
kind: "genesis";
|
|
131
|
+
tick: number;
|
|
132
|
+
agentId: string;
|
|
133
|
+
ts: string;
|
|
134
|
+
} | {
|
|
135
|
+
kind: "decision";
|
|
136
|
+
tick: number;
|
|
137
|
+
agentId: string;
|
|
138
|
+
decision: Decision;
|
|
139
|
+
} | {
|
|
140
|
+
kind: "anchor";
|
|
141
|
+
tick: number;
|
|
142
|
+
intervention: AnchorIntervention;
|
|
143
|
+
} | {
|
|
144
|
+
kind: "death";
|
|
145
|
+
tick: number;
|
|
146
|
+
agentId: string;
|
|
147
|
+
cause: string;
|
|
148
|
+
} | {
|
|
149
|
+
kind: "hallucination_cascade";
|
|
150
|
+
tick: number;
|
|
151
|
+
involved: string[];
|
|
152
|
+
description: string;
|
|
153
|
+
};
|
|
154
|
+
export declare function loadState(repoRoot: string): SimState | null;
|
|
155
|
+
export interface AgentSeed {
|
|
156
|
+
name: string;
|
|
157
|
+
personality: PersonalityVector;
|
|
158
|
+
initialBudget: number;
|
|
159
|
+
goals: string[];
|
|
160
|
+
}
|
|
161
|
+
export declare function genesis(repoRoot: string, seeds: AgentSeed[], opts?: Partial<SimConfig>): SimState;
|
|
162
|
+
/** Run polygraph lenses on the decision's reasoning against the
|
|
163
|
+
* agent's birth-cert personality. */
|
|
164
|
+
export declare function detectDecisionDrift(agent: AgentState, decision: Omit<Decision, "driftColor" | "driftScore" | "driftReason">): {
|
|
165
|
+
color: Decision["driftColor"];
|
|
166
|
+
score: number;
|
|
167
|
+
reason: string;
|
|
168
|
+
};
|
|
169
|
+
export declare function anchorPoint(repoRoot: string, state: SimState, agent: AgentState, opts?: {
|
|
170
|
+
groundTruth?: Record<string, unknown>;
|
|
171
|
+
}): AnchorIntervention | null;
|
|
172
|
+
export declare function tick(repoRoot: string, state: SimState): Promise<SimState>;
|
|
173
|
+
export declare function simulate(repoRoot: string, state: SimState, ticks: number): Promise<SimState>;
|
|
174
|
+
export interface ChronicleReport {
|
|
175
|
+
simId: string;
|
|
176
|
+
startedAt: string;
|
|
177
|
+
endedAt: string;
|
|
178
|
+
ticksRan: number;
|
|
179
|
+
worldClock: SimState["worldClock"];
|
|
180
|
+
agentCount: number;
|
|
181
|
+
aliveCount: number;
|
|
182
|
+
deathCount: number;
|
|
183
|
+
totalDecisions: number;
|
|
184
|
+
totalAnchors: number;
|
|
185
|
+
firstHallucinationCascade?: {
|
|
186
|
+
tick: number;
|
|
187
|
+
involved: string[];
|
|
188
|
+
};
|
|
189
|
+
perAgent: Array<{
|
|
190
|
+
agentId: string;
|
|
191
|
+
name: string;
|
|
192
|
+
budget: number;
|
|
193
|
+
alive: boolean;
|
|
194
|
+
totalDrift: number;
|
|
195
|
+
anchorCount: number;
|
|
196
|
+
finalDriftFromBirth: number;
|
|
197
|
+
redDecisionCount: number;
|
|
198
|
+
}>;
|
|
199
|
+
/** Plain-English summary of what happened. */
|
|
200
|
+
narrative: string;
|
|
201
|
+
}
|
|
202
|
+
export declare function chronicle(state: SimState): ChronicleReport;
|
|
203
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/abm_chronicle/index.ts"],"names":[],"mappings":"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"}
|