feat: wire narration emitter into social system and GameLoop

Add narrationEmitter system that reads completed interactions from
socialState.lastOutcome and feeds them to the NarrationService. It runs
between socialSystem and relationshipSystem to capture outcomes before
they are cleared. Includes pair deduplication, proposal detection,
priority marking for followed NPCs and high-value relationships, and
personality formatting for LLM prompts.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
root
2026-03-08 18:02:59 +00:00
parent afc8329a82
commit 541b70b781
4 changed files with 331 additions and 2 deletions
+2 -2
View File
@@ -1,6 +1,6 @@
import type { EntityId } from './types.js';
import type { EntityId, InteractionOutcome } from './types.js';
export type NarrationOutcome = 'positive' | 'negative' | 'proposal_accepted' | 'proposal_rejected';
export type NarrationOutcome = InteractionOutcome | 'proposal_accepted' | 'proposal_rejected';
export interface NarrationEvent {
id: number;