@ai-rpg-engine/modules 1.0.0

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.
Files changed (117) hide show
  1. package/dist/belief-provenance.d.ts +41 -0
  2. package/dist/belief-provenance.d.ts.map +1 -0
  3. package/dist/belief-provenance.js +254 -0
  4. package/dist/belief-provenance.js.map +1 -0
  5. package/dist/belief-provenance.test.d.ts +2 -0
  6. package/dist/belief-provenance.test.d.ts.map +1 -0
  7. package/dist/belief-provenance.test.js +139 -0
  8. package/dist/belief-provenance.test.js.map +1 -0
  9. package/dist/cognition-core.d.ts +89 -0
  10. package/dist/cognition-core.d.ts.map +1 -0
  11. package/dist/cognition-core.js +370 -0
  12. package/dist/cognition-core.js.map +1 -0
  13. package/dist/cognition-core.test.d.ts +2 -0
  14. package/dist/cognition-core.test.d.ts.map +1 -0
  15. package/dist/cognition-core.test.js +215 -0
  16. package/dist/cognition-core.test.js.map +1 -0
  17. package/dist/combat-core.d.ts +11 -0
  18. package/dist/combat-core.d.ts.map +1 -0
  19. package/dist/combat-core.js +152 -0
  20. package/dist/combat-core.js.map +1 -0
  21. package/dist/dialogue-core.d.ts +10 -0
  22. package/dist/dialogue-core.d.ts.map +1 -0
  23. package/dist/dialogue-core.js +172 -0
  24. package/dist/dialogue-core.js.map +1 -0
  25. package/dist/district-core.d.ts +59 -0
  26. package/dist/district-core.d.ts.map +1 -0
  27. package/dist/district-core.js +224 -0
  28. package/dist/district-core.js.map +1 -0
  29. package/dist/district-core.test.d.ts +2 -0
  30. package/dist/district-core.test.d.ts.map +1 -0
  31. package/dist/district-core.test.js +157 -0
  32. package/dist/district-core.test.js.map +1 -0
  33. package/dist/environment-core.d.ts +78 -0
  34. package/dist/environment-core.d.ts.map +1 -0
  35. package/dist/environment-core.js +229 -0
  36. package/dist/environment-core.js.map +1 -0
  37. package/dist/environment-core.test.d.ts +2 -0
  38. package/dist/environment-core.test.d.ts.map +1 -0
  39. package/dist/environment-core.test.js +252 -0
  40. package/dist/environment-core.test.js.map +1 -0
  41. package/dist/faction-cognition.d.ts +39 -0
  42. package/dist/faction-cognition.d.ts.map +1 -0
  43. package/dist/faction-cognition.js +139 -0
  44. package/dist/faction-cognition.js.map +1 -0
  45. package/dist/faction-cognition.test.d.ts +2 -0
  46. package/dist/faction-cognition.test.d.ts.map +1 -0
  47. package/dist/faction-cognition.test.js +166 -0
  48. package/dist/faction-cognition.test.js.map +1 -0
  49. package/dist/index.d.ts +31 -0
  50. package/dist/index.d.ts.map +1 -0
  51. package/dist/index.js +18 -0
  52. package/dist/index.js.map +1 -0
  53. package/dist/inventory-core.d.ts +10 -0
  54. package/dist/inventory-core.d.ts.map +1 -0
  55. package/dist/inventory-core.js +69 -0
  56. package/dist/inventory-core.js.map +1 -0
  57. package/dist/knowledge-decay.test.d.ts +2 -0
  58. package/dist/knowledge-decay.test.d.ts.map +1 -0
  59. package/dist/knowledge-decay.test.js +143 -0
  60. package/dist/knowledge-decay.test.js.map +1 -0
  61. package/dist/narrative-authority.d.ts +40 -0
  62. package/dist/narrative-authority.d.ts.map +1 -0
  63. package/dist/narrative-authority.js +89 -0
  64. package/dist/narrative-authority.js.map +1 -0
  65. package/dist/narrative-authority.test.d.ts +2 -0
  66. package/dist/narrative-authority.test.d.ts.map +1 -0
  67. package/dist/narrative-authority.test.js +237 -0
  68. package/dist/narrative-authority.test.js.map +1 -0
  69. package/dist/observer-presentation.d.ts +74 -0
  70. package/dist/observer-presentation.d.ts.map +1 -0
  71. package/dist/observer-presentation.js +277 -0
  72. package/dist/observer-presentation.js.map +1 -0
  73. package/dist/observer-presentation.test.d.ts +2 -0
  74. package/dist/observer-presentation.test.d.ts.map +1 -0
  75. package/dist/observer-presentation.test.js +156 -0
  76. package/dist/observer-presentation.test.js.map +1 -0
  77. package/dist/perception-filter.d.ts +46 -0
  78. package/dist/perception-filter.d.ts.map +1 -0
  79. package/dist/perception-filter.js +281 -0
  80. package/dist/perception-filter.js.map +1 -0
  81. package/dist/perception-filter.test.d.ts +2 -0
  82. package/dist/perception-filter.test.d.ts.map +1 -0
  83. package/dist/perception-filter.test.js +308 -0
  84. package/dist/perception-filter.test.js.map +1 -0
  85. package/dist/progression-core.d.ts +63 -0
  86. package/dist/progression-core.d.ts.map +1 -0
  87. package/dist/progression-core.js +232 -0
  88. package/dist/progression-core.js.map +1 -0
  89. package/dist/progression-core.test.d.ts +2 -0
  90. package/dist/progression-core.test.d.ts.map +1 -0
  91. package/dist/progression-core.test.js +328 -0
  92. package/dist/progression-core.test.js.map +1 -0
  93. package/dist/rumor-propagation.d.ts +31 -0
  94. package/dist/rumor-propagation.d.ts.map +1 -0
  95. package/dist/rumor-propagation.js +180 -0
  96. package/dist/rumor-propagation.js.map +1 -0
  97. package/dist/rumor-propagation.test.d.ts +2 -0
  98. package/dist/rumor-propagation.test.d.ts.map +1 -0
  99. package/dist/rumor-propagation.test.js +176 -0
  100. package/dist/rumor-propagation.test.js.map +1 -0
  101. package/dist/simulation-inspector.d.ts +78 -0
  102. package/dist/simulation-inspector.d.ts.map +1 -0
  103. package/dist/simulation-inspector.js +263 -0
  104. package/dist/simulation-inspector.js.map +1 -0
  105. package/dist/simulation-inspector.test.d.ts +2 -0
  106. package/dist/simulation-inspector.test.d.ts.map +1 -0
  107. package/dist/simulation-inspector.test.js +152 -0
  108. package/dist/simulation-inspector.test.js.map +1 -0
  109. package/dist/status-core.d.ts +17 -0
  110. package/dist/status-core.d.ts.map +1 -0
  111. package/dist/status-core.js +106 -0
  112. package/dist/status-core.js.map +1 -0
  113. package/dist/traversal-core.d.ts +3 -0
  114. package/dist/traversal-core.d.ts.map +1 -0
  115. package/dist/traversal-core.js +93 -0
  116. package/dist/traversal-core.js.map +1 -0
  117. package/package.json +34 -0
@@ -0,0 +1,41 @@
1
+ import type { EngineModule, WorldState, ScalarValue } from '@ai-rpg-engine/core';
2
+ export type TraceStep = {
3
+ tick: number;
4
+ type: 'source-event' | 'perceived' | 'missed' | 'belief-formed' | 'rumor-scheduled' | 'rumor-delivered' | 'faction-belief-updated' | 'decayed' | 'reinforced' | 'pruned';
5
+ description: string;
6
+ data: Record<string, unknown>;
7
+ };
8
+ export type BeliefTrace = {
9
+ subject: string;
10
+ key: string;
11
+ holder: {
12
+ type: 'entity';
13
+ id: string;
14
+ } | {
15
+ type: 'faction';
16
+ id: string;
17
+ };
18
+ currentValue: ScalarValue | undefined;
19
+ currentConfidence: number;
20
+ chain: TraceStep[];
21
+ };
22
+ export declare function createBeliefProvenance(): EngineModule;
23
+ /**
24
+ * Trace the provenance of an entity's belief.
25
+ * Reconstructs the chain: source event → perception → belief formation → rumor → faction.
26
+ */
27
+ export declare function traceEntityBelief(world: WorldState, entityId: string, subject: string, key: string): BeliefTrace;
28
+ /**
29
+ * Trace the provenance of a faction's belief.
30
+ * Reconstructs: source events → entity perceptions → rumors → faction belief.
31
+ */
32
+ export declare function traceFactionBelief(world: WorldState, factionId: string, subject: string, key: string): BeliefTrace;
33
+ /**
34
+ * Trace all beliefs held about a subject across all entities and factions.
35
+ */
36
+ export declare function traceSubject(world: WorldState, subject: string): BeliefTrace[];
37
+ /**
38
+ * Format a belief trace as a human-readable forensic narrative.
39
+ */
40
+ export declare function formatBeliefTrace(trace: BeliefTrace): string;
41
+ //# sourceMappingURL=belief-provenance.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"belief-provenance.d.ts","sourceRoot":"","sources":["../src/belief-provenance.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,YAAY,EACZ,UAAU,EAEV,WAAW,EACZ,MAAM,qBAAqB,CAAC;AAY7B,MAAM,MAAM,SAAS,GAAG;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,cAAc,GAAG,WAAW,GAAG,QAAQ,GAAG,eAAe,GAC3D,iBAAiB,GAAG,iBAAiB,GAAG,wBAAwB,GAChE,SAAS,GAAG,YAAY,GAAG,QAAQ,CAAC;IACxC,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC/B,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE;QAAE,IAAI,EAAE,QAAQ,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,GAAG;QAAE,IAAI,EAAE,SAAS,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;IACzE,YAAY,EAAE,WAAW,GAAG,SAAS,CAAC;IACtC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,KAAK,EAAE,SAAS,EAAE,CAAC;CACpB,CAAC;AAIF,wBAAgB,sBAAsB,IAAI,YAAY,CAWrD;AAID;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,UAAU,EACjB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,GAAG,EAAE,MAAM,GACV,WAAW,CA+Fb;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,UAAU,EACjB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,GAAG,EAAE,MAAM,GACV,WAAW,CAgEb;AAED;;GAEG;AACH,wBAAgB,YAAY,CAC1B,KAAK,EAAE,UAAU,EACjB,OAAO,EAAE,MAAM,GACd,WAAW,EAAE,CA6Bf;AAID;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CAuB5D"}
@@ -0,0 +1,254 @@
1
+ // belief-provenance — end-to-end belief trace reconstruction
2
+ // Answers "why does X believe Y?" by correlating data from perception,
3
+ // cognition, rumor, and faction modules. No new state — reads existing logs.
4
+ import { getCognition, getBelief } from './cognition-core.js';
5
+ import { getPerceptionLog } from './perception-filter.js';
6
+ import { getFactionCognition, getFactionBelief } from './faction-cognition.js';
7
+ import { getRumorLog, getRumorsToFaction } from './rumor-propagation.js';
8
+ // --- Module ---
9
+ export function createBeliefProvenance() {
10
+ return {
11
+ id: 'belief-provenance',
12
+ version: '0.1.0',
13
+ dependsOn: ['cognition-core'],
14
+ register(_ctx) {
15
+ // Pure query module — no state, no event listeners
16
+ // All trace reconstruction happens via exported functions
17
+ },
18
+ };
19
+ }
20
+ // --- Trace API ---
21
+ /**
22
+ * Trace the provenance of an entity's belief.
23
+ * Reconstructs the chain: source event → perception → belief formation → rumor → faction.
24
+ */
25
+ export function traceEntityBelief(world, entityId, subject, key) {
26
+ const cognition = getCognition(world, entityId);
27
+ const belief = getBelief(cognition, subject, key);
28
+ const chain = [];
29
+ // Step 1: Find source events involving the subject
30
+ const relevantEvents = findRelevantEvents(world, subject, key);
31
+ for (const event of relevantEvents) {
32
+ chain.push({
33
+ tick: event.tick,
34
+ type: 'source-event',
35
+ description: `${event.type} involving ${subject}`,
36
+ data: {
37
+ eventId: event.id,
38
+ eventType: event.type,
39
+ actorId: event.actorId,
40
+ targetIds: event.targetIds,
41
+ },
42
+ });
43
+ // Step 2: Check if this entity perceived the event
44
+ if (world.modules['perception-filter']) {
45
+ const perceptionLog = getPerceptionLog(world, entityId);
46
+ const perception = perceptionLog.find((p) => p.eventId === event.id);
47
+ if (perception) {
48
+ chain.push({
49
+ tick: perception.tick,
50
+ type: perception.detected ? 'perceived' : 'missed',
51
+ description: perception.detected
52
+ ? `${entityId} detected via ${perception.sense} (clarity: ${perception.clarity.toFixed(2)})`
53
+ : `${entityId} missed via ${perception.sense} (clarity: ${perception.clarity.toFixed(2)})`,
54
+ data: {
55
+ eventId: event.id,
56
+ entityId,
57
+ sense: perception.sense,
58
+ clarity: perception.clarity,
59
+ interpretation: perception.interpretation,
60
+ },
61
+ });
62
+ }
63
+ }
64
+ }
65
+ // Step 3: Record belief formation
66
+ if (belief) {
67
+ chain.push({
68
+ tick: belief.tick,
69
+ type: 'belief-formed',
70
+ description: `${entityId} believes ${subject}.${key} = ${belief.value} (confidence: ${belief.confidence.toFixed(2)}, source: ${belief.source})`,
71
+ data: {
72
+ entityId,
73
+ subject: belief.subject,
74
+ key: belief.key,
75
+ value: belief.value,
76
+ confidence: belief.confidence,
77
+ source: belief.source,
78
+ },
79
+ });
80
+ }
81
+ // Step 4: Check for rumor propagation from this entity
82
+ if (world.modules['rumor-propagation']) {
83
+ const rumors = getRumorLog(world).filter((r) => r.sourceEntityId === entityId && r.subject === subject && r.key === key);
84
+ for (const rumor of rumors) {
85
+ chain.push({
86
+ tick: rumor.originTick,
87
+ type: 'rumor-scheduled',
88
+ description: `${entityId} rumored ${subject}.${key} to faction ${rumor.targetFactionId} (distortion: ${rumor.distortion.toFixed(3)})`,
89
+ data: {
90
+ rumorId: rumor.id,
91
+ sourceEntityId: rumor.sourceEntityId,
92
+ targetFactionId: rumor.targetFactionId,
93
+ confidence: rumor.confidence,
94
+ distortion: rumor.distortion,
95
+ hops: rumor.hops,
96
+ },
97
+ });
98
+ }
99
+ }
100
+ // Sort chain chronologically
101
+ chain.sort((a, b) => a.tick - b.tick);
102
+ return {
103
+ subject,
104
+ key,
105
+ holder: { type: 'entity', id: entityId },
106
+ currentValue: belief?.value,
107
+ currentConfidence: belief?.confidence ?? 0,
108
+ chain,
109
+ };
110
+ }
111
+ /**
112
+ * Trace the provenance of a faction's belief.
113
+ * Reconstructs: source events → entity perceptions → rumors → faction belief.
114
+ */
115
+ export function traceFactionBelief(world, factionId, subject, key) {
116
+ const factionCog = getFactionCognition(world, factionId);
117
+ const factionBelief = getFactionBelief(factionCog, subject, key);
118
+ const chain = [];
119
+ // Find rumors that contributed to this faction belief
120
+ const rumors = getRumorsToFaction(world, factionId).filter((r) => r.subject === subject && r.key === key);
121
+ for (const rumor of rumors) {
122
+ // Trace back to the entity's belief and perception
123
+ const entityTrace = traceEntityBelief(world, rumor.sourceEntityId, subject, key);
124
+ // Include entity chain steps (avoiding duplicates)
125
+ for (const step of entityTrace.chain) {
126
+ if (!chain.find((s) => s.tick === step.tick && s.type === step.type && s.data.entityId === step.data.entityId)) {
127
+ chain.push(step);
128
+ }
129
+ }
130
+ // Add rumor delivery
131
+ chain.push({
132
+ tick: rumor.originTick + 1, // approximate delivery tick
133
+ type: 'rumor-delivered',
134
+ description: `Rumor from ${rumor.sourceEntityId} delivered to faction ${factionId} (confidence: ${rumor.confidence.toFixed(2)}, distortion: ${rumor.distortion.toFixed(3)})`,
135
+ data: {
136
+ rumorId: rumor.id,
137
+ sourceEntityId: rumor.sourceEntityId,
138
+ factionId,
139
+ confidence: rumor.confidence,
140
+ distortion: rumor.distortion,
141
+ },
142
+ });
143
+ }
144
+ // Add faction belief state
145
+ if (factionBelief) {
146
+ chain.push({
147
+ tick: factionBelief.lastUpdateTick,
148
+ type: 'faction-belief-updated',
149
+ description: `Faction ${factionId} believes ${subject}.${key} = ${factionBelief.value} (confidence: ${factionBelief.confidence.toFixed(2)}, ${factionBelief.sourceEntities.length} sources)`,
150
+ data: {
151
+ factionId,
152
+ subject: factionBelief.subject,
153
+ key: factionBelief.key,
154
+ value: factionBelief.value,
155
+ confidence: factionBelief.confidence,
156
+ sourceEntities: factionBelief.sourceEntities,
157
+ distortion: factionBelief.distortion,
158
+ },
159
+ });
160
+ }
161
+ // Sort chronologically
162
+ chain.sort((a, b) => a.tick - b.tick);
163
+ return {
164
+ subject,
165
+ key,
166
+ holder: { type: 'faction', id: factionId },
167
+ currentValue: factionBelief?.value,
168
+ currentConfidence: factionBelief?.confidence ?? 0,
169
+ chain,
170
+ };
171
+ }
172
+ /**
173
+ * Trace all beliefs held about a subject across all entities and factions.
174
+ */
175
+ export function traceSubject(world, subject) {
176
+ const traces = [];
177
+ // Check all entity cognitions
178
+ const cogStates = world.modules['cognition-core']?.entityCognition ?? {};
179
+ for (const [entityId, cog] of Object.entries(cogStates)) {
180
+ const beliefs = cog.beliefs.filter((b) => b.subject === subject);
181
+ for (const belief of beliefs) {
182
+ traces.push(traceEntityBelief(world, entityId, subject, belief.key));
183
+ }
184
+ }
185
+ // Check all faction beliefs
186
+ if (world.modules['faction-cognition']) {
187
+ const factionState = world.modules['faction-cognition'];
188
+ for (const [factionId, fCog] of Object.entries(factionState.factionCognition)) {
189
+ const beliefs = fCog.beliefs.filter((b) => b.subject === subject);
190
+ for (const belief of beliefs) {
191
+ traces.push(traceFactionBelief(world, factionId, subject, belief.key));
192
+ }
193
+ }
194
+ }
195
+ return traces;
196
+ }
197
+ // --- Formatting (B3) ---
198
+ /**
199
+ * Format a belief trace as a human-readable forensic narrative.
200
+ */
201
+ export function formatBeliefTrace(trace) {
202
+ const lines = [];
203
+ const holderLabel = trace.holder.type === 'entity'
204
+ ? `Entity ${trace.holder.id}`
205
+ : `Faction ${trace.holder.id}`;
206
+ lines.push(`Belief Trace: ${holderLabel}`);
207
+ lines.push(` Subject: ${trace.subject}`);
208
+ lines.push(` Key: ${trace.key}`);
209
+ lines.push(` Current: ${trace.currentValue ?? 'none'} (confidence: ${trace.currentConfidence.toFixed(2)})`);
210
+ lines.push('');
211
+ lines.push(' Chain:');
212
+ for (const step of trace.chain) {
213
+ const icon = getStepIcon(step.type);
214
+ lines.push(` [tick ${step.tick}] ${icon} ${step.description}`);
215
+ }
216
+ if (trace.chain.length === 0) {
217
+ lines.push(' (no trace data available)');
218
+ }
219
+ return lines.join('\n');
220
+ }
221
+ function getStepIcon(type) {
222
+ switch (type) {
223
+ case 'source-event': return 'EVENT';
224
+ case 'perceived': return 'SEEN';
225
+ case 'missed': return 'MISSED';
226
+ case 'belief-formed': return 'BELIEF';
227
+ case 'rumor-scheduled': return 'RUMOR>';
228
+ case 'rumor-delivered': return 'RUMOR<';
229
+ case 'faction-belief-updated': return 'FACTION';
230
+ case 'decayed': return 'DECAY';
231
+ case 'reinforced': return 'REINF';
232
+ case 'pruned': return 'PRUNED';
233
+ default: return '???';
234
+ }
235
+ }
236
+ // --- Internal ---
237
+ function findRelevantEvents(world, subject, key) {
238
+ return world.eventLog.filter((event) => {
239
+ // Events where the subject is involved
240
+ if (event.actorId === subject)
241
+ return true;
242
+ if (event.targetIds?.includes(subject))
243
+ return true;
244
+ // Events with matching payload fields
245
+ if (event.payload.entityId === subject)
246
+ return true;
247
+ if (event.payload.attackerId === subject)
248
+ return true;
249
+ if (event.payload.targetId === subject)
250
+ return true;
251
+ return false;
252
+ });
253
+ }
254
+ //# sourceMappingURL=belief-provenance.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"belief-provenance.js","sourceRoot":"","sources":["../src/belief-provenance.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,uEAAuE;AACvE,6EAA6E;AAQ7E,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAE9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE1D,OAAO,EAAE,mBAAmB,EAAoB,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAEjG,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAuBzE,iBAAiB;AAEjB,MAAM,UAAU,sBAAsB;IACpC,OAAO;QACL,EAAE,EAAE,mBAAmB;QACvB,OAAO,EAAE,OAAO;QAChB,SAAS,EAAE,CAAC,gBAAgB,CAAC;QAE7B,QAAQ,CAAC,IAAI;YACX,mDAAmD;YACnD,0DAA0D;QAC5D,CAAC;KACF,CAAC;AACJ,CAAC;AAED,oBAAoB;AAEpB;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAC/B,KAAiB,EACjB,QAAgB,EAChB,OAAe,EACf,GAAW;IAEX,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAChD,MAAM,MAAM,GAAG,SAAS,CAAC,SAAS,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;IAClD,MAAM,KAAK,GAAgB,EAAE,CAAC;IAE9B,mDAAmD;IACnD,MAAM,cAAc,GAAG,kBAAkB,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;IAE/D,KAAK,MAAM,KAAK,IAAI,cAAc,EAAE,CAAC;QACnC,KAAK,CAAC,IAAI,CAAC;YACT,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,IAAI,EAAE,cAAc;YACpB,WAAW,EAAE,GAAG,KAAK,CAAC,IAAI,cAAc,OAAO,EAAE;YACjD,IAAI,EAAE;gBACJ,OAAO,EAAE,KAAK,CAAC,EAAE;gBACjB,SAAS,EAAE,KAAK,CAAC,IAAI;gBACrB,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,SAAS,EAAE,KAAK,CAAC,SAAS;aAC3B;SACF,CAAC,CAAC;QAEH,mDAAmD;QACnD,IAAI,KAAK,CAAC,OAAO,CAAC,mBAAmB,CAAC,EAAE,CAAC;YACvC,MAAM,aAAa,GAAG,gBAAgB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;YACxD,MAAM,UAAU,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,KAAK,CAAC,EAAE,CAAC,CAAC;YAErE,IAAI,UAAU,EAAE,CAAC;gBACf,KAAK,CAAC,IAAI,CAAC;oBACT,IAAI,EAAE,UAAU,CAAC,IAAI;oBACrB,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ;oBAClD,WAAW,EAAE,UAAU,CAAC,QAAQ;wBAC9B,CAAC,CAAC,GAAG,QAAQ,iBAAiB,UAAU,CAAC,KAAK,cAAc,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG;wBAC5F,CAAC,CAAC,GAAG,QAAQ,eAAe,UAAU,CAAC,KAAK,cAAc,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG;oBAC5F,IAAI,EAAE;wBACJ,OAAO,EAAE,KAAK,CAAC,EAAE;wBACjB,QAAQ;wBACR,KAAK,EAAE,UAAU,CAAC,KAAK;wBACvB,OAAO,EAAE,UAAU,CAAC,OAAO;wBAC3B,cAAc,EAAE,UAAU,CAAC,cAAc;qBAC1C;iBACF,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAED,kCAAkC;IAClC,IAAI,MAAM,EAAE,CAAC;QACX,KAAK,CAAC,IAAI,CAAC;YACT,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,IAAI,EAAE,eAAe;YACrB,WAAW,EAAE,GAAG,QAAQ,aAAa,OAAO,IAAI,GAAG,MAAM,MAAM,CAAC,KAAK,iBAAiB,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa,MAAM,CAAC,MAAM,GAAG;YAC/I,IAAI,EAAE;gBACJ,QAAQ;gBACR,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,GAAG,EAAE,MAAM,CAAC,GAAG;gBACf,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,UAAU,EAAE,MAAM,CAAC,UAAU;gBAC7B,MAAM,EAAE,MAAM,CAAC,MAAM;aACtB;SACF,CAAC,CAAC;IACL,CAAC;IAED,uDAAuD;IACvD,IAAI,KAAK,CAAC,OAAO,CAAC,mBAAmB,CAAC,EAAE,CAAC;QACvC,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,MAAM,CACtC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,cAAc,KAAK,QAAQ,IAAI,CAAC,CAAC,OAAO,KAAK,OAAO,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,CAC/E,CAAC;QACF,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,KAAK,CAAC,IAAI,CAAC;gBACT,IAAI,EAAE,KAAK,CAAC,UAAU;gBACtB,IAAI,EAAE,iBAAiB;gBACvB,WAAW,EAAE,GAAG,QAAQ,YAAY,OAAO,IAAI,GAAG,eAAe,KAAK,CAAC,eAAe,iBAAiB,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG;gBACrI,IAAI,EAAE;oBACJ,OAAO,EAAE,KAAK,CAAC,EAAE;oBACjB,cAAc,EAAE,KAAK,CAAC,cAAc;oBACpC,eAAe,EAAE,KAAK,CAAC,eAAe;oBACtC,UAAU,EAAE,KAAK,CAAC,UAAU;oBAC5B,UAAU,EAAE,KAAK,CAAC,UAAU;oBAC5B,IAAI,EAAE,KAAK,CAAC,IAAI;iBACjB;aACF,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,6BAA6B;IAC7B,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;IAEtC,OAAO;QACL,OAAO;QACP,GAAG;QACH,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE;QACxC,YAAY,EAAE,MAAM,EAAE,KAAK;QAC3B,iBAAiB,EAAE,MAAM,EAAE,UAAU,IAAI,CAAC;QAC1C,KAAK;KACN,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAChC,KAAiB,EACjB,SAAiB,EACjB,OAAe,EACf,GAAW;IAEX,MAAM,UAAU,GAAG,mBAAmB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IACzD,MAAM,aAAa,GAAG,gBAAgB,CAAC,UAAU,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;IACjE,MAAM,KAAK,GAAgB,EAAE,CAAC;IAE9B,sDAAsD;IACtD,MAAM,MAAM,GAAG,kBAAkB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,MAAM,CACxD,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,OAAO,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,CAC9C,CAAC;IAEF,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,mDAAmD;QACnD,MAAM,WAAW,GAAG,iBAAiB,CAAC,KAAK,EAAE,KAAK,CAAC,cAAc,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;QACjF,mDAAmD;QACnD,KAAK,MAAM,IAAI,IAAI,WAAW,CAAC,KAAK,EAAE,CAAC;YACrC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC/G,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnB,CAAC;QACH,CAAC;QAED,qBAAqB;QACrB,KAAK,CAAC,IAAI,CAAC;YACT,IAAI,EAAE,KAAK,CAAC,UAAU,GAAG,CAAC,EAAE,4BAA4B;YACxD,IAAI,EAAE,iBAAiB;YACvB,WAAW,EAAE,cAAc,KAAK,CAAC,cAAc,yBAAyB,SAAS,iBAAiB,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,iBAAiB,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG;YAC5K,IAAI,EAAE;gBACJ,OAAO,EAAE,KAAK,CAAC,EAAE;gBACjB,cAAc,EAAE,KAAK,CAAC,cAAc;gBACpC,SAAS;gBACT,UAAU,EAAE,KAAK,CAAC,UAAU;gBAC5B,UAAU,EAAE,KAAK,CAAC,UAAU;aAC7B;SACF,CAAC,CAAC;IACL,CAAC;IAED,2BAA2B;IAC3B,IAAI,aAAa,EAAE,CAAC;QAClB,KAAK,CAAC,IAAI,CAAC;YACT,IAAI,EAAE,aAAa,CAAC,cAAc;YAClC,IAAI,EAAE,wBAAwB;YAC9B,WAAW,EAAE,WAAW,SAAS,aAAa,OAAO,IAAI,GAAG,MAAM,aAAa,CAAC,KAAK,iBAAiB,aAAa,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,aAAa,CAAC,cAAc,CAAC,MAAM,WAAW;YAC5L,IAAI,EAAE;gBACJ,SAAS;gBACT,OAAO,EAAE,aAAa,CAAC,OAAO;gBAC9B,GAAG,EAAE,aAAa,CAAC,GAAG;gBACtB,KAAK,EAAE,aAAa,CAAC,KAAK;gBAC1B,UAAU,EAAE,aAAa,CAAC,UAAU;gBACpC,cAAc,EAAE,aAAa,CAAC,cAAc;gBAC5C,UAAU,EAAE,aAAa,CAAC,UAAU;aACrC;SACF,CAAC,CAAC;IACL,CAAC;IAED,uBAAuB;IACvB,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;IAEtC,OAAO;QACL,OAAO;QACP,GAAG;QACH,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE;QAC1C,YAAY,EAAE,aAAa,EAAE,KAAK;QAClC,iBAAiB,EAAE,aAAa,EAAE,UAAU,IAAI,CAAC;QACjD,KAAK;KACN,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAC1B,KAAiB,EACjB,OAAe;IAEf,MAAM,MAAM,GAAkB,EAAE,CAAC;IAEjC,8BAA8B;IAC9B,MAAM,SAAS,GAAI,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAE/C,EAAE,eAAe,IAAI,EAAE,CAAC;IAE1B,KAAK,MAAM,CAAC,QAAQ,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;QACxD,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC;QACjE,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QACvE,CAAC;IACH,CAAC;IAED,4BAA4B;IAC5B,IAAI,KAAK,CAAC,OAAO,CAAC,mBAAmB,CAAC,EAAE,CAAC;QACvC,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,mBAAmB,CAErD,CAAC;QACF,KAAK,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,gBAAgB,CAAC,EAAE,CAAC;YAC9E,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC;YAClE,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;gBAC7B,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;YACzE,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,0BAA0B;AAE1B;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAkB;IAClD,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,QAAQ;QAChD,CAAC,CAAC,UAAU,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE;QAC7B,CAAC,CAAC,WAAW,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;IAEjC,KAAK,CAAC,IAAI,CAAC,iBAAiB,WAAW,EAAE,CAAC,CAAC;IAC3C,KAAK,CAAC,IAAI,CAAC,cAAc,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IAC1C,KAAK,CAAC,IAAI,CAAC,UAAU,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;IAClC,KAAK,CAAC,IAAI,CAAC,cAAc,KAAK,CAAC,YAAY,IAAI,MAAM,iBAAiB,KAAK,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAC7G,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAEvB,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;QAC/B,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpC,KAAK,CAAC,IAAI,CAAC,aAAa,IAAI,CAAC,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;IACpE,CAAC;IAED,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7B,KAAK,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;IAC9C,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,SAAS,WAAW,CAAC,IAAuB;IAC1C,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,cAAc,CAAC,CAAC,OAAO,OAAO,CAAC;QACpC,KAAK,WAAW,CAAC,CAAC,OAAO,MAAM,CAAC;QAChC,KAAK,QAAQ,CAAC,CAAC,OAAO,QAAQ,CAAC;QAC/B,KAAK,eAAe,CAAC,CAAC,OAAO,QAAQ,CAAC;QACtC,KAAK,iBAAiB,CAAC,CAAC,OAAO,QAAQ,CAAC;QACxC,KAAK,iBAAiB,CAAC,CAAC,OAAO,QAAQ,CAAC;QACxC,KAAK,wBAAwB,CAAC,CAAC,OAAO,SAAS,CAAC;QAChD,KAAK,SAAS,CAAC,CAAC,OAAO,OAAO,CAAC;QAC/B,KAAK,YAAY,CAAC,CAAC,OAAO,OAAO,CAAC;QAClC,KAAK,QAAQ,CAAC,CAAC,OAAO,QAAQ,CAAC;QAC/B,OAAO,CAAC,CAAC,OAAO,KAAK,CAAC;IACxB,CAAC;AACH,CAAC;AAED,mBAAmB;AAEnB,SAAS,kBAAkB,CACzB,KAAiB,EACjB,OAAe,EACf,GAAW;IAEX,OAAO,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE;QACrC,uCAAuC;QACvC,IAAI,KAAK,CAAC,OAAO,KAAK,OAAO;YAAE,OAAO,IAAI,CAAC;QAC3C,IAAI,KAAK,CAAC,SAAS,EAAE,QAAQ,CAAC,OAAO,CAAC;YAAE,OAAO,IAAI,CAAC;QACpD,sCAAsC;QACtC,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,KAAK,OAAO;YAAE,OAAO,IAAI,CAAC;QACpD,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,KAAK,OAAO;YAAE,OAAO,IAAI,CAAC;QACtD,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,KAAK,OAAO;YAAE,OAAO,IAAI,CAAC;QACpD,OAAO,KAAK,CAAC;IACf,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=belief-provenance.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"belief-provenance.test.d.ts","sourceRoot":"","sources":["../src/belief-provenance.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,139 @@
1
+ import { describe, it, expect } from 'vitest';
2
+ import { Engine } from '@ai-rpg-engine/core';
3
+ import { traversalCore, combatCore, createCognitionCore, createPerceptionFilter, createEnvironmentCore, createFactionCognition, createRumorPropagation, createBeliefProvenance, traceEntityBelief, traceFactionBelief, traceSubject, formatBeliefTrace, } from './index.js';
4
+ const manifest = {
5
+ id: 'provenance-test', title: '', version: '0.1.0',
6
+ engineVersion: '0.1.0', ruleset: 'test', modules: [], contentPacks: [],
7
+ };
8
+ const zones = [
9
+ { id: 'hall', roomId: 'r1', name: 'Hall', tags: [], neighbors: ['chamber'], light: 5 },
10
+ { id: 'chamber', roomId: 'r1', name: 'Chamber', tags: [], neighbors: ['hall'], light: 3 },
11
+ ];
12
+ const player = {
13
+ id: 'player', blueprintId: 'p', type: 'player', name: 'Player',
14
+ tags: ['player'], stats: { vigor: 5, instinct: 6 }, resources: { hp: 20, stamina: 8 },
15
+ statuses: [], zoneId: 'hall',
16
+ };
17
+ const guard = {
18
+ id: 'guard', blueprintId: 'g', type: 'enemy', name: 'Guard',
19
+ tags: ['enemy'], stats: { vigor: 4, instinct: 5 }, resources: { hp: 15, stamina: 4 },
20
+ statuses: [], zoneId: 'chamber',
21
+ ai: { profileId: 'aggressive', goals: [], fears: [], alertLevel: 0, knowledge: {} },
22
+ };
23
+ function createTestEngine() {
24
+ const engine = new Engine({
25
+ manifest,
26
+ seed: 42,
27
+ modules: [
28
+ traversalCore,
29
+ combatCore,
30
+ createCognitionCore(),
31
+ createPerceptionFilter(),
32
+ createEnvironmentCore(),
33
+ createFactionCognition({
34
+ factions: [{ factionId: 'patrol', entityIds: ['guard'], cohesion: 0.9 }],
35
+ }),
36
+ createRumorPropagation({ propagationDelay: 1 }),
37
+ createBeliefProvenance(),
38
+ ],
39
+ });
40
+ for (const zone of zones)
41
+ engine.store.addZone(zone);
42
+ engine.store.addEntity({ ...player });
43
+ engine.store.addEntity({ ...guard });
44
+ engine.store.state.playerId = 'player';
45
+ engine.store.state.locationId = 'hall';
46
+ return engine;
47
+ }
48
+ describe('Belief Provenance', () => {
49
+ it('traces direct perception belief', () => {
50
+ const engine = createTestEngine();
51
+ // Player enters guard's zone → guard perceives player
52
+ engine.submitAction('move', { targetIds: ['chamber'] });
53
+ const trace = traceEntityBelief(engine.world, 'guard', 'player', 'present');
54
+ expect(trace.holder).toEqual({ type: 'entity', id: 'guard' });
55
+ expect(trace.subject).toBe('player');
56
+ expect(trace.key).toBe('present');
57
+ expect(trace.currentValue).toBe(true);
58
+ expect(trace.chain.length).toBeGreaterThan(0);
59
+ // Should have source-event and perceived steps
60
+ const types = trace.chain.map((s) => s.type);
61
+ expect(types).toContain('source-event');
62
+ expect(types).toContain('belief-formed');
63
+ });
64
+ it('traces combat belief through perception', () => {
65
+ const engine = createTestEngine();
66
+ engine.store.state.entities['player'].zoneId = 'chamber';
67
+ engine.store.state.locationId = 'chamber';
68
+ engine.submitAction('attack', { targetIds: ['guard'] });
69
+ const trace = traceEntityBelief(engine.world, 'guard', 'player', 'hostile');
70
+ expect(trace.currentValue).toBe(true);
71
+ expect(trace.currentConfidence).toBeGreaterThan(0);
72
+ expect(trace.chain.some((s) => s.type === 'source-event')).toBe(true);
73
+ expect(trace.chain.some((s) => s.type === 'belief-formed')).toBe(true);
74
+ });
75
+ it('traces faction belief through rumor chain', () => {
76
+ const engine = createTestEngine();
77
+ engine.store.state.entities['player'].zoneId = 'chamber';
78
+ engine.store.state.locationId = 'chamber';
79
+ // Attack guard → guard gets hostile belief → rumor scheduled
80
+ engine.submitAction('attack', { targetIds: ['guard'] });
81
+ // Advance ticks to deliver rumor
82
+ engine.submitAction('faction-tick');
83
+ engine.submitAction('faction-tick');
84
+ const trace = traceFactionBelief(engine.world, 'patrol', 'player', 'hostile');
85
+ expect(trace.holder).toEqual({ type: 'faction', id: 'patrol' });
86
+ expect(trace.currentValue).toBe(true);
87
+ expect(trace.currentConfidence).toBeGreaterThan(0);
88
+ const types = trace.chain.map((s) => s.type);
89
+ expect(types).toContain('rumor-scheduled');
90
+ expect(types).toContain('rumor-delivered');
91
+ expect(types).toContain('faction-belief-updated');
92
+ });
93
+ it('traceSubject finds all beliefs about a subject', () => {
94
+ const engine = createTestEngine();
95
+ engine.store.state.entities['player'].zoneId = 'chamber';
96
+ engine.store.state.locationId = 'chamber';
97
+ engine.submitAction('attack', { targetIds: ['guard'] });
98
+ engine.submitAction('faction-tick');
99
+ engine.submitAction('faction-tick');
100
+ const traces = traceSubject(engine.world, 'player');
101
+ expect(traces.length).toBeGreaterThan(0);
102
+ // Should have both entity and faction traces
103
+ const entityTraces = traces.filter((t) => t.holder.type === 'entity');
104
+ const factionTraces = traces.filter((t) => t.holder.type === 'faction');
105
+ expect(entityTraces.length).toBeGreaterThan(0);
106
+ expect(factionTraces.length).toBeGreaterThan(0);
107
+ });
108
+ it('formatBeliefTrace produces readable output', () => {
109
+ const engine = createTestEngine();
110
+ engine.store.state.entities['player'].zoneId = 'chamber';
111
+ engine.store.state.locationId = 'chamber';
112
+ engine.submitAction('attack', { targetIds: ['guard'] });
113
+ const trace = traceEntityBelief(engine.world, 'guard', 'player', 'hostile');
114
+ const formatted = formatBeliefTrace(trace);
115
+ expect(formatted).toContain('Belief Trace: Entity guard');
116
+ expect(formatted).toContain('Subject: player');
117
+ expect(formatted).toContain('Key: hostile');
118
+ expect(formatted).toContain('Chain:');
119
+ expect(formatted).toContain('EVENT');
120
+ });
121
+ it('handles missing belief gracefully', () => {
122
+ const engine = createTestEngine();
123
+ const trace = traceEntityBelief(engine.world, 'guard', 'nonexistent', 'unknown');
124
+ expect(trace.currentValue).toBeUndefined();
125
+ expect(trace.currentConfidence).toBe(0);
126
+ expect(trace.chain.length).toBe(0);
127
+ });
128
+ it('chain is sorted chronologically', () => {
129
+ const engine = createTestEngine();
130
+ engine.store.state.entities['player'].zoneId = 'chamber';
131
+ engine.store.state.locationId = 'chamber';
132
+ engine.submitAction('attack', { targetIds: ['guard'] });
133
+ const trace = traceEntityBelief(engine.world, 'guard', 'player', 'hostile');
134
+ for (let i = 1; i < trace.chain.length; i++) {
135
+ expect(trace.chain[i].tick).toBeGreaterThanOrEqual(trace.chain[i - 1].tick);
136
+ }
137
+ });
138
+ });
139
+ //# sourceMappingURL=belief-provenance.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"belief-provenance.test.js","sourceRoot":"","sources":["../src/belief-provenance.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,89 @@
1
+ import type { EngineModule, EntityState, WorldState, ScalarValue } from '@ai-rpg-engine/core';
2
+ export type Belief = {
3
+ subject: string;
4
+ key: string;
5
+ value: ScalarValue;
6
+ confidence: number;
7
+ source: string;
8
+ tick: number;
9
+ };
10
+ export type Memory = {
11
+ id: string;
12
+ type: string;
13
+ tick: number;
14
+ entityId?: string;
15
+ zoneId?: string;
16
+ data: Record<string, ScalarValue>;
17
+ };
18
+ export type BeliefDecayConfig = {
19
+ /** Base decay rate per tick (default: 0.02) */
20
+ baseRate: number;
21
+ /** Minimum confidence before belief is pruned (default: 0.05) */
22
+ pruneThreshold: number;
23
+ /** Environmental instability multiplier (default: 0.5) */
24
+ instabilityFactor: number;
25
+ };
26
+ export type CognitionState = {
27
+ beliefs: Belief[];
28
+ memories: Memory[];
29
+ currentIntent: string | null;
30
+ morale: number;
31
+ suspicion: number;
32
+ };
33
+ export type PerceptionCheck = {
34
+ /** Can the observer detect the target? */
35
+ observerId: string;
36
+ targetId: string;
37
+ /** Detection difficulty (higher = harder to detect) */
38
+ difficulty: number;
39
+ /** What stat governs perception for this check */
40
+ stat: string;
41
+ /** Environment modifiers */
42
+ modifiers: {
43
+ source: string;
44
+ value: number;
45
+ }[];
46
+ };
47
+ export type PerceptionResult = {
48
+ detected: boolean;
49
+ roll: number;
50
+ threshold: number;
51
+ observerId: string;
52
+ targetId: string;
53
+ };
54
+ export type IntentOption = {
55
+ verb: string;
56
+ targetIds?: string[];
57
+ priority: number;
58
+ reason: string;
59
+ };
60
+ export type IntentProfile = {
61
+ id: string;
62
+ /** Generate possible intents given entity state and cognition */
63
+ evaluate: (entity: EntityState, cognition: CognitionState, world: WorldState) => IntentOption[];
64
+ };
65
+ export type CognitionCoreConfig = {
66
+ profiles?: IntentProfile[];
67
+ decay?: Partial<BeliefDecayConfig>;
68
+ };
69
+ export declare function createCognitionCore(configOrProfiles?: CognitionCoreConfig | IntentProfile[]): EngineModule;
70
+ export declare function getCognition(world: WorldState, entityId: string): CognitionState;
71
+ export declare function setBelief(cognition: CognitionState, subject: string, key: string, value: ScalarValue, confidence: number, source: string, tick: number): void;
72
+ export declare function getBelief(cognition: CognitionState, subject: string, key: string): Belief | undefined;
73
+ export declare function getBeliefValue(cognition: CognitionState, subject: string, key: string): ScalarValue | undefined;
74
+ /** Does this entity believe something to be true? */
75
+ export declare function believes(cognition: CognitionState, subject: string, key: string, value?: ScalarValue): boolean;
76
+ export declare function addMemory(cognition: CognitionState, type: string, tick: number, data: Record<string, ScalarValue>, entityId?: string, zoneId?: string): void;
77
+ export declare function getMemories(cognition: CognitionState, type?: string): Memory[];
78
+ export declare function getRecentMemories(cognition: CognitionState, withinTicks: number, currentTick: number): Memory[];
79
+ export declare function checkPerception(observer: EntityState, target: EntityState, world: WorldState, perceptionStat: string, baseDifficulty: number): PerceptionResult;
80
+ export declare function selectIntent(entity: EntityState, cognition: CognitionState, world: WorldState, profile: IntentProfile): IntentOption | null;
81
+ /** Built-in aggressive profile: attack visible hostiles, flee when low morale */
82
+ export declare const aggressiveProfile: IntentProfile;
83
+ /** Built-in cautious profile: observe first, attack only when confident */
84
+ export declare const cautiousProfile: IntentProfile;
85
+ /** Reinforce a belief by resetting its tick to current (prevents decay) */
86
+ export declare function reinforceBelief(cognition: CognitionState, subject: string, key: string, tick: number, confidenceBoost?: number): boolean;
87
+ /** Process belief decay for all entities */
88
+ export declare function processBeliefDecay(world: WorldState, decayConfig: BeliefDecayConfig): void;
89
+ //# sourceMappingURL=cognition-core.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cognition-core.d.ts","sourceRoot":"","sources":["../src/cognition-core.ts"],"names":[],"mappings":"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"}