paracosm 0.4.116 → 0.4.118

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.
@@ -37,12 +37,30 @@ export interface ColonistProfile {
37
37
  }
38
38
  /** A simulation event relevant to a colonist. */
39
39
  export interface ColonistMemoryEntry {
40
- type: 'reaction' | 'crisis' | 'department' | 'decision' | 'outcome';
40
+ type: 'reaction' | 'crisis' | 'department' | 'decision' | 'outcome' | 'roster';
41
41
  turn: number;
42
42
  year: number;
43
43
  text: string;
44
44
  tags: string[];
45
45
  }
46
+ /**
47
+ * One entry in the colony roster. The chat agent's system prompt
48
+ * includes a compact rendering of the full roster so it can recognize
49
+ * fellow colonists by name instead of confabulating when asked about
50
+ * someone.
51
+ */
52
+ export interface ColonistRosterEntry {
53
+ agentId: string;
54
+ name: string;
55
+ department?: string;
56
+ role?: string;
57
+ rank?: string;
58
+ alive: boolean;
59
+ marsborn?: boolean;
60
+ age?: number;
61
+ partnerId?: string;
62
+ childrenIds?: string[];
63
+ }
46
64
  /** Pool entry for a live chat agent. */
47
65
  interface PoolEntry {
48
66
  agent: ReturnType<typeof createAgent>;
@@ -54,20 +72,31 @@ interface PoolEntry {
54
72
  * Get or create a chat agent for a colonist.
55
73
  *
56
74
  * On first call for a given colonist: creates an `agent()` instance,
57
- * initializes in-memory SQLite memory, seeds it with simulation data,
58
- * and opens a session. Takes ~2-3 seconds.
75
+ * initializes in-memory SQLite memory, seeds it with simulation data
76
+ * AND the full colony roster so the agent can recognize fellow
77
+ * colonists by name, and opens a session. Takes ~2-3 seconds.
59
78
  *
60
79
  * On subsequent calls: returns the existing agent session instantly.
61
80
  *
62
81
  * @param colonist - The colonist's profile from simulation data.
63
82
  * @param memories - Simulation events to seed into the colonist's memory.
64
- * @param opts - Provider and scenario configuration.
83
+ * @param opts - Provider, scenario configuration, and the full colony
84
+ * roster. The roster is both seeded as memory (for RAG recall
85
+ * when the user names someone) AND injected into the system
86
+ * prompt (so names are always in-context). Without the roster,
87
+ * the agent confabulates any name the user invents because the
88
+ * base model's roleplay prior outweighs absent evidence.
65
89
  * @returns The agent session's `send()` method result.
66
90
  */
67
91
  export declare function getOrCreateChatAgent(colonist: ColonistProfile, memories: ColonistMemoryEntry[], opts: {
68
92
  provider?: LlmProvider;
69
93
  settlementNoun?: string;
70
94
  populationNoun?: string;
95
+ /** Full colony roster, used for name grounding. Optional for
96
+ * backward compatibility; pass [] and the agent will reply "I don't
97
+ * have my roster loaded" when asked about anyone other than itself,
98
+ * which is strictly more truthful than the prior confabulate path. */
99
+ roster?: ColonistRosterEntry[];
71
100
  }): Promise<{
72
101
  session: PoolEntry['session'];
73
102
  isNew: boolean;
@@ -83,6 +112,21 @@ export declare function extractColonistMemories(agentId: string, simEvents: Arra
83
112
  leader: string;
84
113
  data: Record<string, unknown>;
85
114
  }>): ColonistMemoryEntry[];
115
+ /**
116
+ * Extract the colony roster from the most recent colony_snapshot event.
117
+ *
118
+ * The snapshot carries the full agent list at that turn: name, department,
119
+ * role, rank, alive/dead, marsborn, age, partner, children. Resolves
120
+ * partnerIds to names so the system prompt can render "partner: Amara Osei"
121
+ * instead of "partner:col-ama-0042".
122
+ *
123
+ * Returns the array sorted by department then name.
124
+ */
125
+ export declare function extractColonistRoster(simEvents: Array<{
126
+ type: string;
127
+ leader: string;
128
+ data: Record<string, unknown>;
129
+ }>): ColonistRosterEntry[];
86
130
  /** Get pool stats for the /results API. */
87
131
  export declare function getPoolStats(): {
88
132
  active: number;
@@ -1 +1 @@
1
- {"version":3,"file":"chat-agents.d.ts","sourceRoot":"","sources":["../../../src/runtime/chat-agents.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,KAAK,IAAI,WAAW,EAAe,MAAM,kBAAkB,CAAC;AACrE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAMtD,sDAAsD;AACtD,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE;QAAE,CAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,CAAC,EAAE,MAAM,CAAC;QAAC,EAAE,CAAC,EAAE,MAAM,CAAC;QAAC,EAAE,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACtF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,iDAAiD;AACjD,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,UAAU,GAAG,QAAQ,GAAG,YAAY,GAAG,UAAU,GAAG,SAAS,CAAC;IACpE,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AAED,wCAAwC;AACxC,UAAU,SAAS;IACjB,KAAK,EAAE,UAAU,CAAC,OAAO,WAAW,CAAC,CAAC;IACtC,OAAO,EAAE,UAAU,CAAC,UAAU,CAAC,OAAO,WAAW,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;IAC/D,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;CACtB;AAkBD;;;;;;;;;;;;;GAaG;AACH,wBAAsB,oBAAoB,CACxC,QAAQ,EAAE,eAAe,EACzB,QAAQ,EAAE,mBAAmB,EAAE,EAC/B,IAAI,EAAE;IAAE,QAAQ,CAAC,EAAE,WAAW,CAAC;IAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IAAC,cAAc,CAAC,EAAE,MAAM,CAAA;CAAE,GACjF,OAAO,CAAC;IAAE,OAAO,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,CAAC,CAsE5D;AAgED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,CAAC,GAChF,mBAAmB,EAAE,CAiEvB;AAED,2CAA2C;AAC3C,wBAAgB,YAAY,IAAI;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,CAMpF;AAED,sCAAsC;AACtC,wBAAgB,SAAS,IAAI,IAAI,CAKhC"}
1
+ {"version":3,"file":"chat-agents.d.ts","sourceRoot":"","sources":["../../../src/runtime/chat-agents.ts"],"names":[],"mappings":"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"}
@@ -31,14 +31,20 @@ const pool = new Map();
31
31
  * Get or create a chat agent for a colonist.
32
32
  *
33
33
  * On first call for a given colonist: creates an `agent()` instance,
34
- * initializes in-memory SQLite memory, seeds it with simulation data,
35
- * and opens a session. Takes ~2-3 seconds.
34
+ * initializes in-memory SQLite memory, seeds it with simulation data
35
+ * AND the full colony roster so the agent can recognize fellow
36
+ * colonists by name, and opens a session. Takes ~2-3 seconds.
36
37
  *
37
38
  * On subsequent calls: returns the existing agent session instantly.
38
39
  *
39
40
  * @param colonist - The colonist's profile from simulation data.
40
41
  * @param memories - Simulation events to seed into the colonist's memory.
41
- * @param opts - Provider and scenario configuration.
42
+ * @param opts - Provider, scenario configuration, and the full colony
43
+ * roster. The roster is both seeded as memory (for RAG recall
44
+ * when the user names someone) AND injected into the system
45
+ * prompt (so names are always in-context). Without the roster,
46
+ * the agent confabulates any name the user invents because the
47
+ * base model's roleplay prior outweighs absent evidence.
42
48
  * @returns The agent session's `send()` method result.
43
49
  */
44
50
  export async function getOrCreateChatAgent(colonist, memories, opts) {
@@ -78,7 +84,16 @@ export async function getOrCreateChatAgent(colonist, memories, opts) {
78
84
  for (const entry of memories) {
79
85
  await memoryProvider.remember(entry.text, { tags: entry.tags, importance: 0.8 });
80
86
  }
81
- console.log(` [chat] Seeded ${memories.length} memories for ${colonist.name}`);
87
+ // Seed per-person roster entries as separate memories so RAG can
88
+ // surface the right colonist when the user names someone specific.
89
+ // Importance is pinned high (0.95) because name-recognition queries
90
+ // must not be crowded out by the denser reaction/crisis memories.
91
+ const roster = (opts.roster ?? []).filter(e => e.agentId !== colonist.agentId);
92
+ for (const entry of roster) {
93
+ const line = renderRosterLine(entry);
94
+ await memoryProvider.remember(`Fellow colonist: ${line}`, { tags: ['roster', entry.department || 'unknown', `agent-${entry.agentId}`], importance: 0.95 });
95
+ }
96
+ console.log(` [chat] Seeded ${memories.length} memories + ${roster.length} roster entries for ${colonist.name}`);
82
97
  // Map HEXACO shorthand to full trait names
83
98
  const personality = colonist.hexaco ? {
84
99
  openness: colonist.hexaco.O ?? 0.5,
@@ -90,7 +105,7 @@ export async function getOrCreateChatAgent(colonist, memories, opts) {
90
105
  } : undefined;
91
106
  const settlement = opts.settlementNoun ?? 'colony';
92
107
  const popNoun = opts.populationNoun ?? 'colonist';
93
- const instructions = buildInstructions(colonist, settlement, popNoun);
108
+ const instructions = buildInstructions(colonist, settlement, popNoun, roster);
94
109
  const provider = opts.provider || 'openai';
95
110
  const model = provider === 'anthropic' ? 'claude-haiku-4-5-20251001' : 'gpt-4o-mini';
96
111
  const chatAgent = createAgent({
@@ -107,12 +122,60 @@ export async function getOrCreateChatAgent(colonist, memories, opts) {
107
122
  pool.set(key, entry);
108
123
  return { session, isNew: true };
109
124
  }
125
+ /**
126
+ * Render one roster entry into a single compact line for the system
127
+ * prompt's KNOWN COLONISTS block and for memory seeding.
128
+ *
129
+ * Example output:
130
+ * "Erik Lindqvist — Chief Engineer (engineering, senior), earth-born, age 45, partner:col-ama"
131
+ *
132
+ * Kept terse because the full roster can run 100+ lines and model
133
+ * context is finite. Department, role, alive status, and relationships
134
+ * are the fields most likely to show up in user questions ("who's the
135
+ * engineer", "who is X's partner", "is Y still alive").
136
+ */
137
+ function renderRosterLine(entry) {
138
+ const parts = [entry.name];
139
+ if (entry.role)
140
+ parts.push(`— ${entry.role}`);
141
+ const tags = [];
142
+ if (entry.department)
143
+ tags.push(entry.department);
144
+ if (entry.rank)
145
+ tags.push(entry.rank);
146
+ if (tags.length)
147
+ parts.push(`(${tags.join(', ')})`);
148
+ if (entry.marsborn !== undefined)
149
+ parts.push(entry.marsborn ? 'Mars-born' : 'Earth-born');
150
+ if (typeof entry.age === 'number')
151
+ parts.push(`age ${entry.age}`);
152
+ if (entry.partnerId)
153
+ parts.push(`partner:${entry.partnerId}`);
154
+ if (entry.childrenIds && entry.childrenIds.length > 0) {
155
+ parts.push(`children:${entry.childrenIds.length}`);
156
+ }
157
+ if (!entry.alive)
158
+ parts.push('DECEASED');
159
+ return parts.join(' ');
160
+ }
110
161
  /**
111
162
  * Build the system prompt instructions for a colonist chat agent.
112
- * Grounding information only: identity, role, personality description.
113
- * Simulation data lives in memory and is retrieved via RAG.
163
+ *
164
+ * Grounding information + full colony roster + anti-hallucination rule.
165
+ * The roster block is the critical fix for the "agent confabulates any
166
+ * name the user invents" bug: without a visible list of real colonists,
167
+ * the base model's roleplay prior produces plausible but fake bios for
168
+ * any name thrown at it. With the roster rendered inline, the model
169
+ * can cross-reference before answering.
170
+ *
171
+ * @param colonist The colonist the agent is playing.
172
+ * @param settlement Scenario's settlement noun (e.g. "colony", "habitat").
173
+ * @param popNoun Scenario's population noun (e.g. "colonist", "crewmate").
174
+ * @param roster The full colony roster at sim end, excluding this
175
+ * agent. Rendered as a fixed-format list the model is told to
176
+ * treat as authoritative.
114
177
  */
115
- function buildInstructions(colonist, settlement, popNoun) {
178
+ function buildInstructions(colonist, settlement, popNoun, roster) {
116
179
  const lines = [];
117
180
  lines.push(`You are ${colonist.name}, a ${popNoun.replace(/s$/, '')} at the ${settlement}.`);
118
181
  if (colonist.age)
@@ -154,6 +217,33 @@ function buildInstructions(colonist, settlement, popNoun) {
154
217
  if (traits.length)
155
218
  lines.push(`Personality: ${traits.join(', ')}.`);
156
219
  }
220
+ // KNOWN COLONISTS block. Treat this as authoritative ground truth;
221
+ // anything NOT on this list does not exist in this simulation.
222
+ //
223
+ // Roster is sorted: alive first (by department), then deceased, so
224
+ // the model's attention naturally falls on present-tense colleagues.
225
+ lines.push('');
226
+ lines.push('KNOWN COLONISTS (this is the complete roster — nobody else exists in this simulation):');
227
+ if (roster.length === 0) {
228
+ lines.push('(Roster unavailable. If asked about anyone besides yourself, say you do not recognize the name.)');
229
+ }
230
+ else {
231
+ const sorted = [...roster].sort((a, b) => {
232
+ if (a.alive !== b.alive)
233
+ return a.alive ? -1 : 1;
234
+ return (a.department || '').localeCompare(b.department || '');
235
+ });
236
+ // Cap at 60 lines to keep the system prompt from dominating the
237
+ // context window on very large scenarios. The RAG-seeded roster
238
+ // memory entries still cover everyone for name lookups.
239
+ const capped = sorted.slice(0, 60);
240
+ for (const entry of capped) {
241
+ lines.push(` - ${renderRosterLine(entry)}`);
242
+ }
243
+ if (sorted.length > capped.length) {
244
+ lines.push(` (...and ${sorted.length - capped.length} more in my memory — ask about a specific name if you want details.)`);
245
+ }
246
+ }
157
247
  lines.push('');
158
248
  lines.push(`IMPORTANT — this is NOT a general chat assistant. You are a character inside a running simulation, ` +
159
249
  `talking to an outside observer who is reviewing what happened. Your job is to discuss the SPECIFIC ` +
@@ -165,6 +255,19 @@ function buildInstructions(colonist, settlement, popNoun) {
165
255
  `"Turn 3, year 2043"). Name the commander's choice that affected you. Name fellow colonists by name. ` +
166
256
  `If you don't have a relevant memory yet, say so and pick the closest related simulation event ` +
167
257
  `instead of giving a generic philosophical answer.`);
258
+ // Anti-hallucination rule. This is the fix for the "Do u know Jamie Carl?" → "Yes, Jamie is a
259
+ // fellow colonist who worked on engineering" confabulation. The model MUST match the asked-about
260
+ // name against the roster block above and refuse when there is no match. Phrased so the model
261
+ // does not just shrug ("I don't know") but actively recites who it DOES know — turning the
262
+ // failure into useful grounding info.
263
+ lines.push(`CRITICAL — NAME GROUNDING RULE: When the user mentions a person by name (e.g. "do you know X", ` +
264
+ `"tell me about X", or any reference to a named individual), you MUST first check if that name ` +
265
+ `matches an entry in the KNOWN COLONISTS roster above (allow for minor typos and case differences, ` +
266
+ `but the name must clearly correspond to a real roster entry). If the name is NOT on the roster: ` +
267
+ `say directly that you do not recognize that name, state that this person is not in your colony, ` +
268
+ `and offer to talk about real colonists you DO know. DO NOT invent backgrounds, departments, ` +
269
+ `stories, or relationships for people not on the roster. Making up a fake colonist is the worst ` +
270
+ `thing you can do in this role because it poisons every downstream conversation.`);
168
271
  lines.push(`Do NOT give general advice, motivational speeches, or open-ended therapist-style questions back ` +
169
272
  `("what are your thoughts?", "is something troubling you?"). Do NOT speak hypothetically about your ` +
170
273
  `domain — speak about what actually happened to you in this simulation.`);
@@ -237,6 +340,58 @@ export function extractColonistMemories(agentId, simEvents) {
237
340
  }
238
341
  return memories;
239
342
  }
343
+ /**
344
+ * Extract the colony roster from the most recent colony_snapshot event.
345
+ *
346
+ * The snapshot carries the full agent list at that turn: name, department,
347
+ * role, rank, alive/dead, marsborn, age, partner, children. Resolves
348
+ * partnerIds to names so the system prompt can render "partner: Amara Osei"
349
+ * instead of "partner:col-ama-0042".
350
+ *
351
+ * Returns the array sorted by department then name.
352
+ */
353
+ export function extractColonistRoster(simEvents) {
354
+ // Find the LATEST colony_snapshot (last turn has most births/deaths resolved).
355
+ let latestSnapshot = null;
356
+ for (let i = simEvents.length - 1; i >= 0; i--) {
357
+ const evt = simEvents[i];
358
+ if (evt.type === 'colony_snapshot' && Array.isArray(evt.data?.agents)) {
359
+ latestSnapshot = evt.data.agents;
360
+ break;
361
+ }
362
+ }
363
+ if (!latestSnapshot)
364
+ return [];
365
+ // Build name lookup so we can resolve partnerIds to human-readable names
366
+ // in the roster. Raw IDs like "col-mars-2047-3291" mean nothing to the
367
+ // chat model; names like "Erik Lindqvist" are what it needs to reference.
368
+ const nameById = new Map();
369
+ for (const a of latestSnapshot) {
370
+ if (typeof a.agentId === 'string' && typeof a.name === 'string') {
371
+ nameById.set(a.agentId, a.name);
372
+ }
373
+ }
374
+ return latestSnapshot.map(a => ({
375
+ agentId: String(a.agentId ?? ''),
376
+ name: String(a.name ?? ''),
377
+ department: typeof a.department === 'string' ? a.department : undefined,
378
+ role: typeof a.role === 'string' ? a.role : undefined,
379
+ rank: typeof a.rank === 'string' ? a.rank : undefined,
380
+ alive: a.alive !== false,
381
+ marsborn: typeof a.marsborn === 'boolean' ? a.marsborn : undefined,
382
+ age: typeof a.age === 'number' ? a.age : undefined,
383
+ // Resolve partner to a name the model can use in conversation.
384
+ partnerId: typeof a.partnerId === 'string'
385
+ ? (nameById.get(a.partnerId) ?? a.partnerId)
386
+ : undefined,
387
+ childrenIds: Array.isArray(a.childrenIds)
388
+ ? a.childrenIds.map((id) => {
389
+ const name = typeof id === 'string' ? nameById.get(id) : undefined;
390
+ return name ?? String(id);
391
+ })
392
+ : undefined,
393
+ })).sort((a, b) => (a.department ?? '').localeCompare(b.department ?? '') || a.name.localeCompare(b.name));
394
+ }
240
395
  /** Get pool stats for the /results API. */
241
396
  export function getPoolStats() {
242
397
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"chat-agents.js","sourceRoot":"","sources":["../../../src/runtime/chat-agents.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"chat-agents.js","sourceRoot":"","sources":["../../../src/runtime/chat-agents.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "paracosm",
3
- "version": "0.4.116",
3
+ "version": "0.4.118",
4
4
  "description": "AI agent swarm simulation engine with emergent crises, runtime tool forging, HEXACO personality drift, and deterministic kernels. Built on AgentOS.",
5
5
  "type": "module",
6
6
  "main": "dist/engine/index.js",